NTVDMx64 by Leecher1337

 A verson of NTVDM for 64-bit Windows

NTVDMx64 makes it possible to run DOS applications under 64-bit Windows 7, Windows 10. (It is reported to work correctly with Windows Server 2008 R2, and perhaps other Windows Server versions.)

NTVDMx64 does NOT make it possible to run 16-bit Windows applications under 64-bit Windows! It only works with DOS applications! To run 16-bit Windows applications, you may want to try out WIN3MU (search for it), but WIN3MU is not complete.

Unlike emulator applications like vDos and DOSBox, NTVDMx64 is fully integrated with Windows, with the same access to the Windows file system and ports that NTVDM has under 32-bit Windows. NTVDMx64 does not perform as quickly as DOSBox or vDos, but its integration is a unique and important advantage. For example, a DOS application running under NTVDMx64 can print directly to LPT1 if the computer has a parallel port; this is impossible under DOSBox or vDos.

Update (6 January 2019): Compatibility improvements.

NTVDMx64 is not my work! It is a patched version of Microsoft's original NTVDM, based on the leaked source code of Windows NT, and patched by a programmer who calls himself "Leecher1337." The leaked source code may not be distributed legally, so, in order to avoid legal problems, Leecher1337 publishes only patch files that contain modifications to the original code. These patch files may be downloaded from his Github page. With the proper development environment, the patched Windows NT code can be compiled to build a 64-bit version of NTVDM, which Leecher1337 has named NTVDMx64.

Leecher1337 does not distribute a compiled version of his patched version, but I have obtained a copy together with an installer, which may be downloaded here. To install NTVDMx64, run INSTALL.BAT, and restart your system when prompted. If you want, you may uninstall it from the Control Panel or PC Settings.

NTVDMx64 cannot run if the "secure boot" feature is enabled on your computer. If secure boot is enabled, the installer will warn you and refuse to run. You must disable secure boot in the BIOS settings of your machine; it is not a Windows setting. If you don't know how to do this, search the web or consult the manual for your system board.

Windows Smart Screen may refuse to let the installer run; choose Run Anyway from the buttons that appear when you click on More Info (or some similar setting). Windows Defender may block a DLL in the program; find it in the Quarantine settings, click on its name, and choose Restore. If you don't want to override these security features, don't use this software.

Cautions and warnings: NTVDMx64 uses non-standard methods of process propagation to inject loader code into 32-bit and 64-bit applications. I don't know exactly what this means, but I am reliably told that this may cause problems not yet recognized. You may want to experiment with a VMware or other virtual machine before running it on production systems. Also, it has been tested only under 64-bit Windows 7 and 64-bit Windows 10. Do not attempt to run it under any earlier version!

You may launch DOS applications from the Windows command prompt (CMD) or by double-clicking them in Windows Explorer. The first time you try to run any DOS program, you may see an error message; try again immediately afterwards, and the program should run.

Some programs will require command-line switches to run. For example, WordPerfect for DOS 6.x should be started with the /NE command-line switch. Some programs will not run at all; there is probably nothing that can be done about it, but you should feel free to file a very detailed "issue" at the GitHub page linked above.

Microsoft's NTVDM uses a licensed version of the SoftPC emulation software by Insignia. The original NTVDM, written for Windows NT, operated differently when run on Intel's x86 hardware and on alternate hardware, including VAX VMS, DEC Alpha, and Mips. SoftPC included a software-based CPU (CCPU) that could emulate an Intel 80386 processor. For performance reasons, when running under an Intel processor, the emulated CPU was not used; instead, the V86 mode of the hardware CPU was used, via a kernel interface which Microsoft called "Monitor". So the CCPU was used on non-x86 architectures and Monitor was used on x86. Leecher1337's NTVDMx64 modifies the original code so that the CCPU is used when running under 64-bit Windows, because Intel processors have no V86 support in the "long mode" used by 64-bit Windows.

This copy of NTVDMx64 makes one change in the CONFIG.NT file from the original NTVDM: it increases the FILES = line from 20 to 100, which should be sufficient for most applications). If you want to change that number, or make any other changes in CONFIG.NT, do the following: run CMD.EXE as an administrator; navigate if necessary to \WINDOWS\SYSTEM32 and run the command "start notepad config.nt", and edit the file.

For a full description, see Leecher1337's Github page, which also notes some problems with DPMI programs and DOS extenders.

Like NTVDM, NTVDMx64 can be customized from the system menu to change window size, display font, etc. Unlike NTVDM, it switches smoothly between text and graphic modes.

All comments and questions about NTVDMx64 should be posted on Leecher1337's Github page.

Edward Mendelson (em thirty-six [at] columbia [dot] edu, but with two initials and two numerals before the [at] sign, not spelled out as shown here).