Metropoli BBS
VIEWER: music.bas MODE: TEXT (ASCII)
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

[ RETURN TO DIRECTORY ]