Modo de texto VGA - VGA text mode

O modo de texto VGA foi introduzido em 1987 pela IBM como parte do padrão VGA para seus computadores IBM PS / 2 . Seu uso em compatíveis com IBM PC foi generalizado durante a década de 1990 e persiste até hoje para alguns aplicativos em computadores modernos. As principais características do modo de texto VGA são caracteres coloridos ( paleta de cores programáveis ​​com 16 cores ) e seu fundo, piscando, várias formas do cursor (bloco / sublinhado / estático oculto / piscando) e fontes carregáveis ​​(com vários tamanhos de glifos). O console do Linux tradicionalmente usa modos de texto VGA de hardware, e o ambiente do console Win32 tem a capacidade de mudar a tela para o modo de texto em alguns tamanhos de janela de texto.

  Características distintivas do texto VGA normalmente usado:

  Plano de fundo cinza claro (normalmente não branco).

Desenho de caixa.

Várias combinações de
fundo / primeiro plano
.

Exemplo de texto VGA animation.gif Paleta de 16 cores estilo CGA – EGA para primeiro plano.
Texto piscando.
  Cursor.
 
 

Arranjo de dados

Buffer de texto

Cada caractere da tela é representado por dois bytes alinhados como uma palavra de 16 bits acessível pela CPU em uma única operação. O byte inferior, ou caractere, é o ponto de código real para o conjunto de caracteres atual e o byte superior, ou atributo, é um campo de bits usado para selecionar vários atributos de vídeo, como cor, piscar, conjunto de caracteres e assim por diante. Este esquema de pares de bytes está entre os recursos que o VGA herdou do EGA , CGA e, em última análise, do MDA .

Atributo Personagem
7 6 5 4 3 2 1 0 7 6 5 4 3 2 1 0
Piscar Cor de fundo Cor do primeiro plano Ponto de código
  1. ^ Dependendo da configuração do modo, o bit de atributo 7 pode ser o bit intermitente ou o quarto bit da cor de fundo (que permite que todas as 16 cores sejam usadas como cores de fundo).
  2. ^ O atributo bit 3 (intensidade do primeiro plano) também seleciona entre as fontes A e B (vejaabaixo). Portanto, se essas fontes não forem iguais, esse bit é simultaneamente um bit de ponto de código adicional.
  3. ^ O bit de atributo 0 também ativa o sublinhado, se alguns outros bits de atributo forem definidos como zero (consulte aseguir).

As cores são atribuídas da mesma forma que nos modos gráficos de cores indexadas de 4 bits (consulte a paleta de cores VGA ). Os modos VGA não precisam dos atributos reverso e brilhante do MDA porque as cores do primeiro plano e do plano de fundo podem ser definidas explicitamente.

Sublinhado

O hardware VGA tem a capacidade de habilitar um sublinhado em qualquer caractere que tenha o bit 0 de atributo definido. No entanto, como este é um recurso compatível com o MDA, os bits de atributo não usados ​​pelo MDA devem ser definidos como zero ou o sublinhado não será mostrado. Isso significa que apenas os bits 3 (intensidade) e 7 (intermitente) podem ser definidos simultaneamente com o bit 0 (sublinhado). Com a paleta VGA padrão, definir o bit 0 para ativar o sublinhado também alterará a cor do texto para azul. Isso significa que o texto em apenas duas cores pode ser sublinhado (5555FF e 0000AA com a paleta padrão).

Apesar de tudo isso, o sublinhado não é normalmente visível nos modos de cores, já que a localização do sublinhado é padronizada para uma linha de varredura abaixo do glifo do caractere, tornando-o invisível. Se a localização do sublinhado for definida como uma linha de varredura visível (como é por padrão ao alternar para um modo de texto monocromático compatível com MDA), o sublinhado aparecerá.

Fontes

Norton Utilities 6.01, um exemplo de TUI avançada que redefine o conjunto de caracteres para mostrar pequenos widgets gráficos , ícones e um ponteiro de seta no modo de texto.
VGA nos mostra a página de código 737 com letras gregas

