This thread comes up from time to time on the FreeDOS mailing list, so I thought I would add it as a technote:
The question was:
I do hope FreeDOS will run Win3.1 one day, even though I had more interest for DOS those days, than Win3.1.
I think this discussion came up before. As I recall, theres really no elaborate technical reason why Win 3.11 won't run on FreeDOS. Basically, I think theres a field that windows looks for in the DOS that loaded it. If its not there, it doesn't run and you'll get "Incorrect DOS version."
Bart Oldeman (kernel maintainer) replies:
You must be referring to AARD here. There is a little test program out there that tests for it. FreeDOS passes this test.
Also, this statement:
... DR-DOS, I think is the only DOS aside from MS-DOS that will run windows 3.11. They bacailly put them same information in their execuatble, or in memory, or whatever that MS-DOS did, and it "fooled" windows in to thinking it was MS-DOS.
Bart Oldeman (kernel maintainer) replies, again:
yes, that's AARD. But that's not all. Several int2f calls are missing. And even then there's probably some little stupid hard to debug thing that you can only find out by testing. MSNET was that way; no reason to believe that MSWindows is any difference.
However owned DR-DOS at the time bought a copy of Windows and reverse engineered. They did so because they would lose a lot of profit if they wouldn't be able to run Windows (which was THE Windows at the time).
For FreeDOS things are different, since the profit of running a Windows (which is no longer THE Windows; Windows XP happily runs without requiring anydos) for its kernel developers is $0.
You'll have to wait for someone who a) is capable to hack kernel code, b) has a copy of Windows 3.1x and, c) is genuinely interested in getting it to run on FreeDOS, or someone who wants to do it for money and someone else who has the money.
Before that Windows 3.1 does NOT run on FreeDOS. Period. End of thread for me.
Update: Since this thread, of course, we have been able to add support to the FreeDOS kernel such that you can run Windows 3.1 on FreeDOS. So this works now.