Mail Archives: djgpp/1998/06/21/07:19:29
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 -