fujirun/kfest2018/driver.s
2018-07-20 08:49:49 -07:00

98 lines
1.3 KiB
ArmAsm

FIRST_CHAR_OF_SCREEN = $06
FIRST_CHAR_OF_LINE = $07
CURRENT_CHAR = $08
FRAME_COUNT = $09
*= $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