mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 17:31:47 +03:00
dssboot: +fixed bug with one cluster FAT32 rootdir search
This commit is contained in:
parent
08ab359af4
commit
201fa03a29
@ -683,6 +683,8 @@ GET_BPB: XOR A
|
||||
.mirrored_FATs: ;
|
||||
LD HL,(BOOT_BUFFER + BOOT_SECTOR.RootDirStartCluster)
|
||||
LD DE,(BOOT_BUFFER + BOOT_SECTOR.RootDirStartCluster+2)
|
||||
LD (FatBuffer.RootDirStartCluster_L),HL
|
||||
LD (FatBuffer.RootDirStartCluster_H),DE
|
||||
CALL CLUSTER_TO_SECTOR.no_prepare
|
||||
LD (FatBuffer.RootDirFirstSector_L),IX
|
||||
LD (FatBuffer.RootDirFirstSector_H),HL
|
||||
@ -739,21 +741,49 @@ CLUSTER_TO_SECTOR:
|
||||
|
||||
|
||||
; ¯®¨áª system.dos
|
||||
GETROOT: LD HL,(FatBuffer.RootDirFirstSector_H)
|
||||
LD IX,(FatBuffer.RootDirFirstSector_L)
|
||||
LD BC,(PARTITION_START_L)
|
||||
LD DE,(PARTITION_START_H)
|
||||
; [x] 28/04/2024. Bug with incorrect reading root dir. Reported by Roman "Romychs" Boykov.
|
||||
ADD IX,BC
|
||||
ADC HL,DE
|
||||
;
|
||||
GETROOT: LD HL,(FatBuffer.RootDirStartCluster_L)
|
||||
PUSH HL
|
||||
LD HL,(FatBuffer.RootDirStartCluster_H)
|
||||
PUSH HL
|
||||
LD A,(FatBuffer.FAT_TYPE)
|
||||
CP FAT_TYPE.x32
|
||||
LD A,(FatBuffer.DirSizeInSectors)
|
||||
JR NZ,.NEXTSEC
|
||||
JR NZ,.load_and_search
|
||||
;
|
||||
LD A,(FatBuffer.SectorsPerCluster);!FIXIT ¯à®çâñâ ⮫쪮 ¯¥à¢ë© ª« áâ¥à ª â «®£ FAT32
|
||||
.NEXTSEC: PUSH AF
|
||||
.load_and_search:
|
||||
LD HL,(FatBuffer.RootDirFirstSector_H)
|
||||
LD IX,(FatBuffer.RootDirFirstSector_L)
|
||||
;LD BC,(PARTITION_START_L)
|
||||
;LD DE,(PARTITION_START_H)
|
||||
; [x] 28/04/2024. Bug with incorrect reading root dir. Reported by Roman "Romychs" Boykov.
|
||||
;ADD IX,BC
|
||||
;ADC HL,DE
|
||||
;
|
||||
.NEXT_CLUSTER: CALL GET_ABSOLUTE_SECTOR
|
||||
CALL .NEXT_SECTOR
|
||||
;
|
||||
POP HL
|
||||
EXX
|
||||
POP HL
|
||||
RET C
|
||||
RET NZ
|
||||
CALL READ_FROM_FAT
|
||||
RET C
|
||||
EX DE,HL
|
||||
PUSH HL
|
||||
EXX
|
||||
EX DE,HL
|
||||
PUSH HL
|
||||
EXX
|
||||
; in: HL':HL - CLUSTER
|
||||
; out: HL:IX - SECTOR
|
||||
CALL CLUSTER_TO_SECTOR
|
||||
LD A,(FatBuffer.SectorsPerCluster)
|
||||
JR .NEXT_CLUSTER
|
||||
;
|
||||
;
|
||||
.NEXT_SECTOR: PUSH AF
|
||||
; [x] 28/04/2024. Bug with incorrect reading root dir. Reported by Roman "Romychs" Boykov.
|
||||
;ADD IX,BC
|
||||
;ADC HL,DE
|
||||
@ -779,10 +809,22 @@ GETROOT: LD HL,(FatBuffer.RootDirFirstSector_H)
|
||||
DEC HL
|
||||
;
|
||||
DEC A
|
||||
JR NZ,.NEXTSEC
|
||||
SCF
|
||||
JR NZ,.NEXT_SECTOR
|
||||
RET
|
||||
;
|
||||
; ; ;
|
||||
|
||||
; ¢å®¤: HL:IX - ®â®á¨â¥«ìë© á¥ªâ®à
|
||||
; ¢ë室: HL:IX - ¡á®«îâë© á¥ªâ®à
|
||||
GET_ABSOLUTE_SECTOR:
|
||||
LD DE,(PARTITION_START_L)
|
||||
ADD IX,DE
|
||||
LD DE,(PARTITION_START_H)
|
||||
ADC HL,DE
|
||||
RET
|
||||
;
|
||||
|
||||
|
||||
SEARCH: LD C,17 ;HANDELS PER SECTOR 512/32 + 1
|
||||
LD IX, DIR_BUFFER - FAT_DIRECTORY_RECORD
|
||||
.SKIPNAM: LD DE,FAT_DIRECTORY_RECORD
|
||||
@ -839,10 +881,11 @@ LOAD_CORE: LD (READMEM),DE
|
||||
; CP FAT_TYPE.x32
|
||||
; JR NZ,.skip_it
|
||||
;
|
||||
LD DE,(PARTITION_START_L)
|
||||
ADD IX,DE
|
||||
LD DE,(PARTITION_START_H)
|
||||
ADC HL,DE
|
||||
;LD DE,(PARTITION_START_L)
|
||||
;ADD IX,DE
|
||||
;LD DE,(PARTITION_START_H)
|
||||
;ADC HL,DE
|
||||
CALL GET_ABSOLUTE_SECTOR
|
||||
;.skip_it: ;
|
||||
LD DE,(READMEM)
|
||||
LD A,(BOOT_BUFFER + BOOT_SECTOR.SectorsPerCluster)
|
||||
@ -881,7 +924,6 @@ LOAD_CORE: LD (READMEM),DE
|
||||
CCF
|
||||
RET NC
|
||||
; [ ] § £à㧪 system.dos ¡®«ìè¥ #4000 ¡ ©â®¢
|
||||
|
||||
.BIG_CORE+1: LD A,0
|
||||
DEC A
|
||||
LD (.BIG_CORE),A
|
||||
@ -1049,10 +1091,12 @@ READ_FAT_TABLE: PUSH HL
|
||||
.no_inc: ADC HL,BC
|
||||
; HL:IX - SECTOR FAT FOR READING
|
||||
;
|
||||
LD DE,(PARTITION_START_L)
|
||||
ADD IX,DE
|
||||
LD DE,(PARTITION_START_H)
|
||||
ADC HL,DE
|
||||
;LD DE,(PARTITION_START_L)
|
||||
;ADD IX,DE
|
||||
;LD DE,(PARTITION_START_H)
|
||||
;ADC HL,DE
|
||||
CALL GET_ABSOLUTE_SECTOR
|
||||
;
|
||||
LD DE,FAT_SECTORS_BUFFER
|
||||
;
|
||||
IN A,(SLOT3)
|
||||
|
||||
@ -26,8 +26,8 @@
|
||||
.CacheBlock: WORD #0000
|
||||
;.CacheUpdated: BYTE #00
|
||||
;.SectorsPerBank: BYTE #00
|
||||
;.RootDirStartCluster_L: WORD #0000
|
||||
;.RootDirStartCluster_H: WORD #0000 ; fat32
|
||||
.RootDirStartCluster_L: WORD #0000
|
||||
.RootDirStartCluster_H: WORD #0000 ; fat32
|
||||
.FAT1_SEC_L: WORD #0000 ; MSD_FAT_SEC first sector FAT (FAT_FRM)
|
||||
.FAT1_SEC_H: WORD #0000 ; fat32
|
||||
;.FAT2_SEC_L: WORD #0000
|
||||
|
||||
Loading…
Reference in New Issue
Block a user