Musical Keys tests your knowledge of key signatures. Each question picks one to seven sharps or flats at random and asks which key has that signature; you type the key, such as F, B FLAT or F SHARP. A right answer flashes and plays a rising and falling sweep, a wrong one a low tone, and either way the program then names the key and lists its sharps or flats in order, with a flat sign drawn as a user-defined graphic.
The opening screen reads “MUSIC QUIZ – created by Peter Ross with the aid of Jerry Alexandros”, followed by “THE ROSS LEARNING SYSTEM – MUSICAL KEYS”. Sound is by BEEP only.
Program Analysis
Program Structure
- Line 1 sets CAPS LOCK (
POKE 23658,8), shows the credit (8000) and defines UDGFas a flat sign. - Lines 200–900 pick the question, look up the answer in the IF chain at 5500–6200 and mark the reply.
- Lines 1000–1600 read the sharps (F#, C#, G#…) or flats from DATA at 2000 and print them.
Potential Issues
- Line 150 shows the score if
INKEY$is the STOP character, but it is checked only once per question, before the INPUT, so it is very hard to reach.
This copy comes from a Larken disk, the TTSUC library disk “Music and Sound”. It was converted for tape (the disk command was removed from the save line) and tested in ZEsarUX.
Source Code
1 POKE 23658,8: RANDOMIZE : GO SUB 8000: LET L=0: LET U=1: FOR K=0 TO 7: READ E: POKE USR "F"+K,E: NEXT K
2 DATA 0,64,64,112,80,96,64,0
5 PAPER 5: INK 2: PRINT FLASH 1;AT 8,6;"THE ROSS LEARNING SYSTEM": FLASH 0: PRINT INK 0;AT 11,11;"MUSICAL KEYS": PAUSE 375
10 PAPER 1: INK 7: BORDER 0: CLS
100 CLS
150 IF INKEY$=CHR$ 226 THEN CLS : PRINT AT 11,6;"YOU HAVE SCORED ";L;" OUT OF ";U;" CORRECTLY.": STOP
200 LET A2=INT (RND*7)+1
300 LET A1=INT (RND*2)+1
400 IF A1=2 THEN LET E$="SHARP(S)": GO TO 550
500 LET E$="FLAT(S)"
550 GO SUB 5500
600 PRINT AT 9,3;"QUESTION #";U;AT 11,3;"WHAT KEY HAS ";A2;" ";E$;" IN IT'S KEY SIGNATURE?"
700 INPUT G$
800 IF G$=C$ THEN CLS : LET L=L+1: PRINT FLASH 1;AT 11,6;" YOU ARE CORRECT": FOR F=-60 TO 60: BEEP .001,-F: BEEP .001,F: NEXT F: PRINT : PAUSE 50: CLS : FLASH 0: GO TO 1000
900 CLS : PRINT AT 8,6;" YOU ARE MISTAKEN": PRINT : BEEP 1,-10: PAUSE 75: CLS
1000 LET U=U+1: PRINT AT 10,3;" THE KEY OF ";C$;" CONTAINS ";A2;" ";E$: PRINT "THEY ARE:"
1005 LET D=1
1100 IF A1=1 THEN LET A2=A2+7: LET D=D+7
1200 LET Y=12
1300 FOR X=D TO A2: LET Y=Y+1
1400 READ A,Z$: IF A<X AND A2>A THEN GO TO 1400
1410 PRINT INVERSE 1;AT Y,16;Z$: INVERSE 0
1500 NEXT X
1600 RESTORE 2000: PRINT AT 20,3;"PRESS ANY KEY TO CONTINUE": PAUSE 0: GO TO 100
2000 DATA 1,"F#",2,"C#",3,"G#",4,"D#",5,"A#",6,"E#",7,"B#",8,"Bf",9,"Ef",10,"Af",11,"Df",12,"Gf",13,"Cf",14,"Ff"
5500 IF A2=1 AND A1=1 THEN LET C$="F": RETURN
5550 IF A2=1 AND A1=2 THEN LET C$="G": RETURN
5600 IF A2=2 AND A1=1 THEN LET C$="B FLAT": RETURN
5650 IF A2=2 AND A1=2 THEN LET C$="D": RETURN
5700 IF A2=3 AND A1=1 THEN LET C$="E FLAT": RETURN
5750 IF A2=3 AND A1=2 THEN LET C$="A": RETURN
5800 IF A2=4 AND A1=1 THEN LET C$="A FLAT": RETURN
5850 IF A2=4 AND A1=2 THEN LET C$="E": RETURN
5900 IF A2=5 AND A1=1 THEN LET C$="D FLAT": RETURN
5950 IF A2=5 AND A1=2 THEN LET C$="B": RETURN
6000 IF A2=6 AND A1=1 THEN LET C$="G FLAT": RETURN
6100 IF A2=6 AND A1=2 THEN LET C$="F SHARP": RETURN
6150 IF A2=7 AND A1=1 THEN LET C$="C FLAT": RETURN
6200 IF A2=7 AND A1=2 THEN LET C$="C SHARP": RETURN
8000 PAPER 5: BORDER 1: INK 0: CLS
8001 PRINT AT 11,11; FLASH 1;"MUSIC QUIZ"; FLASH 0;AT 20,0; INVERSE 1;"CREATED BY PETER ROSS WITH THE AID OF JERRY ALEXANDROS "; INVERSE 0
8002 PAUSE 200: CLS : RETURN
9997 STOP
9998 SAVE "MuQuiz.B1" LINE 1Note: Type-in program listings on this website use ZMAKEBAS notation for graphics characters.


