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. |