Upgrading through OS/2; Version 1.1

Continuing from the previous post, let’s get started with Microsoft OS/2 1.1

I added a 500MB hard disk to VirtualBOX, booted up an OS/2 1.1 boot diskette I had created that allows me to fdisk/format and do basic backup/restores, esp since OS/2 1.0 cannot install on a large (lol) 500MB disk.

So with the restore done, I’m booting up the Microsoft OS/2 1.1c Nokia OEM release.

Nokia OS/2 1.1c splash screenAnd..

The dates for this release is 2/20/1989.  I would have imagined that the original version of OS/2 1.1 shipped in 1988, as mentioned by the copyright. Apparently the Microsoft versions of OS/2 1.0 & 1.1 included support for the 386 method of switching from protected mode to real mode, while the IBM versions only included the 286 triple fault method.  I’d imagine the Microsoft ones would include both, but the only way to verify is to install on a 286.  Something that I simply do not have.

This style of the OS/2 installer will be with us for quite some time.  it’s not until Warp did the look and feel start to change.

It’s a little worrisome that OS/2 is always looking for a way to format your drive.  OS/2 1.1 only supports the FAT filesystem at this point, and formatting defeats the point of the upgrade.

The setup program renames my config.sys , autoexec.bat and startup.cmd files.  Obviously things are now different from OS/2 1.0

And at this point it’s just an install disk to prepare the disk, then we reboot off the hard disk to continue the install, in text mode.

We just feed some disks to the OS, then we get to select a mouse.

Thankfully the PS/2 option is in here! Very exciting stuff.

For some reason things like serial ports are optional, so after letting it load the serial driver, we are all set to go!

Ok, let’s experience some real OS/2 power!

What is cool is that my printer choice has been preserved.

And the C drive has been cleaned up… some.  Although most of this stuff is backups of my OS/2 1.0 stuff, along with some portion of the OS/2 1.0 install in os2.000 .. I just deleted all of this crap.

Now to see OS/2 1.1 in action…

OS/2 1.1 stress testSo again you are limited to 12 sessions in OS/2, along with the single DOS Box.  However notice that the windowed icons (the black ones) and the full screen are independent.  This was also another annoyance in OS/2, that you cannot switch an application from full to windowed at will, and some text mode stuff is compiled as full screen so launching it from a window will jump you fullscreen.  OS/2 also finally included a game, a breakout clone, with various neat pictures.  I like the Seattle one myself.

And a text editor! A nice one too.  Also I don’t know if it’s VirtualBOX but the UI is VERY sluggish, the worst thing you can do is open a command window and have it scroll.

But all in all, OS/2 1.1 was certainly a step in the right direction, and really what people would start to expect in an OS.  The GUI really is needed to get a feel for multitasking.  It’s a shame that ‘paging’ the real mode box out to disk and going between multiple sessions could have been done…. But I imagine they tried it, and it failed badly.  Or the paging got out of hand.. Hard to say.

As a slight detour I’ve also setup IBM OS/2 1.1 Extended Edition, which you can see my quick review here.

And for the few people who care, here is what 1.1 in Mono EGA mode looked like:

The other things that Microsoft OS/2 is really lacking is online documentation, and a way to shut down the OS from the desktop. It’s still control-alt-delete.

Onward to OS/2 1.2

Upgrading through OS/2; Version 1.0

On the heels of the upgrading Windows, I thought I’d do something similar with OS/2.

So to get things started, let’s start with OS/2 1.0

I’ve got to admit it, I really like the splash screen stuff.  It’s a shame that basically it wouldn’t come back until Windows 95.  This one does animate, but on VirtualBOX it is hard to see what it’s doing but I think it’s the logo coming together, like it did in early Windows.

The installer is text based, as is the OS back then.  To get this to run, I had to hexedit the keyboard driver (as discussed here) and change the hard disk driver from a non-working IBM version of OS/2 1.0 .  None of the Microsoft ones seemed to work.

In 1987 this would be an awesome kickass machine.  Now kids toys have better features.  At any rate, back then FAT was limited to 32MB partitions. I just gave this thing a 32MB disk, as I didn’t feel the need to mess with it too much.

Talk about a weird installation process.

