www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/10/18/07:43:28

Date: Sun, 18 Oct 1998 13:43:33 +0200 (IST)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
X-Sender: eliz AT is
To: Gero Timann <geti AT mcis DOT de>
cc: djgpp AT delorie DOT com
Subject: Re: UDMA <-> getting physical address of an array ?
In-Reply-To: <36287AC1.743A9501@mcis.de>
Message-ID: <Pine.SUN.3.91.981018134316.2705c-100000@is>
MIME-Version: 1.0
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:<a>? 

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.

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019