Date: Tue, 14 Apr 1998 09:47:57 +0300 (IDT) From: Eli Zaretskii To: Ice cc: djgpp AT delorie DOT com Subject: Re: ES Segment In-Reply-To: <3532D63A.95A32D37@bc.sympatico.ca> Message-ID: MIME-Version: 1.0 Content-Type: TEXT/PLAIN; charset=US-ASCII Precedence: bulk On Mon, 13 Apr 1998, Ice wrote: > I'm trying to make a VESA library. To get the VESA information, you need > to assign a pointer to ES:DI, ax=0x4F00 and call interrupt 0x10. When I > invoke the interrupt using int86() the memory is untouched. I have been > successful at assigning pointers to DS:DX. > What am I doing wrong? You are using a wrong function. `int86' cannot be used to call interrupts which need pointers to buffers. The library reference page for `int86' explicitly says that it only supports a subset of all possible DOS/BIOS interrupts. You need to use `__dpmi_int' library function. See sections 18.1, 18.2 and 18.4 of the DJGPP FAQ list (v2/faq210b.zip from the same place you get DJGPP), for a lot more about this issue. In general, any technique that calls real-mode services or examines portions in conventional memory will need some work before it will run in DJGPP. I suggest studying chapters 17 and 18 of the FAQ before using any such code.