asm-test/graphic-font.asm.in

100 lines
2.4 KiB
NASM

; -*-asm-*-
include(`common.m4')
;; BRA r :_gfont_reset ; RESB
;; NOP i ; IRQ
;; _gfont_reset: LDX # ff
;; TXS i
;; JSR a :gfont_init
;; LDA # ^97
;; JSR a :gfont_draw_c2
;; stop: BRA r :stop
;; Set pins 0-4 on Port A to Output
gfont_init: LDA # hh(L_DDR_MASK)
STA a VIA0_DDRA
;; Display ON/OFF:
;; D7 D6 D5 D4 D3 D2 D1 D0
;; 0 0 1 1 1 1 1 D
;;
LDA # %00111111
JSR a :glcd_w_rs0_c2
LDA # %00111111
JSR a :glcd_w_rs0_c1
STZ zp 0
JSR a :glcd_fill
LDA # %01000000 ; Y address
ORA # ^55
JSR a :glcd_w_rs0_c2
LDA # %10111000 ; X page
ORA # ^7
JSR a :glcd_w_rs0_c2
RTS s
;;; begin gfont_draw_c2 (A)
;; begin A << 3
gfont_draw_c2: STA zp 0
STZ zp 1
ASL zp 0
ROL zp 1
ASL zp 0
ROL zp 1
ASL zp 0
ROL zp 1
;; end A << 3
CLC i
LDA # :_bin_res/font_start_l
ADC zp 0
STA zp 0
LDA # :_bin_res/font_start_h
ADC zp 1
STA zp 1
LDY # 4
_gfont_c2_y_loop: LDA (zp),y 0
JSR a :glcd_w_rs1_c2
DEY i
BPL r :_gfont_c2_y_loop
RTS s
;;; end gfont_draw_c2
;;; begin gfont_draw_c1 (A)
;; begin A << 3
gfont_draw_c1: STA zp 0
STZ zp 1
ASL zp 0
ROL zp 1
ASL zp 0
ROL zp 1
ASL zp 0
ROL zp 1
;; end A << 3
CLC i
LDA # :_bin_res/font_start_l
ADC zp 0
STA zp 0
LDA # :_bin_res/font_start_h
ADC zp 1
STA zp 1
LDY # 4
_gfont_c1_y_loop: LDA (zp),y 0
JSR a :glcd_w_rs1_c1
DEY i
BPL r :_gfont_c1_y_loop
RTS s
;;; end gfont_draw_c1