archivo

Archivo de la etiqueta: MultiBASIC

¿Alguna vez soñaste con tener varios programas SuperBASIC ejecutándose a la vez como si fuesen programas compilados en multitarea? Pues con la ROM Minerva, que sustituye a tu ROM original de QL, es posible. Con ella se entrega un manual y un disco de utilidades que incluye los ficheros multib_asm y multib_obj, que permiten hacer esto.

Cuando ejecutamos (EXEC) multib_obj, se abre una nueva ventana en la que se unen los canales 0 y 1. ¡Cada instancia tiene sus propios canales 0, 1… por separado!

minerva_multibasic

Seis intérpretes SuperBASIC funcionando a la vez

Actualización 11-04-2009: Según se indica en el documento updates_doc que se incluye en el disco de utilidades Minerva, las últimas versiones de la ROM no necesitan cargar el fichero externo, pues MultiBASIC viene integrado. Es suficiente con ejecutar

EXEC PIPEP

para disponer de nuevas instancias SuperBASIC.

Los programas se cargan y corren de la misma forma, y funcionan todos los comandos del SuperBASIC, pues MultiBASIC lo que hace es lanzar nuevas instancias del intérprete SuperBASIC. Para cambiar entre los distintos intérpretes que lanzemos sólo tenemos que usar CTRL-C como siempre que trabajamos en multitarea.

Si ejecutamos el comando JOBS (TK2) vemos que nos lista una nueva tarea llamada SB.n con prioridad 8. Dentro de cada nueva instancia del intérprete SuperBASIC podemos lanzar nuevas instancias como se ve en la imagen. El límite está en la memoria disponible.

Si queremos disponer de canal 2 para listados deberemos abrirlo desde su instancia correspondiente. Podemos dejar el tamaño de los canales de este nuevo intérprete a las medidas a las que estamos acostumbrados mediante el siguiente programa (requiere TK2):

100 OPEN #0;con: OPEN #1;con: OPEN #2;con
110 WMON

Muchas veces, por la proliferación de ventanas que se crean en la pantalla, no sabremos en que instancia del SuperBASIC nos encontramos. Siempre podemos recurrir al comando JOBS o a la siguiente instrucción para saber cual es el ID del job que estamos utilizando:

PRINT VER$(-1)

Una instacia en MultiBASIC puede borrarse a si misma si encuentra un error. En el manual indican que esta es la forma adecuada de borrar una instacia. Proponen por ejemplo usar CLOSE #0 para salir.

Estas características de MultiBASIC posteriormente fueron implenentadas y mejoradas en el interprete de comandos del sistema operativo SMSQ llamado SBASIC, pero aunque lo que hace MultiBASIC es una cualidad del QDOS, si ejecutamos el programa multib_obj en un sistema con otra versión de ROM, este no funcionará. Asi que si vas a usar un emulador para probarlo no te olvides de cargar la ROM Minerva.

Enlaces para descarga:

downloadiconROM Minerva
Manual de la ROM Minerva
Disco de utilidades de la ROM Minerva