• Please review our updated Terms and Rules here

Computer Memories Inc hard disk collection (Incomplete)

famicomaster2

Experienced Member
Joined
Feb 3, 2017
Messages
315
Location
Southeastern US
Hello again, I come to show another part of my disk collection off. This time drives from Computer Memories Inc, CMI, best known for being the drive IBM chose to walk away from for the AT. That was specifically the 6426S.

Top left to bottom right:
CM-5619 (306/6/17 for ~15MB formatted)
CM-6426 (640/4/17 for ~20MB formatted)
CM-6426S (640/4/17 for ~20MB formatted) The "S" variant was primarily a board level revision to improve the performance of the drive. It also included a new EPROM with better seek acceleration curves.
CM-6640 (640/6/17 for ~40MB formatted) The little known big brother to the 6426.

CM-3426 (615/4/17 for ~20MB formatted) One of very few half height disks CMI ever produced.
CM-5410C (256/4/17 for ~8MB formatted) Part of the "C" series produced at low cost for OEM usage.
CM-5412 (306/4/17 for ~10MB formatted)
CM-5616C (256/6/17 for ~12MB formatted) The largest of the "C" series drives.

Can you tell that CMI really liked this chassis, introduced with the 5000 series? The same frame, casting, and lid are all used for the 5000, 6000, 7000, and 8000 series.
I suppose it could be that they had no money as well. The 3000 series bears a striking resemblance to several IMI drives, but I'm not sure if this was on purpose or not.

Unfortunately, this part of my collection is rather incomplete, but I'm lucky to have the models I have. CMI drives are very hard to find, especially working as many of mine are. There are actually two other drives not shown, a pair of 6426Ses, one of which works but has horrendous bearings and the other which has lost it's servo bursts. I've had to part them out to fix a couple of these rarer drives a few times already.

If you have or are aware of where to find more CMI drives, PLEASE drop me a line! I am especially interested in the 4000 series half height drives and depending on the working condition I might even place a high bounty upon their head.

IMG_20221205_131327.jpg


Yes, you heard that right by the way, the 6000 series has TWO feedback systems! There is an optical encoder on the end of the servo motor's shaft which reports, I believe it's every 0.5 degrees of rotation. In addition to this, there are "servo bursts" of high frequency, high amplitude noise between the data tracks. Because of the precision of a servo motor, the onboard microprocessor, a 6803, can pretty accurately position the heads over the track it wants. Sadly, however, there is NO absolute positioning on the drive itself, this is relegated to the controller as with most ST-506/ST-412 type drives.
To put it simply, the heads are "inaccurate" or "wide" enough to "hear" the noise pulses. A discriminator on the drive separates them from any data under the head. The pulses are spaced even and odd timing, such that they do not "play" at the same time. In theory, all the drive needs to do to make sure it is centered over a data track is to count the number of servo pulses until it is in the general area, and then balance the amplitude of the servo pulses.

Unfortunately, in practice, this BARELY works. With servo data missing, as with one of my parts drives, the drive will typically go into one of two behaviors: It will seek infinitely (early firmware, especially 16K/32K units) or it will retry it's seek test 3 times before going on to act like everything is normal (every 64K unit I've seen). Unfortunately, this often results in the drive using guesswork and really dumb estimation to "sort of" get where you ask it to be, leading to instant destruction of data. You can determine which revision your drive is by looking at the EPROM in socket Z20 on the logic PCB. Some drives have a 2716, some have a 2732, and later drives (most commonly the 6426S) have a 64K ROM. It is worth noting that "K" here is for Kilobits and not kilobytes.

There were three big issues with this design:
1. The precise head positioning was almost entirely analog in nature, requiring extremely high precision calibration to be reliable. In a hot computer, the values of components can change, especially with age, and so many drives will "lose" their servo tracking despite the actual markers being present on the disk surface just fine.
2. Some drives will pass their seek test without the servo tracking data! This leads to immediate and total data loss in many cases.
3. During manufacturing, the drives themselves actually write their own servo bursts! The "Servowriter" was attached to TP6 and TP17 on the drive, and a special firmware EPROM was intalled into the socket at Z20. This process required the drives to be thermally stable before writing the bursts. When IBM ramped up production of the AT in response to higher than expected demand, CMI's quality suffered greatly. Drives were no longer given the several hours they needed to warm up before writing!

