Vintage PC pages
Home -> Vintage PCs -> Floppy Drives

More Than Two Floppy Drives

While it is possible to get more than two floppy drives onto PCs, it's not always easy. This document discusses why, and describes various pitfalls you may encounter.

History

Before IBM invented the PC, the standard Shugart floppy interface allowed four drives to be connected on one cable:

[Shugart cable]

Each drive would have switches or jumpers telling it which drive select line to use, and the motors on all the drives were controlled by a single wire.

When IBM built their first PC, they didn't think the power supply was up to having all the drive motors running at once, so they designed a system with separate motor control for each drive. A twist in the cable between drives B and A means that each drive sees a different motor control signal. As a consequence of this, you can only have two drives on a cable, rather than four.

[IBM 4-drive system]

Since the floppy controller still supports four drives, IBM gave it two connectors - one for the first two (internal) drives, and one for the second two (external).

The other change is that all the drives have to have their switches set as drive 1, since the drive select wires are now always on that pin. Modern 3.5" drives are hardwired for this, and so can't be used as drive A on systems without twisted cables.

Although the original IBM controller still supported four drives, most clones dropped the external socket, and what we're left with is this:

[IBM 2-drive system]

(Some cables have the drive A: connector in the middle, with a twist either side of it:

[Another IBM 2-drive system]

Electrically, it comes to the same thing).

A few clones, such as the Amstrad PCs, keep the Shugart interface but don't connect up the other two drive select lines, leaving you with a system like this:

[Amstrad 2-drive system]

Hardware

To get hardware that supports three or more drives, you will need either:

A 4-drive floppy controller

The most obvious example of this is the one in genuine IBM PCs and XTs, with the external drive socket. However, this controller does not support high-density (1.2Mb and 1.4Mb) drives. A 1.4Mb drive can be used, but it will only work with 720k diskettes. A 1.2Mb drive can't be used at all.

The most versatile solution is a dedicated 4-drive floppy controller. This will most likely have its own BIOS, and support for up to 1.4Mb drives (some can even support the very rare 2.8Mb sort). These controllers will have internal connectors for two cables.

Some Future Domain SCSI controllers (such as the TMC-885 and the TMC-1680) also have two internal floppy connectors. Although the second one is probably intended for use with a tape drive, it works fine with floppy drives. The TMC-870 actually has BIOS support for the extra floppies, but only in 5.25" drive capacities - 360k or 1.2Mb.

Some DTC SCSI controllers also support extra drives. The 8-bit controllers, such as the 3250, use a single cable with two twists in it to support three drives on one controller. The 16-bit 3280 and 6280 can optionally use the Shugart arrangement to support four drives with an untwisted cable.

If you have a computer with its floppy controller on the motherboard, then make sure this can be disabled. If it can't, then the 4-drive controller must be configured as a secondary controller - see below.

A secondary floppy controller

A two-drive or four-drive controller can be added at a different I/O address. Normally it will still use the same IRQ and DMA settings as the main controller; sometimes it will have its own.

Most dedicated floppy controllers don't support having their I/O address changed, though some supplied as part of 16-bit I/O cards (the sort of thing that has one IDE, one floppy, one parallel, one serial) do. Make sure you find one which does.

Both of the above

By removing or disabling any existing controller, and adding two four-drive controllers, it is theoretically possible to get eight floppy drives into a PC. You'd need a big case, though.

SCSI and floppy

SCSI floppy drives exist. In particular, the Iomega or Insite Floptical drive (combined with a suitable SCSI controller, such as the Rancho RT1000 or the Adaptec 1542CF) can appear as a third floppy drive (usually, the Floptical becomes the boot drive and other drives in the system get pushed down the pecking order). It should be possible to use any combination of Floptical and floppy drives, up to a total of four drives in the system.

There are other SCSI floppy drives, such as the TEAC FC-1, but they tend to be designed for UNIX workstations rather than PCs, so drivers are thin on the ground. They probably wouldn't have the BIOS-level compatibility of the Floptical either.

Catweasel

The Catweasel floppy disk controller is a specialised controller allowing lower-level access to a diskette than the normal PC floppy controller. Among other things, it can read and write diskettes in Commodore Amiga format.

Each Catweasel supports up to two floppy drives and the supplied drivers for DOS support up to four of them at a time. You can therefore add another eight drives by this method; note, however, that they can only be accessed by specialised software.

Other options

