VOGONS


First post, by mkarcher

User metadata
Rank l33t
Rank
l33t

The Adaptec 274x and 284x SCSI controller cards never got a BIOS update to support (booting from) drives bigger than 8GB. This is in contrast to the 1542CF (an ISA card!), which did receive a BIOS update implementing the Phoenix Enhanced Disk Drive (EDD) Specification (which is endorsed/supported by Microsoft). If the SCSI controller supports the EDD specification, the Windows editions that support FAT32 and LBA addressing can make use of the whole drive (i.e. some late Windows 95 versions, Windows 98 and later).

I set out to fix this problem and developed a patch to implement at least basic support for the Phoenix EDD on Adaptec controllers based on the AIC-7770 SCSI controller. It turns out that the BIOS contains sufficient amounts of dead code (in case of the 2742W, Version 2.11) or unused space (in case of the 2842VL) to add the extra functionality. The BIOSes are so similar to each other, that a common patch is possible, you just need to adjust a couple of offsets.

Furthermore, the ASPI driver contains a (faster) Int 13 implementation. In case of the EISA/VL controllers, you use ASPI7DOS.SYS, which also is too old to support the EDD specification. In case of the ASPI driver, a happy accident allowed to easily add the EDD implementation: Instead of space for 8 data structures about BIOS supported HDD drives, Adpatec reserved space of 88 data structures. This causes a hole of 880 Bytes in the driver for free use.

