INT 2F C - 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 #02631) DS:SI -> virtual86 mode enable/disable callback or 0000h:0000h (see #02634) 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(Terminate and Stay Resident) A program which remains in memory after terminating in order to provide services to other programs or the user. The name comes from the name of the DOS function call used to remain in memory after termination. can watch for this broadcast and return the appropriate values. If the driver or TSR(Terminate and Stay Resident) A program which remains in memory after terminating in order to provide services to other programs or the user. The name comes from the name of the DOS function call used to remain in memory after termination. returns CX <> 0, it is also its responsibility to display an error message (however, Windows95 is reported to load regardless of the returned CX). 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(Terminate and Stay Resident) A program which remains in memory after terminating in order to provide services to other programs or the user. The name comes from the name of the DOS function call used to remain in memory after termination. may set the V86see Virtual-86 Mode mode enable/disable callback; if DS:SI is already nonzero, the TSR(Terminate and Stay Resident) A program which remains in memory after terminating in order to provide services to other programs or the user. The name comes from the name of the DOS function call used to remain in memory after termination. 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 Microsoft'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 02631) 00h 2 BYTEs major, minor version of info structure 02h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. pointer to next startup info structure or 0000h:0000h 06h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. pointer to ASCIZA NUL-terminated ASCII string. The ASCIZ string "ABC" consists of the four bytes 41h, 42h, 43h, and 00h. Unless otherwise specified, maximum lengths given in the interrupt list do not include the terminating NUL. name of virtual device file or 0000h:0000h 0Ah DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. virtual device reference data (see #02633) (only used if above nonzero) 0Eh DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. pointer to instance data records (see #02632) or 0000h:0000h ---structure version >= 4.0--- 12h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. pointer to optionally-instanced data records (see #02632) or 0000h:0000h Format of one Instance Item in array: Offset Size Description (Table 02632) 00h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. address of instance data (end of array if 0000h:0000h) 04h WORD size of instance data SeeAlso: #02631 Format of Virtual Device Reference Data: Offset Size Description (Table 02633) 00h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. physical address of ??? or 00000000h 04h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. physical address of ??? table 08h DWORDDoubleword; four bytes. Commonly used to hold a 32-bit segment:offset or selector:offset address. "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 UMBsee Upper Memory Block area SeeAlso: #02631 (Table 02634) Values Windows virtual mode enable/disable procedure is called with: AX = 0000h disable V86see Virtual-86 Mode mode AX = 0001h enable V86see Virtual-86 Mode mode interrupts disabled Return: CF set on error CF clear if successful interrupts disabled SeeAlso: #02631