This commit is contained in:
Anatoliy Belyanskiy 2024-03-12 01:26:14 +10:00
parent 8f27f59053
commit 7464507d7f

View File

@ -1,29 +1,29 @@
; ;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
STRUCT _sBOOT_SECTOR_PARAMS ; 62 bytes STRUCT _sBOOT_SECTOR_PARAMS ; 62 bytes
.JMP BLOCK 3,0 ; +#00 "JMP" .JMP: BLOCK 3,0 ; +#00 "JMP"
.ID_NAME TEXT 8, {"DSS_1.7","0"} ; +#03 DOS NAME - DB "DSS_1.70" .ID_NAME: TEXT 8, {"DSS_1.7","0"} ; +#03 DOS NAME - DB "DSS_1.70"
; Block Parameters BIOS ; Block Parameters BIOS
.B_P_S WORD #200 ; +#0B BYTE PER SECTOR .B_P_S: WORD #200 ; +#0B BYTE PER SECTOR
.S_P_C BYTE 2 ; +#0D SECTORS PER CLUSTER .S_P_C: BYTE 2 ; +#0D SECTORS PER CLUSTER
.RESERVED_SECTORS WORD 1 ; +#0E <20> §¬¥à á¨á⥬­®© ®¡« á⨠(¢ª«îç ï íâ®â ᥪâ®à) RESERVE SECTORS .RESERVED_SECTORS: WORD 1 ; +#0E <20> §¬¥à á¨á⥬­®© ®¡« á⨠(¢ª«îç ï íâ®â ᥪâ®à) RESERVE SECTORS
.FAT_NUM BYTE 2 ; +#10 AMOUNT FATS .FAT_NUM: BYTE 2 ; +#10 AMOUNT FATS
.F_P_DIR WORD 112 ; +#11 —¨á«® ®¯¨á â¥«¥© ä ©«®¢ ¢ ª®à­¥¢®¬ ª â «®£¥ (¢ FAT32 - 0) .F_P_DIR: WORD 112 ; +#11 —¨á«® ®¯¨á â¥«¥© ä ©«®¢ ¢ ª®à­¥¢®¬ ª â «®£¥ (¢ FAT32 - 0)
.S_P_D WORD 1440 ; +#13 ޡ饥 ç¨á«® ᥪâ®à®¢ ­  ¤¨áª¥ (¥á«¨ 0, â® à §¬¥à - ¢ .BPB_BIG_TOTAL_SECTORS) .S_P_D: WORD 1440 ; +#13 ޡ饥 ç¨á«® ᥪâ®à®¢ ­  ¤¨áª¥ (¥á«¨ 0, â® à §¬¥à - ¢ .BPB_BIG_TOTAL_SECTORS)
.DRIVE_TYPE BYTE #F0 ; +#15 ’¨¯ ãáâனá⢠ .DRIVE_TYPE: BYTE #F0 ; +#15 ’¨¯ ãáâனá⢠
.S_P_F WORD 2 ; +#16 SIZE FAT IN SECTORS (0 ¢ FAT32) .S_P_F: WORD 2 ; +#16 SIZE FAT IN SECTORS (0 ¢ FAT32)
.S_P_T WORD 9 ; +#18 SECTOR PER TRACK .S_P_T: WORD 9 ; +#18 SECTOR PER TRACK
.HEADS WORD 2 ; +#1A AMOUNT SIDES .HEADS: WORD 2 ; +#1A AMOUNT SIDES
.HIDDEN DWORD 0 ; +#1C HIDDEN SECTORS .HIDDEN: DWORD 0 ; +#1C HIDDEN SECTORS
.BPB_BIG_TOTAL_SECTORS_L WORD 0 ; +#20 BIG TOTAL SECTOR Low word .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_BIG_TOTAL_SECTORS_H: WORD 0 ; +#22 BIG TOTAL SECTOR High word
; FAT 12-16 ; FAT 12-16
.BPB_PHISICAL_DRIVE_NUMBER BYTE #80 ; +#24 PHISICAL DRIVE NUMBER .BPB_PHISICAL_DRIVE_NUMBER: BYTE #80 ; +#24 PHISICAL DRIVE NUMBER
.reserved BYTE 0 ; +#25 ‡ à¥§¥à¢¨à®¢ ­® .reserved: BYTE 0 ; +#25 ‡ à¥§¥à¢¨à®¢ ­®
.BPB_EXT_BOOT_RECORD_SIGNATURE BYTE #29 ; +#26 EXTENDED BOOT RECORD SIGNATURE .BPB_EXT_BOOT_RECORD_SIGNATURE: BYTE #29 ; +#26 EXTENDED BOOT RECORD SIGNATURE
.BPB_SERIAL_NUMBER DWORD 0 ; +#27 VOLUME SERIAL NUMBER .BPB_SERIAL_NUMBER: DWORD 0 ; +#27 VOLUME SERIAL NUMBER
.BPB_LABEL TEXT 11, {"NO NAME"," "} ; +#2B DISK LABEL .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! .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 ;.BOOT_CODE BLOCK 448,0 ; +#3E boot loader's code
;.MBR_PARTITION_TABLE BLOCK 4*16 ; +#1BE table = 4x16 bytes ;.MBR_PARTITION_TABLE BLOCK 4*16 ; +#1BE table = 4x16 bytes
;.MBR_SIGNATURE WORD #AA55 ; +#1FE Signature ;.MBR_SIGNATURE WORD #AA55 ; +#1FE Signature
@ -32,53 +32,69 @@
; ;
STRUCT _sMBR_PARTITION_RECORD STRUCT _sMBR_PARTITION_RECORD
.isActive BYTE 0 ; +#00 .isActive: BYTE 0 ; +#00
.Start_head BYTE 0 ; +#01 .Start_head: BYTE 0 ; +#01
.Start_sector BYTE 0 ; +#02 .Start_sector: BYTE 0 ; +#02
.Start_cylinder BYTE 0 ; +#03 .Start_cylinder: BYTE 0 ; +#03
.FS_ID BYTE 0 ; +#04 .FS_ID: BYTE 0 ; +#04
.End_head BYTE 0 ; +#05 .End_head: BYTE 0 ; +#05
.End_sector BYTE 0 ; +#06 .End_sector: BYTE 0 ; +#06
.End_cylinder BYTE 0 ; +#07 .End_cylinder: BYTE 0 ; +#07
.Start_LBA DWORD 0 ; +#08 .Start_LBA: DWORD 0 ; +#08
.Size_LBA DWORD 0 ; +#0C .Size_LBA: DWORD 0 ; +#0C
ENDS ENDS
; ;
; ;
STRUCT _sMBR_PARTITION_TABLE ;, #01BE ; MBR: Offset of partition table in the MBR STRUCT _sMBR_PARTITION_TABLE ;, #01BE ; MBR: Offset of partition table in the MBR
.Record_1 _sMBR_PARTITION_RECORD ; +#01BE .Record_1: _sMBR_PARTITION_RECORD ; +#01BE
.Record_2 _sMBR_PARTITION_RECORD ; +#01CE .Record_2: _sMBR_PARTITION_RECORD ; +#01CE
.Record_3 _sMBR_PARTITION_RECORD ; +#01DE .Record_3: _sMBR_PARTITION_RECORD ; +#01DE
.Record_4 _sMBR_PARTITION_RECORD ; +#01EE .Record_4: _sMBR_PARTITION_RECORD ; +#01EE
ENDS ENDS
; ;
; ;
STRUCT _sBOOT_SECTOR STRUCT _sBOOT_SECTOR
.PARAMS _sBOOT_SECTOR_PARAMS .PARAMS: _sBOOT_SECTOR_PARAMS
.BOOT_CODE BLOCK 384,0 ; +#3E boot loader's code .BOOT_CODE: BLOCK 384,0 ; +#3E boot loader's code
.PARTITION_TABLE _sMBR_PARTITION_TABLE .PARTITION_TABLE: _sMBR_PARTITION_TABLE
.MBR_SIGNATURE WORD #AA55 ; +#01FE .MBR_SIGNATURE: WORD #AA55 ; +#01FE
ENDS ENDS
STRUCT _sFAT_DIRECTORY_RECORD
.NAME: TEXT 8,{". "," "} ;+ #00 +00 NAME
.EXT: TEXT 3,{" "," "} ;+ #08 +08 EXT
.ATTRIBUT: BYTE #10 ;+ #0B +11 ATTRIBUT
.RESERVED_NT: BYTE #00 ;+ #0C +12 RESERVED
.RESERVED_FAT32: BYTE #00 ;+ #0D +13 RESERVED
.CREATE_TIME_FAT32: WORD #0000 ;+ #0E +14 RESERVED
.CREATE_DATE_FAT32: WORD #0000 ;+ #10 +16 RESERVED
.RESERVED_FAT32_1: WORD #0000 ;+ #12 +18 RESERVED
.FIRST_CLUSTER_H: WORD #0000 ;+ #14 +20 RESERVED
.TIME: WORD #0000 ;+ #16 +22 TIME
.DATE: WORD #0000 ;+ #18 +24 DATE
.FIRST_CLUSTER_L: WORD #0000 ;+ #1A +26 START CLUSTER ;!TODO fat32
.F_SIZE: DWORD #00000000 ;+ #1C +28 SIZE FILE
ENDS
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
; ;
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
PartitionSysTypes: PartitionSysTypes:
.Empty EQU #00 .Empty: EQU #00
.FAT12 EQU #01 .FAT12: EQU #01
.FAT16_32Mb EQU #04 .FAT16_32Mb: EQU #04
.Extended EQU #05 .Extended: EQU #05
.FAT16 EQU #06 .FAT16: EQU #06
.HPFS_NTFS EQU #07 .HPFS_NTFS: EQU #07
.FAT32 EQU #0B .FAT32: EQU #0B
.FAT32_LBA EQU #0C .FAT32_LBA: EQU #0C
.FAT16_LBA EQU #0E .FAT16_LBA: EQU #0E
.Win_Ext_LBA EQU #0F .Win_Ext_LBA: EQU #0F
.Linux_swap EQU #82 .Linux_swap: EQU #82
.Linux EQU #83 .Linux: EQU #83
.Linux_extended EQU #85 .Linux_extended: EQU #85
//--------------------------------------------------------------------------- //---------------------------------------------------------------------------
; ;