VOGONS


First post, by TheMobRules

User metadata
Rank Oldbie
Rank
Oldbie

I need some help with an ISA graphics card that I mostly use in my test bench. It was working perfectly up until recently when it started behaving in a strange way: when powering on, I get an error code of 1 long + 3 short beeps (on AMI Color BIOS from early-mid '90s) and a screen that flashes on and off with corrupted characters:

The attachment Error screen.jpg is no longer available

The card is just a regular ISA VGA based on the Cirrus Logic CL-GD5420 chip:

The attachment VGA ULTRA CL-GD5420.jpg is no longer available

Now, according to some sites the beep codes correspond to an error in the first 64K of memory, which is obviously not the case since I have tested the card with several known working motherboard/memory combinations that work just fine with other cards. But it makes me suspect of the card's own memory... could that be the problem? I was thinking of removing one bank of RAM and testing with 512K at a time, but not sure how the RAM banks are organized here, any help with that?

I have also dumped the BIOS (attached), the checksum seems OK and just in case tried to program it into a new EPROM with the same results. I've also checked the pins of the main chip and RAM and all seem to be connected properly to their pads, the rest of the components are through-hole and all look good.

Reply 1 of 3, by mkarcher

User metadata
Rank l33t
Rank
l33t

You are correct. The symptom clearly indicates a broken bit in the video RAM. To be exact, the bit that is broken is D7. Accroding to the data sheet of the Cirrus 542x series, the entry-level 5420 chip only has a 16-bit memory bus interface on the upper half of the 32-bit memory data bus, so D7 is connected to the pin labelled MD23, which is pin 108 of the Cirrus chip. The memory chips used on that card have an unconventional pinout which is typically only used on the lowest quality tier of Taiwanese memory chips from the early 90's. That's why I am not very surprised one of the chips failed, but it's unfortunate that you can't easily find replacement memory chips in that pinout. Furthermore, these chips are 512k x 4 chips, which is an uncommon size. Nevertheless, they are a perfect match for the GD-5420, which can address up to 1MB at 16 bit width, requiring memory chips totalling in 512k x 16.

It's unfortunate that your card has the standard 5420 layout that uses only 16 data lines, even though the graphics chip soldered to it is the latest generation of the 5420 which has the 32-bit data bus enabled, so it could use 32 bit wide video memory on a suitable PCB (for example one originally designed for the 5422). As your card is only populating 16 bit of the memory bus, don't worry about the data sheet appendix B5 explaining the advantages of the 5420-75QC-B, and the extra memory configurations supported by that specific chip. Instead, go straight to appendix B7 if you want to look at the data sheet to find the memory configurations suggested in a standard 5420 card, and you will find "1 MByte: Two chips of 512K x 8". While your card has four chips of 512K x 4, it's the same configuration, they just split each 512K x 8 into two chips of 512K x 4 each. The datasheet doesn't mention this configuration because 512K x 8 (4 MBit) was a way more common memory size than 512K x 4 (2 MBit), as typical RAM chips have bit counts that are powers of 4 (squares of powers of two). I would absolutely not be surprised if the 512K x 4 chips on your card actuall are half-bad 512K x 8 chips that have 4 "good" bits choosen in the factory while bonding the chip.

As each of your chips is x4, you need all four bits to fill the 16-bit memory bus of the Cirrus chip, unless you go to the very performance limited 256K x 8 configuration (there seems to be no 512K x 8 configuration), so there is no "bank 0" and "bank 1" to swap. Your probably easiest way to fix the card is to identify the broken memory chip (there will be only one chip connected to MD23 of the cirrus chip), remove that chip, find out the pin assignment of that chip, and then replace it with a standard 441000 / 514100 1M x 4 chip with a lot of bodge wires.

I am quite confident about you chips being x4 chips because these cheap low-quality Taiwanese chips still have very systematic type numbers, indicating the number of data bits (4) and the number of addresses divided by 1024 (512) after a typical FPM DRAM prefix like "4" or "51". There also were similar 256K x 4 chips with one or two data bits broken that were labelled as 3256 or 2256, see pictures of the the quoted link in my post Re: Video RAM chips for a UMC TK-85C408VGA ISA Video Card? .

Don't worry about the beep code table talking about the lowest 64K of RAM: While that table indeed refers to the low 64K of system RAM, that table is only valid for beep codes emitted by the mainboard BIOS. In your case, the beep code is most likely emitted by the VGA BIOS, and indicates video RAM failure, which is correct.

Reply 2 of 3, by TheMobRules

User metadata
Rank Oldbie
Rank
Oldbie

Very thorough and helpful advice as usual mkarcher!! No wonder I was unable to find datasheets for these RAM chips, they really seem like bottom of the barrel stuff.

At this point I'm not sure if it's worth any effort to save the card, but at the very least I'll try to identify the bad chip and move on from there.

Many thanks!

Reply 3 of 3, by mkarcher

User metadata
Rank l33t
Rank
l33t

Hmm, wait a second!

You say "a screen that flashes on and off"? This would mean not only D7 but also D15 failed at the same time. That's unlikely! The bad text characters are caused by bit 7 being forced high on every character. á is space with bit 7 set. The vertical bars are caused by bit 7 being high in the font stored in video RAM. Blinking is bit 7 being inadvertantly high in the attribute byte. The attribute byte is stored in D8..D15 of video memory, while the ASCII codes and the font data are stored in D0..D7. Actually, on an original VGA, ASCII codes are stored in D0..D7 and font data is stored in D16..D23, but as this cirrus chip only has a 16 bit bus interface, D16..D23 is mapped to D0..D7.

So, if D7 and D15 fail at the same time, maybe it's not the video RAM after all? I am considering whether it's a failed bus interface, but even assuming that for some reason the card is downgraded to 8-bit ISA mode, so a bad connection on the ISA D7 pin could cause the issue, with a bad ISA D7 connection, you would not be able to initialize the VGA control registers to get a stable image.

So, pondering all theories, I finally came to the conclusion that likely the BIOS tries to auto-detect the RAM configuration, and detects that 512K x 16 and 256K x 16 does not work, and it falls back to 256K x 8 mode, thus only using two of the chips. Looking back into the data sheet, the 256K x 8 mode only uses the high data byte, so it's not D23 that's bad, but D23 is likely not used at all, and it's in fact D31 that's bad.