It's also possible to connect floppy drives by other means.

It is unlikely that you'll be able to get most of these to work on a vintage PC (though parallel port drives may be a possibility). I won't discuss them further.

Two Drive Monte

If you don't want to use more than two drives at a time, then it's possible to rig up a cable-and-switch arrangement that allows you to have two (or more) drives in one position.

[IBM 3-drive circuit]

One way to do this in practice is to crimp a connector onto the cable, and cut line 12 (Drive select) either side of it. Then connect line 12 (from the controller) to the common terminal of an SPDT switch, the line 12 from the new connector to one of the other terminals, and the line 12 from the original connector to the third.

Another way is to crimp extra connectors on the cable, as before, and replace the selection jumpers on the two drives with wires running to a DPDT switch, set up so that one drive is always switched in and the other is always switched out:

[IBM 3-drive circuit]

A third might be to configure a drive as Drive 3, and set up your SPDT switch so that the common terminal goes to controller line 12, and the other two go to cable lines 12 and 6. Line 6 (drive select 3) does not appear to be used on PC floppy controllers or drives.

[Another 3-drive circuit]

Disclaimer: I have not done any of these, and anything you do to your drives is at your own risk.

At least one drive was sold which incorporated this switching feature. It was an external drive, which connected between the original floppy cable and an internal floppy drive. A switch on the back controlled whether the drive handled the select signal itself or passed it through to the original drive.

The BIOS

There are three separate things that the BIOS can do with floppy drives:

  1. Tell operating systems how many drives there are.
  2. Tell operating systems what type the drives are.
  3. Actually work the floppy drives.

Most operating systems depend on the first two functions, even if they then provide their own drivers after booting. Some provide mechanisms to override what the BIOS says - some don't.

A dedicated 4-drive controller card will often contain its own BIOS, providing all of these functions. Similarly, the BIOS on a genuine IBM PC or XT supports four drives, though it assumes they're all 360k or less. But if the controller doesn't provide a BIOS, and the main BIOS in your PC doesn't support more than two drives, additional software will be needed.

Note that some modern PC BIOSes only support one floppy drive. Cheapskates.

Support in DOS

As long as the BIOS supports extra drives, DOS is able to override its drive count and drive type settings. The commands go in CONFIG.SYS:

DRIVPARM

If the BIOS is right about the number of drives, but is wrong about their types, then DRIVPARM can override the type of an existing drive. Add a DRIVPARM command to CONFIG.SYS:

	DRIVPARM=/D:drive /F:format (other options)

DRIVER.SYS

If one or more drives are present, which the BIOS can support but for some reason hasn't included in the count, then DRIVER.SYS can be used to add them to DOS's list of drives. The command is very similar to DRIVPARM:

	DEVICE=C:\DOS\DRIVER.SYS /D:drive /F:format (other options)

One use for DRIVER.SYS is on an IBM PC which has one internal floppy drive and one external floppy drive. Because of the way the controller connectors are set up, these drives would be numbered 0 and 2 - so the motherboard DIP switches would have to be set up for 3 drives, and programs might have trouble getting at the (non-existent) drive 1.

If, instead, the motherboard switches are set for a single drive, DRIVER.SYS can be used to bring the external drive into the system without having to set up an imaginary second internal drive. Plus, if the external drive is later detached, you don't have to open the case up and fiddle with DIP switches - you just remove the appropriate line from CONFIG.SYS. Under MSDOS 6 or DRDOS, you could even use a CONFIG.SYS menu.

Another use for DRIVER.SYS is to assign two drive letters of different capacity to the same drive; this is what you'd do to support the "insert a switch into the cable" methods listed above. Say you've attached an alternate drive and a switch, so that the A: drive can either be a 720k 3.5" drive or a 360k 5.25" drive. And say it's set up in the BIOS as a 360k drive.

	DEVICE=C:\DOS\DRIVER.SYS /D:0 /F:2

will add an extra drive letter (for example, D:). When you try to access this extra drive, you will be asked to insert the disk for D: and press a key. Before pressing the key, flip the switch so that drive A: is switched out and the alternative drive is switched in.

Drive Lettering

