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,54 @@
1
+ 10 PRINT TAB(34);"STARS"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 30 PRINT:PRINT:PRINT
4
+ 100 REM *** STARS - PEOPLE'S COMPUTER CENTER, MENLO PARK, CA
5
+ 140 REM *** A IS LIMIT ON NUMBER, M IS NUMBER OF GUESSES
6
+ 150 A=100:M=7
7
+ 170 INPUT "DO YOU WANT INSTRUCTIONS";A$
8
+ 190 IF LEFT$(A$,1)="N" THEN 280
9
+ 200 REM *** INSTRUCTIONS ON HOW TO PLAY
10
+ 210 PRINT "I AM THINKING OF A WHOLE NUMBER FROM 1 TO";A
11
+ 220 PRINT "TRY TO GUESS MY NUMBER. AFTER YOU GUESS, I"
12
+ 230 PRINT "WILL TYPE ONE OR MORE STARS (*). THE MORE"
13
+ 240 PRINT "STARS I TYPE, THE CLOSER YOU ARE TO MY NUMBER."
14
+ 250 PRINT "ONE STAR (*) MEANS FAR AWAY, SEVEN STARS (*******)"
15
+ 260 PRINT "MEANS REALLY CLOSE! YOU GET";M;"GUESSES."
16
+ 270 REM *** COMPUTER THINKS OF A NUMBER
17
+ 280 PRINT
18
+ 290 PRINT
19
+ 300 X=INT(A*RND(1)+1)
20
+ 310 PRINT "OK, I AM THINKING OF A NUMBER, START GUESSING."
21
+ 320 REM *** GUESSING BEGINS, HUMAN GETS M GUESSES
22
+ 330 FOR K=1 TO M
23
+ 340 PRINT
24
+ 350 PRINT "YOUR GUESS";
25
+ 360 INPUT G
26
+ 370 IF G=X THEN 600
27
+ 380 D=ABS(G-X)
28
+ 390 IF D>=64 THEN 510
29
+ 400 IF D>=32 THEN 500
30
+ 410 IF D>=16 THEN 490
31
+ 420 IF D>=8 THEN 480
32
+ 430 IF D>=4 THEN 470
33
+ 440 IF D>=2 THEN 460
34
+ 450 PRINT "*";
35
+ 460 PRINT "*";
36
+ 470 PRINT "*";
37
+ 480 PRINT "*";
38
+ 490 PRINT "*";
39
+ 500 PRINT "*";
40
+ 510 PRINT "*";
41
+ 520 PRINT
42
+ 530 NEXT K
43
+ 540 REM *** DID NOT GUESS IN M GUESSES
44
+ 550 PRINT
45
+ 560 PRINT "SORRY, THAT'S";M;"GUESSES. THE NUMBER WAS";X
46
+ 580 GOTO 650
47
+ 590 REM *** WE HAVE A WINNER
48
+ 600 PRINT:FOR N=1 TO 79
49
+ 610 PRINT "*";
50
+ 620 NEXT N
51
+ 630 PRINT:PRINT
52
+ 640 PRINT "YOU GOT IT IN";K;"GUESSES!!! LET'S PLAY AGAIN..."
53
+ 650 GOTO 280
54
+ 660 END
@@ -0,0 +1,15 @@
1
+ YES
2
+ 50
3
+ 75
4
+ 25
5
+ 38
6
+ 62
7
+ 66
8
+ 58
9
+ 40
10
+ 80
11
+ 60
12
+ 70
13
+ 75
14
+ 78
15
+ 73
@@ -0,0 +1,70 @@
1
+ STARS
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+ DO YOU WANT INSTRUCTIONS? YES
7
+ I AM THINKING OF A WHOLE NUMBER FROM 1 TO 100
8
+ TRY TO GUESS MY NUMBER. AFTER YOU GUESS, I
9
+ WILL TYPE ONE OR MORE STARS (*). THE MORE
10
+ STARS I TYPE, THE CLOSER YOU ARE TO MY NUMBER.
11
+ ONE STAR (*) MEANS FAR AWAY, SEVEN STARS (*******)
12
+ MEANS REALLY CLOSE! YOU GET 7 GUESSES.
13
+
14
+
15
+ OK, I AM THINKING OF A NUMBER, START GUESSING.
16
+
17
+ YOUR GUESS? 50
18
+ *****
19
+
20
+ YOUR GUESS? 75
21
+ ***
22
+
23
+ YOUR GUESS? 25
24
+ ***
25
+
26
+ YOUR GUESS? 38
27
+ ***
28
+
29
+ YOUR GUESS? 62
30
+ *****
31
+
32
+ YOUR GUESS? 66
33
+ ****
34
+
35
+ YOUR GUESS? 58
36
+ ******
37
+
38
+ SORRY, THAT'S 7 GUESSES. THE NUMBER WAS 55
39
+
40
+
41
+ OK, I AM THINKING OF A NUMBER, START GUESSING.
42
+
43
+ YOUR GUESS? 40
44
+ **
45
+
46
+ YOUR GUESS? 80
47
+ ****
48
+
49
+ YOUR GUESS? 60
50
+ ****
51
+
52
+ YOUR GUESS? 70
53
+ ******
54
+
55
+ YOUR GUESS? 75
56
+ ******
57
+
58
+ YOUR GUESS? 78
59
+ *****
60
+
61
+ YOUR GUESS? 73
62
+ *******
63
+
64
+ SORRY, THAT'S 7 GUESSES. THE NUMBER WAS 72
65
+
66
+
67
+ OK, I AM THINKING OF A NUMBER, START GUESSING.
68
+
69
+ YOUR GUESS?
70
+ Error on line 360: No more input
@@ -0,0 +1,232 @@
1
+ 10 PRINT TAB(30);"STOCK MARKET"
2
+ 20 PRINT TAB(15);"CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"
3
+ 30 PRINT: PRINT: PRINT
4
+ 100 REM STOCK MARKET SIMULATION -STOCK-
5
+ 101 REM REVISED 8/18/70 (D. PESSEL, L. BRAUN, C. LOSIK)
6
+ 102 REM IMP VRBLS: A-MRKT TRND SLP; B5-BRKRGE FEE; C-TTL CSH ASSTS;
7
+ 103 REM C5-TTL CSH ASSTS (TEMP); C(I)-CHNG IN STK VAL; D-TTL ASSTS;
8
+ 104 REM E1,E2-LRG CHNG MISC; I-STCK #; I1,I2-STCKS W LRG CHNG;
9
+ 105 REM N1,N2-LRG CHNG DAY CNTS; P5-TTL DAYS PRCHSS; P(I)-PRTFL CNTNTS;
10
+ 106 REM Q9-NEW CYCL?; S4-SGN OF A; S5-TTL DYS SLS; S(I)-VALUE/SHR;
11
+ 107 REM T-TTL STCK ASSTS; T5-TTL VAL OF TRNSCTNS;
12
+ 108 REM W3-LRG CHNG; X1-SMLL CHNG(<$1); Z4,Z5,Z6-NYSE AVE.; Z(I)-TRNSCT
13
+ 110 DIM S(5),P(5),Z(5),C(5)
14
+ 112 REM SLOPE OF MARKET TREND:A (SAME FOR ALL STOCKS)
15
+ 113 LET X=1
16
+ 114 LET A=INT((RND(X)/10)*100+.5)/100
17
+ 115 LET T5=0
18
+ 116 LET X9=0
19
+ 117 LET N1=0
20
+ 118 LET N2=0
21
+ 119 LET E1=0
22
+ 120 LET E2=0
23
+ 121 REM INTRODUCTION
24
+ 122 PRINT "DO YOU WANT THE INSTRUCTIONS (YES-TYPE 1, NO-TYPE 0)";
25
+ 123 INPUT Z9
26
+ 124 PRINT
27
+ 125 PRINT
28
+ 126 IF Z9<1 THEN 200
29
+ 130 PRINT "THIS PROGRAM PLAYS THE STOCK MARKET. YOU WILL BE GIVEN"
30
+ 132 PRINT "$10,000 AND MAY BUY OR SELL STOCKS. THE STOCK PRICES WILL"
31
+ 134 PRINT "BE GENERATED RANDOMLY AND THEREFORE THIS MODEL DOES NOT"
32
+ 135 PRINT "REPRESENT EXACTLY WHAT HAPPENS ON THE EXCHANGE. A TABLE"
33
+ 136 PRINT "OF AVAILABLE STOCKS, THEIR PRICES, AND THE NUMBER OF SHARES"
34
+ 137 PRINT "IN YOUR PORTFOLIO WILL BE PRINTED. FOLLOWING THIS, THE"
35
+ 138 PRINT "INITIALS OF EACH STOCK WILL BE PRINTED WITH A QUESTION"
36
+ 139 PRINT "MARK. HERE YOU INDICATE A TRANSACTION. TO BUY A STOCK"
37
+ 140 PRINT "TYPE +NNN, TO SELL A STOCK TYPE -NNN, WHERE NNN IS THE"
38
+ 141 PRINT "NUMBER OF SHARES. A BROKERAGE FEE OF 1% WILL BE CHARGED"
39
+ 142 PRINT "ON ALL TRANSACTIONS. NOTE THAT IF A STOCK'S VALUE DROPS"
40
+ 143 PRINT "TO ZERO IT MAY REBOUND TO A POSITIVE VALUE AGAIN. YOU"
41
+ 144 PRINT "HAVE $10,000 TO INVEST. USE INTEGERS FOR ALL YOUR INPUTS."
42
+ 145 PRINT "(NOTE: TO GET A 'FEEL' FOR THE MARKET RUN FOR AT LEAST"
43
+ 146 PRINT "10 DAYS)"
44
+ 147 PRINT "-----GOOD LUCK!-----"
45
+ 200 REM GENERATION OF STOCK TABLE; INPUT REQUESTS
46
+ 210 REM INITIAL STOCK VALUES
47
+ 220 LET S(1)=100
48
+ 230 LET S(2)=85
49
+ 240 LET S(3)=150
50
+ 250 LET S(4)=140
51
+ 260 LET S(5)=110
52
+ 265 REM INITIAL T8 - # DAYS FOR FIRST TREND SLOPE (A)
53
+ 266 LET T8=INT(4.99*RND(X)+1)
54
+ 267 REM RANDOMIZE SIGN OF FIRST TREND SLOPE (A)
55
+ 268 IF RND(X)>.5 THEN 270
56
+ 269 LET A=-A
57
+ 270 REM RANDOMIZE INITIAL VALUES
58
+ 280 GOSUB 830
59
+ 285 REM INITIAL PORTFOLIO CONTENTS
60
+ 290 FOR I=1 TO 5
61
+ 300 LET P(I)=0
62
+ 305 LET Z(I)=0
63
+ 310 NEXT I
64
+ 320 PRINT
65
+ 330 PRINT
66
+ 333 REM INITIALIZE CASH ASSETS:C
67
+ 335 LET C=10000
68
+ 338 REM PRINT INITIAL PORTFOLIO
69
+ 340 PRINT "STOCK"," ","INITIALS","PRICE/SHARE"
70
+ 350 PRINT "INT. BALLISTIC MISSILES"," IBM",S(1)
71
+ 352 PRINT "RED CROSS OF AMERICA"," RCA",S(2)
72
+ 354 PRINT "LICHTENSTEIN, BUMRAP & JOKE"," LBJ",S(3)
73
+ 356 PRINT "AMERICAN BANKRUPT CO."," ABC",S(4)
74
+ 358 PRINT "CENSURED BOOKS STORE"," CBS",S(5)
75
+ 360 PRINT
76
+ 361 REM NYSE AVERAGE:Z5; TEMP. VALUE:Z4; NET CHANGE:Z6
77
+ 363 LET Z4=Z5
78
+ 364 LET Z5=0
79
+ 365 LET T=0
80
+ 370 FOR I=1 TO 5
81
+ 375 LET Z5=Z5+S(I)
82
+ 380 LET T=T+S(I)*P(I)
83
+ 390 NEXT I
84
+ 391 LET Z5=INT(100*(Z5/5)+.5)/100
85
+ 392 LET Z6=INT((Z5-Z4)*100+.5)/100
86
+ 393 REM TOTAL ASSETS:D
87
+ 394 LET D=T+C
88
+ 395 IF X9>0 THEN 398
89
+ 396 PRINT "NEW YORK STOCK EXCHANGE AVERAGE: "Z5
90
+ 397 GOTO 399
91
+ 398 PRINT "NEW YORK STOCK EXCHANGE AVERAGE: "Z5"NET CHANGE"Z6
92
+ 399 PRINT
93
+ 400 LET T=INT(100*T+.5)/100
94
+ 401 PRINT "TOTAL STOCK ASSETS ARE $";T
95
+ 403 LET C=INT(100*C+.5)/100
96
+ 405 PRINT "TOTAL CASH ASSETS ARE $";C
97
+ 407 LET D=INT(100*D+.5)/100
98
+ 408 PRINT "TOTAL ASSETS ARE $";D
99
+ 410 PRINT
100
+ 411 IF X9=0 THEN 416
101
+ 412 PRINT "DO YOU WISH TO CONTINUE (YES-TYPE 1, NO-TYPE 0)";
102
+ 413 INPUT Q9
103
+ 414 IF Q9<1 THEN 998
104
+ 416 REM INPUT TRANSACTIONS
105
+ 420 PRINT "WHAT IS YOUR TRANSACTION IN"
106
+ 430 PRINT "IBM";
107
+ 440 INPUT Z(1)
108
+ 450 PRINT "RCA";
109
+ 460 INPUT Z(2)
110
+ 470 PRINT "LBJ";
111
+ 480 INPUT Z(3)
112
+ 490 PRINT "ABC";
113
+ 500 INPUT Z(4)
114
+ 510 PRINT "CBS";
115
+ 520 INPUT Z(5)
116
+ 525 PRINT
117
+ 530 REM TOTAL DAY'S PURCHASES IN $:P5
118
+ 540 LET P5=0
119
+ 550 REM TOTAL DAY'S SALES IN $:S5
120
+ 560 LET S5=0
121
+ 570 FOR I=1 TO 5
122
+ 575 LET Z(I)=INT(Z(I)+.5)
123
+ 580 IF Z(I)<=0 THEN 610
124
+ 590 LET P5=P5+Z(I)*S(I)
125
+ 600 GOTO 620
126
+ 610 LET S5=S5-Z(I)*S(I)
127
+ 612 IF -Z(I)<=P(I) THEN 620
128
+ 614 PRINT "YOU HAVE OVERSOLD A STOCK; TRY AGAIN."
129
+ 616 GOTO 420
130
+ 620 NEXT I
131
+ 622 REM TOTAL VALUE OF TRANSACTIONS:T5
132
+ 625 LET T5=P5+S5
133
+ 630 REM BROKERAGE FEE:B5
134
+ 640 LET B5=INT(.01*T5*100+.5)/100
135
+ 650 REM CASH ASSETS=OLD CASH ASSETS-TOTAL PURCHASES
136
+ 652 REM -BROKERAGE FEES+TOTAL SALES:C5
137
+ 654 LET C5=C-P5-B5+S5
138
+ 656 IF C5>=0 THEN 674
139
+ 658 PRINT "YOU HAVE USED $";-C5" MORE THAN YOU HAVE."
140
+ 660 GOTO 420
141
+ 674 LET C=C5
142
+ 675 REM CALCULATE NEW PORTFOLIO
143
+ 680 FOR I=1 TO 5
144
+ 690 LET P(I)=P(I)+Z(I)
145
+ 700 NEXT I
146
+ 710 REM CALCULATE NEW STOCK VALUES
147
+ 720 GOSUB 830
148
+ 750 REM PRINT PORTFOLIO
149
+ 751 REM BELL RINGING-DIFFERENT ON MANY COMPUTERS
150
+ 755 PRINT
151
+ 756 PRINT "********** END OF DAY'S TRADING **********"
152
+ 757 PRINT
153
+ 758 PRINT
154
+ 759 IF X9<1 THEN 769
155
+ 769 PRINT "STOCK","PRICE/SHARE","HOLDINGS", "VALUE", "NET PRICE CHANGE"
156
+ 770 PRINT "IBM", S(1), P(1), S(1)*P(1), C(1)
157
+ 771 PRINT "RCA", S(2), P(2), S(2)*P(2), C(2)
158
+ 772 PRINT "LBJ", S(3), P(3), S(3)*P(3), C(3)
159
+ 773 PRINT "ABC", S(4), P(4), S(4)*P(4), C(4)
160
+ 774 PRINT "CBS", S(5), P(5), S(5)*P(5), C(5)
161
+ 775 LET X9=1
162
+ 780 PRINT
163
+ 790 PRINT
164
+ 810 GOTO 360
165
+ 829 REM NEW STOCK VALUES - SUBROUTINE
166
+ 830 REM RANDOMLY PRODUCE NEW STOCK VALUES BASED ON PREVIOUS
167
+ 831 REM DAY'S VALUES
168
+ 832 REM N1,N2 ARE RANDOM NUMBERS OF DAYS WHICH RESPECTIVELY
169
+ 833 REM DETERMINE WHEN STOCK I1 WILL INCREASE 10 PTS. AND STOCK
170
+ 834 REM I2 WILL DECREASE 10 PTS.
171
+ 840 REM IF N1 DAYS HAVE PASSED, PICK AN I1, SET E1, DETERMINE NEW N1
172
+ 841 IF N1>0 THEN 850
173
+ 845 LET I1=INT(4.99*RND(X)+1)
174
+ 846 LET N1=INT(4.99*RND(X)+1)
175
+ 847 LET E1=1
176
+ 850 REM IF N2 DAYS HAVE PASSED, PICK AN I2, SET E2, DETERMINE NEW N2
177
+ 851 IF N2>0 THEN 860
178
+ 855 LET I2=INT(4.99*RND(X)+1)
179
+ 856 LET N2=INT(4.99*RND(X)+1)
180
+ 857 LET E2=1
181
+ 860 REM DEDUCT ONE DAY FROM N1 AND N2
182
+ 861 LET N1=N1-1
183
+ 862 LET N2=N2-1
184
+ 890 REM LOOP THROUGH ALL STOCKS
185
+ 900 FOR I=1 TO 5
186
+ 910 LET X1=RND(X)
187
+ 915 IF X1>.25 THEN 920
188
+ 916 LET X1=.25
189
+ 917 GOTO 935
190
+ 920 IF X1>.5 THEN 925
191
+ 921 LET X1=.5
192
+ 922 GOTO 935
193
+ 925 IF X1>.75 THEN 930
194
+ 926 LET X1=.75
195
+ 927 GOTO 935
196
+ 930 LET X1=0.0
197
+ 931 REM BIG CHANGE CONSTANT:W3 (SET TO ZERO INITIALLY)
198
+ 935 LET W3=0
199
+ 936 IF E1<1 THEN 945
200
+ 937 IF INT(I1+.5)<>INT(I+.5) THEN 945
201
+ 938 REM ADD 10 PTS. TO THIS STOCK; RESET E1
202
+ 939 LET W3=10
203
+ 943 LET E1=0
204
+ 945 IF E2<1 THEN 955
205
+ 947 IF INT(I2+.5)<>INT(I+.5) THEN 955
206
+ 948 REM SUBTRACT 10 PTS. FROM THIS STOCK; RESET E2
207
+ 949 LET W3=W3-10
208
+ 953 LET E2=0
209
+ 954 REM C(I) IS CHANGE IN STOCK VALUE
210
+ 955 LET C(I)=INT(A*S(I))+X1+INT(3-6*RND(X)+.5)+W3
211
+ 956 LET C(I)=INT(100*C(I)+.5)/100
212
+ 957 LET S(I)=S(I)+C(I)
213
+ 960 IF S(I)>0 THEN 967
214
+ 964 LET C(I)=0
215
+ 965 LET S(I)=0
216
+ 966 GOTO 970
217
+ 967 LET S(I)=INT(100*S(I)+.5)/100
218
+ 970 NEXT I
219
+ 972 REM AFTER T8 DAYS RANDOMLY CHANGE TREND SIGN AND SLOPE
220
+ 973 LET T8=T8-1
221
+ 974 IF T8<1 THEN 985
222
+ 980 RETURN
223
+ 985 REM RANDOMLY CHANGE TREND SIGN AND SLOPE (A), AND DURATION
224
+ 986 REM OF TREND (T8)
225
+ 990 LET T8=INT(4.99*RND(X)+1)
226
+ 992 LET A=INT((RND(X)/10)*100+.5)/100
227
+ 993 LET S4=RND(X)
228
+ 994 IF S4<=.5 THEN 997
229
+ 995 LET A=-A
230
+ 997 RETURN
231
+ 998 PRINT "HOPE YOU HAD FUN!!"
232
+ 999 END
@@ -0,0 +1,30 @@
1
+ 1
2
+ 10
3
+ 10
4
+ 10
5
+ 10
6
+ 10
7
+ 1
8
+ 10
9
+ 10
10
+ 10
11
+ 10
12
+ 10
13
+ 5
14
+ 5
15
+ 5
16
+ 5
17
+ 5
18
+ 1
19
+ 0
20
+ 0
21
+ 0
22
+ 0
23
+ 0
24
+ 1
25
+ -15
26
+ -15
27
+ -15
28
+ -15
29
+ -15
30
+ 0
@@ -0,0 +1,156 @@
1
+ STOCK MARKET
2
+ CREATIVE COMPUTING MORRISTOWN, NEW JERSEY
3
+
4
+
5
+
6
+ DO YOU WANT THE INSTRUCTIONS (YES-TYPE 1, NO-TYPE 0)? 1
7
+
8
+
9
+ THIS PROGRAM PLAYS THE STOCK MARKET. YOU WILL BE GIVEN
10
+ $10,000 AND MAY BUY OR SELL STOCKS. THE STOCK PRICES WILL
11
+ BE GENERATED RANDOMLY AND THEREFORE THIS MODEL DOES NOT
12
+ REPRESENT EXACTLY WHAT HAPPENS ON THE EXCHANGE. A TABLE
13
+ OF AVAILABLE STOCKS, THEIR PRICES, AND THE NUMBER OF SHARES
14
+ IN YOUR PORTFOLIO WILL BE PRINTED. FOLLOWING THIS, THE
15
+ INITIALS OF EACH STOCK WILL BE PRINTED WITH A QUESTION
16
+ MARK. HERE YOU INDICATE A TRANSACTION. TO BUY A STOCK
17
+ TYPE +NNN, TO SELL A STOCK TYPE -NNN, WHERE NNN IS THE
18
+ NUMBER OF SHARES. A BROKERAGE FEE OF 1% WILL BE CHARGED
19
+ ON ALL TRANSACTIONS. NOTE THAT IF A STOCK'S VALUE DROPS
20
+ TO ZERO IT MAY REBOUND TO A POSITIVE VALUE AGAIN. YOU
21
+ HAVE $10,000 TO INVEST. USE INTEGERS FOR ALL YOUR INPUTS.
22
+ (NOTE: TO GET A 'FEEL' FOR THE MARKET RUN FOR AT LEAST
23
+ 10 DAYS)
24
+ -----GOOD LUCK!-----
25
+
26
+
27
+ STOCK INITIALS PRICE/SHARE
28
+ INT. BALLISTIC MISSILES IBM 102
29
+ RED CROSS OF AMERICA RCA 87.5
30
+ LICHTENSTEIN, BUMRAP & JOKE LBJ 167.75
31
+ AMERICAN BANKRUPT CO. ABC 140
32
+ CENSURED BOOKS STORE CBS 118.25
33
+
34
+ NEW YORK STOCK EXCHANGE AVERAGE: 123.1
35
+
36
+ TOTAL STOCK ASSETS ARE $ 0
37
+ TOTAL CASH ASSETS ARE $ 10000
38
+ TOTAL ASSETS ARE $ 10000
39
+
40
+ WHAT IS YOUR TRANSACTION IN
41
+ IBM? 10
42
+ RCA? 10
43
+ LBJ? 10
44
+ ABC? 10
45
+ CBS? 10
46
+
47
+
48
+ ********** END OF DAY'S TRADING **********
49
+
50
+
51
+ STOCK PRICE/SHARE HOLDINGS VALUE NET PRICE CHANGE
52
+ IBM 105 10 1050 3
53
+ RCA 88.5 10 885 1
54
+ LBJ 175.75 10 1757.5 8
55
+ ABC 149 10 1490 9
56
+ CBS 126 10 1260 7.75
57
+
58
+
59
+
60
+ NEW YORK STOCK EXCHANGE AVERAGE: 128.85 NET CHANGE 5.75
61
+
62
+ TOTAL STOCK ASSETS ARE $ 6442.5
63
+ TOTAL CASH ASSETS ARE $ 3783.45
64
+ TOTAL ASSETS ARE $ 10225.95
65
+
66
+ DO YOU WISH TO CONTINUE (YES-TYPE 1, NO-TYPE 0)? 1
67
+ WHAT IS YOUR TRANSACTION IN
68
+ IBM? 10
69
+ RCA? 10
70
+ LBJ? 10
71
+ ABC? 10
72
+ CBS? 10
73
+
74
+ YOU HAVE USED $ 2723.48 MORE THAN YOU HAVE.
75
+ WHAT IS YOUR TRANSACTION IN
76
+ IBM? 5
77
+ RCA? 5
78
+ LBJ? 5
79
+ ABC? 5
80
+ CBS? 5
81
+
82
+
83
+ ********** END OF DAY'S TRADING **********
84
+
85
+
86
+ STOCK PRICE/SHARE HOLDINGS VALUE NET PRICE CHANGE
87
+ IBM 110 15 1650 5
88
+ RCA 94 15 1410 5.5
89
+ LBJ 183.75 15 2756.25 8
90
+ ABC 159.75 15 2396.25 10.75
91
+ CBS 131.75 15 1976.25 5.75
92
+
93
+
94
+
95
+ NEW YORK STOCK EXCHANGE AVERAGE: 135.85 NET CHANGE 7
96
+
97
+ TOTAL STOCK ASSETS ARE $ 10188.75
98
+ TOTAL CASH ASSETS ARE $ 529.99
99
+ TOTAL ASSETS ARE $ 10718.74
100
+
101
+ DO YOU WISH TO CONTINUE (YES-TYPE 1, NO-TYPE 0)? 1
102
+ WHAT IS YOUR TRANSACTION IN
103
+ IBM? 0
104
+ RCA? 0
105
+ LBJ? 0
106
+ ABC? 0
107
+ CBS? 0
108
+
109
+
110
+ ********** END OF DAY'S TRADING **********
111
+
112
+
113
+ STOCK PRICE/SHARE HOLDINGS VALUE NET PRICE CHANGE
114
+ IBM 114.5 15 1717.5 4.5
115
+ RCA 97.25 15 1458.75 3.25
116
+ LBJ 195.5 15 2932.5 11.75
117
+ ABC 168 15 2520 8.25
118
+ CBS 138.25 15 2073.75 6.5
119
+
120
+
121
+
122
+ NEW YORK STOCK EXCHANGE AVERAGE: 142.7 NET CHANGE 6.85
123
+
124
+ TOTAL STOCK ASSETS ARE $ 10702.5
125
+ TOTAL CASH ASSETS ARE $ 529.99
126
+ TOTAL ASSETS ARE $ 11232.49
127
+
128
+ DO YOU WISH TO CONTINUE (YES-TYPE 1, NO-TYPE 0)? 1
129
+ WHAT IS YOUR TRANSACTION IN
130
+ IBM? -15
131
+ RCA? -15
132
+ LBJ? -15
133
+ ABC? -15
134
+ CBS? -15
135
+
136
+
137
+ ********** END OF DAY'S TRADING **********
138
+
139
+
140
+ STOCK PRICE/SHARE HOLDINGS VALUE NET PRICE CHANGE
141
+ IBM 127.75 0 0 13.25
142
+ RCA 108 0 0 10.75
143
+ LBJ 217 0 0 21.5
144
+ ABC 186.25 0 0 18.25
145
+ CBS 154 0 0 15.75
146
+
147
+
148
+
149
+ NEW YORK STOCK EXCHANGE AVERAGE: 158.6 NET CHANGE 15.9
150
+
151
+ TOTAL STOCK ASSETS ARE $ 0
152
+ TOTAL CASH ASSETS ARE $ 11125.46
153
+ TOTAL ASSETS ARE $ 11125.46
154
+
155
+ DO YOU WISH TO CONTINUE (YES-TYPE 1, NO-TYPE 0)? 0
156
+ HOPE YOU HAD FUN!!