home *** CD-ROM | disk | FTP | other *** search
/ 8bitfiles.net/archives / archives.tar / archives / genie-commodore-file-library / C64Educational / SUBTRACTION (.txt) < prev    next >
Encoding:
Commodore BASIC  |  2019-04-13  |  9.1 KB  |  290 lines

  1. 0 OPEN 5,3
  2. 1 ML=855:DATA 162,5,32,201,255,169,147,32,210,255
  3. 2 DATA 162,250,169,32,157,255,3,157,249,4,157,243,5,157,237,6,169,1
  4. 3 DATA 157,255,215,157,249,216,157,243,217,157,237,218,202,208,225,96
  5. 4 FOR T=0 TO 43:READ A:POKE ML+T,A:NEXT
  6. 5 DIM CM$(12)
  7. 11 CM$(1)="VERY IMPRESSIVE!"
  8. 12 CM$(2)="I SEE YOU'VE BEEN DOING YOUR HOMEWORK!"
  9. 13 CM$(3)="TOO BAD YOUR TEACHER CAN'T SEE THIS!"
  10. 14 CM$(4)="THE MATH DEPARTMENT IS PROUD OF YOU!"
  11. 15 CM$(5)="WELL, WE CAN'T ALL BE PERFECT."
  12. 16 CM$(6)="THAT WAS A GOOD TRY."
  13. 17 CM$(7)="YOU ALMOST MADE IT ON THAT ONE."
  14. 18 CM$(8)="KEEP TRYING.  YOU'RE DOING WELL."
  15. 19 CM$(9)="KEEP TRYING.  YOU'LL GET IT."
  16. 20 CM$(10)="DON'T GET DISCOURAGED.  YOU'LL DO BETTER"
  17. 21 CM$(11)="THESE PROBLEMS ARE NOT SO EASY.
  18. 22 CM$(12)[178]"TRY AGAIN.  PRACTICE MAKES PERFECT."
  19. 80 K[178]1024[170]5[172]40[170]9:K1[178]K[171]120:K2[178]K[171]160
  20. 90 [151] 53280,0:[151] 53281,0:[153]""
  21. 100 [129] X[178]1 [164] [197]([201](TI$,2)):O7[178][187](1):[130]X
  22. 150 [129]Y[178]1[164]3:[135]I$(Y):[130]
  23. 160 [131]"EXCELLENT!  NO MISTAKES.","PERFECT!"
  24. 170 [131]"FANTASTIC, NO ERRORS!"
  25. 180 [134] C(13):[129] X[178]1 [164] 13:[135] C(X):[130] X
  26. 190 [131]162,0,169,96,157,8,6,232,224,240,208,248,96
  27. 200 [153]"LOAD";:[158](ML)
  28. 205 [129] TW[178]1024 [164] 1064:[151] TW,160:[151] TW[170]960,160:[130]
  29. 206 [129] TW[178]1024 [164] 1984 [169] 40:[151] TW,160:[151] TW[170]39,160:[130]
  30. 209 [153]"";
  31. 210 [153]"        S U B T R A C T I O N":[153]"        USRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSRUSR"
  32. 220 [153]:[153]:[153]:[153][163]6)"COPYRIGHT 1983  DONALD ROSS":[153]
  33. 225 [153][163]8)"MICROCOMPUTER WORKSHOPS":[153]:[153]
  34. 227 [129] X[178]1 [164] 2100:[130]X:[153]"LOAD":[158](ML)
  35. 228 [129] GF[178]1 [164] 8:[161] YT$:[130]
  36. 230 [153]:[153]"LOADHI!!  WHAT'S YOUR NAME ";
  37. 235 [133]N$
  38. 236 [139] N$[178]"" [167][153]:[137]230
  39. 240 [153]"LOAD";:[158](ML)
  40. 241 [153]"HI "N$"!!":[153]"DO YOU WANT INSTRUCTIONS ?";
  41. 242 [161] G$:[139] G$[178]"" [167] 242
  42. 260 [139]G$[179][177]"Y"[175]G$[179][177]"N"[167] 240
  43. 270 [139]G$[178]"N"[167]700
  44. 290 [153]"LOAD";:[158](ML):[153]"             INSTRUCTIONSWAIT"
  45. 300 [153]"I WILL GIVE YOU PRACTICE IN SUBTRACTION."
  46. 310 [153]"YOU WILL CHOOSE THE SIZE OF THE"
  47. 320 [153]"PROBLEMS.  YOU WILL DECIDE ALSO IF THERE"
  48. 330 [153]"SHOULD BE BORROWING.  (PROBLEMS WITHOUT"
  49. 331 [153]"BORROWING ARE EASIER.)
  50. 340 GOSUB2430
  51. 350 PRINT"[147]";:SYS(ML)
  52. 351 PRINT"OK, "N$", HERE IS AN EXAMPLE ":PRINT"WITHOUT[146] BORROWING:"
  53. 360 PRINTTAB(10)"5 9 6":PRINTTAB(7)"-  2 4 0":PRINTTAB(9)"[163][163][163][163][163][163][163]"
  54. 370 POKE 1398,160:PRINT"THE WHITE SQUARE IS THE CURSOR AND SHOWS"
  55. 380 PRINT"WHERE THE NEXT NUMBER SHOULD GO."
  56. 390 GOSUB 2430
  57. 410 PRINT"IN THIS CASE, 6 MINUS 0 IS 6. YOU SHOULD"
  58. 420 PRINT"NOW TYPE A 6."
  59. 425 PRINT"            TRY[146] TYPING A 6!";
  60. 426 GET G$:IF G$<>"6" THEN426
  61. 427 POKE 1398,54:POKE 1396,160
  62. 440 PRINT"A 6 HAS BEEN PRINTED AND THE CURSOR IS  "
  63. 450 PRINT"NOW UNDER THE 4."
  64. 460 GOSUB2430
  65. 470 PRINT"THIS CONTINUES UNTIL THE PROBLEM IS     SOLVED."
  66. 480 GOSUB2430:POKE1396,53:POKE1394,51
  67. 490 PRINT"[145][145][145][145][145][145][145]IN THIS MANNER A COMPLICATED PROBLEM IS BROKEN DOWN INTO ";
  68. 500 PRINT"SIMPLE STEPS.":GOSUB2430
  69. 510 PRINT"[147]";:SYS(ML)
  70. 511 PRINT"HOWEVER,  IF THE PROBLEM WAS LIKE THE   FOLLOWING ONE, ";
  71. 520 PRINT"THEN YOU WOULD[146] HAVE TO   BORROW:":POKE1438,160
  72. 530 PRINTTAB(10)"5 1 0":PRINTTAB(7)"-  4 0 4":PRINTTAB(9)"[163][163][163][163][163][163][163]"
  73. 550 PRINT"BECAUSE WE CANNOT SUBTRACT 4 FROM 0, WE"
  74. 560 PRINT"HAVE TO BORROW ONE FROM THE NEXT DIGIT."
  75. 570 PRINT"THIS IS DONE BY TYPING A B[146]."
  76. 571 PRINT"           TRY[146] TYPING A B!"
  77. 572 GET G$:IF G$<>"B" THEN 572
  78. 573 PRINT"WHEN YOU TYPE 'B', THE NEXT DIGIT OVER "
  79. 574 PRINT"WILL BE HIGHLIGHTED.                                                "
  80. 575 POKE 1316,177:GOSUB 23000
  81. 577 REM
  82. 578 POKE 1277,160
  83. 579 PRINT"NOW THE COMPUTER WILL ASK FOR A CARRY."
  84. 580 PRINT"IN ALL SUBTRACTION PROBLEMS THE CARRY"
  85. 581 PRINT"IS A 1.                               "
  86. 582 PRINT"                                      "
  87. 584 REM
  88. 585 PRINT"          TRY[146] TYPING A 1.  "
  89. 586 GET G$:IF G$<>"1" THEN 586
  90. 588 POKE 1277,49
  91. 590 PRINT"THE CARRY APPEARS AND NOW YOU MUST      "
  92. 591 PRINT"SUBTRACT 4 FROM 10.  YOU MUST NOW      "
  93. 592 PRINT"TYPE A 6."
  94. 593 PRINT"          TRY[146] TYPING A 6.   "
  95. 594 GET G$:IF G$<>"6" THEN 590
  96. 595 POKE 1438,54
  97. 600 PRINT"THIS CONTINUES UNTIL THE PROBLEM IS     "
  98. 601 PRINT"SOLVED.                                 "
  99. 602 PRINT"                                        "
  100. 603 GOSUB 2430
  101. 690 PRINT"[147]";:SYS(ML):PRINT"OK, "N$", GOOD LUCK!!":FORY=1TO3000:NEXT
  102. 700 GOSUB 25000:SK=PN
  103. 709 PRINT"[147]";:SYS(ML):PRINT"WOULD YOU LIKE:":PRINT
  104. 710 PRINT"    1) PROBLEMS WHERE YOU BORROW[146]" :PRINT
  105. 720 PRINT"    2) PROBLEMS WHERE YOU DON'T BORROW[146]":PRINT
  106. 730 GET G$:IF G$="" THEN 730
  107. 731 SD=0:C1=ASC(G$)-48:IFC1>2ORC1<1THEN730
  108. 740 PRINT:PRINT:PRINT:PRINT"HOW MANY DIGITS DO YOU WANT IN EACH     PROBLEM ?"
  109. 750 GET G$:IF G$="" THEN 750
  110. 751 C2=ASC(G$)-48
  111. 754 IFC1<>1ORC2<>1THEN760
  112. 755 PRINT:PRINT"YOU CAN'T HAVE A 1-DIGIT PROBLEM WITH[146]   BORROWING"
  113. 756 FOR X=1TO1500:NEXTX:GOTO 709
  114. 760 IFC2<6ANDC2>0THEN790
  115. 770 PRINT:PRINT:PRINT"THE NUMBER OF DIGITS MUST BE BETWEEN    1 AND 5[146]."
  116. 775 FOR X=1 TO 1500:NEXT X
  117. 776 PRINT"[145][145][145]                                                          "
  118. 780 PRINT"[145][145][145][145][145][145]":GOTO750
  119. 790 REM PRINT OUT OF PROBLEM
  120. 791 FOR VM=1 TO SK
  121. 800 FORX=1TOC2:R(X)=INT(RND(TI)*10)
  122. 810 R(X)=INT(RND(TI)*10)
  123. 820 S(X)=INT(RND(TI)*10):IFC1=1THEN860
  124. 840 IFS(X)>R(X)THEN820
  125. 850 A(X)=R(X)-S(X)
  126. 860 NEXT
  127. 861 K6=0
  128. 862 IFC1=2THEN870
  129. 863 FORX=1TOC2
  130. 864 IFS(X)>R(X)THENK6=1
  131. 865 NEXTX
  132. 866 IFK6=0THEN800
  133. 870 IFR(1)<=S(1)ORR(1)=0ORS(1)=0THEN800
  134. 900 FORX=C2TO1STEP-1:R1(X)=R(X):S1(X)=S(X):NEXT:PRINT"[147]"
  135. 910 SYS(ML):PRINT:PRINT:PRINTTAB(10);:FORX=1TOC2:PRINTR(X)"[157]";:NEXT:PRINT
  136. 920 PRINTTAB(7)"-  ";:FORX=1TOC2:PRINTS(X)"[157]";:NEXT:PRINT
  137. 930 PRINTTAB(10);:FORX=1TO2* C2+1:PRINT"[163]";:NEXT:PRINT
  138. 940 PRINT"":IFC1=1THEN1520
  139. 960 FORX=C2TO1STEP-1:POKEK+X*2,160:GOSUB1100
  140. 970 POKE K+X*2,G+48
  141. 1000 IFG=A(X)THEN1030
  142. 1010 M=1:GOSUB1160:IF M<>5THENPOKEK+X*2,G+176
  143. 1020 S=1:GOSUB1100:GOSUB1390:GOTO1000
  144. 1030 POKE K+X*2,G+48:S=0:NEXT X
  145. 1040 GOTO 1740
  146. 1060 PRINT"[147]":SYS(ML):S=0
  147. 1070 SD=SD+S2
  148. 1071 S2=0
  149. 1072 NEXT VM
  150. 1080 VM=VM-1
  151. 1090 GOTO 9000
  152. 1100 PRINT"          (HIT * TO QUIT)";
  153. 1101 G=-1:G$="":GET G$
  154. 1102 IF G$="" OR G$=CHR$(13) THEN 1101
  155. 1103 IF G$="*" THEN 9000
  156. 1104 IF (ASC(G$)-48<0 OR ASC(G$)-48>9) AND G$<>"B" THEN 1101
  157. 1130 IFASC(G$)-48>-1ANDASC(G$)-48<10THENG=ASC(G$)-48
  158. 1140 RETURN
  159. 1160 IF G=-1 THEN M=5:POKE K+X*2,160
  160. 1165 GOSUB1390:ONMGOTO1180,1360,1270,1300,1330,1350
  161. 1180 IFS=1THEN1230
  162. 1190 PRINT"YOU ARE INCORRECT.  PLEASE TRY AGAIN.[145]":S=1:S2=S2+1:POKEK+2*X,176+G
  163. 1220 RETURN
  164. 1230 PRINT"SORRY,THE ANSWER IS"A(X)"[157]. WHEN YOU        UNDERSTAND YOUR MIS";
  165. 1240 S=0:PRINT"TAKE TYPE IN THE     CORRECT ANSWER.  ":POKEK+2*X,176+G
  166. 1250 PRINT"[145][145][145][145][145][145]":S2=S2+1:RETURN
  167. 1270 PRINT"YOU CAN NOT SUBTRACT WITHOUT FIRST"
  168. 1280 PRINT"BORROWING[146].  (TO BORROW TYPE B).[145][145][145]":RETURN
  169. 1300 PRINT   "THE CORRECT ANSWER IS"R(X-1)-1"[157]. WHEN YOU       UNDERSTAND ";
  170. 1310 PRINT"YOUR MISTAKE TYPE IN THE     CORRECT ANSWER.[145][145][145][145][145]"
  171. 1320 S2=S2+1:RETURN
  172. 1330 PRINT"BORROWING IS NOT NECESSARY IN           THIS STEP.  [145][145][145]"
  173. 1340 RETURN
  174. 1350 S2=S2+1:PRINT"YOUR CARRY IS NOT CORRECT.[145]":RETURN
  175. 1360 PRINT"YOU CAN NOT SUBTRACT FROM 0.            TYPE 'B' TO BORROW.[145][145][145]"
  176. 1370 S2=S2+1:RETURN
  177. 1390 T=0
  178. 1410 FORX1=826TO838:T=T+1:POKEX1,C(T)
  179. 1430 NEXTX1
  180. 1440 SYS(826):POKE831,248:SYS(826):RETURN
  181. 1520 FORD=C2TO1STEP-1
  182. 1530 IFR1(D)-S1(D)<0THEN1560
  183. 1540 A(D)=R1(D)-S1(D)
  184. 1550 GOTO1590
  185. 1560 R1(D-1)=R1(D-1)-1:R1(D)=R1(D)+10:GOTO1540
  186. 1590 NEXT
  187. 1600 FORX=C2TO1STEP-1:POKEK+2*X,160
  188. 1610 IF R(X)-S(X)<>0ORX<>1 THEN 1620
  189. 1615 G=0:GOTO 1690
  190. 1620 M=0:S6=0:GOSUB1100:GOSUB1390
  191. 1630 IFG$="B"ANDR(X)-S(X)>-1THENM=5
  192. 1640 IFG$<>"B"ANDR(X)-S(X)<0THENM=3
  193. 1650 IFG$="B"ANDM=0THENGOSUB1860
  194. 1660 IFS6=1THEN1620
  195. 1670 IFG=A(X)ANDM=0THEN1700
  196. 1680 GOSUB1160:GOSUB1100:GOSUB1390:M=0:GOTO1630
  197. 1690 IF X=1 AND G=0 THEN POKEK+2*X,96:GOTO1710
  198. 1700 POKEK+2*X,G+ 48
  199. 1710 M=0:NEXTX
  200. 1740 XZ=1+INT(RND(0)*4)+4*((ABS(S2>1)ANDABS(S2<4))+ABS(S2>3)*2)
  201. 1741 ET$="ERRORS.":IF S2=1 THEN ET$="ERROR."
  202. 1742 PRINT"YOU MADE"S2;ET$
  203. 1750 PRINTCM$(XZ)
  204. 1760 FOR WA=1 TO 2000:NEXT
  205. 1850 GOTO1060
  206. 1860 PRINT"BORROWING":PRINT"TYPE THE NUMBER THE HIGHLIGHTED DIGIT   SHOULD";
  207. 1880 PRINT" BE CHANGED TO.[145][145][145][145][145]"
  208. 1890 POKE K1+2*X-2,R(X-1)+176
  209. 1900 GOSUB1100:GOSUB1390
  210. 1910 IF X<2THEN1970
  211. 1920 IFG$<>"B"ANDR(X-1)=0THENM=2
  212. 1930 IFG$="B"ANDR(X-1)=0THENGOSUB2120
  213. 1940 IFG$<>"B"ANDR(X-1)=0THEN1990
  214. 1950 IFR(X-1)>9THEN2110
  215. 1960 IFG$="B"ANDR(X-1)<>0THENM=7
  216. 1970 IFG=R(X-1)-1THEN2010
  217. 1980 IF M=0THEN M=4
  218. 1990 GOSUB1160
  219. 2000 M=0:GOTO1890
  220. 2010 POKE K1+2*X-2,G+48
  221. 2020 PRINT"CORRECT.  NOW TYPE THE NEW CARRY.[145]":POKEK2+2*X-1,160:GOSUB1100:M=0
  222. 2050 M=0:IFG=1THEN2070
  223. 2060 M=6:GOSUB1160:GOSUB1100:GOTO2050
  224. 2070 POKEK2+2*X-1,49:GOSUB1390
  225. 2080 PRINT"NOW CONTINUE PROBLEM[145]":R(X)=R(X)+10:R(X-1)=R(X-1)-1
  226. 2110 S6=1:RETURN
  227. 2120 K9=0
  228. 2130 POKEK1+2*X-2-2*K9,R(X-1-K9)+48:POKEK1+2*X-4-2*K9,R(X-2-K9)+176
  229. 2150 PRINT"BORROWING":PRINT"TYPE THE NUMBER THE HIGHLIGHTED         NUMBER";
  230. 2160 PRINT" SHOULD BE CHANGED TO.[145][145][145][145][145]"
  231. 2170 M=0:GOSUB1100:GOSUB1390
  232. 2180 IFG$<>"B"ANDR(X-2-K9)=0THENM=2
  233. 2190 IFG$="B"ANDR(X-2-K9)<>0THENM=5
  234. 2200 IFM>0THENGOSUB1160
  235. 2210 IFM>0THENGOTO2170
  236. 2220 IFG$="B"ANDR(X-2-K9)=0THENK9=K9+1
  237. 2230 IFG=R(X-2-K9)-1THEN2250
  238. 2240 GOTO2130
  239. 2250 POKEK1+2*X-4-2*K9,G+48:K9=K9+1
  240. 2260 R(X-K9-1)=R(X-K9-1)-1
  241. 2270 R(X-K9)=R1(X-K9)+10:POKEK2+2*X-2*K9-1,160
  242. 2280 GOSUB1390:PRINT"CORRECT. NOW TYPE THE NEW CARRY.[145]"
  243. 2290 GOSUB1100
  244. 2300 IFG=R1(X-K9)THEN2360
  245. 2310 IFG=1ANDK9=0THEN2330
  246. 2320 IF G<>9ANDR1(X-K9)=9 THEN 2410
  247. 2325 PRINT"INCORRECT CARRY.                    [145]":GOTO2290
  248. 2330 POKEK2+2*X-2*K9-1,49
  249. 2350 GOTO2380
  250. 2360 POKEK2+2*X-2*K9-1,G+48:POKEK2+2*X-2*K9+40,102
  251. 2380 K9=K9-1:IFK9>-1THEN2270
  252. 2390 PRINT"OK "N$",NOW CONTINUE WITH THE PROBLEM.[145]"
  253. 2400 RETURN
  254. 2410 PRINT"WRONG, YOU MUST CHANGE THE 0 TO A 9.[145]"
  255. 2420 GOTO2290
  256. 2430 PRINT"          (HIT 'C' TO CONTINUE)"
  257. 2431 G$=""
  258. 2440 GET G$:IFG$<>"C"THEN2440
  259. 2450 GOSUB1390:RETURN
  260. 2460 END
  261. 9000 PRINT"[147]ERROR ANALYSIS:"
  262. 9010 PRINT"TOTAL  -- "SD
  263. 9020 PRINT:PRINT"PER PROBLEM -- "INT((SD/VM)*100)/100
  264. 9030 FOR WA=1 TO 2500:NEXT
  265. 9040 PRINT"HIT RETURN[146] TO CONTINUE OR * TO SEE MENU"
  266. 9041 GET G$
  267. 9042 IF G$=CHR$(13) THEN 700
  268. 9043 IF G$<>"*" THEN 9041
  269. 9044 PRINT"                                       "
  270. 9050 PRINT"I HOPE YOU ENJOYED THIS SESSION!!"
  271. 9060 LOAD"MENU",8:RUN
  272. 22999 END
  273. 23000 PRINT"THIS NUMBER MUST BE REDUCED BY ONE.":PRINT:PRINT"IN THIS CASE THE ANSWER IS 0."
  274. 23010 PRINT"           TRY[146] TYPING A 0!";
  275. 23020 GET G$:IF G$<>"0" THEN 23020
  276. 23040 POKE 1316,48
  277. 23050 RETURN
  278. 24999 END
  279. 25000 PRINT"[147]HOW MANY PROBLEMS DO YOU WANT";
  280. 25005 INPUT PN$
  281. 25010 IF PN$="" THEN 25000
  282. 25020 PN=VAL(PN$)
  283. 25030 IF PN<1 THEN 25000
  284. 25040 IF PN<10 THEN RETURN
  285. 25050 PRINT"ARE YOU SURE YOU WANT "PN$" PROBLEMS (Y/N)?";
  286. 25060 GET DC$
  287. 25070 IF DC$<>"Y" AND DC$<>"N" THEN 25060
  288. 25080 IF DC$="Y" THEN RETURN
  289. 25090 GOTO25000
  290.