De 0 a 1MB e adiante

Todo usuário de IBM PC e seus compatíveis (não esses PCs velhos de hoje em dia) sabe de cor e salteado esse mapa da memória aqui:

Mapa da memória do IBM PC. 1MB era o máximo acessável pelo Intel 8086 e seu "primo" 8088; os primeiros 640KB são a memória convencional; em uma máquina com 512KB, a parte entre 512KB e 640KB não era mapeada. Os 384KB entre o fim da memória convencional e o topo da memória acessável era a UMA ("Memória Alta"), com uma parte separada para a memória de vídeo e o final da UMA ocupada pela ROM BIOS.
Um IBM PC com 512KB de memória tem mais ou menos esse mapa de memória

Mas como chegamos neste mapa? Quais as limitações técnicas que impuseram estes limites? E, mais importante, como superar esses limites à medida que as aplicações foram pedindo?

Julio Merino escreveu dois posts, From 0 to 1MB in DOS e Beyond the 1MB barrier in DOS, que responde a todas essas perguntas, com todas as paradas obrigatórias em EMS, XMS, modo protegido do 286, a introdução da paginação e do modo VM86 no 386. Tudo isso para chegar no unreal mode e nos DOS extenders (que se tornaram praticamente obrigatórios nos jogos para MS-DOS a partir do final dos anos 80; para usar o exemplo mais famoso, DOOM carregava o extender DOS/4GW na inicialização). Muita informação. MESMO.

Sobre Cesar Cardoso

Cesar Cardoso é uma das mentes em baixa resolução que compõem o Governo de Retrópolis, acumulando a tripla função de pauteiro, referencial para evitar que a gente saia do tópico, e especialista em portáteis clássicos.

Um comentário em “De 0 a 1MB e adiante

  1. A memória entre 640KB e 704KB é usada pelas placas de vídeo EGA e VGA. Como o Brasil ficou enroscado no CGA e Hercules até a chegada dos monitores multisync nos anos 1990, a maioria dos fabricantes de PC nacionais resolveram vender máquinas de 704KB.

    Uma vez vi um vendedor insistir que certo PC estava vindo de fábrica com um virus no BIOS. Ele rodava um anti-virus israelense que reclamava “memory size suspeciously altered”. Tentei explicar que isso não significava que tinha virus mas ele não conhecia inglês o suficiente para acreditar em mim – apenas sabia que o programa não imprimia nada se a máquina estivesse limpa. Também não consegui convencê-lo que o problema era que em Israel não tinha PCs de 704KB como no Brasil. Ai tirei um dos chips de DRAM fazendo a máquina cair para 512KB e o virus “sumiu”. Ele concordou que o virus não poderia estar na DRAM que agora estava fora da placa, mas colocando o chip de volta a mensagem apareceu outra vez e ele teve que aceitar minha explicação.

Os comentários estão fechados.