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