basic101 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (598) hide show
  1. checksums.yaml +7 -0
  2. data/.rspec +2 -0
  3. data/.simplecov +1 -0
  4. data/.yardopts +7 -0
  5. data/Changelog.md +3 -0
  6. data/Gemfile +12 -0
  7. data/Gemfile.lock +75 -0
  8. data/LICENSE.md +9 -0
  9. data/README.md +193 -0
  10. data/Rakefile +14 -0
  11. data/VERSION +1 -0
  12. data/bin/basic101 +10 -0
  13. data/lib/basic101/abs_function.rb +19 -0
  14. data/lib/basic101/argument_checker.rb +61 -0
  15. data/lib/basic101/arguments.rb +32 -0
  16. data/lib/basic101/array_reference.rb +52 -0
  17. data/lib/basic101/asc_function.rb +17 -0
  18. data/lib/basic101/basic_array.rb +69 -0
  19. data/lib/basic101/basic_comparisons.rb +20 -0
  20. data/lib/basic101/basic_float.rb +48 -0
  21. data/lib/basic101/basic_integer.rb +48 -0
  22. data/lib/basic101/basic_math.rb +22 -0
  23. data/lib/basic101/basic_numeric.rb +96 -0
  24. data/lib/basic101/basic_object.rb +35 -0
  25. data/lib/basic101/basic_string.rb +85 -0
  26. data/lib/basic101/binary_operation.rb +32 -0
  27. data/lib/basic101/binary_operations.rb +26 -0
  28. data/lib/basic101/built_in_functions.rb +31 -0
  29. data/lib/basic101/chr_function.rb +17 -0
  30. data/lib/basic101/cos_function.rb +17 -0
  31. data/lib/basic101/data_statement.rb +24 -0
  32. data/lib/basic101/define_function_statement.rb +23 -0
  33. data/lib/basic101/dim_statement.rb +25 -0
  34. data/lib/basic101/else_statement.rb +22 -0
  35. data/lib/basic101/end_statement.rb +13 -0
  36. data/lib/basic101/endif_statement.rb +19 -0
  37. data/lib/basic101/errors.rb +50 -0
  38. data/lib/basic101/exp_function.rb +17 -0
  39. data/lib/basic101/for_stack.rb +48 -0
  40. data/lib/basic101/for_statement.rb +57 -0
  41. data/lib/basic101/function.rb +11 -0
  42. data/lib/basic101/function_call.rb +32 -0
  43. data/lib/basic101/function_identifier.rb +8 -0
  44. data/lib/basic101/functions.rb +39 -0
  45. data/lib/basic101/gosub_statement.rb +23 -0
  46. data/lib/basic101/goto_statement.rb +23 -0
  47. data/lib/basic101/identifier.rb +23 -0
  48. data/lib/basic101/identity.rb +18 -0
  49. data/lib/basic101/if_statement.rb +31 -0
  50. data/lib/basic101/input.rb +44 -0
  51. data/lib/basic101/input_reader.rb +55 -0
  52. data/lib/basic101/input_statement.rb +46 -0
  53. data/lib/basic101/int_function.rb +17 -0
  54. data/lib/basic101/left_function.rb +19 -0
  55. data/lib/basic101/len_function.rb +18 -0
  56. data/lib/basic101/let_statement.rb +24 -0
  57. data/lib/basic101/line.rb +32 -0
  58. data/lib/basic101/log_function.rb +17 -0
  59. data/lib/basic101/main.rb +24 -0
  60. data/lib/basic101/mid_function.rb +20 -0
  61. data/lib/basic101/negate_operation.rb +21 -0
  62. data/lib/basic101/next_statement.rb +34 -0
  63. data/lib/basic101/not_operation.rb +23 -0
  64. data/lib/basic101/null_prompt_delimeter.rb +12 -0
  65. data/lib/basic101/null_transcript.rb +20 -0
  66. data/lib/basic101/numeric_identifier.rb +16 -0
  67. data/lib/basic101/on_goto_statement.rb +29 -0
  68. data/lib/basic101/output.rb +73 -0
  69. data/lib/basic101/parser.rb +457 -0
  70. data/lib/basic101/power_operation.rb +24 -0
  71. data/lib/basic101/print_comma.rb +20 -0
  72. data/lib/basic101/print_semicolon.rb +19 -0
  73. data/lib/basic101/print_statement.rb +33 -0
  74. data/lib/basic101/program.rb +100 -0
  75. data/lib/basic101/program_counter.rb +52 -0
  76. data/lib/basic101/prompt_delimeter.rb +13 -0
  77. data/lib/basic101/randomize_statement.rb +13 -0
  78. data/lib/basic101/read_statement.rb +25 -0
  79. data/lib/basic101/reference.rb +25 -0
  80. data/lib/basic101/remark_statement.rb +12 -0
  81. data/lib/basic101/restore_statement.rb +23 -0
  82. data/lib/basic101/return_statement.rb +16 -0
  83. data/lib/basic101/right_function.rb +19 -0
  84. data/lib/basic101/rnd_function.rb +24 -0
  85. data/lib/basic101/runtime.rb +132 -0
  86. data/lib/basic101/scalar_reference.rb +19 -0
  87. data/lib/basic101/sgn_function.rb +17 -0
  88. data/lib/basic101/sin_function.rb +17 -0
  89. data/lib/basic101/sqr_function.rb +17 -0
  90. data/lib/basic101/statement.rb +36 -0
  91. data/lib/basic101/stop_statement.rb +14 -0
  92. data/lib/basic101/str_function.rb +16 -0
  93. data/lib/basic101/string_identifier.rb +16 -0
  94. data/lib/basic101/tab.rb +18 -0
  95. data/lib/basic101/tab_function.rb +17 -0
  96. data/lib/basic101/tan_function.rb +17 -0
  97. data/lib/basic101/transcript.rb +37 -0
  98. data/lib/basic101/transform.rb +264 -0
  99. data/lib/basic101/user_defined_function.rb +54 -0
  100. data/lib/basic101/val_function.rb +16 -0
  101. data/lib/basic101.rb +93 -0
  102. data/rake_tasks/default.rake +1 -0
  103. data/rake_tasks/integration.rake +8 -0
  104. data/rake_tasks/jeweler.rake +28 -0
  105. data/rake_tasks/spec.rake +8 -0
  106. data/rake_tasks/test.rake +2 -0
  107. data/rake_tasks/yard.rake +3 -0
  108. data/test/integration/arguments.rb +25 -0
  109. data/test/integration/errors.rb +7 -0
  110. data/test/integration/integration_test.rb +28 -0
  111. data/test/integration/main.rb +49 -0
  112. data/test/integration/output_file.rb +40 -0
  113. data/test/integration/test.rb +135 -0
  114. data/test/integration/tests/basic_computer_games/23-match.bas +64 -0
  115. data/test/integration/tests/basic_computer_games/23-match.input +1 -0
  116. data/test/integration/tests/basic_computer_games/23-match.output +29 -0
  117. data/test/integration/tests/basic_computer_games/3dplot.bas +17 -0
  118. data/test/integration/tests/basic_computer_games/3dplot.input +0 -0
  119. data/test/integration/tests/basic_computer_games/3dplot.output +47 -0
  120. data/test/integration/tests/basic_computer_games/aceyducy.bas +100 -0
  121. data/test/integration/tests/basic_computer_games/aceyducy.input +8 -0
  122. data/test/integration/tests/basic_computer_games/aceyducy.output +78 -0
  123. data/test/integration/tests/basic_computer_games/amazing.bas +138 -0
  124. data/test/integration/tests/basic_computer_games/amazing.input +1 -0
  125. data/test/integration/tests/basic_computer_games/amazing.output +32 -0
  126. data/test/integration/tests/basic_computer_games/animal.bas +71 -0
  127. data/test/integration/tests/basic_computer_games/animal.input +17 -0
  128. data/test/integration/tests/basic_computer_games/animal.output +38 -0
  129. data/test/integration/tests/basic_computer_games/awari.bas +70 -0
  130. data/test/integration/tests/basic_computer_games/awari.input +11 -0
  131. data/test/integration/tests/basic_computer_games/awari.output +117 -0
  132. data/test/integration/tests/basic_computer_games/bagels.bas +81 -0
  133. data/test/integration/tests/basic_computer_games/bagels.input +12 -0
  134. data/test/integration/tests/basic_computer_games/bagels.output +42 -0
  135. data/test/integration/tests/basic_computer_games/banner.bas +94 -0
  136. data/test/integration/tests/basic_computer_games/banner.input +6 -0
  137. data/test/integration/tests/basic_computer_games/banner.output +135 -0
  138. data/test/integration/tests/basic_computer_games/basketbl.bas +196 -0
  139. data/test/integration/tests/basic_computer_games/basketbl.input +46 -0
  140. data/test/integration/tests/basic_computer_games/basketbl.output +509 -0
  141. data/test/integration/tests/basic_computer_games/batnum.bas +90 -0
  142. data/test/integration/tests/basic_computer_games/batnum.input +14 -0
  143. data/test/integration/tests/basic_computer_games/batnum.output +67 -0
  144. data/test/integration/tests/basic_computer_games/battle.bas +196 -0
  145. data/test/integration/tests/basic_computer_games/battle.input +21 -0
  146. data/test/integration/tests/basic_computer_games/battle.output +118 -0
  147. data/test/integration/tests/basic_computer_games/blackjck.bas +321 -0
  148. data/test/integration/tests/basic_computer_games/blackjck.input +26 -0
  149. data/test/integration/tests/basic_computer_games/blackjck.output +144 -0
  150. data/test/integration/tests/basic_computer_games/bombard.bas +93 -0
  151. data/test/integration/tests/basic_computer_games/bombard.input +20 -0
  152. data/test/integration/tests/basic_computer_games/bombard.output +175 -0
  153. data/test/integration/tests/basic_computer_games/bounce.bas +53 -0
  154. data/test/integration/tests/basic_computer_games/bounce.input +0 -0
  155. data/test/integration/tests/basic_computer_games/bounce.output +15 -0
  156. data/test/integration/tests/basic_computer_games/bowling.bas +101 -0
  157. data/test/integration/tests/basic_computer_games/bowling.input +23 -0
  158. data/test/integration/tests/basic_computer_games/bowling.output +229 -0
  159. data/test/integration/tests/basic_computer_games/boxing.bas +142 -0
  160. data/test/integration/tests/basic_computer_games/boxing.input +8 -0
  161. data/test/integration/tests/basic_computer_games/boxing.output +47 -0
  162. data/test/integration/tests/basic_computer_games/bug.bas +256 -0
  163. data/test/integration/tests/basic_computer_games/bug.input +17 -0
  164. data/test/integration/tests/basic_computer_games/bug.output +847 -0
  165. data/test/integration/tests/basic_computer_games/bullfght.bas +193 -0
  166. data/test/integration/tests/basic_computer_games/bullfght.input +4 -0
  167. data/test/integration/tests/basic_computer_games/bullfght.output +60 -0
  168. data/test/integration/tests/basic_computer_games/bullseye.bas +37 -0
  169. data/test/integration/tests/basic_computer_games/bullseye.input +10 -0
  170. data/test/integration/tests/basic_computer_games/bullseye.output +79 -0
  171. data/test/integration/tests/basic_computer_games/bunny.bas +40 -0
  172. data/test/integration/tests/basic_computer_games/bunny.input +0 -0
  173. data/test/integration/tests/basic_computer_games/bunny.output +67 -0
  174. data/test/integration/tests/basic_computer_games/buzzword.bas +25 -0
  175. data/test/integration/tests/basic_computer_games/buzzword.input +4 -0
  176. data/test/integration/tests/basic_computer_games/buzzword.output +25 -0
  177. data/test/integration/tests/basic_computer_games/calendar.bas +58 -0
  178. data/test/integration/tests/basic_computer_games/calendar.input +0 -0
  179. data/test/integration/tests/basic_computer_games/calendar.output +213 -0
  180. data/test/integration/tests/basic_computer_games/change.bas +51 -0
  181. data/test/integration/tests/basic_computer_games/change.input +4 -0
  182. data/test/integration/tests/basic_computer_games/change.output +28 -0
  183. data/test/integration/tests/basic_computer_games/checkers.bas +82 -0
  184. data/test/integration/tests/basic_computer_games/checkers.input +74 -0
  185. data/test/integration/tests/basic_computer_games/checkers.output +673 -0
  186. data/test/integration/tests/basic_computer_games/chemist.bas +27 -0
  187. data/test/integration/tests/basic_computer_games/chemist.input +11 -0
  188. data/test/integration/tests/basic_computer_games/chemist.output +54 -0
  189. data/test/integration/tests/basic_computer_games/chief.bas +51 -0
  190. data/test/integration/tests/basic_computer_games/chief.input +5 -0
  191. data/test/integration/tests/basic_computer_games/chief.output +19 -0
  192. data/test/integration/tests/basic_computer_games/chomp.bas +104 -0
  193. data/test/integration/tests/basic_computer_games/chomp.input +15 -0
  194. data/test/integration/tests/basic_computer_games/chomp.output +159 -0
  195. data/test/integration/tests/basic_computer_games/combat.bas +124 -0
  196. data/test/integration/tests/basic_computer_games/combat.input +7 -0
  197. data/test/integration/tests/basic_computer_games/combat.output +33 -0
  198. data/test/integration/tests/basic_computer_games/craps.bas +82 -0
  199. data/test/integration/tests/basic_computer_games/craps.input +9 -0
  200. data/test/integration/tests/basic_computer_games/craps.output +51 -0
  201. data/test/integration/tests/basic_computer_games/cube.bas +161 -0
  202. data/test/integration/tests/basic_computer_games/cube.input +25 -0
  203. data/test/integration/tests/basic_computer_games/cube.output +72 -0
  204. data/test/integration/tests/basic_computer_games/depthchg.bas +33 -0
  205. data/test/integration/tests/basic_computer_games/depthchg.input +16 -0
  206. data/test/integration/tests/basic_computer_games/depthchg.output +83 -0
  207. data/test/integration/tests/basic_computer_games/diamond.bas +27 -0
  208. data/test/integration/tests/basic_computer_games/diamond.input +1 -0
  209. data/test/integration/tests/basic_computer_games/diamond.output +65 -0
  210. data/test/integration/tests/basic_computer_games/dice.bas +31 -0
  211. data/test/integration/tests/basic_computer_games/dice.input +4 -0
  212. data/test/integration/tests/basic_computer_games/dice.output +46 -0
  213. data/test/integration/tests/basic_computer_games/digits.bas +78 -0
  214. data/test/integration/tests/basic_computer_games/digits.input +5 -0
  215. data/test/integration/tests/basic_computer_games/digits.output +70 -0
  216. data/test/integration/tests/basic_computer_games/evenwin1.bas +128 -0
  217. data/test/integration/tests/basic_computer_games/evenwin1.input +13 -0
  218. data/test/integration/tests/basic_computer_games/evenwin1.output +116 -0
  219. data/test/integration/tests/basic_computer_games/evenwin2.bas +70 -0
  220. data/test/integration/tests/basic_computer_games/evenwin2.input +14 -0
  221. data/test/integration/tests/basic_computer_games/evenwin2.output +56 -0
  222. data/test/integration/tests/basic_computer_games/flipflop.bas +79 -0
  223. data/test/integration/tests/basic_computer_games/flipflop.input +8 -0
  224. data/test/integration/tests/basic_computer_games/flipflop.output +45 -0
  225. data/test/integration/tests/basic_computer_games/footbal1.bas +298 -0
  226. data/test/integration/tests/basic_computer_games/footbal1.input +13 -0
  227. data/test/integration/tests/basic_computer_games/footbal1.output +315 -0
  228. data/test/integration/tests/basic_computer_games/footbal2.bas +181 -0
  229. data/test/integration/tests/basic_computer_games/footbal2.input +23 -0
  230. data/test/integration/tests/basic_computer_games/footbal2.output +318 -0
  231. data/test/integration/tests/basic_computer_games/furtradr.bas +170 -0
  232. data/test/integration/tests/basic_computer_games/furtradr.input +20 -0
  233. data/test/integration/tests/basic_computer_games/furtradr.output +133 -0
  234. data/test/integration/tests/basic_computer_games/golf.bas +244 -0
  235. data/test/integration/tests/basic_computer_games/golf.input +11 -0
  236. data/test/integration/tests/basic_computer_games/golf.output +69 -0
  237. data/test/integration/tests/basic_computer_games/gomoko.bas +54 -0
  238. data/test/integration/tests/basic_computer_games/gomoko.input +6 -0
  239. data/test/integration/tests/basic_computer_games/gomoko.output +66 -0
  240. data/test/integration/tests/basic_computer_games/guess.bas +40 -0
  241. data/test/integration/tests/basic_computer_games/guess.input +8 -0
  242. data/test/integration/tests/basic_computer_games/guess.output +37 -0
  243. data/test/integration/tests/basic_computer_games/gunner.bas +52 -0
  244. data/test/integration/tests/basic_computer_games/gunner.input +18 -0
  245. data/test/integration/tests/basic_computer_games/gunner.output +91 -0
  246. data/test/integration/tests/basic_computer_games/hamurabi.bas +119 -0
  247. data/test/integration/tests/basic_computer_games/hamurabi.input +7 -0
  248. data/test/integration/tests/basic_computer_games/hamurabi.output +51 -0
  249. data/test/integration/tests/basic_computer_games/hangman.bas +81 -0
  250. data/test/integration/tests/basic_computer_games/hangman.input +69 -0
  251. data/test/integration/tests/basic_computer_games/hangman.output +889 -0
  252. data/test/integration/tests/basic_computer_games/hello.bas +83 -0
  253. data/test/integration/tests/basic_computer_games/hello.input +7 -0
  254. data/test/integration/tests/basic_computer_games/hello.output +46 -0
  255. data/test/integration/tests/basic_computer_games/hexapawn.bas +174 -0
  256. data/test/integration/tests/basic_computer_games/hexapawn.input +38 -0
  257. data/test/integration/tests/basic_computer_games/hexapawn.output +521 -0
  258. data/test/integration/tests/basic_computer_games/hi-q.bas +135 -0
  259. data/test/integration/tests/basic_computer_games/hi-q.input +14 -0
  260. data/test/integration/tests/basic_computer_games/hi-q.output +115 -0
  261. data/test/integration/tests/basic_computer_games/hilo.bas +29 -0
  262. data/test/integration/tests/basic_computer_games/hilo.input +20 -0
  263. data/test/integration/tests/basic_computer_games/hilo.output +76 -0
  264. data/test/integration/tests/basic_computer_games/hockey.bas +210 -0
  265. data/test/integration/tests/basic_computer_games/hockey.input +59 -0
  266. data/test/integration/tests/basic_computer_games/hockey.output +243 -0
  267. data/test/integration/tests/basic_computer_games/horsrace.bas +130 -0
  268. data/test/integration/tests/basic_computer_games/horsrace.input +11 -0
  269. data/test/integration/tests/basic_computer_games/horsrace.output +517 -0
  270. data/test/integration/tests/basic_computer_games/hurkle.bas +51 -0
  271. data/test/integration/tests/basic_computer_games/hurkle.input +16 -0
  272. data/test/integration/tests/basic_computer_games/hurkle.output +81 -0
  273. data/test/integration/tests/basic_computer_games/kinema.bas +34 -0
  274. data/test/integration/tests/basic_computer_games/kinema.input +9 -0
  275. data/test/integration/tests/basic_computer_games/kinema.output +64 -0
  276. data/test/integration/tests/basic_computer_games/king.bas +268 -0
  277. data/test/integration/tests/basic_computer_games/king.input +7 -0
  278. data/test/integration/tests/basic_computer_games/king.output +57 -0
  279. data/test/integration/tests/basic_computer_games/lem.bas +246 -0
  280. data/test/integration/tests/basic_computer_games/lem.input +4 -0
  281. data/test/integration/tests/basic_computer_games/lem.output +68 -0
  282. data/test/integration/tests/basic_computer_games/letter.bas +26 -0
  283. data/test/integration/tests/basic_computer_games/letter.input +24 -0
  284. data/test/integration/tests/basic_computer_games/letter.output +123 -0
  285. data/test/integration/tests/basic_computer_games/life.bas +66 -0
  286. data/test/integration/tests/basic_computer_games/life.input +4 -0
  287. data/test/integration/tests/basic_computer_games/life.options +1 -0
  288. data/test/integration/tests/basic_computer_games/life.output +200 -0
  289. data/test/integration/tests/basic_computer_games/life2.bas +83 -0
  290. data/test/integration/tests/basic_computer_games/life2.input +17 -0
  291. data/test/integration/tests/basic_computer_games/life2.output +113 -0
  292. data/test/integration/tests/basic_computer_games/litquiz.bas +49 -0
  293. data/test/integration/tests/basic_computer_games/litquiz.input +4 -0
  294. data/test/integration/tests/basic_computer_games/litquiz.output +36 -0
  295. data/test/integration/tests/basic_computer_games/love.bas +34 -0
  296. data/test/integration/tests/basic_computer_games/love.input +1 -0
  297. data/test/integration/tests/basic_computer_games/love.output +67 -0
  298. data/test/integration/tests/basic_computer_games/lunar.bas +48 -0
  299. data/test/integration/tests/basic_computer_games/lunar.input +87 -0
  300. data/test/integration/tests/basic_computer_games/lunar.output +195 -0
  301. data/test/integration/tests/basic_computer_games/mastrmnd.bas +232 -0
  302. data/test/integration/tests/basic_computer_games/mastrmnd.input +18 -0
  303. data/test/integration/tests/basic_computer_games/mastrmnd.output +67 -0
  304. data/test/integration/tests/basic_computer_games/mathdice.bas +60 -0
  305. data/test/integration/tests/basic_computer_games/mathdice.input +4 -0
  306. data/test/integration/tests/basic_computer_games/mathdice.output +86 -0
  307. data/test/integration/tests/basic_computer_games/mugwump.bas +56 -0
  308. data/test/integration/tests/basic_computer_games/mugwump.input +16 -0
  309. data/test/integration/tests/basic_computer_games/mugwump.output +139 -0
  310. data/test/integration/tests/basic_computer_games/name.bas +25 -0
  311. data/test/integration/tests/basic_computer_games/name.input +2 -0
  312. data/test/integration/tests/basic_computer_games/name.output +22 -0
  313. data/test/integration/tests/basic_computer_games/nicoma.bas +34 -0
  314. data/test/integration/tests/basic_computer_games/nicoma.input +8 -0
  315. data/test/integration/tests/basic_computer_games/nicoma.output +36 -0
  316. data/test/integration/tests/basic_computer_games/nim.bas +156 -0
  317. data/test/integration/tests/basic_computer_games/nim.input +8 -0
  318. data/test/integration/tests/basic_computer_games/nim.output +30 -0
  319. data/test/integration/tests/basic_computer_games/number.bas +37 -0
  320. data/test/integration/tests/basic_computer_games/number.input +19 -0
  321. data/test/integration/tests/basic_computer_games/number.output +73 -0
  322. data/test/integration/tests/basic_computer_games/onecheck.bas +86 -0
  323. data/test/integration/tests/basic_computer_games/onecheck.input +6 -0
  324. data/test/integration/tests/basic_computer_games/onecheck.output +77 -0
  325. data/test/integration/tests/basic_computer_games/orbit.bas +96 -0
  326. data/test/integration/tests/basic_computer_games/orbit.input +10 -0
  327. data/test/integration/tests/basic_computer_games/orbit.output +113 -0
  328. data/test/integration/tests/basic_computer_games/pizza.bas +68 -0
  329. data/test/integration/tests/basic_computer_games/pizza.input +10 -0
  330. data/test/integration/tests/basic_computer_games/pizza.output +93 -0
  331. data/test/integration/tests/basic_computer_games/poetry.bas +42 -0
  332. data/test/integration/tests/basic_computer_games/poetry.input +0 -0
  333. data/test/integration/tests/basic_computer_games/poetry.options +1 -0
  334. data/test/integration/tests/basic_computer_games/poetry.output +50 -0
  335. data/test/integration/tests/basic_computer_games/poker.bas +416 -0
  336. data/test/integration/tests/basic_computer_games/poker.input +34 -0
  337. data/test/integration/tests/basic_computer_games/poker.output +197 -0
  338. data/test/integration/tests/basic_computer_games/queen.bas +168 -0
  339. data/test/integration/tests/basic_computer_games/queen.input +10 -0
  340. data/test/integration/tests/basic_computer_games/queen.output +133 -0
  341. data/test/integration/tests/basic_computer_games/reverse.bas +62 -0
  342. data/test/integration/tests/basic_computer_games/reverse.input +12 -0
  343. data/test/integration/tests/basic_computer_games/reverse.output +79 -0
  344. data/test/integration/tests/basic_computer_games/rocket.bas +71 -0
  345. data/test/integration/tests/basic_computer_games/rocket.input +42 -0
  346. data/test/integration/tests/basic_computer_games/rocket.output +149 -0
  347. data/test/integration/tests/basic_computer_games/rocksp.bas +33 -0
  348. data/test/integration/tests/basic_computer_games/rocksp.input +9 -0
  349. data/test/integration/tests/basic_computer_games/rocksp.output +69 -0
  350. data/test/integration/tests/basic_computer_games/roulette.bas +239 -0
  351. data/test/integration/tests/basic_computer_games/roulette.input +9 -0
  352. data/test/integration/tests/basic_computer_games/roulette.output +98 -0
  353. data/test/integration/tests/basic_computer_games/rusrou.bas +26 -0
  354. data/test/integration/tests/basic_computer_games/rusrou.input +9 -0
  355. data/test/integration/tests/basic_computer_games/rusrou.output +50 -0
  356. data/test/integration/tests/basic_computer_games/salvo.bas +329 -0
  357. data/test/integration/tests/basic_computer_games/salvo.input +21 -0
  358. data/test/integration/tests/basic_computer_games/salvo.output +49 -0
  359. data/test/integration/tests/basic_computer_games/sinewave.bas +17 -0
  360. data/test/integration/tests/basic_computer_games/sinewave.input +0 -0
  361. data/test/integration/tests/basic_computer_games/sinewave.output +168 -0
  362. data/test/integration/tests/basic_computer_games/slalom.bas +165 -0
  363. data/test/integration/tests/basic_computer_games/slalom.input +20 -0
  364. data/test/integration/tests/basic_computer_games/slalom.output +122 -0
  365. data/test/integration/tests/basic_computer_games/slots.bas +134 -0
  366. data/test/integration/tests/basic_computer_games/slots.input +2 -0
  367. data/test/integration/tests/basic_computer_games/slots.output +20 -0
  368. data/test/integration/tests/basic_computer_games/splat.bas +128 -0
  369. data/test/integration/tests/basic_computer_games/splat.input +9 -0
  370. data/test/integration/tests/basic_computer_games/splat.output +61 -0
  371. data/test/integration/tests/basic_computer_games/stars.bas +54 -0
  372. data/test/integration/tests/basic_computer_games/stars.input +15 -0
  373. data/test/integration/tests/basic_computer_games/stars.output +70 -0
  374. data/test/integration/tests/basic_computer_games/stock.bas +232 -0
  375. data/test/integration/tests/basic_computer_games/stock.input +30 -0
  376. data/test/integration/tests/basic_computer_games/stock.output +156 -0
  377. data/test/integration/tests/basic_computer_games/superstartrek.bas +425 -0
  378. data/test/integration/tests/basic_computer_games/superstartrek.input +21 -0
  379. data/test/integration/tests/basic_computer_games/superstartrek.output +151 -0
  380. data/test/integration/tests/basic_computer_games/superstartrekins.bas +127 -0
  381. data/test/integration/tests/basic_computer_games/superstartrekins.input +1 -0
  382. data/test/integration/tests/basic_computer_games/superstartrekins.output +134 -0
  383. data/test/integration/tests/basic_computer_games/synonym.bas +53 -0
  384. data/test/integration/tests/basic_computer_games/synonym.input +13 -0
  385. data/test/integration/tests/basic_computer_games/synonym.output +57 -0
  386. data/test/integration/tests/basic_computer_games/target.bas +51 -0
  387. data/test/integration/tests/basic_computer_games/target.input +2 -0
  388. data/test/integration/tests/basic_computer_games/target.output +39 -0
  389. data/test/integration/tests/basic_computer_games/tictac1.bas +69 -0
  390. data/test/integration/tests/basic_computer_games/tictac1.input +10 -0
  391. data/test/integration/tests/basic_computer_games/tictac1.output +49 -0
  392. data/test/integration/tests/basic_computer_games/tictac2.bas +114 -0
  393. data/test/integration/tests/basic_computer_games/tictac2.input +6 -0
  394. data/test/integration/tests/basic_computer_games/tictac2.output +104 -0
  395. data/test/integration/tests/basic_computer_games/towers.bas +125 -0
  396. data/test/integration/tests/basic_computer_games/towers.input +9 -0
  397. data/test/integration/tests/basic_computer_games/towers.output +70 -0
  398. data/test/integration/tests/basic_computer_games/train.bas +24 -0
  399. data/test/integration/tests/basic_computer_games/train.input +4 -0
  400. data/test/integration/tests/basic_computer_games/train.output +23 -0
  401. data/test/integration/tests/basic_computer_games/trap.bas +49 -0
  402. data/test/integration/tests/basic_computer_games/trap.input +7 -0
  403. data/test/integration/tests/basic_computer_games/trap.output +40 -0
  404. data/test/integration/tests/basic_computer_games/war.bas +68 -0
  405. data/test/integration/tests/basic_computer_games/war.input +11 -0
  406. data/test/integration/tests/basic_computer_games/war.output +54 -0
  407. data/test/integration/tests/basic_computer_games/weekday.bas +150 -0
  408. data/test/integration/tests/basic_computer_games/weekday.input +2 -0
  409. data/test/integration/tests/basic_computer_games/weekday.output +28 -0
  410. data/test/integration/tests/basic_computer_games/word.bas +65 -0
  411. data/test/integration/tests/basic_computer_games/word.input +6 -0
  412. data/test/integration/tests/basic_computer_games/word.output +0 -0
  413. data/test/integration/tests/fast/abs.bas +5 -0
  414. data/test/integration/tests/fast/abs.input +0 -0
  415. data/test/integration/tests/fast/abs.output +5 -0
  416. data/test/integration/tests/fast/add.bas +5 -0
  417. data/test/integration/tests/fast/add.input +0 -0
  418. data/test/integration/tests/fast/add.output +5 -0
  419. data/test/integration/tests/fast/and.bas +5 -0
  420. data/test/integration/tests/fast/and.input +0 -0
  421. data/test/integration/tests/fast/and.output +5 -0
  422. data/test/integration/tests/fast/array.bas +11 -0
  423. data/test/integration/tests/fast/array.input +0 -0
  424. data/test/integration/tests/fast/array.output +6 -0
  425. data/test/integration/tests/fast/asc.bas +1 -0
  426. data/test/integration/tests/fast/asc.input +0 -0
  427. data/test/integration/tests/fast/asc.output +1 -0
  428. data/test/integration/tests/fast/chr.bas +1 -0
  429. data/test/integration/tests/fast/chr.input +0 -0
  430. data/test/integration/tests/fast/chr.output +1 -0
  431. data/test/integration/tests/fast/cos.bas +1 -0
  432. data/test/integration/tests/fast/cos.input +0 -0
  433. data/test/integration/tests/fast/cos.output +1 -0
  434. data/test/integration/tests/fast/def_fn.bas +9 -0
  435. data/test/integration/tests/fast/def_fn.input +0 -0
  436. data/test/integration/tests/fast/def_fn.output +5 -0
  437. data/test/integration/tests/fast/divide.bas +5 -0
  438. data/test/integration/tests/fast/divide.input +0 -0
  439. data/test/integration/tests/fast/divide.output +5 -0
  440. data/test/integration/tests/fast/end.bas +3 -0
  441. data/test/integration/tests/fast/end.input +0 -0
  442. data/test/integration/tests/fast/end.output +1 -0
  443. data/test/integration/tests/fast/eq.bas +3 -0
  444. data/test/integration/tests/fast/eq.input +0 -0
  445. data/test/integration/tests/fast/eq.output +3 -0
  446. data/test/integration/tests/fast/exp.bas +2 -0
  447. data/test/integration/tests/fast/exp.input +0 -0
  448. data/test/integration/tests/fast/exp.output +2 -0
  449. data/test/integration/tests/fast/float.bas +3 -0
  450. data/test/integration/tests/fast/float.input +0 -0
  451. data/test/integration/tests/fast/float.output +2 -0
  452. data/test/integration/tests/fast/for_next.bas +61 -0
  453. data/test/integration/tests/fast/for_next.input +0 -0
  454. data/test/integration/tests/fast/for_next.output +46 -0
  455. data/test/integration/tests/fast/ge.bas +3 -0
  456. data/test/integration/tests/fast/ge.input +0 -0
  457. data/test/integration/tests/fast/ge.output +3 -0
  458. data/test/integration/tests/fast/gosub_return.bas +10 -0
  459. data/test/integration/tests/fast/gosub_return.input +0 -0
  460. data/test/integration/tests/fast/gosub_return.output +4 -0
  461. data/test/integration/tests/fast/goto.bas +3 -0
  462. data/test/integration/tests/fast/goto.input +0 -0
  463. data/test/integration/tests/fast/goto.output +1 -0
  464. data/test/integration/tests/fast/gt.bas +3 -0
  465. data/test/integration/tests/fast/gt.input +0 -0
  466. data/test/integration/tests/fast/gt.output +3 -0
  467. data/test/integration/tests/fast/if.bas +25 -0
  468. data/test/integration/tests/fast/if.input +0 -0
  469. data/test/integration/tests/fast/if.output +8 -0
  470. data/test/integration/tests/fast/input.bas +24 -0
  471. data/test/integration/tests/fast/input.input +10 -0
  472. data/test/integration/tests/fast/input.output +28 -0
  473. data/test/integration/tests/fast/int.bas +5 -0
  474. data/test/integration/tests/fast/int.input +0 -0
  475. data/test/integration/tests/fast/int.output +5 -0
  476. data/test/integration/tests/fast/integer_plus_string.bas +1 -0
  477. data/test/integration/tests/fast/integer_plus_string.input +0 -0
  478. data/test/integration/tests/fast/integer_plus_string.output +1 -0
  479. data/test/integration/tests/fast/invalid_argument.bas +1 -0
  480. data/test/integration/tests/fast/invalid_argument.input +0 -0
  481. data/test/integration/tests/fast/invalid_argument.output +1 -0
  482. data/test/integration/tests/fast/le.bas +3 -0
  483. data/test/integration/tests/fast/le.input +0 -0
  484. data/test/integration/tests/fast/le.output +3 -0
  485. data/test/integration/tests/fast/left.bas +1 -0
  486. data/test/integration/tests/fast/left.input +0 -0
  487. data/test/integration/tests/fast/left.output +1 -0
  488. data/test/integration/tests/fast/len.bas +2 -0
  489. data/test/integration/tests/fast/len.input +0 -0
  490. data/test/integration/tests/fast/len.output +2 -0
  491. data/test/integration/tests/fast/let.bas +6 -0
  492. data/test/integration/tests/fast/let.input +0 -0
  493. data/test/integration/tests/fast/let.output +4 -0
  494. data/test/integration/tests/fast/log.bas +1 -0
  495. data/test/integration/tests/fast/log.input +0 -0
  496. data/test/integration/tests/fast/log.output +1 -0
  497. data/test/integration/tests/fast/lt.bas +3 -0
  498. data/test/integration/tests/fast/lt.input +0 -0
  499. data/test/integration/tests/fast/lt.output +3 -0
  500. data/test/integration/tests/fast/math.output +0 -0
  501. data/test/integration/tests/fast/mid.bas +2 -0
  502. data/test/integration/tests/fast/mid.input +0 -0
  503. data/test/integration/tests/fast/mid.output +2 -0
  504. data/test/integration/tests/fast/multiply.bas +5 -0
  505. data/test/integration/tests/fast/multiply.input +0 -0
  506. data/test/integration/tests/fast/multiply.output +5 -0
  507. data/test/integration/tests/fast/ne.bas +3 -0
  508. data/test/integration/tests/fast/ne.input +0 -0
  509. data/test/integration/tests/fast/ne.output +3 -0
  510. data/test/integration/tests/fast/negate.bas +4 -0
  511. data/test/integration/tests/fast/negate.input +0 -0
  512. data/test/integration/tests/fast/negate.output +3 -0
  513. data/test/integration/tests/fast/not.bas +4 -0
  514. data/test/integration/tests/fast/not.input +0 -0
  515. data/test/integration/tests/fast/not.output +4 -0
  516. data/test/integration/tests/fast/on_goto.bas +6 -0
  517. data/test/integration/tests/fast/on_goto.input +0 -0
  518. data/test/integration/tests/fast/on_goto.output +2 -0
  519. data/test/integration/tests/fast/or.bas +5 -0
  520. data/test/integration/tests/fast/or.input +0 -0
  521. data/test/integration/tests/fast/or.output +5 -0
  522. data/test/integration/tests/fast/parentheses.bas +1 -0
  523. data/test/integration/tests/fast/parentheses.input +0 -0
  524. data/test/integration/tests/fast/parentheses.output +1 -0
  525. data/test/integration/tests/fast/power.bas +4 -0
  526. data/test/integration/tests/fast/power.input +0 -0
  527. data/test/integration/tests/fast/power.output +4 -0
  528. data/test/integration/tests/fast/print.bas +6 -0
  529. data/test/integration/tests/fast/print.input +0 -0
  530. data/test/integration/tests/fast/print.output +4 -0
  531. data/test/integration/tests/fast/read_data.bas +15 -0
  532. data/test/integration/tests/fast/read_data.input +0 -0
  533. data/test/integration/tests/fast/read_data.output +4 -0
  534. data/test/integration/tests/fast/rem.bas +1 -0
  535. data/test/integration/tests/fast/rem.input +0 -0
  536. data/test/integration/tests/fast/rem.output +0 -0
  537. data/test/integration/tests/fast/right.bas +1 -0
  538. data/test/integration/tests/fast/right.input +0 -0
  539. data/test/integration/tests/fast/right.output +1 -0
  540. data/test/integration/tests/fast/rnd.bas +5 -0
  541. data/test/integration/tests/fast/rnd.input +0 -0
  542. data/test/integration/tests/fast/rnd.output +5 -0
  543. data/test/integration/tests/fast/sgn.bas +5 -0
  544. data/test/integration/tests/fast/sgn.input +0 -0
  545. data/test/integration/tests/fast/sgn.output +5 -0
  546. data/test/integration/tests/fast/sin.bas +1 -0
  547. data/test/integration/tests/fast/sin.input +0 -0
  548. data/test/integration/tests/fast/sin.output +1 -0
  549. data/test/integration/tests/fast/sqr.bas +2 -0
  550. data/test/integration/tests/fast/sqr.input +0 -0
  551. data/test/integration/tests/fast/sqr.output +2 -0
  552. data/test/integration/tests/fast/stop.bas +3 -0
  553. data/test/integration/tests/fast/stop.input +0 -0
  554. data/test/integration/tests/fast/stop.output +2 -0
  555. data/test/integration/tests/fast/str.bas +3 -0
  556. data/test/integration/tests/fast/str.input +0 -0
  557. data/test/integration/tests/fast/str.output +3 -0
  558. data/test/integration/tests/fast/string_addition.bas +1 -0
  559. data/test/integration/tests/fast/string_addition.input +0 -0
  560. data/test/integration/tests/fast/string_addition.output +1 -0
  561. data/test/integration/tests/fast/string_comparisons.bas +7 -0
  562. data/test/integration/tests/fast/string_comparisons.input +0 -0
  563. data/test/integration/tests/fast/string_comparisons.output +4 -0
  564. data/test/integration/tests/fast/string_plus_integer.bas +1 -0
  565. data/test/integration/tests/fast/string_plus_integer.input +0 -0
  566. data/test/integration/tests/fast/string_plus_integer.output +1 -0
  567. data/test/integration/tests/fast/subtract.bas +5 -0
  568. data/test/integration/tests/fast/subtract.input +0 -0
  569. data/test/integration/tests/fast/subtract.output +5 -0
  570. data/test/integration/tests/fast/tab.bas +4 -0
  571. data/test/integration/tests/fast/tab.input +0 -0
  572. data/test/integration/tests/fast/tab.output +3 -0
  573. data/test/integration/tests/fast/tan.bas +1 -0
  574. data/test/integration/tests/fast/tan.input +0 -0
  575. data/test/integration/tests/fast/tan.output +1 -0
  576. data/test/integration/tests/fast/val.bas +3 -0
  577. data/test/integration/tests/fast/val.input +0 -0
  578. data/test/integration/tests/fast/val.output +3 -0
  579. data/test/spec/argument_checker_spec.rb +128 -0
  580. data/test/spec/basic_array_spec.rb +100 -0
  581. data/test/spec/basic_float_spec.rb +168 -0
  582. data/test/spec/basic_integer_spec.rb +270 -0
  583. data/test/spec/basic_numeric_spec.rb +16 -0
  584. data/test/spec/basic_object_spec.rb +22 -0
  585. data/test/spec/basic_string_spec.rb +259 -0
  586. data/test/spec/for_stack_spec.rb +70 -0
  587. data/test/spec/input_reader_spec.rb +143 -0
  588. data/test/spec/input_spec.rb +102 -0
  589. data/test/spec/line_spec.rb +18 -0
  590. data/test/spec/output_spec.rb +153 -0
  591. data/test/spec/parser_spec.rb +562 -0
  592. data/test/spec/program_spec.rb +45 -0
  593. data/test/spec/spec_helper.rb +15 -0
  594. data/test/spec/support/basic_numeric_helpers.rb +327 -0
  595. data/test/spec/support/basic_object_helpers.rb +22 -0
  596. data/test/spec/transcript_spec.rb +37 -0
  597. data/test/spec/transform_spec.rb +513 -0
  598. metadata +742 -0
