Fundas

Descripción del contenido de la página

Programa para crear fundas (carátulas) de casete, escrito para Sinclair ZX Spectrum.

Etiquetas:

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:

MenúTextoTextosRayadoRayadoRayado y textoCuadrícula

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

Descargas