Fix FAT32 entry offsets for fragmented file chains

This commit is contained in:
2026-10-07 18:31:47 +03:00
parent d76bcc5bd1
commit 0e300bf5fd
4 changed files with 457 additions and 308 deletions
+9 -13
View File
@@ -1278,7 +1278,7 @@ gnc_hi dw 0
gnc_lo dw 0
gnc_fatsec_hi dw 0
gnc_fatsec_lo dw 0
gnc_inoff db 0
gnc_inoff dw 0 ; FAT32 entry offset: 0..508, needs 9 bits
cluster_to_fatpos
ld hl,(cur_cluster_hi)
@@ -1317,9 +1317,11 @@ ctf_shr ld hl,(gnc_hi)
ld hl,(cur_cluster_lo)
ld a,l
and #7f
add a,a
add a,a
ld (gnc_inoff),a
ld l,a
ld h,0
add hl,hl
add hl,hl
ld (gnc_inoff),hl
xor a
ret
@@ -1350,9 +1352,7 @@ get_next_cluster
or a
jr nz,gnc_end
ld a,(gnc_inoff)
ld l,a
ld h,0
ld hl,(gnc_inoff)
ld de,sdbuf
add hl,de
ld a,(hl)
@@ -1435,9 +1435,7 @@ write_fat_entry
or a
jr nz,wfe_fail
ld a,(gnc_inoff)
ld l,a
ld h,0
ld hl,(gnc_inoff)
ld de,sdbuf
add hl,de
ld a,(new_val_lo)
@@ -1693,9 +1691,7 @@ ffc_scan call cluster_to_fatpos
inc hl
ld (ffc_sectors_read),hl
ld a,(gnc_inoff)
ld l,a
ld h,0
ld hl,(gnc_inoff)
ld de,sdbuf
add hl,de
ld (ffc_ptr),hl