Computer Memories, Inc. (CMI for short) was selected by IBM to be the source for the AT’s hard drive. The model in question was the CMI 6426-S, with a capacity of about 20MB formatted (21MB unformatted). In the BIOSes of the era this was a “type 2” drive, with 615 cylinders, 4 heads, and 17 sectors per track. According to different sources, it seems that this drive was pretty unreliable even for the day.
I got one a couple of years ago from eBay. Guess I’m lucky because I don’t see them going for sale too often. However, unsurprisingly, it didn’t work. While it spins and seems to pass the seek test, no controller card seems to see it. Fortunately, there is a fair amount of documentation, going from schematics to theory of operation. Also this drive is very particular in that its firmware is contained in an EPROM and not in the mask ROM of a microcontroller, making it trivial to extract.
Having all this information I decided to try to repair my drive, if possible. But this would need a fair amount of work, I would need to fully understand both the hardware and the software. While there are schematics for ASSY 100077 and 100078, none of them are particularly very legible, specially the second one.
In this part, I’ll explain a bit of how this drive works (taken from the Theory of Operation) and my redrawn schematic drawings. Next part will deal with the firmware. The last part will deal with repairing my drive, if at all possible. Enjoy!
Theory of Operation (a tiny part thereof)
Let me start by saying that drives of this era are pretty much “dumb” drives. They are closer in operation to floppy drives than modern hard disks. They contain none of the complex logic implemented in more modern drivers (even in the oldest IDE drives), such as sector or track reallocation, and didn’t even encode or decode data to/from platters. This was done using MFM encoding by the controller card. Later drives used RLL encoding, which increased data density and speed by 50%. Nowadays, we don’t care about the encoding used by drivers, as we simply request a certain cylinder, head, and sector.
The board of this drive contains a Motorola 6803 microcontroller, along with a MOS 6522 VIA and either 2KB, 4KB or 8KB of ROM (depending on board revision). It seems to perform the following functions:
- Control most of the input and output flags of the ST-506 interface, such as -DRIVE_SELECT, -READY, -SEEK_COMPLETE, etc.
- Count pulses for the buffered seek and perform the asynchronously.
- Control the stepper motor so the heads are always in the middle of the data track (i.e. servo operation).
- Control and monitor the spindle motor’s speed.
- Monitor the hardware and set error conditions accordingly.
- Maintain the write protect depending on the internal state and the control signals. This is also done by the hardware itself in some cases, such as when the heads are not in the middle of a data track.
Schematics
As I mentioned before, the schematics are available for revisions 100077 and 100078. While the ones for 100077 are of an acceptable quality, the ones for 100078 are are barely readable in the best case.
For the redraw, I started with 100077 and drew it. I had to compare some parts with my board (which is 100079 though) to ensure I was reading numbers correctly (i.e. 8 vs 6 or 5). After that, I continued with 100078 (basically identical to 100079). Only after that I can be reasonably certain that I have a good set of schematics I can rely on.
The differences between the revisions are substantial enough that they are not interchangeable:
- The stepper assembly has a completely different connector pinout in 100077 vs 100078. More importantly, the first stage of amplification for the LEDs are now built into the stepper assembly (100078) instead of being present in the board (100077).
- The hybrid H3 has a small tweak around pins 2 and 3 in 100078.
- Q4 and Q5 have been added in 100078 to control -12V supply and a spindle enable signal, respectively.
- The -WRITE_FAULT signal now uses the !Q signal of Z24 (pin 6), which means that the polarity of the signal coming out of the microprocessor (pin 15) must also be inverted in software.
- EPROM has been upgraded from 2716 to 2732.
Below you can download a PDF for each of the revisions. Pages 1 to 3 correspond to the original schematics. Page 4 is something I added to include some power connections not present in the original schematics. It may not be complete though. Maybe in the future I’ll try to re-do the layout of the board to verify that the schematics are indeed correct, if I have time.
Next part will contain info about the firmware, including a full disassembly. Keep tuned!