[Coco] CoCo 3 DMA controller

Mike Pepe lamune at doki-doki.net
Sun Aug 27 21:30:50 EDT 2006

Warning: esoteric technical details below.


Would there be any interest in a DMA controller for the CoCo?

I had a thought and just checked the 6809E datasheet for confirmation.

The 6809E will output an AVMA signal when the CPU does not need the bus 
in the upcoming cycle.

I was thinking that these "dead" cycles could be hijacked by a DMA 
controller and used- for something.

If you were to latch this signal (which precedes the E clock high 
transition, you could then feed it into the TSC pin which tri-states the 
address & data busses and R/W. This effectively disconnects the CPU from 
the CoCo hardware.

If you then activated your DMA controller during this cycle, you could 
do a read or write and then release the bus at the end of the cycle. The 
CPU should continue running unimpeded. This would not affect program 
speed at all, since it would just hijack dead cycles.

The DMA controller could just be a simple set of counters and latches. 
During one cycle, do a read of address X. The next DMA cycle, you write 
that to address Y. Increment and repeat.

Seems pretty simple to implement.

Some downsides to this:

1- you can't tell how much bus bandwidth would be available for DMA. 
Using it for something critical might be a problem. The amount of 
available cycles depends heavily on what the CPU is running.

2- it would use the same address mapping as the CPU. If you change your 
memory blocks, your DMA would read/write to the wrong place.

I thought about problem 2. If the DMA controller had 18 bit 
counter/registers, you could also then hijack CAS/RAS on the 512k board 
and directly read and write anywhere in the map, regardless of the CPU's 
memory space. Cool, but more technically challenging.

It would also be an interesting project, though I wanted to throw it out 
there to see if there's really any practical use for such a thing that 
you guys can think of.

It would be kind of neat to really scroll the text screen in hardware. 
Or to scroll a bitmapped "pmode 4" text screen. That's all I can think 
of at the moment.


More information about the Coco mailing list