The Job File Table (JFT) is a DOS data structure in the Program Segment Prefix (PSP). It starts at PSP offset 0x18 and is 20 bytes long. For each open file handle, DOS stores the index into the System File Table (SFT). A file handle that is returned by open
, _open
, and other similar functions is simply an index into the JFT where DOS stored the SFT entry index for the file or device that the program opened.
When a program starts, the first 5 entries in the JFT are preconnected to the standard devices. All other handles are marked as closed by setting the value of the entry to 0xFF. The standard devices are initialised as follows:
Handle | Description | |
---|---|---|
0 | Standard input | |
1 | Standard output | |
2 | Standard error | |
3 | COM1 | |
4 | LPT1 |
Handles 0-2 are connected to the console device. During program execution they can get modified (closed, redirected) like any other handle.
Because the size of the JFT in the PSP is limited to 20 bytes, originally only 15 files (20 minus the 5 standard devices) could be open at a time. In MS-DOS 2.0, the Extended Job File Table was introduced, which allowed up to 254 files to be opened.
As of MS-DOS 3.30, the size of the JFT can be modified with a call to INT 21h, 67h
.