stringtranslate.com

Modo de texto VGA

El modo de texto VGA fue introducido en 1987 por IBM como parte del estándar VGA para sus computadoras IBM PS/2 . [1] Su uso en las PC compatibles con IBM se extendió durante la década de 1990 y persiste hoy en día para algunas aplicaciones en computadoras modernas. [2] Las características principales del modo de texto VGA son caracteres coloreados ( paleta de 16 colores programable ) y su fondo, parpadeo, varias formas del cursor (bloque/subrayado/estático oculto/parpadeante), [3] y fuentes cargables (con varios tamaños de glifo). [4] La consola Linux tradicionalmente usa modos de texto VGA de hardware, [5] y el entorno de consola Win32 tiene la capacidad de cambiar la pantalla al modo de texto para algunos tamaños de ventana de texto.

Disposición de datos

Buffer de texto

Cada carácter de la pantalla está representado por dos bytes alineados como una palabra de 16 bits a la que la CPU puede acceder en una sola operación. El byte inferior (o de carácter) es el punto de código real para el conjunto de caracteres actual, y el byte superior (o de atributo) es un campo de bits utilizado para seleccionar varios atributos de vídeo, como color, parpadeo, conjunto de caracteres, etc. [6] Este esquema de pares de bytes se encuentra entre las características que la VGA heredó de la EGA , la CGA y, en última instancia, de la MDA .

  1. ^ Dependiendo de la configuración del modo, el bit de atributo 7 puede ser el bit de parpadeo o el cuarto bit de color de fondo (que permite usar los 16 colores como colores de fondo).
  2. ^ El bit de atributo 3 (intensidad del primer plano) también selecciona entre las fuentes A y B (ver más abajo). Por lo tanto, si estas fuentes no son las mismas, este bit es simultáneamente un bit de punto de código adicional.
  3. ^ El bit de atributo 0 también habilita el subrayado, si ciertos otros bits de atributo se establecen en cero (ver a continuación).

Los colores se asignan de la misma manera que en los modos gráficos de color indexado de 4 bits (ver paleta de colores VGA ).Los modos VGA no necesitan los atributos de brillo e inversión de MDA porque los colores de primer plano y de fondo se pueden configurar explícitamente.

Subrayar

El hardware VGA tiene la capacidad de habilitar un subrayado en cualquier carácter que tenga el bit de atributo 0 establecido. Sin embargo, dado que se trata de una función compatible con MDA, [7] los bits de atributo no utilizados por el MDA deben establecerse en cero o no se mostrará el subrayado. [6] Esto significa que solo los bits 3 (intensidad) y 7 (parpadeo) se pueden establecer simultáneamente con el bit 0 (subrayado). [8] Con la paleta VGA predeterminada, establecer el bit 0 para habilitar el subrayado también cambiará el color del texto a azul. Esto significa que solo se puede subrayar texto en dos colores (5555FF y 0000AA con la paleta predeterminada).

A pesar de todo esto, el subrayado normalmente no es visible en los modos de color, ya que la ubicación del subrayado por defecto es una línea de escaneo debajo del glifo del carácter, volviéndolo invisible. [6] Si la ubicación del subrayado se establece en una línea de escaneo visible (como es por defecto cuando se cambia a un modo de texto monocromático compatible con MDA), entonces aparecerá el subrayado.

Fuentes

VGA nos muestra la página de códigos 737 con letras griegas

Las fuentes de pantalla utilizadas en EGA y VGA son fuentes rasterizadas monoespaciadas que contienen 256 glifos, y se pueden utilizar 2 fuentes simultáneamente, para un total de 512 glifos. Todos los glifos en pantalla tienen el mismo tamaño, pero ese tamaño es variable. Normalmente, los glifos tienen 8 puntos de ancho y 8–16 puntos de alto, sin embargo, la altura puede ser cualquier valor hasta un máximo de 32. Cada fila de un glifo está codificada en un byte de 8 bits , con bits altos a la izquierda del glifo y bits bajos a la derecha. Junto con varias fuentes dependientes del hardware almacenadas en la ROM del adaptador , el modo de texto ofrece 8 [6] fuentes cargables. Dos punteros de fuente activos (fuente A y fuente B) seleccionan dos de las fuentes disponibles, aunque normalmente apuntan a la misma fuente. Cuando cada uno apunta a fuentes diferentes, el bit de atributo 3 (ver arriba) actúa como un bit de selección de fuente en lugar de como un bit de color de primer plano. En el hardware VGA real, esto anula el uso del bit para la selección de color, pero en muchos clones y emuladores, la selección de color permanece, lo que significa que una fuente se muestra con intensidad normal y la otra con intensidad alta. Esta diferencia (e incompatibilidad) se puede superar modificando los registros de paleta para que contengan dos copias de una paleta de 8 colores. Una tarjeta de video compatible con VGA debe implementar caracteres de la página de códigos 437 en su BIOS de video . [ cita requerida ]

