Why can't I run 16bit DOS apps in 64bit Windows?
Why can't I run 16bit DOS apps in 64bit Windows?
I was wondering if there is a justified technical reason why 64bit Windows does not support anymore running good old DOS apps?
Or it's just one of those Microsoft decisions based on... who knows.
Saludos.
Or it's just one of those Microsoft decisions based on... who knows.
Saludos.
-
- Posts: 1885
- Joined: Tue 05 Jun 2012, 12:17
- Location: Wisconsin USA
Re: Why can't run 16bit apps in 64bit Windows?
Were you looking for a way to run DOS programs?Galbi wrote:I was wondering if there is a justified technical reason why 64bit Windows does not support anymore running good old DOS apps?
Re: Why can't run 16bit apps in 64bit Windows?
Yes, but it was two years ago when I bought a new PC (an Acer i3, nice machine) that came with Windows 7 - 64bit.tlchost wrote:Were you looking for a way to run DOS programs?
I needed to run the billing application I use here in my shop (a pharmacy). Big was my surprise that being an old (I've been using it for 17 years) DOS app, it won't run in a 64bit OS.
The solution was to use a virtualized Win XP. It's good because when problems appear, I change to the backup copy of this Win XP and go on.
To be honest, I must say that with the host Win 7 didn't had much trouble, thou I use it just to run VirtualBox to have the XP running. It's like having a handy copy of the Puppy savefile.
I've been reading that to run 16bit DOS apps, even in a 32bit OS, what really happens, it's a sort of emulation. So I was curious if there was a technical impediment or it was just a decision by someone in the marketing department.
Thanks all for your answers.
Saludos.
Remember: [b][i]"pecunia pecuniam parere non potest"[/i][/b]
It is both
It all has to do with the width of the registers.
They used to be 8bits wide back in the days that DOS was invented.
Then they went to 16bits with the first 286/386 processors and DOS was adjusted to cope. The same when the register went to 32bits, DOS was run as in a simulated machine. The first Windows were in fact DOS applications.
Now that the registers are 64bits wide the amount of work involved in getting 8 and 16 bit applications to work natively is quite!! large and MS have decided that Windows should now be independent as it has been for some time.
It all has to do with the width of the registers.
They used to be 8bits wide back in the days that DOS was invented.
Then they went to 16bits with the first 286/386 processors and DOS was adjusted to cope. The same when the register went to 32bits, DOS was run as in a simulated machine. The first Windows were in fact DOS applications.
Now that the registers are 64bits wide the amount of work involved in getting 8 and 16 bit applications to work natively is quite!! large and MS have decided that Windows should now be independent as it has been for some time.
"Just think of it as leaving early to avoid the rush" - T Pratchett
Alternative to DOSBox on Windows 32/64: http://sourceforge.net/projects/vdos
[url=http://murga-linux.com/puppy/viewtopic.php?t=117546]Fatdog64-810[/url]|[url=http://goo.gl/hqZtiB]+Packages[/url]|[url=http://goo.gl/6dbEzT]Kodi[/url]|[url=http://goo.gl/JQC4Vz]gtkmenuplus[/url]
x86 has several modes: real mode (16-bit), 16-bit protected mode (from the 286), 32-bit protected mode (386 and later), 32-bit "flat" real mode aka unreal mode (not intended but a hack some DOS programmers made that somehow allows running real mode stuff after setting up 32-bit registers), and 64-bit "long" mode.
In 32-bit protected mode, there's an environment called "vm86", which emulates almost all of 16-bit real mode (it lacks a couple privileged instructions).
ntvdm (the Windows "DOS" environment) and dosemu rely on vm86 to run DOS programs.
When AMD came up with 64-bit x86, they included support for 16-bit and 32-bit protected mode in long mode; they left out vm86/real mode.
Microsoft decided that they didn't want to write/port an x86 emulator to handle the omission, so ntvdm is not supported on amd64. (They had already written a 486-level emulator for NT on Alpha, but that got dropped.)
DOSbox was already emulating x86, and eventually dosemu started using emulation.
In 32-bit protected mode, there's an environment called "vm86", which emulates almost all of 16-bit real mode (it lacks a couple privileged instructions).
ntvdm (the Windows "DOS" environment) and dosemu rely on vm86 to run DOS programs.
When AMD came up with 64-bit x86, they included support for 16-bit and 32-bit protected mode in long mode; they left out vm86/real mode.
Microsoft decided that they didn't want to write/port an x86 emulator to handle the omission, so ntvdm is not supported on amd64. (They had already written a 486-level emulator for NT on Alpha, but that got dropped.)
DOSbox was already emulating x86, and eventually dosemu started using emulation.
I've tried http://www.jamesonline.ca/support/dos-on-usb-support which works on some hardware.
It's not an emulator so I found there are issues with audio cards running Dos game's.
But Dos on a stick might be handy.
It's not an emulator so I found there are issues with audio cards running Dos game's.
But Dos on a stick might be handy.
[b]Carolina:[/b] [url=http://smokey01.com/carolina/pages/recent-repo.html]Recent Repository Additions[/url]
[img]https://dl.dropboxusercontent.com/s/ahfade8q4def1lq/signbot.gif[/img]
[img]https://dl.dropboxusercontent.com/s/ahfade8q4def1lq/signbot.gif[/img]
I've tested my billing software on vDos and works!!!step wrote:Alternative to DOSBox on Windows 32/64: http://sourceforge.net/projects/vdos
On FreeDos did not. On DosBox did, but had problems with running in net.
Thanks for the link, I´ve just e-mailed it to the developer with a screenshot of his program running on 64bit Win7.
Remember: [b][i]"pecunia pecuniam parere non potest"[/i][/b]