home *** CD-ROM | disk | FTP | other *** search
/ Nibble Magazine / nib38b.dsk / CUSTOM.BINGO.bas < prev    next >
BASIC Source File  |  2023-02-26  |  18KB  |  448 lines

  1. 10  REM   ******************************
  2. 20  REM   * CUSTOM.BINGO               *
  3. 30  REM   * BY TERRY BAYLOR            *
  4. 40  REM   * COPYRIGHT(C) 1990          *
  5. 50  REM   * MINDCRAFT PUBL. CORP.      *
  6. 60  REM   * CONCORD, MA 01742          *
  7. 70  REM   ******************************
  8. 80  PRINT  CHR$(21):BL$ =  CHR$(7): REM   BELL
  9. 90 D$ =  CHR$(4):PD = (( PEEK(48896) = 76))
  10. 100 NA = 0:BS$ =  CHR$(8) +" " + CHR$(8)
  11. 110 DN = 1: REM   DEFAULT DRIVE NUMBER
  12. 120  DIM A$(100),B$(5,5),AC$(100),Q$(100)
  13. 130  REM  ***** MAIN MENU *****
  14. 140  HOME 
  15. 150  HTAB 6: PRINT "CUSTOM BINGO BY TERRY BAYLOR": PRINT "COPYRIGHT(C) 1990 MINDCRAFT PUBL. CORP."
  16. 160  VTAB 5: PRINT "1. ENTER NEW SET OF ANSWERS"
  17. 170  PRINT "2. ENTER QUESTIONS"
  18. 180  PRINT "3. REVIEW, DELETE OR ADD QUESTIONS"
  19. 190  PRINT "   AND ANSWERS (Q&A)"
  20. 200  PRINT "4. SAVE Q&A TO DISK"
  21. 210  PRINT "5. LOAD Q&A FROM DISK"
  22. 220  PRINT "6. PRINT BINGO CARDS"
  23. 230  PRINT "7. PRINT Q&A"
  24. 240  PRINT "8. DELETE SET OF Q&A FROM DISK"
  25. 250  PRINT "9. SET SLOT & DRIVE AND SEE CATALOG"
  26. 260  PRINT "Q. QUIT": PRINT 
  27. 270  PRINT "CHOOSE >>>";: GET C$: PRINT C$
  28. 280  IF C$ =  CHR$(13) GOTO 140
  29. 290  IF C$ = "Q"  OR C$ = "q"  THEN 4440
  30. 300 C =  VAL(C$)
  31. 310  IF C < > INT(C) GOTO 140
  32. 320  IF C <1  OR C >9 GOTO 140
  33. 330  IF C <1  OR C >9 GOTO 270
  34. 340  ON C GOTO 360,3810,1010,1560,1800,2340,3120,2030,3650
  35. 350  GOTO 270
  36. 360  REM  ***** NEW ANSWERS INPUT *****
  37. 370  HOME : PRINT "WARNING!!": PRINT BL$
  38. 380  PRINT "CONTINUING THIS ROUTINE WILL ERASE"
  39. 390  PRINT "ANY Q&A CURRENTLY IN THE COMPUTER."
  40. 400  PRINT "(BUT NOT THOSE STORED ON DISK)": PRINT 
  41. 410  PRINT "PRESS 'RETURN' TO CONTINUE OR"
  42. 420  PRINT "OR ESC FOR THE MAIN MENU >>>";: GET C$: PRINT C$
  43. 430  IF C$ =  CHR$(13)  THEN 460
  44. 440  IF C$ =  CHR$(27)  THEN 140
  45. 450  GOTO 370
  46. 460 NA = 0
  47. 470  FOR X = 1 TO 100:Q$(X) = "": NEXT X
  48. 480  HOME 
  49. 490 NA = NA +1
  50. 500  HOME : GOSUB 3560: PRINT 
  51. 510  IF NA >100  THEN  HOME : VTAB 20: PRINT "YOUR INPUT HAS REACHED 100 ITEMS!!": NORMAL : FOR X = 1 TO 15: PRINT BL$: NEXT X: FOR X = 1 TO 1000: NEXT X: GOTO 140
  52. 520  PRINT "THE SCREEN DISPLAY WILL SHOW HOW THE"
  53. 530  PRINT "ANSWER WILL APPEAR ON THE CUSTOM"
  54. 540  PRINT "BINGO CARD PRINTOUT.": PRINT : GOSUB 3560: PRINT 
  55. 550  PRINT "PRESS 'RETURN' TO TERMINATE INPUT."
  56. 560  PRINT "PRESS 'ESC' TO RETURN TO THE MAIN MENU.": PRINT 
  57. 570  PRINT "ENTER ANSWER #";NA: VTAB 13
  58. 580  REM   THE INPUT BOX
  59. 590  INVERSE : FOR X = 1 TO 16: PRINT " ";: NEXT X: PRINT 
  60. 600  FOR X = 1 TO 4: PRINT " ";: NORMAL : PRINT  SPC( 14);: INVERSE : PRINT " ": NEXT X
  61. 610  FOR X = 1 TO 16: PRINT " ";: NEXT X: PRINT : NORMAL 
  62. 620  POKE 33,14: POKE 32,1: REM  RESET TEXT SCREEN
  63. 630  VTAB 14: HTAB 1
  64. 640 BS$ =  CHR$(8) +" " + CHR$(8): REM   BACKSPACE
  65. 650  GOSUB 680
  66. 660 A$(NA) = X$: GOTO 820
  67. 670  REM  INPUT ROUTINE
  68. 680 X$ = ""
  69. 690  GET W$: IF  LEN(X$) = 56  THEN  FOR X = 1 TO 5: PRINT BL$;: NEXT X: GOTO 730
  70. 700  IF W$ =  CHR$(34)  THEN 780
  71. 710  IF W$ =  CHR$(27)  THEN NA = NA -1: TEXT : GOTO 140
  72. 720  IF  ASC(W$) > = 32  AND  ASC(W$) < = 126  THEN 790
  73. 730  IF W$ < > CHR$(8)  THEN 770
  74. 740  IF X$ = ""  THEN  PRINT BL$;: GOTO 690
  75. 750  IF  LEN(X$) = 1  THEN X$ = "": PRINT BS$;: GOTO 690
  76. 760 X$ =  LEFT$(X$, LEN(X$) -1): PRINT BS$;: GOTO 690
  77. 770  IF W$ =  CHR$(13)  THEN  RETURN 
  78. 780  PRINT BL$;: GOTO 690
  79. 790  PRINT W$;:X$ = X$ +W$: IF  LEN(X$) >53  THEN  PRINT BL$;
  80. 800  GOTO 690
  81. 810  REM     **** INPUT VERIFICATION ****
  82. 820  POKE 33,40: POKE 32,0: HOME : POKE 33,14: REM  RESET TEXT SCREEN
  83. 830  PRINT : PRINT : PRINT 
  84. 840  PRINT "ANSWER # ";NA: PRINT : PRINT 
  85. 850  PRINT A$(NA): PRINT : PRINT 
  86. 860  POKE 33,40
  87. 870  GOSUB 3560: PRINT 
  88. 880  PRINT "(RETURN) >> ACCEPT THIS ENTRY AND GET"
  89. 890  PRINT "            READY TO INPUT THE NEXT"
  90. 900  PRINT "            ANSWER": PRINT 
  91. 910  PRINT "(R) >> REDO THIS ENTRY": PRINT 
  92. 920  PRINT "(M) >> ACCEPT THIS ENTRY AND RETURN TO"
  93. 930  PRINT "       MAIN MENU": PRINT 
  94. 940  GOSUB 3560
  95. 950  PRINT "CHOOSE>>>";: GET C$: PRINT C$
  96. 960  IF  ASC(C$) = 13 GOTO 480
  97. 970  IF C$ = "R"  OR C$ = "r"  THEN  HOME : GOTO 500
  98. 980  IF C$ = "M"  OR C$ = "m" GOTO 140
  99. 990  FOR X = 1 TO 3: PRINT BL$;: NEXT X
  100. 1000  HOME : PRINT "CHOOSE 'RETURN' OR 'R' OR 'M'": NORMAL : PRINT "PRESS RETURN TO CONTINUE";: GET RT$: PRINT RT$: GOTO 820
  101. 1010  REM   ***** REVIEW AND EDIT ANSWERS *****
  102. 1020  HOME 
  103. 1030  GOSUB 3560: PRINT 
  104. 1040  PRINT "1.  REVIEW Q&A": PRINT 
  105. 1050  PRINT "2.  DELETE Q&A": PRINT 
  106. 1060  PRINT "3.  ADD MORE ANSWERS": PRINT 
  107. 1070  PRINT "4.  ADD MORE QUESTIONS": PRINT 
  108. 1080  PRINT "5.  RETURN TO MAIN MENU": PRINT 
  109. 1090  GOSUB 3560
  110. 1100  VTAB 15: HTAB 1: PRINT "CHOOSE>>>";: GET C$: PRINT C$:C =  VAL(C$)
  111. 1110  IF C$ =  CHR$(27)  THEN 140
  112. 1120  IF C <1  OR C >5 GOTO 1100
  113. 1122  IF ((C = 1  OR C = 2)  AND NA = 0)  THEN  VTAB 20: PRINT "NO ANSWERS IN MEMORY": PRINT "PRESS RETURN TO CONTINUE";: GET RT$: GOTO 1020
  114. 1130  ON C GOTO 1140,1320,480,3810,140
  115. 1140  REM  ***** REVIEW OR EDIT AN ANSWER *****
  116. 1150  HOME 
  117. 1160  GOSUB 3560: PRINT 
  118. 1170  PRINT "ENTER THE NUMBER OF THE Q&A"
  119. 1180  PRINT "BE EDITED OR AN 'A' TO REVIEW ALL"
  120. 1190  PRINT "Q&A.": PRINT 
  121. 1200  GOSUB 3560
  122. 1210  HTAB 1: VTAB 9: INPUT "CHOOSE>>>";C$
  123. 1220  IF C$ = "A" GOTO 3400
  124. 1230  IF  VAL(C$) >(NA)  OR  VAL(C$) =  <0  THEN  HTAB 1: VTAB 11: PRINT "NO ANSWER WITH THAT NUMBER": GOTO 1210
  125. 1240  HOME : POKE 33,14
  126. 1250  PRINT "ANSWER #";C$
  127. 1260  PRINT A$( VAL(C$)): PRINT : PRINT : PRINT 
  128. 1270  POKE 33,40
  129. 1280  PRINT "QUESTION #";C$: PRINT 
  130. 1290  PRINT Q$( VAL(C$)): PRINT : PRINT : PRINT 
  131. 1300  PRINT "PRESS RETURN TO CONTINUE";: GET C$: PRINT 
  132. 1310  GOTO 1010
  133. 1320  REM  ***** DELETE AN ANSWER *****
  134. 1330  HOME : GOSUB 3560: PRINT 
  135. 1340  HTAB 1: VTAB 3: PRINT "ENTER THE NUMBER OF THE Q&A TO DELETE"
  136. 1350  PRINT "OR 'M' TO RETURN TO THE MAIN MENU"
  137. 1360  PRINT ">>";: INPUT AD$
  138. 1370  IF AD$ = "M" GOTO 140
  139. 1380  IF  VAL(AD$) >(NA)  OR  VAL(AD$) <0  OR AD$ = "0"  THEN  HTAB 1: VTAB 7: PRINT "NOT A VALID NUMBER": GOTO 1340
  140. 1390  HOME : POKE 33,14:AD =  VAL(AD$)
  141. 1400  PRINT "ANSWER #";AD
  142. 1410  PRINT A$(AD): PRINT 
  143. 1420  POKE 33,40: GOSUB 3560: PRINT 
  144. 1430  PRINT "QUESTION #";AD: PRINT 
  145. 1440  PRINT Q$(AD): PRINT : PRINT : PRINT 
  146. 1450  GOSUB 3560
  147. 1460  PRINT "ENTER A 'D' TO CONFIRM DELETION ";: GET C$: PRINT C$
  148. 1470  IF C$ < >"D" GOTO 1010
  149. 1480  FOR X = AD TO NA -1
  150. 1490 A$(X) = A$(X +1):Q$(X) = Q$(X +1)
  151. 1500  NEXT X
  152. 1510 Q$(AD) = ""
  153. 1520 NA = NA -1
  154. 1530  POKE 33,40: HOME 
  155. 1540  PRINT "DELETION COMPLETE": FOR X = 1 TO 500: NEXT X
  156. 1550  GOTO 1010
  157. 1560  REM   ***** SAVE Q&A TO DISK *****
  158. 1570  HOME : GOSUB 3560: PRINT 
  159. 1580  PRINT "ENTER THE NAME OF THE FILE TO BE SAVED"
  160. 1590  PRINT "OR RETURN TO GO TO THE MAIN MENU"
  161. 1600  PRINT "OR 'C' TO CATALOG THE DISK"
  162. 1610  PRINT ">>>";: INPUT C$
  163. 1620  IF C$ = "" GOTO 140
  164. 1630  IF C$ = "C"  OR C$ = "c"  THEN  PRINT D$ LEFT$("CATALOG",7 -4 *PD): PRINT "ANY KEY TO CONTINUE";: GET C$: PRINT : GOTO 1570
  165. 1640  IF C$ = ""  THEN 1570
  166. 1650  HOME : GOSUB 3560: PRINT 
  167. 1660  PRINT "SAVING "C$" TO DISK": PRINT : NORMAL 
  168. 1670  GOSUB 3560
  169. 1680  ONERR  GOTO 2240
  170. 1690  PRINT D$"OPEN"C$
  171. 1700  PRINT D$"WRITE"C$
  172. 1710  PRINT NA
  173. 1720  FOR X = 1 TO NA
  174. 1730  REM   ENCLOSE Q&A IN QUOTES
  175. 1740  PRINT  CHR$(34);A$(X); CHR$(34)
  176. 1750  PRINT  CHR$(34);Q$(X); CHR$(34)
  177. 1760  NEXT X
  178. 1770  PRINT D$"CLOSE"
  179. 1790  GOTO 140
  180. 1800  REM  ***** LOAD FROM DISK *****
  181. 1810  HOME : GOSUB 3560: PRINT 
  182. 1820  PRINT "ENTER THE NAME OF THE FILE TO BE LOADED"
  183. 1830  PRINT "OR RETURN TO GO TO THE MAIN MENU"
  184. 1840  PRINT "OR '?' TO CATALOG THE DISK"
  185. 1850  PRINT ">>>";: INPUT C$
  186. 1860  IF C$ = "" GOTO 140
  187. 1870  IF C$ = "?"  THEN  PRINT D$ LEFT$("CATALOG",7 -4 *PD): PRINT "ANY KEY TO CONTINUE";: GET C$: PRINT : GOTO 1800
  188. 1880  HOME : GOSUB 3560: PRINT 
  189. 1881  ONERR  GOTO 1885
  190. 1883  PRINT D$"VERIFY"C$: GOTO 1890
  191. 1885  PRINT C$" DOES NOT EXIST": PRINT : PRINT "PRESS RETURN TO CONTINUE";: GET QQ$: POKE 216,0: GOTO 1810
  192. 1890  PRINT "LOADING ";C$: PRINT 
  193. 1900  GOSUB 3560
  194. 1910  ONERR  GOTO 2240
  195. 1920  PRINT D$"OPEN"C$
  196. 1930  PRINT D$"READ"C$
  197. 1940  INPUT NA
  198. 1950  FOR X = 1 TO NA
  199. 1960  INPUT A$(X)
  200. 1970  INPUT Q$(X)
  201. 1980  NEXT X
  202. 1990  PRINT 
  203. 2000  PRINT D$;"CLOSE"
  204. 2010  POKE 216,0: REM  RESET ERROR FLAG
  205. 2020  GOTO 140
  206. 2030  REM  ***** FILE DELETION *****
  207. 2040  HOME : GOSUB 3560: PRINT 
  208. 2050  ONERR  GOTO 2240
  209. 2060  PRINT "ENTER THE NAME OF THE FILE TO BE DELETED"
  210. 2070  PRINT "OR RETURN TO GO TO THE MAIN MENU"
  211. 2080  PRINT "OR 'C' TO CATALOG THE DISK"
  212. 2090  PRINT ">>>";: INPUT C$: IF C$ = "" GOTO 140
  213. 2100  IF C$ = "C"  OR C$ = "c"  THEN  PRINT D$ LEFT$("CATALOG",7 -4 *PD): PRINT "ANY KEY TO CONTINUE";: GET C$: PRINT : GOTO 2040
  214. 2110  HOME : GOSUB 3560: PRINT 
  215. 2120  PRINT "PRESS 'D' TO CONFIRM DELETION OF THE"
  216. 2130  PRINT "FILE NAMED ";C$;" ": INPUT A$
  217. 2140  IF A$ = "D" GOTO 2160
  218. 2150  GOTO 140
  219. 2160  ONERR  GOTO 2240
  220. 2170  HOME : GOSUB 3560: PRINT 
  221. 2180  PRINT "DELETING FILE ";C$: PRINT 
  222. 2190  GOSUB 3560
  223. 2200  PRINT D$;"UNLOCK";C$;",D";DN
  224. 2210  PRINT D$;"DELETE";C$;",D";DN
  225. 2220  POKE 216,0: GOTO 140
  226. 2230  REM  ERROR ROUTINES
  227. 2240 Y =  PEEK(222)
  228. 2250  PRINT "ERROR DETECTED"
  229. 2260  IF Y = 4  THEN  PRINT "DISK IS WRITE PROTECTED": GOTO 2320
  230. 2270  IF Y = 0  THEN  PRINT "OUT OF DATA ERROR": GOTO 2320
  231. 2280  IF Y = 6  THEN  PRINT "FILE OR PATH NOT FOUND": GOTO 2320
  232. 2290  IF Y = 8  THEN  PRINT "I/O ERROR": GOTO 2320
  233. 2300  IF Y = 9  THEN  PRINT "DISK FULL": GOTO 2320
  234. 2310  IF Y = 10  THEN  PRINT "FILE ALREADY EXISTS AND IS LOCKED"
  235. 2320  PRINT : PRINT "PRESS RETURN TO CONTINUE";: GET C$: PRINT 
  236. 2330  POKE 216,0: GOTO 140
  237. 2340  REM  ***** PRINT BINGO CARDS *****
  238. 2350  IF NA = 0  THEN  HOME : PRINT "NO ANSWERS IN MEMORY": VTAB 20: PRINT "PRESS RETURN TO CONTINUE";: GET RT$: PRINT RT$: GOTO 140
  239. 2360  HOME : VTAB 10:S$ = "":FS$ = ""
  240. 2370  GOSUB 3560: PRINT 
  241. 2380  PRINT "BINGO CARD PRINTOUT": PRINT : PRINT 
  242. 2390  PRINT "ENTER THE TITLE TO BE PRINTED ON EACH"
  243. 2400  PRINT "BINGO CARD OR ESC FOR THE MAIN MENU": PRINT 
  244. 2410  GOSUB 3560
  245. 2420  PRINT ">>>";: INPUT T$: PRINT T$
  246. 2430  IF  LEN(T$) >70  THEN  PRINT "TITLE TOO LONG (MAXIMUM 70 CHARACTERS)": GOTO 2390
  247. 2440  IF T$ =  CHR$(27) GOTO 140
  248. 2450  HOME : VTAB 10
  249. 2460  GOSUB 3560: PRINT 
  250. 2470  PRINT "EACH CARD WILL BE MADE UP INDEPENDENTLY."
  251. 2480  PRINT "IF THERE ARE FEWER THAN 24 ANSWERS"
  252. 2490  PRINT "CURRENTLY IN THIS SET OF INPUT, ANSWERS"
  253. 2500  PRINT "WILL BE REPEATED TO FILL ALL 24 SPACES"
  254. 2510  PRINT "ON A CARD.": PRINT 
  255. 2520  GOSUB 3560
  256. 2530  PRINT "HOW MANY CARDS DO YOU WANT PRINTED?"
  257. 2540  INPUT ">>>";NC
  258. 2550  IF NC <1 GOTO 140
  259. 2560  HOME : VTAB 10
  260. 2570  GOSUB 3560: PRINT 
  261. 2580  PRINT "CUSTOM BINGO PRINTS TWO CARDS TO"
  262. 2590  PRINT "A STANDARD SHEET OF PAPER."
  263. 2600  PRINT "MAKE SURE THE PAPER IS POSITIONED AND"
  264. 2610  PRINT "THE PRINTER IS TURNED ON.": PRINT : PRINT 
  265. 2620  PRINT "PRESS RETURN TO CONTINUE OR ESC FOR"
  266. 2630  PRINT "MAIN MENU";: PRINT : GOSUB 3560
  267. 2640  PRINT "CHOOSE >>>";: GET A$: PRINT A$
  268. 2650  IF A$ =  CHR$(27) GOTO 140
  269. 2660  FOR X = 1 TO 56:S$ = S$ +" ": NEXT X: REM     SPACES FOR TABBING
  270. 2670 FS$ = "FREE FREE FREE": REM  FREE SPACE SETUP
  271. 2680 FS$ = FS$ +FS$ +FS$ +FS$
  272. 2690  FOR A = 1 TO NC
  273. 2700  HOME : PRINT "GENERATING CARD #";A: NORMAL 
  274. 2710  REM  GENERATE PRINTOUT ARRAY B$(5,5)
  275. 2720  GOSUB 3590: REM    SETUP CHOICE ARRAY AC$(X)
  276. 2730  FOR R = 1 TO 5
  277. 2740  FOR C = 1 TO 5
  278. 2750  REM  CHECK FOR FREE SPACE
  279. 2760  IF R = 3  AND C = 3  THEN B$(R,C) = FS$: GOTO 2840
  280. 2770 RN =  INT( RND(1) *CH +1): IF  LEN(AC$(RN)) = 56  THEN B$(R,C) = AC$(RN): GOTO 2800
  281. 2780  PRINT Q$(X): PRINT : PRINT : PRINT 
  282. 2790 B$(R,C) = AC$(RN) + RIGHT$(S$,56 - LEN(AC$(RN))): REM  FILL BLOCK WITH ANSWER AND SPACES
  283. 2800  REM   REPLACE CHOSEN ANSWER WITH THE LAST ELEMENT IN THE ARRAY
  284. 2810 AC$(RN) = AC$(CH)
  285. 2820 CH = CH -1: REM  DECREASE NUMBER OF CHOICES
  286. 2830  IF CH = 0  THEN  GOSUB 3590
  287. 2840  NEXT C
  288. 2850  NEXT R
  289. 2860  VTAB 10: PRINT "PRESS 'ESC' TO INTERRUPT PRINTING"
  290. 2870  REM  PRINT THE CARD
  291. 2880  PRINT D$"PR#1"
  292. 2890  PRINT  CHR$(9)"80N"
  293. 2900  PRINT : REM  TOP SPACE
  294. 2910  PRINT  SPC( 31);"CUSTOM BINGO"
  295. 2920  PRINT T$: REM   TITLE
  296. 2930  PRINT  SPC( 31);"CARD #";A
  297. 2940  GOSUB 3570: REM  ASTERISKS
  298. 2950  FOR BR = 1 TO 5: REM  ROWS OF BLOCKS
  299. 2960  FOR R = 1 TO 4: REM  ROW WITHIN A BLOCK
  300. 2970  FOR C = 1 TO 5: REM  COLUMNS OF BLOCKS
  301. 2980  REM  PRINT ONE ROW OF TEXT IN EACH BLOCK
  302. 2990  PRINT "*"; MID$ (B$(BR,C),(R -1) *14 +1,14);
  303. 3000  NEXT C
  304. 3010 X =  PEEK( -16384): REM  KEYBOARD CHECK
  305. 3020  IF X >127  THEN  POKE  -16368,0: PRINT : PRINT D$;"PR#0": GOTO 140
  306. 3030  PRINT "*": REM  LAST * ON ROW
  307. 3040  NEXT R
  308. 3050  GOSUB 3570: REM  ROW OF *
  309. 3060  NEXT BR
  310. 3070  PRINT : PRINT : REM  SPACING BETWEEN CARDS
  311. 3080  REM  PREP FOR NEXT CARD
  312. 3090  PRINT D$;"PR#0"
  313. 3100  NEXT A
  314. 3110  GOTO 140
  315. 3120  REM    ***** PRINT Q&A *****
  316. 3130  HOME : VTAB 10
  317. 3140  GOSUB 3560: PRINT 
  318. 3150  PRINT "TURN ON PRINTER.": PRINT 
  319. 3160  PRINT "PRESS RETURN TO CONTINUE OR 'M' FOR"
  320. 3170  PRINT "MAIN MENU.": PRINT 
  321. 3180  GOSUB 3560
  322. 3190  PRINT "CHOOSE >>>";: GET A$: PRINT 
  323. 3200  IF A$ = "M"  OR A$ = "m" GOTO 140
  324. 3210  HOME : GOSUB 3560: PRINT 
  325. 3220  PRINT "ENTER THE TITLE FOR THESE ANSWERS"
  326. 3230  INPUT ">>>";T$
  327. 3240  PRINT D$;"PR#1"
  328. 3250  PRINT  CHR$(9);"80N"
  329. 3260  PRINT "ANSWERS FOR ";T$: PRINT : PRINT 
  330. 3270  PRINT "CHECK OFF THE NUMBERS TO THE LEFT AS YOU USE THE ANSWERS."
  331. 3280  FOR X = 1 TO NA
  332. 3290  PRINT "1 2 3 4 5 >>>";X;".  ";A$(X)
  333. 3300  PRINT  SPC( 17);"QUESTION --> ";
  334. 3310 LQ =  LEN(Q$(X))
  335. 3320  FOR XX = 1 TO LQ
  336. 3330  PRINT  MID$ (Q$(X),XX,1);
  337. 3340  IF XX/49 =  INT(XX/49)  THEN  PRINT : PRINT  SPC( 30);
  338. 3350  NEXT XX
  339. 3360  PRINT : PRINT 
  340. 3370  NEXT X
  341. 3380  PRINT D$;"PR#0"
  342. 3390  GOTO 140
  343. 3400  REM  DISPLAY ALL ANSWERS ON SCREEN
  344. 3410 X = 1
  345. 3420  HOME : POKE 33,14
  346. 3430  PRINT "ANSWER #";X: PRINT : PRINT : PRINT 
  347. 3440  PRINT A$(X): PRINT : PRINT : PRINT : POKE 33,40
  348. 3450  PRINT "QUESTION #";X: PRINT 
  349. 3460  PRINT Q$(X): PRINT 
  350. 3470  GOSUB 3560
  351. 3480  PRINT "PRESS RETURN TO CONTINUE OR 'M' FOR"
  352. 3490  PRINT "THE EDIT MENU": GET C$: PRINT 
  353. 3500  IF C$ = "M"  OR C$ = "m" GOTO 1010
  354. 3510 X = X +1
  355. 3520  IF X >NA GOTO 1010
  356. 3530  GOTO 3420
  357. 3540  REM  ***** SUBROUTINES *****
  358. 3550  REM  ROW OF ASTERISKS FOR MENUS
  359. 3560  FOR XX = 1 TO 39: PRINT "*";: NEXT XX: PRINT : RETURN 
  360. 3570  REM   ROW OF ASTERISKS FOR BINGO CARD
  361. 3580  FOR X = 1 TO 76: PRINT "*";: NEXT X: PRINT : RETURN 
  362. 3590  REM  SET UP ANSWER CHOICE ARRAY
  363. 3600  FOR X = 1 TO NA
  364. 3610 AC$(X) = A$(X)
  365. 3620  NEXT X
  366. 3630 CH = NA
  367. 3640  RETURN 
  368. 3650  REM  RESET THE SLOT AND  DRIVE NUMBER
  369. 3660  HOME : GOSUB 3560: PRINT 
  370. 3670  PRINT "SELECT SLOT NUMBER (2,5,6 OR 7)";
  371. 3680  GET SN$: PRINT SN$:SN =  VAL(SN$)
  372. 3690  IF SN < >2  AND SN < >5  AND SN < >6  AND SN < >7  THEN 3660
  373. 3700  VTAB 5: HTAB 1: PRINT "SELECT DRIVE NUMBER (1 OR 2)";
  374. 3710  GET DN$: PRINT DN$:DN =  VAL(DN$)
  375. 3720  IF DN < >1  AND DN < >2  THEN 3700
  376. 3730  ONERR  GOTO 3780
  377. 3740  PRINT D$ LEFT$("CATALOG",7 -4 *PD)",S"SN",D"DN
  378. 3750  IF PD  THEN  PRINT D$"PREFIX,S"SN",D"DN
  379. 3760  POKE 216,0: PRINT "PRESS RETURN TO CONTINUE";: GET RT$: PRINT RT$
  380. 3770  GOTO 140
  381. 3780  POKE 216,0: VTAB 21: PRINT "DISK ERROR. PRESS RETURN TO CONTINUE";: GET RT$: PRINT RT$: GOTO 3660
  382. 3790  REM  THE END
  383. 3800  PRINT D$"CLOSE": HOME : END 
  384. 3810  REM  QUESTION INPUT
  385. 3820  HOME : IF NA >0  THEN 3860
  386. 3830  PRINT "NO ANSWERS IN MEMORY.  ANSWERS MUST BE"
  387. 3840  PRINT "ENTERED FIRST.": PRINT BL$
  388. 3850  PRINT "PRESS RETURN TO CONTINUE";: GET X$: PRINT X$: GOTO 140
  389. 3860  GOSUB 3560: PRINT 
  390. 3870  PRINT "QUESTIONS TO BE USED WHILE PLAYING"
  391. 3880  PRINT "CUSTOM BINGO MAY NOW BE ENTERED."
  392. 3890  PRINT "THE CORRESPONDING ANSWER WILL BE"
  393. 3900  PRINT "DISPLAYED BEFORE QUESTION INPUT.": PRINT : GOSUB 3560
  394. 3910  PRINT "ENTER THE NUMBER OF THE QUESTION TO"
  395. 3920  PRINT "INPUT OR RETURN FOR THE MAIN MENU."
  396. 3930  INPUT ">>>";C$
  397. 3940  IF C$ = ""  THEN 140
  398. 3950  IF  VAL(C$) >(NA)  OR  VAL(C$) < = 0  THEN  PRINT "NO ANSWER WITH THAT NUMBER.";BL$: FOR X = 1 TO 500: NEXT X: GOTO 3810
  399. 3960 QN =  VAL(C$)
  400. 3970  HOME : POKE 33,14
  401. 3980  PRINT "ANSWER #";QN: PRINT 
  402. 3990  PRINT A$(QN): PRINT : PRINT : PRINT 
  403. 4000  POKE 33,40
  404. 4010  PRINT "ENTER THE QUESTION THAT CORRESPONDS TO"
  405. 4020  PRINT "ANSWER SHOWN ABOVE (80 CHARS. MAX)": PRINT 
  406. 4030  PRINT "OR PRESS (RETURN) TO LEAVE THIS"
  407. 4040  PRINT "QUESTION BLANK"
  408. 4050  REM  INPUT ROUTINE
  409. 4060  GOSUB 4080
  410. 4070 Q$(QN) = X$: GOTO 4200
  411. 4080 X$ = ""
  412. 4090  GET W$: IF  LEN(X$) =  >80  THEN  PRINT BL$: PRINT BL$: GOTO 4120
  413. 4100  IF W$ =  CHR$(34)  THEN 4170
  414. 4110  IF  ASC(W$) > = 32  AND  ASC(W$) < = 126  THEN 4180
  415. 4120  IF W$ < > CHR$(8)  THEN 4160
  416. 4130  IF X$ = ""  THEN  PRINT BL$: GOTO 4090
  417. 4140  IF  LEN(X$) = 1  THEN X$ = "": PRINT BS$;: GOTO 4090
  418. 4150 X$ =  LEFT$(X$, LEN(X$) -1): PRINT BS$;: GOTO 4090
  419. 4160  IF W$ =  CHR$(13)  THEN  RETURN 
  420. 4170  PRINT BL$;: GOTO 4090
  421. 4180  PRINT W$;:X$ = X$ +W$: IF  LEN(X$) >250  THEN  PRINT BL$
  422. 4190  GOTO 4090
  423. 4200  REM   **** QUESTION VERIFICATION ****
  424. 4210  HOME : POKE 33,14
  425. 4220  PRINT "ANSWER #";QN
  426. 4230  PRINT A$(QN): PRINT 
  427. 4240  POKE 33,40
  428. 4250  PRINT "QUESTION #";QN
  429. 4260  PRINT Q$(QN)
  430. 4270  GOSUB 3560
  431. 4280  IF QN = (NA)  THEN  PRINT "LAST ANSWER": PRINT : PRINT : GOTO 4320
  432. 4290  PRINT "(RETURN) >> ACCEPT THIS QUESTION AND"
  433. 4300  PRINT  SPC( 12);"GET READY TO ENTER"
  434. 4310  PRINT  SPC( 12);"QUESTION #";QN +1: PRINT 
  435. 4320  PRINT "(R) >> REDO THIS QUESTION": PRINT 
  436. 4330  PRINT "(S) >> ACCEPT THIS QUESTION AND THEN"
  437. 4340  PRINT  SPC( 8);"SELECT ANOTHER QUESTION": PRINT 
  438. 4350  PRINT "(M) >> ACCEPT THIS QUESTION AND RETURN"
  439. 4360  PRINT  SPC( 8);"TO THE MAIN MENU": PRINT : GOSUB 3560
  440. 4370  INPUT "CHOOSE>>>";C$
  441. 4380  IF QN = (NA)  THEN 4400
  442. 4390  IF C$ = ""  THEN QN = QN +1: GOTO 3970
  443. 4400  IF C$ = "R"  OR C$ = "r"  THEN 3970
  444. 4410  IF C$ = "S"  OR C$ = "s"  THEN 3810
  445. 4420  IF C$ = "M"  OR C$ = "m"  THEN 140
  446. 4430  PRINT BL$: GOTO 4200
  447. 4440  VTAB 19: PRINT "ALL QUESTIONS IN MEMORY": PRINT "WILL BE ERASED.": PRINT : PRINT "ARE YOU SURE? (Y/N)";: GET RT$: IF RT$ = "Y"  OR RT$ = "y"  THEN  HOME : END 
  448. 4450  GOTO 140