VOGONS


First post, by Disruptor

User metadata
Rank Oldbie
Rank
Oldbie

Since the search result for SDMS in this bulletin board is very poor I have decided to examine this matter a bit more thorough.
I got great help from mkarcher and today we'd like to present the results.

Have you known that SCSI on IBM compatible x86 is concerned by the 8 GB limit too?
It is time now to break this limit - 25 years after this hardware has been introduced.

Last edited by Disruptor on 2021-10-31, 07:11. Edited 4 times in total.

Reply 1 of 9, by Disruptor

User metadata
Rank Oldbie
Rank
Oldbie

NCRs SCSI branch has been transferred, moved or whatever. New names in that list are Symbios Logic and LSI Logic.
Please respect that the used names belong to their respective companys.
We are talking here about SCSI-2.

NCR SDMS 3.0 is the name of the BIOS that runs the NCR 810 controllers, which are also known as 53C810 or 53C810A.
This chip was used on smart and rather cheap PCI based SCSI controllers in the second half of the 1990's.
They provide fast narrow SE (single ended) SCSI with a transfer rate of 10 MB/s on contemporary PCI addon cards.
The clou was to not have a SCSI BIOS chip on the controller. Instead there was some space reserved for it on the mainboard BIOS.
I quote ASUS PVI-486SP3 with SIS 85C496/85C497 chipset and PCI/I-486SP3G with Intel 420ZX Saturn II chipset.
I started examining NCR SDMS 3.07

Since there were no bigger hard drives available at this time, there was no need for BIOS software that supported disk sizes above 8 GB (base 2^30), respectively 8.4 GB (base 10^9).
This is covered by standard INT13 support.
To go beyond this limit your system has to support INT13 extensions; I will call it INT13E - or use its own drivers (like GNU/Linux or Windows NT).
Last thing is a common solution when you can boot from a disk below the limit.

But what happens when you try to boot from an 18 GB disk?
NCR SDMS 3.07 just has support for INT13, so FDISK will show a disk size of 8025 or 8033 MB.

Since I also own an ASUS PCI-SC875 with Symbios Logic 875 (53C875) I had a few options of combining SDMS versinos and SCSI drivers.

BIOS support is one thing at this time. But when you boot DOS you may face a very poor performance with a speed of 3 MB/s out of 10 MB/s possible.
At this point DOS drivers may help since some of them replace the INT13 routines from BIOS. Some of them include INT13E support, some not. The basic rule is to install a DOS ASPI or CAM driver. The speed should go above 9 MB/s if your disk is fast enough.
But some of them can make it worse by giving the fast speed on the one side but removing BIOS' INT13E capability on the other side.

CAM? It is the ISO standard to implement a SCSI API.
However it disappeared since Adaptec' ASPI implementation was too common and already wide spread.

It's time for showdown:

Software           Support Version   (C)  driver date      size  comment
ASPI8XX.SYS INT13 4.02.00 1995 22.04.1996 04:02 46084 replaces BIOS routines
ASPI8XX.SYS 24.04.1998 not examined
ASPI8XX.SYS INT13E 4.10.00 2000 26.06.2000 04:10 62846 requires newer BIOS than SDMS 4.03.02 BIOS, SDMS 3.07 ?
ASPI8XX.SYS INT13E 4.11.00 2001 62944 requires newer BIOS than SDMS 4.03.02 BIOS, supports SDMS 3.07
875 SDMS BIOS INT13E 4.03.02 1996 -
875 SDMS BIOS 4.09.00 1995 not examined
875 SDMS BIOS INT13E 4.11.00 1998 -
810 SDMS BIOS INT13 3.07.00 1993 included in many mainboard BIOSes
810 SDMS BIOS INT13E 3.07.00-E 2021 INT13 extensions patched by mkarcher
MINICAM.SYS - 3.02.00 1994 31.10.1994 10:03 10576 slow; does not replace BIOS routines
DOSCAM.SYS - 3.05.00 1995 08.05.1995 10:14 44320 fast, but does not replace BIOS routines
ASPICAM.SYS - 3.03.00 1994 31.10.1994 16:36 2242 just a wrapper from ASPI to CAM
SCSIDISK.SYS INT13 3.03.00 1994 28.09.1994 15:37 19232 disk driver for CAM, overwrites even INT13E support
SYMDISK.SYS noINT13 4.04.00 1999 07.10.1999 04:04 20908 disk driver for ASPI, *
SYMDISK.SYS noINT13 4.01.00 1995 13.11.1995 04:01 20464 disk driver for ASPI, *

