[Coco] The X9

Chuck Youse cyouse at serialtechnologies.com
Wed Jul 9 15:21:01 EDT 2008


Alright, folks, so I've been pondering the FPGA-based "Coco 4".  The
goal is to have a more modern 6809/GIME-compatible system that can run
NitrOS-9 and still provide hacking fun.

Here's what I have in mind:

1. An FPGA (Spartan 3S250 probably) containing:
	a. 6809-compatible core
	b. a memory/bus interface unit (w/ DAT/MMU),
	c. DMA controller,
	d. interrupt controller.

2. 2MB of on-board RAM;

3. External 3.3<->5V TTL transceivers for interfacing with an 8-bit bus,
somewhat Coco compatible, with the addition of DMA interface signals.
No guarantee that Coco cards that do their own address selection (i.e.,
don't use SCS* or CTS*) will work.  E clock will run at 1 or 2MHz.

4. 4-8 slots

A very basic "ROM" will reside in an FPGA block RAM; its job will be to
scan the ROMs on the peripheral cards for a console device and a boot
device and boot the system on the first set it finds.  Note that the
ROMs will have a mini-modular format like OS-9; some sort of indication
of device type and some entry points to read/write to the device.  

(The contents of the peripheral ROMs will probably be copied into some
RAM by the bus interface unit on RESET* before the CPU core is started.
This way the ROMs will not have to occupy any space in the memory map
and no special control registers will be required to map them in/out.)

Important notes:

1. No support for 6309 instructions.  These additions have been
exploited nicely for increased performance in NitrOS-9, but IMHO are
generally cumbersome and not orthogonal with respect to the rest of the
instruction set.  With a core running at 10-20MHz, there's little need
to dirty up our code with these hacks.  Also, given that I intend to do
this in 'discrete' logic [almost] and don't have the advantage of
microcode that the 6309 folks had.  More registers and instructions
means more combinational logic and thus lower speeds.  (Note that I
probably _will_ implement illegal instruction trap. Depends.)  

2. The GIME support will be restricted to MMU functions and possibly the
programmable timer.  The interrupt controller will probably be
compatible though the interrupt sources will differ.

3. I'm up in the air on integrated peripherals, particularly
keyboard/video.  I feel like that sort of stuff should be left to
peripheral cards.  I'll probably run this thing off an ACIA card +
terminal rather than integrated video/keyboard.

Any comments?  Any interest? 

C.





More information about the Coco mailing list