Annotation of Net2/pcfs/bpb.h, revision 1.1

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:  *     bpb.h,v 1.2 1993/05/20 03:34:04 cgd Exp
        !            19:  */
        !            20: 
        !            21: /*
        !            22:  *  BIOS Parameter Block (BPB) for DOS 3.3
        !            23:  */
        !            24: struct bpb33 {
        !            25:        u_short bpbBytesPerSec; /* bytes per sector                     */
        !            26:        u_char bpbSecPerClust;  /* sectors per cluster                  */
        !            27:        u_short bpbResSectors;  /* number of reserved sectors           */
        !            28:        u_char bpbFATs;         /* number of FATs                       */
        !            29:        u_short bpbRootDirEnts; /* number of root directory entries     */
        !            30:        u_short bpbSectors;     /* total number of sectors              */
        !            31:        u_char bpbMedia;        /* media descriptor                     */
        !            32:        u_short bpbFATsecs;     /* number of sectors per FAT            */
        !            33:        u_short bpbSecPerTrack; /* sectors per track                    */
        !            34:        u_short bpbHeads;       /* number of heads                      */
        !            35:        u_short bpbHiddenSecs;  /* number of hidden sectors             */
        !            36: };
        !            37: 
        !            38: /*
        !            39:  *  BPB for DOS 5.0
        !            40:  *  The difference is bpbHiddenSecs is a short for DOS 3.3,
        !            41:  *  and bpbHugeSectors is not in the 3.3 bpb.
        !            42:  */
        !            43: struct bpb50 {
        !            44:        u_short bpbBytesPerSec; /* bytes per sector                     */
        !            45:        u_char bpbSecPerClust;  /* sectors per cluster                  */
        !            46:        u_short bpbResSectors;  /* number of reserved sectors           */
        !            47:        u_char bpbFATs;         /* number of FATs                       */
        !            48:        u_short bpbRootDirEnts; /* number of root directory entries     */
        !            49:        u_short bpbSectors;     /* total number of sectors              */
        !            50:        u_char bpbMedia;        /* media descriptor                     */
        !            51:        u_short bpbFATsecs;     /* number of sectors per FAT            */
        !            52:        u_short bpbSecPerTrack; /* sectors per track                    */
        !            53:        u_short bpbHeads;       /* number of heads                      */
        !            54:        u_long bpbHiddenSecs;   /* number of hidden sectors             */
        !            55:        u_long bpbHugeSectors;  /* number of sectrs if bpbSectors == 0  */
        !            56: };
        !            57: 
        !            58: /*
        !            59:  *  The following structures represent how the bpb's look
        !            60:  *  on disk.  shorts and longs are just character arrays
        !            61:  *  of the appropriate length.  This is because the compiler
        !            62:  *  forces shorts and longs to align on word or halfword
        !            63:  *  boundaries.
        !            64:  */
        !            65: #include <machine/endian.h>
        !            66: #if BYTE_ORDER == LITTLE_ENDIAN
        !            67: #define        getushort(x)    *((u_short *)(x))
        !            68: #define        getulong(x)     *((u_long *)(x))
        !            69: #define        putushort(p, v) (*((u_short *)(p)) = (v))
        !            70: #define        putulong(p, v)  (*((u_long *)(p)) = (v))
        !            71: #else
        !            72: 
        !            73: #endif
        !            74: 
        !            75: /*
        !            76:  *  BIOS Parameter Block (BPB) for DOS 3.3
        !            77:  */
        !            78: struct byte_bpb33 {
        !            79:        char bpbBytesPerSec[2]; /* bytes per sector                     */
        !            80:        char bpbSecPerClust;    /* sectors per cluster                  */
        !            81:        char bpbResSectors[2];  /* number of reserved sectors           */
        !            82:        char bpbFATs;           /* number of FATs                       */
        !            83:        char bpbRootDirEnts[2]; /* number of root directory entries     */
        !            84:        char bpbSectors[2];     /* total number of sectors              */
        !            85:        char bpbMedia;          /* media descriptor                     */
        !            86:        char bpbFATsecs[2];     /* number of sectors per FAT            */
        !            87:        char bpbSecPerTrack[2]; /* sectors per track                    */
        !            88:        char bpbHeads[2];       /* number of heads                      */
        !            89:        char bpbHiddenSecs[2];  /* number of hidden sectors             */
        !            90: };
        !            91: 
        !            92: /*
        !            93:  *  BPB for DOS 5.0
        !            94:  *  The difference is bpbHiddenSecs is a short for DOS 3.3,
        !            95:  *  and bpbHugeSectors is not in the 3.3 bpb.
        !            96:  */
        !            97: struct byte_bpb50 {
        !            98:        char bpbBytesPerSec[2]; /* bytes per sector                     */
        !            99:        char bpbSecPerClust;    /* sectors per cluster                  */
        !           100:        char bpbResSectors[2];  /* number of reserved sectors           */
        !           101:        char bpbFATs;           /* number of FATs                       */
        !           102:        char bpbRootDirEnts[2]; /* number of root directory entries     */
        !           103:        char bpbSectors[2];     /* total number of sectors              */
        !           104:        char bpbMedia;          /* media descriptor                     */
        !           105:        char bpbFATsecs[2];     /* number of sectors per FAT            */
        !           106:        char bpbSecPerTrack[2]; /* sectors per track                    */
        !           107:        char bpbHeads[2];       /* number of heads                      */
        !           108:        char bpbHiddenSecs[4];  /* number of hidden sectors             */
        !           109:        char bpbHugeSectors[4]; /* number of sectrs if bpbSectors == 0  */
        !           110: };

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.