Modo 13h - Mode 13h

Paleta de 256 colores VGA predeterminada

El modo 13h es el modo estándar de 256 colores en hardware de gráficos VGA introducido en 1987 con IBM PS / 2 . Tiene una resolución de 320 × 200 píxeles . Se usó ampliamente en juegos de computadora y software de arte / animación de fines de la década de 1980 y principios y mediados de la de 1990. "13h" se refiere al número del modo en el BIOS VGA . La "h" significa hexadecimal .

El modo 13h proporciona a los programadores un bloque lineal de memoria de vídeo de 320x200 , donde cada byte representa un píxel. Esto permite facilitar la programación a expensas del acceso a otras funciones útiles del hardware VGA.

Dada la relación de aspecto de una pantalla de resolución de 320 × 200 para usar en una pantalla de 4: 3, el Modo 13h no tiene píxeles cuadrados .

Detalles técnicos

El modo 13h es algo curioso, porque el VGA es un dispositivo plano desde la perspectiva del hardware y no es adecuado para operaciones de gráficos gruesos. El VGA tiene 256  KiB de memoria de video que consta de 4 bancos de 64 KiB, conocidos como planos (o 'mapas' en la documentación de IBM). La disposición de la memoria plana divide los píxeles horizontalmente en grupos de cuatro. Para cualquier byte dado en la apertura de la memoria de video de 64 KiB de la PC, se puede acceder a cuatro píxeles en la pantalla seleccionando los planos requeridos. Esto es más complicado para el programador, pero permite el acceso a toda la memoria de video disponible y otros beneficios (ver Modo X ).

El modo 13h, sin embargo, permite al programador acceder al VGA en forma "gruesa" (lineal), donde cada dirección consecutiva en la apertura representa un píxel consecutivo en la pantalla. No es necesario manipular los planos para seleccionar los píxeles correctos para modificar o leer. Esto se logra usando la configuración VGA 'Chain 4' en la que los dos bits más bajos de la dirección de apertura de 16 bits se utilizan para seleccionar el plano para escribir / leer. El resultado es que el programador tiene un modelo de acceso simple; la desventaja es que ahora solo se puede acceder a 2 14 (16 KiB) del espacio de direcciones del plano de video (los otros 2 bits se utilizan para seleccionar planos), por lo que solo se puede direccionar un total de 64 KiB (4 × 16 KiB). Los 48 KiB superiores de cada plano no se utilizan en este modo.

A diferencia de SVGA y de profundidades de color más altas, el Modo 13h, parte del conjunto de modos de video MCGA , tiene 18 bits de color, 6 por canal. Los datos de la paleta no se almacenan en la memoria per se , sino que se modifican, leen y escriben mediante llamadas de puerto de E / S de bajo nivel, en los registros DAC .

Los datos de la paleta de colores a menudo se copiaban desde los puertos de bajo nivel uno a la vez a un lugar en la memoria después de los datos de la pantalla para que los colores pudieran guardarse junto con los píxeles a los que pertenecían. Una captura de pantalla en modo 13h tiene simplemente 64.000 bytes de valores de 0 a 255, cada uno de los cuales es un índice de un color de una paleta conocida de varios colores. Si la paleta de colores está desordenada o totalmente incorrecta, una hoja verde aparecerá azul, o cualquier otro color posible, dependiendo de para qué se configuró ese color en particular, cuál en particular de 256.

Debido a la forma en que se asignan los fragmentos de memoria en dicho entorno, los bytes en la dirección alta 0xA000, la dirección baja 64000 a 64768, se pueden escribir sin efectos negativos. Esto permite al programador guardar los bytes adicionales, 256 (colores) × 3 (canales de color) = 768 bytes, al final del archivo de captura de pantalla. Estos deben leerse nuevamente y escribirse en el puerto de color para que cambien, cuando se carga una imagen que contiene un pie de página con información de color. Un método utilizado con esto fue tener una paleta global y combinar los colores de una paleta de colores anterior con una paleta de colores nueva. Esto significaba cambiar el índice de cada píxel, donde apuntaría a una coincidencia casi perfecta de un color del conjunto de colores antiguo al nuevo. Esto también tenía inconvenientes, ya que a veces no había suficientes gradientes y aparecían artefactos y demás.

No es esencial configurar el modo de gráficos a través del BIOS; es posible cambiar el modo gráfico en modo protegido de 32 bits, aunque un poco más complicado. Implica escribir datos de tamaño en el controlador VGA.

Variantes

Un modo alternativo plano de 256 colores está disponible al deshabilitar el modo Cadena 4 (desencadenamiento). Los modos de video creados con esta técnica se denominan colectivamente Modo X , aunque el uso original de ese término era para un modo VGA que también tenía píxeles cuadrados. Si bien estos modos (junto con muchos otros modos VGA posibles) no fueron documentados específicamente por IBM, las funciones y características del hardware VGA utilizadas para implementarlos se documentaron al menos ya en 1988, en la Referencia técnica de la interfaz de hardware PS / 2 .

Notación

En lenguaje ensamblador x86, el modo se ingresa cuando AL es 13h, AH es 0 y se ejecuta BIOS INT 10h . Sin embargo, la "h" a veces se elimina para idiomas que no admiten ese método de notación; por ejemplo, se conoce como modo de pantalla 13 en QuickBasic y sus derivados. QuickBASIC tiene su propio esquema de numeración de modo de pantalla y muchos modos de pantalla QuickBASIC tienen números que difieren de los modos de BIOS en los que se basan. En C , el hexadecimal 13 se escribe 0x13.

Referencias

enlaces externos