Parent


Ruud's diagnostic ROM
fitted to the 16KB-64KB version of IBM 5150 motherboard



5150_label_16kb_64kb_cpu.jpg


ROM hosted diagnostics versus floppy hosted diagnostics

Ruud's diagnostic ROM, obviously, is a ROM hosted diagnostic.

ROM HOSTED - Instead of the diagostics being on a floppy disk, or on a hard drive, they are on a ROM chip.  You pull out the motherboard BIOS chip, and substitute the diagnostic ROM.
MOTHERBOARD DIAGNOSTICS - These are mostly, motherboard diagnostics - tests of the motherboard.

Floppy hosted diagnostics are expected to be better (a floppy fits more diagnostic code than a ROM), and so ROM hosted diagnostics are good for the situation where the motherboard problem prevents a diagnostics floppy from being booted from.


Where does it fit ?

Remove the IBM BIOS ROM in socket U33, then fit the Ruud's diagnostic ROM in its place.  Depending on the EPROM type you use (see below), you may or may not require a suitable adapter to go between the EPROM and socket U33.


Additional

An example MDA/CGA on-screen output is shown at here.

Ruud's diagnostic ROM was created by Ruud Baltissen, and is based on the Supersoft/Landmark diagnostic ROM, but unlike that ROM, Ruud's diagnostic ROM will stop RAM testing at the first RAM error.  That means that if your computer has RAM problems covering multiple addresses, that you will not see a confusing display (as you will with the Supersoft/Landmark diagnostic ROM).  The concept is that you fix the displayed RAM problem (which, BTW, may not be caused by a RAM chip), then re-run Ruud's diagnostic ROM to see if there is another RAM problem, and so on.

Note that unlike the IBM 5150 motherboard BIOS, Ruud's diagnostic ROM does not inspect the motherboard's RAM related switches (in SW1 and SW2) to determine how much RAM (specifically conventional memory) is fitted.  Instead, it determines that RAM size by doing write-then-read-back of test bytes at particular RAM addresses.


Requirements

For version 5.0 (or later) of Ruud's Diagnostic ROM, the table below shows the 6 options that are available to you.

  On-screen
output
Checkpoints
to LPT ports
Checkpoints
to COM1
Checkpoints
to 80h
Speaker
beep
IBM 5150
relay click
 Comment
  Option #1:  MDA video card Yes Yes Yes Yes Yes Yes  
  Option #2:  CGA video card Yes Yes Yes Yes Yes Yes  
  Option #3:  4KB RAM at address A0000 No Yes Yes Yes Yes Yes  
  Option #4:  4KB RAM at address B0000 No Yes Yes Yes Yes Yes  The diagnostic will think that you have an MDA video card.
  Option #5:  4KB RAM at address B8000 No Yes Yes Yes Yes Yes  The diagnostic will think that you have a CGA video card.
  Option #6:  None of the above No Limited Limited Limited Yes Yes  


In the table above, 'Speaker beep' is the short-long-short pattern of beeps that the diagnostic does quite early, and 'IBM 5150 relay click' is a click of the IBM 5150 motherboard's relay that the diagnostic does quite early.

Before you read any further, read note 5 at the bottom of this web page.

Per the table above, if you want an output on-screen, like what is shown at here, then you need an MDA or CGA video card, and matching display monitor.

The next best option is to put 4 KB of RAM at address A0000 or B0000 or B8000.  With that, all tests are done, and the checkpoints are sent to the LPT ports, the COM1 port, and port 80h.  For detail on what "checkpoints" are, see the 'Checkpoint codes' section below.  How you get 4KB of RAM at one of the three addresses is up to you.

You may be lucky and have an EGA card that puts RAM at A0000 even though the card is uninitialised.  My fully-populated IBM EGA card and my AST-3G card are not in that category.  See here for some examples of how to get 4KB of RAM at A0000.

If you do not have an MDA card, nor CGA card, nor 4 KB of RAM at xxxxx, then things are quite limited.  Only the initial tests are done.  You won't even be able to see if there is bad RAM in bank 0.


Limitation: Testing scope

• It is not possible for software to fully test hardware.  Some of the checks done by this diagnostic (and others for that matter) barely test the functionalty of the check's target.  Keep that in mind.  The checks being done need to be considered as confidence tests only.

• When sizing RAM, and then testing it, anything above 640 KB is not looked for.


Test descriptions

Click here.


Checkpoint codes

At various stages of execution, Ruud's diagnostic ROM sends 'checkpoint' codes (bytes) to I/O ports 80h, 378h, 278h, 3BCh, and 3F8h.  The codes are listed at here, and in the diagnostic's source code (included in the image download below).

I/O ports 378h and 278h and 3BCh are parallel (printer) (LPT) ports.  If you have one of those ports, then the device shown at here can be used to view bytes sent to the port.  You can use a parallel printer if it has a 'hex' mode - example at here.

I/O port 3F8h is typically the first serial port, usually referred to as COM1.  More information about checkpoints going to COM1 is at here.

ISA POST cards show bytes sent to I/O port 80h, however, rarely does that work on an IBM 5150 or 5160.  Do not be surprised if it does not work.  More information about that is at here.


Speaker and relay

An early thing that Ruud's diagnostic ROM does, is:
• Send 3 beeps to the speaker, in the pattern of: short-long-short; and
• Single-click the 5150 motherboard's relay.

That is seen in the step breakdown at here.


Important information

The following applies to version  5.0  of the diagnostic.

1. The 'Hot NMI' test is known to fail if either:
   - Math coprocessor (8087 chip) is absent and you have switch 2 in switch block SW1 in the wrong position for that (off).
   - Math coprocessor (8087 chip) is present and is faulty in a particular way.
   
