First post, by TbR78
Hi all,
I don't know if anyone would have some tips or pointers regarding a 486 mainboard that POSTs to an unknown code C0?
The board is a 486 socket 3 board with 3x VLB and 7x ISA slots, 256kB cache and has an Am486DX2 in it. It has an Opti 82C895 / 82C602 chipset and AMI WinBIOS.
This is a board I have in my possession since I was 16 years old (I bought it new) and I kept it for many years in a box. So I know its history, and when decommissioned it landed straight in the box on my shelve. The battery was a coin cell that I removed long time ago. There's no corrosion visible (battery was not present to leak). I decided to put it back in use out of interest and curiosity to play some old games. Anyway 😀
So, when I power on the board, the POST card flashes around 15 codes or so and then hangs at code C0. No beeps.
Let me explain what I have tested so far (and seems to be OK):
- BIOS chip is working, can dump the contents and it matches identically to one of the BIOS images on the retroweb.
- I flashed an EEPROM with the latest version of the BIOS image, but same POST appears (code C0)
- Without a BIOS chip in the socket, the board doesn't POST at all (no codes appear).
- Without a CPU in the socket, the board doesn't POST at all (no codes appear).
- The CPU works (tested in another board). I checked the jumpers 10 times now, look all correct.
- The same happens with/without memory (tried various working 72 pin and 30 pin modules).
- Removing the cache chips gives the same POST. The cache chips all pass in a tester (and I tried other chips).
- VCC seems to be 3.45V (which is on the high side, but I think the board can only do 3.45V or 5V). Besides, this CPU was always in this board. The Am486 datasheet states that 3.3V +- 0.3V is acceptable.
- Tried with coin cell inserted.
- Tried with 2 different VGA cards and without. Doesn't make a difference.
- The 32kHz crystal seems to hang at 5V (no frequency). I'm not sure if this might be preventing the board from booting?
- I disassembled the BIOS binary in Ghidra (and unpacked the compressed parts of the BIOS) and I cannot find any out 80h, al instruction that could send C0. I see plenty of occurrences where other known/documented POST codes are sent to port 80h, but cannot find the place that sends this one C0 (I might be overlooking it, but just to say it's not obvious). The codes before the C0 are also not immediately visible in the code (although I haven't paid too much attention there).
- I ran the BIOS in a custom 86box machine (I added it in the 86box sources to emulate my particular board), and added debug out to print all POST codes. Code C0 never appears.
- I think the D0-D7 lines are working, because I listed all the codes that flash by until C0, and OR-ing these gives FF (meaning that all data lines at least work).
I'm a bit unsure where to look for the problem. As far as I understand, POST codes are a part of the BIOS code and nothing else will write to port 80h (prior to execution of the BIOS). Is this a correct assumption? Or can the chipset also do this (I didn't see it in the datasheets or documentation that is available)?
Do I need to try some deoxide or something?
I'm a bit lost here 😀 Would really like to get this board back up and running.
Any idea is welcome 😀 Thanks for reading.