Windows Presentation Manager

Any programmer even passingly familiar with the Windows and Presentation Manager APIs is aware that there are significant similarities. When other windowing APIs, such as X11 or Mac OS, are taken into consideration, Windows and the Presentation Manager look like siblings, almost twins.

The similarity is not coincidental. The OS/2 GUI was even referred to as the “Windows Presentation Manager” in the early days of OS/2. The OS/2 Presentation Manager and Windows 2.0 were developed in parallel, and Microsoft was stressing the similarities.

The exact timeline is not easy to establish, but a few points are clear. The Presentation Manager was announced in April 1987; at that time, the functional specification already existed, but the code was very far from being finished. In mid-1987, when Microsoft started shipping the first OS/2 SDKs, the complete Presentation Manager API documentation was part of the kits, even though there was no code yet. To get developers started, the OS/2 SDK included Windows 1.04 and the corresponding SDK. Continue reading

Posted in OS/2, Windows | 13 Comments

Installing OS/2 Warp in a Virtual Machine

Installing OS/2 Warp in a virtual machine isn’t difficult, but there are a few pitfalls. The issues are easy to work around, but sometimes quite difficult to diagnose, especially for users not intimately familiar with OS/2. In general, the problems are the same one might encounter when installing OS/2 on a physical system.

The first issue is that OS/2 Warp (and older 2.1 and 2.11 releases) may hang immediately when the system starts booting, even before displaying the “boot blob”.  This problem was tracked by IBM as APAR PJ23092 (Faster Intel Machines fail to boot). IBM made updated OS2LDR files available in 1998, but those only reduce the incidence of the problem and do not fully fix it. At any rate, re-trying the boot usually helps.

The next problem is disk size. Using a disk larger than 2GB is not recommended unless the boot floppies are updated with newer disk drivers. However, a larger disk should not be necessary. For plain OS/2 Warp, there should be no other showstoppers—but read on. Continue reading

Posted in OS/2, VirtualBox, Virtualization | 46 Comments

MS OS/2 Patents

When Microsoft OS/2 1.3 boots up, it prints a prominent message “U.S. Patent No. 4779187; 4825358”. What are those patents? As it turns out, it’s really just one invention, which for reasons perhaps clear to a patent lawyer was essentially assigned two patent numbers.

The application for patent 4779287 was filed on April 10, 1985 by James Letwin of Kirkland, WA. James Letwin is better known under his middle name, Gordon. Gordon Letwin was Microsoft’s chief architect of OS/2, although in April 1985 no one had heard of OS/2 and the entire project was in very early planning stages. The patent was granted on October 18, 1988, around the time OS/2 1.1 was released.

Patent 4825358 was applied for on June 18, 1987. At that time, OS/2 1.0 had not yet been released but the project had a very firm outline, with the first betas already shipped. This later patent was granted on April 25th, 1989, several months before OS/2 1.2 was released. Patent 4825358 contains the verbatim text and all drawings of patent 4825358, with several additional claims. Continue reading

Posted in OS/2 | 3 Comments

Installing Windows NT 3.x in VirtualBox

All Windows NT 3.x versions can be used in VirtualBox, although they are not officially supported (unlike all following NT versions) and no Guest Additions are provided. Furthermore, for Windows NT 3.1 and 3.5, an extra step needs to be taken before installation.

In all cases, it’s best to start with a guest configured for NT 4. It is advisable to add a floppy drive and, if audio is desired, use SoundBlaster 16 emulation. USB may be turned off completely since there are no drivers, and the emulated network adapter must be left at AMD PCnet. SMP is not supported.

Unlike NT 4, the Windows NT 3.x installation CDs are not bootable. It may be easiest to start by installing DOS with CD-ROM drivers and running the DOS based installer from the CD. For NT 3.1 that is the only option due to lack of ATAPI CD-ROM drivers. For NT 3.5x it’s possible to boot from floppy images and continue installing from CD. Continue reading

Posted in NT, VirtualBox, Virtualization | 22 Comments

Why OS/2 is Hard to Virtualize

For a number of reasons, OS/2 is surprisingly difficult to virtualize, much more so than DOS, Windows 3.x, Windows NT, Windows 95, or many variants of UNIX. Most of these reasons have to do with OS/2’s architecture and history.

To begin with, old OS/2 versions (especially the versions older than Warp 4) are difficult to run even on physical Pentium III class hardware. There are various software timing loops which simply do not work on fast processors and cause division overflows and similar errors. This problem especially badly affects almost all versions of OS/2 1.x. Support for large IDE disks tends to be problematic, although that is not something to blame on OS/2 directly; the IDE interface was a moving target. Here virtualization in fact helps, because virtualizing, say, a 120 MB IDE disk is much easier than finding a real functioning disk with such a tiny capacity.

Then there are numerous problems specific to virtualization. Let’s start with the oldest OS/2 versions. IBM OS/2 1.0 and 1.1 uses 286-style switching from protected to real mode. This method resets the CPU and relies on the BIOS POST code to resume execution at a specified point; the reset is usually accomplished by triple faulting the CPU. Neither VMware, Virtual PC, nor VirtualBox support this method and treat the triple fault as a fatal error. Interestingly, the corresponding Microsoft OS/2 versions detect a 386 CPU and use the much more efficient method of modifying the CR0 control register. Continue reading

Posted in OS/2, Virtualization | 6 Comments

The Importance of EMM386

It is fairly obvious that Compaq’s Deskpro 386 changed the PC hardware and was probably one of the major reasons why we aren’t using PS/2 compatibles today. It may be less obvious that CEMM, an offshoot of the Deskpro 386 better known in its later incarnation as EMM386, also significantly shaped the PC software landscape.

When the Deskpro 386 appeared, it faced an interesting problem: There was no popular operating system capable of utilizing the advanced features of the i386 processor. Compaq marketed the Deskpro 386 simply as a very fast (and quite expensive) PC compatible designed for running DOS applications. Even after the first UNIX ports appeared, DOS was so popular and ubiquitous that users did not feel sufficiently enticed to switch. That was compounded by the fact that RAM was very expensive and systems with more memory than DOS could handle were rare around 1987.

CEMM/EMM386 ensured that DOS could handle quite a lot of memory. CEMM, or Compaq Expanded Memory Manager, was a very innovative piece of software. By utilizing the virtual 8086 (V86) mode of the i386, CEMM could provide 8086-compatible expanded memory (EMS) to existing DOS applications without requiring special hardware (as an 8086 would). Continue reading

Posted in DOS | 4 Comments

NT and OS/2

OS/2 and Windows NT have an interesting and checkered common history. Until late 1990, the operating system eventually released as Windows NT was known as NT OS/2. Despite its name, NT had very little in common with OS/2 as it existed at the time (that is, OS/2 1.x) in terms of design or source code. The core NT design team led by Dave Cutler, mostly consisting of ex-Digital programmers, had very little experience with OS/2 or even PCs. At the same time, the plan was to provide compatibility with existing OS/2 applications and for OS/2 to be the dominant ‘personality’ of NT.

The NT kernel’s (or more correctly the NT Executive’s) design was radically different from the design of OS/2 1.x. While OS/2 1.x was a 16-bit OS designed exclusively for the segmented architecture of the Intel 286/386 CPUs, NT was a portable 32-bit OS with paged virtual memory, deliberately ported to the 386 PC platform relatively late in its development cycle. While OS/2 could not run on anything but a 286/386 without a complete rewrite, NT could not run on a 286 ever. Continue reading

Posted in NT, OS/2 | 8 Comments