10 REM . SAVE PALINDRO 20 REM 30 REM Redigera palindrom rader. 40 REM 50 REM av David Andersson 60 REM medlem 5201 70 REM 80 REM 1985-06-19 90 REM 100 REM INIT DATA 110 DIM A$(9%) : REM 9 ST RADER 120 FOR A%=1% TO 9% : A$(A%)=' ' : NEXT A% 130 A1%=1% : REM AKTUELL RAD 140 A2%=1% : REM AKTUELL POSITION I RAD 200 REM INIT SCREEN 210 ; CHR$(12%);' *** ABC80 Palindrom Editor ***' 220 FOR X%=1% TO 9% 230 ; CUR(X%*2%-1%,0%)'RAD'X%':'; 240 GOSUB 900 250 NEXT X% 260 ; CUR(19%,0%); 270 ; 'Flytta cursorn .... <-,->,CTRL-W,A,S,Z' 280 ; 'Kopiera rad CTRL-K Radera tkn CTRL-D,U' 290 ; 'Ladda fil CTRL-L Spara p} fil CTRL-P' 300 REM MAIN LOOP 310 X%=A1%*2%-1% : Y%=A2% : IF Y%>LEN(A$(A1%)) Y%=LEN(A$(A1%))+1% 320 IF Y%>33% Y%=Y%-33% : X%=X%+1% 330 ; CUR(X%,Y%+6%); 340 GET G$ : G%=ASC(G$) 350 IF G%>95% G%=G%-32% : G$=CHR$(G%) : REM STORA BOKST[VER 360 X%=A1% : Y%=A2% 370 IF G%=12% GOSUB 1600 : GOTO 200 380 IF G%=16% GOSUB 1300 : GOTO 200 390 IF G%=11% GOSUB 1200 : GOTO 300 400 IF G%=17% A1%=1% : A2%=1% 410 IF G%=22% A2%=LEN(A$(A1%))+1% 420 IF G%=24% A2%=1% 430 IF G%=23% IF A1%>1% A1%=A1%-1% 440 IF G%=26% IF A1%<9% A1%=A1%+1% 450 IF G%=19% OR G%=9% GOSUB 800 : IF A2%1% A2%=A2%-1% 470 IF G%=13% A2%=1% : IF A1%<9% A1%=A1%+1% ELSE A1%=1% 480 IF G%=4% GOSUB 700 490 IF G%=21% IF A2%>1% A2%=A2%-1% : Y%=A2% : GOSUB 700 500 IF G%>=32% AND LEN(A$(A1%))<64% GOSUB 600 510 GOTO 300 600 REM  610 GOSUB 800 620 GOSUB 1000 630 Y%=LEN(A$(A1%))-A2%+1% 640 IF Y%<>A2% Y%=Y%-(Y%>A2%) : GOSUB 1000 : IF A2%>Y% A2%=A2%+1% 650 A2%=A2%+1% 660 GOSUB 900 670 GOTO 300 700 REM CTRL-D 710 GOSUB 800 720 IF A2%>LEN(A$(A1%)) RETURN 730 GOSUB 1100 740 Y%=LEN(A$(A1%))-A2%+1% : Y%=Y%-(A2%>Y%) : IF Y%<>A2% GOSUB 1100 : IF Y%LEN(A$(A1%)) A2%=LEN(A$(A1%))+1% 820 RETURN 900 REM VISA EN RAD 910 ; CUR(X%*2%-1%,7%); 920 IF LEN(A$(X%))<33% ; A$(X%)TAB(79%); : RETURN 930 ; LEFT$(A$(X%),33%) : ; CUR(X%*2%,7%)RIGHT$(A$(X%),34%)TAB(39%); 940 RETURN 1000 REM INSERT 1010 A$(X%)=LEFT$(A$(X%),Y%-1%)+G$+RIGHT$(A$(X%),Y%) 1020 RETURN 1100 REM DELETE 1110 A$(X%)=LEFT$(A$(X%),Y%-1%)+RIGHT$(A$(X%),Y%+1%) 1120 RETURN 1200 REM KOPIERA 1210 ; CUR(23%,0%)'Kopiera rad'A1%' till:'; 1220 GET G$ : IF G$<'1' OR G$>'9' THEN ; CHR$(7%); : GOTO 1260 1230 X%=VAL(G$) 1240 A$(X%)=A$(A1%) 1250 GOSUB 900 1260 ; CUR(23%,0%)TAB(39%); 1270 RETURN 1300 REM SPARA TILL FIL 1310 FOR X%=1% TO 9% : IF A$(X%)=' ' NEXT X% : ; CUR(23%,0%)'Inga rader att spara'CHR$(7%); : GOTO 1530 1320 ; CUR(23%,0%)'Spara rader p} fil:'; 1330 INPUT G$ : IF G$='' ; CHR$(7%) : RETURN 1340 ONERRORGOTO 1500 1350 PREPARE G$ ASFILE 1% 1360 FOR X%=1% TO 9% 1370 ; #1%,A$(X%) 1380 NEXT X% 1390 CLOSE 1% 1400 RETURN 1500 REM 1510 ; CUR(23%,0%)CHR$(7%)'ERR 'ERRCODE, 1520 CLOSE 1% 1530 FOR X%=0% TO 5000% 1540 IF PEEK(65013%)=0% NEXT X% 1550 POKE 65013%,0% : REM GL\M EV. TANGENTTRYCKNING 1560 RETURN 1600 REM LADDA FR]N FIL 1610 ; CUR(23%,0%)'Ladda rader fr}n fil:'; 1620 INPUT G$ : IF G$='' ; CHR$(7%) : RETURN 1630 ONERRORGOTO 1700 1640 OPEN G$ ASFILE 1% 1650 ONERRORGOTO 1740 1660 FOR X%=1% TO 9% 1670 INPUTLINE #1%,G$ 1680 A$(X%)=LEFT$(G$,LEN(G$)-2%) 1690 NEXT X% : GOTO 1720 1700 REM 1710 IF ERRCODE<>34% GOTO 1500 1720 CLOSE 1% 1730 RETURN 1740 REM 1750 GOTO 1500