Message-Id: Comments: Authenticated sender is From: "Salvador Eduardo Tropea (SET)" Organization: INTI To: Eli Zaretskii , djgpp AT delorie DOT com Date: Wed, 5 Feb 1997 15:26:22 +0000 MIME-Version: 1.0 Content-type: text/plain; charset=US-ASCII Content-transfer-encoding: 7BIT Subject: Re: DMA problems under Win 3.1 Hi All: > 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? I'll prepare a little program for that. > > 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. Do you know if Windows uses all the 4 rings?, the only way that I imagine to get this difference is if the DJGPP program runs in a different ring than the real mode one. Do you know another case? > 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). I tried it some time ago without much success. SET --------------- 0 -------------------------------- Salvador Eduardo Tropea (SET). Address: Curapaligue 2124, Caseros, 3 de Febrero Buenos Aires, (1678), ARGENTINA TE: +(541) 759 0013