Notice the lack of PS/2 mice?  This would go back and forth as one of many weird things that one or the other would not support.  It’s very strange.  But at the time of course, only PS/2 machines could have PS/2 mice.  Not that it really matters in OS/2 1.0’s text only interface.

And the next time you feel like complaining about a lack of drivers for anything.. Look at this extensive list.

Anyways basically pick out what you are going to do , and away it goes copying the first floppy then it’s time to reboot.

I should also point out at this point the install for OS/2 is three (yes 3!) high density diskettes.

On reboot we continue the install..

And then on to disk 3.

And we are done!

And now we can eject the disks, and reboot.  We get the nice splash screen only to be dumped to…

This. Now you can see why so many people were underwhelmed by OS/2.  Now I know it’s a tough thing that Microsoft & IBM were at here, the basic underlying structure of OS/2 was working, IBM had been selling IBM AT’s since 1984 going on about some advanced OS, and the PS/2 line had just launched, with… MS-DOS.  The need to spend 15+ thousand dollars on a fancy 286 to run MS-DOS just seemed totally insane.  So they launched without the UI.

I’m thinking this must be a late version of 1.0 as my files are timestamped 12/15/1987. While not immediately obvious, this version can multitask like all the others. hitting control-escape brings up the Program Selector:

OS/2 1.0 task selectorAnd tabbing around we can run a bunch more of the OS/2 command prompts, and select the single MS-DOS task that the 1.x versions of OS/2 are limited to.

Shutting down OS/2 involved control-alt-delete.  Remember OS/2 was designed to be a single user workstation, not a multi-user time-sharing system like Unix.

One thing I dislike immensely about OS/2 1.0 is that it dumps all the files into the root directory.  What a mess!  I mean look at this!  Ugh.

Also it was interesting that you can run 12 OS/2 sessions, and the one MS-DOS session.  Oh well it’s a heck of a lot more responsive the Windows trying to run this many sessions.  Also for you GWBasic fans out there, you’ll be happy to know OS/2 includes GW Basic 3.20

GWBasic under OS/2Oddly enough there are no text editors.  I guess everyone is expected to be running wordstar under the ‘MS-DOS’ session box.  And of course sure you can task switch but only ONE copy.. and no cut/paste…

Ok, So now I’m going to backup this OS/2 1.0 session, restore it onto a larger disk (which OS/2 1.0 cannot boot from) but then I can ‘upgrade’ it to 1.1.

Onward to OS/2 1.1

Installing OS/2 1.x in VirtualBox

OS/2 Museum just published this great article detailing what is needed to run older versions of OS/2 on VirtualBox. The ‘skinny’ is that Microsoft OS/2 is the way to go as they included the 386 method of switching from protected mode to real mode in their product, while 1.0 and 1.1 from IBM relied on the 286 triple fault.

Almost all versions have timing issues however. And again they are covered.

I may finally have that excuse to dig around and install OS/2 1.0!

OS/2 and virtual COM ports.

With TCP/IP working under OS/2 I went looking for the next thing that I’ve always wanted, and that is a good modem emulator.  Funny enough SIO the COM driver replacement for OS/2 actually includes this functionality.

And has for years… I just never knew it.

I know in the NT centric would we live in today, it’s all moot, but I thought it was really interesting for those of us that still hinge on modems… And freaky hardware, since OS/2 can let some things talk directly to the hardware without OS/2 drivers (IOPL=YES).

So for the sake of it, I downloaded version 1.60 of SIO, went through the install, then added a virtual modem as described to my config.sys .. And I placed a test ‘call’ with OS/2’s terminal program, and I was talking to my MUD!

So I thought I’d try something crazier, like load up a BBS, then configure it for four modems!

 

And it worked!

Sure there are some slightly easier to configure ways to achieve this (DOSBox includes modem support), and I suppose the better thing to do would be to give virtual modems to Qemu.  Then OS’s with no TCP/IP can benefit from this.

The way things were…. MS Mail & OS/2

So I’ve been spending the last day fighting some Active directory, and Exchange 2010 fun. I suppose if I wanted to be all new and exciting I’d document that journey. Maybe I will. But after all that fun, it had me remembering the way things used to be done, and really wondering how much further we’ve either come, or maybe…. not come.

