Modo 13h
Modo 13h es el modo estándar de 256 colores en hardware de gráficos VGA presentado 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 de la década 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 video de 320x200, donde cada byte representa un píxel. Esto facilita la programación a expensas del acceso a otras características ú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 una especie de curiosidad, porque el VGA es un dispositivo plano desde la perspectiva del hardware y no es adecuado para la operación de gráficos voluminosos. 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 planar 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 "chunky" (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 VGA 'Cadena 4' Configuración en la que los dos bits más bajos de la dirección de apertura de 16 bits se utilizan para seleccionar el plano desde el que escribir/leer. El resultado es que el programador tiene un modelo de acceso simple; la desventaja es que ahora solo se puede acceder a 214 (16 KiB) del espacio de direcciones del plano de video (los otros 2 bits se usan para seleccionar planos), por lo que solo se puede acceder a un total de 64 KiB. direccionable (4 × 16 KiB). Los 48 KiB superiores de cada plano no se utilizan en este modo.
A diferencia de SVGA y 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 RGB. Los datos de la paleta de colores 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, a los registros DAC.
Los datos de la paleta 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 es 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 múltiples colores. Si la paleta de colores está desordenada o es totalmente incorrecta, una hoja verde aparecerá azul o de cualquier otro color posible, dependiendo de para qué se configuró ese color en particular, cuál de los 256.
Debido a la forma en que se asignan los fragmentos de memoria en dicho entorno, los bytes en el segmento 0xA000 del desplazamiento 64000 al 64768 se pueden escribir sin efectos negativos. Esto le 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 de información de color. Un método utilizado con esto fue tener una paleta global y hacer coincidir los colores de una paleta de colores antigua con una nueva paleta de colores. Esto significó cambiar el índice de cada píxel, donde apuntaría a una combinación 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 cosas por el estilo.
No es esencial configurar el modo de gráficos a través del BIOS; es posible cambiar el modo de gráficos en el modo protegido de 32 bits, aunque es un poco más complicado. Implica escribir datos de tamaño en el controlador VGA.
Variantes
Hay disponible un modo planar alternativo de 256 colores al desactivar 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 posibles modos VGA) no fueron documentados específicamente por IBM, las funciones y características del hardware VGA utilizadas para implementarlas fueron documentadas al menos desde 1988, en el PS/2 Hardware Interface Technical Referencia.
Notación
En lenguaje ensamblador x86, se ingresa al modo cuando AL es 13h, AH es 0 y se ejecuta BIOS INT 10h. Sin embargo, la "h" a veces se descarta 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 BIOS en los que se basan. En C, el hexadecimal 13 se escribe 0x13.
Contenido relacionado
Cabrestante
ISAM
VFW-Fokker