First post, by DenizOezmen
Hello everyone,
recently I took a closer look at the BIOS chips of a Diamond SpeedSTAR 24 and encountered some oddities regarding their content. Since no conclusive information was to be found on the web (apart from a thread in a german forum where a user made similar observations), I decided to research a bit further. Apologies if all of this is already known, but if not, it might be useful to someone:
The SpeedSTAR 24 has two BIOS chips labeled "DBIOS-L" and "DBIOS-H". Both chips are M27C256B EPROMS with a capacity of 32 KiB each. This seems a bit odd at first, since the full BIOS itself is only 32 KiB large, i.e. there seems to be twice as much space as strictly necessary.
The next surprise awaits when dumping the contents of the chips: They do not seem to contain anything useful. The label suffixes ("H" and "L") seem to indicate "high" and "low" bytes, but even interleaving the data does not yield anything useable. Additionally, the "H" chip contains the same 16 KiB data block twice.
This is due to the fact that Diamond shuffled around most of the address and data lines while connecting the BIOS chips to the ISA bus, and the contents of the chips compensate for that. The chips' data outputs are connected directly to the bus, while the address lines are routed through two 74LS245 transcievers. The "L" chip's data outputs are connected the the lower 8 bits of the ISA bus data lines while the "H" chip is connected the the higher 8 bits in the following manner:
DBIOS-L: DBIOS-H:EPROM ISA Bus EPROM ISA BusA0 Addr 03 A0 Addr 09A1 Addr 02 A1 Addr 05A2 Addr 12 A2 Addr 10A3 Addr 01 A3 Addr 04A4 Addr 11 A4 Addr 11A5 Addr 04 A5 Addr 01A6 Addr 10 A6 Addr 12A7 Addr 05 A7 Addr 02A8 Addr 08 A8 Addr 13A9 Addr 13 A9 Addr 08A10 Addr 00 A10 Addr 07A11 Addr 14 A11 Addr 06A12 Addr 09 A12 Addr 03A13 Addr 06 A13 Addr 14A14 Addr 07 A14 (not connected ot the address bus)Q0 Data 0 Q0 Data 15Q1 Data 1 Q1 Data 14Q2 Data 2 Q2 Data 13Q3 Data 7 Q3 Data 12Q4 Data 6 Q4 Data 11Q5 Data 5 Q5 Data 10Q6 Data 3 Q6 Data 09Q7 Data 4 Q7 Data 08
After unscrambling the chip contents using this information, it becomes clear that the DBIOS-L chip simply contains a copy of the full BIOS. The DBIOS-H chip carries additional copies of the bytes residing at odd addresses (which are repeated once within the chip for reasons unknown to me). Obviously, the card has the ability to feed the BIOS contents to the bus using either both chips in parallel or using only the DBIOS-L chip. (Might this be related to the "Turbo BIOS" setting?)
Note: The above might be valid for other models of Diamond VGA cards utilizing two BIOS chips. I currently don't have access to any other cards to check this, though.
In any case, I have attached the utility I used to process the dump files. It can either unscramble the contents of the DBIOS-L chip (the H chip is not needed since it only contains redundant data) ...
DBIOS /u scrambled_low.bin unscrambled_bios.bin
... or produce images for both chips from a plain (unscrambled) BIOS file:
DBIOS /s unscrambled_bios.bin scrambled_low.bin scrambled_high.bin