As fontes de tela usadas em EGA e VGA são fontes raster monoespaçadas contendo 256 glifos. Todos os glifos em uma fonte têm o mesmo tamanho, mas esse tamanho pode ser alterado. Normalmente, os glifos têm 8 pontos de largura e 8-16 pontos de altura, no entanto, a altura pode ser qualquer valor até um máximo de 32. Cada linha de um glifo é codificada em um byte de 8 bits , com bits altos à esquerda do glifo e bits baixos à direita. Junto com várias fontes dependentes de hardware armazenadas na ROM do adaptador , o modo de texto oferece 8 fontes carregáveis. Dois ponteiros de fonte ativos (fonte A e fonte B) selecionam duas das fontes disponíveis, embora geralmente apontem para a mesma fonte. Quando cada um deles aponta para fontes diferentes, o bit de atributo 3 (veja acima ) atua como um bit de seleção de fonte em vez de um bit de cor de primeiro plano. Em hardware VGA real, isso substitui o uso do bit para seleção de cores, mas em muitos clones e emuladores, a seleção de cores permanece - o que significa que uma fonte é exibida como intensidade normal e a outra como alta intensidade. Esse erro pode ser superado alterando os registros da paleta para conter duas cópias de uma paleta de 8 cores.

Existem modos com uma largura de caixa de caracteres de 9 pontos (por exemplo, o modo padrão 80 × 25), no entanto, a 9ª coluna é usada para espaçamento entre os caracteres, portanto, o conteúdo não pode ser alterado. Está sempre em branco e desenhado com a cor de fundo atual. Uma exceção a isso é no modo Line Graphics Enable , que faz com que os pontos de código 0x C0 a 0xDF inclusive tenham a 8ª coluna repetida como a 9ª. Esses pontos de código cobrem os caracteres de desenho de caixa que devem se estender até o lado direito da caixa de glifo. Por esse motivo, deve-se evitar colocar caracteres semelhantes a letras nos pontos de código 0xC0–0xDF. Os caracteres de desenho de caixa de 0xB0 a 0xBF não são estendidos, pois não apontam para a direita e, portanto, não precisam ser estendidos.

Cursor

Cursor do mouse no Impulse Tracker

A forma do cursor é restrita a um retângulo com a largura total da caixa do caractere e preenchido com a cor de primeiro plano do caractere na localização atual do cursor. Sua altura e posição podem ser definidas em qualquer lugar dentro de uma caixa de caracteres ;. O EGA e muitos clones VGA permitiam um cursor de caixa dividida (aparecendo como dois retângulos, um na parte superior da caixa de caracteres e um na parte inferior), definindo o final do cursor antes do início, no entanto, se isso for feito em o VGA original, o cursor fica completamente oculto. O padrão VGA não fornece uma maneira de alterar a taxa de intermitência, embora as soluções alternativas comuns envolvam ocultar o cursor e usar um glifo de caractere normal para fornecer o chamado cursor de software.

Um cursor do mouse na TUI (quando implementado) geralmente não é a mesma coisa que um cursor de hardware, mas um retângulo móvel com fundo alterado ou um glifo especial.

Algumas interfaces baseadas em texto, como a do Impulse Tracker , foram ainda maiores para fornecer um cursor do mouse mais suave e com aparência mais gráfica. Isso foi feito constantemente regenerando glifos de caracteres em tempo real de acordo com a posição do cursor na tela.

Métodos de acesso

Geralmente, há duas maneiras de acessar o modo de texto VGA para um aplicativo: por meio da interface do BIOS de vídeo ou acessando diretamente a RAM de vídeo e as portas de E / S. O último método é consideravelmente mais rápido e permite uma leitura rápida do buffer de texto, razão pela qual é preferido para programas TUI avançados.