So for the sake of it, I’m going to build out a postoffice, and connect the bastardchild of IBM & Microsoft, OS/2 to it!

How you gonna do it? PS/2 it!


So first I need to establish a server to run my postoffice on. The cool thing about MS Mail is that it could run on all kinds of things, from Novell Netware, Lan Manager, or any other file sharing network out there that MS-DOS’s lock could work with. Originally the product was for Macintoshes, before Microsoft bought it! The bad part, buried in there is that there isn’t a dedicated IPC like server, it really is a flat, shared, database. A bunch of files.

Just like MS-Access.

Really.

As luck would have it, there is a copy of MS Mail 3.5 on one of my Exchange CD’s so looking at the date, Windows NT was out at the time. So I figured for the sake of the experiment, I’d use Windows NT 3.51 . While I’ve used Windows NT 3.1 a bunch, I figured I’d try 3.51 . 3.51 came to us at a time of mass transition, when everything was going forward to Chicago (Windows 95), and the old program manager/presentation manager world was going to finally slip away.

Looking back it’s so archaic, it’s hard to believe that anyone thought progman/fileman were good ideas.

I also wanted to use Microsoft OS/2 1.3 however installing the network client causes it to trap. It does work on real hardware but that wouldn’t be quite as virtual as I wanted. Another wrench is that I’m on my Sprint access card waiting for something, and if I try to do some fun networking it disconnects me.

However I do have a workaround for Sprint’s lameness. You see “SmartView” isn’t all that smart, and thankfully it doesn’t care about interfaces *without* TCP/IP. So we take a loopback network adapter, and *ONLY* bind the Virtual PC protocol to it, by unclicking everything else..

And now we can connect our VM’s to this loopback interface. Then we could, say install an OpenBSD firewall VM that has 2 NIC’s one configured for usermode NAT, and the other on that LoopBack interface. We can now VPN to our hearts content, and even have a virtual LAN. Hell I bet you could even connect a physical Ethernet, connect Virtual PC to that as well, and plug that into a WAP. I hate it when stupid software tries to limit us, but you know… There is always a way around.

So getting back to the experiment at hand, I setup Virtual PC 2007 sp1 (making sure to tag it to a single core, imagecfg doesn’t work for some reason) and I disabled the hardware virtualization. I know OS/2 does some weird stuff with it’s LDT that most things cannot dodge, and it seems that NT 3.51 doesn’t play nice either. But no problem, luckily we can disable it.

I installed Windows NT 3.51 by first generating the 3 needed boot floppies to kick off the install. While IDE CD-ROM’s are supported by NT 3.5 & 3.51, they El-torrio boot method is not, so you need to make the 3 diskettes under MS-DOS if you’ve lost them (WINNT /OX) then you can boot off of those, and install. I setup a 2GB IDE disk, and partitioned it 512 (NTFS for NT) for C, 256 for E (FAT to swap) and finally a 1.2GB F drive to install the post office to.

Yes, the installer really is MS-DOS based. So you could run this thing on anything modern today… I would imagine even the ‘share’ hack for DOSBox could work.

Naturally we’ll create a new post office.

As I had mentioned above, I’m going to store mine on the F: drive. Don’t forget that you end up sharing out the data directory, and everyone maps it to the M: drive… If you install to the M: drive bad things happen as it expects the mail directories to be in the root… Although I guess you could just slam it in the root, but it seems… wrong.

I’ll call my post office, POSTOFFICE for the theme.

And the corporation may as well be any given MEGACORP. This was semi popular in small corporations. But it being based on fileshares meant it didn’t scale all that well. You could use special MTA’s (Mail Transfer Agents) to transmit mail from one post office to another.. We’ll get into that later.

I’m going to install with MS sharing hooks… But look a MS product that supports NetWare! Embrace, Extend & Extinguish!

I’m going to install the admin tools & agents. I don’t plan on using a modem, so scratch that!

Let’s keep the admin tools away from the users!

And let’s support MS-DOS, Windows 3.0 & OS/2. That’s right the OS/2 / Windows option is the same, that is because of WLO. This makes this one of the handful of things that shipped with WLO, (Windows Libraries for OS/2. It is a ‘port’ of the Windows 3.0 API to OS/2 as an underpinning. This was the foundation of porting Windows to NT, into Win32. Or at least that is what showstopper mentions.)

