10 CLS:PCLS 20 POKE &HF730,32 30 DEFINT A-Z 40 CLEAR 12800 50 SC$=" .,-" 60 AA=200:DIM A$(AA) 70 IN=0 80 X=1:Y=2:L=0:LM=0 90 LOCATE 1,1:PRINT "--- F1=Help ------------------------ X= Y= L="; 100 LOCATE 40,1,0:PRINTRIGHT$("000"+MID$(STR$(X),2),3);:LOCATE47,1:PRINTRIGHT$("000"+MID$(STR$(Y-1),2),3);:LOCATE54,1:PRINTRIGHT$("000"+MID$(STR$(L+1),2),3); 110 LOCATE 30,1:IF IN THEN PRINT" INS "; ELSE PRINT"-----"; 112 IF INS=0 THEN LOCATE X,Y,1 115 A=PEEK(&HF71D):IF A=255 THEN GOTO 115 120 IF INS=0 THEN LOCATE X,Y,1 ELSE LINE(X*8,Y*16)-STEP(-8,0),0 140 GOSUB 360 150 IF A<=47 THEN GOTO 270 160 IF A=55 THEN A$=" ":GOTO 275 170 IF A=48 THEN GOTO 370 :REM CR 180 IF A=53 THEN GOTO 690 :REM BS 190 IF A>=58 AND A<=67 THEN ON A-57 GOTO 1130,910,530,1030,630,260,660,760,580,800 :REM ROWS 200 IF A=72 THEN GOTO 1160 :REM END LINE 210 IF A>=74 THEN ON A-73 GOTO 1260,1370,260,260,260 :REM Fx 220 IF A=51 THEN GOTO 1200 :REM DEL 230 IF A=52 THEN GOTO 730 :REM INS 240 IF A=49 THEN GOTO 1790 :REM CLS 250 IF A=54 THEN GOTO 1220 :REM TAB 260 BEEP:GOTO 100 270 A$=INKEY$ 275 IF IN THEN PRINTCHR$(&H1C); 280 PRINT A$;:GOSUB 310:X=X+1 283 IF INS=0 THEN 290 285 LINE(X*8,Y*16)-STEP(-8,0),7 290 IF X>64 THEN X=64:GOTO 100 :REM RETURN 300 GOTO 100 310 :REM -------- ENTER CHAR ------- 320 IF X>LEN(A$(L)) THEN A$(L)=A$(L)+SPACE$(X-LEN(A$(L))) 330 IF L>LM THEN LM=L 340 IF IN THEN A$(L)=MID$(A$(L),1,X-1)+A$+MID$(A$(L),X) ELSE MID$(A$(L),X,1)=A$ 345 RETURN 350 :REM ------- DEBUGER ------ 360 LOCATE 20,1:PRINT A;:LOCATE X,Y:RETURN 370 :REM --------- CR -------- 380 IF LM=AA THEN BEEP:GOTO 100 390 IF IN THEN GOTO 410 400 X=1:GOTO 530 410 FOR I=LM TO L STEP -1 420 A$(I+1)=A$(I) 430 NEXT 440 LM=LM+1 450 A$(L)=LEFT$(A$(L),X-1) 460 A$(L+1)=MID$(A$(L+1),X) 470 LOCATE 1,Y:PRINTA$(L); 480 LOCATE X,Y:PRINTCHR$(21); 490 X=1:IF Y=16 THEN GOTO 520 500 Y=Y+1:L=L+1:LOCATE 1,Y:PRINTCHR$(11);A$(L); 510 GOTO 100 520 :REM -------- DOWN -------- 530 IF L=AA THEN BEEP:GOTO 100 540 IF Y<16 THEN GOTO 560 550 LOCATE 1,2,0:PRINTCHR$(30);:LOCATE 1,16:L=L+1:PRINTA$(L);:GOTO 100 560 Y=Y+1:L=L+1:GOTO 100 570 :REM ---------- UP --------- 580 IF L=0 THEN BEEP:GOTO 100 590 IF Y>2 THEN GOTO 610 600 LOCATE 1,2,0:PRINTCHR$(11);:LOCATE 1,2,0:L=L-1:PRINTA$(L);:GOTO 100 610 Y=Y-1:L=L-1:GOTO100 620 :REM -------- LEFT -------- 630 IF X=1 THEN BEEP:GOTO 100 640 X=X-1:GOTO 100 650 :REM -------- RIGHT ------ 660 IF X=64 THEN BEEP:GOTO 100 670 X=X+1:GOTO 100 680 :REM -------- BS -------- 690 IF X=1 THEN BEEP:GOTO 100 700 IF X>LEN(A$(L))+1 THEN X=X-1:GOTO 100 710 X=X-1:LOCATE X,Y:PRINTCHR$(&H1D);:A$(L)=MID$(A$(L),1,X-1)+MID$(A$(L),X+1):GOTO 100 720 :REM ------ INS ------ 730 INS=1-INS 735 IF INS = 1 THEN LOCATE,,0:LINE(X*8,Y*16)-STEP(-8,0),7 ELSE LOCATE,,1 740 GOTO 100 750 :REM ------- PAGE UP ------- 760 IF L<15 THEN L=0 ELSE L=L-15 770 Y=2 780 GOTO 840 790 :REM ------- PAGE DAWN ------- 800 IF L>AA-15 THEN L=AA ELSE L=L+15 810 Y=16 820 GOTO 840 830 :REM ------ REFRESH PAGE ------- 840 CLS 850 FOR I=1 TO 15 860 LOCATE 1,I+1 870 PRINTA$(L-Y+1+I); 880 NEXT 890 GOTO 90 900 :REM -------- WORD BACK ------- 910 IF X=1 THEN GOTO 100 ELSE FOR X=X-1 TO 1 STEP-1 920 IF X>LEN(A$(L)) THEN C$=" " ELSE C$=MID$(A$(L),X,1) 930 IF INSTR(SC$,C$)<>0 THEN GOTO 950 940 NEXT 950 IF X<=1 THEN X=1:GOTO 100 960 FOR X=X TO 1 STEP-1 970 IF X>LEN(A$(L)) THEN C$=" " ELSE C$=MID$(A$(L),X,1) 980 IF INSTR(SC$,C$)=0 THEN GOTO 1000 990 NEXT 1000 X=X+1:IF X<1 THEN X=1 1010 GOTO 100 1020 :REM ------ WORD FORWARD ------- 1030 IF X>=LEN(A$(L)) THEN GOTO 100 1040 FOR X=X TO LEN(A$(L)) 1050 IF INSTR(SC$,MID$(A$(L),X,1))<>0 THEN GOTO 1070 1060 NEXT 1070 IF X>=LEN(A$(L)) THEN GOTO 100 1080 FOR X=X TO LEN(A$(L)) 1090 IF INSTR(SC$,MID$(A$(L),X,1))=0 THEN GOTO 1110 1100 NEXT 1110 GOTO 100 1120 :REM ----- HOME LINE ------ 1130 I=LEN(A$(L))+1:IF X>I THEN X=I ELSE X=1 1140 GOTO 100 1150 :REM ----- END LINE ------ 1160 I=LEN(A$(L)):IF X>=I THEN X=64 ELSE X=I+1 1170 IF X>64 THEN X=64 1180 GOTO 100 1190 :REM --------- DEL -------- 1200 IF X>LEN(A$(L)) THEN GOTO 100 ELSE PRINTCHR$(&H1D);:A$(L)=LEFT$(A$(L),X-1)+RIGHT$(A$(L),LEN(A$(L))-X) 1210 GOTO 100 1220 :REM --------- TAB --------- 1230 X=(INT(X/8)+1)*8 1240 IF X>64 THEN X=64 1250 GOTO 100 1260 :REM -------- F1 - HELP --------- 1270 CLS 1280 PRINT TAB(10);" F1 - HELP" 1290 PRINT TAB(10);" F2 - Read/Write/List" 1300 PRINT TAB(10);" F3 - Delete/Inseart line" 1310 GOSUB 1340 1320 GOTO 830 1330 :REM ----- WAIT ------ 1340 LOCATE 10,16:PRINT "PPRESS ANY KEY TO CONTINUE"; 1350 IF PEEK(&HF71D)=255 THEN GOTO 1350 1360 RETURN 1370 :REM ----- F2 - READ/WRITE/LIST ------ 1380 LOCATE 3,1,0:PRINT" Select: Read, Write, List, ESC "; 1390 A$=INKEY$:IF A$="" THEN GOTO 1390 1400 ON INSTR(CHR$(27)+"RrWwLl",A$) GOTO 90,1420,1420,1590,1590,1730,1730 1410 BEEP:GOTO 1370 1420 :REM ----- READ ----- 1430 IF PEEK(&HC000)<>195 THEN GOTO 4300 :REM 8010 1440 LOCATE 3,1,1:PRINT" "; 1450 LOCATE 3,1:LINE INPUT"Enter filename ";A$ 1460 OPEN "I",#1,A$ 1470 I=0 1480 IF EOF(1) GOTO 1530 1490 LINE INPUT #1,A$(I) 1500 IF LEN(A$(I))>64 THEN A$(I)=LEFT$(A$(I),64) 1505 LM=I 1510 IF I=AA THEN GOTO 1560 1520 I=I+1:GOTO 1480 1530 FOR I=I TO AA 1540 A$(I)="" 1550 NEXT 1560 X=1:Y=2:L=0 1570 CLOSE 1580 GOTO 830 1590 :REM ------ WRITE ------ 1600 IF PEEK(&HC000)<>195 THEN GOTO 4500 :REM 8010 1610 LOCATE 3,1,1:PRINT SPC(30); 1620 LOCATE 3,1:LINE INPUT"Enter filename ";A$ 1630 OPEN "O",#1,A$ 1640 FOR I=AA TO 0 STEP -1 1650 IF A$(I)<>"" THEN GOTO 1670 1660 NEXT 1670 IF I<0 THEN I=0 1680 FOR II=0 TO I 1690 PRINT #1,A$(II) 1700 NEXT 1710 CLOSE 1720 GOTO 90 1730 :REM ----- FILE LIST ----- 1740 IF PEEK(&HC000)<>195 THEN GOTO 100 1750 CLS 1760 FILES "*.*" 1770 GOSUB 1330 1780 GOTO 830 1790 :REM ----- CLS - DELETE LINE ------ 1800 FOR I=L TO LM-1 1810 A$(I)=A$(I+1) 1820 NEXT 1830 PRINTCHR$(&H1E); 1835 LM=LM-1 1840 I=L+16-Y 1850 IF I>LM THEN GOTO 100 1860 LOCATE 1,16:PRINTA$(I); 1870 GOTO 100