P.A.C.E. Prototypes

(Last Update: 04/07/06)


NEWS - PROGRESS - T.B.D. - DOWNLOADS


News

04-Jul-2007
  • Finished adding PS/2 keyboard input to the Colecovision.
  • My lunchtime project was to port Arnim Läuger's Adventure Vision design to the NanoBoard. Took a little longer than the Colecovision, but it's now running Defender with PS/2 keyboard input. Quite impressive for what it is!
  • Started porting ZX01 (Sinclair ZX81) to the NanoBoard.
03-Jul-2007
  • As a quick diversion, I thought I'd port Arnim Läuger's Colecovision design to the NanoBoard. I took the JOP design and added the VGA generation from the Zefant design and less than an hour later was greeted by the BIOS message. Then I moved the video RAM (16K) to external SRAM, cartridge ROM to on-chip memory (16KB) and hooked up the audio to the NanoBoard DAC- allowing me to load up Q*Bert and then Donkey Kong!
  • All I need to do now is hook up the PS/2 keyboard to the controller inputs.
02-Jul-2006
  • I've re-released the four Midway 8080 Black & White Games with sound. FWIW they're now all using my VGA controller with a hybrid composite output (WIP). Download here.
27-Jun-2006
  • I've had millions of requests (OK, two) for the WDC 1793 implementation I used for the TRS-80 Models I & III. So, here it is. Caveat - it was only ever meant to be a proof-of-concept and supports sector READ commands only.
