Function 52h "Used Internally by DOS" - IN-VARS* Returns a pointer to a set of DOS data variables MCB chain,
pointer to first of the device\drivers and a pointer to disk
parameter blocks (first one)
entry AH 52h
return ES:BX pointer to the DOS list of lists, for disk information. Does not
access the disk, so information in tables might be incorrect if
disk has been changed. Returns a pointer to the following array
of longword pointers:
Bytes Value
-2h,-1h segment of first memory control block
00h-03h pointer to first DOS disk block (see function 36h)
(continued next page)
Function 52h "Used Internally by DOS" - IN-VARS
return ES:BX Bytes Value
04h-07h Pointer to list of DOS file tables
dword pointer to next file table
word number of files in this table
35h bytes per file
00h-01h number of file handles referring to
this file
02h-06h unknown
07h-0Ah pointer to device\drivers header if
character device; pointer to DOS Device
Control Block if block device (see
fn 32h for format)
0Bh-1Fh unknown
20h-2Ah filename in Struct -FCB format (no
path, no period, blank-padded)
2Bh-2Ch PSP segment of file's owner
2Dh-30h unknown - 0 always
31h-32h unknown
33h-34h unknown
8h-0Bh pointer to device\driver\CLOCK$-, whether installable
or resident
0Ch-0Fh pointer to actual device\driver\CON-, whether
installable or resident
Function 52h "Used Internally by DOS" - IN-VARS
return ES:BX Bytes Value
(DOS 2.x)
10 number of logical drives in system
11-12 maximum bytes/block of any block device
13-16 unknown
17 beginning (not a pointer. The real beginning!) of
device\driver\NUL-. This is the first device on DOS's
linked list of device drivers.
(DOS 3.x)
10h-11h maximum bytes/block of any block device (0200h)
12h-15h pointer to first disk buffer
16h-19h partially undefined: Pointer to array of drive info:
51h bytes per drive, starting with A: ...
00h-3Fh current path as ASCIIZ, starting with 'x:\
40h-43h unknown zeros always
44h unknown flags? Usually 40h, except for
entry after last valid entry = 00h
45h-48h pointer to DOS disk block for this drive
49h-4Ah unknown. Current track or block?
-1 if never accessed
4Bh-4Eh unknown -1 always
4Fh-52h unknown 2 always
1Ah-1Dh pointer to Struct -FCB table (if CONFIG.SYS contains FCBS=)
Function 52h "Used Internally by DOS" - IN-VARS
return ES:BX Bytes Value
1Eh-1Fh size of Struct -FCB table
20h number of block devices
21h value of LASTDRIVE command in CONFIG.SYS (default 5)
22h beginning (not a pointer. The real beginning!) of
device\driver\NUL-. This is the first device on DOS's
linked list of device drivers.
note 1) This call is not supported in OS/2 1.0's DOS Compatibility Box
2) Used by DOS 4.0 MEM.EXE, DOS 3.3 ASSIGN.COM, PRINT.COM, SUBST.EXE