O@p   @`! #@%`')+-/13@5`9;=?A C@E`GIMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ o @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` `  @`! #@%`')+-/13@5`9;=?A C@E`GIMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ o @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @` `LEES DITVu HVAULT30  A319 j+ ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 EC Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (winter 1991) al zo'n vijfhonderd disks. Daarop vindt u programma's op elk gebied, van tekstverwerker en database tot de leukste spelletjes, de fraaiste tekenprogramma's en de handigste utilities. Ook bevat onze bibliotheek een speciale afdeling voor public domain disks met Macintosh software, die te gebruiken zijn onder de ALADIN emulator. Deze MAC-PD serie bevat tot nu toe ongeveer vijfendertig disks. ******************************************************************** U vindt in het twee maandelijks tijdschrift "ST" (Onafhankelijk tijd- schrift van en voor gebruikers van Atari ST computers) een overzicht en een bespreking van de inhoud van de nieuwe public-domain diskettes. Dit tijdschrift bevat tevens een bestelkaart zodat U vlot over de software kunt beschikken. De Stichting ST geeft ook een speciale PD catalogus disk uit. Deze public domain disk is geproduceerd en gedistribueerd door: ************** Stichting ST afd. Software Bakkersteeg 9A 2311 RH LEIDEN ************** Ondanks onze controle komt het af en toe voor dat een diskje niet goed is gecopieerd.Mocht U dit overkomen, aarzel dan niet en stuur de defecte disk aan ons terug. U krijgt dan direct een vervangende disk toegestuurd. ************************************************************************ Teneinde het voor ons mogelijk te maken om productiefouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productienummer. ************************************************************************ .  .. KEY  VAULT HLP A 7fLVAULT PRG D K%VAULT RSC E `EMAN VAULTICNRSC I L .  ..  KEY PRG [ KEY RSC [ 2`* o"h###,IPc.N//Bg?<JNA BbBy N3NV/.N;N^ _ONNV/.N;N^ _ONNV/.N<"N^ _ONNV/./. /.NXHN^ _O N/,HNVAZ-HNp=@"n0.r1JAg("n 0.$n2.t20.R@=@`"n 0.S@@N^,_ _PN/,HNV```?.NNI=@Pp=@0.N^,_ _ONLASTMORE/,HNVAL-HN V (JW V1B V0(@e& V"h/ ?< VHh?/?<NI=@0.J@j`"n/?.BgNJdJj``?.?.Nb@e,?.NI=@"n\/ N/NJL=@`|"n/ p/?.?<NJd"_"p=@?.NIJ@gBn"n\/ N/BgBgNJ=@"n\/ Nj/?<0.r FAA?NJ=@?.NIJ@gBn0.N^,_ _ON doesn't exist!!File /,HNVA-HN"n-Q"n\/ "n/ "nT/ HnNBt@e`j"n\/ "n/ "nT/ HnNBt@d@"n0`p=@`0`("n?)"n?)"n?)"n?)Nm@e .]"n0)"niWC"n0)"niWCBd`ZHyHz?<N"n\/ ?pHy?N?<ANp?N?<MNX0.S@=@`pHy?N?<vNX0.N^,_ _XNDo you really want to quit without resolving uncompleted split files? is incomplete.**** Warning: File /,HNVA@-HN . Jg("n 0)rAg p=@`"n -i `Bn0.N^,_ _XN/,HNVA>-HN"n Jg("n -Q"n $n &R"?</.Nn`N^,_ _XN/,HNVA-HN"n / HnHnHnN=&0.J@fpA/NH" A=@0.rAAW0.rBAWÄCBd./.N@d`pHy?N?<pNHz?<DNNXHyHz`?<Np?N?<qNX`\pHy?N?<pNHz?<6NNXHyHz?<!Np?N?<qNXNG?Hzn?<N0F@=@pHy?N?<MNp?N?<ANp?N?<MNX`Bn0.N^,_ _PNPress 'q' to return to top level.Please insert a new disk and press any key when ready.Press 'q' to quit.Insert a disk to resolve split files and press any key when ready. /,HNVA-HNHyHz?< N"n/ ? to quit at any time to Restoring /,HNVA2-HNA01|HyHz\?<NHn? Done with data file opening Pascal error ==> Using data file /,HNVA-HN"n$n0r1p @f"n$n0R@2`"n$n2"n$n0r1?p??<NAtO"O""""?<N?<N0F@"n2"nt)B^FCC@d"n$n0R@2`"n $n0$nR2N^,_ _ON/,HNVA@-HN"n$np*r1p\@W=B"n/ "n$ IO$O4p$QN>"n/ NCn@d6"n/ N<~"n$n2p"Q"n E``"n/ Hn"n/ "n / N=&"nND?.?"n/ N<~N^,_ _ON*.*/,HNVAh-HN V"h/ VHh VHh VHhN V0(J@fC6 VE`" V"h/ V?( V?( VHhNXN^,_Nu/,HNVA2-HN VBh"n VE2p"Q"n / N<~N^,_ _XN/,HNVA-HN"n-IBnp=@ NNHn?@dN6T"n/ "n/ "n / N7@dN:xHnxHn"n/ "n/ HnHn6HnNHnHnHn6"n / N"np)rCAmPpHy?N?<pNHzr?<Np?N?<qNNXNG=@N:`:N;` HyHz ?<NNXHyHz?<NNXHyHz?< NX0<Hy?NXHyHzl?<NNXHyHz*?<%NHz?<NNXHyNXN@HyNXHyHz?<NNXNG=@pHy?N?<ENXHyHz0?<:NNXHyHz?<NNXHyNXHyHz?<NNXHyHz\?<=NHz>?<NNXHyHz?<'NNXHyHz?<:NNXHyHzT?<3NNXHyNXHyHz|?<NNXNG=@N^,_ _O N [ sub | NSUB ] : include subfolders [ on | OFF ] [ o | OO | no ] : overwrite [ on | ONLY IF OLDER | off ]where switch is (default in upper case)path1 path2 ...usage: key [-f path] [-di inpath] [-do outpath] {-} Or, from a command line:and double-click on KEY.PRG.To run, make sure KEY.RSC is in the same folder as KEY.PRGPress any key to continue Used by permission of OSSPortions copyright %c 1986 OSS & CCD. 1988 by Robert FischerCopyright Fast File Restore UtilityThe Key unlocks the VaultPress any key to continue./,HNVpA~-HNp=@p=@CjEtCXECp"NnprAo""np/ HnHntHnN`HntHnHnNN^,_NuA:\A# A0B1|A01|/ to continueNot enough memory!Nu/,HNVAn-HNpHy?NXNDHz^?<NVHn ?"n/ ?@d p=@N(0.N^,_NuKEY.RSC/,HNVA-HNNtN`nN^,_NuNV nHHЮ @B( .R`N^NuNVH*nR`RJf SH"nJL N^NuNV .R`N^NuNuNV/.N;N^ _ONNV/.N;N^ _ONNV/.N<"N^ _ON/,HNVAJ-H"n $n p*r1p\@g*"n $n p*R@@"n $n p*r\N^,_ _XN/,HNVA6-H"n $n p*r1p\@f"n $n p*S@@N^,_ _XN/,HNVA-H"n/ $np*?NY0"_2"np)rA\"np)r:AWCpA"nQ_C"n0rPA_CBd>ND"n/ ?0.>rA0JAg(0.>2.>tA0A0.>R@=@>`0.>S@@Hn?NAN^ _ONNV/./. ?.?<?NAN^ _O NNV/./. ?.?<@NAN^ _O NNV/.?<ANAN^ _ONNV?.?. /. ?<BNAN^ _ONNV?.?. /. ?<CNAN^ _ONNV?.?<ENAN^ _ONNV?.?. ?<FNAN^ _ONNV?./. ?<GNAN^ _ONNV/.?<HNAN^ _ONNV/.?<INAN^ _ONNV/./. ?.?<JNAN^ _O NNV/./. /.?.?<KNAN^ _ONNV?.?<LNAN^ _ONNV?./. ?<NNAN^ _ONNV?<ONAN^NuNV/./. ?.?<VNAN^ _O NNV?.?. /. ?<WNAN^ _ONNV?.?<NMN^ _ONNV?.?<NMN^ _ONNV?.?. ?<NMN^ _ONNV?.?. ?. /.?.?<NMN^ _O NNV?<NMN^NuNV?.?<NMN^ _ONNV?.?<NMN^ _ONNV?.?< NMN^ _ONNV?< NMN^NuNV?.?< NMN^ _ONNV?<NNN^NuNV?<NNN^NuNV?<NNN^NuNV?./. /.?<NNN^ _O NNV/.?<NNN^ _ONNV?.?. ?<NNN^ _ONNV?.?. ?. ?.?././.?<NNN^ _ONNV?.?. ?. ?.?././.?< NNN^ _ONNV?./. ?.?.?.?.?././.?< NNN^ _ONNV/.?. ?< NNN^ _ONNV?.?. ?. ?.?.?.?<NNN^ _O NNV/./. /.?<NNN^ _O NNV?<NNN^NuNV?.?. /. /.?<NNN^ _O NNV?.?. ?. ?.?././.?<NNN^ _ONNV?<NNN^NuNV?.?. ?<NNN^ _ONNV/.?<NNN^ _ONNV?<NNN^NuNV?<NNN^NuNV/.?. ?<NNN^ _ONNV?.?. ?<NNN^ _ONNV/.?< NNN^ _ONNV?.?<!NNN^ _ONNV?.?. ?<#NNN^ _ONNV/.?<$NNN^ _ONNV?<%NNN^NuNV/.?<&NNN^ _ONNu/,HNVA.-H <S-@0. H-@ .-@-n .N^,_ _TN/,HNVA-H0. H-@ .N^,_ _TNNu/,HNVA-H?. Hz?<N0@d0. r0A=@`d?. Hzz?<N0@d0. raA@ =@`6?. Hz _XNFORM_DIAL ?Hz~{/,HNVnA>-HP"n0.-In~|"nnp) =@~}0.|o0<~~n=@`~~Bn~0.rAlp=@><=n><"nn0)"nn2)tHA=@><"nn0)"nn2)tHA=@><Bn><Bn><"nn0)n=@><"nn0)n=@><"nn0)2.AA=@><"nn0)2.AA=@><><?<3HnHn~HnvHnrNo><N^,_X> _PNOBJ_DRAW ?Hz></,HNVpA-HP"n0.-Ip><-nx><=n><=|><Bn><Bn><Bn><Bn><?<*HnHnHnxHntNo><><N^,_X> _\NDRAW_OBJ ?Hz></,HNVA*-HP/.N-@></.?.N><N^,_X> _\NDISP_DIALO?Hz></,HNVAT-HP/.N*-@></.BgBgN^><0.@d/.Bg?<NB></.BgN><N^,_X> _\NCLOSE_DIAL?Hz></,HNVAH-HP/.N-@><0.@d/.Bg?<N></.Bg?<N><N^,_X> _\NGET_POS ?Hz></,HNVA-HPHnHnHnHnNr></.$N-@><"n0."-I><"n$n0*@2.H2><"n$n0*@2.H2><"n$n0*@2.H2><"n$n0*@2.H2><><N^,_X> _ONSET_POS ?Hz></,HNVA-HPHnHnHnHnNr></.N0-@><"n0.-I><"n0.rH3@><"n0.rH3@><"n0.rH3@><"n0.rH3@><><N^,_X> _ONE_IE ?Hz></,HNVAX-HP?<BgBgBgBgN-@></.BgBgBg?<?<N></.Nn></.BgHnHnHnHnN></.Bg?.0.@`2.tHA??.?.Nt></.?<Bg><BgBgBgBg><Bgp@?N=@></.?.BgBg?.?.N(></.?.C IO$Op?$Q?<?<N></.BgN ><"nh/ "nd/ N=@></.BgNd></.N`>< 0.N^,_X> _OZNNu/,HNVA,-H0.rA??<?< HnNS0.HrA??<?< HnXNS0.r hrA@P=@0.rdAm0.@=@?.?<?< HnNS0.@db"n NDHnX??<N0@e"n$n0R@2"n0"nr)Ao`"n=Q?."n?N\=@"n0.r1?Hz?<N02.n_C@d0.R@=@`0.no2"n0.r1?Hz?<N0@d 0.R@=@0."nQ=@"n/ "n??.HnNX"n$n0n2Hn?< "n / NQ@e`p=@0.N^,_ _O N/,HNVA-HBnp=@"n/ HnHnN@e`"n/ HnHnN@e`"n/ HnHnN@e`0.rPAl0.@d=@0.rA]0.rA^ÄC0.rA]ÄC0.r A^ÄC0.rPA]ÄCBd`("n 0.2.AA2.At aA2p=@0.N^,_ _PN/,HNVA-HBnp=@"n/ HnHnN@e`"n/ HnHnN@e`"n/ HnHnN@eBn0.J@[0.rA^ÄC0.J@[ÄC0.r;A^ÄC0.J@[ÄC0.r;A^ÄCBd`&"n 0.H2.AA2.t aA2p=@0.N^,_ _PN/,HNVAd-H?.NO-@?.NO-@?.NO-@?. NO-@ .氮^ .氮W .갮^DC=B0.N^,_ _PNNu/,HNVA-HC""n-IBnp=@"n0.r1p @f0.R@=@`"n0.r1JAgx0.R@=@"n0.r1JAV"n0.r1p @VCBd0.R@=@`"n0.r1p @f0.R@=@``t"n0.S@@=n0.N^,_Nu _ N _"_$_$"N _#####x#0/3x| H |6"|zH2H2H209x @pf2<`2<3"<0<NBNu _<####"_#:3E3_3_ 2/3y Jg.El: y8DSEk0 y00 y0Q?"<0<sNBJ_g2 y:( y8DSEk0 y00 y0QNu _3N09Nu _3N09Nu _33N _"_$_24N _33N _"_$_24N _3N09Nu09Nu _3N _3*N _3.3,N _30N _32N _34N _"_$_&_6*4,2.N _"_$_&_604224N _ RNNu/,HNV-n=n ?<4HnHnHnHnNo=n0.N^,_ _\N _(N _0/Ho |r3JyfXNX/"_/$|a."|a&Hy?<NqJy g _9NuBgNAg`NuNu/,HNVnAL-HN?<MHnHnzHnrHnnNo"n2|"n2~"n2"n 2=nz0.N^,_ _ON/,HNV,A-HN0. rAg p=@.`$Hn,Hn,Hn,Hn,N\?Nppd=@.=n p=@ n n0.@rA1Rn`p=@?..Bg?< BgHnHnHn`HnHHn0BgNp =n0.N^,_ _TN/,HNVAV-HNp=@?.Np=n ?<fBg?<BgHnHn"n/ Hn"n/ BgNp ?.NpN^,_ _O N/,HNV4A-HNp=@6?. Np?. HnhHn8?<N^0.hJ@g pe=@4`p=@4?.4BgBgBgHnHnHnhHnPHn8BgNp 0. n6g?.6Np` BgNpN^,_ _TN/,HNV8A2-HN?<BgBgBgHnHnHnhHnPHn8BgNp N^,_Nu/,HNVjA-HNBnj?< HnHnzHnrHnnNo=nzl0.lrAg?<N=@j?.jNq.?.jNp?N^,_ _ONNNnNu/,HNVNp.R@rAHnNq/?. Nq=@0.N^,_ _ONNu/,HNVtA2-HN=n-n x?<NHnHnHnxHntNoN^,_ _\N/,HNVA-HN?</. NN^,_ _XN/,HNVA-HN0. ?BNnN^,_ _TN/,HNVA2-HNNq@J@f ?<BN8Nq@R@?NqHN^,_Nu/,HNVA@-HNNq@rAo(Nq@S@?NqHNq@J@f ?<BNN^,_Nu/,HNVA<-HNp?BNp=@Nq@=@0.nn NrRn`N^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNoN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNoN^,_NuNu/,HNVN .R-@"n ."<//N"2"n .r2N^,_ _O NNu/,HNVtNAD-H=n=n=n=n=n=n ?<iHnHnHnxHntNoN^,_ _O N/,HNVtNAL-H=n=n?<hHnHnHnxHntNo"n2"n2"n2"n 2N^,_ _ON/,HNVNA*-H?.?<"n/ "n/ "n/ "n / N`N^,_ _ON/,HNVNA*-H?.?<"n/ "n/ "n/ "n / NN^,_ _ON/,HNVNA*-H?.?< "n/ "n/ "n/ "n / NN^,_ _ON/,HNVNA*-H?.?< "n/ "n/ "n/ "n / NN^,_ _ON/,HNVNAP-H?. Np0. rAfBgBgNp`(?. HnHnHnHnN?.?.NpN^,_ _TN/,HNVNA&-HBg?< HnHnHnHnN=n0.N^,_Nu/,HNVNA-H?. ?< BgBgBgBgNNN^,_ _TN/,HNVtNAl-H0.J@W0. J@WÄCBdBgHnHnHnHn N=n=n=n=n=n ?<eHnHnHnxHntNoN^,_ _O N/,HNVtNA&-H=n ?<fHnHnHnxHntNoN^,_ _TN/,HNVNA"-H?.?<?.?.?.?. NJN^,_ _O N/,HNVNAH-H"n $n p*R@r"n / HnHnNxv?.?<?.?.BgBgNN^,_ _\N/,HNVNAH-H"n $n p*R@r"n / HnHnNxv?.?<?.?.BgBgNN^,_ _\N/,HNVlNA-H0.J@W0. J@WÄCBdBgHnHnHnHn N=n=n=n=n=n ?<dHnHnzHnrHnnNo=nzl0.lrAg?.l"n/ N=nl0.N^,_ _ON/,HNVtNA&-H=n ?<gHnHnHnxHntNoN^,_ _TN/,HNVnNA2-H=n=n ?<jHnHnzHnrHnnNo=nz0.N^,_ _XN/,HNVtNAd-H=n&=n$=n"=n =n=n?<lHnHnHnxHntNo"n2"n2"n2"n 2N^,_ _ONNu/,HNVxN=n-n|?<,HnHnHn|HnxNo"n2"n 2N^,_ _ONNu/,HNVtN/.?."n/ "n/ N"n0.-It"n$nt2"n $nt2"nt0) rAJ@g:"n$n0W@2"n$n0W@2"n$n0\@2"n $n 0\@2N^,_ _ONNu/,HNVxN=n=n -n|?<(HnHnHn|HnxNoN^,_ _PN/,HNVxN=n -n|?<rHnHnHn|HnxNoN^,_ _\N/,HNVxN-n|=n=n=n=n=n=n ?<*HnHnHn|HnxNoN^,_ _ON/,HNVN"n0. =i 0.N^,_ _\N/,HNVxN-n|=nBn=n=n=n=n=n0. rA=@?</HnHnHn|HnxNoN^,_ _ON/,HNVN/.?.HnHnHnHnNd/.?.?.?.?.?.?.?. NDN^,_ _O N/,HNVN"n0. =i0.N^,_ _\N/,HNVN"n0.3n N^,_ _PN/,HNVrN-nv=n=n=n=n ?<+HnHn~HnvHnrNo=n~0.N^,_ _O NNu/,HNVNA-H"n 0.-I"n3n"n3n"n3n"n3n"n3n"np2"np3@"np3@0.rAW0.rAWÄCBd0.rA=@"n0.r A3@"nBi 0.rAW0.rAWÄCBd"n3n "n3n ` "nB 0.rAg/. ?.?.NN^,_ _ON/,HNVNA-HBn"n0)J@g^"n0.0)r AJ@f0.R@=@`"n0.$n0.0*r FAA3@0.R@=@/.?.?.?.?.?.?.?.?.?.?. N2=n0.N^,_ _ON _"BeUNNu/,HNVAn-HN0. R@?HnNv&Bn0. S@=@0.nn"n0.BiRn`"n0. p3@-n .N^,_ _TN/,HNVAH-HNBn"n 0.r1JAg0.R@=@`0.rAlp=@=n0.N^,_ _XN/,HNVA0-HN/.N@d0. |?/.NnN^,_ _\N/,HNVA-HNBn0.|]"n 0.0)rAVCBd0.R@=@`0.|lBn0.S@=@0.nnR"n 0.-I"n0)`"n/) "n/) NN? NN ` "n$i -J"n/"n/ NN? NN"n/)?< NN"n/)?< NN"n?</) Nn`"n$i -J"n/"n/) NN(? NN"n/)"n/) NN ? NNb"n/)"n/) NN? NND"n?</) Nn`0@ @ b$@0;NppRn`0.R@?/. Nv,N^,_ _XNNu/,HNVtA\-HN=n=n=n=n=n=n=n=n=n ?<3HnHnHnxHntNoN^,_ _ON/,HNVnAF-HN0. J@jBn =n -nr?<2HnHnzHnrHnnNo=nz0.N^,_ _\N/,HNVAv-HN/.BgHnHnHnHnNdBgBgBgBgBg?.?.?.?.N/.Bg?<?.?.?.?.N/.?. N(=@0.N^,_ _\N/,HNVAH-HN/. BgHnHnHnHnNd?<BgBgBgBg?.?.?.?.NRN^,_ _XN/,HNVtA,-HN-n x?<6HnHnHnxHntNoN^,_ _XN/,HNVAX-HNBn"n0.r1JAg*"n 0.R@$n2.t20.R@=@`"n 0.@N^,_ _PN/,HNVA-HN"n Jf:p. rAl?<"n / Nv&`p. R@?"n / Nv&p=@p. =@0.nn&"n $Q0.S@2.tA 0Rn`"n $Qp. rN^,_ _ON/,HNVA|-HN"n0.-I"n0)rAW"n0)r AWÄC"n0)rAWÄCBd("n / AO"Op?"QN`"n0)rAW"n0)rAWÄC"n0)rAWÄC"n0)rAWÄCBd"n$i -J"n0)rAW"n0)rAWÄCp."ni\CBd"n0)S@@"n Jf"np.R@3@"n/ AO"Op?"QN"n0)rAW"n0)rAWÄCBd"n3n "n3n N^,_ _O N/,HNVAZ-HN"n0.-I"n0)rAW"n0)rAWÄCBd"n$i /"n / N`N^,_ _O NNu/,HNVAp-HN0.T@=@?.N-@/.?HnN6"nE2p"Q"n E2p"Qp.=@Bn0.@eR0.J@W0.rA0p\@WÄC0.rA0p:@WÄCBd p=@` 0.S@=@`p=@p.=@f0.nfn,0.R@=@"n 0.2.tA0Rn`"n 0.@0.N^,_ _PN09Nu _3NByNuH? _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?Nu0NvDNH|` H| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/LNu _ hNVf 0(gr"OD@Hd2S@k "Q` _"ye HyNr>N## .f -|`-| nNнf yNStack overruns heapH _0"_e /LNuHyJNr>/B9@/|@NuH _0 @f0"|p` "_J@jpE@r4@ BbBS@kQ/LNuH _4SBkt82$_rAdd0 @f0"|p` "_J@jp6ADb6CG0IS@k$eQ/LNuH _4k2SAk0"_p6B@bE0)CS@kQ/LNuH _2$_r0 @f0"|p` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/LNuH _4kF2SAk>0 @f0"|p` "_J@jp6B@bE@SBkQ/LNuString overflow Nu#( _ ged 9(NHy@`HyLNr>t`t _"_0gR@| e.G$$S" ghjebb"*f&"`v&A%S"`l&J`ذ|gb*|f8"9g0$A#`""9g$A#`"9 g $A# "`"E&R"$b Hy,Nr>Jgr"QHd2S@k"QN _"_0" ged gR@ @mz @ e@E$"fB3@B$`\&A2+@ef "'I`F"3@B$`8$K`ư|f" # ` |f"#` "#NHeap overruns stackPointer NILPointer not in heapBy(_ _/ C (g ( fxJ(ft4($IH / /?(?<?NA LJk,g*fJg  f"J` g  Wf NuJgJ(f P Nu!|Nu4(SBa@J(f8Jg. fJ(f"gr W1Agp f W1A1AQNu(gfJ(fT f6H`?<NAT fHy/<?3|NAXNuB9F`PFBy _0g$_jp"_// HHNLHJ@fP)J9Ff" f |` f|` f |` f|`4<G BQB) @e *:f&Jrt `e QGtWJBkZG3 J9Ff g< g6`d f H@?Range error during set-operationHT _0246@SCBgQAn68DCCc 0AgRB`/LTNuHT _0@CEHS@rIVW.J?/LTNuHT _0@CEHS@rIVV.J?/LTNuHT _0@CEHS@2FA_VW.J?/LTNuHT _0@CEHS@2FAYVW.J?/LTNuHT _0@274BAAc7V`tO>/LTNuHT _0@"_24BAAc1V`t>/LTNuHT _02S@AC2YQ/LTNuHT _02S@AC2YQ/LTNuHT _02S@AC2FAYQ/LTNuHlaS@r VW?/LlNuHlaS@r VV?/LlNuHlaS@r VU?/LlNuHlabS@r VS?/LlNuHla>S@r VR?/LlNuHlaS@r VT?/LlNu# _0 @g "_J@jp`0k"|kp2 Ag $_JAjr`2k$|kr@g\HGle$4SBkQ4@SBpQ0"|l` 4SBkQ4ASBrQ$|lLJ@f pC"$I/9Nu [3][][ Abort ]Copyright 1986, CCD and OSS, Inc., n""& D*,( $*88$f2 \8$| "     * L 6",,f & ,.$& "(F(*DH<0  `D4&,DZ$ (8p(J$>>, ."     X0"<       "  rR v@ D 4 &\& ,&((***((,(  h`B  T       F4LH4N P" | 0(~^($B@  "  "8L""D*.v( (LRR\(&&,&&,zN$ FBj \VH"J:$6T          :.  &L2`*2 "T &( &0 ,& ,,  ,6  ".F.:FFFF*@4n(>2020nD(."F<&,,&D0T>0,8&p`  zP"P"4*>4@ l*tr06 ,\60D$*.444"d  V 2  ( *@ B @   <   , FP< N   ( 0@LpD j2J  nBB6 z,*< * * , , 0 , "      $" ##x#0/3x| H |6"|zH2H2H209  $l@!Input:Output:Copy SubfoldersCopyExitSelect Restore ParametersTHE KEY v1.1Unlocks The VaultCopyright 1988 by Robert Fischer.All rights reserved.Portions 1986, OSS, CCD.Used by permission of OSS.Overwrite Existing File?Always okayOnly if olderNeverOnly if differentLynxwareWildcard:texttttttttttttttttttttttttttttttttttttt________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPtexttttttttttttttttttttttttttttttttttttt________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPtexttttttttttttttttttttttttttttttttttttt________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPLicensing Agreement for The KeyYou may redistribute The Key, but may not sell it or change it in any way, or even aggregateit with a product being sold, without prior written permission of Robert Fischer, herebyreferred to as the author. All rights to The Key are reserved, The Key is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; withouteven the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. The authormakes no warranty with respect to The Key, and disclaims any imputhor. THE AUTHOR WILL NOTOKlied or explicit warranties.In using this program, you assume all risks and damages, if any, arising as a result of its use,even if caused by negligence or other fault on the part of the aBE LIABLE FOR ANY DAMAGES THAT RESULT FROM USING THE KEY.unless explicitely givento you in writing by the author.@` @ @ @8p@! Cq8g8 plMgh`ivwH x Pn#H X>/.@0.  (RTUV_`-@ @ k n n))8))a)) ?@AA^_`AABCADabcAA %&*GHIA!A,-:.GHIjk!)6$+ 3 C  H+   0  "/>Zv   "!   , !:@# &$% % # 'a ( (): ((V (MrMI01010  0  61  R0  n1  0 1 ';  1 0 1  0 2 * N1 j vHnHn|HnxNoN^,_ _\N/,HNVxN-n|=n=n=n=n=n=n ?<*HnHnHn|HnxNoN^,_ _ON/,HNVN"n0. =i 0.N^,_ _\N/,HNVxN-n|=nBn=n=n=n=n=n0. rA=@?</HnHnHn|HnxNoN^,_ _ON/,HNVN/.?.HnHnHnHnNd/.?.?.?.?.?.?.?. NDN^,_ _O N/,HNVN"n0. =i0.N^,_ _\N/,HNVN"n0.3n N^,_ _PN/,HNVrN-nv=n=n=n=n ?<+HnHn~HnvHnrNo=n~0.N^,_ _O NNu/,HNVNA-H"n 0.-I"n3n"n3n"n3n"n3n"n3n"np2"np3@"np3@0.rAW0.rAWÄCBd0.rA=@"n0.r A3@"nBi 0.rAW0.rAWÄCBd"n3n "n3n ` "nB 0.rAg/. ?.?.NN^,_ _ON/,HNVNA-HBn"n0)J@gThis is the Vault help file. Each help screen starts with a title line and has up to 18 lines of help. ~Full Backup:Daily Incremental:Cleanup Incremental Full Backup A Full Backup backs up all the files in the folder(s) you specify, usually all the files on a partition of your hard disk. It often takes a long time and many backup disks because a hard disk stores a lot of information. It should be done initially and then from time to time whenever a clean copy of everything on the hard disk is desired. Between full backups, you should run daily incremental and cleanup incremental backups. To run a full backup, click on 'Full Backup' under the 'File' menu. ~Daily Incremental:Full Backup Daily Incremental Backup A daily incremental backup backs up only those files which have changed since the last time you backed up your hard disk. This is the most commonly used type of backup because it's quick and you can therefore do it daily. Before you run a daily incremental, though, you must run a full backup. To run a daily incremental, click on 'Daily Incremental' under the 'File' menu. ~Cleanup Incremental:Full Backup:Daily Incremental Cleanup Incremental Backup After many days of running a daily incremental, your incremental backup set will fill up. Then, it's time to run a cleanup incremental, which backs up all the files which have changed since the last full backup. After the cleanup incremental, you can continue with daily incrementals until the backup sets fill up again and you run another cleanup incremental. Eventually, enough will change on your hard disk since the last full backup so that it's best to run a full backup instead of a cleanup incremental. To run a cleanup incremental, click on 'Cleanup Incremental' under the 'File' menu. ~Archive Bit:Cleanup Incremental:Daily Incremental Archive Bit TOS version 1.4 or newer will set the "archive" bit on a file whenever it is modified. This includes modifying a file with a database and any time a file is created. A file which is moved by copying and then deleting the old file will have its archive bit set, too. Normally, The Vault does not back up according to how the archive bit is set, but does clear the bit when it backs up a file. When the "Use Archive Bit" flag in the "Options" menu is set, The Vault will back up files with the archive bit set and files with a new date when running an incremental backup. If a file it backs up has an old date so that it would not have been backed up without the archive bit, The Vault changes its date so it would have been. This way, it will be backed up on subsequent cleanup incrementals. Note that this option is not available with TOS 1.0 or TOS 1.2 ~Split Files:Split Threshold Split Files Sometimes, the files you want to back up are larger than will fit on one floppy disk. The Vault then splits them into two or more files across subsequent backup sets, giving each one a unique name based on the original file's name. The Vault uses the same base name, but adds a new extender telling which part of the file it is. For example, if The Vault splits a file "BIG.BIG" across three disks, it creates files called "BIG.A01", "BIG.A02" and "BIG.A03". If "BIG.Axx" already exists, where xx are two digits, The Vault will try other letters until it finds one which is free. For example, if you have a real file called "BIG.A34", The Vault would call the split files "BIG.B01", "BIG.B02" and "BIG.B03" instead. When The Vault doesn't split files, you can restore its backup sets using any standard file copy program. But when it splits a file, you need The Key (the restore program for The Vault) to restore it. Because of the inconvenience of split files, you can give The Vault a split threshold, so that it will never split small files. ~Full Copy:Full Backup:Split Files:History File Full Copy Full Copy is like Full Backup except that The Vault never splits files, writes the history file, changes the date on a file when using the archive bit, or checks disk labels. You are also only allowed one starting folder on a full copy. It is useful when you just want to copy data, such as making up disks for a user group or a friend. To run a full copy, click on 'Full Copy' under the 'File' menu. ~Incremental Copy:Full Copy Incremental Copy Incremental Copy is like Full Copy except that only those files created or modified since a date and time you specify will be copied. To run an incremental copy, click on 'Incremental Copy' under the 'File' menu. ~Input Parameters:Folder Selection:File Selection:History File:Starting Folder Selecting the Input Parameters The Input Parameters dialog box allows you to specify which files you want backed up. It has three parts: in the left-hand window are the folders to back up. In the right-hand window are the folder selection masks for the selected starting folder in the left-hand window. This lets you specify some folder to not back up. To change the starting folders and folder selection masks, click on the items in the windows and use the buttons 'Add', 'Insert', 'Edit', 'Delete' and 'Clear', which apply to the current window. Below that is the backup history name, which you can type in by hand or use the mouse to select, and the file selection masks which, like the folder selection masks, let you tell The Vault to back up certain files and not others. The Vault will back up all files matching the file selection masks in folders matching the folder selection masks. ~File Selection File Selection Masks File selection masks let you select which files to back up. Use *.* to include all files. '*' matches any string of zero or more characters, '?' matches exactly one character, and other characters match themselves. Thus, *.PAS would match only those files whose type is '.PAS', and *2.? would match all files whose name ends with '2' and whose type is a single character. If you give more than one mask, The Vault uses them from left to right. For example, *.pas *.c backs up all the '.PAS' and '.C' files. A mask preceded by an exclamation point (!) excludes the matching files. For example, *.* !*.BAK backs up all files except the '.BAK' files. Each new mask adds to or subtracts from the set of files specified by all preceding masks. For example, *.* !TEST.* *.C starts with all files, then removes those matching 'TEST.*', then adds back all files matching '*.C'. Note that 'TEST.C' will be backed up by these rules. ~Folder Selection:File Selection:Starting Folder Folder Selection Masks Folder selection masks let you select which folders to back up. Use '.' to include all subfolders of the starting folder. You select them with the file selector the way you select a starting folder: select a starting folder, click on the "Folder Selection" window and then on the "Add" button. Each Folder Selection Mask is simply the "tail-end" of a path-name. Therefore, you cannot select a folder selection mask which is above the starting folder to which it applies. For example, if your starting folder were E:\R\ and you wanted E:\R\DOCS\ to be backed up, then that folder with the file selector and "DOCS\" would appear in the window. You could not select "E:\" with the file selector because that's above "E:\R" in the folder tree. As with File Selection masks, if you give more than one mask, The Vault uses them from the top down. If you click on the "Exclude" button, the given mask excludes the matching folder. Clicking on the "Fl Only" button A mask makes the mask not apply to any of its subfolders. ~Output Parameters:Backup Set Output Parameters Dialog Box The Output Parameters dialog box lets you select the backup set name and starting volume number. Enter the requested information from the keyboard. The backup set name should consist of at most eight alphanumeric characters. The starting volume number should generally be 1. On a copy, this box also lets you select an output folder. You may select any folder name as many levels deep as you want on the floppy disk. For example, "R\DOCS\LETTERS\" would copy files from the starting folder to A:\R\DOCS\LETTERS\. ~Insert Disk:Formatting Insert Floppy Disk Dialog Box The Insert Floppy Disk box asks you to insert a disk and specify which drive the disk is in and how it should be treated. Click on the box corresponding to the drive you are using. If you select dual mode, when The Vault is finished writing a disk, it will look in the other drive and if the disk it expects is there, The Vault will write it. Dual mode even works with Full or Incremental copy. This lets The Vault write continuously if you own two drives. You have three options of what to do to the disk: You can either format it, clear it, or append to it. The Vault normally selects the proper option by default, but you can override its selection when necessary by clicking on the appropriate box. The append option is intended for daily incremental backups and only works quickly on disks which were written by The Vault or which have no fragmented freespace. ~Formatting:Insert Disk Formatting a Floppy If you select the 'Format' option from the Insert Floppy Disk box, a Format box will appear asking you to specify how you want your disk formatted and giving you the opportunity to change your mind. The FORMAT box will also appear if The Vault decides that the disk needs formatting. The FORMAT box lets you select whether to format single or double sided and 9 or 10 sectors per track. "Standard" is 9, but using 10 sectors puts more on each disk. Similarly, you can format between 80 and 83 tracks. Beware, more than 80 tracks may not be safe. You can also select normal or skewed disks. Skewed disks read faster. You are also given the option of specifying the serial number on the disk. All disks _must_ have a unique serial number. If you don't have a system for making up your own serial numbers, make sure that 'Random Serial Number' is checked and The Vault will choose one for you. Otherwise, uncheck it and enter the serial number in base 16. ~Backup Set:Full Backup:Wrong Disk The Backup Set Name A backup set is a set of floppies which were all created during the same backup operation. Each backup set has a name attached to it, called a "set name", which consists of any alphanumeric string up to eight characters long. You are asked to enter the backup set name when you select 'Full Backup' from the 'File' menu. The set name should be different for each different full and incremental backup set. Each diskette in a backup set is assigned a volume number, starting with the one you enter (normally 1). Thus, each backup disk is uniquely identified by its set name and volume number. The wrong disk inserted box will appear if the disk's set name and number do not match what was expected. ~Wrong Disk:Insert Disk Wrong Disk Inserted Dialog Box When you are asked to insert a disk, The Vault checks the name and number of the disk you insert to make sure it's the correct one. If it isn't, you have there options: 'Switch disks' goes back to the Insert Floppy Disk box and lets you try again. 'Relabel & Proceed' writes the expected label on the disk and then proceeds normally. 'Proceed' goes ahead and uses the disk that you inserted. It also changes the expected backup set name and volume number to match what was on the disk, so the next disk requested will be the next one in sequence in the new backup set. ~Verify Writes Write Verify Option Normally, the Atari ST verifies everything that it writes to disk, ensuring that all data written will be readable. You can turn this off and speed up the backup process considerably by unchecking the 'Verify Writes' menu item. If you do, you are increasing the chance that you will find your backup data unreadable when you need it. ~Split Threshold:Split Files Split Threshold The 'Split Threshold' allows you to control when files are split across more than one floppy disk. Files shorter than the split threshold will never be split, and the amount of wasted space on a floppy (except for the last) will never be larger than the split threshold. Thus, the larger 'split threshold' is, the fewer files will be split but the more wasted space there might be on each floppy. Because The Vault uses a sophisticated file packing algorithm, the amount of wasted space on each disk is generally much smaller than this parameter. We recommend a value around 40% of the capacity of the floppy disks you are using. The threshold must always be less than the total disk capacity. Make sure that you set the split threshold to something smaller than the smallest disk you will be using. Otherwise, a file larger than that disk may confuse The Vault. ~Defaults File:Insert Disk Defaults Files When The Vault starts up, it looks for a file called "VAULT.VDF" to load all the default options of the menus and dialog boxes from. Once you've set the options in the dialog boxes, you can save them with the 'Save Defaults' menu item or the 'Save Defaults' button in the Insert Disk box. You have the choice of saving them to "VAULT.VDF", in which case The Vault will load them automatically, or to another ".VDF" file, which you can load with the "Load Defaults" menu item. Usually, you will have one defaults file for every type of backup you run: one for the system files, one for the user files, one for the games, etc. You can also use the "Install Application" feature of the Desktop to start The Vault with the .VDF file of your choice. To do this, click on the icon for The Vault, select "Install Application" under the "Options" menu, and enter "VDF" as the document type. Then, when you double-click on a .VDF file, The Vault should run with your selected file pre-loaded. ~History File:Input Parameters Backup History File Whenever you back up the disk, The Vault creates a history file ending in ".HST" in the folder of your choice. The history file contains the names of all files backed up and the name of the disk on which they are stored. This provides a convenient means of locating a specific file in the backup set. The first four lines of the history file contain the date and time of the last incremental and full backups, the last output folder used, and the last incremental disk used. Another file, of the same name as the history file only ending in ".CTL" is created which contains only the header information from the history file. The first four lines of this file are used to control incremental backups and should not be changed. It is OK to change or delete the rest of the file. ~Backup New Folders:Archive Bit Backup New Folders Sometimes, you may copy a folder-full of files into a new folder on your hard disk, and then want them backed up in spite of their old date. When the 'Backup New Folders' flag under the 'Options' menu is set, The Vault will back up files in folders newer than the last backup regardless of the dates of the files. This option is not usually used in conjunction with the 'Archive Bit' option, because in the above scenario, all the files would have their archive bit set anyway. ~Starting Folder:Input Parameters Starting Folder In the Input Parameters box, the window on the left contains the starting folders which The Vault will search for files to back up. The Starting Folder is where The Vault starts its disk scan for files, so The Vault cannot back up files above the starting folder in the folder tree. In the usual case, where you want The Vault to back up a whole partition, you set the starting folder to the root folder in that partition -- C:\ D:\ or E:\, for example. ~Can't Read:Insert Disk When The Vault Can't Read the Disk Sometimes, The Vault can't read the disk which you give it, and gives you the Can't Read dialog box. The four buttons let you do the following: Format: Usually, you see the box because the disk you inserted isn't formatted. This button lets you format the disk and continue. Insert Disk: You may have inserted the wrong disk, so this option lets you go back to the Insert Disk box and insert the right disk. Retry: The disk drive may just be flaky, in which case in trying again, The Vault might be able to succeed in reading the disk. Usually, though, 'Retry' doesn't accomplish much. Quit: If you realize that you didn't want to run this backup after all, the 'Quit' button will get you back to The Vault desktop. ~Misc Options:Maximum Tracks:Split Threshold:Ring Interval Miscellaneous Options By selecting "Set Misc Options" under the "Options" menu, you can change the Maximum Tracks to write at once, the Split Threshold and the Ring Interval -- three unrelated options. To read more about these topics, see their help screens. ~Ring Interval:Insert Disk:Hur Ring Interval When The Vault waits to insert a floppy disk, it rings a bell periodically to tell you to it's waiting for a disk. Different people want the bell rung at a different interval, so this option is user-settable. The number you give as the ring interval divided by 200 is the number of seconds between two rings. The ring interval defaults to 1728, which is 8.64 seconds, or 10 milli-hurs. If you don't want The Vault to ring the bell at all, set the ring interval to 0. ~Hur Hur -- A New System to Measure Time A Hur is a unit of time equal to 1/100 of a day, and a Hurclock is a clock which measures the number of hurs which have passed since midnight of the current day. The standard abbreviation for a Hur is 'r'. Following are conversion factors: 1 mr (milli-hur) = .864 sec 100 mr = 1.44 minutes = 1:26.4 1 hur = 14.4 minutes = 14:24 1 hour = 4.166667 hur 1 day = 100 hur 1 m/mr = 1 km/r (very nice, because it eliminates the conversion between m/s and km/hr) A Hur has little to do with The Vault. If you are interested in a Hurclock for your Atari ST, contact the author (Robert Fischer) ~Maximum Tracks:Formatting:Misc Options Maximum Tracks to Write at Once The "Writing" thermometer bar in the backup status poses a special problem to The Vault. While The Vault is writing to the disk, there is no good way to update the thermometer bar. Every time The Vault does updates it, depending on which format floppy you're using, it loses up to .2 seconds. Therefore, The Vault runs a compromise and only updates the thermometer bar every few tracks it writes. Using the option "Set Max Tracks" in the "Misc Options" dialog box, you can set the number of tracks The Vault will write before it updates the thermometer bar. If you're using non-skewed disks, you should set this to 1 because The Vault doesn't lose any time on these disks in updating the thermometer bar. If you format your disks in some way to accelerate them, chances are updating the thermometer bar will slow down The Vault, so you'll want to set Max Tracks to a compromise like 8. The only way to tell for sure if using a smaller Max Tracks number slows down The Vault is to try it. ><J><J0.rA^"n0.r1p\@VCBd0.S@=@`><K"n/ 0.R@?"np)n?"n/ N><L"n/ N><MN^,_X> _PNSTART_BACK?Hz><Q/,HNVAP-HPNG"><RB><SB><T=y^6><UCEpQ><V><W"np3@><Y><Z"n0`><[><[CE p Q`><\><\CdEpQ`><]><]C0EpQ`b><^><^CE pQ`B><_><_CEpQ`"><` @b@0;NNn><b><c><d><dHy\Hy\Hy]><eHn"n?N@e`><f><gp=@p><h0.p@e&CO$O&p%Q><iN|`T><i><jHy]?<k0.p@eCO$O#p"QN|><l><m0.p@d.><o><p><r><s"n0`><t><t><uHy]Hy^"Hy^0><vHn"n?NX@e`><wBl><xNGHy]?<yHnHnr NN><zC^"E4$$><{09^0S@=@><|`&><}><}><~><Hy\`p,x0*o m$m,B"HJgP"&J$YJf"Jg< Af Rf Gf Vf =f Jg#B "&J$YJf"Jf&f2B "EHB2 r ggSJ"g fB*`B" #.I+I/ #//SA?/ / Bg?<JNA Jf.?<?<N>N?|BWN>NXON1 ?N?<LNANV0. `XO`4p3,p,Hy,N->XO`p3,p,Hy,N->XO`9,fp`B@,9,H?p?/.NPO`p3,p,Hy,N->XO`p3,p,Hy,N->XO`zN`p92Qfp`B@2Q92QH?p?/.NPO92QH?HyDN\O`&9,fp`B@,9,H?p?/.NPO`Hy,Hy,Hy,N v `N`N 92QH?HyDN\O92QH?p?/.NPO9,H?p?/.NPO9,H?p?/.NPO`Z n$ mR n0 nJ0. @$HA/HnNPOBHnN~$PO`@ @bH0@p PNN^NuNVHyDN6XO=@HnBgBgNPOp?/.N\OHyNXOT/N6XO @lB9,Bgp?/.NPO`9,H?p?/.NPO92QH?p?/.NPO9,H?p?/.NPOBnHnN&XO n f. <.`RGFnD0Ѝ(@0,9@0,9@0,9@0,9@`L0N^NuNVnNL0lB@`^HyNDXO0fHyNXON϶B@`2Hn~Hn~HyHyNd3HnHyHy0N N4HnvHnxHnzHn|p?BgN?.v?.x?.z?.|BgN| =@t?.v?.x?.z?.|?.tN& ?.tN`TO?.tNӸTOHy2p?BgNPO/92N6XOHy2p ?BgNPO/92N6XOHnp ?BgNPON> n!@NL n!@ nh nh nhX/.N6XO/.N XON}X0f8HnBgBgNPOp$=@~`Rn~ n0~nBg?.~/.NPO` nh nh nhXp?/.Nt\OHnp ?BgNPO09H nhHnp?BgNPO n]h n]h n]hBBgNѦ\OpN^NuNVN?9NԊTON϶N^NuNV~HyHn~HyN 0gHn~N;`XO0fHyNXON^NuNV~HyHn~HyN 0g Hn~N; XON^NuNVHyp?NB\ON^NuNVHyjp?NB\ON^NuNVHyHnNPOHnp?BgNPO/.N6XO n/Hy n h/NZ n?Hy n h/NZ n ?Hy n hl/NZ /.N XOp?/.N \O=@0. @h n f/.HnN~$PO`p?/.Nt\O n fxHnp ? n h/N 0g n Hnp ? n hl/NH 0g n 0Hnp ? n h/NH 0g n0N^NuNV nhb nh nhB@N^NuNV nhb nh nhpN^NuNVHyHnNPOHnp?BgNPO/.N6XO n!n<"n Qfp`p @h "n Q fp`p @h "n QPfp `"n QQfp `"n QRfp `p @h ngp`p @h n o. n h Pp0 n h PB(/.N XO@`0 n/Hy) n h/NZ /.N XO@B./.N XO.gBg`p?/.N \O=@0. @h nf/.HnN~$PO` nfd.g/.N XO` /.N XO@BgBgBgBg?<p?/.NrBgBgBgBg?<p?/.Nr`Jp?/.Nt\O nfp@ n0(b@g n `>/.p? n h/N 0fp`B@@.gHy/NXO n0(@gp`p n 0 n0(@gp `p n0 n0(@ n n0(*@gpP`& n0(@gpQ` n0(B@gpR`pS n0`B..f0.HN^NuNVHyAHnNPO nfp`Hnp?BgNPO/.N6XO0.HC n!Q$/. n h/NPO n?HyS n h/NZ 0.`@ nhP nh nh`4 nhP nh nh` @bH0@ PN0.`8 nh nh`6 n h PB nh nh` @bH0@ PN/.N XO0.`,p?/.N \O=@`*p ?/.N \O=@` @bH0@ PN0. @h nf/.HnN~$PO`p?/.Nt\O n f n h//.NPO n h//. NPO/.p ? n h/NH @0.`0 n gp`B@@`( n gp`B@@`p@` J@g @g`.fHyVNXO0.`(p:?/.N֒\O g(B.HypNXO` @g @g`B.`.g|p@0.f> n h1n n h hp_@ n h$h n h"hi.HN^NuNV n0(@gB@` n0(Z@gp`p n@ n0(@ n@ n0(@gp`B@ n 0N^NuNV nh nh* nhZ0.  @h N^NuNVHyHnNPOHnp?BgNPO/.N6XO n?(NTO n 0fp`p @h n 0fp`p @h n( g nh` nh nB@(`6p ?/.N\O`8p ?/.N\O`&p?/.N\O` @bH0@ PN n0` n!nT`" n!|T` @bH0@ PN/.N XOBg/.N \O=@0. @h 0.`N:/.HnN~$PO n?(NTO`p?/.Nt\O/./. /.Np "nCA,!!!!!!!! n 31@N/.N XO`P0. @0( @f n h n hBgBgBgBg?<p?/.NrBgBgBgBg?<p?/.Nr`0. @ h BgBgBgBg?<?./.Nr`?./.N\OBgBgBgBg?<p ?/.NrBgBgBgBg?<p ?/.NrBgBgBgBg?<p?/.Nr`@]@ @bH0@, PN`&p?/.Nt\ON: nf/./. /.Np p`B@N^NuNV f n h PB n h PB`< n h/?<Bg?.N2 n h/p?Bg?. N@ N^NuNVHyHnNPOHnp?BgNPO/.N6XO n//.N`POB./.N XOp?/.N \O=@0. @h n f/.HnN~$PO`p?/.Nt\O n fp@ n h/?< nHhNf 0fp`B@@.gHyNXO`> n h//.NPO0fp`B@@.gHyNXO`B..f.HN^NuNVHyHnNPOHnp?BgNPO/.N6XO n h n h  n hT0.fpA`pB/.N XOBg/.N \O=@0. @h nf/.HnN~$PO`p?/.Nt\O0.` p`4/./. NPOp` B@`p`@ @bH0@l PNN^NuNVHyHnNPOHnp?BgNPO/.N6XO/.N XOBg/.N \O=@0. @h nf/.HnN~$PO`p?/.Nt\O0.N^NuNVHnp ?BgNPO/.N6XO/.N XOBg/.N \O=@p?/.Nt\O0. @h ng"HyHnNPOBHnN~$PO`N^NuNV <N^NuNV <N^NuNV n PoB@`|Bn0. `-|<`-|` @ g @ g nHhNjtXOHy'pH?NA\O-@Bn`Rn0.nlBn`Rn0.nlNT0gB.`??NAXOBgp?/.NPO?./.N\O0f*HnpA?NA\O=@gHy?.N\OB@`0.gp$?N@TO n "n C$ n PA$2<!!Q/.NXO n !@ n hp0(/ n"h n (?)BgПS/NtPO=@ n PRh n"P n (ѩ n"P n (?.Bg/.NPO n (op*?N@TO-@HnpNǸXO n n 0(g/. nHhNPO` nB("n n!i"n n!i HnNǸXO n!@"n 0.gp`p n1@$"n n!i "n n1i"n n!i & n!n n ?(p?HnpC?NA BgHnp=?NAPO=@ ndHyNXO`, n -hp??.HnpW?NA ?.p>?NAXOpN^NuNV n-P n=h( n h?("n n0($i&?NhXO .gNT0gB@`4HnBg/. /././.NJ0g n h?("n n0($i&?NhXO/././.B/./.Nu -n n-h "n nf n/NXXO n `H n/( NXXO n!n `*-n n-h ` n gT n PgH n Pg<"n n P (m& n"PC$A2<!!Q0.f:p=@ n /HnHnHnN0fHyNXOB@`Hnp?/. /.Hn/.NJ0g/././. n P/(Hn/.Nu  n-P n"P n /.NXXO"n n!Q n nf>p?N@TO-@Hn/.NPO nn "n n!Q n pN^NuNV~ n g*/. n0@A?HyHn~NZp?/.N\O0gHn~NXO0f.HyHyNPO0f/./. NQPOB@`Bgp?/.NPOHn~/./. /./././. N!0f/./. NQPOB@`b n g&/./. NQPO0fB@`@ n p@Ng/. /.NF>PO0fB@`/.NhtXONf`pN^NuNV/.N XO @f"n)H0@#gr"n)H0@#gZ"n)H0@#gBp?N@TO-@"n n!Q n /. /.NPO"n ni N^NuNVB` n-h  .g8HnHn/.NŲ HnHnHnN$ ` n -h . g.HnHn/. NŲ HnHnHnN$ ` .N^NuNV n B/.NXOp/?NATO-@Hnp?NA\Op?/.pN?NAPO=@0.f0.@g n 0 n 1n/.p?NA\O/.NXON^NuNV .g*-n n-h /.NXXO/.NXXO` . g-n n -h /.NXXO` .g-n n-h /.NXXO`N^NuNVHn/.N&PO?..?.0?.?.NPO?/../.*?.(HnHn?.?./././. /.N? (/./.N%rPO-@/.*/.$/. /.HnHn/.N#0g .g/.NXO-@/.NXO-@/./.NhPO-@ nRp\ nB/./.NhPO-@ nRp\ nB/../.*Bg/.$/. /././.?. n(H?/. /.N'*@ nB nB.g6-n n-h/.NXXO`/.BBN& p`/././.N& B@N^NuNV^pA@^0.Ю-@/.NXOHnfHntHn/.N/.NXOp.?HnfN֒\O-@g nBB.m0. fHy"HnbNPO`?. Hy&HnbNZ HnbHnf.H?Hy+/.NZB.lBn`0.`nlT/.0.`Rn`Ю/NPO0fHnb.^HR.^?Hnf.H?Hy3/.NZ`N^NuNVrp@BntNNe/. /.NF>PO0g nB/."/.?././. /.Nq<0fHy=NXO` n?N;TO n1@(/.NXO-@ np -n ne`R n  g-n ne`R n  f-n nBR-|] nd n  g-n`R` n (fPp@R np)-n`R n )f nB/.HnNPO/.Hn$NPO`&B./.HnNPOHy_Hn$NPO n Pg n Pf0.fHyaNXO`p\@/.HnNPO`BHy.HnNPO09.S@=@Bn`HnHnHnHnHnHn Hy1MNl0fHyONXO`-nRn.fN`BLN^NuNV/.pd?/. NB fB@`,/. N XOS@=@0n  f 0n BpN^NuNV/.p?HnNB HnNXON^NuNV Hy/. NPO0fp`B@2Q/.N2XO#,/.N2XO#1F/.N2XO31B/.N2XO31JHn/.N2HPOHn /.N2HPOHn HnHyLHy.NZHy1/.N2HPOHy0x/.N2HPOHy./.N2HPO/.N2XO3./. /.N2HPOHy/. NPO0fB@`p31@/. /.N2HPOHy/. NPO0fp`B@,/. /.N2HPOHy/. NPO0fp`B@,/. /.N2HPOHy/. NPO0fp`B@,N^NuNVBnHn/.N2HPO0gfHyHnNPO0g&HyTNLXO0gHn/.N2PO`*B.Rn/.pd?HnNB gHnNXOS-@ n  f nSB.g@ n #f nB`B.Hn/.NhPO-@.g nRp `vp:?HnN֒\O-@ .f?.Hy~N1\O`F nRBHnN1XO-@ .f?.HyN1\O` nB@(` n/( p ?/.NH 0f?.HyN1\O n"h n0(2` n/( p ?/.N 0f?.HyN1\O n h "n `t n $g?.HyN1\O`TR n/( p?/.N 0f0?.HyN1\O n h "n ` n #fp@ np /. n/( NhPO-@`Hy/.NPO0f n h p`Hy/.NPO0f n h B`?.HyN1\O n"h n0(H`b nH@ @Af n h BP`B nH@ @Bf n h p0` ?.HyN1\O n"h n0(2` @bH0@ PN`N^NuNVHyHy;/.Nٖ -|-|` n-H nd n/Hy?/.Nٖ nB@(` n h ?HyC/.Nٖ ` n h /HyG/.Nٖ ` n h /HyL/.Nٖ `` n/N XO2pdAU@? n/( Nw\O n/( HyR/.Nٖ n/( NXO-@ nRp  ng:/.p#?HyU/.Nٖ/.NXO-@ nRp ` nB(Hy[/.NٖPO` n h gHya`HyfHy]/.Nٖ `j n h 0@A?Hyl/.Nٖ `B @b:H0@ PN`(N^NuNV-|-|` n-H nd nB@(` n"h n0(2` n h "n ` n h "n ` n/( n/( NPO` n"h n0(H`r n"h n0(2`\ @bTH0@ PN`B92QH?HyDN\ON^NuNVHyp/.NߘPO-@fB@`2/.N4XO/.NXO92QH?HyDN\OpN^NuNVHyDN6XO2QHyr/.NߘPO-@fB@`/.N8 XO/.NXOpN^NuNVp/?NATO-@Hnp?NA\Op?/.pN?NAPO/.p?NA\ON^NuNV0.R@?Hnp6?NAPO0.N^NuNV n?p ?NMXO f n (f n?p?NMXO n!@ n (fB@` n"h n!i,pN^NuNVp/pH?NA\O-@ HdB@`6/.pH?NA\O#2 92g 92Ю#2#2,pN^NuNV/92pI?NA\O fp`B@N^NuNV 92ꐹ,N^NuNV-y, y,#, y,ر2e* y,ؑ#,HytN@XOp?NTO .N^NuNV n2e n,eHyN@XO`#,N^NuNV/.NXO-@ nRp  nB np0. n0. nBn0ng,0n #f p@Rn`B.0ng0n !f B.Rn`p@0ng=n0n  gRn`=nRn0.R@nf0n .f=n/.N XO=@?.?. /.?.?./.Nx0g& n.g0.` nH n`?.?./.?.?. /.Ny<0g nB`S nBN^NuNV(/.NhtXOHy/. Hn2N n B nBp/?NATO-@Hnp?NA\OHn,Hn.Hn0?./.?./.N=.0g8/.Hn@NhPO-@(Hy/.(NhPO nBp!?Hn@pN?NAPO=@` pO?NATO=@0.fpHn/.NPO0gHn2HnNPO0f0.$f n&0`?.*?.,?.?.NPO0f0..g n&(fx n& Pg| n&( gp0.@ gd/.NXO-@(Hn/.(NPO/.*?./.N n(B`S@ @bH0@ PN n-Pp$?N@TO n n P!n Hn n/NPO n PBh n PB( n PB n P!n n P1n n P1n n P0.@1@`Hy/.N XO[@HЮ/NPO0f>B n g( n-P n"P n n!n -n` n ` /.NDXO.,g..g/.Hn@NhPO-@(Hy/.(NhPOp?Hn@pN?NAPO=@0.f0.@gpHyHnNPO0gZHyHnNPO0gD n -Pp?N@TO n n P!nHn n /NPO n Pn.pO?NATO=@`p/.p?NA\ON^NuNV n "P n P (o .` . -@ n-P n"P n nB .N^NuNVp$?N@TO n!@"n n  n hB N^NuNV"n Q-h n/NXXO n N^NuNV/ /.NCXO .g6 .g0 n&hHnHnNBPO'@ n"h n!i ` .g n h!n n!n` n h!n n!n /.NC?NAXO=@0.gHy/?.N\OB..f. n /(pA?NA\O=@0.g.HyC?.N\O`?.p? n /(pC?NA ?.p>?NAXO=@0.gHya?.N\OB..gJ n Pg@ n Pg6BgBg n /pC?NA =@0.@?p? n /pC?NA .H&_N^NuNVp\?/.Nخ\O-@ .g nB/.NXO0fB@`t .g np\Bg/.p?NAXO?. p?/.pC?NA pN^NuNVHyNhtXO` n-h& .g8 n/( n?( n/(NNr 0fHyNhtXOB@`HyNhtXOpN^NuNV n ?N;TO2 n h0(A=@ n h?(?.HyNiPOB n -h .g"-n n-h& n!n&-n` n !n .gt n hp0(/ n "h n ( ?)BgПS/NtPOn n h?(?. n/NiPO/./.NLPO0fNT0gB@`N B` np@ Nap`Ng np@ Na n Sh np@/./. NF>PO0fp`NeNf n /( NO"XO0fp`r n -h n ?N;TO2 n h0(A=@ n h?(?.HyNiPO` @g0 @g>` n-h&`pN^NuNVp@NT0gNaB.`H/. NlXO n h?("n n h0(i(?NhXOHyNhtXO/. /.NOPO0fNaB.`BgBgHyNiPONT0gNaB.`Na0fNT0gNaB.`NgN \`n np@ Na`rNf` np@ Na n Sh np@/./. NF>PO0g4Nf n /( NO"XO0f`S@ @bH0@ PN n -h .g-n n-h&/.NXXO` n !n p?p?p?NM\O.HN^NuNV0.n o0.`0. n00. nl0. `0. n1@"n n0(Ql0. n0 n1@N^NuNVBn`Rn nl00.HЮ /0.H @/(/.NSP `N^NuNVRy0.no0.nHЮ -@0.nHЮ-@0.g-n-n` -n-n=n0.nl././.NbPORn n-H n-H`N^NuNV0.nnB`|0.nHЮ -@N0g0.gp`Vp`R n??.0.n?/.0.gp?`Bg yTN -@N0g0.gp`p` .N^NuNV/.Hn/.NS Bn`Rn nmBn`Rn nl0.H @ (f8Bg/.0.H @/(A/ / NT-@ .g .`@Bg0.H @/(0.H @A/ / A/ / NS`jBN^NuNV/N0gp`N-n=n`=n0.nd,?. n0(Ln?NXO=@0.n=@ n?(?.N|XO6 n?( ?.NXOC=@0.lBn n?( n0.hJ?NiXO0. g: n??.?./.p?p?NM-@g .`xN0g@p`j n??.?./.p? yTN -@g .`/ / A/ / NS0.ްno n0.ްh o n1n =n0.ڰno .6-@ n?( n? n/(Bg/.NV-@ .g .`"n n0 n?("n n0(i?NXO n1@"n n1Q "n n1Q0"n n1i>Hn n/(6/.NSP Hn n/(>/.NSP `BN^NuNV=n0.n=@09no09`0.3-n 0.@fh?.p ?NMXO`F <`?.BgBgp/Bg yTN -@N0g <`n .g .`b @bH0@ PN0.@g <`<0.@gHyA/ / NWh `HyA/ / NU0 N^NuNV/ n?p ?NMXO f n (f n?p?NMXO n!@ n*h0-m =@p0--@N<찮l0.`,/.N=XO-@ n?p??-/.Bgp?NM f0-HV@H@B@H@Ю-@0-@g nB@(@ n@T .V-@S nf nd .W@=@0.l=m `l0.H=@0.HH@=@ nf nB@@gp`B@` 0.fB@`p=@0.HnR@=@0-m =@/.N=\XO0.*_N^NuNVH0*n (@0. nHdB`L0N^NuNV"n n0 n?p ?NMXO f n (f& n?p?NMXO n !@ n (fB@`T n!n F yL h0( n1@L n "h n h0( n1@ n "h n h0(@ n1@ nf0/. NZXO n1@ n?Bgp?BBgp?NM`, n "h n1i n?Bgp?BBgp?NM n0( n1@ n1@ .-@ nBP n "h n h0( i n1@ nB .-@"n n0 n h?( n h?( N΀XO n1@"n n0(QH/N=XO n!@ .-@"n n0 n?( n?N|XO n1@ nB .&-@ n0( n1@ n0 n?( n h?( n0@-@"n n0"n n1i nB nfH .-@ n? n?"n n0(Q? n/(p?p?NM g2B@`h n?Bgp?BBgp?NM nA/ / N\XPO n hF"h n0( i n1@J n?( n?(JNiXOpN^NuNV n ?( n B@(?/.HyN\ 0fB@`DHyvNXO#THybHyvNdPO?9Bgp?BBgp?NMpN^NuNV/9THyvNdPO/9 N=\XON^NuNV/9THyvNdPO-|/p2?Hy n/NٖHyn n/NٖPO n/N@XO n 1@/./.Hy n/NٖHy n/NٖPO n/N@XO n 1@/./.Hy n/NٖHy n/NٖPO n/N@XO n 1@Hyp2?Hy n/NٖHy n/NٖPO n/N@XO n 1@Hy&p2?Hy n/Nٖ` n ho/Hy' n/Nٖ Bg n p0(/ n/N /./.Hy+ n/Nٖp?B n/N ` @bH0@4 PN"n Q(g n/NXOB@`pN^NuNV. n Pg n Pfp`hp,?NATO=@p*?NATO=@Hn?<p-??.N2 Hnp?p:??.N@ /.HnRNhPO-@6/. nHhNhPO-@2Hy1/.6NhPO n 0fJ nHhHnNhPO-@.Hy6/..NhPOHnpA?NA\OHnHnRBgpV?NA Hy;/.2NhPOHnHn nHh/. /. nHhNn0fB@`FHnHnHnR/. /./.Nn0f n/(NXOB@` Hy@ n/NٖPO n 0`-|B:`(-|N:`-|`:` @bH0@@ PN?././.HnHn.gHy`Hy/.:HytHn>NZ" n/Hn>NޖPO n/(Hn>NޖPO n/(NXOBg nHhp=?NAPO=@0.nB@`$p??.HnpW?NA ?.p>?NAXOpN^NuNVBg n p0(//.N ?.Hy/.Nٖ Bg n p0(//.N n0`2 nHh n hfHy`Hy/.Nٖ ` @bH0@L PN/.NXON^NuNV n Pg n Pgv?././. /. n/NsHy nHhNߘPO n!@BgB n/(N ?././. /. n/(NsN^NuNV n Pg( n Pg n hnHn?<p-? n ?(N2 Hnp?p:? n ?(N@ n hf*/. /./.HnHnHy /.Nٖ`4/. /. n /(HnHn nHhHy(/.Nٖ n hmZHnHn/. NŲ n ?( n (H?Hn n (/ nHhHy>/.NٖN^NuNVBn/.NXO-@ np ?. .?NΪXO=@-n` .R-@ nd0.HЮ-@ n d 0. HЮ` .-@ nd .` .-@ nb4 nd n  g R` nc n  gS` nf0.HЮ-@ nB/.0.RnH @/NPO np ` nB`Rn0.nl0.H @ PB`N^NuNV nf nB(p`Bn/.N XO=@0np =n0. n0.no=n0.nfB@`@0n  f0nBRn`Sn`0.nm0.Rn0@BpN^NuNV/.NXO-@ ng(S`S n  f nbR nBN^NuNVBn0. n=@0.nl,0ng 0.Rn0@0.Rn2@`0nBN^NuNV2.n0.n AgB@`60. nl*0nH0n HAgB@` Rn Rn`pN^NuNV nf0. HЮ/N XO=@ nf0.HЮ/N XO=@0.n =@0.nnlB@`(?.?. /.0.n??./.NxN^NuNVNz#2N^NuNV y2p1@ y2p1@ y2p1@ y2p1@ y2Bh$ y21n& y21n (0.n S@ y21@*0. nS@ y21@,0.g <\` <^ y2!@.0.gB@`p y21@2 y2Bh4 y2Bh6NzN^Nu NuNuNuNuNuNuNuNuNVp/?NATO-@Hn p?NA\OBg/.pN?NAPO=@/.p?NA\O0.f n $ .$T/NPXO n n gNBg/.p=?NAPO=@ n //.$?.p??NA $f?.p>?NAXOp` n /NXXO?.p>?NAXOB@N^NuNV . Ю-@ nRp  np -nB.09*6S@=@p=@-n n  g* n  f nBR n  g S`R` nRB n ~fRn n#mHypNXOSn`Bn`Rn nl"2.H0.bЁA `Bn0.bA .R Bnp:?/.N֒\O-@`Rnp:?/.N֒\O-@ .g* nRB2.H0.bЁA `0.bA0`* nl"2.H0.bЁA Rn ne0.R@3*6N^NuNVvBy*6/9HyN{POHnvHyfHyNN .vfHyfHnvNPOHnHnHnvNz 0fB@`/./.N{POpN^NuNVBn`Rn0.y*6l(0.bA//.NPO0f0.`pN^NuNV . gp?/. Nt\OHnp ?BgNPO/.N6XO n/(,N}XO=@ nfJHyNXO"n nA,d` nU, n h,g nS,` nR,`Bn`Rn nl20.R@ @ h 2.H0.bЁC `p=@Bn`Rn0.bA0.Pl .R-@`/.NXOR-@"n n,d.2.H0.bЁA//.NPO0f`0. @ h 2.H0.bЁC 0. @hRn`@Rn nl.0. @ h 0. @h`"n nA,f nhx nhz` nhx nhz/.N XOBg/.N \O=@0. @h ngt nf* nU, n h,g nS,` nR,` n/(,NXOR n!@,0. @ h / n/(,NPO`fp?/.Nt\O . g /. N XON^NuNV nB .R n!@,/. n/(,NPON^NuNVHyp ?NN\ON^NuNV-xr29 .2cHyp ?NN\O#2N^NuNV ng30.g~B2 yfnBp ?NA\O-@Bn nl.0.H @V f0.H @V d`Rn`/.p ?NA\O nf p3`3N^NuNV yg4Bp ?NA\O-@09H @VB/.p ?NA\Op3N^NuNV nB nBh np1@ n1@ n1n( n!n n1n n!n n1n0.n n1@ n1n0.n n1@" n1n 0."n n1@$ n1n n1n$& n1n&(N^NuNV$n"n n0. h$j =@$n"n n0. h"j=@"n0. @h "n0. @h ngDBgBgBgBg?<?. n/(NrBgBgBgBg?<?. n/(NrN^NuNV n0. hm?. /.N<\O$n"n n0. h$j =@ n0. Ш -@"n nBA( nB@(Aic"n0. @h `"n0. @h $n"n n0. h"j=@ n(g"n0. @h `"n0. @h ngDBgBgBgBg?<?. n/(NrBgBgBgBg?<?. n/(NrN^NuNV"n0.  @0( @f80.g n0( ` n0(=@0.g n0($` n0("=@0. nH=@"n n0.i=@"n0.$@ "n0. @ BA(0.gp`0. z|(MGl0B@H@B@H@ @#gBA0 A@:RFR`0f np0` n0 L0N^NuNV/ *n g/ NXO*@Hnp?/ Nf *@/ NXO*@Hnp?/ Nf *@/ N4XO*@B@H@B@H@ @#gHnp?/ Nf *@`Bn/ N4XO*@U/ NXO*@f0.m @n0.m @;n0.m @;n .ag .Afd nm n n n fn 0.HH@ nPP0.H@ nPP0.@@ nPPp`8 .pg .Pf nm n n n ln `.gB@*_N^NuNV/ *nfB@`./ NXO*@0. @@H @Hhp?/ Nf *@/ NXO*@0. @@H @Hhp?/ Nf *@/ NXO*@0. @H @Hhp?/ Nf *@/ NXO*@fP nmF n n< nm2 nn( nPm ncnnP0.@ nPP0.H@ nPP0.HH@ nPPp*_N^NuNVp ?/.N֒\O-@ fB@`N nB/.?. nHhNf @g nHh/.NPO@ np .HN^NuNV=n=n =n =n .cp`B@N^NuNV-|HnHnHnHnNd0.@ n1@0.@ n1@HnHnHnHn/.Nf0.@ nh"n I1i,"n I1i.#/.N XOR@3Bg/.Nt\OBgBgBgBg?<Bg/.Nr/n /n /nXON0 =@p?/.Nt\O0.N^NuNVH8p/p ?NA\O f Bp ?NA\O`B-@ x=h g/.p ?NA\O`0| nd/././. /.NN`NG +f +g BppK2I2(( (p[?NTO n00L8N^NuNV/.Hn/. /.N\0.HHN^NuNV/.Hn~N/|XOHn~N€/|XOHn~NPOB./. HnHn~N 0gbHn~N XO=@ N (\~gSn`0.R@0@B0.m0@"N~Sn`Hy/.N€POp`B@N^NuNV|/.Hn~N/|XOHn~NPOHn~N XO=@| N| (\~gSn|` N|B(~?<Hn~/.N 0n|p\0<n|S@?/. 0.|R@HЮ/N p ? N|Hh nHhN N^NuNVHy/.N/nXOHn nHh/.N\0.gj/.N XO=@0.m0@ \gSn`=n0.m0@ 2@Sn` nHh0.R@HЮ /NPOp`B@N^NuNV0.n o0`0. N^NuNV0.n l0`0. N^NuNVp[@p0@p]@p[@B.p?p?NA.HnN/|XOHnNPOHnp?NB\ON^NuNVp[@p1@p]@p[@B.p?p?NA.HnN/|XOHnNPOHnp?NB\ON^NuNV/ *nB@- =@ @o0<n=@`Bn nlp=@0.Hm?0.Hm?0-n?0-n?BgBg0-@m?0-@m??. Nа*_N^NuNVBg/.Nt\OBgBgBgBg?<Bg/.NrN^NuNV=n 0. ngp0gl0.  @0.hgL=n Bn ?./. nN\O0g0. @=h 0. f0. @=P `=n `N^NuNV/.0.  @?(0.  @?(/.N< N^NuNV0.  @0( @f 0.  @ h gp`B@@@N^NuNV0.  @0( @@g0.  @h N^NuNV0.g00.  @h 0. @hHy`.0.  @h 0. @hHyB?./.N 0.g n \gR@0@p\0T@0@B.N^NuNV//.N XOS@> n \f nB.N^NuNV nH@ n /.N XO @m& n (:f n Am Pn nHh` n B/.HnNPOHnN XO=@ no N (\gSn` nfHy/.NPOHn`V .\g* np. np\@ NB(Hn nHh` NB(Hn/.NPO NHh/.N/nXONXON^NuNVVHnnHn|Hn/.N n f4p?NATOA@.fBg` .H@@?HnpG?NA`:Hy/. NPOHnHnHn/. NHnHnNPOHnNXO.fn ..|f0Hn|HnVNPOHnVHnHn|Nh/@XONhPO n np:@HnnHn| nHhNh/@XONhPOBnjBnl0nlgX0nl \f*0.lR@0@ .f0.lT@0@ \fTnl`0.jRnj0@0.lRnl2@`0njBBnl nll0nlgRnl`p=@j0nlg0nl \fV0.lR@0@ .fD0.lT@0@ .f20.lV@0@ \f Vnl njoSnj0nj \g`0.jRnj0@0.lRnl2@`n0njB/.NXON^NuNV ng /NXOHy/.N/n .N/nXONXO-@ @B(N^NuNVBg nHhpG?NAPOp?NATOA n np:@/.NXON^NuNVH *n/ N XO>0G \g0oSG`0gR@0@BL N^NuNVp/?NATO-@Hnp?NA\Op!?/.pN?NAPO=@/.p?NA\O0.gB@`* n1n n00.@ n 0 n pN^NuNVp?/.p=?NAPO=@0fB@`>p??.HnpW?NA?nPOp>?NAXO f?. p?/.pC?NA pN^NuNVp?NATO n 0Bg/.pG?NAPO ngP (:fHH@@A=@ @nHp ?NMTO"p4.hHg0?p?NAXOBg/.pG?NAPOT/.p;?NA\O fp`B@N^NuNVzHn~Hn|/.N, @z.~f Hn~NXOHn~p;?NA?n|XOp?NAXO.zHN^NuNVBn0ngZ0n \fF0nB/.NXO0gB@`\/.NľXO0f /.p9?NA\O0np\Rn`/.NXO0f/.NľXO0f /.p9?NA\OpN^NuNVp.?/.Nخ\O-@ f nB/./. NPO`2 nB/./. NPO nHh/.NPO np.N^NuNVp\?/.Nخ\O-@ f$/./. N/| .NPO` nHh/. NPO nB(N^NuNV/.NXO-@-@ n \gf nRp./. /.NPO` n .f /. Hh`S`N^NuNV nR0. @0. H nN^NuNV/ *ngH0@#g R` *_N^NuNV/ *ngH0@#g H@ R` *_N^NuNVH0*n(n g`B L0N^NuNVH0*n(n gR`g`B L0N^NuNVH0*n/ N XOR@?N@TO(@ g / / NPO L0N^NuNV/.N XOHЮN^NuNV/ p/?NATO*@Hnp?NA?n .pN?NAPO-@fHn/.NPO` nB/ p?NA\O0.*_N^NuNVHyHnNPO0.H@a@/. p?HnN N^NuNVlH HyHnNPO0..KHnxHnzNˠPO nze nzf nxf n g.// NPOHn|r7?HnN 0f0<`/ ?.Nn\Og:BgHnpm?p>?NAXO,fHnpA?NA\O,g` n gD// NPOBgHnpmf?p>?NAXO,fXp?p?HnpC?NA B@`@ n g/`Hy/ NPOp?Hnpm ?p>?NAXO,0L N^NuNVp/?NATO-@Hnp?NA\Op'?/.pN?NAPO fp`B@@/.p?NA\O.g0.@fp`B@@.HN^NuNV/.NHXO-@g-@ ng-H-n ng ,g"H nRR` nfRp. n (\gRp\-n ng"H nRR` nB/. nNXOf ngR-n`\ nBN^NuNVHy/./. /.NʂN^NuNVpN^NuNVHyr/./. /.NʂN^NuNVBp ?NA\O-@"x n0"x n 0/.p ?NA\ON^NuNVH0-n*n (ngH *fR-L` ?g HHAfRR` ng*" R/0H *@(H` *fR`fp`B@L0N^NuNVHnHn/.NŲ HnHn/. NŲ .f p*@B.HnHnNPO0gHnHnNPO0gp`B@N^NuNVHnHn/. NŲ B.Bn0ng2=n0n  fRn`0ng 0n !f(p@Rn0n  g0nf`B.=n0n  g0ngRn`0nP0nB0.HЮ/HnNPO0nHnHnHnNŲ HnHnNPO0gHnHnNPO0gp`B@@.g.fp`B@.`..`.HN^NuNV/ KB-B@@@pm?NTO*_N^NuNV2. HA0.AN^NuNV0. @n2. HA0.AN^NuNV0. nS@H N^NuNV0. HnH N^NuNV32z0.@ H-@p=@ nl$0.HC2z nRB@2Rn`/9*PN~XO092N^NuNV#2z*8#2V*<#2*@#2*D#2*H#2*L#*8*Pp ?NTO322092N^NuNVp?NTOpN^NuNV323 23 2p?NTO n02 n02 n02 n02092N^NuNV#2p?NTON^NuNV32# 2p4?NTON^NuNV#2p6?NTO n 02 n02 n02 n02092N^NuNV323 23 2323232323232p3?NTON^NuNV#23 2p2?NTON^NuNV#2# 2pZ?NTO n02092N^NuNVpM?NTO n02 n 02 n02 n02092N^NuNV32# 2pN?NTON^NuNV#23 2p?NTON^NuNV#23 232p?NTON^NuNV#23 232p ?NTON^NuNV#23 232p!?NTON^NuNV#23 23232323232p*?NTON^NuNV#23 2p,?NTO n02 n02092N^NuNVpo?NTON^NuNV323 2pp?NTO n 2092N^NuNV#2pn?NTON^NuNV32pf?NTON^NuNV323 23 23232pd?NTON^NuNV32pg?NTON^NuNV323 2ph?NTO n 02 n02 n02 n02092N^NuNV323 23 23232pe?NTON^NuNV32pk?NTON^Nu"/0<NBNuNVpe32By2By232NԴN^Nu#2*T"<*T <sNBNuNV#*X#*` .Z#*dpd32By2p 32 n 32NԴ n 02#**X#+*`#-*d#,*\N^Nu0/lD@NuNVH *nz~H< @ g F fR` F-fz` F+fRH< @0m F9n2A00 A>`JEf0D@>0L N^NuNVH *nBEB@H.H< @ g F fR` F-fz` F+fRH< @0m$ F9n6Hp //NPO0.`JEf D. L N^NuNVH8&y g.*[ g((nHHAfJgR`Jf -=f `BL8N^Nu o0/BAgJfBNu NuNVH8..P bd.9/N*XO*@ Mg`Jf&M ##`& yƱf QP&m`(yQ L&h)M Q@* Ѝ#(@Q LB)KL8N^NuNVH0~ .\S@,dB`ƙ*y gr .gH g @є .*L(Mc2  d @*`* Ѝ# y X`dJg @Ѝ*@`*mf g#Ry09 @e Sy`X/N֬XO/.NPXO*@Sy L0N^NuNVp0./NPXON^NuNVH .Y*@Jf4~0GJg 0RG0@H?p?p?NM\O`NL N^Nu o"H0/Jf gfBNu Nu"o o JfSfNu"o ofJfHHNu"o o fNu o"Jf S@NuE Z "Z2gSAWSAmtQNuNVHnHy8NٮPON^NuNVHn?</.Nf Hn HnNٮPOHnBg nN\ON^NuNVHn /.NٮPON^NuNVH0-n n(PXH> @%g0gP/.? n hN\O`p =@p=@p=@H> G-fp=@H>`Bn G0f p0=@H> G*f& nT=Plp=@0.D@=@H>`*Bn G0m G9n0. G@0=@H>` G.fJH> G*f nT=PH>`*Bn G0m G9n0. G@0=@H>` Glf&H> Gdg Gog Gug Gxf0@> `-@*@p=@0 |82<`XHXW PN`4 nT=P0.l0.D@=@p-p ??./ N.PO*@`p ? nT?`p`p` n-PX .l .D-@p-p ?/./ Nݚ `p ? n// Nݚ *@X`p`p`/ ?./.?N *@P`fBn n-Pf-|X .-@*@g0.m noS`(Bn nT0` n//.NٮPO`n ./0.Hї =@lBn0.fL0.g0 n0f( n -f/. nRH? n hN\O0.Sn0g /.?.` nd /. nRH? n hN\O`0.g0.Sn0g/.?. n hN\O`L0N^NuNVH >. *NB%0<g"0H@H@B@H@ @>`?Bg _g nR` .L N^NuNVH0*n>.IB$p0//. NtPO-@g$p0//. NPOA-n ` n g` L0N^NuNVpL?Hyp?NPOp?NTON^NuNVN N^NuNVH >. *nSGo"/. n hNXO< @g 0 @ fB Ff fB` .L N^NuNVH0*n(n g/ H? lN\OR`L0N^NuNV/ *n-g / mNXO/ NXO @fp`D?./. -H?NPPO-@ g -g0.@H@B@H@Э*+@B@*_N^NuNV/ *np?B-H?NPPO-@ fp`" -g HѮ-gS .*_N^NuNV/ Kld. g U(fp?//. /.N*`X`B*_N^NuNVH *n-fp`XO>-H?NTO -g-f /-NXXOB-0L N^NuNVH *nBm -ff >o?/--H?NPOGf$0m mAf -*+@`+UB@` 09H fBy`-pL N^NuNVH *n>.|BnBnp=@ n R pr@H @rf|pw@ n g,H @bf"BnR n gH @bf$Bn0l0.f?/.Nx\O>0l@0.f0.g4?</.N(\O>m Fg?NTO?/.Nx\O>0m0.gp?B?NPPO-M .fp?N@TO*@ f ?NTO`|p@0.g- p+@*+@Bm +|+|*G `DH @wfRn`H @af&Rn`H @+g.HHAf|`BL N^NuNV/ *n .*+@+|B-0. D@;@ m l;| +|`+| *_N^NuNV/ *n Sm lBm p` UR0.*_N^NuNV/ *n UR0.*_N^NuNV/ *nRm oBm p` URB@*_N^NuNV/ *n -f,-f?<N@TO+@f+|~+|`j-f2-H?N0TO0g8f+|+|& -`&+|+|-H?NTOHЭ*+@Bm *_N^NuNV/p?B?.NPPO. fB@`0H@.N^NuNV/ *n/ N XO/ mNXO*_N^NuNVH >.*n / N XO/ ? mN\OL N^NuNV/ KY Mle g/NXO`*_N^NuNVNX?.NTON^NuNVH *nRm o/ N>XO0f &JfHy8N>XO -?/--H?NPOD@;@ @fZ09H fBy`-Bm `B0- Rm m+H URB@>-g G gP Gg 0`0- f-pL N^NuNV/ *n &JfHy8N>XOBm p?Hn-H?NPO @g,J@gH .f-f8 . f-fB@.`(09H fBy`-`-p*_N^NuNVH >.*n G f -g/ p ?N\O @fp`0Sm l"/ NXO0f -S@;@ UR0L N^NuNVH >.*n G G f-g/ p ?N\O @gZBm -fN/ NXO0f@p?Hn-H?NPO @f0` 09H fBy`-pL N^NuNVH >.*n G f -g/ p ?N&\O @fp`XO0f UR0 @ f/ N>XO0f0L N^NuNV/ *n-g / mNXO mb / N>XO`2p? /-H?NPPO fp` +UBm B@*_N^NuNVH *nBp ?NA\O.,/p ?NA\O L N^NuNVH *nBp ?NA\O.</p ?NA\O0L N^NuNVH *n.. Bp ?NA\O,*/p ?NA\O L N^NuNVH *n>. Bp ?NA\O,:/p ?NA\O0L N^NuNV?.pL?NAXON^NuNV nn?.NTO @Cg(p???.NPXO?.p>?NAXO/NXO`B@N^NuNV/Bg/.pl0H/NXO`"?.NTO=@m?.?NPXO0.N^NuNV/?.?. rF?NA\O>0f(?.NTO=@m?.?. NPXO0. `0H/NXO.N^NuNV?.NTO @Cfp`B@N^NuNV?.?./. pB?NA /NXON^NuNV/?. /.p=?NAPO.m:0H.mpF?0?NPXO` m n0?NTOH./NXO.N^NuNVH A#/9NRXO0gBp 3p`?.NTO @CfzB@9*i>B@9*hH*h*@SnmSGl^pQ*hB9*iHy*hp ?NA\O>mp ?p?p?NM\Op*hB@9*i>B@9*hH*h*@0Gp H< Ff~` n R RE F ft *h*h*iB0`0/. 0.H/?.p??NA >B0H/NXOL N^NuNVH.. l <`0 f 9`$R @./pH?NA\O,g Ї# LN^NuNV0.H/N*XON^NuNV/A#/9NRXO0gBp 3p`,/. 0.H/?.p@?NA .B/NXO.N^NuNVH >.0V@ @bH0@ PN`*pP`&pA`"pC`0m*ySGmfp`gHL N^NuNVH >.0m*ySGmfp` g0. L N^NuNVH >.0V@ @bHH0@ PN*yHGg fp`&R` ?NTO`~C`~A`~P`pL N^NuNV .l .D3p` .N^Nu#*NA y*N#*NM y*N#*NN y*N"o`C"/jD$jDA`|J/jDJk`JjDNu$/` o$"/A`NNu"o`C$jD"/jDA`, gJ/jDNu$/` o$"/A` NupJfpN∲cd⒒d҂dFN o"`"/ jD$/jDD$@A`" jDNu o"`"/ _$0"@0HAHBЁH@B@ЉN O$X"XHB@Nu o0/L.Nu&&&&&&&&.Np&&&\&&DJJ``   d""t---..f///56*6p6778z88899:T:h:z:::@(@(@@(GfGG:FIhFIRzRRZdZZ nnnopfpfrrrtft t &Z'()JKLMN0OJPQRS6WJXpY^ DۂOU۸Xc<d2efgozrNsujx~D0123456789ABCDEF"&&0ABPco}~Full BackupDaily IncrementalCleanup IncrementalFull CopyIncremental CopyVerify WritesBackup New FoldersArchive BitDefaults FileBackup SetHistory FileVAULT.RSC*.VDFVAULT.VDF[1][Error %d|%s][ Abort ][1][%s][ Retry | %s ][1][%s][ No | Yes ][0][%s][ OK ]Cannot find the|Resource 'VAULT.RSC'!Defaults file to SaveCouldn't write defaultsDefaults file to Load[0][Error copying file.|If you use a new|disk, it must|be the same size.][ Give Up | Retry | New Disk ][0][Error writing the disk.][ Give Up | Retry | New Disk ]FULL BACKUPDAILY INCREMENTALCLEANUP INCREMENTALFULL COPYINCREMENTAL COPYMisc Options%ld%d%dFormatting%06lxBad serial numberOutput Parameters%dMissing output parametersOutput folder name must|not have drive specifier.Insert DiskIncremental CopyBad date entered!Bad time entered!Wrong DiskCan't ReadTerms3.00June 14, 1991    %s.%c%02d*** Failure %d in|creating header for|%sdeleting spurious file headerOpen failure while setting date & time!Can't get unique name|for split file%c:%sCan't create directory!AbortFUL%03d%c%s.%s%c%s%c.%sCan't open log|file. Aborting!..A copy can only|copy one starting|folder at a time!You quit in the middle.|The backup disk just written|is not valid.*&&^%&The file selection|mask is missing!You must use a|backup history!You must fully specify|the history pathname.Can't read old log file!Can't read old log file!u0Couldn't load the|given .VDF fileVAULT.VDF*.VDFVAULT.VDFThe Vault will not work in low-res.|Switch to medium resolution.Trouble de-allocating memoryFatal error -- memory wouldn't allocateFatal error -- GEM wouldn't initalize Press to continue .,*5.;,ES0xW1@^n.p 1B1F1J1LP1D1M,1,, ,2Q***Vault .VDF File***VERIFYFLOPPY AUSE BOTH FLOPPIESENTIRE NEW FOLDERSUSE ARCHIVE BIT IN INCREMENTALSbackup disk numberbackup new foldersbackup setEBACKdual modefile patterns*.*floppyfolder patterns.format sectorsformat serialformat sidesformat skewedformat trackshistory name_BACKUPmaximum tracksoutput folderofoldring intervalsplit thresholduse archive bitwrite verify%s|in line %d of the|defaults file%s (%s)Not a Vault 3.00 VDF-|file. Read anyway?Missing ':'Bad variable nameError converting intError converting longMissing '$' on hex longError converting hex longTRUEFALSEError converting BooleanError converting drive letter%s %s:%d %ld $%lx %s%c %s %s TRUEFALSE%c rw?(smalloc) not enough memory ?(smfree) place out of range .HST*.*AUTO\*.*...$%lx$%s.$%02dDo you really|want to quit|the backup?Do you really|want to clear|the disk?Do you really|want to quit|the backup?%c:\%sYou quit while formatting!|The disk in the drive|is not fully formatted|and must be reformatted.There was an error|during formattingDo you really|want to quit|the backup?I can't read the disk!|Try inserting a new oneAbortreading input filewriting output fileCan't write whole fileInput has too few bytesopening input fileopening input file%-12s %02d %s LASTMOREwriting header|on split output fileCan't write whole header|on split fileSeek error in split fileclosing output filedeleting spurious output fileclosing input file*** Failure in re-|creating file headerRecreating File Headers...34Your name hereYour streetYour city, state, zipYour phone #Your E-mail addressRelease dateFinished backing upBackup aborted%c:\%sLast Backup Date-Time: Full Backup Date-Time: Last Incremental Number: Last Incremental Disk: .CTLrwaVault history file written by version: %-*s; %s %s %s %s %-*s; %-*s; %s;%s %s.HST.HBK.CTL full backupdaily incrementalcleanup incremental Backup history for %s%s starting %s at %s Files matching %s and folders matching %s backed up in incremental folder %d with archive%03d;%s%s;a** SPLIT** %s %s%8ld %s %s %-12s %s %s%8ld %s%s %-12s %8ld %s.%c%02d DDVAULT.HLPToo many help screens!VAULTDIRSorry, but the help you|requested is unavailable.  d Sorry, you can't|add any moreDo you really|want to clear|the window?*.HST.(.) %s%sSelect Folder PatternNot a valid|folder pattern%s%s.Input ParametersHSTSelect Starting Folder..Select Starting Folder..Select Starting FolderSelect Backup History~Terms:Distribution:Donations:Source Code:The Key Licensing Agreement for The Vault You may redistribute The Vault, but may not sell it for profit or change it in any way, or even aggregate it with a product being sold for profit, without prior written permission of Robert Fischer, hereby referred to as the Author. All rights to The Vault are reserved, unless explicitely given to you in writing by The Author. The Vault is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. The Author makes no warranty with respect to The Vault, and disclaims any implied or explicit warranties. In using The Vault, you assume all risks and damages, if any, arising as a result of its use, even if caused by negligence or other fault on the part of the Author. THE AUTHOR WILL NOT BE LIABLE FOR ANY DAMAGES THAT RESULT FROM USING THE VAULT. ~Modified Terms:NO WARRANTY:Donations:Source Code:The Key Licensing Agreement for this Modified Version of The Vault This is either a modified or Beta-test version of The Vault and therefore is not officially supported by the Author or widely distributed. You may not redistribute, sell or modify this version of The Vault in any way, without prior written permission of Robert Fischer, hereby referred to as the Author. All rights to all versions of The Vault are reserved by the Author, unless given to you explicitly in writing. If you would like an official version of The Vault which you may redistribute freely, please contact the Author. ~NO WARRANTY THE VAULT COMES WITH NO WARRANTY The Vault is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. Neither the Author nor the co-Author, who modified The Vault to make this modified version, makes any warranty with respect to The Vault, and the two disclaim any implied or explicit warranties. In using The Vault, you assume all risks and damages, if any, arising as a result of its use, even if caused by negligence or other fault on the part of either author. NEITHER AUTHOR WILL NOT BE LIABLE FOR ANY DAMAGES THAT RESULT FROM USING THE VAULT. ~Distribution Distributing The Vault In distributing The Vault, you must also distribute the manual, along with all appendicies and updates, in its original TeX form. In addition, you may distribute forms of the manual modified for layout purposes -- an ASCII file, or the manual converted to another word processor format, for example. Although you may not sell The Vault for profit, you are allowed to distribute The Vault on a disk of Public Domain/Freeware which you charge a nominal fee for. The fee you charge may cover only the administrative costs of collecting freeware, including The Vault, and copying the disk. If you wish to charge anything more than $5 (or its equivalent) for a disk including The Vault, you must contact the author. ~Donations Supporting The Vault Although The Vault costs no money to use, it cost me money and countless hours to write, and money to give people support (international phone calls and paper-mail are expensive). Any donations to help pay for these costs, even small ones of a couple of dollars, would be appreciated. Unfortunately, I can promise very little in return other than the current version of The Vault, because I don't use my Atari anymore. But I try to be helpful when people have problems with The Vault and can still fix bugs. Thank you, --- Bob Fischer ~Source Code Getting Source Code to The Vault Although The Vault does not come with source code, you may get source code simply by asking me (the author), under certain conditions, some of which follow: * You may not distribute the source to anyone else. Anyone who wants it must ask me directly, and I will supply it. * You may modify the source code as much as you like, as long as you do not distribute the modified version of the source (but you may distribute the modified object code under certain conditions). If you are interested in the source code, please ask for it by E-mail, or send a diskette with suitable return postage and envelope to the me (if overseas, just send money to cover a disk and return postage). ~The Key The Key The Key restores files written by The Vault. Although most files can be restored with any file copy program, ones which are too large to fit on the disk require The Key to restore properly. The Vault should always be distributed with The Key. If you do not have a copy of The Key, please ask the author for it. & *.*][ OK ]][ Abort ].\x.\a:\*.*a:\nolabel@@@@@@@@@PPPPP@@@@@@@@@@@@@@@@@@    @Bad pointer in free. {NULL} You must compile with the -f option to include printf() floating point! *!*!*#8RCCAP???????????????????????? 0pJ.(L"20      &      0  6   "   0 &0$       0"((n  0 D ZR. V  x"( L6P  0.$  :0"  0 $ ( Fz:*`,$"^"" 4&: $ .BD$2p&.,&.$(J  $(@("f* $$6(&T4.   2( ,hj "$ ,J&    ,8".0&       , .6<              F**.* @  f* ( "    ( "   xD           $L0J @,F$` N . $B$\@L d<FB&**     .*  (.@**."    * ,( , : t8N2 ,|"   ,> *    .vN>0bJB$.:$R008&HfBF* <(& lj&8\ &jF <8* $  ""X N,                     (        (6  &  (*$", "  "     .   X  ( (,  $ f & < "L* , ": "d H  ~\Hn4.("   * |$".2D\b.0  B$  \"( "$*Z0(&LJz,\`82,F""r"ژ("r2 F\x0 H@~"  &  ^f`P$    NH<* 8f86 *( "*(. *6 6  * "&  :4,6 6  < >((   6 6   &F    4Z   .       $P   PL4$Ʀ,bFxhx"4$> 4"$  "2BT &&$*RB6 r ."H  64  Zx>ƴ0$&*@@B 0 R F  $ * H N\.*  4`. L( " 0RP"& L                            0t  @J$  $&vFP( LD" "RF$4F0",p$  .6*"  "$j:BX<$< 8*046  & 6& ,$ &(2> 0:d               :8RH_J@jp6B@bE` SBkQ/L_NuString overflow YNu#K _ gYeYd 9KNHyK`HyKN0t`t _"_0gR@| e.GK$S" ghjebb"*f&"`v&A%S"`l&J`ذ|gb*|f8"9Kg0$A#K`""9Kg$A#K`"9Kg $A#K"`"EY&R"$b HyKN0Jgr"QHd2S@k"QN _"_0" gYeYd gR@ @mz @ e@EK"fB3@B$`\&A2+@ef "'I`F"3@B$`8$K`ư|f"K#K` |f"K#K` "K#KNHeap overruns stackPointer NILPointer not in heapByY(_ _/ Ct$t$($E$LE` Vault File Options Help About The Vault-------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Full Backup Daily Incremental Cleanup Incremental----------------------- Full Copy Incremental Copy----------------------- Quit Verify Writes Backup New Folders Use Archive Bit---------------------- Set Miscellaneous---------------------- Load Defaults Save Defaults Full Backup Daily Incremental Cleanup Incremental Full Copy Incremental Copy----------------------- Verify Writes Backup New Folders Archive Bit Defaults Files----------------------- Backup Set Name History FileDAILY INCREMENTAL xxxxxxxxxxxxxxxxxxxxxxSelect output paramaters:Backup Set Name:backup__________FFFFFFFFFirst Disk in Set:01__99ofoldxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPOutput folder:CancelOKHelp Earliest date for Incremental Copy DateTime (HH:MM:SS)000000__-__-__999999000000__:__:__999999(MM-DD-YY)QuitOKHelpPlease insert floppy diskSTRINGGG.XXXinto selected drive and click on OK.Drive A:Drive B:FormatClear diskAppendDual DriveSave DefaultsQuitOKHelpWrong disk inserted in drive A!(Drive contains:MMMMMMMMMMMM____________FFFFFFFFFFFFDisk expected:MMMMMMMM0000____________FFFFFFFF9999)Relabel & proceedQuitProceed (no relabel)Insert diskHelpAbout to format disk A:How would you like to format it?10Sectors:9Help81Tracks:8082832Sides:1CancelSkewedFormat:RegularRandom Serial NumberSerial Number: $____________XXXXXXFormatFinished backing up!OKBackup StatusBackup Type:CSTRINGgggggggggggggggggggggggggggggggggggggggggggggSTRINGgggggggggggggggggggggggggggggggggggggggggggggSTRINGgggggggggggggggggggggggggggggggggggggggggggggSTRINGgggggggggggggggggggggggggggggggggggggggggggggInput folder:Folder filter:Wildcard filter:Output Folder:Scanning Folder:STRINGgggggggggggggggggggggggggggggggggggggggggggggCopying File:STRINGgggggggggggggggggggggggggggggggggggggggggggggCurrent disk:A:\XXXXXXXX.XXX0% ' ' ' ' 50% ' ' ' ' 100%0% ' ' ' ' 50% ' ' ' ' 100%0% ' ' ' ' 50% ' ' ' ' 100%Packing:Reading:Writing:To abort, Hold down Ctrl-Shift-Alt-Undo until The Vault stops.When you abort, the disk written is not valid.Miscellaneous OptionsMaximum number of tracksto write at once:0000____9999Split threshold:00000000________99999999Ring interval:0000____9999HelpCancelOKI can't read the disk!Try formatting itor inserting a disk.QuitFormatRetryInsert diskHelpThe Vault 1987, 1991Robert Fischer80 Killdeer RoadHamden, CT 06517(203) 288-9599versionversionRelease DateWARRANTY! The Vault costs no money,and you are welcome to redistributeClick on "Terms" for details.The Vault comes with ABSOLUTELY NOit under certain conditions.LynxwareOKTermsThe Vault 1987, 1991Robert Fischer80 Killdeer RoadHamden, CT 06517(203) 288-9599versionversionfischer-robert@cs.yale.eduThis version modified by:John Doe1 Smith laneNowhersville, XX 01234(000) 000-0000-----------------------doe@dorthy.cmu.edu-----------------------July 17, 1991LynxwareTermsOKThe Vault comes with ABSOLUTELY NO WARRANTY! The Vault costsno money, but you may not distribute this version, because it isa modified version. To get a version which you may distribute,contact the author (Robert Fischer).Click on "Terms" for further details.Thank You to the following people who contributed to The Vault:Michael Fischer: endless Beta testing, design aiding, debuggingOKTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTTEXTSee also:TEXTTEXTTEXTTEXTTEXTPreviousOKFormatting disk:xxxTo abort, Hold down Ctrl-Shift-Alt-Undo until The Vault stops.When you abort, the disk is not valid, and must be reformatted.0% ' ' ' ' 50% ' ' ' ' 100%DAILY INCREMENTAL xxxxxxxxxxxxxxxxxxxxxxSelect files to back up:Starting FoldersFolder Selection MasksFl OnlyTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttTEXTttttttttttttttttttttttttExcludeChangeAddInsertDeleteClear0123456789012345678901234567890123456789012345678901234567890123________________________________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPBackup History:Select Backup HistoryHelpCancelFile selection:*.* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzzzzxxxxxxxxxxx________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX*.* xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxzzzzzzzzxxxxxxxxxxx________________________________________________________________XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXOK@` @ @ @8p@! Cq8g8 p@` @ @ @8p@! Cq8g8 p(,FGYbk )))NO%elu | {     4  6 74 8 l m4 ? /   > C H ^ g p  $ - .  e n o     !"'()./0567<=>CDEJKLQRSXYZ_`afghmnotuv{|} ?WX@Y4$%&CDEbcd;<=Z[\yz{345RSTqrAA!AAbAAPP $ , 3  =#P  D V k   !9EXp#"~ !"$0 %&%'9(O)[*n+,-. / 0 #   -($H@t\ * ) x(    ! %$  +!( $PU     % )& $        " -; @ %C .&Hf h!   j           %/-0 QT]  _#   d g o r uxz #     '# )H#" <    4 3 N3 33  '  483l  3z3  &% 52q 2q#!"2"q $X4%t44' n ( w ) *+@+>) . ' !  , M y  8       '  !            % 1-         - > Q   `  h  p  (  }$ #  "    T / % 21H    8  B  O ^ o                     , ?   W :  p p8 v8  E y= @ ? 8$ ]%B??' NJJJJJJ4J PJ l J  J  J  J JJJ0JLJhJK    ###',?   D 2q @H>d? 4^N(-@ @- @" *) @ @  @( @D @` @|@@@@ &% @@@@@@@@@@ @@@ @!@"@#@$@%@@ '@)((@'@ N+M- ,@-@$.@@/@\0@x1@2@3@4@5@ J6I 7@8@9@:@;@<@=@>@?@@@ A@B@C@D@E@F@G@H@I@5@ K@MLL@K*@ O@s" P{" Q" R" S" T" XUWBV @W]TmYEZE^[]A\]<@ZX@'%Et$ %t&|(* - 1,2L3$548L8;L<<(S)e*q+,-. / 0 1 2 34/5A# QE`(6 &B06  0^z   2  @ . ..  VAULT TEX G VAULT300TEX H Q\documentstyle[11pt,titlepage]{article} \newcommand{\vault}{{\em The Vault}} \newcommand{\key}{{\em The Key}} \title{The Vault and The Key} \author{Robert Fischer} \date{February 17, 1990} \begin{document} \pagenumbering{roman} \maketitle \vfill {\sf User's Guide for \vault\ version 2.01 and \key\ version 1.1. Manual version 1.01. This manual and the programs it describes are copyright \copyright 1987--1990 by Robert P. Fischer. Permission is granted to reproduce this document in any form. It may not be changed except to alter its layout for printing. No copy of this document, in machine-readable or other format, may be sold for profit, but it may copied freely for non-commercial purposes. The programs that this manual describes are also copyright \copyright 1987--1990. They may be given away under certain conditions. Run the programs for more details. This manual and the programs it describes are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. In particular, no warranty is made about the accuracy of this manual. You assume all risks of using these products. The author is not responsible for damages arising from use of this manual or the programs it describes, whether caused by negligence or other fault on the part of the author, or by any other cause. } \vfill \newpage \tableofcontents \newpage \section{Introduction} \pagenumbering{arabic} \vault, and \key\ are two programs which help you get more out of your hard and floppy disks. \vault\ backs up your hard disk in almost no time at all, and \key\ restores your hard disk in case of a crash. \section{\vault : A Hard Disk Backup Program} \subsection{Introduction} \vault\ has one purpose -- to protect your valuable programs and data on a hard disk from loss. A hard disk must be backed up frequently because its files can be lost at any time without warning. \vault\ automates and speeds up the backup process, reducing the chance for human error and making it easy for you to do on a regular basis. \vault\ is special because of its advanced user interface and integrated floppy disk caching scheme which speeds up the writing of backup disks. It is totally GEM-based and contains a comprehensive help system. It is easy to use and guides you through correct operation of the program. It creates ordinary TOS disks, complete with file directories, so that individual files can be examined or restored at will. It has an incremental mode that automatically backs up only those files that have changed since the last backup. If run regularly, incremental backups are generally very fast and offer the best possible protection for your data. Some other special qualities of \vault\ are: \begin{itemize} \item It doesn't require large amounts of memory and will run quite satisfactorily on a 512K machine, even with desk accessories and/or a moderate sized ramdisk in place. \item \vault\ can back up files that are too large to fit on a single floppy. Such files are split into as many pieces as necessary and each piece written to a floppy. The pieces themselves are ordinary files and contain a header line that allows the restore program to insure that all pieces are reassembled in the proper order. \item \vault\ uses a clever disk packing algorithm which minimizes the need to split files and can usually fill a disk to within a few thousand bytes. Often, it fills a disk completely without splitting a single file! \item \vault\ does a significant amount of input error checking, keeping you from accidently inserting the wrong disk or from wiping out the data you are trying to protect. \item \vault\ maintains a history file on the hard disk that lets you quickly locate which disk a file is backed up on and when it was written. It also uses the history file itself to make incremental backups virtually automatic. \item Best of all, \vault\ is {\em FAST}. It writes files almost as quickly as the floppy drive can move its read/write head. This speed makes it feasible for you to use \vault\ every day, not just when you have a few hours to kill during special occasions. Remember, \vault\ will help you protect your valuable files, but only if you use it! \end{itemize} \subsection{Why Back Up a Hard Disk?} A backup program takes care of copying files to backup disks, but you must take care of those disks and make sure that you don't inadvertently destroy data. To do this effectively requires that you understand the kinds of things that can happen to your data and that you set up systematic procedures for managing your backup disks. We suggest some procedures below, along with a description of some of the hazards to which your data is subject. \subsubsection{How to Lose Data} \label{losingdata} Data can be lost in many ways. The most common mishap is for you to accidentally delete one or more files you wanted to keep. This can happen to anyone in a distracted moment, through confusion, or because of bugs in the software you are using. The damage from this kind of error is normally confined to a small number of files, but it can be quite devastating when it occurs. Less frequent but far more catastrophic are errors that damage the entire disk. Power surges or other power failures while the drive is in the middle of writing can cause this to happen. Normally only the file you were writing will be lost, but if the allocation tables or directories become corrupted, other files files in the same folder or partition may be lost as well. Worse still, the head may ``crash", ruining not just the data on the hard disk, but also the hard disk itself. The disk can be repaired or replaced, but the data is lost forever -- unless you have used \vault. Data can be lost even when the computer is not turned on. A hard disk can be damaged by a hard bump and will almost certainly not survive a drop to the floor. Bits on the medium can sometimes randomly change, perhaps as a result cosmic radiation or strong magnetic fields. Floppies too are vulnerable to many hazards. Even though they appear rugged, floppies have been ruined just by being placed next to a ringing telephone. Leaving them in the sun, spilling coffee on them or simply misplacing them can all lead to loss of data. The magnetic medium may also be substandard or worn. Although some of these possibilities seem unlikely, they all have happened. The message is clear -- if you want to be assured that your data is safe, {\em you must have at least two copies of your data at all times. Moreover, at least one copy must always be in a safe environment, out of the machine.} It follows that you need two sets of backup disks so that the one can be kept in a safe place while the second is being written. Backing up may take extra time, but the insurance is well worth it. Like all insurance, you don't need it until a loss occurs, and then it is too late to start using \vault. \subsubsection{Strategies for Backing Up} \vault\ lets you do three kinds of backups. A {\em full backup} copies all the files on the disk. It often takes a long time because a hard disk stores a lot of information. It should be done initially and then from time to time whenever a clean copy of everything on the hard disk is desired. Backups should be done frequently, but the files on a disk change slowly. Most of the time, only a small part of the hard disk changes between backups, making it redundant and wasteful of time to always do a full backup. A {\em daily incremental} copies only those files that have changed since the last full or incremental backup and is generally quite fast. After many daily incremental backups have been done, the incremental backup disks may contain many copies of frequently changing files. This takes up valuable disk space and makes it harder to find the most recent version of a file should it need to be restored. When that happens, a {\em cleanup incremental} backup can be used to ``clean up" and reorganize the several disks full of incremental backups, writing out the current version of every file that has changed since the last full backup (rather than since the last incremental backup). If the incremental backups still use too many floppies, it is time to make another full backup. \subsubsection{Organizing Your Backup Disks} \label{organize} Since a hard disk is many times the size of a floppy disk, it takes many floppies to back up a hard disk. This set of disks is called a {\em backup set}. Each disk in a backup set is identified by a {\em disk name} consisting of a {\em backup set name} and a {\em volume number}. If the backup set is called BACKA, the first disk in the backup set would be called BACKA.\$01, the second would be BACKA.\$02, and so forth. The disk name is written on the disk by \vault\ and checked during subsequent backups to make sure the proper disk has been inserted. You should also label the floppy the same way so you can easily identify it later. As mentioned in Section~\ref{losingdata}, keeping only one backup set is not enough to provide full protection. If you are backing up the hard drive with your only backup set in the floppy drive and you discover an error with a file on the hard disk or the hard disk crashes, you are out of luck, for there is no complete backup set from which you can restore your hard disk files. Thus, you should have two backup sets for full backups, and they should be rotated. The first time you do a full backup, you should use set 1. The next time, use set 2, the next time, set 1 again, and so on. For even greater protection, you might consider having a third ``disaster backup set" which you only write occasionally and then put into safe storage, preferably at another location. Not only does this provide protection again disasters such as fire, but it also offers some protection against hidden errors. Sometimes a file might become corrupted but the error not discovered until weeks later when the file is used. If you have been faithfully backing up your hard disk and rotating among the two backup sets for full backups, the corrupted file will eventually be propagated to all of your backup disks, and when you go to recover it, all you will find is several copies of the same bad file. To successfully rotate your backup sets, you must remember which one was used last. If you keep your backup disks in a box, put the most recently used set in the front and you will never forget which one was used last. If you do get mixed up, you can look in the history file on the hard disk (\_BACKUP.HST or \_BACKUP.CTL on the floppy disk). In addition to the full backup sets, you need two incremental sets consisting of two or three disks each. Every day, before shutting off the computer, do a daily incremental backup. This will usually add only a small amount of data to the incremental set. After repeated daily backups, the incremental set will eventually fill up. At this time, you can do one of two things. If the hard disk has changed significantly since the last full backup, then do another full backup. Otherwise, perform a cleanup incremental backup on the second set and rotate the sets so that the set on which you just performed the cleanup incremental is the one on which future daily incrementals will go. The old incremental set is then no longer needed and should be kept idle until the time comes for another cleanup incremental. \subsubsection{Rules for Safe Backups} You must remember these rules about safe backups: \begin{itemize} \item Do a full backup every once in a while, rotating full backup disk sets. \item Do an incremental backup every day before you turn off the computer. \item Back up your hard disk before you endanger it by running a new untested program. \item Keep your backup sets well organized and store them in a clean, cool, dry environment away from magnetic fields and other hazards. \end{itemize} \subsection{Getting Started -- Performing a Full Backup} Now that you understand about backup procedures, you are ready to begin using \vault. Boot your machine normally, and {\em be sure always to set the clock}. Incremental backups will not work properly unless the clock is {\em always} set correctly whenever you are using the machine, for otherwise the file dates will not be meaningful. Copy the files {\tt VAULT.PRG}, {\tt VAULT.RSC}, and {\tt VAULT.HLP} to your hard disk program folder. Put your Vault distribution disk in a safe place and double-click on {\tt VAULT.PRG}. You are now standing in \vault, the most sophisticated backup program that exists for the Atari ST. \subsubsection{Preparing the Backup Set} As described in Section~\ref{organize}, you will need at least two full backup sets and two incremental backup sets. You should begin by preparing labels for each disk in each set. Pick a suggestive name for each of the four backup sets such as {\tt BACKA}, {\tt BACKB}, {\tt INCRA}, and {\tt INCRB}. The name can be up to eight characters long and should consist only of letters and numbers. The disks in each set should be numbered, beginning with 1. \vault\ places a dollar sign in front of the volume number of each disk so that the that the disk name will never be confused with a file or folder. For example, {\tt BACKA.\$01} is the first disk of backup set {\tt BACKA}, {\tt BACKA.\$02} is the second, and so forth. To get a rough estimate of how many diskettes you will need, go back to the desktop, click on the desktop icon for your disk and select the {\em Show Info} menu item to look at how many bytes are written on the disk. Divide this number by the number of bytes that will fit on a disk. This estimate may be too small, but serves as a good starting point. \subsubsection{Selecting Parameters} To do a full backup, return to \vault\ and click on the menu item labeled {\em Full Backup} under the {\em File} menu. You are now looking at the input parameters dialog box. The first and most important item here is the `directory to back up'. \vault\ can either back up a full drive partition or only part of a file tree. You can enter this information in two ways. Either type it in, or use the `all click' method described below. % ***** OBSOLETE STUFF ON DRIVE BUTTONS ***** % first click on the drive you want to back up. These are % represented by small boxes with drive letters in them. When you % do this the drive letter will appear on the text line below the % buttons. If you want to back up the entire directory tree, you % are done and can click on OK. If you want to back up only a % folder or subfolder, either type in its name or use the file % selector. To use the file selector, The parameter labeled `File selection masks' lets you select which files to back up. Use *.* to include all files. Like TOS wildcards, `*' matches any string of zero or more characters, `?' matches exactly one character, and other characters match themselves. Thus, *.PAS would match only those files whose type is `.PAS', and *2.? would match all files whose name ends with `2' and whose type is a single character. If you give more than one mask, \vault\ uses them from left to right. For example, *.pas *.c backs up all the `.PAS' and `.C' files. A mask preceded by an exclamation point (!) excludes the matching files. For example, *.* !*.BAK backs up all files except the `.BAK' files. Each new mask adds to or subtracts from the set of files specified by all preceding masks. For example, *.* !TEST.* *.C starts with all files, then removes those matching `TEST.*', then adds back all files matching `*.C'. Note that `TEST.C' will be backed up by these rules. To select the directory to back up entirely with the mouse, click on the `Select Starting Directory' box. The standard file selector will show and you can change the directory displayed in it. When the directory you want to back up is showing in the file selector box, click on OK. The parameter box will reappear with the directory name showing on the line below the buttons. The history file will be written in the starting directory. The parameter labeled `Directory selection masks' lets you specify which subdirectories of the starting directory above you want backed up. If you want the starting directory and all subfolders, just put a dot (`.') on this line. Fancier selections can also be made here, and the parameters on this line are parsed similarly to the paramaters of the file selection masks line. This line usually starts with a `.', adding the starting directory and all its subdirectories into the set of directories to be backed up. Each new mask, which cannot be a wildcard, adds a directory from this set. As above, if the mask is preceded by a `!', it is subtracted from the set instead. Usually, a mask includes or excludes the named directory and all its subdirectories. If you only want the mask to affect the named directory and not its subdirectories, precede it with a sharp character (`\verb|#|'). All masks are relative to the starting directory. That is to say, if the starting directory is {\tt E:\verb|\|R\verb|\|} and you want to name the directory {\tt E:\verb|\|R\verb|\|VAULT\verb|\|}, {\tt VAULT\verb|\|} would be the correct mask for this. Say the starting directory is {\tt E:\verb|\|R\verb|\|}. The following examples show how directory selection masks work. \begin{itemize} \item `{\tt \verb|#|.}' backs up E:\verb|\|R\verb|\|, but not its subfolders. \item `{\tt . !VAULT\verb|\| VAULT\verb|\|SRC\verb|\|}' backs up E:\verb|\|R\verb|\|, E:\verb|\|R\verb|\|VAULT\verb|\|SRC\verb|\|, and all of their subfolders except for E:\verb|\|R\verb|\|VAULT\verb|\|. \item `{\tt . \verb|#|!VAULT\verb|\|}' backs up E:\verb|\|R, the subfolders of E:\verb|\|R\verb|\|VAULT\verb|\|, and the subfolders of E:\verb|\|R\verb|\| except for E:\verb|\|R\verb|\|VAULT\verb|\|. \item `{\tt . !PD\verb|\| !VAULT\verb|\| !OBJFILES\verb|\|}' backs up all of E:\verb|\|R except for the E:\verb|\|R\verb|\|PD\verb|\|, E:\verb|\|R\verb|\|VAULT\verb|\|, and E:\verb|\|R\verb|\|OBJFILES\verb|\| and all of their subfolders. This is probably how most directory selection masks will look; one wants to block out entire subdirectories. \end{itemize} % When the box labeled `Copy subfolders' is checked, \vault\ % backs up the folder you specify and all its subfolders. If you % uncheck this box, \vault\ will not back up subfolders. % Normally, this box should be checked. When you have selected all of the input parameters, click on OK and the output parameters box will appear. The first thing to select here is the name of the backup set you will be using. If you want the starting disk to be other than the value shown (usually 1), you must also type in the starting disk number. You must also select the name of the output folder. This name will be used on the full backup and all incrementals to identify backups of the selected input folder. Although this name can be only eight characters long, we suggest that you use a name suggestive of the input name. For example, if you are backing up the folder {\tt E:\verb|\|RECORDS}, you might choose {\tt EREC} for the output folder name. All of the files and folders from {\tt E:\verb|\|RECORDS} will be placed in the folder {\tt EREC.FUL}. Later incrementals will automatically use the names {\tt EREC.001}, {\tt EREC.002}, etc. \subsubsection{Inserting a Disk} When you have selected all your options, click on the button labeled `OK'. You will be given a box and asked to insert a disk. {\em NEVER TAKE OUT OR INSERT A DISK UNLESS YOU SEE THIS BOX OR \vault\ TELLS YOU THAT IT HAS FINISHED BY DISPLAYING AN ALERT BOX!} You should now insert the disk requested by \vault\ into either drive A or B. Check the appropriate drive box to tell The Vault which drive you are using. If the disk needs formatting, check the `Format' box. If the disk is already formatted but you want to clear it, click the `Clear Disk' box. If you want to append to a disk already written by the Vault, check the `Append' box. Normally when you do a full backup, you will want to clear the disk, but the first time you use the disk, you must of course format it. The `Dual Drive' option is useful if you have two floppy drives and your disks are already formatted. (This is usually the case; you only have to format disks once.) If it is selected, \vault\ starts by writing a disk in the drive you told it to above. When it is done writing that disk, it will look in the other drive for the next disk it expects. If it finds this disk, it will go on and write it; otherwise, it comes back to the `Insert Disk' dialog box being described here, asking you to insert an appropriate disk. Similarly, when \vault\ is done writing to the second drive, it looks in the first drive again. If when \vault\ is writing in one drive, you put an appropriate disk in the other, \vault\ could write continuously, never waiting for a disk change! \vault\ will never format a disk automatically in dual mode, even if the format option is selected, because formatting tells \vault\ to {\em not} look at disk labels, but to go ahead and clear whatever disk is in the drive. This could be dangerous when done automatically; if this option were in \vault\ and the user put two disks in the two drives, \vault\ would go ahead and write disk 1, then disk 2, then overwrite disk 3 onto disk 1, disk 4 onto disk 2, disk 5 onto disk 3, and so on. The `Save Defaults' button shown in this box works exactly the same way as the `Save Defaults' option from the main menu, described in section~\ref{savedef}. When you are done selecting the options for this box, click on `OK'. \paragraph{Formatting a Disk} \vault\ has a facility for formatting a disk before it is written on. It can only format standard (non-twisted) disks of either nine or ten sectors per track but can read and write disks which are formatted differently as long as GEMDOS can also. If you have your own favorite disk formatter, you can use it instead of the one built into \vault. If you do this, you will need to format all the disks you need before you enter \vault. If you have checked the `Format' box, \vault\ will give you the `format options' dialog box after you insert the disk and click on OK. You can choose either one or two sides (for a double-sided drive), and either nine or ten sectors per track. You will probably want ten sectors per track because it will let you put more data on each disk. (Note however that there are a few restrictions on the use of 10 sector disks. In particular, you can not use the desktop's disk-to-disk copy with them, although ordinary file copy works okay.) When you are finished selecting the format options, click on `Format'. If you decide not to format and want to insert a different disk instead, click on `Cancel'. The `Random Serial Number' option can normally be ignored, but if you are interested, here is what it does. Each disk has a 24 bit serial number that should be different on every disk you own. (This number has nothing to do with the backup set volume number mentioned earlier.) TOS uses the serial number to tell when a disk is changed; two disks with the same serial number inserted one after the other will look the same to TOS and can cause you to lose all of the files on the second disk. Since there is no way for TOS to tell what serial numbers are already in use, it generates a random serial number when it formats a disk, hoping that it will be different from all others. It usually will be. If the `Random Serial Number' box is checked, as it normally is, \vault\ will do the same. However, if you have your own numbering scheme and want to specify which number to use, click on the `Random Serial Number' box to remove the check. A line will appear on which you can type your own serial number. The serial number must be specified in HEX (base 16). \paragraph{Checking Disk Labels} If you did not tell \vault\ to format your disk, it will make sure that you have inserted the correct disk by checking that the label written on the disk (if any) matches the current backup set name and sequence number. If they match, \vault\ will proceed automatically. If not, it will give you a dialog box asking you what to do. The two most common reasons for seeing this box are that you actually made a mistake and accidently put in the wrong disk or that you are making a new backup set and none of the disks have labels yet. In the latter case, you should click on `Relabel and Proceed'. The causes \vault\ to relabel the disk and proceed with the backup. In the former case you should insert a different disk (presumably the one that was expected) and click on the `Insert Different Disk' button. A third possibility is that you previously typed the wrong backup set name and want to proceed using the backup set you actually inserted in the drive. To do this, click on `Proceed'. \subsubsection{The Backup Process} After \vault\ has a disk to write on, it does all the work. First, it plans which files to put on the disk and quickly creates headers on the disk for them. After all the headers are created, it copies the actual data for each of the files. A sophisticated special-purpose floppy disk cache is used to speed writing of the files. Remember to {\bf never take the disk out} until \vault\ asks you to insert a new disk or tells you that it is finished. At times, it may look like the floppy drive is not busy, but it really is. After each disk is written, \vault\ will ask you to insert another. This process will continue until \vault\ has finished the backup, at which point control will return to {\em The Vault's} desktop. \subsection{Incremental Backups} To do an incremental backup, select `Daily Incremental' or `Cleanup Incremental' under the `File' menu. These work much the same as a full backup except that you won't be asked for a backup folder name; \vault\ uses the same name that was used for the most recent full backup. In the case of all but the first daily incremental and a cleanup incremental, you also will not be asked for the name of the incremental backup set since the same name will be used as in the previous incremental. Instead, \vault\ will instruct you to insert the same disk that was last used by the previous incremental backup. However, you can always choose to write to a different incremental set by inserting the desired disk and then clicking on `Proceed' when informed that the disk is not the expected one. The `Use Archive Bit' option is useful for incremental backups. TOS version 1.4 or newer will set the `archive' bit on a file whenever it is modified. This includes modifying a file with a database and any time a file is created. A file which is moved by copying and then deleting the old file will have its archive bit set, too. Normally, \vault\ does not back up according to how the archive bit is set, but does clear the bit when it backs up a file. When the `Use Archive Bit' flag in the `Options' menu is set, \vault\ will back up files with the archive bit set and new files when doing an incremental backup. If a file it backs up would not have been backed up without the `Use Archive Bit' flag, The Vault also changes its date so it would have been. This way, it will be backed up on subsequent Cleanup Incrementals. Note that this option is not available with TOS 1.0 or TOS 1.2. To tell if you have TOS 1.4 or later, select `Desktop Info' from the `Desk' menu while using the desktop. If you have a color monitor, you will see a ``rainbow'' floating across the Atari logo. In any case, there will be a long string of copyright dates, the latest which should be 1989 or later. \subsection{Error Recovery} Sometimes, \vault\ may encounter a write error on a floppy disk. In this case, it tells you, and you are given the option to insert another disk to replace the bad one. When this is done, the new disk {\em must} be formatted to be at least as large as the old disk, i.e. it must hold the same amount of data or more. It is best to replace the old disk with one formatted in the same manner. For example, if an error was found writing a single-sided 10-sector disk, \vault\ requires that you replace it with a single-sided 10-sector disk, or a double-sided disk. If an error was found writing a double-sided 10-sector disk, another double-sided 10-sector disk is the only replacement. \subsection{Other Options} \vault\ has a few other options that can on occasion be useful. They are all selected from the {\em Options} menu. \subsubsection{File Splitting} \paragraph{The Split Threshold} As stated before, \vault\ tries not to split files between disks but it will do so if necessary to avoid leaving a large unfilled ``hole" in a disk. In more detail, \vault\ will first fill up a disk as well as it can without splitting files. If the disk isn't full, it then looks for files which are larger than a preset ``split threshold". If there are any, it will fill up the disk by splitting a file; if not, it will go on to the next disk. Thus, the split threshold is both the smallest size file that will ever be split and the largest amount of empty space that \vault\ will ever leave on a disk (except for the last). You can set the split threshold by selecting `Set Split Threshold' under the `Options' menu. The threshold is normally set at 300,000 bytes. The split threshold should always be smaller than the smallest disk you will be using; otherwise, {\em The Vault} will not work correctly if it comes to a file which is larger than the disk. \paragraph{The Parts of a Split File} When a file is split, \vault\ selects a name for each of its parts. The root of this name (that is, the part before the `.') is the same as the root of the file being split. The extender has a unique id letter chosen from A to Z followed by a 2-digit part number. Thus, the first part of the file {\tt FOO.BAR} may be called {\tt FOO.A01}, in which case the second part would be called {\tt FOO.A02}, and so on. If another file or part such as {\tt FOO.A99} already exists that might conflict with the generated part names, \vault\ will use B instead of A as the unique id letter. If that doesn't work, it tries C, and so forth. It keeps doing that until it find a letter that works. If it can't use any letter, it gives an error. Note that if two files such as {\tt FOO.PRG} and {\tt FOO.RSC} both exist and both need to be split, the parts of one would be named {\tt FOO.A01}, ... and the parts of the other would be named {\tt FOO.B01}, ... . Each part of a split file contains a one-line, 22-byte header describing what file it is a part of, what its part number is, and whether it is the last part. This information is used for putting a split file together when restoring it. \subsubsection{Save Default Options} \label{savedef} You may save the default options so they will be the same every time you run \vault. To do this, select `Save Defaults' under the `Options' menu. All of choices that you made in all of the dialog boxes and menus will be saved in a file you select, ending in {\tt .VDF}. The file called {\tt VAULT.VDF} in the directory from which you ran \vault is read is used to set the defaults when you run \vault. Setting the default options often consists of ``pretending'' you are doing a backup, and then at the last minute saving the options. To make this easier, a `Save Defaults' button is part of the dialog box asking you to insert a disk, letting you save the defaults without quitting your backup run. You may have two or three backup sets for one hard disk; one for each partition would be common. Each backup run may need different defaults; for example, you may not want {\tt .PRG} files backed up on your programming partition because they use up backup disk space and can be rebuilt easily, but on your system partition, containing all your commercial software, you most certainly would want to back these up. You can load whichever default file is appropriate for your current backup with the `Load Defaults' option, found just under `Save Defaults'. \subsubsection{Disabling Write Verify} You may feel that you would rather live dangerously by skipping the write-verify operation that normally follows every write to disk. This will make \vault\ run considerably faster but with a risk of unreadable backup data not being discovered until it is needed. To disable write verification, uncheck the `Write Verify' menu item under Options. We recommend that you always use write verify. \subsubsection{The History File} \vault\ writes a history of all of its activity to a file called \_BACKUP.CTL and places it on the hard disk in the root directory or folder being backed up. It supplies \vault\ with the date and label information necessary to automate the incremental backup process. In addition, a file called {\tt \_BACKUP.HST} provides the user with a helpful record of the files which have been backed up and a means of locating a specific file in the backup set. One can search for a file name in the list of files and thereby find the disk and folder on which it has been backed up. {\tt \_BACKUP.HST} contains a four-line header followed by a list of files. The header contains the date of the most recent backup, the date of the last full backup, the last output folder used, and the last incremental disk used. The list of files contains the full pathname of each file that has been backed up, the creation date of the original file, and the disk and folder numbers of the backup copy. {\tt \_BACKUP.CTL} is the same, except that it does not list the files which were backed up. Each time an incremental backup is done, the backup history is modified. The current date, output folder, and incremental disk are written in the header, and the names of all files backed up are appended to the end of the list of files. When a new full backup is performed, the old {\tt \_BACKUP.HST} file is renamed to {\tt \_OBACKUP.HST} before the new {\tt \_BACKUP.HST} file is written. Thus, the old history is preserved in case the new backup fails. \subsection{Using \vault\ as a Copy Utility} Although \vault\ was designed for backing up your data, it's speed of writing and other features make it attractive for other kinds of copying jobs as well. To allow it to be used this way, two additional menu selections, totally unrelated to backup up data, have been provided -- `Full Copy' and `Incremental Copy'. Full copy works just like `Full Backup', except that it does not check disk labels, ask for specific disks, split files or write a log file. Incremental copy is similar except that it only copies files that were created or modified after a date and time that you specify. The two Copy selections are useful for simply duplicating data. The results of a Full Copy are different from the results of using the desktop to copy a whole disk: \begin{itemize} \item A Full Copy copies only files, not blank sectors, so the result is a disk with no fragmentation. \item It will work with any format disk compatible with GEMDOS, not just with 9 sector floppies. \item It can copy from single sided disks to double and vice versa, and from a hard disk to floppies. \item It can be used to copy from one source disk to a set of floppy disks. \end{itemize} \subsubsection{Using Full Copy and Incremental Copy} Full Copy and Incremental Copy are used just like the backup selections with one important difference: in both cases you can select a full pathname for the output folder name instead of just an eight-letter name. Thus, if you select {\tt FINANCES\verb|\|TAXES} as the output folder, then that is exactly where the data will go on the floppies, and {\tt .FUL} or {\tt .001} will not be appended. \subsubsection{Specific Suggestions for the Use of Full Copy} \paragraph{Putting Together Floppies} You can quickly make up a floppy disk for a friend with copies of files from all over your hard disk and floppy library. Make a temporary folder on your hard disk and copy all the files you want to it. Now, use Full Copy to copy this folder to the floppy disk. This is much faster and easier than copying each file individually to the floppy, especially if you have only one floppy drive. \paragraph{Splitting Floppies} If you have one double-sided floppy and want to copy it to two single-sided floppies, this can be done using a Full Copy and two floppy drives. Do a full copy from the input disk to the output disk. \vault\ will ask for as many floppies as needed. With one drive, it is a bit harder. Copy the files to the hard disk and use Full Copy to copy them to the single-sided disks. \paragraph{Optimizing disks} \vault\ can be used to optimize disks, that is, to pack files together on consecutive sectors of the disk and to eliminate ``holes". Since the floppies it writes are fully optimized, use Full Copy to copy all files from one floppy to another. To use \vault\ as a hard disk optimizer, first back up the hard disk, then zero it using the hard disk utilities that came with your disk, and then copy all the files back using \key\ (the restore program provided with \vault). This method is more reliable than a special purpose hard disk optimizer. If the power goes out while you are using a disk optimizer you will probably lose all the data on the drive. It is therefore a good idea to back up your hard disk before you optimize! But if you are going to back up anyway, you might as well clear the disk and restore it from the backup set. You will probably find other uses for \vault. In the meantime, happy backing! \subsection{Cautions and Limitations} TOS has a few shortcomings that can cause problems using \vault. \begin{itemize} \item Although the underbar character is legal in file names, its use in file selector boxes and certain other dialog boxes can cause GEM to hang. When this happens, rebooting the machine is your only recourse. (This bug was fixed in the summer 1987 version and later, including the ``Rainbow'' version, of TOS ROM's.) \item Incremental backups compare the file date and time maintained by GEMDOS with the current date and time when deciding whether to back up the file or not. Of course, this means that you must always set the clock whenever you reboot the machine so that these times are always correct. Unfortunately, GEMDOS only sets the file date and time when the file is first created, not when it is modified. Most programs such as wordprocessors actually create a new file and rename or delete the old one when the user updates it. In such cases the file date/time do accurately reflect the most recent modification and there is no problem. However, certain programs such as some database managers actually modify the old file rather than creating a new one, so the date/time of those files continues to reflect the time of original creation, not the time of last modification. Such files will {\em not} be backed up on the incremental backup, unless you have TOS 1.4 ROMs and use the `Use Archive Bit' option. The solution to this problem is to run the program {\tt TOUCH.TTP}, furnished on the distribution disk, every time any such file has been modified or at least before each incremental backup. This program sets the date/time of the named file to the current date/time. To use, click on {\tt TOUCH.TTP} and type the name of the file to touch in the parameter box that will appear. \item \vault\ formats only regular nine or ten sector floppy disks. It {\em can} read and write any disk format that TOS will read, such as {\em Twister}. If you want to use Twisted disks, format them before using \vault. \end{itemize} %%%%%%%%%%%%%%%%%%%%%%%%% \section{\key: A file Restore Program} \subsection{Introduction} \key\ is a program that makes it easy to restore files backed up by \vault. It is also a general purpose file copy utility. It can copy single files, groups of files matching a wildcard pattern, whole folders, or whole backup sets (all folders, all subfolders, etc.). It preserves the file's date and time, making it easier to identify the latest version of a file. It provides several options for what to do when the file already exists in the output folder. (By default, it only copies the file if it is newer than the one it replaces.) Finally, \key\ can restore a long file that \vault\ has been forced to split across two or more disks. \subsection{Using \key} To run \key, double-click on KEY.PRG. You will be greeted by a dialog box giving you the options. \subsubsection{Specifying the Input} You must specify an file name, pattern, or folder to copy from. If you give a file name or a TOS wildcard pattern (a name with `*'s and `?'), all matching files will be copied, depending on the `Copy subfolders' switch. For example, {\tt E:\verb|\|FOO} will copy all the files in {\tt E:\verb|\|} and its subfolders named {\tt FOO}. If you give just a foldername, all the files in that folder and its subfolders will be copied. Usually you will be restoring entire folders, in which case you only need to give the name of the folder to restore from. Be sure to start your name with the letter of the drive to copy from, for example {\tt A:} or {\tt B:}. When restoring files backed up by \vault, you will need to decide which folders to restore from. For example, if you just did a full backup to folder {\tt E}, then the root directory of the floppy will contain only one folder named {\tt E.FUL}, and all of the files and folders backed up will be contained in it. To restore those files, you should type {\tt A:\verb|\|E.FUL} on the ``input" line. If you are restoring from an incremental backup, there will be folders with names like {\tt E.001}, {\tt E.002}, etc. This is because a new folder is created each time you run an incremental backup. Typing {\tt A:\verb|\|E.002} will restore those files saved during the second incremental backup. If you are in doubt about which folder to restore from, look on the backup disk or in the backup history file {\tt \_BACKUP.HST}. \subsubsection{Specifying the Output} On the ``output" line, give the name of the folder where the files should be put. This folder will be created automatically if it does not already exist. For example, if you previously ran a full backup of files from {\tt E:\verb|\|} to output folder {\tt E} and now wanted to restore them from a disk in drive A, you would type {\tt A:\verb|\|E.FUL} on the input line and {\tt E:\verb|\|} on the output line. For a more complicated example, if you wanted to restore files to {\tt D:\verb|\|LETTERS} that had been backed up on the third incremental backup after having previously done a full backup to output folder {\tt DLETS}, then you would type {\tt A:\verb|\|DLETS.003} on the input line and {\tt D:\verb|\|LETTERS} on the output line. This sounds harder than it really is, for if you just look on the backup disks, you will see what folders are there to restore from. Note that you do not have to restore files to the same folder that they originally came from, although you will usually want to. \subsubsection{The ``Copy Subfolders" Option} \key\ normally copies from the selected folder and all of its subfolders and all of their subfolders and so forth. If the `Copy Subfolders' box is unchecked, then \key\ copies only from the selected folder. This is useful if you want to copy one file. For example, if the input is {\tt E:\verb|\|FOO} and {\tt FOO} is a file in {\tt E:\verb|\|} , you must uncheck the `Copy subfolders' option to prevent files named {\tt FOO} in subfolders of {\tt E:\verb|\|} to be copied. The box should normally be checked when restoring from backup disks. \subsubsection{Overwrite Modes} Any copy program has a problem when the file about to be copied has the same name as a file already in the output folder. Should the file in the output folder be replaced with the one being copied, or should the copy not take place? \key\ gives you four options to tell it what you want it to do in such cases. Select the desired option by checking the box next to it. If you check the ``Always" box, \key\ will copy every file in your input folder and always replace existing files whenever name conflicts occur. If you check the ``Only if different" box, \key\ compares every input file with the corresponding one in the output folder, and only copies those that differ. The effect is the same as if you said ``Always", but this is much faster if only a few files actually differ. For example, you might want to use this option if a few of the files on your hard disk have been damaged and you don't know which ones. If you check the ``Only if older" box (the default), \key\ compares the dates of the input and output files. If the output file is older than the input, it copies, replacing the output file by the input; otherwise it leaves the output file alone. The result is that whichever version is newer ends up in the output folder. This is useful, for example, when you want to merge two folders with different versions of the same files. If you check the ``Never" box, \key\ will never write over an existing file. This of course is the safest in the sense that files are never destroyed, but it may leave you with old versions of files. \subsubsection{Performing the Copy} After you have selected the restore options, put the disk to be copied into the drive and click on the ``Copy" button. \key\ will copy all of the files according to the input specification and ask you to insert another disk. It repeats this process on each disk you insert. When \key\ is done with the entire backup set (or you do not wish to restore any more files), press `q' when it prompts you for another disk and you will return to the options box. \subsubsection{Split Files} Normally, disks can be restored in any order. However, split files present a special problem. \vault\ is sometimes forced to split long files across two or more backup disks. When this occurs, it gives each piece a special name. For example, a long file {\tt MAILLIST.DOC} might get split into three parts named {\tt MAILLIST.A01}, {\tt MAILLIST.A02}, and {\tt MAILLIST.A03}. The original name of the file, {\tt MAILLIST.DOC}, is stored at the beginning of each part along with other information. When \key\ encounters the first part of a split file, it creates the output file (if the overwrite mode permits it) and copies the first part in. It also remembers that an incomplete file exists. Subsequent parts are added on until the file is complete. For this to work, {\em you must insert the disks in the same order that they were written}. \key\ does not check for the correct disk, and if you put them in in the wrong order, the part will be restored as if it were an ordinary file and not added on to the big file to which it belongs. If you ask to quit before all of the parts of a split file have been restored, \key\ will show you which files are still incomplete and ask if you really mean to stop. If you press `y', you will return to the top-level, and the incomplete files will be left in the output folder. You should usually delete them immediately so that you do not later get mixed up and think that they are good files. \subsection{Good Strategies for Using \key\ } To restore all files in the least time possible, use the ``Overwrite if older" option and restore your disks in backwards order: Restore the most recent incremental backup folder first, then the next most recent, etc. and ending with the oldest incremental folder. Finally, restore the most recent full backup. For example, if you have a full backup named {\tt E.FUL} and three subsequent incrementals named {\tt E.001}, {\tt E.002} and {\tt E.003}, restore the folder called {\tt E.003} first, then restore {\tt E.002} and {\tt E.001}, and last, restore {\tt E.FUL}. By restoring the disks in reverse order, the first version of a file that \key\ encounters is the most recent one. When it later comes to older versions, they are skipped since a newer version has already been restored. If the disks were restored in the same order as they were created, then every version of each file except for the latest would be restored and then later erased as newer versiosn came along, and the latest would be restored last. This would still produce a correct result but would be slower. \subsection{Using \key\ from a Command Line} \key\ can also be used as a {\tt TTP} program or from a shell. It takes a command line argument of the following form: \begin{verbatim} { {[-f ] [-di ] [-do ] [-]} } \end{verbatim} The items between curly brackets \{ ... \} may be repreated any number of times. The items between square brackets [ ... ] are optional. The arguments and switches are explained below. \subsubsection{-f $\langle$ file$\rangle$ } This tells \key\ to read one or more lines of arguments from a file. This is useful for copying long lists of files. For example, suppose {\tt PROGFILE.CPY} contains the following lines: \begin{verbatim} -di a:\ -do d:\ *.c = *.pas = w*.* = *.doc = \end{verbatim} Then the argument `{\tt -f PROGFILE.CPY}' would cause \key\ to read and interpret each of the lines in that file. In this example, the result would be to copy all the files in a:\verb|\| ending with .c, .pas, and .doc or beginning with w to d:\verb|\|. \subsubsection{-di $\langle$ fold$\rangle$ } This sets the default input folder to $\langle$ fold$\rangle$. This folder is used to find all input paths that do not explicitly specify a folder. For example, if you specify `{\tt -di e:\verb|\|r}', then the input path `{\tt src\verb|\|myprog.c}' would refer to the file `{\tt e:\verb|\|r\verb|\|src\verb|\|myprog.c}', but the name `{\tt d:\verb|\|yourprog.c}' would still refer to drive d. If the `{\tt -di}' switch is not given, TOS's ``current working directory" is used instead. This is folder containing the file KEY.TTP unless you are using a shell that lets you set the working directory to something else. \subsubsection{-do $\langle$ fold$\rangle$ } This sets the default output folder to $\langle$ fold$\rangle$ . The default output folder works just like the default input folder except that it applies to the output path. \subsubsection{-$\langle$ switch$\rangle$ } $\langle$ switch$\rangle$ can be one of the switches described below. For example `{\tt -od}' selects the `overwrite only if different' option. The meanings of the various options are explained in greater detail elsewhere in this manual. If no switch in a group is given, the one shown in upper case is used. \begin{verbatim} Overwrite option: [ o | OO | od | no ] o: overwrite on OO: OVERWRITE ONLY IF OLDER od: overwrite only if different no: never overwrite Subfolders option: [ SUB | nsub ] SUB: COPY SUBFOLDERS nsub: copy files only, not subfolders \end{verbatim} \subsubsection{$\langle$ inmask$\rangle$ } This is a pattern that selects which files to copy from. Suppose the default input folder is `{\tt e:\verb|\|r}'. The following examples illustrate how $\langle$ inmask$\rangle$ works: \begin{itemize} \item {\tt `taxes'}: All files in the folder {\tt e:\verb|\|r\verb|\|taxes} {\em if taxes is a folder}, or the single file {\tt e:\verb|\|r\verb|\|taxes} if taxes is a file. \item {\tt `*.doc'}: All files in {\tt e:\verb|\|r} that end with .doc. \item {\tt `.'}: All files in the default input folder (in this case, {\tt e:\verb|\|r}) \item {\tt `*.*'}: All files in the folder {\tt e:\verb|\|r} that match *.*. (This is the same as `.'.) \item {\tt `d:\verb|\|'}: All files in the folder {\tt d:\verb|\|}. \item {\tt `src\verb|\|*.c'}: All .c programs in the folder {\tt e:\verb|\|r\verb|\|src}. \item {\tt `c:\verb|\|bin'}: All files in the folder {\tt c:\verb|\|bin} (or the single file {\tt c:\verb|\|bin} if it is a file instead of a folder). \item {\tt `\verb|\|work.*'}: All files in {\tt e:\verb|\|} named `work' with any extensions (since e: is the drive of the default input folder). \end{itemize} \subsubsection{$\langle$ outfold$\rangle$ } This is the directory to which the input files will be copied. Like the input folder, it is relative to the default output. If it is `.', then it specifies the current default output folder. (See the description of the `{\tt -do}' switch. Suppose that the default output folder is set to {\tt e:\verb|\|m}. The following are some examples to show how {\tt $\langle$ outfold$\rangle$ } works: \begin{verbatim} . e:\m \r e:\r docs e:\m\docs \ e:\ d:\ d:\ \end{verbatim} Here are examples of command lines as you might type them to a shell. (In some shells which expand wildcards, you may need to put them in quotes.) \begin{verbatim} key a:\ b:\ Copy disk a:\ to disk b:\ key -di a:\noise -do b:\ *.* . Copy folder a:\noise and all subfolders to disk b:\ key -di a:\ -do b:\ e:\*.pas . *.c . Copy e:\*.pas and a:\*.c to b:\ key -di a:\ *.c d:\test Copy a:\*.c to d:\test\ key -di d:\ -do h:\ . . Copy d:\*.* to h:\ \end{verbatim} \end{document} ed below. For example `{\tt -od}' selects the `overwrite only if different' option. The meanings of the various options are explained in greater detail elsewhere in this manual. If no switch in a group is given, the one shown in upper case is used. \begin{verbatim} Overwrite option: [ o | OO | od | no ] o: overwrite on OO: OVERWRITE ONLY IF OLDER od: overwrite only if different no: never overwrite Subfolders option: [ SUB | nsub ] SUB: COPY SUBFOLDERS nsub: copy files only, not subfolders \end{verbatim} \subsubsection{$\langle$ inmask$\rangle$ } This is a pattern that selects which files to copy from. Suppose the\documentstyle[11pt]{article} \newcommand{\vault}{{\em The Vault}} \title{Release Notes for The Vault version 3.00 Beta} \author{Robert Fischer} \date{January 18, 1991} \begin{document} \maketitle {\sf This manual and the programs it describes are copyright \copyright 1987--1991 by Robert P. Fischer. Permission is granted to reproduce this document in any form. It may not be changed except to alter its layout for printing. When distributing this document, you must distribute the original TeX form of the document along with it. No copy of this document, in machine-readable or other format, may be sold for profit, but it may copied freely for non-commercial purposes. The programs that this manual describes are also copyright \copyright 1987--1991. They may be given away under certain conditions. Run the programs for more details. This manual and the programs it describes are distributed in the hope that they will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. In particular, no warranty is made about the accuracy of this manual. You assume all risks of using these products. The author is not responsible for damages arising from use of this manual or the programs it describes, whether caused by negligence or other fault on the part of the author, or by any other cause. } \vspace{2 cm} I originally wrote \vault\ in Pascal for a number of reasons: OSS/CCD Personal Pascal works well even on a 520 ST with floppy, which is what I originally worked on to develop {\em Mi-Print}, my first large program. On a 1040, it can all fit on a RAMdisk, making compiling quick. Once the compiler loads, it compiles its code quickly, shortening the edit-compile-debug cycle. And at that time, I only had the Alcyon C compiler available, which left much to be desired. Finally, if I {\em really} needed something in C, I could write it in C and include it in my Pascal program. But in time, for a variety of reasons, I started writing all my programs in C. Mark Williams C with the CSD source debugger, an invaluable tool not available with Pascal, had come out. I found that because of the restrictions in Pascal, I was writing lengthy code to do what I could do in a couple of statements in C, slowing down my Pascal programs and making them longer. Pascal didn't allow global variables which are visible from only one module, making global variables rather messy. Pascal doesn't allow initialized arrays or variables. Pascal doesn't allow computed constants. There's no way to tell Pascal a default include directory, nor can Pascal include a file from inside an include file. Therefore, I started writing many programs in C, but \vault\ remained in Pascal. I eventually started having problems including my C code in \vault. I had originally just compiled it with the Alcyon compiler, but Mark Williams C used a different object file format and I wanted to get Alcyon C off my hard disk because it took up space. Converting everything to Mark Williams format didn't work, and I couldn't convert it all to Alcyon/Pascal format because there's no program to do that. I eventually compiled into Alcyon format with Mark Williams C plus the MADmac assembler, a less than perfect combination. But I realized that if I ever wanted to release the source code, few people would be able to compile it because few people have Pascal, Mark Williams C and MADmac. Finally, I started to come across C code which I wanted to include in \vault\ but couldn't because it did something fancy --- it's next to impossible to include C code which uses any C library calls (especially {\tt malloc()}) or GEM. Often, I would have to hand translate from C to Pascal and end up with two versions of everything. One large window module which I wrote in C I couldn't include in \vault\ at all (I still haven't, but I plan to some day). Personal Pascal 2.0 came as the final blow because it used a different object file format. I couldn't develop my LynxLib in Pascal with it because I had no librarian for the new format. Then OSS went out of business. I realized that I was stuck with Pascal version 1 as it stood. Therefore, I decided to convert \vault\ to C. I didn't like any of the Pascal to C translators I saw because they made an ugly C program which couldn't easily be modified, and didn't account for vast changes in code like a change in string formats. I thought of converting one module at a time to C, but rejected that because converting one module requires a lot of work interfacing the new code with Pascal, which is esssentially wasted if you plan to convert the entire program to C eventually. Therefore, I converted the whole program, tested each module bottom-up and put them together to get a program which worked almost exactly like \vault\ 2.01. I then added many improvements I had wanted to add to end up with the \vault\ 3.00. % But beware, %because \vault\ 3.00 is 100\% new code it could easily have some bugs %not found in \vault\ 2.01. \section{Changes in The Vault 3.00} \begin{enumerate} \item As already stated, it's written in C instead of Pascal. This makes \vault\ run faster and smaller: \vault\ 2.01 was over 90,000 bytes long, while \vault\ 3.00 before its new features was just over half that. Even the Beta release is under 70,000 bytes. \vault\ 3.00 should also use less memory for data storage because, thanks to the C language, it allocates only what it needs. All this means that \vault\ 3.00 can run in even less memory than \vault\ 2.01. \vault\ 2.01 had a problem that it would often bomb and mess up the system after it exited. This was something to do with Pascal and GEM, and was not the fault of \vault. Needless to say, because \vault\ 3.00 uses C instead of Pascal, this bug is gone. \item When you first run it, you should notice that \vault\ 3.00 loads its help much faster. In addition, the help is now where you need it --- every dialog box has a button labelled ``Help'', and selecting that button brings up an appropriate help screen. Many help screens have been removed from the main menu and moved to the ``Help'' button in a dialog box where they belong, and the remaining ones are now organized logically. Help screens are also cross-referenced, so you can view relevant help screens with buttons at the bottom of each help screen. To go to the help screen you came from, press ``Previous'' at the bottom of the screen. If you press ``OK'' and go back into the help system with the ``Help'' button again, you will end up on the same screen as you left the help system from, as if the help system were a book which you left open. \item When looking for the help file VAULT.HLP, \vault\ now looks for it in a folder specified in the environment variable VAULTDIR. \item The licensing agreement which you see when you click on ``Terms'' after selecting ``About The Vault'' now uses the standard help box form and comes in readable-size type. \item The dialog box you see when you click on a Backup or Copy action in the ``File'' menu is brand new. In order to back up multiple hard disk partitions on one backup set, it now lets you select many starting folders, each with its own list of folder patterns. When \vault\ runs a backup, it backs up each of these starting folders separately into a different output folder on the backup set. The way you select your starting folder and folder patterns is now entirely mouse-based. \vault\ displays two windows on the screen: one of the starting folders and the other of the folder patterns for the selected starting folder in the first window. When you have the starting folder window selected as the current one, the buttons in the middle (``Add'', ``Clear'', ``Insert'', ``Delete'', ``Edit'') let you manipulate the starting folders in obvious ways. ``Add'' adds another starting folder to the end of the list of starting folders displayed in the window and gives you a files selector to choose it. ``Clear'' clears everything from the currently selected window. ``Insert'' inserts a new starting folder immediately before the currently selected item. ``Edit'' lets you change the currently selected item using the file selector, and ``Delete'' deletes it. Similarly, when the folder patterns window is current, you can insert and delete new folder patterns. In this window, though, when you're given the file selector to select a pattern, you start at the currently selected starting folder and are not allowed to select a folder not included in the starting folder. \vault\ takes the folder you select and removes the starting folder from the beginning of it, to give a folder pattern like you would type in \vault\ 2.01. For example, if the selected starting folder were ``E:\verb|\|R\verb|\|'' and you selected ``E:\verb|\|R\verb|\|PROGRAMS\verb|\|'' with the file selector, you would get PROGRAMS\verb|\| as the folder pattern. To set or unset the ``Files Only'' and ``Exclude'' switch (`\#' and `!' in \vault\ 2.01), click on the appropriate buttons, and you'll see it happen on the screen. Often, a starting folder or folder pattern will become too line to fit in the window. Then, you can use the scroll arrows next to each line to scroll the line left and write in the window. Because one backup can now have many starting folders and each one requires its own output folder, \vault\ no longer lets you choose the output folder on a Backup, but rather generates it automatically from each starting folder. It takes the device name the folder is on as the first letter of the output folder, and then appends up to 7 letters of the input folder name. For example, from an input folder named ``C:\verb|\|TMP\verb|\|PROGRAMS'', \vault\ would generate ``CPROGRAM'' as the output folder. Another example, \vault\ would generate ``E'' as an output folder from the starting folder ``E:\verb|\|''. If \vault\ runs into a conflict between output folder names, it uses a different letter as the last letter of the output folder name until the conflict is resolved. For example, if it had to back up ``C:\verb|\|TMP\verb|\|PROGRAMS'' and ``C:\verb|\|REAL\verb|\|PROGRAMS'' on the same backup set, it would name the first output folder ``CPROGRAM'' and the second one ``CPROGRAA''. On a copy, (Full Copy or Incremental Copy), you {\em do} get to choose the output folder, but you may not use more than one starting folder. If you do, \vault\ will copy from the first and complain about the rest. \vault\ 3.00 now lets you select the full pathname of the backup history, on a line at the bottom of the screen. You can either type it in, or select it using the ``Select Backup History'' button. No matter what file you select, \vault\ forces its extension to ``.HST'', and will write a ``.HST'' and ``.CTL'' file from it. For example, if you select ``C:\verb|\|FOO.C'', \vault\ will write ``FOO.HST'' for its backup history and ``FOO.CTL'' for its control file. At the bottom of the screen, you now have two lines of space instead of one to give \vault\ wildcard patterns. \item \vault\ now formats skewed disks (more commonly known as Twisted) on TOS 1.2 or later if you like. It didn't do this in version 2.01 because I prefer FastFlop, which is faster than Twister and doesn't require that you format your disks specially. You can also format your disks up to 83 tracks, if you like. I don't reccomend this. \item While \vault\ is actually doing its work, the screen is much improved to show you more information about what \vault\ is doing internally. At the top of the screen are the parameters you entered in. If they are too long to fit on the line, they are truncated, but only when displayed the screen; \vault\ still remembers them all. In the middle of the screen, \vault\ tells you which folder it's scanning, and which file it's reading. It can't scan and read at once, so one line is always blank. These two lines are easier to follow because, unlike in \vault\ 2.01, they are not centered on the screen and therefore do not jump about as their lengths change. Most useful, at the bottom of the screen \vault\ displays ``thermometer bars'' which show \vault 's approximate progress on the current disk. Internally, \vault\ has always worked in three phases: first it scans the hard disk, planning what it will write on the floppy. When it's filled up the floppy in this {\em packing} phase, it starts to actually copy the files. But since \vault\ has put its own floppy disk cache in the right place, \vault\ actually only reads data from the hard disk during this phase. When the cache fills up (usually at the end of the disk for a Mega 2 or 4, or somewhere in the middle on a 1040 or 520), \vault\ actually writes this data out to disk. The three thermometer bars at the bottom show how much of each phase \vault\ has completed. They start out showing how much of the disk is already full, and end up at approximately the same place. Just from a glance, you can tell useful information from these bars. For example, if the ``Scanning'' thermometer has filled up partway and \vault\ is on to copying, you know immediately that this is the last disk because \vault\ left empty space at the end, and you know approximately how long this disk will take based on how full \vault\ has packed it. The ``Writing'' thermometer bar poses a special problem to \vault. While \vault\ is writing to the disk, there is no good way to update the thermometer bar. Every time \vault\ updates that thermometer bar, depending on which format floppy you're using and whether you're using FastFlop, it loses up to .2 seconds. I made a compromise and made \vault\ update the thermometer bar every eight tracks it writes, costing up to 2 seconds per disk, which I feel is almost insignificant. Using the option ``Set Miscellaneous'' in the ``Options'' menu, you can set the number of tracks \vault\ will write before it updates the thermometer bar. If you're using non-skewed disks without FastFlop, you should set this to 1 because \vault\ doesn't lose any time on these disks in updating the thermometer bar. If you format your disks in some way to accelerate them, chances are updating the thermometer bar will slow down \vault, so you'll want to set Max Tracks to a compromise like 8. The only way to tell for sure if using a smaller Max Tracks number slows down \vault\ is to try it. When \vault\ finishes, it now leaves the status box on the screen so that you can tell at a glance how much of the disk is full. \item When \vault\ finishes with a disk, it now rings a bell periodically, in order to alert you that it's ready for a new disk. It also rings the bell when it's finished with the backup. You can set the Ring Interval (the interval between two rings in 1/200ths of a second) using ``Set Miscellaneous'' under the ``Options'' menu. \item All data files of \vault\ now use a different format, although except for the help file, \vault\ 3.00 is upwardly compatible with \vault\ 2.01 data files. \begin{itemize} \item The help file (VAULT.HLP) is now flexible in format and allows you to edit it easily, and even add additional help screens without changing \vault. To begin a help screen, start the title line with a tilda character (`\verb|~|') and the help screen's name. On the same line, give the names of the help screens you want to cross reference this one with, separated by colons. For example, if this help screen is named ``Foo'' and you want cross references to ``Bar'' and ``Neat Bar'', the title line of Foo should be: ``{\tt \verb|~|Foo:Bar:Neat Bar}'' All lines between the title line and the next title line are part of the named help screen. The first line after the title line will be centered and is good for giving a title which the user will see at the top of the help screen. You may use up to 18 lines, not including the title, for the help screen. If you use fewer, \vault\ will fill the rest of the lines with blank space. If you use more, \vault\ will cut your help screen short, but will not crash. Currently, \vault\ supports up to 35 help screens, althought that is arbitrary and it {\em could} support as many as you have energy to write. \item The .VDF file format is also more robust. Each line consists of the name of the option, a colon, and the value of the option. A dollar-sign preceding the value indicates that it's a hexadecimal number. Options may be missing, in which case \vault\ does not change that option when it loads the .VDF file. Options may also be in any order, although \vault\ writes them in alphabetical order. If \vault\ finds an option which it does not recognize, it will tell you and continue. With the new .VDF file format, any version of \vault\ will be able to read any .VDF file created by any previous (or even future) version and make sense out of it, even though different .VDF files may have different options. For the experienced user, the .VDF file should now be easier to edit with a text editor because it's clear what every option is and how to change it. Of course, \vault\ still reads help files from \vault\ 2.01 automatically. \item The backup history format is also more robust, allowing \vault\ to be compatible with previous and future formats of this file. If \vault\ 3.00 is allowed to write a new backup history, it will leave a lot of blankspace on each line of the header with a semicolon terminating relevant data. This is room for expansion. On old backup history files, \vault\ 3.00 works just fine. Since \vault\ picks the backup folder automatically, the line ``Last Backup Folder'' has been changed to ``Last Incremental Number'', and \vault\ now only writes a number on that line. Thus, when using \vault\ 3.00 for the first time, you may see a bit of garbage on the line {\em after} the semicolon. For example, in a history file with the line ``{\tt Last Backup Folder: EBACK.004}'', after running an incremental backup with \vault\ 3.00, you will see ``{\tt Last Backup Folder: 005;K.004}''. Don't worry about the garbage after the semicolon; \vault\ ignores it and will work just fine. \end{itemize} \item You can now halt \vault\ at any time while it is backing up by holding down Control-(left)Shift-Alternate-Undo until it halts. Unfortunately, \vault\ cannot give an alert box to confirm this but halts immediately, so halt \vault\ with caution. While \vault\ is actually writing to the floppy disk, it cannot ``see'' that you've halted it until it pauses to update the ``Writing'' thermometer bar, so it may respond sluggishly. Since \vault\ halts immediately upon seeing your request without even dumping any caches, the disk it writes may or may not be a consistent TOS-format disk. If \vault\ didn't start the ``Writing'' phase or spin the disk during either of the other phases, chances are that the disk is OK. \item \vault\ now takes command line arguments. When given the name of a {\tt .VDF} file on the command line, \vault\ will load the given file instead of {\tt VAULT.VDF} when it starts up. This way, you can use the {\em Install Application} feature of the Desktop to start \vault\ with the {\tt .VDF} file of your choice. To do this, click on the icon for \vault, select {\em Install Application} under the {\em Options} menu, and enter {\tt VDF} as the document type. Then, when you double-click on a {\tt .VDF file}, \vault\ will run with your selected file pre-loaded. \end{enumerate} \section{Bugs and Pitfalls in The Vault} The following are known bugs or problems with \vault\ 3.00. They {\em all} existed in previous versions of \vault. \begin{enumerate} \item Do not back up from a floppy disk to itself. \item Do not use dual mode on a single-floppy system. \item Do not format disks in dual mode. \item Be careful of {\em Archive Bit} backups. In order to make subsequent Cleanup Incrementals work correctly, \vault\ must change the date on files which were too old to be backed up because of their date but were backed up anyway because their archive bit was set. There is {\em no} way to avoid this problem, because TOS really needs two archive bits -- one which you clear when you make an incremental backup and one which you clear on a full backup. \end{enumerate} \section{The Key} {\em The Key} has not changed since the previous release of \vault. \vault\ 3.00 is completely compatible with the old version of {\em The Key}. \end{document} The old incremental set is then no longer needed and should be kept idle until the time comes for another cleanup incremental. Rules for Safe Backups ---------------------- You must remember these rules about safe backups: ~ Do a full backup every once in a while, rotating full backup disk sets. ~ Do an incremental backup every day before you turn off the computer. ~ Back up your hard disk before you endanger it by running a new untested program. ~ Keep your backup sets well organ $ H LThe VaultThe VaultHere are icons to use with GEMINI to represent The Vault.Put them in GEMINIIC.RSC in the appropriate places.(Old-style icons)The Key*.VDFLynxwareThe Vault(New-style icons)The KeyLynxwareThe Vault*.VDF ?p<0l``gddde eheh@ eΈd d@ddg`̐`cg|x@UUUV@@@@@@@@@@@FXGfGfGf@@@@@@?? ͲMmxmm`M MMxmmmMͰ ;}=@@@O@ @0@@@@ @8@ @@@@@8 8p@8p0`3333с3Ё3337?900?@UUUT@@@@FXGdGdGd@@@@@@/@0@8@ @@@@?@@@@@@@@@@@@?? ' $ $ $ $` $ $ $` $ $ %'9@ ?????????????????L $ N.@ N  N  N  N  N NL  N N L  N; N N(89r3  N( N'   N'  6 N'    XN  zN N N iles except the '.BAK' files. Each new mask adds to or subtracts from the set of files specified by all preceding masks. For example, *.* !TEST.* *.C starts with all files, then removes those matching 'TEST.*', then adds back all files matching '*.C'. Note that 'TEST.C' will be backed up by these rules. To select the directory to back up entirely with the mouse, click on the 'Select Starting Directory' box. The standard file selector will show and you can change the directory displayed in it. When the directory you want to back up is showing in the file selector box, click on OK. The parameter box will reappear with the directory name showing on the line below the buttons. The history file will be written in the starting directory. The parameter labeled 'Directory selection masks' lets you specify which subdirectories of the starting directory above you want backed up. If you want the starting dir