OS/2 Research Outline: Difference between revisions

From DisNCord Community Wiki
Jump to navigation Jump to search
No edit summary
Line 80: Line 80:


== Understanding the OS/2 Development Environment ==
== Understanding the OS/2 Development Environment ==
=== Hello World on OS/2 1.0-1.3 ===
=== Hello World and Example Applications on OS/2 1.0-1.3 ===
The simplest application for a given platform is "Hello World", something I've documented extensively on both Windows, UNIX, and Linux in the past. OS/2's Hello World program has evolved as IBM replaced the toolchain (and tools) several time throughout the lifespan of the platform. Originally, IBM used Microsoft licensed tools, before replacing it with versions of CSet++ and Visual Age.
 
It's worth looking at the built in example applications from the varoius SDKs over the years to understand the full evolution of OS/2 from start to finish, especially in the era between IBM and Microsoft, as well as 3rd party toolkits that were commonly used such as Watcom.


=== Comparison to DOS and Creating Family Mode applications ===
=== Comparison to DOS and Creating Family Mode applications ===

Revision as of 12:09, 2 January 2023

This is a set of wiki pages dedicated to researching the rise and fall of OS/2, with the intent on creating a larger record of the 16-bit and early 32-bit era of IBM's ill fated operating system, with stream ideas, research notes, discussion and more.

This is an effort to fundamental answer is to document the reasons as to why despite IBM's best efforts, OS/2 failed in the marketplace in favor of Windows 3.0, an operating system that is technically inferior in almost all regards.

Goals Of This Project

The fundamental goal of this project is to create a pretty definitive guide to the early history of OS/2, including showing how it worked, functioned, and more as a primary source, and should interest remain, the creation of multiple realtime videos and/or documentaries to document one of the more pivotal moments of the late 1980s, and early 1990s.

This wiki page should use citations for all major facts and statements, as they will be cited in any video. It's expected that each top level section will become its own "realtime video" at some point.

Overview of the 16-bit Era of OS/2

Because the level of general knowledge of OS/2 is so low, a basic understanding has to be established about the 16-bit era needs to be established. The closest thing to a canonical document on this era exists at the OS/2 Museum, but setting up usable and working systems with native apps is essential ...

Understanding The Pricing Of Equipment for OS/2

OS/2 runs decently on maxed out equipment, but that's easily going into five figures or more. We need to figure out what was acceptable for a developer system in this era ...

It should be important to research what hardware each version of OS/2 may have run on. For example, CGA cards on the AT were pretty common. Understand how OS/2 behaved on low end hardware vs. Windows of the era.

Another important note is that OS/2 was created as a replacement to Microsoft's Xenix (a licensed port of AT&T). The chronology here should be determined to understand more factors of the OS/2 mess.

Things to research:

  • OS/2-Xenix chronology
  • Typical low, medium, and high end PC hardware of the era
  • What, besides DOS, was actively used in this time period

OS/2 Pre-alphas and 1.0

Scan of page InfoWorld 1987

What was the actual intended goals of OS/2? It's often cited that OS/2 was intended to deal with the shortcomings of DOS, namely lack of multitasking and memory restrictions, but is this actually true?

It's known that Microsoft offered a $3,000 SDK and training materials which had basically everything you could want and more in a single box[1], but IBM based material is somewhat scant ...

Topics to be researched:

  • Descriptions of OS/2 (or ADOS) as found in early programming reference manuals
  • Comparison of early alpha versions of OS/2
  • In-depth reading and review of the manual and more

Questions to be answered:

  • What were the stated goals of OS/2?
  • What was actually provided out of the box in 1.0?
  • IBM marked OS/2 as a server - understanding the relationship here is important

OS/2 Editions

OS/2 1.0 Splash Description Page
Microsoft OS/2 Splash Screen Startup

