OS/2 2.0 Limited Availability

In October 1991, IBM released OS/2 2.0 “Limited Availability” (or LA) at the Fall Comdex in Las Vegas. This was a semi-official release of 32-bit OS/2, effectively a beta version, although it wasn’t called a beta. At the same Comdex, IBM also announced that the planned release date of OS/2 2.0 was April 1992, a few months later than the previously expected 1991 release. However, IBM had promised 32-bit OS/2 by the end of 1991 to certain corporate customers, and OS/2 2.0 LA was a fulfillment of that promise.

It is useful to note that October 1991 also was when Microsoft made available the first limited developer release of Windows NT, but the final public release of Windows NT 3.1 was still about 20 months away. At the Fall Comdex, Microsoft talked about releasing NT in the second half of 1992, but that turned out to be wildly unrealistic.

Features

OS/2 2.0 LA was the first semi-public release of 32-bit OS/2, and the first major 32-bit PC operating system. Several variants of 32-bit UNIX had been already available (starting with XENIX in 1987), but none of those had any hope of becoming a successor to DOS, and most never even tried.

OS/2 2.0 LA supported 32-bit flat model applications, paged virtual memory, and virtual DOS machines (VDMs). In addition, the release sported a brand new desktop, the object-oriented Workplace Shell. While the other features had been already present to some extent in other PC operating systems, the Workplace Shell was new.

Another new feature was the Boot Manager, which allowed users to install and boot multiple operating systems. Dual boot support for OS/2 existed previously, but required OS/2 to share a primary FAT partition with DOS. The Boot Manager allowed OS/2 to be installed on an extended partition, formatted as either FAT or HPFS. Unlike the earlier dual booting solutions, the Boot Manager was essentially OS agnostic.

Many technologies were brought over from OS/2 1.x, such as the ATM font manager (PostScript fonts) or the REXX scripting language. REXX was now a standard component of OS/2, which greatly aided its wider adoption.

There was no built-in networking support, although networking was available with LAN Server and other products. There was no multimedia support yet, but that was something only just appearing on Windows.

IBM’s strategy for OS/2 was to become “better DOS than DOS” and even “better Windows than Windows”. For DOS, there was little question that this was true. For Windows, Microsoft did its damnedest to ensure that IBM would not succeed. In addition, OS/2 2.0 of course supported existing 16-bit applications written for OS/2 1.x.

Drivers

After Microsoft quit OS/2 development, IBM was left in a difficult position with regard to supporting non-IBM systems. OS/2 2.0 LA clearly demonstrated that. The operating system could be installed on a vanilla AT-compatible 386 or 486 system, but there were no drivers for storage controllers other than ATA, and no graphics drivers beyond VGA and perhaps IBM-compatible 8514/A or XGA cards (not typical in non-IBM systems). The disk drivers shipped with OS/2 2.0 LA were quite similar to the ones shipped with OS/2 1.3 (DISK01.SYS and DISK02.SYS), rather than the more modular storage drivers shipped with the final OS/2 2.0 release (IBM1S506.ADD, IBM1FLPY.ADD, OS2DASD.DMD, etc.).

On the other hand, IBM’s own PS/2 systems were well supported, including XGA and SCSI disks and CD-ROMs. Printer support, a perennial weak spot of OS/2 1.x, was much improved, and the LA release already included a broad palette of printer drivers.

Installation

Unlike Windows (including NT), OS/2 never required DOS to be installed and was supplied on bootable floppy disks. The OS/2 installer was significantly reworked for version 2.0; the first text-based installation phase was similar to the old OS/2 1.x installer, but now only handled disk preparation. FDISK could now be run interactively and allowed the user full control over disk partitioning, including Boot Manager installation.

The second phase of the installer was fully GUI-based, with a minimal Presentation Manager installation limited to VGA support.

The installer provided a good degree of control and was easy to use. It was close to the finished product with no obvious rough edges. The contrast with the Oct ’91 preview of Windows NT was especially striking.

Compiler

There was a somewhat unexpected commonality between IBM’s OS/2 2.0 LA and Microsoft’s Windows NT preview from October 1991: Both were built using the Microsoft C 386 compiler. Microsoft first developed a 386 C compiler around 1986 and used it to build the 32-bit version of XENIX. When the work started on 32-bit OS/2 2.0 in late 1988 or early 1989, the C 386 compiler was a logical choice. And the same compiler was also a logical choice for the NT team when work started on the Intel version of NT. The 32-bit compiler was not available as a product (except in the XENIX development kit, where it could be only used to create XENIX executables) until 1993 as Microsoft Visual C++ 32-bit Edition.

When IBM took over the development of OS/2 2.0 from Microsoft, IBM did not have a 32-bit x86 compiler. The IBM Toronto Lab was tasked with the development of one, later released as IBM CSet/2. However, OS/2 2.0 was still built with the older Microsoft compiler. The evidence is in the strings embedded in executables: “MS Run-Time Library – Copyright (c) 1990, Microsoft Corp”.

