Saturday, 26 September 2015

Commodore PET ROM / RAM replacement boards

This is a board which plugs into the 6502 CPU socket on something like a Commodore PET and can selectively replace the onboard ROM or RAM. I've been making these for a while, and as with all of the boards I make, I keep refining the designs. Adding new features I find I need, or taking requests or suggestions.
These are the new, red V3.1 boards, and feature an activity LED, reset switch. There are three scenarios where one of these boards is useful, as a diagnostic tool, as a ROM/RAM replacement or as a system upgrade. The original use is as a diagnostic tool. ROM and RAM are common causes of failure on vintage computers, and this is an easy way to rule out problems with the original ROM or RAM, buffering, multiplexing or address decoding. If it turns out there are faults with the original ROM or RAM, and replacements are not available, or too expensive, the board can be left in place. In these situations, you can remove all the onboard ROM and RAM and just run with the ROM/RAM board, reducing power consumption and heat generation inside the case.
The third use comes with older PETs with BASIC 1 or 2, or with less than 32K of RAM. The ROM/RAM board can contain multiple ROM images, so it can be used to upgrade these systems to BASIC 4 and 32K or RAM, or any combination down to BASIC 1 and 8K. This is how my 2001 system is setup.
One feature I tried to add to the previous version, but couldn't get working, was selective ROM replacement. This worked fine on the VIC 20 version, but not the PET one. With help from Dave Mercado, I've found the issue I was having appears to be with the compiler I was using, so I've rewritten the GAL equations for the board to get around the problems, and it is now possible to selectively replace the onboard ROMs.
The idea is you have a system which is not booting, set the board to replace all the ROM and RAM and see if it boots. If not, then you it's back to checking power, clock, reset etc. A lot of the time, that will be enough to get the PET to boot. You can then turn off the RAM and see if it will run with it's own RAM. If not, you need to sort out RAM problems. There are two banks of 16K, and these can be selective controlled, so you can enable the lower bank to get the system to boot and then test the upper bank (see a previous repair on a 4032 for some techniques you can use).
Once the RAM is sorted, you can look at the ROM. You can select multiple ROM images (up to 16), but with previous versions of the board, it was either all ROMs replaced or none. So if a ROM fault was detected, you needed to identify the culprit by other methods. Now you can enable only one ROM on the board at a time, with the rest replaced, to see which ones work and which ones will not boot. The board can also be used on things such as the VIC20, anything with a 6502 CPU, apart from systems with banked RAM or multiplexed video RAM.

The new DIP switch settings are as follows:
  1. RAM mode
  2. RAM mode
  3. ROM mode
  4. ROM mode
  5. ROM mode
  6. ROM selection
  7. ROM selection
  8. ROM selection
  9. ROM selection
On the 2001 version, the RAM mode switches select 0K, 8K, 16K or 32K of RAM.
Switch 1
Switch 2
RAM mode
0
0
No RAM is replaced
1
0
8K RAM
0
1
16K RAM
1
1
32K RAM

On the normal PET version, the RAM mode select bank 0 enable or bank 1 enable or both.
Switch 1
Switch 2
RAM mode
0
0
No RAM is replaced
1
0
lower 16K replaced
0
1
upper 16K replaced
1
1
both banks replaced

The rest are the same for both versions. The ROM mode switches select which ROMs are replaced. For example, with switch 5 only on, the KERNAL ROM is being tested. All ROMs are replaced by the ROM/RAM board, apart from the range 0xF000-0xFFFF, which is the UD6 socket on a 4032/8032 and the H4 and H7 sockets in the 2001. The 2001 uses pairs of 2K ROMs in identically wired sockets, one with an active high enable pin, one active low. Later PETs use a more conventional arrangement of a single 4K ROM per block
Switch 3
Switch 4
Switch 5
ROMs replaced
Range
2001
8032
0
0
0
None
-
-
-
1
0
0
All
-
-
-
0
1
0
All but Editor
E000 - E7FF
H3
UD7
1
1
0
All but Options
9000 - AFFF
-
UD11 / UD12
0
0
1
All but Kernal
F000 - FFFF
H4 / H7
UD6
1
0
1
All but BASIC B
B000 - BFFF
-
UD10
0
1
1
All but BASIC C
C000 - CFFF
H1 / H5
UD9
1
1
1
All but BASIC D
D000 - DFFF
H2 / H6
UD8

The ROM selection sets the higher address bits on the ROM. If a 27256 is fitted, a single 32K ROM image is available. With a 27C512, two images are selected via switch 6. With either of these, a jumper should be fitted next to the ROM socket to enable power to pin 28. This is not required for 32 pin ROMs. With a 27C010, 4 images are selected using switch 6 and 7. With a 27C020, switches 6, 7 and 8 select the 8 images, and if you can find 16 ROM images, then it's a 27C040 and switches 6-9.
Currently, I supply a 4 ROM set with 2001 boards:
Switch 6
Switch 7
ROM Selection
0
0
PET tester
1
0
BASIC 1 No CRTC Normal keyboard
0
1
BASIC 2 No CRTC Normal keyboard
1
1
BASIC 4 No CRTC Normal keyboard

The normal PET version gets those same 4 non-CRTC based ROMs, as well as 4 CRTC versions, 40 and 80 columns with business or graphics keyboards
Switch 6
Switch 7
Switch 8
ROM Selection
0
0
0
PET tester (No CRTC)
1
0
0
BASIC 1 No CRTC Normal keyboard
0
1
0
BASIC 2 No CRTC Normal keyboard
1
1
0
BASIC 4 No CRTC Normal keyboard
0
0
1
BASIC 4 40 Column CRTC Normal keyboard
1
0
1
BASIC 4 40 Column CRTC Business keyboard
0
1
1
BASIC 4 80 Column CRTC Normal keyboard
1
1
1
BASIC 4 80 Column CRTC Business keyboard

Various sockets have been used on the PET over the years, and it is difficult to find a way to fit with all the different types of socket, I've ended up with two options.
For most cases, I use the type on the left. These turned pins will fit into most sockets. Some of the single wipe sockets (particularly the white ones) aren't that good, particularly after the CPU has been inserted and removed a couple of times. With those you can push a turned pin socket into the existing socket, to get a good contact, but you may have to bend the contacts back or change the motherboard socket if you want to remove the turned pin socket at a later date.
You can fit the pins to the bottom of the ROM/RAM board two ways around, to give two different pin lengths, or stack 40 pin turned sockets to give extra height over other socketed chips.
On the early 2001 models, the socket have high shoulders so these pins will not fit. For those, I have a version with long thin pins that slide into those sockets.

These boards are available to buy from my Tindie Store, alongside the new smaller PET ROM RAM board.