From: Spiro Trikaliotis (ml-cbmhackers_at_trikaliotis.net)
Date: 2005-04-27 08:36:09
Hello Christopher,
* On Tue, Apr 26, 2005 at 09:31:10AM +0800 Christopher Phillips wrote:
> Curious. Of course, now that I have posted about some code I wrote
> some weeks ago, I pull it out to try something MagerValp suggested and
> cannot get it to fail...
This is totally normal. :-)
> If it breaks again I will put together enough of the code to get to
> the failure point and post it - although the code I posted earlier
> includes all the relevant drive code aside from the port equates.
Yes, but:
1. the labels might contain some surprising definitions. ;-)
2. as I did not see anything obvious, I thought tested the code might
have helped. It is always much easier to execute complete code.
> Thanks. I did notice that Lasse Öörni leaves interrupts enabled for a
> little while at the start of his loader, with a comment about
> "allowing the motor to stop"
>
> Marko also starts his drive code with a cli with a comment about ";
> interrupts enabled until first sector read".
>
> Can anyone share any light on either of the above, or should I be
> asking Lasse? :)
It's simple. Most job codes (except $E0) for the job loop tell the job
routine to start spinning the drive before executing the job.
Thus, if I put a jobcode other than $E0 into the drive, the drive will
start spinning before my job is executed. Anyway, the job loop is
executed in the IRQ, thus, I have to enable them in order for the drive
to start spinning.
The same applies for stopping the motor: If the job routine does not
encounter another job for some time, it stops the motor. Again,
interrupts are required for this. Thus, if I put a code in a job loop,
allow interrupts and I stop interrupts immediately, then the motor will
not stop at all.
> >Of course, you could set a timeout, but I think this is over-doing.
>
> If I were to set a timeout, I don't know what I could do after it ran
> out other than cancel the entire load and resend the drive code, as I
> don't think the job code had been removed. Of course, I am only
> checking it's sign, not it's value, so I could be wrong on that count.
It might help if you test it more thoroughly. ;-)
BTW: Do you hear some noise of the R/W head moving? The job routine
tries to move the head a half-track in and out whenever an error occurs.
Do you use your own job routine, or a standard job routine?
Regards,
Spiro.
--
Spiro R. Trikaliotis
http://www.trikaliotis.net/
http://cbm4win.sf.net/
Message was sent through the cbm-hackers mailing list
Archive generated by hypermail pre-2.1.8.