Friday 18 July 2014

Commodore 64 PLA replacement - Mark II

This is an old post, preserved for reference.
The products and services mentioned within are no longer available.

I previously looked for a replacement for the Commodore 64 PLA, and tried an EPROM based solution. This sort of worked, but only on some systems, and was basically limited due to timing issues.
The PLA basically has 16 inputs (17 including CE) and 8 outputs. Replacing those is tricky as there aren't suitable chips of that size available. The solution I have come up with is to use two chips with 17 inputs and 4 outputs each, giving the required number of pins. They can sit either side of the rows of pins in what used to be called a butterfly adapter.

The chips I have used are GAL22V10s, these have 22 I/O pins, 10 of which can be outputs. That seems to add up, and leaves one spare pin. I have connected that between the two devices as it may be required for timing reasons.

The equations are available on the nets, and described in fantastic detail in the article The C64 PLA Dissected. I've split the connections according to the easiest wiring and in a combination of optimism and laziness, went straight to PCB. It's a small board, 1" x 1.5", so doesn't interfere with the surrounding components.

One of the reasons the EPROM based solutions have problems is timing, mainly around the CASRAM signal. This should be activated slightly later than the others, to avoid conflicts. It's basically a catch all, if none of the other devices, are activated, access the RAM. To achieve a slightly longer propagation delay, I've generated the signal on the left chip and passed it through to the right chip which passes it to the C64 board (when the chip enable is active anyway). This double delay seems to do the job nicely.
I have some spare boards, so contact me if you would like a PCB or a completed module.

2022 Update: The timing required seems to vary from board to board. These sort of worked, but not universally, same as the EPROM version.