Rolf Hemmerling describes the order in which drive letters are allocated. Briefly, MS-DOS 3.3 and earlier do all the floppy drives first, then all the hard drives; so you could have a system with floppies A: B: C: D: and then hard drive E:. Later versions (MS-DOS 4.0 up) allocate floppies A: and B:, then the hard drives, and then the remaining floppies (so you'd end up with floppies A: and B:, then hard drive C:, then floppies D: and E:).

DR-DOS 7.01 behaves like MS-DOS 6. DR DOS 6.0 behaves like MS-DOS 3.3, as does CP/M-86.

Extra DOS programs

For drives not supported by the BIOS (either drives 2 and 3 on the primary controller, or any drives on a secondary controller) you would need a driver that talks to the hardware. One such is SDRIVE.SYS, which can be found in the EXSYS driver pack at http://www.pop-brb.de/download/treiber/exsys/ide.zip.

Another option is DC2.SYS, which adds BIOS support for drives 2 and 3. After DC2 has been loaded, DRIVER.SYS must be used to give the new drive a letter. So, for example:

DEVICE=\PATH\TO\DC2.SYS /type2 /type3
DEVICE=\PATH\TO\DRIVER.SYS /D:2 /C /F:type2number
DEVICE=\PATH\TO\DRIVER.SYS /D:3 /C /F:type3number

The drive types for the DC2 line are /360, /720, /1.2 and /1.44. Which is (strictly speaking) incorrect, since 1440k is 1.41Mb not 1.44Mb.

I know of nowhere where you can download DC2.SYS, and since it's copyrighted software I can't offer it for download on this site.

As a method of last resort, you can use ANADISK to read raw sectors from drives not supported by the BIOS. ANADISK drives the hardware directly, and can be used to verify that the drive is working even if your BIOS, DOS and driver combination refuses to see it; use ADCONFIG to set up the drive configuration.

Other operating systems

Vintage OSes (CP/M-86, DOS Plus and so forth) will support the extra floppy drives if the BIOS supports them. There is no DRIVPARM or DRIVER.SYS equivalent which will allow you to override the BIOS.

Windows 95 will grudgingly support more than two floppy drives, providing that the BIOS detected them. The third and fourth drive run in "MS-DOS compatibility mode".

According to article 268084 in the Microsoft Knowledge Base, Windows 98 won't boot on a system with more than two floppy drives. I've tried on two PCs; on one, it did boot and behaved exactly like Windows 95, while on the other it crashed as described. This probably covers Windows ME as well.

Windows NT (versions 3.1, 3.51, 4.00 and 2000) will support more than two floppy drives. Like MS-DOS, it gives the third and fourth drive letters after the hard drives. Whether this works in more recent versions of NT (XP, Win2003 server) I don't know. It is possible (using Disk Administrator) to change the letters used by the hard drive(s). If you move the hard drive down to E:, then the floppies will take A:, B:, C:, etc. But note that changing the letter of the system drive is not a recommended procedure. It's not so bad on NT 3.51, but NT 4 has drive letters hard coded in the Registry (wow, that was sensible) and some of the NT 3.1 control panels seem to assume that drive C: is a hard drive.

Linux supports two controllers with up to four drives on each controller (though the controllers have to share the same IRQ and DMA setting). To set up the extra drives, you have to pass their types as parameters on the kernel command line. See /usr/src/linux/Documentation/floppy.txt.

System-specific information

External to Internal Connector

It is possible to convert the IBM external drive port to an internal one, thus allowing an IBM PC or XT to have four internal floppy drives (any hard drive would have to be in the form of a hardcard, since 4 floppy drives take up all available bays).

To do this, you will need an IDC 37-way male D connector, an IDC 34-way cable-mounted socket, and about 10cm of 34-way ribbon cable. First pass the cable through one of the holes in the back of the PC (there's a circular push-out on the original 5150, and a square push-out on the XT). Then crimp the 37-way connector onto the cable. The side without the coloured stripe should be flush against the side of the connector; the side with the stripe should have a three empty slots before the first wire (pin 21 on the connector corresponds to wire 1 on the cable, and pin 3 on the connector corresponds to wire 2 on the cable, and so on). When you have attached the connector, plug it into the external drive socket to check that the wire is long enough.

Finally, attach the cable socket to the other end of the ribbon cable, and plug a normal floppy drive lead into it.

Internal to External Connector

It should be possible to reverse the above process (using a 37-way female D connector and a 34-way IDC plug) so that external drives can be connected to a computer with only an internal socket. I have not yet created such a system.


John Elliott 4 June 2006

My thanks to Chuck Guzis for details of DTC SCSI controllers.