On 02/16/2014 07:27 PM, Jules Richardson wrote:
On 02/16/2014 02:50 PM, Tony Duell wrote:
Seocndly, is any part of the positioner mechanism
visible outside the HDA
(some drives had a 'flag' and optoswitch on the stepper spindle for the
track 0 posiiton sensor, this 'flag' moves as the heads seek. If so, then
seek to cylinder 127, then seek to cylinder 128. If the positioner moves
a fair distance -- and in the wrong driection -- you will know something
is up.
Oh, that's a great idea - thanks. Yes, the drive has a horizontal stepper
for the positioner, with an external interrupter for track 0 detection, so
it'll be easy to see if it does anything unusual around the problem cylinders.
Well, I got some time just now to hack some code for testing this. The
controller doesn't seem to support seek operations, but doing a read (which
takes c/h/s parameters) and ignoring the returned data seemed like a fair
substitute. And... wow, is this thing ever confused...
So, at power-on (and after the drive's up to speed), the stepper goes
through more than one revolution before settling at what I'm assuming is
cylinder 0 (the interrupter on the end of the shaft is in line with the
detector) - in other words, available head travel doesn't limit it to < 1
revolution.
If I attempt successive reads from cylinders 0-614, I can see the head
positioner advance as expected from cylinders 0-63. At cylinder 64, the
stepper jumps to a completely new part of the arc, but then advances
"linearly" (if you see what I mean) from there in the range 64-127 - I
don't know why this range wouldn't simply follow on from where cylinder 63
was! At the sector level there's obviously valid data there, although
whether it's the data that DOS is expecting to be in that physical spot on
the disk is another matter.
Now, in the cylinder range 128-255, the stepper doesn't move at all, it
just stays stuck where it left off at cylinder 127. At cylinder 256, it
appears to reset to the cylinder 0 position (but it's hard to tell for sure
where the heads physically are on the disk; remember that that stepper is
capable of > 1 revolution, so I'm just going by the interrupter position).
The stepper then advances "normally" for reads in the range 256-319, but at
320 it mimics the behaviour of cylinder 64, suddenly jumping to a different
part of the arc, before once again advancing "normally" for the 320-383 range.
Between 384-511, we see a repeat of 128-255, with the stepper not advancing
(staying where the read from cylinder 383 left it). At cylinder 512, it
suddenly jumps to - apparently - cylinder 0 position, and then the stepper
advances "normally" up until the last cylinder on the drive (611)
I'm not sure what my next move is - possibly hooking some magic up to the
step/direction lines so I can monitor exactly what they're doing, which
would at least enable me to determine if it's the drive or the controller
at fault. I'm particularly curious whether there really is a sudden burst
of step pulses between read attempts from cylinder 63 and 64, for instance.
cheers
Jules