Memory Protection: Location 106 (RAMTOP) tells the Atari OS where usable RAM ends.
Subtracting 4 "pages" (256 bytes each) gives you exactly 1024 bytes for a full
character set.
The Pointer: Memory location 756 (CHBAS) is the high-byte pointer for the font.
By changing this to your new RAM page, the computer stops looking at the ROM and
starts looking at your custom data.
Character Mapping: Each character consists of 8 bytes (a grid).
Proof of concept for Atari 8-bit
This program will allow to change characters just like TI-99 and C64
In the example below, character 33 ('A') is redefined using the DATA statement.
Test Code:
10 REM CHAR GRAPHIC
20 TOP = PEEK(106) - 4
30 POKE 106, TOP
40 GRAPHICS 0
50 NF = TOP * 256
60 FOR I = 0 TO 1023
70 POKE NF + I, PEEK(57344 + I)
80 NEXT I
90 POKE 756, TOP
100 REM MODIFY CHARACTER 'A' (INTERNAL CHAR 33)
110 FOR I = 0 TO 7 : READ D : POKE NF + (33 * 8) + I, D : NEXT I
120 DATA 255,129,129,129,129,129,129,255
130 FOR I = 0 TO 7 : READ D : POKE NF + (36 * 8) + I, D : NEXT I
140 DATA 00,00,00,24,60,126,255,255
150 PRINT "DAD AARON"
160 GOTO 160