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 Bus
A0 Addr 03 A0 Addr 09
A1 Addr 02 A1 Addr 05
A2 Addr 12 A2 Addr 10
A3 Addr 01 A3 Addr 04
A4 Addr 11 A4 Addr 11
A5 Addr 04 A5 Addr 01
A6 Addr 10 A6 Addr 12
A7 Addr 05 A7 Addr 02
A8 Addr 08 A8 Addr 13
A9 Addr 13 A9 Addr 08
A10 Addr 00 A10 Addr 07
A11 Addr 14 A11 Addr 06
A12 Addr 09 A12 Addr 03
A13 Addr 06 A13 Addr 14
A14 Addr 07 A14 (not connected ot the address bus)
Q0 Data 0 Q0 Data 15
Q1 Data 1 Q1 Data 14
Q2 Data 2 Q2 Data 13
Q3 Data 7 Q3 Data 12
Q4 Data 6 Q4 Data 11
Q5 Data 5 Q5 Data 10
Q6 Data 3 Q6 Data 09
Q7 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