SHELL: fixed bug in read_disk_info with .full

CORE: добавлены дополнительные проверки ФС раздела в FAT_BPB
This commit is contained in:
Tolik 2025-05-24 22:55:54 +10:00
parent 17b7bb938a
commit ec139d5761
7 changed files with 36 additions and 24 deletions

View File

@ -723,6 +723,9 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
CP #F0 CP #F0
JP C,RD_BPB.UnknownBPB JP C,RD_BPB.UnknownBPB
; ;
XOR A
LD (.UsesVarsFAT32),A
;
LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.BytesPerSector) LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.BytesPerSector)
LD (CORE_BUFFERS.FS_Buffer.BytesPerSector),HL LD (CORE_BUFFERS.FS_Buffer.BytesPerSector),HL
LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.SectorsPerCluster) LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.SectorsPerCluster)
@ -753,6 +756,7 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
OR D OR D
JR NZ,.skip_high JR NZ,.skip_high
; ;
LD (.UsesVarsFAT32),A
EXX EXX
LD DE,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.SectorsPerFAT32 + 2) LD DE,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.SectorsPerFAT32 + 2)
LD A,E LD A,E
@ -766,6 +770,7 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
LD (CORE_BUFFERS.FS_Buffer.Number_Of_FATs),A LD (CORE_BUFFERS.FS_Buffer.Number_Of_FATs),A
CP 1 CP 1
JR Z,.one_FAT JR Z,.one_FAT
JP C,RD_BPB.UnknownBPB
DEC A DEC A
ADD HL,DE ADD HL,DE
LD (CORE_BUFFERS.FS_Buffer.FAT2_SEC_L),HL LD (CORE_BUFFERS.FS_Buffer.FAT2_SEC_L),HL
@ -791,7 +796,6 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
; ¬®¦­® áà §ã âãâ § £­ âì áâ à訩 ¡ ©â, ¯®â®¬ã-çâ® ¤«  FAT32 á«¥¤ãî騩 à áçñâ - íâ® ¯à¨¡ ¢«¥­¨¥ ­ã«ï. ; ¬®¦­® áà §ã âãâ § £­ âì áâ à訩 ¡ ©â, ¯®â®¬ã-çâ® ¤«  FAT32 á«¥¤ãî騩 à áçñâ - íâ® ¯à¨¡ ¢«¥­¨¥ ­ã«ï.
LD (CORE_BUFFERS.FS_Buffer.FirstDataSector_H),HL LD (CORE_BUFFERS.FS_Buffer.FirstDataSector_H),HL
EXX EXX
;LD (CORE_BUFFERS.FS_Buffer.FirstDataSector_H),BC
; ;
LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector) LD BC,(CORE_BUFFERS.FS_Buffer.BytesPerSector)
LD A,B LD A,B
@ -813,12 +817,18 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
; ;
EX DE,HL EX DE,HL
LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FilesInRootDIR) ; 0 for fat32 LD HL,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FilesInRootDIR) ; 0 for fat32
; [ ]fat32 ;!TEST ; fat32
LD A,H LD A,H
OR L OR L
JR Z,.skip_loop2 ;JR Z,.skip_loop2
JR NZ,.filesRoot
; ;
DEC HL INC A
LD (.UsesVarsFAT32),A
DEC A
JR .skip_loop2
;
.filesRoot: DEC HL
XOR A XOR A
;NEXTAD2 ;NEXTAD2
.loop2: INC A .loop2: INC A
@ -904,15 +914,6 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
SBC HL,DE SBC HL,DE
; ;
.HDDBIG: CALL SectorToCluster .HDDBIG: CALL SectorToCluster
; LD A,(CORE_BUFFERS.FS_Buffer.SectorsPerCluster)
; SCF
; .loop7: RRA
; JR C,.loop7_exit
; RR B
; RR C
; RR H
; RR L
; JP .loop7
; ;
.loop7_exit: INC HL .loop7_exit: INC HL
LD (CORE_BUFFERS.FS_Buffer.MaxClusterLow),HL LD (CORE_BUFFERS.FS_Buffer.MaxClusterLow),HL
@ -985,6 +986,10 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
JR C,.its_FAT32 JR C,.its_FAT32
; ;
; It's FAT16 ; It's FAT16
LD A,(.UsesVarsFAT32)
AND A
JP NZ,RD_BPB.UnknownBPB
;
LD HL,#FFFF LD HL,#FFFF
LD A,FAT_TYPE.x16 LD A,FAT_TYPE.x16
.set_vars: EXX .set_vars: EXX
@ -998,7 +1003,11 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT.SERIAL_NUMBER+2) LD BC,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.FAT.SERIAL_NUMBER+2)
JR .SET_VARS JR .SET_VARS
; ;
.its_FAT12: LD HL,#0FFF .its_FAT12: LD A,(.UsesVarsFAT32)
AND A
JP NZ,RD_BPB.UnknownBPB
;
LD HL,#0FFF
LD A,FAT_TYPE.x12 LD A,FAT_TYPE.x12
JR .set_vars JR .set_vars
; ;
@ -1142,6 +1151,8 @@ FAT_BPB: LD A,(CORE_BUFFERS.SECTOR_BUFFER + BOOT_SECTOR.DRIVE_TYPE)
LD HL,(CORE_BUFFERS.FS_Buffer.MaxClusterHigh) LD HL,(CORE_BUFFERS.FS_Buffer.MaxClusterHigh)
SBC HL,DE SBC HL,DE
RET RET
;
.UsesVarsFAT32: DB 0
;;;;;;;; ;;;;;;;;
; --> BC:HL - Sector ; --> BC:HL - Sector

View File

@ -1 +1 @@
47 48

View File

@ -256,10 +256,8 @@ cmd_dir: push de
or a or a
call nz,ToDSS call nz,ToDSS
; ;
ld a,(read_disk_info.full) ld a,(read_disk_info.LastDskInfoIsFull)
and a and a
;ld de,MAIN_MSG.CRLF
;jp z,ECHO_MESSAGE
RET Z RET Z
; ;
; free space ; free space

View File

@ -37,7 +37,7 @@ read_disk_info: OR #80
AND E AND E
EXX EXX
INC A INC A
LD (.full),A LD (.LastDskInfoIsFull),A
; ;
AND H AND H
@ -201,7 +201,10 @@ read_disk_info: OR #80
DJNZ .loop3 DJNZ .loop3
LD HL,serial_string+4 LD HL,serial_string+4
LD (HL),'-' LD (HL),'-'
JR read_disk_info.get_label JR .get_label
;
.LastDskInfoIsFull:
DB 0
; ;
/////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////
free_space_low: WORD 0 free_space_low: WORD 0

View File

@ -1 +1 @@
513 514

@ -1 +1 @@
Subproject commit 1b6a539aea8d46b09a617a90a04a2e45dcb37b3f Subproject commit 25ac1c89f4ce070e041437ddbcdd18ab2ab223be