This commit is contained in:
Anatoliy Belyanskiy 2024-03-06 22:50:05 +10:00
parent 6ef1af993d
commit e3cd426ded

View File

@ -1,56 +1,63 @@
;
//---------------------------------------------------------------------------
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
//---------------------------------------------------------------------------