> Zip v1.35 =ctrl%255,name%128,zp%9:A$=OS_GetEnv:in%=0:out%=0:inc%=0 Kquit$=cl(" -qu",1):debug%=cl("-de",0):hlp%=cl("-?",0):::exit() (Zrst%=cl("-re",0):rc%=cl("-r",0):vb%=cl("-q",0):pre$=cl("-pp",1):date$=cl("-t",1) 26apd%=cl("-g",0):sfx$=cl("-S",1):di%=cl("-D",0) <[mem%=1024*cl("-M",1):xtr%=cl("-X",0):nodir%=cl("-no",0):v1%=cl("-v1",0):v1%:vb%= Finc$="":A%=" "+A$," -i@") P="0"f$<="9":ct%=f$:A%=cl("-"+f$,0) n8out$=cl("",0):in$=cl("",0):pre$<>"":pre$=pre$+"." xDout$="-help":"BBC"s($(+7))" (C)J.G.Harston 1999-2014":hlp%= hlp%:"Syntax: *Zip outfile inpath -# -D -g -i@file -M size -nodir -pp path -q -r -resume -S suffix -t dd/mm/yyyy -X -quit command":exit(0) 9:" at line "+Þ,<128<>17):Close_All:exit() AX%=ctrl%:Y%=X%256:InitCRC:InitZip:date%=0:start$="":sfx%=0 "":date%=date$,2)+32*date$,4,2)+512*(date$,7)-1980) Lsfx$<>"":file(sfx$,5)<>1:"Suffix file '"sfx$"' not found":exit(214) Bsfx$<>"":sfx% X%!10:sfx%?(X%!10)=13:"Load "+sfx$+" "+~sfx% BA%-1:max%=-A%-2500+5000*(>&FFFF):mem%:max%>mem%:max%=mem% mem% max%:wr%=2:rd%=4 &out$="":"Destination file: "out$ Mout$=fn(out$):in$=fn(in$):apd%+rst%=0:OutputAppend:rst%:start$="" Nptr0%=#out%:X%!2=&FFFDDC00:A%=file(out$,2):A%=0:in$<>"":A%=file(in$,5) Hin$=""inc$<>"":Enter:A%=2A%2:"Dir "+in$:ChkFS:Scan(""):A%=2 1A%2:zipcatandeof"Dir. '"in$"' not found" E#out%:rst%:!mem%=&04034B50:mem%!4=0:gbpb(wr%-1,out%,mem%,8,0) #out%:out%=0:exit(0): "+Append:out%=(out$):out%=0:Output: ,\ptr%=0:gbpb(rd%-1,out%,mem%,4,0):!mem%=&100F4B50:gbpb(rd%-1,out%,mem%,4,4):ptr%=!mem% 6Nptr%=0:!mem%<>&04034B50:"'"out$"' not a ZIP file":Close_All:exit(214) @!ext%=#out%:ptr%>ext%:ptr%=0 J0ptr0%=ptr%::ptr%+30>ext%::#out%=ptr0%: T)!mem%=0:gbpb(rd%-1,out%,mem%,4,ptr%) ^,ptr%=0:!mem%=&100F4B50:!mem%=&04034B50 h'!mem%<>&04034B50::#out%=ptr0%: r%gbpb(rd%-1,out%,mem%,12,ptr%+18) |;mem%!12=0:esz%=mem%!10:mem%!10=0:fsz%=mem%!8:csz%=!mem% (fsz%>254esz%>127::#out%=ptr0%:  skip%=ptr%+csz%+fsz%+esz%+30 !skip%>ext%::#out%=ptr0%: 6gbpb(rd%-1,out%,name%,fsz%,ptr%+30):name%?fsz%=13 Dstart$=fn_zip($name%):start$,1)=".":start$=start$,start$-1) !vb%:"Skipping dest ";start$  skip%=ext%::#out%=ptr%: ptr0%=ptr%:ptr%=skip% : COutput:out%=(out$):out%=0:"Can't open '"out$"'":exit(192) "#out%,0:#out%:out%=(out$): Enter:p$="" [inc$="":"Enter files to include, end with RETURN""Exec "+inc$:inc%=byte(198,0,255) in$<>"":"Dir "+in$ ChkFS:inc%:#inc%=0: ":inc%=0:"Enter filename: "; &g""in$:t%=0:in$<>"":fn$="@.",in$=45)+in$:t%=f_info(fn$):name$=fn_sfx(in$,X%!3&FFF):inc%:11 04t%:zip(ct%)in$<>"":"File '"in$"' not found" :A%=0:inc%:A%=#inc% Din$=""A%:inc$<>"":*Exec N XScan(p$):p%,r%: bcfs%>127:ș12,9,"",name%,1,p%,32,,,r%,p%:r%=1-r%:ș70,name%in$in$=gbpb8(p%):p%=X%!9:r%=X%!5 lr%=0:RdName v r%=1: RdName:in$=46: !fn$=in$:fn$=45:fn$="@."+fn$ 8t%=f_info(fn$):name$=fn_sfx(in$,X%!3&FFF):skip%=0 'start$:start$=p$+name$:start$="" 9start$:start$,p$+name$+1)<>p$+name$+".":skip%= 'skip%:vb%:13;"Skipping ";p$;in$  skip%: /start$=0:di%(t%1)=1:zip(ct%):t%<>2: 6rc%t%=2:"Dir "+fn$:Scan(p$+in$+"."):"Dir ^":  zip(ct%):t%=2:rc%: *addDate:date%:zdate(X%!15)2:ct%<>255:filesize%:in%=(fn$):in%=0:"Can't open '"in$"'.":  6name$=fn_zip(pre$+p$+name$):t%=2:name$=name$+"/" *)vb%:"Adding ";pre$;p$;in$;"... "; 4>!mem%=&04034B50:mem%!4=0:mem%!8=ct%:mem%!10=ztime(mtime%) >Cmem%!12=zdate(mdate%):mdt%=mem%!10:mem%!14=0:mem%!18=filesize% H>mem%!22=filesize%(t%<>2):mem%!26=name$:mem%!28=24-8*xtr% RAesz%=30+name$+mem%!28:$(mem%+30)=name$:extra%=mem%+30+name$ \7!extra%=&4341:extra%!2=20-8*xtr%:extra%!4=&30435241 f>extra%!8=load%:extra%!12=exec%:extra%!16=attr%:extra%!20=0 pDextra%!24=ztime(ctime%):extra%!26=zdate(cdate%):extra%!28=acc% z=gbpb(wr%-1,out%,mem%,esz%,ptr0%):trans:in%:#in%:in%=0 -!mem%=ct%(t%<>2):mem%!2=mdt%:mem%!6=crc% Jmem%!10=compsize%(t%<>2)(ct%<>255):gbpb(wr%-1,out%,mem%,14,ptr0%+8) Hrst%:ptr0%:!mem%=&100F4B50:mem%!4=ptr0%:gbpb(wr%-1,out%,mem%,8,0) 3ptr0%=ptr0%+esz%+compsize%:vb%:8,8,8:"Done."  %zipcatandeof:#out%=0nodir%: :cp%=#out%:ep%=cp%:fp%=0:n%=0:vb%:"Finishing... "; $:lp%=fp%:vb%:sofar(lp%,ep%); &gbpb(rd%-1,out%,mem%+10,22,fp%+8) 4gbpb(rd%-1,out%,mem%+46,mem%?28+mem%?30,fp%+30) Hfp%=fp%+30+mem%?28+mem%?30+mem%!20:!mem%=&02014B50:mem%!4=0:mem%!6=0 /mem%!32=0:mem%!36=0:mem%!38=&20:mem%!42=lp% 1gbpb(wr%-1,out%,mem%,46+mem%?28+mem%?30,ep%) 0n%=n%+1:ep%=ep%+46+mem%?28+mem%?30:fp%>=cp% A!mem%=&06054B50:mem%!4=0:mem%!8=n%:mem%!10=n%:mem%!12=ep%-cp% 3mem%!16=cp%:mem%!20=0:gbpb(wr%,out%,mem%,22,0) $vb%:8,8,8:"Done." . 8addDate:X%!15: BT!zp%=X%!6:zp%!4=X%!2:Date_ToOrd(zp%):year%>1980:year%=(year%-1981)127year%=0 L7X%?15=day%+32*(year%16):X%?16=month%+16*(year%15) VEX%?17=hour%:X%?18=minute%:X%?19=second%:X%!20=X%!15:X%?24=X%?19: `:trans:crc%=0:compsize%=0:filesize%=0t%=2ct%=255: j,compsize%=filesize%:filesize%<128:ct%=0 tDcopyend%=filesize%:crc%=-1:docrc%=:ptr%=0:os%=6:ct%:ArcTrans ~":vb%:sofar(ptr%,copyend%); 4len%=max%:ptr%+len%>copyend%:len%=copyend%-ptr% 4gbpb(rd%-1,in%,mem%,len%,ptr%):docrc%:CalcCRC >gbpb(wr%,out%,mem%,len%,0):ptr%=ptr%+len%:ptr%>=copyend% crc%=crc%: ArcTrans:noZip%: Ofile("",5):"Access ":"Wipe ~CFR~V" B"ZipCompress "+in$+" ":*SetType Data %#in%:in%=0:in%=("") >gbpb(rd%-1,in%,zp%,4,#in%-8):crc%=!zp%:docrc%=:ptr%=44 4compsize%=#in%-52:copyend%=compsize%+44:ct%=8: 2ChkFS:fs%=fs:sj%=((fs%=5)2)+((fs%=16)1): 8ݤsofar(A%,B%):8,8,8:d0(A%/(B%+1)*100,2);"%";:="" InitZip:noZip%=:ct%=0:  os%<>6:ct%=0: ;file("*.Resources.SparkFS",5)<>1:ct%=0: <*RMEnsure SparkFS 0.00 Error SparkFS needs to be running (=*RMEnsure Zip 0.00 Error SparkFS needs to load Zip module 2noZip%=: <InitCRC:CRC%=CRC%:CRC%: F>&FFFF:crcARM: P?&FFF7=&6C:crc65: Z d?CalcCRC:CRC%:!ad=mem%:!nm=len%:!cc=crc%:CRC%:crc%=!cc: nmS%=crc%:A%=mem%mem%+len%-1:S%=S%?A%:Z%=18:B%=S%:S%=(((S%+(S%<0))2)&7FFFFFFF):B%1:S%=S%&EDB88320 x5vb%:(A%1023)=0:sofar(ptr%+A%-mem%,copyend%); ::crc%=S%: /crc65:CRC%63:ad=&70:nm=&72:cc=&74:P=01 .P%=CRC%:[OPT P*2:.bl:LDX#8:LDA(ad-8,X):cc *.rl:LSRcc+3:RORcc+2:RORcc+1:RORA:BCCcl 3TAY:LDAcc+3:#&ED:STAcc+3:LDAcc+2:#&B8:STAcc+2 'LDAcc+1:#&83:STAcc+1:TYA:#&20:.cl +DEX:BNErl:INCad:BNEnx:INCad+1:.nx:STAcc 'LDAnm:BNEsk:DECnm+1:.sk:DECnm:BNEbl LDAnm+1:BNEbl:RTS:]:: #crcARM:CRC%79:P=01:P%=CRC% 5[OPT P*2:LDR R0,ad:LDR R1,nm:LDR R2,cc:LDR R3,xor -.btlp:LDRB R4,[R0],#1:R2,R2,R4:MOV R4,#8 ?.rtlp:MOVS R2,R2,LSR #1:CS R2,R2,R3:SUBS R4,R4,#1:BNE rtlp 0SUBS R1,R1,#1:BNE btlp:STR R2,cc:MOV R15,R14 :.xor:EQUD&EDB88320:.ad:EQUD0:.nm:EQUD0:.cc:EQUD0:]:: ?ݤztime(A%):=(A%&1F)*&800+(A%&3F00)8+(A%&3F0000)&10000 "Eݤzdate(A%):=(A%31)+(A%&F00)8+((A%&F000)8+(A%&E0)*256)+&200 ,Dݤfn(A$):A$<>45:A%=A$,":",3):A%:="-"+A$,A%-1)+"-"+A$,A%+1) 6=A$ @#Date_ToOrd(mem%):A%,B%,C%,D% J@year%=0:month%=0:day%=0:hour%=0:minute%=0:second%=0:centi%=0 Tmem%!1<0: ^FD%=mem%!1&83D6+2447065:C%=mem%?0+256*(mem%!1&83D6):centi%=C%100 h>C%=C%100:second%=C%60:C%=C%60:minute%=C%60:hour%=C%60 r8B%=((D%*4+3)146097-4)+3:C%=B%14614*5+2:D%=D%*4+3 |.A%=C%153+2:day%=C%1535+1:month%=A%12+1 *year%=D%146097*100+B%1461+A%12-4800  ݤlc(A$):B$:A$="":="" 5B$=B$+(A$((A$<"_")&20)):A$=A$,2):A$="":=B$ Fݤf_info(A$):T%,L%,E%,S%,F%,U%,P%:X%!14=0:T%=file(A$,5):T%=0:=0 5X%!17=0:X%!21=0:X%!25=0:F%=fs:F%<>16:F%<>5:=T% %L%=X%!2:E%=X%!6:S%=X%!10:P%=X%!14 LF%=16:A%=file(A$,&FD):X%!6=E%:X%!10=S%:X%!6=0:X%!10=0:X%!8=P%:X%?8=0 RF%=16:X%!14=P%:X%!17=X%!6:X%!21=X%!10:X%!25=X%!2:X%!2=L%:X%!6=E%:X%!10=S%:=T% %NetFS_OpN(18,65,8,A$)=0:U%=X%!5 mNetFS_OpN(18,64,8,A$)=0:X%!15=X%!10:X%?19=X%?14:X%!20=X%!5:X%?24=X%?9X%!14=P%:X%!19=P%:X%?19=0:X%!22=0 2X%!2=L%:X%!6=E%:X%!10=S%:X%?14=P%:X%!25=U%:=T% )ݤbyte(A%,X%,Y%)=((&FFF4)&FF00)256 5ݤfn_sfx(n$,t%):e%,f%,sp%,xt$:n$<10sfx%=0:=n$ MA%=0:e%=A%+1:A%=n$,".",e%):A%=0:n$-e%<9:=n$e%=n$,"/",e%):e%=0:=n$ Wxt$=lc(n$,e%+1)):sp%=sfx%::f%=$sp%,xt$)=xt$:sp%?3=44:f%=f%t%=("&"+$(sp%+4)) &6A%=sp%:sp%=sp%+1+$sp%:?sp%=13f%:f%:xt$=$A%,3) 0*n$,1)<="_":n$,1)<>"/":xt$=uc(xt$) :=n$,e%-1)+"/"+xt$ DClose_All N"in%=in%:in%:A%=in%:in%=0:#A% X'out%=out%:out%:A%=out%:out%=0:#A% b l$ݤd0(A%,N%):="00000000"+A%,N%) vBݤfile(A$,A%):$name%=A$:?X%=name%:X%?1=name%256:=(&FFDD)&FF Tgbpb(A%,chn%,addr%,num%,ptr%):?X%=chn%:X%!1=addr%:X%!5=num%:X%!9=ptr%:&FFD1: Eݤgbpb8(ptr%):X%!1=name%:X%!5=1:X%!9=ptr%:A%=8:&FFD1:X%!5=1:="" 7A%=name%+1:A%!(A%?-1)=&D20:A%?($A%," ")-1)=13:=$A%  ݤfs:A%,Y%,E%:=(&FFDA)&FF )ݤfn_zip(B$):B%:A$="#?./$<^>&+@=%; " !A%=1B$:B%=A$,B$,A%,1))-1 4B%>:B$=B$,A%-1)+A$+"_",(B%1)+1,1)+B$,A%+1)  :=B$ cݤcl(l$,n%):l$="":A$=s(A$):A$=34:A%=A$+" "" ",""" ",2):l$=A$,2,A%-2):A$=s(A$,A%+1)):=l$ "":A%=A$,l$):A%:A$=s(A$,A%-1)+A$,A$," ",A%)+1))+" ":= n%=0:l$<>"":= %A%=" ",l$=32)+A$,l$):A%=0:="" 'A$=A$,A%-1)+s(A$,A$," ",A%)+1))  Cl$=32:l$=A$,A%):A$=A$,A%-1):=l$,1-(l$=34),l$+2*(l$=34)) PA$,A%,1)<>34:l$=A$,A%,A$+" "," ",A%)-A%):A$=A$,A%-1)+A$,A%+l$+1):=l$  Hl$=A$,A%+1,A$+" ",""" ",A%+1)-A%-1):A$=A$,A%-1)+A$,A%+l$+3):=l$ */ݤs(A$):A$,1)=" ":A$=A$,2):A$,1)<>" " 4+A$,1)=" ":A$=A$,A$-1):A$,1)<>" " >=A$ Hݤuc(A$):B$:A$="":="" R5B$=B$+(A$((A$<"@")&DF)):A$=A$,2):A$="":=B$ \2ݤOS_GetEnv:A%=0:X%=1:os%=((&FFF4)&FF00)256 f3A%=&600-&7B00*(>&8000):!(-&100)=@%:A%=-&300 p;?(P-3)=0:A%=&100:<&FFFF:A%=-&300:!(+512)=@%:A%= zcA$=$A%:=&8F00:run$=A$:ș16A$,,A%:ș72,"",A%:A$=A$,1+A$+" "," ",1+A$," "))):A$=0:A$=run$ SY%=-10:A$=" "+A$:A$=A$,2):A$<>32:A$=34:A%=A$,"""",2)+1A%=A$+" "," ") 9Y%:run$=A$,1-(A$=34),A%-1+2*(A$=34)):A$=A$,A%+1)  :=A$ !os(A$):A$=42:A$A$:A$  @exit(A%):"FX1,"+A%:quit$=quit$:A$=quit$:quit$="":os(A$) >&FFFFF:ȘA%  PݤNetFS_OpN(A%,T%,O%,A$):N%:!X%=0:X%?1=O%+1+A$:X%!3=A%:X%?7=T%:$(X%+O%)=A$ X>&FFFF:N%=4X%?1:X%?N%=X%?(N%+3)::ș&60048,A%,X%+4,O%+A$,120A%:A%=0:X%?3=0:=0 ;>&FFFF:A%>&FFFF:X%?3=?A%:ș&2002B,A%+4$(X%+4):=X%?3 A%=&14:&FFF1:=X%?3 I}{ O{*"ȑ " g{[{LQ%=PA.:CH."*BASIC {{{{a{a{`|{`` g{,z0ȱN{02 ee  { {N{{꩏ `