Wuschel's DOS eXtender |
Function 09h - Write string to console
Function 1Ah - Set disk transfer area address
Function 1Bh - Get allocation information for default
drive
Function 1Ch - Get allocation information for specific
drive
Function 1Fh - Get drive parameter block for default
drive
Function 25h - Set interrupt vector
Function 2Fh - Get disk transfer area address
Function 32h - Get drive parameter block for specific
drive
Function 34h - Get address of InDos flag
Function 35h - Get interrupt vector
Function 39h - Create subdirectory
Function 3Ah - Remove subdirectory
Function 3Bh - Change current directory
Function 3Ch - Create new file
Function 3Dh - Open existing file
Function 3Fh - Read from file
Function 40h - Write to file
Function 41h - Delete file
Function 43h - Get/set file attributes
Function 44h - IOCTL
Function 47h - Get current directory
Function 48h - Allocate DOS memory block
Function 49h - Free DOS memory block
Function 4Ah - Resize DOS memory block
Function 4Bh - Load and execute child program
Function 4Eh - Find first matching file
Function 4Fh - Find next matching file
Function 56h - Rename file
Function 5Ah - Create temporary file
Function 5Bh - Create new file
AH = 09h
DS:EDX -> '$'-terminated string
Note: The size of the string must be less or equal 16k since this is the transfer buffer size of WDOSX.
AH = 1Ah
DS:EDX -> Disk Transfer Area
Note: WDOSX will keep an internal buffer for the DTA. Upon any Find First/ Find Next call, WDOSX does the necessary copying to make this call transparent for the user program.
AH = 1Bh
Returns
AL = sectors per cluster
CX = bytes per sector
DX = total number of clusters
DS:EBX -> media ID byte
AH = 1Bh
DL = drive (0 = default, 1 = A: etc.)
Returns
AL = sectors per cluster
CX = bytes per sector
DX = total number of clusters
DS:EBX -> media ID byte
AH = 1Fh
Returns
AL = status (0 = success, -1 = invalid drive)
DS:EBX -> Drive Parameter Block
AH = 25h
AL = interrupt number
DS:EDX -> new interrupt handler
Note: This function sets the protected mode interrupt vector using DPMI call 0205h.
AH = 2Fh
Returns
ES:EBX -> Disk Transfer Area
Note: If no DTA address is set, the default DTA address at PSP:80h will be returned, otherwise the return pointer is the same as last passed to function 1Ah.
AH = 32h
DL = drive number (0 = default, 1 = A: etc.)
Returns
AL = status (0 = success, -1 = invalid drive)
DS:EBX -> Drive Parameter Block
AH = 34h
Returns
ES:EBX -> InDos flag
AH = 35h
AL = interrupt number
Returns
ES:EBX -> address of interrupt handler
Note: This function returns the address of the protected mode interrupt handler as obtained using DPMI call 0204h.
AH = 39h
DS:EDX -> ASCIZ pathname
Returns
CF = clear on success, set on error (AX = error code)
AH = 3Ah
DS:EDX -> ASCIZ pathname
Returns
CF = clear on success, set on error (AX = error code)
AH = 3Bh
DS:EDX -> ASCIZ pathname
Returns
CF = clear on success, set on error (AX = error code)
AH = 3Ch
CX = file attributes
DS:EDX -> ASCIZ filename
Returns
CF = clear on success (AX = file handle)
CF = set on error (AX = error code)
AH = 3Dh
AL = access mode
DS:EDX -> ASCIZ filename
Returns
CF = clear on success (AX = file handle) set on error (AX = error code)
AH = 3Fh
BX = file handle
ECX = number of bytes to read
DS:EDX -> data buffer
Returns
CF = clear on success (EAX = number of bytes actually read)
CF = set on error (AX = error code)
Note: This function allowes for reading up to 4 gigabytes at once (in theory, that is.) There is no 64k limitation as in pure DOS.
AH = 40h
BX = file handle
ECX = number of bytes to write
DS:EDX -> data buffer
Returns
CF = clear on success (EAX = number of bytes actually written)
CF = set on error (AX = error code)
Note: This function allowes for writing up to 4 gigabytes at once (in theory, that is.) There is no 64k limitation as in pure DOS.
AH = 41h
DS:EDX -> ASCIZ filename
Returns
CF = clear on success, set on error (AX = error code)
AH = 43h
AL = subfunction (0 = get, 1 = set)
CX = file attributes
IF AL = 1:
DS:EDX -> ASCIZ filename
Returns
CF = clear on success, set on error (AX = error code)
CX = file attributes
AH = 44h
AL = subfunction
The following subfunctions are extended:
AL = 2 (read from character device control channel)
BX = file handle
ECX = number of bytes to read
DS:EDX -> buffer
Returns
CF = clear on success (EAX = number of bytes actually read)
CF = set on error (AX = error code)
Note: This function allowes for reading up to 4 gigabytes at once (in theory, that is.) There is no 64k limitation as in pure DOS. Before calling the actual DOS function, max (ECX,16k) bytes will be copied from DS:EDX into the real mode transfer buffer to allow for passing request structures.
AL = 3 (write to character device control channel)
BX = file handle
ECX = number of bytes to write
DS:EDX -> data buffer
Returns
CF = clear on success (EAX = number of bytes actually written)
CF = set on error (AX = error code)
Note: This function allowes for writing up to 4 gigabytes at once (in theory, that is.) There is no 64k limitation as in pure DOS.
AL = 4 (read from block device control channel)
BL = drive number (0 = default, 1 = A: etc.)
ECX = number of bytes to read
DS:EDX -> buffer
Returns
CF = clear on success (EAX = number of bytes actually read)
CF = set on error (AX = error code)
Note: This function allowes for reading up to 4 gigabytes at once (in theory, that is.) There is no 64k limitation as in pure DOS. Before calling the actual DOS function, max (ECX,16k) bytes will be copied from DS:EDX into the real mode transfer buffer to allow for passing request structures.
AL = 5 (write to block device control channel)
BL = drive number (0 = default, 1 = A: etc.)
ECX = number of bytes to write
DS:EDX -> data buffer
Returns
CF = clear on success (EAX = number of bytes actually written)
CF = set on error (AX = error code)
Note: This function allowes for writing up to 4 gigabytes at once (in theory, that is.) There is no 64k limitation as in pure DOS.
AH = 47h
DL = drive number (0 = default, 1 = A: etc.)
DS:ESI -> 64 byte buffer to receive ASCIZ pathname
Returns
CF = clear on success, set on error (AX = error code)
AH = 48h
BX = number of paragraphs to allocate
Returns
CF = clear on success, (AX = selector of allocated block)
CF = set on error, (AX = error code, bx = size of largest block)
AH = 49h
ES = selector of block to free
Returns
CF = clear on success, set on error (AX = error code)
AH = 4Ah
BX = new size in paragraphs
ES = selector of block to resize
Returns
CF = clear on success set on error, (AX = error code, bx = max. size available)
AH = 4Bh
AL = 0 (other subfunctions NOT supported)
DS:EDX -> ASCIZ filename of the program to execute
ES:EBX -> parameter block (see below)
Returns
CF clear on success, set on error (AX = error code)
Note: Unlike under pure DOS, under WDOSX the format of the parameter block is as follows:
Offset 00000000 : 48 bit protected mode far pointer to evironment string
to use
Offset 00000006 : 48 bit protected mode far pointer to command tail to
use
This is the method most other DOS extenders also use, so there should be no significant compatibility problems.
AH = 4Eh
AL = flag used by APPEND
CX = attribute mask
DS:EDX -> ASCIZ file name (may include path and wildcards)
Returns
CF = clear on success (DTA as set with function 1Ah
filled)
CF = set on error (AX = error code)
AH = 4Fh
DTA as set with function 1Ah contains information from
previous Find First call (function 4Eh)
Returns
CF = clear on success (DTA as set with function 1Ah
filled)
CF = set on error (AX = error code)
AH = 56h
DS:EDX -> ASCIZ filename
ES:EDI -> ASCIZ new filename
Returns
CF = clear on success, set on error (AX = error code)
AH = 5Ah
CX = attributes
DS:EDX -> buffer containing path name ending with "\" + 13
zero bytes
Returns
CF = clear on success, filename appended to path name in buffer (AX
= file handle)
CF = set on error (AX = error code)
AH = 5Bh
CX = attributes
DS:EDX -> ASCIZ filename
Returns
CF = clear on success, (AX = file handle)
CF = set on error (AX = error code)