[<<Previous Entry]
[^^Up^^]
[Next Entry>>]
[Menu]
[About The Guide]
AX = 1400h ???
ES:DI -> ??? data structure (at least 24 bytes)
BL = ???
Return: AX = ???
Data structure
Offset Size Description
00h WORD ???
02h DWORD far pointer to ???
06h DWORD far pointer to ??? pointer array (see below)
0Ah DWORD far pointer to ???
0Eh DWORD ???
12h WORD segment of ???
14h DWORD far pointer to ???
Pointer array
Offset Size Description
00h WORD number of pointers to follow
02h N DWORDs far pointers to ???
Note: QEMM converts the pointers into linear addresses in place
AX = 1401h ???
Return: CF clear
???
AX = 1402h ???
BL = function
00h NOP
01h ???
02h ???
other ???
ES:DI -> ???
Return: CF clear
???
Data structure
Offset Size Description
00h WORD segment of ??? (X, word at X:0136h set to X)
02h WORD segment of ??? (word at X:0124h set to this)
04h WORD number of paragraphs of ???
06h 3 WORDs ??? (copied to X:0000h)
0Ch WORD ???
AX = 1403h add ??? to list and ??? (execute func 1406h)
ES:DI -> ??? structure added to end of ??? list
(at least 31 bytes, DWORD at offset 06h used for
storing pointer to next struc, WORD at offset 00h
seems to be a key or index)
Return: CF clear
AX = 1404h NOP
AX = 1405h remove ??? from ??? list
BX = key???
Return: CF clear
AX = 1406h ???
???
Return: CF clear
???
AX = 1407h ???
???
Return: CF clear
???
AX = 1408h ???
???
Return: CF clear
???
AX = 1409h ???
???
Return: CF clear
???
AX = 140Ah ???
BX = ???
Return: CF clear
???
AX = 140Bh ???
BX = ???
Return: CF clear
SI = segment of 256-byte buffer???
AH = 15h ???
ES:BX -> ??? or 0000h:0000h
Return: CF clear
---QEMM v5.00+ ---
AX = 1600h get memory access status
ES:DI -> 256-byte buffer
Return: ES:DI buffer filled
Note: each byte of the buffer indicates the status of a 4K
page (bit 0 set if read, bit 1 set if written)
AX = 1601h set memory access status
ES:DI -> 256-byte buffer containing access statuses (see above)
AH = 17h get memory usage statistics
ES:DI -> 81-byte buffer for memory statistics (see below)
Return: CF clear
---QEMM v5.11+ ---
AH = 18h check whether conventional memory mapped into address range
ES:BX = starting address
CX = number of 4K pages
Return: CF clear
AL = 00h one or more pages is remapped
01h all pages in range are conventional memory
(physical address == virtual address)
AH = 19h NOP
Return: CF set
AH = 1Ah I/O port access
AL = subfunction
00h get byte from I/O port
Return: BL = port value
01h send byte to I/O port
BL = value to send
02h send byte to I/O port, get byte from following port
BH = value to send
Return: BL = value read
03h send bytes to two consecutive I/O ports
BH = value for first I/O port (DX)
BL = value for second I/O port (DX+1)
DX = port number
Return: CF clear
AH = 1Bh MS Windows 3 support
AL = subfunction
00h get ???
ES:DI -> buffer for ??? data structure
Return: CF set on error
CF clear if successful
Data structure:
Offset Size Description
00h DWORD pointer to ???
04h BYTE ??? (v6.00 sets to 01h)
05h BYTE ??? (v6.00 sets to 00h or 0Bh)
SeeAlso: INT 21/AX=4402h"QEMM"
01h ???
Return: CF set on error
CF clear if successful
02h ???
Return: CF set on error
CF clear if successful
03h MS Windows initializing
CX = segment from which Windows init broadcast made???
DL = Windows startup flags???
DI = Windows version number (major in upper byte)
Return: ???
SeeAlso: INT 2F/AX=1605h
04h MS Windows terminating
Return: CF clear
05h determine whether program is driver???
DS:DX -> ASCIZ filename
Return: CF clear
AL = 01h if string ends in ".DRV"
= FFh if string ends in "GDI.EXE"
= 00h otherwise
06h ???
CX = length of data pointed at by DS:DX
DS:DX -> ???
Return: CF clear
07h BUG: QEMM 6.00-6.03 accept this and branch randomly
else Return: CF set
AH = 1Ch protected-mode hardware interrupt handlers ???
AL = subfunction
00h restore??? IRQ0-7 handlers
01h set??? IRQ0-7 handlers
ES:DI -> 8 DWORDs containing ???
02h restore??? IRQ8-15 handlers
03h set??? IRQ8-15 handlers
ES:DI -> 8 DWORDs containing ???
BUG: although the jump table only contains four entries,
QEMM 6.00 will attempt to use it for any value of
AL between 00h and 2Ah, thus branching unpredictably
for AL=04h-2Ah
---QEMM v6.00+ ---
AH = 1Dh Stealth interrupts
AL = subfunction
00h switch to pre-Stealth interrupt vector table
Note: also switches VGA Save table pointer
(0040h:00A8h) and overwrites the vectors
currently assigned for use by the two
interrupt controllers (see INT 67/AX=DE0Ah)
with the vectors for INT 08-0F and 70-77 (to
avoid crashing the system).
01h restore user interrupt vector table
Notes: interrupts should be disabled around the
AX=1D00h and AX=1D01h calls because QEMM does
not modify the memory maps to map in ROM, so
an interrupt could be disastrous
clears any pending IRQ7 at end of function
else
Return: CF set
AH = 1Eh Stealth information
AL = subfunction
00h get Stealth configuration
Return: BL = flags
bit 0: conventional memory sorted
bit 1: conventional memory filled
bit 2: ???
bit 3: ???
bit 4: expanded memory is in use
bit 5: ???
BH = ??? (always 00h for v6.00)
CL = stealth type (00h none,46h Frame,4Dh Map)
CH = ??? (zero/nonzero important)
DX = ??? (always 0000h for v6.00)
SI = ??? (always 0000h for v6.00)
DI = ??? (always 0000h for v6.00)
01h get number of Stealth'ed ROMs
Return: CF clear
BX = number of Stealth'ed ROMs
02h get Stealth'ed ROM info
ES:DI -> buffer for Stealth ROM info (see below)
Return: CF clear
BX = number of Stealth'ed ROMs
ES:DI buffer filled
else
Return: CF set
AH = 1Fh page table manipulation
AL = subfunction
00h get page table entry
CX = page number
Return: EDX = page table entry
CF clear
01h set page table entry
CX = page number
EDX = page table entry
Return: CF clear
SeeAlso: function 1008h
else
Return: CF set
AH = 20h asynchronous disk access support???
AL = subfunction
00h get ???
Return: CF clear
BL = flags
bit 7: ??? (set if Stealth:F or :M active)
bit 0: ???
01h set ???
BL = ??? (bit 0 only)
Return: CF clear
else
Return: CF set
AH = 21h Stealth support
AL = subfunction
00h copy data from Stealthed address space
DS:SI -> start address of hidden memory to copy
ES:DI -> buffer for copied data
ECX = number of bytes to copy
Return: CF clear if successful
CF set on error (DS:SI < C000h:0000h or
DS:SI + ECX > 1M)
else
Return: CF set
---QEMM v6.03 only---
AH = 22h DESQview/X support
AL = subfunction
00h get ???
Return: CF clear
ES:DI -> ???
01h set ???
ES:DI -> ??? or 0000h:0000h
Return: CF clear if successful
CF set on error
other
Return: CF set
This page created by ng2html v1.05, the Norton guide to HTML conversion utility.
Written by Dave Pearson