Research Stream: OS/2 1.0 Explorations

From DisNCord Community Wiki
Jump to navigation Jump to search

This needs to become an infobox:

Description

Questions Asked and Answered

These were questions I wrote down and asked before doing the stream to try and answer them, and my collected feelings over them.

What was OS/2 1.0 like to use?

Assuming you could get it to work, OS/2 1.0 was not a bad experience in and of itself. Even on an emulated 6Mhz 286 you could switch and load multiple applications at once, and it was quite easy to run Word and Multiplan side by side, while having WordPerect 4.2 present and accounted for. In short, period correct DOS applications (and even Windows 3.0) worked just fine.

The system requirements were extremely steep; at a minimum, Microsoft OS/2 seems need at least 512kb of conventional memory, and an additional 512kb of XM to run. It may actually require 640kb convention memory, but this wasn't tested, but that would be commonplace by the 90s, when Windows 3.0 came around, however, had the family mode API been more used, it could have provided a solid upgrade path over DOS 3.3 and MDOS 4, especially given it could use both the 80286's segmented protected mode, and the 80386's 32-bit segment size limits.

Furthermore, Program Switch/TSHELL is essentially just a more refined version of MDOS 4. Had MDOS4 and OS/2 been more successful, we may have seen a much more text UI based take on multitasking, than the one that was built around Presentation Manager/Program Manager. That said, DOS based multitasking programs like DESQview were pretty successful.

Was OS/2 a decent development platform?

That's difficult to answer at this point. I know that OS/2 was at least relatively well supported as a development platform, and that Microsoft used it as a host platform for Word, and several other products until transitioning over to Windows NT. Porting a console application from DOS to run on OS/2 is relatively straight forward from what I've seen of the Family API.

While I did install MS C compiler, I haven't really tried to do much development on it. However, while there were some IDEs in this era, its not uncommon to have had to quit out of the editor, run the compiler, relink, and more. Projects were probably more held together with batch scripts and good intentions since microcomputers were quite limited. Tools like make were either too bulky or weren't needed yet.

At least some versions of OS/2's toolkit included MEP or SKED, a full screen editor, and other commercial ones were available. Watcom provided a port of vi out of the box. There were at least two versions of the development tools; the one included in MS C 5.1, and those included on the toolkit disk. The toolkit disk seemed very much for those who wanted to "bring their own compiler", and had the linker and other associated tools needed but wasn't a complete package.

This is similar to how the Windows 1.0 SDK had the link4 linker, as well as things like the resource compiler, but required the use of MASM, Microsoft Pascal, or Microsoft C. I'm not certain if this predates OMF files, but there may have been a de facto standard in this era.

What were the absolute minimum requirements to use OS/2 without Presentation Manager?

OS/2's 1.0 emory map from the technical reference guide.
OS/2 Memory Map without DOS compatibility box

OS/2 1.0 can run without a hard drive[1], on 512kb of XMS, and a 6MHz 286, and appeared to use about 2.5 MiB of disk space when installed, before counting swap space. However, in this configuration, the DOS box must be disabled[2], which allows for only running OS/2 based applications. Presumably this means that OS/2 does not normally use much if any conventional memory, and instead loads above the 1 MiB line.

Thus, it appears at first glance that the DOS compatibility box maps of all of conventional memory to DOS applications, with some space of OS/2 left to load high. OS/2 apparent high memory requirements appear to entirely come from having to shoehorn in DOS compatibility. That's about 2.5% MiB of disk space, or 5-10% of available drive space of the time, a not insignificant amount of space. However, MS OS/2 at least included a OS/2 compatible BASIC[3], although compatibly wasn't tested with the PC side of BASIC.

From what I can tell from testing and more, OS/2 essentially suffered from trying to support DOS applications while running in the 80286's protected mode. had it been possible to dynamically allocate or deallocate the DOS box without editing CONFIG.SYS, it would have likely been a much more capable system overall, since that would free up a significant part of main system memory.

UPDATE: January 14th, 2023: Dr. Shuppet found a diagram and description in the IBM technical reference manual that shows the memory map, and describes how this all works. Conventional memory is set aside from for DOS, and then OS/2 programs load above whatever RMSIZE= says in CONFIG.SYS. This also shows how I/O segments and the like are allocated.

Is this an upgrade from DOS (especially Multiuser DOS 4)?

If you could run with straight OS/2 applications only, then yes, I would say this is an upgrade. Being able to multitask across multiple OS/2 sessions worked very well, and while there was no graphical interface, this is superior to job switching with Ctrl-Z and bg/fg on a UNIX system of this time period. In fact, the experience is much more similar to what I would expect on a IBM 3270 based system, with full screen terminal capability.

That may have however been consistent with other IBM products. IBM hadn't been directly involved with the creation of Windows, it had been a Microsoft product from the getgo. Instead, IBM had released TopView[4] as their graphical solution of choice which competed with Windows 1.0. The JDA with Microsoft was to then go on and form the basis of CP-DOS/and DOS 5.

However, it's a more questionable upgrade if many applications had to run through DOS compatibility box. In which case, the very hefty hardware wasn't being used to its full capabilities because MS-DOS software still mostly fit in conventional memory throughout this entire era. Its not uncommon to find 5150s or ATs with DOS 5 showing how late they were used. It's also not uncommon to find software on bootable floppies.

Many IBM programs were actually shipped on DOS floppies that ran a replacement COMMAND.COM, and some like NetWare licensed DR-DOS so their disks would be bootable. It probably wasn't uncommon in the era of floppy disk copying that people would just create system disks, and I vaguely remember doing this more than once. OS/2's 1.1's removal of creating bootable floppy disks may have been done as an anti-piracy measure, or to discourage writing command line applications. This is something to be researched further ...

How does this compare to Xenix, or other PC Unix and Unix-likes of the time

Xenix was available for the 8088, 286, and 386 from the Microsoft/SCO partnership of this era. This was probably the most common multitasking operating system run on the 286. To multitask on the 8088, Xenix has imposed some strict rules on how segments could be used, similar to Windows 1.0 of the era. Documentation from the era talks about compiling Windows applications from a Xenix host, and I've seen some discussion that there was at least ideas on the basis of running Windows on top of a 286 protected mode operating system based on comments from Raymond Chen and others.

Xenix was almost an entirely command line based system, and essentially required a deep understanding of UNIX to use. The most advanced editor on the system would be vi. UNIX, by design assumed it was running over serial terminals. Word and Multiplan were available for UNIX, including a Xenix version, however, UNIX systems were considered multiuser, and software for them were priced accordingly. Xenix for instance was approximately $700 USD, while OS/2 Standard Edition's list price was $325.

However, Xenix was a considerably more complete system, and could be used to do productive work out of the box. OS/2 though, could have been a piece meal upgrade.

What problems were visible here that were only obvious with hindsight?

The immediate and obvious problem was the lack of native applications. By and large, while Microsoft applications were released as family mode applications, OS/2 was rather poorly supported overall. Had OS/2 been a relatively cheap upgrade, and, most importantly, didn't mandate the use of Presentation Manager, it would have been a far more successful product overall, since the cost of a graphical user interface running is exceptionally high.

There's also no indication of resources being used. For example, when testing Quarry Manager and Database manager, they ran with 2 MIB of member, but were paging so hard as to be basically unusable. Increasing the system memory of 8 MiB (a truly ridiculous amount for the time period) considerably helped since there was no more paging, but there was no visual indication that this was the problem. Windows 3.1 showed free member in the about box of most programs, while Windows 9x offered the resource manager, and NT offered statistics in task manager. The lack of feedback very much didn't help things.

That said, it feels like the TSHELL based environment was very much more of a step forward than what came afterwards.

What Is The Difference Between IBM and MS OS/2?

This question was added after the stream, as the difference was much larger than was originally apparent

OS/2 was generally released in two main editions, IBM branded, and Microsoft OEM branded. This was common practice at the time, since each PC vendor was expected to license DOS for their machines. However, Microsoft released the source code to DOS 1.x and 2.x as sources several years ago, which revealed more details that are relevant here.[5]. In DOS OEM adoption kits or OAKs, there's what is known as the IBMVER flag, which changes several behaviors in DOS.

The details of these are not relevant here, but it's known that Microsoft appeared to largely disagree with many of these changes, and provided other OEM's with the option to build DOS with or without the IBM changes. Over time, the IBM specific changes fell out, and by DOS 5, there was only one Microsoft release with minor vendor tweaks past that point.

This is largely true of OS/2, with a specific IBM PC version, and a more generic Microsoft OEM one. Unlike DOS, there does appear to have been a generic "Microsoft OS/2" that was at least included in the SDKs if not also available for retail. However, I had to use a Tandy OEM branded version to get one that will install in 86box, and couldn't get the Microsoft branded ones to start on any emulated IBM PC.

From reviewing the OS/2 Museum, the following differences are known

  • Microsoft OS/2 detects, and uses 386 specific instructions to enter and exit protected mode, instead of using a triple fault[6]
  • IBM OS/2 1.0 and 1.1 lacks 386 support, and only uses triple faults.[7]
    • It's known there was a 386 multitasking version of OS/2 1.0 betas, which ran on a Compaq DeskPro[8]

Interesting Timestamps

This is an incomplete list, please add as more are found:

Findings

Original Stream Plan

This documents the original plan and drafting as before this write-up was done, along with relevant notes

