mirror of
https://github.com/Michaelangel007/prorwts.git
synced 2024-06-26 06:29:28 +00:00
a bit smaller, a lot faster
This commit is contained in:
parent
dd8ea7f117
commit
470f30b6ef
73
PRORWTS.S
73
PRORWTS.S
|
@ -47,7 +47,9 @@
|
||||||
}
|
}
|
||||||
sizelo = $f5 ;must set if writing
|
sizelo = $f5 ;must set if writing
|
||||||
sizehi = $f6 ;must set if writing
|
sizehi = $f6 ;must set if writing
|
||||||
|
!if might_exist=1 {
|
||||||
entries = $f7 ;total number of entries
|
entries = $f7 ;total number of entries
|
||||||
|
}
|
||||||
reqcmd = $f8 ;used if enable_write=1, 1=read, 2=write
|
reqcmd = $f8 ;used if enable_write=1, 1=read, 2=write
|
||||||
ldrlo = $f9 ;used if override_adr=1
|
ldrlo = $f9 ;used if override_adr=1
|
||||||
ldrhi = $fa ;used if override_adr=1
|
ldrhi = $fa ;used if override_adr=1
|
||||||
|
@ -272,12 +274,12 @@ minus03 lda (A1L), y
|
||||||
plp
|
plp
|
||||||
bne plus07
|
bne plus07
|
||||||
ldx #3
|
ldx #3
|
||||||
minus04 stx $3c
|
minus04 stx A1L
|
||||||
txa
|
txa
|
||||||
asl
|
asl
|
||||||
bit $3c
|
bit A1L
|
||||||
beq plus06
|
beq plus06
|
||||||
ora $3c
|
ora A1L
|
||||||
eor #$ff
|
eor #$ff
|
||||||
and #$7e
|
and #$7e
|
||||||
minus05 bcs plus06
|
minus05 bcs plus06
|
||||||
|
@ -335,10 +337,12 @@ unrblockhi=unrelocdsk+(*-reloc)
|
||||||
|
|
||||||
;include volume directory header in count
|
;include volume directory header in count
|
||||||
|
|
||||||
readdir ldx dirbuf+37
|
readdir
|
||||||
|
!if might_exist=1 {
|
||||||
|
ldx dirbuf+37
|
||||||
inx
|
inx
|
||||||
stx entries
|
stx entries
|
||||||
|
}
|
||||||
!if allow_subdir=1 {
|
!if allow_subdir=1 {
|
||||||
ldy #0
|
ldy #0
|
||||||
} ;allow_subdir
|
} ;allow_subdir
|
||||||
|
@ -543,14 +547,14 @@ plus15
|
||||||
;restore load offset
|
;restore load offset
|
||||||
|
|
||||||
plus16
|
plus16
|
||||||
!if override_adr=0 {
|
!if override_adr=1 {
|
||||||
|
ldx ldrhi
|
||||||
|
lda ldrlo
|
||||||
|
} else { ;override_adr
|
||||||
pla
|
pla
|
||||||
tax
|
tax
|
||||||
pla
|
pla
|
||||||
} else { ;override_adr
|
} ;override_adr
|
||||||
ldx ldrhi
|
|
||||||
lda ldrlo
|
|
||||||
}
|
|
||||||
!if enable_write=1 {
|
!if enable_write=1 {
|
||||||
ldy reqcmd
|
ldy reqcmd
|
||||||
} ;enable_write
|
} ;enable_write
|
||||||
|
@ -656,12 +660,16 @@ plus19 sty secsize
|
||||||
|
|
||||||
;if track does not match, then seek
|
;if track does not match, then seek
|
||||||
|
|
||||||
lda curtrk
|
ldx curtrk
|
||||||
cmp phase
|
cpx phase
|
||||||
beq checksec
|
beq checksec
|
||||||
jsr seek
|
jsr seek
|
||||||
|
|
||||||
;[re-]read sector
|
;force sector mismatch
|
||||||
|
|
||||||
|
lda #$ff
|
||||||
|
|
||||||
|
;match or read sector
|
||||||
|
|
||||||
checksec jsr cmpsec
|
checksec jsr cmpsec
|
||||||
|
|
||||||
|
@ -680,13 +688,14 @@ checksec jsr cmpsec
|
||||||
inc reqsec
|
inc reqsec
|
||||||
inc reqsec
|
inc reqsec
|
||||||
|
|
||||||
|
cmpsecrd jsr readadr
|
||||||
|
|
||||||
cmpsec
|
cmpsec
|
||||||
!if enable_write=1 {
|
!if enable_write=1 {
|
||||||
ldy command
|
ldy command
|
||||||
dey
|
dey
|
||||||
bne encsec
|
bne encsec
|
||||||
} ;enable_write
|
} ;enable_write
|
||||||
cmpsecrd jsr readadr
|
|
||||||
cmp reqsec
|
cmp reqsec
|
||||||
bne cmpsecrd
|
bne cmpsecrd
|
||||||
|
|
||||||
|
@ -727,20 +736,19 @@ readret rts
|
||||||
|
|
||||||
!if enable_write=1 {
|
!if enable_write=1 {
|
||||||
encsec iny
|
encsec iny
|
||||||
minus11 ldx #0
|
minus11 ldx #$aa
|
||||||
minus12 dey
|
minus12 dey
|
||||||
lda (adrlo), y
|
lda (adrlo), y
|
||||||
lsr
|
lsr
|
||||||
rol bit2tbl, x
|
rol bit2tbl-$aa, x
|
||||||
lsr
|
lsr
|
||||||
rol bit2tbl, x
|
rol bit2tbl-$aa, x
|
||||||
sta encbuf, y
|
sta encbuf, y
|
||||||
lda bit2tbl, x
|
lda bit2tbl-$aa, x
|
||||||
and #$3f
|
and #$3f
|
||||||
sta bit2tbl, x
|
sta bit2tbl-$aa, x
|
||||||
inx
|
inx
|
||||||
cpx #$56
|
bne minus12
|
||||||
bcc minus12
|
|
||||||
tya
|
tya
|
||||||
bne minus11
|
bne minus11
|
||||||
|
|
||||||
|
@ -784,11 +792,11 @@ unrlatch2=unrelocdsk+(*-reloc)
|
||||||
sta $c0ed
|
sta $c0ed
|
||||||
unrread5=unrelocdsk+(*-reloc)
|
unrread5=unrelocdsk+(*-reloc)
|
||||||
lda $c0ec
|
lda $c0ec
|
||||||
asl phase ;7 cycles
|
lsr phase ;7 cycles
|
||||||
lda bit2tbl-1, y
|
lda bit2tbl-1, y
|
||||||
dey
|
dey
|
||||||
bne minus16
|
bne minus16
|
||||||
minus17 asl phase ;7 cycles
|
minus17 lsr phase ;7 cycles
|
||||||
eor encbuf, y
|
eor encbuf, y
|
||||||
tax
|
tax
|
||||||
lda xlattbl, x
|
lda xlattbl, x
|
||||||
|
@ -865,6 +873,7 @@ seekret rts
|
||||||
|
|
||||||
seek sty step
|
seek sty step
|
||||||
asl phase
|
asl phase
|
||||||
|
txa
|
||||||
asl
|
asl
|
||||||
copy_cur tax
|
copy_cur tax
|
||||||
sta tmptrk
|
sta tmptrk
|
||||||
|
@ -949,10 +958,12 @@ unrhddblockhi=unrelochdd+(*-reloc)
|
||||||
|
|
||||||
;include volume directory header in count
|
;include volume directory header in count
|
||||||
|
|
||||||
hddreaddir ldy dirbuf+37
|
hddreaddir
|
||||||
iny
|
!if might_exist=1 {
|
||||||
sty entries
|
ldx dirbuf+37
|
||||||
|
inx
|
||||||
|
stx entries
|
||||||
|
}
|
||||||
!if allow_subdir=1 {
|
!if allow_subdir=1 {
|
||||||
lda #0
|
lda #0
|
||||||
} ;allow_subdir
|
} ;allow_subdir
|
||||||
|
@ -1167,13 +1178,13 @@ plus34
|
||||||
;restore load offset
|
;restore load offset
|
||||||
|
|
||||||
plus35
|
plus35
|
||||||
!if override_adr=0 {
|
!if override_adr=1 {
|
||||||
|
ldx ldrhi
|
||||||
|
lda ldrlo
|
||||||
|
} else { ;override_adr
|
||||||
pla
|
pla
|
||||||
tax
|
tax
|
||||||
pla
|
pla
|
||||||
} else { ;override_adr
|
|
||||||
ldx ldrhi
|
|
||||||
lda ldrlo
|
|
||||||
} ;override_adr
|
} ;override_adr
|
||||||
|
|
||||||
!if allow_subdir=1 {
|
!if allow_subdir=1 {
|
||||||
|
|
Loading…
Reference in New Issue
Block a user