INT 2fH 1687H: Get Real-to-Protected Mode Switch Address
Compatibility: DPMI 0.9+
Expects: AX 1687H (INT 2fH MUX ID and subfn number)
──────────────────────────────────────────────────────────────────
Returns: AX 0000h = successful
else = no DPMI host present
BX flags: bit 0: 0=32-bit programs are not supported
1=32-bit programs are supported
bits 1-15: not used
CL processor type: 02H = 80286
03H = 80386
04H = 80486
05H = Pentium
>5 = reserved for future Intel CPUs
DX DPMI major + minor version number (e.g., 010aH=1.10)
SI number of 16-byte pares needed for DPMI host private
ES:DI entry address to call to enter Protected Mode
──────────────────────────────────────────────────────────────────
Info: DPMI clients are loaded in real mode and may use this call to
prepare for switching into protected mode.
SI on return, this is an amount of real-mode memory, in 16-byte
paragraphs, that you must supply when you process the switch (see
below). It might be 0000H, indicating no memory needed.
ES:DI on return, this is the Entry Address you must call (via a
FAR CALL) in order to switch to protected mode. The calling
parameters are:
Entry:
AX= 0000H = you'll be running as a 16-bit application
0001H = you'll be running as a 32-bit application
ES= the segment of the memory you're be supplying to DPMI host.
If SI was 0 after INT 2fH 1687H, then ES is ignored.
Return:
CF set (CY) if switch to protected mode failed
(and AX is a DPMI Error Code)
CS = selector for your code segment (64K limit)
SS = selector for your stack segment (64K limit)
DS = selector for your data segment (64K limit)
ES = selector for your program's PSP (256-byte limit)
FS = 0 (on 80386+ CPUs)
GS = 0 (on 80386+ CPUs)
Also, a selector has been prepared so that PSP:002e points to
your copy of the DOS Environment.
Note: To exit from protected mode, simply terminate your program via
the standard DOS fn 4cH.
See Also: DPMI API
INT 2fH 16xxH (Enh386 Windows Services & Notifications)
INT 2fH: Multiplex Interrupt
DOS Functions
-♦-