Upgrading through OS/2; Version 2.0

Well here we go, ‘A better dos then dos, a better windows then windows, better OS/2 than OS/2!’ … The 32bit version of OS/2 had been under development for quite some time, and now it was finally time to ship.. The year was 1992.

I’m going to switch from VirtualBOX to Virtual PC, as the screen redraws were just too slow on VirtualBOX.  Virtual PC cannot boot 1.0, 1.1 & 1.2 however it can run OS/2 1.3.  Thanks to Qemu’s qemu-img tool, I could quickly convert the VirtualBOX hard disk image into something VirtualPC can understand.

qemu-img.exe convert OS21.3.vmdk -O vpc OS2-13.vhd

And to test things, I first booted it on Virtual PC.

Ok, everything looks fine, let’s upgrade!

The OS/2 installer had grown so big, that now it required two diskettes to boot up.

Also back was a graphical splash, the colored OS/2 logo that in a way reminds me of the 4 panes of the windows logo.

And back to the blue on grey installer… Notice 15 diskettes! It’s grown massive!

Another amazing thing for OS/2 2.0 is the boot manager.  It lets OS/2 boot from extended partitions, and even secondary drives! As long as the boot manager is installed first.  I know some people that bought OS/2 only to manage multi-booting installations.  IBM could have sold this thing as a separate product.  Alas, since we are upgrading our way through OS/2 we have no need for it, so we just keep on upgrading our C drive.

If only there was a FAT to HPFS conversion utility.  But again, please don’t format my C drive!!!

Now we just feed diskettes to the installer..

And now we can reboot into the GUI!

And let the install continue.  I can’t help but think that I’ve done this before..

Unlike last time, I’ll actually have something to migrate..

Well the migration tool gives me a good feeling for finding my OS/2 programs.  Maybe they’ll even run!

Let’s trust the installer…

Now this confuses me, first it said (and quickly) that it migrated my existing printer, then it wants me to add another…?  I just know I’ll get two printers.  Now I feel like Arthur ‘Two Sheds‘ Jackson.

So a reboot at the end, and into the GUI:

Notice how OS/2 2.0 throws the tutorial in your face… All the while the desktop is building in the background so you could ‘multitask’ doing the tutorial while your hardisk is frantically building the desk.. And I see the two printers… sigh.

As you can see Word and Excel are still working.  And unlike a stock OS/2 2.0 installation it’s preserved the 1.x color scheme.

If you’ve never used OS/2 2.0 it comes with FAR more applets then the prior versions.

No doubt IBM was trying to address people like me complaining.  PM Terminal was nice in that it supported Xmodem, Ymodem & Kermit.  Not to mention you can send a ‘break’ easily over a menu.  It’s handy for things like cisco routers.  The seek & scan files is AWESOME really where was this in the world of Windows?  Why was this so … hidden.  Kind of strange that such a great tool was hiding.

Also someone got the memo about games.  You see if people can’t play in your environment they’ll go elsewhere.  After all even in the office it’s not all work.. There is a lot of people that attribute the success of Windows 3.0 to it’s Solitaire.  You see it’s shuffle algorithm is broken, cards tend to ‘clump’.  So as you play and sort, the cards start to appear in a better and more orderly manner.  And people like to win.  I know it’s a cheap thing, but heh the Chess in OS/2 is pretty good, as is the Solitaire.  I don’t know if making them ‘broken’ and letting people win more often would have sold more installs.  It reminds me of “The Story of Mel

In the same way, being ‘good’ and ‘correct’ doesn’t win you spaces in the market place.

Also this is the appearance of Neko for OS/2.  Not to mention a Jigsaw puzzle, one of those annoying number scramble things, and .. Reversi!

OS/2 2.0 finally allowed users to do wallpaper! ..

The downside is that OS/2 relied on it’s own bitmap format that of course was incompatible with the Windows bitmap format.  Nor did it support things like GIF/PCX that were common at the time.

Another thing IBM included was a copy of Windows 3.0 that could run under OS/2 2.0 in either full screen or ‘seamless’ mode.  There was no denying it, but after the launch of Windows 3.0 the avalanche of Windows programs was.. incredible.  And to not support them would mean death.

Some say that OS/2 did such a great job of support Windows that it just encouraged people to not write OS/2 software.

The ‘killer’ feature in OS/2 was this:

