From: "Charles Sandmann" Newsgroups: comp.os.msdos.djgpp Subject: Re: XMS with HIMEM? (and DMA) Date: Tue, 27 Nov 2001 13:41:38 Organization: Aspen Technology, Inc. Lines: 21 Message-ID: <3c039812.sandmann@clio.rice.edu> References: <3C03AFFB DOT 543A5BDB AT pq DOT fta-berlin_dot_de> NNTP-Posting-Host: dcloan.hou.aspentech.com X-Trace: selma.aspentech.com 1006890852 27870 10.32.115.107 (27 Nov 2001 19:54:12 GMT) X-Complaints-To: postmaster AT aspentech DOT com NNTP-Posting-Date: 27 Nov 2001 19:54:12 GMT X-NewsEditor: ED-1.5.8 To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com > 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. 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).