IBM had the rights to the Microsoft C 386 compiler and kept using it for building certain OS/2 components until the end; the compiler was shipped with the OS/2 DDK.

DOS and Windows

The DOS session support in OS/2 2.0 LA was fairly complete and mature, with no major differences from the final release. IBM emphasized DOS support and OS/2 2.0 was very good at running DOS applications, a huge improvement over OS/2 1.x. DOS sessions could be switched between windowed and full-screen at will, and there was a multitude of settings specific to DOS sessions.

DOS sessions in OS/2 benefited from a large amount of free conventional memory and a crashing DOS application did not affect OS/2, both well known weaknesses of the OS/2 1.x DOS support. It was even possible to boot a user-supplied DOS version from a floppy or a floppy image, and many DOS character device drivers could be loaded in DOS sessions.

The Windows support, on the other hand, was not yet finished. OS/2 2.0 LA came with a stripped version of Windows 3.0a, slightly modified and rebuilt by IBM. Only the core Windows utilities were shipped, perhaps to save disk space. Windows was only supported in standard mode and only in full-screen sessions, but with clipboard and DDE support.

Unfortunately for IBM, delaying the final release of OS/2 2.0 gave Microsoft enough time to release Windows 3.1. Because OS/2 2.0 GA only came with Windows 3.0, it was immediately obsolete.

Compared to the Oct ’91 preview of Windows NT, OS/2 2.0 LA was far, far ahead in this regard. The October preview of NT provided no support for DOS or 16-bit Windows applications whatsoever.

Virtualization Notes

Installing OS/2 2.0 LA in a VM was not entirely trivial. Some hypervisors (e.g. VMware) have a hard time with 32-bit OS/2 in general, while others (Virtual PC) support 32-bit OS/2 but fail to start the OS/2 2.0 LA installer. The symptom is a black screen with an error message about missing COUNTRY.SYS.

The culprit is the disk driver (DISK01.SYS) in OS/2 2.0 LA. As noted earlier, it’s quite different from the GA version, but also different from OS/2 1.3. Based on a quick analysis, the driver is probably unintentionally using a uninitialized variable when it first tries to operate the floppy drive. This does not cause problems on real floppy controllers, but many hypervisors do not handle the unusual request correctly. Slightly modifying the floppy controller emulation for VirtualBox took care of the problem.

There is another problem, which only appears intermittently. The OS/2 loader contains poorly written timing-related code which can trigger a division by zero on faster systems and the system is hung. The symptom is a black screen (usually) and lack of progress when booting the installation disk. This is a bug in OS/2 and affects physical systems as well. Rebooting the VM a few times usually gets past the hang.

This entry was posted in NT, OS/2. Bookmark the permalink.

