LIST 10 PRINT:PRINT"PIP - VER 5.0" 20 CLEAR 0:X=FRE(0)-1500:IF X<0 THEN CLEAR 600 ELSE IF X>32000 THEN CLEAR 32000 ELSE CLEAR X 30 DIMT2(15):FORY=0TO15:T2(Y)=-1:NEXTY:PRINT"*";:LINEINPUTB$ 40 IFB$=""THENCLEAR200:END 50 IF LEN(B$)>3 THEN C$=RIGHT$(B$,LEN(B$)-3) ELSE C$=B$ 60 B$=LEFT$(B$,3) 70 IFB$="DAT"THEN680 80 IFB$="COP"THEN870 90 IFB$="LIS"THEN800 100 IF B$="CNV" THEN 1040 110 IFB$="DIR"THENF=-1:GOTO270 120 IF B$="SRT" THEN F=0:DIMA$(255):GOTO270 130 IFB$<>"INI"THENPRINT"ERR":GOTO20 140 GOSUB 760 150 A$=STRING$(137,0):MID$(A$,136,1)=CHR$(255) 160 FORT=6TO76 170 FOR S=0 TO 31 180 MID$(A$,1,2)=CHR$(T)+CHR$((S*17)AND31) 190 GOSUB 600:DSKO$ A$,S 200 NEXT S,T 210 T=70:GOSUB 600 'DIRECTORY TRACK 220 A$=CHR$(70)+CHR$(0)+CHR$(0)+CHR$(128)+CHR$(127)+CHR$(0) 230 A$=A$+CHR$(0)+CHR$(255)+STRING$(127,0)+CHR$(255) 240 DSKO$A$,0 250 PRINT:PRINT"DONE" 260 GOTO20 270 GOSUB760:T=70:GOSUB600 290 PRINT 300 PRINT"DIRECTORY DISK";A 310 PRINT:I=0 320 FORS=0TO31 330 A$=DSKI$(17*SAND31) 340 A$=LEFT$(A$,135) 350 A$=RIGHT$(A$,128) 360 FOR T=0 TO 7 370 B$=LEFT$(A$,(T+1)*16) 380 B$=RIGHT$(B$,16) 390 N$=LEFT$(B$,8) 400 B$=RIGHT$(B$,8) 410 X=ASC(B$):B$=RIGHT$(B$,7):Y=ASC(B$) 420 B$=RIGHT$(B$,6):Z=ASC(B$) 430 IFASC(N$)=0THEN470 440 IFASC(N$)=255THEN490 450 R$="S":IFZ<>2THENR$="R" 460 IF F THENPRINTN$;" ";R$;" ";X;" ";Y ELSE A$(I)=N$+" "+ R$+" "+STR$(X)+" "+STR$(Y):I=I+1 470 NEXTT 480 NEXTS 490 IF F OR I=0 THEN PRINT:GOTO 20 500 IF I=1 THEN 560 510 SW=0 520 FOR J=0 TO I-2 530 IF A$(J)>A$(J+1) THEN SWAP A$(J),A$(J+1):SW=-1 540 NEXT 550 IF SW THEN 510 560 FOR J=0 TO I-1 570 PRINT A$(J) 580 NEXT 590 PRINT:GOTO20 600 IFT2(A)<>-1THEN640 610 IF(INP(8)AND64)=0THENT2(A)=0:GOTO640 620 WAIT8,2,2:OUT9,2 630 GOTO610 640 IFT2(A)=TTHENRETURN 650 D=1:IFT2(A)>TTHEND=2 660 WAIT8,2,2:OUT9,D:T2(A)=T2(A)-2*(D-1.5) 670 GOTO640 680 INPUT"TRACK";T:IF T<0 THEN 20 ELSE INPUT"SECTOR";S 690 GOSUB760:GOSUB600 700 A$=DSKI$(S):FORI=0TOLEN(A$)-1 710 T1$=OCT$(ASC(RIGHT$(A$,LEN(A$)-I))) 720 T2$=LEFT$(" 000",5-LEN(T1$))+T1$: PRINT T2$; 730 IF I MOD 8=7 THEN PRINT 740 NEXT I: PRINT 750 GOTO 680 760 A=VAL(C$) 770 IFA<0ORA>15THENPRINT"ERR":GOTO20 780 OUT8,128:OUT8,A 790 RETURN 800 GOSUB760 810 C$=RIGHT$(C$,LEN(C$)-1+(A>9)):IFASC(C$)<>&O54THENPRINT"ERR":GOTO20 820 C$=RIGHT$(C$,LEN(C$)-1) 830 OPEN"I",1,C$,A 840 IFEOF(1)THENCLOSE1:GOTO20 850 LINEINPUT#1,A$ 860 PRINTA$:GOTO840 870 GOSUB760:B=A 880 C$=RIGHT$(C$,LEN(C$)-1+(A>9)):IFASC(C$)<>&O54THENPRINT"ERR":GOTO20 890 C$=RIGHT$(C$,LEN(C$)-1):GOSUB760:C=A 900 PRINT"FROM ";B;" TO ";C; 910 INPUTA$:IFASC(A$)<>ASC("Y")THEN20 920 FORT=0TO76 930 OUT8,128:OUT8,C 940 A=C:GOSUB600:OUT8,128:OUT8,B:A=B:GOSUB600 950 FORS=0TO31 960 OUT8,128:OUT8,B:B$=DSKI$(S) 970 F$=DSKI$(S):IFF$<>B$THENPRINT"REREAD":GOTO960 980 OUT8,128:OUT8,C 990 DSKO$B$,S:C$=DSKI$(S):IFC$<>B$THENPRINT"REWRITE":GOTO950 1000 NEXTS 1010 NEXTT 1020 PRINT"DONE" 1030 GOTO20 1040 GOSUB 760 'ENABLE DISK 1050 FOR T=6 TO 76 1060 GOSUB 600 'POSITION TO TRACK T 1070 FOR S=0 TO 31 1080 A$=DSKI$(S): IF ASC(MID$(A$,3,1))<>0 THEN 1120 1090 IF MID$(A$,136,1)=CHR$(255) THEN 1120 1100 MID$(A$,136,1)=CHR$(255) 1110 DSKO$ A$,S 1120 NEXT S 1130 NEXT T: GOTO 20 OK