Tabla de Contenidos

Carga y Grabación de Programas desde BASIC

En esta sección queremos enseñar a programar juegos en BASIC mediante el empleo de pequeños ejemplos y soluciones a los problemas que se nos pueden plantear. No pretende ser un profundo curso de BASIC, pero si unas prácticas que complementen nuestros conocimientos previos en el lenguaje, por mínimos que sean, o que puedan servir como ejercicios simultáneos al aprendizaje sobre un libro que podamos leer.

Para poder encontrar una explicación profunda a cada comando que utilicemos, el mejor sitio es el manual del propio Spectrum, sobre todo el que se entregaba con la versión de 16k y 48k con tapas naranjas.

También vamos a utilizar alguna utilidad externa que funciona sobre PC, como puede ser el caso del BAS2TAP, que nos facilite la tarea, ya que, siendo realistas, es más fácil programar en un archivo de texto en el PC y luego probar sobre un emulador, que tener que soportar tiempos de espera en cargas y grabaciones, etc.

Hoy vamos a centrarnos en la carga y grabación de nuestros programas y el uso del BAS2TAP, un programa sencillo pero potente que nos va a ser de mucha utilidad a la hora de programar sobre nuestro PC.


Carga y grabación de programas en el ZX-Spectrum

Lo primero que vamos a aprender es a grabar y cargar nuestros programas en cinta y disco con un Spectrum, en cualquiera de sus modelos.

Escribimos un pequeño programa de ejemplo en nuestro Spectrum:

- PROGRAMA 1 -
10 PRINT "Hola mundo"
20 GO TO 10

Este sencillo programa (aunque corto y simple, no deja de serlo), nos sirve perfectamente para nuestros fines, practicar el uso de los comandos de carga y grabación en nuestro Spectrum.


Grabación y carga en cinta

- PROGRAMA 2 -
 5 REM Esto es una prueba
20 GO TO 5

El resultado que obtendríamos sería:

- PROGRAMA 3 -
 5 REM Esto es una prueba
10 PRINT "Hola mundo"
20 GO TO 5

Con lo cual vemos que, como la línea 5 no estaba en memoria, se incluye sin machacar nada, pero la 20, que está tanto en memoria como en la cinta, es sustituida por la grabada en cinta.

Con [MERGE] también podemos evitar que los programas grabados con la opción [LINE XXXX] se ejecuten al cargar, si teniendo la memoria sin nada, hacemos [MERGE “programa”] al finalizar la carga de el mismo, nos devolverá el control sin empezar a correr el programa. Útil si no queremos estar pendiente de cuando termine para pulsar [BREAK]. Por supuesto, si tenemos algo en memoria funcionará con las propiedades del comando, mezclando y sustituyendo líneas y nos devolverá el control.

NOTA: Estos comandos tienen más opciones, entre ellas guardar programas o datos como bytes, arrays, etc. Cuestiones que explicaremos si llega el momento de utilizarlos. Por el momento con estas explicaciones nos va a valer para ir creando nuestro juego.


Grabación y carga en disco en un Spectrum +3

Los comandos son los mismos básicamente que en la opción de cinta, lo único que cambia es el destino hacía donde grabamos y desde donde cargamos, lo cual se lo debemos indicar para que los busque en el sitio correcto, es decir, el disco del +3 o la cinta de cassette, por ejemplo. También cambia ligeramente el nombre que le podemos dar al programa, ahora le podemos poner terminaciones del tipo .bas para programas en BASIC.

Por defecto el +3 manda la salida y entrada de datos de los comandos comentados a la disquetera, “a:”. Esto se puede modificar muy fácilmente. Si queremos usar la cinta en lugar de la disquetera, tecleamos [LOAD “t:” + ENTER], el ordenador nos responderá con un mensaje de conformidad y a partir de este momento, cada vez que utilicemos un comando de carga se dirigirá a la cinta de cassette, y si lo que necesitamos es grabar en cinta, hacemos lo mismo pero con el comando [SAVE “t:” + ENTER]. En el momento que queramos volver a orientar el envío de datos al disco, ponemos los mismos comandos anteriores, pero cambiando la letra que corresponda a la unidad deseada, [a:] para la disquetera del +3, [b:] si tenemos una segunda disquetera externa, como la de 3 1/2, [t:] para la cinta de cassette.

Los nombres de los programas, como comentábamos antes, pueden poseer una terminación que los identifique unos de otros. Es decir, podemos poner [SAVE “programa.bas”] para un programa en BASIC, [SAVE “programa.bin” code 30000,4000] para un bloque de bytes o [SAVE “pantalla.scr” SCREEN$] para las pantallas de presentación. La única norma que tenemos que seguir es respetar el límite de 8+3 caracteres por nombre, estilo MS-DOS.

Una opción que tenemos es, dando el nombre adecuado, hacer que un programa se cargue solo con la opción [LOADER] del menú del +3. Para esto debemos grabar el programa como [SAVE “DISK” LINE XXXX], siendo line opcional, como explicamos al comienzo del artículo. Este programa lo podemos usar como menú de acceso a los demás archivos, o cualquier utilidad que se nos ocurra.

Tenemos más comandos para utilizar en el +3 y la unidad de disco.


Utilización de BAS2TAP

BAS2TAP es un programa creado por Martijn van der Heide, conocido por ser el responsable de la web World of Spectrum, que nos va a permitir escribir un programa BASIC en un editor de texto, sobre PC por ejemplo, y crear un archivo TAP que se pueda cargar en el emulador que usemos habitualmente, e incluso pasarlos a cinta con los programas destinados al efecto y cargarlo en un Spectrum real. BAS2TAP está disponible para plataformas Linux, PC/MS-DOS, Amiga y Mac OS X. El autor de este artículo lo ha probado en Linux y MS-DOS con un resultado optimo en ambos casos, en las otras dos plataformas no ha sido posible por no disponer de las máquinas.

Las ventajas de programar utilizando este sistema son evidentes y no las vamos a enumerar todas, pero solo con decir que vamos a evitar los tiempos de carga y grabación en el Spectrum, y que los resultados van a ser inmediatos sobre el emulador, creo que pocas justificaciones más necesitamos.

Una vez descargado el programa de su web, lo descomprimimos en una carpeta y queda listo para su uso. En el archivo [bas2tap.doc] que acompaña a la distribución encontramos las instrucciones y otros datos útiles, aquí vamos a explicar someramente lo que nos hace falta saber.

Por supuesto esta utilidad tiene más opciones que podemos utilizar, y que tenemos descritas en el archivo bas2tap.doc que acompaña a la distribución del mismo. Pero con estos simples pasos aquí reflejados son suficientes para empezar a trabajar con este buen programa de Martijn van der Heide.


Conclusiones

En esta entrega nos hemos limitado a ver unos conceptos básicos que necesitaremos utilizar cada vez que queramos programar, como es el almacenamiento de nuestro código en un soporte permanente, ya que la memoria RAM de nuestro Spectrum se borra en cuanto deja de recibir corriente eléctrica. El mes que viene empezaremos a crear de cero nuestro primer juego, e iremos ampliándolo poco a poco y metiendo opciones y efectos que lo hagan más atractivo.


Enlaces


Miguel A. García Prada
Julio 2003
MagazineZX #3