Hi
Here is a typical read cycle for getting a track from the M20 disk:
FOR sector 1 to 11
setup DMA
write clock rate to 3F7h ( may be FM or MFM )
BEGIN
set drive motor timeout to nice long number for DOS so it doesn't
turn the motor off while I'm using it.
If the motor isn't already on, turn it on and add a little delay
time
to get it up to speed.
Do a SEEK to the track ( I do this every time even if I'm already on
that track )
Clear Interrupt status bit in DOS
Write all the stuff to the controller to read a sector ( including
if it is FM or MFM )
Wait until there is an interrupt 6 and then read all the returned
status
WHILE the status fails
if second try, do a READID
if third try, do a RECAL
if more tries then Error out
REPEAT
NEXT Sector
Use DOS call to write track to a file and
repeat it all for the next track.
I can break down things like SEEK, READID and RECAL if you think they are
needed. The actual code is a little messy since it has been a growing
project.
I don't seem to have any issues with the clock rate since it has problems
during the MFM time and not the FM time. If it had clock problems
I'd suspect it would show while switching between FM and MFM.
I used to reset the step rate after each DOS call but I'm using
the INT 1E and INT 13 AH=0 method and the step rates for the
360K and the 1.44M seem to be OK now. It is just that the 360K
seems to get lost after the 1.44M steps tracks. The ReadID on
the 360K doesn't seem to help.
Dwight