And deploy the clients to the drive that I’ll share for mail.

Everything looks good, so let’s go!

Files are copying….

And we are done!

And for the heck of it, I’m going to install the big exciting thing for Windows NT at this point, the Microsoft Mail Multitasking MTA. And it was a big deal at the time, because, naturally almost *NONE* of the other agents were multitasking (ie supported OS/2 in OS/2 mode). In fact it wasn’t un common for people to try running this stuff on Windows/386 or Windows 3.0 / 3.1 in enhanced mode with multiple MS-DOS VM’s. It was not a thing of beauty and stability. And don’t forget prior to OS/2 2.0, OS/2 could only run a single MS-DOS session, and only when it was in the foreground.

Kicking off the install.

Point it towards the mail directory.

By default the admin account it ‘admin’ and the password is ‘password’. We haven’t had a chance to change it, but those are the defaults.

I’m going to put the agent in the mailexe directory. It creates sub directories so it’s no big deal.

This isn’t a preconfigured store, so overwrite it, I don’t care.

Files copy…

Pick a group…

And we are done!

So now I’ve gone over how Sprint’s modem access is limited, and presented a way using VM’s to get around it. It’s really needed if you want to use a VPN (Virtual private network) so it is relevant to other people. Then I’ve installed Windows NT 3.51, and MS Mail 3.5 along with the MMTA. This is getting long, but in part two, I’ll setup OS/2 2.0 on Virtual PC. In part three I’ll get the network working along with some information on running MS Mail 3.5 on OS/2.

More failure on the Netware front….

Years ago Netware sold these 4.1 dev kits on the cheap, and I picked one up in College. Back then the selling point was that along with Watcom you could actually run Netware 4.1 along with OS/2, and do all the dev loading on the same machine!

What a time saver, not to mention you could simulate a LAN on the same PC as each MS-DOS VM could have it’s own virtual NIC and each VM could login independently.

Anyways, I thought I’d go ahead and give this thing a shot, since I haven’t run this in a while, so I installed OS/2 2.11 on Qemu 0.14.0, and … got this.

Qemu 0.14.0 OS/2 and Netware crash

Qemu 0.14.0 OS/2 and Netware crash

PNW0162: An internal error has occurred. The program cannot initialize the GDT information.

Which of course is the Global Descriptor Table, and I don’t know why it can’t play with it… Qemu limitation? OS/2?

Anyways afterwards, I get this.

Qemu 0.14.0 OS/2 and Netware trap

Qemu 0.14.0 OS/2 and Netware trap

Trap 000d

And you thought Windows NT blue screen of death was impossible to read…

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.

SHOWSTOPPER!

show-stopper-coverI was browsing around at a book store, and I came across the book “SHOWSTOPPER” the breakneck race to create Windows NT and the next generation at Microsoft.

If you have ever lived through the Windows NT 3.x days you’ll find this a very interesting read. It goes into the big personalities, and of course covers the working habits of Dave Cutler… Although it does paint him in some really odd colors, mostly as an antisocial kind of dictator pushing people to produce the largest program Microsoft had ever produced at the time.

But there is no doubt, Cutler could not have written Windows NT at Digital, as DEC was too fond of hardware lockins (look at VMS & Ultrix/True64). And it does cover the major animosity of Cutler towards DEC with the cancellation of the Prisim/Mica projects, and then the later “I told you so” moment when DEC licensed Windows NT from Microsoft (although other reports claim that DEC threatened MS with a lawsuit, and MS gave them access to NT, along with some money…). Apparently the mantra was “Dec could have had NT for free”..

There is also coverage of the culture clash of what happened when Microsoft had absorbed the Prisim & Mica engineering teams from DEC, and how they did not get along with Microsoft staff, and even did their best to poke holes in the current offerings of MS-DOS & OS/2 as either a toy, or a joke.

One thing I found interesting, is that the book mentions the WLO project, as the foundation for what would be the ‘Win32’ system. WLO if you remember was a port of the Windows Libraries to OS/2. It was very interesting in that Windows, OS/2 and even MS-DOS & Win16 via WOW were all not part of the main Windows NT group, but rather ‘tacked on’.

