390 IF RIGHT$(STR$(X),1)="9" AND RIGHT$(STR$(Y),1)="8" AND RIGHT$(STR$(Z),1)="7" THEN AN=1:RETURN ELSE RETURN
410 GOSUB 20:R=N:GOSUB 20:S=N:T=R*S:RETURN
415 R=FNR(10):S=FNR(10):T=R*S:RETURN
420 IF X=0 OR Y=0 THEN AN=2:RETURN ELSE IF (Z/Y=INT(Z/Y) AND Z/X=INT(Z/X)) THEN AN=1:RETURN ELSE RETURN
440 GOSUB 20:R=N:S=2*R:T=3*R:RETURN
445 R=FNR(90):S=FNR(10)+R:T=S+FNR(10):RETURN
450 IF Z>Y AND Y>X THEN AN=1:RETURN ELSE RETURN
470 R=FNR(30)*3:S=R+3:T=S+3:RETURN
475 N=FNR(100):R=N:S=FNR(10)+R:T=S+ABS(R-S):I=FNR(2):IF I=1 THEN RETURN
476 R=T:T=N:RETURN
480 DF=X-Y:IF Y+-(DF)=Z THEN AN=1:RETURN ELSE RETURN
500 R=FNR(10):S=FNR(10):T=R*R+S*S:RETURN
505 GOTO 500
510 IF (X*X+Y*Y)=Z THEN AN=1:RETURN ELSE RETURN
530 GOSUB 20:R=N:GOSUB 20:S=N:GOSUB 20:T=N:RETURN
535 GOSUB 20:R=N:S=FNR(R):T=R-S:RETURN
540 IF (X+Y+Z)/2=INT((X+Y+Z)/2) THEN AN=1:RETURN ELSE RETURN
560 R=FNR(30):S=R*2:T=S*2:RETURN
565 R=FNR(80):S=R+FNR(10):T=S+FNR(10):RETURN
570 IF Z>Y AND Y>X THEN AN=1:RETURN ELSE RETURN
4000 LINE (24,64)-(305,168),0,BF:LOCATE 10,10:PRINT"THE RECAP PAD IS FULL.":LOCATE 13,5:PRINT"Any entry made after this will":LOCATE 15,5:PRINT"start a new pad. If you need the":LOCATE 17,5:PRINT"notes for later, recap one more":LOCATE 19,5
4010 PRINT"time and take notes.":GOSUB 10000:RETURN
8010 B=IC-5:FOR I=1 TO 5:LOCATE 9+I+I,3:PRINT TAB(4+NOT(Z1(B+I)<0))Z1(B+I)TAB(14+NOT(Z2(B+I)<0))Z2(B+I)TAB(24+NOT(Z3(B+I)<0))Z3(B+I)TAB(34);:IF Z4(B+I)=1 THEN PRINT"Yes"; ELSE PRINT "No ";
8020 NEXT I:LOCATE 21,4:PRINT STRING$(34,32);:RETURN
10000 LOCATE 25,3:PRINT EL$;
10010 LOCATE 25,9:PRINT"Press ENTER to continue.";
15010 LOCATE 3,18:PRINT"Halt! I guard the door":LOCATE 4,18:PRINT"to the Royal Suite. To":LOCATE 5,18:PRINT"pass through you must":LOCATE 6,18:PRINT"solve three number":LOCATE 7,18:PRINT"riddles...":LOCATE 9,18
15015 PRINT"In each riddle, I will":LOCATE 10,18:PRINT"give you three numbers":LOCATE 11,18:PRINT"that follow a rule.":LOCATE 13,18:PRINT"Test the rule with":LOCATE 14,18:PRINT"your own sets of":LOCATE 15,18:PRINT"numbers -- as many":LOCATE 16,18
15016 DEF SEG=PL%:LIM%=PEEK(0):POKE 0,LIM%:DEF SEG
15020 PRINT"as you like.";:GOSUB 5010:GOSUB 13500:GOSUB 10150:LOCATE 3,18:PRINT"You will be told":LOCATE 4,18:PRINT"whether or not each":LOCATE 5,18:PRINT"set fits the rule.":LOCATE 7,18
15030 PRINT"You can get a recap":LOCATE 8,18:PRINT"of your guesses by":LOCATE 9,18:PRINT"pressing R.":LOCATE 11,18:PRINT"When you are ready":LOCATE 12,18:PRINT"for the quiz, press":LOCATE 13,18:PRINT"the Q key."
15031 IF ENOUGHMEMORY THEN GET (15,4)-(117,198),GUARD
15264 Z1(IC)=X:Z2(IC)=Y:Z3(IC)=Z:Z4(IC)=RW:PO=PO+2:R$="":IF WH=HN THEN GOSUB 29000
15270 IF IC=90 THEN EM=1:GOSUB 4000:GOTO 15075
15290 ZZ=FRE(H$):GOTO 15080
16000 EFL=1:CLS:PRINT CHR$(7):LOCATE 10,4:PRINT"Please make sure that the diskette":PRINT:PRINT" is inserted properly and that disk":PRINT:PRINT" drive door is closed.":GOSUB 10000:RESUME 29400
19000 IF IC=0 THEN LOCATE 25,3:PRINT EL$;:LOCATE 25,11:PRINT"You have no entry!";:GOSUB 10205:GOSUB 10120:RETURN
19005 IF SA=1 THEN SA=0:GOTO 19020
19010 IF IC<6 THEN LOCATE 25,3:PRINT EL$;:LOCATE 25,8:PRINT"All entries are displayed.";:GOSUB 10205:GOSUB 10120:RETURN
19020 GOSUB 10160:PO=11
19030 LOCATE 25,3:PRINT EL$;:FOR I=1 TO IC:LOCATE PO,3:PRINT TAB(4+NOT(Z1(I)<0))Z1(I)TAB(14+NOT(Z2(I)<0))Z2(I)TAB(24+NOT(Z3(I)<0))Z3(I)TAB(34);:IF Z4(I)=1 THEN PRINT"Yes"; ELSE PRINT"No ";
19040 LC=LC+1:IF LC=6 THEN IF I<IC THEN GOSUB 10010:GOSUB 10160:LC=0:PO=9
19045 IF LC=6 THEN IF I=IC THEN GOSUB 10010:GOSUB 10160:KZ=1:LC=0:XPO=4:PO=11:RETURN
19050 PO=PO+2:NEXT I:GOSUB 10010:IF PO>21 THEN GOSUB 10160
19060 KZ=1:RETURN
20000 IF ENOUGHMEMORY THEN GOSUB 5000:PUT (15,4),GUARD ELSE GOSUB 29600
20010 IF KI<>0 THEN GOSUB 5010:GOTO 20031 ELSE LOCATE 3,18:PRINT"I will present you":LOCATE 4,18:PRINT"with three numbers":LOCATE 5,18:PRINT"at a time. You must":LOCATE 6,18
20012 PRINT"say whether or not":LOCATE 7,18:PRINT"each group fits the":LOCATE 8,18:PRINT"rule.":LOCATE 10,18:PRINT"When you answer five":LOCATE 11,18:PRINT"questions correctly":LOCATE 12,18:PRINT"you pass the quiz":LOCATE 13,18
20013 PRINT"and win a flag."
20015 LOCATE 15,18:PRINT"When you pass three":LOCATE 16,18:PRINT"quizzes, you may":LOCATE 17,18
20016 PRINT"enter the suite."
20030 G2=1:GG=0:GOSUB 5010:GOSUB 13500
20031 G2=1:GG=0:QU$="on":WH=0:IC=0:DN=FNR(5)
20041 R1=R:ON RU GOSUB 55,85,115,145,175,205,235,265,295,305,335,365,385,415,445,475,505,535,565:IF R=R1 THEN 20041
20042 IF DN=RC+1 THEN 20050
20043 IF FNR(4)=2 THEN 20050
20044 GOTO 21000
20050 ON RU GOSUB 20062,110,500,85,200,170,110,50,20064,110,20062,85,410,380,20062,500,470,110,20062
20051 GOTO 21000
20055 GOTO 21000
20060 IF DD=2 THEN RR=S:GOSUB 20100:S=RR:GOTO 21000
20062 I=2:GOSUB 296:RETURN
20064 R=FNR(100):S=R+10:T=R-1:RETURN
20065 R=FNR(40):S=R+FNR(10):T=S+FNR(10):RETURN
20070 RR=T:GOSUB 20100:T=RR
20090 GOTO 21000
20100 K=FNR(2):ON K GOSUB 20220,20230
20110 RETURN
20200 RR=RR*FNR(3):RETURN
20210 RR=INT(RR/FNR(3)):IF RR<0 THEN 20210 ELSE RETURN
21020 GG=2:LOCATE 9,20:PRINT"Do these numbers fit":LOCATE 10,20:PRINT"the rule? ";:GOSUB 14000
21050 IF AN=1 AND AN$="Y" THEN 21300
21060 IF AN=2 AND AN$="N" THEN 21300
21100 LOCATE 13,20:PLAY NO$:PRINT"Wrong. You will have":LOCATE 14,20:PRINT"to try again.":IF L%<4 THEN KI=0
21105 GOSUB 13500:RC=0:GOTO 27999
21300 PLAY YES$:IF RC<4 THEN LOCATE 13,20:PRINT"Right!":LOCATE 14,20:PRINT"You may continue the":LOCATE 15,20:PRINT"challenge...";:GOSUB 13500:RC=RC+1:GOTO 20041
21310 LOCATE 12,20:PRINT"Right! You have":LOCATE 13,20:PRINT"passed the quiz":LOCATE 14,20
21311 PRINT"and won a flag";:KI=KI+1:PO=15:XPO=26:GOSUB 22000:GOSUB 13500
21320 RC=0:GOSUB 10170:GOSUB 23000
21325 IF KI=3 THEN SR=SR+1:GOTO 21400
21330 LOCATE 3,21:PRINT"The Royal Suite is":LOCATE 4,21:PRINT"still closed. You":LOCATE 5,21:PRINT"will need to solve":LOCATE 6,21:PRINT J$((3-KI)+4);" more riddle";:IF KI=2 THEN PRINT"."; ELSE PRINT"s.";
21340 GOSUB 13500:FL=0:GOTO 15060
21400 LOCATE 3,22:PRINT"CONGRATULATIONS!":LOCATE 5,21:PRINT"You may now pass ":LOCATE 6,21:PRINT"through the Royal":LOCATE 7,21:PRINT"Suite and meet":LOCATE 8,21:PRINT"The King!":L=L+1:RES=SR
21410 PLAY FANFARE$:IF L%>RES THEN DEF SEG=PL%:POKE 0,L%:DEF SEG:GOSUB 13500 ELSE GOSUB 13500
21420 GOSUB 10170:GOTO 29400
22000 PUT (XPO*8+2,PO*8),PRIZE,PSET:RETURN
23000 IF KI=1 THEN PO=11:XPO=26:GOSUB 22000:RETURN
23010 IF KI=2 THEN PO=14:XPO=21:GOSUB 22000:XPO=XPO+10:GOSUB 22000:RETURN
27999 IF GG=3 AND ENOUGHMEMORY THEN GOSUB 5000:PUT (15,4),GUARD:GOSUB 5010 ELSE IF GG=3 THEN GOSUB 29600:GOSUB 5010 ELSE GOSUB 10170
28000 LOCATE 4,18:PRINT"Would you like:":LOCATE 6,18:PRINT"1. Same level,":LOCATE 7,21:PRINT"same rule":LOCATE 9,18:PRINT"2. Same level,":LOCATE 10,21:PRINT"different rule, or":LOCATE 12,18:PRINT"3. Return to the menu":G2=0
29536 DEF SEG=0:PL%=INT((((PEEK(&H510)+256*PEEK(&H511))*16+VARPTR(#2))/16)+1):DEF SEG
29537 DEF SEG=&H40:MOFF%=PEEK(4)+256*PEEK(5):MSEG%=PEEK(6)+256*PEEK(7):DEF SEG
29540 DEF FNR(N)=1+INT(RND*N)
29545 EL$=STRING$(37,32)
29550 J$(1)="Just between you and me...":J$(2)="I shouldn't tell you this, but":J$(3)="Psst...Don't tell anyone, but":J$(4)="Shhh...Our secret...":J$(5)="one":J$(6)="two":GOTO 15000
30000 CLS:LOCATE 6,2,0:PRINT"Unauthorized copying of this diskette":PRINT:PRINT" is unlawful.":PRINT:PRINT" Violators will be prosecuted to the":PRINT:PRINT" full extent of the law."