10  REM  ALGIE:BASIC ALGEBRA DRILL, HP 36851A, 6/74
20  PRINT "THIS IS A COMPUTER-ASSISTED DRILL IN BASIC ALGEBRA."
30  PRINT "TO STOP PRACTICE BEFORE A SESSION IS COMPLETE, HOLD THE"
40  PRINT "CTRL KEY DOWN, HIT THE LETTER C, AND RETURN."
50  PRINT "A SESSION LASTS UNTIL YOU GET 20 CORRECT ANSWERS."
60  PRINT "ALL ANSWERS ARE POSITIVE OR NEGATIVE INTEGERS."
70  DIM Z$[72],T$[5],A$[1],B$[10],S$[1],U$[1],V$[1]
80  B$="ABCJKUWXYZ"
90  D=X=Y=Z=T=T1=C7=C8=0
100  M9=0
110  C=20
120  PRINT LIN(2),"WHAT'S YOUR NAME";
130  INPUT Z$
140  PRINT LIN(1),"TYPE 1 FOR PROBLEMS OF THE FORM: 3X=15"
150  PRINT "     2 FOR PROBLEMS OF THE FORM: 3X+5=20"
160  PRINT "     3 FOR PROBLEMS OF THE FORM: 2(X+4)=12"
170  PRINT "     4 FOR PROBLEMS OF THE FORM: 2(X-3)+4(X-7)=-10"
180  PRINT "WHICH DO YOU WANT";
190  INPUT O
200  IF O<1 OR O>4 THEN 140
210  K=9
220  Z9=250
230  PRINT LIN(1),"DO YOU WANT TO TIME YOURSELF (1=YES,0=NO)";
240  INPUT Q9
250  IF Q9=0 THEN 280
260  PRINT "HOW MANY SECONDS PER ANSWER";
270  INPUT Z9
280  GOTO O OF 300,420,540,660
290  REM ***3X=15 TYPE PROBLEMS
300  GOSUB 800
310  PRINT  USING 320;A1,A$,A1*A2,A$
320  IMAGE #,D,A,"=",DDD,5X,A,"="
330  GOSUB 1840
340  IF Z8=-256 THEN 300
350  IF A=A2 THEN 1250
360  GOSUB 1060
370  GOSUB 1840
380  IF Z8=-256 THEN 300
390  IF A=A2 THEN 1280
400  GOTO 1080
410  REM ***3X+5=20 TYPE PROBLEMS
420  GOSUB 800
430  PRINT  USING 440;A1,A$,S$,ABS(A2),A1*A3+A2,A$
440  IMAGE #,D,A,A,D,"=",DDD,5X,A,"="
450  GOSUB 1840
460  IF Z8=-256 THEN 420
470  IF A3=A THEN 1250
480  GOSUB 1060
490  GOSUB 1840
500  IF Z8=-256 THEN 420
510  IF A3=A THEN 1280
520  GOTO 1080
530  REM ***2(X+4)=12 TYPE PROBLEMS
540  GOSUB 800
550  PRINT  USING 560;A1,A$,S$,ABS(A2),A1*(A2+A3),A$
560  IMAGE #,D,"(",A,A,D,")=",DDDD,5X,A,"="
570  GOSUB 1840
580  IF Z8=-256 THEN 540
590  IF A3=A THEN 1250
600  GOSUB 1060
610  GOSUB 1840
620  IF Z8=-256 THEN 540
630  IF A3=A THEN 1280
640  GOTO 1080
650  REM ***2(X-3)+4(X-7)=-10 TYPE PROBLEMS
660  GOSUB 800
670  PRINT  USING 690;A1,A$,S$,ABS(A2),U$,ABS(A4),A$,V$
680  PRINT  USING 700;ABS(A3),(A1+A4)*A5+A1*A2+A4*A3,A$
690  IMAGE #,D,"(",A,A,D,")",A,D,"(",A,A
700  IMAGE #,D,")=",DDDD,5X,A,"="
710  GOSUB 1840
720  IF Z8=-256 THEN 660
730  IF A=A5 THEN 1250
740  GOSUB 1060
750  GOSUB 1840
760  IF Z8=-256 THEN 660
770  IF A=A5 THEN 1280
780  GOTO 1080
790  REM ***PROBLEM GENERATOR
800  A1=INT(K*RND(0)+1)
810  A2=INT(K*RND(0)+1)
820  A3=INT(K*RND(0)+1)
830  A4=INT(K*RND(0)+1)
840  A5=INT(K*RND(0)+1)
850  I9=INT(10*RND(0)+1)
860  A$=B$[I9,I9]
870  S$="+"
880  V$="+"
890  U$="+"
900  IF RND(0)>.5 THEN 930
910  A2=-A2
920  S$="-"
930  IF RND(0)>.5 THEN 960
940  A3=-A3
950  V$="-"
960  IF A4=A1 THEN 1000
970  IF RND(0)>.5 THEN 1000
980  A4=-A4
990  U$="-"
1000  IF RND(0)>.5 THEN 1020
1010  A5=-A5
1020  PRINT 
1030  GOSUB 1120
1040  D=D+1
1050  RETURN 
1060  PRINT LIN(1),"YOUR ANSWER IS WRONG. TRY IT AGAIN. ";
1070  RETURN 
1080  PRINT LIN(1),"YOUR ANSWER IS STILL WRONG. LET'S TRY ANOTHER PROBLEM.";
1090  Z=Z+1
1100  GOSUB 1940
1110  GOTO O OF 300,420,540,660
1120  IF (X+Y)=C/2 OR (X+Y-.5)=C/2 THEN 1160
1130  IF (X+Y)=(C-1) AND C7=0 THEN 1210
1140  IF (X+Y)=C THEN 1320
1150  RETURN 
1160  IF C8=1 THEN 1150
1170  PRINT LIN(1),"YOU'RE HALF WAY THROUGH NOW."
1180  C8=1
1190  PRINT 
1200  GOTO 1150
1210  PRINT LIN(1),"YOU ONLY NEED ONE MORE CORRECT ANSWER."
1220  C7=1
1230  PRINT 
1240  GOTO 1150
1250  X=X+1
1260  M9=0
1270  GOTO O OF 300,420,540,660
1280  Y=Y+1
1290  M9=0
1300  PRINT LIN(1),"THAT'S RIGHT.";
1310  GOTO O OF 300,420,540,660
1320  PRINT 
1330  PRINT 
1340  PRINT LIN(2),Z$
1350  IF D=C AND Y=0 THEN 1370
1360  GOTO 1390
1370  PRINT "YOU GOT ALL YOUR PROBLEMS RIGHT ON THE FIRST TRY. CONGRATULATIONS."
1380  GOTO 1700
1390  PRINT  USING 1400;D
1400  IMAGE "YOU TRIED ",DD," PROBLEMS."
1410  IF X=0 THEN 1460
1420  N9=X
1430  GOSUB 2010
1440  PRINT  USING "#,DD";X
1450  PRINT T$;" CORRECT ON THE FIRST TRY."
1460  IF Y=0 THEN 1510
1470  N9=Y
1480  GOSUB 2010
1490  PRINT  USING "#,DD";Y
1500  PRINT T$;" CORRECT ON THE SECOND TRY."
1510  IF Z=0 THEN 1560
1520  N9=Z
1530  GOSUB 2010
1540  PRINT  USING "#,DD";Z
1550  PRINT T$;" NOT ANSWERED CORRECTLY ON EITHER TRY."
1560  IF Q9=0 THEN 1700
1570  PRINT  USING 1580;Z9
1580  IMAGE "YOU GAVE YOURSELF ",DD," SECONDS TO ANSWER EACH QUESTION."
1590  IF T1#0 THEN 1620
1600  PRINT "YOU DIDN'T RUN OUT OF TIME ONCE."
1610  GOTO 1700
1620  IF T1>1 THEN 1650
1630  PRINT "YOU ONLY RAN OUT OF TIME ONCE."
1640  GOTO 1700
1650  IF T1>2 THEN 1680
1660  PRINT "YOU ONLY RAN OUT OF TIME TWICE."
1670  GOTO 1700
1680  PRINT  USING 1690;T1
1690  IMAGE "YOU RAN OUT OF TIME ",DD," TIMES."
1700  Q8=INT(T/60)
1710  Q7=T-Q8*60
1720  IF Q8=0 THEN 1800
1730  IF Q8>1 THEN 1770
1740  PRINT  USING 1750;Q7
1750  IMAGE "YOUR TOTAL TIME WAS 1 MINUTE AND ",DD," SECONDS."
1760  GOTO 2050
1770  PRINT  USING 1780;Q8,Q7
1780  IMAGE "YOUR TOTAL TIME WAS ",DD," MINUTES AND ",DD," SECONDS."
1790  GOTO 2050
1800  PRINT  USING 1810;Q7
1810  IMAGE "YOUR TOTAL TIME WAS ",DD," SECONDS."
1820  GOTO 2050
1830  REM ***INPUT ROUTINE
1840  ENTER Z9,Z8,A
1850  IF Z8=-256 THEN 1890
1860  T=T+Z8
1870  M9=0
1880  RETURN 
1890  PRINT LIN(1),"SORRY, TIME'S UP. LET'S TRY ANOTHER PROBLEM."
1900  T=T+Z9
1910  T1=T1+1
1920  GOSUB 1940
1930  RETURN 
1940  M9=M9+1
1950  IF Q9=0 THEN 2000
1960  IF M9<5 THEN 2000
1970  PRINT LIN(1),"YOU'RE TRYING TO GO TOO FAST."
1980  PRINT "START OVER AND GIVE YOURSELF MORE TIME TO ANSWER."
1990  STOP 
2000  RETURN 
2010  T$=" WERE"
2020  IF N9>1 THEN 2040
2030  T$=" WAS"
2040  RETURN 
2050  PRINT 
2060  PRINT 
2070  END 
