home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib41b.dsk / COMPUTLES.bas < prev    next >
BASIC Source File  |  2023-02-26  |  21KB  |  360 lines

  1. 10  REM  *************************
  2. 20  REM  * COMPUTLES             *
  3. 30  REM  * BY HAP GAYLORD        *
  4. 40  REM  * COPYRIGHT (C) 1991    *
  5. 50  REM  * MINDCRAFT PUBL. CORP. *
  6. 60  REM  * LINCOLN, MA 01773     *
  7. 70  REM  *************************
  8. 80  DIM R(2,21),C(2,21),L$(12),A$(30)
  9. 90  PRINT  CHR$(4);"PR#0"
  10. 100  TEXT : HOME : PRINT : PRINT  CHR$(17): POKE 49166,0: GOTO 640
  11. 110  REM  * SUBROUTINE TO GET AND CHECK ANSWERS *
  12. 120 K =  PEEK( -16384): IF K <128  THEN  RETURN 
  13. 130  POKE  -16368,0: IF R = 0  AND W = 0  THEN A = A +1:A$(A) = P$(1)
  14. 140  IF K = 155  THEN R = 2: GOTO 270
  15. 150  VTAB 22: HTAB 1: PRINT  SPC( 119);
  16. 160  VTAB 22: HTAB 1: INPUT "Your answer: ";T$
  17. 170 H$ = "": FOR L = 1 TO  LEN(T$):M$ =  MID$ (T$,L,1)
  18. 180  IF M$ > = "a"  AND M$ < = "z"  THEN M$ =  CHR$( ASC(M$) -32)
  19. 190 H$ = H$ +M$: NEXT L:K = 1
  20. 200  IF H$ = P$(K)  THEN  PRINT "Right!";:R = 1: GOSUB 470: GOTO 280
  21. 210 K = K +1: IF K < = AN  THEN 200
  22. 220 W = W +1: PRINT "No.";: IF W <2  THEN  PRINT "  Try again.";: GOTO 240
  23. 230  PRINT "  Two tries is it for now.": PRINT "Next puzzle.";
  24. 240  PRINT "  Press a key to go on.";
  25. 250  POKE  -16368,0
  26. 260  IF  PEEK( -16384) <128  THEN 260
  27. 270  POKE  -16368,0: IF W = 1  THEN  VTAB 22: HTAB 1: PRINT  SPC( 119);: GOSUB 320
  28. 280  RETURN 
  29. 290  REM  * SUBROUTINE TO PREPARE FOR AN ANSWER *
  30. 300  POKE  -16368,0
  31. 310  HOME : PRINT 
  32. 320  VTAB 23: HTAB 1: PRINT "--------------------------------------": REM  38-
  33. 330  VTAB 24: HTAB 2: PRINT "Press a key to answer or ESC to skip.";
  34. 340  RETURN 
  35. 350  REM  * SUBROUTINE TO DECODE A PHRASE *
  36. 360 W = 0:R = 0: FOR Q = 1 TO AN
  37. 370 A$ = "": FOR K = 1 TO  LEN(P$(Q)):M$ =  MID$ (P$(Q),K,1): IF M$ <"A"  OR M$ >"Z"  THEN 390
  38. 380 M$ =  CHR$(155 - ASC(M$))
  39. 390 A$ = A$ +M$
  40. 400  NEXT K
  41. 410 P$(Q) = A$: NEXT Q: RETURN 
  42. 420  REM  * SUBROUTINE TO SPLIT A WORD INTO LETTERS *
  43. 430  FOR I = 1 TO  LEN(W$):L$(I) =  MID$ (W$,I,1): NEXT I: RETURN 
  44. 440  REM  * SUBROUTINE TO DELAY VARYING AMOUNTS OF TIME *
  45. 450  FOR Q = 1 TO 40: NEXT Q: RETURN 
  46. 460  FOR Q = 1 TO 1000: NEXT Q: RETURN 
  47. 470  FOR Q = 1 TO 2000: NEXT Q: RETURN 
  48. 480  FOR Q = 1 TO 5000: NEXT Q: RETURN 
  49. 490  REM  * SUBROUTINE TO BEEP THE SPEAKER *
  50. 500  FOR K = 1 TO 15:L =  PEEK( -16336): NEXT K: RETURN 
  51. 510  REM  * SUBROUTINE TO ASSIGN SCREEN POSITIONS FOR LETTERS *
  52. 520 C(0,1) = 18:C(0,2) = 18:C(0,3) = 20:C(0,4) = 22:C(0,5) = 22:C(0,6) = 22:C(0,7) = 20:C(0,8) = 18:C(0,9) = 18
  53. 530 R(0,1) = 12:R(0,2) = 10:R(0,3) = 10:R(0,4) = 10:R(0,5) = 12:R(0,6) = 14:R(0,7) = 14:R(0,8) = 14:R(0,9) = 12
  54. 540 C(1,1) = 19:C(1,2) = 19:C(1,3) = 20:C(1,4) = 21:C(1,5) = 21:C(1,6) = 21:C(1,7) = 20:C(1,8) = 19:C(1,9) = 19
  55. 550 R(1,1) = 12:R(1,2) = 11:R(1,3) = 11:R(1,4) = 11:R(1,5) = 12:R(1,6) = 13:R(1,7) = 13:R(1,8) = 13:R(1,9) = 12
  56. 560  RETURN 
  57. 570  REM  * SUBROUTINE TO PRINT LETTERS IN PREPARED SCREEN POSITIONS *
  58. 580  VTAB R(0,I): HTAB C(0,I) +L: PRINT " ": VTAB R(0,I +1): HTAB C(0,I +1) +L: PRINT L$(1)
  59. 590  VTAB R(1,I): HTAB C(1,I) +L: PRINT " ": VTAB R(1,I +1): HTAB C(1,I +1) +L: PRINT L$(2)
  60. 600  VTAB R(1,J): HTAB C(1,J) +L: PRINT " ": VTAB R(1,J +1): HTAB C(1,J +1) +L: PRINT L$(4)
  61. 610  VTAB R(0,J): HTAB C(0,J) +L: PRINT " ": VTAB R(0,J +1): HTAB C(0,J +1) +L: PRINT L$(5)
  62. 620  RETURN 
  63. 630  REM  * TITLE SCREEN *
  64. 640  VTAB 3: HTAB 11: PRINT "C O M P U T L E S"
  65. 650  VTAB 5: HTAB 13: PRINT "by Hap Gaylord"
  66. 660  VTAB 11: HTAB 11: PRINT "Copyright (C) 1991"
  67. 670  PRINT : HTAB 9: PRINT "MINDCRAFT PUBL. CORP."
  68. 680  PRINT : HTAB 11: PRINT "LINCOLN, MA 01773"
  69. 690  VTAB 22: HTAB 7: PRINT "Press RETURN to continue.": GET X$
  70. 700  HOME : PRINT : VTAB 10: HTAB 1: PRINT "Do you need to see the rules (Y/N)? ";
  71. 710  GET A$: IF A$ = "N"  OR A$ = "n"  THEN 900
  72. 720  IF A$ < >"Y"  AND A$ < >"y"  THEN 710
  73. 730  REM  * RULES *
  74. 740  HOME : PRINT : PRINT "COMPUTLES is a game of word puzzles."
  75. 750  PRINT : PRINT "Each puzzle represents a common phrase."
  76. 760  PRINT "Some of the words are printed and some"
  77. 770  PRINT "are represented by the actions of the"
  78. 780  PRINT "displayed words."
  79. 790  PRINT : PRINT "Watch the action carefully.  When you"
  80. 800  PRINT "have figured out the phrase, press any"
  81. 810  PRINT "key to answer.  To skip that puzzle"
  82. 820  PRINT "press the ESC key."
  83. 830  PRINT : PRINT "You get two tries at each puzzle before"
  84. 840  PRINT "the program moves on."
  85. 850  PRINT : PRINT "At the end of the thirty puzzles you"
  86. 860  PRINT "are offered the opportunity to print"
  87. 870  PRINT "a list of the answers."
  88. 880  PRINT : PRINT "Have fun!": VTAB 23: GOSUB 240
  89. 890  REM  * START OF PUZZLES *
  90. 900  GOSUB 300:AN = 1:P$(1) = "WVVI": GOSUB 360:W$ = P$(1)
  91. 910 P$(1) = "WVVI XILHHRMT": GOSUB 360
  92. 920  VTAB 1: HTAB 18: PRINT W$;: HTAB 26: PRINT W$
  93. 930  VTAB 8: HTAB 11: PRINT W$: VTAB 16: HTAB 11: PRINT W$
  94. 940  FOR I = 11 TO 31
  95. 950  VTAB I -10: HTAB 18: PRINT  SPC( 4);: HTAB 26: PRINT  SPC( 4): VTAB I -9: HTAB 18: PRINT W$;: HTAB 26: PRINT W$
  96. 960  VTAB 8: HTAB I: PRINT  SPC( 4): VTAB 16: HTAB I: PRINT  SPC( 4): VTAB 8: HTAB 1 +I: PRINT W$: VTAB 16: HTAB 1 +I: PRINT W$
  97. 970  GOSUB 120: IF R >0  OR W >1  THEN 1000
  98. 980  NEXT I: GOSUB 460: GOSUB 310
  99. 990  GOTO 920
  100. 1000  GOSUB 300:AN = 1:P$(1) = "DSVVO": GOSUB 360:W$ = P$(1)
  101. 1010 P$(1) = "HKRMMRMT DSVVO": GOSUB 360
  102. 1020  GOSUB 430
  103. 1030  VTAB 12: HTAB 18: PRINT W$
  104. 1040  GOSUB 520
  105. 1050  FOR I = 1 TO 8:J = I +4 -8 *(I >4)
  106. 1060 L = 0: GOSUB 580
  107. 1070  GOSUB 120: IF R >0  OR W >1  THEN 1100
  108. 1080  NEXT I
  109. 1090  GOTO 1050
  110. 1100  GOSUB 300:AN = 1:P$(1) = "YLY": GOSUB 360:W$ = P$(1)
  111. 1110 P$(1) = "YLY FK ZMW WLDM": GOSUB 360
  112. 1120  VTAB 22: HTAB 19: PRINT W$;
  113. 1130  FOR I = 22 TO 2  STEP  -1: VTAB I: HTAB 19: PRINT  SPC( 3);: VTAB I -1: HTAB 19: PRINT W$;
  114. 1140  GOSUB 120: IF R >0  OR W >1  THEN 1200
  115. 1150  GOSUB 450: NEXT I
  116. 1160  FOR I = 1 TO 21: VTAB I: HTAB 19: PRINT  SPC( 3);: VTAB I +1: HTAB 19: PRINT W$;
  117. 1170  GOSUB 120: IF R >0  OR W >1  THEN 1200
  118. 1180  GOSUB 450: NEXT I: GOSUB 460
  119. 1190  GOTO 1120
  120. 1200  GOSUB 300:AN = 1:P$(1) = "MVD": GOSUB 360:W$ = P$(1)
  121. 1210 P$(1) = "MVDH UOZHS": GOSUB 360
  122. 1220  FLASH 
  123. 1230  FOR I = 1 TO 20: VTAB  INT( RND(1) *21) +1: HTAB  INT( RND(1) *36) +1: PRINT W$: NEXT I
  124. 1240  NORMAL : GOSUB 120: IF R >0  OR W >1  THEN 1260
  125. 1250  GOTO 1240
  126. 1260  GOSUB 300:AN = 1:P$(1) = "YVZG": GOSUB 360:W$ = P$(1):P$(1) = "YFHS": GOSUB 360:W1$ = P$(1)
  127. 1270 AN = 2:P$(1) = "YVZG ZYLFG GSV YFHS":P$(2) = "YVZG ZILFMW GSV YFHS": GOSUB 360
  128. 1280  VTAB 12: HTAB 19: PRINT W1$
  129. 1290 R(0,0) = 13:R(0,1) = 12:R(0,2) = 11:R(0,3) = 10:R(0,4) = 9:R(0,5) = 8:R(0,6) = 8:R(0,7) = 8:R(0,8) = 8:R(0,9) = 8
  130. 1300 C(0,0) = 14:C(0,1) = 14:C(0,2) = 14:C(0,3) = 15:C(0,4) = 15:C(0,5) = 16:C(0,6) = 17:C(0,7) = 18:C(0,8) = 19:C(0,9) = 20
  131. 1310  FOR I = 1 TO 8: VTAB R(0,I): HTAB C(0,I): PRINT  SPC( 4);: VTAB R(0,I +1): HTAB C(0,I +1): PRINT W$;: GOSUB 120: IF R >0  OR W >1  THEN 1390
  132. 1320  NEXT I
  133. 1330  FOR I = 9 TO 1  STEP  -1: VTAB R(0,I): HTAB 39 -C(0,I): PRINT  SPC( 4);: VTAB R(0,I -1): HTAB 39 -C(0,I -1): PRINT W$;: GOSUB 120: IF R >0  OR W >1  THEN 1390
  134. 1340  NEXT I
  135. 1350  FOR I = 1 TO 8: VTAB 25 -R(0,I): HTAB 39 -C(0,I): PRINT  SPC( 4);: VTAB 25 -R(0,I +1): HTAB 39 -C(0,I +1): PRINT W$;: GOSUB 120: IF R >0  OR W >1  THEN 1390
  136. 1360  NEXT I
  137. 1370  FOR I = 9 TO 1  STEP  -1: VTAB 25 -R(0,I): HTAB C(0,I): PRINT  SPC( 4);: VTAB 25 -R(0,I -1): HTAB C(0,I -1): PRINT W$;: GOSUB 120: IF R >0  OR W >1  THEN 1390
  138. 1380  NEXT I: GOTO 1310
  139. 1390  GOSUB 300:AN = 1:P$(1) = "YIZRMVW": GOSUB 360:W$ = P$(1)
  140. 1400 P$(1) = "HXZGGVI YIZRMVW": GOSUB 360
  141. 1410  GOSUB 430
  142. 1420 R(1,1) = 1:R(1,2) = 22:R(1,3) = 1:R(1,4) = 22:R(1,5) = 1:R(1,6) = 22:R(1,7) = 12
  143. 1430 C(1,1) = 1:C(1,2) = 1:C(1,3) = 20:C(1,4) = 20:C(1,5) = 39:C(1,6) = 39:C(1,7) = 39
  144. 1440  VTAB 12: HTAB 16: PRINT W$
  145. 1450  FOR I = 1 TO  LEN(W$):R(0,I) = 12:C(0,I) = 15 +I: NEXT I
  146. 1460  FOR I = 1 TO 7:Y(I) = (R(1,I) -R(0,I))/11:X(I) = (C(1,I) -C(0,I))/11: NEXT I
  147. 1470  FOR I = 1 TO 11
  148. 1480  FOR J = 1 TO 7: VTAB R(0,J): HTAB C(0,J): PRINT " ";: VTAB R(0,J) +Y(J): HTAB C(0,J) +X(J): PRINT L$(J);:R(0,J) = R(0,J) +Y(J):C(0,J) = C(0,J) +X(J): NEXT J
  149. 1490  GOSUB 120: IF R >0  OR W >1  THEN 1510
  150. 1500  NEXT I: GOSUB 460: GOSUB 310: GOTO 1440
  151. 1510  GOSUB 300:AN = 1:P$(1) = "KZIGRXRKOV": GOSUB 360:W$ = P$(1)
  152. 1520 AN = 2:P$(1) = "WZMTORMT KZIGRXRKOV":P$(2) = "Z WZMTORMT KZIGRXRKOV": GOSUB 360
  153. 1530  GOSUB 430
  154. 1540  FOR I = 0 TO 10:C(0,I) = 1.1 * SIN(I *.628) +20:C(0,I +10) = C(0,I): NEXT I
  155. 1550  VTAB 1: HTAB 20: PRINT  LEFT$(W$,1)
  156. 1560  FOR I = 0 TO 9: FOR J = 2 TO  LEN(W$): VTAB J: HTAB C(0,I +J): PRINT " ";
  157. 1570  VTAB J: HTAB C(0,I +J +1): PRINT L$(J);: NEXT J
  158. 1580  GOSUB 120: IF R >0  OR W >1  THEN 1600
  159. 1590  NEXT I: GOTO 1560
  160. 1600  GOSUB 300:AN = 1:P$(1) = "ZIXS": GOSUB 360:W$ = P$(1)
  161. 1610 AN = 2:P$(1) = "UZOOVM ZIXSVH":P$(2) = "UZOORMT ZIXSVH": GOSUB 360
  162. 1620  FOR I = 1 TO 6:R(0,I) = 1:C(0,I) = I *6 + INT( RND(1) *2) -4:X(I) = 1: NEXT I
  163. 1630  FOR I = 1 TO 6: IF X(I) <0  OR X(I) = 1  AND  RND(1) >.4  THEN 1660
  164. 1640 X(I) = 0:R(0,I) = R(0,I) +1: VTAB R(0,I) -1: HTAB C(0,I): PRINT  SPC( 4): VTAB R(0,I): HTAB C(0,I): PRINT W$
  165. 1650  IF R(0,I) = 22  AND X(I) = 0  THEN X(I) =  -1: GOSUB 500
  166. 1660  GOSUB 120: IF R >0  OR W >1  THEN 1700
  167. 1670  NEXT I
  168. 1680 J = 0: FOR I = 1 TO 6:J = J +X(I): NEXT I: IF J > -6  THEN 1630
  169. 1690  GOSUB 310: GOTO 1620
  170. 1700  GOSUB 300:AN = 1:P$(1) = "DLIW": GOSUB 360:W$ = P$(1):P$(1) = "DRHV": GOSUB 360:W1$ = P$(1)
  171. 1710 P$(1) = "Z DLIW GL GSV DRHV": GOSUB 360
  172. 1720  FOR I = 1 TO 20:K =  INT( RND(1) *21) +1: IF K = 12  THEN K = 11
  173. 1730  VTAB K: HTAB  RND(1) *30 +1: PRINT W$: NEXT I
  174. 1740  VTAB 12: HTAB 10: PRINT W$: VTAB 12: HTAB 35: PRINT W1$
  175. 1750  FOR I = 10 TO 30: VTAB 12: HTAB I: PRINT  SPC( 4): VTAB 12: HTAB I +1: PRINT W$
  176. 1760  GOSUB 450: GOSUB 120: IF R >0  OR W >1  THEN 1790
  177. 1770  NEXT I
  178. 1780  GOSUB 460: GOSUB 310: GOTO 1720
  179. 1790  GOSUB 300:AN = 1:P$(1) = "GZITVG": GOSUB 360:W$ = P$(1)
  180. 1800 AN = 2:P$(1) = "NLERMT GZITVG":P$(2) = "Z NLERMT GZITVG": GOSUB 360
  181. 1810 R(0,1) =  INT( RND(1) *20) +1:C(0,1) =  INT( RND(1) *30) +2
  182. 1820 R(1,1) = R(0,1) + INT( RND(1) *3) -1: IF R(1,1) <1  OR R(1,1) >20  THEN R(1,1) = R(0,1)
  183. 1830 C(1,1) = C(0,1) + INT( RND(1) *3) -1: IF C(1,1) <1  OR C(1,1) >34  THEN C(1,1) = C(0,1)
  184. 1840  VTAB R(0,1): HTAB C(0,1): PRINT  SPC( 6): VTAB R(1,1): HTAB C(1,1): PRINT W$
  185. 1850 R(0,1) = R(1,1):C(0,1) = C(1,1)
  186. 1860  GOSUB 120: IF R >0  OR W >1  THEN 1880
  187. 1870  GOTO 1820
  188. 1880  GOSUB 300:AN = 1:P$(1) = "XLMHXRLFHMVHH": GOSUB 360:W$ = P$(1)
  189. 1890 P$(1) = "HGIVZN LU XLMHXRLFHMVHH": GOSUB 360
  190. 1900 W$ = W$ +W$ +W$ +W$
  191. 1910 I = 1
  192. 1920  VTAB 12: HTAB 1: PRINT  MID$ (W$,I,40):I = I +1: IF I >13  THEN 1910
  193. 1930  GOSUB 450: GOSUB 450: GOSUB 120: IF R >0  OR W >1  THEN 1950
  194. 1940  GOTO 1920
  195. 1950  GOSUB 300:AN = 1:P$(1) = "SZRI": GOSUB 360:W$ = P$(1)
  196. 1960 AN = 3:P$(1) = "HKORG SZRIH":P$(2) = "HKORGGRMT SZRIH":P$(3) = "GLHKORG SZRIH": GOSUB 360
  197. 1970  FOR I = 1 TO 10:R(0,I) =  INT( RND(1) *21) +1:C(0,I) = I *3 + INT( RND(1) *3) +2
  198. 1980  VTAB R(0,I): HTAB C(0,I): PRINT W$: NEXT I: GOSUB 460
  199. 1990  FOR I = 1 TO 10: VTAB R(0,I): HTAB C(0,I) -3: PRINT  LEFT$(W$,2); SPC( 3);: NEXT I: GOSUB 500
  200. 2000  GOSUB 120: IF R >0  OR W >1  THEN 2030
  201. 2010  GOSUB 470: GOSUB 120: IF R >0  OR W >1  THEN 2030
  202. 2020  GOSUB 310: GOTO 1970
  203. 2030  GOSUB 300:AN = 1:P$(1) = "RMEZWVIH": GOSUB 360:W$ = P$(1)
  204. 2040 P$(1) = "HKZXV RMEZWVIH": GOSUB 360
  205. 2050  VTAB 12: HTAB 16: PRINT W$
  206. 2060  GOSUB 430
  207. 2070  FOR I = 1 TO  LEN(W$)/2: FOR J = 15 +I TO I *5 -2  STEP  -1: VTAB 12: HTAB J: PRINT " ";: VTAB 12: HTAB 39 -J: PRINT " ";
  208. 2080  VTAB 12: HTAB J -1: PRINT L$(I);: VTAB 12: HTAB 40 -J: PRINT L$(9 -I);: GOSUB 120: IF R >0  OR W >1  THEN 2100
  209. 2090  NEXT J,I: GOSUB 460: GOSUB 310: GOTO 2050
  210. 2100  GOSUB 300:AN = 1:P$(1) = "DLIOW": GOSUB 360:W$ = P$(1):P$(1) = "URIV": GOSUB 360:W1$ = P$(1)
  211. 2110 AN = 2:P$(1) = "HVG GSV DLIOW LM URIV":P$(2) = "HVGGRMT GSV DLIOW LM URIV": GOSUB 360
  212. 2120  VTAB 12: HTAB 2: PRINT W1$: VTAB 12: HTAB 30: PRINT W$
  213. 2130  FOR I = 30 TO 3  STEP  -1: VTAB 12 -(I <16) -(I <15): HTAB I: PRINT  SPC( 6);
  214. 2140  VTAB 12 -(I <17) -(I <16): HTAB I -1: PRINT W$;: GOSUB 120: IF R >0  OR W >1  THEN 2180
  215. 2150  GOSUB 450: NEXT I
  216. 2160  VTAB 10: HTAB 2: PRINT  SPC( 6);: VTAB 11: HTAB 2: PRINT W$
  217. 2170  GOSUB 500: GOSUB 470: GOSUB 310: GOTO 2120
  218. 2180  GOSUB 300:AN = 1:P$(1) = "HVZIXSRMT": GOSUB 360:W$ = P$(1)
  219. 2190 AN = 2:P$(1) = "HVZIXSRMT UILN GLK GL YLGGLN":P$(2) = "HVZIXSRMT GLK GL YLGGLN": GOSUB 360
  220. 2200  VTAB 1: HTAB 15: PRINT W$
  221. 2210  FOR I = 1 TO 21: VTAB I: HTAB 15: PRINT  SPC( 9);: VTAB I +1: HTAB 15: PRINT W$
  222. 2220  GOSUB 450: GOSUB 120: IF R >0  OR W >1  THEN 2240
  223. 2230  NEXT I: GOSUB 470: GOSUB 310: GOTO 2200
  224. 2240  GOSUB 300:AN = 1:P$(1) = "GZYOV": GOSUB 360:W$ = P$(1)
  225. 2250 AN = 3:P$(1) = "GFIM GSV GZYOVH":P$(2) = "GFIMRMT GSV GZYOVH":P$(3) = "GL GFIM GSV GZYOVH": GOSUB 360
  226. 2260  GOSUB 430
  227. 2270  VTAB 12: HTAB 8: PRINT W$; SPC( 5);W$; SPC( 5);W$
  228. 2280  GOSUB 520
  229. 2290  FOR I = 1 TO 8:J = I +4 -8 *(I >4): FOR L =  -10 TO 10  STEP 10
  230. 2300  GOSUB 580
  231. 2310  GOSUB 120: IF R >0  OR W >1  THEN 2340
  232. 2320  NEXT L,I
  233. 2330  GOTO 2290
  234. 2340  GOSUB 300:AN = 1:P$(1) = "MRZTZIZ": GOSUB 360:W$ = P$(1)
  235. 2350 P$(1) = "MRZTZIZ UZOOH": GOSUB 360
  236. 2360  VTAB 1: HTAB 4: PRINT W$
  237. 2370  FOR I = 1 TO 21: VTAB I: HTAB 3 +I: PRINT  SPC( 7);: VTAB I +1: HTAB 4 +I: PRINT W$;
  238. 2380  GOSUB 450: GOSUB 120: IF R >0  OR W >1  THEN 2400
  239. 2390  NEXT I: GOSUB 460: GOSUB 310: GOTO 2360
  240. 2400  GOSUB 300:AN = 1:P$(1) = "YFT": GOSUB 360:W$ = P$(1)
  241. 2410 AN = 2:P$(1) = "QRGGVIYFT":P$(2) = "QRGGVI YFT": GOSUB 360
  242. 2420  VTAB 12: HTAB 18: PRINT W$
  243. 2430  VTAB 12: HTAB 18: PRINT  SPC( 3);: VTAB 13: HTAB 18: PRINT W$
  244. 2450  GOSUB 120: IF R >0  OR W >1  THEN 2470
  245. 2460  GOTO 2430
  246. 2470  GOSUB 300:AN = 1:P$(1) = "TLLW-YBV": GOSUB 360:W$ = P$(1)
  247. 2480 AN = 3:P$(1) = "DZEV TLLW-YBV":P$(2) = "DZERMT TLLW-YBV":P$(3) = "GL DZEV TLLW-YBV": GOSUB 360
  248. 2490  GOSUB 430
  249. 2500  FOR I = 0 TO 10:R(0,I) = 3 * SIN(I *.628) +12:R(0,I +10) = R(0,I): NEXT I
  250. 2510  FOR I = 1 TO  LEN(W$): VTAB R(0,I): HTAB 15 +I: PRINT L$(I);: NEXT I
  251. 2520  FOR I = 0 TO 9: FOR J = 1 TO  LEN(W$): VTAB R(0,I +J): HTAB 15 +J: PRINT " ";
  252. 2530  VTAB R(0,I +J +1): HTAB 15 +J: PRINT L$(J);: NEXT J
  253. 2540  GOSUB 120: IF R >0  OR W >1  THEN 2560
  254. 2550  NEXT I: GOTO 2520
  255. 2560  GOSUB 300:AN = 1:P$(1) = "XZIG": GOSUB 360:W$ = P$(1):P$(1) = "SLIHV": GOSUB 360:W1$ = P$(1)
  256. 2570 AN = 3:P$(1) = "KFG GSV XZIG YVULIV GSV SLIHV":P$(2) = "KFGGRMT GSV XZIG YVULIV GSV SLIHV"
  257. 2580 P$(3) = "GL KFG GSV XZIG YVULIV GSV SLIHV": GOSUB 360
  258. 2590  VTAB 12: HTAB 6: PRINT W1$: VTAB 12: HTAB 30: PRINT W$
  259. 2600  FOR I = 30 TO 2  STEP  -1: VTAB 12 -(I <13) -(I <12): HTAB I: PRINT  SPC( 4);
  260. 2610  VTAB 12 -(I <14) -(I <13): HTAB I -1: PRINT W$;
  261. 2620  GOSUB 120: IF R >0  OR W >1  THEN 2660
  262. 2630  GOSUB 450: NEXT I
  263. 2640  FOR I = 10 TO 11: VTAB I: HTAB 1: PRINT  SPC( 4);: VTAB I +1: HTAB 1: PRINT W$;: NEXT I
  264. 2650  GOSUB 470: GOSUB 310: GOTO 2590
  265. 2660  GOSUB 300:AN = 1:P$(1) = "XLNRX": GOSUB 360:W$ = P$(1)
  266. 2670 AN = 2:P$(1) = "HGZMW-FK XLNRX":P$(2) = "HGZMW FK XLNRX": GOSUB 360
  267. 2680  GOSUB 430
  268. 2690  VTAB 12: HTAB 18: PRINT W$: GOSUB 460
  269. 2700  FOR I = 1 TO  LEN(W$) -1:R(0,I) = 12:C(0,I) = 22 -I: FOR J = 1 TO I: VTAB R(0,I): HTAB C(0,I): PRINT " ";
  270. 2710 R(0,I) = R(0,I) -1:C(0,I) = C(0,I) +1: VTAB R(0,I): HTAB C(0,I): PRINT L$( LEN(W$) -I);: NEXT J: GOSUB 500: GOSUB 450
  271. 2720  GOSUB 120: IF R >0  OR W >1  THEN 2740
  272. 2730  GOSUB 450: NEXT I: GOSUB 470: GOSUB 310: GOTO 2690
  273. 2740  GOSUB 300:AN = 1:P$(1) = "TILDRMT": GOSUB 360:W$ = P$(1):P$(1) = "OVZK": GOSUB 360:W1$ = P$(1):P$(1) = "YLFMW": GOSUB 360:W2$ = P$(1)
  274. 2750 P$(1) = "TILDRMT YB OVZKH ZMW YLFMWH": GOSUB 360
  275. 2760  FOR I = 10 TO 28  STEP 6: VTAB 11: HTAB I: PRINT W1$: VTAB 13: HTAB I: PRINT W2$: NEXT I
  276. 2770  VTAB 12: HTAB 1: PRINT W$
  277. 2780  FOR I = 1 TO 33: VTAB 12: HTAB I: PRINT  SPC( 7): VTAB 12: HTAB I +1: PRINT W$
  278. 2790  GOSUB 120: IF R >0  OR W >1  THEN 2820
  279. 2800  GOSUB 450: NEXT I: GOSUB 460: VTAB 12: HTAB 34: PRINT  SPC( 7): GOTO 2770
  280. 2810  GOSUB 450: NEXT I: GOSUB 460: GOSUB 310: GOTO 2770
  281. 2820  GOSUB 300:AN = 1:P$(1) = "DZTLM": GOSUB 360:W$ = P$(1)
  282. 2830 P$(1) = "XRIXOV GSV DZTLMH": GOSUB 360
  283. 2840  FOR I = 1 TO 8:R(0,I) =  INT( RND(1) *20 +1):C(0,I) =  INT( RND(1) *35 +1): NEXT I
  284. 2850 R(1,1) = 2:R(1,2) = 6:R(1,3) = 11:R(1,4) = 16:R(1,5) = 20:R(1,6) = 16:R(1,7) = 11:R(1,8) = 6
  285. 2860 C(1,1) = 18:C(1,2) = 25:C(1,3) = 27:C(1,4) = 25:C(1,5) = 18:C(1,6) = 11:C(1,7) = 9:C(1,8) = 11
  286. 2870  FOR I = 1 TO 8:X(I) = (C(1,I) -C(0,I))/20:Y(I) = (R(1,I) -R(0,I))/20: NEXT I
  287. 2880  FOR I = 1 TO 8: VTAB R(0,I): HTAB C(0,I): PRINT W$: NEXT I: GOSUB 460
  288. 2890  FOR I = 1 TO 20: FOR J = 1 TO 8: VTAB R(0,J): HTAB C(0,J): PRINT  SPC( 5):R(0,J) = R(0,J) +Y(J):C(0,J) = C(0,J) +X(J): VTAB R(0,J): HTAB C(0,J): PRINT W$: NEXT J
  289. 2900  GOSUB 120: IF R >0  OR W >1  THEN 2920
  290. 2910  NEXT I: GOSUB 470: GOSUB 310: GOTO 2840
  291. 2920  GOSUB 300:AN = 1:P$(1) = "YLLN": GOSUB 360:W$ = P$(1)
  292. 2930 AN = 3:P$(1) = "OLDVI GSV YLLN":P$(2) = "OLDVIRMT GSV YLLN":P$(3) = "GL OLDVI GSV YLLN": GOSUB 360
  293. 2940  VTAB 12: HTAB 15: PRINT W$: GOSUB 460
  294. 2950  FOR I = 12 TO 21: VTAB I: HTAB 3 +I: PRINT  SPC( 4);: VTAB I +1: HTAB 4 +I: PRINT W$;
  295. 2960  GOSUB 450: GOSUB 120: IF R >0  OR W >1  THEN 2980
  296. 2970  GOSUB 460: NEXT I: GOSUB 470: GOSUB 310: GOTO 2940
  297. 2980  GOSUB 300:AN = 1:P$(1) = "ORERMT": GOSUB 360:W$ = P$(1):P$(1) = "SZMW": GOSUB 360:W1$ = P$(1):P$(1) = "NLFGS": GOSUB 360:W2$ = P$(1)
  298. 2990 P$(1) = "ORERMT UILN SZMW GL NLFGS": GOSUB 360
  299. 3000  VTAB 12: HTAB 1: PRINT W1$;W$
  300. 3010  VTAB 12: HTAB 35: PRINT W2$: GOSUB 460
  301. 3020  FOR I = 5 TO 28: VTAB 12: HTAB I: PRINT  SPC( 6);: VTAB 12: HTAB I +1: PRINT W$;
  302. 3030  GOSUB 450: GOSUB 120: IF R >0  OR W >1  THEN 3050
  303. 3040  NEXT I: GOSUB 470: GOSUB 310: GOTO 3000
  304. 3050  GOSUB 300:AN = 1:P$(1) = "RG": GOSUB 360:W$ = P$(1):P$(1) = "YOZXP": GOSUB 360:W1$ = P$(1):P$(1) = "DSRGV": GOSUB 360:W2$ = P$(1)
  305. 3060 AN = 2:P$(1) = "KFG RG WLDM RM YOZXP ZMW DSRGV":P$(2) = "KFGGRMT RGWLDM RM YOZXP ZMW DSRGV": GOSUB 360
  306. 3070  VTAB 21: HTAB 11: PRINT W2$;: HTAB 20: PRINT W1$
  307. 3080  VTAB 1: HTAB 37: PRINT W$: GOSUB 460
  308. 3090  FOR I = 1 TO 20: VTAB I: HTAB 38 -I: PRINT  SPC( 2): VTAB I +1: HTAB 37 -I: PRINT W$
  309. 3100  GOSUB 120: IF R >0  OR W >1  THEN 3120
  310. 3110  NEXT I: GOSUB 470: VTAB 21: HTAB 17: PRINT  SPC( 2): GOTO 3080
  311. 3120  GOSUB 300:AN = 1:P$(1) = "TLHKVO": GOSUB 360:W$ = P$(1)
  312. 3130 AN = 2:P$(1) = "HKIVZW GSV TLHKVO":P$(2) = "HKIVZWRMT GSV TLHKVO": GOSUB 360
  313. 3140  VTAB 12: HTAB 17: PRINT W$
  314. 3150  GOSUB 430
  315. 3160  FOR I = 1 TO  LEN(W$)/2: FOR J = 16 +I TO I *6 -1  STEP  -1: VTAB 12: HTAB J: PRINT " ";: VTAB 12: HTAB 39 -J: PRINT " ";
  316. 3170  VTAB 12: HTAB J -1: PRINT L$(I);: VTAB 12: HTAB 40 -J: PRINT L$(7 -I);: GOSUB 120: IF R >0  OR W >1  THEN 3190
  317. 3180  NEXT J,I: GOSUB 470: GOSUB 310: GOTO 3140
  318. 3190  GOSUB 300:AN = 1:P$(1) = "RMHFOG": GOSUB 360:W$ = P$(1):P$(1) = "RMQFIB": GOSUB 360:W1$ = P$(1)
  319. 3200 AN = 3:P$(1) = "ZWW RMHFOG GL RMQFIB":P$(2) = "ZWWRMT RMHFOG GL RMQFIB":P$(3) = "GL ZWW RMHFOG GL RMQFIB": GOSUB 360
  320. 3210  VTAB 5: HTAB 24: PRINT W1$
  321. 3220  VTAB 22: HTAB 1: PRINT W$: GOSUB 460
  322. 3230  FOR I = 22 TO 6  STEP  -1: VTAB I: HTAB 23 -I: PRINT  SPC( 6): VTAB I -1: HTAB 24 -I: PRINT W$
  323. 3240  GOSUB 120: GOSUB 450: IF R >0  OR W >1  THEN 3260
  324. 3250  NEXT I: GOSUB 480: GOSUB 310: GOTO 3210
  325. 3260  GOSUB 300:AN = 1:P$(1) = "DZRHGORMV": GOSUB 360:W$ = P$(1)
  326. 3270 AN = 2:P$(1) = "HZTTRMT DZRHGORMV":P$(2) = "Z HZTTRMT DZRHGORMV": GOSUB 360
  327. 3280  FOR I = 1 TO  LEN(W$):L$(I) =  MID$ (W$,I,1):C(0,I) = I +15: NEXT I
  328. 3290  VTAB 12: HTAB 16: PRINT W$: GOSUB 460
  329. 3300  FOR I = 0 TO 3: FOR J = 5 TO 5 +I
  330. 3310  VTAB 17 +I -J: HTAB C(0,10 -J): PRINT " ";: VTAB 17 +I -J: HTAB C(0,J): PRINT " ";
  331. 3320  VTAB 18 +I -J: HTAB C(0,10 -J): PRINT L$(10 -J);: VTAB 18 +I -J: HTAB C(0,J): PRINT L$(J);: NEXT J
  332. 3330  GOSUB 120: GOSUB 460: IF R >0  OR W >1  THEN 3350
  333. 3340  NEXT I: GOSUB 460: GOSUB 310: GOTO 3290
  334. 3350  GOSUB 300:AN = 1:P$(1) = "HRWV": GOSUB 360:W$ = P$(1):P$(1) = "QLPV": GOSUB 360:W1$ = P$(1)
  335. 3360 AN = 2:P$(1) = "HRWV HKORGGRMT QLPV":P$(2) = "Z HRWV HKORGGRMT QLPV": GOSUB 360
  336. 3370  GOSUB 430
  337. 3380  VTAB 12: HTAB 18: PRINT W1$
  338. 3390  FOR I = 1 TO  LEN(W$): VTAB I: HTAB 20: PRINT L$(I): NEXT I: GOSUB 460
  339. 3400  FOR I = 1 TO 18: IF I = 8  THEN  VTAB 12: HTAB 18: PRINT  LEFT$(W1$,2);" "; RIGHT$(W1$, LEN(W1$) -2)
  340. 3410  FOR J =  LEN(W$) TO 1  STEP  -1: VTAB I +J -1: HTAB 20: PRINT " ";: VTAB I +J: HTAB 20: PRINT L$(J);: NEXT J
  341. 3420  GOSUB 120: GOSUB 450: IF R >0  OR W >1  THEN 3450
  342. 3430  NEXT I: GOSUB 460: GOSUB 310: GOTO 3380
  343. 3440  REM  * PROGRAM CONCLUSION WITH OPPORTUNITY TO PRINT ANSWERS *
  344. 3450  TEXT : HOME : VTAB 8: HTAB 12: PRINT "That is the end."
  345. 3460  VTAB 22: HTAB 1: PRINT "To print a list of the answers, press A.";
  346. 3470  PRINT "Any other key merely ends the program.";
  347. 3480 K =  PEEK( -16384): IF K <128  THEN 3480
  348. 3490  POKE  -16368,0
  349. 3500  IF K < >225  AND K < >193  THEN 3590
  350. 3510  HOME : PRINT : VTAB 11: HTAB 1: PRINT "(Type 0 for the screen.)"
  351. 3520  VTAB 10: HTAB 1: PRINT "In which slot is your printer? ";: GET S$
  352. 3530 S =  VAL(S$): IF S <0  OR S >7  THEN 3510
  353. 3540  PRINT : PRINT  CHR$(4);"PR#";S
  354. 3550 K = 1:J = 30: IF S = 0  THEN J = 15
  355. 3560  PRINT : PRINT : FOR I = K TO J: PRINT A$(I): NEXT I
  356. 3570  IF J = 15  THEN K = 16:J = 30: PRINT : PRINT "Press a key to continue...";: GET A$: GOTO 3560
  357. 3580  PRINT : PRINT  CHR$(4);"PR#0"
  358. 3590  END 
  359. 3600  REM  * ROUTINE TO CODE ANY DIRECTLY TYPED PHRASE *
  360. 3610 AN = 1:P$(1) = A$: GOSUB 360: PRINT P$(1): END