Skip to content

Cómo depurar DIV

Vii edited this page Mar 13, 2022 · 8 revisions

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.

Sumario

Watcom Debugger con pantalla secundaria

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

DOSBox-X

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.

Watcom Debugger en red

  • 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:

Sacar logs por el puerto serie

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

DOSBox y DOSBox-X

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