struc500.inc.html

    ;==================================================================
    ;*** 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