8

I wonder if anyone has tried the following approach to run a 16-bit application under Win64?

I can install a VMware virtual machine, load Linux, and use Wine to simulate the old Windows environment. I don't see why that won't work but I find no information from previous questions about 16-bit Windows on Win64.

  • 4
    Why not just install a 32-bit of windows inside of VMWare or VirtualBox? That will work much better than Wine+Linux – Darth Android Aug 12 '13 at 17:34
  • Why not try it and report back? – daxlerod Aug 12 '13 at 18:25
  • @Ramhound - Using a virtual machine is exactly what Charlie was proposing. Their idea of running Wine inside the Linux virtual machine is somewhat novel, so yes, it is worth a try. – daxlerod Aug 12 '13 at 20:08
  • @daxlerod 64-bit Windows doesn't include the WOW32 subsystem used by Windows to support 16 bit Windows programs. Therefore, 16-bit Windows programs will NOT run on a 64-bit Windows. – Mark Allen Aug 12 '13 at 20:32
  • @MarkAllen No kidding? Hence the virtual machine. – daxlerod Aug 12 '13 at 20:47
6

64-bit Windows does not include WOW - but according to Wikipedia, 64-bit Wine does!

Source: http://en.wikipedia.org/wiki/Wine_(software)#Backward_compatibility

http://en.wikipedia.org/wiki/File:Wineon64bit.png

Backward compatibility in Wine is superior to that of Windows, as newer versions of Windows can force users to upgrade legacy Windows applications. In many cases, Wine can offer better legacy support than newer versions of Windows with "Compatibility Mode". As illustrated by screenshot on the left, Wine can run 16-bit Windows programs on a 64-bit operating system, which uses an x86-64 (64-bit) CPU. 64-bit versions of Microsoft Windows cannot run 16-bit Windows programs

Source: http://en.wikipedia.org/wiki/Windows_on_Windows

The Win16 subsystem is available in 32-bit editions of Windows NT, 2000, XP, Server 2003, Vista, Server 2008, 7, and 8. The 64-bit editions of Windows versions that have them, however, do not include the WoW Win16-support subsystem and therefore cannot run Win16 applications, nor do they provide the NTVDM emulator. DOS and 16-bit Windows applications, therefore cannot run in 64-bit versions of Windows without third-party emulation software (e.g. DOSBox) or a virtual machine with either a 32-bit version of Windows, Windows XP Mode, or DOS itself.

If you can, run two VMs - one with 32-bit Windows, one with 64-bit Windows, assuming you specifically need 64-bit Windows for something.

  • Your answer stopped me from voting to close this thread! Good find! – Austin T French Aug 14 '13 at 13:17
  • Try it and report - I'd love to. But the machine and the program are my wife's and I don't think I can support her down this path. Seems it would work, but I've only run Wine under 32-bit versions of Ubuntu. Her machine is our first Win64 in the family. Unable to run the old program was a rude awakening. – Charlie Aug 25 '13 at 23:51
  • I still don't have experience with this either, but what I've been reading seems to indicate you need to run wine in 32-bit mode (using export WINEARCH=win32 and a separate -wineprefix folder for this to work. There was also a security fix in kernel 3.14 that broke some things, so avoid that. – trlkly Jan 2 '15 at 11:28
2

This is now possible with winevdm: https://github.com/otya128/winevdm. To run 16 bit applications on a 64 bit Windows, a x86 CPU has to be emulated because the Local Descriptor Table (LDT) cannot be changed on Windows x64 (which is neessary to run 16 bit code). The linked project on GitHub includes all the necessary changes to Wine and the x86 emulator. I have tested it and it seem to work very good.

To install the latest version, go to https://ci.appveyor.com/project/otya128/winevdm, select "Environment: THIS_BUILD_IS_RECOMMENDED__VCXPROJ_BUILD=1", then "Artifacts". Unpack the zip archive and run "install" to add the registry keys so 16 bit executable are opened with otvdm.

|improve this answer|||||
  • 1
    Please note that the same is true with official ntvdm. I found programs using mmx instructions triggering an invalid instruction on ntvdm while working on Windows98. It’s a bit more than this. – user2284570 Jul 14 '19 at 16:18

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.