• One From The Vault: GunZip.c64 (64) (6K)

    From Cameron Kaiser@21:1/5 to All on Fri Sep 25 17:40:01 2020
    ******************************************************************
    *** ***
    *** comp.binaries.cbm is a moderated binaries- ***
    *** only newsgroup (no discussion or ***
    *** crossposting allowed) for Commodore 8-bits ***
    *** ***
    *** For information on comp.binaries.cbm visit ***
    *** http://www.floodgap.com/comp.binaries.cbm/ ***
    *** ***
    *** This file is available via mailing list at ***
    *** http://lists.trikaliotis.net/listinfo/comp-binaries-cbm/ ***
    *** to list subscribers ***
    *** Allow time for submission to be received ***
    *** ***
    ******************************************************************

    * One from the Vault is a collection of frequently requested, useful or just
    plain interesting past posts sent to comp.binaries.cbm, as archived by the
    moderators. If you have a request, please send it to the address in the
    headers. In addition to being selected and reposted by moderation staff,
    some of these postings are regularly posted on Mondays and Fridays on a
    rotating schedule.

    Take care when replying to these messages, as many were posted years ago.


    From: Cameron Kaiser <ckaiser@floodgap.com>
    Reply-to: Cameron Kaiser <ckaiser@floodgap.com>
    X-Original-Posting-Date: 10 Aug 2003

    This is Pasi's GunZip.c64, which can understand ZIP archives and .gz
    files, and decompress them on your C64 natively.

    This version supports standard I/O and has burst support for 64s
    appropriately modified. If you want to try the 64 version that can
    decompress .d64.gz to single disks and has a built-in 1541/1571
    speeder, or to try the C128 and Plus/4 versions, go to the official
    page at

    http://www.cs.tut.fi/~albert/Dev/gunzip/

    See this page for documentation as well. Here are basic instructions
    for dissolving .zip and .gz files (see his site for D64 usage):

    First the program asks for an input drive. Press 8 or 9 for drives 8
    and 9, respectively. Use 0-7 for drives 10-17.

    Then give the input filename or an empty name to select a file from
    the directory listing.

    Output drive is asked next. 8-17 can be used.
    If the input drive is the same as the output drive, and a 1541 format
    disk is detected, you can next select whether you want to dissolve a
    disk image or files. In disk image mode no other selections are
    possible. [Here, we will select files.]

    Unless one-drive disk image mode was selected, several selections are
    possible for each file in a packet.
    * Yes - decompress this file
    * No - skip this file
    * All - decompress this file and all following files
    * Edit - edit the destination filename

    If you want to create SEQ files, you can do this by editing the
    filename to include ",s,w", e.g. "file.doc,s,w". The same procedure
    can be used for USR files.

    The border is flashed when reading or writing data. The screen is
    blanked during writes.

    The file size is displayed in hexadecimal after a successful
    decompression. If the final output size does not match with the size
    indicated in the packet, an error is displayed. Also, if the CRC32
    does not match, both the expected and the resulted CRC are displayed.

    -- Cameron Kaiser

    begin 644 gunzipc64.prg M`0@+".\`GC(P-C$```!X[C#0J3B%`:(TO4((G?\!RM#WHK^]=0B=]@#*T/>@ M%\J]W1Z=BBZ*T/;.,PC.,`B(T.U,%@%(K>$8*H7W[@("T`/N`P)H8.B*!O?0 M`R```I`2Z.`&T/+P"Z('Z`;WT`,@``(JRM#U&&"``8T!".;ZT`+F^\I@I/BB M`B`O`H7XF*(&("\"(/D`H`"8H@(@+P+%^-#L(!$"A2U*T#\@)0)*D$<@)0)* MD,[((!$"A2W)()`+H@,@)@*%+2`1`J@@$0*JO:4!X!"0!HJB!"`F`J8MZ"#Y M`-#[B-#X\*T@$0+)/_`CZ0"B`"`O`H4N(","9?JF+84MI?OE+H4NZ+$MR"#Y M`-#X\-2I-X4!SC#0I?J%+:7[A2Y83`T(`""J`4I,`@,*#5($!0@2"PCO`)XR M,#8Q7"M@@!!Z3L*[=F?7E^Y_9_AK[7/K[5UU9?9]WI`^D&>U;9JQB7&)CO4, M3GCT+LO3`R#:V]S^O?#\(+[KT(,_D)9(%!!4TDG04Q"15)4)T]*SW00W>XD* MBHH'1>7J^?Y<AJ9<J*JH7(R27DINB^6F7[<@"B`*D`A6V%;(5KAFJ@"$9M9F MQF:V9JD!BIT6HH=3;4W"*',V5,&BM8<%2(@16J%:HC0VZ5JG18!C2M>?9E2M MF?9G2MN?9IKHUH7!!#DN6L;;DL;59^UF?M>2\":2G*&1F3P<0:6B#P\(VT): MU/VB3SXB.-B"=VXB!&Y68BGX:1</$;%D]3%T1/0#A`3CF>4SGE&6V5I$0'Q" M0.P]6YZZ<,QC,4GIG.%:'M5O?&VJ5J?M$'M5L.3UJ57@"UJ/V@<T470$[&<0 M7O_4@5<D90`!!=?Y!@?_=$D[$#"CF2`>`L0<Z=V9_T5;4D]9!(YA*1BD$A4F M=H0FM"*:8RM)8RN2'-H4!(/D9(-(8(#@0C+!"^Q)<`?\%3.`H:"5DI>@G4=> M`8:`)DF'AM8`#1\`7@'8`'H&^2":!GW0!)DK,.H5%I)4"!#14Y44D%,($1)4 MD5#5$]262"/A!0TA%1`T`3!`.E6QJZ`&F*(DF<(;DRB]#QHQNZDR-<8R0CP" MTBAA:"#'&TR56'T=THV'XIX/`2HJE5+3D]7B`1DQ!1U,ABZH=[+]DVL;P(QO M)[0GW"_C&;C?>A\XWX(>J%C7*E</-4Y>BHGAX>N2=>'QDJ8)`"*5+\STD^1D M@&AQQ$8IZ)VM@0\`9C8J-#Z:\T*@-BPJ0"@`YE3D3S*G8GB!#W9%FJ1=PP^M M3181;0+6]6DN2I!T!*I#SCM3NJ*E::7^FU\*S*T+K/3?X32`269)%4\^DZ23 M\^T&2VUGTBR2(DJA``<O?K-M276@7\541UK'^=J8VA?(&\@1EO4Z:67R)G-\ MD66%]PZE)GT%5/^Y:*L02.)(QRS1)(V-"#C%('H<C>'%9U8%N2G>!3#3X1Z( MOA*RR0/P0"G_R43P"<DX\`+0VI-(065((P=T0#';HYE1V\.,DNP=,1;1HJ.T M!^I.4TM)4%!)3D<N+J175`RS=*S=R3:F+X&E;#H1*=Z*KH"6I`6V:`ZY#JH< MV;97)MGM`.J3,@V1UT\O!66F`8=1:Z>5JY.H&HGO/>I!O;(H`'Z,?5@0)$=) M!AW6L31DG^@"P.AWA+[X`J(#J0"=;LOM/\JIJRA#TK:\ET#&MLD;"9ERBC)` M4H2#-%%)FR&9(,CZ01HG6G)1X`:DS%#6.Y$$7:^@@08^D`R!2X,QNLGP!,?" M9?@,V"9.T'JC-4,H`T9)6$A51J2Q/Q"R[T193K+O!A&BQT%"('PE_\QS]0Q5 MYM(>U+5A:0%8=6M1/K)4-:`Y6M9/S&V*UK9GR#X]5K;GR$:T`?VW>,K/1R\/ M2I=O#Y("(:YB5\2"UX#G90B790@O9\]G4S#R8G!OAY]03EPWJ:2M(N.-2W<8 M6N4;H`.Y;B?2RIV3/&8@0]61=H@.U55)-)R;L.F@/90AY)DOT)["Y74D].1^ M,MV\,OL-?#H0U)#^#EQ?`..7Q3S/3[-E/VYJJ@J$')\(R:@IQ`J*2*B^,'O< MG"(0)J2IYU*B&D$&;)`BIV>">C=R4>6]],SG!$8!5;$\RKU(%V#?BU%2;PH" ML,$:;AT8<!W#[I7&)E:Y&`":'JK@K:XEY3DU[D'5D52Q8251%/_PXLNT'Y,5 M#Y08'YASTXQM<VF3)C9*4JE-HS,&OLZ8^THK&[8^<C$M]#V2'<V->)@J0!7! M4@+!W-C[R&]>]EGO9DOEU^H>_:(7&Y!D\;"$_7O"Y[PQ/DUJNCO[H[TP9#[C MF,#KKF,SHWM#BSHW-#=MX(^Z,3NC$3#>K,SH]-#XSH\M#SE6Q":`I6D(92D( M12JP)D@\K`#3-$*KE\CIIK?L5^T$&DW('E5.LZXDU%5$A/1"`ML8.*;&@/^< MB?*$/I,D*&%&Y%4;F11YSH'WW9SJ'WTEQSGA7YF#Q(OES$4722;#T8FP(B3` M\36^8+2-"V)E!"VC0N"*-)_TT.TF(X,@R\W,T\R5+)H!10;#@<Q.#=2Y!6#+ M3CZM./@TX];3CS*X.Z?$S/RB!^X81B0'B!%&2K23D2`9TP#7LQE*3#\0Z2_) MD)#T5TP]@"\S(\B0\B%$"\:)!(B'''40FO^^)"8@>QEI`Z33^IYRR6%^T6RJ M%_%,$+_U%\I")N`)L`ICDA?U.M29;B$=8)C!#EXA)2#U37M_)EW/22J9?U.V MY!R93+_)X5N$,G'*QXUN&,\O](`F2:V`$IIFDZ>;[YOQ29^B#+4?K#7S?N@% MTG]D8&?H`5`:PG\S;]S8WYH<2F!&AIW`8T]**E/L^*';Q/T]@1KV!&F-&2B$ MYU2`4,G/1`;'72?E]<DK'@E"Q==M3`1HJF(71HLGVI`A9ZI*(6?2.J1,@TAK MP0(K4JAA7;EKEY6Y3-/%S[;V9E`7$"P-ZB1#P+Y2"CDB/@%4EG1)A:9)=$6I MYDYZI+N8D9[FGD4N:?8F@)%3*T.]29TIP@3EPXR37_8NG`FP[;W:GFQN)BO5 MC4OX(1SDM%+R+58C:PPN2P\QXB>G4UO*[3[P-:T_\-P$8.2\X22GA)D-6G@( M4A=:'=86&0DP4X[%<W_Q*M8QZF>GQKF$4R!42*/M!($Y/3BU#3TU04D534Z6 M91#8TNF=:UG<E>Y*SH>M*9T8H;8S8U:\7L<")%VEWC9\DQPSSXA;IN,WKL/H M`-Z[1P-28!O786UWO7A*ID,C!5POVW0C8$K`E6V+7U0`3G'KD:'NR67FRYG> MS?8]M_;K00=-T#N],;G6`S%`U?I4\WVXU@JR-W-4T%(>,-(#,H!1J(RA#YK7 M5@K-!-4$Q/1*\H&/,:ET@4:T<MV,>>6*29*]>+2)_AAS0`-2`>8=_!PEOUKH M@?9PEWY'#1`=ZW$^MUV)Y`$QMUZL',&U@S^>4R)>*R!7,/_8(2@VF)HI1`W7 M=\7:E,VGUC]9B._66+_FXT&.<M8YT"6<>,-<8/U,OVGG()Q?E:AP,.WH09(@ MK,#A3R'0KMH^J&>%/#0[FXSDWQ>'7&TPI74@IU[TXHP5N><;49A9[1M3GGV/ MR0I)*<ED`!R%V;D=5BFDJ.JA2*G0!3>C@GW'U("GW7]&AWI\0OS4V$+],+?W M4CZ*[)_D"DP3%9'YR&$7Z9'7U9![Q(*Y)O`%'K.VM24(`P7>TV4V,D!9;0!% MF'/0^&O$`T-QCT;Q%.Y'I28:BN2!:&6Q%^]3(0OP^%!J3+@5L?DI'_`D8SP2 MQ]_`<3\&&9U_UKK5TU\+K^C+`5[E`"4"1U>Q\0N@G-\6"WET+>/>)9=M5D@> M`/1]'Z9R"L$M11;9?)1E\$F(`9.KH9.)AEJ?]AI4W,-(!&THHEXE\V5U8*,/ M\:5"S945HHCY&E:>JUR2#0&>Y-OF^Z7W9FN^,;W9/)C5K:EK;3`&%=N>G#FW MMN>>.'"?IYD?=VUTS62G_*7Z2J($Y4YV,MX/1!UC#8![^M3KT+KF8ST5JU)O MP#&&=+-3<QN^Z('<BCH`?=5N$W5-3=>IM3S:PF&WC8@$WDL#CI8L$;GB]&L= MD/T?(WT%J7XC?46<;]`$78-F0\[DZV*U.MD[.YD[.ID]6X$<,9R51^@#6>0> MP`$V)MSO">^D^_4&F4L93AE*J'3D(4X",%9?7OX`@U3"5)I@&2F*62F0W_*1 M`/WF8`M1Y3[+G&,=.]F`=F7T=R2&0!.XY*%,$+]N*1LTD^[F?;=U.,QCX'_H M8-26XOQ(!&@/)6XOO8##>GZK/VTGJZ*I$'>42I*J<`=7O(>GXO&H'VK#69V7 M.2NE`(<*%28*C#<%7G?)W7HZ+MX6S'",*>49F%4`3Y+D4F1']V+FN2YT!#)D M/`&;A]U!?N3Q8^N`!T%-+"8I:8\J(`AOZ&_:Y`[@`M`)"B;^5%9+^F201C@` M]`/JF/)C]BBD_R3]KM!$N*I>,PK'8/Y(^QV53MXA^2'^`&Q9.>%`D\TA5,@Y M1K%.(N,[=+^-X93D_'#>`=2_S'?_4OV,*Z0/VXN9N^`+PW>8[@)@IFG$;5,T MRO0`P8*^"++*>"+\"<@1B&3;F$;$8!2`37)WUMP2D!R15J;L:QZ`*?2>-$!0 MRJG0R8^B#&_Y=L43B`E,)%2W8,4`#IN(-`@]-Y3142`>09_^E-.L9J=R46AX MMYKP`K,UMC",!<UB1JT,QRH,\T19VG#5C[WFJ`&LHP&4;@YC77.5O^;E*DQ> M&6".HAGXMZ7S>D?JWH`9J+E@)AB0`-[RP1FK<9[FXGT`WN;X^PCN<">E0'$G MEF[5%:LU@`QYXOQJSY,N>+O:\^3/GBXFS/DTA6W3=A#.@(=V&XI-GNZ34#3' M&IS5)K&ITM>HD-,>HFGV`5$R`561H?7<GI7)^\"9_@I@<]XMF\4`<=04*(`< M=;WE4\F;TF]#\`9<4UA?ALSA=QR>_>J;R?/BHJ?=LQ_'>D`ZE]\UAZ#:7XS4 MYT?6\.],)Q9AC@TO]E$<+F^%)BDD:K3PH"JJ\%RB]&"C-.RB0!<PZ*/`N9JT M!;&>4F6`US3Z?.-/YJ;B&+&^I*F/Y-?0`_Y/:B0T:]<=CU$,*B@%,$:F5&)A M,%B:U$0SHNWDGL4^2(Z#C$S2BBDBE%5)%:+%$**UHJGVS(P",X>,@!]R=W<F MT01@UH!C,/HI4J0"K(3Z$`N@`9A/D@Y1I28=C;ER`3P<@A0`;%RGO$,7#AN9 MR8"FA*I/T4K6X,12$%67I$I!G8!L10P)ZJ(3Z3LAA6PZF0;;!V0`K#E2B8Y0 MQ&U'Q.60T>9./-4E,;+IB:`.Z:U@(.%[R.U[(<;AD:C&0!L9&JQD:*HB=SDA M45;2S)->UG3C26WE3KZR3?$;C/(;;5(#O5KH`G`!^`&SJSY0AXJH)5HCH)(A M*-C[8,``\!F6<.#D:.CD81]\,=0`%SM>]G7.?G88C3S.9P'(X]S]<<X&SX.# M7@#=;V<$8FYVO7(6V&G;)#6>$KG6=OL4T`MBMYF."(4F*1AS)()#;8\=>9<J MQCN505MWR?XQH`)Q'KC1ZY\+4NTGQ*JNO>NX]QA]8">-@2=(H`+CNF<Y=)#% M,"4LAX>,9!$[&*JH8!6[O^>O"<\]Q&K_`9B18\&DT2H@"D\0?H..D*3.D<X( M=PE(DE#"FEQ-=/ELWG=.F5&3<-8W?'*U/W0"6XYMX<[MUM!\D(3PK4\\DH\. MK0$JU.W)))`"Z2.J8[=VY'+#69S]/`I(+IX9GE>NLD+YJ-#R":(TQ-':[B^S M8YF2J0WB-3-)PZXQC/''\R7SGN)LQ8J56/"I,FOMI'J3-X/9I28B"#@<+1/I MO8)#F,!Y\S/F^,Y$CN3A5F#`ZD>5BA=8I;U]J'M;-'T5J9ESV6,:,#V?@R/: M[L^>9JL^*WU"1,#\]<\DBMSI2&`D,#HJWYBFBJ)`H*2.0*JFI<\N`F$"&A)I M`?FQ_GX;Y^;KIV2?DCN2H8AZ-91ZB*Z`>J03X>;Y`O/10Y!HP[X8+[>;CS1X MYQ?PY^S2#OCX>5,"<]@+U;MC'NOID'N>46'^]7D!TH##&-0`K'5$:'TQ],S7 M_+<OH./T'XZ=:>3G06HE(`TR4$/D=1E^QJ(86:*5]57@P!`Z"YP"8M#R1N:N M2+P"9DO'LC`$=#QB$,&/6,4@-;"=XEH?%%`Y*I/P&NC)4/`5C[5?`0C[4O`+ MC[0_`&IY!D"DQ0$<I!:U:9+`,JM#VC500]*-0QY,_1^HEK.*J,0:!,IP/`(N M;L0K!RC5LH"5!X"=A`"$0%M`IFR/VWKD6#J,PZW,<]S$/2;4_2D'1Y=!U*BM M4@L>"!3)Y5ELSAN9B8W@UYW)</;,43N'K$('UJ0S>&VD,SAMHWJS,;ZW+3OA M)T3KZ[;7RN=N(PTH554CS2`<[0W(VD''488)%45F_Z\*\7YQUG)M9R>'CQZ^ M&'V7FK:G$KIV(Z]B6/Q1C\/Z]B&5A]T\><04\W`'9*CX!5-O773E1T-M<XL> M]+=PT)A+-(]:9<X"J>AOR*$#0])9F&W'3&CY#Q6$"(I)*MWQMAQ)%HD<R188 MB1AGOGV;R7I0&$AIWR3JP\SCI,,D(9X<X*C2$A;BD4@L43:TA]$$4`>YL!6L M6"`S+^`[7FFRS/&I@:)PUF<&,N"&BP''<+T$$%($=B$;.,?&XJ?5PGUC$;/# M6XZ?8-&Y9&RIF:1J>"P-W*T`W6:BD^ZD(8\_#[K0S<C7&<@+\"5VY4+7;C=. M]C;F7'&&R-#E4L)Q*8'.6P#J8(L9WV6([='&H[>''JC@]B.J50$HWTI-UX." M`7L*$`IUXO>F82B*BRE6QRI-7!:244>Z,4;-DN!-X"Y1UE/?1UK#`D2RDBI1 M>P&SK[?LL\O7#RHN7HCC6$BN8K/IB(OIO;\-RI)/&7[,[[/+LND]+YFW3.>E MYYX>%005)42<_D].`$Y/(%/QZ67P]EE.0^OA$051!($),3T/,WP]>^;:1=N? M&VC9^)N=WIY\Z<:2C+/IY^?#8J&>JIQ8@"0BH*)G1\F/X7"*L9QIR(ID"2G9 M'D"=QY>TWSPP6:B0@IR/C)Y>?I,8Z9^9O(Z2AH*9Z;>)JIECMKBD2?:EX2LI M%CT\^D+C7`(R/HJRTU!:.]U_(43FB8RN4^/B*>?$<ND$Y"JI`^0[_7<M88%4 MP@-YQXU,T0!69GWND(C9*CHB-#V9G&C@<D3KCJ,"(`XDJ55Y!WDE-SW['V84 M?9`'T]G<61S*`/2L\MKERF`)($@DE!`*.&:C(%HD1I1&HVB%E7@@3>W*YY3T M2(!G,_3^RY)`8DL51"F5H?M4V[80PV*^/=TN-/.6XZY>L@@7R6P?^%(@?B4D MH\J./&0T=E=A:5YH?NA\)%:'&%,3SR>!&@\-`M#71\;%PM+[;@5('[-*V`*0 M*W/6Z=5F6F[[JZ;=+[AJ8U+H:C)I@^Y4C,:'[C%>U6`6@U)6'HK8YXRDLJ0, M%D(606!B0>L,2!').L77OQCL&"A@"X*2FM`%2.!'@5&,TS\@$"1,:<6>:MXT M%UN<D""98AV6,`$JL;GSP;,'DGZ^?+K`>.NI)>-SF)W-)@\&SJGZ.2#T]_(\ M8/:+BJ(*[.+@Z3/,J-=_6Q0`5:$Z'\EX\!"=RP;VS3@+BR^>G5Q^A6ZI,(5O MC(HG8$E$10`CWMN=M@@(B6>X.$@P4"A8(&`8:!!P"'@`"!`8("@P.$!08'"` MH,#A`4&!P@*#`X0%!J`X/^PY(T`T1&2$Q06&6#K!`8'?/&^X!ZT08(#!`8(# M!`8-[;N-W>[P]^#Q]M'CKZ[P;('(`("0G;B%A88&;<@"`0-0!!*@8.`0E(*& M@82L'#P")1"1D%$JAHZ!B4PL;!Q*X>/@$E"(F(22I&3D%)2BIJ&DK1T]`R48 MF9A9*L;.P<E.+FX>2O'S\`I02%A$4J)BXA*4DI:1E*R<O(*E%)6452JFKJ&I M32UM'4KIZ^@:4,C8Q-*F9N86E+*VL;2MG;V#I1R=G%TJYN[AZ4\O;Q]*^?OZ M!E!P2&5"P\(C*14=$QE8N/B$RB4G)*95+3TC,IE9V3F5R\_(+*%1<4EE2LO* M*RE575-96KKZALHU-S2V5:V]H[*=7=T]E>OOZ!R@T/#(Y4;'QB<I-3TS.5FY M^87*+2\LKE5M?6-RFUO;.Y7;W]@\H='QR>5.S\XO*75]<WE;N_N'RCT_/+Y5 C[?WC\I]?WS^5^__X`%"@\4&1XC*"U/P'-T9&]U=)__N"G_A;
    `
    end
    --
    Cameron Kaiser * ckaiser@floodgap.com * posting with a Commodore 128
    Floodgap Systems: http://www.floodgap.com/
    personal page: http://www.cameronkaiser.com/

    --- SoupGate-Win32 v1.05
    * Origin: fsxNet Usenet Gateway (21:1/5)