diff --git a/structures/FileSystem.inc b/structures/FileSystem.inc index 3d79997..9937a31 100644 --- a/structures/FileSystem.inc +++ b/structures/FileSystem.inc @@ -1,57 +1,64 @@ ; //--------------------------------------------------------------------------- - STRUCT _sBOOT_SECTOR -PARAMS _sBOOT_SEC - ENDS - - - STRUCT _sBOOT_SEC ; 62 bytes -JMP BLOCK 3,0 ; +#00 "JMP" -ID_NAME TEXT 8, {"DSS_1.7","0"} ; +#03 DOS NAME - DB "DSS_1.70" + STRUCT _sBOOT_SECTOR_PARAMS ; 62 bytes +.JMP BLOCK 3,0 ; +#00 "JMP" +.ID_NAME TEXT 8, {"DSS_1.7","0"} ; +#03 DOS NAME - DB "DSS_1.70" ; Block Parameters BIOS -B_P_S WORD #200 ; +#0B BYTE PER SECTOR -S_P_C BYTE 2 ; +#0D SECTORS PER CLUSTER -RESERVE WORD 1 ; +#0E RESERVE SECTORS -FAT_NUM BYTE 2 ; +#10 AMOUNT FATS -F_P_DIR WORD 112 ; +#11 FILES IN DIRECTORY -S_P_D WORD 1440 ; +#13 ALL SECTORS ON DISK -ID_FORM BYTE #F0 ; +#15 ID FORMAT -S_P_F WORD 2 ; +#16 SIZE FAT IN SECTORS -S_P_T WORD 9 ; +#18 SECTOR PER TRACK -HEADS WORD 2 ; +#1A AMOUNT SIDES -HIDDEN DWORD 0 ; +#1C HIDDEN SECTORS -BPB_BIG_TOTAL_SECTORS DWORD 0 ; +#20 BIG TOTAL SECTOR -BPB_PHISICAL_DRIVE_NUMBER WORD #80 ; +#24 PHISICAL DRIVE NUMBER -BPB_EXT_BOOT_RECORD_SIGNATURE BYTE #29 ; +#26 EXTENDED BOOT RECORD SIGNATURE -BPB_SERIAL_NUMBER DWORD 0 ; +#27 VOLUME SERIAL NUMBER -BPB_LABEL TEXT 11, {"NO NAME"," "} ; +#2B DISK LABEL -ID_FAT TEXT 8, {"FAT16"," "} ; +#36 FILE SYSTEM ID (BPB_FS_ID) ;!TODO detect fat type by clusters! +.B_P_S WORD #200 ; +#0B BYTE PER SECTOR +.S_P_C BYTE 2 ; +#0D SECTORS PER CLUSTER +.RESERVE WORD 1 ; +#0E RESERVE SECTORS +.FAT_NUM BYTE 2 ; +#10 AMOUNT FATS +.F_P_DIR WORD 112 ; +#11 FILES IN DIRECTORY +.S_P_D WORD 1440 ; +#13 ALL SECTORS ON DISK +.DRIVE_TYPE BYTE #F0 ; +#15 Тип устройства +.S_P_F WORD 2 ; +#16 SIZE FAT IN SECTORS +.S_P_T WORD 9 ; +#18 SECTOR PER TRACK +.HEADS WORD 2 ; +#1A AMOUNT SIDES +.HIDDEN DWORD 0 ; +#1C HIDDEN SECTORS +.BPB_BIG_TOTAL_SECTORS_L WORD 0 ; +#20 BIG TOTAL SECTOR Low word +.BPB_BIG_TOTAL_SECTORS_H WORD 0 ; +#22 BIG TOTAL SECTOR High word +.BPB_PHISICAL_DRIVE_NUMBER WORD #80 ; +#24 PHISICAL DRIVE NUMBER +.BPB_EXT_BOOT_RECORD_SIGNATURE BYTE #29 ; +#26 EXTENDED BOOT RECORD SIGNATURE +.BPB_SERIAL_NUMBER DWORD 0 ; +#27 VOLUME SERIAL NUMBER +.BPB_LABEL TEXT 11, {"NO NAME"," "} ; +#2B DISK LABEL +.ID_FAT TEXT 8, {"FAT16"," "} ; +#36 FILE SYSTEM ID (BPB_FS_ID) ;!TODO detect fat type by clusters! ;.BOOT_CODE BLOCK 448,0 ; +#3E boot loader's code ;.MBR_PARTITION_TABLE BLOCK 4*16 ; +#1BE table = 4x16 bytes ;.MBR_SIGNATURE WORD #AA55 ; +#1FE Signature ENDS ; - STRUCT _sMBR_PARTITION_TABLE, #01BE ; MBR: Offset of partition table in the MBR -Record_1 _sMBR_PARTITION_RECORD ; +#01BE -Record_2 _sMBR_PARTITION_RECORD ; +#01CE -Record_3 _sMBR_PARTITION_RECORD ; +#01DE -Record_4 _sMBR_PARTITION_RECORD ; +#01EE -MBR_SIGNATURE WORD #AA55 ; +#01FE - ENDS - +; STRUCT _sMBR_PARTITION_RECORD -isActive BYTE 0 ; +#00 -Start_head BYTE 0 ; +#01 -Start_sector BYTE 0 ; +#02 -Start_cylinder BYTE 0 ; +#03 -FS_ID BYTE 0 ; +#04 -End_head BYTE 0 ; +#05 -End_sector BYTE 0 ; +#06 -End_cylinder BYTE 0 ; +#07 -Start_LBA DWORD 0 ; +#08 -Size_LBA DWORD 0 ; +#0C +.isActive BYTE 0 ; +#00 +.Start_head BYTE 0 ; +#01 +.Start_sector BYTE 0 ; +#02 +.Start_cylinder BYTE 0 ; +#03 +.FS_ID BYTE 0 ; +#04 +.End_head BYTE 0 ; +#05 +.End_sector BYTE 0 ; +#06 +.End_cylinder BYTE 0 ; +#07 +.Start_LBA DWORD 0 ; +#08 +.Size_LBA DWORD 0 ; +#0C ENDS +; + +; + STRUCT _sMBR_PARTITION_TABLE ;, #01BE ; MBR: Offset of partition table in the MBR +.Record_1 _sMBR_PARTITION_RECORD ; +#01BE +.Record_2 _sMBR_PARTITION_RECORD ; +#01CE +.Record_3 _sMBR_PARTITION_RECORD ; +#01DE +.Record_4 _sMBR_PARTITION_RECORD ; +#01EE + ENDS +; + +; + STRUCT _sBOOT_SECTOR +.PARAMS _sBOOT_SECTOR_PARAMS +.BOOT_CODE BLOCK 384,0 ; +#3E boot loader's code +.PARTITION_TABLE _sMBR_PARTITION_TABLE +.MBR_SIGNATURE WORD #AA55 ; +#01FE + ENDS //--------------------------------------------------------------------------- ;