delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2005/11/16/14:01:08

X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f
From: "Roland Zitzke" <NZEONTQYRAHL AT spammotel DOT com>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: Obtaining the physical address of a pointer using PMODE
Date: Wed, 16 Nov 2005 19:45:18 +0100
Organization: Tiscali Germany Usenet
Lines: 43
Message-ID: <dlfunv$2ta4$1@ulysses.news.tiscali.de>
References: <71078E41DDE3E541B024832F34BC3D0DA3081D AT cowexc03 DOT corp DOT mxtr DOT net>
NNTP-Posting-Host: p83.129.38.186.tisdip.tiscali.de
X-Trace: ulysses.news.tiscali.de 1132166719 95556 83.129.38.186 (16 Nov 2005 18:45:19 GMT)
X-Complaints-To: abuse AT tiscali DOT de
NNTP-Posting-Date: Wed, 16 Nov 2005 18:45:19 +0000 (UTC)
X-Priority: 3
X-MSMail-Priority: Normal
X-Newsreader: Microsoft Outlook Express 6.00.2900.2670
X-RFC2646: Format=Flowed; Original
X-MimeOLE: Produced By Microsoft MimeOLE V6.00.2900.2670
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Hello and thanks for the links.
as far as I can tell people were discussing to allocate mory in a fassion 
suitable for different extenders. However if I use pmode/dj, isn't there a 
way to malloc a chunk of memory and somehow detect the physical address of 
this chunk?

DOS with himem.sys installed and WITHOUT EMM386 is the only environment I am 
really interested in.

>
> Charles Sandmann gave us some example code, and put it at
> ftp://clio.rice.edu/djgpp/cwsdma.zip.  He was talking about cleaning
> it up and making it more publicized; I don't know if that ever happened.
>

I had a look at this code and I'm not sure I understand it completely.
In the test routine there's:
...
  dmabuf = AllocateDMABuffer(8*1024*1024);
  if(dmabuf)
    printf("Allocated 8M DMA buffer at DJGPP address 0x%x, physical 0x%x\n",
      dmabuf,Physical_Address(dmabuf));
...

and it appears to me if that's really all that is needed to allocate a chunk 
of memory and obtain the physical address for DMA.
However, the code goes on:

  i = physical_map(0, __djgpp_selector_limit, MAXSIZE, virtual, physical, 
size);
  if(i == 2)
    return printf("CWSDPMI PD in UMB not supported, sorry\n");
  if(i)
...

and I have no idea what that is good for i.e. what I need the physical_map 
function for.
Any hints?

Thanks in advance and regards
Roland


- Raw text -


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