All of these flaws led CMI drives to get a very bad name in the computing industry and IBM not to renew their contract at the end of 1984. This ultimately killed CMI, with customers flocking to competitors and their largest buyer choosing to return all units at the slightest hint of failure to be replaced (at their expense) by a more expensive, high end Seagate ST-4038.

It's a shame what happened to them, but the industry learned from their mistakes... Kind of. Stay tuned for more of my collection and more of my history / engineering lessons, if that's your kind of thing.
If you've read this far, I hope you've enjoyed or that you learned something, or maybe both. If you liked this, maybe you'd enjoy my similar post on Kalok drives, which you can see here.
 
Hi @famicomaster2 I'm looking for more info on the 6426S, of which I have one. I'm trying to reverse-engineer the firmware contained in the EPROM and have a better understanding of how it works. Can you suggest any documents that may help me? Thanks!
 
Hi @famicomaster2 I'm looking for more info on the 6426S, of which I have one. I'm trying to reverse-engineer the firmware contained in the EPROM and have a better understanding of how it works. Can you suggest any documents that may help me? Thanks!
Hello, out of curiosity, what are you trying to achieve, and why the 6426S specifically? Depending on the PCB revision, there are 3 different firmware ROMs, a 16K, a 32K, and a 64K. In each group there are at least 2 known firmware versions.
I believe they use a Motorola 6803 microprocessor and a 6522 VIA. Nothing special.

All the documents I'm aware exist are already on Bitsavers in their CMI directory. This includes at least 2 schematics and a theory of operation for the 6426, which is the slower non-IBM variant of the 6426S.

I'd be very interested to know what this project was about.
 
Hello, out of curiosity, what are you trying to achieve, and why the 6426S specifically? Depending on the PCB revision, there are 3 different firmware ROMs, a 16K, a 32K, and a 64K. In each group there are at least 2 known firmware versions.
I believe they use a Motorola 6803 microprocessor and a 6522 VIA. Nothing special.

All the documents I'm aware exist are already on Bitsavers in their CMI directory. This includes at least 2 schematics and a theory of operation for the 6426, which is the slower non-IBM variant of the 6426S.

I'd be very interested to know what this project was about.
The goal of the project is to have a better understanding on hoy the firmware works on these drives. I'm targeting specifically the 6426S for two reasons: first, because I have one. Second, because of its relevance to the history of the IBM AT due to its dismal reliability.

Thanks to your lead, I've now quickly read through the theory of operation. It still amazes me how much detail they could put in publicly available documents back in the day. This, along with the schematics (though the scans are not too readable), will be very helpful to understanding the firmware code.

If you have different revisions of the firmware, I would appreciate if you could dump them and send them to me, noting the number in the label and the PCB number. It would be awesome to not only document what the version I have does, but also document the changes through the time and theorize why they made such change.

Thanks!
 
The goal of the project is to have a better understanding on how the firmware works on these drives. I'm targeting specifically the 6426S for two reasons: first, because I have one. Second, because of its relevance to the history of the IBM AT due to its dismal reliability.
Most of what the firmware deals with here is spindle speed maintaining, handling the interface (seek buffering, select monitoring, status signal generation) and head tracking/seek profiling. These drives use a DC optical feedback servo rather than the traditional for the time stepper motor, as well as on-disk feedback in the form of servo bursting. I believe the servo bursting is primarily handled in analog electronics for the precise positioning of the heads, and that the optical encoder is handled by the microprocessor. There's a fairly complex seek ramp as well, which will also be handled by the microprocessor.
The reliability I find is not nearly as bad as you might expect, of all the CMI drives I have, only one does not work and that is because it has the wrong PCB for it's mechanism, and thus cannot locate it's embedded track 0 which causes it to fail a seek test after 3 retries.
Thanks to your lead, I've now quickly read through the theory of operation. It still amazes me how much detail they could put in publicly available documents back in the day. This, along with the schematics (though the scans are not too readable), will be very helpful to understanding the firmware code.
No problem, most of this information was actually pretty well hidden, most of what you're seeing is data that was passed out to OEMs and engineers who might have bought the drive for commercial usage.
If you have different revisions of the firmware, I would appreciate if you could dump them and send them to me, noting the number in the label and the PCB number. It would be awesome to not only document what the version I have does, but also document the changes through the time and theorize why they made such change.
Is your PROM a 2716, 2732, or 2764? Two of my 6426Ses are 2764s, one is a 2732 (missing chip, but wired for a 2732), my regular 6426 is a 2732 and my 6640 is a 2764 as well. The CM-5000 drives have a different PCB but very similar mechanism. Those drives have no feedback, not optical nor servo burst, so it may be an easier to place to start rather than trying to deconstruct the hugely over complicated analog servo tracking on a CM-6000 drive.

