mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-12-28 09:30:41 +00:00
faf9179c10
would crash spectacularly when we'd go off the edge
50 lines
811 B
ArmAsm
50 lines
811 B
ArmAsm
;=======================
|
|
; HGR Partial Restore
|
|
;=======================
|
|
; loads from $40 (page2)
|
|
; save to $20 (page1)
|
|
|
|
; restores from X = A<=to<=X
|
|
; Y = SAVED_Y1 to SAVED_Y2
|
|
|
|
hgr_partial_restore:
|
|
sta partial_restore_x1_smc+1
|
|
stx partial_restore_x2_smc+1
|
|
|
|
ldx SAVED_Y2 ; handle wrap around
|
|
cpx #192
|
|
bcc partial_restore_yloop ; assume > 192 off screen negative
|
|
|
|
ldx #0 ; X is end y-co-ord?
|
|
|
|
partial_restore_yloop:
|
|
|
|
lda hposn_low,X
|
|
sta prx_smc2+1
|
|
sta prx_smc1+1
|
|
|
|
lda hposn_high,X
|
|
sta prx_smc2+2
|
|
clc
|
|
adc #$20
|
|
sta prx_smc1+2
|
|
|
|
partial_restore_x2_smc:
|
|
ldy #$27
|
|
partial_restore_xloop:
|
|
prx_smc1:
|
|
lda $d000,Y
|
|
|
|
prx_smc2:
|
|
sta $d000,Y
|
|
dey
|
|
partial_restore_x1_smc:
|
|
cpy #$00
|
|
bpl partial_restore_xloop
|
|
|
|
dex
|
|
cpx SAVED_Y1
|
|
bpl partial_restore_yloop ; urgh bcs gets stuck
|
|
|
|
rts
|