2. If there is a faulty RAM chip for parity, it will not be shown until all faulty RAM chip/s for data (in the same bank) have been rectified.
   
3. The 'Check ROM at F4000' test is expected to fail, because there is nothing in the motherboard's U28 socket.  However, on some IBM 5150 motherboards, the test might pass.  You may even see it pass sometimes, and fail at other times.


Known bugs

The following applies to version  5.0  of the diagnostic.

No known bugs, when fitted to the IBM 5150.

( Some for clones are shown in the table at here. )


Faulty RAM bank 0 ?

If RAM bank 0 is faulty, and the IBM BIOS ROM is fitted, you will appear to have an 'appears dead' motherboard.  Although, that symptom has many possible causes.

Use of Ruud's diagnostic ROM will, in most cases, reveal a faulty RAM chip in bank 0.  (See the yellow highlighted lines below.)


Observed RAM test behaviour on my 16KB-64KB motherboard

The following table applies to version  5.0  of the diagnostic.

Condition      Observed behaviour      Comment
All 4 banks are good See the partial screen shot at here.  4 banks of 16 KB = 64 KB
 
Only bank 0 is populated, and all chips in it are good See the partial screen shot at here.  1 bank of 16 KB = 16 KB
 
A single chip has failed, in bank 0.
Failure affects the first 2K of addresses.
See the partial screen shot at here.  • Includes a complete failure of chip (i.e. affecting all addresses in chip).  See note 1 below.
 

A single chip has failed, in bank 0.
Failure is after the first 2K of addresses.


The 'Testing RAM - Data' test fails.  Under that is:
• "Failure at address: xx KB" is displayed, where 'xx' is a figure between 2 KB and 15 KB.
• The bad bit is displayed (example at here).
 • 16KB-64KB motherboard.
 

A single chip has failed, in bank 1


The 'Testing RAM - Data' test fails.  Under that is:
• "Failure at address: xx KB" is displayed, where 'xx' is a figure between 16 KB and 31 KB.
• The bad bit is displayed (example at here).
 • 16KB-64KB motherboard.
 • A figure between 17 KB and 31 KB is due to note 4.

A single chip has failed, in bank 2


The 'Testing RAM - Data' test fails.  Under that is:
• "Failure at address: xx KB" is displayed, where 'xx' is a figure between 32 KB and 47 KB.
• The bad bit is displayed (example at here).
 • 16KB-64KB motherboard.
 • A figure between 33 KB and 47 KB is due to note 4.

A single chip has failed, in bank 3


The 'Testing RAM - Data' test fails.  Under that is:
• "Failure at address: xx KB" is displayed, where 'xx' is a figure between 48 KB and 63 KB.
• The bad bit is displayed (example at here).
 • 16KB-64KB motherboard.
 • A figure between 49 KB and 63 KB is due to note 4.



Images (content) to be programmed into EPROM

To create a Ruud's Diagnostic ROM, you program/write ('burn') an image into a suitable EPROM.  An EPROM programmer is required to do that.  That EPROM replaces the BIOS ROM in IC socket U33.

As shown in the table below, there are various EPROM options for IC socket U33.  In some cases, an adapter is required between the EPROM and the IC socket.

There are some people/companies shown at here who can supply EPROM's, programmed/written ('burned') to your requirement.


Type of EPROM for IBM 5150 Size Image download Photo Comment
MCM68766 EPROM 8 KB  Download    
2564 EPROM 8 KB  Download  Photo  2564, not 2764
With adapter, 2764/27C64 EPROM 8 KB  Download    Click here for adapter.
With adapter, 27128/27C128 EPROM 16 KB  Download    Click here for adapter.   See note 2 below.
With adapter, 27256/27C256 EPROM 32 KB  Download  Photo  Click here for adapter.   See note 2 below.
With adapter, W27E257 EEPROM 32 KB  Download    Click here for adapter.   See notes 2 and 3 below.





Note 1 It is possible for a RAM chip to fail in such a way that affects only some of the chip's addresses.
Imagine such a chip in bank 0, one that fails at say the 5K address.
That would result in the diagnostics 'Check first 2 KB of RAM' test passing.
But the diagnostic will report an error later when testing the remainder of RAM.
   
Note 2 Ruud's Diagnostic ROM for the PC and XT is actually only 8 KB in size.
To create a 16 KB sized image, the 8 KB image was simply doubled.
To create a 32 KB sized image, the 8 KB image was simply quadrupled.
A related diagram is at here.
   
Note 3 Regarding the programming/writing of an image into the W27E257:
Even though the W27E257 is an EEPROM, rather than a 'traditional' EPROM, you will still need an EPROM programmer (or other) to program/write to the W27E257.
That is because the IBM 5150 motherboard does not support programming/writing to EEPROM's in its sockets.
   
Note 4 It is possible for a RAM chip to fail in such a way that not all of its addresses are affected by the failure.
   
Note 5 For most of its work, Ruud's Diagnostic ROM (RDR) needs some RAM for variables and for the stack.
The motherboard RAM cannot be trusted (a common use of RDR being because there is bad RAM in bank 0).
For that reason, RDR uses either:
- If an MDA video card is present, the unused video RAM on that; or
- If an CGA video card is present, the unused video RAM on that; or
- If 4 KB of RAM at address A0000, some of that RAM. (Version 4.3 or later of RDR required.)
- If 4 KB of RAM at address B0000, some of that RAM.
- If 4 KB of RAM at address B8000, some of that RAM.