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 PC compatibles con IBM se generalizó 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 los caracteres coloreados ( paleta de 16 colores programables ) y su fondo, el parpadeo, varias formas del cursor (bloque/subrayado/oculto estático/parpadeante), [3] y fuentes cargables (con varios tamaños de glifos). [4] La consola Linux tradicionalmente usa modos de texto VGA de hardware, [5] y el entorno de la 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

Búfer de texto

Cada carácter de pantalla está representado por dos bytes alineados como una palabra de 16 bits accesible por la CPU 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 par de bytes se encuentra entre las características que el VGA heredó del EGA , CGA y, en última instancia, del 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 utilizar los 16 colores como colores de fondo).
  2. ^ El bit de atributo 3 (intensidad de 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 otros bits de atributo están establecidos en cero (ver más abajo).

Los colores se asignan de la misma manera que en los modos gráficos de color indexados de 4 bits (consulte la paleta de colores VGA ).Los modos VGA no necesitan los atributos inversos y brillantes del 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 atributo bit 0 establecido. Sin embargo, dado que se trata de una característica compatible con MDA, [7] los bits de atributo no utilizados por MDA deben establecerse en cero o no se mostrará el subrayado. [6] Esto significa que sólo los bits 3 (intensidad) y 7 (parpadeo) se pueden configurar simultáneamente con el bit 0 (subrayado). [8] Con la paleta VGA predeterminada, configurar el bit 0 para habilitar el subrayado también cambiará el color del texto a azul. Esto significa que sólo 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 predeterminada del subrayado es una línea de escaneo debajo del glifo del carácter, lo que lo vuelve invisible. [6] Si la ubicación del subrayado está configurada en una línea de exploración visible (como ocurre de forma predeterminada cuando se cambia a un modo de texto monocromático compatible con MDA), 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. Todos los glifos de una fuente tienen el mismo tamaño, pero este tamaño se puede cambiar. Normalmente, los glifos tienen 8 puntos de ancho y entre 8 y 16 puntos de alto; sin embargo, la altura puede tener cualquier valor hasta un máximo de 32. Cada fila de un glifo está codificada en un byte de 8 bits , con los 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 un bit de color de primer plano. En 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. Este error se puede solucionar cambiando los registros de la paleta para que contengan dos copias de una paleta de 8 colores. Una tarjeta de video compatible con VGA debe implementar los caracteres de la página de códigos 437 en su BIOS de video . [ cita necesaria ]

Hay modos con un ancho de cuadro de caracteres de 9 puntos (por ejemplo, el modo predeterminado 80×25); sin embargo, la novena columna se usa para el espaciado entre caracteres, por lo que el contenido no se puede cambiar. Siempre está en blanco y dibujado con el color de fondo actual. [6] Una excepción a esto es el modo Habilitar gráficos de línea , que hace que los puntos de código 0x C0 a 0xDF inclusive [6] tengan la octava columna repetida como la novena. Estos puntos de código cubren los caracteres de dibujo del 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 están extendidos, ya que no apuntan hacia la derecha y, por lo tanto, no es necesario extenderlos.

Cursor

Cursor del mouse en Impulse Tracker

La forma del cursor está restringida a un rectángulo del ancho completo del cuadro de carácter 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 carácter. [9] El EGA y muchos clones de VGA permitían un cursor de cuadro dividido (que aparecía como dos rectángulos, uno en la parte superior del cuadro de carácter y otro en la parte inferior), al establecer el final del cursor antes del inicio, sin embargo, si esto se realiza en el VGA original, el cursor está completamente oculto. [9] El estándar VGA no proporciona una manera de alterar la velocidad de parpadeo, [9] aunque las soluciones comunes implican ocultar el cursor y usar un glifo de carácter normal para proporcionar el llamado cursor de software.

Un cursor de mouse en TUI (cuando está implementado) no suele ser 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 , hicieron todo lo posible para proporcionar un cursor de mouse más fluido y con apariencia más gráfica. Esto se hizo regenerando constantemente glifos de caracteres en tiempo real de acuerdo con la posición del cursor en la pantalla. [10] [11] [12] [13]

Métodos de acceso

Generalmente hay dos formas de acceder al modo de texto VGA para una aplicación: a través de la interfaz de Video BIOS 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 está ubicado 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 intermedia de texto por encima del alcance del modo actual, pero no se muestra.

Las mismas direcciones físicas se utilizan en 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.

Para las computadoras de la década de 1980, la manipulación muy rápida del búfer de texto, con el hardware generando los píxeles individuales tan rápido como podían mostrarse, era extremadamente útil para una interfaz de usuario rápida. Incluso en hardware relativamente moderno, la sobrecarga de la emulación del modo texto mediante modos APA (gráficos) del hardware (en los que el programa genera píxeles individuales y los almacena en el búfer de vídeo) puede ser 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 en un modo Todos los puntos direccionables (APA) del mismo tamaño. Una señal en modo texto puede tener los mismos tiempos que los modos estándar VESA . Los mismos registros se utilizan en el lado del adaptador para configurar estos parámetros en modo texto como en los modos APA. La señal de salida del modo 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 fotogramas como en APA.

Modos de texto comunes de PC

Dependiendo del adaptador de gráficos utilizado, hay una variedad de modos de texto disponibles en computadoras compatibles con IBM PC . Se enumeran en la siguiente tabla:

Las tarjetas VGA y compatibles admiten los modos MDA, CGA y EGA. Todos los modos coloreados 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, u 80×25 , con 16 colores y caracteres de 8×16 píxeles de tamaño. 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 diferente tamaño. [28] Este modo estaba disponible en prácticamente todas las computadoras personales IBM y compatibles.

El kernel de Linux 2.6 y posteriores asume 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 (generalmente 0940h=80×43, 0941h=132×25, 0942h=132×44, 0943h=80×60, 0944h=100×60, 0945h=132×28 para el Video7 típico BIOS). [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 usando 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 80×25, 0x2b84 a 132×43, etc. [29] (Linux 3.x y posteriores permiten configurar la resolución usando "video=<conn>:<xres>x<yres>", pero exclusivamente para controladores de framebuffer 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 mostró los mensajes del sistema durante el proceso de arranque en modo de texto de 80×50. [32]

Los tamaños de caracteres y las resoluciones gráficas para los modos de texto Super VGA compatibles con VESA ampliada dependen del fabricante. Algunas tarjetas, por ejemplo la S3 , admitían algunos modos de texto personalizados de gran tamaño, 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 tarjetas denominadas SVGA, se puede utilizar un programa llamado SVGATextMode [34] para configurar modos de texto más atractivos que los estándar 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 normal de 80 × 25 es mucho menor que la que sería un modo de gráficos típico. SVGATextMode permite configurar el reloj de píxeles y una frecuencia de actualización más alta . mayor tamaño de fuente, tamaño de cursor, etc., y permite un mejor uso del potencial de una tarjeta de video y monitor. En sistemas que no son Windows, el uso de SVGATextMode (u opciones alternativas como el framebuffer de Linux ) para obtener un texto nítido es fundamental para monitores LCD de 1280 × 1024 (o resolución superior) porque ninguna de las resoluciones del modo de texto estándar se ajusta exactamente a este tamaño de matriz (y habría artefactos de escalado). SVGATextMode también permite un ajuste fino de los tiempos de la señal de video.

A pesar del nombre de este programa, sólo 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 restrictivos para las aplicaciones modernas (posteriores a 2000), el modo de texto de hardware en los adaptadores de vídeo compatibles con VGA sólo tiene un uso limitado.

* Se pueden utilizar 8 colores para la fuente A y otros 8 colores para la fuente B; entonces, si la fuente A ≠ fuente B (modo de 512 caracteres), entonces la paleta debe reducirse a la mitad y un texto puede usar efectivamente solo 8 colores.
** Normalmente, los primeros 8 colores de la misma paleta. Si el parpadeo está desactivado, los 16 colores estarán disponibles para el fondo.

Ver también

Referencias

  1. ^ Petzold, Charles (julio de 1987). "Triple estándar: tres nuevos modos de vídeo de IBM". Revista PC . Ziff Davis . Consultado el 13 de abril de 2020 .
  2. ^ "Apéndice D: Controladores del búfer de trama de la consola". Oráculo. 2010. En plataformas x86, el módulo emulador de terminal del kernel de 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 frame buffer compatibles con x86.
  3. ^ JD Neal (1997). "Página de información de programación de vídeo VGA y SVGA de 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, posiblemente incluyendo color, selección de fuente, parpadeo, subrayado e inversión.
  4. ^ ab Prosise, Jeff (30 de enero de 1990). "Tutor: modificación de juegos de caracteres". Revista PC . 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 pueden modificarse, el EGA y el VGA los almacenan en la RAM.
  5. ^ "La consola Framebuffer". kernel.org . Si fbcon se desconecta de la capa de la consola, el controlador de la consola de inicio (que generalmente es el modo de texto VGA) se hará cargo.
  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 indocumentada: una 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. Ejemplos de formas de cursor, dirección del puerto de video base, bits de modo interno, función del bit 7 de atributo de pantalla, byte para registro de modo interno en el puerto 3D8h (CGA), 3B8h (MDA) y virtual (EGA/VGA)"
  9. ^ abc "Programación de vídeo VGA/SVGA: manipulación del cursor en modo texto". Osdever.net . Consultado el 7 de noviembre de 2016 .
  10. ^ Lim, Jeffrey. Manual de usuario de Impulse Tracker II. pag. 4. El rastreador se ejecuta completamente en modo texto con una clara reasignación 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 cerré 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 amor - 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). "Procesadores GXm/MXi de especificación de función VGA" (PDF) . Archivado desde el original (PDF) el 16 de agosto de 2015.
  15. ^ abcdefghijk Roschi, Winn L. (1988). "Compatibles con VGA: avanzando en el nuevo estándar". Revista PC . 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). La PC indocumentada (1ª ed.). EE. UU.: 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 de interrupciones histórica de Ralph Brown (RBIL)
  25. ^ abcdefg Información técnica oficial de Dosbox (RBIL, INT10)
  26. ^ Richard F. Ferraro (1994). Guía del programador de tarjetas EGA, VGA y Super VGA: incluidas las tarjetas XGA (3.ª ed.). EE. UU.: Addison-Wesley Publishing Company, Inc. p. 1218.ISBN 978-0-201-62490-8. SBN 201-62490-7.
  27. ^ Gráficos o texto a través de gráficos.
  28. ^ "Manual del programador de OpenBSD, 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 integrada de este tamaño siempre está presente en una tarjeta VGA.
  29. ^ ab Documentación oficial de Linux. 1995-1999 Martín Marés. Soporte de selección de modo de vídeo
  30. ^ ab Paul Gortmaker (1999). "El BootPrompt de Linux - Cómo, el argumento 'vga=' (PDF)" . pag. 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 9781931769013. Una 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 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 extendido 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 le permite utilizar su tarjeta de vídeo y su monitor en todo su potencial en modo texto.