Relay-Version: version B 2.10 5/3/83; site utzoo.UUCP Path: utzoo!mnetor!seismo!lll-crg!lll-lcc!pyramid!oliveb!spud From: spud@oliveb.UUCP (John E. Purser) Newsgroups: comp.sys.ibm.pc Subject: Re: DMA Message-ID: <197@oliveb.UUCP> Date: Tue, 11-Nov-86 20:00:32 EST Article-I.D.: oliveb.197 Posted: Tue Nov 11 20:00:32 1986 Date-Received: Wed, 12-Nov-86 06:41:16 EST References: <1189@dataio.UUCP> Reply-To: spud@oliven.UUCP (John Purser) Organization: Olivetti ATC; Cupertino, Ca Lines: 32 In article <1189@dataio.UUCP> bright@dataio.UUCP (Walter Bright) writes: >I am interested in copying pixel data from one page to another on the >IBM EGA. This involves moving 128k bytes of data. Doing it with a >REP MOVSW takes about 1/2 second (on an AT), which is too slow. >Does anyone know >how the DMA channel could be programmed to do this? It is not clear >from the documentation how to program the DMA chip, or even if >it is capable of memory-to-memory transfers. How did you arrive at the time of 1/2 second? The way I figure this it should only take about .05 seconds. According to the 286 programmers referance guide a REP MOVSW takes 5+(4*CX) clocks. In your example that would be 64k words times 4 plus 5 or a total of 262,149 clocks. The clock speed of the AT is 6Mhz so dividing the 262,149 by 6,000,000 leaves us with .045 seconds. It may be that the video RAM is slow and requires a wait state or 2 on each access but thats a memory limitation and it won't help to use DMA in that case. Now all this is just numbers and I'm not a hardware type so let me back this up with some experience. I've done some programming on an ATT 6300 that uses an 8086 at 8Mhz. I've written routines to move 32k bytes to video RAM and it happens in the blink of an eye. It runs at a faster clock and I'm only moving 1/4 the data but according to the programmers guide it takes 17 clocks per rep on an 8086 for a MOVSW instruction so it should be about the same time as on your system. In summary you may want to investigate further using the CPU to do the move. John Purser Olivetti ATC Cupertino CA.