That little checkbox, “Separate session” became the #1 feature of OS/2.  You see Windows applications could happily overwrite each other, and memory protection became a big problem for Windows.  The easy way to crash it out was to launch a lot of any application.  Even well behaved applications would eventually bleed the system resources out, and again instabilities would strike.  In Windows 3.0 the USER, GDI & KERNEL modules all shared stack & heap, so exceeding the 64kb stack wasn’t too hard.  Even things like Program Manager and high color icons could do this quite easily.  However with OS/2’s “Win-OS/2 separate session checkbox, it meant that this application would get it’s own copy of Windows running.  Suddenly you could run Word for Windows & Excel for Windows in separate VMs, along with say some game, and the game wouldn’t crash all three out.  And if you were a programmer, it meant your compiler,editor could run outside and protected from the program you were developing.

And with seamless mode, instead of a separate screen, now your Windows applications could run on the OS/2 desktop.  This kind of partitioning wouldn’t make it’s way to Windows NT until version 3.5 in 1994.

You can only run 12 OS/2 sessions, but you can run WAY more DOS sessions.  I just got bored of clicking and rearranging.  I wouldn’t even think of running 20 MS-DOS prompts on Windows 3.0 ..

And unlike the OS/2 prompts the DOS boxes can go between full screen and windowed mode.  Another great thing is that they support DPMI & VCPI.  So you can run dos extender software.  Another great thing, is that *SOME* hardware calls could be passed down from a VM into your hardware.  It is possible for Doom 1.1 on OS/2 2.0 to work with a soundblaster.


(SET BLASTER=A220 I5 D1 P330 T3 and use the fixpack for OS/2 2.0 … but really it works!)

Sadly DOOM didn’t run in a window, and honestly a picture of doom is.. well.



But why not.  It’s actually running under OS/2.  It’s something that a lot of computers in 1993 had issues running, even in plain MS-DOS.

At this point OS/2 1.0 feels like a tech demo, 1.1 – 1.3 are just toys.  Really you can see the frustration in the IBM/MS alliance as a 32bit OS is what people wanted to make, not the 16bit stuff.  It’s all goes down to the poor design of the 80286 CPU, and too many people selling them as ‘useful’ things.  Even as early as 1992 microkernel/personality people should have really taken notice in OS/2 2.0.  The key to the future was in virtualization, not in personalities.  Or more so, with things like Win-OS/2 paravirtualization, which is specialized kernel assists and drivers enabling the guest OS to bypass typical emulated hardware for IO and transfer raw datablocks in/out for things like video/disks & networks.

As awesome as OS/2 2.0 was, there is one thing you may notice here clearly lacking.


OS/2 2.0 included *NO* networking support at all.  It was expected that people would use separate addons, even going as far to coax support for network cards in the DOS sessions and loading isolated Netware reqestors.  And of course adding these network requestors was widly varied, and there was simply no good universal way to do it.  Microsoft clearly learned the lesson about this with Windows for Workgroups & Windows NT.  It was a real pleasure with Windows 95 & Windows NT 4.0… But it was 1995-1996 by then.

Well, Next stop is OS/2 2.1!

Spot the difference….

Picture A

Picture B

I know, it’s hard they both look identical.  Well they kind of are, Picture A is the installed OS/2 2.0 image that I’ve been playing around with.  It’s a 500MB IDE disk formatted with the HPFS filesystem.  For the heck of it, I used the qemu-img tool to convert it from a qcow2 into a vhd (qemu-img convert 500M.disk -O vpc 500M.vhd) and then tried to boot it up on Virtual PC.  I know in the past it’d fail with some weird error as something on HPFS wouldn’t transfer and it’d be the end.

But it worked!

This is really a great victory for Qemu!

Virtual PC 2007 issues with TAB and ESCAPE keys on Windows 7 sp1

The hits keep rolling.

Well no doubt if you are still using VPC 2007, at some point you’ve probably found under Windows 7 sp1, the tab & esc keys stop working. According this page, you can create a local security policy to allow %appdata%\microsoft\vritual pc\vpckeyboard.dll to be runnable by all.

So just open up your LSA tool and…… You’ll quickly find out that Home versions have lovingly cut this functionality out.

But the only ‘fix’ is to simply run it as administrator.

Oh well I guess the hint is that Virtual PC for Windows thing, that took vpc from a virtualization solution into a crappy host for IE 6 (way to destroy a product), and they took out the sound blaster and floppy drive support. Nothing like a reducing functionality as a way forward.

Installing Lanman client on OS/2

For this install I’m going to use the lanman client that comes on the NT 3.51 server CD. I believe they included this thing in version 3.1 through version 4.0 of Windows NT. You can find it in the “CLIENTS\LANMAN.OS2\DISKS” directory. Also I bet you never realized there is a copy of Windows 95 on the 4.0 server disk, and there is a copy of Windows for Workgroups on the 3.x disks…. (CD ONLY!).

