< Configurando o micro para Jogos de MS-DOS >

http://www.clubedohardware.com.br/artigos/254

 

Introdução:

Antes de mais nada, vamos tentar entender porque devemos "configurar" o micro. Ele já não estaria preparado para "rodar" qualquer tipo de programa? Porque seria diferente para joguinhos?

Para o usuário, assim que um novo processador é criado, logo vem a idéia de que ele será mais "poderoso" e rápido do que seu modelo anterior. Todos nós por dedução concluímos que um Pentium é mais rápido e "poderoso" que um 486 e este mais rápido e "poderoso" que um 386, e assim por diante. Construir processadores diferentes significa construir processadores incompatíveis. Como um programa escrito para um processador antigo poderá "rodar" em um processador novo se este é totalmente diferente? Em outras palavras, teoricamente um programa escrito para ser "rodado" em um XT (que utilizava um processador chamado 8088) não "rodaria" em um Pentium, pois são processadores diferentes, logo incompatíveis.

Para não cair neste problema, a partir do 286, a Intel criou para os seus processadores dois modos de operação: modo real e modo protegido. E aí é que está a explicação de tudo. No modo real, o processador se porta exatamente igual ao antigo processador 8086, um processador antiquado no qual foi baseado aos primeiros PCs. É no modo protegido que o processador "ganha" todo o ser "poder", possuindo mais instruções e recursos extras, tais como multitarefa e memória virtual.

A Microsoft, assim como a Intel, não abre mão da retrocompatibilidade. Desta forma, o seu sistema operacional mais antigo - o MS-DOS - deveria "rodar" tanto no moderno Pentium Pro quanto no XT. Não é difícil adivinhar que o MS-DOS é um programa que "roda" em modo real - o único modo de operação que torna compatível todos os processadores da família Intel.

Em modo real o processador adquire todas as características do processador 8086, em especial o acesso a somente 1 MB de memória. No projeto do PC, esta área foi dividida em 16 bancos de 64 KB, sendo os 10 primeiros reservados para a memória RAM. No XT o máximo de memória RAM que poderíamos ter era justamente 10 bancos x 64 KB = 640 KB de memória.

Ora, se o MS-DOS está trabalhando em modo real, logo o seu micro se transforma num XT, não importando que processador você utilize. Um super Pentium com 128 MB de memória RAM não adiantará de muita coisa se você estiver utilizando o MS-DOS: ele só enxergará 640 KB de memória, pois estará trabalhando em modo real.

Qual a solução? Não trabalhar mais no modo real! Todos os outros sistemas operacionais atualmente existentes para PCs trabalham em modo protegido - em especial o Windows 95, OS/2 e Windows NT. Neste tipo de sistema operacional você não possui limite de memória, pois processadores a partir de 386 conseguem trabalhar diretamente com até 4 GB de memória RAM quando estão em modo protegido, mais a técnica de memória virtual - que em poucas palavras é uma técnica que permite ao processador "simular" memória RAM em um arquivo no disco rígido, arquivo este chamado arquivo de troca (swap file).

O Windows 3.x não é um sistema operacional, mas sim um programa para MS-DOS. Sua grande vantagem é, além de tornar tarefas mais fáceis de serem executadas, trabalhar em modo protegido. Sim, o Windows 3.x, apesar de ser um programa para MS-DOS, trabalha em modo protegido. E só por este motivo o MS-DOS sobreviveu a tantos anos de luta: sem MS-DOS não podemos rodar o Windows 3.x.

Conclusão: somente programas escritos para MS-DOS apresentam problemas de falta de memória, pois o sistema só reconhece 640 KB, não importando o quanto de memória você possua instalado em seu micro! Programas escritos para Windows 3.x, Windows 95, OS/2 e Windows NT nunca apresentam erros de falta de memória! (Pelo menos teoricamente. Estes sistemas podem sim apresentar erro de falta de memória, mas nunca diretamente causados pela "configuração" de um programa em particular.)

Que tipo de programa ainda é escrito para o MS-DOS? Joguinho!

Existem outras maneiras de se "quebrar" o limite de 640 KB imposto pelo MS-DOS.


DOS4GW:

Vimos que o MS-DOS só reconhece 640 KB de memória, não importando o quanto de memória RAM você tenha em seu micro. Isto ocorre porque o MS-DOS trabalha em modo real, que transforma o seu micro em um XT. Para reconhecer mais memória e tornar o seu micro realmente "poderoso", deveremos trabalhar em modo protegido. Neste modo o processador acessa diretamente a até 4 GB de RAM e ganha recursos extras, tais como multitarefa e memória virtual. Todos os outros sistemas operacionais trabalham em modo protegido. Até o Windows 3.x trabalha em modo protegido. Joguinhos em sua maioria, porém, são escritos para o MS-DOS. Neste caso, o que deveremos fazer se o joguinho exigir mais do que 640 KB de RAM?

