NNNNNN p NNNNNNNNNNNNNNNNNNNNNNNNNNNNNNONNNNNNNNNNNNNNNNNNNNNNO`  @`! #@%`')+-/1 3@5`79;=?A C@GIKMOS@U`WY[]_a c@e`gikmoq u`wy{}@ @ ` @ ` @ ` @ ` ǀ ɠ ` OO O!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaO`  @`! #@%`')+-/1 3@5`79;=?A C@GIKMOS@U`WY[]_a c@e`gikmoq u`wy{}@ @ ` @ ` @ ` @ ` ǀ ɠ ` OO O!!#A%a')+-/1!3A5a79;=?A!CAEaGIKMOQ!SAUaA136ACCPAINT OwARKA_SLE ]wEKREUZ_AS dwQMOUSE kwsSOLITAIR +wLEES DIT6wWHPAINT ACCt Y. Pw.. PwAPAINT ACCQwDmAPAINT PRGUw4rAPAINT RSCZw<#`k.-N NeK mNf]` m"m -So Q m -SBQ(m)MO*mNNN0?<NVDH?<A?<NAX <B@SfLNuNVNQ>9@RBgHlr?<GN[PHlHlrN[PHlrNURXJ@fHl ?<NSP\?<NUT/<}?<HNZ\)@ g/<}?<HNZ\)@fN?<NUTHlnHllHlrHlpNS9@tNVHlTHlVHlXHlZ?<BgNT*N0NN$N$BgNTBgN0THl2?,RNQb\N^NuNVHl?<BgNTP l1|j l1| l1|Hl?<BgNT\PA  l"($ A l ($ @1| l1|B l1|2Hl?<BgNTP l1|Hl?<BgNSPHl?<BgNSPHl?< BgNSP l1|"Hl?<BgNSP l1|Hl?< BgNSP0,P l1| NHl?<BgNSPHl?<BgNSpPHl?< BgNS`PHl?< BgNSPPHl?< BgNS@PHlBgBgNS2PN^NuNV?<NXT9@0,Ah9P0,Ab9P0,A\9P0,AV9P lfr lh lh  lh lh lh lhBn`$0.AF0 l1|Rn nm0,g lBhh l1|j?,N?,tN[ X?,J?,tNZX?,H?,tN[0X?,F?,tNZXN^NuNV0<2.AB02.A@00.AD00.AF00.A$ 2.A 0.AD02.A00.AF02.A00.AD0H2.A00.ABP0.A00.ABP0.ABP0.ABPBg0.AF?0.AD?BgBg0.AA/BgBg0.AA/NN^NuNV , )@x9l|9l~0,H9@Bl9lBlBlBl ,)@d9lh9lj0,H9@lBln9lpBlrBltBlvN^NuNV0,. <.$n:.8.=G=F0nS@=@0nS@=@=E=D0nS@=@0nS@=@/ / Hn?.?,tNYL N^NuNV?BG`0RGA0 G m9|HlvHltHlNU >N^NuNV?,tNUTNH@N^NuNV=n=n 0.n S@=@0. nS@=@Hn?<?,tNUPN^NuNV n =P n =h n =h n =h n =h n =h n =P n =h n =P n =hHn?<?.NVHPN^NuNV9n9n 9n9n Hl?<?,tNVPN^NuNVHnHnHnHn?< BgNJ0.`N^NuNV?,T?,V?,X?,Z?.?. /.NGN^NuNV?<?.?,T?,V?,X?,ZBg?. /.NHN^NuNV n=h n=h0.H=@0.H=@0,Xn=@0,Vn=@0.lZl=lZ0.lXl=lX0.nlo0,ܐn=@0.nlo0,ڐn=@ n1n n1n?.?.?.?.BgBgBgBgBgNG?.?.?.?.BgBgBgBg?<NGz?<Bg/.NPBBgNG\N^NuNVHnHnBg/.NF n=h n=h?.?.?.?.BgBgBgBg?<NG ?.?.?.?.BgBgBgBg?<NFNNN^NuNV/,NTXBg/,NF\=@Bn`H0.2.AFPf.Bg?,P/,NP?<?./,NP9nPNRn nm/,NXN^NuNV0,`|g`-l`6`|g`-l``|g` -l`0,N2, An҈ A9PL0,L n1| /.NNXBg/.NE\=@Bn`0.2, An҈ A0=@0.nf^Bg?,L/.NP?<?./.NP9nL9nN?,N?,tNNX?,N?,tNPlX?,N?,tNOXNRn0.lml/.NX0,L nBh N^NuNV/,NrXBg/,ND\=@Bn`p0.2.AZPfVBg?,j/,NP?<?./,NP9nj0.R@9@l0.Ab9PD?,l?,tNM@XNRn nm/,NXN^NuNV/,NXBg/,ND\=@Bn`X0.2.APPf>0.R@S@9@Rn nmN^NuNVN/,NTXNNN`~Bn`,0.2.APf9|J0.R@9@FRn nmBn`,0.2.APf9|J0.R@9@FRn n mN$Bg/,NB\=@ @&fn/,NX lBhN^NuNV?<?,tNLXBn`X0.R@??,tNLXHnHn0.A?/,NA,?<0.R@?0.R@??,tNON^NuNV/<~?<HNGN\2.AD fN40<`&0.AD R2.A$ N^NuNVN?<0,:A?0,:A?BgBgHlx0,:A?0,:A?HlNNN^NuNV0,:A0ll0,:A=P0,:A=P0,:A0nlo0,2,:AP=@0,:A0nlo0,2,:AP=@N?<?.?.0,:AB?0,:A@?0,:AA/0,:A?0,:A?HlNNN^NuNV9npN^NuNV0,pgfNf?<0,:A?0,:A?0,:A?0,:A?HlBgBgHlxNN$NBgNTN^NuNV?,tNITN^NuNV?<?,tNIXN^NuNV=|N0,:A02,:APS@=@0,:A02,:APS@=@BgBg?,tNF\?<?,tNF8X?<?,tNE~X0.=@=@0. =@=@HnHnHnHnHnHnBgBgHnBgBgBgBgBgBgBgBgBgBgBg?<?<?<"N:<=@0.nn 0.R@=@0.nn 0.R@=@0.no=n0.no=n0.nf0.ng:0.fHn?,tN\`BnHn?,tN\=n=n0.|gHn?,tN\ n 0 n0?,?,tNDX?,l?,tNDXNN^NuNVHl@?<N;j\N^NuNVHl\?<N;T\N^NuNV0.Aژ0 l1| /,NfXBg/,N:\=@Bn`V0.Aژ0nf\?.N84T` ?.N8&T`NtN^NuNVBnBg0.PAA/?<=N>8P=@ @o0B?<N6\0.Aڰ0`|g`L?<?./<?<BN= 0. AA//< ?.?<?N= `v`|g`f?<?./<?<BN= 0. AA//< ?.?<?N=l ?<?./<\?<BN=R ``0.A$//<}?.?<?N=& }g=|?.?<>N=XNV`=|0.gHl?<N5X\0.W|`N^NuNVBnBn`0.ABRn nmBg/.?<N;bXN`=|0.gHl?<N3\0.W|`N^NuNVA  l!@$A\  l!@/?,:NTBgNT0,:A00,:AA/?,:N\N^NuNV0,:A0g&HnHnHnHn?<?,:N1`"HnHnHnHn?<?,:N10,:A0W|2,:A0?.?.?.?.?<?,:N1 NTNdN^NuNV0.A0g0.A0g*0.A0gHl?<N/\ @fl?.N0T?.N0T0.AD/?<IN6\0<2.A02.A0BgN TN9@:Hl?<N6\N^NuNV=|`>0.A0g(0.ABP0.AD/?<IN6\\Rn nm0<9@89@:0<9@p9@f BgBgBg?,6?<?,:N/ `BgBgBg?,2?< ?,:N/d 0,:AA/?,:N\BgNTN^NuNVNHnHnHnHn?< ?.N.`Hn/. N0nPJ@g?.?.?.?.NP0.A@0n2.AP=@0.AB0n2.AP=@?<?.?.?.?.Hl?.?.0.AA/NHnHnHnHn?< ?.N. ng nf"Hl\Bg?,tN8JPNN^NuNV0,:A@ Pl0,:A@BP0,:AB Pl0,:ABBP0,:A@02,:AP2,:ADPo,0,:AD02,:AP2,:A@00,:AB02,:AP2,:AFPo,0,:AF02,:AP2,:AB00,:AD02,:APH-@0,:A@0H/ </N0 / ./N0* X9@60,:AF02,:APH-@0,:AB0H/ </N0T / ./N/ X9@20,:A0H/ </N0 2,:AD2H/ /N/ X9@40,:A0H/ </N/ 2,:AF2H/ /N/P X9@0BgBgBg?,6?<?,:N+ BgBgBg?,2?< ?,:N+ BgBgBg?,4?<?,:N+ BgBgBg?,0?<?,:N+ BgNTN^NuNV?,L?,J?,H?,F?<?,:N+Z N*9|>gN00,:ABPBgN~TN^NuNV0,:AA/0,:AA/0,:AA/0,:AA/?<?,:N*0,:AA/0,:AA/0,:AA/0,:AA/?<?,:N*HN^NuNVBgBg0,:PAA/?<?,:N*\ 0,T| ?0,V| ?0,X2,:A?0,Z2,:A??,:N)z N0,:A00,:ABPRl8NN^NuNVHl0,:PAA/N0 PHlڞ0,:PAA/N/PHlB0,:PAA/N/P0,:PAA/0,:PAA/N/P0,:PAA/0,:PAA/N/FPN^NuNV0.`|g`*2,:A20,:AB0A0`*`|g`*2,:A20,:AB0A0``|g`*2,:A20,:A@0A0``|g`*2,:A20,:A@0A0``|g`0,:ABSP`l`|g`0,:ABRP`J`|g`0,:A@SP`(`|g`0,:A@RP``N0,:AA/?,:N\N^NuNV9n:BgBgBgBg?< ?,:N' NzBgNTN^NuNV0.A` Pl0.A`BP0.A` Po0.A`0N^NuNVBn`n?.NT0.A`0H}00.A`0|02.A:2 l@ Bg0.A:?/,NPRn nmN^NuNVHl`?<?,,?,tN1p ?.N T0.A`0n 0?.NTHl`?,,?,tN-tPN"?,:NTN^NuNV lo0,: AA/?<N+\9lN,0,,A@9P*0,* l1| /,NیXHl`?<?,,?,tN0 N`Bn`R0.2.A4Pf?<}?.NX`&0.2.A.Pf??,tN%6XHnHnHnHnHnHnBgBgHnBgBgBgBgBgBgBgBgBgBgBg?<?<?<"N<=@0.lX @l0.lXD@` 0.lX=@0.lV @l0.lVD@` 0.lV=@0,R|g=n0.nf0.ngjN0.f(?<Bg?.?.?,V?,X?,tN)`Bn?<Bg?.?.?,V?,X?,tN(=n=nNt0.|g?<Bg?.?.?,V?,X?,tN(?,l?,tN#FX?,NN^NuNV=|0,X=@=@0,V=@=@?,@?,B?,tN"\?,>?,tN"X?,0.|g 9|&`0,H9@& n f 0,&l n f 0,&l n f 0,&l n f 0,&l llBl llBlNN``&|g`|g`|g` nf9|( nf9|( nf9|(N*Nh?,T?,V?,X?,Z?<Bg/,NN`l`Bn`J0.2.APf0Bg?,/,NƊP?<?./,NxP9n9nRn nm` ``Bg/,N\=@ @f/,NǂX0, lBh lBh?,J?,tNX?,F?,tNX?,N?,tNX?,N?,tN8X?,l?,tNNX0,:AA/?,:N\N^NuNVHBg?</,NnPN?<?,?,?,?,Hl?,?,0,:AA/N><, Hƍ(0,H(=@BE`=l0l=@BG`HnHn?.0.Rn??,tN*0,$2(A=@0,"2(A=@ no:0.l(S@=@0.l(S@=@?.?,tNXHn?,tN\RG0FmtRE0nmRNLN^NuNVHnHnHnHnN 0.l$=@0.l"=@ nlBn nlBn0.l m 0, S@=@0.lm 0,S@=@ nftNVHlHl0.H(l?0.H(l??,tNBg?,/,NôP0,A9P?<?,/,NÒPN`< nf|N?,?,?,?,N P?,?,tN4X?<0.H(l?0.H(l??,tNjPN HnBg?,tNPNN~NZ`0.l$2.H(HAA=@0.l"2.H(HAA=@0.l(S@=@0.l(S@=@N?,?,tNX?,?,tNX?<?,tNX0.H(l?0.H(l?NXHn?,tN\NHnHnHnHnN  ngNN^NuNVN|?<?,?,?,?,0,:AA/?,?,HlNNP?<N̴T0,:A0N^NuNV0, H( l1@9@0,H( l1@9@0,H9@&N^NuNV0,l2,:ADPo0,:AD0l9@0,l2,:AFPo0,:AF0l9@N^NuNV0,P@`|g`N<``|Sg`N``|ag`N˴``|bg`N``|g`NȔ``|.g`N``| g`N ``|g`?< NT`j`|!g`N`R`|#g`?<"NbT`4`|&g`N``|2g`NÚ``|1g`?<N(T``|g`NЈ``|g`N``|g`?<!NT``|g`0,8gN`x`|9g`|g`N`T`|/g`?<#NdT`6`|g`N```|,g`Np``N^NuNV0,>`|(g`N`(`|)g`N؂``|g`AF /?,DN\``|g`|g`?,DN6T``|g`?,DNXT``|g`?,DN֒T``|g`?,FNVT`f`|g`9lF6N*`H`|g`9lF2N `*`|g`|g`Nܴ``N^NuNV0,BgBgBgBgBg0,:A?0,:A?0,:A?0,:A??,N*X9@^g0<`0<N^NuNV?.?<LNXN^NuNV/ AӬ&H`0+ |g/ NBX AӬ"Ҽm?.NT&_N^NuNV0.n l0.`0. N^NuNV0.n o0.`0. N^NuNV n0 nh? n 0 n h?NX=@ n0( nh? n 0( n h?NtX=@ n? n ?NzX=@ n?( n ?(N`X=@ n 0 n 1n0.n n 1@0.n n 1@0.n^Jg 0.n^J|N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ NTJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NFP?/+?+ N tP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NP'@&Bk0<LN^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.A.0nf0.A.BPRn nLmN^NuNV?>.=|0A."HPgXHf0(>N^Nu)I*)J&)_"NN"l*$l&/,"Nu)I*)J&)_"NA"l*$l&/,"NuNVH0&n$n -K`fS`f .`L N^NuNV n "n fN^NuNVH0&n$K`Rf `L N^NuNV .9@ .9@N^NuNV .9@ .9@N^Nu)I*)J&Hl)_Hl" <sNB"l*$l&NuNV9n 9| Bl9|9n N0,N^NuNV9n =|` n T 02.A0Rn nm9|Bl9|9n N^N^NuNV9n 9|Bl9|9n N60,N^NuNV9n Bl9|9|Bl9n N0,N^NuNV9n 9|Bl9|9n N0,N^NuNV9n 9n 9|lBl9|9n NN^NuNV9n 9|kBl9|9n N n 0 n0 n0 n00,N^NuNV9n 9| Bl9|9n N40,N^NuNV9n 9|Bl9|9n N0,N^NuNV9n 9|jBl9|9n N0,N^NuNV9n 9|Bl9|9n N0,N^NuNV9n 9|Bl9|9n N0,N^NuNV9n 9|Bl9|9n NX0,N^NuNV9n 9|hBl9|9n N,0,N^NuNV)n)n .мZ)@9|dBl9|  n 9P N n 0 A)HA)HA)HA)HN^NuNV9|eBlBl9n NN^NuNV)n 9n 9|9|9|9n NrA)HN^NuNV)n 9|oBl9|%9n NBA)HN^NuNV9n 9|zBl9|9n NN^NuNV9|{BlBl9n NN^NuNV9n 9n 9|Bl9|9n N n0 n1l n1lN^NuNV)n 9|9n Bl9n NA)HN^NuNV9n 9n Bn nR2.RnA|0f9|9|Sn0.9@9n NN^NuNV9n9n 9n 9|g9|9|9n NN^NuNV)n 9|r9|Bl9n NA)HN^NuNV)n 9| 9|Bl9|9n NA)HN^NuNV9n 9n 9n9n9n9n9| 9|9|9|9n N2N^NuNV9n 9n 9n9n9| 9|Bl9|9n NN^NuNV)n 9| 9|Bl9|9n NA)HN^NuNV)n 9| 9|Bl9| 9n NA)HN^NuNV9n /.N,X/.NDX)n 9|m9|9|9n NBA)HN^NuNV9n 9n 9|i9|Bl9n N n0 n0N^NuNV`4 nH| f?< ?<NX nRH??<NX0. 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@^Hg0<`0,^n/./<?.?<@N| 9@^ @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@^Hg0<`0,^nBl^0.L N^NuC   AccPaint 1.1 8806219C\____K Free RAM.@9|<9|P9|N9|J9|H9|F9|D9|B9|@9|>9|<9|:CSample TextD9|9|9|9|C*.*CBA:\LCh2@22Cb222C\222CV222CF2222 2222C6222 2 2222C&222 22222Cn22222 22222222 2 2 2 222222222222222222222222222222229|l9|jCb2222 CZ2222CP22222CJ222CD222C822 22 22 C222 2 2 2 222222222222222222C22222 22 2!2"2#2$2%C222 222C222222 Cڞ.PI?.DOO.NEOCژ222Cx22222222 2 2 22 2 222Cf"B@""'"C@22222222!222 222"22C:2 2 2C4222C.2 2 2 9|(C2222222222222222CӬ"2"2 2"2"2"22"2"2"22"2x9|ӪNu\APAINT.RSC[3][Can't find|APAINT.RSC!][ Reboot ] AccPaint...[3][Out of|memory.][Abort][3][No more windows|are available!][Abort]*[3][Error opening|file!][Cancel][3][Error writing|file!][Cancel][2][Clear window?][ Ok |Cancel][2][Close window?][ Ok |Cancel]UNTITLEDCON:AUX:PRT: `pJN Nj*O*m - ЭЭм!"ҍ¼.A// Bg?<JNA m"m -So Q m -SBQ(m)M*mN lHhNRX/,?,NRt\?<NZ?<A?<NAXNuNVNU9@LBgHlh?<GN_PHlHlhN_PHlhNYXJ@fHl ?<NW\?<NZT/<}?<HN_r\)@g/<}?<HN_Z\)@fN?<NZHTHlhHlfHllHljNW9@nNHlNHlPHlRHlT?<BgNXNFNNJNBgN TBgN4BT?</,NU\Bg?,nNctXBBgNWz\N^NuNVHl?<BgNY&P l1|j l1| l1|Hl?<BgNXPA  l"($ A l ($ @1| l1|B l1|2Hl?<BgNXP l1|Hl?<BgNXPHl?<BgNXPHl?< BgNXxP l1|"Hl?<BgNX^P l1|Hl?< BgNXDP0,J l1| NHl?<BgNXPHl?<BgNX PHl?< BgNWPHl?< BgNWPHl?< BgNWPHlBgBgNWPHl?<BgNWPN^NuNV?<N]T9@0,A^9P0,AX9P0,AR9P0,AL9P lfr lh lh  lh lh lh lhBn`$0.A<0 l1|Rn nm0,g lBhh l1|j?,H?,nN_X?,D?,nN_FX?,B?,nN_X?,@?,nN_VXN^NuNV0<2.A<02.A:00.A>00.A@00.A 2.A 0.A>02.A00.A@02.A00.A>0H2.A00.ABP0.A00.ABP0.ABP0.ABPBg0.A@?0.A>?BgBg0.AA/BgBg0.AA/NN^NuNV ,)@r9lv9lx0,H9@zBl|9l~BlBlBl ,)@^9lb9ld0,H9@fBlh9ljBllBlnBlpN^NuNVHl?<NZ \/,?<INZ\/,?<INZ \Bg/,NP\NTdNN^NuNV0,6g N\` BBgNR\N^NuNVBn`00.A,02.JA00.A02.JA00.JA00.A<0 l ( @ -@0.A<0 l ( @ (-@Bn`V0. n02.4.JAԈ B00. n02.4.JAԈ B0Rn nm l ( @ 2.A<2 l"( A Rn nmN^NuNVBn`0,J2.A. <.$n:.8.=G=F0nS@=@0nS@=@=E=D0nS@=@0nS@=@/ / Hn?.?,nN]L N^NuNV?BG`0RGA0 G m9|HlpHlnHlNY >N^NuNV?,nNZ2TNL,N^NuNV=n=n 0.n S@=@0. nS@=@Hn?<?,nNZ PN^NuNV n =P n =h n =h n =h n =h n =h n =P n =h n =P n =hHn?<?.NZPN^NuNV9n9n 9n9n Hl?<?,nNZ\PN^NuNVHnHnHnHn?< BgNN0.`N^NuNV?,N?,P?,R?,T?.?. /.NLN^NuNV?<?.?,N?,P?,R?,TBg?. /.NLNN^NuNV n=h n=h0.H=@0.H=@0,Rn=@0,Pn=@0.lTl=lT0.lRl=lR0.nlo0,֐n=@0.nlo0,Ԑn=@ n1n n1n?.?.?.?.BgBgBgBgBgNK?.?.?.?.BgBgBgBg?<NK?<Bg/.NPBBgNL.\N^NuNVHnHnBg/.NJ n=h n=h?.?.?.?.BgBgBgBg?<NK>?.?.?.?.BgBgBgBg?<NKNNN^NuNV/,NTXBg/,NJ\=@Bn`H0.2.AX?,H?,nNTX?,H?,nNSXNRn0.lml/.NX0,F nBh N^NuNV/,NrXBg/,NH\=@Bn`p0.2.APPfVBg?,`/,NP?<?./,NP9n`0.R@9@b0.AX9P>?,b?,nNQXNRn nm/,NXN^NuNV/,NXBg/,NHF\=@Bn`X0.2.AFPf>0.R@S@9@6Bg?,4/,NFP?<?./,N4P9n4N6Rn nm/,NdXN^NuNV/,N2XBg/,NG\/,NN^NuNV/<~?<HNK\2.A> fNF0<`&0.A> R2.A N^NuNVN?<0,4A?0,4A?BgBgHlr0,4A?0,4A?HlNNN^NuNV0,4A0ll0,4A=P0,4A=P0,4A0nlo0,2,4AP=@0,4A0nlo0,2,4AP=@N?<?.?.0,4A<=@0.nn 0.R@=@0.nn 0.R@=@0.no=n0.no=n0.nf0.ng:0.fHn?,nN\`BnHn?,nN\=n=n0.|gHn?,nN\ n 0 n0?,6?,nNI X?,:?,\=@Bn`V0.A0nf/?<INB\?.NNA:XND`=|0.gHl|?<N9z\0.W|`N^NuNVBnBn`0.ABRn nmBg/.?<N?XN`=|0.gHl?<N7\0.W|`N^NuNVA  l!@$AV  l!@/`6`|-g`NR``|.g`N ```?<?./,N1PN^NuNV=|`0.A0g9|Rn nm0,2f 9|d`B0,2g 0,g(0,2g*0,g"Hl?<N2\ @f 9|dNN^NuNV0,4Az0g0,4 AA/?<N9\?<N9T-@?<0,4A//?,4NTBgNHT0,4A00,4AA/?,4N<\N^NuNV0,4A0g&HnHnHnHn?<?,4N2`"HnHnHnHn?<?,4N2f0,4A0W|2,4A0?.?.?.?.?<?,4N2f NNN^NuNV0.Az0g0.A0g*0.A0gHl ?<N0p\ @f?.N1T?.N1T0.A>/?<IN7\0<2.A02.Az0BgNTN9@4Hl?<N7~\Sl20,2f4 l1| l1|2 l1|J l1|B l1|ZN^NuNV=|`R0.Az0g<0.AzBP0.A>/?<IN7\?.N0T?.N0TRn nm0<9@29@40<9@f9@6N^NuNV0,4A>02,4APH2,0H/ /N4 / </N4 X2,4A:00,4A@02,4APH2,,H/ /N42 / </N3 X2,4A<0 l8f BgBgBg?,0?<?,4N0 `BgBgBg?,,?< ?,4N/ 0,4AA/?,4N\BgNTN^NuNVNpHnHnHnHn?< ?.N/d`Hn/. N1PJ@g?.?.?.?.NlP0.A:0n2.AP=@0.A<0n2.AP=@?<?.?.?.?.Hl?.?.0.AA/NHnHnHnHn?< ?.N. ng nf"HlVBg?,nN8PNjN^NuNV0,4A: Pl0,4A:BP0,4A< Pl0,4APo,0,4A>02,4AP2,4A:00,4A<02,4AP2,4A@Po,0,4A@02,4AP2,4A<00,4A>02,4APH-@0,4A:0H/ </N1L / ./N0 X9@00,4A@02,4APH-@0,4A<0H/ </N0 / ./N0v X9@,0,4A0H/ </N0 2,4A>2H/ /N04 X9@.0,4A0H/ </N0 2,4A@2H/ /N/ X9@*BgBgBg?,0?<?,4N,h BgBgBg?,,?< ?,4N,N BgBgBg?,.?<?,4N,4 BgBgBg?,*?<?,4N, BgN*TN^NuNV?,F?,D?,B?,@?<?,4N+ N*9|8gN00,4ABPBgNTN^NuNV0,4AA/0,4AA/0,4AA/0,4AA/?<?,4N+(0,4AA/0,4AA/0,4AA/0,4AA/?<?,4N*N^NuNVBgBg0,4PAA/?<?,4N* 0,N| ?0,P| ?0,R2,4A?0,T2,4A??,4N* N0,4Az00,4ABPRl2N lBh lBh2 lBhJ lBhZ lo lBhBN^NuNVHl*0,4PAA/N0|PHl0,4PAA/N0&PHl80,4PAA/N0DP0,4PAA/0,4PAA/N0P0,4PAA/0,4PAA/N/PN^NuNV0.`|g`*2,4A20,4A<0A0`*`|g`*2,4A20,4A<0A0``|g`*2,4A20,4A:0A0``|g`*2,4A20,4A:0A0``|g`0,4ANN^NuNV=|0,R=@=@0,P=@=@?,:?,P?,b?,nN XHn?<?,nN%PN֢N^NuNV?. ?,?,?. ?.HlBgBgHl^NN^NuNV=|=lR=lP0,g N:HnHnHnHnHnHnBgBgHnBgBgBgBgBgBgBgBgBgBgBg?<?<?<"Nx<=@0.nVJf0.nVJ|=@g(0.f?<?.?.N"\=n=n0.|g?,>?.?.N\=|` 0.g?<?.?.N\Bn0.|g?,>?.?.N\NHN^NuNV0,gBgNԌTB?<N\0.`|#g`Nd`N`|"g`N`6`| g`N*``|!g`N``NN^NuNVH?<?,?,BgBgHlrBgBgHl^NBg?,?,BgBgHl^BgBgHl^N0,lo0,H9@0,lo0,H9@:,8,BG`Z?<?,?<Bg0?Hl^Bg?HlrNR?<?,?<Bg0R@?Hl^Bg?HlrN&RG0Em0,9@?<?,?,BgBgHlrBgBgHl^NBF`Z?<?<?,0?BgHl^?BgHlrNż?<?<?,0R@?BgHl^?BgHlrNŐRF0Dm0,9@LN^NuNVH ll ll`:,8,BG`0?<?,?<Bg0H?Hl^Bg?Hl^NTG0Em0,H9@BF`0?<?<?,0H?BgHl^?BgHl^NTF0Dm0,H9@LN^NuNVH<,Hƍ:,SEBG`x?<?,?<Bg?HlrBg?Hl^Nl?<?,?<Bg?Hl^Bg0G?Hl^ND?<?,?<Bg0G?Hl^Bg?HlrNRG0FmLN^NuNVH<,Hƍ:,SEBG`x?<?<?,?BgHlr?BgHl^N?<?<?,?BgHl^0G?BgHl^Nà?<?<?,0G?BgHl^?BgHlrNxRG0FmLN^NuNV0,6gBgNNTN9lR9lPHlVBg?,nNPP?<?,nN X?<?,nN*X?<?,nNX9lH0,A9P0, l1| l9h, l9h.N/,N XHlHl?</,NHlHl?</,N0,2,4AP2,4A:P9@0,2,4AP2,4APo0,4A>0l9@0,l 2,4A@Po0,4A@0l 9@N^NuNV0,J@`|g`Nט``|Sg`N"``|ag`N``|bg`N``|g`NĞ``|.g`N``| g`N(``|g`?< NT`j`|!g`N `R`|#g`?<"NbT`4`|&g`N``|2g`N``|1g`?<NDT``|g`N̤``|g`N``|g`?<!NT``|g`0,2gN`x`|9g`|g`N`T`|/g`?<#NdT`6`|g`Nj``|,g`Np``N^NuNV0,8`| g`?,@?,>NX``|g`A@ /?,>Nٖ\``|g`|g`?,>N$T``|g`?,>NT``|g`?,>NT``|g`?,@NDT`f`|g`9l@0N`H`|g`9l@,N`*`|g`|g`Np``N^NuNV0,6gNN^NuNVHlHHlJHlLHlNHlPHlRBgBgHl8BgBgBgBgBg0,4A?0,4A?0,4A?0,4A??,6?<?<?<?<N <9@T?<NT0,T|gN0,T|gN0,T|gND0,T|gNBgNTN^NuNVNBld`N0,dgN"N^NuNuNVN0Az0g\0,6gBBgN\Hl?<N \`*NBgNjT0,4 AA/?<N \0,6W|9@6N^NuNVHnHnHnHnN0.2,4APm0,4A02,4AP=@0.nlj0.2,4APmT0,4A02,4AP=@0.nl(N0,4 AA/?<N \9|6N^Nu)I )J"/0<NB"l $lNu NV9n0.| A" AA-H=|` nR2.AH0Rn nm/,XN.X0,N^NuNVA)H\A)H`A)HdA)HhA|)HlAt)HpA\)HX?< NXT9lV0,VN^NuNV?<NN*X9@Tg0<`0<N^NuNV?.?<LNXN^NuNV/ A&H`0+ |g/ NBX A"Ҽm?.NT&_N^NuNV0.n l0.`0. N^NuNV0.n o0.`0. N^NuNV n0 nh? n 0 n h?NX=@ n0( nh? n 0( n h?NtX=@ n? n ?NzX=@ n?( n ?(N`X=@ n 0 n 1n0.n n 1@0.n n 1@0.n^Jg 0.n^J|N^NuNV/ &n/ NDXJ@g0<`00+ |g /+NXBk ?+ NTJ@g0<`0<&_N^NuNVH&n0+ |f0<`.0+ |gV0+ |f0<`v0+ |g?<B?+ NFP?/+?+ N tP @f0<`@k 0Hѫ`$ k o?<0+D@H/?+ NP'@&Bk0<LN^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@Tg <` `BlT . N^NuNV/.?<IN\N^NuNVBn`&0.A$0nf0.A$BPRn nLmN^NuNV?>.=|0A$"HPgXHf0(>N^Nu)I )J)_NN"l $l/,Nu)I )J)_NA"l $l/,NuNVH0&n$n -K`fS`f .`L N^NuNV n "n fN^NuNVH0&n$K`Rf `L N^NuNV .9@ .9@N^NuNV .9@ .9@ N^Nu)I )JHl)_Hl" <sNB"l $lNuNV9n 9| Bl9|9nN0,N^NuNV9n =|` n T 02.A0Rn nm9|Bl9|9nN^N^NuNV9n 9|Bl9|9nN60,N^NuNV9n Bl9|9|Bl9nN0,N^NuNV9n 9|Bl9|9nN0,N^NuNV9n 9n 9|lBl9|9nNN^NuNV9n 9|kBl9|9nN n 0 n0 n0 n00,N^NuNV9n 9| Bl9|9nN40,N^NuNV9n 9|Bl9|9nN0,N^NuNV9n 9|jBl9|9nN0,N^NuNV9n 9|Bl9|9nN0,N^NuNV9n 9|Bl9|9nN0,N^NuNV9n 9|Bl9|9nNX0,N^NuNV9n 9|hBl9|9nN,0,N^NuNV)n)n .мZ)@9|dBl9| n 9PN n 0A)HA)HA)HA)H N^NuNV9|eBlBl9nNN^NuNV)n 9n 9|9|9|9nNrA)H N^NuNV)n 9|oBl9|%9nNBA)HN^NuNV9n 9|zBl9|9nNN^NuNV9|{BlBl9nNN^NuNV9n 9n 9|Bl9|9nN n0 n1l n1lN^NuNV)n 9|9n Bl9nNA)H N^NuNV9n 9n Bn nR2.RnA|0f9|9|Sn0.9@9nNN^NuNV9n9n 9n 9|g9|9|9nNN^NuNV)n 9|r9|Bl9nNA)H N^NuNV)n 9| 9|Bl9|9nNA)H N^NuNV9n 9n 9n9n9n9n9| 9|9|9|9nN2N^NuNV9n 9n 9n9n9| 9|Bl9|9nNN^NuNV)n 9| 9|Bl9|9nNA)H N^NuNV)n 9| 9|Bl9| 9nNA)H N^NuNV9n /.N,X/.NDX)n 9|m9|9|9nNBA)H N^NuNV9n 9n 9|i9|Bl9nN n0 n0N^NuNV`4 nH| f?< ?<NX nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNV` nRH??<NX0. Sn J@fN^NuNVH0&n $KAF-H nf?./ N4\=n`L nf?./ N`\=n`. nf?./ Np\=n`-KBn?.NTJ@f`H| f |o@ H-@/./.?.?<@N 9@THg0<`0,Tn/./<?.?<@N| 9@T @g0<`tRnR -@`R ned` 6.ƼЃ$@ H-@/./.?.?<@N 9@THg0<`0,TnBlT0.L N^NuC   AppPaint 1.1 8806219CV____K Free RAM.@9|69|J9|H9|D9|B9|@9|>9|<9|:9|89|69|4CSample TextD9|9|9|9|C*.*C8A:\LC^2@22CX222CR222CL222C<2222 2222C,222 2 2222C222 22222Cd22222 22222222 2 2 2 222222222222222222222222222222229|b9|`CX2222 CP2222CF22222C@222C:222C.22 22 22 C222 2 2 2 222222222222222222C22222 22 2!2"2#2$2%C222 222C222222 C.PI?.DOO.NEOC222Cn22222222 2 2 22 2 222C\"B@""'"C622222222!222 222"22C02 2 2C*222C$2 2 2 9|C2222222222222222C"2"2 2"2"2"22"2"2"22"2x9|Nu\APAINT.RSC[3][Can't find|APAINT.RSC!][ Abort ][3][Out of|memory.][Abort][3][No more windows|are available!][Abort]*[3][Error opening|file!][Cancel][3][Error writing|file!][Cancel][2][You really wish|to quit?][Ok|Cancel][2][Clear window?][ Ok |Cancel][2][Close window?][ Ok |Cancel]UNTITLEDCON:AUX:PRT: $#~ #STARTArrowedSquaredRoundedENDArrowedSquaredRoundedOkSolidDotDashLong DashDash,DotDash,Dot,Dotx4x8x16OkOkDefault DriveABCDEFGHIJLMNOPK  File Edit Tools Options About AppPaint...-------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 N NewO Open...------------ Close SaveS Save As...------------D Set Drive------------ Quit UNDO----------E EnlargeR ReduceH Flip V Flip C ColoursM ModesT ToolboxW WidthsA Text...F Fills...L Lines...P Palette...Z Zoom...8910Points x2ThickUnderlineItalicShadowOutlineLightTEXT:__________________________XXXXXXXXXXXXXXXXXXXXXXXXXXOkDegasDoodleNeoChrome(C)1988 Hypertek/Development Corp.Silicon Springs____K Free RAM. AxxPaint 1.1 880621NewOpenCancelReplaceTransparentXORInverse~~~~<<``<<@}`}G@E`A|DDD|xxD  @w??0 ~@@@ & F?x>|?< )%( &H 'R (Z $d *. +m ,w - . )    !            '  & &%@@@ @ @@@@ @ @ @@ @ @@@@@@ @ @@@@@@ @ @@ @!@"@#@ $@ %@@'    @p@q@r`s  @p`q   @! @' `.   @ `@:@\@~ @p@x@q@r @s@y@z @{ @| @}  @~ `@t@u @v @w    =Oaq  '   @ @ @ ` !v f# . `wE.. `wARKA_SLETOSawFH+` V0*o m$m,B"HJgP"&J$YJf"Jg< Af Rf Gf Vf =f Jg#)N?|BWNT>NXONJ ?N?<LNANVHz$NXO f6p ?NATOJ@g p?NATO`Hz$p ?NA\Op?NATOHz$p ?NA\ON^NuNV0.S@ @bzH0@ PN`/. /:Hz$Hz'4N ``j/. /:Hz$}`/. /:Hz$`/. /:Hz$`/:Hz$Hz&N `*/. /:Hz$`/. ?./:Hz$Hz&N N ?.NTON^NuNVHz$p ?NA/nTOp ?NA\ON^NuNV/:^p ?NA\Op?NATOHz$p ?NA\ON^NuNVH ?<[hNTO*@ f Bp?N\O~|n l nH |r`XHXW PN`V0GB`N0Gp`D0Gp`0Gp`0Gp` nH?Hz#Hz'DN/|*B\Op?NZ\O0R@2@0@0@H@00T@HH@0f0H@H@0gFTGRF`: L N^NuNVH ?l/:p?N\O?<[hN4TO*@ f Bp?Nx\O?<[h/ ?NPO<n/:p?NX`L?NTO F[hg4?/:nHz!Hz% N/|*B p ?NA/MTONXO` ?<[h/ N\O(@/ NXOxz E2n/:"HnN?E/|'%TOHnN& HnHnNPOp?HnN4\O>lHnp?N\O?<@0H@B@H@Ќ/?NtPO<lHnp?Nt\O?NTOHn??Hz!Hz$.N/|*B p ?NA\OD@RE`B/ N.d0S@?Hz!Hz#Nt/|*B p ?NA\OL0N^NuNV/:*pA?NA/z TO/:BgpV?NA p?/:NR\O=@l/:p?N\O0.N^NuNVH0?lHnp?N&\O?<@0H@B@H@Ќ/?NFPO< @@gHnp?N\O?N(TOHn??Hz Hz"N2/|*B p ?NA\OD@RE`@?

