Talk:Virtual DOS machine
|WikiProject Microsoft Windows / Computing||(Rated Start-class)|
I'm sorry, but Windows XP does contain an NTVM.exe, located in the Windows system 32 directory.
[Timbo] Another thing is that Vista must have some sort of 16 bit VDM because 16 bit applications developed at my work run on Vista (Beta). I understand MS doesn't support 16 bit on Vista but it works. Anyone got an idea why this might be?
- Wild guess: WoW/NTVDM happen to work in your beta build of Vista. Since Microsoft says 16-bit will not be supported in Vista, I'm guessing they'll remove them before shipping Vista. It may also be the case that WoW/NTVDM actually continue to work even in the final version of Vista (but without being installed), and MS just decides not to give any official support anymore. After all, it's not like they'll deliberately break support for 16-bit, they just don't want to have it hanging around their necks anymore. JRM · Talk 22:53, 14 July 2006 (UTC)
[David Vallner] The Overview section seems wrong to me: I have had games in resolutions above 320x200 (specifically Legend Entertainment titles like Death Gate) run with the NTVDM on Windows XP, and problems with timing are very, very, very rare - the 386 and various variants of the 486, all with wildly varying clock speeds coexisted in the CPU market for a long time, and games made around that period don't use timing loops in engines - in theory they would run faster if they did, but from personal experience most games I ever tried ran fine in that respect. I'm a bit too newbly to slap a factual accuracy dispute on the article or just edit it in, so I'm posting that here in case someone that can reformulate this into an objective POV comes across it. 20:28, 14 Aug 2006 (CEST)
Wrong! Wrong! Wrong!
It's not like M$ is deliberately dropping support for 16-bit apps in 64-bit Windows. It's the hardware (CPU) that simply does not support running 16-bit code while in 64-bit mode. M$ guys had no choice - it is simply impossible to natively run 16-bit code on a 64-bit x86 OS. - Anonymous 14:31, 23 May 2007 (UTC)
- Not correct: On pages 3-1 and 3-2 in "Intel's Intel® 64 and IA-32 Architectures Software Developer’s Manual Volume 1: Basic Architecture", they state that real mode and protected mode are still supported, and that a compatibility mode is available allowing a 64 bit OS to run 32 bit and 16 bit applications. —CobraA1 21:49, 28 February 2008 (UTC)
Not true. It's possible to run a virtualisation application such as DOSBox or Virtual PC on x64 Windows, which in turn can run DOS or Windows 9x which rely on 16-bit code. The x86-64 and Long mode articles both correctly claim it is possible. I'd say Microsoft just didn't want to have two separate WOW emulation layers. Karsini (talk) 23:06, 28 November 2007 (UTC)
- Dosbox is not a virtualization application. It emulates a specific processor (386, 486, pentium, etc are available). 126.96.36.199 (talk) 01:23, 8 August 2015 (UTC)
It is true. There are three kings of 16-bit modes:
- real mode (bit PE in CR0 is 0);
- protected mode (bit PE in CR0 is 1, bit VM in EFLAGS is 0, bit D in code segment descriptor is 0);
- V86 mode (bit PE in CR0 is 1, bit VM in EFLAGS is 1).
NTVDM uses V86 mode. When CPU is in 16- or 32-bit protected mode it can switch to V86 by setting bit VM in EFLAGS to 1. But it's impossible to do this when long mode is active. It means that you can't switch between V86 and long mode directly. This problem can be solved but MS chose the simple way. 188.8.131.52 (talk) 22:04, 19 December 2009 (UTC)
-- It should be noted that DOSBox (Used by Wine) has way faster 16-bit CPU emulation than native V86 mode. Switching mode is so slow that emulation inside 64-bit mode is way faster. It consumes far more clock cycles to switch mode than to emulate 16-bit hardware. Also device drivers that are tightly integrates with the emulator is way faster than the hardware emulation used for stuff like graphics in V86. — Preceding unsigned comment added by 184.108.40.206 (talk) 13:53, 24 August 2012 (UTC)
Works on Intel but not AMD
I have an old EGA Klondike solitaire card game that runs just fine on Vista Ultimate 32 bit on an Intel Celeron 530 "Core Solo" 64bit CPU. But on the AMD Athlon 64 LE-1620 running XP Pro SP3 32 bit, the game won't run due to an ntvdm error. So a 64 bit CPU can be designed to support 16 bit programs, but some designs are leaving out the features ntvdm relies upon. Bizzybody (talk) 04:25, 22 September 2010 (UTC)
- Just tried to run DUNE II on the AMD Athlon 64 LE-1620. Same error. This CPU simply does not support running DOS apps in XP. :( Now I need to check the Intel Core 2 Duo T5450 I upgraded my laptop with. Bizzybody (talk) 09:47, 22 November 2011 (UTC)
-- In Wine NTVDM DUNE II runs perfectly on my 64-Bit Fedora 17 on top of Phenom II. I never tried EGA Klondike solitaire... but i see no reason why it shouldn't work. For many games you have to replace DOS4/G with DOS/32. They are fully interchangeable but only one works well with DOSBox.
Windows 64-bit and NTVDM
The 16-bit NTVDM does not work under 64-bit windows, simply because microsoft did not port ntvdm to 64-bits. In any case, they have a different virtual machine (connectix vpc), to handle 16-bit in virtual pc here.
That's the maligned sentiment echoed in the article, and on many dos-lovers sites, but it IMHO totally bypasses the fact that NTVDM would have to mutate from a CPU supported virtual mode to a full binary emulation of a processor to make that happen. (and probably that meant throwing away NTVDM, and starting anew)
Wine 64-bit and NTVDM
Unlike Windows Wine uses DOSBox for 16-bit application support. This works on both Intel and AMD processors. In fact it should work on non-x86 arch:s such as ARM.
Is ntvdm an emulator or control layer?
The operating system can then perform an emulation and resume the execution of the DOS software.
This sounds a lot like what Wine does - and if Wines definition of emulator is correct, then some of the later word about emulation seems to be wrong.
E.g: 'only 80286 emulation was available. With Windows NT 4.0, 486 emulation was added'
This should maybe be changed to: 'only 80286 was supported. With Windows NT 4.0, 486 was supported.'
-- Actually its NOT like what windows does. An actual emulation of the 8086 processor takes place. It is microcode software inside the CPU that does the emulation, but it is still emulation.
Wine's VDM is compatible with both 32-bit and 64-bit operating systems. However, due to utilization of long mode, 16bit applications did not run on 64-bit Linux kernel.
This is unclear. Does it work on 64-bit OSes or doesn't it? From my experience with Wine 1.0.1 on Debian x86_64, I am able to run 16-bit Windows programs that won't run on 64-bit Windows, but I was not able to run textmode DOS programs. The error was "winevdm: unable to exec 'C:\whatever': DOS memory range unavailable". When I successfully ran the 16-bit Windows program, it created a winevdm.exe in my process list. Best I can figure is winevdm uses VM86 mode for pure DOS programs, which makes it not work on 64-bit OSes. But it must do something else for 16-bit Windows programs. 220.127.116.11 (talk) 07:14, 18 May 2013 (UTC)
- Yes it does work although recently a sysctl variable was added to the kernel to block access to the LDT which is necessary for win16 to work with Wine.  — Preceding unsigned comment added by 2605:A000:BDC0:2000:7D5D:B2BF:849F:B10A (talk) 16:26, 31 October 2014 (UTC)
Support on 64-bit (again)
The article currently says:
I just removed "because virtual 8086 mode is not supported in long mode" because it is a form of original research known as synthesis of existing sources to advance a point. I do not contest that "It is not included with 64-bit versions" and I do not dispute that "virtual 8086 mode is not supported in long mode", especially since User:Matthiaspaul did add a source to that effect. What I contest is the "because" part. In other words, there is no source to tell if they are cause and effects.
- It can't be the sole reason for one, because Microsoft could have just as easily ported the emulator for the RISC platforms to x64 and have 16-bit applications running that way. -- Liliana-60 (talk) 17:11, 3 July 2013 (UTC)
16bit code on 64-bit Windows
Windows recognizes some 16-bit stub launchers/installers and converts (interprets?) them at runtime for use on 64bit processors. There's no mention of this in the article, and I'm not sure where it would go, so I'm just going to leave it here. Sources (microsoft): 64bit general, outdated, XP/2003 specific 18.104.22.168 (talk) 01:32, 8 August 2015 (UTC)