Virtual DOS Machine

The Virtual DOS Machine (VDM ) is a virtual machine, the operating system family comes under the Microsoft Windows NT to run, to ensure compatibility with older software that was developed for the formerly widespread operating system MS -DOS.


Starting from ntvdm.exe, simulates a virtual DOS machine largely a DOS environment, some PC hardware component (eg processor in real mode, the Intel 8253/8254 PIT, CGA / EGA / VGA / PC - BIOS) as well as current DOS -era Speicheraddressierungsschnittstellen (EMS / XMS / DPMI ) for programs that were not designed for the Win32 API, but for the INT 21h interface or direct hardware access were programmed. Using this emulation layer can be run on Windows, most DOS programs. For the programs it looks as if they were on a DOS machine, but they have no direct contact to the resources of the Windows operating system or the hardware. (Eg read or write files ) Requirements for the operating system to be translated by the virtual DOS machine in the corresponding Windows functions. Machine instructions that are not allowed under Windows ( this lead to exceptions), but in DOS would be unprotected, are intercepted and then either emulated or translated (eg int, in / out, cli / sti, hlt instructions ), or continue to prevented (eg direct access to disks ). There may be multiple instances of a virtual DOS machine to run. Thus can run on a Windows operating system, multiple virtual DOS machines simultaneously. About special wrapper functions it is possible to access from the Windows world with programming techniques on the content of the VDM.

The Virtual DOS Machine makes use of the virtual 8086 mode of the x86 processors exploit to run DOS programs. Because processor -based Virtual 8086 Mode (but not in 64bit mode) supported only by processors in 32-bit mode, ntvdm.exe no longer shipped with 64bit versions of Windows. The instructions for an x86 processor in real mode run requires as offered eg DOSBox or Bochs now software interpreter. One such emulation was once offered by Microsoft for RISC and Alpha systems running Windows NT - Windows NT 3.51 to for a 80286, in Windows NT 4.0, then a i486.

References and sources