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);
1013 LOCATE 21,1:PRINT"S = Stop program with evaluation ";CHR$(24);
1014 LOCATE 22,1:PRINT"A = Advance to next number ";CHR$(27);" ";CHR$(26);
1015 LOCATE 23,1:PRINT"C = Check number line-up ";CHR$(25);
1016 REM LOCATE 22,1:PRINT"1016 OKAY":INPUT A$:IF A$="Y" THEN 1030
1017 REM GOTO 300
1030 ZZ=1: LP=0: P=PN: PH=LH:PV=LV
1040 REM
1041 GOSUB 600
1042 IF XN < NN THEN GOSUB 4000 ELSE GOTO 1056
1045 IF L1 = 65 THEN 1041
1050 GOSUB 30400:IF ET(1)> NN THEN X=4 ELSE X=INT((RND*8)+1)
1052 LOCATE 15,1:PRINT FL(X);", "GN".";
1054 LOCATE 17,1:PRINT "Now try another number.";
1055 GOTO 1041
1056 GOSUB 30400:IF ET(1)> NN THEN X=4 ELSE X=INT((RND*8)+1)
1057 LOCATE 15,1:PRINT FL(X);", ";GN;".";:FOR X=1 TO 1200:NEXT
1059 '***** DONE WITH THE LINE-UP
1060 GOSUB 30400:LOCATE 13,1:PRINT "The line-up stage is completed. It is":PRINT:PRINT "now time to add these numbers.":PRINT:PRINT "Press any key to continue.";:GOSUB 30100
2030 IF SCREEN(XR,XC) <> 32 THEN EL=EL+VAL(CHR$(SCREEN(XR,XC))):LL=1
2035 NEXT:IF LL=0 THEN 3000
2040 IF EL > 9 THEN I=RIGHT$(STR$(EL),LEN(STR$(EL))-1):EC=VAL(LEFT$(I,1)):ED=VAL(RIGHT$(I,1)):GOTO 2100
2050 ED=EL
2080 '***** ENTER UNITS DIGIT
2100 GOSUB 30400:IF XDSP=0 THEN LOCATE 15,1:PRINT IDSP;
2101 LOCATE 21,1:PRINT"S = Stop program with evaluation";
2105 GOSUB 30191:LOCATE PR,PK:PRINT CHR$(219);:GOSUB 400:IF VAL(I)=ED THEN 2150
2110 IF WR=2 THEN 2105 ELSE ET(2)=ET(2)+1:IF WR=0 THEN WR=1:GOSUB 30400:LOCATE 17,1:PRINT "Wrong, try again.":GOTO 2100
2120 WR=2:GOSUB 30400:Z=Y
2121 REM GOSUB 30193:I=CHR$(SCREEN(ZR,ZC)):IF I =" " THEN Z=Z+64:GOTO 2121
2122 REM PRINT I;: Z=Z+64: GOSUB 30193:P23=P-128:GOSUB 30194:FOR X= ZR TO R1 STEP 1:I=CHR$(SCREEN(X,ZC)):IF I >" " THEN PRINT " + "I;
2125 REM IF X=R1 THEN PRINT " =" EL
2130 REM NEXT:PRINT:PRINT "the units digit,"ED;:LOCATE ,POS(XX)-1:PRINT ", is the correct":PRINT"answer. When you understand this,":PRINT"type it in.":WR=2:GOTO 2105
2131 LOCATE 13,1:PRINT"The numbers in the column add up to"EL;".";:LOCATE 15,1:PRINT"Enter the units digit,"ED". When you";:LOCATE 17,1:PRINT"understand why, type it in.":WR=2:GOTO 2105
2149 '*** CHECK FOR DECIMAL POINT & LEFTMOST DIGIT
2150 P=P-1:GOSUB 30191:IF SCREEN(PR,PK)=46 THEN P=P-1:Y=Y-1
2160 LOCATE ,,0:FOR X=Y-1 TO P-128 STEP 64:GOSUB 30192:IF SCREEN(XR,XC) = 32 THEN NEXT:IF EC <> 0 THEN Y=P+1 ELSE 3000
2199 '***** DO CARRY
2200 WR=0
2210 GOSUB 30400
2220 P23=Y-1:GOSUB 30194:LOCATE R1,C1,0:PRINT CHR$(219);:GOSUB 400:IF VAL(I)=EC THEN IF Y <> P+1 THEN GOSUB 30190:LOCATE YR,YC,0:PRINT " ";:GOTO 2020:ELSE 2020
2230 IF WR=2 THEN 2220 ELSE ET(3)=ET(3)+1:IF WR=0 THEN WR=1:GOSUB 30400:LOCATE 17,1:PRINT "Wrong, try again, ";GN;".":GOTO 2220
2240 WR=2:GOSUB 30400:LOCATE 13,1:PRINT"The previous column added up to"EL;".";
2250 LOCATE 15,1:PRINT "The tens digit,";EC;", is the carry. When";:LOCATE 17,1:PRINT "you understand why, enter it.";:GOTO 2220
3010 LOCATE 21,1:PRINT"Press ";:COLOR CJ,7:PRINT"E";:COLOR 7,CJ:PRINT" to continue with evaluation.";
3020 I=INKEY$:IF I <> "E" THEN 3020
3030 FOR X=19 TO 21:LOCATE X,1:PRINT STRING$(40,32);:NEXT:GOTO 9000
3999 '*** find the next number for option 'A' ***
4000 ZZ=ZZ+1: IF ZZ > NN THEN ZZ = 1
4005 IF XF(ZZ) = 1 THEN 4000
4010 P=XA(ZZ):LP=0:RETURN
8999 '***** END A PROBLEM
9000 Z=0
9010 FOR X=1 TO 3:LOCATE X*2+11,1:PRINT FE(X);USING"###";ET(X):Z=Z+ET(X):EF(X)=EF(X)+ET(X):NEXT:LOCATE 19,1:PRINT "Total number of errors.......";USING"###";Z
9020 REM IF Z=0 THEN X=RND(4) ELSE IF Z=1 THEN X=RND(4)+4 ELSE X=RND(4)+8
9025 REM PRINT:PRINT TAB((40-LEN(FM(X)))/2)FM(X)
9026 IF Z=0 THEN CZ=CZ+1
9030 LOCATE 22,7:PRINT"Press ";:COLOR CJ,7:PRINT"space bar";:COLOR 7,CJ:PRINT" to continue.";
9035 I=INKEY$:IF I <> " " THEN 9035
9090 EN$="Y":IF PC=NP THEN 48000 ELSE PC=PC+1:EN$="":GOTO 300
50013 LOCATE 12,6:PRINT "By David & Joseph Stampleman";
50020 LOCATE 14,10:PRINT "Designed by Don Ross";:LOCATE 16,13:PRINT "Copyright 1985";
50025 FOR X = 1 TO 5000:NEXT
50032 X= VAL(MID$(TIME$,7,2)): RANDOMIZE X
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."
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."
50060 FM(11)="These problems are not so easy.":FM(12)="Try again. Practice makes perfect."
50061 FE(1)="Number of lining-up errors..."
50062 FE(2)="Number of adding errors......"
50063 FE(3)="Number of carrying errors...."
50070 REM FE(1)="Lineup":FE(2)="Addition":FE(3)="Carry"
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"
50080 F1="Press <ENTER> to continue.":DEF FNF1="Sorry, "+GN+". "+I+" is incorrect.":IQ="Press <*> to quit."