Saturday, 14 October 2017

ZX81 Internal 16K RAM (reversible version)

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

One of the common issues with the ZX81 is the good old RAM pack wobble. Depending on the state of your edge connectors on your ZX81 and RAM pack, it sometimes does not take much to interrupt one or more connections and crash the ZX81.
To get around this, I have done many ZX81 internal RAM upgrades, following the procedure I described in an old blog post - ZX81 Internal 16K RAM.
I had a request to do one of these, but to do it in a reversible manner, without cutting tracks. The modification I normally do involves cutting a few tracks and making some extra links under the board.
I started with a ZX81 that had a memory fault, easy to check if it only works with a RAM pack connected. It was the version with two 2114 RAM chips.
You can see there are outlines for either IC4 (a single 24 pin or 28 pin chip) and IC4A and IC4B, (2x18 pin chips).
I removed those and cleared all the pads and fitted a 28 pin socket. Some ZX81's may already have this socket fitted, particularly kit built issue 1 boards.
To go back to a 1K ZX81, you can fit a 24 pin RAM chip here.
The originals were 4108 or 4118 chips, but you can also fit a 6116. With LK1 fitted (as standard), you will get 1K. With a 6116, you can also fit LK2 instead of LK1, and you will have 2K internal RAM. I just noticed that one of my TS1000's has a 6116 and LK2 fitted, I never knew it was 2K.
Here, we want 16K, so we are fitting a 62256. This is a 32K RAM chip, but it would require some additional logic gates to enable the full 32K, so we are just using 16K, which is fine for most ZX81 software.
Rather than cutting the tracks, I bent out the pins that needed to be connected to different places, namely pins 1, 21, 23 and 26. The wires then needed to be connected to address lines A10, A11, A12 and A13.
With a RAM chip, the order of the address and data lines is not actually important, as it reads back using the same pins in the same order as it was written. So rather than connecting to the matching pins on the RAM chip, just go for the easiest options.
PinSocket62256Connection
1RefreshA14D1 (A11)
2VCCA12VCC
26VCCA13D5 (A13)
23WEA11D3 (A12)
21VCC/A10A10D2 (A10)
Pin 2 is wired to 5V, so I left that alone, and the others are wired to the nearest points, the top of diodes D1, D2, D3 and D5. To make a clean connection, I desoldered the diode leads, inserted the bared wire ends into the same hole as the diode leg and resoldered the connection.
That doesn't look too bad, and since no tracks were cut, it means those connections can be removed and the 6116 or 4118 RAM chip fitted to go back to a 1K ZX81. You could even fit a pair of 2114 chips again if desired.
As part of the upgrade, I also swapped the 7805 regulator for a switch mode replacement (also reversible).
And fitted a composite video modification, again reversible. As described in a previous blog post (ZX81 composite video modification), the input wire is desoldered and pulled back into the modulator, and the resistor connected to the phono socket is desoldered at the top and bent out of the way, and a TFW8B video amp board fitted in the remaining space.
This has one of the later 2C210E ULAs, so the video output includes the back porch signal, so just needs buffering.
A heatsink is a good addition, to protect that ULA.
That's the board finished. Four upgrades, all of which make it a more usable ZX81, but can be reversed if so desired.
One ZX81, upgraded and ready to go.

Update - Testing the upgrade:
Once done, time to power up and wait for the K. If all is well, it should take a few seconds longer for the K to appear. You can test it by typing
PRINT PEEK 16388+256*PEEK 16389
This should display 32768, showing the top of the RAM is at 32K. The first 16K is the ROM, so that means it has recognised 16K of RAM. If it doesn't check your wiring.