Sunday 5 June 2016

VIC 20 Cartridge PCBs

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

When I design PCBs I usually try to add as many options as I can, to cover all the configuration possibilities. This often leads to jumpers or DIP switches.
This isn't too much of a problem on a large board, but on something like a ROM adapter, it makes the board larger than it needs to be a can overlap adjacent sockets.
Most are implemented with a pull up resistor or resistor array and a jumper or switch shorted to ground. This is fine as it allows all the different configurations to be tested, but once they have been tested, they are just taking up space. The resistors are also drawing a small amount of unnecessary current. Not a major issue, as they are usually in the order of 10K, so at 5V 0.5mA. You can get around this by using a link to select 5V or 0V, but you shouldn't change this on the fly as it will leave the input floating.
One the VIC 20 diagnostics cartridge I was looking to add an option to select a ROM image, but didn't want to add an unnecessary resistor. I had been programming a larger ROM with either the PAL or NTSC version of the diagnostics software, depending on where the order was for. I have now added a link to select the version. 
There is no ground plane inside the jumper block, and there is a hard wired link in the PCB layout for PAL, so for a PAL cartridge, just leave it as it.
For an NTSC one, just cut the link between two of the pins and install a wire link between the other two. This can be done when supplied, or at a later date by the owner.
It is also spaced suitably to install a header. The track is cut and the jumper installed where it was for PAL, or on the other pins for NTSC. A switch can also be fitted, but it is not ideal as the address line is floating when the switch is changed. 
That all looking to be working, so I added a few more options and removed the RAM to create a VIC 20 ROM cartridge. Not on the scale of the ROM and RAM cartridges I have previously made or Penultimate Cartridge I am working on, just a single ROM chip with a few options. I was thinking this could replace a damaged PCB or failed mask ROM in an original cartridge.
These were 8K or 16K. The example above is a dual 8K board with a single 8K ROM fitted (VIC 1922 -Comic Cruncher). This one was fairly badly corroded, but the contacts should clean up. The jumpers in the centre selected the ROM block. There is space for a second 8K ROM with it's own bank select jumpers.
Some also used a single 16K ROM and some additional logic. This was a dead Pirate's Cove. (let's not start that again, it's not the Cove of the Dead Pirates, but a dead cartridge which used to play Pirate's Cove). The Dead Pirates Cove cartridge actually used a 16K ROM, and a 74LS00 which converts the two block address select lines to the chip select and A13 address line. That could probably be fixed by replacing the faulty ROM with a 27C128 would probably fit, but there are a few unconnected pins which would need to be pulled high.
I've designed a new PCB along with same lines as that. There are the same kind of solder jumpers as used on the diagnostics cart to select the block address for each 8K half of the ROM. 4 way this time as blocks 1,2,3 and 5 are available. I've hard wired on the PCB links to blocks 3 for the lower half and 5 for the upper half, I think the most common setting. These can be changed as before by cutting the track and adding a wire link
I've setup one cart with jumpers and a ROM socket to test various options. Pirate's Cove is one of the unusual ones that use blocks 2 and 3 and you have to start with a POKE command. I have fitted jumpers to this board to select blocks 2 and 3 and programmed up a suitable EPROM.
There are also pads to select the high bits of the ROM, hard wired to 5V which suits smaller ROM chips where these pins are VPP or other things rather than address lines. A 27C256 could be programmed with two 16K ROM sets, or a 27C512 with four 16K ROM sets and the appropriate one selected using jumpers or wire links.
This can be used for 8K cartridges, with both links set to the same address. 
I will probably make a separate PCB for 8K carts as the 74LS00 is not required for a single 8K block. It will almost always be block 5, so that is hard wired, but the link can be changed if required.
Here I have made a replacement for a Donkey Kong cartridge which uses blocks 1 and 5, so only one link is changed.
The PCB is designed to fit into the original cartridge case.
It can also be used directly in the VIC20, the finger grips on the side allow easy removal.
That seems to have worked out, so I have designed some ROM replacement PCBs using those sort of jumper links. Those can now hide under the ROM chip, reducing the overall size of the board. I expect those sort of preset jumpers to appear on various other boards now.

UPDATE: I did make the 8K versions:
I now have a selection of these boards available, contact me if interested.

2022 Update: More recent versions of the VIC 20 cartridge PCBS are available from  The Future Was 8 bit