GENS3 con Beta Disk
Descripción del contenido de la página
Programa en Sinclar BASIC para usar la unidad de disco Beta Disk con el programa GENS3.
En 1986 trabajé mucho con GENS3 y MONS3, ensamblador y desensamblador, respectivamente, de Z80 para la ZX Spectrum. Pero a finales de año el código del proyecto para el que lo estaba usando, Finen per Imago, había crecido tanto que la capacidad de GENS3 se me quedaba pequeña. Uno de los últimos intentos que hice para seguir usando GENS3, antes de escribir mi propio ensamblador de Z80, fue este programita para poder leer y grabar sus ficheros con la unidad de disco Beta.
Para acceder a los comandos de TR-DOS, el sistema de disco de la unidad Beta, había que llamar a la rutina en código máquina de la dirección 15363 desde una línea del programa que tuviera a continuación, detrás de un REM
, el comando en cuestión.
¿Y qué son todos esos VAL
? Sinclair BASIC trabaja siempre con números de coma flotante (por eso, entre otros motivos, es tan lento) que almacena en mantisas de varios octetos (aparte de la representación visible del número como una cadena). Al usar la función VAL
, que devolvía el valor numérico de una cadena de texto, se ahorraba espacio en el código del programa.
Código fuente
1 REM Programa para grabar ficheros de GENS3 en el disco Beta
2 REM Copyright (C) 1986 Marcos Cruz (http://programandala.net)
3 REM Licencia/Permesilo/License: http://programandala.net/license
4 REM 1986-11-13
10 INPUT "Direccion de GENS3? ";d
20 INPUT "Nombre? ";a$
30 INPUT "0=LOAD 1=SAVE";a
40 IF a THEN GO TO VAL "100"
50 RANDOMIZE USR VAL "15363": REM : LOAD a$CODE d+VAL "8262"
60 INPUT "Longitud? ";l
70 RANDOMIZE l: POKE d+VAL"54",PEEK VAL "23670": POKE d+VAL "55",PEEK VAL "23671"
80 GO TO VAL "120"
100 LET l=PEEK (d+VAL "54")+VAL "256"*PEEK (d+VAL "55")-d-VAL "8262": PRINT "Longitud=";l
110 RANDOMIZE USR VAL "15363": REM : SAVE a$CODE d+VAL "8262",l
120 RANDOMIZE USR (d+VAL "61")