A primeira alternativa - e mais lógica, do ponto de vista técnico - seria fazer o programa trabalhar de alguma forma em modo protegido. Mas como, se o MS-DOS só trabalha em modo real? Através de um programa chaveador de modo protegido, como o DOS4GW. Diversos joguinhos - como o DOOM, Mortal Kombat e Simcity - trabalham em modo protegido, utilizando o DOS4GW. Quando você for jogar algum destes jogos, repare como aparece uma tela informando que o DOS4GW foi carregado. Aliás, este é o principal motivo de tanto sangue na série DOOM e Mortal Kombat: como estão operando em modo protegido, além de acessarem a até 4 GB de RAM, podem utilizar instruções mais poderosas que o processador possui. É por este motivo também que programas que utilizem o DOS4GW só podem ser "rodados" em 386 e superiores: o 8088 - processador do XT - não possuía modo protegido e o 286 possuía um "bug" que tornava o seu modo protegido inutilizável. Joguinhos que utilizem o DOS4GW no geral não são joguinhos complicados: operam no modo protegido e acessam diretamente toda a memória RAM instalada no micro, funcionando diretamente sem qualquer tipo de "configuração". Bem... na prática veremos que nem sempre é assim que ocorre... Programas de modo protegido para MS-DOS utilizam uma padronização chamada DPMI - Dos Protected Mode Interface. Graças à esta padronização é possível "rodar" um joguinho que utilize o DOS4GW no Windows 95 e no OS/2.


Memória Expandida (EMS):

Antes de ser criada a padronização DPMI e antes de utilizarem o modo protegido a três por quatro, os fabricantes não tinham muita escolha: os joguinhos tinha que ser escritos para o modo real. Mas como um joguinho destes exigindo mais do que 640 KB de memória poderia ser executado no MS-DOS? Erro de falta de memória, na certa. De um acordo entre a Lotus, a Intel e a Microsoft, foi criada uma idéia chamada memória expandida ou EMS (Expanded Memory Specification). Através desta técnica, um programa chamado gerenciador de memória "tapeia" o sistema operacional, que passará a achar que o micro tem mais de 640 KB de memória, mesmo operando em modo real. Memória expandida é um termo terrível, pois não designa memória física instalada no micro. O seu micro, fisicamente falando, não possui "memória expandida instalada". Há algumas desvantagens em se usar esta técnica. A principal delas será o modo de operação do processador: modo real, que significa a utilização um conjunto de instruções tão poderoso quanto o de um XT.


Modo Real e Protegido: Resumidamente, podemos dividir os jogos escritos para MS-DOS em dois tipos: os de modo real e os de modo protegido.


Jogos de Modo Protegido

Atualmente os jogos escritos para MS-DOS trabalham em modo protegido, normalmente utilizando o módulo DOS4GW para que isto seja possível. Isto pode ser conferido sempre que o seu joguinho é chamado: programas que utilizam o DOS4GW apresentam uma mensagem a respeito do DOS4GW e sua versão. Entra nesta categoria jogos como Simcity, Doom, Quake, etc.

Para que o MS-DOS consiga trabalhar em modo protegido, é necessário que um especificador de memória estendida esteja carregado. Calma! Não precisa se desesperar! O termo memória estendida significa "memória fisicamente instalada acima de 1 MB". Ou seja, a memória do seu micro. Um micro com 8 MB de RAM possui 7 MB de memória estendida. Para acessar a memória estendida (ou seja, toda a memória que o micro possui instalada) é necessário que o processador esteja em modo protegido.

Este especificador chama-se HIMEM.SYS e tem a finalidade de compatibilizar a maneira com que todos os programas acessam a memória acima de 1 MB (ou seja, a memória estendida).

Para que jogos de modo protegido possam ser "rodados" no MS-DOS, o arquivo de configuração Config.sys deverá ter, no mínimo, as seguintes linhas:

DEVICE=C:DOSHIMEM.SYS
DOS=HIGH

Você pode editar o arquivo Config.sys com o comando EDIT C:Config.sys. Mas você não tem muito com o que se preocupar. Se você utiliza MS-DOS, significa que tem também o Windows 3.x instalado. Como o Windows é um programa de modo protegido, estas linhas já estão automaticamente inclusas no Config.sys de seu micro.

