diff --git a/samples/sample.aritm.txt b/samples/sample.aritm.txt index 189e263..d51eeca 100644 --- a/samples/sample.aritm.txt +++ b/samples/sample.aritm.txt @@ -10,11 +10,13 @@ 1100 REM 876543210, 8:TYPE, 7-5:OP1, 4-3:OP2, 2:RES'D, 1-0:#TODO. 1110 REM PROGRAM: 1112 GOTO 1115 -1113 MD=INT((X/Y-INT(X/Y))*Y+.5):RETURN -1114 DIV=INT(X/Y+.5):RETURN -1115 LET R=RND(-1) +1113 STOP +1114 STOP +1115 LET R=RND(-PEEK(78)-PEEK(79)*256) 1116 TEXT:PR#3:PRINT CHR$(17);CHR$(12); 1117 DIM A(590) +1118 DEF FN MD(Y)=INT((X/Y-INT(X/Y))*Y+.5) +1119 DEF FN DIV(Y)=INT(X/Y+.5) 1120 REM LBL C 1130 GOSUB 3410:REM CLS 1140 LET A=0 @@ -28,8 +30,8 @@ 1220 LET U=1 1230 REM DIM A(N) 1240 REM LBL ADD1 -1250 X=M:Y=10:GOSUB 1114:X=DIV:GOSUB 1113 -1255 IF 0=MD GOTO 1320:REM ADD2 +1250 X=M:Y=10:X=FN DIV(Y) +1255 IF 0=FN MD(Y) GOTO 1320:REM ADD2 1260 FOR I=0 TO 9 1270 FOR J=0 TO 9 1280 LET A(U)=100000000+I*100000+J*1000+1 @@ -37,8 +39,8 @@ 1300 NEXT J 1310 NEXT I 1320 REM LBL ADD2 -1330 X=M:Y=100:GOSUB 1114:X=DIV:Y=10:GOSUB 1113 -1335 IF 0=MD GOTO 1410:REM SUB1 +1330 X=M:X=FN DIV(100) +1335 IF 0=FN MD(10) GOTO 1410:REM SUB1 1340 FOR I=0 TO 9 1350 FOR J=0 TO 9 1360 LET T=10*(INT(8*RND(1))+1) @@ -47,8 +49,8 @@ 1390 NEXT J 1400 NEXT I 1410 REM LBL SUB1 -1420 X=M:Y=1000:GOSUB 1114:X=DIV:Y=10:GOSUB 1113 -1425 IF 0=MD GOTO 1490:REM SUB2 +1420 X=M:X=FN DIV(1000) +1425 IF 0=FN MD(10) GOTO 1490:REM SUB2 1430 FOR I=0 TO 9 1440 FOR J=I TO 9+I 1450 LET A(U)=300000000+J*100000+I*1000+1 @@ -56,8 +58,8 @@ 1470 NEXT J 1480 NEXT I 1490 REM LBL SUB2 -1500 X=M:Y=10000:GOSUB 1114:X=DIV:Y=10:GOSUB 1113 -1505 IF 0=MD GOTO 1580:REM MUL +1500 X=M:X=FN DIV(10000) +1505 IF 0=FN MD(10) GOTO 1580:REM MUL 1510 FOR I=0 TO 9 1520 FOR J=I TO 9+I 1530 LET T=10*(INT(9*RND(1))+1) @@ -66,8 +68,8 @@ 1560 NEXT J 1570 NEXT I 1580 REM LBL MUL -1590 X=M:Y=100000:GOSUB 1114:X=DIV:Y=10:GOSUB 1113 -1595 IF 0=MD GOTO 1660:REM DIV +1590 X=M:X=FN DIV(100000) +1595 IF 0=FN MD(10) GOTO 1660:REM DIV 1600 FOR I=0 TO 9 1610 FOR J=0 TO 9 1620 LET A(U)=500000000+I*100000+J*1000+1 @@ -75,8 +77,8 @@ 1640 NEXT J 1650 NEXT I 1660 REM LBL DIV -1670 X=M:Y=1000000:GOSUB 1114:X=DIV:Y=10:GOSUB 1113 -1675 IF 0=MD GOTO 1750:REM ENDIF +1670 X=M:X=FN DIV(1000000) +1675 IF 0=FN MD(10) GOTO 1750:REM ENDIF 1680 FOR I=0 TO 9 1690 FOR J=1 TO 9 1700 LET T=I*J+INT(J*RND(1)) @@ -101,15 +103,15 @@ 1890 PRINT MID$(STR$(L),1); 1895 PRINT " PROBLEMS LEFT. -1 ESC" 1900 LET TF=A(K) -1910 X=TF:Y=100000000:GOSUB 1114 -1915 LET C=DIV +1910 X=TF +1915 LET C=FN DIV(100000000) 1920 IF 6=C THEN PRINT "INTEGER PART OF "; -1930 X=TF:Y=100000:GOSUB 1114:X=DIV:Y=1000:GOSUB 1113 -1935 LET I=MD +1930 X=TF:X=FN DIV(100000) +1935 LET I=FN MD(1000) 1940 PRINT MID$(STR$(I),1); 1950 GOSUB 3280:REM SIGN -1960 X=TF:Y=1000:GOSUB 1114:X=DIV:Y=100:GOSUB 1113 -1965 LET J=MD +1960 X=TF:X=FN DIV(1000) +1965 LET J=FN MD(100) 1970 PRINT MID$(STR$(J),1); 1980 PRINT " = ";:INPUT "";A$:A=VAL(A$) 1985 PRINT @@ -121,8 +123,8 @@ 2040 REM LBL ENDIF 2050 IF ABS(R-A)>1E-6 GOTO 2140:REM WRONG 2060 PRINT "RIGHT! "; -2070 X=TF:Y=100:GOSUB 1113 -2075 IF 0>=MD GOTO 2100:REM ENDIF +2070 X=TF +2075 IF 0>=FN MD(100) GOTO 2100:REM ENDIF 2080 LET L=L-1 2090 LET A(K)=TF-1 2100 REM LBL ENDIF @@ -137,8 +139,8 @@ 2182 PRINT " IS "; 2184 PRINT STR$(R); 2186 PRINT "." -2190 X=TF:Y=100:GOSUB 1113 -2195 IF 99<=MD GOTO 2220:REM ENDIF +2190 X=TF +2195 IF 99<=FN MD(100) GOTO 2220:REM ENDIF 2200 LET L=L+1 2210 LET A(K)=TF+1 2220 REM LBL ENDIF @@ -152,8 +154,8 @@ 2290 LET N=1 2300 FOR K=1 TO U 2310 LET TF=A(K) -2320 X=TF:Y=100:GOSUB 1113 -2325 IF 0=MD GOTO 2350:REM ENDIF +2320 X=TF +2325 IF 0=FN MD(100) GOTO 2350:REM ENDIF 2330 LET A(N)=TF 2340 LET N=N+1 2350 REM ENDIF @@ -186,11 +188,11 @@ 2610 GOTO 2780:REM INPUT 2640 REM SUB 2650 LET A=A+1 -2660 X=TF:Y=10:GOSUB 1114 -2665 LET TF=DIV +2660 X=TF +2665 LET TF=FN DIV(10) 2670 PRINT MID$(STR$(A),1); -2680 X=TF:Y=10:GOSUB 1113 -2685 IF 0=MD GOTO 2720:REM ELSE +2680 X=TF +2685 IF 0=FN MD(10) GOTO 2720:REM ELSE 2690 PRINT "*"; 2700 LET N=N+100-10*(6=A) 2710 GOTO 2740:REM ENDIF @@ -204,9 +206,9 @@ 2810 IF 0=A GOTO 1180:REM S 2820 IF -1=A OR ".1"=A$ OR ",1"=A$ OR "01"=A$ GOTO 1120:REM C 2830 GOSUB 3350:REM POW10 -2840 X=M:Y=R:GOSUB 1114:REM IDIV -2842 X=DIV:Y=10:GOSUB 1113:REM MOD -2845 IF 0=MD GOTO 2870:REM ELSE +2840 X=M +2842 X=FN DIV(R) +2845 IF 0=FN MD(10) GOTO 2870:REM ELSE 2850 LET M=M-R 2860 GOTO 2890:REM ENDIF 2870 REM LBL ELSE