image of READY prompt

Wang2200.org

Listing of file='ARITH' on disk='vmedia/gamesall.wvd.zip'

# Sector 94, program filename = 'ARITH'
0010 REM 9/16/73
0020 REM ARITHMETIC EXERCISE FOR THE 2200-B   T.OLSEN
0030 DIM B$13,C$1
0040 T1,T2,T3,T4,W1,W2,W3,W4=0
0050 T9=3
   : REM NUMBER OF TRIES BEFORE AUTOMATIC ANSWER
0060 GOTO 2000
0070 DEFFN'15
   : PRINT HEX(03);"ARITHMETIC EXERCISE"
0080 PRINT "AN ARITHMETIC GAME ESPECIALLY FOR ";A$
0090 PRINT "KEY 0  RESULT SUMMARY"
0100 PRINT "KEY 1  ADDITION"
0110 PRINT "KEY 2  SUBTRACTION"
0120 PRINT "KEY 3  MULTIPLICATION"
0130 PRINT "KEY 4  DIVISION"
0140 PRINT "KEY 5  NEW STUDENT"
0150 PRINT "KEY 6  SCRATCH PAD LINE (MULTIPLY)"
0160 PRINT "KEY 15 KEY PICTURE"
0170 STOP "  FUNCTION KEYS CONTROL STUDENT REQUESTS"
0180 %##########
0190 %   + #####
0200 %   - #####
0210 %   X #####
0220 PRINT "         ";
   : GOTO 240
0230 PRINT "   -------";HEX(0A08);
0240 R=0
   : I=10
   : B$=" "
0250 KEYIN C$,260,300
   : GOTO 250
0260 IF C$=HEX(0D)THEN 360
0270 IF C$<>HEX(08)THEN 310
0280 IF I>9THEN 240
0290 PRINT HEX(202008);
   : STR(B$,I,1)="0"
   : I=I+1
   : GOTO 340
0300 R=1
0310 IF C$<HEX(30)THEN 350
   : IF C$>HEX(39)THEN 350
0320 IF I>1THEN 330
   : GOTO 250
0330 I=I-1
   : PRINT C$;HEX(0808);
   : STR(B$,I,1)=C$
0340 IF I>0THEN 250
0350 PRINT HEX(2A08);
   : GOTO 250
0360 IF I>=13THEN 250
   : CONVERT STR(B$,1,NUM(B$))TO B
   : PRINT
   : RETURN
0370 N,O=1
0380 IF M<1THEN 480
   : IF M>5THEN 480
   : M=INT(M)
0390 IF L<1THEN 480
   : IF L>5THEN 480
   : L=INT(L)
0400 FOR I=1 TO M
   : R=RND(1)
   : N=N*10
   : NEXT I
0410 FOR J=1 TO L
   : O=O*10
   : R=RND(1)
   : NEXT J
0420 X=RND(1)
0430 Y=RND(1)
0440 X=INT(X*N)
   : Y=INT(Y*O)
0450 PRINT HEX(03)
0460 T=0
0470 RETURN
0480 PRINT "OPERAND LIMITS ARE 1 TO 5 DIGITS"
   : GOTO 90
0490 DEFFN'1
   : PRINT HEX(03);"ADDITION EXERCISE"
0500 INPUT "NUMBER OF DIGITS",M
0510 L=M
0520 GOSUB 370
0530 PRINTUSING 180,X
   : PRINTUSING 190,Y
   : GOSUB 230
0540 T1=T1+1
   : IF B<>X+YTHEN 550
   : GOSUB 840
   : GOTO 520
0550 A1=0
   : W1=W1+1
   : GOSUB 1920
   : IF T<T9THEN 530
0560 REM ADD SOLUTION
   : GOSUB 1950
0570 PRINTUSING 180,X
   : GOSUB 1900
0580 PRINTUSING 190,Y
   : GOSUB 1900
0590 PRINTUSING 180,X+Y
0600 I=6
   : GOSUB 1980
   : GOTO 520
0610 DEFFN'0
   : PRINT HEX(03)
   : PRINTUSING 820
0620 IF T1=0THEN 630
   : S1=100*(1-W1/T1)
   : GOTO 640
0630 S1=0
0640 PRINTUSING 780,T1,W1,S1
0650 IF T2=0THEN 660
   : S2=100*(1-W2/T2)
   : GOTO 670
