2

I'm facing a Parity Error problem on my new 486er DOS Retro PC. Every now and then, a running software crashes with a Parity Error output on screen. This happens for different software so I think the source is one of my four 2 MB RAM modules.

I've already tried to proof this with a copy of memtest86 on a bootable floppy disk, but this program also crashes on startup and creates an endless boot loop. It shows a menu and a blue screen is visible afterwards for 2 seconds. There is a debug option to run it step by step which only prints out 2 steps before reboot.

What are my options? How did someone in the early 90s investigates in such a problem? How to detect defective RAM on DOS?

3
  • 4
    Try swapping the modules into different sockets. The memtest program itself is small, maybe you got unlucky and your bad RAM module corrupted the memtest code. If that doesn't help, just remove the modules one at a time till the problem goes away!
    – alephzero
    Commented Jun 18, 2019 at 11:49
  • 1
    Most parity errors weren't caused by bad RAM because most PCs didn't use the parity/ECC SIMMs necessary to make memory parity checking work.
    – user722
    Commented Jun 18, 2019 at 14:58
  • 2
    Try setting the RAM speed to e.g 80ns instead of 60ns, or e.g. 3-3-3-3 waitstate instead of 3-2-2-2. This can be done in the BIOS setup in the chipset features submenu.
    – Janka
    Commented Jun 18, 2019 at 16:02

2 Answers 2

5

In such cases, the problem is almost always in one of three places:

  1. One of the memory modules.
  2. The motherboard itself.
  3. A plug-in device.

To help with the testing, you should start be removing all non-essential devices form the system (CDROM, Network, HDD, other I/O). Just leave the keyboard, screen and floppy. Then re-run your tests. If it works, the problem is in one of the removed devices.

Next remove the memory, and try them out one at a time. You could then test the memory using your test program. You could then replace the defective module(s)

Another possible would be to disable parity checking in the BIOS. This assumes that this can be done. I don't know the specifics of your motherboard or BIOS so I can't say for sure. The error would still be there, but your program would be able to show you where the problem was without being clobbered. Again you could then remove/replace the defective memory.

Finally as a sledge hammer, you could buy new memory and hope the new stuff is good.

2
  • Further clarification: In that era, memory modules were 8 bit + parity. Depending on your CPU 486DX or 486SX you will have to at least 4 or 2 memory modules installed in order to run your tests. Commented Jun 18, 2019 at 19:20
  • 1
    +1 thank you. I did a lot of testing yesterday and found a configuration that I think works (I never had that parity error again). I switched many ram modules and found out, that some of them had some kind of corrosion or dirt on their contacts. I finally cleaned all of them with alcohol. It seems as if this was the problem.
    – Ziagl
    Commented Jun 19, 2019 at 6:59
2

You mention there are 4 2Mb modules. If I remember correctly, many 486 era boards would let you populate in banks of 2. If your board supports it, you can try removing 2 of the memory modules and running the system with only 2 installed. If the problem persists, it is likely to be one of the two remaining modules. If the problem goes away, then it is likely one of the two removed modules is faulty. By carefully trying different combinations you can usually isolate the bad memory module. It helps to label the memory so you can record your results... something like 'a', 'b', 'c' and 'd' would work.

For example:

a & b = no errors
c & d = parity errors

conclusion, c or d is the problem.

a & c = no errors
b & d = parity errors

conclusion, d is the problem because b already seemingly was working fine when paired with a.

to double check our conclusions we try:

a & b = no errors (repeated test, but it never hurts to be sure)
a & c = no errors (again, repeated test)
b & c = no errors (we expect this, because we suspect d is the bad memory)

and also:

d & a = parity errors (probably because of d)
d & b = parity errors (again, probably because of d)
d & c = parity errors (really pretty sure now, d is junk)

You get the idea... :-)

0

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .