Date: Sun, 18 Oct 1998 13:43:33 +0200 (IST) From: Eli Zaretskii X-Sender: eliz AT is To: Gero Timann cc: djgpp AT delorie DOT com Subject: Re: UDMA <-> getting physical address of an array ? In-Reply-To: <36287AC1.743A9501@mcis.de> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Reply-To: djgpp AT delorie DOT com On Sat, 17 Oct 1998, Gero Timann wrote: > Another point is, that there is no time to use dosmemget. Takes about > 100mikroseconds only for the skelett. This is already the time i can > use between two samples ! No more operations possible ! > Last night i've experimented with the farpoke-family (i've learned this > from a DJGPP vbe-programing-example-program). These seams the real > answer to my question. Unless the buffers you need to move are very small, your conclusions are wrong: dosmemget/put is *faster* than _farptr functions, because it uses REP MOVSD after some initial setup. Section 18.4 of the DJGPP FAQ list includes a detailed description of the different methods to move data to and from conventional memory, and discusses the relative merits of each method; I suggest you read it. > But if i know the real physical adress from an array, let a[], i > can fill this direct by DMA. Looks much simpler. Is this cs:? No. If anything, it should be DS, not CS. But the only way to get the physical address is via the VDS API, or by using a buffer in conventional memory where all addresses are mapped 1:1, and so physical and virtual addresses are the same. > Sorry about my silly questions. But, i'm a DJGPP- and DPMI-newbe. > Therefore all these things looks not as simple for me as for you. > Let me know better ways, please. A better way is to search the FAQ. It has DMA in the index.