Parent


Ruud's diagnostic ROM
fitted to PC and XT clones



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 ?

Somewhere on your clone motherboard is a BIOS ROM.  You remove that BIOS ROM then fit the Ruud's diagnostic ROM in its place.


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.


Requirements

For version 4.7 (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
 Comment
  Option #1:  MDA video card Yes Yes Yes Yes Yes  
  Option #2:  CGA video card Yes Yes Yes Yes Yes  
  Option #3:  4KB RAM at address A0000 No Yes Yes Yes Yes  
  Option #4:  4KB RAM at address B0000 No 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  The diagnostic will think that you have a CGA video card.
  Option #6:  None of the above No Limited Limited Limited Yes  


In the table above, 'Speaker beep' is the short-long-short pattern of beeps 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.


Limitation: Clone compatibility

• No 'clone' of the IBM PC or IBM XT is a 100% clone.  There are varying levels of 'cloneness'.  In some cases, the variation is great enough to cause one or more tests in this diagnostic to fail.  Some known compatibility/compatibility is shown at here.

• If your XT clone has 'turbo' functionality, that may be a problem for this diagnostic, and so turn off 'turbo' mode (so that the motherboard runs at 4.77 Mhz).  See note 6 below.


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

An early thing that Ruud's diagnostic ROM does, is send 3 beeps to the speaker, in the pattern of: short-long-short.  That is seen in the step breakdown at here.


Important information

The following applies to version  4.7  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. All or some of the 'Check ROM at Fx000' tests may fail because there are no ROM's at the tested addresses.


Known bugs

Only those shown in the table at here.


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 motherboard's BIOS ROM.  The variation between clones is so much, that I cannot instruct you as to which chip on the motherboard is the BIOS ROM, nor what EPROM type to use for the image.

What I can say is, most of the 'cheap Tiawonese' motherboards, based on an ERSO design, use a single 2764 (or 27C64) EPROM.  I have some of those, and the W27E257 EEPROM option shown below, works for me.

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


Type of EPROM Size Image download      Comment
2764/27C64 EPROM 8 KB  Download  
27128/27C128 EPROM 16 KB  Download  
27256/27C256 EPROM 32 KB  Download  See note 2 below.
W27E257 EEPROM 32 KB  Download  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.7 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.
   
Note 6 On XT clone computers that have turbo functionality:
• Ruud's Diagnostic ROM will attempt to turn off turbo mode, but it is an attempt only.
• Determining 4.77 MHz operation (non-turbo) can be done by using an oscilloscope to verify a 4.77 MHz clock on the clock pin of the 8088/V20 CPU.