📄 interrup.n
字号:
Interrupt List, part 14 of 18
Copyright (c) 1989,1990,1991,1992,1993,1994,1995,1996,1997,1998,1999 Ralf Brown
--------D-31---------------------------------
INT 31 - overwritten by CP/M jump instruction in INT 30
--------v-31---------------------------------
INT 31 - VIRUS - "Vacsina" series - INSTALLATION CHECK (NOT A VECTOR!)
Note: if one of the Vacsina viruses is resident, the low byte of this
interrupt still contains the last byte of the INT 30 CP/M JMP
instruction, but the remaining three bytes are 7Fh 39h followed
by the Vacsina version number
SeeAlso: INT 21/AX=FFFFh"VIRUS",INT 32"VIRUS"
--------E-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+) (see #03143)
Notes: DPMI is the DOS Protected-Mode Interface
the base and limit of the returned descriptors will be 0, and the type
will be "data"
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,AX=000Dh,INT 21/AX=3501h
(Table 03143)
Values for DPMI 1.0 error code:
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
--------E-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 #03143)
Notes: only one descriptor is freed per call
the program's initial CS, DS, and SS descriptors may be freed
(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,AX=000Ah,AX=000Dh,INT 21/AX=3502h
--------E-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 #03143)
Notes: multiple calls for the same real mode segment return the same selector
the returned descriptor can never be modified or freed
not supported by MS Windows 3.0 in Standard mode
--------E-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
--------E-310004-----------------------------
INT 31 P - DPMI 0.9+ - LOCK SELECTOR
AX = 0004h
BX = selector to lock (prevent paging)
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0005h,AX=0600h
--------E-310005-----------------------------
INT 31 P - DPMI 0.9+ - UNLOCK SELECTOR
AX = 0005h
BX = selector to unlock (permit paging)
Return: ???
Note: although marked as reserved in versions 0.9 and 1.0 of the DPMI
specification, this function is called by MS Windows TASKMAN,
PROGMAN, and KERNEL
SeeAlso: AX=0004h,AX=0601h
--------E-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 #03143)
Note: not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=0007h,INT 21/AX=3504h
--------E-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,8025h) (see #03143)
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,AX=0008h,AX=0009h,AX=000Ch,INT 21/AX=3503h
SeeAlso: INT 21/AH=E9h"OS/286",INT 2C/AX=0002h
--------E-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,8022h,8025h) (see #03143)
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,AX=0009h,AX=000Ch,INT 21/AX=3505h,INT 21/AH=E9h"OS/286"
SeeAlso: INT 2C/AX=0003h,#00501 at INT 15/AH=89h
--------E-310009-----------------------------
INT 31 P - DPMI 0.9+ - SET DESCRIPTOR ACCESS RIGHTS
AX = 0009h
BX = selector
CL = access rights/type byte (see #00502 at INT 15/AH=89h)
CH = 80386 extended rights/type byte (see #00505 at INT 15/AH=89h)
(32-bit DPMI implementations only)
Return: CF clear if successful
CF set on error
AX = error code (DPMI 1.0+) (8021h,8022h,8025h) (see #03143)
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,AX=0008h,AX=000Ch,INT 21/AX=2514h,INT 2C/AX=0004h
SeeAlso: INT 2C/AX=0005h
--------E-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,8022h) (see #03143)
Notes: fails if selector in BX is not a code segment or is invalid
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
--------E-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 #03143)
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
not supported by MS Windows 3.0 in Standard mode
SeeAlso: AX=000Ch
--------E-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,8022h,8025h) (see #03143)
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
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
--------E-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,8022h) (see #03143)
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,AX=0001h
--------E-31000E-----------------------------
INT 31 P - DPMI 1.0+ - GET MULTIPLE DESCRIPTORS
AX = 000Eh
CX = number of descriptors to copy
ES:(E)DI -> descriptor buffer (see #03144)
Return: CF clear if successful
descriptors copied
CF set on error
AX = error code (8022h) (see #03143)
CX = number of descriptors successfully copied
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
if the function fails, the first CX descriptors are valid; the
remainder are not modified
SeeAlso: AX=000Bh,AX=000Fh
Format of DPMI descriptor buffer entry (one per descriptor to get):
Offset Size Description (Table 03144)
00h WORD selector (set by client)
02h QWORD descriptor (set by host)
--------E-31000F-----------------------------
INT 31 P - DPMI 1.0+ - SET MULTIPLE DESCRIPTORS
AX = 000Fh
CX = number of descriptors to copy
ES:(E)DI -> descriptor buffer (see #03145)
Return: CF clear if successful
descriptors copied
CF set on error
AX = error code (8021h,8022h,8025h) (see #03143)
CX = number of descriptors successfully copied
Notes: 16-bit programs use ES:DI as pointer, 32-bit must use ES:EDI
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,AX=000Eh
Format of DPMI descriptor buffer entry (one per descriptor to set):
Offset Size Description (Table 03145)
00h WORD selector
02h QWORD descriptor
--------E-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 #01680 at INT 21/AH=59h/BX=0000h)
(DPMI 1.0+) DPMI error code (8011h) (see #03143)
BX = size (in paragraphs) of largest available block
Notes: multiple contiguous selectors are allocated for blocks of more than 64K
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,AX=0501h
--------E-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 #01680 at INT 21/AH=59h/BX=0000h)
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,AX=0102h,AX=0502h
--------E-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,08h,09h)
(see #01680 at INT 21/AH=59h/BX=0000h)
(DPMI 1.0+) DPMI error code (8011h,8022h) (see #03143)
BX = maximum block size (in paragraphs) possible
Notes: increasing the size of a block past a 64K boundary will fail if the
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
--------E-310200-----------------------------
INT 31 P - DPMI 0.9+ - GET REAL MODE INTERRUPT VECTOR
AX = 0200h
BL = interrupt number
Return: CF clear
CX:DX = segment:offset of real mode interrupt handler
Note: the DPMI implementation is required to support all 256 vectors
SeeAlso: AX=0201h,AX=0204h,INT 21/AX=2503h
--------E-310201-----------------------------
INT 31 P - DPMI 0.9+ - SET REAL MODE INTERRUPT VECTOR
AX = 0201h
BL = interrupt number
CX:DX = segment:offset of real mode handler
Return: CF clear
Note: all memory that may be touched by a hardware interrupt handler must be
locked down with INT 31/AX=0600h
SeeAlso: AX=0200h,AX=0205h,AX=0600h,INT 21/AX=2505h
--------E-310202-----------------------------
INT 31 P - DPMI 0.9+ - GET PROCESSOR EXCEPTION HANDLER VECTOR
AX = 0202h
BL = exception number (00h-1Fh)
Return: CF clear if successful
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -