• Please review our updated Terms and Rules here

How to read parallel-port POST diagnostic codes?

Sometimes I should have a closer look to my harddisk, to what I have collected there...

OMG that's fantastic! Where did you find that info? That's essentially what I determined disassembling the BIOS, but in a small way I think I'm glad I didn't have this before, since disassembling the BIOS was kind-of fun.
 
I just look (with the file name) where I found that POST code list, no idea yet, but I found this, it's for another machine:

http://www.techspot.com/community/topics/the-complete-bios-beep-guide.95391/

OLIVETTI Beep Codes:



Olivetti 1076/AT&T BIOS Post Codes:
PASS FAIL DESCRIPTION
41 7F CPU flag and register test
42 7E Check and verify CMOS shutdown code
43 7D BIOS ROM checksum test
44 7C Test the 8253 timer
45 7B Start memory refresh
46 7A Test the 8041 keyboard controller
47 79 Test the first 8KB of RAM
48 78 Test protected mode operation
49 77 Test CMOS RAM shutdown byte
4A 76 Test protected mod operation
4B 75 Test RAM from 8KB to 640KB
4C 74 Test all RAM above 1MB
4D 73 Test NMI
4E 72 Test RAM parity system
50 71 Test 8259 PIC 1
51 6F test 8259 PIC 2
52 6E Test DMA page register
53 6D Test 8237 DMA controller 1
54 6C Test 8237 DMA controller 2
55 6B Test PIO port 61h
56 6A Test the keyboard controller
57 69 Test the CMOS clock/calendar IC
59 68 Test the CPU protected mode
5A 66 Test CMOS RAM battery
5B 65 Test CMOS RAM
5C 64 Verify CMOS RAM checksum
5D 63 Test parallel port configuration
5E 62 Test serial port configuration
5F 61 Test memory configuration below 640KB
60 60 Test memory configuration above 1MB
61 5F Detect and test math coprocessor
62 5E Test configuration of game port adapter
62 5D Test key lock switch
63 5D Test hard drive configuration
64 5C Configure floppy drives
66 5B Test option ROM's
- - Call interrupt 19 boot loader

Return to Top

Olivetti M20 BIOS Post Codes:
Triangle Test CPU registers and instructions
Triangle Test system RAM
4 vertical lines Test CPU call and trap instructions
Diamond Initialize screen and printer drivers
EC0 8255 parallel interface IC test failed
EC1 6845 CRT controller IC test failed
EC2 1797 floppy disk controller chip failed
EC3 8253 timer IC failed
EC4 8251 keyboard interface failed
EC5 8251 keyboard test failed
EC6 8259 PIC IC test failed
EK0 Keyboard did not respond
Ek1 Keyboard responds, but self test failed
ED1 Disk drive 1 test failed
ED0 Disk drive 0 test failed
E10 Non-vectored interrupt error
E11 Vectored interrupt error

Return to Top

Olivetti M24/AT&T BIOS Post Codes:
40 CPU flags and register test failed
41 BIOS ROM checksum test failed
42 Disable 8253 timer channel 1
43 8237 DMA controller test failed
44 8259 PIC test failed
45 Install the real interrupt vectors
48 Send beep and initialize all basic hardware

Return to Top

