https://www.os2museum.com/wp/the-dual-drive-ide-hell/ OS/2 Museum OS/2, vintage PC computing, and random musings [os2floppy] Skip to content * Home * About + Wanted List * OS/2 History + OS/2 Beginnings + OS/2 1.0 + OS/2 1.1 + OS/2 1.2 and 1.3 + OS/2 16-bit Server + OS/2 2.0 + OS/2 2.1 and 2.11 + OS/2 Warp + OS/2 Warp, PowerPC Edition + OS/2 Warp 4 + OS/2 Timeline + OS/2 Library o OS/2 1.x SDK o OS/2 1.x Programming o OS/2 2.0 Technical Library + OS/2 Videos, 1987 * DOS History + DOS Beginnings + DOS 1.0 and 1.1 + DOS 2.0 and 2.1 + DOS 3.0, 3.1, and 3.2 + DOS 3.3 + DOS 4.0 + DOS Library * NetWare History + NetWare Timeline + NetWare Library * Windows History + Windows Library * PC UNIX History + Solaris 2.1 for x86 - Drive Price Mystery The Dual-Drive IDE Hell Posted on August 25, 2021 by Michal Necasek I have perhaps inaccurate but very strong memories from my PC-building days (in the early to mid-1990s) that one of the most failure-prone and frustrating endeavors was trying to get two IDE drives working together on a single cable as a master/slave pair, or as Device 0/1 in the language of the ATA Standard. It's not that it was fundamentally impossible... but it was insanely random and unpredictable. No one could tell in advance whether any given pair of IDE drives would work. Mixing drive vendors seemed to increase the likelihood of failure, but using two drives from the same vendor was by no means a guarantee of success. [yH5BAEAAAAALAAAAAABAAEAAAIBRAA7][P8090054-640x480]Various jumpers used for configuring IDE hard disks There were two major reasons for why this was the case: * The whole thing started out as a giant hack, pretending that two separate IDE drives are really two drives attached to a single AT style controller. * The vast majority of IDE users only ever had one drive, thus not putting enough pressure on IDE vendors to get their act together. Eventually, by the late 1990s, things did work reasonably well. The key ingredient was cable select and (barely) special cables which allowed all drives to be configured identically and work as either master or slave depending on their cable position. This was not exactly a revolutionary concept; PC floppy drives and ST506 interface hard disks used the same idea, using a twist in the cable, since the early 1980s. But floppy and ST506 drives were much simpler to deal with: The controller had two (or in theory four) drive select lines to work with, and each drive responded only when selected. In the IDE world, things were much trickier because the two drives had to share the same I/O interface including hardware registers and interrupt lines, and therefore had to carefully cooperate to decide which drive should be responding to register accesses and how. But it was even more complicated than that. To behave correctly, Device 0 has to act differently depending on whether Device 1 is present; if Device 1 is present, Device 0 has to let it respond to register accesses directed to it, but if there is no Device 1, then Device 0 has to respond to simulate a two-drive controller with no second drive attached. The worst case is an IDE channel configured with only Device 1, because Device 1 has no way to know whether Device 0 is present, and therefore cannot respond for it. This scenario can be made to work, and it was somewhat common with ATAPI CD-ROMs, but host software has to be prepared to deal with it. The way dual-drive IDE works is careful coordination between Device 0 and Device 1, hinging on the drive/head register (at I/O port 1F6h for standard primary IDE, 176h for secondary). In brief, both drives respond to register writes, but only the selected drive responds to writes to the command register. For read access and command register writes, only the selected device responds; in addition, Device 0 also responds for Device 1 when it knows there is no Device 1. This carefully choreographed dance is also why seemingly trivial command overlapping can't be done with IDE: The host cannot change the selected device while a command is executing (BSY or DRQ bits set in the status register), because this could lead to a situation where both drives believe they are active and both might respond to register reads or both try to deliver data, with predictably unpleasant results. Configuration In the early days of IDE, configuration was done solely through jumpers. There were typically three distinct settings, not just two: Master, slave, and single drive. (As an aside, the ATA standards used the Device 0/1 terminology from the beginning, while the drive industry stuck with the master/slave terminology for a very long time.) The separate master vs. single settings were needed because there was not yet a standardized way for Device 0 to recognize the presence of Device 1, yet Device 0 needed to behave differently depending on whether Device 1 was there or not. The original ATA standard defined a protocol using the DASP- and PDIAG- signals which allows Device 1 to advertise its presence (DASP-) and report whether its diagnostics passed (PDIAG-). Of course pre-standard drives didn't necessarily support this protocol. Many early IDE drives therefore had jumper settings that told the drive configured as Device 0 whether it should expect an ATA-compliant Device 1. This is perhaps one of the best examples of a setting that makes perfect sense to engineers yet is worse than useless to users: They have no way to tell whether a drive they're trying to connect is ATA-compliant or not. As a real world example, consider the configuration jumpers on Quantum ProDrive AT disks. These were all drives sold in the early 1990s; not only did Quantum change the jumpers on the drives several times (though not nearly as much as some other vendors), the drive behavior also clearly changed. That resulted in a fairly complex settings matrix just for Quantum's own drives, with intricate details such as "Use the SS jumper alone only when the PD40/80 firmware EPROM is 7.0 or greater, otherwise use the DS jumper." When a Quantum drive shared an IDE channel with another manufacturer's hard disk, in many situations Quantum offered two possibilities of jumpering the Quantum drive, with no hint as to how one should choose the correct configuration. Example: WD93044-A The WD93044-A (made in 1990) is a good example of how such an early IDE drive may be configured. It has a block of three jumpers. When no jumpers are present, the drive is configured as the single drive in a system. Then there are separate jumpers for master and slave configurations. And finally there is another jumper for "installation with a pre-existing Conner CP342 drive". The documentation says: Configure the [WD93044-A] intelligent storage peripheral as the slave. Install jumpers on the J8 connector as shown below. The Conner drive must be configured as the master. This configuration presumes that you will use the LED on your WD93024-A or WD93044-A. However, if the host system requires a front panel LED, then configure the WD93024-A/44-A as the master and the Conner drive as the slave. Say what?! That's just stupidly complicated. And what if the drive is a Conner CP341 or CP344? Does the WD drive need to be set up the same way, or differently? And what does it have to do with LEDs? The last question at least has an answer: The DASP- signal, in the words of the ATA standard, is "a time-multiplexed signal which indicates that a drive is active, or that Drive 1 is present". Except, of course, it's only time-multiplexed on ATA-compliant drives, not necessarily on pre-standard IDE drives such as the Conner CP342. The single vs. master setting makes a visible difference to software with the WD93044-A drive. When it is jumpered as a master but there is no other drive, the WD93044-A waits about 5 seconds after a reset or EXECUTE DRIVE DIAGNOSTIC before it considers the slave drive to have failed. In addition, whenever Device 1 is selected, register reads return with all bits set because there is nothing responding. This leads to a situation where Device 1 may appear to be permanently busy, potentially severely confusing the host if it won't switch away from Device 1 while it is busy (which it shouldn't). When the WD93044-A is jumpered as a single drive and Device 1 is selected, the status register reads as zero (indicating a drive that is not ready but also a controller that is not busy), which is consistent with an AT style disk controller with no second drive attached. Jumper Zoo Just to make things even more difficult, sometimes there is another complication: You have a drive, you know how it should be configured, but don't have the right jumper. "Modern" drives (circa mid-1990s and later) almost uniformly use either classic Berg connector style jumpers with 2.54mm (1/10'') pitch and 0.64mm (1/40'') wide square pins, or smaller jumpers with 2.0mm pitch and 0.5mm pins. But there are also drives which cleverly combined the two standards for 2.54mm pitch and 0.5mm pins, and those don't work with either of the standard jumper types. Circa 1990 Conner and Quantum drives are known to have used these mongrel jumpers, and I failed to find any source of these jumpers in modern times, other than cannibalizing old drives. Some drives (e.g. early 1990s IBM) also used jumpers that have the standard 2mm pitch but are very short, and cannot be used with typical jumpers. But the matching jumpers at least can still be sourced nowadays. On WD's connector diagram, pin 39 is labeled as "-ACTIVE". An Afterthought? Reviewing the initial high-level IDE description (a paper presented by Ken Hallam of WD at BUSCON East conference in Sep/Oct 1986) shows that there was no mention of attaching two IDE drives on a shared cable. Only the typical case with a single drive was considered. Pin 39 on the IDE connector was labeled "-ACTIVE" in the WD definition. The very first IDE hardware, Western Digital's WD1003-IWH adapter board, clearly reflects that thinking and allows attaching one ST506 style drive to an IDE connector. For this early implementation, two drives made no sense either logistically or in the intended use case (portable PCs with no room for second drive). The Compaq DeskPro 386 Technical Reference (Sep 1986) is rather more interesting. In the chapter describing the fixed disk adapter, pin 39 is again labeled "ACTIVE-", and described as follows: Active-low signal indicating that the fixed disk drive LED indicator is on and the fixed disk drive is being accessed. But in the chapter describing the drives (in this case, a CDC Wren II with an IDE controller), we learn that the drives have a jumper that "designates the drive as C: or D:", and a diagram shows two drives connected. Pin 39 is labeled "SLAVE PRESENT-" and described as follows: Active-low signal indicating to the host that a second drive is present. Not only does this contradict the documentation of the connector on the adapter board that the drive is attached to, it doesn't even make any sense. The "slave present" signal doesn't indicate anything to the host, since the host has no way to read its value; it indicates the presence of a second drive to the other drive which needs to be aware of it. It is possible or even likely that the option of connecting two IDE drives together was an afterthought, not initially considered when the IDE connector was specified. At the same time it clearly occurred to someone back in 1986 that it is possible, as long as the two IDE drives cooperate. The Compaq 80286-Based Products Technical Reference from May 1987 reflects the evolving IDE definition. Pin 39 is labeled as "DASP-" (Drive Active/Slave Present) and described as follows: Time-multiplexed signal that indicates drive active or slave present. When the drive is executing a diagnostic command, this line is an output from a slave drive, and an input to the master drive indicating that a slave drive is present. At all times other than during diagnostics, this line is an output from both master and slave drives which is active when the drive is selected and being accessed (BSY is active), and is used to drive an activity LED indicator. This signal must be an open-collector output. The May 1987 Tech Ref also shows jumper settings for both CDC and Conner IDE drives, and clearly indicates that it was possible to use two Conner or two CDC drives. It is not clear from the Tech Ref if it was possible to mix CDC and Conner drives on the same cable; the text suggests that it perhaps wasn't. It is notable that the CDC drives were clearly capable of detecting the presence or absence of a second drive, and thus only needed one jumper because there was no separate "single" and "master" setting. On the other hand, the Conner drives were different and required separate single/master jumper settings (and used three jumpers). It is plausible that the CDC drives used the DASP protocol from the very beginning and Conner drives did not. At any rate, the mess and confusion is clearly as old as IDE itself. This entry was posted in IDE, PC hardware, PC history. Bookmark the permalink. - Drive Price Mystery 4 Responses to The Dual-Drive IDE Hell 1. [yH5B][c90f] Xelloss says: August 25, 2021 at 11:51 pm I must have been especially lucky, because in 1995 I added a Maxtor 245 MB drive to my system (sporting a Conner 41 MB drive) and the two worked together like a charm. I don't remember which of the two I set as a slave: the only thing I know is that I had no configuration manual for the smaller drive. IIRC, the Maxtor drive used the same jumper configuration for "master" and "single". Cable select was also possible, but I didn't have a compatible IDE cable... 2. [yH5B][8f7d] Michal Necasek says: August 26, 2021 at 10:58 am By 1995, drives were probably smarter about working with different kind of slave devices. At any rate it was always a lottery, not that it was impossible to hook up two drives together but it was much more complicated than it should have been. And configuration information was much harder to find back then, too. Most manufacturers eventually figured out that it's best to reduce the number of options and put the instructions on the drive itself. Not sure who did that first, but I'm pretty sure it took years, I've never seen any early IDE drive with much of a hint as to how it should be configured. It didn't help that many of the early IDE systems like the Compaq portables didn't really support two IDE drives because there was no room for them. The original WD IDE paper never mentions the possibility of a second drive on the same cable either. Then again the Compaq DeskPro 386 Tech Ref from September 1986 is clear that it was possible to attach two IDE drives. However, this was always a function of the drives and not the host system. I added a section to the article describing the early history of dual IDE drives. 3. [yH5B][63de] Richard Wells says: August 26, 2021 at 9:19 pm A rather lengthy explanation of how the multiple IDE drives worked in practice is at https://www.t10.org/pipermail/t10/ 1994-January/000435.html The most relevant section is "Another "feature" of the MFM type controller was that if there was only one drive, a master, and the host selected the non-existant slave drive, all of the drive status bits would be zero (because there was not drive to assert any of the these bits). In the ATA world, this means that the master must respond with status of 00H if the non-existant slave drive is selected." That seems to explain the benefit of having a single drive setting. There are other benefits to the single drive setting like reduced polling and being able to ignore spurious noise on pins that won't be used in a single drive configuration. A long ribbon cable with few ground wires is a prime subject for interference from noise. The decision to reduce the pin count from MFM's 44 to IDE's 40 while adding functionality meant something had to give. MFM giving each of the four hard drives its own data cable ameliorated many of the potential problems. If two drives mistakenly respond to a command, the controller could simply ignore data sent by the wrong drive. The T10 email archive only goes back to 1994. Great if one wants to observe the early evolution of ATAPI but a bit late for the early days of IDE. 4. [yH5B][41b1] Chris M. says: August 26, 2021 at 11:27 pm I always wondered why Western Digital had that "Single" jumper setting, now I know. Yet the only vendor that kept the "Single" position around was Western Digital. That photo of jumpers triggers me. I hated those little stubby ones like the grey one above. Tons of SCSI drives used them for some reason and those were more jumper hell than the IDE drives! Also, I have never come across a properly working cable for "cable select". All the drives in my systems and that I serviced over the years as a tech were all jumpered for master/slave. SATA finally spared everyone from that mess, but it took WAY too long to show up. Leave a Reply Cancel reply Your email address will not be published. Required fields are marked * [ ] [ ] [ ] [ ] [ ] [ ] [ ] Comment [ ] Name * [ ] Email * [ ] Website [ ] [Post Comment] [ ] [ ] [ ] [ ] [ ] [ ] [ ] [ ] This site uses Akismet to reduce spam. Learn how your comment data is processed. * Archives + August 2021 + July 2021 + June 2021 + May 2021 + April 2021 + March 2021 + February 2021 + January 2021 + December 2020 + November 2020 + October 2020 + September 2020 + August 2020 + July 2020 + June 2020 + May 2020 + April 2020 + March 2020 + February 2020 + January 2020 + December 2019 + November 2019 + October 2019 + September 2019 + August 2019 + July 2019 + June 2019 + May 2019 + April 2019 + March 2019 + February 2019 + January 2019 + December 2018 + November 2018 + October 2018 + August 2018 + July 2018 + June 2018 + May 2018 + April 2018 + March 2018 + February 2018 + January 2018 + December 2017 + November 2017 + October 2017 + August 2017 + July 2017 + June 2017 + May 2017 + April 2017 + March 2017 + February 2017 + January 2017 + December 2016 + November 2016 + October 2016 + September 2016 + August 2016 + July 2016 + June 2016 + May 2016 + April 2016 + March 2016 + February 2016 + January 2016 + December 2015 + November 2015 + October 2015 + September 2015 + August 2015 + July 2015 + June 2015 + May 2015 + April 2015 + March 2015 + February 2015 + January 2015 + December 2014 + November 2014 + October 2014 + September 2014 + August 2014 + July 2014 + June 2014 + May 2014 + April 2014 + March 2014 + February 2014 + January 2014 + December 2013 + November 2013 + October 2013 + September 2013 + August 2013 + July 2013 + June 2013 + May 2013 + April 2013 + March 2013 + February 2013 + January 2013 + December 2012 + November 2012 + October 2012 + September 2012 + August 2012 + July 2012 + June 2012 + May 2012 + April 2012 + March 2012 + February 2012 + January 2012 + December 2011 + November 2011 + October 2011 + September 2011 + August 2011 + July 2011 + June 2011 + May 2011 + April 2011 + March 2011 + January 2011 + November 2010 + October 2010 + August 2010 + July 2010 * Categories + 286 + 386 + 3Com + 3Dfx + 486 + 8086/8088 + Adaptec + AGP + AMD + AMD64 + Apple + Archiving + ATi + BIOS + Books + Borland + BSD + Bugs + BusLogic + C + C&T + Cirrus Logic + CompactFlash + Compaq + Compression + Conner + Corrections + Creative Labs + Crystal Semi + Cyrix + DDR RAM + Debugging + DEC + Development + Digital Research + Documentation + DOS + DOS Extenders + Dream + E-mu + Editors + EISA + Ensoniq + ESDI + Ethernet + Fakes + Fixes + Floppies + Graphics + Hardware Hacks + IBM + IDE + Intel + Internet + Keyboard + Kryoflux + Kurzweil + LAN Manager + Legal + Linux + MCA + Microsoft + MIDI + NetWare + Networking + NeXTSTEP + NFS + Novell + NT + OS X + OS/2 + PC architecture + PC hardware + PC history + PC press + PCI + PCMCIA + Pentium + Pentium 4 + Pentium II + Pentium III + Pentium Pro + Plug and Play + PowerPC + Pre-release + PS/2 + QNX + Random Thoughts + RDRAM + Roland + Ryzen + S3 + SCO + SCSI + Seagate + Security + Site Management + SMP + Software Hacks + Solaris + Sound + Sound Blaster + Source code + Storage + Supermicro + TCP/IP + ThinkPad + Trident + UltraSound + Uncategorized + Undocumented + UNIX + UnixWare + USB + VGA + VirtualBox + Virtualization + VLB + Watcom + Wave Blaster + Western Digital + Windows + Windows 95 + Windows XP + Wireless + WordStar + x86 + Xenix + Xeon + Yamaha OS/2 Museum Proudly powered by WordPress.