mirror of
https://github.com/Tolik-Trek/Estex-DSS.git
synced 2026-06-15 09:21: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
|
||||
@ -838,11 +880,12 @@ LOAD_CORE: LD (READMEM),DE
|
||||
;LD A,(FatBuffer.FAT_TYPE)
|
||||
; 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
|
||||
|
||||
@ -493,36 +493,36 @@ EVALSTR: ld a,(hl)
|
||||
; !! ЌҐ ¤Ґ« вм ®¤г Є®¬ ¤г > 256 бЁ¬ў®«®ў)) !!
|
||||
;
|
||||
; BAT-Є®¬ ¤л (Ґ ®в¤Ґ«пвм ®в ¤®б-Є®¬ ¤)
|
||||
BATLIST: DZ 'PAUSE' : DW cmd_pause
|
||||
DZ 'REM' : DW cmd_rem
|
||||
DZ 'EXIT' : DW cmd_break
|
||||
BATLIST: DZ 'PAUSE' : DW cmd_pause
|
||||
DZ 'REM' : DW cmd_rem
|
||||
DZ 'EXIT' : DW cmd_break
|
||||
;
|
||||
; DSS-ª®¬ ¤ë
|
||||
CMDLIST: DZ 'CD' : DW cmd_chdir
|
||||
DZ 'DIR' : DW cmd_dir
|
||||
DZ 'ECHO' : DW cmd_echo
|
||||
DZ 'ECHO.' : DW cmd_echoLN
|
||||
DZ 'PATH' : DW cmd_path
|
||||
DZ 'MD' : DW cmd_mkdir
|
||||
DZ 'REN' : DW cmd_rename
|
||||
DZ 'DEL' : DW cmd_del
|
||||
DZ 'RD' : DW cmd_rmdir
|
||||
DZ 'INFO' : DW cmd_info
|
||||
DZ 'SET' : DW cmd_set
|
||||
DZ 'TIME' : DW cmd_time
|
||||
DZ 'DATE' : DW cmd_date
|
||||
DZ 'VER' : DW cmd_version
|
||||
DZ 'CLS' : DW cmd_cls
|
||||
DZ 'CHDIR' : DW cmd_chdir
|
||||
DZ 'MKDIR' : DW cmd_mkdir
|
||||
DZ 'RENAME' : DW cmd_rename
|
||||
DZ 'ERASE' : DW cmd_del
|
||||
DZ 'RMDIR' : DW cmd_rmdir
|
||||
DZ 'HELP' : DW cmd_help
|
||||
DZ 'VERSION' : DW cmd_version
|
||||
DZ 'EXIT' : DW cmd_exit
|
||||
DZ 'REBOOT' : DW cmd_reboot
|
||||
DB #00
|
||||
; DSS-ª®¬ ¤ë
|
||||
CMDLIST: DZ 'CD' : DW cmd_chdir
|
||||
DZ 'DIR' : DW cmd_dir
|
||||
DZ 'ECHO' : DW cmd_echo
|
||||
DZ 'ECHO.' : DW cmd_echoLN
|
||||
DZ 'PATH' : DW cmd_path
|
||||
DZ 'MD' : DW cmd_mkdir
|
||||
DZ 'REN' : DW cmd_rename
|
||||
DZ 'DEL' : DW cmd_del
|
||||
DZ 'RD' : DW cmd_rmdir
|
||||
DZ 'INFO' : DW cmd_info
|
||||
DZ 'SET' : DW cmd_set
|
||||
DZ 'TIME' : DW cmd_time
|
||||
DZ 'DATE' : DW cmd_date
|
||||
DZ 'VER' : DW cmd_version
|
||||
DZ 'CLS' : DW cmd_cls
|
||||
DZ 'CHDIR' : DW cmd_chdir
|
||||
DZ 'MKDIR' : DW cmd_mkdir
|
||||
DZ 'RENAME' : DW cmd_rename
|
||||
DZ 'ERASE' : DW cmd_del
|
||||
DZ 'RMDIR' : DW cmd_rmdir
|
||||
DZ 'HELP' : DW cmd_help
|
||||
DZ 'VERSION' : DW cmd_version
|
||||
DZ 'EXIT' : DW cmd_exit
|
||||
DZ 'REBOOT' : DW cmd_reboot
|
||||
DB #00
|
||||
|
||||
|
||||
IZERO DB "ZERO",0
|
||||
|
||||
Loading…
Reference in New Issue
Block a user