10 REM *************************************************************** 15 REM * NAME MUSIC * 20 REM * VERSION 3.20 * 25 REM * DATE 07/07/87 * 30 REM * MODIFIED BY S.Y. Wu * 35 REM *************************************************************** 40 DEF SEG=&H40 45 IF ( PEEK(&H10) AND &H30 ) <> &H30 THEN GOTO 1700 50 CLS : LOCATE 3,1 55 PRINT CHR$(7);"***** IMPROPER DISPLAY ADAPTOR *****" 60 PRINT : END 1700 DEF SEG 1800 DSAM$="NO" 1900 GOTO 2020 2000 DSAM$="YES" 2010 'music do 2020 DEF SEG : POKE 106,0 2030 KEY OFF :SCREEN 0,1 :COLOR 15,0,0 :WIDTH 40 :CLS 2040 ON ERROR GOTO 2070 2050 PLAY "mf" 2060 GOTO 2080 2070 RESUME 2080 2080 ON ERROR GOTO 0 2090 SCREEN 0,1 :WIDTH 40 :COLOR 15,1,1 :CLS :DEFINT A-Z 2100 COLOR 14 : LOCATE 15,6:PRINT " M M U U SSS III CCC "; 2110 COLOR 10 : LOCATE 16,6:PRINT " MM MM U U S S I C C "; 2120 COLOR 11 : LOCATE 17,6:PRINT " M M M U U S I C "; 2130 COLOR 12 : LOCATE 18,6:PRINT " M M U U SSS I C "; 2140 COLOR 13 : LOCATE 19,6:PRINT " M M U U S I C "; 2150 COLOR 14 : LOCATE 20,6:PRINT " M M U U S S I C C "; 2160 COLOR 15 : LOCATE 21,6:PRINT " M M UUU SSS III CCC "; 2170 COLOR 15,0 2180 FOR L=0 TO 15:FOR M=0 TO 8 2190 LOCATE 5+M,5+L*2:PRINT CHR$(219);CHR$(221); 2200 NEXT M,L 2210 FOR L=0 TO 12:FOR M=0 TO 4 2220 IF L=2 OR L=6 OR L=9 OR L=13 THEN 2250 2230 LOCATE 5+M,8+L*2 2240 PRINT CHR$(32);CHR$(222); 2250 NEXT M,L 2260 FOR L=0 TO 9 2270 LOCATE 4+L,4:COLOR 5,0 2280 PRINT CHR$(221);:LOCATE 4+L,36:COLOR 15,0 2290 PRINT CHR$(221);:COLOR 5,1:PRINT CHR$(221); 2300 NEXT L 2310 COLOR 5,1 2320 LOCATE 4,4 2330 FOR L=0 TO 32 :PRINT CHR$(219); :NEXT L 2340 PRINT CHR$(221); :LOCATE 13,4 2350 FOR L=0 TO 32 :PRINT CHR$(219); :NEXT L 2360 PRINT CHR$(221); :COLOR 0,7 2370 DIM M(88),S(70) 2380 FOR L=7 TO 88 :M(L) = 36.8*(2^(1/12))^(L-6) :NEXT L 2390 FOR L=0 TO 6 :M(L) = 32767 :NEXT L 2400 S(0) = 0 2410 S(39)=5:S(40)=7:S(41)=8:S(42)=9 2420 S(43)=10:S(44)=11:S(45)=13:S(46)=14 2430 S(47)=15:S(48)=16:S(49)=17:S(50)=18 2440 S(51)=19:S(52)=21:S(53)=22:S(54)=23 2450 S(55)=24:S(56)=25:S(57)=27:S(58)=28 2460 S(59)=29:S(60)=30:S(61)=31:S(62)=32 2470 S(63)=33:S(64)=35:S(65)=36:S(66)=37 2480 S(67)=38:S(68)=39:S(69)=40:S(70)=42 2490 GOTO 2640 2500 READ J,K 2510 SELECT$ = INKEY$:IF SELECT$="" THEN 2540 2520 IF SELECT$=CHR$(27) THEN GOTO 2790 2530 POKE 106,0 2540 IF J = -1 THEN RETURN 2550 P = S(J) 2560 IF J> 64 OR J< 39 THEN 2590 2570 IF SCREEN(5,P) <> 32 THEN COLOR 0,7 :LOCATE 11,P :PRINT CHR$(14); :COLOR 15,0:GOTO 2590 2580 COLOR 15,0 :LOCATE 7,P :PRINT CHR$(14); :COLOR 0,7 2590 SOUND M(J),K :IF J= 0 AND K= 1 THEN 2610 2600 SOUND 32767,1 2610 IF J> 64 OR J< 39 THEN 2500 2620 IF SCREEN(5,P)= 32 THEN COLOR 15,0 :LOCATE 7,P :PRINT CHR$(32); :GOTO 2500 2630 COLOR 15,0 :LOCATE 11,P :PRINT CHR$(219); :GOTO 2500 2640 AAA=AAA+1 : SELECT$=CHR$(AAA+64) : FOR BBB=1 TO 1000 : NEXT BBB 2650 IF AAA>8 THEN GOTO 2790 2660 IF SELECT$="F" THEN RESTORE 3260:GOTO 2750 2670 IF SELECT$="B" THEN RESTORE 3350:GOTO 2750 2680 IF SELECT$="C" THEN RESTORE 3040:GOTO 2750 2690 IF SELECT$="D" THEN RESTORE 3460:GOTO 2750 2700 IF SELECT$="E" THEN RESTORE 2880:GOTO 2750 2710 IF SELECT$="A" THEN RESTORE 2800:GOTO 2750 2720 IF SELECT$="G" THEN RESTORE 2960:GOTO 2750 2730 IF SELECT$="H" THEN RESTORE 3160:GOTO 2750 2740 GOTO 2640 2750 READ DT 2760 COLOR 15,4 :COLOR 0,7 2770 GOSUB 2500 2780 GOTO 2640 2790 SCREEN 0,1:IF DSAM$="YES" THEN CHAIN "cafdemo" ELSE COLOR 7,0,0:CLS:width 80:key on:END 2800 DATA -2 2810 DATA 42,1,0,1,42,1,0,1,42,1,0,1,47,1,0,5,51,1,0,3,42,1,0,1,42,1,0,1 2820 DATA 42,1,0,1,47,1,0,5,51,1,0,5,30,1,0,1,30,1,0,1,35,1,0,3,47,1,0,1 2830 DATA 47,1,0,1,46,1,0,1,46,1,0,1,44,1,0,1,44,1,0,1,42,8,0,2,42,1,0,1 2840 DATA 42,1,0,1,42,1,0,1,46,1,0,5,49,1,0,3,42,1,0,1,42,1,0,1,42,1,0,1 2850 DATA 46,1,0,5,49,1,0,5,37,1,0,1,37,1,0,1,30,1,0,3,54,2,56,2,54,2,52,2 2860 DATA 51,2,49,2,47,8 2870 DATA -1,-1 2880 DATA -2 2890 DATA 47,3,0,2,49,1,47,3,0,2,49,1,51,3,0,2,54,1,56,3,0,2,54,1 2900 DATA 59,3,0,2,58,1,61,3,0,2,59,1,58,3,0,2,61,1,59,3,0,2,56,1 2910 DATA 54,3,0,2,54,1,56,3,0,2,54,1,59,3,0,2,56,1,54,3,0,2,51,1 2920 DATA 49,24,47,3,0,2,49,1,47,3,0,2,49,1,51,3,0,2,54,1,56,3,0,2,54,1 2930 DATA 56,3,0,2,58,1,61,3,0,2,59,1,58,3,0,2,61,1,59,3,0,2,56,1 2940 DATA 54,3,0,2,54,1,59,3,0,2,47,1,49,6,54,6,47,18 2950 DATA -1,-1 2960 DATA -2 2970 DATA 47,2,0,2,47,2,49,2,0,2,49,2,51,2,54,2,51,2,47,2,0,2,42,2 2980 DATA 47,2,0,2,47,2,49,2,0,2,49,2,51,6,47,2,0,2,42,2,47,2,0,2,47,2,49,2 2990 DATA 0,2,49,2,51,2,54,2,51,2,47,2,0,4,56,2,0,4,49,2,0,2,52,2,51,6,47,2 3000 DATA 0,4,59,2,0,2,59,2,56,2,0,2,59,2,58,2,61,2,58,2,54,2,0,4,59,2,0,2 3010 DATA 59,2,56,2,0,2,59,2,58,6,54,2,0,2,51,2,52,2,0,2,51,2,52,2,0,2,54,2 3020 DATA 56,2,0,2,58,2,59,2,0,4,56,2,0,4,49,2,0,2,52,2,51,6,47,2 3030 DATA -1,-1 3040 DATA -2 3050 DATA 55,2,54,2,54,4,55,2,54,2,54,4,55,2,54,2,54,4,62,4,0,4 3060 DATA 62,2,61,2,59,4,59,2,57,2,55,4,55,2,54,2 3070 DATA 52,4,52,4,0,4,54,2,52,2,52,4,54,2,52,2,52,4,54,2,52,2 3080 DATA 52,4,61,4,0,4,61,2,59,2,58,4,58,2,55,2,54,4,54,2,52,2 3090 DATA 50,4,50,4,0,4,62,2,61,2,61,4,64,4,58,4,61,4 3100 DATA 59,4,54,4,0,4,62,2,61,2,61,4,64,4,58,4,61,4 3110 DATA 59,4,62,4,61,2,59,2,57,2,55,2,54,4,46,4,47,4,49,4 3120 DATA 50,4,52,2,50,2,49,4,47,4,54,4,0,4,64,8 3130 DATA 65,2,0,6,64,8,65,2,0,6,64,8 3140 DATA 65,4,64,4,65,4,64,4,65,4 3150 DATA -1,-1 3160 DATA -2 3170 DATA 50,3,50,3,52,3,54,3,50,3,54,3,52,3,45,3,50,3,50,3,52,3,54,3,50,6 3180 DATA 49,3,0,3 3190 DATA 50,3,50,3,52,3,54,3,55,3,54,3,52,3,50,3,49,3,45,3,47,3,49,3,50,6 3200 DATA 50,3,0,3 3210 DATA 47,5,49,1,47,3,45,3,47,3,49,3,50,3,0,3,45,5,47,1,45,3,43,3,42,6 3220 DATA 45,3,0,3 3230 DATA 47,5,49,1,47,3,45,3,47,3,49,3,50,3,47,3,45,3,50,3,49,3,52,3,50,6 3240 DATA 50,6 3250 DATA -1,-1 3260 DATA -2 3270 DATA 37,1,0,2,30,1,0,5,42,3,42,3,41,3,39,3,41,3,0,3,42,3,44,3,0,3,37,1,0,2 3280 DATA 30,1,0,5,42,3,42,3,41,3,39,3,41,3,0,3,42,3,44,3,0,3,37,3,42,3,0,3,45,3 3290 DATA 49,6,47,3,45,3,0,3,49,3,52,6,50,3,49,3,0,3,53,3,56,6,54,3,53,3,50,3 3300 DATA 49,3,47,3,45,3,44,3,30,1,0,5,42,3,42,3,41,3,39,3,41,3,0,3,42,3,44,3 3310 DATA 0,3,37,1,0,2,30,1,0,5,42,3,42,3,41,3,39,3,41,3,0,3,42,3,44,3,0,3 3320 DATA 37,3,45,3,0,3,49,3,52,6,50,3,49,3,47,3,45,3,43,3,47,3,50,3,42,3 3330 DATA 41,3,42,3,44,3,0,3,45,1,0,2,44,9,42,1 3340 DATA -1,-1 3350 DATA -2 3360 DATA 54,6,54,6,52,3,51,3,51,6,50,3,51,3,51,16,0,2,50,3 3370 DATA 51,3,51,6,50,3,51,3 3380 DATA 54,6,51,3,54,3,52,12,49,6,0,3,49,3,49,6,48,3,49,3 3390 DATA 49,6,48,3,49,3 3400 DATA 52,16,0,2,51,3,49,3,51,3,54,9,56,9,56,3,49,16,0,2,54,6 3410 DATA 54,6,52,3,51,3,51,6,50,3,51,3,51,16,0,2,50,3,51,3,51,6,50,3 ,51,3 3420 DATA 52,3,51,3,49,5,46,1,49,12,47,6,0,3,47,3,47,6,46,3,47,3,50,6,49,3,47,3 3430 DATA 59,15,0,3,47,3,49,3,51,3,54,1,0,2,47,3,49,3,51,3,54,1,0,2,42,3,44,5 3440 DATA 51,1,49,12,47,1 3450 DATA -1,-1 3460 DATA -2 3470 DATA 52,2,57,2,0,2,52,2,57,2,0,2,52,2,57,6,0,4,52,2,57,2,59,2,57,2,56,4 3480 DATA 57,2,59,2,0,8,52,2,56,2,0,2,52,2,56,2,0,2,52,2,56,6,0,4,52,2 3490 DATA 56,2,57,2,56,2,54,4,56,2,57,2,0,6,64,2,63,2,64,2,61,2,60,2,61,2 3500 DATA 57,2,56,2,57,2,52,2,0,4,49,2,50,2,52,2,54,2,56,2,57,2,59,2,61,2 3510 DATA 62,2,59,2,0,4,62,2,61,2,62,2,59,2,58,2,59,2,56,2,55,2,56,2,52,2 3520 DATA 0,4,64,2,63,2,64,2,66,2,64,2,62,2,61,2,59,2,57,2 3530 DATA -1,-1