Thursday, 3 September 2015

Upcoming Commodore 64 projects

Here's a quick preview of a couple of upcoming Commodore 64 projects.

Commodore 64 pseudo stereo dual SID
This was inspired by a video from GadgetUK, where he modified a dual SID board to run two SIDs in parallel. Normally the dual SID board is used to add a second SID and a different address, to generate actual stereo from suitable software. The idea with this mod was to place two at the same address, so they could be driven from normal software. You may think that there is no point in doing that, they will both sound the same? Well, there is quite a variation in the sound produced by different SIDs, and the idea here is to exaggerate that by using a 6581 from a C64, and a much later 8580 from a C64C.
I raised the issue of a possible problem with two parallel SIDs when it comes to reading, as both devices will be selected, and both would try to write back to the databus. I suggested adding an OR gate to the chip select of the second device, so it would only be selected when the chip was selected and it was in read mode (or since it's all negative logic, it would NOT be selected if either the chip was NOT selected OR it was NOT in read mode). I said this could be implemented with a simple diode OR, and in the followup video, that seemed to be working nicely once the pull down resistor value was sorted out. To avoid any issues with that, I've used a single gate OR gate here, rather than a diode OR.
There are a few differences between the 6581 and the 8580. The power supply, filter capacitors and audio output amplifier circuit are all different. So what I've done here is to ignore the C64's filter caps and fit these onboard. I also ignore the power supply and have onboard 9V and 12V regulators, with the power to be tapped from the main power supply filter capacitor. I've left the audio from the main SID going to the C64, but both audio signals are also buffered onboard and fed to the audio output jack.

Commodore 64 PLA replacement with EPROM
Replacing the commonly faulty Commodore 64 PLA with an EPROM is something I tried a few years ago, with mixed results. I also tried to make a replacement using two GAL chips, but didn't get very far with that.
Following another video from GadgetUK, he seemed to have more success using the EPROM method and adding a 68pF capacitor to the /CASRAM line. The issue here is that due to what could be considered a design flaw in the C64, the /CASRAM line needs to be delayed by about 25nS to allow the addresses to be ready in the multiplexer before they are loaded into RAM.
I've updated my board to have space to add a suitable capacitor. These probably needs to be tuned to each board, depending on the type of RAM used.
To make this more repeatable, I've added a quad OR gate to add a configurable delay. Each gate has a propagation delay of around 9nS, so with the jumper you can select to tap the signal after 1, 2, 3 or 4 gate delays. This will add 9nS, 18nS, 27nS or 36nS delay to the signal .These timings are approximate, but are typical values. I can also shorten or extend this by using a different logic family chip.