Emulators are a great way to reminisce about games and software from yesteryear. [Jorj Bauer] found himself doing just that back in 2002, when they decided to boot up Three Mile Island for the Apple II. It played well enough, but for some reason, crashed instantly if you happened to press the ‘7’ key. This was a problem — the game takes hours to play, and ‘7’ is the key for saving and restoring your progress. In 2002, [Jorj] was content to put up with this. But finally, enough was enough – [Jorj] set out to fix the bug in Three Mile Island once and for all.
The project is written up in three parts — the history of how [Jorj] came to play Three Mile Island and learn about Apple IIs in the first place, the problem with the game, and finally the approach to finding a solution. After first discovering the problem, [Jorj] searched online to see if it was just a bad disk image causing the problem. But every copy they found was the same. There was nothing left for it to be but problem in the binary.
It’s a tale of disassembly and dredging though decades-old scanned literature. The key to the bug was found in a copy of the Micro 6502 Journal from June 1980. If you don’t want the story spoiled, stop here — the problem came about when someone copied an Apple DOS 3.1 version of the game to an Apple DOS 3.3 disk. The disk formats aren’t backwards compatible, so the 3.3 disk version would only play on a DOS 3.3 machine. However, the game’s code uses bytecodes in the save routine that refer to DOS 3.1 functions that had changed in DOS 3.3. It was by searching for this bytecode that the journal popped up on Google with a hint. The article mentions the changes in bytecodes between DOS versions, giving [Jorj] the clue he needed to solve the mystery.
In the end, to get the game to function properly under DOS 3.3, all that was required was to change the code to point to the proper register for DOS 3.3. With this done, the finishing touch was a modified title screen highlighting [Jorj]’s hard work. Credit where credit is due.
Kindly, [Jorj] has uploaded the fixed game for the world to enjoy (.gz file download)! It’s always great to see people still working with and enjoying these old systems. The Apple IIGS even got itself an OS update at age 29.