Microsoft OS/2 2.0 SDK Beta

Something interesting crossed my desk today.  The much-fabled Microsoft OS/2 2.0 SDK beta.

OS/2 2.0 SDK in action

OS/2 2.0 SDK in action

Sadly, this does *NOT* include the operating system, just the C compiler and the SDK bits. As you can see, the C compiler is version 1.00.075, a full year+ before the WindowsNT 3.1 1991 pre-release which had 6.00.080. An interesting thing is that the C compiler can be run from 16bit OS/2.  Unfortunately, the EXE’s produced by the SDK will not run on a production OS/2 system.  The fault lies with the linker & resource compiler.  However swapping those two components out for production versions seems to remedy this and produce working executables.  The only SDK examples that don’t work correctly involve the creation of DLL’s.  I’m sure it is again related to either the linker again, or from some gem I saw in the SDK saying you should always link by ordinal, and never by name.  Apparently a bunch of function calls were going to change name from OS/2 1.2 to 2.0.  It is interesting to me that going from the old Windows 3.1 to NT days we always had so much issues with people calling by ordinal vs the function name.  It broke all the time, but it is funny to see possibly where this bad habit started.

Import and link by Ordinal? What were they thinking!?

Import and link by Ordinal? What were they thinking!?

For those who don’t know DLL’s contain a table of functions sorted by NAME, and NUMBER.  The names have to be unique but the number depends on the order in which the DLL is linked together.  And it is very easy for someone to accidentally change the link order, and next thing you know the ordinal are all wrong.

Otherwise, yeah the tools from the MS OS/2 2.0 beta working in 2013.  I do believe that the object files can also be strung together with some DOS Extenders from the era to produce DPMI exe’s.

But I’ll save that exercise for later, like here! targeting OS/2 with Visual Studio 2003!

OS/2 1.21 under Qemu 1.6.0

Microsoft OS/2 1.21

Microsoft OS/2 1.21

 

So close, and yet so far away.  I’m using a ‘restore’ image to do this.. Basically I have an existing OS/2 1.21 machine that I made a backup of, using MS-DOS & OS/2.  I restore the MS-DOS backup with an altered config.sys that dumps me to a cmd.exe prompt with no Presentation Manager.  Then I restore the OS/2 image onto itself and then reboot into OS/2.  I know it works since I’ve used this to setup OS/2 onto VirtualBOX & a physical PC before.  Qemu boots half way through but the letter ‘o’ is corrupted for some reason, and the keyboard doesn’t respond once it’s booted.  But the cursor blinks away like it is waiting for you to type anything.  It is worth noting that OS/2 1.x doesn’t know what IDE CD-ROM’s are, and you have to remove the physical drive to boot this up.

Oh well it is a shame.

European MS-DOS 4.00 aka multitasking DOS

DOS 4.00M

DOS 4.00M

 

So this gem popped into my mailbox as everyone over at os2museum was whipped into a frenzy over the apparence of the predecessor to OS/2 making a showing!

So what is this, where did it come from?

To quote the excellent book, Inside OS/2 here is what this version is all about:

Microsoft started work on a multitasking version of MS-DOS in January 1983. At the time, it was internally called MS-DOS version 3.0. When a new version of the single-tasking MS-DOS was shipped under the name MS-DOS version 3.0, the multitasking version was renamed, internally, to MS-DOS version 4.0. A version of this product–a multitasking, real-mode only MS- DOS–was shipped as MS-DOS version 4.0. Because MS-DOS version 4.0 runs only in real mode, it can run on 8088 and 8086 machines as well as on 80286 machines. The limitations of the real mode environment make MS-DOS version 4.0 a specialized product. Although MS-DOS version 4.0 supports full preemptive multitasking, system memory is limited to the 640 KB available in real mode, with no swapping.

It is not feasible to support general purpose swapping without memory management hardware that is unavailable in 8086 real mode. This means that all processes have to fit into the single 640 KB memory area. Only one MS-DOS version 3.x compatible real mode application can be run; the other processes must be special MS-DOS version 4.0 processes that understand their environment and cooperate with the operating system to coexist peacefully with the single MS-DOS version 3.x real mode application.

