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.](https://i0.wp.com/substackcdn.com/image/fetch/f_auto,q_auto:good,fl_progressive:steep/https%3A%2F%2Fsubstack-post-media.s3.amazonaws.com%2Fpublic%2Fimages%2F3c4955b9-0a81-4dff-b9de-e5fafb4b1d0f_1080x280.png?resize=604%2C157&ssl=1)
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.