Hay modos con un ancho de cuadro de caracteres de 9 puntos (por ejemplo, el modo predeterminado 80×25), sin embargo, la 9.ª columna se utiliza para el espaciado entre caracteres, por lo que el contenido no se puede cambiar. Siempre está en blanco y se dibuja con el color de fondo actual. [6] Una excepción a esto es el modo de habilitación de gráficos de línea , que hace que los puntos de código 0x C0 a 0xDF inclusive [6] tengan la 8.ª columna repetida como la 9.ª. Estos puntos de código cubren aquellos caracteres de dibujo de cuadro que deben extenderse hasta el lado derecho del cuadro del glifo. Por este motivo, se debe evitar colocar caracteres similares a letras en los puntos de código 0xC0–0xDF. Los caracteres de dibujo de cuadro de 0xB0 a 0xBF no se extienden, ya que no apuntan a la derecha y, por lo tanto, no requieren extensión.

Cursor

Cursor del ratón en Impulse Tracker

La forma del cursor está restringida a un rectángulo del ancho completo del cuadro de caracteres, y se rellena con el color de primer plano del carácter en la ubicación actual del cursor. Su altura y posición se pueden establecer en cualquier lugar dentro de un cuadro de caracteres;. [9] El EGA y muchos clones VGA permitían un cursor de cuadro dividido (que aparecía como dos rectángulos, uno en la parte superior del cuadro de caracteres y otro en la parte inferior), al establecer el final del cursor antes del inicio, sin embargo, si esto se hace en el VGA original, el cursor queda completamente oculto. [9] El estándar VGA no proporciona una forma de alterar la velocidad de parpadeo, [9] aunque las soluciones alternativas comunes implican ocultar el cursor y usar un glifo de carácter normal para proporcionar un llamado cursor de software.

Un cursor de mouse en TUI (cuando está implementado) generalmente no es lo mismo que un cursor de hardware, sino un rectángulo en movimiento con un fondo alterado o un glifo especial.

Algunas interfaces basadas en texto, como la de Impulse Tracker , se esforzaron aún más para ofrecer un cursor de ratón más fluido y con un aspecto más gráfico. Esto se logró regenerando constantemente los glifos de los caracteres en tiempo real según la posición del cursor en la pantalla. [10] [11] [12] [13]

Métodos de acceso

En general, existen dos formas de acceder al modo de texto VGA para una aplicación: a través de la interfaz de BIOS de video o accediendo directamente a la RAM de video [4] y a los puertos de E/S. El último método es considerablemente más rápido y permite una lectura rápida del búfer de texto, por lo que se prefiere para programas TUI avanzados.

El búfer de texto VGA se encuentra en la dirección de memoria física 0xB8000. [14] Dado que esta dirección suele ser utilizada por procesos x86 de 16 bits que operan en modo real, también es la primera mitad del segmento de memoria 0xB800. Los datos del búfer de texto se pueden leer y escribir, y se pueden aplicar operaciones bit a bit . Se puede acceder a una parte de la memoria del búfer de texto por encima del alcance del modo actual, pero no se muestra.

Las mismas direcciones físicas se utilizan en el modo protegido . Las aplicaciones pueden tener esta parte de la memoria asignada a su espacio de direcciones o acceder a ella a través del sistema operativo . Cuando una aplicación (en un sistema operativo multitarea moderno ) no tiene control sobre la consola , accede a una parte de la RAM del sistema en lugar del búfer de texto real.

En los ordenadores de los años 80, la manipulación muy rápida del búfer de texto, en el que el hardware generaba los píxeles individuales tan rápido como se podían mostrar, era extremadamente útil para una interfaz de usuario rápida. Incluso en hardware relativamente moderno, la sobrecarga de la emulación del modo de texto a través de los modos APA (gráficos) de hardware (en los que el programa genera píxeles individuales y los almacena en el búfer de vídeo) puede resultar notable.

