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.
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.
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.
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.
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.
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
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
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
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
Post a Comment