delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/06/21/07:19:29

Date: Sun, 21 Jun 1998 14:18:27 +0300 (IDT)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
To: Bernhard Gleich <bgleich AT blitz DOT chemie DOT uni-ulm DOT de>
cc: djgpp AT delorie DOT com
Subject: Re: physical memory location
In-Reply-To: <358bd212.0@news.uni-ulm.de>
Message-ID: <Pine.SUN.3.91.980621141810.5335N-100000@is>
MIME-Version: 1.0

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).

- Raw text -


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