The * in the comment SYMDISK.SYS means that this driver does not install when the devices are already covered by BIOS support. If not, it installs as DOS block device driver without any INT13.

For the 810 controller:
So the way is to replace your SDMS 3.07.00 BIOS by mkarcher's SDMS 3.07.00-E.
Use the ASPI8XX.SYS version 4.11.00 - or DOSCAM.SYS and ASPICAM.SYS if you need ASPI support

For the 875 controller:
Update your BIOS to 4.11.00
Use the ASPI8XX.SYS version 4.11.00

When you use 2 SCSI buses, with 810 and 875:
SDMS 3.xx should be disabled.
875 controller should have 4.11.00
Since ASPI8XX.SYS 4.02.00 won't support this configuration, use the 4.11.00 driver and don't forget to breathe!

Reply 2 of 9, by mkarcher

User metadata
Rank l33t
Rank
l33t

As Disruptor already explained, Int 13 extension support (implementation of the Phoenix Enhanced Disk Drive specification) is missing in a early NCR/Symbios SCSI BIOSes and drivers. This is not surprising, as the specification seems to be published in mid-1995, see for example this archived copy. It seems NCR/Symbios lost interest in SDMS 3 when the EDD was available. Nevertheless, SDMS 3 with EDD is an interesting goal, because this would enable out-of-the-box support for big hard drives on boards with SDMS 3 in the BIOS. You can't easily upgrade to SDMS 4 on all boards because the SDMS 3 BIOS is just 16KB, whereas the SDMS 4 images I found all include a setup utility for controllers with EEPROM and exceed 16KB by far (The SDMS 4.03 BIOS is 32KB big, the SDMS 4.11 BIOS is 50KB big).

Thus, I prepared a patch for version 3.07.00, as shipped e.g. by ASUS, to add Int13 extensions. You can read instructions on how to patch you BIOS on my github project at https://github.com/karcherm/sdms_8g . I tested that patch, and provide specific offsets for the BIOS files on the Asus PCI/I-486SP3G and PVI-486SP3 boards.

Please note that if you use the full NCR SCSI software stack that was distributed with those controllers, you will get the CAM-based disk driver SCSIDISK.SYS. SCSIDISK.SYS replaces the SCSI hard drive BIOS provided by the on-board BIOS with its own implementation which is also limited to 8GB. I am working on a patch for SCSIDISK, too, but for now please avoid using SCSIDISK.SYS with hard disks above 8GB. Most likely Windows 98 doesn't like disappearing Int 13 extensions during the boot process. As disruptor wrote in the previous post, if you need the functionality supplied by SCSIDISK.SYS, use the newer ASPI stack instead.

Reply 3 of 9, by led178

User metadata
Rank Newbie
Rank
Newbie
mkarcher wrote on 2021-10-31, 07:20:

You can read instructions on how to patch you BIOS on my github project.

Thank you very much! I'm just playing with the NCR 810 and 875. Could you please post your collection of drivers and firmware from the message above? I want to use them as boot rom.

How difficult is it to be extended to other controllers? For example AHA-1522A and DC-300B (DC-800B), I can send you the firmware.

Reply 4 of 9, by mkarcher

User metadata
Rank l33t
Rank
l33t
led178 wrote on 2022-01-05, 12:30:

How difficult is it to be extended to other controllers? For example AHA-1522A and DC-300B (DC-800B), I can send you the firmware.

