Home 

IBM 5150  -  The 'ground I/O CH RDY' Procedure



NOTE:  

The procedure on this web page was written specifically for the IBM 5150 motherboard.



When to run

When ALL of the following are true:

•  Motherboard proven as faulty; and
•  Motherboard is not faulty in a way that overloads the power supply (see here); and
•  If the motherboard has an optional 8087 NPU (or compatible) fitted, you removed it (i.e. eliminating it as the problem cause); and
•  You tried re-seating all socketed chips; and
•  A thorough visual examination of the motherboard did not reveal a problem; and
•  Use of an oscilloscope does not reveal pulses as expected (frequency, duration, and polarity) on pin 13 of the 8253 chip - see here.    <---- Pulses as expected indicate that the IBM BIOS ROM has started executing and has progressed at least partially.
•  
•  You have verified that the 8284A chip is generating a 4.77 MHz clock signal, and you can observe that clock being received on pin 19 of the 8088 CPU, and observe it also being received on pin 2 of the 8288A bus controller chip.
•  You have verified that the reset pin of the 8088 CPU is LOW.  (I.e. Verifying that CPU is not being held in a reset state.)

When all of the above are true, then a question becomes, is the 8088 CPU even able to successfully read the first byte (EA hex) of the reset vector within the IBM BIOS ROM.
That is what this procedure tries to establish.


More information - technical

The startup sequence of the IBM 5150 motherboard is at here.

In those pointed-to sequences, take a look at steps 8 and 9.  Those two steps can be observed using a logic analyser, but what if one does not have a logic analyser?  Well, if you have a logic probe or oscilloscope, then by following the procedure below, you can observe part of it:
- The 8088 CPU putting address FFFF0 (hex) onto the motherboard's address bus.
- The relevant part of address FFFF0 going from the address bus to the address pins of the IBM BIOS ROM (via the external address bus).
- The IBM BIOS ROM chip being enabled (i.e. instructed to output the data it has at the presented address).
- The IBM BIOS ROM chip outputting the data of EA hex to the external data bus.
- The data of EA hex going from the external data to the data bus.
- The data of EA hex going from the data bus to the data pins of the 8088 CPU.

In the procedure below, some additional steps (10 through 13) have been added to verify that there are no 'stuck bits' nor 'shorted bits' in the data path from IBM BIOS ROM to the 8088 CPU.  For those steps, you will need an EPROM programmer and some suitable EPROM's (and in some cases, an adapter).


Not tested

A hell of a lot !!!!

Some examples:
•  No I/O operations
•  No memory write operations
•  The entire contents of the IBM BIOS ROM - maybe some content is corrupt.
•  Data path in the direction of: 8088 CPU ---> external data bus
•  If steps 10 through 13 were not done, then data path in the direction of: external data bus ---> 8088 CPU (because maybe, in that direction, there is bit stuck HIGH or LOW, or maybe shorted bits)
•  All bits of all address buses (A/XA/MA).
•  ...
•  ...
•  ...

This procedure is a kind of, 'Well, are we at least getting to first base ?'   The result dictates the diagnostic steps that would then be done.


Test equipment required

•  Below, you will be measuring HIGH's and LOW's of TTL logic.  For this procedure, the best tool to use for that is a logic probe.  An oscilloscope is also suitable.

