A while back — following the repair of a C64 — I posted about testing the PLA replacement that I had used. In the great video on that topic shared by MindFlareRetro, Eslapion mentions two possible tests for a PLA replacement. One of these I covered in my post back then. The other test involves using a Super Zaxxon game cartridge.
Due to the unique way of bank switching implemented by that module, it seems to be particularly vulnerable to glitches produced by PLA replacements. Less-than-perfect replacements tend to produce crashes or skewed graphics when running that game.
I don’t own a Super Zaxxon cartridge and they seem to be hard to find these days. So I thought it might be fun to create my own replica. Doing the research for this project, I came across a post on the Lemon64 board. It turned out I was lucky: Siem Appelman had already examined the original module and documented the essential parts of the schematic. I contacted him and he was willing to share his findings, including his own design for a reduced version that would require a single memory chip, only.
I opted for a W27C512 EEPROM chip because I had plenty of them lying around and they seem to be the cheapest parallel PROM chips around these days. You can get them for less than 0.50€ each on eBay. With Siem’s simplified design, only the lower 32KiB are used and need to be programmed like this:
$0000 lower $1000 bytes (4KiB) mapped to $8000 $1000 lower $1000 bytes (4KiB) mapped to $9000 $2000 $2000 bytes, bank 0 (8KiB) mapped to $A000 $4000 lower $1000 bytes (4KiB) mapped to $8000 $5000 lower $1000 bytes (4KiB) mapped to $9000 $6000 $2000 bytes, bank 1 (8KiB) mapped to $A000
The game switches between the upper banks 0 and 1 by reading the contents of the lower memory either starting at $8000 or $9000.
After rounding out the schematics with general knowledge on C64 cartridges gained from Jani’s excellent post, I first wanted to create a prototype to ensure that the design would be working. For this, I tried to use my expansion port breakout board that I had created for the 74LS279 test circuit. But I soon realized that connecting all the data and address lines to the EPROM using jumper wires wasn’t only
a pain in the rather tedious but also very unstable.
So, I created a new revision of the breadboard adapter that allows for an optional 27C512 or 27C020 EPROM to be placed on the PCB and to be connected directly. Using this new board, I finally managed to create a working prototype!
Actually, the prototype turned out to be working too well. When I connected it to my C64 that is featuring the replacement PLA, I was a little disappointed that I still didn’t see any crashes or broken graphics. It remains to be examined whether this is due to the modified schematics or to an exceptionally well working PLA replacement, although I suspect the former.
I did a few more experiments and found that driving the CE/OE line with two diodes and a pull-up resistor instead of the two NAND gates would still work on and unmodified C64 but would crash when using an EPROM based PLA replacement.
Then I lost interest in the subject and instead decided to layout a nice PCB to turn my prototype into a fully functional Super Zaxxon replica. The layout of the components was quite easy but I turned it up a notch by branding the PCB with the Super Zaxxon logo. This time, I ordered the boards from PCBWay again and they did good job producing the somewhat unusual design at a very reasonable price. It would actually be a waste to hide the beauty in a cartridge case. Maybe a transparent one would do.
The BOM for this replica is quite short. Apart from the PCB and the optional DIP sockets there are only 4 different kinds of components:
|1||U2||74LS00 quad 2-input NAND gate||eBay|
|1||U3||74LS74 dual edge-triggered flip-flop||eBay|
|1||U4||W27C512 64k-8bit EEPROM||eBay|
All in all, this was again a fun project with many things to learn along the way.