diff --git a/constants/SP2000.inc b/constants/SP2000.inc index aa9bd9f..76f3627 100644 --- a/constants/SP2000.inc +++ b/constants/SP2000.inc @@ -969,7 +969,7 @@ FDC_93: ; ;*************************************** -; !FIXIT использовать структуру _sBOOT_SEC +; !FIXIT использовать структуру _sBOOT_SECTOR SEC_SIZE EQU 11 CLAST_SIZE EQU 13 RESERV_SECS EQU 14 diff --git a/structures/FileSystem.inc b/structures/FileSystem.inc index 789b928..3d79997 100644 --- a/structures/FileSystem.inc +++ b/structures/FileSystem.inc @@ -1,32 +1,56 @@ ; //--------------------------------------------------------------------------- + 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" +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 +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! ;.BOOT_CODE BLOCK 448,0 ; +#3E boot loader's code -;.SIGNATURE WORD #AA55 ; +#1FE Signature +;.MBR_PARTITION_TABLE BLOCK 4*16 ; +#1BE table = 4x16 bytes +;.MBR_SIGNATURE WORD #AA55 ; +#1FE Signature ENDS ; - STRUCT _sMBR_Table + 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 ENDS //--------------------------------------------------------------------------- @@ -314,18 +338,9 @@ PartitionSysTypes: ; FSI_Free_Count 488 ; FAT32 FSI: Number of free clusters (DWORD) ; FSI_Nxt_Free 492 ; FAT32 FSI: Last allocated cluster (DWORD) -; MBR_Table 446 ; MBR: Offset of partition table in the MBR -; SZ_PTE 16 ; MBR: Size of a partition table entry -; PTE_Boot 0 ; MBR PTE: Boot indicator -; PTE_StHead 1 ; MBR PTE: Start head -; PTE_StSec 2 ; MBR PTE: Start sector -; PTE_StCyl 3 ; MBR PTE: Start cylinder -; PTE_System 4 ; MBR PTE: System ID -; PTE_EdHead 5 ; MBR PTE: End head -; PTE_EdSec 6 ; MBR PTE: End sector -; PTE_EdCyl 7 ; MBR PTE: End cylinder -; PTE_StLba 8 ; MBR PTE: Start in LBA -; PTE_SizLba 12 ; MBR PTE: Size in LBA + + + ; GPTH_Sign 0 ; GPT: Header signature (8-byte) ; GPTH_Rev 8 ; GPT: Revision (DWORD) diff --git a/structures/Identify_ATA_Struct.inc b/structures/Identify_ATA_Struct.inc index 740c5c9..281e751 100644 --- a/structures/Identify_ATA_Struct.inc +++ b/structures/Identify_ATA_Struct.inc @@ -291,6 +291,7 @@ CfaPowerMode1 WORD ; 160 320 ReservedBlock161 BLOCK 14 ; 161 322 NominalFormFactor WORD ; 168 336 +/* struct { USHORT SupportsTrim : 1 @@ -359,4 +360,5 @@ NominalFormFactor WORD ; 168 336 USHORT ReservedWord236[19] USHORT Signature : 8 USHORT CheckSum : 8 +*/ ENDS \ No newline at end of file