Date: Sun, 21 Jun 1998 14:18:27 +0300 (IDT) From: Eli Zaretskii To: Bernhard Gleich cc: djgpp AT delorie DOT com Subject: Re: physical memory location In-Reply-To: <358bd212.0@news.uni-ulm.de> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk On 20 Jun 1998, Bernhard Gleich wrote: > : - Use the VDS (Virtual DMA Services) API, which is implemented as > : a bunch of functions of Interrupt 4Bh. See Ralf Brown's > : Interrupt List for details. This has a drawback that your > : program won't work without a real memory manager, like EMM386, > : QEMM or Windows, since CWSDPMI itself doesn't provide the VDS. > > I am using Caldera (DR)DOS with its EMM386 but DPMI=OFF. DPMI > services are provided by CWSDPR0. Dose this configuration allow VDS > services? EMM386 should support VDS. > As an alternative I was thinking of restricting CWSDPMI to the first > e.g. 16 MB of the RAM. The rest could be savely used as DMA > buffer. The data could be accessed by __djgpp_map_physical_memory. So > is there a method to do this restriction to CWSDPMI? You need to configure EMM386 to do that. When a memory manager such as EMM386 is installed, CWSDPMI uses its services to get memory, instead of accessing memory directly. But I don't recommend such a solution (to reserve some physical RAM for DMA) unless you only need the program to run on a single machine. The reason is that this is very tricky to set up, and even impossible on some configurations, due to the memory-mapping feature of the V86 mode (which is what your CPU is switched to by DOS memory managers).