10 ' 20 ON ERROR GOTO 1450 30 DIM DNP$(60,9,2),DCP(60,9,2),DNC$(60,9,2) 40 DIM DPB(30),PPB(30),CPB(30) 50 FOR a=65 TO 90:READ B:KEY DEF B,1,A:NEXT:KEY DEF 29,1,161 60 DATA 69,54,62,61,58,53,52,44,35,45,37,36,38,46,34,27,67,50,60,51,42,55,59,63,43,71 70 POKE &BDEE,201:SPEED KEY 255,255:KEY DEF 66,0,0:ON BREAK CONT 80 OPENIN "menu.BPD" 90 INPUT #9,ndisc 100 FOR nd=1 TO ndisc 110 FOR np=1 TO 9:INPUT #9,dnp$(nd,np,1),dnp$(nd,np,2),dcp(nd,np,1),dcp(nd,np,2),dnc$(nd,np,1),dnc$(nd,np,2) 120 NEXT np:NEXT nd 130 CLOSEIN:SC=1 140 ' 150 MODE 1:BORDER 4:PAPER 0:INK 0,4:INK 1,4:INK 2,4:INK 3,4 160 LOCATE 15,6:PEN 2:PRINT "MENU":LOCATE 15,7:PEN 3:PRINT STRING$(4,208) 170 LOCATE 7,10:PEN 3:PRINT "1. ";:PEN 1:PRINT "Buscar un" 180 LOCATE 7,12:PEN 3:PRINT "2. ";:PEN 1:PRINT "Buscar programas." 190 LOCATE 7,14:PEN 3:PRINT "3. ";:PEN 1:PRINT "Listar tod" 200 LOCATE 7,16:PEN 3:PRINT "4. ";:PEN 1:PRINT "Introducir datos." 210 PEN 1:IF sc=1 THEN LOCATE 19,10:PRINT " Juego. ":LOCATE 20,14:PRINT "os los Juegos. " 220 IF sc=2 THEN LOCATE 19,10:PRINT " Simulador.":LOCATE 20,14:PRINT "os los Simuladores." 230 IF sc=3 THEN LOCATE 19,10:PRINT "a Utilidad.":LOCATE 20,14:PRINT "as las Utilidades. " 240 LOCATE 6,21:PEN 2:PRINT "N. DISCOS:";:PEN 3:PRINT NDISC:LOCATE 25,21:PEN 2:PRINT "FREE:";:PEN 3:PRINT 60-NDISC 250 INK 1,0:INK 2,18:INK 3,15 260 a$="":a$=INKEY$:IF a$="" THEN 260 270 IF a$="J" THEN sc=1:GOTO 210 280 IF a$="S" THEN sc=2:GOTO 210 290 IF a$="U" THEN sc=3:GOTO 210 300 IF a$="1" THEN 350 310 IF a$="2" THEN 350 320 IF a$="3" THEN 550 330 IF a$="4" THEN 790 340 GOTO 260 350 '*-BUSQUEDA 360 CON=0:MODE 1:INK 0,0:BORDER 0:PRINT "DAME LAS PRIMERAS LETRAS DEL PROGRAMA:":INK 1,26:PEN 1 370 LOCATE 1,2:INPUT "",NOMBRE$:IF NOMBRE$="" THEN 370 380 GOSUB 1510:LEB=LEN(NOMBRE$):INK 2,18:LOCATE 14,15:PEN 2:PRINT "BUSCANDO...." 390 FOR A=1 TO NDISC:FOR C=1 TO 2:FOR B=1 TO 9 400 IF A$="2" THEN 410 ELSE IF DCP(A,B,C)<>SC THEN 420 410 IF LEFT$(DNP$(A,B,C),LEB)=NOMBRE$ THEN CON=CON+1:DPB(CON)=A:PPB(CON)=B:CPB(CON)=C 420 NEXT B,C,A 430 IF CON<>0 THEN 480 440 INK 2,6:PEN 1:LOCATE 9,12:PRINT "ESE PROGRAMA NO EXISTE." 450 PEN 2:LOCATE 5,14:PRINT "PULSA UNA TECLA PARA CONTINUAR.":PEN 3:PRINT TAB(10);"PULSA 'M' PARA MENU." 460 A$="":A$=INKEY$:IF A$="" THEN 460 470 IF A$="M" THEN 140 ELSE GOTO 350 480 IF CON=1 THEN NUMERO=1:GOTO 540 490 CLS:FOR A=1 TO CON 500 PEN 2:PRINT A;:PEN 3:PRINT " - ";:PEN 1:PRINT DNP$(DPB(A),PPB(A),CPB(A)) 510 NEXT 520 LOCATE 16,25:PRINT STRING$(24,32):LOCATE 1,25:INPUT "DAME EL NUMERO:",NUMERO$:IF NUMERO$="" THEN 520 530 NUMERO=VAL(NUMERO$):IF NUMERO>CON OR NUMERO<1 THEN 520 540 ND=DPB(NUMERO):NDP=PPB(NUMERO):CD=CPB(NUMERO):GOTO 1280 550 '*-LISTAR 560 MODE 1:WINDOW #1,1,40,25,25:WINDOW #0,1,40,1,24:INK 0,0:BORDER 0:INK 1,15:INK 2,24:INK 3,18:PAPER #1,0 570 FOR A=1 TO NDISC 580 FOR c=1 TO 2 590 FOR B=1 TO 9 600 IF DCP(A,B,c)=SC THEN PEN 1:PRINT A;"- ";:IF c=1 THEN PRINT "A ";"-";B;"-";:PEN 2:PRINT " ";DNP$(A,B,c):PRINT ELSE PRINT "B ";"- ";B;"-";:PEN 2:PRINT " ";DNP$(A,B,c):PRINT 610 IF INKEY(18)=0 THEN 640 620 IF INKEY(47)=0 THEN 610 630 NEXT B,c,A 640 PEN #1,3:LOCATE #1,1,1:PRINT #1,"COORDENADAS DEL PROGRAMA:" 650 cord$="":co=0:nd=0:ndp=0:cd$="":LOCATE #1,26,1:PRINT #1,STRING$(6,32):LOCATE #1,26,1 660 IF es$="-" THEN co=co+1 670 es$="":es$=INKEY$:IF es$="" OR es$=" " OR es$=CHR$(13) THEN 670 680 IF es$=CHR$(127) THEN 140 690 cord$=cord$+es$:IF es$="-" THEN PEN #1,3:ELSE PEN #1,2 700 IF LEN(cord$)=7 THEN 650 710 PRINT #1,es$; 720 IF co=2 THEN 730 ELSE GOTO 660 730 IF MID$(cord$,2,1)="-" THEN nd=VAL(LEFT$(cord$,1)):cd$=MID$(cord$,3,1):ndp=VAL(MID$(cord$,5,1)) ELSE nd=VAL(LEFT$(cord$,2)):cd$= MID$(cord$,4,1):ndp=VAL(MID$(cord$,6,1)) 740 IF nd>60 OR ndp>9 THEN 650 750 IF cd$="A" THEN cd=1 ELSE IF cd$="B" THEN cd=2 760 IF cd=0 THEN 650 770 IF dnp$(nd,ndp,cd)="" OR dcp(nd,ndp,cd)<>sc THEN 650 780 GOTO 1280 790 '*-INTRODUCIR DATOS 800 cara=1:nump=0:ndisc=ndisc+1 810 MODE 1:BORDER 4:INK 0,0:INK 1,26:INK 2,4:INK 3,15 820 WINDOW #1,1,19,8,22:WINDOW #5,1,19,4,7:WINDOW #2,22,40,8,22:WINDOW #6,22,40,4,7:WINDOW #3,16,30,2,2:WINDOW #4,1,40,24,25:PEN #4, 3 830 PAPER 2:CLS:PAPER #1,0:PAPER #2,0:PAPER #3,2:PAPER #5,0:PAPER #6,0:CLS #1:CLS #2:CLS #5:CLS #6:PRINT #4,STRING$(40,32) 840 PEN #3,3:PRINT #3,"Disco n.";:PEN #3,1:PRINT #3,ndisc; 850 PEN #5,2:PRINT #5:PRINT #5," CARA : A":PEN #6,2:PRINT #6:PRINT #6," CARA : B" 860 ' 870 nump=nump+1:IF nump=10 AND cara=1 THEN nombre$="B":GOTO 930 ELSE IF nump=10 AND cara=2 THEN 1090 880 LOCATE #cara,1,nump:PEN #cara,3:PRINT #cara,MID$("123456789",nump,1):LOCATE #cara,2,nump:PRINT #cara,"." 890 LOCATE #cara,3,nump:PEN #cara,1:INPUT #cara,"",nombre$ 900 IF nombre$="" AND nump=1 AND cara=1 THEN ndisc=ndisc-1:GOTO 140 910 IF NOMBRE$="" THEN 890 920 IF nombre$="A" THEN CLS#1:LOCATE #2,1,nump:cara=1:PRINT #2,STRING$(10,32):nump=0:GOTO 870 930 IF nombre$="B" THEN CLS#2:LOCATE #1,1,nump:CARA=2:PRINT #1,STRING$(10,32):nump=0:GOTO 870 940 IF nombre$="FIN" THEN 1090 950 GOSUB 1510 960 LOCATE #cara,3,nump:PRINT #cara,nombre$ 970 LOCATE #4,1,1:PEN #4,3:PRINT #4,"1. ";:PEN #4,1:PRINT #4,"Juego ";:PEN #4,3:PRINT #4,"2. ";:PEN #4,1:PRINT #4,"Simulador ";:PEN #4,3:PRINT #4,"3. ";:PEN #4,1:PRINT #4,"Utilidad" 980 carcp$="":carcp$=INKEY$:IF carcp$="" THEN 980 990 IF carcp$="." OR carcp$="-" OR carcp$="&" OR carcp$="+" THEN 980 1000 CARCP=VAL(CARCP$):IF CARCP<1 OR CARCP>3 THEN 980 1010 DCP(ndisc,nump,cara)=CARCP 1020 LOCATE #4,1,1:PRINT #4,STRING$(40,32) 1030 LOCATE #4,1,1:PEN #4,3:PRINT #4,"Nombre de carga:" 1040 LOCATE #4,17,1:PEN #4,1:INPUT #4,"",nomc$ 1050 IF nomc$="" OR LEN(nomc$)>8 THEN LOCATE #4,17,1:PRINT #4,STRING$(24,32):GOTO 1040 1060 dnp$(ndisc,nump,cara)=nombre$:dcp(ndisc,nump,cara)=carcp:dnc$(ndisc,nump,cara)=nomc$ 1070 nom2$="":nom22$="" 1080 GOTO 870 1090 ' Fin de datos 1100 LOCATE #4,1,1:PEN #4,3:PRINT #4,"Cara A, B, Otro disco o Fin (A/B/O/F):"; 1110 A$="":A$=INKEY$:IF A$="" THEN 1110 1120 PEN #4,1 1130 IF a$="A" THEN PRINT #4,"A":nombre$="A":GOTO 920 1140 IF a$="B" THEN PRINT #4,"B":nombre$="B":GOTO 920 1150 IF a$="F" THEN PRINT #4,"F":GOTO 1180 1160 IF a$="O" THEN PRINT #4,"O":GOTO 790 1170 GOTO 1110 1180 '*-GRABAR DATOS 1190 LOCATE #4,1,1:PRINT #4," Grabando MENU.BDP " 1200 np=0:cr=0:OPENOUT "menu.BPD" 1210 WRITE #9,ndisc 1220 FOR nd=1 TO ndisc 1230 FOR np=1 TO 9:WRITE #9,dnp$(nd,np,1),dnp$(nd,np,2),dcp(nd,np,1),dcp(nd,np,2),dnc$(nd,np,1),dnc$(nd,np,2):NEXT np 1240 NEXT nd 1250 CLOSEOUT 1260 |ERA,"FICHERO.BAK" 1270 GOTO 140 1280 ' LOAD 1290 MODE 0:INK 1,18:INK 2,6,3:INK 0,0:BORDER 4 1300 NOMBRE$=dnp$(nd,ndp,cd):carga$=dnc$(nd,ndp,cd) 1310 IF DCP(nd,ndp,cd)=1 THEN carac$="Juego" 1320 IF DCP(nd,ndp,cd)=2 THEN carac$="Simulador" 1330 IF DCP(nd,ndp,cd)=3 THEN carac$="Utilidad" 1340 lon=LEN(nombre$):loc=LEN(carac$) 1350 LOCATE 10-lon/2,7:PEN 1:PRINT nombre$ 1360 LOCATE 10-loc/2,9:PEN 4:PRINT carac$ 1370 LOCATE 6,13:PEN 6:PRINT "DISCO ";:PEN 7:PRINT nd 1380 LOCATE 7,15:PEN 8:PRINT "CARA ";:PEN 9:PRINT cd$ 1390 LOCATE 6,17:PEN 12:PRINT "N.Prg.:";:PEN 13:PRINT ndp 1400 LOCATE 3,24:PEN 14:PRINT "LOAD...";:PEN 2:PRINT carga$ 1410 IF INKEY(47)<>0 THEN 1410 1420 MODE 1:CALL &BC02:PEN 1 1430 IF carga$="|CPM" THEN |CPM 1440 RUN carga$ 1450 'ERRORES 1460 IF DERR=146 OR ERR=25 OR DERR=144 THEN MODE 1:LOCATE 10,12:PEN 1:INK 1,26:PRINT "Ese no es el DISCO.":FOR A=1 TO 2000:NEXT:GOTO 130 1470 IF DERR=194 THEN 280 1480 MODE 1:PEN 1:INK 1,26:PRINT "ERROR n.:";ERR:PRINT "En LINEA";ERL 1490 RESUME 1500 1500 END 1510 ' ARREGLO NOMBRE 1520 longt=LEN(nombre$):nom$=LEFT$(nombre$,1):a=1 1530 a=a+1:IF a=longt+1 THEN nombre$=nom$:GOTO 1560 1540 IF MID$(nombre$,a,1)<>" " THEN nom$=nom$+LOWER$(MID$(nombre$,a,1)):GOTO 1530 1550 nom$=nom$+" "+MID$(nombre$,a+1,1):a=a+1:GOTO 1530 1560 RETURN