Because of these restrictions, MS-DOS version 4.0 was not intended for general release, but as a platform for specific OEMs to support extended PC architectures. For example, a powerful telephone management system could be built into a PC by using special MS-DOS version 4.0 background processes to control the telephone equipment. The resulting machine could then be marketed as a “compatible MS-DOS 3 PC with a built-in superphone.”

Although MS-DOS version 4.0 was released as a special OEM product, the project–now called MS-DOS version 5.0–continued. The goal was to take advantage of the protected mode of the 80286 to provide full general purpose multitasking without the limitations–as seen in MS-DOS version 4.0–of a real-mode only environment. Soon, Microsoft and IBM signed a Joint Development Agreement that provided for the design and development of MS-DOS version 5.0 (now called CP/DOS). The agreement is complex, but it basically provides for joint development and then subsequent joint ownership, with both companies holding full rights to the resulting product.

As the project neared completion, the marketing staffs looked at CP/DOS, nee DOS 5, nee DOS 4, nee DOS 3, and decided that it needed…you guessed it…a name change. As a result, the remainder of this book will discuss the design and function of an operating system called OS/2.

So there you have it, OS/2 started out as a multitasking version of MS-DOS, one can even tell from some of the information on LINK4, that its architecture was also contributed to Windows, and much of how the original Windows 1.x and 2.x ‘wanted to be run from 286 protected mode, well I’d venture a guess that as OS/2 was being ‘born’ there were a lot of plans for this common architecture.  Of course I have no proof but it would seem to fit.. From Saving Windows from the OS/2 Bulldozer:

Thanks to Steve Wood’s original memory-allocation design, many of the changes involved bypassing real-mode code that served only to emulate the protected mode of the 286.

It would make sense at the time both multitasking DOS, being used for parts of early Windows, as both would be fighting the same problems regarding trying to live in the 640kb dos memory area.  While going with a protected mode in OS/2 there would be no need to maintain this, and they could start with a new memory model, Windows 3.0 went with an in house DOS Extender, and fleshed out more of its memory handling to be more 286 native.

Its a shame they didn’t go straight to 32bit stuff on the 386, bypassing the 286 but IBM was the proverbial elephant demanding 286 support.

For anyone wanting to try out this ancient OS, I was able to find out that it does run on DOSBox! So that means if you have a java capable machine you can quickly boot it up! The left alt key brings up the task switcher, and you can use the arrow keys to navigate.

DOOM runs.  I’m really still amazed at this, but it does crash on exit.  I think it was more so geared to small text mode stuff, much like what Windows 1.x or 2.x is capable of on a 286.

 

I got mentioned on Toasty Tech!

Right here!  Toasty Tech for those who don’t know has been collecting various screen shots of GUIs like since forever!

So it is kind of cool that I got mentioned over there, and for OS/2 of all things..!

Anyways, I thought it was worth mentioning.

Other than that, it is the prophesied end of some ancient calendar. If only it had any significance other than ‘happy cycle’.. I guess it is appropriate this being the ‘holiday’ season… Which for many may feel like the end of the world, but as they say, life goes on.

 

IBM OS/2 1.1 Extended Edition

I recently acquired a copy of IBM OS/2 1.1 Extended Edition, and I thought I’d at least cover what makes this version different from the ‘Standard Edition’ and the Microsoft version of OS/2 1.1

First off the IBM versions of OS/2 1.1 use the 286 triple fault method of switching from protected mode to real mode exclusively while the Microsoft kernel includes 386 detection & mode switch instructions.  The the VirtualBox timing patches won’t work with the IBM kernel & drivers while the Microsoft kernel & drivers boot up and work fine on the IBM diskettes.

IBM Kernel strings

Microsoft kernel strings

And as you can see another weird thing is that Microsoft keeps all the string resources in os2ldr, while IBM has them in os2krnl..

So with the Microsoft kernel & drivers, on the IBM diskettes, installation went pretty straight forward. And once the OS is installed, then you have to open up a command prompt and install the various Extended Edition components:

Which can be seen here as CMINST for Communications Manager, DSINST for the Database Server, QMINST for the Query Manger, and finally REQINST for the Network (NetBEUI) Requester Service.  The file server capabilities were sold as an addon, known as Lan Manager.

