[gPXE] int 10h problem

何闯 justhechuang at 163.com
Fri Apr 1 07:52:28 EDT 2011


Deal all,
I just tested int 0x10 BIOS interrupt to draw some pictures.
However, when I coded the follow to enter 640X480 video mode, it seems that the actual video mode is 640X100,
I draw a rectangle with range(0,0, 640, 480) to verify, and it resulted in range(0,0, 640,100), about a quarter square of a rectangle.


And I noticed that 320X200 video mode is OK, and 320X200 == 640X100, is that mean my machine can hand only 64000 pixels?
Can anyone tell me why?


///////////////////////////////////////////////////////////////////////////////////////////////////////
void setvga()     
{
__asm__ __volatile__ ( REAL_CODE ( "movw $0x4f02, %%ax\n\t"  //ax=0x0012 here seem stay in the text mode
"movw $0x0101, %%bx\n\t"
"int $0x10\n\t" )::);
}


void putpixel(int x,int y,int c)   
{
    if(vediobuf == NULL)
{
   vediobuf = (unsigned char*)phys_to_user(0xa0000); //physic address of graphic mode
}
    *(vediobuf+x+640*y)=c;
}
/////////////////////////////////////////////////////////////////////////////////////////////////////






yours,
soforth
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://etherboot.org/pipermail/gpxe/attachments/20110401/e5635ca4/attachment.html>


More information about the gPXE mailing list