10 REM ............................... 20 REM : En simpel ordbehandlare : 30 REM : till ABC80 f|r de som n|jer : 40 REM : sig med 40 teckenssk{rm. : 50 REM : Programmet kr{ver ( I think): 60 REM : mer {n 16K ram. Diskdrive {r: 70 REM : en f|rdel. : 80 REM : Av & med Anders Umeg}rd : 90 REM : ** 4396 ** : 91 REM : Har du eventuella synpunkter: 92 REM : eller (f|rst}eligt nog) : 93 REM : klagom}l, s} finns jag p} : 94 REM : telefon-nummer 021-356429 : 95 REM :_____________________________: 100 POKE 65408%,205%,147%,2%,235%,110%,38%,0%,201% 110 DIM B$(150) : H%=39% 120 DATA "Move crs. _W _Z _A _S _Q _X _T","_D(el) _^(Insert)","_E(DelLn) _R(InsLn)" 130 DATA "_G(raphics) _J(Non Graphics","_\(Search) _F(Wordrap)","_B(Change letter) _Y(Centre)" 140 DATA "@ This HELP-window","_P To MENY","Have a good time!" 150 Q2$="Avstav" : S1=1 160 R=1 : K=0 170 S4=1 180 GOTO 1090 190 ; CHR$(12) 200 ; CUR(0,K)"" 210 IF S1<1 THEN S1=1 220 U4=1 230 K4=((S1-1)*21) : K4=K4-1 : IF S1>1 THEN K4=K4+2 240 IF K4<0 THEN K4=1 250 FOR J=K4 TO (K4+20) : ; CUR(U4,-1)B$(J) : U4=U4+1 : NEXT J 260 Q9=0 : R8=5 270 E4$="0....5...10...15...20...25...30...35..39" 280 ; CUR(0,0)LEFT$(E4$,H%+1)+SPACE$(39-H%) 290 ; CUR(0,K)"" 300 ; CUR(R,K); : GET R$ 310 IF ASC(R$)<32 THEN 390 320 ; CUR(R,K)R$ : K=K+1 330 IF ((S1-1)*21)+R>R1 THEN R1=R+((S1-1)*21) 340 L=R1 350 IF K>H% AND R<21 THEN K=0 : R=R+1 : GOTO 3180 360 IF R=21 AND K>H% THEN 3770 370 Q9=Q9+1 380 GOTO 590 390 IF R$=CHR$(23) THEN R=R-1 : IF R<1 THEN 3770 400 IF R$=CHR$(26) THEN R=R+1 : IF R>21 THEN 3770 410 IF R$=CHR$(1) XOR R$=CHR$(8) THEN K=K-S4 : IF K<0 THEN 3990 420 IF ASC(R$)=0 THEN 1640 430 IF ASC(R$)=25 THEN 2430 440 IF S4<.1 THEN S4=1 450 IF ASC(R$)=20 THEN E9=E9 : ONERRORGOTO 460 : ; CUR(22,1)"Ny stegl{ngd :"; : INPUT S4 460 IF ASC(R$)=24 THEN R=21 : K=0 470 IF ASC(R$)=28 THEN 2170 480 IF ASC(R$)=6 THEN 920 490 IF R$=CHR$(19) XOR R$=CHR$(9) THEN K=K+S4 : IF K>H% THEN T=T : R=R+1 : IF R>21 THEN 3770 ELSE K=0 500 IF R$=CHR$(13) THEN R=R+1 : IF R>21 THEN 3770 ELSE K=0 510 IF ASC(R$)=16 THEN 950 520 IF ASC(R$)=4 THEN 1290 530 IF ASC(R$)=30 THEN 1390 540 IF ASC(R$)=5 THEN 2870 550 IF ASC(R$)=18 THEN 2610 560 IF ASC(R$)=7 THEN 2810 570 IF ASC(R$)=10 THEN 2840 580 IF ASC(R$)=2 THEN 3050 590 IF ASC(R$)=17 THEN R=1 : K=0 : OUT 6,0,6,121 600 ; CUR(22,1)"Sida:";S1;" Rader:";R1;"(";R;K;")"; 610 IF Q2$="Avstav" THEN E5$="Word" ELSE E5$=Q2$ 620 IF R+S1*21>198 THEN R=R-1 630 ; E5$+" " : OUT 6,0,6,121 : IF R>R8 THEN R8=R 640 GOTO 270 650 REM *** Byt ut ord *** 660 ; CHR$(12) : Q3=0 670 ; "Ord att byta ut:" 680 INPUTLINE Z$ : Z$=LEFT$(Z$,LEN(Z$)-2) 690 ; CUR(5,0)"Nytt ord :" 700 INPUTLINE X$ : X$=LEFT$(X$,LEN(X$)-2) 710 IF LEN(X$)>LEN(Z$) X$=LEFT$(X$,LEN(X$)-1) 720 IF LEN(X$)>>>>>>>>>>> Jag sorterar ! <<<<<<<<<<" 870 FOR I%=1% TO R1 880 FOR J%=I% TO R1 890 IF B$(J%)1 AND NOT LEN(A6$)>2 THEN 600 ELSE IF Q9<1 THEN 1070 ELSE IF A7>0 THEN A7=A7 ELSE A7=1 960 A$="" : L=0 : FOR I=A7 TO R8 970 ; CUR(22,1)"---------- Working ------" 980 FOR I1=H%+1 TO 1 STEP -1 : ; CUR(I,I1-1); : IF CALL(65408%)>32 THEN 990 ELSE NEXT I1 990 FOR J=0 TO I1+1 1000 ; CUR(I,J); 1010 A$=A$+CHR$(CALL(65408%)) 1020 NEXT J : B$(I+((S1-1)*21))=LEFT$(A$,I1) : A$="" : NEXT I 1030 W6=0 1040 FOR I=1 TO R1 1050 W6=W6+LEN(B$(I)) 1060 NEXT I 1070 IF A6$="INS" THEN A6$="-" : GOTO 2640 1080 IF A6$="S\K" THEN A6$="" : GOTO 2410 1090 ; CHR$(12)"MENY" 1100 ; "S - Spara " 1110 ; "F - ny Fil " 1120 ; "E - Editor " 1130 ; "H - H|germ." 1140 ; "B - Byt ut ord" 1150 ; "A - Avsluta" 1160 ; "O - sOrtera" 1170 ; : ; : ; "Textstorlek :";INT(W6);" bytes" 1180 ; : ; : GET R$ 1190 ; STRING$(40,ASC(R$)); 1200 ; "R{tt val (J/n) ?"; : GET W$ : IF W$="N" XOR W$="n" THEN 1090 1210 IF R$="S" XOR R$="s" THEN 1530 1220 IF R$="F" XOR R$="f" THEN 1940 1230 IF R$="E" XOR R$="e" THEN 190 1240 IF R$="A" XOR R$="a" THEN END 1250 IF R$="H" XOR R$="h" THEN 3690 1260 IF R$="B" XOR R$="b" THEN 650 1270 IF R$="o" XOR R$="O" THEN 860 1280 GOTO 1090 1290 R2=R1 : R1=R : K1=K : REM * DEL _D * 1300 FOR J%=K TO H%-1% 1310 ; CUR(R,J%+1%); 1320 A$=CHR$(CALL(65408%)) 1330 ; CUR(R,J%)A$ 1340 NEXT J% 1350 ; CUR(R,H%)" "; 1360 IF R>R8 THEN R8=R 1370 R1=R2 : Q9=2 1380 GOTO 590 1390 REM ** Insert _^ ** 1400 A$="" 1410 FOR J%=K TO H%-1% 1420 ; CUR(R,J%); 1430 A$=A$+CHR$(CALL(65408%)) 1440 NEXT J% 1450 ; CUR(R,K+1)A$ 1460 ; CUR(R,K)" " 1470 Q9=4 : IF R>R8 THEN R8=R 1480 GOTO 590 1490 ; CUR(R,K)" " 1500 Q9=4 1510 IF R>R8 THEN R8=R 1520 GOTO 590 1530 REM *** Spara *** 1540 ; : ; "(spara) fil ("T$")"; : INPUT I$ 1550 IF LEN(I$)<2 THEN I$=T$ 1560 T$=I$ 1570 Q1=INSTR(1,T$,".") : IF Q1=0 THEN T$=T$+".TXT" : ; T$ 1580 ONERRORGOTO 4080 : PREPARE T$ ASFILE 3 1590 FOR J=1 TO R1 1600 ; #3,B$(J) 1610 REM IF J/21=INT(J/21) THEN ; #3,"0" 1620 NEXT J 1630 CLOSE 3 : GOTO 1090 1640 REM *** Help *** 1650 FOR I=1 TO 6 : I$(I)="" : NEXT I 1660 [$="" 1670 FOR I%=10% TO 15% 1680 FOR J%=5% TO 38% 1690 ; CUR(I%,J%); : I$(I%-9)=I$(I%-9)+CHR$(CALL(65408%)) 1700 NEXT J% : NEXT I% 1710 ; CUR(10,5)"+--------------------------------+" 1720 FOR I%=11% TO 14% : ; CUR(I%,5%)"!"+SPACE$(33) : ; CUR(I%,38%)"!" 1730 NEXT I% 1740 ; CUR(15,5)"+--------------------------------+" 1750 ; CUR(12,20)"HELP _@" 1760 RESTORE 1770 IF INP(56)>127 THEN 1780 ELSE 1770 1780 R$=CHR$(INP(56)-128) 1790 IF ASC(R$)=0 THEN 1890 1800 ONERRORGOTO 1760 1810 READ A$ 1820 A$=A$+STRING$(31-LEN(A$),32) 1830 IF [$="" THEN [$=A$ 1840 ; CUR(13,8)A$ 1850 [$=A$ 1860 ; CUR(13,38%)"!" 1870 FOR ]9=1 TO 100 : NEXT ]9 1880 GOTO 1770 1890 FOR I%=10% TO 15% 1900 ; CUR(I%,5%)I$(I%-9) 1910 NEXT I% 1920 GET R$ 1930 GOTO 600 1940 REM *** H{mta fil *** 1950 ; : ; "Editorn kommer att t|mmas. Absolut s{ker (J/n) ????"; 1960 GET I$ : IF I$="N" XOR I$="n" THEN 1090 1970 FOR I=1 TO R1 : B$(I)="" : NEXT I : R1=0 1980 W6=0 1990 J=0 2000 R9$=T$ 2010 ; : ; "(h{mta) fil "; : INPUT T$ 2020 IF LEN(T$)<2 THEN T$=R9$ : GOTO 1090 2030 Q1=INSTR(1,T$,".") : IF Q1=0 THEN T$=T$+".TXT" : ; T$ 2040 ONERRORGOTO 2010 : OPEN T$ ASFILE 3 2050 J=J+1 2060 ONERRORGOTO 2160 2070 INPUTLINE #3,B$(J) 2080 B$(J)=LEFT$(B$(J),LEN(B$(J))-2) 2090 IF LEN(B$(J))>41 THEN B$(J+1)=RIGHT$(B$(J),41) : B$(J)=LEFT$(B$(J),40) : W6=W6+40 : J=J+1 : R1=R1+1 2095 IF LEN(B$(J))>H% THEN H%=LEN(B$(J)) : IF H%>39 THEN H%=39 2100 W6=W6+LEN(B$(J)) 2110 R1=R1+1 2120 ; CUR(20,1)"Antal inl{sta tecken:";W6 2130 IF J>140 THEN ; " Maximumgr{nsen {r f|rbig}ngen " : GET P$ : GOTO 1090 2140 ; CUR(21,1)B$(J) 2150 GOTO 2050 2160 GOTO 1090 2170 REM *** S|k efter TXT *** 2180 ; CUR(22,0)SPACE$(39) 2190 ; CUR(22,1)"Ange s|kord:"; : INPUTLINE A$ : A$=LEFT$(A$,LEN(A$)-2) 2200 ; CUR(22,1)SPACE$(38) 2210 IF LEN(A$)<2 THEN 600 2220 REM Q9=7 2230 FOR I=1 TO R1 2240 IF LEN(B$(I))21 THEN R=I-((Q2-1)*21) ELSE R=I 2350 ; CUR(22,0); : GET R$ 2360 ; CHR$(7); 2370 A6$="S\K" 2380 R8=21 2390 GOTO 950 2400 K=0 2410 IF R<1 THEN R=21 : S9=S9-1 2420 ; CUR(22,0)SPACE$(39) : K=I7-1 : S1=S9 : GOTO 190 2430 REM *** Centraliseringsunktion*** 2440 A$="" 2450 FOR I%=0% TO H% 2460 ; CUR(R,I%); 2470 IF LEN(A$)<1 AND CALL(65408%)=32 THEN 2490 2480 A$=A$+CHR$(CALL(65408%)) 2490 NEXT I% 2500 FOR J%=LEN(A$) TO 1 STEP -1% 2510 IF MID$(A$,J%,1)=" " THEN A$=LEFT$(A$,J%-1) ELSE 2530 2520 NEXT J% 2530 ; CUR(R,0)SPACE$(40) 2540 REM -- NU ! 2550 M4=H%+1-LEN(A$) 2560 M3=INT(M4/2) 2570 ; CUR(R,M3)A$ 2580 Q9=7 2590 IF R>R8 THEN R8=R : Q9=7 2600 GOTO 600 2610 REM Insrad ? 2620 A7=20 2630 A6$="INS" : GOTO 950 2640 A7=0 2650 A7=0 2660 FOR I%=21% TO R+1% STEP -1% 2670 A$="" 2680 FOR J%=0% TO H% 2690 ; CUR(I%-1%,J%); 2700 A$=CHR$(CALL(65408%)) 2710 ; CUR(I%,J%)A$ 2720 NEXT J% 2730 NEXT I% 2740 ; CUR(R,0)SPACE$(40) 2750 FOR J%=R1+1 TO ((I%+1%)+((S1-1)*21)) STEP -1 2760 IF J%<1 THEN 2770 ELSE B$(J%)=B$(J%-1) 2770 NEXT J% 2780 R1=R1+1 2790 R8=21 : Q9=7 : GOTO 590 2800 IF A6$="AVSTAV" THEN 3230 2810 REM *** GRAFIK *** 2820 Q9=4 : IF R>R8 THEN R8=R 2830 ; CUR(R,K)CHR$(151); : K=K+1 : GOTO 590 2840 REM *** No grafik *** 2850 Q9=4 : IF R>R8 THEN R8=R 2860 ; CUR(R,K)CHR$(135); : K=K+1 : GOTO 590 2870 REM *** Delrad *** 2880 FOR I%=R+1% TO 21% 2890 A$="" 2900 FOR J%=0% TO H%+1% 2910 ; CUR(I%,J%); 2920 A$=CHR$(CALL(65408%)) 2930 ; CUR(I%-1%,J%)A$ 2940 NEXT J% 2950 NEXT I% 2960 R5=R1 2970 ; CUR(21,0)SPACE$(40) 2980 ; CUR(21,0)B$((I%+((S1-1)*21))) 2990 FOR J%=(I%+((S1-1)*21)) TO R1 3000 B$(J%)=B$(J%+1) 3010 NEXT J% 3020 B$(R1)="" 3030 R1=R1-1 : IF ((R+((S1-1)*21)))>R1 THEN R1=R1+1 3040 R8=21 : Q9=7 : GOTO 590 3050 REM *** V{xla till stora tecken *** 3060 FOR I=0 TO H% 3070 ; CUR(R,I); 3080 A$=CHR$(CALL(65408%)) 3090 IF ASC(A$)=95 THEN 3130 3100 IF ASC(A$)<64 THEN 3170 3110 IF ASC(A$)<95 THEN 3160 3120 ; CUR(R,I)CHR$(ASC(A$)-32) 3130 NEXT I 3140 IF R>R8 THEN R8=R 3150 Q9=4 : GOTO 590 3160 ; CUR(R,I)CHR$(ASC(A$)+32) 3170 GOTO 3130 3180 REM *** Avstavning *** 3190 A$="" 3200 R=R-1 3210 IF Q2$="NO" THEN R=R+1 : GOTO 600 3220 P$="" 3230 REM 3240 FOR I%=H% TO 1% STEP -1% 3250 ; CUR(R,I%); 3260 IF CALL(65408%)<33 THEN 3300 3270 A$=A$+CHR$(CALL(65408%)) 3280 NEXT I% 3290 R=R+1 : GOTO 600 3300 FOR L%=LEN(A$) TO 1% STEP -1% : REM *** Spegelv{nda ordet *** 3310 P$=P$+MID$(A$,L%,1) 3320 NEXT L% : A$=P$ 3330 Q2=0 : IF ASC(A$)<33 THEN 3360 3340 IF ASC(A$)=63 THEN R=R+1 : K=0 : GOTO 590 3350 IF ASC(A$)<38 XOR ASC(A$)=48 THEN R=R+1 : K=0 : GOTO 590 3360 ; CUR(R+1,0)A$ 3370 ; CUR(R,I%)SPACE$(40-I%) : G$="" : IF Q2$="Avstav" THEN 3650 3380 FOR J%=0% TO I% : ; CUR(R,J%); : IF CALL(65408%)=32 THEN Q2=Q2+1 3390 NEXT J% 3400 Q2%=INT((LEN(A$)+2)/Q2) 3410 FOR K%=1% TO H% : REM H%-1% 3420 ; CUR(R,K%); : IF CALL(65408%)<33 THEN FOR J%=1% TO Q2% ELSE 3450 3430 FOR J1%=H% TO K%+J% STEP -1% : ; CUR(R,J1%-1%); : Q$=CHR$(CALL(65408%)) : ; CUR(R,J1%)Q$ 3440 NEXT J1% : NEXT J% : K%=K%+Q2%+1% 3450 NEXT K% 3460 REM 3470 P9%=1% 3480 REM 3490 ; CUR(R,H%); : IF CALL(65408%)>32 THEN 3650 3500 REM 3510 L%=2% 3520 FOR J%=H% TO 0% STEP -1% 3530 L%=L%+1% : ; CUR(R,J%); : IF CALL(65408%)=32 AND L%>P9% THEN 3590 3540 T9%=T9%+1% 3550 IF CALL(65408%)=32 THEN L%=0% 3560 IF LEN(A$)>15 OR P9%>10 THEN 3650 3570 IF P9%<1 THEN 3650 3580 NEXT J% : P9%=P9%+1% : GOTO 3480 3590 IF P9%>10% THEN 3650 ELSE FOR L1%=39% TO J%+1% STEP -1% 3600 ; CUR(R,L1%-1); : Q$=CHR$(CALL(65408%)) : ; CUR(R,L1%)Q$ 3610 NEXT L1% 3620 ; CUR(R,H%); : IF CALL(65408%)>32 THEN 3650 3630 J%=J%-2% : GOTO 3580 3640 REM 3650 K=LEN(A$) 3660 T9%=0% : L%=0% 3670 R=R+1 3680 GOTO 600 3690 REM *** [ndra H|germarginal *** 3700 ; : ; : ; 3710 IF W6>0 THEN ; "Vg. avsluta detta arbete f|rst !" : GET R$ : GOTO 1090 3720 ONERRORGOTO 3730 : ; "Ny gr{ns f|r h|germarginal "; : INPUT H% : IF H%<1% THEN 3690 : GOTO 1090 3730 H%=39% : GOTO 1090 3740 Q2=0 3750 ; "Drivrutin till TXT: ej funnen !"; : GET R$ : GOTO 1090 3760 ; "SERIE ej inladdat ! "; : GET R$ : GOTO 1090 3770 REM *** Ny sida *** 3780 IF R>20 THEN Q3=1 ELSE Q3=-1 3790 IF S1<2 AND R<2 THEN R=R+1 : GOTO 590 3800 IF S1>7 AND R>20 THEN R=R-1 : GOTO 590 3810 ONERRORGOTO 0 3820 IF Q9<1 THEN 3940 3830 FOR J=1 TO R8 3840 A$="" 3850 ; CUR(22,1)"---------- Working ------" 3860 FOR I1=40 TO 1 STEP -1 3870 ; CUR(J,I1-1); : IF CALL(65408%)>32 THEN 3880 ELSE NEXT I1 3880 FOR I=0 TO I1+9 3890 ; CUR(J,I); 3900 A$=A$+CHR$(CALL(65408%)) 3910 NEXT I 3920 B$(J+((S1-1)*21))=LEFT$(A$,I1) 3930 NEXT J 3940 S1=S1+Q3 3950 IF R<2 THEN R=21 ELSE R=1 3960 IF K<0 THEN K=H% ELSE K=0 3970 GOTO 190 3980 GOTO 590 3990 REM *** ]t <- *** 4000 IF R<2 THEN 3770 4010 R=R-1 : K=H% : GOTO 590 4020 GOTO 590 4030 REM +---------------------+ 4040 REM ! PLOTORD.BAC ! 4050 REM ! ver 1.46 ! 4060 REM ! (c) 1988, Au ! 4070 REM +---------------------+ 4080 ; "Diskfel ";ERRCODE; : GET R$ : GOTO 1090