Eric Smith <eric(a)brouhaha.com> wrote:
Don't imagine that you can just write a loop (or inline code)
to transfer a byte every 16 us. You *must* poll the DRQ bit,
because the motor speed control is nowhere near good enough to
maintain a constant transfer rate. And even if it did, there's
no guarantee that the machine that wrote the disk wasn't a
little fast or a little slow.
Hi Eric
Yes, you have to watch the DRQ bit. I'm doing it with
a 16 MHz C186 with time to do error checking as well.
I'm not sure how fast the true cycles are on this machine
because of things like caching. I was able to read using
Forth code for about 60H bytes before I'd loose it and
this is noticeably slower than machine code. I think the
60H boundary was related to addressing because several
variations of my code all hit the same limit.
I think one needs to write a nice tight loop, possibly
doing two bytes at a time, and see how many clocks
it really takes.
We shouldn't be too skeptical until we really look at what
the processor can really do. I don't have any info
on 6809's so I am really just spitting into the wind.
Dwight