I would be happy to rip their contents if and when my EPROM programmer gets here. I ordered a TL866 from China like 6 months ago and it's still in transit. Gotta love that, I'm almost tempted to write it off and just get another one.
 
Most of what the firmware deals with here is spindle speed maintaining, handling the interface (seek buffering, select monitoring, status signal generation) and head tracking/seek profiling. These drives use a DC optical feedback servo rather than the traditional for the time stepper motor, as well as on-disk feedback in the form of servo bursting. I believe the servo bursting is primarily handled in analog electronics for the precise positioning of the heads, and that the optical encoder is handled by the microprocessor. There's a fairly complex seek ramp as well, which will also be handled by the microprocessor.
Yes, this mechanism is explained in the theory of operation, including some very neat explanation of the optimizations involved. While this firmware is "dumb" compared to modern ones, it certainly deserves its place in history. After I finish with this one, I'll move on to the ST-412, which also has historial significance.

Is your PROM a 2716, 2732, or 2764? Two of my 6426Ses are 2764s, one is a 2732 (missing chip, but wired for a 2732), my regular 6426 is a 2732 and my 6640 is a 2764 as well. The CM-5000 drives have a different PCB but very similar mechanism. Those drives have no feedback, not optical nor servo burst, so it may be an easier to place to start rather than trying to deconstruct the hugely over complicated analog servo tracking on a CM-6000 drive.
Mine has a 2732 labeled "200935F" and the PCB is P/N 100079. The drive itself shows model 6426-S and the "Manufacturer for IBM Corporation" on the side. It doesn't work and I don't know why. It sounds normal and hear some seeking on startup, but no controller ever recognizes it. I've tried with the original one from the AT and nothing. Guess This research will also give me a better insight on the failure.

I would be happy to rip their contents if and when my EPROM programmer gets here. I ordered a TL866 from China like 6 months ago and it's still in transit. Gotta love that, I'm almost tempted to write it off and just get another one.
I would really appreciate if you could dump them. I have a TL866CS bought maybe 10 years ago. Using EMS helped me get it in a reasonable amount of time.

Thanks!
 
Yes, this mechanism is explained in the theory of operation, including some very neat explanation of the optimizations involved. While this firmware is "dumb" compared to modern ones, it certainly deserves its place in history. After I finish with this one, I'll move on to the ST-412, which also has historical significance.
The ST-412 really has essentially no firmware, the microcontroller is only present for automatic RWC and seek buffering. I don't think it even monitors the speed of the spindle, since it can't exactly do anything about it anyways (ST-412 has a separate PCB for spindle control). It has no "seek test" past dragging the heads back to cylinder 0 and has no seek profile at all. Worth a try, but I don't think you'll find anything. I'm also fairly sure the ST-412 uses a Rockwell embedded microcontroller with ROM built in - I don't know if there's any way to dump it without decapping the chip.
Mine has a 2732 labeled "200935F" and the PCB is P/N 100079. The drive itself shows model 6426-S and the "Manufactured for IBM Corporation" on the side. It doesn't work and I don't know why. It sounds normal and hear some seeking on startup, but no controller ever recognizes it. I've tried with the original one from the AT and nothing. Guess This research will also give me a better insight on the failure.
Almost all of the 6426S drives I see are IBM badged, IBM was pretty much their only customer at the time to my understanding, at least the only one buying the "S" variant. I've seen one or two without it, though.
Ensure your drive select, cabling, and terminator are correct. Do you know if your controller works?

What seeks does it make on power up? Shortly following the spindle reaching speed, a drive that has not been parked will seek it's heads fully inwards (cylinder 650) and then fully outwards (cylinder 0) to search for the embedded track 0. I find that this sounds like a slide flute with the acceleration curve they use. From there, there should be a short delay, followed by 3 seeks inwards (I believe increments of 20 cylinders) to search for servo bursts. There will then be a series of several fast seeks before the drive returns to cylinder 0. Failing at any step will cause the drive to repeat the seek test a maximum of... I think it's 3 times? If you are hearing the slide whistle whining noise several times and then it stops, your drive was unable to "find" cylinder 0 and thus will never respond to a drive select command.
Posting a recording might help.
I would really appreciate if you could dump them. I have a TL866CS bought maybe 10 years ago. Using EMS helped me get it in a reasonable amount of time.
EMS? Happy to if mine ever shows up in the mail.
 
The ST-412 really has essentially no firmware, the microcontroller is only present for automatic RWC and seek buffering. I don't think it even monitors the speed of the spindle, since it can't exactly do anything about it anyways (ST-412 has a separate PCB for spindle control). It has no "seek test" past dragging the heads back to cylinder 0 and has no seek profile at all. Worth a try, but I don't think you'll find anything. I'm also fairly sure the ST-412 uses a Rockwell embedded microcontroller with ROM built in - I don't know if there's any way to dump it without decapping the chip.
Yeah, unfortunately I spoke too soon. You're absolutely right. I'll check the microcontroller's datasheet but I don't think there's much choice there.

Almost all of the 6426S drives I see are IBM badged, IBM was pretty much their only customer at the time to my understanding, at least the only one buying the "S" variant. I've seen one or two without it, though.
Ensure your drive select, cabling, and terminator are correct. Do you know if your controller works?
I know the controller and cables work fine because I use them with my ST-4038, ST-138 and ST-225. The termination resistor block is in place, but I'll test using the multimeter just in case. Drive Select is set to the first jumper. I'll post a picture later today.

What seeks does it make on power up? Shortly following the spindle reaching speed, a drive that has not been parked will seek it's heads fully inwards (cylinder 650) and then fully outwards (cylinder 0) to search for the embedded track 0. I find that this sounds like a slide flute with the acceleration curve they use. From there, there should be a short delay, followed by 3 seeks inwards (I believe increments of 20 cylinders) to search for servo bursts. There will then be a series of several fast seeks before the drive returns to cylinder 0. Failing at any step will cause the drive to repeat the seek test a maximum of... I think it's 3 times? If you are hearing the slide whistle whining noise several times and then it stops, your drive was unable to "find" cylinder 0 and thus will never respond to a drive select command.
Posting a recording might help.
I'll try to get a decent recording of it tonight and will post back.

EMS? Happy to if mine ever shows up in the mail.
EMS is Express Mail, delivered by your usual postal provider. At least in my case (Peru), using any of the chinese couriers is basically writing off the package as it will be handled by our postal service as untracked mail. Spoiler alert: that almost never works.
 
Ok, here is the picture. It's setup in the first position, for a straight cable (no twist). I'm using a ST11M controller, which I've tested with other drives and found to be working. Unfortunately, no luck with this one.

I'm also attaching the recordings for the spinup and spindown. During spinup, first thing you hear is the click of the power supply switch. Shortly after that, there's the degaussing coil from the monitor as it starts to display an image. The rest is purely the hard drive. The spindown starts with the click of the power supply switch.

PXL_20230212_035336139.jpg
 

Attachments

  • spindown.mp3
    528.1 KB
  • spinup.mp3
    640.7 KB
Bearings sound a bit noisy but the drive is passing it's seek test. The computer is unable to read or write to the drive, though? Can it seek?
 
Bearings sound a bit noisy but the drive is passing it's seek test. The computer is unable to read or write to the drive, though? Can it seek?
That's good to know! This also means that I will be able to make it a working drive.

I've tested with different controllers and in all cases the symptoms are the same: big delay on startup, followed by either a "hard drive fail" or "no drive detected". I've tested all drive select lines and the result is exactly the same. I know that's pretty generic, so I'll be probing some status lines (i.e. READY) to figure out what exactly is not being set. It wouldn't surprise me if there is one or more logic chips near the interface (i.e. Z3, Z4, Z5, Z6, Z7, Z10, Z14) that need replacing.

On the other hand, in the software side in my project things are going fine. I now have an excel file documenting all hardware ports bit by bit by their name and if they're input or output. I built this based on the schematic. I also have a source file that can be assembled by CRASM to give the exact original binary byte for byte. I'm in the process of commenting the source and introducing constants to make it more readable. So far I can tell this firmware wasn't built by an assembler but ratter directly in machine code.
 
Just probed some signals. Unfortunately, it's not setting READY and it's setting WRITE FAULT. Guess I'll have to go through the "theory of operation" and figure out what's going on. I'm suspicious on Z7 (AM26LS31CN), as it's getting significantly warmer than Z8, which is the same part. However, it "seems" to be working.
 
Hmm, this is with the drive selected? Make sure you are selecting the drive before probing the buss, otherwise no signals will go through. Since your drive is set to respond to select 0, ground the signal DS0 on the control connector, this should get you the bus status and turn the access lamp for the drive ON.
At spinup, you should see TCK0 SEEK_COMPLETE SELECTED READY and nothing else.

Please do posted the commented source sometime if you get a chance to! I would love to see it.
 
Hmm, this is with the drive selected? Make sure you are selecting the drive before probing the buss, otherwise no signals will go through.
Yes, though I also checked with the internal points where that signal is always present even if not selected. In both cases they agree that READY is high.

Since your drive is set to respond to select 0, ground the signal DS0 on the control connector, this should get you the bus status and turn the access lamp for the drive ON.
Yes, the alligator clips served fine for that, as ground is just any pin in the other side of the edge connector.
At spinup, you should see TCK0 SEEK_COMPLETE SELECTED READY and nothing else.
I see TRK0, SELECTED, and SEEK_COMPLETE as low, INDEX pulsing (at about 59.56Hz), but WRITE_FAULT is also low and READY is high. I was probing with the oscilloscope and the theory of operation and it seems it's happening an awfully small write current, as one of the test points (I think it was TP12) was measuring about 5 (at the largest part of the burst) divisions of amplitude, instead of the 6.5 expected (at 2V/div), though 6.5 divisions at 2V/div would mean 13Vpp which is weird, but not unheard of, given that it's powered by 12V at most. Too bad the pictures of that document don't look good enough to even see the expected waveforms.

Please do posted the commented source sometime if you get a chance to! I would love to see it.
I will do. Not only the source, but a more thorough diving through the details of everything I know about it. At the current rate, it will likely take me a month or two to have the listing ready and maybe a week after that to write the article for publication. I will post the link here.
 
Yes, though I also checked with the internal points where that signal is always present even if not selected. In both cases they agree that READY is high.
Yes, the alligator clips served fine for that, as ground is just any pin in the other side of the edge connector.
Yep, I usually tell people to use an alligator clip because it's easier.
I see TRK0, SELECTED, and SEEK_COMPLETE as low, INDEX pulsing (at about 59.56Hz), but WRITE_FAULT is also low and READY is high. I was probing with the oscilloscope and the theory of operation and it seems it's happening an awfully small write current, as one of the test points (I think it was TP12) was measuring about 5 (at the largest part of the burst) divisions of amplitude, instead of the 6.5 expected (at 2V/div), though 6.5 divisions at 2V/div would mean 13Vpp which is weird, but not unheard of, given that it's powered by 12V at most. Too bad the pictures of that document don't look good enough to even see the expected waveforms.
Hmm, are you sure about 60Hz? INDEX should pulse at the start of every rotation of the spindle, which should be 3600RPM. Sounds like your index signal is getting trashed somewhere.
 
Hmm, are you sure about 60Hz? INDEX should pulse at the start of every rotation of the spindle, which should be 3600RPM. Sounds like your index signal is getting trashed somewhere.
Don't get confused with Hz and RPM. 60RPM with 1 pulse per rotation is 1Hz :) This also means that my index pulse is likely fine. The difference of about 0.40Hz, though likely not significant enough, is probably due to measurement error on my oscilloscope.
 
Don't get confused with Hz and RPM. 60RPM with 1 pulse per rotation is 1Hz :) This also means that my index pulse is likely fine. The difference of about 0.40Hz, though likely not significant enough, is probably due to measurement error on my oscilloscope.
Ah, you would be correct. Within 15% is what you're looking for.
 
Something new here. I've taken the schematics from the scans at bitsavers and drawn them to Eagle. So far I've finished only assy 100077, but 100078 will follow shortly. I will try to make 100079 as well, but I don't have the schematics for that.

Pages 1, 2, and 3 contain the corresponding pages in the schematics scan. Page 4 contains some power connections that are not found in the scans otherwise, but are present in the board. Maybe some are missing.

Hopefully someone will find it helpful for debugging the hardware.
 

Attachments

  • CMI6426 - 100077.pdf
    136.1 KB · Views: 3
More info now. I've finished with assy 100078 and also managed to find a few mistakes in it and 100077. I also found that it inverts the level of WRITE_FAULT (compare how 100077 uses Z24 pin 5, while 100078 uses Z24 pin 6), which invalidates my findings regarding the write fault. I'll continue investigating the fault of my drive.

Because of the changes, I must recommend to use this version as opposed to my previous post.
 

Attachments

  • CMI6000 - 100077.pdf
    336.1 KB · Views: 1
  • CMI6000 - 100078.pdf
    352.8 KB · Views: 1
Back
Top