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