100 lines
2.4 KiB
NASM
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
|