Replacing Disk Protection
Many articles have been written about how to remove the copy protection from Apple II disks. This usually takes one of two forms:
- Conversion of the program to a single file. Many games loaded off of a disk and didn't require additional disk access, so this was a popular approach.
- Normalization of the disk format. It was common for disks to retain the 16-sector disk layout, but tweak some aspect of the format to make the disk unreadable by an unmodified version of the operating system.
In either case, it was often necessary to disable secondary protection schemes, such as disk track nibble counting.
Sometimes these aren't good enough. Consider, for example, SSI's collection of turn-based strategy games. If two people want to play against each other, but aren't in the same room, they have to physically mail the save-game disk. If the copy protection is removed, they can save their game and send the disk image electronically. But if we go the final step, they can just transfer the saved game file, without having to go through a disk-imaging step. What's more, if we can make the game work under ProDOS, they can play the game from their hard drive rather than having to swap floppies around.
Nearly all of SSI's games used an operating system called "RDOS",
presumably named after its author, Roland Gustafsson. Unlike the
standard DOS and ProDOS operating systems, which watched for Applesoft
programs to print strings starting with Ctrl-D, RDOS used the ampersand
vector. Instead of
PRINT CHR$(4)"BLOAD FOO", you would use
&RECALL "FOO" . Replacing RDOS with ProDOS was a simple
matter of writing a replacement that handled all the same commands, but
fit in less space.
One day in 1987, I sat down with a very long printout and a bunch of highligher pens, and disassembled RDOS. I realized that the trick would be to take advantage of ProDOS living in the upper 16K "language card" space, as that required only one fixed page for ProDOS (at $BF00) and a chunk for a buffer. I'd need to replace BASIC.System with something new. Transferring files from RDOS disks could be done with a BASIC program that would process the RDOS catalog entry, read the files from the disk, and save them under ProDOS. The only trick there was to use the native RWTS (read/write track/sector) routines to access the copy-protected disk.
The original version of ProDOS RDOS was written in August 1987, and published in February 1988 in COMPUTIST #52. The full object code of the OS replacement was included as a hex dump, but this was one case where you really wanted to spring for the floppy disk version. I only had a few games to work with, but I was fairly confident it would work for others.
A couple of years later, Evin Mulron contacted me after having trouble getting it to work with certain games. He was living the scenario described earlier -- playing two-player games by physically mailing floppies -- and was very interested in getting the games to work. An avid wargamer, he had a much larger collection than I did, and had gotten several of them to work (published in COMPUTIST #76). I found ways to address the problems, and released ProDOS RDOS v1.1 in November 1991. It was published in COMPUTIST #85.
Between the two of us we managed to convert over 30 games to ProDOS. Minimal changes were sometimes necessary, e.g. when filenames weren't unique in the first 15 characters, but most of the effort was automated. The converter was able to handle three different disk formats (one based on DOS 3.2, two on DOS 3.3), taking most of the pain out of the process. A little extra effort was sometimes required to get the game to work well from a hard drive, particularly when the original came on multiple 5.25" disks.
ProDOS RDOS had two major limitations: it didn't work for games that required more than 48K of memory, and it didn't work with games that accessed RDOS directly from machine language. I dabbled with a new version that would fix both of these problems, but never finished it.
- rdos11.shk - from November 1991. This is a ShrinkIt file archive with full documentation, the RDOS transfer program, and the ProDOS RDOS replacement. Source code is included.
- rdos64.a3.shk, rdos64.a4.shk - from October 1991. My 64K ProDOS RDOS work-in-progress.
- rdosplus.sdk - an enhanced version of ProDOS RDOS, written in 1999. I don't know much about it beyond what's in the documentation on the disk image.
ShrinkIt archives and disk images are most easily viewed with CiderPress on Windows. On Mac/Linux you can use NuLib2 for the file archives, and perhaps a simple AWP-to-text converter to read the documentation. (Or use a Windows emulator and just run CiderPress.) Incidentally, CiderPress can access RDOS disk images, including nibble images of copy-protected 13- and 16-sector disks, essentially replacing RDOS Transfer.
Other related links:
- The folks at Brutal Deluxe created a GS/OS FST for 16-sector RDOS disks.
- A page about working with SSI save game disks.
It turned out that not every game from SSI used RDOS. A series of games from the Strategic Studies Group, headlined by Roger Keating, used a custom OS with an unusual disk format. Extracting the OS and using it to copy the disks was straightforward, and I had a disk copier called RKCOPY published in 1985 in COMPUTIST #18.
A few years later, in 1989, I decided to do a ProDOS conversion of this as well. It looks like I prepared an article for COMPUTIST, but I don't think this was published anywhere except perhaps the comp.binaries.apple2 Usenet newsgroup.
- rkcrack.shk - ShrinkIt file archive with documentation, source code, and executables. Tested games include Germany 1985, RDF 1985, Baltic 1985, Norway 1985, and the original Reach for the Stars.
This could use some polishing. The save-game handling could be simpler, and there's a problem with RDF 1985 where the icons get messed up. My best guess is that I failed to replicate some sort of memory erase behavior, so you need to start Germany 1985, quit, and then run RDF 1985. If you don't, the various units all look like troop transports or air strike markers.