Este tipo de jogo raramente apresenta erros de falta de memória.


Jogos de Modo Real

É fácil perceber que um jogo de modo real está sendo executado: ele acusará falta de memória caso necessite mais do que 640 KB. É o que normalmente ocorre em jogos como 1942, Lands of Lore, Leisure Suit Larry 6, ou seja, jogos antigos em geral.

Neste caso, o sistema operacional deverá utilizar a técnica de memória expandida (EMS) que fará com que o processador consiga acessar mais do que 640 KB mesmo com o MS-DOS trabalhando em modo real.

Para que isto seja possível, você deverá utilizar o gerenciador EMM386.EXE que acompanha o MS-DOS, ativando o parâmetro "RAM". O Config.sys do seu micro deverá ter ao menos as seguintes linhas:

DEVICE=C:DOSHIMEM.SYS
DEVICE=C:DOSEMM386.EXE RAM
DOS=HIGH,UMB


Portanto, se você for "rodar" um joguinho para DOS que acuse erro de falta de memória, experimente alterar o Config.sys do micro conforme descrito. Para editar o Config.sys do seu micro, utilize o comando EDIT C:Config.sys. Ah, não se esqueça que é necessário dar um "reset" no micro para que as alterações tomem efeito.

Na próxima página iremos ver o que fazer quando as alterações propostas não derem certo e o joguinho continuar acusando erro de falta de memória.


Faltando Memória

E se o que foi dito antes não funcionar? Caso o joguinho continue acusando falta de memória, o mais provável de estar ocorrendo é falta de memória convencional.

Cada driver, comando ou programa residente em memória que é carregado através do Config.sys ou Autoexec.bat ocupa espaço na área de 640 KB que o MS-DOS reconhece.

Encaremos os fatos: há diversos comandos que são carregados em memória - tais como driver de mouse para MS-DOS, o DOSKEY, o SHARE, drivers da placa de som, driver da unidade de CD-ROM, entre outros. Portanto, apesar de termos 640 KB de memória convencional, tal área não está totalmente disponível, pois há diversos programas residentes em memória. Se quantidade de memória convencional livre não for suficiente para o joguinho ser executado, ele acusará erro de falta de memória.

O MS-DOS permite que programas residentes possam ser carregados em uma outra área acima dos 640 KB de memória convencional, área esta chamada memória superior ou UMB (Upper Memory Bank). Os programas residentes carregados nesta área não ocupam memória convencional e funcionam perfeitamente.

Memória Estendida 1 MB a Total (Ex: 8 MB)
Memória Superior 640 KB a 1 MB
Memória Convencional 0 KB a 640 KB


Para que isto seja possível, o Config.sys do micro deverá conter obrigatoriamente as seguintes linhas, de preferência em seu começo:

DEVICE=C:DOSHIMEM.SYS
DEVICE=C:DOSEMM386.EXE NOEMS
DOS=HIGH, UMB


Nota: Caso você precise utilizar a técnica de memória expandida (EMS) para "rodar" o seu joguinho, ao invés do parâmetro "NOEMS", utilize o parâmetro "RAM".

O próximo passo é fazer com que os programas residentes sejam carregados em memória superior. Nem todos os programas chamados através do Config.sys e do Autoexec.bat ficam residentes em memória. Para saber quais os programas que ficam residentes, utilize o comando MEM /C /P. Uma lista de programas atualmente carregados em memória será apresentada.


Config.sys

Edite o arquivo Config.sys e faça com que os programas residentes em memória sejam carregados em memória superior, substituindo o comando "DEVICE" por "DEVICEHIGH".

Ex: DEVICE=C:WINDOWSIFSHLP.SYS

alterar para DEVICEHIGH=C:WINDOWSIFSHLP.SYS


Autoexec.bat

Edite o arquivo Autoexec.bat e faça com que os programas residentes em memória sejam carregados em memória superior adicionando o comando "LOADHIGH" ao início da linha que carrega o programa residente.

Ex: C:DOSSHARE.EXE /L:500 /F:5100

alterar para LOADHIGH C:DOSSHARE.EXE /L:500 /F:5100

Será necessário dar um "reset" no micro para que as alterações tomem efeito.

