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.

Microsoft OS/2 1.21 on Qemu (almost works)

It almost works.

I just tried commenting out the IDE CD-ROM that is on by default on Qemu, and booted up a ‘restore’ CD I cooked up a while ago, and lo it almost works.  OS/2 boots up, but the keyboard is unresponsive… The cursor flashes away it almost acts like it is alive but without any input it just sits there dead.

I haven’t tried booting from floppy although I would assume it’d fail just in the same manner.  For anyone wanting to mess with it, just disable the cdrom in vl.c & recompile.

PC Plus magazine reviews OS/2 2.0

June 1992

I thought this was cool, PC Plus magazine is doing a best of, 25 year retrospective, and up there is of course, the release of OS/2 2.0!

It really is an in depth look, and a great job for a magazine!  I’ve always like the UK based stuff, nice glossy photos, etc..

But even at the end it was the same old same old, installation issues, and speed..

I remember OS/2 2.0 on a 386sx 16 with 4MB of ram was unusable, while OS/2 1.3 was great… But like everything else that was involved at the time, keep in mind they had not reviewed NT yet… Although the pre-releases were floating around.. Naturally they have both Windows 3.1 & Windows 95 launches..

PC Retro Networking at its finest

When most people think of old PC networking, they think ethernet, and of course most people I know think of the NE2000.  This card from Novel was cloned, and quite popular as time went on.  Its amazing how many variations of this card there was, and there is even a PCI version of this card, the RTL8029AS!

But that is not what this is about, as most OS stuff from the early 1990’s relies on another card, the 3com Etherlink II.

Notably products like IBM TCP/IP 2.0 for OS/2, Lan Manager for OS/2, Windows NT Pre-releases, Xenix, do not ship with NE2000 drivers, but they all support the Etherlink II card.

Now before you start jumping on fleabay, or scrounging around the Etherlink III card is *NOT* the same as the II, nor is it compatible!

My eight bit Etherlink II

Looking at the card, you can see it has *SOME* jumpers, that configure the IO Base, and where to locate its shared memory (or disable it).  But notice there are no jumpers to select the IRQ, the DMA channel!  I went in circles for a while looking for a softset utility for this card, and spent HOURS basically showing up with nothing.  So I figured at this point I’d just download some drives, and see how long it’d take to magically get it working.

On my first attempt, I used the packet driver, so I could load up some QuakeWorld for MS-DOS.  But something amazing happened, it worked on the default settings!  Experimenting more, as I changed IRQ it always worked unless there was a conflict ..  I then tried a Novel Netware client, but it didn’t work.  Also I loaded the lanman client for OS/2 on OS/2 1.21 and it didn’t work ether.  I was perplexed.  Then I found out two important things from an ancient usenet posting:

  • There is no softset program, because the device driver configures the card, and can change any/all of its hardware characteristics
  • Some drivers don’t detect if they should be using the internal transceiver, or an external one, and have to be told.

So I looked at the protocol.ini for lanman OS/2 and sure enough there was this entry, commented out:

TRANSCEIVER = EXTERNAL

And the Netware client just needed the following statement added:

CONNECTOR DIX

And now I can happily mount NetBEUI shares, mount my NetWare server, and of course use WatTCP programs from DOS without issue!

Donor time!

I was going to load an early Windows NT Preview onto my Aptiva, but then all it would do was crash with a kernel panic of 0x00000032. Then it hit me, the hard disk I have is 2GB and this early version can only handle disks up to 512MB.  So I was looking around where to get a small enough disk, and then I thought what the heck, and took apart a ‘new’ machine I scored last week, an IBM PS/1!

The IBM PS/1 was kind of a disappointment as it cannot run OS/2!  Can you believe it, IBM made a machine that can’t run their flagship Operating System??  As far as I can tell the heart of the matter is that the IDE controller doesn’t live at the default port/irq that any other PC uses, so OS/2 or any other protected mode OS can’t detect it.  I only have 2MB of ram, so loading OS/2 2.0 is out of the question.  So for the sake of the experiment, I took the disk out of this poor IBM PS/1 2121 and put it ‘on’ the Aptiva.

Pentium 150Mhz, 32MB of ram, and an 80MB disk!

First I really wondered if the 80MB disk would be big enough, but surprisingly after a format, and installation of IBM DOS 4.00 (its what the PS/1 runs in ROM and really really likes!) and using the network to bootstrap the files, it happily fit with the SDK in 40MB! (it adds another 20MB for swap…).

Its amazing just how large OSs have gotten over the years, but yeah at the same time, this version of NT is not ready for prime time that is for sure!