Modos y tiempos

Señal de vídeo

Desde el lado del monitor, no hay diferencia en la señal de entrada en un modo de texto y un modo APA ( All Points Addressable ) del mismo tamaño. Una señal de modo de texto puede tener los mismos tiempos que los modos estándar VESA . Se utilizan los mismos registros en el lado del adaptador para configurar estos parámetros en un modo de texto que en los modos APA. La señal de salida del modo de texto es esencialmente la misma que en los modos gráficos, pero su fuente es un búfer de texto y un generador de caracteres, no un búfer de cuadros como en APA.

Modos de texto comunes de PC

Según el adaptador gráfico utilizado, en los ordenadores compatibles con IBM PC hay disponibles distintos modos de texto , que se enumeran en la siguiente tabla:

Las tarjetas VGA y compatibles admiten los modos MDA, CGA y EGA. Todos los modos de color tienen el mismo diseño de atributos de texto. Los modos MDA tienen algunas características específicas (ver arriba): un texto se puede enfatizar con atributos brillantes, subrayados, invertidos y parpadeantes.

El modo de texto más común utilizado en entornos DOS y consolas iniciales de Windows es el predeterminado de 80 columnas por 25 filas, o 80×25 , con 16 colores y caracteres grandes de 8×16 píxeles. Las tarjetas VGA siempre tienen una fuente incorporada de este tamaño, mientras que otros tamaños pueden requerir la descarga de una fuente de tamaño diferente. [28] Este modo estaba disponible en prácticamente todas las computadoras personales IBM y compatibles.

El kernel de Linux 2.6 y posteriores asumen que los modos de 0000h a 00FFh representan modos estándar si el BIOS VGA los admite, y que los modos de 0100h a 07FFh representan modos VESA si el BIOS VESA los admite. Los modos de 0900h a 09FFh son modos especiales de Video7 (normalmente 0940h=80×43, 0941h=132×25, 0942h=132×44, 0943h=80×60, 0944h=100×60, 0945h=132×28 para el BIOS Video7 típico). [29] Linux 2.x permite comprobar las resoluciones de vídeo admitidas pasando el argumento "vga=ask". [30]

Las versiones posteriores de Linux permiten especificar la resolución utilizando modos desde 1000h hasta 7FFFh. El código tiene el formato "0xHHWW", donde HH es un número de filas y WW es un número de columnas. Por ejemplo, 0x1950 corresponde a un modo de 80×25, 0x2b84 a 132×43, etc. [29] (Linux 3.x y posteriores permiten configurar la resolución utilizando "video=<conn>:<xres>x<yres>", pero únicamente para controladores de búfer de fotogramas de vídeo. [30] [31] )

Existen otros dos modos de texto VGA, 80×43 y 80×50, pero son menos comunes. Windows NT 4.0 mostraba sus mensajes de sistema durante el proceso de arranque en modo de texto 80×50. [32]

Los tamaños de caracteres y las resoluciones gráficas para los modos de texto Super VGA compatibles con VESA extendidos dependen del fabricante. Algunas tarjetas, por ejemplo, la S3 , admitían algunos modos de texto personalizados muy grandes, como 132×43 y 132×25. [33] Algunos adaptadores gráficos de la década de 2000 eran capaces de configurar un modo de texto de tamaño arbitrario (dentro de límites razonables) en lugar de elegir sus parámetros de alguna lista.

Modo de texto SVGA

