Discípulo
Descripción del contenido de la página
Programa escrito en SuperBASIC para la Sinclair QL, para grabar ficheros en discos de la interfaz DISCiPLE de la Sinclair ZX Spectrum.
En 1987 compré una interfaz multifunción DISCiPLE para mi ZX Spectrum, más versátil que la interfaz de disco Beta que usaba anteriormente (aunque seguí usando ambas). Cuando por las mismas fechas compré mi primera QL, de segunda mano, empecé a investigar todas las posibilidades de conectar ambas máquinas: por red local (animado por el mito entonces sin confirmar de que la red de la QL era compatible con la red de la famosa Interfaz 1 de la ZX Spectrum), por cable serial, con disquetes e incluso creo que (por supuesto sin éxito) con microductoras (los famosos cartuchos de cinta en bucle, «microdrives», devoción de Clive Sinclair, que eran físicamente iguales para ambas computadoras pero incompatibles por su formato. Como era de esperar, lo que mejor funcionó fue la conexión serial.
El programa Discípulo que muestro aquí permitía grabar, con la QL, un fichero en un disquete de la Spectrum formateado con la interfaz DISCiPLE. Conservo dos versiones sucesivas del programa. Lo que no puedo recordar es cómo recomponía el fichero después en la Spectrum, pues la grabación se hacía en bruto sobre los sectores del disco. Imagino que usaría un programa similar en Sinclair BASIC; si es así estará en mi archivo y lo enlazaré desde aquí cuando lo publique.
Código fuente
Versión 0.00
100 REMark Discípulo versión 0.00 (1989-12)
110 REMark Copyright (C) 1989 Marcos Cruz (http://programandala.net)
120 REMark Licencia/Permesilo/License: http://programandala.net/licencia
130 :
140 CLS
150 dispositivo$="FLP1"
160 dispositivo%=4
170 fichero%=5
180 última_pista_disciple=39
190 :
200 PRINT "Situar en"!dispositivo$!"el disco del Disciple"
210 INPUT "¿Fichero del Spectrum?"!fichero$
220 CLS
230 :
240 OPEN#dispositivo%,dispositivo$&"_*d2d"
250 OPEN_IN#fichero%,fichero$
260 :
270 fin%=0
280 FOR cara=0 TO 1
290 FOR pista=0 TO última_pista_disciple
300 FOR sector=1 TO 10
310 sector$=""
320 FOR byte=0 TO 511
330 IF EOF(#fichero%)
350 fin%=1
360 EXIT byte
370 ELSE
380 sector$=sector$&INKEY$(#fichero%)
390 END IF
400 END FOR byte
410 CLS
420 PRINT "Cara",cara
430 PRINT "Pista",pista
440 PRINT "Sector",sector;" "
460 PUT#dispositivo%\sector+cara*256+pista*65536,sector$
470 IF fin%:EXIT cara
480 END FOR sector
490 END FOR pista
500 END FOR cara
510 CLOSE#fichero%
515 CLOSE#dispositivo%
520 :
Versión 1.00
100 título$="Discípulo Versión 1.00 (1989-12-26)"
110 REMark Copyright (C) 1989 Marcos Cruz (http://programandala.net)
120 REMark Licencia/Permesilo/License: http://programandala.net/licencia
125 :
130 MODE 4
140 WTV
150 CLS
160 PRINT título$
170 PRINT
180 PRINT "Este programa graba un fichero en los sectores de un disco formateado por la interface Disciple del Spectrum."
190 PRINT
200 dispositivo$="FLP1"
210 dispositivo%=4
220 fichero%=5
230 :
240 PRINT "Situar en"!dispositivo$!"el disco del Disciple"
250 INPUT "¿Ultima pista del disco del Disciple? (39/79)"!última_pista_disciple
260 PRINT
270 INPUT "¿Fichero del Spectrum a grabar en él?"!fichero$
280 CLS
290 :
300 OPEN#dispositivo%,dispositivo$&"_*d2d"
310 longitud=FLEN(\fichero$)
320 dirección_inicial=ALCHP(longitud)
330 dirección_sector=dirección_inicial
340 LBYTES fichero$,dirección_inicial
350 :
360 FOR cara=0 TO 1
370 FOR pista=0 TO última_pista_disciple
380 FOR sector=1 TO 10
390 sector$=PEEK$(dirección_sector,512)
400 AT 0,0
410 PRINT "Cara",cara
420 PRINT "Pista",pista
430 PRINT "Sector",sector;" "
440 PUT#dispositivo%\sector+cara*256+pista*65536,sector$
450 dirección_sector=dirección_sector+512
460 IF dirección_sector>=(dirección_inicial+longitud)
470 EXIT cara
480 END IF
490 END FOR sector
500 END FOR pista
510 END FOR cara
520 CLOSE#fichero%
530 CLOSE#dispositivo%
540 PRINT "Grabación completa."
550 :