?<[h/ ?NPO<n/:p?N`P?NTO/ N4XO F[hf/:HzHz"2N `?<[h/:z?HzHz"NHz" p ?NA\OL0N^NuNV n Pg n //:HN8POHzN@XO/:

@%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 |2<`XHXW PN`4 nT=P0.l0.D@=@p-p ??./ NPO*@`p ? nT?`p`p` n-PX .l .D-@p-p ?/./ N `p ? n// N *@X`p`p`/ ?./.?Nv *@P`fBn n-Pf-|(JX .-@*@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@ @n>`?Bg _ng nR` .L N^NuNVH0*n>.IB$p0//. NPO-@g$p0//. NVPOAn-n ` n ng` L0N^NuNVpL?Hy(Rp?N\POp?NTON^NuNVNvN^NuNV/ *ngHy(H? y(N\OR`Hy(p ? y(N\O*_N^NuNV/ *n .*+@+|B-0. D@;@ m l;| +|j`+|B *_N^NuNV/ *n Sm lBm p` UR0.*_N^NuNV/ *n UR0.*_N^NuNV/ *nRm oBm p` URB@*_N^NuNV/ *n -f,-f?<N TO+@f+|+|`j-f2-H?NTO0g(f+|*+| -`&+|*+|-H?NVTOHЭ*+@Bm *_N^NuNV/p?B?.NPO. fB@`0H@.N^NuNV/ *n/ NXO/ mNXO*_N^NuNVH >.*n / NXO/ ? mN\OL N^NuNV/ K)-g G gP Gg 0`0- f-pL N^NuNV/ *n (fHy(NXOBm p?Hn-H?NPO @g,J@gH .f-f8 . f-fB@.`(09H fBy`-`-p*_N^NuNVH >.*n G f -g/ p ?N\O @fp`0Sm l"/ N*XO0f -S@;@ UR0L N^NuNVH >.*n G G f-g/ p ?N\O @gZBm -fN/ N*XO0f@p?Hn-H?N\PO @f0` 09H fBy`-pL N^NuNVH >.*n G f -g/ p ?N\O @fp`?NAXO/NXO`B@N^NuNV/Bg/.pl0H/NXO`"?.NTO=@m?.?NXO0.N^NuNV/?.?. rF?NA\O>0f(?.NTO=@m?.?. NXO0. `0H/NXO.N^NuNV?.NTO @Cfp`B@N^NuNV?.?./. pB?NA /NXON^NuNV/?. /.p=?NAPO.m:0H.mpF?0?NXO` m n0?NNTOH./NXO.N^NuNVH A#)^/9)^NXO0gB)^p 3p`?.NTO @CfzB@9)>B@9)H)*@SnmSGl^pQ)B9)Hy)p ?NA\O>mp ?p?p?NM\Op)B@9)>B@9)H)*@0Gp H< Ff~` n R RE F ft )))B)^0`0/. 0.H/?.p??NA >B)^0H/NXOL N^NuNVH.. l <`0 f 9`$R @./pH?NA\O,g Ї# LN^NuNV0.H/NXON^NuNV/A#)^/9)^NXO0gB)^p 3p`,/. 0.H/?.p@?NA .B)^/NXO.N^NuNVH >.0V@ @bH0@~ PN`*pP`&pA`"pC`0m*y).0m*y).0V@ @bHH0@ PN*y)<HGg fp`&R` )-H?NTO -g-f /-N 0XOB-0L N^NuNVH *nBm -ff >o?/--H?N\POGf$0m mAf -*+@`+UB@` 09H fBy`-pL N^Nu +.=o D ODU$XHcd eLfLgLo rsju x D D0123456789ABCDEF$%LEVEL.DATLEVEL.OLDLEVELarka_sleE ARKA_SLE 1.0b (ARKA Screen & Level Editor) Daan Josephus Jitta, 17-Aug-1988 This program can split the screen definition file LEVEL.DAT, as used by the public domain game ARKA, in the 50 screens ARKA has. These screens can than be edited with a text editor or with First Word (don't use "WordProcessing" mode). First the screens will be described. At the left half of the screen the stones are displayed by type. The characters have the following meaning: no stone present o 3D-stone . normal stone + unremovable stone = stone with contents (B, C, L, P, S, X) At the right half of the screen the hit counts are displayed. A hit count of 2 means that you have to hit the corresponding stone twice before it disappears. Valid hit counts for stones: 1-5 (probably even higher). One final warning: don't change the format of a screen file (don't add characters, only replace them)! Screen files can be joined back together in a new LEVEL.DAT file by using the appropriate menu entry. The old LEVEL.DAT file will be renamed to LEVEL.OLD (tip: save the original to an other disk as well). Levels can be exchanged by renaming the appropriate screen files. This program is hereby donated to the public domain. Copy it as many times as you like. Press any key to continue...Y#! ARKA_SLE 1.0b (ARKA Screen & Level Editor) Daan Josephus Jitta, 17-Aug-1988 i) Info s) Split LEVEL.DAT in 50 LEVELxx.SCR screen files j) Join the 50 screen files to new LEVEL.DAT file q) Quit Please make your choice: isjqSHELL Press any key to return to the desktop... %s: cannot open %s. %s: read failed from %s. %s: write failed from %s. %s: cannot create %s. %s: not enough memory. %s: invalid stone type (%s) read. %s: i/o failure %d: %s. Y4 E%s%dfl %s has an invalid size (only %d bytes were read)e%02d.scrl level %02d screen (%d bytes) written to %sl %d screens written to the files %sxx.scr ef%02d.scrl level %02d screen (%d bytes) read from %sl New %s created. el Only %d bytes written to %s (not enough disk space?) eElBad pointer in free. {NULL} You must compile with the -f option to include printf() floating point! !!#((()@CCAP????????????????????????@@@@@@@@@PPPPP@@@@@@@@@@@@@@@@@@    @ 0X L"20 l*ZNBT:LHt  @J$  $@$&vFP( LD"   $$  .6*"  "$j:BX<$<H8*046  & 6& ,$ &(2> 0 F0  H. dwQ.. dwKREUZ_ASPRGfwRق`~FR` Efv*oM , m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HN$Hx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNHz2?< NA\pdAxr0XQ)K\NNLdddJrBjNuHz?<&NN\NCAp$L Qp N9lrBlJpNNpMN9@pdAr 0Q0tr N9lNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu pa2|a>:><|a4g RGj`a(0GVfA1G<ap??<?<NM\Nu??< NMXNu&8*:EENuHnX 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuN4pNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|H  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N6.HJgtBnHNupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A d,SFSGFnHGnDDDk9DBlDEk9EBlFcllGcll0,lb 0,lcNu:pmrtA)HA)HNpNHHPNF4 _:8><DbFEbGCHP@dʾAdBD2ƞE29|C???FF22N23BRG0@\@N"2)IN:(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NHNu@9@JpNNr|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| Np`p`pNNu~`~ `~HAҬ 2HA dJ@g??)AVHT hf if$Qb XbEJf$?`N.NXlX4TSWjT` $A4TQE I XX0d?N.NXlVT4SWfT`2,V`$AT4Qr40N2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN."l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNuApNNn$N$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0Nu _0HpN _0HpNp"_0HqNp"_0HqNE ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%Nu(* 0(iN$E 4R`Q$D 4R`QˈN DN ENua NuN IHPg"B  g &gNJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkNRB0 b b瀀`RB0 fрd`2p <0N`QNuH&NրN튶jNuNq Y Qf*d ЀЀ 2$4BBNuHRp` HRpJQfpNNq Y Qfd ЀЀNuNN$_& Y Qf d փփABJk 0NNN<$_& if"QdփփHRNNN~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@NL"2` NqR YEjrd0` SjN$_N"ЀЀ 2$4BBN YQf "_Nq*eNN*< NqbІSGfN$_NdփփHRNB YQf "_&Nq*eNN*<&NqbֆSGfN~$_N"ЀЀЈNp"X4g S`"QNuNR*<N`"2QjNu @  "002Nu" KC`e N.`d \N$ l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNu0,p2,rR@RANuS@SA9@p9ArNu9@pN4, 6fprta0,2,NuA4, 6f9@9Ap rt`C l ", Ⲭ dfѬ SA 0! Nup"NNNJfNup#`p`pNu)H9@Jp4NP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8Nh  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C]fApNNNHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Fehler # ][Abbruch]\f.B &lX)K\)ld` lp ,BQjNup(NXYp-KNu"l`Yd&-KNN."l`YepN&#k"C-KN"Cփk փk2##`փk"`2`$Y8gHRDD*D%H8#$c2g# HRDD%H`pr`&AdRd QJBgRBBABJk"l` d&6&|0!NuN."l` epZNC ҳfHP0(N$W$RR@H`2Q"H _$l` dd" $X&0BP6Y&|Hg R@@%E ҳeHQ0)N$_$RR@H`2QNu$Y 0P1@Hg R@@%NuN.$l` epZN?<NNTUVHfN"N"N(Fr DM 100 schreibe ich es um auf Color.NHxN0 Nur fr| Monochrom-Monitor| | Captain Cook '87HPNOkr"_ NANNAANhAH$NhHxNP (c) by Danny Cook | Max-Planck-Str.8 | Schweinfurt | 1987HPN ok r"_ NANpNBm"Bm(BmpAxNhA^Nh?<d?<?<!?<1A" NZpNPpNT <riN <1"<!NpNPpNT <rdN <,"<N <"<|N <"<N <"<N <"<NA^NhpNDpNHpNLpNA 0 <r$<ANDAN.&<x*<Nv&<x*<NNX??<AN*CRN"NxAN.&<x*<Nv&<x*<NNX??<AN*CRN"NxN`bNq <"<NN Kreuz As!NpNDpNHpNLpN <"<NNwritten by Danny Cook 8/87NN"pr2NNweiterNN"pr?NNO.k4NN"prNNLevel:NA 0N"prNAN*CLNNAN*CLNNDNpNNAGNhAHN.&<x*<NpJBgp/AHN.&<x*<NpJBgp$VHfN'ApNpNN.Nn`@NqACNhJBgN/`AHNhANN.&<x*<NfN02 <r$<HA6N.HABJNhvN6L8NNXrN <r$<HA6N.HABJNhvN6L8NNXrNAT 80A 0 <r$<zAN|AN*CNzNfN0AN.&<x*<NNXC"N/ATN*C"N"_NATNNn`NqNqA^NhpZ"<N <"<NA \0 <r$<&<x*<AN|AN*"<NpN>Nn`NqNqASZNhA^NhA>nNhA@:NhAN.&<x*<NpJBgp/A N.&<x*<NpJBgp$VHfN2.AN.&<x*<NfN2AZ H0N2AZ H0A` H0AlBNhN3AN.&<x*<NpJBgp/A N.&<x*<NpJBgp$VHfN2A7NhN3AN.&<x*<NfN3VAN.zNfN3FATN.&<x*<NfN3A z0A` H0A_NhN3@A \0A` 0A_NhN3PAjNhN3AN.zNfN3A \0A` H0A_NhN3AN.zNfN3AjNhA^Nh <h"<N <"<cNA^NhN"pr'NNQuitNAN.zNfN4$AN?<?<?<?<A" NZA^NhpNPpNT <"<N <"<NA^Nh <"<N <"<N <"<NNContNA 0 <r$<ANDNH ANn`NqNq`NBmjtA(NAT <0 <r$<ATNDATN.HABJNhNX/ATN.HABJNhNXCN&<x*<NCNATN*C"N&<x*<NfN8A 0N`jNqBmX <r$<ATNDATN*CN&<x*<NfN9AfN.&<x*<NAfNBAfN*/ATN*CNC(NN`NqNqp CN&<x*<NfN9hAjNhA` H0AVvNhN>fAfN.&<x*<NfN:pC(N&<x*<NpJBgp/pC(N&<x*<NpJBgp$VHfN:6AN.zNfN:&A \0A` H0A_NhN:0AjNhN:AN.zNfN:\AjNhN:A` H0A 0AUvNhN>fpC(N&<x*<NfN;$p CN&<x*<NfN:AZ H0A` H0AlBNhN;AjNhA` 0AVvNhN>fpC(N&<x*<NfN;AN.zNfN;A` 0A z0A_NhN;AjNhN>fpC(N&<x*<NfN=$AN.&<x*<NpJBgp/AN.zNpJBgp$VHfN<AjNhN=AlNAlN.&<x*<Nv&<x*<NNX"<Np N>AlN.&<x*<NfN=p2NBmpA u0 <r$<&<ʀx*<AN|AN*"<Np N>Nn`NqNqAN.zNfN=A` 0AUvNhN=AjNhN>fAN.zNpJBgp/AN.&<x*<NpJBgp$VHfN=xAjNhAN.&<x*<NpJBgp/AN.zNpJBgp/AN.zNpJBgp/pC(NzNpJBgp$VHfN>fA @0 <r$<&<x*<AN|?<?< AN*/p" _Np NpNN.pNNn`NqNqNNBmXA <0 <r$<ANDAN.HABJNhATNNfN>AN.HABJNhATNBN`NqNqATN.&<x*<NfN?A 0BmvAx 0 <r$<AxNDA <0 <r$<ANDATN.HAN.HABJNh&<x*<NL8NfN?AN.HABJNhATNBArN.&<x*<NArNBN`vNqN`HNqArN.&<x*<NfN@2A 0N@6BmNA @0 <r$<ANDAN*C"NHAN.HABJNhL8NHp/C"NH <r$<HABJNhL8NL8Ng NZN@N`~NqAN.&<x*<NfNAA 0NNN"prNNKarten werden gemischt.N+|pANBBp3ANB -C"N/ <r$<NtNXC"N"_NNp`NqNqNp`NqNqN"prNpNpNNNNp4C"N`pCRN`p CXN`pCN`p CN`pC(N`Hxp C.~NbpC^N`pCLN`pC4N`pC:N``fLANAN*C"NHAN*C"N&<x*<NN&<x*<NvL8NN`LANA`N.&<x*<NNj&<x*<NHAN.&<x*<N&<x*<NH <r$<L8NN.L8NNXC^NNN`RLATNA~N.ATNNpJBgp/A퀄N.ATNNpJBgpNN`A"<NN As Vierling:N <E"<NN25 Sonderspiele4N <L"<NNStraight flush:4N <S"<NN50 Sonderspiele4N <Z"<NN Royalflush:4N <a"<NN100 SonderspieleN <="<NN Sonderspiel:N <D"<NNSie bekommen 3 DM4N <K"<NN anstelle der 4N <R"<NN Kleingewinne.4N <Y"<NNHaben Sie weniger4N <`"<NNals 10 Sond.SP,4N <g"<NNknnen Sie die 3N <n"<NNDM gegen Sonder-N <u"<NNSP austauschen.4NpNPpNTp NXp r NpNPpNT?<?<h?<c?<A" NZ?<?<j?<?<A" NZ?<?<j?<l?<A" NZ?<d?<h?<?<A" NZpNDpNHpNLp NA^Nhp#"<NpA"<Np7"<NNTeilenNp#"<NpA"<Np7"<NNTeilenN?<?<#?<?<AA" NZ?<?<I?<r?<RA" NZ?<?<?<?<A" NZpNPpNTNNAT H0?<?<pr _NpNA^NhA L0 <r$<&<x*<AN|AT2NhATN.&<x*<NATNBp8NpNpNpN&pNpNN.p NNn`NqNqA^NhNNpNPpNTATN.&<x*<NNXriNATN.&<x*<NNX"<NpNPpNTATN*rdNATN.&<x*<NNX"<NATN.&<x*<NNX??<xAN*C"N&<x*<NNXCRN"NxATN.&<x*<NNXrsNAN.HABJNhNXCXNNNNAr 0Ax 0A퀖 0 <r$<A퀖NDAXNhNSWHg NZNUN`NqNqA퀖N.&<x*<NfNVCrA 0AT H0AN.&<x*<N&<x*<NAxNBAZDNhA_NhAiNhNNAr 0Ax 0A퀖 0 <r$<A퀖NDAXNhNSWHg NZNWLp C4A:rN?<?< pr _NAvNhpNN.p C4A:rNA퀐N.&<x*<Ng NZNWLN`nNqA퀖N.&<x*<NfNWA 0A퀊N.vN6ATNBAN.&<x*<N&<x*<NAxNBAZDNhAN.&<x*<NfNX0ATN.HAC\NhJBfNX*AZ H0Ak^NhNXAN.&<x*<NpJBgp/AN.&<x*<NpJBgp$VHfNXAhNhNXAx 0A_NhAiNhNNCrA 0 <r$<AxNAN|A`N*/AN*"NA`N.&<x*<NNX/AN.&<x*<NNX"N?<?< AN.&<x*<N&<x*<N&<x*<NNX/p" _NAvNhpNN.A`N*/AN*"NA`N.&<x*<NNX/AN.&<x*<NNX"NA퀐N.&<x*<Ng NZNZ0A_NhNkZA$N.&<x*<NA$NBNANA 0AZN.ANDANN"pr#NN...(NAN.&<x*<NfNkA z0N"AN.NN&D/p"NANN?<?<pr _NpNpNN.pNN`NNqNNAk^NhAjNhAVvNhNHx/ <r$<C"NHx0 <r$<C"NHx1 <r$<C"NHx2 <r$<C"NHx3 <r$<C"NNNAGNhNNzNpJBgp/A$N.zNpJBgp/AHN.&<x*<NpJBgp/AHN.&<ŀx*<NpJBgp/APB> :T\r "Z"   " $$"  $"  $J jt  J8x&dR6 ,2p363#''B4a% #('By4a% *| (|):<0TgTM` MMfQ#3j#("'#*86:< 34a$Q#.86:<34a$Q?<NNTO|f #)j3F`|f #)Z3F` #)J3F33|g |)z:<Q3)Yy,Yy,*Yy,BYy,Ty,Ty,|f"Vy+TWy+l]y,,]y,Dy ,`2Wy,,Wy,D]y,3)3)3)3)By3*|(|1b:< g RMf`@ M fQJ( f #3V" AUHg"f#3R33`33By3 y3g*|(|1o:<g RMgb` M fQJ(f " AUHg<"fUH `#3~ y3gJy3gB`p#3z`33?<NATO<A(|D$|D*|E&|ED |1~"|1:<QBy3By3By3By3By3By3By3By333Jy3f*|3` y3f*|3"`*|30#3ba&k JF>gak33*|;*< @ak*|3za*|3aa y 3b> yc3b4 |;0< Pb$ hb hb hb JQ`a`\a\a#0*333By333`a*k*33*|)zJa&a:a`aaZ33aHy'?<&NN\OJy3g33#''#F86a y(Ff09F y3f#('34a ?<NNTO#3n?<NATO33Bg/<E?<GNAPO?<NNTO33J@fajJ@kJy3fJy3f,3/3/@3/p3.#0{/Z`>3/3/@3/p3.Jy3f #0l/Z` #0o/Z#.86a33aT6 y6f3.hBy3*|2BEa. y6f33a,`aa y3bJg y6fah*y3baHkX33Jy3gnavJy3g*|2P:<aa@`(pa *|;*< @a*|3za*|3aa 333333`*|)zJakaaaa33By333` y6f3.Jy3g34#.86a `a4aJ9DDgv y6fjaL"|1aaXf(a*|2:<a y6f8 |DDa6BgHyDD?<gxSy:>*|0l`Jy:gRy:>*|0l` y:3 3:#BmBma |63333333333373:%BmBma |6333333a|aJ@g#('By4a`#*86aT33 34aL34aZ34ah35By5apB4a34a8<(|533820)y)z9@9|0)y)z9@aJ80)y)z9@9|0)y)z9@a0 |289y)z0 |29@9y)|a0 |89y)z0 |9@9y)|aQ>89y)z9|9y)z9|9y)~ 9| 9y)~9|9y)z33ah34ax34a*|4:r;|Bm353)z5353)5aaBy3aBy3a63#73#(^' |4  3#*86a:96 |(@Xg R@|f` 3333#(h'34#*86a<#63096296x893ؼ* D#3Nhh3333#333a097y3m y3n ~097y3m ny3n d96f 96g33093|g4| g.|g(|g"|g|g|g y3Nh aa:093|g|g96f96f097y3my3n097y3my3o 33` p093Hм(*@*UNBy3a*|2BEaVaf y6f33a`arana8a> y3bJg B y6f 6aJy3g"|1`"|1aa|f0aa"*|2:<aa y6f y3baRBg/93b?<#0*By3By3Jy3g #('34#:686a d34#*86a Jy3g093|gr| gj|gb|gZ|gR|gJ|gB y3Nh Jy3g: y3g.a 0` y3mr y3nh093̰y)zmZy)~nRJy3f |)0<JfQ`By333#('34#)86a d`Jy3gR#('34Jy3fBy4`&33Jy3g a h#86` #:686a By393f93fJy3g$By3`Jy3f a33093̰y)zmy)|la`334aR334a^334aj335By5ap334334ar334a334a334a34a @#('334a #('a #('By4a a:eBmBma a<y-tBy3`33 y23m y3lp093ʐ|2 h@33p093̐y)z)h@3393gv93gNa296f96f#33J#)333 aDa#3J)aNu?NAXONu/?<ANA\ONuBy3~<< ajkj*|3vzak^ UbX mbP\ aFkFakB Ub< mb4޼DQ < @ak*|3vzabk U b mcbNu33Nu*|4: ;|;|`*|4:;|;|`*|4:;|;|`*|4:;|;|`*|4:l;|;|`*|4:;y3;|`*|4:;|;|`~*|4:;|;|`d*|4:;|;|`J*|4:}BmBm+|%a,#3fNu*|4:}BmBm+y3f`*|4:|;|;|`#('*|4BU;|a#63#63*|4#(|'BU+y3+y3aJy6j0`>Sh3>`03= y3B(g3=(g3=Nu |3=@3|NޭF3Nu#p&!%p x f h`?<"NNTO @ h#'tNu4456748468696 #MNr3 462*+,Zdefghk    Djvl$Hj  d P U@`px|~|lF@`px|~|lF/////////0~// 0//0//0~//   L/L*6 *R9*n9 /B /B*A  A 0lD H  9   5  = *A A 0rD H  9 0` 0f$*A  / 0   0  07%  0VC 0[: 0O2 0 0    0+ ! 0C% * &0&00 1/ 1!/  18 1L @*  0V  @ 0l ` .ST-Log Presents:Copyright 1987Little Green Footballs MOUSE-KA-MANIA! by Charles F. JohnsonInstallRemoveSaveLoadClear DataClear MaskInvert DataInvert MaskMirror DataMirror MaskRotateEXITUNDO DATA MASK0100010100 Data ColorMask ColorCurrent Frame# of FramesDelayAnimation ONAnimation OFF Mouse-Ka-Mania by Charles F. Johnson The Editor doesn't workin low resolution.However, you may stillinstall or remove acustom mouse cursor!ITEM SELECTORLowMediumHigh:\*.DAT:\*.MKM Save Mouse Data to which File? Save Animation to which File? Load Mouse Data from which File? Load Animation from which File? [2][ Which type of file? | ][Animation|Single Frame][3][ This is not a Mouse-Ka-Mania | animation file. | ][ Oops! ][3][ The file | already exists! | | Over-write it?| ][ Yes | No ][3][ This disk is full! | ][ Oops! ] Mouse-ka-Mania!\MOUSELOW.DEF\MOUSEMED.DEF\MOUSEHI.DEF         . P    B            "          $  &                  0            "   ,*$     "  "       "       & "   >                   $     ,    b\    FL      "         N   * 80x0H (0$>???|>1!#o&78 ?oOG#|>???>1!#g&28 /oOG#~???<|1!#b&28 (gGG#???1##'8 (d6CC#2>> >|6BBA#|<x??Nc|<}{b&28 (eCO/><??><}}b~28 (eGG'><>~~~|~~^zA#|>?<_G#|@`px|~xp`@x<@`px|~p`@. xw.. xwsMOUSE28 S ywo************************************************************************** * * * MOUSE-KA-MANIA! * * * * by Charles F. Johnson * * * * Copyright 1987 Charles F. Johnson & Little Green Footballs Software. * * All rights reserved. * * * * This source code is for the MADMAC assembler. * * * ************************************************************************** * ----------------------------------- * Last revision: 08/27/87 13:14:48 * ----------------------------------- .include "C:\\AS68\\OBJECT.S" * Object index equates savebt = 22 loadbt = 29 clrmbt = 30 clrdbt = 23 invdbt = 24 invmbt = 31 upbt = 11 leftbt = 12 downbt = 18 ritebt = 13 mirdbt = 25 mirmbt = 32 exitbt = 26 instbt = 5 remvbt = 6 undobt = 27 rotbt = 28 cdowbt = 8 cupbt = 10 colval = 9 colttl = 7 frmttl = 14 frdown = 15 frup = 17 frmval = 16 anonof = 21 loinst = 3 loremv = 7 loexit = 11 locolr = 10 lodown = 12 locval = 13 loup = 14 losvbt = 5 * Guaranteed memory locations ipl_vec = $70 ; System vertical blank vector sshiftmod = $44C ; System resolution variable * These locations are undocumented, and are not guaranteed to remain the same * in future versions of TOS. However, they are referenced by negative * offsets from the Line A variable areas, and they do work with the version * of TOS in the Mega ST. ignore = -$153 ; Negative offset to mouse packet ignore flag but_stat = -$15C ; Offset to mouse button status variable mouse_x = -$25A ; Mouse X location (pokeable) .text move.l #ustack,a7 ; Accessory initialization dc.w $A000 ; Line A init move.l a0,line_a move.l #ap1rsv,a5 clr.l (a5) ; appl_init clr.l 4(a5) clr.l 8(a5) clr.l 12(a5) move.l #a_init,aespb bsr aes move.l #m_reg,aespb ; menu_register move intout,intin move.l #accmsg,addrin bsr aes move intout,menuid ; Save menu ID number move.l #g_hand,aespb ; graph_handle bsr aes move intout,ghandl move.l #e_timr,aespb ; Call evnt_timer to let GEM finish doing clr.l intin ; whatever the heck it does to initialize bsr aes ; (Wait for _zero_ milliseconds) move.l #g_mous,aespb ; Set arrow cursor so we can search for it clr.w intin bsr aes move.l #$2000,a5 ; Start searching for the mouse definition sm_1: move.l #arrow_data,a4 ; Pointer to my arrow data move #31,d5 ; 32 words to check sm_2: move.w (a5),d0 ; Get a word cmp.w (a4),d0 ; Match first word of arrow definition? beq.s sm_3 ; Yes, check the rest addq #2,a5 ; Increment pointer bra sm_2 sm_3: move.l a5,a0 ; Save address of first match sm_4: cmp.w (a5)+,(a4)+ ; See if we have the whole mouse here bne sm_1 dbf d5,sm_4 move.l a0,sprtad ; Found it! Save mouse sprite buffer address move.l #r_obfx,aespb ; Adjust coordinates in editor object tree move.l #editbx,addrin move #objnum,d5 fxedt: move d5,intin bsr aes dbf d5,fxedt move.l #lowbox,addrin ; Now adjust the low res object tree move #lo_num,d5 fxlow: move d5,intin bsr aes dbf d5,fxlow move #4,-(sp) ; Get resolution trap #14 addq #2,sp cmp.w #2,d0 ; Hi res? bne.s ckmed1 ; No, skip move.l #hi_val,valsav ; Save address of color translation table bra.s savres ; based on the current resolution ckmed1: cmp.w #1,d0 bne.s cklow1 move.l #med_val,valsav bra.s savres cklow1: move.l #low_val,valsav savres: move d0,o_res ; Save boot resolution cmp.w #2,d0 ; High res? beq.s hi1 ; Yes, skip move.l #y_off,a0 ; Adjust the Y coordinate variables move #4,d5 ; 5 of these adjres: lsr.w (a0)+ ; Divide by 2 dbf d5,adjres move.w #160,y_scr hi1: subq.w #4,upco ; Adjust the positions of a few objects subq.w #4,leftco subq.w #4,riteco subq.w #4,downco addq.w #2,datco addq.w #2,mskco cmp.w #2,d0 ; d0 still holds resolution (right?) bne.s med1 ; Not hi res, skip addq.w #3,cop_co+2 subq.w #3,footco+2 ; Shuffle them objects! subq.w #6,leftco+2 subq.w #6,riteco+2 sub.w #12,downco+2 bra.s fsel_search med1: subq.w #3,leftco+2 ; Have to move 'em by different amounts subq.w #3,riteco+2 ; in medium res subq.w #6,downco+2 move #4,filhot ; Set medium res hot spot fill style move #4,fillst ; Set mask fill style move #4,celsiz ; Editing grid cell size move #2,planes ; Number of color planes fsel_search: clr.w fsflag ; Clear "search failed" flag move.l #$A000,a5 ; Start searching at $A000 s_1: move.l #itmtxt,a4 ; Get pointer to search string ("ITEM SELECTOR") move #12,d5 ; Get number of bytes to search for s_2: move.b (a5),d0 ; Get a character cmp.b (a4),d0 ; Is it "I"? beq.s s_3 ; Yes, check for rest of string addq #1,a5 ; Increment the pointer cmp.l #$40000,a5 bne s_2 bra.s s_6 ; Keep searching s_3: move.l a5,a0 ; Save address of first match s_4: cmp.b (a5)+,(a4)+ ; See if we have the whole string bne s_1 ; No, go search more dbf d5,s_4 ; Count down and loop tst.b 13(a0) ; There should be a zero after it bne s_1 s4_2: move.l a0,d0 ; Found it! Save address of text in d0 move.l a0,iasav move.l a0,d1 ; Move address to d1 so we can manipulate it bclr #0,d1 ; Clear odd bit move.l d1,a0 ; Back to a0 s_5: subq #2,a0 ; Decrement the pointer to memory cmp.l #$A000,a0 ; Back at the start already? beq.s s_6 ; Yes, skip ahead move.l (a0),d1 ; Get a longword cmp.l d1,d0 ; Is this the pointer to "ITEM SELECTOR"? bne s_5 ; No, search more move.l a0,itmadr ; Save address of pointer move 8(a0),ilensv ; Save original string length bra.s search s_6: move #1,fsflag ; Set flag to indicate search failure search: clr.w lowflg cmp.w #2,o_res ; High res? beq getdrv ; Yes, skip this move.l #$A000,a5 sr_1: move.l #restxt,a4 ; Find object spec of "Low" button in the move #14,d5 ; "Set Preferences" desktop dialog box sr_2: move.b (a5),d0 cmp.b (a4),d0 beq.s sr_3 addq #1,a5 cmp.l #$40000,a5 beq.s sr_6 bra sr_2 sr_3: move.l a5,a0 sr_4: cmp.b (a5)+,(a4)+ bne sr_1 dbf d5,sr_4 tst.b 15(a0) ; Once again, there has to be a zero after it bne sr_1 move.l a0,d0 move.l a0,d1 bclr #0,d1 move.l d1,a0 sr_5: subq #2,a0 cmp.l #$A000,a0 beq.s sr_6 move.l (a0),d1 cmp.l d1,d0 bne sr_5 subq #2,a0 ; Point to status word of "Low" button move.l a0,d0 sub.l #96,d0 ; Get pointer to status word of "OK" button move.l d0,res_okptr cmp.w #2,o_res beq.s set_lo tst.w o_res beq.s set_me set_lo: clr.l d0 bra.s mult24 set_me: move.l #1,d0 mult24: mulu #24,d0 ; Compute the index to the button that add.l d0,a0 ; should NOT be selected move.l a0,res_optr ; Save pointer to its status word bra.s getdrv sr_6: move #1,lowflg getdrv: move #$19,-(sp) ; Get current drive trap #1 addq #2,sp add.b #65,d0 ; Convert to ASCII move.l #savdir,a4 move.l #svadir,a2 move.l #loddir,a5 move.l #loadir,a3 move.b d0,(a2)+ move.b d0,(a3)+ move.b d0,(a4)+ move.b d0,(a5)+ move.l #datext,a0 move.l #aniext,a1 move #7,d5 cpydir: move.b (a0),(a4)+ ; Move in the rest of the directory lines move.b (a0)+,(a5)+ move.b (a1),(a2)+ move.b (a1)+,(a3)+ dbf d5,cpydir clr.w colflg ; Clear color change flag clr.w insflg ; Clear installed flag clr.w antflg ; Clear animation title flag clr.w onoff ; Clear animation on/off flag clr.w franum ; Clear frame number clr.w moucnt clr.w vbi_on clr.w diflag move.w #1,nframs ; Set number of frames in loop tst.w o_res ; Are we in low res? bne.s rdef1 ; No, skip move.l #lowdef,a5 ; Set address of default mouse filename bra.s rdef3 ; based on current res rdef1: cmp.w #1,o_res bne.s rdef2 move.l #meddef,a5 bra.s rdef3 rdef2: move.l #hidef,a5 rdef3: move.l a5,filadr bsr sav_exist bmi no_def cmp.l #74,dta+26 ; Is it a data file? (74 bytes) beq rdef4 ; Yes, skip bsr open_file ; Open the file bmi no_def ; Error, bail move d0,fhandl move.l #mouse_array,a5 ; Set address of mouse animation array move.l #74*32,d5 ; Length of data bsr read_file bmi no_def move.l #nframs,a5 ; Now read number of frames move.l #2,d5 bsr read_file move.l #delval,a5 ; And delay value bsr read_file bsr clos_file cmp.w #32,nframs ; # of frames greater than 32? bhi.s rdef3_0 ; Yes, exit cmp.w #99,delval bhi.s rdef3_0 move.l #mouse_array,a0 move #31,d0 ckdanf: cmp.w #15,(a0) ; Check all hotspot positions bhi.s rdef3_0 ; and color values cmp.w #15,2(a0) bhi.s rdef3_0 cmp.w #15,6(a0) bhi.s rdef3_0 cmp.w #15,8(a0) bhi.s rdef3_0 add.l #74,a0 dbf d0,ckdanf bra.s rdef3_1 rdef3_0: bsr clear_array bra.s no_def rdef3_1: bsr arr_2_frm ; Copy first frame to editing area bsr init_nfrm ; Initialize frame number box move.l #anonms,tinf5 ; Set "Animation ON" message move.w delval,vbtimr ; Set the vertical blank timer clr.w moucnt ; Clear the frame counter move #1,onoff ; Now set the animation flag bra.s rdef5 rdef4: bsr open_file ; Try to open default mouse file bmi.s no_def ; Error, assume file not found move d0,fhandl ; Save handle move.l #mouse_form,a5 ; Read mouse data from file move.l #74,d5 bsr read_file bsr clos_file ; Close it rdef5: bsr cpy_inst ; Copy it to the "installed" area bsr frm_2_arr bsr init_col ; Initialize the color indicators move #1,insflg ; Set installed flag no_def: bsr copy_mouse ; Initialize the undo buffer pea save_vbv move.w #38,-(sp) trap #14 addq #6,sp tst.w insflg ; Mouse installed? beq.s evntms ; No, skip move #1,vbi_on ; Turn on the vertical blank interrupt evntms: move.l #e_mesg,aespb ; Wait for GEM to send us a message move.l #mspipe,addrin bsr aes cmp.w #40,mspipe ; Is this an AC_OPEN message? bne evntms ; No, go back move mspipe+8,d0 ; Is it for this accessory? cmp.w menuid,d0 bne evntms ; No, go back move.l #w_updt,aespb ; Call wind_update to block user actions move #1,intin bsr aes move #2,-(sp) ; Get address of screen RAM trap #14 addq #2,sp move.l d0,screen ; Save it move #$19,-(sp) ; Get current drive trap #1 addq #2,sp move d0,curdrv ; Save it clr.w -(sp) ; Get current pathname move.l #curpth,-(sp) move #$47,-(sp) trap #1 addq #8,sp move #4,-(sp) ; Get current resolution trap #14 addq #2,sp move.w d0,res tst.w d0 ; Low res? bne continue ; No, forge ahead bsr open_window tst d0 bmi alrtx1 tst onoff ; Animation on? bne.s arroff ; Yes, turn off color change box tst.w insflg ; Is a mouse installed? bne.s arr_on ; Yes, skip ahead arroff: move #DISABLED,locstt ; Disable the color change box move #DISABLED,lodstt move #DISABLED,loustt move #DISABLED,losstt move.l #blnkms,lovadr bra.s dolbox ; And continue arr_on: move #NORMAL,locstt ; Enable the color change box move #NORMAL,lodstt move #NORMAL,loustt move #NORMAL,losstt tst colflg bne.s ao_1 move.l #dvalms,lovadr bra.s dolbox ao_1: move.l #mvalms,lovadr dolbox: move.l #lowbox,addrin ; Draw the low res dialog box bsr drawbx move #1,diflag loinpt: bsr formdo ; Get user input bclr #7,intout ; Clear high bit in case of double-click cmp.w #loinst,intout ; 'Install' button selected? bne alrt0 ; No, skip move #NORMAL,loistt ; De-select it clr.w adflag move.l #dat_or_ani,a5 ; Show alert box clr d5 bsr alert cmp.w #1,intout ; Animation file? bne.s l_lo1 move #1,adflag bsr fsl_aload bra.s l_lo2 l_lo1: bsr fsl_dload ; Set up fsel strings l_lo2: bsr fsel ; Go call the dreaded File Selector move.l filadr,a0 tst.b (a0) ; Got a filename? beq dolbox ; No, exit cmp.w #1,intout+2 ; OK button? bne dolbox ; No, exit bsr set_path ; Set drive and path move.l filadr,a5 ; Load the mouse cursor file bsr open_file bmi alrtx ; Error, bail out-ski move d0,fhandl ; Save file handle tst adflag beq.s l_lo3 bsr chk_anfile tst.w a_good beq.s lo_a0 move.l #notani,a5 move #1,d5 bsr alert bsr clos_file bra alrtx lo_a0: moveq #0,d0 bsr lseek move.l #mouse_array,a5 move.l #74*32,d5 bsr read_file move.l #nframs,a5 move.l #2,d5 bsr read_file move.l #delval,a5 bsr read_file bsr clos_file move.w #1,insflg move.w #1,onoff move #1,vbi_on ; Turn on the vertical blank interrupt bra arroff l_lo3: move.l #mouse_form,a5 ; Read in the mouse move.l #74,d5 bsr read_file bmi alrtx bsr clos_file ; Close the file bsr cpy_inst ; Move it to 'installed' area bsr chg_mouse ; Go change the mouse bsr init_col ; Initialize the color counters move #1,insflg ; Set installed flag clr.w onoff move #1,vbi_on ; Turn on the vertical blank interrupt bra arr_on alrt0: cmp.w #losvbt,intout ; Save? bne alrt1 move #NORMAL,losstt ; De-select the button tst onoff ; Animation on? beq.s al0_0 move #losvbt,intin move.l #lowbox,addrin bsr objoff bra loinpt al0_0: bsr fsl_dsave ; Set up fsel text strings bsr fsel tst.b savfil ; Filename present? beq dolbox ; Nope, exit cmp.w #1,intout+2 ; OK button? bne dolbox ; No, must be 'Cancel' bsr set_path ; Set the pathname from fsel's output move.l #datext+3,a1 bsr chk_extension ; Add the .DAT extension (if none exists) bsr sav_exist ; See if the file already exists bne.s locrea ; It doesn't, skip ahead bsr set_exist ; Move the filename to the alert box lo_sho: move.l #exist,a5 ; Show alert box move #1,d5 bsr alert cmp.w #1,intout ; Overwrite the file? bne dolbox ; No, split move.l #savfil,a0 bsr delete_file locrea: clr.w -(sp) ; Create the data file pea savfil move #$3C,-(sp) trap #1 addq #8,sp tst.w d0 bmi dolbox move d0,fhandl move.l #m_form2,-(sp) ; Write the mouse buffer to the file move.l #74,-(sp) move fhandl,-(sp) move #$40,-(sp) trap #1 add #12,sp cmp.l #74,d0 beq.s locr_1 move.l #dskful,a5 move #1,d5 bsr alert move.l #savfil,a0 bsr delete_file locr_1: bsr clos_file ; Close it bra dolbox alrt1: cmp.w #loremv,intout ; Remove? bne.s alrt2 ; No, skip clr vbi_on ; Remove the vertical blank interrupt move.l #g_mous,aespb ; And turn on the arrow clr.w intin bsr aes clr.w insflg clr.w onoff move #NORMAL,lorstt ; De-select the button bra alrtx alrt2: cmp.w #lodown,intout ; Color down button? bne.s alrt3 ; No, hop over this code tst insflg ; Installed? beq loinpt ; No, go back tst onoff bne loinpt tst.w colflg ; Which color are we changing? bne.s lcd_1 ; Must be the mask tst.w m_form2+8 ; Is this color zero already? beq loinpt ; Yes, exit subq.w #1,m_form2+8 ; Decrement the color register value move.l #dvalms,a5 ; Address of data color text bra.s lcd_2 ; Skip over lcd_1: tst.w m_form2+6 ; Is it zero? beq loinpt ; Yes, let's just forget about this subq.w #1,m_form2+6 ; Decrement it move.l #mvalms,a5 ; Address of mask color text lcd_2: move.l #1,d5 ; Two characters add.l d5,a5 ; Set pointer to 2nd character ldloop: cmp.b #'0',(a5) ; Is it ASCII zero? bne.s ldl2 ; No, skip ahead move.b #'9',(a5) ; Wrap it around to 9 bra.s ldl3 ldl2: subq.b #1,(a5) ; Decrement the letter bra.s lodrw1 ldl3: subq #1,a5 ; Set pointer to next place dbf d5,ldloop ; Do the 2nd letter bra.s lodrw1 ; Go draw the text object alrt3: cmp.w #loup,intout ; Color up button? bne alrt4 ; No, get out! tst insflg ; Installed? beq loinpt tst onoff bne loinpt tst.w colflg ; The rest of this code is identical to bne.s lcu_1 ; the above section, except that it handles cmp.w #15,m_form2+8 ; incrementing the color value beq loinpt addq.w #1,m_form2+8 move.l #dvalms,a5 bra.s lcu_2 lcu_1: cmp.w #15,m_form2+6 beq loinpt addq.w #1,m_form2+6 move.l #mvalms,a5 lcu_2: move.l #1,d5 add.l d5,a5 luloop: cmp.b #'9',(a5) bne.s lul2 move.b #'0',(a5) bra.s lul3 lul2: addq.b #1,(a5) bra.s lodrw1 lul3: subq #1,a5 dbf d5,luloop lodrw1: bsr chg_mouse ; Go change the mouse's color lodraw: move #locval,intin ; Index of object to draw move.l #lowbox,addrin ; Address of object tree bsr objoff ; Go draw it bra loinpt alrt4: cmp.w #locolr,intout ; Data/Mask toggle? bne.s alrtx ; No, skip tst insflg beq loinpt tst onoff bne loinpt eor.w #1,colflg ; Toggle the flag tst.w colflg ; Which one is it? beq.s lsw_1 ; It's data, skip ahead move.l #mcolms,tinf10 ; Set pointers to text in object tree move.l #mvalms,lovadr bra.s lsw_2 lsw_1: move.l #dcolms,tinf10 move.l #dvalms,lovadr lsw_2: move #locolr,intin move.l #lowbox,addrin bsr objoff ; Go draw the object bra lodraw alrtx: bsr res_dpath ; Reset the drive and pathnames move #NORMAL,loestt move #3,intin bsr dial move.l #w_clos,aespb ; Close window so the application gets a move whandl,intin ; redraw message bsr aes move.l #w_del,aespb ; Now delete the window bsr aes alrtx1: move.l #w_updt,aespb ; Allow user actions again clr.w intin ; (Hah! Were they ever disabled???) bsr aes clr.w diflag bra evntms ; Wait patiently for another message * Subroutines for low-res dialog box (strange place for them, I know) chg_mouse: move.l #g_mous,aespb ; Change that mousey! move #255,intin move.l #m_form2,addrin bra aes fsl_dload: move.l #i_load,txtadr ; Set up the 'Load' fsel text strings move #il_len,itmlen move.l #loddir,diradr move.l #lodfil,filadr rts fsl_aload: move.l #i_aloa,txtadr move #iallen,itmlen move.l #loadir,diradr move.l #loafil,filadr rts fsl_dsave: move.l #i_save,txtadr ; The 'Save' fsel text strings move #is_len,itmlen move.l #savdir,diradr move.l #savfil,filadr rts fsl_asave: move.l #i_asav,txtadr move #iaslen,itmlen move.l #svadir,diradr move.l #svafil,filadr rts sav_exist: pea dta ; Set DTA address move #$1A,-(sp) trap #1 addq #6,sp clr.w -(sp) move.l filadr,-(sp) move #$4E,-(sp) ; Check to see if the file already exists trap #1 addq #8,sp tst d0 ; Does it? rts cpy_inst: move.l #mouse_form,a0 ; Copy mouse data to "installed" area move.l #m_form2,a1 move #36,d5 cpyi1: move (a0)+,(a1)+ dbf d5,cpyi1 rts set_exist: move.l #exname,a4 ; Clear filename space in alert box move #11,d5 sete1: move.b #' ',(a4)+ dbf d5,sete1 move.l filadr,a5 ; Move filename into alert box move.l #exname,a4 move #12,d5 sete2: tst.b (a5) beq.s sete3 move.b (a5)+,(a4)+ dbf d5,sete2 sete3: rts * Here's where the editor code begins continue: move.l #contrl,a5 move #100,(a5) ; v_opnvwk (Open Virtual Workstation) clr.w 2(a5) move #11,6(a5) move ghandl,12(a5) ; Pass handle returned from graph_handle move.l #intin,a4 move.l #9,d5 vwrklp: move #1,(a4)+ dbf d5,vwrklp move #2,(a4) bsr vdi1 move 12(a5),vhandl ; Save VDI handle move #35,(a5) ; Inquire current polyline attributes clr.w 2(a5) ; vql_attributes clr.w 6(a5) bsr vdi move.l #intout,a0 move (a0)+,l_type ; Save 'em move (a0)+,l_colr move (a0)+,d_mode move (a0)+,l_strt move (a0)+,l_end move ptsout,l_wid move #37,(a5) ; Inquire current fill attributes clr.w 2(a5) ; vqf_attributes clr.w 6(a5) bsr vdi move.l #intout,a0 move (a0)+,f_type ; Save these attributes too move (a0)+,f_colr move (a0)+,f_patt bsr exch_button ; Set the button routine to an rts * move.l #intout,a5 * move.l 2(a5),wx ; Dialog box centered coordinates * move.l 6(a5),ww * subq.w #2,wx ; Compensate for the shadow * subq.w #2,wy * addq.w #4,ww * addq.w #4,wh bsr open_window tst d0 beq.s box move.l #w_updt,aespb clr.w intin bsr aes bra ex2 box: move.l #editbx,addrin bsr drawbx ; Draw the dialog box move #1,diflag dc.w $A00A ; Hide mouse move #1,intin ; Replace bsr write_mode move #1,intin ; Black lines bsr poly_color move #1,intin ; Ordinary straight lines bsr poly_type move #1,ptsin ; One pixel wide clr.w ptsin+2 bsr poly_width clr.l intin ; Normal, squared ends bsr poly_ends move #2,intin ; Set fill style to dots bsr vsf_interior move #16,d4 ; Loop counter move.l #ptsin,a4 ; Keep address of ptsin array in a4 move #2,pt_num ; Just two points grid1: move #50,(a4) ; Draw the editing grids move d4,d0 mulu y_div,d0 add.w y_off,d0 move d0,2(a4) move #210,4(a4) move d4,d0 mulu y_div,d0 add.w y_off,d0 move d0,6(a4) bsr polyline move #250,(a4) move d4,d0 mulu y_div,d0 add.w y_off,d0 move d0,2(a4) move #410,4(a4) move d4,d0 mulu y_div,d0 add.w y_off,d0 move d0,6(a4) bsr polyline move d4,d0 mulu #10,d0 add.w #50,d0 move d0,(a4) move y_off,2(a4) move d4,d0 mulu #10,d0 add.w #50,d0 move d0,4(a4) move y_bot,6(a4) bsr polyline move d4,d0 mulu #10,d0 add.w #250,d0 move d0,(a4) move y_off,2(a4) move d4,d0 mulu #10,d0 add.w #250,d0 move d0,4(a4) move y_bot,6(a4) bsr polyline dbf d4,grid1 move #434,(a4) ; Draw the mouse-change rectangle move y_off,2(a4) move #516,4(a4) move y_off,6(a4) move #516,8(a4) move chang1,10(a4) move #434,12(a4) move chang1,14(a4) move #434,16(a4) move y_off,18(a4) move #5,pt_num bsr polyline move #1,intin bsr vsf_color move #8,intin bsr vsf_style move.l #contrl,a5 move #114,(a5) move #2,2(a5) clr.w 6(a5) move #434,ptsin ; Fill the top half of the mouse-change move y_off,ptsin+2 ; rectangle move #516,ptsin+4 move chang2,ptsin+6 bsr vdi bsr show_mouse ; Oh, there's that little mousey! clr.w m_flag ; Clear mouse-change flag bsr map_grid ; Go map the shape clr.w d_flag ; Clear the drawing flag the_big_loop: bsr sample_mouse ; Let's see what's happening move.b intout+1,butsav ; Save button status move.l ptsout,mousex ; and X and Y coordinates move.l #o_cfnd,aespb ; objc_find --- get the index number of the move.l #intin,a0 ; object under the mouse cursor move.l #$00000005,(a0)+ move.l mousex,(a0)+ move.l #editbx,addrin bsr aes move intout,d5 move.l #ob_inx,a0 sub.w d0,d0 ck_obs: cmp.w (a0)+,d5 ; Compare it with the active object list beq.s gotobj ; Got one! addq.w #1,d0 ; Increment counter cmp.w #oi_len,d0 ; Done? bne ck_obs ; No, do the rest bra ckchng ; If we get here, we're not over an active object gotobj: move d0,numrtn ; Save index into routines move d5,o_indx ; Save object index move.l #o_coff,aespb ; Get coordinates of object we're over move d5,intin move.l #editbx,addrin bsr aes move.l intout+2,x_obj1 ; Save X and Y coordinates move intout+2,d0 move intout+4,d1 moveq #0,d4 move o_indx,d4 mulu #24,d4 add.l #editbx,d4 move.l d4,a0 ; a0 -> address of object in tree move.l d4,o_asav add.w 20(a0),d0 ; Compute diagonal opposite point of the box add.w 22(a0),d1 ; by adding the width and height to the move d0,x_obj2 ; X and Y move d1,y_obj2 move.l 20(a0),w_obj ; Save width and height move #0,butflg ; Clear button flag ob_loop: bsr sample_mouse ; Where am I? (said the amnesia victim) move ptsout,d0 ; Get current X coordinate cmp.w x_obj1,d0 ; Check to see if we're still over the blt ortn_exit ; same object; if not, exit cmp.w x_obj2,d0 bgt ortn_exit move ptsout+2,d0 cmp.w y_obj1,d0 blt ortn_exit cmp.w y_obj2,d0 bgt ortn_exit btst #0,intout+1 ; Pressing the left button? bne.s ol1_2 ; Yes, go ahead btst #1,intout+1 ; Right button? beq ob_loop ; No, go back ol1_2: move #1,butflg ; Yes, set the button flag move.w o_indx,d0 cmp.w #cdowbt,d0 beq.s oloop2 cmp.w #cupbt,d0 beq.s oloop2 cmp.w #colttl,d0 beq.s oloop2 cmp.w #frmttl,d0 beq.s oloop2 cmp.w #frdown,d0 beq.s oloop2 cmp.w #frup,d0 beq.s oloop2 cmp.w #anonof,d0 beq.s oloop2 move.l o_asav,a0 ; Address of object in tree or.w #SELECTED,10(a0) ; Turn it on, dead man bsr obdraw ; And draw it oloop2: bsr sample_mouse ; Where am I now? move.w o_indx,d0 cmp.w #frdown,d0 beq.s ol2_2 cmp.w #frup,d0 beq.s ol2_2 btst #0,intout+1 ; Still pressing the button? bne oloop2 ; Yes, loop btst #1,intout+1 bne oloop2 ol2_2: move ptsout,d0 ; OK, we let go of the button. Now let's cmp.w x_obj1,d0 ; check to see whether we're still over blt.s go_oex ; the same object; if not, exit cmp.w x_obj2,d0 bgt.s go_oex move ptsout+2,d0 cmp.w y_obj1,d0 blt.s go_oex cmp.w y_obj2,d0 ble.s oloop3 go_oex: move #-1,numrtn bra ortn_exit oloop3: moveq #0,d0 move numrtn,d0 ; Get index into address table lsl.w #2,d0 ; Multiply by 4 (to adjust for longwords) add.l #rtn_table,d0 ; Add start of table move.l d0,a5 ; Move it to a place where it can do some good move.l (a5),a5 ; Get routine address into a5 jmp (a5) ; And jump to it! * Object-related routines save: clr.w adflag bsr repl_button move.l #dat_or_ani,a5 ; Show alert box clr d5 bsr alert bsr exch_button cmp.w #1,intout ; Animation file? bne.s sv1 move #1,adflag ; Set flag bsr fsl_asave bra.s sv2 sv1: bsr fsl_dsave ; Set fsel parameters sv2: bsr repl_button ; Restore the button vector bsr fsel ; Call the dreaded File Selector bsr exch_button ; Point button vector to an RTS again move.l filadr,a0 tst.b (a0) ; Got a filename? beq ortn_exit cmp.w #1,intout+2 ; OK button? bne ortn_exit bsr set_path ; Set pathname tst adflag beq.s sv3 move.l #aniext+3,a1 bra.s sv4 sv3: move.l #datext+3,a1 sv4: bsr chk_extension ; Check for extension bsr sav_exist ; Does the file already exist? bne.s create ; No, continue bsr set_exist ; Copy the name into the alert box sho_al: bsr repl_button ; Replace the system button routine vector move.l #exist,a5 ; Show alert box move #1,d5 bsr alert bsr exch_button ; Turn off the button routine again cmp.w #1,intout ; Yes button? bne sav_x ; No, exit move.l filadr,a0 bsr delete_file create: clr.w -(sp) ; Create the data file move.l filadr,-(sp) move #$3C,-(sp) trap #1 addq #8,sp tst.w d0 bmi sav_x move d0,fhandl tst adflag beq.s sv5 move.l #mouse_array,-(sp) move.l #74*32,d5 bra.s sv6 sv5: move.l #mouse_form,-(sp) ; Write the mouse data to the file move.l #74,d5 sv6: move.l d5,-(sp) move fhandl,-(sp) move #$40,-(sp) trap #1 add #12,sp cmp.l d5,d0 beq.s sv7 full: bsr repl_button move.l #dskful,a5 move #1,d5 bsr alert bsr exch_button move.l filadr,a0 bsr delete_file bra.s sv8 sv7: tst adflag ; Data or animation? beq.s sv8 ; Data, skip move.l #nframs,-(sp) ; Save number of frames and delay value move.l #2,-(sp) move fhandl,-(sp) move #$40,-(sp) trap #1 add #12,sp cmp.l #2,d0 bne full move.l #delval,-(sp) move.l #2,-(sp) move fhandl,-(sp) move #$40,-(sp) trap #1 add #12,sp cmp.l #2,d0 bne full sv8: bsr clos_file ; Close it nice and tight sav_x: bra ortn_exit load: clr.w adflag bsr repl_button move.l #dat_or_ani,a5 ; Show alert box clr d5 bsr alert bsr exch_button cmp.w #1,intout ; Animation file? bne.s lo1 move #1,adflag bsr fsl_aload bra.s lo2 lo1: bsr fsl_dload ; Same old fsel stuff as everywhere else lo2: bsr repl_button bsr fsel bsr exch_button move.l filadr,a0 tst.b (a0) ; Filename? beq ortn_exit cmp.w #1,intout+2 ; OK button? bne ortn_exit bsr set_path move.l filadr,a5 bsr open_file bmi lod_x2 move d0,fhandl tst adflag beq.s lo3 bsr chk_anfile tst.w a_good beq.s lo2_2 lo2_1: bsr repl_button move.l #notani,a5 move #1,d5 bsr alert bsr exch_button bra.s lod_x lo2_2: moveq #0,d0 bsr.s lseek move.l #mouse_array,a5 move.l #74*32,d5 bsr read_file bmi.s lod_x move.l #nframs,a5 move.l #2,d5 bsr read_file move.l #delval,a5 bsr read_file bsr clos_file clr.w franum move.b #'0',frvlms move.b #'1',frvlms+1 bsr arr_2_frm bsr init_nfrm bra.s lo4 lo3: move.l #mouse_form,a5 ; Read in the mouse data move.l #74,d5 bsr read_file bmi.s lod_x lo4: bsr copy_mouse ; Copy to undo buffer bsr init_col ; Initialize color indicators lod_x: bsr clos_file lod_x2: bra ortn_exit lseek: move #0,-(sp) move.w fhandl,-(sp) move.l d0,-(sp) move.w #$42,-(sp) trap #1 add #10,sp tst.l d0 rts clr_mask: bsr copy_mouse ; Save in undo buffer move.l #m_mask,a5 ; Address of mask bra.s clr2 clr_data: bsr copy_mouse ; Save mouse move.l #m_image,a5 ; Address of data clr2: move #7,d5 ; 8 longwords (16 words) clrd1: clr.l (a5)+ ; Clear that mouse! dbf d5,clrd1 bsr map_grid ; Draw it on the grid bra ortn_exit inv_data: bsr copy_mouse move.l #m_image,a5 bra.s inv2 inv_mask: bsr copy_mouse move.l #m_mask,a5 inv2: move #15,d5 ; 16 words invm1: eor.w #$FFFF,(a5)+ ; Invert every bit in each word dbf d5,invm1 bsr map_grid ; Draw it on the grid bra ortn_exit mir_data: bsr copy_mouse move.l #m_image,a5 bra.s mir2 mir_mask: bsr copy_mouse move.l #m_mask,a5 mir2: move #15,d5 ; 16 words of mouse data mir3: move #15,d4 ; 16 bits in each word clr.w d1 ; Clear work register move (a5),d0 ; Get the word mirm1: lsl d0 ; Shift a bit left roxr d1 ; Roll it right into the work register dbf d4,mirm1 ; Do all 16 bits move d1,(a5)+ ; Put it back dbf d5,mir3 ; Do all 16 words bsr map_grid ; Draw the grid bra ortn_exit rotate: bsr copy_mouse ; Save in undo buffer move.l #m_rotate,a5 ; Address of rotation buffer move #15,d5 r_clr: clr.l (a5)+ ; First, clear out the rotation buffer dbf d5,r_clr move.l #m_mask+30,a4 ; Start at end of data move.l #m_rotate,a5 r_lp1: move #15,d4 ; 16 words wordlp: move (a4),d2 ; Get a word move #15,d5 ; 16 bits per word bitloo: move d5,d3 ; Get bit number lsl d3 ; Multiply by 2 (for word offset) move 0(a5,d3),d1 ; Get word from rotation buffer lsr d2 ; Shift a bit right roxl d1 ; Roll it left into d1 move d1,0(a5,d3) ; Put this new word back dbf d5,bitloo ; Do all 16 bits subq.w #2,a4 ; Point to next data word dbf d4,wordlp ; Do all 16 words cmp.l #m_mask-2,a4 ; We're rotating both mask and data together bne.s r_cpy1 ; All done, skip ahead move.l #m_mask+62,a4 ; Set address of mask move.l #m_rotate+32,a5 bra r_lp1 ; Go finish the job r_cpy1: move.l #m_mask,a4 move.l #m_rotate,a5 move #15,d5 r_cpy: move.l (a5)+,(a4)+ ; Move the mouse data from the rotation buffer dbf d5,r_cpy bsr map_grid ; Draw the grid bra ortn_exit up: bsr copy_mouse ; Scroll mouse image up move.l #m_image,a5 ; First, the data move (a5),temp ; Save top word move #14,d5 up1: move 2(a5),(a5)+ ; Move 'em up dbf d5,up1 move temp,(a5) ; Put the top line in at the bottom move.l #m_mask,a5 ; Now do the mask move (a5),temp move #14,d5 up2: move 2(a5),(a5)+ ; Get on up! dbf d5,up2 move temp,(a5) bsr map_grid ; Draw the grid bra ortn_exit left: bsr copy_mouse ; Scroll mouse form left move.l #m_mask,a5 move #31,d5 left1: lsl (a5)+ ; Shift a bit left bcc.s left2 ; This bit wasn't set, skip ahead or.w #1,-2(a5) ; Set rightmost bit left2: dbf d5,left1 bsr map_grid bra ortn_exit down: bsr copy_mouse ; Scroll mouse shape down move.l #m_image+30,a5 ; First, the data move (a5),temp ; Save bottom word move #14,d5 down1: move -2(a5),(a5) ; Get down! subq #2,a5 dbf d5,down1 move temp,(a5) ; Put bottom word at the top move.l #m_mask+30,a5 ; Now do the same for the mask move (a5),temp move #14,d5 down2: move -2(a5),(a5) subq #2,a5 dbf d5,down2 move temp,(a5) bsr map_grid bra ortn_exit right: bsr copy_mouse ; Scroll mouse image right move.l #m_mask,a5 move #31,d5 right1: lsr (a5)+ ; Shift a bit bcc.s right2 ; It wasn't set, skip or.w #$8000,-2(a5) ; Set leftmost bit in this word right2: dbf d5,right1 bsr map_grid bra ortn_exit install: move.l #m_mask,a5 ; Don't let 'em install a blank mouse! move #15,d5 ck_i1: tst.l (a5)+ bne.s inst1 dbf d5,ck_i1 bra.s instx inst1: bsr cpy_inst ; Copy mouse to 'Installed' area move.l #g_mous,aespb ; AES graf_mouse call to set the new image move #255,intin move.l #m_form2,addrin bsr aes move #1,insflg ; Set installed flag move #1,vbi_on ; Turn on the vertical blank interrupt instx: bra ortn_exit remove: clr.w insflg ; Clear installed flag clr.w vbi_on ; Remove vertical blank routine move.l #g_mous,aespb ; Set the arrow cursor clr.w intin bsr aes bra ortn_exit undo: bsr res_mouse ; Restore mouse data from the undo buffer bsr map_grid ; Draw it on the grid bra ortn_exit colr_down: tst.w colflg ; Which color? Data or mask? bne.s cd_1 ; Must be the mask color, skip ahead tst.w bg_col ; Is it zero already? beq ortn_exit ; Yes, bail subq.w #1,bg_col ; Decrement it move.l #dvalms,a5 ; Address of color value text bra.s cd_2 ; Skip cd_1: tst.w fg_col ; Zero already? beq ortn_exit ; Yes, forget it subq.w #1,fg_col ; Decrement it move.l #mvalms,a5 ; Address of color value text cd_2: move.l #1,d5 ; Two digits add.l d5,a5 ; Set pointer 2nd digit (ones place) dnloop: cmp.b #'0',(a5) ; Is it ASCII zero? bne.s dnl2 ; No, skip ahead move.b #'9',(a5) ; Put a '9' here bra.s dnl3 dnl2: subq.b #1,(a5) ; Decrement the ASCII number bra.s valdrw ; Go draw it dnl3: subq #1,a5 ; Move pointer to tens digit dbf d5,dnloop bra.s valdrw colr_up: tst.w colflg ; This code does the same thing as the section bne.s cu_1 ; above, but for color-up adjustments cmp.w #15,bg_col beq ortn_exit addq.w #1,bg_col move.l #dvalms,a5 bra.s cu_2 cu_1: cmp.w #15,fg_col beq ortn_exit addq.w #1,fg_col move.l #mvalms,a5 cu_2: move.l #1,d5 add.l d5,a5 uploop: cmp.b #'9',(a5) bne.s upl2 move.b #'0',(a5) bra.s upl3 upl2: addq.b #1,(a5) bra.s valdrw upl3: subq #1,a5 dbf d5,uploop valdrw: move #colval,intin ; Object index of the color value text move.l #editbx,addrin ; Address of object tree bsr objoff ; Go draw this text object bra ortn_exit sw_fgbg: eor.w #1,colflg ; Toggle color flag tst.w colflg ; Which color, mask or data? beq.s sw_1 ; 0=data, 1=mask move.l #mcolms,tinf3 ; Set pointers to text strings move.l #mvalms,valadr bra.s sw_2 sw_1: move.l #dcolms,tinf3 move.l #dvalms,valadr sw_2: move #colttl,intin ; And go draw the object move.l #editbx,addrin bsr objoff bra valdrw sw_anttl: addq.w #1,antflg ; Increment flag move.w antflg,d0 cmp.w #3,d0 ; Greater than 2? bne.s swa_1 sub.w d0,d0 ; Back to zero move.w d0,antflg swa_1: tst d0 ; 0=Frame, 1=# of Frames, 2=Speed bne.s swa_2 move.l #framms,tinf4 move.l #frvlms,anival bra.s swa_4 swa_2: cmp.w #1,d0 bne.s swa_3 move.l #frmnms,tinf4 move.l #fnvlms,anival bra.s swa_4 swa_3: move.l #speems,tinf4 move.l #spvlms,anival swa_4: move.w #frmttl,intin move.l #editbx,addrin bsr objoff move.w #frmval,intin move.l #editbx,addrin bsr objoff bra ortn_exit ani_down: tst antflg ; Are we changing the frame? bne.s anid_2 ; No, skip ahead bsr chk_shift bsr frm_2_arr ; Copy current frame to sequence array tst franum ; Is it zero already? bne.s d_fnum move.b #'3',frvlms move.b #'2',frvlms+1 move.w #31,franum bra fvaldr d_fnum: subq.w #1,franum move.l #frvlms,a5 bra.s ad_1 anid_2: cmp.w #1,antflg ; Changing # of Frames? bne.s anid_3 cmp.w #1,nframs bne.s d_nfrm move.b #'3',fnvlms move.b #'2',fnvlms+1 move.w #32,nframs bra.s fvaldr d_nfrm: subq.w #1,nframs move.l #fnvlms,a5 bra.s ad_1 anid_3: tst delval ; Must be changing the delay value bne.s d_delv move.b #'9',spvlms move.b #'9',spvlms+1 move.w #99,delval bra.s fvaldr d_delv: subq.w #1,delval move.l #spvlms,a5 ad_1: move.l #1,d5 add.l d5,a5 adloop: cmp.b #'0',(a5) ; Is it ASCII zero? bne.s adl2 move.b #'9',(a5) bra.s adl3 adl2: subq.b #1,(a5) ; Decrement the ASCII number bra.s fvaldr adl3: subq #1,a5 ; Move pointer to tens digit dbf d5,adloop fvaldr: move.w #frmval,intin move.l #editbx,addrin bsr objoff tst antflg ; Changing current frame? beq.s fvald1 ; Yes, skip move #7,d5 waitnd: move.w #37,-(sp) ; Wait 6 vertical blanks trap #14 ; (in case button is being held) addq #2,sp dbf d5,waitnd bra ortn_exit fvald1: tst shfflg ; Were we holding shift (copying)? beq.s fvald2 ; No, skip bsr frm_2_arr ; Copy mouse form to new array position fvald2: bsr arr_2_frm ; Copy it back (dumb) bsr init_col move.w #colval,intin move.l #editbx,addrin bsr objoff bsr map_grid fvex: bra ortn_exit ani_up: tst antflg bne.s aniu_2 bsr chk_shift bsr frm_2_arr cmp.w #31,franum bne.s i_fnum move.b #'0',frvlms move.b #'1',frvlms+1 clr.w franum bra fvaldr i_fnum: addq.w #1,franum move.l #frvlms,a5 bra.s au_1 aniu_2: cmp.w #1,antflg bne.s aniu_3 cmp.w #32,nframs bne.s i_nfrm move.b #'0',fnvlms move.b #'1',fnvlms+1 move.w #1,nframs bra fvaldr i_nfrm: addq.w #1,nframs move.l #fnvlms,a5 bra.s au_1 aniu_3: cmp.w #99,delval bne.s i_delv move.b #'0',spvlms move.b #'0',spvlms+1 clr.w delval bra fvaldr i_delv: addq.w #1,delval move.l #spvlms,a5 au_1: move.l #1,d5 add.l d5,a5 auloop: cmp.b #'9',(a5) bne.s aul2 move.b #'0',(a5) bra.s aul3 aul2: addq.b #1,(a5) bra fvaldr aul3: subq #1,a5 dbf d5,auloop bra fvaldr * Subroutines for ani_up and ani_down chk_shift: clr.w shfflg move.w #-1,-(sp) ; Get Alt/Shift/Control status move.w #11,-(sp) trap #13 addq #4,sp btst #0,d0 ; Right shift key? bne.s shift1 btst #1,d0 ; Left shift key? beq.s shift2 shift1: move #1,shfflg shift2: rts frm_2_arr: bsr.s set_faadr cpyfr1: move.l (a1)+,(a0)+ dbf d0,cpyfr1 move.w (a1),(a0) ; Move last word to make it 74 rts arr_2_frm: bsr.s set_faadr cpyar1: move.l (a0)+,(a1)+ dbf d0,cpyar1 move.w (a0),(a1) bra copy_mouse set_faadr: move.l #mouse_array,a0 ; Address of animation array moveq #0,d0 ; Clear work register move.w franum,d0 ; Get current frame number mulu #74,d0 ; Multiply by 74 (74 bytes per mouse) add.l d0,a0 ; Add index to pointer move.w #17,d0 move.l #mouse_form,a1 rts clear_array: move.l #mouse_array,a0 move #591,d0 cla_1: clr.l (a0)+ dbf d0,cla_1 rts ani_onoff: tst onoff ; Is animation on or off? bne.s anio_2 ; It's on, skip ahead bsr frm_2_arr ; Copy current frame to animation buffer move.l #anonms,tinf5 ; Set "Animation ON" message move.w delval,vbtimr ; Set the vertical blank timer clr.w moucnt ; Clear the frame counter move #1,onoff ; Now set the animation flag bra.s anio_3 anio_2: move.l #anofms,tinf5 ; Set "Animation OFF" message clr.w moucnt ; Clear the frame counter clr.w onoff ; Clear the animation flag tst insflg ; Are we installed? beq.s anio_3 ; No, skip ahead move.l #g_mous,aespb ; Set mouse form back to installed shape move #255,intin move.l #m_form2,addrin bsr aes anio_3: move.w #anonof,intin ; Re-draw the ON/OFF message box move.l #editbx,addrin bsr objoff * bra.s ortn_exit * All object routines exit through here ortn_exit: tst.w butflg beq the_big_loop move.w o_indx,d0 cmp.w #cdowbt,d0 ; If it was 'down', 'up', or color selection, beq the_big_loop ; loop back right away cmp.w #cupbt,d0 beq the_big_loop cmp.w #colttl,d0 beq the_big_loop cmp.w #frmttl,d0 beq the_big_loop cmp.w #frdown,d0 beq the_big_loop cmp.w #frup,d0 beq the_big_loop cmp.w #anonof,d0 beq the_big_loop move.l o_asav,a0 ; Get address of object that was selected and.w #$FFFE,10(a0) ; De-select it tst.w numrtn ; If it was 'Save' or 'Load', go back to beq box ; the dialog box drawing code cmp.w #1,numrtn beq box bsr obdraw ; Go re-draw the object bra the_big_loop ; Back to the top of the loop ckchng: cmp.w #434,mousex ; Check to see if we're inside the blt.s ckbutt ; mouse-change rectangle cmp.w #515,mousex bgt.s ckbutt move mousey,d0 cmp.w y_off,d0 blt.s ckbutt cmp.w chang1,d0 bgt.s ckbutt tst.w m_flag ; Were we already in here? bne the_big_loop ; Yes! Go back move.l #m_mask,a0 move #15,d0 ck_img: tst.l (a0)+ ; If the mouse data is all zeros, don't bne.s setmou ; change it dbf d0,ck_img bra the_big_loop setmou: clr.w vbi_on ; Turn off the interrupt while we're here move #1,m_flag ; Set the flag move.l #g_mous,aespb ; Change the mouse form move #255,intin move.l #mouse_form,addrin bsr aes bra the_big_loop ckbutt: tst.w m_flag ; Just leaving the mouse-change rectangle? beq.s ckb2 ; No, skip move.l #g_mous,aespb move #255,intin tst.w insflg ; Mouse form installed? bne.s ckbu1 ; Yes, skip clr.w intin bra.s arr2 ckbu1: move #1,vbi_on tst onoff beq.s ckbu2 bsr which_mouse move.l a3,addrin bra.s arr2 ckbu2: move.l #m_form2,addrin arr2: bsr aes clr.w m_flag ckb2: btst #0,butsav ; Left button pressed? bne.s ckpos ; Yes, go check position btst #1,butsav ; Right button? bne.s ckpos tst.w d_flag ; Were we just drawing? beq the_big_loop ; No, forget it clr.w d_flag ; Clear the flag bra the_big_loop ckpos: tst.w d_flag ; OK, we're drawing - is the draw flag set? bne.s ckp1 ; Yes, so skip ahead bsr copy_mouse ; Copy mouse shape to undo buffer move #1,d_flag ; Set draw flag ckp1: move mousey,d0 ; Get Y position cmp.w y_off,d0 ; Is mouse Y >= 100/50? blt the_big_loop cmp.w y_bot,d0 ; Is it < 260/130? bge the_big_loop bsr inquire ; Go see which grid is being drawn on bra the_big_loop ; And back to the top exit: move d_mode,intin ; Reset all the polyline and fill bsr write_mode ; attributes move l_colr,intin bsr poly_color move l_type,intin bsr poly_type move l_wid,ptsin clr.w ptsin+2 bsr poly_width move l_strt,intin move l_end,intin+2 bsr poly_ends move f_type,intin bsr vsf_interior move f_colr,intin bsr vsf_color move f_patt,intin bsr vsf_style move #3,intin ; Release dialog box memory bsr dial move.l #w_clos,aespb ; Close window so the application gets a move whandl,intin ; redraw message bsr aes move.l #w_del,aespb ; Now delete the window bsr aes move.l #w_updt,aespb ; Allow messages again clr.w intin bsr aes ex2: bsr repl_button ; Replace the system button vector move #101,(a5) ; v_clsvwk (Close Virtual Workstation) clr.w 2(a5) clr.w 6(a5) bsr vdi bsr res_dpath ; Reset drive and pathname and.w #$FFFE,extstt ; Reset EXIT button clr diflag bra evntms ; Go back and wait for another message! * Subroutines inquire: move #0,hotflg ; Clear hotspot flag cmp.w #50,mousex ; Are we inside the data grid? blt inq_return ; No, exit cmp.w #209,mousex bge inq_2 ; Go check to see if we're over the mask grid moveq #0,d0 ; Clear work register move mousex,d0 ; Get mouse X position sub.w #50,d0 ; The data grid starts 50 pixels from the left divu #10,d0 ; Divide by 10 to get cell X bvc.s storx ; No overflow, skip sub.w d0,d0 ; Set it to zero storx: move d0,x ; Set X array index moveq #0,d0 ; Clear register move mousey,d0 ; Get mouse Y position sub.w y_off,d0 ; Subtract res-dependent offset value divu y_div,d0 ; Divide by res-dependent Y divisor bvc.s story ; No overflow, skip sub.w d0,d0 ; Clear it story: move d0,y ; Set Y array index btst #0,butsav ; Was the left button pressed? beq.s eras_1 ; No, go to the erase routine btst #1,butsav ; Right button? beq.s inq1_1 ; No, skip do_hot: bsr sample_mouse ; Read mouse status btst #0,intout+1 ; Still pressing the left button? bne do_hot ; Yes, loop btst #1,intout+1 ; Still pressing right? bne do_hot ; Yes, loop move.l x,temp ; Save current x index move.l x_hot,x ; Set x index to hotspot position move #1,hotflg ; Set hotspot flag dc.w $A00A ; Hide the mouse bsr draw_pixel ; Go draw the hotspot bsr show_mouse ; Show the mouse move.l temp,x_hot ; Replace x position bsr set_hotspot rts inq1_1: move.w #-1,-(sp) move.w #11,-(sp) trap #13 addq #4,sp btst #2,d0 ; Control key pressed? bne do_hot ; Yes, do the hot spot bsr get_iptr ; Get pointer to element of data array bne.s inq_return ; Return if not zero bset d0,d1 ; Set this bit move d1,(a0) ; And store it into the mouse shape area bra.s godraw eras_1: btst #1,butsav ; Right button? beq.s godraw ; No, skip bsr get_iptr ; Get pointer to data element beq.s inq_return ; Zero, exit bclr d0,d1 ; Clear this bit move d1,(a0) ; And store the word godraw: dc.w $A00A ; Hide the mouse bsr draw_pixel ; Go draw the pixel on the data grid bsr show_mouse ; Show the mouse again inq_return: rts inq_2: cmp.w #250,mousex ; Are we inside the mask grid? blt inq_return cmp.w #409,mousex bge inq_return moveq #0,d0 ; Clear the work register move mousex,d0 ; Get X position sub.w #250,d0 ; Mask grid starts 250 pixels from the left divu #10,d0 ; Each cell is 10 pixels wide bvc.s storx2 ; No overflow, skip sub.w d0,d0 ; Clear it storx2: move d0,x ; Save X index to array moveq #0,d0 ; Clear register move mousey,d0 ; Get Y position sub.w y_off,d0 ; Subtract res-dependent offset value divu y_div,d0 ; Divide by res-dependent Y divisor bvc.s story2 ; No overflow, skip sub.w d0,d0 ; Clear y index story2: move d0,y ; Save Y array index btst #0,butsav ; Left button? beq.s eras_2 ; No, go erase bsr get_mptr ; Get pointer to mask bit bne inq_return ; Already set, exit bset d0,d1 ; Set this bit in the mouse mask move d1,(a0) ; And save it bra godraw eras_2: btst #1,butsav ; Right button? beq godraw ; No, bail bsr get_mptr ; Find the bit and clear it beq inq_return ; (if it isn't already zero) bclr d0,d1 move d1,(a0) bra godraw map_grid: dc.w $A00A ; Hide mouse move #1,hotflg ; Set hotspot flag move #15,d5 ; Draw both grids map1: move #15,d4 map2: move d5,x move d4,y bsr.s draw_pixel dbf d4,map2 dbf d5,map1 bsr set_hotspot ; Draw the hotspot bsr show_mouse ; Show the mouse again rts copy_mouse: move.l x_hot,hotsav ; Copy the mouse shape to the undo buffer move.l #m_mask,a0 move.l #mouse_save,a1 move #15,d0 cpym2: move.l (a0)+,(a1)+ dbf d0,cpym2 rts res_mouse: move.l hotsav,x_hot ; Restore the mouse shape from the undo buffer move.l #m_mask,a0 move.l #mouse_save,a1 move #15,d0 resm2: move.l (a1)+,(a0)+ dbf d0,resm2 rts draw_pixel: bsr get_iptr ; Is this data bit set? bne.s solid ; Yes, skip ahead bsr get_mptr ; Is this mask bit set? bne.s blank2 ; Yes, skip ahead move.l #empty,filptr bsr.s d_int1 ; Draw the data cell bsr d_int2 ; Draw the mask cell bra.s draw_exit blank2: move.l #dots,filptr bsr.s d_int1 ; Draw the data cell bsr d_int2 ; Draw the mask cell bra.s draw_exit solid: bsr get_mptr ; Is this mask bit set? bne.s solid2 ; Yes, skip move.l #black,filptr bsr.s d_int1 ; Draw the data cell bsr d_int2 ; Draw the mask cell bra.s draw_exit solid2: move.l #black,filptr bsr.s d_int1 ; Draw the data cell move.l #dots,filptr bsr d_int2 ; Draw the mask cell draw_exit: tst.w hotflg ; Time to draw the hotspot? bne.s d_ex2 ; No, skip bsr set_hotspot ; Draw that hotspot d_ex2: rts d_int1: move.l screen,a0 ; Get address of screen memory moveq #0,d0 move y,d0 mulu y_div,d0 add.w y_off,d0 addq.w #1,d0 mulu y_scr,d0 add.l d0,a0 ; Set pointer to proper scan line moveq #0,d0 move.w x,d0 mulu #10,d0 add.w #51,d0 di1_0: divu #16,d0 cmp.w #2,res ; High res? bne.s col_di lsl.w d0 move.l d0,d1 swap d1 ; Get remainder to lower word ext.l d1 move.l filptr,a1 move #8,d3 ; Use d3 as counter (9 scan lines) di1_1: moveq #0,d2 ; Clear d2 move.w (a1),d2 ; Get first line of fill pattern swap d2 move.l #$007FFFFF,d7 ; Mask to d7 lsr.l d1,d2 or #16,ccr roxr.l d1,d7 and.l d7,0(a0,d0) or.l d2,0(a0,d0) add.l #80,a0 subq.w #1,d3 bmi.s di1ex moveq #0,d2 move.w 2(a1),d2 ; Second line of fill pattern swap d2 move.l #$007FFFFF,d7 ; Mask to d7 lsr.l d1,d2 or #16,ccr roxr.l d1,d7 and.l d7,0(a0,d0) or.l d2,0(a0,d0) add.l #80,a0 dbf d3,di1_1 di1ex: rts col_di: lsl.w #2,d0 move.l d0,d1 swap d1 ext.l d1 move.l filptr,a1 move #3,d3 col1_1: moveq #0,d2 move.w 4(a1),d2 swap d2 move.l #$007FFFFF,d7 lsr.l d1,d2 or #16,ccr roxr.l d1,d7 and.w d7,4(a0,d0) and.w d7,6(a0,d0) swap d7 and.w d7,0(a0,d0) and.w d7,2(a0,d0) or.w d2,4(a0,d0) swap d2 or.w d2,0(a0,d0) moveq #0,d2 move.w 6(a1),d2 swap d2 lsr.l d1,d2 or.w d2,6(a0,d0) swap d2 or.w d2,2(a0,d0) add.l #160,a0 dbf d3,col1_1 rts d_int2: move.l screen,a0 ; Get address of screen memory moveq #0,d0 move y,d0 mulu y_div,d0 add.w y_off,d0 addq.w #1,d0 mulu y_scr,d0 add.l d0,a0 ; Set pointer to proper scan line moveq #0,d0 move.w x,d0 mulu #10,d0 add.w #251,d0 ; Now we're drawing on the Mask grid bra di1_0 set_hotspot: dc.w $A00A ; Hide mouse move x_hot,x ; Get hotspot coordinates move y_hot,y move.l #hotpat,filptr bsr d_int1 ; Draw it bsr show_mouse ; Show the mouse rts get_iptr: moveq #0,d0 move y,d0 add.w d0,d0 add.l #m_image,d0 bra.s btest get_mptr: moveq #0,d0 move y,d0 add.w d0,d0 add.l #m_mask,d0 * bra.s btest btest: move.l d0,a0 move (a0),d1 move #15,d0 sub.w x,d0 btst d0,d1 rts init_col: move.b #'0',dvalms move.b #'0',mvalms move.b #'0',dvalms+1 move.b #'0',mvalms+1 move.l #mvalms,a5 moveq #0,d0 move fg_col,d0 bsr.s setdec move.l #dvalms,a5 moveq #0,d0 move bg_col,d0 bsr.s setdec rts init_nfrm: move.b #'0',fnvlms move.b #'0',fnvlms+1 move.b #'0',spvlms move.b #'0',spvlms+1 move.l #fnvlms,a5 moveq #0,d0 move nframs,d0 bsr.s setdec move.l #spvlms,a5 moveq #0,d0 move delval,d0 bsr.s setdec rts setdec: addq.l #1,a5 setd1: subq.w #1,d0 bmi.s setd2 addq.b #1,(a5) cmp.b #':',(a5) bne setd1 move.b #'0',(a5) addq.b #1,-1(a5) bra setd1 setd2: rts show_mouse: dc.w $A000 move.l 8(a0),a0 move #0,(a0) dc.w $A009 rts open_file: clr.w -(sp) move.l a5,-(sp) move #$3D,-(sp) trap #1 addq #8,sp tst.w d0 rts read_file: move.l a5,-(sp) move.l d5,-(sp) move fhandl,-(sp) move #$3F,-(sp) trap #1 add #12,sp tst.l d0 rts clos_file: move fhandl,-(sp) move #$3E,-(sp) trap #1 addq #4,sp rts delete_file: move.l a0,-(sp) move.w #$41,-(sp) trap #1 addq #6,sp rts chk_anfile: clr.w a_good moveq #0,d7 move #31,d6 chkan1: move.l d7,d0 bsr lseek bmi.s chkan2 move.l #nfrtst,a5 move.l #4,d5 bsr read_file bmi.s chkan2 cmp.w #15,(a5) bhi.s chkan2 cmp.w #15,2(a5) bhi.s chkan2 addq.l #6,d7 move.l d7,d0 bsr lseek bmi.s chkan2 bsr read_file bmi.s chkan2 cmp.w #15,(a5) bhi.s chkan2 cmp.w #15,2(a5) bhi.s chkan2 add.l #68,d7 dbf d6,chkan1 move.l #2368,d0 bsr lseek bmi.s chkan2 move.l #nfrtst,a5 move.l #4,d5 bsr read_file bmi.s chkan2 cmp.w #32,(a5) bhi.s chkan2 cmp.w #99,2(a5) bhi.s chkan2 rts chkan2: move.w #-1,a_good rts write_mode: move.l #contrl,a5 move #32,(a5) ; Set writing mode move #0,2(a5) move #1,6(a5) bra vdi poly_color: move.l #contrl,a5 move #17,(a5) ; vsl_color (Set Polyline Color) move #0,2(a5) move #1,6(a5) bra vdi poly_type: move.l #contrl,a5 move #15,(a5) ; vsl_type (Set Polyline Type) move #0,2(a5) move #1,6(a5) bra vdi poly_width: move.l #contrl,a5 move #16,(a5) ; vsl_width (Set Polyline Width) move #1,2(a5) move #0,6(a5) bra vdi poly_ends: move.l #contrl,a5 move #108,(a5) ; vsl_ends (Set Polyline End Styles) move #0,2(a5) move #2,6(a5) bra vdi polyline: move.l #contrl,a5 move #6,(a5) move pt_num,2(a5) move #0,6(a5) bra vdi vsf_color: move.l #contrl,a5 move #25,(a5) move #0,2(a5) move #1,6(a5) bra vdi vsf_interior: move.l #contrl,a5 move #23,(a5) move #0,2(a5) move #1,6(a5) bra vdi vsf_style: move.l #contrl,a5 move #24,(a5) move #0,2(a5) move #1,6(a5) bra vdi exch_button: move.l #contrl,a5 ; Point the mouse button routine move #125,(a5) ; to an RTS to prevent the AES from clr.w 2(a5) ; buffering button presses clr.w 6(a5) move.l #butrts,14(a5) bsr vdi move.l 18(a5),badsav rts repl_button: move.l #contrl,a5 move #125,(a5) ; Reset button vector so we can use the clr.w 2(a5) ; AES again clr.w 6(a5) move.l badsav,14(a5) bra vdi sample_mouse: move.l #contrl,a5 move #124,(a5) move #0,2(a5) move #0,6(a5) bra vdi open_window: move.l #w_get,aespb move.l #intin,a5 clr.w (a5) move.w #4,2(a5) bsr aes move.l intout+2,wx move.l intout+6,ww move.l #intin,a5 move.l #w_crea,aespb ; Create a full-screen window clr.w (a5) move.l wx,2(a5) move.l ww,6(a5) bsr aes tst.w intout ; Error? (Probably too many windows open) bpl.s openwi ; No, continue move.w #-1,d0 rts openwi: move intout,whandl move.l #w_open,aespb ; Open the window! move whandl,(a5) ; a5 is still pointing to intin move.l wx,2(a5) move.l ww,6(a5) bsr aes moveq #0,d0 rts fsel: tst fsflag bne.s fsel1 move.l itmadr,a0 ; Change the "ITEM SELECTOR" text to something move.l txtadr,(a0) ; a bit more meaningful move itmlen,8(a0) or.w #1,-2(a0) fsel1: move.l #f_sel,aespb ; Let's call fsel_input with opcode 90 move.l diradr,addrin move.l filadr,addrin+4 bsr aes tst fsflag bne.s fsel2 move.l itmadr,a0 ; Restore the fsel text line move.l iasav,(a0) and.w #$FE,-2(a0) move ilensv,8(a0) fsel2: rts set_path: clr.w d0 ; Set current drive from output of move.l diradr,a0 ; fsel routine move.b (a0),d0 sub.b #65,d0 move d0,-(sp) move #$0E,-(sp) trap #1 addq #4,sp move.l diradr,a0 ; Also set pathname from fsel addq.l #2,a0 move.l #pathnm,a1 move.l #63,d5 pathlp: tst.b (a0) beq.s plx1 move.b (a0)+,(a1)+ dbf d5,pathlp plx1: move.l #63,d5 plp2: cmp.b #"\\",-(a1) beq.s plx2 dbf d5,plp2 plx2: clr.b 1(a1) pea pathnm move #$3B,-(sp) trap #1 addq #6,sp rts chk_extension: move.l filadr,a0 ; Check to see if the chosen filename has chke_1: tst.b (a0) ; an extension. If not, add the proper one. beq.s setext ; If so, leave it alone cmp.b #".",(a0)+ beq.s nosete bra chke_1 setext: move #4,d0 setx1: move.b (a1)+,(a0)+ dbf d0,setx1 nosete: rts res_dpath: move curdrv,-(sp) ; Reset current drive and pathname move #$0E,-(sp) trap #1 addq #4,sp move.l #curpth,-(sp) move #$3B,-(sp) trap #1 addq #6,sp rts * form_alert * Enter with a5= address of definition string * d5= number of default box alert: move.l a5,addrin ; Set address of string move d5,intin ; Set default box move.l #f_alrt,aespb ; Display alert box bra aes * Dialog box drawing routine drawbx: move.l #f_cntr,aespb ; First, let's call form_center bsr aes move.l #intout,a0 move.l 2(a0),cx move.l 6(a0),cw subq.w #2,cx subq.w #2,cy addq.w #6,cw addq.w #6,ch tst diflag bne.s draw_1 clr.w intin bsr.s dial draw_1: move.l #intin,a5 move.l #o_cdrw,aespb ; Objc_draw move #0,(a5) ; Root object gets drawn first move #5,2(a5) ; Up to 5 levels of subordinate objects move.l cx,4(a5) ; (dial subroutine sets a5->intin) move.l cw,8(a5) bra aes dial: move.l #f_dial,aespb ; Form_dial move.l #intin,a5 clr.l 2(a5) ; No growing/shrinking boxes, so just clr.l 6(a5) ; zero out the start coordinates move.l cx,10(a5) move.l cw,14(a5) bra aes obdraw: move.l #o_cdrw,aespb move.l #intin,a0 move o_indx,(a0) move #1,2(a0) move.l x_obj1,4(a0) move.l w_obj,8(a0) move.l #editbx,addrin bra.s aes formdo: move.l #f_do,aespb ; Call form_do to get user input clr.w intin ; No editable text field bra.s aes ; Do it! objoff: move.l #o_coff,aespb ; Calculate clipping rectangle and re-draw bsr.s aes ; an object. intin must be set to the index move.l #o_cdrw,aespb ; of the object to be drawn, addrin to the move.l #intin+2,a5 ; address of the parent object tree move #0,(a5)+ move intout+2,(a5) addq.w #1,(a5)+ move intout+4,(a5) addq.w #1,(a5)+ moveq #0,d0 move intin,d0 mulu #24,d0 add.l addrin,d0 move.l d0,a0 move 20(a0),(a5) subq.w #2,(a5)+ move 22(a0),(a5) subq.w #2,(a5)+ bra.s aes * VDI and AES subroutines vdi: move vhandl,12(a5) vdi1: move.l #vdipb,d1 move.l #$73,d0 trap #2 butrts: rts aes: move.l #aespb,d1 move.l #$C8,d0 trap #2 rts my_vblank: movem.l d0/a0-a3,-(sp) ; Save registers cmp.b #2,sshiftmod ; High res? beq.s vbl1 ; Yes, skip the res check tst lowflg ; Did we find the Set Preferences dialog? bne.s vbl1 move.l res_optr,a0 btst #0,1(a0) ; SELECTED? (Changing resolution?) beq.s vbl1 ; No, continue move.l res_okptr,a0 ; Now check the "OK" button btst #0,1(a0) ; SELECTED? (_really_ changing?) beq.s vbl1 ; Not yet! move.l line_a,a0 btst #0,but_stat(a0) ; Let go of the left button yet??? bne.s vbl1 ; The suspense is killing me! move.l sysvc1,$70 ; Remove the vertical blank interrupt clr insflg ; Clear installed flag move.l $502,a0 cmp.l #$ABADBABE,2(a0) bne fall_thru move.l 22(a0),$B4 ; The infamous kludge for ALT.ACC bra fall_thru ; And bail vbl1: tst vbi_on ; Are we interrupting? beq fall_thru ; Nope! move.l line_a,a0 tst.b ignore(a0) ; Ignore the mouse? bne.s fall_thru ; Do so ckarrw: move.l sprtad,a0 ; The address of the mouse sprite definition move.l a0,a2 move.l #arrow_data,a1 move #15,d0 ; 16 longwords vbl2: cmp.l (a0)+,(a1)+ ; Did somebody put an arrow in here??? bne.s vbl4 ; No, I guess not dbf d0,vbl2 tst onoff bne.s vbl2a move.l #m_form2,a3 bra.s vbl2b vbl2a: bsr which_mouse vbl2b: bsr.s stuff_it bsr force_it ; Force the OS to show the mouse vbl4: tst onoff ; Animation on? beq.s fall_thru ; Nope, bail subq.w #1,vbtimr ; Decrement animation timer bpl.s fall_thru ; Not time yet, bail move.w delval,vbtimr ; Reset timer move.w nframs,d0 ; Get number of frames in the loop subq.w #1,d0 cmp.w moucnt,d0 ; Are we at the last frame? bhi.s vbl5 ; No, skip ahead clr.w moucnt ; Clear the frame counter bra.s vbl6 vbl5: addq.w #1,moucnt ; Increment frame counter vbl6: bsr.s which_mouse ; Get pointer to mouse data move.l sprtad,a2 bsr.s stuff_it bsr.s force_it fall_thru: movem.l (sp)+,d0/a0-a3 ; Restore them registers, pal sysj1: jmp $DEADBEEF ; Jump to system VBI routine sysvc1 = sysj1+2 stuff_it: move.l (a3),-10(a2) ; Caught you red-handed! Set the hot spot moveq #0,d0 move 6(a3),d0 ; Get mask color bsr.s vb_color ; Go adjust the color move d0,-4(a2) ; Set the color move 8(a3),d0 ; Get data color bsr.s vb_color ; Adjust it move d0,-2(a2) ; Set it move.l a3,a0 add.l #10,a0 ; The data is stored in sprite format move.l a3,a1 add.l #42,a1 ; --- alternating words of data and mask move #15,d0 stuff2: move (a0)+,(a2)+ ; Take that! move (a1)+,(a2)+ ; The mouse thief strikes! dbf d0,stuff2 rts which_mouse: moveq #0,d0 move.w moucnt,d0 mulu #74,d0 add.l #mouse_array,d0 move.l d0,a3 rts vb_color: move.l valsav,a0 add.l d0,a0 ; Add color value to start of table move.b (a0),d0 ; Get adjusted color rts force_it: bsr.s pac_butt tst mouse_x(a0) ; Are we at the left edge of the screen? bne.s force1 ; No, skip over addq #1,mouse_x(a0) ; Move it right move.b #$FF,anipac+1 ; Move it back left bra.s pac_send force1: subq #1,mouse_x(a0) ; Move it left move.b #$01,anipac+1 ; Move it back right force2: bra.s pac_send pac_butt: move.b #$F8,anipac move.l line_a,a0 btst.b #0,but_stat(a0) beq.s pacb2 bset.b #1,anipac pacb2: btst.b #1,but_stat(a0) beq.s pacb3 bset.b #0,anipac pacb3: rts pac_send: move.l #anipac,a0 move.w sr,srsave or.w #$700,sr j_add2: jsr $DEADBEEF sysvc2 = j_add2+2 move.w srsave,sr rts save_vbv: move.l ipl_vec,sysvc1 move.l #my_vblank,ipl_vec move.l $502,a0 cmp.l #$ABADBABE,2(a0) bne.s getmsv move.l 18(a0),a0 bra.s getms1 getmsv: move.w #34,-(sp) ; Xbios kbdvbase trap #14 addq #2,sp move.l d0,a0 move.l 16(a0),a0 ; Save mouse interrupt vector getms1: move.l a0,sysvc2 rts .data .even vdipb: dc.l contrl,intin,ptsin,intout,ptsout aespb: dc.l contrl,global,intin,intout,addrin,addrout a_init: dc.w 10,0,1,0,0 e_mesg: dc.w 23,0,1,1,0 e_timr: dc.w 24,2,1,0,0 m_reg: dc.w 35,1,1,1,0 g_hand: dc.w 77,0,5,0,0 g_mous: dc.w 78,1,1,1,0 r_obfx: dc.w 114,1,1,1,0 f_dial: dc.w 51,9,1,1,0 f_alrt: dc.w 52,1,1,1,0 f_cntr: dc.w 54,0,5,1,0 f_do: dc.w 50,1,2,1,0 o_cdrw: dc.w 42,6,1,1,0 o_cfnd: dc.w 43,4,1,1,0 o_coff: dc.w 44,1,3,1,0 f_sel: dc.w 90,0,2,2,0 w_crea: dc.w 100,5,1,0,0 w_open: dc.w 101,5,5,0,0 w_clos: dc.w 102,1,1,0,0 w_del: dc.w 103,1,1,0,0 w_get: dc.w 104,2,5,0,0 w_updt: dc.w 107,1,1,0,0 ob_inx: dc.w savebt,loadbt,clrmbt,clrdbt,invdbt,invmbt dc.w upbt,leftbt,downbt,ritebt,mirdbt,mirmbt,rotbt dc.w exitbt,instbt,remvbt,undobt,cdowbt,cupbt,colttl dc.w frmttl,frdown,frup,anonof o_dum: dc.w 0 oi_len = (o_dum-ob_inx)/2 rtn_table: dc.l save,load,clr_mask,clr_data,inv_data,inv_mask dc.l up,left,down,right,mir_data,mir_mask,rotate dc.l exit,install,remove,undo,colr_down,colr_up,sw_fgbg dc.l sw_anttl,ani_down,ani_up,ani_onoff low_val: dc.b 0,15,1,2,4,6,3,5,7,8,9,10,12,14,11,13 med_val: dc.b 0,15,1,2,15,15,15,15,15,15,15,15,15,15,15,15 hi_val: dc.b 0,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 y_off: dc.w 100 y_bot: dc.w 260 chang1: dc.w 180 chang2: dc.w 140 y_div: dc.w 10 y_scr: dc.w 80 celsiz: dc.w 9 fillst: dc.w 2 filhot: dc.w 5 empty: dc.w $0000,$0000 mempty: dc.w $0000,$0000 dots: dc.w $AA80,$0000 mdots: dc.w $0000,$FF80 black: dc.w $FF80,$FF80 mblack: dc.w $FF80,$FF80 hotpat: dc.w $5500,$FF80 mhotpt: dc.w $FF80,$0000 mouse_form: x_hot: dc.w 0 y_hot: dc.w 0 planes: dc.w 1 fg_col: dc.w 0 bg_col: dc.w 1 m_mask: dc.w $C000,$E000,$F000,$F800 dc.w $FC00,$FE00,$FF00,$FF80 dc.w $FFC0,$FFE0,$FE00,$EF00 dc.w $CF00,$8780,$0780,$0380 m_image: dc.w $0000,$4000,$6000,$7000 dc.w $7800,$7C00,$7E00,$7F00 dc.w $7F80,$7C00,$6C00,$4600 dc.w $0600,$0300,$0300,$0000 arrow_data: dc.w $C000,$0000,$E000,$4000 ; Data for arrow cursor in sprite dc.w $F000,$6000,$F800,$7000 ; format (alternating words of mask dc.w $FC00,$7800,$FE00,$7C00 ; and data) dc.w $FF00,$7E00,$FF80,$7F00 dc.w $FFC0,$7F80,$FFE0,$7C00 dc.w $FE00,$6C00,$EF00,$4600 dc.w $CF00,$0600,$8780,$0300 dc.w $0780,$0300,$0380,$0000 * TEDINFO structures tinf0: dc.l stlog,dummy,dummy ; ST-Log Presents dc.w 5,6,1,$1000,0,-1,17,1 tinf1: dc.l copyrt,dummy,dummy ; Copyright 1987 dc.w 5,6,2,$1000,0,-1,15,1 tinf2: dc.l footbl,dummy,dummy ; Little Green Footballs dc.w 5,6,2,$1000,0,-1,23,1 tinf3: dc.l dcolms,dummy,dummy ; Data/Mask color message dc.w 5,6,2,$1180,0,-1,11,1 tinf4: dc.l framms,dummy,dummy ; Frame/#/Speed message dc.w 5,6,2,$1180,0,-1,6,1 tinf5: dc.l anofms,dummy,dummy ; Animation ON/OFF message dc.w 5,6,2,$1180,0,-1,14,1 tinf10: dc.l dcolms,dummy,dummy ; Low res Data/Mask message dc.w 5,6,2,$1180,0,-1,11,1 * Editor dialog box editbx: dc.w -1,1,32,G_BOX,NONE,SHADOWED dc.l $FF1100 dc.w 0,0,76,20 dc.w 5,2,4,G_STRING,NONE,SELECTED dc.l mousms dc.w 0,0,76,2 dc.w 3,-1,-1,G_TEXT,NONE,NORMAL dc.l tinf0 dc.w 1,0,13,2 dc.w 4,-1,-1,G_TEXT,NONE,NORMAL dc.l tinf1 cop_co: dc.w 57,0,17,1 dc.w 1,-1,-1,G_TEXT,NONE,NORMAL dc.l tinf2 footco: dc.w 57,1,17,1 dc.w 6,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l instms dc.w 66,3,8,1 dc.w 7,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l remvms dc.w 66,5,8,1 dc.w 8,-1,-1,G_BOXTEXT,NONE,NORMAL dc.l tinf3 dc.w 65,7,10,1 dc.w 9,-1,-1,G_BOXCHAR,NONE,NORMAL dc.l $2FF1100 dc.w 65,8,3,2 dc.w 10,-1,-1,G_BUTTON,SELECTABLE,NORMAL valadr: dc.l dvalms col_co: dc.w 68,8,4,2 dc.w 11,-1,-1,G_BOXCHAR,NONE,NORMAL dc.l $1FF1100 dc.w 72,8,3,2 dc.w 12,-1,-1,G_BOXCHAR,NONE,SHADOWED dc.l $1FF1100 upco: dc.w 57,9,2,1 dc.w 13,-1,-1,G_BOXCHAR,NONE,SHADOWED dc.l $4FF1100 leftco: dc.w 53,11,2,1 dc.w 14,-1,-1,G_BOXCHAR,NONE,SHADOWED dc.l $3FF1100 riteco: dc.w 61,11,2,1 dc.w 15,-1,-1,G_BOXTEXT,NONE,NORMAL dc.l tinf4 dc.w 65,11,10,1 dc.w 16,-1,-1,G_BOXCHAR,NONE,NORMAL dc.l $2FF1100 dc.w 65,12,3,2 dc.w 17,-1,-1,G_BUTTON,SELECTABLE,NORMAL anival: dc.l frvlms dc.w 68,12,4,2 dc.w 18,-1,-1,G_BOXCHAR,NONE,NORMAL dc.l $1FF1100 dc.w 72,12,3,2 dc.w 19,-1,-1,G_BOXCHAR,NONE,SHADOWED dc.l $2FF1100 downco: dc.w 57,13,2,1 dc.w 20,-1,-1,G_STRING,NONE,SELECTED dc.l dat_ms datco: dc.w 11,14,6,1 dc.w 21,-1,-1,G_STRING,NONE,SELECTED dc.l maskms mskco: dc.w 36,14,6,1 dc.w 22,-1,-1,G_BOXTEXT,NONE anistt: dc.w NORMAL dc.l tinf5 dc.w 65,14,10,1 dc.w 23,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l savems dc.w 2,16,7,1 dc.w 24,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l clrdms dc.w 11,16,12,1 dc.w 25,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l invdms dc.w 24,16,12,1 dc.w 26,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l mirdms dc.w 37,16,12,1 dc.w 27,-1,-1,G_BUTTON,SELECTABLE extstt: dc.w SHADOWED dc.l exitms dc.w 67,16,7,3 dc.w 28,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l undoms dc.w 58,16,7,3 dc.w 29,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l rotms dc.w 50,16,7,3 dc.w 30,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l loadms dc.w 2,18,7,1 dc.w 31,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l clrmms dc.w 11,18,12,1 dc.w 32,-1,-1,G_BUTTON,SELECTABLE,SHADOWED dc.l invmms dc.w 24,18,12,1 dc.w 0,-1,-1,G_BUTTON,$21,SHADOWED dc.l mirmms dc.w 37,18,12,1 ed_adr: dc.l editbx objnum = (ed_adr-editbx)/24-1 * Low-res dialog box lowbox: dc.w -1,1,14,G_BOX,NONE,SHADOWED dc.l $FF1100 dc.w 0,0,38,14 dc.w 2,-1,-1,G_STRING,NONE,SELECTED dc.l lttlms dc.w 0,0,38,2 dc.w 3,-1,-1,G_STRING,NONE,NORMAL dc.l lms1 dc.w 1,3,23,1 dc.w 4,-1,-1,G_BUTTON,$5 loistt: dc.w NORMAL dc.l loadms dc.w 26,3,10,1 dc.w 5,-1,-1,G_STRING,NONE,NORMAL dc.l lms2 dc.w 1,4,18,1 dc.w 6,-1,-1,G_BUTTON,$5 losstt: dc.w NORMAL dc.l savems dc.w 26,5,10,1 dc.w 7,-1,-1,G_STRING,NONE,NORMAL dc.l lms3 dc.w 1,6,22,1 dc.w 8,-1,-1,G_BUTTON,$5 lorstt: dc.w NORMAL dc.l remvms dc.w 26,7,10,1 dc.w 9,-1,-1,G_STRING,NONE,NORMAL dc.l lms4 dc.w 1,7,19,1 dc.w 10,-1,-1,G_STRING,NONE,NORMAL dc.l lms5 dc.w 1,8,20,1 dc.w 11,-1,-1,G_BOXTEXT,TOUCHEXIT locstt: dc.w NORMAL dc.l tinf10 dc.w 7,10,10,1 dc.w 12,-1,-1,G_BUTTON,$7 loestt: dc.w NORMAL dc.l exitms dc.w 26,10,10,2 dc.w 13,-1,-1,G_BOXCHAR,TOUCHEXIT lodstt: dc.w NORMAL dc.l $2FF1100 dc.w 7,11,3,2 dc.w 14,-1,-1,G_BUTTON,NONE,NORMAL lovadr: dc.l dvalms dc.w 10,11,4,2 dc.w 0,-1,-1,G_BOXCHAR,$60 loustt: dc.w NORMAL dc.l $1FF1100 dc.w 14,11,3,2 lo_adr: dc.l lowbox lo_num = (lo_adr-lowbox)/24-1 * Text for dialog objects stlog: dc.b 'ST-Log Presents:',0 copyrt: dc.b 'Copyright 1987',0 footbl: dc.b 'Little Green Footballs' dummy: dc.b 0 mousms: dc.b ' MOUSE-KA-MANIA! by Charles F. Johnson',0 instms: dc.b 'Install',0 remvms: dc.b 'Remove',0 savems: dc.b 'Save',0 loadms: dc.b 'Load',0 clrdms: dc.b 'Clear Data',0 clrmms: dc.b 'Clear Mask',0 invdms: dc.b 'Invert Data',0 invmms: dc.b 'Invert Mask',0 mirdms: dc.b 'Mirror Data',0 mirmms: dc.b 'Mirror Mask',0 rotms: dc.b 'Rotate',0 exitms: dc.b 'EXIT',0 undoms: dc.b 'UNDO',0 dat_ms: dc.b ' DATA',0 maskms: dc.b ' MASK',0 dvalms: dc.b '01',0 mvalms: dc.b '00',0 frvlms: dc.b '01',0 fnvlms: dc.b '01',0 spvlms: dc.b '00',0 blnkms: dc.b ' ',0 dcolms: dc.b 'Data Color',0 mcolms: dc.b 'Mask Color',0 framms: dc.b 'Current Frame',0 frmnms: dc.b '# of Frames',0 speems: dc.b 'Delay',0 anonms: dc.b 'Animation ON',0 anofms: dc.b 'Animation OFF',0 lttlms: dc.b " Mouse-Ka-Mania by Charles F. Johnson ",0 lms1: dc.b "The Editor doesn't work",0 lms2: dc.b "in low resolution.",0 lms3: dc.b "However, you may still",0 lms4: dc.b "install or remove a",0 lms5: dc.b "custom mouse cursor!",0 .even itmtxt: dc.b 'ITEM SELECTOR' restxt: dc.b 'Low',0,'Medium',0,'High' datext: dc.b ':\\*.DAT',0 aniext: dc.b ':\\*.MKM',0 i_save: dc.b ' Save Mouse Data to which File? ' is_dum: dc.b 0 is_len = (is_dum-i_save)*8 i_asav: dc.b ' Save Animation to which File? ' ia_dum: dc.b 0 iaslen = (ia_dum-i_asav)*8 i_load: dc.b ' Load Mouse Data from which File? ' il_dum: dc.b 0 il_len = (il_dum-i_load)*8 i_aloa: dc.b ' Load Animation from which File? ' ial_du: dc.b 0 iallen = (ial_du-i_aloa)*8 dat_or_ani: dc.b '[2][ Which type of file? | ]' dc.b '[Animation|Single Frame]' notani: dc.b '[3][ This is not a Mouse-Ka-Mania |' dc.b ' animation file. | ]' dc.b '[ Oops! ]' exist: dc.b '[3][ The file ' exname: dc.b ' | already exists! | |' dc.b ' Over-write it?| ]' dc.b '[ Yes | No ]' dskful: dc.b '[3][ This disk is full! | ][ Oops! ]' accmsg: dc.b ' Mouse-ka-Mania!',0 lowdef: dc.b '\\MOUSELOW.DEF',0 meddef: dc.b '\\MOUSEMED.DEF',0 hidef: dc.b '\\MOUSEHI.DEF',0 anipac: dc.b 0,0,0,0 .bss .even line_a: ds.l 1 valsav: ds.l 1 temp: ds.l 1 o_asav: ds.l 1 itmadr: ds.l 1 iasav: ds.l 1 txtadr: ds.l 1 diradr: ds.l 1 filadr: ds.l 1 badsav: ds.l 1 sprtad: ds.l 1 screen: ds.l 1 filptr: ds.l 1 nfrtst: ds.l 1 res_optr: ds.l 1 res_okptr: ds.l 1 scncnt: ds.w 1 srsave: ds.w 1 fsflag: ds.w 1 lowflg: ds.w 1 o_res: ds.w 1 res: ds.w 1 menuid: ds.w 1 curdrv: ds.w 1 colflg: ds.w 1 adflag: ds.w 1 antflg: ds.w 1 shfflg: ds.w 1 onoff: ds.w 1 vbi_on: ds.w 1 vbtimr: ds.w 1 moucnt: ds.w 1 franum: ds.w 1 nframs: ds.w 1 delval: ds.w 1 diflag: ds.w 1 insflg: ds.w 1 itmlen: ds.w 1 ilensv: ds.w 1 numrtn: ds.w 1 butflg: ds.w 1 o_indx: ds.w 1 hotflg: ds.w 1 m_flag: ds.w 1 d_flag: ds.w 1 a_good: ds.w 1 pt_num: ds.w 1 ghandl: ds.w 1 vhandl: ds.w 1 whandl: ds.w 1 fhandl: ds.w 1 butsav: ds.w 1 mousex: ds.w 1 mousey: ds.w 1 x: ds.w 1 y: ds.w 1 cx: ds.w 1 cy: ds.w 1 cw: ds.w 1 ch: ds.w 1 wx: ds.w 1 wy: ds.w 1 ww: ds.w 1 wh: ds.w 1 x_obj1: ds.w 1 y_obj1: ds.w 1 x_obj2: ds.w 1 y_obj2: ds.w 1 w_obj: ds.w 1 h_obj: ds.w 1 l_type: ds.w 1 l_colr: ds.w 1 d_mode: ds.w 1 l_strt: ds.w 1 l_end: ds.w 1 l_wid: ds.w 1 f_type: ds.w 1 f_colr: ds.w 1 f_patt: ds.w 1 * GEM arrays contrl: ds.w 12 intin: ds.w 128 ptsin: ds.w 128 intout: ds.w 128 ptsout: ds.w 128 global: apvrsn: ds.w 1 apcont: ds.w 1 apid: ds.w 1 apprvt: ds.l 1 apptre: ds.l 1 ap1rsv: ds.l 1 ap2rsv: ds.l 1 ap3rsv: ds.l 1 ap4rsv: ds.l 1 addrin: ds.w 128 addrout:ds.w 128 m_form2: ds.b 74 ; The installed mouse form hotsav: ds.l 1 ; Hot spot undo mouse_save: ds.w 32 ; Undo buffer m_rotate: ds.w 32 ; Rotation buffer mouse_array: ds.b 74*32 ; Animation array savfil: ds.b 16 svafil: ds.b 16 lodfil: ds.b 16 loafil: ds.b 16 savdir: ds.b 64 svadir: ds.b 64 loddir: ds.b 64 loadir: ds.b 64 pathnm: ds.b 64 curpth: ds.b 64 mspipe: ds.b 32 dta: ds.b 44 ds.l 300 ; Reserve 1200 bytes for stack ustack: ds.l 1 ds.w 10 . w.. wsANT DATwJAPPLE DATwJARROW_2 DATwJARROW_3 DATwJATOM MKMwD BANANAJRDATwJBELL DATwJBOOMBOMBDATwJBOX MKMw BRUSH DATwJBUNNY DATwJBUZZNBEEMKMwD CFJ DATwJCONEA MKMw CONEB MKMw CROSFRAMDATwJFACE_ROMDATwJFINGER DATwJFINGER2 DATwJFLEXFINGMKMwD FLY DATwJFUJI DATwJHAND_1 DATıwJINARROW3MKMƱwD INARROWSDATɱwJINARROWSMKM̱wD JACKNIFEDATαwJK_TINGA DATѱwJMAGGLASSDATԱwJMIDIPLUGDATֱwJ@$Vha~|!>~ *2@@DHn {| ^n6 p >C @@#`<?? @@ H0||~gca@p0&OO& 0`0 >???|>1!#o&78 ?oOG#|>???>1!#g&28 /oOG#~???<|1!#b&28 (gGG#???1##'8 (d6CC#2>> >|6BBA#|<x??Nc|<}{b&28 (eCO/><??><}}b~28 (eGG'><>~~~|~~^zA#|>?<_G#|@`px|~xp`@     @` //P/// .   $<  '/O  ` 0X` rox8 @@@ @   R'?????BBB€BBB€BB€B€B€„BB€„B€„B?„BB?„BBB?„BBBxp0 @@ 00 @@ 00 @@ 00 @@ 00 @@ 00 @@ 0?0 @@ 0?0 @@ 0~?0 @@ 0q~?0 @@ 01}~?0 @@ 09~?0 @@ 0=~?0 @@ 0?~?0 @@ 0?~?0 @@ 0?wt~]?p0 @@ 0P?UT~UT?P0 @@ 0P*UT*UT*P0 @@ 0@**DD*0 @@ 0***0 @@ 0" 0 @@ 0 +NW`[HJ($E! 3($`RpIE`b5t: lFHqt Dxl\97w8~??|><bƄTX3a`BDJV4??>>xƄTX3!`"%V8???????>FTX` V8????>FPX `V???????>ƈTX` V??>>xƄTX3!`"%V~??|><bƄTX3a`BDJV4>A>""bb"""A>x>~>p>wwvwwvvvp~>x0 0||~~|p`0 0|px|~~<0 0 0|px|>>?0 0|px|>>?0 0|`08<0 0|@`00 0|@  `0 0|@ 0 0|`00 0|`80 0|`80 0|`80 0|`80 0|@ 0 0|@ 0 0|@ 0 0|@@ 0 0 0|@@`080 0|px|<>?0 0|||~x0 0|1}~?0 @@ 09~?0 @@ 0=~?0 @@ 0?~?0 @@ 0?~?0 @@ 0?wt~]?p0 @@ 0P?UT~UT?P0 @@ 0P*UT*UT*P0 @@ 0@**DD*0 @@ 0***0 @@ 0" 0 @@ 00 0||~~|p`0 0|px|~~<0 0 0|px|>>?0 0|px|>>?0 0|`08<0 0|@`00 0|@  `0 0|@ 0 0|`00 0|`80  0|`8@ 0|`8@ 0|`00 0|@ 0< 0|@ 0 0|@ 0 0|@@ 0 0 0|@@`080 0|px|<>?0 0|||~x0 0|1}~?0 @@ 09~?0 @@ 0=~?0 @@ 0?~?0 @@ 0?~?0 @@ 0?wt~]?p0 @@ 0P?UT~UT?P0 @@ 0P*UT*UT*P0 @@ 0@**DD*0 @@ 0***0 @@ 0" 0 @@ 0`P HD"BBAABBD"HP `  U} j (#"   7?@6vvv??0|~???0Lb @2)f$B|C ! A0|~???0Lb @2)f$B|C ! A<>???<" @2)f$B|C ! A ???  @2)f$B|C ! A??? 3)f$B|C ! A??? @2)f$B|C ! A??? 3)f$B|C ! A ???  @2)f$B|C ! A<>???<" @2)f$B|C ! A0|~???0Lb @2)f$B|C ! A0|~???0Lb @2)f$B|C ! A  ~88?|><FC`!gQ+?}B{"fR|, P P P P P PHH"DFbQIE 9qaA???? `PPP5PPPP@@ h @``@ h 80p`p0|Td|@``@|dT|88x`x88t^=j+2&b?~``?~b2&j+^=t4<<`<<4pZ-o{5V1F||1F5Vo{Z-p0:.<8`8<:.0pX m[7 x 7m[X p08\xpxxpx\80pX m[7 x 7m[X p08\xpxxpx\80pX m[7 x 7m[X p08\xpxxpx\80pX m[7 x 7m[X p08\xpxxpx\80pX m[7 x 7m[X p08\xpxxpx\80pZ-o{5V1F||1F5Vo{Z-p0:.<8`8<:.0t^=j+2&b?~``?~b2&j+^=t4<<`<<4|Td|@``@|dT|88x`x88h @``@ h 80p`p0 `P+jT LD||D HT+jP`  (0880 ( h @``@ h 80p`p0|TdD|@``@|DdT|(  8`8 ( `V5**$"?~``?~"$**V5`  `  `P+jT D||D T+jP`  (0`0 ( `P(  x ( P` P`pp`P `P(  x ( P` P`pp`P `P(  x ( P` P`pp`P `P(  x ( P` P`pp`P `P(  x ( P` P`pp`P h H @``@H h  0p`p0 8DU@JUPZ]TZ[jTHDP8`8dRE*5@*%P"%D$(L08 @ @ P B @_{@@ _@_ D"  L@T@\@@@@@ p8`p??OO33xp1`@ 3L2a18MONOAROWDATڱwJMSHCLOUDDATwJNCC_1701DATwJNEW_BEE DATwJNOTE DATwJOUTLNCRSDATwJPAINTCANDATwJPENCIL DATwJPULSAROWMKMwD RADAR MKMw  REDARROWDATw JRODENT DATwJSC1224 DAT wJSPRAYCANDATwJSTARFLETDATwJSTOPHANDDATwJSTRIPES MKMwD THIKCROSDAT wJTHINCROSDAT$wJUD_ARROWDAT(wJ@`px|~p`@*T TH &@` ` `++m7H@@  @   0`,(P$$+P(P(P  ``   ~??|><bƄT3a`BDJV4 `<@B<?~<~@~z'OѿQN%E \0>`@.@V`1B0H2 r-[ @0X&V 0$`PIGb|@`px|~|lF@`px|~plL@`px|~po\,F@`px|`_?|lF@`px`^?|lF@`p`\>|lF@`@8|~|lF@@0x|~|lF px|~|lF@`px|~|lF@@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF@`px|~|lF 0 @@ 00 @@ 00 @@ 00 @@ 00 @@ 00 @@ 00 @@ 00 @@ 00 @@ 0<0 @@ 0|80 @@ 0xp0 @@ 00 @@ 00 @@ 00 @@ 00 @@ 00 @@ 0?0 @@ 0?0 @@ 0~?0 @@ 0q~?0 @@ 01}~?0 @@ 09~?0 @@ 0=~?0 @@ 0?~?0 @@ 0?~?0 @@ 0?wt~]?p0 @@ 0P?UT~UT?P0 @@ 0P*UT*UT*P0 @@ 0@**DD*0 @@ 0***0 @@ 0" 0 @@ 0 x<1 @<`@i=h  0?w~ ?o_xu%%%%_@?@_P P P P P _@? ?@l8T-6Q""""@+@` @P P h(h/.4-*T$$(0 @  H(( @ %PUPUXUDW___4^_///***(( ( ( !  @@~?~?x<x<~?~x<x<~?x<x~?x<~?x<?~? x<~?~?<x<~?~?x<x<~?~?x<x<0?~?~x<x<0~0?~?<x<x00~?~?x<x<10~?~?x<x<31~?~?x<x<73~?~?x<x<?7~?~?x<x<??~?~?x<x<Fl|~|xp`@. ,w.. ,wSOLITAIRPRG-w+`XHUf` Efv*oMD m HPHUBg?<JNA(m)m -:gS)@ -OK1PC#HN"Hx?<HNA@)@l/?<HNA)@h&@)@XЬl)@d)@`ARCpr Ѝ"QHNFALNHz2?< NA\pdAxr0XQ)K\NN(( ,hЬlNuN ,`NuJrBjNuHz?<&NN\CAp$L Qp NBlJpNNpMN9@pdAr 0Q0tr N9lNupealp`NuaNJHz?<&NNBWNANC2A@p222NrҌ0<NB0,rNurA9Ar`v C9Cr`rt9@9A9BNrrҌpsNB0,Nu9@N`rDҌpsNBNuC2 @ e @}bA@p222Nr,Ҍ0<NBNu &8*:EENuHn 2$4BBNuAd RdQRB BbABJk 0NuJBjBBXNu 0Nu 2$NuE`B<gJEgEjCDEDF Fe( F dF8BCHC` F0bFHC8v` HD8HDkDуdQRBNuDdBDA@kgAр[SBk0NuJlJBk&Nu0g H@rB JkЀ[` BbNuJBj prtNuHPAJgPpr$< _Nup _NtNu&8*JEgJBgJjBEB:HC҅H@:|ۆ҄ۆ<HC>H@ЃdHA@B@H@хk HAҁHAрSB BbNuNpNNuCDEJEgJBgJjBEBQ*HE?<>0rHGGdHGGdSWDуdi\?<>0rHGGdHGGdSWDуdiN?<>0rHGGdHGGdSW2 H@N?<,>CEdGH@0r`?<`JBgVB&8TTDуdQRBNuDAр&AdRAрAрDуNuprt|=|  g +g -f .g20  b 0e 9b da`RF` .f 0e 9b dajSF` Eg efX +g -f 0e 9oSH`00  b&Hz0  b E Do`HJjDDDS4</NJFkSFk&aQN`Ha"FFaQL8N6.JgtBnNupr$<NuJBk4<rpAC v JBgJjv-| Bb BkH>aaNRFBdL8?N<JBga2SF Be BgQRB`ApdR e <rRF&0xafEv+0JFjDFv-Hƌd0BFHF 0HF0ANuprt|`2:HQ A d,SFSGFnHGnDDDk9DBlDEk9EBlFcllGcll0,lb 0,lcNu0pmrtA)HA)HNpNHHPN<4 _:8><DbFEbGCHP@dʾAdBD2ƞE29|C???FF22N23BRG0@\@N"2)IN0(* 9AJA)H@@[000][ˈN Evz`* [g" ]g |g QSz` zQSpQ][ɈN Dvx`* [g" ]g |g QSx` xQSpQ]Bp4NHNur|<N @xepw2A$JBjDFHB t`0QBl9F)lVTAtp 9| N$Y QfFL~)AH|"@$Y Qf,L~)AH|$X PfLH9HN0pN2(g"P@g2RADAH""l`r2oZAe 1@#)I`Nuk1@Nup NN"l`dpNAtrdJhk\QpaNH ld$l`"Hg: k&@0+R`g k#&@0+S@H3 Q&f)I`LNuApNN$N$BS@kH2QNupC ұd"X0Pg"RA$D#Nu"X0NuNJ@gpNuNU@k0NupNu _0HpN _0HpNE ұeHHQ0)N$_$ZR@H`2QNu$Y0gHR@@"D%$X0P2g# R@%Nu2)A IJAfr4(Ae*RBBc0*SA?N$E$R`QˈN ENup`(* 0(iN$E 4R`Q$D 4R`QˈN DN ENua NuN IHPg"B  g &gNJBjt BNut`Rptr ae OgT Xgj HgSRB ae Fb$0k  c_  c b退`tSJBkNRB0 b b瀀`RB0 fрd`2p <0N`QNu0g< @g4:8(g* b.&NSD`Q0$C$RQLjN CNuNpNp NH&N(րN(jNuHRp` HRpJQfpNNq Y QfdЀЀ 0NuNNNq Y Qfd ЀЀNuNN$_& Y Qfdփփ!8NNN$_& if"QdփփHRNpNN~,Nq8DRzXEEg"7PNqR$HBJBgpNJgJigp`eetЂ`"ЀeЁdp`ЀeЀe"Ѕe$W.H@@N|L"2` NqR YEjrd0` SjN$_NЀЀ 0N YQf "_Nq*eNN*< NqbІSGfN$_N0փփ!8N YQf "_&Nq*eNN*<&NqbֆSGfN~$_NЀЀ Np"X4g S`"QNuNuNtJPgBP, d4d<e<Ѐ"ЀЁE Y0gR@2DAH!b` `ЀЀ`Ѐ"ЀЁE. l ,`2"X2g,e($UAk&QHPS Y2g RSj _b l ,"X2geb J"F\N8,Nt`"QjNu" KC`e N`d \N l\Ӭ\ NupNd d3 d# d# # d# # # # d# # # # # # # # dB` # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # QNudd2d"d""d""""d""""""""dB` """"""""""""""""""""""""""""""""QNu??<NMXNu?k?<NM"UAf J@fH@NuDW?<NMXNuC l ", Ⲭ dfѬ SA 0! Nup"NNNPJfNup#`N,Np`pNu)H9@Jp4NP'J&f H LNu P&NuQ'` J,'fJ,&gHA#ȇeC! B,&LNu-W)K20, 8k8@ gJl&f"Nu , 8g"P 8 @/, 8NZ  8fQ 8J,'gNupB <``L@ H)l26)z @W , Jf`CfSHj-D@Hd0H@H 0H@0`fSC\fS , @a"C]fApNNNHP?< NA\NuH@aa/a a Nu@0 9c^Nu| PC>$Fehler # ][Abbruch]\f.B &lX)K\)ld` lp ,BQjNup(NX"l`Yd&-KNN"l`YepN&#k"C-KN"Cփk փk2##`փk"`2`$Y8gHRDD*D%H8#$c2g# HRDD%H`p"l`Qd&&| NuN"l`QepZNpr`&AdRd QJBgRBBABJk"l` d&6&|0!NuN"l` epZNC ҳfHP0(N$W$RR@H`2Q"H _$l` dd" $X&0BP6Y&|Hg R@@%E ҳeHQ0)N$_$RR@H`2QNu$Y 0P1@Hg R@@%NuN$l` epZN?<?<NNX\+@?<NNT+@N+@NNH <r$<L8N2NNVN+@ -NvNH -NvNN@L8N^fN!R`)|p 8+|BNpNpNpNprNprN>BgBg?<?<A" NPpNpNpNprNprN>BgBg?<?<A" NPN?<NNTUVHfN# BNXNSolitaire luft leider nur | mit monochromen Monitor | Real-Soft-Team | HPNX Schade ! r"_ NApNpNpN <r$<&<x*<N2N/ <r$<&<x*<N6N"N <r$<&<x*<N6N/ <r$<&<x*<N2N"N>pNp N <r$<&<x*<N6N"<NNdWillkommen bei:N| <r$<&<x*<N2N"<^N <r$<&<x*<N6N"<rN@pNpNpNpN <j"<NNd Informationen mit HELP-Taste4N|A$NZpNpNpNpNC큘NpHmA큘"_N HPA큘"_N HPA큘"_N C큘NpA큘"<@N6C큞NppC탶NBpC탼NBpCNBpCNBpCNBpCNBpCNBpCNBpCNBHx pC ~NDp CNBp C"NBpCNBBpCNHxpCNHxpCNANANANAlNZN\pANdB+|a+|+|+| AsNZB+| pCNSWHfN&BHxpCNpCNSWHfN&+|BpCNpCNSWHfN&+|$HxpCNpCNSWHfN'B$HxpCNpCNSWHfN'h+|HxpCNHxpCNHxpCNpCNSWHfN'+|HxpCNHxpCNHxpCNpCNSWHfN'+|HxpCNHxpCNHxpCNpCNSWHfN(F+|HxpCNHxpCNHxpCNp CNSWHfN)0BNX$ Solitaire wirklich beenden ? | | | HPNd Ja | Nein r"_ N+@0 -0SWHfN(ApNZN)0p C"NRWHfN)*B0p A0N/-0 -0C"NCN/-0pC"NN`NqNqN&pCNSWHfN)XB+|B pNpNpNprN <"<N>/-/-pC~ND -Z/ -ZC~ND -RCNB+|X(+|, -(NH -,NL8N2vNH <r$<L8N2ANA 0 -(N&<x*< N2vNH <r$<L8N2ANA >0 -NANNAN -NA NNA$N -N&<x*<N6vNA*N -(NH -NL8NA0N -,NH -NL8NA6NB0 -A0N -0NA0NNANN6ABNCAH 0ANANN6H -0NA6NNL8N6ANNA NANN6ATN -NHABNANNN2L8NH -NL8NAZN -NHAHNATNN2L8NH -NL8NA`N -0WHpJBgp/ -0NH -NH -NL8N2L8N&pJBgp$VHfN-V -NH -NL8N2HABNANNN2L8NH -NL8NAZN -NH -NL8N2HAHNATNN2L8NH -NL8NA`N+|0N-ZB0 -0N&<x*<N6H -NH -0NL8N6L8NpJBgp/ -0N&<x*<N6H -N&<x*<N6H -NH -0NL8N6L8N2L8NpJBgp$VHfN.AZNABNN6N/A`NAHNN6N"NAZNANNN2N/A`NATNN2N"NN.ABN/AHN"NANN/ATN"NN`TNqB4 -A4N -4NANNANN6ABN -4NA$NNANN6AHN -4NANNANN6H -(NL8N6H -4NH -(NH -,NL8N2L8NH -NL8NL8N2ANN -4NA$NNANN6ATN -NHABNANNN2L8NH -NL8NAZN -NHAHNATNN2L8NH -NL8NA`N -4WHpJBgp/ -4NH -NH -NL8N2L8N&pJBgp$VHfN1 -NH -NL8N2HABNANNN2L8NH -NL8NAZN -NH -NL8N2HAHNATNN2L8NH -NL8NA`N+|0N1B0 -4N&<x*<N6H -NH -0NL8N6L8NpJBgp/ -4NH -NH -NH -0NL8N6L8N2&<x*<N6L8NpJBgp$VHfN2AZNABNN6N/AHN"NAZNANNN2N/ATN"NN2ABN/AHN"NANN/ATN"NN`NqpNpNpNprNZpNpNpNp NpN <rNNXP Programmidee und Realisierung: Rudolf Saalbach Grafik-Animation: Frank Rakow N|pNA큤Np"<}N$C큪Np -C탰NHPpr"_NNH+@4 -C탰NHPpr"_NNH+@8 -C탰NHPp"_NC큰NpHx <C탶NHx <C탶NHxpC탶NNvNNC탶NHxpC탶NHxpC탶NHxp@C탼NHx -8RC탼NHxpC탼NHxpC탼NHxpC탼NHx <CNHx <CNHxp(CNHxpCNHxpCNHx <CNHx <CNHxp(CNHxpCNHxpCNHx <CNHx <CNHxp(CNHxpCNHxpCNB0 -NH <r$<L8N2NA0NB4 -NH <r$<L8N2NA4N/-4 -NH -0NL8N2H <r$<L8N2N/B -0NANNANN6H -4N&<x*<N6H -(NH -0NH -(NH -,NL8N2L8NH -NL8NL8N2L8NH -NL8NL8N6H <r$<L8N2H -4NH -NvNL8N2NL8N2NC~N /-4/-0HxA NANN6H -0NA$NNL8N2HA$NvNL8N2H <r$<L8N2NC~N N`Nq/-0Hx/-0pC~NNH <r$<L8N2NCNN`Nq/-0A NANN6H -0NA$NNL8N2HA$NvNL8N2H <r$<L8N2NCNB0 -NH <r$<L8N2NA0NB4 -NH <r$<L8N2NA4N -0N&<x*<N6H -NL8NpJBgp/ -4N&<x*<N6H -NL8NpJBgp$VHfN9/-0/-4pC~N N -SWHfN=/-0/-4pbC~N HxHxpbC~N HxHxpbC~N HxHxpbC~N HxHxpbC~N -UWHfN=vHxHxpcC~N HxHxpcC~N HxHxpcC~N HxHxpcC~N -WWHfN=HxHxpdC~N HxHxpdC~N HxHxpdC~N HxHxpdC~N -YWHfN>HxHxNH -NL8N&<x*<N6NC~N HxHxNH -NL8N&<x*<N6NC~N HxHxNH -NL8N&<x*<N6NC~N HxHxNH -NL8N&<x*<N6NC~N -JWHfN?N <r$<A*NN2N/ <r$<A*NN2N/pC~N N?`HxBpC~N AjNZ+|< <r$<A*NN2N/ <r$<A*NN2N/pC~NNH <r$<L8N2N+@0 <r$<A*NN2N/ <r$<A*NN2N/pC~NNH <r$<L8N2N+@@+|DBH -NH <r$<L8N2NAHNBL -NH <r$<L8N2NALN/-H -LC~NJ^HfNB A큤N/-H -LC~N+@P/-H/-LpC~NNH <r$<L8N2N+@T/-H/-LpC~NNH <r$<L8N2N+@X - JWHfNAAjNZ/-0/-@/-T -XR/ApNZAiNZ?-V?-Z -C탰NHPp _"Np?-V?-Z -PC탰NHPp _"Np/-H/-LAbNZN`NqN`vNq <r$<&<x*<N6N+@d+|h -hN&<x*<N6H -dNHNXBCHP <r$<HAk:NZ -hN&<x*<N6H -dN&<x*<N6HNXBCHP <r$<HAk:NZ -hN&<x*<N6H -dNHNXBCHP <r$<HAk:NZ -hN&<x*<N6H -dN&<x*<N6HNXBCHP <r$<HAk:NZ -hN&<x*<N6H -dNH <r$<L8N2HNXDEHP <r$<HAk:NZ -hN&<x*<N6H -dN&<x*<N6HNXBCHP <r$<HAmNZ -hN&<x*<N6H -dNHNXBCHP <r$<HAmNZ -hN&<x*<N6H -dN&<x*<N6HNXBCHP <r$<HAmNZ -hN&<x*<N6H -dNHNXBCHP <r$<HAmNZ -hN&<x*<N6H -dN&<x*<N6HNXBCHP <r$<HAmNZpN -hN&<x*<N6H -dN&<x*<N6HNXBCHP <r$<HAk:NZA큤N+ml+|!+|"P+|+@N>+@|N>+@N>+@ -J^HfNMxSS|SS/-/-pC~N+@/-/-pC~N+@ /-/-|pC~N+@/-/-|pC~N+@ -NH <r$<L8N2N? -NH <r$<L8N2N? -C탰NHPp _"Np/-/-|A`NZN\A큤NAjNZ/- -|C~N+@P/-/-|pC~N +|D -찭^HfNJ -NH <r$<L8N2N/ -NH <r$<L8N2N/ -NH <r$<L8N2N/ - NH <r$<L8N2N/ApNZ+m+m|+m+mAXNZ/-/- -PC~N AiNZ/-/-pC~NNH <r$<L8N2N?/-/-pC~NNH <r$<L8N2N? -C탰NHPp _"Np/-/-pC~NNH <r$<L8N2N?/-/-pC~NNH <r$<L8N2N? -PC탰NHPp _"Np/-/-AbNZ -N&<x*<N&pJBgp/ -N&<x*<N&pJBgp/ -N&<x*<N&pJBgp/ -N&<x*<N&pJBgp$VHfNMx -/ -/pC~NNH <r$<L8N2N? -/ -/pC~NNH <r$<L8N2N? -C탰NHPp _"Np -/ -/A`NZ -/ -/pC~NNH <r$<L8N2N+@ -/ -/pC~NNH <r$<L8N2N+@ +|p+|DBBpN$VHfNMAiNZN&Nz -RWHg< -RWHgNM` <NNzN&NBH -NH <r$<L8N2NAHNBL -NH <r$<L8N2NALN -8NH/-H/-LpC~NNH <r$<L8N2L8NpJBgp/ -8NH/-H/-LpC~NN&<x*<N6L8NppJBgp$VHfNO -C ~N N`NqNqN`NqNq+|t+|x+||+||pNpNpN -x"-tN -"-|N>+|X+|K\ -XNH -\NHNXBCHP <r$<HAk:NZ -XN&<x*<N6H -\NH <r$<L8N2HNXDEHP <r$<HAk:NZA> 0AD 00 -x"-tN -"-|N -tV/ -xV"N -|NH <r$<L8N2N/ -NH <r$<L8N2N"NA *0pNpNpNp NAN"<NNXEnglischN| <"<TNNd Franzsisch4N|AN"<NNXperspektivischN| <"<TNNXplanN|AN"<NNdSchwarz4N| <"<TNNdWeiss4N|AN"<NNX MarmoriertN| <"<TNNXGemischtN|AN"<NNXDemoN| <"<TNNXEndeN|B0p A0N/-0pC ~N//-0pC ~N"N/-0pC ~N //-0pC ~NNH <r$<L8N2N"NN`NqNqpNpNpNpNAN/ <r$<&<x*<N2N"NNdDieses Programm istN|pNpNpNpNAN&<x*<N6N/ <r$<&<x*<N2N"NNd Public DomainN|pNpNpNpNAN&<x*<N6N/ <r$<&<x*<N2N"NNX. Es ist in GFA-N|AN/ <r$<&<x*<N2N"NNX2Basic geschrieben und soll die Verwendung der RST-N|AN/ <r$<&<x*<N2N"NNX2Designer-Fonts in Grafikprogrammen demonstrieren .N|AN/ <r$<&<x*<N2N"NNX2Das Designer-Programm kann Signum-, Degas-, Gem-,N|AN/ <r$<&<x*<N2N"NNX2Printshop - Fonts und - Icons verwalten,bearbeitenN|AN/ <r$<&<x*<N2N"NNX2auf verschiedene Grafikbildschirme setzen und inN|AN/ <r$<&<x*<N2N"NNX2in vielen Formaten drucken (A4-A8) und speichern .N|pNpNpNpNAN/ <r$<&<x*<N2N"NNd1REAL-SOFT-TEAM -> Frank Rakow & Co. 4N|pNpNpNpNAN/ <r$<&<x*<N2N"NNX2 4830 Gtersloh ,Blowstr 27N|AN/ <r$<&<x*<N2N"NNd) Tel: 05241 / 36354tN|?<?<?<?<oA" NPBmZNzAVN4 -QWHfN}ANZBpCNHxpCNHxpCNHxpCNHxpCNHx pCN - WHfN~B0p A0N/-0 -0CNC"NN`NqNqHx pC"NBpCNHxpCNHxpCNHxpCNHxpCNHxpCNHxpCNHxpCNHxpCNHx pCNA큀 0 -Q]HfN|ANZHx pCNHxpCN -SWHfN,BpCN -JWHfNLHxpCN -WWHfNlHxpCN -UWHfNHxpCN -[WHfNHxpCNHxpCNHxpCN -YWHfNHxpCNHxpCNHxpCN -]WHfN@HxpCNHxpCNHxpCN -_WHfN|HxpCNHxpCNHxpCNBm< <r$<A8NN\A8NCNSWHfNA8N/pC ~NT?A8N/pC ~NNH <r$<L8N2N?A"NnNzA8N/pC ~NT?A8N/pC ~NNH <r$<L8N2N?A"NnNR`NqNzBANZpN <r$<H <r$<HANZNH AlN ArN AxNpN$VHfN$pN WHfN$ANZAxN&<x*<N&fNnB/-pC ~NNH <r$<L8N2ArNNvpJBgp//-pC ~NNArNNpJBgp$VHfNX/-pC ~NNAlNNvpJBgp//-pC ~NN&<x*<N6AlNNpJBgp$VHfNXN\/-pCN+mN}tR - WHgAHNZAN&<x*<N&g4BANZNNp C"NRWHfNB0p A0N/-0 -0C"NCN/-0pC"NN`NqNq/-pCNNNLArN LAlN AVN&<x*<N&fN@pNpNpNAlN/ <r$<ArNN2N"NA>NAlNN6N/ADNArNN6H <r$<L8N2N"N>pN?<?<A"NnAlN/ <r$<ArNN2N"NA>NAlNN6N/ADNArNN6H <r$<L8N2N"N <r$<AlNN2N/ <r$<ArNN2H <r$<L8N2N"NA>NAlNN6&<x*<N6N/ADNArNN6&<x*<N6H <r$<L8N2N"N <r$<AlNN2N/ <r$<ArNN2H <r$<L8N2N"NA>NAlNN6&<x*<N6N/ADNArNN6&<x*<N6H <r$<L8N2N"NpNClA 0CrA 0NNBm <r$<ANN2ArNNvpJBgp/ADNANN6H <r$<L8N2ArNNppJBgp$VHfNANAlNNvpJBgp/A>NANN6AlNNppJBgp$VHfNANzN&fNRANZA 0NSWHfNBANZANZA 0NNAN&<x*<N&fNANZNAN&<x*<N&fNANZNNpNpNpNpNAN&<x*<N6N/AN&<x*<N6H <r$<L8N2N"NA>NANN6H <r$<L8N2N/ADNANN6H <r$<L8N2H <r$<L8N2N"N>pNBmN A0NN󆰭0WHgNNA`NAdNA큶NfA`NA0NAdN <C탰NBHxpC~ND <CNB)|T N>+@` -`J\HfNVN>+@` -`Ѐ/p"N$C큶Np -+@d+|d -`AdNN>+@0 -0"-d A0 C~N /-`HxN>C~N /-`N>CN -`RWHg&NNp"- A0 -Tr @0NNANpNpNpNpNpNpNpNprN <"<lN> <r$<H <r$<HNXBCHP <r$<HAk:NZ+| -(rPNNdODieses Solitaire-Spiel kennt drei verschiedene Spielarten: Englische VarianteN| -(rXNNXR Franzsische VarianteN| -(r`NNdQ Demonstrations-Modus4N|+| -(/ -xD"NNd]Ziel des Spieles ist es, durch berspringen und anschliessendes Entfernen der bersprungenen 4N| -(/ -D"NNXZKugeln, letztendlich nur noch eine Kugel auf dem Spielfeld zu behalten. Dabei darf nur in N| -(/ -D"NNXX'waagerechter' oder 'senkrechter' Richtung gesprungen werden, und nur ber jeweils eine N| -(/ -D"NNXZKugel. Als besonders gekonnt gilt es, so 'abzurumen', dass die letzte Kugel in der Kreuz-N| -(/ -D"NNXmitte zu liegen kommt.N| <r$<&<x*<N2H <r$<&<x*<N2HpKNHP <r$<HAk:NZ <r$<H <r$<&<x*<N2HpJNHP <r$<HAk:NZ <r$<&<x*<N6H <r$<&<x*<N2HpINHP <r$<HAk:NZ -(/ <r$<&<x*<N6N"NNXZDer Unterschied zwischen englischer und franzsischer Variante besteht in der unterschied-N| -(/ <r$<&<x*<N6N"NNXXlichen Anzahl der Felder und der Position des ersten freien Feldes auf dem Spieleraster.N| <r$<H <r$<&<x*<N6HpLNHP <r$<HAk:NZ <r$<H <r$<&<x*<N6HpMNHP <r$<HAk:NZ <r$<&<x*<N2N/ <r$<&<x*<N2N"NNXenglische VarianteN| <r$<&<x*<N2N/ <r$<&<x*<N2N"NNdfranzsische Variante4N| -("<@NNdCDie Demoversion zeigt eine mgliche Lsung der englischen Variante.aN| -(/ <r$<&<x*<N6N"NNXZBei der Darstellung kann zwischen rumlichen und ebenen optischen Eindruck gewhlt werden.N| -(/ <r$<&<x*<N6N"NNd/Mglich sind verschiedene Frbungen der Kugeln.cN| -(/ <r$<&<x*<N6N"NNdWDer Spielverlauf kann jederzeit durch Drcken einer beliebigen Taste angehalten werden.4N|+| -^"<N -m"<N -N&<x*<N6H <r$<L8N2N"<N -n"<N -h"<NNXzum Beenden UNDO-Taste drckenN|pN WHgN`N\ANNzNN4644654557555456525473534363757373533555153523434363636565454525375757555553313334325131313313151535363434323252525454342444-1-1-1-12951304551302951654551652952054552052952254552252952554552553319557471491520005734400061440000634880006451200065024000652800006540800065472000654080006502400061184000529920001920000192032768007691638400040960001204800004300800121504000435200012176000043648001204800004300800151200002560000102400025600001280000000000000000000000000000000000000000000000000000000000000000000000000000142434195574710000163840002457600028672000307200003174400032256000325120003264000031744000276480001792000015360007680007683276800116384000409600012048000043008001215040004352000121760000436480012048000043008001512000025600001024000256000012800000000000000310000000000000000000000000000000000010006300000000000000000000018323519557471614400063645120063650240086540800865472008655200063655280086553400865535008655353276808655355734408655355734408655355734408655280063655320063647660063637430063574710086300831008310063000800080008000800080008000800063000630006300063000800080008000630008000800080008000800080008000630006300063000630008103431361955747100000006300062000000063000620327680005734406312048006211945600216896063216768062482560048240063482000624819800240970502409649152562409681923222051614405822050032122730321232106311296327686211544163846313076819262035330819260037121409600412172048630410883481662049216204800032800819263032784491526201700014063040620000000630006200000006300062000000063000620000000630006212641371955747165024006065472006365528006265535006065535573440326553557344032655355734405865534003265535000637430086300563100320005600063000630003200063000630006200060000630006200060000320003200058000320000000630005600032000560006300063000320006300063000620006000063000620006000032000320005800032000000031111283819557471245760083174400633264000633275200633276600633276749152083273600832496008287960083000814008000800063000800080008000630006300063000630008000800080008000800080008000000080008000800063000630006300063000800080008000800080008000800000008000800080006300063049403919557471655350062655355734400655355734406365535573440626374300031006300062000000063000620000000630006200000006300062000000063000620000000630006200000006300062000000063000620000000630006200000006300062000000063000620000000630006200000006300062000000063000620000000634272940195574713264000143276600283276749152063287980063140063000630006300063000620008000800080008000800080008000800080008000800080001200080008000800080008000800063000630006300063000630006300060000800080008000800080008000800080008000800080008000153233565195574710655040076553207636553501612765535491520255655355734401023655356144001023655356451202047655356451204095655356502408191655356528068191655356540815163836553565408016383655356540820327676553565472032767655356547203276765535654720655356553565504065535655356550406553565535655040655356553565504636553565535655040655356553565504065535655356548849655356553565514327686553565535654932048065535655356551443008655356553565493215043276765535654504300832767655356549321504327676553565450430081638365535653652048016383655356519443066163836553565365204804095655356519440960409565535648531638420476553564170327682047655356280405116553560064025565535545920127655344352013165533204802176553006306547200000800000000000000000544666283973910000001638200000016383020460000824301638332768014016382065439573440630163833645155734401270824275734457344012732768163821532768286720243327681638331028672022532768824330028672022532768163826201228804813276816383600286720481491528242600573440448491521638262049152044849152163836204915204484915282433100044825472163821549152009602553616383765024044896025536824216547202016960255361638206552808184960245761638308191327683276496025472824305116144165086960255361638228636451561455960255361638312415650276145596058304824220400654154915533728496001638281280813532769337604960016383158720199915014549600824314336019991501455011216382286720100704963333728163832457604950557793372882422867201007157343896163821536001999327693686289616383158720404732769348088968243812801626349155337769601638220447652836145524013249491515116553565025646381202912341010127655356348965534121578311638215655355734432760634940616383165534040641560824300000016382097396727610238100000032000000506560000050812400000321240000050612400000508252000003224800000506248000005082480000032248000005062480000050849600000324960000050649601500050849601532768003249607327680050632767491674953648024050832767492156182456010203232767494076547912619204095506480102032711328951635216383332764801984807132831655203251549184480192080713283165008317475785048038403971327995745663489578524803840179532782240614415737648076801795327802416144757850480768017953278024157351496604807168179932780481574073280048071681799124815785450644876801799124815782450844876801799284496144032448793617992844961440506448384038473279248063488250844803968806733560224317445737622420321529934616240161294965824020466445152792240813549660124511619216507212420473280028634924830768285105060000005083102386828310039100000024800000020472121840021760401601279170436903276843680851672424813652184520485208201624161090136521845204852082016241610202827281043522409703362080158153760217651638517064672203010752027303276834133320840107520273032768361813200204800341163842116232928010240017040960105802056005120085163844136836002688016840960103245140026880168409601032451400340034021504516225700424096068010752102601044120516384218405440215146500516384218405440215146500010436806804301332500852176034120490329062047068240960424301316448191101364052048240994409600136405204824099442864027200040961164691838205376000410024096002688320020560002688320020560005376800010280002688100051401911013445001079200672100013000067210001300008450065019040423277832768034000520501001700052050100170000436900020000546000000000000010006927610138100000010220000001022512054402052040965121217602881075243688430932048107544368032215052178120642378882152516720102221505217812064237888215251672032102424301041040168961025032808555121204812064825651414254102424096041040640102820102310242409604104064010282033251212048020520645397537632268840960102603226983549610181280204805162801285340102012802048051628012853401020640102402565406743277832800320512012823278833720481174026722560269342411204301041980336134454423278921840217612150333613445442327892184021761215031681701091316426354962730410105461205652184232789320136517406273043010430401001703379127304301043040100170328222100430080028842012048000288210043008003221004300800501032768000032516384000010232409600000102312048000001023120480000010160430080000102302150400001023010752000032010752000025605376000032025600000102300000056901000731887936100000000000000000000000000000000000000000000000000000000000000016348800064480000029219520004243680000852185600010643696000213218480001704368800034121844000426436920003412184400042643692000341218440004264369200034121844000170436880002132184800010643696000852187200058437120002921952000643776000164512327676527965535614396553200000079357418379351005120000512000017920000179200001792000039680000268800005120000512000051200000000000000403206451200163763224000065534144374401655352121840036553542436960365535328212184807655354925843692076553549237218440156553557514436900156553557557218460156553557514436900156553557557218460156553557514436900156553557557218460156553557514436900765535492372184407655354925843692036553532821218480365535328104370401655342921856006553414437440016376321888004064065024163836540765535634876553407935751537929100000004092000161443491520014014336001120153603132896504384024525344409464093847104163833281601365215043276749160017064352032767573480341322016655355734606826437776553561441054612176165535614404096010922436516553563488614401365321891655356348961440109224365165535634886144013653218916553563488614401092243651655356348828672136532189165535634882867210922436516553563488122885461217616553561440122886826437776553561440409634132201665535573440375443520655355734408532355216383491520938471041638332768021324576409400633276810160016383655276553565407655340000007928762395958100014032767654720016448164481502004620032140208172080000208172080015020817208001402004620032001644816448150327676547214016448164480020046200321502081720800140208172080000208172080015020046200321401644816448032767655356553565487164481644816448164622004620046200462003220817208172081720815208172081720817208142081720817208172080020046200462004620047164481644816448164623276765535655356547216448164481644816463200462003220046200462081720800208172080020817208002081720815208172080020817208142004620032200462003216448164481644816463327676553565535654861644816448164481644820046200462004620047208172081720817208142081720817208172080020817208172081720815200462004620046200461644816448164481644832767655356553565487016448164481402004620032002081720800150208172080014020817208000020046200321501644816448140327676547200164481644815020046200321402081720800002081720800150208172080014020046200320016448164481503276765472140000058587723958581000803276765472801644816448150164622003224016465208002401646520800240164652080031016462200323101644816448311276553565535491836416448164481639278200462004616392812081720817163928120817208171639281208172081716392782004620046163926416448164481639232767655356553565487164481644816448164562004620046200462004020817208172081720808208172081720817208312081720817208172083120046200462004620063164481644816448164793276765535655356550316448164481644816479200462004620046200632081720817208172083120817208172081720831208172081720817208312004620046200462006316448164481644816456327676553565535655031644816448164481647920046200462004620063208172081720817208312081720817208172083120817208172081720831200462004620046200631644816448164481645632767655356553565480641644816448163927820046200461639281208172081716392812081720817163928120817208171639278200462004616392641644816448163921276553565535491600164481644880200462003231020817208003102081720800310208172080031020046200328016448164482403276765472240008058589719557471000003270400365528003165534006365535327680127655354915205116553557344051165535634880102365535634886320476553564512624095655356502404095655356528008191655356528038191655356528031163836553565408631638365535654086316383655356540863327676553565472633276765535654726332767655356547263327676553565472633276765535654726332767655356548863327676553565514328313276765535654932054332767655356551443071163836553565493215671638365535654504307116383655356549321567819165535654504307181916553565365205438191655356519443071204765535653652054320476553565194410231023655356485316447102365535641703283125565535628046312765535600646363655355459263156553443520633655332048063032762063000630006300063000630006300063055429819557471000003270400332824002860032132768096049152038408192025606144052602048010240102402080327681536020803276825604128327682560409602560820601281819201280819201280163840640163840640163840640163840640163840640163840800163840106327691638408520480163840106430088192021321504819201704300881920213215044096042643008409603412048061440682430081024018772048010240170640962512034131638476806826327681280136520640600640481545920126435200332829204800032762000000000000000000000000000554399195574710000032704003655280031655340063655353276801276553549152051165535573440511655356348801023655356348802019655356451204033655356502404033655356528008129655356528008163655356528001638365535654080163836553565408016383655356540803276765535654720327676553565472032767655356547203276765535654720327676553565472032767655356548803276765535655143276832767655356549320480327676553565514430081638365535654932150416383655356545043008163836553565493215048191655356545043008819165535653652048081916553565194430082047655356536520480204765535651944096010236553564853163841023655356417032768255655356280401276553560064063655355459201565534435200365533204800032762000000000000000000000000000554510019557471000320327040513366640483165510032396550532768531116553249152564156552881923236265500389125851248125184323212804300523552322744396742496633889501756169662503516447535046371675607559648621433450203646406012287589476156801638364429631046324543639916252802014765440625286327847644183193663263046471065088323257632688992032204181637140272512507412287586023281632728419836408520480245732623650024306192144679652372156010239447364010430401379149618501332156271676054362378430408141627191723720512653564735477843071150561983182612054212174823998984102362664039341316446895645906826328281322409513652078638386006463516351954592012166304352063343325204806303276203200032000510004800000005300056054441011955747100000327040035074400287686003263495327680965213491520480635157344049633163488010220266240204656317440409412565024040941791652800818040956528008184409565280016368409565408016352192765408016352765408032736259654720326401984327040225284095408961620480409557280422048040955728021204804095532004222528409561290327892432020475742920522245121023574504302916368316165321546163681561610430291636815626772154681761560842430298160156075720522816015610984302920167510292052220167508584097810080341316416100806826327682400136520120060064060154592012762243520034889320480003276200000000000000000170006200060054431021955747100050032704050365528049316553405663655353276832127655354915258511655355734432511655356348832102365535634886320474927964512624095316502463409276528062818436528060817679376528062163523270465408631635265504654086316321655203264063327076552832704633264357592163203218566165094908832272712009316320492727019069490885027270529244910451267581657349130328173264357528163412053632707654963274643040163216548832725215621635265488654504304016352326806549321536817679776545043071818443653652054281882365194430712047556536520542204749267651944102010236550564853164461023655246417032831255655106280431127655116006463636553554592631565534435203236553320480320327620490005000051000490005600032000581544110319557471000620327040633328240622860603256705327683296567044915263384567048192622575670461446351356768204863102548832102432204940128153632205148864256494099401602565241034888025663819948880128508199159841285682071599212832163991599264581641515996643216415159966432164151599664631644715998646216447159988063165101593510632830165101593585205401663815935328744304087001590349365215679212159035751443070122801588763701215678184158876545043071817615879653652051281761587965194430402016158756536520529192015872651944101151215872750916447768158726826328181287168136525664158726006432487169545925812717443520323328292048032032762063000620006300062000600003200063055431041955747100000327040633566960623060350005321847327686398109914915262469218475734403923551563488638532184563488621024887864512033452184530208632048273164256625125218453200004096887865280631356921845321286281922731490240133812184532640631638488786521662218452184524384026624354994908863218452184532576622512210926652160218452184532592632676043707655143283021845218453208520480273064369465258430711365321845649812156610922437076545043008136532184564981215677850447836545043070546121847648532048070994806364170430711365218556331720542177461183610984096098122015566611644710194915164170328302556553530036012765534600646363655255459262156553443520036536520480630327620620000000630006200000006300062052391051955747100063032704062332824060286032321327683296049152633840819262256061446354072048621142135017660211524179206320493281625662409657568256604124152462563282223012832822230128638206281286216384064631638406462163845376646017664108805184631638421824646217744436812158460163842182410632800177444368121589205121638421824106430718528108812069321566819253761704307185120206932156640960426430684096162563412054361455028868243070103017484187720540103633830170640992527655343413164167755862068263283113161944136526265655206006463482579354592621279424352060332829204806303276206200060000320003200063000620006315442106195574710005803270403233282400286063321327684996049152563840819232256061445851202048321024010243220480153658207830256324193328653302404236165241664058822230128498222301285682041212832163840645816384064321638453766432163841088064581638421824643217664436805200016384218241063276817728436802158920529163842182410643064851210880206932153681925376170430668256016597215364096042643040410863412053861683682430401044518772048010273282417064099251232704341316433768162566826328241280136523264060064584815459232126435203233282920480580327620320000000630004900056000320005805543-15! d8<(*,.*JJJJf DVv8V&&&fvbbR~ RbPbjbPbPbh0 "T& 8PJ" $ $ 8X"ZZƦ 6&$<p\D`$@hB~`"> J$>$.Xl d4B>Vtʌtj (>V>VbRDjxl2 <<&t*$V$ " "zZlZ ******************************************************************** 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. ************************************************************************