basic101 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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