Nem todos os programas podem ser carregados em memória. Se o micro travar depois que você fizer as alterações necessárias, isto significa que algum programa incompatível foi carregado em memória superior. Para resolver este problema é simples: dê um novo "reset" no micro e, ao aparecer a mensagem "Iniciando o MS-DOS..." na tela, pressione a tecla [F8]. Vá confirmando passo-a-passo a execução do Config.sys e do Autoexec.bat. Assim que o micro travar, o nome do último programa carregado estará na tela; ele é quem fez o micro travar. Basta você dar um novo "reset" e desta vez apertar a tecla [F5] quando a mensagem "Iniciando o MS-DOS..." aparecer. Edite o Config.sys ou Autoexec.bat e faça com que o programa incompatível seja carregado em memória convencional, como estava antes de você alterar os arquivos de configuração de seu micro.



Windows 3.x

Você não encontrará maiores dificuldades em instalar e executar um joguinho escrito para Windows. Como este ambiente trabalha em modo protegido, é capaz de acessar diretamente toda a memória instalada no micro, além de permitir a técnica de memória virtual (que, como dissemos anteriormente, permite "simular" no disco rígido memória RAM, isto é, através desta técnica podemos fazer com que o processador "pense" que há 64 MB de RAM instalados, quando na verdade só há 8 MB, por exemplo).

O problema, entretanto, fica por conta do MS-DOS no Windows 3.x. Neste caso, o programa será executado em um outro modo de operação do processador que não havíamos visto: o modo virtual 8086.

Este modo permite que programas escritos para modo real possam ser executados diretamente em modo protegido. O processador "simulará" um processador 8086 com 640 KB de memória para a execução deste tipo de programa. Somente desta forma você consegue executar um programa escrito para MS-DOS dentro do Windows. É exatamente isto que faz o ícone "Aviso do MS-DOS" (MS-DOS prompt) do Windows: abre uma janela em modo virtual 8086.

Ora, quer dizer então que um programa MS-DOS sendo executado dentro do Windows fica também limitado aos 640 KB do MS-DOS? Mais ou menos. Existe uma solução: arquivo PIF.


Arquivos PIF

A maneira correta de se executar um programa MS-DOS dentro do Windows 3.x não é clicando sobre um arquivo executável no Gerenciador de Arquivos, nem através do comando "Executar" do menu "Arquivo" do Gerenciador de Programas. O procedimento pode ser este, mas, em vez de utilizarmos o executável do programa (arquivos com extensão COM ou EXE), devemos utilizar arquivos com extensão PIF (Program Information File). Nestes arquivos ficam armazenadas diversas informações de como um programa MS-DOS deverá ser executado.

Caso a programa MS-DOS que você deseja executar dentro do Windows não possua um arquivo PIF, você deverá criá-lo, utilizando o Editor PIF, presente no grupo Principal.

Basta criar um arquivo PIF para o seu programa MS-DOS, gravando-o no mesmo diretório do programa em questão. Quando você quiser executar seu programa, clique no arquivo PIF através do Gerenciador de Arquivos ou crie um ícone para ele, através do comando "Novo" do menu "Arquivo" do Gerenciador de Programas.


Configurando arquivos PIF

Através do arquivo PIF, você define praticamente tudo a respeito do programa MS-DOS que você deseja executar, inclusive as configurações de memória. Mais configurações podem ser executadas clicando no botão "Avançado".


Não Esqueça

Com relação às configurações de memória, vamos recapitular:

Memória convencional: primeiros 640 KB de memória RAM que há em seu micro. O DOS, por estar trabalhando em modo real, reconhece somente esta área de memória, não importando o quanto de memória há instalada em seu micro.


Memória Estendida (XMS): memória que há instalada em seu micro acima de 1 MB. Somente pode ser acessada em modo protegido. Um micro com 8 MB de memória possui 640 KB de convencional, 384 KB de memória reservada e 7MB de memória estendida (lembrando que 1 MB = 1.024 KB).


Memória Expandida (EMS): para quebra limite de 640 KB para programas MS-DOS, foi criado uma técnica de acesso a mais de 640 KB mesmo em modo real, chamado Memória Expandida. Este método só é empregado por programas MS-DOS antigos. Não designa "memória", mas sim uma forma de acessá-la. Quando um programa usa esta técnica, acessa, na verdade, a memória que há instalada acima de 1 MB - que vimos chamar-se memória estendida.


O Windows 3.x, em geral, apresenta diversas limitações, em especial o gerenciamento de programas escritos para MS-DOS. Por isto, acaba valendo mais a pena "rodar" joguinhos MS-DOS diretamente do prompt do MS-DOS do que através da sessão criada no Windows.


Windows 95

