archivo

Archivos Mensuales: agosto 2010

Recientemente manifestábamos aquí, en un post de QBlog, algunas ideas y opiniones sobre el futuro del futuro del Sinclair QL. Mencionábamos en él la necesidad de nuevos proyectos para restablecer el pulso dentro de la pequeña comunidad de entusiastas del Sinclair QL.

Placa pinchada al zócalo 68008

Pues bien, Mcleod_ideafix acaba de desarrollar una nueva placa de ampliación de memoria al más puro estilo “Amiga” (como él mismo dice). Se aprovecha el hecho que la CPU del QL está en zócalo para meter una plaquita “hija” la cual aloja la propia CPU del QL y la mencionada ampliación de memoria. La ampliación es de 512 KB, lo que dota a un QL estándar de un total de 640 KB de memoria RAM.

La idea original es que la placa tenga el tamaño justo para alojar los componentes y con el espesor suficiente para no chocar con la parte superior de la carcasa.

En este hilo de QForum está todo el proceso de construcción de la placa y un relato muy ameno de cómo Mcleod_ideafix ha ido construyendo su proyecto.

Actualmente es un prototipo funcional y existe la posibiliad que vaya evoluciondo de cara a construir una placa para el conector de expansión del QL con la ampliación de memoria y tal vez con un procesador mejor (otra variante del 68000) de cara a poder direccionar mayor cantidad de memoria RAM.

¡Bravo! por Mcleod_ideafix, proyectos como este son los que ayudan a retomar en pulso y a dar vida a la paqueña comunidad del Sinclair QL.

Qascade es una utilidad freeware, creada por Jonathan Hudson, que permite al usuario crear un menú del sistema personalizado al estilo del botón “Inicio” de Windows. Qascade debe su nombre al hecho de que podemos definir menús en cascada anidados unos dentro de otros. El único requerimiento de Qascade es PE (Pointer Environment) y env_bin para el soporte de variables de entorno.

Qascade permite que el usuario defina totalmente la estructura del menú. Una entrada de menú consiste en un ítem seleccionable o una entrada a un submenú. Cada submenú también consiste en ítems seleccionables o submenús. Esto puede continuar hasta agotar la memora o la pantalla. Los ítems seleccionables pueden asociarse a programas ejecutables, Things o programas SBasic y MBasic (pero no SuperBASIC).

Cuando es ejecutado, Qascade aparece en pantalla en forma de botón. Cuando seleccionamos este botón, el menú principal se despliega. Desde este menú podemos seleccionar una entrada que ejecuta algún programa o una entrada que despliega otro submenú.

El propósito de Qascade se suministrar un sistema simple de menú de nuestro sistema, y tener así una interfaz de usuario primaria para nuestro QL.

La flexibilidad de Qascade viene de parte de su fichero de configuración (_rc). Este fichero define qué entradas de menú se mostrarán y qué programas se ejecutarán cuando seleccionemos estas entradas. Este fichero es leído por Qascade cada vez que se ejecuta o cada vez que pulsamos sobre la tecla ESC cuando el botón principal de Qascade está activado. De esta forma no necesitamos re-ejecutar Qascade cada vez que cambiemos el fichero de configuración, basta con seleccionar el botón principal y con ESC se actualizará la nueva configuración. El fichero de configuración puede tener cualquier nombre, lo que significa que podemos tener varios ficheros de configuración diferentes. Qascade sabe el nombre del fichero que deberá tomar mediante una variable de entorno que es establecida mediante un comando con la siguiente forma:

    setenv "QASCADE_RC=flp1_qascade_rc"

Es necesario identificar en mayúsculas la variable QASCADE_RC, de lo contrario no funcionará. Podemos teclear este comando cada vez que ejecutemos Qascade o podemos colocarlo en el fichero BOOT.

La estructura del fichero RC es definida como:

    Clave(TAB)Texto_menú(TAB)Acción(TAB)Parámetros

O también de la siguiente forma:

    Clave;Texto_menú;Acción;Parámetros

Clave debe ser alguno de los siguientes valores:

    EXEC  - Inicia un programa ejecutable
    ETHG  - Inicia un Thing ejecutable
    MBAS  - Inicia una sesión MultiBASIC
    SBAS  - Inicia una sesión SBASIC
    TITLE – Define un nuevo título de menú 
    MENU  - Inicia la sección de un sub-menú
    MEND  - Finaliza la sección de un sub-menú
    SEP   - Dibuja una línea separadora

“Text_menú” es la descripción de la entrada del menú. “Acción” es el programa que se va a ejecutar (por ejemplo QED, XChange, etc.). “Parámetros” se corresponde con las opciones de la línea de comandos que normalmente se especifican después del comando tras el carácter “;” (por ejemplo EXEC zip;”-x”). Cualquier línea que comienza con el signo # es considerada como una línea de comentario.

Un fichero de configuración muy simpe podría ser este:

      #Un fichero Menú  _rc muy simple
      EXEC;Xchange;flp1_xchange
      SEP
      TITLE;Juegos
      MENU;Juegos
      EXEC;Ajedrez;Chess_exe
      EXEC;Buscaminas;Minefield
      MEND

Ten en cuenta las siguientes consideraciones:
a) Si usas tabulador (TAB) como separador, ssegúrate que tu editor soporta la inclusión del carácter TAB, algunos editores transforman dicho carácter por una secuencia de caracteres en blanco.
b) Fíjate que es posible indicar la unidad y la ruta completa del archivo ejecutable (en ejemplo, Xchange indica el dispositivo) u omitirla, en este último caso se tomará las rutas definidas en PROG_USE y DATA_USE.

