1 REM Ins{nd av Guido Petz <1098> 1985-01-29 21.34.07
10 REM GUIDO PETZ 1984
20 A=PEEK(65054)+PEEK(65055)*256 : POKE 36639,A,SWAP%(A) : DIM C(79%)
30 DEFFN\%(I%,M%,K%)=CALL(35365%,I%)+CALL(35355%,M%)+CALL(35345%,K%)
40 DEFFNH%(R%,I%,K%,D)=(FN\%(I%,M%,K%)+CALL(36304%+R%+R%+R%,D) AND 0%)+PEEK(32828%)-1%
50 DEFFNM%(R%,I%,M%,K%)=(FN\%(I%,M%,K%)+CALL(36304%+R%+R%+R%,D) AND 0%)+PEEK(32828%)-1%
60 DEFFNK%(R%,I%,K%)=FNM%(R%,I%,M%,K%)
70 DEFFNL%(I%,K%)=FNM%(R%,I%,M%,K%)
80 DEFFNI%(R%,I%)=FNM%(R%,I%,M%,K%)
90 DEFFNR%(R%)=FNM%(R%,I%,M%,K%)
100 DEFFN[%(I%,D)=CALL(35365%,I%)+CALL(36352%,D)
110 DEFFNS%(I%,M%,K%)=FN\%(I%,M%,K%)+CALL(36331%)
120 DEFFND%(I%,M%,K%)=FN\%(I%,M%,K%)+CALL(36334%)
130 DEFFNP%(I%,M%,K%)=FN\%(I%,M%,K%)+CALL(36337%)
140 DEFFNQ%(I%,M%,K%)=FN\%(I%,M%,K%)+CALL(36340%)
150 B0=PEEK(65053)*256+PEEK(65052) : B=PEEK(36643)+PEEK(36644)*256 : I%=(B0-B)/26%
160 ; CHR$(12) : ; CUR(10,5)'HUR M]NGA BYTES I MANTISSAN:'CUR(11,14)'4<=N<='NUM$(I%)CUR(10,32);
170 ONERRORGOTO 160 : INPUT N2% : IF N2%<4% N2%=4% ELSE IF N2%>I% N2%=I% ELSE N1%=2.4*N2% : DIM B$=N1%+15%
180 ; CUR(14,5)'Vill du definiera f1-f3(j)'; : GET F$ : IF F$<>'j' 490
190 ONERRORGOTO 190 : F=1 : GOSUB 230 : FOR I=1 TO 8 : ; TAB(19); : INPUT B% : POKE 34424+2*I,B%,SWAP%(B%) : NEXT I
200 ONERRORGOTO 200 : F=2 : GOSUB 230 : FOR I=1 TO 8 : ; TAB(19); : INPUT B% : POKE 34495+2*I,B%,SWAP%(B%) : NEXT I
210 ONERRORGOTO 210 : F=3 : GOSUB 230 : FOR I=1 TO 8 : ; TAB(19); : INPUT B% : POKE 35915+2*I,B%,SWAP%(B%) : NEXT I
220 GOTO 490
230 ; CHR$(12)CUR(5,11)'ANGE b1-b8 F\R f'F':' : ; : RETURN
240 D%=1% : IF I%<8% I%=8% ELSE IF I%>F% I%=F%
250 IF F<>0% 270 : GET F$ : ; F$; : S%=ASC(F$) : IF (S%>57%)+(S%<43%)+(S%=44%)+(S%=47%) RETURN
260 R%=22% : S%=FNL%(11%,10%)+FNL%(10%,9%)+FNL%(9%,8%) : I%=8% : INPUTLINE B$ : B$=F$+LEFT$(B$,LEN(B$)-2) : GOTO 280
270 ONERRORGOTO 370 : INPUT B$ : D%=ASC(B$) : IF D%=0% 370
280 C%=0% : A%=2% : F$=MID$(B$,1%,1%) : G%=-(F$='-') : IF F$='+' OR F$=' ' OR G%=1% F$=MID$(B$,2%,1%) : A%=3%
290 IF F$='.' C%=1% : F$='0'
300 S%=FN[%(3%,10%)+FN[%(2%,VAL(F$)) : B%=0% : E%=0%
310 IF A%>LEN(B$) 350 ELSE F$=MID$(B$,A%,1%) : A%=A%+1%
320 IF F$='E' OR F$='e' 340 : IF F$='.' B%=0% : C%=1% : GOTO 310
330 S%=FN[%(4%,VAL(F$))+FNP%(2%,2%,3%)+FNS%(2%,2%,4%) : B%=B%+1% : GOTO 310
340 E%=VAL(RIGHT$(B$,A%))
350 E%=E%-C%*B% : S%=FNH%(21%,4%,3%,ABS(E%)) : IF E%<0% S%=FNQ%(I%,2%,4%) ELSE S%=FNP%(I%,2%,4%)
360 IF G%=0% 370 ELSE S%=CALL(36376%)
370 ONERRORGOTO 0 : RETURN
380 A=A0+I%*(N%+3%) : IF PEEK(A-3%)<128% B$=' 0.'+STRING$(N1%,48%) : GOTO 480
390 E%=INT(.30103*(1-(2% AND PEEK(A)))*(PEEK(A-2%)+256*PEEK(A-1%)))-1% : S%=FN[%(2%,10%)+FNH%(21%,4%,2%,ABS(E%))
400 IF E%>0% S%=FNQ%(3%,I%,4%) ELSE S%=FNP%(3%,I%,4%)
410 S%=FNI%(18%,2%)+FNH%(46%,2%,0%,8%*N%-1%)+FNI%(19%,2%)+FNP%(3%,3%,2%) : A=A0+3%*(N%+3%)
420 B$=NUM$((1%-2%*(PEEK(A) AND 1%))*2%^PEEK(A-2%)*PEEK(A-3%)/256%)+'.' : S%=CALL(36406)+FN[%(4%,10000%)
430 IF LEN(B$)=4% B$=LEFT$(B$,2%)+'.'+MID$(B$,3%,1%) : E%=E%+1%
440 FOR B%=1% TO (5%+N1%-LEN(B$))/4%
450 S%=FNP%(3%,3%,4%) AND 0% : IF (2% AND PEEK(A))=0% S%=(64%*PEEK(A-3%)+PEEK(A-4%)/4%)/2%^(14%-PEEK(A-2%))
460 F$='000'+RIGHT$(NUM$(S%),2%) : B$=B$+RIGHT$(F$,LEN(F$)-3%) : S%=CALL(36406) : NEXT B%
470 B$=LEFT$(B$,N1%+2%)+'E'+NUM$(E%)
480 ONERRORGOTO 0 : RETURN
490 F=1 : N%=N2% : N1%=N2%*2.4 : GOSUB 1010 : \%=10%*LOG(N%) : ; CHR$(12)TAB(14)'CALCULUS'
500 ; : ; 'Funktionen definieras p} rad 1340 med' : ; 'hj{lp av FN(.)-satser som R9=F(R8)'
510 ; 'Konstanter laddas p} raderna 1050-1059' : ; TAB(6)N1%' Siffror i mantissan!'
520 ; 'Registren 21 -'F%' {r disponibla!' : ; TAB(15)'Meny 'CUR(16,12)'4 INTEGRAL'
530 ; CUR(12,12)'2 EVALUERING'CUR(14,12)'3 NOLLST[LLEN'CUR(10,12)'1 SLUTA'CUR(18,12)'5 PLOTTNING'
540 ; CUR(20,12)'6 KALKYLATOR'CUR(22,12); : GET F$ : ON INSTR(1%,'123456',F$)+1% GOTO 540,550,560,600,770,910,1090
550 ; CHR$(12) : END
560 ; CHR$(12) : ; TAB(15)'EVALUERING'
570 GOSUB 1070 : IF D%=0% 490 ELSE GOSUB 1080
580 S%=FNK%(22%,8%,11%) : GOSUB 1340 : I%=9% : GOSUB 380 : ; B$ : S%=FNS%(11%,11%,19%) : S%=FNK%(7%,11%,10%)
590 IF S%<=0% 580 ELSE 570
600 I%=16% : B$='1E-'+NUM$(N1%) : GOSUB 280 : ; CHR$(12)TAB(15)'NOLLST[LLEN'
610 GOSUB 1070 : IF D%=0% 490 ELSE GOSUB 1080
620 S%=FNK%(22%,8%,11%) : GOSUB 1340 : S%=FNK%(22%,14%,9%)
630 S%=FNK%(22%,18%,11%)+FNS%(11%,11%,19%) : S%=FNK%(7%,10%,11%) : IF S%=-1% 610
640 S%=FNK%(22%,8%,11%) : GOSUB 1340 : S%=FNK%(22%,8%,14%)+FNK%(22%,13%,14%)+FNK%(22%,14%,9%)
650 S%=FNP%(8%,8%,9%) : S%=FNI%(3%,8%) : IF S%>=0% 630
660 S%=FNK%(22%,17%,11%)+FND%(20%,13%,14%)+FNI%(40%,20%)+FNI%(28%,20%)
670 S%=FND%(8%,17%,18%)+FND%(9%,14%,13%)+FNQ%(12%,8%,9%)+FNI%(24%,12%)+FNP%(12%,12%,14%)
680 S%=FNS%(12%,12%,17%)+FNK%(22%,8%,12%) : GOSUB 1340
690 S%=FNK%(22%,15%,9%)+FNP%(8%,14%,15%) : S%=FNI%(3%,8%)
700 IF S% S%=FNK%(22%,18%,17%)+FNK%(22%,13%,14%) ELSE S%=FNI%(42%,13%)
710 S%=FND%(8%,15%,14%)+FNI%(28%,8%) : S%=FNK%(7%,8%,20%) : IF S%>=0% 620
720 S%=FNK%(22%,17%,12%)+FNK%(22%,14%,15%)+FND%(8%,17%,18%)+FNI%(28%,8%)
730 S%=FNK%(7%,8%,16%) : A%=FNI%(3%,14%) : IF R1%>\% 740 ELSE IF S%>0% IF A%<>0% 670
740 I%=17% : GOSUB 380 : ; B$
750 I%=14% : GOSUB 380 : B$=LEFT$(B$,5%)+RIGHT$(B$,N1%+3%) : ; TAB(2)B$
760 S%=FN[%(11%,18%)+FNQ%(11%,19%,11%)+FNS%(11%,17%,11%) : GOTO 620
770 ; CHR$(12)TAB(15)'INTEGRAL'
780 S%=FN[%(18%,3%)+FNI%(48%,18%)+FNI%(36%,18%)+FN[%(20%,15%)
790 S%=FNI%(17%,19%) : GOSUB 1070 : IF D%=0% 490
800 ONERRORGOTO 800 : ; 'Antal dubbleringar av delintervallen:'; : INPUT R1% : \%=2% : IF R1%<1% R1%=1%
810 FOR M%=0% TO R1%
820 \%=\%*2% : S%=FN[%(14%,\%)+FNI%(40%,14%)+FND%(13%,10%,11%)+FNQ%(13%,13%,14%)
830 S%=FND%(14%,11%,13%)+FNP%(15%,13%,18%)+FNI%(17%,17%)+FNK%(39%,19%,13%)
840 FOR K%=1% TO \%
850 S%=FNS%(14%,14%,19%)+FND%(8%,14%,15%) : GOSUB 1340 : S%=FNS%(17%,17%,9%)+FNS%(8%,14%,15%) : GOSUB 1340
860 S%=FNS%(17%,17%,9%) : NEXT K% : S%=FNP%(17%,17%,13%)
870 S%=FND%(19%,17%,16%)+FNQ%(19%,19%,20%)+FNS%(19%,19%,17%)+FNK%(22%,16%,17%)
880 IF M%=0% 890 : ; \%TAB(4)':'; : I%=19% : GOSUB 380 : ; B$
890 NEXT M%
900 ; 'En g}ng till(j)?'; : GET F$ : ; F$ : IF F$<>'j' 790 ELSE 820
910 F=-1% : N%=4% : N1%=9% : GOSUB 1010 : ; CHR$(12)TAB(15)'PLOTTNING' : GOSUB 1070 : IF D%=0% 490 ELSE A3=VAL(B$)
920 S%=FN[%(20%,78%)+FND%(19%,10%,11%)+FNQ%(19%,19%,20%)
930 ; CHR$(12)CUR(10,9)'DET TAR N]GON MINUT!' : B1=0 : B2=0 : I%=9% : S%=FND%(11%,11%,19%) : FOR K%=2% TO 79%
940 S%=FNS%(11%,11%,19%)+FNK%(22%,8%,11%) : GOSUB 1340 : GOSUB 380 : F1=VAL(B$) : C(K%)=F1
950 B1=B1+F1 : B2=B2+F1*F1 : NEXT K% : T1=200/SQR(ABS(B2-B1*B1/78)) : ; CHR$(12)
960 FOR I%=0% TO 22% : ; CUR(I%,0%)CHR$(151) : NEXT I% : FOR I%=2% TO 79% : SETDOT 36%,I% : NEXT I%
970 FOR I%=2% TO 79% : A1=T1*C(I%) : IF ABS(A1)<=35% SETDOT 36%-A1,I%
980 NEXT I%
990 ONERRORGOTO 910 : ; CUR(23,0)A2;CUR(23,6)INT(100*T1)/100" SKALNINGSFAKTOR";CUR(23,35)A3;CUR(23,28);
1000 INPUT T1 : ; CHR$(12) : GOTO 960
1010 A0=B+N% : F%=(B0-A0-1)/(N%+3%) : POKE 36538,A0,SWAP%(A0) : POKE 34443,F%,SWAP%(F%) : POKE 36523,N%,SWAP%(N%)
1020 H%=F%-1% : IF F=-1% 1030 ELSE ; CHR$(12)CUR(10,10)'Ber{kna PI,LN2 (j)'; : GET F$ : ; F$ : IF F$<>'j' 1050
1030 S%=CALL(35365,7)+CALL(32838)+CALL(34845)+CALL(35710)+CALL(35362)+CALL(33619,6)+CALL(35131)+CALL(35365,7)
1040 S%=CALL(35352)+CALL(33669)+CALL(35365,6)+CALL(32838)+CALL(34845)+CALL(36070)+CALL(32832)
1050 REM
1060 RETURN
1070 I%=11% : ; 'a='; : GOSUB 240 : IF D%=0% RETURN ELSE A2=VAL(B$) : I%=10% : ; 'b='; : GOSUB 240 : RETURN
1080 I%=19% : ; 'h='; : GOSUB 240 : RETURN
1090 IF N1%>=36% W%=0% ELSE W%=(36%-N1%)/2%-2%
1100 F=0 : ; CHR$(12)TAB(13)'RPN-KALKYLATOR!'
1110 ; TAB(2)'Nogrannheten {r ungef{r 'N1%' siffsor!' : ; TAB(12)'Register 8 -'F%-2% : ; TAB(12)'STORA BOKST[VER!!'
1120 ; "Q+:W-:R*:T/:Ychs:Usgn:Iabs:Oint:Pfrac"6 : ; ']inv:^x*x:Asqr:Sexp:Dln:Frutin:Gsin'
1130 ; "Hasin:Jcos:Kacos:Ltan:\atn:[min:'lastx" : ; 'Zx**n:Xrdn:Clog:Vrcl:Bsto:Nx**y:Mr*2'
1140 ; ",r/2:' 'ent:0% 1330
1260 R1%=-(F$='\')*60%-(F$='C')*64%-(F$='M')*40%-(F$=',')*42% : IF R1%<>0% 1330 ELSE 1150
1270 ONERRORGOTO 1270 : ; CUR(9,0)SPACE$(42)CUR(9,15)'RCL:'; : INPUT G% : R%=22% : S%=FNL%(11%,10%)+FNL%(10%,9%)
1280 S%=FNL%(9%,8%)+FNL%(8%,G%) : GOTO 1150
1290 ONERRORGOTO 1290 : ; CUR(9,16)'N='; : INPUT D : S%=FNK%(22%,F%,8%)+FNK%(21%,8%,8%) : GOTO 1150
1300 ONERRORGOTO 1300 : ; CUR(9,0)'R='; : INPUT R% : ; CUR(9,8)'I='; : INPUT I% : ; CUR(9,16)'K='; : INPUT K%
1310 ; CUR(9,24)'M='; : INPUT M% : ; CUR(9,32)'D='; : INPUT D : S%=FNK%(22%,F%,8%)+FNM%(R%,I%,M%,K%) : GOTO 1150
1320 ONERRORGOTO 1320 : ; CUR(9,15)'STO:'; : INPUT I% : S%=FNK%(22%,I%,8%) : GOTO 1150
1330 S%=FNK%(22%,F%,8%)+FNM%(R1%,8%,9%,K%) : GOTO 1150
1340 S%=FNK%(51%,9%,8%)+FNK%(35%,21%,9%)+FNP%(9%,9%,8%)+FND%(9%,9%,21%) : RETURN