Something interesting crossed my desk today. The much-fabled Microsoft OS/2 2.0 SDK beta.
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.
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!