Classic Systems Emulated: Windows 3.0 (Part 2)


It first should be noted that Windows 3.0 isn't technically a operating system. It was still a graphical environment that sat on top of DOS. The file system commands executed in Windows were passed down to DOS. DOS still did a lot of the "grunt" work. Despite this, Windows made the machine significantly easier to use.

Windows 3.0 was designed for a wide variety of different hardware configurations. The way Windows executed depended on the mode that it was executed in, depending on the hardware. These different modes are explained down below.

Real Mode (For XT-Class IBM Compatibles)
Windows 3.0 had various modes to operate in, depending on the hardware configuration of that particular computer. Windows 3.0 would be the last version of Windows to support XT-class hardware. When running on XT-hardware, Windows ran in real mode. When running in this mode, Windows was confined to the 640KB constraint. If a expanded memory board was installed, Windows would be able to make use of that board. 

As one could image, their wasn't that much memory for Windows to use. DOS already used up some of the memory, and after Windows loaded, their was typically only 350-400KB of memory left. All the Windows process had to fit within that remaining memory. Also, because the 8086/8088 CPU's couldn't support virtualization, the Windows user was restricted to one single DOS session that ran full-screen, and that session used some of that memory as well. The Windows programs are suspended when the DOS session takes over.

Most of the applets that came with Windows 3 had no issue running in real mode. However, virtually all third-party programs never supported real-mode, and as such, won't run on the XT-class systems. Real mode had no support for virtual memory as well. There was no multitasking in this mode either. One could have multiple programs open, but the only program running is the one that selected and active. This is referred to as cooperative multitasking.

This mode was implemented to provide compatibility with Windows 1.x/2.x applications. Due with how these earlier Windows programs were written, and how 3.0 implemented it's memory schemes, these older applications won't run in 3.0's Standard or 386 Enhanced modes. Most 3rd party programs that were released for Windows 1.x/2.x were updated to conform to 3.0's modes of operations.

Standard Mode (For AT-Class Systems with the 286 Processor)
Windows 3.0 supported standard mode for users of AT-class systems equipped with the Intel 286 processor. In order to utilize this mode. The minimum requirement for standard mode was 1MB, even though more was recommend. The reasons for this is because Windows could make use of the memory above the 640KB barrier if installed. As such, Windows programs can run in the protected memory area in standard mode. Since the 286 processor couldn't virtualize DOS, the user was still restricted to a single DOS session that ran full-screen. Also, when the DOS session took over, the Windows programs become suspended. Windows programs still operated under the cooperative multitasking with standard mode as well, just like in real mode.

Standard mode had no support for virtual memory. As such, even though Standard mode had more memory available to use, it was still confined to physical memory. as a result, with the applications used up all the memory, then Windows would display the "Out of Memory" error. Users of PC's equipped with the 286 and the 386SX (cost-reduced version running on 16-bit motherboards) systems ran this mode. On 386 systems with 1 or 2MB's of RAM, most users operated to run the PC in standard mode, as 386 enhanced mode required over 2MB's of RAM.

386 Enhanced Mode
The 386-based systems was where Windows would work most of it's magic. As the name of this mode implies, one will need a 386 processor as the minimum requirement, along with 2MB's of RAM. Like Standard Mode, 386 Enhanced Mode allowed Windows programs to run in the protected memory area. Unlike standard mode, their was virtual 8086 support, virtual memory, and multitasking as well.

386 Enhanced Mode used the 32-bit addressing of the 386 processor. The virtual 8086 mode allowed multiple DOS sessions to be opened at the same time, and these session could run in a window as well. The emulated DOS environments were virtualized copies of the real-mode environment.  Multitasking was allowed for both DOS and Windows as 3.0 would splice CPU cycles between the different programs that were opened, allowing them to run in the background. One could copy and paste data between DOS and Windows applications as well. Due to its ability to multitask DOS applications as well, it gave DOS computing a shot in the arm.

Windows 3.0 supported DPMI (DOS-Protected Mode Interface) for protected-mode DOS applications. On the eve of Windows 3.0 release, DOS extenders started to come out that allowed DOS programs to run in protected mode. These programs could run under Windows as long as they conformed to the DPMI 0.9 interface. DOS programs that supported any other protected-mode extenders couldn't run. Most protected-mode DOS programs used the VCPI (Virtual Control Program Interface) extender, which Windows didn't support. These applications would have to run under "pure" DOS.