So I load it up, and notice two things… One its insanely slow, and secondarily I can’t figure out how to configure the network card. So for some reason I just tried to start up the server/workstation, and do a net view and…

Early Windows NT preview with networking

It worked!

The best part was loading up the October 1991 Windows NT Preview, and it just magically worked, after starting the server/client services!

Working with the Microsoft Programmer’s Library

OS/2 Programmers Ref

Well recently I did manage to get some GREAT books on OS/2, going back to the Microsoft days.. And they contain a lot of information, which was actually quite substantial.

Although there is the impression after the fact that Microsoft really wasn’t that dedicated to OS/2 the wealth of information in these books seem to be otherwise..

Anyways there is four volumes in the set, 1-3 going over version 1.1, and volume 4 with the 1.2 release of OS/2.

As luck would have it, someone gave me a lead on an ISO that contained not only these, but all of the programming documentation of the time on a CD.  No doubt this was the predecessor to the excellent MSDN.

There of course, is just one catch.  It uses the .hlp files, but not from Windows 3.00 its something much earlier and the only way to view the files is with an MS-DOS program.

Glorious MS-DOS interface

I even tried it on OS/2 hoping it was a family api program (like so many of the era were) but no luck.  I was then hoping maybe I could just ‘print’ the files to a virtual printer, and spool the whole job.  BUT YOU CANT PRINT.

So I then wondered if I could put together a TSR that would scrape the screen, append it to a file, and just keep hitting page down.   A few hours of cobbling together some example programs, and remembering to compile with the LARGE memory model (FAR pointers! remember those?)  I could then finally unleash the TSR through the program and extract some of the texts.

For those wondering how to do this kind of thing from MS-DOS here is the source.  While I wanted to use Scott’s program, there was the one drawback that almost everything grabs printscreen now so doing a REAL printscreen that hits interrupt 5 seems like it’d actually require a physical PC in MS-DOS.  And my current ‘retro’ PC has no ethernet so I wasn’t going to go that route.

So there is a lot of hacks with this, you can’t even uninstall it, just reboot …. but this hooks the clock, gives you about a minute to go where you want to go, then it saves a portion of the screen to a file, waits a few seconds and hits pagedown, and repeats….

// Written by Scott Hall of the U. of Missouri - Columbia, USA.
// This program will redirect your print screen button so that
// it goes to a file.  The file name is at the beginning of the
// start() function.  It can easily be modified to print screens
// that are larger than 80x25.

#include <stdio.h>
#include <fcntl.h>
#include <io.h>
#include <dos.h>

#ifdef __cplusplus
#define __CPPARGS ...
#else
#define __CPPARGS
#endif

char far *scr=(char far*)0xb0008000L;
#define VIDMEM 0Xb0008000L
#define INTR 0x1c

int busy=0;                                     // mutual exclusion (MUTEX)
void interrupt (*oldhandler)(__CPPARGS);
char far *old_dta;
char fname[9];

void interrupt int_5();
void tsr(unsigned size);                        // standard tsr bios call
void write_char(int x, int y, char ch, int attrib);
void write_string(int x, int y, char *str, int attrib);

void start(void);
void interrupt handler(__CPPARGS);

int main(int argc, char*argv[])
{
   if(argc==2)
   sprintf(fname,argv[1]);
      else
   sprintf(fname,"log.txt");

   printf ("installing\n");
   disable();
   oldhandler=getvect(INTR);
   setvect(INTR,handler);
   setvect(32,oldhandler);
   enable();
   printf("done\n");
   tsr(1000);
return 0;
}

void tsr(unsigned size)                 // standard tsr bios call
{                                       // you can also use keep()
union REGS r;

r.h.ah = 49;                            // function 0x31
r.h.al = 0;
r.x.dx = size;
int86(0x21,&r, &r);                     // last line executed
}                                       // never get to this line

unsigned char j=0;
unsigned int tcount;
unsigned int dcount=0;

//void interrupt int_5()                  // print screen button starts here
void interrupt handler(__CPPARGS)
{

if(dcount>480)
   {
   if(!busy&&tcount>5)
      {
      char far *p;
      union REGS r;
      struct SREGS s;

      p=scr;
      *p+=6;
      *p++=j;
      *p++=0x4f;

      j++;

      busy = !busy;                   // mutex around tsr
      start();

      r.h.ah=0x5;
      r.h.ch=0x51;    //pagedown?
      r.h.cl=0x0;
      int86x(0x16,&r, &r, &s);

      busy = !busy;
      tcount=0;
      }
   tcount++;
   }
else
   dcount++;
}

void write_char(int x, int y, char ch, int attrib)
{                                       // displays 1 character at (x,y)
char far *v;

v = (char far *) VIDMEM;
v += y*160 + x*2;
*v++ = ch;
*v = attrib;
}

void write_string(int x, int y, char *str, int attrib)
{                                       // writes string str at (x,y)
for( ; *str; str++,x++)
   write_char(x, y, *str, attrib);
}

int firsttime=0;        //need to skip 3 lines after the first time we
//page down.

void start(void)
{
int fd,x,y;
char cr=0x0D, lf=0x0A;

old_dta=getdta();
setdta((char far *)MK_FP(_psp,0x80));

//if((fd =_open("c:\\temp\\log.txt",O_WRONLY))<0) // open the file
//        if((fd =_creat("c:\\temp\\log.txt",_A_NORMAL))<0) // try to make new
//                write_string(1,1,"OOPS--write error1",0x8F);

if((fd =_open(fname,O_WRONLY))<0) // open the file
   if((fd =_creat(fname,_A_NORMAL))<0) // try to make new
   write_string(1,1,"OOPS--write error1",0x8F);

lseek (fd,0,SEEK_END);                          // jump to end of file

//for(y=0;y<25;y++)                               // grab lines 0 to 24
for(y=2+firsttime;y<24;y++)
   {
   //for(x=0;x<80;x++)                       // grab rows 0 through 79
   for(x=1;x<79;x++)                       //cut the bars from msl

   if(_write(fd,(char far *)(VIDMEM+160*y+2*x),1)==-1)
      write_string(1,2,"OOPS--write error2",0x8F);

   if(_write (fd,&cr,1)==-1)               // put a cr and lf at end
      write_string(1,3,"OOPS--write error3",0x8F); // of line

   if(_write (fd,&lf,1)==-1)
      write_string(1,4,"OOPS--write error4",0x8F);
   }

_close(fd);                                     // close the file

setdta(old_dta);
if(firsttime==0)
firsttime=1;
}

Hopefully this will help someone in the distant future, maybe it’ll just serve as a warning on how not to build stuff … lol

Oh and I used Borland C++ 3.1, but compiled this as C for the LARGE memory model.

Running OS/2 1.x on VirtualBOX Intel vs AMD

Well I know this is a limited topic, and my testing is anything but .. thorough.

But for some strange reason I’ve been trying to run OS/2 1.1 under VirtualBOX on Windows, and OS/2 crashes in under a minute all the freaking time.  It really is quite annoying.  Now I wonder if it is because my Windows PC has an 8 core AMD Processor?

Now when I run VirtualBOX (all the same latest version) under OS X, Intel it works fine!

OS/2 1.1 under VirtalBOX Mono EGA mode

Now what I don’t get is that under OS X with Intel Xeon CPUs I’ve been running for over an hour now, without issue!

As for settings, remember to add a floppy controller, remove the IDE CDROM, and remove the sound & networking!  I’m using 8MB of ram, but the glorious 80286 could go up to 16MB of RAM… Even though its virtual address space was 1GB!

I don’t know if anyone has any real insight into this whole AMD vs Intel thing, but from this super minimal testing it seems to me the Intel CPU is the way to go.

Also I don’t know why OS/2 decided to go with some greenscreen EGA.. It is kind of neat in a throwback kind of way, but nonetheless very odd.  I’d have preferred colour EGA but I guess you can’t win them all.

20 year old OS/2 sales video…

lol the fun starts some 3.5 minutes in.

And true to IBM's poor sales skills they go on and on about it, without SHOWING it.. I mean it took up to 8 minutes in to get a glimpse of OS/2.  Its like they were scared of it for some reason.

Maybe OS/2 2.0 would have had a shot, if Windows 3.1 wasn't released on its heels.

(Video in MPEG-1/Audio MPEG-2 care of JSMpeg).

Every Manager’s Guide to OS/2

I got word of this on G+, and I finally got somewhere where I could look at it properly:

With all the articles talking about the 25th birthday of OS/2 posted two weeks ago I found this one from David Strom. (Windows 8: The OS/2 of Today,) On this article he said he wrote an OS/2 book that never got finished or released. So I contacted the author and requested his permission to release the book under a license that allows derivative works.

David Strom released his 1988 book “Every Manager’s Guide to OS2” under the Creative Commons Attribution-ShareAlike 3.0 Unported (CC BY-SA 3.0) license.

This 200 page book belongs OS/2 1.x era and it is in draft state. It has revision remarks and missing screenshots. I had transformed it to docx, odt and pdf format and it is now available for download at hobbes.

Link: http://hobbes.nmsu.edu/…

I will like to thank David Strom for making it possible.

 

Enjoy!