/* * platform specific functions for tem */ int plat_stdout_is_framebuffer(void) { if (vbe_available() && VBE_VALID_MODE(vbe_get_mode())) { return (1); } return (0); }
void do_vesa_int() { int err_code = VBE_ERROR_GENERAL_FAIL; #if 0 v_printf( "VBE: function 0x%02x, bx = 0x%04x cx = 0x%04x, dx = 0x%04x, es = 0x%04x, di = 0x%04x\n", (unsigned) _AL, (unsigned) _BX, (unsigned) _CX, (unsigned) _DX, (unsigned) _ES, (unsigned) _DI ); #endif switch(_AL) { case 0x00: /* return VBE controller info */ err_code = vbe_info(SEGOFF2LINEAR(_ES, _DI)); break; case 0x01: /* return VBE mode info */ err_code = vbe_mode_info(_CX, SEGOFF2LINEAR(_ES, _DI)); break; case 0x02: /* set VBE mode */ err_code = vbe_set_mode(_BX); break; case 0x03: /* get current VBE mode */ err_code = vbe_get_mode(); break; case 0x04: /* save/restore state */ err_code = vbe_save_restore(_DL, _CX, SEGOFF2LINEAR(_ES, _BX)); break; case 0x05: /* display window control (aka set/get bank) */ err_code = vbe_display_window(_BH, _BL, _DL /* must be _DX !!!*/); break; case 0x06: /* set/get logical scan line length */ err_code = vbe_scan_length(_BL, _CX); break; case 0x07: /* set/get display start */ err_code = vbe_display_start(_BL, _CX, _DX); break; case 0x08: /* set/get DAC palette format */ err_code = vbe_dac_format(_BL, _BH); break; case 0x09: /* set/get palette data */ err_code = vbe_palette_data(_BL, _CX, _DX, SEGOFF2LINEAR(_ES, _DI)); break; case 0x0a: /* return VBE PM interface */ err_code = vbe_pm_interface(_BL); break; case 0x10: /* set/get display power state */ err_code = vbe_power_state(_BL, _BH); break; default: err_code = VBE_ERROR_UNSUP; #ifdef DEBUG_VBE v_printf( "VBE: unsupported function 0x%02x, retval = %d, bx = 0x%04x cx = 0x%04x, dx = 0x%04x, es = 0x%04x, di = 0x%04x\n", (unsigned) _AL, err_code, (unsigned) _BX, (unsigned) _CX, (unsigned) _DX, (unsigned) _ES, (unsigned) _DI ); #endif } if(err_code >= 0) { _AL = 0x4f; _AH = (unsigned char) err_code; } }