Date: Wed, 23 Sep 1998 14:14:38 +0300 (IDT) From: Eli Zaretskii To: Doug Gale cc: Endlisnis , djgpp AT delorie DOT com Subject: Re: FW: Inline ASM In-Reply-To: Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk On Mon, 21 Sep 1998, Doug Gale wrote: > If you say it works, I guess it works (ok, ok, I AM wrong :). Have > you tested this under more than one DPMI server (eg. Windows, > CWSDPMI, novell's dpmi server, QEMM, etc)? INT instructions should be (and are) reflected to real mode under all DPMI providers. Int 2Fh has some problem on certain versions of Windows 95, but that's a bug in Windows. > I wonder what the official DPMI spec has to say about this? Here's what it says: 3.2 Default Interrupt Reflection DPMI hosts provide interrupt vectors for all 100h (256 decimal) interrupts for protected mode clients. When the DPMI client initializes, all interrupt vectors will point to code that will automatically reflect the interrupt to real mode (except for Int 31h and Int 21h, AH=4Ch). When a default interrupt reflection handler is executed it will switch to real mode, preserving the EAX, EBX, ECX, EDX, ESI, EDI, and EBP registers and flags, and reflect the interrupt in real mode. When the real mode interrupt returns, the default interrupt reflection code will switch back to protected mode and return with the modified values of EAX, EBX, ECX, EDX, ESI, EDI, EBP, and flags. Segment registers and the stack pointer will not be passed between modes. Therefore, any API that passes pointers or information in segment registers will need to be translated by a DOS extender.