Thursday, January 30, 2014

Blast from the Past - Reviving my first computer (Windows 98)

With the Chinese New Year looming in a few days, I got the idea to revive an old project I worked on some 12 years ago: an interactive greeting for the Chinese New Year. Just like this year, it was the year of the horse, hence the impetus to revive the old project, which I ultimately didn't manage to distribute at the time due to various technical issues - namely, having used an absolute path to the character file needed to power the entire thing! There was just one problem: all the files for this were stuck on the oldest of my computers...

My Windows 98 Desktop - As it looked for many years when I still used the machine. The layout shown here is the one I'm most familiar with. Subsequently though, the layout would end up getting trashed everytime daylight saving changes rolled through.

So, for the past few days, I've been trying to find a way to transfer the files off the machine in question, my Windows 98 computer - the first one I had at home and which I learned to program on, among other things. However, with the ways that technology has evolved since we got this machine in early 2000 IIRC, it soon became apparent that making this happen would be quite a challenge.

First Restart - Opening the Treasure Trove
Although it hasn't been used for some 8+ years, the machine was still in relatively good running order. Sure, the disk croaked and groaned like a bag of pebbles rubbing together in a tin can the first few times it was powered up, and the screen whined with a high pitched noise initially followed by static noises as it slowly warmed up after years of sitting abandoned and unplugged. But before long, it was all running smoothly again. Heck, even the old keyboard (after getting a bit of a dust off) ended up feeling a hell of a lot better than many of the ones we use these days (especially compared to the crappy mac-inspired keyboards on practically every laptop out there these days - as if the whole industry has now been taken over by a monopoly producer in some backwater in China).

PCDirect 's mousepad. This was a thin one, covered with a transparent textured-plastic cover.

Perhaps the only real snag I encountered at this point was that the mouse was not working. For whatever reason, Windows 98 had apparently lost its mouse driver (vxdriver.drv or something similar)! Though I'm now quite competent at operating a computer via a keyboard - either using the commandline or by using various keys to jump around the GUI - hopping around to find the files I'd need in this state was not something that I was really that keen on exploring.

So, I eventually decided to take a punt on trying to install/reinstall the drivers, hoping that Windows may have hopefully kept around a copy of the necessary install files somewhere (given that I don't actually have a copy of the actual install disk used by the company we bought this from, and that they've long gone out of business). It ended up taking some 2 attempts to get the "Add New Hardware" dialog to actually show me a list of mouse drivers (IIRC, the first attempt ended with it complaining about unrecognised hardware or needing a disk or something). In the end, I got it to install a "Microsoft Generic PS/2" mouse driver - which, after a brief hissy fit, installed perfectly fine, and proceeded to ask to reboot the computer. Upon rebooting, the mouse worked as expected, and all was well :)

Control Panel

A slightly less critical snag was the fact that a CMOS checksum error or similar appeared on the boot screen the first time after starting up the machine after turning the power back on. This however was largely to be expected, since the CMOS battery for the BIOS or whatever it is that keeps track of "system time" should be dead or at the very least, completely empty. (Incidentally, I found that due to this resetting, not only does the clock get reset, but also any changes to the BIOS that you may make - e.g. changing the boot order. This actually turns out to be pretty convenient if you're just trying some stuff out, if a bit annoying when you forget!

Hardware and System Specs
At this point, I should probably mention a few more of the specs of the system that we're dealing with here. While I was pretty familiar with the processor speed (a 333 MHz Pentium II), disk space (5GB), graphics card (some kind of ATI Radeon), and optical disc drive (a Creative DVD/CD drive - readonly), the same can't be said of the amount of RAM it had. In fact, I was quite curious to find out (and had been for a few years, though I never really got around to plugging this machine in again and finding out until now). It turned out that it had only 64 MB of RAM (if this was one order of magnitude up, then it would be a very different story ;)  I'm not sure exactly where that places it in terms of computers from that era, though I'd guess that it was still on the low side.

Speaking of computers of that era, there were a few other idiosyncratic hardware details that should be noted. Firstly, it's main file-transfer mechanism (as was standard for all machines at the time) was via Floppy Discs (i.e. the "A" drive). It's somewhat telling that I have had a lot of experience with these, starting from the very first computer I ever used (a Windows 3.1 for Workgroups machine in Dad's office, where he'd save ALL his stuff on floppies, stored in countless hard shelled and distinctive dark-blue plastic boxes). Heck, I even got to run into some disks that were somewhat cursed: on even numbered days, they'd work perfectly fine, but on odd numbered days, the disk would be empty when viewed on most machines (bar a few).

Anyways, as anyone who's used them knows, they're not exactly known for being the best of file transfer mechanisms, given their low capacity (just under 1.4 MB), slow read/write speeds (you have to wait slowly for the drive to loudly and violently clunk clunk clunk clunk clunk the data on and off the disks), and noisy operation. Having said that, with no functioning CD-burning drive, and non-existent USB flash drive support (given that this was Windows 98 first edition - 4.10.1998 - that we're talking about here), this at one point was the only method available. That is, if there was another machine around which could actually still read those. In my case, the only other machine I had that could read these (my XP computer) seems to have bitten the dust for some reason (IIRC, the symptoms it displayed last time were somewhat similar to those of a bent pin causing short circuiting - the very problem that this machine faced when we tried to fire it up the night after we bought it, as one of the pins on the keyboard connector was knocked out. We only found this out after having to haul the entire set of equipment back out to the store so that the problem could be diagnosed).

Compounding issues further is that since this was an early 2000's/late 90's computer, it didn't have an ethernet card/jack. Instead, it only had a dialup modem. You know, that thing with that noisy yet iconic sound and locked up your phone line ("Argh! How many times do I have to tell you to NOT take the phone off the hook!") but only offered pitifully slow download speeds (requiring the use of a download manager - e.g. "Netzip Download Demon" as seen in the screenshot above). That practically ruled out trying to network this an another computer together to transfer the files that way...

Oh, and for good measure, I might as well mention that it still had various multi-pin connectors. At least one of those was for printers (e.g. the Epson inkjet we used to have used that), and another was supposedly for joysticks. The third I never learnt what it was for.

So let's recap: we have a Windows 98 (first edition) computer, with 64 MB RAM, a 5 GB hard drive, a DVD read-only drive, no functioning USB support (though with 2 USB ports present), a dial-up modem but no ethernet card/jack, a floppy disk drive but no other computer to read those floppies with, and a 333 MHz processor. Yeah, getting files off that is going to be hard...

Linux to the Rescue
After assessing the situation, there were only 2 options left: 1) yank the disk out and hook it up to a modern machine to grab the files off, or 2) try to get the machine to boot up Linux, and hope that I can find a way to get all the various things to mount/unmount cleanly and to successfully copy over the necessary files.

