Back to Main page.
Back to Main tapes page.
5  REM WRITTEN BY TIMOTHY D. CORRIE JR. 197?
10 DIM T[24,12],M[24,30],N[5],D[4],B[24,12],L[24,30] 
20 MAT M=ZER
30 MAT T=CON
40 MAT N=CON
50 MAT D=CON
60 MAT L=ZER
70 MAT T=(32)*T
80 MAT B=CON
90 MAT B=(32)*B
100 DIM A$[255],B$[255]
110 N=0
120 DATA 16,6,13,7,17,8,14,9,18,10,15,11,19,12
130 DATA 12,6,15,7,11,8,14,9,10,10,13,11,9,12
140 DATA 1,"d="'8'8"x-",2,"d="'8'8"x ",3,"d="'8'8"x.",4,"d"'8"x-",6,"d."'8'8"x-",8,"d"'8"x ",12,"d"'8"x.",16,"d ",24,"d.",32,"o ",4
150 DATA "Bb","Db","Ab","Eb","Bb","F","C","G","D","A","E","B"
160 FOR X=1 TO 12
170 T[8,X]=T[10,X]=T[12,X]=T[14,X]=T[16,X]=B[8,X]=B[10,X]=B[12,X]=B[14,X]=B[16,X]=45
180 NEXT X
190 T[10,1]=T[9,1]=T[10,2]=T[10,3]=T[10,5]=T[9,3]=T[9,5]=T[8,3]=124
200 B[14,5]=B[13,5]=B[12,2]=B[12,1]=B[11,1]=124
210 T[11,3]=45
220 T[7,2]=95
230 T[7,3]=41
240 T[12,3]=T[14,3]=T[15,3]=T[15,4]=T[16,3]=T[16,4]=124
250 T[8,4]=T[11,1]=T[11,2]=T[12,2]=T[13,3]=T[14,4]=T[17,3]=47
260 B[15,2]=B[14,1]=B[13,2]=B[12,5]=B[11,4]=B[8,5]=47
270 T[8,2]=T[9,2]=T[11,5]=T[17,4]=B[8,3]=B[9,2]=B[10,1]=B[11,2]=B[15,5]=92
280 T[7,1]=B[14,3]=111
290 P=0
300 PRINT "Key";
310 LINPUT a$
320 Q1=NUM(A$)-62
330 A$[LEN(A$)+1]=" "
340 M=(POS(A$,"MINOR")>0)
350 A$=A$[1,POS(A$," ")-1]
360 RESTORE 150
370 READ B$
380 P=P+1
390 IF B$#A$ THEN 370
400 P=P+M*3
410 N=P-(P>12)*12-7
420 IF NOT N THEN 540
430 IF N < 0 THEN 460
440 RESTORE 120
450 GOTO 470
460 RESTORE 130
470 FOR X=1 TO ABS(N)
480 READ Z,Q
490 IF N<0 THEN 520
500 T[Z,Q]=B[Z-2,Q]=NUM("#")
510 GOTO 530
520 T[Z,Q]=B[Z-2,Q]=98
530 NEXT X
540 PRINT "COMPOSE OR SCALE "
550 LINPUT A$
560 IF A$="COMPOSE" THEN 1120
570 FOR X=1 TO 8
580 M[Q1+X,X]=M[Q1+X,17-X]=8
590 NEXT X
600 FOR X=24 TO 1 STEP -1
610 X1=1
620 FOR Z=1 TO 12
630 X1=X1 AND (T[X,Z]=32)
640 NEXT Z
650 IF X1 THEN 1090
660 FOR Z=1 TO 12
670 A$=CHR$(T[X,Z])
680 PRINT USING "#,A";A$
690 NEXT Z
700 FOR Z=1 TO 30
710 F$=CHR$(45-(INT(X/2)#X/2)*13)
720 IF NOT M[X,Z] THEN 930
730 RESTORE 140
740 IF TYP(0)=1 THEN 770
750 PRINT Q,M[X,Z]
760 GOTO 1100
770 READ Q,B$
780 IF INT(Q)#INT(M[X,Z]) THEN 740
790 Z9=(M-INT(M))*10
800 C$=CHR$((Z9=1)*98+(Z9=2)*35+(Z9=3)*37+(Z9=0)*NUM(F$))
810 PRINT USING "#,A";C$
820 Z9=(Q<0)
830 FOR Q=1 TO LEN(B$)
840 IF NOT (Z9 AND ((NUM(B$[Q])=100) OR (NUM(B$[Q])=120))) THEN 870
850 PRINT " ";
860 GOTO 880
870 PRINT USING "#,A";B$[Q,Q]
880 NEXT Q
890 PRINT USING "#,A";F$
900 GOTO 1080
910 PRINT USING "#,A";F$
920 GOTO 830
930 IF X < 8 THEN 990
940 IF X > 16 THEN 1040
950 FOR Q=1 TO 4
960 PRINT USING "#,A";F$
970 NEXT Q
980 GOTO 1080
990 FOR Q=1 TO 7
1000 IF M[Q,Z] AND Q Z THEN 950
1060 NEXT Q
1070 GOTO 1020
1080 NEXT Z
1090 PRINT
1100 NEXT X
1110 RETURN
1120 DATA 0,1,2,2,1,2,2,2,1,2,2,1,2,2,2,1,2,2,1,2,2,2,1,2,2,1
1130 DATA "047<@CHLO","059CGJOS","257;>ACJMOS","047:ACFHLOR"
1140 C=1
1150 F=Q1+8
1160 X7=Q=1
1170 Z=INT(RND(INT(TIM(4)/5)*-(X7=1))*6-.01)
1180 J=INT(LOG(RND(0)*9+1)*4/LOG(10))
1190 N[X7]=2^J*(Z>2)+(Z+1)*J*(Z<3)
1200 N[X7+1]=(Z=0)*J+(Z<2)*J+2^(J+(Z=3))*(Z>2)
1210 N[X7+2]=(Z<3)*J+2^(J+(Z=3))*(Z>2)
1220 N[X7+3]=2^J
1230 P=X7+4-(Z<3)-(Z=2)
1240 RESTORE 1130
1250 C=0
1260 IF TYP(0)=2 THEN 1300
1270 F=INT(F+RND(0)*11-5)
1280 F=INT(F)
1290 GOTO 1240
1300 READ A$
1310 C=C+1
1320 F=ABS(F)
1330 Z$=CHR$(F+48)
1340 IF NOT POS(A$,Z$) THEN 1260
1350 IF POS(A$,"059") AND C=3 THEN 1260
1360 IF NOT POS(A$,"JOS") AND C=4 THEN 1260
1370 N[X7]=INT(N[X7]/2)*2
1380 IF F<3 THEN 1270
1390 M[F,Q]=N[X7]
1400 D[1]=F
1410 J=M=1
1420 X9=Z=0
1430 RESTORE 1120
1440 READ Y
1450 Z=Z+1
1460 X9=X9+Y
1470 IF X9LEN(A$))])-48+Q1
1500 M=1
1510 IF J-4 THEN 1550
1520 GOTO 1430
1530 M=M+1
1540 GOTO 1430
1550 REM
1560 M[D[2],Q]=N[X7]
1570 L[D[3]-2,Q]=N[X7]
1580 L[D[4]-10,Q]=N[X7]
1590 Q=Q+1
1600 F=INT(F+RND(0)*11-5)
1610 REM
1620 IF Q>30 THEN 1670
1630 X7=X7+1
1640 IF X7 <= P THEN 1240
1650 X7=1+INT(RND(0)*10)/20
1660 GOTO 1170
1670 GOSUB 600
1680 MAT T=B
1690 MAT M=L
1700 GOSUB 600
1710 Q=0
1720 PRINT LIN(4)
1730 GOTO 1630
1740 END