I patched the latest BIOS of the 2742W (Version 2.11, contained in a OTP chip on Disruptor's controller) and the 2842VL (Version 1.01, came with the card, also available for download at Microsemi). Furthermore I patched ASPI7DOS.SYS. Preliminary tests (basically booting the command prompt of Windows 98, and runnig a disk test in speedsys) show that implementations work. I offer my patches under the very permissive BSD license on GitHub, see https://github.com/karcherm/scsi_edd. I do not have patched binaries on that page, as distributing modified versions (derived works) of proprietary software is something I don't want to get into - especially as Adaptec's successor Microsemi is still an active company today. Instead, the releases on that repository contain ".OBJ" files, which can be applied as patches using my project omfpatch, see https://github.com/karcherm/omfpatch.

I did something similar to the mainboard SDMS BIOS some time ago, see https://github.com/karcherm/sdms_8g, which I am likely going to merge into the scsi_edd repository some day.

Reply 1 of 145, by maxtherabbit

User metadata
Rank l33t
Rank
l33t

Impressive. I don't suppose you'd consider taking a look at ASPI4DOS.SYS as well?

The latest version of it does not work at all with the 1542B. The previous release, dated 1997, does support the 1542B but it has a bug. The latest BIOS for the 1542B supports extended translation, and indeed works with HDDs of all sizes in DOS (although only 8GB is accessible of course). However when you load the 1997 version of ASPI4DOS.SYS with a drive >8GB attached to the system, any subsequent accesses to that drive fail

Reply 2 of 145, by mkarcher

User metadata
Rank l33t
Rank
l33t
maxtherabbit wrote on 2021-11-25, 20:18:

Impressive. I don't suppose you'd consider taking a look at ASPI4DOS.SYS as well?

The latest version of it does not work at all with the 1542B. The previous release, dated 1997, does support the 1542B but it has a bug. The latest BIOS for the 1542B supports extended translation, and indeed works with HDDs of all sizes in DOS (although only 8GB is accessible of course). However when you load the 1997 version of ASPI4DOS.SYS with a drive >8GB attached to the system, any subsequent accesses to that drive fail

I might take a look into that in the future, too. I have a system with a 1542B, as well as a 1542CF which is currently not tied to a specific system. I could try to find out whether APSI4DOS in the most recent version dropped 1542B support on purpose, or whether the newest driver should still work with the old host controller, and the non-detection of the 1542B is just a bug that can be fixed with a simple patch.

The EISA/VL controllers do support arbitrary big hard drives out of the box, but come with the 8GB limit for DOS / Windows. My patch removes the 8GB limit by adding LBA support to the BIOS. I don't know whether there is a point in adding LBA support to the 1542B, though. Who wants to run a 9GB (or bigger) drive on a controller that maxes out at 5MB/s on the SCSI bus? I'm using the 1542B in an 386SX system with the VLSI TOPCAT chipset, because the 1542CF is incompatible with bus-mastering into chipset-provided EMS memory, whereas it works fine with the 1542B, so this is not an inherent limitation of the chipset.

Reply 3 of 145, by rkurbatov

User metadata
Rank Member
Rank
Member

@mkarcher I have Adaptec 2842A with BIOS v2.0 (strange that Adaptec provides BIOS updates to v1.01 only). I dumped it and want to give a try your 8G+ patch to get all of my 18GB SCSI drive.

I understand that your patch will not apply to my BIOS so will use v1.01 to replace my BIOS. I can provide you my dump if you are interested in it. Did not find it anywhere else.

486: ECS UM486 VLB, 256kb cache, i486 DX2/66, 8MB RAM, Trident TGUI9440AGi VLB 1MB, Pro Audio Spectrum 16, FDD 3.5, ZIP 100 ATA
PII: Asus P2B, Pentium II 400MHz, 512MB RAM, Trident 9750 AGP 4MB, Voodoo2 SLI, MonsterSound MX300

Reply 4 of 145, by rkurbatov

User metadata
Rank Member
Rank
Member

Update - didn't work for me. I replaced UV-EPROM with ordinary W27C512 for convenience - that worked well with existing 2.0 BIOS. Then I replaced it with the patched 1.01/EDD 1.0 one.
I can enter the BIOS, change settings, but when I try to run BIOS utilities - it hangs (though with possibility to reboot) on device #3 if there is no drives attached and on device #4 if there is single #0 drive attached. The same happens during the boot when it detects drives - I see my drive detected but then system freezes (also allowing reboot). I tried resetting to defaults and preventing all devices detection but the first one - that didn't help.
I restored my original BIOS (though still on EEPROM) - it works, everything is ok. Except for 8G limit 😀 That's not very critical, I had 810MB HDD back in 1997 and managed to live with it, so 4x2GB drives are 10x more space to play with, but why not to try?

486: ECS UM486 VLB, 256kb cache, i486 DX2/66, 8MB RAM, Trident TGUI9440AGi VLB 1MB, Pro Audio Spectrum 16, FDD 3.5, ZIP 100 ATA
PII: Asus P2B, Pentium II 400MHz, 512MB RAM, Trident 9750 AGP 4MB, Voodoo2 SLI, MonsterSound MX300

Reply 5 of 145, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

Following. I have a vl bus scsi card that may be able to use this. Great work!

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 6 of 145, by mkarcher

User metadata
Rank l33t
Rank
l33t
rkurbatov wrote on 2022-08-24, 14:22:

@mkarcher I have Adaptec 2842A with BIOS v2.0 (strange that Adaptec provides BIOS updates to v1.01 only). I dumped it and want to give a try your 8G+ patch to get all of my 18GB SCSI drive.

I understand that your patch will not apply to my BIOS so will use v1.01 to replace my BIOS. I can provide you my dump if you are interested in it. Did not find it anywhere else.

It might be that different revisions of that card require different BIOS versions. I am happy to look at the V2.0 BIOS and try to give it big drive support. Drop me a PM with your dump!

Reply 7 of 145, by rkurbatov

User metadata
Rank Member
Rank
Member

Yay, it works!

@makrcher, I was checking the last things, swapping EEPROMs, but it seems like I did it using your own approach.

I can open PR to your Github repository or just send you the asm file with v2.0 offsets. But I can't PM you - I'm too young for that 😀

I checked this BIOS with Partition Magic. V5.0 doesn't understand 8G+ drives whatsoever. V6.0 works and sees my 18G drive. Will try 36G just to ensure 32G limit also passed.

There is a problem with ASPI7DOS.sys driver.

V2 BIOS + Unmodified ASPI7DOS.sys - Partition Magic 6.0 works, sees 8GB of drive
Patched BIOS + unmodified ASPI7DOS.sys - Partition Magic 6.0 works, sees 8GB of drive
Patched BIOS, no ASPI7DOS.sys - Partition Magic 6.0 works, sees whole drive (18GB)
Patched BIOS + patched ASPI7DOS.sys - Partition Magic 6.0 hangs on start. Without EMM386 it just quits silently. I though there is not enough memory (I run it from FDD) so I added Jedex.exe - now it fails with small Jedex stacktrace.

486: ECS UM486 VLB, 256kb cache, i486 DX2/66, 8MB RAM, Trident TGUI9440AGi VLB 1MB, Pro Audio Spectrum 16, FDD 3.5, ZIP 100 ATA
PII: Asus P2B, Pentium II 400MHz, 512MB RAM, Trident 9750 AGP 4MB, Voodoo2 SLI, MonsterSound MX300

Reply 8 of 145, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

Here is the one I have. Idk much about it. What do you think?

Attachments

  • image.jpg
    Filename
    image.jpg
    File size
    1.41 MiB
    Views
    2161 views
    File license
    Public domain

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 10 of 145, by mkarcher

User metadata
Rank l33t
Rank
l33t
rkurbatov wrote on 2022-08-24, 22:39:

I can open PR to your Github repository or just send you the asm file with v2.0 offsets. But I can't PM you - I'm too young for that 😀

Please go ahead an do so, if you are OK with having your offsets published under the MIT license. And just 17 more posts to go until you get PM access.
BTW: Feel free to add a copyright statement and an MIT license disclaimer to your offsets file, even if my ones don't contain a copyright statement. Credit where credit is due.

rkurbatov wrote on 2022-08-24, 22:39:

Patched BIOS + patched ASPI7DOS.sys - Partition Magic 6.0 hangs on start. Without EMM386 it just quits silently. I though there is not enough memory (I run it from FDD) so I added Jedex.exe - now it fails with small Jedex stacktrace.

Ouch. Something went wrong. The version of ASPI7DOS this is meant to apply to has these properties:

  • file date Sep 12, 1995
  • file size 36160 bytes
  • Load message containing "Version 1.42"
  • MD5 F519F014414F97BD0185E91A8C5694A1
  • SHA1 3500793E54E0656DE4860A795F99606B72064F08
  • SHA256 BEAEED3F0DB8A2FE6D8AF0DC31BE80B828654738295C1373435BD1C67C4AD6C6

Please verify that you use exactly this ASPI7DOS.SYS file. Otherwise, it is likely that the resulting driver is corrupted and behaves strangely. If you are positive that you this input file, I need to recheck that the version of the patch published to github is correct.

Reply 11 of 145, by mkarcher

User metadata
Rank l33t
Rank
l33t
rkurbatov wrote on 2022-08-24, 22:39:

Yay, it works!

Your patch for the 2842A BIOS version 2.0 (I suppose the 2842VL requires 1.0 or 1.01, and the 2842A requires 2.0 to work) is now published in release 1.2 of the SCSI_EDD project. Thanks for contributing.

Reply 12 of 145, by rkurbatov

User metadata
Rank Member
Rank
Member

I wanted to elaborate README a little bit more, but ok:)

