Mail Archives: djgpp/1995/03/09/21:44:51
Hello, it's me again! I'm having a new problem with performing VESA
interrupts. I managed to get interrupt 0x4f00 working, and it moves
data into a DOS buffer that's been allocated with
_go32_dpmi_allocate_dos_mem.
The interrupt is generated using _go32_dpmi_simulate_int. My problem now is
that I'm trying to use a similar interrupt - int 0x4f01 - in exactly the same
way, but the computer just hangs when the interrupt is generated. Has
anyone else had similar problems? Here's the code for my function:
void getmodeinfo (word mode)
{
_go32_dpmi_registers r;
_go32_dpmi_seginfo sinfo;
sinfo.size=(256+15)/16; /* Need 256 bytes */
_go32_dpmi_allocate_dos_memory(&sinfo); /* grab some DOS memory */
memset(&r,0,50); /* zero out the registers */
r.x.ax=0x4f01; /* select mode info int */
r.x.cx=mode; /* set up registers */
r.x.ss=r.x.sp=0;
r.x.di=sinfo.rm_offset; /* point segments to */
r.x.es=sinfo.rm_segment; /* buffer in DOS mem */
_go32_dpmi_simulate_int (0x10,&r); /* generate interrupt */
dosmemget(sinfo.rm_segment*16, 256, (void *)&vesainfo);
}
Maybe I'm missing something really simple and I'm going to feel stupid
about it later, but for now I'm stuck.
I appreciate any help. Thanks a lot!
Lars R. Damerow
bb07779 AT bingsuns DOT cc DOT binghamton DOT edu
(ugly, isn't it?)
- Raw text -