Olivetti PS/2 BIOS Post Codes:
01 Test CPU
02 Check CMOS shutdown byte
03 Initialize the PIC
04 Test refresh
05 Test CMOS/RTC periodic interrupt
06 Test timer ratio
07 Test first 64KB of RAM
08 Test 8042 keyboard controller
09 Test NMI
0A Test 8254 PIT
0B Test port 94h
0C Test port 103h
0D Test port 102h
0E Test port 96h
0F Test port 107h
10 Blank the display
11 Check the keyboard
12 Test CMOS RAM battery
13 Verify CMOS RAM checksum
14 Verify extended CMOS RAM checksum
15 Initialize system board and adapter
16 Initialize and test RAM
17 Test protected mode registers
18 Test CMOS RAM shutdown byte
19 Test CMOS protected mode
1A Initialize video adapter ROM scan
1B Test BIOS ROM checksum
1C Test PIC #1
1D Test PIC #2
1E Initialize interrupt vectors
1F Test CMOS RAM
20 Test extended CMOS RAM
21 Test CMOS real-time clock
22 Test clock calendar
23 Dummy checkpoint
24 Test watchdog timer
25 Test 64KB to 640KB RAM
26 Configure lower 640KB RAM
27 Test extended memory
28 Initialize extended BIOS data segment and log POST error
29 Configure memory above 1MB
2A Dummy checkpoint
2B Test RAM parity
2C Test DMA page registers
2D Test DMA controller registers
2E Test DMA transfer-count register
2F Initialize DMA controller
30 Test PIO 61
31 Test the keyboard
32 Initialize keyboard typematic rate and delay
33 Test auxiliary device
34 Test advanced protected mode
35 Configure parallel ports
36 Configure 8250 serial ports
37 Test and configure math co-processor
38 Test and configure game-port adapter
39 Configure and initialize hard disk
3A Floppy-disk configuration
3B Initialize ROM drivers
3C Display total memory and hard drives
3D Final initialization
3E Detect and initialize parallel ports
3F Initialize hard drive and controller
40 Initialize math co-processor
42 Initialize adapter ROM scan
CC Unexpected processor excerption occurred
DD Save DDNIL status
EE NMI handler shutdown
FF Call interrupt 19 boot loader

1076 is not M24 (XP1050), maybe M28?
 
If it helps with this project, in the stuff I recently picked up is a 6300 Hardware Reference with schematics.

I think I read in another thread that someone theorized the battery leakage may destroy a trace in one of the inner PCB layers.

If so, maybe the schematics would help to see where the DMA controller connects?

There's a LOT there, but I'm happy to scan or photo a chunk of it if someone tells me what to look for.

Also, my 6300 has an AM9517A DMA controller, not the Intel described in the documentation.
 
- Things like the Fluke 9010A exist (do those kinds of "emulate a CPU" boxes have a standard name? It's like an ICE, but not like an ICE...?)
- A logic analyzer could help me if I understood how to use them (I am researching this)
- I don't know how to work with EEPROMs (there are two of them, I'm guessing one is the even bytes and the other is the odd bytes?), but I do know x86 assembly.

A Fluke 9010A is "MICRO-SYSTEM TROUBLESHOOTER" according to what is says on the front of the unit. Maybe "Troubleshooter" would be a generic term for these things that are not full-blow In-Circuit Emulators, although I don't know of any other units that commonly found besides the Fluke.

A 16-bit system will generally use two (or any even number of) 8-bit EPROMs for 16-bit wide program storage, where one EPROM is connected to data lines D0-D7 and the other EPROM is connected to data lines D8-D15. So yes, an even EPROM and an odd EPROM. You would assemble your code into a binary file as usual, then either use a separate utility to spit the binary into even and odd halves before programming the EPROMs, or your device programmer might have the ability to load the complete binary and program a first EPROM with the even half and program the second EPROM with the odd half.

If you are programming standard UV EPROMs, in addition to a device programmer you also need a UV lamp to erase the EPROMs to the blank state before you program them. Or if the system uses common 27C256 32Kx8 EPROMs you should be able to use W27E257 EEPROMs which are electrically erasable. You can get W27E257 on eBay.


