From: "Michael Wahl, Picoquant" 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 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit 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