O buffer de texto VGA está localizado no endereço de memória física 0xB8000. Como esse endereço é geralmente usado por processos x86 de 16 bits operando em modo real, ele também é a primeira metade do segmento de memória 0xB800. Os dados do buffer de texto podem ser lidos e gravados, e operações bit a bit podem ser aplicadas. Uma parte da memória do buffer de texto acima do escopo do modo atual está acessível, mas não é mostrada.

Os mesmos endereços físicos são usados ​​no modo protegido . Os aplicativos podem ter essa parte da memória mapeada para seu espaço de endereço ou acessá-la por meio do sistema operacional . Quando um aplicativo (em um sistema operacional multitarefa moderno ) não tem controle sobre o console , ele acessa uma parte da RAM do sistema em vez do buffer de texto real.

Para computadores na década de 1980, a manipulação muito rápida do buffer de texto, com o hardware gerando os pixels individuais tão rápido quanto eles podiam ser exibidos, era extremamente útil para uma IU rápida. Mesmo em hardware relativamente moderno, a sobrecarga da emulação de modo de texto por meio dos modos APA (gráficos) de hardware (em que o programa gera pixels individuais e os armazena no buffer de vídeo) pode ser perceptível.

Modos e tempos

Sinal de vídeo

Do lado do monitor, não há diferença no sinal de entrada em um modo de texto e um modo APA do mesmo tamanho. Um sinal de modo de texto podem ter os mesmos horários como VESA modos padrão. Os mesmos registros são usados ​​no lado do adaptador para configurar esses parâmetros em um modo de texto como nos modos APA. O sinal de saída do modo texto é essencialmente o mesmo que nos modos gráficos, mas sua fonte é um buffer de texto e gerador de caracteres, não um framebuffer como no APA.

Modos de texto comuns para PC

Dependendo do adaptador gráfico usado, uma variedade de modos de texto estão disponíveis em computadores compatíveis com IBM PC . Eles estão listados na tabela abaixo:

Modo (s)
(decimal)
Modo (s)
(hex)
Modelo Res. De texto
(L × A)
Caracteres. Tamanho Graphics res. Cores /
modelo de memória
Adaptadores
7 0007h Texto VGA 80 × 25 9 × 14 720 × 350 2 (mono) /
MTEXT
MDA , Hercules
6 0006h VGA G 80 × 25 8 × 8 640 × 200 2 (mono) /
CGA
Hercules, CGA, PCjr , EGA, MCGA
0, 1 0000h, 0001h Texto VGA 40 × 25 8 × 8 320 × 200 16 /
CTEXT
CGA , EGA
2 0002h Texto VGA 80 × 25 8 × 8 640 × 200 16 (cinza) /
CTEXT
CGA, EGA
2, 3 0002h, 0003h Texto VGA 80 × 25 9 × 16 720 × 400 16 /
CTEXT
CGA, EGA
16 0010h VGA G 80 × 25 8 × 14 640 × 350 4 / PL4, 16 / PL16 64k EGA , 256k EGA, VGA
17 0011h VGA G 80 × 30 8 × 16 640 × 480 2 (mono) /
PL1
VGA, MCGA, ATI EGA, ATI VIP
23, 88 0017h, 0058h Texto VGA 80 × 43 8 × 8 640 × 350, 640 × 348 16 /
CTEXT
NEL Electronics BIOS, EGA
102 0066h Texto VESA, VGA G, Vídeo 7 G 80 × 50 8 × 8 640 × 400 16 / CTEXT, 256K / LINEAR, 256 / LINEAR8 Vídeo 7 V-RAM VGA, WD90C, Diamond Speedstar 24X
38, 67, 82, 264 0026h, 0043h, 0052h, 0108h Vídeo7 Texto, VGA G 80 × 60 8 × 8 640 × 480 16 / CTEXT, 256K / LINEAR Tseng Labs EVA, Tseng ET3000 / 4000, VEGA VGA, Trident TVGA 8800/8900, Video7 V-RAM VGA, Super VGA compatível com VESA
35, 20, 23, 27, 39, 65, 2369, 265 0023h, 0014h, 0017h, 001Bh, 0027h, 0041h, 0941h, 0109h Texto VESA, VGA G 132 × 25 8 × 14, 9 × 14, 8 × 16, 8 × 8 1056 × 350, 1188 × 350, 1056 × 400, 1056 × 200 2 (mono) / MTEXT, 4 (cinza) / TEXT, 16 / CTEXT, 256K / LINEAR Tseng ET3000, Tseng ET4000, ATI EGA / VGA Wonder, Cirrus CL-GD5420 / 5422/5426, Super VGA compatível com VESA
29, 66, 84, 86, 266 001Dh, 0042h, 0054h, 0056h, 010Ah Texto VESA, VGA G 132 × 43 9 × 11, 8 × 9, 9 × 9 1188 × 473, 1056 × 387, 1188 × 387 16 / CTEXT, 256K / LINEAR Super VGA compatível com VESA
34, 51, 99, 2370 0022h, 0033h, 0063h, 0942h Texto VESA 132 × 44 8 × 8, 9 × 8 1056 × 352, 1188 × 352 16 /
CTEXT
Tseng Labs EVA, ATI EGA Wonder, ATI VIP, Genoa SuperEGA
81, 97, 105, 267 0051h, 0061h, 0069h, 010Bh Texto VESA 132 × 50 8 × 8 1056 × 400 16 /
CTEXT
MORSE VGA, Cirrus 5320, WD90C, Super VGA compatível com VESA
33, 82, 30, 268 0021h, 0052h, 001Eh, 010Ch Texto VESA 132 × 60 8 × 8, 9 × 8 1056 × 480, 1188 × 480 16 /
CTEXT
Tseng ET4000, MORSE VGA, Realtek RTVGA, Super VGA compatível com VESA
47 002Fh Vídeo7 Texto, VGA G 160 × 50 8 × 8,. 1280 × 400, 720 × 512 16 / CTEXT, 256 / LINEAR8 Ahead B (Wizard / 3270), VEGA VGA, Gênova
68.2372 0044h, 0944h Video7 Text 100 × 60 8 × 8 800 × 480 16 /
CTEXT
Vídeo7 V-RAM VGA, VEGA VGA, Tatung VGA