A multimeter is not suitable.  Why?  This procedure puts the motherboard into a static state (although clocks will still be present).  If some problem results in the motherboard not going into a static state, a multimeter will not reveal that, whereas a logic probe will (the probe's pulse LED will flash).

•  You will need something that can either ground the pin of an IC, or ground a contact in an ISA slot.  Read step 2.1 below for details of what I use.

•  For step 10 and onward, you will need an EPROM programmer, a suitable EPROM, and in some cases, an adapter for that EPROM.  See here for EPROM's and adapters suitable for the IBM 5150.



Procedure - Step 1 of 13 - IBM BIOS ROM

Verify that an IBM BIOS ROM is fitted.  Why?  Because we know that in the IBM BIOS ROM, the data of EA hex is expected from the ROM when address FFFF0 hex is on the address bus.  You will be looking for that EA in a later step.

Step 1.1 Verify that an IBM BIOS ROM is fitted.

For the IBM 5150, these are shown at here.

Note: If you like, you can use Ruud's Diagnostic ROM in place of the IBM BIOS ROM, because it too has EA as the first byte of the reset vector.
If you like, you can use the Supersoft/Landmark Diagnostic ROM in place of the IBM BIOS ROM, because it too has EA as the first byte of the reset vector.


Procedure - Step 2 of 13 - Ground 'I/O CH RDY'

The goal here is that, for the duration of this procedure (all steps), the 8088 CPU's READY pin be held LOW at power-on time.  We could ground that pin, but it would carry some risk of damage to the chip that drives the 8088's READY pin.  So instead, we are going to ground the motherboard's 'I/O CH RDY' (IOCHRDY) line.  That will result in the 8088's READY pin being held LOW.  A diagram is at here.

On the IBM 5150, following are some places where you can ground I/O CH RDY:
1.  Pin A10 of an ISA slot - see here.
2.  Pin 10 of chip U82 - see here.

Step 2.1 With power off, ground the I/O CH RDY line.

How you do the grounding is up to you, as long as it is reliable.  What I use is shown at here.

This grounding needs to remain in place for all of the following steps.



Procedure - Step 3 of 13 - Verify 8088's READY and RESET pins are LOW

If you have grounded I/O CH RDY correctly/properly, then we expect the READY pin of the 8088 CPU to be LOW.

And since you will be making a measurement at the 8088 CPU, we might as well get you to measure the CPU's RESET pin as well.

Step 3.1 Power on the motherboard.
Step 3.2 Verify that the READY pin, pin 22, of the 8088 CPU is LOW - see here.
If not LOW, use the diagram at here to see if you can work out why it is not LOW.
Step 3.3 Verify that the RESET pin, pin 21, of the 8088 CPU is LOW - see here.
If not LOW, use the diagram at here to see if you can work out why it is not LOW.

Note: On pin 22, if your logic probe is showing activity (the pulse LED is flashing) or your oscilloscope is showing activity, then something is wrong.



Procedure - Step 4 of 13 - Do we observe the expected address on the address bus?

There is no point in doing this step if the previous step did not show the expected result.

Here, we are seeing if the address of FFFF0 hex made it from the 8088 CPU to the address bus.
A convenient place to examine the address bus is on an ISA expansion slot.

A reference diagram for the IBM 5150 is at here and here.

Step 4.1 On the address pins (A19 to A0) of an ISA slot, expect to measure the address of FFFF0 hex (1111 1111 1111 1111 0000 binary).  See here.

Note: If you do not measure FFFF0, it may seem logical to you to go visit the source, the 8088 CPU, and see whether or not FFFF0 is on the address pins of the 8088.  For the 8088, that is not a valid thing to do.  If required, more information is in note 1 below.



Procedure - Step 5 of 13 - Do we observe the expected address on the IBM BIOS ROM chip?

There is no point in doing this step if the previous step did not show the expected result.

Here, we are seeing if the relevant part (the lowest 13 bits) of the FFFF0 address is getting from the address bus to the IBM BIOS ROM chip (via the external address bus).
A reference diagram for the IBM 5150 is at here.

Step 5.1 On the address pins (A12 to A0) of ROM chip U33, expect to measure the address of 1FF0 hex (1 1111 1111 0000 binary).  See here.



Procedure - Step 6 of 13 - Do we observe that the IBM BIOS ROM chip is enabled?

There is no point in doing this step if the previous step did not show the expected result.

At this time, certain motherboard circuitry is expected to be enabling the IBM BIOS ROM.
A reference diagram for the IBM 5150 is at here.

Step 6.1 Verify that pin 20 (/CE) of ROM chip U33 is LOW.  See here.



Procedure - Step 7 of 13 - Do we observe the expected data out of the IBM BIOS ROM chip?

There is no point in doing this step if the previous step did not show the expected result.

We have verified that the expected address is reaching the IBM BIOS ROM chip, and that the IBM BIOS ROM chip is enabled (i.e. ROM will output the data it has at the presented adddress).
Therefore, we now expect to see the data of EA coming out of the IBM BIOS ROM chip, onto the external data bus.

A reference diagram for the IBM 5150 is at here.

Step 7.1 On the data pins (D7 to D0) (Q7 to Q0) of ROM chip U33, expect to measure the data of EA hex (1110 1010 binary).  See here.

Note: If you see the data of EA coming out of the IBM BIOS ROM chip, that does not mean that the chip is 100% good.  EA is just one byte of many in the ROM.  There could be corrupted bytes somewhere in the ROM.  Maybe the ROM has an addressing problem.  The IBM BIOS ROM chip would still be under suspicion.



Procedure - Step 8 of 13 - Do we observe the expected data on the data bus?

There is no point in doing this step if the previous step did not show the expected result.

Here, we are seeing if the data (EA) gets from the external data bus to the data bus.
A convenient place to examine the data bus is on an ISA expansion slot.

A reference diagram for the IBM 5150 is at here.

Step 8.1 On the data pins (D7 to D0) of an ISA slot, expect to measure the data of EA hex (1110 1010 binary).  See here.



Procedure - Step 9 of 13 - Do we observe the expected data at the 8088 CPU?

There is no point in doing this step if the previous step did not show the expected result.

Here, we are seeing if the data (EA) gets from the data bus to the 8088 CPU.
A reference diagram for the IBM 5150 is at here.

Step 9.1 On the AD pins (AD7 to AD0) of the 8088 CPU, expect to measure the data of EA hex (1110 1010 binary).  See here.



Procedure - Step 10 of 13 - ADVANCED - Exercising the data buses - All zeroes

There is no point in doing this step if the previous step did not show the expected result.

The byte of EA does not 'exercise' the data buses.  This step will verify that a bit (or bits) on those buses is not stuck HIGH in the data direction of ROM --> CPU.

Exclusion: Data direction of CPU --> other things
Exclusion: The IBM BIOS ROM - maybe a bit stuck HIGH in that, a bit that does not impact on the data of EA hex.
Exclusion: Addressing - this is data only.

Step 10.1 Power off.
Step 10.2 Replace the IBM BIOS ROM with a suitable EPROM that contains 00 hex at every address.
( Or if you really want to, modify the IBM BIOS ROM code so that 00 is in place of the EA at the reset vector. )

See here for EPROM's and adapters suitable for the IBM 5150.

Step 10.3 Power on.
Step 10.4 On the AD pins (AD7 to AD0) of the 8088 CPU, expect to measure the data of 00 hex (0000 0000 binary).

Note: Taking the shortcut of measuring this on the ISA slot is only doing half the job.  The problem could be between the ISA slot and the CPU.



Procedure - Step 11 of 13 - ADVANCED - Exercising the data buses - All ones

There is no point in doing this step if the previous step did not show the expected result.

The byte of EA does not 'exercise' the data buses.  This step will verify that a bit (or bits) on those buses is not stuck LOW in the data direction of ROM --> CPU.

Exclusion: Data direction of CPU --> other things
Exclusion: The IBM BIOS ROM - maybe a bit stuck LOW in that, a bit that does not impact on the data of EA hex.
Exclusion: Addressing - this is data only.

Step 11.1 Power off.
Step 11.2 Replace the IBM BIOS ROM with a suitable EPROM that contains FF hex at every address.
( Or if you really want to, modify the IBM BIOS ROM code so that FF is in place of the EA at the reset vector. )

See here for EPROM's and adapters suitable for the IBM 5150.

Step 11.3 Power on.
Step 11.4 On the AD pins (AD7 to AD0) of the 8088 CPU, expect to measure the data of FF hex (1111 1111 binary).

Note: Taking the shortcut of measuring this on the ISA slot is only doing half the job.  The problem could be between the ISA slot and the CPU.



Procedure - Step 12 of 13 - ADVANCED - Exercising the data buses - Shorted bits - Part 1 of 2

There is no point in doing this step if the previous step did not show the expected result.

The byte of EA does not 'exercise' the data buses.  This step is one of two (steps 12 and 13) that will verify that adjacent bits on those buses are not shorted, in the data direction of ROM --> CPU.

Exclusion: Data direction of CPU --> other things
Exclusion: The IBM BIOS ROM - maybe there are bits shorted in that.
Exclusion: Addressing - this is data only.

Step 12.1 Power off.
Step 12.2 Replace the IBM BIOS ROM with a suitable EPROM that contains 55 hex at every address.
( Or if you really want to, modify the IBM BIOS ROM code so that 55 is in place of the EA at the reset vector. )

See here for EPROM's and adapters suitable for the IBM 5150.

Step 12.3 Power on.
Step 12.4 On the AD pins (AD7 to AD0) of the 8088 CPU, expect to measure the data of 55 hex (01010101 binary).

Note: Taking the shortcut of measuring this on the ISA slot is only doing half the job.  The problem could be between the ISA slot and the CPU.



Procedure - Step 13 of 13 - ADVANCED - Exercising the data buses - Shorted bits - Part 2 of 2

There is no point in doing this step if the previous step did not show the expected result.

The byte of EA does not 'exercise' the data buses.  This step is one of two (steps 12 and 13) that will verify that adjacent bits on those buses are not shorted, in the data direction of ROM --> CPU.

Exclusion: Data direction of CPU --> other things
Exclusion: The IBM BIOS ROM - maybe there are bits shorted in that.
Exclusion: Addressing - this is data only.

Step 13.1 Power off.
Step 13.2 Replace the IBM BIOS ROM with a suitable EPROM that contains AA hex at every address.
( Or if you really want to, modify the IBM BIOS ROM code so that AA is in place of the EA at the reset vector. )

See here for EPROM's and adapters suitable for the IBM 5150.

Step 13.3 Power on.
Step 13.4 On the AD pins (AD7 to AD0) of the 8088 CPU, expect to measure the data of AA hex (10101010 binary).

Note: Taking the shortcut of measuring this on the ISA slot is only doing half the job.  The problem could be between the ISA slot and the CPU.



END OF PROCEDURE




Note 1    • The pins on the 8088 that carry A7 to A0 are shared pins.  Sometimes the 8088 outputs A7 to A0 of an address on them, and sometimes the pins are the 8088's data pins.
• The pins on the 8088 that carry A19 to A16 are shared pins.  Sometimes the 8088 outputs A19 to A16 of an address on them, and sometimes the pins contain status information.
• When the aforementioned pins were acting as address pins, certain circuitry instructed chips U7, U9 and U10 to latch (capture) the complete address - see here.