The success of DOS was that because it imposed virtually no overhead, applications written for that environment could bypass the OS and directly access the hardware resources of the computer. Windows 3.0, like OS/2, prevented DOS programs that directly accessed hardware from running. The DOS program would have to access the resources though the emulated virtual 8086 routines defined by either system. Windows and OS/2 would refuse to run the DOS program that tried to directly access hardware.

Windows and OS/2 programs would have access to the hardware, but via libraries that were implemented by the OS in the form of a DLL (Dynamic Linking Library) and through the API (Application Programming Interface).

Officially, Windows 3.0 didn't support any other DOS memory extenders, like QEMM for example. Later on, that product, was updated to support the Windows 3.x line of environments.

The AT-Class Systems Arrive In The Home Setting
Even though Windows 3.0 ran on XT-Class systems, it wasn't the best for this aging platform. What 3.0 really did though was that it gave justification for home users to buy AT-Class systems. During this time, AT-Class systems were very much exclusive to the corporate office. One really didn't run across on of these systems in the home setting. Home users were typically using a XT-class system with a Intel 8088/8086 or compatible processor running around 10MHz. AT-class systems were seen as massive overkill from a home-user perspective. 

Windows 3.0 gave a friendly face over hardware that was seen as exclusive to the corporate setting. Home users wanted to try out Windows. OEM's started to bundle Windows with their systems. Since the 386 was the hot processor at this time, most computers manufactures were touting Windows's abilities on their hardware. Since 386 Enhanced mode required more than 2MB's of RAM, OEM's were now compelled to include more RAM in order for Windows to run comfortably.

Faster CPU's were demanded as well now. As noted in previous articles, processors like the Intel 8086/8088, 286, and 386 processors could drive such graphical environments. However, their was a lot to be desired, and their were noticeable performance issues. With the faster 386 processors, these performance bottlenecks started to go away, and disappeared entirely with the arrival of the Intel 486 processors.

The hardware arms race continued. During this time, Intel released the 33MHz variant of the 386 processor. This was the fastest 386 Intel advertised. AMD made a 40MHz variant of the processor that outperformed the 33MHz Intel 386 and even most of the lower-end 486 processors as well.

DOS Is Still King (For Now)
With the passage of time, one of the common misconceptions of Windows 3.0 is that it killed off DOS computing. This is false as even though 3.0 was a big hit, DOS still reigned supreme during this time. Windows 3.0 received a lot of attention at release, but within time, most people were back to DOS-based applications like Lotus 123 and WordPerfect. It was a example of a environment where, without 3rd party applications, one would get bored with it very quickly. One would use Write to compose a small report, or use Notepad for a grocery list, but the major projects, like typing a report for a research project or composing massive spreadsheets with large amounts of data, was still primary done within DOS.

It was a running joke that Windows 3.0 was the best $89 Solitaire that anyone could buy. It was speculated that the vast majority of those that used 3.0 since the beginning, before those 3rd party programs became available, used the environment very much exclusively for Solitaire. It took awhile for those software to become available. By the time that Windows 3.1 was released, 3.0 had a very healthy software library though. Microsoft Word and Excel had been updated, along with new Windows ports of the major 3rd party programs like Lotus 123, WordPerfect, and updated programs like Aldus PageMaker and the Ami Pro word-processor. 

One thing to note that while Microsoft incorporated preemptive multitasking in Windows 3.0 in 386-enhance mode, their was no multi-threading support. One application couldn't preform various task. Also. their was no memory protection for Windows applications. As such, it was possible for one Windows application to overwrite the memory address of another application resulting in a clash that froze up the entire computer, forcing a restart. Crashes were frequent in Windows.

Badly behaving DOS programs running in virtual 8086 mode could also cause Windows to crash. Windows wasn't the most stable of environments. It's a reminder that Windows at this point was still a graphical shell conforming to the rules defined by DOS, and not a full-fledged operating system. This was where OS/2 had Windows beat, as OS/2 implemented both memory management and protection for its applications. OS/2 implemented multi-threading for applications as well. Whatever filesystem calls were called by the application were handled by OS/2. Bug-fixes were needed to correct most of the stability issues associated with 3.0. These bug-fixes and updates were eventually rolled out in the form of Windows 3.1, which was significantly more stable.

Windows 3.1 was where the general migration from DOS to Windows began. With that noted, 3.0 was the first of Windows that encountered widespread adoption.

IBM
IBM was not a happy camper about Windows 3.0. The runaway success caused massive conflict between the two companies. With it's success, Microsoft became a lot more committed to Windows, and was quickly loosing interest in OS/2. A massive argument occurred between the two giants which would eventually lead to the termination of the joint project. Refereed to as "The Divorce", it was very messy. Like any divorce, their had to be terms hammered out and finalized, and in general, nobody is quite happy with the terms. At the same time, both parties just wanted out, any means necessary. Their was bad blood now that would lead to future conflict between the two giants.

It should be noted that at the time of release, Windows NT wasn't ready yet, and since DOS+Windows isn't exactly server platform material, Microsoft continued to sell their version of OS/2 with the Microsoft LAN manager for the time being. Under the settlement, IBM would become the lead developer of OS/2 from Version 2.0 and on. Microsoft would forfeit it's claim to OS/2 Version 2.0 and beyond. With that mentioned, IBM would still have to pay Microsoft royalties for copies of OS/2 v2.0 sold, as a lot of Microsoft's code was still incorporated into the up-and-coming 32-bit OS.

One interesting clause in the agreement was that Microsoft would have to provide IBM the source code for both Windows 3.0 and 3.1 up til September 1993. I don't know why IBM compelled Microsoft to release them the source code for Windows 3.0 and 3.1. This is where one speculates. It was known that OS/2's Presentation Manager was largely inspired from Windows, and the early versions of OS/2 actually included the Windows SDK as well. However, the SDK isn't the source code of Windows. Because Window Chicago, which would eventually become 95, was a massive rewrite of Windows with most of its development occurring after the deadline, it was exempt from the agreement.

Under the IBM-Microsoft joint licensing agreement, whatever code that Microsoft's OS/2 team could only be used with the OS/2 project. Code-sharing wasn't permitted in this agreement. Doing so would have gave Microsoft one-up on their own projects. However, maybe this pigeon thinks that some code-sharing did occur between the teams, and as such, maybe some OS/2 code did make it's way into Windows 3.0, and IBM got wind of the situation. Maybe they threatened Microsoft with legal action if they didn't release them with the source code. At this point, I'm only speculating as I haven't found any reference to this online. Maybe I haven't looked hard enough though.

This code that IBM got from Microsoft would be incorporated into OS/2 as the Windows subsystem, referred to as Win-OS/2. IBM still paid Microsoft royalties for each copy of Windows sold. according to Wired magazine, IBM though was only paying about $9 for a copy of Windows 3.1, so Big Blue got the lowest Windows rates compared to every other OEM. Eventually, with OS/2 Warp Red Spine, OS/2 would use the version of Windows preinstalled on the hard-disk so that IBM didn't have to pay Microsoft royalties.