IBM OS/2 1.1 does include a tutor program on how to use the OS, and some general help for Presentation Manger.  I believe it wasn’t until 1.2 did Microsoft include one.

IBM OS/2 Tutor

As you can see it is kind of sparse but it does show the old school OS/2 logo.  In addition each of the EE components includes a tutorial, although they are all text mode..

OS/2 EE Overview

And as an example here is what the Communications Manager looks like

Communications Manager Tutorial

The sad thing is that the EE components are all full screen text mode.  There is no Presentation Manager integration at all here.  And I think this underlines a critical fault in OS/2 where there is separate text modes, both full screen & windowed that are incompatible with each other. Much like the first Lotus 1-2-3 for OS/2 ran in a full screen text window, you are blocked from seeing anything else at the same time, defeating the whole point of being able to multitask.

Communications Manager was the one thing that I did use, although it was honestly very disappointing   Its big thing at the time was communicating to Midrange (AS/400) and Mainframe (370/390) machines via SNA or X.25 . Also included is a basic ASCII dumb terminal emulation program that can do VT100 with Xmodem.  The real limiting factor is that it is limited to 9600 baud.  And this also brings out another long term deficiency in OS/2, the serial support was always underwhelming, and the majority of people eventually had to use the SIO drivers to get any decent performance.

The Database Manager is a simple enough SQL server, client.  It is capable of doing simple reports, and even ‘panels’ much like Oracle forms of late.  It seems robust enough on small sample tables, although I couldn’t imagine it handling anything of any major size by modern standards.  I would imagine it would be for DB2 type users trying to steer them away from DBase, Paradox or Oracle.  Although to be honest I’ve never seen it live in the wild but I’m sure someone did out there.  Also I can’t imagine running a SQL server on a 6Mhz 286.

Sidekick for OS/2

One interesting thing included in OS/2 1.1 EE is Borland’s Sidekick for OS/2.  While it didn’t make the cut in later releases it was a nice touch for 1.1 as otherwise it is pretty baren, as IBM & Microsoft seemed to feel that OS/2 should ship as barren as possible. Of all the applications though the PM notepad was the nicest.. Although I’m sure if it were 1988 I’d get more use out of the rest of sidekick.

For the heck of it, I’ve taken a VM of OS/2 1.1 and upgraded it to 2.0 and happily all the EE components work as well as they did on 1.1 .  Considering how picky the Warp upgrade was, it is kind of surprising.

So I managed to score 2/3’rds of the most rare version of OS/2 ever

Thats right I’m talking about the Microsoft OS/2 2.0 beta.

This is the badboy that cost some $2,600 back in 1989/1990 and its stall basically split up the IBM Microsoft OS/2 alliance.

Sadly I don’t have volume 1 (although the binder spine says so, I have to wonder if the binders were reorganized) so I don’t have any media, nor the overview stuff, just the API’s for the UI & Networking and some general API stuff.  There is no mention of SOM or Workplace shell, so clearly this is stuff IBM added on their own.

It seems if MS & IBM had not dragged so slowly with 2.0 it really could have been pushed out in 1990, instead Microsoft basically gave up on Cruiser and pushed forward with Windows 3.0 which it controlled all the way.  And of course if IBM had allowed Microsoft to control the GUI side, OS/2 would have been far more NT’ish from the getgo.  Oh well instead we were denied any decent OS until what? 1994 on the Microsoft side with NT 3.5 although of course it was closer to 1996 with NT 4.0 did it even matter by then.  OS/2 was quite usable at the 2.0 level, but it was delayed with the advent of Windows 3.0 and OS/2 HAD to run Windows apps or it’d never go anywhere.

So here is some camera phone pictures of what materials I have on this rare version.  Naturally if anyone actually has Volume 1 or the media set feel free to contact me!!!

 

The binders

Operating System/2 Programmer’s Reference Volume 3 version 2.0

SY13869-0590 / May of 1990

I’ve also found these snippits from Infoworld going back to 1989..

One interesting thing seems that once Microsoft abandoned OS/2 2.0 the kernel never seemed to have changed as you still can load 16bit device drivers so it feels as if all development in that space froze until the ill fated botched port to L4.