home *** CD-ROM | disk | FTP | other *** search
/ Softdisk G-S 131 / SGDS 131.2mg / SDGS.131 / SDC131 / C / MULTIFLASH (.txt) < prev    next >
Encoding:
Applesoft BASIC Source Code  |  1992-08-11  |  7.5 KB  |  338 lines  |  [FC] Applesoft BASIC Program (0x0801)

  1. 10  REM  Multi-FLASH
  2. 20  REM   WRITEN BY MARK KILGORE
  3. 30  REM   (C) 1991 Mark Kilgore
  4. 40  PRINT  CHR$(21): REM  set 40 col mode
  5. 50  REM GOSUB 3280: REM  gsmono   
  6. 60  PRINT  CHR$(4)"bloadpiracy.rpk": POKE 24577,64: POKE 24601,85: CALL 24576
  7. 70  PRINT  CHR$(4)"BLOAD NUMBERS.LNK,A$3100"
  8. 80  LOMEM: 29696:R0 =  PEEK(48688):R1 =  PEEK(48689)
  9. 90  ONERR  GOTO 3420
  10. 100 M1 = 300:M2 = M1: HCOLOR= 6
  11. 110 XB = 6:YB = 28: REM      X&Y BASE
  12. 130 KB = 49152:ST = KB +16: REM   keyboard & strobe
  13. 140  PRINT  CHR$(4)"BRUNpnphrcg": POKE 48688, PEEK(O): POKE 48689, PEEK(1): HOME : PRINT  CHR$(11);
  14. 145  VTAB 4: HTAB 13: PRINT "MULTI-FLASH": VTAB 18: HTAB 12: PRINT "Press any key.": GET A$: INVERSE 
  15. 150 V =  PEEK(48855) + PEEK(48856) *256:
  16. 160 SB$ = "00000":SC = 0:MX = SC
  17. 165 L$ = "":X = 0:Y = 0:ID = 14: GOSUB 280
  18. 170 L$ = "":X = 0:Y = 0:ID = 14
  19. 180 SC = 0:MX = SC
  20. 190  PRINT  CHR$(20): VTAB 14: HTAB 28: PRINT SB$: REM gosub1330
  21. 200  GOSUB 1720: GOSUB 2890
  22. 210  IF GA = 0  THEN  GOSUB 1490
  23. 220  SPEED= 255
  24. 230  IF GA = 1  THEN  GOSUB 2650
  25. 240  GOTO 410
  26. 250  REM  beeper
  27. 260  IF SN = 0  THEN  GOSUB 3380
  28. 270  RETURN 
  29. 280  POKE 0,0: POKE 1,49
  30. 290  POKE 2,Y: POKE 3,X: POKE 4,0: POKE 5,ID
  31. 300  CALL V +3: RETURN 
  32. 310  REM   get key, no time limit
  33. 320 KI =  PEEK(ST)
  34. 330 RD = 0
  35. 340 KI =  PEEK(KB): IF KI <128  THEN 340
  36. 350 KI = KI -128: IF (KI >97)  AND (KI <123)  THEN KI = KI -32
  37. 360 J =  PEEK(ST)
  38. 370 K$ =  CHR$(KI)
  39. 380  IF (K$ = "/")  OR (K$ = "?")  OR (K$ = "Q")  OR (K$ = "N")  OR (K$ = "S")  OR (K$ = "H")  OR (K$ =  CHR$(27))  THEN  GOSUB 2160
  40. 390 KP = KI
  41. 400  RETURN 
  42. 410  GOSUB 1330: FOR PR = 1 TO 20: REM       **** number of problems *****    
  43. 420  GOSUB 820: REM  get a problem
  44. 430 K5 = K:K6 = K2
  45. 440 AN = K
  46. 450 L = 0
  47. 460  GOSUB 660
  48. 470  GOSUB 780
  49. 480 L = 1:AN = K2: GOSUB 660
  50. 490  GOSUB 910
  51. 500  GOSUB 990: REM  get answer
  52. 510  GOSUB 1330: REM  update score
  53. 520  NEXT PR
  54. 530  IF SC <SB  THEN 170: REM  no new high score
  55. 540 SB = SC:SB$ =  STR$(SB):SB$ =  LEFT$("00000",5 - LEN(SB$)) +SB$
  56. 550  PRINT  CHR$(20): VTAB 14: HTAB 28: PRINT SB$
  57. 560  GOSUB 1430
  58. 570  POKE 32,3: POKE 33,17: POKE 34,3: POKE 35,21
  59. 580  HOME 
  60. 590  PRINT "Congratulations!"
  61. 600  PRINT 
  62. 610  PRINT " You set a new"
  63. 620  PRINT " High Score!!!"
  64. 622  VTAB 16: PRINT " Press Any Key"
  65. 624  PRINT "  To Continue"
  66. 630  IF SN = 0  THEN  GOSUB 3340
  67. 635  GET A$
  68. 640  REM callV + 9,300: REM   WAIT             5 SECONDS         
  69. 650  GOTO 170: REM  end of round goes here
  70. 660  REM  PUT AN OUT ON CURRENT Y LINE STARTING AT XB
  71. 670 AN =  INT(AN)
  72. 680 A1 =  INT(AN/10)
  73. 690 A2 = AN -A1 *10
  74. 700  IF A1 = 0  THEN A1 = 10
  75. 710 A1 = A1 +1
  76. 720 A2 = A2 +1
  77. 730  REM  PUT FIRST CHARACTER OUT
  78. 740 ID = A1:Y = YB +L *48:X = XB: GOSUB 280
  79. 750  REM  PUTOUT SECOND
  80. 760 ID = A2:Y = YB +L *48:X = XB +4: GOSUB 280
  81. 770  RETURN 
  82. 780  REM    PUT A PLUS
  83. 790  POKE 0,0: POKE 1,49
  84. 800  POKE 2,YB +68: POKE 3,3: POKE 4,0: POKE 5,12
  85. 810  CALL V +3: RETURN 
  86. 820  REM   get a new problem
  87. 830 K =  INT( RND(1) *10): IF KL = K  THEN 830
  88. 840 KL = K
  89. 850 K2 = LIMIT
  90. 860  IF GA < >1  THEN  RETURN 
  91. 870  REM  MAKE A SUBTRACTION PROBLEM
  92. 880 K2 =  INT( RND(1) *LIMIT) +1: IF K2 >LIMIT  THEN 880
  93. 890  IF K2 <1  THEN K2 = 1
  94. 900  RETURN 
  95. 910  REM  Blank out answer area
  96. 920 L = 2
  97. 930 ID = 11
  98. 940  REM  PUT FIRST CHARACTER OUT
  99. 950 Y = YB +L *48:X = XB: GOSUB 280
  100. 960  REM  PUTOUT SECOND
  101. 970 Y = YB +L *48:X = XB +4: GOSUB 280
  102. 980  RETURN 
  103. 990  REM   get an answer
  104. 1000 P = 0
  105. 1010 MX = M1:AN =  PEEK(ST):AN = 0:M3 = AN
  106. 1020 D3 = K *K2
  107. 1030 D1 =  INT(D3/10)
  108. 1040 D2 = D3 -D1 *10
  109. 1050  IF D1 = 0  THEN 1100
  110. 1060  GOSUB 1250
  111. 1070  IF MX = 0  THEN 1160: REM   bad anser
  112. 1080 AN = KP:M3 = AN:L = 2: GOSUB 660
  113. 1090  IF KP < >D1  THEN 1160: REM   bad answer
  114. 1100  GOSUB 1250: REM   get next digit
  115. 1110 AN = KP +AN *10
  116. 1120  IF (MX = 0)  OR (D2 < >KP)  THEN 1160
  117. 1130 M1 = M1 -15: IF M1 <100  THEN M1 = 100: REM    SPEED IT UP
  118. 1140  GOSUB 660
  119. 1150 M3 = 0: RETURN 
  120. 1160  REM   bad answer
  121. 1170 AN = D3:L = 2: GOSUB 660
  122. 1180  FOR P1 = 1 TO 5: ON (SN = 0) GOSUB 3380: NEXT 
  123. 1190 X = 16:Y = 127:ID = 17: GOSUB 280
  124. 1200  CALL V +9,180: REM  WAIT 3 SECONDS 
  125. 1210 ID = 18: GOSUB 280
  126. 1220 M1 = M1 +60: IF M1 >(2 *M2)  THEN M1 = M2
  127. 1230 MX = 0
  128. 1240  RETURN 
  129. 1250  REM  GET KEY
  130. 1260 K$ = ""
  131. 1270  CALL V +6,MX,KP: IF MX = 0  THEN  GOSUB 250: RETURN 
  132. 1280  IF (KP >96)  AND (KP <123)  THEN KP = KP -32
  133. 1290 K$ =  CHR$(KP): IF (K$ = "/")  OR (K$ = "?")  OR (K$ = "N")  OR (K$ = "Q")  OR (K$ = "S")  OR (K$ = "H")  OR (K$ =  CHR$(27))  THEN  GOSUB 2160:J4 =  PEEK(ST): GOTO 1270
  134. 1300  IF (KP <48)  OR (KP >57)  THEN  GOSUB 250: GOTO 1270
  135. 1310 KP = KP -48
  136. 1320  RETURN 
  137. 1330  REM   update score
  138. 1340  IF (MX = 0)  AND (SC =  >0)  THEN SC = SC -50: GOTO 1360
  139. 1350 SC = SC +50
  140. 1360  IF SC <0  THEN SC = 0
  141. 1370 A$ =  STR$(SC)
  142. 1380 J =  LEN(A$)
  143. 1390  IF J >4  THEN 1410
  144. 1400 A$ =  LEFT$("00000",5 -J) +A$
  145. 1410  POKE 32,0: POKE 33,40: VTAB 11: HTAB 28: PRINT A$
  146. 1420  RETURN 
  147. 1430  REM    PUT ADD SELECT BOX
  148. 1440 X = 1:Y = 16:ID = 16: GOSUB 280
  149. 1450  RETURN 
  150. 1460  REM    PUT FLASH CARD
  151. 1470 X = 1:Y = 16:ID = 15: GOSUB 280
  152. 1480  RETURN 
  153. 1490  REM    PUT OUT LEVEL SELECTION BOX
  154. 1500  GOSUB 1430
  155. 1510  POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
  156. 1520  HOME 
  157. 1530  PRINT "Study the Facts"
  158. 1540  PRINT "---------------": PRINT 
  159. 1550  PRINT "1.   One's Table"
  160. 1560  PRINT "2.   Two's Table"
  161. 1570  PRINT "3. Three's Table"
  162. 1580  PRINT "4.  Four's Table"
  163. 1590  PRINT "5.  Five's Table"
  164. 1600  PRINT "6.   Six's Table"
  165. 1610  PRINT "7. Seven's Table"
  166. 1620  PRINT "8. Eight's Table"
  167. 1630  PRINT "9.  Nine's Table"
  168. 1640  VTAB 17: PRINT "  Enter Choice"
  169. 1650 P = 2: GOSUB 310:P = 0: IF RD = 1  THEN 1490
  170. 1660  IF (KP <49)  OR (KP >58)  THEN  GOSUB 250: GOTO 1650
  171. 1670 J =  PEEK(ST):KP = KP -48
  172. 1680 LIMIT = KP
  173. 1690  GOSUB 1460
  174. 1700  PRINT  CHR$(20): HOME 
  175. 1710 SC = 0:MX = SC: GOSUB 1330: RETURN 
  176. 1720  REM      PUT OUT INFO BOX
  177. 1730  GOSUB 1430
  178. 1740  POKE 32,3: POKE 33,18: POKE 34,2: POKE 35,22
  179. 1750  HOME 
  180. 1760  PRINT "  MULTI-FLASH"
  181. 1770  PRINT "----------------"
  182. 1780  PRINT "by Mark Kilgore"
  183. 1800  PRINT 
  184. 1810  PRINT "Educational"
  185. 1820  PRINT " Consultant:
  186. 1830  PRINT " Martha Kilgore"
  187. 1840 : PRINT 
  188. 1870  PRINT " Published on"
  189. 1880  PRINT " Softdisk #131"
  190. 1890  PRINT "----------------"
  191. 1900  PRINT 
  192. 1910  PRINT "Press Q To Quit."
  193. 1920  PRINT "Press Any Other"
  194. 1930  PRINT "Key To Continue."
  195. 1940 P = 1: GOSUB 310: IF RD = 1  THEN 1720
  196. 1950 P = 0: PRINT  CHR$(20): HOME : RETURN 
  197. 1960  REM        PUT OUT help BOX
  198. 1970  GOSUB 1430
  199. 1980  POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
  200. 1990  HOME 
  201. 2000  PRINT "MULTI-FLASH HELP"
  202. 2010  PRINT "----------------"
  203. 2020  PRINT "Q - QUIT"
  204. 2030  PRINT "N - New Game"
  205. 2040  PRINT "S - Sound On/Off"
  206. 2050  PRINT "? - Help"
  207. 2060  PRINT "----------------"
  208. 2070  PRINT "Enter the": PRINT "solutions as"
  209. 2080  PRINT "the equations": PRINT "appear."
  210. 2090  PRINT "----------------"
  211. 2100  VTAB 16: PRINT " Press Any Key"
  212. 2110  PRINT "  To Continue"
  213. 2120 KP =  PEEK(ST)
  214. 2130 KP =  PEEK(KB): IF KP <128  THEN 2130
  215. 2140 KP =  PEEK(KB)
  216. 2150  PRINT  CHR$(20): HOME : RETURN 
  217. 2160  REM  handle special codes
  218. 2170 RD = 0
  219. 2180  IF (K$ = "S")  AND (SN = 0)  THEN SN = 1: GOTO 2240
  220. 2190  IF (K$ = "S")  AND (SN = 1)  THEN SN = 0
  221. 2200  IF (K$ = "N")  THEN  GOSUB 3100
  222. 2210  IF K$ < >"Q"  AND K$ < > CHR$(27)  THEN 2240 REM    bypass non quit command
  223. 2220  GOSUB 2350
  224. 2230  GOTO 2270
  225. 2240  IF (K$ < >"/")  AND (K$ < >"H")  AND (K$ < >"?")  THEN  RETURN 
  226. 2250 RD = 1
  227. 2260  GOSUB 1960
  228. 2270  IF P >0  THEN  RETURN 
  229. 2280  GOSUB 1460
  230. 2290 AN = K:L = 0: GOSUB 660: GOSUB 780
  231. 2300 AN = K2:L = 1: GOSUB 660
  232. 2310  GOSUB 910
  233. 2320 AN = M3: IF M3 = 0  THEN  RETURN 
  234. 2330 L = 2: GOSUB 660
  235. 2340  RETURN 
  236. 2350  REM         PUT OUT QUIT BOX
  237. 2360 RD = 1
  238. 2370  GOSUB 1430
  239. 2380  POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
  240. 2390  HOME 
  241. 2400  PRINT "MULTI-FLASH QUIT"
  242. 2410  PRINT "----------------": PRINT 
  243. 2430  PRINT "Press M for main"
  244. 2440  PRINT "menu."
  245. 2450  PRINT : PRINT "Press Q or ESC": PRINT "to quit."
  246. 2460  VTAB 16: PRINT "Press any other"
  247. 2470  PRINT "key to resume."
  248. 2480 KP =  PEEK(ST)
  249. 2490 KP =  PEEK(KB): IF KP <128  THEN 2490
  250. 2500 KP =  PEEK(KB) -128
  251. 2510 A$ =  CHR$(KP):J =  PEEK(ST)
  252. 2520  IF (A$ = "M")  OR (A$ = "m")  THEN  CALL 54915: GOTO 170
  253. 2522  IF (A$ = "Q")  OR (A$ = "q")  OR (A$ =  CHR$(27))  THEN  POKE 48688,R0: POKE 48689,R1: TEXT : NORMAL : PRINT  CHR$(4)"BYE"
  254. 2530  RETURN 
  255. 2650  REM          PUT OUT LEVEL SELECTION BOX
  256. 2660  GOSUB 1430
  257. 2670  POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
  258. 2680  HOME 
  259. 2690  PRINT "  Study Mixed"
  260. 2700  PRINT " Facts Through"
  261. 2710  PRINT "---------------": PRINT 
  262. 2720  PRINT "1.   One's Table"
  263. 2730  PRINT "2.   Two's Table"
  264. 2740  PRINT "3. Three's Table"
  265. 2750  PRINT "4.  Four's Table"
  266. 2760  PRINT "5.  Five's Table"
  267. 2770  PRINT "6.   Six's Table"
  268. 2780  PRINT "7. Seven's Table"
  269. 2790  PRINT "8. Eight's Table"
  270. 2800  PRINT "9.  Nine's Table"
  271. 2810  VTAB 17: PRINT "  Enter Choice"
  272. 2820 P = 2: GOSUB 310:P = 0: IF RD = 1  THEN 2650
  273. 2830  IF (KP <49)  OR (KP >58)  THEN  GOSUB 250: GOTO 2820
  274. 2840 J =  PEEK(ST):KP = KP -48
  275. 2850 LIMIT = KP
  276. 2860  GOSUB 1460
  277. 2870  PRINT  CHR$(20): HOME 
  278. 2880 SC = 0:MX = SC: GOSUB 1330: RETURN 
  279. 2890  REM          PUT OUT GAME SELECTION  BOX
  280. 2900  GOSUB 1430
  281. 2910  POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
  282. 2920  HOME 
  283. 2930  PRINT "  SELECT GAME"
  284. 2940  PRINT "---------------": PRINT 
  285. 2950  PRINT "1:Multiplication"
  286. 2960  PRINT "  facts for a"
  287. 2970  PRINT "  single number."
  288. 2980  PRINT 
  289. 2990  PRINT "2:Mixed "
  290. 3000  PRINT "  multiplication"
  291. 3010  PRINT "  facts."
  292. 3020  VTAB 17: PRINT "  Enter Choice"
  293. 3030 P = 2: GOSUB 310:P = 0: IF RD = 1  THEN 2890
  294. 3040  IF (KP < >49)  AND (KP < >50)  THEN  GOSUB 250: GOTO 3030
  295. 3050 J =  PEEK(ST):KP = KP -48
  296. 3060  IF KP = 1  THEN GA = 0
  297. 3070  IF KP = 2  THEN GA = 1
  298. 3080  PRINT  CHR$(20): HOME 
  299. 3090  RETURN 
  300. 3100  REM         PUT OUT QUIT BOX
  301. 3110 RD = 1
  302. 3120  GOSUB 1430
  303. 3130  POKE 32,3: POKE 33,17: POKE 34,2: POKE 35,21
  304. 3140  HOME 
  305. 3150  PRINT " MULTI-FLASH"
  306. 3160  PRINT "---------------": PRINT 
  307. 3170  PRINT "Press N for a"
  308. 3180  PRINT "new game."
  309. 3190  VTAB 16: PRINT "Press any other"
  310. 3200  PRINT "key to continue"
  311. 3210 KP =  PEEK(ST)
  312. 3220 KP =  PEEK(KB): IF KP <128  THEN 3220
  313. 3230 KP =  PEEK(KB) -128
  314. 3240 A$ =  CHR$(KP):J =  PEEK(ST)
  315. 3250  IF (A$ = "N")  OR (A$ = "n")  THEN  CALL 54915::SC = 0:MX = SC: GOTO 170
  316. 3260  IF P >0  THEN  RETURN 
  317. 3270  GOSUB 2280
  318. 3280  REM  <CTRL-0x0d><CTRL-0x0d>*****<CTRL-0x0d>NAME:GS MONOCHROME<CTRL-0x0d>PASS:NOTHING<CTRL-0x0d>USES:$C029<CTRL-0x0d>CALLS:$FE1F<CTRL-0x0d>RETURNS: HIRES GRAPHICS BECOME COLORLESS<CTRL-0x0d>*****<CTRL-0x0d>
  319. 3290  CALL  PEEK(121) + PEEK(122) *256 +28: REM 8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF ^ TAB(  IF ) TAB( <CTRL-0x09>  PLOT ) TAB( `
  320. 3300  RETURN 
  321. 3310  REM <CTRL-0x0d><CTRL-0x0d>*****<CTRL-0x0d>NAME:GS COLOR<CTRL-0x0d>PASS:NOTHING<CTRL-0x0d>USES:$C029<CTRL-0x0d>CALLS:$FE1F<CTRL-0x0d>RETURNS: COLORED GRAPHICS<CTRL-0x0d>*****<CTRL-0x0d>
  322. 3320  CALL  PEEK(121) + PEEK(122) *256 +28: REM 8 <CTRL-0x1f><UNKNOWN TOKEN> GOSUB <CTRL-0x02> HGR2 <CTRL-0x01>` IF _ TAB(  IF ) TAB( ) SIN PLOT ) TAB( `
  323. 3330  RETURN 
  324. 3340  REM   successful sound
  325. 3350 Z = P:D = 20
  326. 3360  FOR P = 212 TO 96  STEP  -11: GOSUB 3390: NEXT P
  327. 3370 P = 96:D = 200: GOSUB 3390:P = Z: RETURN 
  328. 3380 P = 96:D = 30: GOSUB 3390:P = Z: RETURN 
  329. 3390  REM <CTRL-0x0d><CTRL-0x0d>*****<CTRL-0x0d>NAME:HUMMY TONE<CTRL-0x0d>PASS:P:PITCH D:DURATION<CTRL-0x0d>USES:$50,$BEE0-1<CTRL-0x0d>CALLS:$DEBE,DD67,E752<CTRL-0x0d>RETURNS: A TONE<CTRL-0x0d>*****<CTRL-0x0d>
  330. 3400  CALL  PEEK(121) + PEEK(122) *256 +32,P,D: REM   GET  COS g EXP R CHR$ ONERR P PLOT  TAN GET   GET  COS g EXP R CHR$ ONERR P PLOT  ATN GET  PLOT 0 TAB(  GR  MID$  MID$  = <CTRL-0x05>  OR  ATN GET <UNKNOWN TOKEN><CTRL-0x13> * = <CTRL-0x05> RESTORE  TAN GET  = <UNKNOWN TOKEN> RIGHT$<CTRL-0x01> =  MID$  IF  TAN GET  =  PEEK````
  331. 3410  RETURN 
  332. 3420  REM  error trap to ignore cntl-c
  333. 3430 EC =  PEEK(222)
  334. 3440  IF EC = 255  THEN  RESUME 
  335. 3450  TEXT : REM  fatal unexpected error
  336. 3460 LI =  PEEK(218) + PEEK(219) *256
  337. 3470  HOME : NORMAL 
  338. 3480  PRINT "unexpected error #";EC;" in line "LI