Tenho um forte palpite que brevemente estaremos discutindo aqui controladoras de vídeo de alto desempenho. E para que possamos efetivamente avaliar o quão complexas são estas controladoras e dar o devido crédito aos magos tecnológicos que as desenvolvem e fabricam, é preciso conhecer pelo menos as noções básicas sobre o processo de criação das imagens […]
Tenho um forte palpite que brevemente estaremos discutindo aqui controladoras de vídeo de alto desempenho. E para que possamos efetivamente avaliar o quão complexas são estas controladoras e dar o devido crédito aos magos tecnológicos que as desenvolvem e fabricam, é preciso conhecer pelo menos as noções básicas sobre o processo de criação das imagens nas entranhas do computador. Vamos, então, ao trabalho.
Antigamente as coisas eram muito simples. E bota simples nisso: os primeiros computadores sequer podiam mostrar imagens, pois usavam a chamada “interface de caracteres”. Tudo aquilo que eles exibiam eram caracteres, ou seja, letras e sinais gráficos.
O interessante é que os usuários mais recentes, ao ouvir esta afirmação, não percebem claramente a diferença. Isto porque eles estão acostumados com suas “interfaces gráficas” (GUIs, ou “Graphics User Interfaces“) onde tudo o que se vê na tela são gráficos, inclusive os caracteres, pois as novas interfaces nada mais fazem que “desenhar” na tela. E quando se lê um texto em uma tela de Windows, do Mac ou de qualquer distribuição Linux que use interface gráfica (ou seja, ícones e coisas que tais), o que na verdade se está enxergando são caracteres desenhados na tela.
Por isto é possível, por exemplo, mudar a fonte (ou seja, o “desenho” das letras) sem alterar o texto. Da próxima vez que você estiver digitando algo em um programa que permita alterar fontes, experimente selecionar um trecho do texto e trocar a fonte para, por exemplo, “Brush Script”, “Magneto” ou “Mistral” e terá uma boa ideia do que chamo de “desenhar caracteres na tela”.
Nos tempos da interface de caracteres a coisa era diferente. A tela era dividida em pequenos retângulos em cujo interior cabia um único caractere. Em geral uma tela era formada por 25 linhas com 80 destes retângulos cada (a famosa tela 80×25; havia outros formatos, mas eram raros). Quando um programa precisava exibir uma nova linha no vídeo, encaminhava ao sistema operacional os códigos dos caracteres a serem exibidos. O SO, por sua vez, criava em um trecho da memória ? denominado “memória de vídeo” ? a tela a ser exibida.
Mas note que a memória de vídeo (cujos chips normalmente residiam na própria controladora de vídeo, como hoje) não armazenava o “desenho” da tela. Guardava apenas uma tabela na qual cada posição correspondente a um dos pequenos retângulos da tabela (ou matriz) de 80×25 era preenchida com o código do caractere que deveria ser mostrado naquela posição e certos detalhes, como cor do caractere e do fundo (no máximo dezesseis) e atributos do caractere: sublinhado, piscante, enfatizado e reverso (trocando as cores do caractere e do fundo; se não entendeu, espere um pouco que logo ficará claro). Os circuitos da controladora, então, liam a matriz, preenchiam cada posição da tela com a imagem do caractere (copiada daquela que estava gravada em uma memória permanente também residente na controladora) conforme seus atributos e enviavam, agora sim, a imagem da tela completa para o vídeo sessenta vezes por segundo.
Quando o programa precisava mudar o conteúdo da tela, enviava mais uma linha para a UCP, que repetia o processo e a enviava para a controladora. Que, por sua vez, compunha uma nova “imagem” movendo cada linha anterior uma posição para cima, liberando assim a linha de baixo para receber os novos caracteres.
Note que, ao sistema, não era possível mover o cursor para cima e “encaixar” uma linha entre as demais. Tudo o que fosse escrito na tela do sistema tinha que ser na última linha livre. O usuário poderia, no máximo, emitir o comando “cls” (de “clear screen“, limpar tela) e apagar tudo, começando novamente da primeira linha (é claro que, durante a execução de um programa, seria possível mover o cursor e inserir linhas, mas para isso o programa precisava ter acesso direto à memória de vídeo e cabia ao programador fazer todo o trabalho braçal exigido).
O resultado era o que aparece na Figura 1, uma tela do Macro Assembler da MS. Tudo nela são caracteres, mesmo aquilo que parece desenho. As bordas, por exemplo, são “montadas” com caracteres especiais e os menus são obtidos alterando as cores da letra e do fundo. Repare bem e veja que tanto no menu quanto no corpo do programa a fonte é exatamente a mesma e do mesmo tamanho, já que não havia como alterar nem uma coisa nem outra. Repare ainda como era possível alterar as cores do fundo e dos caracteres e note, no painel da direita, como se pode trocar as cores da frente e do fundo (entendeu agora o atributo “reverso”?). Quem tiver paciência pode contar: nela há exatas 25 linhas e 80 colunas.
Se você usa Windows e quer ter uma ideia aproximada de com que isto se parecia, abra o menu Iniciar, clique em “Todos os Programas”, “Acessórios” e abra um Prompt de Comando. E se desejar uma experiência de trabalhar em telas de caracteres, da próxima vez que ligar seu computador, acesse o “setup”. Verá então como é trabalhar com telas com número fixo de linhas e colunas e com uma “fonte” gravada em ROM que não se pode alterar. Dureza…