RAM Loadable Character Generator

The character generator is RAM loadable and can support
characters up to 32 scan lines high. Three character font are
stored in BIOS, and one is automatically loaded when an
alphanumeric mode is selected. The Character Map Select register
can be programmed to redefine the function of bit 3 of the
attribute byte to character-font switch. This allows the user to
select between any two character sets residing in map 2, and
effectively gives the user access to 512 characters instead of
256. Character fonts can be loaded offline, and up to eight
fonts can be loaded at any one time.

The structure of the character fonts is described in the
following figure. The character generator is in map 2 and must
be protected using the map mask function.

Map 2
+0Kb ┌───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┐
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ Font 0
+8Kb ├─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┤
├─┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─┤ Font 4
├─┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴─┤
+16Kb├───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┤
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ Font 1
├─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┤
├─┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─┤ Font 5
├─┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴─┤
+32Kb├───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┤
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ Font 2
├─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┤
├─┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─┤ Font 6
├─┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴─┤
+48Kb├───┬───┬───┬───┬───┬───┬───┬───┬───┬───┬───┤
├───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┤ Font 3
├─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┴─┬─┤
├─┼───┼───┼───┼───┼───┼───┼───┼───┼───┼───┼─┤ Font 7
+64Kb└─┴───┴───┴───┴───┴───┴───┴───┴───┴───┴───┴─┛


The following figure illustrates the structure of each
character pattern. If the CRT controller is programmed to
generate 16 row scans, the 16 bytes must be filled in for
each character in the font. The example below assumes eight
row scans per character.

Address Byte Image Data
80h 40h 20h 10h 08h 04h 02h 01h

CC*32 + 0 XXX XXX 18h
1 XXX XXX XXX XXX 3Eh
2 XXX XXX XXX XXX 66h
3 XXX XXX XXX XXX 66h
4 XXX XXX XXX XXX XXX XXX 7Eh
5 XXX XXX XXX XXX 66h
6 XXX XXX XXX XXX 66h
7 XXX XXX XXX XXX 66h

CC equals the value of the character of the character code.
For example 41h equals an ASCII "A".