To read part 1, click HERE
In the mid 1987, cartridges started to pop out on the market with more than one program. Compilations were usually made for tape users, with Turbo 250, Turbo 2002, Head Azimuth and Chip Monitor, and some for more advanced disk users with Copy 190, Copy 202, Macro Assembler, Disk Monitor etc. They usually had a simple menu, you would choose which program to load, and that was it. No switches, and the entire memory of your computer was available. These cartridges were usually with 8k or 16k EPROM, with provision for making it a “double” cartridge, with two separate sets of programs. We will analyze the hardware of one of those cartridges in this part.
Unfortunately, while desoldering the components from this cartridge I have ripped some tracks, as the holes were not trough-plated, but the components were soldered from both sides of the PCB, probably to save on the cost of manufacturing the PCB. On the left there is one 74LS00, a 4-gate NAND, and to the right is the EPROM, on this particular cartridge it was an 8K 27C64 EPROM, but the design of the printed circuit board also allows use of 16k and 32k (as a twin 16k cartridge). By carefully tracing what’s left of the tracks, I have reconstructed the schematic.
The cartridge is wired as a 16K cartridge, with start address in memory at $8000. Data and Address lines A0 – A13 are connected to the EPROM. Two NAND gates are used to combine /ROMH and /ROML to allow 16k decoding, and their final output is connected with the /OE line of the EPROM. The other two NAND gates form a Flip-Flop, whose inputs are the /RESET line and /IO2. One output of the Flip-Flop is wired to /CE of the EPROM and /EXROM and /GAME lines on the C64. On startup, as the /RESET line is pulled low, the Flip-Flop sets /CE, /EXROM and /GAME low, and the cartridge is now in the memory map. After the desired program is selected, the code that copies the program from cartridge to RAM will read anything from the /IO2 range ($DF00-$DFFF). This will trigger the Flip-Flop, and the /CE, /EXROM and /GAME will now be set to VCC, which in turn makes the cartridge disappear from the memory map. The only way of getting the cartridge back in the memory map is to reset the computer, either by use of the reset switch located on the cartridge, or by power-cycling the computer. A14 line of the EPROM is connected with the switch, and this will allow to have two different sets of programs in one cartridge. The behavior of this cartridge is emulated in VICE under the name “Ross”, which corespondents to a nickname of one of the makers of this cartridge. More on that in one of the next parts.
I have also recreated the PCB of this cartridge. It will fit into most standard C64 cartridge boxes. Note that the routing could be better, but I opted to make it as close it could be to the original PCB. There were also other designs from different makers, but all of them were based on this schematic. I really don’t know where this schematic originated, or who the original author is, but i find it very clever.
I have uploaded the EAGLE files for this cartridge on my Github page. Feel free to make physical PCBs and make modifications to the schematic. In the next part I will reverse engineer a different cartridge from Ex-Yugoslavia which was made to support full 64K cartridges.