[Coco] DMA in (Nitr)OS-9 LII?
    Joel Ewy 
    jcewy at swbell.net
       
    Fri Jul 21 10:56:53 EDT 2006
    
    
  
My comprehension is admittedly feeble.  DMA under LI seems  straightforward.  Assuming you have appropriate hardware, you set  up the addresses in the DMA controller, and it does its job.
  
  In LII though, the device driver's buffers might be mapped out when the  DMA controller decides to write to memory, no?  I know that the  page containing the I/O addresses is always mapped in.  Is there  any RAM in that block?  Is DMA impossible in LII (with the  exception of block transfer instructions in 6309s, etc) short of very  complex hardware schemes, such as using a DMAC that can write directly  to memory blocks without respect to their being mapped into the CPU's  address space?
  
  I suppose one could build a device that integrates a DMAC, some I/O  devices that could benefit from DMA (disk controllers, and maybe  ethernet come to mind), and some SRAM.  The DMAC would fill up the  SRAM, then interrupt the CPU when it is full.  I'm not sure how  much benefit this would be, but it would doubtless reduce interrupt  load on the CPU, and allow it to get a lot done while I/O was going  on.  Disto's Super Controller II works something like this.
  
  JCE
  
  
    
    
More information about the Coco
mailing list