As I need to fit the LBA interface code in the space constrained by the BIOS of the ROM, I typically have to reverse engineer parts of the ROM and adapt the BIOS extension code to make best use of the code already present in the ROM. I already did so for the AIC-7770 based controllers (2740 EISA and 2840 VL), see https://github.com/karcherm/scsi_edd . I usually don't get it right at the first try. No need to send me a dump of the 1522, I have a 1520 at hand. I will look to into it when I get around to, but big disks on a low-end contoller like the 152x series is not a priority for me.

The DC-800B series of cards might be a considerably harder job. I don't know that part of the Tekram line-up, but the design seems to be similar in spirit to the DC-6x0 series (which I know quite well). This means that the card's firmware plays an important role and needs (possibly a lot of) adjustments as well to support bigger drives. Just to make sure: You are talking about the DC-300B only? I can find a ROM update at http://files.mpoli.fi/hardware/HDD/TEKMAR/ for the 800B. If the 300B ROM is identical, no need to send a ROM image, but I have no idea whether hot-patching big disk support into that card is feasable at all.

Reply 5 of 9, by mkarcher

User metadata
Rank l33t
Rank
l33t
mkarcher wrote on 2022-01-05, 18:22:

No need to send me a dump of the 1522, I have a 1520 at hand. I will look to into it when I get around to, but big disks on a low-end contoller like the 152x series is not a priority for me.

I have to take that claim back. I have access to an 1522B. That controller uses banking on a 64KB ROM chip, and I just dumped the 1.15 version on it (931604-00A, checksum 1A74). I can get the 1.4 version of the 1522 on the Internet. If you hapen to have a different version, possibly the 1.20L with >1GB support, that image might be a good starting point.

Reply 6 of 9, by led178

User metadata
Rank Newbie
Rank
Newbie
mkarcher wrote on 2022-01-05, 18:52:

If you hapen to have a different version, possibly the 1.20L with >1GB support, that image might be a good starting point.

Yes, bios DC-300B and DC-800B are identical. But given the complexity of the task and the rarity of the controller ...

I just discovered that bios 1.15 is newer than 1.20L, however 1520B PnP. But it also has the phrase "AHA-1520B / 22B BIOS has detected a mismatch between your host adapter's DIP switch settings and its Plug and Play Resource data. The Resource data has been updated automatically to match your DIP switch settings." I will check how he behaves on the AHA-1522A.

Attached is part of my bios collection including two 1.20L versions

Please send me SDMS 3.07.00-E
led178 (a) yandex.ru

Attachments

  • Filename
    scsibios.rar
    File size
    239.28 KiB
    Downloads
    53 downloads
    File license
    Public domain

Reply 7 of 9, by mkarcher

User metadata
Rank l33t
Rank
l33t
led178 wrote on 2022-01-05, 22:37:

I just discovered that bios 1.15 is newer than 1.20L, however 1520B PnP. But it also has the phrase "AHA-1520B / 22B BIOS has detected a mismatch between your host adapter's DIP switch settings and its Plug and Play Resource data. The Resource data has been updated automatically to match your DIP switch settings." I will check how he behaves on the AHA-1522A.

I doubt that the 64KB BIOS for the 1522B controller is going to work properly on the 1522A controller. The 64KB BIOS is most likely accessed using some bank switching mechanism that isn't even implemented in the 1522A hardware. Anyway, the 1.15 BIOS doesn't have Int 13 Extensions, so it doesn't help breaking the 8G barrier.

The Tekram ROM has the layout I expected, because that layout is also used on the newer editions of the DC-6x0 caching IDE controllers: The first half is the host firmware ("BIOS"), and the second half is the firmware for the 80286 processor on the card itself.

Reply 8 of 9, by led178

User metadata
Rank Newbie
Rank
Newbie

I connected a biosless NCR 810 to the LS-486e, and was surprised by the appearance of the BIOS line! True, after determining the HDD, everything hung.

We look at what is there: CBROM 486E.BIN / D

CBROM V2.07 (C)Award Software 2000 All Rights Reserved.

******** 486e.bin BIOS component ********

No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K)10000h(64.00K)original.tmp
1. Other(0800:0000) 04000h(16.00K)025A0h(9.41K)ncr306.16k
2. Other(1000:0000) 04000h(16.00K)02B99h(10.90K)aha7850.16k

