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!

6 thoughts on “Microsoft OS/2 2.0 SDK Beta

    • From what I understand there was a MSC 5.0,5.1 and a 5.2. The 386 version of MSC dates back to Xenix on the 386.

      from the 386 read.me

      If an application is to remain 16-bit, it should be
      compiled and linked with the 1.2 toolkit header files
      and libraries. If it is compiled with a 16-bit
      compiler (c5.1/c5.2/c6.0) and OS/2 2.0 SDK
      header files, and linked with the 2.0 SDK’s libraries,
      it is probable that the application will have
      references to API’s that are not in the same system DLL
      in the 2.0 system that they were in the 1.2 system.
      This will cause the 1.2 system to refuse to load the
      application because it is unable to resolve the dynamic
      links.

      Which means that OS/2 1.2 and the 2.0 beta were not yet in sync. Also from what I remember in showstopper, Cutler and crew were hired on at the end of 1988, in 1989 they were designing NT OS/2, and in 1990 they had kernel mode stuff working and in the middle of the year they dumped the cruiser ‘OS/2 32bit’ personality and took the port of Windows 3.0 to OS/2 (WLO) as the starting point for Win32 on NT. I don’t think NT OS/2 was to the point of anything to show off, as MS would have done so at this point. But they were showing off Windows NT at the close of 1991 (At the October comdex, the same time IBM was giving out the OS/2 2.0 LA).

      And as we all know, OS/2 2.0 shipped in 1992, and NT in 1993.

  1. Yes, what were they thinking – if they had to rename some APIs, couldn’t they have just provided functions under the old names that redirected? I know we’re talking about less powerful machines with less RAM but surely the overhead wouldn’t have been that great. Or I wonder if you could have a DLL where two names mapped to the same ordinal – I guess it’s Microsoft’s file format so they could have made it happen?

    • A bunch of the SDK is going on about how obsolete so many of the old calls were as you don’t have to mess with segmentation and all that jazz anymore. Sometimes I wonder with the WLO effort, if there was some more thought of bypassing PM all together and porting Windows directly to OS/2. According to the Letwin email, all this Windows on OS/2 really pissed IBM off to the point of IBM wanting MS to give up on Windows… Which if you look at the MS OS/2 applications Excel, Word for PM & Mail were all using WLO to some degree. Like their app people didn’t want to write for Windows, but rather wanted to ‘port’ Windows apps…

      No doubt a lot of lessons were learned in moving Win16 to Win32… In more that Win32 is ‘similar’ to Win16, but isn’t.

      The real shame is that I’m pretty sure that OS/2 2.0 is more like Windows 3.0 + Win386 (the Watcom Windows extender) than like a full 32bit OS. There is some article that mentions that the first 32bit version is just something that extended OS/2 1.2 …

      I guess it also goes onto why there is no OS/2 freeware clones.. like why bother? the ‘best’ stuff is what? MS 16bit stuff? I’m sure the Fortran junkies moved on to PowerStation and beyond. 16bit protected mode Basic, or Pascal? The 32bit OS/2 stuff was few and far between.

Leave a Reply