;
;       Microsoft Confidential
;       Copyright (C) Microsoft Corporation 1991
;       All Rights Reserved.
;

;**     DPB - Drive Parameter Block
;
;       BUGBUG - this isn't authorative - it's my probably incomplete and
;       possibly inaccurate deductions from code study... - jgl
;
;       The DPB is DOS's main structure for describing block devices.
;       It contains info about the "Drive" intermingled with info about
;       the FAT file system which is presumably on the drive.  I don't know
;       how those fields are used if it's not the FAT file system - BUGBUG
;
;       The DPBs are statically allocated and chained off of DPBHead.
;       Users scan this chain looking for a match on DPB_DRIVE.
;       The DPBs are built at init time from info in the SYSDEV structure.


DPB     STRUC

DPB_DRIVE           DB  ?       ; Logical drive # assoc with DPB (A=0,B=1,...)
DPB_UNIT            DB  ?       ; Driver unit number of DPB
DPB_SECTOR_SIZE     DW  ?       ; Size of physical sector in bytes
DPB_CLUSTER_MASK    DB  ?       ; Sectors/cluster - 1
DPB_CLUSTER_SHIFT   DB  ?       ; Log2 of sectors/cluster
DPB_FIRST_FAT       DW  ?       ; Starting record of FATs
DPB_FAT_COUNT       DB  ?       ; Number of FATs for this drive
DPB_ROOT_ENTRIES    DW  ?       ; Number of directory entries
DPB_FIRST_SECTOR    DW  ?       ; First sector of first cluster
DPB_MAX_CLUSTER     DW  ?       ; Number of clusters on drive + 1

DPB_FAT_SIZE        DW  ?       ; Number of records occupied by FAT

DPB_DIR_SECTOR      DW  ?       ; Starting record of directory
DPB_DRIVER_ADDR     DD  ?       ; Pointer to driver
DPB_MEDIA           DB  ?       ; Media byte
DPB_FIRST_ACCESS    DB  ?       ; This is initialized to -1 to force a media
				;   check the first time this DPB is used
DPB_NEXT_DPB        DD  ?       ; Pointer to next Drive parameter block
DPB_NEXT_FREE       DW  ?       ; Cluster # of last allocated cluster
DPB_FREE_CNT        DW  ?       ; Count of free clusters, -1 if unknown

DPB     ENDS

DPBSIZ  EQU     SIZE DPB        ; Size of the structure in bytes

DSKSIZ  =       DPB_max_CLUSTER ; Size of disk (temp used during init only)
