VOGONS


First post, by HwAoRrDk

User metadata
Rank Newbie
Rank
Newbie

Hi all, first post here. 😀

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.

Reply 1 of 9, by Guld

User metadata
Rank Member
Rank
Member

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?

Reply 2 of 9, by HwAoRrDk

User metadata
Rank Newbie
Rank
Newbie

One more thing...

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

Reply 3 of 9, by HwAoRrDk

User metadata
Rank Newbie
Rank
Newbie
Guld wrote on Yesterday, 16:43:

In my case it was the VGA ROM was having issues.

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.

Reply 4 of 9, by NJRoadfan

User metadata
Rank Oldbie
Rank
Oldbie

Symptoms are consistent with a cold solder joint on a memory chip. Might be worth a closer inspection for damage.

Reply 5 of 9, by HwAoRrDk

User metadata
Rank Newbie
Rank
Newbie

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.

Reply 6 of 9, by HwAoRrDk

User metadata
Rank Newbie
Rank
Newbie
NJRoadfan wrote on Today, 01:58:

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.

Reply 7 of 9, by HwAoRrDk

User metadata
Rank Newbie
Rank
Newbie

I've managed to read out the EPROM with an Arduino, but either the ROM is indeed bad, or I've messed something up. 🙁

This is the first 255 bytes of what I read:

      0001 0203 0405 0607 0809 0A0B 0C0D 0E0F - 0123456789ABCDEF
----------------------------------------------------------------
0x00: 5540 5756 3900 7756 444F 004F 0729 1E49 - U@WV9.wVDO.O.).I
0x10: 4D56 4143 6D61 696C F730 5320 004C 4735 - MVACmail÷0S .LG5
0x20: 3220 4720 4953 5672 696E 3130 6120 200A - 2 G ISVrin10a .
0x30: 6F79 6968 2039 3231 3920 6972 734C 6763 - oyih 9219 irsLgc
0x40: 206E 2E41 6C52 6774 2065 6576 640D 4370 - n.AlRgt eevd.Cp
0x50: 7267 7431 382D 3930 5161 746C 4372 2E41 - rgt18-90QatlCr.A
0x60: 6C52 6774 2065 6576 640D 0000 0000 0000 - lRgt eevd.......
0x70: 0000 0000 0000 0000 0000 0000 0000 0000 - ................
0x80: 0000 0000 0000 0000 0000 0000 0000 0000 - ................
0x90: 0000 0000 0000 0000 0001 00B9 00C4 33E3 - ...........¹.Ä3ã
0xA0: 0208 C70C E800 F3EE C3F6 3680 11BB 4300 - ..Ç.è.óîÃö6€.»C.
0xB0: E800 B850 6DC3 B900 F3D3 0208 930C E800 - è.¸Pmù.óÓ..“.è.
0xC0: E259 2E06 1075 E800 00E8 FF7E 53B1 E800 - âY...uè..èÿ~S±è.
0xD0: 40E8 FF6E 53A1 5B3D 431E C4B0 E80B E380 - @èÿnS¡[=C.İè.ã€
0xE0: 03E3 402D 80BF E70A EF8E CDC3 53E8 0000 - .ã@-€¿ç.ïŽÍÃSè..
0xF0: E8FF 175B 4B5B 7DE8 00C9 A8E1 E800 C3F3 - èÿ.[K[}è.ɨáè.Ãó

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:

      0001 0203 0405 0607 0809 0A0B 0C0D 0E0F - 0123456789ABCDEF
----------------------------------------------------------------
0x00: 55AA 40E9 5725 5652 3900 0000 77CC 5649 - Uª@éW%VR9...wÌVI
0x10: 4445 4F20 0073 4FB2 073D 29E9 1E29 4942 - DEO .sO².=)é.)IB
0x20: 4D20 5647 4120 436F 6D70 6174 6962 6C65 - M VGA Compatible
0x30: F7C8 30DF 532E 2000 0043 4C2D 4744 3534 - ÷È0ßS. ..CL-GD54
0x40: 3239 2056 4741 2042 494F 5320 5665 7273 - 29 VGA BIOS Vers
0x50: 696F 6E20 312E 3030 6120 2020 200D 0A43 - ion 1.00a ..C
0x60: 6F70 7972 6967 6874 2031 3939 322D 3139 - opyright 1992-19
0x70: 3934 2043 6972 7275 7320 4C6F 6769 632C - 94 Cirrus Logic,
0x80: 2049 6E63 2E20 416C 6C20 5269 6768 7473 - Inc. All Rights
0x90: 2052 6573 6572 7665 642E 0D0A 436F 7079 - Reserved...Copy
0xA0: 7269 6768 7420 3139 3837 2D31 3939 3020 - right 1987-1990
0xB0: 5175 6164 7465 6C20 436F 7270 2E20 416C - Quadtel Corp. Al
0xC0: 6C20 5269 6768 7473 2052 6573 6572 7665 - l Rights Reserve
0xD0: 642E 0D0A 0000 0000 0000 0000 0000 0000 - d...............
0xE0: 0000 0000 0000 0000 0000 0000 0000 0000 - ................
0xF0: 0000 0000 0000 0000 0000 0000 0000 0000 - ................

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.

Reply 8 of 9, by HwAoRrDk

User metadata
Rank Newbie
Rank
Newbie

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:

srec_cat.exe -o cl-gd5429-rom-1-combined.bin -binary cl-gd5429-rom-1-odd.bin -binary -unsplit 2 0 cl-gd5429-rom-1-even.bin -binary -unsplit 2 1

And now I get something sensible! 😁

      0001 0203 0405 0607 0809 0A0B 0C0D 0E0F - 0123456789ABCDEF
----------------------------------------------------------------
0x00: 55AA 40E9 5725 5652 3900 0000 77CC 5649 - Uª@éW%VR9...wÌVI
0x10: 4445 4F20 0073 4FB2 073D 29E9 1E29 4942 - DEO .sO².=)é.)IB
0x20: 4D20 5647 4120 436F 6D70 6174 6962 6C65 - M VGA Compatible
0x30: F7C8 30DF 532E 2000 0043 4C2D 4744 3534 - ÷È0ßS. ..CL-GD54
0x40: 3239 2056 4741 2042 494F 5320 5665 7273 - 29 VGA BIOS Vers
0x50: 696F 6E20 312E 3030 6120 2020 200D 0A43 - ion 1.00a ..C
0x60: 6F70 7972 6967 6874 2031 3939 322D 3139 - opyright 1992-19
0x70: 3934 2043 6972 7275 7320 4C6F 6769 632C - 94 Cirrus Logic,
0x80: 2049 6E63 2E20 416C 6C20 5269 6768 7473 - Inc. All Rights
0x90: 2052 6573 6572 7665 642E 0D0A 436F 7079 - Reserved...Copy
0xA0: 7269 6768 7420 3139 3837 2D31 3939 3020 - right 1987-1990
0xB0: 5175 6164 7465 6C20 436F 7270 2E20 416C - Quadtel Corp. Al
0xC0: 6C20 5269 6768 7473 2052 6573 6572 7665 - l Rights Reserve
0xD0: 642E 0D0A 0000 0000 0000 0000 0000 0000 - d...............
0xE0: 0000 0000 0000 0000 0000 0000 0000 0000 - ................
0xF0: 0000 0000 0000 0000 0000 0000 0000 0000 - ................

A binary diff against the downloaded file shows no difference, and checksums are the same.

So I think it's safe to say it's highly likely there's no problem with my ROM. 😀

Reply 9 of 9, by HwAoRrDk

User metadata
Rank Newbie
Rank
Newbie

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.