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.
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 .
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.
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.
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.
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]
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.
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.
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.
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).
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.
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.
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.
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.
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.
El Tracker funciona completamente en modo texto con una redistribución ordenada de caracteres.
[...] 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.
Jeffrey Lim, autor del popular programa Impulse Tracker
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.
en modo de texto de 80×50, mientras que Windows 2000 y Windows XP muestran estos mensajes en modo VGA.
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)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.