Anyways with the disk in hand (or in virtual image) go ahead and kick off the install on diskette 1.

The program does black & white on 2.0 while on 1.3 it is in colour..

Copy from the A drive to the C drive… no issues here.

While the client does have a number of lan drivers, it does not have the NIC driver that Virtual PC emulates. Luckily I’ve put it on another diskette

And there we go, the Digital Semiconductor 2104x/2114x 10/100 mbps Ethernet driver.

And now we get to select protocols. While TCP/IP is an option, the IP stack included in this version is really only good for connection to Windows NT servers. It cannot be used by other applications. Sadly there never was a ‘winsock’ type common library for IP stack providers in OS/2.

Review the bindings. It’s a shame IBM made this process to damned involved with LAPS.

Here you can type in whatever you want.

Save the configuration.

Ok everything is good, now for a reboot!

And just to show you upon rebooting, the OS/2 VM now opens up a command prompt and starts the login process. And it’s validated my Administrator account against the NT Server in question. Now all I have to do is map the M: drive to the mailstore, and install the client.

So with everything mapped we go to install on OS/2 and… It says no. Which I guess isn’t that surpising, as the WLO help programs have a habit of crashing on OS/2. But no matter if you install it on 1.3 you can simply xcopy the installed directory and bring it online.

And there you go!

Even better it can send and receive files.

I would imagine the next ‘exciting’ steps to take down this old path is adding users into the system, and getting it connected to the world. But I’m busy with my new Itanium at the moment so it’ll have to wait for a bit.

If anyone has any feedback let me know… I know this may seem incredibly complicated, but really it’s a boat load easier then dealing with AD & Exchange 2010. Not to mention the filesizes are insanely smaller.

Installing OS/2 2.0 on Virtual PC

Remembering what was..

Continuing where I left off, I’m going to install OS/2 2.0 into Virtual PC. Now I’ve gone ahead and done the dirty work of converting the disks into disk images using winimage. A total of 21 diskettes. Back in the day, loading this thing took.. FOREVER. And we weren’t so keen on throwing away an install, instead we actually fixed stuff. But at the same time, OS/2’s major problem was config.sys .. Knock the registry all you want, but the ‘last known good’ configuration can be a life saver.

I created a VM with Virtual PC 2007 (remember to set it’s affinity to a single core!), disabling the Hardware Virtualization, and binding it’s NIC to the loopback adapter. I also defined a 500MB hard diskette. I’m not going to go to crazy here so I don’t need GB of space.

With that all done, we are ready to start with the install diskette.

Now OS/2 has some weird timing loop thing, and it is very possible that on the first few boots you’ll just get a black screen. OS/2 was temperamental booting from floppies back then, and it still is. So keep on rebooting the VM, and eventually you’ll get a screen like this with the IBM notification, and it’ll prompt for diskette 1. That is correct, first boot from the installation disk, then disk 1. I know it’s counter intuitive.

From here it’ll welcome you to the installer. Just hit enter. I think I left some stuff out as a lot of it is just repetitive IBM speak.

Since the drive is ‘virgin’ there is no partitions so I’ll accept the default of one big happy partition. Then it’ll want to reboot, and go through the whole installation diskette 1 thing again.

Now I’ll select the FAT filesystem, mostly because the HPFS format checks every block, and will blow out the vhd to 500MB, and I don’t need the long file names just yet.

And then it’ll copy files diskettes 2-5 then it’ll prompt for the installation diskette again. In retrospect it’s funny but back in the day lots of people (myself included) hated that I needed to read from the install diskette again. I know it’s to copy the kernel to the hard diskette, but we always felt it’s bad for an installer to need to read something twice. But then again there were so many floppies to go through it just felt unnecessary.

Now that the hard disk is prepared, you’ll get the final notice and time to eject the diskette and reboot. Again it may hang at a black screen, just keep on resetting until you get the boot logo.

Now we can learn to use a mouse, or install the OS. I’m going to install the OS, and the whole thing since we’ve got the disk space to spare! 29MB isn’t bad seeing it includes a full copy of Windows 3.0, DOS & OS/2.

I’m going to accept the default hardware selection. I don’t know if s3 drivers even existed at this point for OS/2, I would suspect not, as OS/2 2.0 shipped with a 16bit video driver model. They addressed that in the xr06100 service pack, and in OS/2 2.1 .

Then we shuffle through the remaining diskettes for the OS.

Since it is a new install, there is nothing to migrate, so let it install the default Windows desktop.

Like this..

Now it’s time to configure the printer. By default OS/2 *MUST* have a printer.. And I should mention that from the 1.x days it was insane to configure/add printers. You had to create all the parts yourself (the queue, the driver port) it was a nightmare. This is a little easier..

