mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-22 10:24:13 +00:00
174 lines
2.2 KiB
ArmAsm
174 lines
2.2 KiB
ArmAsm
|
; Autumn, based on the code in Hellmood's Autumn
|
||
|
|
||
|
; by deater (Vince Weaver) <vince@deater.net>
|
||
|
|
||
|
; Zero Page
|
||
|
BASL = $28
|
||
|
BASH = $29
|
||
|
H2 = $2C
|
||
|
;COLOR = $30
|
||
|
|
||
|
XCOORDL = $F0
|
||
|
XCOORDH = $F1
|
||
|
YCOORDL = $F2
|
||
|
YCOORDH = $F3
|
||
|
EBP1 = $F4
|
||
|
EBP2 = $F5
|
||
|
EBP3 = $F6
|
||
|
EBP4 = $F7
|
||
|
COLORL = $F8
|
||
|
COLORH = $F9
|
||
|
|
||
|
TEMP = $FA
|
||
|
TEMPY = $FB
|
||
|
FRAME = $FC
|
||
|
TEMPX = $FD
|
||
|
|
||
|
|
||
|
; Soft Switches
|
||
|
KEYPRESS= $C000
|
||
|
KEYRESET= $C010
|
||
|
SET_GR = $C050 ; Enable graphics
|
||
|
FULLGR = $C052 ; Full screen, no text
|
||
|
PAGE0 = $C054 ; Page0
|
||
|
PAGE1 = $C055 ; Page1
|
||
|
LORES = $C056 ; Enable LORES graphics
|
||
|
|
||
|
; ROM routines
|
||
|
|
||
|
PLOT = $F800 ; plot, horiz=y, vert=A (A trashed, XY Saved)
|
||
|
SETCOL = $F864
|
||
|
TEXT = $FB36 ;; Set text mode
|
||
|
BASCALC = $FBC1
|
||
|
SETGR = $FB40
|
||
|
HOME = $FC58 ;; Clear the text screen
|
||
|
WAIT = $FCA8 ;; delay 1/2(26+27A+5A^2) us
|
||
|
HLINE = $F819
|
||
|
|
||
|
HGR2 = $F3D8
|
||
|
HPLOT0 = $F457 ; (Y,X) = Horizontal, (A=Vertical)
|
||
|
HCOLOR = $F6EC ; color in x, must be 0..7
|
||
|
|
||
|
autumn:
|
||
|
|
||
|
;===================
|
||
|
; init screen
|
||
|
jsr HGR2 ; 3
|
||
|
ldx #0
|
||
|
stx XCOORDL
|
||
|
stx YCOORDL
|
||
|
stx XCOORDH
|
||
|
stx YCOORDH
|
||
|
stx EBP1
|
||
|
stx EBP2
|
||
|
stx EBP3
|
||
|
stx EBP4
|
||
|
stx COLORH
|
||
|
|
||
|
lda #$4f
|
||
|
sta COLORL
|
||
|
|
||
|
autumn_forever:
|
||
|
|
||
|
clc
|
||
|
rol COLORL ; shl %ax
|
||
|
rol COLORH
|
||
|
|
||
|
ldx XCOORDL
|
||
|
ldy XCOORDH ; save old X
|
||
|
|
||
|
sec
|
||
|
lda XCOORDL
|
||
|
sbc YCOORDL ; X=X-Y
|
||
|
sta XCOORDL
|
||
|
lda XCOORDH
|
||
|
sbc YCOORDH
|
||
|
sta XCOORDH
|
||
|
|
||
|
cmp #$80
|
||
|
ror XCOORDH ; asr X
|
||
|
ror XCOORDL
|
||
|
|
||
|
clc
|
||
|
txa
|
||
|
adc YCOORDL ; y=y+oldx
|
||
|
sta YCOORDL
|
||
|
tya
|
||
|
adc YCOORDH
|
||
|
sta YCOORDH
|
||
|
|
||
|
cmp #$80
|
||
|
ror YCOORDH ; asr Y
|
||
|
ror YCOORDL
|
||
|
|
||
|
; 32 bit rotate of low bit of Y
|
||
|
ror EBP1
|
||
|
ror EBP2
|
||
|
ror EBP3
|
||
|
ror EBP4 ; ror bottom bit of Y through 32 bits
|
||
|
|
||
|
bcs label_11f
|
||
|
|
||
|
clc
|
||
|
lda COLORL
|
||
|
adc #1
|
||
|
sta COLORL
|
||
|
lda COLORH
|
||
|
adc #0
|
||
|
sta COLORH
|
||
|
|
||
|
clc
|
||
|
lda XCOORDL
|
||
|
adc #$80
|
||
|
sta XCOORDL ; X+=0x80
|
||
|
lda XCOORDH
|
||
|
adc #$0
|
||
|
sta XCOORDH
|
||
|
|
||
|
sec
|
||
|
lda YCOORDL
|
||
|
eor #$FF
|
||
|
adc #$0 ; Y=-Y
|
||
|
sta YCOORDL
|
||
|
lda YCOORDH
|
||
|
eor #$FF
|
||
|
adc #$0
|
||
|
sta YCOORDH
|
||
|
|
||
|
label_11f:
|
||
|
|
||
|
; lda COLOR
|
||
|
; and #$fc
|
||
|
; eor #$12
|
||
|
; sta COLOR
|
||
|
|
||
|
lda YCOORDH
|
||
|
bmi autumn_forever ; if negative, loop
|
||
|
|
||
|
lda XCOORDH
|
||
|
and #$f0
|
||
|
bne autumn_forever
|
||
|
|
||
|
put_pixel:
|
||
|
lda COLORL
|
||
|
and #$7
|
||
|
beq black1
|
||
|
cmp #$4
|
||
|
bne not_black2
|
||
|
lda #$5
|
||
|
bne not_black2
|
||
|
black1:
|
||
|
lda #$1
|
||
|
|
||
|
not_black2:
|
||
|
tax
|
||
|
jsr HCOLOR
|
||
|
|
||
|
ldx XCOORDL
|
||
|
ldy XCOORDH
|
||
|
lda YCOORDL
|
||
|
jsr HPLOT0
|
||
|
|
||
|
jmp autumn_forever ; 3
|
||
|
|