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

< MAIS UM PASSO: O COUNTRY.SYS >


Já demos o primeiro passo da nossa jornada em busca das páginas de código carregando o driver de tela. O próximo passo é semelhante: teremos que adicionar mais uma linha ao Config.Sys envolvendo, ainda uma vez, dados contidos em outro arquivo em disco, o Country.Sys. Um procedimento tão similar que você, uma pessoa de bom senso, aplicando um raciocínio lógico elementar, deve ter concluído o óbvio: bastaria acrescentar mais um comando "device" ao Config.Sys para carregar o arquivo Country.Sys. Uma conclusão evidente. Mas, infelizmente, falsa.

Não, nada há de errado com seu raciocínio. Ele obedeceu às consagradas regras da lógica. O único ponto falho é que, para desenvolvê-lo, você partiu do pressuposto que o DOS também as obedece. E foi aí que se deu mal...

O DOS, você já percebeu, é uma gigantesca colcha de retalhos que foi montada a partir de um núcleo central desenvolvido há mais de uma década para uma máquina rudimentar. Muitas facilidades foram acrescentadas mais tarde, na medida em que surgiam as necessidades. Entre elas, as informações que se incumbem de tratar certas diferenças que distintos países usam para formato de alguns parâmetros, como data e hora. Elas podem ser encontradas no arquivo Country.Sys que, como o Display.Sys, foi gravado em seu disco pelo DOS durante a instalação. Mas, ao contrário do Display.Sys, o Country.Sys não é um gerenciador de dispositivo, mas um arquivo auxiliar: ele apenas armazena dados destinados a substituir outros, previamente incluídos em um sistema operacional que adotou regras e formatos dos EUA, onde foi desenvolvido. Portanto, não sendo um device driver, não pode ser carregado pelo comando "device". Então, como fazer?

Bem, para resolver esse problema foi criado um comando, denominado "country". Que, sendo um comando de configuração, somente pode ser emitido dentro do Config.Sys. E o que faz esse comando? Apenas lê, no arquivo Country.Sys, as informações pertinentes ao país desejado e as repassa ao sistema, onde irão substituir as que lá estão. Tudo, como você vê, muito lógico. Mas segundo as normas da lógica peculiar ao DOS, na qual nem sempre resultados semelhantes são obtidos por meio de procedimentos similares.

Mas o que tem o comando "country" a ver com as páginas de código? Bem, é que cada país suporta um determinado conjunto delas. E o sistema operacional precisa conhecer o país para permitir carregar as páginas de código correspondentes. Mas essa não é a única função do comando. Há outras, até mais importantes: você já reparou que, se nenhuma providência for adotada em contrário, o DOS tem a desagradável mania de exibir datas começando pelo mês? Isso porquê esse é o formato adotado nos EUA, o default do DOS. E essa é mais uma das informações que o comando COUNTRY é capaz de alterar. As outras são: formato de separador decimal (uso de vírgula/ponto, para separar casas decimais de um número), formato da hora (24 horas ou 12 horas e uso das letras "a" ou "p" para indicar horários anteriores/posteriores ao meio dia), formato da moeda (uso do cifrão ou símbolo equivalente) e regras de ordenamento alfabético (que variam com os caracteres adotados em cada país). Para nós é particularmente interessante o formato da data: quantas vezes troquei um dez de fevereiro por um dois de outubro...

A sintaxe do comando (adotada a partir da versão 3.3 do DOS, onde foi introduzido o suporte às páginas de código) é simples: uma linha com o aspecto:

country=xx,[yy],[espec]

o nome do comando, seguido de um sinal de igual e de três parâmetros separados por vírgulas: xx representa o código do país, [yy] a página de código default e [espec] a especificação completa (disco, via de diretório e nome) do arquivo Country.Sys.

Para o código do país adotou-se um critério inteligente: ele coincide com o código de Discagem Direta Internacional (DDI). O do Brasil é 055. Mas eu nunca o uso: prefiro 351, de Portugal, e por boas razões (se alguma vez vocês notaram um leve sotaque lusitano nestas páginas, esse é o motivo). Ocorre que o código de Portugal foi incluído desde antes da versão 3.3 e o do Brasil somente mais tarde, e não em todas as versões (o DR DOS, até a versão 6.0, por exemplo, não o suporta - ao menos, não consta do manual). Usando o código de Portugal você obtém os mesmos formatos, suporte às páginas de código que nos interessam e compatibilidade com todas as versões que suportem o comando "country". Ora, então, pois pois...

O segundo parâmetro é o identificador da página de código ativa logo após a carga do sistema. Mas não é obrigatório: caso seja omitido, será usada a página de código default para o país.

Finalmente, a especificação completa do arquivo Country.Sys, incluindo o drive, via de diretório e o nome. Que também não é obrigatória, desde que você copie o arquivo Country.Sys de seu diretório original (geralmente o diretório C:\DOS) para o diretório raiz do disco de boot, onde está o Config.Sys. Se você quiser deixar o arquivo em seu diretório original e incluir a via de diretório, mas desejar se abster de incluir a página de código no comando COUNTRY, não se esqueça de incluir na linha de comando as duas vírgulas que cercam o parâmetro: o DOS espera encontrar imediatamente após o código do país o identificador da página de código, e não a via de diretório. As duas vírgulas servem para "marcar o lugar" e informar ao DOS que ele está vazio.

Agora, sejamos práticos: vamos ver como fica a linha do comando "country" no arquivo Config.Sys. Presumindo que você vai usar o código de Portugal (351), a página de código default (e, portanto, pode omitir seu parâmetro) e copiou o arquivo Country.Sys para o diretório raiz do disco de boot (e pode omitir sua especificação), a linha de comando fica de uma simplicidade franciscana:

country=351

E basta. Com isso terminamos as modificações do Config.Sys. Mas calma, que ainda falta um bocado de coisa. Logo começaremos a alterar o Autoexec.Bat.

B. Piropo