INT 2F U - DOS 4+ DRIVER.SYS support - GET DRIVE DATA TABLE LIST
AX = 0803h
Return: DS:DI -> first drive data table in list
Note:   not available under DR-DOS 5.0

Format of DOS 3.30 drive data table:
Offset  Size    Description
00h    DWORD   pointer to next table
04h    BYTE    physical unit number (for INT 13)
05h    BYTE    logical drive number
06h 19 BYTEs   BIOS Parameter Block (see also INT 21/AH=53h)
Offset  Size    Description
00h    WORD    bytes per sector
02h    BYTE    sectors per cluster, FFh if unknown
03h    WORD    number of reserved sectors
05h    BYTE    number of FATs
06h    WORD    number of root dir entries
08h    WORD    total sectors
0Ah    BYTE    media descriptor, 00h if unknown
0Bh    WORD    sectors per FAT
0Dh    WORD    sectors per track
0Fh    WORD    number of heads
11h    WORD    number of hidden sectors
19h    BYTE    flags
bit 6: 16-bit FAT instead of 12-bit FAT
1Ah    WORD    number of DEVICE OPEN calls without corresponding DEVICE CLOSE
1Ch 11 BYTEs   volume label or "NO NAME    " if none (always "NO NAME" for
fixed media)
27h    BYTE    terminating null for volume label???
28h    BYTE    device type (see INT 21/AX=440Dh)
29h    WORD    bit flags describing drive
bit 0: fixed media
bit 1: door lock supported
bit 2: ??? (used in determining BPB to set for INT 21/AX=440Dh)
bit 3: all sectors in a track are the same size
bit 4: physical drive has multiple logical units
bit 5: current logical drive for physical drive
bit 6: ???
bit 7: ???
bit 8: ??? (related to disk change detection)
2Bh    WORD    number of cylinders
2Dh 19 BYTEs   BIOS Parameter Block for highest capacity supported
40h  3 BYTEs   ???
43h  9 BYTEs   filesystem type???, default = "NO NAME  "
(apparently only MSDOS 3.30 fixed media, nulls for removable
media and PCDOS 3.30)
4Ch    BYTE    least-significant byte of last-accessed cylinder number
---removable media---
4Dh    DWORD   time of last access in clock ticks (FFFFFFFFh if never)
---fixed media---
4Dh    WORD    partition (FFFFh = primary, 0001h = extended)
4Fh    WORD    absolute cylinder number of partition's start on physical
drive (always FFFFh if primary partition)

Format of COMPAQ DOS 3.31 drive data table:
Offset  Size    Description
00h    DWORD   pointer to next table
04h    BYTE    physical unit number (for INT 13)
05h    BYTE    logical drive number
06h 25 BYTEs   BIOS Parameter Block (see DOS 4.0-5.0 drive data table below)
1Fh  6 BYTEs   ??? apparently always zeros
25h    BYTE    flags
bit 6: 16-bit FAT instead of 12-bit FAT
5: large volume???
26h    WORD    device-open count???
28h 11 BYTEs   volume label or "NO NAME    " if none (always "NO NAME" for
fixed media)
33h    BYTE    terminating null for volume label
34h    BYTE    device type (see INT 21/AX=440Dh)
35h    WORD    bit flags describing drive
37h    WORD    number of cylinders
39h 25 BYTEs   BIOS parameter block for highest capacity drive supports
52h  6 BYTEs   ??? apparently always zeros
58h    BYTE    least-significant byte of last-accessed cylinder number
---removable media---
59h    DWORD   time of last access in clock ticks (FFFFFFFFh if never)
---fixed media---
59h    WORD    partition (FFFFh = primary, 0001h = extended)
5Bh    WORD    absolute cylinder number of partition's start on physical
drive (always FFFFh if primary partition)

Format of DOS 4.0-5.0 drive data table:
Offset  Size    Description
00h    DWORD   pointer to next table
04h    BYTE    physical unit number (for INT 13)
05h    BYTE    logical drive number
06h 25 BYTEs   BIOS Parameter Block (see also INT 21/AH=53h)
Offset  Size    Description
00h    WORD    bytes per sector
02h    BYTE    sectors per cluster, FFh if unknown
03h    WORD    number of reserved sectors
05h    BYTE    number of FATs
06h    WORD    number of root dir entries
08h    WORD    total sectors (see offset 15h if zero)
0Ah    BYTE    media descriptor, 00h if unknown
0Bh    WORD    sectors per FAT
0Dh    WORD    sectors per track
0Fh    WORD    number of heads
11h    DWORD   number of hidden sectors
15h    DWORD   total sectors if WORD at 08h is zero
1Fh    BYTE    flags
bit 6: 16-bit FAT instead of 12-bit
20h  2 BYTEs   ???
22h    BYTE    device type (see INT 21/AX=440Dh)
23h    WORD    bit flags describing drive
bit 0: fixed media
bit 1: door lock supported
bit 2: ???
bit 3: all sectors in a track are the same size
bit 4: physical drive has multiple logical units
bit 5: current logical drive for physical drive
bit 6: ???
bit 7: ???
bit 8: ???
25h    WORD    number of cylinders
27h 25 BYTEs   BIOS Parameter Block for highest capacity supported
40h  7 BYTEs   ???
---removable media---
47h    DWORD   time of last access in clock ticks (FFFFFFFFh if never)
---fixed media, DOS 4.x---
47h    WORD    partition (FFFFh = primary, 0001h = extended)
49h    WORD    absolute cylinder number of partition's start on phys drive
(FFFFh if primary partition)
---fixed media, DOS 5.0---
47h    WORD    ??? apparently always 0001h
49h    WORD    absolute cylinder number of partition's start on phys drive
------
4Bh 11 BYTEs   volume label or "NO NAME    " if none (apparently taken from
extended boot record rather than root directory)
56h    BYTE    terminating null for volume label???
57h    DWORD   serial number
5Bh  8 BYTEs   filesystem type ("FAT12   " or "FAT16   ")
63h    BYTE    terminating null for filesystem type???

See also: 2F0801

2F0803 - DOS 4+ DRIVER.SYS support - GET DRIVE DATA TABLE LIST