!| O`  @! #@%`')-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠ @ @`!O  !Aa!!#%a'*-/1!3A579=?A!CEaIOQ!UaY[]_a!cAogimsuawy{!Ao!Ao!Aa!AaAaǁɡ!Aaׁ١!Aa!OaO  !"!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'wy'{'}'("(B(b((((()")B)b)))))*B+B*b****+"+b+++++,",B,b,ǂ,ɢ,,,-"-B-b-ׂ-٢---/".B.b...../"/B/b/////0#0O`  @! #@%`')-/1 3@5`79;=?A C@E`GIKMOQ S@U`WY[]_a c@e`gikmoq s@u`wy{} @` @ ` @ ` @ ` @ ` ǀ ɠ @ ` ׀ ٠ @ @`!O  !Aa!!#%a'*-/1!3A579=?A!CEaIOQ!UaY[]_a!cAogimsuawy{!Ao!Ao!Aa!AaAaǁɡ!Aaׁ١!Aa!OaO  !"!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'wy'{'}'("(B(b((((()")B)b)))))*B+B*b****+"+b+++++,",B,b,ǂ,ɢ,,,-"-B-b-ׂ-٢---/".B.b...../"/B/b/////0#0ANIMATOR004: AVS UTO  SCIPLOT  DESKTOP INF ` UICK `F AILY WDWsj OREWORDWP aKCHEDULEPRGbj~CHEDULERSCnjxELFCOVRWP aONVERT TOS}:KPRGACC MOMINIT C zTMSTACK C jO$OLIDAYSREClOLIDAYSRPTjj AW TIKqjANY WDWuj EMINDERWDWj TANDARDRPTlj TARSG10CODbjADDYNA ARC3.ESKTOP INF%KOVEL ARC78WINIT S zRGACC C qEr*RGACC DEFP5RGACC H P7RGACC PRGESRGACC RSCPFTSCDUMP C }H8SCDUMP TTPPM5LIPPIXMS ,j FLTASM1PASzAGEONE MAC{|PBEMVPGN MAC}|PCWPA}___ALTj|PDWPB}___ALTl|PE$WPD}___ALTn|PFWPE}___ALTp|PG WPI}___ALTs|PH WPP}___ALTu|PIWPU}___ALTw|PJ. ; .. MV_MEN SEQ =`BUZZBEE SEQ SBUGSPLINSEQ `xfhV_MEN ARC fUTOGYROARC ANIMATE4PRG [README DOC lX(  !,7AKhVbkRtL~\0:L $Ī,  >'/ 6AHL&ValDvjl~~zjǨXJ0 N"*5>?IRP[eox H V.4~x #Z)07r>FLT@[pbknt}pN03w2CTewFLICKERS.0 F &???  %?  ~??  x0`xl16888880    @ @`ppxxxx~~<~~pp``pp<    %<88xp`p  3?>~<~<? x0x< p<|7680#     @`xxx~|pggww'8  (< `????    ? x0pw? |?   ? $ p% ??  #B   f?*?)DT3w2CTewFLICKERS.1 yM $ ?~1  ~?0<?901?  ?????|~~~p   < |?? |<$  @@q||xxxppp??0x00 `@  8p #?~D5~2<0/@ ??  ? <~~p- px??@||<4<>?_ $q??0< p~    8p#p0 P+ ?  ?0<?<0 <???? ?  ?< <8 ?  ߀?><0~<8 | ? 8p#DJ[?"xp<?M-0????|->B3w2CTewFLICKERS.2 k\ `08???x??1~ ?? ? ||?? |x`??? !p ??  ?>??:??1  6x83?8x# ?? ??? |??=<8|x  @??+ >><<8xp??|@ `p>p3`A  , ?? ???  ??? ߀8 ???- pxx|~x@?? ?>CE  > ?~ V?ZA?>3w2CTewFLICKERS.3 gf 2 ??? ??    8 ??????? xxxp?????>O.8? ?? ǀ ??80 00@?????? ?@? %p << xp0 ` ?????   ???? ????8$xxp??> ~? ?? ǀ ????77G??|?N ?? << xp0 ` ????r??   ??x`G? ??@? '?8??x? ?0@?Eǀ ??@0 << xp0 `? ???(???E?? @Fv 3w2CTewFLICKERS.4 vW >  & ? ???}qqq{?|  p ??>?8@80p p p~>8|`? @@p`?B` - }<|`8  V$???| ? ?????8?7w !??E ``  ? }<|`8  ??<0'?|  ?(???w?  8?Cp????  ?@?``????C# }<|? ?m >(???- ?1G/?>?~??|!3w2CTewFLICKERS.5 F "Q8?~><???>???? ??? 80 ? ??@?@~ @~~||8800'???   ???<xx0`` 0 `@ ` ???????? ?  80 0<? ???z|||z@ ?> ??+?? /`???<xx0`` 0 H80??``   ?px|?  ? @?' ?<xx0`` 0u? ?? 1.  ? ??A  3w2CTewFLICKERS.6 9<p )  ???p>  FF&|??? ? ? @ Ag ????~``<3 `x<A -@ ?  ?a??=~fZ??? ?  ?? | ? _i>9~x  ? ?)<| <D?c`Cp?7 93cs >>x| ?a?pgC!!0 >~|  ?? ??   &C? -@ , ?0 S_j<#?? &N33w2CTewFLICKERS.7 wT S R #>*T07?|FL3Uw3DUw  0QrWFLICKERS.0 VM=" ?/? ???  ?"???? | p`@ >>?s <~|~?? ?> ? ??   %?81p/|+?? ??.? ?+ c   @@pp??????? ???  ???~`@/ ?? >80p ???   3Uw3DUw  0QrWFLICKERS.1 V:A ??   ?( ?| ,?????~x s`@>??<|`@?| + 0 6 ?|9?p ( ??0?? ?  |  8accc#!!0pp?@??? ???  ??~`@4*?? ? |  ??  ?3Uw3DUw  0QrWFLICKERS.2 X[`$~0? /!???:$?? ?O?????????ߎ?? y?| ??6o @| ??KDx~?A%???;*????A"R$?*???p ?? ?3~~~| > I<I" x!aÁǀG' `p03 ?|<? ?`;? ?|: ><p`~~~|@|F~8? ??3??????:  ???, ><p` ?3Uw3DUw  0QrWFLICKERS.3 V&T%(??/?? :??G???! ?|x` ??,?0<>??<~`@?  :?? = ?C ?H?J?3@??-????? ??'  ) Q<p0`011qscacc#!!01 pp. p???????+ .???~`@GS> ?????,|??<+  ?$ ?3Uw3DUw  0QrWFLICKERS.4 VB7? ??? p`/ ?p <>??<~@?(?? ?31+?@$ ??? ??&??%  p03!10 pp ???????/???~@*%?0?????  <8x  ? ??n3Uw3DUw  0QrWFLICKERS.5 YHD?0? ?? ???-??????)?| "|# ?  ??? "T??+ ?? ??|??9`??2 g x???)      x <<<0?@#? ??>|#8<||xx`|0!=yc?`~??$@  |? ? 8<||xx`8|~3Uw3DUw  0QrWFLICKERS.6 VI= ?0 ??? ? ?&?? ??'G?| p`/ <>?? <~|~? ?> ? ? ???? ?%?310|@+ ??? ??. +    A@pp ????????/???~@0? ??  <00p  ? ?? 3Uw3DUw  0QrWFLICKERS.7 V9A*? ? ? ? (?|,p???~`?<>??<~`@? ? ?+ ?0 ?6 ?|9x31) ????? ??    8@cacc#!!01 pp p@?????? ???~`@4*????|<x  ? ?3Uw3DUw  0QrWFLICKERS.8 X[`$~0? /!???:$?? ?O?????????ߎ?? y?| ??6o @| ??KDx~?A%???;*????A"R$?*???p ?? ?3~~~| > I<I" x!aÁǀG' `p03 ?|<? ?`;? ?|: ><p`~~~|@|F~8? ??3??????:  ???, ><p` ?3Uw3DUw  0QrWFLICKERS.9 V(S%'??.? 9G??? ?|x s`@ ??,p>>?<|`@?  9? < ?B G ?J?? ??,???? ?%?  ' N"<pp011qssaccc#!!0pp-????? ???+ - ??~`@FN> ??? ?+??+ ??$  ?3Uw3DUw  0QrWFLICKERS.10 VE7??? ? ??? p`@ ?p >>?s<~`@?)?? ????81+%?? ??&??& c#!1 pp?????? ???  ???~`@)%?????  <<x   ???   n3Uw3DUw  0QrWFLICKERS.11 YND??/? ??0 ???!|??????) ?|} >|$ ~???  ??? "T?+ ?? ??0?||?8`?2/~c???)      x <<<<? <$? ?>|$<||xx`|0!=yc?`~????$@  ? ? <||xx` |~\Op+?/.2????+@0ǀx??` > @??  ?|? <?~~<x 0 <?? <   `>? x|<>> @>?? 0j  ??2??"(@>@0w3 | @<<xX`@?? ??? ? ? ?À '?;? ? ? !?  p]   006?? ?@>|;880x` 08`p   ????`@`    xp? ???? <? ?&?x|<< + pg ??T(@>x0D q %H ~D???'e 73w2CTewFLICKERS.8 hm ~??R >? %???? ?? ?? |? ??&  &8?3|x `] ??? ?  "P,??????W3w2CTewFLICKERS.9 ho}??? ?8qw?? ?? ???<.߀"p x<>~?$+   @ ?  }????? ?? ? ???< 8#`w;=#Ϗ? 7x< 0 0@8 ?0 ?9  ?/8` `X?1 ?  ????~ ? ? |??3ϟ~  >|?#R ???? ??+?,??    ?8x0? ?0p???$  @ ?8I ^ !3w2CTewFLICKERS.11 G PHG??  ??8x8 0?y  ????? ?????? ??> ? 0x|?x ~??(eL?G?? ? ?? ?p@ ?0? >|  @ ???>?> ??`p????π~<xx#???#eDm&> ?  ???    ?? 0  0`*???<0??%?  8,p? E?~<xxX3w2CTewFLICKERS.12 B'?>>`23|~?~<1cc?7  `p?>?  < 8?>`&V}??~>? /0@ ?  ~?pO?+  ' ????    ? c? ?>?|? ?  ?|??oo???)?80sg? ? ,  080  ?~ } . ? ??x @@ . `?+<xi D???#|?|x3  ~???? 8????????>&Zhp ;~|0Z <<?~?? ? >2'G;) ????~??   `"  ) ??? ??8?>& Rx<pg  8@U @0e??(0p ` B ( u ?~|0a?i  ?????>C3w2CTewFLICKERS.15 K& ?? ? =?????N`?? ???? ???@6- ?<|xxp 0   ???? R ` ? e  =?????N0p? ??(??? ?6p ?? 0pp``  ( ?  f0p 8<880 h 0 ` ???A>?* A 8< ????T&??   @3w2CTewFLICKERS.16 }I%???   @`? ? ?@@ - ~? ?  ???? ?  ?  9 ` @`@@? $1??~8~| <? 6    p`  ?)I}  \@@~&? Y B<x|x8 +` H6N)?? ?};3w2CTewFLICKERS.17 |H$? ????8? .  > ?? ??????????8> ?  2  z???@1 1?  @? 8>?B zx0 B 8xp`@@ <Y???@7E *? ?>??z83w2CTewFLICKERS.18 {G"  ???????????8?  ??? ??  S ??? ??????{  0 {????????+ ?/ 0.?1?  ???????{"0 <? @80`@P?????????? ????{}<3w2CTewFLICKERS.19 yM>!??????|?8????????P?|   *  w`????|?<??. @x ?? 1? ?xx?  w_???9V9????|?<??||x?  wA3w2CTewFLICKERS.20 t![0?????C0L???!??0?????$  @)9Tt0?????C0L  /??02?Z0?9P<?yy0?????0L)_???Y3w2CTewFLICKERS.21 u(V ???? X????*?H ??|?   ?w9|<c???? V,??  ?0 ??? @ ?w97W|<~!? p0NN>T``????ua? ???@I ?w95Y|<L3w2CTewFLICKERS.22 z*D?????? ?????D?? ???@?? ??  8x||~w!8 K.T??????0 ?? ?     ?8x||~w!80T1;@p0(?{ ?@. 6Q` 07;????D  F?>w980?U?3w2CTewFLICKERS.23 .<????? > ?   .?????& π?a?? >pp08 ?  x  ??x ?? ``8<8x, 8 mH,? ?:@-?> pxx< 180o4??p08??< ? x ??||<<8x+ y3w2CTewFLICKERS.24 *: ?  ? ???1 ??? ?     ~~??<i ?????  ? ? `,| T ??I8,?Lq ???$  ? `gxqx3w2CTewFLICKERS.25 x$ST ??(?<?? ?#???? ?@?>>? ? 1 <??`04^  ??8<????? ?@ ?x<???? ??x-? p0 ?I4 ??6>?2? qp0 @`M <`0l\' >??????? )||????p|?3w2CTewFLICKERS.26 gnrT? ? 8v? '?????????????????o> ? ???" ?< CB < = ??C<?? ?|<8?` ||% @ , <C? ???/? @>? ?????? |<> ?"p3px8 M? ?!p88p  H ? ????<>  < S3w2CTewFLICKERS.27 jh ^pE >  x??0<???  ~>??<0?"0N?@@`:?xx|??A< p3 ???  00``@  `:3b@x?????????@!?x@ <?" F?@@`:vx|??>? |yx0`@ @px|>??!x?9|A@@|@?@~??? xx88 08<~? F 009t|8<|x8x`@>  >< ???U <0 @ 08<??p0pp03w2CTewFLICKERS.28 vK& %? ? ??|??x|x?  ||<|x??}|?; ,gx??|<  8? ? ?~<8xppx  0~? >>)<??<~ ??}|?; 8U<Xx??|< !8 0`<@??? 8 ??#????? ppx pp88 p   A??>>? 8? ?x |`m? ???; 2 ??W83w2CTewFLICKERS.29 6??????? @@0?  8~|~ ? ?  ?   ?   ??8 K?%?? @@0? ` ???? ?   > `<<?y%? ` ??8` ??x??  *3 %??? ???  ' ?  . A ?3w2CTewFLICKERS.30 {D#????    ??8?x?|a?? ???  ?~x<   `=  ?? ???{x`????>8? @  ??@?, p?i ` ?? ?+[ ?   ????< ? @` @ ``xx||||x @|???  p?'?? ?I????? ???+ ? p 3 %?? ? ? 3w2CTewFLICKERS.31 yQ @???@????3!# 009??? &??|?<~>>?  ??0>?"x@ ?  ~8(?????8<6??6=8~??@? ?0???̇  +x?>@ <.??5? ??? 80`<~< ?~<8???x x<  ` ?1>x???  |IC?? ??3!#????.?> +73w2CTewFLICKERS.32 p\ %?5?????/'!#"8 ??  px| ????` )?~<|? ! ??  8x?70 @"~??xx8 ?/780|~=7 &,?O|g~?~?|  ?;???9 ">0 0  ?j,[~??xx8  80``8?? ????"??<$Ã??$~ ?  ?*  ? ?/?><? ? ?;J63w2CTewFLICKERS.33 uO? x|~~ ???$?g??? ~><  ?%`    ~ax|~߀@@+@ <  @?6 - A ?&p x80?p?~|~x0/? ?  @ 00h  ,~?Ο 88 2:@@ C?xp 0x|~?/ @$??  #p x80   ?? ?? `p8>??"????   ??& ~?? 0x|~?(/ =?"?   ????%9<< ?? 3w2CTewFLICKERS.34 }C ?@?00088   `'p8D N ?x08 pp@`` |<~2 |  >6?? :}  ????   ?x @`  7 3@ ?+|T ! ``cǀ|0{ &808 ;,u? ??????? @` ???? p|~?$  |>   % |  ) ?????]wE|??.3w2CTewFLICKERS.35 ~D^  ??? ?* ?????? x?? ???@ACCGGO__??% x xxx5 8bb~ 83O ?8|> c!.?2@@xW/<|X&?Acc>?~8CA ?? ??????????? p"????? ? `@x| ?" |<<  x | ?% 翀?? & P????????? Z q?D?, F;3w2CTewFLICKERS.36 > >?  (0xX8p00? xp0 ??~xP   `ccC/߈? ?? ?(  < <9 ??    0p~~_/___`? 08x}==}yx pp p??~x`cc   8 @ ??'  < <9??33 !0p~N'OOO? ?????~xP  χ??'  ~:0 ?? ?_?f>   64 < <D3w2CTewFLICKERS.37 {D ^(- ??? HX0??????@? ??>  ??   ???00 (??>>    >><x+`  ??8?  =##cG??? ?? ?@0???>   00pp!?`?  ?? %  >  @@  >><x+ ??( ?C '/ ??????>?????|?x ?|8??%??% > <x+d?OO_? >?M??6?1????94o3w2CTewFLICKERS.38 kZ *57??; ?~?x?>|<>  `0? ~p<`  < x ?0??|??H|<??   |? ??p0 ` ??16?Ffxp0@@@@?? ?`0??? <||xxp a   @????I~p|x08pp`wp0 ` ??10  ? Nn ?~?x?> ??? ߀ ~? x0?H   ?!p0 `J ?;?> |<>@`0Q??<E??8||3w2CTewFLICKERS.39 hd ?? ??? g????"@08> bb4  ?̀? @?!s(` 8?   > ?N@  0p  ? }< ? >> x??? ??``? /?߀aa ˃? p#  > <` Q@@p  0p  ?w?~~? ?x8? g???? ? ?~@ 8 aa  ???@?I  ?R?   0p N ?? 00 ?Ncc??^8 <<>>~~? %3w2CTewFLICKERS.40 xT ??  ? ???ǚ''B<<??ǀ?????>>~  x8 ?  >`?MR8p0 `@@0?p   ? " ???? ?eu||? pxx<? ?>>~?   > <?OG8p0 `@@0?p p?>???< 8eu||8?  0pxp  `?RQ8p0 `@@0 ?? p  > ????? ????8? 5%3w2CTewFLICKERS.41 C +g q???? ?`8` O?~?<?@@  0<p ?  ( ?  A>><xxFl`?4||< p~????????`` @ `pxx` ?p0  8>??o@?<>?>8 > ?  ????  ( ?'>><xxFg`?4||<  O??`o? oǿ_? ?l@|<|????? 8 (8>><xxPb??   `p` @ `pxx` 7  ? >>?p'? 2`:>3w2CTewFLICKERS.42 4 ? -|p8000`????? 888p8?>?p  |?@? >   |1 M?  ? ?;{{s ; ?? `0p  ?? ??  ?? >0   - A? 8<||>>||??!`00a8#!|||??? <   - H??8<|5 ?>?8  h~?< 1=A3w2CTewFLICKERS.43 wM @D ;? ? ~sqq?8    0`@??og`?  ~~n? xx|<8x @ ? ?  #~?xx<<4 00|p@` ??.0pZ ?;?   889?     0` x~ ??????Ccqq1?o ? ??`   @ ?? ?& 0??O~ `? 8O !??@ aMoo1?><~ ?``@   00` x ?wg l~~>>~  ~~pq008 00p`   ? |)? ?& ??8 8O ?R ~sqq??~U ~~po?p? E ??/??4 3w2CTewFLICKERS.44 gq ~??. +?7???9"0<< ???? &?????||~xx ?`pK?  ?????I|? ?~m!= ~??E+??##A(@wGG????>?|??K `Y?? 888 5?>|T+?? ~??. 8pI?8c|F+{c3??~</8 p88?Gp# ??Zpp`88?>|??b >?#?h >~ ??+??~??>U+ 83w2CTewFLICKERS.45 h#q >x7*? ??"??????0 y9y|<? ? ??````?  7#??8~?????Rp8  ?=9*??? ???? ?|<??"0 ?q`?`?`````p``0 C.????? u888  p`@r|??|<4 #FH ???@????[8~`@@0 <|xUp p`@r?xMB? ????|<V t?8~?tp < 8> q$3w2CTewFLICKERS.46 x$Yj  ?~y?  @  @11 ? ?  ~>>{?` @> ~|p8 ???À~ ?GG!1 ??????v ????~~!??p0?     ? @ @?v ?>0>`?~~>>m88<~???c ?"3w2CTewFLICKERS.47 )E|????o???> 8? ? aa`>   ?>? ~| ?~~~~~|*8x|<>>||x!~n??? >?@  ? ?`?=??   ?  ??? 8|?< ??x|<>`p8<>||x&??x??n?????  0!#!  >? ~?< ??<??x#t> ?? ??==<<9p ???b8 3w2CTewFLICKERS.48 &; p? |?~=??>~?|?F 08|{||?~=~? 5?>?E????  ? ???  ??xxp7? =|0> ?p>p~p~~|8K ?? ? 0 ?? ?? ?????????O???   " ~~>^ ?G???~p>p~p~~|8L  ???? ??? ?<`? ?~??0   ~~>^ ??=|x8Z|??  0 ????@ 0?~ ????>  j0>?p>p~p~~|8V  f0??lF3w2CTewFLICKERS.50 ~K 0?p_?  ?<????  xx88 8? ?'????? ~| ??? ??? ? 2??437pd??À <|? ? @~?<?????????0 !??s4 ,? g ? #/8? 'pp ?<?? = !" 5 ;?pg ?>8z8???yN3w2CTewFLICKERS.51 B  8pp   ??S @? =???? 8 8( ?0 p8>><|<8 !?p?   k?   ??X?? ? >~~??  ?Ȁ !?  xpp ? ??? ? " 8  @k ?  i ??C00 ?4 ? ??| x80# Vx ??a@8 ? ?????   K3w2CTewFLICKERS.52 @%  J?` ??????  ? ?? ?0 O ? ?>| ??j ?  P??????> p`?? <?@ ` x ?j ? i?? ?? |)? ? x0< # xp `8<88  v [???? ?<????F3w2CTewFLICKERS.53 @(  &? ???? ???   `  ? ??  ????????o??j??  &?? ~|xxp``@`|> ?-  x?????o??9(?o`  p4   ?<>0  ?,0  &x 080 G2 |Y? ???????o??D3w2CTewFLICKERS.54 A)? ??K ?? ? ? ?8x8 ? ?# ??x ??? ??2 ??? 80`  `?     ??x<3?```  @ ??D `?  F ' Y3? ??\8x8  ??x3w2CTewFLICKERS.55 ~E,???????@@?I ?< ?? ?? @À?<|   ?? ?"????{;? `s ???????@@?H ?  x ? 0   ????{;?I1 `s ?``(?T ?Cx<| 0A *b1????????`?????{;? `K3w2CTewFLICKERS.56 zR"????????A~O ???| ?~ ??????ǀǀ? -   N@<m ?????????A~^ ~? 00`2??? ? 00 4  ??;?<<k ? +>_  ?`0B?88| 00? *?8;?<X????????k?~x?@_3w2CTewFLICKERS.57 {M ?????xJ>|? ???? "x|~? ? |?? Nx??^~??=xp} ????x"?  ? ?? ?&?? ?? x9 ??DR~??=xp<=  0|#?   ? ?? ?@` 4?  ??Cx9 ?N^ CG????xVyx|~?VMx???D[??=xpS3w2CTewFLICKERS.58 >"????!~?????????????!  ? ?| E ~x0<||88b ?????? ???' ??? >> ???@ 1 ~x0<||88;" ?  p~(?? ????9?'> @I1  @` @<???Q????? >??? x<<||88;0 3w2CTewFLICKERS.59 5|? >y????'&~? x?<  ????  p???xpp{>?<<|~~????'?    @,???   ?x00<8p@0*n? <<|Q? ?85???#p px88  <*n#x~????O??  ???<8p83w2CTewFLICKERS.60 9 ???   ?< ppx>???%  8>ǀ? ????!  ?0? ?   ??   >?Gx? C|| ? 8 |>? ? W ??@? p@~88< 6 ?(? |x8H%` px>????> x|/   <~?x3w2CTewFLICKERS.61 xS|?? ????c ?"0`?GCc `p  ? &#??<?^< ? ??????` ?? ?~ !???U< ? ?? ~? @ >|  ??~~<0@~??~L0h? $????| ?7>| ??3`pQ #??3w2CTewFLICKERS.62 eq i? ??~@ ????????????? >3 << ?0 pp x` "??L?/ ??ND??Z??x<%??????????? ~>,~~ Ox 80p``#>?I??CD ??|?x<)  x~~5???p~ M ```p xB `x<pp80 B 4 `00pp88  ??LD d?.px8`08 , ???????Rqp x` ?3w2CTewFLICKERS.63 hk ,u\  ??????p????#? |??x@ ???0 p8`x@<8߀????,?9?x A?{x|??B   L????0p   @ +p ?#`5p`@`|| ?#???B?x Awx|??Aj??? 8> ???0 <``*p px xx~?-   x~~?  ???B@`0 7v ~008<8 x0p@A l?>pR |?x?@<;?????x883w2CTewFLICKERS.64 tM Dq?@ ?? x.??#?g`???|>??x0 x||`w!x4 |<8px~??||<<$ ?? :?? ?g? ! p 0xx$@ wE  2 |<8pFux~??||<<$ ???> ??~? <px0xx$0`@1? x||`px8|<`p   ~>{x3Ut?0@#p@??  ^? x0` w@ ?1 |<8pA |3w2CTewFLICKERS.65 '<" p@` 088?? ? 8? ?????  ?<??   '? ? x @` 0??p00?? ??<???p  p < 0 `@p0 &~? ??$?p00??<?w    %8 <??< 0 x<<>>pp`@ _??& ~ ?? xx??? ! 8?5 @??p`@ `@> ?3w2CTewFLICKERS.66 #<x<x|?? ?? >p??@p8<<``x<???!?pp0ǿv@00  ? ??E A??!{;?? ??? ?8??C?? p?0p000   ? ???? L ?  < ? >?~?>>?<| `x<??? p?&0?p@;@pp>0_?   E  )x<??A?p? ??.? ? v0 X<?v3w2CTewFLICKERS.67 zN Z&/??-?????? >??|<???>~????????  ?@     |}?0& ???9 ???????@ |? 8? ????????  < 1! > xx% ??| b ???? ????~??/<??A}|?` 2 <?X~>||8?? }-U?/????9?|>~???? A ?@ 3w2CTewFLICKERS.68 pZ p????8 ???70x?? |??  ???q'?? $?``v$?  ? 8?0" ~??xx<<???,???? ???58` 5><~??xx<< 80p? #?;?? 8?/x?? ??&????xpAbA&w?  ?>@$ ?,?D8|???pQ   h3w2CTewFLICKERS.69 vLz%-?B?>?|>o~! ;>>?? |?    |~~ ?2 x80, |>?5? ??p~~ ~ ~??????*0 > #?@`)m% =? x80,?߀ &>>40? ?1x|?~?2`0 ?& ???    ?$?? |xs ??0?? @ x x88 $|p08 tpp0  @` ? p `p 07p@>||o ??  >? = ? #????? x `@@.C@p0' `x<||G& ?? |   ? ?889 ????? ?  08??)|p0x0p000pp?    @p0'|???H0 ?? ?\8 9?593w2CTewFLICKERS.71 ?2) ? $ >~bb      ??  ? p xx<|||||>x>pp`@@  p`@`@    ??9  ?`@p 0? `?o ? 8x|<<~f"> , ~?$Gw{~||xpp`@@!ကss `x  &0`)) ?>??/ 3wwgg0?o ? 0",  ? ?@ <|??!ကss@瀟   ) @ >??? ??o#| "  [   o 7 ?>?????F3w2CTewFLICKERS.72 2  ???? ?   |~?# ǃ!a?>><???????? ~><<????? @ 080  ?~~~~>>?>>>  `>@```N   ?GGC ||1'|>??y????? +  <?> ??`> `@UN ??  ?   ~?sAg|>?>< 8????~~~~>~>>>>>><<<?????` >??II8??? ~~~|~?Ǐ?  ?????*??? ~~~~>~>>>>>><<<0p>????]H3w2CTewFLICKERS.73 .  x??????? ~???? *=;?pq??@@p@C??  < @@Ac   @p~80p` ?xxp  088? < ~??"<'q`@ @p? ? ( <<|  `p@@ `O  ??80p`@   ?????? ? ???>Î? s???>| x8008@@  ǀ?? +? ?????  pp``?  ???=??* <>~|<8???#3w2CTewFLICKERS.74 3 B'???? ???? ?~8888p?   @0  r>  0?| `??("O @ 80 #??~ ǃ? @`p0 x @?p <<||>~8|?? <0`(#O ???? ?? ???~|x8pa78>8|~? ? @&>|<8|px?  ~? ??~xxAg??  s ?? |~?3w2CTewFLICKERS.75 7 J' ? ??  O`p8??? ~  ? 0p??  ??~~>? ??,1 2 7#?0 @ ?<p>~`#aa @ 8?? ???~~>><2<6200 `*  ??   ?>~|>~|?> `p8??@x> `# ` ?> 88 ? ?'M !!  ??>? @~p@ ?>   ???~~>>Te3w2CTewFLICKERS.76 1 ?>|x???? >>|>| $c088x|?7D?? p8<???? 0px ``???08x~??>~?  ?+"?&xx88 ??~??? `??< p8???p>~ p008 @ @@ ?p~?110 p`? ?? ???>>|>|&c~080p?? ? p008   ?????>~||?|    ?? ??~???p8? ??`????~?3w2CTewFLICKERS.77 ,   >~xx??  ???  pq?? ?  ~8|#p?p?pp0  88|p>|$ ~`&  G 0??*$?(s    0 `` >>8xq?  ~>????? @ ??& ?988x@p    ?? ???? )o w@q>?0?>~>>|p>| @  ~pp5 ? 0 ? x >x& ~> ??~>>>>>@~~|xp&3w2CTewFLICKERS.78 )X 0q<>???~@?~~<8x`08 ?@xx|xx`?88`p @ x}}<||><xa@@@<?I?`p  81? ? 08??#懎``>`>`~ |q?`ǟ? @ x0`}}<||<<??` `I  ??? ?? ? ??pp8   #`{3? 606pnޟޟ߼<?8`8~ xa~xppG ?? 80  ????? ? ~~x8~?H~xp0E3w2CTewFLICKERS.79 0 ?   <? 0p!G'   00` ?1 #v0` ?|@ `????p x`?113 <0p 88>ހh@@<``<~>?8p? 8xG  ?&??~A?? 3#g |>0` ???? ?? x8~>><<||?>??`?>  ``~>??;{? ?? ?O8   00`*@w?~09 `p?>xx<< `?<lL||xppxxx `0 8p  8x@ %??? x0 `08x`?????x0ppx?3w2CTewFLICKERS.80 B L/?E0  @??8~?? @x>><<88<<||0 p ??pp|x8`??8 ??E?`pp? ?_?00 ?`08  @>8<08 >??>>~~A?0@|| ?@???6 ~|<|x8???pPJ? ? 0`@ 0x? p?????????><`  >@n`??>?||?C ??~x$ p`8 ??R??  0@0x ????????><88x|??<p@???Xp|x8 ??3w2CTewFLICKERS.81 FzW; ?>`D?????  ?<880`p|xx`0pxp3>x`  |~~~~|| ??? ???:% ?8 ` `0 d; <<?'`???? ?  `ppx<<880`p`@@`` |x|x9"?p~ ~~~|`||<<88>  ??? ? ??9 O ??> <|< p? ?s  ???%? ?`"<<888xx?>x`<~<Er8 `??p 89 ?p<|<~~~~|<8> ? ?? ?3w2CTewFLICKERS.82 6 |  ????      ???? 0 ||>???  88|80`|`    ?x p008 ?%?>??`    ????!O  0 8p 80``@@`` fv~zz~zzx80`d  ?x?==88x|p`x8   '?  ?><l~  y?0x9@@  pp`p  88x|x- D8{o??x88p|``px80` >?~~ ?x3w2CTewFLICKERS.83 ,L 8 ?98 ?????   X@00` ```@`<8?? ?8 Ax ??~~~~|<'GGρ`$ '##cs ?{0 0? ? ??>$Oϧ??`?```qq??  8pp3#@0??~~~~|<<<|?|0~'  qcgF,x0=??  ? 00 bBDF@ %>  g8gp{ϟߟ??>  >?&<g.  >~~|~x|<<6 ~|xy3  ?s8? ?~8????    < ??~~~~|<2?>'3w2CTewFLICKERS.84 / ?spac????1 &??||;?x0?8 @|>?? ? >???>>>>><|||<$   G<?><zn130px8?? xxc?8?x0?$?? ? g? ??3????|<  >?w?90 @x88G bNORRqa!8??>? ? ?  &" ? <  @$~&8x@  J ?spmo?? ?{sgpx0?) ~|| ? >??2  @x88D3w2CTewFLICKERS.85 9%$>x8`??{R 7????1??????1???O80! ~><'Gǀπ&8~~>< ?K !>x8`??{J;{s3s?A=??? ??`a~c'~  p`p ~ ~88&~><??K|xxWH,,$dDDL  ?"?% `` |  p ??{U 7? ???><2 p`p ~><J8~~><??H3w2CTewFLICKERS.86 @%??|8`?}pT8????? ?   ??'  ? ~~>> 333syx$ pp ?;  ??|8`?}pLx? ?  << ?????> xD~~>>xx  p||px?L<@` `x8 "?%    S~';H<??}p^ ?4????> ~~>>L pJ3w2CTewFLICKERS.87 :z>'p??~?pK  ? ??? 0?'  ?~???# >??L??'p??~?pK?ppx8?? ??? ?0`  ?<<62310p$ ??L?? \ 0 %`?%? `1 ??Ul0pU' ??~pX?????? 4 ?O>??L. .. MAKEFILE ALINE ASM]BLASTHLIASM#CLOCK ASMCOLORIT ASMDELTAS ASMGFX ASMLISTEN ASMJ[MULTIOPSASM* RUNDOWN ASM%SOUND ASMTMULT ASM ABLITS C  CURSORDAC &CYREPLAYC $P&CYRFILE C 0bDURATIONC 6xEXAMINE C ;DFEELMENUC @ FILEREQ C D INIT C GCINPUT C KMEMORY C M.NAMES C SPRIM C Tt PULL C WPULLDATAC ^QBLOCK C eQPLAY C k0QSORT C o CFLAGS = -n -Ie:\include O= ablits.o aline.o blasthli.o clock.o colorit.o \ cursorda.o cyreplay.o cyrfile.o \ deltas.o duration.o examine.o feelmenu.o filereq.o gfx.o \ init.o input.o listen.o memory.o multiops.o names.o \ prim.o pull.o pulldata.o qblock.o qplay.o qsort.o qstatus.o rundown.o \ seemenu.o seq.o sound.o spl.o textbox.o \ tlib.o tmult.o tracks.o avs.prg: $O ln -o avs.prg -f cyreplay.lnk -lc -lgem @?642AN 2003NTOJ@g0@7`0@AN"?0432405NTOJ@g0@;`0@?4452405NTOJ@g0@;`0@?6422405NTOJ@g0@;0@5`0@AN"?0432602NXTOJ@g0@50@7``0@?4452602N$TOJ@g0@50@;`,0@?6422602NTOJ@g0@5`\RDDn(L|8NuH>A75N BCGͬI KiMTLE,`xC`0@AN ?0432A200@03NnTOJ@g 0@70@?4452AAN 200@03N:TOJ@g 0@;0@?6422AAN 200@03NTOJ@g 0@50@AN ?0432; :ts=10 dseg public _aline cseg public _ainit _ainit: move.l A2,-(A7) dc.w $a000 move.l (A7)+,A2 move.l A0,D0 rts public _ablit _ablit: movem.l A2/A6,-(A7) move.l 12(A7),A6 dc.w $a007 movem.l (A7)+,A2/A6 rts public _atmouse _atmouse: move.l A2,-(A7) dc.w $a00b movem.l (A7)+,A2 rts r0@22mht AC /!/!?!C /!/!?!C /!/!?!r C /!/!?!C /!/!?!C /!/!?!C7RANS@gAjN By!r` 096fTNNNS@gAjN 096gNrAjN NxAN NAN AN`T$_Nu?/ $HrpN6BC`20HpN6RC20f$_6Nu/ / O ; :ts=8 dseg public _cscreen public _lmasks public _rmasks _lmasks: dc.w $ffff,$7fff,$3fff,$1fff dc.w $fff,$7ff,$3ff,$1ff dc.w $ff,$7f,$3f,$1f dc.w $f,$7,$3,$1 _rmasks: dc.w $8000,$c000,$e000,$f000 dc.w $f800,$fc00,$fe00,$ff00 dc.w $ff80,$ffc0,$ffe0,$fff0 dc.w $fff8,$fffc,$fffe,$ffff cseg public _blast_block ; blast_block(x1, y1, x2, y2, color) ; draws a filled block from upper left corner x1 y1 ; to lower right corner x2 y2. first_param set 11*4 x1 set first_param y1 set first_param+2 x2 set first_param+4 y2 set first_param+6 color set first_param+8 _blast_block movem.l a2/a3/a4/a5/a6/d3/d4/d5/d6/d7,-(sp) ;a4 points to the hline associated with this color move.l #hline_table,a4 move.w color(sp),d0 add.w d0,d0 add.w d0,d0 ;turn it into longword index move.l 0(a4,d0),a4 ; a4-> color based hline routine ;d7 = lines = y2-y1+1 move.w y1(sp),d6 move.w y2(sp),d7 sub.w d6,d7 add.w #1,d7 ;set a1 = screen address of first hline move.l _cscreen,a1 move.w d6,d0 mulu #160,d0 adda.l d0,a1 ;a2 and a3 go to the mask tables move.l #_lmasks,a2 move.l #_rmasks,a3 ;get line endpoints move.w x1(sp),d6 move.w x2(sp),d3 ;a1 = line_addr + ((x1>>2)&$fffc) move.w d6,d0 asr.w #2,d0 and.w #$fffc,d0 adda.w d0,a1 ;d5 = count = (x2>>4) - (x1>>4) - 1 move.w d3,d5 asr.w #4,d5 move.w d6,d1 asr.w #4,d1 sub.w d1,d5 sub.w #1,d5 ;mask out where in word endpoints are and.w #$f,d6 and.w #$f,d3 ;word addressing of mask tables asl #1,d6 asl #1,d3 ;bra zblast_block bra zbblp bblp move.l a1,a0 move.w d6,d2 move.w d5,d0 jsr (a4) adda.w #160,a1 zbblp dbra d7,bblp zblast_block movem.l (sp)+,a2/a3/a4/a5/a6/d3/d4/d5/d6/d7 rts hline0: ;if it's all in one word and the masks together and set it! bpl hwords0 move.w 0(a2,d2.w),d1 and.w 0(a3,d3.w),d1 not.w d1 and.w d1,(a0)+ and.w d1,(a0)+ rts hwords0: ;set first word move.w 0(a2,d2.w),d1 not.w d1 and.w d1,(a0)+ and.w d1,(a0)+ bra hloopz0 hloop0: clr.l (a0)+ hloopz0: dbf d0,hloop0 move.w 0(a3,d3.w),d1 not.w d1 and.w d1,(a0)+ and.w d1,(a0)+ rts hline1: ;if it's all in one word and the masks together and set it! bpl hwords1 move.w 0(a2,d2.w),d1 and.w 0(a3,d3.w),d1 or.w d1,(a0)+ not.w d1 and.w d1,(a0)+ rts hwords1: ;set first word move.w 0(a2,d2.w),d1 or.w d1,(a0)+ not.w d1 and.w d1,(a0)+ move.l #$ffff0000,d1 bra hloopz1 hloop1: move.l d1,(a0)+ hloopz1: dbf d0,hloop1 move.w 0(a3,d3.w),d1 or.w d1,(a0)+ not.w d1 and.w d1,(a0)+ rts hline2: ;if it's all in one word and the masks together and set it! bpl hwords2 move.w 0(a2,d2.w),d1 and.w 0(a3,d3.w),d1 or.w d1,2(a0) not.w d1 and.w d1,(a0) rts hwords2: ;set first word move.w 0(a2,d2.w),d1 or.w d1,2(a0) not.w d1 and.w d1,(a0) add #4,a0 move.l #$0000ffff,d1 bra hloopz2 hloop2: move.l d1,(a0)+ hloopz2: dbf d0,hloop2 move.w 0(a3,d3.w),d1 or.w d1,2(a0) not.w d1 and.w d1,(a0) rts hline3: ;if it's all in one word and the masks together and set it! bpl hwords3 move.w 0(a2,d2.w),d1 and.w 0(a3,d3.w),d1 or.w d1,(a0)+ or.w d1,(a0)+ rts hwords3: ;set first word move.w 0(a2,d2.w),d1 or.w d1,(a0)+ or.w d1,(a0)+ move.l #$ffffffff,d1 bra hloopz3 hloop3: move.l d1,(a0)+ hloopz3: dbf d0,hloop3 move.w 0(a3,d3.w),d1 or.w d1,(a0)+ or.w d1,(a0)+ rts hline_table: dc.l hline0,hline1,hline2,hline3 [0`NRGJ@k$gr oRNSG` LJk"[02ajJfAJkFRC`@ L"oRpJk /02aXOJfAJkRC`A"Hpr QB/$g<^fP$` rAag<]gT<-fgv<]f<-rAaf`2BA*RAaPgF<]g<-frAa4`J/$grFQ< BA FA02 L"oRHo/aPOJfARC`< L"oR0aJfAJk" [RCJEk0` ` L"oR0aJfAJk [RCJEk0` ` L"oR0a JfzAJk [RCJEk0` ` L"oR public _mouse_y public _pscreen old_crit dc.l 0 my_critical rts critsave move.l #old_crit,a0 move.l $404,(a0) rts critin move.l #my_critical,$404 rts critout move.l old_crit,$404 rts public _save_critical _save_critical pea critsave bra trap38 public _install_critical _install_critical pea critin bra trap38 public _remove_critical _remove_critical pea critout bra trap38 ;time_peek() ; catch a look at 200 Hz system clock public _time_peek _time_peek pea timer trap38 move.w #38,-(sp) trap #14 addq #6,sp rts timer ; return system 200hz clock in d0 from super mode move.l $4ba,d0 rts 2QL<8NuP`H06g(8$H&IJCjvJj NJ@kSCf` NJ@kSCfQC2L NuP`H<6g^8BE$H&I(o$Jj$NJ@j P`FNJ@k> F4Pg>SCf`**o NJ@j P`NJ@k F4PgSCfBQC2L<8NuBN`H8O&H(I>?Av8z0| ~ExNJ@kFRG2kNSGESDeN<+g<-f SDeNfSDeN`SDeNb QSDeN dseg public _colors_4_4 _colors_4_4 dc.l $00000000 dc.l $ffff0000 dc.l $0000ffff dc.l $ffffffff cseg public _color_lines ;color_lines - set lines # of lines to color starting at screen ; address start ;color_lines(start, lines, color) firstp set 4 start set firstp lines set firstp+4 color set firstp+6 _color_lines move.l #_colors_4_4,a0 move.w color(sp),d0 asl.w #2,d0 adda.w d0,a0 move.l (a0)+,d0 move.l start(sp),a0 move.w lines(sp),d2 add.w d2,d2 add.w d2,d2 ; x4 cause each loop only 1/4 of a line bra zcl_llp cl_llp move.l d0,(a0)+ move.l d0,(a0)+ move.l d0,(a0)+ move.l d0,(a0)+ move.l d0,(a0)+ move.l d0,(a0)+ move.l d0,(a0)+ move.l d0,(a0)+ move.l d0,(a0)+ move.l d0,(a0)+ zcl_llp dbra d2,cl_llp rts  0m 9n8CCDCGC0`JgC`C& gSH""oz80<@>JDg"LUR@JDfJEj&zRӅdR@`JfJf BYBBTO`.a 2""//?A0aC o$aO JgPLNuԂӁ@*(6ԂӁ@ԂӁ@ԅӄCvG0ԇӃCNup /rt ; :ts=12 ;_do_deltas(s, d) public _do_deltas ddregs reg d2/d3 firstp set 4+4*2 s set firstp d set firstp+4 _do_deltas movem.l ddregs,-(sp) move.l s(sp),a0 move.l d(sp),a1 add.w #32,a0 ;skip over color map move.w (a0)+,d2 move.w d2,d3 asr.w #3,d3 bra zbddlp bddlp add.w (a0)+,a1 move.l (a0)+,(a1) add.w (a0)+,a1 move.l (a0)+,(a1) add.w (a0)+,a1 move.l (a0)+,(a1) add.w (a0)+,a1 move.l (a0)+,(a1) add.w (a0)+,a1 move.l (a0)+,(a1) add.w (a0)+,a1 move.l (a0)+,(a1) add.w (a0)+,a1 move.l (a0)+,(a1) add.w (a0)+,a1 move.l (a0)+,(a1) zbddlp dbra d3,bddlp and.w #7,d2 bra zddlp ddlp add.w (a0)+,a1 move.l (a0)+,(a1) zddlp dbra d2,ddlp ddl_return movem.l (sp)+,ddregs rts ;make_deltas(screen, last_screen, deltas) public _make_deltas mdregs reg a2/d2/d3/d4 firstp set 4+4*4 screen set firstp last_screen set firstp+4 deltas set firstp+8 _make_deltas movem.l mdregs,-(sp) move.l screen(sp),a0 move.l last_screen(sp),a1 move.l deltas(sp),a2 clr.w d2 ;clear delta count clr.w d3 ;clear screen index move.w #7999,d1 ;init longword counter add #2,a2 ;skip over delta count in output array mdloop move.l (a0)+,d4 cmp.l (a1)+,d4 bne mdgot mdskip add.w #4,d3 dbra d1,mdloop bra mdend mdgot move.w d3,(a2)+ move.l d4,(a2)+ add.w #1,d2 move.w #4,d3 dbra d1,mdloop mdend move.l deltas(sp),a0 move.w d2,(a0) move.l a2,d0 movem.l (sp)+,mdregs rts ;calc_dlt_size(screen, last_screen); public _calc_dlt_size _calc_dlt_size clr.l d0 move.w #7999,d1 ; # of longs in screen minus 1 move.l 4(sp),a0 move.l 8(sp),a1 cdlp cmp.l (a0)+,(a1)+ dbne d1,cdlp cmp.w #-1,d1 beq end_cdl addq.l #6,d0 dbra d1,cdlp end_cdl addq.l #2,d0 rts  @f 3!6`$ @g @f3"6` o4C0 O$ _"_NupBB?<JPjWHW//ajPO0 ]HNu#9Nur x@W1J x @W!P!P!P x@W1hJ x @Wf"P#xP#xPNur x@W1HJ x @W!P!P!P x@W1J x @W!P! public _cscreen ; zero_screen(s) public _zero_screen _zero_screen: move.l 4(sp),a0 movem.l D2/D3/D4/D5/D6/D7/A2/A3/A4,-(A7) ; save the world move.w #200-1,D0 move.l #0,d1 move.l d1,d2 move.l d2,d3 move.l d3,d4 move.l d4,d5 move.l d5,d6 move.l d6,d7 move.l d7,a2 move.l a2,a3 move.l a3,a4 adda #32000,a0 cl_lp: movem.l D1/D2/D3/D4/D5/D6/D7/A2/A3/A4,-(A0) movem.l D1/D2/D3/D4/D5/D6/D7/A2/A3/A4,-(A0) movem.l D1/D2/D3/D4/D5/D6/D7/A2/A3/A4,-(A0) movem.l D1/D2/D3/D4/D5/D6/D7/A2/A3/A4,-(A0) dbf D0,cl_lp movem.l (A7)+,D2/D3/D4/D5/D6/D7/A2/A3/A4 rts ; copy_screen(source, dest) 32000-byte block copy public _copy_screen _copy_screen: move.w #200,D0 cplines move.l 4(sp),a0 move.l 8(sp),a1 movem.l D2/D3/D4/D5/D6/D7/A2/A3/A4,-(A7) ; save the world bra zcp_lp cp_lp: movem.l (A0)+,D1/D2/D3/D4/D5/D6/D7/A2/A3/A4 movem.l D1/D2/D3/D4/D5/D6/D7/A2/A3/A4,(A1) movem.l (A0)+,D1/D2/D3/D4/D5/D6/D7/A2/A3/A4 movem.l D1/D2/D3/D4/D5/D6/D7/A2/A3/A4,40(A1) movem.l (A0)+,D1/D2/D3/D4/D5/D6/D7/A2/A3/A4 movem.l D1/D2/D3/D4/D5/D6/D7/A2/A3/A4,80(A1) movem.l (A0)+,D1/D2/D3/D4/D5/D6/D7/A2/A3/A4 movem.l D1/D2/D3/D4/D5/D6/D7/A2/A3/A4,120(A1) adda #160,A1 zcp_lp dbf D0,cp_lp movem.l (A7)+,D2/D3/D4/D5/D6/D7/A2/A3/A4 rts JkZ$`?<? p/?<BNAO Jk>$Ҁk8 $k0HzP <e/`/? ?<@NAO Jk b Nua36pNu0<`D@| |"b;NupNu   //O4UB|"bBJ@j < fD@-CtH@B@H@&HC;0(RBH@B@H@fQBO _&Nu3!6`0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ"HJgJgJgJgJg JgJgJf SNuH0$H|g|$bGrtgJ3kSJgtJ@f"p <0f:pgb<߶<Xf(pf"`N|f<0fg><߶<Xfg.G*3d"3d&HCHCJCfԃԁd` & gSJ"L Nu3"6p` 3!6p& g"`//"4UB|"bZC"t&HCJCf&HC;0NRBH@B@H@f`$?&8BCHC06H@0HC;0&RBJf8QB" _&Nu3!6`0123456789abcdefghijklmnopqrstuvwxyz/ G9 g/ &S?<INA\O`G9 g/ ;:ts=8 ;tell Z tab = 8 spaces far data ;tell Aztec compiler to do absolute addresses **************************************************** * * * (c) A.Racine 2-Bit Systems Ltd 14/7/87 * * (c) Jim Kent Dancing Flame 5/20/88 * * * * date mod * * 14/7/87 Make basic sounds clearer * * 19/7/87 Prevent mouse from crashing basic * * 5/20/88 JK hacked in delta playback * **************************************************** * * The goal of this module is to play digitized sound while displaying * a Cyber Sequence animation. The sound is done on an interrupt. * The interrupt happens at the sound sampling rate which will range * from 5Khz to 30Khz. The faster the sampling rate the less time there * will be for animation, but the clearer the sound will be. 20Khz * samples seem to be a good compromise. * * In order to make the interrupt routine as fast as possible, it is * necessary to devote a few registers just to the interrupt so that it * won't have to save them to the stack and reload them from memory. * Registers d0,d6,d7,a2,a3,and a6 are used by the interrupt. * * The animation routine expects the first frame of the animation to * be on the screen already. It's passed list of delta frames. Each * frame starts with a 16 bit count of the number of deltas in this frame. * A count of 0 means it's the last frame. Next comes the deltas. Each * delta is a 16 bit offset into the screen followed by a 32 bit value to * xor in at that offset. * * The sound routines expect a series of 8 bit samples. The sample count * is passed separately. The samples are signed value. This is a slight * modification of STreplay samples which are unsigned. It plays back just * a tad faster this way, but a small routine to subtract $80 from each * sample must be called after loading the replay file from disk (not in * this module). * * The parameters to this routine are passed in the code space rather * than on the stack. This is a wierd way to do it that happened because * this is a hack on a file that was to interface with Basic rather than C. * Sadly it is harder to use this routine with basic these days 'cause * it's not position independent. ***************************************************** * * MFP equates (bits in the timer chip) * mfp equ $fffa00 iera equ $07 ierb equ $09 ipra equ $0b isra equ $0f imra equ $13 imrb equ $15 vector equ $17 tacr equ $19 tadr equ $1f isrvec equ $134 * * hbase equ $ff8000 * base for doing movep's with 16 bit offset cmap equ $ff8240 * hardware color map pscreen equ $ff8203 * hardware screen * * the sound chip * snd_chp equ $ff8800 chip address screg equ 0 chip register select scdata equ 2 register data * * the keyboard & midi acia's * kbdcont equ $fffc00 kbddata equ kbdcont+2 midcont equ $fffc04 middata equ midcont+2 * bdos equates (trap #1) f_super equ $20 Cconis equ $B * xbois equates (trap #14) ikbdws equ 25 public _just_sound _just_sound move.w #$2700,sr ;no interrupts until set up finished move.w #1,slpct ;store # of loops move.l slist,d6 ;get start of sample move.l d6,a6 ;load next sample register add.l vlist,d6 ;add length of sample move.l #ireplay,isrvec move.b #1,inuse ;Let rest of world know sound is happening. move.l screen,d1 ;get frequency bsr setfreq ;tell mfp to start generating interrupts move.w #$2400,sr busywait tst.b inuse Sample finished ? bne.s busywait Busy-wait until it is! rts ;do a relatively fast full screen copy cpscreen move.w #999,d1 move.l screen,a5 cpslp move.l (a0)+,(a5)+ move.l (a0)+,(a5)+ move.l (a0)+,(a5)+ move.l (a0)+,(a5)+ move.l (a0)+,(a5)+ move.l (a0)+,(a5)+ move.l (a0)+,(a5)+ move.l (a0)+,(a5)+ dbra d1,cpslp rts ;move vbcmap to hardware clut registers set_cmap move.b #1,cms ;set flag to say have set cmap move.l vbcmap,a0 ;get pointer to data lea cmap-hbase(a2),a5 ;and pointer to clut move.w #7,d1 ;move 8 longwords scm move.l (a0)+,(a5)+ dbra d1,scm rts snstart equ 0 snsample equ 4 snscount equ 8 snfreq equ 12 snloops equ 14 snstruct_size equ 16 vstart equ 0 vsample equ 4 vscount equ 8 vspeed equ 12 vloops equ 14 vframe1 equ 16 vstruct_size equ 20 *ani_vblank * a psuedo vblank handler * actually is called frequently as the main loops polls to see * if it's in a vblank ani_vblank ;free regs - a0, a5, d1, d4 tst.b cms ;if haven't set color map set it. bne inctime bsr set_cmap inctime move.l _time,d4 ;increment time add.l #1,d4 move.l d4,_time nextsn move.l slist,d1 ;check slist beq nextvl move.l d1,a5 cmp.l snstart(a5),d4 bmi nextvl ;here we've got a new sound sample to set up move.l snsample(a5),d1 beq endslist ;NULL sample = STOP move.w #$2700,sr ;no interrupts until set up finished move.l d1,sample ;save sample for loops move.w snloops(a5),slpct ;store # of loops move.l d1,a6 ;load next sample register move.l snscount(a5),d6 ;get count and add it to start sample add.l d1,d6 ;d6 = end of sample table move.l #ireplay,isrvec move.b #1,inuse ;Let rest of world know sound is happening. move.w snfreq(a5),d1 ;set initial frequency and bsr setfreq ;tell mfp to start generating interrupts add.l #snstruct_size,slist endnsn move.w #$2400,sr nextvl move.l vlist,d1 ;check vlist beq novlist move.l d1,a5 cmp.l vstart(a5),d4 ;see if reached start time for this one... bmi novlist move.l vsample(a5),d1 beq endvlist ;NULL sample = STOP move.l d1,dlist move.l d1,dpt move.l d1,a0 move.w vloops(a5),vlpct move.w vspeed(a5),d1 ext.l d1 move.l d1,speed move.l vscount(a5),d1 move.l d1,dcount move.l d1,dlcount move.l (a0),vbcmap ;put up initial color map move.l a5,-(sp) bsr set_cmap move.l (sp)+,a5 move.l vframe1(a5),a0 ;put up initial screen bsr cpscreen add.l #1,_time ;copy takes roughly 1/60th sec. add.l #vstruct_size,vlist move.l #twait,(sp) ;jump direct to twait on return... novlist rts endvlist move.l #0,vlist move.b #1,vdone rts endslist move.l #0,slist move.l #inull,isrvec ;interrupt vector to nowhere... move.l #0,d1 ;low frequency interrupts (for keyboard???) bsr setfreq bra endnsn ;go back to rest of 'vblank' code tend clr.l dpt bra twait public _aniwait _aniwait clr.b vdone clr.l dpt clr.l _time frame: move.l _time,d1 ;go get the time and add a little to it. add.l speed,d1 move.l d1,dtime ;dtime has time to go onto next frame getloop move.l dpt,d4 ;get pointer to the deltas beq twait ;if no animations just do vblank processing sub.l #1,dcount bpl noloop ;go to gscreen if not at end of deltas move.w vlpct,d1 ;grab loop counter sub.w #1,d1 beq tend ;if no loops left we're outta here... move.w d1,vlpct move.l dlist,dpt move.l dlcount,dcount bra getloop noloop move.l d4,a4 add.l #4,d4 move.l d4,dpt move.l (a4),a4 move.l a4,vbcmap add.l #32,a4 move.l screen,a1 ;get pointer to the screen move.b #0,cms ;set flag that haven't set color map this frame move.w (a4)+,d2 ;Load delta count for this frame. If 0 done. move.w d2,d3 ;Going to do first bunch 32 deltas at a time... asr.w #5,d3 ;so do a cheap divide by 32. bra zbddlp ;and branch to end of 32-at-a-time loop bddlp ; Will look at hardware video beam register to see if we're in vblank. ; Need to do this rather frequently ... every 32 deltas in fact. ; If it's the start of vblank we'll increment our time variable and ; go set the color map. dc.w $034a ;movep.l pscreen-hbase(a2),d1 dc.w pscreen-hbase ;(silly Aztec assembler doesn't know about movep) and.l #$00ffffff,d1 ;mask crufty bits... cmp.l d5,d1 ;see if we've been here before... beq utime0 ;not 1st time in vblank if we have move.l d1,d5 cmp.l screen,d1 ;Test if in vblank. beq invblank0 bra utime0 invblank0 bsr ani_vblank utime0 ;Now do 32 deltas adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) ;there's 8 adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) ;16 adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) ;24 adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) adda.w (a4)+,a1 move.l (a4)+,(a1) ;32 ;Here's a little loop to do the remainder of the deltas after dividing ;by 32. zbddlp dbra d3,bddlp and.w #31,d2 bra zddlp ddlp adda.w (a4)+,a1 move.l (a4)+,(a1) zddlp dbra d2,ddlp ;Now we've done the deltas for this frame. Will have to wait for time ;to put up next frame. This is slightly less time critical than the ;interrupt routine or the delta routine. We'll poll in a loop checking ;for vertical blank, and also check to see if the sound's finished. ;If the sound is done then we'll restart it. ;Check for vblank time twait dc.w $034a ;movep.l pscreen-hbase(a2),d1 dc.w pscreen-hbase and.l #$00ffffff,d1 ;mask crufty bits... cmp.l d5,d1 beq utime1 move.l d1,d5 cmp.l screen,d1 beq invblank1 bra utime1 invblank1 bsr ani_vblank utime1 ;check if time's come for next frame next_frame tst.b vdone bne doneframes move.l dtime,d2 cmp.l _time,d2 bgt twait bra frame ;If the PC's made it here then done with animation. First wait around ;to make sure done with sound too. doneframes: rts ***************************************** * the programme * ***************************************** * set up stack, memory & supervisor * ***************************************** public _listen _listen: firstp set 4+4*15 sabort set firstp+0 sanivec set firstp+2 sslist set firstp+6 svlist set firstp+10 sscreen set firstp+14 super movem.l a0-a6/d0-d7,-(sp) save 'basic' system move.l sanivec(sp),anivec move.l sslist(sp),slist move.l svlist(sp),vlist move.l sscreen(sp),screen bsr keysoff disable keyboard clr.l -(sp) move.w #f_super,-(sp) goto supervisor so can poke hardware bits! trap #1 addq.l #6,sp move.l d0,stack bsr savemfp save natural mfp conditions lea.l snd_out(pc),a3 look up tables bsr setsnd set up sound registers move.l #hbase,a2 ;base pointer for hardware move.l anivec,a1 ;jump indirect through anivec for the rest move.w #$2700,sr move.l #inull,isrvec ;mfp int. vector to simple rte ; move.l #0,d1 ;low frequency interrupts (for keyboard???) ; bsr setfreq ;tell mfp to start generating interrupts move.w #$2400,sr jsr (a1) * * This tidies the system up before leaving back to basic. * exit move.w #$2700,sr disable ints. bsr oldmfp restore original mfp data bsr keyson restore keyboard operation * * We must now flush any characters out of the key buffer before * re-enabling the interrupts since the flood of data will crash * the computer. (users with a midi device connected may need to * flush the midi acia in a similar way). * flush btst.b #0,kbdcont is a character waiting ? beq.s intson br. if not move.b kbddata,d1 read character (& ignore it) bra.s flush check for another intson move.w #$2000,sr restore ints for o.s. move.l stack,-(sp) move.w #f_super,-(sp) return to user mode trap #1 addq.l #6,sp movem.l (sp)+,a0-a6/d0-d7 restore 'basic' data rts back to basic **************************************** * the interrupt service routines * **************************************** * * a6 = pointer to base of replay ram * a3 = look up table address * a2 = hardware offset reg * d7 = scratched * d6 = pointer to end of replay ram * d0 = scratched * **************************************** * the null interrupt routine * **************************************** inull rte **************************************** * replay from memory * **************************************** looprep sub.w #1,slpct beq haltrep move.l sample,a6 ireplay clr.w d7 set up d7 to be a table lookup move.b (a6)+,d7 read from ram cmp.l d6,a6 exceded end stop bgt.s looprep branch if so lsl.w #3,d7 double long word offset move.l 0(a3,d7.w),d0 get two voices from table dc.w $01ca movep.l d0,snd_chp-hbase(a2) dc.w snd_chp-hbase stuff voice select and volume registers move.w 4(a3,d7.w),d0 get third voice from table dc.w $018a movep.w d0,snd_chp-hbase(a2) dc.w snd_chp-hbase stuff voice select and volume registers rte haltrep move.w #$2700,sr movem.l a0/d1,-(sp) move.l #inull,isrvec go to short interrupt handler move.l #0,d1 ;low frequency interrupts (for keyboard???) bsr setfreq movem.l (sp)+,a0/d1 clr.b inuse move.w #$2400,sr rte *********************************** * the system sub-routines * *********************************** * preserve the mfp registers * *********************************** savemfp move.l #mfp,a0 move.b iera(a0),mfpmem move.b ierb(a0),mfpmem+1 move.b imra(a0),mfpmem+2 move.b imrb(a0),mfpmem+3 move.b tadr(a0),mfpmem+4 move.b tacr(a0),mfpmem+5 move.b vector(a0),mfpmem+6 rts *********************************** * restore natural running mfp * *********************************** oldmfp move.l #mfp,a0 move.b mfpmem+6,vector(a0) move.b mfpmem+5,tacr(a0) move.b mfpmem+4,tadr(a0) move.b mfpmem+3,imrb(a0) move.b mfpmem+2,imra(a0) move.b mfpmem+1,ierb(a0) move.b mfpmem,iera(a0) rts ****************************** * ikbd enable/disable * ****************************** keysoff pea skbddis(pc) bra.s do_ikbd keyson pea skbden(pc) do_ikbd move.w #0,-(sp) 1 parameter move.w #ikbdws,-(sp) trap #14 addq.l #8,sp rts ***************************************** * set up mfp frequency * ***************************************** * * set up mfp timer a to generate interrupts * enter with d0.w set with a frequency number 0 to 7 * e.g. d0.w = $0002 gets 3rd mfp data from table * setfreq movem.l a0/a1,-(sp) move.l #mfp,a1 move.b #0,tacr(a1) disable timer and.w #7,d1 ensure 0-7 lea freqtab(pc),a0 get the frequency xref addr lsl.w #1,d1 convert to word table offset move.w 0(a0,d1.w),d1 & get the mfp data move.b d1,tacr(a1) lsb = control reg byte lsr.w #8,d1 shift down next byte move.b d1,tadr(a1) next = data reg byte *********************************** * enable the mfp * *********************************** move.l #mfp,a0 move.b #$20,imra(a0) move.b #0,imrb(a0) move.b #$20,iera(a0) move.b #0,ierb(a0) bclr.b #3,vector(a0) movem.l (sp)+,a0/a1 rts ***************************************** * set up the sound chip channels * ***************************************** setsnd move.l #snd_chp,a0 move.b #0,screg(a0) channel a move.b #0,scdata(a0) move.b #1,screg(a0) move.b #0,scdata(a0) move.b #2,screg(a0) channel b move.b #0,scdata(a0) move.b #3,screg(a0) move.b #0,scdata(a0) move.b #4,screg(a0) channel c move.b #0,scdata(a0) move.b #5,screg(a0) move.b #0,scdata(a0) move.b #7,screg(a0) set up channel mixing & port 'a' i/o move.b #$ff,scdata(a0) move.b #8,screg(a0) set all volumes to zero move.b #0,scdata(a0) move.b #9,screg(a0) move.b #0,scdata(a0) move.b #10,screg(a0) move.b #0,scdata(a0) rts *********************************** * block storage area * *************************************** * internal sound lookup table. * *************************************** snd_out dc.w $80c,$90b,$a09,0,$80c,$90b,$a09,0 dc.w $80d,$908,$a08,0,$80b,$90b,$a0b,0 dc.w $80d,$909,$a05,0,$80c,$90b,$a08,0 dc.w $80d,$909,$a02,0,$80d,$908,$a06,0 dc.w $80c,$90b,$a07,0,$80d,$907,$a07,0 dc.w $80c,$90b,$a06,0,$80c,$90a,$a09,0 dc.w $80b,$90b,$a0a,0,$80c,$90b,$a02,0 dc.w $80c,$90b,$a00,0,$80c,$90a,$a08,0 dc.w $80d,$906,$a04,0,$80d,$905,$a05,0 dc.w $80d,$905,$a04,0,$80c,$909,$a09,0 dc.w $80d,$904,$a03,0,$80b,$90b,$a09,0 dc.w $80c,$90a,$a05,0,$80b,$90a,$a0a,0 dc.w $80c,$909,$a08,0,$80b,$90b,$a08,0 dc.w $80c,$90a,$a00,0,$80c,$90a,$a00,0 dc.w $80c,$909,$a07,0,$80b,$90b,$a07,0 dc.w $80c,$909,$a06,0,$80b,$90b,$a06,0 dc.w $80b,$90a,$a09,0,$80b,$90b,$a05,0 dc.w $80a,$90a,$a0a,0,$80b,$90b,$a02,0 dc.w $80b,$90a,$a08,0,$80c,$907,$a07,0 dc.w $80c,$908,$a04,0,$80c,$907,$a06,0 dc.w $80b,$909,$a09,0,$80c,$906,$a06,0 dc.w $80a,$90a,$a09,0,$80c,$907,$a03,0 dc.w $80b,$90a,$a05,0,$80b,$909,$a08,0 dc.w $80b,$90a,$a03,0,$80a,$90a,$a08,0 dc.w $80b,$90a,$a00,0,$80b,$909,$a07,0 dc.w $80b,$908,$a08,0,$80a,$90a,$a07,0 dc.w $80a,$909,$a09,0,$80c,$901,$a01,0 dc.w $80a,$90a,$a06,0,$80b,$908,$a07,0 dc.w $80a,$90a,$a05,0,$80a,$909,$a08,0 dc.w $80a,$90a,$a02,0,$80a,$90a,$a01,0 dc.w $80a,$90a,$a00,0,$809,$909,$a09,0 dc.w $80a,$908,$a08,0,$80b,$908,$a01,0 dc.w $80a,$909,$a06,0,$80b,$907,$a04,0 dc.w $80a,$909,$a05,0,$809,$909,$a08,0 dc.w $80a,$909,$a03,0,$80a,$908,$a06,0 dc.w $80a,$909,$a00,0,$809,$909,$a07,0 dc.w $809,$908,$a08,0,$80a,$908,$a04,0 dc.w $809,$909,$a06,0,$80a,$908,$a01,0 dc.w $809,$909,$a05,0,$809,$908,$a07,0 dc.w $808,$908,$a08,0,$809,$909,$a02,0 dc.w $809,$908,$a06,0,$809,$909,$a00,0 dc.w $809,$907,$a07,0,$808,$908,$a07,0 dc.w $809,$907,$a06,0,$809,$908,$a02,0 dc.w $808,$908,$a06,0,$809,$906,$a06,0 dc.w $808,$907,$a07,0,$808,$908,$a04,0 dc.w $808,$907,$a06,0,$808,$908,$a02,0 dc.w $807,$907,$a07,0,$808,$906,$a06,0 dc.w $808,$907,$a04,0,$807,$907,$a06,0 dc.w $808,$906,$a05,0,$808,$906,$a04,0 dc.w $807,$906,$a06,0,$807,$907,$a04,0 dc.w $808,$905,$a04,0,$806,$906,$a06,0 dc.w $807,$906,$a04,0,$807,$905,$a05,0 dc.w $806,$906,$a05,0,$806,$906,$a04,0 dc.w $806,$905,$a05,0,$806,$906,$a02,0 dc.w $806,$905,$a04,0,$805,$905,$a05,0 dc.w $806,$905,$a02,0,$805,$905,$a04,0 dc.w $805,$904,$a04,0,$805,$905,$a02,0 dc.w $804,$904,$a04,0,$804,$904,$a03,0 dc.w $804,$904,$a02,0,$804,$903,$a03,0 dc.w $803,$903,$a03,0,$803,$903,$a02,0 dc.w $803,$902,$a02,0,$802,$902,$a02,0 dc.w $802,$902,$a01,0,$801,$901,$a01,0 dc.w $802,$901,$a00,0,$801,$901,$a00,0 dc.w $801,$900,$a00,0,$800,$900,$a00,0 dc.w $80e,$90d,$a0c,0,$80f,$903,$a00,0 dc.w $80f,$903,$a00,0,$80f,$903,$a00,0 dc.w $80f,$903,$a00,0,$80f,$903,$a00,0 dc.w $80f,$903,$a00,0,$80e,$90d,$a0b,0 dc.w $80e,$90d,$a0b,0,$80e,$90d,$a0b,0 dc.w $80e,$90d,$a0b,0,$80e,$90d,$a0b,0 dc.w $80e,$90d,$a0b,0,$80e,$90d,$a0b,0 dc.w $80e,$90d,$a0a,0,$80e,$90d,$a0a,0 dc.w $80e,$90d,$a0a,0,$80e,$90d,$a0a,0 dc.w $80e,$90c,$a0c,0,$80e,$90d,$a00,0 dc.w $80d,$90d,$a0d,0,$80d,$90d,$a0d,0 dc.w $80d,$90d,$a0d,0,$80d,$90d,$a0d,0 dc.w $80d,$90d,$a0d,0,$80d,$90d,$a0d,0 dc.w $80e,$90c,$a0b,0,$80e,$90c,$a0b,0 dc.w $80e,$90c,$a0b,0,$80e,$90c,$a0b,0 dc.w $80e,$90c,$a0b,0,$80e,$90c,$a0b,0 dc.w $80e,$90c,$a0b,0,$80e,$90c,$a0b,0 dc.w $80e,$90c,$a0a,0,$80e,$90c,$a0a,0 dc.w $80e,$90c,$a0a,0,$80e,$90c,$a0a,0 dc.w $80d,$90d,$a0c,0,$80d,$90d,$a0c,0 dc.w $80e,$90c,$a09,0,$80e,$90c,$a09,0 dc.w $80e,$90c,$a05,0,$80e,$90c,$a00,0 dc.w $80e,$90c,$a00,0,$80e,$90b,$a0b,0 dc.w $80e,$90b,$a0b,0,$80e,$90b,$a0b,0 dc.w $80e,$90b,$a0b,0,$80e,$90b,$a0a,0 dc.w $80e,$90b,$a0a,0,$80e,$90b,$a0a,0 dc.w $80d,$90d,$a0b,0,$80d,$90d,$a0b,0 dc.w $80d,$90d,$a0b,0,$80e,$90b,$a09,0 dc.w $80e,$90b,$a09,0,$80e,$90b,$a09,0 dc.w $80d,$90c,$a0c,0,$80d,$90d,$a0a,0 dc.w $80e,$90b,$a07,0,$80e,$90b,$a00,0 dc.w $80e,$90b,$a00,0,$80d,$90d,$a09,0 dc.w $80d,$90d,$a09,0,$80e,$90a,$a09,0 dc.w $80d,$90d,$a08,0,$80d,$90d,$a07,0 dc.w $80d,$90d,$a04,0,$80d,$90d,$a00,0 dc.w $80e,$90a,$a04,0,$80e,$909,$a09,0 dc.w $80e,$909,$a09,0,$80d,$90c,$a0b,0 dc.w $80e,$909,$a08,0,$80e,$909,$a08,0 dc.w $80e,$909,$a07,0,$80e,$908,$a08,0 dc.w $80e,$909,$a01,0,$80c,$90c,$a0c,0 dc.w $80d,$90c,$a0a,0,$80e,$908,$a06,0 dc.w $80e,$907,$a07,0,$80e,$908,$a00,0 dc.w $80e,$907,$a05,0,$80e,$906,$a06,0 dc.w $80d,$90c,$a09,0,$80e,$905,$a05,0 dc.w $80e,$904,$a04,0,$80d,$90c,$a08,0 dc.w $80d,$90b,$a0b,0,$80e,$900,$a00,0 dc.w $80d,$90c,$a06,0,$80d,$90c,$a05,0 dc.w $80d,$90c,$a02,0,$80c,$90c,$a0b,0 dc.w $80c,$90c,$a0b,0,$80d,$90b,$a0a,0 dc.w $80d,$90b,$a0a,0,$80d,$90b,$a0a,0 dc.w $80d,$90b,$a0a,0,$80c,$90c,$a0a,0 dc.w $80c,$90c,$a0a,0,$80c,$90c,$a0a,0 dc.w $80d,$90b,$a09,0,$80d,$90b,$a09,0 dc.w $80d,$90a,$a0a,0,$80d,$90a,$a0a,0 dc.w $80d,$90a,$a0a,0,$80c,$90c,$a09,0 dc.w $80c,$90c,$a09,0,$80c,$90c,$a09,0 dc.w $80d,$90b,$a06,0,$80c,$90b,$a0b,0 dc.w $80c,$90c,$a08,0,$80d,$90b,$a00,0 dc.w $80d,$90b,$a00,0,$80c,$90c,$a07,0 dc.w $80c,$90c,$a06,0,$80c,$90c,$a05,0 dc.w $80c,$90c,$a03,0,$80c,$90c,$a01,0 dc.w $80c,$90b,$a0a,0,$80d,$90a,$a05,0 dc.w $80d,$90a,$a04,0,$80d,$90a,$a02,0 dc.w $80d,$909,$a08,0,$80d,$909,$a08,0 ************************************** * mfp/frequency table * ************************************** freqtab dc.w $0506 4.9 khz dc.w $0505 7.68 khz dc.w $0405 9.6 khz dc.w $2901 14.99 khz dc.w $1f01 19.8 khz dc.w $0802 30.7 khz dc.w $0106 dc.w $0106 ************************************ * keyboard message strings * ************************************ skbddis dc.b $13,0 stop data skbden dc.b $11,0 restart reporting ************************************** * define program storage * ************************************** dseg vars xternal dc.b 0 inuse dc.b 0 option dc.w 0 freqnum dc.w 0 status dc.w 0 mfpmem dc.b 0,0,0,0,0,0,0,0 sample dc.l 0 length dc.l 0 freqncy dc.l 0 stack dc.l 0 dlt dc.l 0 screen dc.l 0 dtime dc.l 0 time dc.l 0 lastb dc.l 0 _time dc.l 0 anivec dc.l 0 dlist dc.l 0 dpt dc.l 0 dcount dc.l 0 dlcount dc.l 0 speed dc.l 0 vbcmap dc.l 0 vlist dc.l 0 vlpct dc.w 0 slist dc.l 0 slpct dc.w 0 vdone dc.b 0 cms dc.b 0 ; ;vars dc.l 0,0,0,0,0,0,0,0,0,0,0,0,0,0 ; dc.l 0,0,0,0,0,0,0 ;xternal equ 0 ;inuse equ 1 ;option equ 2 ;freqnum equ 4 ;status equ 6 ;mfpmem equ 8 ;sample equ 16 ;length equ 20 ;freqncy equ 24 ;stack equ 28 ;dlt equ 32 ;screen equ 36 ;dtime equ 40 ;time equ 44 ;lastb equ 48 ; end fBn`.0.f$0.f=|0958Ry58@A@!`'`0.f0.fB8=|H|f*-H|>fA-H8=|` A-H8Bn`0958Ry58@A@! . ; :ts=10 ; word_zero(pt, count) ; zero out count # of words starting at pt public _word_zero _word_zero move.l 4(sp),a0 move.w 8(sp),d0 move.w #0,d1 bra wzz wzlp move.w d1,(a0)+ wzz dbra d0,wzlp rts public _zero_structure _zero_structure asr.w 8(sp) bra _word_zero ; copy_words(s, d, count) ; copy count # of words from s to d public _copy_words _copy_words move.l 4(sp),a0 move.l 8(sp),a1 move.w 12(sp),d0 bra cpwz cpw_lp move.w (a0)+,(a1)+ cpwz dbra d0,cpw_lp rts ;words_same(w1, w2, count) ; see if count words are the same public _words_same _words_same move.l 4(sp),a0 move.l 8(sp),a1 move.w 12(sp),d0 bra zws ws cmp.w (a0)+,(a1)+ bne wdiff zws dbra d0,ws rts wdiff clr.w d0 rts public _copy_structure ; copy_structure(s, d, bytes) ; basically a word copy. Bytes must be even as ; must be s and d _copy_structure move.l 4(sp),a0 move.l 8(sp),a1 move.w 12(sp),d0 lsr.w #1,d0 ; bytecount to wordcount bra zcpstrc cpstrc move.w (a0)+,(a1)+ zcpstrc dbra d0,cpstrc rts ;stuff_words(d, value, count) ;WORD *d; ;WORD value; ;WORD count; ; ;stuff value into d count times public _stuff_words _stuff_words move.l 4(sp),a0 move.w 8(sp),d0 move.w 10(sp),d1 bra zstf stf move.w d0,(a0)+ zstf dbra d1,stf rts public _copy_lots ; copy_lots(s, d, bytes) ; a copy especially good for more than 10K at a time _copy_lots move.l 4(sp),a0 move.l 8(sp),a1 move.l 12(sp),d0 move.l d0,d1 lsr.l #5,d1 cmp.l a0,a1 ble zcl_forz add.l d0,a0 add.l d0,a1 bra zclbk clbk move.l -(a0),-(a1) move.l -(a0),-(a1) move.l -(a0),-(a1) move.l -(a0),-(a1) move.l -(a0),-(a1) move.l -(a0),-(a1) move.l -(a0),-(a1) move.l -(a0),-(a1) zclbk subq.l #1,d1 bpl clbk and.w #31,d0 lsr.w #1,d0 bra zlclbk lclbk move.w -(a0),-(a1) zlclbk dbra d0,lclbk rts cl_forz move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ zcl_forz subq.l #1,d1 bpl cl_forz and.w #31,d0 lsr.w #1,d0 bra zlclf lclf move.w (a0)+,(a1)+ zlclf dbra d0,lclf rts ; copy_pointers(s, d, count) ; copy count # of pointer (long) values from s to d ; do it either forwards or backwards so don't overwrite self ; if coming from same buffer public _copy_pointers _copy_pointers move.l 4(sp),a0 move.l 8(sp),a1 move.w 12(sp),d0 cmp.l a0,a1 ble cpt_forz move.l #0,d1 ; it's backwards so move pointers to end of buffer move.w d0,d1 ; do the arithmetic as longs cause the shift might lsl.l #2,d1 ; take count out of 16 bits. add.l d1,a0 add.l d1,a1 bra cpt_revz cpt_rlp move.l -(a0),-(a1) cpt_revz dbra d0,cpt_rlp rts cpt_flp move.l (a0)+,(a1)+ cpt_forz dbra d0,cpt_flp rts N \-@ .f-|34 .N^NuNV0./NXN^NuLB@ggSBAgHJ@gHANu op`R@SJWfFNuL2/ f0NuSAB@gVSBAgHJ@gHANuNVH*n (MBn ng?.N ; :ts=8 ;word_uncompress(s, d, length) ; uncompress s of length into d ; with word-run compression public _word_uncompress firstp set 12 s set firstp d set firstp+4 length set firstp+8 _word_uncompress movem.l d2/d3,-(sp) move.l s(sp),a0 move.l d(sp),a1 move.l length(sp),d2 ;bra zwuc_lp ;DEBUG wuclp ble zwuc_lp move.w (a0)+,d0 bmi diffucl ; it's a uniq run (yuck!) have to branch move.w (a0)+,d1 ; yeah! Get to repeat d1 d0 times move.w d0,d3 ; so set up a "tower" to do it. asr.w #4,d3 ; d3 is number of loops through tower and.w #15,d0 ; d0 is where in tower to start add.w d0,d0 ; 2 bytes/tower element neg.w d0 jmp 32+same_tower(pc,d0.w) same_tower move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ move.w d1,(a1)+ dbra d3,same_tower subq.l #2,d2 bra wuclp diffucl and.w #$7fff,d0 ; mask off hi bit sub.l d0,d2 ; subtract count from size to uncompress move.w d0,d3 ; so set up a "tower" to do it. asr.w #4,d3 ; d3 is number of loops through tower and.w #15,d0 ; d0 is where in tower to start add.w d0,d0 ; 2 bytes/tower element neg.w d0 jmp 32+uniq_tower(pc,d0.w) uniq_tower move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ move.w (a0)+,(a1)+ zdiflp dbra d3,uniq_tower subq.l #1,d2 bra wuclp zwuc_lp movem.l (sp)+,d2/d3 rts \O <n0Eg`>.E`4Sm0-J@m0 URH|` / ?N(\ @f` RnSG0J@l`f>.E`4Sm0-J@m0 URH|` / ?N(\ @f` RnSG0J@l/ ??</ N\O <n0Eg`f0.L0- |gBm. H|`$`"0-S@;@m . URH|NqL N^NuNVH *n(n`":,A>. Eo>`>. 0g80n ?// N O 0H0Hє0,g0l0@l JEf/ N Xg0<`":,A0. Emx=n 0g<. 2. HHAA`<. 0n ` 0@0H0g?/ ?, NP>J@n Gf&l@ ?<0.FH/?, N P0<` 0. f0<L0N^NuNVH*n>. <.(n0, |g0, |fl 0, |f0<` ,f/ N.*X(9lBE`RE0HSF0J@m/ ?/ N8O g0, |fd gX0, |g/ N Xgl@ `:&l`R g H| f gH| f/ N Xgl@ Bl0L8N^Nu o/ f pJWf`g fS `pNuLrWf SNuNV0.f#35 #35$` nl#3V5 #3Z5$` n4o# cseg ; signed scale by sscale_by( unscaled, p, q) public _sscale_by _sscale_by: move.w 6(sp),d0 move.w 8(sp),d1 cmp.w d1,d0 beq.s ssb_trivial muls 4(sp),d0 divs d1,d0 rts ssb_trivial: move.w 4(sp),d0 rts ; unsigned scale by uscale_by( unscaled, p, q) public _uscale_by _uscale_by: move.w 6(sp),d0 move.w 8(sp),d1 cmp.w d1,d0 beq.s usb_trivial mulu 4(sp),d0 divu d1,d0 rts usb_trivial: move.w 4(sp),d0 rts ; unsigned scale by ruscale_by( unscaled, p, q) public _ruscale_by _ruscale_by: move.w 6(sp),d0 move.w 8(sp),d1 cmp.w d1,d0 beq.s usb_trivial mulu 4(sp),d0 move.w d1,d2 lsr.w #1,d2 ext.l d2 add.l d2,d0 divu d1,d0 rts END Q/,>QQԟ׆G|0QB`Rn0.g(nB`0R 2.HmB`d .6.HЃR(@ nH|0fRZ$` R$H|9n nH|0f(n R*@NqfSE .6.HЃ @B n0L0N^Nu#5 Hy5 N$XONuHy5 N%tXO 95 Nu#5 Hy5 N$XONuHy5 N$zXO 95 Nu#5(Hy5(N$XONuHy/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include #include "flicker.h" #define R_NOP 5 #define R_CLR 0 #define R_SET 15 #define R_XOR 6 #define R_CPY 3 #define R_OR 7 #define R_SCOOP 4 copy_blit(width, height, sx, sy, spt, srow_bytes, dx, dy, dpt, drow_bytes) WORD width, height, sx, sy, srow_bytes, dx, dy, drow_bytes; WORD *spt, *dpt; { struct bbblock b; b.b_wd = width; b.b_ht = height; b.plane_ct = BITPLANES; b.op_tab[0] = b.op_tab[1] = b.op_tab[2] = b.op_tab[3] = R_CPY; /*replace */ b.s_xmin = sx; b.d_xmin = dx; b.s_ymin = sy; b.d_ymin = dy; b.s_form = spt; b.d_form = dpt; b.s_nxwd = b.d_nxwd = BITPLANES*2; b.s_nxln = srow_bytes; b.d_nxln = drow_bytes; b.s_nxpl = b.d_nxpl = 2; b.p_addr = NULL; if (dest_clip_block(&b) ) if (source_clip_block(&b)) ablit(&b); } swap_sd(b) register struct bbblock *b; { register WORD swap; swap = b->d_xmin; b->d_xmin = b->s_xmin; b->s_xmin = swap; swap = b->d_ymin; b->d_ymin = b->s_ymin; b->s_ymin = swap; } source_clip_block(b) register struct bbblock *b; { WORD ret; swap_sd(b); ret = dest_clip_block(b); swap_sd(b); return(ret); } dest_clip_block(b) register struct bbblock *b; { register WORD x2, y2; if ((x2 = b->d_xmin) >= XMAX || (y2 = b->d_ymin) >= YMAX) return(0); if ( (x2+=b->b_wd) <= 0 || (y2+=b->b_ht) <= 0) return(0); if (b->d_xmin < 0) { b->b_wd -= (0 - b->d_xmin); b->s_xmin += (0 - b->d_xmin); b->d_xmin += (0 - b->d_xmin); } if (b->d_ymin < 0) { b->b_ht -= (0 - b->d_ymin); b->s_ymin += (0 - b->d_ymin); b->d_ymin += (0 - b->d_ymin); } if (x2 > XMAX) b->b_wd -= x2-XMAX; if (y2 > YMAX) b->b_ht -= y2-YMAX; return(1); } xor_celblit(x, y, cel) WORD x, y; Cel *cel; { celblit(x, y, cel, R_XOR); } copy_celblit(x, y, cel) WORD x, y; Cel *cel; { celblit(x, y, cel, R_CPY); } celblit(x, y, cel, op) WORD x, y; register Cel *cel; WORD op; { struct bbblock b; b.b_wd = cel->width; b.b_ht = cel->height; b.plane_ct = 4; b.op_tab[0] = b.op_tab[1] = b.op_tab[2] = b.op_tab[3] = op; b.s_xmin = 0; b.d_xmin = x+cel->xoff; b.s_ymin = 0; b.d_ymin = y+cel->yoff; b.s_form = cel->image; b.d_form = cscreen; b.s_nxwd = b.d_nxwd = 4*2; b.s_nxln = LRaster_line(cel->width); b.d_nxln = LRaster_line(320); b.s_nxpl = b.d_nxpl = 2; b.p_addr = NULL; if (dest_clip_block(&b)) ablit(&b); } twist_xor_celblit(x, y, cel) WORD x, y; Cel *cel; { twist_celblit(x, y, cel, R_XOR); } twist_copy_celblit(x, y, cel) WORD x, y; Cel *cel; { twist_celblit(x, y, cel, 3); } twist_celblit(x, y, cel, op) WORD x, y; register Cel *cel; WORD op; { struct bbblock b; b.b_wd = cel->width; b.b_ht = cel->height; b.plane_ct = 4; b.op_tab[0] = b.op_tab[1] = b.op_tab[2] = b.op_tab[3] = op; /*replace */ b.s_xmin = 0; b.d_xmin = x+cel->xoff; b.s_ymin = 0; b.d_ymin = y+cel->yoff; b.s_form = cel->image; b.d_form = cscreen; b.s_nxwd = cel->height*2; b.s_nxln = 2; b.s_nxpl = Mask_block(cel->width, cel->height); b.d_nxwd = 4*2; b.d_nxln = 160; b.d_nxpl = 2; b.p_addr = NULL; if (dest_clip_block(&b)) ablit(&b); } show_c_nohot(c, xoff, yoff, color) register struct cursor *c; int xoff, yoff, color; { struct bbblock b; b.b_wd = c->width; b.b_ht = c->height; b.plane_ct = BITPLANES; b.op_tab[0] = 4; b.op_tab[1] = 4; b.op_tab[2] = 7; b.op_tab[3] = 7; b.fg_col = color; b.d_xmin = xoff; b.d_ymin = yoff; b.d_form = cscreen; b.s_xmin = b.s_ymin = 0; b.s_form = (WORD *)c->image; b.s_nxwd = 2; b.s_nxln = Mask_line(c->width); b.s_nxpl = 0; b.d_nxpl = 2; b.d_nxwd = BITPLANES*2; b.d_nxln = Raster_line(XMAX); b.p_addr = NULL; if (dest_clip_block(&b)) { ablit(&b); } } show_cursor(c, x, y, color) register struct cursor *c; WORD x, y, color; { show_c_nohot(c, x - c->xhot, y - c->yhot, color); } TD-@ !TD-@$?!TD-?.B9??* $/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" static UWORD ileft[] = { 0x0, 0x0, 0x200, 0x400, 0xc00, 0x1800, 0x3fc0, 0x1800, 0xc00, 0x400, 0x200, 0x0, }; struct cursor cleft = { 0, ileft, 11, 12, 5, 6}; static UWORD iright[] = { 0x0, 0x0, 0x400, 0x200, 0x300, 0x180, 0x3fc0, 0x180, 0x300, 0x200, 0x400, 0x0, }; struct cursor cright = { 0, iright, 11, 12, 5, 6}; #ifdef SLUFFED static UWORD icross_cursor_image[] = { 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0xFFFE, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0100, 0x0000, }; struct cursor cross_cursor = { 0, icross_cursor_image, 16, 16, 7, 7, }; #endif SLUFFED RSAKEN PLANET AND ALL YOU HAVE TO DO IS SEARCHTHROUGH THE DIFFERENT SCREENS UNTIL YOU FIND THECLUES THAT POINT TO THE LOCATION OF THE SPACESHIP.PURPLE SATURN DAYERE49.95UKNOWCOLORA HIGH SPEED JOURNEY INTO TOTA3w2CTewFLICKERS.88 6?>~|   ?<<? ??? ??????_`    &   J????  ?<<?|8<@ ?????  @0  J???? xW&8(8b V+ ~<Y?|8< ?????2 ÀR  J3w2CTewFLICKERS.89 5   ???>>;@@ ? >?π ? ?  #  H   ????> ;?   >?π  ?` + H   ?? TU>   ???>W?  >>?π- P H3w2CTewFLICKERS.90 74??     ??@~<x? ? ?? ????"   #  ~~x] ?? =?@????xp ? ?? ? x D ~~x] 2BT??S?/ 0?? ?\??xp? ??? L ~~xI3w2CTewFLICKERS.91 ;j???    ?I????  0 ?  @\& xx88??s`??? =H????? ||x?????  / xx88??s{?7a3B K??Ѐ X  X$??? d??? ||x??? 0    N xx88<??s{?7L3w2CTewFLICKERS.92 C# ??? pP????  9? ???@$0 <? ~ ><~~$ ?x|~?3;<Ym???@}M????? ||<8 ????  0<? ~><?x|~?3;m20 ~N???T V00/@???pi?? ||<8????  0  ~><M?x~?3;V3w2CTewFLICKERS.93 =! ? >>>??7? ???????~p ? ?  ||< ~> Hx8 pxxp0@! ???> N??  ? ?? ?????~p? ? ||< ~>Rx8 pxxp0h ??<O??U/?pZY@` H3?> j ???????~p ? ~>Vx> pxxp0R3w2CTewFLICKERS.94 0d#?? ??ǀ?????π??!???"0 ?????? ||||<<|  ??p  ?????<8 0?????x88?????? ||||<<??pg 1 ?0>B?U* 4x $ ,???><8 0???3??? x88? ??? ||||<< ??xg )3w2CTewFLICKERS.95 + ? ? ???????  yy~>~  <p <    ? "????>~>>?? ?   <|<   <p <<0A .?? ?s ? |0  >?  C@ J?~>>?? ? xy~>~|<<q <= )3w2CTewFLICKERS.96 ) ? ??? ?|  ?x? 8?<<-1 ??? ?|???<<x`pp0App8<  ?|  ?x  >x8~??    ?x+ &?? ?T+ q  8?0`@% %<<x`pp0App8< ?  ? 8?<< 8~??  ?K$3w2CTewFLICKERS.97 0  ? ?? ??? ?`}|<? yxx88  ???? ? @@'/??  ?`<     ??><<  +??||~? ?/?$08p ~?*%T!   @@'/???~ sG?|<|  ??><V3w2CTewFLICKERS.98 B(Z?? ?<?? ~?~~?~?<><??` ??????g > @` ???~>??G ??<x80E >? ?? ? ~~~?~~>?=?<` 0p`ac ??????|x  @  ? ? ~>U ??<x80W ??<8`p<>~?><&(0`@@? `p8<'@` 0 YI`8d?   ?<>~><? ??????<(g >  @  ???~>U ??x803w2CTewFLICKERS.99 zD><??s?q???@ ?  ?~??8<<|>p0  ?. p x~><8  ???A  ???~p<8p88  @/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" #include "flicmenu.h" #include extern Pull root_pull; extern struct tlib * get_tlib(); Pull *cur_pull; Flicmenu *cur_menu; char keep_path = 1; main() { int temp; if (!init_sys()) { uninit_sys(); exit(0); } cur_pull = &root_pull; clear_tracks(); hide_mouse(); redraw_frame(); show_mouse(); for (;;) { check_input(); if (key_hit) { main_key(); } else if (in_pblock(0, 0, cur_pull) ) { reuse_input(); pull(); if (pull_hit) { sel_main_pull(); } } else if (PJSTDN || RJSTDN) { track_ix = which_track(); if (track_ix >= 0) { if (mouse_x < NAME_END) { if (PJSTDN) load_seq(); else load_spl(); } else if (mouse_x < START_END) { if (PJSTDN) temp = tracks[track_ix]->start-1; else temp = tracks[track_ix]->start-10; if (temp < 0) temp = 0; tracks[track_ix]->start = temp; hide_mouse(); redraw_track(track_ix); show_mouse(); } else if (mouse_x < STOP_END) { if (PJSTDN) temp = tracks[track_ix]->start+1; else temp = tracks[track_ix]->start+10; if (temp >= time_ticks) temp = time_ticks-1; tracks[track_ix]->start = temp; hide_mouse(); redraw_track(track_ix); show_mouse(); } else { if (PJSTDN) move_track(); else { exam(); hide_mouse(); redraw_frame(); show_mouse(); } } } } } uninit_sys(); } quit() { uninit_sys(); exit(0); } top_message(message) char *message; { hide_mouse(); color_hslice(0, 9, black); gtext(message, 0, 0, white); show_mouse(); } clear_under_menu() { color_hslice(10, YMAX-10, black); } refresh_pull() { paint_pull(0, 0, cur_pull); } redraw_frame() { char buf[16]; refresh_pull(); color_hslice(10, 21, black); gtext("NAME", 2*CH_WIDTH, 20, white); gtext("START",14*CH_WIDTH, 20, white); gtext("STOP", 22*CH_WIDTH, 20, white); gtext("TIME POSITION", 40*CH_WIDTH, 20, white); sprintf(buf, "%5d TICKS", time_ticks); gtext(buf, 69*CH_WIDTH, 20, white); color_hslice(31, 1, white); redraw_tracks(); } move_track() { int x, y; struct track *t; int color; char buf[8]; if (time_ticks <= 0) return; t = tracks[track_ix]; switch (t->type) { case TR_SEQ: color = green; break; case TR_SPL: color = red; break; default: return; } for (;;) { if (mouse_moved) { x = tik_pos(mouse_x); if (x + t->duration >= time_ticks) x = time_ticks - t->duration - 1; if (x < 0) x = 0; if (t->start != x) { y = track_yoff(track_ix); hide_mouse(); print_track_slider(y, t, black); /* erase old slider position */ t->start = x; print_track_start(y, t, color); print_track_end(y, t, color); print_track_slider(y, t, color); /* erase old slider position */ show_mouse(); } } check_input(); if (!PDN) break; } } sel_main_pull() { switch (menu_ix) { case 0: /* CyReplay */ switch (sel_ix) { case 0: /* about */ qabout(); break; case 2: /* load */ qload(); break; case 3: /* play */ qplay(); break; case 4: /* play loop */ qplay_loop(); break; case 5: /* save */ qsave(); break; case 6: /* memory */ qmemory(); break; case 7: /* clear all */ qclear(); break; case 8: /* quit */ qquit(); break; } break; case 1: /* Track */ switch (sel_ix) { case 0: /* play track */ qplay_track(); break; case 1: /* load cyber */ qload_video(); break; case 2: /* load replay */ qload_sound(); break; case 3: /* examine */ qexamine(); break; case 4: /* kill */ qkill(); break; } break; case 2: /* block */ switch (sel_ix) { case 0: /* C  ? x~!@608  08???F?~?* *\ <8xxx?   ppxx8:x @  @@  @` ` x<><8?  ?~??#8<<|>p88  apture */ qcapture_block(); break; case 1: /* Cut */ qcut_block(); break; case 2: /* Paste */ qpaste_block(); break; case 3: /* Insert */ qinsert_block(); break; case 4: /* Delete */ qdelete_block(); break; case 5: /* Free Block */ qfree_block(); break; case 6: /* Load Block */ qload_block(); break; } break; case 3: /* time */ switch (sel_ix) { case 0: /* Duration */ qduration(); break; case 1: /* Pack Video */ qpack_video(); break; case 2: /* Pack Sound */ qpack_sound(); break; case 3: /* Pack Both */ qpack_both(); break; case 4: /* Sort Tracks */ qsort_tracks(); break; case 5: /* Separate */ qseparate(); break; } break; case 4: /* window */ switch (sel_ix) { case 0: /* down line */ qinc_win(); break; case 1: /* up line */ qdec_win(); break; case 2: /* down page */  ?@x~! 3w2CTewFLICKERS.100 0   ? >???xx ?~p???{s> ,?`p08`? |?? ? x????~<<0 p08 À|>>0???? >?qpageinc(); break; case 3: /* up page */ qpagedec(); break; } break; } } arrow_keys() { unsigned char c; c = key_in; if (isupper(c)) c = _tolower(c); if (c == 0) { c = key_in>>8; switch (c) { case 0x48: /* up arrow */ qdec_win(); break; case 0x50: /* down arrow */ qinc_win(); break; case 0x4b: /* left arrow */ qpagedec(); break; case 0x4d: /* right arrow */ qpageinc(); break; } } } main_key() { unsigned char c; arrow_keys(); c = key_in; if (isupper(c)) c = _tolower(c); if (c == 0) { c = key_in>>8; switch (c) { case 0x47: /* clr/home */ qclear(); break; } } else { switch (c) { case 'l': qload(); break; case 's': qsave(); break; case 'm': qmemory(); break; case 'q': qquit(); break; case 'k': qkill(); break; case '<': qseparate(); break; case '>': qsort_tracks(); break; case 'r': qload_sound(); break; case 'c': qload_video(); break; case 'd': qduration(); break; case 'x': qexamine(); break; case '?': qplay_track(); break; case 'p': qplay(); break; case '\r': qplay_loop(); break; case ' ': qplay_imm(); break; case '*': /* Capture */ qcapture_block(); break; case '-': /* Cut */ qcut_block(); break; case '+': /* Paste */ qpaste_block(); break; case 0x7f: /* delete */ qdelete_block(); break; case 0x52: /* insert */ qinsert_block(); break; case 'b': qload_block(); break; } } } outta_memory() { continu_line("Out of Memory!"); } qquit() { if (yes_no_line("Quit Audio-Video Sequencer?")) quit(); } char * qfile(hail, suffix) char *hail, *suffix; { char *title; set_for_gem(); hide_mouse(); clear_screen(); gtext(hail, 0, 0, white); show_mouse(); title = get_fname(suffix); set_for_jim(); return(title); } qload_sound() { top_message("Select track to load with STReplay Sample"); wait_click(); if (PJSTDN) { track_ix = which_track(); if (track_ix >= 0) load_spl(); } hide_mouse(); refresh_pull(); show_mouse(); } qload_video() { top_message("Select track to load with Cyber Sequence"); wait_click(); if (PJSTDN) { track_ix = which_track(); if (track_ix >= 0) load_seq(); } hide_mouse(); refresh_pull(); show_mouse(); } qkill() { struct track *t; top_message("Select track to delete..."); if (sel_track()) { t = tracks[track_ix]; free_track(t); hide_mouse(); redraw_track(track_ix); } hide_mouse(); refresh_pull(); show_mouse(); } load_seq() { char *title; struct track *t; struct tlib *tl; if (title = qfile("Load Cyber Sequence", "SEQ")) { t = tracks[track_ix]; free_track(t); if (tl = get_tlib(title, TR_SEQ) ) { attatch_tlib(t, tl, tbuf); cat_video_t(t); } } hide_mouse(); redraw_frame(); show_mouse(); } load_spl() { char *title; struct track *t; struct tlib *tl; if (title = qfile("Load STReplay Sample", "SPL")) { t = tracks[track_ix]; free_track(t); if (tl = get_tlib(title, TR_SPL) ) { attatch_tlib(t, tl, tbuf); cat_sound_t(t); } } hide_mouse(); redraw_frame(); show_mouse(); } clear_ticks() { sound_ticks = video_ticks = time_ticks = 0; } qclear() { if (yes_no_line("Clear all video and sound tracks from memory?")) { clear_tracks(); clear_ticks(); hide_mouse(); redraw_frame(); show_mouse(); } } qinc_win() { char *c; if (track_offset + TRACKS_SEEN < TRACKS) { track_offset++; hide_mouse(); c = (char *)cscreen; c += (TRACK_YOFF+1)*Raster_line(XMAX); copy_lots(c+TRACK_HEIGHT*Raster_line(XMAX), c, ((long)(TRACKS_SEEN-1)*TRACK_HEIGHT-2)*Raster_line(XMAX) ); redraw_track(track_offset+TRACKS_SEEN-1); show_mouse(); } } qpageinc() { if (track_offset + TRACKS_SEEN < TRACKS) { track_offset += TRACKS_SEEN; if (track_offset + TRACKS_SEEN > TRACKS) track_offset = TRACKS-TRACKS_SEEN; hide_mouse(); redraw_frame(); show_mouse(); } } qpagedec() { if (track_offset > 0) { track_offset -= TRACKS_SEEN; if (track_offset < 0) track_offset = 0; hide_mouse(); redraw_frame(); show_mouse(); } } qdec_win() { char *c; if (track_offset > 0) { --track_offset; hide_mouse(); c = (char *)cscreen; c += (TRACK_YOFF+1)*Raster_line(XMAX); copy_lots(c, c+TRACK_HEIGHT*Raster_line(XMAX), ((long)(TRACKS_SEEN-1)*TRACK_HEIGHT-2)*Raster_line(XMAX) ); redraw_track(track_offset); show_mouse(); } } 0. lhA-H nf"=l`0. lhA-H?,^NT`. n(H?NT n=h0. lhA-H n hf n(H9@^?NT0,dg?,^?,`NpXSld9n`NN^NuNV/.NX/. NX` n n HHAgb n H|?gT n H|*g 0<` `:`R ng nH|.f`R n g n H|.f`:`RR ng nH|.fl n g n H|.fT ng nH|.fR n g n H|.fR/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include #include "flicker.h" extern struct tlib * get_tlib(); extern char *qfile(); extern char keep_path; int line_count; char line_buf[256]; char word_buf[256]; FILE *in; mangled(name) char *name; { char *buf[3]; buf[0] = "Sorry, file damaged:"; buf[1] = name; buf[2] = NULL; continu_from(buf); } file_truncated(name) char *name; { char *buf[3]; buf[0] = "Sorry, file truncated or damaged:"; buf[1] = name; buf[2] = NULL; continu_from(buf); } couldnt_find(name) char *name; { char *buf[3]; buf[0] = "Sorry, AVS couldn't find"; buf[1] = name; buf[2] = NULL; continu_from(buf); } couldnt_make(name) char *name; { char *buf[3]; buf[0] = "Sorry, AVS couldn't make"; buf[1] = name; buf[2] = NULL; continu_from(buf); } char * get_line() { if (fgets(line_buf, sizeof(line_buf), in) == NULL) return(NULL); line_count++; return(line_buf); } /* chop word ... put the next word (separated by white space) in line into the buffer word points to, return what's left of the line, or NULL if at end of line */ char * chop_word(line, word) register char *line, *word; { register char c; while (isspace(*line) ) line++; if (*line == 0) return(NULL); for (;;) { c = *line++; if (isspace(c)) { *word = 0; return(line); } if (c == 0) { *word = 0; return(--line); /*so catch end of string next call...*/ } *word++ = c; } } char *qltitle; qlerror(type) char *type; { char *bufs[3]; char buf[80]; sprintf(buf, "%s : line %d", qltitle, line_count); bufs[0] = buf; bufs[1] = type; bufs[2] = NULL; continu_from(bufs); } char * getend(name) char *name; { char *wend; char c; wend = name; for (;;) { if ((c = *name++) == 0) break; if (c == ':') wend = name; if (c == '\\') wend = name; } return(wend); } static int ttix; cyr_name(prompt) char *prompt; { if (qltitle = qfile(prompt, "AVS")) { if (!suffix_in(qltitle, ".AVS")) strcat(qltitle, ".AVS"); } return(qltitle != NULL); } qload() { if (!cyr_name("Load AVS File")) { goto OUT; } clear_tracks(); qld(tracks); /* reset where to load tracks */ video_ticks = sound_ticks = time_ticks = ttix; OUT: hide_mouse(); redraw_frame(); show_mouse(); } qld(trk) struct track **trk; { register char *line; int tix; int type; struct track *t; struct tlib *tl; ttix = time_ticks; /* for smoother error recovery */ if ((in = fopen(qltitle, "r")) == NULL) { couldnt_find(qltitle); goto OUT; } line_count = 0; for (;;) { if ((line = get_line()) == NULL) { qlerror("No TICKS, sorry"); fclose(in); goto OUT; } if ((line = chop_word(line, word_buf)) == NULL) continue; if (strcmp("TICKS", word_buf) != 0) continue; if ((line = chop_word(line, word_buf)) == NULL) continue; ttix = atoi(word_buf); break; } for (tix = 0; tixstart = atoi(word_buf); if ((line = chop_word(line, word_buf)) == NULL || !isdigit(word_buf[0])) { qlerror("No speed"); continue; } t->speed = atoi(word_buf); if ((line = chop_word(line, word_buf)) == NULL || !isdigit(word_buf[0])) { qlerror("No loops"); continue; } t->loops = atoi(word_buf); set_duration(t); } fclose(in); OUT: return(tix); } find_last_track() { register int i, last; register struct track **ts, *t; last = 0; ts = tracks; for (i=1; i<=TRACKS; i++) { t = *ts++; if (t->type != TR_NONE) { last = i; } } return(last); } qsave() { char *title; int i; int last; FILE *f; struct track *t; struct tlib *tl; char *name; if (title = qfile("Save AVS File", "AVS")) { if (!suffix_in(title, ".AVS")) strcat(title, ".AVS"); if ((f = fopen(title, "w")) == NULL) { couldnt_make(title); goto OUT; } fprintf(f, "TICKS %d\n", time_ticks); last = find_last_track(); for (i=0; iname; if (tl = t->lib) if (keep_path) name = tl->name; switch (t->type) { case TR_SEQ: fprintf(f, "SEQ %s %d %d %d\n", name, t->start, t->speed, t->loops); break; case TR_SPL: fprintf(f, "SPL %s %d %d %d\n", name, t->start, t->speed, t->loops); break; default: fprintf(f, "\n"); break; } } fclose(f); } OUT: hide_mouse(); redraw_frame(); show_mouse(); } BnBB9| nRH|=@ .&@$@BG`TH| g(H| gH| gH| g H| f0.f0.gBnB` `H|"f< nfBn`*0.f 0.f=|0,RlA` `"`H|'f: nfBn`*0.f 0.f=|0,RlA` `'`r0.fj0.fd=|H|f. R @H|>f T-@=|` R-@Bn`0,RlA`  R0RG0nmB .g,A췠 H1| A췠 H1|HlHl/.N .g2A췴 H1| Hl0.gA `A //.N 0,R@H/?<HN\)@><`0A` 2 l RG0lm l 0, lBL N^NuNVH$.f BB`J". BnJlVnDJlRnDvd`Bbd nmDdD-@-A LN^NuNV/BnJlRnDJ lRnD 0. -@0.n0. nngD -n N^.JNuN^NuNV nl <`?.?./. ?<BN8 -@ m .`?<?.B?<BN -@?<?./* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" #include "flicmenu.h" extern int mmsee_slider(), mmfeel_slider(), see_number_slider(), dfeel_number_slider(), left_arrow(), right_arrow(), dinc_slider(), ddec_slider(), return_yes(), return_no(), see_frame_text(), fat_frame_text(), black_block(), inverse_cursor(), wbtext(), wbnumber(), white_slice(); extern struct cursor cdown, cleft, cright, csleft, cinsert, cappend, cright2, cleft2, csright, cup; extern char believe_menu; struct flicmenu dcancel_sel = { NONEXT, NOCHILD, 470+10*CH_WIDTH, 180, 8*CH_WIDTH, 14, "Cancel", see_frame_text, return_no, NOGROUP, 0, NOKEY, }; struct flicmenu dok_sel = { &dcancel_sel, NOCHILD, 470+2*CH_WIDTH, 180, 6*CH_WIDTH, 14, "OK", fat_frame_text, return_yes, NOGROUP, 0, '\r', }; struct flicmenu tick_sel = { &dok_sel, NOCHILD, 480+10*CH_WIDTH, 165, 5*CH_WIDTH, CH_HEIGHT, (char *)&time_ticks, wbnumber, NOFEEL, NOGROUP, 0, NOKEY, }; struct flicmenu ticktag_sel = { &tick_sel, NOCHILD, 480+2*CH_WIDTH, 165, 7*CH_WIDTH, CH_HEIGHT, "ticks:", wbtext, NOFEEL, NOGROUP, 0, NOKEY, }; struct flicmenu dblackr_sel = { NONEXT, &ticktag_sel, 463, 161, 640-463-2, 3*13-2, NOTEXT, black_block, NOFEEL, NOGROUP, 0, NOKEY, }; struct slidepot jiffies_sl = { -1, 58, -1, }; extern struct flicmenu jiffies_sel; struct flicmenu jiffies_1f4 = { &dblackr_sel, NOCHILD, 437, 187, 24, 11, (char *)&jiffies_sel, right_arrow, dinc_slider, NOGROUP, 0, NOKEY, }; struct flicmenu jiffies_sel = { &jiffies_1f4, NOCHILD, 109, 187, 326, 11, (char *)&jiffies_sl, see_number_slider, dfeel_number_slider, NOGROUP, 0, }; struct flicmenu jiffies_1f2 = { &jiffies_sel, NOCHILD, 83, 187, 24, 11, (char *)&jiffies_sel, left_arrow, ddec_slider, NOGROUP, 0, NOKEY, }; struct flicmenu jiffiestag_sel = { &jiffies_1f2, NOCHILD, 1, 187, 80, 11, "Jiffies", wbtext, NOFEEL, NOGROUP, 0, }; struct slidepot seconds_sl = { -1, 58, -1, }; extern struct flicmenu seconds_sel; struct flicmenu seconds_1f4 = { &jiffiestag_sel, NOCHILD, 437, 174, 24, 11, (char *)&seconds_sel, right_arrow, dinc_slider, NOGROUP, 0, NOKEY, }; struct flicmenu seconds_sel = { &seconds_1f4, NOCHILD, 109, 174, 326, 11, (char *)&seconds_sl, see_number_slider, dfeel_number_slider, NOGROUP, 0, }; struct flicmenu seconds_1f2 = { &seconds_sel, NOCHILD, 83, 174, 24, 11, (char *)&seconds_sel, left_arrow, ddec_slider, NOGROUP, 0, NOKEY, }; struct flicmenu secondstag_sel = { &seconds_1f2, NOCHILD, 1, 174, 80, 11, "Seconds", wbtext, NOFEEL, NOGROUP, 0, }; struct slidepot minutes_sl = { -1, 4, -1, }; extern struct flicmenu minutes_sel; struct flicmenu minutes_1f4 = { &secondstag_sel, NOCHILD, 437, 161, 24, 11, (char *)&minutes_sel, right_arrow, dinc_slider, NOGROUP, 0, NOKEY, }; struct flicmenu minutes_sel = { &minutes_1f4, NOCHILD, 109, 161, 326, 11, (char *)&minutes_sl, see_number_slider, dfeel_number_slider, NOGROUP, 0, }; struct flicmenu minutes_1f2 = { &minutes_sel, NOCHILD, 83, 161, 24, 11, (char *)&minutes_sel, left_arrow, ddec_slider, NOGROUP, 0, NOKEY, }; struct flicmenu minutestag_sel = { &minutes_1f2, NOCHILD, 1, 161, 80, 11, "Minutes", wbtext, NOFEEL, NOGROUP, 0, }; struct flicmenu duration_menu = { NONEXT, &minutestag_sel, 0, 160, XMAX-1, 3*13, NOTEXT, white_slice, NOFEEL, NOGROUP, 0, }; dinc_slider(m) Flicmenu *m; { inc_slider(m); update_tick_sel(); } ddec_slider(m) Flicmenu *m; { dec_slider(m); update_tick_sel(); } dfeel_number_slider(m) Flicmenu *m; { feel_number_slider(m); update_tick_sel(); } update_tick_sel() { calc_time_ticks(); draw_sel(&tick_sel); } calc_time_ticks() { int m, s, j; time_ticks = (minutes_sl.value+1)*3600 + (seconds_sl.value+1)*60 + jiffies_sl.value+1; } qduration() { int oticks, t, m, s, j; oticks = time_ticks; /* set up time sliders from time_ticks */ t = time_ticks; m = t/3600; t -= m*3600; s = t/60; t -= s*60; j = t; minutes_sl.value = m-1; seconds_sl.value = s-1; jiffies_sl.value = j-1; hide_mouse(); clear_under_menu(); top_message("Set how long it will take to play through once:"); draw_a_menu(&duration_menu); do_menu(&duration_menu); if (!believe_menu) time_ticks = oticks; hide_mouse(); redraw_frame(); show_mouse(); } 222A222Ձ2@2222A2222A222Ё2@220212A232222@262227@225242A2<222=@22?2>2A22:2;2A292228@2(222)@22+2*2A22.2/2A2-222,@22$2%2A2'222&@2"222#@22!2 2A22`2a2A2c222b@2f222g@22e2/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" #include "flicmenu.h" struct track *xtrack; struct track otrack; struct tlib *xlib; WORD xduration; extern int mmsee_slider(), mmfeel_slider(), see_number_slider(), tfeel_number_slider(), left_arrow(), right_arrow(), tinc_slider(), tdec_slider(), return_yes(), return_no(), see_frame_text(), fat_frame_text(), ex_duration(), examine_rest(), ex_play(), black_block(), inverse_cursor(), wbtext(), wbnumber(), white_slice(); extern struct cursor cdown, cleft, cright, csleft, cinsert, cappend, cright2, cleft2, csright, cup; extern char believe_menu; extern examine_title(); struct flicmenu tcancel_sel = { NONEXT, NOCHILD, 470+10*CH_WIDTH, 180, 8*CH_WIDTH, 14, "Cancel", see_frame_text, return_no, NOGROUP, 0, NOKEY, }; struct flicmenu tok_sel = { &tcancel_sel, NOCHILD, 470+2*CH_WIDTH, 180, 6*CH_WIDTH, 14, "OK", fat_frame_text, return_yes, NOGROUP, 0, '\r', }; struct flicmenu tblackr_sel = { NONEXT, &tok_sel, 463, 174, 640-463-2, 2*13-2, NOTEXT, black_block, NOFEEL, NOGROUP, 0, NOKEY, }; struct slidepot loops_sl = { 0, 99, 0, }; extern struct flicmenu loops_sel; struct flicmenu loops_1f4 = { &tblackr_sel, NOCHILD, 437, 187, 24, 11, (char *)&loops_sel, right_arrow, tinc_slider, NOGROUP, 0, NOKEY, }; struct flicmenu loops_sel = { &loops_1f4, NOCHILD, 109, 187, 326, 11, (char *)&loops_sl, see_number_slider, tfeel_number_slider, NOGROUP, 0, }; struct flicmenu loops_1f2 = { &loops_sel, NOCHILD, 83, 187, 24, 11, (char *)&loops_sel, left_arrow, tdec_slider, NOGROUP, 0, NOKEY, }; struct flicmenu loopstag_sel = { &loops_1f2, NOCHILD, 1, 187, 80, 11, "Loops", wbtext, NOFEEL, NOGROUP, 0, }; struct slidepot tspeed_sl = { -1, 59, -1, }; extern struct flicmenu tspeed_sel; struct flicmenu tspeed_1f4 = { &loopstag_sel, NOCHILD, 437, 174, 24, 11, (char *)&tspeed_sel, right_arrow, tinc_slider, NOGROUP, 0, NOKEY, }; struct flicmenu tspeed_sel = { &tspeed_1f4, NOCHILD, 109, 174, 326, 11, (char *)&tspeed_sl, see_number_slider, tfeel_number_slider, NOGROUP, 0, }; struct flicmenu tspeed_1f2 = { &tspeed_sel, NOCHILD, 83, 174, 24, 11, (char *)&tspeed_sel, left_arrow, tdec_slider, NOGROUP, 0, NOKEY, }; struct flicmenu tspeedtag_sel = { &tspeed_1f2, NOCHILD, 1, 174, 80, 11, "Speed", wbtext, NOFEEL, NOGROUP, 0, }; Flicmenu trest_sel = { &tspeedtag_sel, NOCHILD, 36*CH_WIDTH+3, 161, 44*CH_WIDTH-7, 11, NOTEXT, examine_rest, ex_play, NOGROUP, 0, }; Flicmenu ttick_sel = { &trest_sel, NOCHILD, 30*CH_WIDTH+2, 161, CH_WIDTH*6, 11, NOTEXT, ex_duration, ex_play, NOGROUP, 0, }; char tnbuf[31]; Flicmenu tname_sel = { &ttick_sel, NOCHILD, 1, 161, 30*CH_WIDTH, 11, tnbuf, wbtext, ex_play, NOGROUP, 0, }; Flicmenu examine_menu = { NONEXT, &tname_sel, 0, 160, XMAX-1, 3*13, NOTEXT, white_slice, NOFEEL, NOGROUP, 0, }; ex_play(m) Flicmenu *m; { play_track(xtrack); if (xtrack->type == TR_SEQ) { clear_screen(); draw_a_menu(&examine_menu); } show_mouse(); } tinc_slider(m) Flicmenu *m; { inc_slider(m); update_ttick_sel(); } tdec_slider(m) Flicmenu *m; { dec_slider(m); update_ttick_sel(); } tfeel_number_slider(m) Flicmenu *m; { feel_number_slider(m); update_ttick_sel(); } update_ttick_sel() { xtrack->loops = loops_sl.value+1; xtrack->speed = tspeed_sl.value+1; set_duration(xtrack); draw_sel(&ttick_sel); } ex_duration(m) Flicmenu *m; { char buf[16]; sprintf(buf, "%5ld", xtrack->duration); m->text = buf; wbtext(m); } examine_rest(m) Flicmenu *m; { char buf[80]; if (xtrack->type == TR_SEQ) sprintf(buf, " ticks %6ld frames %6ld bytes %2d links", xtrack->samples, xlib->bytes, xlib->links); else sprintf(buf, " ticks %6ld samples %6ld bytes %2d links", xtrack->samples, xlib->bytes, xlib->links); m->text = buf; wbtext(m); } exam() { xtrack = tracks[track_ix]; if ((xlib = xtrack->lib) == NULL) return; switch (xtrack->type) { case TR_SEQ: tspeed_sl.max = 59; break; case TR_SPL: tspeed_sl.max = 4; break; default: return; } strncpy(tnbuf, xlib->name, sizeof(tnbuf)-1); copy_structure(xtrack, &otrack, sizeof(otrack)); hide_mouse(); clear_screen(); loops_sl.value = xtrack->loops-1; tspeed_sl.value = xtrack->speed-1; draw_a_menu(&examine_menu); do_menu(&examine_menu); if (!believe_menu) copy_structure(&otrack, xtrack, sizeof(otrack)); } qexamine() { top_message("Select track to examine..."); if (sel_track()) { exam(); } hide_mouse(); redraw_frame(); show_mouse(); } TO READBAR CODE DIRECTLY ON PACKAGING.DAC EASYDAC SOFTWARE INC.69.95USANOWMONO/COLORA FULLY INTERGRATED ACCOUNTING PACKAGE.DOLLARS & SENSEMONOGRAM99.95USANOWMONO/COLORH/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" #include "flicmenu.h" #include WORD processed_key; slide_where(m) struct flicmenu *m; { struct slidepot *s; WORD width; WORD x; s = (struct slidepot *)m->text; x = mouse_x - m->x - 1; width = m->width-2; if (x < 0) return(s->min); if (x >= width) return(s->max); return(uscale_by(x, s->max - s->min + 1, width) + s->min); } update_number_slider(m) Flicmenu *m; { WORD new; struct slidepot *s; s = (struct slidepot *)m->text; new = slide_where(m); if (new != s->value) { hide_mouse(); s->value = new; (*m->seeme)(m); show_mouse(); } } extern see_number_slider(); feel_number_slider(m) Flicmenu *m; { feelslide(m, update_number_slider); } feelslide(m, update) struct flicmenu *m; Vector update; { (*update)(m); for (;;) { check_input(); if (!PDN) break; if (mouse_moved) (*update)(m); } } static Flicmenu *asl; inc_sl() { struct slidepot *sl; sl = (struct slidepot *)asl->text; if (sl->value < sl->max) { sl->value++; draw_sel(asl); } } long get60hz() { return(time_peek()*60/200); } pdn_timeout(timeout) WORD timeout; { long time1; time1 = get60hz() + timeout; for (;;) { check_input(); if (!PDN) return(0); if (get60hz() >= time1) return(1); } } repeat_on_pdn(v) Vector v; { WORD i; (*v)(); if (!pdn_timeout(30)) return; i = 0; for (;;) { (*v)(); if (!pdn_timeout( i<10 ? 8 : 4) ) return; i++; } } inc_slider(m) Flicmenu *m; { hide_mouse(); hilight(m); asl = (Flicmenu *)m->text; repeat_on_pdn(inc_sl); draw_sel(m); show_mouse(); } dec_sl() { struct slidepot *sl; sl = (struct slidepot *)asl->text; if (sl->value > sl->min) { --sl->value; draw_sel(asl); } } dec_slider(m) Flicmenu *m; { hide_mouse(); hilight(m); asl = (Flicmenu *)m->text; repeat_on_pdn(dec_sl); draw_sel(m); show_mouse(); } char break_menu; char believe_menu; do_menu(m) struct flicmenu *m; { Pull *ocpull; Flicmenu *ocmenu; unsigned char c; break_menu = 0; believe_menu = 0; ocmenu = cur_menu; cur_menu = m; while (!break_menu) { check_input(); if (key_hit) { c = key_in; if (c == ' ') break; if (isalpha(c)) c = _tolower(c); if (c == 0) processed_key = key_in; else processed_key = c; rksel(m); } else if (PJSTDN) { rsel(m); } } cur_menu = ocmenu; break_menu = 0; } return_yes() { believe_menu = 1; break_menu = 1; } return_no() { break_menu = 1; } rksel( m) register struct flicmenu *m; { if (m == NULL) return(0); if ( rksel( m->next) ) return(1); if (rksel( m->children) ) return(1); if (processed_key == m->key_equiv) { if (m->feelme) { (*m->feelme)( m); } return(1); } return(0); } rsel( m) register struct flicmenu *m; { if (m == NULL) return(0); if ( rsel( m->next) ) return(1); if (rsel( m->children) ) return(1); if ( mouse_x >= m->x && mouse_x <= m->x + m->width && mouse_y >= m->y && mouse_y <= m->y + m->height) { if (m->feelme) { (*m->feelme)( m); } return(1); } return(0); } S RECEIVABLE FOR UP TO 999PROPERTIES WITH A MAXIMUM OF 100,000 UNITS FOR EACHPROPERTY.SBT dPURCHASELIBRARY SBT CORP.295.00USANOWMONO/COLORWRITES PURCHASE ORDERS AND HANDLES RECEIVING FORYOUR BUSINESS.SMART-SHIPPERNEW WORLD SOFTWARE99.95USANOWMONO/COLORFULLY AUTOMATE THE SHIPPING, LABEL PRINTING, ANDMANIFEST REPORTS FOR YOUR UPS SHIPPING.ST ACCOUNTS 2.0ISD MARKETING149.95USANOWMONO/COLORACCOUNTING PACKAGE FOR SMALL TO MEDIUM SIZEDCOMPANIES. CONTAINS; ACCOUNTS RECEIVABLE, ACCOUNTSPAYABLE, INVENTORY CONTROL, GENERAL LEDGER, REPORTGENERATOR, CHECK WRITER AND MULTIPLE BANK ACCOUNTS.VIDEO-PROHI-TECH ADVISORS199.00USANOWMONO/COLORVIDEO STORE MANAGEMENT, INCLUDING RENTALS, RETURNS,SALES, ACCOUNTS RECEIVABLE, INVENTORY CONTROL ANDTRACKING, CUSTO/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include "flicker.h" extern WORD gem_mrez; static char wild_buf[75]; char tbuf[20]; char fold_buf[70]; char title_buf[16] = ""; static char path_buf[90]; WORD current_drive; static char current_dir[68]; /*64 in the docs, I'm just paranoid */ extern char *make_file_name(); init_fname() { current_drive = Dgetdrv(); Dgetpath(current_dir, 0); fold_buf[0] = current_drive + 'A'; fold_buf[1] = ':'; fold_buf[2] = 0; strcat(fold_buf, current_dir); strcat(fold_buf, "\\"); } static get_folder(wildbuf, foldbuf) char *wildbuf, *foldbuf; { register char c; register char lastc = 0; register char *wild, *fold; wild = wildbuf; fold = foldbuf; for (;;) { c = *wild++; switch (c) { case '*': for (;;) { if (fold == foldbuf) { *fold = 0; return; } c = *(--fold); switch(c) { case '\\': case ':': fold++; *fold = 0; return; } } break; case 0: if (lastc != ':' && lastc != '\\' && lastc != 0) *fold++ = '\\'; *fold++ = 0; return; default: *fold++ = c; } lastc = c; } } char * find_end_path(p) register char *p; { register char *s; register char c; s = p; for (;;) { c = *s++; if (c == ':' || c == '\\') p = s; if (c == 0) return(p); } } static extract_title(s, d) char *s; register char *d; { register char c; strcpy(d, s); d = find_end_path(d); for (;;) { if ( (c = *d++) == 0) break; if (c == '.') { *(--d) = 0; break; } } return; } char * get_fname(suff) char *suff; { WORD fs_ireturn, fs_iexbutton; char sbuf[5]; sprintf(sbuf, ".%s", suff); sprintf(wild_buf, "%s*%s", fold_buf, sbuf); sprintf(tbuf,"%s%s", title_buf, sbuf); fs_ireturn = fsel_input(wild_buf, tbuf, &fs_iexbutton); if (fs_ireturn == 0 || fs_iexbutton == 0) return(NULL); get_folder(wild_buf, fold_buf); /* update folder with user things */ if (fold_buf[1] == ':') current_drive = fold_buf[0] - 'A'; extract_title(tbuf, title_buf); /* update the "non-suffix" part */ strcpy(path_buf, fold_buf); strcat(path_buf, tbuf); return(path_buf); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include "flicker.h" extern char *ainit(); extern WORD sys_cmap[]; WORD contrl[12], intin[128], ptsin[128], intout[128], ptsout[128]; char *aline; static WORD color_env[16]; WORD *pscreen, *cscreen; /* buffer, physical, and drawing screens */ WORD *bscreen; /* buffer screen */ WORD gl_apid = -1; WORD handle; WORD gr_handle; WORD gr_hwchar, gr_hhchar, gr_hwbox, gr_hhbox; WORD gem_mrez; /* gem in medium rez? */ static WORD mouse_bx, mouse_by, gem_colr; static WORD initted_color; static WORD irez; WORD screen_bounds[] = { 0, 0, XMAX-1, YMAX-1}; WORD white = 3, black = 0, red = 2, green = 1; WORD sys_cmap[16] = { 0x000, 0x070, 0x700, 0x777, 0x433, 0x530, 0x653, 0x754, 0x700, 0x750, 0x670, 0x070, 0x056, 0x137, 0x607, 0x777, }; /* set_for_gem and set_for_jim - functions that let me run at medium rez while doing file requestor and file io at whatever rez GEM thinks it is - necessary for file requestor to appear ok, and for system io error dialogs to be centered etc. Thanks to Dave Staugas (of Neochrome) for the necessary magic aline peeks and pokes! */ set_for_gem() { long i; #ifdef LATER wait_penup(); #endif LATER for (i=0; i<22000; i++) ; /* just stall - hey I'm experimenting */ remove_critical(); Setpallete(color_env); /* restore start-up colors */ hide_mouse(); /* go reset mouse and */ vs_clip(handle, 0, screen_bounds); gem_rez(); /* screen rez */ Setscreen(pscreen, pscreen, -1); show_mouse(); /* to what GEM wants */ } set_for_jim() { WORD dummy; WORD i; Setpallete(sys_cmap); /* and now set flicker colors */ hide_mouse(); jim_rez(); vs_clip(handle, 1, screen_bounds); cross_cursor(); show_mouse(); install_critical(); } jim_rez() { Setscreen( -1L, -1L, 1); *((WORD *)(aline-692)) = 639; *((WORD *)(aline-690)) = 199; *((WORD *)(aline-666)) = 4; } gem_rez() { if (!gem_mrez) { Setscreen( -1L, -1L, 0); *((WORD *)(aline-692)) = 319; *((WORD *)(aline-690)) = 199; *((WORD *)(aline-666)) = 16; } } init_sys() { WORD work_in[11]; WORD work_out[57]; WORD i; save_critical(); if ( (gl_apid = appl_init()) == -1) { exit(-1); } aline = ainit(); if (!init_mem()) exit(-2); /* save initial rez ... we'll see if GEM agrees with this later */ if ( (irez = Getrez()) != 0) { if (irez != 1) { puts("AVS can't run on black and white systems, sorry"); for (i=0; i<60; i++) { Vsync(); } exit(-3); } } get_cmap(color_env); Setpallete(sys_cmap); initted_color = 1; if (!init_pulls()) return(-4); /* save mouse wrap-around */ mouse_bx = *((WORD *)(aline-692)); mouse_by = *((WORD *)(aline-690)); /* save # of colors gem thinks exist */ gem_colr = *((WORD *)(aline-666)); gr_handle = graf_handle(&gr_hwchar, &gr_hhchar, &gr_hwbox, &gr_hhbox); handle = gr_handle; stuff_words(work_in, 1, 10); work_in[10] = 2; v_opnvwk(work_in, &handle, work_out); if (handle == 0) return(-5); if (work_out[0] == 639) { gem_mrez = 1; /* see what GEM thinks rez is in so file-requestor can work */ } pscreen = cscreen = (WORD *)Physbase(); if ((bscreen = askmem(32000)) == NULL) { return(0); } init_fname(); set_for_jim(); cel_mem_alloc = mem_free; /* "user" memory starts here */ return(1); } uninit_sys() { WORD dummy; WORD i; Vector ourmbvec; set_for_gem(); /*magic poke to set mouse wrap-around*/ *((WORD *)(aline-692)) = mouse_bx; *((WORD *)(aline-690)) = mouse_by; *((WORD *)(aline-666)) = gem_colr; Setscreen( -1L, -1L, irez); /*restore palette...*/ if (initted_color) Setpallete(color_env); remove_critical(); if (handle != 0) v_clsvwk(handle); if (gl_apid != -1) appl_exit(0); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include #include "flicker.h" extern WORD *aline; extern WORD handle; WORD mouse_button, omouse_button; WORD mouse_x, mouse_y; WORD lastx, lasty; WORD mouse_moved; /* mouse not same as last time - x,y or buttons */ WORD key_hit; long key_in; WORD mouse_on = 1; static WORD reuse; reuse_input() { reuse = 1; } check_input() { unsigned WORD w; register WORD *a; unsigned long l; WORD mouse_color; if (reuse) { reuse = 0; return; } lastx = mouse_x; lasty = mouse_y; a = aline; omouse_button = mouse_button; mouse_x = *(a-301); mouse_y = *(a-300); mouse_button = *(a-174); if (Cconis()) { key_hit = 1; l = Crawcin(); w = l>>8; w += l; key_in = w; } else key_hit = 0; if (mouse_x == lastx && mouse_y == lasty && mouse_button == omouse_button) mouse_moved = 0; else { mouse_moved = 1; } } hide_mouse() { v_hide_c(handle, 0); mouse_on = 0; } show_mouse() { v_show_c(handle, 0); mouse_on = 1; } cross_cursor() { graf_mouse(5, 0L); } bee_cursor() { graf_mouse(2, 0L); } wait_penup() { if (!PDN) return; for (;;) { check_input(); if (!PDN) break; } } wait_click() { for (;;) { check_input(); if (key_hit || PJSTDN || RJSTDN) break; } } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include "flicker.h" static struct mblock *free_list = NULL; long cel_mem_alloc; long mem_free; flash_nomem() { int ocolor; ocolor = Setcolor(0, -1); Setcolor(0, 0x700); wait_a_jiffy(8); Setcolor(0, ocolor); } static not_enough() { puts("not enough memory to run, sorry"); } init_mem() { register long size; char *pool; char *sc1, *sc2, *sc3; size = Malloc((long)-1); /*see what's available */ size -= 16*1024; /*leave 16 for GEM */ if (size < 96000L) /*if not enough left abort */ { not_enough(); return(0); } while ((pool = (char *)Malloc(size)) == NULL) { if (size < 96000L) { not_enough(); return(0); } size = size*15/16; } free_list = (struct mblock *)pool; free_list->next = NULL; mem_free = free_list->size = size; return(1); } static long * lalloc(nbytes) register long nbytes; { register struct mblock *mb, *nb, *lb; #ifdef DEBUG printf("alloc(%d)\n", nbytes); #endif DEBUG if (mb = free_list) { if (mb->size == nbytes) { #ifdef DEBUG1 printf("alloc first exact %lx\n", mb); #endif DEBUG1 free_list = mb->next; mem_free -= nbytes; return((long *)mb); } else if (mb->size > nbytes) { #ifdef DEBUG1 printf("alloc first %lx\n", mb); #endif DEBUG1 nb = (struct mblock *)(((char *)mb)+nbytes); nb->next = mb->next; nb->size = mb->size - (long)nbytes; free_list = nb; mem_free -= nbytes; return((long *)mb); } else { lb = mb; mb = mb->next; } } while (mb) { if (mb->size == nbytes) { #ifdef DEBUG1 printf("alloc exact %lx\n", mb); #endif DEBUG1 lb->next = mb->next; mem_free -= nbytes; return((long *)mb); } else if (mb->size > nbytes) { #ifdef DEBUG1 printf("alloc middle %lx\n", mb); #endif DEBUG1 nb = (struct mblock *)(((char *)mb)+nbytes); nb->next = mb->next; nb->size = mb->size - (long)nbytes; lb->next = nb; mem_free -= nbytes; return((long *)mb); } else { lb = mb; mb = mb->next; } } nomem_exit: flash_nomem(); return(NULL); } void * askmem(nbytes) unsigned nbytes; { long *pt; nbytes += 11; nbytes &= 0xfff8; if ((pt = lalloc( (long)nbytes )) == NULL) return(NULL); *pt++ = nbytes; return((int *)pt); } void * begmem(nbytes) unsigned nbytes; { int *pt; if ((pt = askmem(nbytes)) == NULL) outta_memory(); return(pt); } void * begzeros(nbytes) unsigned nbytes; { char *pt; if ((pt = begmem(nbytes)) != NULL) zero_structure(pt, nbytes); return(pt); } void * lbegmem(nbytes) long nbytes; { int *pt; if ((pt = laskmem(nbytes)) == NULL) outta_memory(); return(pt); } void * laskmem(nbytes) long nbytes; { long *pt; nbytes += 11; nbytes &= 0xfffffff8; if ((pt = lalloc( nbytes )) == NULL) return(NULL); *pt++ = nbytes; return((int *)pt); } gentle_free(pt) long *pt; { if (pt != NULL) freemem(pt); } freemem(pt) long *pt; { register struct mblock *mb; register struct mblock *lb; register struct mblock *nb; register long amount; #ifdef DEBUG printf("mfree(%lx, %d)\n", nb, amount); #endif DEBUG amount = *(--pt); nb = (struct mblock *)pt; mem_free += amount; if ( (mb = free_list) == NULL) { #ifdef DEBUG1 printf("new free_list\n"); #endif DEBUG1 mb = free_list = nb; mb->next = NULL; mb->size = amount; goto adjust_rd_alloc; } if ( nb < mb) { free_list = nb; nb->next = mb; nb->size = amount; if ( (char *)nb+amount == (char *)mb) /*coalesce into first block*/ { nb->next = mb->next; nb->size += mb->size; #ifdef DEBUG1 printf("coalescing into first chunk\n"); #endif DEBUG1 } #ifdef DEBUG1 else printf("new first chunk\n"); #endif DEBUG1 goto adjust_rd_alloc; } for (;;) { lb = mb; if ( (mb = mb->next) == NULL) break; if ((char *)nb - lb->size == (char *)lb) /*coalesce into previous block*/ { lb->size += amount; if ((char *)nb + amount == (char *)mb) { lb->size += mb->size; lb->next = mb->next; #ifdef DEBUG1 printf("coalescing both sides\n"); #endif DEBUG1 } #ifdef DEBUG1 else printf("coalescing into previous block\n"); #endif DEBUG1 goto adjust_rd_alloc; } if ((char *)nb+amount == (char *)mb) /*coalesce into next block*/ { nb->size = mb->size + amount; nb->next = mb->next; lb->next = nb; #ifdef DEBUG1 printf("coalescing into next block\n"); #endif DEBUG1 goto adjust_rd_alloc; } if (nb < mb) { #ifdef DEBUG1 printf("adding block in middle\n"); #endif DEBUG1 nb->next = mb; lb->next = nb; nb->size = amount; goto adjust_rd_alloc; } } if ((char *)nb-lb->size == (char *)lb) /*a rare case ... */ { #ifdef DEBUG1 printf("coalescing into end of last block\n"); #endif DEBUG1 lb->size += amount; goto adjust_rd_alloc; } #ifdef DEBUG1 printf("adding last block\n"); #endif DEBUG1 lb->next = nb; nb->next = NULL; nb->size = amount; adjust_rd_alloc: return; } f S @  . nU| A|l0fD AH-@Hn/.?.?<@N O <Hg 340<`dA&H0f~ =@`J/ 0./?.?<@N O -@2.¼g .340<` .n0.L8N^NuNVH$.f BB`&". Bvd d``bd-@-A LN^NuNVHL&gHC H@J@g@HCBCւ-C LN^.JNuNV?.?<LN XN^NuNVH*n ..(U0.`(<< `><<`6<<BE`,<<:< ` `|Xg|dgΰ|ogа|ug°|xg Jl ndf - D.` 0. fμA м&@B#(/8H/NX(0 D m2<7E`2<0A /0H/N X.f/ / NP*L8N^NuNVH>. *n (U=| Gf><#5 #5$Hy2Hy5 N&P]|=@0R@?HnHnHnN!O0.g-.H|0f.f0` nff<.GRF0no<.JFl0<`0?HnHnHnN!OA&HA&H`SFSn0gJnl`0SnJnl0g.` 0RnSG0g nm`JFoH`0<0SFSG0J@l`J0g.A R&@`SG0J@l/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" suffix_in(string, suff) char *string, *suff; { string += strlen(string) - strlen(suff); return( strcmp(string, suff) == 0); } char * clone_string(name) char *name; { char *d; int size; size = strlen(name); if ((d = askmem(size+1)) != NULL) { strcpy(d, name); } return(d); } Rf`$A $@-@H=@`$SX/ NxX:no:.8< `0.g `0H/Hn?.?.NO 0.g0<`0<*. ng=n` nRT:<`#5 #5$/95$/95 Hn?.?.NOP*.`f0. nR:<`P`N|Xg<|cg|dg.|eg|fg|gg|og|sg|ug|xgN0.gj/ ??</ N\O <n0Eg`>.E`4Sm0-J@m0 URH|` / ?N(\ @f` RnSG0J@l`f>.E`4Sm0-J@m0 URH|` / ?N(\ @f` RnSG0J@l/ ??</ N\O <n0Eg`f0.L #include #include "flicker.h" #define REPLACE 1 #define XOR 2 extern struct aline *aline; extern WORD handle; char gemctable[16] = { 0, 2, 3, 6, 4, 7, 5, 8, 9, 0xa, 0xb, 0xe, 0xc, 0xf, 0xd, 1, }; wait_a_jiffy(jiff) WORD jiff; { while (--jiff >= 0) Vsync(); } get_cmap(cmap) register WORD *cmap; { register int i; for (i=0; i<16; i++) *cmap++ = Setcolor(i, -1); } draw_frame(color, x0, y0, x1, y1) register int color, x0, y0, x1, y1; { hline(y0, x0, x1, color); hline(y1, x0, x1, color); vline(x0, y0, y1, color); vline(x1, y0, y1, color); } hline(y, x1, x2, color) WORD color, y, x1, x2; { colblock(color, x1, y, x2, y); } vline(x, y1, y2, color) int color, x, y1, y2; { colblock(color, x, y1, x, y2); } colblock(color, x1, y1, x2, y2) WORD color; register WORD x1, y1, x2, y2; { register struct aline *a = aline; WORD swap; if (x1 > x2) { swap = x2; x2 = x1; x1 = swap; } if (y1 > y2) { swap = y2; y2 = y1; y1 = swap; } if (y2 < 0 || y1 >= YMAX) return; if (x2 < 0 || x1 >= XMAX) return; if (y1 < 0) y1 = 0; if (x1 < 0) x1 = 0; if (x2 >= XMAX) x2 = XMAX-1; if (y2 >= YMAX) y2 = YMAX-1; blast_block(x1,y1,x2,y2,color); } colrop(color, x, y, width, height) int color, x, y, width, height; { register struct aline *a = aline; colblock(color, x, y, x+width, y+height); } clear_screen() { zero_screen(cscreen); } color_hslice(ystart, height, color) WORD ystart, height, color; { color_lines(cscreen+80*ystart, height, color); } ctext(s, x, y, color) char *s; WORD x, y; WORD color; { vst_color(handle, gemctable[color]); vswr_mode(handle, 2); v_gtext(handle, x, y+7, s); } gtext(s, x, y, color) char *s; WORD x, y; WORD color; { vst_color(handle, gemctable[color]); vswr_mode(handle, 0); v_gtext(handle, x, y+7, s); } #ifdef SLUFFED new_cursor(c, color) register struct cursor *c; WORD color; { register WORD *data; data = *( (WORD **)(((char *)aline)+8) ); data[4] = data[2] = gemctable[color]; data[0] = c->xhot; data[1] = c->yhot; zero_structure(data+5, 16*sizeof(WORD) ); copy_structure(c->image, data+21, 16*sizeof(WORD) ); atmouse(); } #endif SLUFFED JHBЂJj LN^NuNVH n "($HBJ&<BnDB Bcp`*` B c <`6<BtjABJjD LN^NuHHy3//N&POL/WXONuHHy3//N&POL/WXONuH o#4dHy3Hy4dN$N&N$zPO o 4dL/WXONuH o#4dHy3Hy4dN$N&N$zPO o 4dL/WXONuH////N)PPLNuH////N)PLNuH////N)PLNuH////N,hPLNuH////N+$PLNuH o#4LHy4LN$//N)PLNuH o#4LHy4LN$//N)PLNuH o#4LHy4LN$//N,hPLNuH o#4LHy4LN$//N+$PLNuH/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ /* :ts=3 */ #include "flicker.h" #include "flicmenu.h" extern Pull root_pull; extern WORD processed_key; extern Flicmenu *cur_menu; extern Pull *cur_pull; WORD menu_ix, sel_ix, pull_hit; WORD *draw_pull(), *save_behind(); static char *pfstack; /* pfree stack */ WORD * paskmem(amount) WORD amount; { WORD *pt; amount += sizeof(WORD); pt = (WORD *)pfstack; pfstack += amount; *pt = amount; return(pt+1); } pfreemem(pt) WORD *pt; { pt -= 1; pfstack -= *pt; } static max_pull_mem(p) register Pull *p; { WORD max, acc; max = 0; while (p) { acc = Raster_block(p->width, p->height); if (acc > max) max = acc; p = p->next; } return(max); } init_pulls() /* figure out how much memory pop-downs could require and reserve it separate from rest of memory pool */ { long acc; long maxalloc; Pull *p1; Pull *p2; p1 = root_pull.children; maxalloc = 0; while (p1 != NULL) { p2 = p1->children; acc = Raster_block(p2->width, p2->height) + max_pull_mem(p2->children); if (acc > maxalloc) maxalloc = acc; p1 = p1->next; } maxalloc += 2*sizeof(WORD); /* space for the size tags */ #ifdef OLD maxalloc += Raster_block(root_pull.width, root_pull.height) + 3*sizeof(WORD); #endif OLD if ((pfstack = (char *)laskmem(maxalloc)) == NULL) return(0); return(1); } in_pblock(x, y, p) int x, y; register Pull *p; { if (mouse_x >= x && mouse_y >= y) { x += p->width; y += p->height; if (mouse_x <= x && mouse_y <= y) return(1); } return(0); } pull_block(x, y, p) int x, y; register Pull *p; { colrop(black, x, y, p->width-1, p->height-2); hline(y + p->height-1, x, x + p->width-1, white); } pull_oblock(x, y, p) int x, y; register Pull *p; { int x1, y1; colrop(black, x+1, y+1, p->width-3, p->height-3); x1 = x + p->width - 1; y1 = y + p->height - 1; hline(y, x, x1, white); hline(y1, x, x1, white); vline(x, y, y1, white); vline(x1, y, y1, white); } pull_text(x, y, p) int x, y; Pull *p; { col_pull_text(x, y, p, white); } spull_text(x, y, p) int x, y; Pull *p; { col_pull_text(x, y, p, white); } col_pull_text(x, y, p, color) int x, y; register Pull *p; int color; { extern WORD handle; vst_color(handle, gemctable[color]); vswr_mode(handle, 2); v_gtext(handle, x, y+7, p->data); } static WORD cx, cy; /* offset of "menu" level lettering aka amiga terminology */ static WORD ccx, ccy; /* offset of drop downs */ static WORD sx, sy; /* offset of selection */ static Pull *cchild; static Pull *select; WORD menu_down; WORD sel_hi; WORD *abehind, *bbehind, *cbehind; /*buffers for menu-bar, drop-down, and hilit selection */ static unselect() { if (select) { undraw_pull(sx, sy, select, cbehind); select = NULL; sel_hi = -1; } } static unchild() { unselect(); if (cchild) { undraw_pull(ccx, ccy, cchild, bbehind); cchild = NULL; menu_down = -1; } } pull() { WORD cline_size, cbehind_size; /* dimensions of hilight box in bytes */ WORD x, y; /* root offset */ WORD i, j; Pull *child; Pull *scratch; WORD scx, scy; /* scratch (selection) offset */ unsigned char c; Pull *p; p = cur_pull; select = cchild = NULL; menu_down = sel_hi = -1; pull_hit = 0; abehind = bbehind = cbehind = NULL; x = p->xoff; y = p->yoff; for (;;) { check_input(); if (key_hit) { c = key_in; if (c == 0) processed_key = key_in; else processed_key = c; reuse_input(); goto outta_pul; } else { child = p->children; i = 0; while (child) { cx = x + child->xoff; cy = y + child->yoff; if (in_pblock(cx, cy, child)) { if (menu_down != i) { unchild(); if ((cchild = child->children) != NULL) { ccx = cx + cchild->xoff; ccy = cy + cchild->yoff; if ((bbehind = draw_pull(ccx, ccy, cchild) ) == NULL) { goto outta_pul; } } menu_down = i; } break; } next_child: child = child->next; i++; } if (cchild != NULL) { if (in_pblock(ccx, ccy, cchild)) { scratch = cchild->children; j = 0; while (scratch) { scx = ccx + scratch->xoff; scy = ccy + scratch->yoff; if (in_pblock(scx, scy, scratch)) { if (sel_hi != j) { unselect(); select = scratch; sx = scx; sy = scy; sel_hi = j; cline_size = cbehind_size = Raster_line(scratch->width); cbehind_size *= scratch->height; if ( (cbehind = paskmem(cbehind_size) ) == NULL) { goto outta_pul; } hide_mouse(); copy_blit(scratch->width, scratch->height, scx, scy, cscreen, 160, 0, 0, cbehind, cline_size); draw_frame(red, scx, scy, scx+scratch->width-1, scy+scratch->height-1); show_mouse(); } if (PJSTDN) { if (select != NULL) { if (in_pblock(sx, sy, select)) { pull_hit = 1; menu_ix = menu_down; sel_ix = sel_hi; } goto outta_pul; } } goto end_one_input; } scratch = scratch->next; j++; } } } if (PJSTDN || RJSTDN) { goto outta_pul; } } end_one_input: ; } outta_pul: unchild(); wait_penup(); } paint_pull(x, y, p) register int x, y; register Pull *p; { if (p == NULL) return; (*p->see)(x, y, p); p = p->children; while (p) { (*p->see)(x + p->xoff, y+p->yoff, p); p = p->next; } } undraw_pull(x, y, p, abehind) register int x, y; register Pull *p; WORD *abehind; { WORD abehind_size; WORD aline_size; aline_size = abehind_size = Raster_line(p->width); abehind_size *= p->height; hide_mouse(); copy_blit(p->width, p->height, 0, 0, abehind, aline_size, x, y, cscreen, 160); show_mouse(); pfreemem(abehind); } WORD * save_behind(x, y, p) register int x, y; register Pull *p; { WORD *abehind; WORD abehind_size; WORD aline_size; aline_size = abehind_size = Raster_line(p->width); abehind_size *= p->height; if ( (abehind = paskmem(abehind_size) ) == NULL) return(NULL); /* not enough memory */ copy_blit(p->width, p->height, x, y, cscreen, 160, 0, 0, abehind, aline_size); return(abehind); } WORD * draw_pull(x, y, p) register int x, y; register Pull *p; { WORD *abehind; hide_mouse(); if ((abehind = save_behind(x, y, p)) == NULL) return(NULL); /* not enough memory */ paint_pull(x, y, p); show_mouse(); return(abehind); } unxmenu(p) register Pull *p; { while (p) { p->data[0] = ' '; p = p->next; } } xone(p, one) register Pull *p; register int one; { while (--one >= 0) p = p->next; p->data[0] = 175; } xonflag(p, flag) register Pull *p; WORD flag; { if (flag) p->data[0] = 175; else p->data[0] = ' '; } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" #include "flicmenu.h" Pull pageup_pull = { NONEXT, 1, 1+3*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Page Up <-", pull_text, }; Pull pagedown_pull = { &pageup_pull, 1, 1+2*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Page Down ->", pull_text, }; Pull lineup_pull = { &pagedown_pull, 1, 1+1*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Line Up ", pull_text, }; Pull linedown_pull = { &lineup_pull, 1, 1+0*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Line Down ", pull_text, }; Pull rwindow_pull = { NONEXT, -1, CH_HEIGHT, 2+14*CH_WIDTH, 2+4*CH_HEIGHT, &linedown_pull, NODATA, pull_oblock, }; Pull window_pull = { NONEXT, 57*CH_WIDTH, 0, 12*CH_WIDTH, CH_HEIGHT, &rwindow_pull, "Window", spull_text, }; Pull separate_pull = { NONEXT, 1, 1+5*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Separate <", pull_text, }; Pull sort_pull = { &separate_pull, 1, 1+4*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Sort Tracks >", pull_text, }; Pull packb_pull = { &sort_pull, 1, 1+3*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Pack Both ", pull_text, }; Pull pack_s_pull = { &packb_pull, 1, 1+2*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Pack Sound ", pull_text, }; Pull pack_v_pull = { &pack_s_pull, 1, 1+1*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Pack Video ", pull_text, }; Pull duration_pull = { &pack_v_pull, 1, 1+0*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Duration D", pull_text, }; Pull rtime_pull = { NONEXT, -1, CH_HEIGHT, 2+14*CH_WIDTH, 2+6*CH_HEIGHT, &duration_pull, NODATA, pull_oblock, }; Pull time_pull = { &window_pull, 45*CH_WIDTH, 0, 12*CH_WIDTH, CH_HEIGHT, &rtime_pull, "Time", spull_text, }; Pull loadb_pull = { NONEXT, 1, 1+6*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Load Block B", pull_text, }; Pull free_pull = { &loadb_pull, 1, 1+5*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Free Block F", pull_text, }; Pull delete_pull = { &free_pull, 1, 1+4*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Delete [Del]", pull_text, }; Pull insert_pull = { &delete_pull, 1, 1+3*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Insert [Ins]", pull_text, }; Pull paste_pull = { &insert_pull, 1, 1+2*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Paste +", pull_text, }; Pull cut_pull = { &paste_pull, 1, 1+1*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Cut -", pull_text, }; Pull capture_pull = { &cut_pull, 1, 1+0*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Capture *", pull_text, }; Pull rblock_pull = { NONEXT, -1, CH_HEIGHT, 2+14*CH_WIDTH, 2+7*CH_HEIGHT, &capture_pull, NODATA, pull_oblock, }; Pull block_pull = { &time_pull, 30*CH_WIDTH, 0, 12*CH_WIDTH, CH_HEIGHT, &rblock_pull, "Block", spull_text, }; Pull kill_pull = { NONEXT, 1, 1+4*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Kill Track K", pull_text, }; Pull examine_pull = { &kill_pull, 1, 1+3*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Examine X", pull_text, }; Pull loadr_pull = { &examine_pull, 1, 1+2*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Load Replay R", pull_text, }; Pull loadc_pull = { &loadr_pull, 1, 1+1*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Load Cyber C", pull_text, }; Pull playt_pull = { &loadc_pull, 1, 1+0*CH_HEIGHT, 14*CH_WIDTH, CH_HEIGHT, NOCHILD, "Play Track ?", pull_text, }; Pull rtracks_pull = { NONEXT, -1, CH_HEIGHT, 2+14*CH_WIDTH, 2+5*CH_HEIGHT, &playt_pull, NODATA, pull_oblock, }; Pull tracks_pull = { &block_pull, 15*CH_WIDTH, 0, 12*CH_WIDTH, CH_HEIGHT, &rtracks_pull, "Tracks", spull_text, }; Pull quit_pull = { NONEXT, 1, 1+8*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "Quit Q", pull_text, }; Pull new_pull = { &quit_pull, 1, 1+7*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "Clear All [Clr]", pull_text, }; Pull memory_pull = { &new_pull, 1, 1+6*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "Memory M", pull_text, }; Pull save_pull = { &memory_pull, 1, 1+5*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "Save S", pull_text, }; Pull playl_pull = { &save_pull, 1, 1+4*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "Play Loop [Ret]", pull_text, }; Pull play_pull = { &playl_pull, 1, 1+3*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "Play Once P", pull_text, }; Pull load_pull = { &play_pull, 1, 1+2*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "Load L", pull_text, }; Pull dots3a_pull = { &load_pull, 1, 1+1*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "---------------", pull_text, }; Pull aboutf_pull = { &dots3a_pull, 1, 1+0*CH_HEIGHT, 15*CH_WIDTH, CH_HEIGHT, NOCHILD, "About AVS", pull_text, }; Pull rcyreplay_pull = { NONEXT, -1, CH_HEIGHT, 2+15*CH_WIDTH, 2+9*CH_HEIGHT, &aboutf_pull, NODATA, pull_oblock, }; Pull cyreplay_pull = { &tracks_pull, 1*CH_WIDTH, 0, 12*CH_WIDTH, CH_HEIGHT, &rcyreplay_pull, "AVS", spull_text, }; Pull root_pull = { NONEXT, 0, 0, 640, 10, &cyreplay_pull, NODATA, pull_block, }; /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" extern char *qfile(); struct track *block_buf; int block_count; int lowest_b() { struct track *t; int i, lo; if ((t = block_buf) == NULL) return(0); i = block_count; lo = t->start; t++; while (--i > 0) { if (t->start < lo) lo = t->start; } return(lo); } free_block() { int i; struct track *t; if ((t = block_buf) != NULL) { i = block_count; while (--block_count >= 0) { unlink_track(t++); } freemem(block_buf); block_buf = NULL; block_count = 0; } } qfree_block() { if (yes_no_line("Free Block Memory?") ) free_block(); } qload_block() { int i; struct track **btracks; if (cyr_name("Load .AVS file into block")) { free_block(); if ((btracks = begmem(TRACKS*sizeof(*btracks) )) == NULL) goto OUT; if ((block_buf = begzeros(TRACKS*sizeof(*block_buf))) == NULL) { freemem(btracks); goto OUT; } for (i=0; i= 0) { copy_structure(*s++, d, sizeof(*d) ); if ((tl = d->lib) != NULL) tl->links++; d++; } return(1); } int x1, y1, x2, y2, x0, y0, dx, dy; int tr1, tr2, tr0, dtr; int tik1, tik2, tik0, dtik; arrow_wait() { for (;;) { check_input(); if (key_hit) arrow_keys(); if (RJSTDN) return(0); if (PJSTDN) return(1); } } define_block() { top_message("Select start of block..."); if (!arrow_wait()) return(0); x1 = mouse_x; y1 = mouse_y; tr1 = which_t(mouse_y); if (tr1 < 0) return(0); tik1 = tik_pos(mouse_x); top_message("Select end of block..."); if (!arrow_wait()) return(0); x2 = mouse_x; y2 = mouse_y; tr2 = which_t(mouse_y); if (tr2 < 0) return(0); tik2 = tik_pos(mouse_x); tik0 = tik1; if (x1 < x2) { x0 = x1; dx = x2 - x1; dtik = tik2 - tik1; } else { x0 = x2; dx = x1 - x2; tik0 = tik2; dtik = 0; } if (y1 < y2) { y0 = y1; dy = y2 - y1; tr0 = tr1; dtr = tr2 - tr1; } else { y0 = y2; dy = y1 - y2; tr0 = tr2; dtr = tr1 - tr2; } return(1); } qcapture_block() { capture_block(); hide_mouse(); refresh_pull(); show_mouse(); } capture_block() { int t1, t2, swap; if (define_block()) { if (snip_block( tr0, dtr+1)) return(1); } return(0); } erase_block_pos() { int i; for (i=tr0; i<=tr0+dtr; i++) { free_track(tracks[i]); hide_mouse(); redraw_track(i); } } qcut_block() { if (capture_block()) { erase_block_pos(); } hide_mouse(); refresh_pull(); show_mouse(); } add_toff_t(t, off) struct track *t; int off; { t->start += off; if (t->start < 0) t->start = 0; } qpb() { int i, dtr, tik, toff; struct track *t; top_message("Click on start of where to paste block..."); wait_click(); if (!PJSTDN) { return; } dtr = which_t(mouse_y); if (dtr < 0) { return(0); } tik = tik_pos(mouse_x); if (tik < 0) tik = 0; toff = tik - lowest_b(); t = block_buf; hide_mouse(); for (i=dtr; ilib != NULL) { t->lib->links++; add_toff_t(tracks[i], toff); } redraw_track(i); t++; } } qpaste_block() { qpb(); hide_mouse(); refresh_pull(); show_mouse(); } qdelete_block() { int i; struct track *t; struct track **tbuf, **tt; if (define_block()) { if ((tbuf = begmem((dtr+1)*sizeof(*tbuf))) != NULL) { for (i=tr0; i<=tr0+dtr; i++) /* mark tracks as free and save them */ { t = tracks[i]; free_track(t); tbuf[i-tr0] = t; } for (i=tr0; istart >= tik0) add_toff_t(t, -dtik); } freemem(tbuf); time_ticks -= dtik; sound_ticks -= dtik; video_ticks -= dtik; } } hide_mouse(); redraw_frame(); show_mouse(); } qinsert_block() { int i; struct track *t; struct track **tbuf, **tt; if (define_block()) { for (i=TRACKS-dtr-1; itype != TR_NONE) /* if any let user say NO! */ { if (!yes_no_line("Delete tracks at end?") ) goto OUT; } } if ((tbuf = begmem((dtr+1)*sizeof(*tbuf))) != NULL) { tt = tbuf; /* mark end tracks as free and save em*/ for (i=TRACKS-dtr-1; istart >= tik0) add_toff_t(t, dtik); } freemem(tbuf); time_ticks += dtik; sound_ticks = tik0; video_ticks = tik0; } } OUT: hide_mouse(); redraw_frame(); show_mouse(); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include "flicker.h" extern just_sound(), aniwait(); play_seq_track(t) struct track *t; { struct tlib *tl; int i, j; long time, t2; WORD *d; struct seq_lib *s; if ((tl = t->lib) == NULL) return; if ((s = tl->image) == NULL) return; Setscreen(-1L, -1L, 0); /* change to lo res */ copy_screen(s->first_frame, pscreen); time = get60hz() + t->speed; for (i=0; iframes_read; i++) { check_input(); if (key_hit) break; if (d = s->deltas[i]) { Setpallete(d); do_deltas(d, pscreen); } for (;;) { t2 = get60hz(); if (t2 >= time) { time = t2+t->speed; break; } Vsync(); } } Setscreen(-1L, -1L, 1); /* change to medium res */ Setpallete(sys_cmap); } qplay_track() { struct track *t; top_message("Select track to play..."); if (sel_track()) { t = tracks[track_ix]; play_track(t); if (t->type == TR_SEQ) redraw_frame(); else refresh_pull(); } else { hide_mouse(); refresh_pull(); } show_mouse(); } qplay_imm() { struct track *t; track_ix = which_track(); if (track_ix >= 0) { t = tracks[track_ix]; play_track(t); if (t->type == TR_SEQ) redraw_frame(); show_mouse(); } } play_track(t) struct track *t; { hide_mouse(); switch (t->type) { case TR_SEQ: play_seq_track(t); break; case TR_SPL: play_spl_track(t); break; } } struct vparams { long start_time; WORD **deltas; long dcount; int speed; int loops; WORD *frame1; }; struct vparams vlist[TRACKS+1]; struct sparams { long start_time; char *samples; long scount; int speed; int loops; }; struct sparams slist[TRACKS+2]; play_spl_track(t) struct track *t; { struct tlib *tl; struct sparams *s; struct vparams *v; if ((tl = t->lib) == NULL) return; listen(0, just_sound, tl->image, tl->samples, (long)t->speed); } play(loops) int loops; { struct track *t, *strack; struct tlib *slib, *vlib; struct seq_lib *sq; int i; struct vparams *v; struct sparams *s; int vi, si; struct track *lt[TRACKS]; static char zero_buf[256]; copy_structure(tracks, lt, sizeof(lt) ); sort_word(lt, TRACKS, 1); s = slist; /*start off with a zero sample... this is a horrible kludge, but gets the keyboard to not fuck up if no sound at first */ s->start_time = 0; s->samples = zero_buf; s->scount = sizeof(zero_buf); s->speed = 0; s->loops = BIG_SHORT; si = 1; for (i=0; itype == TR_SPL) { slib = t->lib; s = slist+si; si++; s->start_time = t->start; s->samples = slib->image; s->scount = slib->samples; s->speed = t->speed; s->loops = t->loops; } } s = slist+si; s->start_time = time_ticks; s->samples = NULL; vi = 0; for (i=0; itype == TR_SEQ) { vlib = t->lib; sq = vlib->image; v = vlist+vi; vi++; v->start_time = t->start; v->deltas = sq->deltas; v->dcount = sq->frames_read; v->speed = t->speed; v->loops = t->loops; v->frame1 = sq->first_frame; } } v = vlist+vi; v->start_time = time_ticks; v->deltas = NULL; hide_mouse(); Setscreen(-1L, -1L, 0); /* change to lo res */ for (;;) { listen(1, aniwait, slist, vlist, pscreen); if (!loops) break; for (;;) /* suck up keyboard input, break on escape */ { wait_a_jiffy(2); /* give keyboard interrupts chance to happen */ check_input(); if (key_hit) { if ((key_in&0xff) == 0x1b) /* escape */ goto OUT; } else break; } } OUT: Setscreen(-1L, -1L, 1); /* change to medium res */ Setpallete(sys_cmap); redraw_frame(); show_mouse(); } qplay() { play(0); } qplay_loop() { play(1); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" #include "flicmenu.h" sort_word(array, count, offset) WORD **array; WORD count; register WORD offset; { register WORD **pt1, **pt2; register WORD *swap; register WORD swaps; register WORD ct; bee_cursor(); --count; /* since look at two elements at once...*/ swaps = 1; while (swaps) { pt1 = array; pt2 = array + 1; ct = count; swaps = 0; while (--ct >= 0) { if ((*pt1)[offset] > (*pt2)[offset]) { swaps = 1; swap = *pt1; *pt1 = *pt2; *pt2 = swap; } pt1++; pt2++; } } cross_cursor(); } qsort_tracks() { sort_word(tracks, TRACKS, 1); hide_mouse(); redraw_frame(); show_mouse(); } qseparate() { sort_word(tracks, TRACKS, 0); hide_mouse(); redraw_frame(); show_mouse(); } cat_sound_t(t) struct track *t; { t->start = sound_ticks; sound_ticks += t->duration; if (sound_ticks > MAX_TICKS) sound_ticks = MAX_TICKS; if (sound_ticks > time_ticks) time_ticks = sound_ticks; } cat_video_t(t) struct track *t; { t->start = video_ticks; video_ticks += t->duration; if (video_ticks > MAX_TICKS) video_ticks = MAX_TICKS; if (video_ticks > time_ticks) time_ticks = video_ticks; } qpackem(seq, sou) WORD seq, sou; /* whether to include seq track and sound track */ { struct track *lt[TRACKS]; struct track *t; int i; copy_structure(tracks, lt, sizeof(lt) ); sort_word(lt, TRACKS, 1); if (seq) video_ticks = 0; if (sou) sound_ticks = 0; time_ticks = 0; for (i=0; itype) { case TR_SEQ: if (seq) cat_video_t(t); break; case TR_SPL: if (sou) cat_sound_t(t); break; } } hide_mouse(); redraw_frame(); show_mouse(); } qpack_both() { qpackem(1, 1); } qpack_sound() { qpackem(0, 1); } qpack_video() { qpackem(1, 0); } QSTATUS C rSEEMENU C thSEQ C xSPL C }TEXTBOX C "~TTLIB C ' TRACKS C + ALINE H 0FLICKER H 3FLICMENUH 8CYREPLAYLNK<eAVS PRGA"DEMO AVSsTLASER SEQvENGINE SPL%LASER SPL1/* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" extern struct tlib *tlibrary; char *about_lines[] = { " Audio-Video Sequencer", " by Jim Kent", "", "A program to mix Cyber .SEQ video", "files with ST Replay .SPL sound", "files. Developed for the November", "1988 issue of START.", "", "Copyright 1988 Antic Publishing", "", NULL, }; qabout() { continu_from(about_lines); } long bytes_used; int tracks_used; int libs_used; find_mem() { int i; register struct tlib *t; tracks_used = 0; for (i=0; itype != TR_NONE) tracks_used++; } libs_used = 0; bytes_used = 0; t = tlibrary; while (t != NULL) { libs_used++; bytes_used += sizeof(*t) + t->bytes; t = t->next; } } qmemory() { char buf1[60], buf2[60], buf3[60], *bufs[8]; bufs[0] = "AVS Memory and Track Usage"; bufs[1] = ""; bufs[2] = buf1; bufs[3] = buf2; bufs[4] = buf3; bufs[5] = NULL; find_mem(); sprintf(buf1, "%7ld bytes free memory", mem_free); sprintf(buf2, "%7ld bytes used in %d files", bytes_used, libs_used); sprintf(buf3, "%7d tracks used of %d", tracks_used, TRACKS); continu_from(bufs); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" #include "flicmenu.h" draw_a_menu(m) struct flicmenu *m; { if (m != NULL) { hide_mouse(); draw_menus(m); show_mouse(); } } hilit(m) struct flicmenu *m; { if (m->group) if (*m->group == m->identity) return(red); return(black); } a_block(color, m) WORD color; struct flicmenu *m; { colrop(color, m->x, m->y, m->width, m->height); } a_fframe(color, m) WORD color; struct flicmenu *m; { colrop(color, m->x-1, m->y+1, 2, m->height-2); colrop(color, m->x+m->width-1, m->y+1, 2, m->height-2); colrop(color, m->x-1, m->y-1, m->width+2, 2); colrop(color, m->x-1, m->y+m->height-1, m->width+2, 2); } a_frame(color, m) WORD color; struct flicmenu *m; { draw_frame(color, m->x, m->y, m->x + m->width, m->y + m->height); } black_block(m) struct flicmenu *m; { a_block(black, m); } wbtext(m) struct flicmenu *m; { wbtext_offset(m, 0, 0); } wbtext_offset(m, dx, dy) struct flicmenu *m; WORD dx, dy; { char *string = m->text; a_block(hilit(m), m); gtext( string, dx + m->x + (1+m->width)/2 - string_width(string)/2, dy + m->y + (1+m->height)/2 - CH_HEIGHT/2 - 1, white); } wbnumber(m) Flicmenu *m; { wbnum(m, 0); } wbnum(m, yoff) register struct flicmenu *m; WORD yoff; { char buf[10]; char *savetext; sprintf(buf, "%d", *((WORD *)m->text)); savetext = m->text; m->text = buf; wbtext_offset(m, 0, yoff); m->text = savetext; } inverse_c(m, c) struct flicmenu *m; struct cursor *c; { a_block(hilit(m), m); show_cursor(c, m->x + (1+m->width)/2, m->y + (1+m->height)/2, white); } extern struct cursor cleft, cright; left_arrow(m) struct flicmenu *m; { inverse_c(m, &cleft); } right_arrow(m) struct flicmenu *m; { inverse_c(m, &cright); } hilight(m) struct flicmenu *m; { WORD *save_group; if (m->seeme != NULL) { save_group = m->group; m->group = &m->identity; (*m->seeme)(m); m->group = save_group; } } draw_sel(m) struct flicmenu *m; { if (m != NULL && m->seeme != NULL) { (m->seeme)(m); } } fat_frame_text(m) struct flicmenu *m; { char *string = m->text; a_fframe(white, m); gtext( string, m->x + (1+m->width)/2 - string_width(string)/2, m->y + (1+m->height)/2 - CH_HEIGHT/2 - 1, white); } see_frame_text(m) struct flicmenu *m; { char *string = m->text; a_frame(white, m); gtext( string, m->x + (1+m->width)/2 - string_width(string)/2, m->y + (1+m->height)/2 - CH_HEIGHT/2 - 1, white); } see_number_slider(m) register Flicmenu *m; { register struct slidepot *slp; WORD width; WORD swidth; WORD nwidth; /* width of number */ WORD nval; WORD nmax; WORD xstart; char nbuf[10]; /* buffer for number */ slp = (struct slidepot *)m->text; a_block(black, m); swidth = m->width - 2; nval = slp->value - slp->min; nmax = slp->max - slp->min + 1; width = uscale_by(swidth, nval+1, nmax) - uscale_by(swidth, nval, nmax); sprintf(nbuf, "%d", slp->value+1); nwidth = strlen(nbuf)*CH_WIDTH+1; if (width < nwidth) width = nwidth; swidth -= width; xstart = 1+m->x + uscale_by(swidth, nval, nmax-1); colrop(white, xstart, m->y + 1, width, m->height-2); ctext( nbuf, xstart + 1 + (width - nwidth)/2, m->y + ((m->height-CH_HEIGHT)>>1)+1, black); } draw_menus(m) register struct flicmenu *m; { if (m->seeme) (*m->seeme)(m); if (m->children) draw_menus(m->children); if (m->next) draw_menus(m->next); } white_slice(m) Flicmenu *m; { color_hslice(m->y, m->height+1, white); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include "flicker.h" extern long calc_dlt_size(); extern char *getend(); free_cel(cel) register Cel *cel; { if (cel == NULL) return; freemem(cel->image); if (cel->mask) freemem(cel->mask); Free_a(cel); } Cel * init_cel(w, h) register WORD w, h; { register Cel *cel; if ((cel = Alloc_a(Cel)) == NULL) return(NULL); cel->image_size = LRaster_block((long)w, (long)h); cel->image = NULL; cel->width = w; cel->height = h; cel->mask = NULL; cel->xoff = cel->yoff = 0; return(cel); } Cel * alloc_cel(w, h) register WORD w, h; { register Cel *cel; if ((cel = init_cel(w, h)) == NULL) return(NULL); if ( (cel->image = (WORD *)laskmem(cel->image_size)) == NULL) { Free_a(cel); return(NULL); } return(cel); } struct seq_header s_head; struct neo_head n_head; int empty; char *errinfo[4]; ld_frame(fd, name) int fd; char *name; { char *cbuf; Cel *tcel; if (Fread(fd, (long)sizeof(n_head), &n_head) < sizeof(n_head) ) { file_truncated(name); return(0); } if (n_head.compress == NEO_UNCOMPRESSED) n_head.data_size = LRaster_block(n_head.width, (long)n_head.height); if (n_head.type != -1) { errinfo[1] = "Bad Cel Magic! File damaged!"; continu_from(errinfo); return(0); } if (n_head.data_size > 0) { if ((tcel = alloc_cel(n_head.width, n_head.height)) == NULL) { outta_memory(); return(0); } if (n_head.compress == NEO_CCOLUMNS) { if (n_head.data_size > 32000) { free_cel(tcel); mangled(name); return(0); } if ((cbuf = laskmem(n_head.data_size)) == NULL) { free_cel(tcel); outta_memory(); return(0); } if (Fread(fd, n_head.data_size, cbuf)image, n_head.data_size>>1); freemem(cbuf); } else { if (Fread(fd, tcel->image_size, tcel->image) < tcel->image_size) { file_truncated(name); free_cel(tcel); return(0); } } if (n_head.op != NEO_XOR ) { clear_screen(); if (n_head.compress == NEO_CCOLUMNS) twist_copy_celblit(n_head.xoff, n_head.yoff, tcel); else copy_celblit(n_head.xoff, n_head.yoff, tcel); } else { if (n_head.compress == NEO_CCOLUMNS) twist_xor_celblit(n_head.xoff, n_head.yoff, tcel); else xor_celblit(n_head.xoff, n_head.yoff, tcel); } free_cel(tcel); } else { if (n_head.op != NEO_XOR ) clear_screen(); else empty = 1; } return(1); } ld_seq(name, t) char *name; struct tlib *t; { int fd; struct seq_lib *s; int i; long dsize; WORD *dbuf; char nbuf[16]; errinfo[0] = name; errinfo[2] = NULL; s = NULL; if ((fd = Fopen(name, 0)) < 0) { couldnt_find(name); return(0); } if (Fread(fd, (long)sizeof(s_head), &s_head) < sizeof(s_head) ) { file_truncated(name); goto BAD; } if (s_head.magic != 0xfedc && s_head.magic != 0xfedb) { errinfo[1] = "Bad Magic! Not a Cyber Sequence"; continu_from(errinfo); goto BAD; } if ((s = begzeros(sizeof(*s))) == NULL) goto BAD; if ((s->first_frame = begmem(32000)) == NULL) goto BAD; t->bytes = 32000; if ((s->deltas = begzeros((int)(s_head.cel_count)*sizeof(char *))) == NULL) goto BAD; s->frame_count = s_head.cel_count; /* skip past the offset lists */ hide_mouse(); Fseek( s_head.cel_count * sizeof(long), fd, 1); cscreen = bscreen; sprintf(nbuf, "of %ld", s_head.cel_count); gtext(nbuf, 73*CH_WIDTH, 0, white); for (i=0; ifirst_frame) + 32; else dsize = 34; if ((dbuf = laskmem(dsize)) == NULL) { outta_memory(); goto BAD; } copy_words(n_head.colormap, dbuf, 16); if (empty) dbuf[16] = 0; else { make_deltas(cscreen, s->first_frame, dbuf+16); } s->deltas[i] = dbuf; t->bytes += dsize; s->frames_read++; } if (!empty) copy_screen(cscreen, s->first_frame); } Fseek( sizeof(s_head) + s_head.cel_count * sizeof(long), fd, 0); cscreen = s->first_frame; /* re-read 1st frame */ if (!ld_frame(fd, name)) { goto BAD; } dsize = calc_dlt_size(cscreen, bscreen) + 32; if ((dbuf = laskmem(dsize)) == NULL) { outta_memory(); goto BAD; } copy_words(n_head.colormap, dbuf, 16); make_deltas(cscreen, bscreen, dbuf+16); s->deltas[0] = dbuf; t->bytes += dsize; s->frames_read++; cscreen = pscreen; Fclose(fd); if (s_head.speed == 0) s_head.speed = 400; t->default_speed = s_head.speed/100; t->samples = s->frames_read; t->image = s; show_mouse(); return(1); BAD: cscreen = pscreen; Fclose(fd); free_slib(s); show_mouse(); return(0); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include "flicker.h" struct dta_buf { char reserved[21]; char attributes; WORD time; WORD date; long size; char name[14]; }; long file_size(name) char *name; { struct dta_buf *dta; dta = (struct dta_buf *)Fgetdta(); if (Fsfirst(name, 0) != 0) { couldnt_find(name); return(0); } return(dta->size); } ld_spl(name,t) char *name; struct tlib *t; { long size; char *pt; int fd; if ((size = file_size(name))==0) return(0); t->samples = size; t->default_speed = 3; t->bytes = size; if ((pt = lbegmem(size)) == NULL) return(0); if ((fd = Fopen(name, 0)) < 0) { couldnt_find(name); freemem(pt); return(0); } if (Fread(fd, size, pt) < size) { file_truncated(name); } sign8(pt, size); t->image = pt; Fclose(fd); return(1); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include "flicker.h" #include "flicmenu.h" /* This file does assume non-proportional text. Here's some constants that tell us how to format around the font */ #define CHAR_WIDTH 8 #define CHAR_HEIGHT 8 #define LINE_HEIGHT (CHAR_HEIGHT+2) #define BASELINE 6 /* This is the minimum border between the outside of the requestor box and the text inside */ #define BORDER 8 /* The width and height of the Continue "gadget" box */ #define CONT_WIDTH 80 #define CONT_HEIGHT 16 extern WORD mouse_on; /* a structure giving us the size and position of the entire requestor */ struct rectangle box, yes_box, no_box; static WORD omouse_on; static WORD *ocscreen; /* find_text_box(names) - Pass this an array of names terminated by a NULL, and this baby will figure out how wide and how tall a requester would have to be to hold it. Since live video-holes have to be on WORD boundaries, and vertically on even lines (I don't know why on even lines), this does a little padding to the width and height to insure this. Then it calculates the x and y offsets to center the thing. The results of all this are in the static variable "box", and also in the variable xborder, which tells you where to start your text on the left side so as to be centered. */ find_text_box(names) register char *names[]; /* NULL terminated array of strings */ { WORD width, height; WORD this_width; char *name; width = 0; height = 0; while ((name = *names++) != NULL) { height += LINE_HEIGHT; this_width = CHAR_WIDTH*strlen(name); if (this_width > width) width = this_width; } height += 2*BORDER; width += 2*BORDER; /* give us some room for the border etc */ box.MinX = (XMAX - width)>>1; box.MinX = ((box.MinX+7)&0xfff8); /* pad it to a byte boundary */ box.MinY = (YMAX - height)>>1; box.MaxX = box.MinX+width; box.MaxY = box.MinY+height; } d_top_lines_of_box(names, ypad) char *names[]; WORD ypad; { WORD xoff, yoff; WORD continu_size; char *name; find_text_box(names); box.MaxY += ypad; omouse_on = mouse_on; ocscreen = cscreen; cscreen = pscreen; hide_mouse(); copy_screen(pscreen, bscreen); /* draw the box around it all */ colblock(black, box.MinX, box.MinY, box.MaxX-1, box.MaxY-1); draw_frame(white, box.MinX, box.MinY, box.MaxX-1, box.MaxY-1); xoff = box.MinX + BORDER; yoff = box.MinY + BORDER; while ((name = *names++) != NULL) { gtext(name, xoff, yoff, white); yoff += LINE_HEIGHT; } return (yoff); } draw_white_box(b) struct rectangle *b; { draw_frame(white, b->MinX, b->MinY, b->MaxX-1, b->MaxY-1); } /* draw_yes_no_box() */ draw_yes_no_box(names, yes, no) char *names[]; char *yes; char *no; { WORD yesno_size; WORD yes_size; WORD no_size; WORD box_size; WORD x; WORD xoff, yoff; yoff = d_top_lines_of_box(names, CONT_HEIGHT+LINE_HEIGHT); yoff += LINE_HEIGHT/2 + BASELINE; yesno_size = 4; yes_size = strlen(yes); if (yes_size > yesno_size) yesno_size = yes_size; no_size = strlen(no); if (no_size > yesno_size) yesno_size = no_size; yesno_size += 2; box_size = (unsigned)(box.MaxX - box.MinX)/CHAR_WIDTH; box_size -= 2*yesno_size; xoff = box.MinX + CHAR_WIDTH*((box_size+1)/3); xoff = (xoff+4)&0xfff8; /* pad to a byte */ yes_box.MinX = xoff; yes_box.MaxX = xoff + yesno_size*CHAR_WIDTH; yes_box.MinY = yoff; yes_box.MaxY = yoff + CONT_HEIGHT; draw_white_box(&yes_box); gtext(yes, xoff + ((yesno_size - yes_size)>>1)*CHAR_WIDTH, yoff + ((CONT_HEIGHT-CHAR_HEIGHT)>>1), white); xoff = box.MinX + CHAR_WIDTH*(yesno_size + (2*box_size)/3); xoff = (xoff+4)&0xfff8; /* pad to a byte */ no_box.MinX = xoff; no_box.MaxX = xoff + yesno_size*CHAR_WIDTH; no_box.MinY = yoff; no_box.MaxY = yoff + CONT_HEIGHT; draw_white_box(&no_box); gtext(no, xoff + ((yesno_size - no_size)>>1)*CHAR_WIDTH, yoff + ((CONT_HEIGHT-CHAR_HEIGHT)>>1), white); show_mouse(); } /* draw_continue_box() given a NULL-terminated array of names, and a prompt to put in a box to tell it to go away, draw a requester, and cut out a hole so the video goes around it */ draw_continue_box(names, continu) char *names[]; char *continu; { WORD xoff, yoff; WORD continu_size; yoff = d_top_lines_of_box(names, CONT_HEIGHT+LINE_HEIGHT); yoff += LINE_HEIGHT/2 + BASELINE; xoff = box.MinX + BORDER; xoff += (box.MaxX - box.MinX - 2*BORDER - CONT_WIDTH)>>1; draw_frame(white, xoff, yoff, xoff+CONT_WIDTH-1, yoff+CONT_HEIGHT-1); continu_size = strlen(continu); yoff += ((CONT_HEIGHT-CHAR_HEIGHT)>>1); xoff += (CONT_WIDTH-CHAR_WIDTH*continu_size)>>1; gtext(continu, xoff, yoff, white); show_mouse(); } continu_line(line) char *line; { char *lines[2]; lines[0] = line; lines[1] = NULL; continu_from(lines); } continu_from(lines) char *lines[]; { continu_from_menu(lines); } continu_from_menu(lines) char *lines[]; { draw_continue_box(lines, "Continue"); wait_click(); hide_mouse(); copy_screen(bscreen, pscreen); cscreen = ocscreen; if (omouse_on) show_mouse(); wait_penup(); } inbox(b) struct rectangle *b; { if (mouse_x >= b->MinX && mouse_x <= b->MaxX && mouse_y >= b->MinY && mouse_y <= b->MaxY) return(1); return(0); } poll_yes_no() { unsigned char c; for (;;) { check_input(); if (PJSTDN) { if (inbox(&yes_box)) return(1); else if (inbox(&no_box)) return(0); } if (RJSTDN) return(0); if (key_hit) { c = key_in; if (c == 'n' || c == 'N') return(0); if (c == 'y' || c == 'Y') return(1); } } } yes_no_from_menu(lines) char *lines[]; { WORD answer; draw_yes_no_box(lines, "Yes", "No"); answer = poll_yes_no(); hide_mouse(); copy_screen(bscreen, pscreen); cscreen = ocscreen; if (omouse_on) show_mouse(); wait_penup(); return(answer); } yes_no_from(lines) char *lines[]; { int ret; ret = yes_no_from_menu(lines); return(ret); } yes_no_line(line) char *line; { char *buf[2]; buf[0] = line; buf[1] = NULL; yes_no_from(buf); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include #include "flicker.h" #include "flicmenu.h" struct tlib *tlibrary; extern char *getend(); free_slib(s) struct seq_lib *s; { WORD **pt; int i; if (s != NULL) { gentle_free(s->first_frame); i = s->frames_read; if ((pt = s->deltas) != NULL) { while (--i >= 0) gentle_free(*pt++); freemem(s->deltas); } freemem(s); } } free_a_tlib(l) register struct tlib *l; { switch (l->type) { case TR_SPL: gentle_free(l->image); break; case TR_SEQ: free_slib(l->image); break; } gentle_free(l->name); freemem(l); } clean_tlib() { register struct tlib *newlib, *l, *next; newlib = NULL; l = tlibrary; while (l != NULL) { next = l->next; if (l->links <= 0) free_a_tlib(l); else { l->next = newlib; newlib = l; } l = next; } tlibrary = newlib; } unlink_track(t) struct track *t; { if (t && t->lib) { t->lib->links -= 1; t->lib = NULL; } clean_tlib(); } struct tlib * in_tlibrary(name, type) char *name; WORD type; { register struct tlib *n; n = tlibrary; while (n != NULL) { if (strcmp(n->name, name) == 0 && n->type == type) return(n); n = n->next; } return(NULL); } struct tlib * get_tlib(name, type) char *name; WORD type; { register struct tlib *l; int ok; char buf[80]; char *lname; int fd; lname = getend(name); /* get name without path stuff too */ if ((l = in_tlibrary(name, type)) != NULL) return(l); if ((l = in_tlibrary(lname, type)) != NULL) return(l); if ((fd = Fopen(name, 0)) < 0) name = lname; else Fclose(fd); if ((l = begzeros(sizeof(*l))) == NULL) return(NULL); sprintf(buf, "Loading %s", name); top_message(buf); switch (type) { case TR_SEQ: ok = ld_seq(name, l); break; case TR_SPL: ok = ld_spl(name, l); break; } if (!ok) { freemem(l); return(NULL); } if ((l->name = clone_string(name)) == NULL) { outta_memory(); freemem(l); return(NULL); } l->type = type; l->next = tlibrary; tlibrary = l; return(l); } int spl_speed[] = {5000, 7500, 10000, 15000, 20000, 31000 }; set_duration(t) struct track *t; { switch (t->type) { case TR_SEQ: t->duration = t->speed*t->samples*t->loops; break; case TR_SPL: t->duration = t->samples*60/spl_speed[t->speed]*t->loops; break; } } attatch_tlib(t, tl, sname) struct track *t; struct tlib *tl; char *sname; { tl->links++; strcpy(t->name, sname); t->type = tl->type; t->speed = tl->default_speed; t->samples = tl->samples; t->lib = tl; t->loops = 1; set_duration(t); } /* Audio-Video Sequencer */ /* Copyright 1988 Antic Publishing */ /* by Jim Kent */ #include "flicker.h" int time_ticks; int video_ticks; int sound_ticks; struct track track_buf[TRACKS]; struct track *tracks[TRACKS]; int track_ix; int track_offset; free_track(t) struct track *t; { unlink_track(t ); t->type = TR_NONE; t->start = BIG_SHORT; } clear_tracks() { int temp; for (temp=0; temp= 0) return(1); } return(0); } print_track_start(y, t, color) int y; register struct track *t; int color; { char buf[8]; sprintf(buf, "%5d", t->start); gtext(buf, NAME_END+CH_WIDTH, y+1, color); } print_track_end(y, t, color) int y; register struct track *t; int color; { char buf[8]; sprintf(buf, "%5ld", t->start+t->duration); gtext(buf, START_END+CH_WIDTH, y+1, color); } print_track_slider(y, t, color) int y; register struct track *t; int color; { if (time_ticks > 0 && t->type != TR_NONE) { colblock(color, TBAR_START+uscale_by(t->start, TBAR_WIDTH, time_ticks), y+2, TBAR_START+uscale_by(t->start+(int)t->duration, TBAR_WIDTH, time_ticks)-1, y+8); } } dtrack(y, t) int y; register struct track *t; { int color; switch (t->type) { case TR_SEQ: color = green; break; case TR_SPL: color = red; break; default: color = black; break; } gtext(t->name, 1*CH_WIDTH, y+1, color); print_track_start(y, t, color); print_track_end(y, t, color); print_track_slider(y, t, color); } tvlines(y, height) int y, height; { height += y; colblock(white, 0, y, 0, height); colblock(white, NAME_END, y, NAME_END, height); colblock(white, START_END, y, START_END, height); colblock(white, STOP_END, y, STOP_END, height); colblock(white, XMAX-1, y, XMAX-1, height); } track_yoff(ix) int ix; { return(TRACK_YOFF+TRACK_HEIGHT*(ix-track_offset)); } onscreen_track(ix) int ix; { ix -= track_offset; if (ix < 0 || ix >= TRACKS_SEEN) /* don't draw it unless on screen */ return(0); return(1); } redraw_track(ix) int ix; { register int y; if (!onscreen_track(ix)) return; y = track_yoff(ix); color_hslice(y, 11, black); dtrack(y, tracks[ix]); color_hslice(y+11, 1, white); tvlines(y, TRACK_HEIGHT); } redraw_tracks() { int y; int i; y = TRACK_YOFF; for (i=0; i>3)&0xfffe) #define Mask_block(width, height) (Mask_line(width)*(height)) #define Raster_line(width) (((((width)+15)>>3)&0xfffe)*BITPLANES) #define Raster_block(width, height) (Raster_line(width)*(height)) #define LRaster_line(width) (((((width)+15)>>3)&0xfffe)*4) #define LRaster_block(width, height) (LRaster_line(width)*(height)) struct cursor { WORD type; UWORD *image; WORD width,height; WORD xhot, yhot; }; struct rectangle { WORD MinX, MinY; WORD MaxX, MaxY; }; #define BIG_SHORT 0x7fff #define BIG_INT 0x7fff #define BIG_LONG 0x7fffffff #define SCALE_ONE (1<<14) #define NOMEM 1 #define NOOPEN 2 #define TRUNCATED 3 #define BADFILE 4 struct seq_lib { WORD frame_count; WORD frames_read; WORD flags; WORD *first_frame; WORD **deltas; }; #define TR_ERASE 0 #define TR_SEQ 1 #define TR_SPL 2 #define TR_NONE 3 struct tlib { struct tlib *next; char *name; WORD type; long samples; WORD default_speed; WORD links; long bytes; void *image; }; struct track { WORD type; WORD start; long duration; WORD speed; WORD loops; long samples; char name[14]; struct tlib *lib; }; #define TRACKS 256 extern struct track track_buf[TRACKS]; extern struct track *tracks[TRACKS]; extern int track_ix; extern int track_offset; extern int time_ticks; extern int video_ticks; extern int sound_ticks; #define MAX_TICKS (3600*5+60*59+59) /* some defines to help format the main track mixing screen */ #define TRACKS_SEEN 14 #define TRACK_YOFF 32 #define TRACK_HEIGHT 12 #define NAME_END (14*CH_WIDTH) #define START_END (21*CH_WIDTH) #define STOP_END (28*CH_WIDTH) #define TBAR_START (STOP_END+3) #define TBAR_WIDTH (XMAX-TBAR_START-3) -1 RUN_OUT_KEYBOARD MOVE #11,-(A7) ;Key pressed? TRAP #1 ADD #2,A7 TST D0 BEQ RUN_OUT2 JSR WAIT_KEY MOVE.L D0,D1 SWAP D1 CMP.B #97,D1 BEQ MW_ENDIT CMP.B #27,D0 BEQ MW_PAUSE JMP RUN_OUT_KEYBOARD RUN_OUT2 RTS *----------Move Players----------* XPOS EQU 0 YPOS EQU 2 ANIMATE EQU 4 ;0-DOWN 1-RIGHT 2-UP 3-LEFT SPEED EQU 6 TIME EQU 8 STATUS EQU 10 STRETCH EQU 12 GRIDX EQU 14 GRIDY EQU 16 TYPE EQU 18 ;0-Wormy 1-Snake 2-Shades 3-Eraser PRIORITY EQU 20 DEAD EQU 22 BIRTH EQU 24 ACTIVE EQU 26 WAITING EQU 28 PLAYER_SIZE EQU 30 PLAYER_MAX EQU 12 MOVE_MEN LEA PLAYER_INFO,A /* This is the tree structure that is the core of the pull-down system */ struct pull { struct pull *next; WORD xoff, yoff, width, height; struct pull *children; char *data; /* actually just some old pointer, must agree with see function */ Vector see; }; typedef struct pull Pull; /* some defines to make it easier to edit skeletal pull data files... */ #define NONEXT NULL #define NOCHILD NULL #define NODATA NULL extern WORD menu_ix, sel_ix, pull_hit; /* returned by pull() */ /*some functions to put into pull->see */ extern pull_block(), pull_color(), pull_oblock(), spull_text(), pull_text(), pull_brush(); struct slidepot { WORD min, max, value; }; struct range { WORD min, max, v1, v2; }; struct grid { WORD divx, divy; }; /* struct flicmenu is the core structure for the "flat panel" menu's. */ struct flicmenu { struct flicmenu *next; struct flicmenu *children; WORD x, y; WORD width, height; char *text; int (*seeme)(); int (*feelme)(); int *group; int identity; WORD key_equiv; }; typedef struct flicmenu Flicmenu; #define NOTEXT NULL #define NOSEE NULL #define NOFEEL NULL #define NOGROUP NULL #define NOKEY 0 extern Flicmenu *cur_menu; extern char break_menu; Untitled ReportUntitled ReportUntitled ReportUntitled ReportUntitled ReportUntitled Reportablits.o aline.o blasthli.o colorit.o clock.o cursorda.o cyreplay.o cyrfile.o deltas.o duration.o examine.o feelmenu.o filereq.o gfx.o init.o input.o memory.o multiops.o names.o listen.o prim.o pull.o pulldata.o qblock.o qplay.o qsort.o qstatus.o rundown.o seemenu.o seq.o sound.o spl.o textbox.o tlib.o tmult.o tracks.o Untitled ReportUntitled ReportUntitled ReportUntitled Report+\MbO;{be3Y $BT#P+1Щu`YNBNV=n=n =|||||=n =n=n=n-n-n=|=|=n=n=|=|BHnazXOJ@gHnaDXOJ@g HnNXON^NuNVH&n8+7k7D8+7k7DLN^NuNV/ &n/ aXO/ aXO=@/ aXO0.&_N^NuNVH &n8+|l :+|m pL0N^NuSJDokJEnp`JklpkSpkkpkkJklpkkpkkpkk|o0|S|o 0|ȑkp`~NV?</. ?. ?.a&O N^NuNV?</. ?. ?.aO N^NuNV/ &n =k=k=|nnnnBn0n=@Bn0+n =@-k(-mF=|=|0+|@@=@=|=|=|BHnNXOJ@g HnNXO&_N^NuNV?</. ?. ?.a&O N^NuNV?</. ?. ?.aO N^NuNV/ &n =k=k=|nnnnBn0n=@Bn0+n =@-k(-mF0+@=@=|0+|@=@=|=|=|BHnNXOJ@g HnNXO&_N^NuNV/ &n=k=k=|||||=n=n =n-mFBnBn-k=|0+|@=@Bn=|=|=|BHnNXOJ@g HnNFXO&_N^NuNV/ &n?.0.k ?2. k ?/ N0O &_N^Nu/ $_ NuH",o LDNu/ $_NuH>(|0/4@@(t/2FRG"mF0$|$&|D m^l~-Xg$-Zf0-\HA`"p2)SA=A`0-\HA`"p2)| =AJnlBn0-\HA`"p3nN"?-\NpnTON"` m^l-Xg$-Zf0-\HA`"p2)RA=A`0-\HA`"p2)| =A0.m`m 0-`S@=@0-\HA`"p3nN"?-\NoTON"`&-Xg-ZfN~`NN!NN!`.N N^NuNVN BgNTON^NuNVN!?-?< BgN6f\O?-BgBg/.N6O N!N^NuNV?-?<?< N64\ON^NuNV/-BgBgN=8PON^NuNVa?-?<?< N6\O?-?<?<HzN6`O ?-?<?<pHzN6HO ?-?<?<HzsN60O ?-?<?<@Hz`N6O ?-`Hz^HnNoO ?-?<?<(HnN5O ?-?<?<N5d\ONnN^NuNAMESTARTSTOPTIME POSITION%5d TICKSNVJm`nN^Nu0-\HA`-p n0H`=m`=m` `SgSg`Jmbg?-^NnTO=@0.H nШ2-`Hm0-`H nS=@JnlBn n0(ngh?-\Nm`TO=@N?-/.?.NkPO n1n?./.?.NkPO?./.?.Nk@PO?./.?.Nk|PONN-Xg`0`NV0-dH`0-fH`BNP`NN `HNL`BNM`NDL`8NE`2NDX`,N?`&N?(` ܰd 0;N`0-fH`0N`N2XONb-Xg-ZfNf;@\Jm\mNNNPNN^NuSelect track to load with STReplay SampleNVHz>NXON-Xg-ZfNe;@\Jm\mNNTNNdN^NuSelect track to load with Cyber SequenceNVHzJNVXONeVJ@g*0-\HA`-p/.NdfXON?-\NgTONNhNN^NuSelect track to delete...NVHzHzlNjPO-@gN0-\HA`-p/.NcXO?</.Na\O-@gHml/./.NcO /.NH$XONJNNZN^NuLoad Cyber SequenceSEQNVHzHzlNPO-@gN0-\HA`-p/.NclXO?</.N`\O-@gHml/./.NbO /.NGZXONN`NN^NuLoad STReplay SampleSPLNVBm`BmBmN^NuNVHz"N_ XOJ@gNcaNfN NvN^NuClear all video and sound tracks from memory?NV0-||lBRmN-mFHx`@/. nHhN~O 0-| ?NeTONN^NuNV0-||l&m0-||o;|NNHNN^NuNVJmomJmlBmNzNNN^NuNVJmoHz\/.NxPOJ@fHzO/.NuPOHzF/.NaPO-@f/.NXO`?-`Hz"/.NbnO N\=@Bn`0.HA`-p .м-@ n-hgJ-g n-h n0H`l n?( "n?)$n?*/.Hz/.NaO`H n?( "n?)$n?*/.Hz/.NaO`Hz/.NaPO` SgSg`Rn0.nm6/.Nf XON(NN8N^NuSave AVS FileAVS.AVS.AVSwTICKS %d SEQ %s %d %d %d SPL %s %d %d %d H0 o "o 46C` """"""""Q|`"QL NuH8 o"o$oBBBC2<?TJ(fXCQ`4$RB6<Q o0 LNuB2<? o"oV|g\QTNuCancelOKticks:JiffiesSecondsMinutesNV/.NXOa,N^NuNV/.NVXOaN^NuNV/.NXOaN^NuNVaHmNEXON^NuNV0-R@2-RAXOHmPNXOJ-f?<"/-HmNnO `VNVHz$N>XONV>J@gNN NN N^NuSelect track to examine...NV n-h n0-^hS@=@ n0( U@=@Jnl n0N^Nu0.nm n0(`?. n"n0(QR@??.NT\O nP`NV n-h/.NrXO=@ n0(ng"N  n1n/. n"hNXON N^NuNVHz/.aPON^NuNV/. n NXON -XgJmbg /. n NXO`N^NuNV m-h n"n0(il nRh/-N?XON^NuNVNrXO n+hHzaXO/.N?&XONN^NuNV m-h n"n0(Qo nSh/-N>XON^NuNVNp/.N>XO n+hHzN.XO/.N>XON\N^NuNVB-B--m+nJ-frNnJmTgLmk . gZp.R@A0<gJ.f;mj` p.;@/.aPXO`-Xg-Zf /.NXO`+nB-N^NuNV||N^NuNV|N^NuNV/ &n fp&_N^Nu/aXOJ@gp`/+aXOJ@gp`0+"mfJg / kNXOp`p`NV/ &n fp&_N^Nu/aXOJ@gp`/+aXOJ@gp`0-^km>2+k 4-^An.6-Nk m$0k 2mNnJg / kNXOp`p`NV?<NjTO;@BgHm?<GNjPO0-|A@|:B-HmHmNjPOHzHmNjPON^Nu\NVH z&n(n KRHH`^ f BL0N^NuSHH`RB`搼:g"g``6<:g<\g Jg LR\ LRB` LR`JgԐ*g```NVH&n(K LR<:g<\f&LJf LN^Nu``NVH&n /./ NiPO/ aXO&@ KRg<.fSB``LN^NuNV/.HzHnNT:O HnHmHzHmNT"OHnHmtHzHmlNT OHnHmlHmNiHO =@JngJnfpN^NuHmHmNPO -:f-H|A;@HmtHmlN"POHmHmBNhPOHmlHmBNhDPOAB `.%s%s*%s%s%s oH?80<r$&(*,.$G&J(K}H8H8H8H8QLNu0< o"oH?8`*LHLH(LHPLHxQLNuNVBR UmNHm?<Nh\ONHmBg?-NiPON?AVS can't run on black and white systems, sorryNVND mJ1mL mJ1mN mJ1mf?-HxHx?<NeHO JmgHm?<Ne2\ONJmg ?-NeTO mgBgNhxTON^NuNV;| N^NuNV/ Jm g Bm &_N^Nu;m^;mN&mJ;mXZ;k^;kN;kX?< NdTOJ@g2;|T?<NdTO-@ .=@0.np0.+@h`BmT0-^mf2-Nmf4-XmZfBmb`;|b`bNVBg?-NepXOBmN^NuNVBg?-Nf.XO;|N^NuNVB?<Nd\ON^NuNVB?<Ndr\ON^NuNV-XfN^NuN-Xg``NVNJmTf"-Xg-Zg-Xg-Zg`N^NuNV? +f E ` +o(K( +)@ E `* &S`Nrp`NVn np0./NFXO-@fpN^Nup0. nX .`NV?.aTO-@fN .N^NuNV?.aTO-@g?./.Nl\O .N^NuNV/.aXO-@fN .N^NuNV /.NXO-@fpN^Nu nX  .`NVJg/.aXON^NuNVH Y n*(.ۭ&m f+D&DB'E`d&+D D D!E Dűf D D +Ѩ`v(K&S gR Df۬ Dűf +Ѭ(`L Dűf D +Ѕ!@ D (`0d D ( D!E`` Df۬` ( DB D!EL0N^Nu o0/2<`0QNu` o"o0/ `2QNu o"o0/ `HfQNuB@Nu o"o0/ H`2QNu o0/2/ `0QNu o"o / "ꉳo:`# # # # # # # # Sj|H`3 QNu""""""""Sj|H`2QNu o"o0/ or2`# QNu"QNuNV/.N^XO?/. N^XO2@HӮ/. /.N^POJ@fp`pN^NuNV/.N^XO=@0.R@?NTO-@g/./.N^PO .N^NuF'3*,9&,Fܹ !34"9abF$J9fNu2<*y********QNu- yK@2<*QNuJ9-fa(9R#"9&gN*AkH"-gF'#3*,A,-܁!342- a&F$"9 gj*Akd"-g`## A3$2- H#"-###/ a$*_ maR .2Nu# ,Nu#&!34ra`ZB `>B9,B B"9ҹ#(9 gSj&29$SAg3$# #`(DX# (T# "y-46C`J¼g*g`a<""""""""""""""""""""""""""""""""Q`|`"QJ¼g*g`aJ9,f$9n`NuH#B#F&#J #NaDB?< NA\#aGa$|"yF'!34F$NF'aa9g9`F /9?< NA\LNuNsSy*g",yBGnO 3p03pNsF'H@!34raLB9F$Ns | Nu |yyyyyy yNuHz`Hz?<?<NNPNuH"|||AI20AIA || || | LNu ||||||||| | |Nu                                                                                                                                                                                                                                                                                                                                                   )NVSnJnm ?<%NQ6TO`N^NuNVH&nx?.6n????a.PO???? a"PO?? ??a8PO?? ??a,POLN^NuNV?.?. ?.?. ?.a*O N^NuNV?. ?.?. ?.?.aO N^NuNVH8. :. <.>.&mJFo =F<8.Go =G>:.JGm|mLN^NuJFm|m`JElzJDlx|m<<|m><?.????NO `NV/ &mJ0. n?2. n??. ?. ?.NHO &_N^NuNV/-FNXON^NuNV?. ?. 0.PHЭF/NPON^NuNV0.A0H??-NQXO?<?-NQXO/.0.^@??. ?-NOO N^NuNV0.A0H??-NQ6XOBg?-NQ^XO/.0.^@??. ?-NOO N^NuNVTn-m 0.Hѭ n0 .TN^NuNVU n0H N^NuNV/ &nBn g,0+|@@ =@0.no=n&S`0.&_N^NuNV-mBJg\ n-h n0(|@@"n ?$n/* NrXO2@p0-@ .o-n n-P`X/.NfXO+@ fpN^Nup`NV/ &n 0-^nm62-Nn m,0+n0+ n 0-^nn2-Nn np&_N^Nup`NV/ &n 0+ U@?2+SA??. ?.?-NjO ?-0+nS@??.2+ n SA?NrPO&_N^NuNV/ &n 0+ W@?2+WA?4. RB?6.RC??-NO 0+nS@=@0+ n S@=@?-?.?.?. NPO?-?.?.?.NPO?-?.?. ?.NPO?-?.?. ?.NPO&_N^NuNV?-/. ?. ?.a&O N^NuNV?-/. ?. ?.aO N^NuNV/ &n 0.A0H??-NN:XO?<?-NN`XO/+0. ^@??.?-NLO &_N^NuNVJ g"/-(/- ?-?-NO B ;|N^NuNVaJg"/-$/-?-?-NdO B;|N^NuNV-mBB ;|;|BmVB(B$B n=h n=hN.JmTg&mkJ.f;mj` p.;@N`~ n-h BnJg n0(n;@ n0(n;@/.?-?-NPOJ@gb0-ذngVN n+h J g< m0(m;@ m0(m;@/-?-?-N@PO+@$f`;n` n-PRn`RJg/-?-?-NpPOJ@gz m-h BnJgd n0(m=@ n0(m=@/.?.?.N"POJ@g0-ڰngN+n ;n;n;n n0(|@@=@=@ n0. =@?.NTO+@(f`N?./-(BgBg?</-F?.?. n?( "n?)NO n0( nS@?"n2)nSA??.?.?-NO N-Xg8-Zf0J g*/- ?-?-NPOJ@g;|V;mؘd;mژf`8`2 n-PRn`-Xg-Zg-Xg -Zf``VNNN^NuNVH 8.:. &n fL0N^Nu/ ?? kNPO&k g/ 0+E?2+D? kNPO&S``NVH 8.:. &n 0+|@@=@=@0. =@N?</-F???./.BgBg?+ ?+N:ON/.N XOL0N^NuNVH 8.:. &n 0+|@@=@=@0. =@?.NTO-@f pL0N^Nu?./.BgBg?</-F???+ ?+NO .`NVH 8.:. &n N/ ??N`PO-@f pL0N^Nu/ ??NtPON .`NV/ &n g k &S`&_N^NuNVH&n8. SDJDm&S` kLN^NuNV/ &nJn g k` k &_N^NuPage Up <-Page Down ->Line Up Line Down WindowSeparate <Sort Tracks >Pack Both Pack Sound Pack Video Duration DTimeLoad Block BFree Block FDelete [Del]Insert [Ins]Paste +Cut -Capture *BlockKill Track KExamine XLoad Replay RLoad Cyber CPlay Track ?TracksQuit QClear All [Clr]Memory MSave SPlay Loop [Ret]Play Once PLoad L---------------About AVSAVSNV-m,fpN^Nu=m n=h"SnJno n0(nl n=h`0.`NV-m,g8=mSmJmm n"/N'>XO`/-,NXOB,BmN^NuNVHzN&XOJ@gaN^NuFree Block Memory?NVHzN:XOJ@gNv?<NTO-@g?<"NTO+@,f /.NDXO`jBn0.H n2."ҭ,!0." m,10." @,1|Rn nm/.NJXO;@/.NXONޚN>NުN^NuLoad .AVS file into blockNV/ N0. "?NTO&@Jfp&_N^Nu+K,;n 0.HA`Ј-@Sn Jn m0?<"/ nX/NrO -kg nRh"`p`NVN:JmTgN<-Xg-ZfpN^Nu-Xg -Zfp```NVHz4NXOaJ@fpN^Nu;m^;mN?-NN(TO;@Jmlp`?-^N,$TO;@HzNXONhJ@fp`;m^;mN?-NN(\TO;@Jmlp`?-^N+TO;@;m0-ްml ;mޙ0-m;@0-m;@`;m0-ސm;@;mBm0-ml&;m0-m;@;m0-m;@`$;m0-m;@;m0-m;@p`Select start of block...Select end of block...NVaN>NNNN^NuNVNzJ@g0-R@??-NXOJ@gpN^Nup`NV=m`(0.HA`/0N&^XON?.N)TORn0-m2.@oN^NuNVaJ@gaNۮN. |SGJGm(0H S2H"T40qo|*&(XX``NLN^NuNV?<?<Hm`aPONњN>NѪN^NuNVBg?<Hm`NfPONvNNцN^NuNV n1m n0(m mT_o;|T_0-m`o;m`N^NuNV n1m n0(m mT_o;|T_0-m`o;m`N^NuNV?<HnHm`N>O ?<?<HnNPOJngBmJn gBmBm`Bn0.HA-p n0H`$Jng /.NVXO`Jn g /.NXO`SgSgRn nmNTNNdN^NuNV?<?<NHXON^NuNV?<BgN4XON^NuNVBg?<N XON^Nu Audio-Video Sequencer by Jim KentA program to mix Cyber .SEQ videofiles with ST Replay .SPL soundfiles. Developed for the November1988 issue of START.Copyright 1988 Antic Publishing All Rights ReservedNVHmN.XON^NuNV/ BmBn0.HA`"p QgRmRn nmBmB0&m gRm +мѭ0&S`&_N^NuNV,A-H,A-H0A-H4A-H8AL-HO Hn,NHXON^NuAVS Memory and Track Usage%7ld bytes free memory%7ld bytes used in %d files%7d tracks used of %dH0 o "o$/o|0k:26C|@D@N"2222222222222222QU`|6C|@D@N"2222222222222222QS`L NuNVJgN"/.NXON,N^NuNV nJg n"h$n0j f0-N^Nu0-`NV n ?("n ?) $n ?* $n ?*?.N(O N^NuNV n 0(U@??<"n 2) RA?$n 4*SB??.NO n 0(U@??<"n 2) RA?$n "n 4*i SB??.NO ?< n 0( T@?"n 2) SA?$n 4*SB??.N|O ?< n 0( T@?"n $n 2) jSA?$n 4*SB??.N@O N^NuNV n "n 0( i?$n "n 2*i ?$n ?* $n ?*?.NO N^NuNV/.?-N\ON^NuNVBgBg/.aPON^NuNV n-h/./.N*XO?NR\O?- n0(R@H"ni n[@?$n2* RAH$njn ?/.N/XO@H2@?/.NO N^NuNVBg/.a\ON^NuNV/ &n k?Hz6HnNO -kA'H?. Bg/ N(PO'n&_N^Nu%dNV/./.NHXO?Np\O?- n0(R@H"ni ?$n2* RAH$nj?/. NO N^NuNVHm|/.aPON^NuNVHm/.N|PON^NuNV nJg6 n-h n .м !@/. n"hNXO n!nN^NuNVJg nJg/. n"hNXON^NuNV n-h/.?-N\O?- n0(R@H"ni [@?$n2* RAH$nj?/.N-*XO@H2@?/.N&O N^NuNV n-h/.?-N\O?- n0(R@H"ni [@?$n2* RAH$nj?/.N,XO@H2@?/.NݨO N^NuNVH&n(k/ ?-Nv\O0+ U@=@0,T=@0,TR@=@?.0.R@??.N`\O??.?.?.NL\O2@=A0,R@?HzHnNO HnN+XO@R@=@0.nl=n0.n0.S@??.?.N\OkR@=@0+U@??.2+ RA??.?-NO ?-0+| @k R@?2.nHnRA?HnN,O LN^Nu%dNV/ &nJg / kNXOJg/+aXOJg/aXO&_N^NuNV?- n0(R@?"n?) Nۜ\ON^NuNV/ &n f&_N^Nu/+(NXOJ0g /+0NXO/ NXO`NVH 8.:. ?<4NTO&@Jf pL0N^Nu0Hм2HN('@,B(7D7EB0BkBS `NVH 8.:. ??aXO&@Jf pL0N^Nu/+,NXO'@(f / N6XOp` `NVHmHx?.?<?N* O d/. NXOpN^NuJ-f0-|@@+@ mgA+HdHm`N XOp`Jo?-?-N6XO-@fNp` -f }o/.NnXO/. NXOp`p/-NXO-@f/.NDXONp`L/./-?.?<?N)*O l$/.NXO/. NXO/.N XOp` -/ n/((/.NO /.NXO`D n/(("n/),?.?<?N(O n,l/. NXO/.NXOp` -g4N -f/.?-?-NPO`/.?-?-NPO`. -f/.?-?-N`PO`/.?-?-N^PO/.NXO` -gN؊`;|p`Bad Cel Magic! File damaged!NV+n`BhBBg/.?<=N'PO=@J@l/.NXOpN^NuHmFHx?.?<?N'O d/.NhXO` mܛFg mۛFgA"+HdHm`NBXO`?<NżTO-@g?<}NŌTO n!@g n !|}0-L@?NńTO n!@ g n0LN?<?. -J/?<BN&O +mF/-JHzHnNO ?-Bg?<HHnN״O Bn`0.R@?Hz~HnNdO ?-Bg?< HnN~O Bm/.?.NF\OJ@gJngJmf n/(/-FNPOм -@`-|"/.NXO-@fNV`?</.HmNO Jmg nBh ` nHh "n/)/-FN*O 0.H n"h # n .Ѩ nRhJmf n/(/-FN0PORn0.HJmBg?. -J @Hh?<BN%fO n+hF/.?.N*\OJ@f`/-/-FNPOм -@/.NXO-@fNT`?</.HmNO nHh /-/-FNN$XOJmNf;|N n 0-NHd1@ n0(H"n #@ n !nN\p`+mPF?.?<>N$\XO/.NXON4p`Bad Magic! Not a Cyber Sequenceof %ld%4d o< /`SfNuNV?</N#TO-@Bg/.?<NN#POJg/.NXOpN^Nu n (`NV/.aXO-@fpN^Nu n !n n 1| n !n/.NXO-@fp`Bg/.?<=N#lPO=@J@l/.NXO/.NXXOp`/./.?.?<?N#6O l /.N XO/./.NPO n !n?.?<>N"XOp`HNV/ &nBnBn KX-Pg(n /.N"XO@=@0.no=n`nn0<n@;@@0-@^@|;@@0<Ȑn@;@B0-@n;@D0-Bn;@F&_N^NuNV/.N^XO0. mF;m$+mF&+mPFN/-/-PNPO0-FS@?2-DSA??-B?-@?-NѼO 0-FS@?2-DSA??-B?-@?-NO 0-@P@=@0-BP@=@ nX-Pg ?-?.?./.NҨO n `0.N^NuNV n0(S@?"n2)SA?$n?*$n??-NЀO N^NuNV?</.N\O=@n =|/. N!XO=@0.no=n/.N XO=@0.no=nTn0-Dm@H=@0.@n0.R@H@m@=@0.X@|=@;nH0.@n;@L;nJ0.|;@NHmHNXO?-0.X@?2.nAAn?/. NfO 0.@Hn@m@=@0.X@|=@;nP0.@n;@T;nR0.|;@VHmPNzXO?-0.X@?2.nAAn?/.NO NN^NuNV?</.Nj\O=@n 0-@P@=@0-Dm@|`@n0.|?2.|O??.?.?-NΚO /. N\XO=@Xn0.@rP@An?-?.?./. NBO N N^NuNV-nBHnaXON^NuNV/.aXON^NuNVHz:/.N&PON>N/-P/-NPO+m&FJm$gNNN^NuContinueNV n0-^Pm0"n2-^in"$n4-Njm$n6-NjnpN^Nup`NVN-Xg*-Zf"HmHaXOJ@gpN^NuHmPaXOJ@gp`-Xg -Zfp`JmTg.mk .ng .Nfp` .yg .Yfp```NVHzLHzD/.NO N`=@N/-P/-NbPO+m&FJm$gNN0.N^NuYesNoNV/.aXO=@0.N^NuNV-nBHnaXON^NuNVJgX n/(NJXO n=h n-h g*SnJnm nX/NXO` n/( N XO/.NXON^NuNV/ &n0+H`/+NXO`/+NvXO`SgSg/+NXO/ NXO&_N^NuNVH(m g(Jln/ aXO`(&L(D`+KLN^NuNVJg nJg n"hSi nBaN^NuNV/ &m g(/./+NPOJ@f0+n f &_N^Nu&S`p`NV/ /.NXO-@?. /.a\O&@Jg &_N^Nu?. /.a\O&@Jg `Bg/.?<=NPO=@J@l-n`?.?<>NXO?<NTO&@Jfp`/.HzHnN\O HnNXO0. H`$/ /.NPO=@`/ /.NPO=@`SgSgJnf/ NDXOp`>/.NXXO'@fN^/ N"XOp`7n &+K `Loading %sNV n0H`f n"n0)$n $n"* N!@`H n"n ) rNV/ A튞&HJ+ gAVep&_N^Nu`BBB `NV/ &n?<NTO-@f7| м'@&_N^Nu7| 'n+ H?NTOJ@g+ `NVH&n +( -@r2. cp0. -@( خ/ NXO?. N`TO(@Jg0g,?./ / NO m6e"m6d -6): LN^NuNVH  .^-@J6fA2+H25A2+H6Bn&m6( VfvRn noj c*.`*< /?<HN J\O(@Jf pL0N^Nu KXg &Y&L(K&A2(+LV D f&D+fL( (@,f&` *e*c Ю& S+P: S +S6 X`n &@`&`^NVp0./NXON^NuNV/ &nY+fp&_N^Nu+K6p`HHBJjDRDJjD Da>JDgDLJNuHHBJjDRDJjDa `/a "JNu/a"JNuH0HAJAf HA64B@H@"H@20BAHAL NuHA&"BAHAH@B@tЀӁbR@QL NuNV0. A"0HN^Nucon:CON:aux:AUX:prn:PRN:NV?. ?</.aPON^NuNVHA(HBn`A"lg" Rn nm;|pLN^NuA~&H`/./NPOJ@g Jf(+0. |R@=@.g DJf ;| p`.g DhJ(f ;| p`)k Dh DhA`)H/ / ?.?. /. D"hNOJ@lA()Hp`@0.`8NV. g/.?<ANF\O?./.?<=N4PO-@Jl00. |gBg/.?<N\Op` n!nA,"n#H. g?</.B?<BNO p`NV?. ?<>NXOpN^NuNV/ 0. A&@?./. /+HHA"pNO &_N^NuNV//. p0./?. ?<?N(O 8J@l;|p(N^Nu0`NV/J-?fZ|>B-@B-?Hm>?< N\O?< ?<NXO -@f B-?p(N^NuR-?-?HR@A>;|@-?H8no8.?/. 0-@HA>Ј/NO m@-?0`NVH&n x`?. NTTO KR<gRDnm0LN^NuNV/.?<AN$\OJg ;| pN^Nup`NV/ 0. A&@?./. /++HHA"pNO &_N^NuNV/. p0./?. ?<@NO -@f ;|pN^Nu .`NVH&n 8.`(  f?< ?<NrXO KRH??<N^XO0SDJ@f0.LN^NuNVH (.&n :.` KRH??N"XO0SEJ@f0.L0N^NuNVH||||A+H+H+|+|AC xAt0 C#RD|mHm>Hm?-jP >^: 6`RVmF a~6S 6`>jZP F^~ `RVmF a~S `>jP N^'cD&@aV"\0`" ^c `RmF aS `>P ^;: `RdmF ^aS `>P ^#Y 0 b ^<'cDpw30STPppV7w   p H$B,>p H4B,V p HDB,np HRB, r&A|` HbBJ.p HjB,%p HzB,p HB,p HB, p HB,.p HB, r8FA|h` ^HBJ7p HB,.p HB,%p HB,p IB,p IB, p I B,p I0B, rAA|v` 6I@BJ%p IFB,fp IVB,~p IfB, p IvB,p IB, r/A|Nx` IBJIx IB,@x IB,&7x IB,>.x IB,V%x IB,nx IB,x IB, x JB,x JB, zSA|` J(BJ A"Z8ZSZgZhZZZZZ[L':N yrr+ww+a a+ xx+0123456789abcdefBB888nn~~vv(,f (*8 00000 @@@@@@@@@@@@@@@ @@@@@@@ @@@@@@ @@@@  *>                0*n&                          TICKS 92 SEQ A:\LASER.SEQ 0 8 1 SPL A:\ENGINE.SPL 0 4 2 SPL A:\LASER.SPL 56 4 1 TNVY<[^(`hq{x&7"3DUfWwFLICKERS.0 ?S8v8;8?9> >'/ 08 ( '/& ?< fvIO_a`bfxfbA:B98<>1)4|',f>2>?//th5(H `8pp0' g(   808H<  `  0<rr||p0#0    0 C08>?!<@?|x@x&&c^bg %}1@.kqMA߾,PlDq6t;O !_@^_; =~n Î?ǎÏGL 8@100@@@i03??<<c3p|~N  @ eq&<c` [`o@t/, @x|}p ΂W1M%I9h`H0/yq# spf"a !dh=%{C܀  #;`Q88|~LÀ@t \ H90@s|1XpH8 0z.CDB:Zݯl"gNC%J(t @bQ;/=w+?1?/?27=?b,< <7q``A!(&N>.>`p A >@?/p o?F99>]#F .ch\кzyF<77缛YDO6y÷A8̄D2\-! ?55 4|((A{zQsqyqP X~N|| LG|fs:8cEw7`L?>"B>N~!0`0 <68 p`B? 00vṕduuy@|p`:vu t@3ys2 |?<*00@@8@8gs?'0YXYV6?9f)>NJ 5<}yL6dM Ey!iA @7BD@уp6qzqg }_8?h737?5j'q''j/ o(P֠֠B!b@6jѬί !xtސYSAhn1)<|;mdMYx 3簡``C d|  "p00pl``(``@s\@@rMgMƜݛW.Wׂ_WPp9SͷQV]k,A Y{N|D%  юӁ_xpϾ>V ^?^_PN"s?M1Nq$vyy~xx&0pp     =ag?\^O#X'xBhJ2y? |@ps? 5 00<|08`@00 aih$J rVYR?t:s0``~ x `` ?0??lF`. =  vdXe 52l@N0<ӈ, @HPD@@!"!aDDJ(4XRj  @ @?bH 81$Бq  6 6&>3O?##n~<p>p@0F`FNNpyhvwA:.AJPP3"b 8>p<##,75FA 8 ̑` ss<$$d| p060w~~BFac@9<g.' vc-ޭ8ZⳉN @@  E PDA@h(@  "E"@H @H@B A !Q @"D!B@H"@  )U+W.^{6ēگǩx 8x n?`#px~~!A'@ F xIx ȃdt $EHp @00H08888`8cxh73]7"?-;-[|7o>///<,#o8xWxo SCCS###C S 0  aM!EJ:)vRTQ%(jP IA"7/@/@//ooC@\A_@ 80 3aO;2d"sRZ2p3h[$ `3:||zz `O`?6]V;XuK|BB ~ ݽzzv  J ?    $!>!( !1%B"bB^>ļ<|x9x8##+GVNP @@`/_xظ g|| xKxqχ==804AH8^6 6;<<}soDgf3~Jw`_}u_݀,?Y7og 3;'[AӋ˂qQI{{w" /( \P?@@?OB?  x/_?? @@t9z 0p`0cǀc? b9;a@84>:n/?OvhU@P}@@@ vw<@.a!Ec@l@< 8xx 40 cs$socww&pV~2]=rb`@(=``````a`XsA@ !ɀ)އ<<?48?>??@̠8|u| x L6.&n\caa\ H@ _G\Ba?. '?`bg S2f2 _?(!"M!C/;x,32`  d Þ`>3c"h8`.=8}sWk0>0xϰ7 < < ac>vϲ@  Xx `m/.4B0 N*> o100`n?1``@p`hc\t^J.KmbE>h@7 k1 '>GS;7|{y;<?s |!"= b?\ ..pp @Fj8'17)p7,$>` }}x|? X; 00`.S;9>Ϡ. m @0``` (8G.΁݋ n|9?ym#< ccpsqp'>X@$_H<020qH99`f0 @H<8?ᢜ%%%;Kyዝw=TԎd6l` `|hEqj|(|y{6P~ 녏?D???p6@ B.V6 pz(et<E 2! @NHX co{b ?~j0A`p0@ <z{{y;A7x@{B?><8p ||X N BB~22aWpA1~~NHs3{01 <> 8,P18 x,`q |~< ``ff ''C       Ϟ.?!8S} ^H2pC?H`@# -`ytpJ\YԔ@W[2{cs1Dd@@` 566@@ǁLB6 T@@  @I<,$00 a#A{xxx`xD< @ 882Nr{s c-$ 8P @)p\IG!!28<-6/uQ?8(i8f6#a@   $(>  `` `H @8 `` DTF :  @0:8080$$   @$ p,X6p;@ 080@NƀÀ:$ptf`>| d``l00X2\bv" 3!3;80 /?99913??<! πa0x " p0p88"!! s0s0###p#0##300 @0@1 Q A&    0 9 6  >0@? s>1s7730>?? 8p>A|||}7?0 `@w K.h`90>>^~p@`~`,>~tp@ ~ <p~xpp@ 888@ @v?$ =~N@88M' >80Xɠs??spp8=o?l=h??/??=dNg& 1!88 ` @ `xspx`@@D003~|~\~ 99 OG?<899uվGl<| ! `p ~@????<<<89??o ??3>~xx< ǟmG ?@` @0i^@`O@c@΃<"DIrKE.kd/ٟg~x\0q17|0#. 801`ag<0?3Ǚf/|^~0:0@\\Aππyp"1100#`  ` `` 8 @X81|N9$IHK.$R`,``#7<x̚ [v > v E;Gqpdh`b08q8z Bcc#Ic0 0??0 00008088p0`009010244(  @@(`0( L0 $y'xqpxp80 @`  P"b`pp?} W>;>w _|$oH???_О $ HOwgg'w77W_ ___>>z @ @`@  ɰ  C$,`Ð7? {'xA??? NOOwt F 5C*o`vx~ ><|<<txx932 8x`y =8 8xxx<{hi`@4 hqqq988? 92g?7##Hpscπ>><||*ky`0x8ߜ wc 0/0 $0@62\ >  P@HjJz K ?`@@`p``@0!  >~'> ???>>?^&<(< ?8|x0 C#G @`  @0p`1`?;; $UfaL1EPEQ@ [00= x(?~<|A10;08? @p0#? `+;s~~~~~  '`AZ>'a| @ D.0hCy0opGC@@@ CN>$?(?11~4>>gOOP~ <>@Dp@11a1?S!a 0xx~  8<<0` ```H}??>>p~6$x @P@@t~w<ϿϿ_730x x000 3?caÀÀ$,pCc_?CR|P|!'9q p`g__`P`A0  GO@6  hh!@@ > ><00 ` `D@02@@@`  @@@`*@@p@ d@00t ~!~>v@@@ 0p0|<<  00ǁ@$D@ 0`C?`@ 8p? 0p8  !@ @ `H0c??? |?  p @0s?10`p1000 <p`*@ |`p00@@ y0`  `|0GGl8N? ?7'@gNJ>|@   ~~l @`< gc5    @  A@   @  ?_?@0 @@ @<  A @ @@%_|<<|xA?? @@ @ @?? ~~>   &@08 1? @@a B`  ????????< @  @ @D<>>?33qab"4 0x 0  d  @ @@ @ @ G`nh 8F.&`'#72?~xONH#%' 8#??CO @!'S @@ @ `x0  j -m [pav?GO K-%0%ↈBB= ĉ~\LLL?n&&&2?Inj,|& v{y y{99z|Nann?'?O_O@@/GOOOOGOGOOOFONNLHHPP`@  @#w   qc | @6m[@ @````  x x@0@0 @0@{p 8<`@ 998\: `    @: '   0J`<@T@Q  0 `p Z &@xp+?<8|>  6Hp L  50p  @  @  #@0Np0pO 0` CG`   @   @@@ @@ @Ap` 00  ? |xp    @` @ 8<=? pxp@@@p #@ @`0<+A      @!  @  @ &`81@ 0  @' @@    .     @@@  L ?  T@@'@@ 4@@ $ 1 @  $/@, (???J@'?`??  ?c  $  ?? ====< 888xxyyyoO???L-@ ??  ???8{w} ?`    ??GB߁88p p,i[qkS}__}sg?_gh~Ѝ@{``8[`@ V# 98:{{{}mip~l?jTV%Kt,Ymgem?lYgK?=~sɽ`@yD@T B@0DՀ0XoqtOvw{{~K̟?:\?k)3}~r_~w@`@@ $   &@ PXdAۋuԙ(ȷdnŻw{.s`@}`.+ /`p0`@0 8c@% '@4!9  1#% @ 0 ' @@@3&7"3DUfWwFLICKERS.1 -@( (` `@2PB@@@@0@`  0 @P@L@ 8B@PBF @(S 8X` @` M@DKU f`(:(F` @2n#XB4@@@8@`  0 @ P@@DLC 8 F&7"3DUfWwFLICKERS.2 -( @ | !*  `@$B@H@@0 `  \ @ )vXD)bH0 @!D "hH@@PP@  @ @XF$(-UXq~ J! 0` @5$dH@@H0 `  @\ F" #&7"3DUfWwFLICKERS.3 -(PB  , (` @@<P%h@  H 08L@ @ `@0%DL@X $," (Lp `@ p0 @ @@0p ``E@I@@`NG)6F6DFY . 4hĀ`p0@ @<*T%0hH0@ H 08@L@@`D5 F&7"3DUfWwFLICKERS.4 ,+4 4   @X P0@  @  X` 0 pT,ظ@ d( @@ `@@,@@ 404]l(@X ( P@0@  @ @@ X`:&7"3DUfWwFLICKERS.5 +V@ `4!"0(D `@  @ @@@>2@"<N `@@ # F0  ``0` :P`" H@D`4?VFZ"!" h@r  ` @@@>2@"r>40 @ h;P d A @6@@ h<8\/|  @ @@o 0` P`@ @@ 00`   @   @`@00 0|o>o>7?0 @ @ŀ`#  D @ @@ 1"0Q/#`(` @j 0` 0P`@ 0`@ 00`0@@0 ` @@   `@@ @8 < 608 i?>?w 0 @ 0` @ rBA @6@ C |<8\/|0R%8 @@j 0` 0P`@ 0`@ 00` 0`@0 ` @ @   `@ @@``p80<0>0 7 ?>?t 0 @&7"3UfwWwFLICKERS.7  00  ``0   0` @@@ m  @D1 @          ` @ p4 @1!   o@e @` @t!@"K H |(4v 8   @@@@o 00`0``  0`  @n `0 0     0`D`@ ` < pt p|8G!B°00( @ @@@$ 1@ `@4 0%H D@@a w ( H(  @@o 00` 0`` 0  0` `@@s  `0B@ ~   @#`` @cQ2 < pt,||;W!B°00 "4 p ,(@XH$ q@` @t-Z~ \@@ |(5v 8( (( @@@@o 00` 0`` 0  0` `@@ @l  `0 Fq8 p   @ #`p0 `F`R@р `2< pt,||;W!B°00 &7"3UfwWwFLICKERS.8  x800 0@``    0 p`@@@ @o  @@2 @ \  @@% D   @H0<pP (6@d@  @D!@`@@ -xP`@ @H@#`$(  $=K.bP`@ @@l8p (Xp` @ 0 p m `0" @@@  !0D @ H<p>|)(.ڲ21`@@@ `@   E2H `@ ,F)J`(# -E@@* @@j8p 8Xp` ` 0 p @@0@ @n  `0A@<p  p @  @(`` !@(L <p>|) ).6ڲ21`@@,`p (D@ @` #EYx Pp@ @L^VsZ@t,` $=K/cPj+X0 @@k8p 8Xp` ` 0 p P@0@ @k  `0Ar1 @@|  p @  @(`p0L ! @ HL<p>|) ).6ڲ21`@&7#3DUfWwFLICKERS.9  p   @@ 0   @0 @@@`0 @x   \   `@"@  @ЋP BXz> <pV0p(0P`Ah;?To78t(0P@`t`@@C@@   `@ pp JMH $4 X<!x|<=`@Ddd`k~|p?~><|  @<@` 0 @`0  @ @@ 0`@ @@@ 0 ` 00` @x  <  (P`@ ` 2z}@4s3o? @`  l 8@@h Fy{p ./o?M\ (  @@7!x|<=`@@Ffo~|p>?~~<|@` 0 @<@`  `0  @ @@ 0`@ @ 0`@ 0 ` 00` 0``v  0|  (P`@ 0``" P<`s? 7~~<|@` 0 @<@` 0 `0&7"33DUfWwFLICKERS.10 ef j  `E0 0 @  8y\":*@  ~@@@BJrrvtn1 @:G@8@  r$@  @   0BTHX2(0pX  @ MP D$&`  ~@TJttp{n1/N:G@(@L`Dx(@ @ @  j4| F `Sȸ@   8y\":*\48< ~@@VHvvvn1/N:G@ 8@L1><pz,@ @ @ @0 Dh  INL2 @ 8@L1><pz,@ @ @ &7#3DUfWwFLICKERS.11 g YX$)  (P D  D `  @ *9f/aP  n>!T P$x> a*`@p6p0, @  @@ 8 @ p(h84E  D1BP`d  D@  @ @(QPH $p0 n>!R T$x > c*<À@ Z0V8,@  @` `8  Pph`h84 !Y|FL  #8P M  D h @ *9f/a V88$ h<!V T$x>K*<À@ z6v8, @ `0 @@ `p@ph84@L&: D A0  +*<À@ zv8, @ `0 @@ `pp8@ph84R@ n1@N^NuNVBnBnBnRn?./.Nj\O0g80. @-h 0.=[L/ n/NfPORn`6?./.N\O0g"0nm, fBg?./.NDPO?./.ND\O0gfN^NuNV0.  @h N^NuNV0.  @0.h N^NuNV0.  @=h 0.  @0.F@n1@ N^NuNV0. "@ i -hHy;/.NNPO0f`0B@`.Hy;/.NNPO0gHy;/.NNPO0fpN^NuNV0. "@ i -hHy;/.NNPO0fp`B@N^NuNVBn0.!/NvXO0oRn0.!/NvXO0oRn0.A8?N-HTO//0.A>?N-HTO//0.A8?N-HTO//N-//N-$-@?.N-HTO// .r//Hy2t?9dN-HTO//N+ //Hy2l?9dN-HTO//N+ //0.A0?N-HTO//N-//N-$//N-$//N-$//N/PO=@0.N^NuNV0.  @qqomoqrsstutu{}~~|xvrlkkifddddhlosy}~}}zvvxxy{}|xz|zvvwxwuwxywtpoqpqpkklnsuvw|~~}||||{wwwvvvxyxtrrsw{}|ytsvxwutsropstsw{}z||xsnklljklpuw|{xvvssvutuuwx{|{{xroligfccb``bcgknruwz~~~~}}~}~|yxwy{xy{zyvsqligc^[[[Y[\_cdgkmmopv}||}~}~~~}~{vvsmlmljhfdddbccefims{~~~|{{z{~~~}}xtsttqpppvzz|zxvrqtpjnpnosvwz|}|zwrqrqopppsrrwz}|xyyuuslhkjgfikjmsuvxxwusutpoommmqurquy|||xtrqooonmjjovwyyy~~|yupmoponjknomlnortswxxvuutqqtuxzz}~~~|xvwxyvvurstrqppoooosvtuy{{~}ztrutlinqqorwusuwyz}|{wtpmjijhgmnouttw|}}ywyvsuy~{z~z|~yw|{z~~x{~~zyvuwwvy{|~|~~yuz}xtttsrprvvvyzvvz~||}|{}|yy{{|xxwutsoihjifflnmoruy|}|yuuuwxzz{|}}|~zuvz}~{z{{{{{z{|zytpolkijosqsvw{~|{z{}~{{vpllnlfddb^`da]_fffdfjnsvvy}zttutsrppstrsx{}}}}}}|{yzzxvrsussutqmkiiijiihhkmouw{}z}~~|zxvw|zzzwx{yxxxy~|z{|~{z|~~|{|zw|~z{|y|}|~{{~}~|{{{{||}|zz}~|zxvxurqonlkmnptw{~}zzxxywwyx||zwuttstutrqromnptuv|~~~}yxwrsuwxxyvtuuwy{|~{}{y{yuutpnnppoppoqpnsvvtsssvtnnruuuy{}||zwussvz~~~~}~|{~|yy{zxuwxw{}}~~~}|}|~~|~~~~~|{{z|}}||}}~|z|{yxtrnknmijmrsnlmonkhfgmmlnoqttvvtrsvyzzz||wttrpopnnqrrqsu{~~{~|w{~yw{|{}~}zwspoonmigfglruvw|~}~~~~~~}{zxrppoopquvvy{~|xvsonnqtuz|}}|~ytpmkmjfginopu{~~~xuutrspjjfec^^_ceiloty|{}~}}|}|ywvttrqrutqvzzxy{}{ywuvw{{{~~~y{{{}~~~~}|}~xvw{}~}||}}}~~}zy|}{z|}xutsqqpljklmtutwy}}||{zzzz{~~}~{{}zy~}|~|~}vtsssqmgjjegkmnlmoruy}|~~~|{{yw}~|xqmllkjiigjqqqtwvtw}}|~|{zy{~}z{~yvwwuqolimqposwyzzy{||}zz|wwvolouwvz||yvuwvrnopkimrsqoopmloporuvwv{~|}{}~{zxutwxvttuw{{wyyvx{xsokgijghikqposx|}zx}~|yqlmquvuv}}uqtsruvvrpspjhfgijihhjmosvy|}ywvnlomotvxyvw}}{~xusstpqy|yvutpprsustvwuuwvxxtvx}}zyyvsqsrstwwvwwwz~}z~}{zyytvyvrswvuuw{xttqsvvtuqmkfdedeioty|}wvvvvyyyywy}{z~}zyxxyz||}}zz{vnkgca`chijlmqyz{~{|urttnmnhcbaeighoppqswyxx|{w{xsstunhilstsw}|y||yustsnjdcghfgijotutv{{}~~~}{}~~|zxz|vqnnpnnqsqqvtqtxuqpkihffjjnvwvx{{|||}~~{z{yy{|zz||~~|wrsyzvutssutuvsttnnomjihfehkmkjortuuusstsw{{~zxsw}~}{}zz||}~~}}{zxtsuxvuwwyyzz{}}yvtuwwvvwy||yx{|{zyyyyuux{~~~{wwyxvvtmjhikiillkloqpqsvyzz|}vpljjnqnmoqruxxy}~zxtqqty{}~}~||}}{z}}|~zyvtutppqnjihgilkmnllquwtrswwttuy{|xvusqsuw|zvuxyyzzzzy}}~~}zvttuwz{{|{z|zz}ytuwwsprvyy{|{{xttstvwz||z~zxz{{|}{{||{{z||}~xvy{{{}{z|uprssuwvqorpqstrrwzxz}|xwvqorpoqoppory}~}|xuvutuutux}~}~}|yy|~}|wuuttvtsux|~~}~|ywvrojebaabeilmlmoporsprvx{yspswx{xuuuuupljfddfebcfhilnqvy}|yzxtuzzwuspppmifhjjkklmoswz}|zuqruusrrrpptw{{}|xwwttrqsxz{yyxvwytqpqrruwzzyz}|}|{|}|{}~|{|}||zux{zz{}~|wy{{|zwwxxvuutssspnpqttssrrprvvwxz{{}{}~|}{yxz{{z}{z|zy{xsstsqpnnmjjlnotvtwzz{|{~~~{yvrponkkmonnqtx|{|ytqpppjghhfdfijmpuy{~~yvy{yyvuwy{}}~yxyzvnlkiknqqswxvx~{xurqrswx{|{{z{~{yyyy{~}z{||||z{zwyzzxvvvsruvvwww{||zzvqmmoruy}~|~}yvtuwuv|}}xtojea`^]`cbglikpporyzxxxttwz{~}~{}~~||zsturuvrpstux}~~|xwwxxutqouurssstuvy|||~|}}|ywvtuy{yy~{|~}|z{zvtttrssuvuttvwx{|z{}}|{~|z}~yyyw{}|}~~}||}~|}|{{{xsxyvyz{}}}|{}}{xuxwtux}xw{{y|zxxwwwuuxyzxyzyyz}}}~|xvrnmjhknllqssvwy|~~}{~~{}}zwxzy{yxy{}~}}}~|{|}~}{{}}z~zwz|{yxtqnmlhiiggiihfedglmlklqvw|~}~~||~}}zww}zxvqljgefjoqoqsstxzxz}~}||~~yy}zvtv{}}xvwz{~}}zzvrtropnhcbccbeigfgknsuvwwz~|}~}|xwxxwwz{zyz}|~zx{|zvrtxzxuru|~{z{~zyxtrtutstw{}|~~|~~~~{y{|||xyyy~~}zzytopqmihjmosuttuuww{~||xvwzzuuyxvtrsvxvps{}}|z{{yxxxxwy}|}}|yz}|{~|{~{zzxyxutrquyzz~{zzvroppputqruuwxyzyxyxxvvwtuyyvplkhffdgkoqrwxy|{|yvxwqoorsttsy}zupoonkjknrtrrrplnpmnstrqrqpnsvspllonloqqtuwy}~{xxvqoomha]^cceijlrtpnmqwzvw~|zxz~{xy{{{|~}}~xtrsssqpnkjjfbbcdbcfinrty}}}}~~~~}zxyxwyuuyzz{~|tposwyxwxy}|{|{z{zx{~~~|wwvtqlhjllmnnorttsqpu{zvuvtsqsvvwvrrtvw||z{~}|~}~}zvssnknmifgfdceklnsvwxyxvuwywxxwxx|zupkknjecadggihdefgkprqtvy|~|}~ztuvtstttvuvwvtvwyyyxssurokhjonmopqvwx|~~~~}}~~}xz~~}~~zyxutpmmicehggjorssssqnmputsyystyxz~|xrlmnidecabfjlmllnqsvx{{{}~}{{|xppuvvz|{|}~{ww{}}|zxy{}|{|xsvywty~|yy{}}~|}~zy~|xz{zvstwwutrnkmpooponorqsy||~|{}~}~{zytqqpmlliehjihjjklmopnmnquyy{zyyz}~}{xuv{|{|~}~zxxvtuwyvuxvy{|~|zxvzzxyyuvz{xuyyxy{~}}}{z{|xuvwvtwy}~zuutpnstqqrqnmhfkmnjjorstvwzzyz{{|zvstyyy{zy~{ttutuyxz~~yz}zxx}}xuyywvvwusvxuqqrrvvuwzxuvyvsv{{xtuvstx|{xy{~|xxxvy~~z|~~z}~}}~~~~}~|||zwtuwvvxz{}}}}xvwvwyz||yy{|z{xvvsvy{~~~~|y}}{zz{|{z||z{~~|y{|z||{|ytrstswzz|}yx}|tuwz}~yzzussplloomknqmkprprwz}}|}}~~zxy|~~}~~|~~x}{vxxuwy{~~}~}wuwtqqomkmommmquxy{yz~~|||~{yvuvwwwwvtu{~vw}~~{{}|}{||yz}}xtw}{yy{zwuutpqtsppstrprssrty{~|{wplpqprvxyywvww{}~~vuwz|zx|}yxxxyxtuy{xvy}yvxtqw|~|ywutpmqstv{~~~|zytpmmmorrstvyy}|z}~{|}|{~vpooqrqonmkintuvxy{|vstx{~}{zxy{{{}~}|{y{~~z{}}~{yxvsnebbabdefgjnnmmnqsux{||}||z{}|~}{yywsprrqpsuutrolkkkjhilliimqsuyzyz{}~~~}||{xuuyyy~~zwvroquvvwwvw{~}}~{{}|{zyyz{yutttsuyz{}}xtttsstsrruvqmnppsxyx|~zvsrqstttuvvwxvsommlkjijkkifcbdegiklkjhhikmopppqqqt{~|~zy|}|~}zyyzyxxyz{{yvrppqqpnklnonljihknonlmqstttvz{wsssrtwyyy{|~~}}~~}}~}|zuomotwvtssz~}~{wuutuwvtsrnmptwvtvz|~|z{zywvwvrqtvtsrrsvvsswywspsyzz~}xvy||zzywsqpqtx{{{}}|||{ywwwxy|~{vsttsrrqstsssrpnoooppnmostssrppooooqtwyy{~~{ywtstuvz{|}|{{|}zustwwuttwzzyzzywwwwy|}~~zuqqqqqomnqttrqtzDfBg` nr fBn nf n fp,`H n fp7`: n fpu`, n fp ` n fp ` n g n fpI` n fp` n fp ` n fpw` n fp.` n fp` n g n fp` n fp` n fp-`~ n fp6`r n fpv`f n gJ n gr n g n g n fpH`6 n fp`* n fp ` n g n fp/` n fp=@0.g 0.f=n0.g` nr g n g nPf Bn nr f. nf& n fp ` n fp` n fp3=@ nPg n g nr fD ng?NAXOBn nlz0.A Pf?.Bg0.A?0.A2?  ?~p > 00``8 ? x8|??~~~~>  ` px< >~~ 00 0-??  15px<  $ `<ǟ??  pp ????.  ..  SAMPLE1 DAT SAMPLE3 DAT  SCIPLOT FNT f SCIPLOT PRG ţAMPLE1 SPT xPAMPLE2 SPT P0.63 0.97 0.028 0.93 1.07 0.74 0.94 0.031 0.91 1.03 0.83 0.98 0.034 0.96 1.06 0.99 1.02 0.037 1.01 1.09 1.12 1.05 0.040 1.06 1.11 1.19 1.03 0.043 1.05 1.08 1.24 0.97 0.046 1.00 1.01 1.30 0.93 0.049 0.97 0.96 1.40 0.96 0.052 0.99 0.98 1.51 0.99 0.055 1.01 0.99 1.60 0.93 0.058 0.94 0.91 1.64 0.88 0.061 0.87 0.84 1.80 0.95 0.064 0.93 0.90 1.84 1.05 0.067 1.02 0.99 1.90 1.10 0.070 1.06 1.02 2.00 1.20 0.073 1.15 1.05 2.05 1.32 0.076 1.28 1.10 2.09 1.37 0.079 1.34 1.15 2.15 1.23 0.082 1.21 1.10 2.20 1.08 0.085 1.07 1.01 2.25 0.95 0.088 0.95 0.93 2.30 0.85 0.091 0.86 0.90 2.40 0.91 0.094 0.93 0.96 2.59 0.94 0.097 0.97 1.01 2.73 0.91 0.100 0.95 1.03 @09<< @/(/.?.p??NA Bn0.nlp=@0.fr0./0. @HhNNPO0gFBn nl@0./0. @HhNNPO0f=n` Rn`=n0.H @0(R@H-@ no"29<<0.H @/(`Hyu/.?.p??NA Rn`Bn0.nlP0.H @0(R@H-@29<<0.H @ 0 0 1 0 -1.54311 -1.00049 -.839071 -.544021 .241551 .540388 .408081 .912945 .130458 -.835626 .154251 -.988031 -1.11174 1.24205 -.666937 .745113 3.38072E-02 -9.1923E-03 .964965 -.262377 -1.8595 -.595116 -.952413 -.30481 .232224 .283766 .633323 .773887 -.122572 -1.1036 -.110387 -.993888 -.648834 1.29457 -.448068 .893999 .118725 -.069717 .862318 -.506365 -1.99706 -8.84311E-02 -.999021 -4.42372E-02 .151289 .107887 .814182 .580608 -.502202 -1.27172 -.367296 -.930104 -.236929 1.17413 -.197803 .980241 .210298 -.214996 .699252 -.714874 -1.92748 .433508 -.975628 .219428 5.81581E-02 2.14926E-02 .937997 .346641 -.956633 -1.2806 -.598468 -.801146 6.19106E-02 .931637 6.63073E-02 .997799 .249835 -.44784 .487185 -.873298 -1.6651 .881136 -.883873 .467725 3.89832E-03 3.45909E-04 .996086 8.83854E-02 -1.40816 -1.10133 -.787696 -.616063 .219649 .63743 .325786 .945443 .182908 -.736651 .24098 -.970529 -1.26338 1.18213 -.730195 .683238 1.53768E-02 -2.75022E-03 .984379 -.176061 -1.77136 -.745234 -.921747 -.38779 .246103 .361807 .562425 .826848 -.022599 -1.02186 -2.21101E-02 -.999755 -.801305 1.2979 -.525331 .850897 8.70241E-02 -4.12307E-02 .903702 -.42816 -1.97367 -.263576 -.9912 -.13237 .182566 .15628 .759678 .650298 -.364086 -1.23092 -.283636 -.958931 -.364158 1.23094 -.283682 .958918 .HC<0 @# vX yvX/NvXO0o yvX/0.)?/NfPO$$$$$~$$~$$>HH> > QR$%E0HH0JDDF9 ""  @>ACEIQaA>(>>A0@@A>@DDDD@@^aA> @^aAA>>AA>AAAA><BAC=<  0 0  0"A>!GIIF@ "AAAAA~!!!>!!!~! @@@ !|""!!!""|@@@|@@@@@@|@@@@! @@G!!AAAAAAAA>>B<CDHP`PHDC@@@@@@@@AcUUIAAAAAaQQIEECA"AAAAA"~AAA~@@@@"AAAAE"~AAA~HDBA!@@>B<AAAAAAAA>AAA"""AAAAIIUU"AA""AAAA" @@ <<"A` >?AC=@@@|BAAb\>!@@@!>!AA#"A@ |=CAA?B<@@@~AAAAABD8@@@DHpHDC@vIIAAA\bAAAAA"AAA"\bAAB|@@@#AA!N1 >A@>A>| BBBBB"AA""AAAIIU"A""AAAAC=A" 0881IFAA"""D8d$ "UIU"1IF>IIII>pHHHp  `  1IFAAA"A">>"A> 00>>AAAAA"AAA">>"A">>1IF1IF"UIU"0@088"""AA"AAAA"A@@@@@@@ 3I]III*AAAA"""""AA$x 0P/""A>>"""""""">III>.1 @  @0^"UUI>IH<HI>"AAAAA"c>AMQQQMA>  a"$()B @ "AH(1IJDJI1<BB~AA~@@FIIII>4BA""@x@""AA"1J  N1!!!!! II>FHP`PHF@  "ABBBBb]@@@!!""$8 >AAAAA>>R*III*"AAa^@@@$BBBB<?HBB""$$A""A"AAAII6@>@@>@@>a$C` @@@< a"$()A a"$()I a"$()F $$$$$~$~$$>H> >!R$%B8DD8EB= ""  @"AAA"(>>A0@A> $@^aA> @^aA>>AA>AA>>AC=< 8@8pp>A>EIIF "AAA~!!>!!~!@@@!|"!!!"|@@|@@@@|@@@!@@G!AAAAAA>>B<AFX`XFA@@@@@@AcUIAAAAaQIECA>AAAAA>~AA~@@@>AAAEB=~AA~DBA>A@>A>AAAAAA>AA""AAAIIU"A""AA" @ <<"A` >?C=@@^aAa^>A@@?=CAC=>A@>|=CA?A>@@~AAAABB<@AFxDBA@vIIA^aAAA>AAA>~AA~@@@=CC=N1 >@>~| BBBB=AA"AAIU"B$$BAAC=A> 0881IFA""8d "UIU"1IF>IIII>pHHp  >=CA>1IFAAA"A">>"A> 00>>AAAAA"AAA">>""A>>1IF1IF"UIU">@8>0""A>AAAA>A@@@@@AIIII>AAA"""AA$x 0_ "A">>"""""">III>.0   0^"UI>IH<HI>"AAA"c>A]Q]A>  a"$()B @ "AD(1JDJ1<B~A~@@FII>4BA>>@x@>!B<1J  N1!!! II>DHpDA`"ADDDfY@@"$(0 >AAA>>R>EIQ> @>AAa^@@?DBB<hB""$A""A"AII6@>@>@>b"@>@@@> a"$()A a"$()I a"$()F  nl0.R@A Pf0.H @0.R@1@ n lp`p=@ nf8p?0.^@?/.N!hPO0.@ @-h 0.^@`:p?0.@?/.N!hPO0.@ @-h 0.@ @-h 0.R@/ n/NfPO0.R@A Pf0.R@CF0.R@AD0Qo@0.R@AD0o"/.0.R@AD?N \O`FHyS<`20.R@AF0o/.0.R@AF`HyS>/.NfPOp?/.N\O//.NfPORnRn` Bgp?Bgp?/.NP =@ n3grBn n l00.^@?/.N<\O0g0.H @0(`>Rn`Bn n l,0.@?/.N<\O0g 0.@ `Rn`pN^NuNVvN Bn n fBy0. g"N3 yf N~p` 0Hnp?BgNPOHnp?BgNPO/.NXO n-h$0. f n fHyS@`HySV n/NfPOBgp?/.NDPO09fpu?/.N`pu?/.N\O09A0fBg/.N`` Bg/.N`\O n-h`Zp o"h#.#2#6,Oc.N//Bg?<JNA BbBy:Nx/,HNVA-H/.?. N1N^,_ _\NNV?.?. ?<NMN^ _XN/,HNVAB-H?<?<N?<pY?N?<0. @ ?N?<0.@ ?NN^,_ _XN/,HNVAD-H0. rAm?NVA0 ` ?</D@?NVNjA0 .2.N^,_ _TN/,HNVA<-H0.2.A^6.CA]D2.8.D^E:. ED]F=B0.N^,_ _ NNV?<NNN^NuNV?.?<!NNN^ _TNNV?<NNN^Nu/,HNVA(-H n0.1@2.1A4.1B6. 0N^,_ _ N/,HNVA.-H?<NN(BgNM?.?.?.?. NG8N^,_ _PN/,HNVA(-HNR?.?.?.?. NONRVN^,_ _PN/,HNVAN-HNR?<NK?<NM?.?.?.?. NG8BgNMNRV?<NKN^,_ _PN/,HNVA0-H?<NM?<NN(?.?.?.?. NG8N^,_ _PN/,HNVAJ-HA Q"O""N?<NM?<NN(?.?.?.?. NG8?<NN(N^,_ _PN/,HNVA-Hp.=@2.tBo nv.x_DW0"n z^EW2|=F0.R@=@ n2tC1v_CWS@t1p\@VED0$n 24.x1 z^EWSBx1 @VBF42.4.SBBW4<FBDdN^,_ _FN/,HNVA-H0. rAot=B`0.rAf4.6.CSB8.D=B`4.6.CSB8.D=B4. CCAl60 =Ct=B`|0.rAf4.6.CSB=B`4.6.CRB=BtC=B8.BAk:0 HĉtBf$8.:.E<0PF=D?.?.NGRn no~Rn n oN^,_ _ N/,HNVA.-HNR0.\rAl =A\`AQ"O""NVA>"O2p"QHnHnNp=@r=At=B n v0x=D:.Z=E`0.rA0t Bf"n 2RA2`zr0v\CW2.ZA]EDd>"n 8RD2R@=@x0Bf x=D`x0D^D=D`x0z^EW8.tBVCFdv=C=B`jv0|_FWvCVEAdr=A=C`Br0z|EWrAVFBdt=B=A`t0B=B"n <RF22.tBV=C8.Dd =B`n8.Bod:.\Bf0??<.X"n 0S@@@??.VCC?N`,???.X<.V"n 0S@@@?CC?NRn0.noVNRVN^,_ _RN/,HNVA-HNR n 0(\@=@2.RtBf6(\C=C`6(8D]C=C??.N??C>$O4x$QQ"O""HnND0.@rAA=@2.RtBf$ n /?(?(?vCC ?NZ`( n /?(6(8D@?vCC ??N00.PrAV6.A^DBd n Q"O""NNRVN^,_ _HN/,HNVA-HNRAbQ"O""N 0. @e ?<NO,0.hT@?0.f@U@?A"Op?"QNEXAbQ"O""N0. @e ?< NO,0.@dAbQ"O""N NRVN^,_ _^N/,HNVA-HNRA`Q"O""NV?<NO,p=@r.=A`F0.fT@2.SAA?0.d@Y@?0.rA0O"ONEXRn0.noA`Q"O""N?< NO,0. @dA`Q"O""N4NRVN^,_ _\N/,HNVA -H0.2. Al =@`=A0.N^,_ _XN/,HNVA -H0.D@?0. D@?ND@=@0.N^,_ _XN/,HNVAX-HA]"O2"A ]"O2"N"0@dA]"O2"A0 `A ]"O2"A0 .2.N^,_ _ N/,HNVA@-HA]"O2"N(A ]"O2"N(NT?/N(A0 .2.N^,_ _ N/,HNVA-HNR n /N]~NRVN^,_ _XN/,HNVA$-HNRHn N^,NRVp3kN^,_ _}"N/,HNVA-H?<?<?<?<BBgBgBgBgBgBgBgBgBgBgHy`HyHyHyHylHylHyNS3?<?<Bg?<BBgBgBgBgBgBgBgBgBgBgHy`HyHyHyHylHylHyNS329l49kʒB3l69l89kȖDC3lN^,_Nu/,HNVA"-H0. 2<HH@4<HH@=@0.N^,_ _TN/,HNVA-Hpr A?BgBgBgBBgBgBgBgBgBgBgBgBgBgHy`HnHyHyHyHyHyNS3?.NX@=@29tBvCWİB]Ar^A^ňEDdx=D0.xDgd=@0.N^,_Nu/,HNVAj-HprAt B??<Bg?<p2/BgBgBgBgBgBgBgBgBgBgHy`HyHyHyHylHylHyNS3N^,_Nu/,HNVA"-H n 0F@0/9kR?.?N*N^,_ _\N/,HNVA.-H?. n /N/9kR?. n 0F@?N*N^,_ _PN/,HNVAj-HAl]"O2"BgBN:0@dFAHO"O2p1Q?<NSl3?9k?9k y/NLN^,_Nu[1][X axis can't be log.|Setting to linear.][ OK ]/,HNVAj-HAl]"O2"BgBN:0@dFAHO"O2p1Q?<NSl3?9k?9k y/NN^,_Nu[1][Y axis can't be log.|Setting to linear.][ OK ]/,HNVA4-HA ]"O2"Nit?/?<5/<^[ةNRA0 .2.N^,_ _\N/,HNVA\-Hp=@2.<=A` n 0.@0.1@Rn0.no2."O2p"QHyHyHyHyN nJ/C$O$$$$Nr _?/0 N^,_ _BN/,HNVAp-Hp A?"O2r"QHyHyHyHyN nJ/C$O$$$$N _?/0 N^,_ _BN/,HNVAP-HA]"O2"HyHyNAQ"O""AR"O2p"Q?.?. N8N^,_ _N/,HNVAl-H?<BA]"O2"A]"O2"NDA ]"O2"A]"O2"NDNjND?</?<?<NR?<?<?<?<"?<AN:?<?<?<?<>?<N"p3kr=A` 0.@2.tBWAk1Rn nopX3lrY3ltE3l0.=@2.=A` y-H?.Nl np1@1@r1A1@1@1@z1@1A1A1A1A1@~CtQ nCtQ nN8Hz?< NJ/Bg?.N* _??/<<dN:0A]"O2"N6?$O4r$QHnHnN<0.@2.A4.BBA=@2.=AZ@=@ y4(Bd&4.6.C??4.YB??"n?)N~ y0(@d&0.2.tHAS@??."n?)N~?< np( ??.?.C >$O4p$Q"n Q$O$$HyNP?.0.X@29AA?NZ=@Rn0.no2.A4.BB=A n /?(?(4.VB?4(B?N6 y0.rA^1B-H4(6(CBd"n Q$O$$N~N^,_ _XN/,HNVAj-H0.D@d~ V0(rAf C6]$O4$HyHnNP`N4.A>"O2r"QAQ"O""HyN0N^,_ _:N/,HNVA^-H y-H0(@eF nC]$O4$N?/Al0 nC]$O4$NȞ?/Al0 n0(@eF nC]$O4$Nn?/Al0 nC]$O4$NL?/Al0 0. n2(RAH=@r=A4(RB=B`"0.rAf4.=B`F n4(RBBf4.6.C=B`$ n0.C] O0 Nz=@ n?(Bg?.0.2. A^@??(C]$O4$C]$O4$C$$Op$Q NN0.rA^ n6(C_DBdP4(~Bd?.?.?.4.\B??<N?.0.2. AS@??.0.A]@??<N n0(F@2(4(B4(RBBWC2.4(B_C@dp=@`0.rAWBBVB=B6.8.H0.?<B?NNRNƀL?/?NNRNz0@=C n0(~@d??.?0.2.A??<N?.0.2. AS@??.0.A4.B??<NRn n oC2"0.2.RAC:G](O8(2.G](O8(ND&n2.I]&O6&NjGI8(`(A.O"O>p=Q?<NSl3Rn0.no n 2Ad"n]$O4$N(Cl2"r=A0.=@`0. n2.SAC] O0 n2.C] O0 NJ?<BNR n2.SAC] O0 2.SAAfC]$O4$NjNDC2"Rn0.noX n2"n4.E]"O2"N("n4.E]"O2"4.CfE ]&O6&NjNDE4$$n]&O6&?< NN?/NRA0 p=@2.=A`0.2.AC]$O4$2.SAC]$O4$ND"n2.SAE]"O2"2.SACE]&O6&NR2.SAEfG](O8(NjNDG6&Rn0.noL n2"n4.E]"O2"/ n0W@? NNp4"?/NRN( n0.C] O0 0.AC]$O4$NR0.CfE]&O6&NjNDE4$$n&n00I]*O:*0I]*O:*NjE4$p=@2.=A` n02.A=@"n0.EG](O8(&n0.I]&O6&&n0.R@I]&O6&NRND0.GfI]*O:*NjC2"Rn0.noXN^,_ _N[2][Data too close to spline.|Set to straight line fit.][ OK ]/,HNVA-H0.?<B?NNR2.?<B?NNRND4.A^C ]$O4$NjC2"?<BC]$O4$NDC2"C]$O4$C]$O4$NRC]$O4$NRC2"C]$O4$C]$O4$NRC]$O4$NRC2"C]$O4$4.?NNRC]$O4$6.?NNRNJ8.C2E@]&O6&E]&O6&E]&O6&ND8.RDEG@](O8(NRG](O8(G](O8(ND8.G@](O8(NRNJNRNJG6&G](O8(Nn8=D0.N^,_ _N/,HNVA8-Hp2. HHAArHH@=@4.B@@Ak00 =@0.N^,_ _XN/,HNVVA-HHnpHn HnHn^HnHnHn\Np=@2.\AdXr=A4.SB=BZ`40.rHH@=@4.BAn60 =C4.BC 81 =Dt=B:.REE<0P:.E20PA=FX`0.=@2.=AR@=@?.0.@An?0?.0.@C ?10.R@@?1E^,&OpJ&QE,&OpJ&QE,&OpJ&QNv=@2.tBf6.SC??.?.??N`6.C=@xDf0:.RE=E?.?.N0@d?.?.NG`=BDlz=EJ@jD@=@tH=@=Cz=E=@V`>0.R@=@2.4.B=A?.?.N@d?.?.NGRn0.nVo2.RA=A0.=@V`>0.R@=@2.4.B=A?.?.Nb@d?.?.NGRn0.nVoRn0.nXo.Rn0.nZo` ?9k?9k y/NN^,_ _N/,HNVA-H n p02.4.BvC^=Dr=Az=E<.tSF=F`d0.R@@A200.@40Bp@^=B2.||Bg("n 2.A2.3A4.RB=B6.=CRn0.no n 2.A2.t1A n 4.RBBt1BN^,_ _jN/,HNVA-H n0.2.ސAR@0RAACv012.A41BrA^=B0.=@6.=C`l0.@d0.2.ސAR@=@`0.R@2.A=@ n@0.@Cv211A n 0.@0.@E221ARn0.noN^,_ _N/,HNVA-H y-H0(2(AC]$O4$BgBN"2AC]$O4$BgBN2A@dJ nC]$O4$N ?BgBNT? nC]$O4$N?BgBN4??<N n0(2(AC]$O4$BgBN"2AC]$O4$BgBN2A@dJBgBN? nC]$O4$N?BgBNf? nC]$O4$N??<Nlp=@ y2(=A` y0.-H0@d|?("y0(EȞ,"OpJ"Q"y0(^/ N\p=@ n2(=A` y0(z@d$"n0)0.@0(\=@` 0.=@2.A/ y"n0)0.E] O0 ND"A10.@/ n2.C] O0 Nh" AT1Rn0.noF y2("n4)vC^D4)xD^EAd2(Ae2(zAd6?)?)Ed&Or&QEVd&Or&QN`?)Ed&Or&QHnN.p=@0.S@@A20=A0.@40=BHn??Cd$Op$QCVd$Op$QHnHnN?. n?(Cd$Op$QCd$Op$QN0.R@=@@A20p@fX y0(@dhp=@"n2)SA=A`F0.@A?00.@CT?10.R@@?00.R@@?1$n?*NtRn0.no y0("n2)tB^C@dp=@2)=A`r n0(rAo"y0(0.E]"O2"N6C2" yC]$O4$"n0.E]"O2"C]$O4$NDN?/N=@ yC]$O4$"n0.E]"O2"C]$O4$NJN?/N=@2.AA?0?.2.A?0??<N. y0(@d0.2(4(BSAAl.2.AC41WB??2.A41VB???<N0. y2(Ao.2.AC41WB??2.A41VB???<Nߜ n0(rAo"y0(0.E]"O2"N6C2""y0(0.E]"O2"C2" yC]$O4$C]$O4$C]$O4$NDN?/N=@ yC]$O4$C]$O4$C]$O4$NJNZ?/N=@?.2.AAT?0?2.A?0?<Nބ y0(@d0.2(RAAo.?2.ACT41WB??2.A41VB??<N80. y2(4(BSAAl.?2.ACT41WB??2.A41VB??<N0.@A?00.@CT?1$n?*NRn0.noRn0.noVr3N^,_Nu/,HNVA-HNR yCQ$O$$NDA~C$p#QHnHnHnN`HnHnHnN`fN8Hn?<0.U@??<N _C"?<AB/?.?<Nq?<:Nq(?.?<Nq?< Nq(?.?<Nq?<-Nq(Hn?$O4p$Q"y/ NNRVN^,_NuJanFebMarAprMayJunJulAugSepOctNovDec/,HNVA4-H0.2.Al4.B@_=C`4. BA_=C0.N^,_ _PN/,HNVA>-H?.?.?.?. NN/?.?.?.?. NNx" A=@0.N^,_ _N/,HNVA^-H0.S@=@2.t HRA=A nA00.6.CHR@=@"n AR@20.R@=@$n84N^,_ _N/,HNVAb-H y-H0.rAW°A]ÄCBd0?<?t(?C>$O4t$Q/N0.rAWvC]ĄDBd2?? nt(?C>$O4t$Q/N0.rAWvC]ĄDBd:? n4(B?t($O4t$Q/NH0.rAWvC]ĄD8. zEVF n<(|FBdN0.rAWvC]ĄD8. zEVF n<(F<(C^ABd/NٖN^,_ _XN/,HNVA-H y-H"VA Q$O$$ nEQ&O&&N V1@"VA Q$O$$ nEQ&O&&N\ V1@"VA Q$O$$ nEQ&O&&N4 V1@"VA Q$O$$ nEQ&O&&N V1@"VA Q$O$$ nEQ&O&&N V1@N^,_Nu/,HNVAn-HHnNA Q"O""HnHnHnNp2.A=@t=B6.SC=C`F0.2.H=@4.6.C8.@=BB0.@A>*0C# Rn0.noA̞}""O22<G"QNB?9kNdp=@`0.@Ak20Ad|?.Nx NN&p=@`$0.@A20Ad ?.BgNRn no0.29k̰AW6.CA800FDDBd ?.BgNL?.NRn nod?9kNN^,_ _ N/,HNVA-H0.2.A?<B?NNRA0 0.4.B?<B?NNRA0 0.@f? O0p QAQ"O""HnN4Rn n op=@` n0. 0(@d n0. ?( n0. ?( n0. ?( n0. ?(?<Nl n0. ?( n0. ?( n0. ?( n0. ?( n0. ?(N@Rn n o.N^,_Nu/,HNVA-HNK6NRAkQ"O""Np3?9kNǐp=@`0.@rAk1Rn nop=@`0.@Ak20Ad?.N|0.@rAk10. AW/NF$@Bd y-H?(?(?(?(C]$O4$C]$O4$/N n?(?(?(?(C]$O4$C]$O4$/N| n?(?(?(?(NNN y0(~@dCQ$O$$N`-H?(0(2A?0(2(A?0(2A??<NP n?(0(2A??(?(?<N. n?(?(0(\@??(?<N n0(2(A?0(2A?0(2(A?0(2A]@??<N?.NŢRn no8HyN,p=@`80.@Ak20Ad?.NŞ? n Q"O""Nz09rAf?<NK09@?NNRVN^,_ _ N/,HNVA$-HNR/9kRN+NWNRVN^,_Nu/,HNVAv-H0.rAo/9kR?.N*0.rAo/9kR?.N*0.rAo/9kR?.N*0.rAo/9kR?. N*N^,_ _ N/,HNVAv-H0.rAo/9kR?.N*^0.rAo/9kR?.N*^0.rAo/9kR?.N*^0.rAo/9kR?. N*^N^,_ _ N/,HNVA2-H/9kR?.?. N*/9kR?.0. F@?N*N^,_ _\N/,HNVA-H09k`b/9kR?9ktBgN*`f/9kR?9krBgN*`N/9kR?9kpBgN*`6/9kR?9knBgN*`S@ @b@0;N0. 3k`j/9kR?9kt?<N*`l/9kR?9kr?<N*`R/9kR?9kp?<N*`8/9kR?9kn?<N*`S@ @b@0;NN^,_ _TN/,HNVAv-H y-H0(rAo&?<?9kb?9k?9k?9N`"?<?9kb?9k?9k?9N?9k?9k n?(N?9k?9k n?(N?9k?9k n?(N/9kR?9k n?(N*/9kR?9k n?(N*/9kR?9k n?(N* n0(@d2/9kR?9kN*^/9kR?9k n?(N*`(/9kR?9kBgN*/9kR?9kN*/9kR?9kt09krAW?N*/9kR?9kr09krAW?N*/9kR?9kp09krAW?N*/9kR?9kn09krAW?N*/9kR?9k n?(N*/9kR?9k n?(N*/9kR?9k~ n?(N*/9kR?9k| n?(~N*/9kR?9kz n?(|N*/9kR?9kx n?(zN*N^,_Nu/,HNVA -H?<8AXO"OpQN&#kR/9kRA(O"OpQN"3kl/9kRA O"OpQN"3kv/9kRA O"OpQN"3k/9kRA O"O pQN"3k/9kRA hO"OpQN"3k/9kRA 8O"OpQN"3k/9kRA O"OpQN"3k/9kRA O"O p QN"3k/9kR?9klA O"OpQN$3kj/9kR?9klA RO"OpQN$3kh/9kR?9klA O"OpQN$3kf/9kR?9klA O"OpQN$3kd/9kR?9klA O"OpQN$3k^/9kR?9klA JO"OpQN$3kb/9kR?9klA O"OpQN$3k`/9kR?9klA O"OpQN$3k\/9kR?9klA O"OpQN$3kX/9kR?9klA BO"OpQN$3kZ/9kR?9klA O"OpQN$3kV?<?9kb?9kX?9?9N\/9kR?9kvA O"OpQN$3kt/9kR?9kvA `O"OpQN$3kr/9kR?9kvA O"OpQN$3kp/9kR?9kvAO"OpQN$3kn/9kR?9kt?<N*/9kR?9kAO"OpQN$3k/9kR?9kAJO"OpQN$3k/9kR?9kA O"OpQN$3k/9kR?9kAO"OpQN$3k/9kR?9kAO"OpQN$3k/9kR?9kAJO"OpQN$3k/9kR?9kA O"OpQN$3k/9kR?9kAO"OpQN$3k~/9kR?9kAO"OpQN$3k|/9kR?9kAJO"OpQN$3kz/9kR?9kA O"OpQN$3kx/9kR?9k?<N*/9kR?9k?<N*/9kR?9kx?<N*/9kR?9kN*/9kR?9k|?<N*/9kR?9kA`O"OpQN$3k/9kR?9kA O"OpQN$3k/9kR?9k?<N*/9kR?9kAO"O p QN$3k/9kR?9kAO"O p QN$3k/9kR?9kA\O"O p QN$3k/9kR?9kA"O"O p QN$3k/9kR?9kAO"O p QN$3k/9kR?9kAO"O p QN$3k/9kR?9kAO"O p QN$3k/9kR?9kAFO"O p QN$3k/9kR?9k?<N*/9kR?9k?<N*?<?9k?9k?9?9N/9kR?9kAO"OpQN$3k/9kR?9kAzO"OpQN$3k/9kR?9kA:O"OpQN$3k/9kR?9kAO"OpQN$3k/9kR?9kAO"OpQN$3k/9kR?9kAzO"OpQN$3k?<?9k?9k?9k?9kN/9kR?9kAO"O p QN$3k/9kR?9kAO"O p QN$3k/9kR?9kAO"O p QN$3k/9kR?9kAlO"O p QN$3k/9kR?9kA2O"O p QN$3k/9kRN+N^,_Nu Arrows Strings Edit Font Save Font Load Font Special Chars Edit Data Data Values ----------------- Data Sets Title Y Label X Label Y-Log Y-Linear ------------ X-Log X-Linear Cubic Spline Straight Line Order Data Date & Time Full Plot Box V-Zero Line H-Zero Line Error Bar Ends Title Box Legend Box Legend Lines Markers Plot 4 Active Plot 3 Active Plot 2 Active Plot 1 Active Quit Defaults ------------------- Print Draw Boxes Only Plot Save Image Save Data Input By Hand Read Saved File Read Raw File Annotation Font Review Axes Fitting Style Active Action About SciPlot ... /,HNVA-HNR0. =@=@Ak-HrAft=Bv=C?\/ nX/ nT/ n/N?`BgHn n?(?(?(?NC"3k? n?(?(?(?NAV n?(?(?(?NIV0.=@2.=A`$?.NN0.S@=@ y/ n2(A@?2(AA@??<?<N y/ n0(2(tHA@?0(@2.A??<p@@ ?N y/ n0(@ 2.A?0(4vH…B@ ?p@@ ??<N y/ n0(2(tHA@?0(2A@2.A??<p@@ ?N y/ n0(@n2.A?0(@2A?0(@jAA?0@2.AA?N y/ n0(2(A@2.A?0(4B@A??<?<N y/ n0(2(ArAA?0(@2.A?p@?p@@ ?N?.NRn0.no?9kNAkQ"O""NNRVp3`N^,_ _TN/,HNVAf-Hp=@ y2(=A`@ y0.0.<0.CE]&O6&A0 Rn0.noN^,_ _2N/,HNVA-Hp=@`0. 2.AA2.A"VA~40El50. @^2.AA2.AG4350.r AnN4. BR@@@0.@IZ645 0. @4.RBBB4.BKl65 5Rn n oLN^,_ _TN/,HNVA-Hp=@`0.@2. 4.BBAl40$VC~30.@2. A^4.BB40G70.r AnN@4. B6.RCCC60 IZ90.@4. B6.RCCC60 Kl;Rn n oLN^,_ _TN/,HNVA-Hp=@`8p=@`" n"0.0.@p1@Rn noRn n op=@`0.@A 20=Ap=@`Xp2.A=@4.@Ak60H…p@f,4.6.C800D=B"n"6.A3@Rn noRn n ozN^,_ _N/,HNVA-Hp=@`8p=@`" n0.0.@p1@Rn noRn n op=@`0.@A 20=Ap=@`Xp2.A=@4.@Ak60H…p@f,4.6.C800D=B"n6.A3@Rn noRn n ozN^,_ _N/,HNVA~-H VHhC$O4p$QN VHhC$O4p$QN VHh C\$O4$$$$N VHhCn$O4$$$$NN^,_Nu/,HNVA0-H"VAQ$O$$A R$O4p$QBgN N^,_ _>N/,HNVA-Hp=@`0.2.SA V&A60@8.`:.SEEE*<:EX<2@FSC=C8.`<.SFFF,<0.`"V&<pA8EQ&O&&$nGH](O8(Bg?<N'P0.2. tBWÀC@dL0.`"V&<xA8EQ&O&&?< n?(NO OBg?.N0.2. t BWÀC@dL0.`"V&<A8EQ&O&&?< n?(NO OBg?.N0.2. t BWÀC@d n0(vCWC]$O4$C]$O4$N0@DdCE pQ` C]$O4$HyHyN"p0.`"V"<AEQ&O&&ER&O6p&QBgN 0.2. t BWÀC@d n0(vCWC]$O4$C]$O4$N0@DdC.E pQ` C]$O4$HyHyN"p0.`"V"<AEQ&O&&ER&O6p&QBgN 0.2. t BWÀC@d| n0(vCfCE`?(HyNl0.`"V"<AEQ&O&&ER&O6p&QBg?.NRn0.noNRVNKrN^,_ _XN------------3: 6: 3: 6:2: 5: 2: 5:1: 4: 1: 4: Styles: Recalc Exit I T Name X V H Fact M L Vmin Vmax Npt Active Plot: Ndat:/,HNVA-H0.@dpNR n 0R@00rAop00.8$V$<~C(GQ(O((Bg n ?NO OBg?<NNRV`(A.O"O,p+Q?<NSl3N^,_ _PN[1][ Can't change #ticks|for log axes][ OK ]/,HNVAF-H n/C">$O4p$QN&6 n/]"O$H2"C ]$O4$N _?/0 0. @e n]"O2"BgBN0@d n/"n]$O4$N R _0 n/"n?N _?/0 n??."n/ N280.`8"V"<~AEQ&O&&Bg n?NO OBg?<N0.`8"V"<~AEQ&O&&$n]&O6&Bg?<N'PN^,_ _VN/,HNVAH-H n/C">$O4p$QN&6 n/]"O$H2"C ]$O4$N T _?/0 0. @e n]"O2"BgBN0@d n/"n]$O4$N R _R@0 n/"n?N _?/0 ?. n?"n/ N280.`8"V"<~AEQ&O&&Bg n?NO OBg?<N0.`8"V"<~AEQ&O&&$n]&O6&Bg?<N'PN^,_ _VN/,HNVA-H n p02.tBf$"n69l$V8*DSCzHÇRC2`4@f("n69l$V8*zEED^ERE2`"n2Bfd?9l?9l n0`"n 2AA&V"<8EIQ*O**NJF@ n 24.B]C@d 0R@0``@fd?9l?9l n08"n 2AA&V"<~EIQ*O**NJF@ n 24.B]C@d 0R@0``T?9l?9l n 0@$V"<~CGQ(O((NJF@ n 24.B]C@d 0R@0` n/?./??<N _?N n _0"n / ?./ ??<N "_?N n"_2N^,_ _N/,HNVAb-HNRNp=@ y2(=A`*p =@`?.?. VN~Rn n oRn0.noNRVN^,_Nu/,HNVA&-HN& VNBgBg VN4 VNr VNN^,_Nu/,H/,O~A >-Hp=@r=At=Bv=CHnN p3k NNN ?9l?9l <`AQ"O""NJ@d p=@` ?9l?9l <AQ"O""NJ@dT0.rAWvCWĄDxDWńEz EWƄFBd NN4 NN:0.rAg?.? NN0.@dAl]"O2" yC]$O4$N"0Cl]$O4$C]$O4$N2ACl]$O4$C]$O4$N"2ACl]$O4$C]$O4$N2A@d BgN3\/9kRN+A}""O20<G"QN p3k2.Ad&?< yCQ$O$$NH?<BgNN^,_Nu# Points to use:Enter Factor (real):Enter Data Set name:New Y-axis maximum:New X-axis maximum:New Y-axis minimum:New X-axis minimum:[0][Recalculate axes limits?|][ No | Yes ][1][Change axis type|via main menu.][ OK ][1][That item can't be edited.][ OK ]/,H/,OPA-HANBXB PB HyNl0.02. AA"VA進EQ&O&&ER&O6p&QBgN `"S@ @b@0;NDNRVN^,_ _XN/,HNVA-H0.P02.NAA"VA進EQ&O&&NNRV n ?HyNl?<A>"O2p"QHyHyHyHyN n //9N2 _0NRN^,_ _FN/,HNVA-HHnN NNRAk-HHn0(P@?0(@?pM@?p T@rPA?N0.@P@=@2.PA=At=B`H0.@2.SAAA402.vCWD7TDzEWFFDD1Rn noHn0.P@?0.@?0.rAA??< NAQ"O""NRAQ"O""N4AQ"O""NACpQBgp9?2.t7BB?2.A?A>"O2r"QAQ"O""HnNHn0.2.tHArAA?0.2.A@]@?p@?pX@?NAQ"O""AO"OpQBg?<Np=@`0.2.SAtPBA=@r=A`0.rAWB7RBvC^DDBxD]EE=B:.0@@AHpP0.@A?0?.?pT@?N?.?. NNRn noxRn n oJNRVN HnHn NN @djNR y0.F2-H0.`0.02.AACEQ&O&&NNRV?</ NNB`"S@ @b@0;NN\t?.?. NNtNRV?9l?9lAQ"O""NJ@d\/9kRN+Aڞ}""O20<G"QN p3kN^,_NuY position (pixels)X position (pixels)Edit Annotation String: done^used H V X Y/,HNVA-H n/?</?< 09l"V2)AtPBHR@?N n _?N _0"n p2r=A`L?9l?9l n002.AA$VCꀲGQ(O((NJ@d n 0.0Rn no n 0rAV=B0.N^,_ _PN/,HNVA-HNR0.02. AA"VA進EQ&O&&N y0. -H0. `0.02. AA$VCꀲGQ(O((NR n0( @d*0.02. AA$VCꀲGQ(O((N`0.02. AA$VCꀲGQ(O((NR n0(@d*0.02. AA$VCꀲGQ(O((N`p?(HyNl0.02. AA"VA進EQ&O&&ER&O6p&QBgN `?(HyNl0.02. AA"VA進EQ&O&&ER&O6p&QBgN `?(HyNl0.02. AA"VA進EQ&O&&ER&O6p&QBgN `t?HyNl0.02. AA"VA進EQ&O&&ER&O6p&QBgN `"S@ @b@0;N"O2p"QHyHyHyHyN n //9N2 _0NRN^,_ _FN/,HNVA-HHnN NNRAk-HHn0(rAA?0(@?p"@?p T@rPA?N0.@P@=@2.PA=At=B`&0.@2.SAAA40rAA1Rn noHn0.T@?0.@?0.Y@??< NAQ"O""NRAQ"O""N4AQ"O""NArCpQBgp9?2.XA?2.A?A>"O2r"QAQ"O""HnNHn0.2.tHArAA?0.2.A@_@?p@?pX@?NAQ"O""AO"OpQBg?<Np=@`0.2.SAtPBA=@r=A`r0.rA^BRBBvC]DD=B8.0@@AHp@0.@A?0?.?pT@?N?.?. NNBRn noRn n o\NRVN HnHn NN>@d(NR y0. -H0.`0( F@1@ `0(F@1@`?.?.CnO$OpQ\/ NN>`?.?.C.O$OpQX/ NN`x?.?.CO$OpQT/ NN`L?.?.CO$OpQ/ NN`"S@ @b@0;N"0>j?.?. NNNRV?9l?9lAQ"O""NJ@d/9kRN+Aڞ}""O20<G"QN p3kN^,_NuY2 position (pixels)X2 position (pixels)Y1 position (pixels)X1 position (pixels) done^used close X1 Y1 X2 Y2/,HNVA-H0. S@rHH@R@=@0.N^,_ _TN/,HNVAh-HNR?. VN@$V"<}CA-HHn0(S@?0(R@??<p/?. VNt$ BT@?NAQ"O""Np=@ V2(=A` y0.-H0.=@2. =A` n0.C] O0 HyHyN"p0. V2(A_6( xDVEBdV4.x/?. VN$@@"V <~lAE Q&O&&ER&O6r&QBgN `:4.x/?. VNX$@@"V <~lAE Q&O&&NRRn0.noRn0.no2.=A4. =B`?.HyNl?. VN@"V"<}AEQ&O&&ER&O6p&QBgN ?. VN@"V"<~lAEQ&O&&p*O$OBgN Rn0.nofNRVN^,_ _XN/,HNVA-H V0(2. A1@"y3@tBW8(:(EE]FCdRD1D V?(?(N n V1@r=A4(=B` y0.-H0. rAfx"V4)=B6.RC=C`8 n0."n0.S@E]"O2"A0 Sn0.nl n2.BgBA0 `~tBfv6.=C"V8)=D`8 n0."n0.R@E]"O2"A0 Rn0.no n"V2)RABgBA0 Rn0.no?. V?(NN^,_ _XN/,H/,O}A -H0. rAftt2=Bv=C yx1D1Dz=E`Bp=@`, y0.0.BgBA0 Rn n2oRn no` y4(=B6(=CHnN Nx`p=@r=AAk$<}-(6(^C=CUCxDD=C8(D =D:(|FFTE=E<(0@F=F0(@=@2(A=AE=Et BTB=BvRC=C(<}HvH??r A?rXA?N <~Hv2.QA??.?.?.N <}Hv29kRA??.?<?.N <~tHv2.QA4.6.SCB??.?<?.Np=@2.$<}=(`V0.S@x"<~tCA <}-4.xCHq 4(6.CSB??(?(?NRn0."<}vot=B0.=`xp=@`b0.x2.SAAA"<~lCA <}-4.x6.CCCHq ?(4(B??(?NRn noRn0."<}vozt=B`N0.S@@"<}CA <}-4.BCHq ?(4(B??(?NRn nop=@`N0.S@@"<~lCA <}-4.BCHq ?(4(B??(?NRn noNRAkQ"O""N?.0.@?N n=@2.AW=B&<}Hv88.BB??.t B?tXB?N0.@e6 <}AQ"O""AO"O rQBg?<N <}AQ"O""ATO"O rQBg?<Np=@2.$<}=(`d0.2.4.SBA?0.S@?N8Hz?<NJBg?.N??"O2v"QN&6`FvCf> y8.8./A>"O2x"QN&NR y0.0.C] O0 HyHyN"p0.x2.AA"<~lACQ$O$$CR$O4p$QBgN NRV0.2.΀A@d0.R@@=@4.6.C\ĈADd|8. zEW y0(tB^CFdN|0. rAoN/9kRN+A}""O20<G"QN p3kN^,_ _TN Data Entry # Data Set Set done more /,HNVAv-H0.rAWBB.vCWDDxDWEEz EWFF|F^AAA=BN8Hz,?NJHz ?NJHz?NJHz?NJHz?NJHz?NJ _C2"Qr=A`:0.S@@=@V@2.tA 0C0.\@t0Rn no0.r.Ao.t/=B`0."SAtA0Sn n+l0.@#=@?"O2r"QAQ"O""HyNN^,_ _ N\\ \ /,HNVAl-HHnN Nx`NRAkQ"O""NAk-HHn0(@?0(2A@?p@?pX@?NAQ"O""AO"OpQBg?<N?<?</?<?<NO?<ALO"OpQ NN?<A&O"OpQ NNx?<AO"OpQ NNX?<AO"OpQ NN8?<AO"OpQ NN?<AO"OpQ NN?<AhO"OpQ NN?<ABO"OpQ NN?< AO"OpQ NN?< AO"OpQ NNx?< AO"OpQ NNX?< AO"OpQ NN8?< AO"OpQ NN?<A^O"OpQ NN?<A8O"OpQ NN?<AO"OpQ NNp=@`.0.@@=@??<0??<"?<NC:Rn no?<n?<;A~O"O1p0QNEXNRVN ?9l?9lAQ"O""NJ@d/9kRN+Aڞ}""O20<G"QN p3kN^,_NuControl code next to resulting special character.pFV=] oEU-[ nDT9~:mCS8+_lBR7?>kAQ6):. <9kFf?/N`29kAf?/N`49kBfp?/N np1@2(Ad/9kR?9kN*^`2/9kR?9k?N*/9kR?9kN* np1@`|69kCfN?/N n0(@d,?<NK nCQ$O$$NR?<NK`$09k@fH?<NK nCQ$O$$NR?9k n/N?<NK`89kDf?/N`<9kFf?/N`29k~Af?/N`r49k|Bf?~/N`R69kzCf*?|/N n0(|@dNe`09kx@f?z/N`4:9kEf ?9k?9k/N` <9kFf2. 49kBW89kDWņECdT??/N n0(F@2(tB^C@dN n0(rAo ?<N3\`269kCW09k@WƊFEdT??/N n0(F@2(tB^C@dN n0(rAo ?<N3\`:9kEfZ?<`?9l?9l ydCQ$O$$NJ@d* ydp(NAN^ _TN/,HNVA*-HN?<BgBg?<&?<N,-@/.?<Bg?<?<BgBgBgBgN-=@/.?A"Or?"QBgBgN4 n C2p"Qp.r"AoA/.?<Bg?<?<?<"?<Bg?<N-=@/.?AO"O"r!QAO"O"r!QA"Or?"Q?<BgN./.?<prAtB??<?<?<???<N-=@/.?A.O"OBgBgN4 /.?<prA??<?<?<?<?<?<N-=@/.?AO"OrQBgBgN4 /.N2p=@r=A/.?.N2"=@0.@e /.?.Bg?<N=@/.?.AO"OpQN=@/.?.AO"OpQN=@/.?.AnO"OpQN=@/.?.A4O"OpQN=@".-A .N^,_ _N Desk Accessory 6 Desk Accessory 5 Desk Accessory 4 Desk Accessory 3 Desk Accessory 2 Desk Accessory 1 -------------------- Desk /,HNVA-HN/. N7N^,_ _XN/,HNVtAB-HN0.=@2. tB=A&.-Cx?<HnHnHnxHntNYLN^,_ _PN/,HNVtA<-HN0. =@r=A$.-Bx?< HnHnHnxHntNYLN^,_ _\N/,HNVtA<-HN0. =@r=A$.-Bx?< HnHnHnxHntNYLN^,_ _\N/,HNVA0-HN/.?. A "Op?"QBgBgN4 N^,_ _N/,HNVnAV-HN n pR@p2.=A n /N[-@r?<#HnHnzHnrHnnNYL0.z=@0.N^,_ _\N/,HNVtA4-HNp=@". -Ax?<HnHnHnxHntNYLN^,_ _XN/,HNVtA4-HNp=@". -Ax?<HnHnHnxHntNYLN^,_ _XN/,HNVtA<-HN0. =@r=A$.-Bx?<!HnHnHnxHntNYLN^,_ _\N/,HNVtA<-HN0. =@r=A$.-Bx?<!HnHnHnxHntNYLN^,_ _\N/,HNVAp-HN0.T@=@?.N5-@/.? n0(rAW0(vCWĄDBd"n0.3@ 4. 3BN^,_ _ N/,HNVAN-HN n0.-H0(rAW0(vCWĄDBd"h /"n / ND`N^,_ _ N/,HNVA-HN0. H//<N, м/HnNp=@2. SA=A` n0.p1@Rn0.no n2. r1A$.-B .N^,_ _TN/,HNVAH-HNp=@ n 0.rtBg R@=@`0.rAl=A0.=@0.N^,_ _XN/,HNVA4-HN/.N8@d0. Hм//.NN^,_ _\N/,HNVA-HNp=@0.rdA] n 0(vCVDBd0.R@=@`0.rdAlzt=BS@=@`6 n 0.-H0(`/( n/( NN? NN`"h -I/ n/ NN? NN n/(?< NN n/(?< NN np//( N`"h -I/ n/( NNH? NN n/( n/( NN*? NN n/( n/( NN ? NNd np//( N`0@ @ b$@0;N xxRn0.no2.H//<N,"Ҽ//. NN^,_ _XN _"B2e.UN/,HNVA-HN n 0.-H0.1@2.1A4.1B6.1C8.1Dz01E1E|FWrAW€B@d0.tB=@0.t B1@p1@ vCW|FWAEd2.1A :. 1E`!@ 2.zEg/. ??.N:N^,_ _N/,HNVA-HNp=@ n2(tBg` n0.0(r AtBf0.R@=@` n0."n0.0)r FAA1@0.R@=@/.??.?.?.?.?.?.?.?.?. Nh0.=@0.N^,_ _N/,HNVtA>-HN0.=@2. =A$.-Bx?<(HnHnHnxHntNYLN^,_ _PN/,HNVtA6-HN0. =@".-Ax?<rHnHnHnxHntNYLN^,_ _\N/,HNVtA^-HN .-@x2.=A4.=B6.=C8.=D:.=E<. =F?<*HnHnHnxHntNYLN^,_ _N/,HNVA"-HN n0. 0( =@0.N^,_ _\N/,HNVtAp-HN .-@x2.=At=B6.=C8.=D:.=E<.=F0.=@2. tB=A?</HnHnHnxHntNYLN^,_ _N/,HNVAN-HN/.?.HnHnHnHnN=/.?.?.?.?.?.?.?. N$N^,_ _ N/,HNVA"-HN n0. 0(=@0.N^,_ _\N/,HNVA"-HN n0.0. 1@N^,_ _PN/,HNVnAV-HN .-@r2.=A4.=B6.=C8. =D?<+HnHnzHnrHnnNYL0.z=@0.N^,_ _ N/,HNVpAL-HN/.?. n/"n/ N> n0.-Hp"n0(2$n 0(4N^,_ _N/,HNVtAJ-HN0.=@".-Ax?<,HnHnHnxHntNYL n0.0"n 2.2N^,_ _N/,HNVtAV-HN0.=@2.=A4.=B6.=C8.=D:. =E?<iHnHnHnxHntNYLN^,_ _ N/,HNVtA^-HN0.=@2.=A?<hHnHnHnxHntNYL n0.0"n2.2$n4.4&n 6.6N^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NTN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVA0-HN?.?< n/"n/ $n/ &n / NN^,_ _N/,HNVAT-HN?. NZ0. rAfBgBgNZ`&?HnHnHnHnN?.?.NZN^,_ _TN/,HNVA.-HNBg?< HnHnHnHnN0.=@0.N^,_Nu/,HNVA -HN?. ?< BgBgBgBgN6N^,_ _TN/,HNVtA~-HN0.rAW6. AWĄDBd?HnHnHnHn N0.=@2.=A4.=B6.=C8. =D?<eHnHnHnxHntNYLN^,_ _ N/,HNVtA.-HN0. =@?<fHnHnHnxHntNYLN^,_ _TN/,HNVA(-HN?.?<?.?.?.?. N$N^,_ _ N/,HNVAH-HN n pR@p n /HnHnNE ?.?<?.?.BgBgNN^,_ _\N/,HNVAH-HN n pR@p n /HnHnNE ?.?<?.?.BgBgNjN^,_ _\N/,HNVlA-HN0.rAW6. AWĄDBd?HnHnHnHn N0.=@2.=A4.=B6.=C8. =D?<dHnHnzHnrHnnNYL0.z=@lrAg? n/N0.l=@0.N^,_ _N/,HNVtA.-HN0. =@?<gHnHnHnxHntNYLN^,_ _TN/,HNVnA>-HN0.=@2. =A?<jHnHnzHnrHnnNYL0.z=@0.N^,_ _XN/,HNVtA~-HN0.&=@2.$=A4."=B6. =C8.=D:.=E?<lHnHnHnxHntNYL n0.0"n2.2$n4.4&n 6.6N^,_ _N/,HNVA8-HN .R-@ n"<//N"0"n r2N^,_ _ N/,HNVRA-HN0.=@p2. =Art. 6<Co =CT`=BTv=CV8.T=DR`"0.V@2.VtA 0C3RnV0.VnRo?<Bg?.T?<HnHnHnHnpHnX?<NYN^,_ _N/,HNVA-HN?.?. NZN^,_ _XN/,HNV8Ad-HN0.=@P2.=AR4.=BT6. =CV?<BgBg?<HnHnHnhHnPHn8?<NY?.?. NZN^,_ _PN/,HNVA<-HNHnHnNZ?.?.?.?. NR?.?. NZN^,_ _XN/,HNVA -HN?.?. ?.?. NN^,_ _XN/,HNV8A`-HN0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?<Bg?<HnHnHnhHnPHn8?<NYN^,_ _PN/,HNV8Aj-HN0.=@2. =A4.=BP6.=CR8.=DT:.=EV?< ?.?<?<HnHnHnhHnPHn8?<NYN^,_ _N/,HNVA,-HN?<?.?.?.?.?.?. NLN^,_ _ N/,HNVA,-HN?<?.?.?.?.?.?. N N^,_ _ N/,HNV8AX-HN0.=@P2.=AR4.=BT6. =CV?< ?<Bg?<HnHnHnhHnPHn8?<NYN^,_ _PN/,HNVA&-HN?.?.?.?. Bg?<N$N^,_ _PN/,HNV8A~-HN0.=@P2.=AR4.BS@=@T6. CSA=AVxDVŶDVFEd z=E`=D?<Bg?<?<HnHnHnhHnPHn8BgNYN^,_ _PN/,HNVA&-HN0.2. An =@`=A0.N^,_ _XN/,HNVA&-HN0.2. Am =@`=A0.N^,_ _XN/,HNVA-HN0."2.A? n0"n4B? NNN=@0. 2.A? n0"n 4B? NN(=@ n/?."? NNP _0"n/ ?. ? NN:"_2 n0.$n2A0&n 0.2A60rA^0A^C=B0.N^,_ _N/,HNVtA,-HNp=@?<kHnHnHnxHntNYLN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNYLN^,_Nu/,HNV8A<-HN0. =@?.Bg?<BgHnHnHnhHnPHn8BgNYN^,_ _XN/,HNVA-HN?< ?. NN^,_ _TN/,HNV8AT-HN0.=@2.=A4.=B6. =C?<Bg?<BgHnHnHnhHnPHn8BgNYN^,_ _PN/,HNVA"-HN?. N[,?<?. NN^,_ _TN/,HNVA-HN?<?. NN^,_ _TN/,HNV8AB-HN0. =@Pr=AR?<BgBg?<HnHnHnhHnPHn8BgNYN^,_ _TN/,HNV8AR-HN?.?. N[60.=@2. =A?<lBg?<BgHnHnHnhHnPHn8BgNYN^,_ _XN/,HNVA"-HN?. N[F?<?. NN^,_ _TN/,HNVA.-HN0. rA?N[Z?<h0. rA?NN^,_ _TN/,HNVAl-HN?. N[P0. =@rAo$t=BS@=@ vCox=D@=@ ?<?.N*0.rAo?<?. NN^,_ _TN/,HNV6AD-HN0. =@2.=A?<'Bg?<BgHnHnHnhHnPHn8BgNYN^,_ _XN/,HNVA-HN?<j?. NN^,_ _TN/,HNV8AB-HNp=@P2. =AR?< BgBg?<HnHnHnhHnPHn8BgNYN^,_ _TN/,HNVA-HN?<?. N N^,_ _TN/,HNV2A-HNHn2Hn4Hn6N[dBgBgNn0.=@P2.=AR4.BS@=@T=AV6.BSC=CX8. DSA=AZ:.=E\<.DSF=F^=E`0.=@b?<BgBg?<HnHnHnhHnPHn8?<NY?.4?.6NN^,_ _PN/,HNV8A`-HN0.=@P2.=AR4.BS@=@T6. CSA=AV?< ?< Bg?<HnHnHnhHnPHn8?<NYN^,_ _PN/,HNVAr-HNHnHnHnN[BgN?<NHnHnHnN[d?.Nx?.?.?.?. N*?.N?.N?.NLN^,_ _PN/,HNVtA6-HN0.=@". -Ax?<NHnHnHnxHntNYLN^,_ _\N/,HNVA-HN?</. NN^,_ _XN/,HNVA-HN0. ?BNjN^,_ _TN/,HNVA4-HNN[rAf ?</N2N[R@?N["N^,_Nu/,HNVAB-HNN[rAo*N[S@?N["N[rAf ?</NN^,_Nu/,HNVA<-HNp?/Np=@N[=@` NxRn0.noN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNYLN^,_Nu/,HNVtA,-HNp=@?<kHnHnHnxHntNYLN^,_Nu/,HNVA8-HNp.R@rAHnN[/?. NX=@0.N^,_ _N/,HNVA-HN0.F=@2.@=A4.D=B6.B=C8.:zE=D<.8=F0.6=@2.4=A4.2=B6.0E=C8..=D <.,=F 0.*=@2.(=A4.>=B:.<=E&.$-C?<HnHnHnHnNYL0.=@ n2.0"n4.2$n6.4&n 8.6(n :.8*n<.:0.N^,_ _3| NAXNu/")x itg$H@//?) ?<@NA LJof _Nu/,HNVA-HNA ]"O2"BBgN:0@d"CO$OpQNX`A ]"O2"?</<NF0@dBBgA0 `A ]"O2"?</<N"0=@0.@d&?</<A ]"O2"NjA 0 ?A0 `A ]"O2"BBgNR0@d6A]"O2"A ]"O2"?A]"O2"t&?NVNRD@@?NVNRA0 `&A]"O2"D@?NVNRA0 A]"O2"p?NVN.4Bdl0. rAg4.BR@=@`4.QBTB=B0.t Bo8A]"O2"?</< ?NVNjNJA0 `:Am4A]"O2"?</< ?NVNjNJA0 A]"O2"v?NVN.8Dd.8.RD=DA]"O2"?NVNjA0 =C n nfA]"O2"Nz0=@2.@0AC]$O4$0.?NNDt?NVNRC2"Rn`0. rAf4.Bd?<- NN` ?< NNp.? NN?<. NNp=@2.QARA=A0.nnR@? NNRn`?<E NNx0.rAm?<+ NNb`?<- NNT0.D@=@0.r H@0? NN40.r HH@@0? NN`4.RB=B6.Am =B`x=D8.@RD=D:.EdRD=DRD=D:.=E0.nn?< NNRn`0.@d ?<- NN0.rAn?<0 NN`&t=B=@0.nn? NNRn`?<. NNTp=@2. =A0.nn2.A? NNnRn`N^,_ _N(_"_/ A) g  f$)Jtf&H //?) ?<@NA LJovfNu$ix&i|fa`pRgf#Jx`H")x it#Hxg$H`//?) ?<@NA LJofLNu )f NuHyy` Hyy0< LNXREWRITE required prior to WRITE or PUTDisk or directory full _$_"Wp i e)H/ N}@L4NH/ N}@Lp)` _"WJ9f*J)f i e)H/ N}@L i d)J)fJg i dB9J)fBiNz`z _$_"WptvH/ HyaB29XL- -fJf^p`4  fJg*`N0eH  bBԂi\(؄iV؄iRԄiNԁRCJ)f  g i e) 0e 9c~Jg&JgDJf 6Höf4N$NHy{0<`Hzh0<NX _$_0"Wt&JRJ)f:H/ Hyar29XL i d J)Pf RBBe`Be`N Bad digit in number encounteredOverflow during READ of number _$_"W2/Rbp1Ro4Np `z`z _$_ptvH-Hya29L- -fJfBp`  fJf4J9g`*0e$  bԂi8(؄i2؄i.Ԅi*ԁRC`Jg&JgDJf 6Höf4N$NHy} 0<`HzV0<NX _$_0t&JRHHya 29LJ9f RBBe`ΰBe`NBad digit in number encounteredOverflow during READV of number(_ _/ C (g ( fXJ(fF$($IJtflH / /?( ?<?NA LJo*fJg  f"J` g  Wf NuJg Jh g J(fPNu!|NuH$hx&h|gpR@@gf!JxL`H &ht!KxJh f(aZLEJ@g *f` R@Bh` / /<?( ?<?NA LJlp!K|JfvL`rH@Hsp/Bg?<?NA LRA3 f@ AgUH@Hzp 3 dp` SAH@Hzp/?<?<@NA L` fSA` fSAH@Hzp` f H@Hzp `~ f4SA`(H@Hzp 3 dp/?<?<@NA LQ`* d,9@HHzpp/?<?<@NA L AfH@HzFp/?<?<@NA L NuHzR0<`Hz$0< LNX  p Exit q C^AReset required prior to Read or GetAttempt to read past end-of-file/,HNVA-HNA ]"O2"A0 p.@=@0.J@nBgNA0 `0.r(AmA]"O2"A0 `|0.rH=@0.2.tA02<v8.zHĉHDDiAA0.rAl0.R@=@0.rA`A]"O2"A0 .2.N^,_ _\N/,HNVA-HNA ]"O2"BBgNF0@dBBgA0 `fA ]"O2"?</<N0@d0p=@?</<A ]"O2"NjA 0 `A ]"O2"?</<N"0@d6p=@?</<A ]"O2"NjN(A 0 `HA ]"O2"BBgN"0@d&p=@A ]"O2"N(A 0 `BnA ]"O2"?BGHGv8ބdRC8ބdRC>HGvކdRC8ބdRCHGv48ބBޅB:>HG8ކkE߇SDkBg|d RdRDUJg( DbRD ME \/LNuBBo `H _0/2// v/ 8://~/?DD?DBo 8JgJgG|HD8H@0zr)`рe efef<څ߇QgRCgڼd RGdSCJCkD|blo/EC \/LNuoH _p2/g/ f/W?o `ֲ@e:f$/&e&f // d*B6//J/ k`(&// S@Q`&// `R"/?/[4JfFӃddRdRR/eJd RdRd`/AG o Jk`z0H*kS/JkFft grkRBjIHA~`( dtHAI.kRBҁjBG` BBRBӁj/e2/AG o Jk\/LNuH _0 @&b(CC/)?/LNuHy`HyLNX Hz@CPt$> nk(:C@hԥ*5 c_1ɿ1.Ź^ k:v #-xŬX&x2n)h? SYQa@%oNˏ'?9x!7I|o|@Eŭ+E75vV 9@{pvPFloating point overflowFloating point division by zero .NuH _ g2e.d/LNuHy`HyNXt`t _"_ gR e6G$S" geb"*f&"`&A%S"`&J`а|gb<|fP"9gH$A#`:"9g6$A#`("9g$$A#` @ g"9g $A#"`"E.&R"$b HyNXJgr"Qd2`"SjN _"_ " g2e.dgR m @ e@E"fB#@B$`p&A"+ef "'I`Z"#@B$`L$K`ư| f"#`4|f"#` |f"#` "#NHeap overruns stackPointer NILPointer not in heapHJ _0"_e /LJNuHyHNX/B9r/|rNuHJ _0 @f0"|HHp` "_J@jpErr4@ BbBS@kQ/LJNuHJ _4SBkt82$_rAbd0 @f0"|HHp` "_J@jp6ADb6CG0IS@k$eQ/LJNuHJ _4k2SAk0"_p6B@bE0)CS@kQ/LJNuHJ _2$_r0 @f0"|HHp` "_J@jp@kS@kv&J$IRC4(K Vg RQBg`?/LJNuHJ _4kF2SAk>0 @f0"|HHp` "_J@jpJBg@b6B@oCErSBkQ/LJNuString overflow _pJ.g 0( hNVg4 ( hg( hH`0( hNVg ( hg hHfXgr"ODd2Sk "Sj` _"y.e HyNXN#z#v .f -|`-| nNнvf yzNStack overruns heapH?~ _z gBjDRE"g8jDRE$6HBJBg8HAJAf,HBJBf$ւi EdD.` $HB8`B/L?~Nu0NvDNH~|` H~| _z f0NjDRE"g`jDREdJgR(`DfxJg<`DxSDbb JgHA8`"tcRЀ`xeWJg(MdD.`B/L~Nu09*Nu09,By,Nu _3*NBy,Nu[3][][ Abort ]Copyright 1986, CCD and OSS, Inc. ,   $ 4  LV2>&""$,$ "T( j2  H* z & . (Z(f(xD0:X..\8N&"0^X x**F&(&4***. jB 46 B "$88N*62f d* j "@$J\>&6& 8"$"(<&6& $"$&$HLhF"P<":62<` .0&  0 & b:.<F  ~BV* F, 0Z6R8 .B DP~4l`v*&,*&H"&,"0"64P6d2d&&:&&D : :0*44.,,,,L 0,,,X*&""X*&"&$`\F4d\J84j RXVl"btDN. . *N0j D& .$ J( 0 $ b( *.......0,,,,,,, Z$>$0$ J `T&p$ TBL..* ....$.40VL0|^Hf66V22**    h.  & 026.6>022H",FHPHHHRHHB"&B"&0& F$f"*  .8<"*  .8:(.202*&8  & Dt &>6 22VZdZ2$hJJ , <8VP (&**<.(:F*    Z,$,.$(" Z,.",",",",,*   *P(V,6,6,6((*B   & 2 &@.0B    *P(D6,6((( (*B   & 6v &@.. ZHX<>*:08p$B$2ht^@>4: (P"@"x2   (66&,B( .2.60  ," &" ,0   & &                   " " & & &   6 (  0     ( ( &   & $$$* $&JT.&.* "0**$ \ؘ$fx&j($&$ 6 0 0 $"$,( ( 0 0 06 ,Lb8z,Fb":,"JpV >X8f,tPdv`  rV"2 * R":d"F:6B.H*6J"*JFFFF ( B4r"" >$8$8rJ" *,JJ0" J " 4T ^"BBL :r >>  0 ,H ,,6 8 ,2 v8 ,6 ,,T  T* ,,  .6   *jV0b,4 "T & & (,& J           & & " &*|vZ< . >*>t BBb4$ 4,6$$&$$&$$$$d4$,602 0.Jj.  $0"Z0&(.  ^ (*  l,R tbr44*(*" ,D(N0$.$$$$H* z  f H F  2  "D    * "FV ( *@ B @ ( V  L" F("  " 4  ,       N,)P*,/16<@LDINSW[`HelRqwr|fvv(r:v$؊ܢ z&d  N(6"d&+r/48z<AEK<QW\bf$P@03DUw 0@`s'FLICKERS.0 @' `@QyS  K /` MA(*b!@T@$ .$R!h" TD j XB9.(S !۪ݞ{1l L/ P   @`0@P8XTR$,(F  Y0PBL` s/{_e$R? h=@@ 8 "!p:a Di  c& X *? H$hwz﯌BP< M#  @ ","+X $6  ܠ [_{o>݄j hp!D_~\i@QD@ @ ( `@"(a`VnQAu@ pʱ# L -bMC"W/  @@@  " (@$P05@ D4B gT$@~8k@4t(Y/` ` @ @B !$0`Hv! 3#y; 6 @X @FDWD)0  @Bh$@ A8&i ` D4d@$@+EI,rx~/:F H@A $(PA CB ܽU@@OG8ǀ0 (@@@  P&DA 0 HP `H T P Ub Lr/  @   @@ "1 2a)haAFJjl A  ( @ @L! HA@@t@Q`@@bxi<| /  "%@0@B  *.a !"%@ H K@hA3߿/- X@@! @ @@D@H*@ $ B@ f /` H DA BP  +4a`P5: f@$4 NnIu:@`* AT@ A@ @ P0 7X $B`dG0X4JE@,)3 D>i-($!- /x  @ A@$@!Dr 2J2  _}tT- /J@  @@b !DA@ !\S 1R 0@G&@Ft#PlM|.[Ѐ\3/HCFʈ*@&@P @ PBTL( \qh!@ 8, PVVպT5?/G @ P#A+P*TB@z(@8Zx1x/{ +G,| L ,o^n{r׹hߦϯOxB7u1?m?߾W~0`BR?=?}+[vcI   P~KO?ۗ @P< Dogn/@}_P2 ܠ {>{gbR  oz?} 3 t~3@A W *^׿_ۯY^g5˽4x,Z "~f﷉=\܆pS@ BAY ?~{˛\>Y@0`h !W?_;Ycu#BG8 ǀiLAA@@H ?wkߟo5vw>vߪo_r(o{u}͞~֗W}G_^\k|Vm?>~w=f ?Kf|"g?;[g^i{?c'{߿M}wG|߽[^olJ: '-߻[g{˞;go9W3 XI ) ]۽:mϧwugWMg0 * @\ j  @ -$߾޻wW{__7k}* 3K9J]!]h F -&{޻NSV&@toߦN6 %ٿ~o~my3X&7 MO^)NDP  6? &}?ܾ{ov~W\׿3=:·2 +G,uSys K   @!@ B 1bE}V߻ݟ1 Lu @ @P $$@H @`|B7u1?m?߾W~ߧg,R?@@ #2 a`    P~KO?RP< ǹ 2  #  % ܠ {>_џ^i@Q  A@@ AQ@ t~ݿbCc(W@$@0D@T4x.kP4(Y`   @  @00"8  W@X BˠGDW ($ @(@0@$+@0=~~ @$@D\@@G80{ $D@ @@  @Lr  @@  !(hAB @kߧ   @@@@ 4@8f|   !!  H  dH@@@@: ' @ (`@D d$3 [Oo}=;@h) w5@ @D@ A@ 0 *O~_{??800 !=}!dfffdd ? 0@Ђ2)44>? ? (0$ < ~ ?@@@  0c`$P@03DUw 0@`s'FLICKERS.2 nd,n "> l~Fd ";11 C{]@n:b`hh@ 0 ? = Fv    " `o`o~~~ @xxE}$P@03DUw 0@`s'FLICKERS.3 \k/>/? ``~ X   @cg$ Ll|~ ZXXZ '-?/??@``~  -??o _??? ?|<{ 0 ",???w h,0rz"?`$P@03DUw 0@`s'FLICKERS.5 E}j ~<k7;s?@0X\0 xm 9`x p%@@ 8px8<A~\~8 <0  n?_ [ ?xi %xN=0`@ R,%@Oc `  20 13qy8<A~( x<D~8o  8j?_ @_CG?xi`xn$@@' cqy8<A~"x<D '@;8 dls{ppps pVHDF ??P ?`p0  @K$P@03DUw 0@`s'FLICKERS.6 ?dfN=0 m3acAS>?xPP@WW x>x<hq3`   9 px88g; ~$b}? =BX |1O>|?_B|p@ =C"@J]Vu?V ?x>x4 x> 8Ȁ@ $fǀ  6&πpx`88_?@|>[ pw? =~<cCT>|8 |@DPPYp ?T ?x>x >-d8 /K#  y p9/?ϟpx`88_???/|~>B p1 0cc?>>>NY 77P   ?`(>T $P@03DUw 0@`s'FLICKERS.7 3:?1 B .??G0.  ,@p<90~A7p0 p:8?|@1[ p~?sba+ <D0 e * @p8|0`@ p<50@@P!u6x'9`P0l<+`@ π`?OGC~.Ys? .?yp0 0/:*.@p8|8@p<|.0@P8K~%a . p`?~?)\  !2 Fp`|80p@?@@ ?+ p`D(h$P@03DUw 0@`s'FLICKERS.8 &:?2 '"8?|3 ~q8 ^ \0@5 >@x }?8x<?=C#0'x < v? )f ??|0t`v8% 1>C/|?`((h }?|?3x`<!㓿M?a;&#x,=`|π!A@@'` |'#??|,~?w ~pqFX \,0??``(hX/ }?|?|>/x`<q ܗN8)x,=`|>x?___^)_30`qhs?p5 0`?0( @a$P@03DUw 0@`s'FLICKERS.9 <C/ <x. `0YYf<|; A(~x4 ;0x|~>?|.?|@H  < " |:\>8x<,`@yr@ Bxd={:`W'~p70x|~>??{~ /!?@~'0y|@`` >A! @2<W@~8x<+ @ r~|;<|7aWo~;8p 20x|~>?p_//?P. 0<X=`@LC8x~| |<<8 @08|g5?|?+ a$P@03DUw 0@`s'FLICKERS.10 F9x"? ><xp 132aAbx7p 8p(x@`0 `p8,`7>R ?|)aa##@0'? 087?> ><xp  ٍ   8(8Gk|0`p8& `2 |>>pr @?|$3Oh0D0D`qI $@%@!`?0 ? 8087?><9 G><xp)#yx}>p>pA|??|?c߇?k%%@a%<? 0, k  ^ bx<001m??+@q??~,P$P@03DUw 0@`s'FLICKERS.11 Y"? { K5 < @x?|  @0 `<|x @`08 `?> [A46 O>??| ?< I` $@%@!`?`?|x  9" \ g `g38 p `8><p Cu   O?>{> |??| ?< @a%$|x ~ g38 pp `+  5 <@@ ???A?~,$P@03DUw 0@`s'FLICKERS.12 U& p>?<e 0``>8 0<w ?,p88 ?p>?o'8 < @>~ǾRSM-^?8p88 ~`?9>?<لe 0`@@ `>?~< ~ؾ40_Sc ^s98 x~@0036\`d`Ixx ,~*$P@03DUw 0@`s'FLICKERS.13 S'~??  ϓnj888 @0~``? @|<  ?!< 8 A/PxDLNL#x @<@~o ?0 pph$|<|x&`  p8?! p?@p1#oO?? `X<~o?ao| ?0 @x@<x|<<8p: @@05$P@03DUw 0@`s'FLICKERS.14 S% ? ~p.~<0a``@p<ǀa$@@@ 0|3o  ????89x * +N#   0 ?@N8a ?@p<G' d8@+@ < 34a0 z ?????~p~`x;Î0a``  8@p<G' a ~@8@@@@ < 34a75_c0x@??p  0?~|`+ @  0 %$P@03DUw 0@`s'FLICKERS.15 *D6*P7  ^?@@K` ?_?/*x8@? 0`8?`/? '0aS7|bXG x8   3f͆8` @`@# 0@8 ?. 0`@  ??0??or 60@`?[(A`00 6$P@03DUw 0@`s'FLICKERS.16 @)R- >x88  O@"> 8@  ?>>??? @ FDC@ C|" qI  {H `?D@7 z>x70p`0!x>OGa`3g" >? `h?\ ]HFc1 8O1;@?~> 8?pFz0 V>8A8x@@3?x>x7@ ?@">?   ?????\??\߾Z;D:@?!8?qA|?{? 8p8 .xoo?@@680p`  ~o1 `(  8Nx8??<xo???D 8pU$P@03DUw 0@`s'FLICKERS.17 cze`?]qj@HA##3!"p@!!N @`?p0X B_0?=?~W~???W p`?:z A$ p ebgJpzv|ChD6axE" @` `?p0 UW{<)A?~WSӏ~ ?T ??:y (0G*~raKq  ??!0@``??P Rd????<A?~V?Q ?#pC80@~0xP`D0p` #w?  b?X m$P@03DUw 0@`s'FLICKERS.18 kft.`  Ix @A##  PP @@`c''x``m X  ?~g A@~?np`  E ?> ?@ "C#"0XLB3+pK!`!`2 0``8 `x n &G-0?g @逩)p ?k?? I???$?0@ ???I @`0b`???N Bi ['7> ?@ 3;XLB3G `!`2 0``8 `xN   0p&b 7 1Øp<c38xN ??ou  @`0 p@??O6)xhoAy????G @`0?Qp0  <??w`s @ ??O@00PHu&?? ?8]@ <M ?< pI   ??Y `00 80{0$P@03DUw 0@`s'FLICKERS.20 1zd??f|~>L B |M @|? _T Q IM"" M@Cz?f~>c1L ?<>?< | z M >@@@   @S8a?Q ~X8|b|???>w$P@03DUw 0@`s'FLICKERS.21 d&B >>?~? )cFL\XIIA)G  Ȅ@>???????>x~# `@| $P@03DUw 0@`s'FLICKERS.22 d#| 9~<>?|s8,p@<~4~$,| 4td$$Y @ &?~???|($$x  <6@|<| `?s$P@03DUw 0@`s'FLICKERS.23 sj/" =~?0 _<08?? 4 "? ?x 98;?? 040  ??????LJ 08??66 "@`@@`@   ?33 | $P@03DUw 0@`s'FLICKERS.24 ]m. noA_@,l! |    `XX)1b @(` oo_ 0|)8<||8 /}7? 7p7|w7 @ p pp00|@ $P@03DUw 0@`s'FLICKERS.25 Zj sSrzp8 ? d  !.#3:>en8 cd ?eFOvCyx99e`p?xXrVn vA|>r>?po$/6i`pJ +(|>r> Ly??qo'n 8 q$P@03DUw 0@`s'FLICKERS.27 Ezln?j?>8@{@^ ?h xj 9`x m%@@ 8px8<>~Wx>0f~x0<" @kd4 ze ?xf %xN=0`@ O,%@Oc `  20 13qy8<>~( x<Ay< ?j=``  @@m$u7 ip ?xf`xk$@@' cqy8<>~"x<A 0`" n 0? s  ??M ?`p0  @B$P@03DUw 0@`s'FLICKERS.28 8dvT@?X p$z!Z  |<< ;f=/?@ pp000w?@H^AsG?V  )A _ c<R?PPp^ |<4 ,?68p14|A!@H|pp08 9 ?/ K |? 3?R@|?;9z!@@R??P@Pl[|<- ?; ?|0,p?_/F@?}pp0(  w? _? ~> |߀|>x Ap<~W@0 <.?????\, 800   P |$P@03DUw 0@`s'FLICKERS.29 +:D</" >}/ 7< (|9 cx<=? p<~:0 pA7p:8|@6 ?a  ??- }O'Ac!9 0.9hL,89p<!xP.0@@`P@u6 'ϳ9`0OlGC<2`?~]"8???, 4ƶ+ `` qo ?~- k+ x|<C`x@ypq@z?> 3<a'`A+@g <<?x)@@2p;8!h0`-A<!, CCx|<=p `x<ù,tu `>@ *<al||/o/`&1 " "2pp( @<b>??~x?(@2v<<";9܈~-M=0,!K x|<9<p`x6ù,puÉ>@2<ap|| p 7g''1+@<x]>@@@A> |x ~>>?: 088c~?-p@j$P@03DUw 0@`s'FLICKERS.31 !<82# 0?91  AH ``, ??!|<> `>!?~80`ARaa##@?0@0?<<?x*@ O $N@>@O7`)???|p{=o<~`O$?~??`f1 " "c3OhDD` @< ?00,@0?!@>?~x&@@OAJ&[!*???aC`p0 *{=| &G}>`>!?~???`簧bu?Ak%% @<<?߀?*G2@@@@A@ 0a???( @@p@@0x?4M$P@03DUw 0@`s'FLICKERS.32 "F+L`0 ` `08c; @`| GG~` `8`0  `=xc;~wlp`@|><  %>? ?~p!?`p88x? ? x??? `px8  px<  >~~ 00 03w2CTewFLICKERS.101 * ? p`0??????????~~?6Ϝ<>x>x<8888``x@ ?#<` )|~  2?? ????<88p`???? ?+x||||x ~~>> <| 8800888< |<pG~|p`xh???q??? `@86  31a????????      >?  1 ? p`0????8? ππxx~~>>< |x( ) 53w2CTewFLICKERS.102 -???? ?>~?? >>~>????|ć< <<  ????&~~?  (?@?@||??? @???$G|?|xx?~> ~<>~ ?? ' @`p,`0`2Ap8` ` < ->><8<`<|||???>~@?p8?<???>><<< 888xppppp8`8`0`0`@@|~>?|~>?|~  |~?? ????????08||~??|?>?~>> ???'@pp* 3w2CTewFLICKERS.103 / p wcqpp00 ?#? >? ?~>< >*3`a~~?`p`???   ~>??????? 0?>~>?xx  ?? ?~>< @`3!8'????? 1>~? ?????    &   @@ 008p08x?>?!GG000??~~xx__/?????~|   ?@  ~~8<>~|~~? wcqx|???#a000000 #b000000 #c???000?000<000?00;;400;0;;;4440??0;;?0?;0;;;0??03111103 #d #E 98 13 #W 00 00 10 01 1D 15 08 A:\AVS\*.*@ #W 00 00 30 01 1E 0A 08 A:\SCIPLOT\*.*@ #W 00 00 0A 0F 34 09 00 @ #W 00 00 0E 01 34 09 00 @ #M 00 02 00 FF C - RAMDISK -@ @ #M 00 00 00 FF A FLOPPY@ @ #M 00 01 00 FF B FLOPPY@ @ #T 00 07 02 FF PAPIERKORB@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #P 03 FF *.TTP@ @ #F 03 04 *.TOS@ @ (\ (   (  ( ( \ ( \ 9)\)9)]) 9*2]*xx>? ?  ? ??|8 ?*xx0xÀ>|<? ??>??? ~ ??w88? x? ~8| 8  0pp $x7?   8x|><?>>>  ' +L @ 008`` <|p   >? ~~?33燇@000>><?  @??       00``@ ? 3 qx|???~8 ?> )x~3?? ??????! 003w2CTewFLICKERS.105 -  ! ??~8??`pp00 ?<88?|~>@`p< *{889 9???>8| ? ? 0?`@@ ? "' p8???~> ?|~>@Aacsp   ????? ? `p`x8008?@?pppxxxxx8   `@ 083?>?=?  ?~8?  ?? | LJ4 ?  <> ~>???? p8pq??????* ????) ???3w2CTewFLICKERS.106 1?>  000    ÀG??? ߀< 0xpp80p 0? ?p??p`~|||<<<<  XR??  @@@0 *'l~????;@??? <??xpp  00pp~>><|<p~`p0 8 > U??    ? ? x???π? `p` p~>   UM, 0&%?? ??*߀<xpp 00p p~~|<?jL3w2CTewFLICKERS.107 5l"   G`q1??   ߀ ? ?߀??΀? ????    ?p?>?? ???? "  @  > N  ~  A@@ 0  xp8?$ ????  @ ??? #   @  AN wCp ?c`0p??| ߀?8΀ ? 880` p>  = K???<`?  xp8* ߀???߀  U I!,:#`0]L 00K-7 |J Ly6iZ=uBKjYSTV RY5#jGQ LqT8) !Pnqt$Ry9QJ ~ʓCč6ok%fc#Vr@DH`w̋88WŚe6y/`v  | URMPOk$ n`x 0||g1~!?`` #@H@KCp` `8`0  =!`;wl{@_ @`x?x0|>}|`KK~ x K+## ?`8!  3{0`? ???2$P@03DUw 0@`s'FLICKERS.33 U& ?`0 2.?=&p <x |<8  ^@ 8xx$(08X pp8'8`?0 }?`0̖~8  >=A` | ?<8  B_v}~(x6Yp8pp88?#|?`0 t? p 0$>M؟mAg? |??<8 , ^_Gx=8 p8pp8<4   ~? xp< ?0$P@03DUw 0@`s'FLICKERS.34 U& ?? t 0|8 $ <8 ` 8x<$18X pp88? |0x?` HR;  / `@>7 ?x?8b}=俏|04[`;qpp8 >8x?>pO< 0x?#́|80'8>?V??x?8=|h8`:?g?K6sq8 <>@`8.`  v 00``8<? `@0-?0 X*$P@03DUw 0@`s'FLICKERS.35 W# ~<x? >Z~y n `??@|?? 0 ~H[ h~9? 8O0œ:I``?? 88  |? ?+x 0x| ~? _>{`?? 88 |?7<8p?>gg80x|p(?8?????8@0|xp 1$P@03DUw 0@`s'FLICKERS.36 +U#> ?~ ?? g@w  @ p8><{   0`5 P@?  ? `RF00?0px> ?x п@``p0`s 0773p81<^ 1g'%|P0#^ ? `<~?  GO /w' p81<^]p  1g 80 ?p0@ ` `!000> ?x~~ 0 >@ @#$P@03DUw 0@`s'FLICKERS.37 DM-n? <  v #"0p@"px< p8l|t8 0`? V$&c?vmljeD&< p0 0x"px~Bf  B~8 0cπ<p`8@??YiMB000x??pp`?/x!\0$l|t8 0c0h׀܀7X@ p>xC?c?1000y | !@$P@03DUw 0@`s'FLICKERS.38 EE6 ~x<   3}` ? |>?, `p p?) ? -YXYIM-!`~llFǨøc@x @`a`@,?>{, [AWFCQJç8w%0p ?!Jߜ ` ?``?@)|>! >>?(e~A p p!00`p ?& a```%X p p??'( 8p  )`|??01@O6 H`?>0  B8?DƀFg%Fxz ~ m h@b@b@f`fpf g.33"r"rss-@NA~}6 yը^G?>1 0008A=<?*ggg# .3?3?01O |~1x 97s g 0p?!۠ @dG!I`??gg@?!& 0p 3~@Q >5? {  ~ @(O # 9`0P8p*$P@03DUw 0@`s'FLICKERS.42 VA$n `33B hH@88 !   P0 0 31s7o > `08#xxx9yqa#pp||~ޠTQIM"C" 58.?į @@@ 08f33O?>?<| F3 ~>  z@@p@xX &$P@03DUw 0@`s'FLICKERS.43 P8* >>?~ z?~(8 ?O202##G@ p`.cFL\XIIA) g? }>$G  Ȅ@?'UwESo@J@Ġ`,>?? x?<>?$??>x~?+E %?pxx2 `@| >|xx<    G 0p$P@03DUw 0@`s'FLICKERS.44 KM2& 9~<>?|!s8,p  p@8x{x06 Ho/ / O >p @<??=<~4~$,| 4td$$Y x sA @8x{y0fr0p-LF ><<8&a!:?~???|($$x x p8  8x{yz8Y i i}]]@>??P?= <6@|<|& `?s? ~??$ @8<x$P@03DUw 0@`s'FLICKERS.45 sKl9#" =~?0& _<08??- 4  +|>0" ? >3;?<>-G"?$ ?x 98;??+040  +|>< 9??V8 ƈ% ?I ??????LJ 08??'66  p+b=o??>O#?~>;>>#<~G "@`@@`@/   ?33 0|R|O+4?R$P@03DUw 0@`s'FLICKERS.46 ]P4 noA_-@,l! |#  v~( 0? &?'#% 6  `XX)1b(@(`# qp ~'cw+! '$ ? #!p>#7oo_&0|)8<|| 8kxp ~#8d!3???Z*% ?6 /}7? 7p7|w7( @ p- pp00|@????`(<~xJ$P@03DUw 0@`s'FLICKERS.47 Z_ sSrzp8 ? d lp? 8p xX p  !.#3:>en8 cd ?ef?p?=pq 4؄>b`?OFxpp FO@cNpf;0 ?po$/6`pJ +(^>9g>0 ?zB8| P`~}n11px̼f;c | x Ly?? o'n p``@$P@03DUw 0@`s'FLICKERS.49 Ed ??>8@{@^ ? \   px>0~x0<" @kd4 z[ <  8 65p> y< ?=``  @@m$u7 p \  ` lx   0p?8{> 0`"  0? t 100   0 0$P@03DUw 0@`s'FLICKERS.50 8_ @? p$z! #>?1`v<8x8  AsG?   )A _ c<?PP 8x0? @ Ѐ@pP ~@@  3?@|?;9z!@@??P@P @<8x0?=> ~ Ap<~ @0 <.?????  ?``p0 `$P@03DUw 0@`s'FLICKERS.51 +_ " >}  7< (| cx<?0<?q:#{}| 8p`  ?? }O'Ac! 0.9hL, y~??0<?'.&w3G!89w<d`"8??? 4ƶ><8`$P@03DUw 0@`s'FLICKERS.52 !b> `` qo ?~ k+ x|< >? <<?x@@2p;8!h0`A<!, CCx|<p 7wSX8Q< <>??~x?@2v<<";9܈~M=0,!K x|<<p}?? ??  0<@@@A> |x ~>>? 088  ?!$P@03DUw 0@`s'FLICKERS.53 !_% 0?9  AH `` ??  ;??? 0?<<?x@ O $N@>@O7`???|p !=׌7DwDSF#??  0?!@>?~x@@OAJ&[!???aC`p0  ?? 9??? >@@@@A@ 0  ~ $P@03DUw 0@`s'FLICKERS.54 "V.Z`0 ` `08c; @`v {|~<( @ `0  `=xc;~wlp`@`x LI #0<'//?' 0LDF `0  =!`;wl{@_ @`x?~?????0    3{0`? ?}}}==x" # $P@03DUw 0@`s'FLICKERS.55 U+ ?`0 2.?=&p <x8G ?X` ``AH38`?0 }?`0̖~8  >=A`8 ?/0 i8!!08?#|?`0 t? p 0$>M؟mAg?8^|>? a _   ~? xp   |fxxx! ($P@03DUw 0@`s'FLICKERS.56 U& ?? t 0|8 $z?8G] `H@ 8? |0x?` HR;  / `@>7x ????>9 y̎)"  `@@HHhh8x?>pO< 0x?#́|80'8>?Vz????>>?>/Ϣ߂`h2`  v 00``8<? `@0 <??  1?p $P@03DUw 0@`s'FLICKERS.57 W$H ~<x?>Z~y n `??@h luvz~|?q`  ` 3 ~H[ h~9? 8O0œ:I``?? 88d C{C? ` dS$hh $ *~? _>{`?? 88`}~~~~ P$` O?8?????8@0|xy @xA `!$P@03DUw 0@`s'FLICKERS.58 +Uo'0 ?~??g@w  @6@00???͏#@h  0  ?`RF00?0px>?x п@``p0`s 0773.@c13&6>?? ˿-gY,Y,-M4 <~? GO/w'' 00??  64 `!000> ?x~~ 01 @  <Ͽ0$P@03DUw 0@`s'FLICKERS.59 DMG6? '<  v # >/? 0p@ " 〧X``~=? V$&c?vmljeD&<   p0 @" cg$Z XLXlZ|~=??%YiMB000x??-?/?? pp`@``~I p>xC?&c?1000y -P@p~~8  @<8888p?p?8, x?4 $P@03DUw 0@`s'FLICKERS.60 EE/> 8uz8~x<   0^ 3}` ? ? -YXYIM- @@<0 !`~llFǨøc@x#_`? @`a`@ <????8}~88Jߜ ` Z?߇^_{KCG? ?``?@  ? @x  a``` Zp L܀pX p p??' xpp $P@03DUw 0@`s'FLICKERS.61 EE<8% ~<k7; ~ 1?@0X\0 w~?  , c@@D~8 <0   $,lddF,$6c@?_ [ | O䙤DHș ( ?h@@E~8o  8 ???7cb ?_ @_CG ??ll?@$@< '@;8 dls{ppp? pVHDF ~o?00 >8(0$P@03DUw 0@`s'FLICKERS.62 ?FV3=0 m3acA">?xPP@ ?" 1#10) &@7? =BX |1>|?_B|p@ =C"@J]"cbgfc#3}<=?64 1 1 303833$_99# @@`` 8? =~<cC#>|8 |@DPP `?333$&?1 0cc?>>>N( 7<#| >}}$??#@@`x$P@03DUw 0@`s'FLICKERS.63 3Qy( B ??G0.  @8!x  `cca ` 0" p~?sba <D0 e  @p8|0`@/8313;;~D  aj` p2 s? ?yp0 0/:*@p8|8@,?= xx   f`igw8|'  ! Fp`|!? 0~dx|> ?` ??~2??$P@03DUw 0@`s'FLICKERS.64 &V# '"8?| ~q8 ^ \0@ >@xo  `33  hH88/ ??|t`v8% 1>C|?`((hm    P0 0 31s7o `08#xxx9yqa#pp| 58.?į @@) |'#??|~?w ~pqFX \0??``(hX/p08f33O?F3 ~??p@8x<`@yr@ Bxd={&`W'~p# ~<|x0 1H>?9NAp_@5@~8x< @ r~|;<|#aWo~;8p ~ 0|?V< K x?/A@@@0P4)`@LC8x~| |<<$ @08|% 8|x"`$P@03DUw 0@`s'FLICKERS.66 K4? ><xp132aAbx7p 8p#x@`0 `p8C p|>~ !@> b`0`@8?> ><xp  ٍ   8#8Gk|0`p8& p|>~?8:q@>8ހ\Yclb&``?@`~|`:?><9 G><xp)#yx~ 0~@> ޟ`~|?~@g  ^ bx<00,%+( >?&@$P@03DUw 0@`s'FLICKERS.67 K,?# { K5 <" @x p|>??~xÀ0 5 ` @?oO -?> [A46 O> p|>z??kUb"b>~`q1@-8><p Cu   O?>{> xp1z??a3*a%..`?~~}?_ππo\  5 <@@ J">@p0|~8$P@03DUw 0@`s'FLICKERS.68 P" p>?<e 0``>8? ?|tx|m  ~ ?p>? o'88?@1  ?? 8 ~ ?9>?<لe 0`@@ `>?~@`x<8?xC2{u x?Keu   ~!036\`d`?0s{|~~?<&$P@03DUw 0@`s'FLICKERS.69 S&~??  ϓnj888 @0~`` ?~a@@8p`^/?Dp8< ?!< 8 A/PxDLNL#x @<@~o ?~8 awn;8p`0@6?@s8<pp8?! p?@p1#oO?? `X<~o?ao|??~>8};@@8p`'?,|s8< p ``@<0H?><<8p)@00<.$P@03DUw 0@`s'FLICKERS.70 S& ? ~p.~<0a``?`L@>ta@  ?p8<  ????89x * +N#   0 ?@N8a  >? `:4ߓ# \'0(B8.` '<`p?????~p~`x;Î0a`` >>? C;@'` O` 8.z `p._c0x@??p  0?~|`, ?@`||~ +$P@03DUw 0@`s'FLICKERS.71 *D4(P7  ^?@@K` ?_?- <>( x??@'x %0aS7|bXG x8 f0(xg!?8G1A$x~|!@`߀?@` 0~?$(@2xd0| #x ?G!?_"x8~x8$0`@  ??0??or 60@`?H' &@@` @6$P@03DUw 0@`s'FLICKERS.72 @)N- >x48  O@> 8@  ?>>??? @ FD?@ C| #>?H81 `v<: 8x 0 z>x30p`0!x>OGa`3g >? `h?\ ]HFc1 8O17@?~> D ? Ā@pP~@88x0@ @)?x>x3@ ?@>?   ?????\??\߾Z;D6@?@@ ?=<:8x0>~-40p`  ~o- `$  4Nx8??<d?A ``p0 `$P@03DUw 0@`s'FLICKERS.73 cxZ`?]qj@=A##3!"p@!!C @`?p0O0<??#{}|F8pq:`F  p`?:z 6$ p ebgJpzv|ChD6ax:" @` `?p0 JO0<?y~??D9w><8`Z$P@03DUw 0@`s'FLICKERS.74 knk`  @x @A##  PG @@`c`En *O.|Y*m - ЭЭм// ??<JNA N/<NA"/0<NBNu#UzNA/9UzNuNVBBJlDRBJ lD RB0. -@0.2. An=@ .gDN^NuNVH?BCB..,. f#U~ <`hlDRCJlDRCn8fzB`0l :HGH`xe`Jge`|fD#U~ D`#U~ JLN^NuNVH# `ByPB GJPf Ю`|09P@HЮ  ep`` Ю2yP "RyP GJPl n"G00D@|Hހ` n"G00R@Hހ`pJLN^NuNVH.J /<J /<J /<J/<J/<IN&x>N=3BW/<?<GN=\.J /<a@XaNB&.f/<N>X.fahJ@g63F.faBW/<g?<=N=\3Jym\./</</<N@$ 3BG`0GJ0RG| m3^./</<JNCPBG`$0G0/?N=3>N=#JyFf.G?<NAT>NDN"#/</<ZNP#.?<HN=Tмx#.?<HN=T# 9й# JmBya.JyFg.F?<N=TaN>P/<Y?9an\>@/<taX3>/<aX3>/<aX3JymJymJyla6`b.ta.a.t/<ۘaX./<ۘaX`B.0?<N=T.ވBgN@TBW?9NC^Ta:JEgJEmByF.ۘaW@3 |ۘ2y Sf0 |ۘ2y (Ef |ۘ2y (Qf#T#Yی# 9йм#ې#3ۖByۊ./9/9/<ۘaX <JFl~aBW?9NC^T0`>.G?<NAT`B.GZ?<NAT`..F?<NAT``||b@0@I0 PNJyFf `` |ۘ2y Df |ۘ2y (Lf |ۘ2y (Tg |ۘ2y (CfbByۖJyfL.ۘ/<ަaX.ަa`BW/<ަ?<=N=\3B##JymBy#.ۊ/<?9?<?N=P.d/< ?9?<?N=P.T/<}?9?<?N=P##>?<>N=T`.t/<ަa X.ަa$.J/<ަa X./<ަa X.ަaXBW/<ަ?<=N=\3Jym.ۊ/<?9?<?N=P.d/< ?9?<?N=P.T/<}?9?<?N=P#>?<>N=T.t/<ަa X.ަa D.J/<ަa X./<ަa X.ަa xBW/<ަ?<=N=\3Jym3# 9м}#/</9}NP# 9м}#.ۊ/<?9?<?N=P.d/< ?9?<?N=P./<}?9?<?N=P#>?<>N=T }f }g@aBW?9NC^T.Hf?<NAT>NDJyFf `BW/<ۘ?<=N=\3Jyl4a`BW?9NC^T.G?<NATJyFf `Ry yf##B,./9?9?<?N=P#ۄ>?<>N=T 9ۄf4aBW?9NC^T.F?<NATJyFf` 9ۄѹ`4a|BW?9NC^T.G&?<NATJyFf`./9aX# f4a$BW?9NC^T.F?<NATJyFfF`@ 9# 9й# 9ѹ, 9BW?9NC^TJyFgJyۖf 9yg 9Yg>/<a X3>/<a X3.ވ?</<a ~\33 3۔Jym4Jym,Jym$ yވmJy۔mJy m y  oa `, 9fg 9FfByF`& 9rg 9Rf 3F`a `p y @R@3F`>Jyۖf.a |BW?9NC^T.G?<NAT|g3'۔JyPf4a >BW?9NC^T.H?<NATJyFf```>ND yfBy`3 yۊfBy`309yg4a BW?9NC^T.H?<NATJyFf`>ۊ/9/9?<N= .d?<N=T.d/<߸N#X.N"Jyg&.N"./9?<N<>\` >/9/9?<N= B@3F3ۈBJ.T/9N$XJyg./9N$X33FJx.N$JyFg.߸?<N=T./9N$XJyg./9N$XJyFg2> N=J@g$>N=# 9ư&fByFJyFf> N=J@f 9ư9 fp 9ư9 g>N=# 9ư9 f> N=Jg>N=# 9ư&f 3F` 9ưag 9ư!Fg 9ư!ffLpyF3FJyFf4Jyf,3Ryۈ09ۈyPmB@3ۈH#J`` 9ưbfRJyg./9BgN<>\aRJyFg$JymByF>?<>N=Ta`BG`(0G"|I 0f0@R@3F`RG| mJygf09ۈyPl y`2yۈ./9N#RXRyۈJJg3F.߸/9JN#X`ByFJyg( y`2yۈ./9N#RXRyۈ`JyFg B@3H#J09PS@3ۈ`\B@3ۈH#J.T/9N$XJyg./9N$X3F.d/<߸N#X y'۔gtSy۔Jy۔n*Jyg./9BgN<>\aa``P`8JyۈmJyg( y`2yۈ./9N#RXSyۈ y`2yۈ./9N#RXSyۈJyۈlVp3F3Byۈ y'۔g8Sy۔Jy۔n*Jyg./9BgN<>\aa`JJg3F.߸/9JN#X`ByF`H y'۔gSy۔Jy۔n*Jyg./9BgN<>\aXa*``^JyJxf3FJx`"Jo.?<IN=TJyFgJym>?<>N=TN#Jyg./9BgN<>\>ND.0?<N=Ta>NDNBJLN^NuNV.J/</</<tN'4 >ND>/`0G \gSGJGl0GB(JLN^NuNV>/9/9?<N= N^NuNVH.af<>YG`0G .gRGFm.J;0HЮ/aXJLN^NuNVHBG.U/<?.?<?N=PgBW?.B?<BN=P`.H``(nmp`V0G RG``| gް| g` . f0G B. a. a3rJyrgfBypJLN^NuNVH09R@yrn`BG |Y2y ,g |Y2yJf0GBRyJGg&p`40G2yYRyRGn o.J@/.aXpJLN^NuNV09R@yro nBPp`8.?. /. <Y29HЁ/a =@3r0.N^NuNVH nJfp`HBE<B9ҶB=|BG` n0pH``` 9,ҶgJ9Ҷgnfp` .2F 2RF=|BE0E-H`J9Ҷg 9,Ҷgp`=|`dz/< /.NZP"n1pH|HЁ-@ nJlp`t`"p`l``| |b@0@IH PN0GҶRG.adGnJEgnmp`$ .2F 2RFJFfp` n0pJLN^NuNVa|.0?<N=TN^NuNVaB9Y.Y/<IaX.JA/<IaXBW?9NC^T.I?<NATN^NuNVH.aHЮ @(< g < g< f.axHЮ @B(`JLN^NuNV yf=|@=|`*BW/?9NBT>?9NDT.ވ/<ވ/<ވ/<ވ0.??9NE >?9NBT.JL0.Z??.?9ND<\>?9NBT.ވ/<ވ/<ވ/<ވ0.??9NE .J^0.x??.?9ND<\>?9NBT.ވ/<ވ/<ވ/<ވ0. ??9NE .Jg0.??.?9ND<\N^NuNVHBn-nBW/.?<=N=\>l =|`2./<??<?N=Pl =|` ng ng =|`0.Hd3F>? ./?<BN=P-yBBE`./<??<?N=Pl =|` ng =|`nJ.?f&0ng .ېN".BgBgaX`.BgBgaX` .>g .ېN"JEfF./N#X./<dN#X.ې/9N$X`BnBF`` N2F0("N4F2)Ag=| N2F0("N4F2)@"N4F3@ N2F"N4F1iRF|m.ی/9ېN%X80@H".Ȱn0.?.?/. /9ی/9ېN&-@ `=|`D0H.ې/9یN$XRE0H".mn n BP . T"n"=|JGm>?<>N=T0.JLN^NuNV>/. ?. ?.a"PN^NuNV>/. ?. ?.aPN^NuNVH*n =m=m=|0.@@@@Bn0n=@Bn0-n =@-m(-yې0-@=@=|0-|@|=@=|=|=|B.aJ@g.N%JL N^NuNVH*n =m=m=|p@@@@Bn0n=@Bn0-n =@-m(-yېp=@=@0-|@|@=@=|p=@=@B.aJ@g.N%JL N^NuNVH*n>-0|@l <-0|mB@`hUomnB@`ZJml0-D@U0-D@mBmJml0-D@m0-D@mBm|@o0|U|o 0|8mpJL N^NuNV09|At:u./<va|X.Jr/<ta:XN^NuNVHBG`$0G am0G zn 0G RG.aNGnJLN^Nu o0<BBBBBBBBBBBBBBBBS@fNu/<"?<&NN\Nu#p#N##.pNu/<#"?<&NN\Nu##NpNuHJzJyJxgSyJxLJzN/ o "oBBJ20jDAE#Jм TJAf&Nu40&0 \SAf&Nu o"o        Nu o"o Nu o"o0<""""""""""""""""S@fNu o"oH0<'4|(L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8L8H8Q6L8Nu#%BB?< NA/@ 9%BB9ቂ9ቂ9 k޲ajNA\NuH0 o "o$/o~0k:26C|@D@N"2222222222222222QU`|6C|@D@N"2222222222222222QS`L NuH",o LDNu o"oB@2<?gR@QNu$o 0/g>Jof4` oaH o"o/C BB0<@"&fXBS@f&/ Nu4$`0<Jof4` oaBZB`4DZ0<4QNuNV>?<Bg/./<Qa  >?<Bg/. /<Qa >?<Bg/./<Qa >?<Bg/./<Qa >?<Bg/./<Qa >?<Bg/./<Qa N^NuNVHJyQf0./</</<N@$ a 3Q> N=-@BG-|` .g80G8>A?W/9a \BW?W/9a \`40G8BBW?W/9a \>?W/9a \RG .-@|mxBG`\0мQ.?TW/9a \0 @"|QJ0g>A?TW/9a d\`BW?TW/9a P\RG|m>&/.NX?Bg/./<a  .?</9a Z\>&/.NX?Bg/./<a BWa .?< /9a :\. /<,aX.,?</9a \BWa.ئ/<ؤ/<آ/<ؠ/9N@>ئ?9ؤ?9آ?9ؠBgBgBgBgBgNA@>ئ?9ؤ?9آ?9ؠ?<Bg/9N?~BBgN@T>/9NAX3؜09؜|3؞y؜.?< /9a\>a .,?</9a\> ?< /9a>\09؜`@ n0`J nBP`@>?9؜/9a \a J@g a>a`<`>?9؜/9a\>ab``>؜/9a >X09جyyتg09جy3ت>aV``>?9؜/9a`\>؜UWa~a>a``j09؜yت|=@0. мV @  fz0. мV.R/<,NX.,?</9a\>ئ?9ؤ?9آ?9ؠ?<?</9N?~Jy؞fxa >`*>?9؜/9a\>aa>aa ``>?9؜/9aP\09؜|=@0.|A9HAg8aJ@f0.|A.?< /9a\a>a`F``U@|-b@0@Q PN./.NX.,/. adX>ئ?9ؤ?9آ?9ؠBgBgBgBg?<NA@BW?9؜/9ar\pJLN^NuNVHB?<N@T>/N=-@.j?<N=TB@3ت3ب./NX.az.U`/NX>/?<NN=\Jm&9g >aR<JFmZ>ON=Jl./NXBW/?<NN=\Jm> a<JFm>ON=Jl.?<N=T09ب|3جJyجlByجa.>a>/9aXBBgN@TJLN^NuNVH?>9بHǏJGgF|:9بG86G0S@ мV.0S@ мV/aXJ@gGJDlRFEo`JLN^NuNVH *n(n ` JfB@`HRRHgHHAo.BG` n n"n R n R RG| mp`B@JL0N^NuNVHBG`<| yبl60yت мV.?/9a\>A?/9a2\`$.Ud?/9a\BW?/9a \Jng.>ئ?9ؤ?9آ?9ؠBg?/9N?~RG| m\JLN^NuNVH ydبm.Q?< N=Tp`@ 9.؈fp`2*|؈09ب (@VRyب0.H./ a PXpJL0N^NuNVH/</9QNZPмM*#BG`*0 @"|M*B@00`b0мM* @2ҼM*"A"i J!Q `D0 @"|M* 0 мK2ҼM*"A#@ ``|g|g|g0мM* @0(1@0мM* @0(1@0мM* @0(1@0мM* @0(1@| f&0 @"|M*B@002ҼM*"ASiRG|0mBG`0мK @2ҼK"A"QJ 0мK @2ҼK"A"iJ!Q0мK @2ҼK"A"iJ!QRG| mrJLN^NuNVHBG`>?0. W/.a\RGnmJLN^NuNV0. Ю @1n N^NuNV0. Ю @1nN^NuNV0. Ю @-h n-P./.NXN^NuNV. n2. /0 NXN^NuNV0. Ю @-h n-P./.NXN^NuNV>Bg?9ئ?9ؤ?9آ?9ؠBg?. /.N>N^NuNVH>.BF`nl n2G RRGRFnm nBJLN^NuNVH.N>`0G \gSGJGl0GB(JLN^NuNVH.N>`0G \gSGJGl<SF`0F \gSFJFl|m|lB@`80Hм.0Hм/NX.?< /9a\pJLN^NuNVH.N>`SG0G \f>@?RWBg/</a 0. мV.R/NXHЎ/aX0Hм./NX>&?<'Bg//<a8 .?< /9a\JLN^NuNVHBG`*0G am0G zn 0G RG.NGn9H|JFm|n |8J0`f>N=|A@`y|:|\ 9:f: 9\g./NX`. /NX`./NX.NHЎ @ (\f.Uf/NX>&/NX?Bg//<a .?< /9aB\JngaJLN^NuNV./U/</<N? JnfN^NuNV09ج33 n0(n H29ج| "n3@ n0(n"n2)AHr-@09جH//.NP#ҸBҼ nBhJn g8 n> n?( n?( n?(?<?</.N?~N^NuNVHBy0. `(./</</<N? ./<?</.N?@ 09ưyo0BG`Jyo 9ҸѹҼSyRG| m3`4BG`"09yl 9ҸҼRyRG| m3`Jyo 9ҸѹҼSy3`h09yl 9ҸҼRy3`<./<?</.N?@ ./<?</.N?@ .U/< n?(n n?(l?9?9?9?9 n?( n?(N@f0.yg|0.yHr#Ҽ/9Ҹ/9ҼNP/09H3/9Ҹ0y/NZP/ n0(n"n2)AHr㠐#Ҽ3`"` |g|g̰|gа|-gvJygJ 9Ҽr"n3@ n> n?( n?( n?(?<?</.N?~JLN^NuNVHBG`> n H`(` 0G RG|m`0G"n RG` `|.g`R n Jf0GBJLN^NuNVHBGBF:`R|fJEf 0F.RF n 0pH`&~z0F.RF`0F2G RF` `| g`RG n J0pf0FBJLN^NuNVH.N>`SG0G \f0.мQ.0Hм/RNX.?< /9a@\JLN^NuNV>ئ?9ؤ?9آ?9ؠBg?< /9N?~N^Nu/xNAN^NuNV#3 R3T3V3X3Z3\3^3`>/NAN^NuNV#3 R>,NA n0 n0B@09N^NuNV#3 R3T3V3X3Z3\>*NAN^NuNV>ONA n0 n 0 n0 n0N^NuNV3R# >NNAN^NuNV>MNA n0 n 0 n0 n0B@09N^NuNV3R3 T3 V3X3Z3\3^3`>GNA n0 n0B@09N^NuNV#>6NA n 0 n0 n0 n0B@09N^NuNV3R# >4NAN^NuNV3R3 T3 V3X3Z3\3^3`3b>3NAN^NuNV#3 R>2NAN^NuNV30.|HмEn-@=|` nH2n2RRn nm.ߴN>B@09N^NuNV#ގ# ޒ#Rޖ#ޚ#ޞ#ޢ#ގߴ> aF3pN^NuNV>a*pN^NuNV3 3jBy33N=09N^NuNV3 3By33N=09N^NuNV3 3 3'By33N= n0 n0N^NuNV3 3zBy33N=N^NuNV#ض#ؾ .мZ#3dBy3  n 3N= n 0#ض#ؾ##݈غN^NuNV3{ByBy3N=N^NuNV3 ݈3 ݊Bn nH|2n2RRnJ@f33Sn33N=N^NuNV3eByBy3N=N^NuNV3 3 By33N=09N^NuNV3 3kBy33N= n 0 n0 n0 n009N^Nu Pppwwp[1][ | Not enough RAM to animate! | ][ SORRY ][1][ | File must be SEQ or DLT! | ][ Try Again ][1][ | File format error! | ][ SORRY ][1][ | Can't find that file! | ][ Try Again ][3][ | More file sections? | ][ No | Yes ][1][ DLT/SEQ Player by Tom Hudson|Funkeys: Speed Space: Pause| Help: New file Undo: Quit| F: Fwd/Rev Version 4 ][ OK ][1][ | Invalid/missing first frame! | ][ SORRY ][1][ | No frames in animation! | ][ SORRY ][1][ | Incorrect resolution! | ][ SORRY ]Copyright 1987 Tom HudsonDCBA@?>=<;bNNNN:bbbbbbbbbbbbb          [1][Bad Parameter string:| *.SEQ*.DL?\L_R_Click on *.SEQ or *.DL? for animations.PI?][ SORRY ]CAD-3D/CyberPaintAnimatorLoading...*.DL?RRRRRRRRSS,SSSzSSSSSSSSSSTTTT*T7TFTST`ToT|TTTTTTTTTUUU U*U6UCUOUVUY ''        ! "#$ %&' ()* ,-. /(&    & A   A          @ + @  @  / AAAB AC!AD""AE#AF$AG%AH"&AI'AJ(AK)AL"*AM+AN,AO-AP".@/0%1*.*4  ******, , *Z*, +0+0+0+0+0+0+0+0+0+0*, **, , , , , , , , , , , , , , , , , , **D*P12345678901234567890123456789012345678*.* Pathname:____________________________________________________________________________PPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPPBackReread_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXX_____________ ________.___XXXXXXXXXXXXFilename:___________________.___FFFFFFFFFFFDrive:OKCancel*.* *.*.vf  Z                                                                                                      :<\   (.: "NZ   `(     (*>&LD(6z*":\dP    $*            $,     0  , &     *   2 (    "$4\8 &    $      $ 0@          $*>   **                $     0f ANIMATE4.PRG (9/88) (c) 1988 by Tom Hudson Program & Documentation by Tom Hudson This is a Public Domain utility. ANIMATE4.PRG is the fourth generation animation display program for the CYBER family of products: CYBER STUDIO CYBER CONTROL CYBER PAINT CYBER VCR and CYBER SCULPT This program will display delta-file AND sequence animations, created either by CYBER PAINT in .DLT or .SEQ format, or CYBER STUDIO/CONTROL in .DLT format. Delta files (with initial .PI1 files and data files with a .DLT extender) take up more space on disk than sequence files (composed of only file file, which takes up about 30-40% less disk space than a comparable .PI1/.DLT combination). Sequence files take up the same amount of space in memory as delta files, however. This version of ANIMATE will also display all color-palette changes in .SEQ files created with CYBER PAINT 2.0, and no longer uses the double-buffering command of the previous animation programs. (The buffering is now automatic, and very fast.) To display .DLT files, click on the .DLT button in the custom file selector. Likewise, to display .SEQ files, click on the .SEQ button. Disk drives may be altered with the drive-letter buttons. Paths may be moved through with the "Back" and Reread" buttons. As with my previous animate programs, there are 2 operating 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. NOTE: You can only chain delta files -- sequence files are NOT chainable. MANUAL MODE The manual mode is invoked by simply double-clicking on the ANIMATE4.PRG icon. The program will display help information -- take some time to read it for the basic commands such as (F)orward, etc.) Click on OK, and you will be presented with my new file selector. Loading Delta Files: 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. Loading Sequence Files: Click on the .SEQ button, and the sequence files on the disk will be displayed. Select the sequence file you want to run (sequence files can only be monoscopic). The program will load it and begin running automatically. Press the F key to turn Ping-pong mode on or off. 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 ANIMATE4.PRG program must be installed via the "Install application" selection on the desktop. Install ANIMATE4.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 after the keyboard command section. 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. 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 or sequence file, may be upper or lower case. Example: A:\ANIMATIONS\ FILE -- Filename of animation delta file, in upper or lower case. Example: CARGO.DLT. If it is a sequence file, the example would be CARGO.SEQ. 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. For sequence files, use an N. 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 -- This parameter is no longer used in ANIMATE4.PRG, but should be included for compatibility with older programs. Simply include a B in this slot. 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. Use 9999 when you're creating a .RUN file that will be used to load one animation from a floppy disk and display it forever. Example batch files: b:\,cargo.dlt,n,f,b,8,9999 Runs the CARGO animation forward 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, forever. a:\,bounce.dlt,n,r,b,7,20 b:\,atari.dlt,y b:\,atarib.dlt,n,f,b,9,25 Runs the BOUNCE animation from drive A: 20 times in forward/reverse mode at speed 7, then runs the two-part ATARI animation (ATARI.DLT and ATARIB.DLT) from drive B: 25 times at speed 9 forward. When the ATARI animation is complete, operation resumes with BOUNCE again and continues until HELP or UNDO is pressed. a:\tutorial\,tesla.seq,n,f,b,9,9999 Runs the TESLA animation on the CYBER PAINT disk forward, at speed 9, forever (or as long as the hardware holds out, whichever comes first). ''x`` ?n<|a x||?^`p`  < ?> ?@ "C#"0XLB3+pB!`!`2 0``8 `xx??<\D8M`_ޮހMDO#?Y<``?? @???$?0@ ???@ @`0b`???E ?8?~<|Y || |?U<x``!8J3w73x~||xp0C@ ??R?^ ~?|?`$P@03DUw 0@`s'FLICKERS.75 {Uzxn  @@`c''x`Z^80 @ ??Uz8| p? ?> ?@ 3;XLB3L `!`2 0``8 `xS   0p&b 7 1Øp<c38xS6@`0 p@??T{~0:@o L\ LO#?~????L @`0?Vp0  C?? @ ??O 88cf| o  ?w ,?? ?8b@ <R ?< pI6 0   ??Y y>$P@03DUw 0@`s'FLICKERS.76 3??d` |~>W0~  |V `@@???? T ~<? c1V?#! ~ U 8???   @K   8a?Q ߀߀_ހ߀ X8|b ????? $P@03DUw 0@`s'FLICKERS.77 j! p=v:;9< p"0=_`,- 8p"BCp8888<8<| 82   "< '#' .??? ??? '? p0< ~@`80p3?F  g ?U'V=q|  px~?@??>7? ????????? ? `