0660 S2=0
0670 PRINTUSING 790,T2,W2,S2
0680 IF T3=0THEN 690
   : S3=100*(1-W3/T3)
   : GOTO 700
0690 S3=0
0700 PRINTUSING 800,T3,W3,S3
0710 IF T4=0THEN 720
   : S4=100*(1-W4/T4)
   : GOTO 730
0720 S4=0
0730 PRINTUSING 810,T4,W4,S4
0740 T=T1+T2+T3+T4
   : W=W1+W2+W3+W4
   : IF T=0THEN 750
   : S=100*(1-W/T)
   : GOTO 760
0750 S=0
0760 PRINT
   : PRINTUSING 830,T,W,S
0770 RETURN
0780 %       ADD  #####     #####     ###%
0790 %       SUB  #####     #####     ###%
0800 %       MUL  #####     #####     ###%
0810 %       DIV  #####     #####     ###%
0820 %        PROBLEM       WRONG    SCORE
0830 %   TOTALS   #####     #####     ###%
0840 A1=A1+1
   : PRINTUSING 880,A$
   : PRINTUSING 890,A1
0850 SELECT P9
0860 IF A1<A2THEN 870
   : A2=A1
0870 PRINTUSING 900,A2
0880 %NICE WORK ###################################
0890 %YOU HAVE NOW WORKED CORRECT ###,### IN A ROW
0900 %THE RECORD IS ###,### CORRECT IN A ROW
0910 SELECT P
   : RETURN
0920 DEFFN'2
   : PRINT HEX(03);"SUBTRACTION EXERCISE"
0930 INPUT "NUMBER OF DIGITS MINUEND",M
0940 INPUT "NUMBER OF DIGITS SUBTRAHEND",L
0950 GOSUB 370
0960 IF X<YTHEN 970
   : GOTO 980
0970 T=X
   : X=Y
   : Y=T
0980 PRINTUSING 180,X
   : PRINTUSING 200,Y
   : GOSUB 230
0990 T2=T2+1
   : IF B<>X-YTHEN 1000
   : GOSUB 840
   : GOTO 950
1000 A1=0
   : W2=W2+1
   : GOSUB 1920
   : IF T<T9THEN 980
1010 REM SUBTRACT SOLUTION
   : GOSUB 1950
1020 PRINTUSING 180,X
   : GOSUB 1900
1030 PRINTUSING 200,Y
   : GOSUB 1900
1040 PRINTUSING 180,X-Y
   : I=6
   : GOSUB 1980
   : GOTO 950
1050 DEFFN'3
   : PRINT HEX(03);"MULTIPLICATION EXERCISE"
1060 INPUT "NUMBER OF DIGITS IN MULTIPLICAND",M
1070 INPUT "NUMBER OF DIGITS MULTIPLIER",L
1080 GOSUB 370
1090 PRINTUSING 180,X
   : PRINTUSING 210,Y
   : GOSUB 230
1100 IF R=0 THEN 1110
   : GOSUB 220
   : GOTO 1100
1110 T3=T3+1
   : IF B<>X*YTHEN 1120
   : GOSUB 840
   : GOTO 1080
1120 A1=0
   : W3=W3+1
   : GOSUB 1920
1130 IF T<T9 THEN 1090
1140 GOSUB 1950
   : REM MULTIPLY SOLUTION
1150 PRINT HEX(09);
   : PRINTUSING 180,X
   : GOSUB 1890
1160 PRINTUSING 210,Y
   : GOSUB 1900
1170 PRINT "-----------"
1180 GOSUB 1630
   : GOTO 1750
1190 DEFFN'4
   : PRINT HEX(03);"DIVISION EXERCISE"
1200 INPUT "NUMBER OF DIGITS FOR DIVISOR",L
   : M=L
1210 GOSUB 370
   : IF X=0 THEN 1210
   : IF Y=0 THEN 1210
1220 Z=X*Y
   : REM Z/X=Y
1230 PRINT Z;" / ";X;" ="
   : INPUT B
1240 T4=T4+1
   : IF B<>Y THEN 1250
   : GOSUB 840
   : GOTO 1210
1250 A1=0
   : W4=W4+1
   : GOSUB 1920
1260 IF T<T9THEN 1230
1270 REM DIVIDE SOLUTION
   : GOSUB 1950
