EMM386.EXE: ALTBOOT Parameter (93366)

The information in this article applies to:
    Microsoft MS-DOS operating system 6.0
    Microsoft MS-DOS operating system 6.2
    Microsoft MS-DOS operating system 6.21
    Microsoft MS-DOS operating system 6.22

This article was previously published under Q93366


A new parameter was added to EMM386.EXE to eliminate problems encountered when you try to reboot a computer with the key combination CTRL+ALT+DEL. If your machine stops responding (hangs) when you press CTRL+ALT+DEL, try adding the ALTBOOT parameter as in the following example:
   device=c:\dos\emm386.exe altboot x=c000-c7ff noems


The CTRL+ALT+DEL handling routine changed when EMM386.EXE was upgraded in Microsoft Windows operating system version 3.1. The ALTBOOT parameter tells EMM386.EXE to handle CTRL+ALT+DEL the same way it does in Microsoft MS-DOS version 5.0.

EMM386.EXE monitors the system for reboots, and takes the processor out of virtual-8086 mode before control is passed to the boot strapping code. EMM386.EXE watches for the CTRL+ALT+DEL key combination by hooking interrupt 15h function 4Fh.

EMM386.EXE does the following when it detects that CTRL+ALT+DEL has been pressed:

    Sends the interrupt 15h call up the interrupt chain to the original INT 15h handler.
    Traps the interrupt return (IRET) from the INT 15h handler.
    Takes the system out of virtual mode, if appropriate.
By default, EMM386.EXE does not take the processor out of virtual mode until the INT 15h chain has been processed because an interrupt handler farther up the chain may alter the keyboard status flags or scan code so that the reboot does not occur.

Some systems have a ROM BIOS that initiates the reboot from within the interrupt 15h function 4Fh handler, rather than from the interrupt 09h keyboard handler. With this type of BIOS, the reboot code is executed in virtual mode. As a result, the system stops responding (hangs) during warm boots.

NOTE: This problem is further complicated by the fact that this type of BIOS has an INT 15h 4Fh handler that jumps to the reboot code at a non-standard memory location.

The ALTBOOT parameter tells EMM386.EXE to take the processor out of virtual mode BEFORE passing the CTRL+ALT+DEL key code up the INT 15h chain. Thus, when the BIOS jumps to the reboot code from its INT 15h 4Fh handler, the system reboots properly.

If EMM386.EXE detects that the program that called its INT 15h function 4Fh handler resides in an upper memory block, it does not take the processor out of virtual mode from within its INT 15h handler. (Instead, it relies on a different trap it has at memory location F000:FFF0.) In this situation, the ALTBOOT parameter does not correct the warm boot problem with the BIOS (noted above).

To work around this problem, use ALTBOOT and load any terminate- and-stay-resident (TSR) programs or drivers that call into INT 15h function 4Fh low. A common example of such a program is the MS-DOS KEYB command.

The ALTBOOT parameter may be needed on the following computers:
    UNISYS PW^2 3256 computers with Phoenix A386 BIOS copyrighted 1985,1991
    DELL NX20 portable

Modification Type: Major Last Reviewed: 11/16/1999
Keywords: KB93366