108 lines
1.4 KiB
ArmAsm
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
|