22 JN=FNR(I):R=N:S=R+JN:T=S+JN:IF RU=1 THEN RETURN
25 R=T:T=N:RETURN
30 IF X*Y=Z THEN AN=1:RETURN
35 AN=2:RETURN
40 IF RU=1 AND (X+JN=Y AND Y+JN=Z) THEN AN=1:RETURN
50 N=FNR(9):R=N:S=FNR(9):IF S>R THEN R=S:S=N
55 T=R-S:RETURN
60 IF X-Y=Z THEN AN=1:RETURN
70 AN=2:RETURN
80 R=FNR(9):S=FNR(9):T=R*R-1:RETURN
90 IF X*X-1=Z THEN AN=1:RETURN
100 AN=2:RETURN
110 N=FNR(9):R=N:S=FNR(9):IF R>S THEN R=S:S=N
115 T=S-R:RETURN
120 IF Y-X=Z THEN AN=1:RETURN
130 AN=2:RETURN
140 R=FNR(9):S=FNR(9):T=R:RETURN
150 IF X=Z THEN AN=1:RETURN
160 AN=2:RETURN
170 R=FNR(9):S=FNR(9):T=R*R:RETURN
180 IF X*X=Z THEN AN=1:RETURN
190 AN=2:RETURN
200 N=FNR(9):S=FNR(9):R=N:IF S>R THEN R=S:S=N
205 T=(R-S)*(R-S):RETURN
210 IF (X-Y)*(X-Y)=Z THEN AN=1:RETURN
220 AN=2:RETURN
230 R=FNR(9):S=FNR(9):T=INT(ABS(R+(S/2))):RETURN
240 IF INT(ABS(X+(Y/2)))=Z THEN AN=1:RETURN
250 AN=2:RETURN
260 R=FNR(9):S=FNR(9):T=(R+S)*(R+S):RETURN
270 IF (X+Y)*(X+Y)=Z THEN AN=1:RETURN
280 AN=2:RETURN
290 R=FNR(9):S=FNR(9):T=ABS(R*R-S*S):RETURN
300 IF ((ABS(X*X-Y*Y))=Z) THEN AN=1:RETURN
310 AN=2:RETURN
320 R=FNR(9):S=FNR(9):T=-(R+S):RETURN
330 IF Z=-(X+Y) THEN AN=1:RETURN
340 AN=2:RETURN
350 R=FNR(9):S=FNR(9):T=(R+1)*(S+1):RETURN
360 IF (X+1)*(Y+1)=Z THEN AN=1:RETURN
370 AN=2:RETURN
380 R=FNR(9):S=FNR(9):T=R+S+C:RETURN
390 IF X+Y+C=Z THEN AN=1:RETURN
400 AN=2:RETURN
410 R=FNR(9):S=FNR(9):T=R*S-C:IF T<0 THEN 410
411 RETURN
420 IF X*Y-C=Z THEN AN=1:RETURN
430 AN=2:RETURN
440 R=FNR(9):S=FNR(9):T=(R+S)*C:RETURN
450 IF (X+Y)*C=Z THEN AN=1:RETURN
460 AN=2:RETURN
470 R=FNR(9):S=FNR(9):T=R*S+C:RETURN
480 IF X*Y+C=Z THEN AN=1:RETURN
490 AN=2:RETURN
500 R=FNR(9):S=FNR(9):T=100-R-S:RETURN
510 IF 100-X-Y=Z THEN AN=1:RETURN
520 AN=2:RETURN
530 R=FNR(9):S=FNR(9):T=(R+S)*10:RETURN
540 IF (X+Y)*10=Z THEN AN=1:RETURN
550 AN=2: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 Magician's":LOCATE 5,18:PRINT"Study. To pass through":LOCATE 6,18:PRINT"you must solve three":LOCATE 7,18:PRINT"number 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 magic book."
20015 LOCATE 15,18:PRINT"When you pass three":LOCATE 16,18:PRINT"quizzes, you may":LOCATE 17,18
20016 PRINT"enter the study."
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:GOTO 21000
20042 ON RU GOSUB 20,50,80,110,140,170,200,230,260,290,320,350,380,410,440,470,500,530:IF R=R1 THEN 20042
20043 IF FNR(4)=2 THEN 20050
20044 GOTO 21000
20050 DD=FNR(3):IF DD=1 THEN GOSUB 20100:R=RR:GOTO 21000
20060 IF DD=2 THEN RR=S:GOSUB 20100:S=RR:GOTO 21000
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"Enter the third":LOCATE 10,20:PRINT"number above.":GOSUB 12000:Z=VAL(N$):IF Z=T THEN AN=1:GOTO 21300 ELSE AN=2:GOTO 21100
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 magic";:LOCATE 15,20:PRINT"book.";: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,20:PRINT"The Magician's Study":LOCATE 4,20:PRINT"is still closed. You":LOCATE 5,20:PRINT"will need to solve":LOCATE 6,20: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":LOCATE 7,21:PRINT"Magician's Study":LOCATE 8,21:PRINT"to the Royal Suite.":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."