1 ! PILEDT VERSION 1 EDIT 4 1/29/75 2 ! W$=RESIDENT ACCOUNT OF PILOT SERIES OF PROGRAMS 3 W$="" 10 C%=0%:GOTO 100 20!!!! ENTRY FROM PILOT 30 C%=-1%:C$=SYS(CHR$(7%)):F$=LEFT(C$,23%):W$=MID(C$,24%,23%) 40 A$="OLD" 100!!! BUILD XLATE STRINGS 200 DIM K%(128%):K%(A%)=A% FOR A%=1% TO 96%:K%(A%+32%)=A% FOR A%=65% TO 90%:K%(A%)=A% FOR A%=123% TO 127%:K%(0%)=127% 300 CHANGE K% TO K1$:K1$=CHR$(0%)+K1$ 400 K%(A%)=0% FOR A%=10% TO 13%:CHANGE K% TO R1$:R1$=CHR$(0%)+R1$ 500 MAT K%=ZER:K%(44%)=44%:K%(45%)=45%:K%(A%)=A% FOR A%=48% TO 57% 550 CHANGE K% TO N1$:N1$=CHR$(0%)+N1$ 600!!! FUNCTION DEFINITIONS 700 DEF FNG$(C%): FIELD #C%, 1% AS I$:X$=SYS(CHR$(4%)+CHR$(C%)) 800 GET #C%:FNG$=I$+"" 900 FNEND 1200!! INIT 1500 PRINT "PILEDT V01.4" 1600 OPEN "KB:" AS FILE 1% 1640 M0%=1% 1650 IF C%=0% THEN T$=SYS(CHR$(3%)):PRINT "INSTRUCTION OPTION? ";: J$=XLATE(FNG$(1%),K1$): M0%=0% IF J$="Y":T$=SYS(CHR$(2%)): IF J$="Y" THEN PRINT "YES" ELSE PRINT "NO" 1675 M1%,M2%,M3%,M4%,M5%,M6%,M7%,M8%,M9%=M0% 1700 ON ERROR GOTO 4000 1800 IF C%=0% THEN T$=SYS(CHR$(3%)):PRINT "OLD OR NEW FILE (O OR N)? ";:A$=XLATE(FNG$(1%),K1$): T$=SYS(CHR$(2%)):IF A$="O" THEN A$="OLD" 1900 A$="NEW" UNLESS A$="OLD": IF A$="NEW" THEN N%=-1% 1950 IF C%=0% THEN PRINT " "A$ 2000 IF C%=0% THEN PRINT A$;" FILE NAME";:INPUT LINE F$ 2010 F$=XLATE(F$,R1$):GOSUB 17210 2600!! .TMP FILE 2700 J%=ASCII(SYS(CHR$(6%)+CHR$(9%)))/2% 2800 ! J%=JOB NUMBER 2900 J$=NUM$(J%): J$="0"+J$ IF J%<10% 3000 J$="EDIT"+J$+".TMP" 3100 OPEN J$ AS FILE 2% 3200 DIM #2%,A$(300%)=128%:A%=0% ! A%=NUMBER OF LINES 3300!! CURRENT FILE 3400 IF N% THEN 5000 3500!! INPUT OLD FILE 3600 KILL F$+".BAK" 3700 OPEN A0$+F$+"."+E$ FOR INPUT AS FILE 3% 3800 INPUT LINE #3%,L$:A%=A%+1%:A$(A%)=XLATE(L$,R1$):IF A%<300% THEN 3800 ELSE PRINT "THE NUMBER OF LINES IN THE FILE EXCEEDS " THE LIMIT OF 300":PRINT "THE REST OF THE FILE HAS BEEN "; "IGNORED." 3900 NAME F$+"."+E$ AS F$+".BAK" 3950 CLOSE 3%: GOTO 5000 4000!! ERROR HANDLER FOR FIRST HALF OF PROGRAM 4100 IF ERL=3600 THEN RESUME 3700 UNLESS ERR<>5% 4200 IF ERL=3200 THEN PRINT "ERROR - "RIGHT(SYS(CHR$(6%)+CHR$(9%)+ CHR$(ERR)),3%)" - WHEN ATTEMPTING": PRINT "TO OPEN FILE " A0$+F$+"."+E$: RESUME 1200 4300 IF ERL=3800 THEN IF ERR=11 THEN RESUME 3900 ELSE PRINT "ERROR - "FNE$(ERR)" - WHILE ATTEMPTING TO INPUT LINES ": PRINT "FILE "A0$+F$+"."+E$:RESUME 1200 4400 IF ERL=3900 THEN RESUME 3950 UNLESS ERR<>5% 4500 PRINT RIGHT(SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)),3%)" AT LINE "ERL; " *** FATAL ERROR":RESUME 1 4600! IN THE ABOVE LINE UNEXPECTED ERRORS ARE HANDELED. PILEDT THE TRYS AGAIN. 5000!! GET A COMMAND (ACTUAL EDITING BEGINS HERE) 5100 ON ERROR GOTO 0 5200 OPEN "KB:" AS FILE 1%:E%=0% 5300 PRINT "#";:J$=XLATE(FNG$(1%),K1$):PRINT 5400 X%=INSTR(1%,"ADLRIEF",J$): IF X%=0% THEN E%=E%+1%:IF E%<3% THEN PRINT J$"?";:GOTO 5300 5500 ON X%+1% GOTO 5600,6500,7300,8900,10300,11300,12700,17300 5600 PRINT "COMMANDS CONSIST OF ONE LETTER THEY ARE:" 5700 PRINT " A:(ADD MORE LINES TO END OF FILE)" 5800 PRINT " L:(LIST LINES)" 5900 PRINT " F:(FINISH EDIDING)" 6000 PRINT " R:(REPLACE LINE OF TEXT)" 6100 PRINT " I:(INSERT A LINE BETWEEN TWO EXISTING LINES)" 6200 PRINT " E:(EDIT A LINE)" 6300 PRINT " D:(DELETE A LINE)" 6400 GOTO 5000 6500!! ADD A LINE 6600 ON ERROR GOTO 7000 6625 M1%=M1%+1%: IF M1%=1% THEN PRINT "TYPE EACH LINE FOLLOWED BY A RETURN. WHEN YOU HAVE" " FINISHED":PRINT "ADDING LINES, TYPE JUST RETURN." 6650 IF A%>299% THEN PRINT "NO MORE LINES MAY BE ADDED, 300 LIMIT": GOTO 5000 6700 PRINT A%+1%" ";:INPUT LINE L$:L$=XLATE(L$,R1$) 6800 IF L$="" THEN 7200 6900 A%=A%+1%:A$(A%)=L$:GOTO 6650 7000 IF ERR=11% THEN RESUME 7200 ELSE 19300 7200 GOTO 5000 7300!! DELETE A LINE 7350 ON ERROR GOTO 8700 7400 PRINT "DELETE WHAT LINES";:INPUT LINE C$:C$=XLATE(C$,R1$): GOTO 8000 IF C$="" 7500 GOSUB 16000 ! DECODE C$ 7550 M2%=M2%+1%: IF M2%=1% THEN PRINT "CONFIRM DELETION OF EACH LINE " " BY TYPING A 'Y' ANYTHING ELSE TO SAVE.":PRINT "DO NOT TYPE " " RETURN!" 7600 FOR B%=1% TO A%: IF S%(B%) THEN PRINT B%;" ";A$(B%);" ? ";:J$=XLATE(FNG$(1%),K1$): PRINT:IF J$="Y" THEN A$(B%)=CHR$(26%) 8000 NEXT B% 8100 PRINT "DELETING....": O%=0% 8200 FOR B%=1% TO A% 8300 IF A$(B%)=CHR$(26%) THEN O%=O%+1%:GOTO 8500 8400 A$(B%-O%)=A$(B%) 8500 NEXT B% 8550 A%=A%-O% 8600 GOTO 5000 8700 IF ERR=11% THEN RESUME 8600 ELSE 19300 8900!! LIST LINES 9000 ON ERROR GOTO 10200 9100 M3%=M3%+1%:IF M3%=1% THEN PRINT "SIMPLY TYPE THE NUMBERS " "OF THE LINES TO LIST, FOLLOWED BY RETURN.":PRINT "A RETURN ALONE MEANS LIST EVERYTHING." 9200 IF M3%<3% THEN PRINT "LINE NUMBERS OF LINES TO LIST "; ELSE PRINT "LIST "; 9300 INPUT LINE C$: C$=XLATE(C$,R1$) 9350 IF C$="" THEN C$="1-"+NUM$(A%) 9400 GOSUB 16000 ! DECODE C$ 9500 PRINT 9600 FOR B%=1% TO A% 9700 IF S%(B%) THEN PRINT B%" ";A$(B%) 9800 NEXT B% 9900 PRINT 10000 GOTO 5000 10200 IF ERR=11% THEN RESUME 10100 ELSE 19300 10300! REPLACE LINES 10400 ON ERROR GOTO 11100 10500 M4%=M4%+1%: IF M4%=1% THEN PRINT "TYPE THE NUMBER OF " " LINE YOU WOULD LIKE TO REPLACE." 10600 INPUT "LINE ";C$:X%=VAL(XLATE(C$,N1$)):IF X%=0% THEN 11000 ELSE IF X%>A% OR X%<1% THEN 10600 10700 PRINT X%" ";A$(X%):PRINT "BECOMES:" 10800 PRINT X%" ";:INPUT LINE L$:L$=XLATE(L$,R1$) 10900 IF L$="" THEN PRINT "LINE UNCHANGED" ELSE A$(X%)=L$ 10950 GOTO 10600 11000 GOTO 5000 11100 IF ERR=52% THEN PRINT "ILLEGAL NUMBER":RESUME 10600 11200 IF ERR=11% THEN RESUME 11000 ELSE 19300 11300! INSERT A LINE BETWEEN TWO EXISTING 11400 ON ERROR GOTO 12500 11500 M5%=M5%+1%: IF M5%=1% THEN PRINT "TYPE THE NUMBER OF THE " "LINE TO INSERT AFTER." 11600 INPUT "INSERT AFTER LINE ";X%:IF X%<0% OR X%>A% THEN 11600 11700 IF A%>299% THEN PRINT "NU MORE LINES ALLOWED " "300 LIMIT.":GOTO 12400 11800 PRINT X%+1%;" ";:INPUT LINE L$:L$=XLATE(L$,R1$) 11850 A%=A%+1% 11900 FOR B%=A% TO X%+2% STEP -1% 12000 A$(B%)=A$(B%-1%) 12100 NEXT B% 12150 A$(X%+1%)=L$ 12220 INPUT "NEXT ";X1%: IF X1%=0% THEN X1%=X%+1% 12300 IF X1%<1% OR X1%>A% THEN 12200 ELSE X%=X1%:GOTO 11800 12400 GOTO 5000 12500 IF ERR=52% THEN PRINT "ILLEGAL NUMBER":RESUME 12600 IF ERR=11% THEN RESUME 12400 ELSE 19300 12700! EDIT A LINE 12750 ON ERROR GOTO 15900 12800 M6%=M6%+1%: IF M6%>1% THEN 13200 12900 PRINT "TYPE THE NUMBER OF EACH LINE TO EDIT. REFER TO MANUAL": PRINT "FOR FURTHER INFORAMTION ON THIS COMMAND." 13200 X$=SYS(CHR$(2%)):INPUT "LINE ";L%:IF L%=0% THEN 15800 ELSE IF L%<1% OR L%>A% THEN 13200 13400 A$=A$(L%) 13500 T$=SYS(CHR$(3%)):PRINT "*"; 13600 S$=A$ 13700 B$=XLATE(FNG$(1%),K1$) 13800 IF B$=CHR$(27%) THEN PRINT:PRINT "NEXT ";:GOTO 15700 13900 IF B$=CHR$(11%) THEN PRINT:PRINT "LINE RESTORED":PRINT "NEXT ";: GOTO 13200 14100 IF B$=CHR$(22%) THEN PRINT:PRINT A$:GOTO 13500 14200 IF B$<" " THEN PRINT "^";CHR$(ASCII(B$)+64%) ELSE PRINT B$ 14250 B0$=B$ 14300 X%=INSTR(1,A$,B$): IF X%=0% THEN PRINT "?":GOTO 13500 14400 PRINT LEFT(A$,X%); 14500 B1$="" 14600 B$=XLATE(FNG$(1%),K1$) 14700 IF B$=CHR$(7%) THEN IF B1$<>CHR$(7%) THEN 15500 ELSE A$=LEFT(A$,X%-1%)+RIGHT(A$,X%+1%):X%=X%-1%: PRINT RIGHT(A$,X%+1%):GOTO 13500 14800 IF B$=CHR$(7%) THEN IF B1$<>CHR$(7%) THEN 15500 ELSE A$=LEFT(A$,X%-1%)+RIGHT(A$,X%+1%):X%=X%-1%: PRINT RIGHT(A$,X%+1%):GOTO 13500 14850 IF B$=CHR$(21%) THEN A$=S$:GOTO 13500 14900 IF B$<>CHR$(12%) THEN 15000 ELSE X2%=X%:X%=INSTR(X%+1%, A$,B0$): IF X%=0% THEN PRINT RIGHT(A$,X2%+1%):GOTO 13500 14950 PRINT MID(A$,X2%+1%,X%-X2%);:GOTO 14500 15000 IF B$<>CHR$(127%) THEN 15300 15100 IF X%=0% THEN PRINT ELSE X%=X%-1%:PRINT MID(A$,X%+1%,1%);: A$=LEFT(A$,X%)+RIGHT(A$,X%+2%) 15200 GOTO 14500 15300 IF B$=CHR$(13%) OR B$=CHR$(10%) OR B$=CHR$(27%) THEN PRINT:A$=LEFT(A$,X%):GOTO 13500 15400 IF B$=CHR$(22%) THEN PRINT:PRINT LEFT(A$,X%);:GOTO 14500 15500 PRINT B$;:A$=LEFT(A$,X%)+I$+RIGHT(A$,X%+1%):X%=X%+1% 15600 B1$=B$:GOTO 14600 15700 A$(L%)=XLATE(A$,R1$):X$=SYS(CHR$(2%)):GOTO 13200 15800 GOTO 5000 15900 IF ERR=52% THEN PRINT "ILLEGAL NUMBER" : RESUME 13200 15920 IF ERR=11% THEN RESUME 15800 ELSE 19300 16000! SUBROUTINE FOR DECODING C$ OF FORMAT (A-B,C-D,D-E) 16100 DIM S%(300%) 16150 MAT S%=ZER 16200 C$=XLATE(C$,N1$)+",":T%=0%:N%=0% 16300 T%=INSTR(1,C$,","):IF T%=0% THEN 17200 16400 C1$=LEFT(C$ ,T%-1%):C$=RIGHT(C$,T%+1%) 16500 T1%=INSTR(1%,C1$,"-"):IF T1%=0% THEN C1$=C1$+"-"+C1$:GOTO 16500 16600 S%=VAL(LEFT(C1$,T1%-1%)):E%=VAL(RIGHT(C1$,T1%+1%)) 16700 IF S%>E% THEN S1%=S%:S%=E%:E%=S1% 16750 S%=1% IF S%<1%:E%=300% IF E%>300% 16800 S%(N%)=-1% FOR N%=S% TO E%:GOTO 16300 17200 RETURN 17210! SUBROUTINE FOR DECODING FILE NAME 17220 X%=INSTR(1,F$,"["):X0%=INSTR(1,F$,"]") 17230 IF X% THEN A0$=MID(F$,X%,X0%-X%+1%):F$=LEFT(F$,X%-1%)+ RIGHT(F$,X0%+1%) 17240 A0$="" UNLESS X% 17250 X%=INSTR(1%,F$,".") 17260 IF X%=0% THEN E$="PI" ELSE E$=RIGHT(F$,X%+1%):F$=LEFT( F$,X%-1%) 17270 RETURN 17300! FINISHED 17400 ON ERROR GOTO 19000 17450 I$=SYS(CHR$(3%)) 17500 PRINT "ARE YOU REALLY FINISHED? ";:I$=XLATE(FNG$(1%),K1$) 17800 IF I$="Y" THEN I$="YES" ELSE I$="NO" 17900 PRINT I$:GOTO 5000 IF I$<>"YES" 17950 I$=SYS(CHR$(2%)) 18000 OPEN F$+"."+E$ FOR OUTPUT AS FILE 4% 18100 PRINT #4%,A$(B%) FOR B%=1% TO A% 18200 CLOSE 2%,3%,4% 18300 J$="0" IF J%<10%:J$="EDIT"+J$+NUM$(J%)+".TMP": KILL J$ 18400 I$=SYS(CHR$(3%)):PRINT "CHAIN PILOT? ";:I$=XLATE(FNG$(1%),K1$): IF I$="Y" THEN I$="YES" ELSE I$="NO" 18450 T$=SYS(CHR$(2%)) 18500 PRINT I$:IF I$="NO" THEN 32767 18600 T$=SYS(CHR$(8%)+F$+"."+E$):CHAIN W$+"PILOT" 100 19000 IF ERL<>18000 AND ERR<>2 THEN 19300 ELSE RESUME 19010 19010 PRINT F$+"."+E$" IS AN ILLEGAL FILE NAME." 19020 INPUT "NEW FILE NAME";F$:GOSUB 17210:GOTO 17300 19300 PRINT RIGHT(SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)),3%)" at line "ERL: RESUME 5000 32767 END