mirror of
https://github.com/peterferrie/prorwts2.git
synced 2025-01-14 13:30:09 +00:00
fix end detection
This commit is contained in:
parent
2aecb2eca2
commit
56f76d4045
30
PRORWTS2.S
30
PRORWTS2.S
@ -1,6 +1,6 @@
|
|||||||
;license:BSD-3-Clause
|
;license:BSD-3-Clause
|
||||||
;extended open/read/write binary file in ProDOS filesystem, with random access
|
;extended open/read/write binary file in ProDOS filesystem, with random access
|
||||||
;copyright (c) Peter Ferrie 2013-2021
|
;copyright (c) Peter Ferrie 2013-2022
|
||||||
;assemble using ACME
|
;assemble using ACME
|
||||||
|
|
||||||
ver_02 = 1
|
ver_02 = 1
|
||||||
@ -347,9 +347,9 @@ skiphdr clc
|
|||||||
;there can be only one page crossed, so we can increment instead of adc
|
;there can be only one page crossed, so we can increment instead of adc
|
||||||
|
|
||||||
inc scratchhi
|
inc scratchhi
|
||||||
+ cmp #<(readbuff + $1ff) ;4 + ($27 * $0d)
|
+ cmp #<(readbuff + NAME_LENGTH + ($27 * $0d))
|
||||||
lda scratchhi
|
lda scratchhi
|
||||||
sbc #>(readbuff + $1ff)
|
sbc #>(readbuff + NAME_LENGTH + ($27 * $0d))
|
||||||
bcc inextent
|
bcc inextent
|
||||||
|
|
||||||
;read next directory block when we reach the end of this block
|
;read next directory block when we reach the end of this block
|
||||||
@ -722,11 +722,11 @@ unrdrvoff1 lda MOTOROFF
|
|||||||
++
|
++
|
||||||
} else { ;enable_floppy = 0
|
} else { ;enable_floppy = 0
|
||||||
!ifdef PASS2 {
|
!ifdef PASS2 {
|
||||||
!if >(hddcodeend - reloc) > 0 {
|
!if (hddcodeend - reloc) > $100 {
|
||||||
!if one_page = 1 {
|
!if one_page = 1 {
|
||||||
!error "one_page must be 0"
|
!error "one_page must be 0"
|
||||||
} ;one_page = 0
|
} ;one_page = 0
|
||||||
!if >(hddcodeend - reloc) > 1 {
|
!if (hddcodeend - reloc) > $200 {
|
||||||
!if three_pages = 0 {
|
!if three_pages = 0 {
|
||||||
!error "three_pages must be 1"
|
!error "three_pages must be 1"
|
||||||
} ;three_pages = 0
|
} ;three_pages = 0
|
||||||
@ -786,8 +786,8 @@ unrhddblockhi = *
|
|||||||
lda #0
|
lda #0
|
||||||
hddreaddir1 jsr hddreaddirsel
|
hddreaddir1 jsr hddreaddirsel
|
||||||
|
|
||||||
hddfirstent lda #NAME_LENGTH
|
lda #NAME_LENGTH + ENTRY_SIZE
|
||||||
sta scratchlo
|
hddfirstent sta scratchlo
|
||||||
lda #>(hdddirbuf - 1)
|
lda #>(hdddirbuf - 1)
|
||||||
sta scratchhi
|
sta scratchhi
|
||||||
|
|
||||||
@ -812,14 +812,16 @@ hddnextent ldy #0
|
|||||||
adc #ENTRY_SIZE
|
adc #ENTRY_SIZE
|
||||||
sta scratchlo
|
sta scratchlo
|
||||||
bcs hddnextent1
|
bcs hddnextent1
|
||||||
cmp #$ff ;4 + ($27 * $0d)
|
cmp #<(NAME_LENGTH + ($27 * $0d))
|
||||||
bne hddnextent
|
bne hddnextent
|
||||||
|
|
||||||
;read next directory block when we reach the end of this block
|
;read next directory block when we reach the end of this block
|
||||||
|
|
||||||
ldx hdddirbuf + NEXT_BLOCK_LO
|
ldx hdddirbuf + NEXT_BLOCK_LO
|
||||||
lda hdddirbuf + NEXT_BLOCK_HI
|
lda hdddirbuf + NEXT_BLOCK_HI
|
||||||
bcs hddreaddir1
|
jsr hddreaddirsec
|
||||||
|
lda #NAME_LENGTH
|
||||||
|
bne hddfirstent
|
||||||
|
|
||||||
hddfoundname iny
|
hddfoundname iny
|
||||||
lda (scratchlo), y
|
lda (scratchlo), y
|
||||||
@ -1048,7 +1050,7 @@ unrdrvoff3 = unrelocdsk + (* - reloc)
|
|||||||
adc #ENTRY_SIZE
|
adc #ENTRY_SIZE
|
||||||
sta scratchlo
|
sta scratchlo
|
||||||
bcs nextent1
|
bcs nextent1
|
||||||
cmp #$ff ;4 + ($27 * $0d)
|
cmp #<(NAME_LENGTH + ($27 * $0d))
|
||||||
bne nextent
|
bne nextent
|
||||||
|
|
||||||
;read next directory block when we reach the end of this block
|
;read next directory block when we reach the end of this block
|
||||||
@ -1161,6 +1163,7 @@ foundname iny
|
|||||||
} ;one_shot = 0
|
} ;one_shot = 0
|
||||||
} ;enable_write = 1 or aligned_read = 1
|
} ;enable_write = 1 or aligned_read = 1
|
||||||
} ;bounds_check = 1 or return_size = 1 or one_shot = 1
|
} ;bounds_check = 1 or return_size = 1 or one_shot = 1
|
||||||
|
|
||||||
;cache AUX_TYPE (load offset for binary files)
|
;cache AUX_TYPE (load offset for binary files)
|
||||||
|
|
||||||
!if override_adr = 0 {
|
!if override_adr = 0 {
|
||||||
@ -2650,7 +2653,7 @@ hddnextent ldy #0
|
|||||||
adc #ENTRY_SIZE
|
adc #ENTRY_SIZE
|
||||||
sta scratchlo
|
sta scratchlo
|
||||||
bcs hddnextent1
|
bcs hddnextent1
|
||||||
cmp #$ff ;4 + ($27 * $0d)
|
cmp #<(NAME_LENGTH + ($27 * $0d))
|
||||||
bne hddnextent
|
bne hddnextent
|
||||||
|
|
||||||
;read next directory block when we reach the end of this block
|
;read next directory block when we reach the end of this block
|
||||||
@ -2763,6 +2766,7 @@ hddfoundname iny
|
|||||||
} ;one_shot = 0
|
} ;one_shot = 0
|
||||||
} ;enable_write = 1 or aligned_read = 1
|
} ;enable_write = 1 or aligned_read = 1
|
||||||
} ;bounds_check = 1 or return_size = 1 or one_shot = 1
|
} ;bounds_check = 1 or return_size = 1 or one_shot = 1
|
||||||
|
|
||||||
;cache AUX_TYPE (load offset for binary files)
|
;cache AUX_TYPE (load offset for binary files)
|
||||||
|
|
||||||
!if override_adr = 0 {
|
!if override_adr = 0 {
|
||||||
@ -3190,8 +3194,6 @@ hddnoteof1
|
|||||||
} ;detect_treof = 1
|
} ;detect_treof = 1
|
||||||
|
|
||||||
!if fast_trees = 0 {
|
!if fast_trees = 0 {
|
||||||
lda #>hdddirbuf
|
|
||||||
sta adrhi
|
|
||||||
jsr hddseekrd
|
jsr hddseekrd
|
||||||
} else { ;fast_trees = 1
|
} else { ;fast_trees = 1
|
||||||
jsr hddreaddirsel
|
jsr hddreaddirsel
|
||||||
@ -3915,7 +3917,7 @@ hdddataend
|
|||||||
} ;allow_trees
|
} ;allow_trees
|
||||||
!warn "hdd driver start: ", unrelochdd - init
|
!warn "hdd driver start: ", unrelochdd - init
|
||||||
!if (one_page + enable_floppy) = 0 {
|
!if (one_page + enable_floppy) = 0 {
|
||||||
!if ((hddcodeend - reloc) < $100) {
|
!if ((hddcodeend - reloc) <= $100) {
|
||||||
!warn "one_page can be enabled, code is small enough"
|
!warn "one_page can be enabled, code is small enough"
|
||||||
} ;hddcodeend
|
} ;hddcodeend
|
||||||
} ;not one_page and not enable_floppy
|
} ;not one_page and not enable_floppy
|
||||||
|
Loading…
x
Reference in New Issue
Block a user