1 REM Ins{nd av Kristoffer Eriksson SYSOP <5357> 1986-12-16 03.09.48 (DUMP)
100 REM SCROLLED 1.02
110 REM - Editor med sidledes scroll
120 REM F|r ABC80, ABC800,802,806
130 REM Av Kristoffer Eriksson <5357>
140 REM Fri kopiering endast f|r
150 REM ickekommersiellt bruk
160 REM
170 REM 1.00 861124 <5357> Original
180 REM 1.02 861216 <5357>,<5258> ABC80-anpassning
190 REM
200 REM Parametrarna anpassar sig efter
210 REM maskintyp, radl{ngd och minne.
220 REM
290 REM Trimbara parametrar
300 V$="SCROLLED Ver 1.02"
310 B$=CHR$(28%,13%,8%,9%)+CHR$(1%,19%,17%,5%)+CHR$(23%,26%,20%,2%)+CHR$(22%,18%,4%,6%)
320 B$=B$+CHR$(21%,14%) : REM Tangenter
330 REM Stopp, Return, V{nster, H|ger, V{nster2, H|ger2, F|rst, Sist, Upp,
340 REM Ned, Topp, Botten, Insertmode, Radera, Dela, Sammanfoga, Sidupp, Sidned
350 K3%=120% : REM Max radl{ngd i minnet
360 R2%=22% : REM H|gsta textsk{rmrad
370 M%=23% : REM Meddelanderad
380 C%=-1% : REM Insert/\verskrivn -1/0
390 A%=PEEK(27%)=195% : REM ABC80?
400 IF A% THEN K2%=PEEK(472%) ELSE K2%=PEEK(65364%) : REM Radl{ngd p} sk{rm
410 IF A% THEN R3%=PEEK(65064%)-PEEK(65057%)-3% ELSE R3%=PEEK(65350%)-PEEK(65291%)-4%
420 R3%=SWAP%(R3%)/(K3%+6%)-1% : REM Max rad
430 REM
440 REM Initiering
450 \%=0% : REM Rad |verst p} sk{rm
460 V%=1% : REM Kolumn till v{nster p} sk{rm
470 R%=0% : REM Aktuell minnesrad
480 K%=1% : REM Aktuell kolumn
490 L%=-1% : REM H|gsta anv{nda rad
500 [%=0% : REM [ndrad fil
510 M1%=K2%-10% : M2%=K2%-6% : REM Pos f|r rad o kolumn p} rad M
520 DIM T$(R3%)=K3% : REM Text
530 DIM F$=16%,F2$=16% : REM Filnamn
540 DIM G$=1% : REM Tangent
550 GOSUB 600
560 ; CUR(22%,0%);
570 END
580 REM
590 REM MAIN
600 GOSUB 800 : REM Infosida
610 GOSUB 1000 : REM Fil in
620 IF F$="." THEN RETURN
630 FOR I%=L%+1% TO R3% : T$(I%)=SPACE$(K3%) : NEXT I%
640 FOR X3%=0% TO 0% STEP 0%
650 GOSUB 1700 : REM Visa sida
660 GOSUB 2000 : REM Editera
670 GOSUB 800 : REM Infosida
680 GOSUB 1300 : REM Spara fil
690 IF G$<>"F" THEN RETURN
700 NEXT X3%
780 REM
790 REM Infosida
800 ; CHR$(12%)V$
810 ; CUR(12%,0%);
820 ; "<-- V{nster --> H|ger"
830 ; "CTRL-A V{nster(2) CTRL-S H|ger(2)"
840 ; "CTRL-Q Radb|rjan CTRL-E Radslut"
850 ; "CTRL-W Upp CTRL-Z Ned"
855 ; "CTRL-U Sida upp CTRL-N Sida ned"
860 ; "CTRL-D Dela rad CTRL-F Sammanfoga rad"
870 ; "CTRL-R Radera"
880 ; "CTRL-V V{xla inskjutning/|verskrivning"
890 ; "CTRL-\ Sluta"
900 RETURN
980 REM
990 REM L{s in fil
1000 FOR X%=0% TO 0% STEP 0%
1010 ; CUR(3%,0%)SPACE$(K2%)CUR(3%,0%)'Filnamn ("."=Slut)';
1020 ONERRORGOTO 1010 : INPUT F$
1030 ; CUR(M%,0%)SPACE$(K2%-1%)CUR(M%,0%);
1040 IF F$="" OR F$="." THEN L%=-1% : RETURN
1050 ONERRORGOTO 1150 : OPEN F$ ASFILE 1%
1060 FOR I%=0% TO R3%
1070 INPUTLINE #1%,T$(I%)
1080 T$(I%)=LEFT$(T$(I%),LEN(T$(I%))-2%)+SPACE$(K3%+2%-LEN(T$(I%)))
1090 NEXT I%
1100 ; CHR$(7%)"Fler {n "R3%" rader!";
1110 L%=R3%
1120 CLOSE 1%
1130 RETURN
1140 REM L{sfel
1150 L%=I%-1%
1160 IF ERRCODE=34% THEN CLOSE 1% : ; F$": "L%+1%" rader."; : RETURN
1170 IF ERRCODE=21% THEN ; "Ny fil: "F$; : L%=-1% : RETURN
1180 ; F$": Felkod "ERRCODECHR$(7%);
1190 ONERRORGOTO 1200 : CLOSE 1%
1200 IF I%>0% THEN RETURN
1210 NEXT X%
1280 REM
1290 REM Spara fil
1300 GOSUB 5000
1310 IF NOT [% THEN ; CUR(3%,0%)"Inga {ndringar." : G$="N" : RETURN
1320 FOR X%=0% TO 0% STEP 0%
1330 FOR X2%=0% TO 0% STEP 0%
1340 ; CUR(3%,0%)SPACE$(40%)CUR(5%,0%)SPACE$(80%);
1350 ; CUR(3%,0%)"Spara? J(a), N(ej), F(orts{tt editera): ";CHR$(8%);
1360 GET G$
1370 G$=CHR$(ASC(G$) AND 223%)
1380 IF G$="N" OR G$="F" THEN ; G$ : RETURN
1390 IF G$<>"J" THEN NEXT X2%
1400 ; G$
1410 ; CUR(5%,0%)'Filnamn'; : IF LEN(F$) THEN ; ' ("."='F$')';
1420 ONERRORGOTO 1410 : INPUT F2$
1430 IF F2$="." THEN F2$=F$
1440 ; CUR(M%,0%)SPACE$(K2%-1%)CUR(M%,0%);
1450 ONERRORGOTO 1550 : PREPARE F2$ ASFILE 1%
1460 FOR I%=0% TO L%
1470 GOSUB 5100 : REM Radl{ngd
1480 ; #1%LEFT$(T$(I%),N%)
1490 NEXT I%
1500 CLOSE 1%
1510 [%=0% : F$=F2$
1520 ; CUR(8%,0%)L%+1%" rader skrivna."
1530 RETURN
1540 REM Skrivfel
1550 ; F2$": ";CHR$(7%);
1560 IF ERRCODE=21% THEN ; "Felaktigt filnamn"; ELSE ; "Felkod "ERRCODE;
1570 ONERRORGOTO 1580 : CLOSE 1%
1580 NEXT X%
1680 REM
1690 REM Visa sida
1700 FOR I%=0% TO R2%
1710 IF I%+\%<=R3% ; CUR(I%,0%)MID$(T$(\%+I%),V%,K2%); ELSE ; CUR(I%,0%)SPACE$(K2%);
1720 NEXT I%
1730 RETURN
1780 REM
1790 REM Visa rad I
1800 IF I%<=R3% THEN ; CUR(I%-\%,0%)MID$(T$(I%),V%,K2%); ELSE ; CUR(I%-\%,0%)SPACE$(K2%);
1810 RETURN
1980 REM
1990 REM Editera
2000 ; CUR(M%,M1%)NUM$(R%+1%)" ";
2010 S%=0%
2020 FOR X%=0% TO 0% STEP 0%
2030 ; CUR(M%,M2%)NUM$(K%)" "CUR(R%-\%,K%-V%);
2040 GET G$
2050 G%=INSTR(1%,B$,G$)
2060 ON G%+1% GOSUB 4000,2200,2290,2410,2610,2400,2600,2800,2900,2500,2700,3000,3100,3200,3300,3400,3600,3800,3900
2070 IF S% THEN GOSUB 1700 : S%=0%
2080 NEXT X%
2090 RETURN
2190 REM Stop
2200 X%=1% : RETURN
2290 REM Return
2300 K%=1%
2310 IF K%