5 ON ERROR GOTO 2000 10 PRINT CHR$(27)+"0""**************************" 20 PRINT "* TEXT EDITOR *" 30 PRINT "* ¤ 1989 Keith M. Simons *" 40 PRINT "* Version 1.3 16.4.1989 *" 45 PRINT "* (LOCAL SEARCH) *" 50 PRINT "**************************":FOR a=1 TO 2000:NEXT:a=0 60 q1$="########.##":Lkey%=9999:Hkey%=0:BUFFERS 10 70 WIDTH LPRINT 255:WIDTH 255:x$=CHR$(27):cl$=x$+"E"+x$+"H":DEF FNa$(xx,yy)=CHR$(27)+"Y"+CHR$(yy+32)+CHR$(xx+32) 71 winA$=x$+"X 5y":winB$=x$+"X5 >y":winN$=x$+"X >y":'win A$ was X 4y 72 GOTO 12000 75 CLOSE 1,2,3:IF FIND$("m:*.$$$")<>"" THEN KILL("M:*.$$$") 76 IF procedure>0 THEN 1000 80 GOSUB 11000:REM PRINT cl$:FILES:PRINT:PRINT:INPUT "File name, please: ",file$ 85 IF file$="" THEN 1000 90 OPEN "i",2,file$ 100 IF FIND$("m:*.$$$")<>"" THEN KILL("M:*.$$$") 110 CREATE 1,"M:data.$$$","M:inx.$$$",2,90:FIELD 1,1 AS length$,87 AS data$:LSET length$="ÿ":LSET data$=STRING$(87,"ÿ"):rc%=ADDREC(1,2,7,"!") 120 mx#=8192#:WHILE NOT EOF(2):LINE INPUT #2,a$: 130 LSET length$=CHR$(LEN(a$)):LSET data$=a$:rc%=ADDREC(1,2,0,DEC$(mx#,q1$)) 140 mx#=mx#+8192# 150 WEND:CLOSE 2:GOTO 12000 160 cr#=8192#:PRINT cl$; 170 CLOSE 2:rc%=SEEKKEY(1,2,0,DEC$(cr#,q1$)):GET 1:b$=LEFT$(data$,ASC(length$)):GOSUB 10000:PRINT cl$;data$ 180 FOR a=1 TO 20:IF SEEKNEXT(1,2)<103 THEN GET 1:PRINT data$:NEXT 190 a=0 200 'PRINT cl$;' TEXT PROCESSING. a1% - highest option no/b$ line being edited 210 a1%=10 220 a2$=CHR$(1)+CHR$(6)+CHR$(127)+CHR$(7)+CHR$(13)+CHR$(30)+CHR$(31)+CHR$(21)+CHR$(5)+CHR$(29) 230 'FOR a=0 TO a1%:a1$=SPACE$(85): 240 'LSET a1$=b$(a):PRINT CHR$(133);" ";a1$;" ";CHR$(133):NEXT:a=0:' the for...next loop does nothing. 250 'Loop starts 260 rc%=SEEKKEY(1,2,0,DEC$(cr#,q1$)):GET 1:b$=LEFT$(data$,ASC(length$)) 270 b=0:c=MIN(c,LEN(b$)):PRINT FNa$(0,a);data$:'or should it be b$? 280 PRINT FNa$(c+b,a);:z$=(INPUT$(1)):'b is offset, c is cursor posn on line 290 IF z$=CHR$(27) THEN GOTO 740:'Of course, this should be CLOSE AND END 300 IF ASC(z$)<32 OR z$=CHR$(127) THEN GOSUB 330:IF z$<>"*" THEN 280 ELSE 260 310 b$=LEFT$(b$,c)+z$+MID$(b$,c+1) 320 PRINT MID$(b$,c+1):c=c+1:IF c=65 OR c>70 THEN PRINT CHR$(7);:GOTO 280 ELSE 280 330 'Control chars 340 ON INSTR(a2$,z$) GOTO 360,380,400,420,510,450,480,590,530,720 350 z$="":RETURN 360 'LEFT 370 IF c THEN c=c-1:RETURN ELSE RETURN 380 'RIGHT 390 IF c=102 THEN 650 ELSE cr#=VAL(FETCHKEY$(1)):IF a=20 THEN PRINT CHR$(27)+"H"+CHR$(27)+"M":ELSE a=a+1 470 z$="*":RETURN 480 'UP 490 LSET data$=b$:LSET length$=CHR$(LEN(b$)):PUT 1:IF SEEKPREV(1,2)>102 THEN z$="*":RETURN ELSE cr#=VAL(FETCHKEY$(1)):IF a=0 THEN PRINT CHR$(27)+"L":ELSE a=a-1 500 z$="*":RETURN 510 'RETURN 520 c=0:GOTO 450 530 'CHR$(5): ALT + CURSOR DOWN (INSERT LINE) 540 LSET data$=b$:LSET length$=CHR$(LEN(b$)):PUT 1:a#=VAL(FETCHKEY$(1)):rc%=SEEKPREV(1,2) 550 IF rc%>101 THEN cr#=a#/3:ELSE b#=VAL(FETCHKEY$(1)):cr#=((a#-b#)/4)+b# 560 LSET data$="":LSET length$=CHR$(0):rc%=ADDREC(1,2,0,DEC$(cr#,q1$)) 570 b$="":c=0 580 PRINT CHR$(27)+"L":RETURN 590 'CUT 600 IF length$="ÿ" THEN PRINT CHR$(7);:RETURN ELSE PRINT CHR$(27)+"M" 610 rc%=DELKEY(1,2):IF rc%>101 THEN 630 ELSE cr#=VAL(FETCHKEY$(1)):z$="*" 620 RETURN 630 IF SEEKPREV(1,2)>102 THEN z$="*":RETURN ELSE cr#=VAL(FETCHKEY$(1)):IF a=0 THEN PRINT CHR$(27)+"L":ELSE a=a-1 640 z$="*":RETURN 650 'APPEND LINE TO FILE 660 IF z$=CHR$(13) THEN z$="*" ELSE z$="*":RETURN 670 mx#=mx#+8192#:cr#=mx# 680 LSET data$="":LSET length$=CHR$(0):rc%=ADDREC(1,2,0,DEC$(cr#,q1$)) 690 b$="":c=0 700 IF a=20 THEN PRINT CHR$(27)+"H"+CHR$(27)+"M":ELSE PRINT CHR$(10)+CHR$(27)+"L":a=a+1 710 RETURN 720 'END OF LINE (Use FIND key) 730 c=LEN(b$):RETURN 740 'EXIT OPTIONS...(at present, save!) 750 LSET data$=b$:LSET length$=CHR$(LEN(b$)):PUT 1:PRINT x$+"y"+x$+"1"; 760 rc%=SEEKRANK(1,2,0):PRINT cl$;:GOTO 12000 762 IF rc%<>0 THEN PRINT "No file to save!":FOR count=1 TO 2000:NEXT:GOTO 12000 764 'PRINT cl$;"Save or Print?":a$=UPPER$(INPUT$(1)):IF a$="P" THEN 900 ELSE IF a$<>"S" THEN PRINT CHR$(7):GOTO 764 765 ON procedure GOTO 820 770 PRINT cl$:FILES:PRINT:PRINT:INPUT "Filename to save as: ",file3$ 775 IF file3$="" THEN GOTO 770: 780 IF FIND$(file3$)<>"" THEN INPUT "File already exists. New name: ",file3$:GOTO 780 790 OPEN "O",2,file3$ 800 WHILE rc%<102:GET 1:PRINT #2,LEFT$(data$,ASC(length$)):rc%=SEEKNEXT(1,2):WEND 810 CLOSE 2:PRINT cl$;:DISPLAY file3$:FOR count=1 TO 2000:NEXT:GOTO 12000 820 a.a$="":WHILE rc%<102:GET 1:a.a$=a.a$+LEFT$(data$,ASC(length$))+CHR$(13)+CHR$(10):rc%=SEEKNEXT(1,2):WEND:CLOSE 1 830 PRINT cl$;a.a$:PRINT:PRINT "Length of String was:" LEN(a.a$):END :'eventually this procedure will save into database of details. 900 'PRINT ROUTINE 905 LPRINT x$+"M";:WHILE rc%<102:GET 1 910 pp$=LEFT$(data$,ASC(length$)):IF INSTR(pp$,"¦") THEN GOSUB 950 ELSE LPRINT pp$ 915 rc%=SEEKNEXT(1,2):WEND:LPRINT CHR$(12);:GOTO 160 950 'SPECIAL PRINT ROUTINES 955 IF LEFT$(pp$,2)="¦¦" THEN RETURN 960 IF pp$="" OR INSTR(pp$,"¦")=0 THEN LPRINT pp$:RETURN ELSE LPRINT LEFT$(pp$,INSTR(pp$,"¦")-1); 965 pp$=MID$(pp$,INSTR(pp$,"¦")+1):IF INSTR(SPACE$(10),pp$) THEN LPRINT CHR$(13);:RETURN 970 pp=INSTR("IiBbUuCcLMPTS",LEFT$(pp$,1)):ON pp GOSUB 971,972,973,974,975,976,977,978,979,980,981,982,983:IF pp THEN pp$=MID$(pp$,2):GOTO 960 ELSE GOTO 960 971 LPRINT x$"4";:RETURN 972 LPRINT x$"5";:RETURN 973 LPRINT x$"E";:RETURN 974 LPRINT x$"F";:RETURN 975 LPRINT x$"-"CHR$(1);:RETURN 976 LPRINT x$"-"CHR$(0);:RETURN 977 LPRINT CHR$(15);:RETURN 978 LPRINT CHR$(18);x$;"M";:RETURN 979 IF INSTR(" 1234567890",MID$(pp$,2,1))>0 AND INSTR(" 1234567890",MID$(pp$,3,1))>0 THEN LPRINT x$"A";CHR$(MIN(85,VAL(MID$(pp$,2,2))));:pp$=MID$(pp$,3):RETURN ELSE RETURN 980 IF INSTR(" 1234567890",MID$(pp$,2,1))>0 AND INSTR(" 1234567890",MID$(pp$,3,1))>0 THEN LPRINT x$"l";CHR$(MIN(93,VAL(MID$(pp$,2,2))));:pp$=MID$(pp$,3):RETURN ELSE RETURN 981 LPRINT CHR$(12);:RETURN 982 IF INSTR(" 1234567890",MID$(pp$,2,1))>0 AND INSTR(" 1234567890",MID$(pp$,3,1))>0 THEN LPRINT CHR$(13);SPACE$(VAL(MID$(pp$,2,2)));:pp$=MID$(pp$,3):RETURN ELSE RETURN 983 IF INSTR(" 1234567890",MID$(pp$,2,1))>0 AND INSTR(" 1234567890",MID$(pp$,3,1))>0 THEN LPRINT SPACE$(VAL(MID$(pp$,2,2)));:pp$=MID$(pp$,3):RETURN ELSE RETURN 1000 CLOSE 1,2,3:IF FIND$("m:*.$$$")<>"" THEN KILL("M:*.$$$") 1001 CREATE 1,"M:data.$$$","M:inx.$$$",2,90:FIELD 1,1 AS length$,87 AS data$:LSET length$="ÿ":LSET data$=STRING$(87,"ÿ"):rc%=ADDREC(1,2,7,"!"):LSET data$="":LSET length$=CHR$(0):rc%=ADDREC(1,2,0,DEC$(8192#,q1$)) 1010 mx#=8192#:GOTO 12000 1190 PRINT FN 2000 '*** ERROR PROCESSING *** 2010 IF ERL=820 THEN PRINT a.a$:PRINT:PRINT "ERROR - this is too long already!!!";CHR$(7):PRINT "Shorten down if you want this to fit!";CHR$(7):FOR c=1 TO 3000:NEXT:RESUME 160 2015 IF ERL=170 AND ERR=52 THEN PRINT CHR$(7);:RESUME 12000 2020 ON ERROR GOTO 0 10000 PRINT winB$;cl$:PRINT x$"p†ŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŒ" 10010 PRINT "…"SPC(25)"Codes to obtain special features:"SPC(26)"…" 10020 'PRINT ""SPC(84)"" 10030 PRINT "…¦¦ Line will not be printed"TAB(42)"¦ At end of line prevents paper feed" TAB(86)"…" 10040 PRINT "…¦I¦U Italics and underline on"TAB(42)"¦i¦u Italics and underline off" TAB(86)"…" 10050 PRINT "…¦B¦C Bold and condensed on"TAB(42)"¦b¦c Bold and Condensed off" TAB(86)"…" 10060 PRINT "…¦T35 Tab to column 35"TAB(42)"¦S67 Print 67 Spaces" TAB(86)"…" 10070 PRINT "…¦M31 Left hand margin at column 31"TAB(42)"¦L17 Line spacing in /72nds inch (max ¦L85)" TAB(86)"…" 10080 PRINT "…Arrow & delete keys work as usual CUT removes current line FIND end of line" TAB(86)"…" 10090 PRINT "…ALT+[arrow down] inserts new line RETURN start of next line EXIT to finish" TAB(86)"…" 10100 PRINT "ƒŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ‰"x$"q"winA$;:RETURN 11000 PRINT cl$; 11001 PRINT x$;"H";:FILES "*.*" 11005 PRINT x$"K":PRINT x$"K":PRINT x$"KPlease use cursor keys to select and [ENTER] to load file.":FOR count=1 TO 4:PRINT x$"K":NEXT 11010 PRINT x$+"Y"+CHR$(y+32)+CHR$((x*14)+40);:a$=INPUT$(1) 11015 IF a$=CHR$(31) THEN y=MAX(0,y-1) 11020 IF a$=CHR$(30) THEN y=MIN(25,y+1) 11025 IF a$=CHR$(1) THEN x=MAX(0,x-1) 11030 IF a$=CHR$(6) THEN x=MIN(5,x+1) 11035 IF a$=CHR$(13) THEN file$=STRIP$(FIND$("*.*",(y*6)+x+1)):IF file$="" THEN PRINT CHR$(7);:ELSE 11045 11040 GOTO 11010 11045 PRINT x$;"p"FNa$(12,0);"†ŠŠŠŠŠŠŠŠŠŠŠŠŒ";FNa$(12,1)"… Load file: …";FNa$(12,2)"…"file$"…";FNa$(12,3)"…ENTER/CANCEL…"FNa$(12,4)"ƒŠŠŠŠŠŠŠŠŠŠŠŠ‰"x$;"q" 11050 a$=INPUT$(1):IF a$=CHR$(13) THEN PRINT cl$;"Thank you. Loading "file$:RETURN ELSE IF a$=CHR$(8) THEN GOTO 11001 ELSE PRINT CHR$(7);:GOTO 11050 12000 PRINT cl$"†ŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŒ":PRINT "…Please press the number of your choice:…":PRINT "ƒŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠŠ‰" 12010 PRINT:PRINT "†ŠŠŠŒ":PRINT "… 1 … To load a new file.":PRINT"‡ŠŠŠ" 12020 PRINT "… 2 … To save this file.":PRINT"‡ŠŠŠ" 12030 PRINT "… 3 … To print this file in DRAFT quality.":PRINT"‡ŠŠŠ" 12040 PRINT "… 4 … To print this file in HIGH quality.":PRINT"‡ŠŠŠ" 12045 PRINT "… 5 … To use a blank file.":PRINT"‡ŠŠŠ" 12046 PRINT "… 6 … To edit.":PRINT"‡ŠŠŠ" 12050 PRINT "… 7 … To finish using.":PRINT"ƒŠŠŠ‰" 12060 z$=INPUT$(1):IF FIND$("M:data.$$$")<>"" THEN IF z$="3" THEN LPRINT CHR$(24);x$;"@";:GOTO 900 ELSE IF z$="4" THEN LPRINT CHR$(24);x$;"@"x$"m"CHR$(1);:GOTO 900 12065 IF z$="6" THEN GOTO 160 12070 IF z$="7" THEN PRINT x$;"p"FNa$(12,0);"†ŠŠŠŠŠŠŠŠŠŠŠŠŒ";FNa$(12,1)"… Finish …";FNa$(12,2)"… Using? …";FNa$(12,3)"…ENTER/CANCEL…"FNa$(12,4)"ƒŠŠŠŠŠŠŠŠŠŠŠŠ‰"x$;"q":GOTO 13000 12080 IF z$="1" THEN PRINT x$;"p"FNa$(12,0);"†ŠŠŠŠŠŠŠŠŠŠŠŠŒ";FNa$(12,1)"… Load a new …";FNa$(12,2)"… file? …";FNa$(12,3)"…ENTER/CANCEL…"FNa$(12,4)"ƒŠŠŠŠŠŠŠŠŠŠŠŠ‰"x$;"q":GOTO 13010 12085 IF z$="5" THEN PRINT x$;"p"FNa$(12,0);"†ŠŠŠŠŠŠŠŠŠŠŠŠŒ";FNa$(12,1)"… Erase this …";FNa$(12,2)"… file? …";FNa$(12,3)"…ENTER/CANCEL…"FNa$(12,4)"ƒŠŠŠŠŠŠŠŠŠŠŠŠ‰"x$;"q":GOTO 13020 12090 IF z$<>"2" OR FIND$("M:*.$$$")="" THEN PRINT CHR$(7);:GOTO 12060:ELSE GOTO 762 13000 a$=INPUT$(1):IF a$=CHR$(13) THEN CLOSE 1,2,3:OPEN "O",1,"M:S.$$$":CLOSE:KILL "M:*.$$$":PRINT cl$;"Thank you.":GOTO 25000:END: ELSE IF a$=CHR$(8) THEN GOTO 12000 ELSE PRINT CHR$(7);:GOTO 13000 13010 a$=INPUT$(1):IF a$=CHR$(13) THEN 75 ELSE IF a$=CHR$(8) THEN GOTO 12000 ELSE PRINT CHR$(7);:GOTO 13010 13020 a$=INPUT$(1):IF a$=CHR$(13) THEN 1000 ELSE IF a$=CHR$(8) THEN GOTO 12000 ELSE PRINT CHR$(7);:GOTO 13020 25000 IF FIND$("M:$$$$$$$$.&&&")<>"" THEN OPTION STOP:PRINT "[Press any key to return to main menu or press (STOP) to stop]":z$=INPUT$(1):RUN "M:$$$$$$$$.&&&":ELSE END OPTION STOP:PRINT "[Press any key to return to main menu or press (STOP) to stop]":z$=INPUT$(1):RUN "M:$$$$$$$$.&&