• Please review our updated Terms and Rules here

286 Compatible BIOS for Diamond SpeedStar64 (Cirrus Logic CL-GD5434)

sqpat

Veteran Member
Joined
Mar 21, 2009
Messages
693
Location
Seattle, WA
The most advanced (fastest?) tier of ISA VGA cards (Cirrus CL-GD5434, S3 928, ATI Mach64) all have 386 instructions in their BIOS and do not run on a 286, which is unfortunate. All prior cirrus cards worked fine on a 286 so I assumed that was the best bet to investigate a 286 compatible bios hack.

The BIOS didn't actually need a lot of work. There was a half dozen spots or so where 32 bit registers were used to attempt to interact with the pci bus. It was easy to just patch these with returning the carry flag or jumping past (the default behavior when the card is not found on the PCI bus). Perhaps the same BIOS was used for the PCI version of the card.

Then there was one spot where dword string instructions were used for scanning and testing video memory at startup. This was patched pretty lazily, but the end result worked. I tested on 86box and then on my card on real hardware and both worked, and the performance on real hardware shows a 3-4% performance bump on heavy vga benchmarks in general compared to a CL-GD5429 which is another very fast card.

Some other people have said the card does not work for them, so I am kind of curious about collecting some data points and seeing if I can produce a working version for everyone.

I think the CL-GD5434 has some pretty advanced 2d acceleration/windowing features. I also know some people have been creating and modifying windows drivers relatively recently. I'm not so familiar with that realm but am in general kind of curious as to how many hardware drivers out there might work for this card. I might enjoy contributing to windows drivers for the card.

The BIOS can be found here
 
Today I had access to my hardware again, I tested a whole bunch of my 286 motherboards, after being told by many people the bios/card did not work for them.

Does Work:

C&T SCAT:
JCS Router Board
VLSI SCAMP:
Biostar mb-1220
PC-Chips m218
Citygate TD-90:
Zida TD60c

Does not work:

TACT82000:
Delta 065-3.3-0789
UMC UM82C230 (286 MORTAR):
CDTek 286 (UMC '230)
Headland HT-12
Unicorn ENDAT-286xx REV. 4A
DFI 286-12/16E
Octek (HT12 286)
Headland HT-18: ( NOTABLE: 386sx headland ht-18 works)
Lucky Star CM286
Protech PM286
Headland HT-21:
PC Chips M216
Suntac ST62C00x:
JS-168A
Citygate TD-60:
HEDAKA HED-988/PCChips M205
CHIPS NEAT:
Jaton Jam-Super AT-V5
ACT A27C001: (might be rebadged td60 now that i look at it)
CDTek Super 286

Thoughts:

Based on post codes on various systems, it seems the Video BIOS returns ok, but then in some cases the System BIOS fails it's own test of video memory for some reason. AMIBIOS in particular, on multiple chipsets often failed after post code 1A (Returned from video ROM) and beeped 2 long 8 short (i think), without showing code 1B (Display memory read/write test OK) and several other video codes. And then went straight to post code 30 which has to do with virtual memory checks.

This brings me to a thought: why is it the System BIOS's business to test video memory?? Isn't that the video BIOS's job?

I don't know, maybe there was a brief period in time where system bios tested video memory assuming knowledge of VGA, then something changed in video card hardware breaking old BIOS and stopping them for working. I will note the 5434 has only MEMR and MEMW connected while other VGA cards only seem to have SMEMR and SMEMW wired up. Supposedly has to do with VESA 2.0 and the 15-16 mb hole? Maybe for some reason BIOS memory accesses to video memory is not asserting these lines... not sure, just putting this info all out there in case this makes sense to someone. I don't know if the question to answer is "why does the test run" or "why does the test fail".

Further testing notes:

- Can confirm the same bios works on Kelvin64 and STB Nitro as well as Diamond Speedstar.
- Performance seems hampered by having only 2 slots of ram filled
- Speedstar 64 seems to have EDO memory versions of the card while all my STB Nitro and my single Kelvin 64 are FPM only
On my VLSI scamp (286) i can run the bus clock significantly faster than the CPU clock which always allows for silly experiments.

- These monsters POST with ISA bus clocks north of 50 MhZ obliterating my previous bests (ATI Mach 32 at 43 mhz).
- I had one card work successfully as high as ~61.50 MhZ
- They post fine beyond this but have render artifacts.
- Unconvinced ram speed is the limiting issue on overclocking performance, so I don't think shoving 25-30ns edo is going to make them faster.
 
This brings me to a thought: why is it the System BIOS's business to test video memory?? Isn't that the video BIOS's job?
Yes, the system BIOS should only be testing video memory if configured for MDA or CGA.

On a 286+ where you have a CMOS setup instead of hard switches, the BIOS may switch video configs by itself to try to avoid a bad state where the user can't see anything to change the config manually.

So I suspect whatever the BIOS is doing to check for EGA/VGA installed is failing, and it's switching back to CGA or MDA.
 
On a side note, I tried the mono/color jumper on a couple boards just in case that toggled some of the video testing behavior but it didn't help anything.

I spoke with 640KB (of GLaBIOS fame) a bit and it seems it should be the VGA BIOS's job to enable the display via INT 10h,AH=0 and maybe some screen mode set. It feels like this part is not happening for the problematic boards. In theory, if the VGA BIOS was called, even if this failed memory check happened there should already be the diamond speedstar banner on the top of the screen, I think?

I might try some different system BIOS versions out, especially MR BIOS if i can find it for some of these boards. Otherwise i might compare the speedstar 64 bios with the speedstar 24 (542x based cards) and see if theres something different the enabling of the video.
 
On a side note, I tried the mono/color jumper on a couple boards just in case that toggled some of the video testing behavior but it didn't help anything.
Both MDA and CGA memory tests will likely fail on an uninitialized VGA.

I spoke with 640KB (of GLaBIOS fame) a bit and it seems it should be the VGA BIOS's job to enable the display via INT 10h,AH=0 and maybe some screen mode set. It feels like this part is not happening for the problematic boards. In theory, if the VGA BIOS was called, even if this failed memory check happened there should already be the diamond speedstar banner on the top of the screen, I think?
The VGA BIOS initializes the display when the VGA option ROM is invoked by the system BIOS, during the scan for option ROMs in C000-EFFF. Depending on the VGA BIOS, you may or may not see a banner. Later on, the system BIOS calls int 10 to set the startup video mode.

If the VGA option ROM is invoked but failing some self test (memory or otherwise) during initialization, it may not even attempt to display a banner or hook int 10. In this case, the system BIOS will assume there is no EGA/VGA and may revert to CGA/MDA video testing (which will also fail).

If you have an MDA/Hercules and mono monitor, you can run it together with your VGA. Set the primary display to mono and it should boot. There should be a blinking cursor on the VGA screen if it's initialized, and mode mono/co80 should switch between displays if int 10 is hooked by the VGA BIOS. If the VGA is not initializing, check to make sure you can read the entire VGA BIOS at C000 and that the signature and checksum are correct.
 
Back
Top