SE3K Survivors Experience 3000

PART III -- HITACHI HD6805V1 FIRMWARE DISASSEMBLY

Sega SP-400 Plotter / Printer — part of the SE3K documentation library, also readable inside the emulator.

PART III -- HITACHI HD6805V1 FIRMWARE DISASSEMBLY
------------------------------------------------------------------------------
File      : sp400_hd6805v1.bin
Chip      : Hitachi HD6805V1  (Motorola MC6805 compatible, 8-bit)
Device    : SEGA SP-400  --  Alps mechanism controller
ROM size  : 4096 bytes (4 KB)
Assembler : MC6805 / HD6805 mnemonics
------------------------------------------------------------------------------
; ════════════════════════════════════════════════════════════════════════
; FILE   : sp400_hd6805v1.bin
; CPU    : Hitachi HD6805V1  (Motorola MC6805 compatible)
; DEVICE : SEGA SP-400  4-Color Plotter/Printer  –  Alps mechanism
; ROM    : 4 096 bytes, address space $0000-$0FFF
;
; ── Memory Map ────────────────────────────────────────────────────────
; $0000-$000F  I/O registers (Ports A-D, Timer, SCI)
; $0010-$007F  Internal RAM (working variables, stack)
; $0080-$00FF  Motor parameter and step-magnitude tables
; $0100-$0ABF  Program code
; $0AC0-$0B5F  Character page table (160 entries)
; $0B60-$0BFF  Character offset table (160 entries)
; $0C00-$0F7F  Character stroke data (4 pages × 256 bytes)
; $0F80-$0FEF  Additional ISRs
; $0FF0-$0FFF  Interrupt vector table
;
; ── HD6805V1 I/O Registers ────────────────────────────────────────────
; $00 PORT_A_DDR  $01 PORT_A   $02 PORT_B_DDR  $03 PORT_B
; $04 PORT_C_DDR  $05 PORT_C   $06 PORT_D_DDR  $07 PORT_D
; $08 TIMER_CTRL  $09 TIMER_STATUS
; $0A TIMER_HI    $0B TIMER_LO
; $0C SCI_CTRL1   $0D SCI_CTRL2  $0E SCI_STATUS  $0F SCI_DATA
; ════════════════════════════════════════════════════════════════════════
; ══════════════════════════════════════════════════════════════════════
; MOTOR PARAMETER TABLES  ($080-$0FF)
;
; These 128 bytes contain all the timing and step-count constants
; used by the Alps stepper-motor drive routines.
;
; $080-$083  Machine configuration: 4 bytes (motor count, step modes...)
; $090-$0AF  Velocity lookup tables (10 timing values × 2 axes)
; $0B0-$0BF  Acceleration / phase-transition tables
; $0C0-$0CF  Signed X displacement vectors (16 direction entries)
; $0D0-$0DF  Signed Y displacement vectors (same 16 entries)
; $0E0-$0EF  X step magnitude table (8 font-unit sizes × 2 scales)
; $0F0-$0FF  Y step magnitude table (8 font-unit sizes × 2 scales)
; ══════════════════════════════════════════════════════════════════════
$0080:  DB  $09  $05  $06  $0A  $FF  $FF  $FF  $FF    ;    9    5    6   10   -1   -1   -1   -1
$0088:  DB  $FF  $FF  $FF  $FF  $FF  $FF  $FF  $FF    ;   -1   -1   -1   -1   -1   -1   -1   -1
$0090:  DB  $00  $0A  $14  $1E  $28  $32  $3C  $46    ;    0   10   20   30   40   50   60   70
$0098:  DB  $50  $5A  $00  $64  $C8  $2C  $90  $F4    ;   80   90    0  100  -56   44 -112  -12
$00A0:  DB  $58  $BC  $20  $84  $00  $00  $00  $01    ;   88  -68   32 -124    0    0    0    1
$00A8:  DB  $01  $01  $02  $02  $03  $03  $FF  $FF    ;    1    1    2    2    3    3   -1   -1
$00B0:  DB  $07  $00  $FD  $05  $00  $FA  $13  $40    ;    7    0   -3    5    0   -6   19   64
$00B8:  DB  $CC  $05  $AC  $FF  $FF  $FF  $FF  $FF    ;  -52    5  -84   -1   -1   -1   -1   -1
$00C0:  DB  $A8  $DE  $FA  $06  $D4  $EF  $FD  $03    ;  -88  -34   -6    6  -44  -17   -3    3
$00C8:  DB  $FB  $FD  $FB  $FE  $FD  $FE  $FD  $FF    ;   -5   -3   -5   -2   -3   -2   -3   -1
$00D0:  DB  $C0  $B0  $C0  $E0  $E0  $D8  $E0  $F0    ;  -64  -80  -64  -32  -32  -40  -32  -16
$00D8:  DB  $03  $01  $03  $01  $01  $00  $01  $00    ;    3    1    3    1    1    0    1    0
$00E0:  DB  $7A  $58  $14  $14  $3C  $2B  $09  $09    ;  122   88   20   20   60   43    9    9
$00E8:  DB  $16  $16  $16  $16  $0B  $0B  $0B  $0B    ;   22   22   22   22   11   11   11   11
$00F0:  DB  $3C  $3C  $00  $00  $1E  $1E  $00  $00    ;   60   60    0    0   30   30    0    0
$00F8:  DB  $0A  $0E  $00  $00  $05  $07  $00  $00    ;   10   14    0    0    5    7    0    0
; ══════════════════════════════════════════════════════════════════════
; MAIN INITIALISATION  ($100-$150)
;
; Entry point after RESET.  Sets direction registers on ports A-D,
; clears all RAM working variables, configures the SCI serial
; interface (1200 baud from SC-3000), arms the timer interrupt,
; homes the pen carriage and selects pen #1 (Black).
; ══════════════════════════════════════════════════════════════════════
MAIN_INIT:    ; $0100
$0100:  A6 FF       LDA A,#$FF
$0102:  B7 36       STA A,dir_flag
$0104:  20 05       BRA $010B
$0106:  A6 01       LDA A,#$01
$0108:  B7 36       STA A,dir_flag
$010A:  4F          CLR A
$010B:  B7 37       STA A,speed_idx
$010D:  A6 36       LDA A,#$36
$010F:  B7 51       STA A,mode_flags
$0111:  B6 50       LDA A,size_s
$0113:  B7 52       STA A,scale_mult
$0115:  20 22       BRA $0139
$0117:  BE 51       LDX mode_flags
$0119:  F6          LDA A,,X
$011A:  43          COM A
$011B:  B7 36       STA A,dir_flag
$011D:  5C          INC X
$011E:  F6          LDA A,,X
$011F:  43          COM A
$0120:  B7 37       STA A,speed_idx
$0122:  B6 36       LDA A,dir_flag
$0124:  AB 01       ADD A,#$01
$0126:  B7 36       STA A,dir_flag
$0128:  B6 37       LDA A,speed_idx
$012A:  A9 00       ADC A,#$00
$012C:  B7 37       STA A,speed_idx
$012E:  20 09       BRA $0139
$0130:  BE 51       LDX mode_flags
$0132:  F6          LDA A,,X
$0133:  B7 36       STA A,dir_flag
$0135:  5C          INC X
$0136:  F6          LDA A,,X
$0137:  B7 37       STA A,speed_idx
$0139:  B6 37       LDA A,speed_idx
$013B:  BE 50       LDX size_s
$013D:  5C          INC X
$013E:  F8          EOR A,,X
$013F:  A4 80       AND A,#$80
$0141:  B7 53       STA A,stroke_byte
$0143:  B6 36       LDA A,dir_flag
$0145:  BE 50       LDX size_s
$0147:  FB          ADD A,,X
$0148:  BE 52       LDX scale_mult
$014A:  F7          STA A,,X
$014B:  B6 37       LDA A,speed_idx
$014D:  BE 50       LDX size_s
$014F:  5C          INC X
$0150:  F9          ADC A,,X
$0151:  BE 52       LDX scale_mult
$0153:  5C          INC X
$0154:  F7          STA A,,X
$0155:  B8 37       EOR A,speed_idx
$0157:  A4 80       AND A,#$80
$0159:  27 07       BEQ $0162
$015B:  B6 53       LDA A,stroke_byte
$015D:  26 03       BNE $0162
$015F:  CC 06 B2    JMP RESET_ENTRY                ; → RESET_ENTRY
$0162:  81          RTS
$0163:  DB  $FF
$0164:  DB  $FF
$0165:  BE 50       LDX size_s
$0167:  F6          LDA A,,X
$0168:  B7 36       STA A,dir_flag
$016A:  5C          INC X
$016B:  F6          LDA A,,X
$016C:  B7 37       STA A,speed_idx
$016E:  BE 51       LDX mode_flags
$0170:  B6 36       LDA A,dir_flag
$0172:  F8          EOR A,,X
$0173:  B7 53       STA A,stroke_byte
$0175:  5C          INC X
$0176:  B6 37       LDA A,speed_idx
$0178:  F8          EOR A,,X
$0179:  BA 53       ORA A,stroke_byte
$017B:  B7 53       STA A,stroke_byte
$017D:  81          RTS
$017E:  DB  $FF
$017F:  DB  $FF
$0180:  02 40 0A    BRSET 1,motor_state,$018D
$0183:  B6 3B       LDA A,$3B
$0185:  27 06       BEQ $018D
$0187:  B1 26       CMP A,state_flags
$0189:  27 0A       BEQ $0195
$018B:  11 40       BCLR 0,motor_state
$018D:  00 40 07    BRSET 0,motor_state,$0197
$0190:  07 40 04    BRCLR 3,motor_state,$0197
$0193:  20 0B       BRA $01A0
$0195:  10 40       BSET 0,motor_state
$0197:  05 40 1D    BRCLR 2,motor_state,$01B7
$019A:  15 40       BCLR 2,motor_state
$019C:  A6 FE       LDA A,#$FE
$019E:  20 07       BRA $01A7
$01A0:  04 40 14    BRSET 2,motor_state,$01B7
$01A3:  14 40       BSET 2,motor_state
$01A5:  A6 FD       LDA A,#$FD
$01A7:  97          TAX
$01A8:  B6 55       LDA A,loop_ctr
$01AA:  2A FC       BPL $01A8
$01AC:  9B          SEI
$01AD:  9F          TXA
$01AE:  B4 02       AND A,PORT_B_DDR
$01B0:  B7 02       STA A,PORT_B_DDR
$01B2:  9A          CLI
$01B3:  A6 12       LDA A,#$12
$01B5:  B7 55       STA A,loop_ctr
$01B7:  00 40 10    BRSET 0,motor_state,$01CA
$01BA:  B6 26       LDA A,state_flags
$01BC:  27 0C       BEQ $01CA
$01BE:  BB 25       ADD A,pen_x_step
$01C0:  A4 03       AND A,#$03
$01C2:  B7 25       STA A,pen_x_step
$01C4:  A6 03       LDA A,#$03
$01C6:  B7 27       STA A,cmd_buf
$01C8:  20 06       BRA $01D0
$01CA:  B6 27       LDA A,cmd_buf
$01CC:  27 08       BEQ $01D6
$01CE:  3A 27       DEC cmd_buf
$01D0:  BE 25       LDX pen_x_step
$01D2:  E6 80       LDA A,$80,X
$01D4:  20 01       BRA $01D7
$01D6:  4F          CLR A
$01D7:  B7 24       STA A,$24
$01D9:  A6 20       LDA A,#$20
$01DB:  B7 50       STA A,size_s
$01DD:  B6 26       LDA A,state_flags
$01DF:  27 0A       BEQ $01EB
$01E1:  2A 05       BPL $01E8
$01E3:  CD 01 00    JSR MAIN_INIT                  ; → MAIN_INIT
$01E6:  20 03       BRA $01EB
$01E8:  CD 01 06    JSR $0106
$01EB:  B6 2E       LDA A,serial_byte
$01ED:  27 0C       BEQ $01FB
$01EF:  BB 2D       ADD A,margin_right
$01F1:  A4 03       AND A,#$03
$01F3:  B7 2D       STA A,margin_right
$01F5:  A6 03       LDA A,#$03
$01F7:  B7 2F       STA A,input_ptr
$01F9:  20 06       BRA $0201
$01FB:  B6 2F       LDA A,input_ptr
$01FD:  27 08       BEQ $0207
$01FF:  3A 2F       DEC input_ptr
$0201:  BE 2D       LDX margin_right
$0203:  E6 80       LDA A,$80,X
$0205:  20 01       BRA $0208
$0207:  4F          CLR A
$0208:  B7 2C       STA A,margin_left
$020A:  A6 28       LDA A,#$28
$020C:  B7 50       STA A,size_s
$020E:  B6 2E       LDA A,serial_byte
$0210:  27 0A       BEQ $021C
$0212:  2A 05       BPL $0219
$0214:  CD 01 00    JSR MAIN_INIT                  ; → MAIN_INIT
$0217:  20 03       BRA $021C
$0219:  CD 01 06    JSR $0106
$021C:  A6 20       LDA A,#$20
$021E:  B7 50       STA A,size_s
$0220:  A6 30       LDA A,#$30
$0222:  B7 51       STA A,mode_flags
$0224:  CD 01 65    JSR $0165
$0227:  27 0C       BEQ $0235
$0229:  A6 32       LDA A,#$32
$022B:  B7 51       STA A,mode_flags
$022D:  CD 01 65    JSR $0165
$0230:  27 07       BEQ $0239
$0232:  4F          CLR A
$0233:  20 06       BRA $023B
$0235:  A6 FF       LDA A,#$FF
$0237:  20 02       BRA $023B
$0239:  A6 01       LDA A,#$01
$023B:  B7 3B       STA A,$3B
$023D:  B6 55       LDA A,loop_ctr
$023F:  2A FC       BPL $023D
$0241:  10 02       BSET 0,PORT_B_DDR
$0243:  12 02       BSET 1,PORT_B_DDR
$0245:  A6 0D       LDA A,#$0D
$0247:  B7 55       STA A,loop_ctr
$0249:  B6 2C       LDA A,margin_left
$024B:  48          ASL A
$024C:  48          ASL A
$024D:  48          ASL A
$024E:  48          ASL A
$024F:  BA 24       ORA A,$24
$0251:  B7 01       STA A,PORT_A
$0253:  26 02       BNE $0257
$0255:  3F 55       CLR loop_ctr
$0257:  81          RTS
; ══════════════════════════════════════════════════════════════════════
; MOTOR_DRIVE  ($258-$2B0)
;
; Core stepper-motor drive routine.  Called with:
;   $3C  = Y step-magnitude index (bits[6:4] of stroke byte)
;   $3E  = X step-magnitude index (bits[2:0] of stroke byte)
;   $40  = motor direction flags (bit3 = Y sign)
;   $41  = pen flags            (bit1 = pen up)
;
; Looks up actual step counts in tables at $0E0 (X) and $0F0 (Y),
; scales by size setting in $50 (size S, 0-63), then fires the
; Alps X and Y stepper phases in the correct sequence.
; ══════════════════════════════════════════════════════════════════════
MOTOR_DRIVE:    ; $0258
$0258:  BE 3D       LDX $3D
$025A:  B6 3C       LDA A,y_step_idx
$025C:  B7 3D       STA A,$3D
$025E:  BF 3C       STX y_step_idx
$0260:  B0 3C       SUB A,y_step_idx
$0262:  B7 3C       STA A,y_step_idx
$0264:  BE 3F       LDX step_count
$0266:  B6 3E       LDA A,x_step_idx
$0268:  B7 3F       STA A,step_count
$026A:  BF 3E       STX x_step_idx
$026C:  B0 3E       SUB A,x_step_idx
$026E:  B7 3E       STA A,x_step_idx
$0270:  B6 4E       LDA A,$4E
$0272:  27 1D       BEQ $0291
$0274:  4A          DEC A
$0275:  27 0A       BEQ $0281
$0277:  4A          DEC A
$0278:  27 13       BEQ $028D
$027A:  4A          DEC A
$027B:  26 14       BNE $0291
$027D:  30 3E       NEG x_step_idx
$027F:  20 02       BRA $0283
$0281:  30 3C       NEG y_step_idx
$0283:  B6 3C       LDA A,y_step_idx
$0285:  BE 3E       LDX x_step_idx
$0287:  B7 3E       STA A,x_step_idx
$0289:  BF 3C       STX y_step_idx
$028B:  20 04       BRA $0291
$028D:  30 3C       NEG y_step_idx
$028F:  30 3E       NEG x_step_idx
$0291:  5F          CLR X
$0292:  B6 3C       LDA A,y_step_idx
$0294:  27 08       BEQ $029E
$0296:  2A 04       BPL $029C
$0298:  AE FF       LDX A,#$FF
$029A:  20 02       BRA $029E
$029C:  AE 01       LDX A,#$01
$029E:  BF 26       STX state_flags
$02A0:  5F          CLR X
$02A1:  B6 3E       LDA A,x_step_idx
$02A3:  27 08       BEQ $02AD
$02A5:  2A 04       BPL $02AB
$02A7:  AE FF       LDX A,#$FF
$02A9:  20 02       BRA $02AD
$02AB:  AE 01       LDX A,#$01
$02AD:  BF 2E       STX serial_byte
$02AF:  20 02       BRA $02B3
; ══════════════════════════════════════════════════════════════════════
; SERIAL_IN  ($2B1-$2DA)
;
; Polls SCI_STATUS for a received byte from the SC-3000 serial port
; (1200 baud, 8N1).  When a complete byte is available it is read
; from SCI_DATA into serial_byte ($2E) and returns.
; ══════════════════════════════════════════════════════════════════════
SERIAL_IN:    ; $02B1
$02B1:  17 40       BCLR 3,motor_state
$02B3:  B6 4C       LDA A,$4C
$02B5:  B7 4D       STA A,$4D
$02B7:  CD 01 80    JSR $0180
$02BA:  3A 4D       DEC $4D
$02BC:  2A F9       BPL $02B7
$02BE:  B6 3C       LDA A,y_step_idx
$02C0:  B0 26       SUB A,state_flags
$02C2:  B7 3C       STA A,y_step_idx
$02C4:  26 02       BNE $02C8
$02C6:  3F 26       CLR state_flags
$02C8:  B6 3E       LDA A,x_step_idx
$02CA:  B0 2E       SUB A,serial_byte
$02CC:  B7 3E       STA A,x_step_idx
$02CE:  26 02       BNE $02D2
$02D0:  3F 2E       CLR serial_byte
$02D2:  B6 26       LDA A,state_flags
$02D4:  26 DD       BNE $02B3
$02D6:  B6 2E       LDA A,serial_byte
$02D8:  26 D9       BNE $02B3
$02DA:  81          RTS
; ══════════════════════════════════════════════════════════════════════
; CHAR_DISPATCH  ($2DB-$364)
;
; High-level command/character dispatcher.
;
; 1. Calls SERIAL_IN to fetch next byte from SC-3000.
; 2. Depending on mode_flags ($51):
;    TEXT mode  : byte is an ASCII code → decode as text character.
;    GRAPHIC mode: byte is a single-letter command (A-Z etc.).
; 3. For TEXT characters:
;    a. Subtract $20 to get 0-based index.
;    b. Look up page# in table at $0AC0+index.
;    c. Look up byte-offset in table at $0B60+index.
;    d. Call DRAW_CHAR.
; 4. For GRAPHIC commands dispatch to the appropriate CMD_* handler.
; ══════════════════════════════════════════════════════════════════════
CHAR_DISPATCH:    ; $02DB
$02DB:  B6 48       LDA A,char_offset
$02DD:  A0 20       SUB A,#$20
$02DF:  A1 70       CMP A,#$70
$02E1:  2B 02       BMI $02E5
$02E3:  A0 20       SUB A,#$20
$02E5:  97          TAX
$02E6:  D6 0A C0    LDA A,$0AC0,X
$02E9:  B7 49       STA A,char_page
$02EB:  D6 0B 60    LDA A,$0B60,X
$02EE:  B7 48       STA A,char_offset
$02F0:  00 41 16    BRSET 0,pen_flags,$0309
$02F3:  A6 20       LDA A,#$20
$02F5:  B7 51       STA A,mode_flags
$02F7:  A6 34       LDA A,#$34
$02F9:  B7 50       STA A,size_s
$02FB:  A6 36       LDA A,#$36
$02FD:  B7 52       STA A,scale_mult
$02FF:  CD 01 17    JSR $0117
$0302:  B6 37       LDA A,speed_idx
$0304:  2A 03       BPL $0309
$0306:  CD 03 65    JSR DRAW_CHAR                  ; → DRAW_CHAR
$0309:  3F 3D       CLR $3D
$030B:  3F 3F       CLR step_count
$030D:  BE 48       LDX char_offset
$030F:  B6 49       LDA A,char_page
$0311:  27 15       BEQ $0328
$0313:  4A          DEC A
$0314:  27 0D       BEQ $0323
$0316:  4A          DEC A
$0317:  27 05       BEQ $031E
$0319:  D6 0F 00    LDA A,$0F00,X
$031C:  20 0F       BRA $032D
$031E:  D6 0E 00    LDA A,$0E00,X
$0321:  20 0A       BRA $032D
$0323:  D6 0D 00    LDA A,$0D00,X
$0326:  20 05       BRA $032D
$0328:  D6 0C 00    LDA A,$0C00,X
$032B:  20 00       BRA $032D
$032D:  3C 48       INC char_offset
$032F:  B7 53       STA A,stroke_byte
$0331:  13 41       BCLR 1,pen_flags
$0333:  A4 80       AND A,#$80
$0335:  27 02       BEQ $0339
$0337:  12 41       BSET 1,pen_flags
$0339:  B6 53       LDA A,stroke_byte
$033B:  17 40       BCLR 3,motor_state
$033D:  A4 08       AND A,#$08
$033F:  27 02       BEQ $0343
$0341:  16 40       BSET 3,motor_state
$0343:  B6 53       LDA A,stroke_byte
$0345:  A4 07       AND A,#$07
$0347:  B7 3E       STA A,x_step_idx
$0349:  B6 53       LDA A,stroke_byte
$034B:  A4 70       AND A,#$70
$034D:  44          LSR A
$034E:  44          LSR A
$034F:  44          LSR A
$0350:  44          LSR A
$0351:  B7 3C       STA A,y_step_idx
$0353:  CD 02 58    JSR MOTOR_DRIVE                ; → MOTOR_DRIVE
$0356:  03 41 B4    BRCLR 1,pen_flags,$030D
$0359:  17 40       BCLR 3,motor_state
$035B:  3F 3E       CLR x_step_idx
$035D:  A6 06       LDA A,#$06
$035F:  B7 3C       STA A,y_step_idx
$0361:  CD 02 58    JSR MOTOR_DRIVE                ; → MOTOR_DRIVE
$0364:  81          RTS
; ══════════════════════════════════════════════════════════════════════
; DRAW_CHAR  ($365-$373)
;
; Renders one character using the stroke data in ROM.
; Reads stroke bytes one at a time via CHAR_BYTE_READ, decodes
; each byte as (pen_up, Y_idx, sign, X_idx) and calls MOTOR_DRIVE
; until a byte with bit7=1 (final stroke) is processed.
; ══════════════════════════════════════════════════════════════════════
DRAW_CHAR:    ; $0365
$0365:  3F 26       CLR state_flags
$0367:  A6 FF       LDA A,#$FF
$0369:  B7 2E       STA A,serial_byte
$036B:  3F 3C       CLR y_step_idx
$036D:  A6 F4       LDA A,#$F4
$036F:  B7 3E       STA A,x_step_idx
$0371:  CD 02 B1    JSR SERIAL_IN                  ; → SERIAL_IN
NEXT_CHAR:    ; $0374
$0374:  17 40       BCLR 3,motor_state
$0376:  3F 23       CLR char_y_hi
$0378:  3F 22       CLR char_y_lo
$037A:  B6 29       LDA A,param2
$037C:  B7 2B       STA A,cursor_x_hi
$037E:  B6 28       LDA A,param1
$0380:  B7 2A       STA A,cursor_x_lo
$0382:  CD 03 93    JSR MOTOR_STEP                 ; → MOTOR_STEP
$0385:  81          RTS
; ══════════════════════════════════════════════════════════════════════
; MOTOR_X / MOTOR_Y / MOTOR_STEP  ($386-$3AC)
;
; Low-level stepper sequencers.  MOTOR_X drives the pen-carriage
; phases on Port A; MOTOR_Y drives the paper-feed phases on Port B.
; MOTOR_STEP fires one micro-step on whichever motor was selected,
; using the 4-phase excitation pattern stored in the phase tables.
; ══════════════════════════════════════════════════════════════════════
MOTOR_X:    ; $0386
$0386:  E6 01       LDA A,$01,X
$0388:  2A 08       BPL $0392
MOTOR_Y:    ; $038A
$038A:  73 63 01    COM $6301
$038D:  7C 26 02    INC $2602
$0390:  6C          INC ,X
$0391:  01 81 A6    BRCLR 0,$81,$033A
$0394:  22 B7       BHI $034D
$0396:  50          NEG X
$0397:  B7 52       STA A,scale_mult
$0399:  A6 20       LDA A,#$20
$039B:  B7 51       STA A,mode_flags
$039D:  CD 01 17    JSR $0117
$03A0:  A6 2A       LDA A,#$2A
$03A2:  B7 50       STA A,size_s
$03A4:  B7 52       STA A,scale_mult
$03A6:  A6 28       LDA A,#$28
$03A8:  B7 51       STA A,mode_flags
$03AA:  CD 01 17    JSR $0117
; ══════════════════════════════════════════════════════════════════════
; PENDOWN  ($3AD-$3FF)
;
; Lowers or raises the active pen by pulsing the solenoid on
; Port C bit4.  Also maintains pen_state ($5E).
; ══════════════════════════════════════════════════════════════════════
PENDOWN:    ; $03AD
$03AD:  3F 44       CLR motor_step_x
$03AF:  3F 45       CLR motor_step_y
$03B1:  AE 01       LDX A,#$01
$03B3:  B6 23       LDA A,char_y_hi
$03B5:  2A 02       BPL $03B9
$03B7:  AE FF       LDX A,#$FF
$03B9:  BF 26       STX state_flags
$03BB:  AE 01       LDX A,#$01
$03BD:  B6 2B       LDA A,cursor_x_hi
$03BF:  2A 02       BPL $03C3
$03C1:  AE FF       LDX A,#$FF
$03C3:  BF 2E       STX serial_byte
$03C5:  AE 22       LDX A,#$22
$03C7:  CD 03 86    JSR MOTOR_X                    ; → MOTOR_X
$03CA:  AE 2A       LDX A,#$2A
$03CC:  CD 03 86    JSR MOTOR_X                    ; → MOTOR_X
$03CF:  A6 22       LDA A,#$22
$03D1:  B7 50       STA A,size_s
$03D3:  A6 2A       LDA A,#$2A
$03D5:  B7 51       STA A,mode_flags
$03D7:  A6 36       LDA A,#$36
$03D9:  B7 52       STA A,scale_mult
$03DB:  CD 01 17    JSR $0117
$03DE:  B6 37       LDA A,speed_idx
$03E0:  2A 06       BPL $03E8
$03E2:  A6 2A       LDA A,#$2A
$03E4:  AE 22       LDX A,#$22
$03E6:  20 04       BRA $03EC
$03E8:  A6 22       LDA A,#$22
$03EA:  AE 2A       LDX A,#$2A
$03EC:  B7 42       STA A,motor_x_dir
$03EE:  BF 43       STX motor_y_dir
$03F0:  BE 42       LDX motor_x_dir
$03F2:  F6          LDA A,,X
$03F3:  B7 46       STA A,accel_state
$03F5:  5C          INC X
$03F6:  F6          LDA A,,X
$03F7:  44          LSR A
$03F8:  B7 47       STA A,decel_state
$03FA:  36 46       ROR accel_state
$03FC:  BE 43       LDX motor_y_dir
$03FE:  E6 04       LDA A,$04,X
$0400:  B7 54       STA A,stroke_count
$0402:  B6 42       LDA A,motor_x_dir
$0404:  B7 50       STA A,size_s
$0406:  A6 44       LDA A,#$44
$0408:  B7 51       STA A,mode_flags
$040A:  CD 01 65    JSR $0165
$040D:  26 05       BNE $0414
$040F:  19 40       BCLR 4,motor_state
$0411:  9D          NOP
$0412:  9D          NOP
$0413:  81          RTS
$0414:  A6 46       LDA A,#$46
$0416:  B7 50       STA A,size_s
$0418:  B7 52       STA A,scale_mult
$041A:  B6 43       LDA A,motor_y_dir
$041C:  B7 51       STA A,mode_flags
$041E:  CD 01 17    JSR $0117
$0421:  5F          CLR X
$0422:  B6 47       LDA A,decel_state
$0424:  2A 0F       BPL $0435
$0426:  A6 46       LDA A,#$46
$0428:  B7 50       STA A,size_s
$042A:  B7 52       STA A,scale_mult
$042C:  B6 42       LDA A,motor_x_dir
$042E:  B7 51       STA A,mode_flags
$0430:  CD 01 30    JSR $0130
$0433:  BE 54       LDX stroke_count
$0435:  9F          TXA
$0436:  BE 43       LDX motor_y_dir
$0438:  E7 04       STA A,$04,X
$043A:  A6 44       LDA A,#$44
$043C:  B7 50       STA A,size_s
$043E:  CD 01 06    JSR $0106
$0441:  09 40 1A    BRCLR 4,motor_state,$045E
$0444:  B6 4A       LDA A,$4A
$0446:  27 1A       BEQ $0462
$0448:  3A 4B       DEC $4B
$044A:  26 0D       BNE $0459
$044C:  07 40 04    BRCLR 3,motor_state,$0453
$044F:  17 40       BCLR 3,motor_state
$0451:  20 02       BRA $0455
$0453:  16 40       BSET 3,motor_state
$0455:  B6 4A       LDA A,$4A
$0457:  B7 4B       STA A,$4B
$0459:  CD 01 80    JSR $0180
$045C:  20 A4       BRA $0402
$045E:  17 40       BCLR 3,motor_state
$0460:  20 F7       BRA $0459
$0462:  16 40       BSET 3,motor_state
$0464:  20 F3       BRA $0459
; ══════════════════════════════════════════════════════════════════════
; GRAPHIC COMMAND HANDLERS  ($466-$5F0)
;
; Each routine handles one graphic-mode command letter:
;   CMD_SIZE  : 'S' – set character scale factor (0-63).
;   CMD_AXIS  : 'A' – set absolute or relative axis origin.
;   CMD_DRAW  : 'D' – draw line to coordinates (X,Y).
;   CMD_COLOR : 'C' – select pen color (1-4).
;   CMD_MOVE  : 'M' – move to coordinates without drawing.
;   CMD_GRAPHIC:'G' – enter graphic mode.
;   CMD_TEXT  : 'T' – return to text mode.
; ══════════════════════════════════════════════════════════════════════
CMD_SIZE:    ; $0466
$0466:  B6 5F       LDA A,color_sel
$0468:  4C          INC A
$0469:  A4 03       AND A,#$03
$046B:  B7 5E       STA A,pen_state
CMD_AXIS:    ; $046D
$046D:  B6 20       LDA A,char_x_lo
$046F:  B7 5C       STA A,phase_x
$0471:  B6 21       LDA A,char_x_hi
$0473:  B7 5D       STA A,phase_y
CMD_DRAW:    ; $0475
$0475:  B6 28       LDA A,param1
$0477:  B7 2A       STA A,cursor_x_lo
$0479:  B6 29       LDA A,param2
$047B:  B7 2B       STA A,cursor_x_hi
$047D:  B6 30       LDA A,$30
$047F:  B7 22       STA A,char_y_lo
$0481:  B6 31       LDA A,$31
$0483:  B7 23       STA A,char_y_hi
$0485:  CD 03 93    JSR MOTOR_STEP                 ; → MOTOR_STEP
$0488:  12 40       BSET 1,motor_state
$048A:  11 40       BCLR 0,motor_state
$048C:  BE 4F       LDX $4F
$048E:  E6 E0       LDA A,$E0,X
$0490:  B7 22       STA A,char_y_lo
$0492:  3F 23       CLR char_y_hi
$0494:  CD 0A A0    JSR CHAR_LOOKUP_SETUP          ; → CHAR_LOOKUP_SETUP
$0497:  BE 4F       LDX $4F
$0499:  E6 F0       LDA A,$F0,X
$049B:  B7 22       STA A,char_y_lo
$049D:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$04A0:  CD 0A A0    JSR CHAR_LOOKUP_SETUP          ; → CHAR_LOOKUP_SETUP
$04A3:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$04A6:  CD 0A A0    JSR CHAR_LOOKUP_SETUP          ; → CHAR_LOOKUP_SETUP
$04A9:  B6 5F       LDA A,color_sel
$04AB:  4C          INC A
$04AC:  A4 03       AND A,#$03
$04AE:  B7 5F       STA A,color_sel
$04B0:  B1 5E       CMP A,pen_state
$04B2:  27 08       BEQ $04BC
$04B4:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$04B7:  CD 0A A0    JSR CHAR_LOOKUP_SETUP          ; → CHAR_LOOKUP_SETUP
$04BA:  20 E1       BRA $049D
$04BC:  BE 4F       LDX $4F
$04BE:  E6 E0       LDA A,$E0,X
$04C0:  B7 22       STA A,char_y_lo
$04C2:  3F 23       CLR char_y_hi
$04C4:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$04C7:  13 40       BCLR 1,motor_state
$04C9:  B6 5C       LDA A,phase_x
$04CB:  B7 22       STA A,char_y_lo
$04CD:  B6 5D       LDA A,phase_y
$04CF:  B7 23       STA A,char_y_hi
$04D1:  B6 28       LDA A,param1
$04D3:  B7 2A       STA A,cursor_x_lo
$04D5:  B6 29       LDA A,param2
$04D7:  B7 2B       STA A,cursor_x_hi
$04D9:  CD 03 93    JSR MOTOR_STEP                 ; → MOTOR_STEP
$04DC:  81          RTS
CMD_COLOR:    ; $04DD
$04DD:  A6 71       LDA A,#$71
$04DF:  B7 48       STA A,char_offset
$04E1:  A6 03       LDA A,#$03
$04E3:  B7 49       STA A,char_page
$04E5:  CC 02 F0    JMP $02F0
CMD_MOVE:    ; $04E8
$04E8:  B6 32       LDA A,$32
$04EA:  B7 34       STA A,$34
$04EC:  B6 33       LDA A,$33
$04EE:  B7 35       STA A,$35
$04F0:  B6 4C       LDA A,$4C
$04F2:  B7 36       STA A,dir_flag
$04F4:  3C 36       INC dir_flag
$04F6:  3F 37       CLR speed_idx
$04F8:  AE 36       LDX A,#$36
$04FA:  CD 03 8A    JSR MOTOR_Y                    ; → MOTOR_Y
$04FD:  A6 34       LDA A,#$34
$04FF:  B7 50       STA A,size_s
$0501:  B7 52       STA A,scale_mult
$0503:  A6 36       LDA A,#$36
$0505:  B7 51       STA A,mode_flags
$0507:  A6 05       LDA A,#$05
$0509:  B7 58       STA A,y_accum_lo
$050B:  CD 01 39    JSR $0139
$050E:  3A 58       DEC y_accum_lo
$0510:  2A F9       BPL $050B
$0512:  81          RTS
CMD_GRAPHIC:    ; $0513
$0513:  B6 20       LDA A,char_x_lo
$0515:  B7 5C       STA A,phase_x
$0517:  B6 21       LDA A,char_x_hi
$0519:  B7 5D       STA A,phase_y
$051B:  08 00 32    BRSET 4,PORT_A_DDR,$0550
$051E:  B6 28       LDA A,param1
$0520:  B7 2A       STA A,cursor_x_lo
$0522:  B6 29       LDA A,param2
$0524:  B7 2B       STA A,cursor_x_hi
$0526:  B6 32       LDA A,$32
$0528:  B7 22       STA A,char_y_lo
$052A:  B6 33       LDA A,$33
$052C:  B7 23       STA A,char_y_hi
$052E:  CD 03 93    JSR MOTOR_STEP                 ; → MOTOR_STEP
$0531:  BE 4F       LDX $4F
$0533:  E6 F8       LDA A,$F8,X
$0535:  B7 22       STA A,char_y_lo
$0537:  3F 23       CLR char_y_hi
$0539:  12 40       BSET 1,motor_state
$053B:  11 40       BCLR 0,motor_state
$053D:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$0540:  07 00 0D    BRCLR 3,PORT_A_DDR,$0550
$0543:  04 00 05    BRSET 2,PORT_A_DDR,$054B
$0546:  CD 0A A8    JSR CHAR_BYTE_READ             ; → CHAR_BYTE_READ
$0549:  20 D3       BRA $051E
$054B:  CD 06 1F    JSR SELFTEST                   ; → SELFTEST
$054E:  20 F0       BRA $0540
$0550:  06 00 50    BRSET 3,PORT_A_DDR,$05A3
$0553:  B6 28       LDA A,param1
$0555:  B7 2A       STA A,cursor_x_lo
$0557:  B6 29       LDA A,param2
$0559:  B7 2B       STA A,cursor_x_hi
$055B:  B6 30       LDA A,$30
$055D:  B7 22       STA A,char_y_lo
$055F:  B6 31       LDA A,$31
$0561:  B7 23       STA A,char_y_hi
$0563:  CD 03 93    JSR MOTOR_STEP                 ; → MOTOR_STEP
$0566:  BE 4F       LDX $4F
$0568:  E6 E8       LDA A,$E8,X
$056A:  B7 22       STA A,char_y_lo
$056C:  3F 23       CLR char_y_hi
$056E:  12 40       BSET 1,motor_state
$0570:  11 40       BCLR 0,motor_state
$0572:  CD 0A A0    JSR CHAR_LOOKUP_SETUP          ; → CHAR_LOOKUP_SETUP
$0575:  06 00 1C    BRSET 3,PORT_A_DDR,$0594
$0578:  04 00 07    BRSET 2,PORT_A_DDR,$0582
$057B:  BE 4F       LDX $4F
$057D:  E6 E8       LDA A,$E8,X
$057F:  CC 0A B2    JMP $0AB2
$0582:  A6 FF       LDA A,#$FF
$0584:  B7 2E       STA A,serial_byte
$0586:  3F 26       CLR state_flags
$0588:  CD 01 80    JSR $0180
$058B:  A6 28       LDA A,#$28
$058D:  B7 50       STA A,size_s
$058F:  CD 01 06    JSR $0106
$0592:  20 E1       BRA $0575
$0594:  BE 4F       LDX $4F
$0596:  E6 E8       LDA A,$E8,X
$0598:  B7 22       STA A,char_y_lo
$059A:  3F 23       CLR char_y_hi
$059C:  3F 2A       CLR cursor_x_lo
$059E:  3F 2B       CLR cursor_x_hi
$05A0:  CC 04 C4    JMP $04C4
$05A3:  04 00 4A    BRSET 2,PORT_A_DDR,$05F0
$05A6:  14 40       BSET 2,motor_state
$05A8:  CC 04 66    JMP CMD_SIZE                   ; → CMD_SIZE
$05AB:  3F A6       CLR $A6
$05AD:  20 B7       BRA $0566
$05AF:  50          NEG X
$05B0:  B7 52       STA A,scale_mult
$05B2:  A6 30       LDA A,#$30
$05B4:  B7 51       STA A,mode_flags
$05B6:  CD 01 17    JSR $0117
$05B9:  A6 32       LDA A,#$32
$05BB:  B7 50       STA A,size_s
$05BD:  B7 52       STA A,scale_mult
$05BF:  CD 01 17    JSR $0117
$05C2:  3F 30       CLR $30
$05C4:  3F 31       CLR $31
$05C6:  3F 28       CLR param1
$05C8:  3F 29       CLR param2
$05CA:  3F 2A       CLR cursor_x_lo
$05CC:  3F 2B       CLR cursor_x_hi
$05CE:  11 41       BCLR 0,pen_flags
$05D0:  CD 04 E8    JSR CMD_MOVE                   ; → CMD_MOVE
$05D3:  3F 4E       CLR $4E
$05D5:  B6 21       LDA A,char_x_hi
$05D7:  2A 08       BPL $05E1
$05D9:  3F 20       CLR char_x_lo
$05DB:  3F 21       CLR char_x_hi
$05DD:  A6 FF       LDA A,#$FF
$05DF:  20 0D       BRA $05EE
$05E1:  01 40 0C    BRCLR 0,motor_state,$05F0
$05E4:  B6 32       LDA A,$32
$05E6:  B7 20       STA A,char_x_lo
$05E8:  B6 33       LDA A,$33
$05EA:  B7 21       STA A,char_x_hi
$05EC:  A6 01       LDA A,#$01
$05EE:  B7 3B       STA A,$3B
$05F0:  81          RTS
; ══════════════════════════════════════════════════════════════════════
; CMD_LINEFEED  ($5F1-$625)
;
; Advances paper by one line (feeds Y by one character-height steps).
; In text mode also resets the cursor X position to left margin.
; ══════════════════════════════════════════════════════════════════════
CMD_LINEFEED:    ; $05F1
$05F1:  9A          CLI
$05F2:  B6 57       LDA A,x_accum_hi
$05F4:  A1 06       CMP A,#$06
$05F6:  2A 10       BPL $0608
$05F8:  0A 41 0D    BRSET 5,pen_flags,$0608
$05FB:  09 02 0A    BRCLR 4,PORT_B_DDR,$0608
$05FE:  9B          SEI
$05FF:  19 02       BCLR 4,PORT_B_DDR
$0601:  1B 02       BCLR 5,PORT_B_DDR
$0603:  9D          NOP
$0604:  9D          NOP
$0605:  1A 02       BSET 5,PORT_B_DDR
$0607:  9A          CLI
$0608:  B6 57       LDA A,x_accum_hi
$060A:  27 11       BEQ $061D
$060C:  9B          SEI
$060D:  3A 57       DEC x_accum_hi
$060F:  B6 56       LDA A,x_accum_lo
$0611:  4C          INC A
$0612:  A4 07       AND A,#$07
$0614:  B7 56       STA A,x_accum_lo
$0616:  97          TAX
$0617:  9A          CLI
$0618:  E6 60       LDA A,$60,X
$061A:  B7 48       STA A,char_offset
$061C:  81          RTS
$061D:  3F 48       CLR char_offset
; ══════════════════════════════════════════════════════════════════════
; SELF-TEST  ($61F-$6B1)
;
; Entered by holding LINE FEED while powering on.
; Prints all printable ASCII characters in 4 colors across the paper.
; ══════════════════════════════════════════════════════════════════════
SELFTEST:    ; $061F
$061F:  3F 26       CLR state_flags
$0621:  3F 2E       CLR serial_byte
$0623:  CC 01 80    JMP $0180
CMD_CR:    ; $0626
$0626:  15 41       BCLR 2,pen_flags
$0628:  17 41       BCLR 3,pen_flags
$062A:  3F 38       CLR $38
$062C:  3F 39       CLR $39
$062E:  3F 3A       CLR $3A
$0630:  CD 05 F1    JSR CMD_LINEFEED               ; → CMD_LINEFEED
$0633:  B6 48       LDA A,char_offset
$0635:  27 F9       BEQ $0630
$0637:  A1 20       CMP A,#$20
$0639:  27 F5       BEQ $0630
$063B:  A1 2D       CMP A,#$2D
$063D:  26 04       BNE $0643
$063F:  16 41       BSET 3,pen_flags
$0641:  20 ED       BRA $0630
$0643:  A4 F0       AND A,#$F0
$0645:  A1 30       CMP A,#$30
$0647:  26 27       BNE $0670
$0649:  B6 48       LDA A,char_offset
$064B:  A4 0F       AND A,#$0F
$064D:  A1 0A       CMP A,#$0A
$064F:  2A 1F       BPL $0670
$0651:  BE 38       LDX $38
$0653:  B7 38       STA A,$38
$0655:  B6 39       LDA A,$39
$0657:  BF 39       STX $39
$0659:  B7 3A       STA A,$3A
$065B:  CD 05 F1    JSR CMD_LINEFEED               ; → CMD_LINEFEED
$065E:  B6 48       LDA A,char_offset
$0660:  27 F9       BEQ $065B
$0662:  A1 0D       CMP A,#$0D
$0664:  27 06       BEQ $066C
$0666:  A1 2C       CMP A,#$2C
$0668:  26 D9       BNE $0643
$066A:  20 1B       BRA $0687
$066C:  14 41       BSET 2,pen_flags
$066E:  20 17       BRA $0687
$0670:  B6 48       LDA A,char_offset
$0672:  A1 0D       CMP A,#$0D
$0674:  26 04       BNE $067A
$0676:  14 41       BSET 2,pen_flags
$0678:  20 0D       BRA $0687
$067A:  A1 2C       CMP A,#$2C
$067C:  27 09       BEQ $0687
$067E:  CD 05 F1    JSR CMD_LINEFEED               ; → CMD_LINEFEED
$0681:  B6 48       LDA A,char_offset
$0683:  27 F9       BEQ $067E
$0685:  20 E9       BRA $0670
$0687:  B6 38       LDA A,$38
$0689:  BE 39       LDX $39
$068B:  EB 90       ADD A,$90,X
$068D:  B7 38       STA A,$38
$068F:  3F 39       CLR $39
$0691:  BE 3A       LDX $3A
$0693:  E6 9A       LDA A,$9A,X
$0695:  B7 48       STA A,char_offset
$0697:  E6 A4       LDA A,$A4,X
$0699:  B7 49       STA A,char_page
$069B:  A6 38       LDA A,#$38
$069D:  B7 50       STA A,size_s
$069F:  B7 52       STA A,scale_mult
$06A1:  A6 48       LDA A,#$48
$06A3:  B7 51       STA A,mode_flags
$06A5:  CD 01 30    JSR $0130
$06A8:  07 41 05    BRCLR 3,pen_flags,$06B0
$06AB:  AE 38       LDX A,#$38
$06AD:  CD 03 8A    JSR MOTOR_Y                    ; → MOTOR_Y
$06B0:  81          RTS
$06B1:  B6 9B       LDA A,$9B
$06B3:  9C          RSP
$06B4:  4F          CLR A
$06B5:  AE 20       LDX A,#$20
$06B7:  F7          STA A,,X
$06B8:  5C          INC X
$06B9:  A3 60       CPX #$60
$06BB:  26 FA       BNE $06B7
$06BD:  B7 04       STA A,PORT_C_DDR
$06BF:  A6 FF       LDA A,#$FF
$06C1:  B7 05       STA A,PORT_C
$06C3:  A6 73       LDA A,#$73
$06C5:  B7 06       STA A,PORT_D_DDR
$06C7:  3F 01       CLR PORT_A
$06C9:  A6 03       LDA A,#$03
$06CB:  B7 02       STA A,PORT_B_DDR
$06CD:  06 00 02    BRSET 3,PORT_A_DDR,$06D2
$06D0:  18 41       BSET 4,pen_flags
$06D2:  1A 02       BSET 5,PORT_B_DDR
$06D4:  1C 02       BSET 6,PORT_B_DDR
$06D6:  12 40       BSET 1,motor_state
$06D8:  14 40       BSET 2,motor_state
$06DA:  B6 00       LDA A,PORT_A_DDR
$06DC:  44          LSR A
$06DD:  44          LSR A
$06DE:  44          LSR A
$06DF:  44          LSR A
$06E0:  44          LSR A
$06E1:  B7 4F       STA A,$4F
$06E3:  A6 03       LDA A,#$03
$06E5:  B7 09       STA A,TIMER_STATUS
$06E7:  9A          CLI
$06E8:  BE 4F       LDX $4F
$06EA:  E6 C0       LDA A,$C0,X
$06EC:  B7 22       STA A,char_y_lo
$06EE:  E6 C8       LDA A,$C8,X
$06F0:  B7 23       STA A,char_y_hi
$06F2:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$06F5:  06 02 02    BRSET 3,PORT_B_DDR,$06FA
$06F8:  1E 40       BSET 7,motor_state
$06FA:  BE 4F       LDX $4F
$06FC:  E6 E0       LDA A,$E0,X
$06FE:  AB 02       ADD A,#$02
$0700:  B7 22       STA A,char_y_lo
$0702:  3F 23       CLR char_y_hi
$0704:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$0707:  3F 20       CLR char_x_lo
$0709:  3F 21       CLR char_x_hi
$070B:  BE 4F       LDX $4F
$070D:  E6 D0       LDA A,$D0,X
$070F:  B7 32       STA A,$32
$0711:  E6 D8       LDA A,$D8,X
$0713:  B7 33       STA A,$33
$0715:  CD 04 E8    JSR CMD_MOVE                   ; → CMD_MOVE
$0718:  CD 0A A0    JSR CHAR_LOOKUP_SETUP          ; → CHAR_LOOKUP_SETUP
$071B:  A6 05       LDA A,#$05
$071D:  0E 00 02    BRSET 7,PORT_A_DDR,$0722
$0720:  A6 0B       LDA A,#$0B
$0722:  B7 4C       STA A,$4C
$0724:  0C 00 4B    BRSET 6,PORT_A_DDR,$0772
$0727:  A6 0A       LDA A,#$0A
$0729:  B7 4B       STA A,$4B
$072B:  07 02 19    BRCLR 3,PORT_B_DDR,$0747
$072E:  BE 4F       LDX $4F
$0730:  E6 F0       LDA A,$F0,X
$0732:  B7 22       STA A,char_y_lo
$0734:  3F 23       CLR char_y_hi
$0736:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$0739:  CD 0A A0    JSR CHAR_LOOKUP_SETUP          ; → CHAR_LOOKUP_SETUP
$073C:  3A 4B       DEC $4B
$073E:  26 EB       BNE $072B
$0740:  0F 40 04    BRCLR 7,motor_state,$0747
$0743:  1F 40       BCLR 7,motor_state
$0745:  20 E4       BRA $072B
$0747:  3F 5F       CLR color_sel
$0749:  BE 4F       LDX $4F
$074B:  E6 E0       LDA A,$E0,X
$074D:  AB 02       ADD A,#$02
$074F:  B7 22       STA A,char_y_lo
$0751:  3F 23       CLR char_y_hi
$0753:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$0756:  CD 03 65    JSR DRAW_CHAR                  ; → DRAW_CHAR
$0759:  CD 04 DD    JSR CMD_COLOR                  ; → CMD_COLOR
$075C:  A6 03       LDA A,#$03
$075E:  B7 4B       STA A,$4B
$0760:  CD 04 66    JSR CMD_SIZE                   ; → CMD_SIZE
$0763:  CD 04 DD    JSR CMD_COLOR                  ; → CMD_COLOR
$0766:  3A 4B       DEC $4B
$0768:  26 F6       BNE $0760
$076A:  CD 03 65    JSR DRAW_CHAR                  ; → DRAW_CHAR
$076D:  CD 04 66    JSR CMD_SIZE                   ; → CMD_SIZE
$0770:  20 16       BRA $0788
$0772:  BE 4F       LDX $4F
$0774:  E6 E0       LDA A,$E0,X
$0776:  AB 02       ADD A,#$02
$0778:  B7 22       STA A,char_y_lo
$077A:  3F 23       CLR char_y_hi
$077C:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$077F:  CD 03 65    JSR DRAW_CHAR                  ; → DRAW_CHAR
$0782:  CD 04 DD    JSR CMD_COLOR                  ; → CMD_COLOR
$0785:  CD 03 65    JSR DRAW_CHAR                  ; → DRAW_CHAR
$0788:  4F          CLR A
$0789:  00 00 01    BRSET 0,PORT_A_DDR,$078D
$078C:  4C          INC A
$078D:  0E 00 01    BRSET 7,PORT_A_DDR,$0791
$0790:  4C          INC A
$0791:  B7 4C       STA A,$4C
$0793:  CD 04 E8    JSR CMD_MOVE                   ; → CMD_MOVE
$0796:  13 40       BCLR 1,motor_state
$0798:  09 41 2D    BRCLR 4,pen_flags,$07C8
$079B:  A6 20       LDA A,#$20
$079D:  B7 4B       STA A,$4B
$079F:  B6 4B       LDA A,$4B
$07A1:  B7 48       STA A,char_offset
$07A3:  CD 02 DB    JSR CHAR_DISPATCH              ; → CHAR_DISPATCH
$07A6:  3C 4B       INC $4B
$07A8:  0C 00 09    BRSET 6,PORT_A_DDR,$07B4
$07AB:  B6 4B       LDA A,$4B
$07AD:  A4 0F       AND A,#$0F
$07AF:  26 03       BNE $07B4
$07B1:  CD 04 66    JSR CMD_SIZE                   ; → CMD_SIZE
$07B4:  B6 4B       LDA A,$4B
$07B6:  A1 80       CMP A,#$80
$07B8:  26 E5       BNE $079F
$07BA:  CD 03 65    JSR DRAW_CHAR                  ; → DRAW_CHAR
$07BD:  CD 03 65    JSR DRAW_CHAR                  ; → DRAW_CHAR
$07C0:  0C 00 05    BRSET 6,PORT_A_DDR,$07C8
$07C3:  3F 5E       CLR pen_state
$07C5:  CD 04 6D    JSR CMD_AXIS                   ; → CMD_AXIS
$07C8:  20 01       BRA IRQ_HANDLER                ; → IRQ_HANDLER
$07CA:  00 CD 05    BRSET 0,$CD,$07D2
$07CD:  13 CD       BCLR 1,$CD
$07CF:  05 F1 B6    BRCLR 2,$F1,$0788
$07D2:  48          ASL A
$07D3:  A1 11       CMP A,#$11
$07D5:  26 05       BNE $07DC
$07D7:  CD 05 AC    JSR CMD_TEXT                   ; → CMD_TEXT
$07DA:  20 F2       BRA $07CE
$07DC:  A1 12       CMP A,#$12
$07DE:  26 04       BNE $07E4
$07E0:  10 41       BSET 0,pen_flags
$07E2:  20 EA       BRA $07CE
$07E4:  B1 00       CMP A,PORT_A_DDR
$07E6:  27 E3       BEQ IRQ_HANDLER                ; → IRQ_HANDLER
$07E8:  01 41 03    BRCLR 0,pen_flags,$07EE
$07EB:  CC 08 6F    JMP $086F
$07EE:  B6 48       LDA A,char_offset
$07F0:  27 D9       BEQ IRQ_HANDLER                ; → IRQ_HANDLER
$07F2:  A1 0D       CMP A,#$0D
$07F4:  27 66       BEQ $085C
$07F6:  A1 0A       CMP A,#$0A
$07F8:  27 2F       BEQ $0829
$07FA:  A1 0B       CMP A,#$0B
$07FC:  27 36       BEQ $0834
$07FE:  A1 08       CMP A,#$08
$0800:  27 3D       BEQ $083F
$0802:  A1 1D       CMP A,#$1D
$0804:  26 05       BNE $080B
$0806:  CD 04 66    JSR CMD_SIZE                   ; → CMD_SIZE
$0809:  20 19       BRA $0824
$080B:  A4 F0       AND A,#$F0
$080D:  44          LSR A
$080E:  44          LSR A
$080F:  44          LSR A
$0810:  44          LSR A
$0811:  A1 02       CMP A,#$02
$0813:  2B 0F       BMI $0824
$0815:  A1 0E       CMP A,#$0E
$0817:  2A 0B       BPL $0824
$0819:  A1 08       CMP A,#$08
$081B:  2B 04       BMI $0821
$081D:  A1 0A       CMP A,#$0A
$081F:  2B 03       BMI $0824
$0821:  CD 02 DB    JSR CHAR_DISPATCH              ; → CHAR_DISPATCH
$0824:  CD 05 F1    JSR CMD_LINEFEED               ; → CMD_LINEFEED
$0827:  20 C5       BRA $07EE
$0829:  3F 26       CLR state_flags
$082B:  A6 FF       LDA A,#$FF
$082D:  B7 2E       STA A,serial_byte
$082F:  4F          CLR A
$0830:  AE F4       LDX A,#$F4
$0832:  20 1F       BRA $0853
$0834:  3F 26       CLR state_flags
$0836:  A6 01       LDA A,#$01
$0838:  B7 2E       STA A,serial_byte
$083A:  4F          CLR A
$083B:  AE 0C       LDX A,#$0C
$083D:  20 14       BRA $0853
$083F:  B6 20       LDA A,char_x_lo
$0841:  26 07       BNE $084A
$0843:  B6 21       LDA A,char_x_hi
$0845:  26 03       BNE $084A
$0847:  CC 07 CB    JMP IRQ_HANDLER                ; → IRQ_HANDLER
$084A:  A6 FF       LDA A,#$FF
$084C:  B7 26       STA A,state_flags
$084E:  3F 2E       CLR serial_byte
$0850:  A6 FA       LDA A,#$FA
$0852:  5F          CLR X
$0853:  B7 3C       STA A,y_step_idx
$0855:  BF 3E       STX x_step_idx
$0857:  CD 02 B1    JSR SERIAL_IN                  ; → SERIAL_IN
$085A:  20 0B       BRA $0867
$085C:  03 00 05    BRCLR 1,PORT_A_DDR,$0864
$085F:  CD 03 74    JSR NEXT_CHAR                  ; → NEXT_CHAR
$0862:  20 03       BRA $0867
$0864:  CD 03 65    JSR DRAW_CHAR                  ; → DRAW_CHAR
$0867:  3F 28       CLR param1
$0869:  3F 29       CLR param2
$086B:  CC 07 CB    JMP IRQ_HANDLER                ; → IRQ_HANDLER
$086E:  F0          SUB A,,X
$086F:  B6 48       LDA A,char_offset
$0871:  A4 F0       AND A,#$F0
$0873:  A1 40       CMP A,#$40
$0875:  27 06       BEQ $087D
$0877:  A1 50       CMP A,#$50
$0879:  27 02       BEQ $087D
$087B:  20 0C       BRA $0889
$087D:  B6 48       LDA A,char_offset
$087F:  A0 40       SUB A,#$40
$0881:  97          TAX
$0882:  D6 09 C7    LDA A,$09C7,X
$0885:  97          TAX
$0886:  DC 08 89    JMP $0889,X
$0889:  CC 07 CB    JMP IRQ_HANDLER                ; → IRQ_HANDLER
$088C:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$088F:  B6 38       LDA A,$38
$0891:  A4 0F       AND A,#$0F
$0893:  B7 4A       STA A,$4A
$0895:  B7 4B       STA A,$4B
$0897:  20 F0       BRA $0889
$0899:  CD 05 AC    JSR CMD_TEXT                   ; → CMD_TEXT
$089C:  3F 22       CLR char_y_lo
$089E:  3F 23       CLR char_y_hi
$08A0:  3F 2A       CLR cursor_x_lo
$08A2:  3F 2B       CLR cursor_x_hi
$08A4:  CD 03 93    JSR MOTOR_STEP                 ; → MOTOR_STEP
$08A7:  20 E0       BRA $0889
$08A9:  A6 30       LDA A,#$30
$08AB:  B7 50       STA A,size_s
$08AD:  B7 52       STA A,scale_mult
$08AF:  A6 20       LDA A,#$20
$08B1:  B7 51       STA A,mode_flags
$08B3:  CD 01 17    JSR $0117
$08B6:  A6 32       LDA A,#$32
$08B8:  B7 50       STA A,size_s
$08BA:  B7 52       STA A,scale_mult
$08BC:  A6 20       LDA A,#$20
$08BE:  B7 51       STA A,mode_flags
$08C0:  CD 01 17    JSR $0117
$08C3:  3F 20       CLR char_x_lo
$08C5:  3F 21       CLR char_x_hi
$08C7:  3F 28       CLR param1
$08C9:  3F 29       CLR param2
$08CB:  20 BC       BRA $0889
$08CD:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$08D0:  B6 38       LDA A,$38
$08D2:  A4 3F       AND A,#$3F
$08D4:  B7 4C       STA A,$4C
$08D6:  20 B1       BRA $0889
$08D8:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$08DB:  B6 38       LDA A,$38
$08DD:  A4 03       AND A,#$03
$08DF:  B7 4E       STA A,$4E
$08E1:  20 A6       BRA $0889
$08E3:  CD 05 F1    JSR CMD_LINEFEED               ; → CMD_LINEFEED
$08E6:  B6 48       LDA A,char_offset
$08E8:  27 F9       BEQ $08E3
$08EA:  A1 0D       CMP A,#$0D
$08EC:  27 9B       BEQ $0889
$08EE:  A4 F0       AND A,#$F0
$08F0:  44          LSR A
$08F1:  44          LSR A
$08F2:  44          LSR A
$08F3:  44          LSR A
$08F4:  A1 02       CMP A,#$02
$08F6:  2B EB       BMI $08E3
$08F8:  A1 0E       CMP A,#$0E
$08FA:  2A E7       BPL $08E3
$08FC:  A1 08       CMP A,#$08
$08FE:  2B 04       BMI $0904
$0900:  A1 0A       CMP A,#$0A
$0902:  2B DF       BMI $08E3
$0904:  CD 02 DB    JSR CHAR_DISPATCH              ; → CHAR_DISPATCH
$0907:  20 DA       BRA $08E3
$0909:  AE 30       LDX A,#$30
$090B:  20 09       BRA $0916
$090D:  AE 10       LDX A,#$10
$090F:  20 05       BRA $0916
$0911:  AE 20       LDX A,#$20
$0913:  20 01       BRA $0916
$0915:  5F          CLR X
$0916:  BF 58       STX y_accum_lo
$0918:  B6 40       LDA A,motor_state
$091A:  A4 CF       AND A,#$CF
$091C:  BA 58       ORA A,y_accum_lo
$091E:  B7 40       STA A,motor_state
$0920:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$0923:  B6 38       LDA A,$38
$0925:  B7 22       STA A,char_y_lo
$0927:  B6 39       LDA A,$39
$0929:  B7 23       STA A,char_y_hi
$092B:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$092E:  B6 38       LDA A,$38
$0930:  B7 2A       STA A,cursor_x_lo
$0932:  B6 39       LDA A,$39
$0934:  B7 2B       STA A,cursor_x_hi
$0936:  0A 40 05    BRSET 5,motor_state,$093E
$0939:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$093C:  20 03       BRA $0941
$093E:  CD 03 93    JSR MOTOR_STEP                 ; → MOTOR_STEP
$0941:  05 41 D4    BRCLR 2,pen_flags,$0918
$0944:  20 10       BRA $0956
$0946:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$0949:  B6 38       LDA A,$38
$094B:  A4 03       AND A,#$03
$094D:  B7 5E       STA A,pen_state
$094F:  B1 5F       CMP A,color_sel
$0951:  27 03       BEQ $0956
$0953:  CD 04 6D    JSR CMD_AXIS                   ; → CMD_AXIS
$0956:  CC 07 CB    JMP IRQ_HANDLER                ; → IRQ_HANDLER
$0959:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$095C:  B6 38       LDA A,$38
$095E:  B7 58       STA A,y_accum_lo
$0960:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$0963:  B6 38       LDA A,$38
$0965:  B7 5C       STA A,phase_x
$0967:  B6 39       LDA A,$39
$0969:  B7 5D       STA A,phase_y
$096B:  CD 06 26    JSR CMD_CR                     ; → CMD_CR
$096E:  3F 4A       CLR $4A
$0970:  B6 58       LDA A,y_accum_lo
$0972:  27 06       BEQ $097A
$0974:  A6 22       LDA A,#$22
$0976:  AE 2A       LDX A,#$2A
$0978:  20 04       BRA $097E
$097A:  A6 2A       LDA A,#$2A
$097C:  AE 22       LDX A,#$22
$097E:  B7 58       STA A,y_accum_lo
$0980:  BF 3A       STX $3A
$0982:  B6 38       LDA A,$38
$0984:  26 03       BNE $0989
$0986:  CC 07 CB    JMP IRQ_HANDLER                ; → IRQ_HANDLER
$0989:  3A 38       DEC $38
$098B:  B6 5C       LDA A,phase_x
$098D:  BE 58       LDX y_accum_lo
$098F:  F7          STA A,,X
$0990:  B6 5D       LDA A,phase_y
$0992:  5C          INC X
$0993:  F7          STA A,,X
$0994:  BE 3A       LDX $3A
$0996:  7F 5C 7F    CLR $5C7F
$0999:  18 40       BSET 4,motor_state
$099B:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$099E:  BE 58       LDX y_accum_lo
$09A0:  7F 5C 7F    CLR $5C7F
$09A3:  BE 3A       LDX $3A
$09A5:  A6 FD       LDA A,#$FD
$09A7:  F7          STA A,,X
$09A8:  5C          INC X
$09A9:  A6 FF       LDA A,#$FF
$09AB:  F7          STA A,,X
$09AC:  18 40       BSET 4,motor_state
$09AE:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$09B1:  18 40       BSET 4,motor_state
$09B3:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$09B6:  18 40       BSET 4,motor_state
$09B8:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$09BB:  BE 3A       LDX $3A
$09BD:  CD 03 8A    JSR MOTOR_Y                    ; → MOTOR_Y
$09C0:  18 40       BSET 4,motor_state
$09C2:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$09C5:  20 BB       BRA $0982
$09C7:  00 10 00    BRSET 0,$10,$09CA
$09CA:  BD 80       JSR $80
$09CC:  00 00 00    BRSET 0,PORT_A_DDR,$09CF
$09CF:  13 20       BCLR 1,char_x_lo
$09D1:  84          DB $84H
$09D2:  00 03 88    BRSET 0,PORT_B,$095D
$09D5:  00 00 5A    BRSET 0,PORT_A_DDR,$0A32
$09D8:  4F          CLR A
$09D9:  8C          DB $8CH
$09DA:  44          LSR A
$09DB:  00 00 00    BRSET 0,PORT_A_DDR,$09DE
$09DE:  00 D0 00    BRSET 0,$D0,$09E1
$09E1:  00 00 00    BRSET 0,PORT_A_DDR,$09E4
$09E4:  00 00 00    BRSET 0,PORT_A_DDR,TIMER_OVF_HANDLER ; → TIMER_OVF_HANDLER
; ══════════════════════════════════════════════════════════════════════
; TIMER OVERFLOW HANDLER  ($9E7-$AA7)
;
; Fired periodically by the HD6805V1 internal timer.
; Handles: serial timeout watchdog, motor phase timing (acceleration
; ramp for Alps mechanism), pen solenoid PWM duty cycle.
; ══════════════════════════════════════════════════════════════════════
TIMER_OVF_HANDLER:    ; $09E7
$09E7:  05 02 20    BRCLR 2,PORT_B_DDR,$0A0A
$09EA:  18 02       BSET 4,PORT_B_DDR
$09EC:  3C 57       INC x_accum_hi
$09EE:  B6 57       LDA A,x_accum_hi
$09F0:  BB 56       ADD A,x_accum_lo
$09F2:  A4 07       AND A,#$07
$09F4:  97          TAX
$09F5:  B6 03       LDA A,PORT_B
$09F7:  E7 60       STA A,$60,X
$09F9:  1D 02       BCLR 6,PORT_B_DDR
$09FB:  B6 57       LDA A,x_accum_hi
$09FD:  1C 02       BSET 6,PORT_B_DDR
$09FF:  A1 05       CMP A,#$05
$0A01:  2A 06       BPL $0A09
$0A03:  1B 02       BCLR 5,PORT_B_DDR
$0A05:  19 02       BCLR 4,PORT_B_DDR
$0A07:  1A 02       BSET 5,PORT_B_DDR
$0A09:  80          RTI
$0A0A:  1A 41       BSET 5,pen_flags
$0A0C:  A6 02       LDA A,#$02
$0A0E:  B7 59       STA A,y_accum_hi
$0A10:  A6 34       LDA A,#$34
$0A12:  B7 08       STA A,TIMER_CTRL
$0A14:  1F 09       BCLR 7,TIMER_STATUS
$0A16:  3F 5A       CLR timer_ctr
$0A18:  A6 0A       LDA A,#$0A
$0A1A:  B7 5B       STA A,pwm_duty
$0A1C:  1E 41       BSET 7,pen_flags
$0A1E:  80          RTI
$0A1F:  A6 20       LDA A,#$20
$0A21:  1F 09       BCLR 7,TIMER_STATUS
$0A23:  B7 08       STA A,TIMER_CTRL
$0A25:  3A 55       DEC loop_ctr
$0A27:  0A 41 01    BRSET 5,pen_flags,$0A2B
$0A2A:  80          RTI
$0A2B:  3A 59       DEC y_accum_hi
$0A2D:  27 01       BEQ $0A30
$0A2F:  80          RTI
$0A30:  0E 41 44    BRSET 7,pen_flags,$0A77
$0A33:  0C 41 14    BRSET 6,pen_flags,$0A4A
$0A36:  18 02       BSET 4,PORT_B_DDR
$0A38:  34 5A       LSR timer_ctr
$0A3A:  B6 02       LDA A,PORT_B_DDR
$0A3C:  A4 80       AND A,#$80
$0A3E:  BA 5A       ORA A,timer_ctr
$0A40:  B7 5A       STA A,timer_ctr
$0A42:  B6 5B       LDA A,pwm_duty
$0A44:  A1 02       CMP A,#$02
$0A46:  26 02       BNE $0A4A
$0A48:  1C 41       BSET 6,pen_flags
$0A4A:  A6 06       LDA A,#$06
$0A4C:  B7 59       STA A,y_accum_hi
$0A4E:  3A 5B       DEC pwm_duty
$0A50:  27 01       BEQ $0A53
$0A52:  80          RTI
$0A53:  3C 57       INC x_accum_hi
$0A55:  B6 57       LDA A,x_accum_hi
$0A57:  BB 56       ADD A,x_accum_lo
$0A59:  A4 07       AND A,#$07
$0A5B:  97          TAX
$0A5C:  B6 5A       LDA A,timer_ctr
$0A5E:  B4 03       AND A,PORT_B
$0A60:  E7 60       STA A,$60,X
$0A62:  1B 41       BCLR 5,pen_flags
$0A64:  1D 41       BCLR 6,pen_flags
$0A66:  1D 02       BCLR 6,PORT_B_DDR
$0A68:  B6 57       LDA A,x_accum_hi
$0A6A:  1C 02       BSET 6,PORT_B_DDR
$0A6C:  A1 05       CMP A,#$05
$0A6E:  2A 06       BPL $0A76
$0A70:  1B 02       BCLR 5,PORT_B_DDR
$0A72:  19 02       BCLR 4,PORT_B_DDR
$0A74:  1A 02       BSET 5,PORT_B_DDR
$0A76:  80          RTI
$0A77:  0F 02 04    BRCLR 7,PORT_B_DDR,$0A7E
$0A7A:  1F 41       BCLR 7,pen_flags
$0A7C:  20 E4       BRA $0A62
$0A7E:  1F 41       BCLR 7,pen_flags
$0A80:  20 B1       BRA $0A33
$0A82:  B4 03       AND A,PORT_B
$0A84:  E7 60       STA A,$60,X
$0A86:  1B 41       BCLR 5,pen_flags
$0A88:  1D 41       BCLR 6,pen_flags
$0A8A:  1D 02       BCLR 6,PORT_B_DDR
$0A8C:  B6 57       LDA A,x_accum_hi
$0A8E:  1C 02       BSET 6,PORT_B_DDR
$0A90:  A1 05       CMP A,#$05
$0A92:  2A 06       BPL $0A9A
$0A94:  1B 02       BCLR 5,PORT_B_DDR
$0A96:  19 02       BCLR 4,PORT_B_DDR
$0A98:  1A 02       BSET 5,PORT_B_DDR
$0A9A:  80          RTI
; $0A9B: [0xFF × 5]  (blank ROM)
CHAR_LOOKUP_SETUP:    ; $0AA0
$0AA0:  AE 22       LDX A,#$22
$0AA2:  CD 03 8A    JSR MOTOR_Y                    ; → MOTOR_Y
$0AA5:  CC 03 AD    JMP PENDOWN                    ; → PENDOWN
CHAR_BYTE_READ:    ; $0AA8
$0AA8:  B6 5F       LDA A,color_sel
$0AAA:  4C          INC A
$0AAB:  A4 03       AND A,#$03
$0AAD:  B7 5E       STA A,pen_state
$0AAF:  CC 04 75    JMP CMD_DRAW                   ; → CMD_DRAW
$0AB2:  B7 22       STA A,char_y_lo
$0AB4:  3F 23       CLR char_y_hi
$0AB6:  3F 2A       CLR cursor_x_lo
$0AB8:  3F 2B       CLR cursor_x_hi
$0ABA:  CD 03 AD    JSR PENDOWN                    ; → PENDOWN
$0ABD:  BC          DB $BCH
$0ABE:  B0 FF       SUB A,$FF
; ══════════════════════════════════════════════════════════════════════
; CHARACTER PAGE TABLE  ($0AC0-$0B5F)
;
; 160 × 1-byte entries.  Entry i = page number (0-3) of the
; stroke data for character (0x20 + i).
; Pages map to: 0→$0C00, 1→$0D00, 2→$0E00, 3→$0F00.
; ══════════════════════════════════════════════════════════════════════
$0AC0:  DB  $00    ; char ' ' (0x20) → page 0 (base $0C00)
$0AC1:  DB  $00    ; char '!' (0x21) → page 0 (base $0C00)
$0AC2:  DB  $00    ; char '"' (0x22) → page 0 (base $0C00)
$0AC3:  DB  $00    ; char '#' (0x23) → page 0 (base $0C00)
$0AC4:  DB  $00    ; char '$' (0x24) → page 0 (base $0C00)
$0AC5:  DB  $00    ; char '%' (0x25) → page 0 (base $0C00)
$0AC6:  DB  $00    ; char '&' (0x26) → page 0 (base $0C00)
$0AC7:  DB  $00    ; char ''' (0x27) → page 0 (base $0C00)
$0AC8:  DB  $00    ; char '(' (0x28) → page 0 (base $0C00)
$0AC9:  DB  $00    ; char ')' (0x29) → page 0 (base $0C00)
$0ACA:  DB  $00    ; char '*' (0x2A) → page 0 (base $0C00)
$0ACB:  DB  $00    ; char '+' (0x2B) → page 0 (base $0C00)
$0ACC:  DB  $00    ; char ',' (0x2C) → page 0 (base $0C00)
$0ACD:  DB  $00    ; char '-' (0x2D) → page 0 (base $0C00)
$0ACE:  DB  $00    ; char '.' (0x2E) → page 0 (base $0C00)
$0ACF:  DB  $00    ; char '/' (0x2F) → page 0 (base $0C00)
$0AD0:  DB  $00    ; char '0' (0x30) → page 0 (base $0C00)
$0AD1:  DB  $00    ; char '1' (0x31) → page 0 (base $0C00)
$0AD2:  DB  $00    ; char '2' (0x32) → page 0 (base $0C00)
$0AD3:  DB  $00    ; char '3' (0x33) → page 0 (base $0C00)
$0AD4:  DB  $00    ; char '4' (0x34) → page 0 (base $0C00)
$0AD5:  DB  $00    ; char '5' (0x35) → page 0 (base $0C00)
$0AD6:  DB  $00    ; char '6' (0x36) → page 0 (base $0C00)
$0AD7:  DB  $00    ; char '7' (0x37) → page 0 (base $0C00)
$0AD8:  DB  $00    ; char '8' (0x38) → page 0 (base $0C00)
$0AD9:  DB  $00    ; char '9' (0x39) → page 0 (base $0C00)
$0ADA:  DB  $00    ; char ':' (0x3A) → page 0 (base $0C00)
$0ADB:  DB  $00    ; char ';' (0x3B) → page 0 (base $0C00)
$0ADC:  DB  $00    ; char '<' (0x3C) → page 0 (base $0C00)
$0ADD:  DB  $00    ; char '=' (0x3D) → page 0 (base $0C00)
$0ADE:  DB  $00    ; char '>' (0x3E) → page 0 (base $0C00)
$0ADF:  DB  $00    ; char '?' (0x3F) → page 0 (base $0C00)
$0AE0:  DB  $00    ; char '@' (0x40) → page 0 (base $0C00)
$0AE1:  DB  $00    ; char 'A' (0x41) → page 0 (base $0C00)
$0AE2:  DB  $00    ; char 'B' (0x42) → page 0 (base $0C00)
$0AE3:  DB  $00    ; char 'C' (0x43) → page 0 (base $0C00)
$0AE4:  DB  $00    ; char 'D' (0x44) → page 0 (base $0C00)
$0AE5:  DB  $00    ; char 'E' (0x45) → page 0 (base $0C00)
$0AE6:  DB  $00    ; char 'F' (0x46) → page 0 (base $0C00)
$0AE7:  DB  $00    ; char 'G' (0x47) → page 0 (base $0C00)
$0AE8:  DB  $00    ; char 'H' (0x48) → page 0 (base $0C00)
$0AE9:  DB  $01    ; char 'I' (0x49) → page 1 (base $0D00)
$0AEA:  DB  $01    ; char 'J' (0x4A) → page 1 (base $0D00)
$0AEB:  DB  $01    ; char 'K' (0x4B) → page 1 (base $0D00)
$0AEC:  DB  $01    ; char 'L' (0x4C) → page 1 (base $0D00)
$0AED:  DB  $01    ; char 'M' (0x4D) → page 1 (base $0D00)
$0AEE:  DB  $01    ; char 'N' (0x4E) → page 1 (base $0D00)
$0AEF:  DB  $01    ; char 'O' (0x4F) → page 1 (base $0D00)
$0AF0:  DB  $01    ; char 'P' (0x50) → page 1 (base $0D00)
$0AF1:  DB  $01    ; char 'Q' (0x51) → page 1 (base $0D00)
$0AF2:  DB  $01    ; char 'R' (0x52) → page 1 (base $0D00)
$0AF3:  DB  $01    ; char 'S' (0x53) → page 1 (base $0D00)
$0AF4:  DB  $01    ; char 'T' (0x54) → page 1 (base $0D00)
$0AF5:  DB  $01    ; char 'U' (0x55) → page 1 (base $0D00)
$0AF6:  DB  $01    ; char 'V' (0x56) → page 1 (base $0D00)
$0AF7:  DB  $01    ; char 'W' (0x57) → page 1 (base $0D00)
$0AF8:  DB  $01    ; char 'X' (0x58) → page 1 (base $0D00)
$0AF9:  DB  $01    ; char 'Y' (0x59) → page 1 (base $0D00)
$0AFA:  DB  $01    ; char 'Z' (0x5A) → page 1 (base $0D00)
$0AFB:  DB  $01    ; char '[' (0x5B) → page 1 (base $0D00)
$0AFC:  DB  $01    ; char '\' (0x5C) → page 1 (base $0D00)
$0AFD:  DB  $01    ; char ']' (0x5D) → page 1 (base $0D00)
$0AFE:  DB  $01    ; char '^' (0x5E) → page 1 (base $0D00)
$0AFF:  DB  $01    ; char '_' (0x5F) → page 1 (base $0D00)
$0B00:  DB  $01    ; char '`' (0x60) → page 1 (base $0D00)
$0B01:  DB  $01    ; char 'a' (0x61) → page 1 (base $0D00)
$0B02:  DB  $01    ; char 'b' (0x62) → page 1 (base $0D00)
$0B03:  DB  $01    ; char 'c' (0x63) → page 1 (base $0D00)
$0B04:  DB  $01    ; char 'd' (0x64) → page 1 (base $0D00)
$0B05:  DB  $01    ; char 'e' (0x65) → page 1 (base $0D00)
$0B06:  DB  $01    ; char 'f' (0x66) → page 1 (base $0D00)
$0B07:  DB  $01    ; char 'g' (0x67) → page 1 (base $0D00)
$0B08:  DB  $01    ; char 'h' (0x68) → page 1 (base $0D00)
$0B09:  DB  $01    ; char 'i' (0x69) → page 1 (base $0D00)
$0B0A:  DB  $01    ; char 'j' (0x6A) → page 1 (base $0D00)
$0B0B:  DB  $01    ; char 'k' (0x6B) → page 1 (base $0D00)
$0B0C:  DB  $01    ; char 'l' (0x6C) → page 1 (base $0D00)
$0B0D:  DB  $01    ; char 'm' (0x6D) → page 1 (base $0D00)
$0B0E:  DB  $01    ; char 'n' (0x6E) → page 1 (base $0D00)
$0B0F:  DB  $01    ; char 'o' (0x6F) → page 1 (base $0D00)
$0B10:  DB  $01    ; char 'p' (0x70) → page 1 (base $0D00)
$0B11:  DB  $01    ; char 'q' (0x71) → page 1 (base $0D00)
$0B12:  DB  $01    ; char 'r' (0x72) → page 1 (base $0D00)
$0B13:  DB  $01    ; char 's' (0x73) → page 1 (base $0D00)
$0B14:  DB  $01    ; char 't' (0x74) → page 1 (base $0D00)
$0B15:  DB  $01    ; char 'u' (0x75) → page 1 (base $0D00)
$0B16:  DB  $01    ; char 'v' (0x76) → page 1 (base $0D00)
$0B17:  DB  $01    ; char 'w' (0x77) → page 1 (base $0D00)
$0B18:  DB  $01    ; char 'x' (0x78) → page 1 (base $0D00)
$0B19:  DB  $01    ; char 'y' (0x79) → page 1 (base $0D00)
$0B1A:  DB  $02    ; char 'z' (0x7A) → page 2 (base $0E00)
$0B1B:  DB  $02    ; char '{' (0x7B) → page 2 (base $0E00)
$0B1C:  DB  $02    ; char '|' (0x7C) → page 2 (base $0E00)
$0B1D:  DB  $02    ; char '}' (0x7D) → page 2 (base $0E00)
$0B1E:  DB  $02    ; char '~' (0x7E) → page 2 (base $0E00)
$0B1F:  DB  $02    ; char '0x7F' (0x7F) → page 2 (base $0E00)
$0B20:  DB  $02    ; char '0x80' (0x80) → page 2 (base $0E00)
$0B21:  DB  $02    ; char '0x81' (0x81) → page 2 (base $0E00)
$0B22:  DB  $02    ; char '0x82' (0x82) → page 2 (base $0E00)
$0B23:  DB  $02    ; char '0x83' (0x83) → page 2 (base $0E00)
$0B24:  DB  $02    ; char '0x84' (0x84) → page 2 (base $0E00)
$0B25:  DB  $02    ; char '0x85' (0x85) → page 2 (base $0E00)
$0B26:  DB  $02    ; char '0x86' (0x86) → page 2 (base $0E00)
$0B27:  DB  $02    ; char '0x87' (0x87) → page 2 (base $0E00)
$0B28:  DB  $02    ; char '0x88' (0x88) → page 2 (base $0E00)
$0B29:  DB  $02    ; char '0x89' (0x89) → page 2 (base $0E00)
$0B2A:  DB  $02    ; char '0x8A' (0x8A) → page 2 (base $0E00)
$0B2B:  DB  $02    ; char '0x8B' (0x8B) → page 2 (base $0E00)
$0B2C:  DB  $02    ; char '0x8C' (0x8C) → page 2 (base $0E00)
$0B2D:  DB  $02    ; char '0x8D' (0x8D) → page 2 (base $0E00)
$0B2E:  DB  $02    ; char '0x8E' (0x8E) → page 2 (base $0E00)
$0B2F:  DB  $02    ; char '0x8F' (0x8F) → page 2 (base $0E00)
$0B30:  DB  $02    ; char '0x90' (0x90) → page 2 (base $0E00)
$0B31:  DB  $02    ; char '0x91' (0x91) → page 2 (base $0E00)
$0B32:  DB  $02    ; char '0x92' (0x92) → page 2 (base $0E00)
$0B33:  DB  $02    ; char '0x93' (0x93) → page 2 (base $0E00)
$0B34:  DB  $02    ; char '0x94' (0x94) → page 2 (base $0E00)
$0B35:  DB  $02    ; char '0x95' (0x95) → page 2 (base $0E00)
$0B36:  DB  $02    ; char '0x96' (0x96) → page 2 (base $0E00)
$0B37:  DB  $02    ; char '0x97' (0x97) → page 2 (base $0E00)
$0B38:  DB  $02    ; char '0x98' (0x98) → page 2 (base $0E00)
$0B39:  DB  $02    ; char '0x99' (0x99) → page 2 (base $0E00)
$0B3A:  DB  $02    ; char '0x9A' (0x9A) → page 2 (base $0E00)
$0B3B:  DB  $02    ; char '0x9B' (0x9B) → page 2 (base $0E00)
$0B3C:  DB  $02    ; char '0x9C' (0x9C) → page 2 (base $0E00)
$0B3D:  DB  $02    ; char '0x9D' (0x9D) → page 2 (base $0E00)
$0B3E:  DB  $02    ; char '0x9E' (0x9E) → page 2 (base $0E00)
$0B3F:  DB  $02    ; char '0x9F' (0x9F) → page 2 (base $0E00)
$0B40:  DB  $02    ; char '0xA0' (0xA0) → page 2 (base $0E00)
$0B41:  DB  $02    ; char '0xA1' (0xA1) → page 2 (base $0E00)
$0B42:  DB  $02    ; char '0xA2' (0xA2) → page 2 (base $0E00)
$0B43:  DB  $02    ; char '0xA3' (0xA3) → page 2 (base $0E00)
$0B44:  DB  $02    ; char '0xA4' (0xA4) → page 2 (base $0E00)
$0B45:  DB  $02    ; char '0xA5' (0xA5) → page 2 (base $0E00)
$0B46:  DB  $02    ; char '0xA6' (0xA6) → page 2 (base $0E00)
$0B47:  DB  $02    ; char '0xA7' (0xA7) → page 2 (base $0E00)
$0B48:  DB  $02    ; char '0xA8' (0xA8) → page 2 (base $0E00)
$0B49:  DB  $03    ; char '0xA9' (0xA9) → page 3 (base $0F00)
$0B4A:  DB  $03    ; char '0xAA' (0xAA) → page 3 (base $0F00)
$0B4B:  DB  $03    ; char '0xAB' (0xAB) → page 3 (base $0F00)
$0B4C:  DB  $03    ; char '0xAC' (0xAC) → page 3 (base $0F00)
$0B4D:  DB  $03    ; char '0xAD' (0xAD) → page 3 (base $0F00)
$0B4E:  DB  $03    ; char '0xAE' (0xAE) → page 3 (base $0F00)
$0B4F:  DB  $03    ; char '0xAF' (0xAF) → page 3 (base $0F00)
$0B50:  DB  $03    ; char '0xB0' (0xB0) → page 3 (base $0F00)
$0B51:  DB  $03    ; char '0xB1' (0xB1) → page 3 (base $0F00)
$0B52:  DB  $03    ; char '0xB2' (0xB2) → page 3 (base $0F00)
$0B53:  DB  $03    ; char '0xB3' (0xB3) → page 3 (base $0F00)
$0B54:  DB  $03    ; char '0xB4' (0xB4) → page 3 (base $0F00)
$0B55:  DB  $03    ; char '0xB5' (0xB5) → page 3 (base $0F00)
$0B56:  DB  $03    ; char '0xB6' (0xB6) → page 3 (base $0F00)
$0B57:  DB  $03    ; char '0xB7' (0xB7) → page 3 (base $0F00)
$0B58:  DB  $03    ; char '0xB8' (0xB8) → page 3 (base $0F00)
$0B59:  DB  $03    ; char '0xB9' (0xB9) → page 3 (base $0F00)
$0B5A:  DB  $03    ; char '0xBA' (0xBA) → page 3 (base $0F00)
$0B5B:  DB  $03    ; char '0xBB' (0xBB) → page 3 (base $0F00)
$0B5C:  DB  $03    ; char '0xBC' (0xBC) → page 3 (base $0F00)
$0B5D:  DB  $03    ; char '0xBD' (0xBD) → page 3 (base $0F00)
$0B5E:  DB  $03    ; char '0xBE' (0xBE) → page 3 (base $0F00)
$0B5F:  DB  $03    ; char '0xBF' (0xBF) → page 3 (base $0F00)
; ══════════════════════════════════════════════════════════════════════
; CHARACTER OFFSET TABLE  ($0B60-$0BFF)
;
; 160 × 1-byte entries.  Entry i = byte offset within its page
; where the stroke sequence for character (0x20 + i) begins.
; Combined with the page table above this gives the full address of
; each character's stroke data.
; ══════════════════════════════════════════════════════════════════════
$0B60:  DB  $00    ; char ' ' (0x20) → offset $0C00
$0B61:  DB  $01    ; char '!' (0x21) → offset $0C01
$0B62:  DB  $0B    ; char '"' (0x22) → offset $0C0B
$0B63:  DB  $0F    ; char '#' (0x23) → offset $0C0F
$0B64:  DB  $1A    ; char '$' (0x24) → offset $0C1A
$0B65:  DB  $24    ; char '%' (0x25) → offset $0C24
$0B66:  DB  $30    ; char '&' (0x26) → offset $0C30
$0B67:  DB  $37    ; char ''' (0x27) → offset $0C37
$0B68:  DB  $3C    ; char '(' (0x28) → offset $0C3C
$0B69:  DB  $40    ; char ')' (0x29) → offset $0C40
$0B6A:  DB  $44    ; char '*' (0x2A) → offset $0C44
$0B6B:  DB  $4A    ; char '+' (0x2B) → offset $0C4A
$0B6C:  DB  $4F    ; char ',' (0x2C) → offset $0C4F
$0B6D:  DB  $54    ; char '-' (0x2D) → offset $0C54
$0B6E:  DB  $56    ; char '.' (0x2E) → offset $0C56
$0B6F:  DB  $5B    ; char '/' (0x2F) → offset $0C5B
$0B70:  DB  $5D    ; char '0' (0x30) → offset $0C5D
$0B71:  DB  $64    ; char '1' (0x31) → offset $0C64
$0B72:  DB  $69    ; char '2' (0x32) → offset $0C69
$0B73:  DB  $6E    ; char '3' (0x33) → offset $0C6E
$0B74:  DB  $76    ; char '4' (0x34) → offset $0C76
$0B75:  DB  $7A    ; char '5' (0x35) → offset $0C7A
$0B76:  DB  $80    ; char '6' (0x36) → offset $0C80
$0B77:  DB  $87    ; char '7' (0x37) → offset $0C87
$0B78:  DB  $8A    ; char '8' (0x38) → offset $0C8A
$0B79:  DB  $94    ; char '9' (0x39) → offset $0C94
$0B7A:  DB  $9B    ; char ':' (0x3A) → offset $0C9B
$0B7B:  DB  $A5    ; char ';' (0x3B) → offset $0CA5
$0B7C:  DB  $AF    ; char '<' (0x3C) → offset $0CAF
$0B7D:  DB  $B2    ; char '=' (0x3D) → offset $0CB2
$0B7E:  DB  $B6    ; char '>' (0x3E) → offset $0CB6
$0B7F:  DB  $B9    ; char '?' (0x3F) → offset $0CB9
$0B80:  DB  $C1    ; char '@' (0x40) → offset $0CC1
$0B81:  DB  $CB    ; char 'A' (0x41) → offset $0CCB
$0B82:  DB  $D1    ; char 'B' (0x42) → offset $0CD1
$0B83:  DB  $D9    ; char 'C' (0x43) → offset $0CD9
$0B84:  DB  $DE    ; char 'D' (0x44) → offset $0CDE
$0B85:  DB  $E3    ; char 'E' (0x45) → offset $0CE3
$0B86:  DB  $EB    ; char 'F' (0x46) → offset $0CEB
$0B87:  DB  $F2    ; char 'G' (0x47) → offset $0CF2
$0B88:  DB  $FA    ; char 'H' (0x48) → offset $0CFA
$0B89:  DB  $00    ; char 'I' (0x49) → offset $0D00
$0B8A:  DB  $06    ; char 'J' (0x4A) → offset $0D06
$0B8B:  DB  $09    ; char 'K' (0x4B) → offset $0D09
$0B8C:  DB  $0F    ; char 'L' (0x4C) → offset $0D0F
$0B8D:  DB  $12    ; char 'M' (0x4D) → offset $0D12
$0B8E:  DB  $17    ; char 'N' (0x4E) → offset $0D17
$0B8F:  DB  $1C    ; char 'O' (0x4F) → offset $0D1C
$0B90:  DB  $22    ; char 'P' (0x50) → offset $0D22
$0B91:  DB  $27    ; char 'Q' (0x51) → offset $0D27
$0B92:  DB  $2E    ; char 'R' (0x52) → offset $0D2E
$0B93:  DB  $35    ; char 'S' (0x53) → offset $0D35
$0B94:  DB  $3C    ; char 'T' (0x54) → offset $0D3C
$0B95:  DB  $40    ; char 'U' (0x55) → offset $0D40
$0B96:  DB  $44    ; char 'V' (0x56) → offset $0D44
$0B97:  DB  $48    ; char 'W' (0x57) → offset $0D48
$0B98:  DB  $4E    ; char 'X' (0x58) → offset $0D4E
$0B99:  DB  $54    ; char 'Y' (0x59) → offset $0D54
$0B9A:  DB  $5C    ; char 'Z' (0x5A) → offset $0D5C
$0B9B:  DB  $65    ; char '[' (0x5B) → offset $0D65
$0B9C:  DB  $69    ; char '\' (0x5C) → offset $0D69
$0B9D:  DB  $6B    ; char ']' (0x5D) → offset $0D6B
$0B9E:  DB  $6F    ; char '^' (0x5E) → offset $0D6F
$0B9F:  DB  $72    ; char '_' (0x5F) → offset $0D72
$0BA0:  DB  $73    ; char '`' (0x60) → offset $0D73
$0BA1:  DB  $78    ; char 'a' (0x61) → offset $0D78
$0BA2:  DB  $80    ; char 'b' (0x62) → offset $0D80
$0BA3:  DB  $85    ; char 'c' (0x63) → offset $0D85
$0BA4:  DB  $8A    ; char 'd' (0x64) → offset $0D8A
$0BA5:  DB  $8F    ; char 'e' (0x65) → offset $0D8F
$0BA6:  DB  $95    ; char 'f' (0x66) → offset $0D95
$0BA7:  DB  $9C    ; char 'g' (0x67) → offset $0D9C
$0BA8:  DB  $A2    ; char 'h' (0x68) → offset $0DA2
$0BA9:  DB  $A7    ; char 'i' (0x69) → offset $0DA7
$0BAA:  DB  $AB    ; char 'j' (0x6A) → offset $0DAB
$0BAB:  DB  $B0    ; char 'k' (0x6B) → offset $0DB0
$0BAC:  DB  $B6    ; char 'l' (0x6C) → offset $0DB6
$0BAD:  DB  $B9    ; char 'm' (0x6D) → offset $0DB9
$0BAE:  DB  $C1    ; char 'n' (0x6E) → offset $0DC1
$0BAF:  DB  $C6    ; char 'o' (0x6F) → offset $0DC6
$0BB0:  DB  $CC    ; char 'p' (0x70) → offset $0DCC
$0BB1:  DB  $D0    ; char 'q' (0x71) → offset $0DD0
$0BB2:  DB  $D6    ; char 'r' (0x72) → offset $0DD6
$0BB3:  DB  $DB    ; char 's' (0x73) → offset $0DDB
$0BB4:  DB  $E2    ; char 't' (0x74) → offset $0DE2
$0BB5:  DB  $E9    ; char 'u' (0x75) → offset $0DE9
$0BB6:  DB  $ED    ; char 'v' (0x76) → offset $0DED
$0BB7:  DB  $F1    ; char 'w' (0x77) → offset $0DF1
$0BB8:  DB  $F8    ; char 'x' (0x78) → offset $0DF8
$0BB9:  DB  $FC    ; char 'y' (0x79) → offset $0DFC
$0BBA:  DB  $00    ; char 'z' (0x7A) → offset $0E00
$0BBB:  DB  $04    ; char '{' (0x7B) → offset $0E04
$0BBC:  DB  $0A    ; char '|' (0x7C) → offset $0E0A
$0BBD:  DB  $0E    ; char '}' (0x7D) → offset $0E0E
$0BBE:  DB  $14    ; char '~' (0x7E) → offset $0E14
$0BBF:  DB  $18    ; char '0x7F' (0x7F) → offset $0E18
$0BC0:  DB  $22    ; char '0x80' (0x80) → offset $0E22
$0BC1:  DB  $23    ; char '0x81' (0x81) → offset $0E23
$0BC2:  DB  $28    ; char '0x82' (0x82) → offset $0E28
$0BC3:  DB  $2B    ; char '0x83' (0x83) → offset $0E2B
$0BC4:  DB  $2E    ; char '0x84' (0x84) → offset $0E2E
$0BC5:  DB  $30    ; char '0x85' (0x85) → offset $0E30
$0BC6:  DB  $35    ; char '0x86' (0x86) → offset $0E35
$0BC7:  DB  $3A    ; char '0x87' (0x87) → offset $0E3A
$0BC8:  DB  $3F    ; char '0x88' (0x88) → offset $0E3F
$0BC9:  DB  $43    ; char '0x89' (0x89) → offset $0E43
$0BCA:  DB  $49    ; char '0x8A' (0x8A) → offset $0E49
$0BCB:  DB  $4F    ; char '0x8B' (0x8B) → offset $0E4F
$0BCC:  DB  $56    ; char '0x8C' (0x8C) → offset $0E56
$0BCD:  DB  $5B    ; char '0x8D' (0x8D) → offset $0E5B
$0BCE:  DB  $60    ; char '0x8E' (0x8E) → offset $0E60
$0BCF:  DB  $67    ; char '0x8F' (0x8F) → offset $0E67
$0BD0:  DB  $6E    ; char '0x90' (0x90) → offset $0E6E
$0BD1:  DB  $70    ; char '0x91' (0x91) → offset $0E70
$0BD2:  DB  $75    ; char '0x92' (0x92) → offset $0E75
$0BD3:  DB  $79    ; char '0x93' (0x93) → offset $0E79
$0BD4:  DB  $7F    ; char '0x94' (0x94) → offset $0E7F
$0BD5:  DB  $85    ; char '0x95' (0x95) → offset $0E85
$0BD6:  DB  $8C    ; char '0x96' (0x96) → offset $0E8C
$0BD7:  DB  $93    ; char '0x97' (0x97) → offset $0E93
$0BD8:  DB  $99    ; char '0x98' (0x98) → offset $0E99
$0BD9:  DB  $9E    ; char '0x99' (0x99) → offset $0E9E
$0BDA:  DB  $A5    ; char '0x9A' (0x9A) → offset $0EA5
$0BDB:  DB  $A9    ; char '0x9B' (0x9B) → offset $0EA9
$0BDC:  DB  $B1    ; char '0x9C' (0x9C) → offset $0EB1
$0BDD:  DB  $B8    ; char '0x9D' (0x9D) → offset $0EB8
$0BDE:  DB  $BE    ; char '0x9E' (0x9E) → offset $0EBE
$0BDF:  DB  $C5    ; char '0x9F' (0x9F) → offset $0EC5
$0BE0:  DB  $CA    ; char '0xA0' (0xA0) → offset $0ECA
$0BE1:  DB  $D2    ; char '0xA1' (0xA1) → offset $0ED2
$0BE2:  DB  $D8    ; char '0xA2' (0xA2) → offset $0ED8
$0BE3:  DB  $DF    ; char '0xA3' (0xA3) → offset $0EDF
$0BE4:  DB  $E5    ; char '0xA4' (0xA4) → offset $0EE5
$0BE5:  DB  $E9    ; char '0xA5' (0xA5) → offset $0EE9
$0BE6:  DB  $EE    ; char '0xA6' (0xA6) → offset $0EEE
$0BE7:  DB  $F2    ; char '0xA7' (0xA7) → offset $0EF2
$0BE8:  DB  $F7    ; char '0xA8' (0xA8) → offset $0EF7
$0BE9:  DB  $00    ; char '0xA9' (0xA9) → offset $0F00
$0BEA:  DB  $02    ; char '0xAA' (0xAA) → offset $0F02
$0BEB:  DB  $06    ; char '0xAB' (0xAB) → offset $0F06
$0BEC:  DB  $0B    ; char '0xAC' (0xAC) → offset $0F0B
$0BED:  DB  $0F    ; char '0xAD' (0xAD) → offset $0F0F
$0BEE:  DB  $12    ; char '0xAE' (0xAE) → offset $0F12
$0BEF:  DB  $1A    ; char '0xAF' (0xAF) → offset $0F1A
$0BF0:  DB  $20    ; char '0xB0' (0xB0) → offset $0F20
$0BF1:  DB  $27    ; char '0xB1' (0xB1) → offset $0F27
$0BF2:  DB  $2C    ; char '0xB2' (0xB2) → offset $0F2C
$0BF3:  DB  $30    ; char '0xB3' (0xB3) → offset $0F30
$0BF4:  DB  $37    ; char '0xB4' (0xB4) → offset $0F37
$0BF5:  DB  $3C    ; char '0xB5' (0xB5) → offset $0F3C
$0BF6:  DB  $41    ; char '0xB6' (0xB6) → offset $0F41
$0BF7:  DB  $48    ; char '0xB7' (0xB7) → offset $0F48
$0BF8:  DB  $4E    ; char '0xB8' (0xB8) → offset $0F4E
$0BF9:  DB  $52    ; char '0xB9' (0xB9) → offset $0F52
$0BFA:  DB  $57    ; char '0xBA' (0xBA) → offset $0F57
$0BFB:  DB  $5A    ; char '0xBB' (0xBB) → offset $0F5A
$0BFC:  DB  $5F    ; char '0xBC' (0xBC) → offset $0F5F
$0BFD:  DB  $63    ; char '0xBD' (0xBD) → offset $0F63
$0BFE:  DB  $68    ; char '0xBE' (0xBE) → offset $0F68
$0BFF:  DB  $6C    ; char '0xBF' (0xBF) → offset $0F6C
; ══════════════════════════════════════════════════════════════════════
; CHARACTER STROKE DATA – PAGE 0  ($0C00-$0CFF)
; Characters: 0x20 (SPACE) through 0x48 ('H') – 41 characters
;
; Each character is a variable-length sequence of stroke bytes.
; Byte format:
;   bit7   : pen_up  (1 = move without drawing)
;   bit6-4 : Y magnitude index → table at $0F0 (Y_MAG[0..7])
;   bit3   : direction sign    (1 = negative direction)
;   bit2-0 : X magnitude index → table at $0E0 (X_MAG[0..7])
;
; Step magnitude tables (full size S=63):
;   X_MAG: 7A 58 14 14 3C 2B 09 09  (indices 0-7, in motor steps)
;   Y_MAG: 3C 3C 00 00 1E 1E 00 00  (indices 0-7, in motor steps)
;
; The last byte of each character always has bit7=1.
; ══════════════════════════════════════════════════════════════════════
; ── Character 0x20 ' ' ──────────────────────────────────
$0C00:  ; raw: E0
; stroke breakdown:
;   $E0  11100000  [PEN_UP] Y_idx=6(→  0steps) POS X_idx=0(→122steps) ← end-of-char
$0C00:  DB  $E0
; ── Character 0x21 '!' ──────────────────────────────────
$0C01:  ; raw: 11 39 2A 19 14 1F 3F 3C 2B 9C
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $14  00010100  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=4(→ 60steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $2B  00101011  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps)
;   $9C  10011100  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0C01:  DB  $11
$0C02:  DB  $39
$0C03:  DB  $2A
$0C04:  DB  $19
$0C05:  DB  $14
$0C06:  DB  $1F
$0C07:  DB  $3F
$0C08:  DB  $3C
$0C09:  DB  $2B
$0C0A:  DB  $9C
; ── Character 0x22 '"' ──────────────────────────────────
$0C0B:  ; raw: 15 1F 37 BD
; stroke breakdown:
;   $15  00010101  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=5(→ 43steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $37  00110111  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=7(→  9steps)
;   $BD  10111101  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0C0B:  DB  $15
$0C0C:  DB  $1F
$0C0D:  DB  $37
$0C0E:  DB  $BD
; ── Character 0x23 '#' ──────────────────────────────────
$0C0F:  ; raw: 03 4B 3B 39 3F 3D 4D 0D 1D 1F 99
; stroke breakdown:
;   $03  00000011  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=3(→ 20steps)
;   $4B  01001011  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=3(→ 20steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $99  10011001  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0C0F:  DB  $03
$0C10:  DB  $4B
$0C11:  DB  $3B
$0C12:  DB  $39
$0C13:  DB  $3F
$0C14:  DB  $3D
$0C15:  DB  $4D
$0C16:  DB  $0D
$0C17:  DB  $1D
$0C18:  DB  $1F
$0C19:  DB  $99
; ── Character 0x24 '$' ──────────────────────────────────
$0C1A:  ; raw: 03 3A 4B 1C 0D 3E 4D 2E 2F A9
; stroke breakdown:
;   $03  00000011  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=3(→ 20steps)
;   $3A  00111010  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps)
;   $4B  01001011  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=3(→ 20steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $2F  00101111  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps)
;   $A9  10101001  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0C1A:  DB  $03
$0C1B:  DB  $3A
$0C1C:  DB  $4B
$0C1D:  DB  $1C
$0C1E:  DB  $0D
$0C1F:  DB  $3E
$0C20:  DB  $4D
$0C21:  DB  $2E
$0C22:  DB  $2F
$0C23:  DB  $A9
; ── Character 0x25 '%' ──────────────────────────────────
$0C24:  ; raw: 02 4E 26 1E 1D 2D 2E 23 2A 3A 3B AB
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $26  00100110  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=6(→  9steps)
;   $1E  00011110  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=6(→  9steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $23  00100011  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=3(→ 20steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $3A  00111010  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $AB  10101011  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps) ← end-of-char
$0C24:  DB  $02
$0C25:  DB  $4E
$0C26:  DB  $26
$0C27:  DB  $1E
$0C28:  DB  $1D
$0C29:  DB  $2D
$0C2A:  DB  $2E
$0C2B:  DB  $23
$0C2C:  DB  $2A
$0C2D:  DB  $3A
$0C2E:  DB  $3B
$0C2F:  DB  $AB
; ── Character 0x26 '&' ──────────────────────────────────
$0C30:  ; raw: 43 19 0B 2E 1F 0D C9
; stroke breakdown:
;   $43  01000011  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=3(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0C30:  DB  $43
$0C31:  DB  $19
$0C32:  DB  $0B
$0C33:  DB  $2E
$0C34:  DB  $1F
$0C35:  DB  $0D
$0C36:  DB  $C9
; ── Character 0x27 ''' ──────────────────────────────────
$0C37:  ; raw: 14 2F 1F 1E AE
; stroke breakdown:
;   $14  00010100  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=4(→ 60steps)
;   $2F  00101111  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $1E  00011110  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=6(→  9steps)
;   $AE  10101110  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps) ← end-of-char
$0C37:  DB  $14
$0C38:  DB  $2F
$0C39:  DB  $1F
$0C3A:  DB  $1E
$0C3B:  DB  $AE
; ── Character 0x28 '(' ──────────────────────────────────
$0C3C:  ; raw: 31 29 1E BF
; stroke breakdown:
;   $31  00110001  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $1E  00011110  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=6(→  9steps)
;   $BF  10111111  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0C3C:  DB  $31
$0C3D:  DB  $29
$0C3E:  DB  $1E
$0C3F:  DB  $BF
; ── Character 0x29 ')' ──────────────────────────────────
$0C40:  ; raw: 11 29 3E 9F
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $9F  10011111  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps) ← end-of-char
$0C40:  DB  $11
$0C41:  DB  $29
$0C42:  DB  $3E
$0C43:  DB  $9F
; ── Character 0x2A '*' ──────────────────────────────────
$0C44:  ; raw: 02 4E 42 0E 27 A9
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $42  01000010  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=2(→ 20steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $27  00100111  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=7(→  9steps)
;   $A9  10101001  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0C44:  DB  $02
$0C45:  DB  $4E
$0C46:  DB  $42
$0C47:  DB  $0E
$0C48:  DB  $27
$0C49:  DB  $A9
; ── Character 0x2B '+' ──────────────────────────────────
$0C4A:  ; raw: 22 2E 2C 0C CC
; stroke breakdown:
;   $22  00100010  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=2(→ 20steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $CC  11001100  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0C4A:  DB  $22
$0C4B:  DB  $2E
$0C4C:  DB  $2C
$0C4D:  DB  $0C
$0C4E:  DB  $CC
; ── Character 0x2C ',' ──────────────────────────────────
$0C4F:  ; raw: 10 2B 1B 1A AA
; stroke breakdown:
;   $10  00010000  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=0(→122steps)
;   $2B  00101011  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps)
;   $1B  00011011  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=3(→ 20steps)
;   $1A  00011010  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=2(→ 20steps)
;   $AA  10101010  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0C4F:  DB  $10
$0C50:  DB  $2B
$0C51:  DB  $1B
$0C52:  DB  $1A
$0C53:  DB  $AA
; ── Character 0x2D '-' ──────────────────────────────────
$0C54:  ; raw: 04 CC
; stroke breakdown:
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $CC  11001100  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0C54:  DB  $04
$0C55:  DB  $CC
; ── Character 0x2E '.' ──────────────────────────────────
$0C56:  ; raw: 11 29 2A 1A 99
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $1A  00011010  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=2(→ 20steps)
;   $99  10011001  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0C56:  DB  $11
$0C57:  DB  $29
$0C58:  DB  $2A
$0C59:  DB  $1A
$0C5A:  DB  $99
; ── Character 0x2F '/' ──────────────────────────────────
$0C5B:  ; raw: 02 CE
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $CE  11001110  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps) ← end-of-char
$0C5B:  DB  $02
$0C5C:  DB  $CE
; ── Character 0x30 '0' ──────────────────────────────────
$0C5D:  ; raw: 02 0E 3F 4A 19 0A CE
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4A  01001010  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $CE  11001110  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps) ← end-of-char
$0C5D:  DB  $02
$0C5E:  DB  $0E
$0C5F:  DB  $3F
$0C60:  DB  $4A
$0C61:  DB  $19
$0C62:  DB  $0A
$0C63:  DB  $CE
; ── Character 0x31 '1' ──────────────────────────────────
$0C64:  ; raw: 11 39 29 2F 9E
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $2F  00101111  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps)
;   $9E  10011110  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=6(→  9steps) ← end-of-char
$0C64:  DB  $11
$0C65:  DB  $39
$0C66:  DB  $29
$0C67:  DB  $2F
$0C68:  DB  $9E
; ── Character 0x32 '2' ──────────────────────────────────
$0C69:  ; raw: 06 3F 4D 09 C9
; stroke breakdown:
;   $06  00000110  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=6(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0C69:  DB  $06
$0C6A:  DB  $3F
$0C6B:  DB  $4D
$0C6C:  DB  $09
$0C6D:  DB  $C9
; ── Character 0x33 '3' ──────────────────────────────────
$0C6E:  ; raw: 06 3F 4D 2C 3C 4A 19 8A
; stroke breakdown:
;   $06  00000110  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=6(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $4A  01001010  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $8A  10001010  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0C6E:  DB  $06
$0C6F:  DB  $3F
$0C70:  DB  $4D
$0C71:  DB  $2C
$0C72:  DB  $3C
$0C73:  DB  $4A
$0C74:  DB  $19
$0C75:  DB  $8A
; ── Character 0x34 '4' ──────────────────────────────────
$0C76:  ; raw: 31 3F 0B CB
; stroke breakdown:
;   $31  00110001  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=1(→ 88steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $CB  11001011  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=3(→ 20steps) ← end-of-char
$0C76:  DB  $31
$0C77:  DB  $3F
$0C78:  DB  $0B
$0C79:  DB  $CB
; ── Character 0x35 '5' ──────────────────────────────────
$0C7A:  ; raw: 02 39 4C 0D 0F CF
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $4C  01001100  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0C7A:  DB  $02
$0C7B:  DB  $39
$0C7C:  DB  $4C
$0C7D:  DB  $0D
$0C7E:  DB  $0F
$0C7F:  DB  $CF
; ── Character 0x36 '6' ──────────────────────────────────
$0C80:  ; raw: 04 3D 4A 19 0E 3F CE
; stroke breakdown:
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $4A  01001010  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $CE  11001110  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps) ← end-of-char
$0C80:  DB  $04
$0C81:  DB  $3D
$0C82:  DB  $4A
$0C83:  DB  $19
$0C84:  DB  $0E
$0C85:  DB  $3F
$0C86:  DB  $CE
; ── Character 0x37 '7' ──────────────────────────────────
$0C87:  ; raw: 01 4F 8F
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $8F  10001111  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps) ← end-of-char
$0C87:  DB  $01
$0C88:  DB  $4F
$0C89:  DB  $8F
; ── Character 0x38 '8' ──────────────────────────────────
$0C8A:  ; raw: 11 0B 1C 0E 3F 4D 1C 3C 4A 99
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $4A  01001010  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps)
;   $99  10011001  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0C8A:  DB  $11
$0C8B:  DB  $0B
$0C8C:  DB  $1C
$0C8D:  DB  $0E
$0C8E:  DB  $3F
$0C8F:  DB  $4D
$0C90:  DB  $1C
$0C91:  DB  $3C
$0C92:  DB  $4A
$0C93:  DB  $99
; ── Character 0x39 '9' ──────────────────────────────────
$0C94:  ; raw: 02 39 4E 1F 0D 3C CD
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $CD  11001101  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0C94:  DB  $02
$0C95:  DB  $39
$0C96:  DB  $4E
$0C97:  DB  $1F
$0C98:  DB  $0D
$0C99:  DB  $3C
$0C9A:  DB  $CD
; ── Character 0x3A ':' ──────────────────────────────────
$0C9B:  ; raw: 33 2B 2A 3A 3B 35 3E 2E 2D BD
; stroke breakdown:
;   $33  00110011  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=3(→ 20steps)
;   $2B  00101011  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $3A  00111010  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $35  00110101  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=5(→ 43steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $BD  10111101  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0C9B:  DB  $33
$0C9C:  DB  $2B
$0C9D:  DB  $2A
$0C9E:  DB  $3A
$0C9F:  DB  $3B
$0CA0:  DB  $35
$0CA1:  DB  $3E
$0CA2:  DB  $2E
$0CA3:  DB  $2D
$0CA4:  DB  $BD
; ── Character 0x3B ';' ──────────────────────────────────
$0CA5:  ; raw: 20 3B 2B 2A 3A 35 3E 2E 2D BD
; stroke breakdown:
;   $20  00100000  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=0(→122steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $2B  00101011  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $3A  00111010  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps)
;   $35  00110101  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=5(→ 43steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $BD  10111101  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0CA5:  DB  $20
$0CA6:  DB  $3B
$0CA7:  DB  $2B
$0CA8:  DB  $2A
$0CA9:  DB  $3A
$0CAA:  DB  $35
$0CAB:  DB  $3E
$0CAC:  DB  $2E
$0CAD:  DB  $2D
$0CAE:  DB  $BD
; ── Character 0x3C '<' ──────────────────────────────────
$0CAF:  ; raw: 41 1C CF
; stroke breakdown:
;   $41  01000001  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=1(→ 88steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0CAF:  DB  $41
$0CB0:  DB  $1C
$0CB1:  DB  $CF
; ── Character 0x3D '=' ──────────────────────────────────
$0CB2:  ; raw: 45 0D 03 CB
; stroke breakdown:
;   $45  01000101  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=5(→ 43steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $03  00000011  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=3(→ 20steps)
;   $CB  11001011  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=3(→ 20steps) ← end-of-char
$0CB2:  DB  $45
$0CB3:  DB  $0D
$0CB4:  DB  $03
$0CB5:  DB  $CB
; ── Character 0x3E '>' ──────────────────────────────────
$0CB6:  ; raw: 01 3C 8F
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $8F  10001111  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps) ← end-of-char
$0CB6:  DB  $01
$0CB7:  DB  $3C
$0CB8:  DB  $8F
; ── Character 0x3F '?' ──────────────────────────────────
$0CB9:  ; raw: 21 2A 23 2C 3C 4E 1F 8D
; stroke breakdown:
;   $21  00100001  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=1(→ 88steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $23  00100011  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=3(→ 20steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $8D  10001101  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0CB9:  DB  $21
$0CBA:  DB  $2A
$0CBB:  DB  $23
$0CBC:  DB  $2C
$0CBD:  DB  $3C
$0CBE:  DB  $4E
$0CBF:  DB  $1F
$0CC0:  DB  $8D
; ── Character 0x40 '@' ──────────────────────────────────
$0CC1:  ; raw: 33 3D 2D 1B 2A 4B 4E 1F 0A C9
; stroke breakdown:
;   $33  00110011  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=3(→ 20steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $1B  00011011  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=3(→ 20steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $4B  01001011  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=3(→ 20steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0CC1:  DB  $33
$0CC2:  DB  $3D
$0CC3:  DB  $2D
$0CC4:  DB  $1B
$0CC5:  DB  $2A
$0CC6:  DB  $4B
$0CC7:  DB  $4E
$0CC8:  DB  $1F
$0CC9:  DB  $0A
$0CCA:  DB  $C9
; ── Character 0x41 'A' ──────────────────────────────────
$0CCB:  ; raw: 01 0D 2F 49 4C 8C
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $2F  00101111  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps)
;   $49  01001001  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps)
;   $4C  01001100  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps)
;   $8C  10001100  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0CCB:  DB  $01
$0CCC:  DB  $0D
$0CCD:  DB  $2F
$0CCE:  DB  $49
$0CCF:  DB  $4C
$0CD0:  DB  $8C
; ── Character 0x42 'B' ──────────────────────────────────
$0CD1:  ; raw: 01 0F 3F 4D 0C 3C 4A 89
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $4A  01001010  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps)
;   $89  10001001  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0CD1:  DB  $01
$0CD2:  DB  $0F
$0CD3:  DB  $3F
$0CD4:  DB  $4D
$0CD5:  DB  $0C
$0CD6:  DB  $3C
$0CD7:  DB  $4A
$0CD8:  DB  $89
; ── Character 0x43 'C' ──────────────────────────────────
$0CD9:  ; raw: 42 19 0E 3F CE
; stroke breakdown:
;   $42  01000010  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=2(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $CE  11001110  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps) ← end-of-char
$0CD9:  DB  $42
$0CDA:  DB  $19
$0CDB:  DB  $0E
$0CDC:  DB  $3F
$0CDD:  DB  $CE
; ── Character 0x44 'D' ──────────────────────────────────
$0CDE:  ; raw: 01 0F 3F 4A 89
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4A  01001010  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps)
;   $89  10001001  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0CDE:  DB  $01
$0CDF:  DB  $0F
$0CE0:  DB  $3F
$0CE1:  DB  $4A
$0CE2:  DB  $89
; ── Character 0x45 'E' ──────────────────────────────────
$0CE3:  ; raw: 01 49 09 0C 3C 0C 0F CF
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $49  01001001  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0CE3:  DB  $01
$0CE4:  DB  $49
$0CE5:  DB  $09
$0CE6:  DB  $0C
$0CE7:  DB  $3C
$0CE8:  DB  $0C
$0CE9:  DB  $0F
$0CEA:  DB  $CF
; ── Character 0x46 'F' ──────────────────────────────────
$0CEB:  ; raw: 21 01 0C 3C 0C 0F CF
; stroke breakdown:
;   $21  00100001  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=1(→ 88steps)
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0CEB:  DB  $21
$0CEC:  DB  $01
$0CED:  DB  $0C
$0CEE:  DB  $3C
$0CEF:  DB  $0C
$0CF0:  DB  $0F
$0CF1:  DB  $CF
; ── Character 0x47 'G' ──────────────────────────────────
$0CF2:  ; raw: 46 1F 0A 39 4C 2C 4C C9
; stroke breakdown:
;   $46  01000110  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=6(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $4C  01001100  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $4C  01001100  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0CF2:  DB  $46
$0CF3:  DB  $1F
$0CF4:  DB  $0A
$0CF5:  DB  $39
$0CF6:  DB  $4C
$0CF7:  DB  $2C
$0CF8:  DB  $4C
$0CF9:  DB  $C9
; ── Character 0x48 'H' ──────────────────────────────────
$0CFA:  ; raw: 01 0F 0C 4C 4F C9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $4C  01001100  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0CFA:  DB  $01
$0CFB:  DB  $0F
$0CFC:  DB  $0C
$0CFD:  DB  $4C
$0CFE:  DB  $4F
$0CFF:  DB  $C9
; ══════════════════════════════════════════════════════════════════════
; CHARACTER STROKE DATA – PAGE 1  ($0D00-$0DFF)
; Characters: 0x49 ('I') through 0x79 ('y') – 49 characters
; (Same stroke byte format as PAGE 0.)
; ══════════════════════════════════════════════════════════════════════
; ── Character 0x49 'I' ──────────────────────────────────
$0D00:  ; raw: 11 39 29 2F 1F BF
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $2F  00101111  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $BF  10111111  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D00:  DB  $11
$0D01:  DB  $39
$0D02:  DB  $29
$0D03:  DB  $2F
$0D04:  DB  $1F
$0D05:  DB  $BF
; ── Character 0x4A 'J' ──────────────────────────────────
$0D06:  ; raw: 02 29 BF
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $BF  10111111  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D06:  DB  $02
$0D07:  DB  $29
$0D08:  DB  $BF
; ── Character 0x4B 'K' ──────────────────────────────────
$0D09:  ; raw: 01 0F 0B 4F 14 C9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $14  00010100  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=4(→ 60steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D09:  DB  $01
$0D0A:  DB  $0F
$0D0B:  DB  $0B
$0D0C:  DB  $4F
$0D0D:  DB  $14
$0D0E:  DB  $C9
; ── Character 0x4C 'L' ──────────────────────────────────
$0D0F:  ; raw: 07 09 C9
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D0F:  DB  $07
$0D10:  DB  $09
$0D11:  DB  $C9
; ── Character 0x4D 'M' ──────────────────────────────────
$0D12:  ; raw: 01 0F 2D 4F C9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D12:  DB  $01
$0D13:  DB  $0F
$0D14:  DB  $2D
$0D15:  DB  $4F
$0D16:  DB  $C9
; ── Character 0x4E 'N' ──────────────────────────────────
$0D17:  ; raw: 01 0F 0E 49 CF
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $49  01001001  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D17:  DB  $01
$0D18:  DB  $0F
$0D19:  DB  $0E
$0D1A:  DB  $49
$0D1B:  DB  $CF
; ── Character 0x4F 'O' ──────────────────────────────────
$0D1C:  ; raw: 02 0E 3F 4A 19 8A
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4A  01001010  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $8A  10001010  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0D1C:  DB  $02
$0D1D:  DB  $0E
$0D1E:  DB  $3F
$0D1F:  DB  $4A
$0D20:  DB  $19
$0D21:  DB  $8A
; ── Character 0x50 'P' ──────────────────────────────────
$0D22:  ; raw: 01 0F 3F 4D 8C
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $8C  10001100  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0D22:  DB  $01
$0D23:  DB  $0F
$0D24:  DB  $3F
$0D25:  DB  $4D
$0D26:  DB  $8C
; ── Character 0x51 'Q' ──────────────────────────────────
$0D27:  ; raw: 23 49 4E 1F 0A 39 CA
; stroke breakdown:
;   $23  00100011  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=3(→ 20steps)
;   $49  01001001  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $CA  11001010  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0D27:  DB  $23
$0D28:  DB  $49
$0D29:  DB  $4E
$0D2A:  DB  $1F
$0D2B:  DB  $0A
$0D2C:  DB  $39
$0D2D:  DB  $CA
; ── Character 0x52 'R' ──────────────────────────────────
$0D2E:  ; raw: 01 0F 3F 4D 0C 1C C9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D2E:  DB  $01
$0D2F:  DB  $0F
$0D30:  DB  $3F
$0D31:  DB  $4D
$0D32:  DB  $0C
$0D33:  DB  $1C
$0D34:  DB  $C9
; ── Character 0x53 'S' ──────────────────────────────────
$0D35:  ; raw: 02 39 4B 1C 0E 3F CE
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $4B  01001011  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=3(→ 20steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $CE  11001110  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps) ← end-of-char
$0D35:  DB  $02
$0D36:  DB  $39
$0D37:  DB  $4B
$0D38:  DB  $1C
$0D39:  DB  $0E
$0D3A:  DB  $3F
$0D3B:  DB  $CE
; ── Character 0x54 'T' ──────────────────────────────────
$0D3C:  ; raw: 21 2F 0F CF
; stroke breakdown:
;   $21  00100001  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=1(→ 88steps)
;   $2F  00101111  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D3C:  DB  $21
$0D3D:  DB  $2F
$0D3E:  DB  $0F
$0D3F:  DB  $CF
; ── Character 0x55 'U' ──────────────────────────────────
$0D40:  ; raw: 07 09 49 CF
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $49  01001001  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D40:  DB  $07
$0D41:  DB  $09
$0D42:  DB  $49
$0D43:  DB  $CF
; ── Character 0x56 'V' ──────────────────────────────────
$0D44:  ; raw: 07 0B 29 CF
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D44:  DB  $07
$0D45:  DB  $0B
$0D46:  DB  $29
$0D47:  DB  $CF
; ── Character 0x57 'W' ──────────────────────────────────
$0D48:  ; raw: 07 09 2C 2B 49 CF
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $2B  00101011  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps)
;   $49  01001001  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D48:  DB  $07
$0D49:  DB  $09
$0D4A:  DB  $2C
$0D4B:  DB  $2B
$0D4C:  DB  $49
$0D4D:  DB  $CF
; ── Character 0x58 'X' ──────────────────────────────────
$0D4E:  ; raw: 01 0A 4F 07 0E C9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D4E:  DB  $01
$0D4F:  DB  $0A
$0D50:  DB  $4F
$0D51:  DB  $07
$0D52:  DB  $0E
$0D53:  DB  $C9
; ── Character 0x59 'Y' ──────────────────────────────────
$0D54:  ; raw: 07 2D 47 A9
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $47  01000111  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=7(→  9steps)
;   $A9  10101001  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D54:  DB  $07
$0D55:  DB  $2D
$0D56:  DB  $47
$0D57:  DB  $A9
$0D58:  DB  $00
$0D59:  DB  $00
$0D5A:  DB  $00
$0D5B:  DB  $00
; ── Character 0x5A 'Z' ──────────────────────────────────
$0D5C:  ; raw: 07 3F 4E 2C 1D 3B 2C 0A C9
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D5C:  DB  $07
$0D5D:  DB  $3F
$0D5E:  DB  $4E
$0D5F:  DB  $2C
$0D60:  DB  $1D
$0D61:  DB  $3B
$0D62:  DB  $2C
$0D63:  DB  $0A
$0D64:  DB  $C9
; ── Character 0x5B '[' ──────────────────────────────────
$0D65:  ; raw: 31 19 1F BF
; stroke breakdown:
;   $31  00110001  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=1(→ 88steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $BF  10111111  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D65:  DB  $31
$0D66:  DB  $19
$0D67:  DB  $1F
$0D68:  DB  $BF
; ── Character 0x5C '\' ──────────────────────────────────
$0D69:  ; raw: 06 CA
; stroke breakdown:
;   $06  00000110  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=6(→  9steps)
;   $CA  11001010  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0D69:  DB  $06
$0D6A:  DB  $CA
; ── Character 0x5D ']' ──────────────────────────────────
$0D6B:  ; raw: 11 39 3F 9F
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $9F  10011111  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D6B:  DB  $11
$0D6C:  DB  $39
$0D6D:  DB  $3F
$0D6E:  DB  $9F
; ── Character 0x5E '^' ──────────────────────────────────
$0D6F:  ; raw: 04 2E CC
; stroke breakdown:
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $CC  11001100  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0D6F:  DB  $04
$0D70:  DB  $2E
$0D71:  DB  $CC
; ── Character 0x5F '_' ──────────────────────────────────
$0D72:  ; raw: E8
; stroke breakdown:
;   $E8  11101000  [PEN_UP] Y_idx=6(→  0steps) NEG X_idx=0(→122steps) ← end-of-char
$0D72:  DB  $E8
; ── Character 0x60 '`' ──────────────────────────────────
$0D73:  ; raw: 34 2F 3F 3E AE
; stroke breakdown:
;   $34  00110100  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=4(→ 60steps)
;   $2F  00101111  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $AE  10101110  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps) ← end-of-char
$0D73:  DB  $34
$0D74:  DB  $2F
$0D75:  DB  $3F
$0D76:  DB  $3E
$0D77:  DB  $AE
; ── Character 0x61 'a' ──────────────────────────────────
$0D78:  ; raw: 15 2D 3A 19 0B 2C 3A C9
; stroke breakdown:
;   $15  00010101  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=5(→ 43steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $3A  00111010  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $3A  00111010  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D78:  DB  $15
$0D79:  DB  $2D
$0D7A:  DB  $3A
$0D7B:  DB  $19
$0D7C:  DB  $0B
$0D7D:  DB  $2C
$0D7E:  DB  $3A
$0D7F:  DB  $C9
; ── Character 0x62 'b' ──────────────────────────────────
$0D80:  ; raw: 07 09 29 3C 8D
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $8D  10001101  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0D80:  DB  $07
$0D81:  DB  $09
$0D82:  DB  $29
$0D83:  DB  $3C
$0D84:  DB  $8D
; ── Character 0x63 'c' ──────────────────────────────────
$0D85:  ; raw: 34 1D 0A 29 BA
; stroke breakdown:
;   $34  00110100  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=4(→ 60steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $BA  10111010  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0D85:  DB  $34
$0D86:  DB  $1D
$0D87:  DB  $0A
$0D88:  DB  $29
$0D89:  DB  $BA
; ── Character 0x64 'd' ──────────────────────────────────
$0D8A:  ; raw: 37 39 19 0C BD
; stroke breakdown:
;   $37  00110111  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=7(→  9steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $BD  10111101  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0D8A:  DB  $37
$0D8B:  DB  $39
$0D8C:  DB  $19
$0D8D:  DB  $0C
$0D8E:  DB  $BD
; ── Character 0x65 'e' ──────────────────────────────────
$0D8F:  ; raw: 03 3B 3C 1D 0A B9
; stroke breakdown:
;   $03  00000011  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=3(→ 20steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $B9  10111001  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0D8F:  DB  $03
$0D90:  DB  $3B
$0D91:  DB  $3C
$0D92:  DB  $1D
$0D93:  DB  $0A
$0D94:  DB  $B9
; ── Character 0x66 'f' ──────────────────────────────────
$0D95:  ; raw: 21 2C 3C 1C 2C 2F BF
; stroke breakdown:
;   $21  00100001  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=1(→ 88steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $2F  00101111  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps)
;   $BF  10111111  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0D95:  DB  $21
$0D96:  DB  $2C
$0D97:  DB  $3C
$0D98:  DB  $1C
$0D99:  DB  $2C
$0D9A:  DB  $2F
$0D9B:  DB  $BF
; ── Character 0x67 'g' ──────────────────────────────────
$0D9C:  ; raw: 33 1A 0C 2D 39 88
; stroke breakdown:
;   $33  00110011  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=3(→ 20steps)
;   $1A  00011010  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=2(→ 20steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $88  10001000  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=0(→122steps) ← end-of-char
$0D9C:  DB  $33
$0D9D:  DB  $1A
$0D9E:  DB  $0C
$0D9F:  DB  $2D
$0DA0:  DB  $39
$0DA1:  DB  $88
; ── Character 0x68 'h' ──────────────────────────────────
$0DA2:  ; raw: 07 09 0D 2D B9
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $B9  10111001  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0DA2:  DB  $07
$0DA3:  DB  $09
$0DA4:  DB  $0D
$0DA5:  DB  $2D
$0DA6:  DB  $B9
; ── Character 0x69 'i' ──────────────────────────────────
$0DA7:  ; raw: 26 2D 24 A9
; stroke breakdown:
;   $26  00100110  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=6(→  9steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $24  00100100  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=4(→ 60steps)
;   $A9  10101001  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0DA7:  DB  $26
$0DA8:  DB  $2D
$0DA9:  DB  $24
$0DAA:  DB  $A9
; ── Character 0x6A 'j' ──────────────────────────────────
$0DAB:  ; raw: 01 28 3C 35 BE
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $28  00101000  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=0(→122steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $35  00110101  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=5(→ 43steps)
;   $BE  10111110  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps) ← end-of-char
$0DAB:  DB  $01
$0DAC:  DB  $28
$0DAD:  DB  $3C
$0DAE:  DB  $35
$0DAF:  DB  $BE
; ── Character 0x6B 'k' ──────────────────────────────────
$0DB0:  ; raw: 07 09 0A 3D 1B B9
; stroke breakdown:
;   $07  00000111  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=7(→  9steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $1B  00011011  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=3(→ 20steps)
;   $B9  10111001  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0DB0:  DB  $07
$0DB1:  DB  $09
$0DB2:  DB  $0A
$0DB3:  DB  $3D
$0DB4:  DB  $1B
$0DB5:  DB  $B9
; ── Character 0x6C 'l' ──────────────────────────────────
$0DB6:  ; raw: 27 29 B9
; stroke breakdown:
;   $27  00100111  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=7(→  9steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $B9  10111001  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0DB6:  DB  $27
$0DB7:  DB  $29
$0DB8:  DB  $B9
; ── Character 0x6D 'm' ──────────────────────────────────
$0DB9:  ; raw: 01 0D 0C 1D 29 2C 3D C9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0DB9:  DB  $01
$0DBA:  DB  $0D
$0DBB:  DB  $0C
$0DBC:  DB  $1D
$0DBD:  DB  $29
$0DBE:  DB  $2C
$0DBF:  DB  $3D
$0DC0:  DB  $C9
; ── Character 0x6E 'n' ──────────────────────────────────
$0DC1:  ; raw: 01 0D 0C 2D B9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $B9  10111001  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0DC1:  DB  $01
$0DC2:  DB  $0D
$0DC3:  DB  $0C
$0DC4:  DB  $2D
$0DC5:  DB  $B9
; ── Character 0x6F 'o' ──────────────────────────────────
$0DC6:  ; raw: 34 1D 0A 29 BC
; stroke breakdown:
;   $34  00110100  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=4(→ 60steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $BC  10111100  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0DC6:  DB  $34
$0DC7:  DB  $1D
$0DC8:  DB  $0A
$0DC9:  DB  $29
$0DCA:  DB  $BC
$0DCB:  DB  $01
; ── Character 0x70 'p' ──────────────────────────────────
$0DCC:  ; raw: 0D 2D 3B 8A
; stroke breakdown:
;   $0D  00001101  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $8A  10001010  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0DCC:  DB  $0D
$0DCD:  DB  $2D
$0DCE:  DB  $3B
$0DCF:  DB  $8A
; ── Character 0x71 'q' ──────────────────────────────────
$0DD0:  ; raw: 32 1A 0C 3D 38 C8
; stroke breakdown:
;   $32  00110010  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=2(→ 20steps)
;   $1A  00011010  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=2(→ 20steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $38  00111000  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=0(→122steps)
;   $C8  11001000  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=0(→122steps) ← end-of-char
$0DD0:  DB  $32
$0DD1:  DB  $1A
$0DD2:  DB  $0C
$0DD3:  DB  $3D
$0DD4:  DB  $38
$0DD5:  DB  $C8
; ── Character 0x72 'r' ──────────────────────────────────
$0DD6:  ; raw: 05 1D 19 1C BD
; stroke breakdown:
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $BD  10111101  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0DD6:  DB  $05
$0DD7:  DB  $1D
$0DD8:  DB  $19
$0DD9:  DB  $1C
$0DDA:  DB  $BD
; ── Character 0x73 's' ──────────────────────────────────
$0DDB:  ; raw: 02 29 3A 1B 0C 2D BC
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $3A  00111010  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps)
;   $1B  00011011  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=3(→ 20steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $BC  10111100  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0DDB:  DB  $02
$0DDC:  DB  $29
$0DDD:  DB  $3A
$0DDE:  DB  $1B
$0DDF:  DB  $0C
$0DE0:  DB  $2D
$0DE1:  DB  $BC
; ── Character 0x74 't' ──────────────────────────────────
$0DE2:  ; raw: 05 2D 1D 1F 19 29 BA
; stroke breakdown:
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $BA  10111010  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0DE2:  DB  $05
$0DE3:  DB  $2D
$0DE4:  DB  $1D
$0DE5:  DB  $1F
$0DE6:  DB  $19
$0DE7:  DB  $29
$0DE8:  DB  $BA
; ── Character 0x75 'u' ──────────────────────────────────
$0DE9:  ; raw: 05 09 39 BD
; stroke breakdown:
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $BD  10111101  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0DE9:  DB  $05
$0DEA:  DB  $09
$0DEB:  DB  $39
$0DEC:  DB  $BD
; ── Character 0x76 'v' ──────────────────────────────────
$0DED:  ; raw: 05 0B 29 CD
; stroke breakdown:
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $CD  11001101  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0DED:  DB  $05
$0DEE:  DB  $0B
$0DEF:  DB  $29
$0DF0:  DB  $CD
; ── Character 0x77 'w' ──────────────────────────────────
$0DF1:  ; raw: 05 0A 19 2B 2A 39 CD
; stroke breakdown:
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $2B  00101011  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $CD  11001101  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0DF1:  DB  $05
$0DF2:  DB  $0A
$0DF3:  DB  $19
$0DF4:  DB  $2B
$0DF5:  DB  $2A
$0DF6:  DB  $39
$0DF7:  DB  $CD
; ── Character 0x78 'x' ──────────────────────────────────
$0DF8:  ; raw: 01 4D 05 C9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0DF8:  DB  $01
$0DF9:  DB  $4D
$0DFA:  DB  $05
$0DFB:  DB  $C9
; ── Character 0x79 'y' ──────────────────────────────────
$0DFC:  ; raw: 4D 05 0C AA
; stroke breakdown:
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $AA  10101010  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps) ← end-of-char
$0DFC:  DB  $4D
$0DFD:  DB  $05
$0DFE:  DB  $0C
$0DFF:  DB  $AA
; ══════════════════════════════════════════════════════════════════════
; CHARACTER STROKE DATA – PAGE 2  ($0E00-$0EFF)
; Characters: 0x7A ('z') and above
; (Same stroke byte format.)
; ══════════════════════════════════════════════════════════════════════
; ── Character 0x7A 'z' ──────────────────────────────────
$0E00:  ; raw: 05 4D 09 C9
; stroke breakdown:
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E00:  DB  $05
$0E01:  DB  $4D
$0E02:  DB  $09
$0E03:  DB  $C9
; ── Character 0x7B '{' ──────────────────────────────────
$0E04:  ; raw: 31 2C 1C 2C 2E BF
; stroke breakdown:
;   $31  00110001  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=1(→ 88steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $BF  10111111  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0E04:  DB  $31
$0E05:  DB  $2C
$0E06:  DB  $1C
$0E07:  DB  $2C
$0E08:  DB  $2E
$0E09:  DB  $BF
; ── Character 0x7C '|' ──────────────────────────────────
$0E0A:  ; raw: 21 2B 25 AF
; stroke breakdown:
;   $21  00100001  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=1(→ 88steps)
;   $2B  00101011  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps)
;   $25  00100101  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=5(→ 43steps)
;   $AF  10101111  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0E0A:  DB  $21
$0E0B:  DB  $2B
$0E0C:  DB  $25
$0E0D:  DB  $AF
; ── Character 0x7D '}' ──────────────────────────────────
$0E0E:  ; raw: 11 2C 3C 2C 2E 9F
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $9F  10011111  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps) ← end-of-char
$0E0E:  DB  $11
$0E0F:  DB  $2C
$0E10:  DB  $3C
$0E11:  DB  $2C
$0E12:  DB  $2E
$0E13:  DB  $9F
; ── Character 0x7E '~' ──────────────────────────────────
$0E14:  ; raw: 04 1D 3B CC
; stroke breakdown:
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $CC  11001100  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0E14:  DB  $04
$0E15:  DB  $1D
$0E16:  DB  $3B
$0E17:  DB  $CC
$0E18:  DB  $01
$0E19:  DB  $0F
$0E1A:  DB  $4F
$0E1B:  DB  $49
$0E1C:  DB  $09
$0E1D:  DB  $0A
$0E1E:  DB  $4F
$0E1F:  DB  $0F
$0E20:  DB  $0E
$0E21:  DB  $C9
; ── Character 0x80 'ctrl_80' ──────────────────────────────────
$0E22:  ; raw: E0
; stroke breakdown:
;   $E0  11100000  [PEN_UP] Y_idx=6(→  0steps) POS X_idx=0(→122steps) ← end-of-char
$0E22:  DB  $E0
; ── Character 0x81 'ctrl_81' ──────────────────────────────────
$0E23:  ; raw: 11 2A 1B 0A 99
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $2A  00101010  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=2(→ 20steps)
;   $1B  00011011  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=3(→ 20steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $99  10011001  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E23:  DB  $11
$0E24:  DB  $2A
$0E25:  DB  $1B
$0E26:  DB  $0A
$0E27:  DB  $99
; ── Character 0x82 'ctrl_82' ──────────────────────────────────
$0E28:  ; raw: 13 1F CF
; stroke breakdown:
;   $13  00010011  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=3(→ 20steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $CF  11001111  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps) ← end-of-char
$0E28:  DB  $13
$0E29:  DB  $1F
$0E2A:  DB  $CF
; ── Character 0x83 'ctrl_83' ──────────────────────────────────
$0E2B:  ; raw: 01 39 BD
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $BD  10111101  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0E2B:  DB  $01
$0E2C:  DB  $39
$0E2D:  DB  $BD
; ── Character 0x84 'ctrl_84' ──────────────────────────────────
$0E2E:  ; raw: 02 A8
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $A8  10101000  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=0(→122steps) ← end-of-char
$0E2E:  DB  $02
$0E2F:  DB  $A8
; ── Character 0x85 'ctrl_85' ──────────────────────────────────
$0E30:  ; raw: 23 3C 2D 1C AB
; stroke breakdown:
;   $23  00100011  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=3(→ 20steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $AB  10101011  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps) ← end-of-char
$0E30:  DB  $23
$0E31:  DB  $3C
$0E32:  DB  $2D
$0E33:  DB  $1C
$0E34:  DB  $AB
; ── Character 0x86 'ctrl_86' ──────────────────────────────────
$0E35:  ; raw: 11 4F 0F 05 CD
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $CD  11001101  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0E35:  DB  $11
$0E36:  DB  $4F
$0E37:  DB  $0F
$0E38:  DB  $05
$0E39:  DB  $CD
; ── Character 0x87 'ctrl_87' ──────────────────────────────────
$0E3A:  ; raw: 01 1C 1B 3D 8D
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $1B  00011011  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=3(→ 20steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $8D  10001101  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0E3A:  DB  $01
$0E3B:  DB  $1C
$0E3C:  DB  $1B
$0E3D:  DB  $3D
$0E3E:  DB  $8D
; ── Character 0x88 'ctrl_88' ──────────────────────────────────
$0E3F:  ; raw: 21 2C 3D 8B
; stroke breakdown:
;   $21  00100001  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=1(→ 88steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $8B  10001011  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps) ← end-of-char
$0E3F:  DB  $21
$0E40:  DB  $2C
$0E41:  DB  $3D
$0E42:  DB  $8B
; ── Character 0x89 'ctrl_89' ──────────────────────────────────
$0E43:  ; raw: 11 3C 0C 0B 15 AC
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $15  00010101  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=5(→ 43steps)
;   $AC  10101100  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0E43:  DB  $11
$0E44:  DB  $3C
$0E45:  DB  $0C
$0E46:  DB  $0B
$0E47:  DB  $15
$0E48:  DB  $AC
; ── Character 0x8A 'ctrl_8A' ──────────────────────────────────
$0E49:  ; raw: 04 4C 2C 29 09 C9
; stroke breakdown:
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $4C  01001100  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $09  00001001  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E49:  DB  $04
$0E4A:  DB  $4C
$0E4B:  DB  $2C
$0E4C:  DB  $29
$0E4D:  DB  $09
$0E4E:  DB  $C9
; ── Character 0x8B 'ctrl_8B' ──────────────────────────────────
$0E4F:  ; raw: 01 2D 2C 3C 0C 2C A9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $A9  10101001  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E4F:  DB  $01
$0E50:  DB  $2D
$0E51:  DB  $2C
$0E52:  DB  $3C
$0E53:  DB  $0C
$0E54:  DB  $2C
$0E55:  DB  $A9
; ── Character 0x8C 'ctrl_8C' ──────────────────────────────────
$0E56:  ; raw: 11 1D 04 3C AB
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $1D  00011101  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=5(→ 43steps)
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $3C  00111100  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=4(→ 60steps)
;   $AB  10101011  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=3(→ 20steps) ← end-of-char
$0E56:  DB  $11
$0E57:  DB  $1D
$0E58:  DB  $04
$0E59:  DB  $3C
$0E5A:  DB  $AB
; ── Character 0x8D 'ctrl_8D' ──────────────────────────────────
$0E5B:  ; raw: 01 39 29 2C 8C
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $8C  10001100  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0E5B:  DB  $01
$0E5C:  DB  $39
$0E5D:  DB  $29
$0E5E:  DB  $2C
$0E5F:  DB  $8C
; ── Character 0x8E 'ctrl_8E' ──────────────────────────────────
$0E60:  ; raw: 01 39 3B 0B 3B 3D 8D
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $3B  00111011  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=3(→ 20steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $8D  10001101  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0E60:  DB  $01
$0E61:  DB  $39
$0E62:  DB  $3B
$0E63:  DB  $0B
$0E64:  DB  $3B
$0E65:  DB  $3D
$0E66:  DB  $8D
; ── Character 0x8F 'ctrl_8F' ──────────────────────────────────
$0E67:  ; raw: 01 19 3D 15 1B 03 8D
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $19  00011001  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=1(→ 88steps)
;   $3D  00111101  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=5(→ 43steps)
;   $15  00010101  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=5(→ 43steps)
;   $1B  00011011  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=3(→ 20steps)
;   $03  00000011  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=3(→ 20steps)
;   $8D  10001101  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0E67:  DB  $01
$0E68:  DB  $19
$0E69:  DB  $3D
$0E6A:  DB  $15
$0E6B:  DB  $1B
$0E6C:  DB  $03
$0E6D:  DB  $8D
; ── Character 0x90 'ctrl_90' ──────────────────────────────────
$0E6E:  ; raw: 04 CC
; stroke breakdown:
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $CC  11001100  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0E6E:  DB  $04
$0E6F:  DB  $CC
; ── Character 0x91 'ctrl_91' ──────────────────────────────────
$0E70:  ; raw: 11 2D 2C 4F 8F
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $2C  00101100  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=4(→ 60steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $8F  10001111  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps) ← end-of-char
$0E70:  DB  $11
$0E71:  DB  $2D
$0E72:  DB  $2C
$0E73:  DB  $4F
$0E74:  DB  $8F
; ── Character 0x92 'ctrl_92' ──────────────────────────────────
$0E75:  ; raw: 21 2D 0B BF
; stroke breakdown:
;   $21  00100001  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=1(→ 88steps)
;   $2D  00101101  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps)
;   $0B  00001011  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=3(→ 20steps)
;   $BF  10111111  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0E75:  DB  $21
$0E76:  DB  $2D
$0E77:  DB  $0B
$0E78:  DB  $BF
; ── Character 0x93 'ctrl_93' ──────────────────────────────────
$0E79:  ; raw: 11 4E 0E 0C 26 AF
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $0C  00001100  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=4(→ 60steps)
;   $26  00100110  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=6(→  9steps)
;   $AF  10101111  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=7(→  9steps) ← end-of-char
$0E79:  DB  $11
$0E7A:  DB  $4E
$0E7B:  DB  $0E
$0E7C:  DB  $0C
$0E7D:  DB  $26
$0E7E:  DB  $AF
; ── Character 0x94 'ctrl_94' ──────────────────────────────────
$0E7F:  ; raw: 01 49 29 2E 0E CE
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $49  01001001  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $2E  00101110  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=6(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $CE  11001110  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps) ← end-of-char
$0E7F:  DB  $01
$0E80:  DB  $49
$0E81:  DB  $29
$0E82:  DB  $2E
$0E83:  DB  $0E
$0E84:  DB  $CE
; ── Character 0x95 'ctrl_95' ──────────────────────────────────
$0E85:  ; raw: 02 3F 3E 4E 0E 3E B9
; stroke breakdown:
;   $02  00000010  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=2(→ 20steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $B9  10111001  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E85:  DB  $02
$0E86:  DB  $3F
$0E87:  DB  $3E
$0E88:  DB  $4E
$0E89:  DB  $0E
$0E8A:  DB  $3E
$0E8B:  DB  $B9
; ── Character 0x96 'ctrl_96' ──────────────────────────────────
$0E8C:  ; raw: 01 1F 1E 0E 4E 4A B9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $1E  00011110  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=6(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $4A  01001010  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=2(→ 20steps)
;   $B9  10111001  [PEN_UP] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E8C:  DB  $01
$0E8D:  DB  $1F
$0E8E:  DB  $1E
$0E8F:  DB  $0E
$0E90:  DB  $4E
$0E91:  DB  $4A
$0E92:  DB  $B9
; ── Character 0x97 'ctrl_97' ──────────────────────────────────
$0E93:  ; raw: 04 4C 46 0E 27 A9
; stroke breakdown:
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $4C  01001100  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps)
;   $46  01000110  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=6(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $27  00100111  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=7(→  9steps)
;   $A9  10101001  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E93:  DB  $04
$0E94:  DB  $4C
$0E95:  DB  $46
$0E96:  DB  $0E
$0E97:  DB  $27
$0E98:  DB  $A9
; ── Character 0x98 'ctrl_98' ──────────────────────────────────
$0E99:  ; raw: 05 1F 4F 4D 89
; stroke breakdown:
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $4D  01001101  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=5(→ 43steps)
;   $89  10001001  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E99:  DB  $05
$0E9A:  DB  $1F
$0E9B:  DB  $4F
$0E9C:  DB  $4D
$0E9D:  DB  $89
; ── Character 0x99 'ctrl_99' ──────────────────────────────────
$0E9E:  ; raw: 04 0F 0E 4E 3E 3A A9
; stroke breakdown:
;   $04  00000100  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=4(→ 60steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $3A  00111010  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=2(→ 20steps)
;   $A9  10101001  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0E9E:  DB  $04
$0E9F:  DB  $0F
$0EA0:  DB  $0E
$0EA1:  DB  $4E
$0EA2:  DB  $3E
$0EA3:  DB  $3A
$0EA4:  DB  $A9
; ── Character 0x9A 'ctrl_9A' ──────────────────────────────────
$0EA5:  ; raw: 01 39 3F 8F
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $39  00111001  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=1(→ 88steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $8F  10001111  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps) ← end-of-char
$0EA5:  DB  $01
$0EA6:  DB  $39
$0EA7:  DB  $3F
$0EA8:  DB  $8F
; ── Character 0x9B 'ctrl_9B' ──────────────────────────────────
$0EA9:  ; raw: 11 3F 3E 4E 0E 1E 1F 9C
; stroke breakdown:
;   $11  00010001  [PEN_DWN] Y_idx=1(→ 60steps) POS X_idx=1(→ 88steps)
;   $3F  00111111  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=7(→  9steps)
;   $3E  00111110  [PEN_DWN] Y_idx=3(→  0steps) NEG X_idx=6(→  9steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $1E  00011110  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=6(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $9C  10011100  [PEN_UP] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps) ← end-of-char
$0EA9:  DB  $11
$0EAA:  DB  $3F
$0EAB:  DB  $3E
$0EAC:  DB  $4E
$0EAD:  DB  $0E
$0EAE:  DB  $1E
$0EAF:  DB  $1F
$0EB0:  DB  $9C
; ── Character 0x9C 'ctrl_9C' ──────────────────────────────────
$0EB1:  ; raw: 01 29 4F 27 0F 05 AD
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $29  00101001  [PEN_DWN] Y_idx=2(→  0steps) NEG X_idx=1(→ 88steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $27  00100111  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=7(→  9steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $05  00000101  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=5(→ 43steps)
;   $AD  10101101  [PEN_UP] Y_idx=2(→  0steps) NEG X_idx=5(→ 43steps) ← end-of-char
$0EB1:  DB  $01
$0EB2:  DB  $29
$0EB3:  DB  $4F
$0EB4:  DB  $27
$0EB5:  DB  $0F
$0EB6:  DB  $05
$0EB7:  DB  $AD
; ── Character 0x9D 'ctrl_9D' ──────────────────────────────────
$0EB8:  ; raw: 01 0A 4F 0F 24 C9
; stroke breakdown:
;   $01  00000001  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=1(→ 88steps)
;   $0A  00001010  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=2(→ 20steps)
;   $4F  01001111  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=7(→  9steps)
;   $0F  00001111  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=7(→  9steps)
;   $24  00100100  [PEN_DWN] Y_idx=2(→  0steps) POS X_idx=4(→ 60steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0EB8:  DB  $01
$0EB9:  DB  $0A
$0EBA:  DB  $4F
$0EBB:  DB  $0F
$0EBC:  DB  $24
$0EBD:  DB  $C9
; ── Character 0x9E 'ctrl_9E' ──────────────────────────────────
$0EBE:  ; raw: 34 4E 0E 1E 1F 1A C9
; stroke breakdown:
;   $34  00110100  [PEN_DWN] Y_idx=3(→  0steps) POS X_idx=4(→ 60steps)
;   $4E  01001110  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=6(→  9steps)
;   $0E  00001110  [PEN_DWN] Y_idx=0(→ 60steps) NEG X_idx=6(→  9steps)
;   $1E  00011110  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=6(→  9steps)
;   $1F  00011111  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=7(→  9steps)
;   $1A  00011010  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=2(→ 20steps)
;   $C9  11001001  [PEN_UP] Y_idx=4(→ 30steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0EBE:  DB  $34
$0EBF:  DB  $4E
$0EC0:  DB  $0E
$0EC1:  DB  $1E
$0EC2:  DB  $1F
$0EC3:  DB  $1A
$0EC4:  DB  $C9
; ── Character 0x9F 'ctrl_9F' ──────────────────────────────────
$0EC5:  ; raw: 06 1C 47 4C 89
; stroke breakdown:
;   $06  00000110  [PEN_DWN] Y_idx=0(→ 60steps) POS X_idx=6(→  9steps)
;   $1C  00011100  [PEN_DWN] Y_idx=1(→ 60steps) NEG X_idx=4(→ 60steps)
;   $47  01000111  [PEN_DWN] Y_idx=4(→ 30steps) POS X_idx=7(→  9steps)
;   $4C  01001100  [PEN_DWN] Y_idx=4(→ 30steps) NEG X_idx=4(→ 60steps)
;   $89  10001001  [PEN_UP] Y_idx=0(→ 60steps) NEG X_idx=1(→ 88steps) ← end-of-char
$0EC5:  DB  $06
$0EC6:  DB  $1C
$0EC7:  DB  $47
$0EC8:  DB  $4C
$0EC9:  DB  $89
$0ECA:  DB  $04
$0ECB:  DB  $1F
$0ECC:  DB  $4F
$0ECD:  DB  $4D
$0ECE:  DB  $1D
$0ECF:  DB  $4D
$0ED0:  DB  $4C
$0ED1:  DB  $99
$0ED2:  DB  $11
$0ED3:  DB  $2E
$0ED4:  DB  $3F
$0ED5:  DB  $0E
$0ED6:  DB  $04
$0ED7:  DB  $CC
$0ED8:  DB  $05
$0ED9:  DB  $0F
$0EDA:  DB  $27
$0EDB:  DB  $2D
$0EDC:  DB  $47
$0EDD:  DB  $4C
$0EDE:  DB  $89
$0EDF:  DB  $11
$0EE0:  DB  $2D
$0EE1:  DB  $4D
$0EE2:  DB  $0D
$0EE3:  DB  $17
$0EE4:  DB  $BF
$0EE5:  DB  $11
$0EE6:  DB  $1F
$0EE7:  DB  $1D
$0EE8:  DB  $BB
$0EE9:  DB  $01
$0EEA:  DB  $2F
$0EEB:  DB  $2D
$0EEC:  DB  $0D
$0EED:  DB  $CD
$0EEE:  DB  $01
$0EEF:  DB  $49
$0EF0:  DB  $16
$0EF1:  DB  $BE
$0EF2:  DB  $01
$0EF3:  DB  $4F
$0EF4:  DB  $0F
$0EF5:  DB  $14
$0EF6:  DB  $C9
$0EF7:  DB  $26
$0EF8:  DB  $2F
$0EF9:  DB  $06
$0EFA:  DB  $4E
$0EFB:  DB  $09
$0EFC:  DB  $21
$0EFD:  DB  $2C
$0EFE:  DB  $C9
$0EFF:  DB  $FF
; ══════════════════════════════════════════════════════════════════════
; CHARACTER STROKE DATA – PAGE 3  ($0F00-$0F7F)
; Additional / extended characters
; ══════════════════════════════════════════════════════════════════════
$0F00:  DB  $01
$0F01:  DB  $CF
$0F02:  DB  $01
$0F03:  DB  $0C
$0F04:  DB  $27
$0F05:  DB  $C9
$0F06:  DB  $45
$0F07:  DB  $0D
$0F08:  DB  $0F
$0F09:  DB  $0A
$0F0A:  DB  $C9
$0F0B:  DB  $01
$0F0C:  DB  $19
$0F0D:  DB  $4F
$0F0E:  DB  $8F
$0F0F:  DB  $06
$0F10:  DB  $1F
$0F11:  DB  $C9
$0F12:  DB  $21
$0F13:  DB  $2F
$0F14:  DB  $46
$0F15:  DB  $0E
$0F16:  DB  $14
$0F17:  DB  $09
$0F18:  DB  $34
$0F19:  DB  $C9
$0F1A:  DB  $07
$0F1B:  DB  $4F
$0F1C:  DB  $4D
$0F1D:  DB  $1A
$0F1E:  DB  $0B
$0F1F:  DB  $A9
$0F20:  DB  $16
$0F21:  DB  $3E
$0F22:  DB  $34
$0F23:  DB  $1C
$0F24:  DB  $02
$0F25:  DB  $3A
$0F26:  DB  $C9
$0F27:  DB  $47
$0F28:  DB  $0A
$0F29:  DB  $4A
$0F2A:  DB  $4B
$0F2B:  DB  $C9
$0F2C:  DB  $01
$0F2D:  DB  $4F
$0F2E:  DB  $14
$0F2F:  DB  $BA
$0F30:  DB  $07
$0F31:  DB  $4F
$0F32:  DB  $44
$0F33:  DB  $0C
$0F34:  DB  $27
$0F35:  DB  $29
$0F36:  DB  $C9
$0F37:  DB  $06
$0F38:  DB  $4E
$0F39:  DB  $2C
$0F3A:  DB  $17
$0F3B:  DB  $99
$0F3C:  DB  $01
$0F3D:  DB  $49
$0F3E:  DB  $39
$0F3F:  DB  $3F
$0F40:  DB  $9F
$0F41:  DB  $01
$0F42:  DB  $49
$0F43:  DB  $4C
$0F44:  DB  $0C
$0F45:  DB  $4C
$0F46:  DB  $4F
$0F47:  DB  $8F
$0F48:  DB  $01
$0F49:  DB  $19
$0F4A:  DB  $4D
$0F4B:  DB  $0D
$0F4C:  DB  $07
$0F4D:  DB  $CF
$0F4E:  DB  $11
$0F4F:  DB  $3F
$0F50:  DB  $07
$0F51:  DB  $8C
$0F52:  DB  $01
$0F53:  DB  $0F
$0F54:  DB  $27
$0F55:  DB  $29
$0F56:  DB  $CB
$0F57:  DB  $07
$0F58:  DB  $09
$0F59:  DB  $BC
$0F5A:  DB  $01
$0F5B:  DB  $0F
$0F5C:  DB  $3F
$0F5D:  DB  $39
$0F5E:  DB  $89
$0F5F:  DB  $11
$0F60:  DB  $4F
$0F61:  DB  $0F
$0F62:  DB  $8D
$0F63:  DB  $01
$0F64:  DB  $29
$0F65:  DB  $4F
$0F66:  DB  $25
$0F67:  DB  $8D
$0F68:  DB  $06
$0F69:  DB  $1C
$0F6A:  DB  $27
$0F6B:  DB  $BD
$0F6C:  DB  $06
$0F6D:  DB  $1F
$0F6E:  DB  $2E
$0F6F:  DB  $1D
$0F70:  DB  $8E
$0F71:  DB  $48
$0F72:  DB  $4C
$0F73:  DB  $0C
$0F74:  DB  $08
$0F75:  DB  $48
$0F76:  DB  $4C
$0F77:  DB  $0C
$0F78:  DB  $08
$0F79:  DB  $C8
$0F7A:  DB  $FF
$0F7B:  DB  $FF
$0F7C:  DB  $FF
$0F7D:  DB  $FF
$0F7E:  DB  $FF
$0F7F:  DB  $FF
; ══════════════════════════════════════════════════════════════════════
; ADDITIONAL INTERRUPT SERVICE ROUTINES  ($0F80-$0FEF)
; ══════════════════════════════════════════════════════════════════════
INT_VEC_F80:    ; $0F80
$0F80:  9C          RSP
$0F81:  33 02       COM PORT_B_DDR
$0F83:  26 FE       BNE $0F83
$0F85:  A6 FF       LDA A,#$FF
$0F87:  B7 06       STA A,PORT_D_DDR
$0F89:  3F 09       CLR TIMER_STATUS
$0F8B:  83          SWI
$0F8C:  AE 01       LDX A,#$01
$0F8E:  A6 F0       LDA A,#$F0
$0F90:  AD 49       BSR $0FDB
$0F92:  A9 BA       ADC A,#$BA
$0F94:  AD 45       BSR $0FDB
$0F96:  5A          DEC X
$0F97:  27 F5       BEQ $0F8E
$0F99:  4F          CLR A
$0F9A:  83          SWI
$0F9B:  AE 20       LDX A,#$20
$0F9D:  F7          STA A,,X
$0F9E:  46          ROR A
$0F9F:  5C          INC X
$0FA0:  26 FB       BNE $0F9D
$0FA2:  46          ROR A
$0FA3:  AE 20       LDX A,#$20
$0FA5:  F8          EOR A,,X
$0FA6:  26 FE       BNE $0FA6
$0FA8:  F6          LDA A,,X
$0FA9:  46          ROR A
$0FAA:  5C          INC X
$0FAB:  2A F8       BPL $0FA5
$0FAD:  46          ROR A
$0FAE:  46          ROR A
$0FAF:  24 EA       BCC $0F9B
$0FB1:  83          SWI
$0FB2:  AE C8       LDX A,#$C8
$0FB4:  BF 27       STX cmd_buf
$0FB6:  AE 81       LDX A,#$81
$0FB8:  BF 2A       STX cursor_x_lo
$0FBA:  4F          CLR A
$0FBB:  BD 27       JSR cmd_buf
$0FBD:  3C 29       INC param2
$0FBF:  26 FA       BNE $0FBB
$0FC1:  3C 28       INC param1
$0FC3:  09 28 F5    BRCLR 4,param1,$0FBB
$0FC6:  43          COM A
$0FC7:  26 FE       BNE $0FC7
$0FC9:  83          SWI
$0FCA:  9A          CLI
$0FCB:  9B          SEI
$0FCC:  2C FE       BMC $0FCC
$0FCE:  B0 7C       SUB A,$7C
$0FD0:  26 FE       BNE $0FD0
$0FD2:  B3 7D       CPX $7D
$0FD4:  26 FE       BNE $0FD4
$0FD6:  0B 32 FD    BRCLR 5,$32,$0FD6
$0FD9:  20 AE       BRA $0F89
$0FDB:  E7 04       STA A,$04,X
$0FDD:  A6 55       LDA A,#$55
$0FDF:  F7          STA A,,X
$0FE0:  F1          CMP A,,X
$0FE1:  26 FE       BNE $0FE1
$0FE3:  48          ASL A
$0FE4:  2B F9       BMI $0FDF
$0FE6:  81          RTS
INT_VEC_FE7:    ; $0FE7
$0FE7:  3C 02       INC PORT_B_DDR
$0FE9:  80          RTI
INT_VEC_FEA:    ; $0FEA
$0FEA:  1F 09       BCLR 7,TIMER_STATUS
INT_VEC_FEC:    ; $0FEC
$0FEC:  37 32       ASR $32
$0FEE:  80          RTI
$0FEF:  21 0F       BRN $1000
$0FF1:  DW  $EA0F    ; ? → $EA0F
$0FF3:  DW  $EC0F    ; ? → $EC0F
$0FF5:  DW  $E70F    ; ? → $E70F
$0FF7:  DW  $800A    ; ? → $800A
$0FF9:  DW  $1F09    ; ? → $1F09
$0FFB:  DW  $E707    ; ? → $E707
$0FFD:  DW  $CB06    ; ? → $CB06
$0FFF:  B2          SBC A,PORT_A_DDR
; ════════════════════════════════════════════════════════════════════════
; APPENDIX: CHARACTER STROKE RECONSTRUCTION TABLE
;
; For each printable ASCII character the table lists every stroke in order.
; Stroke format:  [PEN] Xmag Ymag DIR  description
;   PEN  = DOWN (draw) or UP (move without drawing)
;   Xmag = X motor steps at max size (S=63); scale with S/63
;   Ymag = Y motor steps at max size (S=63)
;   DIR  = direction sign of the combined motion (POS/NEG)
;
; NOTE: The exact X/Y signs (left/right, up/down) depend on the
; motor phase-table orientation in MOTOR_DRIVE ($0258).
; From the self-test output and code analysis:
;   X positive = pen moves RIGHT
;   Y positive = paper feeds  DOWN (pen moves UP on paper)
;   Direction sign NEG inverts both X and Y of the movement vector.
; ════════════════════════════════════════════════════════════════════════
; Char 0x20 ' '  addr=$0C00  1 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $E0  PEN=UP    X=122steps(idx0)  Y=  0steps(idx6)  POS [LAST]
; Char 0x21 '!'  addr=$0C01  10 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $11  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  POS
;   stroke 2: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 3: $2A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  NEG
;   stroke 4: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 5: $14  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  POS
;   stroke 6: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 7: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 8: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 9: $2B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  NEG
;   stroke 10: $9C  PEN=UP    X= 60steps(idx4)  Y= 60steps(idx1)  NEG [LAST]
; Char 0x22 '"'  addr=$0C0B  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $15  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  POS
;   stroke 2: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 3: $37  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  POS
;   stroke 4: $BD  PEN=UP    X= 43steps(idx5)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x23 '#'  addr=$0C0F  11 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $03  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  POS
;   stroke 2: $4B  PEN=DOWN  X= 20steps(idx3)  Y= 30steps(idx4)  NEG
;   stroke 3: $3B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  NEG
;   stroke 4: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 5: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 6: $3D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  NEG
;   stroke 7: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 8: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 9: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 10: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 11: $99  PEN=UP    X= 88steps(idx1)  Y= 60steps(idx1)  NEG [LAST]
; Char 0x24 '$'  addr=$0C1A  10 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $03  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  POS
;   stroke 2: $3A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx3)  NEG
;   stroke 3: $4B  PEN=DOWN  X= 20steps(idx3)  Y= 30steps(idx4)  NEG
;   stroke 4: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 5: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 6: $3E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx3)  NEG
;   stroke 7: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 8: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 9: $2F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  NEG
;   stroke 10: $A9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x25 '%'  addr=$0C24  12 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $4E  PEN=DOWN  X=  9steps(idx6)  Y= 30steps(idx4)  NEG
;   stroke 3: $26  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  POS
;   stroke 4: $1E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx1)  NEG
;   stroke 5: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 6: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 7: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 8: $23  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  POS
;   stroke 9: $2A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  NEG
;   stroke 10: $3A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx3)  NEG
;   stroke 11: $3B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  NEG
;   stroke 12: $AB  PEN=UP    X= 20steps(idx3)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x26 '&'  addr=$0C30  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $43  PEN=DOWN  X= 20steps(idx3)  Y= 30steps(idx4)  POS
;   stroke 2: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 3: $0B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  NEG
;   stroke 4: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 5: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 6: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 7: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x27 '''  addr=$0C37  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $14  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  POS
;   stroke 2: $2F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  NEG
;   stroke 3: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 4: $1E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx1)  NEG
;   stroke 5: $AE  PEN=UP    X=  9steps(idx6)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x28 '('  addr=$0C3C  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $31  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  POS
;   stroke 2: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 3: $1E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx1)  NEG
;   stroke 4: $BF  PEN=UP    X=  9steps(idx7)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x29 ')'  addr=$0C40  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $11  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  POS
;   stroke 2: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 3: $3E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx3)  NEG
;   stroke 4: $9F  PEN=UP    X=  9steps(idx7)  Y= 60steps(idx1)  NEG [LAST]
; Char 0x2A '*'  addr=$0C44  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $4E  PEN=DOWN  X=  9steps(idx6)  Y= 30steps(idx4)  NEG
;   stroke 3: $42  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  POS
;   stroke 4: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 5: $27  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  POS
;   stroke 6: $A9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x2B '+'  addr=$0C4A  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $22  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  POS
;   stroke 2: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 3: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 4: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 5: $CC  PEN=UP    X= 60steps(idx4)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x2C ','  addr=$0C4F  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $10  PEN=DOWN  X=122steps(idx0)  Y= 60steps(idx1)  POS
;   stroke 2: $2B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  NEG
;   stroke 3: $1B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx1)  NEG
;   stroke 4: $1A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx1)  NEG
;   stroke 5: $AA  PEN=UP    X= 20steps(idx2)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x2D '-'  addr=$0C54  2 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $04  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  POS
;   stroke 2: $CC  PEN=UP    X= 60steps(idx4)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x2E '.'  addr=$0C56  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $11  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  POS
;   stroke 2: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 3: $2A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  NEG
;   stroke 4: $1A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx1)  NEG
;   stroke 5: $99  PEN=UP    X= 88steps(idx1)  Y= 60steps(idx1)  NEG [LAST]
; Char 0x2F '/'  addr=$0C5B  2 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $CE  PEN=UP    X=  9steps(idx6)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x30 '0'  addr=$0C5D  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 3: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 4: $4A  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  NEG
;   stroke 5: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 6: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 7: $CE  PEN=UP    X=  9steps(idx6)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x31 '1'  addr=$0C64  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $11  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  POS
;   stroke 2: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 3: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 4: $2F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  NEG
;   stroke 5: $9E  PEN=UP    X=  9steps(idx6)  Y= 60steps(idx1)  NEG [LAST]
; Char 0x32 '2'  addr=$0C69  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $06  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  POS
;   stroke 2: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 3: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 4: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 5: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x33 '3'  addr=$0C6E  8 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $06  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  POS
;   stroke 2: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 3: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 4: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 5: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 6: $4A  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  NEG
;   stroke 7: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 8: $8A  PEN=UP    X= 20steps(idx2)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x34 '4'  addr=$0C76  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $31  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  POS
;   stroke 2: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 3: $0B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  NEG
;   stroke 4: $CB  PEN=UP    X= 20steps(idx3)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x35 '5'  addr=$0C7A  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 3: $4C  PEN=DOWN  X= 60steps(idx4)  Y= 30steps(idx4)  NEG
;   stroke 4: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 5: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 6: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x36 '6'  addr=$0C80  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $04  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  POS
;   stroke 2: $3D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  NEG
;   stroke 3: $4A  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  NEG
;   stroke 4: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 5: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 6: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 7: $CE  PEN=UP    X=  9steps(idx6)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x37 '7'  addr=$0C87  3 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $4F  PEN=DOWN  X=  9steps(idx7)  Y= 30steps(idx4)  NEG
;   stroke 3: $8F  PEN=UP    X=  9steps(idx7)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x38 '8'  addr=$0C8A  10 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $11  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  POS
;   stroke 2: $0B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  NEG
;   stroke 3: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 4: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 5: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 6: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 7: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 8: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 9: $4A  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  NEG
;   stroke 10: $99  PEN=UP    X= 88steps(idx1)  Y= 60steps(idx1)  NEG [LAST]
; Char 0x39 '9'  addr=$0C94  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 3: $4E  PEN=DOWN  X=  9steps(idx6)  Y= 30steps(idx4)  NEG
;   stroke 4: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 5: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 6: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 7: $CD  PEN=UP    X= 43steps(idx5)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x3A ':'  addr=$0C9B  10 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $33  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  POS
;   stroke 2: $2B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  NEG
;   stroke 3: $2A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  NEG
;   stroke 4: $3A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx3)  NEG
;   stroke 5: $3B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  NEG
;   stroke 6: $35  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  POS
;   stroke 7: $3E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx3)  NEG
;   stroke 8: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 9: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 10: $BD  PEN=UP    X= 43steps(idx5)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x3B ';'  addr=$0CA5  10 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $20  PEN=DOWN  X=122steps(idx0)  Y=  0steps(idx2)  POS
;   stroke 2: $3B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  NEG
;   stroke 3: $2B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  NEG
;   stroke 4: $2A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  NEG
;   stroke 5: $3A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx3)  NEG
;   stroke 6: $35  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  POS
;   stroke 7: $3E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx3)  NEG
;   stroke 8: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 9: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 10: $BD  PEN=UP    X= 43steps(idx5)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x3C '<'  addr=$0CAF  3 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $41  PEN=DOWN  X= 88steps(idx1)  Y= 30steps(idx4)  POS
;   stroke 2: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 3: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x3D '='  addr=$0CB2  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $45  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  POS
;   stroke 2: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 3: $03  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  POS
;   stroke 4: $CB  PEN=UP    X= 20steps(idx3)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x3E '>'  addr=$0CB6  3 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 3: $8F  PEN=UP    X=  9steps(idx7)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x3F '?'  addr=$0CB9  8 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $21  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  POS
;   stroke 2: $2A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  NEG
;   stroke 3: $23  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  POS
;   stroke 4: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 5: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 6: $4E  PEN=DOWN  X=  9steps(idx6)  Y= 30steps(idx4)  NEG
;   stroke 7: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 8: $8D  PEN=UP    X= 43steps(idx5)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x40 '@'  addr=$0CC1  10 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $33  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  POS
;   stroke 2: $3D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  NEG
;   stroke 3: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 4: $1B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx1)  NEG
;   stroke 5: $2A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  NEG
;   stroke 6: $4B  PEN=DOWN  X= 20steps(idx3)  Y= 30steps(idx4)  NEG
;   stroke 7: $4E  PEN=DOWN  X=  9steps(idx6)  Y= 30steps(idx4)  NEG
;   stroke 8: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 9: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 10: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x41 'A'  addr=$0CCB  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 3: $2F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  NEG
;   stroke 4: $49  PEN=DOWN  X= 88steps(idx1)  Y= 30steps(idx4)  NEG
;   stroke 5: $4C  PEN=DOWN  X= 60steps(idx4)  Y= 30steps(idx4)  NEG
;   stroke 6: $8C  PEN=UP    X= 60steps(idx4)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x42 'B'  addr=$0CD1  8 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 3: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 4: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 5: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 6: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 7: $4A  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  NEG
;   stroke 8: $89  PEN=UP    X= 88steps(idx1)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x43 'C'  addr=$0CD9  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $42  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  POS
;   stroke 2: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 3: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 4: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 5: $CE  PEN=UP    X=  9steps(idx6)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x44 'D'  addr=$0CDE  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 3: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 4: $4A  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  NEG
;   stroke 5: $89  PEN=UP    X= 88steps(idx1)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x45 'E'  addr=$0CE3  8 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $49  PEN=DOWN  X= 88steps(idx1)  Y= 30steps(idx4)  NEG
;   stroke 3: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 4: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 5: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 6: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 7: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 8: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x46 'F'  addr=$0CEB  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $21  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  POS
;   stroke 2: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 3: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 4: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 5: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 6: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 7: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x47 'G'  addr=$0CF2  8 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $46  PEN=DOWN  X=  9steps(idx6)  Y= 30steps(idx4)  POS
;   stroke 2: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 3: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 4: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 5: $4C  PEN=DOWN  X= 60steps(idx4)  Y= 30steps(idx4)  NEG
;   stroke 6: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 7: $4C  PEN=DOWN  X= 60steps(idx4)  Y= 30steps(idx4)  NEG
;   stroke 8: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x48 'H'  addr=$0CFA  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 3: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 4: $4C  PEN=DOWN  X= 60steps(idx4)  Y= 30steps(idx4)  NEG
;   stroke 5: $4F  PEN=DOWN  X=  9steps(idx7)  Y= 30steps(idx4)  NEG
;   stroke 6: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x49 'I'  addr=$0D00  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $11  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  POS
;   stroke 2: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 3: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 4: $2F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  NEG
;   stroke 5: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 6: $BF  PEN=UP    X=  9steps(idx7)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x4A 'J'  addr=$0D06  3 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 3: $BF  PEN=UP    X=  9steps(idx7)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x4B 'K'  addr=$0D09  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 3: $0B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  NEG
;   stroke 4: $4F  PEN=DOWN  X=  9steps(idx7)  Y= 30steps(idx4)  NEG
;   stroke 5: $14  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  POS
;   stroke 6: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x4C 'L'  addr=$0D0F  3 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 3: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x4D 'M'  addr=$0D12  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 3: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 4: $4F  PEN=DOWN  X=  9steps(idx7)  Y= 30steps(idx4)  NEG
;   stroke 5: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x4E 'N'  addr=$0D17  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 3: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 4: $49  PEN=DOWN  X= 88steps(idx1)  Y= 30steps(idx4)  NEG
;   stroke 5: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x4F 'O'  addr=$0D1C  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 3: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 4: $4A  PEN=DOWN  X= 20steps(idx2)  Y= 30steps(idx4)  NEG
;   stroke 5: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 6: $8A  PEN=UP    X= 20steps(idx2)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x50 'P'  addr=$0D22  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 3: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 4: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 5: $8C  PEN=UP    X= 60steps(idx4)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x51 'Q'  addr=$0D27  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $23  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  POS
;   stroke 2: $49  PEN=DOWN  X= 88steps(idx1)  Y= 30steps(idx4)  NEG
;   stroke 3: $4E  PEN=DOWN  X=  9steps(idx6)  Y= 30steps(idx4)  NEG
;   stroke 4: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 5: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 6: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 7: $CA  PEN=UP    X= 20steps(idx2)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x52 'R'  addr=$0D2E  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 3: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 4: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 5: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 6: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 7: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x53 'S'  addr=$0D35  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 3: $4B  PEN=DOWN  X= 20steps(idx3)  Y= 30steps(idx4)  NEG
;   stroke 4: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 5: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 6: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 7: $CE  PEN=UP    X=  9steps(idx6)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x54 'T'  addr=$0D3C  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $21  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  POS
;   stroke 2: $2F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  NEG
;   stroke 3: $0F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  NEG
;   stroke 4: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x55 'U'  addr=$0D40  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 3: $49  PEN=DOWN  X= 88steps(idx1)  Y= 30steps(idx4)  NEG
;   stroke 4: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x56 'V'  addr=$0D44  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $0B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  NEG
;   stroke 3: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 4: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x57 'W'  addr=$0D48  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 3: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 4: $2B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  NEG
;   stroke 5: $49  PEN=DOWN  X= 88steps(idx1)  Y= 30steps(idx4)  NEG
;   stroke 6: $CF  PEN=UP    X=  9steps(idx7)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x58 'X'  addr=$0D4E  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 3: $4F  PEN=DOWN  X=  9steps(idx7)  Y= 30steps(idx4)  NEG
;   stroke 4: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 5: $0E  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  NEG
;   stroke 6: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x59 'Y'  addr=$0D54  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 3: $47  PEN=DOWN  X=  9steps(idx7)  Y= 30steps(idx4)  POS
;   stroke 4: $A9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x5A 'Z'  addr=$0D5C  9 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 3: $4E  PEN=DOWN  X=  9steps(idx6)  Y= 30steps(idx4)  NEG
;   stroke 4: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 5: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 6: $3B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  NEG
;   stroke 7: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 8: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 9: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x5B '['  addr=$0D65  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $31  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  POS
;   stroke 2: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 3: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 4: $BF  PEN=UP    X=  9steps(idx7)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x5C '\'  addr=$0D69  2 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $06  PEN=DOWN  X=  9steps(idx6)  Y= 60steps(idx0)  POS
;   stroke 2: $CA  PEN=UP    X= 20steps(idx2)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x5D ']'  addr=$0D6B  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $11  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  POS
;   stroke 2: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 3: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 4: $9F  PEN=UP    X=  9steps(idx7)  Y= 60steps(idx1)  NEG [LAST]
; Char 0x5E '^'  addr=$0D6F  3 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $04  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  POS
;   stroke 2: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 3: $CC  PEN=UP    X= 60steps(idx4)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x5F '_'  addr=$0D72  1 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $E8  PEN=UP    X=122steps(idx0)  Y=  0steps(idx6)  NEG [LAST]
; Char 0x60 '`'  addr=$0D73  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $34  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  POS
;   stroke 2: $2F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  NEG
;   stroke 3: $3F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  NEG
;   stroke 4: $3E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx3)  NEG
;   stroke 5: $AE  PEN=UP    X=  9steps(idx6)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x61 'a'  addr=$0D78  8 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $15  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  POS
;   stroke 2: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 3: $3A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx3)  NEG
;   stroke 4: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 5: $0B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  NEG
;   stroke 6: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 7: $3A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx3)  NEG
;   stroke 8: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x62 'b'  addr=$0D80  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 3: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 4: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 5: $8D  PEN=UP    X= 43steps(idx5)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x63 'c'  addr=$0D85  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $34  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  POS
;   stroke 2: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 3: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 4: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 5: $BA  PEN=UP    X= 20steps(idx2)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x64 'd'  addr=$0D8A  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $37  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx3)  POS
;   stroke 2: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 3: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 4: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 5: $BD  PEN=UP    X= 43steps(idx5)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x65 'e'  addr=$0D8F  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $03  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  POS
;   stroke 2: $3B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  NEG
;   stroke 3: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 4: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 5: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 6: $B9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x66 'f'  addr=$0D95  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $21  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  POS
;   stroke 2: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 3: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 4: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 5: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 6: $2F  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  NEG
;   stroke 7: $BF  PEN=UP    X=  9steps(idx7)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x67 'g'  addr=$0D9C  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $33  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  POS
;   stroke 2: $1A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx1)  NEG
;   stroke 3: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 4: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 5: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 6: $88  PEN=UP    X=122steps(idx0)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x68 'h'  addr=$0DA2  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 3: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 4: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 5: $B9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x69 'i'  addr=$0DA7  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $26  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  POS
;   stroke 2: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 3: $24  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  POS
;   stroke 4: $A9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x6A 'j'  addr=$0DAB  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $28  PEN=DOWN  X=122steps(idx0)  Y=  0steps(idx2)  NEG
;   stroke 3: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 4: $35  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  POS
;   stroke 5: $BE  PEN=UP    X=  9steps(idx6)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x6B 'k'  addr=$0DB0  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $07  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx0)  POS
;   stroke 2: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 3: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 4: $3D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  NEG
;   stroke 5: $1B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx1)  NEG
;   stroke 6: $B9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x6C 'l'  addr=$0DB6  3 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $27  PEN=DOWN  X=  9steps(idx7)  Y=  0steps(idx2)  POS
;   stroke 2: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 3: $B9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x6D 'm'  addr=$0DB9  8 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 3: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 4: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 5: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 6: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 7: $3D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  NEG
;   stroke 8: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x6E 'n'  addr=$0DC1  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 3: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 4: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 5: $B9  PEN=UP    X= 88steps(idx1)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x6F 'o'  addr=$0DC6  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $34  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  POS
;   stroke 2: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 3: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 4: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 5: $BC  PEN=UP    X= 60steps(idx4)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x70 'p'  addr=$0DCC  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $0D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  NEG
;   stroke 2: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 3: $3B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  NEG
;   stroke 4: $8A  PEN=UP    X= 20steps(idx2)  Y= 60steps(idx0)  NEG [LAST]
; Char 0x71 'q'  addr=$0DD0  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $32  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx3)  POS
;   stroke 2: $1A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx1)  NEG
;   stroke 3: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 4: $3D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx3)  NEG
;   stroke 5: $38  PEN=DOWN  X=122steps(idx0)  Y=  0steps(idx3)  NEG
;   stroke 6: $C8  PEN=UP    X=122steps(idx0)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x72 'r'  addr=$0DD6  5 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $05  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  POS
;   stroke 2: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 3: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 4: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 5: $BD  PEN=UP    X= 43steps(idx5)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x73 's'  addr=$0DDB  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $02  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  POS
;   stroke 2: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 3: $3A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx3)  NEG
;   stroke 4: $1B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx1)  NEG
;   stroke 5: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 6: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 7: $BC  PEN=UP    X= 60steps(idx4)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x74 't'  addr=$0DE2  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $05  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  POS
;   stroke 2: $2D  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  NEG
;   stroke 3: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 4: $1F  PEN=DOWN  X=  9steps(idx7)  Y= 60steps(idx1)  NEG
;   stroke 5: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 6: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 7: $BA  PEN=UP    X= 20steps(idx2)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x75 'u'  addr=$0DE9  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $05  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  POS
;   stroke 2: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 3: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 4: $BD  PEN=UP    X= 43steps(idx5)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x76 'v'  addr=$0DED  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $05  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  POS
;   stroke 2: $0B  PEN=DOWN  X= 20steps(idx3)  Y= 60steps(idx0)  NEG
;   stroke 3: $29  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  NEG
;   stroke 4: $CD  PEN=UP    X= 43steps(idx5)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x77 'w'  addr=$0DF1  7 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $05  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  POS
;   stroke 2: $0A  PEN=DOWN  X= 20steps(idx2)  Y= 60steps(idx0)  NEG
;   stroke 3: $19  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  NEG
;   stroke 4: $2B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  NEG
;   stroke 5: $2A  PEN=DOWN  X= 20steps(idx2)  Y=  0steps(idx2)  NEG
;   stroke 6: $39  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  NEG
;   stroke 7: $CD  PEN=UP    X= 43steps(idx5)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x78 'x'  addr=$0DF8  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $01  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  POS
;   stroke 2: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 3: $05  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  POS
;   stroke 4: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x79 'y'  addr=$0DFC  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 2: $05  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  POS
;   stroke 3: $0C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  NEG
;   stroke 4: $AA  PEN=UP    X= 20steps(idx2)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x7A 'z'  addr=$0E00  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $05  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx0)  POS
;   stroke 2: $4D  PEN=DOWN  X= 43steps(idx5)  Y= 30steps(idx4)  NEG
;   stroke 3: $09  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx0)  NEG
;   stroke 4: $C9  PEN=UP    X= 88steps(idx1)  Y= 30steps(idx4)  NEG [LAST]
; Char 0x7B '{'  addr=$0E04  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $31  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx3)  POS
;   stroke 2: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 3: $1C  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx1)  NEG
;   stroke 4: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 5: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 6: $BF  PEN=UP    X=  9steps(idx7)  Y=  0steps(idx3)  NEG [LAST]
; Char 0x7C '|'  addr=$0E0A  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $21  PEN=DOWN  X= 88steps(idx1)  Y=  0steps(idx2)  POS
;   stroke 2: $2B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx2)  NEG
;   stroke 3: $25  PEN=DOWN  X= 43steps(idx5)  Y=  0steps(idx2)  POS
;   stroke 4: $AF  PEN=UP    X=  9steps(idx7)  Y=  0steps(idx2)  NEG [LAST]
; Char 0x7D '}'  addr=$0E0E  6 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $11  PEN=DOWN  X= 88steps(idx1)  Y= 60steps(idx1)  POS
;   stroke 2: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 3: $3C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx3)  NEG
;   stroke 4: $2C  PEN=DOWN  X= 60steps(idx4)  Y=  0steps(idx2)  NEG
;   stroke 5: $2E  PEN=DOWN  X=  9steps(idx6)  Y=  0steps(idx2)  NEG
;   stroke 6: $9F  PEN=UP    X=  9steps(idx7)  Y= 60steps(idx1)  NEG [LAST]
; Char 0x7E '~'  addr=$0E14  4 stroke(s)
; ──────────────────────────────────────────────────────────────
;   stroke 1: $04  PEN=DOWN  X= 60steps(idx4)  Y= 60steps(idx0)  POS
;   stroke 2: $1D  PEN=DOWN  X= 43steps(idx5)  Y= 60steps(idx1)  NEG
;   stroke 3: $3B  PEN=DOWN  X= 20steps(idx3)  Y=  0steps(idx3)  NEG
;   stroke 4: $CC  PEN=UP    X= 60steps(idx4)  Y= 30steps(idx4)  NEG [LAST]
==============================================================================

ROM HEX DUMPS

                                ROM HEX DUMPS
==============================================================================