While Option 1 would probably be the chosen option for many of the more hardware-inclined folk out there, lacking the required equipment (namely, a suitable way of hooking up the old drive, along with any other tools needed to open up the case while making sure I didn't end up accidentally zapping everything inside) it was always going to be the last resort option, where I would have likely ended up having to get someone else to do it. So, Option 2 it was!

Changing the BIOS on the old computer to boot from the CDROM turned out to be an absolute breeze. In fact, it was outright amazing just how many different combinations and variations of boot orders it supported. In many ways, it was superior to every other machine I've checked the BIOS of to date!

It turns out that finding a lightweight enough distro to run under these sorts of limited hardware constraints is really challenging! Specifically, things start looking good once you've got at least 128 MB of RAM, 256 MB is much better, and 512 MB+ is brilliant. But with just 64 MB, you're kindof in a tough spot. Fortunately, you'll eventually find that DamnSmallLinux and Feather Linux are both relatively light weight distros, claiming that you need only a bare minimum of 16 MB for console only, and 24MB more (i.e. 40MB) for a graphical environment. Reports that a machine with 49MB or so managed to boot these were quite assuring.

In the past, I'd had experience with DamnSmallLinux on my XP box (version 2.4 to be precise). In fact, it was my first taste of Linux. TBH though, it was not a very pleasant experience, with the mouse gain on that absolutely terrible, a bizzare and spartan/ugly visual appearance, and a nasty crash/lockup on shutdown meaning that I only ever dabbled with it from time to time for fun. So, before trying anything else, I tried to get that disk to run. Unfortunately, perhaps it was the time that disk has spent just sitting under direct sunlight for several years, but it was completely unreadable.

My second attempt with DamnSmallLinux involved downloading the "latest" current version (4.10). Strictly speaking, DamnSmallLinux has actually been dead for the last 5-6 years! Although I managed to get this to load the boot loader, it ultimately failed halfway through the booting process, with weird errors about failures to access particular memory locations. I can only guess that perhaps it's RAM requirements weren't in fact as lean as they claimed.

With DamnSmallLinux out of the question, I began hunting around for another lightweight distro. While Puppy Linux came up a few times, a quick check of their requirements quickly revealed that it was highly unlikely to work (128 MB to 192 MB are values often stated as minimums/recommended specs here). The next alternative I stumbled across was Feather Linux. Although I was initially hesitant to use this given its low profile, a lack of substantive info about it, and the fact that the project looked like an abandoned ghost town (the last version - 0.7.5 which I used - was released back in 2005) it turned out to be the magic bullet I was waiting for.

Using Feather Linux
After getting the machine to boot from the CD, the first thing you'll see is a screen with a big logo and a tiny "boot: " prompt below it. Simply press enter to get past this. At this point, you should start to see the standard boot sequence (with Tux in the top left corner), where it goes through trying to autodetect all the various hardware components present.

Once this is complete, you'll need to complete a little configuration exercise with a very basic (X-Server) GUI. Basically, it'll ask you what type of mouse you've got (i.e. number of buttons, PS/2 or serial - don't pick serial if you've got one of those with a round plug with several pins sticking out of it, or else the mouse won't work and you'll be forced to hard reboot the machine), screen resolution stuff (800x600 works great here; the DPI was left to the "auto" setting), and one other thing I can't remember now.

After all this is complete, it should all work nicely, and you'll be presented with a desktop (albeit with a rather minimal desktop environment). A few tips:
1) RMB on the desktop brings up the main menu, from which various apps and the shutdown command can be accesed.