1280 S9$="                "
1290 Z$=" "
   : CONVERT Z TO Z$,(##########)
   : Z1$=Z$
1300 Y$=" "
   : CONVERT Y TO Y$,(#####)
1310 S1,S2=0
   : S9=5+POS(Y$>"0")
1320 PRINTUSING 1570,Y
   : GOSUB 1900
   : PRINTUSING 1580
   : GOSUB 1900
   : PRINTUSING 1590,X,Z$
   : GOSUB 1900
1330 R=POS(Y$>"0")
1340 CONVERT STR(Y$,R,1)TO R1
1350 IF R1=0THEN 1540
1360 R2=R1*X
1370 R$=" "
   : CONVERT R2 TO R$,(######)
1380 S=0
1390 S=S+1
   : IF S<11THEN 1400
   : STOP "1381"
1400 CONVERT STR(Z1$,1,S)TO R3
1410 IF R3<R2 THEN 1390
1420 IF S2=1THEN 1430
   : S1=S1+S
   : S2=1
1430 R4=R3-R2
1440 Z1$=" "
   : CONVERT R4 TO Z1$,(######)
1450 PRINT STR(S9$,1,S9);R$
   : GOSUB 1900
1460 IF S1<10THEN 1480
1470 PRINT HEX(0D);
   : GOSUB 1990
   : GOTO 1210
1480 PRINT STR(S9$,1,S9);"-------"
   : GOSUB 1900
1490 STR(Z1$,7)=STR(Z$,S1+1,10-S1)
1500 PRINT STR(S9$,1,S9);STR(Z1$,1,7)
   : GOSUB 1900
1510 R=R+1
   : S9=S9+1
1520 S1=S1+1
1530 CONVERT Z1$ TO R5
   : GOTO 1340
1540  IF S1=10THEN 1470
   : PRINT HEX(0C08);
1550 PRINT STR(S9$,1,S9);STR(Z1$,1,8)
   : GOSUB 1900
1560 GOTO 1510
1570 %      ##########
1580 %     -----------
1590 %#####)##########
1600 %######
1610 %------
1620 STOP "1481"
1630 R=Y
   : R5,R4,R3,R2,R1=-1
1640 R5=R5+1
   : R=R-10000
   : IF R>=0THEN 1640
   : R=R+10000
1650 R4=R4+1
   : R=R-1000
   : IF R>=0THEN 1650
   : R=R+1000
1660 R3=R3+1
   : R=R-100
   : IF R>=0THEN 1660
   : R=R+100
1670 R2=R2+1
   : R=R-10
   : IF R>=0THEN 1670
   : R=R+10
1680 R1=R1+1
   : R=R-1
   : IF R>=0THEN 1680
   : R=R+1
1690 RETURN
1700 %     ######
1710 %    ######
1720 %   ######
1730 %  ######
1740 % ######
1750 I=5
   : IF L=1 THEN 1850
   : GOSUB 1900
   : PRINTUSING 1700,X*R1
   : GOSUB 1900
1760 I=8
1770 PRINTUSING 1710,X*R2
   : GOSUB 1900
   : IF L=2 THEN 1840
1780 I=9
1790 PRINTUSING 1720,X*R3
   : GOSUB 1900
   : IF L=3 THEN 1840
1800 I=10
1810 PRINTUSING 1730,X*R4
   : GOSUB 1900
   : IF L=4 THEN 1840
1820 I=11
1830 PRINTUSING 1740,X*R5
   : GOSUB 1900
   : IF L=5 THEN 1840
1840 PRINT "-----------"
1850 GOSUB 1890
1860 PRINTUSING 180,X*Y
1870 I=I+2
1880 GOSUB 1980
   : GOTO 1080
1890 PRINT HEX(09);
1900 PRINT HEX(090909090909090909090909090909090909090909090909090909)
1910 RETURN
1920 T=T+1
   : IF T>=T9THEN 1930
   : PRINT "STRIKE ";T;" TRY AGAIN"
   : RETURN
1930 PRINT "3 STRIKES AND YOU'RE OUT"
1940 RETURN
1950 PRINT HEX(01)
   : GOSUB 1900
1960 PRINT "THE CORRECT ANSWER IS"
   : GOSUB 1900
1970 RETURN
1980 FOR J=12 TO I STEP -1
   : PRINT HEX(0A);
   : NEXT J
1990 INPUT "CHECK THE ANSWER THEN TYPE (EXEC) FOR ANOTHER PROBLEM",I
   : RETURN
2000 DEFFN'5
   : INPUT "TYPE IN YOUR NAME",A$
   : A1=0
   : GOTO 70