Interrups | Categories | Contents |
AX = 4A15h BX = 0000h (function number) DX = starting I/O address EDX high word = ending I/O address CX = number of ports to trap DS:SI -> I/O dispatch table (see #02815) DI = size of client's code and data (size of DS segment which must be made available to I/O dispatch function in protected mode)
Return:
CF clear if successful CF set on error
Notes: This interface is only available in virtual-86 mode; the I/O handlers will be called in protected mode. Only ports 0100h-FFFFh may be trapped; EMM386 reserved ports 0000h- 00FFh
Format of EMM386 I/O dispatch table [array]: Offset Size Description (Table 02815) 00h WORD I/O port number 02h WORD offset of I/O handler for port (see #02816)
(Table 02816) Values EMM386 I/O dispatch function is called with:. CX = Ring0 code selector for I/O handler's segment. DS = Ring0 data selector for I/O handler's segment (alias of CS). EDX = faulting I/O address. ECX = direction (00000008h for byte output, 00000000h for byte input) (reportedly 00h for byte/word input, 04h for byte/word output under DOS 6.22 EMM386). EAX = data in/out
Return:
(via FAR RET) CF clear if I/O access successfully virtualized CF set if access not virtualized (default handler will be called to perform the I/O)
BUG: 32-bit I/O on trapped ports hangs the DOS 6.22 EMM386
See Also: #02815
Category: Uncatagorized - Int 2Fh - M
Interrups | Categories | Contents |