[Coco] CoCo 1 / CoCo 2 video mode mod

Richard Atkinson ratkinson at gmail.com
Mon Aug 28 17:23:03 EDT 2006


With all the discussion of external character generator ROMs for lowercase
characters, I had a look at the CoCo schematic and
came up with an idea for some new video modes.

In actual fact these are nothing much more than implementations of the 6847
external character ROM mode (EXT) and Semigraphics 6 mode, with different
logic connected to the A#/S and INV pins instead of connecting them directly
to D7 and D6 on the VDG data bus.

The idea is to use the same PIA pins that control GM1 and GM2 to control
selection of external character ROM mode and Semigraphics 6 mode separately,
allowing all 256 bit combinations in EXT mode and all 4 colours x 64 bit
combinations in SG6 mode, while still allowing internal graphics and
Semigraphics 4 mode to function normally. This uses logic functions for A#/S
and INV as follows:

GM2 GM1 GM0 | A#/S INV <comments>
 0   0   0  |  D7   D6  Standard internal characters / SG4 mode
 0   0   1  |   0    0  External character ROM mode
 0   1   0  |  D7  D6#  Inverse internal characters / SG4 mode
 0   1   1  |   0    1  Inverse external ROM character mode
 1   0   0  |  D7   D6  Standard internal characters / SG4 mode
 1   0   1  |   1    0  Semigraphics 6 mode
 1   1   0  |  D7  D6#  Inverse internal characters / SG4 mode
 1   1   1  |   1    1  Semigraphics 6 mode

This provides 5 distinct modes (with some duplication to make the logic
functions easier to implement) as opposed to the normal 2 modes (INT/SG4 and

The logic functions can be implemented using discrete logic, but it is
probably easier to use two 8 input multiplexers instead, in which case other
truth tables would be just as easy to implement. I couldn't think of 3 more
modes that could be usefully provided using the A#/S and INV pins so I left
it at that.

The table is partly inspired by the 6847T1 video chip, which has an INV mode
bit at GM1. In this design, GM0 (INT#/EXT) puts the computer into external
character ROM mode (No Semigraphics) when set high, GM1 inverts all
character displays (but not Semigraphics) and GM2 is used to select between
external character ROM mode and Semigraphics 6 mode when GM0 (INT#/EXT) is

External character ROM mode can be used as a bitmap mode similar to RG6,
except with green/orange colour selections instead of green/buff. Of course
there is no actual external character ROM fitted, instead the VDG receives
the character byte from the data bus. Unlike the standard CoCo setup, bits 6
and 7 can be set or cleared like any other bit, without inverting the data
or selecting SG6 mode. Depending on how the SAM is configured, the following
resolutions are possible: 256x16, 256x64, 256x96, 256x192.

The really interesting thing about this mod is that it lets you experiment
with the full capabilities of Semigraphics 6 mode, while still being mostly
compatible with standard CoCos. As far as I know the standard EXT/SG6 mode
wasn't used very much, except by lowercase character ROM kits (in which the
VDG receives data from the external character ROM rather than the RAM).


More information about the Coco mailing list