One downside is that it's old and only works on 32bit machines. It only mentions up to Windows 7 too, I wonder if it would work on Win10 (is there 32-bit Win10?)
If I understand correctly, this is a limitation of x86_64 backwards compatibility rather than a limitation of Windows. Enough of the 16 bit behavior was preserved in 32 bit protected mode for Win16 apps to run, but nearly all of it doesn't work in 64 bit long mode (things like virtual 8086 mode aren't available in 64 bit mode). There's also all the GDT, LDT, TSS stuff on 32 bit x86 that was either dropped or reduced for x86_64.
Your only option at this point is to use a virtual machine. Intel has supported real mode VMs since Sandy Bridge and I'm not sure when AMD got it, but all of the Zen parts definitely support it.
Oh, I didn't realize they'd worked around MS removing LDT access. They did it by running in an 16bit x86 emulator, which is a pretty big hammer, but I guess win16 apps are old enough that the performance is still more than fine on modern CPUs.
It a limitation of Windows; you can still have 16bit legacy mode code segments on amd64 processors on a 64bit OS. The issue is they exceed the maximum HANDLE table size on 64-bit windows versus what win16 expects.
It was a tradeoff to intentionally break compatibility in a pain point for them where it would be acceptable by their customer base.
Comments
yes, i would like to know too - is it more battery friendly or less? does it have upsides or downsides compared to wsl or wls2?
One downside is that it's old and only works on 32bit machines. It only mentions up to Windows 7 too, I wonder if it would work on Win10 (is there 32-bit Win10?)
Yes, 32-bit Windows 10 exists... (and is in fact the only choice for those who want to run 16-bit Windows apps)
If I understand correctly, this is a limitation of x86_64 backwards compatibility rather than a limitation of Windows. Enough of the 16 bit behavior was preserved in 32 bit protected mode for Win16 apps to run, but nearly all of it doesn't work in 64 bit long mode (things like virtual 8086 mode aren't available in 64 bit mode). There's also all the GDT, LDT, TSS stuff on 32 bit x86 that was either dropped or reduced for x86_64.
Your only option at this point is to use a virtual machine. Intel has supported real mode VMs since Sandy Bridge and I'm not sure when AMD got it, but all of the Zen parts definitely support it.
It was just a choice Microsoft made. Wine happily runs win16 apps on x86_64 Linux.
There was a wine derived thing that used to work on Win64 to run win16 apps, but something in later windows versions broke that.
Does that mean winevdm doesn't work anymore?
https://github.com/otya128/winevdm
Oh, I didn't realize they'd worked around MS removing LDT access. They did it by running in an 16bit x86 emulator, which is a pretty big hammer, but I guess win16 apps are old enough that the performance is still more than fine on modern CPUs.
A bigger reason for WoW not being available on 64-bit Windows is that HANDLEs would get truncated in that case, which isn't wanted behavior.
It a limitation of Windows; you can still have 16bit legacy mode code segments on amd64 processors on a 64bit OS. The issue is they exceed the maximum HANDLE table size on 64-bit windows versus what win16 expects.
It was a tradeoff to intentionally break compatibility in a pain point for them where it would be acceptable by their customer base.
You could use WineVDM.