Learn Something Old Every Day

More or less by accident I found myself writing a very basic DOS utility to read data off of an IDE drive. It started out by just issuing the IDENTIFY DRIVE command and capturing the data, but adding the ability to read sectors was not difficult.

In case that sounds pointless, it kind of is, except it allows me to attach a secondary IDE channel to an old 486 board whose BIOS only supports primary IDE. Thus the secondary channel is open to experiments without any BIOS interference. And this kind of setup lets me work with drives that for one reason or another do not work with a semi-modern system, including broken drives that may not be able to read/write at all but still have functioning electronics.

Once I got as far as identifying and reading old IDE drives, I realized that it’s not too difficult to extend the code to work with pre-IDE drives. The catch is not relying on IDENTIFY DRIVE but instead manually supplying the drive geometry. Once that was done, the rest of the code worked unchanged with my ancient Seagate ST-225 drive (by the way, that drive is now 35 years old and still can be read with no bad sectors).

Well… the code almost worked.

Continue reading
Posted in Documentation, PC hardware, PC history, Seagate, Storage | 3 Comments

Dirty Work

As I’m slowly archiving my giant pile of floppies, I naturally come across specimens that have one kind of problem or another. After going through hundreds of floppies, I can safely say that 3½″ floppies are much less prone to mechanical damage thanks to their hard shell. 5¼″ floppies, due to their flexible nature, are much more likely to get bent or dented when they’re improperly stored, and after decades they don’t unbend easily. The surface may also be slightly more prone to damage since it is exposed when the floppy is removed from its dust jacket.

Yet despite the protective shutter, some people managed to get even 3½″ floppies dirty, as seen in Exhibit A:

A speck of dirt on floppy surface

I don’t know what the dirt is; perhaps it used to be food, at any rate it appears to be something previously sticky that hardened with time. How much trouble can a speck of dirt like that cause?

Continue reading
Posted in Archiving, Floppies | 5 Comments

Centaur Close-ups

Readers have expressed interest in seeing what exactly a Western Digital ‘Centaur’ drive looked like. I took a few photos of a WD95044-A drive, the larger capacity (40 MB) and newer variant of the WD Centaur family. Some photos were taken with the PCB removed in order to show what the chips on the PCB look like and what the drive chassis looks like without the PCB covering it.

Here’s what the drive looks like:

A late 1990 WD Centaur model WD95044-A

Its tank-like appearance is nothing like WD’s very modern Caviar drives. The Centaur looks like a mid-1980s drive, not something made at the end of 1990.

WD950440-A drive lid

The top of the drive shows an old-school defect table, but with no defects listed. It’s not clear if that just means this particular drive had no defects or if the drive’s IDE controller remapped them; either is plausible.

Continue reading
Posted in PC hardware, PC history, Storage, Western Digital | 4 Comments

Recalibration Needed

The OS/2 Museum recently acquired two horribly slow old Western Digital IDE drives model WD93044-A. These were WD’s first foray into IDE hard disks, combining a rather outdated Tandon RLL drive chassis (3.5″ half-height stepper drives) with WD’s own controller chips.

An antique Western Digital IDE drive (1990)

One of the drives was rattling suspiciously so I set it aside. The other seemed to work just fine and apart from one bad sector, didn’t really exhibit any issues. I was able to use it in Linux through a Promise PCI IDE controller (and run ddrescue on it).

About three weeks later, the drive just wouldn’t work with the same Linux machine. It was not recognized by the Promise IDE controller and it was not recognized by Linux. It spun up just fine and made some kind of brief noise during detection, but was never found.

At this point I got very uncertain about which drive had been working before and plugged in the other drive. It was detected just fine, but ddrescue somehow found more errors than last time. I went back to photos I took initially and ascertained that the now-working drive was the one with the weird rattle that I hadn’t tested before, and the not-detected drive was definitely the one that worked not long ago. What happened there?

Continue reading
Posted in Bugs, IDE, Western Digital | 32 Comments

Can This Conner Talk?

As part of research into the IDENTIFY DRIVE command, the OS/2 Museum acquired two old Conner IDE drives, a CP-342 and a CP-341i. These drives look extremely similar at first glance, and they’re both 40 MB IDE drives, but on second look their PCBs are significantly different.

Conner CP-342 (left) and CP-341i, both made in 1989

I believe the CP-342 is an older design and very similar to Conner’s original Compaq-specific model, the CP-341. The CP-341i is clearly newer and more capable. While the CP-342 is built around the Adaptec AIC-010 and AIC-270 chips, the CP-341i uses Cirrus Logic chips (in this case CL-SH260 and SH110), just like many other early 1990s Conner drives.

When I successfully unlocked a Seagate drive through a serial terminal attached to it, a reader commented that the ability to more or less directly attach a serial terminal to a production drive is something that Seagate inherited from Conner. That obviously got me wondering: Is it possible that the first Conner drives from 1987 or 1988 would already have this capability?

Continue reading
Posted in Conner, Debugging, Hardware Hacks, Storage | 19 Comments

OS/2 6.304: Who Has More?

Yet another interesting item that I recently ran through a Kryoflux is a set of 30 floppies labeled “IBM OS/2 Version 2.0 Pre-release Evaluation Copy – 6.304”. In this case, there’s no mystery as to what it is: 6.304 was the last beta of OS/2 2.0 released in February 1992, very shortly before the official GA release of OS/2 2.0. Very late in the game, this pre-release among other things introduced a new storage subsystem with familiar DMD and ADD drivers.

IBM OS/2 2.0 Pre-release 6.304 (1992, fragmentary)

The trouble with this disk set is that it’s very incomplete. My estimate is that there should have been 32 disks in the set, possibly a little more. I have thirty, so it should be almost complete… except it’s not at all because a) there are duplicates of several floppies, and b) some of the floppies had been overwritten a long time ago.

Continue reading
Posted in Archiving, IBM, OS/2, Pre-release | 8 Comments

EISA Specification 3.1

While researching the Compaq Intelligent Drive Array (IDA), a circa 1990 EISA-based IDE RAID controller, I quickly established that there’s very little surviving information about it, and most of what there is can be found in two or three patents that Compaq filed around 1989.

The most relevant of the patents was filed as “Bus master command protocol”, but somehow ended up getting renamed to “Method for controlling disk array operations by receiving logical disk requests and translating the requests to multiple physical disk specific commands”, now US Patent 5,249,279. The text includes an interesting statement: “The EISA specification Version 3.1 is incorporated as Appendix 1 to U.S. Pat. No. 5,101,492 to Schultz et al., and is hereby incorporated by reference”. Only US Patent 5,101,492 is nowhere to be found.

But further searching led to European Patent EP0426184 titled “Bus master command protocol”, which does in fact include the entire 435-page EISA 3.1 specification as an appendix.

The patent is long expired, the information within it is now in the public domain, so I took the liberty of extracting the appendix and making the EISA Specification version 3.1 available as a separate PDF. The scan quality is not great but the text is legible. Please note that the printed page numbers are off because they are page numbers of the patent. However, I fixed up the PDF page numbers to correspond to the original document. This was made slightly complicated by the fact that there are several pages missing; page 173 in the PDF explains why — due to a misprint in an earlier edition, some pages were re-numbered and pages 173-180 no longer exist in the corrected edition.

Note that the EISA specification, being a superset of ISA, also includes a specification of the ISA bus. And I really wish I’d found this earlier.

Posted in Documentation, EISA | 19 Comments

WD1007V Commands

While researching material for a previous article, I wanted to examine the only AT-compatible ESDI controller I have, a Western Digital WD1007V-SE2. My board was made in 1990, the firmware is from 1989, and the controller was likely introduced in 1988 judging by the copyright date on the PCB.

Western Digital WD1007V-SE2 ESDI controller (1990)

There is no real technical documentation for this controller. That is to say, the core chip, the WD42C22A ‘Venus’ is reasonably well documented, but the one thing this otherwise very capable chip does not do is process AT task file commands. That’s all handled by a separate microcontroller/firmware.

Under normal circumstances, I would first try to probe the controller from the host side and see what commands it responds to, but without a functioning ESDI drive that is not an option, and finding a working ESDI drive for a sane price appears to be no longer possible. Reverse engineering it is, then.

Continue reading
Posted in Debugging, Documentation, ESDI, Western Digital | 6 Comments

Whence IDENTIFY DRIVE?

As most everyone knows, the AT Attachment standard (informally known as IDE) started by literally bolting the previously standalone AT disk controller onto a MFM drive with a ST506 interface and connecting the assembly to the host system with a 40-pin ribbon cable.

As it often happens, the standardization process was far behind the technology and the first ATA standard officially became ANSI standard X3.221-1994 in (obviously) 1994. The standard had been in the works for several years by that time, but even so the first ATA standard drafts appeared in mid-1990, when at least half a dozen vendors have been shipping ATA drives for some time.

From a software perspective, an IDE drive is almost indistinguishable from an ST506 drive plus an AT controller—in fact that was the whole point of IDE. One crucial difference is the IDENTIFY DRIVE command.

Early integrated drive electronics

The IDENTIFY DRIVE command (soon renamed to IDENTIFY DEVICE, in order to reflect the broadened scope of ATA) makes it possible to build self-configuring systems, also known as Plug and Play, even though apparently no one thought of calling it ATA PnP until about 1995. But where did it come from and why?

Continue reading
Posted in Compaq, Documentation, IDE, PC hardware, PC history, Storage | 36 Comments

OS/2 1.2 EE DAP

That same shoebox I mentioned the other day also contained three plain cardboard 3.5″ floppy boxes with a set of disks that look like this:

OS/2 1.2 EE DAP Kit, whatever that means

Once again, despite the plain-looking labels, these are mass-duplicated floppies, which is handy because Kryoflux can tell if they had been modified. And they hadn’t.

DAP stands for IBM’s Developer Assistance Program, that’s the easy part. But what’s a “DAP Kit”? Is it some kind of a pre-release? Semi-public beta? Or an actual release shipped to developers early?

There’s nothing obvious on the floppy labels or on the floppies themselves that answers the question. So… time to start digging.

Continue reading
Posted in Archiving, IBM, Kryoflux, OS/2, PC history | 2 Comments