As placas VGA e compatíveis suportam os modos MDA, CGA e EGA. Todos os modos coloridos têm o mesmo design de atributos de texto. Os modos MDA têm alguns recursos específicos (veja acima ) - um texto pode ser enfatizado com atributos de brilho, sublinhado, reverso e piscante.

O modo de texto mais comum usado em ambientes DOS e consoles iniciais do Windows é o padrão de 80 colunas por 25 linhas, ou 80 × 25 , com 16 cores e caracteres grandes de 8 × 16 pixels. As placas VGA sempre têm uma fonte interna desse tamanho, enquanto outros tamanhos podem exigir o download de uma fonte de tamanho diferente. Este modo estava disponível em praticamente todos os computadores pessoais IBM e compatíveis.

O kernel Linux 2.6 e posterior assume modos de 0000h a 00FFh como padrão (hexadecimal), se o BIOS VGA suportar, e ele os entende como aumentados em 0x0100. O mesmo para os modos BIOS VESA de 0100h a 07FFh (o Linux aumenta em 0x0100). Os modos de 0900h a 09FFh são modos especiais Video7, (Normalmente 0940h = 80 × 43, 0941h = 132 × 25, 0942h = 132 × 44, 0943h = 80 × 60, 0944h = 100 × 60, 0945h = 132 × 28 para o padrão BIOS Video7 ). O Linux 2.x permite verificar as resoluções de vídeo suportadas pelo argumento do kernel "vga = ask" ou "vga = <MODE_NUMBER>".

As versões posteriores do Linux permitem especificar a resolução por modos de 1000h a 7FFFh . O código tem a forma "0xHHWW" em que HH é um número de linhas e WW é um número de colunas. Por exemplo, 1950h (0x1950) corresponde a um modo 80 × 25, 2B84h (0x2b84) a 132 × 43 etc. (Linux 3.xe posterior permite definir a resolução por "vídeo = <conn>: <xres> x <yres> ", mas é para o modo gráfico de buffer de quadro de vídeo .)

