home *** CD-ROM | disk | FTP | other *** search
/ PCDisk Magazine Disks / PCDisk Magazine - Disk 4.img / FUNNELS.BAS (.txt) < prev    next >
Encoding:
GW-BASIC  |  1984-07-09  |  14.5 KB  |  773 lines

  1. 10  ' ---------------------------------
  2. 20  ' -- TITLE:    Funnels and Buckets
  3. 30  ' -- Copyright (C) 1984 by Data Sage
  4. 70  ' ---------------------------------
  5. 80  '
  6. 140  DEFINT A-Z
  7. 150  DQ  = 5 : CL  = 3 : AC  = DQ * CL : CD$ = CHR$(27) : DO  = -1
  8. 200  FJ  = 1 : DP  = 0 : AI  = -1 : CJ  = 1 : AJ  = 0 : EB  = 12
  9. 270  BQ  = 11 : FI  = 14 : FH  = 15 : CY  = 10 : BY  = 3 : DA  = 20 
  10. 330  DJ  = 5  : BA  = 30 : BH  = 4  : CN$ = CHR$(200)+CHR$(187)+"           "+CHR$(201)+CHR$(188)
  11. 370  CO  = LEN(CN$) : BS  = 2 : CF  = 15 : AK$ = "               "
  12. 430  FE  = 10
  13. 440  FD  = 55
  14. 450  DIM FC$(5)
  15. 460  FC$(1) = "A" 
  16. 470  FC$(2) = "S" 
  17. 480  FC$(3) = "M"
  18. 490  FC$(4) = "D"
  19. 500  FC$(5) = "X"
  20. 510  DY  = 11 : DX  = 55 : EU  = 12 : ES  = 55 : DL  = 19
  21. 560  DK  = 10 : AF  = 1<UNK! {0009}>: AE  = 3  : EN  =  1 : EK  = 61
  22. 610  CU$ = CHR$(218)
  23. 620  EF$ = CHR$(191)
  24. 630  CR$ = CHR$(192)
  25. 640  ED$ = CHR$(217)
  26. 650  AP$ = CHR$(196)
  27. 660  AQ$ = CHR$(179) 
  28. 670  CV$ = CHR$(201)
  29. 680  EG$ = CHR$(187)
  30. 690  BX$ = CHR$(205)
  31. 700  AX$ = CHR$(186)
  32. 710  AS$ = CHR$(200)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(205)+CHR$(188)
  33. 720  AO  = 23
  34. 730  FA  = AO - CL + 1
  35. 740  AY  = 13
  36. 750  DIM CT(5) 
  37. 760  CT(1) = 2  : CT(2) = 17 : CT(3) = 32 : CT(4) = 47 : CT(5) = 62
  38. 810  DIM AV(5)
  39. 820  DIM BM$(5, 3) 
  40. 830  DIM EQ(5, 3)  
  41. 840  DIM CE$(3)
  42. 850  CE$(1) = "\ |  |  |  | /"  : CE$(2) = "--          --" : CE$(3) = "/ |  |  |  | \"
  43. 880  AL$    = "              "
  44. 890  DH     = 2
  45. 900  DIM CZ$(2)  
  46. 910  CZ$(1) = CHR$(2)
  47. 920  CZ$(2) = CHR$(234)
  48. 930  BF     = 2
  49. 940  DIM AZ$(2)
  50. 950  AZ$(1) = CHR$(1)
  51. 960  AZ$(2) = CHR$(19)
  52. 970  DIM ET$(6)
  53. 980  ET$(0) = "FASTEST "
  54. 990  ET$(1) = "FASTER  "
  55. 1000  ET$(2) = "FAST    "
  56. 1010  ET$(3) = "SLOW    "
  57. 1020  ET$(4) = "SLOWER  "
  58. 1030  ET$(5) = "SLOWEST "
  59. 1040  AM$ = " " : EV  =  2
  60. 1060  BZ  = 80 - (CO + 1)
  61. 1070  EY$ = "> > >    F U N N E L S  &  B U C K E T S    < < <"
  62. 1080  FG$ = "Version 1.00"
  63. 1090  BN$ = "Copyright (C) 1984 by Data Sage"
  64. 1100  EC$ = "All Rights Reserved"
  65. 1110  CG$ = "O3AAAAO4D4O3F+ABBBA;"
  66. 1120  CH$ = "O3GGBBAAAGF+4EED4D4;"
  67. 1130  ER$ = "O3CCA2G2F2E2F1;"
  68. 1140  DI$ = "O5C32E32G32;"
  69. 1150  BG$ = "O1E32F32D32;"
  70. 1160  '
  71. 1210  GOSUB 1920 
  72. 1220  GOSUB 2190 
  73. 1230  GOSUB 1570 
  74. 1240  GOSUB 3320 
  75. 1250  GOSUB 4250 
  76. 1260  GOSUB 6530 
  77. 1270  GOSUB 7290 
  78. 1280  GOSUB 8500 
  79. 1290  EH = 6
  80. 1300  WHILE (CM < AC)
  81. 1310  BL = EV
  82. 1320  BW = CJ
  83. 1330  WHILE ((BL <= BZ) AND (CM < AC))
  84. 1340  IF DN = FJ THEN GOSUB 2050
  85. 1360  IF (EA = FJ AND DM = FJ) THEN GOSUB 5240
  86. 1370  IF (EA = FJ AND DM = FJ) THEN GOSUB 5580
  87. 1380  IF (EA = FJ AND DM = FJ) THEN GOSUB 5920
  88. 1390  IF (EA = FJ) THEN GOSUB 6110  
  89. 1400  GOSUB 7580
  90. 1410  WEND
  91. 1420  '
  92. 1430  BL = BZ
  93. 1440  BW = AI
  94. 1450  WHILE ((BL >= EV) AND (CM < AC))
  95. 1460  IF DN = FJ THEN GOSUB 2050 
  96. 1480  IF (EA = FJ AND DM = FJ) THEN GOSUB 5240 
  97. 1490  IF (EA = FJ AND DM = FJ) THEN GOSUB 5580 
  98. 1500  IF (EA = FJ AND DM = FJ) THEN GOSUB 5920 
  99. 1510  IF (EA = FJ) THEN GOSUB 6110  
  100. 1520  GOSUB 7580
  101. 1530  WEND
  102. 1540  WEND
  103. 1550  GOSUB 9580 
  104. 1560  END
  105. 1570  '
  106. 1620  BP = FI
  107. 1630  AT = 3
  108. 1640  FOR AR = 1 TO DQ
  109. 1650  AV(AR) = 0
  110. 1660  FOR CW = 0 TO CL
  111. 1670  BM$(AR, CW) = " "
  112. 1680  EQ(AR, CW)  =  -1
  113. 1690  NEXT
  114. 1700  NEXT
  115. 1710  AD$ = CHR$(1)
  116. 1720  BO  = 0
  117. 1730  DU  = 1
  118. 1740  BV  = 1
  119. 1750  BU  = 0
  120. 1760  CM  = 0
  121. 1770  DN  = FJ
  122. 1780  DM  = FJ
  123. 1790  BT  = 200
  124. 1800  AU  = 2
  125. 1810  EJ# = 0
  126. 1820  EM  = 0
  127. 1830  DF  = 10
  128. 1840  DB  = 10
  129. 1850  DE  = DO
  130. 1860  BE  = 10
  131. 1870  BB  = 10
  132. 1880  BD  = DO
  133. 1910  RETURN
  134. 1920  '
  135. 1970  ON ERROR GOTO 10090
  136. 1980  KEY OFF
  137. 1990  SCREEN 0,0,0 
  138. 2000  WIDTH 80 
  139. 2010  COLOR FH, AJ, AJ 
  140. 2011  DW = DO
  141. 2012  FB$ = "X"
  142. 2013  CC   = 2 * BS
  143. 2020  CLS
  144. 2030  GOSUB 6440 
  145. 2040  RETURN
  146. 2050  '
  147. 2100  IF BW = CJ THEN LOCATE EH, BL - 1, DP
  148. 2110  IF BW = AI THEN LOCATE EH, BL + CO, DP 
  149. 2120  PRINT AM$;
  150. 2130  LOCATE EH, BL, DP
  151. 2140  PRINT CN$;
  152. 2150  IF BL = BJ THEN EA = FJ
  153. 2160  IF BW = CJ THEN BL = BL + 1
  154. 2170  IF BW = AI THEN BL = BL - 1
  155. 2180  RETURN
  156. 2190  '
  157. 2250  PLAY "MB T125 O3 L8"
  158. 2260  PLAY "X" + VARPTR$(CG$)
  159. 2290  COLOR FH, AJ, AJ
  160. 2300  EZ = 1
  161. 2310  AN = 9
  162. 2320  CS = 1
  163. 2330  EE = 80
  164. 2340  GOSUB 4840  
  165. 2360  PLAY "X" + VARPTR$(CH$) + "D4P8"
  166. 2390  COLOR EB, AJ, AJ
  167. 2400  DT$ = EY$
  168. 2410  EH = 3
  169. 2420  GOSUB 3120
  170. 2430  COLOR FI, AJ, AJ
  171. 2440  DT$ = FG$
  172. 2450  EH = 5
  173. 2460  GOSUB 3220 
  174. 2470  DT$ = BN$
  175. 2480  EH = 6
  176. 2490  GOSUB 3120
  177. 2500  EH = 7
  178. 2510  LOCATE EH, (40 - (LEN(EC$))/2), DP
  179. 2520  PRINT EC$;
  180. 2540  PLAY "X" + VARPTR$(CG$)
  181. 2570  COLOR FH, AJ, AJ
  182. 2580  EZ = 10
  183. 2590  AN = 23
  184. 2600  CS = 3
  185. 2610  EE = 77
  186. 2620  GOSUB 4840  
  187. 2640  PLAY "X" + VARPTR$(CH$) + "D2"
  188. 2670  COLOR BQ, AJ, AJ
  189. 2680  LOCATE 12, (40 - (LEN("???   WHAT IS THIS   ???"))/2), DP
  190. 2690  PRINT "???   WHAT IS THIS   ???";
  191. 2700  COLOR FI, AJ, AJ
  192. 2710  LOCATE 14, 7, DP
  193. 2720  PRINT "     POP the problems before they fill your buckets.  To POP them,";
  194. 2730  LOCATE 15, 7, DP
  195. 2740  PRINT "type in the right answer.  The more you POP, the higher your score.";
  196. 2750  COLOR EB, AJ, AJ
  197. 2760  LOCATE 17, 7, DP
  198. 2770  PRINT CZ$(1); 
  199. 2780  COLOR FI, AJ, AJ
  200. 2790  LOCATE 17, 12, DP
  201. 2800  PRINT "Watch for MEGGIE!  If you type the answer when she appears,";
  202. 2810  COLOR EB, AJ, AJ
  203. 2820  LOCATE 18, 7, DP
  204. 2830  PRINT CZ$(2); 
  205. 2840  COLOR FI, AJ, AJ
  206. 2850  LOCATE 18, 12, DP
  207. 2860  PRINT "    you get BONUS points.";
  208. 2870  COLOR EB, AJ, AJ
  209. 2880  LOCATE 20, 7, DP
  210. 2890  PRINT AZ$(1); 
  211. 2900  COLOR FI, AJ, AJ
  212. 2910  LOCATE 20, 12, DP
  213. 2920  PRINT "But watch OUT for BURGLAR!  He'll steal points if you type";
  214. 2930  COLOR EB, AJ, AJ
  215. 2940  LOCATE 21, 7, DP
  216. 2950  PRINT AZ$(2); 
  217. 2960  COLOR FI, AJ, AJ
  218. 2970  LOCATE 21, 12, DP
  219. 2980  PRINT "    an answer when he's around.";
  220. 2990  COLOR BQ, AJ, AJ
  221. 3000  LOCATE 25, (40 - (LEN("Press SPACE BAR to start."))/2), DP
  222. 3010  PRINT "Press SPACE BAR to start.";
  223. 3020  COLOR BQ, AJ, AJ
  224. 3030  DT$ = EY$
  225. 3040  EH = 3
  226. 3050  GOSUB 3220
  227. 3060  COLOR FH, AJ, AJ
  228. 3090  PLAY "MF"
  229. 3100  IF INKEY$ = "" THEN 3100
  230. 3110  RETURN
  231. 3120  '
  232. 3170  FOR BL = 3 TO (40 - (LEN(DT$))/2)
  233. 3180  LOCATE EH, BL, DP
  234. 3190  PRINT " "; DT$;
  235. 3200  NEXT BL
  236. 3210  RETURN
  237. 3220  '
  238. 3270  FOR BL = (78 - LEN(DT$)) TO (40 - (LEN(DT$))/2) STEP -1
  239. 3280  LOCATE EH, BL, DP
  240. 3290  PRINT DT$; " ";
  241. 3300  NEXT BL
  242. 3310  RETURN
  243. 3320  '
  244. 3380  CLS
  245. 3400  COLOR FH, AJ, AJ
  246. 3410  EZ = 1
  247. 3420  AN = 5
  248. 3430  CS = 1
  249. 3440  EE = 80
  250. 3450  GOSUB 4840  
  251. 3480  COLOR BQ, AJ, AJ
  252. 3490  EH = 3
  253. 3500  LOCATE EH, (40 - (LEN(EY$))/2), DP
  254. 3510  PRINT EY$;
  255. 3540  COLOR FH, AJ, AJ
  256. 3550  EZ = 6 
  257. 3560  AN = 17
  258. 3570  CS = 3
  259. 3580  EE = 77
  260. 3590  GOSUB 4840  
  261. 3620  COLOR BQ, AJ, AJ
  262. 3630  LOCATE 8, (40 - (LEN("---    MAKE THE GAME THE WAY YOU LIKE IT    ---"))/2), DP
  263. 3640  PRINT "---    MAKE THE GAME THE WAY YOU LIKE IT    ---";
  264. 3650  COLOR FI, AJ, AJ
  265. 3660  LOCATE 10, 17, DP
  266. 3670  PRINT "Press   1   to choose Problems       (        )";
  267. 3680  LOCATE 11, 17, DP
  268. 3690  PRINT "Press   2   to choose Sound Effects  (        )";
  269. 3700  LOCATE 12, 17, DP
  270. 3710  PRINT "Press   3   to choose Speed!         (        )";
  271. 3720  LOCATE 14, 17, DP
  272. 3730  PRINT "Press  ESC  to Quit";
  273. 3740  LOCATE 15, 17, DP
  274. 3750  PRINT "Press  SPACE BAR to Start Playing";
  275. 3760  GOSUB 4000
  276. 3790  COLOR FH, AJ, AJ
  277. 3800  EZ = 18
  278. 3810  AN = 23
  279. 3820  CS = 1
  280. 3830  EE = 80
  281. 3840  GOSUB 4840  
  282. 3870  LOCATE EZ + 1, CS + 5, DP
  283. 3880  PRINT "CHOOSE:";
  284. 3910  EO$ = INKEY$
  285. 3920  WHILE (EO$ <> " ")
  286. 3930  IF EO$ = "1"  THEN GOSUB 8190 : GOSUB 4000
  287. 3940  IF EO$ = "2"  THEN GOSUB 7810 : GOSUB 4000
  288. 3950  IF EO$ = "3"  THEN GOSUB 7990 : GOSUB 4000
  289. 3960  IF EO$ = CD$ THEN GOSUB 9580  : GOSUB 4000
  290. 3970  EO$ = INKEY$
  291. 3980  WEND
  292. 3990  RETURN 1250
  293. 4000  '
  294. 4050  COLOR BQ, AJ, AJ
  295. 4060  LOCATE FE, FD
  296. 4070  IF FB$ = "A" THEN PRINT "ADD     ";
  297. 4080  IF FB$ = "S" THEN PRINT "SUBTRACT";
  298. 4090  IF FB$ = "M" THEN PRINT "MULTIPLY";
  299. 4100  IF FB$ = "D" THEN PRINT "DIVIDE  ";
  300. 4110  IF FB$ = "X" THEN PRINT "MIX     ";
  301. 4120  LOCATE DY, DX
  302. 4130  IF DW = FJ THEN PRINT "QUIET   ";
  303. 4140  IF DW =  DO THEN PRINT "SOUND   ";
  304. 4150  LOCATE EU, ES
  305. 4160  PRINT ET$(CC/BS);
  306. 4170  LOCATE DL, DK + 5, DP
  307. 4180  PRINT SPC(40);
  308. 4190  LOCATE DL + 2, DK, DP
  309. 4200  PRINT SPC(65);
  310. 4210  LOCATE DL + 3, DK, DP
  311. 4220  PRINT SPC(65);
  312. 4230  COLOR FH, AJ, AJ
  313. 4240  RETURN
  314. 4250  '
  315. 4300  CLS
  316. 4330  COLOR FI, AJ, AJ
  317. 4340  EH = 3
  318. 4350  LOCATE EH, (40 - (LEN("F U N N E L S  &  B U C K E T S"))/2), DP
  319. 4360  PRINT "F U N N E L S  &  B U C K E T S";
  320. 4380  COLOR FH, AJ, AJ
  321. 4390  LOCATE AF, AE
  322. 4400  PRINT "     ANSWER";
  323. 4410  EZ = AF + 1
  324. 4420  AN = EZ + 2
  325. 4430  CS = AE
  326. 4440  EE = CS + 16
  327. 4450  GOSUB 4840    
  328. 4470  LOCATE EN, EK 
  329. 4480  PRINT "      SCORE";
  330. 4490  CS = EK
  331. 4500  EE = CS + 16
  332. 4510  GOSUB 4840 
  333. 4520  LOCATE EN + 2, 68
  334. 4530  PRINT EJ#;
  335. 4550  COLOR FI, AJ, AJ
  336. 4560  EH = 5
  337. 4570  BL = 1
  338. 4580  LOCATE EH, BL
  339. 4590  FOR CQ = BL TO (80 - BL)
  340. 4600  PRINT BX$;
  341. 4610  NEXT
  342. 4620  LOCATE EH, 1
  343. 4630  PRINT CV$;
  344. 4640  LOCATE EH, 79
  345. 4650  PRINT EG$;
  346. 4670  COLOR FH, AJ, AJ
  347. 4680  FOR AT = 1 TO DQ
  348. 4690  AU = CT(AT)
  349. 4700  GOSUB 5100 
  350. 4710  BJ = AU + 2
  351. 4720  FOR CW = 0 TO (CL - 1)
  352. 4730  LOCATE AO - CW, BJ, DP
  353. 4740  PRINT BM$(AT, CW);
  354. 4750  IF EQ(AT, CW) >= 0 THEN PRINT " ="; EQ(AT, CW);
  355. 4760  NEXT
  356. 4770  NEXT
  357. 4790  COLOR FI, AJ, AJ
  358. 4800  LOCATE 25, 21, DP
  359. 4810  PRINT "Press  ESC  to change choices or quit.";
  360. 4820  COLOR FH, AJ, AJ
  361. 4830  RETURN
  362. 4840  '
  363. 4890  LOCATE AN, CS, DP
  364. 4900  PRINT CR$;
  365. 4910  LOCATE EZ, CS, DP
  366. 4920  PRINT CU$;
  367. 4930  FOR DV = EZ + 1 TO AN - 1
  368. 4940  LOCATE DV, CS
  369. 4950  PRINT AQ$;
  370. 4960  LOCATE DV, EE
  371. 4970  PRINT AQ$;
  372. 4980  NEXT
  373. 4990  LOCATE AN, EE, DP
  374. 5000  PRINT ED$;
  375. 5010  LOCATE EZ, EE, DP
  376. 5020  PRINT EF$;
  377. 5030  FOR DV = CS + 1 TO EE - 1
  378. 5040  LOCATE EZ, DV
  379. 5050  PRINT AP$;
  380. 5060  LOCATE AN, DV
  381. 5070  PRINT AP$;
  382. 5080  NEXT
  383. 5090  RETURN
  384. 5100  '
  385. 5150  FOR AW = FA TO AO
  386. 5160  LOCATE AW, AU, DP
  387. 5170  PRINT AX$;
  388. 5180  LOCATE AW, AU + AY, DP
  389. 5190  PRINT AX$;
  390. 5200  NEXT
  391. 5210  LOCATE AO + 1, AU, DP
  392. 5220  PRINT AS$;
  393. 5230  RETURN
  394. 5240  '
  395. 5290  IF (BD = FJ) THEN RETURN
  396. 5300  IF (DE = FJ) THEN GOTO 5460
  397. 5330  CI = INT(RND(1) * DA) + 1
  398. 5340  IF CI >= DA THEN DE = FJ
  399. 5350  IF DE = DO THEN RETURN
  400. 5380  DC = DC + 1
  401. 5390  DF = (INT(RND(1) * 11) + 7)
  402. 5400  DB = (INT(RND(1) * 76) + 2)
  403. 5410  FOR CX = 1 TO DH
  404. 5420  LOCATE DF + CX - 1, DB, DP
  405. 5430  PRINT CZ$(CX);
  406. 5440  NEXT CX
  407. 5450  IF DW = DO THEN PLAY "X" + VARPTR$(DI$)
  408. 5460  '
  409. 5480  DC = DC + 1
  410. 5490  WHILE ((DC >= DJ) OR (EA = DO)) 
  411. 5500  FOR CX = 0 TO (DH - 1)
  412. 5510  LOCATE DF + CX, DB, DP
  413. 5520  PRINT " ";
  414. 5530  NEXT CX
  415. 5540  DC = 0
  416. 5550  DE = DO
  417. 5560  WEND
  418. 5570  RETURN
  419. 5580  '
  420. 5630  IF (DE = FJ) THEN RETURN
  421. 5640  IF (BD = FJ) THEN GOTO 5800
  422. 5670  CI = INT(RND(1) * BA) + 1
  423. 5680  IF CI >= BA THEN BD = FJ
  424. 5690  IF BD = DO THEN RETURN
  425. 5720  BC = BC + 1
  426. 5730  BE = (INT(RND(1) * 11) + 7)
  427. 5740  BB = (INT(RND(1) * 79) + 1)
  428. 5750  FOR CX = 1 TO BF
  429. 5760  LOCATE BE + CX - 1, BB, DP
  430. 5770  PRINT AZ$(CX);
  431. 5780  NEXT CX
  432. 5790  IF DW = DO THEN PLAY "X" + VARPTR$(BG$)
  433. 5800  '
  434. 5820  BC = BC + 1
  435. 5830  WHILE ((BC >= BH) OR (EA = DO)) 
  436. 5840  FOR CX = 0 TO (BF - 1)
  437. 5850  LOCATE BE + CX, BB, DP
  438. 5860  PRINT " ";
  439. 5870  NEXT CX
  440. 5880  BC = 0
  441. 5890  BD = DO
  442. 5900  WEND
  443. 5910  RETURN
  444. 5920  '
  445. 5970  WHILE (BK > FA - 3)
  446. 5980  DU = BO + 1
  447. 5990  GOSUB 8390 
  448. 6000  RETURN
  449. 6010  WEND
  450. 6020  '
  451. 6030  IF DW = DO THEN SOUND CK, BY
  452. 6040  CK = CK - 50
  453. 6050  LOCATE BK, BJ, DP
  454. 6060  PRINT AK$;
  455. 6070  BK = BK + 1
  456. 6080  LOCATE BK, BJ, DP
  457. 6090  PRINT CA$;
  458. 6100  RETURN
  459. 6110  '
  460. 6160  WHILE (DM = FJ)     
  461. 6170  CB = 0
  462. 6180  DM    = DO
  463. 6190  WEND
  464. 6200  CB = CB + 1
  465. 6210  IF CB >= CC THEN DM = FJ
  466. 6220  RETURN
  467. 6350  '
  468. 6400  FOR BR = 1 TO BT 
  469. 6410  GOSUB 6440
  470. 6420  NEXT BR
  471. 6430  RETURN
  472. 6440  '
  473. 6490  EW$ = MID$(TIME$,7,2)
  474. 6500  EX = VAL(EW$)
  475. 6510  RANDOMIZE EX
  476. 6520  RETURN
  477. 6530  '
  478. 6580  AA = INT(RND(1) * CY)
  479. 6590  AG = INT(RND(1) * CY)
  480. 6600  IF FB$ = "A" THEN GOSUB 6790
  481. 6610  IF FB$ = "S" THEN GOSUB 6880 
  482. 6620  IF FB$ = "M" THEN GOSUB 6980 
  483. 6630  IF FB$ = "D" THEN GOSUB 7070
  484. 6640  IF FB$ = "X" THEN GOSUB 7180
  485. 6650  AB$ = CHR$(AA + &H30)
  486. 6660  AH$ = CHR$(AG + &H30)
  487. 6670  IF AA >= 10 THEN AB$ = CHR$((AA\10) + &H30) + CHR$((AA MOD 10) + &H30) 
  488. 6680  IF AG >= 10 THEN AH$ = CHR$((AG\10) + &H30) + CHR$((AG MOD 10) + &H30) 
  489. 6690  CA$ = AB$+" "+EP$+" "+AH$+" ="
  490. 6700  BU = 0
  491. 6710  BV = 0
  492. 6720  CQ = 1
  493. 6730  WHILE ((BO\CQ) > 0)
  494. 6740  BV = BV + 1
  495. 6750  CQ = CQ * 10
  496. 6760  WEND
  497. 6770  IF BO = 0 THEN BV = 1
  498. 6780  RETURN
  499. 6790  '
  500. 6840  EP$ = "+"
  501. 6850  BO = (AA + AG)
  502. 6860  EL# = 5
  503. 6870  RETURN
  504. 6880  '
  505. 6930  EP$ = "-"
  506. 6940  IF AG > AA THEN SWAP AA, AG
  507. 6950  BO = (AA - AG)
  508. 6960  EL# = 10
  509. 6970  RETURN
  510. 6980  '
  511. 7030  EP$ = "x"
  512. 7040  BO = (AA * AG)
  513. 7050  EL# = 15
  514. 7060  RETURN
  515. 7070  '
  516. 7120  EP$ = CHR$(246)
  517. 7130  IF AG = 0 THEN AG = 1
  518. 7140  BO = (AA * AG)
  519. 7150  SWAP BO, AA
  520. 7160  EL# = 20
  521. 7170  RETURN
  522. 7180  '
  523. 7230  FF = INT(RND(1) * 4)
  524. 7240  IF FF = 0 THEN GOSUB 6790 
  525. 7250  IF FF = 1 THEN GOSUB 6880 
  526. 7260  IF FF = 2 THEN GOSUB 6980 
  527. 7270  IF FF = 3 THEN GOSUB 7070 
  528. 7280  RETURN
  529. 7290  '
  530. 7340  COLOR FH, AJ, AJ
  531. 7350  GOSUB 5100
  532. 7360  IF CM >= AC THEN RETURN
  533. 7370  BI = INT(RND(1) * (DQ - 1)/2) + 1
  534. 7380  IF BW = CJ  THEN AT = AT + BI
  535. 7390  IF BW = AI THEN AT = AT - BI
  536. 7400  IF AT > DQ THEN AT = 1
  537. 7410  IF AT < 1 THEN AT = DQ
  538. 7420  IF AV(AT) >= CL THEN GOTO 7370
  539. 7430  AU = CT(AT)
  540. 7440  BJ = CT(AT) + 2
  541. 7450  GOSUB 7480 
  542. 7460  BK = 7
  543. 7470  RETURN
  544. 7480  '
  545. 7530  BP = BP + 1
  546. 7540  IF BP > 15 THEN BP = 2
  547. 7550  IF BP = 8 THEN BP = 10
  548. 7560  COLOR BP, AJ, AJ
  549. 7570  RETURN
  550. 7580  '
  551. 7630  AD$ = INKEY$
  552. 7640  IF AD$ = "" THEN RETURN
  553. 7650  IF ASC(AD$) >= &H30 THEN IF ASC(AD$) <= &H39 THEN GOSUB 7680 
  554. 7660  IF AD$ = CD$ THEN GOSUB 3320
  555. 7670  RETURN
  556. 7680  '
  557. 7730  DR = ASC(AD$) - &H30
  558. 7740  EI = 10 ^ BU
  559. 7750  DU = (DU * EI) + DR
  560. 7760  BU = BU + 1
  561. 7770  LOCATE 3,AE + 7
  562. 7780  PRINT DU;
  563. 7790  IF BU = BV THEN GOSUB 8390 
  564. 7800  RETURN
  565. 7810  '
  566. 7860  COLOR BQ, AJ, AJ
  567. 7870  LOCATE DL, (40 - (LEN("2  -  SOUND EFFECTS"))/2), DP
  568. 7880  PRINT "2  -  SOUND EFFECTS";
  569. 7890  COLOR FH, AJ, AJ
  570. 7900  LOCATE DL + 2, DK, DP 
  571. 7910  PRINT "1 for SOUND            2 for QUIET";
  572. 7920  EO$ = INKEY$
  573. 7930  IF EO$ = "" THEN 7920
  574. 7940  IF EO$ = "1" THEN DW = DO
  575. 7950  IF EO$ = "2" THEN DW = FJ
  576. 7960  GOSUB 4000 
  577. 7970  EO$ = ""
  578. 7980  RETURN
  579. 7990  '
  580. 8040  COLOR BQ, AJ, AJ
  581. 8050  LOCATE DL, (40 - (LEN("3  -  SPEED"))/2), DP
  582. 8060  PRINT "3  -  SPEED";
  583. 8070  COLOR FH, AJ, AJ
  584. 8080  LOCATE DL + 2, DK, DP 
  585. 8090  PRINT "1 for FASTEST          2 for FASTER          3 for FAST";
  586. 8100  LOCATE DL + 3, DK
  587. 8110  PRINT "6 for SLOWEST          5 for SLOWER          4 for SLOW";
  588. 8120  EO$ = INKEY$
  589. 8130  IF EO$ = "" THEN 8120
  590. 8140  IF (EO$ < "1" OR EO$ > "6") THEN RETURN
  591. 8150  CC = (ASC(EO$) - &H31) * BS
  592. 8160  GOSUB 4000
  593. 8170  EO$ = ""
  594. 8180  RETURN
  595. 8190  '
  596. 8240  COLOR BQ, AJ, AJ
  597. 8250  LOCATE DL, (40 - (LEN("1  -  PROBLEMS"))/2), DP
  598. 8260  PRINT "1  -  PROBLEMS";
  599. 8270  COLOR FH, AJ, AJ
  600. 8280  LOCATE DL + 2, DK, DP 
  601. 8290  PRINT "1 for ADD              2 for SUBTRACT        3 for MULTIPLY";
  602. 8300  LOCATE DL + 3, DK
  603. 8310  PRINT "4 for DIVIDE           5 for MIX";
  604. 8320  EO$ = INKEY$
  605. 8330  IF EO$ = "" THEN 8320
  606. 8340  IF (EO$ < "1" OR EO$ > "5") THEN RETURN
  607. 8350  FB$ = FC$(ASC(EO$) - &H30)
  608. 8360  GOSUB 4000
  609. 8370  EO$ = ""
  610. 8380  RETURN
  611. 8390  '
  612. 8440  IF DU = BO THEN GOSUB 8760
  613. 8450  IF DU <> BO THEN GOSUB 8970
  614. 8460  GOSUB 6530  
  615. 8470  GOSUB 7290  
  616. 8480  GOSUB 8500  
  617. 8490  RETURN
  618. 8500  '
  619. 8550  DU = 0
  620. 8560  BU = 0
  621. 8570  EA = DO
  622. 8590  FOR CX = 0 TO (DH - 1)
  623. 8600    LOCATE DF + CX, DB, DP
  624. 8610    PRINT " ";
  625. 8620  NEXT CX
  626. 8630  DC = 0
  627. 8640  DE = DO
  628. 8660  FOR CX = 0 TO (BF - 1)
  629. 8670  LOCATE BE + CX, BB, DP
  630. 8680  PRINT " ";
  631. 8690  NEXT CX
  632. 8700  BC = 0
  633. 8710  BD = DO
  634. 8720  CK = INT(RND(1) * 1500) + 2500
  635. 8730  DEF SEG=0: POKE 1050, PEEK(1052) 
  636. 8740  DEF SEG: POKE 106,0 
  637. 8750  RETURN
  638. 8760  '
  639. 8810  EJ# = EJ# + EL#
  640. 8820  IF DE = FJ THEN EJ# = EJ# + (EL# * 2)
  641. 8830  IF (DE = FJ AND DW = DO)  THEN PLAY "X" + VARPTR$(DI$)
  642. 8840  IF (BD = FJ AND DW = DO) THEN PLAY "X" + VARPTR$(BG$) 
  643. 8850  IF BD = FJ THEN EJ# = EJ# - (2 * EL#)
  644. 8860  IF EJ# < 0 THEN EJ# = 0
  645. 8870  LOCATE 3,68
  646. 8880  PRINT EJ#;
  647. 8890  GOSUB 9310 
  648. 8910  WHILE (INT(EJ#/1000) > EM)
  649. 8920  CC = CC - BS
  650. 8930  IF CC < 0 THEN CC = 0
  651. 8940  EM = INT(EJ#/500)
  652. 8950  WEND
  653. 8960  RETURN
  654. 8970  '
  655. 9020  BT = CF
  656. 9030  IF DW = DO THEN SOUND 150, 10
  657. 9040  FOR CQ = 1 TO 3
  658. 9050  LOCATE AF + 2, AE + 3, DP
  659. 9060  PRINT CA$;BO;
  660. 9080  GOSUB 6350
  661. 9100  LOCATE AF + 2, AE + 1, DP
  662. 9110  PRINT AK$;
  663. 9130  GOSUB 6350
  664. 9140  NEXT
  665. 9150  BT = CC
  666. 9170  LOCATE BK, BJ, DP
  667. 9180  PRINT AK$;
  668. 9190  LOCATE AO - AV(AT), BJ, DP
  669. 9200  PRINT CA$; BO;
  670. 9210  BM$(AT, AV(AT)) = CA$
  671. 9220  EQ(AT, AV(AT)) = BO
  672. 9230  AV(AT) = AV(AT) + 1
  673. 9240  CM = CM + 1
  674. 9250  IF (BD = FJ AND DW = DO) THEN PLAY "X" + VARPTR$(BG$) 
  675. 9260  IF BD = FJ THEN EJ# = EJ# - (2 * EL#)
  676. 9270  IF EJ# < 0 THEN EJ# = 0
  677. 9280  LOCATE 3,68
  678. 9290  PRINT EJ#;
  679. 9300  RETURN
  680. 9310  '
  681. 9360  COLOR EB, AJ, AJ
  682. 9370  IF DW = DO THEN SOUND 1000, 2
  683. 9380  CQ = 1
  684. 9390  FOR DZ = BK - 1 TO BK + 1 
  685. 9400  LOCATE DZ, BJ - 1, DP
  686. 9410  PRINT CE$(CQ);
  687. 9420  CQ = CQ + 1
  688. 9430  NEXT
  689. 9450  COLOR BP, AJ, AJ
  690. 9460  LOCATE BK, BJ + 5, DP
  691. 9470  PRINT BO;
  692. 9490  BT = CF
  693. 9500  GOSUB 6350
  694. 9510  BT = CC
  695. 9530  FOR DZ = BK - 1 TO BK + 1  
  696. 9540  LOCATE DZ, BJ - 1, DP
  697. 9550  PRINT AL$;
  698. 9560  NEXT
  699. 9570  RETURN
  700. 9580  '
  701. 9630  CLS
  702. 9640  OPEN "FUNNELS.SCR" FOR INPUT AS #1
  703. 9650  INPUT #1, DS$, CP#
  704. 9660  CLOSE #1
  705. 9670  LOCATE 8, 31
  706. 9680  PRINT "YOUR SCORE WAS "; EJ#;
  707. 9690  IF CP# >= EJ# THEN GOSUB 9790 
  708. 9700  IF CP# <  EJ# THEN GOSUB 9920 
  709. 9720  LOCATE 18, 26
  710. 9730  PRINT "Care to play again  (Y/N)?";
  711. 9740  AD$ = INKEY$
  712. 9750  IF AD$ = "Y" OR AD$ = "y" THEN GOTO 1230 
  713. 9760  IF AD$ = "N" OR AD$ = "n" OR AD$ = CD$ THEN CLS : SYSTEM
  714. 9770  GOTO 9740 
  715. 9780  RETURN
  716. 9790  '
  717. 9840  LOCATE 10, 31
  718. 9850  PRINT "Good job.  But ...";
  719. 9860  LOCATE 12, (80 - LEN(DS$))/2
  720. 9870  PRINT DS$
  721. 9880  LOCATE 14, 25
  722. 9890  PRINT "still holds the high score of "; CP#;
  723. 9900  IF DW = DO THEN PLAY "X" + VARPTR$(ER$)
  724. 9910  RETURN
  725. 9920  '
  726. 9970  IF DW = DO THEN PLAY "X" + VARPTR$(CG$)
  727. 9980  LOCATE 10, 27
  728. 9990  PRINT "You have set a new record!"
  729. 10000  IF DW = DO THEN PLAY "X" + VARPTR$(CH$) + "D2"
  730. 10010  LOCATE 12, 21
  731. 10020  PRINT "What is your name, please";
  732. 10030  INPUT DS$
  733. 10040  CP# = EJ#
  734. 10050  OPEN "FUNNELS.SCR" FOR OUTPUT AS #1
  735. 10060  WRITE #1, DS$; CP#
  736. 10070  CLOSE #1
  737. 10080  RETURN
  738. 10090  '
  739. 10150  IF ERR <> 53 THEN GOTO 10220
  740. 10160  CLOSE #1
  741. 10170  OPEN "FUNNELS.SCR" FOR OUTPUT AS #1
  742. 10180  WRITE #1, "Nobody"
  743. 10190  WRITE #1, 0       
  744. 10200  CLOSE #1
  745. 10210  RESUME 9630
  746. 10220  '
  747. 10230  CLS
  748. 10240  LOCATE 7, 29
  749. 10250  COLOR EB, AJ, AJ
  750. 10260  PRINT "---   PROBLEM "; ERR; "   ---";
  751. 10270  COLOR FH, AJ, AJ
  752. 10280  LOCATE 10, 30
  753. 10290  PRINT "Something is wrong.";
  754. 10300  LOCATE 12, 27
  755. 10310  '
  756. 10320  IF ERR = 71 THEN PRINT "The disk drive is not ready."
  757. 10330  IF ERR = 72 THEN PRINT "  The disk may be damaged."
  758. 10340  '
  759. 10350  IF (ERR = 24 OR ERR = 27) THEN PRINT "The printer is not ready."
  760. 10360  '
  761. 10370  IF ERR = 57 THEN PRINT "   There is an I/O error."
  762. 10380  '
  763. 10390  PRINT "    IBM error code: "; ERR
  764. 10400  LOCATE 22, 10
  765. 10410  PRINT "---   Press <Esc> to Quit or any OTHER key to Resume again.   ---"
  766. 10420  LOCATE 23, 10
  767. 10430  PRINT "(It only makes sense to resume if you have corrected the problem.)"
  768. 10440  AD$ = INKEY$
  769. 10450  IF AD$ = "" THEN 10440
  770. 10460  IF AD$ = CD$ THEN SYSTEM
  771. 10470  CLS
  772. 10480  RESUME 1240
  773.