www.delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/1995/03/06/17:44:48

From: Lars Damerow <bb07779 AT bingsuns DOT cc DOT binghamton DOT edu>
Subject: int86x troubles...
To: djgpp AT sun DOT soe DOT clarkson DOT edu
Date: Mon, 6 Mar 1995 15:52:43 -0500 (EST)

Hello!  I seem to have a similar problem to what everyone else has, but 
I'll try anyway.
	Does anyone know, simply, how to get int86x to properly reference 
a memory buffer?  I'm trying to get information from a VESA driver using 
interrupt 10.  The following is a section of the program.

unsigned char vesainfo[256];

int getvesainfo (void)
{
   union REGS regs;
   struct SREGS s;
   int maj, min;

   regs.x.ax=0x4f00;
   regs.x.di=&vesainfo;
   int86x(0x10,&regs,&regs,&s);
   if (regs.x.ax!=0x4f) { printf("Error: VESA VBE not installed.\n");
                          return(0); }
   maj=vesainfo[5]; min=vesainfo[4];
   printf("\nVESA VBE version %x.%x detected.\n",maj,min);
   return(1);
}

I tried doing with regs.x.di what the docs say to do (ignore es and put 
the address of the buffer in di).  The interrupt works (since the error 
message above is not printed at run-time) but the vesainfo buffer is full 
of 0's when the procedure exits.  It prints
VESA VBE version 0.0 detected.

This is causing so many problems.  Many thanks to anyone who can help me!

				...Lars Damerow
				   bb07779 AT bingsuns DOT cc DOT binghamton DOT edu

- Raw text -


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