fbpx
Wikipedia

Virtual DOS machine

Virtual DOS machines (VDM) refer to a technology that allows running 16-bit/32-bit DOS and 16-bit Windows programs when there is already another operating system running and controlling the hardware.

Overview edit

Virtual DOS machines can operate either exclusively through typical software emulation methods (e.g. dynamic recompilation) or can rely on the virtual 8086 mode of the Intel 80386 processor, which allows real mode 8086 software to run in a controlled environment by catching all operations which involve accessing protected hardware and forwarding them to the normal operating system (as exceptions). The operating system can then perform an emulation and resume the execution of the DOS software.

VDMs generally also implement support for running 16- and 32-bit protected mode software (DOS extenders), which has to conform to the DOS Protected Mode Interface (DPMI).[1]

When a DOS program running inside a VDM needs to access a peripheral, Windows will either allow this directly (rarely), or will present the DOS program with a virtual device driver (VDD) which emulates the hardware using operating system functions. A VDM will systematically have emulations for the Intel 8259A interrupt controllers, the 8254 timer chips, the 8237 DMA controller, etc.[1]

Concurrent DOS 8086 emulation mode edit

In January 1985 Digital Research together with Intel previewed Concurrent DOS 286 1.0,[2] a version of Concurrent DOS capable of running real mode DOS programs in the 80286's protected mode.[2] The method devised on B-1 stepping processor chips, however, in May 1985 stopped working on the C-1 and subsequent processor steppings shortly before Digital Research was about to release the product. Although with the E-1 stepping Intel started to address the issues in August 1985, so that Digital Research's "8086 emulation mode" worked again utilizing the undocumented LOADALL processor instruction,[3][4] it was too slow to be practical. Microcode changes for the E-2 stepping improved the speed again.[5][6] This early implementation can be seen as a predecessor to actual virtual DOS machines.

Eventually, Concurrent DOS 286 was reworked from a potential desktop operating system to become FlexOS 286 for industrial use in 1986.[7][8] It was also licensed by IBM for their 4680 OS in 1986.[9][10]

When Intel's 80386 with its virtual 8086 mode became available (as samples since October 1985 and in quantities since June 1986), Digital Research switched to use this to run real mode DOS programs in virtual DOS machines in protected mode under Concurrent DOS 386 1.0 (February 1987)[11] and FlexOS 386 1.0 (June 1987).[12] However, the architecture of these multiuser multitasking protected mode operating systems was not DOS-based by themselves.

Concurrent DOS 386 was later developed to become Multiuser DOS (since 1991) and REAL/32 (since 1995). FlexOS 386 later became 4690 OS in 1993.

DOS-based VDMs edit

In contrast to these protected mode operating systems, DOS, by default, is a real-mode operating system, switching to protected mode and virtual 86 mode only on behalf of memory managers and DOS extenders in order to provide access to extended memory or map in memory into the first megabyte, which is accessible to normal DOS programs.

DOS-based VDMs appeared with Microsoft's Windows/386 2.01 in September 1987.[13] DOS-based virtual DOS machines were also present in Windows 3.0, 3.1x and Windows for Workgroups 3.1x running in 386 Enhanced Mode as well as in Windows 95, 98, 98 SE and ME. One of the characteristics of these solutions running on top of DOS is that the memory layout shown inside virtual DOS machines are virtual instances of the DOS system and DOS driver configuration run before the multitasker is loaded, and that requests which cannot be handled in protected mode are passed down into the system domain to be executed by the underlying DOS system.

Similar to Windows 3.x 386 Enhanced Mode in architecture, EMM386 3.xx of Novell DOS 7,[1][14] Caldera OpenDOS 7.01,[14][15] DR-DOS 7.02[16] (and later) also uses DOS-based VDMs to support pre-emptive multitasking of multiple DOS applications, when the EMM386 /MULTI option is used.[14][15][16] This component has been under development at Digital Research / Novell since 1991[nb 1] under the codename "Vladivar" (originally a separate device driver KRNL386.SYS[1][14] instead of a module of EMM386). While primarily developed for the next major version of DR DOS, released as Novell DOS 7 in 1994,[1][14] it was also used in the never released DR DOS "Panther" and "Star Trek" project in 1992/1993.

OS/2 MVDM edit

Multiple virtual DOS machines (MVDM) are used in OS/2 2.0 and later since 1992.[1][4] OS/2 MVDMs are considerably more powerful than NTVDM. For example, block devices are supported, and various DOS versions can be booted into an OS/2 MVDM.[17] While the OS/2 1.x DOS box was based on DOS 3.0, OS/2 2.x MVDMs emulate DOS 5.0.[1]

Seamless integration of Windows 3.1 and later Win32s applications in OS/2 is a concept looking similar on surface to the seamless integration of XP Mode based on Windows Virtual PC in Windows 7. A redirector in a "guest" VDM or NTVDM allows access on the disks of the OS/2 or NT "host". Applications in a "guest" can use named pipes for communication with their "host".[18]

