Monday, August 11, 2008

TRS-80 "Backup Limited" Games

In late 1984 a friend who had just purchased a TRS-80 Model 4 showed me a couple of games from Radio Shack that were on what they deemed "Backup limited disks". This was a floppy with both the game program, AND a copy program for the disk. At the time, these games were all but uncopyable, so you had to use THEIR copy program to copy them. (It kept a count, and would only allow you to make 2 copies, or something like that. And furthermore, you couldn't copy a copy). So, I looked around in the code, and being new to Z-80 at that time, there was nothing that I could really do with them. So, we left them on the shelf while I learned. About a month later, someone had published an alternative DOS to TRSDOS. It was smaller, faster, AND included a built-in machine language monitor! And best of all, this monitor could be invoked on startup as the only thing running. So, it would start the boot process, look for you to be pressing 1-2-3 on the numeric keypad, and if you were, it stopped loading the whole OS, and just loaded the monitor.

Now, this is a Z-80 based system as I mentioned earlier, this is important in that there wasn't the notion of multi-tasking, memory protection, or any of those "new fangled high level concepts". This was a simple machine with 64K of memory.

So, here's how I attacked the "Backup Limited" games. I would load the monitor, and clear memory with one of it's built-in commands. Then, I would boot the game from the original disk. Once it was loaded I would swap the new DOS disk back in, and reboot back into the monitor. From the monitor, it was a TRIVIAL matter to save the contents of memory into a disk file. So, once the monitor loaded, I would browse through memory, and find the spot where the game code began, and ended, and save that chunk into a file on a new clean disk. I did this for EVERY game they offered, and it worked EVERY TIME.

If you are wondering how it was so easy, it's simple really. The games were built around, and probably ON TRSDOS. SO, they loaded at what is normally the LOWEST available address with TRSDOS running. On the other hand, this new DOS, and the monitor specifically, loaded at a much LOWER address, since it was much smaller, and allowed me access to memory that would normally be written over by a monitor, or any other program that got loaded.

Oddly enough, I was unable to dump the cassette based games this way, they appeared to load LOWER in memory, and when the monitor loaded, it overwrote part of the game.

The ones that I distinctly remember dumping were Frogger, and Zaxxon. I know there were more, as we did everything that Radio Shack had.

No comments: