Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentesRévision précédente | |||
back2root:ibm-pc-ms-dos:interrupts:old:ms_interrupt_list-31-40 [2023/01/05 04:01] – supprimée - modification externe (Unknown date) 127.0.0.1 | back2root:ibm-pc-ms-dos:interrupts:old:ms_interrupt_list-31-40 [2023/01/05 04:01] (Version actuelle) – créée - modification externe 127.0.0.1 | ||
---|---|---|---|
Ligne 1: | Ligne 1: | ||
+ | ====== MSDOS - Interrupt List 31h-40h ====== | ||
+ | |||
+ | ===== INT 31 - overwritten by CP/M jump instruction in INT 30 ===== | ||
+ | |||
+ | ----------310000----------------------------- | ||
+ | ==== INT 31 P - DPMI 0.9+ - ALLOCATE LDT DESCRIPTORS ==== | ||
+ | |||
+ | AX = 0000h | ||
+ | CX = number of descriptors to allocate | ||
+ | Return: CF clear if successful | ||
+ | AX = base selector | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) | ||
+ | 0000h-7FFFh DOS error passed through by DPMI | ||
+ | 8001h unsupported function | ||
+ | 8002h object in wrong state for function | ||
+ | 8003h system integrity would be endangered | ||
+ | 8004h deadlock detected | ||
+ | 8005h pending serialization request cancelled | ||
+ | 8010h out of DPMI internal resources | ||
+ | 8011h descriptor unavailable | ||
+ | 8012h linear memory unavailable | ||
+ | 8013h physical memory unavailable | ||
+ | 8014h backing store unavailable | ||
+ | 8015h callback unavailable | ||
+ | 8016h handle unavailable | ||
+ | 8017h maximum lock count exceeded | ||
+ | 8018h shared memory already serialized exclusively by another | ||
+ | 8019h shared memory already serialized shared by another client | ||
+ | 8021h invalid value for numeric or flag parameter | ||
+ | 8022h invalid segment selector | ||
+ | 8023h invalid handle | ||
+ | 8024h invalid callback | ||
+ | 8025h invalid linear address | ||
+ | 8026h request not supported by hardware | ||
+ | Notes: DPMI is the DOS Protected-Mode Interface | ||
+ | the base and limit of the returned descriptors will be 0, and the type | ||
+ | will be " | ||
+ | add the value returned by INT 31/AX=0003h to move to subsequent | ||
+ | descriptors if multiple descriptors were allocated | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0001h, | ||
+ | ----------310001----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - FREE LDT DESCRIPTOR | ||
+ | AX = 0001h | ||
+ | BX = selector to free | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8022h) (see AX=0000h) | ||
+ | Notes: only one descriptor is freed per call | ||
+ | the program' | ||
+ | (DPMI 1.0+) any segment registers containing the freed selector are | ||
+ | set to 0000h | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0000h, | ||
+ | ----------310002----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SEGMENT TO DESCRIPTOR | ||
+ | AX = 0002h | ||
+ | BX = real mode segment | ||
+ | Return: CF clear if successful | ||
+ | AX = selector corresponding to real mode segment (64K limit) | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8011h) (see AX=0000h) | ||
+ | Notes: | ||
+ | the returned descriptor can never be modified or freed | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | ----------310003----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET NEXT SELECTOR INCREMENT VALUE | ||
+ | AX = 0003h | ||
+ | Return: CF clear | ||
+ | AX = value to add to get next sequential selector | ||
+ | Notes: the increment will be a power of two | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0000h | ||
+ | ----------310004----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - LOCK SELECTOR | ||
+ | AX = 0004h | ||
+ | BX = selector to lock (prevent paging) | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | specification, | ||
+ | PROGMAN, and KERNEL | ||
+ | SeeAlso: AX=0005h, | ||
+ | ----------310005----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR | ||
+ | AX = 0005h | ||
+ | BX = selector to unlock (permit paging) | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | specification, | ||
+ | PROGMAN, and KERNEL | ||
+ | SeeAlso: AX=0004h, | ||
+ | ----------310006----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET SEGMENT BASE ADDRESS | ||
+ | AX = 0006h | ||
+ | BX = selector | ||
+ | Return: CF clear if successful | ||
+ | CX:DX = linear base address of segment | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8022h) (see AX=0000h) | ||
+ | Note: not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0007h | ||
+ | ----------310007----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SET SEGMENT BASE ADDRESS | ||
+ | AX = 0007h | ||
+ | BX = selector | ||
+ | CX:DX = linear base address | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8022h, | ||
+ | Notes: only modify descriptors allocated with INT 31/AX=0000h | ||
+ | only the low 24 bits of the address will be used by 16-bit DPMI | ||
+ | implementations even on a 386 or higher | ||
+ | DPMI 1.0+ automatically reloads any segment registers containing the | ||
+ | selector being modified | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0006h, | ||
+ | ----------310008----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SET SEGMENT LIMIT | ||
+ | AX = 0008h | ||
+ | BX = selector | ||
+ | CX:DX = segment limit | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8021h, | ||
+ | Notes: CX must be zero for 16-bit DPMI implementations | ||
+ | limits greater than 1MB must be page aligned (low 12 bits set) | ||
+ | only modify descriptors allocated with INT 31/AX=0000h | ||
+ | DPMI 1.0+ automatically reloads any segment registers containing the | ||
+ | selector being modified | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0007h, | ||
+ | ----------310009----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS | ||
+ | AX = 0009h | ||
+ | BX = selector | ||
+ | CL = access rights/type byte | ||
+ | CH = 80386 extended rights/type byte (32-bit DPMI implementations only) | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8021h, | ||
+ | Notes: if the Present bit is clear, CL bits 0-3 may have any value | ||
+ | DPMI 1.0+ automatically reloads any segment registers containing the | ||
+ | selector being modified | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0007h, | ||
+ | ----------31000A----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - CREATE ALIAS DESCRIPTOR | ||
+ | AX = 000Ah | ||
+ | BX = selector | ||
+ | Return: CF clear if successful | ||
+ | AX = new data selector | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8011h, | ||
+ | Notes: | ||
+ | use INT 31/AX=0001h to free new selector | ||
+ | future changes to the original selector will not be reflected in the | ||
+ | returned alias selector | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0001h | ||
+ | ----------31000B----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET DESCRIPTOR | ||
+ | AX = 000Bh | ||
+ | BX = LDT selector | ||
+ | ES:(E)DI -> 8-byte buffer for copy of descriptor | ||
+ | Return: CF clear if successful | ||
+ | buffer filled | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8022h) (see AX=0000h) | ||
+ | Notes: | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=000Ch | ||
+ | ----------31000C----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SET DESCRIPTOR | ||
+ | AX = 000Ch | ||
+ | BX = LDT selector | ||
+ | ES:(E)DI -> 8-byte buffer containing descriptor | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8021h, | ||
+ | Notes: | ||
+ | only modify descriptors allocated with INT 31/AX=0000h | ||
+ | DPMI 1.0+ automatically reloads any segment registers containing the | ||
+ | selector being modified | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=000Bh | ||
+ | ----------31000D----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - ALLOCATE SPECIFIC LDT DESCRIPTOR | ||
+ | AX = 000Dh | ||
+ | BX = LDT selector | ||
+ | Return: CF clear if successful | ||
+ | descriptor allocated | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8011h, | ||
+ | Notes: free descriptor with INT 31/AX=0001h | ||
+ | the first 16 descriptors (04h-7Ch) are reserved for this function, but | ||
+ | some may already be in use by other applications under DPMI 0.9; | ||
+ | DPMI 1.0 guarantees 16 descriptors per client | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0000h, | ||
+ | ----------31000E----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS | ||
+ | AX = 000Eh | ||
+ | CX = number of descriptors to copy | ||
+ | ES:(E)DI -> descriptor buffer (see below) | ||
+ | Return: CF clear if successful | ||
+ | descriptors copied | ||
+ | CF set on error | ||
+ | AX = error code (8022h) (see AX=0000h) | ||
+ | CX = number of descriptors successfully copied | ||
+ | Notes: | ||
+ | if the function fails, the first CX descriptors are valid; the | ||
+ | remainder are not modified | ||
+ | SeeAlso: AX=000Bh, | ||
+ | |||
+ | Format of descriptor buffer entry (one per descriptor to get): | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------31000F----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS | ||
+ | AX = 000Fh | ||
+ | CX = number of descriptors to copy | ||
+ | ES:(E)DI -> descriptor buffer (see below) | ||
+ | Return: CF clear if successful | ||
+ | descriptors copied | ||
+ | CF set on error | ||
+ | AX = error code (8021h, | ||
+ | CX = number of descriptors successfully copied | ||
+ | Notes: | ||
+ | if the function fails, the first CX descriptors are valid; the | ||
+ | remainder are not modified | ||
+ | DPMI 1.0+ automatically reloads any segment registers containing a | ||
+ | selector being modified | ||
+ | SeeAlso: AX=000Ch, | ||
+ | |||
+ | Format of descriptor buffer entry (one per descriptor to set): | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | ----------310100----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - ALLOCATE DOS MEMORY BLOCK | ||
+ | AX = 0100h | ||
+ | BX = number of paragraphs to allocate | ||
+ | Return: CF clear if successful | ||
+ | AX = real mode segment of allocated block | ||
+ | DX = first selector for allocated block | ||
+ | CF set on error | ||
+ | AX = DOS error code (07h,08h) (see INT 21/AH=59h) | ||
+ | (DPMI 1.0+) DPMI error code (8011h) (see AX=0000h) | ||
+ | BX = size (in paragraphs) of largest available block | ||
+ | Notes: | ||
+ | if the caller is a 16-bit program | ||
+ | never modify or deallocate returned descriptors | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0101h, | ||
+ | ----------310101----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - FREE DOS MEMORY BLOCK | ||
+ | AX = 0101h | ||
+ | DX = selector of block | ||
+ | Return: CF set if successful | ||
+ | CF set on error | ||
+ | AX = DOS error code (07h,09h) (see INT 21/AH=59h) | ||
+ | Notes: all descriptors allocated for the block are automatically freed | ||
+ | DPMI 1.0+ automatically zeros any segment registers containing a | ||
+ | selector freed by this function | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0100h, | ||
+ | ----------310102----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - RESIZE DOS MEMORY BLOCK | ||
+ | AX = 0102h | ||
+ | BX = new block size in paragraphs | ||
+ | DX = selector of block | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = DOS error code (07h, | ||
+ | (DPMI 1.0+) DPMI error code (8011h, | ||
+ | BX = maximum block size (in paragraphs) possible | ||
+ | Notes: | ||
+ | next descriptor in the LDT is already in use | ||
+ | shrinking a block past a 64K boundary will cause some selectors to be | ||
+ | freed; DPMI 1.0+ automatically zeros any segment registers containing | ||
+ | a selector freed by this function | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0100h | ||
+ | ----------310200----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR | ||
+ | AX = 0200h | ||
+ | BL = interrupt number | ||
+ | Return: CF clear | ||
+ | CX:DX = segment: | ||
+ | Note: the DPMI implementation is required to support all 256 vectors | ||
+ | SeeAlso: AX=0201h, | ||
+ | ----------310201----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR | ||
+ | AX = 0201h | ||
+ | BL = interrupt number | ||
+ | CX:DX = segment: | ||
+ | Return: CF clear | ||
+ | Note: all memory that may be touched by a hardware interrupt handler must be | ||
+ | locked down with INT 31/ | ||
+ | SeeAlso: AX=0200h, | ||
+ | ----------310202----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR | ||
+ | AX = 0202h | ||
+ | BL = exception number (00h-1Fh) | ||
+ | Return: CF clear if successful | ||
+ | CX:(E)DX = selector: | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8021h) (see AX=0000h) | ||
+ | Notes: | ||
+ | DPMI 1.0+ supports this function only for backward compatibility; | ||
+ | | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0203h, | ||
+ | ----------310203----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SET PROCESSOR EXCEPTION HANDLER VECTOR | ||
+ | AX = 0203h | ||
+ | BL = exception number (00h-1Fh) | ||
+ | CX:(E)DX = selector: | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8021h, | ||
+ | Notes: | ||
+ | stack frame on chaining to the next exception handler | ||
+ | the handler should return using a FAR return | ||
+ | all fault stack frames contain an error code, but it is only valid for | ||
+ | exceptions 08h and 0Ah-0Eh | ||
+ | handlers will only be called if the exception occurs in protected mode, | ||
+ | and the DPMI host does not transparently handle the exception | ||
+ | the handler may change certain values on the stack frame (see below) | ||
+ | DPMI 1.0+ supports this function only for backward compatibility; | ||
+ | | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0202h, | ||
+ | |||
+ | Format of stack frame for 16-bit programs: (offset from SS:SP) | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of stack frame for 32-bit programs: (offset from SS:ESP) | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------310204----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET PROTECTED MODE INTERRUPT VECTOR | ||
+ | AX = 0204h | ||
+ | BL = interrupt number | ||
+ | Return: CF clear | ||
+ | CX:(E)DX = selector: | ||
+ | Notes: | ||
+ | DPMI implementations are required to support all 256 vectors | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0200h, | ||
+ | ----------310205----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SET PROTECTED MODE INTERRUPT VECTOR | ||
+ | AX = 0205h | ||
+ | BL = interrupt number | ||
+ | CX:(E)DX = selector: | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8022h) (see AX=0000h) | ||
+ | Notes: | ||
+ | 32-bit programs must use a 32-bit interrupt stack frame when chaining | ||
+ | to the next handler | ||
+ | DPMI implementations are required to support all 256 vectors | ||
+ | hardware interrupts are reflected to the virtual machine' | ||
+ | client, software interrupts to the current client | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0201h, | ||
+ | ----------310210----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - GET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER | ||
+ | AX = 0210h | ||
+ | BL = exception number (00h-1Fh) | ||
+ | Return: CF clear if successful | ||
+ | CX:(EDX) = selector: | ||
+ | CF set on error | ||
+ | AX = error code (8021h) (see AX=0000h) | ||
+ | Note: DPMI host reflects exception to current client' | ||
+ | SeeAlso: AX=0202h, | ||
+ | ----------310211----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - GET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER | ||
+ | AX = 0211h | ||
+ | BL = exception number (00h-1Fh) | ||
+ | Return: CF clear if successful | ||
+ | CX:(EDX) = selector: | ||
+ | CF set on error | ||
+ | AX = error code (8021h) (see AX=0000h) | ||
+ | Notes: | ||
+ | DPMI host performs a switch to protected mode, reflects the exception | ||
+ | to the virtual machine' | ||
+ | on the handler' | ||
+ | SeeAlso: AX=0202h, | ||
+ | ----------310212----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - SET PROTECTED MODE EXTENDED PROCESSOR EXCEPTION HANDLER | ||
+ | AX = 0212h | ||
+ | BL = exception or fault number (00h-1Fh) | ||
+ | CX:(E)DX = exception handler selector: | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8021h, | ||
+ | Note: DPMI host sends exception to current client' | ||
+ | SeeAlso: AX=0203h, | ||
+ | ----------310213----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - SET REAL MODE EXTENDED PROCESSOR EXCEPTION HANDLER | ||
+ | AX = 0213h | ||
+ | BL = exception or fault number (00h-1Fh) | ||
+ | CX:(E)DX = exception handler selector: | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8021h, | ||
+ | Notes: | ||
+ | DPMI host performs a switch to protected mode, reflects the exception | ||
+ | to the virtual machine' | ||
+ | on the handler' | ||
+ | SeeAlso: AX=0203h, | ||
+ | ----------310300----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SIMULATE REAL MODE INTERRUPT | ||
+ | AX = 0300h | ||
+ | BL = interrupt number | ||
+ | BH = flags | ||
+ | bit 0: reset the interrupt controller and A20 line (DPMI 0.9) | ||
+ | | ||
+ | others must be 0 | ||
+ | CX = number of words to copy from protected mode to real mode stack | ||
+ | ES:(E)DI = selector: | ||
+ | Return: CF clear if successful | ||
+ | real mode call structure modified (all fields except SS:SP, CS:IP | ||
+ | filled with return values from real mode interrupt) | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8012h, | ||
+ | protected mode stack unchanged | ||
+ | Notes: | ||
+ | CS:IP in the real mode call structure is ignored for this call, | ||
+ | instead, the indicated interrupt vector is used for the address | ||
+ | the flags in the call structure are pushed on the real mode stack to | ||
+ | form an interrupt stack frame, and the trace and interrupt flags are | ||
+ | clear on entry to the handler | ||
+ | DPMI will provide a small (30 words) real mode stack if SS:SP is zero | ||
+ | the real mode handler must return with the stack in the same state as | ||
+ | it was on being called | ||
+ | SeeAlso: AX=0302h, | ||
+ | SeeAlso: INT 2F/ | ||
+ | |||
+ | Format of real mode call structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------310301----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH FAR RETURN FRAME | ||
+ | AX = 0301h | ||
+ | BH = flags | ||
+ | bit 0: reset the interrupt controller and A20 line (DPMI 0.9) | ||
+ | | ||
+ | others must be 0 | ||
+ | CX = number of words to copy from protected mode to real mode stack | ||
+ | ES:DI / ES:EDI = selector: | ||
+ | (see INT 31/ | ||
+ | Return: CF clear if successful | ||
+ | real mode call structure modified (all fields except SS:SP, CS:IP | ||
+ | filled with return values from real mode interrupt) | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8012h, | ||
+ | protected mode stack unchanged | ||
+ | Notes: | ||
+ | the real mode procedure must exit with a FAR return | ||
+ | DPMI will provide a small (30 words) real mode stack if SS:SP is zero | ||
+ | the real mode handler must return with the stack in the same state as | ||
+ | it was on being called | ||
+ | SeeAlso: AX=0300h, | ||
+ | ----------310302----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - CALL REAL MODE PROCEDURE WITH IRET FRAME | ||
+ | AX = 0302h | ||
+ | BH = flags | ||
+ | bit 0: reset the interrupt controller and A20 line (DPMI 0.9) | ||
+ | | ||
+ | others must be 0 | ||
+ | CX = number of words to copy from protected mode to real mode stack | ||
+ | ES:DI / ES:EDI = selector: | ||
+ | (see INT 31/ | ||
+ | Return: CF clear if successful | ||
+ | real mode call structure modified (all fields except SS:SP, CS:IP | ||
+ | filled with return values from real mode interrupt) | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8012h, | ||
+ | protected mode stack unchanged | ||
+ | Notes: | ||
+ | the flags in the call structure are pushed on the real mode stack to | ||
+ | form an interrupt stack frame, and the trace and interrupt flags are | ||
+ | clear on entry to the handler | ||
+ | the real mode procedure must exit with an IRET | ||
+ | DPMI will provide a small (30 words) real mode stack if SS:SP is zero | ||
+ | the real mode handler must return with the stack in the same state as | ||
+ | it was on being called | ||
+ | SeeAlso: AX=0300h | ||
+ | ----------310303----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - ALLOCATE REAL MODE CALLBACK ADDRESS | ||
+ | AX = 0303h | ||
+ | DS:SI / DS:ESI = selector: | ||
+ | ES:DI / ES:EDI = selector: | ||
+ | (see AX=0300h) | ||
+ | Return: CF clear if successful | ||
+ | CX:DX = segment: | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8015h) (see AX=0000h) | ||
+ | Notes: the real mode call structure is static, causing reentrancy problems; | ||
+ | its contents are only valid at the time of a callback | ||
+ | the called procedure must modify the real mode CS:IP before returning | ||
+ | values are returned to real mode by modifying the real mode call struc | ||
+ | DPMI hosts must provide at least 16 callbacks per client | ||
+ | SeeAlso: AX=0304h, | ||
+ | |||
+ | Values callback procedure is called with: | ||
+ | DS:SI / DS:ESI = selector: | ||
+ | ES:DI / ES:EDI = selector: | ||
+ | SS:SP / SS:ESP = locked protected mode API stack | ||
+ | interrupts disabled | ||
+ | Return: (with IRET) | ||
+ | ES:DI / ES:EDI = selector: | ||
+ | ----------310304----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - FREE REAL MODE CALLBACK ADDRESS | ||
+ | AX = 0304h | ||
+ | CX:DX = real mode callback address | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8024h) (see AX=0000h) | ||
+ | SeeAlso: AX=0303h | ||
+ | ----------310305----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET STATE SAVE/ | ||
+ | AX = 0305h | ||
+ | Return: CF clear | ||
+ | AX = size in bytes of state buffer | ||
+ | BX:CX = real mode address of procedure to save/ | ||
+ | SI:DI / SI:EDI = protected mode procedure to save/ | ||
+ | Notes: the buffer size will be zero if it is not necessary to preserve state | ||
+ | 16-bit programs should call SI:DI, 32-bit programs should call SI:EDI | ||
+ | this function is only needed if using the raw mode switch service | ||
+ | SeeAlso: AX=0306h | ||
+ | |||
+ | Values to call state-save procedures with: | ||
+ | AL = direction | ||
+ | 00h save state | ||
+ | 01h restore state | ||
+ | ES:DI / ES:EDI -> state buffer | ||
+ | Return: all registers preserved | ||
+ | ----------310306----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET RAW MODE SWITCH ADDRESSES | ||
+ | AX = 0306h | ||
+ | Return: CF clear | ||
+ | BX:CX -> procedure to switch from real to protected mode | ||
+ | SI:DI / SI:EDI -> procedure to switch from protected to real mode | ||
+ | Notes: | ||
+ | the caller must save and restore the state of the task with AX=0305h | ||
+ | not supported by MS Windows 3.0 in Standard mode | ||
+ | SeeAlso: AX=0305h | ||
+ | |||
+ | Values to JUMP at mode-switch procedures with: | ||
+ | AX = new DS | ||
+ | CX = new ES | ||
+ | DX = new SS | ||
+ | BX / EBX = new SP / ESP | ||
+ | SI = new CS | ||
+ | DI / EDI = new IP / EIP | ||
+ | Notes: | ||
+ | DX/EDX, SI/ESI, and DI/EDI will be undefined; FS and GS will be 0000h | ||
+ | interrupts will stay disabled during the entire mode switch if they | ||
+ | are disabled on entry to the mode-switch procedure | ||
+ | ----------310400----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET DPMI VERSION | ||
+ | AX = 0400h | ||
+ | Return: CF clear | ||
+ | AH = major version of DPMI spec supported | ||
+ | AL = two-digit minor version of DPMI spec supported | ||
+ | BX = flags | ||
+ | bit 0: running under an 80386 (32-bit) implementation | ||
+ | bit 1: processor returns to real mode for reflected interrupts | ||
+ | | ||
+ | bit 2: virtual memory supported | ||
+ | bit 3: reserved (undefined) | ||
+ | others reserved (zero) | ||
+ | CL = processor type (02h=80286, 03h=80386, 04h=80486) | ||
+ | DH = curr value of virtual master interrupt controller base interrupt | ||
+ | DL = curr value of virtual slave interrupt controller base interrupt | ||
+ | SeeAlso: AX=0401h, | ||
+ | ----------310401----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - GET DPMI CAPABILITIES | ||
+ | AX = 0401h | ||
+ | ES:(E)DI -> 128-byte buffer (see below) | ||
+ | Return: CF clear if successful | ||
+ | AX = capabilities | ||
+ | bit 0: paged accessed/ | ||
+ | 1: exceptions restartability supported | ||
+ | 2: device mapping supported (see AX=0508h) | ||
+ | 3: conventional memory mapping supported (see AX=0509h) | ||
+ | 4: demand zero-fill supported | ||
+ | 5: write-protect client capability supported | ||
+ | 6: write-protect host capability supported | ||
+ | 7-15: reserved | ||
+ | CX = reserved (00h) | ||
+ | DX = reserved (00h) | ||
+ | buffer filled | ||
+ | CF set on error (DPMI 0.9 only) | ||
+ | SeeAlso: AX=0400h | ||
+ | |||
+ | Format of buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | 02h 126 BYTEs ASCIZ host vendor name | ||
+ | ----------310500----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET FREE MEMORY INFORMATION | ||
+ | AX = 0500h | ||
+ | ES:DI / ES:EDI -> buffer for memory information (see below) | ||
+ | Return: CF clear | ||
+ | Notes: | ||
+ | this function must be considered advisory because other applications | ||
+ | may affect the results at any time after the call | ||
+ | fields not supported by the DPMI implementation are filled with | ||
+ | FFFFFFFFh | ||
+ | DPMI 1.0+ supports this function solely for backward compatibility; | ||
+ | AX=050Bh instead | ||
+ | SeeAlso: AX=0501h, | ||
+ | |||
+ | Format of memory information: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 24h 12 BYTEs reserved | ||
+ | ----------310501----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - ALLOCATE MEMORY BLOCK | ||
+ | AX = 0501h | ||
+ | BX:CX = size in bytes | ||
+ | Return: CF clear if successful | ||
+ | BX:CX = linear address of block | ||
+ | SI:DI = memory block handle for resizing and freeing block | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8012h-8014h, | ||
+ | Notes: no selectors are allocated | ||
+ | the memory block is allocated unlocked (can be locked with AX=0600h) | ||
+ | allocations are often page granular (see AX=0604h) | ||
+ | SeeAlso: AX=0000h, | ||
+ | ----------310502----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - FREE MEMORY BLOCK | ||
+ | AX = 0502h | ||
+ | SI:DI = handle of memory block | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8023h) (see AX=0000h) | ||
+ | Note: any selectors allocated for the memory block must also be freed, | ||
+ | preferably before freeing the memory block | ||
+ | SeeAlso: AX=0001h, | ||
+ | ----------310503----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - RESIZE MEMORY BLOCK | ||
+ | AX = 0503h | ||
+ | BX:CX = new size in bytes (nonzero) | ||
+ | SI:DI = handle of memory block | ||
+ | Return: CF clear if successful | ||
+ | BX:CX = new linear address | ||
+ | SI:DI = new handle of memory block | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8012h-8014h, | ||
+ | (see AX=0000h) | ||
+ | Notes: any selectors pointing at the block must be updated | ||
+ | the previous memory block handle becomes invalid | ||
+ | an error is returned if the new size is 0 | ||
+ | SeeAlso: AX=0102h, | ||
+ | ----------310504----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - ALLOCATE LINEAR MEMORY BLOCK | ||
+ | AX = 0504h | ||
+ | EBX = page-aligned linear address of memory block (00000000h if any | ||
+ | address is acceptable) | ||
+ | ECX = size in bytes (nonzero) | ||
+ | EDX = flags | ||
+ | bit 0: set to create committed pages instead of uncommitted pages | ||
+ | bits 1-31: reserved (0) | ||
+ | Return: CF clear if successful | ||
+ | EBX = linear address of memory block | ||
+ | ESI = memory block handle | ||
+ | CF set on error | ||
+ | AX = error code (8001h, | ||
+ | Note: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients | ||
+ | SeeAlso: AX=0501h, | ||
+ | ----------310505----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - RESIZE LINEAR MEMORY BLOCK | ||
+ | AX = 0505h | ||
+ | ESI = memory block handle | ||
+ | ECX = new size in bytes (nonzero) | ||
+ | EDX = flags | ||
+ | bit 0: create committed pages rather than uncommitted pages | ||
+ | bit 1: segment descriptor update required | ||
+ | ES:EBX -> buffer containing array of WORDs with selectors | ||
+ | EDI = number of selectors in array | ||
+ | bits 2-31: reserved (0) | ||
+ | Return: CF clear if successful | ||
+ | EBX = new linear base address | ||
+ | ESI = new memory block handle | ||
+ | CF set on error | ||
+ | AX = error code (8001h, | ||
+ | Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients | ||
+ | the old memory block handle becomes invalid | ||
+ | if EDX bit 1 set and the block' | ||
+ | all descriptors for selectors in the update buffer which fall within | ||
+ | the memory block | ||
+ | SeeAlso: AX=0503h, | ||
+ | ----------310506----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - GET PAGE ATTRIBUTES | ||
+ | AX = 0506h | ||
+ | ESI = memory block handle | ||
+ | EBX = offset in memory block of first page | ||
+ | ECX = number of pages | ||
+ | ES:EDX -> array of WORDs to hold page attributes (see below) | ||
+ | Return: CF clear if successful | ||
+ | buffer filled | ||
+ | CF set on error | ||
+ | AX = error code (8001h, | ||
+ | Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients | ||
+ | if EBX is not page-aligned, | ||
+ | SeeAlso: AX=0504h, | ||
+ | |||
+ | Format of page attribute words: | ||
+ | bits 0-2 page type | ||
+ | 000 uncommitted | ||
+ | 001 committed | ||
+ | 010 mapped (see AX=0508h, | ||
+ | other currently unused | ||
+ | bit 3 page is read/write rather than read-only | ||
+ | bit 4 accessed/ | ||
+ | bit 5 page has been accessed (only valid if bit 4 set) | ||
+ | bit 6 page has been written (only valid if bit 4 set) | ||
+ | bits 7-15 reserved (0) | ||
+ | ----------310507----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - MODIFY PAGE ATTRIBUTES | ||
+ | AX = 0507h | ||
+ | ESI = memory block handle | ||
+ | EBX = offset in memory block of first page | ||
+ | ECX = number of pages | ||
+ | ES:EDX -> array of WORDs with new page attributes (see AX=0506h) | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8001h, | ||
+ | (see AX=0000h) | ||
+ | ECX = number of pages which have been set | ||
+ | Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients | ||
+ | if EBX is not page-aligned, | ||
+ | SeeAlso: AX=0504h, | ||
+ | ----------310508----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - MAP DEVICE IN MEMORY BLOCK | ||
+ | AX = 0508h | ||
+ | ESI = memory block handle | ||
+ | EBX = page-aligned offset within memory block of page(s) to be mapped | ||
+ | ECX = number of pages to map | ||
+ | EDX = page-aligned physical address of device | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8001h, | ||
+ | Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients | ||
+ | support of this function is optional; hosts are also allowed to support | ||
+ | the function for some devices but not others | ||
+ | SeeAlso: AX=0504h, | ||
+ | ----------310509----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - MAP CONVENTIONAL MEMORY IN MEMORY BLOCK | ||
+ | AX = 0509h | ||
+ | ESI = memory block handle | ||
+ | EBX = page-aligned offset within memory block of page(s) to map | ||
+ | ECX = number of pages to map | ||
+ | EDX = page-aligned linear address of conventional (below 1M) memory | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8001h, | ||
+ | Notes: only supported by 32-bit DPMI hosts, but may be used by 16-bit clients | ||
+ | support of this function is optional | ||
+ | SeeAlso: AX=0504h, | ||
+ | ----------31050A----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - GET MEMORY BLOCK SIZE AND BASE | ||
+ | AX = 050AH | ||
+ | SI:DI = memory block handle | ||
+ | Return: CF clear if successful | ||
+ | SI:DI = size in bytes | ||
+ | BX:CX = base address | ||
+ | CF set on error | ||
+ | AX = error code (8023h) (see AX=0000h) | ||
+ | SeeAlso: AX=0501h, | ||
+ | ----------31050B----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - GET MEMORY INFORMATION | ||
+ | AX = 050Bh | ||
+ | ES:(E)DI -> 128-byte buffer for memory information (see below) | ||
+ | Return: CF clear if successful | ||
+ | CF set on error (DPMI 0.9 only) | ||
+ | Note: | ||
+ | SeeAlso: AX=0500h | ||
+ | |||
+ | Format of memory information: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 34h 76 BYTEs reserved (00h) | ||
+ | ----------310600----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - LOCK LINEAR REGION | ||
+ | AX = 0600h | ||
+ | BX:CX = starting linear address | ||
+ | SI:DI = size of region in bytes | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | none of the memory is locked | ||
+ | AX = error code (DPMI 1.0+) (8013h, | ||
+ | Notes: | ||
+ | may be called multiple times for a given page; the DPMI host keeps a | ||
+ | lock count for each page | ||
+ | SeeAlso: AX=0004h, | ||
+ | ----------310601----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - UNLOCK LINEAR REGION | ||
+ | AX = 0601h | ||
+ | BX:CX = starting linear address | ||
+ | SI:DI = size of region in bytes | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | none of the memory is unlocked | ||
+ | AX = error code (DPMI 1.0+) (8002h, | ||
+ | Notes: | ||
+ | memory whose lock count has not reached zero remains locked | ||
+ | SeeAlso: AX=0005h, | ||
+ | ----------310602----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - MARK REAL MODE REGION AS PAGEABLE | ||
+ | AX = 0602h | ||
+ | BX:CX = starting linear address | ||
+ | SI:DI = size of region in bytes | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | none of the memory is made pageable | ||
+ | AX = error code (DPMI 1.0+) (8002h, | ||
+ | Notes: must relock all unlocked real mode memory before terminating process | ||
+ | for DPMI 0.9; DPMI 1.0+ automatically relocks real mode memory | ||
+ | pages at beginning and end will be unlocked if the region overlaps them | ||
+ | pageability of real mode pages is binary, not a count | ||
+ | SeeAlso: AX=0600h, | ||
+ | ----------310603----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - RELOCK REAL MODE REGION | ||
+ | AX = 0603h | ||
+ | BX:CX = starting linear address | ||
+ | SI:DI = size of region in bytes | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | none of the memory is relocked | ||
+ | AX = error code (DPMI 1.0+) (8002h, | ||
+ | Notes: | ||
+ | pageability of real mode pages is binary, not a count | ||
+ | SeeAlso: AX=0602h | ||
+ | ----------310604----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET PAGE SIZE | ||
+ | AX = 0604h | ||
+ | Return: CF clear if successful | ||
+ | BX:CX = page size in bytes | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) | ||
+ | 8001h unsupported, | ||
+ | ----------310700----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - MARK PAGES AS PAGING CANDIDATES | ||
+ | AX = 0700h | ||
+ | BX:CX = starting linear page number | ||
+ | SI:DI = number of pages to mark as paging candidates | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | specification, | ||
+ | PROGMAN, and KERNEL | ||
+ | SeeAlso: AX=0701h, | ||
+ | ----------310701----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - DISCARD PAGES | ||
+ | AX = 0701h | ||
+ | BX:CX = starting linear page number | ||
+ | SI:DI = number of pages to discard | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | specification, | ||
+ | PROGMAN, and KERNEL | ||
+ | SeeAlso: AX=0700h, | ||
+ | ----------310702----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - MARK PAGE AS DEMAND PAGING CANDIDATE | ||
+ | AX = 0702h | ||
+ | BX:CX = starting linear address | ||
+ | SI:DI = number of bytes to mark as paging candidates | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8025h) (see AX=0000h) | ||
+ | Notes: this function is advisory, and does not force immediate paging | ||
+ | partial pages will not be discarded | ||
+ | SeeAlso: AX=0700h, | ||
+ | ----------310703----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - DISCARD PAGE CONTENTS | ||
+ | AX = 0703h | ||
+ | BX:CX = starting linear address | ||
+ | SI:DI = number of bytes to mark as discarded | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8025h) (see AX=0000h) | ||
+ | Notes: this function is advisory, and may be ignored by DPMI implementations | ||
+ | partial pages will not be discarded | ||
+ | SeeAlso: AX=0701h, | ||
+ | ----------310800----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - PHYSICAL ADDRESS MAPPING | ||
+ | AX = 0800h | ||
+ | BX:CX = physical address (should be above 1 MB) | ||
+ | SI:DI = size in bytes | ||
+ | Return: CF clear if successful | ||
+ | BX:CX = linear address which maps the requested physical memory | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8003h, | ||
+ | Notes: | ||
+ | the caller must build an appropriate selector for the memory | ||
+ | do not use for memory mapped in the first megabyte | ||
+ | SeeAlso: AX=0002h, | ||
+ | ----------310801----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - FREE PHYSICAL ADDRESS MAPPING | ||
+ | AX = 0801h | ||
+ | BX:CX = linear address returned by AX=0800h | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8025h) (see AX=0000h) | ||
+ | Note: | ||
+ | SeeAlso: AX=0508h, | ||
+ | ----------310900----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET AND DISABLE VIRTUAL INTERRUPT STATE | ||
+ | AX = 0900h | ||
+ | Return: CF clear | ||
+ | virtual interrupts disabled | ||
+ | AL = 00h if previously disabled | ||
+ | = 01h if previously enabled | ||
+ | AH preserved | ||
+ | Notes: the previous state may be restored simply by executing another INT 31 | ||
+ | a CLI instruction may be used if the previous state is unimportant, | ||
+ | but should be assumed to be very slow due to trapping by the host | ||
+ | SeeAlso: AX=0901h, | ||
+ | ----------310901----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET AND ENABLE VIRTUAL INTERRUPT STATE | ||
+ | AX = 0901h | ||
+ | Return: CF clear | ||
+ | virtual interrupts enabled | ||
+ | AL = 00h if previously disabled | ||
+ | = 01h if previously enabled | ||
+ | AH preserved | ||
+ | Notes: the previous state may be restored simply by executing another INT 31 | ||
+ | a STI instruction may be used if the previous state is unimportant, | ||
+ | but should be assumed to be very slow due to trapping by the host | ||
+ | SeeAlso: AX=0900h, | ||
+ | ----------310902----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET VIRTUAL INTERRUPT STATE | ||
+ | AX = 0902h | ||
+ | Return: CF clear | ||
+ | AL = 00h if disabled | ||
+ | = 01h if enabled | ||
+ | Note: | ||
+ | physical interrupt state rather than the per-client virtualized | ||
+ | interrupt flag | ||
+ | SeeAlso: AX=0900h, | ||
+ | ----------310A00----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET VENDOR SPECIFIC API ENTRY POINT | ||
+ | AX = 0A00h | ||
+ | DS:SI / DS:ESI -> case-sensitive ASCIZ vendor name or identifier | ||
+ | Return: CF clear if successful | ||
+ | ES:DI / ES:EDI -> FAR extended API entry point | ||
+ | DS, FS, GS, EAX, EBX, ECX, EDX, ESI, EBP destroyed | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8001h) (see AX=0000h) | ||
+ | Notes: | ||
+ | DPMI 1.0+ supports this function solely for backward compatibility; | ||
+ | INT 2F/AX=168Ah instead | ||
+ | SeeAlso: INT 2F/AX=168Ah | ||
+ | ----------310B00----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - SET DEBUG WATCHPOINT | ||
+ | AX = 0B00h | ||
+ | BX:CX = linear address | ||
+ | DL = size (1,2,4 bytes) | ||
+ | DH = type (00h execute, 01h write, 02h read/write) | ||
+ | Return: CF clear if successful | ||
+ | BX = watchpoint handle | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8016h, | ||
+ | SeeAlso: AX=0212h, | ||
+ | ----------310B01----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - CLEAR DEBUG WATCHPOINT | ||
+ | AX = 0B01h | ||
+ | BX = watchpoint handle | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8023h) (see AX=0000h) | ||
+ | Note: the watchpoint handle is freed | ||
+ | SeeAlso: AX=0B00h | ||
+ | ----------310B02----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - GET STATE OF DEBUG WATCHPOINT | ||
+ | AX = 0B02h | ||
+ | BX = watchpoint handle | ||
+ | Return: CF clear if successful | ||
+ | AX = status flags | ||
+ | bit 0: watch point has been executed since AX=0B00h or AX=0B03h | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8023h) (see AX=0000h) | ||
+ | SeeAlso: AX=0B00h, | ||
+ | ----------310B03----------------------------- | ||
+ | INT 31 P - DPMI 0.9+ - RESET DEBUG WATCHPOINT | ||
+ | AX = 0B03h | ||
+ | BX = watchpoint handle | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (DPMI 1.0+) (8023h) (see AX=0000h) | ||
+ | SeeAlso: AX=0B02h | ||
+ | ----------310C00----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - INSTALL RESIDENT HANDLER INIT CALLBACK | ||
+ | AX = 0C00h | ||
+ | ES:(E)DI -> resident service provider structure (see below) | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8015h, | ||
+ | Note: | ||
+ | protected mode services after terminating with AX=0C01h | ||
+ | SeeAlso: AX=0303h, | ||
+ | |||
+ | Format of resident service provider structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------310C01----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - TERMINATE AND STAY RESIDENT | ||
+ | AX = 0C01h | ||
+ | BL = return code | ||
+ | DX = number of paragraphs of DOS memory to reserve (0 or >= 6) | ||
+ | Return: never | ||
+ | Notes: | ||
+ | other DPMI programs | ||
+ | any protected mode memory remains allocated to the program unless | ||
+ | explicitly freed before this call | ||
+ | must first call AX=0C00h or program will simply be terminated | ||
+ | SeeAlso: AX=0C00h, | ||
+ | ----------310D00----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - ALLOCATE SHARED MEMORY | ||
+ | AX = 0D00h | ||
+ | ES:(E)DI -> shared memory allocation request structure (see below) | ||
+ | Return: CF clear if successful | ||
+ | request structure updated | ||
+ | CF set on error | ||
+ | AX = error code (8012h, | ||
+ | Note: first 16 bytes of memory block will be initialized to zeros on the | ||
+ | first allocation | ||
+ | SeeAlso: AX=0501h, | ||
+ | |||
+ | Format of shared memory allocation request structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | (name max 128 bytes) | ||
+ | | ||
+ | | ||
+ | ----------310D01----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - FREE SHARED MEMORY | ||
+ | AX = 0D01h | ||
+ | SI:DI = shared memory block handle | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8023h) (see AX=0000h) | ||
+ | Notes: | ||
+ | DPMI maintains separate global and virtual machine use counts for each | ||
+ | shared memory block; when the global use counts reaches zero, the | ||
+ | block is finally destroyed | ||
+ | SeeAlso: AX=0502h, | ||
+ | ----------310D02----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - SERIALIZE SHARED MEMORY | ||
+ | AX = 0D02h | ||
+ | SI:DI = shared memory block handle | ||
+ | DX = flags | ||
+ | bit 0: return immediately rather than suspending if serialization | ||
+ | unavailable | ||
+ | 1: shared rather than exclusive serialization | ||
+ | 2-15: reserved (0) | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8004h, | ||
+ | Notes: an exclusive serialization blocks any other serialization attempts for | ||
+ | the same block by another virtual machine; a shared serialization | ||
+ | blocks attempts at exclusive serialization by another virtual machine | ||
+ | hosts are not required to detect deadlock | ||
+ | a client' | ||
+ | caused it to block by calling AX=0D03h | ||
+ | SeeAlso: AX=0D00h, | ||
+ | ----------310D03----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - FREE SERIALIZATION ON SHARED MEMORY | ||
+ | AX = 0D03h | ||
+ | SI:DI = shared memory block handle | ||
+ | DX = flags | ||
+ | bit 0: release shared serialization rather than exclusive serialztn | ||
+ | bit 1: free pending serialization | ||
+ | bits 2-15: reserved (0) | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8002h, | ||
+ | SeeAlso: AX=0D00h, | ||
+ | ----------310E00----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - GET COPROCESSOR STATUS | ||
+ | AX = 0E00h | ||
+ | Return: CF clear | ||
+ | AX = coprocessor status | ||
+ | bit 0: numeric coprocessor enabled for current client | ||
+ | bit 1: client is emulating coprocessor | ||
+ | bit 2: numeric coprocessor is present | ||
+ | bit 3: host is emulating coprocessor instructions | ||
+ | bits 4-7: coprocessor type | ||
+ | 0000 none | ||
+ | 0010 80287 | ||
+ | 0011 80387 | ||
+ | 0100 80486 with numeric coprocessor | ||
+ | other reserved | ||
+ | bits 8-15: not used | ||
+ | Note: | ||
+ | SeeAlso: AX=0E01h | ||
+ | ----------310E01----------------------------- | ||
+ | INT 31 P - DPMI 1.0+ - SET EMULATION | ||
+ | AX = 0E01h | ||
+ | BX = coprocessor flag bits | ||
+ | bit 0: enable numeric coprocessor for current client | ||
+ | bit 1: client will emulate coprocessor | ||
+ | bits 2-15: not used | ||
+ | Return: CF clear if successful | ||
+ | CF set on error | ||
+ | AX = error code (8026h) (see AX=0000h) | ||
+ | Note: | ||
+ | SeeAlso: AX=0E00h | ||
+ | ----------32--------------------------------- | ||
+ | INT 32 - VIRUS - reportedly used by " | ||
+ | SeeAlso: INT 60" | ||
+ | ----------330000----------------------------- | ||
+ | INT 33 - MS MOUSE - RESET DRIVER AND READ STATUS | ||
+ | AX = 0000h | ||
+ | Return: AX = status | ||
+ | 0000h hardware/ | ||
+ | FFFFh hardware/ | ||
+ | BX = number of buttons | ||
+ | 0000h other than two | ||
+ | 0002h two buttons (many drivers) | ||
+ | 0003h Mouse Systems/ | ||
+ | FFFFh two buttons | ||
+ | Notes: to use mouse on a Hercules-compatible monographics card in graphics | ||
+ | mode, you must first set 0040h:0049h to 6 for page 0 or 5 for page 1, | ||
+ | and then call this function. | ||
+ | reportedly do not correctly use Hercules graphics in dual-monitor | ||
+ | systems, while version 4.10 does. | ||
+ | the Logitech mouse driver contains the signature string " | ||
+ | three bytes past the interrupt handler; many of the Logitech mouse | ||
+ | utilities check for this signature. | ||
+ | SeeAlso: AX=0021h, | ||
+ | ----------330001----------------------------- | ||
+ | INT 33 - MS MOUSE - SHOW MOUSE CURSOR | ||
+ | AX = 0001h | ||
+ | SeeAlso: AX=0002h, | ||
+ | ----------330002----------------------------- | ||
+ | INT 33 - MS MOUSE - HIDE MOUSE CURSOR | ||
+ | AX = 0002h | ||
+ | Note: | ||
+ | function 01h to unhide it. | ||
+ | SeeAlso: AX=0001h, | ||
+ | ----------330003----------------------------- | ||
+ | INT 33 - MS MOUSE - RETURN POSITION AND BUTTON STATUS | ||
+ | AX = 0003h | ||
+ | Return: BX = button status | ||
+ | bit 0 left button pressed if 1 | ||
+ | bit 1 right button pressed if 1 | ||
+ | bit 2 middle button pressed if 1 (Mouse Systems/ | ||
+ | CX = column | ||
+ | DX = row | ||
+ | SeeAlso: AX=0004h, | ||
+ | ----------330004----------------------------- | ||
+ | INT 33 - MS MOUSE - POSITION MOUSE CURSOR | ||
+ | AX = 0004h | ||
+ | CX = column | ||
+ | DX = row | ||
+ | Note: the row and column are truncated to the next lower multiple of the cell | ||
+ | size; however, some versions of the Microsoft documentation | ||
+ | incorrectly state that the coordinates are rounded | ||
+ | SeeAlso: AX=0003h, | ||
+ | ----------330005----------------------------- | ||
+ | INT 33 - MS MOUSE - RETURN BUTTON PRESS DATA | ||
+ | AX = 0005h | ||
+ | BX = button | ||
+ | 0000h left | ||
+ | 0001h right | ||
+ | 0002h middle (Mouse Systems/ | ||
+ | Return: AX = button states | ||
+ | bit 0 left button pressed if 1 | ||
+ | bit 1 right button pressed if 1 | ||
+ | bit 2 middle button pressed if 1 (Mouse Systems/ | ||
+ | BX = number of times specified button has been pressed since last call | ||
+ | CX = column at time specified button was last pressed | ||
+ | DX = row at time specified button was last pressed | ||
+ | SeeAlso: AX=0006h, | ||
+ | ----------330006----------------------------- | ||
+ | INT 33 - MS MOUSE - RETURN BUTTON RELEASE DATA | ||
+ | AX = 0006h | ||
+ | BX = button | ||
+ | 0000h left | ||
+ | 0001h right | ||
+ | 0002h middle (Mouse Systems/ | ||
+ | Return: AX = button states | ||
+ | bit 0 left button pressed if 1 | ||
+ | bit 1 right button pressed if 1 | ||
+ | bit 2 middle button pressed if 1 (Mouse Systems/ | ||
+ | BX = number of times specified button has been released since last call | ||
+ | CX = column at time specified button was last released | ||
+ | DX = row at time specified button was last released | ||
+ | SeeAlso: AX=0005h, | ||
+ | ----------330007----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE HORIZONTAL CURSOR RANGE | ||
+ | AX = 0007h | ||
+ | CX = minimum column | ||
+ | DX = maximum column | ||
+ | SeeAlso: AX=0008h, | ||
+ | ----------330008----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE VERTICAL CURSOR RANGE | ||
+ | AX = 0008h | ||
+ | CX = minimum row | ||
+ | DX = maximum row | ||
+ | SeeAlso: AX=0007h, | ||
+ | ----------330009----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE GRAPHICS CURSOR | ||
+ | AX = 0009h | ||
+ | BX = column of cursor hot spot in bitmap (-16 to 16) | ||
+ | CX = row of cursor hot spot (-16 to 16) | ||
+ | ES:DX -> bitmap | ||
+ | 16 words screen mask | ||
+ | 16 words cursor mask | ||
+ | each word defines the sixteen pixels of a row, low bit | ||
+ | rightmost | ||
+ | SeeAlso: AX=000Ah, | ||
+ | ----------33000A----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE TEXT CURSOR | ||
+ | AX = 000Ah | ||
+ | BX = hardware/ | ||
+ | 0000h software | ||
+ | CX = screen mask | ||
+ | DX = cursor mask | ||
+ | 0001h hardware | ||
+ | CX = start scan line | ||
+ | DX = end scan line | ||
+ | Note: when the software cursor is selected, the char/ | ||
+ | current screen position is ANDed with the screen mask and then XORed | ||
+ | with the cursor mask | ||
+ | SeeAlso: AX=0009h, | ||
+ | ----------33000B----------------------------- | ||
+ | INT 33 - MS MOUSE - READ MOTION COUNTERS | ||
+ | AX = 000Bh | ||
+ | Return: CX = number of mickeys mouse moved horizontally since last call | ||
+ | DX = number of mickeys mouse moved vertically | ||
+ | Notes: a mickey is the smallest increment the mouse can sense | ||
+ | positive values indicate down/right | ||
+ | SeeAlso: AX=0003h, | ||
+ | ----------33000C----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE INTERRUPT SUBROUTINE PARAMETERS | ||
+ | AX = 000Ch | ||
+ | CX = call mask | ||
+ | bit 0 call if mouse moves | ||
+ | bit 1 call if left button pressed | ||
+ | bit 2 call if left button released | ||
+ | bit 3 call if right button pressed | ||
+ | bit 4 call if right button released | ||
+ | bit 5 call if middle button pressed (Mouse Systems/ | ||
+ | bit 6 call if middle button released (Mouse Sys/ | ||
+ | ES:DX -> FAR routine | ||
+ | Notes: when the subroutine is called, it is passed the following values: | ||
+ | AX = condition mask (same bit assignments as call mask) | ||
+ | BX = button state | ||
+ | CX = cursor column | ||
+ | DX = cursor row | ||
+ | SI = horizontal mickey count | ||
+ | DI = vertical mickey count | ||
+ | some versions of the Microsoft documentation incorrectly state that CX | ||
+ | bit 0 means call if mouse cursor moves, and swap the meanings of SI | ||
+ | and DI | ||
+ | SeeAlso: AX=0018h | ||
+ | ----------33000D----------------------------- | ||
+ | INT 33 - MS MOUSE - LIGHT PEN EMULATION ON | ||
+ | AX = 000Dh | ||
+ | SeeAlso: AX=000Eh | ||
+ | ----------33000E----------------------------- | ||
+ | INT 33 - MS MOUSE - LIGHT PEN EMULATION OFF | ||
+ | AX = 000Eh | ||
+ | SeeAlso: AX=000Dh | ||
+ | ----------33000F----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE MICKEY/ | ||
+ | AX = 000Fh | ||
+ | CX = number of mickeys per 8 pixels horizontally (default 8) | ||
+ | DX = number of mickeys per 8 pixels vertically (default 16) | ||
+ | SeeAlso: AX=0013h, | ||
+ | ----------330010----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE SCREEN REGION FOR UPDATING | ||
+ | AX = 0010h | ||
+ | CX,DX = X,Y coordinates of upper left corner | ||
+ | SI,DI = X,Y coordinates of lower right corner | ||
+ | Note: mouse cursor is hidden in the specified region, and needs to be | ||
+ | explicitly turned on again | ||
+ | SeeAlso: AX=0001h, | ||
+ | ----------330010----------------------------- | ||
+ | INT 33 - Genius MOUSE - DEFINE SCREEN REGION FOR UPDATING | ||
+ | AX = 0010h | ||
+ | ES:DX -> update region list (see below) | ||
+ | Notes: | ||
+ | explicitly turned on again | ||
+ | this version of the call is described in an August 1988 version of the | ||
+ | Genius Mouse programmer' | ||
+ | to conform to the Microsoft version shown above | ||
+ | SeeAlso: AX=0001h, | ||
+ | |||
+ | Format of update region list: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------330012----------------------------- | ||
+ | INT 33 - MS MOUSE - SET LARGE GRAPHICS CURSOR BLOCK | ||
+ | AX = 0012h | ||
+ | BH = cursor width in words | ||
+ | CH = rows in cursor | ||
+ | BL = horizontal hot spot (-16 to 16) | ||
+ | CL = vertical hot spot (-16 to 16) | ||
+ | ES:DX -> bit map of screen and cursor maps | ||
+ | Return: AX = FFFFh if successful | ||
+ | SeeAlso: AX=0009h | ||
+ | ----------330013----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE DOUBLE-SPEED THRESHOLD | ||
+ | AX = 0013h | ||
+ | DX = threshold speed in mickeys/ | ||
+ | Note: if speed exceeds threshold, the cursor' | ||
+ | SeeAlso: AX=000Fh, | ||
+ | ----------330014----------------------------- | ||
+ | INT 33 - MS MOUSE - EXCHANGE INTERRUPT SUBROUTINES | ||
+ | AX = 0014h | ||
+ | CX = call mask (see AX=000Ch) | ||
+ | ES:DX -> FAR routine | ||
+ | Return: CX = call mask of previous interrupt routine | ||
+ | ES:DX = FAR address of previous interrupt routine | ||
+ | SeeAlso: AX=0018h | ||
+ | ----------330015----------------------------- | ||
+ | INT 33 - MS MOUSE - RETURN DRIVER STORAGE REQUIREMENTS | ||
+ | AX = 0015h | ||
+ | Return: BX = size of buffer needed to store driver state | ||
+ | SeeAlso: AX=0016h, | ||
+ | ----------330016----------------------------- | ||
+ | INT 33 - MS MOUSE - SAVE DRIVER STATE | ||
+ | AX = 0016h | ||
+ | BX = size of buffer (see AX=0015h) | ||
+ | ES:DX -> buffer for driver state | ||
+ | Note: | ||
+ | SeeAlso: AX=0015h, | ||
+ | ----------330017----------------------------- | ||
+ | INT 33 - MS MOUSE - RESTORE DRIVER STATE | ||
+ | AX = 0017h | ||
+ | BX = size of buffer (see AX=0015h) | ||
+ | ES:DX -> buffer containing saved state | ||
+ | Notes: | ||
+ | some mouse drivers range-check the values in the saved state based on | ||
+ | the current video mode; thus, the video mode should be restored | ||
+ | before the mouse driver' | ||
+ | SeeAlso: AX=0015h, | ||
+ | ----------330018----------------------------- | ||
+ | INT 33 - MS MOUSE - SET ALTERNATE MOUSE USER HANDLER | ||
+ | AX = 0018h | ||
+ | CX = call mask | ||
+ | bit 0 call if alt key pressed during event | ||
+ | bit 1 call if ctrl key pressed during event | ||
+ | bit 2 call if shift button pressed during event | ||
+ | bit 3 call if right button released | ||
+ | bit 4 call if right button pressed | ||
+ | bit 5 call if left button released | ||
+ | bit 6 call if left button pressed | ||
+ | bit 7 call if mouse moves | ||
+ | ES:DX = address of FAR routine | ||
+ | Return: AX = 0018h if successful | ||
+ | = FFFFh on error | ||
+ | Notes: when the subroutine is called, it is passed the following values: | ||
+ | AX = condition mask (same bit assignments as call mask) | ||
+ | BX = button state | ||
+ | CX = cursor column | ||
+ | DX = cursor row | ||
+ | DI = horizontal mickey count | ||
+ | SI = vertical mickey count | ||
+ | up to three handlers can be defined by separate calls to this function | ||
+ | SeeAlso: AX=0014h, | ||
+ | ----------330019----------------------------- | ||
+ | INT 33 - MS MOUSE - RETURN USER ALTERNATE INTERRUPT VECTOR | ||
+ | AX = 0019h | ||
+ | CX = call mask | ||
+ | Return: BX:DX = user interrupt vector | ||
+ | CX = call mask (0 if not found) | ||
+ | Note: | ||
+ | whose call mask matches CX | ||
+ | SeeAlso: AX=0018h | ||
+ | ----------33001A----------------------------- | ||
+ | INT 33 - MS MOUSE - SET MOUSE SENSITIVITY | ||
+ | AX = 001Ah | ||
+ | BX = horizontal speed \ | ||
+ | CX = vertical speed / (see AX=000Fh) | ||
+ | DX = double speed threshold (see AX=0013h) | ||
+ | SeeAlso: AX=0013h, | ||
+ | ----------33001B----------------------------- | ||
+ | INT 33 - MS MOUSE - RETURN MOUSE SENSITIVITY | ||
+ | AX = 001Bh | ||
+ | Return: BX = horizontal speed | ||
+ | CX = vertical speed | ||
+ | DX = double speed threshold | ||
+ | SeeAlso: AX=000Bh, | ||
+ | ----------33001C----------------------------- | ||
+ | INT 33 - MS MOUSE - SET INTERRUPT RATE | ||
+ | AX = 001Ch | ||
+ | BX = rate | ||
+ | 00h no interrupts allowed | ||
+ | 01h 30 per second | ||
+ | 02h 50 per second | ||
+ | 03h 100 per second | ||
+ | 04h 200 per second | ||
+ | Notes: only available on InPort mouse | ||
+ | values greater than 4 may cause unpredictable driver behavior | ||
+ | ----------33001D----------------------------- | ||
+ | INT 33 - MS MOUSE - DEFINE DISPLAY PAGE NUMBER | ||
+ | AX = 001Dh | ||
+ | BX = display page number | ||
+ | Note: the cursor will be displayed on the specified page | ||
+ | SeeAlso: AX=001Eh | ||
+ | ----------33001E----------------------------- | ||
+ | INT 33 - MS MOUSE - RETURN DISPLAY PAGE NUMBER | ||
+ | AX = 001Eh | ||
+ | Return: BX = display page number | ||
+ | SeeAlso: AX=001Dh | ||
+ | ----------33001F----------------------------- | ||
+ | INT 33 - MS MOUSE - DISABLE MOUSE DRIVER | ||
+ | AX = 001Fh | ||
+ | Return: AX = 001Fh unsuccessful | ||
+ | FFFFh successful | ||
+ | ES:BX = vector for INT 33h before mouse driver was first installed | ||
+ | Note: | ||
+ | if you restore Int 33h to ES:BX, driver will be completely disabled | ||
+ | SeeAlso: AX=0020h | ||
+ | ----------330020----------------------------- | ||
+ | INT 33 - MS MOUSE - ENABLE MOUSE DRIVER | ||
+ | AX = 0020h | ||
+ | Return: AX = 0020h unsuccessful (or driver not installed) | ||
+ | FFFFh successful | ||
+ | Note: | ||
+ | which were removed by function 1Fh | ||
+ | SeeAlso: AX=001Fh | ||
+ | ----------330021----------------------------- | ||
+ | INT 33 - MS MOUSE - SOFTWARE RESET | ||
+ | AX = 0021h | ||
+ | Return: AX = FFFFh if mouse driver installed | ||
+ | 0021h if mouse driver not installed | ||
+ | BX = 2 if mouse driver is installed | ||
+ | Note: | ||
+ | SeeAlso: AX=0000h | ||
+ | ----------330022----------------------------- | ||
+ | INT 33 - MS MOUSE - SET LANGUAGE FOR MESSAGES | ||
+ | AX = 0022h | ||
+ | BX = language | ||
+ | 00h English | ||
+ | 01h French | ||
+ | 02h Dutch | ||
+ | 03h German | ||
+ | 04h Swedish | ||
+ | 05h Finnish | ||
+ | 06h Spanish | ||
+ | 07h Portugese | ||
+ | 08h Italian | ||
+ | Note: only available on international versions of the driver, US versions | ||
+ | ignore this call | ||
+ | SeeAlso: AX=0023h | ||
+ | ----------330023----------------------------- | ||
+ | INT 33 - MS MOUSE - GET LANGUAGE FOR MESSAGES | ||
+ | AX = 0023h | ||
+ | Return: BX = language (see AX=0022h) | ||
+ | Note: the US version of the driver always returns zero | ||
+ | SeeAlso: AX=0022h | ||
+ | ----------330024----------------------------- | ||
+ | INT 33 - MS MOUSE v7.00+ - GET SOFTWARE VERSION AND MOUSE TYPE | ||
+ | AX = 0024h | ||
+ | Return: AX = FFFFh on error | ||
+ | otherwise, | ||
+ | BH = major version | ||
+ | BL = minor version | ||
+ | CH = type (1=bus, 2=serial, 3=InPort, 4=PS/2, 5=HP) | ||
+ | CL = interrupt (0=PS/2, 2=IRQ2, 3=IRQ3, | ||
+ | SeeAlso: AX=004Dh | ||
+ | ----------330025----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET ??? | ||
+ | AX = 0025h | ||
+ | Return: AL = ??? | ||
+ | BX = ??? | ||
+ | CX = ??? | ||
+ | DX = ??? | ||
+ | ----------330026----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET ??? | ||
+ | AX = 0026h | ||
+ | Return: BX = ??? | ||
+ | CX = ??? | ||
+ | DX = ??? | ||
+ | Note: | ||
+ | ----------330027----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET ??? | ||
+ | AX = 0027h | ||
+ | Return: AX = ??? | ||
+ | BX = ??? | ||
+ | CX = horizontal mickeys moved since last call | ||
+ | DX = vertical mickeys moved since last call | ||
+ | ----------330028----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - ??? | ||
+ | AX = 0028h | ||
+ | CX = ??? | ||
+ | 0000h reset to default??? | ||
+ | other | ||
+ | DX = ??? | ||
+ | Return: CL = 00h | ||
+ | ----------330029----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET SUPPORTED VIDEO MODES??? | ||
+ | AX = 0029h | ||
+ | CX = last video mode??? | ||
+ | 0000h get first | ||
+ | other get next supported mode after mode CX | ||
+ | Return: CX = first/next video mode | ||
+ | ES:DX = 0000h:0000h | ||
+ | ----------33002A----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET ??? | ||
+ | AX = 002Ah | ||
+ | Return: AX = ??? | ||
+ | BX = ??? | ||
+ | CX = ??? | ||
+ | DX = ??? | ||
+ | ----------33002B----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILES | ||
+ | AX = 002Bh | ||
+ | BX = active acceleration profile (0001h-0004h or FFFFh for current) | ||
+ | ES:SI -> buffer containing acceleration profile data (see below) | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=002Ch" | ||
+ | |||
+ | Format of acceleration profile data: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 04h 32 BYTEs threshold speeds for acceleration profile 1 | ||
+ | 24h 32 BYTEs threshold speeds for acceleration profile 2 | ||
+ | 44h 32 BYTEs threshold speeds for acceleration profile 3 | ||
+ | 64h 32 BYTEs threshold speeds for acceleration profile 4 | ||
+ | 84h 32 BYTEs speedup factor for acceleration profile 1 | ||
+ | (10h = 1.0, 14h = 1.25, 20h = 2.0, etc) | ||
+ | A4h 32 BYTEs speedup factor for acceleration profile 2 | ||
+ | (10h = 1.0, 14h = 1.25, 20h = 2.0, etc) | ||
+ | C4h 32 BYTEs speedup factor for acceleration profile 3 | ||
+ | (10h = 1.0, 14h = 1.25, 20h = 2.0, etc) | ||
+ | E4h 32 BYTEs speedup factor for acceleration profile 4 | ||
+ | (10h = 1.0, 14h = 1.25, 20h = 2.0, etc) | ||
+ | 104h 16 BYTEs name of acceleration profile 1 (blank-padded) | ||
+ | 114h 16 BYTEs name of acceleration profile 2 (blank-padded) | ||
+ | 124h 16 BYTEs name of acceleration profile 3 (blank-padded) | ||
+ | 134h 16 BYTEs name of acceleration profile 4 (blank-padded) | ||
+ | Note: | ||
+ | unused bytes in the speedup factor fields are filled with 10h | ||
+ | ----------33002C----------------------------- | ||
+ | INT 33 - MS MOUSE v??? - SET ACCELERATION PROFILES | ||
+ | AX = 002Ch | ||
+ | ES:DX -> name of file containing profiles | ||
+ | Note: see MOUSEPRO.FIL for an example set of acceleration profiles | ||
+ | SeeAlso: AX=0013h, | ||
+ | ----------33002C----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET ACCELERATION PROFILES | ||
+ | AX = 002Ch | ||
+ | Return: AX = 0000h | ||
+ | BX = currently-active acceleration profile | ||
+ | ES:SI -> acceleration profile data (see AX=002Bh) | ||
+ | SeeAlso: AX=002Bh, | ||
+ | ----------33002D----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - SELECT ACCELERATION PROFILE | ||
+ | AX = 002Dh | ||
+ | BX = acceleration level (0001h to 0004h or FFFFh for current) | ||
+ | Return: AX = status | ||
+ | 0000h successful | ||
+ | ES:SI -> 16-byte blank-padded name of acceleration profile | ||
+ | FFFEh invalid acceleration level | ||
+ | ES:SI destroyed | ||
+ | BX = active acceleration level | ||
+ | SeeAlso: AX=0013h, | ||
+ | ----------33002E----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - SET ACCELERATION PROFILE NAMES | ||
+ | AX = 002Eh | ||
+ | BL = flag (if nonzero, fill ES:SI buffer with default names on return) | ||
+ | ES:SI -> 64-byte buffer for profile names (16 bytes per name) | ||
+ | Return: AX = 0000h | ||
+ | ES:SI buffer filled with default names if BL nonzero on entry | ||
+ | Note: not supported by Logitech driver v6.10 | ||
+ | SeeAlso: AX=002Ch, | ||
+ | ----------33002F----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - ??? | ||
+ | AX = 002Fh | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | Note: | ||
+ | SeeAlso: INT 2F/AH=53h | ||
+ | ----------330030----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - ??? | ||
+ | AX = 0030h | ||
+ | CX = ??? | ||
+ | 0000h ??? | ||
+ | other ??? | ||
+ | Return: ??? | ||
+ | ----------330031----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET ??? | ||
+ | AX = 0031h | ||
+ | Return: AX = ??? | ||
+ | BX = ??? | ||
+ | CX = ??? | ||
+ | DX = ??? | ||
+ | ----------330032----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET ??? | ||
+ | AX = 0032h | ||
+ | Return: AX = ??? (FFFFh) | ||
+ | BX = ??? (0000h) | ||
+ | CX = ??? (E000h) | ||
+ | DX = ??? (0000h) | ||
+ | ----------330033----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET ACCELERATION PROFILE DATA | ||
+ | AX = 0033h | ||
+ | CX = size of buffer | ||
+ | 0000h get required buffer size | ||
+ | Return: AX = 0000h | ||
+ | CX = required size (0154h for Logitech v6.10, 0159h | ||
+ | for MS v8.10-8.20) | ||
+ | other | ||
+ | ES:DX -> buffer of CX bytes | ||
+ | Return: AX = 0000h | ||
+ | ES:DX buffer filled (see below) | ||
+ | SeeAlso: AX=002Bh | ||
+ | |||
+ | Format of data buffer: | ||
+ | Offset Size Description | ||
+ | 00h 16 BYTEs ??? | ||
+ | 10h 324 BYTEs acceleration profile data (see AX=002Bh) | ||
+ | 154h 5 BYTEs ??? (Microsoft driver, but not Logitech) | ||
+ | ----------330034----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - GET INITIALIZATION FILE | ||
+ | AX = 0034h | ||
+ | Return: ES:DX -> ASCIZ initialization (.INI) file name | ||
+ | ----------330035----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - LCD SCREEN LARGE POINTER SUPPORT | ||
+ | AX = 0035h | ||
+ | BX = function | ||
+ | FFFFh get current settings | ||
+ | Return: AX = 0000h | ||
+ | BH = style (see below) | ||
+ | BL = size (see below) | ||
+ | CH = threshold | ||
+ | CL = active flag (00h disabled, 01h enabled) | ||
+ | DX = delay | ||
+ | other | ||
+ | BH = style (00h normal, 01h reverse, 02h transparent) | ||
+ | BL = size (00h small " | ||
+ | CH = threshold (00h-64h) | ||
+ | CL = active flag (00h disable size change, 01h enable) | ||
+ | DX = delay (0000h-0064h) | ||
+ | Return: AX = 0000h | ||
+ | Note: not supported by Logitech driver v6.10 | ||
+ | ----------330042----------------------------- | ||
+ | INT 33 - PCMOUSE - GET MSMOUSE STORAGE REQUIREMENTS | ||
+ | AX = 0042h | ||
+ | Return: AX = FFFFh successful | ||
+ | BX = buffer size in bytes for functions 50h and 52h | ||
+ | = 0000h MSMOUSE not installed | ||
+ | = 0042h functions 42h, 50h, and 52h not supported | ||
+ | SeeAlso: AX=0015h, | ||
+ | ----------330043----------------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - CONFIGURE MOUSE??? | ||
+ | AX = 0043h | ||
+ | CX:BX -> ??? buffer (see below) | ||
+ | DL = ??? | ||
+ | Return: ??? | ||
+ | Note: also calls routines for INT 33/AX=0053h and INT 33/AX=004Fh | ||
+ | |||
+ | Format of buffer: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------330044CXCDEF----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ??? | ||
+ | AX = 0044h | ||
+ | CX = CDEFh | ||
+ | Return: AX = new state of ??? | ||
+ | SeeAlso: AX=0045h | ||
+ | ----------330045CXCDEF----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - TOGGLE ??? | ||
+ | AX = 0045h | ||
+ | CX = CDEFh | ||
+ | Return: AX = new state of ??? | ||
+ | SeeAlso: AX=0044h | ||
+ | ----------330047----------------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET BUTTON ASSIGNMENTS??? | ||
+ | AX = 0047h | ||
+ | ES:BX -> button assignments (3 bytes, combinations of " | ||
+ | Return: ??? | ||
+ | SeeAlso: AX=0067h | ||
+ | ----------330048BXCDEF----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET ??? | ||
+ | AX = 0048h | ||
+ | BX = CDEFh | ||
+ | Return: CX = ??? | ||
+ | BH = ??? | ||
+ | BL = ??? (if 50h, driver is using PS/2 pointing device BIOS interface) | ||
+ | --------------------------------------------- | ||
+ | INT 33 - Z-NIX MOUSE DRIVER v7.04d - INSTALLATION CHECK | ||
+ | AX = 004Bh | ||
+ | Return: ES:DI -> signature/ | ||
+ | Note: the signature string in v7.04d is | ||
+ | " | ||
+ | ----------33004CBXCDEF----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - SET ??? FLAG | ||
+ | AX = 004Ch | ||
+ | BX = CDEFh | ||
+ | SeeAlso: AX=006Ch | ||
+ | ----------33004D----------------------------- | ||
+ | INT 33 - MS MOUSE, LOGITECH - RETURN POINTER TO COPYRIGHT STRING | ||
+ | AX = 004Dh | ||
+ | Return: ES:DI -> copyright message " | ||
+ | Note: also supported by Kraft mouse driver | ||
+ | SeeAlso: AX=0024h, | ||
+ | ----------33004F----------------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ENABLE MOUSE | ||
+ | AX = 004Fh | ||
+ | Return: nothing | ||
+ | SeeAlso: AX=0043h, | ||
+ | ----------330050----------------------------- | ||
+ | INT 33 - PCMOUSE - SAVE MSMOUSE STATE | ||
+ | AX = 0050h | ||
+ | BX = buffer size (ignored by some driver versions) | ||
+ | ES:DX -> buffer | ||
+ | Return: AX = FFFFh if successful | ||
+ | Note: the buffer must be large enough to hold the entire state, or following | ||
+ | data will be overwritten by state data in versions which ignore BX; | ||
+ | use INT 33/AX=0042h to get the required size | ||
+ | SeeAlso: AX=0042h, | ||
+ | ----------330052----------------------------- | ||
+ | INT 33 - PCMOUSE - RESTORE MSMOUSE STATE | ||
+ | AX = 0052h | ||
+ | BX = buffer size (ignored by some driver versions) | ||
+ | ES:DX -> buffer | ||
+ | Return: AX = FFFFh if successful | ||
+ | SeeAlso: AX=0050h | ||
+ | ----------330053----------------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - DISABLE MOUSE | ||
+ | AX = 0053h | ||
+ | Return: nothing | ||
+ | SeeAlso: AX=0043h, | ||
+ | ----------330054CXCDEF----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ??? | ||
+ | AX = 0054h | ||
+ | CX = CDEFh | ||
+ | BX = ??? (NOP if <= 0000h) | ||
+ | Return: ??? | ||
+ | ----------330055----------------------------- | ||
+ | INT 33 - Kraft Mouse - GET ??? | ||
+ | AX = 0055h | ||
+ | Return: CX = ??? | ||
+ | DX = ??? | ||
+ | ES = ??? | ||
+ | ----------330058----------------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ??? | ||
+ | AX = 0058h | ||
+ | Return: AX = CS of driver | ||
+ | CX:BX -> ??? | ||
+ | DX = ??? | ||
+ | ----------33005A----------------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ??? | ||
+ | AX = 005Ah | ||
+ | CX = number of WORDs to copy (max 0014h, but not range-checked) | ||
+ | DX:SI -> buffer containing ??? (CX words) | ||
+ | DX:BX -> buffer containing ??? (9*14h words, only first CX of each 14h | ||
+ | used) | ||
+ | ??? | ||
+ | Return: CF clear | ||
+ | ??? | ||
+ | ----------330061BXCDEF----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ??? | ||
+ | AX = 0061h | ||
+ | BX = CDEFh | ||
+ | Return: CX = ??? | ||
+ | ----------330067----------------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET MOUSE BUTTONS??? | ||
+ | AX = 0067h | ||
+ | Return: BL = number of buttons??? | ||
+ | SeeAlso: AX=0047h | ||
+ | ----------33006CBXCDEF----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ??? | ||
+ | AX = 006Ch | ||
+ | BX = CDEFh | ||
+ | SeeAlso: AX=004Ch | ||
+ | ----------33006D----------------------------- | ||
+ | INT 33 - MS MOUSE, Logitech - GET VERSION STRING | ||
+ | AX = 006Dh | ||
+ | Return: ES:DI -> Microsoft version number of resident driver | ||
+ | Note: also supported by Mouse Systems and Kraft mouse drivers | ||
+ | SeeAlso: AX=004Dh, | ||
+ | ----------330070BXABCD----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER - POPUP.COM - INSTALLATION CHECK | ||
+ | AX = 0070h | ||
+ | BX = ABCDh | ||
+ | Return: AX = ABCDh if installed | ||
+ | BX:CX -> data structure (see below) | ||
+ | Notes: the v7.01 POPUP.COM and menu drivers also check for the signature | ||
+ | CDh ABh BAh DCh at offset -2Ch from the interrupt handler | ||
+ | if POPUP is not loaded, the returned data structure contains the proper | ||
+ | signature at offset 00h, but not at offset 08h | ||
+ | |||
+ | Format of data structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of info structure: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | ??? | ||
+ | ----------330072BXABCD----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - ??? | ||
+ | AX = 0072h | ||
+ | BX = ABCDh | ||
+ | Return: ??? | ||
+ | ----------330073BXCDEF----------------------- | ||
+ | INT 33 - Mouse Systems MOUSE DRIVER v7.01 - GET BUTTON ASSIGNMENTS??? | ||
+ | AX = 0073h | ||
+ | BX = CDEFh | ||
+ | ES:DX -> buffer for button assignments??? | ||
+ | Return: CX = number of buttons??? | ||
+ | Note: the default return buffer is " | ||
+ | SeeAlso: AX=0067h | ||
+ | ----------33012E----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - ??? | ||
+ | AX = 012Eh | ||
+ | BL = ??? | ||
+ | Return: AX = 0000h | ||
+ | Note: not supported by Logitech driver v6.10 | ||
+ | SeeAlso: AX=002Eh, | ||
+ | ----------33022E----------------------------- | ||
+ | INT 33 - MS MOUSE v8.10+ - ??? | ||
+ | AX = 022Eh | ||
+ | BL = ??? | ||
+ | Return: AX = 0000h | ||
+ | Note: not supported by Logitech driver v6.10 | ||
+ | SeeAlso: AX=002Eh, | ||
+ | ----------33136C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - ??? | ||
+ | AX = 136Ch | ||
+ | BX = ??? | ||
+ | Return: AX = ??? | ||
+ | BX = ??? | ||
+ | ----------33146C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - GET/SET ??? | ||
+ | AX = 146Ch | ||
+ | BL = function | ||
+ | 00h set ??? | ||
+ | BH = new value (zero/ | ||
+ | else get ??? | ||
+ | Return: ??? | ||
+ | ----------33156C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - GET SIGNATURE AND VERSION STRINGS | ||
+ | AX = 156Ch | ||
+ | Return: ES:DI -> signature " | ||
+ | ES:SI -> version string, terminated with CRLF | ||
+ | ----------33166C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - ??? | ||
+ | AX = 166Ch | ||
+ | BL = ??? | ||
+ | 00h ??? | ||
+ | 01h ??? | ||
+ | other ??? | ||
+ | BH = new value of ??? | ||
+ | Return: AX = FFFFh | ||
+ | ----------33176C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - ??? | ||
+ | AX = 176Ch | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------33186C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - ??? | ||
+ | AX = 186Ch | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------33196C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - ??? | ||
+ | AX = 196Ch | ||
+ | ??? | ||
+ | Return: ??? | ||
+ | ----------331A6C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - GET ??? | ||
+ | AX = 1A6Ch | ||
+ | Return: AX = FFFFh | ||
+ | BX = ??? | ||
+ | CX = ??? | ||
+ | SeeAlso: AX=1B6Ch | ||
+ | ----------331B6C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - SET ??? | ||
+ | AX = 1B6Ch | ||
+ | BX = new value for ??? (0000h-0003h) | ||
+ | Return: AX = FFFFh | ||
+ | SeeAlso: AX=1A6Ch | ||
+ | ----------331C6C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - ??? | ||
+ | AX = 1C6Ch | ||
+ | BX = ??? | ||
+ | <42h ??? | ||
+ | =42h ??? | ||
+ | >42h ??? | ||
+ | ES:DI -> ??? | ||
+ | Return: AX = ??? | ||
+ | ----------331D6C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - GET COMPASS PARAMETER | ||
+ | AX = 1D6Ch | ||
+ | Return: BX = direction (0=north, 1=south, 2=east, 3=west) | ||
+ | SeeAlso: AX=1E6Ch | ||
+ | ----------331E6C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - SET COMPASS PARAMETER | ||
+ | AX = 1E6Ch | ||
+ | BX = direction (0=north, 1=south, 2=east, 3=west) | ||
+ | SeeAlso: AX=1D6Ch | ||
+ | ----------331F6C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - GET BALLISTICS INFORMATION | ||
+ | AX = 1F6Ch | ||
+ | Return: BX = 0=off, 1=on | ||
+ | CX = 1=low, 2=high | ||
+ | SeeAlso: AX=002Ch, | ||
+ | ----------33206C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - SET LEFT OR RIGHT PARAMETER | ||
+ | AX = 206Ch | ||
+ | BX = parameter (00h = right, FFh = left) | ||
+ | SeeAlso: AX=216Ch | ||
+ | ----------33216C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - GET LEFT OR RIGHT PARAMETER | ||
+ | AX = 216Ch | ||
+ | Return: BX = parameter (00h = right, FFh = left) | ||
+ | SeeAlso: AX=206Ch | ||
+ | ----------33226C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - REMOVE DRIVER FROM MEMORY | ||
+ | AX = 226Ch | ||
+ | Note: this only frees memory; does not restore hooked interrupts | ||
+ | ----------33236C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - SET BALLISTICS INFORMATION | ||
+ | AX = 236Ch | ||
+ | BX = 0=off, 1=on | ||
+ | CX = 1=low, 2=high | ||
+ | SeeAlso: AX=002Ch, | ||
+ | ----------33246C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - GET PARAMETERS AND RESET SERIAL MOUSE | ||
+ | AX = 246Ch | ||
+ | ES:DX -> parameter table buffer (see below) | ||
+ | Return: AX = FFFFh if driver installed for serial mouse | ||
+ | SeeAlso: AX=0000h, | ||
+ | |||
+ | Format of parameter table: | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------33256CBX00h ----------------------- | ||
+ | INT 33 - LOGITECH MOUSE - SET PARAMETERS | ||
+ | AX = 256Ch | ||
+ | BX = 00h set baud rate (serial mouse only) | ||
+ | CX = rate (0=1200, 1=2400, 2=4800, 3=9600) | ||
+ | = 01h set emulation (serial mouse only) | ||
+ | CX = emulation | ||
+ | 0 = 5 byte packed binary | ||
+ | 1 = 3 byte packed binary | ||
+ | 2 = hexadecimal | ||
+ | 3 = relative bit pad | ||
+ | 4 = not supported | ||
+ | 5 = MM Series | ||
+ | 6 = not supported | ||
+ | 7 = Microsoft | ||
+ | = 02h set report rate (serial mouse only) | ||
+ | CX = rate (0=10, 1=20, 2=35, 3=50, 4=70, 5=100, 6=150) | ||
+ | = 03h set port (serial mouse only) | ||
+ | CX = port (1, 2) | ||
+ | = 04h set mouse logical buttons | ||
+ | CX = buttons (2, 3) | ||
+ | Return: AX = FFFFh if driver installed for serial mouse | ||
+ | SeeAlso: AX=246Ch, | ||
+ | ----------33266C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - GET VERSION??? | ||
+ | AX = 266Ch | ||
+ | Return: BX = ' | ||
+ | CH = ' | ||
+ | CL = ' | ||
+ | SeeAlso: AX=006Dh | ||
+ | ----------33276C----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE - ??? Tries MMSeries, Baud 2400 | ||
+ | AX = 276Ch | ||
+ | SeeAlso: AX=256Ch | ||
+ | ----------333000----------------------------- | ||
+ | INT 33 - Smooth Mouse Driver, PrecisePoint - INSTALLATION CHECK | ||
+ | AX = 3000h | ||
+ | Return: AX = FFFFh if installed | ||
+ | BX = version number (BH = major, BL = minor) | ||
+ | Program: SMD is a programmer' | ||
+ | graphics-style mouse cursor in text mode. PrecisePoint is an | ||
+ | SMD-based TSR which replaces the block mouse cursor in text | ||
+ | applications. | ||
+ | SeeAlso: AX=0000h, | ||
+ | ----------333001----------------------------- | ||
+ | INT 33 - Smooth Mouse Driver, PrecisePoint - ENABLE SMOOTH MOUSE | ||
+ | AX = 3001h | ||
+ | Return: AX = status (0000h = disabled, 0001h = enabled) | ||
+ | Note: SMD remains disabled if running under Desqview or in graphics mode | ||
+ | SeeAlso: AX=0001h, | ||
+ | ----------333001----------------------------- | ||
+ | INT 33 - Smooth Mouse Driver, PrecisePoint - DISABLE SMOOTH MOUSE | ||
+ | AX = 3002h | ||
+ | Return: AX = status (0000h = disabled, 0001h = enabled) | ||
+ | SeeAlso: AX=0001h, | ||
+ | ----------333003----------------------------- | ||
+ | INT 33 - Smooth Mouse Driver, PrecisePoint - GET INFORMATION | ||
+ | AX = 3003h | ||
+ | BL = data structure selector | ||
+ | 00h Primary Bitmap (used for 25 line mode) | ||
+ | 01h Secondary Bitmap (used for 43/50 line modes) | ||
+ | 02h Sacrifice Character Map | ||
+ | 03h Program Information | ||
+ | Return: ES:DI -> selected data structure | ||
+ | SeeAlso: AX=3000h | ||
+ | |||
+ | Format of Primary/ | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | 04h 16 WORDs cursor bitmap data | ||
+ | 14h 16 WORDs screen bitmap data | ||
+ | |||
+ | Format of Sacrifice Character Map [SMD_SMAP_STRUCT] | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | |||
+ | Format of Program Information [SMD_INFO_STRUCT] | ||
+ | Offset Size Description | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------333004----------------------------- | ||
+ | INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION | ||
+ | AX = 3004 | ||
+ | SeeAlso: AX=3000h | ||
+ | ----------333005----------------------------- | ||
+ | INT 33 - Smooth Mouse Driver, PrecisePoint - RESERVED FUTURE EXPANSION | ||
+ | AX = 3005 | ||
+ | SeeAlso: AX=3000h | ||
+ | ----------334F00----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - GET ??? | ||
+ | AX = 4F00h | ||
+ | Return: AX = 004Fh if supported | ||
+ | BX = ??? | ||
+ | ES:DI -> ??? | ||
+ | SeeAlso: AX=4F01h | ||
+ | ----------334F01----------------------------- | ||
+ | INT 33 - LOGITECH MOUSE v6.10+ - ??? | ||
+ | AX = 4F01h | ||
+ | ES = ??? | ||
+ | Return: AX = 004Fh if supported | ||
+ | ES:DI -> ??? | ||
+ | SeeAlso: AX=4F00h | ||
+ | ----------34--------------------------------- | ||
+ | INT 34 - FLOATING POINT EMULATION - OPCODE D8h | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | SeeAlso: INT 35,INT 3E | ||
+ | ----------35--------------------------------- | ||
+ | INT 35 - FLOATING POINT EMULATION - OPCODE D9h | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | SeeAlso: INT 34,INT 36 | ||
+ | ----------36--------------------------------- | ||
+ | INT 36 - FLOATING POINT EMULATION - OPCODE DAh | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | SeeAlso: INT 35,INT 37 | ||
+ | ----------37--------------------------------- | ||
+ | INT 37 - FLOATING POINT EMULATION - OPCODE DBh | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | SeeAlso: INT 36,INT 38 | ||
+ | ----------38--------------------------------- | ||
+ | INT 38 - FLOATING POINT EMULATION - OPCODE DCh | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | SeeAlso: INT 37,INT 39 | ||
+ | ----------39--------------------------------- | ||
+ | INT 39 - FLOATING POINT EMULATION - OPCODE DDh | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | SeeAlso: INT 38,INT 3A | ||
+ | ----------3A--------------------------------- | ||
+ | INT 3A - FLOATING POINT EMULATION - OPCODE DEh | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | SeeAlso: INT 39,INT 3B | ||
+ | ----------3B--------------------------------- | ||
+ | INT 3B - FLOATING POINT EMULATION - OPCODE DFh | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | SeeAlso: INT 3A,INT 3C | ||
+ | ----------3C--------------------------------- | ||
+ | INT 3C - FLOATING POINT EMULATION - INSTRUCTIONS WITH SEGMENT OVERRIDE | ||
+ | Notes: the floating-point emulators in Borland and Microsoft languages and | ||
+ | Lahey FORTRAN use this interrupt | ||
+ | the generated code is CD 3C xy mm .... | ||
+ | where xy is a modified ESC instruction and mm is the modR/M byte. | ||
+ | The xy byte appears to be encoded as | ||
+ | s s 0 1 1 x x x | ||
+ | where " | ||
+ | 00 -> DS: | ||
+ | 01 -> SS: | ||
+ | 10 -> CS: | ||
+ | 11 -> ES: | ||
+ | SeeAlso: INT 3B,INT 3D | ||
+ | ----------3D--------------------------------- | ||
+ | INT 3D - FLOATING POINT EMULATION - STANDALONE FWAIT | ||
+ | Note: the floating-point emulators in Borland and Microsoft languages use | ||
+ | this interrupt | ||
+ | SeeAlso: INT 3C,INT 3E | ||
+ | ----------3E--------------------------------- | ||
+ | INT 3E - FLOATING POINT EMULATION - Borland LANGUAGES " | ||
+ | Note: the two bytes following the INT 3E instruction are the subcode and | ||
+ | a NOP (90h), except for subcodes DCh and DEh, where the second byte | ||
+ | is a register count (01h-08h) | ||
+ | SeeAlso: INT 3D | ||
+ | |||
+ | Subcode Function | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | Note: buggy in TPas5.5, because it sets the 8087 precision control | ||
+ | field to the undocumented value 01h; this results in actually | ||
+ | rounding to single precision | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | | ||
+ | ----------3F--------------------------------- | ||
+ | INT 3F - Overlay manager interrupt (Microsoft LINK.EXE, Borland TLINK VROOMM) | ||
+ | Note: INT 3F is the default, and may be overridden while linking | ||
+ | SeeAlso: INT FE" | ||
+ | ----------3F--------------------------------- | ||
+ | INT 3F - Microsoft Dynamic Link Library manager | ||
+ | SeeAlso: INT 21/AH=4Bh | ||
+ | --------------------------------------------- | ||
+ | Interrupt List, part 6 of 7 | ||
+ | This compilation is Copyright (c) 1989, | ||
+ | ----------40--------------------------------- | ||
+ | INT 40 - DISKETTE - ROM BIOS DISKETTE HANDLER RELOCATED BY HARD DISK BIOS | ||
+ | SeeAlso: INT 13,INT 63 | ||
+ | ----------40--------------------------------- | ||
+ | INT 40 - Z100 - Master 8259 - Parity error or S100 error | ||
+ | SeeAlso: INT 41" | ||