mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-29 00:31:52 +00:00
ae7ee718b5
shouldn't be allowed on the hrwiki, just gives me ideas
184 lines
2.5 KiB
ArmAsm
184 lines
2.5 KiB
ArmAsm
;============================
|
|
; do the pan
|
|
|
|
horiz_pan:
|
|
|
|
pan_loop:
|
|
|
|
lda #0
|
|
sta COUNT
|
|
sta TICKER
|
|
sta P2_OFFSET
|
|
|
|
pan_outer_outer_loop:
|
|
|
|
ldx #191
|
|
pan_outer_loop:
|
|
|
|
; $2000 ; 0010 -> 0100 0011 -> 0101
|
|
lda hposn_high,X
|
|
sta pil_smc1+2
|
|
sta pil_smc2+2
|
|
sta pil_smc3+2
|
|
; sta pil_smc4+2
|
|
sta pil_smc6+2
|
|
; $4000
|
|
eor #$60
|
|
sta pil_smc5+2
|
|
sta pil_smc7+2
|
|
sta pil_smc8+2
|
|
sta pil_smc9+2
|
|
|
|
; $2000
|
|
lda hposn_low,X
|
|
sta pil_smc1+1
|
|
sta pil_smc2+1
|
|
; sta pil_smc4+1
|
|
sta pil_smc6+1
|
|
sta pil_smc5+1
|
|
sta pil_smc8+1
|
|
|
|
; $2000+1
|
|
|
|
sta pil_smc3+1
|
|
inc pil_smc3+1
|
|
sta pil_smc7+1
|
|
inc pil_smc7+1
|
|
sta pil_smc9+1
|
|
inc pil_smc9+1
|
|
|
|
|
|
stx XSAVE
|
|
|
|
|
|
ldy #0
|
|
|
|
; original: 36*39 = ??
|
|
; updated: 34*39
|
|
|
|
pil_smc1:
|
|
ldx $2000,Y ; ; 4+
|
|
pan_inner_loop:
|
|
|
|
lda left_lookup_main,X ; 4+
|
|
sta TEMPY ; 3
|
|
|
|
pil_smc3:
|
|
ldx $2000+1,Y ; 4+
|
|
lda left_lookup_next,X ; 4+
|
|
ora TEMPY ; 3
|
|
|
|
pil_smc2:
|
|
sta $2000,Y ; 5
|
|
|
|
iny ; 2
|
|
cpy #39 ; 2
|
|
bne pan_inner_loop ; 2/3
|
|
|
|
; leftover
|
|
|
|
; X has $2000,39
|
|
lda left_lookup_main,X ; 4+
|
|
sta TEMPY ; 3
|
|
|
|
pil_smc5:
|
|
ldx $4000 ; 4+
|
|
lda left_lookup_next,X ; 4+
|
|
ora TEMPY ; 3
|
|
|
|
pil_smc6:
|
|
sta $2000,Y ; 5
|
|
|
|
; X has $4000
|
|
lda left_lookup_main,X ; 4+
|
|
sta TEMPY ; 3
|
|
|
|
pil_smc7:
|
|
ldx $4000+1 ; 4+
|
|
lda left_lookup_next,X ; 4+
|
|
ora TEMPY ; 3
|
|
|
|
pil_smc8:
|
|
sta $4000 ; 5
|
|
|
|
lda left_lookup_main,X ; 4+
|
|
pil_smc9:
|
|
sta $4000+1 ; 5
|
|
|
|
; $2038 $2039 $4000 $4001
|
|
;0 DCCBBAA GGFFEED KJJIIHH NNMMLLK
|
|
;1 EDDCCBB HHGGFFE LKKJJII ~~NNMML
|
|
;2 FEEDDCC IIHHGGF MLLKKJJ ~~~~NNM
|
|
;3 GFFEEDD JJIIHHG NMMLLKK ~~~~~~N
|
|
;4 HGGFFEE KKJJIIH ~NNMMLL ~~~~~~~
|
|
;5 IHHGGFF LLKKJJI ~~~NNMM ~~~~~~~
|
|
;6 JIIHHGG MMLLKKJ ~~~~~NN ~~~~~~~
|
|
;7 KJJIIHH NNMMLLK ~~~~~~~ ~~~~~~~
|
|
;8 RQQPPOO UUTTSSR
|
|
|
|
; every 8 clicks need to copy over two more columns
|
|
|
|
ldx XSAVE
|
|
|
|
dex
|
|
; cpx #15 ; #$ff
|
|
; bne pan_outer_loop
|
|
beq done_pan_outer_loop
|
|
jmp pan_outer_loop
|
|
done_pan_outer_loop:
|
|
|
|
lda KEYPRESS
|
|
bmi done_pan
|
|
|
|
; check if update
|
|
; FIXME: use mod 7 table here
|
|
inc TICKER
|
|
lda TICKER
|
|
cmp #7
|
|
bne no_ticker
|
|
|
|
lda #0
|
|
sta TICKER
|
|
inc P2_OFFSET
|
|
inc P2_OFFSET
|
|
|
|
ldx #0
|
|
p2_loop:
|
|
lda hposn_low,X
|
|
sta GBASL
|
|
lda hposn_high,X
|
|
eor #$60
|
|
sta GBASH
|
|
|
|
ldy P2_OFFSET
|
|
lda (GBASL),Y
|
|
pha
|
|
iny
|
|
lda (GBASL),Y
|
|
ldy #1
|
|
sta (GBASL),Y
|
|
dey
|
|
pla
|
|
sta (GBASL),Y
|
|
|
|
inx
|
|
cpx #192
|
|
bne p2_loop
|
|
|
|
|
|
no_ticker:
|
|
inc COUNT
|
|
lda COUNT
|
|
cmp #139
|
|
beq done_pan
|
|
|
|
; bne pan_outer_outer_loop
|
|
jmp pan_outer_outer_loop
|
|
|
|
done_pan:
|
|
bit KEYRESET
|
|
|
|
rts
|
|
|
|
.include "scroll_tables.s"
|