Mail Archives: djgpp/1998/04/14/02:50:47
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 -