O Windows 95 trouxe diversas soluções para programas MS-DOS. Aquela história de editar manualmente o arquivo PIF era muito complicada para a maioria dos usuários. Por isto, a Microsoft preferiu juntar tudo nas propriedades do próprio ícone do programa (ou atalho, como a Microsoft prefere chamar). Em outras palavras, os arquivos PIF e o seu editor continuam existindo, mas tudo por "debaixo dos panos" e muito mais simples de usar e configurar. Em relação a joguinhos escritos para Windows 95, você não encontrará maiores dificuldades.


A respeito do MS-DOS no Windows 95

O Windows 95 é um sistema operacional único. Assim como diversos outros sistemas operacionais gráficos (sobretudo OS/2 e o Windows NT), também possui linha de comando - o famoso "prompt". Acontece que, por motivos de retrocompatibilidade, seu uso é idêntico ao MS-DOS 6, o que acaba gerando muita confusão. Muitos pensam que o Windows 95 precisa do MS-DOS. Na verdade, a nova versão do MS-DOS e do Windows fundiram em um só conjunto, batizado Windows 95. Este MS-DOS foi recompilado para modo protegido, sendo mais rápido, mais flexível e muito menos crítico em relação a configurações - sobretudo em relação a memória.

No Windows 95, podemos ter acesso ao prompt do MS-DOS de dois modos distintos: através do ícone "Prompt do MS-DOS" ou através da opção "Desligar e reiniciar em modo MS-DOS", No primeiro caso a sessão MS-DOS estará trabalhando em modo virtual 8086, assim como ocorria no Windows 3.x, com várias vantagens: continua com todo suporte a hardware do sistema operacional (em especial ao Kit Multimídia) e permite configurações muito mais flexíveis e fáceis de serem feitas, como iremos ver. A segunda forma faz com que o Windows 95 seja retirado da memória. Neste caso você sentirá os mesmos efeitos da péssima flexibilidade oferecida pelo MS-DOS. A escolha é sua, mas recomendamos que você execute seus programas MS-DOS através do ícone "Prompt do MS-DOS" ou criando um atalho para o mesmo.


Configurando joguinhos MS-DOS no Windows 95

A primeira coisa que você deve fazer é criar um ícone (atalho) para o joguinho em questão. É bem fácil: com o mouse na área de trabalho, clique com o botão direito. Escolha a opção "novo" no menu que aparecerá. Crie um novo atalho. Primeiramente, você deverá entrar com a linha de comando para executar o jogo. Se não lembrar clique com o botão na caixa "Procurar". Continue em "avançar" e dê um nome para o atalho. Em seguida escolha um ícone para o atalho.

Pronto, seu atalho está criado. Teoricamente, ao clicar no atalho, o seu jogo será executado. Mas se você quiser alterar as configurações, é muito fácil: basta clicar com o botão direito do mouse sobre o ícone do atalho, escolhendo a opção "Propriedades" do menu que aparecerá.

Há diversas guias relacionadas ao seu programa. A que nos interessa por ora é a guia "Memória". Nela você poderá configurar manualmente todos os valores pretendidos.

Se as configurações avançadas tradicionais de memória apresentadas não forem suficientes, você poderá fazer uma configuração avançada, através do botão "Avançada" presente na guia "Programa".

Nas configurações avançadas para seu jogo, há opções muito importantes, que você deverá habilitar conforme a ocasião:

Impedir que programas MS-DOS detectem o Windows. Há diversos programas (joguinhos, sobretudo) que detectam se estão sendo ou não executados dentro do Windows, apresentando uma mensagem avisando que o jogo não pode ser executado desta maneira. Se este for o seu caso, habilite esta caixa.

Sugerir o modo MS-DOS como necessário. Fará surgir na tela recomendando a execução do programa fora do Windows 95, ou seja, saindo do Windows 95 com a opção "Desligar e reiniciar em modo MS-DOS".

Modo MS-DOS. Se o seu programa não quiser funcionar de jeito nenhum sob o Windows 95, há ainda uma solução. Habilitando esta opção, o Windows 95 irá dar um "reset" no micro toda vez que você clicar no ícone do joguinho, sendo que não irá carregar o Windows 95 no próximo boot, somente o MS-DOS. Você terá duas opções: utilizar os arquivos de configuração Config.sys e Autoexec.bat normalmente utilizados no seu micro (opção "Desligar e reiniciar em modo MS-DOS") ou criar novos arquivos de configuração, habilitando a opção "Especificar nova configuração MS-DOS" e completando os campos "Config.sys para modo MS-DOS" e "Autoexec.bat para modo MS-DOS" com seus conteúdos.