; 12 bytes per char ; 0x20 - 0x5F = 32 - 96 = 64*12 = 768 bytes ; FIXME: if only 32 chars then we can make the code a lot simpler/smaller ; + only 2 pages of data (instead of 4) ; + calculations, no need for high bit in multiply colors_hi: .byte $C4,$CF colors_lo: .byte $FC,$4C ;================================== ; put_char ; ypos = Y (must be multiple of 2) ; xpos = X ; char = A ; waste 256 bytes to avoid crossing pages and muly by 6 ; 4+24+37+(43*3)+3+34+(43*3)+5 = 365 put_char: ; point to font location sec ; 2 sbc #'@' ; 2 ; multiply by 8... 0..63 -> 0..511 1 1111 ; shift left by 4 ; pha ; 3 ; lsr ; 2 ; lsr ; 2 ; lsr ; 2 ; clc ; 2 ; adc #>font_high ; 2 ; sta fh1_smc+2 ; 4 ; sta fh2_smc+2 ; 4 ; clc ; 2 ; adc #1 ; 2 ; sta fl1_smc+2 ; 4 ; sta fl2_smc+2 ; 4 ;============ ; 4 ; pla ; 4 asl ; 2 asl ; 2 asl ; 2 adc #