root/msdosfs/bootsect.h

/* [<][>][^][v][top][bottom][index][help] */

INCLUDED FROM


    1 /*      $OpenBSD: bootsect.h,v 1.5 2006/12/15 03:04:24 krw Exp $        */
    2 /*      $NetBSD: bootsect.h,v 1.8 1997/10/17 11:23:29 ws Exp $  */
    3 
    4 /*
    5  * Written by Paul Popelka (paulp@uts.amdahl.com)
    6  * 
    7  * You can do anything you want with this software, just don't say you wrote
    8  * it, and don't remove this notice.
    9  * 
   10  * This software is provided "as is".
   11  * 
   12  * The author supplies this software to be publicly redistributed on the
   13  * understanding that the author is not responsible for the correct
   14  * functioning of this software in any circumstances and is not liable for
   15  * any damages caused by this software.
   16  * 
   17  * October 1992
   18  */
   19 
   20 /*
   21  * Format of a boot sector.  This is the first sector on a DOS floppy disk
   22  * or the fist sector of a partition on a hard disk.  But, it is not the
   23  * first sector of a partitioned hard disk.
   24  */
   25 struct bootsector33 {
   26         u_int8_t        bsJump[3];              /* jump inst E9xxxx or EBxx90 */
   27         int8_t          bsOemName[8];           /* OEM name and version */
   28         int8_t          bsBPB[19];              /* BIOS parameter block */
   29         int8_t          bsDriveNumber;          /* drive number (0x80) */
   30         int8_t          bsBootCode[479];        /* pad so struct is 512b */
   31         u_int8_t        bsBootSectSig0;
   32         u_int8_t        bsBootSectSig1;
   33 #define BOOTSIG0        0x55
   34 #define BOOTSIG1        0xaa
   35 };
   36 
   37 struct extboot {
   38         int8_t          exDriveNumber;          /* drive number (0x80) */
   39         int8_t          exReserved1;            /* reserved */
   40         int8_t          exBootSignature;        /* ext. boot signature (0x29) */
   41 #define EXBOOTSIG       0x29
   42         int8_t          exVolumeID[4];          /* volume ID number */
   43         int8_t          exVolumeLabel[11];      /* volume label */
   44         int8_t          exFileSysType[8];       /* fs type (FAT12 or FAT16) */
   45 };
   46 
   47 struct bootsector50 {
   48         u_int8_t        bsJump[3];              /* jump inst E9xxxx or EBxx90 */
   49         int8_t          bsOemName[8];           /* OEM name and version */
   50         int8_t          bsBPB[25];              /* BIOS parameter block */
   51         int8_t          bsExt[26];              /* Bootsector Extension */
   52         int8_t          bsBootCode[448];        /* pad so structure is 512b */
   53         u_int8_t        bsBootSectSig0;
   54         u_int8_t        bsBootSectSig1;
   55 #define BOOTSIG0        0x55
   56 #define BOOTSIG1        0xaa
   57 };
   58 
   59 struct bootsector710 {
   60         u_int8_t        bsJump[3];              /* jump inst E9xxxx or EBxx90 */
   61         int8_t          bsOEMName[8];           /* OEM name and version */
   62         int8_t          bsPBP[53];              /* BIOS parameter block */
   63         int8_t          bsExt[26];              /* Bootsector Extension */
   64         int8_t          bsBootCode[418];        /* pad so structure is 512b */
   65         u_int8_t        bsBootSectSig2;         /* 2 & 3 are only defined for FAT32? */
   66         u_int8_t        bsBootSectSig3;
   67         u_int8_t        bsBootSectSig0;
   68         u_int8_t        bsBootSectSig1;
   69 #define BOOTSIG0        0x55
   70 #define BOOTSIG1        0xaa
   71 #define BOOTSIG2        0
   72 #define BOOTSIG3        0
   73 };
   74 
   75 union bootsector {
   76         struct bootsector33 bs33;
   77         struct bootsector50 bs50;
   78         struct bootsector710 bs710;
   79 };
   80 
   81 #if 0
   82 /*
   83  * Shorthand for fields in the bpb.
   84  */
   85 #define bsBytesPerSec   bsBPB.bpbBytesPerSec
   86 #define bsSectPerClust  bsBPB.bpbSectPerClust
   87 #define bsResSectors    bsBPB.bpbResSectors
   88 #define bsFATS          bsBPB.bpbFATS
   89 #define bsRootDirEnts   bsBPB.bpbRootDirEnts
   90 #define bsSectors       bsBPB.bpbSectors
   91 #define bsMedia         bsBPB.bpbMedia
   92 #define bsFATsecs       bsBPB.bpbFATsecs
   93 #define bsSectPerTrack  bsBPB.bpbSectPerTrack
   94 #define bsHeads         bsBPB.bpbHeads
   95 #define bsHiddenSecs    bsBPB.bpbHiddenSecs
   96 #define bsHugeSectors   bsBPB.bpbHugeSectors
   97 #endif

/* [<][>][^][v][top][bottom][index][help] */