99    REM    Amstrad Simon              1/8/84       David & Brian Lewis
100 GOSUB 700
110 GOSUB 500
199    REM    Input guesses & process them
200 PEN 6:CLS:LOCATE 2,2:PRINT "ENTER ":PRINT " YOUR ":PRINT " GUESS"
210 GOSUB 1200:GOSUB 1100
220 FOR n=1 TO length
230  IF (INKEY(up)=off AND INKEY(down)=off AND INKEY(left)=off AND INKEY(right)=off) THEN 230
240 IF INKEY(up)=press THEN answer=1
250 IF INKEY(down)=press THEN answer=4
260 IF INKEY(left)=press THEN answer=2
270 IF INKEY(right)=press THEN answer=3
280 INK answer,colour(answer):SOUND 1,note(answer),999,7
290 IF (INKEY(up)=press OR INKEY(down)=press OR INKEY(left)=press OR INKEY(right)=press) THEN 290
300 INK answer,9:SOUND 129,0
310 IF answer<>box(n) THEN 400
320 NEXT n
330 IF length<20 THEN 110
339    REM    Won game !!
340 PEN 8:CLS:LOCATE 1,3:PRINT "PERFECT":PRINT:PRINT "ANSWER"
350 FOR l=1 TO 5:FOR m=0 TO 26
360 FOR n=1 TO 5:INK n,m+n::NEXT n:SOUND 1,m*9.8:SOUND 2,255-m*9.8
370 NEXT m,l
380 FOR n=1 TO 4:INK n,9:NEXT n
390 INK 5,0:GOSUB 1200:GOSUB 890:GOTO 110
399    REM    Wrong answer & correct sequence
400 PEN 7:CLS:LOCATE 2,2:PRINT "WRONG":RESTORE 1410
410 IF length=1 THEN praise$=" SILLY":GOTO 450
420 FOR n=0 TO length/3-1
430 READ praise$
440 NEXT n
450 PEN 6:LOCATE 1,5:PRINT praise$:LOCATE 2,6:PRINT "SCORE":GOSUB 1200
460 PEN 6:CLS:LOCATE 1,3:PRINT "CORRECT":PRINT "PATTERN"
470 GOSUB 530:GOSUB 1200:GOSUB 890:GOTO 110
499    REM    Play sequence
500 PEN 6:CLS:LOCATE 1,2:PRINT "FOLLOW ":PRINT " THIS  ":PRINT "PATTERN"
510 length=length+1:box(length)=RND(1)*3+1
520 GOSUB 1200:GOSUB 1100
530 FOR n=1 TO length
540 number=box(n)
550 SOUND 1,note(number),999,7:INK number,colour(number)
560 FOR pause=1 TO level*100:NEXT pause
570 SOUND 129,0:INK number,9
580 FOR pause=1 TO level*10:NEXT pause
590 NEXT n
600 RETURN
699    REM    Initialisation & key definitions
700 DEFINT a-z
710 DIM box(20),note(4),colour(4)
720 FOR n=1 TO 4
730 READ colour(n),note(n)
740 NEXT n
750 MODE 0
760 BORDER 0:INK 0,0:CLS
770 WINDOW #1,7,13,1,8
780 WINDOW #2,1,6,9,17
790 WINDOW #3,14,20,9,17
800 WINDOW #4,7,13,18,25
810 WINDOW #5,7,13,9,17
820 FOR n=1 TO 5
830 INK n,9:PAPER #n,n:CLS #n
840 NEXT
850 INK 5,0:INK 6,4:INK 7,8:INK 8,26
860 WINDOW SWAP 5
870 PLOT 0,127,8:DRAW 639,127:DRAW 639,272:DRAW 0,272:DRAW 0,127
880 PLOT 190,399:DRAW 416,399:DRAW 416,0:DRAW 190,0:DRAW 190,399
890 PEN 6:CLS:GOSUB 1300:LOCATE 2,2:PRINT "PRESS":LOCATE 3,6:PRINT "OR"
900 PEN 7:LOCATE 2,4:PRINT "COPY":LOCATE 2,8:PRINT "FIRE"
910 RANDOMIZE TIME:length=0:fire=76:copy=9:off=-1:press=0
920 IF (INKEY(fire)=off AND INKEY(copy)=off) THEN 920
930 IF INKEY(fire)=press THEN ok$="FIRE":ok=fire:up=72:down=73:left=74:right=75 ELSE ok$="COPY":ok=copy:up=0:down=2:left=8:right=1
940 PEN 6:CLS:LOCATE 2,4:PRINT "LEVEL":level=10
950 PEN 7:GOSUB 1300:LOCATE 2,8:PRINT ok$:PRINT "UP,DOWN"
960 WHILE INKEY(ok)=off
970 IF INKEY(up)=press THEN level=level+1:IF level>99 THEN level=99
980 IF INKEY(down)=press THEN level=level-1:IF level<1 THEN level=1
990 PEN 7:LOCATE 2,5:PRINT level
1000 WEND
1010 RETURN
1099    REM    Title screen
1100 CLS:PEN 7
1110 LOCATE 1,4:PRINT "AMSTRAD"
1120 LOCATE 2,6:PRINT "SIMON"
1130 RETURN
1199    REM    Proceed routine & score
1200 GOSUB 1300
1210 PEN 7:LOCATE 2,8:PRINT ok$
1220 PEN 9:LOCATE 2,9:PRINT length;
1230 IF INKEY(ok)=off THEN 1230
1240 RETURN
1299    REM    Fingers off !
1300 IF INKEY(ok)=press THEN 1300
1310 RETURN
1399    REM    Colours, sounds & ratings
1400 DATA 24,100,6,300,2,500,19,700
1410 DATA " POOR"," SO-SO","AVERAGE"," GOOD","V. GOOD"," SUBERB","  ACE"