My initial thought was to hold it inactive until a few INDEX pulses have
passed, and the motor speed was within 5% of 'ideal' speed. The plan was
to use a 32kHz oscillator and a 4040 counter to get a several-Hz signal,
then rig up some logic to check that the disc speed was OK, and after a
few valid index cycles enable the drive.
The BBC Micro internally generates the ready signal for the 8271 controller
from index, drive select and the 8MHz clock using a
74LS393, 4020 and 4013.
I figured out how the circuit works once and my head still
hurts. As far as
I remember, it works like your description above and if an index pulse is
a few percent later than expected, it deasserts ready.
This was designed for 5.25in floppies and worked fine with early 3.5in
drives. However a problem arose with more recent 3.5in drives. It
seems that instead of requiring a particular time between step pulses,
these drives allow the controller to step as fast as it likes and they
signal the controller that the heads have not yet reached the required
location by suppressing index until they do. The circuitry in the BBC
notices the lack of index and drops the ready signal to the 8271 resulting
in a "drive not ready" error when stepping by more than a couple of tracks
(er, I mean cylinders) when using one of these drives.
It seems the lessons are firstly that the designers of the BBC micro did
not reckon they could rely on getting a good ready signal from the drive
and secondly, no matter how you try to be clever, something will later
come along to mess up your cunning plan.
Regards,
Peter Coghlan.