TSR Fails to Pop Up Under MS-DOS Versions 4.0 and Later (81964)



The information in this article applies to:
    Microsoft MS-DOS operating system 4.0
    Microsoft MS-DOS operating system 4.01
    Microsoft MS-DOS operating system 5.0
    Microsoft MS-DOS operating system 5.0a

This article was previously published under Q81964

SYMPTOMS

Terminate-and-stay-resident (TSR) programs do not activate when their hot keys are pressed under MS-DOS versions 4.0 and later on a system with an enhanced keyboard.

CAUSE

One way the TSR programs wait to be activated is to hook the Int 16h ROM BIOS keyboard service and wait for another program to call that function and request keyboard input. The TSR then compares the key code returned by the ROM BIOS service with the key code of its hot key.

With the introduction of the enhanced keyboard, two new ROM BIOS keyboard services were added that supersede two of the original functions. MS-DOS versions 4.0 and later are designed to recognize the enhanced keyboard and use these two new functions instead of the old ones. This means that TSRs that watch the ROM BIOS Int 16h service for calls to the original functions will never be activated.

RESOLUTION

There are two ways to solve this problem:
    The TSR must be updated to watch all four of the ROM BIOS keyboard read functions: 00h, 01h, 10h, and 11h. -or-


    Add SWITCHES=/K or DEVICE=ANSI.SYS /K to your CONFIG.SYS file. This option causes MS-DOS versions 4.0 and later to use the old ROM BIOS keyboard read functions even when an enhanced keyboard is detected. This will solve the problem while MS-DOS is waiting for keyboard input, but other applications that call the new enhanced keyboard ROM BIOS services will still disable the TSR.
For more information on how MS-DOS reads from the keyboard, query on the following words in the Microsoft Knowledge Base:

CON ANSI SWITCHES


Modification Type: Major Last Reviewed: 10/14/2003
Keywords: KB81964