• Codepages (3)

    From Mauro Veiga@1:2320/100 to All on Fri Jul 29 12:46:02 2016
    Vamos come�ar a aprender como trocar a p�gina de c�digo para exibir os caracteres acentuados do portugu�s em nossas telas. E apenas come�ar,
    por que a coisa � um pouco mais complicada do que era de se esperar. Por
    outro lado, o processo � bastante instrutivo. De modo que, mesmo que sua m�quina use o padr�o de v�deo CGA, que n�o permite trocar a p�gina de c�digo, vale a pena acompanhar o assunto. Voc� vai aprender um bocado
    sobre a maneira tortuosa que o DOS usa para resolver certos problemas.

    Acontece que o DOS foi desenvolvido no in�cio dos anos 80 para um micro
    que j� n�o existe: o primeiro PC, com apenas 64K de RAM e sem disco r�gido. E, naquele tempo, ningu�m pensou em internacionaliza��o (na verdade, ningu�m pensou que a coisa iria dar t�o certo a ponto de ser necess�rio internacionalizar). O bicho trazia gravado em ROM na placa de
    v�deo um conjunto de caracteres que dava e sobrava para escrever em ingl�s. Para que mais?

    De l� para c� muita coisa mudou. Inclusive o DOS. Mas mantendo, sempre
    que poss�vel, compatibilidade com as vers�es anteriores. O que � elogi�vel, mas implica em solu��es de compromisso. Na verdade as novas vers�es do DOS nada mais s�o que adapta��es da primeira: um imenso conjunto de remendos para dar suporte a novos componentes e satisfazer a
    novas necessidades.

    Com a internacionaliza��o do sistema n�o poderia ser diferente. No que
    toca aos velhos padr�es de v�deo CGA e MDA, nada poderia ser feito: eles somente permitem exibir nas telas texto o conjunto de caracteres indelevelmente gravado em ROM. Deixe, portanto, nos umbrais do mundo
    CGA, qualquer esperan�a de ver em sua tela um bonito a-til: no m�ximo
    voc� vai conseguir aquele rid�culo a-trema usado para simul�-lo. J� os padr�es EGA e VGA (assim como o padr�o LCD, usado nas telas de cristal l�quido do falecido IBM port�til), por terem sido desenvolvidos mais tarde, j� incorporaram a possibilidade de acessar a outros conjuntos de caracteres al�m daquele gravado em ROM. A forma de faz�-lo � bastante engenhosa: carrega-se um ou mais conjuntos de caracteres na mem�ria RAM.

    Depois, quando o sistema operacional vai consultar a fonte para saber
    qual o formato do caractere a ser exibido na tela, desvia-se a consulta
    dos endere�os de mem�ria da fonte gravada em ROM para os novos endere�os ocupados pela fonte em RAM que se deseja usar naquele momento. O sistema
    n�o percebe a diferen�a e mostra na tela o mapa de bits que encontrou.

    Esses conjuntos de caracteres que correspondem �s fontes s�o denominados "p�ginas de c�digo", e cada um suporta a um idioma ou conjunto de idiomas. Uma solu��o inteligente, mas, claramente, uma adapta��o que ir� exigir uma s�rie de interven��es por parte do usu�rio.

    Se voc� estranhou o fato de se manter uma fonte em ROM mesmo nas placas
    EGA ou VGA, a raz�o � simples: sem ela, a m�quina n�o teria como mostrar mensagens na tela antes de carregar o sistema operacional. E, o mais grave: como informar que algo deu errado caso n�o consiga carregar o sistema do disco? Por isso toda placa de v�deo vem com uma fonte default gravada em ROM. Ela � a "p�gina de c�digo de hardware" e geralmente corresponde � nossa velha conhecida tabela ASCII estendida, a mesma usada
    pelo padr�o CGA, a p�gina de c�digo 437 que d� suporte ao idioma ingl�s.

    Ent�o vamos ver como proceder para usar outra p�gina de c�digo que n�o a
    de hardware. E para ter uma vis�o panor�mica da situa��o, abordaremos o assunto de forma gen�rica antes de descer aos detalhes. Que n�o s�o poucos. Mas n�o se esque�a da condi��o b�sica: sua placa de v�deo e monitor devem ser EGA ou VGA.

    Primeiro precisamos de ajustar o sistema para gerenciar o v�deo e tornar poss�vel a mudan�a das p�ginas de c�digo. Ora, o v�deo � um dispositivo.
    E n�s sabemos que o suporte para gerenciar um dispositivo � fornecido por
    um gerenciador de dispositivo, ou "device driver". Que, nesse caso, traz
    o nome �bvio de Display.Sys e deve ser instalado atrav�s do comando "device" no arquivo Config.Sys. Se o DOS usasse uma forma menos tortuosa
    de fazer as coisas, isso seria o bastante. Mas n�o: com o Display.Sys
    nada mais fazemos que informar ao sistema qual � a placa de v�deo e quantas p�ginas de c�digo pretendemos usar. Note que eu disse quantas, e
    n�o quais: no que toca �s p�ginas de c�digo, tudo o que o Display.Sys
    faz � reservar espa�o na mem�ria para elas. Ele n�o as carrega nem lhes oferece suporte: apenas gerencia o v�deo.

    Quem fornece o suporte, ou seja, quem controla que p�gina de c�digo est�
    ativa em um dado momento e manipula as chamadas de v�deo, � um pequeno residente, o Nlsfunc.Exe (cujo nome deriva justamente de "national language support functions", ou fun��es de suporte para idiomas nacionais). Que deve, ent�o, ser carregado na mem�ria. E a forma ideal
    de faz�-lo � atrav�s do Autoexec.Bat.

    J� temos dois elos na nossa corrente: o Nlsfunc, que "sabe" qual p�gina
    de c�digo est� em uso, intercepta as chamadas de v�deo, dirigindo-as para
    a �rea da mem�ria onde est�o armazenadas as novas fontes e repassa o resultado para o Display.Sys. E este �ltimo, que trata da exibi��o do resultado no v�deo.

    Deveria ser o bastante, mas n�o �: pois nem um nem outro carregam na mem�ria RAM as p�ginas de c�digo desejadas. Isso � feito por meio do comando "mode", tamb�m em geral emitido de dentro do Autoexec.Bat. E como
    j� temos quem carregue as p�ginas de c�digo, quem as maneje e quem as exiba, parece que � o suficiente. Mas n�o: o DOS n�o iria deixar isso barato assim. Tem mais.

    Falta ainda algo que poder�amos chamar de efeito Francelino: informar ao sistema que pa�s � esse. Pois algumas p�ginas de c�digo s�o compartilhadas por mais de um idioma. Para isso basta usar o comando "country", emitido no Config.Sys. E, finalmente, � preciso tornar ativa a p�gina de c�digo desejada por meio do comando "chcp" (de "change codepage", ou trocar p�gina de c�digo). E c'est fin�.

    Isso tudo parece complicado demais: drivers, comandos, residentes, uma confus�o medonha s� por causa de uns acentos na tela. Na verdade, h�
    mesmo uma certa complexidade, a meu ver, desnecess�ria. Mas nada que
    seja imposs�vel destrinchar. Voc� logo ver� como o diabo � menos feio do
    que o pintam.

    B. Piropo

    ___ Blue Wave/386 v2.30
    --- SBBSecho 2.27-Win32
    # Origin: Ninho do Abutre 2 - Rio de Janeiro - Brasil * (4:801/194)
    * Origin: LiveWire BBS - Synchronet - LiveWireBBS.com (1:2320/100)
  • From Rodrigo Cesar Banhara@1:2320/100 to Mauro Veiga on Thu Aug 25 16:39:06 2016
    Mauro Veiga wrote to ALL <=-

    Isso tudo parece complicado demais: drivers, comandos, residentes,
    uma confus�o medonha s� por causa de uns acentos na tela. Na
    verdade, h� mesmo uma certa complexidade, a meu ver, desnecess�ria.
    Mas nada que seja imposs�vel destrinchar. Voc� logo ver� como o diabo
    � menos feio do que o pintam.

    B. Piropo

    Consegui !!!!! =DDDD

    Valeu...

    []s
    RCB

    ... "A do-nothing lackluster wherever he sat." -- A. Haig on George Bush
    ___ MultiMail/Win32 v0.50

    --- Mystic BBS/QWK v1.12 A31 (Windows)
    # Origin: Saturn's Orbit BBS * Running Mystic * Brazil (4:801/188)
    * Origin: LiveWire BBS - Synchronet - LiveWireBBS.com (1:2320/100)
  • From Mauro Veiga@1:2320/100 to Rodrigo Cesar Banhara on Thu Aug 25 18:14:22 2016

    Mauro Veiga wrote to ALL <=-

    Isso tudo parece complicado demais: drivers, comandos, residentes,
    uma confus�o medonha s� por causa de uns acentos na tela. Na
    verdade, h� mesmo uma certa complexidade, a meu ver, desnecess�ria.
    Mas nada que seja imposs�vel destrinchar. Voc� logo ver� como o diabo
    � menos feio do que o pintam.

    B. Piropo

    Consegui !!!!! =DDDD

    Valeu...

    :-)

    --- AfterShock/Android 1.6
    # Origin: Point Abutre 2.1 - Rio de Janeiro - Brasil * (4:801/189.5)
    * Origin: LiveWire BBS - Synchronet - LiveWireBBS.com (1:2320/100)