Note:  This project requires access to an Eprom burner to program the code definitions.  The program that creates the eprom image requires Microsoft Windows 95 or better.  The schematics for this project can be found in the zip file as "Schemos.gif".

This project decodes the port 80 diagnostic port common to nearly all PCs and displays the last component tested, in english, should the computer hang on power up self test (POST).  This information can be used by technicians to diagnose and repair a faulty motherboard.  As is, this project allows you to select one of four BIOSes from the data burned into an EPROM.  A Visual Basic 6 Program, Port80.exe is provided to allow you to create an EPROM image for the 27512 based on what the four available POST code definition sets you want from a list of 74 supported BIOSes.  In addition this program allows you to use your own BIOs definitions that you can create using any text editor.

There are two circuits in the project.  The first circuit is the LCD driver/Eprom display data source with a 14 pin female connector for connecting to a 2 x 40 character LCD display (with a Hitachi compatible controller) and a 16 pin male IDC header for connecting the display to a Unisys compatible motherboard with a port 80 diagnostic port connector already on it.  Many server motherboards based on the Intel Chipsets have this port available, and their motherboards are expensive enough to warrant repairing them rather than replacing them when they go faulty.  This port is a 16 pin header (sometimes it is not stuffed with stake pins).  The display circuit is attached to this port via an IDC cable with female 16 pin IDC connectors at both ends.  The Unisys layout of this port prevents the board and LCD driver circuit from becoming damaged should the 16 pin connectors be inserted incorrectly.  If all the boards you intend to work on already have this port on it, there is no need to build the second circuit.

If you do not have a port 80 connector on your mother board, you will need to build the second circuit as well.  This circuit decodes the address lines of the ISA bus and will latch the data lines whenever there is a write to the Port 80 Diagnostic port.  The first circuit plugs into the second circuit much the same way as it would if the port 80 header was available on the motherboard.

Bill of materials for circuit #1:

One     Prototype Circuit Board  Approx.1.5" x 3.5" (Part of Jameco PCB1)
One	Basic Stamp 1 for driving the LCD display   (Jameco Prod #BS1-IC)
One     2 Line by 40 Character LCD display          (Jameco Prod #DMC50037N)
One 	74C373 or 74C374 Transparent latch          (Jameco Prod #74C374)
One     74C157 or 74C257 Data Selector
One     27C512 EPROM (See note below)               (Jameco Prod #27C512-25)
One     CD4040 or 74C4040 12 Bit Ripple counter
One     10K to 100K Pot (for LCD contrast).
Six     10K resistors.
One	14 Pin IDC female header for the LCD display
One	16 Pin IDC male header for connecting to the port 80 connector.
One	16 Pin IDC Female to 16 Pin IDC Female cable

Notes:  I prefer using CMOS parts for simple slow circuits, but there is no reason you can't use LS or S parts instead.  Either a '373 or '374 can be used with pin for pin compatibility in a slow circuit like this.  The only difference between a '157 and a '257 is that the '257 offers tri-state outputs.  This is defeated in the ciruit so either chip can be used.  If you want, you can use a smaller EPROM such as a 27256 or a 27128.  Just omit the extra switch(es) and select the option in the included VB6 program, Port80.exe, for generating the proper EPROM image.  The pinout may also change slightly if you go with a smaller EPROM. 

Bill of materials for circuit #2:

One     ISA Protyping board                         (Jameco Prod #JE417)
One	74C21 Dual four input AND gate.
Two	CD4048 or CD4078 8-input NOR gates.         (Jameco Prod #CD4078)
One	4.7K pull-up.  Optional- for making the port Unisys compatble.
One	16 Pin IDC male header.

Notes:  The CD4048 was used because I happened to have some around, but they are no longer in production.  The CD4078 is a drop in replacement with additional functionality (also has an "OR" output).  The 74C21 can be swapped with any logic that performs a three input AND fucntion.  The pinouts will be different, of course.

Circuit and BS1 Stamp operation:

The Port 80 code itself selects a bank of 64 bytes directly on the Eprom address lines.  The switches select which of the four 16 Kbyte banks to use.  The Basic Stamp 1 program advances the 7 bit address counter connected to the EPROM to cycle through 64 bytes of read only memory.  The Stamp gets the data from the Eprom one nibble at a time via the 74C157 data selector.  It then displays the character on the LCD display, advances the counter to the next location in the EPROM and loops until all 64 characters are displayed.  Clearing the display will automatically clear the counter.  The program for the Basic Stamp is found in the zip file as "PORT80.BAS".

Port80.exe (Visual Basic 6 program):

This program requires the Visual Basic 6 runtime package to be installed before it can be used.  At the time of this writing it was available from Microsoft at the following URL:

ftp://ftp.microsoft.com/Softlib/MSLFILES/VBRUN60.EXE

Port80.exe can be run directly from the zip file by double clicking it from Winzip. If you want to add your own custom codes, unzip it to a directory and place a text file "postdata.txt" in the same directory before running Port80.exe.  In order to work with Port80.exe, this file should:

1) Use no blank lines.
2) Start with a description of the first BIOS.  The third character should NOT be a space in this description.
3) Following this, each on its own line, place each 2 digit post code, in hexadecimal, followed by at least one space and the description of the code ie; make sure the third character IS a space for each post code description.
4) Once all Post codes and descriptions for that BIOs are entered, Place the next BIOS description on the next line, insuring that the third character is not a space.  Repeat steps 3 and 4 until all BIOs descriptions and Post code descriptions are entered.
5) You will need to be sure your postdata.txt file is in the same directory before running Port80.exe for it to see the file.  You will also need to select the "postdat.txt" option from the data source frame after running the program.

An example postdata.txt file is included in the zip file.  

Tip:  If you know what chip numbers are being utilized by each power on test on certain board, you can place these component locations in the description instead.  In this way, you get a handy list of the chips that could possibly be causing the problem on a one particular motherboard.

Tip:  You do not need to enter the Post codes in any particular order.  As long as they are placed under the BIOS definition, they will work.

Tip:  Be careful when entering the hexadecimal digits in the Post Code definitions.  If one of the characters is not 0-9 or A-F, that digit will be determined by the program as a zero.

Tip:  Make sure your post codes and definitions are 64 character or less.  Any extra characters get truncated and will not get displayed.  However, all characters get displayed in a window when you choose to List the Post Codes.

Tip:  Save the image in Binary mode if you can.  If your Eprom burner only supports Hex file formats, select Intel HEX format instead.

Tip:  Select a BIOs, using the combo list boxes, for each of the four banks if using a 27x512.  Select a Bios for the first two if using a 27x256 and only the first one for a 27x128.

Tip:  It takes a while to build the ROM image.  A red line will appear just under the title bar on the form.  When this line gets to the rightmost edge, it's finsihed.

Credits:

Most of this information was obtained through the following website:

Eric's BIOS Post Codes:   http://www.webenet.net/~ntuser/

Thanks to Eric for making this valuable information available.

If you have questions or do not have access to an Eprom burner, but would still like to build this project, here is my email address:

nernie@uswest.net

