delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1998/04/14/02:50:47

Date: Tue, 14 Apr 1998 09:47:57 +0300 (IDT)
From: Eli Zaretskii <eliz AT is DOT elta DOT co DOT il>
To: Ice <dpsobot AT bc DOT sympatico DOT ca>
cc: djgpp AT delorie DOT com
Subject: Re: ES Segment
In-Reply-To: <3532D63A.95A32D37@bc.sympatico.ca>
Message-ID: <Pine.SUN.3.91.980414094739.2344K-100000@is>
MIME-Version: 1.0

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.

- Raw text -


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