Rework card clear to avoid stack ops

This commit is contained in:
mgcaret 2017-01-21 16:52:20 -08:00
parent d2b79dc4bb
commit 63ca071737

View File

@ -175,36 +175,33 @@ recovdn rts
; zero ram card space ; zero ram card space
rdclear jsr rdinit ; init ramcard rdclear jsr rdinit ; init ramcard
jsr testsize ; get size jsr testsize ; get size
lda numbanks,y ; # of 64Ks to write
beq clrdone ; no memory
lda #$c0 ; 'A' - 1 lda #$c0 ; 'A' - 1
sta $400 ; upper left corner sta $400 ; upper left corner
lda #$00 ; we are going to write this everywhere stz addrl,x ; slinky address 0
sta addrl,x ; slinky address 0 stz addrm,x
sta addrm,x stz addrh,x
sta addrh,x clbnklp inc $400 ; poor mans progress meter
ldx numbanks,y ; # of 64Ks to write
beq clrdone ; no memory
clbnklp phx ; wish the 65xx had more registers
inc $400 ; poor mans progress meter
ldy #$00 ldy #$00
cl64klp ldx #$00 ; loop for all pages in bank cl64klp ldx #$00 ; loop for all pages in bank
cl256lp phx ; loop for all bytes in page cl256lp txa ; loop for all bytes in page
ldx #rx_devno ; more registers, please! ldx #rx_devno
sta data,x ; write a zero to card stz data,x ; write a zero to card
plx tax
dex dex
bne cl256lp bne cl256lp ; 256 byte loop
dey dey
bne cl64klp bne cl64klp ; 64K loop
plx ldx #rx_mslot
dex dec numbanks,x
bne clbnklp bne clbnklp ; if more banks
clrdone ldy #rx_mslot clrdone ldx #rx_mslot
sta pwrup,y ; zero screen holes stz pwrup,x ; zero powerup byte
sta numbanks,y
lda #$a0 ; ' ' lda #$a0 ; ' '
sta $400 ; clear progress sta $400 ; clear progress
rts rts
rdinit bit rx_mslot *$100 ; activate registers rdinit bit rx_mslot*$100 ; activate registers
ldy #rx_mslot ; slot offset ldy #rx_mslot ; slot offset
ldx #rx_devno ; register offset ldx #rx_devno ; register offset
rts rts