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