Open main menu
Home
Random
Recent changes
Special pages
Community portal
Preferences
About Wikipedia
Disclaimers
Incubator escapee wiki
Search
User menu
Talk
Dark mode
Contributions
Create account
Log in
Editing
Virtual DOS machine
Warning:
You are not logged in. Your IP address will be publicly visible if you make any edits. If you
log in
or
create an account
, your edits will be attributed to your username, along with other benefits.
Anti-spam check. Do
not
fill this in!
{{Short description|Subsystem for 32-bit Windows for running 16-bit DOS & Windows programs}} {{Use dmy dates|date=June 2019|cs1-dates=y}} {{Use list-defined references|date=December 2021}} '''Virtual DOS machines''' ('''VDM''') refer to a technology that allows running 16-bit/32-bit [[DOS]] and [[Windows 3.1x|16-bit Windows]] programs when there is already another [[operating system]] running and controlling the hardware. ==Overview== Virtual DOS machines can operate either exclusively through typical [[Emulator|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 [[Exception handling|exception]]s). The operating system can then perform an emulation and resume the execution of the DOS software. VDMs generally also implement support for running [[16-bit]] and [[32-bit]] [[protected mode]] software ([[DOS extender]]s), which has to conform to the [[DOS Protected Mode Interface]] (DPMI).<ref name="Schulman_1994_Undocumented-DOS"/> When a DOS program running inside a VDM needs to access a peripheral, [[Microsoft Windows|Windows]] will either allow this directly (rarely), or will present the DOS program with a [[Device driver#Virtual device drivers|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 [[Intel 8254|8254]] timer chips, the 8237 DMA controller, etc.<ref name="Schulman_1994_Undocumented-DOS"/> =={{anchor|8086 emulation}}Concurrent DOS 8086 emulation mode== In January 1985 [[Digital Research]] together with Intel previewed [[Concurrent DOS 286 1.0]],<ref name="BYTE_1985_CDOS286"/> a version of [[Concurrent DOS]] capable of running real mode DOS programs in the [[80286]]'s protected mode.<ref name="BYTE_1985_CDOS286"/> 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 [[286 LOADALL|LOADALL]] processor instruction,<ref name="DRI_1986_CDOS68K-2"/><ref name="Deitel_1992"/> it was too slow to be practical. [[Microcode]] changes for the E-2 stepping improved the speed again.<ref name="Infoworld_1985_Super"/><ref name="Infoworld_1985_80286"/> 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.<ref name="DRI_1986_FlexOS286"/><ref name="CBR_1987_FlexOS-286"/> It was also licensed by [[IBM]] for their [[4680 OS]] in 1986.<ref name="InfoWorld_1986_Concurrent"/><ref name="DRI_1986_IBM"/> 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)<ref name="Weiss_1987"/> and [[FlexOS 386 1.0]] (June 1987).<ref name="CBR_1987_FlexOS"/> 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== 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.<ref name="Win386_201"/> DOS-based virtual DOS machines were also present in [[Windows 3.0]], [[Windows 3.1x|3.1x]] and [[Windows for Workgroups|Windows for Workgroups 3.1x]] running in [[386 Enhanced Mode]] as well as in [[Windows 95]], [[Windows 98|98]], [[Windows 98 SE|98 SE]] and [[Windows ME|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]],<ref name="Schulman_1994_Undocumented-DOS"/><ref name="Paul_1997_NWDOSTIP"/> [[Caldera OpenDOS 7.01]],<ref name="Paul_1997_NWDOSTIP"/><ref name="Caldera_1997_Multi"/> [[DR-DOS 7.02]]<ref name="Caldera_1998_USER"/> (and later) also uses DOS-based VDMs to support pre-emptive multitasking of multiple DOS applications, when the <kbd>EMM386 /MULTI</kbd> option is used.<ref name="Paul_1997_NWDOSTIP"/><ref name="Caldera_1997_Multi"/><ref name="Caldera_1998_USER"/> This component has been under development at [[Digital Research]] / [[Novell]] since 1991<ref group="nb" name="NB_Panther"/> under the codename "Vladivar" (originally a separate device driver <kbd>KRNL386.SYS</kbd><ref name="Schulman_1994_Undocumented-DOS"/><ref name="Paul_1997_NWDOSTIP"/> instead of a module of EMM386). While primarily developed for the next major version of DR DOS, released as Novell DOS 7 in 1994,<ref name="Schulman_1994_Undocumented-DOS"/><ref name="Paul_1997_NWDOSTIP"/> it was also used in the never released [[DR DOS "Panther"]] and "[[Star Trek project|Star Trek]]" project in 1992/1993. =={{anchor|MVDM}}OS/2 MVDM== Multiple virtual DOS machines (MVDM) are used in [[OS/2 2.0]] and later since 1992.<ref name="Schulman_1994_Undocumented-DOS"/><ref name="Deitel_1992"/> OS/2 MVDMs are considerably more powerful than [[#NTVDM|NTVDM]]. For example, block devices are supported, and various DOS versions can be booted into an OS/2 MVDM.<ref name="IBM_WorkplaceShell"/> While the OS/2 1.x DOS box was based on DOS 3.0, OS/2 2.x MVDMs emulate DOS 5.0.<ref name="Schulman_1994_Undocumented-DOS"/> Seamless integration of [[Windows 3.1x|Windows 3.1]] and later [[Win32s]] applications in OS/2 is a concept looking similar on surface<!-- but using considerably different technology --> 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".<ref name="Microsoft_490895"/> 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;<ref name="Arca_2020_1"/> this was fixed in [[ArcaOS]] 5.0.4.<ref name="Arca_2020_2"/> =={{anchor|NTVDM|NTDOS}}Windows NTVDM== [[File:Command.com Win10.png|thumb|[[COMMAND.COM]] running in the NTVDM of [[Windows 10]]]] NTVDM is 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.1x|Windows 3.x]]) environment is called {{mono|ntvdm.exe}}.<ref name="Schulman_1994_Undocumented-DOS"/> In order to execute DOS programs, NTVDM loads {{mono|[[NTIO.SYS]]}} which in turn loads {{mono|[[NTDOS.SYS]]}}, which executes a modified {{mono|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 {{mono|[[IO.SYS]]}}, {{mono|[[MSDOS.SYS]]}} and {{mono|[[COMMAND.COM]]}}<ref name="Schulman_1994_Undocumented-DOS"/> with all hard-wired assumptions on the [[FAT file system]] removed and using the [[invalid opcode]] 0xC4 0xC4 to [[BIOS operation|bop]] down into the 32-bit NTVDM to handle the requests.<ref name="Schulman_1994_Undocumented-DOS"/> Originally, NTDOS reported a DOS version of 30.00 to programs,<ref name="Schulman_1994_Undocumented-DOS"/> but this was soon changed to report a version of 5.00 at {{code|2=asm|1=INT 21h/AH=30h}} and 5.50 at {{code|2=asm|1=INT 21h/AX=3306h}} to allow more programs to run unmodified.<ref name="Schulman_1994_Undocumented-DOS"/> 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.<ref name="Microsoft_27"/> The 32-bit [[Windows on Windows|WoW]] translation layer [[thunk]]s 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. {{mono|wowexec.exe}} is the emulation layer that emulates 16-bit Windows. [[Windows XP]] added [[Sound Blaster]] 2.0 emulation.<ref name="itPro_2002"/> 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 [[Object Linking and Embedding|OLE]], [[Dynamic Data Exchange|DDE]] and [[named pipe]]s. Since virtual 8086 mode is not available on non-[[x86]]-based processors (more specifically, [[MIPS architecture|MIPS]], [[DEC Alpha]], and [[PowerPC]]) NTVDM is instead implemented as a full emulator in these versions of NT, using code licensed from Insignia's [[SoftPC]].<ref name="Schulman_1994_Undocumented-DOS"/> Up to [[Windows NT 3.51]], only 80286 emulation is available. With [[Windows NT 4.0]], [[Intel 80486|486]] emulation was added.<ref name="Microsoft_2006"/> NTVDM is not included with 64-bit versions of Windows or ARM32 based versions such as [[Windows RT]] or Windows 10 IoT Core. The last version of Windows to include the component is [[Windows 10]], as Windows 11 dropped support for [[32-bit computing|32-bit]] processors. ===Commands=== The following [[command (computing)|commands]] are part of the Windows XP MS-DOS subsystem.<ref name="Microsoft_490895"/> {{div col|colwidth=9em}} * [[APPEND (DOS command)|APPEND]] * [[DEBUG (DOS command)|DEBUG]] * [[MS-DOS Editor|EDIT]] * [[Edlin|EDLIN]] * [[EXE2BIN]] * [[FASTOPEN]] * [[FORCEDOS]] * [[GRAPHICS (DOS command)|GRAPHICS]] * [[LOADFIX (DOS command)|LOADFIX]] * [[LOADHIGH (DOS command)|LOADHIGH (LH)]] * [[MEM (DOS command)|MEM]] * [[NLSFUNC (DOS command)|NLSFUNC]] * [[VER (DOS command)|SETVER]] * [[SHARE (DOS command)|SHARE]] {{div col end}} ===Security issue=== 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 [[Superuser|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.<ref name="Microsoft_MS10-015"/> Ormandy published a [[Exploit (computer security)|proof-of-concept exploit]] for the vulnerability.<ref name="Ormandy_2010"/> 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.<ref name="inquirer"/><ref name="technet"/> Once the Microsoft security patches had been applied to the affected operating systems the VDM could be safely reenabled.<ref group="nb" name="VDMReg"/> ===Limitations=== 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.<ref name="XPVDM bug"/> 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.<ref name="XPVDM bug"/> 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 |date=April 2010}}. 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=== 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]].<ref name="Intel_2013_Arch-Ref"/> NTVDM is not supported on x86-64 editions of Windows,<ref name="Klein_2008"/> including DOS programs,<ref name="Microsoft_2007_Limitations"/> because NTVDM uses VM86 CPU mode instead of the Local Descriptor Table in order to enable 16βbits segment required for addressing.<ref name="modify_ldt"/> NTVDM is also unavailable on [[AArch64]] (or ARM64) 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. {{anchor|x64alt}}While 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 [[ReactOS]]-derived NTVDM,<ref name="dosEx64"/> 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 (software)|Wine]] (see the section on WineVDM below).<ref name="Otvdm"/> ==WineVDM== A VDM is included in [[Wine (software)|Wine]] and [[CrossOver]] for Linux and Mac OS X, known as WineVDM (also known as OTVDM). It has also been ported to Windows itself, as 64-bit versions of Windows do not include the NTVDM subsystem (see above).<ref>{{cite web | url=https://github.com/otya128/winevdm | title=Otya128/Winevdm | website=[[GitHub]] }}</ref> ==See also== * [[Comparison 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== {{reflist|group="nb"|refs= <ref group="nb" name="NB_Panther">KRNL386.SYS of [[DR DOS "Panther"]] has copyright strings "1991,1992".</ref> <ref group="nb" name="VDMReg">A disabled VDM could be reenabled by setting the corresponding registry key back to <code>"HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\AppCompat\VDMDisallowed"=dword:00000000</code>.</ref> }} ==References== {{reflist|refs= <ref name="BYTE_1985_CDOS286">{{cite journal |title=Concurrent DOS-286 Challenges Unix |journal=[[BYTE Magazine]] |date=May 1985 |volume=10 |number=5 |pages=375β377<!-- plus more --> |url=http://tech-insider.org/personal-computers/research/1985/05.html |access-date=2017-01-23 |url-status=live |archive-url=https://archive.today/20180914120059/https://tech-insider.org/personal-computers/research/1985/05.html |archive-date=2018-09-14}} [https://archive.org/stream/byte-magazine-1985-05/1985_05_BYTE_10-05_Multiprocessing#page/n376/mode/1up/search/concurrent]</ref> <ref name="Infoworld_1985_Super">{{cite journal |author-first=Edward |author-last=Foster |title=Super DOS awaits new 80286 β Concurrent DOS 286 β delayed until Intel upgrades chip β offers Xenix's power and IBM PC compatibility |publisher=[[InfoWorld Media Group]] |journal=[[InfoWorld]] |volume=7 |issue=19 |date=1985-05-13 |issn=0199-6649 |pages=17β18 |url=https://books.google.com/books?id=2y4EAAAAMBAJ&pg=PA17 |access-date=2019-04-03 |url-status=live |archive-url=https://archive.today/20190403192822/https://books.google.ru/books?id=2y4EAAAAMBAJ&lpg=PA57&pg=PA17&redir_esc=y%23v=onepage&q&f=false |archive-date=2019-04-03}}</ref> <ref name="Infoworld_1985_80286">{{cite journal |author-first=Edward |author-last=Foster |title=Intel shows new 80286 chip β Future of DRI's Concurrent DOS 286 still unclear after processor fixed |publisher=[[InfoWorld Media Group]] |journal=[[InfoWorld]] |volume=7 |issue=34 |date=1985-08-26 |issn=0199-6649 |page=21 |url=https://books.google.com/books?id=_y4EAAAAMBAJ&pg=PA21 |access-date=2019-04-03 |url-status=live |archive-url=https://archive.today/20190403192856/https://books.google.com.co/books?id=_y4EAAAAMBAJ&lpg=PA21&pg=PA21&redir_esc=y%23v=onepage&q&f=false |archive-date=2019-04-03}}</ref> <ref name="DRI_1986_CDOS68K-2">{{cite web |title=Concurrent DOS 68K 1.2 - Developer Kit for Motorola VME/10 - Disk 2 |date=1986-08-06 |orig-year=1986-04-08 |url=http://www.cpm.z80.de/download/cdos2.zip |access-date=2018-09-13 }} (NB. This package also includes some header files from [[Concurrent DOS 286]], including STRUCT.H explicitly mentioning [[LOADALL]] for "8086 emulation".)</ref> <ref name="DRI_1986_FlexOS286">{{cite book |title=FlexOS Supplement for Intel iAPX 286-based Computers |publisher=[[Digital Research, Inc.]] |date=November 1986 |edition=1 |version=1.3 |url=http://www.bitsavers.org/pdf/digitalResearch/flexos/FlexOS_Suppliment_For_iAPX286_Computers_Nov86.pdf |access-date=2018-08-14 |url-status=live |archive-url=https://archive.today/20190403192904/http://www.bitsavers.org/pdf/digitalResearch/flexos/FlexOS_Suppliment_For_iAPX286_Computers_Nov86.pdf |archive-date=2019-04-03}}</ref> <ref name="CBR_1987_FlexOS-286">{{cite journal |title=Digital Research launches FlexOS 286 Real-Time Manufacturing Operating System |editor=CBR |journal=Computer Business Review |date=1987-01-15 |url=http://www.cbronline.com/news/digital_research_launches_flexos_286_real_time_manufacturing_operating_system |access-date=2018-09-15 |url-status=live |archive-url=https://archive.today/20130118190950/http://www.cbronline.com/news/digital_research_launches_flexos_286_real_time_manufacturing_operating_system |archive-date=2013-01-18}}</ref> <ref name="Caldera_1997_Multi">{{cite book |publisher=[[Caldera, Inc.]] |date=August 1997 |title=OpenDOS Developer's Reference Series — OpenDOS Multitasking API Guide — Programmer's Guide |location=UK |id=Caldera Part No. 200-DOMG-004 |url=http://www.drdos.net/documentation/multtask/01mtch1.htm#651 |access-date=2016-11-02 |url-status=dead |archive-url=https://web.archive.org/web/20170910173003/http://www.drdos.net/documentation/multtask/01mtch1.htm |archive-date=2017-09-10}}</ref> <ref name="Caldera_1998_USER">{{cite book |publisher=[[Caldera, Inc.]] |date=1998 |orig-year=1993, 1997 |title=Caldera DR-DOS 7.02 User Guide |url=http://www.drdos.net/documentation/usergeng/uglontoc.htm |access-date=2014-09-06 |archive-url=https://web.archive.org/web/20161105114931/http://www.drdos.net/documentation/usergeng/uglontoc.htm |archive-date=2016-11-05 |url-status=dead}}</ref> <ref name="Paul_1997_NWDOSTIP">{{cite web |title=NWDOS-TIPs — Tips & Tricks rund um Novell DOS 7, mit Blick auf undokumentierte Details, Bugs und Workarounds |work=MPDOSTIP |author-first=Matthias R. |author-last=Paul |date=1997-07-30 |orig-year=1994-05-01 |edition=3 |version=Release 157 |language=de |url=http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm |access-date=2014-09-06 |url-status=live |archive-url=https://web.archive.org/web/20161103164532/http://www.antonis.de/dos/dos-tuts/mpdostip/html/nwdostip.htm |archive-date=2016-11-03}} (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<!-- still named TIPS_MP.ZIP between 1991 and 1996-11 --> 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.) [https://web.archive.org/web/20190601152204/https://www.sac.sk/download/text/mpdostip.zip mpdostip.zip<!-- A yet older version 155 from 1997-05-13 of the 1997-07-15 distribution archive. -->]</ref> <ref name="IBM_WorkplaceShell">{{cite web |url=http://www.redbooks.ibm.com/pubs/pdfs/redbooks/gg244201.pdf |title=OS/2 Workplace Shell Configuration Techniques |date=1994 |publisher=[[IBM]] redbook |access-date=2011-07-05 |pages=68β80 |archive-url=https://web.archive.org/web/20120320053911/http://www.redbooks.ibm.com/pubs/pdfs/redbooks/gg244201.pdf |archive-date=2012-03-20 |url-status=dead}}</ref> <ref name="Schulman_1994_Undocumented-DOS">{{cite book |author-first1=Andrew |author-last1=Schulman |author-first2=Ralf D. |author-last2=Brown |author-link2=Ralf D. Brown |author-first3=David |author-last3=Maxey |author-first4=Raymond J. |author-last4=Michels |author-first5=Jim |author-last5=Kyle |title=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 |publisher=[[Addison Wesley]] |edition=2 |date=1994 |orig-year=November 1993<!-- first printing --> |isbn=0-201-63287-X |location=Reading, Massachusetts |url=https://archive.org/details/undocumenteddosp00andr_0 }} (xviii+856+vi pages, 3.5-inch floppy) Errata: [https://web.archive.org/web/20190417215556/http://www.cs.cmu.edu/afs/cs/user/ralf/pub/books/UndocumentedDOS/errata.ud2][https://web.archive.org/web/20190417212906/https://www.pcjs.org/pubs/pc/programming/Undocumented_DOS/#errata-2nd-edition]</ref> <ref name="Microsoft_27">{{cite web |url=https://technet.microsoft.com/en-us/library/cc768131.aspx |title=Chapter 27 - Windows Compatibility and Migration |work=Windows NT 4.0 Resource Kit |date=20 February 2014 |publisher=[[Microsoft]] |access-date=2017-07-19}}</ref> <ref name="itPro_2002">{{cite web |url=http://windowsitpro.com/windows/jsi-tip-6041-how-do-i-troubleshoot-ms-dos-programs-running-windows-xp |title=How do I troubleshoot MS-DOS programs running on Windows XP? |website=ITPro Windows |author-last1=Schulman |author-first1=Jerold |date=2002-12-04 |access-date=2017-07-19}}</ref> <ref name="Microsoft_2006">{{cite web |url=http://support.microsoft.com/kb/102555 |title=INFO: How Windows handles floating-point calculations |date=2006-11-21 |website=Microsoft Support |archive-url=https://web.archive.org/web/20130224112735/http://support.microsoft.com/kb/102555 |archive-date=2013-02-24 |access-date=2017-07-19}}</ref> <ref name="Microsoft_MS10-015">{{cite web |url=https://technet.microsoft.com/en-us/security/bulletin/ms10-015 |title=Microsoft Security Bulletin MS10-015 - Important: Vulnerabilities in Windows Kernel Could Allow Elevation of Privilege (977165) |date=2010-03-17 |work=Security TechCenter |publisher=[[Microsoft]] |access-date=2012-11-02}}</ref> <ref name="Ormandy_2010">{{cite web |url=https://seclists.org/fulldisclosure/2010/Jan/341 |title=Microsoft Windows NT #GP Trap Handler Allows Users to Switch Kernel Stack |author-first=Tavis |author-last=Ormandy |date=2010-01-19 |publisher=[[Full disclosure (mailing list)|Full-disclosure]] |work=[[Common Vulnerabilities and Exposures|CVE-2010-0232]] |access-date=2013-04-13}}</ref> <ref name="inquirer">{{cite web |url=http://www.theinquirer.net/inquirer/news/1587918/ancient-windows-flaw |archive-url=https://web.archive.org/web/20100123010656/http://www.theinquirer.net/inquirer/news/1587918/ancient-windows-flaw |url-status=unfit |archive-date=23 January 2010 |title=Ancient Windows flaw found after 17 years |author-last=Farrell |author-first=Nick |date=2010-01-20 |work=[[The Inquirer]] |publisher=Incisive |access-date=2010-01-21}}</ref> <ref name="technet">{{cite web |url=http://www.microsoft.com/technet/security/advisory/979682.mspx |title=Microsoft Security Advisory (979682): Vulnerability in Windows Kernel Could Allow Elevation of Privilege |date=2010-01-20 |work=TechNet |publisher=[[Microsoft]] |access-date=2010-01-21}}</ref> <ref name="XPVDM bug">[http://www.vttoth.com/wow32.htm The "Win 16 Subsystem has insufficient resources to continue running" problem on Windows XP]</ref> <ref name="Intel_2013_Arch-Ref">{{cite book |title=Intel 64 and IA-32 Architectures Software Developer's Manual Combined Volumes: 1, 2A, 2B, 2C, 3A, 3B, and 3C |publisher=[[Intel]] |date=June 2013 |orig-year=1997 |id=325462-047US |url=http://download.intel.com/products/processor/manual/325462.pdf |type=PDF |access-date=2013-07-02}}</ref> <ref name="Klein_2008">{{cite web |author-last=Klein |author-first=Helge |title=Windows x64 - All the Same Yet Very Different, Part 5: NTVDM, Services, WoW64 |url=http://helgeklein.com/blog/2008/03/windows-x64-all-the-same-yet-very-different-part-5/ |access-date=2013-07-21 |date=2008-03-11}}</ref> <ref name="Microsoft_2007_Limitations">{{cite web |title=List of limitations in 64-Bit Windows |url=http://support.microsoft.com/kb/282423 |publisher=Microsoft Corporation |access-date=2017-07-19 |date=2007-10-11}}</ref> <ref name="modify_ldt">{{cite web |title=modify_ldt(2) |url=http://man7.org/linux/man-pages/man2/modify_ldt.2.html#NOTES |work=Linux Programmer's Manual|access-date=2019-07-21}}</ref> <ref name="dosEx64">{{Cite web |url=https://github.com/TheDeadFish/dosEx64 |title= NTVDM from ReactOS|website=GitHub |access-date=2018-11-03}}</ref> <ref name="Otvdm">{{Cite web |url=https://github.com/otya128/winevdm |title=Winevdm |website=GitHub |access-date=2019-07-21}} [http://www.columbia.edu/~em36/otvdm.html Edward Mendelson's additional documentation]</ref> <ref name="Weiss_1987">{{cite journal |title=DRI To Release Multiuser 80386 Operating System |author-first=Jiri |author-last=Weiss |journal=[[InfoWorld]] |volume=9 |issue=7 |date=1987-02-16 |pages=1, 8 |url=https://books.google.com/books?id=0DAEAAAAMBAJ&pg=PA1 |access-date=2017-01-22 |url-status=live |archive-url=https://archive.today/20190403203230/https://books.google.de/books?id=0DAEAAAAMBAJ&pg=PA1&lpg=PA1%23v=onepage&q&f=false |archive-date=2019-04-03}} [<!-- https://books.google.com/books?id=0DAEAAAAMBAJ&pg=PA8&lpg=PA1 -->https://archive.today/20190403203525/https://books.google.ru/books?id=0DAEAAAAMBAJ&pg=PA8&lpg=PA1&redir_esc=y%23v=onepage&q&f=false]</ref> <ref name="CBR_1987_FlexOS">{{cite journal |title=Digital Research shows off Real-Time FlexOS 386 |editor=CBR |journal=Computer Business Review |date=1987-06-03 |url=http://www.cbronline.com/news/digital_research_shows_off_real_time_flexos_386 |access-date=2011-09-06 |url-status=live |archive-url=https://archive.today/20130628213253/http://www.cbronline.com/news/digital_research_shows_off_real_time_flexos_386 |archive-date=2013-06-28}}</ref> <ref name="Deitel_1992">{{cite book |author-last1=Deitel |author-first1=Harvey M. |author-last2=Kogan |author-first2=Michael S. |title=The Design of OS/2 |date=1992 |publisher=[[Addison-Wesley]] |isbn=0-201-54889-5 |url=https://archive.org/details/designofos20000deit }}</ref> <ref name="InfoWorld_1986_Concurrent">{{cite journal |title=IBM to use a DRI operating system |author-first1=Melissa |author-last1=Calvo |author-first2=Jim |author-last2=Forbes |journal=[[InfoWorld ]]|date=1986-02-10 |url=https://books.google.com/books?id=oi8EAAAAMBAJ&pg=PA12 |access-date=2011-09-06 |url-status=live |archive-url=https://archive.today/20190403193009/https://books.google.ru/books?id=oi8EAAAAMBAJ&pg=PA12&redir_esc=y%23v=onepage&q&f=false |archive-date=2019-04-03}}</ref> <ref name="DRI_1986_IBM">{{cite journal |publisher=[[Digital Research]] |title=IBM selects Concurrent DOS-286 for PC AT retail system |journal=[[European Review (Digital Research)|European Review]] |date=March 1986 |issue=18 |page=1 |url=http://corphist.computerhistory.org/corphist/documents/doc-446a17c4d826e.pdf |access-date=2018-09-15 |url-status=live |archive-url=https://web.archive.org/web/20190403202425/http://corphist.computerhistory.org/corphist/documents/doc-446a17c4d826e.pdf |archive-date=2019-04-03}}</ref> <ref name="Win386_201">{{cite web |title=Windows/386 2.01 |date=2011-05-21 |author-first=Michal |author-last=Necasek |publisher=OS/2 Museum |url=http://www.os2museum.com/wp/windows386-2-01/ |access-date=2019-04-02 |url-status=live |archive-url=https://web.archive.org/web/20190403190927/http://www.os2museum.com/wp/windows386-2-01/ |archive-date=2019-04-03}}</ref> <ref name="Microsoft_490895">{{cite web |url=https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-xp/bb490895(v%3dtechnet.10) |title=MS-DOS subsystem commands |publisher=[[Microsoft]]}}</ref> <ref name="Arca_2020_1">{{cite web |title=Why can't my DOS and Win-OS/2 sessions see more than 2 GB of free space? |publisher=[[Arca Noae, LLC]] |url=https://www.arcanoae.com/faqwd/why-cant-my-dos-and-win-os-2-sessions-see-more-than-2gb-of-free-space/ |access-date=2020-09-03 |url-status=live |archive-url=https://web.archive.org/web/20210707205348/https://www.arcanoae.com/faqwd/why-cant-my-dos-and-win-os-2-sessions-see-more-than-2gb-of-free-space/ |archive-date=2021-07-07}}</ref> <ref name="Arca_2020_2">{{cite web |title=ArcaOS Release Notes |date=2020-08-31 |orig-date=2017-05-15 |url=https://www.arcanoae.com/wp-content/uploads/wiki/ArcaOS-changes.txt |access-date=2020-09-03 |url-status=live |archive-url=https://web.archive.org/web/20210316231512/https://www.arcanoae.com/wp-content/uploads/wiki/ArcaOS-changes.txt |archive-date=2021-03-16}}</ref> }} ==Further reading== * {{cite journal |author-first=Matt |author-last=Pietrek |author-link=Matt Pietrek |title=Under The Hood |date=August 1998 |journal=[[Microsoft Systems Journal]] |via=bytepointer.com |url=http://bytepointer.com/resources/pietrek_ntvdm.htm |access-date=2020-01-22 |url-status=live |archive-url=https://web.archive.org/web/20170713133231/http://bytepointer.com/resources/pietrek_ntvdm.htm |archive-date=2017-07-13}} ==External links== * [http://www.microsoft.com/technet/prodtechnol/windows2000serv/reskit/prork/pric_run_tzvh.mspx?mfr=true Virtual DOS Machine Structure] * [http://support.microsoft.com/kb/314106 Troubleshooting MS-DOS-based programs in Windows XP] * [http://www.markwilson.co.uk/blog/2005/01/troubleshooting-ms-dos-application.htm Troubleshooting an MS-DOS application which hangs the NTVDM subsystem in Windows XP and Windows Server 2003] * [http://www.adontec.com/commex_e.htm Troubleshooting MS-DOS-based serial communication programs in Windows 2000 and later] * [https://github.com/TheDeadFish/dosEx64 NTVDM from ReactOS], the custom standalone variant of NTVDM by [https://github.com/TheDeadFish Michael Stamper] (able to run windowed text mode MS-DOS software in 64 bit Windows NT systems, this NTVDM works by using the following syntax: ''ntvdm.exe program.exe'', like ''start'' command in Windows. * [http://takeda-toshiya.my.coocan.jp 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 standalone executable file. * [http://www.vdos.info/ 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). {{Windows Components}} [[Category:Virtualization]] [[Category:DOS technology]] [[Category:Windows administration]] [[Category:DOS emulators]] [[Category:Discontinued Windows components]]
Edit summary
(Briefly describe your changes)
By publishing changes, you agree to the
Terms of Use
, and you irrevocably agree to release your contribution under the
CC BY-SA 4.0 License
and the
GFDL
. You agree that a hyperlink or URL is sufficient attribution under the Creative Commons license.
Cancel
Editing help
(opens in new window)
Pages transcluded onto the current version of this page
(
help
)
:
Template:Anchor
(
edit
)
Template:Citation needed
(
edit
)
Template:Cite journal
(
edit
)
Template:Cite web
(
edit
)
Template:Code
(
edit
)
Template:Div col
(
edit
)
Template:Div col end
(
edit
)
Template:Mono
(
edit
)
Template:Reflist
(
edit
)
Template:Short description
(
edit
)
Template:Use dmy dates
(
edit
)
Template:Use list-defined references
(
edit
)
Template:Windows Components
(
edit
)