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