FCB - DOS File Control Block
Standard DOS File Control Block
Offset | Size | Description |
00 | byte | drive number (0 for default drive, 1=A:, 2=B:, …) |
01 | 8 bytes | filename, left justified with trailing blanks |
09 | 3 bytes | filename extension, left justified w/blanks |
0C | word | current block number relative to beginning of the file, starting with zero |
0E | word | logical record size in bytes |
10 | dword | file size in bytes |
14 | word | date the file was created or last updated |
16 | word | time of last write |
18 | 8 bytes | see below for version specific information |
1A | dword | address of device header if character device |
20 | byte | current relative record number within current BLOCK |
21 | dword | relative record number relative to the beginning of the file, starting with zero; high bit omitted if record length is 64 bytes |
Extended DOS File Control Block
Offset | Size | Description |
00 | byte | if FF this is an extended FCB |
01 | 5 bytes | reserved |
06 | byte | file attribute if extended FCB |
07 | byte | drive number (0 for default drive, 1=A:, 2=B:, …) |
08 | 8 bytes | filename, left justified with trailing blanks |
10 | 3 bytes | filename extension, left justified w/blanks |
13 | word | current block number relative to beginning of the file, starting with zero |
15 | word | logical record size in bytes |
17 | dword | file size in bytes |
1B | word | date the file was created or last updated |
1D | word | time of last write |
1F | 8 bytes | see below for version specific information |
27 | byte | current relative record number within current BLOCK |
28 | dword | relative record number relative to the beginning of the file, starting with zero; high bit omitted if record length is 64 bytes |
information in GREEN are undocumented.
word offset 14:
|F|E|D|C|B|A|9|8|7|6|5|4|3|2|1|0| 15,14 (Intel reverse order)
| | | | | | | | | | | `--------- day 1-31
| | | | | | | `---------------- month 1-12
`----------------------------- year + 1980
word offset 16:
|F|E|D|C|B|A|9|8|7|6|5|4|3|2|1|0| 17,16 (Intel reverse order)
| | | | | | | | | | | `---------- secs in 2 second increments
| | | | | `--------------------- minutes (0-59)
`------------------------------ hours (0-23)
DOS Version Specific parameters
DOS 2.x Values for reserved fields at offsets 18h-1Ah
Offset | Size | Description |
18 | Byte | see below |
19 | Word | starting cluster number |
|7|6|5|4|3|2|1|0|
| | `------------- unknown
| `-------------- 1 = open
`--------------- 1 = logical device
DOS 3.x Values for reserved fields at offsets 18h-19h
Offset | Size | Description |
18 | Byte | System File Table (SFT) entry for file |
19 | Byte | attributes |
|7|6|5|4|3|2|1|0| attributes
| | `-------------- unknown
`--- share status
Share Status
00 | SHARE not loaded block device |
01 | SHARE not loaded characted device |
10 | SHARE loaded, remote file |
11 | SHARE loaded local file |
DOS 3.x with SHARE, local file reserved offsets 1Ah-1Eh
Offset | Size | Description |
1A | word | starting cluster number |
1C | word | offset within SHARE of sharing record |
1E | byte | file attribute |
DOS 3.x with SHARE, remote file reserved offsets 1Ah-1Eh
Offset | Size | Description |
1A | word | sector number containing directory entry |
1C | word | last cluster accessed relative to beginning of file |
1E | byte | absolute cluster number of last cluster accessed |
DOS 3.x without SHARE reserved offsets 1Ah-1Fh Ø
Offset | Size | Description |
1A | byte | ((device attribute word low byte) AND 0Ch) OR (open mode) |
1B | word | starting cluster number |
1D | word | sector number containing directory entry |
1F | byte | number of directory entry within sector |
INT 21,0F | Open file using FCB |
INT 21,10 | Close file using FCB |
INT 21,11 | Search for first entry using FCB |
INT 21,12 | Search for next entry using FCB |
INT 21,13 | Delete file using FCB |
INT 21,14 | Sequential read using FCB |
INT 21,15 | Sequential write using FCB |
INT 21,16 | Create a file using FCB |
INT 21,17 | Rename file using FCB |
INT 21,21 | Random read using FCB |
INT 21,22 | Random write using FCB |
INT 21,23 | Get file size using FCB |
INT 21,24 | Set relative record field for FCB |
INT 21,27 | Random block read using FCB |
INT 21,28 | Random block write using FCB |
INT 21,29 | Parse filename for FCB |