mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-11-01 01:06:33 +00:00
163 lines
2.1 KiB
ArmAsm
163 lines
2.1 KiB
ArmAsm
; TOKEN D734
|
|
; OUTDO (print char in A), calls COUT
|
|
; COUT calls ($0036)
|
|
|
|
CH = $24
|
|
CV = $25
|
|
BASL = $28
|
|
BASH = $29
|
|
CSWL = $36
|
|
SEEDL = $4E
|
|
FORPTR = $85
|
|
LOWTR = $9B
|
|
FACL = $9D
|
|
FACH = $9E
|
|
|
|
FRAME = $FA
|
|
XSAVE = $FB
|
|
STACKSAVE = $FC
|
|
YSAV = $FD
|
|
COUNT = $FE
|
|
DRAW_PAGE = $FF
|
|
|
|
SET_GR = $C050
|
|
SET_TEXT = $C051
|
|
|
|
PAGE0 = $C054
|
|
GETCHAR = $D72C ; loads (FAC),Y and increments FAC
|
|
TOKEN = $D734
|
|
HGR = $F3E2
|
|
COSTBL = $F5BA
|
|
SETTXT = $FB39
|
|
TABV = $FB5B ; store A in CV and call MON_VTAB
|
|
BASCALC = $FBC1
|
|
STORADV = $FBF0 ; store A at (BASL),CH, advancing CH, trash Y
|
|
MON_VTAB = $FC22 ; VTAB to CV
|
|
VTABZ = $FC24 ; VTAB to value in A
|
|
HOME = $FC58
|
|
CLREOL = $FC9C ; clear (BASL),CH to end of line
|
|
CLREOLZ = $FC9E ; clear (BASL),Y to end of line
|
|
|
|
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
|
|
|
|
COUT = $FDED
|
|
COUT1 = $FDF0
|
|
COUTZ = $FDF6 ; cout but ignore inverse flag
|
|
|
|
ypos = $2000
|
|
xpos = $2100
|
|
textl = $2200
|
|
texth = $2300
|
|
which = $2400
|
|
|
|
move:
|
|
lda #0
|
|
sta DRAW_PAGE
|
|
|
|
; jsr SETTXT ; set lo-res text mode
|
|
|
|
; jsr HOME
|
|
|
|
next_frame:
|
|
|
|
ldx #39
|
|
text_loop:
|
|
|
|
txa
|
|
clc
|
|
adc FRAME
|
|
and #$f
|
|
tay
|
|
|
|
lda cosine,Y
|
|
tay
|
|
|
|
lda gr_offsetsh,Y
|
|
clc
|
|
adc DRAW_PAGE
|
|
sta smc+2
|
|
lda gr_offsetsl,Y
|
|
sta smc+1
|
|
|
|
|
|
txa
|
|
and #$f
|
|
tay
|
|
|
|
lda apple,Y
|
|
ora #$80
|
|
smc:
|
|
sta $400,X
|
|
|
|
dex
|
|
bpl text_loop
|
|
|
|
flip_pages:
|
|
; X is $FF at this point
|
|
; ldx #0
|
|
inx
|
|
|
|
lda DRAW_PAGE
|
|
beq done_page
|
|
inx
|
|
done_page:
|
|
ldy PAGE0,X ; set display page to PAGE1 or PAGE2
|
|
|
|
eor #$4 ; flip draw page between $400/$800
|
|
sta DRAW_PAGE
|
|
|
|
;===============
|
|
; clear screen
|
|
|
|
ldx #24
|
|
clear_screen_loop:
|
|
txa
|
|
jsr BASCALC ; A is BASL at end
|
|
lda BASH
|
|
clc
|
|
adc DRAW_PAGE
|
|
sta BASH
|
|
|
|
ldy #0
|
|
jsr CLREOLZ
|
|
dex
|
|
bpl clear_screen_loop
|
|
|
|
|
|
; pause
|
|
|
|
lda #200
|
|
jsr WAIT
|
|
|
|
inc FRAME
|
|
|
|
; bmi grmode
|
|
|
|
; bit SET_TEXT
|
|
; jmp next_frame
|
|
|
|
;grmode:
|
|
; bit SET_GR
|
|
|
|
jmp next_frame
|
|
|
|
|
|
|
|
apple:
|
|
; .byte "][ ELPPA"
|
|
.byte " APPLE ][ 4EVER "
|
|
|
|
cosine:
|
|
.byte 3,3,3,2,2,1,0,0,0,0,0,1,1,2,3,3
|
|
|
|
gr_offsetsh:
|
|
.byte $4,$4,$5,$5
|
|
gr_offsetsl:
|
|
.byte $00,$80,$00,$80
|
|
|
|
blah:
|
|
; want this to be at $3F5, is at $383
|
|
; so load at $372
|
|
|
|
jmp move
|