Be taught One thing Outdated Each Day, Half IX: AHA-154xB and ASPI4DOS.SYS

The opposite day I had a urgent “want” to look at the habits of Adaptec 154x and appropriate SCSI HBAs and their DOS drivers. I discovered the onerous method that the AHA-154xB doesn’t work with Adaptec’s final DOS drivers from circa 1999. That features the drivers still available for download (ASPI4DOS.SYS model 3.36), in addition to the driving force shipped with OEM variations of Home windows 98SE (ASPI4DOS.SYS model 3.36S).
The error message is much from enlightening; successfully the driving force acts as if there have been no HBA in any respect.
Fairly unsurprisingly, this drawback has been noticed before. It has been additionally noticed that ASPI4DOS.SYS model 3.35 works fantastic, as do older variations. However why is the three.36 driver actually not working with AHA-154xB?
Initially, it’s not as a result of the AHA-154xB is just not speculated to be supported. The README.TXT file within the newest driver package deal clearly lists Adaptec AHA-1540B/1542B as supported, along with the newer ‘C’, ‘CF’, and ‘CP’ variants. It’s apparent that Adaptec didn’t really check the driving force on an AHA-154xB board… which isn’t massively stunning because the 3.36 driver is from December 1998, and the ‘B’ variant was obsoleted by the way more fashionable ‘C’ in February 1993. Six or so years later, Adaptec most likely barely had any of the ‘B’ variants left.
Notice that the even older AHA-1540A/1542A and the unique AHA-1540 (with no suffix) usually are not listed as supported. These fashions had been most likely by no means very widespread and had been changed in 1990 with a less expensive, extra succesful ‘B’ variant, which did promote in important portions.
The explanation for the ASPI4DOS.SYS failure is kind of attention-grabbing. The AHA-154x interface was comparatively easy and properly designed for the time (circa 1987), turned kind of an business customary, and due to this fact turned the goal of cloning (notably by BusLogic). In their very own drivers, Adaptec needed to differentiate its personal boards from clones.
Each Adaptec and BusLogic drivers used the I/O port at offset 3 from the I/O base (e.g. port 333h for a HBA configured at I/O base 330h) as a part of their clone detection logic. This register was not documented by both Adaptec and BusLogic, and due to this fact many drivers shipped with working methods didn’t use it, however Adaptec’s and BusLogic’s personal drivers did.
On the Adaptec AHA-154xB (and presumably older variants as properly), the register really doesn’t exist. Reads at all times return FFh and writing has no impact. On the BusLogic HBAs, the register is at all times current, is writable by the host (however usually by no means written), and the excessive bit is about if the HBA is configured to assist disks bigger than 1 GB.
On the AHA-154xC, Adaptec modified the habits and made the register return ASCII letters ‘ADAP’ in a round-robin style.
For sure, ASPI4DOS.SYS model 3.36 checks for this habits. It doesn’t assume a identified preliminary state, and due to this fact expects that studying the register 4 occasions may return ‘ADAP’, but in addition ‘DAPA’ or ‘APAD’ or ‘PADA’. To work across the ambiguity, the driving force reads the register 4 occasions, provides the values collectively, and checks if the sum equals 16h. If not, it declares the HBA ‘not an Adaptec’ and ignores it. And that’s the bug—the test will fail on an AHA-1540B.
No identified driver shipped with an OS reads the ‘ADAP’ signature. However for instance Adaptec’s DOS-based SCSIFMT.EXE utility model 1.33 makes use of the signature to differentiate between the AHA-154xC and earlier variants.
ASPI4DOS.SYS model 3.36 incorrectly insists that the ‘ADAP’ signature have to be current and due to this fact fails to work with AHA-154xB adapters. It’s fairly clear why Adaptec didn’t catch the bug (the ‘B’ variant was quite outdated on the time), though it’s a lot much less clear why the driving force logic was modified within the first place.
It shouldn’t be troublesome to patch out the ‘ADAP’ signature test from ASPI4DOS.SYS, however for an AHA-154xB one may as properly use ASPI4DOS.SYS version 3.35 or earlier and neglect that model 3.36 ever existed.