1  REM  ****  HP BASIC PROGRAM LIBRARY  *********************************
2  REM
3  REM        MUSIC5:  FINDS DOMINANT SEVENTHS
4  REM
5  REM        36259  REV A -- 2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  **************************************
8  REM
10  REM  *** AARDWOLF & COMPANY WRITING TEAM ***  JOHN C. RIDGES
20  REM  *** MUSIC5 *** 0874 WORDS *** VERSION 1 ***
30  DIM A$[45],B$[72],C$[72],D$[72],E$[72],G$[72],H$[72]
40  PRINT "FINDS DOMINATE SEVENTHS."'13'10"'X'=DOUBLE SHARP, 'S'=SHARP, 'N'=NATURAL,"
50  PRINT "'F'=FLAT, AND 'D'=DOUBLE FLAT."'13'10'10"'M'=MAJOR, 'A'=AEOLIAN ";
60  PRINT "MINOR, AND 'H'=HARMONIC MINOR."'13'10'10"INPUT KEY";
70  I7=7
80  I1=I7/I7
90  I2=I1+I1
100  I3=I2+I1
110  I4=I3+I1
120  I5=I4+I1
130  G$="ABCDEFG"
140  B$="CNGNDNANENBNFSCSFNBFEFAFDFGFCF"
150  C$="ANENBNFSCSGSDSASDNGNCNFNBFEFAF"
160  E$="DFNSX"
170  INPUT A$
180  IF A$[I1,I3]#"ALL" THEN 270
190  F$=A$[I4,I4]
200  D$=B$
210  IF A$[I4,I4]="M" THEN 230
220  D$=C$
230  FOR A=I1 TO I5*I3
240  A$[A*I3-I2,A*I3-I1]=D$[A*I2-I1,A*I2]
250  A$[A*I3,A*I3]=F$
260  NEXT A
270  FOR B=I1 TO LEN(A$) STEP I3
280  Z$=A$[B+I2,B+I2]
290  D$=B$
300  IF Z$="M" THEN 320
310  D$=C$
320  RESTORE 
330  FOR C1=I3 TO 19 STEP I4*I4
340  MAT A=ZER[I7]
350  FOR C=C1-I2 TO C1+I7*I2 STEP I2
360  IF A$[B,B+I1]=D$[C,C+I1] THEN 420
370  READ D
380  A[ABS(D)]=SGN(D)
390  NEXT C
400  NEXT C1
410  GOTO 720
420  FOR E=I1 TO I7
430  IF A$[B,B]=G$[E,E] THEN 450
440  NEXT E
450  IF Z$#"H" THEN 480
460  A[E-I1+(E=I1)*I7]=A[E-I1+(E=I1)*I7]+I1
470  GOTO 500
480  IF D$=B$ THEN 500
490  IF Z$#"A" THEN 720
500  RESTORE 740
510  PRINT '10A$[B,B+I2]
520  FOR F=I1 TO I7
530  READ H$
540  PRINT "THE V7 OF "H$;TAB(I2*I7)"IS ";
550  G=(E+F-(E+F>I7)*I7)+I2-(E+F-(E+F>I7)*I7+I2>I7)*I7
560  FOR H=I1 TO I7 STEP I2
570  I=G+H-(G+H>I7)*I7
580  IF Z$#"M" THEN 610
590  J=A[I]+I3+(F>I1 AND F<I7 AND F#I4 AND H=I3)+(F=I3 AND H=I5)
600  J=J-((F=I4 OR F=I7) AND H=I7)
610  IF Z$#"A" THEN 640
620  J=A[I]+I3+((F=I1 OR F=I4 OR F=I5 OR F=I7) AND H=I3)+(F=I5 AND H=I5)
630  J=J-((F=I2 OR F=I2*I3) AND H=I7)
640  IF Z$#"H" THEN 680
650  J=A[I]+I3+((F=I4 OR F=I5 OR F=I7) AND H=I3)+(F=I5 AND H=I5)
660  J=J+(F=I3 AND (H=I3 OR H=I5))-(F=I2*I3 AND H=I5)+(F=I3 AND H=I7)
670  J=J-((F=I2 OR F=I4 OR F=I2*I3) AND H=I7)
680  PRINT G$[I,I];E$[J,J]" ";
690  NEXT H
700  PRINT 
710  NEXT F
720  NEXT B
730  DATA 6,3,7,4,1,5,2,1,-2,-5,-1,-4,-7,-3,-6,1
740  DATA "I","II","III","IV","V","VI","VII"
750  END 