21-Jun-2006
  • Just for fun, I added sound to my version of Space Invaders (from MikeJ's site). Spent more time converting the old schematic designs to VHDL and fixing bugs in my conversion than adding the sound - which took about 10 mins! Sounds a bit funny...
  • Not a lot happening with the CoCo atm... will get back to it when time allows.
15-May-2006
  • FINALLY I've managed to re-create text-mode display using my own 6883/6847 implementations. CVBS output looks almost perfect but for syncing problems which I may have a quick look at before attempting to add the rest of the video modes to the 6883/6847. A screenshot would look exactly the same as the current one, except orange is now actually orange!
  • Hopefully the next update will include a photo of simultaneous CVBS and VGA output side-by-side.
3-May-2006
  • VGA display now outputs stable, pixel-perfect test pattern derived from CVBS line buffer.
  • Attempting to display solid block character whose colour depends on ASCII code read from video RAM (negates need for character generator for now). Result is stable display but highlights some problems in phase relationships in system timing, and some video addressing bugs. Fun fun fun....
25-Apr-2006
  • Finally got simultaneous composite and VGA output from the 6847. The VGA is stable, but the composite has some synch problem which causes tearing at the top of the screen. But that's close enough for now. One small issue remains with the line buffer, but once that's taken care of I can move on to generating the character sets within the 6847, then onto the bit-mapped video modes.
14-Apr-2006
  • TRS-80 Model I boots NEWDOS/80 and is completely functional.
13-Apr-2006
  • Not much time to spend on PACE atm, but some progress to report. I have a test-pattern displaying on a VGA monitor using derivatives of composite output timings (ie. scan-doubling). This will allow simultaneous composite & VGA output from the 6847 core.
  • Chris is also close to finishing the layout of our new prototype daughterboard, which has a much larger FPGA, more memory, compact flash, stereo sound DAC and a 15/24-bit video DAC.
  • I'm also working on a TRS-80 Model I implementation. It boots into Level II BASIC, and I'm currently working on getting it to boot from 'floppy disk' (SPI flash) like the Model III. Why? Because Roberto Bazzano has dug up an old kit computer from an Italian Magazine that is a clone (of sorts) of the Model I - minus the BASIC ROM. My plan is to implement that in an FPGA as soon as Roberto posts the relevant information.
  • Some time back I did a simple implementation of the Microbee. That fact somehow never got posted on my webpage - I need to bring the design up-to-date with the latest framework and I'll update this page.
26-Mar-2006
  • Updated picture of CoCo COLOR BASIC 1.0 running on the Nanoboard
25-Mar-2006
  • The video glitches have been fixed and it would appear that the CoCo is 100% functioning (in COLOR BASIC 1.0 (limited) text mode). It's the first time the CoCo has been 100% functional, proving that previous efforts have had system timing errors, rather than a problem with the memory map (or even the 6809).
  • I might quickly hook up the Extended Color Basic ROM to see if that runs... Update: runs fine!
  • Next step is to drive the VGA directly from the 6847 VDG - in text mode.
15-Mar-2006
  • The 6883 is generating the correct video addresses for text mode, so the display now looks correct again except for some intermittent glitches which I need to track down - I've seen them under simulation so it shouldn't be too difficult!
  • Interestingly, all of the symptoms of erroneous behaviour seem to have disappeared now that the SRAM timing is integrated with the 6883. AFAIK it's now a perfectly functioning CoCo (text mode only of course).
  • Chris is about to lay out a new PCB which will allow us to move our prototype platform to an EP2C35 with 64MB x2 SDRAM (on two buses), 2MB SRAM, 15-bit VGA colour and Compact Flash!
13-Mar-2006
  • Started on the implementation of the MC6847 VDG. It now generates VBLANK, HBLANK and the video address clock - the video address is generated and multiplexed by the SAM (MC6883). I disconnected the CPU from the dual-port video RAM and instead connected the output of the 6847/6883 - amazingly I saw the BASIC ROM message beneath some garbage (I'm not generating the correct addresses for text mode yet). Still plenty of work to do, but nice to see something half-right!
8-Mar-2006
  • The MC6883 is now providing all system timing and address mapping/decode for the Coco (except for video memory) - and it still runs (at least better than it was!)
  • Next task is to eliminate the dual-port video ram and instead generate the video from the multiplexed video address generated from the MC6883. Normally this would go hand-in-hand with the MC6847 VDU but initially I'll jury-rig the current character ROM until I get the timing and address generation right.
2-Mar-2006
  • BASIC problems persist. A mystery at this point as I can't see why there is a problem.
  • I've started implementing the MC6883 (SAM). This chip goes hand-in-hand with the MC6847 video display generator, which I'll probably start to implement in parallel.
1-Mar-2006
  • Fixed the keyboard matrix!
  • Switched back to COLOR BASIC 1.0 - I didn't realise 1.2 was for the CoCo2!
  • I can execute basic commands from the OK prompt but any attempt to enter a line number hangs the machine. ?MEM also returns a negative number. I suspect I've mapped too much RAM as the ROM routine auto-detects how much RAM is in the machine and that's confusing the BASIC line pointer vector.
28-Feb-2005
  • BASIC ROM boots to the "OK" prompt and I can type characters - just need to fix my matrix as I've transposed the rows and columns. No need for any interrupts or peripheral chips at all to get this far (except the PIA for the keyboard). Updated picture to come when I can run a simple BASIC program.
26-Feb-2005
  • Have completed the simplified video module and I can display the contents of the video RAM at address $0400 using a subset of the CoCo character set and colour scheme.
  • I've incorporated COLOR BASIC 1.2 ROM and John Kent's CPU09. The ROM runs for a bit (clears RAM and video) but goes AWOL somewhere (presumably) before it prints the start-up banner.
20-Feb-2006
  • I've started work on a CoCo 1 implementation. I've done basic research on the memory map, and will be working towards getting COLOR BASIC 1.0 booting in text mode.
16-Feb-2006
14-Feb-2006
  • Started porting John's System09 to the Nanoboard. This is to get a feel for John's 6809 core and work out if we can use it, or if we need to start on a 6809 core from scratch. Chris is still persevering with his Confluence version.
  • Chris is laying out the PACE board, but it may be put on the back-burner for the moment as we may have access to a suitable development platform that will allow us to develop more IP than the Nanoboard allows. Stay tuned.
  • Someone has done an Amiga in an FPGA - minus the 68K. Impressive!

Archives

What is the NanoBoard?

    In late 2003 I had the good fortune to be in the right place at the right time, and had the opportunity to do some development using Altium's Nexar platform as part of Altium's beta test program. Shipped with the platform is an FPGA prototyping board called the NanoBoard which comprises plug-in modules for various FPGA silicon on a PCB with SRAM, LCD, numeric keypad, PS/2 ports and a VGA connector, as well as other various I/O modules such as serial, ADC, DAC and digital I/O. The development environment also comes bundled with IP such as PS/2 & VGA controllers for the on-board modules, as well as a couple of CPU cores, including a Z80!

    It was immediately obvious, of course, that the NanoBoard was the perfect prototype platform for PACE! With on-board PS/2 controllers for input, VGA controller for output to a standard monitor, some SRAM, the Z80 core and Altera Cyclone FPGA module - I had exactly what I needed to start work on PACE without the effort & cost that goes with designing, manufacturing and debugging a prototype PCB! And with the experience we had in the beta program, I had a head-start on the firmware design as well!

Progress (updated 16/02/06)

    The ultimate aim is to develop an architecture not unlike M.A.M.E. as far as possible for firmware emulation of the classic games. Rather than mimic the actual circuitry of the original PCBs (as other projects have done), PACE will comprise a collection of CPU, input, graphics and sound subsystems that may be included within a generic project framework to provide the ability to emulate a large number of platforms without having to start from the logic-gate level each time.

    However, as MAME has shown, such a framework will inevitably evolve from earlier attempts.

    A total of 17 designs have been coded or ported to the Nanoboard, incorporating the Z80, 6502 and 6809 processor cores. Aside from basic input (PS2 keyboard) and video output (VGA and CVBS), a couple of sound chips (Pacman, AY-3-8910 & Pokey) and the TRS-80 Model III floppy disk controller (read only mode using SPI flash), have been emulated. As well as the tilemap and sprite engines, a few bit-mapped displays have also been implemented.

    We have reached the limits of the Nanoboard and the EP1C12. Work on adding a 2nd Z80 and AY-3-8910 to Frogger was started but never finished. The limiting factors are lack of non-volatile storage (FLASH) for larger ROMs and/or disk images, limited RAM and no external clock input (for PAL generation). Aside from PAL CVBS output, we've been able to prototype all we need to go ahead and design some hardware.

T.B.D. (updated 16/02/06)

    The current task is to design the PACE hardware. This hardware should be sufficient for the full emulation of all our target systems (TBA).

    The 6809 core is opcode-compatible only, so work needs to be done to produce a cycle-accurate 6809.

    Until then, feel free to try our prototypes on the Nanoboard. All feedback welcome!

Downloads

Pacman Hardware

pacman.zip

Pacman (v0.92)

Cyclone & Virtex-II

(includes sound for v1.6 NanoBoards!)

README.TXT 

Pengo (v0.90)

Virtex-II only

(includes sound)

README.TXT

Midway 8080 Black & White Hardware

invaders.zip

Space Invaders (v0.92)

(Cyclone EP1C12 with sound)

README.TXT

invadpt2.zip

Space Invaders Part II (v0.92)

(Cyclone EP1C12 with sound)

README.TXT

lrescue.zip

Lunar Rescue (v0.92)

(Cyclone PE1C12 with sound)

README.TXT

galxwars.zip

  Galaxy Wars (v0.92)

(Cyclone EP1C12 with sound)

README.TXT

Galaxian / Frogger Hardware

galaxian

Galaxian (v0.91)
README.TXT

frogger

FROGGER (v0.90)
README.TXT

ZigZag (v0.91)

Virtex-II only

(includes  sound)

README.TXT

JumpBug (WIP)

Virtex-II only

(includes  sound)

README.TXT

TRS-80 (Model I/III/4) Hardware

 

 

TRS-80 Model I

(Click to enlarge)

README.TXT

 

TRS-80 Model III (v0.2)

(With Sound! Includes NEWDOS/80 floppy disk images)

Cyclone (disk) & Virtex-II (cassette only)
README.TXT

Other Z80-based Hardware

Bally Astrocade (v0.10)

(very preliminary)

README.TXT

 

Arnim Läuger's Colecovision

(click to enlarge)

README.TXT

   

6502-based Hardware

Centipede (On Hold)

(includes Pokey sound)

README.TXT

Apple II (v0.10)

(very preliminary)

README.TXT

VIC-20 (v0.10)

(very preliminary)

README.TXT

(vidcap of Nanoboard output)

 

C64 (v0.10)

(very preliminary)

README.TXT

6809-based Hardware

John Kent's System09

(preliminary)

TRS-80 Color Computer "Coco" 1

(Click to enlarge)

WIP

 

 

Other Miscellaneous Hardware

Arnim Läuger's Adventure Vision

(click picture to enlarge)

README.TXT

     

 

How To Play

 

Contact: msmcdoug@optushome.com.au