However it is quite interesting that the design decisions made for a very portable and modular operating system, that survived it’s original CPU & platform being changed 1/4th the way through development, and then the removal of the primary API.

Another thing that was interesting was some of the ‘fixes’ for the too slow, too big that would plague the early versions of NT, was the idea of demand paging portions of the kernel.. I for one would go insane with the blue screens about paging non page-able areas or some other VM error… But the truth was NT was written by people who came from a minicomputer world, and as the book made evident from time to time, they did NOT use PC’s.

Needless to say, the book was somewhat spot on, in that it’d take 10+ years for computers to catch up to what Windows NT was written for. I for one can remember trying to run this on a 386sx-16 and it was horrible… But if you install it on a Pentium II the 3.x series simply FLIES… And in emulation on modern machines it has incredible performance.

While Windows NT 3.1 was no doubt a 1.0 release, 3.5 was a 2.0. The x86 optimizations really payed off, and kicking out the Spider TCP/IP stack, and bringing in the new MS stack helped a LOT. There is no doubt back in 1994 as SLIP & PPP accounts were becoming more common place, Windows NT 3.5’s networking was the easiest to configure and use. Linux back then really was in it’s infancy, and the dialup scripts for pap/chap/pppd were… a nightmare.

“Dogfooding” was another interesting, and necessary thing as once NT was able to start running programs it was important to make people start using it as quickly as possible to shake out bugs in the system. Its also interesting to note the reluctance of the kernel team to deal with the graphical part of NT, and how the first versions were text only. Another weird part was how the security in Windows NT was an after effect, of the internal networking group cooking up what eventually became the domain & trust model. Not to mention how NTFS almost didn’t make it because the filesystem people (all two of them!) were so busy making sure HPFS worked correctly.

There is no doubt that such a ‘ground up’ OS of this magnitude hasn’t been attempted since 1988. It took Microsoft 5 years to get Windows NT out the door, but there is no doubt looking around in the year 2010, Windows NT has a long life ahead of it.

For those interested, you can find it on amazon.

16bit Fortran …

Ok, so I was looking at this ancient machine the other day, and I was wondering if I could at least build the f2c to run on either Win16 or OS/2 1.x. There was mention of it running on MS-DOS ages ago but I thought it’d be more interesting to try something else…

Well one thing is for sure, QuickC for Windows, wins HANDS DOWN for a ‘nice’ environment for building stuff… Once it was all said & done, on Windows 2000, I had f2c running, and converted the dungeon source, and building dungeon along with the libf2c. I couldn’t find a ‘nice’ way to build libraries with QuickC, and building a windows dll for libf2c would mean re-writing the IO for Win16.. If it were 15 years ago I may have done so, but nobody will use it now, so I just took the short cut of compiling the dungeon program & the library together… Surprisingly on a ‘fast’ machine with Virtual PC, 100,000+ lines of code compiles in under 10 seconds!

So the first result I got for my effort was this:

Dungeon in QuickWin on Windows 3.0 via F2C

 

Which wasn’t that bad, and I’m just amazed it works… You can download it from here. And thanks to the power of jDOSBox, you can run it live here.

The next thing I did was break out some ancient Microsoft C, and start to build f2c. That is when I found out that the resulting exe with C 5.1 doesn’t work, and 6.0a crashes when compiling part of the translator… However using 6.0a for *MOST* of f2c, and building the one faulting module with 5.1 results in a working f2c. The library built without issues, although I had a *HELL* of a time trying to remember how to build a static library for OS/2. I ended up just using lib & gluing it together one object file at a time… Not the ‘best’ but it works.

The next hardest thing was figuring out the linker definitions & response files to build a ‘windowed’ text client for OS/2. Luckily I was able to go through enough things to do it, and it was a LOT of work…. I almost wonder if it’s worth posting about it… But all my build steps are in the zip file located here.

Dungeon on OS/2 in a window via special linking..

 

It was a *LOT* of nonsense work to get this thing in a window for a good screencap… lol but in the end I guess it was worth it. I suppose I could try building it for MS-DOS, but really, where is the fun in that?

One thing is for sure, having this back when I actually used OS/2 1.3 or Windows 3.0 (I had CGA!!!) would have been cool… But now I guess it’s totally pointless, but whatever.