10 ! SAVE GRAFER3 100 REM ********** GRAFER3 ************ 105 REM * * 110 REM * MICHAEL WIDENIUS 1984-08-05 * 115 REM * * 120 REM ******************************* 125 REM OMR]DE: MATEMATIK ( GRAFIK ) 130 REM 135 REM OM DU BEHAGAR KAN DU SKRIVA: 140 REM 145 REM FLOAT:DOUBLE !!!!!!!!!!! 150 REM 155 COMMON Meny$=16%,Ufdnamn$=16%,Qwerty3%,Qwerty4%,F8$=10%,Ctrlpf8$=1% 160 COMMON Namn$=16%,Highcolour%,Rambuffer%,Qwerty1%,Qwerty2% 165 ! 170 Rutbredd%=PEEK(PEEK2(SYS(10%)+64%)+8%) 175 IF F8$="" THEN F8$=CHR$(8%,9%,13%,24%,192%,193%) : Ctrlpf8$=CHR$(231%) 180 Highcolour%=-1% : Qwerty1%=-1% 185 ! 190 Antal%=13% ! ANTAL RUTF[LT 195 DIM In$(Antal%)=20%,R%(Antal%),K%(Antal%),Flag%(Antal%) 200 DIM Radmax%(0%:511%),Radmin%(0%:511%) 205 ! 210 Ledigt%=65088% : Ledigt1%=Ledigt%+22% 215 ! 220 IF Qwerty1%=0% THEN 265 225 IF PEEK2(Ledigt%)=-1% THEN 265 ! Redan definierad 230 POKE Ledigt%,255%,255%,SYS(3%),SWAP%(SYS(3%)),Highcolour%,SWAP%(Highcolour%) 235 Skr$=Meny$+SPACE$(16%-LEN(Meny$)) 240 FOR I%=1% TO LEN(Skr$) 245 POKE Ledigt%+5%+I%,ASCII(MID$(Skr$,I%,1%)) 250 NEXT I% 255 POKE Ledigt1%,0% 260 ! 265 Rubrik$=CHR$(12%)+SPACE$(10%)+DBLE+RED+"GRAFER -3 DIM" 270 GOSUB 7030 275 IF Highcolour%=0% THEN 8030 ! EJ L]GRES 280 REM 285 ! 400 DEF FNZ(X,Y)=1% 410 ! 500 DEF FNPx(T1,T2)=1% 510 DEF FNPy(T1,T2)=1% 520 DEF FNPz(T1,T2)=1% 530 ! 540 REM 550 ! ** [R FUNKTIONEN DEFINIERAD? ** 560 IF SYS(3%)<>PEEK2(Ledigt%+2%) THEN 2030 1000 REM 1010 REM *** SKRIVER UT FUNKTIONERNA *** 1020 REM 1030 ; Rubrik$ 1040 FGCTL 0% 1050 ; : ; 1060 ; " Programmet ritar upp den tv}-" 1070 ; "dimensionella projektionen av f|ljande" 1080 ; "yt-funktioner:" 1090 ; 1100 ; "Den explicita ytan:" 1110 ; GRN "400 DEF FNZ(X,Y)=________" WHT "( Z=F(X,Y) )" 1120 ; 1130 ; "Parameterytan:" 1140 ; GRN "500 DEF FNPX(T1,T2)=_________" WHT "( X=.. )" 1150 ; GRN "510 DEF FNPY(T1,T2)=_________" WHT "( Y=.. )" 1160 ; GRN "520 DEF FNPZ(T1,T2)=_________" WHT "( Z=.. )" 1170 ; 1180 ; 1190 ; " Ytan kan ses fr}n valfri vinkel och" 1200 ; "skala." 1210 ; 1220 ; " N{r funktionerna har definierats k|r" 1230 ; "programmet p} nytt (" RED "RUN" WHT ")." 1240 ; CHR$(7%) "ABC800" 1250 GET A$ 1260 IF ASCII(A$)=198% THEN Skr%=FNRutlist%("REGLERNA F\R",2%) : GOTO 1250 1270 IF A$=Ctrlpf8$ THEN 8030 1280 Skr%=SYS(6%) 1290 ; CUR(21%,0%); 1300 END 2000 REM 2010 REM *** PROGRAMMET B\RJAR *** 2020 REM 2030 ; Rubrik$ 2040 FGCTL 0% 2050 ; : ; 2060 ; "Vill du ha:" 2070 ; 2080 ; RED "PF1" WHT "-Den explicita ytan" 2090 ; RED "PF2" WHT "-Parameterytan" 2100 ; 2110 ; RED "PF6" WHT "-Skriva en ny funktion" 2120 ; RED "PF7" WHT "-Skriva av rutan p} printern" 2130 ; RED "PF8" CYA "-Sluta" 2140 ; 2150 ; GRN "V{lj |nskat alternativ:" YEL; 2160 ! 2170 Felplats%=0% : Skr$="" 2180 F9$=CHR$(192%,193%,0%,197%,198%,199%)+Ctrlpf8$ 2190 ON ERROR GOTO 2200 A$=FNInput$(0%,0%,"") 2210 IF Inputflag%=0% AND Pf%=0% THEN ; CHR$(7%); : GOTO 2200 2220 IF Inputflag% THEN A%=Inputflag% ELSE A%=Pf% 2230 IF A%<7% THEN ; "PF"+NUM$(A%-(A%>4%)*2%) CUR(4%+A%,0%) YEL : Pf%=A% 2240 IF A%=4% THEN 1030 2250 IF A%=5% THEN Skr%=FNRutlist%("",2%) : GOTO 2030 2260 IF A%>5% THEN 8030 ! SLUT 2270 FOR I=1% TO 1000% : NEXT I 2280 GOSUB 3010 2290 ; CUR(23%,39%); 2300 IF Error% THEN 2380 ! NYTT F\RS\K 2310 ! 2320 IF SYS(5%) THEN GET A$ : GOTO 2320 2330 GET A$ 2340 IF ASCII(A$)<>198% THEN 2370 2350 A$="EN RITNING GJORD AV GRAFER !" 2360 IF Highcolour% THEN Skr%=FNPlot%(A$) 2370 IF A$=Ctrlpf8$ THEN 8030 2380 GOTO 560 3000 REM 3010 REM *** UTRITNINGSV[RDENA FR]GAS *** 3020 REM 3030 ; Rubrik$ 3040 IF A%=1% THEN Skr$="X " : Skr1$="Y " ELSE Skr$="T1" : Skr1$="T2" 3050 ; : ; 3060 ; "Ge v{rdena f|r f|ljande variabler:" 3070 ; 3080 ; USING Skr$+"- INTERVALLET:"+Ut$+WHT+"-"+Ut$;VAL(In$(0%)),VAL(In$(1%)) 3090 ; USING Skr1$+"- INTERVALLET:"+Ut$+WHT+"-"+Ut$;VAL(In$(2%)),VAL(In$(3%)) 3100 ; 3110 ; USING "X- KOORDINATEN F\R RUTANS KANT:"+Ut$;VAL(In$(4%)) 3120 ; USING "Y- KOORDINATEN F\R RUTANS KANT:"+Ut$;VAL(In$(5%)) 3130 ; 3140 ; USING "VRIDNINGEN RUNT X- AXELN:"+Ut$;VAL(In$(6%)) 3150 ; USING "VRIDNINGEN RUNT Z- AXELN:"+Ut$;VAL(In$(7%)) 3160 ; 3170 ; USING "STEGANTAL:"+YEL+"###"+WHT+"NOGGRANHET:"+Ut$;VAL(In$(8%)),VAL(In$(9%)) 3180 ; 3190 ; "SKALL KOORDINATAXLARNA RITAS:" YEL In$(10%) 3200 ; "SKALL YTAN VARA KONTINUERLIG:" YEL In$(11%) 3205 ; "SKALL HIDDEN-LINE UTNYTTJAS: " YEL In$(12%) 3210 ; : ; 3220 ; GRN "Godk{nn ovanst}ende med:" YEL "PF3" 3230 ; CYA "Utg}ngsv{rden (Ge x- intervallet):" GRN "PF4" 4000 REM 4010 REM *** RUUTBEHANDLINGEN *** 4020 REM 4030 RESTORE 4070 4040 FOR I%=0% TO Antal%-1% 4050 READ R%(I%),K%(I%),Flag%(I%) 4060 NEXT I% 4070 DATA 5,17,2, 5,27,2, 6,17,2, 6,27,2 4080 DATA 8,32,2, 9,32,2, 11,26,2 4090 DATA 12,26,2, 14,11,1, 14,27,2 4100 DATA 16,30,0, 17,30,0, 18,30,0 4110 Plats%=0% : Error%=0% 4120 F9$=CHR$(192%,9%,193%,8%,194%,195%,198%,199%) 4130 ! 4140 Skr$=In$(Plats%) : Skr%=LEN(Skr$) 4150 IF Flag%(Plats%)=0% THEN 4190 4160 ! 4170 IF Flag%(Plats%) AND 2% THEN Skr$=ADD$(Skr$,"0",3%) 4180 IF Flag%(Plats%) AND 1% THEN Skr$=ADD$(Skr$,"0",0%) 4190 ; CUR(R%(Plats%),K%(Plats%)-1%) YEL; 4200 Skr$=FNInput$(Skr%,Flag%(Plats%),Skr$) 4210 ! 4220 IF Inputflag% THEN IF Error% THEN ; CHR$(7%); : GOTO 4140 ELSE 4280 4230 IF Error% THEN Error%=0% : ; CUR(23%,0%) TAB(39%); 4240 IF Plats%=5% THEN Skr=Konv : GOSUB 4470 4250 IF Plats%=4% OR Plats%=5% OR Plats%=8% GOSUB 5030 4260 IF Error% THEN ; CHR$(7%); : GOTO 4140 4270 In$(Plats%)=Skr$ : GOTO 4300 4280 ON Inputflag% GOTO 4300,4300,4290,4290,5050,4340,4310,4430 4290 Plats%=MOD(Plats%-1%,Antal%) : GOTO 4140 4300 Plats%=MOD(Plats%+1%,Antal%) : GOTO 4140 4310 IF Plats%=5% THEN Skr$="0" : Skr=Pkonv : GOSUB 4470 : GOTO 4260 ! PRINTTERN 4320 Skr%=FNRutlist%("DEFINITIONERNA F\R UTRITNING I",2%) : GOTO 4140 4330 ! 4340 ! UTG]NGSV[RDENA 4350 ! 4360 IF VAL(In$(1%))=0% AND VAL(In$(0%))<0% THEN In$(1%)=MUL$(In$(0%),"-1",3%) : In$(1%)=SPACE$(LEN(In$(0%))-LEN(In$(1%)))+In$(1%) 4370 In$(2%)=In$(0%) : In$(3%)=In$(1%) 4380 IF VAL(In$(1%))>0% THEN In$(4%)=In$(1%) : In$(5%)=In$(4%) 4390 FOR I%=1% TO 5% 4400 ; CUR(R%(I%),K%(I%)-1%); : ; USING Ut$;VAL(In$(I%)) 4410 NEXT I% 4420 GOTO 4140 4430 Error%=-1% : RETURN ! DUGER INTE 4440 ! 4450 ! * YKORDINATEN F\R SK[RMENS KANT * 4460 ! 4470 IF VAL(Skr$)<>0% RETURN 4480 Skr$=DIV$(In$(Plats%-1%),NUM$(Skr),3%) 4490 Skr$=SPACE$(LEN(In$(Plats%))-LEN(Skr$))+Skr$ 4500 ; CUR(R%(Plats%),K%(Plats%)) Skr$ 4510 RETURN 5000 REM 5010 REM *** KONTROLL *** 5020 REM 5030 IF VAL(Skr$)<=0% THEN Error%=FNError%("TALET B\R VARA POSITIVT") 5040 RETURN 5050 ; CUR(23%,0%) TAB(39%); 5060 IF VAL(In$(0%))>=VAL(In$(1%)) THEN Skr%=FNError%("KONTROLLERA X- INTERVALLET") : GOTO 4140 5070 IF VAL(In$(2%))>=VAL(In$(3%)) THEN Skr%=FNError%("KONTROLLERA Y- INTERVALLET") : GOTO 4140 5080 IF VAL(In$(4%))*VAL(In$(5%))=0% THEN Skr%=FNError%("SK[RMENS KOORDINATER ST[MMER INTE") : GOTO 4140 5090 ! 5100 Error%=0% 5110 POKE Ledigt1%,255% : Skr%=Ledigt1%+1% 5120 FOR I%=0% TO Antal%-1% ! SPARA 5130 FOR J%=1% TO LEN(In$(I%)) 5140 POKE Skr%,ASCII(MID$(In$(I%),J%,1%)) : Skr%=Skr%+1% 5150 NEXT J% 5160 NEXT I% 5500 REM 5510 REM *** V[RDENA F\R UTRITANDET *** 5520 REM 5530 X1=VAL(In$(0%)) : X2=VAL(In$(1%)) 5540 Y1=VAL(In$(2%)) : Y2=VAL(In$(3%)) 5550 Xskala=Kolt%/VAL(In$(4%)) : Yskala=Radt%/VAL(In$(5%)) 5560 Xsteg=(X2-X1)/VAL(In$(8%)) 5570 Ysteg=(Y2-Y1)/VAL(In$(8%)) 5580 Nogr=VAL(In$(9%)) 5590 Alfa=VAL(In$(6%))/180%*PI : Beta=VAL(In$(7%))/180%*PI 5600 Kontinuerlig%=FNJa%(In$(11%)) 5605 Hiddenline%=FNJa%(In$(12%)) AND VAL(In$(6%))<=0% AND A%=1% 5610 ! 5620 Cosalfa=COS(Alfa) : Sinalfa=SIN(Alfa) 5630 Cosbeta=COS(Beta) : Sinbeta=SIN(Beta) 5640 FGPOINT 0%,0%,0% : FGFILL 239%,239% 5650 ; CHR$(12%); 5660 IF FNJa%(In$(10%)) THEN Skr%=FNHraxlar%(VAL(In$(4%)),VAL(In$(5%))) 5670 FGCTL 7% 6000 REM 6010 REM *** RITAR YTAN *** 6020 REM 6030 ON ERROR GOTO 6310 6040 IF Hiddenline% THEN Skr%=FNHiddeninit% 6050 FOR X=X1 TO X2 STEP Xsteg 6060 Flag%=0% 6070 FOR Y=Y1 TO Y2 STEP Ysteg/Nogr 6080 ! 6090 IF A%=1% X0=X : Y0=Y : Z0=FNZ(X,Y) 6100 IF A%=2% X0=FNPx(X,Y) : Y0=FNPy(X,Y) : Z0=FNPz(X,Y) 6110 ! 6120 Flag%=FNPunkt%(X0,Y0,Z0,Flag%) AND Kontinuerlig% 6130 NEXT Y 6140 IF SYS(5%) THEN GET Skr$ : IF ASCII(Skr$)=199% OR ASCII(Skr$)=231% THEN 6300 6150 NEXT X 6160 ! 6170 ON ERROR GOTO 6320 6180 IF Hiddenline% THEN Skr%=FNHiddeninit% 6190 FOR Y=Y1 TO Y2 STEP Ysteg 6200 Flag%=0% 6210 FOR X=X1 TO X2 STEP Xsteg/Nogr 6220 ! 6230 IF A%=1% X0=X : Y0=Y : Z0=FNZ(X,Y) 6240 IF A%=2% X0=FNPx(X,Y) : Y0=FNPy(X,Y) : Z0=FNPz(X,Y) 6250 ! 6260 Flag%=FNPunkt%(X0,Y0,Z0,Flag%) AND Kontinuerlig% 6270 NEXT X 6280 IF SYS(5%) THEN GET Skr$ : IF ASCII(Skr$)=199% OR ASCII(Skr$)=231% THEN 6300 6290 NEXT Y 6300 RETURN 6310 Skr%=INP(5%) : Flag%=0% : RESUME 6130 6320 Skr%=INP(5%) : Flag%=0% : RESUME 6270 6330 ! 6340 ! 7000 REM 7010 REM *** KONSTANTERNA DEFINIERAS *** 7020 REM 7030 Highcolour%=PEEK2(Ledigt%+2%) 7040 Meny$="" : Skr%=Ledigt%+6% 7050 WHILE PEEK2(Skr%)>32% AND LEN(Meny$)<16% 7060 Meny$=Meny$+CHR$(PEEK(Skr%)) : Skr%=Skr%+1% 7070 WEND 7080 Pkonv=1.3735 7090 Dblflag%=LEN(NUM$(PI))>10% 7100 IF Dblflag% THEN Maxnr%=12% ELSE Maxnr%=18% 7110 Ut$=YEL+"###.###" ! RUTBEHANDLINGEN 7120 RESTORE 7170 7130 FOR I%=0% TO Antal%-1% 7140 READ In$(I%) 7150 IF I%Kolm% THEN RETURN 0% 9090 Ykord%=Ykord*Yskala+Radt% : IF Ykord%<0% OR Ykord%>Radm% THEN RETURN 0% 9100 F{rg%=1% 9110 IF Hiddenline%=0% THEN 9150 9120 IF Radmax%(Xkord%)<=Ykord% THEN Radmax%(Xkord%)=Ykord% : Godk{nd%=1% 9130 IF Radmin%(Xkord%)>=Ykord% THEN Radmin%(Xkord%)=Ykord% : F{rg%=2%-Godk{nd% : GOTO 9150 9140 IF Godk{nd%=0% THEN RETURN 0% 9150 IF Flag% THEN FGLINE Xkord%,Ykord%,F{rg% ELSE FGPOINT Xkord%,Ykord%,F{rg% 9160 RETURN -1% 9170 RETURN 0% 9180 RESUME 9170 9190 FNEND 9200 ! 9210 ! 9220 DEF FNHraxlar%(Xmax,Ymax) LOCAL X1%,X2%,Xmed%,Y1%,Y2%,Ymed%,S$=20 9230 X1%=0% : X2%=239% : Y1%=0% : Y2%=239% 9240 Xmed%=(X1%+X2%)/2% : Ymed%=(Y1%+Y2%)/2% 9250 FGPOINT X1%,Ymed%,2% : FGLINE X2%,Ymed% 9260 FGPOINT Xmed%,Y1% : FGLINE Xmed%,Y2% 9270 ; USING CUR(13%,Rutbredd%-9%)+Ut$;Xmax 9280 ; CUR(1%,Rutbredd%/2%-9%); : ; USING Ut$+WHT+" Y";Ymax 9290 ; CUR(10%,38%) "X" 9300 FGPOINT X2%,Ymed% : FGLINE X2%-3%,Ymed%-2% : FGLINE X2%-3%,Ymed%+2% : FGLINE X2%,Ymed% : FGPAINT X2%-2%,Ymed%-1% : FGPAINT X2%-2%,Ymed%+1% 9310 FGPOINT Xmed%,Y2% : FGLINE Xmed%-2%,Y2%-3% : FGLINE Xmed%+2%,Y2%-3% : FGLINE Xmed%,Y2% : FGPAINT Xmed%-1%,Y2%-2% : FGPAINT Xmed%+1%,Y2%-2% 9320 RETURN 0% 9330 FNEND 9340 ! 9350 ! 9360 DEF FNHiddeninit% 9370 FOR I%=0% TO Kolm% 9380 Radmin%(I%)=Radm% : Radmax%(I%)=0% 9390 NEXT I% 9400 RETURN 0% 9410 FNEND 9420 ! 9430 ! 9440 DEF FNJa%(X$)=(ASCII(X$) AND 95%)<>78% 9450 ! 9460 ! 9470 DEF FNError%(A$) 9480 ; CUR(23%,19%-LEN(A$)/2%) RED CHR$(7%) A$; 9490 RETURN -1% 9500 FNEND 9510 ! 9520 ! 9530 DEF FNPlot%(Rubrik$) LOCAL S%,Byte%,Output$=132 9540 OPEN "PR:VSA50C72.5" AS FILE 1% 9550 IF Rubrik$<>"" ; #1%,CHR$(31%) TAB(20%-LEN(Rubrik$)/2%) Rubrik$ CHR$(10%,10%) 9560 ; #1%,CHR$(27%,56%,29%) 9570 FOR Kolumn%=0% TO 239% STEP 3% 9580 Rad%=0% : Output$="" 9590 WHILE Rad%<240% 9600 S%=1% : Byte%=0% 9610 FOR Rad%=Rad% TO Rad%+1% 9620 Byte%=Byte% OR (S% AND FGPOINT(Kolumn%,Rad%)<>0%) OR (S%*4% AND FGPOINT(Kolumn%+1%,Rad%)<>0%) OR (S%*16% AND FGPOINT(Kolumn%+2%,Rad%)<>0%) 9630 S%=S%+1% 9640 NEXT Rad% 9650 Byte%=Byte%+(Byte% AND 32%)*2%+128% 9660 Output$=Output$+CHR$(Byte%) 9670 WEND 9680 S%=LEN(Output$) 9690 WHILE S%>1% AND RIGHT$(Output$,S%)=CHR$(128%) 9700 Output$=LEFT$(Output$,S%-1%) : S%=S%-1% 9710 WEND 9720 IF Output$<>CHR$(128%) THEN ; #1%,Output$ ELSE ; #1% 9730 NEXT Kolumn% 9740 ; #1%,CHR$(27%,54%,30%) 9750 RETURN 0% 9760 FNEND 9770 ! 9780 ! 9790 DEF FNRutlist%(Rubrik$,Storlek%) LOCAL Grafik%,Output$=132,A$=40,A%,A1%,A2%,I% 9800 A$=SPACE$(20%*(Storlek%-1%)-(Storlek%=3% AND 6%)) 9810 A%=31744% : I%=0% ! START 9820 OPEN "PR:VSA50C72.5" AS FILE 1% 9830 IF Rubrik$<>"" ; #1%,CHR$(31%) TAB(20%-LEN(Rubrik$)/2%) Rubrik$ CHR$(10%,10%) 9840 ; #1%,CHR$(27%,54%,32%-Storlek%) 9850 IF Storlek%=3% THEN ; #1%,CHR$(27%,56%) ! H\JDEN 9860 WHILE I%<24% 9870 Grafik%=0% : Output$=A$ : I%=I%+1% : A2%=A%+40% 9880 WHILE A%16% AND A1%<24% THEN Grafik%=128% 9910 IF A1%<>0% AND A1%<8% THEN Grafik%=0% 9920 IF A1%<32% THEN A1%=32% 9930 IF Grafik%=0% OR A1%=32% OR A1%>63% AND A1%<96% THEN 9960 9940 A1%=A1%-(A1%<64% AND 32%)+Grafik% 9950 ! A1=A1 XOR 63 ! INVERS 9960 Output$=Output$+CHR$(A1%) : A%=A%+1% 9970 WEND 9980 A%=A%+88% : IF A%<1% THEN A%=A%-984% 9990 A2%=LEN(Output$) 10000 WHILE A2%<>1% AND MID$(Output$,A2%,1%)=" " : A2%=A2%-1% : WEND 10010 IF A2%<>1% ; #1%,LEFT$(Output$,A2%) ELSE ; #1% 10020 WEND 10030 ; #1%,CHR$(15%,30%,27%,54%) STRING$(6%,10%) 10040 CLOSE 1% 10050 RETURN 0% 10060 FNEND 10070 ! 10080 ! 10090 DEF FNInput$(Antal%,Flag%,Ut$) LOCAL A$=80,S$=1,Dec$=3,Dec%,Fyll%,Sign%,S1%,S2% 10100 Dec%=3% : Dec$=".-+" : Fyll%=32% 10110 IF Flag% AND 1% THEN Dec%=0% : Dec$="" 10120 IF Flag% AND 16% THEN Fyll%=48% 10130 ON ERROR GOTO 10520 10140 A$=Ut$+SPACE$(Antal%-LEN(Ut$)) 10150 ; A$ STRING$(Antal%,8%); 10160 S1%=0% 10170 GET S$ : Sign%=1% 10180 Inputflag%=INSTR(1%,F9$,S$) 10190 IF Inputflag%<>0% THEN 10430 10200 ON INSTR(1%,F8$,S$)+1% GOTO 10210,10270,10290,10440,10320,10350,10380 10210 IF (Flag% AND 3%)=0% THEN 10240 10220 IF INSTR(1%," 0123456789"+Dec$,S$)=0% THEN 10170 10230 IF S$="-" AND S1%<>0% THEN Sign%=-1% : GOTO 10440 10240 IF S$<" " OR S$>"" OR S1%=Antal% THEN 10170 10250 S1%=S1%+1% : MID$(A$,S1%,1%)=S$ : S2%=-1% : ; S$; 10260 GOTO 10170 10270 IF S1%<>0% THEN ; S$; : S1%=S1%-1% 10280 GOTO 10170 10290 IF S1%<>Antal% S1%=S1%+1% : ; MID$(A$,S1%,1%); 10300 GOTO 10170 10310 ! CE 10320 IF S1%=0% THEN 10140 10330 ; STRING$(S1%,8%); : GOTO 10160 10340 ! PF1- INSERT 10350 IF S1%<>Antal% A$=LEFT$(A$,S1%)+" "+MID$(A$,S1%+1%,Antal%-S1%-1%) 10360 ; STRING$(S1%,8%) A$ STRING$(Antal%-S1%,8%); : GOTO 10170 10370 ! PF2- DELETE 10380 IF S1%<>Antal% THEN A$=LEFT$(A$,S1%)+RIGHT$(A$,S1%+2%)+" " 10390 ; STRING$(S1%,8%) A$ STRING$(Antal%-S1%,8%); : GOTO 10170 10400 ! 10410 ! 10420 ! RETURN 10430 IF INSTR(1%,LEFT$(F8$,4%),S$)<>0% AND (S1%<>0% OR LEFT$(A$,LEN(Ut$))<>Ut$) THEN Inputflag%=0% : GOTO 10200 10440 IF S1%=0% THEN ; A$; : S1%=Antal% 10450 IF Flag% AND 3% THEN IF LEN(MUL$(LEFT$(A$,S1%),NUM$(Sign%),Dec%))>Antal% THEN ; CHR$(7%); : GOTO 10170 10460 IF Flag% AND 8% AND INSTR(1%,A$," ")<>0% THEN ; CHR$(7%); : GOTO 10170 10470 ON ERROR GOTO 10480 IF Flag% AND 3% THEN A$=MUL$(LEFT$(A$,S1%),NUM$(Sign%),Dec%) : A$=STRING$(Antal%-LEN(A$),Fyll%)+A$ : GOTO 10500 10490 A$=LEFT$(A$,S1%)+SPACE$(Antal%-S1%) 10500 ; STRING$(S1%,8%) A$; 10510 RETURN A$ 10520 ; CHR$(7%); 10530 RESUME 10330 10540 FNEND