The idea is to create multiple machines with different setups and try to see what IBM and Microsoft both wanted out of OS/2

Exploring OS/2 1.0

As Microsoft (and likely IBM) strongly believed in dog-fooding, the goal is to create example environments representing what is known about how they used. Microsoft originally made OS/2's software development kit available to

Microsoft Developer on OS/2

Microsoft used OS/2 fairly extensively in-house as it was an early adopter of the 80286, and OS/2 was used to develop itself, and Windows NT, as well as several well known applications such as Word for Windows. In effect, OS/2 is a fairly solid development platform, and provides a lot more flexibility and customization than DOS of the era.

The goal is to create an example VM with the following components

  • Microsoft OS/2 1.0 running on a 80286
  • Microsoft Word
  • Microsoft Multiplan
  • Microsoft C Programmers Workbench
  • OS/2 SDK 1.0

I would have included a mail client, but there doesn't appear to be any good preserved period correct ones.

Internally, among other things, Microsoft used the M editor, originally for DOS, with an OS/2 port being made as SDKED, which is important since OS/2 1.0 doesn't ship with an editor. SDKED should be on the SDK, but even a DOS copy of MEP should be used if needed.

For good measure of the following third-party applications. These should be 8088 based, and period correct from 1985-1988ish.

  • WordStar for DOS
  • Rogue

IBM Powered Business

While Microsoft saw OS/2 as the future, IBM wanted it as a more advanced operating system for the 286. While IBM intended it for use on their own line of PCs, they did sell Extended Edition to partners that included two, and then three major apps.

  • IBM SQL Server (which is used as the basis for non-mainframe DB2 today)
  • Communication Manager, for interfacing with other IBM machines
  • LAN Server, which was a NetBIOS server, and domain master - It wasn't in 1.0, but check when it was added.

By and large, OS/2 was a very threadbare environment, with the most advanced built in app being the E editor, and very few third party applications. OS/2 had very high system requirements for that time period, and while it needs to be backed with research, it stands to reason that IBM was mostly catering to very high end power users, as well the small and middle business groups who were on the IBM PC already.

Things To Test

Here's some various bits to test:

  • Absolute minimum hardware configurations
  • DOS/Backwards Compatibility
  • Windows 1, 2, and/or 3.x Compatibility

Stream Questions and Answers Notes

To be cleaned up a bit (and probably need to add wiki box)


-- Things Discovered:
Windows 1.0 didn't work doesn't work under OS/2 1.0 DOS Box, but WIndows 3.x does

MS C 5.1 talked about creating a patch for IBMBIO (DOS specific file), using patch, with following notes
 - Hex Offset 1432
 - 1A -> 1C

End result broke the system entirely, might have not done it correct.

(Original comments)
 - OS/2 Patch in MSC4 talks about booting from floppy
 - OS/2 patch patches IBMDOS.COM?!

Microsoft Link/2 - 1987 Copyright

Microsoft included branded linker for OS/2; might work with DOS compiler than understands segments.

IOPL is set the YES natively on OS/2 1.0 on MSFT/IBM

CONFIG.SYS is drastically different between IBM/MSFT

Installer is drastically different from IBM/MSFT

Dates:
Microsoft OS/2 Unbranded - 12-15-1987
Tandy OEM - 4-11-88

Windows 3.0 SETUP.EXE has a family mode binary?

86Box seems to have problems with IBM 286 - worked with NEC BIOS - but unclear as to why

IBM/Microsoft Differences
 - Installer Drastically Different
 - IBM version starts to Progream Selector/MS version starts to command line

12 OS/2 Program Limit - Base Memory

Alt-Esc on OS/2 1.0 was the equivelent of Alt-Tab

DOS program is suspended when out of focus

IBM C/2 programming language (probably related to CSet/2)

Database Manager is exceptionally slow ...

DM requires exceptional amount of memory

Was the multitasking in IBM OS/2 exceptionally slow?

512 kb of XMS is the actual limit of how low it can go ...

---

Follow up stream topics:
DESQView
TOPView
- IBM PS/2 Memory SIMMS
  1. OS/2 install floppies can be quit to shell, and FORMAT A: /S works on OS/2 1.0 only
  2. PROTECTONLY=NO in CONFIG.SYS
  3. The banner said GW-BASIC, so it was likely a generic unbranded one built out of the GW-BASIC source Microsoft has posted
  4. https://forum.winworldpc.com/discussion/10221/software-spotlight-ibm-topview-1-00
  5. https://www.os2museum.com/wp/dos-2-11-from-scratch/
  6. https://www.os2museum.com/wp/loadall-strikes-again/
  7. https://www.os2museum.com/wp/installing-os2-1-x-in-a-virtualbox-vm/
  8. https://www.pcjs.org/software/pcx86/sys/os2/misc/87357/