Escritos
B. Piropo
Anteriores:
< Trilha Zero >
Volte de onde veio
06/04/1992

< COMO FUNCIONA O VÍDEO >


As interfaces gráficas estão na moda. E por isso às vezes a gente até esquece que a grande maioria dos programas que rodam por aí usam a velha tela em modo texto. Aquela mesma, que tipicamente pode mostrar vinte e cinco linhas de oitenta caracteres cada, o "modo 80x25". Vocês sabem como o sistema gerencia este tipo de tela? Pois é algo tão diabolicamente simples que vale a pena dar uma olhada. Mas, como não gostamos de tecnicismos, vamos discutir o assunto de forma muito, muito simplificada.

A coisa funciona assim: em um dado momento, quem "decide" o que é mostrado na tela é o programa que está rodando. É ele que "sabe" o que é mostrado em cada ponto da tela. Mas quem é encarregado de "mostrar", ou seja, quem maneja a tela, é o sistema operacional. Logo, deve haver um mecanismo através do qual o programa e o sistema operacional se entendam, e que permita ao programa informar ao sistema o que deve ser exibido onde.

Esse mecanismo é surpreendentemente simples. Mas, antes, refresquemos a memória: lembra-se da famosa tabela ASCII? Aquela que atribui um código numérico a cada caractere, de forma a que possamos usar números para representar letras e sinais gráficos? Isso, aquela mesma que a máquina, que se entende com números e não com letras, usa para se comunicar conosco. Pois bem, veja como, com ela, a coisa fica fácil: reserva-se uma região da memória que funciona como quadro de recados. Se o programa deseja mostrar, digamos, o caractere "A" em um dado local da tela, ele "escreve" em um certo endereço daquela região o código ASCII 65, que corresponde ao "A". E se esquece do assunto, indo cuidar de seus próprios afazeres.

O sistema operacional, por sua vez, não quer saber do que o programa está fazendo enquanto não solicita um de seus "serviços", pois está muito ocupado na faina incessante de manter a máquina em funcionamento, cuidando de milhões de outras coisas. Dentre estas, há uma muito importante: manter a tela "acesa". Para isso, ele "lê" o conteúdo daquela região da memória dezenas de vezes por segundo. E, dezenas de vezes em cada segundo, mostra na tela tudo o que lá está. Assim, se encontrar no endereço correspondente à oitava coluna da quinta linha o código 65, prontamente cuida para que um "A" seja exibido naquele local. Fácil, pois não?

Na verdade, como disse, isso é uma simplificação: há outros modos de tela, e mesmo nas telas texto, além do código do caractere, são armazenadas naquela região da memória seus "atributos", ou seja, cores, sublinhado, e alguns outros detalhes. Mas dá uma boa idéia de como a coisa funciona. A região de memória reservada para esse fim chama-se "memória de vídeo". Seu tamanho e localização exata dependem do tipo de adaptador de vídeo e monitor (CGA, EGA ou VGA, para falar somente dos mais comuns). Mas fica sempre por ali, logo acima dos 640K. E, diga-se de passagem, é a responsável pelo miserável limite de 640K de memória para programas.

Bem, já que sabemos como a coisa funciona, vamos dar um passo adiante. Digamos que, no endereço da memória de vídeo correspondente à décima coluna da quinta linha, o sistema operacional encontrou o número 97. O que irá ele exibir naquele ponto da tela? Muito fácil, dirá você: basta consultar a tabela dos códigos ASCII e ver que caractere corresponde ao código 97. E com razão: 97 corresponde ao "a", e o sistema lasca lá um a-minúsculo.

Animado com o sucesso? Ótimo. Está com uma tabela dos códigos ASCII ao alcance da mão? Não? Então vá buscar uma: você vai precisar dela para a próxima pergunta. Eu espero.

Tabela na mão? Então vamos lá: como mostrar na tela um "ô"? Consulte a tabela: "o-minúsculo=111". "Circunflexo=94". Parece fácil. Mas espere um pouco: a cada posição na tela corresponde apenas um endereço, no qual só cabe um byte. Você não pode escrever dois códigos, um em cima do outro, no mesmo endereço! E agora?

Calma, não afobe: volte à tabela. Veja, mais adiante, a que corresponde o código 147: beleza! Lá está seu "o-circunflexo"! Viu? Parece que tudo tem jeito. E aprendemos mais uma: para o sistema operacional, um "o-circunflexo" nada tem a ver com o "o", nem com o circunflexo: é outra coisa, completamente diferente. E nem poderia deixar de ser, pois trata-se de outro caractere...

Gostou? Excelente! Mais umazinha só: enquanto eu vou tomar um cafezinho, procure aí na sua tabela pelo "a-til". Minúsculo ou maiúsculo, tanto faz.

Achou? Ainda não, e quer que eu tome mais um cafezinho para dar tempo? Desista: não vai achar nem que eu vá a um banquete de político, daqueles cheio de discursos chatos (desculpe o pleonasmo). Entre os duzentos e cinqüenta e seis caracteres da tabela ASCII estendida você vai achar quase de tudo, incluindo as coisas mais estranhas. Mas a-til não tem...

Então, como fazer? Bem, se você tem um vídeo CGA, com placa controladora importada, nada pode ser feito, e jamais terá o prazer de ver um simpático "a" coroado com um til em sua tela. No máximo vai ter que se contentar em vê-lo substituído por um "ä" (a-trema). E este é, infelizmente, o caso mais comum entre nós. Mas se tem a felicidade de encarar uma tela EGA, ou, melhor ainda, VGA, pode resolver o problema com alguma facilidade.

Pois acontece que somente estão padronizados os primeiros cento e vinte e oito caracteres da tabela ASCII, cujos códigos vão de zero a 127. Estes são os que fazem parte do conjunto ASCII verdadeiro, o ASCII mesmo, pão pão, queijo queijo. Os demais, cujos códigos vão de 128 a 255, não são um padrão: são um acordo. Fazem parte da chamada "tabela ASCII estendida", introduzida pela IBM quando lançou seus computadores pessoais, e respeitada pela maioria dos demais fabricantes desde então. Mas nada impede que sejam mudados, e que dentre eles se incluam os a-til (e mais alguns caracteres acentuados, particularmente maiúsculos), que não existem na tabela ASCII estendida. Foi isto o que fizeram alguns fabricantes nacionais: criaram a chamada "tabela BRASCII", e gravaram seus caracteres na ROM de suas placas de vídeo. O que resolve o problema dos caracteres acentuados em português, mas tem, digamos, certos efeitos colaterais indesejáveis. Porém, há uma solução mais elegante. Que será o assunto da próxima semana...

B. Piropo