`8I p NqNuBootsector protected by Antidotepuke'(*** O /@`!O%`')+-/1 3@5`79;=?A C@E`GIKMOQ OU`WY[]_a c@e`gikmoq owy{} @` O ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @``!Aa   !Aa!#A%GIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aa١!A!Aa " B b  !"!B!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(b((((()")B)b)))))*"*B*b*****+"+B+++O /@`!O%`')+-/1 3@5`79;=?A C@E`GIKMOQ OU`WY[]_a c@e`gikmoq owy{} @` O ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠  @``!Aa   !Aa!#A%GIKMOQ!SAUaWY[]_a!cAeagikmoq!sAuawy{}!Aa!Aa!Aa!Aa!Aaǁɡ!Aa١!A!Aa " B b  !"!B!b!!!!!"!""#B"%b"'")"+"-"/#1"#3B#5b#7#9#;#=#?$A"$CB$Eb$G$I$K$M$O%Q"%SB%Ub%W%Y%[%]%_&a"&cB&eb&g&i&k&m&o'q"'sB'ub'w'y'{'}'("(B(b((((()")B)b)))))*"*B*b*****+"+B+++AUTO e!ANIMATOR l!EXAMPLES s!"HARDCOPY !SNDTRACKSND Et pASSIGN SYS t ECAD3D2 PRG 3BF2CAD3D2 RSC t CADALERTRSC t (CYBSMASHACC 7B&CYBRMATEPRG 7BΗCYBRMATEDOC Kt դDESKTOP INF /`PREVIEW EDT ]t READ_ME!DOC VCCYBERSNDPRG 3t AUTOVIEWPRG `AUTOVIEWCFG `"3 . e!.. CYBERSNDPRG 3t  GDOS PRG dp1%CUBEBONKSND Ct p`N*O*m - ЭЭм//<8?<(?<NMP Bg/?<1NAH# J@gb|gf|g:|g:|g:|gNL y N# NN/9 NuN`N `N`aN`N`Nb`# # /<?<&NN\Nu |p"| "Q |"| @0< QNu y (N y $N | |aZ`( | aL` | a>` | a0(y &y BB,|.N.<'N<4xNh/?<NNT|g,?</. JGm|o^BG`RG|l0 @"|Jpf|f809ylB@`p>0 @"|00ryl0`p>0(@0,rnop`P>aT6f0`@0&@T|`6RF|8m9np9nrB)@)@|)@)@)@x)@tJlmlBEJnm4`n  nln`n  nm0n H9P>W0@?NT0,@>0@?RWNT`z0eB)@:9@$JlmBD>?<NT`x0dB)@f9@P0G"| >?0W?<NXJnm9nJlf)|t>?PWNT80JL8N^NuNVJnm@ nn80.м @p1@r2.Ҽ"A2BW?.PWNTN^NuNVJnmH nn@0. @"|Jpg*0.м @00.м @1|pN^NuNVBn` >aLRn nmN^NuNV.?<&NTaN^NuNVa.j?<&NTN^NuH$y` yd"|t@||JPg0("(t<fҨ m>"<Rh`2<fҨn""(Rh`<fҨJn r1A0!At (g(Jh"gSh"`"(xҨlDn"D!Ax0(hg00(@02"(tҨxjp`H@|opP@0($"(|<f"Ҩ&Jh&k*mV`*nN"(*Rh$`D<f"Ҩ.Jh.k2m.`2n&"(2Rh$`<fҨ6Jh6kJk`Jnr!A| (:gBJhNgShN`6"(>kҨd!hB>m` (FҨe!hJ>n"D>!A0($h:g> (Ш|H@H@jR@hjp` |o0<@R@@0(P"(<f"ҨRJhRkVmV`VnN"(VRhP`D<f"ҨZJhZk^m.`^n&"(^RhP`<fҨbJhbkJk`Jnr!A (fg(JhngShn`"(ҨjlDn"Dj!A0(Phfg$ (ШH@hjp`<op@JhpjXSPfTBhrJhfPA|` ##j#NA\Bg/9#r?<1NAJ /ѹ#r/9#r/9#n?<?<JNA Nu o"o0/ S@QNu|sfH#&a $LNs|f 9'Ns|f < Ns/9#jNu#&NA/9&Nu#&NA/9&NuH y#&0(S@ y&"y#f!I y#.29#49# :SE6CHC26CHC8C2Qa y&!y#.L8NuH y#&0(S@ y#629#49# <SFx>9#6:SEADHC6K06JGf:6E:SEBDHC6K0QLNu"9& A P?( 1y# y#BN3# y& P0( 1_ Nu o"o$o 2/$4$Nu o$o /RCD"HA""HA""HA"2<4z04z0 $aCf0*PR jLaNu/2<BC cRC b` 0<4z0QQ&NuNVBy'3# >N(3'.'N.aH-@./9'/9'NP#''09( R@Hй'-@#'-@Bn` n!nRn0.y'm n!|.Na.!?< N(TN^NuNVH >N(3' >'?<N(T.'NN.'?<;N(TBG*y'`0-``. a`H.!ap.!af0((@()y#> )y#B)y#F9|8RG``J@gȰ|g|g`@0((@(B )y'B9|8RG``J@gd|g`|g*m fD.'N?<;N(T>' ?<N(TJL0N^NuNVH*n.aR.&N ##Ffp`0.&N##>fp` 9#>P-@ n##BB@JL N^NuNVH *n(|&#&BG`|f.< gRG| mBJL0N^NuNV.?< N(T.!d?< N(T>' ?<N(TBWN(N^NuNV#'#"&.&N ##J#f."aBW/9&?<=N(\=@.'/9#?.?<?N(PJl>?<>N(T."a4`>?<>N(TBy#aaB 9#Rй'#'-y'09( R@HЮ-@#*#*'-y*a:`&aa y*!n*09#H"9#m* y*!|09( 29'Ёй#мN^NuNVBy(By'a`: y'2y# 0m y'2y# 9nRy'`Ry(a09#H"9#mBy#N^NuNVHaJ*y'09#H-|"-|" 9o`* nHg nHgad`RRR =g  f`R =g  g -:f> alH|=@` H|=@Jnm noa`>3'T-|'` nR  g  g ;fS nBaJL N^NuNVHB y'2y#`D/< /N!P.H|Hހo .!aRy#0y#'<0m<9o09#H"9#m ."aL`V<rg<Rf y*1|`<<pg<Pf y*1|`"< o< f y*Bh` .!a "y*2Ry#JLN^NuNVaT09#H"9#l& y'2y# 9o.* a` ."^a=y'a` 09' Hй'.aTRy'a09#H"9#l y'2y# 9n y*1n09'n"y*3@N^NuNVBn y'2y# (:f .".a` 0n2y#'Ry#Rn y'2y#  o0 y'2y# .g y'2y# ;g nm`0n Rn nm y'2y#  o y'2y# ;f80nSRn0nYRn0nSRna` y'2y# .g ."^a`lRy#` 0n2y#'Ry#Rn y'2y#  o y'2y# ;f`0n Rn n madN^NuNV`Ry# y'2y#  n09#H"9#m y'2y# ;fa y'2y#  gN^NuNV`Ry# y'2y#  g09#H"9#m y'2y#  fRy# y'2y# ;faN^NuNVHy# Jy# g># /<'/<#NP*y&##&##*##.# #2##6 y#&3 # y#&>3#0`N`N`N`>#NJ@g N` y#2BP y#&1|`>#NJ@g&09#|(м(-@NN`~>#NJ@gL y#g y#&Jhg NH`N y#g y#&JhgN``H |"2<W hNy# Jy# m># /<#/<'NPJL N^NuNV y#*3# y#*>NJ@f By#` y#*>N^3#gN3# y#&JhgB@`0<"y#&JigBA`2<Ag y#&Bh `N y#20|3# y#20(|3# N y#gN y#&1y# N^NuNVHBy(*y'`*m g 0nf fB@`3#"3#$Jmg y#*>Nz3(0<`>N^J@fB@`>N(3' >'?<N(T.'NN.'?<;N(T. N2=@.'N?<;N(T>' ?<N(TJng y#20B@` 0<`JL N^NuNVH Bn`"0n#P2n#&0n no y& #P09#|(*@(Jf>?9#NT=@|mv>N(3' >'?<N(T.'NN.'?<;N(T>#N".'N?<;N(T>' ?<N(T`B0.((@(+l+l"";l&&>&/<#^/-"/-NR ` >&/<#^/-"/-NR Jg N` y#2BP y#&1| y& #&JL0N^NuNV y#o y(#nBy#JB`D.#L?<HN(T-@f".N.#L?<HN(T` .`N^NuNVH J f. /./. NP .`(n*L`(M*mT g n0Un g n0Ug>f./.BNP .``././ NP .``(M*mT g n0(mo n0Ug n0(mfB`Vf./.BNP .`6`././ NP .`B/./ NP .`JL0N^NuNVH 0.|((@(*y'`*m0Tf=m=mBB-@)@B#L=|`p0. Hй'.Nn.&N -@BW/9&?<=N(\=@Jno .?<HN(T-@fnJf>?<>N(T`.`J.N|)@"9y#J&>&/<#^/,"/,NR >?<>N(T``4./.?.?<?N(P./.NjX.N4Jf-n././.NP-@Jf.?<IN(T` .-@)@-n>?<>N(Tn0.no.N|)@"9y#J&>&/<#^/,"/,NR JL0N^NuNV n=h6 n=h8 n=h4 n=hR n=h:0.nn|H@=@0.nn=@=n0.|H@=@0.=@0.=@0.no0.@=@` 0.@=@0.nn@n|H@=@0.nn@|=@0.@|=@0.@n|H@=@0.=@0.=@0.ްno =n`=n0.no0.|=@`0.|=@0.no0.@=@` 0.@=@0.nH"9#Lo20.nH##L/</9#LN rP3#JN^NuNVH<.|0(м( @1|BG`(0(*@(0-n f Jf ||m0(м( @1n 0`JL N^NuNVH *n(n g+LT)nT ЬD)@D ЬH)@H ЬL)@LJL0N^NuNVH*n09#|(м(-@ n&h̷f 0<`B`(K&lTJTgTf fB@`'mTT.?<IN(T0<`JL8N^NuNVH>.BFJy(g `|0(м( @Pf`&`|0( @"|(Jpg|m|m B@`` 0|`JLN^NuNVH09#|(*@(+y#F+y#> +y#B y#*:;y#09(|;@;y#;y#;y# ;y#";y#$ yd#f;y#` ;y#JL N^NuNVH>#NJ@gnNN09#|(*@(09#`2 mf.#>?<IN(TBm`Bm``|gʰ|eg`JL N^NuNVH>.JGm |oB@`JGf`Bn0.(м( @JPo0.(м( @ P mn nm nn0.(*@(`0|(*@(JmfB@`X3#3#3#3# # #>##B##F3#"3#$3#0<`JL N^NuNV>#NJ@f y#&Bh `-y'` n-hJg n0"y#*2AfJf y#&Bh `x3##By( y#*>N^3#gBN3#g, y#*3#N y#gN`By# y#&1y# N^NuNVH09#|(&@(>?9#NT|f:*k`(mT.?<IN(T*L fJ"g."?<IN(TBJL8N^NuNVH>.Bn*|(`n0.(*@(Uf# #>##B##FJL N^Nu o?</?<=NAPOJ@k3&#&a&?9&?<>NAXO Nu/9&/<??<?NA f^ y& h`fNavJgD/?<HNA\O#&g0aakaDka 9&Nu/9&?<INA\OBNupNu y&"h (`QNu y&&h(h& \g דB@g<f`ד`Nu&y&(h*y&&-֭/ /?9&?<?NA fz -?<?9&/?<BNA k//<?9&?<?NA J@g>Nu @"y&$y&!i!iм!@!j Ш !@!jШ!@!j  <Щ!@ !i$$!i,,Nu <ШШШ NuNVH*nBW/ ?<GN(\Jf\BJL N^NuNVH*n>/N(-@.&?<N(TBW/ ?<NN(\=@.?<N(TJnf 9&``BJL N^NuNVH?BCB..,. f#* <`hlDRCJlDRCn8fzB`0l :HGH`xe`Jge`|fD#* D`#* JLN^NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^Nu ATARI GDOS RELEASE 1.1 not installed Insufficient memory Corrupted driver file ATARI GDOS RELEASE 1.1 resident Illegal workstation ID in ASSIGN.SYS Partial record found in ASSIGN.SYS Drive specification not allowed in ASSIGN.SYS Invalid file name encountered in ASSIGN.SYS Attempt to read ASSIGN.SYS failed PATHpathASSIGN.SYSdewx .#T  6  *  B  2    $ 0 8  "  >        H         0F  4                *    8         4R`0.      &   *rR( B   h2 $    "& ( "$"6 , 0f  . l!.. ANIMATE2PRG t *README DOC t `"f*O.|+*m - ЭЭм// ??<JNA N/<NA"/0<NBNu#'NA/9'NuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^NuNVH?BCB..,. f#' <`hlDRCJlDRCn8fzB`0l :HGH`xe`Jge`|fD#' D`#' JLN^NuNVH# `ByB GJPf Ю`P09@HЮ ep`6 Ю2y "Ry n"G00R@Hހ`JLN^NuNVHN.v/<&NX.vaTJ@g63$6.vaBW/<w?<=N4\3VJyVm>N43BW/<?<GN4\.&/<aX./</</<Nx 3BG`0G0RG| m32./</<N!ZPBG`$0G/?N3>N#/</<NP# Jy$6f.$?<N"T>N!0N/</<,NP#.?<HN4Tмx#.?<HN4T# 9й#JmfByaJy$6g.$8?<NTa>P/<?9Va\>@/<>aX3>/<aX34>/<aX36JymJy4mJy6la` .>/<aX./<adX`<.?<NT.BgNTBW?9N!TaJ@m bBy$4Jyf~./<Xa4X.XaBW/<X?<=N4\3B##JymBy#.d/<?9?<?N4P.8/< ?9?<?N4P.'/<}?9?<?N4P##>?<>N4T`L.>/<XaZX.Xa.&/<XaX./<Xa X.XaBW/<X?<=N4\3Jym.d/<?9?<?N4P.8/< ?9?<?N4P.'/<}?9?<?N4P#>?<>N4T.>/<Xa zX.Xa .&/<Xa .X./<Xa X.Xa BW/<X?<=N4\3Jym3#/</9}NP#/</9}NP#/</9}NP# 9м}#.d/<?9?<?N4P.8/< ?9?<?N4P./<}?9?<?N4P#>?<>N4T }f }g@aBW?9N!T.%?<N"T>N!0Jy$6f `rBW/<?<=N4\3Jyl4aBW?9N!T.$?<N"TJy$6f `"Ry yf##B./9?9?<?N4P#\>?<>N4T 9\f4aBW?9N!T.$X?<N"TJy$6f`z 9\ѹ./9aX#" "f4aBW?9N!T.$X?<N"TJy$6f~` 9"# 9й# 9ѹ 9BW?9N!TJy$6gR 9yg 9Yg>/<a X3>/<a X34.?</<a \3633Jym4Jy4m,Jy6m$ ymJymJym y oa `l 9fg 9FfBy$4`& 9rg 9Rf 3$4`a @`* 9bg 9Bf 3$2`$ 9ng 9NfBy$2`a `p y@R@3$.`".$?<N"T|g\3'Jyf4a BW?9N!T.%?<N"TJy$6fz`>N!0#~###By'>d/9/9?<N .8?<NTJy$2g\.NJyg&.N./9?<N\` >/9/9?<N `Z. NJyg&.N./9 ?<N\` >/9 /9 ?<N ByX.'/9 NtXJyg./9NtX3NJfJy$2g0. /9NtXJyg./9NtXJy$0g2> N4J@g$>N4# 9఼&fBy$0Jy$0f> N4J@f 9఼9 f 9఼9 g>N4# 9఼9 f> N4Jg>N4# 9఼&f 3$0`v 9఼ag 9఼0Bg 9఼0bf\py$23$2Jy$2fBJyg./9 ?<N\` >/9 /9 ?<N ` 9఼!Fg 9఼!ffBpy$43$4Jy$4f*Jyf"3RyX09XymByX`\ 9఼bfNJyg./9BgN\adJy$6g JyVmBy$6>V?<>N4T`^BG`(0G"|% 0f0@R@3$.`RG| mJy$2g<##~#~###Jyg09Xyl\ y`2yX./9 NDXRyXJyg( y`2yX./9NDXRyX`PJy$4gBy09S@3X`|ByX.'/9 NtXJyg./9NtX y'gSyJyn&Jyg./9BgN\a``JyXmZJyg( y`2yX./9NDXSyX y`2yX./9 NDXSyX`R3ByX y'gxSyJyn&Jyg./9BgN\a`*`@Jy'f3$.'Jy$2gj. /9NtXJyg../9NtX./9?<N\` >/9/9?<N `Jo.?<IN4TJy$6gJyVm>V?<>N4TNJyg./9BgN\>N!0.?<NTa>N NJLN^NuNV09|A>:?./<@a*X.&/<>aX./</<>NDP3>N!0>//<aX.a 9:f$9H|3./<a`X`./<aNX./<aXB@``pN^NuNV`R nJf n H"nR RJ@fN^NuNV n H"nR RJ@fN^NuNVHBG`RG nHRJf0JLN^NuNVH.a>`0G \gSGJGl0GB(JLN^NuNV>/9/9?<N N^NuNVH.af<>YG`0G .gRGFm.&0HЮ/aXJLN^NuNVHBG.U/<?.?<?N4PgBW?.B?<BN4P`.H``(nmp`V0G RG``| gް| g` . f0G B. a. a3JygfBypJLN^NuNVH09R@yn`BG |2y ,g |2yJf0GBRyJGg&p`40G2yRyRGn o.&/.aXpJLN^NuNV09R@yo nBPp`8.?. /. <29HЁ/a =@30.N^NuNVH nJfp`HBE<B9B=|BG` n0pH``` 9,gJ9gnfp` .2F 2RF=|BE0E-H`J9g 9,gp`=|`dz/< /.NZP"n1pH|HЁ-@ nJlp`t`"p`l``| |b@0@& PN0GRG.adGnJEgnmp`$ .2F 2RFJFfp` n0pJLN^NuNVa|.?<NTN^NuNVaB9./<&aX.&/<&aXBW?9N!T.&?<N"TN^NuNVH.aHЮ @(< g < g< f.axHЮ @B(`JLN^NuNV yf=|@=|`*BW/?9N"^T>?9N `T./</</<0.??9N>?9N"T.&0.Z??.?9N \>?9N"^T./</</<0.??9N.'0.x??.?9N \>?9N"^T./</</<0. ??9N.' 0.??.?9N \N^Nu o0<BBBBBBBBS@fNu/<?<&NN\Nu#p@# pNu/<?<&NN\Nu#@pNuH'Jy'gSy'L'N/ o "oB20TJAf&Nu40&0 \SAf&Nu o"o0<""""""""""""""""S@fNu/<?<&NN\Nu 9^Nu/B@090N^NuNV##f##0###> aF30pN^NuNV>a*pN^NuNV3# >4NDN^NuNV## >ZND n02B@090N^NuNV>MND n02 n 04 n06 n08B@090N^NuNV3# >NNDN^NuNV## >xNDN^NuNV3 3kBy33N n 08 n0: n0< n0>09N^NuNV3 3 By33N09N^NuNV3eByBy3NN^NuNV3 3  Bn nH|2n2RRnJ@f33Sn33NN^NuNV3{ByBy3NN^NuNV## .мZ#3dBy3  n 3N n 0###8#N^NuNV3 3zBy33NN^NuNV3 3 3'By33N n0 n0N^NuNV3 3By33N09N^NuNV3 3jBy33N09N^Nu Pppwwp[1][ | Not enough RAM to animate! | ][ SORRY ][1][ | Can't find that file! | ][ Try Again ][3][ | More file sections? | ][ No | Yes ][1][ Delta Player by Tom Hudson|Funkeys: Speed Space: Pause| Help: New file Undo: Quit| F: Fwd/Rev B: Buffer on/off| Version 1.0][ OK ][1][ | Invalid/missing first frame! | ][ SORRY ][1][ | No frames in animation! | ][ SORRY ]Copyright 1987 Tom HudsonDCBA@?>=<; Vvvvvvvvvvv[1][Bad Parameter string:| \L_R_*.DLT.PI?][ SORRY ]CAD-3D/CybermateAnimatorLoading....vf 0                                                                                               :<\   (.: "NZ   `(     * n2*  &  $          \ ANIMATE2.PRG (6/87) (c) 1987 by Tom Hudson Program & Documentation by Tom Hudson ANIMATE2.PRG is the second generation animation display program for THE CYBER STUDIO. This program will display delta-file animations, created with the CYBERMATE Record function of CAD-3D 2.0, in two modes: Batch and manual. Animations can be run in sequence from a hard disk and/or floppy drives in batch modes, with chained animation files easily accomodated. MANUAL MODE The manual mode is invoked by simply double-clicking on the ANIMATE2.PRG icon. The program will display credits followed by a file selector. Select the delta file you want to run (it can be either stereo or monoscopic). The program will load the delta file and its associated .PI1 file (L_ and R_ versions, if the animation is in stereo). It will ask if you have more delta file sections (this will only happen if you chained the animation), click on the appropriate button. If there are more delta files, the file selector will reappear, and you must select the name of the chained delta file. After all delta files are loaded, the program will start animation. BATCH MODE The animator program will run in a batch mode for continuous demonstrations of animations. This is done through the use of a run control file, which has the extension .RUN. To work properly, the ANIMATE2.PRG program must be installed via the "Install application" selection on the desktop. Install ANIMATE2.PRG as a GEM application with document type RUN. To execute the animator in batch mode, just double-click on the appropriate .RUN file. The .RUN file format is discussed below. KEYBOARD COMMANDS Once you have an animation sequence running, the following keys are operational: F1-F10 -- Control the speed of the animation from slow (F1) to fast (F10). Default speed is F6. Help -- Aborts the animation and displays the file selector for a new animation in both batch and manual modes. Changes to manual mode if running in batch mode. Undo -- Quits the program, returning to the desktop. F -- Toggles the animation direction from forward-only to a forward-reverse ping-pong effect. Default is forward-only. B -- Toggles from single-buffer to double-buffer mode. Double-buffering usually runs slower but can result in a cleaner image in complex animations. Space bar -- Pauses and single-steps the animation. Press any other key to resume normal operation. Alt-L -- Locks the keyboard to prevent tampering during demonstrations, no keys will have any effect. Press Alt-L again to unlock the keyboard. .RUN FILE FORMAT The .RUN file is a simple text file, which can be created with any text editor or 1st Word. Each line has the following format: PATH,FILE,MORE[,FWDBAK,BUFFER,SPEED,TIMES] PATH -- Drive and path of animation delta file, may be upper or lower case. Example: A:\ANIMATIONS\ FILE -- Filename of animation delta file, in upper or lower case. Example: CARGO.DLT MORE -- Indicates whether or not there are more delta files to be chained to this one. Enter Y if there are more, or N if there are not. May be upper or lower case. If the Y is entered, the next line contains the filename of the next delta file in the chain, and the extra parameters on this line are not used. Any number of files may be chained. FWDBAK -- Indicates whether the animation should be run forward only (F) or forward/reverse (R). May be upper or lower case. Not used if the file has more delta files chained to it. BUFFER -- Indicates whether the animation should be run with double-buffering (B) or non-double-buffered (N). Upper or lower case. SPEED -- Indicates the speed at which the animation should be run. Values range from 0-9, corresponding to function keys F1-F10. TIMES -- The number of times the animation is to be run before going to the next animation. In forward/reverse mode, this is the number of complete forward/reverse cycles; in forward mode, it is the number of normal animation cycles. A value of 9999 indicates to run the animation forever, until HELP or UNDO is pressed. Example batch files: b:\,cargo.dlt,n,f,n,8,9999 Runs the CARGO animation forward without double-buffering at speed 8 forever. c:\animate\,hollow.dlt,y c:\animate\,hollowb.dlt,n,f,b,9,9999 Runs the two-part HOLLOW animation (HOLLOW.DLT and HOLLOWB.DLT, in the ANIMATE folder on drive c:) forward at speed 9 double-buffered forever. a:\,bounce.dlt,n,r,b,7,20 b:\,atari.dlt,y b:\,atarib.dlt,n,f,n,9,25 Runs the BOUNCE animation from drive A: 20 times in forward/reverse mode at speed 7 with double-buffering, then runs the two-part ATARI animation (ATARI.DLT and ATARIB.DLT) from drive B: 25 times at speed 9 forward without double-buffering. When the ATARI animation is complete, operation resumes with BOUNCE again and continues until HELP or UNDO is pressed. . s!".. CUBELOGODLT 7t #CUBELOGOPI1 =t S"}CUBEBONKSND Ct spSNDTRACKSND Et tpSAMPLE CYB Gt uxCUBEBALL3D2 t CUBEROOM3D2 t 70787@7H7P77@7@777 7~888 8 8h8l8@8@888 8~88899 9 @9$P9(9,90 98~9@9D9P999@9P999 9~999:H :L :`@:dP:h:l:p :x~::::: ;@;P;; ; ;~; ;$;0;; ;@;P;;;;~;<(<, <@@> > > > @>$P>(>,>0>8><>P>>> > >>>>>??H?L?P ?T ?d?h?l?x?|????? ? @@@ @@@0?@`@`@ @ @@@@@@?A(A,`A0 A4 ADAHALA\Ap?AA`A A AAAAB?Bh@ Bl`Bp Bt BBBBB?C@ C `CC$C(C,C<CP?@C C CCCCC@CDH DL DPDdDhDlD?@DDDEEE E0?@EEEEE?@77777888h 8l 88888 8 9 9  9(9,909P 9T 9 9 9999 9 :H@@:L@:h:l:p: : :::;; ;;0 ;4 ;;;;;;;; ; <( <, <0<4>>(>,>0><>P >T >>>>>>>?H?L?P?T?h?l?p?|? ? ????@ @ @@ @@@0 @4 @@@@@ @ @@@@@ @ A(A,A0A4A@ AD AHALAPA\Ap At AAAAA A AAAABBB B Bh@Bl@BpBtB BBBBBBB B C@C @C C C(C,C0C@CDCP CT C@@CCCC C CCCCCCC C DHDLDPDTDhDlDpD|DDD D D D DDEE EEE E$E0 E4 EEEEEEEEE E F\70747H@@7L@7 7 7 7 7@7@778p 8t 8@8@88889 9 9 @9$@9(9,9@9D9@@9@9 9 9`9`9999:H@@:L@:P :T :``:d`:h:l::: : ::;`;`;; ; ;$;  ; ;;;`;`;;<0<4<@@>> @>$@>(>,>>>@>@?P?T?` ?d ?h?l??? ? ??@@@@ @``@`@@@@A(``A,`A0A4AHALAȀ``A`AAAABBBh`Bl`BpBtBBBC`C `C C$ C(C,C<CCCCC C CCCCCCDHDLDPDTDhDlD|DDDDDEE EE E$E4EEEEEԀFPF`FhFpFt`7( 7,70~74787<7@7D7H??7L?777770 70888 8 8p8t8880 8088808099 999(9,900 9409@9D9P09T09999999999999090:H:L:`:d:h:l:p:t:::0:0: 0:0;;;; ;;; ;$;00;40; 0;0;;;;;;;;;0;0<(> > >(>,>0>4>@>D>P >T >> > >@>@>>>>> > ?H?P ?T ?` ?d ?p0 ?t0???? ? @@@@ @$@ 0@0@ @ @@@@A( 0A,0A0 A4 APATA`AdA 0A0A A AABBBhBlBpBt BBCpC C0C4CCC C CCDHDLDPDTDpDtDDDDDDEEE E$E E EEEEEF8F@FD F`Fdq7(07,07074787<7@7D7H7L77@7 7 7؀7܀7@7@777 7 778888 8h8l8p 8t 8x8|8@8@888  8 88808099 9 9 999 @9$@9(9,90  94 989<9P9T9@H989 9 999@9H99999999:H08:L8:P :T :X:\:`@:dH:h:l:p:t:x:|::::: : ::;@;H;; ;;;;0;4;;; ; ;;;@;H;;;;;;;<(<,<0 <4 <8<<<@@> > > >>> @>$@>(>,>0>4>8><>H>>> > >>>@>H>>>>>>?H?L?P ?T ?X?\?`@?dH?h?l?p?x?|?? ? ?p?? ? ??@P@X@@ @@@@ @$@(@0 @4 @@@ @ @@@@@H@@@@@@@@A(A,A0 A4 A8A<A@@ADHAHALAPA`AdAhAAAA A؀A܀A`A HAAABBBBhBlBpBtBxB|B@BXBBBBBBBC~`~C CCCC PC$XC(C,C0C4C@CDCHC~@~HCCCC@CHCCCCCCCDH~~DLDPDTD`@DdHDhDlDpD|DDDD@DDDDE@E@EE EEE E$E(E0@EEEEE@E@EEEEEEEE@F@@FD@FHFLFPFTF\F`FdFhFp@FGG d666?6667( 7, 70@747@7D7HAA7LA777 7 7 7777778h 8l`8p 8t 8x 888``8`8888888??8?99 (9 9 9 9$9(9,90``94`989<9H 9L 9P? 9T 9~9999 99999pp9p999 9 9? 9 :Hpp:P:T:X :`:d:h:l:p``:t`:x:|: : :? : :pp:: : : ;; ;``;`;;;( ;, ;0? ;4 ;~~;; ; ;0; ;;;``;`;;; ; ;? ; <(<0 <4 <@@>>> @>$H>(>,>0``>4`><>H >L >P? @>T >>>>>@>@>>>``>`>> > >? @> ?H~|~?L|?P?T?`?d?h?l?p@@?t@?|? ? ?? @? ?~p~t???@@ @ @ @@( @, @0?@@pt@@@@@@00@0@@ @ @? @@ A(tA,A0A@ADAHALAP00AT0AXA\Ah Al Ap@AAAAAAA00A0AAB B B@Bhp|BltBpB0BBBB B BBB B B@C`C C(C,C0 C4 C8C<CH CL CP@C@CCCC 0C0CCC C C_@C@DH@DLDXD\DhDlDp Dt DxD|D D DD@D`DDDEE E E EEE( E, E0E4@EEEEE E EEE E EFHFLFP0 FT0FXF\Fh Fl FpF F FFGG G GG??5555556 6 666@66??6?7(7,707478@7<7@7D7H7L7P7T77 777@7 7`7`h77778h8l8p8t8x@8|888@8@88888?8?9@@9 999@99 9$9(9,989<9@9H9P@?9T?9@9L999@9999999999@@:H@:LL:P:T:X@:\:`:d:h:l:p00:t0:x:|:::@@:@8:@:@:;;;; ; ; ;;; ;(;0@@;@@;;@ ;;;;;; ; ;;;;;@@<(@@<,<8@ <<<@@@> >@ >> >$>(>,>0 >4 >8><>@>H>>@@>>@ >>>>>>>>?H|@~?L?X@ ?\?`?d?h?l?p?t?x?|???@??@ ?@@@@ @H@@H@@@ @(@<@@@@ @@@@@@xp@x@@@@A(L@A,A8@@ A<A@AD8AHALAPxpATxAXA\A`AhAp At Ap@:AAAA@@ A@AAAAAppApAABBB B Bh0@HBlBx@@B|@BBBBBp@B0pBBBBB B C`@`C CC@@C@C C$C(C,C0@`C4 `C8C<C@CHCP CT C CC@@C@C C $CCC@`C `CCCCC C DH?DLDPDTDhDlDp@@Dt@DxD|DDD``D DDDEE E@@E@EEE E(E0``E4 EEEE@@E@EEEEE``E`FHFLFP@@FT@FXF\F`FhFp``Ft`F@@F@FFGGG``G GGGG G@@HPS55555 5 666 6` 6`667(B7,7087478` 7<`7@7D7H7L777` 7`?77777778h 8l8x` 8|`888 8899 9` 9`9 9$ 9(9,90 94989@9D9H9L9P?9T?999` 9`99 99 9999:H:L:X` :\`:d:l:pH @:tH:x:::` :`;; ;H @;H;; ;4;; ; ;88;8 ;;H @;H;;;<,<8 << <@0 >>> > >$>0 >4>8><>L@>P@@>T>>?>>>> > >>> >>>>@>@@>?H?L?P?T?X ?\ ?`?d?h?l?p ?x?|?@?@@?????? ? @@@@ @ @@@@,@@0@@@< @@ @@ @ @@@@@ @@@@@@@A(< A,A0A4A8 A< A@8AD8AHALAP AXA\Al@Ap@@A %AA AA A A8A8AAA AAAB @B@@Bh( +BlBpBtBx B| B8BBBB BBBB@B@@C C CCC XC$XC(C,C0 C4C8C<CL@CP@@CCC@C@CCC CCCC@C@@DHDPD`@Dd@DhDlDp Dt (DxD|DDPDDE@EHEE E EE E(E,PE@EPEEE E E EEPEF8F@FD`FHFLFP FX F\ FhFlPFtF F F F GG PGG G G@GHT5H|5L5P5T5X5\5 55555666666666 6 7(a7,7074787<7@7D7H7L@7P7T7777Ԁ777777@7778h8l8p8t8x8|888@8 @8@@889? 9 99999 9$9094989<9D9L9 9F9999999999999999??9:H :L&:P :T :X:\:`:d:h:l:p:t:x:|: :`:@?:: :: : ::;;;; ;;;;;( ;,`;0@@;4; ;; ; ;P ;P;;;;;;;;; ;`;@@;<( <,<0 <4 <8P < ?> > > >p >p> >$>,@>0>4>8 >< >@ >H >L >P>T> >> > >p >p>>>@>>>>> > > >>?H ?L?P ?T ?Xp ?\p?`N?dL?p?t?x ?| ? ? ? ???0?? ? ? ?P@F@D@ @@@ @ @ @( @, @0@4@@@@ @ @P@F@D@@ @ @ @ @ @A(A,A0A4 A8 A<A@FADDALAXA\A` Ah Al ApAAAAԀA AAZADAAAB B B BBhBlBp Bt BxB|BV~BFDBBBBBBB B B BCC CCC C C ~C$FC(C,@C00C8C<C@ CH CL CPCCdCCC|<C|<CC@CCC C C C C CDHDLxDPDTD`x8Ddx8Dl@Dp Dt DxD|D D DDDEp0Ep8EEEEE E,E0E` E`0EEE EEЀFXF\F` FlFpFFG G GGGG GGH8H<H@??HHHLHPHI4 4 4444445H| 5L5P5T5X5\55 55(5(6666 6 6a 66(6(6 66 6 7(7,70`74`78(7<(7H7L7@7D7`7`7( 7(77778h8li8p`8t8x( 8|(888@8@@8~99 a999( 9(9 19$190@94989<99999( 9(999A999:H:LP:P:T:X( :\(:`:d:pA:t::?:::::::::( :(;;; A@;@; ;(;,;0;4;;;;;(;(;;9; AP;P;; ;;;Ѐ~;<(<,<0<4<8(<<(<@<> Y>`>> > > >$>(>,>0A@>4@@>H@>L>P>>Y>`>> > >>ă>>@>A>>@@>@>>?H?LY?Pa?T?X ?\?`?d?h?l?pA?t?x?|?@@?@????^??`??@@@@ @A@@@@ @@@(@@,@0@@@@a@`@@@@@@@A@@@@@@@@@@Ѐ@A(A,@A0AA4@A8(A<A@ADAHALAPAATAXA\A`@@Ah@AlApAtA A`AAAAAAAAAAAAAB@@B@B BBBh Bl0BpBtBBBBBAB BBB@@B@BBBCC CCCCC @C$@C(C,C0AC4@C8C<C@@@CH@CLCPCTCCC|CC C C@C@CCCAC@CCC@@CC@CCCDPDTDXD\D`@Dd@DhDlDpADt@DxD|D@@DDPDDDE@E@EE EAEEEE @@E$E(`E0E4E@E@EEEAEEEE@@EE@EEFHFLFPAFTFX F\ F`A@FdFhFpFtFAFF F GA@GGGG~GG G(GA@GGGH8 H<(H@A@HDHH HL HTHH0H~HHHHHI~IIIIJ(J0J4JJ223h3l3p03t3x@3|@44 _444444848445H5P5T 5X5\5``5d`5555<556666  6666|666 6667(7,:7074787<7@7D7L 77<7777777 778h8l8p8t`8x8|8888@8 8 $89 9 99999 9$9(9,90@@94@989 9<999999ġ999Ѐ999:H :L<:P:T:X:\:`:d:h:l:p:t:x:?:: :<::::;;;; ;;;; ??;(;,;;=;;;;;;;;;;;;??;;;@;;<(<,6<0<4<8<<<@Ń=p=tl=x=|=== = ======@=@==>> >>>l>>> Ń>$ŀ>(>, >0>4>8 ><>@>D>H>P>T>>?>݀>>>>>>>>Ѐ>> >>>>>>?H?L??P?T?Xtz?\?`?d?h?l ?p?t?x  ????????8???t?@@@@ @@@  @ @$@(@,@0@4@@8@@@@@@@@@@@ @@@@@@A(A,8A0A4A8@A<A@ADAHALAPATAXA\A`AdAhAlApAtAAAAԀA@AAA AAAAABBBB BBBhBlBpBBB BBBBBBBBBCCCCC @C$@C(C, C0C4C8C@CDCHCLCPCTCCCCC@C@CC CЀ䀀CC>C CCCCCCD`@Dd@DhDlDpDtDx> >`c>> ?>> H`>$H>, >0>4>8><>@>D>H>L>P>T>>>`>>8<>x>`>>> 0>00>>>>>>>>?H?L?P`?T?XHI?\?` ?d?h?l?p<?t?x?|?????????`??xy?@  @ @@ @@:@:@ @$@(@,@0@4@@@`@@zq@@``@`@@@ @ @:@:@@@@@@A(A,A0pA4A8A@@@AD@AH ALAPATAX;A\:A`AdAhAlApAtAxAAظA܈AAAAAA#A"BBBB BBBp?BtBxB|BBBBB ,B,BBBBBBCC(C,C0C4C800aC<`C@CDCHCLCPCTCCCC C CCC00AC@CCCCCCDXD`DdDhDl DpDtDx00D|DDDDDDDE`E`EE E8@E@@E00EE E$E(E,E0E4EEEEE00EEEEEEEFPFTFX  F\F`FdFh FlFpFtFF F 0 FGGG G GGGGG`0aGGGG@GGGH0H4H8` aH<H@HDHHHL HPHTH``aHHHHHHHIx``aI|IIIIIIJ~JJ J$J(J,J0J4JJJJJJK`KdKhKlKpKt8LL LL8LL88L8MLMP00MT0MM M 2//0P0T0?00011c1112(2,2024282<8222`22?2?3h3l3p`3t3x<83|334?844e4<844 p?4$?48440?44<4q445Hx5L5P0?5T5X,=5\5`885d85h5l5x550@055,<56 886866 6x660@866,06666 x x6 xp7(x7,700@@874@78,07<7@7Da7H7L7x77`87ԑ7,07ܱ77$778hx8l8pa8t8x,08|8X8(X88889x9 98A99,099 X9$,X9(9,90@@94@@9x99'a99,0999/9 9 9Ё99:Hx:L:P8~:T:X,0:\:`:d :h  :l  :p :t:x:|:x::<:9:,0:;88; 8;  ; ; @ @; @;;;x;;?;9;,0;;; ;; ;;;;<(8<,<0?<49<8$0<<<@?> >>>'80>8> |>$H|>(>,>0>4>800><>@>D>H>L>?>>>><<8>0>>J>>>>>00>>>>>>>>?H??L?P?T?X00h?\`?`?dO?h?l ?p@@?t@@?x  ?|??>?????????`@@@@@ @@@``@@ @$>@( @, @0@4@@@@@@@@ @hh@j@``@@@4@|@|@@A0A8A<A@ AD@ AHAL APATAX`aA\A`Ad4AhAlApAtAAApABBA@@A  A A  AA`aABB4BB BBBxBB@B99B 80B BB`aBBB4BBBBCC C$FC(C,C0 C4C8@AC<C@CD4CHCLCPCTCCxCxCCC CC`CCC4CCCCDXD`pDdpDhDlDpDtDx`D|DD4DDDDEEE E@@E@@EEE E$4E(E,E0E4EEEEEEEEE4EEEEFHFP FT FXF\F`FdtFhFlFpFtFF F F?11q1q112(20 24 28p27H7L778787 7w7 7778h8p8t8x 8|8:888pp8pH999999 99 :9$9(9,90@8@894@8<999999 999999Ѐ||9Ԁ||:H:P8:T::X:\:`2 :d:h:l:p:t:|::<:?::;;;FF; @;;?;;;>;>;;(;;;;;?;;|<(<0?<4?<8F<>>?>8> ^>$$^>(>0>4<>8>< >D>>>8>>'>>>><>> >0> 0?P?X?\??`?d ?h?l?p||?t<||?x?|?0?0???@:@0@@ @@?@0@@ 0@$0@( @, @@@0 @BB@@@@?@0@@0@0@|@|A8A@AD0AHALAPAT?AX0A\A`0Ad0AhAlApAtAAA0AAA A A0AB0B0BB BBBxBB0BBB B B8BB0B0BBBBCC C$8C(C,C0 C4 C88C<C@0CD0CHpCL|sCPCTCCC  C CCC0C0CpC|sCCDhBBDl@Dp Dt Dx D| D0D0DpD|sDDEE E  E| xE E E 0E$0E(pE,~qE<<EE E EEE0E0EpE~qFHFPFTFXF\ F`pFd〃pFh`Fl?~aFFFF8J>J J$J(J,?JJ>0J>JJJȀJ?KPKX~pK\~K`KdKhKl?KpKtKKKpLLLL ?LLLLLLL>L8LM<M@MDMHML>MPMT8MMMMM>MM0NN8NN>NN O(O,>O0OO>OOPhPl>QQ ?QQ?RHRL-8 -<--.p .t.x.|/w/x//?/ /$/?///`//0P|0T0X0\0`p0d0|000q111>{11w11120x3t3x3|q3|3334>x444q4 4$4( 4,4>|444q4`44pPP4P5P>|5T5X5\15`|5d5h5l5>x555066 6 6 6>x66606{x6 6>670>?74787<p7@87D7H7L7?8t8x8|08888 8 @9;99909 9$9(90``94`9999099 9:P:T:Xx:\w0:`:d:h:l:p:t: ::x:w1;;;; ;;;;;;x;; ;;;;;";o<0<4<8|<x8~>> \Nï>$>(>,>0c>4p>8><>?>>>> >>>>>?> ?X?`?d?h ?l?p?t?x?|????@~@@@ @@@@?@ @$@@@@@@@@?9?@@A8A@ADAHAL ATAXA\?9A`AdAAAAA AAABBBB BxBBB0B BBBB~BBBBC C(C, C0C4C8@@C<~C@CDCHpCLpCCCCC|C@@C CCCpCpD`DhDlDpDt Dx@@D|DDDpDpEE E EEE E$E(pE,ppE EEE??EEEpE̟ppFH FP FTFXF\F`FdFh`Flp`F FF!FFGGG`G p`G GGGGGGGGpH( H088H4H888H<8H@HDHHHLpHHxxHH8HH@HHpIpxxItI|?8IIII?JppJJ@@J>8J J$J(J,?JppJJ@@J>0JJJJ?KPKTK\>pK`>KdKhKl?KKKK>pLLLL ?L??LL>LLLL?M<?M@MD MHML?MPMTM?MMMM?MMN|>NN8NN?NNO>O$O(?O,??O0O4OOOO?PdPh>Pl?QQQ ?QQQ?RDRHRLRRSST$T,++,,-8-<-D---.p.t.x.|?..///8// /$h/?/=///G 0P|0T0X?0\o0`0d7 0|00>01p1 1x11811x1 20p2428?2<s2@x2D2H`2L2x22?2s2x2#2 23px3t3x?3|s3x|333?4x44?4s4 x4$4(4,4|4474s4gx44ȏ45P|5T5X75\35`{x5d5h5l5p5t5x557536{x66<6 666x66?636{x66?666708747877<s7@{x7D7H7Lp7P7T7877?77{x7778p88t8x8|8{x88888989999 {xp9$9(9,9089499999{x9Á99́>9< 9 :P:T:X:\3:`{x:dC:h:l:p: :::2;8;;;?<; ;;;<;8;;;?>;;;;<8<<?<@8@>?> 8>$>(>,>0e>4e>8><>;8q>>ȏ>́?>{>x=>>À?`98`?d?h?l??pG?t;?x?|@98@@@ /@@;@A@?@98@@@@@{@I@@A@>?ADAH?>ALAPATAXIA\AdAAA?>AAAA0h0ABBBBaB!B00BBC(ϏC,C0bC4"C8C<C@CDCȏϏCCaCeCC܀CCCCDhDlDp`Dt`DxD|DDDDEE EEEE.E <E$E,pEEEEEEEE ÈpFHFLFPFTFX F\F`Fd8FlpFFF?FF FGG?G pGGGG>GGGG?GpH(H,H0H4 <H8H<H@HD?HLpHHH|HHHH?HpIpIt{IxI|II?IJJJJJ J$?J,JJJJJJ?JKPKTKXK\K`Kd?߿KlKKKKLL??L L?LLLLL??LM8M<M@MD??MLMMMMMNxN|NNNNOOO CO$O(O,OOOOOOPXP\P`Pd?PhPlPPQQQQ ?QQ?QQR@RD?RHxRLxRR >$|>(c>,l>0?>4>>8><>>|>c>l> >ԋ>>?`?d|?hl?ll?pC?t?x?||@@|@l@ l@@@@~@@~@cl@ @@|@@xAHclAL APATfAXA\>AclA AA AA?BclB BOB0xBBC(clC, C0LC41C8C<Cs|C CCԁCCܟDhDlDpDtDxD|EE `E#EEE E <E$<EE`E#E9EE@EE FHFL`FPF#FT9!FXF\F`Fd8FF`F>CF1cF!FGG?GG`G|#GsGGGG?H(H0|#H4H8H<H@HD?H|ccHHH HH?IpItgIxI|II?JJgJJJ J$?JJ>JJJJ?KHKPKT<KXK\K`Kd?@KKK<KKLL?LL}LLLL?M0M4M8M<M@MD?MMMM8MMNpNtNxN|8NNOOOOO CO$OOOOOOPPPTPXP\P`Pd?PPPPQQQQ QQQ Q?QQR8R<R@RD?RHxRLxRRRR}0l011>>111>>282@2H2L22226?23x3333 44 4$4(4,44444x4Ѐ5X5`5d5h@5l5p@@5t56666 66666 6787@7DG7H7L7P7T7777777888889 9$9(9,909499#9@@999:`:d#:h :l:p|:t;;;; ;;;;;;;;<@ >$>(c>,>0>4?>>>cc>>>?`?d?h##?l?p?t3?x?|@ @@@ @@@@@@@@@@AH??AL?APATAXA\A??A?AAAAB??B?BBBBC(>>C,?C0C4C8C<C = =C?CПC|CCDh??DlDpDt|DxD|E??E ECEEEE??EECE8@E@E@FH>>FLFP?8FT8QPFXF\F>>F>F?0F0YXFFGGGpGpGGH(H,H0pH4pH8H<HHH`HHHIhIlIpItIxI|JJ JJJJ?JJJJJJ?KH KLKPKTKXK\KKKKKLLCLL@M0M4?M8M<MM?MMNpNt?NxN|78OO?OOOOOOPPPTPXP\PPPPQQpQQQR0R4R8sR<R@RDRRR?RRRSpStSxS|0SS?TTT?T T$TTT?TTUTUXU\U`UdUU ,,-@-D-H-L----.?./ ?/(/,?/0/4/>/Ȁ/̀//@0`<0d0h>0l0p 0t 1?1>111?1>11x182@?2H>2P@2?2622@x3?3>33`x4 ?4(?40 x44@4?444ЀX4 5`?5h?5p05t6?6?6 666?66667@7H7L7P7T77778889 9(90|99999:`:h@:l:p :t ;;`; ; ;;_;;;(_~>,>0 >4>X~>>>?h?X?`?l?p?t@\`@ @@@`@@@AH?OALAP|?AT!A?OAA|=A3 B8HBB^_B?C(9IC,C0C4C*JCCCԟDh(HDlDpDtE,OE EE|E OEEE>@FH FLFPpFTNFMMFMFFxGttG GG`H(H,H0H4 HHHЁH0H܀IhIl IpItI|JJ JJJJJJJJKH KL KPKTKK KK?LL LL?L@M(M,M0M4?M<MMMM?MNhNpNt?N|OOO?OOOOOPHPPPTPPPQQQQQR(R0R4R8R<RRRRSpStSxS|TTTTUTU\/(/,?/0/4///@0h0p 0t 111111F12H2P@2T22@2@333ᠸ`3 4(4,40 44444Ѐ@Y4@@ 5h5l5p@q5t@66 6@6@66@6@7H7L7P`7T`7~7~7@"7`888@8`9(90@94@999:h:l?:p:t ;; @;,;0/;;?;p;s(X>,>0t>4t>W>>з >H?h_?l?pO?tHH@S@@ @w@@@AH ALAP!AT "A AAABBBcC(C,C0sC4CCCCDhDlDpDtEE  EEE3E EEFH3FL FPFTFsF FǀF@@GsG GG``H(;H,H0H4 H;HHЁH00Ih3Il ?IpItJJ  ?JJJJ J`J KH KL KP`KT_KK KKLL LM(M,M0M4MMMMԀNhOOOOPHPPPTPPPQQR(R01>A1?2P2T22@2@333`3 4(4,40@ 44@444Ѐ@4Ԁ\5h5l5pF>5tF66 69b6b66 Xƾ6 Z7H7P xø7T x777X!7?x88889(90x94^@9 99>9:h:p<:t;x; ;';';X;;;(x >, >0t>4>i>>Ѐ>?h`?l?pX?t@@@l@ @@ <@ @@|@AHAL1APpAT ,A A! AxAB<B&B`BC C(|(ih>,">0>4>>>@>?h'?l' ?p` @@ 3 @@@@3 @@rA@ADAHaALPAPATnAAqyA!~AABB$B!$B`pBC C$C($DC,@$?C0``C4CCC%!CC@D`DdDh%!DlDt@EEE%'E EE``EEE#!E`EE F@FDFH<>FLFPFT FFF<>FGGGGH H(H,xfHHH`I`IhIl`JJJ JJ JK@KHKL`KK@`7Pd7T77898990'94# 99:p~:t ;; ;W;?@;;; ( >,&>0' f@>49@d>X@>>@> ?hnB?l ?p?t@@ 0@D@`@<@ %@P@lA@ADAHg/ALaAPAT`AA؇ApAA BBBC$C(C,cCCC@CЀCDdDhDlDpDtEE E EE߀E`FDFHFLFFFGGGGH(H,x19h9:p:t;;$;>>; (>,>0`I@>4|> <> |>OG?h6(>,>0>4E>>e>0>@?h?lX&?p?t`@@ f@@D"AHAL>>>Ѐ 0@P`sw ~  ~  ~ @@ ~  ~  ~  ~  ~         ??  ??  ??  ??  ??  ??@  ??@  ??@  ?@ ?? ?? ??d$)33-U@g7B[B[/zffZfT pǰq{ Ǯh \ Simple Sequence Procedure : LOGO 30 cubelogo rate \ update every 30 ticks cubelogo show1 \ show the starting frame zero-clock \ reset CYBERTIME tick \ start of loop cubelogo update \ show next frame @ rate tock \ end of loop cubelogo reset \ reset the sequence restore \ stop and wait for a key ; \ [NOTE: CHECK OUT SCREEN #29 FOR AUTOMATIC LOADING OF \ OBJECTS (EXCEPT IMAGE OBJECTS)] \ SIMPLE SEQ-LOOP \ IMPORTANT! Type: 5 20 SETUP-LOOP from interpreter mode \ BEFORE defining CUBELOGO as a SEQ-LOOP object. \ notice: following not in a procedure; executed upon 2 LOAD! 20 cubelogo rate 10 cubelogo repeat : ALOOP zero-clock \ reset the clock cubelogo show1 \ show the initial screen image tick \ begin loop cubelogo update \ update frame @ rate tock \ end loop cubelogo reset \ reset the sequence restore \ wait for key and go back to interpreter ; \ LINK TWO SEQUENCES \ cubelogo is SEQ-LOOP as in Screen #2; cubeball is sequence : TWO-SEQS 10 cubelogo rate 5 cubelogo repeat \ setup 20 cubeball rate zero-clock cubelogo show1 \ reset clock, show 1st screen tick \ begin loop #1 cubelogo update \ update sequence #1 tock \ end loop #1 zero-clock cubeball show1 \ reset clock, show 2nd screen tick \ begin loop #2 cubeball update \ update sequence #2 tock \ end loop #2 cubelogo reset cubeball reset \ reset both sequences restore \ wait for key & return ; \ STANDARD DISSOLVE FROM ONE IMAGE TO ANOTHER \ PIC1 and PIC2 are just generic IMAGE OBJECTS you define \ you can use CLONE-AS for this (as in CUBEBALL CLONE-AS PIC1) : do-dissolve \ set pic1 to just a straight copy ['] copy pic1 image-mode \ set pic2 to dissolve into pic1 ['] dissolve pic2 image-mode pic1 show1 \ show the first image pic2 show2 \ dissolve into the second restore \ wait for key and return to interpreter ; \ PLAY 2 SEQUENCES BACK TO BACK. DISSOLVE BETWEEN \ (sequence objects: cubelogo & cubeball) : movie1 ['] dissolve cubeball image-mode ['] dissolve cubelogo image-mode cubeball show1 \ dissolve into the opening scene zero-clock tick cubeball update tock cubelogo show2 \ dissolve in next object zero-clock tick cubelogo update tock cubelogo reset cubeball reset restore ; \ DOUBLE SEQUENCES -- using two sequence on screen at once. \ Next line is immediate mode; entered when screen is LOADed 40 cubeball rate 15 cubelogo rate \ cubeball runs slower... : DOUBLE cubeball show1 \ show the first image cubelogo show2 \ merge in the 2nd image zero-clock \ reset the clock tick \ begin loop cubelogo update \ update #1 @ its rate cubeball update \ update #2 @ its rate tock \ end loop cubeball reset cubelogo reset \ reset both of 'em restore \ wait for keypress & return ; \ Delayed CUBELOGO using REVEAL \ CUBEBALL & CUBELOGO are SEQUENCE OBJECTS \ introduces REVEAL & words within words \ DELAY is the workhorse here: it does a setup, then \ calls RUN-CUBES... : RESET-CUBES cubeball reset cubelogo reset ; : RUN-CUBES cubeball show1 zero-clock tick cubelogo reveal cubelogo update cubeball update tock reset-cubes restore ; : DELAY cubeball #frames 0 30 cubeball setup cubeball #frames 500 40 cubelogo setup run-cubes ; \ BLANK SCREEN \ this screen intentionally left blank for the user \ SOUND (basically the same as screen #7, except with sound) \ tell soundtrack when to play... 450 430 410 400 sndtrack snd-array : RESET-CUBES cubeball reset cubelogo reset ; : RUN-CUBES cubeball show1 zero-clock tick sndtrack play cubelogo reveal cubelogo update cubeball update tock reset-cubes sndtrack reset restore ; : DELAY cubeball #frames 0 30 cubeball setup cubeball #frames 500 40 cubelogo setup run-cubes ; \ CUBEBALL: THE MOVIE (Screen #2 AUTOCUBE.CYB) \ note: this code is spread out and commented on next screens : SETUP-CUBES cubeball #frames 0 30 cubeball setup cubelogo #frames 0 40 cubelogo setup 0 sndtrack snd-array 0 sndtrack priority 10 sndtrack volume 810 cubink start 900 cubink stop 200 cubink pitch 1100 500 cubebonk snd-array ; : RESET-CUBES cubeball reset cubelogo reset cubebonk reset cubink reset sndtrack reset ; \ : REPLAY ." Press [Return] to replay, others quit. " \ Key 13 = if 3 load else bye then ; : CUBES setup-cubes cubeball show1 cubelogo show2 zero-clock tick sndtrack play cubebonk play cubink play cubelogo update cubeball update tock reset-cubes restore ; \ SETUP-CUBES This screen and screens 12 & 13 are all \ commented source code for screen 10. \ DO NOT ATTEMPT TO LOAD SCREENS #11-#13! \ (cubeball and cubelogo are both sequence objects) \ This procedure does all the basic setup for the sequence : SETUP-CUBES cubeball #frames 0 30 cubeball setup \ show all, rate=30 cubelogo #frames 0 40 cubelogo setup \ show all, rate=40 0 sndtrack snd-array \ start sndtrack at time 0 0 sndtrack priority \ allow other sounds to play over 10 sndtrack volume \ with a volume of 10 810 cubink start \ start bink at time 810 900 cubink stop \ stop bink at time 900 200 cubink pitch \ set the pitch of the bink 1100 500 cubebonk snd-array \ bonk at time = 1100 & 500 ; \ RESET-CUBES, REPLAY commented code (see original in screen 10)\ This just does a wholesale reset of all the objects. \ Placing all this in one procedure (word) makes it painless. : RESET-CUBES cubeball reset \ reset the sequences cubelogo reset cubebonk reset \ reset the sounds cubink reset sndtrack reset ; : REPLAY \ (See RUNTIME Appendix for use of this Procedure) ". Press [return] to replay, others quit. " \ prompt key \ waits for keypress 13 = if 3 load \ if return is pressed load screen #3 else bye then \ any other key exits to gem ; \ CUBES commented source code \ (see original on screen 10) : CUBES setup-cubes \ preset all the values (screen 11) cubeball show1 cubelogo show2 \ show both images... zero-clock \ clear the clock tick \ start loop sndtrack play \ wait for and play sndtrack cubebonk play \ wait for and play cubebonks cubink play \ wait for and play cubinks cubelogo update \ update cubelogo @ rate cubeball update \ update cubeball @ rate tock \ end loop reset-cubes \ wholesale object reset (screen 12) replay \ wait for key and replay or exit (screen 12) ; \ TICK/TOCK loop nested in a "DO-LOOP". Shows sequence 4 times.\ Note that M-DOUBLE is same as previously defined DOUBLE \ with RESTORE removed. (see screen 6 for commented code) \ DO and LOOP are standard Forth words : M-DOUBLE cubeball show1 cubelogo show2 zero-clock tick cubelogo update cubeball update tock cubeball reset cubelogo reset ; : MULTI-RUN 4 0 do \ begin (loop four times 0-4) M-DOUBLE \ do the animation loop \ end restore \ wait for a key and then go back ; \ SLOW DISSOLVE/FADE \ -- dissolves from pic1 to pic2, but creates an \ intermediate stage where both images are on the \ screen : slow-dissolve ['] copy pic1 image-mode pic1 show1 \ show the first image ['] xor-dissolve pic2 image-mode pic2 show2 \ merge the second image ['] xor-dissolve pic1 image-mode pic1 show2 \ remove the 1st image with XOR! restore ; \ GENERIC MERGES \ MERGE TWO IMAGES THEN DISPLAY THE RESULT : merge-show \ Copy first image to second image pic1 image-data pic2 image-data xor-copy pic2 show1 ; \ SHOW A MERGED IMAGE THEN DISSOLVE ONE IMAGE OUT : two-to-one merge-show \ merge and show the result ['] xor-dissolve pic1 image-mode pic1 show2 \ dissolve out first image restore ; \ DISSOLVE A PICTURE OUT OF MISHMASH... A NEAT EFFECT \ the more pics, the better... (next screen also) : set-mish \ Set up by creating a composite frame with XOR'ed images pic2 image-data pic1 image-data xor-copy pic3 image-data pic1 image-data xor-copy pic4 image-data pic1 image-data xor-copy pic5 image-data pic1 image-data xor-copy \ Set individual images to xor-dissolve for removal... ['] xor-dissolve pic2 image-mode ['] xor-dissolve pic3 image-mode ['] xor-dissolve pic4 image-mode ['] xor-dissolve pic5 image-mode ; \ (see next screen...) -->\ cont'd from previous screen : do-mash pic1 show1 \ show the mished frame \ Dissolve out a frame at a time pic2 show2 pic3 show2 pic4 show2 pic5 show2 \ which leaves pic1 as it was originally ; : mishmash \ this is the workhorse; run this baby set-mish do-mash restore ; \ SIMPLE STEREO DISSOLVE \ Enable stereo just ONCE before running stereo samples. \ From immediate mode, type: ENABLE-STEREO. \ spic1 & spic2 are two sets of STEREO-IMAGE objects. : dissolve-3d stereo on \ go into stereo mode ['] dissolve spic2 image-mode \ set show mode to dissolve spic1 show1 \ show the starting picture key drop \ wait for key press before continuing spic2 show2 \ and dissolve into the second restore \ wait for keypress and return ; \ DISSOLVE FROM MONO TO STEREO \ (Requires stereo to be enabled: ENABLE-STEREO \ spic1 = stereo picture (STEREO-IMAGE type object) : mono-stereo stereo on 0 setrez \ do a manual show1: set resolution to low spic1 set-palette \ set color palette \ ** copy right eye image to both buffers ** spic1 image-data gem-screen copy spic1 image-data stereo-buff copy key drop \ wait for keypress before dissolve spic1 l_data stereo-buff dissolve \ dissolve to left eye key drop \ wait for keypress before leaving restore ; \ AUTOLOAD CUBES (Screen #1 AUTOCUBE.CYB) SEQUENCE CUBEBALL .( cubeball loaded ) SEQUENCE CUBELOGO .( cubelogo loaded ) SOUND CUBEBONK .( cubebonk loaded ) SOUND SNDTRACK .( sndtrack loaded ) CUBEBONK CLONE-AS CUBINK .( cubink cloned ) =@?#!2CSd$5Wwcu09d I Idd I Id cu19_dddd cu29_d++dd++d cu39_dccddccd cu49_d?d?d?d? cu59_FK\K` cu69_ q4\F4+X cu79_3d`5|j3%jS cu89_Y'!CRC` cu99_D' X, 4 cu10_"**" cu11___4#p;>KO<#] cu12___kh77@@7pkgfH@ sq1___3hVD@D3y[fy sq2___`tP`j5>EjY sq3___U44sKU"Y{6S cu13___qd,fU(9M\f| cu14___~DwRF1{T+ cu15___rHx:te $Z>U cu16___!tYt* cu17___[tE}gJ|)f>/ cu18___`?y#-#E;c<| cu19___Yu@Y! cu*__e   e e e =@?#!2CSd$5Wwroom60$$$$$$$$$6$$06660006\0\$\$\\\\\\\\\\\\$\$\$\$\$$\$6\$\\\\\$\0\6\6\6\\\\0\0\0\\\\71%%%%%%%%%7%%17771117,1,%,%,,,,,,,,,,,,%,%,%,%,%%,%7,%,,,,,%,1,7,7,7,,,,1,1,1,,,,71%%%%%%%%%7%%17771117;1;%;%;;;;;;;;;;;;%;%;%;%;%%;%7;%;;;;;%;1;7;7;7;;;;1;1;1;;;;$   ' %!!" #$#"&'%&!% '$"+()(D))DL+)*34543254HH4OIM==6I=>776=CJEE<CC<;;BC/-,01//.0/,.:9A8?99?@A9@B;AA;:7>??87LFKJKFONGNMGGMIOGHFLDJFE((+DD($))L$**)++* 335  223  442  55H  'OO4 %==M%!II6>>=667"JJC<<E;;<CCB,,---/ //1  11000...,99:889@@?AA@BBA::;??>778#$LLK#"#KKJ"'&NNO'&%MMN&!GGI! HHGFFDEEFQPSQlPtlQRQS]\[Z[\p\]w\peuqq^e_fee^_mrkkdmcdkkjcTUWWYXXVWVTWiabag`hgahaiicjbcigf__`gsntnsrovwouvquopowltnmnr{xyxyy{yz}|~|~SPxx{SPlxPtQyytQRzzyQRS{{zR][][Z[Z\Zp]p\w\ueu^q^efe_^_krkmdmdcdjkjUT||}UWU}}WYWYXYXVX~VTV~~|Tbaba`aghghihijicbcfgf`_`stsrsrwvwvuvqoqopolnlnmn. !.. HARDCOPYPRG t MMETA SYS t hHARDCOPYTXT t HARDCOPYRSC t FX80 SYS t `:p , *O.|Ax*m - ЭЭм// ??<JNA NL/<NA"/0<NBNu#=pNA/9=pNuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^NuNVH?BCB..,. f#=t <`hlDRCJlDRCn8fzB`0l :HGH`xe`Jge`|fD#=t D`#=t JLN^NuNVHN1.G|/<G/<G/<GN4 >N0L|AG:GBW/<G?<GN0L\./9HN4X.GBgN4TBW?9D~N:TByG`.G/<G/<G/<G/<B/<BBgBg/<H,BgBgBgBgBgBgBgBgBgBg?<?<?<?<N2F83B9Bg` y H,fV>?9H2/9HN5*\ yH2fav`. yH2fa` yH2fa ` yH2fa NJyGg*BW/9HN4XN6>D~N6N24BWN0\JLN^NuNV.Ha >H|?9D?9E?9D?<Bg/9HN5TBW/9HN3$X|3H~>?9H~/9Ha \a N^NuNVH yH4f .G/<D*a ,X.G?9GzBgBgN"\ yBW?9GN9T>?9GN9T>?9GN:6T>?9GN6XT.G?<N4Ta.D/<?9HGN6>GN6a`J9Df(>GN6>GN6aaFJ@n`b.H/<?9H?9GN:6T>?9GN6XT.G?<N4Ta@BW?9GN9LTBW?9GN9T>?9GN9T.D/<?9HGN6>GN6ah`J9Df*>GN6>GN6a@aJ@n`.H/<?9H?9GN9T>?9GN:6T>?9GN6XT.G?<N4TaP>?9GN9LT.D/<?9HGN6>GN6a` J9Df*>GN6>GN6apa J@n`.H/<?9HD ?<a2T`` yG~fa(J@mBW?9GN9T>?9GN9T>?9GN:6T>?9GN6XT.G?<N4Ta R>?9GN9LT.D/<?9HJ9Dl(3GT>GN6>GN6a`J9Df*>GN6>GN6ara J@n`.H/<?9HD ?<a6Ta` yGN7.GBgN4T>HN0LT`.;?<N3T` yH4f3GJLN^NuNVBW?9?9?9?9H|?9D?9E?9DBgBgBgBgBgN3FN^NuNV>H|?9D?9E?9DBgBgBgBg?<N3FN^NuNV>Bg?9H|?9D?9E?9DBg?. /.N5N^NuNV n2. 00 N^NuNV`R nJf n H"nR RJ@fN^NuNV n H"nR RJ@fN^NuNVHBG`RG nHRJf0JLN^NuNVH.a>`0G \gSGJGl0GB(JLN^NuNVJyFf/9H 0.H/N,HX/N-`P/N,X=@/9H0. H/N,HX/N-`P/N,X=@/9H 0. H/N,HX/N-`P/N,X=@/9H0.H/N,HX/N-`P/N,X=@`/9H 09Gn H/N,HX/N-`P/N,X=@/9H0.H/N,HX/N-`P/N,X=@/9H 09GnH/N,HX/N-`P/N,X=@/9H0. H/N,HX/N-`P/N,X=@.Q?<?9GN8XN^NuNV9Hf yE?9D?9H?9Ha\9Hf yE?9D?9H?9Hat\9Hf yE?9D?9H?9Ha\N^NuNV09HjyHnf09HlyHpg09HjyHrf09HlyHtg09HnyHrf09HpyHtg.///?9Hp?9Hn?9Hl?9HjN"=@Jy%8g$=n=n=n=n=n=n.///?9Ht?9Hr?9Hp?9HnN"=@Jy%8g$=n=n=n=n=n=n.///?9Hx?9Hv?9Ht?9HrN"=@Jy%8g$=n=n=n=n=n=np=@=@=@JyHjm$09HjyGznJyHlm09HlyGoBnJyHnm$09HnyGznJyHpm09HpyGoBnJyHrm$09HryGznJyHtm09HtyGoBnByHByGJnff0yHG0RyH0yHG0RyH0yHG0RyH0yHG0RyHTyGJnf0.nf0.nfJng60yHG0RyH0yHG0RyHRyG0yHG0RyH0yHG0RyHRyGJnf0.nf0.ްnfJng60yHG0RyH0yHG0RyHRyG0yHG0RyH0yHG0RyHRyGBWBgaTJ@gBW?GBgafTJ@g>Bg?9GBga\>G?9GzaG??9GzBg?9Gza2\JyGgLJno$>0. @Hм%:/?9GN9\`BW?9GN9LT>G/<GaXN^NuNVBn.G/<G/<G/<G/<G/<GBg?</<H,BgBgBgBgBgBgBgBgBgBg?G?9GzBg?9Gza \>GBg?9G?9Gza\BWBg?9GBga\`jB@=@=@=@=@09Gz=@=@09G=@=@>?9GN9LT>/<'?9GN9\>/aJXN^NuNV> ?.?9Hp?9Hn?9Hl?9Hja =@> ?.?9Ht?9Hr?9Hp?9HnaT =@> ?.?9Hx?9Hv?9Ht?9Hra( =@0.nf0.nfp`B@N^NuNV0. n=@0.n =@0.n=@0.n =@0n/0n/NZP-@0n/0n/NZP-@ .-@.aN^NuNVJop` Jlp`B@N^NuNVHB@=@=@BF>z`^Jn m*0F"|G00n f0R@=@0.@=@`8`(0E"|G00nf0R@=@0.@=@`RGTFTEyGm0.yGlD>9GG`40GRHG2GSIG00GG2GUIG0UGnnRyG0nG00nRHG0 JLN^NuNVHBF>z`JyFf/9H n2F00H/N,HX/N-`P/N,X?0F0/9H n2E00H/N,HX/N-`P/N,X?0E0`/9H 09G2E2AH/N,HX/N-`P/N,X=@/9H n2F00H/N,HX/N-`P/N,X=@0F00E0RGTFTEn m.?. ?9GN7:XJLN^NuNV yGN7N^NuNV3CHz3CF3CGR3CGV yG|f$09HzH3Hz09FH3F0yGR/0yHz/NZP#D0yGV/0yF/NZP#Hf 9DHfoByF09GzH/N,HX/09HzH/N,HX/N,(P#H 09GH/N,HX/09FH/N,HX/N,(P#H/9HfN,HX//9DN,HX/N,(P#G //a. o0 o 0 o$0 o(0LNuL@pNuL@pNuHpBy%8M2pnoPnoXnlTnlRrnoPnoXnlTnlRgf|?l|o|?l|o|?l||ot|?ll|odDg4EgfJgg4.E6D6EB:.`Fg4.D6E6DB8.`$g4.E6D6EB:.`g4.D6E6DB8.`JgFGA3%8g4.E6D6EB:.`g4.D6E6DB8.`g4.E6D6EB:.`fg^4.D6E6DB8.`Bnmnnnmnn`&:.`:.`>.`>.` nmnnnmnn`8.`8.`<.`<.`""""""""""""""""33333333̈33̈33̈33̈33̈33""̈33""̈33""̈33""33""33""33""33""333333333333333333333333333333333333333333333333NVJl .D-@0."n ` 0."n Bn=|=|-|B@`p/./.NP-@0.nl .H|02n Rn/./.NZP/ .-@RnSn/< /.NP-@ nm0n BRnN^NuNV>/< ?<-?</<<0n/a . ?<-?</<Bg?<N0 Bg?<N0 Bg?<N0k^g>k^g2k8<d,&B<ރeNuRid~S<Nu.NuJNu:ڼ.gNugRghEDvi^E]HE:BB8HD&HC؃HF&؃BDHDHGHFHEބj ޼gNuSiex@ބއdRgNu~NujJ<Numc68343 floating point firmware (c) copyright 1981 by motorola inc.#A|NN/9A|Nu#A|NM/9A|Nu#A|NA/9A|Nu?/?<LNANu#HA"<ApsNBNu0/2/ҀgV 4<eHA4<|cRBA`B6<c4BfSB2C|gAC8be0Nu4`6`0Nur0/jDA4/BjDADB/&HCCjDCCBmA&Nu0/@kR@`S@@Nu0/@R@@Nu#H"Nu#H&Nu o H&NuNV3G0.|Hм:p-@=|` nH2nG2RRn nm.GN>B@09GN^NuNV#GD#FD#GD#GD#H>D"#HD&#DG> aF3GHpN^NuNV>a*pN^NuNV3G3 G3 G3G3G3G3G3G3G3G3G3G3 G3"G#$H>3(G3*G>N1h n,0G n00G n40G n80G n<0G n@0GB@09GN^NuNV#H>3 G>2N1hN^NuNV3G3 G3 G3G3G3G3G3G3G>3N1hN^NuNV3G# H>>4N1hN^NuNV#H>>6N1h n 0G n0G n0G n0GB@09GN^NuNV#H># HB>ZN1h n0GB@09GN^NuNV>MN1h n0G n 0G n0G n0GB@09GN^NuNV3G# H>>NN1hN^NuNV>ON1h n0G n 0G n0G n0GN^NuNV#H>3 G>N1hN^NuNV#H>3 G3G>N1hN^NuNV#H>3 G3G>!N1hN^NuNV#H>3 G3G3G3G3G3G>*N1hN^NuNV#H>3 G3G3G3G3G3G3G3G>/N1hN^NuNV#H>>nN1hN^NuNV>oN1hN^NuNV3G3 G>pN1h n HB@09GN^NuNV3 A3 HByH3H3H N0h09BN^NuNV3HByHByH3H N0hN^NuNV3HByHByH3H N0hN^NuNV3eHByHByH3H N0hN^NuNV3HByHByH3H N0hN^NuNV# A3 H3 HByH3H N0h#DAN^NuNV-|A n H"n2R TJ@f3HByH .AHS@3H3dH3H N0hN^NuNV#A#A .мZ#A3dHByH3 H n 3H N0h n 0H #AA#BA#EA#DAN^NuNV#A#A .мZ#A3HByH3 HN0h n 0H #AA#BA#EA#DAN^NuNV# A3H3 HByH3H N0h#DAN^NuNV3 A3HByH3H3H N0h09BN^NuNV3 A3HByH3H3H N0h09BN^NuNV3 A3hHByH3H3H N0h09BN^NuNV# A3pHByH0.@3H3H N0h#AAN^NuNV3 A3zHByH3H3H N0hN^NuNV3 A3HByH3H3H N0h09BN^Nu [1][ |Can't open data file!| ][ Sorry ][1][ |Bad image file!| ][ Sorry ][1][ |GDOS not present!| ][ Sorry ][1][ |Cannot open device!| ][ Sorry ][3][ |Are you sure you want|to stop printing?| ][OK|Cancel]Copyright 1987 Tom Hudson\hardcopy.rsc*.**.GEM [3][Your printer is not ready to|receive data. Ready the|printer before retrying.][ Retry | Cancel ] _crystal>_trapJldivlmulZ_ctrl_cn:p_cantope;_badfile;_no_GDOS<_cno_dri<:_abortch<`_device<_lineopt<_dev_id<_bakcol<_mainL_strcat|_strcpy_checkde_checkfi^_checkdvv_checkop_fm_set_srcoff(_fm_unse_trunnam_get_siz_opn_outF_init_fr_cls_out_key_chk_do_outl_draw_fa6_itmstatd_strlen_doline0_intri_insert_do_area_normalX_sgn_GD_test"z_pclip"_myclip"_clip2d"_swapped%8_filpat%:_liset':_prt_f(_lprint(_prt_i(._prt_l(`_prt_h)8_ftoa)fpadd+_fpadd+fpcmp, _fpcmp, fpdiv,(_fpdiv,(_fpltof,H_fpftol,fpmul-`_fpmul-`fpmult-`_fpmult-`fpneg-_fpneg-fpsub-_fpsub-ffpcmp-ffptst-ffpabs-ffpneg-ffpadd-ffpsub-ffpdiv.ffpmul2/bffpcpyrt@/_gemdos0L_bios0<_xbios0,_gsx10h_gsx20h_i_ptr1H_i_ptr21R_iioffA_iooffA_m_lptr21\_mul_div1_SMUL_DI0_vec_len0~_MUL_DIV1_pioffA_pooffA_umul_di14__exit0\_vdi0h_crys_if1h_appl_in1_appl_ex24_evnt_mu2F_form_do3$_form_di3F_form_al3_form_ce3_fsel_in4 _graf_ha4@_graf_mo4_graf_mk4_menu_ba4_menu_ic5_menu_tn5*_objc_dr5T_objc_ch5_rsrc_lo5_rsrc_fr6_rsrc_ga6$_vswr_mo6X_v_updwk6_v_clrwk6_v_clsvw6_v_clswk7_v_filla7:_vm_file7x_v_opnvw7_v_opnwk8^_v_pline8_vsf_col9_vsf_int9L_vsf_per9_vsf_udp9_v_show_:_vsl_col:6_intinA_eventB_mousexB_mouseyB_intoutB_l_outC_fcolD _txwD_cD_filepatD*_gr_1Dz_gr_2D|_handleD~_gr_3D_gr_4D_formxD_formwD_dummyD_metapatD_txD_ptsinD_l_intinE_formyE_tyE_ptsoutE_flopF_yheightF_globalF_vertsG_paspG _seqpathG_dum1GN_xaspectGR_eofGT_yaspectGV_plotpalGX_redGx_maxxGz_testmodG|_plotmodG~_maxyG_fOKG_breturnG_fbuttonG_polybufG_controlG_int_inG_int_outG_quitG_bstateG_bluG_dumG_fresultG_grnG_ad_cG_kstateG_kreturnG_bcountG_outhanG_abouaddH_baraddrH_plotrezH_xmfacH _ymfacH_gl_apidH_contrlH_mgbufH,_fhandleH<_addr_inH>_briteHF_tyhHf_coordHj_xwidthHz_formhH|_exitixH~_filenamH_polyctH_fxH_addr_ouH_fyH_colorH.vf            *                                                  &                         &                   *LL:        (    (    $    *    " *pd**   &     :                   <\6&.   8HT0: :   $                $     `|HH AC4""""" A P2("20(jB@` @o0<1@ Aj1|` Ao1| y8" y<"N y4CH 1Y y8 y< LNuNV y4=P y4Bh y4BhJno n(l0n"|Z pN`(ndJnm n l0n"| pNN^NuNVN^NuNV y8Jhg y8 hf y80(`B@3 y83 y83 y83 y83 y83  y83  y83 y83 y8332Bn`Rn |V2n"|r4nf.VNfJ@fBy2`a | y41| y41|-Bn`0n@2n0Rn n-mBn`0nD2n0Rn n mN^NuNVNJyf .VNBy2N^NuNV y4 h f& y41| y@0 y@1|` y4 hb fpNd./<0NXBn` N2nXI2n<1QRn nmNd./<0NXN`x y4 hc f y8JPm y8 Poa `Nd./<0NX y8JPf y8=h y8=h`2Bn`$ N2n 2nRI81QRn nmNd./<0NXN3` y4 hd f$Bn`Rn y40(no" y82n00"N4n@|.f N2n|.Rn N2n|GRn N2n|ERn N2n|MRn N2nB(=y=y0.NfJ@f 3`Jng2=y3N.VN330Bn`Rn |V2n"N4nfa.`x y4 h g8 y4 h g* y4 h g y4 h m> y4 h n0 y4 h n y4p1@"y43@aR3N^NuNV y40HdH@Y@=@ y4Bh y41|a y41| y80"y@22n23N^NuNV y4Bh y41|a y41|Bn`0n@2n80Rn nm3N^NuNV y41| y4Bha\ y41| y<0"yD23 yDBh3N^NuNV y41| y4Bha y41| yDBP y<0("yD3@33N^NuNV y4Bh y41|a y41| y80"y@23 y80("y@3@33N^NuNV y4Bh y41|aH y41| y80"y@23 y80("y@3@33N^NuNV y41| y4Bha y<3 y<3 y<0(R@3 y<0(R@3 y41| yD0 yD1y yD1y yD1y3N^NuNV y4Bh y41|a6 y80S@@H 33 y80@H 33 y41| y41| yD0 yD1y yD1y yD1y y@"y803N^NuNV y41| y41|al y83P y<3R y<3T y<3V y<3X3N^NuNV y41| y@0 y@p1@"y@3@"y@3@N^NuNV y41|- y41| y8JPf\Bn`0n@2n0Rn n-mBn`0nD2n0Rn n m`Bn`0n@2n*0Rn nm=|`0n@BPRn n-mBn`0nD2nR0Rn nm=|`0nDBPRn n mN^NuNV y41| y41| y@0 y@1y y@1y yD0 yDBhN^NuNV y41| y41| y@0 y@1y y@1y yDBP yD1yN^NuNV y41| y41| y@0 y@1y y@1y y@1y y@1y y@1y yD0 yD1y yD1y yD1yN^NuNV y41| y@0 y@1y y@1y y@1y y@1yN^NuNV y4>N y4>N y4>N y4> N y4JhoNr y4JhoNDN^NuNV y40 y80a8 y40 y80a y40 y<0a y40 y80a y40l y8p1@"y82aB y40 y80a y40 y<1y$a y40 y80ax y40 y8BPab y40 y80aH y40 y80a. y40' y8p1@"y82a y40j y8BPa y40k y80 a y40 y80a y40 y80a y40 y80a y40h y80axByN^NuJy2fpNu# WBg/?<NA By0NuJy2fNuJy0fNu#?<ANATO yNJy0fN#ad?9?<@NAXOJl3.aF yNJy0fNu?<?9B?<BNA NuJy0fNu?<?9B?<BNA NuJy0fNu#a?9?<@NAXOJl3.a yNJy0fNu#?9?<?NAXOJl3.a yNJy.gNu3Hy/<A@`PONuJy.gNu/98 y40(@H/An`PONuJy.gNu/9< y40(@H/A`PONu / ot2y0SfNudd   z       <  Z  8 L    GEMFILE.GEM/0GEMVDI Metafile Driver Version 1.0Serial No. XXXX-0000-654321 All Rights ReservedCopyright (C) 1985 Digital Research Inc.dMETA_ENT_CONTRL4_INTIN8_PTSIN<_INTOUT@_PTSOUTD_dev_tab_siz_tab_ext_inf*_ext_ptsR_jmptb1Z_v_nop_v_opnwk _v_clswkz_pt_std _c_escap_ct_ht_a_c_att_cs_colo<_csl_wid_csm_hei_q_color _ql_attr Z_qm_attr _qf_attr _qt_attr _cst_ali_jmptb2_q_ext 8_ct_ht_p_csl_endL_cs_clip _METAFIL_dump_at _close_m_creat_mf_del_mf_eof_mf_out_mf_read_mf_rew_mfd_pt_word_pt_ptsir_pt_intiD_wk_open2_mf_hand_f_open0_metahea_fnameV_clwd_te_clht_te_clip_xmn_cli_ymn_cli_attrs_xmx_cli_ymx_cli_written_chwd_te_chht_teN  *         * v  "                              $ " "                                       Using HARDCOPY.PRG HARDCOPY.PRG is a program which produces printouts, plots or GEM metafiles from CAD-3D 2.0 sequential image files. GDOS To use HARDCOPY.PRG, you must have GDOS installed in your computer at startup time. The AUTO folder on your CAD-3D 2.0 disk contains the GDOS.PRG program, and when you start up your computer GDOS will be loaded automatically. ASSIGN.SYS The ASSIGN.SYS file is a text control file for GDOS which can be edited with any text editor. The ASSIGN.SYS file must be on the root directory of the drive containing the GDOS AUTO folder. The one included on your CAD-3D 2.0 disk is set up for use with this disk's configuration. The first line in the file, PATH = a:\hardcopy\ tells GDOS where to find the GDOS device drivers (these files have a .SYS extension). If you move these files from drive A: to a hard disk, be sure to change this path name so that GDOS can find the drivers. NOTE: Be sure to include the final backslash in your path specifications. If you are unsure of the correct path, open the GEM desktop directory window until the device-driver files are displayed. The path will appear in the title bar of the window. The only other two lines in the ASSIGN.SYS file which apply to HARDCOPY.PRG are the lines: 21 fx80.sys 31 meta.sys The "21" identifies the printer driver, the Epson driver "FX80.SYS". If you use a different printer driver, change this line to use the proper driver file. Do not change the "META.SYS" filename, as this is the standard metafile driver. If you have a plotter driver, for example "HPGL.SYS", add the plotter driver file to the proper path and add a line: 11 hpgl.sys The "11" identifies the device as a plotter. USING HARDCOPY.PRG To use HARDCOPY, first produce a Sequential Image file using the Animate function of CAD-3D 2.0. The sequential image file can contain one or more image recordings, all will be output by HARDCOPY.PRG. When run, HARDCOPY will display its menu bar. Its functions are: ABOUT HARDCOPY: Displays the program credits, copyright notice and version number. Please provide the version number in correspondence about the program. OUTPUT: Allows you to select the name of the sequential image file. Once you select the filename, output will begin. QUIT: Exits to the GEM desktop. PRINTER/PLOTTER/METAFILE: Selects the output device. PRINTER is default. EDGES/ALL LINES: Selects the edge display mode. EDGES is the default. BLACK BK/WHITE BK: Selects the background color. WHITE is the default. PROGRAM USE: To use the program, first use the DEVICE and OPTIONS menus to select the kind of output you want. Note that if you are outputting a WIREFRAME image, the BLACK/WHITE option will have no effect. Wireframe backgrounds are always white. To output a file, click on OUTPUT in the FILE menu. The GEM file selector will appear. Select the file you want to output. If you are outputting to a printer or plotter, the output will begin. If you are outputting to a GEM metafile (useful for transporting CAD-3D 2.0 images to other drawing programs which support metafiles) a second file selector will appear. Input the name of the metafile (include a .GEM extension). As output proceeds, if you want to abort, press any key. At the end of the output of the current image, the program will give the option of aborting or continuing. PROBLEMS If the program is run without GDOS installed, you will be told. Be sure to boot with GDOS in the AUTO folder of your boot disk. If you don't have the ASSIGN.SYS file set up properly, or the device driver for the device you have selected is not in the path specified in the ASSIGN.SYS file, the program will tell you it cannot open the output device. Go back and set up the ASSIGN.SYS properly or place the device driver in the proper file path. If the file you try to print is not a proper sequential image file, the program will tell you. jjjj$j$ Desk File Device Options About HARDCOPY... --------------------123456 Output... Quit Printer Plotter Metafile Edges only All lines -------------- White bk. Black bk. CAD-3D GDOS Hardcopy Programby Tom HudsonCopyright 1987 Antic PublishingVersion 1.1 OK PP $ + 2  ; P  E Z o qsuwy {       #  &  4T  '`  j:` 0H$ACD Z"KX",ZGX"(Z""0(2(?gjBh` @o0<1@S@&Q?gjBh` Ao2<1ASA:QN yD1_1_LB09NuNV yD=P yDBh yDBh n'n0n"| pN`(ndJnm nn0n"|. pNN^NuNVNNNN{3.z09.y|S@3|`tN&N yD091@=@JngnNqd09LybJybgF09zyo09z`09309|yl09|`093`3z3|09y6o 3609y$l 3$09y,o 3,`` n'n0n"| pN`(ndJnm nn0n"|N pNN yD091@=@JnfNJy6f(09|yz09|y|09zy6oNNBy2N^NuNV>/9LNrX yL3$ yL3. yL3, yL363LaByLB@3.3$3,36N^NuNV`n nn0.H=@0.`0`B0<n=@`4n`,0<n=@`n``|b@0@ PN0.H =@0.H H@=@0n=PJng$0nRH"|00nH n no 0.D@=@0.N^NuNVn0.|on>aN^NuNV yD1| yD1|-N2Bn`0nP2n0Rn n-mBn`0nT2n$0Rn n mBW?<Bg yH?(SWNs*\3lR@3>BgBg yH?(Ns*\3X0@3N>?<Bg yH?(SWNs*\3R@3>BgBg yH?(Ns*\3n0@3Z36F3.BW?<Bg yH?(Ns*\3BW?<Bg yH?(Ns*\3pR@30>BgBg yH?(Ns*\3R0@3H yH3afBy3J09,33B@3P33\B@3333.3$0933,093336B@3b3LBy8Np3By2N^NuNVJy2gNN}NrN^NuNVNNNN}NNpHN^NuNV yD1| yD1|-3 yHJPf-|$-|`-|<-|Bn`0nT"n0TRn n mBn`0nP"n0TRn n-mN^NuNV0yl~33Nr yfaX09yP|ga`aN^NuNV=yl=yN=y=y=yP=ybByl3ZN3ByByP3b yD0(@=@Bn`0nT2nL0Rn n m09FR@H=@Bn`. n l&0nT=PRn0nT=P`$0nL=PRn0nL=P0.nym0.nyn0y-P n=PTBn` yD"n1QTBn`L n0.n2nL2TRn n0.n2nL2TRn yD0(@nnaRn0.nmxRn0.nm3l3N333P3bN^NuNVaN^NuNV yD=h Jno& n lSn0.`3HrBy yL3j yL3l yL3@ yL3`09`yl09@ym 3```09@yo"09`yn09R@3@``nJybgX09jyl09lym 3j``:09lyo09jyn 3l``3`n` N@Ryn09ny@m y\f3 yL0("yL3@"yL3@ yL0("yL3@"yL3@ yL"yL1i yL0"yL3@"yL3@ yD1|a&`VaH`Na@`F yL3f yL3h yL3>?9?9NX33 By33FNa ` yL3f yL3h yL3 yL3 yl09̐y33 ByBy3FNa d`ba`\a`V=yBy=yPByPa33P`$a`N@``| b@0@ PNN^NuNV yDJhoNN^NuNV yDBh yD1| yP0 yP1y yP1y yP1y yP1yN^NuNV yP0 yP1yX yP1yJ yP1y yP1yP yT0 yTBh yD1| yD1|N^NuNV yP0 yP1yn yP1yJ yD1|094."yT2096."yT3@ yD1|3N^NuNV yP0 yP1yR yP1y0 yP1yJ yP1y\ yD1|N^NuNVBn3 yD0(S@=@` nfBy0nL3jRn0nL3nRn0nL3l0nRHL3pJybga"J@gN`NSnJnnzN^NuNV`p0.ngB@`Jng=n-|j-|n`=n-|l-|p09lyj=@09pyn=@.g<>?909jW?.NX?09nW n0 n0`.g<>?909jW?.NX?09nW n0 n0`.g:>?909nW?.NX?09jW n0 n0`@.g8>?909nW?.NX?09jW n0 n0>p?9la(T=@??9n?9jaX=@_fdpN^NuNVBn0.yl=|`0.yo=|0. ylXn`0. yoPn0.N^NuNV3HrBy yL0(3@3`=| yD=h`F0nL=PRnRn0.y`l 3``0.y@o3@SnJnn09`yl09@ym 3```09@yo09`yn 3@`` yD0(@=@0nL"yL00nRHL"yL03@n`ByNSyn09ny`lJy\g 3 yD0("yDRiaN^NuNV yH3 yH309y3 Jy ly >?<F?9 NX3NJyNfJy o 3N``L yL3f yL3h yL3 >?9?9NX3aFN^NuNV yH3 yH309y3 Jy ly >?<F?9 NX3NJyNfJy o 3N``V yL3f yL3h yL3 yL3 yl09̐y3atN^NuNV yL3j yL3n yL3l yL3p09lyjH=@09nypH=@09@309no3>?9?9NX309no3 yLBP yL1y>?9?<N:T?NX? yL1_>?9?<N\T?NX? yL1_>?9?<N:T?NX? yL1_>?9?<N\T?NX? yL1_ >?9?<N:T?NX? yL1_ >?9?<N\T?NX? yL1_ yL1y yLBh09ly3f09ny3h=| =| `V yL2n00yh2nRIL2Sn yL2n00yf2nL2TnSnJnl09jy3f=|Bn`X09f2nL2A2nL2RnRn yL2n00yh2nL2RnRn n m09py3h=|=| `V09h2nL2A2nRIL2Sn09f2nL2A2nL2TnSnJnl09ly3fBnBn`X yL2n00yf2nL2RnRn09h2nL2A2nL2RnRn n m yL"yL1QP yL"yL1iR yD1| yD h f40yl~33Nr yfa`af`aN^NuNV09hyyml09hyynVJybg,09fyym809fyyn"0933B@=@=@>a=|`4Tn>N?.?9 NXy3>aRn0.yNmTn=yN3>a09NR@"yD3@ yD h g yD h fBRyNTn0nL0f0nRHL0h09NR@"yD3@ yD h g yD h fa`aN^NuNV>?9?9N:T?NXyf=@0nL0>?9?9N\T?NX?09h_=@0nRHL0N^NuNVBy*09`"#Vb`(#Xb`09ypnByp ypl*30*09*R@p@Hм2#b`,3*09pQ@29*RA@Hм#b`09ypnByp ypl*3r*09*R@p@Hмt#b`,3d*09p]@29*RA@Hмf#b`*3*#b``|b@0@ PNN^NuNV yD0(=@|m Jyg*Jyrg"0<Hr=@0<H=@` 0<=@=@09yP|gaa=|`0nT2nL0Rn n mBn0nL=PRn0nL=PRn yf>?.aBT=|`( n l*0nT=PRn0nT=PRn`(0nL=PRn0nL=PRn0.n=@0.n=@JnfJngJnf=yrBn`JnfBn09S@=@`>?90.D@?NX=@>?9?.NX=@=nJnm0.`0.D@nnJnm0.`0.D@no0.H =@0.H =@./aX yD1|0.n"yL20.n"yL3@0.n"yL3@0.n"yL3@0.n"yL3@0.n"yL3@ 0.n"yL3@ 0.n"yL3@aJ0.S@nn yf>?.a"T=n=nRn0.nmaN^NuNV nJPm n JPmp`p=@` n JPmp`p=@.]/Y n ? n??.a6 =|=yrBn0.2.Am0.2.A`0.2.AD@=@nmJ0.nfT0.nm 0.n` 0.nD@2.nm 2.n` 2.nDAAl=n=n=n``V09S@nf ng@Sn`60nRH"|r002.SAAmRn0nr=P`Sn`. /.?.?.?.a N^NuNV0.` n0 `(0. D@"n2``|g|g|gް|g0.` n0 `(0. D@"n2``|g|gڰ|gް|gN^NuNVJyo0.yr3j09rn3l0. 3p3naJ@gN=|`0.2nr2A3j0n"|r00n3l0. n3p3nabJ@gN0.2nr2A3j0n"|r00n3l0. n3p3na J@gNRn0.ymDN^NuNV3~3H"3NH3\(3\#bP#Xb3*BBy*33PB@3P3N^NuNV3"H3(\#Pb3B*33PN^NuNVa8 yL0=@=@ yL0(=@=@9g&>/9LazX yL=P yL=h9gN yL0 yL1n> yD0(@U@@HйL/a X yL0 yL1naN^NuNV yfp` 09S@=@H=@-n=|`0. @HѮ n0"n2A=@>?9 n?( n0(WNX=@Jnm>`0.D@>Jnm?.`0.D@?N T=@nlRn yD0(nnj0.nm2>?.?<?.N\??.NX=@>?.?<?.N\??.NX=@>?.?<?.N\??.NX=@>?.?<?.N\??.NX=@>?9?.NX=@>?9?.NX=@ yD=hBn`0nT2nL0Rn nm yD1| n0nn=@ n0(nސn=@ n0nn=@ n0(nސn=@ n=P n=hBn`0nL"N4n0Rn nma yD1nBn`0nL2nT0Rn nm0."nQ0."ni` n"n0 n"n1i0. @H .fN^NuNV y Pg yL3N,a 4 yD1| yT"y02 yT"y1i( yT"y1i4 yT0("yBA2)0AR@"yT3@3N^NuNVN yL1ya N^NuNV yH0|H3"yP23N, yD1|N^NuNVN3N^NuNV yH0"y2Aga^ y3N$ yD1| yP"y0N^NuNVN yH0aN^NuNV yD1|>BgBg yH?Ns*\33>? yP00y"|00y0g*0y"|003303N$N^NuNVN09330N^NuNV yD1| yH0y@3"yP23,N$N^NuNVN3,N^NuNV y Pg yH3N,a yD1| yD1| yP"y0 yT"y02 yT"y1i( yT"y1i4 yT0("yBA2)0AR@"yT3@3N^NuNVN yH0a TN^NuNV yD1|/9HBg?<Bg yH?Ns*P _0"yP23./9HBg?<Bg yH?(Ns*P _1@"yP3@3*N$NN^NuNVN yD1|N( yH3. yH3*N^NuNV yDJhg9-g y3:9-g y3>9-g, y36 y38 y3@V` ByBy y#L~ y3P09.`XBn`b yD P gaB yDBh09,H=@`6 yD P ga yDBh=y,``J@g|g|g9-g y0(6n09*` y=h(` yB@0(("yBA2),A=@`~ yB@0(("yBA2)*A=@`\ yB@0(("yBA2)0A=@`< yB@0(("yBA2).A=@`Bn``|b@0@F PNJyHg yB@0(RH` yB@0(R=@09` yL0n3 yL0(n3=y yB@0(("yBA2)09&y092yJyXg098y09:ySyX y(Cg0n"y"iD0HyRn yD0(nn`9-gT3j3n09HH@J@f3l3np`3jl3p9-g y3>`309|3rBn`JybgR=yj=yl=yn=ypNJ@gN3j3l3n3p`N0.yj0.yl0.yn0.yp9g09@|3`09@3Rn yB@0( y>lJy>l3>0y>"|00330B@33*3.3,3H333bN^NuNVJyf09R@"yL2)A=@ y=P#` y#T y0nf 9-@-@`# nJTg& n-hT nB@0((nb n0ngByH yB@0((ng-n`-n nJTg* n-hT nB@0((HR@nb n0ng nB@0((HR@"yBA2)(Ac nB@0((HR@nb #a&N^NuNV y=P#` y#T y0nf 9-@-@`# nJTg* n-hT n0("yH2An n0ngByH y0("yH2Ag~-n`-n nJTg, n-hT n0(@"yH2An n0ng n0(@"y2)Ao n0(@"yH2An #aN^NuNV y3 y0(@3Bn`" |2n"y4niRn n m y3$ y3& yB@0((HR@3 yB@0(*HR@3 yB@0(,HR@3 yB@0(.H3 yB@0(0H3 yB@0(2H3 yB@0(4H3 yB@0(6H3 yB@0(8H3 yB@0(:H3 yB@0( y3@ y3B y#D y#H y#L y3P y3R3H#N^NuNV y=h#` y#T y0"yH2Ag yJTf y0"yH2AgJyg #B` # yH0.0|f yH"y0ajN^NuNV yP"y0 yP1y> yP1y yP1y. yP1y* yP1y yT"y02 yT"y1i( yT"y1i4 yT0("yBA2)0AR@"yT3@3 yD1| yD1|N^NuNVBy, y(Cg yD0("y43,`z y=h$Bn`X yH2n0pRH"y"iHB@00"y"iH4nH4RBA2Ay,Rn yD0(nnJyHg,9-g yD0("y:y,9-g yB@0(6"yBA2)8Ay, yB@0(("yBA2)0AR@3D yD1|09` yTBP yTBh yT1y, yTBh yT1y, yT1yD yTBh yT1yD`D yT0D yTBh yT1yD yT1y, yTBh yT1y, yTBh yTBh` yT0, yT1yD yTBh yT1yD yTBh yTBh yT1y, yTBh` yTBP yT1y, yTBh yTBh yT1yD yTBh yT1yD yT1y,``J@gt|gΰ|g(| g3N^NuNV yH=P y Pg$ yB@0($nb yB@0(&nd yP0` yP0 y0($n0nRH"y"iHB@00"y"iH4nBA2A"yT2JyHg yT y(CgB0n"y"iD0H"yT3@0n"y"iD0H"yT3@` yTBh yTBh yTp1@ "yT3@"yT3@3 yD1| yD1|N^NuNV-|=|`.` n-hT n0"n"iT2AgRn n-hT yH0noJfJf-| yP"n0=| .X-@ nH2nP2RRnJ@f`0nPBPRn n!m yD1|!N^NuNV yP"y0$ yP"y1i& yT"y04 yT"y1i0 yT"y1i. yT"y1i, yT"y1i* yT"y1i(9-g yT"y1i:` yTBh9-g& yT"y1i8 yT"y1i6` yTBh yTBh yTBh3 yD1| yD1|N^NuNV y Pg yDUh0(|o yH=P yH=hBnBn`. yH2nTI002nH2| fRnRn yD0(nna: yDBhJngJng yL0(y,H=@ yL0(y,HH@3XJyXl=|09XD@3X`=|Jngp "yBA2)$A=@0nRH"y"iHB@00"y"iH4nBA2A=@0.Hnl0.H=@ByX`(0.D@Hno0.D@H=@ByX0.29XAy,09`3&By238By:`By&0.D@32By80.D@3:`^0.D@3&By20.D@38By:`8By&32By83:``J@gp|g|g| g`By&By2ByXJng" yL0(y,H"yD2)SA=@ yL0(y,H"yD2)SAH@3Jyl=|09D@3`=|09`3BByD3By`ByB0.D@3DBy0.D@3`^0.D@3BByD0.D@3By`8ByB3DBy3``J@gp|g|g| g`ByBByDBy yL3, yD0 ` yD0 yH"yH0aN^NuNV-yD n#: n3j n-h-|` n-hT nJTg n (Tf yD1| yPBP nJTf n!nT n=P`d n0ng n=P yP0"yPRQ n(Cf4 n#L~ n3P n3R N[ p"niB n-hTf3N^NuNVBBByN^NuNV#0303> 3.Z3*3(3,<3@3T33"3VN^NuNV#0093303 >3Z.3*3(3<,3@3T33"3VN^NuNV09`N.U/YadX yT"yL009.`$0.H"yTQ`0."yTQ`` |gְ|g yT0n"yT3@ yT"yL1i09*` y"yT0(0i` yB@0(,"yBA2)0AR@"yTi`v yB@0(*"yBA2)0AR@"yTi`L yB@0(0"yBA2).A"yTi`&0."yTi``|b@0@^ PN yT0(n"yT3@`.U/YavX yT"yL1i09.`(0.H"yTi`0."yTi`` |gҰ|g yT0(n"yT3@ yT"yL009*` yB@0((R@"yTQ` yB@0(("yBA2),A"yTQ`n yB@0(("yBA2)*A"yTQ`J0."yTQ`< yB@0(("yBA2).AR@"yTQ``|b@0@v PN yT0n"yT3@`.U/YaX yT"yL009.`$0."yTQ` 0.H"yTQ` ` J@gذ|g yT0n"yT3@ yT"yL1i09*` y"yT0((i` yB@0(("yBA2),A"yTi`v yB@0(("yBA2)*A"yTi`N0."yTi`> yB@0(("yBA2).AR@"yTi``|b@0@ PN yT0(n"yT3@`n.U/YaX yT"yL1i09.`(0."yTi`"0.H"yTi` ` J@g԰|g yT0(n"yT3@ yT"yL009*` y"yT0(0Q` yB@0(0"yBA2),AR@"yTQ`n yB@0(0"yBA2)*AR@"yTQ`H yB@0(0"yBA2).A"yTQ`$0."yTQ``|b@0@ PN yT0n"yT3@` `J@g|g|gJ| gN^NuNV yT0("yT2A"n2 nJPl n0D@"n2 yT0( "yT2)A"n 2 n JPl n 0D@"n 2N^NuNV yT0( "yT2)A"n2 nJPl n0D@"n2 yT0("yT2A"n 2 n JPl n 0D@"n 2N^Nu@HNVBnC:9,23939V393929 33969 339390yj4|JyHgIK=A=CJnfJ=H=J4.0.>9yBng89n E=E` JyVfDgG8.g,D=Dg nA=B`A=@`C<.=n=F|x39b39393939nlCxnn(`nnCSBnoxBg fnlA|nn`nnAS@no|=y-y~f EgBJnfJFfg:JDg40.4B=BHH4.2.=AASBDn@ n0.49JyHgJfRBOgB=BBn=@G=@BngJyHf FnV@RnVAHHT@4DB=BSA"y:-IEg$I8BLSDr4QJngB=nBn=|=|na=n=y>.DG=GJng nH߮a ZTnTnBnBnnJngaJyHga .g09JyVfn=@0.nl&nnon2.=@@n0.=@nnnS@nonn0.nl&nnon2.=@@n0.=@nnnS@nonn=y=|0.4B=B=nH@4.6.=CCSBDn@ n-H2.CSA0.N"yn-I=@0<xD@=@alJyHg2.6.Jng C`29 9-gJyVfyJnny`Jng ny`y`yN^L8Nu|2.8n0n DAA@:hE02F@=@0l=r@n4nBj42 FB=B=| @nBDvh22FAn~`82ISA6n2.n A n~` JEm~`~@fSCph82FD=G=E=D=CTCBeRC=C=C`@UUUUUUUUUUUUUUUU0.PH${&J*J({0.gg&=y-MKW-JEW.-LIW$g"Bn-MKU-JEVx-LIV@g6=n-MKW8Jnn gBn~` ncJEm~`~=G>.o*J6.SC${p4NSno$ n"n-I:..g`NuSTUTB4.<.>.GT`8 JEk`"HAN2Q`4.HB4.(K>.ETf, GTZUG` HB͋8 JEk`"HAN228HB͋N2Q`: F"GBn.f,. =n 8"HA4.GTN24.GT8B0H@0H@"HAFBBFBA8SnmN2`4.GTN2Q~` F"GBn.ff,. =n0H@8"HA4.GU8N24.GUf8BH@0H@"HAFBBFBA8SnmN2`4.GUvN2Q~`*FBBFB2NFBBFBDNӹABANBFADNBANBDNFABDNrNDNNFADNӹANӂDNFADNHB:HB<..g^d<<F=FJnkBdF`B@F<.HE:HBEHEEHA2zSF ꨂQ0HAL`$nNHSnfn<.HABA*SF⍂Q:HAn=EL`$nNH<.SnkgSnfFn`NBA`FJnk<:.TE>._d><REG nfSE^d<<FFeRE=F=E=n<.HABA*~SFQ:HAn=EBL$nNnn$nNn$nNn$nNd6HA2HBHBJBfHBTI80z@E`JEj JgSE`BERE0HA$nNd JEk `<0. @g:X@=@Jf=|2.Ig*=AJEkRE`RJgSE`z`BRn=|`=|SnTI0z@E`2.>GzIi n"y:-I4.2.=AJngm0.6.Dn8SDDIiTAJnn <DA6SC=A8<6kSB<.SF$H&I(A:n`"K8<{dTJ Jp2>CgD|d2pQ2Q0.2.=A=A=@=@2.JnnDAp`R=BGSBJjTB=B0jSBSA6n$H60|xhvQ3QQ2.0.nD@@=A=@BnNu4.8B=BLL0.>.D n6<k=C4.=B2.=A"y:j-I.g2IVAIITA:|2QE:M4Q:MSE5Q`IITA=AEISBp:.SE&H(I*J6.8<`[d><Cf\`D\D\d24pQ24 K"L$MQ2.=Ap.g n"H-ITI>aTnTnp=@BnNuCpEpOSG=G<.RF*H8F&Jz|" $&(*,垀*,垀圀H@<:E@TJ"*2:0Q>. M< $K"J Ff$IQzNu09o oHS@ y~o t2y0QNuNVN^NuNV yD0( `^ yD1| yPp1@"yP2`RN`JN`BNN}a`0NsR`(N ` N ``H |rW hNN^NuNVN yfN~N^NuNVBWa(32N^NuNVa09yP|g 09@`09=@09nny|n09pnyzmNN^NuNV09FR@H>a32N^NuNVa 09ny|n09pyzmNN^NuNVJyg yDJhoJyfjJyHgBy yD0N$ yg3 yD0N$Jy\gBy yD0hN$ yL=P yL=hN: yDBhNGBn`0nL2nT0Rn nm yD0 3N$ yD1|NJyHg3H yD0N$ yg3 yD0N$Jy\g3\ yD0hN$ yL0 yL1n yD0 yD1| yD3N$NN32N^NuNVN yD1y yD1|N>N(N+N^NuNVBWad32N^NuNVa09ny|n09pyzmN ?9 yL?( NX3 yL0(y"yL3@ yL0(y"yL3@N yD1|N`r yD1|>?9 yL?(NX3 yL0(y"yL3@ yL0(y"yL3@N` yD1| yL0("yL2)A"yL3@ yL0("yL2)A"yL3@ N` yD1| yL0("yL2)A"yL3@ yL0("yL2)A"yL3@ N yD1|N`F yD1|N yD3N,N``S@| b@0@ PN32N^NuNVN yD1y 09`009yP|g 09@`09=@`Bn``S@| b@0@ PN09` yD1|N> yL0(nyzm yL0(ny|n~`t yD1|N> yD1|N( yL0(nyzm> yL0(ny|n&` yD1|N> yL0(yzm yL0( y|n` yD1|N> yL0( yzm yL0(y|n` yD1|N> yD1|N( yL0( nyzmj yL0(ny|nT`L yD1|N>NN yD1yN(``S@| b@0@F PNN HN^NuNV yD1|BW?<Bg yH?SWa\3ylg093lR@3N$ yP0N^NuNVN093lR@3N^NuNV yL3 yo 3`JylBy09S@H@R@309yg3N, yD1|093"yT2 yTBhN^NuNVN0933|gBn09R@H=@p2.AA=@`V0nr00nr0Jnl0.@n\@=@`0.n@n| =@SnRn0.nm0.nf0nr009HHR@309S@=@`80nr29AHRAH2Ar0SnJnlN^NuNV yD1|/9HBg?<Bg yH?a @P _03"yP2/9HBg?<Bg yH?(a P _1@3P"yP3@N$NN^NuNV yD1|NN( yH3 yH3PN^NuNV yD1|>BgBg yH?a \33X? yP00yX"|00yNg$0yX"|003N3N$N^NuNVN3NN^NuNV>?<Bg yH?SWa \3yg093R@3nN$ yD1| yP0nN^NuNVN093R@3nN^NuNVJyf09R@"yL2)A"yL3@ yL0(3y6l 36`09:yl 3:09yFg.093F296HAH63.N, yD1|094."yT2096."yT3@3N^NuNVN093F296HAH63.N^NuNV yD1|>BgBg yH?a V\33n? yP00yn"|00yZg$0yn"|003Z3N$N^NuNVN3ZN^NuNV yD1|/9PBg?<Bg yH?a P3 _0yg3N$N^NuNVN3NN^NuNV yD1|BW?<Bg yH?SWa N\3R@30? yP009ypg3pN$N^NuNVN093pR@30NN^NuNV yD1|>BgBg yH?a\33R? yP00yR"|00yHg$0yR"|003H3N$N^NuNVN3HN^NuNV yD1|BW?<Bg yH?SWa.\3R@3J? yP009yg3N$N^NuNVN3N^NuNV yD1| yHJPgp`B@3"yP2y\g3\N$N^NuNVN3\N^NuNV yD1|N$NN^NuNV yD1|NN(Bn`0n2nH0Rn nmN^NuNV yH03yg3N,N^NuNVN3N^NuNV yH03b3Jybg|>/9LaX yLJPl yLBP yL0(yo yL1y yLJhl yLBh yL0(yo yL1y`0 yLp1@"yL2 yL1y yL1y yL3 yL3 yL3 yL3N$ yD1|NN^NuNVN09Ly3b yD1|N> yL0y$l09$` yL03 yL0(y.l09.` yL0(309zyo09z`093 yL0(y,o09,` yL0(3 yL0(y6o096` yL0(309|yl09|`093N^NuNVN yD1y yD091@@S@=@N> yD0("yDSi0nL3p0nSHL3nN^NuNV yDJho yL0(3p3n=|=|`BTn0nL=P0.ypo 3p`0.ynl3nRn yD0(nl09nn"yD2i=IL2Rn09pn2nL2 yD0(R@3"yD3@N$NN^NuNVBy6a6NNNNNB9ByN^NuNV3b3J3T333l>343N3X3633Z3n3(3p\303HL3R3*#b33F3.&3^33P$3\ NEN^NuNV3b3J3T333>l343N3X3633Z3n3(3\p303LH3R3*#b33F3&.3^33$P3 \NFxN^NuNVNNNN^NuNV n0"n2)Ao n=P n"n0 n1nJn f n0("n2)Am n f6 n0("n2)Ao" n=h n"n1i n1nN^NuNV0.n m 0.n o0.``0.N^NuNV y8l0a0J@g& yL3 yL3 yL3 yL3abJ@f>N:.N`09=@09D=@.?.0.WNzTJf>N:.N`t 92.HЁ#098@H @"|^.?<&/<N\ yD3 N$ yD1| yH08Ry8NN^NuNV.?<LNzTJfB@`P=|` yH2n00"N4n@Rn yD0(nn N2nB( 9м298AHҼ^"A"BW/N.X3o>/9?9NF\3 y0(@33 y3 y3 y3 y3 y3 y309@309@309^@H3p``.NB@N^NuNV09=@29=AAR@3\09=@29=AAR@3^ yHJPf yHJhg409y\l09\H`pyS@3 yHJhg409y^l09^H`pyS@3`P yHJhgt yHJhg09y\l09\H`p=@>a=@yo0.H`p=@0.y^oX09y^l09^H`p=@>a=@yo0.H`p=@09nS@309nS@3`~=|`Rn09y\l09>a8y^m noSn09yS@3>09ґWRWayS@3` yHJhg=|`Rn09y^l09>ay\m noSn09yS@3>09ԑWRWayS@3`B>^a=@y\n09nS@3`>\a&yS@3 yH0(`.Bn`80.yH=@`"0.y=@``J@gΰ|gΰ|g0.y0.y yH0(`.Bn`80.yH=@`"0.y=@``J@gΰ|gΰ|g0.y0.yB@33330.yo0.`09=@yo0.y30.yl0.`09=@yl09Ȑn30.yo0.`09=@yo0.y30.yl0.`09=@yl09ʐn309ȐyR@309ʐyR@309^@HR@309yڰyn09yܰyoB@`pN^NuNV>?9?9?9?9?9?.N\?N\?NXN^NuNV>?9?9?9?9?9?.N\?N\?NXN^NuNVBn`.?<&0.@H @"|^/0N\>N`>/9?9NF\33aN09y0.@Hм^ @1y09ܑy0.@Hм^ @1yByJyga0.@H @"|^.?<&/<N\Rn0.y8m 098S@3ZN^NuNV09@309@3By3ByN^NuNV`ha09y09yoD09yRySyo>`09yRySyo"09ynRy09ymN^NuNVBn`N.?<&0.@H @"|^/0N\>N:.N.NRn0.y8mBy8N^NuNV yD1|N( yH3X09X@H @"|^00yn09X@H @"|^00ymn09XyZg`09Z@H @"|^.?<&/<N\.?<&09X@H @"|^/0N\N3XZ`8N^09yRy09İyn09İyn09yn`09y09yoaN^09yRy09İynl09İyn^`4N^09yRy09İyn609İyn(09yn`aHRy09ymPN^NuNVa(BW09D?/9N\NN^NuNVJyg Sy`0y"yJ0fD.Q?<aT0y"yJ0f.Q?<aT.HS@3`SyBn`T09Hй#Bn`"0y"y0H@|gb.Q?<aT.H|=@.g0<`B@@.H>?./9N\0.Hѹ0.n`.Q?<aT.H=@J.fb.?9aTBn`..?9/N\09HѹRn0.nm09n`".?.a:T0.Hѹ0.n09nnRn09nnN^NuNV09nyl:. ?. 929HЁ/N\0.y0.HѮ `. 09y=@? 929HЁ/N\0.HѮ y"y4y>/9R?9NF\R@30.nl00.n3. ?9/9RN\Ry`3N^NuA0($@CndNuHE<9dBA4*"j8 j0j jogj dRI`dRHQLxNu?E0*$j(42*N yn @oQ@R"j82*(A2*j,6|Ev22FBCBf`FUCeQJg F6Nu o0/S@2/ QNu o0/S@"o QNu o0/S@"o 2QNu _?<=NATN _?<>NATNA 0 H/ /? ?<?NA Nu?<?//<?<BNA NuB0//?<HNA\Jg o Nu _?<INATNNVJ9Cl>/<Z?<=N\38`>/<_?<=N\38N^NuNV>8?<>NTN^NuJy~f$?<NAABWHy?<NAXOJfHy?<ANA\OBy~NuByh`3hJy~l^Jyfa8a"yDR@ylmaCJyhgR@ylmaR@ylmav3vNu"yD2)o6A"yH`"yD2)o A"yLJy~lJyfaaNuB`rJy~l8aCBQJAgR@ylmaDPR@ylma23xNu"yD2)o(A"yH`"yD2)oA"yLJy~laXNuax49l@Bo*BSBQJAo&H@@aL49lBn40`ASAQylma\3vNua49l@Bo(BSBQJAo$H@@axL49lBn40`ASAQylmaP3xNuJy~ma`0B09lѹ/9h/?9f?<@NA JlBy~B yhNuJy~lH$9n Jg<`0B09lѹ/9h/?9f?<?NA JlBy~a B yhNu yh09lHS@r0QNu yhB09xNu yhB09vNu yD0(S@ yL"yH2(4(BgH69n8Bh4Bj44(hk6(` 86(DADBB‰kRD`SDDC2RyXHQ09fNu yHa09@S@Jybf*24RASBAm3j3l?/ a"_0QNu294968RCSDDn4AlAm,6BoBn"83j3l???/ aR"_420QNuU@m2"H0 I4Po1P0QQNu0/2/ҀgP BB eHAt AcRBI`Bvc4BfSB2C AgAC8be0Nu4`6`0Nur0/jDA4/BjDADB/&HCCjDCCBmA&Nu29nyzmVy|nN89j49l yfJyf Bg,nSB`RBBoD0N*yn6<29a|09lyjlD@R@@29y3Nu29nyzmy|oNu*yn6<09j8:N49lH<9*RFHEE yb20P@0;4F@>GG>;p(DBDSBjGBB~<9r:9E${P&N??89zAn >9|Al0GHF<lDFއkRG`SGGGJGlDGFl>HFG~>9zCn >9|ClGއkRG`SGGG?BFJyg0 yf&ylf ypf|`ylf ypf|><x:@8AlDDDG8GN*yn6<2>9r@0;&Dk@4D6DE4D:9E"{P(:FENр@ @ *pH/ GeBAYdU`U]XdTMJDkJQ*_L7rQNuKQ`H/ Gd2YdUXdTMJDkJQ*_L7rQNuKQ`YdU]eTMJDk JQ`KQ`H/ JFg BgJFnSBYdUXdTMJDkJQ*_LrQNuKQ`FAaXNuE4D6DE4D:9E"{P:FENJH/ GeBAYdU`UJDk J]XdTMQ*_L7rQNuKQ`H/ Gd2YdUJDkJXdTMQ*_L7rQNuKQ`YdUJDkJ]eTMQ`KQ`H/ JFg BgJFnSBYdUJDkJXdTMQ*_LrQNuKQ`FAaXNu?yzx4@@BH҂4NuNu yh09dHS@BXQNup N>ByNuANNuH>96y|m>9z`yz<<FHǏ$yn<|x:|SGa>JCkaXANa(JCkaBANyQLxNu6SC&J8<SK(KJf QQNu0R@@XAN&J<raN>QRKQNu(K8<BQ8NuHaza yD4(SB$yH0 f,JBg(20k nSBTJIe`aj`&N> f29y` fByQL8Nup0929H@J@g @y0@@ANNu99g&zGgB@P03ANXKQNu HG54-0-1NuNuHJy6f8rSg0p>HHy>/<?98?<@NA LQLNuHJy6f">Hy>/<?98?<@NA LNuH36LNu _NAN[4`[<[\T\^[4^'(^[4ctcf~ggh()$iHijB[4[4[4[4[4[4j[4[4~9*[4[4&[4kR[4)*e[4[4[4kl [4[4:=[4DE[4[4[4[4[4[4[4[4lf>?[4[4[4[4[4[[\x^l^[4aB(>([4cdfgvh|i0))ijj[4[4[4[4[4[4k:[4[4[4[4[4[4+t[4[4[4[4k[4**fD[4[4[4klN[4[4[4[4[4[4[4[4[4[4[4[4[4[4[4m[4[4<x ( a:l!!#H%l')+-/2468:<>?ACEGIjK_cst_rot(^_rst_rot(_cst_fon(_dst_fon92_rst_fon)_cst_col)$_rst_col)_cst_sty)_rst_sty*_cst_poi*_dst_poi6<_rst_poi*_cst_ali*_rst_ali+t_v_gtext+_dqt_ext:_text_in2_make_he7\_dqt_att9_dqt_wid=_dqt_nam>_dqt_fon?_d_justi@_dt_loadD_dt_unloE_save_teE_reset_tFx_bound_rG_horz_alL|_vert_alL_TEXT_BLMR_TRNSFON[ _scrtsizMP_v_nop[4_c_escap[<_save_depH_r_escap[_c_pline[_put_polo_r_pline[_get_poln_c_pmark\T_r_pmark\x_c_gtext\_r_gtext^l_c_filla^_r_filla^_c_gdp^_arb_corr_r_gdpaB_csl_typct_ranges*_rsl_typc_csl_widc_rsl_widd_csl_ende_rsl_endfD_csl_colf~_rsl_colf_csm_typg_rsm_typgv_csm_heig_rsm_heih|_csm_colh_rsm_coli0_csf_intiH_rsf_inti_csf_styi_rsf_styj_csf_coljB_rsf_colj_cswr_moj_rswr_mok:_csf_perkR_rsf_perk_csf_udfk_rsf_udfk_csl_udsl _rsl_udslN_c_cliplf_r_clipm_INIT_Gp_reset_dqd_DINIT_Gr_c_imagesR_open_imt_image_sv_asp_x2y{:_asp_y2x{_init_im{_dda_pre|_image_p} _line_bu_clear_i}_r_image~_get_lin_transfe_globs_out_lin^_b_move_b_stuff_pix_dda_w_move_if_open._if_clos:_if_readF_if_rew`_allo_mez_free_me_line_st~_ud_lsty_udpatms_ud_patr_oemmskp_oempat_dithrms0_dither2_hat_0_mr_hatch0t_hat_1_md_hatch1f_hollowV_solidX_init_de_dini_de_OPEN_SP_CLOSE_S_PT_OP_W,_PT_OP_B$_PT_PTSI_PT_INTI_GT_WORD_GT_BYTE_GT_INTI(_GT_PTSI>_ini_buf_set_buf_flush_s_rewnd_s&_CLEAR_Swrite_povread_posxbuffer_sdlist_addhlist_sizlgraph_plnplane_szrslice_cnz_slice_s|_CLC_FLI_SMUL_DI_vec_len _HABLINE@_ABLINE_FG_BP_1r_X1j_Y1n_X2l_Y2plf_tab_LN_MASK_WRT_MOD_LSTLIN_YS_MINz_YS_MAX|concat_clearme_enter_g_adv_for_scan_ou_exit_gr_alphaou_MAP_COLCONTRL_S INTIN_SIPTSIN_SIINTOUT_SPTSOUT_S xresmxyresmxxsizeysizebuf_32krec_sizenum_plannum_colobytes_lixprint_wiscan_linslice_wislice_ofbytes_pedef_sl_ctbytes_pdef_sl_s def_planmax_planbuf_lengdef_disp_curalph_reqalph_vmu_A_PAGE_A_SLICE_G_PAGE_G_SLICE_DIV_FAC_DEV_TAB_SIZ_TAB$_INQ_TAB<_INQ_PTS_CLIPb_XMN_CLI_XMX_CLI_YMN_CLI_YMX_CLI_m_dot_m_plus_m_star_m_squar_m_cross_m_dmndbuffer@~disp_add~rast_add~_init_p_dinit_pprinter_pout>_trap_abort6_handle8_com_porC_FBASE~_rmdchar_d_color_line_qi_mark_in_num_qc__d_xmx_c_mark_qi_d_ymx_c_rmdxcha_rmdycha_scratch_line_wi_d_patms_fill_nt_s_begst_loaded_SOURCEX_SOURCEY_cur_fon_d_wrt_m_d_patpt_d_clip_YCL_MIN_DELX _DELY _fill_st_start_YCL_MAX_CHUP_line_qw_xrad_yrad_s_endst_TEXT_FG_odeltay _s_color"_XW_MIN$_wordx&_d_chup(_deltay1*_XW_MAX,_YW_MIN._text_co0_wordy2_deltay24_YW_MAX6_images8_scrtchp:_text_qc>_d_WEIGH@_s_patmsB_heightD_yF_DOUBLEH_write_qJ_d_fa_coL_n_stepsN_s_patptP_d_LITEMT_MONO_STV_rmdwordX_d_h_aliZ_d_fa_in\_select^_TOKEN_d_ln_be_d_qc_ma_deltay_beg_ang_FWIDTH_L_OFF_d_qc_fi_context_DESTX_WEIGHT_d_mk_he_angle_DESTY_d_L_OFF_d_SKEWM_d_qi_ma_d_fill_ _del_ang _R_OFF_d_qc_li_d_mk_co_d_qi_fi_end_ang_d_v_ali_line_be_d_ln_co_LITEMAS_d_qc_te _d_R_OFF"_d_ln_en$_d_mk_sc&_d_fa_st(_patmsk*_STYLE,_h_align._d_cur_f0_d_qi_li4_d_mk_in6_rmdxwor8_rmdywor:_d_STYLE<_d_ln_in>_fill_ma@_charxB_charyD_mark_heF_fill_coH_d_xmn_cJ_WINDOWL_line_coN_line_enP_fill_qcR_d_ymn_cT_SKEWMASV_line_qcX_mark_coZ_fill_pe\_d_ln_wi^_fill_mi`_patptrb_xcf_ych_scrpt2j_line_inl_mark_qcn_fill_inp_q_circlr_s_per_f(_v_align*_width,_mark_sc._fill_qi0_need_up2 Z * *   l.`                ($  ( 8*        $       :     &                                  $    $         " .:  t$       H4.    v$ b                             &        " 4                     6d& " :"                          *    >*              :*     $      $  , <                            4 & 0 ( < ,Hfd4&VFX ,,  j8t2J0j "                                                  (Z                                                                     " "                            " R8        D,       @            & $     B &  ..4HV   : "  06` | a0(y &y BB,|.N.<'N<4xNh/?<NNT|g,?</. JGm|o^BG`RG|l0 @"|Jpf|f809ylB@`p>0 @"|00ryl0`p>0(@0,rnop`P>aT6f0`@0&@T|`6RF|8m9np9nrB)@)@|)@)@)@x)@tJlmlBEJnm4`n  nln`n  nm0n H9P>W0@?NT0,@>0@?RWNT`z0eB)@:9@$JlmBD>?<NT`x0dB)@f9@P0G"| >?0W?<NXJnm9nJlf)|t>?PWNT80JL8N^NuNVJnm@ nn80.м @p1@r2.Ҽ"A2BW?.PWNTN^NuNVJnmH nn@0. @"|Jpg*0.м @00.м @1|pN^NuNVBn` >aLRn nmN^NuNV.?<&NTaN^NuNVa.j?<&NTN^NuH$y` yd"|t@||JPg0("(t<fҨ m>"<Rh`2<fҨn""(Rh`<fҨJn r1A0!At (g(Jh"gSh"`"(xҨlDn"D!Ax0(hg00(@02"(tҨxjp`H@|opP@0($"(|<f"Ҩ&Jh&k*mV`*nN"(*Rh$`D<f"Ҩ.Jh.k2m.`2n&"(2Rh$`<fҨ6Jh6kJk`Jnr!A| (:gBJhNgShN`6"(>kҨd!hB>m` (FҨe!hJ>n"D>!A0($h:g> (Ш|H@H@jR@hjp` |o0<@R@@0(P"(<f"ҨRJhRkVmV`VnN"(VRhP`D<f"ҨZJhZk^m.`^n&"(^RhP`<fҨbJhbkJk`Jnr!A (fg(JhngShn`"(ҨjlDn"Dj!A0(Phfg$ (ШH@hjp`<op@JhpjXSPfTBhrJhfPA|``~ A  0 ?  U@@  @@@ ? @?  0x@8  @p ~ @``Pack-IceI *L,La*oMGLA "grѓg f``GP$]t***Ԋ**EL ;H ;C&NN&&Sj&n".扑&&SjN%a*d"ra$dCv !a"H@@Vҩ%QnNuf%Nurf%AQNuCtaTxr1 Hka1 Ag"CvtaTr1 HaBq jD`rptadpt?aBC@!!Q`R   ICE!#`XK`NlJ.s Sto ic mpiler V 1.0 by Francois Lionet0"⿌\O] c]wrx&-$J`y3nTy&0x'{./3(V(..y@\qǠt)4Vx>wp~p0PU33ss77x-MK Uoܠ ]R*͐Jgݝ`BYj` n &JfO(+ Hz }0@@eu f BX^ NA\Ki_Nauv@C^?8g2 .0(w*/ZXg iJFp$yD /c5T;@?0:İ|z,ZhXXA0?-j /[ٺ) >tw8k5(*w.Y , MI{ h k˸r o7XP|#Ehl0.MGf+K.+S2]~P6+kA:Bs*@M( B(`L`XQA@p/%r# 9.pg6ʼ@$H`A# b0GA Cp", $N*-BG&$(.bVgPhfff~`ATf{`ݒ&Rd~?gȪp8pHkfB`&`&&`JGk_+N=T <HLN s P4 X&  E+J hӘ&pB0lN$`$i/\Rjd50 %L<.F56@jL 8Րi@ ATI6tC Q|C,+IO$;&DB$RB@N" M|J@`B%hEēQ D+Hz%*/Z58Ba` 0 lvp `YupR`p.1a<-$ XSpr0M.f0!a(pNs2UFU\J,gSX62;T)vXAi3f+d 2+T3!YA5A Q00zj KTRX.RJ*Vf2R0`J f9B`||dTukl" :"B~ jNs mrUrUR xpr ~2w<; M P9C7e|P"J )WЩ7rD*`$I$ Jg` gMgՒ`G`LćϪ#օpNG~NCpNE# ef[#A!  ``0xeCB1m2^s"- hNB#'ń-2W GJ p,p 0Q 7 'D @6m ?zE<:NOO` I6?/dT'L`ͫHz?NN\Jf.m 0BgNA+ F /Ig/:Nu 6BNsࣰe[&K` Y\' HDY'@Oʕ&晎 ")+(kS(Ւ(,>TCEbŠY(h)*غ$v!;5EW$ް~P2&ٷP'5 2X(r5Z* J{(R:`8(Yz-N:, ;<_uVuSx@hHF-fy^qrB5nk0S\pfsave.bas7runm= dir$ + "\`"previous'offf l2 3uji 4` 0smo 1%new:accload"*"defaul7envkey list%Xd %c(CJP2 q("1P2 3Y!4+5d678C19f20:Ev8+8*q17 I AxE(]7d~ wxֲN\x[b ΅*kPܼx4ODVw'Gn<2<2ɾ'xTʺ޼</5Qθհwތܼj*x5 'zyOn wPwlWewYOh/'L75K x 4n:e ^|<9AGm9'xDr.yB2qBjDZ"N΢xPxvtCbl <89r`0W@H WLn<x.r12 T-·8̸a/oTސ7 W@WEW%G<8|%R HbA3\f8 8)0!:p9/Pixxr+O T{$N2MDs霣:dfi ^?xs/{6 X xxҦU'x aFj;pmwp\H@y=n-D<F0vsb/yO &.x00ft\T.h^ a@]&3 rG7hx>!"۞"! NCy9ƕyY2:x!307#,*y -.7o:u0g_ąLľoQ̖FDm<"B4 ~SB:|fSE^غT Dz8 \*K x<l=.b^,xF^FFF@*EVNN\& GJuf 9&4Jk0d/-kr } z`< RhR^ePU /M:,~z,_kfgDiGeB|d?@]XFNSF SGQsQӍ뉑7S U- ic+x6"5dag9oCKS^&S^ T$DBH``4Ln$4~( S*ւÒځSk "D3E|`U#,rGrd,U`h%jDFD21,](b$HC"frH@kfҀi z, r΂kg*xY/CأMnymBϛp,!"^ ^&L02gqf7U|S I``dJAgfJ@f"%NNT1"9 Yeְe VNpw87CJBC&JRDB f I0mBd b g`g&b ,,$^t:g0JkFхźd6Jg2k6܅c,&l SkQ7_@$.UJXظ-00~:f7vϗ1vx/ (J"_kk$k/-Q4,_f!SqFzFYJ@D6>A@p BH͸cf.0EO 0W+HD`Ōʽ2Pa#S0شg(z "+Li)f"Jgw.sTYA V|*gNE1{ȥsd- HF0@z4&0C7jnErbr #u px|ssny key.?hg~h??>NAX'g"`R HY9j0,Rk@d|P9KdpW.BqBRO#$:f"P Pc׃#`L(dƦU#-l`m62<46ĈDn8;ggf( ٬HLf`G*B3frL:=E884.Jj>410TwoA8-2RA`?20{R20& XhL?,J 4N<q:&&f[2Sf$xtZ?gd &k`,$aF&`LVP.fYgSFg g f~f BGp /EpB ?? ZPlease redo fr start8Recommencer au dbut .V.P. /BD˰.$NStFD3LSLa3$լF%ggv`bULBCgj .fzVfDDeg [Ef8eKMqZJs+:9J-f nX g60e69cm*SB,H J_r 41`8\`R7`B 6JAfJwD"WXXvr3ʨgpNF<@,_NrXq0DJf3*q#8,b.DIt1& C tvi% eBd> EA>dƉ$&`&"˯" C$)` P#@Zd#aad! !g&E"G~dN SGg<.fp ce0 z"gR`ض" 02S@H/`qHն$k$`eJ,Xx g:k&@`"o@yg(0m(TH&LXScg&Jhg.*'+I [46d1B L ,g+*VduF2U g 4@Q;?0B(^MֹY-- 27feHulYFJgnG/GrpNEzт8"&mKv<3 f JEf$է|` GE!,%dRFXRC?&v 5EI~|3X p I$ sЩ1pS$IzI &$ h QaPHpfp9Xg`.J;IFg(B@~ >Szppٞ!m3ܠHD+h qHfBQjT60=+%SC+Vʨ49frrw.X p,i"jqp  ?bN$!۰( #rPkdl2KtL [a+l X7q0*:#.O?^?*<Ǹ>|Ih֭ԙD̘=?ڙ-LA\-2o*rKp97ꗊ.H oIg/:xs|s@Q-Ȳ ?'R@xN<#H/A ќ;"ttA Lhn؍2n d2˓Nw 0e&#(\x}xX bv$>ABBB0adS@g jTA^`CxRA0H>1@g0STR@Ac;G?^aoQ'pk5O  l[ J5+L m#dg&Rpb;Cή *bxB,--#?p`TdNN2bHbBAd>Bd: 23C{3Mҗzւ &MR(],'%q6<9HV2i'Dl!/70] DEdkp0ku[ݓ%a x3 HP# Kž ubI؝lL>!p0x3pi JB_ȭdeFp?J0  ^)>7BKF݄j5@>g~nԞ8SGsffH`KP5f+l`?#PM-kdGgI| "\BZB[*GE @BEp J)g{6BD 1|zRBPCAdRDkJ1@f_`46 m1fH z[6f,0_;@=`^ g<;;EXNu:px$~>0-~:p BdOp'sHR@OBp,JmpL~C 8~pBGNC&_BCAJXgBBRCힴeN]q&k2SJf EGB$"3=FUY2(]6*AhWAaIx&$&Jk{$6n'99:w;8B NԻOhB-#x/ *|{*uKJgt!*_yo(m ,(tA@CJg1b«IK*^M}$&(*,. A"A$A&A(A*Ap]x hxGQnއ/ H]XNl" ^/~s̤r9 Qg.EGxW^FM[OST~(k!wCoun¡ 1>q>*pAP 9 \r'YM2\nSTIC: e&4illeph DEAfC'.q&ZOUNEHIZcC[gEX ; C D VRBADFph M8M4M1VRLARYC*"-Y(c)L;8`l - ZTAOlgHl#TOJGB`6-B$ NEXU46Q9C3Q-j Iؖzbfj TըF53c"4twV 2B^.`X B#DS@`:7A"$H^Cp#H!IpcN J`HIv[.8k@"D qTջ$JRgWǐ !~'F2; 2юG f$QH& !UJU(.fUR2ӐZDz|f c| bt!7p QkjTaՂZ \b!  z*N/:#,_0 L?y1x0ôb!ZW ^<,,..˟:(2,4B`8q^"Sa`|`/~u p'ǵ pfrNR$/(MK쬿I&~ ,Hpv5@qG -X1)HU :U}gdCDE`$ۏ^A|aVg Q| aDECIJ4fL&h| @a$1&gH~tȧBEX EmJEƛE`D84@HJ?XF`.a2Iwʺ<mg |+EA` 2P:zaDgt@_P$` ` 6q&:d&fg^Gvg ] rtvAT!6Um|JgC0PKQBC& H&&M`r _HRa:$_7o0:Hp`#S@NZW >*19uo CE}zuCHΎ-`MZy,,݀~#6o\Khvfnatv1nufxc%d8~̌drt>\إ#sKE:|HFz Ld Fd Jv HwEF'rs)]0gϤp#`,[Ղ0gTgX dBadZ`bj7ĭ4!a}cXSAkNAL aAR4L`,pap<|8#z @?2BDCпHL=0pw7 |[j@a*d"a$dv !a"H@@Vҩ%=_inOP= 9%6*Jxe5vmkqAg"SvtaTo/+1 Hq jD`rptadpt?aXC@!38RXĪ* 2Y ,T(݊ Y  UB 6fTJPfP*H*".JEg]pKi:C@$I&I,O3#,G S(NpOއ_|~G^`$t0|`(tzjB.BBUf6$R $aāUBeB%`ba2w v`Ng`8*&vޓergvv`ag O8aa`B?F& "Ga(IT?$3b:foT8 f X (ሡ_WЀ ϼ+|H."H fQf<* .$HY# ׀[p&-;/ aLmE?!m/I=xyIt`]OXBEKG-#Qf pXAjg. @Q? QAj){2aJg.8DgHg d~ra@D` G?30l.1 𗗘`````y,`&~Bg/?PYmlHzn/?4|@oFwRICE/*X-x=T@ @ 3[QCNAm ,BMp-뢻", ,@p\Id,n~B2,l#!NȪVI a B aˁ$bzlr<34`ppvAnC ΍Q.:XχJ`FLp8, F15 *2Rֲ̻2nĸ*,vw _2:fڼ`s ?gg@̺@'SGJFgjH38eF0G$2{M48HD862OH@2HA2HB2HC2A؞\v:::SE"MKI~NQ`j. V7,o SV#A iÚ$.uך[0֝O{B<@l :"B/Mp,,_ n"nw[ 99X Jg dwNATaa`0A@bp uhPD/:h Ε{ ;XO`|&L NuHS1g]v0,$y0*?4|vx ~&,r`cf 6U.^fv4y or2ARG Gm ITp#TNz#bˑ.K:Ӫ& Vo+mMgX+HD,EStg jhH &NLdE*?H,6$Ng$fv~`pANf`ޝR` X:ʬ+ nJA P`A  #ػ("jl+-D`-WFkDx]%( C:"g Rd~OJgjlfJDJg`S`0Q̔O 3tB@B']QrY(\9{ q6R^U2-?t,O"J̽4k|ߔyB^6d$2 H@ ЁeЂkl~Xr e eL鈀 fnض Nl dRe/+M!f5JCg,Hogk gae ڼR`JRk4e \gL@:07pg;awRf k&/+D[X_P*gu;xO`V$]"0n/eA0JPgPeTU 8p72AJ@\)Q# 3NMX `of5&FeU P?VoR<2-bAfB@BA` 2x&|GZVtCPW `423Q-`BCJr KfSqmBluoRC`PRA(ּmfF`V> fBԚ@(0>,_XNBp UH-rprg v',o^t ;Q"FP'rH:ĸ4((WC}$Ip2 mf4DffJh*g`_(oNEpG BkVN^Pp9(+V=J@}//-h?<|NAEG J$^4g4|?d22"~iym . \xQ IBRpt\5Hr#gDg|gp4`p0` p3`p12&gp bSC_j$ l0|p Jt *@ A"BJi(5    ,"K  ) ^b* (($*TOZ@:2G h" ,<F&(4&Vl81 0F@r( "~*Y?Un- Ak ,pEU#}dz-Z^`j9e23X4 z546I77۾ZMb[`_paSde-QBǦiuxm*` XQ|h&JN M Eشj NC f>4L֪PʐXP"+A/6`q`oWindow 10 *в! ΢rX$̚pr8br䲊U`F)$y.F%&KŦts$'(б\a4V-y%!%.R-<*:gaNBKƜ!,2D!xq^)a .o @{+D8W$u xKUw-qSސ%`Мm QV;p`.P7u4"(.rWXePʏң?A ݂(("BU &X*#/wn:#BBHNV**lT U($zlVT%^&S.y'J:!$\d*.CR= ?C|ĺ0%ig[12* (* cf*Ȧd/ _H@5`/.h#*MPfj<s9NI0n#!| l!xg V!tfI`Q~OK*u%upgwHYp(M_./oÒ!tfp)`pNE NL~Nspp2BC{*#Nva|³n02 Dg;IRzm.P>ʳu!خ.m(JEgͻ</ )p y)pfeBfNA&X]?,TNM]!#s3YX8]vTx˄xȶV3]n33,Bg?NN\Y7B"BYg["l\C!kHIY2468:<⯏ p{c]|xxAHw@I}J[."Q\2m*@T8_B9C 4je2m 8k!KL5e~HADdEulHF0v'*6j:C&dsx3MW$,T_Y4qƘmaVAهaZftrF5 avV3R C(KEm2Hȑ2m &m8:.t=<oevBCBB 8BT(ydfD=!2Gf>vDRBEgoöF1?u0Rf/~bq:rsݛ&SGl(_#?_#)x4.(; 6W>{bi%8@@:Z.!@B7C8DBC۱:VYjH:ӗwLx`:LDE0E t0& 4eZskevWP#38,}$&&JeoYP•wIМL6Jbv$>H\6)JHa>-43svu6RC C"~7pvBP2:J%6?0fN0+ Ls@/jod%90sqV@[?3v ?4}@^gf2sj*T"ը5jK͌laF9XDpOJ&om Pa{*6UiQ,H]#+9+S.Y̒3lҩ#X8NjDVw4E$9= R@۠e+ 4"T­scf%*ZL.-<,/*SF: E6KGR$5l0GXoSv(n0B*NrTMY:(.-+8u.7;2sQ0x~Z_PlSJdQ֗.%ft"rOFRG<ж»H>>з8tp:>Y`<̻NhVFڛMiVE*w^d0Hu`55HTܵ`J xg, s׽DGܣD?X/8 xj:F"ue p0ʈxkRAt6u"UdSH Bfj a`\XF6J(hn3`5ņuK/F& N x3bAWC@S0e d*ۣ <Q- xb ZȆ . > Ɩ)X 0l?idLlOGJ)N@jpp̀P9|s-"1rs=44@P68jB@ۂD_ȓm(HD=NbE2p.h ӿ.eYVoF$ ZHCUeBY#kڕXHJ0. xj(&2c utqmdzfꁯ` x A\\kX 7D)PB̍xiFFWb2Vh*9A,<JB9BtحYlFM:0Tqp)0:X?]aPm`d}3W(ܰ fb:ꕂ-`V 6n^<*Ej理*obah89Dh*) xV}DN:p$H"HJ%vRAa 00<:P&4Ae:,HyJ Jt"Yd` BqV2,4+M V,hY(4 PJ["P&nLN8a(Bwж<' p~f3ubx|<0 @&"SG6sa8lnoLXDSɉ.G`/Z8cuX=q*owG 6YMYU.]brQ"\2@#> a.$I4 : vFJfF]^? bQMQNRHSEj' N<lBG=SJSf]J sfUV_bTJQ=(fC`ւ=Lt4\n9"fBOD0Djf -`LR vVuL2b2SAI XD@{SB6~gA^+)D#` Q`'hB ( `{L#v3~0X` p OLo MB270HABA OKJ&Q@@"zXdr >H\J*CB?Y:ؚ|20abTAaBh0@2p 7BJ!YCJl27R@RA`_HE4 6,㙉 C1B*1C: m,t)6K*GXG|tSXQA_Jg+?fH6/9#eE #nXL^>< !"y'N/ "QNuX9v h&\h $/Q0sY"0ĆB a@$4 C$ HL B:  6,;XfzfB  _ f6 d 88d"?8 dJ ":z<$0LY?6( `^FL @ &N ,2N2ˮ z@H- L6(>h<&|(mt쾟fyf+p['|ܤf k Mep+- P ",T~T>66g҃fp6˕ò oI?33BۂsJ@`vXa΅EE`g#ԅբ" o_1kB΄BwwomK\e)`}6> Jos>,TgTP7J0< ~}C |Hґ"ј~ >|$k_0Yrڌn`d7bgkc࿺9~vv~p4J~Wm|lyH8~f8l7xck6vn~K$p[8 \L`s$$ByۍB {n[W!nq~;~[un,j{w~@$rsX[?Z1WJBpm@@hy ll"L@3xvυQSsLLNΑ­f.Fm x6o`K*|Q~`VzxvMЅoݖ/z}޵ 64N~B1xDCc.e ƽ fc8|ڹ!]20gOx\q6NNk6RS6[2ՙm6?n?N9auF ca9^Ɔ `yt{݈OO f6ΞMK ; ;NXG )whٸ"DX$$P> |fQpޖa!ggjmRrav%,mB~m 2L~m8\vB o̶`?uSl挵[Xojnm,,3ōnN͍f,hzxP&iV;0lxqn Fn~VysbrZNFǏsb!l6w͑>BB믌۸! fF50ԯfBY&B/2e,2[Z}x3v ٶ`8vFAyMF |}Ƣ2c.xٓY?<||~gDu7x`nhxl, }ζ@lƭ8S׭~iNUO``>EF> 2僑biv2j~<4, DLl)0p#`44b) \3ր`EVYV@/bەhn[WM8q;fwfWnpb|b{պ?YX^xYӷjKu:(0@gM=Vph3$ TFbbA`0{ݶظpw;F r^Fq>wfU%V̊kÆ6n֟?!l66lPf{2Ll{;!z~Fmd+ཱxH"E{mqp8z* < :pk 2f@ :%nb4U&emFUu7]Jfv|0s?l5ՄrPfl۾cS,vnA> nl|LL.~F ?28-8xAcBi~VGk"Ffv~~ob"72don~0mfvagp+qbzcckwcfn. ?<_`|b,pf  ~ؙfln \㶹7~Cgܺ]hnc>3"F<=g݀>6̘3\ۄ'Qk6׿Ɩ&8F|o l8~g^lklo8"?glC6|7<0=Ӷ x61@}ݠ66(>h<&|(ble8tv q(Xpvc@WD|l[;|eP̤8o~L9 >QT`i ftm1b6< <6뎤<0[W4xnv%2#EX1`>k08ҭs ppflp Yt`K\#,5`8|Tp`Ll,Dz<66:-Gr[l$7V,i`~p8 @s`v$$Be\(݋,1"qwƵq(ᶎx5X͊f7A;~@nX#n熸htCp\imPBm@@lnV0+3@3x{<F(*ܮbRJFj{O|\B")B*RuJYH$Ho;ͶՖ᝱xll hAhh|x\܊>@Űh ʢ `RԨpp]3|sc6n}j``XNĚ{!Űxl8l0KEKÃ@5z~I=JH[8(V5XbZkÆ6n֟dɆl66lWs~v%е ;Kp[G @m>`<|[_f2xxps80 oaf52Jq ||`p8g`>Nn`b?Ɖ&ิVh3 KQ/ !Na-6*ޞM1o2b7F́4wG~ԁ-L͉n&XB@Wu'%ł ѳNϋ8ly7W=!]Lx~U8x ;l@x8vdcPAk"~f~|x7_VQdkv|~Qo݀KZ!!l ݅0 H60|>x=mi0֕"ElUUG-T1)%330 {i7o>$!)~[˴ m $3#b?wVAF3p7;3X?PWP ?,  `a===s-/*dya˩(((kl}!ȭmtex#vtMڀ f.-hsh+&X;qvKvbyf4 -  C[p Ù7e1 ?w??1So'Vjf2u *hXŵOx00BkW3n{m}(<>6#a[PB|օb`xp6/Wfcf +V>vޞ!;Cx4-CbQ@4ģ`` X{vWN,m@+-S3z IArԀ͕~Ơn-enkn 흒D.xJ&|,C>688J h~\A xP+l{ Yօ|vYpCt`3.QH VDe6n7RNX|v`lQhuSRRn8v_jQ3%#VFpVM}NM()||>vvGxxd1 )z.>˃܈V7~l|-b^xl+dѩv_^1nn*7|`r~n?}5fE>x<~|[>*~vFPg>|wZ"ZbM48 ~>~?Pnm8HYv ||5x>7`p/~~U#Ne` * <7Wx6|f)0 uDi|2 X=&~&ꟉY~vBc˺2rzzvv;E&;>^prt9vp~9>rpxpyZ}D{ckvLVFv /B=v(2'|FM8h~'3D\Ɉf+iȹ`ۃw/>;8DD&*IƼĕmC>bXb?}pFZ{C&` E~f!n๎ l6Y,o~ZăpFjFMpJlxEbXO(x |v|‰*pi>PZ1fÐ!,ȍ.ۇskL8k\В3l,$̵|`~d;0V^@(~|3i| ƨ_YDQl]da7~ r~ڤ>F|kux?xę~b\6(>h<&| .CX>8t?3  ,WfVx`Yua֮0jaYou?33Mm9%` ̉,0B"gn@Z7kѯlB΄BwwomK\e)`}6> Jos>,TgTPfl7y*y0d|q ~lDk3E\>bYp2| ʜ`$>rT||Hξaf|JBpM0"@@RUbRJF>}hu H0`2[|or-)B*R2ﲄg)UH($H6~;݁*Ofϵ=!3#!}Ą݂ '0//#V̜-~pf66fԍ3[&fb@d6]>3\\뎰f́ UdbG6`ff٩00`~ MeE 3U$ Yv'wg2#q7G9ŭyc%؋9ŭI6qkFDh.bd&v N4s{o Q Q&[(qk>YsclY >C{kp!b{W>N2 F0CbfT!?`xnv}g&a2?h`Uef|fd=wkET.S{c~Nmf;t}~c>`>f~"f2kwC>\Fcc?8gajP$lHm^{pHrUۖG;m<^ xIfa\||~|&n,lʐ>fGlM|00sY3u`Rn flgLnn`bw;zB|:[Ќp>'v(gEbC o>lBPr~fR~֋fqaaKxgVᓙx1,6CQx? pCpֳ2Vl6N.R&3|$x88*x `x 8`nVW b͘ Ra$xmXۅ.R5aME8ǬEØ{xސOf~q~q2f5زXtf{cf/ov~nݼv#X uH͉xc1`y7v&8 X \ۄx Ud!-huȞX@&yphl8l~xp^޾}^Jmp Lf}===(p-/*(l/E6(((Y!ڞf|뺰ʹ&m͈_3xΖs9n LM_6[2}Fg4 ,F= ؂} s|x nU{{ In{<X0rI>?sH1?ʻ??17&f d2Nu *hdޕhj4ll>`<|ӟbf0%fFx\~50qW.K LJ l88lx~w"1';[ S_ |@% AX<|̑ >H0^N"y|&$'_$]z8+Vd<`03D>tnlC>B8u'%;w.^ 88Z%<̈d#PI>:|!&p~>@ډmB84 Lxxlo@Z~DD9 b iD\.``( ~nfܿv|>slΤ0|!l|8оDG<<~~]80|`e9ٷyKZ!!l ݅0 H6LV >GWIDTrĵG'j"  !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_<ubcdefghijklmnopqrstuvwxyz{|}5WW8?;oq%Y t9O҇[ЀgJEr95IKutpacf|L:,~:~q'fngc"mqtf^> {pY9W8!6`OSK S, 4, g7KM~~ϛpYtU\b9j p%x|fc60\..H/̔fYaVk6(6eukg]v>W! xSv =xA 6A^tWux x4x^fCQg؀0``.>|i kÆ6n֟H6ll6~@c@~Ɵy'~~c>@l'( U3~BIGFONTS`=2`Sprite 101"+dW|XP!Tn!6C666 #ˑ4(YZt3LmPV*-م JՀb U) 1"*N/P+<,FN$#p`Z@<9B1`;h<0x52-Bu()* 6p7[yDȋVJYeyE M_&+5Ckw)/u 1u=.1+yN' N)N! 1c u1>!a}' a' EqXhq uluiuukG|qIJ z˗SpBuff *mouse.sprErKxPMΠ ~#Ӷ#ѾY z^#؞,Hmdbef^;\h:¹M ?` q>b:BDBn>CZBFCBBLPA2^\B Bs:q/b&eܼmbּSe[̊rBBάF>z@vHAAL>>PT^6ozsJ"E0HC? gAJQ?JvSGH>-$i&J(z;@RlBNpքjC@0~D7"U@:@T@ fS_-3T(29Iؚ^i` a&s#8eWy`p~¢)H!!5C'R9fP8|'`΃0p2+bYV58QmR@`6wiwC,QQnQݵBE+T2Cm/Jf xp\tv`8*QJGk2' q?8Lc`껻 Լ 8?:?he|7 6"9≮vBSG6eq`F 4Ohe:\N\&_>.PBCSB2 DSA&z06ړs5#ohr 4:zl`o8l oNj#l6.l>zo::3O TɺE3ŭ<>3aC3<Q!4Nu<`(@Ak`k.mVA@W (|j,x `07,,f% ,7j (BPJ;t_"o$_geizZFެTZԑ0?(z~{fԖ6`JBDhC::UASB<T6tL>M>B 06,28 Dp8GSL>SG:z:6jE 2,#A6< z/&J$KBDW0-~g RDff 2*Cm 0 6uL>#n .PH46g CN6GRBHcF4|Gz2 B:Ce$`>HRFN򨘔#>B@ LD&I(J8 D.]pgKf}Xj+%KEI.BB|y<"Mx?lg m &LB/ λ6RE<RA/[f SE4SF`6r4.w3(H q 2A0/ Xz[qCrJAe`Ac.XޠDFm>U2N,z(E;Cc$Nd e8Be zd_ճ_835Qj3ܔVH<]|op._NT5g'W%"xQ˽ l)(Fݑc!0 l(UjX%u@3o6Wgs@NP nApU^?DBA \kc 輼z p׽BP8޺8<;<3k"0G9G4 zz"m7N qJE4.0<."؉l CYDV,KMʹoHJG{~[1G|9W>8žDO+Rq4-F ͝`$$ۀwp~0{@LB4IS@.VA5 Jxg\6 %#;Ǘ;, f0AzFelfGl&JL}$4:J(CSFxGg˔pf.Q<&8N X,CBFŴh%Q`2VcNe4$ pXggVH1i9PprS,ꥴZ`5ewUBAw/8αh  Pǖ:*ZR T}[W 3{[Ec,-a0246#Cxyz{l~Cʤ"hijkɵQ*YQY`?Jֻ2222a:ExSME0:4j`6v?DHk.@ek Aj Kբ,8.˨.TL\$v01<597kJ| kQ&Rj,K:N9O K"J<g8vt*d&U x%j&k|嶷.,0HCHBHAH@fO: jk$6 4 2 0 ?3333Qg.BC7A5A:mPBQaQ̗3جUCvBB<~g2TSGgR@Fed=`$k hJ4<P WԼp<$HC"b0LF ,">ܶGR4W MUR$$G0A$CF44ľ:ūN?+DE.,SDˇ"*r2, ):`<"DÚ kDU5LA:<Qܶ|683}JArU\JBjtVdJ^hU:JGXVe<-nZ6ؔDCADDBlV9:@HKCDLX[zI,K$\&J |ɶo9CAH oۤ:@UM2Kʛ :q?|EZJEgy p S@35^h g@ۇ 6:DBLkzC(xBC` f0~Ŗ2fYOlnJC;,}6<8< 9G+^+SCSDGw^r`A73Øb3hCdK0L1ůQ+ƽ\Pd0Bzָ]1 l <XBtގf ՀdSAICdE}0000ņsdRUYy"zH2 JQPQB:ݴQe2ei(nd'"keg&N g0m 9b~p3ae _8 g.j-f&4b!gkG z07@`gDAdt@XU\_8cզB^<:՘IBEN*EՆ%RAIJ&R(Ԗ)iR@ ]3BRp!ۡFcZLzp5"ؙJ؋4vx3oU8TRldy@ &YIBB.dUgΜ ʈAH|Cx50j\OYb*`\RbT@v>Eř:͂DB f `kFTB#yZ֭ef;qBYIAeBXٸ"V|4ĩևdI4ƌ*N||+<pTjjO'XR#`H-`}8x5} ^j`< Ppk1u3bOV#uMN;9T<NEw/K|[6KBqa*zIB`(M&OVBBn-(@TS6<|@(rNSCl`jUJDh:PE2*,5( u JAk : )@Yj̻uԼ=M0BQ4 sL=|lgXBPd`X1T3aJ"NQSAcOOM>Ί>,K̬Ip %+DKv],Ugr r0HH2-78iPZtV`Cx^n,L] wL T@,MioaP"?o2BC` xrv;8[ V`EeM1j8Hx!nq%t]C<v=C=D<0X,fہvJfZBܮ Bf ?Ė40[q(zF9g::`~frӴb.a!Ar ^"3Nf}x g> G@2Aw@vH@H/tJے陰Agb&`S@@0 UUl~˸3ن>"Gg^l<SG4&ƞ@mfƆ6U3l`6Bf/ìtABI5IRA%e|A1:F`eg(>Öf3zfXe@҄/UH{06.g~*k Ej0:ȲUoCEȞ~`gH RN@%g]fBQ)2&X>0 .fJigȟ2):Vg5`23~XB3[\@3ab29AXxzJPfRDfj R&@`02<4(hP+BP-`><<_<,,~dف@4X2> ^,Vûب ٮ8,BkeϐB[BBRFF_B:ôt64"H&&v1[.mg8c:K$:Q:54|}, k ynG*H>3A0#w0P .EF{l$I\o&J2AB r@zaـk8U݋=@:ESMM8E<a U>=I!4b%8^ J"K?: H0&`0 2QL(?FeE'`GSDjxSBg Qv9֤ )#de5 SnnފB?.L͝J /sPlvE,K RI:r0HIe>ڵ2(A<̈N:ZS 8LSE$H&I2H@6C H402&`6?ͽeg`nVNuwX*p,]"fL&!Bp@b& $(h0M$" 

^IȎ5ခD u@G~KFmDOzf8Y|,.  ~^~~< ?$g1$lL4>JʎĊ[?ū?T (C?şrSJ҈LQXĈ;dp~K|FF")LF,aYD<ƄTX3a`BDJV4iYF3 0Wb @2)f$B|C ! A Gg?2օ!CE »\A]  v  ``&YA6% &sH # E3W^^xA] ڹmޑ:YLS=BxܧB@UlZfU(Z& Yj Y(jxM&x{,@{Vmh;ъMULqTRWS CARv%YX(.EPTXMAX-1NBPLANPALȄM`\n``1VL:J-2nB8Musics M / haw GGp1S$~Z8{fR?-O[Dw/j_YTPKGo^?<~52/-7(&$"#Cd*z ,EpS#@ #*' 9ME#E#H~HC"q{uL~Ns09r>: pJ*gSh sF 4pS 07ye/gB<:tf Ig3ǻh`,f~PA2ICRAt׎)oȥ|$zJVVg M٥vK:@6.:#`k] g;pJn,`@z0 DeBDLP4J ~ X΃Y`RBY[S0Hbv%NjFHBJp5c\pSGp C.BQN$|8 t BfQ` t >Q,?cAb`W!  FBXPAB(70:3FABi%4u2A:&D5:D7*v`(@5D  p TR(0Ar A@-@;( UH p $R)@ x8 7`@=1%( o  ( @TP @9>@O%(   ( *t`@9@I%( o p 0IDB}@?Ç@x( =  p0_a`@ ?( eoH 8p0 $5@ <( % pp 0*I)T 8 %o p 0/ &+` > % p Lr0* ? %o p 0 BL;R = ?? eH  b0ްI?갠9 ?? %o  0Ѐ.px@ ? % q  0Ajx@ ? %o ~00ArSx@ xx@? % x<0`A@^@Hx@?  @ @=^A_@?x @2@AA@T8p@?   ?  D @Ȫ#d#9 P8~867`@/  $_$?  ` 2(@p?  $'`  "%TpVx  !'=Ap;@ >0?2  %TAQpv;pp?  ((:? '9Qpl }ǎ=w 0$HX %qCQ_p@~E9π P H0 '>0 yQp Dq $ p`~`!}@x $qG Op , | @  %<< TQpc/P<.@  & TQpIB& p@@@  $O Tp@& ?0  ' SOpG& 8q  $1CpA%&@A'y $a> ?p&@8? '87pAB&@@? & .p.@@?   $ =`` ,@@?$ F $ ;a! p@@?$ % $ 7EX`#8@ ?& $.~E<@? &(@ $~=XT }ǎt >P $H?j;p ?ŀ $HUX5@ 0? ?K0 $ ! $!pUX>:`0< $!?8Հ80 $/   D PC - ? "A a 2 >|@` N8L 8 c D(/0 @f` c  Pe` ?` p|f`i03O>"h Vc` pmV07G<`"Ȼ U9`` ĐmF|`BP4*}p `  ?q}|^:#FlB64yx` x NcFm~Uq|` @3sEURF`@0}~``  IpF`͚~\ @9``  y9!F`͚>h ` 8F Al'1F1"Wp@|x` DD 09b7F1xxثp`  p*F1rxx RUUTg` $1sEJF xx&dd` J@N%F xx UUUdd` TB@}|F xx?d` 8 J@m:F Pd` 1m֚F rp*d` 6:5F <Tb` @?_Ox\Pa`3` H?U@ܨ xUUPxpp` >(& xud*|8` 0`?U`(.0 xU@` >88x"$  ` }UP U>|x"$U?` ~ `Ax({@ }UP UU T   P<0<N<<r@;̀  !    Ux"8 `> @@? j?" < A  Ub ` B  j ƈK `t B  @T J? ^=' B @i N "K ',0 !0@Z@! E A9p H$w{!  pA @ Pe)?E@@$& ?| n='XE AD  B|!Pj'L `  @@|s|^/TDP'D @@<wlPT6 ?<FX  @<T \6/V`ET @lIPT6 /,lE _ R@# @@T)\6/Vĥ_ b ( H0@lT6 ?<@0h 00TA\4/VJ?h plER8/lXww  p`Tn'TĹT" x`lEi%?|ܪX! @@g9#TU\ ! ``QtK! v  &@炀 U{! U  0e i0'?ݪAb (y8Ul̀ 8 bE H>Ujc   ` X?|Qku  J 0EOj?UU  EAjUEUU x P<< <^I {r <9 L1$ </  ! <Ƞ < 0 5߀ 58X 5f@p>P@ 5ϟ@W 5  O  5   5 7bEM` 0 Gӧ C (  HH *  ( HHpH *  0 jxHD|U 1@C ~ H0|U0 J@B ?  > bP\U( D@"@   < BUy(  @"  * B0(~TU @  ?c+ `D<,U ܨ @  0 i U( D@ A? a<@ h "Bpp  X>0V G T*   %D\ `H5V?P R  %D} UUg  ("H\ s?k y H o@l :@)BD<`@)DD`)$ 1$ 0c$U_T~HH+j?p8+UT + + \ ;h ; Ç ;  @ ; @ ;0dV5 ;  ^@* ; V5 ; B* 1 0`B5 1 B* # B5 "@  bB* "  bB5 8p B? D xpB   "@ ~  *   >@ "b ` I@]x`B@ `b4 H@1P@ @@sPBxaVTI( @\PZ"`p  X` @Px߂Ub5TP @|R  ~~@@UWUTP o \ @7 + !C@mc  I( @@UF  @  E`@i@(@p<Ԓ@[(@~E` T@<10`@+T@c?EUpp` ?p`}_H@ Uq(ppW_`  p(888AUBp0 A? 8 8>?T7D ?8 8<op;;U];;U[;;T_U`;.;U_UX;;oUX<֪<UX<V8<TX<G<`==|P>>P   @?  Ϟx?p`8  #,`>8| hO?` |8KA|? ! ?8J0p>p}]` $8l?8p $puP`0 $x?x8ꪰ 0  p {<>BG7X    y?| W 0  =WUV0 1@:`_ÁuU`? xx@u]UUxꪠ 4@UUUp 8 UU_U^p8꺫@jUUX`p=8UUUV5^j|x;|x8뺪juUUUWVX8|x]U]^*   @<믪5UUUWT T`y0@UU]]UV< @ 뫺ꮪ UUUWXT?O8 <4WU]]U0"O0 ?H 뫻UUUWXTp[  >D Wu]UUpr` x>  UUX T@O  @Wu}]W  ?ph` |?* UUX Xp08` p  W}uuU_X `` @  ꪿UUW5X x@?| X _uuu` G  UUUWUUP ~P ] UU~ ?p UUUTU` ??P@ \5u_j  j` UUUT=W?zT@ `  ? D UUUV U W^D : :}UUU^ _u@ ?   UU ??~ @ DJ$0|$/  ?x)HD 8 ?6~ "/PUU| 8z` ?σ8UUU 8< 8UUpU x8: ~8 UUXu0 ?8  j`?? 38$ UWwwp ~y8/f@ 8UPSS< 8 8UPMOO 8/p :xǀ 87ۃ̀UUUUPu50x ?8sj?wwpj<0 A?8;UUU5U]q c?8D?jk Xx ?8}DUUUVUUTSSp< :?8 ?djj   N8OUUUVUU XML 8 ?ǀjk:   8 >?sUUU5UU`u50x 8 ?jj`<0 8? |UUUUP 8 @Ojx 8 `'@ UPSS< 8  @  `8 @ UPL ?~8p@ |8p0@ UP0x?|8 7?@ <?~8 k}V@ UP38F{@  `x炀8~@ UP<?Â8ߪ@ 18a5@ UPc ?88UPxÂ8{"<8 }P0<?8  `x8Pǃ?8 ư!B?8 P!B8 !B8 }P @?8 @8Up P! r` 8<?5x`>~0| @Af~x<p ; 8 @ P`q?~?p 0?8W@ T3 8 *  ``  =?08@   p```8  08@   x>|8    ?S p8@  ap"8 0 8 `8A8 @ T |  0@8 * 2 <AP0 2#? A: UUS3@UA  @8Dʀ`8*  A8 / S 8UW_A #8U g  !3, ~  80A?<& UT?A  8xT@7+  8 ?`_r!UA 8 T` ?1(  8 p = !eU@ ? 8?lx 8;8U` 0U` P)  x ??10  ?|  (???p?x (?` (?`? (?@ w(_  w($?C w($@ ($?~xx w(:$ ??pA (UW ``` (~?`00> ( @UUUp` @(p  G @(0EWx 0A (`? p8 @? (v<<  @ (À@ @ ~(LuՀ`@ B( Ò~?ϯ0@ B( RPx]U~|o>@@ ~( Ò ~` y@@ ( PuT~ 1~@@ ( #~ ;{ @@ ~(T|   @y@ B( ?@y@ B(p`@y@ ~( @y@ (W8 @y@ (>>?z @x@ ~(W$ ?? @| B('@!` x @< B(WU`@`@p ? @< ~(` @?#1< (Wp0 `0x~ W $?  ?A3| W  A<?  D8?8? W|x P?|t2"U^F^DJ+C T`@ =UUU_ ǐ*?pb pꪪ UpH8UU]U|T@ 0h< ( ,4S*?(ؐ x38'U`_(  c>8 T P90 E` * =8B`p Q\@ c#880 +@8  0sXc``? DŽ<P|`GCb<, _ 8z 2@+08? ^PxV0f8Y x+ǀ"$`v \T 2d 0pxl` pB6`@ Px00 03< x* `? %@xx  UU? z@* >4 8Vx @"0 ?89P? A@`   APB@> @@    (p8 L ??0 @@ @ Ⴠ   `  `@  5UB   0@ ~k@?   ` QU   >"(? ?? @@ApV@? ? ? ? T AXU ? ? : AA8? ? uP5\X@??`? **,?8<??0 !@dVWЀ8? j+ @h UEU` H F * #J$TEUt U` UUU #aK$+* *UVs @0_PUUUU`N `DL  *8 0DH@ UWUUU`H *? 0$ UUUW @a$p@ *  8  UUUX0     ?*`   UUU   *?0 UUU>`@ * g< UU\9 ?@ *a !C  UUp 0a` ?* x! UUUW  *a  UUU\0<8 *`` $UUU_ ?  *#UUW #>* UUUp& *0&  UUUWP< >  <~   ` 0`?      p~     aU@T00N  8  ª:? ?  p  0`р? < 0prU  x`@??  3fX `7UUUP?  @C{0y0fL! *  |`?UUP >p>C 0?0aU ``L? !? ?@ gN`0 eUUUP ``@`0&@E *? @p7 @8?UUPO7?1`@!@`?`IR#F Uǂ @`0|MbB00 ?  _pp|1G`ETUUUUP? @`8|>O0 *? @|`M8TUj?UUP _|pE> @LJ@8E;? 0@d0U a8 e9  &L!  > ?8 p4,`2  UUUP  ?0@ *?x0. PUAUUP??? 8 ~   8 #2Kp  ` UUTU  7&"o@  *  |.g#&A  UUUUP?  |Ι?2Ba *?   ~hfEـ&& PUAUUP?   ~/3Kނd14   }F^6dgL UUTU p8 ||x~$qH  * `0  |<[>P  UUUUP  0 y`|? * 00 筺>?&h PUAUUP 0 ʲnO;?@    ɲ'pe8C UUTU p`` v2[gZ8   *t@ d"MJ8qx  UUUUP@@ l&F .Ky`00 *@@ hD /J؀`0 UUP? ?py߀ 1~ @ Ppath = a:\hardcopy\ ;Device driver path ; 01p screen.sys 02p screen.sys 03p screen.sys 04p screen.sys ; 21 fx80.sys ;Printer 31 meta.sys ;Metafile  `,d`,LArc's PFX 1.13P 1990 -soft, Markus Fritze g.h` /H*@"m mA$H -(H!!!!!!!!Sj JC pl QN , HD , p,m:<0r Q&N~*6<Q~d So:Q` H"CAD@CD@ArTApAQoQ`&-A& LA(HJkf&CH"grאg<fA``+D +E+F.ޅR؃+D؅+D+VC m Sj mJfA, "gr/r$&(*,."A$A&A(A*A,AH~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H`Sf"|`B QL gpNޭ.-lz5-VF:\CYBSTUDI.O\CAD3D2.PRG`>>*O.|^*m - Эм// ?<,JNA N>/-NA"/0<NBNuNVBBJlD]R[ ` RB0. -@tx2. An=} .gDN^TH?BCB.},f#_\Z <7`hlDRCJRCn8fzB`0l :HGH`xe`Jg`|fD#}D`*JL<``` ``^V|glglgBy2^d<f>.߼BmBgBgf?9m"]<,<4683_N y f0||`o"*{ly  y;fg<{``( y9E"fZ3!00" n00R@!~*(B"!Yv  d $BF`t0F#K?Ҍ!P \%@6>/<7X.( f:v ۢ! 3U66$2v !h RF|m :&v("%5?$1<.T`F2m ,%Tժ(6hz3`F2m yN"#Sof@J"f <4`* 2bf4d: 4>8E165ACEA5_ yN"&:5bv ~%1$3{`R"'|!{1m6 l,1f$jHvEK>6!*T @Og"!||=f <L,d H 20|A&0d\ W f<Ҹ`FC>U `4 ^}` ,۞!)6 `n!Q4Vd<b`<36w,!v y"f g*f'!l ^/Bo &i.T 3gp62"!b|2V!T.d02,2<+T[`0L42,<,M&Q3QӠbd` ظʋ"!S,!T2kgQT0S,#[S!,(2e484TD2e.8.zjF20801Sнlsf3o#@~` Q4f1y g} #f.ӛrJABg,`2Ё"/O/vs!s0Ē01f0 S.2AHV$ @JPgF0Œo`z`BE 0ڈo$ҨacSAެ~S 5Sp02F02F2m޼1蓺0[Q  OƑ azPn T gw~:BW@갰@ؠ X//z>q-8vsA~25~Qw)gc(1TA Pj~B@H}^(X# ۮϮ߮v3H6#0*/<G"!T0^)Pj`fsFXj'~`28S0(~ߐ΢~C:r@rlѢT2|h`1"T28SSf&!g0<^'jԥtD߾dC3Ē:BTzn *_PSA:.7}.>hPrvbާ߫ߔ0BD44,w4~9E`J2j|֔>aS!zT=@`n QsJnt`$òs &.41-2'd pT{/z,NȘ2"vé 2Aj0Bg"`h NZ4mØ$`AR7R%ڰT+&!6wXA/< T+>q'3ɂ'7")b(%zI` !`zInDA0Q;g @ U.38>@($X?/v"0``S@Kb@0@2x PN`T4i6/"\.223Lp3v@ Q.TzABW*XX*f ~!0Q.ZO.@HmЂI0Q!&<>I2B0*7=n2`poQ!ZC6&BW0Q,JLN^NuNVH#F@6# WD}qX0Q5B_.Qbfp` QCn/pIrvr Ұ೯g<R>jv)Q@>4^w0pBU =BC\&mb. @?.?BCPQf,&o nl3BQ&TZRZQ>R>BEbSrGnUB0BC x Ap:bqrAr^&CbXB$bp*b2B$fŷ/? ?C\ _0G[m\B0C A8d *zx@ʀx@uۘ833pkFp x@-3w\lx@3@3@33jx@(\x@V=$r$r$rbx@a\a@cȸacF#Bdug`q yP`qt0azUx@zx@ zڐbbZb򑛒zȠ[0|+0ؠ @tŝ0H mREj3Afśtk23&0UiP(x@P*&BE`0آBPH&Ev@0ʋ1Q`< mڃ1|dȠdBD`XڅЁ2DЄ؇*H0CKnB5ONAoBg4.0ck\` DD #F{*X\`ֆAD\\aD:\`Jl\`м D \` м\` D\` D\`м\`м6\`DOAм !DUJ\`D\`U\`DOAX\`D\`lSDZ\`Jмd\`XDtSDAsHDB0!=h"0.'>R2؈%ldb`>~p` x)ڥJ * "]!4\KQ0 !Hk`OA fx\` LQ(,Ha . 6!1J6XZ@rtˆtY2t$ 0T!5pTl/WfBW!T3\x@+B2<+ B5S -x,Q}a@S@dLP bD@Va\`HBE4JKBfnt Q"ײPPJ waFFRR-@B֋zaaB#Aͮ`@[fn<znz$f-z>"ߪrXQ$r#|"x&|"Ax%$bԶK ԰&)bKp&)b( x%9Ԣ6"6">9Ԣ$.P> @#plWp`R@0Qk"x22v~1::Ao #P|32PvXQar0`-H .퀋Tso;2zP5gRm@2#2P>3Hm@>aL>LLNB^>L^aaȷHGBzBjLx2"K"aۣ K aKBO` >EC B.\.jB4\4a[k؞j4Aj0/RGZP 4Ab0Kb lb laKFbLlRLlƶa€KžJ4A0VRbg۠gVgbhbhbZg"gbhn2nDx*2*gDDbg"xz=2@Rfbhrxbg8rwwwXv"8T[1>(F(D(B(2zҮҐ-\m>oҺBg08H\BWƅX-B\ FBg(pk3]PW(pH2BWth3Z(p\Pf-\0ܺpVR [bfڪ**P fܪG/h0<R(J~\(p\U$\Ud0)0<"(T.0<^2kT0B}쒢24-p_"VgN0F"||>ڥ?0槩6򩢔wtPmTĊ4[ Ħ06X oe>g0l!,&T`4HB=BLUS|_򲱠blo*d HDZ Z4f̣`(@4 BTd \dddlxo򱲠d( *<T,S䊁Ĝ2To`⊁BpT!(\`\Rf8~`ŻJpf<m越1r9`ׄ`2*W%Cg#q`f fNLo"k'-&|> >x/,> /-`u "Smgn"2 ` ߰a a'  4"H ~N9LwlN9Q ZTf(4:J@g60ba(Lf!)<`";*f60 0t0@*f:3f2>JW@f0ܢ0\6#Aʢ0J660^mBuAjBBBEoz>:Cg4$5> !R!.)0^a 64o"q,``S@|&b@0@BB PN戲,0.1fw n fXm*$F*o+TnnF`$2>f 8TdgY2Z2U`^2$S,W*S1(lQnS(R,6Rx˩020ABg0|fRGclZL5B`R3]?ZaКfRlPyifR[VWSlP"ПkSlPSBϗ3t`Χ|7^\:|w0T >bTB@qSؼbTS8x|!|8JQФ|]1gZATw^Z> J `g÷`0"H)@f 1zvrg \*1Htp1$̸FT`k+㲜LTQgf.)CVBz&0*`,ZX`XUZaBz"P*?. p2. "0 .p/aBVCfb(:ҍx/@Nwz /OLP* mpD/`P( H0fp RG *Jng*Tt 0f V `` RG@S@@m| 2BBtH?. !X8BEGš!'J@l282+vZ1>T!gV=CJ_Fm<!@fRZ8+?:?CPU &/}^&&`x#5Tva?"gT6D,\zQcb>IfPz0.G2qQGAg `"pXv"N4G0rrmrJEf²:&0BvUFauR#t~2/]0"V.]՗:&xprB5:%zg3VllT(:m$zg26-:?zsp,XuR P'gXj|Ά{ZqL.ÜL݂=Ā>=1>:ֲ=:=:A;1=Ѳ=H1=PZ: =:!>"=A$N!>v!N:'F=:1;r:)>A*bN:+>~:,xN:-6Nӡ::/JxN:0=1xN(c!a;h:3^1>:#=̛Bg=j)]t`6Nѱѵ::1AkL>ѱ';97K:xNR: > =G1$?skf8_k;Ҕ=|D=(g[b:N'E6N^A4~ҧQ59,<5oX#f2j[yZ~vZzZR R0<@"ł@ZZ fZ2ZVЭ Z v ZϡzڼZāZʄҁ؀ ƖU8ZZ  Z&ZxVZμZ1Z$8ZZ#Z̼$p%ˡ&8RҼ'O(Z4*Z)ZU"Ю zּZ!z&:HCW3 F 0mࢂ`w,SRG[S^l^a-HP,a0a,`XJ@gBWBgZX_X?`!vZˆ_1nPq!Ъ<.\SЮJX @g& ޝ/CbX>ÝЫgBT`(z,ᢊo$ll~ˆҮ=`+Ú,lOfl#6h`ā0( _1ИJh oֵ ȸpz bBG<n&TFlf5TFޜ0Fz0G{>/Gx1ҁ"i00H&(X)P/ _ L^.@RGRF"^m06TFJP n2) Al TZxT"5b"@2F0G2d t =d "HtGϒ&8$ 0ՠ!Sк!Sz30e ,  @9wT U0 8('`['Аߢz:Z*!=P0.ܐn_n " Ҋ, 0.?`Z"ᛞ>j/v,P=(LT0BT(L`/r/r*^//0n_mBJ"P "rkn"! 22$?:9I?;:9@&j)  00n0n./3(<%3@ 0%6 8%|%`%b&,BG`S0ӽ|P[m@0 BeB@ð\_mdn@%z;NѠNg;NJC hf lfd`|=gn`=g`C>c nl?.ЬP `8,@0Fp0:B2F@mS3Tova"7"a`ڈ"zl#$ۮ PZ1/|#ɚ%6r<Nu1_n1wdvx0x4vx0w vxYrvx 0wi: vx 0wR6JvxT`vx_ ` },m T3/€rCg} TfrCf >-` Q.\gn,@,0ER PgolBk1܀0\Fˆ,j\~`Ȗݫ xD ^D,@bS f*0F:G0EZjn:D04NDBkmDhTp+\^PbaĖtDȝZfRrѽTS1TZj N1&F2DfR\.!F褠;,@<6g6fEma`^y Fm*XXвְfd3[U ̰ǫr̰&rCoVdԈlLV\mDd:~k[~"`~şa~R`rD yB}Ɲ-2 PSϔFz}` yKR呵BXԊoNf ԊliҌos#ьl0~(S,~*aC`o At n Pgo[:{hoӻ:`n@оn@Тn@ :І lx@ mn lbC3Яj螡tpt@U@prt@}~t 5ϲհ AFtʂLx@\@x@V-LՊV n@|c oU_㟠h`zYhz`NrD0XBOTg nSLgSUr(:$A:f~a`PXeBHbC:R[g,`>fo!TșCBWؓ cjC}!=۔訞rplt%!mljpqBr\Ԣ.zqFv.Mև Tv`s$=C.SRW:S}PWP,%T`Jr,q&6a ` Լ h1qɂ&*L  ➰@<`&ԐSџ`q6Gsf̔= C . yk yHĻ VɘHT/<GH{/0(X_)P#@ƊϮŸȌ|a z? ` `hU|$@fɲjj޾3H~!sL _` h2*R´PԊRS²_ҌlxPuP~!zT  ` hנ0#)00H0*N2r~L  `w vxnm`unVN!S.2AHЁ䁹$ @0}BG`0GSp02Gӑ2RG|mU ҰJ\0 BP*Pm 0_`Ծ^n JՐ*ohn>f:0togf0wTJЦ6H2003nP`Po `ld4P4^4d4XaZ~!l`@jO!D#U aJPzRP^# Pd@]^$hRPrj$h@bx&mwT&@D`^# h^JP *- P,nZ& %j/nRG^^#Pmt"_""i00ۘA2*6 4G0ʦ`J70Ho0zQ8^#0NsTj2l^#3m耱T(T(` q00\ُ6@T8~`A`jpMCV%j&2|D14192*7^3H36A|0=DT=2ـʧ-Tl{ozTlR@*3u2w$1(H8aja?`6/kB`V/Lj*U>x*0&3" $)Ԡ D-I/"r_28ٔ"?4?&H7 T?f?S~?R?8n2p:6?~a0`<- D&OQ~;`#@Bd\ZrbpoX0B6Rd Ezf`aH`aD``|=|ub@0@C߄ PNāCJLN^NuNVBWBg,a8P=a azڀ|ֱb3ސdāf3|hUj ސlސnސp.b0P50X nJg: "; p`B@H8BF`,0@H2 @24BH҂Ү"A0RF|mfmz#t#x<|ā~Ȣ3U?ꠂȢ<ޠ=|=3Bn=CB@=@ U Ht l*4 nf0./.aupJ;l 0Y?|h`pR]$ wamzn  RG.~CGnzydSf Rڰ`+S؍R9bR"Ulnrv1{;BW1;.S0!Tudf t"\PZq:`DL/. ÕF,(PÕF\ \K6>"ª(x8Tzk~0 @6A$JpgU U<оԠ^0FB9bCS,j`*`(2 0/jD@NuHE E|1pC2/ I4IB o4/ H|8<l*иЭ @ ː˨gPg 4LԄѭ 6AF*B˜|A01DP` DPLm^!jQPBgJ4q06@8:@<0@HF<1@>0PHG>1Pj3@3FHG11@|jTBBj`|Nu 2DVhz .@Rdv*<N`r//&/8/J/\/n/////////?"?4?F?X?j?|???????? OO0OBOTOfOxOOOOOOOO__,_>_P_b_t________oo(o:oLo^opoooooooo$6HZl~ 2DVhzԏ .@RdvП*f4|y4d>0<<d6"o0<"?S@fNu3B 0BNNu/%NN:ѫ#-.^H*k"+wL 9f g`1|>РNuϠ#Ȧ661Fb":b4"h $ "S@J@jv3!-.Ѩ.>2>4ھ$ g\`1o (Ê ogS`ÎD EUNTNT] TlPlp @F&l|а#}FߠJx9ZTn9^[%│8L`0>:M`(JFf LNuCGkG BGkGR@SFcg` @gHH?> 48<&o@(oD*oHM .=APLf23465IJK0681|g,w:2x >2 ?afHp]al _L_0U  x0 0EP.(0U0x (T@SnPf,` X(8JdxYeDL|Nu @#΄ H ⱗد: $ | Ml ά o Vʮ  ЛJ @ AНA ?1Q1i"00iH0! Nu y: f }R3HM ߔ8/://"afN%L`7Nuްp2pnoPnoX1lT1lRr-330111gf|?l|oo1Aی1A1zAwrD,E^Jg4.E6D6EB:I@`JGADTAR@O@B8k@`@(GALO`@ GAnO`JgFGABOTKdOvKٔOKr ijOFN1m1n1mkQnj@2\BB>CP7Q1mQn1mQvQ~BB<BP@޸FcA4T<<CjDFDCM nM0H|~pF< JCg\JBgNC>@b$:48JPCEBnDXdT`Nu:68"d*dGP4`T`PQ|etȹ6DC*01@XCSB8LĹB21 SDkp0QP;?]P~4cQNubanfNu_UZQiZ(^gh&oX9a;@gNtNlX`SQi2FACbXsePTOppp `*dU 2`Y4aP9a>g~NjP`gL-?MrRd?r􏤉NNp+xS?wuڟ؋ Fy Ϣ*<Ϡ\nϞfd 2ȩP)lh Vdڎ1%7IP 1|H! n᪴b1?,c=o "$0.nfffL@{ =nP"n2|A=]p "=q $U&(}*,6."~@$\@*<HFP(,HG@&HB2B.2_&HAP,T4(B:I0&T_22v4~Y62Dy8 2P(\=5g:2P4DBH<>"z0$0&F>@N ".$4=FLZNFR00`21``.HC~@4HDD~@:H=WC@0<6FUR4@pB1`3`5`TFSGdLUD:z0,0.ݘo004$o8&o<(o\9t:n$`l`j7``FJnRf4ghJj0~ 2w0@g>H 0$L~@N< g :41BB3n AfJ|:/"/62/T#q&n!02Ke~0.G`y)B[t $=Vo8Qj3Le~-F_x'@Yr 9Rk   2 K d }  + D \ u # ; T m   2 K d |  ) A Z r 7Oh+D\u7Ph*BZs4Ld| $<Tl+C[s1I`x5Ld|  7Of~ !8Og~  7Ne|4Kby0F]t)?Vl  6Mcy+BXn4J`v  $ : P e { !!(!=!S!h!}!!!!!!""("="S"h"}""""""##&#;#P#e#z######$ $ $5$J$^$s$$$$$$%%%,%@%U%i%~%%%%%%& & &4&H&\&p&&&&&&&''$'8'L'`'t'''''''((%(8(L(`(s((((((())!)5)H)[)n)))))))***,*?*R*e*x*******+ + +3+E+X+j+}+++++++,,!,4,F,X,j,|,,,,,,,- --/-A-S-e-v-------...&.7.I.Z.k.}.......///(/9/J/[/l/}///////000$040E0U0f0v000000001 11)191I1Y1i1y11111111222'262F2U2e2t2222222223 33,3;3J3Y3h3w3333333334 44(464E4S4b4p44444444445 55)575E5S5a5n5|555555555666 6-6:6H6U6b6o6}66666666667 77%727?7K7X7e7q7~77777777778888*868B8N8Z8f8q8}888888888889 999+969A9L9X9c9n9y999999999999::::%:0:::E:O:Y:d:n:x:::::::::::::;;;;!;*;4;>;G;P;Z;c;m;v;;;;;;;;;;;;;;;<<<< <)<1<:> >>>>!>'>->3>9>?>E>J>P>V>\>a>g>l>r>w>}>>>>>>>>>>>>>>>>>>>>>>>>>>??? ????? ?$?(?,?0?4?8?UԐА̐ȐUĐżUU}rgU\PE9-!| >W=tplUhd`\UXTPxLUjH[DM@?<08!40f:N662.7U($ U~eK }27 6UppppU}pbpHp-p_65ppUpppnpSp7p5 4UppƬppUpppSp6p_4 3pߌpUppph|puJxp,tp 2npW2hpdp`pt\pUXp6Tp2W1LpHpDpU@py`:``6`82`W',`(`$`Ո ```8`&`` `&q`H` & %UPPP~PU%AP%$UPPPsP}JP $ #PUPPzPPP_&#"PҪPէP}PSP("W!PӒPP~PSP(! U~PzPvP{rP}PnP$ fPUbP^PvZPJVP_NPJP՚FPnBPB>PU8P4P0Pz,P}M(P   PUPPmP?P PPՋP]@0@U@@@b@4@W@|@N@_  @@Օ@g@8@ U@Ĭ@@f@]7@ @–@ݓ@dM@W@@|@u`x@1t@n@պj@f@[b@+WZ@V@R@ulN@0-W6020.0ue*03&0 0յ00Q0W 000}V0$  [ )W }` . eK2jQ8oV=$ t[B(y`G-~eL3jQ8pW>% v]D+}dK2kR:!sZB)|cJ1lS;" v]E,hP7t\C+hP8 v^F.mU=% }eM5w_G/qZB+nV?'lU=&lU>&nW@)qZC-w`I3~hQ;$q[E.}gQ;%u`J4߱߆p[E0ޮބnYC.ݮ݄oZE0ܱ܇s^I4 ۷ێyeP<'ژڃo[F2 ٥ّ|hT@,صء؍zfR>+׵ע{gT@-ֹ֓րmZF3 կ՜ՉvdQ>,Լԩԅr`M;)өӗӅsaO=+ҮҋygVD3!ѸѧіsbQ?. ЦЕЄtcRA1 ϼϛϋ{jZI9) θΘΈxhXH9) ͻ͍͜}n_O@1!̨̙̊{m^O@1#˼ˮ˟˂tfWI;-ʼʠʓʅwi\N@3% ɹɬɒɄwj]PC6)ȶȩȐȃwj^RE9- ǿdzǛǐDŽxlaUI>2&Ƶƪƞƈ}rg\QF<1&ŲŨŝʼntj`VLB8.$ĺıĞĔċyof]TKB90' ÿöæÝÕÄ|tld\TLD<4,$ »­¦ž‰‚{tng`YSLE?81+$ ytoid_ZUPKFA<72-)$ |yvspmjheb_]ZWURPMKIFDB@=;97531/-,*(&%#!  ~ W  ~zvrn!j%f(b,^/Z3V7R;N@JDFIBM>R:W6]2b.h*m&s"y ͪސڐԐ А̐Ȑ(Đ2`z:`6`2`,`+(`R$`y ````,`T `|ِ`` P2P[PPPP;PePPP P4P^rPPPP/DPoPPĜPP.PYPPP~P/zP[vPrPnPfP4bP_^PZPVPNP;JPgFPBP>P8P.4P[0P,P&P P:PgPPP P2P`vP@@,@Z@@@(?Vm@@@@=@l@@ɶ@@=@l@@ʠ@@?@n@鴌@*@Z~@z@v@p@/l@_vf@b@Z@5V@eR@N@J@ D@=@@m<@8@4@.@F*@v&@"@@8@h@@ @@C@t00070h0000E0v00 0;0l00010c{00ޯ0A0s00090k0|0ϯt02p0dl0h0d0^0DZ0vV0R0گ J0>F0pB0>060820j.0*0ί"030e000 0F_00Į  A t # V  8 j 2Kd~-G`y)B[t $=Vo8Qj2Le~-F_x'@Yr 9Rk  2 K d }  + C \ u " ; T m   2 K d |  ) A Z r 7Oh+D\u7Ph*BZs4Ld| $<Tl+C[s1H`x5Ld{ 7Of} !8Og~  7Ne|4Kby0F]t)?Vl  6Mcy+AXn4J`v  $ : P e { !!(!=!S!h!}!!!!!!""("="S"h"}""""""##&#;#P#e#y######$ $ $5$J$^$s$$$$$$%%%,%@%U%i%~%%%%%%& & &4&H&\&p&&&&&&&''$'8'L'`'t'''''''((%(8(L(_(s((((((())!)4)H)[)n)))))))***,*?*R*e*x*******+ + +2+E+X+j+|+++++++,,!,4,F,X,j,|,,,,,,,- --/-A-S-e-v-------...&.7.I.Z.k.}.......///(/9/J/[/l/}///////000$040E0U0f0v000000001 11)191I1Y1i1y11111111222'262F2U2e2t2222222223 33,3;3J3Y3h3w3333333334 44(464E4S4b4p44444444445 55)575E5S5`5n5|5555555556666-6:6H6U6b6o6}66666666667 77%727?7K7X7e7q7~77777777778888*868B8N8Z8e8q8}888888888889999+969A9L9W9c9n9y999999999999::::%:0:::E:O:Y:d:n:x:::::::::::::;; ;;!;*;4;=;G;P;Z;c;m;v;;;;;;;;;;;;;;;<<<< <)<1<:=F=M=T=[=b=j=q=x====================>> >>>>!>'>->3>9>?>E>J>P>V>\>a>g>l>r>w>}>>>>>>>>>>>>>>>>>>>>>>>>>>??? ????? ?$?(?,?0?4?8?U:62.U*&"U{unUh aZRUKC<4U,$ސ] ڐ>ԐАU̐ȐĐUżU}Urg\PUE9-!}| >=t]p=jf]b=\XW=RNqJucFTBF=?<08!40€*;;:U簀ӬUnUYE0W9~zUvrnyjWc9XdA`+\_9 8TPw8J8D]@q8f:N662887(7"7U~eK 27 6UpppUp}pbpHpw-6 p5pw5p5p]pn5apEp])p 4ppUƬpppppSp6p4 3pߌpp3Upw~pYzp;vp3 2np2]hp2bp^peZpFVp'Rp1ULpHpDp@pyP!PӒPըP~PSP(!W ~PzPvP{rPPnP$ UfPbP^PvZP}JVPNPUJPFPnBPB>PW8P4P0Pz,PM7&P U PPPmP]@P PPWP]@0@_@@y@K@ה}@N@ W @@@gP@! u@Ĭ@~@wO8@ @]–@|@M@ׂ@է~@xz@Iv@Wn@j@f@}[b@+Z@UV@R@lN@0-U6020.0e*03 0յ00Q0w 00uo0=  W t B _ y G. eL2NV.a-z> ?9"2".?<Bg/ N 0 BW'3X>&5X N^Nu H y f!!! R2F27"0/%#T2,3 1|=@0 P8^\3J10e0 |A0pa,.n0XX/ r0gCb\3L;60;`p20642Z001)H nfb!12T|7fJ1v11o1>T1V A1!TJg!DIVCBg`E`20%62 JySпm a+b12`3BW2064ҮD~BPDI06@:0 BF`F0FP>/ XLZ^/B@H/1(Xߏ _ DURF@mP4 RP p02FP"m2kVvX2OTom10,1`20j62FD!MO`=|AD041 |ASPj2062Ex1 Pn20ZZBG`"1S.2AHЁ @"|$JpfRGBoU֦P(f2062tf 1AJngV0<ص8Y#0ܜb̺b,`0GPʰ@hRGnP`PG|mBA3Tv`2064VO0 X^ rGlq`sOIU2062.Rhxzm1|20642ia(],N2o1'J@l!fzoslBu=~^p~TqZt?bu-@} f CU`aUD`x2063ĮAUgR&/rNr5ATvoC۷*2XgBXtHMsL0._`4H^1ݲQ;d1 !0(\pd18A=cSf>Z[Sd18@\!JVԟ柶@͈`T,>Fz@LT``PAg|P@xP@g``ȮĶV20!61gU20" 20#62:S"܂2L0P0/\`P20Sʖ2v'@(*2xN8@|@1큆'8L&3H,`UTrO?.^yP`nHp܄&4H11)*+62rжݲfR[AGKBa%TT$1_` ,20'63 v20g ӰT:0>Ba#^?p=֜9TT26W 3 4v1Ǹ5T7#\G 3M#@ ^ڳ~®!?\a"p=\X2Ȕ 4n@F3"z`P. R`lRa06@Zj0PP|m[n@rB" `mB\3X20ΒRFGB ֐n@TC`$1Y1`B"= AfCCz 򫒺G|w<F̫z:ʫpJn?gl>MnO>tY_wt_v0|0VVG!+hp D)Xh*(X(}~`X?X|mX0@#߃õ̱$10I/!?? ?.U ҒBڒ"2|<1 Ce2@znwS@@lzdo|>`0GvN0Fo<=P=G G`$<ba f; m֊yH<2. /UY˕.ܭSs.?Q/]˔N7q9|r~`H n2Gӽa2GSI^Ag*|Ge2sp. WSW?jѤ* maQa wW<1ޑQ djܜ<. pdmޜp l2pf5A6$mp8pJ6Wjj20H/(X/ )P-@p-|0>>XT*dGrh`(LX@6tՠ@ՠAsg}2G:ȽHm^6b 7~rrB@3IS $T BTqT XZu6f `vbȮrt54~rp" *0$8JESf%BazS23~rn*"*0"JRApaSz SwNophJa60aDa2ґ2W>T`ldVm%`[2aa`$ġж3Ұ=0 mmrTlTjz(T(aHvV8>hBga>~TR9БRhXfoiofA&k ` N`%TP1QAlBW^B?3X|¤㰔 誱hJ@cgt,`ބɞŦ`uf ~X7^\@xfpojq1_W` H,>PX btX0ؠXJ0.Pl< 1W@H@z.r/rQ R:\r Z:0R $6lD1@J0Xj6! #*XжүPcpuTP"N4G0z}T^%rwTdFzPXFƂw=|P`H !r W h0Nj*TJlLʋN:8Ha@Jpo Ha&Z_fR?.a oaߠA/J.Y/UҞ HF%. Q]8lQk A2F\rN.WQ X"n2jPX$!bێRD@h2>a~Տ0nCN_|P2d^2`Tb␬PDP2*=P^0?<;Bg <rZ/0:G2FX!gqرLh/~r`񔒀Tv ngpP~a֘aR2R./W.6\rDt BapaV@CbX.2!3sP/hgf4gf^aD8ap@ YJ@fށ3'B@`p`B@~HSmbz uU0U[Go 0>30KJf~MJGfX|'0R~Q6:.VakXd`"R%(^8 F!S(_"RQb]cdSZ TЖ\aS 𰲄`X0dJ~\shoa&_4Z0muPP afJ efBW6|!81b$ Nh `c;4HD 6Q?=Cm}ClyfƪS.a @𰸦: rv0kBP$쌓XS0aPnӪgFށԈ9ls#f$Lʞ9a4sJ`0 r;"xٞ>)#b|9><0 ` JPoe^87"pPd6XSn& .h֒.LYǒzVXӏR `4P<`1\qBg4茓42p<NDdhVT VBPB#oJn g0N"V `<`4RH<v4Hʭz샜``<֒79`JHC<5HԺn4fh8=5em&.`C}T$;äAoa~5;c?Чl^}`,`*  rYaǀaDܥa2ꣶ}hOTdqS3= tLto1 !R@ѝT[`6.!T$B.2AHЁ$ @0S¾ԤTf;8T&5T%J2P2QXϬdϬ^h 1& LN2aFRokZjl߬1Tlq1Ӛ5[LDRQۄE`Ppdx)/m yp>2/yf|",P|"LXksI0LR0^&^:RGkP nx+ܐܖ]BI~yFfjШJ3 "?aQl0#Zq ؂"FQXJ@t>bQ:Z`<Zq \{0Zq@|alq[20qTl/0tP+4#o;/<P/$j,p:/0&+^)L*'tTpz/0&/p/<90:BCLgbX0G᜞ .f B`RG 8GnBef(|moSZrp8b-a'9tl 9:f,aHпQm <^oR̲\2X$z<\ BGrGlKlpfv 2Fј85ZP=(~q`8LQ.?L$Jªʂ҂p g(j5c faΪRQ]PRQnE`R#qHTXH\:``ZfF_P``„t҂QF,ԥDH~qsK_]\6ab;B@jH@L TeFLb Teٲ"`RqBq\cc&LqTMZÓLra\Ӣ cހX:JEgY r r ɢ2s⡰">v⪴<.UF⸎rQa85ŲA0  4a8(BF$^R.2AHЁ @"}$Jpgl]Uy0P>$n>/a:J>2GZ/U 'P_ _ LKR L$ ^4e ^B$RGξP`RFͼ~Sp0r2m~qSz0<H/K(X/0<I$ .$üjnJzR )Pl" Io<Aa /;, lqL"/, l/<်Pn)P: 7$?R68Ȃ#H?Z2Ԋd0.LQdk}b mB@1l ><2`><h3|0;@]0 Px(>g>f00G>>a0a<+D2wJFfɢjЬ2$^R*0T6T7X|G2gF^Q XL~S*0< kBBBeRSѻd'``„ t B@ &R&R2J0 ^`D>_.Q`,bnWAXͨ1AS.gBW`Zwr1|С$/ahPkgٌHqV @ (.fqB(y>`fV\fJGnX`P.fB<RFBE`0 }V0`H"1PHAg0_Ep?Āp`(RFRE}mp`SGJGl.7p9.Bgv9|Xr=2ԱRv6ru68x<@ Ñ3jil쳊a _0Xprvr-aj@?OڋX`p jrrڌXа<v< \-`rYU\ѰvvD=FS(*,BPāB$.[QvΐU@``Z ޳J@lZ޳-@hѸghѹf ~RfT .Hf =|PXrеKIM¦ФU8ʢ2Ģ ʢЦ4ᡎ6xF@f.3```S*` a`m<` `0pW`(p pOHHXrW h N`l`NJn*ng`?.r@Hܲ``8ֱ<`(dN\pIJv|p …]fv>в`(:Êv-fg`'`-F@,wg`ɳg ¹&ުjܨ\4 $F/./@/R/d#ӎt//)аT#Jn0V2\0ZV6`5 V6t6U0B.q2AHЁ @"5$Jp^00Cw=P`ba P>2n/0}OcPl;i 0Ay?b5o?CbBLO6QFFa LO$LmN 2BB^O6FFBqO$LNRP\310@Pn.Pro@/<B C3PbLSf:\WDn_Xa=VC_R=Hrhqg -|wQB-|^PAH Bo(,tU(LX?06S>Q_`VT!o3oR@oRoupjo|oomZhooc`b8f8` 3@qXqSfb`2{Ё2Ёq @3barJtXrjnp`tqt@q q=h0P?Qcmcb[QpVW1>T%ѫ8*גk2FfBg#_p$vf$p{QvYvNPҁSπ4ӂـ҂u4ōp҂ғr"A2)AD*NPĔܞf _<`&|k0Q$U€8ܬ>hXSrnbfQ~B@fT4,2DZl*~^~C,ίVvrb𔯦agt+BD8?<0D5>0G0_p>/̳DGJsP W_ PL\ƆDk}^\D}RG@ŶξPm`@U0RDST 0nSHBTfϨϊ@߮ψ\SBG`$Sp02|m]ޖ08>WB8J@lf!zR3T0mQ>Q45\mQZ2Z. BgF0E3X|\ 0JX n f>8'p.QSRWVJf`6✰g9M JLN56Y2ӡ؏2A\ 1PR\lмPRQlȂQRmp`pHRSRaSFpЛ2pڑSBH¶u$0P[SP ئ&8zA _as ߕքL3P B@Xp(MNP`Dᛶ @v>L.`(@>L`|g@gJ@g`A. a>`$ \gSGJGlCB(|+H1Z&0JPo$Vi$jT~i$lv<RF`b0F :`t0EOF XE P{[_WطZRElU~lQV q/2FSIdUZ kc"vPP(fERUowo{QQh d "VRVU& c`gf~{u$ q.9pS@`mF$¡vҨ@|g$ ggf Bw^k\<ЗL<>a \iX *^B hz~ m °GsJ㒽3c`FD )"9#6YY0PHvpn>*pafQ6P`rζ%0ܿ@,Pnr~jP T(z>Pζ0A f~6Q."iVQ"00p/6P B//`@]hfL2_gx)J0g;3VP`22`i4t?3=f2n~2P.W24202$~0V+ Id#2?F[\p\,&n24x-?RO+-RG`@V}Rb__<`TPy_#K/J _ pR0<'YV)& zb&0 H 0>2G:/pPl"i pcbocoobbLd7te,r2zQ}Ӓ b^`ndtXvCҍz}RGgPm/<Bcc Kt*<}Dҍ T&PsatPRaPessIdaBF`TBEtP>0G2"|8pH gAf aQzS| mJEg0` RF=p&XiB(n07l6VRv*/]YaHP`b O`ST g#W0f= SB`BX#TZ ``SG/JGlB^iC6AYSwBņtP&TR,m `0PЭQ܀RGwGnҠ JAA. $6:9@ѭTgT#涿Cڻ|J*n*P5Q&a@ P.c7d0êX$SR;afRA"6acFLJ.A>#攔kġ;zX5?.<+`ٮ,B/ TRХѽ?!P1S0TOo ݄"PxߊXߊ։dߊ^JtPPbTXJPm0 Pl)r'Q.Y0ddd,d6@^^ps70Bm>B0TV` >a6 E`&~1S-갴RU0Uem0S頲 N / ܋.R >(SРJ*PCgSUp``~.U8JPT{Sm zP@HQNП>6/`>L^ҎYڬȸwBG!PCT-f¸ g!y,/>!y)@1!`lNRF2-""Ԩ@4,2/PbBt^N|֒ .>//<GiHkXL X,,_>_^ X^_NeBDVh|/ 8fp 02DVh2 !+(1żbMBkm~*Y`*~aX` ~ `r$ajp ` J@g]Zgਲ@ub.Šs~dUv/Dª>_>|VP곛JJwFwp¯{׫?,/<=ɿg/ad.('(ԡaH,0.:Pz1|2|.BIgjp2fTd5p3Z fXZfG\vfsh0T|W\6XDbn"0]xJVW`ZN/PPmf /rAT|TAY@<x벲Am$rAcxJA#AY)/*S/0?*UP?b?*Q'73X=@ nQ0Sl>8a nJo^#lAW@6F`H3lCAg G`}$,Gg3U`sH:J0\f T|@0]t@ 3T|B0^DzDE0_D|B0`t@1`X%$Dnq!jT`:8qL bRW1JT1Jo`fBLr`W"`0at@aK<N f%(7.?!1)HDa6@r!SmpL^j_P_U8 f-fmtqY6a1b!p`< 0V+3aoUxof ooSִoPo&oSof;!S֑R|nYBThrnPbw0xlgvB=f,{!0,{joxV#0yb 6H6ZdvfQ1o)NoBQ"XT0@6@f0_Q<`%:HqRy0 Sos`B_Zq 9 >2n2Q e G_ ޒQLޒ^V n`ޞH/exl&ڟn `PZ^p9Hnï nգT;e5=n0գq]"Rɢr د~ D߬z F¿濶N2B)P3 >n=dRXa?X)PNYWr\v0l.Ngr&R \a !" v(R,nf`1mT1o.l@ޑ2ҁfdޑfug0fcPRHAmtVѮ#0F ZTF T´!{lbVsLM> iUȐ L̐ ^-F T`B@~2Hz4 lGn fVf g(( f4}@ Pz =56 .`ޖɤG>/*~A(Bga Nr"aH> "B "F "J "Nj "RQJ">g"N,"#'(B&l(9T(9Ķ88(J8(9|(N8dA5#6F,IKIK;G+K㕡Aa $#.BD#@OROdOvOOOa #B@V>HRHRtl`P0Gp-8f^_Х t\_t\~qmDVQl!XtRR|@,P/RRxl@' a,k)PGh#ClNbp`8TXU@XTx_ lto.o@jWcSaMc]dTTP8STBdmooXo_`ol:phpcIb_&g.}|$@kY~ iY~1&^yTOJtVGHcO_V؆O[VB؆pRჳ"nnHnĞHu.߀a߲":/_< :B:mHܟ ߕr$6"&ɟӪȣޜb2"Z,6t4Rp:߯ ޳݆x2-83DLtAl%2G/)//;A/qKߕ*0",HQe`48f`)D/P/ ??/ O&$ OE7 /' P&?JO?-ooooN>-/>\d/\roN$ƞOz-s,PjT_ m?_]"8O_LT/,>0PY_oQ.|_<,ُu"(0?m?C0 ol 2B #r`>}Ɏ^!D>2Zl~5Q.~^ +=E="0䓀ܵ:L?B&G?C:q?G0!2|2?a` RG0mJL 1fPzR'GCO0#gO篋OfJ'BP̠ğ֟ HUSMCn*2,OPzs$OUu<.G[_`~xOPzoVt:HS|A_ c`: y 1fo00<'f ocܘ_PzX_NZUS-V_d4ooXojlS#foZ soS_e_w_Ut_ZT__T ~DJn f -| `-|? 9|=P~0n{> . >2׀(aVi>"*׉LLZ؈U^^ :R׀\|"0)׀n8DlJBW?< a8\>?`UȒ2Ȓ.|"0 m~. gjޚ70-j6,6^(LX3h‘1hŸԓBg.Q/]ˠmYˠU1 .g8>?.Bg/ =@ }g f?p`pE>?a,Q)Hة2Z.L36.¢Ν`aRT>ܐ`RBVa"Sp02G2Bm 1Tv3x 3V߀SppB@zj 1"˱*0_AmѨҼ֤ѳp6 1v1҂>P">#蠲WSW?4WbJ@m91(p堲?)?aVXel`9LRGPmnѳ6 al9AofAT|ztڑ€Typdpf8>Xanآ>Tz1څ/ꄃD>"5RDLL8D^rLAΰt&2mӡ/2Azrl*Дȳ22܃‚߀ 0,J:0"T䪜 'Ar (:L^|FaF5`5~`V zzXa[Ӑ&Bn҂'nlJ1n܃JPm6܃nľ$$s0YЦ`T#߀$ ) Pf۷`06ҽ፮lr21x1՛3pFA"*BBpzunBBlBBjBF `=T^2F $>AfZB`NrAgEӎj2F @*v>ș@lwƜ"~xP>RAŸ>ڟPo ʓ\jr@rT:? S@ ]p`(FGo @A|@ƣZq Ӥ0ѯspʯ(ꯎpX.3~ʒjZS@gX~fBPF(?Qcu9)M_`q |2TA0F#PfeԬI٨٩rՊ]H\&⽪So1-1S0" yςQ)g<|2TAңmz^t00VvŏPB^dr2rTbPL@: P2D\"fp2B^ P0Q(0Dxըmp0L>`z r l.@Rd'lvORDҤY(lcLl'0ρlҴp"´rWP~S@긓20" P Tn ^&|2`:R2llZd2ln 8U;pd`SDJDlU#RE^G `y^TA ըJPlթVR2 P v!Q%2D0R28n%B@H/^[r(Xjr\/jrjrqaЦ '$#΂>t)Pi#΂t/+΂/+#p^)`#&#*>4F?Dn>3#@*3:33:f #1` # ρ΂CaP>#C@`P>3C@>P>:!A#>r¨hLLr›lH^r° S@3/%Gb4mJJHmCl"hBDg&Vm&U"Fxy 0a`|d 20G g&jT}T`р|l|^#X0e l! ፪SWa>X`![!:"ca`f0 " g8"f0hH"_N_FYbPU_g_y_[____[ x_og="e R[ .[ `rg;"e [U\lv"Y%gn:"vM5ӊ658vb3LzM3;vJZF6&𨲆g<.U܆` L΂ܼx3BP58@pE*glRFS@@m Z 00`ѸSI6Af 3(`0@m>aB=&a`'Q!Б"RѤ'0 0RB~o!'Ĥdޚ2)ܠ `l\s\ "g$΂ڢ֍ԩ8@Ҹ v|zE4ڢVՑ`dϲ#>ֿ连S»jn4 b4(d́<Jˠ΂L8z&f8|Bl6`n&m>?<aTmg `f DЂ>aBG`P;cRG|:m2!LӰ 4:}lD>4 aLx9eba$ߎ1 `>l~BghLF耷Vh#a-?# K9cuQ40"&ρmn6(p.FU*4t!d%R&@BE (ۡIR<d6ZrZ|3o(*ib,`:Ҥ?7v/(/'-#/%/䔈eAӍm1׏a֨#K^Aӏwo쫟+j0//zѤZ)P6H2?ZZa'҂R.G0HpV촿VH&OaW,BRϺڿ:2π4zX(naؒȬŠǰ^F>@d4za̶Ȱ.[ƪPoaƪ,#m ##`ឬƪNz*4nƪ*\ `(P<⠠ԉj>n2BV2x$mǍ2߂j q'(0&AfXHF0Td5uPA`N90墜Tn0@)SXr`Q)0P*R.0g('so| rg@)J$/J0R, UW/".gf?xdy"/u1#%.c/(,8/J/J`y/)7g-&25V?q``////=%??SHy?)ZT@QN}vufv0T>?SlpTaDڠ`>alBWBgZL4T3U`=&?<0[3T`Pyqq:2.Bgpr`q)HJLN^NuNVH]Un@ce ;K]0<>a̰1Ȉbtɏ]dDV0< } ycop` Նfbfb¶aW0Ȟ$ƪWjО .iƮḄ`>SuG@zF* Z/$^ 7_  80X<TPFSGJWGln`0xrb+=J\nsay1sms"0ҶϔПl,ԟ^ԯ4̪nֿ @>Ѐȿ`r"X@$6ߎϠϔl`VnpnPqx9iؠ˦Р֢qaJ+qlhf *r``hgDl`8^ՖN3ЖĒ uЗ qrӴZc@mlaa.\P/ᕄh-N>_BD0S # g@d{TVqd{ThqdeBga \8:gDL^pq\ D8hol\BE0D0d2AH7 @Pq2{X6$0NRAVh 2#g^N64|2(wP6{eK]z:  qg /?/REHՑPoMdm0R 2|Az_ZS{U yDqkon23 PD`|(1lp` q^r28>.`8kn fkl0g5^>p? 0cС:4f4~r?f> gT^??0,?fR?>@< L`.ƂaBsK֜nE"<˜OxHOMOO_O&_OJ^]_t_>__jj&,vԺp϶o,0.+pSlџ^AB`:*BP``RT _0hi` i0io` 0pn m2xJ9:uР>fYP0ؠ$mjºb$mh[oiDb#mXTU`ET{ ԣ T{ 'RGgPmmU48R@D@:bePffWxvz~zu$mJDo>?_aT"ej9:!z֕`:ƕ⁇ֻ9>_a(jS0BPNSopq zapqن$QDhSLtB0aam0F#12Fpsׇ#SֺphRXafAB~P"ANZ2F#1 3@;)uwu "瓕Ժp6h q>zӲʦLԤTܯ t^Ԥ؝0W~ZSּ@mpfd9X^ #X 6XJ\061=8P./T4I8B@bbb`. (2d)"D f Ћߝ s`*ߜfܪyj lhoho?0<`.('=.` C`4<1b l>Bw(>a`h`p``` |ggXLٰ5qU o m=wLJPm<<RF`.B"f0t mʪpQ S@@m~<+Ba0`h `zam\ Pyga oJ@lpUrr`e0bwobo bndf:XTW0Q""( a@RJ@m, iD \, uD10pq $c;0 'Wm! yxo g',"j;}V`|v&FW!aI4 t n W /!g/:=4/.9L?(-????c3.?(:08pvaM $c0F/0F 0?y y.Adt!yLѐUBBBBޢQyDp ڰLё BBBBS?IRRFemnRR.VXRR.VBRVQ.V,RjR.V!SjR Ffڰ2Q~ TZrё=`0af3@3@`RUfepre>``>BD`2DCTag/$RDc_eJRTe b`Uh"j0f:dhco`@andn cp" f ujp5 ڰґ 1v2"rb1H2y{>pABfv;rozr}Tz $z@zX(Tz8brJP{l0`0pd8pdo yd܁f~>)? a~$vCfm>PQ;L[B° 䱢?Q-D0ݸSqҝBB=|%| Ɵ؜fB`.Jn28vgьa0fvhan*T֢m|֢n0B֢Q:Шl ,ѝ.` R 쨪0$P0ިo,S2$hն`4$BBW9BTLѓ.9|X nl|,Ѩ쌰f8Jpf8Smg "*h.§RJPr8Rxq.殂3P\28t4;! 2ЍAt4=+TŸͨ:TbBP`$ nDNnİ~vgtQ.rѸ`0``S2``Z4``AAAC`xHvКϜTvTga6767P[NN.*\5636Pîx`lod0GRH`TlmNTe(raTlP "4x&d yjo,j9,a!^@H‚a`o2hz6HZTpFۯ&npmp oTpl4U4&" n2n0%\nx+Sۮ0a0*â\BWBgBg t#ag4Z)S\xVaʡւSf2S,WS(!P,&F!+0//#.PfQ6.5pf?<p!r 90BXS(4T2,2.XF0*Ħ&"'W22& ==1?0?B?Bf0A4pCqTm.i3,&墔b'UQ~|m̋A}@H .IV/JLn@9ڴ9KLFK@LH 4l PnP)PVAVznˮV2HAdX2aT_fYǻȆZ|ϥ\2JWA뢨,п|,H= 뀡Ƹ_XtPuPRX2C:$ PiH1҅IOOXzH.ϮP?Db#0nk:S\Oas,AbϽ҅$r1ۓ$$ACbRr&bba4`~Ҡ5dxp4$hr:[`x1~RrXRjtrs02xp,|RRrstx** * **r<O҅1+RRr4x+ks-6uLzv> Tx4H(:LVQ{lD@=@*."n ` 4b=|'dXPw=@t`.V@WllP044nR2weA,Snl*b hGmzECAZ)BIZ)Y*⑨Z*③(0oaR(113P E10Rbb{sZ%|hkdk d}c~%DŽش&PZu>aZJl$F0GDvAGH2X3ӴaαgDҪ$αIX@pa l3αTe6 n!RF R#a(@R$@Nc @1bȴ.tP<0l.(Tp1TMn<ѣ!2Dan$sr#2x}fG6ѠѡNc+RrRrp!s3p%Uۮ`ČRxRo ?< Q4b8AN@g9dOg||`o{ly 4nrZ"RBafZ$R.7Xf82| aZ:"jR"|`plB mTT.<Ċ|`[.xTv`lBmՈ2^||=f !L,`B0_fZ.d(nvfaB``.0<R`3RH`0PUvހ0.$eFFp02. "2g @ɿ۹c Ze@<׸a*4>atBzF*nf2PAhT,`eRf|Nh]U3T;u0}ffpSUB.6îöü\a|0f*BJ|0FWf([B["U[1V,P0i43V*.Ez@Bgbb>To:䊐zE0#.W`0.S`0I0B5G2*\TnTplT3RH?FG;4NG1x3oDO,OSFOVK>)`2zկ&2wGRI6d&0FH0SmdDbIgkO}OO<9_WOnoS=SSRl$Tnax4,_*_???x?"W `0lU&**%*:f:.Ѝ#'l "2"4b*.9$L;Σ{g $`$ йA>pxmv[W8 Sh1l{6R f|`| |BE`d>zW?zW||s0?bjp7C?0WaJNs2TF8@mPGBx@mvR:@>_<=G=F .YL:XQc?!?.$$ $ $]ǖs@Fl0fCo߾`&Τ qt` $Rk Sf" ` ¡RSVcTS˷v^&>9~`>y&b6Xm0nFsRD7"XJpgtFs Q@`*f4B`qL8HRjt0р2т a(RC7fXRgMbbPv0JNzb,|, !>kVƴnؓ~0.=>SSRdϮV?u¡adȿڿ`¡P ƢzۑDCb2 @`MMNL1FbЖ?<Bg %0 pd4b04b."@`!2b `P`"[% q#ӻiv q̀!pF<!pS(n6",hh^/`zSxahsa n0" RQ#nm!BP 6!2Q@/Q-/рJ5ݞ@g27oX`27'/37TX1 $ @2.0Ү0A!i $J0o=;-h ! |0gķ$  ᮼ37$ Ft/P06oomoh q=|h0p>1W2RX|g؀0mެ}zzqțY00)61U0"A0!~ ~ ~&qHoZ1tLL\O<$ .|0G00 2Gw  mȚYlqJ# W ?Sa80ێ4B>$ZRۑaSvЋ@/W7@;Ԃ+@9P񓔶3q4 nf(b3@@ .$@à1M>ZϦ \gQ*X $@a:X.aPmT?0f~ HSNqqX-@4Ю{T`x)H}_qdvB EНXFVPk0$ 2ܨ PFx( 2EѲ1fphHĿpaj<|&8.>Xǰ0v0E0kA 8ᠲ>RG`2GǸ@[g~q`>RGųPmP!Kang@ZϿa\~f`RE0SoBE`9Rr`$ n 2рx@"~/< :^BB0`@!dxBVblA >BBV0l~$L4BTf$^ 0~T80 +" #"5"4""lf1T5(0R5"X&m V\"l"r/,> W!/"з/_!/%Ûd$%2#$"2ұW}H0@0/ ?-,4B81=?y@$mR6R PnoLN#f<56FB@~)PfV{TlJfaN!Tf&ĥJVx<Tmlʺ%$`(V3lI^AbDTV, J_$_x(Xjpjr^]rjN!jul*:pRE0"T6RA:0LO$6FVhzTŖ!R&p 00B TfPxo *6]B6p .p a`F2*$0F2x6z}%A6lr&%ApR@.#T #мf1 ܊ۄaTp(#/////R?d?<%;4?F?r?$??6F30?6G0BWa%@D$_ZNtnO|O9_2STM___q[ JfB@`NРBp2 0`H2F4ūHATF RF~m lmx[ ng& nz"@R@1DDf=|t ~n ӿ8BW?ѨoTBnRlf<P̺> 2Fɪ®FLLTϴr^^2FV.pc :0EȕPDC־PfNB0J z=E2Q{׬t߆Ӝ"߰ІBգ Pл$q!oo$P ?*`P@*BLZjߖ߀߲-*PuGP"Lٜ"Z,0A^~d 84zrbPgƳPmNGP 2R]GfǶξO! fɶApʡrj@pZ{ĩQp4o1rNbֺ"lj@BZapEr-b./?Q?1؆x$pfȁ "¿Ӏy??3F?>FRFB)O d"pxfðG3n^23r2geQ0|,D$$$q&AgL`OrIFA&OHf)Ժ"n`(sI0OG _DJ._rIS_rIG0M#I0McB@w*!SЦRgf`z0G"l/b]7 oYE75j\/v2l6GB@l@MP$$u`G!n>og7of1Tn`VqU+zPX;tRkhxbD2ngd{xQ`0BG<|'`*z  u2FSIE^2'wRGUFmd@>s8;>7T=T._$/<4L /M/o 288^>a~LȁH䁤2.Bg9|{X3P0mP΁$䀷SŀUՃ y_ 5B90:7T܂Ԃ>N:N.܃LM4N0V܂RM6N2܂€0ZjjjBWPj0V^t8L @jW} 0Wn\p21䒽H[A"2jBaPZג\?<Bg<\K0LP`q0)o ,`], l8 {`g.{0Gc<n:rpDqclnAnESЈe/2AԖ7`0Nֿx&s>̷?gDaX?|}WRH0@c0˼dο6{NDa(Zl& @mM}08fnbZ/xů&q)>cՙԃp{0fTpo|[Tpo, >aJ@g0p`0fӻm3ZBWa$<!Z00}Y@Zg0$ 201AJaA3ѯ᬴п%gd"Ĵ<f $\`;Bh֖2$ 4?/<@D$W#l:L#luu|JPBE-$By"JPgBsp>֖xzpfbB`T-n01msA09 ں!@p`TBf RE|nhBG $ jBNHJgHf^ r`>p `%'P#F,/ɀX"",P X"W#Eh#(X"(B6nng"0!`)BPp N1AcwR"/"7 ="`@M0RH:fM8]:l<2]1t82M0|߻S@M0nfA,$jUW1VWad\=@0.pQ|QH{qC4o7TWa>UHQ,C=@h elmA vB =`V3R@0@CfBn@M4I/0IH L0OOFVLOMO`$_".O~Y\_~_6<__@ `[.7__m_ n_N_ _a>L0J%`g&s`"A2 g2xaGB@`_#RpBpU RpNpRpJpURpXpRpTpURplp Rphp$RpX!N@rXR-@@rB@rJLx/./e-|7-ns@sd(ȡ@Xs%~')Rrr@8Rr@rl@rLx@rT*@rhLxppszHtzsuT>ppLxV"6tppx܀ZppŁr{$s؈@}tN]xBĀ|lT0B΁8o]"JtB@`@uhnl6l䜟ܔt@t.xIX,t-s*,Z&lg?l{.Tmkp$3rnATO#O GĊ,HZE$a$bBWy"!TJf20 nixm.b83T1 n``V```" H1Ry>BgZЍJ?f> İI fnArxn! 8o5p\rн \3TU2 R*¦0Tr>$Ȩ0`|gBxgѓ.pM89|Բ8Tp./Q/]Y~7r0rF>1[1020.Bg~00.` g(~1 ?<he~4H07 `&bl~׺İ7TհUeUvѲ9B8nqpHgЭ@A.D2aUA2a@2АA0*`LP0=np0쮂*<Q T;প?qp =P ~0l<0<rA >?W?0iZ?GW nҥ B-pp1 WL0 UV;"Բت,T/<HRF1 vx}xgLX1RvzȠAn0)\0ΠAЂ҂У\ւ̻؂F .N`=2QBW3X|1g" " Of>ֱByZm*`0N(`j: Jj'&z* pT`,&` &``Ժ`@f 3}0`İE~Ȭ,+$Ҝ)HڤH1S`Rt{qlqTq`F : R<0M1`, J3R3Z0`J@g/<.F!*u#=8ʖ:6:BGo 2.`2AHЁ @a$Jpg0G `W<$q I>2FɘUPq1pqBLO,B.Vs0pm$B|<,Brp쒥 |D-OAnT@r\OBpG !OI@OI~RFEμPmOO$N%VR^\_NL^OpOOO_ET@@_OO__\<0_@B_4Of_x_\Cʠ_`_2o_ Ehfoo1oCowFroRGISo71?;zkR_oo[0FDPѥ>/ҁOh _ NLZO[y }}D oo BT owU^Zoɏ/OEWyUs0yw\BqBF`GPSp0ҒGP2Q|mpJL7{ ln1md3l3Z0Ih(?:6LD?V42^?p4gz0º1Jn l 9f{Mfl\P؏gw&(bCostCms␆jPʿܿ\^~ȟ,>PbtZ~^rFFL^pϽ~"ϰZR d2ԴB}E@z`$F. RgzJEg,~p0FؽgbK>MQBӚGԙ jGYk}r(2RGξa1t,;*\tbJ L%~^ x lNGdGV.0\#1>T 2L Ѝ.!15\.%[>[&>%?!0j2.Bg0br> 3X=@>#8p頬F!JT%!Jnf"T`7h 3T2. an`d``` :R@e`"Z1/ qsXZb@ 3bsf*$0 }PBqfp`& 2q&op <ʿA y  f/<Bі$P1F0п:<<5^;BTs39!w8e1В22ޔ0s1gԤs@Bfag< {:K~`~12XZnZ>a;nBZtkm,jtnm8bƠlwv0RP0Ȍђ!ސ%Zq‘uqRf!^Xђ!ށ*AN0JRP"0qb׉.@1SIq" (:a@*@Z%R D@Ba:l@@gf`BF!)@ 6H//<G(LX?] oïկ]p @\B.BW 50߁06c0a^-cwxo>UUw7vtp w=Ըtsy.Bgx|::"ԸT"_1r&g rrrîpF!*\h9ҼX2r!0 r``ށf zȄzÆ=9*U ^lz*flztBШȳϮ9ԡyɆΑϣi߮ aԡGو}j@1Tv1!!5Au"LPz3U$U F!thP~T8hf aaZ$Xm"j X$Se9.tPJeQ DTlTja| ߁2`\$!f111Bg 0&0Ur`@RAxRi?<\<45b81NhA9 Og!|f`o {ly VrZ[@tfZx>7Xf83 ,0^Z[\3xz`rtmVTZT%<&yJQT `m *؈#L!||={f <L,`vlfVd\`a`,a w `&` ]$Zgf"]"gRPаU"888av\y  37]foa7៘"RPhj&" 㢊l̰à TI RP<aK R*s!&TloxTj\90 0E"80<38.D0 l4>X23]2 Tj??@=VT`> Z4sT(&a0sx&`&2g!ewZH@M>=n@w @ BuB@BBBB>. nQw;"tJvw6̎YfEs:&‹qf`lXR _&fԌY LWa f.jџ٘>n&?`RWVo>n54caR@1jh,4< U/h|>~PR|^s 鐲|3M qy$$ߊf%޶Q[@eT5+\[qq>t^WR7/PJBVBVB2VB.4,0|3=@QX nFR<P^m\[ğ7"zb¦̯ޮ{䄬fn@@}Phf*t#OT8l ԏloIR2^0:?awh@m(ċB`r]p`#ra`raFĠrrQ`!Tl٢b\yԂbSd"5Հnق(4`22GRI00Y0"m:jgASew!68S"#\qF/aބ*raAp(:L^c<1f U&!,&2&2&!J Vt(2(2( Jφ H^*T:(7@RN| ^u0Pqo]q"t4tanU%ΜPba4#l!t y"l 3joLTj>0<aK2<|߭vt. uF B BPYZQgQIX.Qz_5l `n5\ƔAR@fAoBnJf0\5 @2@R1@1CCF@pEfp0fZK#G(KYA(\F0mLapPBtRpP8OH Afo=|NCOIXTJ W,#,_>_P^!$A0AOG?.}/. paL` 01^pёoR $1m)01#j @4h @ nl|Ԁ!`P,o\,ffDm@jo[:]f`fjtЙBqw$grf+r|twrf:fJ̀lY)`X)JlfH9`>9 B@z!Byz!" S5P/ nQ)Y >X`>\HtrJ/<DDA&T)1pXCau9p/.lVPflltg-nܐ.yjsg@X9gF@`6D&Spјf@df=2Rt6쌀otv Ȥ@ޣg\tTv*3r1Q$u@bltDVhur"rq=gHj6E?A?Rsej(]?g0\gp: m"6JhT10&`0M >pnT/a豾6SWd6ž# Uǂj(\=rqPE`]p,!:`|ώT600G,ŊV^.`0(_.P]h]R`4өRӢ` 0SnW|jݢϴaV׆߾E00 \߱ߑl4>~-`r `Ta|ؿ*Nd3\}󒰿{kP.p$pd&TC:*C6 &&HTA&At?<!14*B8!N9,@Og3'Bqxn,01mnuldJ{H $o>BBguR2A1`E"KFl*1^`0l%v/(nl1\Al*{dHbޯp[4.q @1)HLf2p/Rq'Jo@l.0`@13T`~Rf-|b1Xpb1&h37 `Au[BW&V`@=1!PЏP0c.P$qb@Cu?3Pcp)~(pPv4?1Z4 @0pFTsD2B20`pPU*Z4.4?tB9g AHBG`0@HЮ.FOH0G^nJP4`E P4`G,n2G^zQrF|O3AmVD PjmHWn:v!U0B0DQRG)o`(D?RłT(BqF|Q6DTST8aTlRjaxa2QTlqQpOT(R( *~`0\`6T6VpRnttNRpRnPpbB>3X f7@`ZQJ9D>\(L/?&?ro8=1M86Db=TlNJ`t=bpcҴ?8O @5 RH T(n1lB nAH?\ypyN VCG\yCl NRmrmJm*AgB=c.J:=oOoaina/Bl@N@YJgJ 0m Ѹ9o/p`BB !`LP"1pH|_HЁ&NP|m Ƃ `iH:. |hlTw(f60 !00sQl"c2ڥLul@fBZ/AZH _ r~xy0NPbSoBaQ@ol@>~!cJ@f&֓m3AZBW!^r<ZJFl/CˀfkJ9Ȁp`bfdH?,v[3ФJfr/<JF/6q'P6q)P#P/<@"B,@Nԛg4q[BK"gR0jlց,BK@Z"bSK4b^LRL#AB8PeFjZ Vm$CR`@RfQ[^ցt` ԲڴlD$ ZQ:h V%񐢡 X#nBȂ"Qƻ"cơư"uxrFǯrZ& f"C #N@` #? ɀQC|P$5IpQJ1'O9|X!: H+9BT\QSwgTQRfC2ۜ!zցoX`2,g;Ha{"֓So20f .g.o$Cf,3*n~:r@x:~LV:LnV0 ;nDu@frltf~lt (ԥ ! ٱ"""ܧb)dLXQnBsPf6>Plهx|V"'ؼ:Lo"/<'Ӣ⦪X`C "%"P\n `RT"z  !J٦0~(-/XM\V:U@N:@f!6M،'f/&ܴ(N/&`n/<Gȥ'Iԯ#VL/4Q,*l*)`{`rQS*Vn0<hqSA(/B?> }3,?v?x|4.??L/<.ߘ?B83VB?#@JNI#H?1L#tOXN"JMJ)B?QX_:"NXܴ8_:"fQLѕ5xzR~ցvC)WR,RVWRb"6SRg&׸-Ҿg p`(` p@}Jf ^`zfZ[¶# hΈ,o! hNo1_ JR ͮqvʕ<bVl;섡:fbe" p>2I: pBrLNr^8\VCR*ØFfrORZS*frer6S*x$zJ2x{XLx{pw$zT2w lLw fwwX\wp\0PT\nl\Rdt\BЃ#07";`(\>`< 1&VV&_f%F?ܫVӸnc2F$p;zQ`SQRFePm`` laogkoo ~7I[x0B9ҏ|o=*f (:JL ` `Rfl~̎ 0ެEĿj|Uʿ  P.@RHV 0 bpςϔϦ#!OUMߝy߁i*ajag?atE~A^PX7n`Sg 68tQ[DnRPQ~\dMBgBgEh`Dl~AJ=@h A>(PRL(PR^d AUd $Rd Ak"4P A 4Pm A4P#EZ4PVQ4PVQ4PVQU0DGмaV A 4PR.4PUR44P A[Q Aj4P AV A8VV AaQ4>aeNV6Rb`8RbUxV:Rb~V<>aP>8RV@>aPD.PߺaC 3fB@`3 aV A$hnf6g$p ܒmܳfDOf0B@"5|1rn/-h'801Zc|/b<0jnf~J\'Fsqe_|C/0 +vC]qO)s q?+fx؏yDǶΖPV+Of3'PP3ZPܤ`Xp rZ.{[f8P0a=@lỹo+f<*<6bP\XdOvOM^$Pl bZoQPZ$`aV2262RAЁQ @1%rτI%R@2Ý4RBť҂҇"A3@5b|]n>Adįv .@RdvߚXC?AlTOO*<N`ϖτϺprؘ y& fP򣠪1b4$P6f^Pz%$66Q`g=|`=wB@jvȺ2w45@n2AVvƜ .G[nZ.G.G!<;_0.dQߝ./P@?P1(:}@B2 >P8T0JLN^Nu?NVH?p~0s>`.r" D0RGPm?BF`"b?JPo!|cT^iq)d@X@=1p-kbPm4$y/<&l.r%RB:625"B9J0|pkf@4x0xxxIV&8]s]s_xQ=&B@/N!ol:VFq\qr_0/_/.[cG</ RF}mL^TV??9/DV/<A,2GlZO! , ؑ|yؒ2`6 :ҝ0EzZ-8"LX-jW50\(ފUBPx=|=UЛ0||.LPD"50Xƥ"4 nf0~H_3 V$` Tf 3L`Lb7T~l8f`LfݤlCgkCUf .0"ۛ@<@8>r ?. !\lԷgp>`d^^Ѡ^}U[H z~?a \BWBgTwm喬ں>alg.9@R`@N^:@HPђ⩾dH`ʿܿLbP?m" D FC£m"hpNx`@0D:>z? ![RDiPo`nb6<@b4Lj^? V\)4T\h.౟LghA<2Q,A82?MD0THkxZ\e#"<@XRHej`̯0  6 j*.6<́Ӕ߬qĸ nbϲ϶ FhȖ6*QT(#To2 AH/Z&d/'\ +aBG`V< +"<F rSf@@t;3Fp2HRAAؒq!V G|m~`Pt5d2GS4t Af 0GSHV.R@6f5(4к4Z/jS. 2AHЁ @r$JpgHnج,dٚV dZ v[DzSo2@t:OLJRZJ6DhO$D}OOF2@OOO`O8O __6OHO`ZOj^__J___`_ooF4_F_X_hn{_o_-Q`|b@0@\, PNК(C;voHj+Ve:02Ez2AH0C0ap0Q`48r}PClw$ucju4F0C@0RCR]EVe:FSC0D< v|~~h}ؖu2 0#H2CtjV Ivh`v\DDӜΠ@!P FX`oB.P"djơ XX?j7lФQΑgny‘>. n2g ƅZ ,t3(J^N(~v.AHdXߏ-@.@ -/. /7.b,P`ΡLc'.a)Pɡ:P.*A#@P=|'=|BEbxnh0Eud@uz(2!Pvtv?<68tۼϸPob8`2bw۾tXr8Ō6Ĺ40<0R; l=Dn?o=C`@REM_nJ(10;}o=!~4PfpSx3 \b0EM0<05H2!mb0za4 ѣen1mJc4aja<\a2kүPmP|lD H6\q8n`tN>HXFrF8P>恚b6Y:F>cTw^ fBb06N P4M P?`}|P|_@m`Lb0B0s2M޺1mDD&2 BgBgFR ?rrr>ЅN$Y##!1!D@*(0.?. aIi@"mh|/<"S@/)T%,~,"d /a/<^UA&澬U⾬ ʠ> zE292@9&d!aHno&N"@CR,V6G3L* oUXl.򺡰l3N#{ 'ҕr f& ,0,08.OJCDOltO&P_Go)_WQ?S\[,2Af?SbZT ^DT\? 0ZT>}<}r? rT_oB;bGR?*'`@/\noe ]Ta)b0p=JwBWtWshX>>{x/X<9q"}>}zX:JGfJFf JESZJGo:JFo6JEo2fK`Bl-ʳ HB @JGlxJoFltfn!twDo|(HtUb pZ0,<QȔodV@(NN|@ R@ 5N .6:j0Op7BgQSf2nqf(H.NnסtPӐ6x6HnעhP05|>g4ߊ2"Pԫ0pnBwbF2QSNbVJdX hmrZ%\ ^ m`XNN~`NVUoVq^lsTmTR"l e3q"PTRwLmLS@TLl"mmӻf^`w :p?>m>p/QەVQL J#Pg\|^^݀!HO .?. a_> Ha{fTԻg p..MRWR8nB>}@tPT.GLEg0T HTGd[wQZ\,;!aQhc[ĂuTw|%RG=Pm/,>PbtXH 8 `:NqD4[Z-q *$18й>Pbt  =a8( ,@Ia ڶ[20'[`bPwP 2.00PQ "A2)=arvиt[S DѴU^1/T L]PXPwpr⠎[3@ACf8~Q>~Q?(J0d0dnѰ@0z!.Y/Uof1C_0g=nw`0Dnf:.OAdb|ihXASb/z Ah1oBG`ns^1pPwp~]R2AlH[rPчnQRQ``}|"m`fp\fYJPo+=ztK]xSimtldD~*<`ru|p d态?cppd`dboebbLi pa~Y?0/b@lA,\wB\~TR4H{2FzcalS*"fY/_8[VP _0͕_R΅Agh_ oo.o@oRkHZ]_oT~\^$UvU__4_4 `:\nVohozooo0oodbod pP>.ƅ*vtΆtpb ϡQvtΆv{9ÏՌ6r%(M_戢$CfalJ@gFg`,A\JB @\Ra0Nu~~#jJ<Y0@Jfd;00G`k\1g(gv!iBHGHFFkTiHGDL&:ƞ16BŞd&0ރSE&HCBGHEk:څS>092.gNu R kjklf`>k^g>@^g2k8<d,1<ރe} R0id~S?@l3.@AJNu.ޱ"@<XDxB<΄,ypsNB`ҀgV 4!ޏQeHARcRBA`BPc4BfSB2CdgAC8be0} 4`6`0[Pr@jDA4/BjDADB/&0CCCBmA&>@kR?@`S@cÕRºJ,ֶ q3PĬ.. 2Ȫ.2.2.2>lv5ZR0 URlҞRluR lҢB@G.^kb6HZi߾^hb lvkӅHuӏߡgߤfZ^et^dp"ќ>^o#^n.@PQYRZѪмҢ^/HZ^,blv>Vh^A+~^*D, !dv $ ^Obl{#BkӢ`T~JI//*/orf7qT/f+^Fb#qk=,6"4DV4@F//j/|/^ 32????T;,@0@,@U0@,@ 0@,@U"0@<$(0@U,@*0@^bU,l0v48x3^?@ O0I4C 4V,C~D|+Hм>=P nH2n+2RP8m.1P2E**PV*PRP*P*5P*Q^? aF3`Qp"`**g4CP3WBy$ЦN`$m,C2,  >n=BRN`'Rj`o  >oXTofooolo{<q>N`Qл tr'qh{|ChN`N`z87@ˑN`p8Dc@3 `*Pd`$1:hҏN` N`!"4F31IeVtae5Xo\%`N`rbDg.2-V:Z mVt879S|\(b fVr5BĞMBPQ|mWPQQGJ@fYvSP3"V DZN`~pVZ<} DC@өBVӆbSbcnϾ͜ߢehK хeܿFh@^p"%&/P43s<'K 5&%,4$//''2/ /2o?)]`+v4L)G["{0)A.C DE"G#HI$J2MOPSU/VW-X,Z;<=>CDN@p@~@'#P`v@"!pV@ $%0.@@&W210N@pT0BR&L!F%K5?H|D| &2.`:U9P`v@ 0u0-345676@ 0 6@( Lu>P@BPpUv@#P'@4ANR]v *  W/ < :<Q^T3&nH| Tq &pQ~@LJ!@#` U p 1`"cadalert.rsc 3d2.cnf\ANTI ( RENDER3DCYBSMASH%!.f4P#.rP'/*d+0>t'._~1R | L !S 28 Bj LL t#2n Ֆ W3$ , : V3V h zP 5@$;!=P#-&-uPb}3t~u{3u}""oEWi{ÏՏ /ASewџ+=Oasͯ߯'9K]oɿۿ#5GYk}Ϗϡϳ 1CUgyߋߝ߯ -?Qcu);M_q%7I[m!3EWi{ ////A/S/e/w//////)e0&)c%?% ?;?M?_?q??`???-)d 0P`!)f-1%"3DUfw$0(0"0w))bUP624#2 O 4AF@ $Pa(0P`2`FaB,. h@@ !==)f,@HH8PP2KK4MWM6&B 2@"0!E>BG)dF>>K_+_=_O_a_s____Copyright 1987 Tom Hudson6hPP8PPP_QQX_`v^2oDoVodi/2F?*.DLTُψL_"E@eBAr@0 +0&Guess:hן_ !҅ `&,@15?aq@BA]AA;9\qO"  @G]A%11<؀qϏ cTX}T5*.SPNcXTR,./9GQ0 YJd\fpmI@362A@B@@?d>͵Id̰A񰂯(,6*>/(F_AQ0f . l l        j   i xy6z p~~ xıú   kq y$y jG /žE D#  ~]  +ƥmќj`3xЯըwкДФ߾ҟw$"fd-"}*t¾  +J .kzp ( А¾]ိѯl 2  ,  0 l/Ѐ'7 "~j1Xdx̊? =z *AvHLa(eѳA(Va+[ lЩE#И*r¯o W 9u$ (w7 92\=-RҐҝ+ѣt] ux   #еud 5 ] M;!!"# W"23"*(!< X"pŬv ]6?&jZ : @} /?#?+3 *?N?V3V6U?t??? 86!у0 4B3 As3"tdAD(00~ ~@!]( *&3@OFqA2@Ik m@&=&_ RB#̭0%W QBT9Q&RSlgW!#|SЇV$`}@0zUS` !ER4rDx/z*C402z%^UrtUg| wu"pr_Rq |) \@vwRQrz3} 1`{3Ypxx9!bυŏ1݇$PbtB,oT&ݖ %7Ix>*.~~B  l@ k@QP1Qŧ6!tެHӨ4Ө, =Jcz5#-".ˆp7&VJjN9CUQ7ѦУaj̸h<2#wiA G + 0"aQb$B`O 1 " \]Dzqn˱?p|MR&n   '$ðP2#Y"~ 1R䁐:Ҫ@ 8`C  y0Q@nQۖ32v@a!}=~BѴPJ3!I߱~} MpޠI!c  [P!T4q/ eZhZ a f00P%a *  ( @X%`P %КQFbv!h&h!u v@& $glpz_Y3hf3h fyRB1a!cP.68JThB1 ޠ@@wH6)0M1?c`$`` ^`"?EFq ! QPA2"@[1[3 [3&' o o{_ y@ 3,`p!Qo.~ &Ў*8" Z &e"2Lp@!h#r! | $1F" n52 il :Q"2@8 Nh <`*|#«/ĸ&  # 1paJx_S7@ 'U 62E"<32&% אB3Fc|@`B~1X1p@!ऱ`I{>-lY@P4@TT )pV! c5j)>"Q`X#א745)ñ Fqt!sMp !]Bh1"s@@Aq@3A"P4VqE@@! P1@C!@usFcidCQ[b!+41 `rP؀p\"7Q 88DTSB4PRW*ǥjSQpr`nU6E-X¡X>{T²Z & S1CqAL пP2NpAQ`!dpB2kA0@ 1s` cFDB@W 2aE?@?!BaVI0mE"dCzQѻ`Z3HR2^W4$*!`26zvh q!*jpp 012psh>  ][p@A`Vp":as* CQIc@2nF3~R ,"bKFS bҤ&Q nS%,p+,pQqcP3qAHL`2 ]0Rk@gA4ၒhaa0wM@SqۡPP8PְV) 30%L-PP < $2@0hXg'aYPs"8 T9"~Bҩ̢   ppp (B#HBy'cY ,.  4UuApt@KББ F!ӵ6! 8m 8aN7bNu x1$T  }D r4ѦA c @LYMа pl4rH 4|1(3` 03P#R!r)*aТ.Yp'd*   2  b2gs 1b3B0P9l0CNLPב %yLb &qfueQd07"b`Fc rhf02G&G"G* (Fx1Q*Ru%G1J@ _*b _2_DW0&PR@pr`WlVDy[91`QF"W TBN12 =_`8!b PpVX@C_@x@yQ< H*L!"ŠŠ$ATU%(b0RqcRc0"oAG2>~fR@'pR2S 7d(0sHis!;A x 4.0:  Yp~ qDbG0ӳPA Jx ", " ,(s `hWfvsZ3rjr*Zs4Z ap8-rQ*086*.ԐjQ@L3SBS*  "*^wPZ B,rw bx``aRHR0II~͐8bHs3@2Г8@r~0V! T`4Րis 0cp@@13SbP"U5!T*>VqQ~TE<^?DSʠ3+BQ3摃<9:W?y4h!>75Ua?O@"Lɀ4OFOXOjGadbpr E.$G TPisM(it" (3I;&_ @_R_b\AqzےĐ@$]`_\P 22o!pW`A `X!/_Qp P_ma!6.m@$`d8Coio??*;d`&7 ˰ $! Ӣ QDa6[۠`DS"*FΠABǀq,8u@aX!G  ,*$ 0/ YM^T(P@v.v̰С%[ $ǰ5Ђƃą L`#b. p$ΐp" gٰ'2 x d ` a X๰, <<4 " 4 b64a`labaYPt&p"I(4p# D\ "QАP4B@{ @c (*6X:ݟB H> 4($S!z"up ِ ,g*n"nQ *G&ʰQ*@ `DSWАvpgpuqmc&>0*q\i$ fBLB (" 6 DT06o CӅ;ԃTqӅEXXv’x{vu=h ijDф R%[$GbZc&@Å1-D!I Mbd "ĀM򙱔Į-rt L渀Fül* *F2Fj|ߎߠ߲߼bٜU:PSR"QM$<B> Desk File Colors Views Objects About CAD-3D-------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 New Load... Save all Save group Merge... Object list Set drive Delete file Save config -------------- Print type Print pic Save pic -------------- DEGAS C.O.L.R. Neo -------------- Quit Set colors -------------- 7 shades 14 shades Customized -------------- White Bk. Black Bk. -------------- Recolor Top Bottom Right Left Front Back Select Delete SOURCE ASOURCE BSOURCE CAMBIENTOFFOFFOFF01234567TOPFRONTRIGHT SIDEOKCancel Desk File Options Edit About SPIN-------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Load Template Save Template Grid Snap Measure -------------- Do spin Partial spin Abort Clear Remove ------------- Connect Rubberband Desk File Options Edit About Extrude-------------------- Desk Accessory 1 Desk Accessory 2 Desk Accessory 3 Desk Accessory 4 Desk Accessory 5 Desk Accessory 6 Load Template Save Template Do Extrude Abort Grid Snap -------------- Measure Clear Remove -------------- Rubberband Object Name & ColorOK________Object name:________XXXXXXXXCancel Object:VerticesVerticesFacesXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXMaximum:Name:FacesUsed:Remaining:XXXXXXXXXXXXXXXXXXXXXXXXDoneNextRedGreenBlueYellowVioletCyanWhiteOKRedGreenBlueYellowVioletCyanWhiteColor #1:Color #2:14-Shade Color SelectorOKRedGreenBlueYellowVioletCyanObject Join Control ________X________--->________________XXXXXXXXAddSubtractAndStampOKCancelStereo CAD-3D 2.0 Solid Modeling SystemCopyright 1986, 1987 by Tom HudsonOKby Antic PublishingProduced for Exclusive DistributionVERSION 2.03Display objects: OK CancelNoneAll Object Group RotationOKCancel 000 DegreesBuilding face intersection listComputing intersection pointsFinding inside/outside facesDeleting unused facesReorganizing object tableCleaning up joined objectRecolor objectDone________Object name:________XXXXXXXXNext ________Old name:________XXXXXXXX________New name:________XXXXXXXXObject Name Conflict!Please re-name this object.OKOK________Object name:________XXXXXXXXCancelSCALEH: 999% V: 999%ROTATEH:+999^ V:+999^00000AUTOZ: 999 P: 999 H+999^ V+999^ B+999^Sphere 1TorusSphere 2CubeSphere 3WedgeCancelSequential ImageCYBERMATE MonoCYBERMATE StereoCancelEstablish scaleMaster Object:XXXXXXXXNext object_____Value: _____XXXXXFt__________XXXXXInFeetMetersLENGTHWIDTHHEIGHTOKCancelObject measurementObject name:XXXXXXXX_____Length: _____XXXXXFt__________XXXXXIn_____Width: _____XXXXXFt__________XXXXXIn_____Height: _____XXXXXFt__________XXXXXInNext objectResize itExitDRIVE ADRIVE BDRIVE CDRIVE DDRIVE EDRIVE FDRIVE GDRIVE HDRIVE IDRIVE JDRIVE KDRIVE LDRIVE MDRIVE NDRIVE ODRIVE POKSuper view mode settingsUse CameraStereo separationpercent999BackgroundOffOnView --> BackgndLoadSaveErase BackgroundMonoStereoDraftFinalStereo effectInCtrOutOKCancelObject Rendering Color Palette Set colorsColor setsWire colorEdge colorLookOK000CancelPartial Spin___From ___999OKCancel___to ___999DegreesPercentZ/PSCALEH: 999% V: 999%Z: 999 P: 999 H:+999~ V:+999~ExtrudeCameraTopBottomLeftRightFrontBackZ: 999 P: 999 H+999~ V+999~ B+999~Shading Object(s)SpinObject Group Rotation Object Group Size Camera Bank Angle 000 Degrees 000 PercentObject name: Point# ---X--- ---Y--- ---Z--- Face# PointA PointB PointCFt Ft In M CmInM CmNumber of segments: 00 Points Used: 99 Available: 99[3][Print which screen image?][Cancel|MainObject Name & Shade** Measure too large **Delete Objects: Group X:Last:99999 Free:99999999 |SuperOnReshade ObjectOff||8|ǀ ` `|8||8|ǀ ` `|8||8|ǀ ` `|8?vf`8p````p`g`g``pp``8f`v?TTxI?K0I?K0 8px>>I?I0I?I00000UT0000000000000000UT0000>8p``0x30p``p8>     x         x ` `           0 0   0 0 0 0         0 0 `   p 0 8     8 8 p   p 8     ; s p 8     8 p     ~9 8 p       ? p 8 ~                       ?) h H) (H})')䔹a)%) 1)%)䔉 )'($$) ($ $) i̜ e)' 9$ A9D$c H $" H<>?p0a8`800``0?À>8vp8p    0 0 `` ` p 8   p 0 8   8 0 p q 1 81 p1 ? ?` ?             ! !     !            x8?@a8!!x!!!8!A8   x8< ad[ZZZ z2q`0& ؁1 UUUUUUqUUUUUUAqqqUUUUUUUUUUUUqUUUUUU<<<<""<<((&&&&11?1?10 |l10 |l10 l10 l10 |l10 |l10 l10 l1?1?111` 0D$  0@ ` 4 0 0*T*TUTUTUPUP j4T5TTT\8p````p`g`g``pp``8?vf`````````````f`v?p;`8s`c` ```` p`8`8pI$PI$Px>8vp{p8Fff&6p688pv?UUUUUUqUUUUUUPQq"*Q *Q *Qq"*Q"*Pq"*UUUUUUUUUUUUqUUUUUUxHK0HK0 8px>>| ` `|  0 `` p  p   0 1 81 ?  x>p{pFf6p8v>p8?) (H=)')䔹!)%) )%)䔉  )'($ $) )䈔 E)'Ĉ D9$ A9 $" H<? <8000           0 0     0  0   8 p  p   ; p   8   8     p ~   x     x `      0  `p3`c `` 8`8I$PxI?K0 8>I?I000UT00000000UT0008``x3pp>1?10 |l10 l10 |l10 l1?11      !   !       8x!!a8 x8ZZZz??v``````vp```gp``vp```gp``vUUUqAqqqAqUUUqUUUqUUUqUUUqTqQq QqTqUUUqUUUqUUUq<<"<(&&=pdp\TT xHK0 8>` 0D$  0@ ` 4 0 0*T*TUTUTUPUP j4T5TTT\<,D,L,T,\,d, l,!,#,,$,%,',),* $*$+$,$-l(.(/ (1|12d23L,4T,5\,6d,7l,8t(9,;<;<8<>>??@A@ABTBChC DE6EFFG.GHBHItJJJK4KlKL.LMM<1 <2 <3 ::O py      + lu  !/8>DMSajpv PP$ $ + 2  ; C  8P  M \ q &% +:IXgv     ! "#$%1'0 ( )**+9,H-W.f/u0& 827 3 4 5 6 7 1 9: : 8  (C Q Q Q Q  AA ! q a Q A 1!A!!#%' )+-/  @Q!   @Q$"#. # !@Q%4 &8'>2 (I%L#PP S Z a  kP  r   "2AP_n}!     !   PP     P    % :Ody,; JYmR"          @ !        ! ,3:AH %M > RV \ah ot  z  ! }        )       1aKSRG @ @ @@%@.$ @7- @@6 @I? @R @[ @d@m@v$@-@6@?@@ @@@$@-@6@?@@ @@ @ $!@ -"@ 6#@ !?$@ *%@ 3 &@ <'@ E(@ N$)@ W-*@ `6+@ i?,@ r-@ { .@ /@ 0@ $1@ -2@ 63@ ?4@ 5@ 6@ 7@ 8@ $9@ -:@ 6;@ ?<@ =@ >@ ?@ @@ &$A@ /-B@ 86C@ A?D@ JE@ S F@ \G@ eH@ n$I@ w-J@ 6K@ ?L@ M@ N@  O@  P@ $ Q@ - R@ 6 @ ? UTTS WVVU YXX W Z )[R>.`\_#]Q ^Q  _Q [Q a %% ('+  /' W" z  }  #  L   '@ '@ VH          $  - 6 )? 2 ;  D M V$ _- h6 q? z    $ - 6 ?  ! " # $ $% -& 6' ?( )  * + %, .$- 7-. @6/ I?0 R1 [ 2 d3 m4 v$5 -6 67 ?8 9 : ; < $= -> 6? ?@ A B C D$E-F6G!?H*I3 J<KELN$MW-N`6Oi?Pr Q{ R S T$ U- V6 !?   @ @ @@   RZ #  'DZt  qRv          @ ! RR4J'f iR%("       AM N  N  B CN( N6 ND  D  NR  N`  Nn  N|  N N   N !N"N#N $N%N'&&N%(O   O  O$  O2 O@   ! E E E E E E '$ .ON O\ Oj  Ox O O O' ! +<K'\ cs @ R   S    Q Q    %    S 5 S: J SV  g Sr|S S@ @ ' '          $,4 <D'L  A RO O"O)O0 OO P P  P  P. P<$PJ+PX2Pf9Pt PPPPP PPPP Q Q Q Q*! Q8%  QF)  QT&&CPQb Qp Q~  Q i  t  @ @ @ @-   @@ @ @    %!$ " #$  &%#,9 @*,. 0 2 4 6 8:< > @ B D FH@@"@', QJ QU Q` Qk @ @R ! @" @G #""@' !@B $@v, %@&@"'@'({- ,)+*~+ (%-   S S 1 *D     &  +  1 7 <Lasx    ' * < N Q  T# !W8"*#$)%)&) ')())&)*)) 83SY]^`cegijst|}~F~VNF>  t  @ @ @ @-   @@ @ @    %!$ " #$  &%#,9 @*,. 0 2 4 6 8:< > @ B D FH@@"@', QJ QU Q` Qk @ @R ! @" @G #""@' !@B $@v, %@&@"'@'({- ,)+*~+ (%-   `B `^ 1 *D     &  +  1 7 <Lasx    % ( : L O  R# !U8"*#$)%)&) ')())$)*') 63`zfim p r2tZv:w*Z* 2"Rj*b:((((P$P(6([2][Allocate how many|CYBERMATE buffers?][ None |1|2][2][Allocate how many|background buffers?][ None |1|2][1][Not enough RAM to run!][ Sorry ][3][WARNING:|CYBERMATE buffers allocated|but no CYBSMASH.ACC present!][ Continue |Abort][3][Are you sure you want to|stop recording?][OK| Cancel ][3][Are you sure you want to|stop recording?][OK| Cancel |Chain][3][This will replace the|background buffer(s)!][OK| Cancel ][3][This will replace the|background buffer(s) and the|current color palette!][OK| Cancel ][1][Cannot delete that file!][ Sorry ][3][Delete file -- are you sure?][OK| Cancel ][3][You are about to alter the|Super View palette!][OK| Cancel ][2][Print left or right eye?][ Cancel |Left|Right][1][That is not a printer|driver file!][ Sorry ][1][Stereo CYBERMATE filenames|can be 6 characters maximum!][ OK ][1][Bad numeric value!][ Try again ][3][WARNING: You are about to|change the master object's|scale!][OK| Cancel ][1][Before taking a measurement,|you must set the scale with|a master object!][ Sorry ][3][Your printer is not ready to|receive data. Ready the|printer before retrying.][Retry| Cancel ][1][Invalid template file!][ Sorry ][1][Please use the proper|template extension!][ OK ][1][There is not enough memory to|create this object. Try again|with fewer points and/or|segments.][ OK ][1][There is not enough memory to|load this file. Some objects|may have been loaded.][ OK ][3][Be sure you have saved your|3D object before quitting!][OK| Cancel ][1][CAD-3D cannot create this|object because it self-|intersects or is drawn|counter-clockwise. Please|re-define the object.][ OK ][1][The Spin tool allows you to|define the outline of an|object which will be spun|around its centerline, making|a radially symmetrical object.][ OK ][1][The Extrude tool allows you to|draw a two-dimensional shape|and have it turned into a 3D|object automatically.][ OK ][1][Wrong resolution mode! Please|reload CAD-3D in medium or|high resolution mode.][ OK ][1][You must specify a unique name|for this object.][ OK ][1][To execute the Join function,|you must select two objects|along with the desired joining|function and a name for the|resulting object.][ OK ][1][There are already 80 objects|in memory. You must either|join or delete one or more|existing objects before adding|another object.][ OK ][1][The objects being joined do|not overlap. To subtract,|AND, or STAMP two objects,|they must overlap at at least|one point.][ OK ][1][The operation you just tried|would place object(s) outside|the 3D "universe". Try making|the object or group of objects|smaller before retrying.][ OK ][3][WARNING: This operation will|erase all objects in memory!|Are you sure this is what you|want to do?][ Cancel |OK][3][WARNING: When you delete an|object, it is gone forever!|Are you sure this is what you|want to do?][ Cancel |OK][1][Write error on file! The|information was not saved.|Try again with another|diskette.][ OK ][1][Can't open that file!][ Sorry ][1][The file you just tried to|load is not a 3D object file.][ OK ][1][File read error! This file is|not a complete 3D object file.|Some objects may have been|successfully loaded.][ OK ][1][Merging this file with the|objects in memory would exceed|the 80-object limit. Delete|or join some existing objects|before retrying.][ OK ][1][You cannot copy objects when|they are dragged as a group!][ OK ][1][You must be in 4-view mode to|set the arbitrary rotation|center.][ OK ][1][You must have at least one|auxiliary view window enabled|to set the arbitrary rotation|center.][ OK ][3][A NEW operation will be|performed! Click on OK only|if you want to erase the 3D|objects that are in memory.][ Cancel |OK][3][The objects being joined do|not overlap. You may proceed|with the join if you want an|"object" that is in reality a|group of objects.][ Continue |Cancel][3][This object is made up of more|than one shade. Reshading|will cause the object to |become one shade. Are you|sure this is what you want?][ Continue |Cancel][1][Please enter an angle from|1 to 360 degrees.][ OK ][1][Please use an extension of|.3D2 for 3D object files.][ OK ][1][Please enter a percentage from|1 to 100 percent.][ OK ][1][This spin requires at least|3 segments.][ OK ][1][Please use the proper|extension for the picture|format you are using, or|leave it blank.][ OK ][1][That is not a complete|picture file!][ Sorry ][2][Print to which device?][ Printer |Disk][1][This join is too complex for|CAD-3D to execute. Rescaling|or repositioning the objects|may allow the join to execute.][ Sorry ][1][There is not enough RAM to|execute this join.][ Sorry ]$ZJ%L{ c.W) I l V  ) n $B]0c`!FO5RNBgNA"/0<NBNuNVHN!.%2?97nN ,T37`.7N p097`Z 973:~09:~y7f.$N?<N NT`:#77| y7|. y7|/( y7|/( y7|/( y7|?( y7|?N2#83̀837n8By8.8?<?97N X`3́837n8By8N 2#8.8?<?97N X`p3̂837n8By8N#8.8?<?97N X`0#77x y7x P am y7x P y7x PH|3:XJy$LgNBy$L3̐837n8By8>:XN#8.8?<?97N X`#77 y7 P am y7 P y7 PH|3:VN#8J8l By$L`09:Vy:Xf y:Vl.$?<N NT3:V:X y7./<7aBX y7./<7aX.%A/<7aXBW/<7?<7?<>NTJy7m }:,l#8` y7xJg& y7x./<7aX.%I/<7aX y7x./<7aX y7x0(H|1$.$/<7aXBW/<7?<7?<>NTJy7m }:,l#8` y7x./<7aX y7x./<7aX.%L/<7aXBW/<7?<NAXLNuH# T <# \ HaJ 4j 9 4LNu/9 8 y T"y \a2J Xg@ y X# <# ` HaDJ 4j 9 4XLNu"y `a ѹ 8X 9 0.9 8# 0LNuH# h dB 8BA><? y <"y H fQ`RAQJAga`2<a2<ara~`2><? y <"y H$&fQ`" #N N^NuNV3:Z# 7p>4N N^NuNV#7p>N N^NuNV3:Z3 :\# 7p> N N^NuNV370.|Hм!-@=|` nH2n72RRn nm.:zNB@097N^NuNV#7:#:8:#:Z:#7:#7p:"#7:&#::z> aF377npN^NuNV>a*pN^Nu  [1][The Cyber Smasher is called|by CAD-3D automatically!| Version 1.1][ OK ][3][Chaining file! Insert new|disk and press RETURN.][ RETURN ].pin(^2 ^` Cyber Smash .dltL_R_.dlt                                                 h  ,      >       `,=`,LArc's PFX 1.13P 1990 -soft, Markus Fritze g.h` /H*@"m mA$H -(H!!!!!!!!Sj JC pl QN , HD , p,m:<0r Q&N~*6<Q~d So:Q` H"CAD@CD@ArTApAQoQ`&-A& LA(HJkf&CH"grאg<fA``+D +E+F.ޅR؃+D؅+D+VC m Sj mJfA, "gr/r$&(*,."A$A&A(A*A,AH~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H`Sf"|`B QL gpNޭ0-lz5-OVF:\CYBSTUDI.O\CYBRMATE.PRGW`:N.v h><4xNhFORT,Nlh- TGKEXIT>*^:4UNNESD- *_TG?:DUPT/^TG0z?9(LITߩ?: BRANCH?<K?J_gTM: ~(LOOP)RVh\T(+0Vh ҄(DO02=|=A=9 (?DO~@f< BOUNDS(>*N GODNu &NR:  PAUS`:\EXECUTp>VPER!<>4hTG>`Ԟzd0nH0.|(LEAVEXN<܈(?)J_f:<AH>"ߡ(<!0@H'#0<@#m@!R@!!"SP  <OȃR & <M {DRWTO 1DU? 2΄SWA~0, H@.'!" R@?/:TUCKR63NIf>N2^ROt240>?b4"-ROT028lFLI00{X46?Di(0NR>B $Ȃ>F0B0Ќ-3ܿR@06HPIW02@Џ @?~2ROLL9 ߤ BANJ0W:ORZ0WBXOj0gCNOzFgCbTRUEfj@rFALSfRCSET2%#ACREB2%F@CCTOG_GL2%CЂON2$AOF2#BP:WANEGATE.D'SB:0'R4ABJJWj8S+!e$ #_2I(RBBu@P"@PT@2*:2/SU2Sv8P0@1+RWAۂ2PTSڂ1-SS2- UWAUM#P/9U*(B$UM/MOD>0"HA.N>RBWAȂ0<^JWk`V0=nJWg`n`f0>~JWn`n`v0<JWf`n` Wn`n`2ag`n`am`Ud`Φabv`x`ƂUZ`1@`^```<>9xB?/R4`\, q܃MI(p.*FBMA,rpF6uBETWsEE+p2@>6pXsWITHIN9VBL2@2*r2]!9P&p&B 20X: 21/'1 2/0 I`./{Q 2 //rl3r\r4q Ps45q( FB 35rq 43r21(߆&^N! 8D+ l ї:! wdDs Dy$S> 0_/ztDABS TRy" D2 (b" ~ ⿅"D-9 ~ }jB" ?@r ~B# ΃D0(XlD=݁  0:r*.p 6 F2D8<wD<q dpݪ2d  ?r8hqFB?$ ҆MUAb0Az6p|FILNćIN-e1' LPRI_NTINGǡ~fEMC ~.SCTvO^STqT@' WARNINT@' ߢDPҴXR#kIJ΄LAUT՝CST~CURRENԴ #VOC@CONTEX/2^@( 'TIBkF>WIDTȦ( ڈ-ߣT*FZBL˾²( l>*pT^( LSPA~pÄ#LÊ END?( xB.@f( "( wBE-AfFCAP8ӱ){ dL 2#SAQ:) ERA@(z ב) BLAN( ԅC40T?) LENGTHyP2$C*!9.~r=*bUP< am zn ?h҆UPPE(0BpZDHER r*ʃPA3`^P7a*-TRAIߠǐrzB B+&COMP(~/g gj?<`?<Q?`BgNӚN,-+v2gaaHZph*MPARp ܚptq-GEMDOS.LNATO(b-Ά9FB-܆(KEY?] ^L^4F@< F-(+SOLE! ZB..`KErvnCRqv@PR-\.O(!(y^\( bLzCRLF[ ^ b`(„TYP $.FB.蕅Cg*7E8z]: X2*RfBACKI"z (=.\EH @/~BS-*q 1  (?DEL-IN֬ 26i-U#jFjzƖކ@['ResetP  xq0>0(CHAR , ZR2ZqVTLنqTfCCT?CC-FORUДunn+: 1EXPECZH*z\86ktHq:@߆20b0~$!nFB1tTI&Fr1QUEԠ(DH & r ~#2#BUFFER2B/BUf2 REØ$REC/yQ2 FC @, >DI?SK-ERR_@²w2MIԒ@ >SIZA* FIRS !NrIT-RPԜ }>&( { >#2 ,2&#pD28>UPDrB^R4NREAD-BLO@> tWRITEy2ˀ0X3h.v7BdE@\N0 LE}`2|SypC2 p0`&0q3ADx0LZӚ3ԃDO,N557V7,&3!e69#AB% in % Error = b@&'N6C?&qjA%h Disk e[B>8r4FCB1PA0ES.BLKt8K8 4jCLR-!(=14z2]"D4@K0^&TRW-HAND1^(SsRANG1>jAnd1%h Out of ROangeA7QcEE%8$pPQ6`B B؝>-RW0 (-vz`Xz~`6P6ȈACITY4JQaoLST0* 8!e0 ^f23b"6臤Ѡ0 eH1PB+r(">>8kpV:N7܆\2X7 CAR`PXr7Z߇MISS. RPqw.8r8r%Dp*ra&`P)!&k0&4w`΂Ћqn(#^iΊq#4Ίr(z2.p|pF`Q(p8`j1x"7 Б063(rsz30b8^E_MPTY-#$2! b `Q`zrp1b

c"(*RPBژQ  r OPEtu>p=QpVSC@O7penF>Pِ-`JPq90Bf9VDEFAULƙ,@0,CB>."*rՁ9 (LOAD0 rZ~`t r22.`d&h|oP HBPqL:DIGI<0k< kk_j>iR㠠UB36P:n*VERQB Q $`Q r^ j`wZrs;ȉ(NUMBER?zr 5-R8&Ѹp,p/Vxz`Zr t2>:0`>.dw pw8~ Dp3,9ߘx%ܲ:<τHOLSR_Z RN7Ͳ"!,τSIG(AZzP#<DOQ *Q >!~pDw0b^#bXlZdHEز1CIMA ƊOCTBINARa{ƶDC6P=(U.z 1=vU.2=U.A@p=(. HrL"䁮:.P2f.QB}PFJ(UDXѾ0UDsј2֤ЄԘFܐ(DP ^b҂D,2D>Fّ??@>SKIP,RACSAg fRH``>{"}pNT6gL??J/STp>"H>p*REHӐe8~1P"'@ԅ'G`^ X ` `?. B]Ov>1PDCN@ .() . @ &Ԃ@ \ rrA ̈TRހ 0df`"@A ܅DON2RP 0X x"A ݈-83,h x"B!$N>LINr<2B!L>NAM`aD>BODYRb_sw jB!P NKs!Z!B!r>o_ fi^a1\ DL[!!HD>KטrTJ!DHASH!2J|@@&C!(FINS"$BB>gFCx< Y<?f$@gHf>|@g?<`ʣ4>`D? h#THu1$D!Ab6"  " (4a( ",@LQ&.!"Up!""0"P6PD"v??UPPERC1ܖP#"INEG`  p#"6PE"?STAq LP*'Stack UnderflowR!W#Ov`#E#4B TUS߀E#[P#n#x !!۱F#߅ALLO >\F#jp#"xC,)Z$ IGjH$ #}"EVET\ 0R2F#MP3Ӑ#mF$IMMoEDIAU "]"L^`R$0F4^Dk3La*$h$hH2BASCI0#404&ǎTRO5pH4А2G$CRA6' \ initialized execution vector.G$Ԉ?sGA%( `.1 ? B%w &lG%,['(%03%<[33EKBF2G$t("Y.`$2Bb(."uHNG%z,"D .P~~##1".A$0%w%2BBhBH%ƔTj@M)"&!&p%d>p%ԂH%w(1GET%RQ' Bez!fenceW fR PTQ&FJR&P&r@8%XR\ H%ֆ*S3"JPp>A!&cI%LWHERPI&?oERRO&мP(ST'L! l p&d^&@p2.'ԂI&Ĉ(AB2C.r&tAzFI$cB'BIG'0a 1J&?DITIOTx'Cond0onals Wrong_c|>MAR[0zF2J'>RESOLVlqBqJ' 9jrAGAdqt0tTREPEAQ((l^jrIFss) EL"q'xtWH)2L(q,^)d F~F2L("CV1 $̀o#)Lc^0&!)8 )&A% isn't unique  ҚS &a` WP"D*b00:t0TJ)4x"3")t !CSq M*?*' W#Changed6)DHID-^"Q-S-S+TMR,>I|ҁn X߮-!b}*0-!R,Z(IS c/-bP@1-I3.$0-.%0|SU MZ0" -bR-#fˆ+"0|S-ϐRUep|+yN!.x#~a.0QUIQL! Fr+@ P#߂V.`vֶ%_ okК B Va.ZBOOT ؊оWARA1 Warm W rt}!S.ΰL dNG/&&  . `NT.jp0f6OP/8T.҃BYHѼ/b.<.<.<4xN;*O(m,|.N@B/g/ ?eJNAX(_XG`t/zNG ad: ՈBB7W-PT0J%8aW/N./00$%Top+ j $0 08% W#Empty O.Ii>0ڀ4z00 10UZ0_rX.R*^2ܔh]||00iqX0>ͣF2X/.IН okA.>SEE(Rq@1l1.M}<j*0H&QX0ԆRANDOA1 _1C/A@hL/SCҌhlVP,1f z ~!nhz( fw`H jf_0U?G!(gCB1?ENOUG0/'Not enough Parametersf뒄U1R*2R2f΅+V32=f--/З1HR,N32j3tR-" ALSq #1  srONL42\! (  &2\fZ2%0 \r VCIO |r6N 0P2f,|Q@ ORD y`text: @3V 3P!j!0DQ3@ 2#urren=!QU""+MPnST# tӀZ1O!(3 nFCB2ŰCYB{RMH.PRGÖ/ oCLO$">d&2<,2l1\'CaMA FilŁ*  5@! 1RޒQ. ܢ5Ψrހ1 4S0CQ |0! 4Hx05 5?68K-D ҩ6B8>h `>^` S@ Qq@`3534 MORD߄1 ` Zp6d.36rnQTTQD3 SEDIC7",r?xTIME_p}~520I7"OՏ0,A?>MAR-@N0: l-d`OL7R'hQNAY<4,U<0V@,sRS 4M8EA? փLOz2DN> |wSRÔ@>>,>>DS*>fPSP>!>R>&I ?>BAS>t²>ATCȶ >I;B1bDOUBLEM=^*=v;䪤 >INDEXd0_H<=[d?ZPF Ft &0X>&F_;|;t8@Z`DA]QMԞ ԅ,]PU@?h&?o>;-?bo ?`pR4+qqRA5d0?&w`?(Pτ?]zc ?x,dVO @&@K @; PN0 ?IM`"?>,X;:;; ?0>OR@6& @*VI@6gTSUBpg`ADog|EORp gnCMPp gIM3MS/ ;0hm>S@RXLX@Q@Pgz4QgA$τIEA>h>V;&0A@AANH2rw?LEANAwpzr0 AbI>DOARD@yA A>?PB*P, aт8П Xd AASAƠ B*A& A~L,26B9I>_ROXL.2u0OXR_c\WRO-2jv<9}*IB_2<~B>>Va?L&"BvBTSTB<BƄBWCHG@~LR~Bfa0 Aff`CLp %0VKC >nCb B1a FP?~": TChTCl* BBRC@`0 CpBSC@a!|BHC@b!BLC@c!BCCK@d! e!BNC@f!BEC@g!ăBV h҃! i!܃BPC@j!׃BM k!kBG l D /C@m1 00n1 o!&τIDBC<#PD+S!8 BBDXDJP0d>0Au0QZy1r~0HIu0Ry1~0LSu0Sy1V~0CCu0Ty11ʞ1Uy1~0`DJVy1~0EQu0Wy1~0V1Xy111Yy1~0PLu0Zy1~0M1[y1~0G1\y0E) 1t1]!AAt1^!A(11_y10CIfcD6TVd BSEE^P EnSNE^QAzSHE^RASLE^SASCE^TA@@UA@E^VAz@E{^WAƒSV@XA@@YASPE^ZASM@[ASG@\Ay@L}@] F P}@^Q@@_0ED\P?/H`dXF.lVE9(UpTR[N;Q>U(N`nVlxR<~XhnV;QMHHNRTSrv҆QE6L;P`DSReц mUF"agwIaEXTG@``GRzda``Hf>hHaGbn`qUbBSWAUHdȄSTOQPrG cN~gLINKUPNcUNL vXDeH(EOh;^`~YGCMP^% H@CnT b5H.X#~rxAqH]p^SsqOIDʖ|s;t0XHKѽqzqe<0EP I>> ITRs IADIISUIkXANgkdO_RIkpL}nFI|CHIApDIVUIU`SŀɁ_MULāɁ܁ҁ0IރIEdO0D$JSIN0JJMxSCCvDJ R@92>IF9NqIHƒPEd@`TAIJ9BLBxvJR Jx,ICLJBgJNOJFՑ΃NEJDՑNEGXJ@ՑlTSݐJ~ՑICON~h2JRE{@KNp0Kڐ,q0(RT,s04@,u0JTHE:KIF]a0b\ELop`KbKTb@_BEGI^b?lUNTI`0}bAGAbJ…WHILKbbREPEATALDO]S cLObDzb0=m L0<f L0Pf L0>f0L&f0Kʂ>|0L2<*0L<60LHD0.Lw|M($W.v|>qM6B6qLTXTA<="J[MoIN;f\9ES-OofNrzSIZfrMM?*MqLABE**MrvCOD|,8&BU,NNMN<4xN oN&3T1N20M$4 ze$fТbA2RA0|fBPG:``0NLP4NN0MLCN _B@o?NN _0ҰL@N _?‚_L!NПN҃L2N _/N~СN _ N(PAUSEO/ /<:PAA \ PN0Mއ'TAR0 _].P,_*_C$2OLOCAb8OH@p( d9!l濡M̅SLEQP* OPOoWAK|NGyf]O^d?SINGE@nq^!)^p݀T(O.  NO @O$FUDGudM!zP>P|^1:P6@,PU<(xHBU4(VO]^T(VH(Vb2(\VQ|V߆HIDD[,NM@PLMARrRF@Og̅?p1` ^PPPFPڃ{?CzP?Pʄ.S3 Scr # 1qFap.1 &Q1t!Qx|2R1f F1f hQT @Q4TRIAp QQ<~  w.pE0}Z zlQLbRtRINDE.1ت~INpQhR~*!@QLES`>z*r!RNH0R4WORD( ("rtR$!ZLBpHP0D22X1&<ߘRr 3`R\RT#TIME Te?RZRc RR ~RMANY}hVS}Q::}Ҏ`(#*$+Nn S ZΰS6vnqH)ŔrP=!`L\S:Su> pLuB!N#R2BA`X1B> (CoOPY)} 8*j S#P!.S.<"@VIEU!,DP8`l'entered at 0minal. 3 jt=!J %0STf87$is in !%screen jnT%may beQ1curr 0 file: \7jt"SHOPPESU/Ĭ4΋VEY- S@TH(TT&.Tf>j%gto22Ȉ 1!0U$z0TT{TU"T3"A_\UN>`τUr8Z!$@& XU BvU}UnTT* pO@T@ T؅FOU U*SCAN-1C UURAUSEARCH}U4PHV2NB B`UV ,*VU 2PQ,w|T@JI8U@NUʃOU`%sub~_0ipt ou_Pf range oS0j!0D% max O0 1\0 tri0j.>FQTMAP>V bVVV@CASE^+NVuVCYBEDIT.BL7"WK]`VE,NsvHu2tP{`0&MOD!`W(&CURSNp;c6&OLD-6hF&UPDAT9eX&BUF-AD ~;ch&E-I0}Ph0aT`X}ea ;b%Xw-OFjf>`%Ye>`oC/Sf=az.3TUu:>`-TID(0XB X pZWN>`иΐe&0 &0E.pN`XCwRTX`WQW+uY.r Xx7q0C-EO+uK4td6D`PO,W@DQ8p瀇+reW@ZXz:"p8pOGE?rJpFprWO-Dd(XXnXWʶWX8rޙvcWt&B7qyv`sXYp?XΈE-fb|WbrY>#}n0``H>MB:qvaOrYzjY *?PRIN!v 1~tX|A"ENDoX4yqE|sp| rYCHAR9Srsnz1f ۃNDrt|>Yr0XlY@0$DYXtY֋?EMPTY-YXYtāZDISPLAY-TOrp *1tZYXqzXYZr6EXPAN01fWNAYnLX0SEHK4>Yn&1JEqZRDK;B[tINSERTC&1Z>>ZYDZd[@u`[DELETuECDXZBK%-づLAoYZ[DQrՐYwYn ZYbR-ARROUXJLƥ`AТ[bUtƥ,̇DICX}[q[D@`\ ,s"$: $6b(W0^hf&W袸RETUR~!,&1"0\LE-{TAW"X z8Т\?EXIT-POR%ok LQfd(qªs]Ău]n{«<،ⴺy-^"^mL^H^>^@`A^P^-^p ؚ,֖^bBҎH3\nz_-f ]2sL-a YY^ ^Zp@ YH0 q_Y^sR֌q]x&]➆⤑_=Т \4Ҥ;^X_Te ;* _h,O%$P"X_}tN _ Un _^PCLRzq$W^ _څL-DE[JN _/d$Y0XlNt _@REN!p!R&^6`0GΠ8%'b00VC&1` _ED-NEXOP{W`Wb`p`BACZ%`mچFWF#L` PhzST=O`p `HOM6< a \x^Z}Т a<(DbRSV\ ]BaD[_[ֲ–\_\Z\>HazLALLOT xr.4q@?aDLC 06aA0b qab_n?.C b@ʰ\/ ~AbD|b$04d%VDh|a~.HcEAЦ 08)0ưtbb*&Q*̤P&\@tDUM }F btq?baAb;!bwDU@b!>cDLa|1f N@ bJLXSX_j_|QMX }PY@ a[cWccBB!c<_PcQ@!cASSOCIATIVcE:MPR d 2.UNNESOPʰ;pP1ڇ.FINISq33$EXECUTION-CLASc$0%'*N%h*@%d.KScdwNdhbFdn@wdn@hd2&e>.PFAM!Q!eeRlh?Xe@?x.IMM4!B!@edF'e/.CON`NOPrP"DT vQB?.VARI/&AjdTEqQwRValue =s AB.!ʰ SeAf0.2?R5!j^RTN.U'-UCzQ V_ -4R(flZPEFEdRСVISPd !(fySQpUV_S.OTHRSv3!gF % Code|Ԁ=iiH…LBPTTa`i΄LCNT``W FưN@.iOԉP-t:&520-ST mtRTHhP~p/jPR0ARpjqh- 8dq&hqq/j8EO \ pr/jfrHr(i`81jv3wi0j2)/jEv4 jDFLUS6Jhk.^*zikh4iN@0h:SHOW/ j*khhTЀbȳȰ& W܃i`mwWa$`K ai&,&im,n li܅LPUAZ iZ0! vwn^oYo&W<poXBvo*nNon.FUNCS W*^W: Cut-wordy ^T: Tack^K Line (^L: Lift-l0 ^P: PasteCX lr-y ^F: FwdnR: Bo4G: GoTon#V: Verifyn,F1: Save-EditrUNDO: Restorenq(F10: Abandono DSHT3 "0q-pq BOXTWX82qN`7q*6BOL@ĂJoSx t`qnENqSDIRECAφOLDJBLANKLҡ/X8 PuqSRp1% Searcho forEPqvZ q&% Directij (F/R)EPRA`rp~6!q&r\s( R hp7 A>ߪXrAs  &a.|<RWt~,W@&WLX`àyqr@nESCVZ/l/|+H!rR2BEL( ΈrgKP$"I sBN!(s@ssLsA`q(@TROL-R)V |!\ *ab`a`\nn\x|!ns8`ro^o._Z*s0?CURSORἁ;U^tf@;8aMtwj sRAS X81Mt t1rtZ| qtq4qTozZd@t4)I4s F &u,s1t@@tn.@UW0W_R@xg8FA@QInsert ON0p FFD 5zo: 1CBuffered Ds:VX2Ms:B9@sE-,aP/@ !#X 0% tx@u،E-OVERSTRIKQt[YvBݐ^ZY.hvDtQv`A{PL.X[nFRtLSVEDBW/l' ..argument?uW@\CvvTHPv"HP@WCLEd.QvxEv< PЂEBzvWv₩7UvMAKER.BLK7"eK5ep pU|`U2Vz2*#*^q^\awV2 SL?*##rc`p]`vGEMDOSwNA/NӮz` MCRHw` `̀ \wa wHyaMFREbIh`cxaxdHXBIOx(NNdr,pSx:NM>bx0N~0e:\assem\dosound.lnk5ovxBNULL-FI!xN@*xzZx`wqEy-OpxxNqx2@%jxނ2!tGJpD- ~ jrݍbATE AoTJp`EMEM-݀wjodJpH\AHy4AL jKlSqHRdbAZ_JUP-sSw *lбy'zero memory  alloca-oszM0@yylxƒyBxyZyxy.&NyNDRxvzB zB, z<,z&REPSEx/ x<` y 9jlz%can't release that!,IN-HANDL.OPENqzxN=` z.`z&\fMCLOXq]P!>MFREsADϔ ?w Pyt0{NEXT-WORq p/.prUgza]PMԊWIT@!{nzf{'ޟfindle}{(' read err{'clo/maker ģ jN% code length: j{ |iP<Jh gRS߰0(}Ph 2AwI@_HH@ ý2@`QT`{qSPRITE}D$Op0*2*~{ wATj^@H&j. R@66j6SC2BD&@XDQ& Q %@ v' PUCNX`Ihn06SCB,H}DO-DELTA~,:0"_HƳEͰ R2SA6$ﵱ0 $?9vDISSOLVEN.,,Z*ZI$G@Z\d Sf9vPN  @ ϰ H|}pƲ2PI:48345D66EB=}TTPbtL`oXOR- Z< d.L:Lv8B/T/⇴qПك~ _:QAxPBMS BAd0*_OS@ vX;By'@`f Na@aJ0NuH~CBBJ6l}JBgc1Y<0mp R X4 L~&COL!YCLŅ C4B@A @J1#H2<0h3W@`Bf@`BUf@`Bf@ൂXA0sT$oJzbh% #J \OnOEQ(:$zBJ)WCJBi=CA6 z @6?KSq01 p03_0000SAP200B@cwHEJ8Rڞ6AT_fVPE}vP"SA7"~Q7Da4*0@@>!{bZA7%0!BqpH>Z8HJz*qFNGRAPHICS.BLK7"1i_rp,P ARRA(*#*NP*NP*CONTṘm oP*GLOBAoooi*INTINo);M_qf*PTS"4FXj|ď֏haOU3EWikNJ }*ADDROUT̟ޟ{Iμ-jVDIPARAMTALLOT ?$SETQSzߎP>{ P>k  `Ghu `L?*&܋΢DQCAĽB20>sm `ҏ cB``я(aPʈTEXTsQ0,b֎쌐%B&SAVE-EFFECTq\*SIZ`@*~젅*M;ODl?y|NP HDO-GDP: WRITE(v҆ 0҄,܊` BINDEXe::0/"V1-AR(`xZ~ㅰj6<҈7EtnǴ2,0ӀƉ7A+b`RESTOR|" `|G迍l"\VG ԎԍrT"l2z"ANI9`G7"Ko>2<ABORT!':$VAw`#z#|e*`ASCII"f":2ENDI((l8$`S:*_< p0R$@8CHECK-LEcBstring too long!U:t$!P*Bg`or8O$.R}`*8΃B*`LEFTlRr" b &RIGHT$Px2<,!PP` 8rr%HA_R**0  CH50(`Z`}z"$+*"Q!D!(C$$"V""pQD! "BqaY(!&o((ē ~dC!r Fa $=~8&~lg<1Љ ?T-FLAN0{VR0G-->:L R^5Fn6lFILE-NAMŒ*@??9xPX6 .DLTl1 t0ք.PI1201MP?O.O@O1DOԒl.0h\@: X?DO:ᒿzR* fSTRIP-EXnϞ`8r2132pi301Ni `n@L$?wB*`!|G֠ @ { pQB!X"`#BƄPATHi O9_K_YZ!։WITH-!P&___\^.SND2P !!Q-IAAPCM42PP@INSERTsR(Pzn a`z|`SƆTO-13(Aaa`!(a10g>h>(aQ0g]>gbuU BEBUF1xxNa~"^D- ~ ja-CATylx PayBx/xP`` j`aҗ`z.D2"~SP8" STEREO-`wj<"TRAP15w<`ވBAD-4?qEq"r)sY~`ENAB0)r(U⛶aԠz jN>kܻv% PL>ԡڥ,gLOGir%Dy?a$a4z.JJWedt.&hMIXhRcA:qq4_&~CAf 水?-MOVl M*Z ĝD'(pA`'O8ɛbEyP.2PAROO͜ h|@4*v|<4v|D>v|LHv|TRv|\\v|dfv|lpv|tv'&DELT8V ,\HI-BIfALcMI(h @f&F4=HХԞVO " jֶ׶gТAy ҭ֜ F( FpR~ + LΈ2(vdFOR-FA! ğd`)fLINE-A):)PFq?z):kmhLFG_oBP_Fq)R?dWRT_^_X`޼_YbW)di%f$`TRLEr2LANE^grj1(,^d`*Xxf*v()||񠈄_Nؠ*d`+ĈMOUSE-On.z,LSFIRcVxNdNw fz.NA2SIZءfNU%߂errpin file-size cp(s)7 'Nl[Ѱy҄~, 8Ԉ1#,LOAD1a,sp'qenougmht. uzV}open- ra{({ V%read :(G+`C&¢2xFd`- HPhQ -$SPEEĠ-ACCE(Db{ģ{-1&REF0tPaL0P72!_P.P7k܆P_r 3qt22L0 r4STOP1g2<4-ȃGE({/T2PBYbԣfyZqIwt߮^2.PU`ͼ.R_Pr_ ."LZBl`BLLlreel#.~a@nAPPG8>a(AZka}t aa2a@𥻆.htB.P`uAFp0Ԥc`ZDƊ#DA3MQz< \Tdisk is/o>j>% MRpmped d`/?NEXTA[ ~Pt  qYZd`SAVETfRRvReE0RQ[ RA~d`҈NR{q~]NU["~8jGR2c,w(`&?Nȧ6h߄¤ `` dD||{1 4(@q/VEҒ* version 1.00 4/1/87? VERSION#_d`c߀ƕ̤aZbab̐ Q z8 Xdon_0󬘤dcb&,bM0%h ?v%`&T2 7FPĭ? 5̼'¬ ĮКuu0м0!If1Q/Oz./,Wele!nqInpremodq ?wqokp0̋OBJECTS.B/L7"?K 21!KTlh@xpKEYc#xCURRENTtINHERI@b篜( WFNxȄ#@`TYPEv!PUBLIC;LOCKED,-NW$x>0`#   OB@ '~P\Sv(d]Zalv݆]PTR'ԋlHa@(  x\x䰂^&<* ,h.@I0(=1!CONT?UN#g0H ("&{ 7NJc`@T?NO%P(#q-MOD N(FINDOPa p*2#J!""MVp_1 v'unreocogn6d rap|ADDJpp1N!! jsO!P9Tp$T#! B Zb`OCOPY+g0F|OFF@~g0#~ʈCOMP6f1$h$-2$0BTV9(*$N*NPU(Ka N!`HT OEpSf1B04DO.~*nQA7l$.C0# #銫% V"Rv"(]ABORTa|&MAKE@RUC#$D*Ҍ-p#ľ /$*Ȁ+8 "DO-N`K!1xz0 UZ'2* #uĄ2~bIALP # a f} n~0 "n1.IN!PNC21*169*1#sD7#*ވINCLoUDE>' %0LLJ:3!{Zԯ|&fa@&:Ab*4;.0#ĴƴBAtZTICKCڍC#SoPLADꇕ-BRTzB@"ZERO-BA<@(]@R">HV@R:TIM5KNO kzQk@ʅ=HV^AT6TGڐy *жl.llz.xя28uKuYEcժ,&Œ(1,<$bFUPp+?KDwݡJ?EâwգKȆ@߽NEXT ҂ݠtcыpTKzQ'OFÃHTa@Э âbRȺNd?wuBqãjj£!Ye8Sŧ½,B%CHAIN-WITHǐ|%hq jyBx PrDۢۢv;|p%To chain, you must do it before.creating any othobject!Slx&T(^EQ@Z"A",(\<6(A2sAhhBZ7J\TJV(<\J`S x^¤h4i3tpJnos? defin=6USER-.MULc 7`<LfxxcR̄$r_tH(qAr"Ku2B ".PFöxڐADV3zPh <* ,z~*Z΍->COORz2 uq;+1D->c0pLOOyPQly2X43~Xe3wY;Ēy2a6y2T'?D#cy1 bP(%/endframe # canno smallthan start D'NāĈB3T*"L@X0wa$&5Y`B&f@T26萫jq M*@^3,@RTABP0@~CURRE5N{G4@y26@D*DI]RIONwa:@3<@(?S5P*"(ZŒS{x "a9 ,^TƎ%$Aenough memory loop. Sorry! 'Ně&$a% load... N߀<2@oq!Q5A%U&%Q conts j%u(Cs,8RpڥZ)RE2R2)R4a 0Np6q:d3է[Pj8R-bb~lf!^,bŇGA?U`Tz?D fOrtZ VIEW(Z#~$OBNǒ* 00BOOT-ŮZʉFORG'0Oc%h Oxˤˤz˚KILL&'l&h~p"ʇPAPETW1=.ܡ("+̲c F% P!NTING: ⿲6Place Reel #1 in drived[=ss? a keyM"CϰtN1RUN-FIL%hCY-INT1 E oOPENO:<HLOADP>2R+נ#6what is runfile n@? (clude path & .CYB ext@er)zбa  MP6Հ2ovQ<'N&savcybermauimags -%.PRG %h+' % IS ס SAVE-SYSTEMxFǍj!d j!nFREE(yBxyt[3΀NEW!њzTјd* v%Stereo-Buffzapped!use ENB9REmOre@ocfth@ b. b;re|Ptur!Aon>%wiONnmJ}:@̂(\PFr@ CKԧ>%#r Aident@abled:cTsee which|sΠ*GEM-SC({bφ-BUFƠrIMAGTpL_:ATRRh|k`v|b7ArpQR":(SHOW)ϖXpbQ j-J=Pf._zм,<`L_g:@tpVEAaLTB2X7pJD x—.Пa"%&2"^tєd ҽWEQUE!T F" TPfp@!&j|GP|2b% "`~ C1qN d<(Pwb"SSN"a{c| s&Ӌ̏:x ӊvB "  ĕ"ђz ". GP> #ʾb~l`!َ!43 0p@$@9 $h@^PBbWԴ4q^PT'N%initializSa}BaqzNzz%pXFERٰ>2 A`l;t RMcOuO}D54515: show2 (A) ; : l_data@2@ 34. d+@-->ezGre}OOO __-_ <<<<< CYBERMATE DOCUMENTATION >>>>> CYBERMATE DOCUMENTATION -- page 1 /////////////////////////////////////////////////// TABLE OF CONTENTS /////////////////////////////////////////////////// PROLOGUE The CYBERMATE System Upgrades & Updates INTRODUCTION OVERVIEW The Language Objects Delta Files Word Types Time: Ticks, Frames, and Rate CYBERCODE SETTING UP Requirements Drive Configurations GETTING STARTED A Simple Session Operational Modes Screen #1 Breakdown THE TEXT EDITOR Screen Structure Sample Edit Program Syntax The TEXT EDITOR and Disk I/O CYBERCODE Printouts Creating Your Own CYBERCODE Files TEXT EDITOR Keyboard Commands THE PREVIEW EDITOR Running the PREVIEW EDITOR Test-Run PREVIEW EDITOR Command Keys Tips and Hints GLOSSARY TABLE OF OBJECTS & OPERATORS APPENDIX A Creating a Runtime Animation APPENDIX B Stereo CYBERMATE APPENDIX C Generic Forth CYBERMATE DOCUMENTATION -- page 2 /////////////////////////////////////////////////// PROLOGUE /////////////////////////////////////////////////// __________________________________________________________ THE CYBER STUDIO SYSTEM CYBERMATE is one module of a complete animation system -- The CYBER-STUDIO. The three currently planned system components are: CAD-3D 2.0 CYBER-CONTROL CYBERMATE CAD-3D 2.0 Three-Dimensional Modeling Program ============================================= This is the core of the entire system. It is used to create the 3-D objects that are the "actors" and "sets" in your CYBER-STUDIO. Using the CYBERMATE Record function, you may create your animations frame by frame. CYBER-CONTROL Motion-Control Language ===================================== Currently under development by Tom Hudson, CYBER-CONTROL is a language used to write "scripts" that automatically control all aspects of CAD-3D 2.0. All your recording instructions -- including incremented looping -- may be placed in a text file to control camera and object movement operations. Complex animations may be created while leave your computer unattended. CYBERMATE Animation/Editing Display Language ============================================ After the "raw footage" has been recorded, using the CAD-3D 2.0 CYBERMATE Record function -- or CYBER-CONTROL -- CYBERMATE is used, much like a "post-production" unit, to edit and control the display of multiple sequences and sounds. For best end results, all three modules should be used together in a coordinated fashion. Obviously there is a great deal for you to learn in order to fully use this system's capability. Don't let the scope of CYBER STUDIO overwhelm you. Take it one step at a time. Start with CAD-3D 2.0. CYBERMATE is NOT the place to start in the CYBER STUDIO system. This is a powerful, complex, and flexible language designed to give you the greatest possible range of control over your animation sequences. In order to understand the concepts presented in this documentation, you must first become well aquainted with the other system components, especially CAD-3D 2.0. When you decide to tackle CYBERMATE, please work through the documentation from beginning to end, then carefully examine the commented sample code contained in SAMPLE.CYB. NOTE: Be sure and read the README.DOC update file on the root directory of this disk before proceeding with the CYBERMATE program. __________________________________________________________ UPGRADES & UPDATES CYBERMATE DOCUMENTATION -- page 3 CYBERMATE is a new and experimental animation language. The rate of growth and enhancement is sure to be rapid in the coming months. Fortunately CYBERMATE is structured in a way that makes it very easy for you to add these new developments to your copy of the program. Special upgrade modules will be made available -- through users' groups and on CompuServe -- that you will be able to incorporate into your CYBERMATE program using very simple procedures. Rather than having to wait for a new version of CYBERMATE (and pay the mailing and upgrade fee), you will be able to load these modules into the program and then re-save it as a new upgraded program. For those who do not have access to these resources, the upgrades will be made available from Antic Publishing for a nominal fee. We expect many enhancements will be produced during the summer and fall of 1987. The fastest way to check for upgrades is in ANTIC ONLINE on the CompuServe information network. Once on-line, type GO ANTIC at any exclamation point (!) CompuServe prompt, then look in the ST section for the CYBER LIBRARY. Complete instructions will be included in the library. If you can't get on line, check your local Atari user's group. NOTE TO USER'S GROUPS: CAD-3D 2.0 and CYBERMATE are copyrighted software and are definitely NOT for distribution. We encourage, however, the distribution of the UPGRADE CODE for CYBERMATE, as well as the animation samples included in the CYBER LIBRARY in ANTIC ONLINE. CYBERMATE DOCUMENTATION -- page 4 /////////////////////////////////////////////////// INTRODUCTION /////////////////////////////////////////////////// CYBERMATE is an animation/editing language that allows you to manipulate and combine DELTA ANIMATION (.DLT) files which have been created with CAD-3D 2.0. It offers a wide range of control over the display of those files, including speed, looping, and screen location. You may choose which frames of your DELTA files to show, and "splice" multiple DELTA files together. Special effects, like dissolves and sound effects can be added to your animation using this language. CYBERMATE is an extraordinarily flexible system that will grow in power and capability as you use it. This documentation contains an OVERVIEW of CYBERMATE, instructions for the TEXT EDITOR and PREVIEW EDITOR, and a resource section containing a complete GLOSSARY of CYBERMATE commands. Instructional, commented sample code is contained in the file SAMPLE.CYB within the EXAMPLES folder on your CYBERMATE disk. The examples included in SAMPLE.CYB require the CUBEBALL animation files created by the CYBERMATE Recording Tutorial in the printed CAD-3D 2.0 manual (filenames: CUBEBALL.PI1 and CUBEBALL.DLT). You will also be using a related sequence, CUBELOGO, which is included on this disk in the EXAMPLES folder. A good working knowledge of CAD-3D 2.0 and its animation/recording system is essential before using CYBERMATE. CYBERMATE is a powerful, complex language that operates near the hardware level of your computer. It is possible to "crash" the system (lock up or bomb to the desktop). PLEASE, do not jump into the CYBERMATE language until you have created several successful animations from within CAD-3D 2.0. CYBERMATE DOCUMENTATION -- page 5 /////////////////////////////////////////////////// OVERVIEW /////////////////////////////////////////////////// Because CYBERMATE is an experimental language, it contains several new concepts you will want to become familiar with. The following section contains essential information about these concepts and the methods used in CYBERMATE. ___________________________________________________________ THE LANGUAGE CYBERMATE is an animation and editing language based on (and written in) the Forth programming language. Although no knowledge or experience in the Forth language is required to operate CYBERMATE, Forth programmers can take advantage of their knowledge to expand and customize CYBERMATE. In fact, one of the most powerful potentials of CYBERMATE is your ability (and ours) to quickly and easily build upon the existing structure. CYBERMATE is "object-oriented." This means chunks of data, (animation files, sound files, picture files, etc.) are given names. These named OBJECTS are then modified and manipulated by you. Parameters for each specific OBJECT are set or changed, and the OBJECT is accessed by using its name. ___________________________________________________________ OBJECTS CYBERMATE OBJECTS are created in memory using the data contained in files that were produced with other software. (i.e., GIST sound files, DEGAS picture files, and CAD-3D 2.0 animation files). An important concept to grasp is that the data file (such as a DEGAS picture) is NOT an OBJECT. Rather, the raw data (contained in the disk file) is changed into a CYBERMATE OBJECT when you load the data from disk into CYBERMATE. This is referred to as "DEFINING" the OBJECT. At that time the OBJECT is given an OBJECTNAME, assigned certain characteristics, and given a set of parameters (variables) that contain default (preset) values. There are four types of CYBERMATE OBJECTS. There is a hierarchy for these objects based on their memory requirements (on disk and in CYBERMATE), and their power or flexibility when used in CYBERMATE programs. In order of smallest/simplest to largest/most complex they are: SOUND IMAGE SEQUENCE SEQ-LOOP 1. SOUND -- SOUND OBJECTS are defined using data which has been created by the GIST Sound Editor (available from THE CATALOG). The sound data files have a .SND extender. Parameters for controlling volume, pitch, etc, are contained in the SOUND OBJECTS once they have been defined. SOUND OBJECTS require less than 1K bytes of memory. 2. IMAGE -- IMAGE OBJECTS are defined from picture data of an uncompressed DEGAS file with a .PI1 extender. An IMAGE OBJECT contains one, static screen image. Parameters for controlling time of display, screen location, mode of display, etc, are contained in IMAGE OBJECTS. CYBERMATE DOCUMENTATION -- page 6 IMAGE OBJECTS require about 32K bytes of memory. Note: Although IMAGE OBJECTS may be created individually, an IMAGE OBJECT is also created automatically whenever a SEQUENCE OBJECT or SEQ-LOOP OBJECT is defined (see below). 3. SEQUENCE -- SEQUENCE OBJECTS are made from a DELTA (.DLT), and a picture (.PI1), file with the same name (both created by CAD-3D 2.0 through the CYBERMATE Recording function). These OBJECTS contain the dynamic animation sequences created by CAD-3D 2.0. Parameters for controlling time of display, screen location, mode of display, and rate of display of that animation are contained in SEQUENCE OBJECTS. The size of a SEQUENCE OBJECT varies according to the number and complexity of animation frames it contains. A SEQUENCE OBJECT can be said to "include" an IMAGE OBJECT (see above). This is because the CAD-3D CYBERMATE-Record function creates two data files: an uncompressed DEGAS picture file (with a .PI1 extender), and a DELTA data file (with a .DLT extender). All of the operations that can be performed on an IMAGE OBJECT can also be applied to the picture (.PI1) portion of a SEQUENCE OBJECT just as if it were an IMAGE OBJECT. The SEQUENCE OBJECT and inluded IMAGE OBJECT share the same name and color palette. 4. SEQ-LOOP -- SEQ-LOOP OBJECTS, actually just a more powerful version of SEQUENCE OBJECTS, are created from exactly the same data files as SEQUENCE OBJECTS (see above). SEQ-LOOP objects differ form SEQUENCE OBJECTS in that they are more difficult to use and require more memory. But they are also a more powerful and flexible form of animation object. The main differences between SEQUENCE and SEQ-LOOP OBJECTS are: SEQUENCE OBJECTS can only run in a forward direction (i.e. frame 0, frame 1, frame 2, etc) and must always start with the first frame (frame 0). When a SEQUENCE OBJECT reaches its end frame it stops and must be reset if it is to be run again. SEQ-LOOP OBJECTS can run either forward or backwards and can start or stop on any specified frame. SEQ-LOOPS will continue to run through their looping cycle indefinitely until told to stop by the CYBERMATE PROGRAM. OBJECTS, once created in memory, may be duplicated. We refer to this as "cloning" the OBJECT. An OBJECT clone uses its source OBJECT's raw data. Each CLONE is given its own unique object-name and parameters. OBJECT clones are created from data that has already been loaded into CYBERMATE, therefore they require very little machine memory. Cloning an object allows you to use multiple instances of that object without actually reloading the entire data set. ___________________________________________________________ DELTA FILES To better understand the hows and whys of animation editing with CYBERMATE, it is essential to understand the structure of DELTA animation files. When you create an animation with the CYBERMATE Recorder in CAD-3D 2.0, it automatically writes two files to disk using one filename (provided by you) with two different extenders. For example, when CUBELOGO was recorded, CAD-3D created: CYBERMATE DOCUMENTATION -- page 7 CUBELOGO.PI1 -- A DEGAS picture file containing the first frame of the animation. CUBELOGO.DLT -- A DELTA file containing information that generates all subsequent frames. A CAD-3D/CYBERMATE animation is composed of a series of individual "frames," each representing some slight change, or movement of the screen image. Only the first frame -- Frame #0, a standard Degas .PI1 file -- is actually a complete screen image. Each subsequent frame is produced by alterations made to that initial image by instructional data contained in the DELTA file. Because DELTA-file data describes only the slight differences between each image, many frames may be compressed into a .DLT file. Otherwise, each frame saved as a full-screen image would require 32,000 bytes of memory. Let's say we have an animation showing a red box moving from left to right across the screen at the rate of two pixels per frame. Here is how CYBERMATE displays the sequence: 1. The first frame image (Frame #0, showing the box near the left edge of the screen) is displayed on the screen. This first frame uses all 32K bytes of the .PI1 file data, including the entire background. 2. The first portion of delta information (taken from the .DLT file) tells CYBERMATE to : "Erase two rows of pixels from the left edge of the box and add two rows to the right edge." The box appears to move to the right. 3. The next delta information tells CYBERMATE to perform a similar modification of the new screen image created by step #2. This process is repeated for each new frame. None of the frames, except the first, actually exist as a complete image. Therefore, the only way to see Frame #7 is to run sequentially through Frames 0 through 6. If we simply display the delta information used by CYBERMATE to create Frame #7 (which is possible to do), all we'll see are the little pieces of the image that differ from Frame #6. Also, if you alter the .PI1 file, using DEGAS, in any area of the screen where an animation takes place, strange (but sometimes useful) side-effects will occur. This all means that some special tricks must be used to fully manipulate CYBERMATE animation. For example, if we want to skip the first few frames of a sequence, we must make CYBERMATE run through those first few frames so it knows what the new start-frame looks like. But we can do this without having to actually display that run-through on screen. We can even save that newly acquired information -- a "snapshot" of the new start-frame -- in the ST's memory so that we can use it again. This type of manipulation relates to some of the special features contained in the more flexible SEQ-LOOP OBJECT (see OBJECT TYPES, above). SEQ-LOOP OBJECTS permit the creation of alternate start and end frames that greatly enhance our ability to edit and control DELTA files. Since DELTA files only "update" the existing screen image, they must always have a starting point in the form of a complete image. This is the reason that SEQUENCE and SEQ-LOOP OBJECTS both include IMAGE OBJECT data. And as you work through the tutorials, you'll notice that we always "SHOW" an CYBERMATE DOCUMENTATION -- page 8 OBJECT before we begin "UPDATING" it. ___________________________________________________________ WORD TYPES Using various CYBERMATE words and commands, programs are written which control the display of th OBJECTS. Most CYBERMATE words fall into five basic types: DEFINING OBJECTNAME OPERATOR SYSTEM PROCEDURE NOTE: The examples below should not be entered at this time. They are included to help you grasp the differences between these word types. 1. DEFINING - DEFINING words simultaneously open a disk data file, load the data into memory, and "define" the data as a type of OBJECT. Thus, the type of DEFINING word used to load the disk data defines the type of OBJECT that data will become. There are four DEFINING words, one for each OBJECT type: SOUND IMAGE SEQUENCE SEQ-LOOP For example, if you type: SOUND TRUMPET The DEFINING word is SOUND. The above command will open a file on disk called TRUMPET.SND (created by G.I.S.T.), load the data into memory, and define that data as a SOUND OBJECT. Of course, the data file must already exist or you would get an error. 2. OBJECTNAME - These are names (labels) given to CYBERMATE OBJECTS at the time they are defined. The name is usually inherited from the filename of the data used to create the OBJECT, but may also refer to a cloned object. Again, if you typed: SOUND TRUMPET The OBJECTNAME word is TRUMPET. SOUND creates a SOUND OBJECT, assigning it the OBJECTNAME TRUMPET. 3. OPERATOR - Words that control an OBJECT and/or set an OBJECT's parameters. An OPERATOR is always preceded by an objectname. The objectname specifies which OBJECT's parameter is changed. Example: 10 TRUMPET VOLUME The OPERATOR word is VOLUME. A value of 10 is assigned to the VOLUME parameter of the SOUND OBJECT TRUMPET. CYBERMATE DOCUMENTATION -- page 9 4. SYSTEM - Words that effect the CYBERMATE environment and display modes. Example: ZERO-CLOCK This sets the CYBERMATE internal clock to 0. 5. PROCEDURE - Words that control and coordinate all of the above, creating CYBERMATE "programs". As with Forth, CYBERMATE allows you to create your own command words. PROCEDURE words are made up of other CYBERMATE commands (or other PROCEDURE words). Once the new PROCEDURE word is created, by typing it, you activate the commands and functions that make up its definition. Example: : BLOW-HORN TRUMPET PLAY ; The PROCEDURE word is BLOW-HORN. In this extremely simple example we have created a PROCEDURE (BLOW-HORN) that uses an OPERATOR (PLAY) to activate the SOUND OBJECT (TRUMPET). The colon lets CYBERMATE know that the next word it encounters is the name of a new PROCEDURE we are creating. All words that follow are included in that PROCEDURE until a semi-colon is entered. The specifics of PROCEDURE creation is covered in detail, later in this documentation. ___________________________________________________________ TIME: TICKS, FRAMES, AND RATE Animation involves objects in motion through time and space. In order to synchronize events, (e.g., make a sound play at the moment two objects collide), we need to have a time-keeping system. When you first recorded your animation in CAD-3D, each "shot" was a FRAME. But CYBERMATE uses a much finer increment rate called CYBERTIME. CYBERTIME is the time format used to coordinate and synchronize events in CYBERMATE. The CYBERTIME units are called "ticks." The real-time length of a tick varies slightly depending on how busy your ST is (i.e., the complexity of a given PROCEDURE). CYBERTIME is used to trigger OBJECTS. By reading the tick number, and comparing it to preset flag values contained in OBJECT parameters, CYBERMATE knows when to display a new frame or activate effects such as dissolves and sounds. Even though the real-time value of a tick (about 1/60 second) varies slightly, it should be treated as a constant. It provides an overall time reference point for all OBJECTS, OPERATORS, and PROCEDURES. The most frequent programming structure you will use in CYBERMATE is the CLOCK LOOP. This is a function that advances CYBERTIME one tick for each loop cycle. It uses the two programming words: TICK and TOCK. TICK begins the loop, and TOCK ends it. Each pass through the loop is one tick of CYBERTIME. Bracketed between TICK and TOCK are the OBJECTS and OPERATORS which are triggered when they detect an appropriate clock tick number. We set or change that triggering tick number with CYBERMATE OPERATORS like START. Example: 50 TRUMPET START The word START sets the triggering tick number of the SOUND OBJECT TRUMPET to start playing at the 50th tick. This operation is referred to as CYBERMATE DOCUMENTATION -- page 10 "setting a paramter." If we then type: ZERO-CLOCK TICK TRUMPET PLAY TOCK The SOUND TRUMPET will be triggered when the TICK/TOCK loop has completed 50 cycles. TICK and TOCK function much like loop structures in other languages. TOCK sends CYBERMATE back to TICK and increases the value of the CYBERTIME clock by one. In film animation we refer to the "rate" of projection as "Frames-Per-Second." 24 frames-per-second means that 24 individual images are shown each second. In CYBERMATE we use another approach. Ticks are very small units of time (approximately 1/60th of a second). We refer to the display rate of our animation as "Ticks-Per-Frame". To set or change the number of ticks-per-frame we use the OPERATOR: RATE. Example: 10 CUBELOGO RATE The above statement sets the RATE of CUBELOGO to 10. A RATE of 10 (ticks-per-frame) means that a new frame will be displayed every tenth tick of CYBERTIME. The higher the RATE number, the slower the sequence will appear. This system may seem backwards at first glance, but its logic and flexibility will become apparent once you begin using it. For example, each animation SEQUENCE can have its own individual RATE. You'll find that it is possible to display two sequences on screen, running at different speeds. The tick number is the same for both sequences but they each respond to their individual ticks-per-frame RATE. ___________________________________________________________ CYBERCODE CYBERMATE instructions, or "programs," are written using a built-in text editor. For our purposes, we will refer to the written CYBERMATE source code as CYBERCODE. CYBERCODE tells your objects what to do and when to do it. Small, self-contained programs -- which are nothing more than PROCEDURES -- can be created with CYBERCODE. Once defined, these procedures can be strung together -- or even used as new commands and be included in subsequent PROCEDURE definitions. CYBERCODE can define anything from simple "tools" that add to the library of CYBERMATE functions, to complete self-contained run-time programs that load and display at the (double) click of a mouse. CYBERMATE DOCUMENTATION -- page 11 /////////////////////////////////////////////////// SETTING UP /////////////////////////////////////////////////// To begin with, back up your CYBERMATE disk, using the disk-copy procedure described in your Atari Owner's Manual, and store the original disk in a safe place. From this point on, when we refer to your "CYBERMATE disk," we are speaking of the backup copy. Your CYBERMATE disk contains the following files: * ANIMATOR (Folder) README.DOC (How to use ANIMATOR.PRG) ANIMATOR.PRG (Displays animations created with CAD-3D 2.0) ANIMATST.PRG (Displays Stereo animations) HELP.TXT (Help text used by ANIMATOR.PRG) * AUTO (Folder) CYBSOUND.PRG (CYBERMATE sound driver) * EXAMPLES (Folder) SAMPLE.CYB (CYBERMATE "source" code) CUBELOGO.DLT (Sample delta file) CUBELOGO.PI1 (Sample IMAGE file) CUBEBONK.SND (Sample SOUND file) SNDTRACK.SND (Sample SOUND file) CYBRMATE.PRG (The CYBERMATE program) PREVIEW.EDT (The PREVIEW EDITOR program) CYBERDOC.DOC (This documentation) README.DOC (Updates & bugs) ___________________________________________________________ REQUIREMENTS To try out the examples contained in SAMPLE.CYB, you will need: > One "program boot" disk containing the following files (preferably all in the root directory): CYBRMATE.PRG - The CYBERMATE program CYBERSND.PRG - The sound driver. run this file before running CYBRMATE.PRG, or place it in an AUTO folder on your boot disk. It is still a good idea to install this program even when you don't intend to use sound because it also contains special error-trapping assembly-language code. SAMPLE.CYB - Example CYBERCODE for the sample tutorials. NOTE: SAMPLE.CYB may be placed on a separate disk, if you wish. Switch to that disk after loading the CYBERMATE program.) > One "data" disk containing the files (again, in the root directory): CUBEBALL.PI1 - The IMAGE data (a DEGAS picture) created in the CYBERMATE Recording tutorial. CUBEBALL.DLT - The Delta OBJECT data created in the CYBERMATE Recording tutorial. CYBERMATE DOCUMENTATION -- page 12 CUBELOGO.PI1 - The IMAGE data (a DEGAS picture) for CUBELOGO. CUBELOGO.DLT - The Delta OBJECT data for CUBELOGO. CUBEBONK.SND - SOUND data created by G.I.S.T. SNDTRACK.SND - SOUND data created by G.I.S.T. The first two files should have been created by you in the CYBERMATE Recording tutorial in the printed CAD-3D 2.0 manual. (If you haven't created CUBEBALL, now's the time to go back and do it. We'll wait.) The last four files are provided in the EXAMPLES folder on your CYBERMATE disk. NOTE: If have only a single-sided disk system, you may split the data files among two or more disks and switch disks with each load. ___________________________________________________________ DRIVE CONFIGURATIONS Although CYBERMATE can be operated with one single-sided disk drive, it is not recommended. The large size of the .DLT files alone would force extensive swapping of disks. (In the above file list, for example, you would probably have to use several disks for the data files.) Short of a hard disk, two double-sided disks are ideal, in which case, you would place the program disk in drive A:, and the data disk in drive B:. Rather than list all possible drive configurations, we will explain the CYBERMATE pattern of file access so you can arrange things to suit your own configuration. This knowledge will also help you install CYBERMATE on a hard drive. Generally, there are three types of file used in CYBERMATE: Programs, CYBERCODE, and OBJECT data files. The programs are the CYBRMATE.PRG itself, and the CYBERSND.PRG sound driver. Once they have been loaded, you no longer need the disk they are on. Your CYBERCODE (in this case, SAMPLE.CYB) is loaded from within CYBERMATE, and its disk is constantly accessed. The OBJECT data files are loaded into memory one at a time; their disks are only accessed once when they are loaded. A typical CYBERMATE session goes something like this: 1. The program disk is booted and, assuming CYBERSND.PRG is in an AUTO folder, the sound driver is automatically loaded into memory. (Otherwise, CYBERSND.PRG must be run before CYBRMATE.PRG, if you wish to use sound.) CYBERSND.PRG also contains error-trapping code and certain error messages which may often take the place of bombs, so it's a good idea to include CYBERSND.PRG even if you don't plan on using sound. 2. The main program, CYBRMATE.PRG is run. Now that CYBERMATE is running, you may -- from CYBERMATE -- either load CYBERCODE (such as SAMPLE.CYB), or load OBJECT data files (such as CUBELOGO). CYBERMATE keeps track of two disk and pathnames -- one for your CYBERCODE and one for your objects. When you first run CYBERMATE, both default to the drive and pathname you loaded CYBRMATE.PRG from. However, you may change one or both at any time. This allows you to have your CYBERCODE in one drive and your OBJECT data files in another. (If you only have one double-sided drive, place your OBJECT data files in that one because they require much CYBERMATE DOCUMENTATION -- page 13 more room.) 3. To load your CYBERCODE, you would type: OPEN FILENAME.CYB [Return] Unless you specify a path with the filename (e.g., E:\CYBERCODE\SAMPLE.CYB), the CYBERCODE will be accessed from the default drive and path that CYBRMATE.PRG was booted from. Once you have opened a CYBERCODE file, you must leave that disk in that drive. If you wish to use a drive other than the default drive, you must specify it in your OPEN statement *each* time you OPEN a CYBERCODE file: OPEN B:\MYCYB\SAMPLE.CYB [Return]. NOTE: Always include the file extender (usually .CYB) when opening a CYBERCODE file. 4. To load OBJECT data files, you would typically type: SEQUENCE CUBEBALL [Return] The SEQUENCE command loads all the CUBEBALL data (both CUBEBALL.PI1 and CUBEBALL.DLT) and defines it as a SEQUENCE object. If this was a SOUND object, you would type: SOUND HONKFILE [Return] This loads all the SOUND date from the G.I.S.T. file called HONKFILE.SND into memory, and defines it as a SOUND object. The drive path for OBJECT data files also defaults to whichever drive and path CYBRMATE.PRG was booted from. You will optimally want this path separate from your CYBERCODE drive path. This allows you to keep your CYBERCODE on one drive and your OBJECT data files on another. You may change the OBJECT file drive path with the command: PATH-IS (drivepath). Typically, you might type: PATH-IS B:\ [Return] From this point, any OBJECT file commands would access drive B: until you changed the path again with the PATH-IS command. PATH-IS will NOT change the path of the CYBERCODE files. Also, remember to place the backslash (\) after the filepath designation. NOTE: Never include the extender when loading OBJECT data. CYBERMATE will do this automatically. CYBERMATE DOCUMENTATION -- page 14 /////////////////////////////////////////////////// GETTING STARTED /////////////////////////////////////////////////// ___________________________________________________________ A SIMPLE SESSION Let's get CYBERMATE up and running and step through a simple session. Arrange your disks to suit your system. For this example, we'll assume you have a 1040ST with built-in, double-sided drive (A:), and an external single-sided drive (B:). Given this arrangement, your best bet is to first create two disks: 1. Program boot disk (single or double-sided): *AUTO FOLDER (Create a folder named AUTO with the CYBERSND.PRG New Folder option under File menu on the GEM Desktop, then copy CYBERSND.PRG into it. This will cause CYBERSND.PRG to be run automatically when you turn your computer on.) CYBRMATE.PRG DESKTOP.INF (optional: created with the Save Desktop selection under the Options menu on the GEM Desktop. See your ST owner's manual for more information.) 2. OBJECT data disk (double-sided): CUBELOGO.PI1 CUBELOGO.DLT CUBEBALL.PI1 CUBEBALL.DLT CUBEBONK.SND SNDTRACK.SND 3. CYBERCODE disk (single-sided): SAMPLE.CYB PREVIEW.EDT Place your Program disk in drive A:, your CYBERCODE disk in drive B:, and turn on your computer. Run CYBRMATE.PRG. Once the CYBERMATE title screen appears, press any key to enter the CYBERMATE Interpreter. NOTE: When you type in the following commands, be particularly careful to include at least one space for every space you see. Otherwise, CYBERMATE could become confused. If you mistype something and get an error message, in most cases, you may ignore the message and simply retype the command correctly. If you become completely befuddled and wish to start over, type NEW! [Return]. Replace the Program disk in drive A: with your OBJECT data disk. Type each of the following, waiting for the drive to stop running, and the next prompt to appear before typing the next: SEQUENCE CUBELOGO [Return] SEQUENCE CUBEBALL [Return] SOUND CUBEBONK [Return] CYBERMATE DOCUMENTATION -- page 15 SOUND SNDTRACK [Return] Now, at the CYBERMATE prompt, type: OPEN B:\SAMPLE.CYB [Return] Drive B: will briefly run, and you're all set to go. OK. Place a bookmark at this section. Much of the commented example code in SAMPLE.CYB requires this setup. Whenever you need to restart your system, follow the above steps before continuing with any SAMPLE.CYB programs. (Note: some of the SAMPLE.CYB examples do not use any of the above objects and are include merely as code examples. You can study, modify, and copy them to suit your needs as you become more proficient with CYBERMATE.) For immediate gratification, type this: 1 LOAD [Return] LOGO [Return] This should demonstrate the basic animation of CUBELOGO (revolving letters "CUBEBALL" zooming off into blackness). When the demonstration ends, press any key to return to the CYBERMATE prompt. What have we done? Well, first, you booted the CYBERMATE program (including the sound driver in the AUTO file). The CYBERCODE contained in Screen #1 of SAMPLE.CYB (which you loaded with 1 LOAD) has been written to manipulate the SEQUENCE OBJECT called CUBELOGO. Therefore, we must have previously loaded the data for that object in memory, and "defined" it as a SEQUENCE OBJECT. This is what we did when we typed: SEQUENCE CUBELOGO. The word "SEQUENCE" was the CYBERMATE command to load two files titled CUBELOGO (one with extender .PI1, the other with extender .DLT). At the same time, this data was defined as a SEQUENCE-style object. (We also loaded and defined CUBEBALL as a SEQUENCE object. This data will be used in later examples in the SAMPLE.CYB code.) After loading and defining two SEQUENCE OBJECTs, we loaded and defined two SOUND OBJECTs: CUBEBONK and SNDTRACK. Notice that the procedure was exactly the same, except that the CYBERMATE command word was SOUND, and the data files were .SND files. At this point, we are ready to program the OBJECTS. In a usual CYBERMATE session, you would now OPEN a fresh CYBERCODE file and begin with a "blank sheet of paper," so to speak. But we have already written several programs, all of which are contained in the SAMPLE.CYB file. So, your next step was typing OPEN SAMPLE.CYB. This opened the file of "source" code on disk in preparation for loading any portion into memory. None of the programming code has yet been loaded, compiled, or run. CYBERCODE is written in "screens" of 16 lines apiece (much like Forth code). The CYBERCODE you ran in the above example is all contained in Screen #1. To see it, type: 1 LIST [Return] CYBERMATE DOCUMENTATION -- page 16 Want a hardcopy printout? Make sure your printer is on, and type: PRINTING ON [Return] 1 LIST [Return] PRINTING OFF [Return] We'll analyze this screen later. When you typed: 1 LOAD, you compiled the CYBERCODE in Screen #1. That code created a CYBERMATE PROCEDURE called LOGO. And now, everytime you type the word LOGO, the program contained in Screen #1 executes. Go ahead, try it again: LOGO [Return] OK, let's move on. (From this point on, please assume that a carriage return is typed at the end of each example program line.) Let's take a look at the structure of the CYBERMATE programming environment, then we'll take apart the program in Screen #1. ___________________________________________________________ OPERATIONAL MODES CYBERMATE has four operational modes: INTERPRETER, TEXT EDITOR, PREVIEW EDITOR, and DISPLAY. INTERPRETER mode appears immediately after the title screen. You've been using it to type in your commands. You were in DISPLAY mode when you watched the CUBELOGO animation. In the INTERPRETER mode you can: Load files from disk (create objects). Open new CYBERCODE files. Save your own CYBERMATE programs. Change object parameters and variables. Enter CYBERCODE. Use this mode to perform disk input and output (I/O). The value of variables and the status of CYBERMATE (such as available memory and lists of defined objects) can be displayed in this mode. INTERPRETER is also used to test and experiment with CYBERMATE commands. Most of the commands that you use in creating CYBERCODE can be directly entered from the keyboard while in the INTERPRETER mode. CYBERMATE begins in INTERPRETER mode upon boot-up, immediately following the title screen. In the TEXT EDITOR mode you can: Create and edit CYBERCODE. Save CYBERCODE to disk. This is where you create and edit the code that will control your "movie." Using information obtained by viewing your animation files in PREVIEW mode, you write a "display script" that combines multiple CYBERMATE objects to produce your animation. In the PREVIEW EDITOR mode you can: CYBERMATE DOCUMENTATION -- page 17 Run sequences at various speeds. Step through sequences one frame at a time. Monitor your color palette. Use this mode to examine raw animation sequences -- before writing your CYBERCODE -- to determine what you wish to do with them. It allows you to note the specific frame numbers for: Starting/Ending/Merging sequences, Triggering Dissolves/Fades/Sound effects, Changing Speeds/Modes of display, etc. The DISPLAY mode is where you see your animation. This is CYBERMATE'S "projection room" where you see the final results. It is activated by certain CYBERMATE commands (usually SHOW1) that -- when included in your code -- take control of the ST screen display. ___________________________________________________________ SCREEN #1 BREAKDOWN Now let's study the PROCEDURE defined in Screen # 1 more closely. Type: 1 LIST Here is what you should see: 0 \ Simple Sequence Procedure. 1 : LOGO 2 30 CUBELOGO RATE \ update every 30 ticks 3 CUBELOGO SHOW1 \ show the starting frame 4 ZERO-CLOCK \ reset CYBERTIME 5 TICK \ start of loop 6 CUBELOGO UPDATE \ show next frame @ rate 7 TOCK \ end of loop 8 CUBELOGO RESET \ reset the sequence 9 RESTORE \ stop and wait for a key 10 ; We'll take it a line at a time. 0. \ Simple Sequence Procedure Remark on the contents of the screen. This is NOT a line of active code. It is merely a comment by the programmer. The backslash (which must be followed by at least one space) means that anything following is a comment and not part of the CYBERCODE. 1. : LOGO Create a PROCEDURE called LOGO. The COLON tells CYBERMATE that the next word it "reads" is the "label" or calling-word for all of the CYBERCODE that follows until a SEMICOLON is CYBERMATE DOCUMENTATION -- page 18 encountered. The next word, LOGO, is the label. This is an arbitrary selection. We could have called it RALPH. 2. 30 CUBELOGO RATE Set the RATE of CUBELOGO to 30 ticks per frame. RATE is an OPERATOR. It "looks" at the two words preceeding it to determine what value (30) should be set as the ticks-per-frame RATE of of the OBJECT (CUBELOGO). 3. CUBELOGO SHOW1 DISPLAY the IMAGE called CUBELOGO. SHOW1 is an OPERATOR. It clears the text screen, sets the ST color palette to that of the specified OBJECT (CUBELOGO), and displays that image. This is the starting frame for the animation. 4. ZERO-CLOCK Set the tick number to 0. This is the CYBERTIME "reset button." It is wise to included it at the start of any sequence. 5. TICK Mark the beginning (and return) point for the TICK/TOCK loop. This word performs no other function than to mark one end of the loop used to advance the tick number. 6. CUBELOGO UPDATE Check the tick number and display the next frame at the appropriate time. UPDATE is an OPERATOR. It knows the RATE of the specified OBJECT (CUBELOGO) and reads the tick number of the CYBERTIME clock. When it sees that the tick number has increased by the allotted number (equal to the value of RATE), it displays the next frame of the CUBELOGO animation. UPDATE also checks to see if this is the last frame of CUBELOGO. If it is, it sets a "flag" that will pass that information on to TOCK. Keep in mind that you can UPDATE more than one object from within any given TICK/TOCK loop, even if they are set to different rates. CYBERMATE takes care of all the dirty work. CYBERMATE DOCUMENTATION -- page 19 7. TOCK Increase the tick number by one, check the "end flag" and return to TICK. TOCK checks to see if the last frame has been reached. If not, it advances the tick number and returns to TICK. If the last frame is detected, it causes CYBERMATE to exit the TICK/TOCK loop and proceed to the next command. 8. CUBELOGO RESET "Rewind" CUBELOGO to its start frame. RESET is an OPERATOR. It returns the "data- pointer" of the specified OBJECT (CUBELOGO) to a point marking the data for its first frame update. This allows you to run through the animation again, should you so desire. 9. RESTORE Wait for keypress then return to INTERPRETER mode. RESTORE is a SYSTEM word. It simply waits for any key to be pressed. Once one is detected, it restores the original INTERPRETER palette and returns you to that mode. 10. ; End this PROCEDURE definition. The SEMICOLON marks the end of the string of commands that make up the PROCEDURE called LOGO. The listing of Screen #1 that you see on your screen is just that -- a listing. It may not be edited or altered from a listed screen display. You are now in INTERPRETER mode. It is possible to enter virtually any CYBERMATE command from the INTERPRETER mode, but there is no way to save or go back and alter what you typed. The INTERPRETER mode is most useful for checking the settings or the values contained in certain variables, or for examining the current status of the CYBERMATE system. Try typing: DIR This will give you a listing of files from whichever drive has been set by the PATH-IS command. Now type: OBJECTS? This gives you a laundry list of all the objects you have defined this session. If you feel like ending the entire session, simply type BYE. This will immediately exit CYBERMATE and return you to the GEM desktop. CYBERMATE DOCUMENTATION -- page 20 If you placed a bookmark in the GETTING STARTED section, you should have no problem finding your way back to the SAMPLE.CYB setup. A list of other words, like DIR and OBJECT? and BYE, can be found in the GLOSSARY. CYBERCODE can be entered from the INTERPRETIVE mode, just like immediate mode languages such as BASIC. This is great for quick experimentation and to test simple variations. But, if you want to write, save, and edit your CYBERCODE, you need to use the TEXT-EDITOR. CYBERMATE DOCUMENTATION -- page 21 /////////////////////////////////////////////////// THE TEXT EDITOR /////////////////////////////////////////////////// A full screen TEXT EDITOR has been included with CYBERMATE. This is where you create and edit the CYBERCODE that controls your movies. __________________________________________________________ SCREEN STRUCTURE The "screen" structure of .CYB CYBERCODE files is different from the source code of languages like BASIC, or C. It is a structure borrowed from Forth. In BASIC or C, one file of source code usually contains one program. A CYBERCODE file, however, may contain several programs. Each CYBERCODE file contains several "screens." Each screen is a text block 16 lines long. When you first create a .CYB file, all its screens are empty. You then fill the screens with CYBERCODE using the TEXT EDITOR. If a program is short enough (such as the one in Screen #1), it may only use one screen. Longer programs may be written over a chain of several screens (linked by a symbol that looks like a rightward pointing arrow: -->). You may use a separate .CYB file for each "program" or PROCEDURE that you create, or you can have several different procedures, in separate screens, within one .CYB file. SAMPLE.CYB contains several screens of commented code holding many different procedures that work with the various CUBEBALL files. Also included in SAMPLE.CYB are a number of screens designed primarily as code examples for you to study -- you can insert your own objects into these procedures to test the various effects. Editing, listing, loading and printing of .CYB files is all referenced according to screen number. When we typed the 1 LIST and 1 LOAD commands in the example above, we told CYBERMATE to access Screen #1. All access to your CYBERCODE is obtained by the OPEN FILENAME.CYB procedure described in the GETTING STARTED section above. No data is entered into machine memory when you first execute an OPEN command. When you OPEN a .CYB file, all you are doing is telling CYBERMATE where to look the next time you give an EDIT, LIST, or LOAD command for a specific screen number. __________________________________________________________ SAMPLE EDIT If you have worked through the examples to get to this point, you have already opened SAMPLE.CYB. If not, go back to SETTING UP and follow the steps that describe the process. Just to refresh your memory (and there is no harm in repeating this command), type: OPEN SAMPLE.CYB Remember to add the pathname if the file is on a drive other than the one you ran CYBERMATE from (i.e., OPEN B:\SAMPLE.CYB) Before editing (and changing) anything in SAMPLE.CYB, you may want a hardcopy printout of all the code. If you have a printer, type the CYBERMATE DOCUMENTATION -- page 22 following: PRINTING ON 0 30 INDEX After the index of first lines is printed out, do a form-feed and type: 0 30 TRIAD PRINTING OFF This will print all 30 screens of SAMPLE.CYB. Now, with SAMPLE.CYB open, we are ready to try some simple editing of CYBERCODE. Type: 1 EDIT This places Screen #1 in the TEXT EDITOR and puts you in TEXT EDITOR mode. (Typing 12 EDIT would have placed Screen #12 in the TEXT EDITOR.) The TEXT EDITOR handles CYBERCODE one screen at a time. Now, let's edit: Use the cursor-control keys (the arrow keys) to move the cursor to the beginning of line 2. With the cursor on top of the 3 in 30, type: 1. The 1 replaced the 3 and the following characters were not moved over because the default mode for this editor is "replace" or "typeover" mode. You can toggle to the insert mode by pressing the [Insert] key. The line should now read 10 CUBELOGO RATE. If you make any mistakes, use the backspace key to remove them. Next: Press [F1] (Function Key 1) Notice that the drive was activated. That is because F1 saves your changes to disk before exiting the TEXT EDITOR. Now type: 1 LIST You can see that your change is included. Now Type: 1 LOAD This loads the altered version of Screen # 1 into CYBERMATE. We'll explain the "LOGO isn't unique" message in a moment. Next type: LOGO The animation ran considerably faster because of the RATE change. Now let's examine what we just did. First, we opened SAMPLE.CYB with the OPEN SAMPLE.CYB command. That let CYBERMATE know where to look when we typed the next command: 1 EDIT. 1 EDIT activated the TEXT EDITOR and loaded the Screen # 1 data -- from the SAMPLE.CYB file on disk -- into the TEXT EDITOR display. Note that the data in Screen #1 has *not* been LOADed into CYBERMATE at this time; nor has the data in any of the other SAMPLE.CYB screens CYBERMATE DOCUMENTATION -- page 23 been loaded into the EDITOR or CYBERMATE. All we have done is read the one chunk of data comprising Screen #1 of SAMPLE.CYB into the TEXT EDITOR. When we say that the data in Screen #1 has not been loaded into CYBERMATE, you may think, "then what is that I see on the screen." What you see is the TEXT EDITOR which is something different from CYBERMATE itself. The TEXT EDITOR is where we create and modify CYBERCODE. And that is what we did next when we used the cursor keys to move over the 3 and change it to a 1. However, as far as CYBERMATE is concerned nothing has been changed, CYBERMATE still "remembers" a RATE of 30 for the CUBELOGO SEQUENCE (that is, assuming you have followed through this example from the very beginning and did a 1 LOAD earlier; if you had not done a 1 LOAD, CYBERMATE would not know of the LOGO procedure nor any of the paramter settings within it). After editing line 2 we executed the [F1] function-key command that exited the editor and saved our changes to disk. At this point however, the RATE change has still not been noted by CYBERMATE. If we had immediately typed LOGO after exiting the TEXT EDITOR, the animation would have run exactly as it did before our edit. That is why we then typed: 1 LOAD. 1 LOAD caused CYBERMATE to actually load the new data from disk (remember we saved our changes to disk when we exited the EDITOR) and compile the new Screen #1 program in memory. So here are some important distinctions: n EDIT loads the data contained on disk into the TEXT-EDITOR n LOAD loads the data into CYBERMATE and compiles it. n LIST simply displays the contents of screen n on your screen without loading it into the EDITOR or CYBERMATE. When a 1 LOAD is executed, it is just as if you had entered all of the CYBERCODE contained in Screen #1 directly from the keyboard in INTERPRETER mode. Finally, after loading the new Screen #1, CYBERMATE recognizes a new definition of the PROCEDURE: LOGO. That is why you saw the "LOGO isn't unique" message. CYBERMATE was informing you that you had previously defined the PROCEDURE LOGO and replaced that old definition with a new one. (See definition of FORGET in the GLOSSARY section for more on this.) __________________________________________________________ PROGRAM SYNTAX Now let's go back and study the TEXT EDITOR in greater detail. Type: 2 EDIT The numbered lines contained within the boxed area are the actual CYBERCODE. The line numbers are for reference and convenience only, they are not part of the CYBERCODE. Lines preceded by a backslash "\" are comments, ignored by CYBERMATE. The backslash (not to be CYBERMATE DOCUMENTATION -- page 24 confused with the division sign -- a "forward slash"). The backslash is located just to the right of the [Return] key on your keyboard). IT MUST BE FOLLOWED BY AT LEAST ONE SPACE to be recognized as a comment. All languages use what are called "delimiters" to separate distinct units. In written English we use spaces, punctuation marks, and other conventions like indentation, to separate words, sentences, and paragraphs. All CYBERMATE words must be separated by at least one space to be recognized as a distinct word. The space is the only word delimiter recognized by CYBERMATE. If we attemped to write a comment and forgot the space: \This is a comment CYBERMATE would read the first word as: \This Unless you had previously defined a word \THIS, you would get an error. Note that the CYBERMATE language is not case-sensitive, (i.e., Sequence, SEQUENCE, sequence, or seQueNCe, will all be recognized as the same word). For purposes of this documentation, we will use upper and lower-case for clarity. Also, we will sometimes use double-spacing to exaggerate and isolate commands. As mentioned, CYBERMATE requires at least one space between words. Any extra spaces are ignored. Remember, while studying the program examples, that any line of text preceded by a backslash "\" is a comment and not part of the code. Text at the beginning of the following line IS part of the CYBERCODE. Line number 0 on each screen traditionally holds a comment describing the contents of the screen. This is a practical method of seeing what is on each of your screens when using the INDEX command. At the bottom of the TEXT EDITOR screen are descriptions of the keyboard commands most frequently used in the TEXT EDITOR. Most TEXT EDITOR commands use a control-key combination wherein you press and hold down the [Control] key, and then press the command key. __________________________________________________________ THE TEXT EDITOR AND DISK I/O Whenever you move from one screen to another, any changes made in the screen you are leaving are saved to disk. It's always wise to keep a backup of your orginal CYBERCODE on a separate disk so that you can fall back on the previous version if you really mess things up during a programming session. If you wish to restore a screen to its original state before moving to another screen or leaving the editor, press [Undo]. For example, if you couldn't resist typing things into the screen we're now looking at (Screen #2), and aren't sure about what you've done, press [Undo]. This method of file management (virtual memory) works well for CYBERMATE because a minimum amount of machine memory is needed to do text editing, leaving a maximum amount available for animation files. CYBERMATE DOCUMENTATION -- page 25 Because CYBERCODE tends to be compact, the inconveniences of moving between screens is small. There are two ways to exit the TEXT EDITOR: press [F1] or press [F10]. By pressing [F10], you abandon the editor WITHOUT saving changes made in the current screen. If you want to try out your program changes, you must exit using [F1], which will exit the editor and save all changes to disk. To test changes or new CYBERCODE, you must first exit the editor (with [F1]), then LOAD the changed screen(s). Because this system requires that changes are saved to disk before they can be tested, backups are very important. The [Control]-[L] and [Control]-[P] commands, described below, are a form of "Cut and Paste." You can "lift" an entire screen of lines into the paste buffer, move to an empty screen, then paste the buffer into that screen. Now, you have a duplicate screen and are free to alter this copy. If the new version works, you can save it as new additional code, or reverse the procedure to replace the original code. Running CYBERMATE from a RAMdisk can speed your editing because the frequent disk accesses are nearly instantaneous. To run CYBERMATE from a RAMdisk, copy CYBRMATE.PRG, and the .CYB file(s) you wish to edit, into a RAMdisk just large enough to hold them (keep it small because RAMdisk memory cuts into memory otherwise available for data files; 100k is plenty for CYBERMATE and SAMPLE.CYB). Now, run CYBERMATE from that RAMdisk. Use a floppy drive to load data files. This method is very useful for those working with one drive systems. (Note: the A-RAM RAMdisk is available through THE CATALOG.) Be careful! You can easily lose your edit if you happen to lock-up CYBERMATE and are forced to reboot the system. We suggest that you break occasionally, exit CYBERMATE, and transfer your .CYB file to a magnetic disk. Alternately, you can printout a particularly hot piece of code on your printer which will enable you to recover your work by re-typing it. __________________________________________________________ CYBERCODE PRINTOUTS There are several commands for printing out all or parts of a .CYB file. All of them require three preliminary steps: 1. Open the file you wish to print. 2. Turn your printer on. 3. Type PRINTING ON. As mentioned in the GETTING STARTED section above, you may then type: n LIST Where n is the number of the screen you wish to print. Alternately if you wish to print out a number of screens you can type: n1 n2 TRIAD CYBERMATE DOCUMENTATION -- page 26 Where n1 and n2 are the first and last numbered screens you wish to print. One more printout command is available, INDEX. This prints out the top line (line 0) of each specified screen. If you have taken care to use line 0 to label your screens, you'll get a table of contents by using this command. Type: n1 n2 INDEX Where n1 and n2 are the first and last screens you wish to index. After any printout is completed type: PRINTING OFF __________________________________________________________ CREATING YOUR OWN CYBERCODE FILES The SAMPLE.CYB file contains some blank screens near the end of the file which you may use to create your own CYBERCODE or to experiment with variations of the samples contained in the other screens. You can find the blank screens by using any of the listing commands (LIST, INDEX, etc.). Soon, however, you'll want to create your own .CYB files. Creating new .CYB files is done from INTERPRETER mode. At the OK prompt type: n CREATE-FILE FILENAME.CYB Where n is the number of screens that you wish this file to contain and FILENAME.CYB is your chosen filename. CYBERMATE will create a file that contains n blank editor screens. The size of this file on your disk will be equal to 1K times n. EXAMPLE: 20 CREATE-FILE B:\SCRABBIT.CYB This creates a .CYB file called SCRABBIT.CYB containing 20 blank screens and requiring 20k of disk space). The file is created on the disk in drive B. If no drive is specified the file will be written to the default drive, which is the one you ran CYBERMATE.PRG from. Don't worry about exactly how many screens to create right now (20, in fact, is a pretty good starting point). The number of screens in a given .CYB file can be expanded at any time using the word MORE. EXAMPLE: 10 MORE This expands the currently open .CYB file by 10 screens. To access those new screens you must re-open the file. To open a newly created or expanded file for editing type OPEN filename.CYB If CYBERMATE finds the file on disk it will return a new OK prompt. CYBERMATE DOCUMENTATION -- page 27 If you receive "OPEN ERROR ..." message, check your spelling and see if the proper disk is in the drive. Remember, if the disk containing your .CYB file is in a different drive than you ran CYBERMATE from you must include the path: OPEN B:\SCRABBIT.CYB If you don't remember how many screens you created for a particular .CYB file, open it and type: CAPACITY . This command (don't forget the space and period following it) will return the number of screens in the currently opened .CYB file. Remember that the screens start with number 0, which is not used for CYBERCODE. So a file with a capacity of thirty has a last-sceen number of 29. __________________________________________________________ TEXT EDITOR KEYBOARD COMMANDS This TEXT EDITOR supports a full range of keyboard commands as well as the cursor keys. A complete listing of those commands is given below. The best way to familiarize yourself with this editor is to go to a blank screen and experiment. Screen #23 is blank. To get there, type 23 EDIT CURSOR MOVEMENT Up-arrow Up one line. Down-arrow Down one line. Left-arrow Back one character. Right-arrow Forward one character. Control-Left-arrow Back one word. Control-Right-arrow Forward one word. Tab Advance to next tab stop Cir-Home Top of screen. Control-E End of line. DELETE TEXT Backspace Delete character to the left. Delete Delete character under cursor. Control-D Delete line. (Delete) Control-X Delete entire Screen. CYBERMATE DOCUMENTATION -- page 28 TEXT BUFFERS Control-W Pull word into words-buffer -- multiple words may be stored in words-buffer -- deletes word from screen. (Word) Control-T Retrieve word from words-buffer, insert at cursor (Tack). Control-L Pull line at cursor into lines-buffer -- multiple lines may be stored in buffer -- line is not deleted. (Lift) Control-K Pull line at cursor into line-buffer -- multiple lines may be stored in buffer -- line is deleted. (Kut line) Control-P Bring up a line previously stored in the line-buffer (see Control-L, Control-K) insert it at cursor (Paste). TEXT MANIPULATION Control-B Insert a blank line (blank line). Insert Toggle between overwrite and insert text modes. SEARCH Control-Q Set word for search (QUERY). Control-S Search for word set by Ctrl-Q. SCREEN MOVEMENT / DISK I/O Control-F To next screen (Forward). Control-R To previous screen (Reverse). Control-G Go to screen ? . Waits for screen number input. F1 Save screen to disk, exit editor. F10 Abandon current edit, exit editor. OTHER KEYS CirHome Move cursor to upper left corner of screen. Undo Retrieve original screen from disk. CYBERMATE DOCUMENTATION -- page 29 Control-V Re-writes screen to confirm edits (Verify) __________________________________________________________ CYBERMATE DOCUMENTATION -- page 30 /////////////////////////////////////////////////// THE PREVIEW EDITOR /////////////////////////////////////////////////// Included on your disk is the CYBERMATE PREVIEW EDITOR. It is an interactive, keyboard-driven "editing-deck" that helps you pre-determine parameters for CYBERMATE SEQUENCES before writing your CYBERCODE. With the PREVIEW EDITOR, you can step through a SEQUENCE one frame at a time while seeing the frame number, and the CYBERTIME tick number. The PREVIEW EDITOR will also run your SEQUENCE at ten rates (1, 10, 20..., 90), to give you an idea of which rate works best for a particular sequence. ___________________________________________________________ RUNNING THE PREVIEW EDITOR. The Preview Editor uses a Clone of your SEQUENCE OBJECT which must be named "PREVIEW." It can also display SEQ-LOOP clones, but SEQUENCE OBJECTS are the recommended source of the clone. The PREVIEW.EDT file must be on a disk in the drive that you ran CYBERMATE from. To preview a particular SEQUENCE follow these steps: 1. Create a SEQUENCE OBJECT as you normally would -- or you may use any SEQUENCE OBJECT currently in memory 2. Type: objectname CLONE-AS PREVIEW 3. Type: VIEW You are now in PREVIEW EDITOR mode. Frame number 0, the .PI1 portion of your sequence, is displayed. On the left is a column of colored numbers representing the palette register numbers, displayed in their respective colors. These are matched by a column of RGB values (the Red, Green, and Blue settings used in DEGAS or CAD-3D). ___________________________________________________________ TEST-RUN Once in PREVIEW mode, you may use any of the keyboard commands listed below to examine the SEQUENCE. Try this series of keyboard commands. Press [Space] a few times to advance through a few frames. The number in the upper-left corner is the frame-count, the number at top-center is the CYBERTIME tick number. They are the same now because the rate is at its default setting of 1. Press [Return] to start continous display, followed by [Help] to toggle the Clock-display off. Now, while the SEQUENCE is running, try pressing any of the number keys [0] through [9] to see your animation at rates 1 - 90. Press [Space] to re-enter single-frame mode. Press CYBERMATE DOCUMENTATION -- page 31 [Space] to advance to the next frame. Notice that the clock display (top-center of screen) advances in increments equal to the rate set by keys [0 - 9]. Try alternately pressing the number keys and [Space] to see the effect. Press [F10] once to activate manual control of the clock setting. Then press [F10] again to manually advance the clock without updating the frame. Press [F9] to reverse the clock. Press [Space] to return to single-frame mode. Press [Insert] to redisplay the palette colors. Press [Undo] to exit back to the CYBERMATE INTERPRETER mode. NOTE: After exiting the PREVIEW EDITOR, any .CYB (CYBERCODE) files that were open will have been closed. You must enter a new OPEN filename, to access that file. To re-enter the PREVIEW EDITOR at any time type: VIEW To Preview a different SEQUENCE, first clone it as PREVIEW as described above. ___________________________________________________________ PREVIEW EDITOR COMMAND KEYS 0-9 Sets the rate to 10* key. 3 = 30, 4 = 40 etc. 0 is an exception, it sets the rate to 1. F9 Runs the tick number display backwards. (Manual clock mode must first be entered by an [F10] command.) F10 Activates the manual clock mode. Runs the tick number display forwards. Help Toggles tick number display on/off. Return Activates continuous display mode. Space Activates single-frame mode, turns clock- display on, advances frame. Undo Press to exit Preview Editor. Insert Redisplay color palette. ___________________________________________________________ TIPS AND HINTS The PREVIEW EDITOR is designed to enable you to determine the proper tick number for any CYBERMATE event. Use the [F9] and [F10] keys to simulate delayed starts of a sequence (i.e., when the START parameter is > 0). CYBERMATE DOCUMENTATION -- page 32 Use the PREVIEW EDITOR to find the desired start and end frame before defining a SEQ-LOOP. Use [F9] to set the clock back to 0 when determining the tick numbers for planned SEQ-LOOP OBJECTS that have start-frames other than frame 1. Running a SEQUENCE through until it cycles back to the start resets the clock and frame to 0. For accurate tick number readings, it is best to advance using single-frame starting with a 0 0 reading. Interrupting a continous display to read the clock will often catch the clock between updates (i.e., at a rate of 10. Stopping the continous display at Frame #5 can result in a tick number anywhere between 50 - 59). ___________________________________________________________ CYBERMATE DOCUMENTATION -- page 33 /////////////////////////////////////////////////// GLOSSARY /////////////////////////////////////////////////// The following glossary is a thorough, alphabetical description of all CYBERMATE commands, including definitions, syntactical format, and examples of usage. In each case, the CYBERMATE command is first listed in upper-case letters. This is followed by the syntax format within parentheses (), showing what parameters are expected by the command. The parameters are in lower-case, generic descriptions, and the commands are, again, in upper-case. Note that the parentheses are NOT a part of the actual programming syntax and should be omitted from your actual CYBERMATE code. Following the format illustration, is a definition of the CYBERMATE word's function. Notice that when an "objname" parameter is called for, CYBERMATE expects the name of an object that has been previously defined by you, using one of the four available defining words: SEQ-LOOP, IMAGE, SEQUENCE, or SOUND. (CUBEBALL, for example.) All commands that require an objname are called OPERATORS. OPERATORS affect only the object specified by the objname parameter. Each OPERATOR works only with certain object types. All OPERATOR definitions in this glossary contain a list of which object types it is used with. For example: Objects: SEQUENCE, SEQ-LOOP, means that this operator will accept either a SEQUENCE or SEQ-LOOP object name in the position indicated by objname. Finally, each glossary entry contains a sample of CYBERCODE using the particulary command. When necessary, this is followed by a translation of the sample code in plain English. NOTE: Although the sample code (and many other parts of this documentation) is all in upper-case, CYBERMATE is insensitive to case. Thus, you may write your CYBERCODE in all lower case, or vary the case as you wish to make your own code easier to read. Here follows the CYBERMATE GLOSSARY: ___________________________________________________________ : ; (: wordname cybercode ;) Def: These two punctuation marks -- the colon and semicolon -- are brackets used to create a CYBERMATE "word" or PROCEDURE. The first word following a COLON is recognized by CYBERMATE as the "label" for the CYBERCODE that follows. The SEMICOLON marks the end of the PROCEDURE. The CYBERCODE list of commands will be executed any time that the PROCEDURE word is typed in or called by another PROCEDURE. CYBERMATE DOCUMENTATION -- page 34 Any number of previously created PROCEDURES may be included as part of the CYBERCODE list. Example: : LOGO ZERO-CLOCK CUBELOGO SHOW1 TICK CUBELOGO UPDATE TOCK CUBELOGO RESET RESTORE ; (Create a PROCEDURE, name it LOGO. Make it consist of the sequence of commands: ZERO-CLOCK through RESTORE.) ----------------------------------------------------------- --> Def: If these three characters (minus, minus, greater-than) appear as the last three charcters on any CYBERCODE screen, the next screen will be loaded whenever the current screen is loaded. For example, you could spread a long set of related CYBERCODE across a couple of screens by placing these characters at the bottom right of each of those screens (excpet the last). Whenever the first screen is loaded in, the LOAD command will recognize the --> and continue on with the next screen in the sequence. ___________________________________________________________ ['] ' (['] modename objname obj-mode) or (' modename objname obj-mode) Def: The single quotation mark (whether between square brackets, or alone) is used with a few special CYBERMATE words. The words are: COPY DISSOLVE1 DELTA1 XOR-COPY XOR-DISSOLVE DELTA2 These words allow you to access machine language routines that control the way screen images are displayed. When used from within a PROCEDURE, these words must be proceeded by a bracketed quote [']. When used outside a PROCEDURE, or typed in directly from the keyboard, these words must be preceeded by the single-quote without the square-brackets. See the glossary listings of these words as well as IMAGE-MODE and DELTA-MODE for more information. Examples: : SET-COPY-MODE ['] XOR-COPY BALL IMAGE-MODE ; ' XOR-COPY BALL IMAGE-MODE (Both examples perform the same function: Set the mode of image display for the OBJECT: BALL, to XOR-COPY. In the first example the square brackets are used because the function is part of a PROCEDURE. CYBERMATE DOCUMENTATION -- page 35 In the second example the single-quote is used without square-brackets because it is not contained within a procedure definition.) __________________________________________________________ #FRAMES (objname #FRAMES) Def: Returns the total number of frames contained in the specified object. Objects: SEQ-LOOP, SEQUENCE. Example: CUBEBALL #FRAMES (Find the number of frames in the OBJECT CUBEBALL.) __________________________________________________________ BRK-KEY (BRK-KEY on/off) Def: The Break-Key function in CYBERMATE allows you to exit a TICK/TOCK loop at any time by pressing any key. It is handy for escaping errant code that has an endless loop. Normally the function is enabled. It causes a very minor reduction in the maximum possible CYBERTIME speed. It can be disabled for special situations (i.e. Demo programs where you wish to lock-out keyboard input). Example: BRK-KEY OFF ___________________________________________________________ BYE (BYE) Def: Exits CYBERMATE. This is the only proper way to quit the program. It frees machine memory and restores palette/resolution to the original GEM settings. ___________________________________________________________ CHAIN-WITH (objname CHAIN-WITH filename) Def: Used to load a chained DELTA file. When you record your animation in CAD-3D, you have the option of exiting the recording mode and then re-entering and continuing. This is often done when an animation is too large to fit on a single disk. CYBERMATE DOCUMENTATION -- page 36 CHAIN-WITH is used to load these extra DELTA files and include them in the original OBJECT. It is different than loading a new OBJECT because there is no .PI1 picture file loaded. The new DELTA file is simply tacked on to the end of the original OBJECT. Objects: SEQUENCE Example: BALL CHAIN-WITH BALL2 (Load the second DELTA file BALL2 and include it in the OBJECT BALL) _________________________________________________________ CHECK-REEL (n CHECK-REEL) Def: Checks the data path (the one specified by PATH-IS) to determine if a disk stamped with Reel# n is there. Used with NEXT-REEL. See: NEXT-REEL, STAMP, CYCLE. ___________________________________________________________ CLOCK-DISPLAY (CLOCK-DISPLAY on/off) Def: Following the word CLOCK-DISPLAY with ON or OFF, switches the screen display of CYBERTIME on or off. When on, time is displayed at the top-center of the screen. The number represents CYBERTIME ticks (see TICK, TOCK, TICK#). CLOCK-DISPLAY is primarily designed to analyze your program. It greatly slows the rate of the animation. Default is OFF. Example: CLOCK-DISPLAY ON ___________________________________________________________ CLONE-AS (objname CLONE-AS clonename) Def: Creates a new object (clonename) using the data contained in a previously defined object (objname). This object may then be given its own unique set of parameters. Objects: SEQ-LOOP, IMAGE, SEQUENCE, SOUND. Example: CUBELOGO CLONE-AS LOGO2 (Make a new OBJECT: LOGO2, using the already loaded data contained in the OBJECT: CUBELOGO. _________________________________________________________ COLOR-CYCLE CYBERMATE DOCUMENTATION -- page 37 (n COLOR-CYCLE) Def: Used with an IMAGE OBJECT that contains DEGAS ELITE color cycling information. This command turns off or pauses a previously activated CYCLE command. It expects one of two special numbers (n). -1. Stops the cycling -2. Pauses the cycling A -1 completely disengages the color-cycling routine by basically performing the oppositte function of CYCLE. COLOR-CYCLE requires no object name because only the last object used with CYCLE will be cycling. The -2. pause option is actually a toggle. Use -2. once and color-cycling pauses; use it a second time and the color-cycling continues exactly where it left off. NOTE: The period after the number MUST be included. See: CYCLE. Example: :TWO-DISK PROCEDURE1 CUBE CYCLE NEXT-REEL PROCEDURE2 -1. COLOR-CYCLE PROCEDURE3 ; (Run PROCEDURE1, then while waiting for the next disk -- containing the files needed to run PROCEDURE3 -- do color cycling with the IMAGE: CUBE. Wait for a keypress, then check the disk in the data drive to see if it contains the proper REEL#. After the data from the new disk has been loaded by PROCEDURE2, stop color cycling. Then execute PROCEDURE3.) ___________________________________________________________ COPY (['] COPY objname IMAGE-MODE) Def: One of five modes of image display. If COPY has been placed in the IMAGE-MODE parameter, a "replace" copy will be performed by SHOW or REVEAL. That means that the new image will overwrite any existing screen image. Other modes: OR-COPY, XOR-COPY, DISSOLVE1, and XOR-DISSOLVE. COPY is always preceeded by a single quote mark, (un-shifted quote key). The quote must be enclosed in square brackets (as shown) when used inside a PROCEDURE (see : ; and ['] above). Otherwise, it should be preceeded by a single-quote, un-bracketed. Objects: SEQ-LOOP, IMAGE, SEQUENCE Examples: : SET-SPHERE ['] COPY SPHERE IMAGE-MODE ; ' COPY SPHERE IMAGE-MODE (The first example defines a PROCEDURE called SET-SPHERE that sets the IMAGE-MODE of the OBJECT, SPHERE, to the COPY mode. The second example shows the same operation if entered from the keyboard, or CYBERMATE DOCUMENTATION -- page 38 outside of a PROCEDURE.) COPY may also be used directly in the following manner: (objname1 image-data objname2 image-data copy) This will copy the contents of the image objname1 to the destination, objname2. That is, the image objname2 will become an exact copy of objname1. Example: BALL1 IMAGE-DATA BALL2 IMAGE-DATA COPY (The image BALL1 will be copied into the image BALL2.) -------------------------------------------------------- CREATE (n CREATE optional-pathname/filename) Def: Creates a new CYBERCODE file containing n initial blank screens. If no pathname is specified, the path defaults to the path from which CYBERMATE was originally run. If you explicitly state a path, it override the default path. Be sure to specify the filename extender whenever (usually .CYB) when creating the file. Each screen takes up exactly 1 kilobyte (1,024 bytes) on the disk. See: MORE, OPEN, LOAD Examples: 20 CREATE MYCODE.CYB (Creates a file named MYCODE.CYB with 20 blank screens in the directory from which CYBERMATE was originally run. This file will consume 20,480 bytes on the disk.) 32 CREATE B:\CODE\MYCODE.CYB (Creates a file named MYCODE.CYB with 32 blank screens in the CODE directory on drive B:. This file will consume 32,768 bytes on the disk.) ________________________________________________________ CYCLE (objname CYCLE) Def: Used with a an IMAGE OBJECT that contains DEGAS ELITE color cycling information. This operator must be used before a COLOR-CYCLE command. See; COLOR-CYCLE, NEXT-REEL, STAMP. Objects: IMAGE, SEQUENCE, SEQ-LOOP. Example: :TWO-DISK PROCEDURE1 CUBE CYCLE NEXT-REEL PROCEDURE2 -1. COLOR-CYCLE PROCEDURE3 ; CYBERMATE DOCUMENTATION -- page 39 (Run PROCEDURE1, then while waiting for the next disk -- containing the files needed to run PROCEDURE3 -- do color cycling with the IMAGE: CUBE. Wait for keypress, then check the disk in the data drive to see if it contains the proper REEL#. After the data from the new disk has been loaded by PROCEDURE2, stop color cycling. Then execute PROCEDURE3.) ___________________________________________________________ DELTA1 (['] DELTA1 objname UPDATE-MODE) Def: One of two modes of frame update. If DELTA1 has been placed in the UPDATE-MODE parameter, a standard frame update is performed by UPDATE (see ['] DELTA2, and UPDATE-MODE). This is the default update mode. DELTA1 is always preceeded by a single quote mark, (un-shifted quote key). It must be enclosed in square brackets as shown when used inside a PROCEDURE (see : ; above). Otherwise, it should be preceeded by a single-quote, un-bracketed. Objects: SEQ-LOOP, SEQUENCE Examples: : SET-BOX ['] DELTA1 BOX UPDATE-MODE ; ' DELTA1 BOX UPDATE-MODE (The first example sets the UPDATE-MODE of the OBJECT: BOX to the DELTA1 mode. The second example shows the same operation if used outside a PROCEDURE.) _________________________________________________________ DELTA2 (['] DELTA2 objname UPDATE-MODE) Def: One of two modes of frame update. If DELTA2 has been stored in the update-mode variable, a frame update with an altered palette will be performed by UPDATE. DELTA2 produces a frame with all palette registers shifted down one level of brightness. This effect will only work in this manner if the animation was produced with the standard "7-shade" CAD-3D palette. DELTA2 is always preceeded by a single quote mark, (un-shifted quote key). It must be enclosed in square brackets as shown when used inside a PROCEDURE (see : ; above). Otherwise, it should be preceeded by a single-quote, un-bracketed. Objects: SEQ-LOOP, SEQUENCE Examples: : SET-BOX ['] DELTA2 BOX UPDATE-MODE ; ' DELTA2 BOX UPDATE-MODE CYBERMATE DOCUMENTATION -- page 40 (The first example sets the UPDATE-MODE of the OBJECT: BOX to the DELTA2 mode. The second example shows the same operation if entered outside a PROCEDURE.) __________________________________________________________ DELTA-DATA (objname DELTA-DATA) Def: Returns the start-address of the delta-data buffer for the specified object. This command is only for advanced CYBERCODE and will most likely be used in future enhancements to the product. Objects: SEQUENCE, SEQ-LOOP. ___________________________________________________________ DIR (DIR) Def: Displays a directory of the disk in the drive specified by PATH-IS. Includes all files and their sizes. (See PATH-IS.) Example: PATH-IS B:\ DIR (Display all files in drive B: to the screen.) ___________________________________________________________ DISSOLVE1 (['] DISSOLVE1 objname IMAGE-EFFECT) Def: One of five modes of image display. If DISSOLVE1 has been placed in the IMAGE-MODE parameter, the image will gradually appear -- pixel-by-pixel -- each new pixel replacing the old. The other modes are: COPY, OR-COPY, XOR-COPY, and XOR-DISSOLVE. DISSOLVE1 is always preceeded by a single quote mark, (un-shifted quote key). It must be enclosed in square brackets as shown when used inside a PROCEDURE (see : ; above). Otherwise, it should be preceeded by a single-quote, un-bracketed. Objects: SEQ-LOOP, SEQUENCE Examples: : SET-BOX ['] DISSOLVE1 BOX IMAGE-MODE ; ' DISSOLVE1 BOX IMAGE-MODE (The first example sets the IMAGE-MODE of the OBJECT: BOX to the DISSOLVE1 mode. The second example shows the same operation if entered outside a PROCEDURE.) CYBERMATE DOCUMENTATION -- page 41 __________________________________________________________ ENABLE-STEREO ( ENABLE-STEREO ) Def: allocates the proper buffer space for stereo viewing. This command must be enacted for stereo viewing to work properly. It need only be used once per session or program. See: STEREO ON and OFF. Example: ENABLE-STEREO __________________________________________________________ END-FRAME (n objname END-FRAME) Def: Using the RATE and STOP parameters, END-FRAME calculates the proper tick number that will stop the specified SEQUENCE OBJECT at frame n. Objects: SEQUENCE Example: 127 CUBE START 43 CUBE RATE 30 CUBE END-FRAME (After the START tick number and RATE have been set, END-FRAME sets CUBE to display 30 frames before stopping) ___________________________________________________________ FORGET (FORGET word) Def: Erases the specified word from memory. The word can be either an OBJECT, PROCEDURE, or VARIABLE. FORGET also erases all objects, procedures, and variables, that have been defined after the specified word. FORGET is used to clear memory of unwanted data. It is more selective than NEW!, which clears all memory. If a word has been re-defined, FORGET will only erase back to the most recent definition. Example: IMAGE CUBELOGO : SEE-LOGO CUBELOGO SHOW1 ; IMAGE BOXLOGO : SEE-LOGO BOXLOGO SHOW1 ; SEQUENCE FROG : HOP FROG SHOW1 ZERO-CLOCK TICK FROG UPDATE TOCK FROG RESET RESTORE ; FORGET SEE-LOGO (After FORGET SEE-LOGO has been entered: HOP, FROG, and the second definition of SEE-LOGO (-- BOXLOGO SHOW1) are erased from memory. The IMAGE OBJECTS BOXLOGO, and CUBELOGO, as well as the first CYBERMATE DOCUMENTATION -- page 42 definition of SEE-LOGO are retained.) See: FREEZE, NEW!, WORDS. ___________________________________________________________ FRAME-DATA (objname FRAME-DATA) Def: Returns the address of the delta-data to be used for the next frame update of the specified object. This command is only for advanced CYBERCODE and will most likely be used in future enhancements to the product. Objects: SEQ-LOOP, SEQUENCE ___________________________________________________________ FREEZE (FREEZE) Def: Sets a limit on the next NEW! call. Anything defined prior to the entering of a FREEZE command will not be erased from memory by the next NEW!. See: FORGET, NEW!, WORDS. ___________________________________________________________ IMAGE (IMAGE filename) Def: Expects a filename with no extender. Loads filename.PI1 from disk. Defines an IMAGE object. Example: IMAGE BALL (Load and define an IMAGE OBJECT called BALL using the data contained in the disk file: BALL.PI1.) ___________________________________________________________ IMAGE-DATA (objname IMAGE-DATA) Def: Returns the address of the 32K-byte image-buffer of the specified object. This is most useful for using COPY, OR-COPY, and XOR-COPY directly. Objects: SEQ-LOOP, IMAGE, or SEQUENCE Example: HOUSE IMAGE-DATA CAR IMAGE-DATA XOR-COPY (This sequence will exclusive-or the picture contents -- all 32,000 bytes -- from the picture HOUSE with the picture CAR and store the result in the picture CAR. Note that this actually works by passing two addresses to the XOR-COPY routine. This same technique can be CYBERMATE DOCUMENTATION -- page 43 used with COPY and OR-COPY for different effects. If you wanted, you could also use the other IMAGE-MODE paramters, such as DISSOLVE, but it would be of no real use because the two images be operated with usually are not being displayed: in which case, the dissolve would occur, but would not be seen.) ___________________________________________________________ IMAGE-MODE (['] modename objname IMAGE-MODE) Def: Puts the specified image mode (modename) into the mode variable of the specified object (objname). This variable determines which write-mode will be used when the specified image is displayed. Accepts either COPY, XOR-COPY, OR-COPY, DISSOLVE1, or XOR-DISSOLVE as the modename parameter. The single quote mark (un-shifted quote key) preceeding the modename must be enclosed in square brackets as shown when used inside a PROCEDURE (see : ; above). Otherwise, it should be preceeded by a single-quote, un-bracketed. Objects: SEQ-LOOP, IMAGE, SEQUENCE Examples: : SET-SPHERE ['] XOR-COPY SPHERE IMAGE-MODE ; ' XOR-COPY SPHERE IMAGE-MODE (The first example sets the IMAGE-MODE of the OBJECT, SPHERE, to the XOR-COPY mode. The second example shows the same operation if entered from outside a PROCEDURE.) ___________________________________________________________ INDEX (n1 n2 INDEX) Def: Outputs a listing of the top lines of the CYBERCODE screens specified by n1 and n2. The screen numbers are inclusive. The currently open .CYB file is accessed. Example: OPEN SAMPLE.CYB PRINTING ON 1 20 INDEX PRINTING OFF (Print out the top line -- line #0 -- of each of the CYBERCODE screens #1 through #20 in the file SAMPLE.CYB) ----------------------------------------------------------- LOAD (n LOAD) CYBERMATE DOCUMENTATION -- page 44 Def: loads and compiles screen n of the currently open CYBERCODE (.CYB) file. See: OPEN, EDIT. Example: 10 LOAD (Load and compile screen 10 of the currently open CYBERCODE file. You open a CYBERCODE file with the OPEN command.) ___________________________________________________________ LOOP-MODE (n SEQ-LOOP LOOP-MODE) Def: Determines the type of looping done by a SEQ-LOOP. If n is 0 the SEQ-LOOP object will perform a forward/reverse loop (i.e., starts at the first loop frame, runs forward until the last frame in the loop is reached, then runs backwards until the first frame is reached, etc.). If n is -1 it will be a forward loop (i.e., starts at the first frame, runs forward, until last frame is reached, then starts at the first frame again). Forward loops are most often used with a closed cycle animation (i.e. objects return to their original positions by the last frame so that an illusion of continuous motion is achieved). Objects: SEQ-LOOP Example: -1 CUBEBALL LOOP-MODE (Set the looping action of the SEQ-LOOP OBJECT: CUBEBALL, to a continuous forward loop.) ___________________________________________________________ MAKE-BOOT (MAKE-BOOT [cr] "prompt" drivepath:\filename) Def: Create a run-time driver program called CYB-RUN.PRG on whichever drive CYBERMATE was loaded from. When run, CYB-RUN.PRG will load from the drive path specified, whichever .CYB CYBERCODE file was specified at the prompt. Example: MAKE-BOOT [cr] "enter filename, include path and extender." A:\RUNMOVIE.CYB (After entering the MAKE-BOOT command you are prompted for a drive pathe and filename. This is the file that will be opened and loaded when you run CYB-RUN.PRG. NOTE: The disk containing your CYBERCODE must should also contain any object data files used by your program. See APPENDIX A: Creating a Runtime Program, for more details.) ---------------------------------------------------------- MORE CYBERMATE DOCUMENTATION -- page 45 (n MORE) Def: Expands the currently open CYBERCODE file by n blank screens. The blank screens are added to the end of the file. __________________________________________________________ NEW! (NEW!) Def: Clears machine memory of all OBJECTS and data. No warning is given. Use only if you want a "clean slate." See: FREEZE, FORGET, WORDS. ___________________________________________________________ NEXT-FRAME (objname NEXT-FRAME) Def: Immediately produces the next frame from the specified object's delta data -- does not wait for a tick number, check the palette settings, or even the screen resolution. Use with caution. Objects: SEQ-LOOP, SEQUENCE. Example: CUBELOGO NEXT-FRAME (This will immediately produce the next frame in the CUBELOGO animation.) ___________________________________________________________ NEXT-REEL (NEXT-REEL) Def: Stops any animation, beeps, and waits for a keypress. Checks to see if the disk in the data drive contains the REEL# file identifying it as the next "reel" of data to be loaded. If the proper disk is found, NEXT-REEL increments the REEL# variable by one and passes on to the next command. See: COLOR-CYCLE, CYCLE. Example: :TWO-DISK PROCEDURE1 CUBE CYCLE NEXT-REEL -1. COLOR-CYCLE PROCEDURE2 ; (Run PROCEDURE1, then, while waiting for the next disk -- containing the files needed to run PROCEDURE2 -- do color cycling with the IMAGE: CUBE. Wait for keypress, then check the disk in the data drive to see if it contains the proper REEL#. After the data from the new disk has been loaded by PROCEDURE2, stop color cycling, then execute PROCEDURE3.) ___________________________________________________________ OBJECTS? CYBERMATE DOCUMENTATION -- page 46 (OBJECTS?) Def: Lists all OBJECTS currently in memory. (Does not list cloned objects). ___________________________________________________________ OFFSET (x y objname OFFSET) Def: Sets the x and y coordinates of the upper-left- hand corner of the specified object. Used to run animation or show image at different locations on screen. The x parameter is rounded off to the nearest multiple of 16. Objects: SEQ-LOOP, IMAGE, SEQUENCE Example: 20 80 BALL OFFSET (Offset the screen display location of the OBJECT: BALL by 16 pixels (rounded from 20) to the right and 80 pixels down.) ----------------------------------------------------------- OPEN (OPEN optional-pathname\filename) Def: Opens a CYBERCODE (.CYB) file; you must open such a file before you can LOAD, LIST, or EDIT any of its screens. OPEN is usually followed by just a filename, in which case it defaults the path from which CYBERMATE was executed. For example, if you ran CYBRMATE.PRG from within the folder ANIMATE on drive B:, the default path would be: B:\ANIMATE\ If you explicitly state a pathname after OPEN along with the filename, that path will be used instead of the default path. Examples: OPEN SAMPLE.CYB OPEN B:\CYBRCODE\SAMPLE.CYB (The first example will open the file SAMPLE.CYB from the default path, while the second example will open the file SAMPLE.CYB from within the CYBRCODE folder on drive b:.) ___________________________________________________________ OR-COPY (['] OR-COPY objname IMAGE-MODE) CYBERMATE DOCUMENTATION -- page 47 Def: One of five modes of image display. If OR-COPY has been placed in the IMAGE-MODE parameter, a "logical-or" will be performed by SHOW, or REVEAL. That means that the new image will merge the color of the new pixels with that of those already in any existing screen image The resulting image is, in essence, the "addition" of the pixels from the two images; the images are more or less merged. OR-ing is an additive process. That is, No parts of the image will disappear. The result of an or is not intuitively predictable, so it is best to experiment. Other modes: COPY, OR-COPY, DISSOLVE1, and XOR-DISSOLVE. OR-COPY is always preceeded by a single quote mark, (un-shifted quote key). It must be enclosed in square brackets as shown when used inside a PROCEDURE (see : ; above). Otherwise, it should be preceeded by a single-quote, un-bracketed. Objects: SEQ-LOOP, IMAGE, SEQUENCE Examples: : SET-BALL ['] OR-COPY BALL IMAGE-MODE ; ' OR-COPY BALL IMAGE-MODE (The first example defines that sets the IMAGE-MODE of the OBJECT: SPHERE to the OR-COPY mode. The second example shows the same operation if entered outside a PROCEDURE.) OR-COPY may also be used directly in the following manner: (objname1 image-data objname2 image-data or-copy) This will or-copy the contents of the image objname1 to the destination, objname2. That is, the image objname1 will be "merged" into objname2. Example: BALL1 IMAGE-DATA BALL2 IMAGE-DATA OR-COPY (The image BALL1 will be combined into image BALL2.) ___________________________________________________________ PALETTE-DATA ( objname PALETTE-DATA ) Def: A pointer to the palette information for an image or sequence. Example: BALL1 PALETTE-DATA BALL2 PALETTE-DATA 16. LMOVE (Make one image's palette the same as another, moves 16 words of palette information from BALL1 to BALL2. CYBERMATE DOCUMENTATION -- page 48 ___________________________________________________________ PATH-IS (PATH-IS pathname) Def: Sets the disk-drive path for the loading of data files. Examples: PATH-IS B:\ PATH-IS A:\CYBER\ ___________________________________________________________ PITCH (n objname PITCH) Def: Sets the pitch of the specified object to n. Range is 0-255 with 0 representing the lowest pitch (60 is equal to middle C on a piano keyboard or 262 Hz: 72 is one octave above). If no pitch is specified, the sound defaults to the "sound-effect" type, where pitch is determined by the parameters used when creating the sound in G.I.S.T. Sound effects terminate automatically when they've run for the duration specified in G.I.S.T. When a pitch has been set using this command, the sound will run indefinitely. A STOP parameter must be set for SOUND OBJECTS with PITCH settings. Objects: SOUND. Example: : RING-BELL 240 BELL PITCH 20 BELL START 90 BELL STOP BELL PLAY ZERO-CLOCK TICK TOCK ; (Parameters controlling the PITCH, starting tick number, and ending tick number are set when the sound is told to PLAY. When the TICK/TOCK loop has completed 20 cycles BELL will play; when the tick number reaches 80 it will stop. __________________________________________________________ PLAY (objname PLAY) Def: Plays the specified SOUND OBJECT. Objects: SOUND. Example 85 HORN START HORN PLAY (Play the SOUND OBJECT: HORN at tick number 85.) ___________________________________________________________ SETUP-LOOP CYBERMATE DOCUMENTATION -- page 49 (n n SETUP-LOOP) Def: Sets the LOOP-MODE, LOOP-START, and LOOP-END parameters described above. These must be set before loading and defining SEQ-LOOP OBJECTS. Example: 10 20 SETUP-LOOP SEQ-LOOP CUBELOGO (Set the beginning and end frame numbers of the next SEQ-LOOP OBJECT defined to 10 and 20. Load and define a SEQ-LOOP OBJECT using the files: CUBELOGO.PI1 and CUBELOGO.DLT.) ___________________________________________________________ PRINTING (PRINTING on/off) Def: Opens and closes a data pipeline to your printer. PRINTING must be ON before any output to printer is requested. While PRINTING is ON all text that appears on the screen will be "echoed" to your printer. Example: OPEN SAMPLE.CYB PRINTING ON 1 20 INDEX PRINTING OFF (Print out the top line -- line #0 -- of each of the CYBERCODE screens #1 through #20 in the file SAMPLE.CYB) __________________________________________________________ PRIORITY (n objname PRIORITY) Def: Sets the sound effect priority to n. A number between 0-255 is expected. This sets the order in which multiple SOUND OBJECTS will take priority over one another. It only comes into effect when all three channels or voices are being used simultaneously (see VOICE). The default is 128. The higher the number the higher the priority. Objects: SOUND Example: 129 BELL PRIORITY 128 BUZZ PRIORITY (If called to play at the same time (and there is only one voice available), BELL will take priority over BUZZ. ___________________________________________________________ RATE (n objname RATE) Def: Sets the number of CYBERTIME ticks (n) between CYBERMATE DOCUMENTATION -- page 50 delta updates -- frames -- for the specified object. Objects: SEQ-LOOP or SEQUENCE. Example: 20 BALL RATE (Set the ticks-per-frame rate of the OBJECT: BALL to 20. __________________________________________________________ RELEASE (objname RELEASE) Def: Deletes specified object from CYBERMATE and releases memory used by it. Must be used with caution as it will also delete any data, (such as procedure definitions) or objects created AFTER the specified object. Does not affect any data on disk. Objects: SEQ-LOOP, IMAGE, SEQUENCE, SOUND. Example: SPHERE RELEASE (Delete the OBJECT: SPHERE from CYBERMATE memory.) ___________________________________________________________ REPEAT (n objname REPEAT) Def: Specifies the number of cycles (n) for a SEQ-LOOP. If the SEQ-LOOP is a forward loop, n specifies complete cycles. If it's a forward/reverse loop, n specifies half-cycles. Example: SEQ-LOOP CUBELOGO 0 CUBELOGO LOOP-TYPE 3 CUBELOGO REPEAT : 3CYCLE CUBELOGO SHOW1 ZERO-CLOCK TICK CUBELOGO UPDATE TOCK CUBELOGO RESET RESTORE ; (Show three cycles of the SEQ-LOOP: CUBELOGO. Because CUBELOGO is a forward/reverse type loop, it will go from: beginning-to-end frame, then end-to-beginning, then beginning-to-end.) ___________________________________________________________ RESET (objname RESET) Def: Sets the "data pointer" to the first frame of the delta data of the specified OBJECT. Should be used after running any SEQUENCE animation if you wish to run it again starting from the first frame. Objects: SEQUENCE CYBERMATE DOCUMENTATION -- page 51 Example: : CUBERUN CUBEBALL SHOW1 ZERO-CLOCK TICK CUBEBALL UPDATE TOCK CUBEBALL RESET RESTORE ; (This shows the OBJECT CUBEBALL being RESET after running through its frames in a TICK/TOCK loop. Notice that RESET occurs outside of the TICK/TOCK loop.) ___________________________________________________________ RESTORE (RESTORE) Def: Makes CYBERMATE wait for any key to be pressed. When keypress is detected it returns to the CYBERMATE interpreter screen. Must be included as the last word in any CYBERCODE if you wish to be able to get back to CYBERMATE after animation is completed. Example: : CUBERUN CUBEBALL SHOW1 ZERO-CLOCK TICK CUBEBALL UPDATE TOCK CUBEBALL RESET RESTORE ; (This shows RESTORE included in a procedure. Notice that the RESTORE is placed outside of the TICK/TOCK loop.) ___________________________________________________________ REVEAL (objname REVEAL) Def: Used within a TICK/TOCK loop to display the specified IMAGE. Waits for the tick number specified in the START parameter for that OBJECT. Used with SEQ-LOOP or SEQUENCE OBJECTS to achieve a delayed display of the first frame image to coincide with the start of the DELTA updates. Objects: SEQ-LOOP, IMAGE, SEQUENCE. Example: 500 BALL START : LATE-BALL CUBE SHOW1 ZERO-CLOCK TICK CUBE UPDATE BALL REVEAL BALL UPDATE TOCK RESTORE ; (Because the START parameter for BALL is set to 500, it will niether appear nor begin animating until the the TICK/TOCK loop has completed 500 cycles.) ___________________________________________________________ SEQ-LOOP (SEQ-LOOP filename) Def: Expects a filename with no extender. Loads both filename.PI1 and filename.DLT. Defines a SEQ-LOOP object using that data. This type of object is used CYBERMATE DOCUMENTATION -- page 52 to make continuous loops of animation. (see LOOP-MODE). You may choose any portion of the DELTA file to define a SEQ-LOOP. However, this must be done prior to loading the file (see SETUP-LOOP). If no SETUP-LOOP has been entered the default settings create a SEQ-LOOP containing the entire DELTA file. Example: 10 20 SETUP-LOOP SEQ-LOOP CUBELOGO (Set the beginning and end frame numbers of the next SEQ-LOOP OBJECT defined to 10 and 20. Load and define a SEQ-LOOP OBJECT using the files: CUBELOGO.PI1 and CUBELOGO.DLT.) ___________________________________________________________ SEQUENCE (SEQUENCE filename) Def: Expects a filename with no extender. Loads both filename.PI1 and filename.DLT. Defines a SEQUENCE object using that data. This is the basic CYBERMATE animation OBJECT. Example: SEQUENCE BALL (Loads both BALL.PI1 and BALL.DLT, creates a SEQUENCE OBJECT with the name BALL.) ___________________________________________________________ SETUP (n1 n2 n3 objname SETUP) Def: Sets the END-FRAME(n1), START(n2), and RATE(n3) of the specified object. (see END-FRAME, START, RATE) Objects: SEQUENCE Example: (25 100 10 CUBE SETUP) (Set the parameters of CUBE to show 25 frames starting at tick number 100 at a rate of 10 ticks-per-frame) ___________________________________________________________ SETUP? (objname SETUP?) Def: Lists the values of the three parameters: END-FRAME, START, and RATE, of the specified OBJECT. (see SETUP) Objects: SEQUENCE Example: CUBE SETUP? CYBERMATE DOCUMENTATION -- page 53 (Entered from the interpreter mode to check the current parameters of the OBJECT: CUBE.) ___________________________________________________________ SHOW1 (objname SHOW1) Def: Displays the specified OBJECT immediately. Does not wait for a tick number (see REVEAL). The screen resolution is set to low (with color monitor), the palette is set, screen is cleared. Objects: SEQ-LOOP, IMAGE, SEQUENCE . Example: : BALL-RUN BALL SHOW1 ZERO-CLOCK TICK BALL UPDATE TOCK BALL RESET RESTORE ; (The procedure is started by SHOW1, it sets the resolution and palette, clears the screen and displays the first frame of BALL.) ___________________________________________________________ SHOW2 (objname SHOW2) Def: Displays the specified OBJECT immediately. Does not wait for a tick number. It assumes that a SHOW1 has been executed previously. Does not clear screen, set resolution or palette. Used to bring a second image on screen. Objects: SEQ-LOOP, IMAGE, SEQUENCE. Example: : PLUS-BALL CUBE SHOW1 BALL SHOW2 ZERO-CLOCK TICK CUBE UPDATE BALL UPDATE TOCK RESTORE ; (First show the first frame of BALL then, on the same screen add the first frame of CUBE. Then run both animation sequences.) ___________________________________________________________ SHOW3 (objname SHOW3) Def: Displays the specified OBJECT. Does not wait for a tick number. Does not set resolution or clear the screen, but it does change the palette to that of the specified OBJECT. Used like SHOW2 when you wish to switch to the palette of the OBJECT you are about to add to the display. Objects: SEQ-LOOP, IMAGE, SEQUENCE . Example: : PLUS-BALL CUBE SHOW1 BALL SHOW3 ZERO-CLOCK TICK CUBE UPDATE BALL UPDATE CYBERMATE DOCUMENTATION -- page 54 TOCK RESTORE ; (First, show the first frame of BALL, then, on the same screen, add the first frame of CUBE, switch the ST palette to CUBE's palette, then run both animation sequences.) ___________________________________________________________ SND-ARRAY (n1 n2 n3 n4 objname SND-ARRAY) Def: Places the tick numbers (n1 n2 n3 n4) into an array used by the specified SOUND OBJECT. 1 to 4 numbers may be entered at a time. The numbers are entered in reverse, the last number entered sets the first tick number to play the sound. Objects: SOUND Example: 100 75 20 5 BLEEP SND-ARRAY (Set the SOUND OBJECT BLEEP to play at tick numbers 5, 20, 75, 100). ___________________________________________________________ STAMP (n STAMP) Def: Writes an identifying file to the disk in the data-path drive. Used to identify sequential data disks for access by a NEXT-REEL command. Example: 3 STAMP (Write a REEL# file to the disk in the data-path drive, identifying it as the third in a sequence of data disks.) ___________________________________________________________ START (n objname START) Def: Sets the starting tick number (n) for the specified object. Objects: IMAGE, SEQUENCE, SEQ-LOOP, SOUND. Example: 50 CUBELOGO START (Place the value 50 into the START parameter of the OBJECT: CUBELOGO.) ___________________________________________________________ STEREO (STEREO off/on) CYBERMATE DOCUMENTATION -- page 55 Def: STEREO ON places all standard viewing operations into stereo mode (e.g., SHOW1, UPDATE, etc,). You should only use STEREO ON after you have already allocated a stereo buffer with ENABLE-STEREO. You may use mono (non-stereo) images with the STEREO ON set -- the same image will be shown to both eyes, resulting in a mono picture. STEREO OFF reverses the effect of STEREO ON and disables stereo viewing. Example: ENABLE-STEREO STEREO-IMAGE BALL STEREO ON BALL SHOW1 RESTORE Note: RESTORE will automatically issue a STEREO OFF. ___________________________________________________________ STEREO-IMAGE ( STEREO-IMAGE stereo-filename ) Def: Works very much like the IMAGE word, except it is designed for use with stereo images. A stereo image is made up of two files, each with an identifier preceding the filename: L_ for left-eye view and R_ for right eye view. The stereo-filename is the name common to both eye views. For example, a stereo picture called BALL would be made up of two files L_BALL.PI1 and R_BALL.PI1. See also, ENABLE-STEREO and STEREO ON. Example: STEREO-IMAGE BALL (Load both R_BALL.PI1 and L_BALL.PI1 and define a stereo object called BALL.) ___________________________________________________________ STEREO-SEQUENCE ( STEREO-SEQUENCE stereo-filename ) Def: Works very much like the SEQUENCE word, except it is designed for use with stereo sequences. A stereo sequence is made up of three files, two with an identifier preceding the filename: L_ for left-eye view and R_ for right eye view. The stereo-filename is the name common to all three files. For example, a stereo sequence called BALL would be made up of three files L_BALL.PI1, R_BALL.PI1 and BALL.DLT. See also, ENABLE-STEREO and STEREO ON. Example: STEREO-SEQUENCE BALL (load in both R_BALL.PI1, L_BALL.PI1, and BALL.DLT and define a stereo object called BALL.) __________________________________________________________ CYBERMATE DOCUMENTATION -- page 56 STOP (n objname STOP) Def: Sets the ending frame number (n) for the specified object. Objects: SEQ-LOOP, SEQUENCE, SOUND. Example: 4500 CUBELOGO STOP (Place the value of 4500 into the STOP parameter of the OBJECT: CUBELOGO.) ___________________________________________________________ TICK TOCK (TICK cybercode TOCK) Def: These two words define a CYBERMATE clock loop. Each loop cycle advances CYBERTIME by one tick. This is an indefinite loop that continues (running the CYBERCODE contained between the two words) until it receives an end-of-sequence "flag." That flag is set when the LAST OBJECT contained in the loop detects the end of its sequence. This forces an exit from the loop and CYBERMATE goes on to the next command. Example: : PLUS-BALL CUBE SHOW1 BALL SHOW2 ZERO-CLOCK TICK CUBE UPDATE BALL UPDATE TOCK RESTORE ; (The frame updates taking place between TICK and TOCK will continue until BALL reaches the end of its sequence (either the last delta frame, or a tick number set by its STOP parameter). The loop will be exited even if CUBE has not completed its sequence. It is the last OBJECT in the loop that sets the end-flag.) ___________________________________________________________ TICK: (TICK:) Def: Reads the tick number. Used inside a TICK TOCK loop to retrieve or "fetch" the tick number. Example: : TICK-READ BALL SHOW1 ZERO-CLOCK TICK BALL UPDATE TOCK TICK: CUBE START RESTORE ; (The tick number, at the time the TICK TOCK loop is exited will be stored in the START parameter of the OBJECT CUBE.) __________________________________________________________ =TICK >TICK TICK cybercode TOCK) Def: These three words are all used inside a TICK TOCK loop. All read the the tick number and compare it to the number (n) that preceeds the word. The type of comparision made is indicated by the word: n =TICK Does n equal the tick number? n >TICK Is n greater than the tick number? n It is composed of two hyphens and the "greater than" symbol, and is used to chain screens together when your program is too large for one screen. In this specific case, it will cause Screen #2 to be loaded. When Screen #2 (old Screen #10) is loaded, it defines the procedures contained there. But no animation is started. To make that happen we need to "call" the first procedure we want to run. And, before we can do that, we need to make a few changes to Screen #2. CYBERMATE DOCUMENTATION -- page 64 Notice on our new Screen #2, lines 10 and 11 contain a PROCEDURE called REPLAY, which is designed to offer the option to the end-user of replaying the animation, or exiting to the GEM desktop. (Otherwise, the animation would return to an incomplete version of the CYBERMATE INTERPRETER screen. The CYB-RUN.PRG INTERPRETER has only a few commands active and would only serve to confuse the user.) We commented out REPLAY to keep it from being activated when Screen #10 was run. Now, we want to put it to work, so: Remove the comments (\) at the beginning of lines 10 & 11. Now that REPLAY is active, it must be added to the CUBES PROCEDURE. To do this: Replace the word "restore" at the end of the CUBES procedure with the word "replay" (without the quotes, of course). The REPLAY PROCEDURE is a simple IF/THEN test. If any key other than [Return] is pressed, BYE is implemented and you exit to the desktop. If [Return] is pressed, Screen #3 is loaded. What's on Screen #3? Just one word: CUBES. To get to Screen #3 the first time our AUTOCUBE.CYB file is loaded, we must also add a chaining symbol to Screen #2. From the editor, add this at the bottom line: --> Now, go to Screen #3 ([Control]-[G]) and type: CUBES That's the last of the edits. Save your new screens back to AUTOCUBES.CYB by exiting the TEXT-EDITOR with an [F1] keypress. Okay, Screen #1 loads and defines all our objects, Screen #2 defines some procedures to run the animation and offer a way out of the program, and Screen #3 does nothing but call the last defined procedure in Screen #2 which does the whole thing. This "calling word" in Screen #3 should always be the last word in the last screen of your RUN-TIME CYBERCODE file. Now we have our RUN-TIME CYBERCODE file. If we were to put the data disk with the files listed in Screen #1, in the drive specified in Screen #1, and enter 1 LOAD, AUTOCUBE.CYB would load the files and run the CUBES PROCEDURE. But we can do better than that. ___________________________________________________________ STEP #3: CREATING THE BOOT-PROCEDURE A few steps will allow us to build a complete RUN-TIME system that will run directly from the GEM Desktop. To do this we need to start with a "clean slate." Make sure you have saved your edits to AUTOCUBE.CYB by exiting the TEXT-EDITOR with a [F1] keypress then type: CYBERMATE DOCUMENTATION -- page 65 NEW! Now we can set up a special "boot-procedure" that allows us to save a run-time version of CYBERMATE that will automatically open and load Screen #1 of AUTORUN.CYB. The word that we use to create the procedure is, MAKE-BOOT. Type it: MAKE-BOOT [Return] You'll see a prompt: "Enter runfile, include path and extender." The path referred to is where you will want your data and .CYB file to be found. However, the run-time driver program (that will be created in the next step) will be saved to whichever path you ran CYBERMATE from. So, be sure and place a disk with enough file space (about 60K) in that drive. Now, type: A:\AUTOCUBE.CYB [Return] The drive will run and CYBERMATE will automatically create a special, run-time program driver called CYB-RUN.PRG. When CYB-RUN.PRG is run, it will look to the file path we have specified (A:\) for a file called AUTOCUBE.CYB which it will proceed to load. AUTOCUBE.CYB, when loaded, will, in turn load and run the data files and the animation. Remember that the .CYB file (AUTOCUBE.CYB in this case) must be on the same disk as the the data files (.PI1 .DLT and .SND). The CYB-RUN.PRG can either be on the same disk as the other files or, if there isn't room, can be on a separate disk. IMPORTANT: If your animation includes SOUND object, the disk containing CYB-RUN.PRG must also contain the CYBERSND.PRG in an AUTO folder. ___________________________________________________________ PUTTING IT ALL TOGETHER Now to use the program: Insert the disk with CYB-RUN.PRG (and CYBRSND.PRG) in your boot drive. Turn on your computer. Make sure you are in low-resolution. Double-Click on CYB-RUN.PRG At the prompt, insert the disk containing AUTOCUBE.CYB, and press any key. The data files will be loaded and the procedure will run automatically. CYBERMATE DOCUMENTATION -- page 66 /////////////////////////////////////////////////// APPENDIX B: Stereo CYBERMATE /////////////////////////////////////////////////// There are two varieties of stereo objects in CYBERMATE: STEREO-SEQUENCE and STEREO-IMAGE and they are very much like there "mono" counterparts SEQUENCE and IMAGE. In fact, the same operators which affect the normal SEQUENCE and IMAGE objects will also affect the STEREO-SEQUENCE and STEREO-IMAGE ojbects. There are a few things you need to know, though: 1. Read the documentation which came with your STEREO-TEK glasses carefully; we make no attempt here to explain the proper use of the 3-D glasses. 2. To view a stereo IMAGE or SEQUENCE, you must have first created a stereo animation or picture with CAD-3D 2.0. STEREO images have two starting pictures, one for each eye's view. The filename of the pictures is preceeded by either a R_ or a L_, depending on whether it is the right-eye view or the left-eye view. For example, a 3-D picture BALL would be comprised of two files: R_BALL.PI1 and L_BALL.PI1. If you had a 3-D animation, with BALL, there would still be one .DLT file (BALL.DLT); CYBERMATE recognizes that it is a 3D .DLT file by the two initial images. When you define your object, be sure to only use the name which is common to all the files, ignoring the R_ and L_ prefixes (in this case, it would be BALL). 3. Before using any stereo objects, you must allocate the proper buffer space with the command ENABLE-STEREO. You need only do this once per session (or program). 4. To switch into stereo mode, use STEREO ON (assuming you have already issued an ENABLE-STEREO). To switch out of stereo mode, use STEREO OFF. Note: RESTORE automatically issues a STEREO OFF command. For more information on operating in stereo, see: STEREO-IMAGE, STEREO-SEQUENCE, ENABLE-STEREO and STEREO ON in the glossary. CYBERMATE DOCUMENTATION -- page 67 /////////////////////////////////////////////////// APPENDIX C: Generic Forth /////////////////////////////////////////////////// CYBERMATE uses many of the conventions of the Forth programming language. This includes such things as: Stack manipulation Reverse-Polish Arithmetic operations Forth-style Loop and Logic structures CYBERMATE has been designed to allow the implementation of all of its functions and features without any need to directly use them. However, they do form the basis of many of CYBERMATES functions. Having some basic understanding of Forth will help you to learn and understand CYBERMATE, and you will also be better able to build on CYBERMATE. Of course, it is not possible to cover all of the Forth structures and commands in this document. The brief overview in this appendix is designed to help you understand basic concepts. If you wish to explore further, you'll need additional references. We have listed a few Forth books at the end of this appendix. Many more are available. ___________________________________________________________ THE STACK Essential to Forth is the "stack." The stack is an area of memory where data (characters or numbers) is stored temporarily during computation. It works just like a stack of playing card "discards" in a game such as Rummy. The last "card" or number put on the stack will be the first one pulled out. If we enter numbers from the keyboard: 43 89 54 2 They would be arranged in the memory stack like this: 2 (top) 54 89 43 (bottom) With the last entered number (2) on top. Knowing this helps understand Reverse-Polish operations ___________________________________________________________ REVERSE POLISH Forth uses Reverse-Polish notation to perform arithmetic operations. Reverse Polish refers to the procedure of entering the numbers first and following them with the "operator." It seems awkward to add two numbers by typing 56 34 +. CYBERMATE DOCUMENTATION -- page 68 However, keep in mind the stack structure described above and it will begin to make sense. As an example, the plus symbol (+), like most Forth arithmetic operators, takes the first two numbers off the stack to perform its computation. Thus, when we type the sequence: 56 34 + we first place the two values (56 and 34) on the stack. We then place the operator (+) on the stack which takes the last two numbers placed there, adds them together, and replaces them with a single number: the sum. Here's what the stack would look like during this operation: KEYBOARD INPUT stack 56 56 34 34 56 + [Return] 90 ___________________________________________________________ DECISIONS, LOOPS, AND LOGIC Forth uses control structures common, in some form, to all programming languages. IF/THEN structures, AND/OR/NOT logical operators, and LOOPS are all available in Forth as well as in CYBERMATE. They are handled differently in different languages. It is not possible to explain all of the Forth variations in this documentation, for that you'll need additional references. Here are the CYBERMATE formats for the two most commonly used structures: ___________________________________________________________ IF/THEN Example: : proc-name cybercode1 IF cybercode2 THEN cybercode3 ; In the example above, cybercode2 will only be executed if cybercode1 has left a "true-flag" on the stack. If cybercode1 is "false" then cybercode2 will be ignored and cybercode3 will be excuted. ___________________________________________________________ DO/LOOP Example: : proc-name 10 0 DO cybercode1 LOOP cybercode2 ; In this example cybercode1 will be executed 10 times before cybercode2 is executed. ___________________________________________________________ The following lists offer brief descriptions of the Forth words available in CYBERMATE. They are intended as a quick reference to CYBERMATE DOCUMENTATION -- page 69 those already familiar with programming on some level. They will not teach you how to use these words. Please refer to the books listed below for further help. ___________________________________________________________ ARITHMETIC NOTE: CYBERMATE uses INTEGER MATH. The quotient is floored (rounded to negitive infinity). The modulus (remainder) has the same sign as the divisor. + (n1 n2 -- n3) Add n1 and n2. "plus" D+ (dn1 dn2 -- dn3) Add double numbers. "d-plus" - (n1 n2 -- n3) Subtract n2 from n1. "minus" 1+ (n -- n+1) Add 1 to n. "one-plus" 1- (n -- n-1) Subtract 1 from n. "one-minus" 2+ (n -- n+2) Add 2 to n. "two-plus" 2- (n -- n-2) Subtract 2 from n. "two-minus" * (n1 n2 -- n3) Multiply. "times" UM* (un1 un2 -- udn) Unsigned multiply, double precision result. "u-m times" UM/MOD (und n1 -- mod quo) Unsigned division with double precision divedend, single precision divisor and results. "u-m divide-mod" 2/ (n -- n/2) Arithmetic right shift. "two-divide" / (n1 n2 -- quo) Division, signed. (quotient of n1/n2). "divde" MOD (n1 n2 -- mod) Modulus, signed. (remainder on n1/n2). "modulus" /MOD (n1 n2 -- mod quo) Division with both remainder and quotient. "divide-mod" */MOD (n1 n2 n3 -- n4 n5) Multiply then divide (n1*n2/n3) with double precision intermeadiate. "times-divide-mod" */ (n1 n2 n3 -- n4) Like */MOD, but gives quotient only. "times-divide" MAX (n1 n2 -- n3) n3 is the larger of n1 and n2. MIN (n1 n2 -- n3) n3 is the smaller of n1 and n2. CYBERMATE DOCUMENTATION -- page 70 ABS (n1 -- un) If n is negative, u is n's two's compliment. "absolute" NEGATE (n1 -- n2) Two's compliment. DNEGATE (dn1 -- dn2) Double precision two's compliment. "d-negate" ___________________________________________________________ COMPARISON < (n1 n2 -- flag) True if n1 is less than n2. = (n1 n2 -- flag) True if n1 equals n2. > (n1 n2 -- flag) True if n1 is greater than n2. 0> (n -- flag) True if n is greater than 0. 0= (n -- flag) True if n equals 0. 0< (n -- flag) True if n is less than 0. D< (d1 d2 -- flag) True if d1 is less than d2. U< (un1 un2 -- flag) True if u1 is less than u2. BETWEEN (n1 n2 n3 -- flag) True if n3 is =>n1 and =0=true). If true: code1 is executed, then code2 is excuted. If false: code1 is skipped then code2 is executed. B: code? leaves true/false flag. If true: code1 is executed, code2 is skipped. If false: code1 is skipped and code2 is executed. Each IF and ELSE must have its' own THEN. ___________________________________________________________ 3. BEGIN/UNTIL/REPEAT LOOPS Words: BEGIN UNTIL WHILE REPEAT Examples: A. (BEGIN code1 code? UNTIL) B. (BEGIN code1 code? WHILE code2 REPEAT) Descriptions: A. code1 is repeated as long as code? leaves a true flag and UNTIL branches back to BEGIN. If code? leaves a false flag, loop is exited. B. code1 is executed and, as long as code? leaves a true flag, code2 is executed, then REPEAT branches back to BEGIN. If code? leaves a false flag: code2 is skipped and loop is exited. __________________________________________________________ BOOKS STARTING Forth Leo Brodie Prentice-Hall New York, New York CYBERMATE DOCUMENTATION -- page 72 THINKING Forth Leo Brodie Prentice-Hall New York, New York Forth AN APPLICATIONS APPROACH David L. Toppen Mc Graw-Hill New York, New York ___________________________________________________________ [END OF CYBERMATE DOCUMENTATION] +++++++++++++++++++++++++++++++++++ CYBERMATE DOCUMENTATION -- page 73 #a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #E 18 12 #W 06 00 1C 08 15 09 08 A:\*.*@ #W 00 00 18 01 33 09 00 @ #W 00 00 0A 0F 34 09 00 @ #W 00 00 0E 01 34 09 00 @ #M 00 00 00 FF A ST Review A@ @ #M 01 00 00 FF B ST Review B@ @ #T 07 03 02 FF Black Hole !@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #P 03 FF *.TTP@ @ #F 03 04 *.TOS@ @  \ PREVIEW EDITOR Screen #1 variable No-Preview save-pal 1 preview rate 0 preview start 30000 preview stop hex 6100 constant 6200 constant 20 constant 0d constant 4300 constant 4400 constant 5200 constant decimal variable step-mode variable old-key variable out> variable tick& variable fcount variable fnum : PUT-FPT 27 emit ascii H emit ; : FPT -1 fcount +! fcount @ 0= if put-fpt 1 fnum +! fnum ? tick& @ 1+ fcount ! then ; : DKEY KEY? IF KEY DROP THEN ; --> \ PREVIEW EDITOR Screen #2 2 $var c-reg variable pcolor create p-table 0 , 2 , 3 , 6 , 4 , 7 , 5 , 8 , 9 , 10 , 11 , 14 , 12 , 15 , 13 , 1 , : PAL-DIS preview palette-data this-palette >pal put-fpt cr cr 16 0 do i pcolor ! 0 effects 6 textsize p-table i 2* + @ textcolor this-palette i 2* + @ hex 6 .r decimal 1 writemode c-reg i str$ c-reg 2+ c-reg $@ len 0 pcolor @ 8 * 22 + graftext cr loop ; --> \ PREVIEW EDITOR Screen #3 : run-keys? step-mode @ if key DKEY old-key ! else old-key off then key? old-key @ or if old-key @ ?dup if else key then dup = if drop begin key dup between while 17280 - 128 / tick& @ 0= if dup 1 - tick# +! then tick& @ * dup 0< if 2 - then tick# +! tick# @ 0< if 0 tick# ! then ticktock repeat -1 tick# +! else dup = if 1 preview rate 30002 tick# ! 0 out> ! clock-display off else DUP = if pal-dis else dup = if clock-display @ not clock-display ! else dup = if step-mode on clock-display on tick& @ tick# +! 1 preview call 1 fcount ! else dup = if step-mode off tick& @ 1 + preview rate else dup 47 > swap dup 58 < rot and if dup 48 - 10 * dup 0= if 1 + then dup 1 - tick& ! preview rate -1 tick# +! else beep then then then then then then then drop then ; --> \ PREVIEW EDITOR Screen #4 : ROLL2 begin out> @ while PREVIEW show1 zero-clock 1 tick# ! tick run-keys? PREVIEW update fpt tock PREVIEW reset 0 fnum ! repeat depth ndrop key-brk on 1 setrez curs-on restore-pal ; : ROLL1 1 out> ! step-mode on clock-display on key-brk off 0 tick& ! preview show1 pal-dis key drop roll2 ; ROLL1 forget No-Preview CAD-3D 2.03 README.DOC (4/25/88) This version of CAD-3D has *two* resource files, CAD3D2.RSC and CADALERT.RSC. Important! Both of these resource files must be in the same directory as CAD3D2.PRG EXPANDED OBJECT LIMIT: Now you can have 80 distinct, named objects in CAD-3D at once, instead of the 40-object limit of version 2.0. SUPER VIEW MODE SETTINGS: When rendering a Super View in Final mode, you may abort the rendering process at any time by pressing [Undo]. CYBSMASH.ACC: This desk accessory compresses files during a CYBERMATE Recording session in CAD-3D 2.0. If CYBSMASH.ACC is not installed, CAD-3D will warn you at boot time. If you do not plan to record CYBERMATE animations, you do not need this accessory. Use this new version from now on and delete any copies of the original CYBSMASH.ACC ver 1.0. CYBERMATE PLAYBACK: If you wish to play back your CYBERMATE Recordings without editing them from CYBERMATE, useANIMATE4.PRG, on your CYBERMATE disk. See the README file in the ANIMATE.004 folder for instructions. ARBITRARY PIVOT POINTS: When placing Arbitrary Pivot points, the X, Y, and Z coordinates of those points will now appear in the title bar of the active view window. These coordinates will be in integer form (e.g., 1000 = 10.00), and are compatible for use with CYBER CONTROL. GDOS OUTPUT: Instructions for using GDOS printer output, and the Hardcopy program are included in the HARDCOPY folder on this disk.