Okay, progress is being made, even if only slowly
This could be some of the remaining original ‘lower’ 4116 (or equivalent) DRAM chip(s) being faulty, or a problem with one or more of the ‘upper’ DRAM chips.
First, a couple of questions: do you have a ability to programme (burn) EPROM chips?
And is the ROM in a socket?
I’m assuming you don’t have any expansions or interfaces that can take either a physical ROM / EPROM chip, or ROM images.
If yes to both questions, download a diagnostic program and burn it to an EPROM.
I suggest you use either
this or
this
Then use
these instructions to allow an EPROM to be used in place of the ROM chip.
Without a diagnostic ROM (which can diagnose many RAM problems), there is simple way to fool the machine into thinking it has no ‘upper’ RAM and therefore it’s only a 16K machine. That is, we temporarily disable the ‘upper’ DRAM chips. Please note this only applies to issue 2 through to issue 4S boards. Issue 5 and issue 6A boards use different circuitry.
To disable the "upper" 32k of RAM, on a issue issue 2 through to issue 4S board, take a piece of wire and connect pin 5 on IC23 (a 74LS32) to +5V. (
link).
I suggest you make a temporary solder connection with an SPST on/off switch in series. Start with the switch set to on. Then if you get to the copyright screen and BASIC works, after that, you can turn the switch off so that some simple BASIC commands can access and therefore test the upper RAM.
This is done because the ROM code tries to see how much RAM there is at start-up. After this, the BASIC ROM will ignore any RAM that is not present (or in this case, is disabled)(well, unless you reset the limits using CLEAR n). But the BASIC POKE and PEEK commands have no limits and work across the whole Z80 address range.
Double and triple check that you have the correct pin on the correct chip, or you WILL damage something. This temporary modification will disable the "upper" RAM (when the switch is ON), as the CAS signal won't reach the RAM chips.
Note that if a faulty DRAM IC is jamming one of the data lines, this won't really help.
Mark