In general, OS/2 was first created for IBM hardware, and then by Microsoft, resold for other PC compatible vendors. OS/2 was also available directly from Microsoft as an upgrade. There are known code and behavior differences between the two editions, as well as significant differences in documentation. However, all editions of OS/2 should be able to run the same binaries.

In general, IBM branded versions only ran properly on IBM machines or extremely compatible clones, while Microsoft versions were, for the most part, more forgiving.

IBM Edition

IBM editions are generally considered the "canonical" branch of OS/2, as they were developed for and used on IBM's PS/2 line of machines, which were generally the highest end machines with microchannel architecture support. If you were going to shell out the money for a MCA system in the late 1980s, you almost certainly were running either OS/2 or Xenix.

The question is, what did OS/2 specifically bring to the table for power users of this session. The canonical answer would be "Presentation Manager", but is PM actually that good?

Microsoft Edition

Similar to DOS of the era, Microsoft sub-licensed OS/2 to any OEM who wanted it, creating things like "Nokia OS/2" and "Intel OS/2". There are some code changes, possibly for compatibility reasons. It's likely that OS/2 was at least available for licensing for non-IBM compatible PCs, and may have had an actual OEM adoption kit, similar to the Windows 2/3 OAKs. While unlikely to ever turn up, a good look at the differences between editions is warrented. IBM OS/2 for instances uses the undocumented but highly commonly used 286 LOADALL instruction.[2]

IBM Extended Edition

Although not sold to end-users, IBM also offered an special version of OS/2 to its partners and vendors, which included applications for use in big business, and more importantly, talking to expensive IBM hardware of the era. This had three essential components[3]

  • Communications Manager - allows interfacing to various IBM mainframes
  • Database Manager - A SQL database that was later ported to UNIX as a non-mainframe version of DB/2
  • LAN Requester - Client for accessing LAN Server/Manager and NetBIOS shares on the network. May not have been in OS/2 1.0 (need to check)

LAN Manager

OS/2 was also a very popular server platform, completing with Novell NetWare, and UNIX systems of the era, and was in use well into the NT era. Microsoft sold their LAN Manager package as an add-on instead as a dedicated edition. Included were the following components:

  • OS/2 LAN Manager Server
  • OS/2 LAN Manager Workstation (or Requester in IBM parlance)
  • DOS LAN Manager client software
  • HPFS386 filesystem for OS/2
  • Novell NetWare interoperability tools
  • DOS and OS/2 Drivers for a number of NICs

It's unclear how much DNA is shared between IBM products and Microsoft ones.

OS/2 as a Server

One of the biggest roles of OS/2 in the 90s was its use as an application server, both for handling file and printer sharing, and was essentially the upsale from IBM PC LAN products of this time period. OS/2 was likely more suited as an application server than NetWare at the time, due to NetWare being monolithically linked, and only having "value addon packages", vs. the NLMs that came with NetWare 2.x.

Was the PC network of this era essentially just NetBIOS shares, or were there more functional aspects to it like using databases and more, and how did this interact with software of the era ...

Understanding the OS/2 Development Environment

Hello World and Example Applications on OS/2 1.0-1.3

The simplest application for a given platform is "Hello World", something I've documented extensively on both Windows, UNIX, and Linux in the past. OS/2's Hello World program has evolved as IBM replaced the toolchain (and tools) several time throughout the lifespan of the platform. Originally, IBM used Microsoft licensed tools, before replacing it with versions of CSet++ and Visual Age.

It's worth looking at the built in example applications from the varoius SDKs over the years to understand the full evolution of OS/2 from start to finish, especially in the era between IBM and Microsoft, as well as 3rd party toolkits that were commonly used such as Watcom.

Comparison to DOS and Creating Family Mode applications

Exploring Native OS/2 Apps

Limits of Preemptive Multitasking

Capabilities and Limitations of OS/2

There's a lot that's been written that tries to determine why OS/2 failed on a technical level, but it's difficult to determine if this was justified in fact or fiction. Some parts of this are people who are familiar with other operating systems, combined with relatively sparse documentation may cause people to have a lot of mistaken assumptions. Some of the major points to be researched and discussed follows.

How Hamstrung was OS/2 By the 286

One of the largest repeated beliefs is that OS/2 was hamstrung by the design of the 286. There's certainly reason to believe this, since NT was intended as "Portable OS/2", and the system remained a mismatch of 16-bit and 32-bit code to it's end. However the 386 was fully supported with MVDM by 1992, when OS/2 2.0 first shipped. In practice, the 16-bit versions of OS/2 seem very similar in capability to the 16-bit versions of Windows, and are arguably closer to Windows 9x than they are DOS.

The largest problem appears to not so much the protected mode of the 286, but the lack of a way to virtualize DOS (see below). The FOOTBALL demo, which uses V8088 mode on a 386 to provide DOS multitasking was available in 1986-87, although 386 systems would have been extremely rare at the time. OS/2 1.2 was essentially the last great set of features for the 1.x family, with 1.3 being more of a bug release, and parting of ways for Microsoft. Need to research this into a timeline.

HPFS

HPFS was intended as a replacement for the aging FAT (file allocation table) filesystem. Standing for High Performance File System, HPFS brought support for long filenames, and extended attributes to OS/2 1.2, and is required for many OS/2 applications to function properly. HPFS was also supported on NT 3.1 and 3.5, and later versions through the PINBALL driver. From what I know, NTFS is essentially an extension of HPFS, with similar data structures and more, but this should be looked more into by comparing the NTFS and HPFS drivers in the Linux kernel.

Use of Segmentation in Protected Mode (such as IOPL)

One notable feature of OS/2 was its use of the x86's protection rings. It's one of the few known examples that use ring 1 and 2, and the IO privilege separation levels of the 286 and later. Word for Windows provides DE.EXE, as part of its UI designer that requires IOPL=yes to be enabled in CONFIG.SYS, and other applications can do similar based on their manifest (although I need to check the LX format documentation). This also meant that OS/2 could, at least theoretically, support features like no eXecute on the 286, and more, providing a level of application hardening that didn't exist until decades later.

Unfortunately, as a single user operating system, it also had limits on how much this could actually help things. Perhaps research into this design decision is warranted, especially in places where user authentication is used.

Networking with NetWare/LAN Server/LAN Manager

Although mostly unknown by home users, both DOS and OS/2 supported network operations, leading to the term network redirector. From reading in the Windows NT Resource Kit, and other places, communication between applications happened in the form of named pipes, and IPC process namespaces. Its worth looking more in-depth how NetBIOS related networking works, as possibly part of a larger series on the value of the network. In many ways, OS/2 pioneered much of what would be the NT network stack, including being the home of domains and more.

Furthermore, NetWare Client for OS/2 1.1[4] has recently turned up, and a beta of NetWare for OS/2 1.0[5] has also recently shown up, so it might be worth taking these systems out for a spin.

DOS/Windows Compatibility

One of the largest criticisms was horrid backwards compatibility with DOS and Windows. The 16-bit versions of OS/2 could only run one DOS application at a time in what commonly became known as the penalty box, which was a DOS session that was constantly running. This is due to how the 80286 didn't provide any support for virtualizing real mode applications, and delays involving OS/2 2.x meant that 386 support didn't ship until 1991-92, well past Windows/386 and Windows 3.0.

There's a known prototype of OS/2 1.0 for the 386 called FOOTBALL which is archived on pcjs.org which does have multiple DOS applications, running through virtual 8088 mode. The notes included show that it was an internal demo meant to be shown to Bill Gates. There were relatively few native applications for OS/2, especially as compared to Windows, so compatibility was definitively something to be mindful of, as stores would have no or limited stock of OS/2 applications.

Later OS/2 Era Stuff Worth Researching

  • OS/2 on PowerPC
  • Embedded OS/2 such as on the New York City Subway
  • eCommStation and AcraOS