I presented my Amiga 500 in a previous post. It has only 512 kB of memory, and I would like to expand it to 1 MB.
Amiga can have three types of RAM: chip, slow or fast. Only chip memory is accessible by all special purpose chips Amiga has. For instance all image and audio data has to be in the chip memory so that the display chip or audio chip can use it. The downside of chip RAM is that it’s slower for the CPU to access, because the bus is shared between the CPU and the special purpose chips.
The fast RAM is accessible only by the CPU, and is therefore faster because it doesn’t have to share access with the special chips. It can’t be used for image or audio data however, as the special purpose chips don’t have access to the fast RAM memory space.
Slow RAM combines the worst sides of fast RAM and chip RAM: it is not accessible by the special purpose chips, but it is still using the slower bus, so the CPU doesn’t get any speed benefit from using slow RAM. Amiga 500 trapdoor 512 kB memory expansions are usually slow RAM.
I have an accelerator for the Amiga 500, and that provides more than enough of fast RAM for me. (There will be a separate blog post about that later – it’s not currently installed in the Amiga.) What I do want however is more chip RAM. Especially some WHDLoad games need 1 MB chip RAM. The accelerator doesn’t provide any extra chip RAM, so I need another solution.
Modifying the Amiga 500 to use the internal 512 kB memory expansion as chip RAM is definitely possible. The best document about it I found on the net is here. The information in the document can also be verified with Amiga 500 motherboard schematics.
This requires however some motherboard modifications, but I like to keep my vintage machines in original condition, and do only fully reversible modifications. Cutting traces on the motherboard is definitely not reversible.
Furthermore, to make things more complicated, my Amiga 500 has a revision 3 motherboard. This motherboard is difficult to modify even with the instructions provided, it doesn’t have jumper pads that can be modified, but traces need to be cut and rewired. So I wanted to develop a solution that doesn’t require motherboard modifications at all. (By the way, Amiga Hardware Database shows a revision 3 motherboard with 1 MB chip RAM modification. In addition to the original jumper wires, there’s an additional one below the CPU on the right side of the image near the side expansion slot.)
The required modifications for PAL Amiga 500 to 1 MB chip RAM are following:
- A newer Fat Agnus chip is needed. It has to be revision 8372A. I obtained mine from Vesalia Online.
- A 512 kB memory expansion for the trap door expansion slot is needed. It’s possible that some 3rd party memory expansion boards don’t work as chip RAM. Mine is from Individual Computers. I also bought a separate RTC module for it.
- Connection from pin 59 on Fat Agnus needs to switch from CPU pin 52 to CPU pin 47.
- This is what JP2 modification on rev 5 and 6 motherboards does.
- Pin 41 on Fat Agnus needs to be isolated (only on PAL machines).
- Signal to pin 32 of the trapdoor memory expansion needs to be cut.
- This is what JP7A modification on rev 6 motherboard does.
- This is missing from the aforementioned document regarding revision 3 motherboard modifications, but must be done for rev 3 as well.
In order to reroute the signals from the Fat Agnus with no motherboard modifications, I decided to design a PCB that plugs into the 84-pin PLCC slot of Fat Agnus and intercepts the signals. Then, based on some jumpers, it selects whether to route the pin 59 through the original route to motherboard (slow mem) or via a jumper wire straight to CPU pin 47. For pin 41 there is a separate jumper that can select between NTSC (pin 41 is connected) and PAL (pin 41 is disconnected). With jumpers it’s relatively easy to change between chip RAM and slow RAM if needed.
The PCB is very simple with nothing else than the two PLCC connectors (male for the PLCC socket on the motherboard, and female for the Fat Agnus chip) and the two jumpers. I made the PCB with KiCad and engraved and drilled it with my Gravograph VXM. The tricky part with the PCB was the male PLCC plug.
These connectors are hard to find and expensive. I got one made by Winslow ADAPTICs. Another source could have been Ironwood Electronics, but no local distributor had their products in the inventory. I chose to use through-hole connectors, but this might have been easier with surface mount connectors. The length of the traces on the new PCB must be kept as short as possible so that it won’t be causing problems for the signals, and this means that the connectors can’t be next to each other on the same side of the PCB (some traces would be several centimetres long that way), but they have to be on the opposite sides at the same position.
The Winslow PLCC plug has 1.27mm pitch, and it is hard to solder manually. Furthermore, as the female PLCC connector is on the other side of the PCB at the same position, the long pins of the male PLCC plug had to be bent to make space for the female connector (as these are through-hole connectors, and they would occupy the same space on the PCB). On the other hand, this also reduces the pitch making it easier to solder. It’s easy to break the connector when bending the pins, so this is must be done very carefully.
The PCB is single-sided, and the PLCC plug has to be soldered from the “wrong side”. This is somewhat more difficult than soldering in the normal way, but as the pins are so long, there is enough space for doing this. Also my trusty 30-year old soldering iron gave up when doing this, and I had to use a cheap spare iron. The results don’t look nice, but they do work. (It’s very easy to check all the connections with a multimeter right after assembly to identify any bad solders or accidental bridges between traces.)
The old Fat Agnus chip needs to be removed with appropriate PLCC extractor tool, and replaced with the new board where the new Fat Agnus chip is installed. For the CPU pin 47, a thin pin is soldered to the end of the wire, and it’s just inserted to the same slot in the CPU socket with the processor pin.
The other modification needed is cutting the trace going to pin 32 in the trapdoor expansion slot.
For this I designed an additional connector between the expansion slot and the memory board. For a full-length memory board this would be difficult, but typically the memory boards are shorter than the expansion slot, and there’s space for this additional connector.
Instead of fitting the full 28×2 connector to a PCB, just the pin 32 that needs to be disconnected – and a few neighbouring pins – are isolated to a 3×2 connector, and the remaining parts are handled by unmodified 12×2 and 13×2 connectors. Just the ends of these larger connectors had to be sanded a bit shorter so that they would fit side-to-side. The connectors have extra long pins, so there’s some extra space for fitting a tiny PCB. On the PCB the signal of the pin 32 is routed through a jumper that can be used for selecting between chip RAM and slow RAM. The old pin from the socket is bent away from the original position, and a new pin is cut shorter and installed in place of it, with help of some plastic part taken from another pin strip. The incoming pin and outgoing pin must not touch each other!
This fits the RAM expansion module rather nicely. The gap is just wide enough for the additional thickness, thanks to the long pins of the connectors.
When the RAM expansion is installed to the Amiga, it is now possible to select between 512 kB chip + 512 kB slow and 1 MB chip RAM configurations by just changing the positions of two jumpers.
To verify that it’s really working, here are screenshots of avail-command in both slow mem and chip mem configurations: