10 '******************************
20 '*                            *
30 '*   D I S C O T H E Q U E    *
40 '*                            *
50 '******************************
60 '*De Gregory NOE  pour AMSTRAD*
70 '******************************
80 KEY 138,"ink 1,18:mode 2:list"+CHR$(13)
90 MODE 2
100 BORDER 6
110 DIM t$(100),c$(100,12),a$(100),p$(100)
120 SYMBOL AFTER 56:SYMBOL 91,0,56,108,56,0,0,0,0
130 '----------------
140 '    * MENU *
150 '----------------
160 INK 1,24:INK 0,1
170 WINDOW #1,2,79,25,26
180 WINDOW #2,1,80,1,4
190 WINDOW #3,1,1,4,24
200 WINDOW #4,80,80,4,24 
210 WINDOW 3,78,4,24
220 FOR I=1 TO 80:LOCATE#2,I,1:PRINT#2,CHR$(131);:NEXT I
230 LOCATE#2,3,2:PRINT#2,">D.I.S.C.O.T.H.E.Q.U.E..............G. NOE"
240 FOR I=1 TO 80:LOCATE#2,I,3:PRINT#2,CHR$(140);:NEXT I
250 LOCATE#2,1,1:PRINT#2,CHR$(138):LOCATE#2,1,2:PRINT#2,CHR$(138):LOCATE#2,1,3:PRINT#2,CHR$(130)
260 LOCATE#2,80,1:PRINT#2,CHR$(133):LOCATE#2,80,2:PRINT#2,CHR$(133):LOCATE#2,80,3:PRINT#2,CHR$(129)
270 PAPER 1:PEN 0
280 FOR i=1 TO 22:PRINT#3,CHR$(215):PRINT#4,CHR$(214):NEXT
290 CLS:CLS#1:LOCATE #2,68,2:PRINT#2,"ALBUM:";a:CLS:LOCATE 14,2:PRINT "VOUS POUVEZ CHOISIR ENTRE..."
300 LOCATE 28,5:PRINT"1/ ENTRER UN NOUVEAU DISQUE"
310 LOCATE 28,7:PRINT"2/ RECHERCHER UN ALBUM"
320 LOCATE 28,9:PRINT "3/ CHARGER UN FICHIER"
330 LOCATE 28,11:PRINT "4/ SAUVEGARDER UN FICHIER"
340 LOCATE 28,13:PRINT "5/ MODIFIER"
350 LOCATE 28,15:PRINT"6/ FIN"
360 LOCATE 25,18:PRINT"VOTRE CHOIX:?":a$=INKEY$:IF a$<>"" THEN 370 ELSE 360
370 SOUND 1,132,17,5,4,2:IF a$<"1" OR a$>"6" THEN 360
380 IF a=0 AND a$<>"1" AND a$<>"3" AND a$<>"6" THEN CLS:LOCATE 6,12:PRINT"VOUS N'AVEZ ENCORE AUCUNE FICHE !!!":GOTO 280    
390 ON VAL(a$)GOTO 410,1170,810,1020,720,1750
400 '------------------------
410 ' * ENTREE FICHES *
420 '------------------------
430 CLS:LOCATE #2,68,2:PRINT#2,"ALBUM:";a
440 a=a+1:CLS
450 IF a>100 THEN 1820
460 GOSUB 1660
470 LOCATE 66,1:PRINT"ALBUM N[";a
480 LOCATE 2,3:PRINT"TITRE DE L'ALBUM:.................................."
490 LOCATE 2,5:PRINT "NOM DE L'INTERPRETE   :..............."
500 LOCATE 2,7:PRINT"PRENOM DE L'INTERPRETE:............... "
510 LOCATE 10,10:PRINT"FACE A":LOCATE 50,10:PRINT"FACE B"
520 FOR i=1 TO 6:LOCATE 2,i+11:PRINT i;"..............................":LOCATE 42,i+11:PRINT i;".............................."
530 NEXT 
540 LOCATE 19,3:LINE INPUT t$(a):IF LEN(t$(a))>35 THEN 540:t$(a)=UPPER$(t$(a)):CLS#1:GOTO 570
550 IF t$(a)="" THEN a=a-1:GOTO 290
560 IF LEN(t$(a))>35 THEN 540 ELSE t$(a)=UPPER$(t$(a)):CLS#1:GOTO 570
570 LOCATE 25,5:LINE INPUT a$(a):IF LEN(a$(a))>15 THEN 570 ELSE a$(a)=UPPER$(a$(a))
580 LOCATE 25,7:LINE INPUT p$(a):IF LEN(p$(a))>15 THEN 500 ELSE p$(a)=UPPER$(p$(a))
590 FOR c=1 TO 6:LOCATE 5,c+11:LINE INPUT  c$(a,c)
600 IF LEN(c$(a,c))>30 THEN c$(a,c)=LEFT$(c$(a,c),30)
610 c$(a,c)=UPPER$(c$(a,c))
620 NEXT c
630 FOR c=7 TO 12:LOCATE 45,c+5:LINE INPUT c$(a,c):IF LEN(c$(a,c))>30 THEN c$(a,c)=LEFT$(UPPER$(c$(a,c)),30)
640 c$(a,c)=UPPER$(c$(a,c)):NEXT
650 CLS:LOCATE 2,5:PRINT"Confirmez-vous (O/N)":INPUT k$
660 SOUND 1,234:k$=UPPER$(k$):IF LEFT$(k$,1)="O" THEN GOTO 430 ELSE 670
670 CLS:LOCATE 3,8:PRINT"VEUILLEZ LE RENTRER A NOUVEAU":FOR i=1 TO 2000:NEXT:CLS
680 GOTO 460
690 '------------------------
700 '  *  MODIFICATION *
710 '------------------------
720 CLS:LOCATE 4,10:PRINT"POUR MODIFIER UN ALBUM IL FAUT L'EFFACER ET LE RENTRER A NOUVEAU":FOR i=1 TO 2000:NEXT
730 v=0:CLS:GOSUB 1660:LOCATE 2,5:PRINT "MODIFICATION":LOCATE 4,7:PRINT "ENTREZ LE NOM DE L'ALBUM A MODIFIER: ";:LINE INPUT n$:h=LEN(n$):nn$=UPPER$(LEFT$(n$,h)):IF N$="" THEN 290
740 CLS#1:FOR i=1 TO a:k$(i)=t$(i):NEXT
750 v=1:GOTO 1680
760 v=0:CLS#1:LOCATE 15,21:PRINT"                ":LOCATE 5,20:PRINT"EFFACEZ-VOUS CET ALBUM ?":INPUT N$:N$=LEFT$(UPPER$(N$),1):IF N$="O" THEN 770 ELSE 730
770 FOR i=m TO a:t$(i)=t$(i+1):a$(i)=a$(i+1):p$(i)=p$(i+1):FOR c=1 TO 12:c$(i,c)=c$(i+1,c):t$(a)="":NEXT c:NEXT i:a=a-1
780 CLS:LOCATE #2,74,2:PRINT#2,a:LOCATE 32,12:PRINT"ALBUM  EFFACE":FOR i=1 TO 2000:NEXT i:GOTO 430
790 '-------------------------
800 ' * LECTURE D'UN FICHIER *
810 '-------------------------
820 CLS:LOCATE 2,3:PRINT"CONFIRMEZ-VOUS?":INPUT h$:h$=LEFT$(UPPER$(h$),1):IF h$<>"O" THEN 290
830 ERASE T$,C$,A$,p$:DIM A$(100),C$(100,12),t$(100),p$(100)
840 CLS:LOCATE 25,3:PRINT"LECTURE D'UN FICHIER:"
850 LOCATE 28,9:LINE INPUT "NOM DU FICHIER: ",fich$
860 CLS:LOCATE 12,15:PRINT"Preparez le magnetophone et appuyez une touche":CALL &BB04
870 fich$="!"+fich$
880 CLS:LOCATE 2,17:PRINT"VEUILLEZ PATIENTER..."
890 LOCATE 2,17:OPENIN fich$
900 INPUT #9,a,fich$
910 FOR g=1 TO a
920 INPUT #9,t$(g),a$(g),p$(g)
930  FOR c=1 TO 12:INPUT #9,c$(g,c):NEXT c:NEXT g
940 CLS:LOCATE 2,17:PRINT"VEUILLEZ PATIENTER..."
950 CLOSEIN
960 CLS:LOCATE 12,15:PRINT"IL Y A ";a;" ALBUMS."
970 FOR i=1 TO 2500:NEXT:GOTO 290
980 GOTO 290
990 '-----------------------------
1000 '  * SAUVEGARDE D'UN FICHIER *
1010 '-----------------------------
1020 CLS:LOCATE 2,3:PRINT"CONFIRMEZ-VOUS?":INPUT h$:h$=LEFT$(UPPER$(h$),1):IF h$<>"O" THEN 290
1030 CLS:LOCATE 25,5:PRINT"ENREGISTREMENT SUR CASSETTE:"
1040 LOCATE 1,7:PRINT CHR$(18):LOCATE 22,9:PRINT "Preparez une Cassette vierge,avec"
1050 LOCATE 24,11:PRINT"amorce avance."
1060 LOCATE 27,15:INPUT "NOM DU FICHIER: ",FICH$
1070 fich$="!"+fich$
1080 CLS:LOCATE 5,12:PRINT"VEUILLEZ PATIENTER..."
1090 POKE &B8D1,0:POKE &B8D2,29:LOCATE 2,18:OPENOUT fich$
1100 WRITE #9,a,fich$
1110 FOR g=1 TO a
1120 WRITE #9,t$(g),a$(g),p$(g)
1130 FOR c=1 TO 12:WRITE #9,c$(g,c):NEXT c:NEXT g
1140 CLS:LOCATE 5,12:PRINT"VEUILLEZ PATIENTER..."
1150 CLOSEOUT
1160 GOTO 290
1170 '------------------------
1180 ' *      RECHERCHE     *
1190 '------------------------
1200 n=0
1210 GOSUB 1660
1220 CLS:LOCATE 30,3:PRINT"RECHERCHE":LOCATE 29,4:PRINT"-----------"
1230 LOCATE 28,7:PRINT"1/ PAR INTERPRETE":LOCATE 28,9:PRINT"2/ PAR ALBUM":LOCATE 28,11:PRINT"3/ PAR MORCEAU"
1240 LOCATE 30,14:PRINT"A VOTRE CHOIX ?"
1250 k$=INKEY$:IF INKEY(18)=0 THEN 290 ELSE IF k$<"1" OR k$>"3" THEN 1250 
1260 SOUND 1,235
1270 CLS#1
1280 ON VAL(k$) GOTO 1290,1360,1460 
1290 '========================
1300 'Recherche par interprete
1310 '========================
1320 CLS:LOCATE 8,2:PRINT"Recherche par interprete"
1330 LOCATE 2,4:LINE INPUT"ENTREZ LES PREMIERES LETTRES DE SON NOM:";n$:h=LEN(n$):nn$=UPPER$(LEFT$(n$,h))
1340 FOR i=1 TO a:k$(i)=a$(i):NEXT i
1350 GOTO 1680
1360 '====================
1370 ' Recherche par album 
1380 '=====================
1390 CLS:LOCATE 8,2:PRINT"Recherche par album"
1400 LOCATE 2,4:LINE INPUT"ENTREZ LES PREMIERES LETTRES DE CET ALBUM: ";n$:h=LEN(n$):nn$=UPPER$(LEFT$(n$,h))
1410 FOR i=1 TO a:k$(i)=t$(i):NEXT i
1420 GOTO 1680
1430 '=======================
1440 ' Recherche par morceau
1450 '=======================
1460 CLS:LOCATE 8,2:PRINT"Recherche par morceau"
1470 LOCATE 2,4:LINE INPUT"ENTREZ LES PREMIERES LETTRES DE CE MORCEAU: ";n$:h=LEN(n$):nn$=UPPER$(LEFT$(n$,h))
1480 FOR m=1 TO a:FOR c=1 TO 12
1490 k$=LEFT$(c$(m,c),h)
1500 IF k$=nn$ THEN GOSUB 1570
1510 IF l=0 THEN NEXT c ELSE 1520
1520 l=0:NEXT m
1530 IF n=0 THEN 1540 ELSE GOTO 1180
1540 CLS:LOCATE 3,3:PRINT"* '";n$;"' n'appartient pas a":LOCATE 5,8:PRINT"mon fichier":FOR i=1 TO 2000:NEXT i:GOTO 1180
1550 '---------------------------
1560 ' * AFFICHAGE D'UNE FICHE *
1570 '---------------------------
1580 CLS:n=1:l=1:LOCATE 66,1:PRINT"ALBUM N[";m
1590 LOCATE 2,3:PRINT"TITRE DE L'ALBUM:";T$(M)
1600 LOCATE 2,5:PRINT"INTERPRETE:";p$(m);" ";A$(M):LOCATE 2,7:PRINT"MORCEAUX:"
1610 LOCATE 6,9:PRINT"Face A":LOCATE 50,9:PRINT"Face B"
1620 FOR u=1 TO 6:LOCATE 4,U+10:PRINT c$(m,u):NEXT
1630 FOR u=7 TO 12:LOCATE 44,U+4:PRINT c$(m,u):NEXT u:LOCATE 15,21:PRINT"TAPEZ UNE TOUCHE"
1640 CALL &BB06:n=1
1650 '---------------------------
1660 PAPER #1,0:PEN#1,1:LOCATE#1,46,2:PRINT#1,"POUR REVENIR AU MENU --->'ENTER'":RETURN
1670 '---------------------------
1680 n=0:FOR m=1 TO a
1690 k$=LEFT$(k$(m),h)
1700 IF k$=nn$ THEN GOSUB 1580
1710 IF v=1 AND n=1 THEN 760:IF v=0 AND n=1 THEN 1730
1720 NEXT m
1730 IF v=0 AND n=1 THEN 1190 ELSE IF v=1 AND n=1 THEN 760
1740 CLS:LOCATE 3,3:PRINT"* '";n$;"' n'appartient pas a":LOCATE 5,8:PRINT"mon fichier":FOR i=1 TO 2000:NEXT i:IF v=1 THEN 730 ELSE 1190
1750 '-------------------------
1760 '       F  I  N
1770 '-------------------------
1780 CLS:LOCATE 28,12:PRINT"O N   F E R M E !":FOR i=1 TO 1500:NEXT:PAPER 0:CLS
1790 CLS#1:CLS#3:CLS#4:GOSUB 1800:CLS#2:GOSUB 1800:GOTO 1810
1800 FOR i=1 TO 2000:NEXT:RETURN
1810 MODE 1:INK 0,24:PEN 3:END
1820 CLS:LOCATE 13,8:PRINT"FICHIER PLEIN...":FOR i=1 TO 2500:NEXT:GOTO 290