Dwight Elvey <elvey(a)hal.com> wrote:
If you ignore errors and just deal with the data
transfer,
I'm almost sure a 6809 can keep up.
Ignoring errors gets you into trouble really quickly. I've been
down that path. I designed an 1793-based FDC card for a 1 MHz
6502-based system. To get 8-inch double density working, I had
to have the hardware provide a second decode for the FDC data
register that when accessed would halt the processor until the
FDC asserted either DRQ or IRQ, and write an interrupt handler that
would recognize that the return address was in the transfer loop and
replace it with the address of the error handler.
The 6809 tends to take at least as many cycles for simple instructions
as the 6502, and sometimes more. In an inner transfer loop of a
device driver, the 6809 will win if you need to do unalinged transfers
because it can do a 16-bit increment. But I'm not convinced that
it's good enough.
IIRC, on the Color Computer you can turn off the video and run
the processor at double speed. That should probably be sufficient,
but somewhat ugly unless you didn't want to use the console.
It is just a matter
of counting the cycles carefully and not having any
extra operations.
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.
Cheers,
Eric