When sufficiently motivated by boredom, there is no limit to what I can accomplish.

30 December 2007

I've spent most of the day hanging out at Laurelinde's house with Lyssa and the family, and after fixing my watch fob, practising with my new fountain pen (thanks, Laurelinde!), eating dinner, opening gifts (a walking stick with a handle depicting what appears to be the Roman deity Janus, a copy of The Doctor Who Pattern Book, and a copy ofFlame Wars edited by Mark Dery), and doing a bit of reading, I decided to try to install some of my favourite games on my new laptop - yes, my addiction to Infocom games has reared its ugly head once again. I installed DOSbox and started figuring out how to fake a floppy drive when all you have is a couple of directories containing the files that were originally on the floppy disks.

You know, this is a little too gimpy for my usual posts, so I'll put the rest of this entry behind a cut. Feel free to skip over my squeeing over twenty-five year old video games if you like.

Ye gods, the formatting of this post is messed up. I'll fix it tomorrow.

Okay. Now I can embarass myself in a more discrete manner.

At first I built floppy disk images by making use of files full of zeroes and the Linux loopback device driver, copying the files that corresponded to each disk into each, mounted the first disk image under DOSbox, and tried to install the entire collection in one shot. Unlike the pseudo-CD-ROM functionality, however, there is no way to swap floppy disk images one after the other. Then I tried mounting each directory in turn as a floppy drive to install games that way - no dice because there's no way to interrupt a program running in DOSbox to switch directory mounts. Ick.

Then I tried figuring out exactly what the installer does - while I made some headway I ran into a few snags because I didn't have enough information to hack a fake installer together. What I wound up doing was installing just the first disk of games, swapping floppy/directory mounts (MOUNT -u a), and ran C:\INFOCOM\INFOCOM.EXE /h from inside of DOSbox to install the next batch of games over and over again until all of the games were in place. The file INFOCOM.LST contains a string of characters (the lowercase letters a through t, each letter corresponding to one of the games in the collection). SETUP.INF contains only the string PJY. The directory structure looks like this:

C:\INFOCOM\
                INFOCOM.*
                SETUP.*
                ZIP?.COM
                ZIP?.EXE
        DATA\
                (first eight characters of the title of the game).DAT, including ZORK[1-3].DAT
        SAVE\
        ZORK0\
                ZORK0.*
                ZORKZERO.EXE

Given all of this I should be able to write a quick shell script that automates this entire process. I don't know if anyone out there actually cares about The Lost Treasures of Infocom so this'll probably wind up being for my own reference later on down the line, though there's a slim chance that another interactive fiction fan will stumble across it and find it useful.

What possessed me to do this? I have no idea. When I get an odd idea in my head I can't let it go - either I solve it or I wind up with a migraine.