asmgen/demo/transposed_fonts/driver.s

108 lines
1.4 KiB
ArmAsm

*= $0006
FIRST_CHAR_OF_SCREEN .ds 1
FIRST_CHAR_OF_LINE .ds 1
CURRENT_CHAR .ds 1
FRAME_COUNT .ds 1
*= $00eb
hgr_ptr .ds 2
font_ptr .ds 2
*= $00fa
scratch_0 .ds 1
scratch_x .ds 1
scratch_y .ds 1
*= $5000
start_set
jsr set_hires
jsr clrscr
jsr driver
jsr set_text
rts
brk
driver
lda #$00
sta FIRST_CHAR_OF_SCREEN
lda #64
sta FRAME_COUNT
page_loop
jsr page
dec FRAME_COUNT
bne page_loop
rts
; os memory map
KEYBOARD = $c000
KBDSTROBE = $c010
CLRTEXT = $c050
SETTEXT = $c051
CLRMIXED = $c052
SETMIXED = $c053
TXTPAGE1 = $c054
TXTPAGE2 = $c055
CLRHIRES = $c056
SETHIRES = $c057
set_hires bit CLRTEXT ; start with HGR page 1, full screen
bit CLRMIXED
bit TXTPAGE1
bit SETHIRES
rts
set_text bit SETTEXT
bit CLRMIXED
bit TXTPAGE1
bit CLRHIRES
rts
; clear hires page 1 only
clrscr lda #$20
sta clrscr_smc+2
lda #0
ldy #0
clrscr_smc sta $ff00,y
iny
bne clrscr_smc
inc clrscr_smc+2
ldx clrscr_smc+2
cpx #$40
bcc clrscr_smc
rts
*= $5074
page
inc FIRST_CHAR_OF_SCREEN
lda FIRST_CHAR_OF_SCREEN
sta FIRST_CHAR_OF_LINE
ldy #$00
line_loop
ldx #$00
lda FIRST_CHAR_OF_LINE
sta CURRENT_CHAR
char_loop
lda CURRENT_CHAR
jsr font_test
inc CURRENT_CHAR
inx
cpx #40
bcc char_loop
inc FIRST_CHAR_OF_LINE
iny
cpy #24
bcc line_loop
rts
font_test