Category: Operating Systems
This week I’m going to indulge myself with some extremely nerdy PC history. Find a comfortable chair because this is going to take awhile.
This is a sealed copy of Windows/386 which I purchased on eBay recently. Windows/386 was a version of Windows 2 released in late 1987 that was able to multitask DOS applications on a 386.
There’s a good chance you’ve never heard of Windows/386. It’s possible you may have seen this over-the-top 12 minute marketing film that Microsoft created for Windows/386 where a businesswoman uses the multitasking power of Windows/386 (and 80s fashions) to save the day.
I had really only heard of Windows 2 in the context of books written later like Windows for Dummies that basically said “don’t bother with Windows 2, buy Windows 3”.
If you’re wondering what Windows 2 looked like, here’s a close up of that screenshot on the front of the box:
I started collecting boxed software around the same time that I started buying the old Macintoshes in the late 1990s. One of the first copies of Windows I found at a thrift store was this sealed copy of Windows 3.1 I found amongst the toys and board games at the old State Road Goodwill 10-15 years ago. Apparently I paid $3.00 for it.
At the time I bought it because I loved the way the front of the Windows 3.1 box looks. It’s still my favorite OS box.
Now, Windows 3.1 in a box is not hard to find. In fact, I also have an open box copy of Windows 3.1. But, Windows 3.0 is much harder to find in a thrift store. I recently found a copy of Windows 3.0’s disks and manuals without the box at the 2013 Cuyahoga Falls Hamfest and shortly after that I bought a sealed copy on eBay. I’ve never seen any Microsoft OSes older than Windows 3.1 “in the wild” just hanging around in a thrift store.
Windows 2.0 is even harder to find than Windows 3.0. Up until I bought this copy on eBay I had never seen it in person.
I was inspired to buy this copy of Windows/386 (which as you can imagine is a bit pricey) because I’ve been reading Andrew Schulman’s really fascinating (and some say controversial) book Unauthorized Windows 95, which I found for a few bucks on ABEBooks.com.
So what does a book about Windows 95 have to do with Windows/386 which came out years before? This is the point where this post is going to get extensively nerdy.
Let me begin by showing you the back of the Windows/386 box:
The description on the back of this box is glorious. This is one of the most horribly tortured chimeras of Microsoft marketing and technical jargon I’ve ever seen. But, by decoding this mess you can learn an enormous amount about what was going on with the PC in 1987-1989.
Here it is typed out so that it’s easier to read:
Integrate the next generation of Windows applications and existing DOS applications using multi-tasking Microsoft Windows/386. it’s the one graphical environment that gives you a standard path to OS/2, the operating system of the future.
Microsoft Windows/386 turns your 80386-based personal computer into a multi-tasking virtual machine. You can run any number of Microsoft Windows applications and existing DOS applications at the same time, limited only by the memory in your system. Each DOS application gets it’s own 640K “8086” environment to run in and will run in the background regardless of what else is running. And each DOS application can run in a window or use the full screen.
Your future is secure with Microsoft Windows/386 because once you learn its standard user interface, you’ll be well on your way to knowing how to use all the new graphical applications developed for Windows, even those developed for OS/2.
- Enhanced support for DOS applications–cut and paste selected data between Microsoft Windows applications and existing DOS applications.
- Full multi-tasking virtual machine environment–both DOS and Windows applications run concurrently in their own 640K memory space.
- Consistent with OS/2 presentation manager including overlapping windows and enhanced keyboard and mouse controls.
- Emulation of expanded memory specifications–no special hardware needed.
- Supports memory-resident applications.
- Compatible with programs written under Microsoft Windows versions 1 and 2.
- Supports Intel 80287 and 80387 math coprocessors.
- Includes a wide range of desktop applications, including Microsoft Windows Write and Microsoft Windows Paint.
You can probably make out a few important themes here.
The first is that in 1987 it’s very exciting to be able to multitask DOS applications (today we seem to have lost the hyphen in multi-task).
Second, is that for some reason, even though you just bought Windows/386, Microsoft would really rather you buy OS/2. Usually the back of an expensive thing’s box is trying to stroke your ego and make you feel real smart for buying this expensive thing. Here, oddly, they’re saying you’re smart for buying this thing because then you’ll be ready to buy the next thing.
Third, they’re really eager to tell you that they are able to multitask DOS applications through the magic of virtual machines.
All of these things are really about memory and the nightmare that was the 640K “barrier” created by the 8086/8088 and DOS and what had to happen to get around the barrier.
The 8086 was a 16-bit processor (along with it’s cheaper version the 8088). Processor “bit-ness” is a complicated subject but in general it means that the 8086 operated on numbers that were 16-bits long. The 8086 was designed to address (i.e. talk to) up to 1MB of RAM. 1 MB of RAM has 20-bit memory addresses so Intel came up with a technique where they added together two 16-bit numbers in a way that came up with a 20-bit memory address.
Here’s a diagram from page 25 of Peter Norton’s 1985 book Programmer’s Guide to the IBM PC that shows how they did it:
This method of dealing with memory addresses was a central part of how every DOS program worked. This became known as Real Mode.
DOS was an operating system for the 8086 microprocessor, so it too operated in Real Mode.
IBM decided to use some of the memory addresses to talk to ROM chips, graphics card memory, and other things so that the memory addresses that could actually be connected to real RAM were limited to 640K. That’s where the so-called “barrier” came from.
Windows 1.0 was an attempt to create an “Operating Environment” that still ran in Real Mode where programmers could create graphical applications. As you can imagine, Windows 1 was held back by the limited amount of memory available in Real Mode and the lack of built in multitasking features in the 8086.
In general, when you’re building a multitasking processor you want several things. One thing you want is a timer that the operating system can set inside the CPU. That way a program gets a set block of time in which to do some processing before the timer goes off and the CPU wakes up the OS and the OS checks if the program needs more time or if another program should get it instead.
These are the basic building blocks of task switching. If the CPU switches fast enough it can appear to a human being that their CPU that can only do one thing at a time is actually running multiple programs at once. In reality the programs are all getting bits of time given to them by the operating system in which to execute.
Another thing you want is a sort of built in security system in the CPU that separates the programs from the OS so that the OS is in charge if the computer and can juggle these programs. Ideally you want it to be so that when the program needs to do something important (like say, putting a pixel on the screen or writing a file to the disk) it has to ask the OS to do that thing for the program.
That way multiple programs asking for important things at once don’t interfere with each other. The OS becomes like a traffic light at major intersection that prevents cars from running into each other. If a program tries to get the CPU to do something only the OS should do, the CPU should stop it.
Those are both things that Intel built into the 80286, their followup CPU to the 8086. The 286 was built for multitasking and it was built to talk to up to 16MB of RAM. These multitasking features were called Protected Mode.
This would have been great except Protected Mode was incompatible with Real Mode. That method by which Real Mode came up with memory addresses in that diagram above did not exist in Protected Mode. It used a different method. You could not simply load up a Real Mode program (like all DOS programs at the time) into Protected Mode.
Fortunately, the 286 could also pretend to be a fast 8086 operating in Real Mode. But you also couldn’t switch between the two in an elegant way.
So when people brought home their expensive new IBM PC AT’s with 286 CPUs in late 1984 they were mostly running them in Real Mode, running DOS applications.
What was needed was a new Protected Mode operating system and new Protected Mode programs to really use the multitasking Protected Mode on the 286.
This is why in 1985 IBM and Microsoft decided to create OS/2 (aka Operating System/2) with was a protected mode operating system for the 80286. They also came up with a way where OS/2 could run a single DOS application at a time by fooling the 286 into switching between Protected Mode and Real Mode in a way Intel had not really intended. Running DOS applications on OS/2 version 1 got a reputation for being slow and terrible.
OS/2 was a large undertaking and while it was announced in April 1987 and version 1.0 was released in December 1987, it wasn’t really complete. OS/2 1.0 did not come with a graphical interface at all. That would not come until OS/2 1.1 in October 1988.
By the way, OS/2 1.1 called it’s graphical interface the Presentation Manager, which is why Windows/386 is also calling itself a presentation manager.
So, now we have two messes. The first mess is the “640K barrier” that limited the PC platform. The second mess was the fact that the 286 could not multitask DOS applications.
So, let’s say it’s 1987 and you have a pile of very expensive, serious DOS applications.
Are you happy with OS/2? Do you really want to have to replace all of your applications with new Protected Mode versions? Or, would you rather have something that could just multitask the pile of applications you have now?
Meanwhile, Intel released the successor to the 286, the 80386 in late 1985 and by late 1986 you could buy one in outrageously expensive PCs like the Compaq Deskpro 386 . Here Intel finally set the groundwork to clean up both messes.
The 386 was now a 32-bit processor and could address up to 4GB of RAM. The 286’s protected mode was enhanced to become 32-bit Protected Mode in the 386. It also contained a Memory Management Unit, which breaks memory up into pages that can be swapped out to disk if necessary. This is the technique called virtual memory. As you can imagine this is very useful for multitasking programs.
With the 386 a PC contained most of the hardware features that allowed expensive mainframe and mini-computers the ability to multitask large programs but it would need a new operating system to take advantage of them.
There were ways for new programs that ran on DOS to use the new features in the 386. If you ever ran Doom on DOS you saw a bunch of text gobbledegook fly past before the game loaded. Part of what it was doing was loading a program called a DOS Extender that was basically a sort of mini-OS that let Doom’s 32-bit Protected Mode code talk to Real Mode DOS.
But, running old DOS programs needed something else. In order to finally solve the 8086 and DOS’s memory mess, Intel borrowed a trick from the mainframe world: virtual machines.
In order to explain what a virtual machine is here is a modern example:
That’s Super Mario Bros., which was an NES game from 1985. But it’s running on a Nintendo 3DS from 2011 rather than an NES from 1985. The game thinks it’s running on an NES, but in reality it’s running on a piece of software called a virtual machine that just looks like an NES to the game but is really a different machine entirely.
What Intel did with the 386 was to build in a new mode called Virtual 8086 Mode (aka V86 Mode) that created 8086 virtual machines. V86 mode was really a version of Protected Mode modified so that the Memory Management Unit would take care of handling the different methods of dealing with memory addresses.
A 386 could create multiple virtual machines running in V86 Mode. In order to do this Intel said a software vendor would have to supply a program called a Virtual Machine Monitor, or VMM, which was actually a small 32-bit Protected Mode operating system that would manage the virtual machines. The VMM was really in charge of the computer. A program running in a V86 virtual machine thought it was talking to DOS but in reality the VMM was deciding to let it talk to a copy of DOS. The VMM is like the 3DS’s Virtual Console is my example above.
This is where Windows/386 comes in. Windows/386 was the first Microsoft operating system to contain Microsoft’s VMM. In fact, the whole thing ran inside of virtual machines that were really controlled by the VMM. So, there was one virtual machine that contained a copy of Windows 2 that ran Windows programs and then as many other virtual machines as DOS programs you needed to run.
There was other software that contained VMMs that let you run multiple DOS applications. You can read about some of them in this February 1989 Infoworld article. But the raison d’être for Windows/386 was that it ran graphical Windows applications too.
In these screenshots from the Windows/386 box notice how some applications have the garish yellow bar with drop down menus and others do not. The windows with the menus are Windows applications and the ones without are DOS applications and they’re all shown living in harmony together.
You can see how this came dangerously close to dooming OS/2 already in 1987. Why buy a new OS that couldn’t run the applications you own now very well when there’s an alternative?
At the time however, in 1987, Microsoft and IBM were spending oodles on developing OS/2, and this is why you see such tortured marketing language on the Windows/386 box. They still really wanted to get you into a real Protected Mode OS.
The big problem for Windows/386 was that at the time very few people had 386s. When Windows/386 came out the Deskpro 386/20 (the 20MHz update to the original Deskpro 386) listed at $7,499 and went for a lot more when you added a larger hard disk and a better graphics card. Most people and businesses were still buying 286s, which is why IBM and Microsoft continued to bet on OS/2.
The other problem for Windows/386 was that people were not enthused about Windows 2 applications. Back in 1987-1989 Microsoft was not yet dominant.
The most notable Windows 2 application was Excel, but for the most part people were sticking with DOS applications they knew and loved like WordPerfect and Lotus 1-2-3.
But, Windows/386 was just the first VMM-based OS from Microsoft. This is where we come to that Unauthorized Windows 95 book.
Unauthorized Windows 95 is all about what the VMM did in Windows 3.0 through Windows 95. Windows 3.0, Windows 3.1, Windows 95, Windows 98, and Windows ME all were based on the VMM I described above. You may not have heard of Windows/386 but you most certainly have heard of Windows 95.
Windows 3.0 changed everything in 1990. It moved Windows into the 286’s Protected Mode and if you ran it on a 386 it also run under the VMM which allowed you to multitask DOS applications. Suddenly peopled wanted to use Windows applications and sales took off. Suddenly there was no need for OS/2.
Windows 3.0 basically killed OS/2 as the successor to DOS and led to the breakup of the joint development deal Microsoft had with IBM. Windows 3.0 is what made Microsoft the dominant beast that people remember today.
The ultimate expression of Microsoft’s power over the PC market was Windows 95. When Microsoft said “jump” everyone jumped to Windows 95.
When Windows 95 came out a lot of people wondered what exactly it was. Was it a real Protected Mode operating system? Was DOS still in there somewhere? Microsoft said it was 32-bit…Was it really?
The answers to these questions are contained within the 500+ pages of Unauthorized Windows 95. Basically, DOS existed in Windows 95 as a servant controlled by the VMM used for compatibility with DOS applications and drivers. By Windows 95 the VMM became modular and whole pieces of DOS could be replaced with newer Protected Mode code. It was true that the whole OS was not 32-bit, but the most important part, the VMM was definitely 32-bit.
In a real way, the seeds of Windows 95 started in 1987 with Windows/386.
If you’ve read this far, I thank you. I collect this stuff because I love tying together the strings of history attached to these old objects. Normal service with continue next week.