\l X;SAVE#D3:ARC:ARC2.M65X;EOUT'PRINTEMP(&PRINTEMP2 EOUTCH< %PRINTEMPF$PRINTEMPP:ZX;dERETURNQ>nX;x EOUTCH5 EOUTCH27:X; EOUTCH2? EMD1Q>5 EMD2Q>5C$>:X;KGETCH KGET2)> EKGETCH":,X;6 KGET2$>0@Q>JPB9TQ>^PH9hPI9r!V|X; PRINT&' PR1%>Q@7FPR2PR3 EOUTCH)>EPR3#HPR1#HPR1PR2:X;CLOSE0$> ,&CLOSE1$>0 ,:CLOSE2$> D ,NCLOSE3$>0X ,bCLOSE4$>@l ,vCLOSE6$>`Q> PB9!VX;ERRORTRAP)> EERT1: ERT1'Q>P &OFFSET SCREENON $OFFSET(> ;;WRITE ERR?  FERT11$>DISKER %>DISKER* HERT124ERT11$>DISKERW>%>DISKERWHERT12 PRINTR PRTNUM\7f7pERT2 CLOSE1zQ`R>F?F1 DODEST CLOSE2?F1 CLOSE6 SCREENON ERETURNQ>P QBATCHFLG FERT2Z !DUMPOUTERT2Z$>PRESR%>PRESR PRINT KGETCH$ !MAIN.&DISKER =A #A=8(DISKERW =A #A=B.PRESR =APress to continue...A=LX;V PRTNUM` j t%>~ PNM1Q@75M> EOUT37 IPNM1:X;X;GET1QSBZLEN HGET1DLSBZLEN HGET1AA Q>;;load buffer upPR QSBUFF(PT2 PGET1C< QSBUFFFPUP PGET1CZ QEOFFLGd HGET1B1n DOSOURx$> QSBLENPH9 QSBLENPI9 #MOREPASS V)> DGET1B)> FGET1B2!ERRORTRAPGET1B2#EOFFLGGET1BQH9 PSBZLENPMOREPASSQI9"PSBZLEN,PMOREPASS6 LSBZLEN@ HGET1AJGET1B1;;;eof statusT:^GET1AQSBZLENh HGET1DrGET1AA"SBZLEN|GET1D"SBZLEN GET1CQ #SRCLEN HGET1F#SRCLEN HGET1F#SRCLENGET1F#GET1C HGET1E #GET1C GET1E>NCRC?;;do ARC CRC QCRCLO8 NCRCPCRC QCRCHI8& PCRC0A:,D:NX;XPUT2%PASSLOCb FPUT22lNPASSWORD8v3 )PASSLEN DPUT2N%>PUT2N'PASSLOCPUT22P;;store byte #PUT22 HPUT2L #PUT22PUT2LQDBZLEN HPUT2B"DBZLENPUT2B"DBZLEN FPUT2BB: PUT2BBQDBZLEN FPUT2D X;* PUT2C:4X;>PUT2D&TEMP2H DODESTR DOOPEN\Q> f$> pPB9z QDBUFFPD9 PPUT22 QDBUFFPE9 PPUT22 QDBLENPH9 PDBZLEN QDBLENPI9PDBZLEN V I?FIX2 !ERRORTRAP ?FIX2$TEMP2 !PUT2C$ X;. FINISHEDQPUT28 RDBUFFB HFINI1L !QPUT2;;ANYTHING IN BUFFER?V RDBUFF` FFIN2j FINI1 DODESTt DOOPEN~ Q> $> PB9 QDBUFF PD9 PPUT22 QDBUFF PE9 PPUT22 ; QDBLEN SDBZLEN PH9 QDBLEN SDBZLEN PI9 QDBLEN( PDBZLEN2 QDBLEN< PDBZLENF $> P  VZ IFIN2d !ERRORTRAPn FIN2:x X; DOOPEN$> Q@9;;IS IOCB CLOSED? R>;;(1 FILE, MYDOS BUG) FDOOP1 : DOOP1 DODEST DOIO   =;;open #2,9,0  SFNAME==  ERRORTRAP : X; $X;THE CRC TABLE (LOW BYTES FIRST) X; CRCLO  ===@====A"  ===A====@,  ===A====@6  ===@====A@  ===A====@J  ===@====AT  ===@====A^  ===A====@h  ===A====@r  ===@====A|  ===@====A  ===A====@  ===@====A  ===A====@  ===A====@  ===@====A  ===A====@  ===@====A  ===@====A  ===A====@  ===@====A  ===A====@  ===A====@  ===@====A  ===@====A  ===A====@  ===A====@&  ===@====A0  ===A====@:  ===@====AD  ===@====AN  ===A====@X X;b CRCHIl  =======v  =======  = = =====   === == ==Ȕ  =======  =======ܨ  =======ֲ  =======  =0=1==3===2  6===7==5=4=  <======?=>=  =:=;==9===8  (===)==+=*=  =.=/==-===,  =$=%=='===&  "===#==!= =  =`=a==c===b  f===g==e=d=  l===m==o=n=*  =j=k==i===h4  x===y=={=z=>  =~===}===|H  =t=u==w===vR  r===s==q=p=\  P===Q==S=R=f  =V=W==U===Tp  =\=]==_===^z  Z===[==Y=X=  =H=I==K===J  N===O==M=L=  D===E==G=F=  =B=C==A===@ X; ARCTEMP AARCTEMP.ARCA 3ADDERM =AError: File cannot be appended.A= X; TITLE } 4 =AEnter complete destination filename:A== 8DSTPN =ASource Filemask (drive # for dir):A== #INVP =AA= 1 AExamples: D1:TEST.BAS, or D2:DIR>*.*A==FUNARM =A to quit, athname, ۱ dirsA==ACrunch A=X;6INSRC =AInsert disk, press A==$;INDES =AInsert Disk, press A==.DCHGPARM ==AUse , - toggle, - exitA==8X;BTITLEM  =}L1 AA=V1 A|Screen Off:Yes Password Encrpt:No!|A=`1 A|Disk Swaps:No! Use Crunch only:No!|A=j/ A| Compact w/query:No! |A=t/ AA=~ ) A A=) A |㡠򮠲|A=) A |By: Robert Puff 01/89|A=/ AA=/ A| ARChive file(s) |A=/ A| Add to an ARChive |A=/ A| Change above parameters |A=/ A| Delete a file |A=/ A| Format a disk |A=/ A| Re-boot (ColdStart) |A=/ A| Exit to DOS |A=/ A|۱ Disk Directories |A=/ AA=  =ASelect >A=INIT@( &DOSSTACK2 CALCMEM<Q>FPRPMAINZ QBATCHFLGd FMA00n!BATIN2;;PROCESS!xX;MA00$>TITLEM%>TITLEM PRINT MA2Q> PUT?PTQ> EOUTCHQ> EOUTCHQ> PADDFLAGMA22 KGETCHR>`"DMA3,S> 6 MA3PCHAR@R>1JDMA4TR>:^EMA4h DIRECTr!MA2| MA4R> GHMA5!w;;REBOOT MA5R> HHMA6 ERETURN !DUMPOUTX; MA6R> PHMA7 PARMS!MA2 MA7!MA9X;X;REVER%OFFSET$>&)>0 DREV1:$>DREV1QOFFTAB8N?X REV2Q@X7bN>lP@X7v30 HREV2:X;OFFTAB +=S==;=c=OFFTAB2 6=^==K=s=NOTAB ANo!YesA ANo!YesAX; CHNGREV5 REVER %OFFSET QOFFTAB28? Q> PREPFLG 7*$>4R>> FCRV1H$>RCRV1QNOTAB9;;ON SCR\P@X7fQNOTAB9;;AND IN PRINTp PTITLEM8z23 "REPFLG HCRV1 REVER !BELLX; PARMSQ> POFFSET$>CHGPARM%>CHGPARM PRINTPAR1 REVERPAR0 KGETCHR> HPAR2 REVER$Q>. EOUTCH8Q>;;DELETEB EOUTCHL:;;EXIT WITH ESCV PAR2R> -` FPARUPjR> =t FPARDN~R> + FPARLFR> * FPARRTR> HPAR0 %OFFSET QOFSTAB38?Q8N>P8 CHNGREV !PAR0 OOFSTAB3 SCROFF=SWAPFLG=QUERY=PASSFLG=CRUNONLY=QUERYPARUP REVER DEOFSET( !PAR12PARDN REVER< INOFSETF !PAR1P PARLFZPARRT REVERd INOFSETn INOFSETx INOFSET !PAR1X;INOFSET#OFFSET QOFFSETR> DINOF1Q> POFFSET INOF1:X;DEOFSET"OFFSET IINOF1Q> POFFSET:X;"X;, DOIO76P;;code from mr. mydos@7JPT%>^Q@7h >;;iocb #r3|Q@7PB93Q@7PD93Q@7PE93Q@7PH93Q@7PI93Q@7PJ9&30Q@7:PK9DCN,XOb?lQ>vO5C5!V;;do it!X;X; MA9R> A FMA9AR> B HMA10 #ADDFLAGMA9A EOUTCH!IN1 X; MA10R> F  FMA11*R> D4 FMA12> !MA22HX;RMA12!KILLF\X;fMA11 EOUTCHp FORMATz !MAINX;BELLQ>;;RING!PҢQ>%PҶ%> BEL1$> BEL2& 0 HBEL21')> HBEL1:X;$X;.IN1$>TITLE8%>TITLEB PRINTL ENTSRCV!IN2`X; ** DUMP OUT **jDUMPOUT$>t DUM1Q> ~PB9 VA;;close all IOCBs,O>> IDUM1 SAVSCR OPENSCR RSTSCR QRESTCLRPQRESTCLRP  $DOSSTACKBQSPARTAF;;IS THIS SPUDDO?(HDU12!@ :<DU1:FX;POPENSCRQ> ZP*d EMD3Q>n5x EMD4Q>5:X;X; OPEN THE SOURCE FILEFNADD A.ARCA=X;BATIN2QSRCFLENPHX;IN2 CLOSE1 CLOSE2%H1IN25AQSFNAME8R> .;;FIX TOPDOSFBFN"1, IIN25A6%H@1J$>TIN25QFNADD9^ PSFNAME8h3r2|(> DIN25X;BFNQSFNAME8 SUBCMP FBFN21IBFNBFN2'SAVEBBFN3QSFNAME8 PDFNAME81 IBFN3 %SAVEB3$>BFN4QARCTEMP9& PDFNAME803:2D(> N DBFN4XQ>;;terminatorb PDFNAME8l3v $SAVEB2BFN5QSFNAME9 PDFNAME832R> HBFN5X;X;%> IN27ZQ> PEOFFLG PPASSLOC PSBZLEN8  QDBLEN8 PDBZLEN8  QDBUFF8*PPUT22841> IIN27ZH QADDFLAGR HIN27C\ !IN27DfX;pIN27C DOIOz =;;open #1 SFNAME==;;for read ERRORTRAP DOIO  = DFNAME==;;for write ERRORTRAP QSWAPFLGPCODE;;store tempQ>PSWAPFLG;;off during addADD1 GET1 EADDERR PHEADER GET1PHEADERR>$ HADD2." FINISHED;;empty output buffer8 CLOSE2B CLOSE1L DOIOV =!;;delete` SFNAME==j ERRORTRAPtX;~%>BFN7QDFNAME8R> FBFN83 HBFN7BFN8Q> ,;;for rename PDFNAME8 DOIO = ;;rename DFNAME== ERRORTRAP QCODEPSWAPFLG;;restore flag  !ADDNEXTX;ADDERR$>ADDERM(%>ADDERM2 PRINT< CLOSE1F CLOSE2P DOIO;;TRY TO DELETE ARCTEMPZ =!d DFNAME==n CLOSE1x !ERT2X;ADD2QHEADER PUT2QHEADER PUT2$>ADD3&PRINTEMP GET1 $PRINTEMP EADDERR PHEADER9 PUT22(> DADD3X;"%>,ADD4QHEADER86 PB_OUT8@1J IADD4TX;^ADD5QB_OUTh HADD6r QB_OUT| HADD7 QB_OUT HADD8 !ADD1ADD8"B_OUTADD7"B_OUTADD6"B_OUT GET1 EADDERR PUT2 !ADD5X;IN27D DOIO  =;;open #2  SFNAME==;;for write  ERRORTRAP X;& ADDNEXTQ>0 PONEDRIVE: QBATCHFLGD HIN32N QPASSFLGX FIN29b  GETPASS;;GET PASSWORDl IN29 SCREENONv DOSOUR GETPATH IN31QH R>;;EMPTY? EIN32 CT8SQ> PPASSLOC;;DISABLE GARBLE Q> PUT2 Q> PUT2 FINISHED CLOSE2  ERRORTRAP! QBATCHFLG ! HIN30! !MAIN !IN30!DUMPOUT*!X;4! IN32Q>>!PPASSLOC;;TURN IT OFFH! PONETIMER! QSPARTAF\! HIN32Af! QSWAPFLGp! H?IN32z! QMYDOS! FIN32A!?IN32 DODEST! CLOSE2! ERRORTRAP!X;!IN32A DOSOUR! CLOSE6! DOIO! `=! DFPATH==;;#6,6,128! ERRORTRAP! !GNAM3!X;"GETDLINEQ>FTEMP"P"Q>FTEMP$"P." DOIO8" `=;;BGET #6,B" FTEMP=(=L":V"X;`"GNAM3QFNBUFFj" PFNLOCt" PPRZP~"QFNBUFF" PFNLOC" PPRZP"%>"'ONETIME;;SPARTA FLG"C"P@PRZP7;;MARK 1ST AS END"GD3 GETDLINE"IGD2"GD10 CLOSE6"!GD20;;ALL DONE"X;"GD2QFTEMP#R>;;WAS IT SPARTA? #HGD6# #ONETIME# GETDLINE;;THROW AWAY(# GETDLINE;;FIRST 4 LINES2# GETDLINE;;OF SPARTA DIR<# !GNAMF#X;P#GD6QFTEMPZ#R> :d#FGD3;;MYDOS SUB?n#EGD4x#R>0#EGD10;;AT EOF?#X;# GD4$>#%>#GD5QFTEMP9# P@PRZP7#3#2#(> #DGD5#Q># P@PRZP7#3$ P@PRZP7$,$ QPRZP"$O> ,$ PPRZP6$DGD3@$ #PRZPJ$HGD3T$X;^$GD20QFNBUFFh$ PPRZPr$QFNBUFF|$ PPRZP$%>$ Q@PRZP7$ HGNAM$$>NOFIL$%>NOFIL$ PRINT$ !IN29$.NOFIL =AError: No file(s) found!A==$X;$X;$GNAM%>;;BUILD FN$GH1QDFPATH8$R> %FGH2%R>%FGH2&%30%HGH1:%GH2QDFPATH8D% SUBCMPN%FGH3X%1b%HGH2l% GH3'PRZPv%GH4QDFPATH8% PDFNAME8%1%IGH4%X;% QONETIME% FGNAM1% !GNAM5%X;% GI0!IN29% GNAM1Q`%R>% FGNAM1Z% QSWAPFLG& FGNAM1Z & DODEST& CLOSE2;;FIX MYDOS BUG &GNAM1Z$PRZP*&2;;DOS 2.0 FILE4& QFNLOC>& PPRZPH& QFNLOCR& PPRZP\&%>f& 'TIMEp& Q@PRZP7z&FGI0&GI1Q@PRZP7& PDFNAME9&R> &FGI2&3&2&)>&DGI1& GI2Q> .& PDFNAME9&%>&2&GI3Q@PRZP7' PDFNAME9'2'3$')> .'DGI38'Q>B' PDFNAME9L' QPRZPV',`'O> j' PFNLOCt'DGI6~' #FNLOC'GI6Q>`;;DEFAULT TIME'PTIME;;AND DATE OF'Q>!;;12PM, 9/1/88' PDATE'Q>' PDATE' !GN10'X;'X;' GNAM5' GETDLINE' QFTEMP (R> <;;SPARTA SUB? ( FGNAM5( GN4%PRZP( QFTEMP((R> 2( FGN81<( !IN29F(X;P( GN813Z($>d(GN31QFTEMP9n( PDFNAME8x(R> ( FGN32(3(2((>( DGN31( GN32Q> .( PDFNAME8($> (3(GN33QFTEMP9( PDFNAME8(3(2)(> ) DGN33)Q>") PDFNAME8,)Q>6)P@) ;;DAYJ) T)Q^) PDATEh)Q>r) P;;MONTH|) ؆) ِ)QԚ)T?)T?)T?)T?)T?) LDATE) PDATE)Q>)U?) PDATE) Q>;;YEAR*P* * &*;0*Q:*S>P;;-1980D*T?N* LDATEX* PDATEb*Q> ;;MINUTESl*Pv* ؀* ي*Q>* PTIME*QԨ*%>* GTM1T?* UTIME*1* HGTM1* PTIME*Q>;;HOURS*P* +  +Q+R> +DGTM3;;CONVERT TO*+Q>;;24 HR FORMAT4+P>+GTM3QFTEMP"H+R> pR+ FGTM2\+Q>f+ ,p+ GTM2Q> z+,+OԎ+T?+T?+T?+ LTIME+ PTIME+X;+ GN10%>+GN10DQSFNAME8;;LOOK FOR+RDFNAME8;;SAME FN+ HGN10C+3+R>, HGN10D, !GNAM,X;$,GN10CQQUERY.,HCT68, QCRUNONLYB, HGN10AL,$>ANALMV,%>ANALM`, HGN10Bj,GN10A$>CRMSGt,%>CRMSG~,GN10B PRINT, PRINTFN, ERETURN,!CT7,X;,CT6$>UNARM,%>UNARM, PRINT, PRINTFN,Q> ?, EOUTCH, SCREENON,CT8 KGETCH-R> - FCT8B-M>?- R>;;Y?(- HCT8A2-Q> Y<- EOUTCHF- ERETURNP-!CT7Z- CT8AR>d- FCT8Rn-R>x- FCT8B-R>;;PATH?- FCT8E-R>1-DCT8-R>:-ECT8- DIRECT;;DIRECTORY-!CT8-CT8R!CT8S-X;- CT8BQ> N- EOUTCH- ERETURN. !GNAM.X;. CT8EQ> P". EOUTCH,. ERETURN6. GETPATH@. !IN31J.X;T.PRINTFN%>^.PFN1QDFNAME8h.R> r. FPFN2|.R>. FPFN2. EOUT.3. HPFN1. PFN2:.X;.X;.CT7 CLOSE1. QCRUNONLY. FGNT1B. DOOPEN;;JUST INCASE.... Q>&;;NOTE.$> /PB9/ V/$>&/GNTQl9;;GET LOC OF HDR0/ PNOTLOC9:/0D/IGNTN/X;X/GNT1BQMYDOSb/ FGNT1Al/ CLOSE2v/ ERRORTRAP/X;/GNT1A DOSOUR/Q>/PCRC/ PCRC/ PSBZLEN/PSBZLEN/ PSRCLEN/PSRCLEN/PSRCLEN/ PPAKLEN/PPAKLEN/PPAKLEN0 PEOFFLG 0 PMOREPASS0 DOIO 0 =;;OPEN SOURCE*0 DFNAME==40 ERRORTRAP>0X;H0 X; CRUNCH!R0X;\0IN8QSCROFFf0 FIN8Yp0 SCREENOFFz0IN8YQPASSFLG0 FIN8Z0Q>0PPASSLOC;;SET TO 10IN8Z!LEMPEL0X;0!X; NOW THE COMPACT SUBROUTINES0X;0X;0X; NON-REPEAT PACKING CODE:0X;0 GETPACK0 QNOLAST0 FGTP11 "NOLAST1 QSAVEB1,$1:.1GTP1QCOUNTR81 FGTP0B1 "COUNTRL1 QSAVEB2V1 !GTP01`1GTP0 GET1j1 DGTP01t1 :;;EOF~1 GTP01R>1 HGTP21%>1'SAVEB;;HANDLE SINGLE DLE1 #NOLAST1GTP02PLASTBY;;RECORD IT,1,;;AND EXIT...1:1GTP2RLASTBY;;SAME AS LAST?1HGTP02;;NOPE, A NEW ONE1GTP3#REPFLG;;COUNT REPEAT1 $REPFLG1(>;;ARE WE AT 255?2 FGTP041 2 GET1;;NO, KEEP CHECKING2EGTP03;;END OF FILE?2RLASTBY;;STILL SAME RUN?(2 FGTP322PSAVEB2;;END OF RUN,<2#COUNTR;;SAVE THE BYTEF2GTP03$REPFLGP22Z2(>d2 EGTP04n2$>;;DON'T COUNT RUNx2&REPFLG;;IF 2 BYTES2QLASTBY;;GET WHAT IT WAS;2$>;;PREVENT A FUTURE2&LASTBY;;SIMILARITY2:;;(CARRY WAS CLEAR)2GTP0412;;ADD 1 TO COUNT2GTP04#NOLAST2&SAVEB;;STANDARD RUN -2$>;;SAVE THE REPEATS,2&REPFLG;;(ZERO COUNTER)2Q>;;AND RETURN DLE2 PLASTBY;;STOP BAD RUN COUNTS2,2:3X;3X;3X;END OF PACKING CODE"3X;,3LEMPEL%>63 'REPFLG@3 'NOLASTJ3 'COUNTRT3 'KLUDGE^3 'PASSLOCh3Q>r3PLASTBY;;INIT PACKING|3 QCRUNONLY3 FPK013 QSPARTAF3HPK01A;;SPECIAL SPARTA CASE3 !PK023X;3PK01A WRITDUMY;;HEADER3 QPASSFLG3 FPK01B3 #PASSLOC3PK01B ,;;SKIP KLUDGE3X;3PK01#KLUDGE;;KILL OUTPUT3 LZINIT;;TO 1ST PASS4PK03 GETPACK4 EPK044 #PAKLEN&4 HPK0504#PAKLEN:4 HPK05D4#PAKLENN4PK05PCHARX4 PUTCMb4 !PK03l4 PK04QENTv4 PCODE4 QENT4 PCODE4 PUTCODE4 ENDUMP4 CLOSE14$>STORL4%>STORL4 PRINT4$>SRCLEN4%>SRCLEN4 PRINTBIG4$>PACKL4%>PACKL5 PRINT 5$>PAKLEN5%>PAKLEN 5 PRINTBIG*5$>LZCML45%>LZCML>5 PRINTH5$>B_OUTR5%>B_OUT\5 PRINTBIGf5$>FINMLp5%>FINMLz5 PRINT5;5 QPAKLEN5 SSRCLEN5QPAKLEN5SSRCLEN5QPAKLEN5SSRCLEN5DCMP1;;STORE IS BIGGER5X;CARRY IS SET5 QSRCLEN5 SB_OUT5QSRCLEN5 SB_OUT6QSRCLEN6 SB_OUT6DCMP4;;PACK IS BIGGER$6 CMP3Q>.6 ,86 CMP2Q>B6 ,L6 CMP4Q>V6PHEADER`6 !CMP5j6 CMP1;t6 QPAKLEN~6 SB_OUT6QPAKLEN6 SB_OUT6QPAKLEN6 SB_OUT6 ECMP36 DCMP26X;6 CMP5R>6 FCMP66R>6 FCMP76$>CRMS17Q>B_OUT 7%>CRMS17 HCMP87CMP6$>STMS1(7Q>SRCLEN27%>STMS1<7 HCMP8F7CMP7$>PKMS1P7Q>PAKLENZ7%>PKMS1d7 CMP8&n7'x7?7$>7 CMP9Q87PHEADER973727(>7 DCMP97 PR1;;PRINT7 FIXHEADER7X;7QKLUDGE;;special sparta?7 HNOSP17 FINISHED;;dump buffer8$> 8Q>&;;note where8PB9;;we are"8 V,8%>68NOSP2Ql8@8 PDNSTMP8J81T8 INOSP2^8 DOPOINT;;to beginningh8QHEADERr8R>|8 HNOSP18 DOHDPUT8$> 8Q>%;;point8PB98%>;;where we8NOSP5QDNSTMP8;;left off8Pl8818 INOSP58 V8 !GNAM8X;8NOSP1QMOREPASS9PSBZLEN;;set up to read9QMOREPASS;;from mem9PSBZLEN;;instead of&9#EOFFLG;;re-opening src09 QMOREPASS:9R>D9FNOSP11;;took only 1 pass?N9Q>X9 PSBZLENb9PSBZLENl9 PEOFFLGv9 DOIO9 =;;RE-OPEN SRC9 DFNAME==9 ERRORTRAP9X;9NOSP11Q>9PLASTBY;;INIT PACKING9$>9 &KLUDGE9 &PASSLOC9 &REPFLG9 &NOLAST9 &COUNTR9CMP11QHEADER9: PUT2 :2:(> : DCMP11*:X;4: QPASSFLG>: FCMP12H:Q>R: PPASSLOC\:CMP12QHEADERf:R>p: FSTOREz:R>: FPACKING:X;: LZINIT:DLZ2 GETPACK: EDLZ1: PCHAR: PUTCM: !DLZ2: DLZ1QENT: PCODE: QENT: PCODE: PUTCODE; ENDUMP;DLZ3QCRUNONLY; FDLZ3A$; FINISHED.;DLZ3A!GNAM;;ALL DONE!8;X;B;STORE GET1L; EDLZ3V; PUT2`; !STOREj;X;t;PACKING GETPACK~; EDLZ3; PUT2; !PACKING;X;;X;;PRINTBIG&PRZP; 'PRZP;Q>;P;%>; Q@PRZP7;P; <  <$>FP65536<%>FP65536< (< 2< <<%>F< Q@PRZP7P<PZ<3d< Q@PRZP7n<Px< ق< fڌ< ؖ<%><!PNM1;;PRINT THE REST<FP65536 B==U=6==<X;<#STORL =A Stored Length:A=<PACKL A bytesA< =A Packed Length:A=<LZCML A bytesA< =ACrunched Length:A=<FINML A bytesA==<CRMS1 A硠A===STMS1 A硠A===PKMS1 A硠A===CRMSG =A A="=ANALM =A A=,=BYSAV ABytes saved:A=6=X;@=SUBCMPR> :;;Find ALL casesJ= F?SB1T=R> >^= F?SB1h=R> \r= ?SB1:|=X;=FIXHEADERQ>= PHEADER=QCRC=PHEADER= QCRC=PHEADER=%>='HEADER='HEADER=$>=FH1QSRCLEN9=PHEADER9=0>IFH1>PK3QDFNAME8>R>&>FPK40>3:>HPK3D>PK41N>PK5QDFNAME8X> SUBCMPb>FPK6l>1v>HPK5> PK6$>>PK73> QDFNAME8>PHEADER9>R>>FPK8>R> ;;check for spaces>FPK8;;also, and kill em>2>(> >DPK7> EPK10>PK8Q>;;FILL WITH NULS?PK9PHEADER9 ?2?(> ?DPK9*? PK10$>4??PK1QTIME9>?PHEADER9H? QDATE9R?PHEADER9\?0f? I?PK1p?:z?X;?X;?PK02 WRITDUMY? QPASSFLG? FPK02A? #PASSLOC?PK02A LZINIT;;do lz comp?PK21 GETPACK? EPK22? PCHAR? PUTCM? !PK21? PK22QENT? PCODE@ QENT@ PCODE@ PUTCODE$@ ENDUMP.@$>BYSAV8@%>BYSAVB@ PRINTL@;V@ QSRCLEN`@ SB_OUTj@ PPAKLENt@QSRCLEN~@ SB_OUT@PPAKLEN@QSRCLEN@ SB_OUT@PPAKLEN@ EOKP1@Q> -@ EOUTCH@,@ QPAKLEN@N>@O>@ PPAKLENAQPAKLEN AN>AO>APPAKLEN(AQPAKLEN2AN>FAPPAKLENPAOKP1$>PAKLENZA%>PAKLENdA PRINTBIGnA ERETURNxAX;AX;A%>A 'PASSLOCAQ>;;COMPACT TYPEAPHEADERA FIXHEADERA$>A?FX2QB_OUT9APHEADER9A0A I?FX2AX;A FINISHED;;DUMP BUFFERB CLOSE2B ERRORTRAPB DOIO"B  =,B SFNAME== 6B DOPOINT@B DOHDPUTJB CLOSE2TB ERRORTRAP^B!GNAM;;ALL DONE!hBX;rBWRITDUMY$>|BGNT2Q>;;write aB PUT2;;dummy headerB0B IGNT2B:BX;BDOPOINT$> BQ>%;;pointBPB9B%>BPK11QNOTLOC8BPl8B1B IPK11C!VCX;CDOHDPUT%>&CDOHDP1QHEADER80C HEADPUT:C3DC)>NC DDOHDP1XC:bCX;lCHEADPUT'PRZPvC$> C%> C'bC%>C'hC'iC VC %PRZPC:CX;C X; LEMPEL-ZEV CODE TO FOLLOW:CX;C PUTCODEC QOFFSETDV? DV?DV? D>;;GET BYTE OFFSET*D QCODE4DPTABLE9>DQ>HDPTABLE9RD QOFFSET\DM>fD?pDFPC1zDQ>D PC2TCODEDUTABLE9DU?D1DHPC2DPTABLE9D QOFFSETDM>D?DPC1QTABLE9D MMAXCH8D LCODED PTABLE9E QOFFSETE,E ON_BITS$E POFFSET.E QN_BITS8ET?BET?;;SEE IF WE ARE AT MAXLET?VE ROFFSET`E HPC31jE DUMPBUFtE"X; NOW CHECK FOR INCREASED SIZE~EPC31QCLEAR_FLGEFPC6E QOFFSETE FPC32E DUMPBUFE PC32Q> E PN_BITSE%>E'MAXCODE;;=511E1E'CLEAR_FLGE1E 'MAXCODEF: FX;FPC6QFREE_ENTFRMAXCODE(F H?PC62F QFREE_ENT xFDPC7FQ>;;MAXCODEMAX=$1000F PMAXCODEFQ>FPMAXCODEFPC5:FPC7?FQ>F PMAXCODEFQMAXCH8FPMAXCODEF:FX;FENDUMPQOFFSETG,GO>GV?"GV?,GV?6G PBITS@G,JG OB_OUTTG PB_OUT^G DEDP1hG #B_OUTrG HEDP1|G #B_OUTGEDP1QBITSG,G OB_LASTG PB_LASTG DEDP2G#B_LASTGEDP2QOFFSETG FEDP3G QKLUDGEG HEDP3G$>GEDP4QTABLE9G PUT2H2H (BITSH DEDP4&H EDP3:0HX;:HX;DHDUMPBUF$KLUDGENH HDPB2XHDPB1QTABLE9bH PUT2lH2vH (N_BITSH DDPB1H DPB2Q>H POFFSETH QB_OUTH,H ON_BITSH PB_OUTH DDPB3H #B_OUTH HDPB3H #B_OUTH DPB3,H QB_LASTI ON_BITS I PB_LASTI DDPB4 I#B_LAST*I DPB4:4IX;>IX;HI-TABLE ===========RI$MAXCH ======?==\IX;fILZINITQ>pI POFFSETzIX;INITS FOR PUTCODEIPCLEAR_FLGIPIN_COUNTIPB_LASTI PB_REFI PB_REFI PB_OUTI PB_OUTIQ>I PIN_COUNTI PB_LASTI PB_OUTIPFREE_ENT;;FIRST=257IPFREE_ENTJPFIRST_CMPJPMAXCODEJQ>$JPMAXCODE;;SET MAXCODE=(9).JQ> 8J PN_BITSBJ QKLUDGELJHKL0VJQ> ;;PUT MAX CODE OUT`J PUT2jJKL0 SETMEMtJ:~JX;JSETMEM%>J QPREBFRJ PPRZPJQPREBFRJ PPRZPJ$>JQ>;;19 LOOPS+139J PBITSJ SM1Q>J P@PRZP7J,J QPRZPKO> K PPRZPKDSM2K #PRZP(KSM202KHSM1K PENTKPFIRST_CMPK:;;THAT'S IT!KX;KPUTCM%FIRST_CMPK H?PCM1KPM1#IN_COUNTKHPM2K#IN_COUNTKPM2K'IVAR;;Y=0,A=CHARLT?L UIVARLT?;;EOR HASH"L UIVAR,LT?;;ROTATE 4 TIMES6L UIVAR@LT?JL UIVARTLNENT^L PIVARhL?rL QIVAR|L NENTL PIVARLX;LX;L PPRZPLC;;IVAR IN YL T?;;X4L UPRZPLT?L UPRZPL,L OPREBFRL PPRZPL QPRZPMOPREBFRM PPRZPM%>&M Q@PRZP70M HNMM1:M!NOMATCH;;NOT IN USEDMX;NMNMM1XMM>bMRENT;;FCODE+2lM HELSEvM1M Q@PRZP7MRENT;;FCODE+1M HELSEM1M Q@PRZP7MRCHAR;;FCODE?M F?RT1MX;MELSEQIVARM LIVARM HPRB2M PDISPMQ>NHPRB1;;branch always N PRB2;NQ>;;HSIZE N SIVAR*N>4N Q>>N SIVARHN PDISPRNA\NT?;;MULT BY 4fN UDISPpNT?zN UDISPNPRB1PDISPNX;NPROBEQPRZPN;N SDISPN PPRZPN QPRZPN SDISPN PPRZPN DFAS3NRPREBFRN H?FS2NFAS2QPRZPO RPREBFRO?FS2EFAS1OFAS3QPRZP;;CARRY IS CLEAR$O O>,N.O PPRZP8O QPRZPBO O>,NLO PPRZPVOFAS1`O%>jO Q@PRZP7tO FNOMATCH~OX;OM>ORENT;;FCODE+2O HPROBEO1O Q@PRZP7ORENT;;FCODE+1O HPROBEO1O Q@PRZP7ORCHAR;;FCODEO HPROBEOX;P ?RT1%> P Q@PRZP7PV?PV?(PV?2PV?;;>MAXCODEMAX?PEMT1PX;P%>P QFREE_ENTP P@PRZP7P1PA;;free_ent+1 is in xQT?QT?QT?"QT?,QLENT;;FCODE+26Q P@PRZP7@Q #FREE_ENTJQHMT2TQ#FREE_ENT^QX;hQMT21rQQENT;;FCODE+1|Q P@PRZP7Q1QQCHAR;;FCODEQ P@PRZP7QPENTQ'ENT;;Y=0QQIN_COUNTQ R>QEMT3Q:QX;Q MT1Q>Q PENTQ QCHARRPENTRQIN_COUNTR R>&REMT30R::RX;DRMT3Q>;;CL_BLOCK ROUTINENR PIN_COUNTXRPIN_COUNTbR QB_REFlR LB_REFvRFMT4R;R QB_LASTR SB_REFR PBITSRQB_LASTR SB_REFR LBITSR FMT4BR DMT4BRX;R SETMEMR%>R 'FREE_ENTS'FREE_ENT S'CLEAR_FLGS 'CODE S1*S 'CODE4S 'B_REF>S 'B_REFHS PUTCODERS !MT4B\SX;fSMT4QB_LASTpS PB_REFzSQB_LASTS PB_REFS MT4BQ>S PB_LASTSPB_LASTS:SX;SX;SX;SGETPATH$>DSTPNS%>DSTPNS PRINTSQ>@SP;;FORCE UPPER CASET DOIOT =T DFPATH=)= $T GGETPATH.T QDFPATH8TR>BTFDJ5LTR> DVT FDJ3AZ`TR> 1jT DDJ2AZtTR>:~T EDJ2AZT DIRECTT !GETPATHTDJ3AZQDFPATHTR>;T DDJ3AT DJ2AZ%HT1TDJ3BQDFPATH8TPDFPATH8;;ADD D:T1T IDJ3BTQ> DU PDFPATH UQ> :UPDFPATHU#H(U#H2UX;INVPU%>INVPU PRINTU !GETPATHUDJ5QDFPATHUPDFNAMEU:UX;UDIRECTM>UL>0V PDIRFNVL>VPDIRMSG"VQ> D,V PDIRFN6VQ> :@V PDIRFNJV QMYDOSTV FDRC1^V DODESThV CLOSE2rV ERRORTRAP|VDRC1 SAVSCRVX;VDRC11$>DIRMSGV%>DIRMSGV PRINTV DOIOV =;;LINE GETV DIRFN=(= V GDRC11V$HVQ> *VPDIRFN9VPDIRFN9VQ> .WPDIRFN9WQ>WPDIRFN9&W CLOSE40W DOIO:W @=;;OPEN #4DW DIRFN==NW DIRERTRAPXWQ>bW ,lW DIR2AQ>vW PBITSWDIR3 DOIOW @=W DIRFN=(=W IDIR4W)>W FDIR5W DIRERTRAPW DIR4%>W DIR4AW QDIRFN8W EOUTW3WR>X HDIR4A X #BITSX QBITS XR>*X DDIR34X EDIR6>XDIR5$>PRESRHX%>PRESRRX PRINT\X KGETCHfXDIR8 CLOSE4pX RSTSCRzX DIR9A:XDIR6$>PRESMOREX%>PRESMOREX PRINTX KGETCHXR>X FDIR8XQ>}X EOUTCHX !DIR2AXDIRERTRAP)>X DDIR9AX7X7Y CLOSE4Y$>DISKERRY%>DISKERR$Y PRINT.Y !DIR58Y1DISKERR =ADisk Directory read errorA==BY7PRESMORE =A to quit, for more:A=LY7DIRMSG }=A 報A=VY1 A Enter Pathname or for main:A==`Y