delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1997/02/05/08:36:08

Date: Wed, 5 Feb 1997 15:21:41 +0200 (IST)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
To: "Salvador Eduardo Tropea (SET)" <salvador AT natacha DOT inti DOT edu DOT ar>
cc: djgpp AT delorie DOT com
Subject: Re: DMA problems under Win 3.1
In-Reply-To: <m0vrmVh-000S1iC@natacha.inti.edu.ar>
Message-ID: <Pine.SUN.3.91.970205151508.2533C-100000@is>
MIME-Version: 1.0

On Tue, 4 Feb 1997, Salvador Eduardo Tropea (SET) wrote:

> What I make?:
>  I touch the DMA registers to make a DMA transfer to the SB 16 from my DJGPP 
> program.
> 
> What happend?:
>  Windows says that I violated the OS integrity.

Can you post a code fragment that triggers this?

>   So now the question is: Why in the hell I can do it from real mode and I 
> can't from PMode.

I guess DJGPP programs interact with Windows through an extra layer of 
the Windows built-in DOS extender and DPMI host, which real-mode 16-bit 
programs avoid.  The extender and the DPMI host might have their own 
ideas about what they do and don't allow.

Did you try to use the VDS (Virtual DMA Services) to achieve what you 
need?  AFAIK, that is the proper way well-behaved extended DOS programs 
should use DMA services.  It doesn't work on vanilla DOS (no memory 
manager + CWSDPMI as DPMI host), but you can easily detect you run on 
Windows and use it only then (if it works).

- Raw text -


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