;==================================================================
;*** Structures for DOS 5.00 programming
;==================================================================

;MS-DOS 5.00 Prog. Ref. pg 34
;PC Source Book, pg 2-27
BOOTSECTOR      STRUC
        bsJump          db  3 DUP (?)   ;E9 XX XX or EB XX 90
        bsOemName       db  '????????'  ;OEM name and version
                                        ;Start of BIOS parameter block
        bsBytesPerSec   dw  ?           ;Bytes/sector
        bsSecPerClust   db  ?           ;Sectors/cluster
        bsResSectors    dw  ?           ;Number of reserved sectors
        bsFATs          db  ?           ;Number of file allocation tables
        bsRootDirEnts   dw  ?           ;Number of root directory entries
        bsSectors       dw  ?           ;Total number of sectors
        bsMedia         db  ?           ;Media Descriptor
        bsFATsecs       dw  ?           ;Number of sectors/FAT
        bsSecPerTrack   dw  ?           ;Number of sectors/track
        bsHeads         dw  ?           ;Number of heads
        bsHiddenSecs    dd  ?           ;Number of hidden sectors
        bsHugeSectors   dd  ?           ;Number of sectors if bsSectors=0
                                        ;End of BIOS parameter block
        bsDriveNumber   db  ?           ;Drive number (80h)
        bsReserved1     db  ?           ;Reserved
        bsBootSignature db  ?           ;Extended boot signature (29h)
        bsVolumeID      dd  ?           ;Volumn ID number
        bsFileSysType   db  8 dup(?)    ;File-system type
BOOTSECTOR      ENDS


; page 38
DIRENTRY        STRUC
        deName          db      8 DUP (0)       ;File Name
        deExtension     db      3 DUP (0)       ;File Extension
        deAttribute     db      0               ;File Attributes
        deReserved      db      10 DUP (?)      ;Reserved by DOS
        deTime          dw      ?               ;Time
        deDate          dw      ?               ;Date
        deStartCluster  dw      ?               ;Starting Cluster
        deFileSize      dd      ?               ;File Size
DIRENTRY        ENDS

DIRENTRY_SIZE   EQU     8+3+1+10+2*3+4

EQU_deName              EQU     0           ;File Name
EQU_deExtension         EQU     8           ;File Extension
EQU_deAttribute         EQU     11          ;File Attributes
EQU_deReserved          EQU     12          ;Reserved by DOS
EQU_deTime              EQU     22          ;Time
EQU_deDate              EQU     24          ;Date
EQU_deStartCluster      EQU     26          ;Starting Cluster
EQU_deFileSize          EQU     28          ;File Size


; pg. 40
DISKIO  STRUC
        diStartSector   dd      ?       ;Starting sector number
        diSectors       dw      ?       ;Number of sectors
        diBuffer        dd      ?       ;Address of buffer
DISKIO  ENDS


; pg. 41
DPB     STRUC
        dpbDrive        db      ?       ;Drive number
        dpbUnit         db      ?       ;Unit number for driver
        dpbSectorSize   dw      ?       ;Sector size in bytes
        dpbClusterMask  db      ?       ;Sectors per cluster - 1
        dpbClusterShift db      ?       ;Sectors per cluster, as power of 2
        dpbFirstFAT     dw      ?       ;First sector containing FAT
        dpbFATCount     db      ?       ;Number of FATs
        dpbRootEntries  dw      ?       ;Number of root-directory entries
        dpbFirstSector  dw      ?       ;First sector of first cluster
        dpbMaxCluster   dw      ?       ;Number of clusters on drive + 1
        dpbFATSize      dw      ?       ;Number of sectors occupied by FAT
        dpbDirSector    dw      ?       ;First sector containing the root dir
        dpbDriverAddr   dd      ?       ;Address of device driver
        dpbMedia        db      ?       ;Media descriptor
        dpbFirstAccess  db      ?       ;Indicates access to drive
        dpbNextDPB      dd      ?       ;Address of next drive parameter block
        dpbNextFree     dw      ?       ;Last allocated cluster
        dpbFreeCnt      dw      ?       ;Number of free clusters
DPB     ENDS

DPB_SIZE        EQU     33


;page 228
EXTENDEDFCB     STRUC
        extSignature    db      0ffh            ;Extended FCB signature
        extReserved1    db      5 dup (0)       ;Reserved by DOS
        extAttribute    db      0               ;File attribute byte
                                                ;File control block (FCB)
        extDriveID      db      0               ;Drive # (0=default, 1=A, etc)
        extFileName     db      8 dup (' ')       ;Filename
        extExtent       db      3 dup (' ')       ;File extension
        extCurBlockNo   dw      0               ;Current block number
        extRecSize      dw      0               ;Record size
        extFileSize     dd      0               ;Size of file, in bytes
        extFileDate     dw      0               ;Date file last modified
        extFileTime     dw      0               ;Time file last modified
        extReserved2    db      8 dup (0)       ;Reserved by DOS
        extCurRecNo     db      0               ;Current record number
        extRandomRecNo  dd      0               ;Random record number
EXTENDEDFCB     ENDS

EQU_extSignature    EQU      0                  ;Extended FCB signature
EQU_extReserved1    EQU      1                  ;Reserved by DOS
EQU_extAttribute    EQU      6                  ;File attribute byte
                                                ;File control block (FCB)
EQU_extDriveID      EQU      7                  ;Drive # (0=default, 1=A, etc)
EQU_extFileName     EQU      8                  ;Filename
EQU_extExtent       EQU      16                 ;File extension
EQU_extCurBlockNo   EQU      19                 ;Current block number
EQU_extRecSize      EQU      21                 ;Record size
EQU_extFileSize     EQU      23                 ;Size of file, in bytes
EQU_extFileDate     EQU      27                 ;Date file last modified
EQU_extFileTime     EQU      29                 ;Time file last modified
EQU_extReserved2    EQU      31                 ;Reserved by DOS
EQU_extCurRecNo     EQU      39                 ;Current record number
EQU_extRandomRecNo  EQU      40                 ;Random record number



;For int 21:11,12 - Find First File with FCB (pg 228)
FCB     STRUC
        fcbDriveID      db      ?               ;Drive # (0=default, 1=A, etc)
        fcbFileName     db      8 dup (?)       ;Filename
        fcbExtent       db      3 dup (?)       ;File extension
        fcbCurBlockNo   dw      0               ;Current block number
        fcbRecSize      dw      0               ;Record size
        fcbFileSize     db      4 dup (0)       ;Size of file in bytes
        fcbFileDate     dw      0               ;Date file last modified
        fcbFileTime     dw      0               ;Time file last modified
        fcbReserved     db      8 dup (0)       ;Reserved by DOS
        fcbCurRecNo     db      0               ;Current record number
        fcbRandomRecNo  dd      0               ;Random record number
FCB     ENDS

;pg 231
EXTHEADER       STRUC
        ehSignature     db      0ffh            ;Extended signature
        ehReserved      db      5 dup (0)       ;Reserved
        ehSearchAttrs   db      ?               ;Attribute byte
EXTHEADER       ENDS


MID     STRUC
        midInfoLevel    dw      0               ;Information level
        midSerialNum    dd      ?               ;Serial number
        midVolLabel     db      11 dup (?)      ;ASCII volume label
        midFileSysType  db      8 dup (?)       ;File system type
MID     ENDS