TMAOne wrote: ↑Fri Jun 26, 2020 10:17 pm
I have since discovered that my "best" multimeter has some sort of bug or design flaw. It will not read the voltage of the -5V circuit correctly.
Digital multimeters having strange quirks is not unheard of. A manufacturer of expensive professional multimeters was caught out by a large former nationalised U.K. company where staff discovered that when testing on a certain item of equipment, one model of their multimeters gave different DC voltage readings depending on which way round the probes were connected to the circuit... But the older model of multimeter from the same company worked correctly.
Anyway, now you know, please label the errant meter to remind yourself in future. The +12V and the -5V supplies in a ZX Spectrum will have some high audio frequency ripple and noise on them, maybe this is upsetting the multimeter?
TMAOne wrote: ↑Fri Jun 26, 2020 10:17 pm
Questions:
- Am I correct in assuming that if the lower RAM is good, and the upper RAM has flaws, that the machine will still boot? (That seemed to be the case with the 2nd unit. I ran memory scans of the flawed high RAM from the working low RAM in order to determine which chip to replace.)
No. It’s not as simple as that (it’s a Sinclair!). Quick answer: only sometimes. Long answer: the test that the ROM code does at power on (and at reset) is only to try to work out how much RAM there is. It’s not designed to properly test the RAM. It may however decide that there is less than 48K of RAM, or that there is no ‘upper’ RAM (due to one of the ‘upper’ DRAM chips or the associated multiplexer or glue logic chips being faulty) in which case if the ‘lower’ DRAM is okay, it will start up and try to run as a 16K machine (or with whatever RAM it decided is available).
Whatever it decided, the Z80 machine stack will be placed near the top end of available RAM. If the RAM in this area is faulty (e.g. one or more of the ‘upper’ DRAM chips are faulty or the multiplexer/glue logic for these is faulty) then data (which will include return addresses) stored in this area will be corrupted. When the Z80 pulls a return address off the stack, goodness knows where it will now jump to when trying to continue executing. The result can range from a ‘frozen’ machine, to a ‘loading screen’ and countless other variations.
Now if it has decided that it only has 16K of RAM (and this RAM is good), the machine stack will be in the ‘lower’ RAM area, and hence it will now work as a 16K machine. It will execute BASIC commands correctly, run 16K games and be rock solid in operation.
TMAOne wrote: ↑Fri Jun 26, 2020 10:17 pm- Failing that, how does one "test" upper RAM? Can this apparent complete lack of activity even occur as a result of RAM fault(s)?
Your photo does indicate that it may be a fault with one or more of the the ‘upper’ DRAM chips (or associated multiplexer or glue logic chips)...
When powered on or reset, does the screen always go black with a white border and with faint vertical red stripes in the black area? Turn up the brightness, contrast and colour and be ready, it all happens rather quickly...
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.
TMAOne wrote: ↑Fri Jun 26, 2020 10:17 pm- Any suggestions where to probe for activity, (which seems to be sadly lacking on this unit), in order to determine where the fault lies?
Yes, if you have a logic probe (or are willing to make one) or have an oscilloscope.
First off, what signals do you get on the following pins of the Z80 CPU?
Be very careful, if you short the probe between adjacent pins you may damage one or more of the chips.
Pin Function
6 clock (3.5MHz square-ish clock signal)
16 /INT (should be high but pulsing low at approximately 50Hz for PAL or 60Hz for NTSC)
17 /NMI (should be high)
18 /HALT (should be high)
19 /MREQ (should be pulsing rapidly)
20 /IORQ (should be pulsing)
21 /RD (should be pulsing rapidly)
22 /WR (should be pulsing)
24 /WAIT (should be high)
25 /BUSRQ (should be high)
26 /RESET (should be high, except for a very short time after power is applied or go low then high as the reset button is pressed and released)
27 /M1 (should be pulsing)
28 /RFSH (should be pulsing)
Then test address lines A13, A14 and A15. These give an idea of which memory the CPU is accessing.
Mark