@@ -0,0 +1,425 @@
1
+ 10 REM SUPER STARTREK - MAY 16,1978 - REQUIRES 24K MEMORY
2
+ 30 REM
3
+ 40 REM **** **** STAR TREK **** ****
4
+ 50 REM **** SIMULATION OF A MISSION OF THE STARSHIP ENTERPRISE,
5
+ 60 REM **** AS SEEN ON THE STAR TREK TV SHOW.
6
+ 70 REM **** ORIGIONAL PROGRAM BY MIKE MAYFIELD, MODIFIED VERSION
7
+ 80 REM **** PUBLISHED IN DEC'S "101 BASIC GAMES", BY DAVE AHL.
8
+ 90 REM **** MODIFICATIONS TO THE LATTER (PLUS DEBUGGING) BY BOB
9
+ 100 REM *** LEEDOM - APRIL & DECEMBER 1974,
10
+ 110 REM *** WITH A LITTLE HELP FROM HIS FRIENDS . . .
11
+ 120 REM *** COMMENTS, EPITHETS, AND SUGGESTIONS SOLICITED --
12
+ 130 REM *** SEND TO: R. C. LEEDOM
13
+ 140 REM *** WESTINGHOUSE DEFENSE & ELECTRONICS SYSTEMS CNTR.
14
+ 150 REM *** BOX 746, M.S. 338
15
+ 160 REM *** BALTIMORE, MD 21203
16
+ 170 REM ***
17
+ 180 REM *** CONVERTED TO MICROSOFT 8 K BASIC 3/16/78 BY JOHN GORDERS
18
+ 190 REM *** LINE NUMBERS FROM VERSION STREK7 OF 1/12/75 PRESERVED AS
19
+ 200 REM *** MUCH AS POSSIBLE WHILE USING MULTIPLE STATEMENTS PER LINE
20
+ 205 REM *** SOME LINES ARE LONGER THAN 72 CHARACTERS; THIS WAS DONE
21
+ 210 REM *** BY USING "?" INSTEAD OF "PRINT" WHEN ENTERING LINES
22
+ 215 REM ***
23
+ 220 PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT:PRINT
24
+ 221 PRINT" ,------*------,"
25
+ 222 PRINT" ,------------- '--- ------'"
26
+ 223 PRINT" '-------- --' / /"
27
+ 224 PRINT" ,---' '-------/ /--,"
28
+ 225 PRINT" '----------------'":PRINT
29
+ 226 PRINT" THE USS ENTERPRISE --- NCC-1701"
30
+ 227 PRINT:PRINT:PRINT:PRINT:PRINT
31
+ 260 REM CLEAR 600
32
+ 270 Z$=" "
33
+ 330 DIM G(8,8),C(9,2),K(3,3),N(3),Z(8,8),D(8)
34
+ 370 T=INT(RND(1)*20+20)*100:T0=T:T9=25+INT(RND(1)*10):D0=0:E=3000:E0=E
35
+ 440 P=10:P0=P:S9=200:S=0:B9=2:K9=0:X$="":X0$=" IS "
36
+ 470 DEF FND(D)=SQR((K(I,1)-S1)^2+(K(I,2)-S2)^2)
37
+ 475 DEF FNR(R)=INT(RND(R)*7.98+1.01)
38
+ 480 REM INITIALIZE ENTERPRIZE'S POSITION
39
+ 490 Q1=FNR(1):Q2=FNR(1):S1=FNR(1):S2=FNR(1)
40
+ 530 FORI=1TO9:C(I,1)=0:C(I,2)=0:NEXTI
41
+ 540 C(3,1)=-1:C(2,1)=-1:C(4,1)=-1:C(4,2)=-1:C(5,2)=-1:C(6,2)=-1
42
+ 600 C(1,2)=1:C(2,2)=1:C(6,1)=1:C(7,1)=1:C(8,1)=1:C(8,2)=1:C(9,2)=1
43
+ 670 FORI=1TO8:D(I)=0:NEXTI
44
+ 710 A1$="NAVSRSLRSPHATORSHEDAMCOMXXX"
45
+ 810 REM SETUP WHAT EXHISTS IN GALAXY . . .
46
+ 815 REM K3= # KLINGONS B3= # STARBASES S3 = # STARS
47
+ 820 FORI=1TO8:FORJ=1TO8:K3=0:Z(I,J)=0:R1=RND(1)
48
+ 850 IFR1>.98THENK3=3:K9=K9+3:GOTO980
49
+ 860 IFR1>.95THENK3=2:K9=K9+2:GOTO980
50
+ 870 IFR1>.80THENK3=1:K9=K9+1
51
+ 980 B3=0:IFRND(1)>.96THENB3=1:B9=B9+1
52
+ 1040 G(I,J)=K3*100+B3*10+FNR(1):NEXTJ:NEXTI:IFK9>T9THENT9=K9+1
53
+ 1100 IFB9<>0THEN1200
54
+ 1150 IFG(Q1,Q2)<200THENG(Q1,Q2)=G(Q1,Q2)+120:K9=K9+1
55
+ 1160 B9=1:G(Q1,Q2)=G(Q1,Q2)+10:Q1=FNR(1):Q2=FNR(1)
56
+ 1200 K7=K9:IFB9<>1THENX$="S":X0$=" ARE "
57
+ 1230 PRINT"YOUR ORDERS ARE AS FOLLOWS:"
58
+ 1240 PRINT" DESTROY THE";K9;"KLINGON WARSHIPS WHICH HAVE INVADED"
59
+ 1252 PRINT" THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS"
60
+ 1260 PRINT" ON STARDATE";T0+T9;" THIS GIVES YOU";T9;"DAYS. THERE";X0$
61
+ 1272 PRINT" ";B9;"STARBASE";X$;" IN THE GALAXY FOR RESUPPLYING YOUR SHIP"
62
+ 1280 PRINT:REM PRINT"HIT ANY KEY EXCEPT RETURN WHEN READY TO ACCEPT COMMAND"
63
+ 1300 I=RND(1):REM IF INP(1)=13 THEN 1300
64
+ 1310 REM HERE ANY TIME NEW QUADRANT ENTERED
65
+ 1320 Z4=Q1:Z5=Q2:K3=0:B3=0:S3=0:G5=0:D4=.5*RND(1):Z(Q1,Q2)=G(Q1,Q2)
66
+ 1390 IFQ1<1ORQ1>8ORQ2<1ORQ2>8THEN1600
67
+ 1430 GOSUB 9030:PRINT:IF T0<>T THEN 1490
68
+ 1460 PRINT"YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED"
69
+ 1470 PRINT"IN THE GALACTIC QUADRANT, '";G2$;"'.":GOTO 1500
70
+ 1490 PRINT"NOW ENTERING ";G2$;" QUADRANT . . ."
71
+ 1500 PRINT:K3=INT(G(Q1,Q2)*.01):B3=INT(G(Q1,Q2)*.1)-10*K3
72
+ 1540 S3=G(Q1,Q2)-100*K3-10*B3:IFK3=0THEN1590
73
+ 1560 PRINT"COMBAT AREA CONDITION RED":IFS>200THEN1590
74
+ 1580 PRINT" SHIELDS DANGEROUSLY LOW"
75
+ 1590 FORI=1TO3:K(I,1)=0:K(I,2)=0:NEXTI
76
+ 1600 FORI=1TO3:K(I,3)=0:NEXTI:Q$=Z$+Z$+Z$+Z$+Z$+Z$+Z$+LEFT$(Z$,17)
77
+ 1660 REM POSITION ENTERPRISE IN QUADRANT, THEN PLACE "K3" KLINGONS, &
78
+ 1670 REM "B3" STARBASES, & "S3" STARS ELSEWHERE.
79
+ 1680 A$="<*>":Z1=S1:Z2=S2:GOSUB8670:IFK3<1THEN1820
80
+ 1720 FORI=1TOK3:GOSUB8590:A$="+K+":Z1=R1:Z2=R2
81
+ 1780 GOSUB8670:K(I,1)=R1:K(I,2)=R2:K(I,3)=S9*(0.5+RND(1)):NEXTI
82
+ 1820 IFB3<1THEN1910
83
+ 1880 GOSUB8590:A$=">!<":Z1=R1:B4=R1:Z2=R2:B5=R2:GOSUB8670
84
+ 1910 FORI=1TOS3:GOSUB8590:A$=" * ":Z1=R1:Z2=R2:GOSUB8670:NEXTI
85
+ 1980 GOSUB6430
86
+ 1990 IFS+E>10THENIFE>10ORD(7)=0THEN2060
87
+ 2020 PRINT:PRINT"** FATAL ERROR ** YOU'VE JUST STRANDED YOUR SHIP IN "
88
+ 2030 PRINT"SPACE":PRINT"YOU HAVE INSUFFICIENT MANEUVERING ENERGY,";
89
+ 2040 PRINT" AND SHIELD CONTROL":PRINT"IS PRESENTLY INCAPABLE OF CROSS";
90
+ 2050 PRINT"-CIRCUITING TO ENGINE ROOM!!":GOTO6220
91
+ 2060 INPUT"COMMAND";A$
92
+ 2080 FORI=1TO9:IFLEFT$(A$,3)<>MID$(A1$,3*I-2,3)THEN2160
93
+ 2140 ONIGOTO2300,1980,4000,4260,4700,5530,5690,7290,6270
94
+ 2160 NEXTI:PRINT"ENTER ONE OF THE FOLLOWING:"
95
+ 2180 PRINT" NAV (TO SET COURSE)"
96
+ 2190 PRINT" SRS (FOR SHORT RANGE SENSOR SCAN)"
97
+ 2200 PRINT" LRS (FOR LONG RANGE SENSOR SCAN)"
98
+ 2210 PRINT" PHA (TO FIRE PHASERS)"
99
+ 2220 PRINT" TOR (TO FIRE PHOTON TORPEDOES)"
100
+ 2230 PRINT" SHE (TO RAISE OR LOWER SHIELDS)"
101
+ 2240 PRINT" DAM (FOR DAMAGE CONTROL REPORTS)"
102
+ 2250 PRINT" COM (TO CALL ON LIBRARY-COMPUTER)"
103
+ 2260 PRINT" XXX (TO RESIGN YOUR COMMAND)":PRINT:GOTO 1990
104
+ 2290 REM COURSE CONTROL BEGINS HERE
105
+ 2300 INPUT"COURSE (0-9)";C1:IFC1=9THENC1=1
106
+ 2310 IFC1>=1ANDC1<9THEN2350
107
+ 2330 PRINT" LT. SULU REPORTS, 'INCORRECT COURSE DATA, SIR!'":GOTO1990
108
+ 2350 X$="8":IFD(1)<0THENX$="0.2"
109
+ 2360 PRINT"WARP FACTOR (0-";X$;")";:INPUTW1:IFD(1)<0ANDW1>.2THEN2470
110
+ 2380 IFW1>0ANDW1<=8THEN2490
111
+ 2390 IFW1=0THEN1990
112
+ 2420 PRINT" CHIEF ENGINEER SCOTT REPORTS 'THE ENGINES WON'T TAKE";
113
+ 2430 PRINT" WARP ";W1;"!'":GOTO1990
114
+ 2470 PRINT"WARP ENGINES ARE DAMAGED. MAXIUM SPEED = WARP 0.2":GOTO1990
115
+ 2490 N=INT(W1*8+.5):IFE-N>=0THEN2590
116
+ 2500 PRINT"ENGINEERING REPORTS 'INSUFFICIENT ENERGY AVAILABLE"
117
+ 2510 PRINT" FOR MANEUVERING AT WARP";W1;"!'"
118
+ 2530 IFS<N-EORD(7)<0THEN1990
119
+ 2550 PRINT"DEFLECTOR CONTROL ROOM ACKNOWLEDGES";S;"UNITS OF ENERGY"
120
+ 2560 PRINT" PRESENTLY DEPLOYED TO SHIELDS."
121
+ 2570 GOTO1990
122
+ 2580 REM KLINGONS MOVE/FIRE ON MOVING STARSHIP . . .
123
+ 2590 FORI=1TOK3:IFK(I,3)=0THEN2700
124
+ 2610 A$=" ":Z1=K(I,1):Z2=K(I,2):GOSUB8670:GOSUB8590
125
+ 2660 K(I,1)=Z1:K(I,2)=Z2:A$="+K+":GOSUB8670
126
+ 2700 NEXTI:GOSUB6000:D1=0:D6=W1:IFW1>=1THEND6=1
127
+ 2770 FORI=1TO8:IFD(I)>=0THEN2880
128
+ 2790 D(I)=D(I)+D6:IFD(I)>-.1ANDD(I)<0THEND(I)=-.1:GOTO2880
129
+ 2800 IFD(I)<0THEN2880
130
+ 2810 IFD1<>1THEND1=1:PRINT"DAMAGE CONTROL REPORT: ";
131
+ 2840 PRINTTAB(8);:R1=I:GOSUB8790:PRINTG2$;" REPAIR COMPLETED."
132
+ 2880 NEXTI:IFRND(1)>.2THEN3070
133
+ 2910 R1=FNR(1):IFRND(1)>=.6THEN3000
134
+ 2930 D(R1)=D(R1)-(RND(1)*5+1):PRINT"DAMAGE CONTROL REPORT: ";
135
+ 2960 GOSUB8790:PRINTG2$;" DAMAGED":PRINT:GOTO3070
136
+ 3000 D(R1)=D(R1)+RND(1)*3+1:PRINT"DAMAGE CONTROL REPORT: ";
137
+ 3030 GOSUB8790:PRINTG2$;" STATE OF REPAIR IMPROVED":PRINT
138
+ 3060 REM BEGIN MOVING STARSHIP
139
+ 3070 A$=" ":Z1=INT(S1):Z2=INT(S2):GOSUB8670
140
+ 3110 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):X=S1:Y=S2
141
+ 3140 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):Q4=Q1:Q5=Q2
142
+ 3170 FORI=1TON:S1=S1+X1:S2=S2+X2:IFS1<1ORS1>=9ORS2<1ORS2>=9THEN3500
143
+ 3240 S8=INT(S1)*24+INT(S2)*3-26:IFMID$(Q$,S8,2)=" "THEN3360
144
+ 3320 S1=INT(S1-X1):S2=INT(S2-X2):PRINT"WARP ENGINES SHUT DOWN AT ";
145
+ 3350 PRINT"SECTOR";S1;",";S2;"DUE TO BAD NAVAGATION":GOTO3370
146
+ 3360 NEXTI:S1=INT(S1):S2=INT(S2)
147
+ 3370 A$="<*>":Z1=INT(S1):Z2=INT(S2):GOSUB8670:GOSUB3910:T8=1
148
+ 3430 IFW1<1THENT8=.1*INT(10*W1)
149
+ 3450 T=T+T8:IFT>T0+T9THEN6220
150
+ 3470 REM SEE IF DOCKED, THEN GET COMMAND
151
+ 3480 GOTO1980
152
+ 3490 REM EXCEEDED QUADRANT LIMITS
153
+ 3500 X=8*Q1+X+N*X1:Y=8*Q2+Y+N*X2:Q1=INT(X/8):Q2=INT(Y/8):S1=INT(X-Q1*8)
154
+ 3550 S2=INT(Y-Q2*8):IFS1=0THENQ1=Q1-1:S1=8
155
+ 3590 IFS2=0THENQ2=Q2-1:S2=8
156
+ 3620 X5=0:IFQ1<1THENX5=1:Q1=1:S1=1
157
+ 3670 IFQ1>8THENX5=1:Q1=8:S1=8
158
+ 3710 IFQ2<1THENX5=1:Q2=1:S2=1
159
+ 3750 IFQ2>8THENX5=1:Q2=8:S2=8
160
+ 3790 IFX5=0THEN3860
161
+ 3800 PRINT"LT. UHURA REPORTS MESSAGE FROM STARFLEET COMMAND:"
162
+ 3810 PRINT" 'PERMISSION TO ATTEMPT CROSSING OF GALACTIC PERIMETER"
163
+ 3820 PRINT" IS HEREBY *DENIED*. SHUT DOWN YOUR ENGINES.'"
164
+ 3830 PRINT"CHIEF ENGINEER SCOTT REPORTS 'WARP ENGINES SHUT DOWN"
165
+ 3840 PRINT" AT SECTOR";S1;",";S2;"OF QUADRANT";Q1;",";Q2;".'"
166
+ 3850 IFT>T0+T9THEN6220
167
+ 3860 IF8*Q1+Q2=8*Q4+Q5THEN3370
168
+ 3870 T=T+1:GOSUB3910:GOTO1320
169
+ 3900 REM MANEUVER ENERGY S/R **
170
+ 3910 E=E-N-10:IFE>=0THENRETURN
171
+ 3930 PRINT"SHIELD CONTROL SUPPLIES ENERGY TO COMPLETE THE MANEUVER."
172
+ 3940 S=S+E:E=0:IFS<=0THENS=0
173
+ 3980 RETURN
174
+ 3990 REM LONG RANGE SENSOR SCAN CODE
175
+ 4000 IFD(3)<0THENPRINT"LONG RANGE SENSORS ARE INOPERABLE":GOTO1990
176
+ 4030 PRINT"LONG RANGE SCAN FOR QUADRANT";Q1;",";Q2
177
+ 4040 O1$="-------------------":PRINTO1$
178
+ 4060 FORI=Q1-1TOQ1+1:N(1)=-1:N(2)=-2:N(3)=-3:FORJ=Q2-1TOQ2+1
179
+ 4120 IFI>0ANDI<9ANDJ>0ANDJ<9THENN(J-Q2+2)=G(I,J):Z(I,J)=G(I,J)
180
+ 4180 NEXTJ:FORL=1TO3:PRINT": ";:IFN(L)<0THENPRINT"*** ";:GOTO4230
181
+ 4210 PRINTRIGHT$(STR$(N(L)+1000),3);" ";
182
+ 4230 NEXTL:PRINT":":PRINTO1$:NEXTI:GOTO1990
183
+ 4250 REM PHASER CONTROL CODE BEGINS HERE
184
+ 4260 IFD(4)<0THENPRINT"PHASERS INOPERATIVE":GOTO1990
185
+ 4265 IFK3>0THEN4330
186
+ 4270 PRINT"SCIENCE OFFICER SPOCK REPORTS 'SENSORS SHOW NO ENEMY SHIPS"
187
+ 4280 PRINT" IN THIS QUADRANT'":GOTO1990
188
+ 4330 IFD(8)<0THENPRINT"COMPUTER FAILURE HAMPERS ACCURACY"
189
+ 4350 PRINT"PHASERS LOCKED ON TARGET; ";
190
+ 4360 PRINT"ENERGY AVAILABLE =";E;"UNITS"
191
+ 4370 INPUT"NUMBER OF UNITS TO FIRE";X:IFX<=0THEN1990
192
+ 4400 IFE-X<0THEN4360
193
+ 4410 E=E-X:IFD(7)<0THENX=X*RND(1)
194
+ 4450 H1=INT(X/K3):FORI=1TO3:IFK(I,3)<=0THEN4670
195
+ 4480 H=INT((H1/FND(0))*(RND(1)+2)):IFH>.15*K(I,3)THEN4530
196
+ 4500 PRINT"SENSORS SHOW NO DAMAGE TO ENEMY AT ";K(I,1);",";K(I,2):GOTO4670
197
+ 4530 K(I,3)=K(I,3)-H:PRINTH;"UNIT HIT ON KLINGON AT SECTOR";K(I,1);",";
198
+ 4550 PRINTK(I,2):IFK(I,3)<=0THENPRINT"*** KLINGON DESTROYED ***":GOTO4580
199
+ 4560 PRINT" (SENSORS SHOW";K(I,3);"UNITS REMAINING)":GOTO4670
200
+ 4580 K3=K3-1:K9=K9-1:Z1=K(I,1):Z2=K(I,2):A$=" ":GOSUB8670
201
+ 4650 K(I,3)=0:G(Q1,Q2)=G(Q1,Q2)-100:Z(Q1,Q2)=G(Q1,Q2):IFK9<=0THEN6370
202
+ 4670 NEXTI:GOSUB6000:GOTO1990
203
+ 4690 REM PHOTON TORPEDO CODE BEGINS HERE
204
+ 4700 IFP<=0THENPRINT"ALL PHOTON TORPEDOES EXPENDED":GOTO 1990
205
+ 4730 IFD(5)<0THENPRINT"PHOTON TUBES ARE NOT OPERATIONAL":GOTO1990
206
+ 4760 INPUT"PHOTON TORPEDO COURSE (1-9)";C1:IFC1=9THENC1=1
207
+ 4780 IFC1>=1ANDC1<9THEN4850
208
+ 4790 PRINT"ENSIGN CHEKOV REPORTS, 'INCORRECT COURSE DATA, SIR!'"
209
+ 4800 GOTO1990
210
+ 4850 X1=C(C1,1)+(C(C1+1,1)-C(C1,1))*(C1-INT(C1)):E=E-2:P=P-1
211
+ 4860 X2=C(C1,2)+(C(C1+1,2)-C(C1,2))*(C1-INT(C1)):X=S1:Y=S2
212
+ 4910 PRINT"TORPEDO TRACK:"
213
+ 4920 X=X+X1:Y=Y+X2:X3=INT(X+.5):Y3=INT(Y+.5)
214
+ 4960 IFX3<1ORX3>8ORY3<1ORY3>8THEN5490
215
+ 5000 PRINT" ";X3;",";Y3:A$=" ":Z1=X:Z2=Y:GOSUB8830
216
+ 5050 IFZ3<>0THEN4920
217
+ 5060 A$="+K+":Z1=X:Z2=Y:GOSUB8830:IFZ3=0THEN5210
218
+ 5110 PRINT"*** KLINGON DESTROYED ***":K3=K3-1:K9=K9-1:IFK9<=0THEN6370
219
+ 5150 FORI=1TO3:IFX3=K(I,1)ANDY3=K(I,2)THEN5190
220
+ 5180 NEXTI:I=3
221
+ 5190 K(I,3)=0:GOTO5430
222
+ 5210 A$=" * ":Z1=X:Z2=Y:GOSUB8830:IFZ3=0THEN5280
223
+ 5260 PRINT"STAR AT";X3;",";Y3;"ABSORBED TORPEDO ENERGY.":GOSUB6000:GOTO1990
224
+ 5280 A$=">!<":Z1=X:Z2=Y:GOSUB8830:IFZ3=0THEN4760
225
+ 5330 PRINT"*** STARBASE DESTROYED ***":B3=B3-1:B9=B9-1
226
+ 5360 IFB9>0ORK9>T-T0-T9THEN5400
227
+ 5370 PRINT"THAT DOES IT, CAPTAIN!! YOU ARE HEREBY RELIEVED OF COMMAND"
228
+ 5380 PRINT"AND SENTENCED TO 99 STARDATES AT HARD LABOR ON CYGNUS 12!!"
229
+ 5390 GOTO 6270
230
+ 5400 PRINT"STARFLEET COMMAND REVIEWING YOUR RECORD TO CONSIDER"
231
+ 5410 PRINT"COURT MARTIAL!":D0=0
232
+ 5430 Z1=X:Z2=Y:A$=" ":GOSUB8670
233
+ 5470 G(Q1,Q2)=K3*100+B3*10+S3:Z(Q1,Q2)=G(Q1,Q2):GOSUB6000:GOTO1990
234
+ 5490 PRINT"TORPEDO MISSED":GOSUB6000:GOTO1990
235
+ 5520 REM SHIELD CONTROL
236
+ 5530 IFD(7)<0THENPRINT"SHIELD CONTROL INOPERABLE":GOTO1990
237
+ 5560 PRINT"ENERGY AVAILABLE =";E+S;:INPUT"NUMBER OF UNITS TO SHIELDS";X
238
+ 5580 IFX<0ORS=XTHENPRINT"<SHIELDS UNCHANGED>":GOTO1990
239
+ 5590 IFX<=E+STHEN5630
240
+ 5600 PRINT"SHIELD CONTROL REPORTS 'THIS IS NOT THE FEDERATION TREASURY.'"
241
+ 5610 PRINT"<SHIELDS UNCHANGED>":GOTO1990
242
+ 5630 E=E+S-X:S=X:PRINT"DEFLECTOR CONTROL ROOM REPORT:"
243
+ 5660 PRINT" 'SHIELDS NOW AT";INT(S);"UNITS PER YOUR COMMAND.'":GOTO1990
244
+ 5680 REM DAMAGE CONTROL
245
+ 5690 IFD(6)>=0THEN5910
246
+ 5700 PRINT"DAMAGE CONTROL REPORT NOT AVAILABLE":IFD0=0THEN1990
247
+ 5720 D3=0:FORI=1TO8:IFD(I)<0THEND3=D3+.1
248
+ 5760 NEXTI:IFD3=0THEN1990
249
+ 5780 PRINT:D3=D3+D4:IFD3>=1THEND3=.9
250
+ 5810 PRINT"TECHNICIANS STANDING BY TO EFFECT REPAIRS TO YOUR SHIP;"
251
+ 5820 PRINT"ESTIMATED TIME TO REPAIR:";.01*INT(100*D3);"STARDATES"
252
+ 5840 INPUT "WILL YOU AUTHORIZE THE REPAIR ORDER (Y/N)";A$
253
+ 5860 IFA$<>"Y"THEN 1990
254
+ 5870 FORI=1TO8:IFD(I)<0THEND(I)=0
255
+ 5890 NEXTI:T=T+D3+.1
256
+ 5910 PRINT:PRINT"DEVICE STATE OF REPAIR":FORR1=1TO8
257
+ 5920 GOSUB8790:PRINTG2$;LEFT$(Z$,25-LEN(G2$));INT(D(R1)*100)*.01
258
+ 5950 NEXTR1:PRINT:IFD0<>0THEN5720
259
+ 5980 GOTO 1990
260
+ 5990 REM KLINGONS SHOOTING
261
+ 6000 IFK3<=0THENRETURN
262
+ 6010 IFD0<>0THENPRINT"STARBASE SHIELDS PROTECT THE ENTERPRISE":RETURN
263
+ 6040 FORI=1TO3:IFK(I,3)<=0THEN6200
264
+ 6060 H=INT((K(I,3)/FND(1))*(2+RND(1))):S=S-H:K(I,3)=K(I,3)/(3+RND(0))
265
+ 6080 PRINTH;"UNIT HIT ON ENTERPRISE FROM SECTOR";K(I,1);",";K(I,2)
266
+ 6090 IFS<=0THEN6240
267
+ 6100 PRINT" <SHIELDS DOWN TO";S;"UNITS>":IFH<20THEN6200
268
+ 6120 IFRND(1)>.6ORH/S<=.02THEN6200
269
+ 6140 R1=FNR(1):D(R1)=D(R1)-H/S-.5*RND(1):GOSUB8790
270
+ 6170 PRINT"DAMAGE CONTROL REPORTS ";G2$;" DAMAGED BY THE HIT'"
271
+ 6200 NEXTI:RETURN
272
+ 6210 REM END OF GAME
273
+ 6220 PRINT"IT IS STARDATE";T:GOTO 6270
274
+ 6240 PRINT:PRINT"THE ENTERPRISE HAS BEEN DESTROYED. THEN FEDERATION ";
275
+ 6250 PRINT"WILL BE CONQUERED":GOTO 6220
276
+ 6270 PRINT"THERE WERE";K9;"KLINGON BATTLE CRUISERS LEFT AT"
277
+ 6280 PRINT"THE END OF YOUR MISSION."
278
+ 6290 PRINT:PRINT:IFB9=0THEN6360
279
+ 6310 PRINT"THE FEDERATION IS IN NEED OF A NEW STARSHIP COMMANDER"
280
+ 6320 PRINT"FOR A SIMILAR MISSION -- IF THERE IS A VOLUNTEER,"
281
+ 6330 INPUT"LET HIM STEP FORWARD AND ENTER 'AYE'";A$:IFA$="AYE"THEN10
282
+ 6360 END
283
+ 6370 PRINT"CONGRULATION, CAPTAIN! THEN LAST KLINGON BATTLE CRUISER"
284
+ 6380 PRINT"MENACING THE FDERATION HAS BEEN DESTROYED.":PRINT
285
+ 6400 PRINT"YOUR EFFICIENCY RATING IS";1000*(K7/(T-T0))^2:GOTO6290
286
+ 6420 REM SHORT RANGE SENSOR SCAN & STARTUP SUBROUTINE
287
+ 6430 FORI=S1-1TOS1+1:FORJ=S2-1TOS2+1
288
+ 6450 IFINT(I+.5)<1ORINT(I+.5)>8ORINT(J+.5)<1ORINT(J+.5)>8THEN6540
289
+ 6490 A$=">!<":Z1=I:Z2=J:GOSUB8830:IFZ3=1THEN6580
290
+ 6540 NEXTJ:NEXTI:D0=0:GOTO6650
291
+ 6580 D0=1:C$="DOCKED":E=E0:P=P0
292
+ 6620 PRINT"SHIELDS DROPPED FOR DOCKING PURPOSES":S=0:GOTO6720
293
+ 6650 IFK3>0THENC$="*RED*":GOTO6720
294
+ 6660 C$="GREEN":IFE<E0*.1THENC$="YELLOW"
295
+ 6720 IFD(2)>=0THEN6770
296
+ 6730 PRINT:PRINT"*** SHORT RANGE SENSORS ARE OUT ***":PRINT:RETURN
297
+ 6770 O1$="---------------------------------":PRINTO1$:FORI=1TO8
298
+ 6820 FORJ=(I-1)*24+1TO(I-1)*24+22STEP3:PRINT" ";MID$(Q$,J,3);:NEXTJ
299
+ 6830 ONIGOTO6850,6900,6960,7020,7070,7120,7180,7240
300
+ 6850 PRINT" STARDATE ";INT(T*10)*.1:GOTO7260
301
+ 6900 PRINT" CONDITION ";C$:GOTO7260
302
+ 6960 PRINT" QUADRANT ";Q1;",";Q2:GOTO7260
303
+ 7020 PRINT" SECTOR ";S1;",";S2:GOTO7260
304
+ 7070 PRINT" PHOTON TORPEDOES ";INT(P):GOTO7260
305
+ 7120 PRINT" TOTAL ENERGY ";INT(E+S):GOTO7260
306
+ 7180 PRINT" SHIELDS ";INT(S):GOTO7260
307
+ 7240 PRINT" KLINGONS REMAINING";INT(K9)
308
+ 7260 NEXTI:PRINTO1$:RETURN
309
+ 7280 REM LIBRARY COMPUTER CODE
310
+ 7290 IFD(8)<0THENPRINT"COMPUTER DISABLED":GOTO1990
311
+ 7320 INPUT"COMPUTER ACTIVE AND AWAITING COMMAND";A:IFA<0THEN1990
312
+ 7350 PRINT:H8=1:ONA+1GOTO7540,7900,8070,8500,8150,7400
313
+ 7360 PRINT"FUNCTIONS AVAILABLE FROM LIBRARY-COMPUTER:"
314
+ 7370 PRINT" 0 = CUMULATIVE GALACTIC RECORD"
315
+ 7372 PRINT" 1 = STATUS REPORT"
316
+ 7374 PRINT" 2 = PHOTON TORPEDO DATA"
317
+ 7376 PRINT" 3 = STARBASE NAV DATA"
318
+ 7378 PRINT" 4 = DIRECTION/DISTANCE CALCULATOR"
319
+ 7380 PRINT" 5 = GALAXY 'REGION NAME' MAP":PRINT:GOTO7320
320
+ 7390 REM SETUP TO CHANGE CUM GAL RECORD TO GALAXY MAP
321
+ 7400 H8=0:G5=1:PRINT" THE GALAXY":GOTO7550
322
+ 7530 REM CUM GALACTIC RECORD
323
+ 7540 REM INPUT"DO YOU WANT A HARDCOPY? IS THE TTY ON (Y/N)";A$
324
+ 7542 REM IFA$="Y"THENPOKE1229,2:POKE1237,3:NULL1
325
+ 7543 PRINT:PRINT" ";
326
+ 7544 PRINT"COMPUTER RECORD OF GALAXY FOR QUADRANT";Q1;",";Q2
327
+ 7546 PRINT
328
+ 7550 PRINT" 1 2 3 4 5 6 7 8"
329
+ 7560 O1$=" ----- ----- ----- ----- ----- ----- ----- -----"
330
+ 7570 PRINTO1$:FORI=1TO8:PRINTI;:IFH8=0THEN7740
331
+ 7630 FORJ=1TO8:PRINT" ";:IFZ(I,J)=0THENPRINT"***";:GOTO7720
332
+ 7700 PRINTRIGHT$(STR$(Z(I,J)+1000),3);
333
+ 7720 NEXTJ:GOTO7850
334
+ 7740 Z4=I:Z5=1:GOSUB9030:J0=INT(15-.5*LEN(G2$)):PRINTTAB(J0);G2$;
335
+ 7800 Z5=5:GOSUB 9030:J0=INT(39-.5*LEN(G2$)):PRINTTAB(J0);G2$;
336
+ 7850 PRINT:PRINTO1$:NEXTI:PRINT:GOTO1990
337
+ 7890 REM STATUS REPORT
338
+ 7900 PRINT " STATUS REPORT:":X$="":IFK9>1THENX$="S"
339
+ 7940 PRINT"KLINGON";X$;" LEFT: ";K9
340
+ 7960 PRINT"MISSION MUST BE COMPLETED IN";.1*INT((T0+T9-T)*10);"STARDATES"
341
+ 7970 X$="S":IFB9<2THENX$="":IFB9<1THEN8010
342
+ 7980 PRINT"THE FEDERATION IS MAINTAINING";B9;"STARBASE";X$;" IN THE GALAXY"
343
+ 7990 GOTO5690
344
+ 8010 PRINT"YOUR STUPIDITY HAS LEFT YOU ON YOUR ON IN"
345
+ 8020 PRINT" THE GALAXY -- YOU HAVE NO STARBASES LEFT!":GOTO5690
346
+ 8060 REM TORPEDO, BASE NAV, D/D CALCULATOR
347
+ 8070 IFK3<=0THEN4270
348
+ 8080 X$="":IFK3>1THENX$="S"
349
+ 8090 PRINT"FROM ENTERPRISE TO KLINGON BATTLE CRUSER";X$
350
+ 8100 H8=0:FORI=1TO3:IFK(I,3)<=0THEN8480
351
+ 8110 W1=K(I,1):X=K(I,2)
352
+ 8120 C1=S1:A=S2:GOTO8220
353
+ 8150 PRINT"DIRECTION/DISTANCE CALCULATOR:"
354
+ 8160 PRINT"YOU ARE AT QUADRANT ";Q1;",";Q2;" SECTOR ";S1;",";S2
355
+ 8170 PRINT"PLEASE ENTER":INPUT" INITIAL COORDINATES (X,Y)";C1,A
356
+ 8200 INPUT" FINAL COORDINATES (X,Y)";W1,X
357
+ 8220 X=X-A:A=C1-W1:IFX<0THEN8350
358
+ 8250 IFA<0THEN8410
359
+ 8260 IFX>0THEN8280
360
+ 8270 IFA=0THENC1=5:GOTO8290
361
+ 8280 C1=1
362
+ 8290 IFABS(A)<=ABS(X)THEN8330
363
+ 8310 PRINT"DIRECTION =";C1+(((ABS(A)-ABS(X))+ABS(A))/ABS(A)):GOTO8460
364
+ 8330 PRINT"DIRECTION =";C1+(ABS(A)/ABS(X)):GOTO8460
365
+ 8350 IFA>0THENC1=3:GOTO8420
366
+ 8360 IFX<>0THENC1=5:GOTO8290
367
+ 8410 C1=7
368
+ 8420 IFABS(A)>=ABS(X)THEN8450
369
+ 8430 PRINT"DIRECTION =";C1+(((ABS(X)-ABS(A))+ABS(X))/ABS(X)):GOTO8460
370
+ 8450 PRINT"DIRECTION =";C1+(ABS(X)/ABS(A))
371
+ 8460 PRINT"DISTANCE =";SQR(X^2+A^2):IFH8=1THEN1990
372
+ 8480 NEXTI:GOTO1990
373
+ 8500 IFB3<>0THENPRINT"FROM ENTERPRISE TO STARBASE:":W1=B4:X=B5:GOTO8120
374
+ 8510 PRINT"MR. SPOCK REPORTS, 'SENSORS SHOW NO STARBASES IN THIS";
375
+ 8520 PRINT" QUADRANT.'":GOTO1990
376
+ 8580 REM FIND EMPTY PLACE IN QUADRANT (FOR THINGS)
377
+ 8590 R1=FNR(1):R2=FNR(1):A$=" ":Z1=R1:Z2=R2:GOSUB8830:IFZ3=0THEN8590
378
+ 8600 RETURN
379
+ 8660 REM INSERT IN STRING ARRAY FOR QUADRANT
380
+ 8670 S8=INT(Z2-.5)*3+INT(Z1-.5)*24+1
381
+ 8675 IF LEN(A$)<>3THEN PRINT"ERROR":STOP
382
+ 8680 IFS8=1THENQ$=A$+RIGHT$(Q$,189):RETURN
383
+ 8690 IFS8=190THENQ$=LEFT$(Q$,189)+A$:RETURN
384
+ 8700 Q$=LEFT$(Q$,S8-1)+A$+RIGHT$(Q$,190-S8):RETURN
385
+ 8780 REM PRINTS DEVICE NAME
386
+ 8790 ONR1GOTO8792,8794,8796,8798,8800,8802,8804,8806
387
+ 8792 G2$="WARP ENGINES":RETURN
388
+ 8794 G2$="SHORT RANGE SENSORS":RETURN
389
+ 8796 G2$="LONG RANGE SENSORS":RETURN
390
+ 8798 G2$="PHASER CONTROL":RETURN
391
+ 8800 G2$="PHOTON TUBES":RETURN
392
+ 8802 G2$="DAMAGE CONTROL":RETURN
393
+ 8804 G2$="SHIELD CONTROL":RETURN
394
+ 8806 G2$="LIBRARY-COMPUTER":RETURN
395
+ 8820 REM STRING COMPARISON IN QUADRANT ARRAY
396
+ 8830 Z1=INT(Z1+.5):Z2=INT(Z2+.5):S8=(Z2-1)*3+(Z1-1)*24+1:Z3=0
397
+ 8890 IFMID$(Q$,S8,3)<>A$THENRETURN
398
+ 8900 Z3=1:RETURN
399
+ 9010 REM QUADRANT NAME IN G2$ FROM Z4,Z5 (=Q1,Q2)
400
+ 9020 REM CALL WITH G5=1 TO GET REGION NAME ONLY
401
+ 9030 IFZ5<=4THENONZ4GOTO9040,9050,9060,9070,9080,9090,9100,9110
402
+ 9035 GOTO9120
403
+ 9040 G2$="ANTARES":GOTO9210
404
+ 9050 G2$="RIGEL":GOTO9210
405
+ 9060 G2$="PROCYON":GOTO9210
406
+ 9070 G2$="VEGA":GOTO9210
407
+ 9080 G2$="CANOPUS":GOTO9210
408
+ 9090 G2$="ALTAIR":GOTO9210
409
+ 9100 G2$="SAGITTARIUS":GOTO9210
410
+ 9110 G2$="POLLUX":GOTO9210
411
+ 9120 ONZ4GOTO9130,9140,9150,9160,9170,9180,9190,9200
412
+ 9130 G2$="SIRIUS":GOTO9210
413
+ 9140 G2$="DENEB":GOTO9210
414
+ 9150 G2$="CAPELLA":GOTO9210
415
+ 9160 G2$="BETELGEUSE":GOTO9210
416
+ 9170 G2$="ALDEBARAN":GOTO9210
417
+ 9180 G2$="REGULUS":GOTO9210
418
+ 9190 G2$="ARCTURUS":GOTO9210
419
+ 9200 G2$="SPICA"
420
+ 9210 IFG5<>1THENONZ5GOTO9230,9240,9250,9260,9230,9240,9250,9260
421
+ 9220 RETURN
422
+ 9230 G2$=G2$+" I":RETURN
423
+ 9240 G2$=G2$+" II":RETURN
424
+ 9250 G2$=G2$+" III":RETURN
425
+ 9260 G2$=G2$+" IV":RETURN
@@ -0,0 +1,21 @@
1
+ PHA
2
+ 300
3
+ LRS
4
+ NAV
5
+ 8
6
+ 0.2
7
+ NAV
8
+ 3
9
+ 0.2
10
+ NAV
11
+ 5
12
+ 0.2
13
+ NAV
14
+ 6
15
+ 0.2
16
+ NAV
17
+ 5
18
+ 1
19
+ TORP
20
+ 2.5
21
+ NO
@@ -0,0 +1,151 @@
1
+
2
+
3
+
4
+
5
+
6
+
7
+
8
+
9
+
10
+
11
+
12
+ ,------*------,
13
+ ,------------- '--- ------'
14
+ '-------- --' / /
15
+ ,---' '-------/ /--,
16
+ '----------------'
17
+
18
+ THE USS ENTERPRISE --- NCC-1701
19
+
20
+
21
+
22
+
23
+
24
+ YOUR ORDERS ARE AS FOLLOWS:
25
+ DESTROY THE 11 KLINGON WARSHIPS WHICH HAVE INVADED
26
+ THE GALAXY BEFORE THEY CAN ATTACK FEDERATION HEADQUARTERS
27
+ ON STARDATE 3032 THIS GIVES YOU 32 DAYS. THERE ARE
28
+ 5 STARBASES IN THE GALAXY FOR RESUPPLYING YOUR SHIP
29
+
30
+
31
+ YOUR MISSION BEGINS WITH YOUR STARSHIP LOCATED
32
+ IN THE GALACTIC QUADRANT, 'ALDEBARAN I'.
33
+
34
+ COMBAT AREA CONDITION RED
35
+ SHIELDS DANGEROUSLY LOW
36
+ ---------------------------------
37
+ * STARDATE 3000
38
+ * * CONDITION *RED*
39
+ * +K+ QUADRANT 5 , 5
40
+ * <*> SECTOR 4 , 6
41
+ PHOTON TORPEDOES 10
42
+ TOTAL ENERGY 3000
43
+ * * SHIELDS 0
44
+ * KLINGONS REMAINING 11
45
+ ---------------------------------
46
+ COMMAND? PHA
47
+ PHASERS LOCKED ON TARGET; ENERGY AVAILABLE = 3000 UNITS
48
+ NUMBER OF UNITS TO FIRE? 300
49
+ 861 UNIT HIT ON KLINGON AT SECTOR 3 , 6
50
+ *** KLINGON DESTROYED ***
51
+ COMMAND? LRS
52
+ LONG RANGE SCAN FOR QUADRANT 5 , 5
53
+ -------------------
54
+ : 008 : 002 : 002 :
55
+ -------------------
56
+ : 103 : 008 : 006 :
57
+ -------------------
58
+ : 006 : 008 : 008 :
59
+ -------------------
60
+ COMMAND? NAV
61
+ COURSE (0-9)? 8
62
+ WARP FACTOR (0-8)? 0.2
63
+ ---------------------------------
64
+ * STARDATE 3000.2
65
+ * * CONDITION GREEN
66
+ * QUADRANT 5 , 5
67
+ * SECTOR 6 , 8
68
+ PHOTON TORPEDOES 10
69
+ <*> TOTAL ENERGY 2688
70
+ * * SHIELDS 0
71
+ * KLINGONS REMAINING 10
72
+ ---------------------------------
73
+ COMMAND? NAV
74
+ COURSE (0-9)? 3
75
+ WARP FACTOR (0-8)? 0.2
76
+ ---------------------------------
77
+ * STARDATE 3000.3
78
+ * * CONDITION GREEN
79
+ * QUADRANT 5 , 5
80
+ * <*> SECTOR 4 , 8
81
+ PHOTON TORPEDOES 10
82
+ TOTAL ENERGY 2676
83
+ * * SHIELDS 0
84
+ * KLINGONS REMAINING 10
85
+ ---------------------------------
86
+ COMMAND? NAV
87
+ COURSE (0-9)? 5
88
+ WARP FACTOR (0-8)? 0.2
89
+ DAMAGE CONTROL REPORT: LIBRARY-COMPUTER STATE OF REPAIR IMPROVED
90
+
91
+ ---------------------------------
92
+ * STARDATE 3000.5
93
+ * * CONDITION GREEN
94
+ * QUADRANT 5 , 5
95
+ * <*> SECTOR 4 , 6
96
+ PHOTON TORPEDOES 10
97
+ TOTAL ENERGY 2664
98
+ * * SHIELDS 0
99
+ * KLINGONS REMAINING 10
100
+ ---------------------------------
101
+ COMMAND? NAV
102
+ COURSE (0-9)? 6
103
+ WARP FACTOR (0-8)? 0.2
104
+ ---------------------------------
105
+ * STARDATE 3000.7
106
+ * * CONDITION GREEN
107
+ * QUADRANT 5 , 5
108
+ * SECTOR 6 , 4
109
+ PHOTON TORPEDOES 10
110
+ <*> TOTAL ENERGY 2652
111
+ * * SHIELDS 0
112
+ * KLINGONS REMAINING 10
113
+ ---------------------------------
114
+ COMMAND? NAV
115
+ COURSE (0-9)? 5
116
+ WARP FACTOR (0-8)? 1
117
+
118
+ NOW ENTERING CANOPUS IV QUADRANT . . .
119
+
120
+ COMBAT AREA CONDITION RED
121
+ SHIELDS DANGEROUSLY LOW
122
+ ---------------------------------
123
+ STARDATE 3001.7
124
+ * +K+ CONDITION *RED*
125
+ * * QUADRANT 5 , 4
126
+ SECTOR 6 , 4
127
+ PHOTON TORPEDOES 10
128
+ <*> TOTAL ENERGY 2634
129
+ SHIELDS 0
130
+ KLINGONS REMAINING 10
131
+ ---------------------------------
132
+ COMMAND? TORP
133
+ PHOTON TORPEDO COURSE (1-9)? 2.5
134
+ TORPEDO TRACK:
135
+ 5 , 5
136
+ 4 , 5
137
+ 3 , 6
138
+ 2 , 6
139
+ 1 , 7
140
+ TORPEDO MISSED
141
+ 73 UNIT HIT ON ENTERPRISE FROM SECTOR 2 , 5
142
+
143
+ THE ENTERPRISE HAS BEEN DESTROYED. THEN FEDERATION WILL BE CONQUERED
144
+ IT IS STARDATE 3001.8
145
+ THERE WERE 10 KLINGON BATTLE CRUISERS LEFT AT
146
+ THE END OF YOUR MISSION.
147
+
148
+
149
+ THE FEDERATION IS IN NEED OF A NEW STARSHIP COMMANDER
150
+ FOR A SIMILAR MISSION -- IF THERE IS A VOLUNTEER,
151
+ LET HIM STEP FORWARD AND ENTER 'AYE'? NO