
Una sesión para ir a jugar
Aclaramos un bug del último ABC y seguimos buscando más memoria convencional para las aplicaciones de DOS que no quieren correr en Windows.
1 minuto de lectura'

En la última entrega tuvimos un desliz lexicográfico que el lector Gustavo Delfino nos hizo notar con elegancia y amabilidad; Delfino es el administrador de la lista de Informática Educativa Educomp (educomp@ccc.uba.ar).
El bug del último ABC está en la definición de memoria alta; no se trata de los 384 KB por encima de los 640 de convencional, sino de los primeros 64 KB sobre el primer megabyte de RAM de la PC. Los 384 KB por encima de la memoria convencional se denominan memoria superior (lo que, paradójicamente, podía verse muy claro en la ilustración del último ABC).
Ahora, a lo nuestro. Quedamos en que cualquier programa de DOS que exija más de 600 KB de memoria convencional no correrá en Windows 95. Lo que cualquier veterano de la PC sabe es que tampoco habría corrido fácilmente en el DOS original.
Sumando y restando
Quienes han tenido la fortuna de llegar a la PC después de la popularización de Windows 95 ignoran los espinosos experimentos que los usuarios de DOS tuvimos que realizar para que algunos programas -en particular, los juegos- funcionasen en nuestras máquinas. Era bien raro que un juego que exigiese 610 o más KB de memoria convencional anduviese de entrada.
Pero, como la necesidad es la madre de todas las ciencias, aprendimos a echar mano de la memoria superior. Ahí había 384 KB libres (un poco menos, en realidad) para poner todo lo que estaba ocupando el precioso espacio de la memoria convencional. Sonaba tentador, así que nos sumergimos en los manuales y descubrimos que había que alterar el config.sys y el autoexec.bat . Esto metía miedo, pero con tal de correr el jueguito seguimos adelante.
El truco estaba en un archivo llamado emm386.exe , que daba acceso a la memoria superior, además de emular memoria expandida a partir de la memoria extendida. Pero para que el emm386 pudiese funcionar, había que cargar primero otro dispositivo de software, el himem.sys . Este dúo habría de aparecer constantemente en nuestros ejercicios.
Nos rompimos la cabeza obteniendo mensajes de error, hasta que descubrimos que el himem.sys debía ocupar la primera línea del config.sys . Luego aprendimos que con el parámetro RAM, el emm386 sólo emulaba memoria expandida, mientras que con NOEMS (traducido: no EMS, es decir, sin memoria expandida ) daba acceso sólo a la extendida o XMS. La lista de esfuerzos que tuvimos que hacer para lograr que nuestros juegos corriesen es bastante más larga, a decir verdad. Pero, sin duda, nos enseñó mucho. El DOS 6.0 trajo una herramienta de gran ayuda, el memmaker , del que ya hablaremos.
No hay ninguna necesidad de que los lectores que llegaron a la PC con Windows 95 vuelvan a atravesar estas tortuosas experiencias. Sin embargo, para ejecutar juegos de DOS realmente exigentes, tendrán que editar el config.sys , el autoexec.bat y explorar algunos comandos de configuración algo herméticos. Pero no se preocupe, vamos a ir poco a poco. Primero, describiremos el desafío con el que nos enfrentaremos, desde el punto de vista práctico.
Planteo del problema
El Falcon 3.0 es el clásico de los simuladores de vuelo de combate por muchos motivos (ver columna La Compu en esta edición), pero exigía 614 KB de memoria convencional. Una de sus extensiones, el Hornet F-18, ¡pedía no menos de 621! La versión Gold -que contenía el Falcon, el Hornet y el Mig 29- venía en un CD-ROM (o sea que se necesitaban dos drivers más en memoria para manejar la lectora).
El desafío será correr este programa en una PC que sólo tiene Windows 95. Si lo logramos, podremos ejecutar cualquier cosa, a condición -recuerde- de que el programa no emplee su propio extensor de memoria, como el primer Comanche o, en el mundo de las aplicaciones, el AutoCAD . La verdad es que la mayoría de los juegos de DOS funciona bien en Windows 95; es decir, en las sesiones de DOS que se ejecutan dentro de Windows 95. Cuando no es así se debe a dos motivos. El más frecuente es que el juego exija demasiada memoria (el Hornet F-18 citado arriba es un ejemplo extremo); como consecuencia, arrojará un error y no arrancará. Pero, además, el programa puede llevarse mal con el estilo de trabajo de Win95, que usted ya conoce; es decir, un entorno multitarea con acceso virtual a los dispositivos de hardware. Los síntomas más frecuentes son cuelgues o falta de sonido, entre otros.
Las sesiones de DOS de Windows 95 pueden tener unos 580 a 590 KB de memoria convencional libre, pero esto no cambiará el hecho de que el sistema operativo sigue cargado en memoria, lo mismo que otras aplicaciones. Esa sesión de DOS no está ejecutándose en modo exclusivo . Con la mayoría de los juegos en tiempo real (simuladores, acción, acción en primera persona, arcades, etcétera), esto representa un riesgo y una pérdida de eficiencia muy grande.
Para aumentar la cantidad de memoria convencional libre y entrar en una sesión de DOS que funciona de manera exclusiva, hay que usar el Modo MS-DOS . Se trata de la solución menos creativa posible, pero a la larga funciona: en el Modo MS-DOS , Win95 se descarga de memoria, reinicia el equipo y carga un DOS. Lo único que queda en memoria es un dispositivo de software que le indica a la computadora que, al escribir exit o cerrar la aplicación que está corriendo en modo DOS, se vuelva a reiniciar el equipo y se cargue otra vez Windows 95. Es incómodo, porque obliga a bootear , pero da resultado.
La buena noticia es que el Modo MS-DOS acepta los trucos, estratagemas y maniobras que aprendimos con el DOS original. Léase, el himem.sys y el emm386.exe . Es más: hay un himem y un emm386 en el directorio de Windows (usualmente, C:Windows ).
La jerga es un poco confusa, en este caso; recuerde que sesión de DOS se refiere a una máquina virtual corriendo un DOS dentro de Windows 95 en una ventana o a pantalla completa. Opuestamente, Modo MS-DOS es un DOS en modo real que se carga luego de reiniciar el equipo, sin Win95 detrás.
Sesión compartida
Hay miles de juegos que trabajan bien en las sesiones de DOS de Win95 y no necesitan entrar al Modo MS-DOS. De hecho, son la mayoría. Cuando usted hace un acceso directo a una aplicación de DOS, Win95 crea un archivo PIF (Program Information File), que le dice a Windows cómo ejecutar el programa en cuestión. En Win3.1 había un editor de PIF; ahora, en Win95, el editor está integrado a la interfaz de usuario. Para cambiar la forma en que Windows ejecutará esa aplicación de DOS haga clic con el botón derecho sobre el acceso directo y elija Propiedades. Se abrirá una ventana con seis pestañas (ver ilustración); a los fines prácticos, éste es un editor de PIF.
Aparte de estos archivos de información propios de cada programa de DOS, usted encontrará un autoexec.bat y un config.sys en el directorio raíz del disco C: y, además, verá que hay dos archivos más, bastante sospechosos: el autoexec.dos y el config.dos.
La historia es así: Windows 95 emplea el autoexec.bat y el config.sys al arrancar para cargar drivers en modo real, si el usuario los cree indispensables. En la práctica Win95 no necesita drivers en modo real y tampoco depende del config.sys o el autoexec.bat. Si Windows 95 se instala sobre unDOS, tomará el autoexec y el config existentes y los modificará, para evitar que algunos dispositivos (como el caché de disco del DOS) se carguen en memoria; el smartdrv traería conflictos con el caché de disco nativo de Windows 95.
Antes de alterarlos, Windows 95 los copia en el mismo directorio raíz bajo otro nombre, autoexec. dos y config.dos. Cuando usted entre en Modo MS-DOS, Win 95 volverá a renombrar los cuatro archivos: autoexec.bat se convertirá en autoexec.win y el autoexec.dos volverá a ser autoexec.bat. La misma transmutación ocurrirá con el config.sys. Al volver a Windows 95, el sistema cambiará los nombres de estos archivos una vez más.
Aunque Windows 95 no necesita ni config.sys ni autoexec.bat, no los borre, a menos que esté seguro de que nunca va a usar programas de DOS. Usualmente, el config.sys carga un dispositivo de idioma y de pantalla para que, si usted quiere usar un procesador de texto de DOS, no se encuentre con anormalidades en el teclado o es la representación de caracteres.
En teoría es posible liberar memoria convencional en las sesiones de DOS añadiendo el himem.sys, el emm386.exe y el comando dos=high,umb en el config.sys, pero Microsoft no recomienda seguir esta práctica, porque Win95 tiene sus propios métodos para aportarle memoria convencional, expandida y extendida e incluso el bloque de 64 KB de memoria alta a las aplicaciones de DOS.
El mejor método para correr un programa de DOS que exija más memoria de la que está disponible en una sesión de DOS es, a todas luces, el Modo MS-DOS.
En nuestra próxima entrega veremos, primero, un par de trucos para hacer sintonía fina de las sesiones de DOS para juegos. Y daremos las primeras pautas para preparar un Modo MS-DOS capaz de correr el Falcon 3.0.





