[comp.os.msdos.programmer] DMA questions.DOWN 18

:-) (03/27/91)

In article <1991Feb26.021243.18622@jcnpc.uucp>, jcn@jcnpc.uucp (James C. Nugen) writes:
> In article <27c52136@ralf> Ralf.Brown@B.GP.CS.CMU.EDU writes:
>>In article <8bl2yqS00WB401Skhj@andrew.cmu.edu>, Peter John Skelly <ps2x+@andrew.cmu.edu> wrote:
>>}Does anyone know if it is possible to program the dma chip used in pc's to
>>}do memory to memory copies.  I've heard both ways, but if someone knows for
>>
>>My understanding is that memory-memory DMA is only possible using channels 0
>>and 1, and channel 0 is used for DRAM refresh.	That would make things 
>>rather
>>tricky even if possible at all.
>>--
> I have looked at using the DMA controller to move images from main memory
> to VGA memory before.  According to the Intel databook on the 8237 DMA
> controller, memory-to-memory moves use channel 0 as the source and channel
> 1 as the destination.  As was stated this could be tricky on PC's because
> channel 0 is used for DRAM refresh.  However, it should work fine on AT
> and/or higher class machines because DRAM refresh is done using seperate
> hardware thereby freeing DMA channel 0.
-- 

This is theoretically true; however, the hardware support is missing on
all (or most) AT clones.  The problem are missing signals from the DMA
controller needed for mem-mem transfers, the data lines are fine.
This was true back in 1985 when I was BIOS programming and should still
hold true.  I know about this because initially I tried to implement DMA
for INT 15h block-transfers to avoid protected mode.
Some chipsets may now support it, but certainly not to maintain 
'AT compatibility'.  Real IBM ATs never supported this.

-{JD}-  Jeff (Douglass@DavidSys.com)  David Systems, Sunnyvale CA,(408)720-8000
    "Never count on the inevitable until it happens. . ."