87 lines
3.8 KiB
Plaintext
87 lines
3.8 KiB
Plaintext
--------W-2F1605-----------------------------
|
|
INT 2F - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX INIT BROADCAST
|
|
AX = 1605h
|
|
ES:BX = 0000h:0000h
|
|
DS:SI = 0000h:0000h
|
|
CX = 0000h
|
|
DX = flags
|
|
bit 0 = 0 if Windows enhanced-mode initialization
|
|
bit 0 = 1 if Microsoft 286 DOS extender initialization
|
|
bits 1-15 reserved (undefined)
|
|
DI = version number (major in upper byte, minor in lower)
|
|
Return: CX = 0000h if okay for Windows to load
|
|
CX = FFFFh (other registers unchanged) if Windows 3.0 in standard mode
|
|
CX <> 0 if Windows should not load
|
|
ES:BX -> startup info structure (see #1410)
|
|
DS:SI -> virtual86 mode enable/disable callback or 0000h:0000h
|
|
(see #1413)
|
|
Notes: the Windows enhanced mode loader and Microsoft 286 DOS extender will
|
|
broadcast an INT 2F/AX=1605h call when initializing. Any DOS device
|
|
driver or TSR can watch for this broadcast and return the appropriate
|
|
values. If the driver or TSR returns CX <> 0, it is also its
|
|
responsibility to display an error message.
|
|
each handler must first chain to the prior INT 2F handler with
|
|
registers unchanged before processing the call
|
|
if the handler requires local data on a per-VM basis, it must store the
|
|
returned ES:BX in the "next" field of a startup info structure and
|
|
return a pointer to that structure in ES:BX
|
|
a single TSR may set the V86 mode enable/disable callback; if DS:SI is
|
|
already nonzero, the TSR must fail the initialization by setting CX
|
|
nonzero
|
|
MSD checks for Windows 3.0 running in standard mode by testing whether
|
|
CX=FFFFh and other registers are unchanged on return
|
|
Novell DOS v7.0 (Update 8 - Update 11) TASKMGR in multitasking mode
|
|
uses this broadcast, even if TASKMGR.INI sets WinPresent= to OFF
|
|
Micrsoft's EMM386.EXE for DOS 5+ when installed with the NOEMS option
|
|
changes its driver name from EMMQXXX0 to EMMXXXX0 while Windows is
|
|
active
|
|
SeeAlso: AX=1606h,AX=1608h,AX=4B05h
|
|
|
|
Format of Windows Startup Information Structure:
|
|
Offset Size Description (Table 1410)
|
|
00h 2 BYTEs major, minor version of info structure
|
|
02h DWORD pointer to next startup info structure or 0000h:0000h
|
|
06h DWORD pointer to ASCIZ name of virtual device file or 0000h:0000h
|
|
0Ah DWORD virtual device reference data (see #1412)
|
|
(only used if above nonzero)
|
|
0Eh DWORD pointer to instance data records (see #1411) or 0000h:0000h
|
|
|
|
Format of one Instance Item in array:
|
|
Offset Size Description (Table 1411)
|
|
00h DWORD address of instance data (end of array if 0000h:0000h)
|
|
04h WORD size of instance data
|
|
|
|
Format of Virtual Device Reference Data:
|
|
Offset Size Description (Table 1412)
|
|
00h DWORD physical address of ??? or 00000000h
|
|
04h DWORD physical address of ??? table
|
|
08h DWORD "DEST_PAGE" address to which pages must be mapped
|
|
0Ch N DWORDs "SRC_PAGE" physical addresses of the pages
|
|
00000000h = end of table
|
|
Note: EMM386.EXE sets the first pointer to the start of the device driver
|
|
chain, the second pointer to a field of 40h bytes followed by a
|
|
16-bit offset to the end of the SRC_PAGE table, and DEST_PAGE to
|
|
the start segment of the UMB area
|
|
|
|
(Table 1413)
|
|
Values Windows virtual mode enable/disable procedure is called with:
|
|
AX = 0000h disable V86 mode
|
|
AX = 0001h enable V86 mode
|
|
interrupts disabled
|
|
Return: CF set on error
|
|
CF clear if successful
|
|
interrupts disabled
|
|
--------W-2F1606-----------------------------
|
|
INT 2F - MS Windows - WINDOWS ENHANCED MODE & 286 DOSX EXIT BROADCAST
|
|
AX = 1606h
|
|
DX = flags
|
|
bit 0 = 0 if Windows enhanced-mode exit
|
|
bit 0 = 1 if Microsoft 286 DOS extender exit
|
|
bits 1-15 reserved (undefined)
|
|
Notes: if the init broadcast fails (AX=1605h returned CX <> 0), then this
|
|
broadcast will be issued immediately.
|
|
this call will be issued in real mode
|
|
Novell DOS v7.0 (Update 8 - Update 10) TASKMGR in multitasking mode
|
|
uses this broadcast, even if TASKMGR.INI sets WinPresent= to OFF
|
|
SeeAlso: AX=1605h,AX=1609h
|