NNNNNNZ*~p NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNO`  @`! #@%`')+-/1 3@5`79;=?A C@GIMOQ S@WY[]_a ce`gikmq s@u`wy{} @` ` @ ` o  @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa  !AaO`  @`! #@%`')+-/1 3@5`79;=?A C@GIMOQ S@WY[]_a ce`gikmq s@u`wy{} @` ` @ ` o  @ ` ǀ ɠ @ ` ׀ ٠  @` @`!Aa  !AaA135ARCSHELL wBIT wEDESKMGR2 wUSCRUNCH  wnSHADOW wSTARWARS wV-KILLER *wLEES DITMwH. w.. wARCSH196PRGw*`ARC TTPw`0)` v196 < 8#Z o#ZO //Bg?<JNA 3Z#Z3[KX8<a)?<NNTO3[J@f |O0<a+`) ?<NATO<AAh |:^D^_aaa`aD`J^bbDbbcX]E ]F]G_DG;GM:^E:^:_:^:_E:a:a:a:`:aE:`:b:bE:b:b:c:]HAYqCaEaGaI`KaFM`0<QAYqCbEbFGbIbKcfAYaC^FfBg/<_?<GNAPOA_Ch"E]IfJ!|\#ZAYvfA_G_FI^K_fSKSLSMAYjfAYqfK5H:<a)8 9gAJCM'fACLfAC00<"$YQa(J9gACbfp99^g6^Đ<@?Hy_?<GNAPOA^C_fJ CYjfp99_g6_<@?Hy_?<GNAPOA_C_fJ CYqfB9G y[gD31n#r5T#s5l#r; #s;T#r@d#A6Hz+?<&NN\O*yY&M,yYIUz ge`2SM M fQJ( f #Z"¼ AUHg"f` 3[`3Z#ZMLa%jM^Da%j(|Yq*|^:<Q(|V(:<#V<Z#VEZ#^Z#\TZa' y[f$J9\Tg$*|^D(|^a%(|\TfA^CLE\Ta`>AYbCL0<f*QA^DCLA_fJ!AYafHz$?<&NN\OJ@k3Z#O9DJyZf&.| /9Z/9ZBg?<JNA 3Z yZAJgbCUx0<  Q#]GZpS@"yZEUxGUI\tJg QBB A]GA_fJ!\*.*BpA]EJgR@`]D*HSMA00< "XQa$AU10<a% y[gJ y[g@A gC00< $YQ`63Z3[a%`! yZB( y[fX]E63[`V]E6s3Z3[`?< NMTK9:<rg: `:(RAQHy+"?<&NN\Oa%a# #5HZa&#[&[.#[*[2ByZJyZg ByZ`!#5HZ#[.[&#[2[*a&?< NMTO>p9G;<Ae<Pb9^gn"|Af6^G;3[V#5H[#h[6#p[:a&`.A^:*H|@?/?<GNAPOJfJ%IYjfp9GM<Ae<Pb9_gn"|Af6_GM3[V#5H[#h[6#p[:a&l`.A_:*H|@?/?<GNAPOJfJ%IYqfA["> PgB Pg< Pg6 Pg0 Pg* Pg$ P g P g P g P g Pg P f fH`b Pf#YZ>A[V01|Bha&AGCg97f"fByZB9G8 8 `f3Z8 8 #YZ>#5H[A[V01|!y[&!y[*a%`ByZ Pg< Pg6By[$ P&g P(g P)g P'f 3[`By[a$`bBy[$3[a$a!<3["[CHv y[fAOKG;` AOKGM0<QA9"H0<Qp|A3[ 3[#9PZa"a#By[By[ a 09["||A y[fA^KYj:<G;`A_KYq:<GM(H:<@?/?<GNAPOJfJ$Q#5H[3[V#h[6#p[:a#3[Va#~` y*["g y&["f2aa#A`Za!a"By[$By[a"a` y)["faaan#BZa!xa"bA[" Pg Pg Pf#YZ>A[V01|Bha#((|W:<#WZ#WZ#bZ#\ZaJ9bg y[gD;D `AbCfa@`6a8#B[3 [V#[6#[:a"$`By[$By[a! y["fa` y["ff(|W:<#WZ#WZ#bZ#\dZa y[fJ9\dgAbCLE\da ~`r y ["fn(|X:<#X'Z#X1Z#bDZ#\Za y[f&J9\gCKAbDCM'E\a `AQ0<a. y[g<#YZ>A[V01|!y[&!y[*#B[a!*`aAC00<"$YQAJCM'fACLf?<Hyh ?<=NAPOJk.Bg?/< ?<BNA Hyp/<??<?NA v196pgaz??<>NAXOAQ`RHy/<??<@NA ,??<>NAXOa@JjAQ`Jy[gBy[`aAQQ0<a y[g(|Xf:<#XzZ#XZ#cZ#\Za y[fZJ9\gPAcCh E\aB3[` y(["faaa#;ZaazBy[$By[aA[" Pfa`~ Pg Pg Pg Pg4 Pg P g P g P g`(|X>:<#XSZ#X]Z#\Z#bZaJ9\g> y[f2AbCfE\a@By[ AfJfYHCZ0<fQ3[ `AfJfYHCZ0<f|QA\CNfB9Na@#EZaJa4By[$By[a y["gpANCggR@`g#gZ3[ ` #1TZ?<NATO3fdBgHyff?<GNAPOAbCff !\fB)p9bĐ<A??<NAXOHyf?<;NA\OaxJy[ g KX8<aHHy1T/9ZHyf?<?<KNAJy[ ga8KX8<aKZa?9fd?<NAXOHyff?<;NA\O#ZZ>By[V3[XB[ZBy[^a#ZZ>3 [XaJy[g,:9[#YZ>3[Va#ZZ>3[Va`a#@pZaaxBy[$By[aA[" PgaLa4p9JT<@?Hyg?<6NAPO$9g&9g$9gaT EgaCT+a\a |T0<a`\/ IZ"4<0eR`XLRJQ<0(_Nuprxҁрd҂dRQNu/ 0< Q"_Ag0< 0f Q0NuSHQNuaj#>Zata^By[$By[aA[" P ga2 |TB0<a y[gaa@a#@Za@aBy@l9?[g 3Z`3ZzO<<6<aLJ@k09?g6<a4J@kH#@[3[V#YZ>aI[VK[)m09@llXy@l9|9y@n #YZ>9|aLL?Ql0<ApBQ<< ><:<aJ@k:<aJ@kt9?g><aJ@k\:<aBg9?g?<`?</<Hyp?<NN:<<<><a\a9?[g0<AT`T0<BT`D?/`(|Wt:<#WZ#WZ#\Z#aDZa< y[fAaD0`ZaxabBy[$By[a y["g@ y["g3[B9cB9c#c34#c3P#=pZ` aAI0<  Q#=ZaaA`CcEga\AaCcEgaFAgCIf#YZ>A[V1|!y[&!y[*Jy[g`0#=p[an3[VabaDaPa2By[$3[a y["g, y["f\Aga`@0#=[aAgapKcar:AgaZJEf9<[gbAhCJEK.0<Jg0 .g QJ`  QJ0<JgQBBazal#@ZaajBy[$By[a y["fJy[gp#=pZaJ`^J9K.gAJCK.Jf2Jf4Jy[fa#=Za`#=pZa`xf`CcJf !\fJAK.0<  ggQ.`.  fRH`fJy[fa#=Za`#=pZa`paTHyc?<ANA\OByZ//9Z/9Z??<?NA Jj"??<>NAXOJyZg??<>NAXO`*gf ??<>NAXO~JyZf0BgHyc?<NAXO`z<3Z/9Z/??<@NA gDJGg ??<>NAXO??<>NAXO/9Z?<INA\OAR0<aHyc?<ANA\O`0Jgf??<>NAXO/9Z?<INA\O?<ONATOJ@ga`0(|V:<#VZ#WZ#]Z#aZaJ9]g y[fAaCd4E]aAgaKd4af9<[f2A] *g ?gJf`AR0<a y[fzAaCdEgaAS$0<  QAgCS$Jg`9<[g$AS0<a y[g y[fa Hyd?<ANA\Oa |?<ONATOJ@gt`B9]$(|W:<#W,Z#W8Z#]$Z#aZa BJ9]$g y[fAaCdEe$f !\fRIA]$fA]$CI EIS0<Jg0 .g QJ`  QJ0<JgQBB#<Za aBy[$By[a y["gJ9ISgAI CISJfJf `гf`Ce$Jf !\fRIAIS0<  ggQ.`.  fRH`fa Hye$Hyd?<?<VNA a `ba a By[By[K]EA0CZVp $XfQ`HCZb#Z97{gb97gs97gw97gn97g3[98#go98kfq97g J9GggIG:<JgQ #Z9G;|߰9^g |^:"|Yj:<Q(|U:<#UZ#UZ#^Z#\tZa y[ga `J9\tg yZJg .fJfSH0<CYlQ(|^a(|\t:< JgQ96[f96sf95f`96f >97g$PR9DgT`N:`(|VN:<#VdZ#VqZ#_DZ#\Za y[gNBZJyZg4ByZJy[nA g(C00< $YQ`aad`J9\g(|_Da(|\:< JgQ` #Z9GM|߰9_g |_:"|Yq:<QBy[(|U:<#VZ#VZ#_Z#\Za y[f J9\f3[96+f (|_:<?JgQJy[fa(|\:< JgQJy[g96f96Cf`a0a"#DZa 6a By[$By[a pA[" PfJyZgXa` Pg| Pfa`B M \fJC\t0< .g JgQB fJ,HaHyY?< NA\O/?< NA\OHyY?< NA\O/?<9NA\OJjAS]0<a0`K]EJfJ%AYq0<Q3[`AP0<a y[g| y[g3[a#Z yZ"|`D0<?  gQB,|`DaBgHy`D?<=NAPOJ@k 3[ |gpa ygf"?9[?<>NAXOBy[JyZf`Agp a~k |Zpap9ZZZZ9ZZZZ 9Zм ?<?9[/?<BNA Jk "9gSbBy[?9[?<>NAXOAPEPX"H&J0<   Q |g0< JgQ96gAPD` |P0<an y[g y[g*yZ |g0< JgQB*|]EBJgR`]D96+f Jy[faHy]E?< NA\OHyY?< NA\OHyY?< NA\OBy[96[f 96sg\97fR |\t"|U:< JgQ96g8<` 8<3[*|Ua<<*|YaQHyYHy]D9CKgHyM'`HyLBg?<KNAHyX?< NA\OJy[gFBy[aNAP0<a y[f$A^Cd4E\taHyd4?<ANA\OJy[gJyZgJy[fHyX`HyX?< NA\O#YZ> |[V0#1|1|1|Ba09[f&f yZ(g(f3[`(|g 3[`3[VBy[\ajBy[96+fJy[g *|Yaa695f:95f095f&95f95fJy[gZa`:JyZfH*yZ`9[gKX8<aJyZg,ByZ yZ!| yZBh.Bg/9Z?<1NABgNA xV08TS@"X g Q09[6<Aa$Aa|fRCAaAa QNu02||IHhA0Nu#[3[V#YZ>`&3[V`By[V#YZ>`aJy[f yZ 1EhAZJg#5,#YZ>#F@[aA[V!y[!y[CF@hi y[fhsis` h;i;VhVh #YZ>BP1|aV#YZ>A[ Z!yZ!yZ!yZ a$aJy[f(yZ(Zl9yZ`#YZ>#Z[a#[[& yZJy[g8y[&h y[fy8[(h8`.y[(h`Yy[(Yh y[f Yy[(Yh#[[*Uy[&Uy[(\y[*\y[,Jy[ fBy[ ad#YZ>A[VBP1|!y[&!y[*#Z[` #YZ>3Z[V#Z[a3[["Nu#YZ>A[V0[ BB!y[& !y[*`#YZ>A[V0["Bh!y[&!y[*1y[$ 1y[#Z[`d#YZ>aXI[VK[)m 9[6lH@l y[z:)h 9[:l H@l#YZ>9|"<Z> <NBNu x TOPDf#Y# YNu x fJ.g#.YNu5555566+6C6[6s567{777778 8k88#677G;GMD D#D;CKDD<[[[V[[\$ctvlprxdfumaG FFFFFFFFFFFqqTOSTTP              (             $   $  $ h  8   *  "         *,     Z                 T(     2"$     <                 J   0   (0$      $   B 4$            "        4*             $      0J     **"L   *            PH000000000000H000`00H0000000000`^,0*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.?<?<Nu>Nv?|BWNu>NvXON" ?Nqt?<LNANVB. nlHyN[N.8N[D.iN[:.N[0.N[&.N[.N[.N[.1NZ.UNZ.uNZ.NZ.NZ.NZ.NZ.NZ.CNZ.jNZ.NZ.NZ.NZ.NZ|.(NZr.5NZh.ZNZ^.NZTXONOLp`pd?p?NSXO#HyNSXO-@fHyNSXO-@ .g>//9NY/yXONYXO=@S@0@ \g yp\HyNU./9NYNPOp=@0.nlH @ /NQ*XORn`Hy+&Hy n /(NP>/y/|.NYv/||/|+&.NP n -h ng>H?HyNS\O g0.g nH?.H?HyNPPO nP` n Bf p3` n Wf By` n Hf p3` n Nf By` n Of p3` n Gf R# ngR`S`^ n Sf p3`J n Kf p3`6 n Qf p3`" n -g /gH?HyNO\OR`.f HyNOXO0.W@36p?096fp?`?96NQ@XO#2p=@0.nl$W@H @20.H"@ Rn`Bn0.y6l&H"@2 Q @f ?.NTO`Rn`.H@A @bH0@^ PN` .Ffp?`Bg .Ufp?`Bg .Mfp?`Bg/92?96N `/92?96N`z .Pfp?`Bg/92?96NPO`Xp3/92?96N`TO-@Bn0.nlZH @ /HnNT4POp\?HnNS\O-@f0p/?HnNS\O-@fp:?HnNS\O-@fA-HRp=@Bg0.H @ /NL\O-@ gBnRn0.H?/.NSB\O-@0.H?/.NS,\O-@/./.NSPO0.S@H&@HnNSxXOR@?NO>TO&Hn0.S@H @/NS@PO0.S@H @ BgB`R0.g$09g0.H @ /HyNS6PORn`0.g?.?.?././.?N=@0.g 0.fp`B@=@0.g2Sn0.H @/NNXO0.H @/NNtXO`/.NNh.NN`XO0.g09g HyNRXO&_N^NuNVBn0.S@no0.R@=@0.nlH @/0.H @/NQPO0o0.H @ -P0.H @ 0.H"@ 0.H @ 0.H @-P0.H @0.H"@ 0.H @ Rn`BRn`"Bn0.S@no$0.R@H @ /0.H @ /NQPO0gbHy+&0.H @ /NPPO0gBHy0.H @ /NPPO0g"Hy|0.H @ /NPPO0f0.H @ /NLXO0.H @/NLXO=n0.S@noF0.H @ 0.R@H"@ 0.H @0.R@H"@ Rn`Sn`Rn`Hy+&0.H @ /NOPO0g@Hy0.H @ /NOPO0g Hy|0.H @ /NOPO0f00.H @ /NKXO0.H @/NKXOSn0.fB@`zBn0.S@nob0.R@H @/0.H @/NO@PO0f00.R@H @ /0.H @ /HyNG< Rn`p?N=$TOBn0.nl2?.?.H @/0.H @ /N Rn`/9lHnN LPO0g*/9vHnN/n.v/9lN `B9z/9vHnNzPOp?N=TO0.gTBn0.nlFH @ /NnXO0g*09g"0.H @ /HyNNdPORyRn`0.N^NuNVBnHy/.N^4PO-@f$09gB/.HyNNPORy`(/. HnNMPOBBnHnHn/.N 9lg0/N]vXO-@/9lHnN PO0gHnHnNMVPO0f09g/. HyNM/|zXON]XOp?/./9lN\ `j0.fb09g/. HyNL/|zXON]VXOBg/.`0.g/.`09g/. Hy(NL/|zXON]XO/9vN\XO-@p z/9vHnN POHn/9v/.N!z/n POHnNKPOBg/./9vN[D/yv\OHnN POp?/./9vN[/n\ON\.XON^NuNV#8N^NuNV 98g* @f #8 y8R8H0.4@`0.N^NuNV 9g/Hy@Hy?NAXON^NuNV0.H?NBBTO-@Bn0.nlH @Bhp\?0.H @ /NE\O-@fVp/?0.H @ /NE\O-@f6p:?0.H @ /NE\O-@f0.H @ S-@0.H @ .R Rn`VBgN3TO0.g/9lHnNPO0gBnBn0.nl:H @/HnNPO0gp=@0.H @p1@`Rn`0.g$?.0.H @ /HnN `vp?/./9lNTd`/9lHnNvPO0g?.Hy:HnNj `BgN3hTO09gDBn0.nl6H @0(f"0.H @ /Hy;NDPORyRn`/.N@lXON^NuNV00.g(/.Hyz/9lN5D/|OPOND~XO`/. Hn4ND0PO n gRn/NNRXO @f/. /. NN>XOz?NNJ\O9zmH @ n n (H@g09gHy+&HyN9PO09g09gHy+&HyN9PO09g?.Hy&NA\O n (H@f/. NMXOzlHy+&Hy;N9TPO9zgH @ oF/. p ?p?HnNO>/|+&POHnHyXNA:/|PONA,XOp?NV TO9zH @f./. p?p?/.NN pz"n I!i`/. p?p?HnNN Bn n l0n"NRn`Bn nl, n (!@pn0@p( nѨRn`BA.B@.HA n1@BA.B@.HA n1@BA.B@.HA n1@Bn nl, n (!@pn0@p( nѨRn` n0(ybyf 0(yc n33BypN^NuNV/. 0.@H?NMb/n TO0.@H?NML\ON^NuNV/. .?N/n TO .H@H?N\ON^NuNV/. p?NM/n TO9zH?NL\O9zg/. p ?p?/.NM/n PO n/(Nt/n XO n?(N,/n TO n?(N/n TO n?(N/n TO n/(N$PO n0(ybyf 0(yc n33N^NuNVn . g/?.NL\O @f HyN6 XON^NuNV=|p0.c0.=@?.N9TO-@ .o^/.p0.e0.?p?/.NK =@/. ?p?/.NLZ ng HyN5XOp0.`/.N9NXON^NuNVBB-@-@Bn0.nlH @BhRn`/. ?.N\O09g09fHyN=.XO09g Hy+N=XOHyFN=XO09g HyRN09f HnNDXOR .Ѯ .Ѯp?/./9lNJ `BgN)TO09g409f,HyN;vXO09g HyN;bXOHyN;VXO09g/./.HyN;8 09gT .g2Hnpd//.Nb/@XONb.PO"pd/HyN:PO` Hy N:XO/.HyN:POHy N:XOBn0.nl6H @0(f"0.H @ /Hy"N:PORyRn`N^NuNV09f/.HyfN:jPO` n0(HH@=@0(H@=@0(@=@0(HH@=@0(H@?=@/(/HyjN: 09g9zHS@ @b@H0@ PN`0BBA nHAGRpnnpn2.a=A nm nR00.@=@Qn0.g 0. n09yHyf@-|=y0.Hѹ/. nRH?N\OSnfBy09Ȱyn 09o09o@-|09=@Hѹ0.Sn0g/. nRH?Nz\O`By09gr 3p4hS@3By`~Ry y f 3`bp49hS@3`N09^@H=@Hѹ09o&0.Sn0g/. nRH?N\O`By.N^NuNV-|09n09yl09Ȱyo09Ȱyo.Ry y f 3`p49hS@309or 3p4hS@3ByBy09yl./.N(XO=@ @g0yHHRy`09np`By29SA09HA3=y=y0.@ n-HnRB@4.h=@pBnpB=@ nm nRB@4.hnPnQn0nBA nB@A4.hn09y0.@N^NuNVByp##BByp##r 3p4hS@33?HycN0PORy` nR0.=n nm* nR"y0.H @ =P`"nR yB@=@/. S nB@?N"\O b09=@yl,H @ 0 y0.0.R@3=n`N^NuNV0. n@@H@B@H@-@Hn/.NWlPO-@N^NuNV0. n@:@N^NuNV0. @=hg=n`0.N^NuNV?. ?. yNXO=@ @f0.`l?.NTO=@@e@=@й-@ ng"Rn0. @fBn-y`\`0. @1n0.N^NuNVp?Bg/9NVPOBn nd?.? N^NuNVBn0.nlp\?0.H @ /N*\O-@f>p/?0.H @ /N*\O-@fp:?0.H @ /N*j\O-@ .g0.H @ .R Rn`tN^NuNV/. N:\XO-@09f09gHyN*.zN;.XOB9BBByNސN09g>N/.NXO=@ @gR?N2TO/. ?.N\O`/. N`B/. NXO/.NXO=@ @gR?NTO/. ?.N2\O`/. NXO-@N-@`Bp-@-@-@BgB/.N8 n1y n!yB9Nݮ09g(09g /./././9HyN)b 9氮nnn09gHyN)..zN9XOpzBg/./. N86 ByB@H#/.NXO=@ @g/. ?N\O` n1y 9 n!@ n!@` .lbl\09g HyN(XOpz n!nBg/./. N7 /.NXO=@ @g/. ?N\O` .lR09gHyN((.zN8XOpzBg/./. N70/n /nTON PO n!@`B09g09gHy`HyN'XO09gp `pz n!n09g8 nHhpd/ n/(NOn/@XONNPO"pd/HyN'hPON^NuNVB@9 @bH0@ PN`p/.NXO3`09 @g @gp3/.NXO3yf ylRy`09 @g @gLp0<`Lp09`~p09`*HyNfXO`B9B@`p`p09N^NuNV/.N2fXO=@ @g??9NXO3R0.N^NuNV/. ?.NP>N\ON^NuNVx-|xB|/. ?.N\OBgNTO0.gf/9lHnN$PO0g|HnHy" n /N/@POHnN(PO0g/. ?.HnNR `p?/./9lN4`/9lHnNPO0gHnxp?HnN `BgNTON^NuNVP/9HnTN$POHn/.HnTN p.?HnN$\O-@PHy%/N$PO0gdHy*/.PN$PO0gPHy//.PN$PO0g<09g/.Hy4N$PORyp? n/(/9lN3 `09g&HyZHnN4PO-@gHnHy\NHPOHy}HnN4ZPO-@fHnHyN"PO09g/.HyN$0POHyN^XO-@/././9lN/nPON4F.HnN Gl60HA0.nPdRn0HA0nRG`0.R@=@B.~ Gl<0HA=P0.nd0g0HA0p@RG`.f` no$~ Gl0HAp00RG`.N^NuNV/0. U@H>0m0. S@??/.NPOSG`.N^NuNVH0. HR@>0. H @<nnnl*0R@H @?0H @?NfXO0gRG0H @??NJXO0g:0. H @0H"@00H @0?.?/.NVPOLN^NuNV0. HC0.HA0Qcp`N0. HC0.HA0Qf&0. HC0.HA0QnB@N^NuNVH >< n o n=PSn 0. H"@00. S@?Bg/.NPO n=P0H*@0RG0;n;n0.HC0.HA0Q:0.HA?0.HA?N4XOR@;@0. S@?Bg/.NPO`4 n3L N^NuNV0.n o0`0. N^NuNV/~ Gl0HABPRG`.N^NuNVH0. HA>0. HA< GfL FfF0. HA00. HArn0<4hy0 nnVB@`T Gg$p4.hF@y?0R@?NbXO @g( Fgp4.hy?0R@?N:XO @fpLN^NuNV/. 0.@?N/n TO0.@?N\ON^NuNVH ylB@` 09@=@/.?N\OBn=y0.nlv0.HA>0.HA< Gl0R@D@`09G> Fl0R@D@`09F</.?N./n>N"\ORnSn`0.HT@HLN^NuNVBnp=@09nmF0.f0.`rn094hn0.29i3y0.@`09orn094hn09n yfBy nfp`R/.N6XO3 @f309HA309HA3`N^NuNV/. N0XO-@/.NXO=@ @g/. ?N\OR` .N^NuNV 9'#, o& 9-@ f -|`&Hn/9`Hy 9/NAPO-@ .(o#(`8B(?<\?<Hy+NBPO3"p3&/.?<N\ON^NuNV/=y=y-|0.m0.@ n-Hn0nBA0.4.hA>0BBA nB@AGRpnnpn2.a=A nm nR00.@=@Qn0.g 0. n09yHyf@-|=y0.Hѹ/. nRB@?N \OSnfBy09"yn 09&o09o@-|09=@Hѹ0.Sn0g/. nRB@?N\O`By09&gr 3p4hS@3By&`~Ry y f 3`bp49hS@3`N09^@H=@Hѹ09o&0.Sn0g/. nRB@?N\O`By.N^NuNV-|09&n09yl09"yo09"yo.Ry y f 3`p49hS@309&or 3p4hS@3By&By09yl*/.N XO=@ @g0yRy`09np`By29SA09HA3=y=y0.@ n-HnRB@4.h=@pBnpB=@ nm nRB@4.hnPnQn0nBA nB@A4.hn09y0.N^NuNVByBBy&B(p##',r 3p4hS@33"?<\?<Hy+N>fPOp 3p3$N^NuNV09$gR3 By4#'0 0lRy4 90#0`py434By$`FRr29 p0.Ё#00.494h4@=@HA+ 0fr0.HA3 `0<'n=@0.fp=@0.nln'0.HA+ 0g0.HA+ o`0.HA+ l/. ?9 N\O3 09"yl60.HA09"Ry"00.HA+ 0` 9,m /. NtXON^NuNV/.?9 N/nTOp?N\O 9N^NuNVp 3By&r 3p4hS@3=|0.m*H @BP yp.@Sn`3"/.NXO=@=@ ng/. H?Np\O-|/.NzXO=@ @oh @fF=|0.mH @BPSn`p3&3"/.N.XO=@ @g=n0.y"mPy"o409g"HyN ?y">HyN PORy` nR0.=n nm* nR"y0.H @=P`"nR yB@=@/. S nB@?N>\O b09"=@yl,H @0 y0.0.R@3"=n`N^NuNVHy.|Hy+&NPO0gHy|Hy+&HyN Hy|HyN` Hy+&N0XO0gHy+&HyNPOHy+&HyNPO0gHy+&HyHyN ?9?9Hy+&NɠPON^NuNV0. 4.@@H@B@H@A<0@@4@N^NuNVBgN&TOp?B/9lNj/yl\ONXO-@BgB/9lNH /9lHnNXPO0g|/9lNXOЮoHnHyNPORy`NHnHyN/|zXON ^XOHnB/9lNb 0gRy`Hy,NXO`r ylHy2NvXO`$ yfHyF`?9HyZNP\ON^NuNVBy8 n#:By6NJ9zHS@ @bH0@ PN n098hg,09f 09g/.HyNPORy`B@`|/.N&XO=@ @g/. H?N`\O`/.NXO=@ @g/. p.?Nd\O`/.N@XO/.NXO=@ @gT/. p.?N0\O`BgNXTO/.NXO=@ @g"/. H?N\O`BgN*TO/.N^XO=@ @g/. p.?N\O`p?NTO/.N*XO=@ @g/. p.?N\O`/. /.NۼPO`/. /.NR`09g$/.HynN ~/|XON pXORyp? n/(/.N~ pN^NuNV?.?98NXO38/. ?.N\ON^NuNV096J@g @g8?HyN\O`Z nf p36`H/. 0.3>?N`0.gSng /. ?9>Np\O`/. ?<N`\OBy6N^NuNV/ 9:fp` S:/. n hNXO>?NTO.N^NuNV/.NXO=@/.NXOH=@n@N^NuNV/ pc3@/.NXO3D0m yDm HyNXO33Bn0.yDl:HG/.NhXO60.HG/.NLXO6Rn`&_N^NuNVBn0.mhRy@09@ @oF/.NXO3B @fp`\By@29BAH0.HЁA=P`29BA3B`0.R@D@=@ @fp`0.=@0N^NuNVp ?NATO g p?NATO`HyHyN 0/|XONnXOp?NATOHy8HyN PON^NuNV-np:?/.N\O-@g: @(H=@R @'ona`nA0.m @l ?p?NAXO ng /p;?NA\ON^NuNV/. /.BgpV?NA gfHn/.N(PO0gp`RHy:/.NPO-@ gHy=/. NPO-@ g/././.Nˤ/nPON)XO`B@N^NuNVp?Bg/. N1POBn ng( .g" nl0.Rn0@ "nR`p =@ ng" n l0.Rn0@ "nR`N^NuNVtB.x/.HnxNPOp\?HnxN\O-@tfp:?HnxN|\O-@tgRt/.t/.NPO .tg @B`B.xHn/. NPOHn/.N PO nBHnx/.NBPO.gHn`Hn/.N(PO.gHn`Hn/.NPO .N^NuNV-n ng0"HH0@Ig nH?N TO nR`N^NuNVHy@HyNj?n?n?n TO/.HyNH/|F /|\ON2PONp?NTON^NuNV/ .g /NXO0f?<NLTO-@-n&nRp?NATO=@@A nRp:Bg/.pG?NAPO .&_N^NuNV09fVp/?NATO#rHyFp?NA\OBg/.pN?NAPO fXp ?NTO-@Hyd/NPORy .`@pO?NATO fp ?NTO-@Hyd/NPO`By/9rp?NA\OBN^NuNVH0.. Hn/NPO./NW>XO*@ g (MJgBS` L0N^NuNVp0. /p0./NUPON^NuNVH8&y g.*[ g((nHHAfJgR`Jf -=f `BL8N^Nu o0/BAgJfBNu NuNVH8..P b.d.9./NxXO*@ Mg`Jf&M ##`& yf 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/NVXO/.NW>XO*@Sy L0N^NuNVp0./NW>XON^NuNVH .Y*@Jf4~0GJg 0RG0@H?p?p?NM\O`NtL N^NuNVH *nJgR`9H |2<`XHXW PN`\9HpA`H9Hp!`R99HR9`"p@`pa9HR9Nvh<~0H H@@00H <SGf .L N^NuNVH0*n(n nf,Jg Rn0.?/ R/NYb J@gp`H=@g,H>0. |:2<`XHXW PNоng`JnfJf`Jng` nfS`JngJG`H=@Jng n]g| n\f -fH=@0.Gg -fR LH0AnnmJg ]fJGf>`2Jg0S?./ / NYb J@fJf` H=@f6B@L0N^NuNVH0*n(n ..Jg8S`L0N^NuNVH8*n f/. NW>XO`J f/ NXFXOB` . \S@, e Y(@ L @.(e"  c( Ќ(@ @( ` Ќ&@ *gFڇ c>  c( Ќ(@ (` @( @Ќ(@f#`/. NW>XO(@ gD S// / NZ / NXFXO L8N^NuNVp0. //.NZPON^Nu o"H0/Jf gfBNu Nu"o o JfSfNu"o ofJfHHNu"o o fNu o"Jf S@Nu0/0@IAg@NuNVHnHyzN\PON^NuNVHn?</.NoT 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 |d2<`XHXW PN`4 nT=P0.l0.D@=@p-p ??./ N`xPO*@`p ? nT?`p`p` n-PX .l .D-@p-p ?/./ N` `p ? n// N` *@X`p`p`/ ?./.?NaT *@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//. NPO-@g$p0//. N*POA-n ` n g` L0N^NuNVpL?Hyp?N|POp?NqtTON^NuNVNaTN^NuNVHnHy`NaPON^NuNVHn /.NaPON^NuNVHn/.N\^XO?/.NoT Hn HnNaPON^NuNVH Bn n X -P nRH> |:2<`XHXW PN`Z/./.NhXO<?Nh\O Ff`4/. n hNXO<Gg/.?Nh\O` nRH> @*fp`B@=@0.g nRH>Bn G0m( G9n"0. G@0=@ nRH>` Glfp`B@=@ Ghfp`B@=@0.f0.g nRH>0 |2<`XHXW`HyHyFNj(PONTd`6Rnp `Rnp`RnBn` Rnp=@Hn?.?./.Ne -@0.g0.fb0.g n X P `0. n X P0.0Rn`0RnHn?./.Ng -@-A0.g0.f0.g n X P .". !A` n X P .". `A-H nRH> @^fp`B@=@0.g nRH>0g G]g nR` nBA-H/. n hNXO<`D0.fp=@/. n hNXO<-|[`/.NhXO<-|\p=@0.f n X *PBn FgH?/.NV\O fp`B@nf*Rn0.fSnf|`/. n hNXO<` Fg/.?Nh\O0.g0.f GcgPB`J0.f n(H@gp`0.L N^NuNVH>. <.B0o F o| nBP/.NhXO: E-fp`B@=@f E+f/. n hNXO: nRP n0FnP0fL E0g~ `B/. n hNXO: nRP0Fn$ Exg~`~/. n hNXO: nRP n0Flf0@W8 @ l0@78 @ l0@08m D nGm Gf0 .f*0@x8f 6HHn0H/NjPO-@`z/.?Nh\O0.g .` .DLN^NuNVH |K0. o n op =@ nBP n0n l/. n hNXO> |^2<`XHXW PN`|0fx nSP nRP`0g Ff`RF` Fn(|`0g Fg Ff|` Fm6 Fn0|` F` Fg Fg Ff|` Fg Ff|`/.?Nh\OBHnN~XOL N^NuNV//. n hNXO> @ g G g G g0.N^NuNVH >. *nSGo"/. n hNXO< @g 0 @ fB Ff fB` .L N^NuNV/ *n/ mNXO*_N^NuNV/ *n pf&+|i,+|iBm -;n0.`> qf +|iZ` rlf +|i` of +|i`p*_N^NuNV/ *n+|p+|qBm -0-*_N^NuNV/ *n+|q+|s  ;@ o -;@ -0-*_N^NuNV/ *n+|rl+|szBm -0-*_N^NuNV/ *n+|o/N\^XOD@;@ 0-*_N^NuNVH >.*n / mNXO/ ? mN\OL N^NuNVH0*n(n g/ H? lN\OR`L0N^NuNV/ *n / ?. mN\O*_N^NuNVH0*n(n0. =@,g/ lNXOSn ,f,f 0.gL/ lNXO> @g:Sn`?./ ,H?Nw@PO>on`0f,`,0. n L0N^NuNVH0*n(n0. >,g / lNXO ,f,f&0g/ B@? lN\O @gSG`0g$B@`$?/ ,H?N|POGg,`0.L0N^NuNV/ *n-g / mNXO/ NtXO @fp`D?./. -H?NvPO-@ g -g0.@H@B@H@Э*+@B@*_N^NuNV/ *np?B-H?NvPO-@ fp`" -g HѮ-gS .*_N^NuNV/ Kd. g U(fp?//. /.Nm*`X`B*_N^NuNVH *n-fp`-H?NuTO -g-f /-NXFXOB-0L N^NuNVH *nBm -ff >o?/--H?N|POGf$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?/.Nv\O>0l@0.f0.g4?</.Nu`\O>m Fg?NuTO?/.Nv\O>0m0.gp?B?NvPO-M .fp?NX.TO*@ f ?NuTO`|p@0.g- p+@*+@Bm +|p+|qG `DH @wfRn`H @af&Rn`H @+g.HHAf|`BL N^NuNV/ *n .*+@+|oB-0. D@;@ m l;| +|o`+|o *_N^NuNV/ *n Sm lBm p` UR0.*_N^NuNV/ *n UR0.*_N^NuNV/ *nRm oBm p` URB@*_N^NuNV/ *n -f,-f?<NX.TO+@f+|rl+|sz`j-f2-H?NvTO0gzf+|q+|t -`&+|q+|s -H?NpTOHЭ*+@Bm *_N^NuNV/p?B?.NvPO. fB@`0H@.N^NuNV/ *n/ NpXO/ mNXO*_N^NuNVH >.*n / NpXO/ ? mN\OL N^NuNV/ KY Me g/NlXO`*_N^NuNVNqF?.NtTON^NuNVH *nRm o/ Nm,XO0f tfHyzNm,XO -?/--H?Nw@POD@;@ @fZ09H fBy`-Bm `B0- Rm m+H URB@>-g G gP Gg 0`0- f-pL N^NuNV/ *n tfHyzNm,XOBm p?Hn-H?Nw@PO @g,J@gH .f-f8 . f-fB@.`(09H fBy`-`-p*_N^NuNVH >.*n G f -g/ p ?Ns \O @fp`0Sm l"/ NtXO0f -S@;@ UR0L N^NuNVH >.*n G G f-g/ p ?Nsz\O @gZBm -fN/ NtXO0f@p?Hn-H?N|PO @f0` 09H fBy`-pL N^NuNVH >.*n G f -g/ p ?Nt\O @fp`?NAXO/N~XO`B@N^NuNV/Bg/.pl0H/N~XO`"?.N}TO=@m?.?N}fXO0.N^NuNV/?.?. rF?NA\O>0f(?.N}TO=@m?.?. N}fXO0. `0H/N~XO.N^NuNV09g09`p?NNTO3N^NuNV?.N}TO @Cfp`B@N^NuNV?.?./. pB?NA /N~XON^NuNV/?. /.p=?NAPO.m:0H.mpF?0?N}fXO` m n0?N}TOH./N~XO.N^NuNVH A#(/9(N@XO0gB(p 3p`?.N}TO @CfzB@9w>B@9vHv*@SnmSGl^pQvB9wHyvp ?NA\O>mp ?p?p?NM\OpvB@9w>B@9vHv*@0Gp H< Ff~` n R RE F ft vvwB(0`0/. 0.H/?.p??NA >B(0H/N~XOL N^NuNVH.. l <`0 f 9`$R @./pH?NA\O,g Ї# LN^NuNV0.H/NxXON^NuNVH0*n(n H>g HGgB@`pL0N^NuNVH8/9N\^XO@> .g(&n*S gHy/ NxPO0fRGfX`&n *S g RGfX`0@@0H/pH?NA\O(@-@fp` .g&&n*S gHy/ NxPO0ffX`KfS*yH<g`-L&n *S gfX`B gR-Lp*nfg" nAcg`R Mgp ` nAcB`BgNzTO/././.BgpK?NA*p?NzTO/.pI?NA\O/N~XOL8N^NuNVN^NuNVH *nHH. :gB@`Za  e  d032p4. 9fp?NATO?p?NAXO# L N^NuNVH *n CA1!2<!!Qp/?NATO-@Hnp?NA\O?</.pN?NAPO>/.p?NA\O0lr/.NzXO0g n (\fT n \g n .f, n(g n (.f n(f p;@B@`0H/N~XO`.H;@+n=n=nYO/.N~$XO/NPOC I/ / NPO+@+@+@.HA.HHA:.HA.HHA;@0L N^NuNV/.pA?NA\O/N~XON^NuNV/A#(/9(N@XO0gB(p 3p`,/. 0.H/?.p@?NA .B(/N~XO.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` ?NuTO`~C`~A`~P`pL N^NuNV .l .D3p` .N^NuNVH ..K : ?: : : S: P: <L N^NuNVH *nA-H-nHnNXOBnBnp@=@ +g -fnRH> @.g G0m G9n G.f0.@fn`B@.@gRn`jHnNXOHnHnNfPOHnNXOHnNXOHnHnNPOHnNXO0@0@HnHnNPO0.@gDSn`< Geg GEfZ +g -fnRBnH> @0m G9n0. G@0=@`0.@g 0.D@=@0.nBn nl N(fRn` nf HnBgBg`0.oHnHnNfPOHnNXO0f:HnNXO0f*HnHnNPO0fHnHnNfPORn`VHnHnNfPOBgHnN\OBgHnN\OHnHnNPO>gRn?HnN\OVnSnfJ`0.l.fHnNXOSn`BgHnN\OHnHnNfPOBn n lJ0.@gBgHnN\OBgHnN\OBgHnN\OHnHnNPORn`WnRnfhSnHnNXO0gHnNXOp@HnHnNPO0gRnBgHnN\OHn0.@?0.@?/.N$ n "(L N^NuNV/~ G lBg/.N\ORG`0.@@ n0.H@ n(0. g n/./.NfPO.N^NuNVH| Fl4>. nB@@=@ n0g nRF`0. LN^NuNVH|z0m*>| ng| n nŏSE`0LN^NuNVH|~0m. n BA nB@A@ n0@@<SG`0LN^NuNV/~ Gl n"n RG`.N^NuNV/~ Gl nBRG`.N^Nu"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@ЉNNVH >. <.*n0SF0g` .L N^NuNV/<Q .%=/NrPOЮ N^NuNVH *n0- @l>0-R@< FnSGF 4HHBBB2-H0HH . o4H…2HdpAB:`zpd//<0H/NrPO/NPO(/<'/<Q0R@H/NrPO/NPO&0-EHЄЃB-@pe b8 b8 b8%bb^ gn gn gn+g-g.g0g1g2g3g4g5g6g7g8g9gEgeg g}4}8}<}}}`ARC - Archive utility, Version 5.21, created on 04/22/87 at 15:05:21 Usage: ARC {amufdxerplvtc}[bhswnoq][g] [ . . .] Where: a = add files to archive m = move files to archive u = update files in archive f = freshen files in archive d = delete files from archive x,e = extract files from archive r = run files from archive p = copy files from archive to standard output l = list files in archive v = verbose listing of files in archive t = test archive integrity c = convert entry to new packing method b = retain backup copy of archive h = hold screen after finishing s = suppress compression (store only) w = suppress warning messages n = suppress notes and comments o = overwrite existing files when extracting q = squash instead of crunching g = Encrypt/decrypt archive entry Adapted from MSDOS by Howard Chu ARCTEMPTMPDIRAXXXXXX.arc%s.arc.BAKAMUFDXEPLVTCRCannot mix %c and %c%c is an unknown commandI have nothing to do!I don't know how to do %c yet!.CMDrCannot read list of files in %s%99stoo many file references*.*No files match: %s No files were added. Duplicate filenames: %s %sCannot unsave %s rbCannot read file: %s Updating file: %-12s Adding file: %-12s Adding file: %-12s %s.CVT$ARCTEMP.CVTFile not found: %s w+bUnable to create temporary file %sConverting file: %-12s reading, Cannot unsave %s You must tell me which files to delete!Deleting file: %s File not found: %s File not found: %s Extracting file: %s rWARNING: File %s already exists! Overwrite it (y/n)? %s not extracted. wbCannot create %s An entry in %s has a bad header.%s is not an archive%s is corrupted -- changes disallowed %d bytes skipped. Invalid header in archive %sI don't know how to handle file %s in archive %s I think you need a newer version of ARC. Write fail (disk full?)Write fail (no space?)6:>BFJNRVZ^bName Length Stowage SF Size now Date Time CRC ============ ======== ======== ==== ======== ========= ====== ==== ==== ======== ==== ======== Total %6ld %8ld %3ld%% --- %8ld File not found: %s JanFebMarAprMayJunJulAugSepOctNovDec%s %-12s %8ld -- Packed SqueezedcrunchedCrunchedSquashedUnknown! %3ld%% --- %8ld %2d %3s %02d %2d:%02d%c %04x ?++File packed with %d bits, I can only handle %dCorrupted compressed file. Invalid code %d when max is %d. Stack overflow analyzing, S:%ld P:%ld S:%ld C:%ld, storing, packing, squeezing, squashed, crunched, done. (%ld%%) Bug - bad ncr state dummy.*.PRG.TTP.TOSFile %s is not a .PRG, .TOS, or .TTP rTemporary file %s already existswbUnable to create temporary file %sInvoking file: %s 700Cannot unsave temporary file %s ?+Corrupted compressed file. Invalid code %d when max is %d. @AAā@ A΁@ ˁ @ AAځ@߁@AՁ@AAЁ@01A32@67@54A<=@?>A:;A98@()@+*A./A-,@$%A'&@"#@! A`aAcb@fg@edAlm@onAjkAih@xy@{zA~A}|@tuAwv@rs@qpAPQ@SRAVWAUT@\]A_^@Z[@YXAHIAKJ@NO@MLADE@GFABCAA@@rbCreating new archive: %s Archive not found: %swbCannot create archive copy: %sCannot rename %s to %sKeeping backup archive: %s Cannot delete old archive: %sCannot move %s to %sArchive truncated in file %s Testing file: %-12s okay No errors detected One error detected %d errors detected I don't know how to unpack file %s I think you need a newer version of ARC WARNING: File %s fails CRC check Bad NCR unpacking state (%d)File has an invalid decode treePress any key to continue: rbwbARC: @@@@@@@@@PPPPP@@@@@@@@@@@@@@@@@@    @Bad pointer in free. a{NULL} You must compile with the -f option to include printf() floating point! Bad format in scanf pq!pq!pq#`zARGV= CCAP???????????????????????? 0^J,L"20  $   4 &($&  $6>       <`: ^D  4Z   & &    Nt 4   " Dp4 h 4 ( $  @ f 6   (  & (  ,f     h..  2 8  b  >(B *h$  ,  .     j       : * 4*& .,  z*.$. 8F $   0 8   (    ,*P 2 4   $ .(B :6   B "&.LH6 >. 4f"2<$$(^ L    R *h$  ,  .    j       : 06& .,         **      F ,  \  .F 0" .&& 8t  @J$  $(  d(f  "&vFP( LD" 2$ .>` .Ntj  &>& >"RF$4F0",p$  .6*"  "$j:BX<$<R8*046  & 6& ,$B^ &XTb. ^ &(2> 0V,v   ,$"$0D  4hP. wE.. wBITMASTRDOCwF?BITMASTRTOSwK$******* Docs For BitMaster version 2.5 ******* ********** by Dan Wallin (8/11/87) ********** This is a very brief description of the functions in version 2.5. Read Track, Write Track - Prompts user for a hexadecimal track number and the reads/writes that track to/from the beginning of the buffer. NOTE: Unlike Reading and writing sectors, track commands deal with data and gap information so it is necessary to understand the command bytes and their functions to really fully make use of these two commands... Damaged Track - Promts user for hex track number, then asks for offset to interrupt, which must be greater than $1f, then for length of damage, which is a counter that directly determines the amount of bytes damaged. Usually it will be about 1.4 times larger than the amount of bytes affected.... There is about $1880 bytes per track on the average.... Read Sector, Write Sector - Prompts user for a physical hex track number which is the actual track #, and then the logical track number, which is the first byte in the Address Mark field, usually it is the same as the phys. track #.... Then a prompt will ask for DMA size ( 0 - 3 ) ( 0 = $80, 1 = $100, 2 = $200, 3 = $400 bytes) The standard size is 2, but some protection schemes like the PAWN and GUILD of THEIVES use size 3 sectors to prevent their games from being modified.... Damaged Sector - Just like writing sectors, except..... you are not prompted for DMA SIZE.. instead you are asked for interrupt offset, and damage length just like damaged track... Remember.. interrupt offset must be > = $20. Also, if you make damage length to long, it might disturb the next AM on the track, so to be safe, as a general rule you can use the number of bytes in the sector as the length and this will damage about 2/3 of the sector usually... Read Track AM's - This reads in all the Address Marks on one track. They are loaded into the buffer sequentially, each entry occupying 6 bytes... Byte 1 is the logical track number, Byte 2 is 0 (disk side 0), Byte 3 is sector number, and Byte 4 is the DMA SIZE, Bytes 5 and 6 are the Cyclic Redundancy Check Bytes computed for each AM. Interpret Track - This attempts to convert data from the read track command, into data suitable for writing / formatting a track... Writing out to a track before interpreting the address and data block headers causes an "unformatted" like track to be written... Fill - Fills Specified Buffer Block with a byte value. Copy - Copies the specified buffer block out to $2000 and back to the destination... (allows for overlapping copies) Printer Dump - Prints specified buffer block... easy? Q - Quits. ESC - Escape via Exception... Used for accessing symbolic debuggers from within BitMaster.. works with Hi'Softs Symbolic Debugger, and should work with any standard GST linker format debugger. ? - Format 450k disk.. Formats a 450k single sided disk. This gives you 456,000 bytes of data, on an 11 sector per track format, with 83 tracks (only 80 with new roms) It's reads slower than 9 sector disks, but if you need the space it's the only way to do it..... M - Modify Pointer - changes where you are looking at in the buffer. T,B- text/byte input, lets you make changes in the buffer... If anyone finds any bugs, has suggestions or comments, leave a message on the ST CONNECTION to me , Dan Wallin, (503-771-6132). Enjoy the program, but use it with the understanding that I claim no responsibility for it's use or misuse. `#l#:#Faa.aa###hBy#(aaaaa 9aa,aaa 98<mg<Mg<qg2<Qg*<ag.<Ag&<zg@<Zg8<pgH<Pg@<hg.<Hg&<ig\<IgT<g<rg<Rg<wg <Wg<g<bgV<BgN<tg "<Tg <g|<gP<dg:<Dg2<Cgp<cgh<Fg<fg<?g4<ng8<Ng0a&`< m^0@ y#(g??<NAX` ??<NAX< m^0A y#(g??<NAXNu??<NAXNu$"<h@atB ajNu&"<a aNu?<?<NAX?<E?<NAXNu y#(g?< ?<NAXNu?< ?<NAXNu y#(g?<:?<NAXNu?<:?<NAXNu y#(g?< ?<NAXNu?< ?<NAXNu y#(g?< ?<NAXNu?< ?<NAXNu/<?< NA\NuCommand: ?<NAT#8Nu?<NAT#8Nu,##B 9aa.aa&aQ,9"yajQaFaNu,##B 9axaaSaaQ,9"yaQaaNu@< m <~o<. y#(g??<NAXNu??<NAXNu<Al0Nu<al 7NuWNu/<?< NA\aNu/<?< NA\|nBB |"Ba|g㨎|g jNu?<?<NAXNu K Enter HEX offset: /<^?< NA\ab###h߹/<x?< NA\a:##h#*߹#*3#(a3#(` K Starting address: K Ending address:3%`3%ba# 9#h#`t 9P##h#`R 9P##h#`0/9/9,<# y 93%`a"9ӹӹ,9Q##NuaL/9/9 y 9a"9ӹӹ"9#*o##Nua JaBgNANsB?< NA\#~Nu/9~?< NA\Nu/<?< NA\Nu/< W?< NA\a`. Fix CRC errors ? (y/n) ##h yBy < g (gQ` (f0< Q|||By#<#=  < g (g|NQ` (f0< Q|||##8B09 "<03#>S f (f (f]` Q"y l`B |#hNuQBNu Insert Disk to Format and press space bar/Esc to AbortEY p BitMaster Disk Construction Editor ver 2.5 by Dan Wallin Y$9pUse the H command for HELPY&;pLast edited on 8/11/87. Y4?[Press Return]Y*-This product may be used or copied freely as long asY+- it remains in it's ORIGINAL FORMAT. Y,- Please leave any comments on this program on Y-- The ST CONNECTION (503-771-6132) to me.. qEY p BitMaster Disk Construction Editor ver 2.5 by Dan Wallin Y&+|~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~|Y'+| Disk Commands | Other Options |Y(+|~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~|Y)+| R = Read Track | Q = Quit to GEMDOS |Y*+| W = Write Track | ESC = EXCEPTION exit |Y++| D = Damaged Track | H = This Help Menu |Y,+| CTRL-R = Read Sector | M = Modify Pointer |Y-+| CTRL-W = Write Sector | P = Printer Dump |Y.+| CTRL-D = Damaged Sector | C = Copy Block |Y/+| N = Read Track AM's | F = Fill Block |Y0+| ? = Make 450k disk! | T = Text Input |Y1+| I = Interpret Track | B = Byte Input |Y2+| | A = Page Back |Y3+| | Z = Page Forward |Y4+|~~~~~~~~~~~~~~~~~~~~~~~~~~~|~~~~~~~~~~~~~~~~~~~~~~~~~~~|q/9/9/<?< NA\By# y# a 98< g@ yy y# m/<?< NA\By# `##`h Enter text, press return to endY Z CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC/9/9/<0?< NA\By#"y#"B9q 9a 98< gra|9qaj 98< gTa^9q yqad y#"m/<Z?< NA\By#"`l##` Enter hex bytes, press return to endY * CCCCCCCCCCBy#2/<"2?< NA\a#3NuBy#6/<"W?< NA\a#7NuBy#4/<"{?< NA\a#5NuBy#/<"?< NA\a3#NuBy#D/<"?< NA\af#ENup Motor Wprot Spn/Rtyp RNF CRC Losd/Tr0 DR/Indx Busy FDC:p 0 0 0 0 0 0 0 0 q a9#fNu3a3#aNu/ |X09#g |14`|0409#g |1-`|0-09#g |1&`|0&09#g |1`|009#g |1`|009#g |1`|009#g |1 `|0 09#g |1`|009#29#/<?< NA\ _NuB# # # # y##h# Nu/<4?< NA\ 9 aaa~NuTransfer Size:?@>< QF>Nu9@99#:NuF'3>NuF#By>NuBy#2By#@/<?< NA\?<NAT<ga/<"?< NA\09#2aa#Faa8y#2y#@ yS#@mBy#2By#@ |#h0<BQ |#h!| !|p!|!| |B3#3#23#63#4aa B9#F`SQNu |#h<N2< a<2< a#A#F<N2<a<2< a<2<a~><aG| mNu<N2<aX<2<aL#A#F<N2<a<2< a<2<aNuaaaJalanaaa`^aaa&aaDa0aaaaa`.ahaaaaaRa(aa~aaj`aTaaaa&aaaRata>Nu3NqNqa3aNqNq9f3a3aNu3a3a3azNu333093NqNqaJ09a@Nu9@a09aNuara3a3a <9gSg`a6`.<3a <Sg9g`Qaa |#h f\`8 |#h "($("H`\oNff촨f <BQaaNu |#h`##h## # # 33333Nu##h## # # 333NqNqa3aNu3NqNqap3adNqNq <`9gf`a309gNuaaa?9#2a,3#2aa`~3NqNqa3aNqNq <`9gf`a309gNuaa\a?9#2a3#2aja`~3al3Pa` <9gfaa`Ta3a(3#2aNu3a 09@ay#2g@y#2gpa3a3#2a3a3a <9gfaa`ra3ax3#2ajNuaaaaa`@aa aa*aaaaaNuaTapaaa`aXaaaaaaZa|aFNu3a3#6a3a3#4aNu3#Baa:3NqNqa3aNqNq <9g Sf`a309Nuaaa?9#2aZ3#2aay#B09#BQhNu3#Ba$a3NqNqa3aNqNq <9gSfa2a.309NuaaaaVaa`aaZaaxaaaaaNu y#ZJafaD3NqNqa<3a0$<*<%'(HDB   "9 9#yn Sf`V4<xQ$9 6NqNqNqNqNq9gSfaa309Nu##h# 9ѹ## # # 333NqNqa3#a Nu##h# 9ѹ## # # 333a3#aNu3NqNqa3aNqNq$<*<%'(HDB   "9 9#yn Sf`V4<xQ$9 6NqNqNqNqNq9gSfa@a<309Nuaalaaaxa:aaaa6a&a` KEnter an offset to interrupt at in HEX : /<?< NA\an3Nu KEnter # for noise spike delay in HEX : /< ?< NA\a$# 6Nu/<!c?< NA\a #!Z/<!?< NA\a#!^/<!?< NA\a!b |#h"y!Z$y!^9!bl`r/<!?< NA\a#!N/<!?< NA\a#!R/<" ?< NA\aj#!V y!N"y!R$y!V&|#h@. (Iسl&G۹l` KEnter start of block in HEX : KEnter end of block in HEX : KEnter HEX byte fill pattern : KEnter start of block in HEX : KEnter end of block in HEX : KEnter destination for block in HEX : KEnter HEX physical track number: KEnter HEX logical track number: KEnter HEX sector number: KEnter HEX length number: KFormatting Track #$ KEnter HEX DMA length (0,1,2,3): KSingle (1) or Double (2) sided...?FP`6        L \," ,.LL  4 z b*^n R ` DM21XXag#"~H@|ag 03" <aB oOa*//Bg?<JNA Jf ?<NNTO#"f?<?<NNXO?<?<!NNXO?<NNTO3"Jy"f(?</`Kzaa,9  !9  !$!6!V!d!!!!!By"Jy gj y"g#!"jaJfJ3"zK!aHk3"KqZ*< a>aja Hy#?<NN\O?<%NNTOHy#:/9"fHyqZa Hy#:/9"f?<a @ Hz?<&NN\OBga *TOK"a `#!"ja \Jf3"zK!akt3"K"zaK"z aKqZ*<}ara y"f6a &K"a @AqZ"y"f0<""""QHz?<&NN\OK"a ?<*NATO8*||HS@HA"A:<Q0|a -0f%RM, 190|HH|Pa  | 0|| n ?<,NATO8|HHJ@f0< BF`| nBF`| g| <<a l -0f| :0|Ha N:0|Ha > JFf(|`(| |:< QqBA a: y"g8Jy"g$ 9"~|8<LfBy"#!d"j`#!"j` #!"jBy"a @Jg 3"`Aa y"g<LfA `A`AaA aa J@g"Aa y"jazAap``BE*y"ja3"*|Aaa Jy"f a,g#"~3"` a4J@k$a3"a By"Jy"g*Jy"g y"g`By"a Jy"f*|=aJy"ga *`4Jy"gAa09" A#<E}GCꃠHk GQ`DFRFGQef^Te R fBA "o0><TB@<< 2I2Id2Q`2Q2QAΑVHHLxNuHM8PJo(gXJf:?<NNTO-@ HzNBg?<NNPOo+o,-o.Hzd?<&NN\O`o+o,-o.J.f`8Jg4Hzl?<&NN\O?<2QA`CBA A,!Nu!p`A@C`><0QNuJx>f6@|A.JgI@K M"&zG ><BJg<bNNqNqNqNqNqNqNqNqNqNqNqNq0<NqQNqACE """"""""$$$$$$$$QACE """"""""$$$$$$$$ACEI뵠NqNq """"""""$$$$$$$$M"PQ-nFNuBE8<K"?NAXOJ@Nu/?< NA\ONuHy"D?< NN\O*8ڼag#"~3"p`bpA<?<B| |Nu*889 y"f`dڄag | f `bNu?<?<NAXOJNuHz?<&NN\ONuHzB?<&NN\ONuJxDfA e1D` A BxDa 8мfNuqwEqfY2 p DESK MANAGER 2.1 1988 Charles F. Johnson Y2O| ampmY3!JY3>- DESKTOP.INF -Y3!JY3=- AUTO Programs -Y3!JY3>- ASSIGN.SYS -Y3!JY3=- Accessories -Y4!JY45Arrow keys/Mouse: Move pointerY53Return/Left Button: Select filesY6=Clr Home: Clear all selectionsY75Esc/Right Button: Exit/Rename FilesY9,Backspace: Previous Screen / Help: Info / Undo: AbortY4!JY53Creating monochrome low res medium res DESKTOP.INF file. qwEqfY p Desk Manager 2.1 Initialization qY! JY'2Which drive holds the AUTO folder (pAq - pPq)?Y! JY'2Which drive holds the accessories (pAq or pCq)?Y! JY'1Number of seconds to hold startup pic (p0q - p9q)?Y! JY'/Write the new configuration to DESKMGR2.PRG (pYq / pNq)?Y4!JError - is not present! Y1pdY Y4!JY4 JY5?Renaming...Y4 JY5;Creating ASSIGN.SYS...Y4 JY5;Creating DESKTOP.INF...YCCCCCCCC CCCCCCCC YpqY3 JY5;pCan't find DESKMGR2.PRG!qY71(Perhaps you renamed it? Or changed disks?) fY3 JY59Continuing boot process... fY3 JY3.DESKMGR2.PRG should be placed in the \AUTO folderY4.of your bootup disk. Create a folder inside \AUTOY5.named \DESKMGR and place your DESKTOP.INF filesY6.(LOWDESK.INF, MEDDESK.INF, and HIGHDESK.INF) andY7.your ASSIGN.SYS files (*.SYS) in it.fY3 JY3.To display a startup picture in color, place aY4.Spectrum 512 picture in the \DESKMGR folder andY5.rename it to DESKMGR.SPC. In monochrome, place anY6.uncompressed DEGAS picture in \DESKMGR and renameY7.it to DESKMGR.PI3.Y3 JY30Type 'W' to toggle disk write verify on/off.Y40Type Undo pbeforeq Desk Manager loads to bypassY50the program entirely, or Help to re-configure.Y60Do pnotq rename DESKMGR2.PRG, or else you willY70be unable to save your current configuration.Y3 JY34If you use and enjoy Desk Manager,Y44please send $15 (or more) to:Y68Charles F. JohnsonY78P.O. Box 1250Y88Pacific Palisades, CA 90272Y3 JY5=Write Verify: pONqY3 JY5=Write Verify: pOFFq\AUTO\DESKMGR2.PRG*.SYS*.INFY49JNo accessories on drive X...X:\*.AC?X:\AUTO\*.PR?X:\AUTO\X:\ X:\AUTO\GDOS*.PRGX:\AUTO\DESKMGR\X:\ASSIGN.SYSX:\AUTO\DESKMGR\LOWDESK.INFX:\AUTO\DESKMGR\MEDDESK.INFX:\AUTO\DESKMGR\HIGHDESK.INFX:\AUTO\DESKMGR\DESKMGR.SPCX:\AUTO\DESKMGR\DESKMGR.PI3X:\DESKTOP.INF.ACX.ACC.PRX.PRGJan Feb Mar Apr May Jun Jul Aug Sep Oct Nov Dec   $&2  ,  &  "(            &          &      `b>    4 "      $$     8 xF\.  wn..  wSCRGEM PRG wo!hSCRUNCH DOCw#`b o"h#dV#dZ#d^,Oc.N//Bg?<JNA BbBydbN)NV?.?. ?. /.?.?<NMN^ _O NNV?.?<NMN^ _ONNV?.?< NMN^ _ONNV?.?. ?. ?.?././.?<NNN^ _ONNV?.?. ?. ?.?././.?< NNN^ _ONNV?./. ?.?.?.?.?././.?< NNN^ _ONNV?.?. /. /.?<NNN^ _O NNV/.?<NAN^ _ONNV/.?<NAN^ _ONNV?./. ?<6NAN^ _ONNV?./. ?<NAN^ _ONNV/./. ?.?<?NAN^ _O NNV/./. ?.?<@NAN^ _O NNV?./. ?<NNAN^ _ONNV?<ONAN^Nu/,HNVA-H/9j?9k,BgNE/9j?9k*BgNE/9j?9k&BgNE/9j?9k$BgNEpc3kpc3kpc3kpc3jByk BykBykByjByjByjByjByjN^,_Nu/,HNVA\-Hp=@"np)=@0.nn""n 0.$n2.t2Rn`"n $np*R@rN^,_ _PN/,HNVA`-HBykByjByjByjByjByj . o*09kR@3k . мy`-@ . l . 2<'Ho,09jR@3j . м-@ . 2<'Hl . 2<Ho,09jR@3j . м-@ . 2<Hl . rdo&09jR@3j . rЁ-@ . rdl . r o&09jR@3j . rЁ-@ . r l . ro"09jR@3j . S-@ . JfN^,_ _XN/,HNVA4-H0. H-@?. Nl-@/.N4=@?. N<-@N^,_ _TN/,HNVA -H V0(rA^ V0( VhWÄCBd V0( V2( VA V0(R@ V2( VA V0(2<H V1@ V0(2<HH@ V1@ V0(T@ V2( VA V0(V@ V2( VA V0(X@ V1@`D V0(rAo6 V0( V2( VA V0(R@ V1@ V0(S@ V1@`p V1@N^,_Nu/,HNVA-H?9kN?9jNz?< VHh?< V?(?9kN3k p V( V1@p V( V1@ V0(@ Vh3k 09k rAf V1|p V1@p V@` V1|б VBhp V@N^,_Nu/,HNVAv-H V1|屸?<NWlHyiLHyjLNHyjLBgNN V1@p V1@p V1@ VBh VBhp V1@Byk VB VBh VNN^,_Nu/,HNVA-H NNf0.԰nlp=@ n'n0.2<ARn`?<Hn?<?.?9kND3k p=@0.J@f.p=@p=@0.rA0=A0.R@=@`0.@=@0.2<$RAAl0.rA0nW0.а|]CBd0.R@=@` NN0.rA0=A0.R@=@0.°|$oZ0.S@H-@ .Ю-@?./.HnN,-@p=@ n'n0.2<ARn`p=@`40.԰nf< NN0.H-@ .Ю-@ .Jg?./.HnN-@`PBgNWl/9j?9k(NF8?.NT3k CEhL>p=QN2`HyhL?EhL=p<QAhLO"Op?"QBgNX=@0.S@=@0.S@=@0.rAgt?<NWlBn nOnHnp/?.?< ?.Bg?</NGN^,_Nu[0][ Select Source Drive | ][ A | B | ABORT ]/,HNVAz-HCxO$OpQHyiLN6@dNGN^,_Nu Output file name? /,HNVAh-HCiLEp?$QHnHyiLN:@d*p9iM@3k/9j?9k&?<NE/9j?9kp=QHn?.N6-n-n .r -@ .roj/.N09k@0hz09j@0h{09j@0h|09j@0h}09j@0h~09j@0h .2<HfbpDhSpohTpuhUpbhVplhWpehXp hYpShZpih[pdh\peh]pdh^ .2<_HfbpShSpihTpnhUpghVplhWpehXp hYpShZpih[pdh\peh]pdh^AhLO"Op?"QBgNX=@/9j?9k@NGN^,_Nu[0][ Non-Standard Disk, | | Free Bytes => 000000 | ][ OK ][0][ Which Drive? | | ][ A | B | C ]/,HNVA-H?<C.O$OpQNB.#j/9jCO$OpQN>&3kB/9jCO$O pQN>&3k@/9jCO$O pQN>&3k>/9jChO$O p QN>&3kCO$Op QN@f3k,/9j?9k>CO$Op QN@f3k*/9j?9k>CO$Op QN@f3k/9j?9k>CRO$Op QN@f3k(/9j?9kNG0.yk&fN0.yk$fN0.yk"fHNZrAf&AiLO"Op?"Q?9kN3k N/9j?9k?<N1F0@Bd0.R@=@`0.n^=B0.N^,_ _XN@NUL:AXO:AXI:PRN:LST:CON:HkD _024SBgQ@4BAAc/LkDNuHy/N5/LkDNuHkD _0@"_24BAAc1V`t>/LkDNuHkD _02S@AC2YQ/LkDNuHkD _02S@AC2YQ/LkDNuHkD _02S@AC2FAYQ/LkDNu _"_/) g g f0)k @e??<>3|NAXNuHk^ _0"_e /Lk^NuHy4fN50 @f0"|k\k\p` "_J@jp6B@bEkSBkQ/Lk^NuString overflow _ hNVf 0(gr"OD@Hd2S@k "Q` _"ydVe Hy4N5NAN^ _ON/,HNVN4A&-H?<BgBg?<&?<NH6-@/.?<Bg?<?<BgBgBgBgNH=@/.?.AO"Op?"QBgBgNN"n E4p$Qp.r"Aop"@/.?<Bg?<?<?<"?<Bg?<NH=@/.?.CO$O"p!QCO$O"p!QAO"Op?"Q?<BgNJb/.?<prArA??<?<?<?<?<?<NH=@/.?.C$O$OBgBgNN/.?<prA??<?<?<?<?<?<NH=@/.?.CO$OpQBgBgNN/.NMXBnp=@/.?.NLn=@0.@e/.?.Bg?<NT0.ngBnp=@`/.?.HnNP,p.R@rAHnN_/BgNl=@0.J@j p=@`r?.NhN2`Hz?<!N2rHn?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^,_ _PNNu/,HNVN4A-HBn"n0.-I"n0)n m"n$n0*R@3@"n0)n m"n$n0*R@3@"n0n m"n$n0R@2"n0.0)r AJ@f0.R@=@`f0.n m4"n0.R@$n0.p"Q0.S@=@`N^,_ _\N/,HNVN4A -H"n 0-I"n0)rAfpT@=@`"n0)R@=@/. ?.N"n 0.-I"nBi"nBi"np. 3@"n3|"np 3@"np2"np3@"np3@"nBi"nBi "nB /. ?<?.NSz/. ?.NS/. ?.A O"Op?"QBgBgNNpT@=@"n 0.Bi"n 0.=Q0.rAg@"n 0.$n 0.0*$n 2.j3@=n`"n $n 0.0*$n 2.j3@D/. "n ?)?<?<BgBgBgBg?<?<NR=@/. ?.NS"n 0.$n 0.0*$n 2.j3@=n0.N^,_ _ON/,HNVN4A-Hp=@0. U@S@=@"n$n0*=i0.rAo 0.S@=@"n0.=Q`/.?.?<BgBgp. ??<BgBgBgNR=@/.?.A O"Op?"QBgBgNN"n0.=iBn0.ng 0.R@=@"n0.=Q`"n0.3n/.?.NS"n0.0)"n2.io$"n0.$n0.3j"n0.=i"n0.$n0.3j"n0.3n=n0.N^,_ _ON/,HNVN4A-Hp@n =@?.NP-@/.?=@/.?.CO$OpQN=@/.?.CO$OpQN=@/.?.ClO$OpQN=@/.?.C2O$OpQN=@-n .N^,_ _ON Desk Accessory 6 Desk Accessory 5 Desk Accessory 4 Desk Accessory 3 Desk Accessory 2 Desk Accessory 1 -------------------- Desk /,HNVN4A-H/. NQN^,_ _XNNu/,HNVtN4A8-H=n0. rA=@-nx?<HnHnHnxHntN]\N^,_ _PN/,HNVtN4A2-H=n p=@-nx?< HnHnHnxHntN]\N^,_ _\N/,HNVtN4A0-H=n Bn-nx?< HnHnHnxHntN]\N^,_ _\N/,HNVN4A*-H/.?. A O"Op?"QBgBgNNN^,_ _ON/,HNVnN4AL-H"n $n p*R@r=n"n / N_-@r?<#HnHnzHnrHnnN]\0.N^,_ _\NNu/,HNVxN4p=@-n |?<HnHnHn|HnxN]\N^,_ _XN/,HNVxN4Bn-n |?<HnHnHn|HnxN]\N^,_ _XN/,HNVxN4=n Bn-n|?<!HnHnHn|HnxN]\N^,_ _\N/,HNVxN4=n p=@-n|?<!HnHnHn|HnxN]\N^,_ _\NNu/,HNVN4Aj-H0.T@=@?.NP-@/.?=n<-n$?<HnHnHnHnN]\=n"n2"n2"n2"n 2"n 2"n20.N^,_ _OS@r VR?/LnNuHnaS@r VT?/LnNu#n2 _0 @g "_J@jp`0n"|np2 Ag $_JAjr`2n$|nr@g\Hn*Gme$4SBkQ4@SBpQ0"|m` 4SBkQ4ASBrQ$|mLn*J@f pC`$I/9n2Nu dVNu#b _ gdZedVd 9bNHyb`HybN5,$8(l*lrh\,&D0T>0,8&&,&$$6   $LD"2 T &( 0<             $"   <   , F ST-SCRUNCH A Disk Compaction Program for the Atari ST Computers 1986 by Bill Hodges and R.E. Swem INTRODUCTION ST-SCRUNCH is a powerful disk utility, allowing the user to compact whole disks for telephone transmission or storage. It uses a superset of the IBM 3780 BISYNC data transmission protocol to achieve compaction rates of 5% (for object files) to 30% (for text files). It should be noted that all sectors are copied from a disk, regardless of whether they are currently in use or not. If a number of files are deleted on a disk, even though they do not appear on the directory listing, there is still data in the sectors they formerly used, and these are compacted, too. This is a 'ZAP' type utility. It is possible to ruin a disk without meaning to, so PLEASE write protect your originals! Furthermore, make a copy of your ST-SCRUNCH disk right away, and put the original in a safe place. *Atari and Atari ST are trademarks of Atari Corp. GEM and GEM Desktop are trademarks of Digital Research Inc. ST-SCRUNCH with GEM interface. SCRGEM.PRG is ST-SCRUNCH using the GEM interface. It is easy to use. Following the prompts should get you through with no problems. However, since not everyone is familiar with the 8 bit Atari public domain SCRUNCH, we will run through a sample session. First, and maybe most importantly, ST-SCRUNCH requires TWO drives, or at the very least one drive and a 360K ramdisk. A 520ST just about has to have two drives to run this program. A small ramdisk may work for some jobs, but will probably not be enough for most applications. Boot your computer. By the way, if you have a color monitor, you MUST use medium resolution! From the desktop, select the program (in this case, SCRGEM.PRG). It will load and a title screen will come up. Click on the 'OK' prompt, and the title screen will disappear. At this point, you have a green screen with some different options up on the menu bar. These options are: a. Exit - Exit to the GEM Desktop. b. Utility - allows you to format a disk, look at a disk directory, or check the amount of free sectors on a disk. c. Scrunch - this is the menu option that allows you to compact any regularly formatted disk without copy protection. Note, however, that 'SCRUNCH' itself is not selectable right away. You Must First Select the Source Drive and Destination Filename! When you have selected 'Set source' or 'Set dest', a checkmark will appear beside the item. This lets you know that this item was accomplished. Once both source and dest have been selected, the 'SCRUNCH' option will now be in normal letters. You can now Scrunch your disk! d. Unscrunch - this is the menu option that allows you to unscrunch the file created with option c. It works along the same lines as option c, except you are now making a disk with runnable files on it. Ok, let's run through it once. For the purposes of this example, let's presume you have two drives. Those of you using a ramdisk, read 'Drive B' as whatever your ramdisk is. Put your source disk in Drive A, and your destination in Drive B. On the menu bar, move your pointer to the 'SCRUNCH' option. A drop-down menu will appear, with two selections you can choose, and one you can't. Click on 'Set Source', and a box will appear in the middle of the screen. It wants to know which drive you have put the source disk in. Tell it, and it will go away. Now go back up to the 'SCRUNCH' option on the bar, and when the drop-down menu appears, you will see that the 'Set Source' item now has a checkmark beside it. This is just a little reminder that you've done that already. So select 'Set Dest', and on the screen will appear a box for you to type in the name of the file you are about to create. (By the way, in case there's already a file by that name on the disk, it will ask you if you want to get rid of it. If you decide you want to keep the file, then just tell the program so, and it will abort this operation. You will have to go through selecting another name, but that's better than accidently destroying an important file.) Enter a good GEMDOS- acceptable filename (like A:\FOO.DAT), and either click on the OK box, or press return. Now, return to the 'SCRUNCH' option on the menu bar. You will see two new things. First, both 'Set Source' and 'Set Dest' have a checkmark beside them. Second, the item 'SCRUNCH!' now is written in black letters. This means that you have satisfied the requirements to Scrunch. So if you're ready, just click on the item SCRUNCH!. An 'Alert Box' will appear, confirming your choices of source and destination. If these are acceptable, then just click on the 'OK' box. You can abort the operation at this point by clicking on the 'Abort' box. The cursor arrow will now turn into a 'busy bee', and your drive(s) will start. This can take anywhere from 1 to 3 minutes to finish, depending on how full your source disk was. When it's done, you will have, on your destination disk or ramdisk, a large file with the name you selected earlier. This file may actually be larger than the sum total of all files on your source disk. Object files don't compact very well, and if there were deleted files on the source disk, this can account for the file being larger. The 'UNSCRUNCH' option on the menu bar works just like the 'SCRUNCH' option did, except when you choose the 'Set Source' option, you get a standard GEMDOS disk directory box to choose it from. If you are familiar with how to select a file from a box like this, great! If not, all you need to do is use the slider bar on the right to move the directory up or down in the window, and when you see the file you want, click on it! You can ignore the 'OK' box if you want, just double-click the file. The 'Set Dest' option is different, too. Just select which drive you want to use as a destination drive, either A or B. Make your choices, and then you can Unscrunch your Scrunched file. That's all there is to it! You have mastered ST- SCRUNCH! Note that ST-SCRUNCH did not destroy your source file; you can use this program to back up your important disks, and Unscrunch them at your leisure. BUGS & NOTES A scrunched file is not runnable! Many people contacted me after the original, public domain Scrunch for the 8 bit computer was released, saying they couldn't get the file to run! It's not a silly question, when 20 people ask it. There is only one way you can do anything with this file, other than passing it over the phone or copying it, and that is to use the other part of the ST-SCRUNCH program, Unscrunch. There is no guarantee that the file you are making will be much smaller than the sum total of the source files. The smallest compaction will be seen on disks with a lot of binary files, and the largest compaction results will be seen on a disk made up of text files. An empty disk will compact rather small, too (just in case you thought to try it). After you are through compacting a disk, you can then use any of the public domain 'Huffman algorithm' programs on the file (e.g. ARC, EZSQUEEZE, etc.) to make it even smaller. Remember which one you used, though! One quick way to crash the program and lock up your computer is to try to use an unformatted disk and expect the program to write to it. Use the format option first. Other than that, no real bugs have been noted (so far). This program is released into the public domain on 3 January 1987. Please don't expect it to be supported! I have included in the 'ARC' file the source code, so anyone feeling like modifying it is welcome to. Any correspondence can be directed towards me, Rob Swem, on the LateNite BBS in Dayton, Ohio at (513) 293-5448, or by writing to Cherry Software 3415 E. Fifth Street Dayton, OH 45403 . w.. wSHADOW DOCw'SHADOW PRGw%U COPYRIGHT NOTICE Magic Shadow Archiver hereafter referred to as MSA is Copyright (C) 1987 by Steve Feinstein. MSA is distributed under the User Supported software or 'Shareware' concept. If you find this program useful and decide to keep and use it please compensate the author for his efforts and register by sending a check or money order for the sum of $10.00 to: Steve Feinstein 56-26 244 Street Douglaston, New York 11362 MSA may be copied and distributed freely provided it is not modified and this documentation is included along with the two program files. MSA may not be included with any other product for any reason whatsoever without the written permission of the author. No charge may be levied for a disk containing MSA except for a disk handling charge of up to $8.00. With all the various emulations that are being implemented on the ST the need for a means of transferring or storing data contained on disks of the various system formats, easily, from TOS has become a necessity. MSA is an attempt to satisfy this need. Though all precautions have been taken to insure that MSA will function properly the author cannot accept any responsibility for any damages that may result from it's use or missuse. Please report any bugs and/or suggestions by dropping a note to the above address. T h e M a g i c S h a d o w A r c h i v e r MSA creates an image file of any unprotected disk that contains 512 byte sectors and writes it to a standard ST file using a simple track compression algorithm. This includes disks written under: Atari ST/TOS Magic Sac IBM/MS-DOS CP/M This means you can store or backup and then re-create any unprotected disk of various operating systems directly from the ST desktop. For instance bulletin boards can now easily handle files of entire Public Domain, Share Ware or Demo program disks in Magic Sac, IBM, TOS and other formats which can be Up/Downloaded and then restored to their original form ready to use with all boot sectors, roots and subdirectories intact. Using MSA STORING A DISK - To create an MSA archive file just boot MSA.PRG and after the functions panel appears place the disk you want to archive into the source drive A or B (this may be set using the buttons in the 'Drive' box at lower right off the panel - the default is drive A). To enter a name for your MSA archive file and set the destination drive/partition click on the long rectangular box at the bottom of the main panel and a standard GEM directory box will appear. Click on OK when you are finished making your entries. The name FILENAME.MSA will be used if you neglect to enter your own filename. At this point you can click on the 'Do it!' button and MSA will start off by checking the source disk's format and display how many sides, tracks and sectors per track in the 'Information' area. MSA will then continue by reading each track of the source disk writing to the destination drive/file as it goes. To the right of 'Information' area you will see four fields that display the track being read/written, the side, the status of the operation (will show error codes if they occur) and the compression effectiveness for each track. When the archiving operation is finished you will be presented with a box showing the size of the original disk, the size of the MSA file and the total compression acheived. This file now contains an image of your disk including the format information that will be used by the 'AUTO-FORMAT' function to re-create it. Re-creating A Disk From an MSA File To re-create a disk from a stored MSA file place a blank disk into the destination drive (set A or B by using the 'Drive' box at the lower right of the main panel) and click on the 'DISK -> FILE' button at the lower left of the panel. This will change the button's markings to 'FILE -> DISK' and the 'AUTO-FORMAT' button to the right will become enabled. Enter the name of your stored MSA file and source drive that you will be restoring from by clicking on the filename box at the bottom of the panel. Now click on 'Do it!'. MSA will format and create a new disk which should be an exact image of the original. Features There are a number of user selectable or editable options that you will find useful when using MSA. ANALYZE - The 'Analyze' button allows you to check the format of a source disk before actually creating an MSA archival file. Place your source disk in the selected drive (A or B) and click on 'Analyze'. The number of sides, number of tracks and sectors per track will be displayed in the 'Information' area. MSA uses this function automatically (unless the 'Override' button is set) when creating an archive file. The 'ANALYZE' feature works on most standard formats used in the above operating systems. MSA will 'Automatically' copy and restore disks within these format ranges: Single/Double sided 80 tracks or more per side 8 or more sectors per track (512 bytes per sector) (11 [or more] sector destination disks must be pre-formatted.) Since the operating speed of MSA was of major concern the analysis was kept within these ranges. (Forty track IBM disks may be set using the 'Override' button.) Because MSA is intended to work on different system disks the format analysis is made of the physical track/sector format of the disk and not through the system format data on the disk. Disks that have been formatted and reformatted with various capacities or systems can fool MSA into doing the wrong thing. Usually you will end up with an unecessarily large file but care must be taken to insure that these messy disks are stored properly by using the 'Override' feature and entering the format parameters manually. Compression At this time MSA uses a rather rudimentary data compression algorythm. It simply checks for strings of contiguous bytes of similar value and stores them in short encripted form. Disks containing many empty sectors or repeated bytes (such as graphics files) will result in the smallest files. You can further compress your MSA files by using other compression programs such as arc.ttp, arca.ttp, etc. Note: smaller systems may not be able to arc the larger files created by MSA as with double sided disk files. These disks may be stored in segments or sections. i.e. tracks 0-39 as FILE_A.MSA and 40-79 as FILE_B.MSA on a DS/80 track disk. Segmenting A Disk Image To break a disk down into multiple MSA files click on and 'select' the 'Override' button before you start the archival operation. Then set the starting and ending tracks by clicking on the 'Tracks:' field. Change the starting and ending tracks to your needs and after placing the source disk in the drive proceed normally by clicking on the 'Do it!' button. Remember to use descriptive names for each section of the disk saved (for your own reference). MSA handles all the rest. MSA's 'Auto-Format' feature will restore each section to it's proper position on the disk when recreating the disk. Sequence is not important. The Manual Override Button The auto-analyze feature can be toggled off by clicking on the 'Override' button. This will deselect this feature. This is useful when storing disks that have previously been formatted as double sided but now contain single sided information. i.e. A disk that was used as a double sided TOS disk and then used as single sided Magic Sac disk containing ported Mac program files. If MSA finds a second side on a single sided format it WILL copy it so use the 'Override' to set MSA for 1 side if that is all you want stored. An easy way to check is to use the 'Analyze' feature alone before you start actually storing the disk. This will tell you if MSA thinks there is a second side. Aborting An Operation Pressing and holding down either mouse button will abort a store or restore operation if you need to do so. When the disk is being checked with the 'Analyze' feature you must wait for it's completion before you can abort. IBM or MS-DOS disks MS-DOS or IBM program disks are usually double sided but often use only forty tracks (0-39). You can save time as well as avoid an oversized MSA file by manually setting MSA for 40 tracks. I'm sure that many PC-Ditto disks have previously lead lives as ST TOS disks. Standard format for IBM or MS-DOS (v3.x) disks: Tracks 40 Sides 2 Sectors 9 DOS system disks IBM DOS system disks can be copied and restored with the system boot sectors and DOS version formats intact and ready to run. MSA may also be used with 5.25" drives. Magic Sac disks Magic Sac disk format is as follows: Tracks 80 Sectors 10 Sides 1 or 2 One of MSA's most useful applications is the transferring of Magic Sac disks. We feel that the Magic Shadow Archiver will quickly find a place in your utilities box as you discover more ways using it. Please feel free to drop us a note regarding any problems as well as suggestions for improvements. Bill Kokoni `K& .<N6N"N N#\N"N"N!N!XN5*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN0 lHhNxX/,?,N\?<N?<A?<NAXNuNVRBn=|N=@NN|?< /,(N\|=@0.|!g` N``|,g` N``|"g`0<n=@?.N\T``|g`N``v`|)g``HlnHnHlnHlnHlnHlnHlnNv?.HnHnHnNBn=n?.?.?.?.NP``|g`N&0. l( h ?./,(N \ n g`HnHnHnHnHnHnHnN0.n @l nf/,?<N\` nf< ng?.HnHnHnN.=n?.?.?.?.NP?.Hl8NT\=@ @l`BHnHnHnHnHn?.?.N @l?.NT` 0.H/ </N$> /?<HN&P\)@4 <2.H/"</N$"/ /N$ /?<HN&\)@0 4g 0f/,?<N\N?./,4?.?.?.?.?.?.Nz=@Bg?<NX?.?<>N%XHl?< N%\0.H/ </N#f 2.RA/0H/N#R 2.nRA/0H/N#: -@)l:)l>".N N //Hl:?<NXN \-@Hl8NXN *N F-@R .N *HnRHl:?<NX-l:R-l>V)l:)l>HnRHl:?<N0N-@ nf`P nf2 .N/,>/,:Hl8NX//.HlHn\N*`0 .N/,>/,:/.Hl8NX/HlHn\N*Hn\?<N \`N^NuNuNV/,4?<IN$$\/,0?<IN$\NLBgBgNbXBln`.0,nAf??,n?<N#\2,nAf0Rln lnoNNN^NuNVNBHlnHlnHlnHlnN9@p9|n`0,nAt0Rln l nm9|HltHlpHltN, Bg?<NX?<N#,T @f/,?<N\NBln`.0,nAf??,n?<N"\2,nAf0Rln lnoN^NuNV ,AA)H( ,AA)H, ,AA)H$ ,AA)H Bn`?./,(N\\Rn n-mBn`?./,,N<\Rn nmBn`?./,$N\Rn nmBn`?./, N\Rn n mBn`0.A Pg0.A Pf*0.A Ab 2.A 0.A Pg<0.A Pg(0.A Pg0.A Pf.0.A AnA 2.A Rn nHm$Bn`0.An Ab 2.An 0.Ar Ab 2.Ar 0.Av Ab 2.Av Rn nmvHnHnHnHn/,(Np?.?.?.?.BgBgBgBgBgN?.?.?.?.BgBgBgBg?<NHl ,Hl8N'PBgHl:?<GN "P?<N T|A@8Hl 0Hl8N&VPA8  l("(, A!@?.?.?.?.?<Bg/,(NN^NuNVHnHnHnHn/,(N?.?.?.?.BgBgBgBg?<N?.?.?.?.BgBgBgBg?<NN^NuNV l( (, @/(Hl8N&P l(0(| @f0<`0< n0 l(0(| @f0<`0< n 0 n Pf l( ( @/N'X n0 l( ( @/N'X n0 l( (4 @/N'X n 0 l( (t @/N'nX n0 nSP n SP nSP n 0 nP n0N^NuNV0. |g``Bg/.?<=NHP=@ @m.?.?<>N0X/,?<N\=@ nf0<`PBg/.?<. `J0R@?Hl > l( (, @/N#> ?< /,(N8\BF` N @f0<`0.|g`?. ???<?.B/.?<N:0.?/,0/.N =@0.nmF , B-@Hn/<?.?<@Nb 8/.0.H/?.?<@ND @`)l F:)l J>2.HNlNx//Hl:?<NvXNB-@ .2.HN@NLN//Hl:?<NFX-l:-l>)l N:)l R>HnHl:?<NN-@Hn/<?.?<@N 8/,00.H/?.?<@Nz @ .N/,>/,:Hl V l( ( @/N!`` |g`?.?.??. ?N Hn/<?.?<?N 8/,00.H/?.?<?N @0.nl:?././,0N> ?. ???<?.B/.?< N:`$?. ???<?.B/,0?< Nl:0R@?Hl ^ l( ( @/N ?Hl b l( (| @/N ?</,(N\?</,(Nx\ nf?</,(Nb\ Em Dn,/,?<N\=@ nf0<`0 nf`RF0noRG0noBg?<NXLN^NuNV nfHl f l(/( n nBF`0nm`RGRF n nHHAg n 0 n0LN^NuNV?|0<=@=@`0.Rn nP..HHAfx0.Rn nP0.Rn n|=@0.Rn n|=@0.2<A=@><`0.Rn n RG0nc`0.Rn n 0.2.AeH>N^NuNVHBg?<N XHnHnHnHn/,,Nt?.?.?.?.BgBgBgBgBgN?.?.?.?.BgBgBgBg?<N?.?.?.?.?<Bg/,,N?<?<Bg?<?.BHl?<N=@0.g0<`0< n0 n 0?<BgBg n RP0??.BHl?<N=@0.g n0O?<Bg nRP0??<?.BHl?<N^=@0.g n SP nSP?.?.?.?.BgBgBgBg?<N?.?.?.?.BgBgBgBg?<N0.V@?0.V@??.?.?<Bg/,(NBg?<N>XLN^NuNV0.R@?Hl l( ( @/N 0. R@?Hl l( (4 @/N ?. Hl l( (t @/N 0.R@?Hl l( ( @/N ?</,(N\?</,(N\?</,(Nz\?< /,(Nl\N^NuNV n n l(0(| @g0<`Z?N X9@g0<`0<N^NuNV?.?<LN XN^NuNV/ AӨ&H`0+ |g/ N*X AӨ"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NP?/+?+ NP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NP'@&Bk0<LN^NuNV fBC`&SCdTC0|g0|gԼdRC`|CHBC0|@HB LN^NuNVNVH n " n $&JjFFJjFFLN^@DNuNVH n"n $0(H@6C|g.0)H@:E|gE|BB0<まef bRAQ$0P`HNVH n$0(H@6C|gd"n .0)H@:E|gD|E(HD*HE20HGHBBB8:BGBBЇӄЂӅJg$0P`B`NVH"n 0<9@BQ`NVH"n BlB n,0(H@8D|fB.0)H@:E|fB2$60Enfl8,:.6$0Jg0Eg|n0@gDԇ0,BQ fBB`HSCdTC0|g0|gԼdRC`|"|CHB|C0|@HB AHABA LN^NuNVH0.|=@n n f n0H-@HnNFXA-H`> n(g nf. n-P n(f HnNX` HnNXA-H/./. 0.A PNPLN^/W DDNuN^Nu)@:Hl:NXONu)@:Hl:NtXONuHl:N*XO ,:Nu)A2Hl2NXONuHl2N XO",2NuNVH n "(fJg"¼м@ LN^NuNVH nB fB`м8 LN^NuNVH n$fBCB`nD6< f႖|NN^NuNVH0&n$n Bn-J @)P:)h>-l:-l>BEG>O|g|JGn|m` REHlT/ NPO`SEHlT/ N2PO`&0+H@JGgDG0<0dR@0.BAQ,>QQֆG|0QB`Rn0.g$nB`0R 2.HmB`b .6.HЃR$@ nH|0fRZ"` R"H|9n nH|0f$n R&@fSE .6.HЃ @B n0L N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BN` -@?<?.B?<BNF -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@g <` `Bl . N^NuNV/.?<IN\N^NuNVBn`&0.A0nf0.ABPRn nLmN^NuNV?>.=|0A"HPgXHf0(>N^Nu)I)J)_NN"l$l/,Nu)I)J)_NA"l$l/,NuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/NP X-@ .fp`FSn0.A P m0.A0| |A`0.A0|0 SR0.fLN^NuNVH&n n f=| )n:)n>Hl Hl:?<N]|@0. R@?HnHnHnN8.g SR-.H|0f.f SR`J nff>.n RG0lFo0,F`0> Gl0<`0?HnHnHnNBF`0RFA SRSGSn0g nl` SR0Sn nl0. g SR.` SR0RnSn 0. g nm`" Go0RFAH`0<0 SRSG0. Sn J@f`` SR0. g SR.><`0RGA SR0. Sn J@f SRE?.Hl /N /NXHѓLN^NuNVBn`"0. n PHC|0=@ nR n PH|0m n PH|9o0.N^NuNVH0&n -n @$PX`R` nRg H|%fH|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN$X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NV 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @)P:)h>/,>/,:Hn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f` nR .o .R-@f nB .L N^NuNVHn /.NhPN^NuNVH0&n$n -K`fS`f .`L N^NuNVH0&n$n `RRgHHAgHHC`L N^NuNV n "n fN^NuNVH0&n$n >.-K`0SGJ@g f .`L N^NuNVH0&n$K`Rf `L N^NuNV n R @H=@` n R @H=@ n g n g n g0.N^NuNV=| nxg nXf n f0<`f n0m n9n0.|0=@`2 nam0.|a| =@` nAm0.|A| =@0.n o0<``0.N^NuNVBnBHnNX=@ n-f0<=@ nRH=@`0 ./0.H/Nj 6.HЃ-@ nRH=@?.?.NX=@ @f g n 0.g .D` .N^NuNV?< /</.N@ HN^Nu)I)JHlt)_Hl" <sNB"l$lNuNV)n)n .мZ)@9|dtBlv9| z n 9PN n 0At)HAt)HAt)HAt)HN^NuNV`4 nH| f?< ?<N\X nRH??<NDX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNVH0&n $KA -H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.N TJ@f`H| f |o@ H-@/./.?.?<@N 9@Hg0<`0,n/./<?.?<@N 9@ @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@Nz 9@Hg0<`0,nBl0.L N^NuCbA"A8"A:"A<"AH"AJ"AL"AX"AZ"A\"A^"A`"Ab"Aj"Al"An"Ar"At"Av"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A"A "A"A"A"A"A "A""A."A4"A6"A8"A:"A<"AH"AP"Aj"Al"An"Ap"A~"A"A"A"A"A"A"A"A"A"A"A."Ad"A"A"A"A"AL"A"A"A"A$"A`"A"A"A"A"C^"CP" CL"C*"Cn"""2222r22282"""2222222 2"""2222222 2" " " 22222222" " "22222222"""22222222"""22222222"""22222222"""22222222"""22222222""" 22222222"!"""#22222222"$"%"&22222222"'"(")22222222"*"+",22222222"-"."/22222222"0"1"222222222"3"4"52222222 2"7"8"92222#2222":";"<2222"2222">"?"@22222222"E"F"G22222222"H"I"J22222222 "K"L"M2222222 2"N"O"P22222222C222*222"H2 22<2222222"222<222222@2"22222*22)222"22242 2222220"R222$2 222222"222$2222222"S222!22 22 222"22222 22222"222 2222222"22222 2 2 222"222 22 22222"22222 22222"2 222222222"2222222222"22222 22222"2222222222"222 2222222"2222222222" 2 222222222"2222222222" 2222222222" 2 222222222" 2222222222" 2222222222"222 2222222"2222222222"2222222222"2222222222"2 222222222"222 22222220"6222 22"2 2!2221"S2&2222!22222 "222 2222222"222 22#22222"=22 222(2$2%2220"R2&2222%22222"22222#2&2'222"222 22'22222!"A222 22%22222 "B222 22)22222"C22 2 2222222"D22 2222+2,2221"R222422,22222"222422*2222%2 "22202222222"s2 222222222"2 22 222222 2"2222222 222 "12 22B2222222"Q22292222222"R2222222222"S222 2222222"T222,2222222"U22252222222"V222:2222222"W222;22 22222"X2"2 222 22222"Y2"2 222 22222"Z22 2722 22222"[222822 22222"\222#222222`2"222B2222 222"222B2 222222"]222B2222222"^22272222222"_222:2222222"`22282222222"a22292222222"b2222222222"c22 222 22222"d22 2222222`2"222B2 C""-"0">C2CSHADOW.RSCCf2w2$2G2A)HA*)HA~)HA)HA)H A)HA")HAL)HA)HA)HA )HA)HA)HAR)HCӨ"2"2 2"2"2"22"2"2"22"2x9|Ӧ)l T)l X)l P)l H)l L9|FCA"A"A"A$"A*"A"A "NuMagic Shadow Archiver R1.03, 1987, by Steve FeinsteinINFORMATIONSides/disk:@_9Track:__Sectors/track:@1__99Side:__Tracks:@1__99-@1__99Status:________Compression:OverrideDo it!ExitDISK  FILEDRIVEABAUTO-FORMATANALYZEFILENAME, CLICK TO CHANGEFILENAME.MSAJust a sec,Analyzing disk format...Gee whiz, you found my secret acknowledgement box!Special thanx to:Bill Kokonifor the many hours of blood sweat and tears,Michael Schuster for an Idea who's time has come, andJoseph Venturelli, Well Joe it looks like I finished one!Lenore and Fred Feinstein, My parents. Without whom thisentire project would have beenimpossible. "REALLY!"And if you're name isn't up there , then this last oneis for you. For you are truly what keeps people like megoing for "just a little bit more." Magic Shadow Archiver is Copyright (C) 1987 By Steve FeinsteinThis program is distributed under the User Supported or'Shareware' concept. If you find this program useful and use it, please compensate the author for his efforts andregister by sending a check or money order for $10.00 to:Steve A. Feinstein56-26 244th StreetDouglaston, NY 11362 1987, Steve Feinstein[1][Sorry, unable to allocate| sufficient memory for| track buffers!][Exit][1][ |Error opening output file][Try Again][1][ |Error: File Exists!][Change|Replace][1][ |Error: Writing file!][Exit][1][ |Error: File not found!][Try Again][1][ |Error: SHADOW.RSC not found!][Exit][1][ |Error: Couldn't complete| this operation| successfully.][Retry|Continue|Abort][2][ |User requested abort][Abort|Continue][1][ |Error: Couldn't format track][Retry|Abort][3][This disk contains more than|10 sectors per track. You|must format this type of disk|yourself. No formatting of|any kind will be done.][OK| Exit ][1][ |This file is not a valid|Archived disk format file][Exit][3][ |Sorry, but The Magic Archiver|must be seen in meduim rez to|truly be appreciated.][OK, I'll switch!][1][ |First track can't be|greater than the last!][OK, I'll change it!]@Y@Y[0][ |%lu bytes read |%lu bytes written |%.1f%% compression |][ OK ][0][ |%lu bytes read |%lu bytes written |][ OK ]C:\FILENAME.MSA%d@Y@Y%.1f%%%d%dDISK  FILEFILE  DISK\*.MSA\%2d%2d%2d%d@$??CON:AUX:PRT:%d . w.. wSTARWARSACC w%STARWARSC #w57STARWARSTXT'w3 ``N6NN NbNNN N ^N.K mNf]` m"m -So Q m -SBQ(m)MO*mN0N?<N H?<A?<NAX <B@SfLNuNV0.|g`Hl?<N\BgNT`|g`HlT?<N\BgNT`|g`Hl?<N\BgNT`| g`Hl?<N\BgN~T`|g`Hll?<N\BgN^T`|g`Hl?<Nr\BgN>T`|g`Hl?<NR\BgNT`|g` Hl?<N2\Hl6NX0<f`|g`HlNX?<NHT``N^NuNVBn`0.RnA0 n m9|9lPNHl\HlNHlNJ @f ?<NzTN^NuNVN lf ?<N\THlTHlVHlZHlXN9@PHlh?,N@\9@R lRf N @f ?<NT` ?<NTHlHHlFHlJHlL?<BgN @f ?<NTHl6NX?<NT @f ?<NT l(6f0,>lRfN?,H?,F?,J?,L?,T?,V0,J2,HlTA@?0,L2,FlVA@?N @f ?<NFTHl|?<Nd\=@0.|g`0,4fNJ@V|9@40,4gb?,H?,F?,J?,L?,T?,V0,J2,HlTA@?0,L2,FlVA@?N @f ?<NTHl.?<N\`` |g`0,4gNhJ@V|9@40,4fb?,H?,F?,J?,L?,T?,V0,J2,HlTA@?0,L2,FlVA@?N @f ?<N(THl?<NF\`?<NT``?,NN$TBgNT @f ?< NT0<f N^NuNuNV@H瀀 @g @g LF/:BNu A P0 @Ig @Jg @3f A h0 @g @f A h 0LFNsN^NuNVB?< N\-@ | A" A At  | /.?< N\0<N^NuNVB?< N\-@ | A4"gp | A~" Ag$/.?< N\Hl?<N\0<`r`6/.?< Nh\Hl?<N\A2  @ 0<W|`:`8A  @  | A  @ /.?< N\0<W|N^Nu)I2)J."/0<NB"l2$l.Nu NV9n*0.| A" AA-H=|` nR2.A*H0Rn nm/,N.X0,N^NuNVA*)HA )HA)HA)HA)HA)HA)H?< NXT9l0,N^NuNV?<NN jX9@fg0<`0<N^NuNV?.?<LN DXN^NuNV/ A&H`0+ |g/ N*X A"Ҽm?.NT&_N^NuNV/ &n/ NDXJ@g0<`00+ |g /+N JXBk ?+ N,TJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NP?/+?+ N~P @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NXP'@&Bk0<LN^NuNV/ &n Bk0+ |fk@ 0+ |@g0<` `R0+ |g A򐈁AA &'@`*0+H/NX&'@ fk `k g0+ |g SR k `<0+ |g2k SR . H| g kl . H|`T/ N\XJ@g k@ 0<`<0+ |gBk. H|`"` 0+S@7@k . SRH|&_N^NuNV n Sh0( @m. n "R AH|`/. . H?N\N^NuNV fBC`&SCdTC0|g0|gԼdRC`|CHBC0|@HB LN^NuNVNVH n " n $&JjFFJjFFLN^@NuNVH n"n $0(H@6C|g.0)H@:E|gE|BB0<まef bRAQ$0P`HNVH n$0(H@6C|gd"n .0)H@:E|gD|E(HD*HE20HGHBBB8:BGBBЇӄЂӅJg$0P`B`NVH"n 0<9@䌱Q`NVH"n Bl n,0(H@8D|fB.0)H@:E|fB2$60Enfl8,:.6$0Jg0Eg|n0@gDԇ0,䌱Q fBB`HSCdTC0|g0|gԼdRC`|"|CHB|C0|@HB AHABA LN^NuNVH0.|=@n n f n0H-@HnNXA-H`> n(g nf. n-P n(f HnNX` HnN>XA-H/./. 0.Ah PNPLN^/W DNuN^NuNVH nB fB`м8 LN^NuNVH n$fBCB`nD6< f႖|NzN^NuNVH0&n$n Bn-J @)P)h-l-lBEG>O|g|JGn|m` REHl/ NRPO`SEHl/ NPO`&0+H@JGgDG0<0dR@0.BAQ,>QQֆG|0QB`Rn0.g$nB`0R 2.HmB`b .6.HЃR$@ nH|0fRZ"` R"H|9n nH|0f$n R&@fSE .6.HЃ @B n0L N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV nl <`?.?./. ?<BN -@ m .`?<?.B?<BNZ -@?<?.B?<BN@ -@ nf .Ю -@ `$ nf .Ю -@ `0.g <`b . oHn . /?.?<@N Bg?./. ?<BN ]|9@fg <` `Blf . N^NuNV/.?<HN\N^NuNV/.?<INr\N^NuNVBn`&0.A60nf0.A6BPRn nLmN^NuNV?>.=|0A6"HPgXHf0(>N^Nu)I2)J.)_*NA"l2$l./,*NuNVH&n Bn0.|dg`>< `.`|ug`>< ``|og`><``|xg`>< l* ndf SR- .D-@`0. f Gf .`& Gf .` ./0H/NX 2.RnA0 Gf .`( Gf .` ./0H/N X-@ .fp`FSn0.A P m0.A0| |A`0.A0|0 SR0.fLN^NuNVH&n n f=| )n)nHlPHl?<N]|@0. R@?HnHnHnN.g SR-.H|0f.f SR`J nff>.n RG0lo0,`0> Gl0<`0?HnHnHnN4BF`0RFA SRSGSn0g nl` SR0Sn nl0. g SR.` SR0RnSn 0. g nm`" Go0RFAH`0<0 SRSG0. Sn J@f`` SR0. g SR.><`0RGA SR0. Sn J@f SRE?.HlX/N: /NpXHѓLN^NuNVBn`"0. n PHC|0=@ nR n PH|0m n PH|9o0.N^NuNVH0&n -n @$PX`R` nRg H|%fH|%f,RBn=|Bn| H|-f=|RH|0f|0R-JHnN$X=@$nH|.fR-JHnNX=@$nH|lf=|RgH-n Gdg Gog Gxg GufB0.g @ ` @0H/Hn?.?NV 0.g0<`0<H` Gcf R @ nRT` Gsf4 @-PX<.` nR nRSF0g nf`J Geg Gfg Ggf, @)P)h/,/,Hn?.?NP` 0 nR .nl0.g$<.".A` nRSF0f`b .2.SAHЁ-@-@,.` .2SAHЁ @ nSSF0f` nR .o .R-@f nB .L N^NuNV/. HnNhP=@/.HnN8P0.N^NuNVHnHlNPN^NuNVHn /.N&PN^NuNV`/. nRH?N\ nfN^NuNVH0&n$K`Rf `L N^Nu)I2)J.Hl)_Hl" <sNB"l2$l.NuNV)n)n" .мZ)@&9|dBl9| n 9PN n 0A)HA)H"A)H&A)HN^NuNV9|eBlBl9nNXN^NuNV`4 nH| f?< ?<NJX nRH??<N2X0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNVH0&n $KA\-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NTJ@f`H| f |o@ H-@/./.?.?<@N 9@fHg0<`0,fn/./<?.?<@N 9@f @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@Nh 9@fHg0<`0,fnBlf0.L N^Nu0<W|9@4C"2"2 2"2"2"22"2"2"22"2x9|)l*)l.)l2)l6)l:9|ChA"A"A"A$"A*"A"A "Nu[3][ | StarWars Switcher | | Internal program error. | ][ Cancel ][3][ StarWars Switcher | | Can't create any special | effects. | ][ Cancel ][3][ | StarWars Switcher | | Can't open work screen. | ][ Cancel ][3][ | StarWars Switcher | | Can't release screen. | ][ Cancel ][3][ | StarWars Switcher | | Can't freeze screen. | ][ Cancel ][3][ | StarWars Switcher | | Can't get desktop size. | ][ Cancel ][3][ StarWars Switcher | | Can't get into Desk menu. | ( Too many accessories? ) | ][ Cancel ][3][ StarWars Switcher | | Can't exit as a GEM appli- | cation. | Accessory deactivated. ][ Cancel ] --- StarWars Switcher --- Can't initialise as GEM application. Program ends... StarWars Switcher[3][ Star Wars Switcher | This accessory allows you | to enable or disable GEM's | special effects at will. | 21/08/88 E. v.d. Meerakker ][ FX ON | FX OFF ][1][ | Star Wars Switcher | | Special effects OFF. | ][ OK ][1][ | Star Wars Switcher | | Special effects ON. | ][ OK ][2][ S.W.S. PROBLEM | I cannot properly restore | the normal TRAP 2 vector. | - The vector has changed | since 'FX OFF' was set. ][ Cancel ][1][ S.W.S. WARNING | I cannot properly restore | the normal TRAP 2 vector. | - The vector was restored | since 'FX OFF' was set. ][ OK ]@$??CON:AUX:PRT:%d #include #include #include #define TRUE (0 == 0) #define FALSE (! TRUE) extern int gl_apid ; /* SHOULD be returned by appl_init() */ int contrl[ 12 ] , intin[ 128 ] , ptsin[ 128 ] , intout[ 128 ] , ptsout[ 128 ] ; /* storage wasted for idiotic bindings */ int work_in[ 11 ] , /* Input to VDI parameter array */ work_out[ 57 ] ; /* Output from VDI parameter array */ int gl_hchar , gl_wchar , gl_wbox , gl_hbox , /* system sizes */ menu_id , /* our menu id */ phys_handle , /* physical workstation handle */ handle , /* virtual workstation handle */ xdesk , ydesk , hdesk , wdesk ; /* desk sizes */ msgbuff[ 8 ] ; /* event message buffer */ #define DEFAULT 0 #define E_APPL_INIT 1 #define E_APPL_EXIT 2 #define E_NO_MENU_ID 3 #define E_WIND_GET_DESK 4 #define E_BEGIN_WIND_UPDATE 5 #define E_V_OPNVWK 6 #define E_GRAF_SHRINKBOX 7 #define E_PROGERROR 8 #define E_END_WIND_UPDATE 9 quit( errnum ) int errnum ; { switch( errnum ) { case E_PROGERROR : form_alert( 3 , "[3]\ [ \ | StarWars Switcher \ | \ | Internal program error. \ | \ ][ Cancel ]" ) ; quit( DEFAULT ) ; /* stands for jump to default case */ case E_GRAF_SHRINKBOX : form_alert( 3 , "[3]\ [ StarWars Switcher \ | \ | Can't create any special \ | effects. \ | \ ][ Cancel ]" ) ; quit( DEFAULT ) ; case E_V_OPNVWK : form_alert( 3 , "[3]\ [ \ | StarWars Switcher \ | \ | Can't open work screen. \ | \ ][ Cancel ]" ) ; quit( DEFAULT ) ; case E_END_WIND_UPDATE : form_alert( 3 , "[3]\ [ \ | StarWars Switcher \ | \ | Can't release screen. \ | \ ][ Cancel ]" ) ; quit( DEFAULT ) ; case E_BEGIN_WIND_UPDATE : form_alert( 3 , "[3]\ [ \ | StarWars Switcher \ | \ | Can't freeze screen. \ | \ ][ Cancel ]" ) ; quit( DEFAULT ) ; case E_WIND_GET_DESK : form_alert( 3 , "[3]\ [ \ | StarWars Switcher \ | \ | Can't get desktop size. \ | \ ][ Cancel ]" ) ; quit( DEFAULT ) ; case E_NO_MENU_ID : form_alert( 3 , "[3]\ [ StarWars Switcher \ | \ | Can't get into Desk menu. \ | ( Too many accessories? ) \ | \ ][ Cancel ]" ) ; quit( DEFAULT ) ; case E_APPL_EXIT : form_alert( 3 , "[3]\ [ StarWars Switcher \ | \ | Can't exit as a GEM appli- \ | cation. \ | Accessory deactivated. \ ][ Cancel ]" ) ; default : do { evnt_mesag( msgbuff ) ; } while ( TRUE ) ; /* accessories never end... */ case E_APPL_INIT : printf( " --- StarWars Switcher --- \ \n Can't initialise as GEM application. \ \n Program ends...") ; exit( E_APPL_INIT ) ; /* can't get to GEM, so try exit()... */ } } open_vwork() { int i ; for( i = 0 ; i < 10 ; work_in[ i++ ] = 1 ) ; work_in[ 10 ] = 2 ; handle = phys_handle ; if( v_opnvwk( work_in , &handle , work_out ) == 0 ) quit( E_V_OPNVWK ) ; } main() { appl_init() ; if( gl_apid == -1 ) quit( E_APPL_INIT ) ; phys_handle = graf_handle( &gl_wchar , &gl_hchar , &gl_wbox , &gl_hbox ) ; menu_id = menu_register( gl_apid , " StarWars Switcher" ) ; if( menu_id == -1 ) if( appl_exit() == 0 ) quit( E_APPL_EXIT ) ; else quit( E_NO_MENU_ID ) ; if( wind_get( 0 , WF_WORKXYWH , &xdesk , &ydesk , &wdesk , &hdesk ) == 0 ) quit( E_WIND_GET_DESK ) ; do { evnt_mesag( msgbuff ) ; if( wind_update( BEG_UPDATE ) == 0 ) quit( E_BEGIN_WIND_UPDATE ) ; if( msgbuff[ 0 ] == AC_OPEN ) if ( msgbuff[ 4 ] == menu_id ) { static int fx_off = FALSE ; int fx_newstate ; open_vwork() ; if( graf_shrinkbox( xdesk + (wdesk - gl_wbox) >> 1 , ydesk + (hdesk - gl_hbox) >> 1 , gl_wbox , gl_hbox , xdesk , ydesk , wdesk , hdesk ) /* sample starwars effect */ == 0 ) quit( E_GRAF_SHRINKBOX ) ; fx_newstate = form_alert( 1 , "[3]\ [ Star Wars Switcher \ | This accessory allows you \ | to enable or disable GEM's \ | special effects at will. \ | 21/08/88 E. v.d. Meerakker \ ][ FX ON | FX OFF ]" ) ; switch( fx_newstate ) { case 2 : fx_off = fx_off || detour() ; /* don't detour the detour */ /* 'short circuit evaluation' is a C feature */ if( fx_off ) { if( graf_shrinkbox( xdesk + (wdesk - gl_wbox) >> 1 , ydesk + (hdesk - gl_hbox) >> 1 , gl_wbox , gl_hbox , xdesk , ydesk , wdesk , hdesk ) /* this one should never show up, but I'm just checking ... */ == 0 ) quit( E_GRAF_SHRINKBOX ) ; form_alert( 1 , "[1]\ [ \ | Star Wars Switcher \ | \ | Special effects OFF. \ | \ ][ OK ]" ) ; } break ; case 1 : fx_off = fx_off && highway() ;/*go to highway from detour*/ if( !fx_off ) { if( graf_shrinkbox( xdesk + (wdesk - gl_wbox) >> 1 , ydesk + (hdesk - gl_hbox) >> 1 , gl_wbox , gl_hbox , xdesk , ydesk , wdesk , hdesk ) /* this one should always show, unless it wasn't possible to have FX in the first place; e.g. when using CPANEL++ */ == 0 ) quit( E_GRAF_SHRINKBOX ) ; form_alert( 1 , "[1]\ [ \ | Star Wars Switcher \ | \ | Special effects ON. \ | \ ][ OK ]" ) ; } break ; default : quit( E_PROGERROR ) ; } v_clsvwk( handle ) ; } if( wind_update( END_UPDATE ) == 0 ) quit( E_END_WIND_UPDATE ) ; } while( TRUE ) ; } #define SSP A7 #define TRAP2 0x0088L #define illegal dc.w 0x4AFC /* used while testing */ int FX_CHECK() , GEMTRAP() ; /* labels are needed outside FXcontrol() assembly for detour() and highway() */ FXcontrol() /* Here comes the value added part of this program: */ { asm { FX_CHECK: move.w SR , -( SSP ) movem.l D0 / A0 , -( SSP ) /* careful with registers */ cmpi.w #0x00C8 , D0 /* signals GEM AES trap (?) */ beq.s intercept cmpi.w #0x00C9 , D0 /* ditto (I KNOW 0x0073 means VDI!) */ beq.s intercept togem: movem.l ( SSP )+ , D0 / A0 move.w ( SSP )+ , SR /* restore registers */ move.l GEMTRAP , -( SSP ) /* back to normal AES & VDI handler */ rts /* that's all for non-FX VDI/AES calls */ intercept: move.l D1 , A0 /* D1 points to Parameter Block (PB) ! old DRI docs said it's D0 ... */ movea.l ( A0 ) , A0 /* pointer to control[] array in A0 */ move.w ( A0 ) , D0 /* control[ 0 ] in D0 ... */ cmpi.w #GRAF_GROWBOX , D0 /* ... == graf_growbox() ? */ beq.s gotit /* gotcha! */ cmpi.w #GRAF_SHRINKBOX, D0 /* or == graf_shrinkbox() ? */ beq.s gotit /* gotcha! */ cmpi.w #FORM_DIAL , D0 /* or == form_dial() ? */ bne.s togem /* darn , missed! */ /* form_dial() : check int_in[ 0 ]. the form_dial() traps are necessary because f_d calls graf_growbox and graf_shrinkbox directly (how's that for modular code? ...). Same goes for Atari's Desktop (rumours are the Desktop must be seen as one of the dirtier applications on the ST. Can't handle the Desktop, but we can catch form_dial() ... */ move.l D1 , A0 /* pointer to PB in A0 */ movea.l 8( A0 ) , A0 /* pointer to int_in[] array in A0 */ move.w ( A0 ) , D0 /* int_in[ 0 ] in D0 ... */ cmpi.w #FMD_GROW , D0 /* ... == fmd_grow ? */ beq.s gotit /* gotcha */ cmpi.w #FMD_SHRINK , D0 /* or == fmd_shrink ? */ bne.s togem /* false alert */ gotit: /* need to fake return value : */ move.l D1 , A0 /* pointer to PB in A0 */ move.l 12( A0 ) , A0 /* pointer to int_out[] in A0 */ move.w #1 , ( A0 ) /* int_out[ 0 ] != 0 sufficient (?) */ movem.l ( SSP )+ , D0 / A0 move.w ( SSP )+ , SR /* restore registers */ rte /* return to calling application */ GEMTRAP: dc.l -1L /* stowage for old TRAP 2 vector */ } } int detour() /* catch all TRAP 2 (GEM AES & VDI) calls */ { long SaveSP ; /* storage for user stackpointer */ SaveSP = Super( 0L ) ; /* in supervisor mode */ *(long *)GEMTRAP = *(long *)TRAP2 ; /* save old trap vector value */ *(long *)TRAP2 = ( long )FX_CHECK ; /* wedge FX_CHECK into TRAP 2 */ Super( SaveSP ) ; /* back to user mode */ return( TRUE ) ; /* returns new fx_off */ } int highway() /* restore normal flow of GEM calls */ { long SaveSP ; SaveSP = Super( 0L ) ; if( *(long *)TRAP2 != ( long )FX_CHECK ) /* someone's been shooting our game! */ { if ( *(long *)TRAP2 != *(long *)GEMTRAP ) /* and not for repairs either */ { Super( SaveSP ) ; /* to be on the safe side */ form_alert( 1 , "[2]\ [ S.W.S. PROBLEM \ | I cannot properly restore \ | the normal TRAP 2 vector. \ | - The vector has changed \ | since 'FX OFF' was set. \ ][ Cancel ]" ) ; return( TRUE ) ; /* returns new fx_off */ } else /* somehow TRAP2 is restored. May have been a virus watcher program or even a virus! Since the TRAP2 vector already has the 'reset' value we would have set, assume we are back to normal */ { Super( SaveSP ) ; form_alert( 1 , "[1]\ [ S.W.S. WARNING \ | I cannot properly restore \ | the normal TRAP 2 vector. \ | - The vector was restored \ | since 'FX OFF' was set. \ ][ OK ]" ) ; *(long *)GEMTRAP = -1L ; /* kill old copy; see below */ return( FALSE ) ; /* returns new fx_off */ } } else { /* in super mode : */ *(long *)TRAP2 = *(long *)GEMTRAP ; /* restore old TRAP 2 vector */ *(long *)GEMTRAP = -1L ; /* kill 'old' copy; just in case someone changes TRAP 2 himself. if -1 gets to be TRAP 2 vector you're in BIG trouble, no doubt about that. Being an odd address it gives you two bombs (== address error). (I always like to be sure WHAT goes wrong if it HAS to ...) */ Super( SaveSP ) ; /* normal programs run in user mode ...*/ return( FALSE ) ; /* returns new fx_off */ } } Eindhoven, 27 augustus 1988 Een kleine toelichting op STARWARS.ACC en STARWARS.C Een paar dagen geleden las ik op het ATARINET BBS een bericht van iemand die al die 'starwars' (of 'Zap en Zoink') effecten maar lastig en tijdrovend vond om aan te moeten zien. Dat bericht schudde een vage herinnering wakker aan oude Digital Research documenten over GEM VDI en GEM AES, en wel speciaal dat die effecten van groeiende en krimpende rechthoeken - hierna FX genoemd - aparte functieaanroepen vereisten. Dat blijkt ook zo te zijn op de Atari ST (die docs gingen over PC GEM versie 1.1 met alleen een minimale toelichting op de VDI aanroepprocedure onder CP/M 68k). Het accessoire dat bij deze tekst hoort, geeft U de mogelijkheid om de FX uit te zetten of (weer) toe te staan. Als het accessoire geladen en gestart wordt in het geheugen van de ST, wordt er eerst nog niets veranderd. Dit omdat het vaak WEL zo gemakkelijk is om die FX te zien, zeker als u nog niet zo goed bekend bent met een programma (zie bijvoorbeeld 1st Word). Pas als U expliciet aangeeft dat de FX uitgeschakeld dienen te worden, zal het accessoire ingrijpen en de normale GEM aanroepen van een programma gaan controleren. Als de FX dus niet uitgeschakeld zijn, zou er dus geen enkel probleem moeten zijn met eventuele 'botsingen' tussen STARWARS.ACC en Uw andere programma's of accessoires. Helaas kan ik niets doen aan de FX die de desktop vertoont, het desktop programma in de ST roms gebruikt niet de fatsoenlijke GEM aanroep om zijn wensen aan GEM bekend te maken, maar doet het geheel op zijn eigen manier. Helaas... Ik heb de volledige programmatekst toegevoegd om iedereen de mogelijkheid te geven het programma naar eigen behoefte aan te passen, zonder opnieuw het wiel te moeten uitvinden. (Ik denk hierbij aan bijvoorbeeld een 'terminate and stay resident' programma of een accessoire dat WEL eerst de FX uitschakelt.) De gebruikte C-compiler is Megamax C V1.1. Verder commentaar op het programma vindt U ook in de programmatekst. Uiteraard geef ik geen garantie dat dit programma foutloos is, en evenmin is enige schade die voorvloeit uit het gebruik ervan mijn persoonlijke verantwoordelijkheid. De voorgaande zin dient uitsluitend als bescherming van mijzelf en mijn financile situatie, die trouwens een claim voor schadevergoeding toch nooit zou kunnen verdragen... Reacties graag aan onderstaand adres: Eric v.d. Meerakker , Ganzebloemstraat 35 , 5643 JN Eindhoven , of laat een bericht achter op het Atarinet BBS (daar log ik tenminste met enige regelmaat in). PS Inmiddels heb ik gemerkt dat CPANEL.ACC ook de FX uitschakelt (en nog veel meer doet). Maar aangezien de source code daarvan niet in het PD lijkt te zijn, leek het me toch nuttig dit accessoire te verspreiden. . *w.. *wVKILLER PRG,wVKILLER RSC4w 7VKILLER TXT8wI `M.[aB**o"m #.I+I/ BBBg/ / Bg?<JNA N ?NK?<LNA#:-);-)8-)d:\vkiller.prg\1988\6\2\6\37#(-8(-;(-:NVN<4HyHyxHyHyN=3Hy Hy Hy Hy p?BgN?NpNN@N=@0.f$N^N BBgN> \ONXN?92N?8TO?92N?TO?9N@TONN!$`4N% `*N&` N^NuNVHp?NNTO3 \09 \f /9p?N<\Op?NKTO`Z y \f@~ Gl.0HG 0HAP??p?NN\O6RG`p3^` y \fBy^By:By ByBy Zp3*ByXBgHy pG?NAPOp?NATO>0@A p: HyQHy NEDPO~ Gl6G 6?Bgp?NN\OHRG`LN^NuNV/ y \f&~ Gl0HA ??p?NN\ORG`~ Gl$0@?0G 6H?p?NN\OHRG`p?p?NAXOBgBgp?BBgp?NMp?Bgp?BBgp?NM.N^NuNV09 Ry 0fB?<N> \ON^NuNVSy fB?<N> \ON^NuNVBn n l0.HAp0Rn`p3HyHyHyNA6 N^NuNV=n=n 0. n=@0.n =@Hnp??9NBPON^NuNV?9 ?9 ?9 ?9 BgN?T 3232N^NuNV?9 ?9 ?9 ?9 ?92N? Hy4HyHy(Hy&p??92N?N^NuNV y \fBn3^N,p??9NBXO?.?9NB\XOp??9NCXO=y&=y(09&yS@=@09(y4S@=@Hn?9N@F\ONRN^NuNV/.N~XO?. /.N=~\O@=@/.NXO0.N^NuNV n=h n=h n=h n=hHnHnHnHn/.N<?.?.?.?.?.?.?.?.BgN="?.?.?.?.p?Bg/.N>xN^NuNV n=h n=h n=h n=hHnHnHnHn/.N<?.?.?.?.?.?.?.?.p?N="N^NuNV/0.  @>( G0.  @1G .N^NuNVBDByHByJByLByNByPByRByTByVN^NuNV/~ G lB0Ht/NEXOR@?0Ht/0X@?/9N` RG`.N^NuNV0.  @-h n  n1nN^NuNV/HyQ@N>XO>0fHyPp?N<\Op`Hy.BgBgN>POHy$p?BgN>POHyPOHyp?BgN>POHy p?BgN>POHyp?BgN>POHy p?BgN>POHyp?BgN>POHy p?BgN>POHy(p ?BgN>POHy,p ?BgN>POHy0p ?BgN>POHy6p ?BgN>POHy@p ?BgN>POHy Dp?BgN>POHyp?BgN>POHy Np?BgN>POHyBgp?N>POHy"p?p?N>POHyp?p?N>POHy Hp?p?N>POHyp?p?N>POHypp?p?N>POB@.N^NuNV/ *y. y \fHyQ`6HyQ`.HyQ`&HyQ`HyR`HyR`HyR`HyR???9N@ B@L N^NuNVHHnp?N> \O?.Bgp?BBgp?NM?.p?NMXO( f./9p?N<\Op3*HnBgN> \Op`|?.Bgp?Hy,Bgp?NM( gx~ Glp?.?p?0HHH,/Bgp?NM( g@0gz El0HHE0@,BRE`HyR"0HHH,/NEPORG`0.@A?HyR:HytNE BA9?AB@9@HA3|BA9FAB@9GHA>09|H<?HyRXHyNE BA9DAB@9EHA>0H<?HyRtHyNE ?HyRHy4NE BA9:AB@9;HA>?HyRHytNE BA9BAB@9CHA3 ?9 HyRHyNE B@9HAH3 ?9 HySHy4NE 09 R@3z9 G4f0HySHytNEPOp=@p3 By HyS,`JHyS.HytNEPOBnBy N 0gp3 HySCHy`By HyS[Hy4NEPOz y oBA9:AB@9;HAV@=@0.y =@0.HH=@0.HH=@Bn09 W@noF0.H,/NXO2A0.H,/NXO2AnnRn`0g,HyS]09 @ Ht/NEPORy `,HySy`HyS09 @ Ht/NEPOByB@9, @`fjB@9- @8f\B@9f @AfNB@9g @f@B@9h @f2B@9i @f$B@9 @`fB@9 @8fp3B@9, @`fB@9- @8fxB@9. @fjB@9/ @f\B@9f @AfNB@9g @f@B@9h @f2B@9i @f$B@9 @`fB@9 @8fp3B@9N @fHB@9O @f:B@9P @f,B@9Q @fB@9l @f9mfp309 @bLH0@M PN` \OLN^NuNVH *n~<<0SF0g]`0L N^NuNVH *n~<<0SF0g]`0L N^NuNVH KJ~<<0SF0g]`BA9,ABA9-A0L N^NuNVH8BnBnBnp?NTO ng nfK,`K,0.HH8.0.f ?.HyT ` ?.HyT+HyNE 0.fHyTLHyNEPO`0.y,m0.y,R@<?9|?HyTX`d0.ynm0.ynR@<?9 ?HyTn`:0.yzm0.yzR@<?9 ?HyT`?9 ?.HyTHyNE y !|$| Fl0P(@?HyT/ NE XG4Dz El^H@@0@Q.H@0@Q.p  Efp p H0@H@gH`p.RE`p p B0 @ 0P!@$RF`:Bg/9 NB\O=@ nf6p?/9 N\O0.gBn`0.g=|Sn` nf8p?/9 N\O0.f =|` nlBnRn`p?/9 N\O`lp3 ZL8N^NuNV/ BnBnBnBnp3 Zp?NTOp?NATO f ng/9"p?N<\O=@` ngV nf p?NTOBg/9NB\O=@?./9N\O ngHnp?N> \O y0(:@gHnBgp?BgHy,N" y0(R@gVHnp??9 p?Hy,N"09zHHH,*@Hnp??9 ?9z/ N" y0(j@g409nHHH,*@Hnp??9 ?9n/ N"0.Rn @Blp ?N$TO`HnBgN> \O*_N^NuNVH8*nxnl0. Rn ?HyTHnNE 0.fHyTHnNEPO`Z nf?.0R@?HyT`2 nf?.0R@?HyU` nf?.0R@?HyU'HnNE HnN$XO nTPv| F l?HyUEHnNE ICG4z ElhB@H@H@B@H@ @Q.B@@H@B@H@ @Q.p  Efp p B@ @dB@ @cB@`p.RE`p p p p BHnN$XO nRP n P>o< n0RP @Blp ?N$TO`p ?N$TOp ?N$TO np0RF`p ?N$TO nRPRD`0L8N^NuNV/ *ngH?N$TO`*_N^NuNVp?NATO g?.p?NAXON^NuNVhp?NTOp3 Zp@@B.HyXHyQHnHnHy N-=@0.f /9`0.gHnp?N> \OHnHy HnhN&. HnhpA?NA\OBgHnhp `PHy,Hy(?.p@?NA =@?.p>?NAXOHnBgN> \O n(g/9pp?N<\ON^NuNV/. /.NErPO/.NEXOHЮ-@ nc. n \g$ n :fR np\` nBS`/./.NEDPON^NuNVH0p3 ZK,I4gB`KJI,gB`Hy,N)XO:0 @:0@HH*0@HH+Hnp?N> \O?9*Bgp?Hy,p?p?NM( f0?9*p?NMXO?9*Bgp?Hy,p?p?NM( g,/9 Hp?N<\OHnBgN> \Op3*`09fp3?9*p?NMXO?9*Bgp?HnBgp?NM( f,?9*p?NMXO?9*Bgp?HnBgp?NM( g /9`\zK,I4gHA`KJI*gHA`0g4?9*Bgp?Hy,p?p?NMHnBgN> \ON) y oKIgB`BA9:AB@9;HAV@<~09 W@Go?9*0G?p?Hnp?p?NM( f2?9*p?NMXO?9*0G?p?Hnp?p?NM( f@9 \OL0N^NuNVH *n~<<0SF0g]`0L N^NuNVp?NTOHyQLp ?NN\OBg/9 NB\Op?/9 N\ON^NuNVp?NTOBg/9 n`@Bg/90NB\O=@?./90N\O ngH n g n `Bg/96NB\O=@?./96N\O ng n g n `Bg/9@NB\O=@?./9@N\O ng n`~p3 ZN^NuNV/p/?NATO#Hyp?NA\O y\f N3By\ .f -|`` nf-|`/.NEXOR@?/.p?/9N: /.HyNErPOp?/. HyN8J B9B9xByp3N:~`RG G l$p?Hy^0@ ?/9N: `HyHyHyHy/9N<?9?9?9?9BgBgBgBgBgN="?9?9?9?9p?Bg/9N>xp3 yfHyHyNEZPO0gp309@g"N5p3HyHyNErPO09@gN:N6309@g$N: n0g n3 nBPN7v09@gN909@gN5Byp?/9N=~\O>gGp3`By0`N:N6(N;p3`N:0й-@"n i HyHyNErPON;p3`09gSyy`x09@ yldRyy`RHnHnHnHnN==y y0(rn y0(n y0(n0.nl y `y 09@ yo09@ 309lByy`"y y0(igp?p?p?/9N>D =@0.H =@09@ Hd309@ yo09@ 309lByy`09G@ =@0.HA f`N:p?0.H/HnN8J HnHyNEDPOHyHyNEDPON;p3`p?0.H/HyN8J y yfTp3`Hp3p"?/9N:t\O`*Byp!?/9N:t\O`[@ @bH0@Nj PN`?9?9?9?9BgBgBgBgp?N="Hy/.NErPOp?Hy/. N8J /9p?NA\O n0 n009.N^NuNVH8|#I~`RG G#lh?/9N?\O0,`4*, p//NLPO\)@ `.*, A@)P `@ @ bH0@N PN`G\~`RG Gl>* A@&*+ A@'P*+ A@'P`p ?NMTO*~ Gl8g( F l"0RF@й(@*l 0@A *RG` F l0RF@й(@l`L8N^NuNVN:N;p'?Hyp?/9N: ?9?9?9?9Bgp?/9N>xHyxNEXO?Hyxp ?/9N: ?9?9?9?9Bgp ?/9N>xN^NuNVp ?Hyp?/9N: ?9?9?9?9Bgp?/9N>xN^NuNV/ p\?HyNDD\O*@-M .fB9`Bp\?HyNDD\O*@-M .fB9`B-*_N^NuNV/. /.NEZPON^NuNVH~p?HypN?NAPO<0f9H @.gf9g0HAp`0HAp 0HAp p?Hy0RGH/N8J pO?NATO<`z3ByHy6p??HyNDb pLN^NuNVH 09@ yo" y o09@ 3`By~`RG G lT0yyl09GH*@`K^/ NEXO?/ 0@ ?/9N: `?9?9?9?9p?p ?/9N>xL N^NuNVH0*n(n >.|`RF FlHg8H @.f gp `H @ g RH`Rgp `gp ` .fRg  g gp.|`RF Fl2g"RH @ gH`gH`gp `BL0N^NuNVH 9*@>-:- 9*@<-8- y n:Bm;E?9?9?9?9p?p?/9N>x`|080H8RD0H80HR@<0H<0H<;F;D?9?9?9?9p?p?/9N>xL N^NuNV0.  @-h n  n1nN^NuNV/0.  @>( G0.  @1G .N^NuNV/0.  @>( G0.  @1G .N^NuNV/~`RG G l0@ ?/9N:t\O`.N^NuNVH8IG ,:fp\B \fR` \f Rp\B`Bp\?/ NDD\O*@-M .gHmHyxNErPO`/ HyxNErPOG-M .gg`p\B`BL8N^NuNVHyHyNErPOHyHyNEDPOHyxHyNEDPON^NuNV360.@ HO-@p=@ nl$0.HC6 nRB@2Rn`/9N@:XO09`N^NuNV#6#Z#>#`# R# h#p ?N;TO3` L09 LN^NuNVp?N;TOpN^NuNV3>#  Rp4?N;TON^NuNV# Rp6?N;TO n 0b n0d n0f n0h09`N^NuNV3>3 @3 B3D3F3H3J3L3Np3?N;TON^NuNV# R3 >p2?N;TON^NuNVpM?N;TO n0b n 0d n0f n0h09`N^NuNVpO?N;TO n0b n 0d n0f n0hN^NuNV3>#  RpN?N;TON^NuNV# R3 >3@3BpL?N;TON^NuNV# R3 >3@3B3D3F3Hp*?N;TON^NuNV3>3 @pp?N;TO n  h09`N^NuNV# Rpn?N;TON^NuNV# R3 >pr?N;TON^NuNV3>pf?N;TON^NuNV3>3 @3 B3D3Fpd?N;TON^NuNV3>pg?N;TON^NuNV3>3 @ph?N;TO n 0b n0d n0f n0h09`N^NuNV3>3 @3 B3D3Fpe?N;TON^Nu"/0<NBNuNV# p 3 lp3 nBy rp3 v3 xN@#XN^NuNVpe3 lBy nBy r3 xN@N^Nu# l"< <sNBNuNVH *n3 X3 Z~0RGHAB@0fp3 lp3 nSG03 r3 xN@L N^NuNV## .Z#pd3 lBy np 3 r n 3 xN@ n 0 x###Z#XN^NuNV3 /.ND0.ND:XO# pm3 lp3 np3 r3 xN@#XN^NuNV# 3 3 lp3 np3 r3 xN@#XN^NuNV3 p3 lBy np3 r3 xN@09N^NuNV3 p3 lBy np3 r3 xN@09N^NuNV3 3 p'3 lBy np3 r3 xN@ n0 n0N^NuNV3 p3 lBy np3 r3 xN@09N^NuNV3 pj3 lBy np3 r3 xN@09N^NuNVByX3 Zp 3 lp3 nBy r3 xN@ n 0Z n0\ n0^ n0`N^NuNV3 p 3 lBy np3 r3 xN@09N^Nu# zNu# ~Nu o"H0/Jf gfBNu NuNVH *n0. H=@Jno=n0.n ll0.n>JGmX0nHЍ/0.HЍ/ nNPOJ@o0?.0nHЍ/0.HЍ/NE n`Rn`0.`lL N^NuNVH0*n(n >.JGgH=@0.SGfL0N^Nu"o o JfSfNu"o ofJfHHNu"o o fNu o"Jf S@NuNVHn?</.NJd Hn HnNEPOHnBg nN\ON^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 |Pn2<`XHXW PN`4 nT=P0.l0.D@=@p-p ??./ NIPPO*@`p ? nT?`p`p` n-PX .l .D-@p-p ?/./ NI `p ? n// NI *@X`p`p`/ ?./.?NJ, *@P`fBn n-Pf-||X .-@*@g0.m noS`(Bn nT0` n//.NEPO`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@ @P>`?Bg _Pg nR` .L N^NuNVH0*n>.IB$p0//. NL2PO-@g$p0//. NLzPOAP-n ` n Pg` L0N^NuNVpL?Hyp?NKTPOp?NKTON^NuNVNJ,N^NuNV/ *n .*+@+|JB-0. D@;@ m l;| +|J`+|J *_N^NuNV/ *n Sm lBm p` UR0.*_N^NuNV/ *n UR0.*_N^NuNV/ *nRm oBm p` URB@*_N^NuNVNK8?.NK@TON^NuNVN^NuNV?.pL?NAXON^NuNV/A#/9NMXO0gBp 3Pp`,/. 0.H/?.p@?NA .B/NKXO.N^NuNV .l .D3Pp` .N^Nu#NA yN#NM yN"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(2<FP",6@HzLT\d*h****+++++++++++++++++ +>+*+.+2+6+:+++,(,n,,-$-h0010/2/22"2"2"2"2"2"2"2"2"2"08/2/20V0V0V0V0V0V0V0V0V3 2444P4P4P4"4P4"444P4" DGOGUGXGcH^dGTeHfHgHoGrHpsH uGxGDE0123456789ABCDEFw&[3][Error reading resource file:|VKILLER.RSC][ABORT]Write Virus File0123456789ABCDEFVKILLER.RSC> VVVV? \*.VIR%08lx. Drive A Drive B Info Help Exit Drive A Drive B Info HelpDisplay PrintTo File Kill ExitThis sector unreadable.Drive: %cSides on disk: %4dTracks on disk: %4dSectors per track: %4dReserved sectors: %4dSectors per FAT: %4dCopies of FAT: %2dDirectory sectors: %4dSelf Booting. Boot not executable.Boot sector NOT zeroed. Extra FAT sectors NOT zero.Extra FAT sectors zero.No extra FAT sectors.Disk is safe.Disk probably safe.Disk potentially unsafe.Disk very suspicious.Disk has a virus.First half of sector %d: Second half of sector %d: Boot SectorData, Sector %d of %dDirectory, Sector %d of %dSecond FAT, Sector %d of %dFirst FAT, Sector %d of %d%03x Sector %d: Boot Sector First FAT, sector %d of %d Second FAT, sector %d of %d Directory, sector %d of %d %03x ?3?`0xa71 8?0`?1??UN1*W<??<<<< xxxxx`xxx~x~xx`????~f3?<??<?0?<??00?<0?<?<a`x`xx`xxxxxx??<x``X\c<?pp\h&C|!gx̓̓?1gg N<$ [-9Ʀ11`bkjaalpmig`\1*_f}}u}{@>%@@}pu{p}{p}PQ{pppp{ptpq{pr{p %pppq{p}{p}{ppp}pq{p} %{p}{p!ppp%{pr{ptpq{ppp{p}PQ{p}{ppupp}%{@}{@}u_1*b2? &ACBXBA @ uV AA?*@@UBBk?+[YU{jUUڀU] ڭڀ UUUڀmVkUUmk[U;UN "u.< $ bN1*d? ?   ??Àxq8  @ @ @ @ @ @ @ @ @ @ @ @@e1*g???@?@@1@1@1`@1`@1`@1`@1`@1`@1??`@1 ?`@1 ?`@1 ?`@1??`@1`@1@1@@????gN&j pp`pp?000  ``<<x?x0 `??~k1*m??<<<0<p<<<<?<<<?>`?????>0?>0?>0?>0?m1*p 000300< 000300< xf`g`fx xf`g`fx     ax` ax` 3000?<< 3000?<< @@0000XXCCww88 8p8pee__II_@_@CC@@EEDHDH44P@P@AA@1@188@@DDCC8888p u&T?T @T @T @?T @T?p?/(ww?8BB/(?8/(LLt(,uB1*w((>!?@?@?  ? @ ހ ? ހ   ?xy??@?@?@@y"1*{PPPPPP8p??4pqdttrt `?-JJK_KP"ee ?{1*~;UU UUp;aUUUT;UTUU@` p0P aXaPXPXPXPXPXPX1P!aX P0UU``UT@;UT@UU UUXUUUW~/Sxxxxx??<<<<xxxx<<<?<??y~y<???<<?<<<<yyxxxxyyxx< <x 8<<x,,&b&b<"<")&%)&%$I$.IQR[RDbLb 0, 0,00R        /S*_߀g7'W  ߀*q"퓋߀d⋊߀߀##+ ߀+#߀KdCkk߀$K$C߀+d#  ߀ + ߀+###߀߀⋊d윋߀* ߀*g5#Wo߀(p/S~~ ?;5@7ww:`:~~ZPzYX۽UUTUVVn~~z5Un??|;{|[Xxx xU[Xxx۽xUPp?p;piPkpppx`x` H` H`/S??juUXjXTTTTTTTTTTTxTUUYjuU_??00@@OOPPPPPPPPPPPPPPPPPPPPPPPP00/S??j}ꪪwwwwwwwwwwww@wwwwªªwªªw|ªªw|ªªw|ªªjw|u\ªju\ªjw|u\ªªw|ªªwwwwªwwwwww@wwwwww@ꪪjwwwwwww??*9;?<p `` 0 ``0 `0`08000@ `p0<x0 ` `?|>?1U݀wwww(p Xp(p pp)Y)q)Y) q) Y) q) Y) q) Y) q) Y( p(? X>+*|>w|>+|>]| ?*⪨݇* 7wpwt݀wwww x  x   ` wwwwݪwwwwwݪ/S000300<000300<000300<000300<xf`g`fxxf`g`fxxf`g`fxxf`g`fx      axpaxpaxax 3000?<< 3000?<< 3000?<< 3000?<<@0@00XCw8 8p0XCw8 8pe_I_@C@e_I_@C@EDH4P@A@1EDH4P@A@18@DC888@DC88/ 5U\:5U\?*W*k*V*j*V*j*V*j*V*j*W<*kx?\*5U]:~|xp`@@@@@@@e@e@ dd66UUT /ST VVV Tp X  P pPWTpP    p VUUW p TT$@?~~~~~~(/S5U\:5U\?*W*k*V*j*V*j*V*j*V*j*W<*kx?\*5U]:~|xp`@0000000000000000000????00*@*@*@@@@4/Snopq|%&'678GHIXYZijkz{|''    !"#$%&'()* +,- "(& &  @@@ @    Q QQQQQQ Q Q  Q  @   @. @/ @0# @1 @2 @3# @4 @5!@6#"7 '8 RSEL.RSC Item SelectorDirectory:____________________________________________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPP Selection:___________________.___FFFFFFFFFFFA:B:C:D:E:F:G:H:I:CancelOK:\\@@@@@@@@@PPPPP@@@@@@@@@@@@@@@@@@    @{NULL} You must compile with the -f option to include printf() floating point!  0.MXBa|*rsel.csource file-{-{gpath  file rbutn title start -{lbuttonsposdummytfileobj struct object-;v-;w-;y-{z-;{-;|-}-;-;-;-;.;..;.@;.X;.^;.d;.j;.r;.x;.;.;.;.;/*;/2;/>{/>;/V;/^;/j{/j;/p;/x;/}/;/{/;/;/}/;/{/;/;/{/;/;/}/;/}/;/;/;/;/;0;0;0{0;0";0*}0,;02;08{08;0>;0D;0J;0R;0V;0\;0l;0z;0;0;0;0;0{0;0;0}0;0;0{0;0;0}0;0;0;1;1;1 ;1.;18;1B;1J;1\;1l;1t;1z;1;1;1;1;1;1;1; 1; 2; 2; 2; 2;2";22;2H{2H;2N;2p;2; 2;!2;"2;#2}%2;%2;&2;'2;(2;)2;,2;-3;.3 ;13;23";33&}63>}83B;83p;:3;;3;<3;=3;>3;?3}@-}@3{F3{Fi j l cptr obj struct objectted struct text_edinfo3;P3;R3;T3{U3;V3;X4{Y4;^4;_4 ;`4";e4&;f46;g48}j4P;j4T}m4V;m4\;o4h{p4h;q4j;r4x;s4|;t4;u4;v4;w4}z4;z4;|4;}4{~4;4{4;4;4;4}4;4;4}4;4{4;5 ;5}5}3}5{5 {5 ;5&;5,;5J;5x;5;5}5}5{5{5;5;6$}5}6({6.{cptr 6.;6B;6L;6T;6V;6j;6t;6|;6}6(}6{p1  p2 6{6;6}6}6{6{i sstat6;6;6{6;6{6;6;6;7;7;76}76;7@}7D;7J;7P;7l;7n}6}7v{7~{icptr 7~;7{7;7;7;7}7;7{7;7;7;7;8}8;8B}7v}8J{outfile infile pad8^{  i c8^;8j{8j;8n{8n;8x{8x;8~;8}8;8{8;8;8}8{8;8;8; 8}"8}#8{$8;%8;&8}(8}*8;*8;+8;-8{.8;/8;08}38;38{48;58{68;78;98;:8{<8;=8;>8}@8}A9{B9;C9;D9 }F9 }G9 ;G9}H8J}H9{N9{Nty sy th shobj struct object9;V9,;W90;X94;Z9B;[9F;\9J;^9T{_9T;`9X;a9\;b9;c9}f9;f9;g9;h9;i9;k9;l9;m9;o9;p9;q: }r9}r:{xtree struct object objstr len:{|obspec struct text_edinfo:;:*;:2;:<}:}:@{tree struct object obj:F{ostate:F;:X;:\;:n}:@}:t{tree struct object obj:z{ostate:z;:;:;:}:t}:{:{i:;:;:}:}:{:{cptr sptr optr :;:;:;:{:;:;:;:;:;;;;};;;{;;;;;;;};;;;;*;;4;;H;;X;;^;;h{;h;;l;;p;;t;;v};x;;z}:};{;{;;;;;;;};} struct object {ob_nextob_head ob_tail0ob_type@ob_flagsPob_state`ob_spec ob_xob_yob_widthob_height } struct foobar0 {dummyimage  } struct .4` {d_glob``d_maskhd_dirent d_dirid d_fattrd_tandd d_fsize d_fnamep } jday_tstruct .1 tm_tstruct tm OBJECTstruct object struct text_edinfo {te_ptext  te_ptmplt @te_pvalid `te_fontpte_junk1te_justte_colorte_junk2te_thicknesste_txtlente_tmplen } struct icon_block {ib_pmask  ib_pdata @ib_ptext `ib_charpib_xcharib_ycharib_xiconib_yiconib_wiconib_hiconib_xtextib_ytextib_wtextib_htext } BITBLKstruct bit_block time_to tetd_to ICONBLKstruct icon_block DMABUFFERstruct .4 TEDINFOstruct text_edinfo clock_to struct bit_blockp {bi_pdata  bi_wb0bi_hl@bi_xPbi_y`bi_color } struct tm {tm_sectm_min tm_hour0tm_mday@tm_monPtm_year`tm_wdayptm_ydaytm_isdst } struct .1@ {j_d  j_s };}@rs_strings_  $rs_frstr_  (rs_bitblk_pstruct bit_block6rs_frimg_  :rs_iconblk_struct icon_block\rs_tedinfo_ struct text_edinfors_object_@struct objectHrs_trindex_  Lrs_imdope_0struct foobarRpname_H\Ri_fcall_ Ri_xw_ Ri_yw_ Ri_ww_ Ri_hw_ Ri_xd_ Ri_yd_ Ri_wd_ Ri_hd_ Ri_dclick_ Ri_state_ Ri_count_ Ri_ffile_ Ri_errs_ Ri_update_^Ri_space_`Ri_btitle_p Ri_drive_  Ri_path_ xRi_mask_h Ri_file_h Ri_fullpath_ Ri_oldpath_ Ri_list_ Ri_dta_struct .4 Ri_sdta_ struct .4 Ri_dadd_ struct object-rsel_input_3Ri_fsetup_5Ri_updpath_5Ri_updname_6(Ri_trunc_6Ri_comp_6Ri_rddir_7vRi_show_8JRi_fcopy_9Ri_setslide_:Ri_stext_:@Ri_selobj_:tRi_deselobj_:Ri_seloff_:Ri_split_;Ri_merge_>xobjc_draw_o?rsrc_obfix_o="form_dial_o=~form_do_oErstrcpy_ oKbios_o>Dgraf_slidebox_o       P,$N.FH                                                                                         `  " , *    $2 20               &"   h *       * 0 82&  $      .    2R* 08  . 0  R    &"   ,*. @       (*&((                                  >2               : .                           FP( LD" $ | 2 &:dH<x$N77Misuse of this program can be dangerous!It is not possible to absolutely distinguish between a virus, and adisk which is supposed to be self booting. If you execute a viruskill on a program disk which must be self booting, such as many gamesare, you will have a useless disk. The simplest way to make thedistinction is that, if you are directed to press the reset button,or power your computer off and on to use a piece of software, then DO NOT ALTER THAT DISK! Also, do not attempt to use this program ondisks which use non-standard formats, such as MAGIC-SAC, or manyAny other disk which this program identifies as having an executableboot should be considered very suspicious.OKcopy protected disks.ST Virus KillerVersion 1.0 May, 1988Copyright (c) 1988,for Free Public Distribution,byGeorge R. Woodside5219 San Feliciano DriveWoodland Hills, Ca. 91364 USAIf you think you've located a virus, please senda copy of the disk to the address above. It willbe added to the ones this program can alreadyidentify and kill.OKDisk Characteristics:TextaTextbTextcTextdTexteTextfTextgTexthTextiTextjTextkTextlSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRINGSTRING   Exit Select the sectors to print: Boot FATDirectory Cancel Print OK>>>>>>>>>>>>> VIRUS ALERT! <<<<<<<<<<<<<<<<After zeroing the boot sector on the disk, thisprogram executed a disk access, then re-read theboot sector. It was no longer zeroed. This probably means there is a virus present, and working, inthis ST right now.The boot sector has been zeroed out again. You should turnoff the ST, and wait 15 seconds. Put the disk just zeroedinto drive A, then turn the ST back on. That will get theST running, with out the virus. Find the disk you booted upwith, and send a copy of it to the address in the "INFO" box.Then, check every disk you own, erasing the boot sectors.Keep the write protect window open on your disks as muchas possible.ExitWhat is a virus?It's a secret program. It hides in the first sector of a disk,called the boot sector. It secretly copies itself to everydisk that comes into your ST. Eventually, when it has madeenough copies of itself to be thoroughly spread through yourdisk library, it starts doing it's real dirty work. That maybe to slowly destory the data on your disks, or suddenly andswiftly wipe them out. It may be to act like a memoryproblem, crashing the system at random intervals. Thesesymptoms are the known viruses at this time. There willprobably be more. The best protection is to keep the writeprotect window open on your disks as much as possible, andalways boot your system from the same (safe) disk.Drive A Click on these floppy disk icons to Drive B select which disk to examine.Info Click on this eagle to see theversion of the program. You will alsofind the author's name and address.If you locate a virus, please send acopy of the disk to the author.ExitDisplay Click on this icon to have the dataPrint Click on this icon to have the datafrom the disk displayed on the screen.from the disk printed out. You can printthe boot sector, the File AllocationTables, and the Directory.ExitTo File Click on this icon to write the bootKill Click on this icon to erase the unusedsector, FATs, and directory into a datafile. This will be a binary data file,which may be copied or transmittedwith no danger.portion of the boot sectors and FATs.This will eradicate all viruses knownat this time, with no harm to the datafiles present on the disk.ExitExit Click on this door to exit the program.Devil Anytime you see this devil, be cautious.It means that the disk being examinedhas all the characteristics of a virus.The boot sector contains executable code.ExitQuestion This question mark indicates that,Happy The smiling face means that all iswhile the disk being examined does nothave an executable boot, there is dataon the disk where it should be blank.It won't hurt to do a kill on it.well. The disk being examined is clean,and presents no danger.ExitExitVirus Warning BoxWhen you see this box, it meansthe disk probably has a virus.Since not all viruses carry specific identification, it is notabsolutely certain that what is in the boot sector is a virus.However, it is quite likely. The boot sector data has met thetest that some virus uses to detect itself, or has somethingunusual enough to make it very probable that there is a viruspresent on the disk. You can learn about the virus found byclicking on the warning message.Virus Type 1:This virus checks the boot sector to determine if it is alreadypresent on a disk before deciding if it should reproduce.It reproduces itself by hooking into the ST operating system and copyingit's own image onto every disk the ST reads or writes. It is a sleeper.It is waiting for a special disk to come along with a key value in theboot sector. When it finds one, it will follow the instructions on thatdisk. This disk does not have the key value, so it is not an immediatethreat. However, it will reproduce itself onto every disk inserted intoyour system. Then, when the key disk comes along, you will be a victimOKof whatever it instructs your system to do. Therefore, you shouldconsider this virus a real threat, and wipe it off every disk you own.Virus Type 1 Key Disk:This disk contains the key value for a virus, and represents avery real danger.It reproduces itself by hooking into the ST operating system and copyingit's own image onto every disk the ST reads or writes. It is a sleeper.The general version of the virus waits for another disk, with a keyvalue, to come along. This disk has that key value, so it can causevery real damage. It is vital that you send a copy of this disk tothe author of this program, then wipe it off every disk you own. It is a real threat to you, and to anyone else whose system has beenOKexposed to this virus.Virus Type 2:This virus executes only on STs with ROMS dated 02061986.This virus executes only on STs with ROMS dated 02061986.The ROMS in this ST have the date 02061986.If it executes,this virus reproduces itself onto every disk the ST comes incontact with, unless that disk already has a bootable format.It reproduces itself by hooking into the ST operating system and copyingit's own image onto every disk the ST reads or writes. It will not fitinto the boot sector, since it is too big. It hides the remainder ofthe virus program in the last FAT sector on an infected disk. It usestime delays to make itself more difficult to detect. When it becomesactive, it does randomly timed accesses to either the screen memory,or memory above the screen address. That will either cause blots toappear on the screen, or (if the system has 4 megabytes of memory)memory access errors (two bombs). It looks like an ST that developsmemory errors after it has been running for a while. It is a verydangerous virus, and should be wiped out immediately. Check every otherdisk you own for it, since it spreads very rapidly.OK[3][Please go to|Medium Resolution][ABORT][2][Printer Not Ready][Cancel|Ready][1][Disk Read Error][Cancel][1][Disk Write Error][Cancel][1][Disk Directory Error][Cancel][1][File Write Error][Cancel];;;;{{Ç~x< /NQdef!`fghnopvwx~rJ@$(MCA E  ? Y C  C  C %@fD*> >r710 N      0  0 -4'G-rP     %E rP  J(D`|      $ @ \ =  5     # . 9 %D MKKKKKKK K  K  K  K   K KK"K)K0K7=#'C@: Jgnr(|'!rC8 + / 0 4R /    :  9   9 D ; =98 1 rB>!@6EVB:: <  H<  <   5   7  0 7 h :  : 2 rB  0 B2 l *  %  #   %     &!  (6% -  rB / 0 ^ .  &  (   $     !' !6rB & 0 U 0  ' '  "     ( 0 % V &} !'6 rB 0 0  (( ' P ) z!'|6 rB 0 0 &) -% S) u (  ' !'6 rB 6> S>  =  <   = K ;  rP  ?90Hy G G  G P H  G G &E)G kG rP >6Hc G G  G 3 G v G G E rP  %=_=!0 : = = QH  G  G& Gl G GG:G}GGGKG'Ex!"# %'(0)+H,-/ 0(1x2405 ALWEER EEN PD-FILE uit STER_BBS 24 UUR PER DAG ONLINE (Twee lijnen). Baudrates: 300/300 , 1200/75 , 1200/1200 , 2400/2400. Bel op 01880-40035 (twee lijnen). Software : Altijd minimaal 1000 PD-files ONLINE. Continue aanvoer uit de wereldwijde ATARI gemeenschap. Best of BITNET, BIX, USENET, AtariSig16 and FILESERVERS everywere. We scan them all. Magazines: Dagelijks groeiende kollektie ONLINE-MAGAZINES. Usenet Digest USA (vrijwel dagelijkse aanvoer!). ST-Report (Altijd de laatste nieuwe nummers online). SF-Digest (Other Realms Fanzine for SF and Fantasy). Z-Magazine (Canadees Atari ST-magazine). Nutworks Humor Magazine (Iets voor de echte nutcases). ST-Forum (ST-Developers Magazine) Uniek in de wereld! Usersupport: Onder de gebruikers van het STER-BBS is zeer veel computerkennis aanwezig. Vragen op het gebied van hard- en software, programmeren, communiceren e.d. worden over het algemeen binnen 24 uur beantwoord. ==================================================================== VKILLER is a virus detect and kill program. It attempts to identify executable boot sector code, and determine if it is a known virus. Naturally, that ability is limited to the viruses I have captured copies of. Therefore, if you encounter something suspicious, please send a copy of the disk to me (my address is in the "INFO" dialog box). If it is a virus, I'll add it to the ones the program can detect. VKILLER can be fooled, so you are cautioned to use a little common sense. Generally speaking, do not attempt to use VKILLER on disks which are meant to be self-booting. This includes many games, original TOS disks for systems which do not have TOS in ROM, and other disks. The simple way to determine if a disk is supposed to be self booting is the way you execute the program on the disk: if you must press reset, or power the system off and on to run the program, then the disk is supposed to be self booting. Do not run VKILLER on such a disk, or the disk will be destroyed. You should also avoid non-standard format disks, such as those used by DBASIC, MAGIC-SAC, or some copy-protected disks. The program is GEM based, icon driven, and easy to use. Help is available at any time by clicking on the help icon. The program runs in medium or high resolution, and will execute on any ST, regardless of memory size. George R. Woodside Compuserve 76537,1342 5219 San Feliciano Dr. GEnie G.WOODSIDE Woodland Hills, Ca. 91364 USA USENET: ..!{trwrb|philabs|csun|psivax}!ttidca!woodside ******************************************************************** Deze diskette is samengesteld door de Stichting ST, Postbus 11129, 2301 RH Leiden. Onze bibliotheek van public domain programma's omvat op dit moment (zomer 1988) al zo'n drie honderd 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 productie fouten op te sporen en vervolgens in de toekomst te vermijden, zijn alle disks, geproduceerd door de Stichting ST, voorzien van een groen productie nummer. ************************************************************************