100 REM EDIT8 CLARK BAKER 2/72 C.O.G. 110 ! JUST LIKE THE EDITOR ON THE PDP-8/L EDUSYSTEM-20 120 PRINT "EDIT8 VER 1C" 130 OPEN "KB:" AS FILE 1 140 FIELD #1,128% AS A9$ 150 T$=NUM$(ASCII(SYS(CHR$(6%)+CHR$(9%)))/2%):T$="0"+ MID(T$,2%,LEN(T$)-2%):T$="EDIT"+RIGHT(T$,LEN(T$)-1%)+ ".TMP" 160 ON ERROR GO TO 590 170 PRINT "#";:INPUT #1,F1$:I%=INSTR(1,F1$,"/"):IF I%=0% THEN 210 180 I%=INSTR(1,F1$,"/"):C$=MID(F1$,I%+1,1):S%=INSTR(1,"SCO",C$) 190 IF S%=0% THEN PRINT "ILL SWI!":GO TO 170 200 CLOSE 1,2%,3%:KILL Q9$+T$:IF S%=1 THEN 720 ELSE IF S%=2% THEN CHAIN F$ ELSE CHAIN F$ 32727% 210 IF INSTR(1,F1$,".")=0% THEN F$=F1$+".BAS" ELSE F$=F1$ 220 OPEN F$ FOR INPUT AS FILE 2% 230 Q9$=LEFT(F$,INSTR(1%,F$,':')) 240 ON ERROR GO TO 610 250 OPEN Q9$+T$ FOR OUTPUT AS FILE 3% 260 PRINT "*";:INPUT LINE #1,N$:IF ASCII(RIGHT(N$,LEN(N$)))=0% THEN 160 ELSE N%=VAL(LEFT(N$,LEN(N$)-2%)) 270 L$="" 280 INPUT LINE #2%,L1$:L$=L$+L1$:IF ASCII(RIGHT(L1$,LEN(L1$)))=0% THEN 280 290 N1%=0% 300 FOR X%=1 TO LEN(L$) 310 I%=INSTR(1," 0123456789",MID(L$,X%,1)) 320 IF I%=0% THEN 350 330 IF I%>2% THEN N1%=N1%*10%+I%-3% 340 NEXT X% 350 IF N%<>N1% THEN PRINT #3%,L$;:GO TO 270 360 PRINT L$; 370 P%=1: W9%,R%=-1%: A$=SYS(CHR$(3)) 380 A$=SYS(CHR$(4)): GET #1:FOR X%=1 TO RECOUNT:C%=ASCII(MID(A9$,X%,1)) 390 IF C%=127% THEN 480 400 IF NOT R% THEN PRINT "\";:R%=-1% 410 IF C%=7% THEN W9%=-1%:GO TO 530 420 IF C%=12% THEN 510 430 IF C%=10% THEN PRINT RIGHT(L$,P%);:GO TO 550 440 IF C%=13% THEN PRINT:L$=LEFT(L$,P%-1)+CHR$(13%)+CHR$(10%):GO TO 550 450 IF C%=27% THEN PRINT " DELETED":A$=SYS(CHR$(2%)):GO TO 570 460 IF W9% THEN S$=CHR$(C%):W9%=0%:GO TO 510 470 PRINT CHR$(C%);:L$=LEFT(L$,P%-1)+CHR$(C%)+RIGHT(L$,P%):P%=P%+1:GO TO 530 480 IF P%=1 THEN PRINT "";:GO TO 530 490 IF R% THEN PRINT "\";:R%=0% 500 PRINT MID(L$,P%-1,1);:L$=LEFT(L$,P%-2%)+RIGHT(L$,P%):P%=P%-1: GO TO 530 510 I%=INSTR(P%,L$,S$):IF I%=0% THEN PRINT "";:W9%=-1%:GO TO 530 520 PRINT MID(L$,P%,I%-P%+1);:P%=I%+1:GO TO 530 530 NEXT X% 540 GO TO 380 550 A$=SYS(CHR$(2%)) 560 PRINT #3%,L$; 570 ON ERROR GO TO 710 580 INPUT LINE #2%,L$:PRINT #3%,L$;:GO TO 580 590 PRINT "ERR #";ERR 600 RESUME 170 610 IF ERR<>11% THEN 640 620 PRINT "CAN'T FIND LINE NUMBER";N% 630 RESUME 220 640 PRINT "ERR #"; ERR; "ERL ="; ERL 650 IF ERR=51% OR ERR=52% THEN RESUME 220 660 PRINT #3%,CHR$(26%); 670 CLOSE 2%,3% 680 KILL F$ 690 NAME Q9$+T$ AS F$ 700 RESUME 220 710 IF ERR=11% THEN 660 ELSE 640 720 END