knudsen@ihnss.UUCP (11/08/83)
The good news is: Coco can do DMA. Bad nnews: not all the 6809 pins needed to do the most efficient job of it are brought out to the cart connector. To steal a DMA cycle (from the CPU, not the SAM), your peripheral must first assert a lead that tells the 6809E to suspend operation and get off (tri-state, hi-Z) the busses AFTER it completes its current instruction. I forget this lead's name; it does not sound anything like "DMA". I believe it is on the cart connector, tho I may be thinking of the conn signal that kicks other *peripherals* (inlcuding memories) off the bus (for phantom addressing). A 6809 pin definitely not connected to anything is the BA (or BS?) which tells the peripheral that the 6809 has indeed finsihed its last instruction and relinquished the bus. Without this lead, your peripheral DMA device must blindly wait a "safe" number of clock cycles after asserting the first signal before using the bus. The worst-case 6809 instr is CWAI, taking about 21 cycles. OS-9 would probably shoot anyone caught using that one, so the next longest instr is ?? (sorry, my manuals are at home). Sooo, best to transfer several bytes once you get the bus, so as to cover that overhead. You can, of course, solder onto the BA and BS 6809 pins and bring them out the back thru a 'LSTTL buffer -- I've considered installing some kind of connector on the back for that and other signals the outside should have. Bottom line: the Coco didn't do much to help us run DMA, but it did nothing to stop us either! mike k