|
|
1.1 root 1: /*
2: * Written by Paul Popelka ([email protected])
3: *
4: * You can do anything you want with this software,
5: * just don't say you wrote it,
6: * and don't remove this notice.
7: *
8: * This software is provided "as is".
9: *
10: * The author supplies this software to be publicly
11: * redistributed on the understanding that the author
12: * is not responsible for the correct functioning of
13: * this software in any circumstances and is not liable
14: * for any damages caused by this software.
15: *
16: * October 1992
17: *
18: * bootsect.h,v 1.2 1993/05/20 03:34:02 cgd Exp
19: */
20:
21: /*
22: * Format of a boot sector. This is the first sector
23: * on a DOS floppy disk or the fist sector of a partition
24: * on a hard disk. But, it is not the first sector of
25: * a partitioned hard disk.
26: */
27: struct bootsector33 {
28: char bsJump[3]; /* jump instruction E9xxxx or EBxx90 */
29: char bsOemName[8]; /* OEM name and version */
30: char bsBPB[19]; /* BIOS parameter block */
31: char bsDriveNumber; /* drive number (0x80) */
32: char bsBootCode[474]; /* pad so structure is 512 bytes long */
33: u_short bsBootSectSig;
34: #define BOOTSIG 0xaa55
35: };
36:
37: struct bootsector50 {
38: char bsJump[3]; /* jump instruction E9xxxx or EBxx90 */
39: char bsOemName[8]; /* OEM name and version */
40: char bsBPB[25]; /* BIOS parameter block */
41: char bsDriveNumber; /* drive number (0x80) */
42: char bsReserved1; /* reserved */
43: char bsBootSignature; /* extended boot signature (0x29) */
44: #define EXBOOTSIG 0x29
45: char bsVolumeID[4]; /* volume ID number */
46: char bsVolumeLabel[11]; /* volume label */
47: char bsFileSysType[8]; /* file system type (FAT12 or FAT16) */
48: char bsBootCode[448]; /* pad so structure is 512 bytes long */
49: u_short bsBootSectSig;
50: #define BOOTSIG 0xaa55
51: };
52:
53: union bootsector {
54: struct bootsector33 bs33;
55: struct bootsector50 bs50;
56: };
57:
58: /*
59: * Shorthand for fields in the bpb.
60: */
61: #define bsBytesPerSec bsBPB.bpbBytesPerSec
62: #define bsSectPerClust bsBPB.bpbSectPerClust
63: #define bsResSectors bsBPB.bpbResSectors
64: #define bsFATS bsBPB.bpbFATS
65: #define bsRootDirEnts bsBPB.bpbRootDirEnts
66: #define bsSectors bsBPB.bpbSectors
67: #define bsMedia bsBPB.bpbMedia
68: #define bsFATsecs bsBPB.bpbFATsecs
69: #define bsSectPerTrack bsBPB.bpbSectPerTrack
70: #define bsHeads bsBPB.bpbHeads
71: #define bsHiddenSecs bsBPB.bpbHiddenSecs
72: #define bsHugeSectors bsBPB.bpbHugeSectors
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.