The Future That By no means Was
Microsoft OS/2 2.0 SDK Pre-Launch 2, June 1990
In 1990, the strategic PC working system of Microsoft and IBM was not DOS, not Home windows, however OS/2. The primary 16-bit OS/2 was initially launched in 1987 with a lowered function set, however by the tip of 1989, OS/2 1.2 accomplished two main options: The Presentation Supervisor GUI (first seen in OS/2 1.1) and installable file methods, notably the brand new HPFS file system.
Since earlier than the preliminary launch, Microsoft talked a couple of 386 particular model of OS/2, with assist for a 32-bit, flat mannequin API, and far improved DOS assist using the 386’s digital 8086 (V86) mode.
In 1987, 386-based PCs have been few and much between; IBM needed an working system higher than DOS then, fairly than years sooner or later, and Microsoft had been engaged on “Superior DOS”, nonetheless 16-bit however using the 286’s protected mode, for a number of years. The consequence was OS/2 1.x.
By 1990, the variety of 386 and brand-new 486 methods had been regularly growing. 386-specific software program, akin to reminiscence managers (“LIMulators”) and DOS multitaskers (together with Microsoft’s personal Home windows/386), was gaining popularity.
Simply earlier than the tip of 1989, Microsoft made obtainable the primary pre-release model of the lengthy promised 32-bit OS/2 2.0, which was supposed to be the primary mass-market 32-bit PC working system. This was accompanied by a press release detailing the $2,600 OS/2 2.0 Software program Improvement Equipment (SDK).
Sadly, the December 1989 pre-release of OS/2 2.0 could not have survived to the current day. However in June 1990, Microsoft shipped the second pre-release of the OS/2 2.0 SDK. And that model has now turned up, after twenty years of looking out, and practically 1 / 4 century after its launch!
The SDK specimen was in unique unopened field, with printed documentation and the whole lot.
Right here’s what the June 1990 pre-release of OS/2 2.0, also called construct 6.78, seemed like when put in:
It seemed awfully just like its 16-bit modern, OS/2 1.2. The massive inform was the dearth of the DOS icon within the decrease left nook (the one and solely restricted DOS field in OS/2 1.x, also called “DOS coffin”), and extra importantly, the addition of DOS Window and DOS Full Display screen icons within the Important group.
To place the OS/2 2.0 pre-release in perspective, it got here out nearly concurrently with Home windows 3.0, a yr earlier than DOS 5.0, nearly two years earlier than the discharge of OS/2 2.0, and over three years earlier than Home windows NT 3.1.
Hybrid OS
The mid-1990 OS/2 2.0 pre-release was very a lot a hybrid working system. Machine drivers have been 16-bit, the Presentation Supervisor GUI was 16-bit, most utility packages have been 16-bit. However the kernel included a brand new 32-bit reminiscence supervisor with paging assist, assist for 32-bit purposes, and notably the MVDM subsystem—A number of Digital DOS Machine assist.
Whereas hybrid methods are sometimes thought of impure, they are typically the results of sound engineering practices. Why trouble writing all new 32-bit code when the present 16-bit code will do exactly advantageous? Reusing giant swathes of OS/2 1.2 code little question accelerated the event of OS/2 2.0 by many months, if not years.
One of many main aims of OS/2 2.0 was to run current 16-bit OS/2 1.x purposes. Beginning out with a lot of “userland” code being 16-bit was a logical step. Equally supporting 16-bit system drivers allowed current drivers for use with minimal modifications, fairly than rewriting the whole lot from scratch.
That mentioned, the OS/2 2.0 designers in all probability didn’t think about that fairly a lot 16-bit code would survive in OS/2 till the tip.
Bugs and Incompatibilities
After putting in OS/2 construct 6.78 (which went easily as such), I rapidly found that DOS containers simply received’t work. Any try to start out a DOS session would crash, or at finest get caught with a clean display:
To the credit score of OS/2 2.0, the DOS session crashing and burning had no discernible influence on the soundness of the system. A main enchancment over OS/2 1.x.
After looking at instruction traces for a short time, I discovered the fairly sudden trigger. Within the DOSKRNL file (the DOS 4.0 kernel working inside OS/2 DOS containers), Microsoft tried to be intelligent and used an invalid instruction as a quick path to entry protected mode companies. However there was a deadly downside: Microsoft used the 0F 7F opcode, which is not undefined on Pentium MMX and later — it’s the MOVQ instruction. For that cause, launching DOS containers in construct 6.78 fails miserably on Pentium MMX and later Intel processors (besides maybe on the Pentium Professional).
Somewhat apparently, OS/2 2.0 pre-release construct 6.123, which is just a few months newer, doesn’t undergo from this downside. It makes use of the HLT instruction as an alternative, which at all times causes a #GP fault in V86 mode, and works advantageous on fashionable CPUs. It’s a little bit of a thriller what motivated Microsoft to vary the mechanism, since MMX processors have been years away.
I additionally discovered myself unable to put in the LAN Supervisor networking elements:
The error message is frustratingly imprecise. After spending some high quality time with a disassembler, I discovered the trigger — which was once more fairly sudden. The LAN Supervisor setup fails as a result of it finds NETAPI.DLL to be loaded.
For causes which might be fully unclear, Microsoft shipped NETAPI.DLL on the LAN Supervisor disks, however additionally shipped a completely different NETAPI.DLL as a part of the bottom OS, and the print spooler masses NETAPI.DLL if it finds it (and there’s no apparent technique to stop the print spooler). That upsets the networking setup as a result of it thinks LAN Supervisor (or another networking software program) have to be already put in.
The workaround was simple, boot OS/2 6.78 from the set up floppies (or from an OS/2 1.2/1.3 set up floppy), rename NETAPI.DLL within the OS2DLL listing, reboot. The print spooler merely doesn’t use NETAPI.DLL when it doesn’t discover it, and the LAN Supervisor setup works. How Microsoft managed to ship the pre-release like it is a little bit of a puzzle — maybe some final minute packaging change.
Networking
The OS/2 2.0 SDK got here with 4 disks of networking assist. This seems to be a pre-release model of LAN Supervisor 2.0 (the SDK got here out in June, LAN Supervisor 2.0 in round November 1990). In line with modern studies, the networking assist was new within the June 1990 SDK; the primary OS/2 2.0 SDK from December 1989 didn’t embrace networking, fairly probably as a result of LAN Supervisor 2.0 was not far alongside sufficient.
The setup program presents putting in a LAN Supervisor server, or a workstation with the Peer service (which can be a server), however so far as I can inform there are not any server elements on the disks. There may be additionally no textual content mode based mostly consumer interface that will usually be launched utilizing the NET command.
Because it’s based mostly on LAN Supervisor 2.0, the community stack solely comes with the NetBEUI transport (except for maybe some unique XNS transports). There’s no NetBIOS over TCP/IP, and due to this fact no technique to discuss to fashionable servers.
However the pre-release networking code can discuss to a LAN Supervisor 2.0 server and use file sharing. Enjoyable occasions! It’s a disgrace that IBM didn’t embrace networking within the OS/2 2.0 launch.
For testing I used the 3Com EtherLink II emulation in VirtualBox:
The OS/2 2.0 pre-release has no bother seeing a LAN Supervisor 2.0 server (working on prime of OS/2 1.2) working in one other VM:
It’s likewise no downside to make use of a community drive and entry distant information:
All in all, the OS/2 2.0 pre-release, considerably surprisingly, got here with a pre-release, stripped down, however practical community shopper. This is able to have drastically eased software program growth, as a result of information may very well be simply copied over a community.
As a facet observe, it’s not attainable to put in the launched LAN Supervisor 2.0 or 2.1 shopper on OS/2 6.78. That’s, the installer runs, however the system simply crashes afterwards—not too surprisingly, given how tightly the community redirector was built-in into the working system.
Improvement
A significant a part of the OS/2 2.0 SDK was clearly the event package. This included a pre-release model of Microsoft’s 32-bit C compiler, Microsoft Macro Assembler (MASM) with 32-bit assist, in addition to headers, libraries, and pattern code. Plus after all digital and printed documentation. The printed documentation was new within the June 1990 SDK; the primary launch got here with digital documentation solely.
The event package was larger than the OS itself, with 6 compiler disks and 5 toolkit disks versus 10 disks for the working system itself.
The CL386 compiler is actually the identical compiler that was used for x86-based NT growth. Microsoft had had a compiler producing 32-bit code for the 386 processor since circa 1986, and used it to develop 386 XENIX; SCO shipped mentioned compiler for a lot of years. The CL386 compiler was the variant of the compiler for DOS-like methods. It will definitely became the 32-bit Microsoft Visible C++ compiler, however customers needed to wait till 1993 earlier than they may purchase it.
In fact the fortunate few who bought the Microsoft OS/2 2.0 SDK might get pleasure from writing 32-bit purposes a number of years earlier, in 1990! The SDK got here with quite a few pattern packages and pretty intensive documentation.
Digital documentation got here in two completely different codecs. OS/2 programming info and particularly Presentation Supervisor programming documentation got here within the native OS/2 assist format:
Documentation for the compiler and assembler, as properly the OS/2 API, was in QuickHelp format:
There was important overlap and far of the documentation was obtainable in each codecs, but different items have been solely obtainable in a single or the opposite format. It seems that the Languages group at Microsoft most well-liked QuickHelp, however the Methods group and IBM most well-liked the OS/2 assist format.
32-bit Flat Mannequin
The OS/2 2.0 SDK launched a 32-bit flat programming mannequin that turned normal within the Nineteen Nineties. No extra 64-kilobyte segments, no extra close to and much pointers.
OS/2 2.0 absolutely utilized the paging functionality of the 386 processor. Digital reminiscence based mostly on swapping uniform 4 KB pages was simpler to implement than swapping variable-size segments, as was the case with OS/2 1.x.
The SDK got here with a nifty instance demonstrating the digital reminiscence in OS/2 2.0:
The 32-bit programming mannequin was fairly completely different from what DOS and OS/2 1.x programmers have been used to, however it was easy. For probably the most half, paging was solely clear and programmers didn’t have to fret about it.
Simply as importantly, the flat reminiscence mannequin made porting from different platforms a lot simpler, as a result of it was just like the programming mannequin utilized by 32-bit UNIX platforms.
DOS Bins
The DOS assist in OS/2 6.78 appears pretty practical and full. The consumer interface for setting DOS properties seemed fairly completely different from the launched OS/2 2.0, however the precise settings look acquainted:
The massive information was after all the power to run DOS in a window:
Evidently, OS/2 6.78 was fairly able to working a number of DOS containers on the similar time, in a mixture of windowed and full-screen periods. That was one thing OS/2 1.x might solely dream of.
It’s extremely doubtless that Microsoft leveraged expertise with Home windows/386 when designing the OS/2 MVDM subsystem, though the precise implementation was fairly completely different and doubtless didn’t share a lot if any code.
Though there maybe wasn’t a lot level in it, the event instruments shipped with the SDK may very well be run in a DOS field:
The 32-bit executable the SDK produced after all did not run below DOS.
Judging from modern press studies, the DOS assist within the OS/2 2.0 SDK labored moderately properly even within the first December 1989 launch. The June ’90 launch was little question even higher.
What If
The 6.78 construct of OS/2 2.0 feels surprisingly secure and full. The quilt letter that got here with the SDK burdened that Microsoft builders had been utilizing the OS/2 pre-release for day-to-day work.
The minimalist, hybrid method allowed Microsoft and IBM to leverage an current practical and secure working system (OS/2 1.2) and prolong it with main new performance (32-bit purposes, DOS containers).
After seeing how far alongside OS/2 2.0 was in June 1990, it sounds very credible that the Microsoft/IBM break up delayed the discharge of OS/2 2.0 by a minimum of a yr.
If Microsoft and IBM launched 32-bit succesful OS/2 with good DOS compatibility someday in late 1990 or early 1991, it will have fairly doubtless prevented Home windows 9x from occurring, and as an alternative of Home windows NT we’d be working NT OS/2, in response to the unique plan. However that future by no means occurred.