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   ON ERROR GOTO 1010 : INPUT F$
1030   ; CUR(M%,0%) SPACE$(K2%-1%) CUR(M%,0%);
1040   IF F$="" OR F$="." THEN L%=-1% : RETURN 
1050   ON ERROR GOTO 1150 : OPEN F$ AS FILE 1%
1060   FOR I%=0% TO R3%
1070     INPUT LINE #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 " ERRCODE CHR$(7%);
1190   ON ERROR GOTO 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$(ASCII(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   ON ERROR GOTO 1410 : INPUT F2$
1430   IF F2$="." THEN F2$=F$
1440   ; CUR(M%,0%) SPACE$(K2%-1%) CUR(M%,0%);
1450   ON ERROR GOTO 1550 : PREPARE F2$ AS FILE 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   ON ERROR GOTO 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%