diff --git a/Format FAT.docx b/Format FAT.docx new file mode 100644 index 0000000..51ab346 Binary files /dev/null and b/Format FAT.docx differ diff --git a/format/format.asm b/format/format.asm index d04c100..eb2be3e 100755 --- a/format/format.asm +++ b/format/format.asm @@ -804,7 +804,7 @@ BOOT_SECTOR EQU #00 ; Block Parameters BIOS .BytesPerSector DRV_GET_PAR (IX) EQU #0B ; WORD #200 BPB_BytsPerSec Размер сектора в байтах .SectorsPerCluster ;!TODO EQU #0D ; BYTE 2 BPB_SecPerClus Размер кластера в секторах -.RESERVED_SECTORS ;!TODO EQU #0E ; WORD 1 BPB_ResvdSecCnt Размер системной области (включая этот сектор) RESERVE SECTORS +.RESERVED_SECTORS !RESERVED_SECTORS EQU #0E ; WORD 1 BPB_ResvdSecCnt Размер системной области (включая этот сектор) RESERVE SECTORS .Number_of_FATs ;!TODO EQU #10 ; BYTE 2 BPB_NumFATs Количество таблиц FAT .FilesInRootDIR 0 EQU #11 ; WORD 112 BPB_RootEntCnt Число описателей файлов в корневом каталоге (в FAT32 - 0) .SectorsPerDrive ;!TODO EQU #13 ; WORD 1440 BPB_TotSec16 Общее число секторов на диске (если 0, то размер - в .BPB_BIG_TOTAL_SECTORS) @@ -832,15 +832,27 @@ BOOT_SECTOR EQU #00 .BOOT_CODE_FAT32 EQU #5A ------------------------------------------------------------------------ -!DRV_TYPE: GenIOCTL.GetParams - физический номер - 0,1 - BIOS.DRV_GET_PAR - тип флопаря - #8x - Hard Drive - остальное подумать -;;;;;;;; +!DRV_TYPE: GenIOCTL.GetParams - физический номер + 0,1 - BIOS.DRV_GET_PAR - тип флопаря + #8x - Hard Drive + остальное подумать +;;;;;;;;;;;;;;;;; +!RESERVED_SECTORS: predefined (пока) +.FAT12_FDD EQU 1 +.FAT12_HDD +.FAT16_HDD +.FAT32_HDD EQU +для смещения FAT до кратного 4096 значения: +1) tmp1 = ((.HIDDEN + min_last_sector) & #0F)>0 ) * #10 +2) tmp2 = (.HIDDEN + min_last_sector) & #FFFF'FFF0 +3) tmp3 = tmp2 + tmp1 +4) error = (tmp3 >= #1000'0000) ; LBA28 +reserved_sectors = ( ((.HIDDEN + min_last_sector) & #0F)>0 ) * #10) - .HIDDEN +;;;;;;;;;;;;;;;;;