diff --git a/Shared_Includes b/Shared_Includes index e1233b2..c020ce3 160000 --- a/Shared_Includes +++ b/Shared_Includes @@ -1 +1 @@ -Subproject commit e1233b24a06f9be0c80349b47ab34cfceacc2486 +Subproject commit c020ce3b569f171558e159af931aca3a0fdb78bf diff --git a/format/format.asm b/format/format.asm index 6a95918..06346d0 100755 --- a/format/format.asm +++ b/format/format.asm @@ -858,13 +858,13 @@ CALCULATED_FAT_PARAMETERS: .DRIVE_TYPE: WORD 0 ; ; [x] +- .SectorsPerFAT16: WORD 0 ; FAT32 constant ; .HEADS WORD 0 ; -.HIDDEN WORD 0 ; от начала MBR, extMBR ; +.HIDDEN DWORD 0 ; от начала MBR, extMBR ; [x] .BPB_BIG_TOTAL_SECTORS_L WORD 0 ; [x] +- .BPB_BIG_TOTAL_SECTORS_H WORD 0 ; [x] +- ; FAT 12, FAT 16 .BPB_PHISICAL_DRIVE_NUMBER BYTE #80 ; [x] .reserved_1 BYTE 0 ; -.FAT.EXT_BOOT_REC_SIGNATURE BYTE #29 ; +.FAT.EXT_BOOT_REC_SIGNATURE BYTE #29 ; constant ; .FAT.SERIAL_NUMBER DWORD 0 ; .FAT.LABEL TEXT 11 ; .ID_FAT TEXT 8 ; @@ -898,7 +898,20 @@ reserved_sectors = ( ((.HIDDEN + min_last_sector) & #0F)>0 ) * #10) - .HIDDEN FORMAT_FAT32: LD (.Save_SP),SP ; Определение параметров носителя и выбор FAT .STEP1: ; эта должна быть общей для заполнения геометрии диска - LD A,VARIABLES.CurrentDrive + + LD A,(VARIABLES.CurrentDrive) + LD BC,Dss.DRV.GenIOCTL.GetMoreParams + RST ToDSS.DRV + JR NC,.set_hidden + ; + CP BIOS.Error.InvalidSubFunction + JR Z,.GetParams ; если нет такой подфункции в драйвере, то смещение = 0 + SCF + JR .ERROR + ; +.set_hidden: LD (CALCULATED_FAT_PARAMETERS.HIDDEN),DE + LD (CALCULATED_FAT_PARAMETERS.HIDDEN + 2),HL +.GetParams: LD A,(VARIABLES.CurrentDrive) LD BC,Dss.DRV.GenIOCTL.GetParams RST ToDSS.DRV JR C,.ERROR @@ -962,7 +975,8 @@ FORMAT_FAT32: LD (.Save_SP),SP ; LD A,B LD (CALCULATED_FAT_PARAMETERS.DRIVE_TYPE),A - + ; +