2) sudo fdisk -l    in the Console (first icon in the grid on the desktop) lists the available drives on the machine, including your USB drive if you've got it connected. Compare the output before and after plugging this in to figure out which is which. I was initially a bit confused here when I was surprised to see two different disks of similar size on the machine (the harddrive is 5GB (6 according to Linux), while the USB drive is 8GB (7 according to Linux)).

3) At least on my machine, hda1 was the internal harddrive, while sda1 is the USB drive

4) Rox-Filer (first icon on the third row IIRC - the blue-white icon) is the file manager on this distro.

5) To get access to the two drives we need, open up two instances of Rox-Filer. In each, press the "Up" button (first on toolbar IIRC) until you get to the Root Directory. From there, head to "mnt", and open the corresponding drive's folder. The drive/partition will be mounted automatically at that point.

    NOTE: opening a folder here means single-clicking on it. To select, you need to try box selecting (though perhaps shift-selecting might also work)

6) To copy a folder from one drive to the other, Right-Click on the folder in question, and click "Copy". (If it's not in the main menu, it's probably under "Directory Operations" or similar). In the dialog that appears, make sure the remap the path specified so that it points to somewhere on the USB drive instead. Then press OK, and wait as it goes through copying over all the files in those directories. During this process, there will be a dialog on screen showing what's being copied (which disappears once it's done).

7) Once you're done, it's probably wise to unmount the partition just in case there were still some writes pending. Right-click on the drive and choose "Unmount" from the menu that appears.

8) Be prepared for some weirdness with the mouse gain mapping. Just like with DSL, moving the mouse across the screen feels horrid - like dragging an elephant from one side ofa sludgy football field to the other. I'm not sure what exactly causes it, but thankfully modern Linuxes don't seem to suffer from this problem anymore!

Once I had all the main stashes of files copied off (namely, my "My Documents" folder where most of my stuff should be, but also the "vb98" folder - i.e. the Visual Basic install folder in Program Files - where I'd ended up saving off most of my early projects, not knowing better at the time), I proceeded to check whether I'd succeeded in actually getting those files across. Lo and behold, it worked! I was so happy! For the first time in a decade, I'd finally have access to some very precious files...

Exploring the Treasure Trove...
Like a kid in a candy store, I eagerly trekked through the files I'd painstakingly migrated over. These included a whole bunch of photos (which I'd taken with my first ever digital camera), some stories + poems I'd written at Intermediate School leading to me getting the Creative Writing cup, and all of my earliest projects - both programming (yes, these actually still run on my latest machine!), art (i.e. many pictures drawn using only a mouse and MsPaint), and also my earliest animation projects (which the Chinese New Year project was an example of).

MsPaint - This beauty was one of the things I spent the most time with

It was very exciting looking back over all those things again. Sure, it was a bit hard to find stuff - it was like it was a completely foreign structure created by someone else! Then again, after a while, I started to stumble across evidence that at some point I'd ended up doing some radical reorganisation efforts on the hierarchy - albeit somewhat incomplete in places - all of which ended up resulting in a slightly jumbled mess in places.

Glossy Backgrounds
While I haven't managed to fully explore everything yet, I did manage to stumble across a folder through of wallpapers I made using some techniques I discovered one day while poking around in Ulead Photo Express. This software came with the scanner (a Mustek one I got from Harvey Norman by redeeming a gift voucher), and was actually a bit too heavy for the machine at the time - so it would frequently be quite sluggish when I tried to do something with it.

Here is a small collection of some of the best ones:

Chinese New Year Project
Brief mention must also be made of the project that started all of this - the Chinese New Year greeting that I wanted to get hold of again...

Firstly, meet the main star of the show:

Horsey was drawn in MsPaint, which was also used to prepare the frames of the animation. This was assembled using Microsoft Agent technology (using the Agent Character Editor). At the time, this was the only tool I knew / had at my disposal for animating things, so I've got quite a collection of these characters. Besides Horsey, the other most well-fleshed out character I had was Mousey (a little printout of Mousey used to be stuck on to the top left corner of my monitor case), on which I honed most of the techniques I went on to use.


Anyways, the second part of this story is that once you'd put together a character using the Microsoft Agent editor, you need to be able to make use of it. To do this, I made use of my knowledge of Visual Basic 6 at the time (along with one very helpful example/tutorial), to hack up little programs for controlling the characters. Apart from scripting up little shows by stringing together the various animations defined, you could also make them speak some arbitrary text. By speak, I really mean speak: besides showing a floating text-balloon beside the character (which was able to be themed to better match the character), you could also get it to use the Lernout and Hauspie Text-To-Speech engine to actually speak this text aloud, which would then be automatically lipsynced by the engine (the mouth would move accordingly by using appropriate frames you'd specified for that pose). For that time (and even now), IMO this was very cool stuff.

And now, some screenshots of the app (apparently this was just the first version of it):
The Happy New Year app on startup, running within the Visual Basic 6 IDE.

Horsey in action - complete with a speech bubble beside him

No comments:

Post a Comment