Format of DR "execute DOS-compatible function" parameter block:
Offset	Size	Description	)
 00h	WORD	function number (see #04037)
---function 00h---
 02h	WORD	drive
 04h	DWORD	-> DPB (see #04039)
---function 01h,02h,03h---
 02h	DWORD	-> ASCIZ directory name
---function 04h---
 02h	DWORD	-> ASCIZ filename
 06h	WORD	file attributes
---function 05h---
 02h	DWORD	-> ASCIZ filename
 06h	WORD	open mode (see INT 21/AH=3Dh)
---function 06h---
 02h	WORD	file handle
---function 07h,08h---
 02h	WORD	file handle
 04h	DWORD	-> buffer
 08h	WORD	number of bytes to read or write
---function 09h---
 02h	DWORD	-> ASCIZ filename
---function 0Ah---
 02h	WORD	file handle
 04h	DWORD	(call) desired offset
		(ret) new file position if function is successful
 08h	WORD	seek origin (offset is calculated from specified position)
		00h start of file
		01h current position
		02h end of file
---function 0Bh---
 02h	DWORD	-> ASCIZ filename
 06h	WORD	(call) new file attributes or new file owner
		(ret) current/new file attributes, depending on function
 08h	WORD	subfunction
		00h get attribute
		01h set attribute
		02h get extended attributes
		03h set extended attributes (and password)
		04h get encrypted password
		05h set extended attributes (and encrypted password)
		06h get file owner
		07h set file owner
		Note: the password is taken from the first 8 bytes of the DTA
---function 0Ch---
 02h	WORD	drive
 04h	DWORD	-> 64-byte buffer for ASCIZ current directory path
---function 0Dh---
 02h	DWORD	-> ASCIZ filespec
 06h	WORD	file attributes
 08h	WORD	(call) size of buffer pointed at by current DTA
		(ret) number of matching files returned???
		Note:	if the volume label attribute is specified, the root
			  directory will be searched
			if the buffer is at least 47 bytes, multiple matching
			  entries will be stored in the DTA (at 21 bytes per
			  entry)
---function 0Eh---
 02h	WORD	number of additional matches to store in DTA
		(normally set to 0, but if DTA is at least 47 bytes, can be
		  set to (DTAsize-21)/26 to return multiple matches)
---function 0Fh---
 02h	DWORD	-> ASCIZ filename
 06h	DWORD	-> ASCIZ new name
---function 10h---
 02h	WORD	file handle
 04h	WORD	subfunction
		00h get date and time
		01h set date and time
 06h	WORD	file date
 08h	WORD	file time
---function 11h---
 02h	DWORD	-> ASCIZ pathname + 13 extra bytes for generated filename
		(if pathname does not end in backslash, one will be appended)
 06h	WORD	file attributes
---function 12h---
 02h	DWORD	-> ASCIZ filename
 06h	WORD	file attributes
---function 13h---
 02h	WORD	file handle
 04h	DWORD	offset of start of region
 08h	DWORD	length of region to lock/unlock
 0Ch	WORD	subfunction (00h = lock, 01h = unlock)
---function 14h---
 02h	WORD	file handle to be duplicated
		(new file handle is returned as function return value)
---function 15h---
 02h	WORD	file handle to be duplicated
 04h	WORD	file handle which is to become the duplicate
---function 1Ah, form 1---
 02h	WORD	file handle
 04h	WORD	IOCTL function number (00h,01h,06h,07h,0Ah)
 06h	WORD	(ret) status
---function 1Ah, form 2---
 02h	WORD	drive number
 04h	WORD	IOCTL function number (08h,09h,0Eh,0Fh)
 06h	WORD	(ret) status
---function 1Ah, form 3---
 02h	WORD	file handle
 04h	WORD	IOCTL function number (02h,03h,54h)
 06h	DWORD	-> buffer
 0Ah	WORD	(call) size of buffer in bytes
		(ret) size of returned data
---function 1Ah, form 4---
 02h	WORD	drive number
 04h	WORD	IOCTL function number (04h,05h)
 06h	DWORD	-> buffer
 0Ah	WORD	(call) size of buffer in bytes
		(ret) size of returned data
---function 1Bh---
 02h	WORD	file handle of file to be committed to disk
---function 1Ch---
 02h	DWORD	-> ASCIZ relative filename
 06h	DWORD	-> buffer for absolute filename
---function 1Fh---
 02h	WORD	desired number of file handles for process