Programando en Turbo Assembler en los 90

baltasarq

Baltasar García Perez-Schofield

Posted on October 13, 2023

Programando en Turbo Assembler en los 90

Borland empezaba a ser una compañía de desarrollo importante en los 90. Durante los 80, había comercializado el excelente Turbo Pascal, un compilador con un entorno de programación integrado que era capaz de dejar buena parte de la memoria libre para nuestros programas, y se realmente rápido compilando, para además crear ejecutables realmente pequeños.

Posteriormente, Borland vendería además Turbo Basic y Turbo Prolog, pero sería con el compilador Turbo C (todos ellos con entorno integrado incluído), con el que lograría una gran fama y un gran éxito en ventas. Las razones eran las mismas que con Turbo Pascal: un entorno integrado incluído en el ejecutable dejando mucha memoria libre, pequeños ejecutables y compilación muy rápida. En los 90, además, saldría Turbo C++, que cubría además C++, y que eliminaría para siempre el nombre Turbo C.

Turbo C++

Borland completaría además estos poderosos compiladores con TASM o Turbo Assembler, TLINK o Turbo Linker, y su propia versión de la utilidad make.

Los problemas de obsolescencia que no me permitieron compilar ensamblador en el artículo sobre los monitores de 17" de los 90 me hicieron pensar en cómo podría recrear un entorno de programación de aquella época. Y la solución fue: DosBOX.

DosBOX

Obtuve de un repo sobre TASM en GitHub un archivo comprimido que descomprimí en un directorio llamado, atención... tasm/.

Pero necesitaba un editor de texto. En aquella época, yo utilizaba sobre todo ne, el Norton Editor, cuando programaba en Pascal, C, o Clipper. Era un muy pequeño editor con muchas posibilidades (muchas de ellas solo las encontraríamos mucho más tarde), con un acceso rápido a la ayuda con F1 (lo dicho, algunos editores son alérgicos a algo tan sencillo como esto) y en definitiva, una pequeña maravilla muy superior al edit de Microsoft, que aparecería con QBasic (un intérprete de Basic de Microsoft).

Lo localicé en una web de utilidades para MS-DOS, y simplemente lo copié en mi directorio tasm/.

Solo quedaba lanzar DosBOX con dosbox . desde el directorio tasm/.

Bueno, necesitamos una distribución de teclado española:

c:\> keyb sp
Enter fullscreen mode Exit fullscreen mode

Y necesitamos crear el archivo ensamblador con ne.

c:\> ne modex.asm
Enter fullscreen mode Exit fullscreen mode

Para pasar a 40x25, tendríamos que utilizar el siguiente código:

; modo 40x25

MODEL tiny

.code

ORG 100h

main:
        ; Cambiar el modo de texto
        MOV ah, 0    ; cambia modo de texto
        MOV al, 1    ; 40x25 en color
        INT 10h

        MOV ah, 4ch  ; volver al DOS
        MOV al, 0    ; valor de retorno
        INT 24h
END main
Enter fullscreen mode Exit fullscreen mode

De acuerdo, el código es el mismo que el del anterior artículo: el primer bloque de código invoca a la BIOS con la llamada 0 (cambia modo de vídeo) y el argumento 1 (40x25 color), mientras que el segundo bloque lo que hace es llamar a MS-DOS para terminar el programa y volver al sistema operativo.

Norton Editor o ne

Curiosamente, no funciona bien. Claramente cambia el modo de vídeo, pero se queda colgado en lugar de volver al DOS. ¿Alguna idea? ¡Pónmelo en los comentarios!

En cualquier caso, guardamos nuestro programa como modex.asm. Para ensamblar el código, necesitamos ejecutar tasm.

c:\> bin\tasm modex.asm
Enter fullscreen mode Exit fullscreen mode

Esta instrucción generará el archivo objeto modex.obj. Tenemos que enlazarlo para generar un ejecutable, que será un COM (el ejecutable más sencillo de todos, de ahí la línea MODEL tiny), gracias a la opción -t.

c:\>bin\tlink -t modex.obj
Enter fullscreen mode Exit fullscreen mode

Ahora tenemos el ejecutable, por lo que solo es cuestión de ejecutar:

c:\> modex
Enter fullscreen mode Exit fullscreen mode

Con lo que el modo de texto cambia a 40x25 en color, pero desgraciadamente no es capaz de volver a MS-DOS correctamente, se queda colgado.

En cualquier caso, es un poco lioso estar constantemente introduciendo estos comandos. Un archivo Makefile nos simplificará bastante la vida.

c:\> ne Makefile
Enter fullscreen mode Exit fullscreen mode

De acuerdo, el contenido es:

modex: modex.asm
        bin\tasm modex.asm
        bin\tlink -t modex.obj

clean:
        del *.obj
        del modex.com
        del *.map
        del *.@as
Enter fullscreen mode Exit fullscreen mode

Tiene dos secciones. La primera es la importante, que le explica a make cómo crear el ejecutable modex.com. Después de los dos puntos, incluimos modex.asm. De esta manera, make sabe si es necesario recompilar de nuevo: si ha habido cambios en modex.asm sí, y no en caso contrario. Esto es lo que se llama dependencias, y en este caso solo hay una.

A continuación, con un tabulador delante, indicamos las instrucciones necesarias, una detrás de otra, para generar ese ejecutable.

Para hacerlo, solo será necesario:

c:\> make
Enter fullscreen mode Exit fullscreen mode

Y tendremos nuestro modex.com en el directorio, con lo que solo será necesario ejecutarlo.

La segunda sección es clean. Aquí no hay ninguna dependencia y le explicamos a make lo que tiene que hacer al recibir esta orden que es "limpiar" el directorio de archivos resíduo del enamblado y enlazado. Para hacerlo, solo es necesario:

c:\> make clean
Enter fullscreen mode Exit fullscreen mode

La herramienta make es muy poderosa y se emplea muy frecuentemente en proyectos actuales.

¿Alguien ha sentido nostalgia?

💖 💪 🙅 🚩
baltasarq
Baltasar García Perez-Schofield

Posted on October 13, 2023

Join Our Newsletter. No Spam, Only the good stuff.

Sign up to receive the latest update from our blog.

Related