Date: Wed, 5 Feb 1997 15:21:41 +0200 (IST) From: Eli Zaretskii To: "Salvador Eduardo Tropea (SET)" cc: djgpp AT delorie DOT com Subject: Re: DMA problems under Win 3.1 In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII 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).