[<<Previous Entry] [^^Up^^] [Next Entry>>] [Menu] [About The Guide]
Call QEMM entry point with:
        AH = 00h get QEMM state
                Return: CF clear
                        AL = QEMM state
                            bit 0 set if QEMM turned OFF
                            bit 1 set if in "Auto" mode
        AH = 01h set QEMM state
                AL = new state
                    bit 0 set: place QEMM in OFF state
                Return: CF clear if successful
                        CF set on error
        AH = 02h get ???
                Return: CF clear
                        AX = segment of ??? data structure
                        Data Structure
                        Offset  Size    Description
                         00h    DWORD   page table entry for ???
                                ???
        AH = 03h get QEMM version
                Return: CF clear
                        AX = BX = version in BCD
                Notes:  the official docs only state that the version is
                          returned in BX
                        MICEMM returns AX=0001h, BX unchanged
        AH = 04h allocate 4K page and set AUTO/ON mode
                Return: CF clear if successful
                            DX = page number of a 4K page
                        CF set if unable to allocate page
                Note:   QEMM mode unchanged if not AUTO/OFF
        AH = 05h free 4K page and turn QEMM off
                DX = page number returned by function 04h
                Return: CF clear
                Note:   QEMM mode unchanged if not AUTO/ON
        AH = 06h make new mapping context???
                DX = page number of 4K page to hold page table
                Return: CF clear
                Note:   copies page table into given page and then sets ???
                          page table entry to point at copy
        AH = 07h get mapping context
                Return: CF clear
                        DX = page number of page table for current mapping
                                context
        AH = 08h set mapping context???
                DX = linear page number of page table
                Return: CF clear
        AH = 09h get linear page number for page table entry
                CX = page table index
                Return: CF clear
                        DX = linear page number
        AH = 0Ah set linear page number for page table entry
                CX = page table index
                DX = linear page number
                Return: CF clear
        AH = 0Bh map 4K pages
                BX = number of pages
                CX = first page number (must be 0100h to allocate HMA)
                DX = EMS handle (memory belonging to EMS handle will be mapped
                        into the address space beginning with the first page
                        allocated to the handle)
                Return: AH = 00h
        AH = 0Ch get available memory
                Return: CF clear
                        BX = 0001h
                        CX = total 4K pages???
                        DX = number of 4K pages free
        AH = 0Dh ??? (related to callbacks)
                AL = 00h/01h/02h ???
                Return: CF clear
        AH = 0Eh set ??? callbacks
                DS:BX -> FAR routine for ???
                ES:DX -> FAR routine for ???
                Return: CF clear
                Note:   DS:BX callback should return BX=???; ES:DX is called
                          with BX=???, and should set the ??? from which the
                          other handler read the value of BX.  BH and BL
                          appear to be separate values.
        AH = 0Fh unmap 4K pages
                CX = first page number
                DX = number of pages
                Return: CF clear
                        AL = 00h/01h if ???
                Note:   if CX=0100h and DX=0010h, the HMA is remapped to
                          simulate a disabled A20
        AX = 1000h get protected-mode interface
                DS:SI -> 16-byte buffer for two GDT entries
                ES:DI -> buffer for 4K page table
                Return: CF clear
                        EAX = offset of protected-mode API entry point
                        DS:SI buffer filled with two GDT descriptors
                                first is QEMM code segment, second is data???
                        ES:DI buffer filled with 4K page table
                        DI points to first unused page table entry
                SeeAlso: INT 67/AX=DE01h
        AX = 1001h get CPU debug registers
                ES:DI -> buffer for debug registers (8 DWORDs)
                Return: CF clear
                        BL = INT01 handling (see function 1002h)
                        ES:DI buffer filled
        AX = 1002h set CPU debug registers
                BL = INT01 handling
                    00h  reflect all debugging exceptions as V86-mode INT 01's
                    else convert debugging exceptions other than single-step
                           into V86-mode INT 03's, single-step to INT 01's
                ES:DI -> buffer containing debug registers (8 DWORDs)
                Return: CF clear
                Notes:  identical to INT 67/AX=DE09h if BL=01h
                        the INT01 handling flag is set to 01h by the general-
                          protection violation handler for certain privileged
                          instructions
        AX = 1003h get machine status word CR0
                Return: CF clear
                        EAX = contents of CR0
                SeeAlso: INT 67/AX=DE07h
        AX = 1004h allocate a 4K page
                Return: CF clear if successful
                            EDX = linear address of allocated page
                        CF set on error
                SeeAlso: INT 67/AX=DE04h
        AX = 1005h free 4K page
                EDX = linear address of page to free
                Return: CF clear
                SeeAlso: INT 67/AX=DE05h
        AX = 1006h NOP
                Return: CF set
        AX = 1007h get maximum physical memory address
                Return: CF clear
                        EDX = physical address of highest 4K memory page
                SeeAlso: INT 67/AX=DE02h
        AX = 1008h get physical address of page in first megabyte
                CX = page number (linear address shifted right 12 bits)
                Return: CF clear
                        EDX = linear address of page
                SeeAlso: function 1F00h
        AX = 1009h switch to protected mode
                ESI = linear address in first megabyte of system reg values
                        (see INT 67/AX=DE0Ch)
                interrupts disabled
                Return: interrupts disabled
                        GDTR, IDTR, LDTR, TR loaded
                        SS:ESP must have at least 16 bytes space, and the
                                entry point is required to set up a new stack
                                before enabling interrupts
                        EAX, ESI, DS, ES, FS, GS destroyed
        AX = 100Ah switch back to virtual-86 mode
                DS = selector for data segment from function 1000h
                SS:ESP in first megabyte of linear memory
                interrupts disabled
                STACK:  QWORD  return address from FAR call to 32-bit segment
                        DWORD  EIP
                        DWORD  CS
                        DWORD  reserved for EFLAGS
                        DWORD  ESP
                        DWORD  SS
                        DWORD  ES
                        DWORD  DS
                        DWORD  FS
                        DWORD  GS
                will switch to virtual86 mode with interrupts disabled, all
                  segment registers loaded, and EAX destroyed.
        AH = 11h get memory type map
                AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
                        by QEMM 6.00)
                ES:DI -> 256-byte buffer for memory types
                Return: CF clear
                        BL = ???
                        ES:DI buffer filled
                Note:   each byte of the buffer corresponds to a 4K page, and
                          contains the type of that page: 00h = mappable,
                          02h = mapped ROM, 03h = high RAM, 04h = excluded,
                          05h = video, 06h = ROM, 07h = adapter ROM,
                          08h = split ROM, 09h = page frame, 0Ah = RAMmable,
                          0Bh = conventional
        AH = 12h get HIRAM chain
                Return: CF clear
                        BX = segment of first MCB in high memory
                            0000h if no high memory
        AX = 1300h VIDRAMEGA???
                BL = 00h copy ???
                     nonzero copy ??? (reverse)
                Return: CF clear
                        AL = 00h if all pages clean
                           = 01h if any page dirty
        AX = 1301h check if ???
                DX:DI = start address of range to check ???
                CX = length of range
                Return: CF clear
                        CX = ??? (0000h or 1000h)
        AX = 1302h ???
                BL = ???
                BH = ???
                CX = ???
                SI = offset of ???
                DI = offset of ???
                ???
                Return: CF clear
                        ???
                Note:   disables certain interrupts at the two 8259 PICs during
                          execution; also modifies CRT controller during
                          execution under certain circumstances
        AX = 1303h ??? EMS allocation
                BX = number of pages of EMS to allocate
                ???
                Return: CF clear if successful
                        CF set on error
                        ???
        AX = 1304h EMS deallocation
                DX = EMS handle
                Return: CF clear
        AX = 1305h ???
                CX = ???
                Return: CF clear
                Note:   disables certain interrupts at the two 8259 PICs during
                          execution (see AX=130Ch)
        AX = 1306h set DESQview critical section counter address
                ES:BX -> WORD DESQview critical section counter or 0000h:0000h
                Return: CF clear
                Note:   also sets pointer in low-memory part of QEMM to current
                          value of INT 15 if ES:BX not 0000h:0000h
        AX = 1307h ???
                Return: CF clear
                Note:   disables certain interrupts at the two 8259 PICs during
                          execution (see AX=130Ch)
        AX = 1308h ???
                BL = ??? (zero/nonzero)
                Return: CF clear
        AX = 1309h Hercules mode-change support
                ES:BX -> new address for Hercules mode-change callback
                Return: CF clear
                Note:   the callback function is called whenever the CRTC mode
                          register is written, with AL set to the value written
        AX = 130Ah virtualize EGA/VGA I/O ports 03C8h/03C9h???
                CX:DX -> buffer for storing CRTC register contents???
                        or 0000h:0000h to disable
                Return: CF clear
        AX = 130Bh ???
                BL = ???
                Return: CF clear
                        ???
        AX = 130Ch set interrupts to mask
                BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
                        AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
                Return: CF clear
        AX = 130Dh ???
                ???
                Return: CF clear
                Note:   disables certain interrupts at the two 8259 PICs during
                          execution (see AX=130Ch)
        AX = 130Eh ??? (modifies CRT controller setup)
                ???
                Return: CF clear
        AX = 130Fh reset ???
                Return: CF clear
        AX = 1310h ???
                ???
                Return: CF clear
                Note:   disables certain interrupts at the two 8259 PICs during
                          execution (see AX=130Ch)
        AX = 1311h set ???
                BL = ???
                Return: CF clear
        AX = 1312h (v6.02) NOP???
                Note:   called by DV 2.42, but appears to be a NOP in QEMM 6.02

This page created by ng2html v1.05, the Norton guide to HTML conversion utility. Written by Dave Pearson