[Coco] Re: RESET on CoCo 1/2 vs CoCo 3
KnudsenMJ at aol.com
KnudsenMJ at aol.com
Sat Jan 24 23:06:10 EST 2004
In a message dated 1/24/04 3:50:45 PM Eastern Standard Time,
Torsten at Dittel.info writes:
> Ah, by the way, I already asked that some time ago and got some replies
> (I guess I didn't understand them exactly because I don't remember the
> reasons) whether it shouldn't be possible doing some kind of "DMA" if a
> device from the bus can write data to RAM. I guess it's stupid, because
> the CPU is halted while that SLENB* condition so you don't really win
> using that method.
DMA wins if and only if you have a block of data to transfer, enough to make
up the overhead of grabbing the bus and giving it back, and after the grab
waiting about a dozen cycles to make sure the last 6809 instruction has finished.
Note that a dozen CPU cycles would only let the CPU itself move maybe 2
bytes, so the break-even point isn't that many bytes.
But once your peripheral has the bus, it can blast data into/out of RAM at
the nearly 2 MHz rate that the CPU can. Would really pay for a disk
controller, maybe for a serial interface that buffered a few bytes.
Your DMA peripheral must have hardware to increment the address so as to
steer the block of data, and hardware to count the number of bytes moved. Failure
in any of this hardware (or its programming by the device driver) will crash
you good and hard.
Other than that, DMA is wonderful stuff, and should be used wherever
performance matters. --Mike K.
More information about the Coco
mailing list