Due to a technical limitation, DOS and 16-bit Windows applications under OS/2 were unable to see more than 2 GB of hard drive space;[19] this was fixed in ArcaOS 5.0.4.[20]

Windows NTVDM edit

 
COMMAND.COM running in the NTVDM of Windows 10

NTVDM was a system component of all IA-32 editions of the Windows NT family since 1993 with the release of Windows NT 3.1. It allows execution of 16-bit Windows and 16-bit / 32-bit DOS applications. The Windows NT 32-bit user-mode executable which forms the basis for a single DOS (or Windows 3.x) environment is called ntvdm.exe.[1]

In order to execute DOS programs, NTVDM loads NTIO.SYS which in turn loads NTDOS.SYS, which executes a modified COMMAND.COM in order to run the application that was passed to NTVDM as command-line argument. The 16-bit real-mode system files are stripped down derivations of their MS-DOS 5.0 equivalents IO.SYS, MSDOS.SYS and COMMAND.COM[1] with all hard-wired assumptions on the FAT file system removed and using the invalid opcode 0xC4 0xC4 to bop down into the 32-bit NTVDM to handle the requests.[1] Originally, NTDOS reported a DOS version of 30.00 to programs,[1] but this was soon changed to report a version of 5.00 at INT 21h/AH=30h and 5.50 at INT 21h/AX=3306h to allow more programs to run unmodified.[1] This holds true even in the newest releases of Windows; many additional MS-DOS functions and commands introduced in MS-DOS versions 6.x and in Windows 9x are missing.

16-bit Windows applications by default all run in their own thread within a single NTVDM process. Although NTVDM itself is a 32-bit process and pre-emptively multitasked with respect to the rest of the system, the 16-bit applications within it are cooperatively multitasked with respect to each other. When the "Run in separate memory space" option is checked in the Run box or the application's shortcut file, each 16-bit Windows application gets its own NTVDM process and is therefore pre-emptively multitasked with respect to other processes, including other 16-bit Windows applications. NTVDM emulates BIOS calls and tables as well as the Windows 3.1 kernel and 16-bit API stubs.[21] The 32-bit WoW translation layer thunks 16-bit API routines.

32-bit DOS emulation is present for DOS Protected Mode Interface (DPMI) and 32-bit memory access. This layer converts the necessary extended and expanded memory calls for DOS functions into Windows NT memory calls. wowexec.exe is the emulation layer that emulates 16-bit Windows. Windows 2000 and Windows XP added Sound Blaster 2.0 emulation.[22] 16-bit virtual device drivers and DOS block device drivers (e.g., RAM disks) are not supported. Inter-process communication with other subsystems can take place through OLE, DDE and named pipes.

Since virtual 8086 mode is not available on non-x86-based processors (more specifically, MIPS, DEC Alpha, and PowerPC) NTVDM was instead implemented as a full emulator in these versions of NT, using code licensed from Insignia's SoftPC.[23][1] Up to Windows NT 3.51, only 80286 emulation was available. With Windows NT 4.0, 486 emulation was added.[24]

NTVDM is not included with 64-bit versions of Windows or ARM32 based versions such as Windows RT or Windows 10 IoT Core. Windows 10 is the final version of Windows to include this component, as Windows 11 dropped support for 32-bit processors.

Commands edit

The following list of commands is part of the Windows XP MS-DOS subsystem.[18]

Security issue edit

In January 2010, Google security researcher Tavis Ormandy revealed a serious security flaw in Windows NT's VDM implementation that allowed unprivileged users to escalate their privileges to SYSTEM level, noted as applicable to the security of all x86 versions of the Windows NT kernel since 1993. This included all 32-bit versions of Windows NT, 2000, XP, Server 2003, Vista, Server 2008, and Windows 7.[25] Ormandy published a proof-of-concept exploit for the vulnerability.[26] Prior to Microsoft's release of a security patch, the workaround for this issue was to turn off 16-bit application support, which prevented older programs (those written for DOS and Windows 3.1) from running. 64-bit versions of Windows are not affected since the NTVDM subsystem is not included.[27][28] Once the Microsoft security patches had been applied to the affected operating systems the VDM could be safely reenabled.[nb 2]

Limitations edit

A limitation exists in the Windows XP 16-bit subsystem (but not in earlier versions of Windows NT) because of the raised per-session limit for GDI objects which causes GDI handles to be shifted to the right by two bits, when converting them from 32 to 16 bits.[29] As a result, the actual handle cannot be larger than 14 bits and consequently 16-bit applications that happen to be served a handle larger than 16384 by the GDI system crash and terminate with an error message.[29]

In general, VDM and similar technologies do not satisfactorily run most older DOS games on today's computers. Emulation is only provided for the most basic peripherals, often implemented incompletely[citation needed]. For example, sound emulation in NTVDM is very limited. NT-family versions of Windows only update the real screen a few times per second when a DOS program writes to it, and they do not emulate higher resolution graphics modes. Because software mostly runs native at the speed of the host CPU, all timing loops will expire prematurely. This either makes a game run much too fast or causes the software not even to notice the emulated hardware peripherals, because it does not wait long enough for an answer.