As for Aspi - my SCSI drive has died (like lots of others before). I ordered a party of newer ones and will try them instead. Then I can tell more about Aspi7DOS.sys problem.

486: ECS UM486 VLB, 256kb cache, i486 DX2/66, 8MB RAM, Trident TGUI9440AGi VLB 1MB, Pro Audio Spectrum 16, FDD 3.5, ZIP 100 ATA
PII: Asus P2B, Pentium II 400MHz, 512MB RAM, Trident 9750 AGP 4MB, Voodoo2 SLI, MonsterSound MX300

Reply 13 of 145, by mkarcher

User metadata
Rank l33t
Rank
l33t
rkurbatov wrote on 2022-08-28, 12:16:

I wanted to elaborate README a little bit more, but ok:)

I'm sorry for the premature merge. I wanted to avoid the impression that I ignore your contribution due to a minor README issue. This is especially so as the guess that 1.x BIOS versions are made for the 2842VL and 2.x BIOS versions are made for the 2842A is not by you - and should it turn out wrong, I am the one to "git blame". If you want to elaborate other parts of the README, feel free to open another Pull Request.

To avoid this kind of misunderstanding in the future, you might want to mark your Pull Request as draft when you intend to further work on it before merging.

Too bad the hard drive died, but that's life when working on mechanical retro drives. I hope the replacement serves you well for longer time.

