home *** CD-ROM | disk | FTP | other *** search
/ The CIA World Factbook 1992 / k3bimage.iso / sel / 04 / 0057 / addlnup.bas (.txt) < prev    next >
Encoding:
GW-BASIC  |  1991-12-02  |  11.8 KB  |  265 lines

  1. 2   REM          ADD LINE-UP PRACTICE  "ADDLNUP.BAS"
  2. 3   REM              By STAN GREENE - 03/05/85
  3. 5   REM        Copyright 1984 - MICROCOMPUTER WORKSHOPS
  4. 6   REM     IBM PC,PC-JR VERSION - ROSS, BRANDON & REID, INC.
  5. 7   REM ===========================================================
  6. 10   DEFSTR A-B,F-I
  7. 11   DEFINT C,E,L,N-P,W-Z
  8. 12   DIM A(11),PF(11),ET(11),EF(11),FE(11),FL(11),FM(12),XA(6)
  9. 13   COMMON GN,CJ,CBS,JC
  10. 14   REM  CBS=32:WIDTH 40:CJ=1:COLOR 7,CJ,CJ:CLS
  11. 15   IF CBS < 32 THEN CHAIN "CBS.BAS"
  12. 20   GOTO 50000
  13. 25   GOSUB 30100
  14. 26   I=INKEY$:IF I="" OR I="%" OR I=CHR$(13) THEN 26 ELSE RETURN
  15. 50   GOSUB 30100: LOCATE 23,7,0:PRINT F1;
  16. 55   I=INKEY$:IF I <> CHR$(13) THEN 55 ELSE RETURN
  17. 99   REM ********** MAIN MENU *************
  18. 100   CZ=0: PC=1: FOR X= 1 TO 3: ET(X)=0: EF(X)=0: NEXT
  19. 199  REM *******  PROBLEM PROMPTS *********
  20. 200   CLS
  21. 201   LOCATE 1,1: PRINT "How many practice problems would you";
  22. 202   GOSUB 30100:LOCATE 3,1:PRINT "like to try (1 - 9)? ";
  23. 203   I=INKEY$: IF I="" THEN 203
  24. 204   NP=VAL(I): IF NP=0 THEN 202 ELSE PRINT I: FOR X=1 TO 900:NEXT
  25. 205   REM ************* GET LIMITS FOR NEXT PROBLEM *********************
  26. 206   CLS:LOCATE 1,1:PRINT "For problem #"RIGHT$(STR$(PC),1);
  27. 210   LOCATE 4,1: PRINT "Enter the maximum number of digits per";
  28. 211   GOSUB 30100:LOCATE 6,1: PRINT "decimal (2 - 6)? ";
  29. 212   I=INKEY$:IF I="" THEN 212
  30. 213   ND=VAL(I):IF ND<2 OR ND>6 THEN 211 ELSE PRINT I
  31. 214   IF ND>4 THEN X=4:GOTO 218
  32. 215   IF ND=4 THEN X=5 ELSE X=6
  33. 218   LOCATE 9,1:PRINT "Enter the amount of numbers you wish to";
  34. 220   GOSUB 30100: LOCATE 11,1:PRINT "use for this problem (2 -";STR$(X);")? ";
  35. 223   I=INKEY$:IF I ="" THEN 223
  36. 230   NN=VAL(I): IF NN<2 OR NN>X THEN 220 ELSE PRINT I
  37. 299   REM **** COMPUTE PROBLEM ****
  38. 300   FOR X=1 TO 6: ET(X)=0: A(X)="": NEXT: EN$=""
  39. 305   X= VAL(MID$(TIME$,7,2)): RANDOMIZE X
  40. 310   FOR X = 1 TO NN: FOR Y = 1 TO ND
  41. 320   Z=INT(RND*10): IF Y=1 AND Z=0 THEN 320
  42. 325   A(X)=A(X) + RIGHT$(STR$(Z),1):NEXT
  43. 330   Z=INT(RND*(LEN(A(X))+1)): IF Z=LEN(A(X))+1 THEN A(X) = "." + A(X):GOTO 345
  44. 340   IF Z<> LEN(A(X)) THEN A(X)=LEFT$(A(X),Z) + "." + RIGHT$(A(X),LEN(A(X))-Z)
  45. 345   NEXT
  46. 350   FOR X=1 TO NN: Y=INSTR(A(X),"."): IF Y = 0 THEN 359
  47. 352   FOR Z=LEN(A(X)) TO Y STEP -1: IF MID$(A(X),Z,1) <> "0" THEN Z=Y: GOTO 358
  48. 355   A(X)=LEFT$(A(X),Z-1): IF MID$(A(X),Z-1,1)="." THEN A(X)=LEFT$(A(X),Z-2)
  49. 358   NEXT
  50. 359   NEXT
  51. 360   I=A(1): FOR X = 2 TO NN: I=I+" + "+A(X): NEXT: PN=INT((40-LEN(I))/2):LL=PN
  52. 370   XA(1)=PN:XB=PN:FOR X=2 TO NN:XA(X)=XB+3+LEN(A(X-1)):XB=XA(X):NEXT
  53. 395   GOTO 1000
  54. 399  REM  **** INKEY$ ROUTINE FOR ADDITION ANSWERS ****
  55. 400  GOSUB 30100
  56. 410  I=INKEY$:IF I= "" OR I= CHR$(13) OR I="%" THEN 410
  57. 411  IF I="S" THEN 48000
  58. 412  IF ASC(I) < 48 OR ASC(I)> 57 THEN 410
  59. 420  PRINT I;:RETURN
  60. 499  '***** MOVE #'S MENU
  61. 500  GOSUB 30400:RETURN
  62. 510  LOCATE 17,1:PRINT "   Use the ARROW keys to line up the"
  63. 515  LOCATE 18,1:PRINT "flashing number with the decimal point."
  64. 520  LOCATE 20,2:PRINT "Press <C> to check the number lineup."
  65. 525  LOCATE 23,11:PRINT IQ;:RETURN
  66. 599  '***** MOVE #'S INKEY$ ROUTINE
  67. 600   B=STRING$(LEN(A(ZZ)),32)
  68. 615   X=0:Y=0
  69. 619   REM  GOSUB 30100: GOSUB 30201: COLOR 23: PRINT A(ZZ);:COLOR 7
  70. 620   GOSUB 30100: GOSUB 30201: COLOR CJ,7: PRINT A(ZZ);:COLOR 7,CJ
  71. 621   S$=INKEY$:IF S$="" THEN 621 ELSE IF MSG=1 THEN MSG=0:GOSUB 30400
  72. 622   LOCATE R1,C1+LEN(A(ZZ)):L1=ASC(S$):IF L1=0 THEN GOSUB 55000
  73. 623   IF L1=50 OR L1=52 OR L1=54 OR L1=56 OR L1=65 OR L1=67 OR L1=83 THEN 624 ELSE 621
  74. 624   IF L1=65 OR L1=67 OR L1=83 THEN 630 ELSE L1 = (L1-48)/2
  75. 625   ON L1 GOTO 730,760,780,700
  76. 630   IF L1=65 THEN 900
  77. 631   IF L1=67 THEN 800
  78. 632   IF L1=83 THEN 50000
  79. 640   IF Y>=5 THEN IF X=1 THEN X=0:Y=0:ELSE X=1:Y=0
  80. 650   IF X=1 THEN GOSUB 30201: PRINT B;:Y=Y+1:GOTO 620
  81. 660   GOSUB 30201:PRINT A(ZZ);:Y=Y+1:GOTO 620
  82. 699  '*** UP ARROW
  83. 700  Z=1:IF LP<2 THEN BEEP:GOTO 640
  84. 705  IF PF(LP-Z)=1 THEN Z=Z+1:IF LP-Z<1 THEN 640 ELSE 705
  85. 710  GOSUB 30201: PRINT B;:IF LP=NN THEN GOSUB 30202: PRINT "+";
  86. 711  REM  P=P-(Z*64):LP=LP-Z:GOSUB 30201:PRINT A(ZZ);:GOTO 615
  87. 712  P=P-(Z*64):LP=LP-Z:GOSUB 30201:COLOR CJ,7:PRINT A(ZZ);:GOTO 615
  88. 729  '*** DOWN ARROW
  89. 730  Z=1:IF LP=NN THEN BEEP:GOTO 640
  90. 735  IF LP=0 THEN GOSUB 30201:PRINT B;:PN=POS(0)-1:GOSUB 500
  91. 740  IF PF(LP+Z)=1 THEN Z=Z+1:IF LP+Z > NN THEN 640 ELSE 740
  92. 744  REM GOSUB 30201:PRINT B;:P=P+(Z*64):LP=LP+Z:GOSUB 30201:PRINT A(ZZ);:GOTO 615
  93. 745  GOSUB 30201:PRINT B;:P=P+(Z*64):LP=LP+Z:GOSUB 30201:COLOR CJ,7:PRINT A(ZZ);:GOTO 615
  94. 759  '*** LEFT ARROW
  95. 760  IF LP=0 OR POS(0)-LEN(A(ZZ))=LL THEN BEEP:GOTO 640
  96. 765  GOSUB 30201:PRINT B;:GOSUB 30202:PRINT "+";
  97. 769  REM  P=P-1:GOSUB 30201:PRINT A(ZZ);:GOTO 615
  98. 770  P=P-1:GOSUB 30201:COLOR CJ,7:PRINT A(ZZ);:GOTO 615
  99. 779  '*** RIGHT ARROW
  100. 780  IF LP=0 OR POS(0)=LR THEN BEEP:GOTO 640
  101. 785  GOSUB 30201:PRINT B;:GOSUB 30202:PRINT "+";
  102. 789  REM  P=P+1:GOSUB 30201:PRINT A(ZZ);:GOTO 615
  103. 790  P=P+1:GOSUB 30201:COLOR CJ,7:PRINT A(ZZ);:GOTO 615
  104. 799  '*** CHECK LINE-UP
  105. 800  GOSUB 30201:PRINT A(ZZ);:IF INSTR(A(ZZ),".") > 0 AND POS(0)-( LEN(A(ZZ)) - INSTR(A(ZZ),".")+1 ) = 20 THEN XF(ZZ)=1:PF(LP) = 1: XN=XN+1:RETURN
  106. 805  IF INSTR(A(ZZ),".")=0 AND POS(0)=20 THEN XF(ZZ)=1:PF(LP)=1:XN=XN+1:RETURN
  107. 810  ET(1)=ET(1)+1
  108. 813  LOCATE 13,1:PRINT "Your line-up is wrong."
  109. 814  LOCATE 15,1:PRINT "Press any key to get an explanation.";
  110. 815  I=INKEY$:IF I="" THEN 815
  111. 816   GOSUB 30400:LOCATE 13,1:PRINT"All decimal points must be in a line.";
  112. 817   LOCATE 15,1:PRINT"Integers have an invisible decimal point";
  113. 818   LOCATE 17,1:PRINT "after the units digit.  Try again.";
  114. 820   MSG=1:GOTO 640
  115. 900   GOSUB 30201:PRINT B;:P23=XA(ZZ):GOSUB 30200:PRINT A(ZZ);:LOCATE NN+1,20-ND-3:PRINT "+";:RETURN
  116. 999  '***** BEGIN A PROBLEM
  117. 1000   CLS:XN=0:P23=PN:GOSUB 30200: PRINT I;:LR=POS(0):LH=LR:LV=CSRLIN: FOR X=1 TO 6:PF(X)=1:XF(X)=1:NEXT: FOR X=1 TO NN:PF(X)=0:XF(X)=0:NEXT:LOCATE 18,30:PRINT"Problem #";RIGHT$(STR$(PC),1);
  118. 1010  LOCATE NN+1,20-ND-3:PRINT "+";:X=POS(0):LOCATE NN+2,X-2:PRINT STRING$(2*ND+6,"-"):LOCATE NN+3,20:PRINT ".":LOCATE NN+5,20:COLOR CJ,7:PRINT CHR$(24):COLOR 7,CJ:LOCATE 19,1:PRINT STRING$(39,220);
  119. 1012  LOCATE 20,1:PRINT"                                 ";
  120. 1013  LOCATE 21,1:PRINT"S = Stop for directory           ";CHR$(24);
  121. 1014  LOCATE 22,1:PRINT"A = Advance to next number     ";CHR$(27);"   ";CHR$(26);
  122. 1015  LOCATE 23,1:PRINT"C = Check number line-up         ";CHR$(25);
  123. 1030   REM FOR ZZ= 1 TO NN: LP=0: P=PN: PH=LH:PV=LV
  124. 1035   ZZ=1: LP=0: P=PN: PH=LH:PV=LV
  125. 1040   REM
  126. 1041  GOSUB 600
  127. 1042   IF XN < NN THEN GOSUB 2000 ELSE GOTO 1056
  128. 1045   IF L1 = 65 THEN 1041
  129. 1050   GOSUB 30400:IF ET(1)> NN THEN X=4 ELSE X=INT((RND*8)+1)
  130. 1052  LOCATE 15,1:PRINT FL(X);", "GN".";
  131. 1054  LOCATE 17,1:PRINT "Now try another number.";
  132. 1055  GOTO 1041
  133. 1056  GOSUB 30400:IF ET(1)> NN THEN X=4 ELSE X=INT((RND*8)+1)
  134. 1057  LOCATE 15,1:PRINT "Congratulations, "GN".";:FOR X=1 TO 1200:NEXT:GOTO 8999
  135. 1059  '***** DONE WITH THE LINE-UP
  136. 1999  '*** FIND NEXT NUMBER FOR OPTION 'A'
  137. 2000   ZZ=ZZ+1: IF ZZ > NN THEN ZZ = 1
  138. 2010   IF XF(ZZ) = 1 THEN 2000
  139. 2020   P=XA(ZZ):LP=0:RETURN
  140. 8999  '*****  END A PROBLEM
  141. 9020  REM  IF Z=0 THEN X=RND(4) ELSE IF Z=1 THEN X=RND(4)+4 ELSE X=RND(4)+8
  142. 9025  REM  PRINT:PRINT TAB((40-LEN(FM(X)))/2)FM(X):IF Z=0 THEN CZ=CZ+1
  143. 9026  IF Z=0 THEN CZ=CZ+1
  144. 9030  GOSUB 30400:EN$="Y":LOCATE 13,1:PRINT"The lining-up stage is completed.";:LOCATE 15,1:PRINT "Press any key to continue.";:GOSUB 30100
  145. 9040  A$=INKEY$:IF A$="" THEN 9040
  146. 9050  IF PC=NP THEN 48000 ELSE PC=PC+1:EN$="":GOTO 206
  147. 9950   GOSUB 30100:LOCATE 23,7,0:PRINT "Press ";:COLOR CJ,7:PRINT"space bar";:COLOR 7,CJ:PRINT" to continue.";
  148. 9952   A$ = INKEY$: IF A$ <> " " THEN 9952 ELSE RETURN
  149. 9960   FOR X=10 TO 17:PRINT STRING$(39,32);:NEXT:RETURN
  150. 9961   FOR X=10 TO 21:LOCATE X,1:PRINT STRING$(40,32);:NEXT:LOCATE 23,7:PRINT STRING$(28,32);:RETURN
  151. 10000   CLS:LOCATE 1,10:PRINT"LINE-UP INSTRUCTIONS";
  152. 10005   LOCATE 3,12:PRINT "4.32 + 162 + .84";
  153. 10010   LOCATE 6,15:PRINT "+";
  154. 10015   LOCATE 7,15:PRINT STRING$(9,223);
  155. 10020   LOCATE 8,20:PRINT ".";
  156. 10025   LOCATE 9,20:PRINT CHR$(24);
  157. 10030   LOCATE 12,1:PRINT "I will give you problems like the one";
  158. 10035   LOCATE 14,1:PRINT "above. I will now show you how to";
  159. 10040   LOCATE 16,1:PRINT "line up the numbers so you can add them.";:GOSUB 9950
  160. 10045   CLS:LOCATE 4,17:PRINT "162";:LOCATE 5,20:PRINT".84";:LOCATE 6,15:PRINT"+   4.32";:LOCATE 7,15:PRINT STRING$(9,223);:LOCATE 8,20:PRINT".";
  161. 10050   LOCATE 11,1:PRINT"After you line them up, they will look";
  162. 10055   LOCATE 13,1:PRINT"like the problem above.  Notice that all";
  163. 10060   LOCATE 15,1:PRINT"the decimal points are in a line and all";
  164. 10065   LOCATE 17,1:PRINT"the numbers have moved off the starting";
  165. 10070   LOCATE 19,1:PRINT"row.";:GOSUB 9950
  166. 10072   CLS
  167. 10075   COLOR CJ,7:LOCATE 3,12:PRINT"4.32";:COLOR 7,CJ:LOCATE 3,17:PRINT"+ 162 + .84";
  168. 10080   LOCATE 6,15:PRINT "+";
  169. 10085   LOCATE 7,15:PRINT STRING$(9,223);
  170. 10090   LOCATE 8,20:PRINT ".";
  171. 10095   LOCATE 9,20:PRINT CHR$(24);
  172. 10100   LOCATE 13,1:PRINT"You can move the numbers into place one";
  173. 10105   LOCATE 15,1:PRINT"at a time.  The number being moved will";
  174. 10110   LOCATE 17,1:PRINT"be ";:COLOR CJ,7:LOCATE 17,4:PRINT"highlighted";:COLOR 7,CJ:PRINT".";:GOSUB 9950
  175. 10115   GOSUB 9961:LOCATE 12,1:PRINT"To move one space down, press ";:COLOR CJ,7:PRINT CHR$(25);:COLOR 7,CJ:PRINT".     ";:LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT CHR$(25);:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100
  176. 10120   A$=INKEY$:IF A$ <> "2" AND RIGHT$(A$,1)<>"P" THEN 10120
  177. 10125   LOCATE 3,12:PRINT "    ";:LOCATE 4,12:COLOR CJ,7:PRINT"4.32";:COLOR 7,CJ
  178. 10130   LOCATE 14,1:PRINT"To move one space right, press ";:COLOR CJ,7:PRINT CHR$(26);:COLOR 7,CJ:PRINT".     ";:LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT CHR$(26);:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100
  179. 10135   A$=INKEY$:IF A$ <> "6" AND RIGHT$(A$,1)<>"M" THEN 10135
  180. 10140   LOCATE 4,12:PRINT "    ";:COLOR CJ,7:LOCATE 4,13:PRINT"4.32";:COLOR 7,CJ
  181. 10145   LOCATE 16,1:PRINT"To move one space left, press ";:COLOR CJ,7:PRINT CHR$(27);:COLOR 7,CJ:PRINT".     ";:LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT CHR$(27);:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100
  182. 10150   A$=INKEY$:IF A$ <> "4" AND RIGHT$(A$,1)<>"K" THEN 10150
  183. 10155   LOCATE 4,13:PRINT"    ";:COLOR CJ,7:LOCATE 4,12:PRINT"4.32";:COLOR 7,CJ
  184. 10160   LOCATE 18,1:PRINT"To move one space up, press ";:COLOR CJ,7:PRINT CHR$(24);:COLOR 7,CJ:PRINT".     ";:LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT CHR$(24);:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100
  185. 10165   A$=INKEY$:IF A$ <> "8" AND RIGHT$(A$,1)<>"H" THEN 10165
  186. 10170   LOCATE 4,12:PRINT "     ";:COLOR CJ,7:LOCATE 3,12:PRINT"4.32";:COLOR 7,CJ:GOSUB 9961
  187. 10175   LOCATE 12,1:PRINT"Please take note that when a number";
  188. 10180   LOCATE 14,1:PRINT"reaches the edge of its working space,";
  189. 10185   LOCATE 16,1:PRINT"it will not move any further in that";
  190. 10190   LOCATE 18,1:PRINT"direction.";:GOSUB 9950
  191. 10195   GOSUB 9961:LOCATE 3,12:PRINT"    ";:LOCATE 4,19:COLOR CJ,7:PRINT"4.32";:COLOR 7,CJ
  192. 10200   LOCATE 11,1:PRINT"When you think you have correctly";
  193. 10205   LOCATE 13,1:PRINT"lined up the numbers, press ";:COLOR CJ,7:PRINT"C";:COLOR 7,CJ:PRINT". The";
  194. 10210   LOCATE 15,1:PRINT"computer will tell you if your line-up";
  195. 10215   LOCATE 17,1:PRINT"is wrong.  If it is correct, it will";
  196. 10220   LOCATE 19,1:PRINT"leave the number there and advance";
  197. 10225   LOCATE 21,1:PRINT"you to the next one.";
  198. 10230   LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT"C";:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100
  199. 10235   A$=INKEY$:IF A$ <> "C" THEN 10235
  200. 10240   LOCATE 3,17:PRINT" ";:LOCATE 3,19:COLOR CJ,7:PRINT"162";:COLOR 7,CJ:LOCATE 4,19:PRINT"4.32";:GOSUB 9961
  201. 10245   LOCATE 11,1:PRINT"If you are having trouble lining up a";
  202. 10250   LOCATE 13,1:PRINT"number, press ";:COLOR CJ,7:PRINT"A";:COLOR 7,CJ:PRINT".  That number will";
  203. 10255   LOCATE 15,1:PRINT"return to the top row and you will move";
  204. 10260   LOCATE 17,1:PRINT"to the next number.  When a number is in";
  205. 10265   LOCATE 19,1:PRINT"the starting row, it can only move down.";
  206. 10270   LOCATE 23,7:PRINT"Press ";:COLOR CJ,7:PRINT"A";:COLOR 7,CJ:PRINT" to continue.";:GOSUB 30100
  207. 10275   A$=INKEY$:IF A$ <> "A" THEN 10275
  208. 10280   LOCATE 3,19:PRINT"162";:COLOR CJ,7:LOCATE 3,25:PRINT".84";:COLOR 7,CJ:GOSUB 9961
  209. 10285   LOCATE 13,1:PRINT"You can stop the set of problems by";
  210. 10290   LOCATE 15,1:PRINT"pressing ";:COLOR CJ,7:PRINT"S";:COLOR 7,CJ:PRINT".  This option will always";:LOCATE 17,1:PRINT"appear at the bottom of the screen.";:GOSUB 9950
  211. 10295   CLS:LOCATE 12,1:PRINT"Press any key to return to the line-up";
  212. 10300   LOCATE 14,1:PRINT"menu.";
  213. 10305   A$=INKEY$: IF A$="" THEN 10305
  214. 10310   GOTO 50000
  215. 30000   STOP
  216. 30100  DEF SEG=0: POKE 1050,PEEK(1052): DEF SEG=64: POKE 23,96: DEF SEG: RETURN
  217. 30190   YR=FNROW(Y): YC=FNCOL(Y): RETURN
  218. 30191   PR=FNROW(P): PK=FNCOL(P): RETURN
  219. 30192   XR=FNROW(X): XC=FNCOL(X): RETURN
  220. 30193   ZR=FNROW(Z): ZC=FNCOL(Z): RETURN
  221. 30194   R1=FNROW(P23): C1=FNCOL(P23): RETURN
  222. 30195   PLR=FNROW(PL): PLC=FNCOL(PL):RETURN
  223. 30200   R1=FNROW(P23): C1=FNCOL(P23): LOCATE R1,C1: RETURN
  224. 30201   R1=FNROW(P): C1=FNCOL(P): LOCATE R1,C1: RETURN
  225. 30202   P23=NN*64+(20-ND-4):R1=FNROW(P23): C1=FNCOL(P23): LOCATE R1,C1: RETURN
  226. 30300   DEF SEG: SCREEN 0: CJ=0:COLOR 7,CJ,CJ: CLS: WIDTH 80: RETURN
  227. 30400   IF CJ=1 THEN LOCATE 13,1,0:FOR X=1 TO 5:PRINT STRING$(40,32);:NEXT:LOCATE 18,1:PRINT STRING$(29,32);:RETURN
  228. 30401   LOCATE 13,1,0:FOR X=1 TO 5:PRINT STRING$(40,32);:NEXT:LOCATE 17,1:PRINT STRING$(39,32);:RETURN
  229. 47999  '*****  QUIT ROUTINE
  230. 48000  IF I="*" OR L1=42 THEN GOTO 50000
  231. 48010  CLS:PRINT"You have now completed a set of":PRINT:PRINT"practice line-ups.  Do you want any":PRINT:PRINT"more practice (y or n)?";
  232. 48100  A$=INKEY$:IF A$="" THEN 48100
  233. 48105  IF A$= "n" OR A$="N" THEN GOTO 50000
  234. 48107  IF A$= "y" OR A$="Y" THEN GOTO 100
  235. 48140  PL=PL+64: RETURN
  236. 48990  '*****  INPUT NAME
  237. 49999   REM  *****  INTRO
  238. 50000   CLS: LOCATE 3,15:PRINT "Line-up Menu"
  239. 50002   LOCATE 6,13:PRINT "You may either:";
  240. 50005   LOCATE 10,5:PRINT "1) See the Line-Up Instructions,":LOCATE 12,5:PRINT"2) Practice Line-Up Problems, or";:LOCATE 14,5:PRINT "3) Return to the Main Directory.";
  241. 50010   LOCATE 17,1,0:PRINT "Your selection, "+GN+" ?";:GOSUB 30100
  242. 50013   A$=INKEY$:IF A$ = "" THEN 50013
  243. 50014   IF VAL(A$) < 1 OR VAL(A$) > 3 THEN A$="":GOTO 50010
  244. 50015   IF A$ = "1" THEN 10000
  245. 50017   IF A$ = "2" THEN 50020
  246. 50019   IF A$ = "3" THEN CHAIN "ADD.BAS"
  247. 50020   LOCATE ,,0
  248. 50032   X= VAL(MID$(TIME$,7,2)): RANDOMIZE X
  249. 50040   FM(1)="Very impressive":FM(2)="I see you've been doing your homework!":FM(3)="Too bad your teacher can't see this!":FM(4)="The math department is proud of you!":FM(5)="Well, we can't all be perfect."
  250. 50050   FM(6)="You almost made it on that one.":FM(7)="That was a good try.":FM(8)="Keep trying.  You're doing well.":FM(9)="Keep trying.  You'll get it.":FM(10)="You'll do better on the next one."
  251. 50060   FM(11)="These problems are not so easy.":FM(12)="Try again.  Practice makes perfect."
  252. 50070   FE(1)="Lineup":FE(2)="Addition":FE(3)="Carry"
  253. 50075   FL(1)="That is correct":FL(2)="Okay":FL(3)="You've got it":FL(4)="That's it":FL(5)="Nice work":FL(6)="Well done":FL(7)="Good job":FL(8)="Excellent"
  254. 50080  F1="Press <ENTER> to continue.":DEF FNF1="Sorry, "+GN+". "+I+" is incorrect.":IQ="Press <*> to quit."
  255. 50082   DEF FNROW(X23) = INT((X23/64+1))
  256. 50084   DEF FNCOL(X23) = INT((X23-(INT(X23/64)*64))+1)
  257. 50100   GOTO 100
  258. 54999  END
  259. 55000  REM CHECK ARROW KEYS HIT
  260. 55002  IF RIGHT$(S$,1)="P" THEN L1=50: REM 2
  261. 55004  IF RIGHT$(S$,1)="K" THEN L1=52: REM 4
  262. 55006  IF RIGHT$(S$,1)="M" THEN L1=54: REM 6
  263. 55008  IF RIGHT$(S$,1)="H" THEN L1=56: REM 8
  264. 55010  RETURN
  265.