Skip navigation

JSI Tip 6041. How do I troubleshoot MS-DOS programs running on Windows XP?

When you have problems with MS-DOS programs:

Test the NTVDM (Windows Virtual DOS Machine) subsystem:

1. Start / Run / Command.com / OK.

2. If a C:\Windows\System32\Command.com session does NOT open, the NTVDM is misconfigured. Check the Config.nt and Autoexec.nt files in the %SystemRoot%\System32 folder for non-standard entries:

Config.nt
---------

REM Windows MS-DOS Startup File
REM
REM CONFIG.SYS vs CONFIG.NT
REM CONFIG.SYS is not used to initialize the MS-DOS environment.
REM CONFIG.NT is used to initialize the MS-DOS environment unless a
REM different startup file is specified in an application's PIF.
REM
REM ECHOCONFIG
REM By default, no information is displayed when the MS-DOS environment
REM is initialized. To display CONFIG.NT/AUTOEXEC.NT information, add
REM the command echoconfig to CONFIG.NT or other startup file.
REM
REM NTCMDPROMPT
REM When you return to the command prompt from a TSR or while running an
REM MS-DOS-based application, Windows runs COMMAND.COM. This allows the
REM TSR to remain active. To run CMD.EXE, the Windows command prompt,
REM rather than COMMAND.COM, add the command ntcmdprompt to CONFIG.NT or
REM other startup file.
REM
REM DOSONLY
REM By default, you can start any type of application when running
REM COMMAND.COM. If you start an application other than an MS-DOS-based
REM application, any running TSR may be disrupted. To ensure that only
REM MS-DOS-based applications can be started, add the command dosonly to
REM CONFIG.NT or other startup file.
REM
REM EMM
REM You can use EMM command line to configure EMM(Expanded Memory Manager).
REM The syntax is:
REM
REM EMM = \[A=AltRegSets\] \[B=BaseSegment\] \[RAM\]
REM
REM     AltRegSets
REM         specifies the total Alternative Mapping Register Sets you
REM         want the system to support. 1 <= AltRegSets <= 255. The
REM         default value is 8.
REM     BaseSegment
REM         specifies the starting segment address in the Dos conventional
REM         memory you want the system to allocate for EMM page frames.
REM         The value must be given in Hexdecimal.
REM         0x1000 <= BaseSegment <= 0x4000. The value is rounded down to
REM         16KB boundary. The default value is 0x4000
REM     RAM
REM         specifies that the system should only allocate 64Kb address
REM         space from the Upper Memory Block(UMB) area for EMM page frames
REM         and leave the rests(if available) to be used by DOS to support
REM         loadhigh and devicehigh commands. The system, by default, would
REM         allocate all possible and available UMB for page frames.
REM
REM     The EMM size is determined by pif file(either the one associated
REM     with your application or _default.pif). If the size from PIF file
REM     is zero, EMM will be disabled and the EMM line will be ignored.
REM
dos=high, umb
device=%SystemRoot%\system32\himem.sys
files=40


Autoexec.nt
-----------

@echo off

REM AUTOEXEC.BAT is not used to initialize the MS-DOS environment.
REM AUTOEXEC.NT is used to initialize the MS-DOS environment unless a
REM different startup file is specified in an application's PIF.

REM Install CD ROM extensions
lh %SystemRoot%\system32\mscdexnt.exe

REM Install network redirector (load before dosx.exe)
lh %SystemRoot%\system32\redir

REM Install DPMI support
lh %SystemRoot%\system32\dosx

REM The following line enables Sound Blaster 2.0 support on NTVDM.
REM The command for setting the BLASTER environment is as follows:
REM    SET BLASTER=A220 I5 D1 P330
REM    where:
REM        A    specifies the sound blaster's base I/O port
REM        I    specifies the interrupt request line
REM        D    specifies the 8-bit DMA channel
REM        P    specifies the MPU-401 base I/O port
REM        T    specifies the type of sound blaster card
REM                 1 - Sound Blaster 1.5
REM                 2 - Sound Blaster Pro I
REM                 3 - Sound Blaster 2.0
REM                 4 - Sound Blaster Pro II
REM                 6 - SOund Blaster 16/AWE 32/32/64
REM
REM    The default value is A220 I5 D1 T3 and P330.  If any of the switches is
REM    left unspecified, the default value will be used. (NOTE, since all the
REM    ports are virtualized, the information provided here does not have to
REM    match the real hardware setting.)  NTVDM supports Sound Blaster 2.0 only.
REM    The T switch must be set to 3, if specified.

SET BLASTER=A220 I5 D1 P330 T3

REM To disable the sound blaster 2.0 support on NTVDM, specify an invalid
REM SB base I/O port address.  For example:
REM    SET BLASTER=A0
lh %SystemRoot%\System32\Nw16     (only if CSNW is installed)
lh %SystemRoot%\System32\Vwipxspx (only if CSNW is installed)
NOTE: Use REM to ignore any other entries for troubleshooting.

NOTE: You can copy these files from %SystemRoot%\Repair or expand the autoexec.nt_ and Config.nt_ files from the I386 folder of the Windows XP CD-ROM.

3.Press CTRL+SHIFT+ESC to start Task Manager and close all running programs.

4. Make sure that no other instance of NTVDM is running.

5. Use MSConfig to temporarily disable all programs in the Startup groups, the registry Run and RunOnce keys, and the "run=" and "load=" lines in the Win.ini file. 

6. Make sure that the following files exist in the %SystemRoot%\System32 folder, that they have dates consistent with the initial install or your last service pack (Expand from the media):

   command.com
   Ntio.sys
   Ntdos.sys
   Ntvdm.exe
   Ntvdmd.dll
   Redir.exe
Any environment variables required must be located in the registry at HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\Session Manager\Environment.

Any device drivers used in the NTVDM session should have been installed by Windows and recorded at:

HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\VirtualDeviceDrivers\VDD.

MS-DOS Program-Specific Issues

01. All MS-DOS program functions except task-switching functions are supported.

02. The MS-DOS program may not use block mode drivers, APIs that deal with block devices, and SETDPB.

03. Interrupt 10 function 1A returns 0; all other functions are passed to read-only memory (ROM).

04. Interrupt 13 calls that deal with prohibited disk access are not supported.

05. Interrupt 18 (ROM BASIC) generates a message that says that ROM BASIC is not supported.

06. Interrupt 19 does not restart the computer, but cleanly closes the current NTVDM.

07. Interrupt 2F, which deals with the DOSKEY program callouts (AX = 4800), is not supported.

08. Microsoft CD-ROM Extensions (MSCDEX) functions 2, 3, 4, 5, 8, E, and F are not supported.

09. Programs that require unrestricted access to hardware are not supported.

10. If the program uses custom versions of Autoexec.nt and Config.nt, these should NOT be stored in the %SystemRoot%\System32 folder. These are referenced by using the Advanced button on the Program tab of the shortcut, program, or .pif Properties.

11. Make sure that all the tabs in the Properties dialog are properly set per the author's specifications.

Other references:

NTVDM Error: There Is No Disk in the Drive.

Entries in CONFIG.NT or AUTOEXEC.NT May Cause NTVDM Errors.

Err: 'Hidden Console of WOW VDM' Running 16-bit or DOS App.



Hide comments

Comments

  • Allowed HTML tags: <em> <strong> <blockquote> <br> <p>

Plain text

  • No HTML tags allowed.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Lines and paragraphs break automatically.
Publish