Reply 14 of 145, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

Kinda a related topic, seems like the right group of people to ask though.

I have this card also:

https://www.ebay.com/itm/155070821842

Adaptec AHA-1542CF/1540CF ISA SCSI Controller Card FAB 545107-00 Rev C

Currently I am trying to get a 146gb? 15k rpm 80 pin drive detecting and working on it. It only reads 8-9gb though.

Haven’t tried booting it yet because of other issues I am dealing with. But I hear from OP that there may be a bios update for it? That can help?

Also, can’t seem to get higher than 5.7 mb/sec?

Attachments

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 15 of 145, by Sphere478

User metadata
Rank l33t++
Rank
l33t++

Edit: punishedbunny just sent me this:
http://www.vogonsdrivers.com/getfile.php?fileid=552

Will have to try this later.

Edit:
Already have this version.

Attachments

Last edited by Sphere478 on 2022-09-04, 18:02. Edited 1 time in total.

Sphere's PCB projects.
-
Sphere’s socket 5/7 cpu collection.
-
SUCCESSFUL K6-2+ to K6-3+ Full Cache Enable Mod
-
Tyan S1564S to S1564D single to dual processor conversion (also s1563 and s1562)

Reply 16 of 145, by rkurbatov

User metadata
Rank Member
Rank
Member

There certainly were not bios supporting drives more than 8GB for ISA adapter 😀 As I see even 8G required the BIOS update (old one saw only 2G).

The process should be the same as I understand. Locate all required offsets, wirte the replacement code (probably the same one), fit it into empty space, replace the BIOS. But that's beyond my possibilities, I just tweaked the job of mkarcher a little bit without digging into code.

486: ECS UM486 VLB, 256kb cache, i486 DX2/66, 8MB RAM, Trident TGUI9440AGi VLB 1MB, Pro Audio Spectrum 16, FDD 3.5, ZIP 100 ATA
PII: Asus P2B, Pentium II 400MHz, 512MB RAM, Trident 9750 AGP 4MB, Voodoo2 SLI, MonsterSound MX300

Reply 17 of 145, by mkarcher

User metadata
Rank l33t
Rank
l33t
Sphere478 wrote on 2022-09-04, 17:31:
Adaptec AHA-1542CF/1540CF ISA SCSI Controller Card FAB 545107-00 Rev C […]
Show full quote

Adaptec AHA-1542CF/1540CF ISA SCSI Controller Card FAB 545107-00 Rev C

Currently I am trying to get a 146gb? 15k rpm 80 pin drive detecting and working on it. It only reads 8-9gb though.

Haven’t tried booting it yet because of other issues I am dealing with. But I hear from OP that there may be a bios update for it? That can help?

Also, can’t seem to get higher than 5.7 mb/sec?

I got an Adaptec 1542CF with BIOS 2.11, which does implement the required BIOS extensions for drives above 8GB.

Not being able to get busmaster rates above 5.7 MB/s is normal for the 1542 series, no need to worry about that.

Reply 18 of 145, by rkurbatov

User metadata
Rank Member
Rank
Member

@mkarcher, wow, was it native BIOS from Adaptec or somebody did it just as you did? Strange they did that for old ISA adpaters and did not for more modern ones.

486: ECS UM486 VLB, 256kb cache, i486 DX2/66, 8MB RAM, Trident TGUI9440AGi VLB 1MB, Pro Audio Spectrum 16, FDD 3.5, ZIP 100 ATA
PII: Asus P2B, Pentium II 400MHz, 512MB RAM, Trident 9750 AGP 4MB, Voodoo2 SLI, MonsterSound MX300

Reply 19 of 145, by mkarcher

User metadata
Rank l33t
Rank
l33t
rkurbatov wrote on 2022-09-04, 17:58:

@mkarcher, wow, was it native BIOS from Adaptec or somebody did it just as you did? Strange they did that for old ISA adpaters and did not for more modern ones.

It's the BIOS Sphere478 linked. Likely I got it from vogonsdrivers, too. I don't remember whether my card was shipped with it, or I upgraded it. Possibly I get around soon to look at the EPROMs on that card and check whether they have hand-written labels on them.