What is the format of the video character ROM used in the Apple 1?
1 Answer
Original ROM
The character ROM is a Signetics 2513 "64×8×5 Character Generator," a 2560-bit static ROM. (Data sheet alternate source.)
Address lines A1-A3 (Signetics started the numbering at 1) select one of the eight rows of five pixels for a character (the top row is usually all-zero for a 5×7 matrix) and address lines A4-A9 indicate the character code.
The standard version (2513N/CM2140) had ASCII sticks 4-5 (upper-case characters) at codes 0-31 and ASCII sticks 2-3 (punctuation and numbers) at codes 32-63. There was also a katakana version (2513N/CM4800) available, and custom versions (assigned their own CMnnnn code by Signetics) could be made. The glyphs in sequence are thus:
@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_ !"#$%&'()*+,-./0123456789:;<=>?
タチツテトナニヌネノハヒフヘホマミムメモヤユヨラリルレロワン゙゚ 。「」、・ヲァィゥェォャュョッーアイウエオカキクケコサシスセソ
ROM Dumps
Dumps of this ROM are frequently in a different format where character data is stored in an array of 128 8-byte blocks designed for lookup by ASCII code:
$00-$1F not data from ROM; all clear except for $01
$20-$3F locs $20-$3F from ROM: ASCII punct. and digits
$40-$5F locs $00-$1F from ROM: @ABC…
$60-$7F duplicate of $40-$5F, or lower-case not from ROM
Each block is a sequence of eight bytes, each representing a row. The bottom row, instead of the top, is the empty one and bits 1 through 6 contain the six bits from the ROM in reverse order, with bits 0 and 7 always 0.
The Call-A.P.P.L.E. dump, apple1.vid
, available in the
Apple1_bios.zip
file downloadable from this page
duplicates the upper-case sticks ($00-$1F in the original ROM) in the
$60-$7F locations in the dump file, which will duplicate the Apple I
behaviour of outputting lower-case ASCII codes as upper-case letters
(and translating the punctuation in the lower-case sticks, backtick,
{|}~
and DEL, to the punctuation from the upper-case sticks, @
and
[\]^_
).
The Pom1 emulator's dump, src/rom/charmap.rom
, has replaced
the standard upper-case and stick 4-5 punctuation glyphs in $60-$7F
with lower-case and stick 6-7 punctuation.