Again I’m just going to select the null printer.

Now OS/2 is setup, and we can reboot into the desktop!

So there is OS/2 installed. What a snap, right?

Next up is the NetBEUI client.

Failed Quakeworld port to OS/2 2.0

Yeah, I guess I just couldn’t salvage this thing… Sometimes when you stand on the shoulders of giants you fall off.

So what had started as a seemingly simple thing turned into a nightmare.. I took the source to my MS-DOS port of Quakeworld, and decided to build it under OS/2. And to be crazy about it, I thought it’d be awesome to get it to work under OS/2 2.0 .

Which means no sound, locked to 320×200 256 colours, full screen only, since the VGA driver won’t do anything but. Years ago on ebay I managed to score IBM TCP/IP for OS/2 2.0 & 2.1, with the LAN support!

IBM OS2 2.0 syslevel 1

IBM OS2 2.0 XR02000 (no fixpacks)



ibm os2 2.0 syslevel2

IBM TCP/IP for OS/2 with no fixpack

So as you can see from my syslevel’s I’m running a pretty bare machine, even the graphics subsystem is still 16bit!

Well the good news, is that with EMX and a HPFS disk, I was able to quickly get the null version running. With a minor amount of work, I had TCP/IP connectivity and things were going well. I had ripped apart a video demo, and got the display up, although it was ungodly slow.. Until I found out that when you are full screen you can request access to the physical video memory, under OS/2 so that sped things up a great deal!

Then all that really needed to be done was get the keyboard working.

And here is where I slipped up.

OS/2 is weird for interactive programs that want to know key states. It seems the best and most common way to do this was to setup a ‘monitor’ for the keyboard device, and try to read the stream as keys are pressed. Sadly idiots that slamm the keyboard, or gamers that hold down an arrow key for a minute lock the thing, and the key then is ‘jammed’ down until you hit it again for the release.

I’m pretty sure that I did it wrong, so I borrowed code from a more ‘advanced’ OS/2 port and it did the same thing. Maybe it’s OS/2 2.0? I don’t know, I did service pack it and update and still the same result.

I really didn’t want to spend that much time on it…..

QuakeWorld for OS/2

QuakeWorld for OS/2

I feel hesitant to release a binary as you will get killed, and I haven’t even tried the mouse yet, but I suspect it’ll still suck.

So for anyone that cares, here is the source… misspellings and all.

Windows 95 2.1Ghz CPU limit broken!

This is great news to some of us! Unless you’ve been hiding in a cave, Windows 95 had issues running on CPU’s running over 300Mhz. Any attempt to do so will yield the following error:

While initializing device IOS:
Windows Protection Error. You need to restart your computer.

Then there was an “AMD” fix (that worked fine on intel cpu’s) that would raise the bar to 2.1 Ghz. However beyond that point, the networking would break, and cause Windows 95 to fail with the following error:

While initializing device NDIS:
Windows Protection Error. You need to restart your computer.

Well it seems that the device drivers from the Dial-up networking update 1.4 actually address this issue, however it’s hard to install an update that gets bound into a ‘blob’ when you can’t boot.

However, the LoneCrusader on MSFN has come up with a fixpack!

And it’s simple to apply, just start a normal Windows 95 install (I’m using Windows 95a, the first CD version) and then once it reboots, just boot off the provided floppy image, and it’ll slipstream in the fixed kernel, ndis handler and a bunch of other stuff. Then reboot again, and carry on.

It works so well, that I loaded it on my 3 Ghz P4, however I got this disastrous message:

Insufficient memory to initialize Windows.

Quit one or more memory-resident programs or remove unnecessary utilities from your CONFIG.SYS and AUTOEXEC.BAT files, and restart your computer.

Which after a little bit of searching, comes down to the fact that I have 1GB of ram in my P4. A lot of people talk about tuning the vcache as it’ll initialize far too big, and not leave enough memory for Windows 95 to actually operate. I had no luck there, but with more searching I found an easier fix..

Instead, just limit the amount of memory that Windows 95 will initialize. KB184447 talks about this, and I’ve found this works as an optimal setting for my system.ini:



Using these settings, I’m limited to 921MB of ram, but honestly an environment that was built to run on 4MB systems, and comfortably in 8MB of ram, 921MB is just fine. So far I’ve installed Internet Explorer 5.5 on my P4, and all is well. In addition, it works great on Virtual PC, as even some emulators are fast enough that they too run into these old timing bugs.

