2.7. DMAgic DMA CONTROLLER F018 (Preliminary) 2.7.1. F018 DESCRIPTION DMAGIC is a custom DMA Gate array IC used in the C65. It functions as a DMA controller with a few tricks up its sleeve. Specifically, DMAgic provides the following commands: * COPY -- Copy a block of memory to another area in memory. * MIX -- Perform a boolean Minterm mix of a source block of memory with a destination block of memory. * SWAP -- Exchange the contents of two blocks of memory. * FILL -- Fill a block of memory with a source byte. Special features include: * List-based fetching of DMA command sequences. * Ability to CHAIN multiple DMA command sequences. * Absolute Address access to entire System Memory (8MB). * Blocks can be up to 64K bytes long. * Windowed Block capability using MODulus function. * DMAgic operations yield to VIC video and external DMA accesses. * DMAgic operations can optionally yield to system interrupts. * Interrupted DMAgic operations can be continued/resumed, or cancelled. * Data ReQuest handshaking support for 10 devices. * Independent memory/mapped IO selection for source and destination. * Independent memory tranfer DIRection for source and destination. * Independent MODulus enable for source and destination. * Independent HOLD (fixed pointer) for source and destination. The DMA controller has 4 registers: 0 DMA List address low, Triggers DMA (write only) 1 DMA List address high (write only) 2 DMA List address bank (write only) 3 DMA Status (b7=busy, b0=chained) (read only) (a read will restart an INTerupted DMA operation) Note: Minterms & Subcommand will not be implemented until F018A, at which time the register map will be reorganized & support for the REC added. dma_ctlr = $D700 ;DMA Controller 2.7.2. F018 REGISTERS. F018 DMA CONTROLLER REG R NAME # B7 B6 B5 B4 B3 B2 B1 B0 +-------+-------+-------+-------+-------+-------+-------+-------+ | | __ | __ | ____ | ___ | | | | COMMAND 0 | SADA | SADA | SADA | SADA | INT | CHAIN | OPERATION | | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+-------+-------+ | | | | | | | | | CNT LO 1 | C7 | C6 | C5 | C4 | C3 | C2 | C1 | C0 | (COL) | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ | | | | | | | | | CNT HI 2 | C15 | C14 | C13 | C12 | C11 | C10 | C9 | C8 | (ROW) | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+-------+-------+ | | | | | | | | | SRC LO 3 | SA7 | SA6 | SA5 | SA4 | SA3 | SA2 | SA1 | SA0 | (FILL) | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ | | | | | | | | | SRC HI 4 | SA15 | SA14 | SA13 | SA12 | SA11 | SA10 | SA9 | SA8 | | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ | _ | | | | | | | | SRC BANK 5 | I/O | DIR | MOD | HOLD | SA19 | SA18 | SA17 | SA16 | | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+-------+-------+ | | | | | | | | | DEST LO 6 | DA7 | DA6 | DA5 | DA4 | DA3 | DA2 | DA1 | DA0 | | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ | | | | | | | | | DEST HI 7 | DA15 | DA14 | DA13 | DA12 | DA11 | DA10 | DA9 | DA8 | | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ | _ | | | | | | | | DEST BANK 8 | I/O | DIR | MOD | HOLD | DA19 | DA18 | DA17 | DA16 | | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ +-------+-------+-------+-------+-------+-------+-------+-------+ | | | | | | | | | MOD LO 9 | M7 | M6 | M5 | M4 | M3 | M2 | M1 | M0 | | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ | | | | | | | | | MOD HI 10 | M15 | M14 | M13 | M12 | M11 | M10 | M9 | M8 | | | | | | | | | | +-------+-------+-------+-------+-------+-------+-------+-------+ OPERATIONS: 0 0 COPY 0 1 MIX (MINTERMS ACTIVE) 1 0 SWAP 1 1 FILL (SRC LO = FILL BYTE) ___ PARAMETERS: INT 0 NO INTERRUPTION 1 IRQ/NMI INTERRUPTION CHAIN 0 LAST COMMAND IN LIST 1 PERFORM NEXT COMMAND BOOLEAN MINTERMS: DA 0 | 1 +--------+--------+ | ____ | __ | 0 | SADA | SADA | |0 |1 | SA +--------+--------+ | __ | | 1 | SADA | SADA | |2 |3 | +--------+--------+ THE ABOVE COMMANDS ARE NOT YET IMPLEMENTED, AND SOME OF THE REGISTER BITS DEFINED ARE DIFFERENT IN THE PILOT VERSIONS.