100 REM Texteditor 790808,Jan Nord`n,PL 110 DEFFNM%(X%,Y%)=X%-X%/Y%*Y% 120 S5%=(PEEK(65064%)-PEEK(65053%))*2%-85% : S6%=128% : S7%=300% : S8%=117% 130 DIM S$(S5%)=S6%,S%(S7%,1%),B$=S8%+2%,B1$=S8%,B3$=S8%+S6%,C$=6% 140 GOSUB 500 150 ; : ; "EDIT" : B1$="" 160 GOSUB 340 : IF B$="" THEN 160 170 GOSUB 1610 : IF N%=-2% THEN 300 180 IF N%<0% THEN 220 190 IF ASC(B$)=32% THEN B$=RIGHT$(B$,2%) 200 L%=N% : IF B$="" THEN F1%=0% : GOSUB 1110 : GOTO 160 210 GOSUB 820 : GOTO 160 220 IF N%=-2% THEN 160 230 GOSUB 1530 : IF B$="" THEN 160 240 RESTORE : I%=0% 250 READ C$ : I%=I%+1% : IF C$="+" THEN 300 260 IF INSTR(1%,B$,C$)<>1% THEN 250 270 B$=RIGHT$(B$,LEN(C$)+1%) 280 ON I% GOTO 700,140,140,590,620,550,690,560,730,750,790,320,310,330,740,770,760 290 DATA ED,NEW,SCR,REN,DEL,DIS,BYE,LIST,LOAD,SAVE,AUTO,CLOAD,CSAVE,MERGE,DSAVE,PLIST,PDIS,+ 300 ; : ; "Felaktig rad"CHR$(7%) : GOTO 150 310 F2%=0% : F4%=-1% : B$="CAS:"+B$ : GOSUB 1720 : GOSUB 1720 : GOTO 150 320 F4%=-1% : F6%=-1% : GOTO 1810 330 F4%=0% : F6%=0% : GOTO 1810 340 R%=23% : K%=0% : B$="" 350 IF F1% THEN B$=RIGHT$(NUM$(S%(S%,0%)+N5%),2%)+" " : K%=LEN(B$) : ; B$; 360 ; CUR(R%,K%); : GET C$ : C%=ASC(C$) 370 IF C%=13% THEN 490 380 IF C%<>8% AND C%<>24% THEN 440 390 IF B$="" THEN 360 400 K%=K%-1% : IF K%<0% THEN K%=39% : R%=R%-1% 410 ; CUR(R%,K%)" "CUR(R%,K%); 420 B$=LEFT$(B$,LEN(B$)-1%) 430 IF C%=24% THEN 380 ELSE 360 440 IF C$=CHR$(9%) AND B1$<>"" THEN C$=LEFT$(B1$,1%) : B1$=RIGHT$(B1$,2%) 450 IF ASC(C$)<32% THEN 360 460 B$=B$+C$ : ; C$; 470 K%=FNM%(K%+1%,40%) : IF K%=0% AND R%<>23% THEN R%=R%+1% 480 IF LEN(B$)"" THEN RETURN 510 S%=0% 520 FOR I%=0% TO S5% : S$(I%)="" : NEXT I% 530 L%=0% : N3%=10% : F1%=0% 540 S%(0%,0%)=0% : S%(1%,0%)=-1% : S%(1%,1%)=0% : RETURN 550 F2%=0% : GOTO 570 560 F2%=-1% 570 GOSUB 1430 : IF B$<>"" THEN 300 580 F3%=0% : F4%=0% : GOSUB 1740 : GOTO 150 590 N1%=10% : N2%=10% : GOSUB 1440 600 IF (S%-.9999)*N2%+N1%>30000 THEN ; : ; "Det ger f|r stora radnummer" : GOTO 150 610 FOR I%=1% TO S% : S%(I%,0%)=N1%+(I%-1%)*N2% : NEXT I% : GOTO 150 620 N1%=0% : N2%=0% : GOSUB 1440 630 IF N1% AND N2%=0% THEN N2%=32767 640 IF N2% AND N1%=0% THEN N1%=1% 650 IF B$<>"" THEN 150 660 N4%=N1%-1% : I%=1% : GOSUB 1660 670 IF N4%<0% OR N4%>N2% THEN 150 680 L%=N4% : GOSUB 1110 : GOTO 660 690 ; "Har du sparat filen (Ja/Nej)"; : INPUT B$ : B$=LEFT$(B$,1%) : IF B$="J" OR B$="j" THEN END ELSE 150 700 GOSUB 1610 : IF B$<>"" OR N%<0% THEN 300 710 L%=N% : GOSUB 1000 : B1$=RIGHT$(NUM$(L%),2%)+" "+B1$ 720 ; B1$ : GOTO 160 730 F4%=0% : F6%=-1% : GOTO 1810 740 F2%=0% : GOTO 755 750 F2%=-1% 755 F4%=0% : GOSUB 1720 : GOTO 150 760 F2%=0% : GOTO 775 770 F2%=-1% 775 GOSUB 1430 : IF B$<>"" THEN 300 780 B$="PR1:" : F4%=0% : GOSUB 1721 : GOTO 150 790 N%=10% : IF B$="" THEN 810 800 GOSUB 1610 : IF N%<0% THEN 300 810 N5%=N% : F1%=-1% : GOTO 160 820 GOSUB 1110 830 IF LEN(B$)+S%(S%+1%,1%)>=(S5%+1%)*S6% OR S%+1%=S7% THEN ; "Raden f}r inte plats" : RETURN 840 N4%=L% : I%=1% : GOSUB 1660 850 B%=LEN(B$) 860 IF N4%=-1% THEN 910 870 I1%=S%(I%,1%) : I3%=I1%/S6% : I4%=I3% : I2%=FNM%(I1%,S6%) 880 B3$=B$+RIGHT$(S$(I3%),I2%+1%) 890 B3$=LEFT$(S$(I3%),I2%)+B3$ : S$(I3%)="" 900 GOSUB 1280 : GOTO 950 910 I1%=S%(S%+1%,1%) : I3%=I1%/S6% 920 I4%=S6%-LEN(S$(I3%)) : I5%=LEN(B$) 930 IF I5%>I4% THEN S$(I3%)=S$(I3%)+LEFT$(B$,I4%) : B$=RIGHT$(B$,I4%+1%) : I3%=I3%+1% : GOTO 920 940 S$(I3%)=S$(I3%)+B$ 950 S%=S%+1% 960 FOR J%=S% TO I% STEP -1% 970 S%(J%+1%,0%)=S%(J%,0%) 980 S%(J%+1%,1%)=S%(J%,1%)+B% 990 NEXT J% : S%(I%,0%)=L% : RETURN 1000 R%=0% : GOSUB 1390 1010 B1$="" : IF I%=-1% THEN RETURN 1020 B1$="" : I1%=S%(I%,1%) 1030 I1%=S%(I%,1%) : I2%=S%(I%+1%,1%) 1040 I3%=I1%/S6% : I4%=I2%/S6% 1050 IF I3%=I4% THEN 1090 1060 B1$=B1$+RIGHT$(S$(I3%),FNM%(I1%,S6%)+1%) 1070 I1%=(I3%+1%)*S6% 1080 GOTO 1040 1090 B1$=B1$+MID$(S$(I3%),FNM%(I1%,S6%)+1%,I2%-I1%) 1100 R%=-1% : N4%=L% : RETURN 1110 GOSUB 1390 : IF I%=-1% THEN RETURN 1120 I1%=S%(I%,1%) : I2%=S%(I%+1%,1%) : I5%=I2%-I1% 1130 FOR J%=I% TO S% 1140 S%(J%,0%)=S%(J%+1%,0%) 1150 S%(J%,1%)=S%(J%+1%,1%)-I5% 1160 NEXT J% 1170 S%=S%-1% 1180 I3%=I1%/S6% : I4%=I2%/S6% 1190 IF I3%=I4% THEN 1260 1200 I6%=S6%-LEN(S$(I3%)) : I7%=LEN(S$(I4%)) 1210 IF I6%S5% THEN 1360 ELSE 1280 1300 I6%=S8%+S6%-B3% 1310 IF I6%S6% AND I3%S6% THEN 1340 1370 IF B3%>0% THEN S$(I3%)=B3$ 1380 RETURN 1390 IF L%>S%(S%,0%) THEN 1420 1400 FOR I%=1% TO S% : S1%=S%(I%,0%) : IF S1%>=L% THEN IF S1%=L% THEN RETURN ELSE 1420 1410 NEXT I% 1420 I%=-1% : RETURN 1430 N1%=1% : N2%=32767% 1440 IF B$="" THEN RETURN 1450 GOSUB 1610 1460 IF N%=-1% THEN 1490 1470 IF N%<0% THEN B$="x" : RETURN 1480 N1%=N% : IF B$="" THEN N2%=N1% : RETURN 1490 C$=LEFT$(B$,1%) : IF C$<>"-" AND C$<>"," THEN RETURN 1500 B$=RIGHT$(B$,2%) 1510 IF B$="" THEN RETURN 1520 GOSUB 1610 : N2%=N% : RETURN 1530 B%=LEN(B$) 1540 FOR I%=B% TO 1% STEP -1% 1550 C$=MID$(B$,I%,1%) 1560 C%=ASC(C$) 1570 IF C%>95% THEN C$=CHR$(C% AND 223%) 1580 IF C$=" " THEN C$="" 1590 B$=LEFT$(B$,I%-1%)+C$+RIGHT$(B$,I%+1%) 1600 NEXT I% : RETURN 1610 N%=-1% : N9%=0% : I2%=0% 1620 I%=ASC(B$)-48% 1630 IF I%<0% OR I%>9% THEN IF I2%=0% OR N9%=0% THEN N%=-1% : RETURN ELSE N%=N9% : RETURN 1640 IF N9%>3200% THEN N%=-2% : RETURN 1650 N9%=N9%*10%+I% : I2%=-1% : B$=RIGHT$(B$,2%) : GOTO 1620 1660 REM Next 1670 IF S%(S%,0%)N4% THEN N4%=S%(I%,0%) : RETURN 1700 NEXT I% 1710 N4%=-1% : RETURN 1720 N1%=1% : N2%=32767% 1721 ONERRORGOTO 1940 : PREPARE B$ ASFILE 1% : ONERRORGOTO 0 1722 IF F4% THEN FOR I=1 TO 1000 : NEXT I 1725 F3%=1% : GOSUB 1740 : IF NOT F4% THEN 1735 1730 ; #F3%CHR$(0%); : IF B0%=PEEK(B%) THEN 1730 1735 FOR I=1 TO 1000 : NEXT I : CLOSE 1% : RETURN 1740 N4%=N1%-1% : X1%=0% : X2%=1% : B%=65021% 1750 I%=X2% : GOSUB 1660 : X2%=I% 1760 IF N4%<0% OR N4%>N2% THEN RETURN 1770 L%=N4% : GOSUB 1010 : IF F2% THEN B1$=RIGHT$(NUM$(N4%),2%)+" "+B1$ 1780 IF F4% THEN IF LEN(B1$)>78% THEN ; L%B1$ : ; "[r f|r l}ng, max 78 tkn" : RETURN 1790 X1%=X1%+1% : IF X1%>20% AND F3%=0% THEN GET A$ : IF A$=CHR$(13%) THEN RETURN 1795 B0%=PEEK(B%) : ; #F3%B1$ : IF NOT F4% THEN 1750 1797 B1%=PEEK(B%) : IF B1%<>B0% THEN B0%=B1% : FOR I=1 TO 1000 : NEXT I 1800 GOTO 1750 1810 GOSUB 1820 : GOTO 150 1820 ONERRORGOTO 1940 1830 OPEN B$ ASFILE 1% : IF F6% GOSUB 510 1840 N5%=10% 1850 ONERRORGOTO 1930 1860 INPUTLINE #1,B$ 1870 B$=LEFT$(B$,LEN(B$)-2%) 1880 IF F4% THEN IF RIGHT$(B$,LEN(B$))=" " THEN B$=LEFT$(B$,LEN(B$)-1%) : GOTO 1880 1890 L%=1% 1900 IF F4% THEN L%=N5% : N5%=N5%+10% ELSE GOSUB 1610 : L%=N% : B$=RIGHT$(B$,2%) 1910 IF N%<0% AND NOT F4% THEN ; "Radnummer saknas" ELSE GOSUB 820 1920 GOTO 1860 1930 CLOSE 1% : ONERRORGOTO 0 : IF ERRCODE=34 THEN RETURN 1940 ; : ; "Det blev: ERROR";ERRCODE : ; CHR$(7%) : RETURN