Naturally, PCI bus users (is that everyone now?) will want this update from intel, (infinst_enu.exe / mirror) which will update a bunch of core components in Windows 95 to allow it to function better. I should add that both on Virtual PC, and my p4, that once the PCI update is installed, I went into the device manager, and removed the default VGA adapter, and my graphics was running correctly. The only weird thing is the ATI Graphics Ultra Pro PCI (mach32) would crash Windows 95 if I ran it at 256 colors, however it works fine in both 16 color and 16bit (65536 color) mode.

Windows 95 921MB of ram

Windows 95 921MB of ram

Just remember to NOT overwrite the newer files, otherwise Windows 95 won’t boot anymore.

UDP Nat weirdness in Virtual PC 2007

Well just as soon as I posted about needing Qemu to run QuakeWorld for MS-DOS, my new machine alerts me to some new updates, among them is Virtual PC 2007’s sp1.

The cool thing is that with this update, UDP through NAT is working correctly!




So maybe it’ll help someone else down the road with any other UDP based applications. I was going crazy, as the TCP stuff was working just fine.

UnixWare 7.1.1

So I got myself a ‘5’ user version of UnixWare 7.1.1 to add to my collection, along with a copy of Word Perfect 5.1 for UNIX (i386 SYSV it would seem).

From the wikipedia link, 7.1.1 was the last release from “old SCO” the company that brought us exciting things like Xenix, SCO Unix and SCO OpenServer (although it’s about as ‘open’ as VMS).

Anyways I went ahead and installed it in Virtual PC 2007, and it was a pretty straight forward install. The only catch has been that if you suspend the virtual machine, the networking will cease to function. And as it stands right now I don’t have any sound, but I doubt that’ll be that big of an issue.

So I broke the nice and new shrinkwrap on the Word Perfect, and went through some minor hell trying to get the first disk to untar, as it states on the diskette and in the installation manual.. Eventually I found this worked in my Virtual PC:

tar -xvf /dev/dsk/f0q18d

Then I just ran the ‘wpinstall’. Now what is weird about this install is that word perfect then just has you hand it all the disks in any random order, then it’ll start to configure itself. While it does support over 200 terminal types, it seems that the “dtterm” console is not among them. Also what was weird is that for the X11 component the Univel UnixWare (the direct descendant to SCO UnixWare) did *NOT* work, while SCO Unix did.

I would imagine if you had a pre 2000 release of any Linux you could run this via iBCS, however that project seems to have died on the vine. The last time I tried to run Xenix stuff on NetBSD/FreeBSD & OpenBSD I was met with kernel panics and disaster. I don’t think anyone runs this stuff anymore, and now that we know how to run Xenix under Qemu/Virtual PC I guess that basically takes care of that.

Speaking of Xenix, it would seem that all of the 7.x releases of UnixWare do not include compatibility for the x.out exe format either.

At any rate, I figured I could just go ahead and run my builds of Quake & Doom on a seemingly ‘slightly’ older 7.1.1 without issue.

That was not to be the case.

dynamic linker : ./quake : error opening /usr/lib/libm.so.1

Well that’s a bummer, if I do say so myself. Thankfully this version of UnixWare included the compiler (and a license) along with the OpenServer/UnixWare development CD so I had the ‘official’ X11 headers & libraries, unlike what I had to do under 7.1.3

So I ended up shuffling around my UnixWare stuff to separate the 7.1.3 from the new 7.1.1 stuff.



In retrospect, I would imagine you can run 7.1.1 binaries on 7.1.3, but not the other way around… But in retrospect, that is to be expected.

I’m not sure how to even play with the X11 configuration so right now I’m limited to 256 colors… But you get the idea.


Slackware 3.5

A friend of mine was having a hard time trying to configure XF86 from the old Slackware 3.5 days… 1998.

Wow time sure has flown!

Anyways I kind of liked Linux back then as a lot of distros had OpenLook, which made my Linux box feel like a way cheaper SUN box.

While Slackware 3.5 installs great on Virtual PC, the networking just crashes out… So I thought I’d just fire it up on Qemu.

qemu.exe -net nic,model=ne2k_pci -net user -hda Slackware 3.5 Hard Disk.vhd” -L pc-bios -redir tcp:58080::80

And with a bit of tweaking I managed to get it running!

Although with normal VGA there is some weird issues with the cursor…

Slackware 3.5 running openlook

Slackware 3.5 running openlook

It was about as hard as I remember for the xf86config days… you kind of had to mash a few together to get it working…

And if it saves anyone the hassle, here is the XF86Config. (gzipped!)

This is basically regular VGA with a PS/2 mouse… It works on Qemu & Virtual PC, so I’m sure your favorite emulator ought to work as well.