TheCoCo should
be relatively easy, since it was entirely implemented in TTL
chips and off-the-shelf LSI.
I'm fortunate enough to have an original technical manual for
this machine.
TheCoCo3 should be rather harder, since it used a custom chip to implemented a lot of logic including the video controller and memory management. In return it added new features such as programmable palette and enhanced graphics modes with 32, 40, 64, and 80 column text. The 80-column text allowed it to do some serious applications, although this would be getting hard to read with the TVs of the day. It would improve clarity to use the RGB inputs of modern TVs.
The 6809E CPU is fairly rare these days. It was quite a complex CPU for an 8-bitter, resulting in a lot of internal circuitry. With being manufactured in NMOS technology, it got quite warm as well. It was later available in CMOS, and you might prefer to use this.
The key components in this machine are the 6847 VDG and the 6883 SAM. These parts work very closely. The entire timing of the machine is derived from the master oscillator running at 14.318180 MHz. The SAM uses this to generate the DRAM control signals and the VDG clock.
Although the SAM chip is fairly large (at 40 pins), its actions are quite simple. It multiplexes has a refresh row counter and this and the address lines A0...15 onto multiplexed address lines MA0...7 for dynamic RAM. It also generates !RAS !CAS and the video clock for a 6847. It replicates the 6847 address sequencer so that the 6847 does not need to drive address lines!
Memory Map
Range | Size | CoCo | Dragon | |||
32K Mode | 64K Mode | |||||
0000- 1000-1FFF |
8K | RAM | RAM | |||
2000 3000 |
8K | |||||
4000 5000 |
8K | |||||
6000 7000-7FFF |
8K | |||||
8000 9000-9FFF |
8K | Extended Color BASIC ROM |
BASIC ROM in 32K mode |
|||
A000-AFFF B000-BFFF |
8K | Color BASIC ROM | ||||
C000-CFFF D000-DFFF |
8K | Cartridge expansion |
DOS ROM |
Cumana DOS ROM only |
Cartridge expansion |
Copy of BASIC ROM 2 exists in RAM here |
E000-FEFF | 8K - 256 |
|||||
FF00-FF03 | 4 | 6821 PIA 0 | ||||
FF04-FF07 | 4 | 6551 ACIA | ||||
FF20-FF23 | 4 | 6821 PIA 1 | ||||
FF40-FF43 | 4 | WD2797 FDC | ||||
FF48 | 1 | Drive-select latch | ||||
FFC0-FFDF | 32 | 6883 SAM | ||||
FFF0-FFFF | 16 | 6809 interrupt vectors mapped from BFF0-BFFF by SAM |
Bits:0,1 - Read as a 2-bit number to select the required drive (0-3). 2 - Enables the drive selection & turns the disk motors on. 3 - Double/Single density select (1=single). 4 - Enable write precompensation. 5 - Enable NMI interrupt generation. 6-7 unused.
Byte magazine article about the Color Computer