10 REM PIP CLARK BAKER 6/72 C.O.G. 15 DIM S%(30%) 20 PRINT "PIP VER 4A":E$=".BAS":OPEN "KB:" AS FILE 1% 35 DEF FNQ$(Q$,Q1$):IF INSTR(1%,Q$,":")=0% THEN Q$=Q1$+Q$ 37 IF INSTR(1%,Q$,".")=0% THEN Q$=Q$+E$ 38 IF INSTR(1%,Q$,"[") THEN FNQ$=Q$ ELSE FNQ$=Q$+P1$ 39 FNEND 50 S$=SYS(CHR$(2%)):S$=SYS(CHR$(0%)):PRINT "#"; 60 INPUT LINE #1%,C$:C$=LEFT(C$,LEN(C$)-3%+ASCII(RIGHT(C$,LEN(C$)))/10% )+";;" 65 ON ERROR GO TO 32000 70 C1$=LEFT(C$,INSTR(1%,C$,";")-1%):IF LEN(C1$)=0% THEN 50 80 C$=RIGHT(C$,INSTR(1%,C$,";")+1%):I%=INSTR(1%,C1$,"/M"):IF I% THEN M$=LEFT(C1$,I%-1%):GO TO 70 90 C1$=C1$+M$:I1%=INSTR(1%,C1$,"<"):I2%=INSTR(1%,C1$,"/") 100 IF I2%=0% THEN IF I1% THEN 12000 ELSE PRINT "ILL CMD!":GO TO 50 105 F3$=LEFT(C1$,I2%-1%):C1$=RIGHT(C1$,I2%+1%) 110 ON (INSTR(1%,"!CH!DE!DI!EX!FR!OL!PP!PR!RE!ST!TO!TR!","!"+LEFT(C1$, 2%)+"!")+2%)/3%+1% GO TO 120, 1000, 2000, 3000, 4000, 5000, 6000, 13000, 7000, 8000, 9000, 10000, 11000 120 ON INSTR(1%,"CZDEFOUPRSTX",LEFT(C1$,1%))+1% GO TO 130, 1000, 2000, 3000, 4000, 5000, 6000, 13000, 7000, 8000, 9000, 10000, 11000 130 PRINT "ILL SWI!":GO TO 70 1000 F%=3%:F1$=FNQ$(F3$,F$)! *** CHAIN *** 1030 I%=INSTR(1%,C1$,":"):IF I% THEN L%=VAL(RIGHT(C1$,I%+1%)) ELSE L%=0% 1040 F%=1%:CHAIN F1$ L% 2000 F%=1%:F1$=FNQ$(F3$,F$)! *** DELETE *** 2300 KILL F1$:PRINT F1$;" DELETED.":GO TO 70 3000! *** DIRECTRY *** 3010 IF I1%=0% THEN F2$="KB:" ELSE F2$=FNQ$(LEFT(F3$,I1%-1%),T$): F3$=RIGHT(F3$,I1%+1%) 3020 F1$=FNQ$(F3$,F$):F%=1%:S1$=RIGHT(SYS(CHR$(6%)+CHR$(-10%)+F1$),5%) 3040 I%=INSTR(1%,C1$,":"):IF I%=0% THEN N%=2% ELSE N%=INSTR(1%,"SNL", MID(C1$,I%+1%,1%)):IF N%=0% THEN PRINT "ILL OPT!":GO TO 70 3045 I%=0%:ON ERROR GO TO 3165 3050 CHANGE SYS(CHR$(6%)+CHR$(15%)+CVT%$(SWAP%(I%))+S1$) TO S% 3055 IF I%=0% THEN F%=2%:OPEN F2$ FOR OUTPUT AS FILE 3%:F%=1% 3060 S%(X%)=SWAP%(S%(X%))+S%(X%-1%) FOR X%=6% TO 28% STEP 2% 3070 PRINT #3%,RAD$(S%(8%));RAD$(S%(10%));".";RAD$(S%(12%)); 3080 IF N%=1% THEN 3150 3090 PRINT #3% USING " ### <###>",S%(14%),S%(16%); 3100 IF N%=2% THEN 3150 3110 PRINT #3%," ";DATE$(S%(18%)); 3120 IF S%(29%)=6% THEN PRINT #3%," ";:GO TO 3150 3130 PRINT #3%," ";DATE$(S%(20%));" ";TIME$(S%(22%));" "; 3140 PRINT #3% USING "###",S%(28%); 3150 PRINT #3%:I%=I%+1%:GO TO 3050 3165 IF ERR=5% AND I%=0% THEN PRINT F1$;" HASN'T ANY FILES!":RESUME 70 3170 IF ERR<>5% THEN 32000 ELSE IF INSTR(1%,F2$,"KB:")=0% THEN PRINT #3%,CHR$(26%); 3175 CLOSE 3%:RESUME 65 4000 E$=F3$:GO TO 70! *** EXT *** 5000 F$=F3$:GO TO 70! *** FROM *** 6000 C1$=C1$+":32767":GO TO 1000! *** OLD *** 7000 F%=1%:F1$=FNQ$(F3$,F$)! *** PROTECT *** 7120 I%=INSTR(1%,C1$,":"):IF I% THEN P$=RIGHT(C1$,I%+1%) ELSE P$="60" 7130 F1$=F1$+"<"+P$+">":NAME F1$ AS F1$:PRINT "PROTECT: ";P$:GO TO 70 8000 F%=3%:F2$=FNQ$(LEFT(F3$,I1%-1%),F$)! *** RENAME *** 8010 F1$=FNQ$(RIGHT(F3$,I1%+1%),F$):NAME F1$ AS F2$:PRINT F1$; " RENAMED.":GO TO 70 9000 CLOSE 1%:GO TO 32766! *** STOP *** 10000 T$=F3$:GO TO 70! *** TO *** 11000 C1$=F3$+"<"+F3$! *** TRANSFER *** 11010 I1%=INSTR(1%,C1$,"<"):GO TO 12000 12000 I2%=INSTR(I1%+1%,C1$,"<"):IF I2% THEN I1%=I2%! *** < *** 12010 F2$=FNQ$(LEFT(C1$,I1%-1%),T$):C1$=RIGHT(C1$,I1%+1%)+",," 12015 F%=1%:Z%=-1%:ON ERROR GO TO 12090 12020 I1%=INSTR(1%,C1$,","):I2%=INSTR(1%,C1$,"["):IF I2%=0% THEN 12040 12030 IF I1%>I2% THEN I1%=INSTR(I1%+1%,C1$,",") 12040 F1$=LEFT(C1$,I1%-1%):IF LEN(F1$)=0% THEN 12110 12050 F1$=FNQ$(F1$,F$):C1$=RIGHT(C1$,I1%+1%) 12060 OPEN F1$ FOR INPUT AS FILE 2%:L%=0% 12070 IF Z% THEN F%=2%:OPEN F2$ FOR OUTPUT AS FILE 3%:F%=1%:Z%=0% 12080 F%=1%:INPUT LINE #2%,L$:F%=2%:PRINT #3%,L$;:L%=L%+1%:GO TO 12080 12090 IF ERR<>11% THEN 32000 12100 PRINT USING "####",L%;:PRINT " LINE(S) IN ";F1$:CLOSE 2%: RESUME 12020 12110 PRINT #3%,CHR$(26%);:CLOSE 3%:GO TO 70 13000 P1$=F3$:GO TO 70! *** PROJ, PROG *** 32000! *** ERRORS *** 32010 E1$=RIGHT(SYS(CHR$(6%)+CHR$(9%)+CHR$(ERR)),3%) 32020 PRINT LEFT(E1$,INSTR(1%,E1$,CHR$(0%))-1%);": "; 32030 IF F%=1% THEN PRINT F1$ ELSE IF F%=2% THEN PRINT F2$ ELSE IF F%=3% THEN PRINT C1$ 32040 RESUME 65 32766 END