On 01/05/2014 05:14 PM, Peter Corlett wrote:
The Amiga had a rather neat approach to this: each
drive contained a latch
which sampled the motor line when its drive select line became active, thus
allowing each drive's motor to be controlled independently. It also retained
the four drive select lines.
Along that same thing, the NEC 765 controller as used in many PCs was
originally an 8" beast. It has a rather novel feature of automatically
polling the READY line of each drive and initiating an interrupt should
the status of READY change.
Of course, since the PC uses drives with no READY line, this had to be
worked around. So the READY input on the 765 is permanently tied active
and the unit-select outputs of the 765 go nowhere. IBM installed a
separate motor-control and drive-select register to get around this.
However, a drive not ready condition will "hang" the 765 until the drive
comes ready (because of the permanently active READY input). So a
software timer is used to reset the 765 should an operation take too
long. Clumsy, but it gets the job done.
Back in the 70s, when we first obtained 5.25" drives (Micropolis), we
had a READY signal, but that hardly meant anything because we had a
motor control register also. Our controller used the now-forgotten
WD1781; not too different software-wise from the 1771. We had a problem
with customers changing floppies with files on them still open for
writing. We investigated door-lock solenoids, but dismissed them
because of added expense and limited choices.
So how do you tell if a drive is ready if the motor's not on? We
figured that keeping the drive motor on so long as a file was open for
writing, but that could be hours and hours. We eventually stumbled on
sampling the write-protect signal which didn't depend on the motor being
on. About every quarter-second, we sampled a drive's WP status if the
drive had any files opened for writing--if it changed, we halted
execution of the current application, put a message saying essentially
"Now put that disk back!" and sat on the beeper, turned on the motor and
waited for the drive to come ready again.
We never had another complaint on that problem again.
--Chuck