360 IF (X/2<>INT(X/2) AND Y/2<>INT(Y/2) AND Z/2<>INT(Z/2)) THEN AN=1:RETURN ELSE RETURN
380 D1=FNR(9)+1
390 R=FNR(20)*D1:S=FNR(22)*D1:T=FNR(24)*D1:RETURN
400 IF (X/D1=INT(X/D1) AND Y/D1=INT(Y/D1) AND Z/D1=INT(Z/D1)) THEN AN=1:RETURN ELSE RETURN
420 N=FNR(26):I=INT((28-N)/2):IF N<10 THEN I=INT((21-N)/2)
421 JN=FNR(I):R=N:S=R+JN:T=S+JN:IF RU=11 THEN RETURN
425 R=T:T=N:RETURN
430 N=FNR(26-JN):R=N:S=R+JN:T=S+JN:IF RU=11 THEN RETURN
435 R=T:T=N:RETURN
440 IF RU=11 AND (X+JN=Y AND Y+JN=Z) THEN AN=1:RETURN
445 IF RU=12 AND (Z+JN=Y AND Y+JN=X) THEN AN=1:RETURN
450 AN=2:RETURN
500 C=FNR(9)
520 N=FNR(5):R=N:S=R*C:T=S*C:IF RU=13 THEN RETURN
525 R=T:T=N:RETURN
540 IF RU=13 AND (Z/C=Y AND Y/C=X) THEN AN=1:RETURN
545 IF RU=14 AND (X/C=Y AND Y/C=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 Game Parlour. 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 chess piece."
20015 LOCATE 15,18:PRINT"When you pass three":LOCATE 16,18:PRINT"quizzes, you may":LOCATE 17,18
20016 PRINT"enter the parlour."
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 20,60,100,140,180,220,260,300,340,390,430,430,520,520: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 140,20,300,20,220,180,300,260,20062,20,20064,20065,20064,20065
20055 GOTO 21000
20060 IF DD=2 THEN RR=S:GOSUB 20100:S=RR:GOTO 21000
20062 R=FNR(30)*2:S=FNR(20)*2:R=R+S:RETURN
20064 T=FNR(40):S=T+FNR(10):R=S+FNR(10):RETURN
20065 R=FNR(40):S=R+FNR(10):T=S+FNR(10):RETURN
20066 C1=C:GOSUB 500:R=T:T=N:C=C1: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 chess";:LOCATE 15,20:PRINT"piece.";: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 Game Parlour 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 Game":LOCATE 7,21:PRINT"Parlour to the":LOCATE 8,21:PRINT"Magician's Study.":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."