# Motorola 6847

The MC6847 is a Video Display Generator (VDG) first introduced by Motorola in 1978 and used in the TRS-80 Color Computer, Dragon 32/64, Laser 200, TRS-80 MC-10/Matra Alice, NEC PC-6000 series, Acorn Atom, Gakken Compact Vision TV Boy and the APF Imagination Machine, among others. It is a relatively simple display generator intended for NTSC television output: capable of displaying alphanumeric text, semigraphics, and raster graphics contained within a roughly square display matrix 256 pixels wide by 192 lines high.
The ROM includes a 5 x 7 pixel font, compatible with 6-bit ASCII. Effects such as inverse video or colored text (green on dark green; orange on dark orange) are possible.
The hardware palette is composed of twelve colors: black, green, yellow, blue, red, buff (almost-but-not-quite white), cyan, magenta, and orange (two extra colors, dark green and dark orange, are the ink colours for all alphanumeric text mode characters, and a light orange color is available as an alternative to green as the background color). According to the MC6847 datasheet, the colors are formed by the combination of three signals: $Y$ with 6 possible levels, $R-Y$ (or $\phi A$ with 3 possible levels) and $B-Y$ (or $\phi B$ with 3 possible levels), based on the YPbPr colorspace, and then converted for output into a NTSC analog signal.
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.

## Variants

According to the datasheets, there are non-interlaced (6847) and interlaced (6847Y) variants, plus the 6847T1 (non-interlaced only). The chips can be found with ceramic (L suffix), plastic (P suffix) or CERDIP (S suffix) packages.

## Die pictures

* MC6847 die
* MC6847 Die metal layer
* MC6847 Die base layer

## Signal levels and color palette

The chip outputs a NTSC-compatible progressive scan signal composed of one field of 262 lines 60 times per second.
According to the MC6847 datasheet, colors are formed by the combination of three signals: $Y$ luminance and $\phi A$ and $\phi B$ chroma, according to the YPbPr color space. These signals can drive a TV directly, or be used with a NTSC modulator (Motorola MC1372) for RF output.
$Y$ may assume one of these voltages: "Black" = 0.72V, "White Low" = 0.65V, "White Medium" = 0.54V and "White High" = 0.42V.
$\phi A$ (or $R-Y$) and $\phi B$ (or $B-Y$) may be: "Output Low" = 1.0V, "R" = 1.5V and "Input High" = 2.0V.
The following table shows the signal values used:
| $Y$ | $\phi A$ | $\phi B$ | Approximate Color |
| 0.54 | 1.0 | 1.0 | Green |
| 0.42 | 1.0 | 1.5 | Yellow |
| 0.65 | 2.0 | 1.5 | Blue |
| 0.65 | 1.5 | 2.0 | Red |
| 0.42 | 1.5 | 1.5 | Buff |
| 0.54 | 1.0 | 1.5 | Cyan |
| 0.54 | 2.0 | 2.0 | Magenta |
| 0.54 | 1.0 | 2.0 | Orange |
| 0.72 | 1.5 | 1.5 | Black |
| 0.72 | 1.0 | 1.0 | Dark Green |
| 0.72 | 1.0 | 2.0 | Dark Orange |
Notes:
1) The colors shown are adjusted for maximum brightness and only approximate (different color spaces are used on TV - BT601 and web pages - sRGB).
2) At least on the Color Computer 1 and 2, the alternate palette of text modes (actually the text portion of semigraphic modes) was dark pink (or dark red) on light pink, of shades not listed here (and no dark orange), whereas the Color Computer 3, with a different chip, made it dark orange on orange.
The first eight colors of this table were numbered 0 to 7 in the upper bits of the character set (when bit 7 was set, bits 4-6 represented the color number), but ColorBASIC's numbering was 1 higher than that in text mode, as it used 0 for black.

## Video modes

