This is a follow-up to a previous post about the curious driver in Microsoft OS/2 1.21. After initially writing the article, additional information came to light, explaining why the code was there.
In summer 1988, Compaq released the Deskpro 386/25, the most powerful PC available at the time with a price tag over $10,000. At the time, Compaq did not offer dedicated server systems, but the Deskpro 386/25 was clearly meant to be usable as a file server. To that end, Compaq offered an expansion unit that could house up to two 300MB ESDI drives. The expansion unit was effectively an ESDI expander, attached to a disk controller in the main unit through a custom cable. The Deskpro 386/25 plus expansion unit could utilize two plus two 300MB drives, for a total of 1.2GB of storage (this was mid-1988).
Now comes the interesting part. Because Compaq used Western Digital ESDI controllers that looked like a regular PC/AT disk (or an IDE drive) to the system, Compaq made it possible to have one or two drives in the main unit with a disk controller responding at the 1F0h I/O port range, while the expansion unit responded at the “alternate” 170h address range long supported by PC/AT compatible disk controllers. To software, the ESDI controllers looked the same as old PC/AT controllers for ST-506 drives, and the same as newer IDE drives (which were already used by Compaq in 1988).
The initial support for four drives had two key components. The Compaq SETUP utility stored the drive type of the 3rd/4th drive in CMOS locations 1Bh/1Ch (conveniently right after 19h/1Ah used for the 1st/2nd drive). And for DOS, Compaq supplied a custom driver called EXTDISK.SYS.
The EXTDISK.SYS driver provided the low-level hardware for the secondary controller, and extended the INT 13h disk service to support BIOS drive 82h/83h. At least in the early (that is, late 1980s) Compaq systems, the system BIOS only supported drives 80h/81h and had no support for the secondary controller whatsoever.
Compaq supplied custom FDISK and FORMAT utilities capable of working with EXTDISK.SYS.
The secondary controller support in MS OS/2 1.21 is clearly derived from EXTDISK.SYS and likely shared some code. That explains both why the MS OS/2 1.21 disk driver looks the way it does, and why IBM’s disk driver has no such support.
On the DOS side, only Compaq supplied EXTDISK.SYS, and only Compaq users would try to load it. But on the OS/2 side, the EXTDISK.SYS equivalent support was built into the generic disk driver, and everyone got to use it, whether they had a Compaq system or not (because the driver makes no attempt to check that it is running on a Compaq machine).
Just like the MS OS/2 1.21 driver, EXTDISK.SYS is almost a standard driver for a secondary AT style disk controller. A key difference is that it tries to use an interrupt control register at I/O port 1171h in order to determine the IRQ used by the controller. If port 1171h does not respond in an acceptable manner, EXTDISK.SYS defaults to using IRQ 14 for the secondary controller (which is the same IRQ used by the primary controller).
It is apparent that in 1988, there was no true default IRQ for the secondary controller. The choices Compaq offered were IRQ 11, 12, 14, or 15. The IRQ was software configurable, but a DIP switch on the disk controller was used to set the default IRQ. Compaq defaulted to IRQ 14, but as early as 1989, Novell’s NetWare 3.0 disk driver defaulted to IRQ 15 for the secondary controller.
Compaq clearly kept this interrupt configuration scheme in later systems. It was supported by the Compaq Portable 386. It was also supported by the EISA based Compaq IDA controller used in the Systempro. And it was used by many newer Compaq systems.
Why EXTDISK.SYS Was Needed
Some of the details of Compaq’s EXTDISK.SYS implementation are far less than obvious, especially how it interacts with the system BIOS and DOS.
As mentioned above, the Deskpro 386/25 system BIOS has no real support for more than two disks (on the primary AT style controller). The only “support” the BIOS has is storing the drive type for 3rd and 4rd hard disk in CMOS locations 1Bh/1Ch. The system BIOS will never report that more than two drives are present through INT 13h.
This fact seemed rather strange until I tried booting DOS versions older than 5.0 on a system (well, in a VM) with four drives supported by the system BIOS. And as it turns out, DOS (including Compaq’s own DOS 3.31) just hangs early during boot because up to and including DOS 4.01, IBMBIO.COM/IO.SYS only handled up to two hard disks! Unfortunately the code in DOS assumes that the INT 13h service will never report more than two drives… and if it does, bad things happen. While that may seem outrageous, even at the time when DOS 4.0 was released, there simply were no PCs with BIOS support for more than two drives! Compaq was the first in 1988.
In light of that fact, even if Compaq could fix their own OEM DOS version that came with the Deskpro 386/25, it makes sense that they did not want to prevent customers from booting all previous DOS versions. Hence the system BIOS only reported at most two drives through INT 13h/08h.
When EXTDISK.SYS was loaded, it extended INT 13h to support drives 82h and 83h and dynamically added the requisite drive letters to DOS. When called with INT 13h/08h for drive 82h, EXTDISK.SYS reported how many drives were attached to the secondary controller.
Some newer Compaq systems fully supported additional hard disks in the BIOS, but did not report them by default (keeping the original behavior of the Deskpro 386/25). INT 15h/E4h had to be used to change the BIOS behavior. IO.SYS in MS-DOS 5.0 and later calls this service on Compaq systems before it enumerates hard disks.
NetWare
For NetWare 2.x, Compaq offered a custom disk drivers called CPQDSK and NVCPQDSK; these were almost identical except the latter didn’t perform a read to verify each write.
NetWare 386 (1989) came with ISADISK.DSK driver that already had built-in support for Compaq’s secondary controller. By default, Novell used the familiar 170h I/O base and IRQ 15.
Unlike EXTDISK.SYS, Novell’s driver made no attempt to access port 1171h and obtain the IRQ setting that way; it was simply up to the server administrator to configure the IRQ correctly. However, Novell’s ISADISK.DSK did rely on CMOS locations 1Bh/1Ch to obtain drive geometry, and therefore generally could not work in non-Compaq systems.
Later Novell disk drivers supported other methods of obtaining drive geometry. In NetWare 3.11 (1991), ISADISK.DSK could read special NetWare Ready or CCM (Common Configuration Method) sectors from the disk and acquire drive geometry that way. The alternative IDE.DSK driver could use the IDENTIFY DRIVE command and query the drive itself. These methods did not require any system BIOS support at all and could be used with not just two but up to four disk controllers (or IDE channels), which (apart from the primary controller) did not have to be known to the system BIOS at all.
Conclusion
Based on research of extant Compaq and Novell documentation, it is fairly certain that in 1988, Compaq established the use of a secondary AT style disk controller to support additional two hard disks (for a total of up to four). At the time, Compaq used ESDI drives for the secondary controller but the scheme worked with IDE drives just as well.
Prior to version 5.0, DOS was completely unable to support more than two hard disks (note: hard disks, not partitions), and could in fact hang early during boot up when the system BIOS presented “too many” drives.
In 1991, Novell extended the AT style storage support with additional two controllers, for a total of four disk controllers and up to eight drives. At that time, these would have typically been IDE drives.
Interesting!
Were there ever any patches released for earlier DOS versions?
I assume that not that many would had attempted to use a DOS version lower than 5.0 in a vintage computing situation on a computer that can easily use multiple 16-bit IDE/ATA interfaces, since that would most likely be at least a 286 and unless it happens to only have max 640k you’d probably want DOS 5 to be able to use DOS=HIGH.
Also given that DOS 4 has a bad reputation and except for the Compaq branded 3.31 any DOS older than that only supports 30M partition sizes, which few if any would likely want if they for some reason have more than two hard disks on a vintage computer.
Bonus: How well was this understood/documented at the time? Could it even had been the case that the max two disks issue was a reason for it generally being a bit difficult to configure a random bought-used SCSI controller to cooperate with an MFM controller back in the days?
Also, since any SCSI controller can have 7 disks, did they only present the first or first two disks via INT 13h and have the user load a driver for the additional disks?
Relevant side track: Did this also affect early network booting? Or did all those early net boot solutions emulate floppy images as boot disks?
Irrelevant side track: Were there ever any netboot solutions for DOS systems that would somehow load IO.SYS and MSDOS.SYS over the network and then insert a driver that hooks on the INT21h file I/O API and thus be able to boot DOS without ever actually using INT13h (the raw sector BIOS API)?
>In 1991, Novell extended the AT style storage support with additional two controllers, for a total of four disk controllers and up to eight drives.
Microsoft in Windows 95 (and above) supports only two standard controllers (Primary and Secondary, of course) explicitly. And the most interesting is the fact that ESDI_506.PDR is responsible for noting IOS about using of these controllers (by filling the system wide IOS IDA_esdi_p_in_use and IDA_esdi_s_in_use), but specifically IOS is protecting according ATA registers ports from Ring-3 applications AFAIK.
MiaM
You have to understand the times.
At this time this configuration was very, very expensive, if a company would pay for this it would be put in a server so many people could access it, NetWare or OS/2.
At the time there were a very big gap between PC’s and “Workstations” if you need more than 2 disks, they would tell you to buy a Sun or RS/6000, or something like that or in the case of PC’s use NetWare, OS/2, or some kind of UNIX. (In the company were I worked for the first time with Unix they saw PC’s like toys, even didn’t respect SCO OpenServer/Xenix even when they worked with this everyday).
If you have a PC with DOS it was much more frequent to see a SyQuest or a Bernoulli Drive, at the time was normal to have removable drives (like floppy’s) and have different disks with your different files.
You wrote: “I assume that not that many would had attempted to use a DOS version lower than 5.0 in a vintage computing situation”, the minimum standard probably would be DOS 3.3, almost all you software will work with that, so depends what will you do, You want to run one of the last games of DOS, you probably want every byte available of that 640K memory. If you want to run dBase 3 or Windows 3.0, you could run DOS 3.3 no problem.
Also in time the problem in DOS was not having more than 2 hard disks, the problem was hard disks bigger than what DOS supported and that was resolved with multiple partitions via DOS or some kind of driver like Disk Manager.
I configured a PS/2 Model 80 with PS/2 SCSI Adapter in 86Box (pre-1990 BIOS).
Works fine with 2 drives in PC DOS 3.30. If you configure 3 drives, PC DOS 3.30 doesn’t see any drives at all. Works fine in “DOS 7.00” (Windows 95 boot disk).
If you configure an ESDI adapter and 2 disks on the SCSI adapter, well, PC DOS 3.30 can’t handle that either.
Configuring ASPI4B.SYS plus ASPIDISK.SYS did work. I guess this does something similar to what EXTDISK.SYS does.
However, PC DOS 3.30 would still boot – it didn’t crash; it just couldn’t see the drives.
I wasn’t able to get two ESDI adapters to work at all, despite the @ADF file having an option for “Alternate” I/O addresses; I wanted to see what the BIOS and DOS would do with it set up for at least 3 drives. However, this looks like it might be an 86Box quirk. (I don’t have two ESDI adapters to test on real hardware in any case.)
Does anyone know if the IBM ESDI adapters (which were released at the same time the PS/2 was, around 1987) had BIOS that worked with two adapters or not?
@Fernando:
A use case that I think is forgotten is hobbyists using “junk” at the time even an 8088 PC still had a decent value, but there would be a market where old MFM disks at about 20M were way way more affordable than any newer/larger disks, and thus a hobbyist might had wanted to use four 20M disk. Thinking about it, a standard IBM AT case could fit four 5.25″ half height disks like ST-225 or similar. (Don’t know about mounting holes for two half height drives in the AT case).
For vintage computing a possible but perhaps not that likely use case would be to have multiple disks for multiple OS:es, in order to avoid the 528M limit (and whatever the next limit was, 8G?).
@Josh:
Thanks for testing that!
I haven’t had a look at the source code for 86box, but Captain Obvious tells that it’s likely not that hard to read the source code to tell how 86box does if you tell it to have two ESDI adapters, even though it might not always be as easy to change the code.
(In general in my small experience it tends to be a struggle to compile open source projects if it uses a lot of libraries as you might not have exactly the same version that the devs use, and/or your distribution (if on Linux) might put things in different places and whatnot. For testing purposes it might be possible to disable certain features, like for example testing out minor changes might not need working sound or whatnot).
86Box’s implementation of the ESDI adapter doesn’t cope with multiple cards, but it does have an implementation of a DBA-ESDI “adapter” and with a bit of fiddling I could probably get both to work… and then try to stuff 3 drives in and see what the BIOS does.
86Box can easily implement hardware and the BIOS is just the real BIOS, bugs and all. (The 86Box PS/2 ESDI implementation is basically the same code as the MFM and ATA implementations, i.e., ST-506, except with the weird DMA stuff added on.)
AT clone cases made it easy to have 4 half height hard drives. The right panel had 3 half height drives bays open to the outside. The internal bay could take 2 half height drives. Okay, the expectation was 2 floppy drives, a tape drive, and two hard drives but that didn’t have to be the case.
There were also external parallel port hard drives and lots of other ways to shoehorn extra drives. I think my 486 Win 3 machine had 4 SCSI hard drives at its peak and still had no problem booting. Some of the drivers were not from MS.
Side track:
Could the classic IBM AT WD MFM hard disk controller be used with a separate floppy card, or was it necessary to use the floppy controller on the MFM hard disk controller?
If it was possible to use a separate floppy card, then you could even use the IBM expansion box for 8-bit ISA cards with a floppy controller and floppy drives in that box, together with an AT class computer. Would look a bit weird.
More reasonable if you run out of physical space for drives would be to use an adapter between 34-pin IDC and DC-37 (37-pin D-sub) and house the floppy drives in an external enclosure. (Since you can have a decently long cable for floppies you could even use this as a way to get rid of some of the noise from fans and hard drives).
@Richard: Were any of those parallel port drives bootable? I.E. were there ever any type of adapter bios that you could install? I assume that in particular for parallel port drives this wasn’t the case (otherwise the reason for using the parallel port rather than a dedicated port is kind of moot)
I wonder how they managed to support more than 1024 cylinders in the Compaq BIOS.
@MiaM, The PC diskette adapter uses DMA 2, IRQ 6, I/o 3F0h, and supported 4 drives via the Drive Select mechanism. Most contemporary diskette drives allowed setting DS0 through DS3 via jumpers, but IBM decided to ship with a two-position cable with a twist in it so that all drives needed to be set as DS1.
The AT’s diskette adapter was similar, except it was “neutered” and could only support 2 drives; I am not clear on the mechanism of how or why this happened. (Were the bit fields in the I/O ports used for something else?) It did have the ability to choose a different address range (370h), but whatever driver wanted to do this would have to contend with still sharing the same IRQ and DMA lines. The AT BIOS certainly doesn’t do this. I recall some SCSI card that had a floppy controller that did support a secondary floppy controller, although I have no idea why they did this.
Parallel-port “backpack” or whatever type of drives weren’t bootable – the BIOS doesn’t know anything about them.
@Wells, yes, the AT certainly had room for more drives… contemporary drives would have quickly run out of power, though. An ST-225 needs 26.4W on the +12V rail on spin up, and the motherboard already drew about 30W… so that right there limits you to two drives. Full-height drives drew even more power on spinup.
Machines designed to have lots of drives tended to have a staggered setup so that they wouldn’t spin up all at the same time.
Realistically, someone who was spending tens of thousands of dollars on drives when the PC/AT was released wouldn’t have been using a PC… a few years later, someone doing that would have been using SCSI and an external enclosure designed for it.
@Miam: A second floppy controller could be added to the AT. That was rather the default for the Compaticard. I don’t see any method to disable the fixed disk controller’s floppy controller so a secondary controller probably won’t be bootable.
For parallel port drives, most were not bootable. I believe there was some form of ROM boot for some of the models aimed at the laptop market. If the laptop lacks an internal floppy drive but still uses the external hard drive, the driver has to go somewhere. Not something I had used.
@Josh:
The weird thing is that the bios on any 286 or higher only supports two drives even if you use a PC/XT controller. Not that this makes that much sense, but for anyone who only had a 360k drive and wanted to use a hard disk controller without a built in floppy controller it would be meaningful to use an old PC/XT floppy controller if that’s what they had at hand / could buy at a good price.
Re having multiple drives: I’m thinking about hobbyists in the late 80’s or so, who collected whatever they could find.
Yeah, the PC/AT’s diskette adapter didn’t support more than 2 drives. Hardly anybody really ever had more than 2 drives and 1 drive became the norm for PC/ATs, which almost all shipped with hard drives. (I’ve never been able to find one of the 5160-068s in the “wild”, the one that came with 256k of memory and no hard drive.)
All PC/ATs came with the same fixed disk and diskette adapter. There was no reason to be stuffing peripherals from an XT in what was a $5,700 machine. Even hobbyists rarely saw a reason for more than 2 drives. It just didn’t make much sense.
The early configuration you would have seen was a 1.2MB drive with a 360k drive in order to write disks readable by an XT or PC… that need evaporated pretty quickly, and in the latter years of the AT you’d see a 1.44M drive paired with a 1.2 in order to interchange data with a PS/2. People who were interchanging a lot of data would be more likely to invest in a networking setup. (Diskettes were unbelievably slow and prone to failures.)
4-drive support on the original PC is one of those things like the cassette port or composite monitor output that was engineered into it, but hardly ever used.
@Josh:
Again, thinking about hobbyists later on. My first 286 mainbboard cost $60, and in particular I had an RLL hard disk controller without a floppy controller. Sure, later on I used a multi I/O card for everything except IDE, but at some point in time I likely used a floppy controller form an XT.
I never used 1.2M drives. 360k was useful to interchange disks with other PC:s and then I stated using 3.5″ disks directly.
I’ve at least seen people have three drives, 360k, 1.2M and 1.44M, to be compatible with all types. Probably uncommon but would had been a thing.
Also: Even for someone having an original IBM AT at the time they were somewhat expensive, say in the late 80’s, you might had wanted to upgrade to another hard disk controller and sell off the one you had (with or without your disks), and might had ended up needing a separate floppy controller card.
When the computers entered the second hand market among hobbyists, parts were trader between owners and some computers ended up with configurations you’d never been able to buy new from IBM or others, but that would had made sense for the then current owner.
As a side track: It’s interesting how different parts of the computer industry either accommodated, ignored or even worked against second or rather third hand owners who were “tinkerers”. I’d say that Microsoft and IBM ended up in the “ignore” group while Apple with the Mac models that on purpose were as hard to possible to expand ended up in the “worked against” group, while Apple at the same time with the Apple II ended up in the “accommodated” group.
The PC/AT’s power supply simply couldn’t support more than 3 drives, so IBM didn’t support more than 3 drives. RLL controllers weren’t common at that point in time; drives were MFM, and stayed that way until the late 80s when ESDI and then SCSI were the higher-end options. (MFM stayed pretty entrenched on the low end.)
1.2M drives seemed like a great thing at the time – faster, and a lot more space than DD drives. Now you only need 17 diskettes to back up your new PC/AT, as opposed to the pile of 28 diskettes to back up an XT.
Nobody would have been buying or selling the fixed disk and diskette adapter from an AT. Every AT came with one, and nobody wanted two of them. I can’t really imagine many people needing to “upgrade” from one unless they were going to move up to something majorly more expensive like SCSI or ESDI… and then they’d still want it to attach their diskette drive(s).
“Tinkerers” who want to fiddle with second-hand stuff aren’t going to drive the marketplace.
Incidentally, on the PS/2, IBM went back to accomodating lots of diskette drives – if that’s what you really wanted, with the 5.25″ diskette drive option. You could have both an internal drive (on the mod 60/65/80) and an external drive.
Another use for EXTDISK.SYS – the docking station for the LTE series laptops had an IDE controller in them and any drives attached could only by accessed via EXTDISK.SYS. I have first-hand experience of this, and this was using MS-DOS 6.20.
I read in Mar 25, 1986 PC Magazine page 191 that FDISK marked the boot partition in some way that only a single drive was installed. Therefore, a second hard drive that was added could not be seen by FDISK and never partitioned or formatted to be turned into D drive. The recommendation was to cable the new drive as C and FDISK and format it while the older drive was installed as D. It would seem to hamper the chances of scrounging up old drives to fill drive bays.
Can anyone confirm that? I tried checking for it but I couldn’t find anything.
Two hard drives and two floppy drives was a common enough install on a 5170. Seagate rates several of the ST-412 drives as needing a peak startup power of 55 watts. Two of them would be no problem with the 192 watt power supply IBM used, especially since IBM used good quality supplies that could be pushed further than others with similar ratings.
@Josh:
All parts of a PC, although clones and not IBM branded, have been sold since more or less forever, and thus there would also had been a marked for used parts. I.E. tinkerers/hobbyists didn’t drive the market for brand new IBM branded hardware, but it drove parts of the market both for clone parts and used IBM branded parts.
IIRC I paid the equivalent of 20 EUR for a used IBM AT MFM+floppy controller in the early 1990’s for my then 286 PC. I think I paid something similar for my 20M “type 13” (IIRC) full height hard disk.
Re power supply: I haven’t had a look at the specs, but if the PSU would handle two full height hard disks then it seems reasonable for it to be able to handle four half height drives.
For someone who had a “fancy” PC in the late 80’s or early 90’s it might seem weird that people tinkered with older lower spec PC parts, but we have to remember that before Windows 3 really took off there weren’t much reason to have anything better than an 8088 with say a 10-20M hard disk unless you ran some special programs that really needed processor performance, like CAD, certain calculations and whatnot. Either a hobbyist tinkering with Turbo Pascal or whatnot, or in a business setting someone doing book keeping, word processing and whatnot, would be fine using an 8088.
“(I’ve never been able to find one of the 5170-068s in the “wild”, the one that came with 256k of memory and no hard drive.)”
Though this reminds me of the CMI hard drives.
We had pc with 3 floppy drives 360k, 1.2m and 1.44m in our lab, but the reasons for that were quite peculiar, so I don’t think it was common.
About the technical side. I think the driver for the secondary controller just cloned the standard floppy bios routines but with base IO port 0x370 instead of 0x3F0. It used the same floppy fields in BDA as the primary controller, perhaps for compatibility. The driver could also share IRQ, but hang after a few files written in that mode, so we had to use different IRQ.
I would think that a 5170 sold without hard disk would likely had been sold for usage in some network application, perhaps?
On the other hand I would think that that would likely had happened at the time IBM had started their PS/2 range.
I don’t think that in 1984 anyone was really buying PC/ATs for network applications, particularly not a model with 256k of RAM.
The 256k and no fixed disk option doesn’t appear to have been very popular. Anyone who was spending that kind of money would spend the extra few thousand for a hard drive.
@MiaM, the market for used parts I don’t think really drove any design decisions about the PC or PC/AT at all.
A 4.77MHz 8088 in the late 1980s was painfully slow. We had a 10Mhz 8086, which was substantially faster, and it was still unpleasantly slow. We had a 20MB drive that got quickly filled up and ended up getting an extra external 40MB drive. This computer cost $7,500 upon release (for the colour monitor version) in today’s dollars. And that didn’t include the cost of the add on hard drive kit.
Workloads were things like word processing, basic accounting / financial apps, and software development using Microsoft C or QBasic. Not exactly anything crazy. The machine came with Windows/286 2.1, but it was really too slow to be usable. On an 8088 it was even worse.
Either an 8088 or 8086 had major problems with running out of RAM, too. It was hard to run larger programs in a debugger.
Our next machine after that (in 1990) was a 16MHz 386SX with 2MB of RAM and a 60MB SCSI drive which was much more pleasant to use for the exact same workloads. It came with PC DOS 5.00, which meant a lot more free conventional RAM. Later we added 4MB of RAM (for a total of 6) and ran OS/2 2.0, which opened up a new world of possibilities: now we could have the printer going and printing documents, newsletters, etc. and use the computer for other things. Likewise, I could be compiling a project and go and do something else, including playing a DOS game or doing something in the Windows 3.0 compatibility box. This beast cost $10,000 in 2025 dollars, although we got it at a bit of discount (that price doesn’t include the monitor).
The machine was also fast enough to run networking software (and had enough RAM that it wouldn’t get in your way). Trying to run networking on an 8088 or 8086 PC was exceedingly painful, mostly because it would chew up way too much conventional memory. We ran IBMPEER on it, which was a “neutered” version of OS/2 LAN Server which only supported 2 nodes. The performance was very good – the remote drive felt almost as fast as local. It was great for running DOS apps, since under OS/2 the networking stack didn’t take up any conventional memory. (This was all done before things like Windows for Workgroups 3.11 existed.)
Such a machine wasn’t really good enough to run 32-bit C compilers, though – trying to build native OS/2 apps on it was just painfully slow. I ended up with a 20MHz 386DX with 8MB in 1993 (and one of those 120MB ESDI drives we keep talking about), which was just barely fast enough to be reasonable for using IBM C Set/2. Keep in mind that machine cost $19,000 in 2024 dollars when it was originally released in late 1989.
The old adapter cards from the 8086 PC weren’t useful in the newer computers. There was no way I wanted to deal with 8 bit adapter cards or horribly slow MFM drives. The 8088 and 8086 PCs ended up being used for basic text editing or given to friends who wanted a family computer.
You know thats kind of funny, when I got my bluescsi for my PS/2 model 60, the firs thing I did was add 6 1gb disks, thinking I may as well max it up.
OS/2 didn’t seem to care, but DOS… yeah not so happy.
I didn’t put much onto it, thinking it must be my imagination, or the idea of someone loading up that many disks in 87/88 would be inconceivable. But now it all makes sense. Time to go through the MS-DOS 4 sources then!
Well, upon further investigation, the IBM PS/2’s compatibility BIOS for MFM/ESDI devices simply will not drive more than 2 drives. It [i]does[/i] support an adapter mapped into the “alternate” range, but it simply reads the POS registers from the first card that’s an MFM/ESDI device to find out the I/O ranges to decide which adapter to talk to (later revisions), tries both ranges and uses the first one that responds (earlier revisions). (The original PS/2 Model 50 compatibility BIOS looks really similar to a PC/AT and seems to only use the primary range – this BIOS was also notoriously buggy and would have data corruption issues or just plain lock up on boot with anything except the earliest MFM controllers.)
Based on booting IBM OS/2 1.3, the ABIOS, on the other hand, dutifully enumerates each device, looks at its POS registers, and will then enumerate more than 2 drives. It looks like the design of the PS/2 Mod. 50 was for everything to start using ABIOS. Kind of wish that had happened… why didn’t the compatibility BIOS just use ABIOS under the hood?
MS OS/2 didn’t seem to use ABIOS at all and instead would directly drive the MFM/ESDI drives.
IBM clearly didn’t care too much about supporting >2 drives until the PS/2 SCSI adapter came out (in 1990) (I mean, try to imagine where you are going to fit 2 ESDI drives – even a PS/2 Model 60 or 80 can’t hold more than 2 full height monsters, and there’d be no reason to have 3 20MB MFM drives when you could just get a 1 60MB ESDI drive.) PC DOS 5.00 came out then, too, and properly supported a BIOS that enumerated more than 2 drives. PC DOS 3.30 or 4.00 simply decides there are no drives installed if the BIOS does that.
It doesn’t crash, or else you wouldn’t be able to boot the older reference disk once 3 SCSI drives were attached.
Another side – the ABIOS for the PS/2 SCSI adapter does present a generic disk interface, but also presented a special ABIOS SCSI interface. It would have been really nice if the PS/2 IML code had restricted itself to using ABIOS instead of the goofy Int 4B compatibility BIOS interface.
Going through Compaq manuals I noticed that Compaq LTE seemed to support the exact same drive expansion scheme, although with IDE only. Thanks for the confirmation that EXTDISK.SYS was indeed used on those machines.
DOS 6.x would not need EXTDISK.SYS in theory… but I assume on the Compaq LTE it did because the system BIOS didn’t expose the secondary IDE controller.
My first guess would be “they didn’t”. What machine and drive specifically are you referring to?
Yes, I believe ASPIDISK.SYS was very similar to EXTDISK.SYS. And like Compaq, Adaptec also shipped their own FDISK and FORMAT utility.
The Adaptec 154xA and maybe even 154xB definitely only supported two BIOS drives, which they called C: and D:, and only the later models had the ability to expose more drives. At the time I thought it rather strange, but I was not aware that DOS in the late 1980s just could not deal with more than two drives at all.
The AHA-154xA Tech Ref says: “The AHA-1540A/1542A BIOS allows the use of 0, 1, or 2 hard disks on the SCSI bus under DOS without a device driver.” They don’t explain why but in retrospect the answer is obvious. The 154xA had the ability to use standard AT disks in addition to SCSI drives, but if the machine already had two AT drives then the SCSI BIOS would not install.
The AHA-154xC manual states: “Under MS-DOS 5.0 or higher, up to seven SCSI hard disk drives can be connected to the AHA-1540C/1542C without additional software. (Older versions of DOS support up to two hard disk drives.)”
Adaptec’s newer and older documentation is clear that for additional drive support in DOS (before 5.0), additional driver (presumably ASPIDISK.SYS) is needed.
PCs with one 5.25″ and one 3.5″ drive were common, and this was well supported by the BIOS implementation. I do not think I have ever come across a PC with more than two floppy drives, but I can see how having both 360K and 1.2M drives (in addition to 1.44M) would be useful (given that the 1.2M drive had trouble writing disks that would then be readable in a 360K drive).
The PC BIOS has always had room for four floppy drives in the BDA. As others mentioned, the original PCs could actually use up to four drives on the same controller, but the AT controller only supported up to two drives.
I briefly used a 20 MHz 286 with Microsoft C 5.1 (that’s software and hardware both from circa 1988). It was a real dog, unbearably slow. It was very clear to me why developers at that time used 20 or 25 MHz 386s if they at all could.
Incidentally Microsoft C 6.0 (1990) was the last Microsoft C compiler that could run on an 8088. The next version, Microsoft C/C++ 7.0 in 1992, required a 386 outright and didn’t even run on a 286 at all. Other compiler vendors also switched to 32-bit compilers around that time. As far as I can tell, it wasn’t necessarily the case that running 32-bit code made the compilers vastly easier to write, but the reality was that no one doing anything resembling professional software development could afford to waste time with anything slower than a 386. So the compiler vendors might as well make their own lives easier and go 32-bit, bypassing both the 64K segment limitation and the real mode memory juggling.
There were several reasons for having a secondary floppy controller and extra floppy drives. Some setups were used for cheap duplication systems for companies that didn’t produce enough software to justify the specialized duplicators. Other uses were for the conversions of data where it was necessary to have direct access to the controller to read or write the necessary formats. Having two drives in each size meant never having to slow down to swap disks.
Microsoft produced new C compilers that didn’t need a 386 even after C 6. The QuickC line had a number of updates in 1990 and QuickC for Windows was in 1991. The high end compilers went 386 sooner since the compiler cost almost as much as a 386 system in 1993.
>I do not think I have ever come across a PC with more than two floppy drives, but I can see how having both 360K and 1.2M drives (in addition to 1.44M) would be useful (given that the 1.2M drive had trouble writing disks that would then be readable in a 360K drive).
Yep, 360k drive was the only way to exchange data with some non-pc hardware. But even then additional floppy drive/controller was just a plan B, first idea was to get separate pc for newer drives which accidentally would also run fortran programs faster 🙂 Unfortunately, the soviet bureaucracy was impenetrable, so we settled for miscellaneous hardware upgrades at the end of the financial year.
Fun fact, the floppy controller was made in (or re-exported from) Canada – a few files that come with it were in french and contained some interesting words like septante, so it was Canada (or less likely) Belgium.
There is nowhere in the standard MBR that such information would be stored. The physical drive number is stored in the boot sector, but it’s not obvious to how it would cause the problems described in the article.
The article sadly does not mention which DOS version this was about. Most likely DOS 3.1, but it could have been 3.2. And if it was some OEM version of MS-DOS then anything is possible, because the OEM could (or had to) supply their own FDISK and MBR. I can’t judge how likely it is that the author was talking about PC DOS versus some OEM version.
ETA: Definitely can’t reproduce with PC DOS 3.1. FDISK/FORMAT with single drive went fine, after adding another drive FDISK had no trouble seeing it and partitioning it.