Uploading OPRGV4

Here's the scenario: You've just finished the game you've been working on on and off for the last fifteen months. It's time to upload it to Zeuxworld, Z2, and the like. There's just one little problem with that; the computer that you did all your work on isn't currently equipped to connect to the internet, and both floppy drives (Yes, I have a 5.25") are currently non-functional. There is no obvious means of getting anything out of the computer. Now, what do you do?

One solution is incredibly simple: give up. But that wasn't an option; I had already released the first three installments of Operation: GAMMA VELORUM, and the release of the final episode was already greatly delayed. Creating a series that wins a couple of awards, making the player wait over a year in suspense to see how it ends, and then telling them that they will never play the rest doesn't exactly do wonders for your reputation. I had to release OPRGV4.

The question then becomes this: How do you get the game world off the PC and onto the internet? I could install the necessary communications card, hook up the modem, and hope it works, but the thought of installing new circuit boards inside the case made me a bit nervous. On the other hand, I could fix the already installed floppy drives; they had worked before, and I was pretty sure that the problem was with the cable connecting the drives to the motherboard. Easy enough to fix, I thought, so I opened up the case. The cable was half unplugged from the drive, so I stuck it back on, turned it on, and... it didn't work. I plugged it in several different ways and corrupted a couple floppy disks in the process, but I couldn't get it to work. I probably could have, given enough time, but I'm not much of a hardware person, and I didn't particularly want to spend weeks fiddling around with cables and wires with no guarantee of success.

By now, I was rather frustrated. I didn't care how hard it would be to implement; I just wanted a straightforward way to move data from one computer to another. Then, during a sudden lapse of sanity, reality, and common sense, I had an idea. I could write down the file by hand, byte for byte. Yes, you read correctly, write down the file by hand. It wasn't too far-fetched. I had made a backup a fair amount of time ago, but there were about ten boards which had either been added of updated since that time. If I could get those boards onto another PC, I could insert them into the backup, and I would have a ZZT world indistinguishable from the original! These boards were the only data I needed to transfer, making the job a lot easier. Sure, it would still be a lot of work, but at least if a problem occurred, it wouldn't be hidden inside the depths of the computer's hardware! Except for human error, very little could go wrong. Plus, I kind of wanted to see what doing this would be like. :) The following log details what I did and when I did it:

Saturday, January 24, 2004
Exported the boards that had been changed or added since the last external backup and zipped them, reducing them from somewhere around 60K to 24,405 bytes (23.8K). Wrote and compiled a simple program in QuickBASIC that displayed the contents of a binary file in hex on the screen, along with codes for a simple error detection scheme. Recorded the first 4,000 bytes (3.9K) of the zip file on 5 sheets of paper with a pencil, a pencil sharpener, and lots of patience.
Sunday, January 25, 2004
Spent the afternoon recording the next 8,000 bytes (7.8K) of the file, exactly double what I did the day before. By this time, 11.7K had been copied - just below 50% of the file! Except for a slight pain in my right hand, a possible warning that maybe this wasn't such a good idea after all, nothing really eventful happened.
Monday, January 26, 2004
I had the evening free and managed to write out 4 more pages (3.1K) of the file. Progress of creating a paper copy of the file was at 62.3%, with 15,200 bytes copied.
Saturday, January 31, 2004
Spent some of the afternoon copying 6,000 more bytes of data (5.9K). Progress by this point was approximately 86.9%.
Sunday, February 1, 2004
Spent the afternoon copying the last part of the file. All 23.8 kilobytes of information have been copied onto 31 pieces of paper, each single sided (we frequently write on the unused sides of waste paper). Phase 1 is now complete.
Tuesday, February 3, 2004
Started work on a simple binary editor written in QuickBASIC. The commands implemented were PAGE, LINE, CHECKSUM, WRITE, and EXIT. Worked on a function to parse text entered by the user, extract hex numbers, and write them to memory as bytes in a string.
Wednesday, February 4, 2004
Finished and debugged binary editor, which took most of the afternoon. Plenty of things to be desired, but I got it working well enough for copying the file. Entered a little over 200 bytes before I quit for the night.
Thursday, February 5, 2004
Made a small tweak to the command CHECKSUM. Entered in about 2.8 more kilobytes of information. CHECKSUM revealed that out of eight blocks of information, three had errors and one was incomplete. Not too good, but the errors should be easy to correct.
Friday, February 6, 2004
I had a few hours to spare and typed in 1.6 kilobytes. Progress of Phase 2 at 18%, not accounting for the time it will take to correct bad data. Slow and steady wins the race...
Monday, February 16, 2004
Typed in another 3.9K, raising the percentage to 49.2%, with 5 errors. Thought about ways to revise the checksum calculations.
Friday, February 20, 2004
Entered 3.1K of information. 62.3% of data entry complete, with 14.8K transcribed. I seem to be getting bad data regularly, but I think I've worked out a better checksum system that will allow me to pinpoint errors and correct them easily.
Saturday, February 21, 2004
Entered 4.3 more kilobytes with relatively few errors this time. I decided that the advanced checksum system will not be implemented until Phase 2 is over. Percentage of Phase 2 complete is now 80.3%.
Sunday, February 22, 2004
Typed the rest of the file (4.7K) into the computer. Phase 2 is now complete. Phase 3, correcting the many errors in the copied file, will follow.
Monday, February 23, 2004
Phase 3 begun. Spent an hour or two writing a new checksum program in QuickBASIC. This program will generate 1,221 4-digit hexadecimal checksums, one for every 20 characters in the file. Hopefully this will make finding errors easier.
Wednesday, February 25, 2004
Tested part of the checksum program. Wrote down the important parts of the source so that I could easily and accurately duplicate the checksum program on the other computer.
Thursday, February 26, 2004
Copied the first 240 checksums onto a piece of paper. Percent copied: 19.7%. I plan to compare the written checksums with those generated by the original data; any differences would suggest an error at that checksum's position.
Friday, February 27, 2004
Copied 480 more checksums, raising the percentage to 59%. Copying checksums seems to be less stressful than copying the original data, probably because there's less to be copied.
Saturday, February 28, 2004
Big day! Wrote down the rest of the checksums. Typed the QuickBASIC checksum program into the other computer and compared the checksums I copied with those of the original data. Recopied about 1.2K of data which the checksums reported as containing errors.
Sunday, February 19, 2004
Victory! Corrected all the errors, exited my primitive editor, double clicked on the resulting file, and to my surprise, it actually worked! The board files seemed to extract okay, and they imported into ZZT just fine. Average data transfer speed: about 0.00000766 kilobytes per second.

Now, after two power supply failures, several missed deadlines, problems with the floppy drives, a crazy idea or two, and I'll admit it, some laziness on my part (Sorry!), Operation: Gamma Velorum, Part 4 is finally out. Hopefully, this data copying incident will work on me like the traditional punishment used by teachers:

I will backup my files more frequently.
I will backup my files more frequently.
I will backup my files more frequently.
I will backup my files more frequently.
I will backup my files more frequently.
I will backup my files more frequently.
I will backup my files more frequently...

-Quantum P.