1  REM  ****  HP BASIC PROGRAM LIBRARY  ********************************
2  REM
3  REM        KEYSIG:  GIVES MAJOR SCALES
4  REM
5  REM        36258  REV A  -- 2/73
6  REM
7  REM  ****  CONTRIBUTED PROGRAM  **************************************
8  REM
10  REM  *** AARDWOLF & COMPANY WRITING TEAM ***  DAVID WHITNEY
20  REM  *** KEYSIG *** 0700 WORDS *** VERSION 1 ***
30  DIM A[13,71],B$[72],C$[72],D$[72]
40  C$="CNGNDNANENBNFSCSFNBFEFAFDFGFCF -0#6!!"
50  I=Z=1
60  I2=I+I
70  I3=I2+I
80  INPUT B$
90  PRINT '10'10'10'10'10'10'10'10'10
100  IF B$#"ALL" THEN 120
110  B$=C$[I,30]
120  P=O=I-I
130  D$="         "
140  MAT A=ZER
150  IF Z>LEN(B$) THEN 580
160  RESTORE 
170  FOR S=I TO 15
180  IF B$[Z,Z+I]=C$[S*I2-I,S*I2] THEN 220
190  NEXT S
200  PRINT "PLEASE RESTATE"
210  GOTO 50
220  D$[LEN(D$)+I]=B$[Z,Z+I]
230  IF P=54 THEN 250
240  D$[LEN(D$)+I]="                "
250  IF S>I2^I3 THEN 420
260  E=F=I2
270  FOR D=I TO S
280  IF D=I THEN 320
290  A[E,F+P]=I3+I
300  E=E+(E>O AND E<I3+I2)*7-I3-I
310  F=F+I
320  NEXT D
330  RESTORE 660
340  FOR R=I TO S
350  READ J
360  NEXT R
370  FOR Q=O TO I3*I2
380  A[J-Q,10+Q+P]=I3
390  A[J-Q,I3*I3+Q+P]=A[J-Q,11+Q+P]=I2*(J-Q=12)
400  NEXT Q
410  GOTO 570
420  H=I3*I2
430  R=I2
440  FOR G=I3*I3 TO S
450  A[H,R+P]=I3+I2
460  H=H+(H>I3+I2 AND H<I3*I3)*-7+I3+I
470  R=R+I
480  NEXT G
490  RESTORE 670
500  FOR K=I3*I3 TO S
510  READ L
520  NEXT K
530  FOR V=O TO I3*I2
540  A[L-V,10+V+P]=I3
550  A[L-V,I3*I3+V+P]=A[L-V,11+V+P]=I2*(L-V=12)
560  NEXT V
570  IF P#54 THEN 730
580  FOR X=I TO 13
590  FOR Y=I TO 71
600  A=(31+(Y/18=INT(Y/18))*(X<12)*5+(X/I2=INT(X/I2))*(X#12))*(A[X,Y]<I)+(A[X,Y]+30)*(A[X,Y]>O)
610  PRINT C$[A,A];
620  NEXT Y
630  PRINT 
640  NEXT X
650  PRINT D$
660  DATA 12,8,11,7,10,13,9,12
670  DATA 9,13,10,7,11,8,12
680  PRINT '13'10'10'10
690  Z=Z+I2
700  IF Z <= LEN(B$) THEN 120
710  PRINT '13'10'10'10
720  STOP 
730  P=P+18
740  Z=Z+I2
750  GOTO 150
760  END 
