diff --git a/linux/vbelib.c b/linux/vbelib.c index 9f177cd111..1600a53749 100644 --- a/linux/vbelib.c +++ b/linux/vbelib.c @@ -554,7 +554,7 @@ int vbeSetDisplayStart(unsigned long offset, int vsync) pixel_num = offset%(unsigned long)curr_mode_info.BytesPerScanLine; if(pixel_num*(unsigned long)curr_mode_info.BytesPerScanLine!=offset) pixel_num++; r.eax = 0x4f07; - r.ebx = vsync ? 0x80 : 0; + r.ebx = vsync ? 0x82 : 2; r.ecx = pixel_num; r.edx = offset/(unsigned long)curr_mode_info.BytesPerScanLine; if(!VBE_LRMI_int(0x10,&r)) return VBE_VM86_FAIL; @@ -566,6 +566,23 @@ int vbeSetDisplayStart(unsigned long offset, int vsync) return retval; } +int vbeSetScheduledDisplayStart(unsigned long offset, int vsync) +{ + int retval; + struct LRMI_regs r; + unsigned long pixel_num; + memset(&r,0,sizeof(struct LRMI_regs)); + pixel_num = offset%(unsigned long)curr_mode_info.BytesPerScanLine; + if(pixel_num*(unsigned long)curr_mode_info.BytesPerScanLine!=offset) pixel_num++; + r.eax = 0x4f07; + r.ebx = vsync ? 0x82 : 2; + r.ecx = offset; + if(!VBE_LRMI_int(0x10,&r)) return VBE_VM86_FAIL; + retval = r.eax & 0xffff; + if(retval == 0x4f) retval = VBE_OK; + return retval; +} + struct realVesaProtModeInterface { unsigned short SetWindowCall; diff --git a/linux/vbelib.h b/linux/vbelib.h index 2e45475d3e..957c2fb550 100644 --- a/linux/vbelib.h +++ b/linux/vbelib.h @@ -209,6 +209,7 @@ extern int vbeSetScanLineLength(unsigned num_pixels); extern int vbeSetScanLineLengthB(unsigned num_bytes); extern int vbeGetDisplayStart(unsigned *pixel_num,unsigned *scan_line); extern int vbeSetDisplayStart(unsigned long offset, int vsync); +extern int vbeSetScheduledDisplayStart(unsigned long offset, int vsync); /* Func 0x08-0x09: Support of palette currently is not implemented.