-
Notifications
You must be signed in to change notification settings - Fork 4
Cómo depurar DIV
En este artículo damos por hecho que ya sabes arrancar DIV en la plataforma o emulador que más te guste.
- Dificultad: Fácil
- Disponible en: Máquina real con tarjeta secundaria monocroma (raro), o en DOSBOX-X
Al ser DIV una aplicación gráfica, usar el Watcom Debugger de forma normal no es muy fiable. Por suerte podemos aprovechar una característica que tienen los PCs clásicos: usar dos tarjetas gráficas a la vez, siempre que una de ellas sea MDA (monocroma). Ya que los modos gráficos y el modo texto monocromo usan áreas de memoria separadas, es posible sacar información simultáneamente por las dos, y usar un monitor RGBI para mostrar información en modo texto mientras en otro monitor vemos la pantalla gráfica. Esta característica fue explotada por diversas aplicaciones y juegos en su momento, normalmente para mostrar datos de depuración. Watcom Debugger soporta plenamente esta característica y, si detecta una pantalla secundaria, mostrará en ella su interfaz.
Para usar esta característica en DOSBOX-X debemos arrancar el emulador pasándole el parámetro -display2
. Hay que tener en cuenta varias cosas al usar esta opción:
- La ventana usada para la pantalla secundaria es una ventana de consola, y no debemos redimensionarla. Si la ventana tiene otro tamaño que no sean 80x25 caracteres, dejará de verse correctamente. Sí podemos, por ejemplo, cambiar el tamaño de la fuente.
- La entrada de ratón y teclado se sigue haciendo a través de la ventana principal (la ventana gráfica). Aunque resulte contraintuitivo, debemos acostumbrarnos a mantener el foco en la ventana principal de DOSBOX-X para manejar el Watcom Debugger. Es recomendable mantener bloqueado el ratón con CTRL+F10.
- Dificultad: Difícil
- Disponible en: Máquina real con tarjeta de red, DOSBOX-X, PCem?
Watcom Debugger tiene diversas opciones para depurar en remoto a través de la red. Seguramente la más útil es usar TCP/IP, para lo cual debemos seguir ciertos requisitos:
- Disponer de una máquina con una tarjeta de red soportada. DOSBOX-X y PCem son capaces de emular una tarjeta NE2000.
- Instalar un packet driver. Hay muchos que se pueden encontrar por Internet, y con suerte el mismo fabricante tendrá uno disponible (Intel, por ejemplo).
- Configurar WATTCP, que es la librería que usa Watcom para la comunicación TCP/IP en MS-DOS.
Con todo preparado, podemos arrancar TCPSERV -tr=rsi
en la máquina servidor, desde el directorio donde tengamos instalado el DIV que queremos depurar.
En la máquina cliente, arrancaremos WD -tr=tcp;<SERVER> <EJECUTABLE> <PARÁMETROS>
, donde <SERVER>
es la IP de la máquina servidor. Podemos añadir :
y el número de puerto. Para la versión gráfica en Windows podemos usar WDW
con los mismos parámetros.
Enlaces útiles:
- DOS TCP/IP Networking with Packet Drivers, guía muy completa que además enlaza a otras páginas con información sobre el tema.
- Manual de Watcom Debugger. Puedes encontrarlo también en tu instalación de Watcom.
- Setting up networking in DOSBox-X. Cómo configurar y probar correctamente la tarjeta de red en DOSBOX-X
- Dificultad: Fácil
- Disponible en: Máquina real con puerto serie, DOSBOX, DOSBOX-X
Escribir datos por el puerto serie en MS-DOS es tan fácil como usar open()
o fopen()
para abrir COM1
(o COM2, COM3…) y escribir en él como si fuera un fichero de texto. Hay que recordar que si usamos fopen()
los datos pasarán por un buffer intermedio y no se enviarán realmente hasta que éste se llene, hagamos fflush()
o escribamos un carácter \n
.
En el otro lado podemos tener una máquina conectada con un cable null modem y un programa terminal como Kermit o YAT.
Si usamos DIV en DOSBOX, podemos hacer que DOSBOX saque los datos por un puerto serie real con el comando SERIAL
. Por ejemplo:
serial 1 directserial realport:com1
Si queremos que DOSBOX escuche en un puerto TCP donde escribir los datos, usaremos:
serial 1 nullmodem
Opcionalmente podemos añadir port:
para especificar un número de puerto. En DOSBOX-X las conexiones por defecto se limitan a localhost, así que si queremos conectar desde otra máquina de la red deberemos añadir la opción nonlocal:1
.
Como DOSBOX usa su propio protocolo para empaquetar los datos a través de TCP/IP, lo más cómodo es poner otra instancia de DOSBOX en el otro lado, con un programa para recibir los datos como MS-DOS Kermit. Desde la máquina cliente usaremos el comando:
serial 1 nullmodem server:<SERVER>
Donde <SERVER>
es el nombre o la IP donde está la primera instancia de DOSBOX (por ejemplo: localhost
). Opcionalmente, de nuevo, podemos indicar un puerto con port:
.
Para saber más sobre la configuración del puerto serie en DOSBOX o DOSBOX-X, recomendamos consultar el archivo dosbox.conf
o usar el comando serial /?
.