[net.micro] Undocumented DOS function.

roy@gitpyr.UUCP (Roy Mongiovi) (09/05/85)

The following is a (relatively) complete description of an undocumented
DOS function which may be used to write programs which intelligently access
disks.  With this function programs may be written which operate correctly
on diskettes, fixed disks, and ram drives.  Four bytes of the table are
unidentified for DOS 3, if anyone is running DOS 3.x and can figure out
what they represent, please let me (us) know.  Thanks.

;;;	DOS INTERRUPT 21H, FUNCTION 1FH.  GET DEFAULT DRIVE PARAMETER BLOCK.
;
;	EXIT	(DS:BX) = ADDRESS OF DRIVE PARAMETER BLOCK.
;		(THIS JUST INVOKES FUNCTION 32H WITH DL = 0)

;;;	DOS INTERRUPT 21H, FUNCTION 32H.  GET DRIVE PARAMETER BLOCK.
;
;	ENTRY	(DL) = DRIVE NUMBER, 0 = DEFAULT, 1 = A, ETC.
;
;	EXIT	(AL) = 0FFH IF INVALID DRIVE NUMBER, ELSE
;		(DS:BX) = ADDRESS OF DRIVE PARAMETER BLOCK.

;		STRUCTURE OF DOS DRIVE PARAMETER BLOCK:

DPBLOCK 	STRUCT			;OFFSET
DISK_OFFSET	DB	?		;  0.  DRIVE NUMBER (0 = A, ETC.)
UNIT_OFFSET	DB	?		;  1.  UNIT NUMBER WITHIN DEVICE DRIVER
SECTOR_SIZE	DW	?		;  2.  NUMBER OF BYTES PER SECTOR
MAX_CLUSTER	DB	?		;  4.  LARGEST SECTOR NUMBER IN CLUSTER
					;      ADD ONE FOR NUMBER OF SECTORS/CLUSTER
LOG2_SECTORS	DB	?		;  5.  LOG BASE TWO OF THE CLUSTER SIZE
RESERVED	DW	?		;  6.  NUMBER OF RESERVED (BOOT) SECTORS
FAT_COUNT	DB	?		;  8.  NUMBER OF COPIES OF THE FAT
ROOT_COUNT	DW	?		;  9.  NUMBER OF ROOT DIRECTORY ENTRIES
DATA_START	DW	?		; 11.  FIRST SECTOR OF DATA ON MEDIUM
MAX_NUMBER	DW	?		; 13.  LARGEST POSSIBLE CLUSTER NUMBER
					;      SUBTRACT ONE FOR NUMBER OF CLUSTERS
FAT_SECTORS	DB	?		; 15.  NUMBER OF SECTORS IN ONE FAT COPY
ROOT_START	DW	?		; 16.  FIRST SECTOR OF ROOT DIRECTORY
DEVICE_ADDR	DD	?		; 18.  CORRESPONDING DEVICE DRIVER ADDRESS
DESCRIPTOR	DB	?		; 22.  MEDIA DESCRIPTOR BYTE FOR MEDIUM
VALID_BYTE	DB	?		; 23.  0FFH INDICATES BLOCK MUST BE REBUILT
NEXT_BLOCK	DD	?		; 24.  ADDRESS OF NEXT DEVICE BLOCK IN LIST

;	FROM THIS POINT ON, DOS 3 DIFFERS FROM 2:

		IF	DOS2

DIR_START	DW	?		; 28.  STARTING CLUSTER OF CURRENT DIRECTORY
					;      ZERO INDICATES THE ROOT DIRECTORY
PATH_NAME	DB	64 DUP (?)	; 30.  ASCIIZ CURRENT DIRECTORY PATH STRING

		ELSE	DOS3

;		ON MY XT, THIS WAS ALWAYS:

		DW	0
		DW	0FFFFH

		ENDIF
DPBLOCK 	ENDS

-- 
Roy J. Mongiovi.	Office of Computing Services.		User Services.
Georgia Institute of Technology.	Atlanta GA  30332.	(404) 894-6163
 ...!{akgua, allegra, amd, hplabs, ihnp4, masscomp, ut-ngp}!gatech!gitpyr!roy

		  exp(sqrt(-1.0) * 4.0 * atan(1.0)) == -1