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