Mail Archives: djgpp/1995/03/06/17:44:48
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,®s,®s,&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 -