Absence in x64 and AArch64 architectures edit

In an x86-64 CPU, virtual 8086 mode is available as a sub-mode only in its legacy mode (for running 16- and 32-bit operating systems), not in the native 64-bit long mode.[30] NTVDM is not supported on x86-64 editions of Windows,[31] including DOS programs,[32] because NTVDM uses VM86 CPU mode instead of the Local Descriptor Table in order to enable 16‑bits segment required for addressing.[33] NTVDM is also unavailable on AArch64 versions of Windows (such as Windows RT), because Microsoft did not release a full emulator for this incompatible instruction set like it did on previous incompatible architectures.

Whilst NTVDM is not supported on x86-64 and AArch64 versions of Windows, they can still be run using virtualization software, such as Windows XP Mode in non-home versions of Windows 7 or VMware Workstation. Other methods include using NTVDMx64,[34] an unofficial port of the emulated implementation of NTVDM from the leaked Windows NT 4.0 source code for non-x86 platforms,[23] or OTVDM (WineVDM), a 16-bit Windows interpreter based on MAME's i386 emulation and the 16-bit portion of the popular Windows compatibility layer, Wine.[35]

See also edit

Notes edit

  1. ^ KRNL386.SYS of DR DOS "Panther" has copyright strings "1991,1992".
  2. ^ A disabled VDM could be reenabled by setting the corresponding registry key back to "HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat\VDMDisallowed"=dword:00000000.

