 struct DPBType {
        char     drive ;        /* physical drive number                   */
        char     unit ;         /* unit within device                      */
        unsigned cbSector ;     /* bytes per sector                        */
        char     mask ;         /* sectors/alloc unit - 1                  */
        char     shift ;        /* bit to shift                            */
        unsigned secFAT ;       /* sector number of first FAT              */
        char     cFAT ;         /* count of FATs                           */
        unsigned cDirEnt ;      /* count of root directory entries         */
        unsigned secData ;      /* first data sector                       */
        unsigned cCluster ;     /* max number of clusters on drive         */
        unsigned csecFAT ;      /* sectors in each FAT                     */
        unsigned secDir ;       /* first sector of root dir                */
        long     pDevice ;      /* pointer to device header                */
        char     media ;        /* last media in drive                     */
        char     fFirst ;       /* TRUE => media check needed              */
        long     nextDPB ;      /* pointer to next dpb                     */
        unsigned clusFree ;     /* cluster number of last alloc            */
        unsigned FreeCnt ;      /* count of free clusters, -1 if unk       */
/*      char     SyncFlg ;      /* sync flags, (see below)                 */
        } ;

/*      Definitions of SyncFlg values from DPB.INC  */

#define DPB_ABUSY  1        /* some process is allocating clusters */
#define DPB_AWANT  2        /* some process waiting to allocate    */
#define DPB_FBUSY  4        /* some process is reading FAT         */
#define DPB_FWANT  8        /* some process waiting to read FAT    */

