[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
INT 21 - DOS 1+ - OPEN FILE USING FCB
        AH = 0Fh
        DS:DX -> unopened File Control Block (see below)
Return: AL = status
            00h successful
            FFh file not found or access denied
Notes:  (DOS 3.1+) file opened for read/write in compatibility mode
        an unopened FCB has the drive, filename, and extension fields filled
          in and all other bytes cleared
        not supported by MS Windows 3.0 DOSX.EXE DOS extender
SeeAlso: AH=16h,AH=3Dh

Format of File Control Block:
Offset  Size    Description
 -7     BYTE    extended FCB if FFh
 -6   5 BYTEs   reserved
 -1     BYTE    file attribute if extended FCB
 00h    BYTE    drive number (0 = default, 1 = A, etc)
 01h  8 BYTEs   blank-padded file name
 09h  3 BYTEs   blank-padded file extension
 0Ch    WORD    current block number
 0Eh    WORD    logical record size
 10h    DWORD   file size
 14h    WORD    date of last write (see AX=5700h)
 16h    WORD    time of last write (see AX=5700h) (DOS 1.1+)
 18h  8 BYTEs   reserved (see below)
 20h    BYTE    record within current block
 21h    DWORD   random access record number (if record size is > 64 bytes, high
                byte is omitted)
Note:   to use an extended FCB, you must specify the address of the FFh flag at
          offset -7, rather than the address of the drive number field

Format of reserved field for DOS 1.0:
Offset  Size    Description
 16h    WORD    location in directory (if high byte = FFh, low byte is device
                ID)
 18h    WORD    number of first cluster in file
 1Ah    WORD    current absolute cluster number on disk
 1Ch    WORD    current relative cluster number within file
                (0 = first cluster of file, 1 = second cluster, etc.)
 1Eh    BYTE    dirty flag (00h = not dirty)
 1Fh    BYTE    unused

Format of reserved field for DOS 1.10-1.25:
Offset  Size    Description
 18h    BYTE    bit 7: set if logical device
                bit 6: not dirty
                bits 5-0: disk number or logical device ID
 19h    WORD    starting cluster number on disk
 1Bh    WORD    current absolute cluster number on disk
 1Dh    WORD    current relative cluster number within file
 1Fh    BYTE    unused

Format of reserved field for DOS 2.x:
Offset  Size    Description
 18h    BYTE    bit 7: set if logical device
                bit 6: set if open???
                bits 5-0: ???
 19h    WORD    starting cluster number on disk
 1Bh    WORD    ???
 1Dh    BYTE    ???
 1Eh    BYTE    ???
 1Fh    BYTE    ???

Format of reserved field for DOS 3.x:
Offset  Size    Description
 18h    BYTE    number of system file table entry for file
 19h    BYTE    attributes
                bits 7,6: 00 = SHARE.EXE not loaded, disk file
                          01 = SHARE.EXE not loaded, character device
                          10 = SHARE.EXE loaded, remote file
                          11 = SHARE.EXE loaded, local file
                bits 5-0: low six bits of device attribute word
---SHARE.EXE loaded, local file (DOS 3.x and 5.0)---
 1Ah    WORD    starting cluster of file on disk
 1Ch    WORD    (DOS 3.x) offset within SHARE of sharing record (see AH=52h)
                (DOS 5.0) unique sequence number of sharing record
 1Eh    BYTE    file attribute
 1Fh    BYTE    ???
---SHARE.EXE loaded, remote file---
 1Ah    WORD    number of sector containing directory entry
 1Ch    WORD    relative cluster within file of last cluster accessed
 1Eh    BYTE    absolute cluster number of last cluster accessed
 1Fh    BYTE    ???
---SHARE.EXE not loaded---
 1Ah    BYTE    (low byte of device attribute word AND 0Ch) OR open mode
 1Bh    WORD    starting cluster of file
 1Dh    WORD    number of sector containing directory entry
 1Fh    BYTE    number of directory entry within sector
Note:   if FCB opened on character device, DWORD at 1Ah is set to the address
          of the device driver header, then the BYTE at 1Ah is overwritten.

See Also: 2110
This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson