[comp.sys.amiga.tech] Disk drive ready signal/drive clicking

danbabcock@eklektik.UUCP (/dev/ph1) (04/11/90)

dannys@csd4.csd.uwm.edu wrote in <3342@uwm.edu>:

> ...I left the RDY line connected to the autoconfigure
> part of the interface circuit but not connected to any drive signals.
> Why does this work? Does software wait 500ms after motor-on before doing
> any read/writes? I would think you would wait for the RDY line to become
> active...

I would assume that the trackdisk.device waits 500ms before bothering
to check the ready line. After all, the ready line does not generate an
interrupt, so this is the most efficient method. However, almost all
custom disk code that I have seen (this includes many games and 
probably copy programs as well) uses the disk ready signal exclusively;
they just sit in a loop waiting for it to be asserted.

> What is software doing to make the drives click? (etc.)

The drives are supposed to latch the disk change signal when the drive
steps a track, so the Amiga steps the drive periodically to determine when
a disk is changed. All the code does is step one track, inverting the
direction each time. I don't recommend defeating this in hardware; it 
would probably be incompatible with many programs. There is an easy
way to defeat this in software, though - just change the code to step
in one direction instead of alternating directions. Many drives have logic
to detect when they have stepped past track zero (track zero is the
outermost track) and refuse to step further - but still latch the disk
change signal! The change may be made directly via a one-bit patch on
the kickstart disk (if you're a 1000 owner) or in EPROM (if you're a
500/2000 owner with one of those kickstart switchers) or by using
SetCPU (if you're a '020-with-MMU or '030 owner) or by using a program
such as NoClick (anyone). In fact, I wrote the first version of NoClick
(it didn't work very well, but other people fixed it up).

-- Dan Babcock / voice (412)-373-1753

deven@rpi.edu (Deven T. Corzine) (04/12/90)

On 10 Apr 90 21:47:31 GMT, danbabcock@eklektik.UUCP (/dev/ph1) said:

danbabcock> The drives are supposed to latch the disk change signal
danbabcock> when the drive steps a track, so the Amiga steps the drive
danbabcock> periodically to determine when a disk is changed.

Now what confuses me is this:  WHY is stepping a track a requirement
to update the signal??  Surely the drive detects it by some sort of
mechanical or perhaps optic switch which is activated by the actual
disk insertion -- so why not update the signal instantly?  Is there
supposed to be some value to it?  Is there some technical obstacle, or
was there?  Was it just the semantics of whatever drive it was
convenient to use?  I don't get it.

Deven
-- 
Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
Snail:  2151 12th St. Apt. 4, Troy, NY 12180   Phone:  (518) 274-0327
Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
Simple things should be simple and complex things should be possible.

new@udel.EDU (Darren New) (04/12/90)

In article <DEVEN.90Apr12055052@netserv2.rpi.edu> deven@rpi.edu (Deven T. Corzine) writes:
>Now what confuses me is this:  WHY is stepping a track a requirement
>to update the signal??  

I think the signal gets CLEARED when the drive is stepped.  That is, once
set, it stays set until the drive is stepped. Therefore, read the signal
and then step the drive.  The next insert or remove will set the signal
again.                 -- Darren

deven@rpi.edu (Deven T. Corzine) (04/12/90)

In article <DEVEN.90Apr12055052@netserv2.rpi.edu> I write:

Deven> Now what confuses me is this: WHY is stepping a track a
Deven> requirement to update the signal??

On 12 Apr 90 12:17:58 GMT, new@udel.EDU (Darren New) said:

Darren> I think the signal gets CLEARED when the drive is stepped.
Darren> That is, once set, it stays set until the drive is stepped.
Darren> Therefore, read the signal and then step the drive.  The next
Darren> insert or remove will set the signal again.  -- Darren

Meaning it's a latch bit set by a pulse when the disk is inserted and
cleared when the drive is stepped?  No, that can't work either; it
still seems in any evet that the drive must "know" at some level
whether or not there is a disk there...  and it seems it must know
whether or not you step the heads.  So stepping the heads makes it
tell the computer.  Is this right?  If not, what?  If so, why?

Deven
-- 
Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
Snail:  2151 12th St. Apt. 4, Troy, NY 12180   Phone:  (518) 274-0327
Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
Simple things should be simple and complex things should be possible.

tell@oscar.cs.unc.edu (Stephen Tell) (04/13/90)

In article <DEVEN.90Apr12101123@netserv2.rpi.edu> deven@rpi.edu (Deven T. Corzine) writes:
>
>In article <DEVEN.90Apr12055052@netserv2.rpi.edu> I write:
>
>Deven> Now what confuses me is this: WHY is stepping a track a
>Deven> requirement to update the signal??
>
>On 12 Apr 90 12:17:58 GMT, new@udel.EDU (Darren New) said:
>
>Darren> I think the signal gets CLEARED when the drive is stepped.
>Darren> That is, once set, it stays set until the drive is stepped.
>Darren> Therefore, read the signal and then step the drive.  The next
>Darren> insert or remove will set the signal again.  -- Darren
>
>Meaning it's a latch bit set by a pulse when the disk is inserted and
>cleared when the drive is stepped?  No, that can't work either; it
>still seems in any evet that the drive must "know" at some level
>whether or not there is a disk there...  and it seems it must know
>whether or not you step the heads.  So stepping the heads makes it
>tell the computer.  Is this right?  If not, what?  If so, why?

>Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu

From looking at the hardware and a discussion here long ago, I believe
its like this:
The bare drive has a signal that says whether or not a disk is in the drive.
This signal goes to the little interface board between the drive and the
DB-23 connector (The interface is on the motherboard for internal drives,
but a seperate board on the 1010.)  Whenever this signal goes to 
"disk removed," even for an instant, it sets a latch on the board.

Every so often, the system comes along and polls this latch.  Then, it
steps the drive, which clears the latch.  If there's no disk in the drive,
the latch immediately gets set again.

The reason for the hardware latch is because otherwise it might be
possible to change disks really fast while the software wasn't looking,
or was tied up on some poorly-behaved system-stealing program.  If there
wasn't a hardware latch, the system wouldn't know that a disk had changed,
and would procede to trash the filesystem on the disk.  For example,
re-writing a cached directory entry from one disk onto another.

It probably could have been done some other way instead of stepping the drive.
I don't think there is an extra pin in the cable; some of the alternative
schemes could have been worse.  It looks like the idea was to change from the
standard drive interface as little as possible with that little interface
board; the other things the board does like latching the motor on signal and
reporting drive-id at powerup also fit nicely into unused bandwidth in the
original (34-pin) drive connector.
--------------------------------------------------------------------
Steve Tell					tell@wsmail.cs.unc.edu
CS Grad Student, UNC Chapel Hill.

deven@rpi.edu (Deven T. Corzine) (04/13/90)

On 12 Apr 90 17:14:53 GMT, tell@oscar.cs.unc.edu (Stephen Tell) said:

Stephen> From looking at the hardware and a discussion here long ago,
Stephen> I believe its like this:

Stephen> The bare drive has a signal that says whether or not a disk
Stephen> is in the drive.  This signal goes to the little interface
Stephen> board between the drive and the DB-23 connector (The
Stephen> interface is on the motherboard for internal drives, but a
Stephen> seperate board on the 1010.)  Whenever this signal goes to
Stephen> "disk removed," even for an instant, it sets a latch on the
Stephen> board.

Stephen> Every so often, the system comes along and polls this latch.
Stephen> Then, it steps the drive, which clears the latch.  If there's
Stephen> no disk in the drive, the latch immediately gets set again.

Okay, this makes sense.  It would have been nice had they found a
somewhat less obstrusive way to do it, or maybe they should have had
the ROMs always try to step past track 0 instead of alternating --
it's officially a requirement for a proper Amiga drive that such not
cause actual head motion, right?  If it would always make a lot of
noise on an Amiga, rather than the current clicking, you can bet few
such Amiga drives would be sold...

Deven
-- 
Deven T. Corzine        Internet:  deven@rpi.edu, shadow@pawl.rpi.edu
Snail:  2151 12th St. Apt. 4, Troy, NY 12180   Phone:  (518) 274-0327
Bitnet:  deven@rpitsmts, userfxb6@rpitsmts     UUCP:  uunet!rpi!deven
Simple things should be simple and complex things should be possible.

p554mve@mpirbn.UUCP (Michael van Elst) (04/13/90)

In article <DEVEN.90Apr12055052@netserv2.rpi.edu> deven@rpi.edu (Deven T. Corzine) writes:
>danbabcock> The drives are supposed to latch the disk change signal
>danbabcock> when the drive steps a track, so the Amiga steps the drive
>danbabcock> periodically to determine when a disk is changed.
>Now what confuses me is this:  WHY is stepping a track a requirement
>to update the signal??

The drives will SET its diskchange signal just when the disk is ejected.
You have to poll the drive to know the state.
It will RESET the diskchange if a disk is inserted AND the heads are stepped.
This is done to tell the drive that the diskchange state has been
detected. You need this, if you poll the drive in long intervals, otherwise
you'd miss a diskchange.

The drives have ususally a separate line for the acknoledge signal. But
the Amiga hasn't, so the stepping signal is used for that.

-- 
Michael van Elst
p554mve@mpirbn.mpifr-bonn.mpg.de