IBM had no claim to Windows NT, which was originally known as OS/2 Version 3.0 (which would eventually become the name assigned to IBM's OS/2 Warp) and NT-OS/2. This project was exclusively handled by Microsoft without IBM input. When Dave Cutler and his gang of elite programmers from DEC began to work on NT-OS/2, they threw out the code that had been written and started from scratch to make the OS as portable as possible between different hardware and CPU architectures. Cutler never though much about OS/2, referring to it as "DOS Plus".

It has to be reminded that Dave Cutler and his team of programmers wrote the VMS operating system for the DEC VAX mini-computer. A operating system designed for time-sharing, batch and transaction processing on a powerful (for it's day) workstation. Some of the design concepts of VMS would later influence Windows NT. At this point, I would recommend reading ShowStopper, which covers the development of NT. OS/2 was written specifically for Intel-based systems, and while possible, it was excruciating to port OS/2 to different architectures. OS/2 Warp for PowerPC was a example of how painful it was for Big Blue to port OS/2 to something other than the Intel platform. Because large parts of OS/2 were written in x86 assembly language, it also makes a 64-bit version of the OS unlikely. Windows NT, on the other hand, is mostly written in C/C++, which s a high portable programming language that can be quickly recompiled for different CPU architectures.

IBM would continue to sell computers with both Windows 3.0 and OS/2 preinstalled. The IBM PS/1 family of computers often had 3.0 installed by default. Later IBM computers, like the Aptiva desktops line and the Thinkpad laptops, supported both OS/2 and Windows 3.1.

Computers -- Microsoft, IBM Set Battle Lines
-- `Divorce' Is Deeper Than First Thought
The Seattle Times
COMMUNITY.SEATTLETIMES.NWSOURCE.COM

IBM Rights to Future Windows Code Expire '93
Reuters News
TECH-INSIDER.ORG

Personal Computers - IBM - Microsoft
Tech Insider
TECH-INSIDER.ORG

Microsoft, IBM to finalize divorce Friday
Tech Insider
TECH-INSIDER.ORG

OS/2 a quarter century on: Why IBM lost out and how Microsoft won
The Register
WWW.THEREGISTER.CO.UK

MS GOT MAD, THEN EVEN, WITH IBM
Wired
WWW.WIRED.COM

OS/2 1990: Breakup
Wikipedia
EN.WIKIPEDIA.ORG

Microsoft Confidential ..
Tech Rights
TECHRIGHTS.ORG

PCEM
I love PCEM. It allowed me to emulated a system that would have costed around $3,500 plus dollars in 1991. While creating my configuration, I realized that I can go all out to create that custom 386 of my dreams. That 33MHz Intel 386 can go bye-bye! I going with the emulated 40MHz variant of the AMD 386 processor. I wanted the machine to be somewhat period-accurate, so I allocated 4MB's of RAM to the system. That should be enough for 386 Enhanced Mode to operate without issue. A 400MB hard-disk should be enough for Windows 3.0 plus all the applications that were released for it, plus DOS programs that I would want to run alongside it.In reality though, Windows 3.0 by itself didn't consume that much disk space in retrospect; only about 5MB's. 

Who in the Hell wants to use 3.0 with only 16-colors! Especially since PCEM emulates a large amount of different SVGA adapters. I chose the Tseng ET4K video adapter. It's very specific, and their are drivers floating around for various systems. I'm using this adapter with Windows/386, along with OS/2 version 1.1, 1.2, 1.3, and 2.0 as well. The Tseng ET4K was very well supported back in the day. Technically, I'm using the Windows 3.1 drivers, but they work with 3.0 as well.

Windows 3.0 is running at a resolution of 800 by 600, 256 colors. The screenshot below shows that color palette at work. Anyone who used XP will recognize the image.
Three's The One
Byte Magazine
June 1990 Edition
Archive.org


Windows 3.0
Wikipedia
EN.WIKIPEDIA.ORG

Microsoft Windows version history: Windows 3.0
Wikipedia
EN.WIKIPEDIA.ORG

Windows 3.0
Gunkies.org
GUNKIES.ORG

Windows 3.0
Fandom
MICROSOFT.FANDOM.COM

Microsoft Windows 3.0
Toastytech
TOASTYTECH.COM

OS/2
Wikipedia
EN.WIKIPEDIA.ORG

Intel 286
Wikipedia
EN.WIKIPEDIA.ORG

Intel 386
Wikipedia
EN.WIKIPEDIA.ORG
DOS Protected Mode Interface
Wikipedia
EN.WIKIPEDIA.ORG

ARCHIVED: In Windows 3.x, why can't my
protected-mode DOS application run?
Indiana University
KB.IU.EDU

Q65794: Using Quarterdeck QEMM386 with Windows 3.0
KnowledgeBase Archive
An Archive of Early Microsoft KnowledgeBase Articles
JEFFPAR.GITHUB.IO

Expanded memory
Wikipedia
EN.WIKIPEDIA.ORG

OpenVMS
Wikipedia
EN.WIKIPEDIA.ORG

Windows NT
Wikipedia
EN.WIKIPEDIA.ORG

Comments

Popular posts from this blog

WeatherStar 4000 Simulator For Windows (Part 1)

Classic Systems Emulated: Windows 95 (Part 1)

Classic Systems Emulated: Windows 3.1 OEMS

Old Hardware Emulated :Psion Model 3a Emulated On DOSBox Windows

Classic Systems Emulated: OS/2 Version 2.0 On PCEM

Old Hardware Emulated - Windows Mobile 5.0

Old Hardware Emulated : Pocket PC 2000/2002

Old Hardware Emulated :Einstein emulating the Apple Newton (Part 3)

Classic Games Emulated: Revisiting NFS High Stakes Modding

OS/2 Warp 4