A continuación muestro una copia de pantalla de mi sistema en el que se muestra un ejemplo.

Qascade

En definitiva, Qascade es una opción a considerar si deseas en tu QL una interfaz de usario simple y fácil de configurar.

—-
Fuente:
Qascade – A Review. By Timothy Swenson, QL-Hackers Journal.
—-

Una de las características más entrañables del QL es la facilidad con la que puedes programar en Basic. Sin embargo, para el programador sólo existen comandos muy elementales como EDIT (editor de líneas), LIST, …

Con la llegada del Toolkit 2, se incluyó el comando ED que supuso un gran avance en aquellos momentos. ED es un editor, a pantalla completa, de programas SuperBASIC muy compacto y útil. Este editor incorpora las típicas funciones de scroll y podemos pasarle como argumento opcional la línea del programa a partir de la cual queremos editar nuestro programa.

No obstante, a lo largo de los años, distintos programadores han desarrollado algunas utilidades en forma de extensiones o de programas auxiliares que facilitan la vida del programador.

En el volumen 14 de QL Today, Dilwyn Jones publicó un artículo en dos entregas tratando este tema. En el artículo se hace un recorrido por las distintas herramientas disponibles para facilitar la tarea del programador SuperBASIC. De las herramientas comentadas en el artículo me han llamando la atención tres de ellas por su utilidad y simpleza, estas son: DEFS, REPLACE y PROCMAN.

DEFS
Esta utilidad se encentra como extensión dentro del volumen A del paquete DIY Toolkit creado por Simon Goodwin. DEFS aporta las extensiones _DEF$ y _DEF% en forma de funciones que nos devuelven el número de línea de una función o procedimiento que podemos usar en conjunción con ED en la edición de nuestros programa. Esto es algo muy útil en programas SuperBASIC largos en los que tengamos gran cantidad de procedimientos o funciones.

Por ejemplo, el comando

ED _def%

nos mostrará en pantalla, a modo de menú, una lista de todos los procedimientos y funciones del programa que tengamos cargado en memoria. Con las teclas de cursor podemos desplazarnos por esa lista y al seleccionar la entrada deseada (con enter o espacio), esto activará el editor en la línea donde se encuentre la definición del procedimiento o función seleccionada.

Un atajo muy práctico es incluir en nuestro boot algo parecido a lo siguiente:

ALTKEY ‘e’; ‘ED _def%’ & CHR(10)

Con esto, cada vez que pulsemos ALT-e en nuestro QL se activará el menú con la lista de procedimientos y funciones de nuestro programa, con el objetivo de poder desplazarnos de forma cómoda a las distinas secciones del programa SuperBASIC que tengamos en memoria.

En la imagen siguiente vemos la lista de procedimientos y funciones de un programa y el resultado de la edición.

Defs de DIY Toolkit en acción

Defs de DIY Toolkit en acción (2)

Podemos encontrar esta utilidad en la siguiente dirección
http://www.dilwyn.me.uk/tk/index.html , o directamente de la pagina del autor de DIY Toolkit http://simon.mooli.org.uk/QL/DIY_Toolkit.html

Para cargar esta extensión podemos poner en nuestro boot una línea semejante a la siguiente (si tenemos previamente cargado el Toolkit 2)

LRESPR flp1_defs_code

REPLACE
Otra pequeña utilidad que nos podría venir muy bien es REPLACE, perteneciente al paquete DIY Toolkit, volumen R. Su utilidad es evidente, nos sirve para reemplazar nombre de variables en el programa que tengamos cargado en memoria. Esta utilidad nos ahorrará el trabajo de editar nuestro programa con un editor externo para buscar y reemplazar el nombre de una variable por otro nombre diferente. El uso es muy simple, supongamos que tenemos en nuestro programa una variable llamada f$ y que queremos sustituirla con otro nombre más significativo como es fichero$. El comando a emplear sería simplemente:

REPLACE f$, fichero$

PROCMAN
ProcMan es un acrónimo de Procedure Manager y se trata de una utilidad creada por Dilwyn Jones con el objetivo de facilitarnos la gestión de librerías de código SuperBASIC.

Supongamos que tenemos un fichero con una colección de procedimientos o funciones en SuperBASIC que queremos reutilizar en nuestros programas. PROCMAN nos permite fácilmente traspasar un conjunto de procedimiento de un fichero a otro. Esto nos ahorrará mucho trabajo de Save y Merge de trozos parciales de código.

Al ejecutar ProcMan, el programa nos pregunta por el fichero origen (donde tenemos la colección de rutinas que queremos aprovechar) y el por el fichero destino (el programa al que queremos volcar las rutinas seleccionadas). Una vez dentro del ProcMan, se nos muestra una lista numerada con todos los procedimientos y funciones del fichero origen, basta ir tecleando los números que identifican a las funciones o procedimientos para pasarlos todos de un golpe al fichero destino.

ProcMan tiene dos versiones, una versión estándar y otra versión más elaborada bajo PE.

En la siguiente imagen vemos un ejemplo de la lista de procedimientos y funciones de un programa desde el cual queremos extraer un subconjunto de ellos para aprovecharlos en otro programa.

Procedure Manager en acción

Podemos descargar ProcMan desde la siguiente dirección:
http://www.dilwyn.me.uk/program/index.html

Éstas son sólo algunas de las utilidades que se han creado a lo largo del tiempo de cara a facilitar la vida al programador en SuperBASIC. En artículo de Dilwyn Jones que he comentado se mencionan otras (Trace, Structured Super Basic, Better Basic, MultiBasic, …), que usadas de forma adecuada pueden dotar a nuestro QL de un entorno de desarrollo SuperBASIC bastante práctico y productivo.