home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 91 / SGDS 91.2mg / SDGS.91 / SDB91 / B / JEWEL.HUNT (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1989-03-20  |  11.7 KB  |  381 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 0  ROT= 0: SPEED= 255: REM <CTRL-0x0d>(C)1988
  2. 100  PRINT  CHR$(21): IF  PEEK(176) >63  THEN  PRINT "TOO BIG. HGR2 WILL KILL LAST LINES.": STOP 
  3. 110  HGR2 : CALL 2304: POKE 48688, PEEK(0): POKE 48689, PEEK(1): LOMEM: 24576
  4. 130  CALL 2260: REM GSMONO
  5. 140  POKE 104,14: GOTO 1
  6. 150  CALL 2281: REM GSCOLR
  7. 160  PRINT  CHR$(4)"BYE"d"BYE"d SPEED= <CTRL-0x08> DEL h`8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF ^ TAB(  IF ) TAB( <CTRL-0x09>  PLOT ) TAB( `8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF _ TAB(  IF ) TAB( ) SIN PLOT ) TAB( `"
  8. 36286  <<CTRL-0x09> IF 1 GET  PLOT  SGN<CTRL-0x09> SPEED= 3 DEL 
  9. 389  SPEED= 
  10. 20653  TAB(  IF R TAB(  IF W TAB(  ONERR  ASC -@ = <CTRL-0x04> IF U TAB( ` IF T TAB(  SPEED=   DEL  ASC`) PLOT  PLOT <CTRL-0x09> J<UNKNOWN TOKEN> ONERR <UNKNOWN TOKEN>H ONERR  STR$) END  DEL <UNKNOWN TOKEN> IF  PLOT <CTRL-0x09> -  HGR2 u ONERR %  TO <UNKNOWN TOKEN> DEL & ONERR )8 RIGHT$<CTRL-0x04><CTRL-0x18>e ASC DEL '<CTRL-0x18> ONERR  e$e& DEL & SPEED= 
  11. 3593  PLOT <CTRL-0x09>. HLIN <CTRL-0x09><CTRL-0x0e> PLOT <CTRL-0x09>. HLIN <CTRL-0x09><CTRL-0x0e> PLOT <CTRL-0x09>. HLIN <CTRL-0x09> ONERR <UNKNOWN TOKEN>)<CTRL-0x0f>i<CTRL-0x09>m HLIN <CTRL-0x09> PLOT  HLIN <CTRL-0x09> VTAB 
  12. 3517 <CTRL-0x0a>H ONERR 2 -? = <CTRL-0x04>hIHh PLOT <UNKNOWN TOKEN><CTRL-0x09> LOMEM: <UNKNOWN TOKEN> TAB( <CTRL-0x03> HGR2 <CTRL-0x07> COLOR= 
  13. 64333 <CTRL-0x09> COLOR= 
  14. 9873 <CTRL-0x18> SPEED= <CTRL-0x04>e' DEL ' LEFT$ TAN<CTRL-0x08> =  > ?<UNKNOWN TOKEN> -<CTRL-0x0c><UNKNOWN TOKEN><CTRL-0x0f> -<CTRL-0x14><UNKNOWN TOKEN>"h DEL <UNKNOWN TOKEN> ?<UNKNOWN TOKEN><CTRL-0x09> END L<UNKNOWN TOKEN><UNKNOWN TOKEN> X<UNKNOWN TOKEN>8 ONERR # VAL" STORE  RESUME ! J<UNKNOWN TOKEN> GR  = <UNKNOWN TOKEN> X<UNKNOWN TOKEN>L +<CTRL-0x09> SPEED= 
  15. 8837  SPEED= ( DEL ! SPEED= <CTRL-0x18> DEL #L +<CTRL-0x09>
  16. 3084 <CTRL-0x0c>
  17. 13107 3<CTRL-0x12>?<CTRL-0x12><CTRL-0x12>?<CTRL-0x12>
  18. 7683 0<CTRL-0x1f><CTRL-0x0c>
  19. 3096 <CTRL-0x06>33
  20. 7683 <CTRL-0x03>><CTRL-0x0c>
  21. 12 
  22. 1542 <CTRL-0x06><CTRL-0x0c><CTRL-0x18>
  23. 6168 <CTRL-0x18><CTRL-0x0c><CTRL-0x06>
  24. 16140 <CTRL-0x0c><CTRL-0x1e>
  25. 16140 ?<CTRL-0x0c><CTRL-0x0c>
  26. 12 
  27. 62 <CTRL-0x1c><CTRL-0x1c><CTRL-0x1c>
  28. 3096 <CTRL-0x06><CTRL-0x03><CTRL-0x03>
  29. 13107 33<CTRL-0x0c>
  30. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x1e>
  31. 7216 <CTRL-0x06><CTRL-0x03>?
  32. 7216 03<CTRL-0x1e>
  33. 13107 ?00
  34. 12319 03<CTRL-0x1e>
  35. 7939 33<CTRL-0x1e>
  36. 3096 <CTRL-0x0c><CTRL-0x0c><CTRL-0x0c>
  37. 7731 33<CTRL-0x1e>
  38. 15923 03<CTRL-0x1e><CTRL-0x0c><CTRL-0x0c>
  39. 7168 <CTRL-0x18><CTRL-0x0c><CTRL-0x18><CTRL-0x0c><CTRL-0x06><CTRL-0x03><CTRL-0x06><CTRL-0x0c><CTRL-0x18>
  40. 30 <CTRL-0x1e><CTRL-0x1e>
  41. 6156 0<CTRL-0x18><CTRL-0x0c><CTRL-0x06>
  42. 7216 <CTRL-0x0c>
  43. 13086 ;;<CTRL-0x03>3<CTRL-0x1e>
  44. 16179 333
  45. 7987 33<CTRL-0x1f>
  46. 771 <CTRL-0x03>3<CTRL-0x1e>
  47. 13107 33<CTRL-0x1f>
  48. 3843 <CTRL-0x03><CTRL-0x03>?
  49. 3843 <CTRL-0x03><CTRL-0x03><CTRL-0x03>
  50. 15107 33<CTRL-0x1e>
  51. 16179 333
  52. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x1e>
  53. 12336 03<CTRL-0x1e>
  54. 3871 <CTRL-0x1f>33
  55. 771 <CTRL-0x03><CTRL-0x03>?
  56. 13119 333
  57. 13107 333
  58. 13107 33<CTRL-0x1e>
  59. 7987 <CTRL-0x03><CTRL-0x03><CTRL-0x03>
  60. 13107 3?<CTRL-0x1e>p<CTRL-0x1f>33<CTRL-0x1f><CTRL-0x1f>33
  61. 7683 00<CTRL-0x1f>
  62. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x0c>
  63. 13107 33<CTRL-0x1e>
  64. 13107 3<CTRL-0x1e><CTRL-0x0c>
  65. 13107 ??3
  66. 3102 <CTRL-0x1e>33
  67. 7731 <CTRL-0x0c><CTRL-0x0c><CTRL-0x0c>
  68. 3096 <CTRL-0x06><CTRL-0x03>?
  69. 1542 <CTRL-0x06><CTRL-0x06><CTRL-0x1e>
  70. 3078 <CTRL-0x18>00
  71. 6168 <CTRL-0x18><CTRL-0x18><CTRL-0x1e>
  72. 51 
  73. 1550 <CTRL-0x0c>
  74. 13118 >
  75. 13087 33<CTRL-0x1f><CTRL-0x1e>3<CTRL-0x03>3<CTRL-0x1e>
  76. 13118 33><CTRL-0x1e>3?<CTRL-0x03>>
  77. 7942 <CTRL-0x06><CTRL-0x06><CTRL-0x06>>33>0<CTRL-0x1e><CTRL-0x03><CTRL-0x03><CTRL-0x1f>3333
  78. 3086 <CTRL-0x0c><CTRL-0x0c><CTRL-0x1e>
  79. 6172 <CTRL-0x18><CTRL-0x18><CTRL-0x18><CTRL-0x0e><CTRL-0x03><CTRL-0x03>33<CTRL-0x0f>33
  80. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x1e>3??33<CTRL-0x1f>3333<CTRL-0x1e>333<CTRL-0x1e><CTRL-0x1f>33<CTRL-0x1f><CTRL-0x03><CTRL-0x03>
  81. 13107 >00
  82. 819 <CTRL-0x03><CTRL-0x03>><CTRL-0x03><CTRL-0x1e>0<CTRL-0x1f>
  83. 1567 <CTRL-0x06><CTRL-0x06><CTRL-0x1c>3333>333<CTRL-0x1e><CTRL-0x0c>33??33<CTRL-0x1e><CTRL-0x0c><CTRL-0x1e>3333>0<CTRL-0x1e>
  84. 3096 <CTRL-0x06>?
  85. 1548 <CTRL-0x0c><CTRL-0x0c><CTRL-0x18>
  86. 3084 <CTRL-0x0c><CTRL-0x0c><CTRL-0x0c>
  87. 6156 <CTRL-0x0c><CTRL-0x0c><CTRL-0x06>
  88. 16191 ???
  89. 1670   GET  COS <UNKNOWN TOKEN> ASC PR#  RESUME <CTRL-0x06> XDRAW 
  90. 50928 <CTRL-0x03>0}  NOT <CTRL-0x02>0y ONERR <CTRL-0x01> -<CTRL-0x03> HGR2 s<CTRL-0x18>e<CTRL-0x03> -) GOSUB l ONERR 
  91. 26256 <CTRL-0x18>e<CTRL-0x02> -<CTRL-0x19> GOSUB _ DEL # ONERR <CTRL-0x02> DEL " ONERR <CTRL-0x01> DEL ! ONERR <CTRL-0x03> DEL   ASC  ASC"  NOT !  NOT !  STOP <CTRL-0x0d> COLOR= <CTRL-0x18> VTAB <CTRL-0x03> GR  POKE  ASC<CTRL-0x0d> XDRAW <CTRL-0x06> * = <UNKNOWN TOKEN>  DRAW <CTRL-0x0d> = <UNKNOWN TOKEN> VTAB <CTRL-0x03> CLEAR  PEEK<CTRL-0x0d> XDRAW <CTRL-0x06> * = <UNKNOWN TOKEN>  STOP <CTRL-0x0d> ONERR <CTRL-0x02> AT # GOSUB <CTRL-0x0a> COLOR= <CTRL-0x08> GR   DRAW <CTRL-0x0d> = <UNKNOWN TOKEN><UNKNOWN TOKEN><UNKNOWN TOKEN> COLOR= <CTRL-0x18> VTAB <CTRL-0x03> GR  POKE /<CTRL-0x0d> XDRAW <CTRL-0x06> * = <UNKNOWN TOKEN>  DRAW <CTRL-0x0d> = <UNKNOWN TOKEN>  NOT # X<UNKNOWN TOKEN>` INPUT <CTRL-0x06> ONERR <CTRL-0x09> LOMEM: <CTRL-0x01> GR  HGR <UNKNOWN TOKEN> GR  ONERR <CTRL-0x08> HGR <UNKNOWN TOKEN> GR  = <UNKNOWN TOKEN> ONERR <CTRL-0x07> HGR <UNKNOWN TOKEN><CTRL-0x18> ONERR <UNKNOWN TOKEN>i<CTRL-0x04> DEL <UNKNOWN TOKEN> LOMEM: <CTRL-0x06>` ONERR <CTRL-0x02> ASC<CTRL-0x02>  TO <UNKNOWN TOKEN> ONERR )8 RIGHT$<CTRL-0x04><CTRL-0x18>e ASC DEL <UNKNOWN TOKEN> ONERR (e<CTRL-0x03> DEL <UNKNOWN TOKEN>`<CTRL-0x07>
  92. 28672 CpcqcqcqcqcqcqcqcqCp<CTRL-0x03>
  93. 30720 ,<CTRL-0x0e>
  94. 0  POKE 104,8: POKE 48688,240: POKE 48689,253: RUN 
  95. 1  RESTORE : REM LEAVE THIS HERE IF YOU USE DATA
  96. 2  REM TO QUIT:POKE104,8:GOTO150
  97. 3  REM BLOAD IMAGES @ $DCB
  98. 4  REM BLOAD BOXRTN @ $D00
  99. 5  REM BLOAD FONT   @ $A00
  100. 10 BOX = 3328: INVERSE 
  101. 20  REM <CTRL-0x0a><CTRL-0x0a>JEWEL HUNT BEGINS HERE<CTRL-0x0a>
  102. 30  REM <CTRL-0x0a><CTRL-0x0a>INITIALIZE CONSTANTS, POINTERS, FLAGS AND VARIABLES<CTRL-0x0a>
  103. 40 ESCAPE$ =  CHR$(27):SP$ =  CHR$(32):RA$ =  CHR$(21):DA$ =  CHR$(10):LA$ =  CHR$(8):UA$ =  CHR$(11):RTN$ =  CHR$(13):CK = 49168:D$ =  CHR$(4):RL = 38:F$ = "jewel.hunt.rnd":PI = 4 * ATN(1):AD = 12:AS = 12:BC = 49204
  104. 50  REM --- INITIALIZE CONSTANTS AND ARRAYS ---
  105. 60  DIM FR%(34),LR%(34),F(10)
  106. 70  REM --- INITIALIZE TEXT FILE POINTERS ---
  107. 80  FOR I = 0 TO 34: READ FR%(I),LR%(I): NEXT I
  108. 90  REM --- FUNCTIONS ---
  109. 100  DEF  FN D(X) =  INT(X * RND(1) +1)
  110. 110  DEF  FN R(X) =  FN D(6) +(X >1) * FN D(6) +(X >2) * FN D(6)
  111. 120  REM <CTRL-0x0a><CTRL-0x0a>PRINT TITLE SCREEN<CTRL-0x0a>
  112. 130  PRINT D$;"bload box.round": POKE BC,16 * INT( PEEK(BC)/16) +15: PRINT  CHR$(20);: HOME : PRINT  CHR$(12);: HCOLOR= 0
  113. 140  FOR A = 0 TO 90  STEP 10
  114. 150 A1 = A *PI/180:C =  COS(A1):S =  SIN(A1)
  115. 160  HPLOT 0,0 TO 30 *S,30 *C
  116. 170  HPLOT 279,0 TO 279 -30 *S,30 *C
  117. 180  HPLOT 279,191 TO 279 -30 *S,191 -30 *C
  118. 190  HPLOT 0,191 TO 30 *S,191 -30 *C
  119. 200  HPLOT 139,0 TO 139 -30 *(1 -C),60 *(1 -S)
  120. 210  HPLOT 139,0 TO 139 +30 *(1 -C),60 *(1 -S)
  121. 220  HPLOT 139,191 TO 139 -30 *(1 -C),191 -60 *(1 -S)
  122. 230  HPLOT 139,191 TO 139 +30 *(1 -C),191 -60 *(1 -S)
  123. 240  HPLOT 0,95 TO 60 *(1 -C),95 -30 *(1 -S)
  124. 250  HPLOT 0,95 TO 60 *(1 -C),95 +30 *(1 -S)
  125. 260  HPLOT 279,95 TO 279 -60 *(1 -C),95 -30 *(1 -S)
  126. 270  HPLOT 279,95 TO 279 -60 *(1 -C),95 +30 *(1 -S)
  127. 280  NEXT A
  128. 290  FOR A = 0 TO 360  STEP 10
  129. 300 A1 = A *PI/180:C =  COS(A1):S =  SIN(A1)
  130. 310  HPLOT 139,95 TO 139 -139 *C,95 -95 *S
  131. 320  NEXT A
  132. 330  CALL BOX,1,6,40,14:PTR = 0:CB = 15: GOSUB 20000
  133. 340 A$ = "Do you want instructions?": GOSUB 17000: ON A$ =  CHR$(27) GOTO 14000: IF A = 0  THEN  GOSUB 11000
  134. 350  REM <CTRL-0x0a><CTRL-0x0a>INITIALIZE MAIN SCREEN<CTRL-0x0a>
  135. 360  PRINT  CHR$(20);: HOME : PRINT  CHR$(12);
  136. 370  GOSUB 19000: GOTO 1000
  137. 990  REM <CTRL-0x0a><CTRL-0x0a>ENTRANCE TO MAGICIAN'S LAIR<CTRL-0x0a>
  138. 1000 PTR = 1:CB = 4: GOSUB 20050
  139. 1010 OP$(1) = " North, go ":OP$(2) = " South, go ":OP$(3) = " Break down & cry ":N = 3
  140. 1020  GOSUB 18000
  141. 1030  ON I +1 GOTO 1050,2000,1070,1090
  142. 1040  REM --- ESCAPE ---
  143. 1050  GOSUB 13000: GOTO 1020
  144. 1060  REM --- GO SOUTH ---
  145. 1070 PTR = 2:CB = 13: GOSUB 20050: GOTO 1020
  146. 1080  REM --- CRY/DIE ---
  147. 1090 PTR = 3:CB = 1: GOSUB 20050:AS = 0:AD = 0: GOSUB 19000: GOTO 14000
  148. 1100  GOSUB 12000: GOTO 16000
  149. 1990  REM <CTRL-0x0a><CTRL-0x0a>FOUR WAY<CTRL-0x0a>
  150. 2000 PTR = 4:CB = 8: GOSUB 20050:OP$(1) = " North, go ":OP$(2) = " South, go ":OP$(3) = " East, go ":OP$(4) = " West, go ":N = 4
  151. 2010  GOSUB 18000: ON I +1 GOTO 2030,4000,1000,5000,3000
  152. 2020  REM --- ESCAPE ---
  153. 2030  GOSUB 13000: GOTO 2010
  154. 2990  REM <CTRL-0x0a><CTRL-0x0a>SHIELD ROOM<CTRL-0x0a>
  155. 3000  IF F(3) < >0  THEN 3100
  156. 3010 PTR = 5:CB = 9: GOSUB 20050:OP$(1) = " Open case door ":OP$(2) = " Cut hole in case ":OP$(3) = " North, go ":OP$(4) = " East, go ":N = 4
  157. 3020  GOSUB 18000: ON I +1 GOTO 3040,3060,3080,4000,2000
  158. 3030  REM --- ESCAPE ---
  159. 3040  GOSUB 13000: GOTO 3020
  160. 3050  REM --- OPEN DOOR ---
  161. 3060 PTR = 6:CB = 1: GOSUB 20050:AS = 0:AD = 0: GOSUB 19000: GOTO 14000
  162. 3070  REM --- CUT HOLE ---
  163. 3080 PTR = 7:CB = 12: GOSUB 20050:F(3) = 1: GOSUB 19000: GOSUB 12000
  164. 3090  REM --- SHIELD NOT HERE ---
  165. 3100 PTR = 8:CB = 8: GOSUB 20050:OP$(1) = " North, go ":OP$(2) = " East, go ":N = 2
  166. 3110  GOSUB 18000: ON I +1 GOTO 3130,4000,2000
  167. 3120  REM --- ESCAPE ---
  168. 3130  GOSUB 13000: GOTO 3110
  169. 3990  REM <CTRL-0x0a><CTRL-0x0a>SWORD ROOM<CTRL-0x0a>
  170. 4000  IF F(4) < >0  THEN 4100
  171. 4010 PTR = 9:CB = 9: GOSUB 20050:OP$(1) = " White sword, get ":OP$(2) = " Black sword, get ":OP$(3) = " North, go ":OP$(4) = " South, go ":OP$(5) = " East, go ":N = 5
  172. 4020  GOSUB 18000: ON I +1 GOTO 4040,4060,4080,5000,3000,2000
  173. 4030  REM --- ESCAPE ---
  174. 4040  GOSUB 13000: GOTO 4020
  175. 4050  REM --- GET WHITE SWORD ---
  176. 4060 PTR = 10:CB = 12: GOSUB 20050:F(4) = 1: GOSUB 19000: GOSUB 12000: GOTO 4100
  177. 4070  REM --- GET BLACK SWORD ---
  178. 4080 PTR = 11:CB = 1: GOSUB 20050:AS = 0:AD = 0: GOSUB 19000: GOTO 14000
  179. 4090  REM --- WHITE SWORD NOT HERE ---
  180. 4100 PTR = 12:CB = 9: GOSUB 20050:OP$(1) = " Black sword, get ":OP$(2) = " North, go ":OP$(3) = " South, go ":OP$(4) = " East, go ":N = 4
  181. 4110  GOSUB 18000: ON I +1 GOTO 4130,4080,5000,3000,2000
  182. 4120  REM --- ESCAPE ---
  183. 4130  GOSUB 13000: GOTO 4110
  184. 4990  REM <CTRL-0x0a><CTRL-0x0a>GIANT ROOM<CTRL-0x0a>
  185. 5000  IF F(5) < >0  THEN 5250
  186. 5010  REM --- GIANT ALIVE ---
  187. 5020 PTR = 13:CB = 9: GOSUB 20050:OP$(1) = " Fight the giant ":OP$(2) = " East, go ":OP$(3) = " West, go ":OP$(4) = " Talk to giant ":N = 4
  188. 5030  GOSUB 18000: ON I +1 GOTO 5050,5080,2000,4000,5230
  189. 5040  REM --- ESCAPE ---
  190. 5050  GOSUB 13000: GOTO 5030
  191. 5060  REM --- FIGHT ---
  192. 5070  REM --- STARTING ATTRIBUTES ---
  193. 5080 GS = 30:GD = 8: POKE BC,16 * INT( PEEK(BC)/16) +1
  194. 5090  CALL BOX,1,1,40,12:D =  FN R(3): IF D >AD  THEN 5140
  195. 5100 DM = (F(4) = 1) * FN R(2) +(F(4) = 0) *( FN R(1) -4): IF DM <0  THEN DM = 0
  196. 5110  NORMAL : PRINT " You hit for ";DM;" points of damage! ": INVERSE 
  197. 5120 GS = GS -DM: IF GS < = 0  THEN  PRINT : POKE BC,16 * INT( PEEK(BC)/16) +12: PRINT " You slay the giant!! ":F(5) = 1: GOSUB 12000: GOTO 5250
  198. 5130  GOTO 5150
  199. 5140  PRINT " You missed the giant. "
  200. 5150 D =  FN R(3): IF D >GD  THEN 5200
  201. 5160 DM =  FN R(2) -1 -(F(3) = 1): NORMAL : PRINT " Giant hits for ";DM;" points of damage! ": INVERSE :AS = AS -DM: IF AS < = 0  THEN  PRINT :PTR = 14:CB = 1: GOSUB 20000
  202. 5170  IF AS >0  THEN  VTAB 15: HTAB 27: PRINT  RIGHT$(" " + STR$(AS),2);
  203. 5180  IF AS < = 0  THEN AS = 0:AD = 0: GOSUB 19000: GOTO 14000
  204. 5190  GOTO 5210
  205. 5200  PRINT " The giant missed you. "
  206. 5210  GOSUB 12000: GOTO 5090
  207. 5220  REM --- TALK (GRUNT?) ---
  208. 5230 PTR = 15:CB = 13: GOSUB 20050: GOTO 5030
  209. 5240  REM --- GIANT DEAD ---
  210. 5250 PTR = 16:CB = 8: GOSUB 20050:OP$(1) = " East, go ":OP$(2) = " West, go ":OP$(3) = " North, go ":N = 3
  211. 5260  GOSUB 18000: ON I +1 GOTO 5280,2000,4000,6000
  212. 5270  REM --- ESCAPE ---
  213. 5280  GOSUB 13000: GOTO 5260
  214. 5990  REM <CTRL-0x0a><CTRL-0x0a>LOCKED DOOR ROOM<CTRL-0x0a>
  215. 6000 PTR = 17:CB = 4: GOSUB 20050:OP$(1) = " North, go ":OP$(2) = " South, go ":OP$(3) = " East, go ":N = 3
  216. 6010  GOSUB 18000: ON I +1 GOTO 6030,9000,5000,6050
  217. 6020  REM --- ESCAPE ---
  218. 6030  GOSUB 13000: GOTO 6010
  219. 6040  REM --- GO EAST (OPEN DOOR) ---
  220. 6050  IF F(8) = 0  THEN  CALL BOX,1,1,40,12: PRINT "The door is locked.": GOTO 6010
  221. 6060  IF F(8) = 1  THEN PTR = 18:CB = 12: GOSUB 20050: GOSUB 12000: GOTO 7000
  222. 6990  REM <CTRL-0x0a><CTRL-0x0a>BEHIND THE GREEN DOOR ROOM<CTRL-0x0a>
  223. 7000  IF F(7) < >0  THEN 7090
  224. 7010  REM --- JEWEL HERE ---
  225. 7020 PTR = 19:CB = 6: GOSUB 20050:OP$(1) = " Jewel, get ":OP$(2) = " West, go ":N = 2
  226. 7030  GOSUB 18000: ON I +1 GOTO 7050,7070,6000
  227. 7040  REM --- ESCAPE ---
  228. 7050  GOSUB 13000: GOTO 7030
  229. 7060  REM --- GET JEWEL ---
  230. 7070 PTR = 20:CB = 9: GOSUB 20050:F(7) = 1: GOSUB 19000: GOSUB 12000: GOTO 7090
  231. 7080  REM --- JEWEL NOT HERE ---
  232. 7090 PTR = 21:CB = 4: GOSUB 20050:OP$(1) = " West, go ":N = 1
  233. 7100  GOSUB 18000: ON I +1 GOTO 7120,6000
  234. 7110  REM --- ESCAPE ---
  235. 7120  GOSUB 13000: GOTO 7100
  236. 7990  REM <CTRL-0x0a><CTRL-0x0a>KEY ROOM<CTRL-0x0a>
  237. 8000  IF F(8) < >0  THEN 8110
  238. 8010  REM --- KEY HERE ---
  239. 8020 PTR = 22:CB = 7: GOSUB 20050:OP$(1) = " Pick random key ":OP$(2) = " Collect all keys ":OP$(3) = " West, go ":N = 3
  240. 8030  GOSUB 18000: ON I +1 GOTO 8050,8070,8090,9000
  241. 8040  REM --- ESCAPE ---
  242. 8050  GOSUB 13000: GOTO 8030
  243. 8060  REM --- GET KEY ---
  244. 8070 PTR = 23:CB = 6: GOSUB 20050:F(8) = 1: GOSUB 19000: GOSUB 12000: GOTO 8110
  245. 8080  REM --- GET ALL KEYS (PIGGY!) ---
  246. 8090 PTR = 24:CB = 1: GOSUB 20050:AS = 0:AD = 0: GOSUB 19000: GOTO 14000
  247. 8100  REM --- KEY NOT HERE ---
  248. 8110 PTR = 22:CB = 7: GOSUB 20050:OP$(1) = " Collect all keys ":OP$(2) = " West, go ":N = 2
  249. 8120  GOSUB 18000: ON I +1 GOTO 8140,8090,9000
  250. 8130  REM --- ESCAPE ---
  251. 8140  GOSUB 13000: GOTO 8120
  252. 8990  REM <CTRL-0x0a><CTRL-0x0a>MAGICIAN'S ROOM<CTRL-0x0a>
  253. 9000  IF F(9) < >0  THEN 9430
  254. 9010  REM --- HERE'S HARRY! ---
  255. 9020 PTR = 25:CB = 9: GOSUB 20050:OP$(1) = " Fight magician ":OP$(2) = " South, go ":N = 2
  256. 9030  GOSUB 18000: ON I +1 GOTO 9050,9080,6000
  257. 9040  REM --- ESCAPE ---
  258. 9050  GOSUB 13000: GOTO 9030
  259. 9060  REM --- FIGHT MAGICIAN ---
  260. 9070  REM --- STARTING ATTRIBUTES ---
  261. 9080 MS = 10:MD = 12: POKE BC,16 * INT( PEEK(BC)/16) +1
  262. 9090 IW = 0: CALL BOX,1,1,40,12:D =  FN R(3): IF D >MD  THEN 9270
  263. 9100 SP =  FN D(4): ON SP GOTO 9120,9140,9160,9190
  264. 9110  REM --- DAZZLE SPELL ---
  265. 9120  NORMAL : PRINT " A flash of light blinds you! ": INVERSE :AD = AD -3:IW = 1: GOTO 9220
  266. 9130  REM --- FIRE SPELL ---
  267. 9140  NORMAL : PRINT " A fireball does 2 points of damage! ": INVERSE :AS = AS -2:IW = 1: GOTO 9220
  268. 9150  REM --- DROP WEAPON SPELL ---
  269. 9160  IF F(4) = 1  THEN  NORMAL : PRINT " Your sword flies from your hands! ": INVERSE :F(4) = 0:IW = 1: GOTO 9220
  270. 9170  GOTO 9270
  271. 9180  REM --- MAGIC FIST SPELL ---
  272. 9190 DM =  FN R(1) -2: IF DM <0  THEN DM = 0
  273. 9200  NORMAL : PRINT " You're hit for ";DM;" points of damage! ": INVERSE :AS = AS -DM:IW = 1: GOTO 9220
  274. 9210  REM --- ADVENTURER'S DEAD ---
  275. 9220  IF AS >0  THEN 9290
  276. 9230  IF SP = 2  THEN PTR = 26
  277. 9240  IF SP = 4  THEN PTR = 27
  278. 9250  PRINT :CB = 1: GOSUB 20000:AS = 0:AD = 0: GOSUB 19000: GOTO 14000
  279. 9260  REM --- FAILED SPELL ---
  280. 9270  PRINT " The magician's spell fails! "
  281. 9280  REM --- ADVENTURER ATTACKS ---
  282. 9290 D =  FN R(3): IF D >AD  THEN 9380
  283. 9300  REM --- ADVENTURER HITS! ---
  284. 9310 DM =  FN R(1) +(F(4) = 1) * FN R(1) +(F(4) = 0) *( -2): IF DM <0  THEN DM = 0
  285. 9320 MS = MS -DM: NORMAL : PRINT " You hit for ";DM;" points of damage! ": INVERSE 
  286. 9330  REM --- MAGICIAN'S DEAD ---
  287. 9340  IF MS >0  THEN 9400
  288. 9350  PRINT : POKE BC,16 * INT( PEEK(BC)/16) +12: PRINT " You slay the magician!! ":F(9) = 1: GOSUB 12000: IF IW = 1  THEN  GOSUB 19000
  289. 9360  GOTO 9430
  290. 9370  REM --- ADVENTURER MISSED ---
  291. 9380  PRINT " You missed the magician. "
  292. 9390  REM --- END OF BATTLE SEQUENCE ---
  293. 9400  IF IW = 1  THEN  GOSUB 19000
  294. 9410  GOSUB 12000: GOTO 9090
  295. 9420  REM --- HARRY'S HISTORY ---
  296. 9430 PTR = 28:CB = 8: GOSUB 20050:OP$(1) = " South, go ":OP$(2) = " East, go ":OP$(3) = " West, go ":N = 3
  297. 9440  GOSUB 18000: ON I +1 GOTO 9460,6000,8000,10000
  298. 9450  REM --- ESCAPE ---
  299. 9460  GOSUB 13000: GOTO 9440
  300. 9990  REM <CTRL-0x0a><CTRL-0x0a>EXIT FROM MAGICIAN'S LAIR<CTRL-0x0a>
  301. 10000 PTR = 29:CB = 13: GOSUB 20050:OP$(1) = " East, go ":OP$(2) = " West, go ":N = 2
  302. 10010  GOSUB 18000: ON I +1 GOTO 10030,9000,10050
  303. 10020  REM --- ESCAPE ---
  304. 10030  GOSUB 13000: GOTO 10010
  305. 10040  REM --- GO WEST (LEAVE) ---
  306. 10050  IF F(7) < >0  THEN 10090
  307. 10060  REM --- YOU DON'T HAVE THE JEWEL ---
  308. 10070  CALL BOX,1,1,40,21:PTR = 30:CB = 1: GOSUB 20000: GOTO 14000
  309. 10080  REM --- YOU DO HAVE THE JEWEL ---
  310. 10090  CALL BOX,1,1,40,21:PTR = 31:CB = 12: GOSUB 20000: GOSUB 22000: GOTO 14000
  311. 10990  REM <CTRL-0x0a><CTRL-0x0a>GAME INSTRUCTIONS<CTRL-0x0a>
  312. 11000  PRINT  CHR$(20);: HOME : PRINT  CHR$(12);:CB = 15: FOR PTR = 32 TO 34
  313. 11010  CALL BOX,1,1,40,21: GOSUB 20000: GOSUB 11030: IF A$ =  CHR$(27)  THEN PTR = 34
  314. 11020  NEXT PTR: RETURN 
  315. 11030  CALL BOX,1,22,40,3: HTAB 4: PRINT "Press a key to go on. ESC exits.";: GET A$: POKE CK,0: GOSUB 21000: RETURN 
  316. 11990  REM <CTRL-0x0a><CTRL-0x0a>PRESS ANY KEY<CTRL-0x0a>
  317. 12000  CALL BOX,1,22,40,3: HTAB 8: PRINT "Press any key to continue": GET A$: POKE CK,0: GOSUB 21000: RETURN 
  318. 12990  REM <CTRL-0x0a><CTRL-0x0a>QUIT GAME<CTRL-0x0a>
  319. 13000 A$ = "Do you want to quit?":T0$ = OP$(0):T1$ = OP$(1): GOSUB 17000:OP$(0) = T0$:OP$(1) = T1$: ON A = 0 GOTO 14000: ON A = 1 GOTO 13010
  320. 13010  GOSUB 21000: RETURN 
  321. 13990  REM <CTRL-0x0a><CTRL-0x0a>PLAY IT AGAIN, SAM?<CTRL-0x0a>
  322. 14000 A$ = "Do you want to play again?": GOSUB 17000: ON A = 0 GOTO 15000: ON A = 1 GOTO 16000
  323. 14990  REM <CTRL-0x0a><CTRL-0x0a>RERUN<CTRL-0x0a>
  324. 15000  RUN 
  325. 15990  REM <CTRL-0x0a><CTRL-0x0a>THE BIG GOODBYE<CTRL-0x0a>
  326. 16000  NORMAL : POKE 104,8: GOTO 150
  327. 16990  REM <CTRL-0x0a><CTRL-0x0a>YES OR NO<CTRL-0x0a>
  328. 17000  CALL BOX,1,22,40,3:W =  LEN(A$) +10:L = 20 - INT(W/2): HTAB L: PRINT A$;"  Yes  No"
  329. 17010 OH(0) = L + LEN(A$) +1:OP$(0) = " Yes ":OH(1) = OH(0) +5:OP$(1) = " No ":A = 0: HTAB OH(A): NORMAL : PRINT OP$(A): INVERSE 
  330. 17020  GET A$: POKE CK,0
  331. 17030  IF A$ = ESCAPE$  THEN 17100
  332. 17040  IF (A$ = SP$)  OR (A$ = RA$)  OR (A$ = DA$)  OR (A$ = LA$)  OR (A$ = UA$)  THEN  HTAB OH(A): PRINT OP$(A):A = 1 -A: HTAB OH(A): NORMAL : PRINT OP$(A): INVERSE : GOTO 17020
  333. 17050  IF A$ = RTN$  THEN 17100
  334. 17060  IF (A$ = "Y")  OR (A$ = "y")  THEN A = 0: GOTO 17100
  335. 17070  IF (A$ = "N")  OR (A$ = "n")  THEN A = 1: GOTO 17100
  336. 17080  REM --- BAD KEY ---
  337. 17090  GOSUB 23000: GOTO 17020
  338. 17100  RETURN 
  339. 17990  REM <CTRL-0x0a><CTRL-0x0a>GET OPTION<CTRL-0x0a>
  340. 18000  CALL BOX,1,22,40,3: HTAB 3: PRINT "Arrows move hilight, RETURN selects"
  341. 18010  CALL BOX,1,13,20,9: PRINT "ACTIONS": FOR I = 1 TO N: PRINT OP$(I);: IF  LEN(OP$(I)) <18  THEN  PRINT 
  342. 18020  NEXT I:I = 1: VTAB 14 +I: NORMAL : PRINT OP$(I): INVERSE 
  343. 18030  GET A$: POKE CK,0: IF A$ = ESCAPE$  THEN I = 0: GOTO 18130
  344. 18040  IF (A$ = RA$)  OR (A$ = DA$)  OR (A$ = SP$)  THEN  VTAB 14 +I: PRINT OP$(I):I = I +1 -N *(I = N): VTAB 14 +I: NORMAL : PRINT OP$(I): INVERSE : GOTO 18120
  345. 18050  IF (A$ = LA$)  OR (A$ = UA$)  THEN  VTAB 14 +I: PRINT OP$(I):I = I -1 +N *(I = 1): VTAB 14 +I: NORMAL : PRINT OP$(I): INVERSE : GOTO 18120
  346. 18060  IF A$ = RTN$  THEN 18130
  347. 18070  IF (A$ > = "a")  AND (A$ < = "z")  THEN A$ =  CHR$( ASC(A$) -( ASC("a") - ASC("A")))
  348. 18080  REM --- POWER USER INTERFACE ---
  349. 18090  FOR J = 1 TO N:K = I +J -N *((I +J) >N): IF A$ =  MID$ (OP$(K),2,1)  THEN  VTAB 14 +I: PRINT OP$(I):I = K: VTAB 14 +I: NORMAL : PRINT OP$(I): INVERSE :J = N:K =  -1
  350. 18100  NEXT J: IF K =  -1  THEN 18130
  351. 18110  GOSUB 23000
  352. 18120  GOTO 18030
  353. 18130  GOSUB 21000: RETURN 
  354. 18990  REM <CTRL-0x0a><CTRL-0x0a>REFRESH INVENTORY BOX<CTRL-0x0a>
  355. 19000  CALL BOX,21,13,20,9: PRINT "INVENTORY & STATUS";: PRINT  SPC( 4);"S:"; RIGHT$(" " + STR$(AS),2); SPC( 2);"D:"; RIGHT$(" " + STR$(AD),2)
  356. 19010  PRINT "Glass Cutter": IF F(3) = 1  THEN  PRINT "Shield"
  357. 19020  IF F(4) = 1  THEN  PRINT "White Sword"
  358. 19030  IF F(7) = 1  THEN  PRINT "Jewel"
  359. 19040  IF F(8) = 1  THEN  PRINT "Key"
  360. 19050  RETURN 
  361. 19990  REM <CTRL-0x0a><CTRL-0x0a>READ TEXT FROM DISK<CTRL-0x0a>
  362. 20000  POKE BC,16 * INT( PEEK(BC)/16) +CB: PRINT D$;"open";F$;",l";RL
  363. 20010  FOR I = FR%(PTR) TO LR%(PTR): PRINT D$;"read";F$;",r";I: FOR J = 1 TO RL: GET T$: PRINT T$;: NEXT J: NEXT I: PRINT 
  364. 20020  PRINT D$;"close";F$
  365. 20030  RETURN 
  366. 20040  REM --- DISPLAY IN DESCRIPTION BOX ---
  367. 20050  CALL BOX,1,1,40,12: GOSUB 20000: RETURN 
  368. 20990  REM <CTRL-0x0a><CTRL-0x0a>CLEAR DIALOG WINDOW<CTRL-0x0a>
  369. 21000  HCOLOR= 3: FOR J = 167 TO 191: HPLOT 0,J TO 279,J: NEXT J: HCOLOR= 0: RETURN 
  370. 21990  REM <CTRL-0x0a><CTRL-0x0a>LISSAJOU END SHOW<CTRL-0x0a>
  371. 22000 TB = 1:TE = 210:AX = 125:X0 = 140:WX = PI/15:AY = 20:Y0 = 141:WY = PI/7: DEF  FN X(T) = AX * SIN(WX *T) +X0: DEF  FN Y(T) = AY * COS(WY *T) +Y0: HPLOT  FN X(0), FN Y(0): FOR T = TB TO TE: HPLOT  TO  FN X(T), FN Y(T): NEXT 
  372. 22010  HPLOT 15,121 TO 265,121 TO 265,161 TO 15,161 TO 15,121: VTAB 17: HTAB 16: PRINT "       ": HTAB 15: PRINT " The End ": HTAB 16: PRINT "       "
  373. 22020  RETURN 
  374. 22990  REM <CTRL-0x0a><CTRL-0x0a>PRODOS BELL ROUTINE<CTRL-0x0a>
  375. 23000  CALL  PEEK(121) + PEEK(122) *256 +28: REM  SPEED=   DEL <UNKNOWN TOKEN> SPEED= <CTRL-0x01> DEL <UNKNOWN TOKEN> SPEED= <CTRL-0x02><CTRL-0x18> HGR2 <CTRL-0x14> PLOT 0 TAB(  SPEED= <CTRL-0x02> DEL <UNKNOWN TOKEN> SPEED= $<CTRL-0x18> HGR2 <CTRL-0x08> PLOT 0 TAB(   NOT <UNKNOWN TOKEN> =  STR$`8H RIGHT$<CTRL-0x01> = <UNKNOWN TOKEN>h RIGHT$<CTRL-0x01> = <UNKNOWN TOKEN> ONERR <UNKNOWN TOKEN> -<CTRL-0x01><UNKNOWN TOKEN> RND =  VAL:4
  376. 23010  RETURN 
  377. 23990  REM <CTRL-0x0a><CTRL-0x0a>DATA<CTRL-0x0a>
  378. 24000  DATA  1,12,13,16,17,19,20,28,29,31,32,36,37,42,43,48,49,51,52,55,56,63,64,68,69,71,72,75,76,77,78,81,82,83,84,86
  379. 24010  DATA  87,89,90,95,96,98,99,99,100,106,107,111,112,118,119,125,126,127,128,130,131,135,136,137,138,145,146,159,160,178,179,194,195,201