martes, 1 de noviembre de 2016

Programación del Sinclair QL (I): Introducción al Super Basic




Contacto conmigo Badaman, el creado de la web mas antigua sobre el QL en castellano, preguntándome sobre mi QL, y si conservo los programas que hice.

Mi QL está de momento inaccesible, ya que se encuentra tras varias filas de cajas en el trastero, tengo que ponerme a vender casi todo, pues he acumulado demasiadas cosas que no utilizo, y rescatarlo. Cuando lo saqué hace unos años por última vez no le funcionaba la membrana del teclado, y los microdrivers fallaban por el tiempo y la maldita espuma, por lo que no tengo esperanza de rescatar lo que programé en su día, pero he quedado con él en reescribirlos y ponerlos a disposición de todos.

Mi QL lo compré en el Corty al poco de salir en España por 125.000 Pesetas de la época, pagándolo en tres veces gracias a que estaba trabajando ya en esa época. Me dediqué a programar sobre todo algoritmos fundamentales, aplicando nuevas técnicas de programación en el Basic, aunque profesionalmente ya programaba en dialectos de Basic, ninguno era tan potente como el SuperBASIC del QL, que permitía usar sintaxis clásica con sus GOTO y GOSUB, o programación estructurada con funciones y recursividad, además de disponer de un S.O. multitarea, cosa no habitual en su momento, se notaba el enfoque profesional del aparato, aunque como en todo lo de Sinclair, por ahorrar costes y que fuera barato se quedó a mitad de camino de todo, podía haber sido un buen ordenador para temas como gestión empresarial, pero no llegó nunca a serlo.

El QL era una maravilla, podía aprender código máquina del 68000, podía trabajar con un S.O. multitarea, y podía trabajar con un BASIC avanzando, pasé buenas horas con el, pero al poco conocí a la que ahora es mi mujer desde hace 28 años, y extrañamente empecé a pasar mas horas con ella que con mi QL. Luego ocurrieron dos cosas que acabaron de arrinconarlo, me casé y un PC entró en casa. Pero como nunca es tarde, a ver si hago una cuantas entradas sobre programación en SuperBASIC sobre los algoritmos que escribí en el QL, reescribiendo un poco el clásico "Algoritmos + Estructuras de Datos = Programas", del profesor Niklaus Wirth, el creador del Pascal entre otros lenguajes.


SuperBASIC

El QL no es un Spectrum mejorado, es bastante mas, comenzando por disponer de un S.O. propio con posibilidades multitarea, y un lenguaje de programación mejorado denominado SuperBASIC, que me enamoró enseguida. Nacido en 1984, a diferencia del GW.BASIC o de los que yo usaba profesionalmente en ese momento, el Bussines Basic de Nixdorf o en BAL de Bull, es un lenguaje estructurado en el que ya no es necesario el uso del GOTO/GOSUB, con manejo de funciones recursivas. Esto lo convierte en un avanzado lenguaje para la época.

SuperBASIC mantiene la compatibilidad con los anteriores BASIC, por tanto soporta el manejo del GOTO, aunque no lo necesita. Para mi su punto flaco es no contar con un mejor editor de programas, ya que ahora los números de línea ya no son necesarios mas que para editar el programa, en la habitual mezcla de características de Sinclair, mejora en muchos aspectos, pero reduce prestaciones por otro. A pesar de ello veremos que SuperBASIC es un gran lenguaje de programación, del que solo echo de menos el no manejar estructuras de datos.

Esto no es un curso de programación en BASIC, ya debes saber programar, voy a daros una introducción a las características principales del lenguaje, comparando  BASIC y SuperBASIC.

Una característica importante es la compatibilidad con el BASIC clásico, casi sin cambiar nada un programa en BASIC para el Spectrum o en GW-BASIC funcionan sin modificaciones. Disponemos de los clásicos GOTO/GOSUB, pero puedes hacer cualquier programa sin utilizarlos. ON GOTO/ON GOSUB se pueden reemplazar por la instrucción SELect. El bucle FOR no solo dispone de mas opciones, sino que se complementa con un nuevo bucle REPeat. Pero lo mejor del SuperBASIC es la posibilidad de usar Procedimientos y Funciones que pueden recibir parámetros y en las que se pueden usar variables locales, siendo además recursivas.

Los nombres de variables empiezan por letra o por subrayado, y pueden tener hasta 256 caracteres de largo. Otra característica es que es un lenguaje poco tipado y con conversión automática entre tipos. Solo soporta variables decimales, enteras (terminan en %) y de texto (terminan en $), si escribimos por ejemplo variable = "12.34", tendremos en la variable decimal un valor de 12.34 mientras que si escribimos variable% = "12.34", tendremos en la variable entera el valor 12 sin dar errores de tipo. Las variables a, a% y a$ son tres variables diferentes.

Se edita en la forma clásica, se introducen líneas con número, se eliminan solo con el número, se editan con EDIT, además de que solo es necesario escribir las primeras letras en mayúsculas de cualquier comando para que el sistema autocomplete su nombre tras guardar la línea. Disponemos de las instrucciones RENUM para renumerar las líneas del programa, y AUTO para introducir nuevos números automáticamente.

1 comentario:

  1. Estupenda introducción. Gracias por rescatar los recuerdos del QL. - Badaman

    ResponderEliminar