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 1687H: Get Real-to-Protected Mode Switch Address