Total compress code space = 1B000h(108.00K)
Total compressed code size = 15139h(84.31K)
Remain compress code space = 05EC7h(23.69K)

** Micro Code Information **
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID
------------------+--------------------+--------------------+-------------------

We pull out the modules for the sake of interest and delete them.
CBROM 486E.BIN /other 0800:0 extract
CBROM 486E.BIN /other 1000:0 extract
CBROM 486E.BIN /other 0800:0 release
CBROM 486E.BIN /other 1000:0 release
CBROM 486E.BIN /D

CBROM V2.07 (C)Award Software 2000 All Rights Reserved.

******** 486e.bin BIOS component ********

No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K)10000h(64.00K)original.tmp

Total compress code space = 1B000h(108.00K)
Total compressed code size = 10000h(64.00K)
Remain compress code space = 0B000h(44.00K)

** Micro Code Information **
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID
------------------+--------------------+--------------------+-------------------

Well, add NCR 3.07 there: CBROM 486E.BIN /other 0800:0 P825_16.ROM
CBROM 486E.BIN /D

CBROM V2.07 (C)Award Software 2000 All Rights Reserved.

******** 486e0.bin BIOS component ********

No. Item-Name Original-Size Compressed-Size Original-File-Name
================================================================================
0. System BIOS 20000h(128.00K)10000h(64.00K)original.tmp
1. Other(0800:0000) 04000h(16.00K)02592h(9.39K)p825_16.rom

Total compress code space = 1B000h(108.00K)
Total compressed code size = 12592h(73.39K)
Remain compress code space = 08A6Eh(34.61K)

** Micro Code Information **
Update ID CPUID | Update ID CPUID | Update ID CPUID | Update ID CPUID
------------------+--------------------+--------------------+-------------------

If you add it as / pci - it does not appear.
How other - works!
The NCR 810 started successfully, but the 875 did not start up, neither without a BIOS and with a driver, nor in any other combination.
For the sake of interest, I tried to add 4.11-4.19 there, but they are large, the car just hangs.
Although even with the largest space even remains, apparently page access is needed there.
Small 3.07 (p825_16.rom) looks like a regular 16kb add-on ROM with C800.
Those. the task has been solved.
But then it’s even more interesting, do you know who aha7850 is? Yes, this is our favorite AHA-2940UW!
And now it works without this module!!
Those. solved one of the ancient problems of the work of this consumer controller on 486.

Attached is 2 firmware for LS-486e
486E0.BIN - Removed NCR 3.06 and AIC-7850 modules
486E307.BIN - Removed NCR 3.06 and AIC-7850 modules, added NCR 3.07

Attachments

  • Filename
    486E307.rar
    File size
    74.01 KiB
    Downloads
    42 downloads
    File license
    Public domain
  • Filename
    486E0.rar
    File size
    64.83 KiB
    Downloads
    41 downloads
    File license
    Public domain

Reply 9 of 9, by rkurbatov

User metadata
Rank Member
Rank
Member

That's interesting.

I've just got ASUS PCI/E-P54NP4 mobo. It's dual socket 5 board without any ports on it but with optional ASUS SC-200 card. It has 53C810 chip onboard, but BIOS is supposed to be provided by the motherboard. And not only by this one, I have one more Asus motherboard of that time - P/I-p55tp4xe. And manual says it also supports that SCSI card extension, so as I understand quite many of Asus cards of that period used that scheme.

So these BIOSes can be patched if they don't support big SCSI drives - I will definitely look into that.

And even more. PCI/E-P54NP4 has EISA onboard so I could not resist and ordered EISA SCSI controller. It's very interesting beast - AMI caching controller with 4 SIMMs onboard and 386sx (that provide caching as I understand) - it will come tomorrow. And as I see it also has NCR controller onboard, but this one is from the previous generation - NCR 53C700. A little bit slower in terms of SCSI Bus (6.25 MB vs 10MB on the newer one), probably slower in terms of bus speed (EISA is slower than PCI) but it has caching. Would be interesting to compare, to test and to patch its bios for sure 😀

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