Existem dois outros modos de texto VGA, 80 × 40 e 80 × 50 , mas são menos comuns. O Windows NT 4.0 exibiu suas mensagens de sistema durante o processo de inicialização no modo de texto 80 × 50.

Os tamanhos dos caracteres e as resoluções gráficas para os modos de texto Super VGA compatíveis com VESA estendido dependem do fabricante . Alguns cartões (por exemplo, S3 ) suportavam modos de texto personalizados muito grandes, como 132 × 43 e 132 × 25. Como nos modos gráficos, os adaptadores gráficos dos anos 2000 geralmente são capazes de configurar um modo de texto de tamanho arbitrário (em limites razoáveis) em vez de escolher seus parâmetros em alguma lista.

SVGATextMode

Em sistemas Linux e DOS com as chamadas placas SVGA, um programa chamado SVGATextMode pode ser usado para configurar modos de texto de melhor aparência do que os padrões EGA e VGA. Isso é particularmente útil para monitores grandes (≥ 17 "), onde a resolução de 720 × 400 pixels do modo de texto VGA normal de 80 × 25 é muito menor do que um modo gráfico típico seria. SVGATextMode permite a configuração do clock de pixel e uma taxa de atualização mais alta , tamanho de fonte maior, tamanho do cursor, etc., e permite um melhor aproveitamento do potencial de uma placa de vídeo e monitor. Em sistemas não Windows, o uso de SVGATextMode (ou opções alternativas como o framebuffer do Linux ) para obter um texto nítido é crítico para monitores LCD de 1280 × 1024 (ou resolução superior) porque nenhum dos modos de texto padrão denominados se ajusta a esse tamanho de matriz. SVGATextMode também permite um ajuste fino de temporizações de sinal de vídeo.

Apesar do nome deste programa, apenas alguns de seus modos suportados estão em conformidade com os padrões SVGA (ou seja, VESA).

Restrições gerais

O modo de texto VGA tem algumas limitações impostas pelo hardware. Como eles são muito restritivos para aplicativos modernos (pós 2000), o modo de texto de hardware em adaptadores de vídeo compatíveis com VGA tem apenas um uso limitado.

Parâmetro VGA original Adaptadores de vídeo modernos Observações

Largura da célula de caractere (glifo)
8 ou 9 pontos ≤  9 pontos Nem todo hardware oferece suporte a glifos mais estreitos do que 8 pontos.

Altura da célula do caractere (glifo)
≤  32 pontos
Número de células de caracteres Pelo menos
4.000
(alcançado em 80 × 50)
≤  16.384 = 2 14
(limitações de endereçamento de memória)
Um adaptador moderno, se suportar modos não padrão, pode produzir uma tela de texto razoavelmente densa, mesmo em um monitor grande.
Largura nas células de caracteres
( caracteres por linha )
Pelo menos
80
≤ 256 (?)
Altura nas células de caracteres
(número de linhas)
Pelo menos
50
(alcançado em 80 × 50)
Tamanho da página de código
(número de glifos diferentes exibidos simultaneamente)
≤  512  = 2 9
(se a fonte A ≠ fonte B)
Mesmo 512 é insuficiente para suporte Unicode abrangente .
≤  256  = 2 8
(se fonte A = fonte B)
Número de cores primeiro plano: 16 *

fundo: 8 ou 16 **

16 de cores escolhidas arbitrariamente , não fixas.

* 8 cores podem ser usadas pela fonte A e outras 8 cores pela fonte B; portanto, se a fonte A ≠ fonte B (modo de 512 caracteres), a paleta deve ser dividida pela metade e um texto pode efetivamente usar apenas 8 cores.
** Normalmente, as primeiras 8 cores da mesma paleta. Se o piscar estiver desativado, todas as 16 cores estarão disponíveis para o plano de fundo.

Veja também

  • Artigo geral sobre o modo de texto da tela do computador

Referências