Head Stepping

Applicability: Hard disk drives that use the ST-506/ST-412 interface (commonly referred to as MFM).


The hard disk drive controller card controls the stepping of the heads, via two of the many control lines.
Feedback from the hard disk drive to the controller is via another control line.



The controller will set the STEP DIRECTION line to either low (TTL low) or high (TTL high).
    Low: heads are to go in the direction of inwards (towards the maximum cylinder number)
    High: heads are to go in the direction of outwards (towards cylinder 0)

The controller will put pulses on the STEP line, one pulse for every cylinder step that the stepper motor in the drive is to make.

When the drive considers the head stepping operation to be complete, it then takes the SEEK COMPLETE line low (TTL low).


Head stepping example

1. According to the record that the controller keeps, the drive's heads are presently on cylinder 45.
2. DOS makes a BIOS call to move the heads to cylinder 48.
3. The BIOS instructs the controller to seek to cylinder 48.
4. The controller sets the STEP DIRECTION line low.
5. The controller then puts 3 pulses onto the STEP line, one after the other.
6. The drive takes the SEEK COMPLETE line low when it expects that the heads have reached cylinder 48 (and have settled).


Step Pulse Rate

When sending step pulses in a group (as in the example above), a controller will send those step pulses at a particular rate. That is known as the "step pulse rate" (or just "step rate") and rather than being a rate, is actually a period. For example, if a particular controller uses a step rate of 10 µs, pulses in a group are sent one per 10 µs. If a particular controller uses a step rate of 20 µs, pulses in a group are sent one per 20 µs.

Some controllers do not have a fixed step pulse rate, and the rate they use can be configured (typically at low-level format time).


Stepping Problem - No verification of head position

These old drives are 'dumb', relatively speaking. The step pulses come in and the drive expects that the stepper motor (and the motor's driving circuitry) is going to step the heads accordingly. There is no mechanism within the drive to verify that the heads were actually stepped as expected.

If the stepper motor becomes intermittent, the drive is not going to know. The drive will activate the SEEK COMPLETE line in total ignorance. The controller will think that the heads are at a particular cylinder but the heads will be elsewhere.

Can that situation be detected? Yes, not by the drive, but by certain controllers, controllers that write cylinder/head information onto the track during low-level format time.
In my experience with XT class controllers, that is not common.


Stepping Problem - Incompatible controller/drive combination

Different hard drives have different step rate limitations. Following are some examples.

Drive
Seek Mode
Step Pulse Rate - Limitations
   Comment
ST-506
Slow:
 3 ms or greater (that is milliseconds, not microseconds)
 Drive predates buffered seek mode
ST-412
Slow:
Buffered:
 3 ms or greater (that is milliseconds, not microseconds)
 Between 5 and 500 µs    (source)
 Conflict: Page 18 of the ST-412 manual at this link indicates
 a buffered seek range of 25 µs to 200 µS
ST-225
Slow:
Buffered:
 3 ms or greater (that is milliseconds, not microseconds)
 Between 5 and 200 µs    (source)
 
ST-4038
Slow:
Buffered:
 3 ms or greater (that is milliseconds, not microseconds)
 Between 10 and 70 µs    (source)
 

Pulses sent at a rate outside of what the drive can handle will probably be lost/ignored.
So, for example, the drive ends up at only cylinder 23 with the controller thinking that the heads are on cylinder 27.
For that reason, it is very important that the hard drive and controller that you interconnect are STEP PULSE RATE compatible.