0 'Club 100 Library - 415/939-1246 BBS 937-5039 NEWSLETTER, 932-8856 VOICE 1 REM CRUNCH.BA 2/3/86 by Dan Thomas. Compress .DO files to 75% of original; SAVEd with <> extension. 5 GOTO200 10 I=ASC(INPUT$(1,1)):P=0:FORN=1TO46:IFT(N)=ITHENP=N:N=46 15 NEXT:IFP=0THENP=255 20 IFP=1THENA=1ELSEIFP<16THENB=B*2:L=L+1:GOSUB50:A=P-1:P=4ELSEB=B*32+15:L=L+5:GOSUB50 25 IFP>15THENIFP<47THENA=P-16:P=5ELSEB=B*32+31:L=L+5:GOSUB50:P=8:A=I 30 L=L+P:B=B*2^P+A:GOSUB50:IFNOTEOF(1)THEN10ELSEIFL>0THENB=B*2^(8-L):L=8:GOSUB50:GOTO500ELSE500 50 IFL<8THENRETURNELSEL=L-8:C=B:B=BAND2^L-1:V=(BXORC)/2^L:IFV=26THENV=1:S=1ELSEIFV=127THENV=2:S=1ELSEIFV=0THENV=3:S=1 60 IFS=1THENPRINT#2,CHR$(128);:X=X+1:S=0:PRINTJ; 70 PRINT#2,CHR$(V);:X=X+1:RETURN 110 V=0:IFB>=2^(L-1)THENV=T(1):L=L-1:GOTO140ELSEL=L-5:V=B/2^L:IFV=0THEN500 120 IFV<15THENV=T(V+1)ELSEB=BAND2^L-1:GOSUB150:L=L-5:V=B/2^L:IFV<31THENV=T(V+16)ELSEB=BAND2^L-1:GOSUB150:L=L-8:V=B/2^L 140 B=BAND2^L-1:PRINT#2,CHR$(V);:X=X+1:GOSUB150:GOTO110 150 IFL>7ORE=1THENRETURN 170 V=I:IFEOF(1)THENE=1ELSEI=ASC(INPUT$(1,1)):K=K+1 175 IFV=128ANDI<4THEN180ELSEB=B*256+V:L=L+8:RETURN 180 PRINTJ;:IFI=1THENI=26ELSEIFI=2THENI=127ELSEIFI=3THENI=0 190 GOTO170 200 MAXFILES=3:DEFINTA-Z:DEFSNGB:DEFSTRF-H,J:DIMT(46):K=0:X=0:I=0:V=0:L=0:B=0:P=0:A=0:N=0:R=0:S=0:C=0:E=0:M=0 210 J=CHR$(255):F="":G="":H="":CLS:PRINT:FILES:INPUT"FILENAME";F:INPUT"CRUNCH(<0>) OR EXPAND(1)";N 215 IFN=0ANDRIGHT$(F,2)<>"<>"THENG=LEFT$(F,4)+"<>"ELSEIFN=1ANDRIGHT$(F,2)="<>"THENG=LEFT$(F,LEN(F)-2)ELSE210 220 F=F+".DO":PRINT"KILL "F" WHEN DONE (Y OR )";:INPUTH:OPENFFORINPUTAS1:OPENGFOROUTPUTAS2:IFN=1THEN400ELSEDIMD(127) 300 K=K+1:I=ASC(INPUT$(1,1)):IFI<128THEND(I)=D(I)+1 310 IFNOTEOF(1)THEN300ELSEFORN=1TO46:FORM=0TO127:IFD(M)>=D(T(N))THENT(N)=M 320 NEXT:PRINTJ;:X=X+1:IFT(N)<>127THENPRINT#2,CHR$(T(N));ELSEPRINT#2,CHR$(T(N-1));:N=46 330 D(T(N))=0:NEXT:CLOSE1:OPENFFORINPUTAS1:GOTO10 400 FORN=1TO46:T(N)=ASC(INPUT$(1,1)):K=K+1:IFT(N)=T(N-1)THENN=46 410 NEXT:GOSUB170:L=0:GOSUB170:GOTO110 500 BEEP:CLS:PRINT@284,F" ="K" "G".DO ="X:IFH="Y"THENKILLF