From The Dragon Archive
Revision as of 10:58, 17 July 2021 by Robcfg (talk | contribs) (Added MC6847 die picture)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)

The MC6847 is a video display generator (VDG) first introduced by Motorola and used in the Dragon 32, Dragon 64, Dragon 200 and Dragon Alpha. It is a relatively simple display generator compared to other display chips of the time. It is capable of displaying text and graphics contained within a roughly square display matrix 256 pixels wide by 192 lines high. It is capable of displaying 9 colours: black, green, yellow, blue, red, buff (almost-but-not-quite white), cyan, magenta, and orange. The low display resolution is a necessity of using television sets as display monitors. Making the display wider risked cutting off characters due to overscan. Compressing more dots into the display window would easily exceed the resolution of the television and be useless.


Mc6847metal small.jpg

Video Modes

Video Mode Resolution Colours Bytes
Alphanumeric Internal 32 x 16 1 + Black 512
Alphanumeric External 32 x 16 1 + Black 512
Semigraphics 4 64 x 32 8 + Black 512
Semigraphics 6 64 x 48 4 + Black 512
Colour Graphics 1 64 x 64 4 1024
Resolution Graphics 1 128 x 64 1 + Black 1024
Colour Graphics 2 128 x 64 4 2048
Resolution Graphics 2 128 x 96 1 + Black 1536
Colour Graphics 3 128 x 96 4 3072
Resolution Graphics 3 128 x 192 1 + Black 3072
Colour Graphics 6 128 x 192 4 6144
Resolution Graphics 6 256 x 192 1 + Black 6144

Alphanumeric/Semigraphics Display

In alphanumeric mode, each character is a 5 dot wide by 7 dot high character in a box 8 dots wide and 12 lines high. This display mode consumes 512 bytes of memory and is a 32 character wide screen with 16 lines. The internal ROM character generator only holds 64 characters, so no lower case characters are provided. Lower case characters were rendered as upper case characters with inverted colour.

Semigraphics is a hybrid display mode where alphanumerics and chunky block graphics can be mixed together on the same screen. If the 8th bit of the character is set, it is a semigraphics character. If cleared, it is an alphanumeric. When the 8th bit is set, the next three bits determine the colour and last 4 bits determine which "quadrant" of the character box is either the selected colour or black. This is the only mode where it is possible (without sneaky tricks) to display all 9 colours on the screen simultaneously. If used to only display semigraphics, the screen becomes a 64x32 9 colour graphics mode.

The alphanumeric display has two colour sets. The one used by default has black characters on a green background. The alternate has black characters on an orange background. The colour set selection does not affect semigraphics characters. The border in this mode is always black.

The 6847 is capable of a Semigraphics 6 display mode, where two bits select a colour and 6 bits determine which 1/6th of the character box is lit. In this mode only 4 colours are possible but the colour set bit of the VDG can select two different groups of the 4 colours.

Additional Semigraphics Modes

By setting the SAM such that it believes it is displaying a full graphics mode, but leaving the VDG in Alphanumeric/Semigraphics 4 mode, it is possible to subdivide the character box into smaller pieces. This creates the "virtual" modes Semigraphics 8, 12, and 24[4]. In these modes it was possible to mix bits and pieces of different text characters as well as Semigraphics 4 characters. These modes were an interesting curiosity but not widely used, as the Semigraphics 24-screen consumed 6144 bytes of memory.

Graphics Display

There were several full graphics display modes, which were divided into two categories: "resolution" graphics and "colour" graphics. In resolution modes, each pixel is addressable as either on or off. There are two colour sets available, the first was black dots on a green background and green border, the second, more commonly used one has white dots on a black background with a white border. In colour modes, each pixel was two bits, selecting one of four colours. Again the colour set input to the VDG determined which colours were used. The first colour set has a green border, and the colours green, yellow, red, and blue were available. The second colour set has a white border and the colours white, cyan, magenta and orange were available. Resolution graphics have 8 pixels per byte and are available in 128x64, 128x96, 128x192, and 256x192 densities. Colour graphics have 4 pixels per byte and are available in 64x64, 128x64, 128x96, and 128x192 densities. The maximum size of a graphics screen is 6144 bytes

NTSC Artifact Colours

The 256x192 two colour graphics mode uses four colours due to a quirk in the NTSC television system. It is not possible to reliably display 256 dots across the screen due to the limitations of the NTSC signal and the phase relationship between the VDG clock and colour burst frequency. In the first colour set, where green and black dots are available, alternating columns of green and black are not distinct and appear as a muddy green colour. However, when one switches to the white and black colour set, instead of a muddy grey as expected, the result is either red or blue. Reversing the order of the alternating dots will give the opposite colour. In effect this mode becomes a 128x192 4 colour graphics mode where black, red, blue, and white are available. Most games ported from the Tandy CoCo used this mode as the colours available are more useful than the ones provided in the hardware 4 colour modes, however these did not always look that good on a UK PAL TV set.