home *** CD-ROM | disk | FTP | other *** search
/ Piper's Pit BBS/FTP: ibm 0020 - 0029 / ibm0020-0029 / ibm0028.tar / ibm0028 / KINGS.ZIP / PIB1474.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1980-01-01  |  10.3 KB  |  230 lines

  1. 0  '***********************************
  2. 1  '* PIB1474   (KING'S RULE)         *
  3. 2  '* (c) '85 Sunburst Communications *
  4. 3  '* Author: Tom O'Brien             *
  5. 4  '* Programmer: Raoul Watson        *
  6. 5  '***********************************
  7. 6  L%=N%:L$=RIGHT$(STR$(L%),1):F$="ovrlay"+L$:COMMON L%,F$,MSF%,RES
  8. 7  IF L%>1 THEN CHAIN MERGE F$
  9. 19  GOTO 29500
  10. 20  N=FNR(26):I=((28-N)/2)
  11. 21  IF N<10 THEN I=((21-N)/2) ELSE I=((27-N)/2)
  12. 22  JN=FNR(I):R=N:S=R+JN:T=S+JN:IF RU=1 THEN RETURN
  13. 25  R=T:T=N:RETURN
  14. 30  N=FNR(27-JN):R=N:S=R+JN:T=S+JN:IF RU=1 THEN RETURN
  15. 35  R=T:T=N:RETURN
  16. 40  IF RU=1 AND (X+JN=Y AND Y+JN=Z) THEN AN=1:RETURN
  17. 50  IF RU=2 AND (Z+JN=Y AND Y+JN=X) THEN AN=1:RETURN
  18. 60  AN=2:RETURN
  19. 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
  20. 4010  PRINT"time and take notes.":GOSUB 10000:RETURN
  21. 4400  IF R+S+T>9999 THEN AF=8 ELSE AF=0
  22. 4401  YPOS=28:N$=STR$(R):XPOS=92+AF-LEN(N$)*8:GOSUB 4500:N$=STR$(S):XPOS=172+AF-LEN(N$)*8:GOSUB 4500:N$=STR$(T):XPOS=252+AF-LEN(N$)*8:GOSUB 4500
  23. 4402  RETURN
  24. 4500  IF VAL(N$)<0 THEN PUT (XPOS,YPOS),MIN,PSET:XPOS=XPOS+9
  25. 4510  N$=MID$(N$,2):FOR I=1 TO LEN(N$):SUB%=VAL(MID$(N$,I,1)):GOSUB 4600:XPOS=XPOS+9:NEXT I:RETURN
  26. 4600  ON SUB%+1 GOSUB 4610,4611,4612,4613,4614,4615,4616,4617,4618,4619:RETURN
  27. 4610  PUT (XPOS,YPOS),N0,PSET:RETURN
  28. 4611  PUT (XPOS,YPOS),N1,PSET:RETURN
  29. 4612  PUT (XPOS,YPOS),N2,PSET:RETURN
  30. 4613  PUT (XPOS,YPOS),N3,PSET:RETURN
  31. 4614  PUT (XPOS,YPOS),N4,PSET:RETURN
  32. 4615  PUT (XPOS,YPOS),N5,PSET:RETURN
  33. 4616  PUT (XPOS,YPOS),N6,PSET:RETURN
  34. 4617  PUT (XPOS,YPOS),N7,PSET:RETURN
  35. 4618  PUT (XPOS,YPOS),N8,PSET:RETURN
  36. 4619  PUT (XPOS,YPOS),N9,PSET:RETURN
  37. 5000  CLS:IF JR THEN SCREEN 1:OUT &H3DA,0:OUT &H3DA,0:RETURN ELSE OUT &H3D8,2:RETURN
  38. 5010  IF ENOUGHMEMORY=0 THEN LINE (0,0)-(47,33),0,BF
  39. 5020  IF JR THEN SCREEN 1:OUT &H3DA,0:OUT &H3DA,10:RETURN ELSE OUT &H3D8,10:RETURN
  40. 6000  IF MSF%=0 THEN RETURN ELSE SF%=NOT SF%
  41. 6010  ON SF%+2 GOSUB 6050,6030:RETURN
  42. 6030  YES$="":NO$="":FANFARE$="":RETURN
  43. 6050  YES$="mbt100o3l20cd":NO$="mbo1t32l14c":FANFARE$="mbt200l6o3efefcd#c#o2a#":RETURN
  44. 8000  AA%=-8:BB%=8:CC%=33:DD%=88:SUB%=2:DEF SEG=MSEG%:CALL MOFF%(AA%,BB%,CC%,DD%,SUB%)
  45. 8001  DEF SEG:RETURN
  46. 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 ";
  47. 8020  NEXT I:LOCATE 21,4:PRINT STRING$(34,32);:RETURN
  48. 10000  LOCATE 25,3:PRINT EL$;
  49. 10010  LOCATE 25,9:PRINT"Press ENTER to continue.";
  50. 10020  WHILE INKEY$<>"":WEND
  51. 10022  K$=INKEY$:IF K$="" THEN 10022
  52. 10023  IF K$=CHR$(1) THEN GOSUB 6000:GOTO 10022
  53. 10025  IF K$=CHR$(5) AND RU=0 THEN 29400
  54. 10026  IF K$=CHR$(5) AND EFL<>1 THEN RETURN 27999
  55. 10030  IF K$=" " OR K$=CHR$(13) THEN RETURN
  56. 10040  GOTO 10022
  57. 10100  GG=3:CLS:WC$=CHR$(22)+"______":LI=5:LINE (6,0)-(319,54),2,B:LINE (6,57)-(319,175),2,B
  58. 10105  GOSUB 29030:LOCATE 2,8:PRINT"These numbers fit the rule:":GOSUB 4400:RETURN
  59. 10110  LOCATE 9,4:PRINT"1st       2nd       3rd      Yes/No";:LINE (24,72)-(47,72),1:LINE (103,72)-(127,72),1:LINE (184,72)-(207,72),1:LINE (256,72)-(303,72),1:RETURN
  60. 10120  LOCATE 25,3:PRINT"Press <R> for recap, or <Q> for quiz.";:RETURN
  61. 10150  LINE (128,16)-(319,128),0,BF:RETURN
  62. 10160  LINE (24,80)-(296,168),0,BF:RETURN
  63. 10170  LINE (136,8)-(318,192),0,BF:RETURN
  64. 10190  '*** delay loops ***
  65. 10200  FOR I=1 TO 1200:NEXT I:RETURN
  66. 10205  FOR I=1 TO 1800:NEXT I:RETURN
  67. 10500  LOCATE 23,33:PRINT STR$(L);" -";STR$(RU);:GOSUB 10000:LOCATE 23,33:PRINT"       ";:GOSUB 10120:RETURN
  68. 13000  LC=0:CK$=WC$:WHILE INKEY$<>"":WEND
  69. 13010  SW=0:Z1=0:N$="":Y$=N$:K$=Y$
  70. 13020  LOCATE PO,XPO+Z1:PRINT LEFT$(CK$,TL)" ";
  71. 13030  Y$=INKEY$:IF Y$="" THEN 13030
  72. 13040  J=ASC(Y$):IF J>90 THEN J=J-32:Y$=CHR$(J)
  73. 13041  IF FL=1 THEN 13080
  74. 13050  IF Y$="Q" AND Z1=0 AND D=2 THEN K$="Q":SW=1:Y$="":N$="0":GG=3:RETURN
  75. 13060  IF Y$="R" AND Z1=0 AND D=2 THEN K$="R":SW=1:Y$="":N$="0":RETURN
  76. 13065  IF Y$="-" AND D=2 AND SW<>1 THEN 13120 ELSE IF Y$="-" AND D=1 THEN 13000
  77. 13070  IF N$="-" AND Y$="0" THEN TL=TL+1:GOTO 13000
  78. 13080  IF J=13 AND N$<>"" AND N$<>"-" THEN SW=0:LOCATE PO,XPO+Z1:PRINT STRING$(TL,32);:TL=7:RETURN
  79. 13090  IF J=5 AND D=2 THEN RETURN 27999
  80. 13100  IF J=8 OR (RIGHT$(Y$,1)="S" AND LEN(Y$)>1) THEN 13160
  81. 13105  IF J=1 THEN GOSUB 6000
  82. 13106  IF J=20 AND QU$="of" AND L>2 THEN GOSUB 10500:GOTO 13030
  83. 13110  IF SW=1 THEN 13030
  84. 13115  IF J<LL OR J>UL THEN 13020
  85. 13120  IF Y$="-" AND Z1>0 THEN 13020
  86. 13130  LOCATE PO,XPO+Z1:PRINT Y$;
  87. 13140  Z1=Z1+1:N$=N$+Y$:TL=TL-1:IF LEN(N$)>LI THEN SW=1:WHILE INKEY$<>"":WEND:GOTO 13020
  88. 13150  GOTO 13020
  89. 13160  IF SW=1 AND LEN(N$)<6 THEN Y$=""
  90. 13161  SW=0:K$="":IF Z1<1 THEN 13020 ELSE PRINT CHR$(29)" ";CHR$(29);
  91. 13170  Z1=Z1-1:TL=TL+1:N$=LEFT$(N$,Z1):GOTO 13020
  92. 13499  '*** bot. for guard ***
  93. 13500  LOCATE 20+G2,22+GG:PRINT"Press ENTER";
  94. 13501  LOCATE 21+G2,22+GG:PRINT"to continue.";:LINE (163+GG*8,147+G2*8)-(267+GG*8,172+G2*8),2,B:WHILE INKEY$<>"":WEND
  95. 13510  GOTO 10020
  96. 14000  PRINT"_";CHR$(29);:WHILE INKEY$<>"":WEND:N$="":AN$="":SW%=0
  97. 14010  N$=INKEY$:IF N$="" THEN 14010
  98. 14020  J%=ASC(N$):IF J%>90 THEN J%=J%-32:N$=CHR$(J%)
  99. 14030  IF J%<>13 AND J%<>5 AND J%<>8 AND SW%=1 THEN N$="":GOTO 14010
  100. 14040  IF N$="Y" THEN PRINT"Yes_";:SW%=1:LE%=1:AN$="Y"
  101. 14050  IF N$="N" THEN PRINT"No_ ";:SW%=1:LE%=2:AN$="N"
  102. 14060  IF J%=13 AND SW%=1 THEN PRINT STRING$(LE%,29)" ";:RETURN
  103. 14070  IF J%=5 THEN RETURN 27999
  104. 14080  IF J%=8 AND SW%=1 THEN SW%=0:PRINT STRING$(4,29);"    ";STRING$(4,29);:GOTO 14000
  105. 14090  N$="":GOTO 14010
  106. 15000  GG=0:GOSUB 6000:GOSUB 29600:GET (0,0)-(47,22),PRIZE:PUT (0,0),PRIZE
  107. 15010  LOCATE 3,18:PRINT"Halt! I guard the door":LOCATE 4,18:PRINT"to the Castle Gate. To":LOCATE 5,18:PRINT"pass through you must":LOCATE 6,18:PRINT"solve three number":LOCATE 7,18:PRINT"riddles....":LOCATE 9,18
  108. 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
  109. 15016  DEF SEG=PL%:LIM%=PEEK(0):POKE 0,LIM%:DEF SEG
  110. 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
  111. 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."
  112. 15031  IF ENOUGHMEMORY THEN GET (15,4)-(117,198),GUARD
  113. 15050  HN=FNR(3)+3:GOSUB 10020
  114. 15060  RU=FNR(2)
  115. 15070  RANDOMIZE (VAL(RIGHT$(TIME$,2))):GOSUB 20
  116. 15075  TL=7:LL=48:UL=57:QU$="of":GG=0:D=2:GOSUB 10100:GOSUB 10110:PO=11:XPO=4
  117. 15080  LOCATE 25,3:PRINT"Press <R> for recap, or <Q> for quiz.";:IF KZ=1 THEN KZ=0:XPO=4
  118. 15085  IF PO>21 THEN GOSUB 8000:PO=21:XPO=4
  119. 15087  GOSUB 13000
  120. 15090  IF K$="Q" THEN 20000
  121. 15100  IF K$="R" THEN GOSUB 19000:GOTO 15080
  122. 15110  X=VAL(N$):XPO=XPO+10
  123. 15130  GOSUB 13000
  124. 15140  IF K$="Q" THEN 20000
  125. 15150  IF K$="R" THEN GOSUB 19000:IF KZ<>1 THEN 15130 ELSE 15080
  126. 15160  Y=VAL(N$):XPO=XPO+10
  127. 15180  GOSUB 13000
  128. 15190  IF K$="Q" THEN 20000
  129. 15200  IF K$="R" THEN GOSUB 19000:IF KZ<>1 THEN 15180 ELSE 15080
  130. 15210  Z=VAL(N$):XPO=XPO+10
  131. 15230  GOSUB 40
  132. 15240  IF AN=1 THEN LOCATE PO,XPO:PRINT"Yes";:PLAY YES$:RW=1:GOTO 15252
  133. 15250  LOCATE PO,XPO:PRINT"No";:PLAY NO$:RW=2:WH=WH+1
  134. 15252  IF EM=1 THEN IC=0:EM=0
  135. 15253  XPO=4:IC=IC+1
  136. 15264  Z1(IC)=X:Z2(IC)=Y:Z3(IC)=Z:Z4(IC)=RW:PO=PO+2:R$="":IF WH=HN THEN GOSUB 29000
  137. 15270  IF IC=90 THEN EM=1:GOSUB 4000:GOTO 15075
  138. 15290  ZZ=FRE(H$):GOTO 15080
  139. 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
  140. 19000  IF IC=0 THEN LOCATE 25,3:PRINT EL$;:LOCATE 25,11:PRINT"You have no entry!";:GOSUB 10205:GOSUB 10120:RETURN
  141. 19005  IF SA=1 THEN SA=0:GOTO 19020
  142. 19010  IF IC<6 THEN LOCATE 25,3:PRINT EL$;:LOCATE 25,8:PRINT"All entries are displayed.";:GOSUB 10205:GOSUB 10120:RETURN
  143. 19020  GOSUB 10160:PO=11
  144. 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 ";
  145. 19040  LC=LC+1:IF LC=6 THEN IF I<IC THEN GOSUB 10010:GOSUB 10160:LC=0:PO=9
  146. 19045  IF LC=6 THEN IF I=IC THEN GOSUB 10010:GOSUB 10160:KZ=1:LC=0:XPO=4:PO=11:RETURN
  147. 19050  PO=PO+2:NEXT I:GOSUB 10010:IF PO>21 THEN GOSUB 10160
  148. 19060  KZ=1:RETURN
  149. 20000  IF ENOUGHMEMORY THEN GOSUB 5000:PUT (15,4),GUARD ELSE GOSUB 29600
  150. 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
  151. 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
  152. 20013  PRINT"and win a key."
  153. 20015  LOCATE 15,18:PRINT"When you pass three":LOCATE 16,18:PRINT"quizzes, you may":LOCATE 17,18
  154. 20016  PRINT"enter the castle."
  155. 20030  G2=1:GG=0:GOSUB 5010:GOSUB 13500
  156. 20031  G2=1:GG=0:QU$="on":WH=0:IC=0:DN=FNR(5)
  157. 20041  R1=R:GOSUB 30:IF R=R1 THEN 20041
  158. 20042  IF DN=RC+1 THEN 20050
  159. 20043  IF FNR(4)=2 THEN 20050
  160. 20044  GOTO 21000
  161. 20050  DD=FNR(3):IF DD=1 THEN GOSUB 20100:R=RR:GOTO 21000
  162. 20060  IF DD=2 THEN RR=S:GOSUB 20100:S=RR:GOTO 21000
  163. 20070  RR=T:GOSUB 20100:T=RR
  164. 20090  GOTO 21000
  165. 20100  K=FNR(2):ON K GOSUB 20220,20230
  166. 20110  RETURN
  167. 20200  RR=RR*FNR(3):RETURN
  168. 20210  RR=INT(RR/FNR(3)):IF RR<0 THEN 20210 ELSE RETURN
  169. 20220  RR=RR+FNR(5):IF RR>30 THEN RR=30
  170. 20221  RETURN
  171. 20230  RR=RR-FNR(5):IF RR<1 THEN RR=1
  172. 20231  RETURN
  173. 21000  GOSUB 10170:LINE (144,12)-(318,51),2,B:X=R:Y=S:Z=T
  174. 21010  GOSUB 40:IF R+S+T>9999 THEN AF=8 ELSE AF=0
  175. 21015  YPOS=24:N$=STR$(R):XPOS=192+AF-LEN(N$)*8:GOSUB 4500:N$=STR$(S):XPOS=248+AF-LEN(N$)*8:GOSUB 4500:N$=STR$(T):XPOS=304+AF-LEN(N$)*8:GOSUB 4500
  176. 21020  GG=2:LOCATE 9,20:PRINT"Do these numbers fit":LOCATE 10,20:PRINT"the rule? ";:GOSUB 14000
  177. 21050  IF AN=1 AND AN$="Y" THEN 21300
  178. 21060  IF AN=2 AND AN$="N" THEN 21300
  179. 21100  LOCATE 13,20:PLAY NO$:PRINT"Wrong. You will have":LOCATE 14,20:PRINT"to try again.":IF L%<4 THEN KI=0
  180. 21105  GOSUB 13500:RC=0:GOTO 27999
  181. 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
  182. 21310  LOCATE 12,20:PRINT"Right! You have":LOCATE 13,20:PRINT"passed the quiz":LOCATE 14,20
  183. 21311  PRINT"and won a key.";:KI=KI+1:PO=15:XPO=26:GOSUB 22000:GOSUB 13500
  184. 21320  RC=0:GOSUB 10170:GOSUB 23000
  185. 21325  IF KI=3 THEN SR=SR+1:GOTO 21400
  186. 21330  LOCATE 3,21:PRINT"The Castle Gate 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.";
  187. 21340  GOSUB 13500:FL=0:GOTO 15060
  188. 21400  LOCATE 3,22:PRINT"CONGRATULATIONS!":LOCATE 5,21:PRINT"You may now enter":LOCATE 6,21:PRINT"the castle.";:L%=L%+1:RES=SR
  189. 21410  PLAY FANFARE$:IF L%>RES THEN DEF SEG=PL%:POKE 0,L%:DEF SEG:GOSUB 13500 ELSE GOSUB 13500
  190. 21420  GOSUB 10170:GOTO 29400
  191. 22000  PUT (XPO*8+2,PO*8),PRIZE,PSET:RETURN
  192. 23000  IF KI=1 THEN PO=11:XPO=26:GOSUB 22000:RETURN
  193. 23010  IF KI=2 THEN PO=14:XPO=21:GOSUB 22000:XPO=XPO+10:GOSUB 22000:RETURN
  194. 23020  PO=10:XPO=26:GOSUB 22000:PO=14:XPO=21:GOSUB 22000:XPO=XPO+10:GOSUB 22000:RETURN
  195. 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
  196. 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
  197. 28010  LL%=49:UL%=51:LI=0:J=0:SW=J:QU$="off":RC=0:WH=0:LOCATE 15,18:PRINT"Enter selection:";:PO=15:XPO=35:WC$=CHR$(22)+" ":TL=2:FL=1:D=1:GOSUB 13000:A=VAL(N$)
  198. 28040  FL=0:IF A=1 THEN SA=1:GOSUB 30:GOTO 15075
  199. 28050  IF A=2 THEN IF RU=1 THEN RU=2 ELSE IF RU=2 THEN RU=1
  200. 28060  IF A=3 THEN 29400
  201. 28070  IC=0:GOTO 15070
  202. 28999  '*** hint ***
  203. 29000  R1=R:S1=S:T1=T:GOSUB 30:IF R=R1 THEN GOSUB 30
  204. 29002  HN=FNR(3)+3:LOCATE 2,3:PRINT EL$;
  205. 29010  GOSUB 29030:LOCATE 2,3:PRINT J$(FNR(4)):LOCATE 3,3:PRINT"these numbers also fit the rule:";
  206. 29020  GOSUB 4400:GOSUB 10000:R=R1:S=S1:T=T1:GOSUB 29030:GOSUB 10105:WH=0:RETURN
  207. 29030  LINE (16,8)-(304,46),0,BF:RETURN
  208. 29400  ON ERROR GOTO 16000:RUN "menu"
  209. 29500  DEFINT A-W:R=18:DEF SEG:DIM RET(26),TITLE(242),N0(R),N1(R),N2(R),N3(R),N4(R),N5(R),N6(R),N7(R),N8(R),N9(R),MIN(R):DEF SEG:BLOAD "image.img",VARPTR(RET(0))
  210. 29501  LD$="UNPACK.BLD":MAXIMUM%=16500
  211. 29502  DEF SEG=&H40:MEM%=PEEK(&H13)+256*PEEK(&H14)
  212. 29504  ASMPROG%=(MEM%*1024/16)-108
  213. 29506  SEGMENT%=INT((ASMPROG%*16-MAXIMUM%)/16)
  214. 29508  DEF SEG=ASMPROG%:BLOAD LD$,0
  215. 29510  UNPACKIT%=0:PACK%=0:DEF SEG
  216. 29512  IF MEM%>80 THEN ENOUGHMEMORY=1 ELSE ENOUGHMEMORY=0
  217. 29520  DIM Z1(92),Z2(92),Z3(92),Z4(92):IF ENOUGHMEMORY THEN DIM DIS(2520),GUARD(2537)
  218. 29525  DIM PRIZE(140)
  219. 29530  DEF SEG=0:POKE &H6C,84:POKE &H6D,0:POKE &H6E,0:POKE &H6F,0:POKE 84,&HCF:DEF SEG:DEF SEG=&H40:IF PEEK (&H6B)<>&HA5 THEN 30000
  220. 29535  DEF SEG=&HF000:JR=(PEEK(&HFFFE)=&HFD)
  221. 29536  DEF SEG=0:PL%=INT((((PEEK(&H510)+256*PEEK(&H511))*16+VARPTR(#2))/16)+1):DEF SEG
  222. 29537  DEF SEG=&H40:MOFF%=PEEK(4)+256*PEEK(5):MSEG%=PEEK(6)+256*PEEK(7):DEF SEG
  223. 29540  DEF FNR(N)=1+INT(RND*N)
  224. 29545  EL$=STRING$(37,32)
  225. 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
  226. 29600  FILE1$="guard"+L$+".pak":DEF SEG=SEGMENT%:BLOAD FILE1$,0:DEF SEG=ASMPROG%:GOSUB 5000:CALL PACK%(SEGMENT%,UNPACKIT%):RETURN
  227. 29601  RETURN
  228. 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."
  229. 30001  PRINT CHR$(7);:GOTO 30001
  230.