Too bad you're not local. I could set you up with a somewhat vintage but still very useful HP 16500B logic analyzer. These days the shipping cost on those can exceed their market value. You're a smart enough guy you could figure out how to do something useful with it. If the BIOS POST halts (executes an F4h HLT instruction) when it detects an error the first thing you would probably want to know is what code was it executing immediately prior to the HLT. The most simple setup would be to connect the logic analyzer to the EPROM address and data lines and uses the output enable as the state clock. Then it should record the address and data for every BIOS code fetch. (You wouldn't really need to record the data as that would already be known for every address). When the system halts you could scroll back through the state history to see the code fetch addresses prior to when it halted.

BIOS code fetching activity due to the prefetch input queue might complicate following instruction execution slightly. There is an HP 10305B (64653A) 8086/8088 pre-processor probe interface for HP logic analyzers that plugs into the CPU socket. The pre-processor probe has logic in it which is able to filter out prefetched instructions that are not actually executed. Using one of those would make things a lot easier to follow.
 
Last edited:
I want to really thank everyone for the help and beginner's advice, I really appreciate it. I consider myself an expert x86 software guy -- hardware is a completely new domain for me and I'm having to do tons of reading and video-watching every time I come up across something I don't understand :confused:

Thanks to the information 1ST1 found, I missed something in my BIOS analysis: If it fails within the POST section (in my case, checkpoint 43h) but is not hung, it XOR's the previously-sent result and sends that back out. I confirmed that behavior by looking at the codes sent out on my working 6300, and sure enough I see the complement of the last checkpoint code sent out after a successful POST. Based on that information, I've deduced roughly where the failure is occurring: After the DMA controller test has started, and before the 64K RAM test (both of these are part of Checkpoint 43h). My reasoning: If the POST gets to the part where the 64K RAM test fails, it does the XOR of the code, outputs it, then halts. Because I'm not seeing that, I believe the 8237 DMA controller itself is faulty (or, a borked trace on the motherboard exhibiting as such) because the code is not getting to the RAM test which would not hang.

While I do not (yet?) have the skill and patience to trace motherboard traces, I think I can give replacing the 8237 a shot. I've ordered two 8237A-4's and a few 40-pin DIP sockets, and will practice my soldering/desoldering on smaller projects before attempting it on this board.

If it helps with this project, in the stuff I recently picked up is a 6300 Hardware Reference with schematics.

Thanks, but I've got scanned copies of that already.

Also, my 6300 has an AM9517A DMA controller, not the Intel described in the documentation.

That appears to be an AMD compatible part. In the 6300 I'm trying to repair, I have a Fujitsu 8086 that I've never seen before (has a neat groove as part of its styling).

If the BIOS POST halts (executes an F4h HLT instruction) when it detects an error the first thing you would probably want to know is what code was it executing immediately prior to the HLT. The most simple setup would be to connect the logic analyzer to the EPROM address and data lines and uses the output enable as the state clock. Then it should record the address and data for every BIOS code fetch. (You wouldn't really need to record the data as that would already be known for every address). When the system halts you could scroll back through the state history to see the code fetch addresses prior to when it halted.

I appreciate the offer; maybe if I visit Seattle I'll take you up on it :) This would probably be one of the lesser painful ways to trace it, but thankfully I am 95% certain I know exactly where the code is failing (see above).
 
If it helps with this project, in the stuff I recently picked up is a 6300 Hardware Reference with schematics.

Follow the link in my post #42, there is schematic, theory of operations (which explains the schematics) and many more. In the download section you also find diagnostic software.
 
While I do not (yet?) have the skill and patience to trace motherboard traces, I think I can give replacing the 8237 a shot. I've ordered two 8237A-4's and a few 40-pin DIP sockets, and will practice my soldering/desoldering on smaller projects before attempting it on this board.

I'll be keeping a close eye on this thread to see if the DMA chip fixes your board. I ordered one of the LPT diagnostic readers and am waiting for it to arrive.

I also took a chance on a 6300 board on ebay. Same symptoms as my original. Made sure seller had a return policy, so my money's been refunded and the seller said I could keep the board. Now I've got 2 to repair (possibly)...
 
You might be waiting a while; I have nearly 0 soldering skills. I have several practice kits and small projects I want to go through before attempting to unsolder a 40-pin part and solder in a 40-pin socket...
 
You might be waiting a while; I have nearly 0 soldering skills. I have several practice kits and small projects I want to go through before attempting to unsolder a 40-pin part and solder in a 40-pin socket...

Understood.

If I was removing a part of that size and I had a socket and a new part ready, I'd clip the IC off by cutting each leg near the package with small diagonal cutters, then desolder the pins 1 by 1 and remove with tweezers. Much easier than trying to desolder 40 pins, IMO.
 
This is beginners stupid way...

Better: Desolder with a desolder pump. You can use the heat of your solder iron to push the pin inside the hole left and right when the tin is almost away. When douing this you can feel if it is still having contact to the board or if it's free. You can also use a wooden chinese chopstick and attach a needle to it's front (fix it with wire and solder it, then it is very stable at the chopstick). Then you can touch the desoldered pin and try to make a "pling" noise with the needle and the pin. A still fixed pin sounds different than a free one.
 
Or you could find a way to get it to someone an hour to the north who would be happy to do it.
 
This is beginners stupid way...

Better: Desolder with a desolder pump. You can use the heat of your solder iron to push the pin inside the hole left and right when the tin is almost away. When douing this you can feel if it is still having contact to the board or if it's free. You can also use a wooden chinese chopstick and attach a needle to it's front (fix it with wire and solder it, then it is very stable at the chopstick). Then you can touch the desoldered pin and try to make a "pling" noise with the needle and the pin. A still fixed pin sounds different than a free one.

I've used your method successfully where I needed the part intact, like the Dallas clock chips in my Grid and IBM PS/2 machines. If you know the part is bad, though, I don't see an issue with clipping the chip out.
 
If you cut the chip pins with a pincer, you will create mechanical stress in the solder pad and in the circuit board while you are cutting. This can damage the solder pads. And additionally, maybe the chip isn't defective, so you throw some money in the trashcan.
 
You can avoid PCB foil stress by using a Dremel to cut the IC out--it's also faster. I'm not a big fan of re-using old removed ICs--the stress involved in removal often compromises the sealing around the frame leads. Is the 8237/9517 a rare device now?
 
I have an LPT code reader on the way, but I received the logic probe I ordered today.

I have no experience troubleshooting boards at this level, if anyone can guide me in the right direction, or point me to good resources for learning this stuff, I'd appreciate it.

I've explored the board a bit to determine that the CPU has a clock signal, and I've watched the CPU reset go high when I press the reset button and then drop back low.

What behavior should I be looking for on the DMA chip? I've confirmed it's getting power.
 
A dremel near thin wires of the PCB... I still prefer to desolder.

I usually desolder, but sometimes use a non-Dremel brand pencil grinder with a 3/4" cutoff disk. I'd be wary about using a full size die grinder like a Dremel brand one. But that's just me. If I didn't have the pencil grinder, I probably would use whatever I had.

It wouldn't be hard to protect other parts or steady the grinder in the case of unsteady hands, if necessary.
 
Is the 8237/9517 a rare device now?

I got mine for less than $10, so I'm guessing no. Of course, I have no idea if mine work (I got two, used).

What behavior should I be looking for on the DMA chip? I've confirmed it's getting power.

On a 6300/M24, if the DMA test passes, you should see something other than 43h on the LPT code reader. If it gets stuck at 43h, it didn't pass the DMA channel test. If it displays 43h, then something else, but no 44h, then the DMA channel check passed but the 1st 64K memory test failed. If you see 44h, you're past that entire section.

I usually desolder, but sometimes use a non-Dremel brand pencil grinder with a 3/4" cutoff disk. I'd be wary about using a full size die grinder like a Dremel brand one. But that's just me. If I didn't have the pencil grinder, I probably would use whatever I had.

I will likely desolder, without regard to saving the original part. I know cutting it would be much faster, but I'd be afraid of damaging the pads or traces, as others have mentioned. I am a total beginner at component-level hardware repair.
 
Back
Top