Fundas
Descripción del contenido de la página
Programa para crear fundas (carátulas) de casete, escrito para Sinclair ZX Spectrum.
Este simpático programa, escrito en mayo de 1984, antecesor por tanto de Carat-Musi y Carat-Prog, ha aparecido revisando y organizando el baúl de los recuerdos. No lo recordaba. Tiene su gracia. Sirve, como los dos mencionados, para hacer carátulas de cintas de casete (que por algún misterio llamé «fundas»), pero tiene opciones diferentes:
Permite situar textos en cualquier lugar de la carátula (aunque sólo de 13 caracteres de longitud como máximo) y permite rayar la zona principal de la carátula, tanto horizontal como verticalmente, con varias densidades (según el número de canciones que elijamos.
Como suelo hacer con estos viejos pequeños tesoros, he hecho unos retoques estéticos en el código fuente para hacerlo más legible, pero sin modificar el funcionamiento ni el aspecto del programa (salvo un par de textos corregidos en el menú). El comando de volcado en impresora, COPY
, deberá sustituirse si es preciso por el correspondiente a la interfaz utilizada.
Pantallazos
Ejemplos de textos y rayados posibles:
Código fuente
10 REM Fundas
20 REM para cintas de casete
30 :
40 REM Copyright (C) 1984,2010 Marcos Cruz (http://programandala.net)
50 REM Licencia/permesilo/license: http://programandala.net/licencia
60 :
70 REM 1984-05-12/15
80 REM 2010-08-31 Retoques en el codigo fuente para su publicacion.
90 :
100 LET P=1: LET PF=0
110 BORDER PF: PAPER PF: INK 7: CLS
120 FOR n=0 TO 7: POKE USR "a"+n,128: NEXT n
130 RESTORE 150
140 FOR n=USR "K" TO USR "L"+7: READ f: POKE n,f: NEXT n
150 DATA 124,0,98,82,74,70,66,0,0,120,0,120,68,68,68,0
160 :
170 PLOT 0,174: DRAW 120,0: DRAW 0,-131: DRAW -120,0: DRAW 0,131
180 PLOT 0,140: DRAW 120,0
190 PLOT 0,123: DRAW 120,0
200 :
210 POKE 23658,8: GO SUB 390: PRINT AT 0,17; PAPER P; FLASH 1;"ELIGE:"
220 PRINT AT 2,17; PAPER P;"A => TEXTOS"
230 PRINT AT 4,17; PAPER P;"B => RAYADO"
240 PRINT AT 6,17; PAPER P;"C => LIMPIAR"
250 PRINT AT 8,17; PAPER P;"D => IMPRIMIR"
260 PRINT AT 10,17; PAPER P;"E => FIN"
270 :
280 LET i$=INKEY$: IF i$<"A" OR i$>"E" THEN GO TO 280
290 :
300 IF i$="A" THEN GO TO 750
310 IF i$="B" THEN GO TO 470
320 IF i$="C" THEN FOR N=0 TO 17: PAUSE 10: PRINT AT N,0; PAPER PF;" ": NEXT N: RUN
330 IF i$="D" THEN LET A=P: LET P=PF: GO SUB 370: LET P=A: COPY : GO TO 210
340 NEW
350 :
360 REM ***********************
370 REM LIMPIAR
380 REM ***********************
390 FOR n=0 TO 19
400 PRINT AT n,17; PAPER PF;" "
410 NEXT n
420 RETURN
430 :
440 REM ***********************
450 REM RAYADO
460 REM ***********************
470 GO SUB 370: PRINT AT 0,17; PAPER P;"A => HORIZONTAL"
480 PRINT AT 2,17; PAPER P;"B => VERTICAL"
490 PRINT AT 4,17; PAPER P;"C => BORRAR"
500 PRINT AT 6,17; PAPER P;"D => MENU"
510 LET I$=INKEY$: IF I$<"A" OR I$>"D" THEN GO TO 510
520 GO SUB 370: IF i$="D" THEN GO TO 210
530 IF i$<>"C" THEN GO TO 590
540 PRINT AT 6,0; PAPER PF;"A "
550 PLOT 0,123: DRAW 120,0
560 FOR n=7 TO 15
570 PRINT AT n,0;"A ": NEXT n: PRINT " "
580 PLOT 0,47: DRAW 0,-4: DRAW PAPER PF;120,0: GO TO 470
590 IF i$="B" THEN GO TO 660
600 INPUT "NUMERO MAXIMO DE CANCIONES EN"'"CADA CARA (HASTA 20) =>";c: IF c<10 OR c>20 THEN GO TO 600
610 LET a=INT (80/c)
620 FOR l=123 TO 43 STEP -a
630 PLOT 1,l: DRAW 119,0
640 NEXT l: INPUT "DIVISION VERTICAL? =>";t$: IF t$="s" OR t$="S" THEN PLOT 60,122: DRAW 0,-78
650 GO TO 470
660 INPUT "NUMERO DE CANCIONES EN"'"LAS DOS CARAS (HASTA 30) >=";c: IF c<10 OR c>30 THEN GO TO 660
670 LET a=INT (120/c)
680 FOR l=120 TO 0 STEP -a
690 PLOT l,122: DRAW 0,-78
700 NEXT l: GO TO 470
710 :
720 REM ***********************
730 REM TEXTOS
740 REM ***********************
750 GO SUB 390: LET T$="": LET L=1: LET I=0
760 RESTORE 800
770 FOR N=1 TO 15
780 READ A$: PRINT AT N+(N>3)+(N>4)+(N>13),17; PAPER P;A$
790 NEXT n
800 DATA "<= A","<= B","<= C","<= D","<= E","<= F","<= G","<= H","<= I","<= J","<= K","<= L","<= M","N => INVERSO","O => MENU"
810 POKE 23658,8
820 LET I$=INKEY$: IF I$<"A" OR I$>"O" THEN GO TO 820
830 IF I$="O" THEN GO TO 210
840 IF I$="N" THEN PRINT AT L,1; INVERSE (i<>1);t$: FOR N=1 TO 10: NEXT N: LET i=i<>1: GO TO 820
850 LET L=CODE I$-64+(I$="D")+2*(I$>"D")
860 PRINT AT L,17; FLASH 1; PAPER P; INK 9;"<="
870 INPUT "TEXTO =>";t$
880 IF LEN t$>13 THEN GO TO 870
890 PRINT AT L,1;t$;AT L,17; PAPER P;"<="
900 GO TO 820