Intermittent Memory Errors
Intermittent Memory Errors
My one surviving RAM pack has failed on me. So, thought I, this is an excellent opportunity to test Pokemon's ingeniously designed chip test circuit. It originally appeared in this thread:
viewtopic.php?f=7&t=923
but to save you time I will summarize and repost it here.
The situation is this. I want to debug and repair a ZX81 16K RAM expansion pack. (Why? I don't know. I have done on-board memory expansion mods several times, and the result is vastly superior to the "old-fashioned" way. I'm guess I'm just stubborn.) Anyway, the culprit is likely one of the 8x 4116 RAM chips (1 bit x 16K), or, the supply voltages to those same spooky chips. (In this case the supply voltages are fine.)
What the test circuit does is remap the 16K expansion pack to different addresses, and allow the user to load and execute a program in the native 1 or 2K of the ZX81/Timex motherboard. A little program then POKEs 0 and 255 to each memory location of the 16K RAM pack, PEEKing back the results. In most cases this will determine the failed chip right away. If you put zeros and get back 4's, for example, you know D2 is bad. Replace the chip according to this diagram, and avoid the trial-and-error method.
That's the theory. About a year ago I tested it with a working RAM pack and marched the whole address space successfully.
So here's my situation. This same RAM pack has failed. The computer won't boot with it in place. Installing the test circuit and my little BASIC program, and marching the 16K, I get a few sporadic errors, not consistent errors. This is a surprise to me.
At first errors pointed to one chip or another, but to make a long story short I suspected something else was wrong, and to eliminate the unknowns all 8 RAM chips have been removed, socketed, and replaced with brand-new chips. The wire bridge has also been replaced, as it was getting frail with fatigue. The RAM chips are not the source of this problem.
Testing 16K bytes, each bit OFF and then each bit ON, I got a total of 7 individual bit errors, an error rate of .005% What gives? I thought computers were supposed to be consistent.
Does anyone have any ideas how such a goofy error rate could come about?
viewtopic.php?f=7&t=923
but to save you time I will summarize and repost it here.
The situation is this. I want to debug and repair a ZX81 16K RAM expansion pack. (Why? I don't know. I have done on-board memory expansion mods several times, and the result is vastly superior to the "old-fashioned" way. I'm guess I'm just stubborn.) Anyway, the culprit is likely one of the 8x 4116 RAM chips (1 bit x 16K), or, the supply voltages to those same spooky chips. (In this case the supply voltages are fine.)
What the test circuit does is remap the 16K expansion pack to different addresses, and allow the user to load and execute a program in the native 1 or 2K of the ZX81/Timex motherboard. A little program then POKEs 0 and 255 to each memory location of the 16K RAM pack, PEEKing back the results. In most cases this will determine the failed chip right away. If you put zeros and get back 4's, for example, you know D2 is bad. Replace the chip according to this diagram, and avoid the trial-and-error method.
That's the theory. About a year ago I tested it with a working RAM pack and marched the whole address space successfully.
So here's my situation. This same RAM pack has failed. The computer won't boot with it in place. Installing the test circuit and my little BASIC program, and marching the 16K, I get a few sporadic errors, not consistent errors. This is a surprise to me.
At first errors pointed to one chip or another, but to make a long story short I suspected something else was wrong, and to eliminate the unknowns all 8 RAM chips have been removed, socketed, and replaced with brand-new chips. The wire bridge has also been replaced, as it was getting frail with fatigue. The RAM chips are not the source of this problem.
Testing 16K bytes, each bit OFF and then each bit ON, I got a total of 7 individual bit errors, an error rate of .005% What gives? I thought computers were supposed to be consistent.
Does anyone have any ideas how such a goofy error rate could come about?
- Attachments
-
- ZX81MEM1 - Project.pdf
- Chip Test Circuit
- (12.75 KiB) Downloaded 143 times
- 1024MAK
- Posts: 5118
- Joined: Mon Sep 26, 2011 10:56 am
- Location: Looking forward to summer in Somerset, UK...
Re: Intermittent Memory Errors
What kind of errors? details please
Could be a refresh problem, or a multiplexer chip problem, or (I'm sure I can think of a few more...).
And I take it you have cleaned the edge-connector?
Mark
Could be a refresh problem, or a multiplexer chip problem, or (I'm sure I can think of a few more...).
And I take it you have cleaned the edge-connector?
Mark
ZX81 Variations
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp
Standby alert
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb
Looking forward to summer later in the year.
ZX81 Chip Pin-outs
ZX81 Video Transistor Buffer Amp
Standby alert
There are four lights!
Step up to red alert. Sir, are you absolutely sure? It does mean changing the bulb
Looking forward to summer later in the year.
Re: Intermittent Memory Errors
For example,1024MAK wrote:What kind of errors? details please
Poke 0, Peek 4 (bit stuck on 1 at D2)
Poke 255, Peek 127 (bit stuck on 0 at D7)
Poke 255, Peek 254 (bit stuck on 0 at D0)
etc.
The edge connector is freshly tinned with a thin layer of solder and the pack has been reseated several times.
I modified the routine to retest the same byte if it gets an error. It seems the error does not repeat. The program simply marches on until the next passing neutrino collides with its karma.
Last edited by TMAOne on Tue Apr 08, 2014 6:14 pm, edited 1 time in total.
Re: Intermittent Memory Errors
In my opinion its the (internal) power supply.
Internal there are +12V and -5V generated which are probably in reality very far from it due the poor design.
Maybe replacing the corresponding capacitors or transistors could help.
You will find a schematic here somewhere.
Internal there are +12V and -5V generated which are probably in reality very far from it due the poor design.
Maybe replacing the corresponding capacitors or transistors could help.
You will find a schematic here somewhere.
Re: Intermittent Memory Errors
The voltages are correct, and actually pretty close to the specified -5V, +5V, and +12V, which is amazing considering how they are obtained.
(I do have 2 other packs with voltage problems that I have not been able to fix, despite my masochistic attempts to replace every associated part.)
Here's some other weirdness. I have a ULA which functions passably well but puts spurious characters on the screen. I use this ULA in my case-less test motherboard, and have learned to ignore the extra characters. The chip test circuit works with this ULA, but I find when I replace it with a different, "fully-functional" ULA, I get only high values back from my testing. What the hey? I've made the substitution twice and gotten the same results both times.
I think I must have been evil in a former life somewhere,...
(I do have 2 other packs with voltage problems that I have not been able to fix, despite my masochistic attempts to replace every associated part.)
Here's some other weirdness. I have a ULA which functions passably well but puts spurious characters on the screen. I use this ULA in my case-less test motherboard, and have learned to ignore the extra characters. The chip test circuit works with this ULA, but I find when I replace it with a different, "fully-functional" ULA, I get only high values back from my testing. What the hey? I've made the substitution twice and gotten the same results both times.
I think I must have been evil in a former life somewhere,...
Re: Intermittent Memory Errors
If you haven't already done so, check for ripple/ 'mush' on all the supply lines...I have had trouble with noisy/oscillating zeners that otherwise give the correct DC level causing trouble in other equipment!
Re: Intermittent Memory Errors
Thanks gozzo.
This is so weird.
I replaced both the 5V1 and 12V zener diodes--no difference.
Then the voltages went south on me me. So I replaced the transistor. Voltages came back on line, but the behavior was unchanged.
The -5V is pretty clean, but the +12V still had a fair amount of ripple, so I replaced the 100uF capacitor. That seemed to clean it up some.
With the chip test circuit and the "clean" ULA, I get all high values from every bit every time, regardless of what was written.
With the chip test circuit and the "working but with superfluous characters" ULA, I now get a clean run of the entire 16K address space occupied by the RAM pack. Hoo-ray!
So,... try booting with the RAM pack normally.
With the "noisy" ULA, it boots. (Another hoo-ray.)
With the "clean" ULA, no boot.
So PokeMon and gozzo, you were right about shaky voltages being the culprit. The pack now seems to be working, albeit with only one ULA.
I really don't need to figure this out--I've already converted this board to 16K on the mother anyway. I just wonder what's going on with the ULA thing.
P.S. I replaced the 7805 on the mother just in case. No difference.
This is so weird.
I replaced both the 5V1 and 12V zener diodes--no difference.
Then the voltages went south on me me. So I replaced the transistor. Voltages came back on line, but the behavior was unchanged.
The -5V is pretty clean, but the +12V still had a fair amount of ripple, so I replaced the 100uF capacitor. That seemed to clean it up some.
With the chip test circuit and the "clean" ULA, I get all high values from every bit every time, regardless of what was written.
With the chip test circuit and the "working but with superfluous characters" ULA, I now get a clean run of the entire 16K address space occupied by the RAM pack. Hoo-ray!
So,... try booting with the RAM pack normally.
With the "noisy" ULA, it boots. (Another hoo-ray.)
With the "clean" ULA, no boot.
So PokeMon and gozzo, you were right about shaky voltages being the culprit. The pack now seems to be working, albeit with only one ULA.
I really don't need to figure this out--I've already converted this board to 16K on the mother anyway. I just wonder what's going on with the ULA thing.
P.S. I replaced the 7805 on the mother just in case. No difference.
Re: Intermittent Memory Errors
Might be best to change ALL of those electrolytics, just in case...after 30 or so years, they have probably dried up a bit... at least they don't suffer from the 'capacitor plague' that has infested a lot of PC motherboards and other stuff in recent years!