Introducción

El acrónimo VBE significa “VESA BIOS Extensions”. El acrónimo VESA significa “Video Electronics Standard Association”. Del acrónimo BIOS creo que no hace falta aclarar el significado. Es decir que desglosar las siglas “VBE” nos lleva da algo así como “Extensiones de la BIOS de la Asociación de Estandares de Electrónica de Video”. Simplificando, las VBE son unas extensiones a las rutinas de manejo de video de la BIOS.

Las rutinas de manejo originales de la BIOS se manejan a través de una interrupción, la 10h, y permiten un manejo de la placa de video suficiente si se usa el modo texto, o modo gráfico de baja resolución. Aunque hoy en día sería más correcto quizás decir modo gráfico de muy baja resolución, ya que hablamos de resoluciones de 320×200, o 640×480, y menos de 256 colores. Las VBE habilitan configuraciones que hoy en día consideraríamos más normales. Y más allá de que tienen un grado de standarización, también existen funciones particulares asociadas a cada hardware, que permiten sacar mayor provecho del mismo.

En el caso del Bochs, por ser este un simulador, naturalmente que todo el tema tiene un grado de abstracción de la realidad, ya que al programar las VBE no estamos programando realmente ningún hardware. No obstante, el Bochs si tiene un BIOS de video, que se controla de una forma particular, similar a las de las placas del mercado, y que permite modificar sus registros, ejecutar comandos, etc, que se verán reflejados en la pantalla de la simulación.

Una referencia sobre esta Bios, llamada genéricamente “Bochs Graphic Adapter” se puede encontrar en http://wiki.osdev.org/BGA . Aquí intentaremos complementar esa información, enfocándonos en los usos prácticos que deban usarse para resolver la Guia de TP de la materia.

Interfaz con el sistema

La programación del adaptador gráfico se hace a través de dos puertos de 16 bits, los puertos 0x01CE y 0x01CF.

  • El puerto 0x01CE se usa como índice de la función que se desear realizar.
  • El puerto 0x01CF se usa para leer o escribir los datos asociados a la función seleccionada.

Por lo tanto, cada comando involucra al menos dos accesos a puertos, la primera para seleccionar la función, y la segunda para ejecutar la transacción en si. Ciertas funciones requieren que las extensiones estén deshabilitadas para poder ejecutarse correctamente, lo que puede implicar más accesos a puertos antes y después de realizar la función deseada.

Memoria de video

La bios del BGA admite dos modos de funcionamiento:

  • modo compatiblidad con la arquitectura PC tradicional, que ubica la memoria de video de modo texto en la dirección física 0xB8000, y la memoria de video gráfica en un segmento de 64 Kb a partir de la dirección física 0xA0000. El acceso a toda la memoria de video en modo gráfico se realiza en esa dirección, y es neceserio ejecutar los comandos de cambio de página para acceder a otras secciones de la pantalla.
  • modo Framebuffer, que ubica la memoria de video gráfica a partir de la dirección linea 0xE0000000, simplificando el acceso a todos los puntos de la misma, sin comandos intermedios.

Para habilitar el modo Framebuffer, es necesario setear el bit correspondiente en el comando de habilitación de VBE.