vbe.c revision 28ff579f222d4ec9d39def432c511de75b4af41b
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// ============================================================================================
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// Copyright (C) 2002 Jeroen Janssen
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// This library is free software; you can redistribute it and/or
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// modify it under the terms of the GNU Lesser General Public
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// License as published by the Free Software Foundation; either
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// version 2 of the License, or (at your option) any later version.
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// This library is distributed in the hope that it will be useful,
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// but WITHOUT ANY WARRANTY; without even the implied warranty of
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// Lesser General Public License for more details.
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// You should have received a copy of the GNU Lesser General Public
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// License along with this library; if not, write to the Free Software
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// ============================================================================================
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// This VBE is part of the VGA Bios specific to the plex86/bochs Emulated VGA card.
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// You can NOT drive any physical vga card with it.
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// ============================================================================================
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// This VBE Bios is based on information taken from :
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// - VESA BIOS EXTENSION (VBE) Core Functions Standard Version 3.0 located at www.vesa.org
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// ============================================================================================
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill * Sun LGPL Disclaimer: For the avoidance of doubt, except that if any license choice
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill * other than GPL or LGPL is available it will apply instead, Sun elects to use only
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill * the Lesser General Public License version 2.1 (LGPLv2) at this time for any software where
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill * a choice of LGPL license versions is made available with the language indicating
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill * that LGPLv2 or any later version may be used, or where a choice of which version
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill * of the LGPL is applied is otherwise unspecified.
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// defines available
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// disable VESA/VBE2 check in vbe info
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill//#define VBE2_NO_VESA_CHECK
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// use bytewise i/o by default (Longhorn beta issue, not in released Vista)
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// Use VBE new dynamic mode list. Note that without this option, no
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// checks are currently done to make sure that modes fit into the
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// framebuffer!
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// The current OEM Software Revision of this VBE Bios
6a72db4a7fa12c3e0d1c1cf91a07390739fa0fbfBryan Cantrill// FIXME: 'merge' these (c) etc strings with the vgabios.c strings?
#ifdef DEBUG
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBOX
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBOX
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
static void dispi_set_bank_farcall()
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_BYTEWISE_IO
#ifdef VBE_NEW_DYN_LIST
#ifdef VBE_NEW_DYN_LIST
if (!using_lfb)
return cur_info;
return cur_info;
cur_info++;
cur_info++;
if (!using_lfb)
return cur_info;
return cur_info;
cur_info++;
cur_info++;
#if defined(DEBUG)
#ifndef VBOX
#ifndef VBOX
#ifdef VBE_NEW_DYN_LIST
#ifdef VBE_NEW_DYN_LIST
#ifdef DEBUG
vbe2_info = 0;
#ifdef VBOX
#ifdef VBE2_NO_VESA_CHECK
#ifdef DEBUG
if (vbe2_info)
#ifdef VBE2_NO_VESA_CHECK
#ifdef DEBUG
if (vbe2_info)
#ifdef VBE_NEW_DYN_LIST
#ifdef DEBUG
cur_mode++;
cur_info++;
#ifdef DEBUG
cur_mode++;
cur_info++;
#ifdef DEBUG
if (cur_info != 0)
#ifdef VBE_NEW_DYN_LIST
Bit16u i;
#ifdef DEBUG
#ifdef VBE_NEW_DYN_LIST
for (i = 0; i < sizeof(ModeInfoBlockCompact); i++)
Bit8u b;
#ifdef DEBUG
no_clear=((BX & VBE_MODE_PRESERVE_DISPLAY_MEMORY) == VBE_MODE_PRESERVE_DISPLAY_MEMORY)?VBE_DISPI_NOCLEARMEM:0;
goto leave;
if (cur_info != 0)
#ifdef VBE_NEW_DYN_LIST
Bit16u x, y;
#ifdef DEBUG
#ifdef DEBUG
#ifdef VBE_NEW_DYN_LIST
#ifdef VBE_NEW_DYN_LIST
dispi_set_bank(0);
#ifdef DEBUG
if (i != VBE_DISPI_INDEX_ENABLE) {
switch(GET_DL()) {
#ifdef DEBUG
#ifdef DEBUG
#ifdef DEBUG