www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2001/11/29/20:16:58

From: "Michael Wahl, Picoquant" <mick AT pq DOT fta-berlin_dot_de>
Newsgroups: comp.os.msdos.djgpp
Subject: Re: XMS with HIMEM? (and DMA)
Date: Wed, 28 Nov 2001 13:08:21 +0100
Organization: PicoQuant
Lines: 45
Message-ID: <3C04D3B4.9B3BD2A6@pq.fta-berlin_dot_de>
References: <3C03AFFB DOT 543A5BDB AT pq DOT fta-berlin_dot_de> <3c039812 DOT sandmann AT clio DOT rice DOT edu>
NNTP-Posting-Host: quantum.pq.fta-berlin.de
Mime-Version: 1.0
X-Trace: rhodos.FTA-Berlin.de 1006953119 1730 141.16.70.115 (28 Nov 2001 13:11:59 GMT)
X-Complaints-To: usenet AT rhodos DOT fta-berlin DOT de
NNTP-Posting-Date: 28 Nov 2001 13:11:59 GMT
X-Mailer: Mozilla 4.77 [en] (Win98; U)
X-Accept-Language: en
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

Charles Sandmann wrote:
> 
> > I am using XMS for DMA allocated via 0x0900.
> > In the FAQ it says that this should work even with plain HIMEM.SYS which
> > is one of the reasons why I decided for XMS.
> > In practice I find it only works with QUEMM or EMM386 loaded.
> > Otherwise I get Error 0xA0 (All available extended memory is allocated)
> > even though MEM shows plenty of XMS.
> 
> I'll assume you are using CWSDPMI here.  In this case CWSDPMI with
> himem.sys alone consumes the biggest XMS block (which in your case is
> the entire thing) to create DPMI memory.

Charles, many thanks.
Yes. After extensive digging I also found a few references to that in
the
group archives and a hint in FAQ section 15.8.

> http://clio.rice.edu/djgpp/cwsdma2.zip has an example of how to do the
> buffer allocation and physical address mapping.  This is just example
> prototype code - but it has been modified successfully by other people
> to create large DMA buffers (8Mb or so).  My eventual plans were to
> add this as examples on a simtel mirror when it was finished.
> 
> If you would like to contribute any of your code it would certainly
> help people doing this in the future.  Right now I haven't seen a good
> working example that handles mutliple DPMI environments (QDPMI, CWSDPMI,
> Windows).

I am happy to share my code but I must note that what I use was
originally
posted by Neil Jarvis and at this point I have not substantially added
to it.
I am also trying to build some large buffer DMA code handling as many 
environments as possible. In this context I noticed that this is not so
simple under Windows (only considering 9x DOS box). Having allocated
some 
XMS it seems impossible to lock it in Windows. I have not even been
lucky
with DOS memory. It seems that Windows does not map it over the first 
physical MB. Makes sense insofar that there can be multiple dos boxes, 
VMs that could not possibly all be in the first MB. Nevertheless, what 
about the DMPI spec? 

Michael

- Raw text -


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