100 ! V[RD.800 101 NO EXTEND : INTEGER 105 ON ERROR GOTO 600 110 REM -----Inledning----- 120 REM FN\% s{tter pekare f|r de vari- abler som ber|rs av en operation. 130 DEF FN\(I,M,K)=CALL(35365,I)+CALL(35355,M)+CALL(35345,K) 140 DEF FNU(R,I,K,U.)=(FN\(I,M,K)+CALL(36304+R+R+R,U.) AND 0)+PEEK(32828)-1 150 DEF FNM(R,I,M,K)=(FN\(I,M,K)+CALL(36304+R+R+R,U.) AND 0)+PEEK(32828)-1 160 DEF FNK(R,I,K)=FNM(R,I,M,K) 170 DEF FNI(R,I)=FNM(R,I,M,K) 180 DEF FNR(R)=FNM(R,I,M,K) 190 DEF FN[(I,U.)=CALL(35365,I)+CALL(36352,U.) 200 DEF FNS(I,M,K)=FN\(I,M,K)+CALL(36331) 210 DEF FND(I,M,K)=FN\(I,M,K)+CALL(36334) 220 DEF FNP(I,M,K)=FN\(I,M,K)+CALL(36337) 230 DEF FNQ(I,M,K)=FN\(I,M,K)+CALL(36340) 240 REM 250 IF PEEK(32768)<>42 OR PEEK(35656)<>177 OR PEEK(36626)<>201 GOTO 65000 260 N.=PEEK(36523)+256.*PEEK(36524) : A0.=PEEK(36538)+256.*PEEK(36539) 270 F=PEEK(34443)+256*PEEK(34444) : DIM B$=2.4*N.+15 280 ; "Ber{kning, Inmatning eller Utmatning av Ri (B/I/U) ?"; : GET F$ : ; F$ : IF F$="B" OR F$="b" 580 290 IF F$="U" OR F$="u" GOTO 440 : IF F$<>"I" AND F$<>"i" GOTO 280 300 REM -----Inmatning----- 310 ; "Ge R(I%) p} decimal form." 320 ; "I%"; : INPUT I : ; "R(I%)"; : INPUT B$ : GOSUB 330 : GOTO 320 330 IF I<8 OR I>F ; "Fel I%!" : RETURN 340 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 350 IF F$="." C=1 : F$="0" 360 S=FN[(3,10)+FN[(2,VAL(F$)) : B=0 : E=0 370 IF A>LEN(B$) GOTO 410 ELSE F$=MID$(B$,A,1) : A=A+1 380 IF F$="E" OR F$="e" GOTO 400 ELSE IF F$="." B=0 : C=1 : GOTO 370 390 S=FN[(4,VAL(F$))+FNP(2,2,3)+FNS(2,2,4) : B=B+1 : GOTO 370 400 E=VAL(RIGHT$(B$,A)) 410 E=E-C*B : S=FNU(21,4,3,ABS(E)) : IF E<0 S=FNQ(I,2,4) ELSE S=FNP(I,2,4) 420 IF G=0 RETURN ELSE S=CALL(36376) : RETURN 430 REM -----Utmatning----- 440 ; "I%"; : INPUT I : GOSUB 450 : ; B$ : GOTO 440 441 ; "I%"; : INPUT I : GOSUB 450 : ; B$ : GOTO 440 450 A.=A0.+I*(N.+3) : IF PEEK(A.-3)<128 B$=" 0" : RETURN 460 E=INT(.30103*(1.-(2 AND PEEK(A.)))*(PEEK(A.-2)+256.*PEEK(A.-1)))-1 : S=FN[(2,10)+FNU(21,4,2,ABS(E)) 470 IF E>0 S=FNQ(3,I,4) ELSE S=FNP(3,I,4) 480 S=FNI(18,2)+FNU(46,2,0,8*N.-1)+FNI(19,2)+FNP(3,3,2) : A.=A0.+3*(N.+3) 485 B=2^PEEK(A.-2)*PEEK(A.-3)/256 : IF (PEEK(A.) AND 1)=1 B$="-" ELSE B$=" " 490 B$=B$+NUM$(B)+"." : S=CALL(36406)+FN[(4,10000) 500 IF LEN(B$)=4 B$=LEFT$(B$,2)+"."+MID$(B$,3,1) : E=E+1 510 FOR B=1 TO (5+2.4*N.-LEN(B$))/4 520 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)) 530 F$="000"+NUM$(S) : B$=B$+RIGHT$(F$,LEN(F$)-3) : S=CALL(36406) : NEXT B 540 B$=LEFT$(B$,2.4*N.+2)+"E"+NUM$(E) : RETURN 550 REM -----Ber{kning----- 560 IF R<1 OR R>72 OR K<2 OR K>F OR M<2 OR M>F OR I<8 OR I>F OR U.<0 OR U.>65535. ; "Fel!" : STOP 570 S=FNR(R) : RETURN 580 ; "R%"; : INPUT R : ; "I%"; : INPUT I : ; "M%"; : INPUT M : ; "K%"; 590 INPUT K : ; "U"; : INPUT U. : GOSUB 560 : GOSUB 450 : ; "R(I%) ="+B$ : GOTO 580 600 END 65000 ; CHR$(12);'Du m}ste k|ra PROG1 f|rst' 65010 ; 'F|r att mata in assembler-rutinerna.'