Source Code
2 SLOW
5 REM "FROM BOOK BY ING. WINFRIED HOFACKER PUBLISHING COMPANY"
10 CLEAR
15 CLS
20 PRINT "WELCOME TO MATHEMATICS"
25 PRINT
30 PRINT "PRESS DESIRED SELECTION NUMBER"
35 PRINT
40 PRINT "1> LARGEST COMMON DIVISOR"
45 PRINT
50 PRINT "2> SMALLEST COMMON MULTIPLE"
55 PRINT
60 PRINT "3> PRIME FACTORING OF NUMBERS"
65 PRINT
70 PRINT "4> QUADRATIC EQUATION"
75 PRINT
80 PRINT "5> ZEROES OF A FUNCTION"
85 PRINT
90 PRINT "6> VALUE OF A FUNCTION"
95 PRINT
100 PRINT "7> POLYNOMIAL"
105 PRINT
110 PRINT "8> PLOT OF FUNCTIONS"
120 PRINT AT 21,4;" RUN IN SLOW MODE"
150 GOSUB 8800
155 IF W=1 THEN GOTO 200
160 IF W=2 THEN GOTO 400
165 IF W=3 THEN GOTO 700
170 IF W=4 THEN GOTO 1000
175 IF W=5 THEN GOTO 1300
180 IF W=6 THEN GOTO 1800
185 IF W=7 THEN GOTO 2100
190 IF W=8 THEN GOTO 2500
200 CLS
205 CLEAR
208 PRINT "LARGEST COMMON DIVISOR"
209 PRINT
210 PRINT "A=";
220 INPUT A
230 PRINT A
240 PRINT "B=";
250 INPUT B
260 PRINT B
270 LET Q=INT (A/B)
280 LET R=A-Q*B
290 LET A=B
300 LET B=R
310 IF R>0 THEN GOTO 270
320 PRINT "LCD=";A
325 GOSUB 9000
330 GOTO 200
400 CLS
405 CLEAR
408 PRINT "SMALLEST COMMON MULTIPLE"
409 PRINT
410 PRINT "A=";
420 INPUT A
430 PRINT A
440 PRINT "B=";
450 INPUT B
460 PRINT B
470 PRINT "C=";
480 INPUT C
490 PRINT C
500 LET X=A
510 IF INT (X/A)=X/A THEN GOTO 540
520 LET X=X+1
530 GOTO 510
540 IF INT (X/B)=X/B THEN GOTO 570
550 LET X=X+1
560 GOTO 510
570 IF INT (X/C)=X/C THEN GOTO 600
580 LET X=X+1
590 GOTO 510
600 PRINT "SCM=";X
610 GOSUB 9000
620 GOTO 400
700 CLS
705 CLEAR
708 PRINT "PRIME FACTORING OF NUMBERS"
710 PRINT
720 PRINT "NUMBER=";
730 INPUT Z
740 PRINT Z
750 PRINT Z;"=";
760 IF Z<0 THEN PRINT "-";
770 PRINT "1";
800 LET Z=ABS Z
805 LET E=Z
808 LET T=1
810 FOR I=2 TO Z
820 LET N=0
830 IF Z/I<>INT (Z/I) THEN GOTO 870
840 LET Z=Z/I
850 LET N=N+1
860 GOTO 830
870 IF N=0 THEN GOTO 900
880 FOR J=1 TO N
885 PRINT "*";I;
887 LET T=T*I
888 IF T=E THEN GOTO 910
890 NEXT J
900 NEXT I
910 PRINT
920 GOSUB 9000
930 GOTO 700
\n1000 CLS
\n1002 CLEAR
\n1004 PRINT "QUADRATIC EQUATION"
\n1006 PRINT
\n1008 PRINT "A*X*X+B*X+C=0"
\n1010 PRINT "A=";
\n1020 INPUT A
\n1030 PRINT A
\n1040 PRINT "B=";
\n1050 INPUT B
\n1060 PRINT B
\n1070 PRINT "C=";
\n1080 INPUT C
\n1090 PRINT C
\n1100 LET Q=B*B-4*A*C
\n1110 IF Q<0 THEN GOTO 1200
\n1120 LET Q=SQR Q/(2*A)
\n1130 LET C=-B/(2*A)
\n1140 LET X1=C+Q
\n1145 PRINT "X1=";
\n1150 PRINT X1
\n1160 LET X2=C-Q
\n1165 PRINT "X2=";
\n1170 PRINT X2
\n1180 GOSUB 9000
\n1190 GOTO 1000
\n1200 PRINT "NO REAL SOLUTION"
\n1210 GOSUB 9000
\n1220 GOTO 1000
\n1300 CLS
\n1302 CLEAR
\n1304 PRINT "ZEROES OF A FUNCTION"
\n1305 PRINT
\n1306 REM "FUNCTION IS FCT"
\n1308 REM "SEARCHING FOR ZEROES IS SFZ"
\n1310 FAST
\n1312 PRINT "XA=";
\n1315 INPUT XA
\n1320 PRINT XA
\n1330 PRINT "XE=";
\n1340 INPUT XE
\n1350 PRINT XE
\n1360 PRINT "H=";
\n1370 INPUT H
\n1380 PRINT H
\n1390 PRINT "EPS=";
\n1400 INPUT E
\n1410 PRINT E
\n1420 LET FCT=1610
\n1430 LET SFZ=1640
\n1440 LET X=XA
\n1450 GOSUB FCT
\n1460 LET YA=Y
\n1470 LET XA=X
\n1480 LET X=XA+H
\n1490 IF X>XE THEN GOTO 1760
\n1500 GOSUB FCT
\n1510 IF SGN Y=SGN YA THEN GOTO 1580
\n1520 LET YN=Y
\n1530 LET XN=X
\n1540 GOSUB SFZ
\n1550 PRINT "ZERO AT POSITION X=";X
\n1560 IF X<XE THEN LET X=X+E
\n1570 GOTO 1450
\n1580 LET YA=Y
\n1590 LET XA=X
\n1600 GOTO 1480
\n1610 REM FCT
\n1620 LET Y=X*X*X-4*X*X-11*X+30
\n1630 RETURN
\n1640 REM SFZ
\n1650 IF ABS (Y)<E THEN RETURN
\n1660 LET X=(XN-XA)/2+XA
\n1670 GOSUB FCT
\n1680 IF ABS Y<E THEN RETURN
\n1690 IF SGN Y=SGN YN THEN GOTO 1730
\n1700 LET YA=Y
\n1710 LET XA=X
\n1720 GOTO 1660
\n1730 LET YN=Y
\n1740 LET XN=X
\n1750 GOTO 1660
\n1760 SLOW
\n1770 GOSUB 9000
\n1780 GOTO 1300
\n1800 CLS
\n1805 CLEAR
\n1810 PRINT "VALUE OF A FUNCTION"
\n1815 PRINT
\n1820 GOTO 2000
\n1830 REM POLYNOMIAL
\n1840 PRINT "N=";
\n1850 INPUT N
\n1860 PRINT N
\n1870 DIM W(N+1)
\n1880 FOR I=1 TO N+1
\n1890 PRINT "A(";I-1;")=";
\n1900 INPUT W(I)
\n1910 PRINT W(I)
\n1920 NEXT I
\n1930 RETURN
\n1940 LET Y=W(N+1)*X
\n1950 FOR I=N TO 2 STEP -1
\n1960 LET Y=(Y+W(I))*X
\n1970 NEXT I
\n1980 LET Y=Y+W(1)
\n1990 RETURN
\n2000 GOSUB 1830
\n2010 PRINT "X=";
\n2020 INPUT X
\n2030 PRINT X
\n2040 GOSUB 1940
\n2050 PRINT "Y=";Y
\n2060 PRINT "NEW X? (Y/N)"
\n2070 IF INKEY$="" THEN GOTO 2070
\n2080 IF INKEY$="Y" THEN GOTO 2010
\n2085 GOSUB 9000
\n2090 GOTO 1800
\n2100 CLS
\n2105 CLEAR
\n2120 GOTO 2240
\n2130 REM "POLYNOMIAL"
\n2135 PRINT
\n2140 PRINT "N=";
\n2150 INPUT N
\n2160 PRINT N
\n2170 DIM W(N+1)
\n2180 FOR I=1 TO N+1
\n2190 PRINT "A(";I-1;")=";
\n2200 INPUT W(I)
\n2210 PRINT W(I)
\n2220 NEXT I
\n2230 RETURN
\n2240 PRINT "1. POLYNOMIAL"
\n2250 GOSUB 2130
\n2260 LET K=N
\n2270 DIM A(K+1)
\n2280 FOR I=1 TO K+1
\n2290 LET A(I)=W(I)
\n2300 NEXT I
\n2310 CLS
\n2320 PRINT "2. POLYNOMIAL"
\n2330 GOSUB 2130
\n2340 LET L=N+K+1
\n2350 DIM E(L)
\n2360 FOR I=1 TO L
\n2370 LET E(I)=0
\n2380 NEXT I
\n2390 FOR I=1 TO N+1
\n2400 FOR J=1 TO K+1
\n2410 LET L=I+J-1
\n2420 LET E(L)=E(L)+W(I)*A(J)
\n2430 NEXT J
\n2440 NEXT I
\n2450 CLS
\n2460 LET L=K+N+1
\n2470 FOR I=1 TO L
\n2480 PRINT "E(";I-1;")=";E(I)
\n2485 NEXT I
\n2490 GOSUB 9000
\n2495 GOTO 2100
\n2500 CLS
\n2505 CLEAR
\n2510 PRINT "PLOT"
\n2515 REM "PLOT OF FUNCTIONS"
\n2520 GOTO 2900
\n2530 FOR I=0 TO 63
\n2540 PLOT I,22
\n2550 NEXT I
\n2560 FOR I=0 TO 43
\n2570 PLOT 31,I
\n2580 NEXT I
\n2590 PRINT AT 0,14;"Y"
\n2600 PRINT AT 11,31;"X"
\n2610 RETURN
\n2620 LET X0=31
\n2630 LET Y0=22
\n2640 PRINT "XA=";
\n2650 INPUT XA
\n2660 PRINT XA
\n2670 PRINT "XE=";
\n2680 INPUT XE
\n2690 PRINT XE
\n2700 PRINT "YA=";
\n2710 INPUT YA
\n2720 PRINT YA
\n2730 PRINT "YE=";
\n2740 INPUT YE
\n2750 PRINT YE
\n2760 LET MX=63/ABS (XE-XA)
\n2770 LET MY=43/ABS (YE-YA)
\n2780 PRINT "H=";
\n2790 INPUT H
\n2800 PRINT H
\n2810 RETURN
\n2820 FOR L=XA TO XE STEP H
\n2830 LET X=L
\n2840 LET Y=SIN X+SIN (2*X)
\n2850 LET X=X*MX+X0
\n2860 LET Y=Y*MY+Y0
\n2870 IF X>=0 AND X<=63 AND Y>=0 AND Y<=43 THEN PLOT X,Y
\n2880 NEXT L
\n2890 RETURN
\n2900 GOSUB 2620
\n2910 CLS
\n2920 GOSUB 2530
\n2930 GOSUB 2820
\n2940 GOSUB 9000
\n2950 GOTO 2500
\n8800 IF INKEY$<>"1" AND INKEY$<>"2" AND INKEY$<>"3" AND INKEY$<>"4" AND INKEY$<>"5" AND INKEY$<>"6" AND INKEY$<>"7" AND INKEY$<>"8" THEN GOTO 8800
\n8810 LET W=VAL INKEY$
\n8815 RETURN
\n9000 PRINT AT 20,0;"PRESS <R> TO GET INDEX,PRESS ANY"
\n9003 PRINT AT 21,0;"OTHER KEY TO RERUN THIS SECTION"
\n9005 PAUSE 30
\n9010 IF INKEY$="" THEN GOTO 9010
\n9015 IF INKEY$="R" THEN GOTO 5
\n9020 IF INKEY$<>"R" THEN RETURN
\n9040 SAVE "1024%1"
\n9050 GOTO 2