14 Responses to OS/2 2.0 Limited Availability

  1. Ah that explains the floppy controller post.. 🙂 Very cool that you did get it running! I guess your additional modifications will be hopefully rolled into the next version of VirtualBOX?

    Windows NT being so far behind OS/2 2.0 isn’t that surprising as they didn’t start to even spec it out until 1989 (they hired Cutler in December of 1988?) And from what I understand they started work on the 32-bit version of OS/2 after they got 1.1 out the door…?

    One thing is for sure, the road to desktop 32-bit computing was a *LOT* longer then what was involved with something simple like Unix, even with the 386’s v86 mode to help in the transition.

    Oh and I wonder if the MS 386 C compiler was about as half baked on OS/2 as it was with NT? It was quite involved in building some simple programs, or maybe it’s my distaste of nmake. I don’t suppose you have any IBM/MS OS/2 2.0 SDK stuff, do you? 🙂

  2. Pingback: OS/2 2.0 LE | Fun with virtualization

  3. Oh it hit me, you can just overwrite GA’s install programs with LE’s and do the floppy boot with the GA kernel/drivers.. LE boots from Virtual PC 2007 without any tweaking.

  4. michaln says:

    Indeed, the post about floppy controllers was the result of research into how those darned things really work. At least the authors of the qemu FDC emulation had some major misconceptions (not sure about other emulators), which, to be honest, is not so surprising given the typical documentation. The logic diagrams in the IBM PC/AT Tech Ref really rock. And yes, the fix will be in some future update of VirtualBox.

    The work on NT and OS/2 2.0 started around the same time, basically Winter ’88/’89. Cutler et al came to Microsoft right around the time when OS/2 1.1 was being finished. But obviously OS/2 2.0 was not written entirely from scratch like NT, and it still took too long.

    The C 386 compiler was less half-baked on OS/2 because you didn’t have to convert the object files and didn’t have to go through hoops to link the result. It was probably possible to do ‘cl386 hello.c’ and end up with a functioning OS/2 executable, which was not an option on NT.

    If you download the OS/2 DDK (I hope it’s still available somewhere), you’ll find cl386 in there.

    Indeed it is shocking to think that the masses were more or less converted to 32-bit computing after Windows 95 came out, nearly 10 years after the first 386-based PC appeared!

  5. I think that is the most disturbing thing, the 2 biggest 386 products would be, expanded memory emulators, and Xenix…

    And to think that protected mode was largely ‘salvaged’ by dos extenders…. It would have been more interesting if the extender vendors instead tried to push an environment, and weren’t so punitive in terms of pricing.

  6. michaln says:

    Yes, expanded memory managers made 386 systems attractive for DOS users, even if they only ran pure 16-bit software.

    The DOS extender vendors were mostly competing with each other in the void created by Microsoft and IBM’s lack of focus on DOS. There wasn’t anyone with enough clout to set a standard. It could have been really interesting if a good 32-bit DOS extender based API had been widely adopted in 1990 or so.

    The one DOS extender which made a difference was DOS/4GW… royalty free of course. In the early days, there probably wasn’t much of a market for DOS extenders, so it makes sense they were expensive. The extender makers were mostly small companies who couldn’t afford to give away their core product for free. And the companies who could have done that (IBM and especially Microsoft) had little reason to prolong the useful life of DOS.

    Hmm, perhaps I should write about DOS extenders a bit, it was an important chapter in the history of PC computing.

  7. You should, DOS-Extenders and the 286 processor really set things back 10 years as the industry struggled with the fact that OS/2 didn’t “sell” (with a $3000++ SDK I wonder why!) the hell to get a 286 from protected to real mode, the clashes from independent ‘standards’, then VCPI, and the whole DPMI 0.9 vs 1.0, and the most popular DOS Extender that not only changed the industry, but the world.. DOSX from Microsoft.

    And even the relationship between Microsoft & Phar Lap, as they got OS/2 tools to run on DOS, extending the ‘family API’ but even NT core API’s on DOS… Or even how Microsoft used their TNT product and even ‘snuck’ in a royalty free redistribution version in Powerstation Fortran 1.0..

    While running 286 DOS extended stuff on OS/2 may have seemed strange, or really not that great as it’d require too many switches, there was no doubt that going into OS/2 2.0 & 3.0 that it HAD to be done as the people that wanted to ship big programs from mainframes & mini’s demanded something to be done ‘today’..

    At the time, I know I certainly felt, esp with DOS4/GW that OS/2 2.1 was the best DPMI host out there, it was even better then raw MS-DOS as it could always run more then one thing at a time….

  8. Yuhong Bao says:

    “Indeed it is shocking to think that the masses were more or less converted to 32-bit computing after Windows 95 came out, nearly 10 years after the first 386-based PC appeared!”
    I think it underscores how screwed up the whole mess is.

  9. Yuhong Bao says:

    “And the companies who could have done that (IBM and especially Microsoft) had little reason to prolong the useful life of DOS.”
    And I’d agree. Back in 1988 when Windows was ported to protected mode using a DOS extender, DR-DOS was only beginning to be a threat. By 1990 when Windows 3.0 was released, it was much bigger. And OS/2 never depended on DOS and could have been used to kill DR-DOS legally.

  10. ths says:

    I love this site! I came into contact with OS/2 with this exact release, build 6.167, for driver development. It still contained lots of bugs, but it was enough to start programming things. I skipped build 177 and went directly to 2.0 GA.
    I still regret that OS/2 has vanished.

  11. Michal Necasek says:

    What sort of drivers, if you don’t mind me asking?

    From what I’ve seen of the 6.167 build, it wasn’t something I’d likely want to use as my main system, but quite adequate at showing where things are headed and developing software for it.

  12. ths says:

    I was a freelance programmer then and started developing for multiple customers, mostly for proprietary hardware extensions, e.g. communications cards with unusual chips, to control facilities, later I was developing drivers for telecommunications, like proprietary modems, for ISDN etc.
    I adopted OS/2 as my main system and I was running a full-fledged Fido and Usenet node for more than 10 years. Later on I ported lots of Gnu unix tools to OS/2, and my latest 3.0 system resembled linux more than OS/2.
    I’d still love to have a running OS/2 VM but had no success so far. Last year I assembled an old PC system with danis506.add and could install to a 10 GB IDE disk, but the RAM module failed some days later and I didn’t bother to buy hardware this old any more ;(

  13. Michal Necasek says:

    I did a tiny bit of similar work much later, in the early 2000s. OS/2 was used a lot for all sorts of industrial control tasks (ATMs and much more), often with custom software and also hardware, so customers needed drivers for all kinds of unusual devices.

  14. Yuhong Bao says:

    “The work on NT and OS/2 2.0 started around the same time, basically Winter ’88/’89. ”
    I just realized this was just after the Morris worm. Yes, I am talking about the decision to use a flat instead of a segmented address space.

Leave a Reply

Your email address will not be published. Required fields are marked *