91 lines
4.9 KiB
PHP
Executable File
91 lines
4.9 KiB
PHP
Executable File
; Copyright (c) 2023 Elaina Claus
|
|
;
|
|
; Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
; of this software and associated documentation files (the "Software"), to deal
|
|
; in the Software without restriction, including without limitation the rights
|
|
; to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
; copies of the Software, and to permit persons to whom the Software is
|
|
; furnished to do so, subject to the following conditions:
|
|
;
|
|
; The above copyright notice and this permission notice shall be included in all
|
|
; copies or substantial portions of the Software.
|
|
;
|
|
; THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
; IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
; FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
; AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
; LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
; OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
; SOFTWARE.
|
|
|
|
|
|
; BPB Information
|
|
; Off. Hex Off. Size Description
|
|
; 0 0x00 3 The first three bytes EB 3C 90 disassemble to JMP SHORT 3C NOP. (The 3C value may be different.)
|
|
; 3 0x03 8 OEM identifier.
|
|
; 11 0x0B 2 The number of Bytes per sector (remember, all numbers are in the little-endian format).
|
|
; 13 0x0D 1 Number of sectors per cluster.
|
|
; 14 0x0E 2 Number of reserved sectors. The boot record sectors are included in this value.
|
|
; 16 0x10 1 Number of File Allocation Tables (FAT's) on the storage media. Often this value is 2.
|
|
; 17 0x11 2 Number of directory entries (must be set so that the root directory occupies entire sectors).
|
|
; 19 0x13 2 The total sectors in the logical volume.
|
|
; If this value is 0, it means there are more than 65535 sectors in the volume,
|
|
; and the actual count is stored in the Large Sector Count entry at 0x20.
|
|
;
|
|
; 21 0x15 1 This Byte indicates the media descriptor type.
|
|
; 22 0x16 2 Number of sectors per FAT. FAT12/FAT16 only.
|
|
; 24 0x18 2 Number of sectors per track.
|
|
; 26 0x1A 2 Number of heads or sides on the storage media.
|
|
; 28 0x1C 4 Number of hidden sectors. (i.e. the LBA of the beginning of the partition.)
|
|
; 32 0x20 4 Large sector count. This field is set if there are more than 65535 sectors in the volume,
|
|
; resulting in a value which does not fit in the Number of Sectors entry at 0x13.
|
|
|
|
;-- BPB (BIOS Parameter Block)
|
|
%define bsOemName bx+0x03
|
|
%define bsBytesPerSect bx+0x0B
|
|
%define bsSecsPerClust bx+0x0D
|
|
%define bsResSectors bx+0x0E
|
|
%define bsFATs bx+0x10
|
|
%define bsRootDirEnts bx+0x11
|
|
%define bsSectors bx+0x13
|
|
%define bsMedia bx+0x15
|
|
%define bsSectPerFAT1216 bx+0x16
|
|
%define bsSectPerTrack bx+0x18
|
|
%define bsHeads bx+0x1A
|
|
%define bsHidden bx+0x1C
|
|
%define bsSectorHuge bx+0x20
|
|
;-- End BPB
|
|
|
|
; EBPB Information (FAT32)
|
|
; Off. Hex Off. Size Description
|
|
; 36 0x024 4 Sectors per FAT. The size of the FAT in sectors.
|
|
; 40 0x028 2 Flags.
|
|
; 42 0x02A 2 FAT version number. The high byte is the major version and the low byte is the minor version. FAT drivers should respect this field.
|
|
; 44 0x02C 4 The cluster number of the root directory. Often this field is set to 2.
|
|
; 48 0x030 2 The sector number of the FSInfo structure.
|
|
; 50 0x032 2 The sector number of the backup boot sector.
|
|
; 52 0x034 12 Reserved. When the volume is formated these bytes should be zero.
|
|
; 64 0x040 1 Drive number. The values here are identical to the values returned by the BIOS interrupt 0x13. 0x00 for a floppy disk and 0x80 for hard disks.
|
|
; 65 0x041 1 Flags in Windows NT. Reserved otherwise.
|
|
; 66 0x042 1 Signature (must be 0x28 or 0x29).
|
|
; 67 0x043 4 Volume ID 'Serial' number. Used for tracking volumes between computers. You can ignore this if you want.
|
|
; 71 0x047 11 Volume label string. This field is padded with spaces.
|
|
; 82 0x052 8 System identifier string. Always "FAT32 ". The spec says never to trust the contents of this string for any use.
|
|
; 90 0x05A 420 Boot code.
|
|
; 510 0x1FE 2 Bootable partition signature 0xAA55.
|
|
|
|
;-- EBPB (Extended BIOS Parameter Block)
|
|
%define bsSectorsPerFAT bx+0x24
|
|
%define bsFlags bx+0x28
|
|
%define bsFATVersion bx+0x2A
|
|
%define bsRootDirCluster bx+0x2C
|
|
%define bsFSInfoCluster bx+0x30
|
|
%define bsBackupBootSector bx+0x32
|
|
%define bsReserved1 bx+0x34
|
|
%define bsDriveNumber bx+0x40
|
|
%define bsNTFlags bx+0x41
|
|
%define bsFATSignature bx+0x42
|
|
%define bsVolumeSerial bx+0x43
|
|
%define bsVolumeLabel bx+0x47
|
|
%define bsSystemIdent bx+0x52
|
|
;-- End EBPB |