• Please review our updated Terms and Rules here

IBM 5150 Motherboard trouble

romanon

Veteran Member
Joined
Oct 1, 2013
Messages
673
Location
Slovakia
Hi, its me agin, i have some trobles with my 5150 motherboard, when computer is running longer time ( 30 minutes and more) i get parity error 1 message and computer freeze. When i power on it agin, i get error number 0400 201.
It means error in first memory chip on bank 0, but he was already 2x replaced with a new one, so it is not possible to be faulty. I tried long memory test with 2 passes on "checkit" program, first test without errors, but pass 2 showed errors on at the beginning of memory. Where can be a problem when the fault effect after a longer time you start the computer?
 
64-256k version, bios date 27. oct. 1982. Now i tried 3 pass memory control, first 64k, without problems, then i shut down computer and turn on and get parity check 1 error.
 
64-256k version, bios date 27. oct. 1982.
In that case, "0400 201" corresponds to the parity bit in bank 0.
The parity bit ties in with the PARITY CHECK 1 error that you see.

So, when you write "first memory chip", do you mean the parity chip - the 'P' chip in the diagram [here].
 
In my many years of electronics experience, I have seen electronic components that had become temperature sensitive.
Some were good when cold but bad when warm. Others were good when warm but bad when cold.
I once fixed a 5150 motherboard where one of the 74LS138 chips worked when cold, but failed when warm.

One expanation for your symptom is that the parity chip in bank 0 has become temperature sensitive.
But you write that you have replaced it twice.

At this time, I cannot think of another explanation.
 
Possible bad solder joint in bank 0? So that when it warms up it expands/flexes just enough to break a connection somewhere?

A parity error in bank 0 doesn't mean the parity chip is bad, it means something in bank 0 is bad. I'd try reseating everything in bank 0... maybe you'll get lucky.
 
A parity error in bank 0 doesn't mean the parity chip is bad,
True, but in this case, there is also the error code of "0400 201", which for the OP's motherboard/BIOS revisions, specifically points to the parity chip in bank 0.

Possible bad solder joint in bank 0? So that when it warms up it expands/flexes just enough to break a connection somewhere?
The OP has resoldered in a replacement chip twice.
 
To set the record straight, i solders a socket for parity 0 chip and then i changed chip. So the problem may be on socket soldering or i dont know...
 
To set the record straight, i solders a socket for parity 0 chip and then i changed chip. So the problem may be on socket soldering or i dont know...
The "04" in "0400 201" indicates failure at address 16 KB, which is a quarter of the way through the first bank (64 KB sized).
If it was "0400 201" both before and after you soldered in the socket, that suggests to me that you have not introduced a bad solder joint.
 
Thanks for the corrections. Unfortunately, I am also out of ideas :-( other than resoldering large swaths of components in the (trace) vicinity of the component that keeps failing, which would be quite an endeavor.
 
At a low level, the following is what I am positive is happening.

Refer to the POST breakdown [here], which is for the BIOS revision that the OP has.

First, step 2 is relevant. The action means that if a RAM parity error is encountered during the POST, that the resulting NMI will not cause a jump to the NMI handler, which would display "PARITY CHECK" and then halt the CPU.

First 16 KB

At step 13, a test of the first 16 KB of bank 0 is done. The test involves a single call to a particular subroutine, one that tests a specified 16 KB block. The subroutine tests the data bits and the parity bit. Failure of the parity bit is indicated if data read equals data written, but a parity error occurs.

Example: Byte written = 55h, Byte read back = 55h, Parity error = yes

The POST looks for a parity error by examination of the PC7 pin on the 8255 chip (diagram [here]).

On the OP's motherboard, this test is passing (because if it wasn't, the CPU would get halted [without any error indication]).

The passing of this test also indicates that there is not a fault in the parity generation/read circuitry such that false parity errors are always being generated.

Remainder of RAM

Done at step 23. The same subroutine referred to earlier is used. The subroutine returns a fail status if either the test byte written does not match what was read back, or if a parity error occurred. Also returned is a byte representing the bit difference between what was written and read.

In this test is where the OP's "0400 201" is being generated.

The "04" indicates the fourth 4 KB address block (i.e. failing address somewhere between 16 KB and 20 KB).

The "00" is the bit difference between the byte written and what was read back, and because it is zero, the data bits are good. Therefore, it was a parity error alone that resulted in the subroutine returning a fail status.

We know from the successful test of the first 16 KB that the parity circuitry is not always generating false parity errors. Therefore, a failure of the parity bit is indicated.

After "0400 201" is displayed, the POST continues.

PARITY CHECK 1

At step 36, NMIs are allowed though to the CPU. Consequently, any future read of an address that produces a parity error (whether that's due to a data bit or parity bit) will invoke the NMI handler, resulting in a display of PARITY CHECK 1 for motherboard RAM, or PARITY CHECK 2 for RAM on expansion cards.
 
Could also be an issue with RAM refresh? In which case that might point to the DMAC.
Given my previous post, that would be good RAM refresh for the first 16 KB (i.e. because the RAM test of first 16 KB passes), but bad refresh for some or all other addresses.
If that was the case, I would expect that the test byte read back would not match the byte read, i.e. the "00" in "0400" would be something else.
 
Back
Top