I recently acquired a Cirrus Logic CL-GD5429 VLB VGA card, but it's not working properly. It either gives no video output at all, or when it does the display is corrupted. It also appears not to be allowing the system to fully POST; I tried with a random Hercules clone card and the board apparently POSTs successfully with that (I say apparently, because I have no appropriate monitor to hook up and so I can't see what's happening).
The attachment gd5429-corrupt-display-1.jpg is no longer available
The attachment gd5429-corrupt-display-2.jpg is no longer available
Things I've done so far:
Checked the output signals at the VGA connector with an oscilloscope, and they seem okay. R/G/B pins show activity (and seem to be the expected 0.7V, but I forgot to note the exact level), HSync is 31.5 kHz, and VSync is 70 Hz (both 5V). This I believe corresponds to what is expected for 720x400@70Hz.
Checked with a POST analyser card. The system gets stuck at one of 0x2C26 or 0x2C2A when no output, and 0x4036 or 0x403A with corrupted output. It's an AMI BIOS.
Noticed some light scratches on the back of the card, but on closer inspection they appear only in the solder mask. Just in case, I beeped out continuity between pins/vias that those traces connect to, and they're fine.
Removed and re-seated the EPROM in its socket.
Checked for loose solder joints on the surface-mount GD5429 and RAM. Didn't find anything bad.
Tried different slots on the motherboard (there are 3 VLB).
Any ideas? Bad RAM perhaps?
Did also notice that the 4× 74F245 bus transceivers all were pretty warm - the hottest chips on the board, in fact. Are they supposed to get hot? They were getting about as hot as the 486SX-25 CPU I'm using.
I had a similar issue with a VLB 5429. In my case it was the VGA ROM was having issues. I pulled the chip and tested it outside the card by reading it repeatedly and everything appeared fine. But in the card it had issues. Replaced it with a new EEPROM with the same ROM flashed to it and it worked great.
In my case, I was able to isolate this by determining that if the system booted okay and shadowed the VGA ROM at startup correctly, the card would work reliably for long periods of time. But if I turned the shadow off, it would occasionally glitch, freeze the system, etc. Even with the shadowing it would still occasionally fail to boot, presumably because it got a bad copy of the ROM at startup.
Yours doesn't sound like the exact same issue as I had, but maybe similar?
While playing around with the card some more, I've noticed something weird. If I touch my finger to one of the empty memory expansion sockets - location circled in the picture - I can make the display go from the mostly-corrupted state as shown in the first picture in my earlier post, to the not-so-corrupted state shown in the second photo. Not pressing, simply by just placing my finger there.
The attachment gd5429-weirdness.jpg is no longer available
I'm hoping it's not the ROM, because I don't have any means of verifying whether it's good - I don't have a programmer (e.g. TL866, T48, etc.). Unless it can be rigged up to an Arduino or something. But I don't even know what kind of ROM it is; there don't appear to be any markings on the package! As you can see from the photo, the sticker only just covers the window area, so I doubt there's anything hiding under there. All I know is it's a 28-pin UV-erasable EPROM in a ceramic package.
Despite the total lack of markings on the chip - I took the chip out of the socket again, and even on the bottom there is nothing except a hand-written "5429" in what appears to be pencil - after some investigation I think the ROM is a 27256 EPROM.
I know it's 32KB, because that's the size of the ROM image file available to download on the The Retro Web, so it's a 256Kbit ROM. I can see that what should be the data pins on one of those (D0-D7) are all connected to the inputs of an adjacent 74LS244, which in turn has its outputs connected to the Data pins of the ISA edge connector. +5V and ground are also connected to what should be VCC/VPP and VSS. What should be OE and CE appear to have approx. 3.5k of pull-up resistance to +5V.
I think I will try and rig it up to an Arduino and try and read out the contents and compare to the above downloaded file. That file has a 1994 copyright message in, same as the label on my ROM, so it's likely to be the same version.
Symptoms are consistent with a cold solder joint on a memory chip. Might be worth a closer inspection for damage.
I have already been over all the solder joints on all the surface mount chips (the GD5429 and the RAM are the only SMD parts on the board) with a magnifier and pushed on them with tweezers to see if there's anything loose, but I didn't find anything bad. I suppose I could try re-flowing all the solder joints, but I'll try other things first.
I read it 3 times to make sure I was getting consistent results, and all were identical.
There seems to be some kind of structure there? But it seems to me almost like it's missing every other byte. What I know about x86 BIOS ROMs is that they're supposed to start with 0x55AA, followed by a length byte (N x 512B), then typically a jump instruction (0xE9). But in my ROM it's like the 0xAA and the 0xE9 are missing... 😮
For comparison, this is what the ROM downloaded from The Retro Web looks like:
Maybe I didn't read my ROM correctly? Perhaps there's a mistake in my Arduino code? I've triple-checked I wired everything up correctly, so I'm confident it's not that.
My Arduino sketch and ROM dump attached, in case anybody wants to analyse further.
Wait! I noticed that the 'missing' bytes are in fact present further into the file, at 0x4000. This is that business where ROMs are split into odd and even, isn't it?
So I split everything from 0x0-0x3FFF and 0x4000-0x7FFF into separate files and combined them with:
And with the ROM back in the card... something new.
Now I get a beep code of 7 short beeps where it wasn't emitting anything before. This is apparently "Virtual mode processor exception error" according to an AMI BIOS code list. 🤷 Same POST code of 0x4036.
Nothing wrong with the system - still boots fine with a Hercules card.