Possible MC6847 video display modes:
| Video Mode | Video Mode | Resolution | Colors | Bytes |
| Mode 1: Alpha Modes | Internal Alphanumerics | 32 x 16 (8x12 pixel characters) | 2 (GDG or ODO) | 512 |
| Mode 1: Alpha Modes | Internal Alphanumerics Inverted | 32 x 16 (8x12 pixel characters) | 2 (GDG or ODO) | 512 |
| Mode 1: Alpha Modes | External Alphanumerics | 32 x 16 (8x12 pixel characters) | 2 (GDG or ODO) | 512 |
| Mode 1: Alpha Modes | External Alphanumerics Inverted | 32 x 16 (8x12 pixel characters) | 2 (GDG or ODO) | 512 |
| Mode 1: Alpha Modes | Semigraphics 4 (SG4) | 64 × 32 | 9 (BGYBRWCMO) | 512 |
| Mode 1: Alpha Modes | Semigraphics 6 (SG6) | 64 × 48 | 9 (BGYBRWCMO) | 512 |
| Mode 2: Graphics Modes | Color Graphics One (CG1) | 64 × 64 | 4 (GYBR or WCMO) | 1024 |
| Mode 2: Graphics Modes | Resolution Graphics One (RG1) | 128 × 64 | 2 (GW or BW) | 1024 |
| Mode 2: Graphics Modes | Color Graphics Two (CG2) | 128 × 64 | 4 (GYBR or WCMO) | 2048 |
| Mode 2: Graphics Modes | Resolution Graphics Two (RG2) | 128 × 96 | 2 (GW or BW) | 1536 |
| Mode 2: Graphics Modes | Color Graphics Three (CG3) | 128 × 96 | 4 (GYBR or WCMO) | 3072 |
| Mode 2: Graphics Modes | Resolution Graphics Three (RG3) | 128 × 192 | 2 (GW or BW) | 3072 |
| Mode 2: Graphics Modes | Color Graphics Six (CG6) | 128 × 192 | 4 (GYBR or WCMO) | 6144 |
| Mode 2: Graphics Modes | Resolution Graphics Six (RG6) | 256 × 192 | 2 (GW or BW) | 6144 |

## Character generator

The built-in character generator ROM offers 64 ASCII characters with 5x7 pixels. Characters can be green or orange, on dark green or orange background, with a possible "invert" attribute (dark character on a bright background).
MC6847 Character Generator Alphanumeric Characters :
| | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | A | B | C | D | E | F |
| 0x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 1x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ↑ | ← |
| 2x | | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 3x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
| 4x | @ | A | B | C | D | E | F | G | H | I | J | K | L | M | N | O |
| 5x | P | Q | R | S | T | U | V | W | X | Y | Z | [ | \ | ] | ↑ | ← |
| 6x | | ! | " | # | $ | % | & | ' | ( | ) | * | + | , | - | . | / |
| 7x | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | : | ; | < | = | > | ? |
The internal character rom is organized as a matrix of 64x35 (2240 bits) where each column consists of the 35 bytes (5x7) needed to form a character. The character bits are stored sequentially in column order, that is 7 bits of column 0 followed by the 7 bits of column 1, and so on.
The following picture shows the bits overlapped on top of the rom array, with the ones of the first character (@) in different colours to highlight the organization.
Motorola offered its customers the possibility of ordering the MC6847 with the internal ROM masked with a custom pattern. The customer would provide the ROM pattern on MCM2708 or MCM2716 PROMS or on a MDOS formatted 8-inch single sided, single density floppy disk. Motorola would then send 10 verification units for the customer to verify the ROM pattern.
The MC6847 also supports an external character ROM. The Dragon 200-E, a spanish variant of the Dragon 64 is a great example of this. The machine had a daughterboard that fits on the MC6847 socket and had the VDG plus a 2532 EPROM and some decoding logic.
The updated version of the chip (MC6847T1) had a 96 character ROM that included lowercase characters.
Here you can see the default MC6847 and MC6847T1 default character sets, the Dragon 200-E one and the Dragon 200-E daughterboard.
* Character sets and external ROM
* Standard character set
* MC6847T1 Standard character set
* Dragon 200-E character set
* Dragon 200-E daughterboard