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 ==============================================================================