In November last year I wrote about the forgotten and obscure feature of early Windows 95 builds that lets you run Windows 3.1 in a window on Windows 95. Since then I was wondering if this would still work on the final build (950) of Windows 95, considering so much has changed since build 58s.
I won’t spoil it.
OS/2 2.0 (1992) had a full screen Windows 3.0 environment, which also had a minimized icon that would switch back to OS/2 when clicked. In order to make this work, Windows needed to defer memory management to OS/2 via DPMI. It also had a “seamless” mode which used video driver trickery to display Windows on the same desktop (and overlapping with) OS/2 applications, and of course that needed the dual mouse drivers etc.
Seeing this makes me wonder how much code, or at least inspiration, was shared between the two.
Once you have MSDOS virtualized there is very little left to do to be honest… Windows 3.1 was basically a DOS application. The only obstacles are presenting it with compatible virtualized hardware (video card, sound card, etc.) with working windows drivers for them.
You can still do this on Windows 10 if you like btw, just use dosbox:
https://www.howtogeek.com/230359/how-to-install-windows-3.1-in-dosbo…
Or if your nostalgic and want to do it the old school way (and can get your hands on the version of WINOS that OS/2 used with DPMI support) you can use dosemu on Linux to do it (this has worked for like 20 years)
http://www.dosemu.org/docs/README/1.2/windows.html
Of course nowadays there is little point as dosbox exists on Linux now…
Except Dosbox still fails to emulate a lot of timings correctly and runs slowly in a lot of cases. It’s a brilliant piece of code/emulation, but still flawed. This isn’t written in anger. The Dosbox developers are some of the loveliest people on the internet. I suspect there are limits to what a PC can actually do to emulate PC architecture and it wouldn’t surprise me if Dosbox is hitting those limits hard.
I believe it can be installed using PCem now, which probably works much better.
I always understood it was because DOSBox was optimized for DOS gaming, and Windows 3.x suffered as a result. From the DOSBox FAQ (emphasis mine):
https://www.dosbox.com/wiki/DOSBox_FAQ
Note that you can run the regular Windows 3.1 on DOSEMU for many years already.
No, it wasn’t. It was an actual operating system, really, by any reasonable definition of the word. Basically, everything that an operating system does, Windows 3.1 without using DOS, and handled many things that DOS couldn’t.
Sure, it started from DOS, but when you launched Windows, it would replace DOS with a 32-bit hypervisor that would run a virtual machine with a single instance of Windows 3.1, as well as DOS virtual machines for running DOS apps. The Windows 3.1 instance and the DOS virtual machines were pre-emptively multitasked.
As for the Windows 3.1 machine, it provided virtual memory (including paging to disk), its own interrupt handler (and didn’t use DOS’s), it used its own drivers for disks, mouse, audio, printing, and networking (When available – it could also use DOS drivers if Windows drivers weren’t available). The disk driver is especially significant, as it as a 32-bit protected mode driver that completely by passed DOS and BIOS function calls.
Sure, it was closely tied to DOS, but it was definitely an operating system in its own right, and certainly not just “basically a DOS application.”
It’s really more like… an operating system that runs next to DOS, and sometimes asks DOS for a cup of sugar or whatever.
Good times!
Your post brought be back to Usenet newsgroup discussions from late 80’s through early 90’s.
What makes an operating system an operating system rather then an application, especially in the (MS-)DOS days? Back in the days where each application that handles sounds had to include its own support, rather then rely on the operating systems support.
Stating that Windows 3.1 used its own drivers, well…. running on top of (MS-)DOS you had to for most hardware. Okay, there were DOS drivers for mice, but that’s about it. And for CD-ROM drives, Windows 3.1 depended on the support DOS offered.
At the most basic, probably the interrupt handler. When an interrupt is generated by a piece of hardware, the OS is what handles it. When a piece of software generates an interrupt, it is to notify the OS that there is work to be done.
When Windows loads, it nukes the DOS interrupt handler and replaces it with its own. Windows (not DOS) handles both hardware and software interrupts. The hardware is interacting with Windows directly, not DOS.
I could be completely wrong about this (first version of Windows I ran extensively was 95, I only did troubleshooting for 3.1) but wasn’t 3.1 a 16bit only operating system, and indeed was just a Shell on top of DOS? It wasn’t until ’95 that Fat32 was introduced (in it’s buggy form). There were a few different DOS shells out at the time prior to Windows 3.x becoming more popular.
Edit: Yup, at least according to Wikipedia; https://en.wikipedia.org/wiki/Windows_3.1x
Edited 2018-02-09 20:30 UTC
While it exposed a 16-bit, cooperatively multitasked API originally developed for an earlier version of Windows, Windows 3.1x pioneered many of the backwards-compatibility hacks that Windows 9x perfected.
In addition to having its own EXE format separate from DOS and introducing The Registry, Windows 3.1x had protected mode drivers and various 32-bit subsystems, but it used DOS as its bootloader and legacy driver API.
(That’s why Windows 95 has CONFIG.SYS and AUTOEXEC.BAT. Because “anyone who doesn’t care about legacy hardware support will buy Windows NT”, Windows 9x did some startup hackery where it would take over from things like HIMEM.SYS while booting and then perform surgery to transfer any hacks applied to them into itself so that any drivers for things like backup services which had hooked the DOS infrastructure would get monkey-patched into the Windows 9x operations.)
One example of that is how Windows 95 would slow to a crawl while performing floppy disk I/O, because it had to go through BIOS routines that might have been hooked by 3rd-party software.
(Source: The Old New Thing)
Also, trust me on this. Windows 3.x is a LOT more than a desktop shell. The memory management implementation alone bears much more resemblance to classic MacOS.
(Source: I have a big pile of books on Windows 3.x APIs and internals that I bought for retro-hobby programming with OpenWatcom C/C++.)
Edited 2018-02-10 03:28 UTC
FAT32 was introduced in Windows 95 OSR2 (version 4.00.950B) and it’s accompanying MS-DOS version 7.1
My experience with the Windows 3 series was Windows for Workgroups 3.11. This version of Windows only has the “386 Enhanced” mode, where 3.1 also had a “Standard” mode, and 3.0 even included the “Real” mode.
This “386 Enhanced” mode uses the Protected Mode to run Windows applications and the V86 mode to run MS-DOS applications. The Windows applications it supports are 16 bit Windows applications, however, one can install WIN32S to add some limited support for 32-bit Windows applications.
So, technically, Windows 3.1 is not 16-bit only.
But any software that uses for example a sound card running on (MS-)DOS, has to handle the interrupts created by the sound card. That’s the point, MS-DOS and compatibles are so basic in nature, that almost any hardware related stuff has to be done by the application itself.
Nowadays we are used to operating systems with drivers that handles all hardware, but MS-DOS was barely doing anything more then provide access to the file system and load applications.
While that’s largely true for sound cards, it isn’t true for printers, network cards, disk controllers, serial ports, or parallel ports.
And, it isn’t even universally true about sound cards, which later on often had TSRs to emulate a SB16 interface for DOS apps.
And, even then, if (and, for non-sound card devices, is a big IF) DOS’s interrupt handling wasn’t more complex than “Let the program do it,” it was still replaced by the Windows interrupt handler.
[qbut MS-DOS was barely doing anything more then provide access to the file system and load applications. [/q]
Windows 3.x used a new 32-bit protected mode driver for handling filesystem access, which allowed multiple windows apps and multiple DOS virtual machines to access the underlying fulesyete concurrently.
I have a feeling Windows handled loading of Windows apps.
If that’s all DOS did, then once Windows was launched, it’s was no longer doing it
It took a year for one guy to install Windows for Workgroups 3.11 on modern hardware in 2016 (as a side project).
http://yeokhengmeng.com/2016/09/windows-for-workgroups-3-11-on-vint…
This is the guy who did ^aEURoeMake the 486 Great Again!^aEUR and was featured in OSAlert in ^aEURoeThe oldest x86 processor still supported by a modern Linux kernel?^aEUR.
http://www.osnews.com/story/30152/The_oldest_x86_processor_still_su…
I too ran Win 3.11 productivity software on my Os/2 dx2-66 machine with 8mb of ram, back in 1995/96. Wich was Microsoft office 4.2 and it ran well with that complete Win-3.11 installation under the hood.
When I think hard, there was something about 3.11 on 95 back then. Never got the time to use that feature, and as Os/2 died slowly, I switched to Windows98 in early 1999.
Edited 2018-02-06 09:32 UTC
I installed OS/2 Warp (via floppy disks) on my 486dx4 133 MHz system with 8? 16? MB of RAM back in university. Unfortunately, it had a WinModem installed and couldn’t connect to the Internet via dial-up.
But, it included Win-OS/2, and there were Win 3.x drivers for the modem. Once it was connected via Windows, the OS/2 apps could surf the web/gopher/IRC/chat.
Eventually got Win98SE running on that system as there wasn’t much in the way of useful OS/2 software. But it was fun playing around with it while it lasted.
True… Shure there were the standard text editor and spreadsheet, that were on the bonus pack. They were usefull to an extent. I did not have my machine on the internet untill around 2001. It was on a new machine that I had gotten at that time. So I ran Win98 untill I could get WinXP. I got it when SP2 were released, and ran it untill Win7. Then I switched to Linux in 2016 for good. Yeah… Os/2 was a pretty good operating system, and I really enjoyed using it. Programs were, as you mention it, a big drawback. Yet it was the best operating system during that time period. Again… It failed due to a bad software catalog. If only….. If only just.
Though OS/2 had the ultimate goal of returning to IBM the control over computer market …so perhaps it’s better that it didn’t succeed.
Edited 2018-02-08 00:25 UTC
https://www.youtube.com/watch?v=5XcKBmdfpWs