References edit

  1. ^ a b c d e f g h i j k l m Schulman, Andrew; Brown, Ralf D.; Maxey, David; Michels, Raymond J.; Kyle, Jim (1994) [November 1993]. Undocumented DOS: A programmer's guide to reserved MS-DOS functions and data structures - expanded to include MS-DOS 6, Novell DOS and Windows 3.1 (2 ed.). Reading, Massachusetts: Addison Wesley. ISBN 0-201-63287-X. (xviii+856+vi pages, 3.5-inch floppy) Errata:
  2. ^ a b "Concurrent DOS-286 Challenges Unix". BYTE Magazine. 10 (5): 375–377. May 1985. Archived from the original on 2018-09-14. Retrieved 2017-01-23. [3]
  3. ^ "Concurrent DOS 68K 1.2 - Developer Kit for Motorola VME/10 - Disk 2". 1986-08-06 [1986-04-08]. Retrieved 2018-09-13. (NB. This package also includes some header files from Concurrent DOS 286, including STRUCT.H explicitly mentioning LOADALL for "8086 emulation".)
  4. ^ a b Deitel, Harvey M.; Kogan, Michael S. (1992). The Design of OS/2. Addison-Wesley. ISBN 0-201-54889-5.
  5. ^ Foster, Edward (1985-05-13). "Super DOS awaits new 80286 – Concurrent DOS 286 – delayed until Intel upgrades chip – offers Xenix's power and IBM PC compatibility". InfoWorld. InfoWorld Media Group. 7 (19): 17–18. ISSN 0199-6649. Archived from the original on 2019-04-03. Retrieved 2019-04-03.
  6. ^ Foster, Edward (1985-08-26). "Intel shows new 80286 chip – Future of DRI's Concurrent DOS 286 still unclear after processor fixed". InfoWorld. InfoWorld Media Group. 7 (34): 21. ISSN 0199-6649. Archived from the original on 2019-04-03. Retrieved 2019-04-03.
  7. ^ FlexOS Supplement for Intel iAPX 286-based Computers (PDF). 1.3 (1 ed.). Digital Research, Inc. November 1986. Archived (PDF) from the original on 2019-04-03. Retrieved 2018-08-14.
  8. ^ CBR, ed. (1987-01-15). "Digital Research launches FlexOS 286 Real-Time Manufacturing Operating System". Computer Business Review. Archived from the original on 2013-01-18. Retrieved 2018-09-15.
  9. ^ Calvo, Melissa; Forbes, Jim (1986-02-10). "IBM to use a DRI operating system". InfoWorld . Archived from the original on 2019-04-03. Retrieved 2011-09-06.
  10. ^ "IBM selects Concurrent DOS-286 for PC AT retail system" (PDF). European Review. Digital Research (18): 1. March 1986. (PDF) from the original on 2019-04-03. Retrieved 2018-09-15.
  11. ^ Weiss, Jiri (1987-02-16). "DRI To Release Multiuser 80386 Operating System". InfoWorld. 9 (7): 1, 8. Archived from the original on 2019-04-03. Retrieved 2017-01-22. [4]
  12. ^ CBR, ed. (1987-06-03). "Digital Research shows off Real-Time FlexOS 386". Computer Business Review. Archived from the original on 2013-06-28. Retrieved 2011-09-06.
  13. ^ Necasek, Michal (2011-05-21). "Windows/386 2.01". OS/2 Museum. from the original on 2019-04-03. Retrieved 2019-04-02.
  14. ^ a b c d e Paul, Matthias R. (1997-07-30) [1994-05-01]. NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds. Release 157 (in German) (3 ed.). from the original on 2016-11-03. Retrieved 2014-09-06. {{cite book}}: |work= ignored (help) (NB. NWDOSTIP.TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7.01, including the description of many undocumented features and internals. It is part of the author's yet larger MPDOSTIP.ZIP collection maintained up to 2001 and distributed on many sites at the time. The provided link points to a HTML-converted older version of the NWDOSTIP.TXT file.)
  15. ^ a b . UK: Caldera, Inc. August 1997. Caldera Part No. 200-DOMG-004. Archived from the original on 2017-09-10. Retrieved 2016-11-02.
  16. ^ a b . Caldera, Inc. 1998 [1993, 1997]. Archived from the original on 2016-11-05. Retrieved 2014-09-06.
  17. ^ (PDF). IBM redbook. 1994. pp. 68–80. Archived from the original (PDF) on 2012-03-20. Retrieved 2011-07-05.
  18. ^ a b "MS-DOS subsystem commands". Microsoft.
  19. ^ "Why can't my DOS and Win-OS/2 sessions see more than 2 GB of free space?". Arca Noae, LLC. from the original on 2021-07-07. Retrieved 2020-09-03.
  20. ^ "ArcaOS Release Notes". 2020-08-31 [2017-05-15]. from the original on 2021-03-16. Retrieved 2020-09-03.
  21. ^ "Chapter 27 - Windows Compatibility and Migration". Windows NT 4.0 Resource Kit. Microsoft. 2014-02-20. Retrieved 2017-07-19.
  22. ^ Schulman, Jerold (2002-12-04). "How do I troubleshoot MS-DOS programs running on Windows XP?". ITPro Windows. Retrieved 2017-07-19.
  23. ^ a b "leecher1337/ntvdmx64". GitHub. Retrieved 2018-11-03. Edward Mendelson's additional documentation
  24. ^ . Microsoft Support. 2006-11-21. Archived from the original on 2013-02-24. Retrieved 2017-07-19.
  25. ^ "Microsoft Security Bulletin MS10-015 - Important: Vulnerabilities in Windows Kernel Could Allow Elevation of Privilege (977165)". Security TechCenter. Microsoft. 2010-03-17. Retrieved 2012-11-02.
  26. ^ Ormandy, Tavis (2010-01-19). "Microsoft Windows NT #GP Trap Handler Allows Users to Switch Kernel Stack". CVE-2010-0232. Full-disclosure. Retrieved 2013-04-13.
  27. ^ Farrell, Nick (2010-01-20). . The Inquirer. Incisive. Archived from the original on 2010-01-23. Retrieved 2010-01-21.{{cite web}}: CS1 maint: unfit URL (link)
  28. ^ "Microsoft Security Advisory (979682): Vulnerability in Windows Kernel Could Allow Elevation of Privilege". TechNet. Microsoft. 2010-01-20. Retrieved 2010-01-21.
  29. ^ a b The "Win 16 Subsystem has insufficient resources to continue running" problem on Windows XP
  30. ^ Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B, and 3C (PDF) (PDF). Intel. June 2013 [1997]. 325462-047US. Retrieved 2013-07-02.
  31. ^ Klein, Helge (2008-03-11). "Windows x64 - All the Same Yet Very Different, Part 5: NTVDM, Services, WoW64". Retrieved 2013-07-21.
  32. ^ "List of limitations in 64-Bit Windows". Microsoft Corporation. 2007-10-11. Retrieved 2017-07-19.
  33. ^ "modify_ldt(2)". Linux Programmer's Manual. Retrieved 2019-07-21.
  34. ^ "NTVDMx64 by Leecher1337". www.columbia.edu. Retrieved 2023-03-25.
  35. ^ "Winevdm". GitHub. Retrieved 2019-07-21. Edward Mendelson's additional documentation

Further reading edit

External links edit

  • Virtual DOS Machine Structure
  • Troubleshooting MS-DOS-based programs in Windows XP
  • Troubleshooting an MS-DOS application which hangs the NTVDM subsystem in Windows XP and Windows Server 2003
  • Troubleshooting MS-DOS-based serial communication programs in Windows 2000 and later
  • MS-DOS Player for Win32-x64, a Microsoft MS-DOS Emulator, runs many command line DOS programs like compilers or other tools, also packaged into one stand-alone executable file.
  • vDOS, a DOS emulator designed for the running the more "serious" DOS apps (not games) on 64-bit NT systems (effectively a replacement for NTVDM on modern systems).

virtual, machine, refer, technology, that, allows, running, windows, programs, when, there, already, another, operating, system, running, controlling, hardware, contents, overview, concurrent, 8086, emulation, mode, based, vdms, mvdm, windows, ntvdm, commands,. Virtual DOS machines VDM refer to a technology that allows running 16 bit 32 bit DOS and 16 bit Windows programs when there is already another operating system running and controlling the hardware Contents 1 Overview 2 Concurrent DOS 8086 emulation mode 3 DOS based VDMs 4 OS 2 MVDM 5 Windows NTVDM 5 1 Commands 5 2 Security issue 5 3 Limitations 5 4 Absence in x64 and AArch64 architectures 6 See also 7 Notes 8 References 9 Further reading 10 External linksOverview editVirtual DOS machines can operate either exclusively through typical software emulation methods e g dynamic recompilation or can rely on the virtual 8086 mode of the Intel 80386 processor which allows real mode 8086 software to run in a controlled environment by catching all operations which involve accessing protected hardware and forwarding them to the normal operating system as exceptions The operating system can then perform an emulation and resume the execution of the DOS software VDMs generally also implement support for running 16 and 32 bit protected mode software DOS extenders which has to conform to the DOS Protected Mode Interface DPMI 1 When a DOS program running inside a VDM needs to access a peripheral Windows will either allow this directly rarely or will present the DOS program with a virtual device driver VDD which emulates the hardware using operating system functions A VDM will systematically have emulations for the Intel 8259A interrupt controllers the 8254 timer chips the 8237 DMA controller etc 1 Concurrent DOS 8086 emulation mode editIn January 1985 Digital Research together with Intel previewed Concurrent DOS 286 1 0 2 a version of Concurrent DOS capable of running real mode DOS programs in the 80286 s protected mode 2 The method devised on B 1 stepping processor chips however in May 1985 stopped working on the C 1 and subsequent processor steppings shortly before Digital Research was about to release the product Although with the E 1 stepping Intel started to address the issues in August 1985 so that Digital Research s 8086 emulation mode worked again utilizing the undocumented LOADALL processor instruction 3 4 it was too slow to be practical Microcode changes for the E 2 stepping improved the speed again 5 6 This early implementation can be seen as a predecessor to actual virtual DOS machines Eventually Concurrent DOS 286 was reworked from a potential desktop operating system to become FlexOS 286 for industrial use in 1986 7 8 It was also licensed by IBM for their 4680 OS in 1986 9 10 When Intel s 80386 with its virtual 8086 mode became available as samples since October 1985 and in quantities since June 1986 Digital Research switched to use this to run real mode DOS programs in virtual DOS machines in protected mode under Concurrent DOS 386 1 0 February 1987 11 and FlexOS 386 1 0 June 1987 12 However the architecture of these multiuser multitasking protected mode operating systems was not DOS based by themselves Concurrent DOS 386 was later developed to become Multiuser DOS since 1991 and REAL 32 since 1995 FlexOS 386 later became 4690 OS in 1993 DOS based VDMs editIn contrast to these protected mode operating systems DOS by default is a real mode operating system switching to protected mode and virtual 86 mode only on behalf of memory managers and DOS extenders in order to provide access to extended memory or map in memory into the first megabyte which is accessible to normal DOS programs DOS based VDMs appeared with Microsoft s Windows 386 2 01 in September 1987 13 DOS based virtual DOS machines were also present in Windows 3 0 3 1x and Windows for Workgroups 3 1x running in 386 Enhanced Mode as well as in Windows 95 98 98 SE and ME One of the characteristics of these solutions running on top of DOS is that the memory layout shown inside virtual DOS machines are virtual instances of the DOS system and DOS driver configuration run before the multitasker is loaded and that requests which cannot be handled in protected mode are passed down into the system domain to be executed by the underlying DOS system Similar to Windows 3 x 386 Enhanced Mode in architecture EMM386 3 xx of Novell DOS 7 1 14 Caldera OpenDOS 7 01 14 15 DR DOS 7 02 16 and later also uses DOS based VDMs to support pre emptive multitasking of multiple DOS applications when the EMM386 MULTI option is used 14 15 16 This component has been under development at Digital Research Novell since 1991 nb 1 under the codename Vladivar originally a separate device driver KRNL386 SYS 1 14 instead of a module of EMM386 While primarily developed for the next major version of DR DOS released as Novell DOS 7 in 1994 1 14 it was also used in the never released DR DOS Panther and Star Trek project in 1992 1993 OS 2 MVDM editMultiple virtual DOS machines MVDM are used in OS 2 2 0 and later since 1992 1 4 OS 2 MVDMs are considerably more powerful than NTVDM For example block devices are supported and various DOS versions can be booted into an OS 2 MVDM 17 While the OS 2 1 x DOS box was based on DOS 3 0 OS 2 2 x MVDMs emulate DOS 5 0 1 Seamless integration of Windows 3 1 and later Win32s applications in OS 2 is a concept looking similar on surface to the seamless integration of XP Mode based on Windows Virtual PC in Windows 7 A redirector in a guest VDM or NTVDM allows access on the disks of the OS 2 or NT host Applications in a guest can use named pipes for communication with their host 18 Due to a technical limitation DOS and 16 bit Windows applications under OS 2 were unable to see more than 2 GB of hard drive space 19 this was fixed in ArcaOS 5 0 4 20 Windows NTVDM edit nbsp COMMAND COM running in the NTVDM of Windows 10NTVDM was a system component of all IA 32 editions of the Windows NT family since 1993 with the release of Windows NT 3 1 It allows execution of 16 bit Windows and 16 bit 32 bit DOS applications The Windows NT 32 bit user mode executable which forms the basis for a single DOS or Windows 3 x environment is called ntvdm exe 1 In order to execute DOS programs NTVDM loads NTIO SYS which in turn loads NTDOS SYS which executes a modified COMMAND COM in order to run the application that was passed to NTVDM as command line argument The 16 bit real mode system files are stripped down derivations of their MS DOS 5 0 equivalents IO SYS MSDOS SYS and COMMAND COM 1 with all hard wired assumptions on the FAT file system removed and using the invalid opcode 0xC4 0xC4 to bop down into the 32 bit NTVDM to handle the requests 1 Originally NTDOS reported a DOS version of 30 00 to programs 1 but this was soon changed to report a version of 5 00 at span class nf INT span span class w span span class mi 21 span span class no h span span class err span span class no AH span span class err span span class mi 30 span span class no h span and 5 50 at span class nf INT span span class w span span class mi 21 span span class no h span span class err span span class no AX span span class err span span class mi 3306 span span class no h span to allow more programs to run unmodified 1 This holds true even in the newest releases of Windows many additional MS DOS functions and commands introduced in MS DOS versions 6 x and in Windows 9x are missing 16 bit Windows applications by default all run in their own thread within a single NTVDM process Although NTVDM itself is a 32 bit process and pre emptively multitasked with respect to the rest of the system the 16 bit applications within it are cooperatively multitasked with respect to each other When the Run in separate memory space option is checked in the Run box or the application s shortcut file each 16 bit Windows application gets its own NTVDM process and is therefore pre emptively multitasked with respect to other processes including other 16 bit Windows applications NTVDM emulates BIOS calls and tables as well as the Windows 3 1 kernel and 16 bit API stubs 21 The 32 bit WoW translation layer thunks 16 bit API routines 32 bit DOS emulation is present for DOS Protected Mode Interface DPMI and 32 bit memory access This layer converts the necessary extended and expanded memory calls for DOS functions into Windows NT memory calls wowexec exe is the emulation layer that emulates 16 bit Windows Windows 2000 and Windows XP added Sound Blaster 2 0 emulation 22 16 bit virtual device drivers and DOS block device drivers e g RAM disks are not supported Inter process communication with other subsystems can take place through OLE DDE and named pipes Since virtual 8086 mode is not available on non x86 based processors more specifically MIPS DEC Alpha and PowerPC NTVDM was instead implemented as a full emulator in these versions of NT using code licensed from Insignia s SoftPC 23 1 Up to Windows NT 3 51 only 80286 emulation was available With Windows NT 4 0 486 emulation was added 24 NTVDM is not included with 64 bit versions of Windows or ARM32 based versions such as Windows RT or Windows 10 IoT Core Windows 10 is the final version of Windows to include this component as Windows 11 dropped support for 32 bit processors Commands edit The following list of commands is part of the Windows XP MS DOS subsystem 18 APPEND DEBUG EDIT EDLIN EXE2BIN FASTOPEN FORCEDOS GRAPHICS LOADFIX LOADHIGH LH MEM NLSFUNC SETVER SHARE Security issue edit In January 2010 Google security researcher Tavis Ormandy revealed a serious security flaw in Windows NT s VDM implementation that allowed unprivileged users to escalate their privileges to SYSTEM level noted as applicable to the security of all x86 versions of the Windows NT kernel since 1993 This included all 32 bit versions of Windows NT 2000 XP Server 2003 Vista Server 2008 and Windows 7 25 Ormandy published a proof of concept exploit for the vulnerability 26 Prior to Microsoft s release of a security patch the workaround for this issue was to turn off 16 bit application support which prevented older programs those written for DOS and Windows 3 1 from running 64 bit versions of Windows are not affected since the NTVDM subsystem is not included 27 28 Once the Microsoft security patches had been applied to the affected operating systems the VDM could be safely reenabled nb 2 Limitations edit A limitation exists in the Windows XP 16 bit subsystem but not in earlier versions of Windows NT because of the raised per session limit for GDI objects which causes GDI handles to be shifted to the right by two bits when converting them from 32 to 16 bits 29 As a result the actual handle cannot be larger than 14 bits and consequently 16 bit applications that happen to be served a handle larger than 16384 by the GDI system crash and terminate with an error message 29 In general VDM and similar technologies do not satisfactorily run most older DOS games on today s computers Emulation is only provided for the most basic peripherals often implemented incompletely citation needed For example sound emulation in NTVDM is very limited NT family versions of Windows only update the real screen a few times per second when a DOS program writes to it and they do not emulate higher resolution graphics modes Because software mostly runs native at the speed of the host CPU all timing loops will expire prematurely This either makes a game run much too fast or causes the software not even to notice the emulated hardware peripherals because it does not wait long enough for an answer Absence in x64 and AArch64 architectures edit In an x86 64 CPU virtual 8086 mode is available as a sub mode only in its legacy mode for running 16 and 32 bit operating systems not in the native 64 bit long mode 30 NTVDM is not supported on x86 64 editions of Windows 31 including DOS programs 32 because NTVDM uses VM86 CPU mode instead of the Local Descriptor Table in order to enable 16 bits segment required for addressing 33 NTVDM is also unavailable on AArch64 versions of Windows such as Windows RT because Microsoft did not release a full emulator for this incompatible instruction set like it did on previous incompatible architectures Whilst NTVDM is not supported on x86 64 and AArch64 versions of Windows they can still be run using virtualization software such as Windows XP Mode in non home versions of Windows 7 or VMware Workstation Other methods include using NTVDMx64 34 an unofficial port of the emulated implementation of NTVDM from the leaked Windows NT 4 0 source code for non x86 platforms 23 or OTVDM WineVDM a 16 bit Windows interpreter based on MAME s i386 emulation and the 16 bit portion of the popular Windows compatibility layer Wine 35 See also editComparison of platform virtualization software DESQview 386 since 1988 Wine software DOSBox DOSEMU Merge software List of Microsoft Windows components Hypervisor Windows on Windows WoW Virtual machine VM Notes edit KRNL386 SYS of DR DOS Panther has copyright strings 1991 1992 A disabled VDM could be reenabled by setting the corresponding registry key back to HKEY LOCAL MACHINE SOFTWARE Policies Microsoft Windows AppCompat VDMDisallowed dword 00000000 References edit a b c d e f g h i j k l m Schulman Andrew Brown Ralf D Maxey David Michels Raymond J Kyle Jim 1994 November 1993 Undocumented DOS A programmer s guide to reserved MS DOS functions and data structures expanded to include MS DOS 6 Novell DOS and Windows 3 1 2 ed Reading Massachusetts Addison Wesley ISBN 0 201 63287 X xviii 856 vi pages 3 5 inch floppy Errata 1 2 a b Concurrent DOS 286 Challenges Unix BYTE Magazine 10 5 375 377 May 1985 Archived from the original on 2018 09 14 Retrieved 2017 01 23 3 Concurrent DOS 68K 1 2 Developer Kit for Motorola VME 10 Disk 2 1986 08 06 1986 04 08 Retrieved 2018 09 13 NB This package also includes some header files from Concurrent DOS 286 including STRUCT H explicitly mentioning LOADALL for 8086 emulation a b Deitel Harvey M Kogan Michael S 1992 The Design of OS 2 Addison Wesley ISBN 0 201 54889 5 Foster Edward 1985 05 13 Super DOS awaits new 80286 Concurrent DOS 286 delayed until Intel upgrades chip offers Xenix s power and IBM PC compatibility InfoWorld InfoWorld Media Group 7 19 17 18 ISSN 0199 6649 Archived from the original on 2019 04 03 Retrieved 2019 04 03 Foster Edward 1985 08 26 Intel shows new 80286 chip Future of DRI s Concurrent DOS 286 still unclear after processor fixed InfoWorld InfoWorld Media Group 7 34 21 ISSN 0199 6649 Archived from the original on 2019 04 03 Retrieved 2019 04 03 FlexOS Supplement for Intel iAPX 286 based Computers PDF 1 3 1 ed Digital Research Inc November 1986 Archived PDF from the original on 2019 04 03 Retrieved 2018 08 14 CBR ed 1987 01 15 Digital Research launches FlexOS 286 Real Time Manufacturing Operating System Computer Business Review Archived from the original on 2013 01 18 Retrieved 2018 09 15 Calvo Melissa Forbes Jim 1986 02 10 IBM to use a DRI operating system InfoWorld Archived from the original on 2019 04 03 Retrieved 2011 09 06 IBM selects Concurrent DOS 286 for PC AT retail system PDF European Review Digital Research 18 1 March 1986 Archived PDF from the original on 2019 04 03 Retrieved 2018 09 15 Weiss Jiri 1987 02 16 DRI To Release Multiuser 80386 Operating System InfoWorld 9 7 1 8 Archived from the original on 2019 04 03 Retrieved 2017 01 22 4 CBR ed 1987 06 03 Digital Research shows off Real Time FlexOS 386 Computer Business Review Archived from the original on 2013 06 28 Retrieved 2011 09 06 Necasek Michal 2011 05 21 Windows 386 2 01 OS 2 Museum Archived from the original on 2019 04 03 Retrieved 2019 04 02 a b c d e Paul Matthias R 1997 07 30 1994 05 01 NWDOS TIPs Tips amp Tricks rund um Novell DOS 7 mit Blick auf undokumentierte Details Bugs und Workarounds Release 157 in German 3 ed Archived from the original on 2016 11 03 Retrieved 2014 09 06 a href Template Cite book html title Template Cite book cite book a work ignored help NB NWDOSTIP TXT is a comprehensive work on Novell DOS 7 and OpenDOS 7 01 including the description of many undocumented features and internals It is part of the author s yet larger MPDOSTIP ZIP collection maintained up to 2001 and distributed on many sites at the time The provided link points to a HTML converted older version of the NWDOSTIP TXT file mpdostip zip a b OpenDOS Developer s Reference Series OpenDOS Multitasking API Guide Programmer s Guide UK Caldera Inc August 1997 Caldera Part No 200 DOMG 004 Archived from the original on 2017 09 10 Retrieved 2016 11 02 a b Caldera DR DOS 7 02 User Guide Caldera Inc 1998 1993 1997 Archived from the original on 2016 11 05 Retrieved 2014 09 06 OS 2 Workplace Shell Configuration Techniques PDF IBM redbook 1994 pp 68 80 Archived from the original PDF on 2012 03 20 Retrieved 2011 07 05 a b MS DOS subsystem commands Microsoft Why can t my DOS and Win OS 2 sessions see more than 2 GB of free space Arca Noae LLC Archived from the original on 2021 07 07 Retrieved 2020 09 03 ArcaOS Release Notes 2020 08 31 2017 05 15 Archived from the original on 2021 03 16 Retrieved 2020 09 03 Chapter 27 Windows Compatibility and Migration Windows NT 4 0 Resource Kit Microsoft 2014 02 20 Retrieved 2017 07 19 Schulman Jerold 2002 12 04 How do I troubleshoot MS DOS programs running on Windows XP ITPro Windows Retrieved 2017 07 19 a b leecher1337 ntvdmx64 GitHub Retrieved 2018 11 03 Edward Mendelson s additional documentation INFO How Windows handles floating point calculations Microsoft Support 2006 11 21 Archived from the original on 2013 02 24 Retrieved 2017 07 19 Microsoft Security Bulletin MS10 015 Important Vulnerabilities in Windows Kernel Could Allow Elevation of Privilege 977165 Security TechCenter Microsoft 2010 03 17 Retrieved 2012 11 02 Ormandy Tavis 2010 01 19 Microsoft Windows NT GP Trap Handler Allows Users to Switch Kernel Stack CVE 2010 0232 Full disclosure Retrieved 2013 04 13 Farrell Nick 2010 01 20 Ancient Windows flaw found after 17 years The Inquirer Incisive Archived from the original on 2010 01 23 Retrieved 2010 01 21 a href Template Cite web html title Template Cite web cite web a CS1 maint unfit URL link Microsoft Security Advisory 979682 Vulnerability in Windows Kernel Could Allow Elevation of Privilege TechNet Microsoft 2010 01 20 Retrieved 2010 01 21 a b The Win 16 Subsystem has insufficient resources to continue running problem on Windows XP Intel 64 and IA 32 Architectures Software Developer s Manual Combined Volumes 1 2A 2B 2C 3A 3B and 3C PDF PDF Intel June 2013 1997 325462 047US Retrieved 2013 07 02 Klein Helge 2008 03 11 Windows x64 All the Same Yet Very Different Part 5 NTVDM Services WoW64 Retrieved 2013 07 21 List of limitations in 64 Bit Windows Microsoft Corporation 2007 10 11 Retrieved 2017 07 19 modify ldt 2 Linux Programmer s Manual Retrieved 2019 07 21 NTVDMx64 by Leecher1337 www columbia edu Retrieved 2023 03 25 Winevdm GitHub Retrieved 2019 07 21 Edward Mendelson s additional documentationFurther reading editPietrek Matt August 1998 Under The Hood Microsoft Systems Journal Archived from the original on 2017 07 13 Retrieved 2020 01 22 via bytepointer com External links editVirtual DOS Machine Structure Troubleshooting MS DOS based programs in Windows XP Troubleshooting an MS DOS application which hangs the NTVDM subsystem in Windows XP and Windows Server 2003 Troubleshooting MS DOS based serial communication programs in Windows 2000 and later MS DOS Player for Win32 x64 a Microsoft MS DOS Emulator runs many command line DOS programs like compilers or other tools also packaged into one stand alone executable file vDOS a DOS emulator designed for the running the more serious DOS apps not games on 64 bit NT systems effectively a replacement for NTVDM on modern systems Retrieved from https en wikipedia org w index php title Virtual DOS machine amp oldid 1181210844 8086 emulation, wikipedia, wiki, book, books, library,

article

, read, download, free, free download, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, picture, music, song, movie, book, game, games.