INT E0 R - ConcCP/MConcurrent CP/M by Digital Research, now DR Multiuser DOS,DR Multiuser DOS - EXECUTE DOS-COMPATIBLE FUNCTIONS
	CL = 71h
	DS:DX -> parameter block (see #04038)
Return: AX = status (0000h successful, else error code)
	may destroy SI,DI,DS


(Table 04037)
Values for DR "execute DOS-compatible function" function number:
 00h	"fd_getdpb"	get disk information (see also INT 21/AH=32h)
 01h	"fd_mkdir"	create directory (see also INT 21/AH=39h)
 02h	"fd_rmdir"	remove directory (see also INT 21/AH=3Ah)
 03h	"fd_chdir"	change directory (see also INT 21/AH=3Bh)
 04h	"fd_creat"	create file (see also INT 21/AH=3Ch)
 05h	"fd_open"	open existing file (see also INT 21/AH=3Dh)
 06h	"fd_close"	close file (see also INT 21/AH=3Eh)
 07h	"fd_read"	read from file (see also INT 21/AH=3Fh)
 08h	"fd_write"	write to file (see also INT 21/AH=40h)
 09h	"fd_delete"	delete file (see also INT 21/AH=41h)
 0Ah	"fd_lseek"	get/set file position (see also INT 21/AH=42h)
 0Bh	"fd_chmod"	get/set file attributes (see also INT 21/AH=43h)
 0Ch	"fd_curdir"	get current directory (see also INT 21/AH=47h)
 0Dh	"fd_sfirst"	find first matching file (see also INT 21/AH=4Eh)
 0Eh	"fd_snext"	find next matching file (see also INT 21/AH=4Fh)
 0Fh	"fd_rename"	rename file (see also INT 21/AH=56h)
 10h	"fd_gsfdate"	get/set file date (see also INT 21/AX=5700h)
 11h	"fd_mktemp"	make temporary file (see also INT 21/AH=5Ah)
 12h	"fd_mknew"	create new file (see also INT 21/AH=5Bh)
 13h	"fd_lock"	lock/unlock file data (see also INT 21/AH=5Ch)
 14h	"fd_dup"	duplicate file handle (see also INT 21/AH=45h)
 15h	"fd_dup2"	force duplicate file handle (see also INT 21/AH=46h)
 16h-19h ???
 1Ah	"fd_ioctl"	I/O control emulation
 1Bh	"fd_commit"	commit file to disk (see also INT 21/AH=68h)
 1Ch	"fd_expand"	expand file name (see also INT 21/AH=60h)
 1Dh	???
 1Eh	???
 1Fh	"fd_sethandles" set number of handles for calling process
SeeAlso: #04038


Format of DR "execute DOS-compatible function" parameter block:
Offset	Size	Description	(Table 04038)
 00h	WORD	function number (see #04037)
---function 00h---
 02h	WORD	drive
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> DPBsee Drive Paramter Block (see #04039)
---function 01h,02h,03h---
 02h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. directory name
---function 04h---
 02h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. filename
 06h	WORD	file attributes
---function 05h---
 02h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. filename
 06h	WORD	open mode (see INT 21/AH=3Dh)
---function 06h---
 02h	WORD	file handle
---function 07h,08h---
 02h	WORD	file handle
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> buffer
 08h	WORD	number of bytes to read or write
---function 09h---
 02h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. filename
---function 0Ah---
 02h	WORD	file handle
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	(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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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 DTAsee Disk Transfer Address
---function 0Ch---
 02h	WORD	drive
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> 64-byte buffer for ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. current directory path
---function 0Dh---
 02h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. filespec
 06h	WORD	file attributes
 08h	WORD	(call) size of buffer pointed at by current DTAsee Disk Transfer Address
		(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 DTAsee Disk Transfer Address (at 21 bytes per
			  entry)
---function 0Eh---
 02h	WORD	number of additional matches to store in DTAsee Disk Transfer Address
		(normally set to 0, but if DTAsee Disk Transfer Address is at least 47 bytes, can be
		  set to (DTAsize-21)/26 to return multiple matches)
---function 0Fh---
 02h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. filename
 06h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. 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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. filename
 06h	WORD	file attributes
---function 13h---
 02h	WORD	file handle
 04h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	offset of start of region
 08h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> 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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> 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	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> ASCIZA NUL-terminated ASCII string.	The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h.  Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. relative filename
 06h	DWORDDoubleword; four bytes.	 Commonly used to hold a 32-bit segment:offset or selector:offset address.	-> buffer for absolute filename
---function 1Fh---
 02h	WORD	desired number of file handles for process


Format of DR Multiuser DOS Disk Parameter Block (DPBsee Drive Paramter Block):
Offset	Size	Description	(Table 04039)
 00h	BYTE	drive number (00h = A:)
 01h	BYTE	relative unit number
 02h	WORD	sector size in bytes
 04h	BYTE	sectors per cluster - 1
 05h	BYTE	shift count to convert clusters into sectors
 06h	WORD	number of reserved sectors at beginning of drive
 08h	BYTE	number of FATs
 09h	WORD	number of root directory entries
 0Bh	WORD	number of first sector containing user data
 0Dh	WORD	number of clusterse on disk
 0Fh	BYTE	number of sectors per FATsee File Allocation Table
 10h	WORD	sector number of first directory sector
 12h  4 BYTEs	reserved
 16h	BYTE	media ID byte (see #01356)
 17h	BYTE	00h if disk accessed, FFh if not
 18h  6 BYTEs	reserved
 1Eh	WORD	number of free clusters on drive
Note:	this structure is a subset of the MS-DOS 3.x Drive Parameter BlockThe DOS Drive Parameter Block stores the description of the media layout for a logical drive, as well as some housekeeping information.  See also INT 21h Function 1Fh and INT 21h Function 32h.
SeeAlso: #04038,#01357 at INT 21/AH=1Fh,#01395 at INT 21/AH=32h