Dwight wrote:
One of the other things I remember about these
controllers
is that at 32us, you need to read the data byte within
27us of DRQ. I would think that this would hold for
13.5us for a 16us transfer. It truely doesn't look like
there is a way to do it with anything but DMA.
I posted a loop with a worst-case (minimum) cycle count
of 12 cycles, which is 13.48 us. It looks like mine is
under the wire (barely). It doesn't need DMA but it does
need the automatic wait state generation. So it's
fortunate that the Coco FDC has it.
Tony's posting suggests that it is necessary to rearm the
wait state gnerator for every byte. If that's true, my
loop will take too long. But a look at the NitrOS9
cc3disk11.a source file's read loop suggests that it
is not necessary. Their loop is:
L0197 lda >$FF4B Get byte from controller
sta ,x+ Store into sector buffer
* stb >$FF40 Drive info
nop -- blobstop fix
bra L0197 Keep reading until sector done
I'm not sure what the "blobstop" fix is, or why there's a "stb
>$FF40"
in the loop, but the store is commented out. I think the loop
I proposed should drop in here just fine.
Eric