0 ' PIP V1.4 12/28/85 [c] 1985 by Woods Martin, Houston TX 713/621-3786 1 MAXFILES=2:CLEAR1024,MAXRAM:GOSUB15:SCREEN,0:PRINTSE"A"SE"K"; 5 OPENF3FORINPUTAS1 6 INPUT#1,S:DATE$=S:INPUT#1,S:DAY$=S:INPUT#1,S:GOSUB7:KL=K:S=TIME$:GOSUB7:K=KL+K+6:GOSUB8:TIME$=S:GOTO10 7 K=VAL(RIGHT$(S,2))+VAL(RIGHT$(S,5))*60+VAL(S)*3600:RETURN 8 S=RIGHT$("0"+MID$(STR$(INT(K/3600)),2),2)+":"+RIGHT$("0"+MID$(STR$(INT((K-INT(K/3600)*3600)/60)),2),2)+":"+RIGHT$("0"+MID$(STR$(INT(K-INT(K/60)*60)),2),2):RETURN 9 CLS:PRINTSP"V1.4"SLTAB(10)"** Honor System **"SL" If you like PIP please mail $10 to"SLTAB(13)"Woods Martin"SL" 5517 Sturbridge, Houston, TX 77056"SL;SL" Copyright 1985 All Rights Reserved" 10 CLOSE:KILLF3:GOTO25 15 DEFINTA-Z:DEFSTRC-G,S:DEFSNGK:KB=65450:FP="PIP":F1="PI1.DO":F2="PI2.DO":F3="PI3.DO":SQ=CHR$(34):SC=CHR$(13):SL=SC+CHR$(10):SE=CHR$(27):SR=SE+"p":SN=SE+"q":SP=SR+"pip"+SN+">":DIMC(40),FE(3):FE(1)=".BA ":FE(2)=".CO ":FE(3)=".DO ":ONERRORGOTO425:RETURN 20 OPENF1FORINPUTAS1:GOTO85 25 C="" 30 R=0:F=FP:ID=2:Y=1:G="":GOSUB615:IFT<>1THENG=SC+"SAVE"+SQ+FP+SQ+SC:GOTO700ELSEIFC>""THENGOSUB495:GOTO70ELSEIFMID$(DATE$,7,1)="0"THEN175 35 IA=0:PRINTSP;:LINEINPUTC:GOSUB495:IFC=""ORC="MENU"THEN660ELSEIFASC(C)=64THENC=MID$(C,2):GOTO70 40 IFASC(C)<>47THEN60ELSEZ=(INSTR("/L/C/F/R/I/D",LEFT$(C+" ",2))+1)/2+1:ONZGOTO135,45,50,55,145,155,175 45 GOSUB685:GOTO35 50 OPEN"CRT:"FOROUTPUTAS1:CLOSE1:CLS:SCREEN1:WIDTH40-40*(MID$(C,3)="W"):GOTO35 55 A=ASC(RIGHT$(C,1))-48:IFA=22THENFILES:PRINTFRE(0)"Bytes free":GOTO655ELSEIFA=0ORA=1THENLFILES(A):GOTO655ELSE135 60 IG=INSTR(C,"/G"):IFIGTHENIFIG=1THEN135ELSEC=LEFT$(C,IG-1) 65 GOTO125 70 IA=1:FI=C:FO=F1:GOSUB460:IFR=0ANDNTHENPRINT#2,"END" 75 CLOSE:IFN+R=0THENKILLF1 80 GOTO690 85 N=0:IA=1 90 LINEINPUT#1,S 95 IFLEN(S)=0THEN90ELSEA=ASC(S):IFA=59THEN90ELSEIFA=32THENS=MID$(S,2):GOTO95ELSEIFS="END"THEN105ELSEN=N+1:C(N)=S:GOTO90 100 N=0 105 CLOSE:IFN=0THENGOSUB665:GOTO20 110 OPENF1FOROUTPUTAS1:IFN>1THENFORI=IA+1TON:PRINT#1,C(I):NEXT 115 PRINT#1,"END":CLOSE:IFIA=0THENRETURN 120 C=C(1):GOSUB495:IFC="L25"THEN690 125 R=0:GOSUB505:IFZ=0THEN135ELSEIFIGTHENGOSUB405:IFA=2THEN10 130 GOTO195 135 S="invalid command":IFIATHENPRINTC 140 GOSUB650:GOTO20 145 IFMAXRAM=62960THEN655ELSEGOSUB150:CALL32454:POKE62966,201:RUN 150 GOSUB685:PRINT"Disk Basic disabled":RETURN 155 IFMAXRAM<62960THEN655ELSEPRINT"installing Disk Basic"SL"turn DVI ON ";:BEEP:INPUTS:PRINT"select PIP.BA to complete":CLOSE:OPENF3FOROUTPUTAS1:PRINT#1,DATE$SL;DAY$SL;TIME$:CLOSE:BEEP:CALL27862:S="DVI not available":GOSUB650:KILLF3:GOTO20 175 CLS 180 PRINTSE"Y "DATE$" <1> "DAY$" <2> "TIME$" <3>"SL" Item to Change (ENTER if ok) ? "SE"J"CHR$(239);:S=INKEY$:IFS=""THEN180ELSEA=ASC(S):IFA=13THENCLS:RUNELSEIFA<49ORA>51THEN180ELSEPRINTCHR$(13)SE"J"; 185 S="":IFA=49THENINPUT"Date";S:IFS>""THENDATE$=SELSEELSEIFA=50THENINPUT"Day";S:IFS>""THENDAY$=SELSEELSEINPUT"Time";S:IFS>""THENTIME$=S 190 GOTO180 195 IFZ=5THEN365ELSEIF(Z<5ANDID=OD)OR(Z>5ANDID>2)OR(Z=7ANDID<>OD)OR(WIAND((Z>1ANDZ<5)ORIAOR(ID>2)))THEN135 200 IFWI+WO=0THENT=Z-1:ONZGOTO280,300,300,300,135,370,370ELSEFH=FO:EH=EO:IFWI=0THENF=FI:FD=FI:E=EI:ED=EI:GOTO220ELSEGOSUB625:F=FI+SPACE$(6-LEN(FI)):E=EI:N=3:C(1)="":C(2)="":C(3)="" 205 GOSUB630:IFT<0THEN250 210 IFFD=FP+" "ANDT=1ANDOD=3THEN205ELSEIFOD=2THENEO=FE(T)ELSEIFOD>2THENEO="" 215 IFWITHENC=F+E:GOSUB495:X=0:FORI=1TOLEN(FD+ED):X=X+(MID$(C,I,1)<>"?"ANDMID$(C,I,1)<>MID$(FD+ED,I,1)):NEXT:IFXTHEN205 220 IFZ=6ORWO=0THEN230ELSEFO="":FORI=1TOLEN(FD):IFMID$(FH,I,1)="?"THENFO=FO+MID$(FD,I,1):NEXTELSEFO=FO+MID$(FH,I,1):NEXT 225 IFOD<2THENEO="":FORI=1TOLEN(ED):IFMID$(EH,I,1)="?"THENEO=EO+MID$(ED,I,1):NEXTELSEEO=EO+MID$(EH,I,1):NEXT 230 FI=FD:EI=ED:IFZ=7AND(DO<>DI)THEN135ELSEIFWI=0THEN305 235 FM="":IFZ>5ANDFI+EI="PIP .BA "THEN205ELSEN=N+1:FI=DI+FI+EI:IFZ=6THENC(N)="KILL "+FIELSEIFZ=7THENC(N)="NAME "+FI+";"+FO+EOELSEC(N)="C"+FE(T)+FI+";"+DO+FO+EO:IFT=2THENGOSUB340 240 IFIG>=0THENPRINTC(N);:GOSUB410:IFA<>1THENN=N-1:GOTO205 245 IFZ>5ORT<>2THEN205ELSEIO=INSTR(C(N),";"):C(N)=LEFT$(C(N),IO-1)+FM+MID$(C(N),IO):GOTO205 250 IFN=3THENS="no match":GOTO140ELSEIFZ>5OROD<0THEN270ELSEIFOD=3THENFC="C"ELSEIFOD>1THEN270ELSEPRINTSL" >Restore file (1-9) none = 0 ? ";:S=INPUT$(1):PRINTS:IFS="0"THEN270ELSEIFS<"1"ORS>"9"THENGOSUB650:GOTO250ELSEFC="PIPCMD."+S 255 OPENF2FOROUTPUTAS2:FC=DO+FC:C(3)="C.DO "+F2+";"+FC:PRINT#2,";"F;E" "DATE$:IFOD=3THENC(1)="C.BA PIP.BA;CAS:PIP":C(2)="L25" 260 FORI=4TON:C=C(I):IS=INSTR(C," "):IO=INSTR(C,";"):CC=LEFT$(C,IS):FI=MID$(C,IO+1):FO=MID$(C,IS+1,IO-IS-1):FM="":M=INSTR(FO,","):IFMTHENFM=MID$(FO,M):FO=LEFT$(FO,M-1) 265 PRINT#2,CC;FI;FM";"FO:NEXT 270 IA=0:GOSUB110:IFOD=3THENPRINTSL"Cassette ready? ";:IG=0:GOSUB410:IFA=2THENGOSUB665ELSEG="CAS:C":GOTO695 275 PRINTSL:RUN 280 IFID<2THENOPENDI+FI+EI FORINPUTAS1:CLOSE1 285 T=-(EI>"")*INSTR(".BA .CO .DO ",EI):IFT=0THENT=-(EO>"")*INSTR(".BA .CO .DO ",EO) 290 T=-(T>0)*(1+T/4):IFTTHEN300 295 PRINT"File Type .BA=1 .CO=2 .DO=3 ? ";:S=INPUT$(1):T=INSTR("123",S):IFS=""ORT=0THENPRINT"ERROR":GOTO295ELSEPRINTS 300 IFOD=2THENEO=FE(T)ELSEIFEO=""THENEO=EI 305 GOSUB585:ONTGOTO310,315,360 310 G="SAVE"+SQ+FO+SQ+SC:GOSUB715:PRINTSR" load "SN;FI:LOADFI:END 315 IFIATHEN320ELSEIFID<3THENY=2:GOSUB615:IFT=2THENGOSUB340ELSES="file not found":GOTO140 320 X=INSTR(M+1,FM,","):Y=INSTR(X+1,FM,","):IFM=0ORX=0ORY=0THENS=FM+" - bad addresses":GOTO140ELSEKL=VAL(MID$(FM,M+1,X-M-1)):KH=VAL(MID$(FM,X+1,Y-X-1)):IFKH>MAXRAMTHENIFINSTR(FI,":")=2ORINSTR(FO,":")=2THENS=FM+" exceeds MAXRAM":GOTO140 325 OPENF2FOROUTPUTAS2:PRINT#2,FI","FO;FM:CLOSE2:IFKH>MAXRAMTHENGOSUB150:CALL32454:CLEAR1024,MAXRAM:GOSUB15 330 OPENF2FORINPUTAS2:INPUT#2,FI,FO,KL:CLOSE:PRINTSR" loadm "SN;FI:CLEAR1024,KL-1:GOSUB15:OPENF2FORINPUTAS2:INPUT#2,FI:CLOSE:LOADMFI:IFFP$=""THENGOSUB15 335 OPENF2FORINPUTAS2:INPUT#2,FI,FO,KL,KH,KE:CLOSE:KILLF2:PRINTSR" savem "SN;FO;KL;KH;KE:GOSUB710:SAVEMFO,KL,KH,KE:END 340 IFID=2THENKA=256*PEEK(KD+2)+PEEK(KD+1):KL=256*PEEK(KA+1)+PEEK(KA):KH=KL+256*PEEK(KA+3)+PEEK(KA+2)-1:KE=256*PEEK(KA+5)+PEEK(KA+4):FM=","+STR$(KL)+","+STR$(KH)+","+STR$(KE):GOTO355 350 OPENFI FORINPUTAS2:S=INPUT$(6,2):CLOSE2:FM=","+STR$(256*ASC(MID$(S,2))+ASC(S))+","+STR$(256*ASC(MID$(S,4))+ASC(MID$(S,3))-1)+","+STR$(256*ASC(MID$(S,6))+ASC(MID$(S,5))) 355 M=1:RETURN 360 GOSUB460:CLOSE:GOTO655 365 GOSUB585:G="RUN"+SQ+FI+SC:GOTO680 370 IFFI=""OREI=""THEN135ELSEIFDO=""THENDO=DI 375 IFFO=""THENFO=FI 380 IFEO=""THENEO=EI 385 Y=(ID=2)AND(FI=FP)AND(EI=".BA "):IFYAND(Z=7)THEN135ELSEFI=DI+FI+EI:FO=DO+FO+EO:IFIATHENPRINTC 390 IFIA=0THENGOSUB405:IFA=2THEN400 395 IFYTHENG="KILL"+SQ+FI+SQ:GOTO660ELSEIFZ=7THENNAMEFI$ASFOELSEGOSUB710:KILLFI 400 POKEKB,0:GOTO655 405 PRINT"confirm "; 410 A=1:IFIG<0THENPRINT:RETURNELSEIFIG>0THENIG=-1 415 PRINT" YNQ?";:S=INPUT$(1):A=INSTR("YyNnQq",S):IFA=0THENA=2ELSEA=1+A/2.5:IFA=3THENGOSUB665:CLS:RUN 420 PRINTS:RETURN 425 POKEKB,0:R=ERR:IFERR=7THEN450ELSEIFERL=5THENRESUME20ELSEIFERL=6THENRESUME9ELSEIFERL=20THENRESUME25ELSEIFERL=90THENRESUME100ELSEIFERL=665THENRESUME670ELSEIFERL=670THENRESUME675 430 IFR=52THENS="file not found"ELSEIFR=55THENS="bad file name"ELSEIFERL=50ORERL=55ORR=60THENS="device not available"ELSE440 435 GOSUB650:IFERL=460THENRESUME480ELSERESUME20 440 IFERL=470ANDR=54THENIFN>0THENR=0:RESUME480ELSES=FI+" - file empty":PRINT:GOSUB650:R=0:RESUME 480 445 IFERL>120ANDERL<650THENRESUME135 450 RESUME 455 455 PRINTCHR$(7)SL"Fatal ERROR"R"at line"ERL:CLOSE:END 460 PRINTSR" copy "SN;FI";"FO" ";:R=0:N=0:OPENFI FORINPUTAS1 465 OPENFOFOROUTPUTAS2 470 LINEINPUT#1,S:IFLEN(S)=255THENPRINT#2,S;ELSEPRINT#2,S 475 N=N+1:GOSUB490:GOTO470 480 IFR=0THENPRINT 485 RETURN 490 IFOD<0THENRETURNELSEJ=(J=0):IFJTHENPRINT"*"CHR$(8);:RETURNELSEPRINT" "CHR$(8);:RETURN 495 L=LEN(C):IFL=0THENRETURNELSEIFASC(C)=32THENC=MID$(C,2):GOTO495ELSEFORI=1TOL:A=ASC(MID$(C,I)):IFA>96ANDA<123THENMID$(C,I,1)=CHR$(A-32) 500 NEXT:RETURN 505 M=0:IS=INSTR(C," "):IFIS=0THENCC=C+" ":CA=""ELSECC=LEFT$(C,IS):CA=MID$(C,IS+1):IFCC="K "THENCC="KILL "ELSEIFCC="N "THENCC="NAME " 510 CC=" "+CC:Z=INSTR(" COPY C.BA C.CO C.DO RUN KILL NAME ",CC):Z=-(1+Z/6)*(Z>0):IFZ=0THENZ=1:CA=C 515 IO=INSTR(CA,";"):IFZ=3THENM=INSTR(CA,","):IFM=0THENZ=0:GOTO550ELSEFM=MID$(CA,M,IO-M):CA=LEFT$(CA,M-1)+MID$(CA,IO):IO=M:M=1 520 I1=1:IFIO=0THENF=CA:GOSUB570:DI=D:ID=Y:EI=E:FI=F:DO="RAM:":OD=2:EO=E:FO=F:GOTO525ELSEF=LEFT$(CA,IO-1):GOSUB570:DI=D:ID=Y:EI=E:FI=F:F=MID$(CA,IO+1):I1=0:GOSUB570:DO=D:OD=Y:FO=F:EO=E 525 IFZ=0THEN550ELSEIFDO=""THENDO=DI:OD=ID 530 F=FI:E=EI:GOSUB555:FI=F:EI=E:WI=I 535 IFFO=""THENFO=FI 540 IFEO=""THENEO=EI 545 F=FO:E=EO:GOSUB555:FO=F:EO=E:WO=I: 550 RETURN 555 I=INSTR(F,"*"):IFITHENF="??????" 560 I=INSTR(F,"?"):I1=INSTR(E,"*"):IFI1THENE=".???" 565 I=I+INSTR(E,"?"):RETURN 570 Y=INSTR(F,"."):IFYTHENE=MID$(F,Y):E=E+SPACE$(4-LEN(E)):F=LEFT$(F,Y-1)ELSEE="" 575 Y=INSTR(F,":"):IFYTHEND=LEFT$(F,Y):F=MID$(F,Y+1)ELSEIFZ<7ORI1THEND="RAM:" 580 Y=INSTR(" 0: 1: RAM: CAS: COM: MDM:"," "+D):IFYTHENY=Y/5:RETURNELSEY=-1:RETURN 585 IFFO=""ANDOD>=0ANDOD<4THENFO=FI 590 IFOD=2THENDO="" 595 IFID=2THENDI="" 600 IFOD>2THENEO="" 605 IFID>2THENEI="" 610 F=FI:FI=DI+FI+EI:FO=DO+FO+EO:RETURN 615 F=F+SPACE$(6-LEN(F)):GOSUB625 620 GOSUB630:IFT<0OR(F=FDANDT=Y)THENRETURNELSE620 625 IFID=2THENKD=63919-11:RETURNELSEO=1:P=0:Q=0:RETURN 630 FD="":IFID=2THENKD=KD+11:IFKD>64128THENT=-1:RETURNELSET=PEEK(KD):T=-(T=128)-2*(T=160)-3*(T=192):IFT=0THEN630ELSEFORX=3TO8:FD=FD+CHR$(PEEK(KD+X)):NEXT:ED=FE(T):RETURN 635 FD=MID$(DSKI$(ID,20,O,P),1+16*Q,10):IFLEN(FD)THENA=ASC(FD):IFA=255THEN645ELSEIFA>32THENT=ASC(RIGHT$(FD,1)):T=-3*(T=0)-2*(T=1)-(T=128):ED="."+MID$(FD,7,3):FD=LEFT$(FD,6) 640 Q=-Q*(Q<15)-(Q<15):P=P-(Q=0):P=-P*(P=1):O=O+(P=0)*(Q=0):IFO<16THENIFLEN(FD)ANDA>3THENRETURNELSE630 645 T=-1:RETURN 650 CLOSE:BEEP:PRINTSL;S" "SR"ERROR"SN;:IFRTHENPRINTR"at"ERL;SL:RETURNELSEPRINTSL:RETURN 655 PRINT"Ok"SL:GOTO20 660 GOSUB665:OPENF3FOROUTPUTAS1:CLOSE:G=G+SC+"MENU"+SC:GOSUB685:GOTO680 665 CLOSE:KILLF1 670 KILLF2 675 RETURN 680 GOSUB720:MAXFILES=1:CLEAR256,MAXRAM:NEW:END 685 BEEP:PRINTSE"edisplay on LCD"SE"f":SCREEN0:CLS:RETURN 690 G="" 695 G=SC+"25 C="+SQ+G+SQ+SC 700 GOSUB715:END 710 G="" 715 G=G+SC+"RUN"+SQ+FP+SQ+SC 720 L=LEN(G):POKEKB,L:IFL=0THENRETURNELSEI=0:FORK=KB+1TOKB+2*LSTEP2:I=I+1:POKEK,ASC(MID$(G,I)):POKEK+1,0:NEXT:RETURN