En sistemas Linux y DOS con las llamadas tarjetas SVGA, se puede utilizar un programa llamado SVGATextMode [34] para configurar modos de texto de mejor apariencia que los estándares EGA y VGA. Esto es particularmente útil para monitores grandes (≥ 17"), donde la resolución de 720×400 píxeles del modo de texto VGA 80×25 normal es mucho menor que la que sería un modo gráfico típico. SVGATextMode permite configurar el reloj de píxeles y una mayor frecuencia de actualización , un tamaño de fuente más grande, un tamaño de cursor más grande, etc., y permite un mejor uso del potencial de una tarjeta de video y un monitor. En sistemas que no sean Windows, el uso de SVGATextMode (u opciones alternativas como el framebuffer de Linux ) para obtener un texto nítido es crítico para monitores LCD de 1280×1024 (o mayor resolución) porque ninguna de las resoluciones de modo de texto estándar se ajusta exactamente a este tamaño de matriz (y habría artefactos de aumento de escala). SVGATextMode también permite un ajuste fino de los tiempos de la señal de video.

A pesar del nombre de este programa, solo algunos de sus modos compatibles cumplen con los estándares SVGA (es decir, VESA).

Restricciones generales

El modo de texto VGA tiene algunas limitaciones impuestas por el hardware. Debido a que son demasiado restrictivas para las aplicaciones modernas (posteriores al año 2000), el modo de texto por hardware en los adaptadores de video compatibles con VGA solo tiene un uso limitado.

* La fuente A puede utilizar 8 colores y la fuente B otros 8 colores; por lo tanto, si la fuente A ≠ fuente B (modo de 512 caracteres), la paleta se debe dividir a la mitad y un texto puede utilizar efectivamente solo 8 colores.
** Normalmente, los primeros 8 colores de la misma paleta. Si el parpadeo está deshabilitado, los 16 colores están disponibles para el fondo.

Véase también

Referencias

  1. ^ Petzold, Charles (julio de 1987). «Triple estándar: tres nuevos modos de vídeo de IBM». PC Magazine . Ziff Davis . Consultado el 13 de abril de 2020 .
  2. ^ "Apéndice D: Controladores de búfer de trama de consola". Oracle. 2010. En plataformas x86, el módulo emulador de terminal del núcleo Solaris (tem) utiliza el modo de texto VGA exclusivamente para interactuar con el módulo vgatext. El módulo vgatext utiliza el modo de texto VGA estándar de la industria para interactuar con dispositivos de búfer de trama compatibles con x86.
  3. ^ JD Neal (1997). "Página de información de programación de video VGA y SVGA a nivel de hardware" . Consultado el 13 de abril de 2020. El byte correspondiente en el plano 1 se utiliza para especificar los atributos del carácter, que posiblemente incluyan color, selección de fuente, parpadeo, subrayado y reverso.
  4. ^ ab Prosise, Jeff (30 de enero de 1990). "Tutor: modificación de conjuntos de caracteres". PC Magazine . Ziff Davis . Consultado el 13 de abril de 2020 . A diferencia de los adaptadores de vídeo originales de IBM, el CGA y el MDA, que almacenan mapas de bits de caracteres en la ROM donde no se pueden alterar, el EGA y el VGA los almacenan en la RAM.
  5. ^ "La consola Framebuffer". kernel.org . Si fbcon se desconecta de la capa de consola, el controlador de la consola de arranque (que normalmente es el modo de texto VGA) tomará el control.
  6. ^ abcdefg "Programación de vídeo VGA/SVGA: funcionamiento en modo de texto VGA". Osdever.net . Consultado el 7 de noviembre de 2016 .
  7. ^ "Notas sobre el adaptador de pantalla monocromática". Seasip.info . 6 de noviembre de 2005 . Consultado el 7 de noviembre de 2016 .
  8. ^ Frank Van Gilluwe (1997). La PC no documentada: guía del programador sobre E/S, CPU y áreas de memoria fija (2.ª ed.). EE. UU.: Addison-Wesley Publishing Company, Inc., págs. 172-174. ISBN 978-0-201-47950-8."Tabla 6. Formas de cursor de muestra, dirección del puerto de video base, bits de modo interno, función del bit 7 del atributo de pantalla, byte para el registro de modo interno en el puerto 3D8h (CGA), 3B8h (MDA) y virtual (EGA/VGA)"
  9. ^ abc "Programación de video VGA/SVGA: manipulación del cursor en modo texto". Osdever.net . Consultado el 7 de noviembre de 2016 .
  10. ^ Lim, Jeffrey. Manual del usuario de Impulse Tracker II. pág. 4. El Tracker funciona completamente en modo texto con una redistribución ordenada de caracteres.
  11. ^ Lim, Jeffrey (20 de marzo de 2014). "20 años de Impulse Tracker, parte 2" . Consultado el 14 de marzo de 2021 . [...] características con algunas notas: [...] Funciones de generación de caracteres y mouse en general. El modo de texto me permitió mantener la interfaz de usuario ágil y los requisitos de memoria bajos, pero superé la brecha con la generación de caracteres en tiempo real más allá de lo que he visto en otros programas.
  12. ^ Leonard, Andrew (29 de abril de 1999). "Mod love - Salon.com". Archivado desde el original el 24 de noviembre de 2009. Consultado el 15 de marzo de 2021. Jeffrey Lim, autor del popular programa Impulse Tracker
  13. ^ Lim, Jeffrey (2014). "IT_MOUSE.ASM". GitHub . Consultado el 14 de marzo de 2021 .
  14. ^ Cyrix (16 de enero de 1998). "Especificación de la función VGA para procesadores GXm/MXi" (PDF) . Archivado desde el original (PDF) el 16 de agosto de 2015.
  15. ^ abcdefghijk Roschi, Winn L. (1988). "Compatibilidad con VGA: avanzando hacia el nuevo estándar". PC Mag . Ziff Davis, Inc.: 177. ISSN  0888-8507.
  16. ^ abcdefgh RBIL 61 (INT 10). Establecer modo de vídeo
  17. ^ Texto
  18. ^ Frank Van Gilluwe (1994). El PC indocumentado (1.ª ed.). Estados Unidos: Addison-Wesley Publishing Company, Inc., págs. 319-321. ISBN 0-201-62277-7."Tabla 9-2. Modos de vídeo por familia de adaptadores"
  19. ^ abcdefghi Universidad de Columbia. Valores para el modo de vídeo estándar (INT 10)
  20. ^ abcdefg ESTGV RBIL
  21. ^ abcdefg Seabios. Lista de interrupciones de Ralf Brown (RBIL)
  22. ^ abcdefg La lista de interrupciones x86 también conocida como "Lista de interrupciones de Ralf Brown" (RBIL)
  23. ^ abcdefg Qemu. Vgabios. vgatables.h (implementación de referencia)
  24. ^ abcdefg Enlace a la Lista histórica de interrupciones de Ralph Brown (RBIL)
  25. ^ abcdefg Información técnica oficial de Dosbox (RBIL, INT10)
  26. ^ Richard F. Ferraro (1994). Guía del programador para tarjetas EGA, VGA y Super VGA: incluye tarjetas XGA (3.ª ed.). EE. UU.: Addison-Wesley Publishing Company, Inc., pág. 1218. ISBN 978-0-201-62490-8.SBN​ 201-62490-7.
  27. ^ Gráficos o texto a través de gráficos
  28. ^ "OpenBSD Programmer's Manual, vga". 20 de marzo de 1999. Se pueden mostrar 16 colores diferentes al mismo tiempo. Los caracteres tienen un tamaño de 8×16 píxeles y una fuente consta de 256 caracteres. Una fuente incorporada de este tamaño siempre está presente en una tarjeta VGA.
  29. ^ ab Documentación oficial de Linux. 1995-1999 Martin Mares. Compatibilidad con selección de modo de video
  30. ^ de Paul Gortmaker (1999). El indicador de arranque de Linux: cómo hacerlo, el argumento 'vga=' (PDF) . pág. 22.
  31. ^ Guía de administración de Linux: parámetros del kernel, El argumento 'video='. 2017.
  32. ^ Olga Kokoreva (2001). Registro de Windows XP: una guía completa para personalizar y optimizar Windows XP. БХВ-Петербург. ISBN 9781931769013Una diferencia obvia entre Windows 2000/XP y Windows NT 4.0 es el hecho de que todos los mensajes del sistema que aparecen durante el proceso de arranque de Windows NT 4.0 se muestran en modo de texto de 80×50, mientras que Windows 2000 y Windows XP muestran estos mensajes en modo VGA.
  33. ^ Gráficos S3. "Manual del usuario de VC963-3D (S3 ViRGE/DX)". Archivado desde el original el 13 de abril de 2020. El S3 ViRGE admite modos de texto extendidos de 132×43 y 132×25 para aplicaciones de texto. Esto también le permite emular terminales que requieren 132 columnas de texto.{{cite web}}: CS1 maint: numeric names: authors list (link)
  34. ^ "Detalles del proyecto para SVGATextMode". 19 de marzo de 2000. Archivado desde el original el 3 de febrero de 2001. SVGATextMode utiliza funciones adicionales en las tarjetas SVGA para mejorar los modos de texto de Linux. Permite configurar el reloj de píxeles, los tiempos H/V, el tamaño de fuente, el tamaño del cursor, etc., y permite utilizar la tarjeta de vídeo y el monitor a su máximo potencial en modo texto.