DOS pCNJg @ hpNup`dos.libraryJD_[[[[[KGGGGGŀՀ{w͉OS[go; ++++;;;;;;;?#VVVVVV)=bbbbZZZr333/+''##{zdl{ntf> 8:11____b|%bbbfjmq /AAJf_WJW1imm ͜Ʋ¹CE&k 8+ײWSk{`Θ BO dm[  $7T]9 Ǯǥ%̜˩0Tr`9  * ൚.!@<׭*!ȯ۽7se\C(Svq]_^UcCƿ,<& %# 退!4߸-!D[kv_[_M4 ӣ& O8!#$$(69B4ž $" DRL@7)6P^NZ^\=;JJBNL>"$"@_ZPI>00 Ĺ.]vjcE)() ' Ķǽ ɱ02,8MV[K:)."$)  VVRRRRRRRR ")$ Ե *"'5p#::*  3. ͵źʵ.=DLNI.(/%ٯ€@EE892-(=NO8=SY@%'1O`dYHJ;  /(&( -AYL/» &4OY[[TF% ̽DO>( ν$$3<5$&7DHHDA.+00+).$$3  # &'&!"'!,DG@;.) 11 #zG.6+! &?VOpmmmjjjjjjjjjjj""'!)19EB1)'&&346/&   ̿"%2724*݀ 7EOJRc[WQL?EYaVGJTE5-08@GO\kaRYYR@0-# #2*%37:83/*#(58:8-γ==::::::::::::::==  -+00)   # &#-9=;EHC;0+))!!$( N##ʽ·ͷA>D?6# '**)$&&$",7:=<92)&'44"  )4:J`nkhbO@5)$   ,25;:5-**(%  2/+--05;8-" ʿ .1;DID8  "*(-031&# 6GJJIIG>+¼ iꗵϾ(((+++...11144777##/22971+&)28?@CBLY`]PC7$  ..)#&5BEB:1&   # 77777:::::::===@@@@566-'     ⮮Ÿ  !"16:AEJD960"!  "1<=  " '(! ¼Ź¿  S).)142.,+%"),(  &## ,>JNMKG?2,,)# " "*0*$   û    1=FJSOMOOLGDF@1'  !(('+++'$     *;HHEA5*$!'*(  "),%    8%#+032) #0@NVWXSKC:/((#"    &.3-&  '    !$+'$#$$''$&$! #$ $,.'',,,(*($!       %),062/(   "$$     H"&,30.0.0,%  &      $%!(('%!              %*./' &)e    $&'""&&',+&   #$$$$'+)            !      "&"   "J #%'%            "&"!            #%%$"  %&!v           ""#         /           *      !& % ('6A8?QL3,AS !&###4 .5 ( &K\[J%#ATP.4PS@ȳ(2)5 *) $@Q\R)8XV:)KTF.ܼ  +0"', 1+7Qj]2 5Y\C$>OL9Ѳ ˰  '#%5. 5.*  .Qp`4 1S,6SXE11ENE, ޺1;/ $;2#*( % #WqZ3*LRI>" #9GH)龱 ȩ˹ -<=8-'&3>&%@( " '[iT;.+?GKE)/EB̿ شػ 6KXK#"GM)+2!   8XUFA2'3DRK( (9*ǿ ᷜǰ(1SeT.!@<+)$3<# %CQOTQ3.L\J+ Ģе)%-OZO=/%'6C+>0  (83$#*$ +$ /?& ºþ#6;1  *;H<( #'(&=*@  .JWUN?) *75 3:0 %68-)-) 1"   #8JOJ;)'"..'%*+!&*#!+1#  #$     5JK?5, ļ $!".5-"&',&   (">JA541  Ľ(43(#'K(!$ "   !  " .DD:99. Ļ$14,%))  "!     ! 4<:9@<+ ¸  +53.00$ $+     %-/4>C:& ο +2258,  0(       #,6==4( Ͼo?+W%-8B>&&.    #/6894$ҽ&*! +?G<%""%.     " #-27:4 õ.1" $;?6+% 15    %# &,381ν02%,12522-   #  !-2+Ǿ(+%-:2!     "$ #&!&3,        !(#  "!        %#  $!      8  "$           $#           "                Hdcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! eĹ                                                                ͸                           !         "     # $cgg𘘷gggggggBg_XPb'阘gg;gggPg[gg!%lԴg_gBggg?ggggg ggggg?'gg͘͘!ggggBgggg/gg ☘gg!gg/gg[ggggggŘgggX!Xg!g3/0Xgggggg[ggg_Ř ɘFggPggbgg;_gF;30g3f)g)fggBŘ?ggŘg ?g gPј7I?阘)//_B7?M3٘;)  њ ! 03X? 7gggggggXXPXgg37尘g)ggggggggggggggggI_0F[gggggggg&<gggF/Xߚ 7UggggggggggggggMPIX'ɾ0/;[gggggggggggg[P?!׾ ! !ggXgggggggggXXM?ͨѳ '!!IFggggggggbgg?Mg;0☡!7g 0F''[gggMggf?gX_/ зј阳?XBU[bggg_[M0U)?3)'ͥū׺ͷųз')B377bbMgUUPPF '7 ߷ٷט'))7')?B00'' 'RUN׺ͺ !'0//0/)7?3?B7'')/'ͷ  '''0////'/0)'!  '/33000/)')0))!  !))!!!!  !)))''')/))!     (YM{   !!        !!           )D                !$!!(!ޫ1Fg!KF 2Fκ21؀g!*$;Ő+;F2(ص32F(2 (YK (ι?((?v;G+;:U(2aaU( 2KxFF(F!;2e( yKeK]Y xߺFx@U1!e3e!eaFse@mΐ!evŀ耐耈Px">]w1>F+U:xŀgFUaعxx!萢!!^ߐw^SewgK@UF12 ٺK>2]?KU;pK1!^ s+>"@>!xsxU^eS@:@psad1 g!Fg(]!>U1@e@1ƺ((@@ހU򀀐;e@Fހ2􀖀xـvKFƀX1FUF(ΖFw gx?耸뀉߀ŀgU^wͧހ2gwP1x!퀐eU]vŇ@FFw!߀e2,YN7FFπU2UK^x^ggU'^g؀߹2peK@F2e!@;S.4!U͢Ũ@ι.2@ιS^2;F(F F!(;S2FFUߨ!F@23U2UK1Fg U]@@S2;+!S!@;KSY4(Kg^ K^;$ؖ(2>S;3dU UUFl(Fp3;+xX'3x>C132;(^xge:(?ِ Y2@FX^;p$UU2߹ψ؀ޙū;(ޢ3 (;-&[ عa!F@P4@;FP;^ 141U?!p1(@ Q+2 2 .( ͫ!2! 2ܖ(޺ص.(F( ! ŹŹ (d?;l"KS(^Q;!  !2(2 $!(;!!'!̫յ ;$(ظͯŰޛحاع.rصܸεΨ̵ҹ޹߹̹ 2;;2!((. !?;2;12U;1$>(2!(((2.  ($!( ' 1"422.(( ".( $4($.2+$;.22K;;K2;G;KF2@(2>!.(2!2!!+43(K22F.;F(KF4UF;U2GK;H;3F2;F.@;(?11;(>;1F32F1;G2GF;H4>Q;KK;QU>U;@X>UG.F2(@(/{Z(242(>"(;!:;(?22F2?G2@F1F2(."2( !!( 2$((+!! (! 2  ! (!  ضܸصŭūιܸͺŖιހ߹ṵޙŖ諢߹ܹعΖعܹ߯ŵΣŭ0((Ŷ̫2(!4! (!2"2 (2;.(;2@K..!.! (>"(;U(?(2(1;+!!+ 3(1. ;;@e;!!! (($;2(@4(4(F23! !((G($ 2$;!  !(U;($"!  !.2!2;1((!+11R?(    '$" 2!(   !  !"(    9D $ !ҳG8C8Wͨ2*QTۨKWW!WWWU䨨PW9 EW ۳WWN WWWIWLPGWW*쨩7>WWVǨEW UWWVVVQUW#ǿ*.FGWP!Ͳ" WWE %-0WWVV娨3. WJ2?WCr3/WWVVż¨ WW(ڬ  '/.#  2@7+' ,;336ڽ("(5غ:B- \P8D9/Vk<U0.;R D3zR<8a8.4"+),((DCؠ=8?wx4/(ַ )J>  _jqÜmLS.8,]P5LOZ8 ,>Pa4<8 'x 0-]־+: L97O 99 9:0D0(6@_,/K\2J09e(#&@ w$ )]ėSr19($Fy$ 'Ȁm`:ˀ?x$tG<| U@'C'B\(C.J?T:3t#\+0 OHȯjZ@ȿ?8 J, K!͟x"$+U%zn( xT2b/0x E,<_05`F8%/H@308g-B-D&<%73@/L*),Qj z$L*~&8_bߡp@2-X'H+lGL/`KGB;p:+'GTW`=.,UX JE $=9N0(%v#^00K ?P04"2`(*3?`ȀGgȀsp4/D'  w.7,/x]q:ڬ >,Ji66R7e(!y:#8 U!*O@m?Fۭ=/+#"  /?_$?hҷ836-4+CS0;Q3%2(T(;GP;:1+8C27H :$̾N`A=k8?)JNEGt;6Ky@;a02G0k.3m%(c!'0$4RD%/WE_FM92('X3U DJ !F N'IJ)QT%ЙIH3$fL؀$'%Q$15"90, N$.( g_W|O笀UH,5HQ%0).'=UDF$ȄCd4!3 +D[$Թ)IT)L #'3I4 =>BOH𤡴XH-.*$*X6뽮"Ij< 57,  07F@縛>.=P 0LR4/ꌓSd*1F ;,*?#FR M #JF%CY>3C͟#38;:,-' * &;F3 &Y]7紷/60JL- /NFFQ82)(*,$.6 /FGX[8ͻF`H+$ $ERE@8 =N2 )#)5,)64A142.   &DLS@ '0AUK2$(8B3;=(!  #'&*1"15DN; 5   !$ 4&#FE=B=־=+Zs@m-IofkG5kcSʗޖxG+,, Fͽś퓍@>@Λ/; fIkE=VflkwiO;7|vXBfGWI/v_9ma&誺:ƅﷲєܿڬ 鬒տ[#ͷL{-fiwb}_KemWypsssgA2zzoQ͟&3缨Ǚ!Ħ꼯ʓ)CN+㯊綵ǒǜF9~|QCbn=_wypcq{oXtM#QT'F,'εɹ֌ӧ#AæŽ˛ǜ4G -dGIcvl^7`}|wuiygUVU) B9!,"˷޵ϑߚר - ѿ Ǯޭݓ'ƹ,c;@<9/WNNw|uE=n0ѽÕ+A, ə-A<->O*PpUnzQ$lgKcg`fO$:F%1S+MY,ǹ˦ӧø ޿ѼGG7ae>)5`glt[II+A[Oxgelp7DQcva\xY#*ëD食͙̯Ne  *C@ "# ٫&.A#-$%FN$->g}tU/ UsCCgd8DOG?98'>Q0:0'.F`L'&BG  /cS4Y6DfZS`H/33a]!!78G_cP'.6,ø㯐ѯϻ  <0 7N];%>L75.+Gbsu`/ (-&&% '4!)!  # .999/7'&#OKK?<.'66,+#=Ez½Ǡۼپ !+MO7'$%=SgupcT%7NX[OOLW`D)5A]`K2#=TO'86, 'ݿ ) @I9ǩ̻ܵ .C5#:\Q/,CD7DgmGHkxxZ<;MsxZQFA=A8&-&2'14# Ʈʫռ˿  !'33η˶Ѻͽڿ %':?+,?ccPSqxiS/AvzeF3>TXL?YaXJDLN8#'-7<7&λξ>Hñ!& ,8 +67,/; &6+  'F15#/>YscI/%,C\aO1 .;:FQL4*+Ͻȼ÷پû /&! 0QG,)-,.7+ 8@0%1#!!0IY][O>&4Wmi\\M6$+Pcel_9 &3CKWOLOCCC,%)#λǸл  ,9C3 '.' !6<6 +@EC3    !  ' #-5/ #/>G@3&4, ӷƿɹ-1'@8#.88A_aL7'$0@OVQQZ^U@38!2'#,"@7Ϩ      $'#/80%(9RODT[XQ@<@CA71.8S]O4'0@LKEGA'#''+# ѿǼӱŷĸռ  ,0# ,2;@4%5;?>3+*03'(-3>GF3! (6:0ALÿˬ̾ (' !#   %%   .*/6'#/1)*&!#+,$)<;!)215750+  # óϹûѾ 27-'%#!#&'+2;>;7./98;?C@<;835<;:C@6:O`f]O@1+##.*%!     $#    !%(34##/46CSVBX2G5.9@<<2!'0.(*),-#!&Ͽ˿  '-//(%$%'' './07;AIIGB709HQJ?;..8995-          #& )+"'6;89:86681.00., '00.*'/7@<&  Ⱦ  #-0)&'"&&%%$'/7:/#'087,)4;@II<+C$            !,($'++'#!&+69316;:5+'-.(#!,793' ƾ   !$"$''$#)13-!#''&+,.43)$'*-11330$# #,+ DfpI9  !## +./,! #)02,'"$$!!  $%$"))#%+++)&#)-)$')"     %'#        !'&%)/1)    EԿ $,33+$!'.43)      !$ !        ! $+) "       !# "##%.-#"F4KT+    !                    G^ZYL                     H:0 ƾ#<8-*1:E@(*gH8̸Jk߀3 'G<('7.$'/8RiHаȚG8W|h8?HPΨ縀- 5WH )A*ʺĨ/ 2_^6-FI::$Ԡ$;IFNu(/ +Ǩ :L@8CWSF@@8ּ̿+.",;C=DD-ԬŸ+" ;$S@O`& Ȩ=TXU[hc<$?V<,-ƻEvr@3Xgd:B<Š+6CA54QfYB4%¿3_d"/D9OT=;;( ܸ¯">E:*'-Kc580   λ 1W\$'}y@.C8#:J&ƻ)0*2?;7CM;-5:( е  '#  ּ 7wvLE[^]ohB&"Ƚ &=MOOXil^H@54+±!32*" '1(3g@mZLREGec6˪ ''.2()D9   0CP KZ,%$˸ !21*++3EA!ʿ %>G<#"  "0 #%;B, !#L񥦺 />6&7SH  !#&:3  7<,   (&#'*      # "2-  .33+!"    4C::ID1/A= %&  #$%* ') $(  #4$Mfb}  ,1("      ),   !  # *1" *  "3,+% #     ,$ 5+ /0 ȿ11!,A6! 31'/8;+  Nn!_  %!!0.)"     $(+  )(!$084&%'!    " $' !     !       &+!(      O˯                                Pr0     ( G5!d/Zb#h0Rl|o1Ш0Pn|u9ڶ*Ogv|xA濥!Eav~D鿠$Jix|NŦ?SmvuLή Q! e=TktrIȰ;VkvxS$غ 2Uju{S˳0IbjpUѸ,G_goPҵ+E\hmX'ؼ+C\hoa&Խ(=R^bU#ٿ"=Udh](Ĭ8NYd^0 ʮ#@Vbh_09N]ea2 ӹ7L\h_4λ0CT_[7Ѻ5FVZ\5վ+>OX]5ӽ.AMWX8® (:IUY>ȳ/>MSX=ȳ )=IMT=ͼ4BLRD0>HQG ö"2>KPIõ/8CIA*AAʾ$7>EB!ŷ*1:?=ʾ$3>BD!".7C? R' $,4;=!Ľ )5==! *389" %/28! #+27!ÿ(12%079% &,/0" #.02% %+-" $&*,.# $*#"%,% $''#(& "%" ,%& && $ !')  $&  "    $    S_     !                                   Tu                ROKP<Ơ@lO/(nmN)™A+BX0ҘCWeH!'$,;NUgv@6*ű%H!.^jaJ(Ī B`stt]: .>\^ftuA#"'Pptjgf]OU? 8VNi~|~m@C_tZ9(Ʃ¨)1CUȊ/%1%"C\nfaW8VlN;?3 ʯ)AN3:;N\SUA86CB/ į2Y{^HRBSP"(CVYOavX̩ĵ4`}tKGP2$3A+)006Ǯţ! **)X}{v{pWOH  $3B;6:,'?U]F./EgbC41! (0."  OfY;! 8NenY/ )" ޵Ƶ%)!6K]XW__dWF. $NmqoV%P^(Y?IK:) ׷չ/$BXȑظؿ%*Ҫ+(9?3Y|I*?"!RuxR;Y/#ҵ)' $ۖ Ėܩ ܵA^Y%;UaUGO9".6BK,BaF$ NfX $;3Ģ+" $ ۢ//#3H6EgCE8 ֠鿾 9N1HP:% ( ԍ$28,'FE:(*1! ū)@?/벮 <\]M0 %%沨.KN89R`QA, 2PUC,峣.SbO8ȱ!>QM;',>JI<'ۮBUQE,ƚ4UlgXG,W9P #*?Ua^NA3 ǰ,BPZO8!%ʸ$)>JS\RK<% ̸3AK_t}uYA"ű 1N]YOHEGP?! ŷ4H]us]aifQ>0! ž4+ 2FVfhg37:(Ư%KYWetV41ᛀO~% K!\¹VhݗJ iŀF2oƀ'B|#ޞAptpJ|HpGU49.9(̀6uqǮ*XNXE#8X=!aA]\Ā !3ŀJaFpS¸*bMDZRt, dh2ƿ2 IAQ€"HĀ0V¿ 8']N]|%K)!m@Ȁ032ɀ*G €+~~>foPs(Ǎ U|E3 €YnH*Ced.ő,]f'鰃3wZ+즀'ZefKɊIv{@뛀;{X͇EN ̃ C\uwAϐAiU)З +^j?;AϿ 07Hh`:. CnYxGj.ɘ 1^lwB! !GRViy~uX*,E]w}dF+ #:18EJC13+ :@Puyv`F)ŭGA#MixmhNƨ $*?O;Gpy`HF$ֿѢ)<)!|d!12;WY>62A;EF,ҾϠ6I#9N/(*(?`iV(Gb3$̸  ,(1lH3dh?4;9* $ K|V4QooO2)))*4IIF4 )  ǯȺ­ 2SG+# 0bp^E(!+A3(:C*+;8(0 ' /* (@\]SXC$ ";FH8  /?" ŧ )3211' ё%*}YFCC M)@ MA6RjNSo hFϺ(7@2о%C$0ܯB͙ͪ6º8%Ɠ0۰O%@:2$2w>gIVqB"W2ARX!M* nf)!:֍Ѝ,8)) ъ ΂ ›1! כ,8뚛)43 ^X<PeN"1Ұ/Vtm]\C" ݱ#C]QA1 ‰+6KZG/*Ѳ 3IWvqK."Ȫ3SMQm`:44֩4IStxZEA*$OWY_egJ* M_Ufwd8!խ "$Q]EYO/ .EWe\I<*"ʞ /;Sg^JOK7( ͹,0:`qaKEK8# ž KXo}_@ %QaI@+'2!ߵ %#>Q74\~p$ ޱ¢,7##,+*#$#!!6:7.!ȱ 8\R2 CXJ7##,#/16) (ܺ'3 1E\]PM9 8?H:#  .F. "]f,*@NF1!1 .BB2( $$ 1:.)"ǻƮ"!.BF<:833164 )%"!880"  !  !#     +8;B>#!*62,1% !%,6?I>3,   #$      ^Ũg                                    _/H            (I2`&*':L?:>6S7 М/+ W?Vf: %2bi >!"+"⺡(Oq)%);B_OaE廑0ksRޣ6xA^;4 RW瀀KLԀSd&񀀀zE3a},6L Kwmџb-6($Aş2d,[_Fk8t&b!ۀ -H{}ƀam;!f0:)?ȨqdA&BP7D SZ4pO:BlX8& (kVvkE6kL ӗ}?h7M(=3=a1aD2/IaE$^S"}w4΀R0twBKlkkр(ƪWw3RkT;l顕d_0axV€V_ʉxo!~tw墩 ]t!:;+Ξ&+bLȾŮ4"MF="  +,I % ȷ &378EA0-&) ) E_  _2 E 3D!76?;/$!/F 3 "- VkAO 3L3 (4 P$ !8" &?H&I($ D bz+ (8&  &X" F $ 6 S D") &> ">(&2  3, /I3 B"0 E  !(36 L! &327 6D ++720  (8__2; ?,/2 &%>AL!%))) ת : )=+%)!B( &/% ! 3B  D$0! ,,!" cJ; $ 00 $ !$%߮=X$) 6!% EO/&,$"3L !$&3+ 3 %),E4 ,F_ ( 8$/; ] !48$/-PΪ8T&H$-)F)" &E4:3;)  %$2=(0)D( /%"6-7 ɟFB[$)0 B6! /= !:F  " &%H-0,A0d6 6"- 6$(  (&/: 0% &4I0&(2 ,^ S(D",M2 =/ $7&8!$/2渼2O?/7, !/%  ";0; 6M0 ,O%+87  !-   2R)7) ++$&D& -!KH&)4,3>)% -O>I; %DD3!0S/ &+6!% $  0 f&!;) X? )R $4 : 8A/"8"! 2" F33!)>%!$)-E/ !- -+   E%?H4!a,, (I4/O(+2+(/޻+b234 4!  +0 "W A$D=!(0: A)$OP¸B+  ,)D!2 >=) %-%% !; M)!6eH~}|{zyxwvutsrqponmlkjihgf!gK  $&+%" $)&!(   &"F!                    # #   44 <8%(4<9","h񆂨2;;765433!2"0#/$-6=<4(/;>:0%#6 = *2>.,>1'=4!<-09>#82( <=*36&6'6'6(7'6'7'5'7(-9@<40':> 9$-6?(=:(!A33@-;:(@&>B$@ *@.< 3<)@  A<*:7/<)A =*޿ /A;0 *@#iRB63$E19>3=.!?'"B$ݾ&@ٿ+A &Bݽ@259 1Cп"@)?7 -A ٻ::$A0 0Cڻ8> !?. $B2 "?2!@8Ŀ 9:;= ̾7Bպ #@6ƻ 7=ܾ &A7Ż5A۽#B:ʸ(B5ʻ+@4˽.C4ǽ )C5ǹ,A2˼ &??ߺ3A.ƹ(?;׷6E)ľ.?8ݻ+?;ۻ.B9 ׻-C; Ҹ ,@7 պ ,>= 4C2̴ );8 !9C,ȹ )=;Ź ,?=$jiº )<= Ÿ *89ɽ +??!˶1=4+=?'ӻ,84ȿ)9?/ !2<2ɼ 3?8ʻ /:7ӽ *8<. +7:*ÿ!1<8"վ !1;6м 1><'Ļ$4:0ѿ $1:6 '6<4&2:4'394" "/87'"-97$+69/ %284#.62$ #181#072$'171  %/4/" '-/) */1+ %.2."$*,'%k &,/-##+-*  "),'!)-,#"$#   "(+&  !"! !$!                      &l?gy{)æNM)W%%A_/"/ I `/FxS Aw _=7rI 4WWQQo4DDASJ& ۀDt=x=e ۀ=&4tQ )2=wl."J\}t`DהM`W)QD=SM;ڳ}x`7JW\; o24t7;2hۼM\F4).рh@J̑w4. &tI7̠o/%%}VҲS)"e2_D%;= +FFJŷoh'm@hA)o/޳+N nۿ+Vw"V%M  wM4 IF+ir̀{r7+@_@ ɀQVJ+%r{@82@o@. ÀNt;SI"J7 8V"ۗi.MV i;%4%tڳtZ4+io8"ltA8iVQ)l_N.2΀}ID̗7/FJ&A@{e4 F&N}{)I I.iJ)/l%̳ o`"\27_2޿t. n t77/VI4. wN&@J7`8QI(n4x AM =l/;F ׀Mo c\rM"o`@ @.F`&+).Icoރ2c)ڪZt"%+JF &8@ @V"JA 7%h=2J_D7 &.F"AI7Qȳi8@`7/+ e+M D&c" c&S2rF;ZQt%N{=S2FN"2/ &)M .. I8/2+"M .2WN"+VM+@M7W%Wɘ_WA&=MɷD 4I/ A=87IFI)o;?=4;xJ8} @4Z._ 4)c 2 4DQ).N%A 4 V""%"7 47Ic+D4V`27+c&2/Q F)7 Z+ ;+D =I׺. +4D2)Q=/"+ "7/8&  ; 7 8 W/&IF%;&% 4@&2&;7Q ".7`82SS/8&V M2+)Aۿ" ;)&);=%4)*pY .  ;."27 "+ 8) 47+A=.A " 44 =;8)A"=).&4 /+% /)&)" %+ .8+8 "+%    )" /"2)%2 +   "  %     " +q0I"&                             ʻ$&Ļ"&!$$ &&" ɿ&& ̿$&Ͼ&$Ѿ&ܿ& ⿾&$ɼ!&&" "! ,rU   !" $&! $$$"ƾ $̻&Ѽ&ƻ"&"$ "" !! Ŀ"&! ǿ"&$"ƻ""Ͼ&Ѽ&Ǽ"!ܻ߼! ߿!      -s_EG," ܿ$"߾ʼ!Ծ ! ļ $ļ$ľ"¾ !   ""¾$ƾ$Ͽ$ļ"Ҿ̾$Ͼ!"!       ! "Ͼ!ҾѾ"Ͼ""ľ!.tN! щ酀) sMK}M#ճgYII  7鯙7?Ae+ˋ =aI[Ai忭'!#é;3=SUݯ!-[S%17S;mՀœ)9/y'!]e-ue3ߣ3}eCac=Q7Cw;3;y㿟󑍭!;Sc' ὗO aCS]ow'cMɀɧͽ)1I/u!yk%9]Oia7# UwswoM_͛1O3w;5=SCE倁KEQ?QQc5Ʌk== 'Cg+5a)'uU Qqe=/ugݟù [ŗ)AYU{A󥣀QYяÝ/S)孕7)]gMg#-1 /=ߵ1Y[uaEǀOe'5iwU)e7 ߯QU 筀 1_]%񟳕IuyWsU/ߕ?C i}5 /OyW }e55߽˯ѹa5MuoS ߵө'}{_;1 0v 7!++󿏀 ! I%Ƿ-# )/OO1OmUU5㑀 #QQO7#+=]Y1 џ%eq;; +ř9CAE囁77ekOE9ٙ7;!C ɹ'MmwA끗!= %I9ӓaim= ;GECٓû+;37;;3cyg%=a{+ݍ /+ͷůϩۿױѻ=Qua)ɕG?%GMC7=Iӛɩ %ǩ3;q1wvcOˀ+wIo%Ӏŀ̀က9oYYuY[#- ۫πש{s_S1Y ;ϕӿ'+%狥ݭ)?! !;[O)ˀ#71COϣ?1%5s) = +ͷ !aQE'# G_[? #7ٍs%߷ 51aU MMsK7mkQ]U  ]m77ߥǁ˳ǫ I?++QՍ!3Ź UU!Ck}9їտ%5 7YU= #OS?I][2x&4#Ica;居3+Yc]G1嵷  !!5UQekǣ5)œ;M_suSE5+-!ͷ /% )IO+1!ϭտǥ%5Uuyq}_1+ //%+'#/IUSSG751+MWYO;+'%)'+ǯǿ#+/)57! /;=7+ /;CI3Ͽ 1AC?7'  #!!  3y +Q!%#ϱ'/1?E?5!%'#)'+33++)#5A;;A;+ û /Qcg_OI;%AOIEIO=ó'7=A;+!+# ˿+=Sc_M=5+ #/51+ɷ/c}}}}mC!+I__YQA+տ #!' 5IG;# #+' #! !)'#!ϻ#Icimi_[M5 ɻ4zZ? '% տ!)7EIA/ ѷ ''')!! !%5?5% %+++++' ǿ/AI;# #  1CIC/  ý %/7;3) ɽ '+/+ #% %5/=[s}}scS;# Ž7Q_[G+í   5{Mǽ   /;=7-   );?=/ Ƿ ## !#%%''%!     %11-# +;A=3' ǿ  û%-;CKKG;+ -31)    '3=A=1' #''#!##%))%%6|V %-37;7+! !'--%   %)--+%        !#%'%      7}CCjB     '^"EgW'g΀q8iqDE򀀀/ўH`ƀ+qr4/}~r2蜀/^qZ3@@٦8~i(by2'"4r}g3żѩ;:")RSHJ;Edqt}mdR/żջ '/D4'!8@DAA:8AA;ED3Ů2QYQ4%''! !)+%3EH+';S;2'"! '!+   '48%'/+%''     2;R`3LSE%EDюw'4̀AJ`ـ"E@Eŀb2^t4giyd͎%)Qk/ـdY٢EHWgrL`~)ێ2"29$oJ"ٞ٢2'/R%4HmW٭ѻ ""%'2HggRRAJqykdRA3%ѻ 28EE;@+ :;A@EJEJLJJE8ſ 4EHYgg^@++''!'23+2;D' )2;JbW;23/'%   ):DRD222+"%!3g!Y''4Q 8@SRջH耮}οikE8^%Q wR^4E}Edd倎^ՌA^3'퀀bW͜Riـ gW^DY:L"sL 2''3;)%qd4EZgrRƻ弙 '8JZ`LDE@QbR;2! "+;@;4' /283232)+'ſż)48DRWH+ "' !)ο!38@H^J:8;:2/     " '@R^gWHED8'+  !4@yt'; ZH':: %;~:3+Y倮'24 !L퀙D kwg`Hrgbk2 מYy;:+ 4dd;~-+DY`Ettٕ!3ƻ"LDWkD2`yd+͜2RZgtrdg`Q^^LA2'!"μ +3ALJSRE4%3ADJHLJQE@@;4" %/DQJES`SE3//22+8@DE2!%̿)228EQ8/3;844 !' ſ';HQQ;22/! " '`bgEE+)%'88%^ բ~' ΀ـZgD~Z;@24 ;g/wQgW}僻:J2!+J}2A΀ <x5Yr:킃rQA^SrR '"" 8A2僀 LD8mrYEiw`:'  ΢ſ2JRWbib^`QSQ83)+23'ο /DHWJ4""4;JRRQJEEEA;!Ż);;@LRH;+'2:;@EJEE3"'+!ȼŻ''''2;22;EA::%//! %2ADLL843+%""+Q;ED%@+"!:!bq Q8 QRA%'"`̞wt򀇀/bJE3燇 ̇b}'L4:8HH~w:; "4kdٿ/ Ξ=plǪŠ'@!ۓR~Y)%42Hr}m+  !%3" ƻ"3 2JA2)8bkkZ;!% ȭ /43@EH@@834++)"!%' %"') '+48;:4482)+   )%" %')2342" !"!!   !""     )8 % "/Q+  2ѕH@%%RH "! HmR E  ;"!3A'! >! 32 ':;% ! "''!             4 =R8R-Ƞa"A$9: CL@AZN+ـϤ 2j|t2ۘ&T =󩮶೫!6Wu[:?y&Ϋݹ =kzcK3 Էƌ;@/T)!vLqLeaЌ(W\X#/ԳE^Fv;䩯4QbiXQZZJў!չG}tQYME ɳIi,+7>hkU/+4YHϖS,dh! K#\<`l~lܲf}fCI1լ% mo,#fM ݏʵ풪 9f8b8hk1vi),/ɫ̽Dz2)iKI!Hby_ A=,#Ѐڣ M{idfdMh @N좊bF +1 ʌR 8/;7$Q}[8\H Y00 ! г-'D^-'MF1 $A [~NE 8ʣX#6R , 欭 dNԼWqDe/H Eb -9'£ε5=\0 Aɻ$0:O' X'VMYY↹0I4HF 9Ƽ-!ۨ7Z$fa)!!/.;cGZx *'ϙ⺀қ.C<gL /F %$__8\F,ص꾁ט 5cFO_`HD)տܙʰ/Rr]ZR[^DOaEA-J;Hӵ ۱S2NT#I?ucL0󢉹݁(/`7*=1D_6 Sݒ!2 0T4=#5?װ׬%=Sms7 XN_7)"+n0T Ca0Ճཀ9+TgiY!iP 譞ҷ/6)5[C -ԟ)I#'^?N8%!ɥ 3#2_N7-,)ۙ NyiKW{],3; ؏%/R7Dke0jQ +2͗ǯǶP\8s_:rL@Q-𰀛Ҋ0L$iTK&齒ƻ7: -5?OnMKGB𹲓1FtEO8BrG&ʾͱ9@7?- ,&Bϩһ 8^H/rz>>[Iúظѯ&  \l^#+.8W7 1 *+mqH7j%01 D< װb~]: ?՟ [CWu5HeFڦǮ˴Ѭ=F1{hm7BH7ݾ7Gbq\XXR;<2 // պ[x\TSQ;#!50IZt^ٌSve[T[6ͱ1->D$5Z& ׭$82+"D 5X9ċ 4yzk; ﭕ *T:'-;)0)ƀӂ+6CY./G EEOok@븡]t_! ):0$-jI.'Ƨ=O=0.'%BnhI8ʹ6aooymSC$ē-B01Yg;/8- )ў=jux}c+ š@nhcqWLPK6갛 ')Q]XRLR[@),+ѼFdoZQD&ݸȢ9[vmW_2)*/$ϱetI(* ?BSqdZB"೐"AIXk~r^B"Ұ̺ô09.T[?.()',)&2<㴵Ƣ '5@HJHJ[WD2̹ #'TjZUw|s`A&Ә.:WiQIIDEϝ 8+ &PL>Uerc[XNH& 갹ЩŖ5KgP*L7ҽ 4/9%ӱȼ + (.@M]WVL785=?أLK?d)<1%WhFլQH%G= $ =5 şƹ+ZL/7* 0boT(ީ=`\PARS:<5߮ :˿Ͱ "K8@K<2(F?!Ҍɷ .AJMN81=1/!?3;G:. '/ǵ6,7>-0UU4'%Ծ%':atXD$⭭ܳķ'8`mjueMMHT841 ϫ% <9,໫/U}saTO-  (F:$- FMMs͟-PC.=I-,?G1! ۹ک +('_faO0߻ )B`aQ*+GCG%))(Ҽ'bmnjE, # Խ=FC:=%  *IQTT2!! %"$1  $$#   Ǹ%1373& )((!(H.0?=*  $2ÿ# ' !!' #$! $ $-  / !   $4>=:4 7B=5& $*,5*   .-**&!  "'*/141!  //#+0)%"#      $(I9  "   !% "  !$ )'# $'   #++ $'  )$    " -(%!ô&-#&$  ( +&$&()&"" &-,+J1    #% !   "                         KP           #     #     #    LО            !%      %%+      "            ! %  M89    / 0  $    1"'; %       ((!:0    !      5260 #     N?! #-+ $.% %&"&,      !&"                        ".%#  OѿL ' ))" !!"                    )      "      PE]       !"         " $$        Q                                   RZ                                       S          ayqAqw!a灁AQaa?A}'}qa?!5!/)鱡7a;K_oeoigic{}Oaoiaoi#?A/ 񱗿THQ ?A?YOWA၁?QO}q)?C ϡѫ1!/#?Q?mE_kgqWwqoqmyka]GY171'9! ͱ+?17CCW]Ycwkq}yqwUueemA_UKI?A/A%=!! ɭ=/?UWiikus}{qoqoqeY9WA?9!'1 ջů  #'';1;C?GSQK_OWaOkIWa_UW]QWYEWA?Q1?A'/1!%)! ɿù '57?KOWS_]oq[sqoqouqqeeogWiUUYWI=M1?9!'!Ž !%%)%'//+)%/1Vũ/1'+/1#=%')+#3''!    !/)'%31';17539913=379593;5/=9-/5)+3!')'! ɿ +'==?MOM_c_wqouuqk_aQKEA51'%ѿ )-33;??CGGKWUW_]cggqgmkoksqkmkggca]YWQKOIA?=533)+! W[WDſʞy>z€0!7HZh:q/ŵ}YIT2!,뀀׀]KCt;fnD, ꣩e5=TR1:Qj0Qq,>,--է߾рBZ|C>k ]ӠZhTqX7, ]$%ѢH,Z]ϳ%=,}:H']+7,Y߽ƴ%M@^% >ߐ-кf,,ot{7 -ʀɉ  = ٠{c)SZu2 ٺѳHDCW%O#\jK;S=,l!72Ƣ /%ѭ,Fκ,<L!: qtD/2-ĬD똴BC0,R6# }b: ᮷,=6$'yf]-ꠣߛBk',ӌ՝ O<;,c νwkf]oܣ>7<D!7%#ӅL]-$, @k2ʬ$Z2Z1D! 7Ѿ߷ 7{Ӻ !< k,=-â'˽δI: ,^)! %+fMOTb'  Mo! f7$ٯqtM2]#),Z+%`| ;,M ˖$% -+<-@SjY:70ľIhD $î6fb;5hf!=W/%,묺@H1Z,=2+@IkS:#ߩ温!'0fQD'<`]Oc! ߘΘÁI7'lBH$ ':05QL2  D$  R2ɽŢ)2-ZODO])@$ט;ΐٞ,+=;26 I]5KMӷ㯼ų'7>LQC`- $#®^m࣢/1w]F7,0+LIB-ܳţ!B 0=-, ⳾>Q{_>$7$0!7I ;C ׳  - !  !% 'վ0 >-)Fը!    +' ' %I5  _  - ; # /)$=2 '  !! #)1%!! +   !   !  ,,$`j    ѽ$ %   '! !   ! %)       a)           bO     LPPPPOKID@ ˆ7LRTT %&Cif^Wڢcs ::<.$%  ړ,KQRTTRRPKID ̐ LVV!&'+-Zlod^'毵 >BC  ͣ BPRVWVTTQK9 ؟D ',034hvxs^& CI    IQVVWWVTQፀ(039<=pzt-    䥯͞ CRWVVVVT!訄>BDEp|dz.2\>ٴ .  箰஻ ZWWWWW- !$%$DKOTpCж  79! 묶ٵW][[ZV%%%&((++'ɑܯ QRTpLӚ =B% !$ 뷽̢ =aa`^,&(,,.022.-ʙҦ 2XXh|RL    EI !$ 긽 fhfP+-034677632-վӟef֣ VZ]lb[W0   R$% 诜 &ln7379:<===:763ٽӜɟ T]]>hifaXࣨ 殰 < $& 耋$'l:<=@BCCCCB><94ضåZ[',Ohph`䯱 詶 !!%'  仅 %+EBEHIJIIHEC>:ǩW-.0Chxs< $!%&'   Œ!(JJLOOPOOKJEfstCdfddb`]ZWR!ᴷ24 $'(,...'ժ洼OQQn թΞ (hilgda]WR Ӭ  $',.246766ɶ赽 RQPOlD ж߰ %2hsomd`ZT ¬ !&+.369<<<<97ͼ߽IRPOKo^< ʜ䰾 &,nttpgb]VPإۯ (-247:>@@@=<9ę&QPOJLP !!hc˜%,29n~uogaZP䥮 մ .279<>CDDB><9öLQOEH !%&%$ὼ ,4:>lxtodD! ڰ$49=>BDHHEC@=9ʞT-$(% %'(('%羻4:@Ih{uo2,'꯽ ٬%.@@CEIKJIHDB=9ʚ ! ,.   $'+,++'$ⴸ4@BEh{u92- Ҧ,-CJKOQPPLJEC>Ę 7<Hi_L< !&(---,(&յ:=BBn~|a2 ™42TWWWVTQLIE@ ӔJH !&+-..-+' 䵄 ,6:<< [aP$&'(++('$䯱 %h6&%%$  %&&&&%!뱵  $'ghd^'%$$jś  %Zhg'&''&'&$߬$`fbP !&((+((đ $'g<2.00. ⼾! $&+=lp'('&%$𰱸ǰ  %hfa]Ò!&(+,,, $499997 ة % &+-2WnH(('%Ӵʞ  %ifb'$͙  %'+---Μ  :@>>̪  &+.247lt-+(ļ!%+iP+(Ǡ $&(,-.!ߥ$ 2BB> k !ɚ &,0479:ov3.,Ǿ˜ %'O6.- &(,-.0ߪ% &D9 !%&(Ĕ®!(.47:=>@l]42 !%&.42 &+,..0⾴-  4!%'+-..&,27<>@CDDlP6!!%,66 &+-.00%Ǽ  $&+-02444 %.39=@CDEEEWbۓ !,<:!&+.022lӠQ5 $(-.4679:<:͍&,39=@CEEEEECH˜ >C=$(,.233   67:=@@@B@>:ę,27<>BCEHECI ߔ JH< +.234   DEHIIEEDB=9ƙʢ!.37:=>@BC$ P QLKDߨ&3  $$ ڦ  KOPLKJHD<ɋҼ$+0367::3Qը  m:=>BBCDDDDB><73->CEIKLLLnPID>9 𑍘  !!! ߙ 7B!%'(,-,,,++'&!ߞ (.49=BDf~vf[Q՘ !%&(D.-,( !%&''%릀 hif9.... + %(lnofaZRLժη ,b]XTO3Ǘ !%&&%$ 򶀀 ]a``^[XTO3ǍPK $&+JIEDB=93 JIIHD nCCԞ>DHJJJKJIHDB>:4->JJLOOOLZZTOJC!ʴ $'((+  ә DK!%&(,-...---,(&$߶ƪ34:>BEHp~xf3ᨨ 7973  $贱 !fa24677642 ٨Ԭ !$(-ltngb]V ƾ $Z[R, ǀ W]]ZXWTQ ´.269:nIIDB> OK OQ o 9  ժÓ 4@@BCDEEEDB>:7-٣ KRT$fgb`[VQ۪ HDC  絶OPRRQP('+,,++++('%佻Ǒ&IKix@@=:9水06n|utnd] 䮯 BCB- ۼ[`^^[ZXJ!&&&&&'%!ᱻәBIpTPJH9ߵpj;  &b[4  Ԩ̘@IIJKLLLKIHDB. ߀C+.lttod^W 4QJ  籰 `[X324667776640-%䶼ðɶ,QRVpDBƥ  2 ! ꪰբ!&BIHIJJIED氱&6:>l{ug簵L!  е!llmgd3002220-+'$ӸžJIJnb]XTL q9 \ܸ  6.  ꠬Ԫʹ OXWWVTRQPLI抌 -69nztf bXē@lhdD99::::963.+ǽۨڼ TpZVQ ٵ(aKHD  Ͱ©LQRRRRQPLJIEʗ &f~x!!! ө&ilog`! ᨸ&a9..023346664뵸r! WXh! ٽ TQPLH  -%HJIEC@' ᩮۻ7<=OD97776664 ж !$%^0,- м$'hgf`[.,+'&$绽 ! %'(-.0.--+(฽ <@@@==<:ئ ۽!%''!3:: ҩ$(-.liR:::973.$%%%'(,-02330.-,ٽCCXXR  ՟!`b`]ZWVPK!뵼>=<--  !! ߦ7<==hxv- CtzLFCEHEEEDC@ɰ ]WT&&&&&& ӷ &(Clg[$%&&'' ٟ R !$%&&  뵵<73͠=EIED9D'& ߷4 7a]XR  JDñ(+.2466777640ͩ369=@BCDDlxxd½u"j CDB :<=  !$%$$ǀ %(-0367hun'$!Í !bdZVHո  !!! ҥ $^WVP7 W]Pฒ TVRQO !!! ỞWWWVTQLHB'ߢբ6==>>@>< 49 ջ366999  674,@EEHHHEC@=:6 '-049<=>@@>:7K@vCV  466ھ!%(,-.----𼟀 %(-036779iP'&$ ͑ !Zb^XQ !&'&%$!ٰ(& Z[D  $&b%! !$$$!nj W]XQ  !$$!!’Z]]ZVQKD>窵窻@HEDB@B >DD>  9%DKLLLKJHEC@:ǣw 2=>BBCDDC@=< -   ! !$$$$9,0024466763򮒞$'-047:::<=Oh0%!Ι $,g`,%ᩱ!%'(+,+' 꾶  39&  $'+-gb! ۴б ]^[WQK3۞  %&'(++('&¢ն!&bb]+'&%%$Δ29>>- 6J ><93սΩ  !$%%$! KZXVROKHxz΢ Γ%&,0367776  %ߪ $IHEߟ+  CCDEDDC@<72- $&(,.0..-(:Ӵ Zb....,(&$ ((,-02- :P,+,,+'%$! Ӱ $  ! '۰ CWWTQLJD> Šé &+-.0233 ,Dɨ=B@><73 ƍ.-.!  !   ==<:::   y3|h_ #%&'-,&  ȿ ## ##  %,5<<6/# M&  ʿ 1:/&%'+&&'%ŵ % /  ݽ/44 ,,  , 6; # # ,  ;, 4 ̽  #6< # 'ݽ I# ,,; 4#'2ݽ ܾ ,2ګ<<  ';   , ,,' , ,/4#,*#,, ;,#,; ; 4 4, ,<, 2伪 / U  6 4<,ݽ4   ݾ' / ݽ   # #'    ,     2   # ' 1# *$ , ,,6    # '  , /, ,    /,    ,2   ,     d          #    ,    *   #  #   4         ,   '          #       Խ                       z.                      b                mKlozҿ,&+%3@T6o87$  &2%T@">1u%*.|& "(s|/)9a!$r & "Uz7v/)6ljh셏P7 䱵 N3b0!z%*zmq $'{qw'uio" ( iqw'@piB& %& 1qhnu|Bpj@' z!%&1*sktzjkp,&!"|!$ yq++<06|qw})oc`|u!*+B4u{}bh  ! {m**(-+88wp tdi  ߺth'+'('7~y|,sw l\½Ȯ6hhq)/247o.tyi] a_hq),347o'"tyk]lucb_hqY%3686%prtyo h_irZ'47960ptvzh_jbju{%8:=K@/qvmh[_]dlw}'9<>K,|ntgcK c`hq{/>@KEF"0{os ldnvn&0EE1{pt  ٵ piqwq%OUJtmjѭ4jfpx#2Q@Jumj1 *mjr{#2K?dj oiqv 3J'vhj  uluv 3E%sca ѧ 2qnwAm+QE(sdcҧ!4tnxA+QeG~ac jlpu!.ezae  $nmuu .E|a1 ½# "tnvr!9Ena1 ^C$ oiqo!:<)g] XAT 'mmt?*(eWǷTLN !fgn8$c2_²bFLxV+ $ljh{d¿1^UJPU( lddx}4QGM\R qijt|( OEKUP tddnw|Ŀ;GJQXS "sfguy}34?EMR񭽷*c  "$[#4{x}=ŻPGL![UT"$'' $7yu}7ýMEKTW $d" 5n1{1ɿ7U XPR\H "%%'&H|PJPY2D ^N=}V^VG¿9 R!&'#7}FNɿPGLRX  o)" 1(==E eY !!%';~F# XLV\'   $c$ 1(=o>9aX`  !&(TGƿhLW\^ ý  &"&8"(-B>HC% k]  '^#',:w}JNC&bW^ ý  ""b,,8=ED6$  &6!+-G>ID67 nb½  f !%&'&C\CH'6`   e%My!24|7EDB=, goO%'%7,n7@KOK&ֿ^S 󵽹z&h],z&89>EFD?;*ſe;ͼlA#'% 00vzFOL_ ᯺ 1hbgc(9948'%YE[`e+205AFPK3H?>=<;:9876543210/.-,+*)('&%$#"!      @ݰ ohnsz,#-H@@=78( 4RS\en0=2:KPOJJ   qins|/VDD?;08'&ý TQZcpu~/CJQOJ>  ripv|z?NIC=7<&$QPMYenxQUTQN] 웨 ;okty@KIHB<7<*% XKW`kv# oOTQNKH  qinu{>KJHB<59(쥮PHU_jtMUROJI.b vkty\EKJD?9 3$  WR\fq|OURPNKHC6An  (xpv|8HHHB=8 0 XS_it}iSUROLJE:S7   V{y@LKEA<7   ĸw]YeoxOZWUPNKHXH   v|BGIIDB<7.l GdktzGUUTOKJHFJ%   &w;HIID?;7#o\ .kitw|GRTTRPKJKFF* Ω "7|z=IJIC><6$3q<  üpjrv|EQRTRPKJMP!ǿ !"ay}5BDEFC>972u2jn%   ujpv{=LNNOOJKJ0¼ "&av}/@CDEB=86Zsoo' %ukpv{REKLOOOJ{oI/  !,SoO8?@CD?=86osk  )vkqv6DEHJKLK@4&$$$ſ !&4@879:=><732/!uy(& )vmsw3EEJIKKK:(&%%  k& "4B-;78:=>97202)wy! ñ (wmst2EFIJJLQQ!/*('&  !,\9567997214%5{e$Ҳ )wnC6=@CDFHX>,+*('   ""UqA99:<97215%%D{!  )w&49:<>?BaV*=.-,+# !!&d#'A779:7211<(**b}! (w#289<>@@z8?.-,-¼ųZ  !!9.)?5677421+<--..L% (,.1478:=az5>>100.+¼ 󮷵  !"%--+?367421,<2111/  <.02468G3<:+D34321*ż   !;/0.&9788321,A33222 ǿ 8,.124;:8631>46433»  ! !:10.68986311+I88776  7+-01246631+jϷD43332-  ! ! 0..-,3786321,.@==<:9ƿ -'',,-.021*})66666  "!!/,*,-.346321,:6@@?4 + "%'(*-.-c.9998ſ찻   !!! 6'*--2477221,N?B@@   $ "%'(Sz/<<<9   """4'+,-224421.8EEE  %!"$'*y{-==="ÿ "$""1%'*,.13211>B@= wjoY#13321  jbhn++.8^+ &!"%&ʽ cfluz7:<=<9 %oimA&.011.gch%'6}.#½  l@!''&'*(jensT6<:997½ 'ojp+)-.0*hb"<y"ÿ  #kdk`-/01. fdgkth57871*10½PA_  VX_c ÿ+O egkj6ccktwM071 0cbhov{R2:83432 `X^b f^fiα;bdltw|k2- Tchmswe,8744332ſaW]aſaY_cز^[dnsy}~  kfjotn)87743321¼e\b^ſ^Y^]b_fosz½ ARgimqp)766432111 +`\aec½NJPYX b^fnsz( )gdinsl*877433211ż OL h^dfC ¼񙣤JDMQ1Z[dou{35¿ Yaekpi&3331...-,&ƿ?JKh^cd KDL *WYblu}1?( f_hkY%0..-****'% ƿKFNL j_chſ璠@x 9dbh=$***(%$$& GGMSH=fbhg¼ݐ=:>PLV_iqz3?>> Ǿ   Z_c8$$$! K@MQV\8 lfjla¼ŕ:.VIS]fou3@?=<  b] 油FEIOV[_. rimmļ5GJRZcnsz6B?=<: RJOU[_` 3qkm¼ D𥤤YRZdlqw}4@?>=:8 YMV[]M%#enl˨PTXckpusy5=998761 ꛨPNVYX &"(7ze$ 毶c]clttm;..--,,&# ܩbY^F"%Dq>I|1..#$ ߪSX^cloi2$$"""   ©,g_.$'<wyy(74-% ⪡aX^ekl&( ̻ 򦭫 k] %'6w|<47412%"" ʷh_hmol'(d  젪֣0a !&xt`+44311 :.,+++*$" Ŀ jdiotr"nd\ 㜨 &---,,,+**/J577778741+&%  ukquu"ncdZ頤ٙ"&''*,+*** h=*wx6<=<<=?>21*%$6 {pts!&obdgb򩨤ח!$&(**(/}j8@@>>@MK/1)% å9O+}qh* mcdg_Įז"%&'xy|J?@?>?E}r*0+뢤LPBtViSW]abL ˬԒ #uz6>><<=Hw&0񝤞DIMV>W_V[]`3j* ŨӐ |#  +xpw|1;:989gu!𛝙?DKSW!Ҿ.\\]^&=jbV 񦨤̨ Jlnsyo/99869fA=FPV[ ! `Y_`&!kchif 䩨dgkty}\6<:76=W# آ<:BKSY]  T`ba'$[iimnniŻ'aU^foty{a49966+!è94>GPY^S  fN%]fii\/O9bqpoZ;`  @Ȯ"& _UYentvyL;=:5-738BLV\^M!"! j^`ejnoppZ,3>zW&+6p #,/`Y^cnvv{FA?;)2/6?HQY_d!"%" ibchmqsuxu/1)1%/qgb  '-8;6[^bdkuy{CD?  Ա-*3;DMV\ed& i_einouy}U0-*qhh\ $/8ADWW\eimov}ED($09BKS`enZ(h_ekos W -y=7uhhiX",5?HI YR\djoot~C緱*&0:EMW]dnmbabinsw|mlmmDɺ'49DLDkRZ_jppr|ǹ#",5@KS\dj_heiouz/D{opp7¸$.9BJF^W_enqszKCҽ('/g^ejpz}QHCŷ,*3>HQ UG`WOrhqw|@E,*61m{u $ü),6>*첹lbiov}cJJEӾ++5?GM=lltyjCHC<834w&$º/39 Ӳ (mdnv{y[VXV!ͽü.*2:6½  cdktye@EEEd688,)(%" 34 cdkqw}yrn`E5 ξ)#)Ѯe`hrzK;??GL:9 2%$鶶6/  jgotzoB>82+Ǿ}i! %dciov|F7:;50)$ݳ̕$ RfgdA#4CB=8" MH "wq 5uuzc==950)$ ۱͊43 1jeUQ|y29741 ڒDEB "sosw}`6<00)$ ժӀ-0. Wjc5'Iv}E97611* Ƌ/7BF4!hkpu{<342--+$  т,(.' &phi^57z[0331,,&% ᰰ䛔1:BGVinsy5-0++* ϋ%&K7VlkjY)17,.,*((#! 㔝q+1?FLI8hk#)'&%"$ ȓ$JM3!mjnj1&""!! 򱠟09BKP'a"""!  HKSW&vko1% 񟧞(/;DLQP ճ$DKSY[!>g  -PC ި'+4?GPS8  [V ںGCMV^b^!  O  <KOO= #*4>FPVU   [W[ ýNMV\ch\!   QJPUW3 %%/9AKQWA    ZX]ba¼UW\bdgD!  "NKPUW]/þ,09BKSYZ  _X^cdZ½^Y^cdf$!  9JLQVX]]G½.5?HQY\G]Z_cdb ½  ]Z_cdb! D@JLQVX]]#*8@HRX]]#+]Y_cdR  +]Y_cdR RJOQW[]Z A@GMW[]Z ſ`Z_cb%   6[\_cb%SKPUW\]M ĿLHQUW\]Mſ-SY`a[ 9Z\_a[ ȹ KJPVX]]& ĿPMQVX]]&ſ1PS]G\{A[[]G» IJRW\]]/ROSW\]]3BJRH " NUY8¼%@DMV[_[ üge097787761-&$)% 0;AG ! " `Nȼұ 7iktoAB@?>=831*&$ ܹ6:8 %%%&%&%%&$"  ҥ 4gkrwkCDCB@?831*%  ˵& Wg=/22210...&!  O򴟙җ 4giqv|oOIIHB<721)$  񳪤 (ginD58987432*&! ԠЋ )ihnu{tSMLGA;611%$ܝ ?gjov|R@DBB?951*&!򭠟ʋ ohnszyWRIE?;50*%!ܘ؈ 4^fkqw|ZGIFF?950*%!¹哘ċ &ifoszy[OJC>831)$ǿѕLJQdinsyeQPJD?9)j 50*%ĺюĊ/dguyzWNGB<721ĺɋ֙ .\fiouzkSPJD?950*Ŀ۞ۭ(^cktytXMFA;61 ƾ߭Ԁ0Z`iqu{zROJE?95%ظۡ#UZfoxrTMD?;ĺמ‡>OYbkt|~QOJD>& ȿ" ޖJO]ir|oOJD'¸֝&5EIU^hv~ROJ-Ǽ& ݗFKWdpxiO6$Љ8?KW^hp}R7Ŀ"$%Ӎ+:ALVdpzR " "!Ѯ/4AJS]fs7ȹ"'&0:FMXcp|pȳ !%э(6@GQ^kxzC̿$ #Ԏ"1;ERYcn{Q+ü#!<􉐎<;ER`lvrPM5Ǿ%" ެ8931*$ 阜Ç0Z_hkpu{oNM?;61-&!΂:^`hmszoMMIC>831" 顦ӣ8a_hmqv|TMKEA;61-&! à ;\_enszVDCCB=721&% 䮰Җ:a_hmqv|~DGED?;51+&!!7ַ :W]ekt?99987631&# bW ȹ΋ m :`_hms`5<==:960*&!'kb(֝ 8Q[^&,...--,-'#6d]bLļŇ 9`_hC+1122210*&! 8lcfa ļո 89"!"!!&  b_`cdf=ٻ 9^%"%$&'''(*'$!!jdfhih"  6hbcdggb%º % "%phijlg$" ƿ),    `^cgghhQ!ƿK$  2'D@,6&-VV٣յZD@& %&Wʁǚ$[[]--‣K$I Wdf2=& $6DlI646:+ ×4R^f9I-Dǩ$  DhbIf4 Wʱ -[tofD-&=+Ҽ%Ltt^P-K¢ +.@am[@ +:, $6-R{mV%$Dʴ-@Dh{[D+ ¾ @.Tt^Z-4Ͱ2@Bbpxڔ]K ,η :3Pt{bP4 &ư2=DTdZL'ʱ 6%Pp{WL= 񻾾 6:HKT]O Ҹ' ,Kh{RPB»ʗ %3ODTP]ʾ.3@W[V3Ҽ+.L=RvPP$Ǵ'.=9P~tiV4 ,2DBP{DK2ô3-=3@t{mKKǻ%. .96WpDK6Ƭ,$4=-6pm{=H%3&92.Wf@@:%Ο͈ ,$=94,pat3I® $2.@4 R{h=B4ښ4+D,-,pib,D& μʷ'9@6KtmD63՘蚀%9D'$'pba'D%۸Ä&I=3Ifp@@' ʚ񣈊BD-,]b[+:- ỢƗ+H=-9^t@6&򻊊 $@=,%^Z]%43 ƪԥ +HH+.Z{D'$$ƪƗ .@:+$aT[+.+ƴܸ%+DL$,[v@$-Ǯғ44I% TWT&%++뻱軑 .=B -[a@+, άڞ ..D&KRV-+-𸸮Ñ 46=,]O@&3 άܣ..@ HHP3-%ʰ͞6&4'TDD +'ҷ۱3,= 'D:V.'ұٮ @ +-DB4--ñ . =%&=6W6 ۼ:'$-:H4.ʵ͵&%,$&3=I9DZ4',6I6:ٻ &&' .-@D9 ڵ2$%DL=6پ,& +3BH6$ 谘,,  &KPK- ոܾ-'&9@K,' 񰑥., &IVL &ұƴ9- &@BW$%ʻ򬐟2- +RaK %ʪ擖 õ B&,K@a% %.$δ򪅚-- +[tD &Úʬ I,RTh $3, 밌:, =]oB$.Ҽҟ I&[bm -2+⸼꩑3+ Dbf=,4ô ΚD fdh 2-⸼穘+$Iid9$.,ô Ǣ9 iii&3$羼 贞&Phh2-'͵  dih 3¸ǚKmf. .%Ҿʱ[mZ -¸Ԛ=ta- %&-%յWhP%$üҥ-t "C)d.&2& VbH &Ү4pb9 $&' PbK'$+һ9fa6 . @]V. &.:Vd4 3 .[]64,&Va@,3[]: 2+  H^P. &.Va=+ BW[9-,$VdB&'6RaB9+ռVaI+'$!2OaL=%ڼRdW6%' +RbZ9$Kdh:, Rdb2%Ƿ 9doD$9  Lo]9$ ʱ &olR'4 䮾 Htf%@' $پͰ tlZ3.䪰% :xo.D+ -ʬ+ ttT9, 2 ۩4{m9O%-$Σ,%m{D6- =Ҟ& -{bBV% ,缾-Қ-"qn ovB'=-۱Hۚ3$ 9vT9V봼%%.3ž+ۢ biD,D'Ҵ Dڪ2۱@mR,&T ٸ.-绩 %Ԧ&VW=3=ռ = Ҵ'ۻ 9^K% +3K &&´$԰ DL9&496 4 Ҿ-TB'&3B@ &ʼҴ4D6+::6&ΰP6..=B3$ڼ3B=,==DҰI.49P=, 4:='=DL$հ@-6=T=' 4=:$:LP%$Է 6-4=RD,#,ڷ+=6,6VL  ھ=23=LK6۵$:443VP$@246DT@մ4666WL%%ͻ=3=,=VP '԰,:39TL&$ ,ٻ=3@&4R[Ҽ.۪%D.9LI'&-.%᷻::=&2IfԷ 4%,D-3BL6-=۵.:D$4Baҷ=,𮻵3I.'4II-Iٰ,:K2DWҰ B2񵵬.P.2=Tշ&T$ հ$uQ%g'6O-BLͰD4-V.-:RҰ V&Ҵ$=K&9D$ʼI4ê.O3,2@ͷR+%ջ$DD%-42=4&%å3D9,+3I22$DB&%+4.3-+ª 469+$'D4:ʘ @D-2$64& ÷:3=% @2:Κ$@=..3=$%“=3B$ $=.6&Ҟ :=,'-@'% ʘ:4@ $.22'ʦ 4=++=,& Қ66=%3,&ʷ 242,9-'ٞ 449&2%'%Þ$..6 %6''٪,3:+ +9&ǥ&%-9 &2'+ ٰ'-=' $=,ΦƵ+'-6$ '--ٸ-=.69ժ$ 26,.2®366,Iٴ,@-,9DZ$234$RԼ¬$D$ %=- ʻ''92 $P%ƣ %:%$ @3£&+%:&$$I4ʣ+2' :=Ʃ &=, &BDʩ,.+'-B.ʬ$6.&DLʱ%9-  +DHҮ ' 22 +=L ø =. -BV հ% -9&  2P3 =2.=^մ$ +=',  TDʢ $@3, =d Ա.D%. TRʢ&B2 '&@d+Ԯ3H - ҸP[ ʞ+D,+-'} @d2Ү9D+ͷO^+Ɵ.H% +-4a6Ҫ9B$ %ʷLf4ã3D-.%^=%٣6@+$%ҵHd@.D%&,ʾ]D4ܣ6=,%+ڷD^L&@-+¾ROB۩99+ &-=[T9.2;KTH⪞66, -,3V]'2, 4Ҿ BZL誟,., .%,La6.' : =VR-,, - %BaD(G.$:$2OW3'$+'9ZOǵ- .$$ D[%2+$'4RVܱ%$'% :]4,+ 'ո3DZ%򰩮+ $3ZBʸ&' + ܵ,4]'2'RHھ + + ,b,2һLOž' % &b6ü+յDRã  $]B$ ٰ=VǪ$ )Οb  ͸VI  ٱ3WҮ& ԵPLƦ ڴ,V&$స %ٴPIҬ   $ԵR3&豻 ܮKB ܮ '  , ԼT:$%$ રHB$ + 2.۾ T=%%%⪩@I%& 93 V=$' %䬥9R,% =6å L:%2 '%簥2W3 %%=4ʥH=*TX% $42,걣,Z9'3:3Ω==&$6:2&T= .@:3Ԭ :@% $9%$B.񸦵 L:   6H =3ڮ3='%%@2'D+$æ%D9&Է=L=9ڷ26.'&D9Ի,I& ʬ =3 $ҴBP 9=¸+42 .%D@͸.I%η=- ҵBP2BҴ6-4ǵ'DBǻ-I :,$һ=Vʸ-:ܴ4':Ʈ,@@ʾ,K 4,&Ҽ=W+}Ǹ -4 3$6°,=Bʾ&D',%+@T&2.- 2 &@@+@+ &2DO ¼,-, + .꼵%D@ +6 +,6ξDK&,++ $&4긷$I@'2 Ƽ& 29ԴDK&'%+ Ҿ,=뵸O=',  ʱ$& :9٥DI&& +Ҽ-'B%갷T= -$,ͬ. @@՞DK&' & +ξ ., D3걮Z= -2ժ9DO ΚDH&+$$3$͸ ,2$BD絢a:+4ե,tSs=յI[š =I%+ 42ҵ %6$DR긓d: $3ڦ=%ήLf 2P - =9ڴ 9ٻD^f4. ۪='ήKf2.W-=6踥=ҰOh b3'᷻3'յBdDš 3^,=-9ʰ Pm$]3 %»&%۾9]R΢3b+$:%ʵ3ñRo$R6 %; 2WRڪ.] $.2 &ʷKl'P= %&QQ讔(T4'ӽ=a3ƑH6%DI$L0,R4ԣ@4-I ! 7DêB ( H0赻6.  $ +DҴ4!<(þ(- ! D , %B7E<ٸٙ,BPXpyyVH,% , 2'',9<Ҿ%.H99D!Dj`aas`ptts`j`pys{V99 ǻ.؂xμٮξһ .Hay{st{stXapV`gatsstpdQH'߾,2PXdXRPH79'22 ,'<9Ras{yXgXR`VHaaVQHH.'!'77<9BPP`aaggyjV2,/xk{θļ !'9W'!  !!!!! Ļ !'.277777772.,,%!  !%'''.77777777777777...'%! Ļ!%,2777722,,'%!! !!!!!!!!!!!!! ļ!%',...,,'!!   7qY'           % $ '1,!.!@%! " E6C6* E>(" $%' !%  !"!>&7'*E  .!&   8F!1  4'?%  &  .F''۵:%-3!"7+ %D41.K+4. Z02 .&( +21  ! ,-H  UJ F$J Q  BL6.R!'$+ > @6E*L: ٫FW:7J &1!* 1-%$'E?6+17 <-N % 1-6,<(-0 @&H0 .0 *C>7" $ lۺ'P .m+!?P <<9$W FU( ! 1 &@3$89Wܬu4:+0W +( !9$N'&f: " O6{ " BO7  6 $JD6  Dm*$H 8^ La 3f4&.*[ "!%(@0&3N Q($ $W @H W C'8 $,p@J3 +%2?"9:!0 nXFC0? $Uh1=-iWC4.8* CJcZ-cJQ$3ϜHd^~F6 \{`2'X1:(.7X.7HhWsB:% "s ,nt *$'cb:%^8 6.1& *!0 0CER="x,$Qһ N!?3:, 8C%Z,4<9h,,[4d{& 8+4Z O(94̷F+19BQ-`12 +CC36*<<T,.:I3: x U!B߾a$8.7:Q* F3J&a1\0(0?=R,p3:Ca%B`N% '4 > =^ * j!U @' \9!W"&B3fQ @+R:K> L"L8-Ih0s2$4W>]E37 '-: ] >9',O -$$4 IH!:9@ ^c 8!L B0 LU`*8$VQ2L8I" ",%?1E[B9& >Lߣb i  %-4!2R -4@6P3(=?/*8P>>'BR*\=18 23(( J^ O<H87I:" `86L!@-m040* .,J-=(=]CȺD>41Z.1+ "*B:-2X9@ W= :c '6&*&1$1U$'3  FC.6U0 ' 63,,-7<2 "H"N1ͯCyI%$% $,=%DT E <..>r+8 Q IL"K'*$, 0 % =R (""m$'( L$UEB L -$ .$a:P W  %$\ EDB09a K11P113(!=, 348d%-*,T=3@@Q E^"J( D^` @ 42  -&:0D*$ 2V o 1- Wo(%6 %9  %'!-6,29n.+80 oTI2.1390$  3RL.&68 &0 +$"+J(?˂:2I !. 2WW!CK4E++L +:+0E, ,%*.8- 3@DP>h1Q%0>6&- b'!-W "': gB+(( ,8@@7\19T"  '1 9 62>"F 1! "*6,1">'%*B *( <**>0D*2J-. C..$,BB4$ ,d,4C77 &@ I'! D93E"="0EE2B%6+.<A_&!$J&1%K( 0  48=3 &@ 8Iڟ:U +-:"&', .% D(  $"4R T'*'<8, >4 & +!2"- !N33 - (7 +C%?.!"@ .!"?  0":+?E($ !%<$7E4(^$&&!-,739 < ''0"X3T$76 1$I*$&'*%%2 3>.=E ER,9P= @!a`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBABIO3B $  D 2$ 2( d.DNC=.F0I  !1& >F4. !.N <@ "! :+"20% &>%C3(! % - 74%:9,I7 **>N=,&?+ 61XEd,= 3+$: '3`E.*6 4 3 $" L8=3 =+.  E +.77 +(72&* .?C @%  :1+ 0.C2&?,-2:+<0!C,  (3 2(2!+ ,!?( 0   7>D,(''    .EP. &L*+*&1&1,0+,C '$": " .8 , %$$ H ,  3' % %30,$"!$!4 +1<!:4* C % ,%,%7 !7!%"$ %"  DtN:J ,@   %+% ,$+!+9   ?%   I  ( "8@"  +!   !*& ( "   ? F !  2 4,$ 8** - !6 " "-   :4   " ,4*  (61+1% 7"1 6$ -*7"''$   >  "E2'."   * % %   &  , *6D   &*2-   "    .= - '  -     !'$   &   ! 4 ( - ,!%%$  *      + 8(! 3?''$+$  '! +Fp   &  !+<  &'(? D & ,('  ! -   -   +* $ &$ !% & *0 $  "   6"  ,%.&  2!"   " &%    '. '     $,  *  GUr   !!    !" +! 0  1&   %$ 8"%   "!"" &  !$       $           (    * "  ! &  (-     !    ( H    "  +  ( *    !       $           -     ( !   :  .! "  &( *  &   &3   - & - % '  ,! $  % Im-  7   '  %   $   $  4"        ""          "$$!1   !"   ,  -,   '   !    +  JJطj' * !      " %+   !$ ( %  " !  * *    $  .   ""!!  !! (    !    (    $$(    -    !  '     K$Ɯ   '                      $ %"    &                            "  !  '  -   L^      !                                                $!      $           *        Mg+    !              &         "        %         %      !                   N4  " $                 " $    &               "                              !    O !                                          $                "      *                P̍1O                                   "                                                  Qб$                                                                            R [                                                                                      ST                                                                                               T                                                            "                             U8Jl                "                                      %                                         VK                                                                                                  W^;                            "                                                                   XwQM                                                                                                      Y:TI                                                                                                                    Z=Yh                                                                                                          [̪C                                                                                                               \U                                                                                                                       ]x                                                                                                                      ^K9R                                                                                          _zg                         `tz)aH]rhކ<b c' kjihgfedc|B;sormelus.pisteetpbdaWE]I$=KIGECA}{ywusqo}ey qr  T\T97531/-+)'%#!߼ܰ²߅߂җߟߝߛߙߗߕߓߑߏƔƅƐ߉ыэяѱѳѵѷѹѻѽѿѡѣѥߩߧƼƭƸQSUWY[]_ACEGIKMAdu`y{}acegikmo  13579;=1/=%;L%#!ߔҍҐ҉ߟυϕɉߏߍߋ߉߇߅߃߁߿߽߻߹߷Ƭƽƨbe`ѣѥѧѩѫѭѯQSUWY[]QOTEPIKMOqsuwy{}aceig|mx ?$5 9;=?!#%')+-/ёѓѕїљћѝџсух߉߇ƜƍƘ߱ѳѵѷѹѻѽѿѡѣѥѧѩѫѭߡ_LUI<%SQOMKIGECA}{ywg}i gca 13579;=?!#%)'<-8ёѓѕߙߗƌƝƈ߁ухчbfϋ9ыэяѱѳѵѷѹѻѽ߱߯ƴƥưߩѫѭѯQSUWY[]_ACEIG\MXqsuwy{}acegikma 13597,=(!#%')+-/߬ߑѓѕїљћѝџсухчщыэ߁߿Ϩǵ˭þѾ߭߫ߩߧߥߣߡ_][YWG]E$!.DJ$*A}{ywusqotepikmo  TQ^4:TZ1/-+)'%#!bgfDݑѓѕїљћѝߑߏƔƅƐ߉ыэяѱѳѵѷѹѻѽѿѡѣѥߩߧƼƭƸQSUWY[]_ACEGIKMAdu`y{}acegikmo  13579;=1/4%0)+-/ߟƄƕƀߙћѝџсухчщыэяѱѳѵ߹߷ƬƽƨߡѣѥѧѩѫѭѯQSUWY[]QOTEPIKMOqsuwy{}aceig|mx ?$5 9;=?!#%')+-/bh|ёѓѕїљћѝџсух߉߇ƜƍƘ߱ѳѵѷѹѻѽѿѡѣѥѧѩѫѭߡ_DU@Y[]_ACEGIKMOqsuywl}hacegikmo 13579;=?!#%)'<-8ёѓѕߙߗƌƝƈ߁ухчщыэяѱѳѵѷѹѻѽ߱߯ƴƥưߩѫѭѯQSUWY[]_ACEIG\MXqsuwy{}acegikma 13597,=(!#%')+-/bi?ߑѓѕїљћѝџсухчщыэ߁߿ƤƵƠ߹ѻѽѿѡѣѥѧѩѫѭѯQSUYWL]HACEGIKMOqsuwy{}qoye{ l|r  13579;=?!#%')+-!ёѓѕїљћѝߑߏƔƅƐ߉ыэяѱѳѵѷѹѻѽѿѡѣѥߩߧƼƭƸQSUWY[]_ACEGIKMAdu`y{}acegikmo  13579;=1/4%0bj)+-/ߟƄƕƀߙћѝџсухчщыэяѱѳѵ߹߷ƬƽƨߡѣѥѧѩѫѭѯQSUWY[]QOTEPIKMOqsuwy{}aceig|mx ?$5 9;=?!#%')+-/ёѓѕїљћѝџсух߉߇ƜƍƘ߱ѳѵѷѹѻѽѿѡѣѥѧѩѫѭߡ_DU@Y[]_ACEGIKMOqsuywl}hacegikmo bk+13579;=?!#%)'<-8ёѓѕߙߗƌƝƈ߁ухчщыэяѱѳѵѷѹѻѽ߱߯ƴƥưߩѫѭѯQSUWY[]_ACEIG\MXqsuwy{}acegikma 13597,=(!#%')+-/ߑѓѕїљћѝџсухчщыэ߁߿ƤƵƠ߹ѻѽѿѡѣѥѧѩѫѭѯQSUYWL]HACEGIKMOqsuwy{}qoue} l|rb <l  TQ^4:TZ1/-+)'%#!:ёѓѕߙߗƌƝƈ߁ухчщыэяѱѳѵѷѹѻѽ߱߯ƴƥưߩѫѭѯQSUWY[]_ACEIG\MXqsuwy{}acegikma 13597,=(!#%')+-/ߑѓѕїљћѝџсухчщыэ߁߿ƤƵƠ߹ѻѽѿѡѣѥѧѩѫѭѯQSUYWL]HACEGIKMOqsuwy{}qoue} l|rlHm9~}|{zyxwvutsrqponm sormelus.splnhH *********************************************************************** ** Sormelus v1.1 ** * by * ** K-P ** *********************************************************************** * $VER: Sormelus 1.1 version 57 include "dh0:asm/include/keys.i" Openlib = -$228 Closelib = -$19e Open = -$1e Clomlose = -$24 Read = -$2a Write = -$30 bplcon = $2200!1<<15!1<<10 section moppi,code_p movem.l d0-a6,-(sp) bsr hippoflash lea scorebuffer(pc),a0 ;lista talteen lea varalista,a1 move #sbuflen+4-1,d0 kopi move.b (a0)+,(a1)+ dbf d0,kopi bsr loadscores move #4*50,d1 bsr delay bsr makeres lea $dff000,a6 move 2(a6),dmasave move $1c(a6),irqsave bsr vblank move #$7ff,$96(a6) move #1<<15!1<<9!1<<8!1<<7!1<<6,$96(a6) move #$7fff,$9a(a6) move #1<<15!1<<5!1<<14lp`!1<<3,$9a(a6) bsr init_timer move.l $68.w,lev2save move.l #lev2int,$68.w lea $144(a6),a0 ;Spritet vekke ja kki moveq #7,d0 clop clr.l (a0)+ addq.l #4,a0 dbf d0,clop movem.l d0-a6,-(sp) clr.l song lea song+4(pc),a0 lea samp,a1 bsr p41_init movem.l (sp)+,d0-a6 bsr clearscreen lea screen,a0 move.l a0,d0 move d0,bplp+6 swap d0 move d0,bplp+2 bsr trip1 move.l #cop,$80(a6) move d0,$88(a6) move.l #intr1,intp move.l $6c.w,lev3save move.l #lev3int,$6c.w st lqnomus tst.b loaderf beq.b jaaha bsr loaderror ;latausvirhe bra.b okay jaaha tst.b tarkf beq.b okay bsr tarkerr ;User's got -100 IQ lea scorebuffer(pc),a1 ;puhdas lista kehiin lea varalista,a0 move #sbuflen+4-1,d0 kopi2 move.b (a0)+,(a1)+ dbf d0,kopi2 okay bsr vaanto bsr survo_nimi bra.b mainloop alko bsr writeroff mainloop clr wrong ;putsataan vanhat clr.l time clr collo lea t_alku(pc),a0 moveq #15-1,d2 lea screen,a2 clr collo bsr writeron bsr clriollon mouse0 bsr vblank cmp.b #k_esc,key beq vekke cmp.b #k_return,key beq vaihto cmp.b #k_f4,key beq infoa cmp.b #k_f2,key beq helppia cmp.b #k_f1,key beq tuloslista cmp.b #k_f3,key bne.b vaack tabulo cmp.b #k_f3-1,key bne.b tabulo not.b nomus2 vaack cmp.b #k_space,key bne.b mouse0 bsr writeroff bsr teddybear tst.b d7 ;escaped? bne.w mainloop bsr do_tulos bra mainloop vekke bsr writeroff bsr remove_timer move.l lev2save(pc),$68.w move.l lev3save(pclsx}i),$6c.w move irqsave(pc),d0 move #$7fff,$9a(a6) or #$c000,d0 move d0,$9a(a6) bsr p41_end move dmasave(pc),d0 move #$7ff,$96(a6) or #$8000,d0 move d0,$96(a6) move.l 4.w,a0 move.l $9c(a0),a0 move.l $26(a0),$80(a6) move #0,$88(a6) bsr remres bsr savescores movem.l (sp)+,d0-a6 moveq #0,d0 rts vblank btst #0,$dff005 beq.b vblank vbonk btst #0,$dff005 bne.b vbonk rts delay bsr.b vblank dbf d1,delay moveq #0,d1 rts collon move #$8000,colv clo bsr.b vblanltX~22k bsr.b vblank add #$111,collo cmpi #$eee,collo bne.b clo rts clearscreen btst #14,2(a6) bne.b clearscreen move.l #screen,$54(a6) clr $66(a6) move.l #$01000000,$40(a6) move #2*256*64+20,$58(a6) bloblb btst #14,2(a6) bne.b bloblb rts ************************************************************************ ** Tekstitoiminnot ** ************************************************************************ helppia lea t_hellu3p(pc),a0 * Ohjeita bra.b prant infoa lea infot(pc),a0 prant bsr writeroff moveq #15-1,d2 lea screen,a2 clr collo bsr writeron bsr.b collon spaze cmp.b #k_space,key bne.b spaze bsr writeroff lea t_alku(pc),a0 moveq #15-1,d2 lea screen,a2 clr collo bsr writeron bsr.w collon bra vaack tuloslista * Tuloslista lea scorebuffer(pc),a0 lea tulosbuf,a1 move.l #sbuflen,d0 copyl move.b (a0)+,(a1)+ dbf d0,copyl lea tulosbuf,a0 moveq #99-1,d0 move.b #'0',d1l vr, move.b #'1',d2 tuloop lea 38(a0),a0 move.b d1,(a0)+ move.b d2,(a0)+ addq #1,d2 cmp.b #'9',d2 ble.b nook addq #1,d1 move.b #'0',d2 nook dbf d0,tuloop moveq #0,d7 lea tulosbuf,a3 move.b tulosposition(pc),d7 move.l d7,d6 subq #1,d6 mulu #11*40,d6 add.l d6,a3 dotulos bsr writeroff lea tulosalku(pc),a0 moveq #1-1,d2 lea screen,a2 clr collo bsr writeron move.l a3,a0 moveq #11-1,d2 lea screen+2*17*80,a2 bsr writeron lea tulosohjeet(pc),a0 moveq #2-1,d2 ll wk;ea screen+13*17*80,a2 bsr writeron bsr collon tulosloop cmp.b #k_up,key beq.b lista_up cmp.b #k_down,key beq.b lista_down ctulos cmp.b #k_space,key bne.b tulosloop move.b d7,tulosposition bsr writeroff lea t_alku(pc),a0 moveq #15-1,d2 lea screen,a2 clr collo bsr writeron bsr collon bra vaack lista_up subq #1,d7 bne.b jepup moveq #1,d7 bra.b ctulos jepup lea -11*40(a3),a3 bra dotulos lista_down addq #1,d7 cmp.b #9+1,d7 bne.b jepdown moveq #9,dl xXE7 bra.b ctulos jepdown lea 11*40(a3),a3 bra dotulos ************************************************************************ ** Tason vaihto ** ************************************************************************ vaihto moveq #2-1,d5 lea oho1(pc),a4 move.b #'?',(a4)+ move.b #'?',(a4)+ subq #2,a4 lea oho(pc),a0 moveq #1-1,d2 lea screen+11*17*80,a2 bsr writeron move #$f00,d7 gimme bsr vblank move d7,back2c l ym0eor #$f0,d7 bsr rawkeycon beq.b gimme cmpi.b #'0',d0 blo.b gimme cmpi.b #'9'+1,d0 bhs.b gimme move.b d0,(a4)+ lea oho(pc),a0 moveq #1-1,d2 lea screen+11*17*80,a2 bsr writeron dbf d5,gimme move.b -(a4),d1 move.b -(a4),d0 cmp.b #'0',d0 bne.b vok cmp.b #'0',d1 bne.b vok move.b #'2',(a4)+ move.b #'0',(a4)+ move.b #20-1,kys bra.b vokk vok and.b #$f,d0 and.b #$f,d1 mulu #10,d0 add d1,d0 subq #1,d0 move.b d0,kys vokk bsr survo_nimi lea oho2(pc),a0 l zCQlea screen+14*17*80,a2 bsr writeron lea oho(pc),a0 lea screen+11*17*80,a2 bsr writeron bra vaack vaanto moveq #0,d0 move.b kys(pc),d0 ;kysytaan n nappainta addq #1,d0 bsr convert lea oho1(pc),a0 eeh999 move.b d1,(a0)+ move.b d2,(a0) rts ************************************************************************ ** Lopputulos ** ************************************************************************ do_tulos lea l{Xttime2(pc),a0 lea a_aika(pc),a1 moveq #6-1,d0 dolop move.b (a0)+,(a1)+ dbf d0,dolop move.l time(pc),d0 bsr screw_it2 lea time2(pc),a0 lea a_koko(pc),a1 moveq #6-1,d0 dolop2 move.b (a0)+,(a1)+ dbf d0,dolop2 lea a_virh(pc),a0 move wrong(pc),d0 bsr.w convert cmp.b #'0',d1 bne.b wpr exg d1,d2 move.b #' ',d2 wpr move.b d1,(a0)+ move.b d2,(a0)+ wpr2 moveq #0,d0 ;Toimiva viritelm.. moveq #0,d1 move wrong(pc),d0 mulu #100,d0 move.b kys(pc),d1 addq #1,d1 move dl|9_1,d2 mulu #100,d1 sub d0,d1 divu d2,d1 move #100,d0 sub d1,d0 bsr convert lea a_vpro+4(pc),a0 ;tehdn prosenttiluku move.b d0,d3 move.b d1,d4 move.b d2,d5 ror #8,d0 swap d0 swap d1 or.l d1,d0 ror #8,d2 or d2,d0 or.b #'%',d0 cmp.b #'0',d3 bne.b prn lsl.l #8,d0 cmp.b #'0',d4 bne.b prn lsl.l #8,d0 prn moveq #4-1,d1 prl tst.b d0 bne.b prlo move.b #' ',d0 prlo move.b d0,-(a0) lsr.l #8,d0 dbf d1,prl lea arviot(pc),a0 ;Kosh moveq #6-1,d2 lea screen+4*l}h17*80,a2 bsr writeron bsr kosaus bsr do_hiscores rts convert moveq #0,d1 ; Hexaluku -> ASCII moveq #0,d2 moveq #0,d3 divu #100,d0 swap d0 move d0,d1 clr d0 swap d0 divu #10,d1 swap d1 move d1,d2 clr d1 swap d1 or.b #$30,d0 or.b #$30,d1 or.b #$30,d2 rts ************************************************************************ ** Ajanmittaus ** **************************************************************l~F?********** contime movem.l d0-d4/a0-a4,-(Sp) move.l time(pc),d0 bsr screw_it lea titext+8(pc),a0 moveq #0,d0 move.b nleft(pc),d0 bsr convert move.b d1,(a0)+ move.b d2,(a0) lea titext+30(pc),a0 moveq #0,d0 move wrong(pc),d0 bsr convert move.b d1,(a0)+ move.b d2,(a0) lea titext(pc),a0 ;Sullotaan aika moveq #1-1,d2 lea screen+14*17*80,a2 bsr writeron movem.l (sp)+,d0-d4/a0-a4 rts screw_it2 ;aika pajkalleen moveq #0,d5 move wrong(pc),d5 mulu #3,d5 bra.blo\ ehe screw_it moveq #0,d5 ehe lea time2(pC),a1 divu #100,d0 swap d0 moveq #0,d4 move d0,d4 clr d0 swap d0 add d5,d0 bsr convert move.b d0,(a1)+ * 100.00 move.b d1,(a1)+ * 010.00 move.b d2,(a1)+ * 001.00 move.b #'.',(a1)+ move.l d4,d0 bsr convert move.b d1,(a1)+ * 000.10 move.b d2,(a1) * 000.01 rts *******************NH*************************************************** ** Peliosuus NH ** *************lWP*********************************************************** teddybear bsr p41_end ;Melut pois move #$1200,bcon+2 ;Loresi move #$1200!1<<15,bcon1+2 move #$1200!1<<15,bcon2+2 move #40,modu+2 move #40,modu+6 move #$eee,collo move.b kys(pc),nleft addq.b #1,nleft move.l #intr2,intp ;oikee interrupti clr collo bsr collon move.l #1*50,d1 ;viivett bsr delay bsr random move.l d0,d1 and.b #$1f,d1 bsr delay lea samplo15(pc),a0 ;pling bsr crash lea lettert(l瀚pc),a0 lea linec1,a1 lea screen+6*17*80,a2 lea asck(pc),a3 lea rawk(pc),a4 lea key(pc),a5 moveq #0,d5 move.b kys(pc),d5 ;Testataan # nppint st d4 move #1<<15!1<<13,$9a(a6) ;aloitetaan ajanotto again bsr random cmp.b d4,d0 ;ei kahta samaa perkkin beq.b again cmpi.b #41-1,d0 ;pysytn oikealla alueella bhs.b again move.b d0,d4 move.b (a4,d0),d1 move.b (a3,d0),d0 move.b d0,9(a0) moveq #0,d2 bsr writeron clr.b (a5) move d1,d0 uusix bsr tskey beq.b uusilXx cmpi.b #k_esc,(a5) beq.w scaped cmpi.b #1,d1 beq.b oikein addq #1,wrong move #$f00,(a1) move #$f00,16(a1) bra.b eij oikein move (a1),d6 and #$f00,d6 bne.b eij move #$f0,(a1) move #$f0,16(a1) eij bsr sam_right move.b d5,nleft dbf d5,again moveq #0,d7 ped move #1<<13,$9a(a6) feida bsr vblank bsr vblank sub #$111,collo bne.b feida move #bplcon,bcon+2 move #bplcon,bcon1+2 move #bplcon,bcon2+2 clr modu+2 clr modu+6 bsr clearscreen noope move.l #intr1,intlCp rts scaped moveq #-1,d7 ;Escape flag clr colv bra ped tskey cmp.b (a5),d2 ;Jeah! Se toimii... beq.b novalid cmp.b (a5),d3 beq.b novalid cmp.b (a5),d0 bne.b wrongk move.b (a5),d2 subq.b #1,d2 move.b d2,d3 moveq #1,d1 rts wrongk move.b (a5),d2 subq.b #1,d2 move.b d2,d3 moveq #-1,d1 rts novalid moveq #0,d1 rts random movem.l d1/d2,-(sp) ;Almost frozen randomgenerator moveq #0,d0 moveq #0,d1 moveq #0,d2 move.b $bfd800,d0 move $dff006,d1 move.b d1,d2 rolr #8,d1 eor.b d2,d0 eor.b d1,d0 movem.l (sp)+,d1/d2 rts sam_right movem.l d0/a0,-(sp) ;Efekti lea samplo1(pc),a0 bsr.b random and #$1f,d0 mulu #8,d0 add.l d0,a0 bsr.w crash movem.l (sp)+,d0/a0 rts ************************************************************************ ** Highscore ** ************************************************************************ do_hiscores spiuze cmp.b #$7f,key bne.b spiuze mol vem.l d0-a6,-(sp) moveq #0,d0 move.b kys(pc),d0 mulu #nextlist,d0 lea scorebuffer(pc),a0 add.l d0,a0 moveq #0,d0 ;lasketaan vanha enkka moveq #0,d1 move.b 1(a0),d1 and.b #$f,d1 mulu #10000,d1 add.l d1,d0 clr.l d1 move.b 2(a0),d1 and.b #$f,d1 mulu #1000,d1 add.l d1,d0 clr.l d1 move.b 3(a0),d1 and.b #$f,d1 mulu #100,d1 add.l d1,d0 clr.l d1 move.b 5(a0),d1 and.b #$f,d1 mulu #10,d1 add.l d1,d0 clr.l d1 move.b 6(a0),d1 and.b #$f,d1 add.l d1,d0 lea time2lV@(pc),a1 ;ja uusi moveq #0,d1 moveq #0,d2 move.b (a1)+,d2 and.b #$f,d2 mulu #10000,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 mulu #1000,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 mulu #100,d2 add.l d2,d1 clr.l d2 addq #1,a1 move.b (a1)+,d2 and.b #$f,d2 mulu #10,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 add.l d2,d1 clr.l d2 cmp d0,d1 ;miten ky?? bhi nonewhi bsr writeroff lea time2(pc),a1 move.b (a1)+,1(a0) move.b (alՄ1)+,2(a0) move.b (a1)+,3(a0) move.b 1(a1),5(a0) move.b 2(a1),6(a0) move.l a0,a4 ;nimen alue tyhjks addq.l #7,a4 moveq #33-1,d3 clrname move.b #' ',(a4)+ dbf d3,clrname clr collo move.l a0,a3 moveq #1-1,d2 lea screen+8*17*80,a2 bsr writeron lea scoretext(pc),a0 moveq #2-1,d2 lea screen+5*17*80,a2 bsr writeron bsr collon moveq #29-1,d3 ;Tilaa nimelle n kirjainta move.l a3,a4 addq.l #8,a3 move.l a3,a5 subq.l #1,a5 spoze bsr vblank bsr rawkeycon beq.lՑb spoze cmp.b #10,d0 ;Return? beq.b finished cmp.b #11,d0 ;Backspace? bne.b nodel addq #2,d3 ;ei lasketa kirjaimeksi subq.l #1,a3 ;ei deletoida aikaa cmp.l a3,a5 bne.b goahead addq #1,a3 goahead move.b #' ',(a3) bra.b yesdel nodel move.b d0,(a3)+ yesdel move.l a4,a0 moveq #1-1,d2 lea screen+8*17*80,a2 bsr writeron dbf d3,spoze finished bsr.b survo_nimi st nosaving ;savetetaan nonewhi bsr writeroff movem.l (sp)+,d0-a6 rts survo_nimi move.b kys(pc),lԐ2d0 mulu #nextlist,d0 lea scorebuffer(pc),a0 add.l d0,a0 lea oho2(pc),a1 moveq #40-1,d0 nlop move.b (a0)+,(a1)+ dbf d0,nlop rts ************************************************************************ ** Sound effects ** ************************************************************************ crash movem.l d0-d5/a1,-(sp) move chanfa(pC),d0 lea chans(pc),a1 move (a1,d0),d4 move 8(a1,d0),d5 move d5,$96(a6) bset #15,d5lߐ move.l (a0)+,d0 movem (a0)+,d1-d2 moveq #$40,d3 move.l d0,(a6,d4) movem d1-d3,4(a6,d4) move #300,d0 dmaw dbf d0,dmaw move d5,$96(a6) move #300,d0 dmaw2 dbf d0,dmaw2 move #1,4(a6,d4) subq #2,chanfa bpl.b cok move #6,chanfa cok movem.l (sp)+,d0-d5/a1 rts kosaus move $1c(a6),d3 or #$c000,d3 move #$7fff,$9a(a6) move #$fff,back1 move #$fff,back2 move #$fff,back3 move #$fff,back4 move #$fff,back5 move #$fff,back6 move #$fff,collo move #$fff,col1+2 move #$lãf,$96(a6) lea jyms,a0 move.l a0,$a0(a6) move.l a0,$b0(a6) move.l a0,$c0(a6) move.l a0,$d0(a6) move #(s1-jyms)/2,d0 move #750,d1 moveq #64,d2 movem d0-d2,$a4(a6) movem d0-d2,$b4(a6) subq #1,d1 movem d0-d2,$c4(a6) addq #2,d1 movem d0-d2,$d4(a6) move #$800f,$96(a6) moveq #25,d1 bsr delay jlop moveq #4-1,d5 jymslop bsr vblank bsr do3d subq #1,d5 bpl jymslop bsr make3dc sub #$111,back1 sub #$111,back2 sub #$111,back3 sub #$111,back4 sub #$111,back5 sub #$lt111,back6 bne.b jlop move #$f,$96(a6) move #$eee,collo move d3,$9a(a6) rts ************************************************************************ ** Hires writer ** ************************************************************************ writeron movem.l d0-d3/a0-a4,-(sp) st no3d lea font,a3 move.l a2,a4 lo2 moveq #40-1,d3 ;# chars per line lo moveq #0,d0 move.b (a0)+,d0 sub.b #' ',d0 divs #20,d0 move d0,d1 clr l d0 swap d0 add d0,d0 mulu #40*16,d1 add d0,d1 lea (a3,d1),a1 move.l a4,a2 moveq #$f,d0 copl move (a1)+,(a2)+ lea 38(a1),a1 lea 78(a2),a2 dbf d0,copl addq #2,a4 ;Next place dbf d3,lo lea 80*16(a4),a4 ;Next line dbf d2,lo2 sf no3d movem.l (sp)+,d0-d3/a0-a4 rts writeroff clr colv wrf bsr vblank bsr vblank sub #$111,collo bne.b wrf bsr clearscreen rts ************************************************************************ ** Rawkey l!ƣlconvert ** ************************************************************************ * Palauttaa D0:ssa painetun nppimen ASCII-koodin. * Jos Z, ei tunnistettavia nppimi painettu. rawkeycon lea key(pc),a0 lea asck(pc),a1 lea rawk(pc),a2 moveq #43,d1 keyloop move.b (a2)+,d0 bsr.b tstkey bne.b nok move.b (a1)+,d0 bra.b nak nok addq.l #1,a1 dbf d1,keyloop moveq #0,d0 nak rts tstkey cmp.b (a0),d0 bne.b nokey subq.b #1,d0 tstkey2 cmp.b (a0),d0l"P< bne.b tstkey2 moveq #0,d0 nokey rts ************************************************************************ ** Loading & Saving ** ************************************************************************ loadscores movem.l d0-a6,-(sp) moveq #0,d0 lea dosname(pc),a1 move.l 4.w,a6 jsr openlib(a6) move.l d0,a6 move.l d0,dosb move.l #scorefile,d1 move.l #1005,d2 jsr open(a6) beq.b loaderr move.l d0,d4 move.l #scorebuffl#Xer,d2 move.l #sbuflen+4,d3 jsr read(a6) sf loaderf move.l d4,d1 jsr close(a6) bsr tstark orf movem.l (sp)+,d0-a6 rts loaderr st loaderf bra.b orf savescores bsr tslas move.l dosb(pc),a6 tst.b nosaving beq.b saverror move.l #scorefile,d1 move.l #1006,d2 jsr open(a6) beq.b saverror move.l d0,d4 move.l #scorebuffer,d2 move.l #sbuflen+4,d3 jsr write(a6) move.l d4,d1 jsr close(a6) saverror move.l a6,a1 move.l 4.w,a6 jsr closelib(a6) rts tstark bsr sodgl$ߪ{xe bsr tslasku cmp.l d0,d1 bne.b nip sf tarkf rts nip st tarkf rts tarkerr clr collo bsr clearscreen lea nape_text(pc),a0 moveq #4-1,d2 lea screen+6*17*80,a2 bsr writeron bsr collon spp cmpi.b #k_space,key bne.b spp bsr writeroff rts ;on npelity listaa loaderror clr collo bsr clearscreen lea err_text(pc),a0 moveq #4-1,d2 lea screen+6*17*80,a2 bsr writeron bsr collon spa cmpi.b #k_space,key bne.b spa bsr writeroff rts tslas bsr tslasku move.ll%rc d0,(a0) bsr sodge rts tslasku lea scorebuffer(pc),a0 move #sbuflen-1,d1 moveq #0,d0 moveq #0,d2 moveq #0,d3 ch move.b (a0)+,d2 eor.b #1,d3 bne.b chc not.b d2 chc add.l d2,d0 dbf d1,ch move.l (a0),d1 ;vanha summa rts sodge lea scorebuffer(pC),a0 move #sbuflen-1,d0 move.b #-1,d1 moveq #0,d3 sl not.b d1 bne.b slll not.b (a0) slll not.b d3 bne.b sll eor.b d0,(a0) sll move.b d0,d2 not.b d2 eor.b d2,(a0)+ dbf d0,sl rts ******************************************l&Q****************************** ** Copper effect ** ************************************************************************ colortubes not tubetobe ;viivytyst bne.b tobe not tubetobe2 bne.b tobe lea tube+6,a0 lea tube2+6,a1 moveq #9-1,d0 tlobo move (a0),(a1) addq #8,a0 addq #8,a1 dbf d0,tlobo cmpi #tubesamount,tubecount ;Menik ympri? bne.b notyet move.l #tubecols,tubecolp clr tubecount notyet lea tube+6,a0 l'2U;move.l tubecolp(pc),a1 lea tubep(pc),a2 tst (a2) beq.b nextube moveq #9,d0 tubelop bsr fadedo addq #8,a0 addq #2,a1 dbf d0,tubelop subq #1,(a2) tobe rts nextube subq #1,tubedelay bne.b tobe move #150,tubedelay add.l #18,tubecolp move #$f,(a2) addq #1,tubecount bra.b tobe fadedo movem.l d0-d5,-(sp) move (a0),d0 move d0,d1 move d0,d2 move (a1),d3 move d3,d4 move d3,d5 and #$f,d0 and #$f0,d1 and #$f00,d2 and #$f,d3 and #$f0,d4 and #$f00,d5 bsr.b cl(0q<&blu bsr.b cgre bsr.b cred or d0,d1 or d1,d2 move d2,(a0) movem.l (sp)+,d0-d5 xit rts cred cmpi d2,d5 blo.b credb beq.b xit add #$100,d2 rts credb sub #$100,d2 rts cgre cmpi d1,d4 blo.b cgreb beq.b xit add #$10,d1 rts cgreb sub #$10,d1 rts cblu cmpi d0,d3 blo.b cblub beq.b xit addq #1,d0 rts cblub subq #1,d0 rts ************************************************************************* ** Lame vecs ** ***l)`N********************************************************************** trip1 lea screen+$5000,a0 lea 2*$2800(a0),a1 move.l a0,draw1 move.l a1,d0 move.w d0,bplp1+6 swap d0 move.w d0,bplp1+2 wblblb btst #14,2(a6) bne.b wblblb move.l draw1(pc),$54(a6) clr $66(a6) move.l #$01000000,$40(a6) move #3*256*64+40,$58(a6) wblblbb btst #14,2(a6) bne.b wblblbb rts do3d movem.l d0-a6,-(sp) dodd btst #14,2(a6) bne.b dodd move.l draw1(pc),a0 lea 19+44*80(a0),a0 move.l a0,$54(a6)l*'+̠ move #36,$66(a6) move.l #$01000000,$40(a6) move.w #169*64+22,$58(a6) lea xrot1(pc),a0 subq #2,(a0) subq #4,2(a0) subq #2,4(a0) bsr cangle2 lea xrot2(pc),a0 addq #2,(a0) addq #2,2(a0) addq #4,4(a0) bsr cangle lea xrot3(pc),a0 subq #4,(a0) subq #2,2(a0) subq #2,4(a0) bsr cangle2 lea xrot4(pc),a0 addq #4,(a0) addq #2,2(a0) addq #4,4(a0) bsr cangle lea xrot5(pc),a0 subq #4,(a0) subq #4,2(a0) subq #2,4(a0) bsr cangle2 lea vec_p(pc),a0 move.l #cube_coords,(l+X a0)+ move.l #cube_con,(a0)+ move.l #cube_rot,(a0)+ move xrot1(pc),(a0)+ move yrot1(pc),(a0)+ move zrot1(pc),(a0)+ bsr.w tilt lea vec_p(pc),a0 move.l #cube2_coords,(a0)+ addq.l #8,a0 move xrot2(pc),(a0)+ move yrot2(pc),(a0)+ move zrot2(pc),(a0)+ bsr.w tilt lea vec_p(pc),a0 move.l #cube3_coords,(a0)+ addq.l #8,a0 move xrot3(pc),(a0)+ move yrot3(pc),(a0)+ move zrot3(pc),(a0)+ bsr.w tilt lea vec_p(pc),a0 move.l #cube4_coords,(a0)+ addq.l #8,a0 move xrot4(pc),(al,C0)+ move yrot4(pc),(a0)+ move zrot4(pc),(a0)+ bsr.w tilt lea vec_p(pc),a0 move.l #cube5_coords,(a0)+ addq.l #8,a0 move xrot5(pc),(a0)+ move yrot5(pc),(a0)+ move zrot5(pc),(a0)+ bsr.w tilt move.l draw1(pC),d0 move.w bplp1+2,d1 swap d1 move.w bplp1+6,d1 move.l d1,draw1 move d0,bplp1+6 swap d0 move d0,bplp1+2 movem.l (sp)+,d0-a6 rts cangle moveq #3-1,d0 che cmpi #720,(a0) blo.b nox clr (a0) nox addq #2,a0 dbf d0,che rts cangle2 moveq #3-1,d0 cheg tst (a0l-c) bpl.b noxg move #720,(a0) noxg addq #2,a0 dbf d0,cheg rts draw1 dc.l 0 tilt movem.l vec_p(pc),a0 movem.l vec_p+8(pc),a3 lea pers(pc),a6 lea sin(pc),a1 lea 180(a1),a2 movem (a0)+,d0-d1 next move vec_p+16(pc),d2 move (a2,d2),d3 ;cos move (a1,d2),d2 ;sin move d2,d4 move d3,d5 ; x1 = x cos(a) - y sin(a) muls d0,d3 muls d1,d2 sub.l d3,d2 add.l d2,d2 swap d2 ;d2 = x1 ; y1 = y cos(a) + x sin(a) muls d1,d5 muls d0,d4 add.l d4,d5 add.l d5,d5 swap d5 ;d5 = yl. \U1 move (a0)+,d0 move vec_p+12(pc),d1 move (a2,d1),d4 ;cos move (a1,d1),d1 ;sin move d4,d7 move d1,d6 ; z1 = z cos(b) + y1 sin(b) muls d0,d4 muls d5,d1 add.l d4,d1 add.l d1,d1 swap d1 ;d1 = z1 move vec_p+14(pc),d3 move (a2,d3),d4 ;cos move (a1,d3),d3 ;sin move d3,a4 move d4,a5 ; x2 = x1 cos(c) + z1 sin(c) muls d2,d4 muls d1,d3 add.l d4,d3 add.l d3,d3 swap d3 ; y2 = y1 cos(b) - z sin(b) muls d5,d7 muls d0,d6 sub.l d6,d7 add.l d7,d7 swap d7 l/ ; z2 = z1 cos(c) - x1 sin(c) move a4,d5 move a5,d6 muls d1,d6 muls d2,d5 sub.l d5,d6 ; add.l d6,d6 swap d6 add vec_p+18(pc),d6 Add d6,d6 Move (a6,d6),d6 ;perspektiivi Muls d6,d3 Muls d6,d7 Add.l d3,d3 Swap d3 ; Add.l d7,d7 Swap d7 add #160*2,d3 add #128,d7 move d3,(a3)+ move d7,(a3)+ movem (a0)+,d0-d1 cmpi.w #$9999,d0 bne next lea $dff002,a6 movem.l vec_p+4(pc),a2/a3 lea pers(pc),a4 lea mulutable(pc),a5 movem (a2)+,d0/d2 moveq #-1,d5 ;init lil0F%nedraw moveq #80,d4 dwb btst #14,(a6) bne.b dwb move d5,$44-2(a6) move d5,$72-2(a6) move #$8000,$74-2(a6) move d4,$60-2(a6) move d4,$66-2(a6) dol movem (a3,d0),d0/d1 movem (a3,d2),d2/d3 move.l draw1(pc),a0 bsr drawline movem (a2)+,d0/d2 tst d0 bpl dol subq #2,a6 rts vec_p dc.l cube_coords ;Koordikset dc.l cube_con ;Kytkennt dc.l cube_rot ;Pyritetyt koordikset xrot dc 0 yrot dc 0 zrot dc 0 depth dc 80 c macro dc \1*4,\2*4 endm xrot1 dc 0 yrot1 dc 0 zrol1lLt1 dc 0 cube_coords Dc 30,30,30 ;koordikset Dc -30,30,30 Dc -30,-30,30 Dc 30,-30,30 Dc 30,30,-30 Dc -30,30,-30 Dc -30,-30,-30 Dc 30,-30,-30 dc $9999 cube_rot ds.b (cube_rot-cube_coords)/3*2 ;Rotated coords cube_con c 0,1 c 1,2 c 2,3 c 3,0 c 4,5 c 5,6 c 6,7 c 7,4 c 0,4 c 1,5 c 2,6 c 3,7 dc -1 xrot2 dc 0 yrot2 dc 0 zrot2 dc 0 cube2_coords Dc -80,-80,30 Dc -140,-80,30 Dc -140,-140,30 Dc -80,-140,30 Dc -80,-80,-30 Dc -140,-80,-30 Dc -140,-140,-30 Dc -80,-1l2ł40,-30 dc $9999 xrot3 dc 0 yrot3 dc 0 zrot3 dc 0 cube3_coords Dc 140,140,30 ;koordikset Dc 80,140,30 Dc 80,80,30 Dc 140,80,30 Dc 140,140,-30 Dc 80,140,-30 Dc 80,80,-30 Dc 140,80,-30 dc $9999 xrot4 dc 0 yrot4 dc 0 zrot4 dc 0 cube4_coords Dc -140,140,30 ;koordikset Dc -80,140,30 Dc -80,80,30 Dc -140,80,30 Dc -140,140,-30 Dc -80,140,-30 Dc -80,80,-30 Dc -140,80,-30 dc $9999 xrot5 dc 0 yrot5 dc 0 zrot5 dc 0 cube5_coords Dc 140,-80,30 ;koordikset Dc 80,-80,30 Dcl3CUe% 80,-140,30 Dc 140,-140,30 Dc 140,-80,-30 Dc 80,-80,-30 Dc 80,-140,-30 Dc 140,-140,-30 dc $9999 ************************************************************************* * Line Routine for one plane, by TIP * ************************************************************************* DL_Width = 40 DL_Fill =0 ;0: NOFILL 1:FILL * Needs: * a0 planept * a5 mulutable * a6 $dff002 * d0/d1 x,y start pos * d2/d3 x,y end pos * Kills: * d0-d4/a0-al4}n1 (+d5 in Fill Mode) ifeq DL_Fill DL_MInterns = $ca else DL_MInterns = $4a endc ifne DL_Fill SML = 2 else SML = 0 endc drawline cmp d1,d3 ;draw bge.b .y1ly2 exg d0,d2 exg d1,d3 .y1ly2 sub d1,d3 add d1,d1 add (a5,d1),a0 moveq #0,d1 sub d0,d2 bge.b .xdpos addq #2,d1 neg d2 .xdpos moveq #$f,d4 and d0,d4 ifne DL_Fill move.b d4,d5 not.b d5 endc lsr #3,d0 add d0,a0 ror #4,d4 or #$b00+DL_MInterns,d4 swal5 w ip d4 cmp d2,d3 bge.b .dygdx addq #1,d1 exg d2,d3 .dygdx add d2,d2 move d2,d0 sub d3,d0 addx d1,d1 move.b .oktants(pc,d1),d4 swap d2 move d0,d2 sub d3,d2 moveq #6,d1 lsl d1,d3 add #$42,d3 lea $52-2(a6),a1 ; WARNING: if you use fastmem and an extreme DMA-Access (e.g. 6 ; planes and copper), you should insert a tst.b (a6) here (for the ; shitty AGNUS-BUG). .wb btst d1,(a6) bne.b .wb ifne DL_Fill bchg d5,(a0) l6<0 endc move.l d4,$40-2(a6) move.l d2,$62-2(a6) move.l a0,$48-2(a6) move d0,(a1)+ move.l a0,(a1)+ move d3,(a1) rts .oktants dc.b SML+1,SML+1+$40 dc.b SML+17,SML+17+$40 dc.b SML+9,SML+9+$40 dc.b SML+21,SML+21+$40 ************************************************************************ ** VertB Interrupt ** ************************************************************************ lev3int movem.l d0-a6,-(sp) movl7="e collo,back2b move collo,back2c bsr make3dc move.l intp(pc),a0 jsr (a0) bsr colortubes movem.l (sp)+,d0-a6 move #1<<5,$dff09c rte intr1 movem.l d0-a6,-(sp) tst.b nomus beq.b nom tst.b nomus2 bne.b nom2 lea $dff000,a6 bsr p41_music move #260,d0 tit dbf d0,tit bsr p41_setrepeat nom tst.b no3d bne.w no3dd bsr do3d no3dd movem.l (sp)+,d0-a6 rts nom2 move #$f,$dff096 bra.b nom intr2 bsr contime lea linec1,a0 tst (a0) beq.b naf move (a0),d0 and #$f00,d0 beq.b l8Ҏnof sub #$100,(a0) sub #$100,16(a0) rts nof sub #$10,(a0) sub #$10,16(a0) naf rts make3dc lea col1+2,a0 ;vectorin vrieffecti lea colv(pc),a1 move (a1),d0 btst #15,d0 beq.b doobi lea tubev,a1 doobi bsr fadedo rts ************************************************************************* * Lev2 keyboard interrupt * ************************************************************************* lev2int move.l d0,-(sp) btst #3,$bfel9Dvd01 beq.b xlev2 move $dff01c,d0 btst #3,d0 beq.b xlev2 move.b $bfec01,d0 bset #6,$bfee01 clr.b $bfec01 move.b d0,key nop nop bclr #6,$bfee01 xlev2 move #8,$dff09c move.l (sp)+,d0 rte ************************************************************************* * Ajanottaja, CIA keskeytys * ************************************************************************* init_timer move.l $78.w,lev6save move.l #Lev6Int,$78.w move.b #%01l:pu111111,$bfdd00 ; Stop CIAA interrupts move.b cTime(pc),$bfd500 ; Timer A high byte move.b cTime+1(pc),$bfd400 ; Timer A low byte move.b #%00010001,$bfde00 ; Start Timer A (continuous) move.b #%10000001,$bfdd00 ; Start CIAA Timer A interrupt rts remove_timer move.l lev6save(pc),$78.w move.b #%01111111,$bfdd00 ; Stop CIAA interrupts rts Lev6Int move #$2000,$dff09c ; Clear Lev6 interrupt request bit tst.b $bfdd00 ; CIAA Timer A irq addq.l #1,time rte *********************l;ϰF4**************************************************** * Reset resident * ************************************************************************* makeres move.l 4.w,a6 cmp.l #$80000,a6 blt.b pojs lea resprg(pc),a1 move.l a1,$2a(a6) bsr checksum pojs rts remres move.l 4.w,a6 clr.l $2a(a6) bsr checksum rts checksum lea $22(a6),a0 moveq #0,d0 moveq #22,d1 chksum add (a0)+,d0 dbf d1,chksum not d0 move d0,$52(a6) rts l<@Cy resprg bsr makeres bsr hippoflash bsr remres jmp (a5) ************************************************************************* * Hippologo * ************************************************************************* hippoflash movem.l d0-a6,-(sp) lea $dff000,a6 move 2(a6),adma bsr vblank move #$7ff,$96(a6) move #$83c0,$96(a6) move $1c(a6),airq move #$7fff,$9a(a6) move.l #copp,$80(a6) move #0,$88(a6) lea pic,l=6Sa0 lea $2800(a0),a1 lea $2800(a1),a2 move.l a0,d0 move.l a1,d1 move.l a2,d2 move d0,abplp1+6 swap d0 move d0,abplp1+2 move d1,abplp2+6 swap d1 move d1,abplp2+2 move d2,abplp3+6 swap d2 move d2,abplp3+2 lea hippocols(pc),a0 lea f_cols,a1 move #8-1,d0 move #3,d1 bsr.w fade_init amouse bsr.w vblank bsr.w fade btst #6,$bfe001 bne.b amouse lea f_col(pc),a0 move #$8000,(a0) lea f_cols,a1 move #8-1,d0 moveq #3,d1 bsr.b fade_init moveq #50,d0 alop bsr.w vblanl>>Fk bsr.w fade dbf d0,alop move #$7fff,$9a(a6) move airq(pc),d0 or #$c000,d0 move d0,$9a(a6) move #$7ff,$96(a6) move adma(pc),d0 or #$8000,d0 move d0,$96(a6) move.l 4.w,a0 move.l $9c(a0),a0 move.l $26(a0),$80(a6) movem.l (sp)+,d0-a6 moveq #0,d0 rts fade_init lea f_struc(pc),a4 lea 5*4(a4),a2 move #$f,(a2) lea 2(a2),a3 and #$ff,d1 move d1,(a3) addq #2,a1 move.l a0,(a4)+ move.l a1,(a4)+ move.l a2,(a4)+ move.l a3,(a4)+ move d0,(a4)+ move d1,(a4) rts fade ml?Rove.l d0,-(sp) lea f_struc(pc),a4 movem.l (a4)+,a0-a3 subq #1,(a3) ;speed bne.b f_end tst (a2) ;$f svy eik enemp beq.b f_end subq #1,(a2) movem (a4),d6/d7 move d7,(a3) f_l1 move (a0),d3 btst #15,d3 bne.b f_mode addq.l #2,a0 f_mode move (a1),d0 move d0,d1 move d0,d2 move d3,d4 move d3,d5 and #$f,d0 and #$f0,d1 and #$f00,d2 and #$f,d3 and #$f0,d4 and #$f00,d5 cmp d2,d5 blo.b f_redb beq.b f_gre add #$100,d2 bra.b f_gre f_redb sub #$100,d2 f_gre cmp.b l@Ejd1,d4 blo.b f_greb beq.b f_blu add.b #$10,d1 bra.b f_blu f_greb sub.b #$10,d1 f_blu cmp.b d0,d3 blo.b f_blub beq.b f_xit addq.b #1,d0 bra.b f_xit f_blub subq.b #1,d0 f_xit or d2,d1 or d1,d0 move d0,(a1)+ addq.l #2,a1 dbf d6,f_l1 f_end move.l (sp)+,d0 rts ******************************* * Player v4.1A BETA * * Non-Lev6-version * * Version 410.3 * * 1992 Jarno Paananen * * All rights reserved * ****************************lAv)*** ; ; call 'P41_init' to initialize the playroutine ; A0 --> Modules address ; A1 --> Samples' address/NULL ; A6 --> Customchip baseaddress ($DFF000) ; returns -1 in D0 if not a correct module ; Used regs: A0/A1/A3/D0/D1 ; P41_init lea cn(pc),a3 move.l a0,module-cn(a3) move.l a0,d0 add.l d0,4(a0) add.l d0,8(a0) add.l d0,12(a0) move.l a1,d0 beq.blBژ no_samples_supplied move.l a1,12(a0) no_samples_supplied move.l 12(a0),d0 moveq #0,d1 move.b 2(a0),d1 subq #1,d1 lea 16(a0),a1 lopos add.l d0,(a1) add.l d0,6(a1) lea 16(a1),a1 dbra d1,lopos lea temp0(pc),a1 moveq #20,d0 cl clr (a1)+ dbf d0,cl lea temp1(pc),a1 moveq #20,d0 cl2 clr (a1)+ dbf d0,cl2 lea temp2(pc),a1 moveq #20,d0 cl3 clr (a1)+ dbf d0,cl3 lea temp3(pc),a1 moveq #20,d0 cl4 clr (a1)+ dbf d0,cl4 move.l 4(a0),a4 move.l a4,Patternbase-cn(a3) movelC7.l 8(a0),a1 move.l a1,Positionbase-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp0-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp1-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp2-cn(a3) add (a1)+,a4 move.l a4,32+temp3-cn(a3) move.l a1,Spos-cn(a3) move #63,rowpos-cn(a3) move #6,speed-cn(a3) move #5,speed2-cn(a3) clr speedis1-cn(a3) clr.l Pdelay-cn(a3) clr (a3) or.b #2,$bfe001 move #$f,$96(a6) moveq #0,d0 ;lDk܉έ ; Call 'P40_end' to stop music ; A6 --> Customchip baseaddress ($DFF000) ; P41_end clr $a8(a6) clr $b8(a6) clr $c8(a6) clr $d8(a6) rts ; ; call 'P41_music' every frame to play the music ; A6 --> Customchip baseaddress ($DFF000) ; Used regs: a0-a6/d0-d7 - ; P41_music lea cn(pc),a3 lE moveq #44,d6 moveq #16,d7 move (a3),d4 addq #1,d4 cmpi speed(pc),d4 beq.w Playtime lea temp0(pc),a5 lea $a0(a6),a4 move d4,(a3) moveq #3,d5 lopas tst 30(a5) beq.w contfxdone moveq #$f,d0 and (a5),d0 add d0,d0 move jtab2(pc,d0),d0 jmp jtab2(pc,d0) jtab2 dc contfxdone-jtab2 dc portup-jtab2 dc portdwn-jtab2 dc toneport-jtab2 dc vib2-jtab2 dc TPochvslide-jtab2 dc Vibochvslide-jtab2 dc tremo-jtab2 dc arpeggio-jtab2 dc contfxdone-jtab2 dc volslide-jtab2 dc clF轂ontfxdone-jtab2 dc contfxdone-jtab2 dc contfxdone-jtab2 dc contecommands-jtab2 dc contfxdone-jtab2 contecommands move.b 2(a5),d0 and.b #$f0,d0 cmp #$90,d0 beq.b Retrig cmp #$c0,d0 beq.b notecut cmp #$d0,d0 bne.w contfxdone notedelay moveq #$f,d0 and.b 2(a5),d0 cmpi (a3),d0 bne.w contfxdone move 42(a5),d0 or #$8000,d0 or d0,dma-cn(a3) move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) st setornot-cn(a3) bra.w contfxdone notecut moveq #$f,d0 and.b 2(a5),d0 clGKimpi (a3),d0 bne.w contfxdone clr 8(a4) clr 14(a5) bra.w contfxdone Retrig subq #1,26(a5) bne.w contfxdone move 42(a5),d0 move d0,$96(a6) or #$8000,d0 or d0,dma-cn(a3) move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) moveq #$f,d0 and.b 2(a5),d0 move d0,26(a5) st setornot-cn(a3) bra.w contfxdone arplist dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1 arpeggio move (a3),d0 move.b arplist(pc,d0),d0 beq.b arp0 ror.b #1,d0 bcc.b Arp1 moveq #$lH nf,d0 and.b 2(a5),d0 bra.b arp3 arp0 move 28(a5),d0 move periods(pc,d0),6(a4) bra.w contfxdone arp1 moveq #0,d0 move.b 2(a5),d0 lsr.b #4,d0 arp3 add d0,d0 arp4 add 28(a5),d0 move periods(pc,d0),6(a4) bra.w contfxdone periods dc 856,856,808,762,720,678,640,604,570,538,508,480,453 dc 428,404,381,360,339,320,302,285,269,254,240,226 dc 214,202,190,180,170,160,151,143,135,127,120,113 dc 850,850,802,757,715,674,637,601,567,535,505,477,450 dc 425,401,379,357,337,318,300,284,268,+llI)%253,239,225 dc 213,201,189,179,169,159,150,142,134,126,119,113 dc 844,844,796,752,709,670,632,597,563,532,502,474,447 dc 422,398,376,355,335,316,298,282,266,251,237,224 dc 211,199,188,177,167,158,149,141,133,125,118,112 dc 838,838,791,746,704,665,628,592,559,528,498,470,444 dc 419,395,373,352,332,314,296,280,264,249,235,222 dc 209,198,187,176,166,157,148,140,132,125,118,111 dc 832,832,785,741,699,660,623,588,555,524,495,467,441 dc 416,392,370,350,330,312,294,278,262,247,233,lJ$+\220 dc 208,196,185,175,165,156,147,139,131,124,117,110 dc 826,826,779,736,694,655,619,584,551,520,491,463,437 dc 413,390,368,347,328,309,292,276,260,245,232,219 dc 206,195,184,174,164,155,146,138,130,123,116,109 dc 820,820,774,730,689,651,614,580,547,516,487,460,434 dc 410,387,365,345,325,307,290,274,258,244,230,217 dc 205,193,183,172,163,154,145,137,129,122,115,109 dc 814,814,768,725,684,646,610,575,543,513,484,457,431 dc 407,384,363,342,323,305,288,272,256,242,228,216 dc lKpn204,192,181,171,161,152,144,136,128,121,114,108 dc 907,907,856,808,762,720,678,640,604,570,538,508,480 dc 453,428,404,381,360,339,320,302,285,269,254,240 dc 226,214,202,190,180,170,160,151,143,135,127,120 dc 900,900,850,802,757,715,675,636,601,567,535,505,477 dc 450,425,401,379,357,337,318,300,284,268,253,238 dc 225,212,200,189,179,169,159,150,142,134,126,119 dc 894,894,844,796,752,709,670,632,597,563,532,502,474 dc 447,422,398,376,355,335,316,298,282,266,251,237 dc 223,211,lL199,188,177,167,158,149,141,133,125,118 dc 887,887,838,791,746,704,665,628,592,559,528,498,470 dc 444,419,395,373,352,332,314,296,280,264,249,235 dc 222,209,198,187,176,166,157,148,140,132,125,118 dc 881,881,832,785,741,699,660,623,588,555,524,494,467 dc 441,416,392,370,350,330,312,294,278,262,247,233 dc 220,208,196,185,175,165,156,147,139,131,123,117 dc 875,875,826,779,736,694,655,619,584,551,520,491,463 dc 437,413,390,368,347,328,309,292,276,260,245,232 dc 219,206,195,184,lM`174,164,155,146,138,130,123,116 dc 868,868,820,774,730,689,651,614,580,547,516,487,460 dc 434,410,387,365,345,325,307,290,274,258,244,230 dc 217,205,193,183,172,163,154,145,137,129,122,115 dc 862,862,814,768,725,684,646,610,575,543,513,484,457 dc 431,407,384,363,342,323,305,288,272,256,242,228 dc 216,203,192,181,171,161,152,144,136,128,121,114 volslide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test63 clr 14(a5) clr 8(a4) bra.w contfxdone test63 moveq #64,d0 cmp 14(a5),d0 lNAM: bge.b ncs3 move d0,14(a5) move d0,8(a4) bra.b contfxdone ncs3 move 14(a5),8(a4) bra.b contfxdone TPochVSlide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test64 clr 14(a5) clr 8(a4) bra.b toneport test64 moveq #64,d0 cmp 14(a5),d0 bge.b ncs move d0,14(a5) ncs move 14(a5),8(a4) toneport move 18(a5),d0 beq.b contfxdone move 20(a5),d1 cmp 12(a5),d0 blt.b topoup add d1,12(a5) cmp 12(a5),d0 bgt.b toposetper move d0,12(a5) clr 18(a5) move d0,6(a4) bra.b contfxdone lOs@topoup sub d1,12(a5) cmp 12(a5),d0 blt.b toposetper move d0,12(a5) clr 18(a5) toposetper move 12(a5),6(a4) contfxdone add d6,a5 add d7,a4 dbf d5,lopas cmp speed2(pc),d4 beq.b Preplay rts portup moveq #0,D0 move.b 2(a5),d0 sub d0,12(a5) moveq #113,d0 cmpi 12(a5),d0 ble.b PortaUskip move d0,12(a5) move d0,6(a4) bra.b contfxdone PortaUskip move 12(a5),6(a4) bra.b contfxdone portdwn moveq #0,d0 move.b 2(a5),d0 add d0,12(a5) cmp #856,12(a5) ble.b portadskip mlP/Oove.w #856,d0 move d0,12(a5) move d0,6(a4) bra.b contfxdone portadskip move 12(a5),6(a4) bra.b contfxdone preplay tst Pdelay-cn(a3) beq.b djdj subq #1,Pdelay-cn(a3) rts djdj lea temp0(pc),a5 move.l module(pc),a0 move.l patternbase(pc),a4 moveq #3,d5 loaps tst.b 3(a5) beq.b takeone bmi.b keepsame subq.b #1,3(a5) clr 30(a5) add d6,a5 dbf d5,loaps rts keepsame addq.b #1,3(a5) bra.b dko takeone tst.b 40+1(a5) beq.b takenorm subq.b #1,40+1(a5) move.l 36(a5),alQ"h2 move.l (a2)+,(a5) move.l a2,36(a5) bra.b dko takenorm move.l 32(a5),a2 tst.b (a2) bmi.b offs move.l (a2)+,(a5) move.l a2,32(a5) bra.b dko offs move (a2)+,40(a5) move (a2)+,d0 move.l a2,32(a5) lea (a4,d0),a2 move.l (a2)+,(a5) move.l a2,36(a5) dko st 30(a5) move (a5),d0 and #$1f0,d0 beq.b koto lea (a0,d0),a1 move.l a1,4(a5) move.l 12(a1),14(a5) koto add d6,a5 dbf d5,loaps rts Playtime clr (a3) tst Pdelay2-cn(a3) beq.b djddj subq #1,Pdelay2-cn(a3) rts dlREjddj tst speedis1-cn(a3) beq.b jaedmo bsr.w preplay jaedmo lea temp0(pc),a5 lea $a0(a6),a4 lea periods(pc),a2 st setornot-cn(a3) moveq #0,d4 moveq #3,d5 los tst 30(a5) beq.b fxdone moveq #$f,d1 and (a5),d1 subq #3,d1 beq.b settoneport subq #2,d1 beq.b toponochange moveq #$7e,d0 and.b (a5),d0 beq.b nocha0 clr.b 23(a5) add 16(a5),d0 move d0,28(a5) move (a2,d0),12(a5) move 42(a5),d0 move d0,$96(a6) or d0,d4 subq #4,d1 beq.b sampleoffset move.l 4(a5),lS%9a1 move.l (a1)+,(a4) move (a1),4(a4) nocha0 moveq #$f,d0 and (a5),d0 lea jtab(pc),a1 add d0,d0 add (a1,d0),a1 jmp (a1) settoneport move.b 2(a5),d0 beq.b toponochange move.b d0,20+1(a5) toponochange moveq #$7e,d0 and.b (a5),d0 beq.b fxdone add 16(a5),d0 move d0,28(a5) move (a2,d0),18(a5) fxdone move.l 12(a5),6(a4) add d6,a5 add d7,a4 dbf d5,los move d4,$96(a6) move.b d4,dma+1-cn(a3) rts ; ; Call this routinelT¨w 6 lines or more after P41_music ; A6 --> CUSTOMBASE $DFF000 ; P41_setrepeat lea cn(pc),a3 tst setornot-cn(a3) beq.b killer clr setornot-cn(a3) move dma(pc),$96(a6) moveq #40,d0 wait2 dbf d0,wait2 tst (a3) bne setrepeat subq #1,rowpos-cn(a3) bmi.b nextpattern bra.b setrepeat Killer rts sampleoffset move #$ff00,d1 and 2(a5),d1 move.l 4(a5),a1 move.l (a1)+,d0 add.l d1,d0 move.l d0,(a4) lsr #1,d1 move (a1),d0 slUû jub d1,d0 bpl.b offok move.l -4(a1),(a4) moveq #1,d0 offok move d0,4(a4) bra fxdone nextpattern move.l patternbase(pc),a4 move #63,rowpos-cn(a3) move.l spos-cn(a3),a1 move (a1)+,d0 bpl.b dk move.l Positionbase(pc),a1 move (a1)+,d0 dk lea (a4,d0),a0 movem (a1)+,d0-d2 move.l a1,Spos-cn(a3) move.l a0,32+temp0-cn(a3) lea (a4,d0),a0 move.l a0,32+temp1-cn(a3) lea (a4,d1),a0 move.l a0,32+temp2-cn(a3) lea (a4,d2),a0 move.l a0,32+temp3-cn(a3) setrepeat lea $a0(a6),a1 mlVU)ove.l 4+temp0(pc),a0 move.l 6(a0),(a1) move 10(a0),4(a1) move.l 4+temp1(pc),a0 move.l 6(a0),16(a1) move 10(a0),20(a1) move.l 4+temp2(pc),a0 move.l 6(a0),32(a1) move 10(a0),36(a1) move.l 4+temp3(pc),a0 move.l 6(a0),48(a1) move 10(a0),52(a1) rts volume move.b 2(a5),14+1(a5) bra.w fxdone posjmp moveq #0,d0 move.b 2(a5),d0 asl #2,d0 add.l Positionbase(pc),d0 move.l d0,spos-cn(a3) pattbreak move #64,rowpos-cn(a3) move.l spos-cn(a3),a1 move.l patternbase(pc),a0 movelWu (a1)+,d0 bpl.b dk2 move.l Positionbase(pc),a1 move (a1)+,d0 dk2 movem (a1)+,d1-d3 move.l a1,Spos-cn(a3) lea (a0,d0),a1 move.l a1,32+temp0-cn(a3) lea (a0,d1),a1 move.l a1,32+temp1-cn(a3) lea (a0,d2),a1 move.l a1,32+temp2-cn(a3) add d3,a0 move.l a0,32+temp3-cn(a3) bra.w fxdone vibrato move.b 2(a5),d0 beq.w fxdone move.b d0,d1 move.b 22(a5),d2 and.b #$f,d0 beq.b vibskip and.b #$f0,d2 or.b d0,d2 vibskip and.b #$f0,d1 beq.b vibskip2 and.b #$f,d2 or.b d1,d2 vibskiplXƨ\2 move.b d2,22(a5) bra.w fxdone settremo move.b 2(a5),d0 beq.w fxdone move.b d0,d1 move.b 24(a5),d2 moveq #$f,d3 and.b d3,d0 beq.b treskip and.b #$f0,d2 or.b d0,d2 treskip and.b #$f0,d1 beq.b treskip2 and.b d3,d2 or.b d1,d2 treskip2 move.b d2,24(a5) bra.w fxdone ecommands move.b 2(a5),d0 and.b #$f0,d0 lsr #3,d0 move etab(pc,d0),d0 jmp etab(pc,d0) etab dc filter-etab dc fineup-etab dc finedwn-etab dc fxdone-etab dc fxdone-etab dc setfinetune-etab dc fxdonlY e-etab dc fxdone-etab dc fxdone-etab dc setretrig-etab dc finevup-etab dc finevdwn-etab dc fxdone-etab dc stopnote-etab dc pattdelay-etab dc fxdone-etab filter move.b 2(a5),d0 and.b #$fd,$bfe001 or.b d0,$bfe001 bra.w fxdone fineup moveq #$f,d0 and.b 2(a5),d0 sub d0,12(a5) moveq #113,d0 cmpi 12(a5),d0 ble.w fxdone move d0,12(A5) bra.w fxdone finedwn moveq #$f,d0 and.b 2(a5),d0 add d0,12(a5) cmp #856,12(a5) ble.w fxdone move #856,12(a5) bra.w fxdone finevuplZ@O-q moveq #$f,d0 and.b 2(a5),d0 add d0,14(a5) moveq #64,d0 cmpi 14(a5),d0 bge.w fxdone move d0,14(a5) bra.w fxdone Setfinetune moveq #$f,d0 and.b 2(a5),d0 add d0,d0 move mulutab(pc,d0),16(a5) bra.w fxdone mulutab dc 0,74,148,222,296,370,444,518,592,666,740,814,888,962,1036,1110 Setretrig moveq #$f,d0 and.b 2(a5),d0 move d0,26(a5) bra.w fxdone finevdwn moveq #$f,d0 and.b 2(a5),d0 sub d0,14(a5) bpl.w fxdone clr 14(a5) bra.w fxdone stopnote move 42(a5),d0 eor dl[0,d4 bra.w fxdone Pattdelay moveq #$f,d0 and.b 2(a5),d0 move d0,Pdelay-cn(a3) move d0,Pdelay2-cn(a3) bra.w fxdone cspeed move.b 2(a5),d0 cmp.b #1,d0 bne.b jkd move.b d0,speed+1-cn(a3) move.b d0,speed2+1-cn(a3) st speedis1-cn(a3) bra.w fxdone jkd move.b d0,speed+1-cn(a3) subq.b #1,d0 move.b d0,speed2+1-cn(a3) clr speedis1-cn(a3) bra.w fxdone VibochVSlide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test62 clr 14(a5) clr 8(a4) bra.b vib2 test62 moveq #64,d0 cmp 14(l\ʗa5),d0 bge.b ncs2 move d0,14(a5) ncs2 move 14(a5),8(a4) vib2 move #$f00,d0 move 22(a5),d1 and d1,d0 lsr #2,d0 lsr #1,d1 and #$3e,d1 add d1,d0 move 12(a5),d1 tst.b 23(a5) bmi.b vibNeg add vibtab(pc,d0),d1 bra.b vib4 vibneg sub vibtab(pc,d0),d1 vib4 move d1,6(a4) move.b 22(a5),d0 lsr.b #2,d0 and #$3c,d0 add.b d0,23(a5) bra.w contfxdone tremo move #$f00,d0 move 24(a5),d1 and d1,d0 lsr #2,d0 lsr #1,d1 and #$3e,d1 add d1,d0 move 14(a5),d1 tst.b 25(a5) l] bmi.b treNeg add vibtab(pc,d0),d1 cmp #64,d1 ble.b tre4 moveq #64,d1 bra.b tre4 treneg sub vibtab(pc,d0),d1 bpl.b tre4 moveq #0,d1 tre4 move d1,8(a4) move.b 24(a5),d0 lsr.b #2,d0 and #$3c,d0 add.b d0,25(a5) bra.w contfxdone vibtab incbin dh0:asm/data/vibtab jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc vibrato-jtab dc fxdone-jtab dc fxdone-jtab dc settremo-jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc posjmp-jtab dc volume-jtabl^' dc pattbreak-jtab dc ecommands-jtab dc cspeed-jtab ************************************************************************ ** Data, pointers, buffers ** ************************************************************************ section sal,data_p temp0 ds 21 dc 1 temp1 ds 21 dc 2 temp2 ds 21 dc 4 temp3 ds 21 dc 8 cn dc 0 dma dc $8000 setornot dc 0 rowpos dc 63 speed dc 6 speed2 dc 5 speedis1 dc 0 spos dc.l 0 pdelay dc 0 pdelay2l_Nm dc 0 Positionbase dc.l 0 Patternbase dc.l 0 intaddr dc.l 0 module dc.l 0 song incbin "df0:p41.repulsive sound" dosname dc.b "dos.library",0 dosb dc.l 0 scorefile dc.b "Sormelus.pisteet",0 even err_text dc.b " *** Levyvirhe *** " dc.b " Ei voitu avata pistetiedostoa " dc.b " " dc.b " " nape_text dc.b " Mit]]]h?? " dc.b " Joku idil`ήn-!ootti on n]pel[inyt " dc.b " pistetiedostoa! " dc.b " " t_alku dc.b " **************** " dc.b " *** SORMELUS *** " dc.b " ***** v1.1 ***** " dc.b " " dc.b " Space......................Aloitus " dc.b " Return.....................Tason vaihto" dc.b " F1.........................Tuloslista " dc.b " F2.lavե$........................Ohjeita " dc.b " F3.........................Musiikki " dc.b " F4.........................Tekij]t " dc.b " Esc........................Lopetus " oho dc.b " Taso......................." oho1 dc.b "?? " dc.b " " dc.b " Enn]tys: " oho2 dc.b " ???????????????????????????????????????" t_help dc.b " Tarkoitus on painaa mahdollisimman " dc.b " nopeasti kuvaruutuun lbаoilmestyv]] " dc.b " merkki] vastaavaa n]pp]int]. " dc.b " Vihre]t viivat ilmoittavat onnistumi- " dc.b " sesta ja punaiset ep]onnistumisesta. " dc.b " Jokaisesta virheest] saa kolme " dc.b " rangaistussekuntia. " dc.b " " dc.b " Luku vasemmassa alareunassa ilmoittaa " dc.b " j]ljell] olevien n]pp]inten m]]r]n, " dc.b " keskell] n]kyy aika, ja oikeassa " dc.b " reunassa virheittelcEn lukum]]r]. " dc.b " " dc.b " Escill] voi lopettaa kesken. " dc.b " " infot dc.b " ***************************************" dc.b " " dc.b " Suunnittelu: " dc.b " T.Lindstr[m, J.Jansson, K-P Koljonen " dc.b " " dc.b " Hippokuva & musiikki: " dc.b " ld\{ T.Lindstr[m " dc.b " Koodaus: " dc.b " K-P Koljonen " dc.b " " dc.b " ***************************************" dc.b " " dc.b " " dc.b " " dc.b " " arviot dc.b " Aika.............???.?? s " dc.b "leӅ Virheit].........?? " dc.b " Virheprosentti...??? " dc.b " Kokonaisaika.....???.?? s " dc.b " " dc.b " " a_aika = arviot+25 a_virh = arviot+65 a_vpro = arviot+105 a_koko = arviot+145 scoretext dc.b " Uusi enn]tys! " dc.b " Kirjoita nimesi: " lettert blk.b 40," " titext blk.b 40," " time2 = titext+17lf tulosalku dc.b " Aika Nimi Taso" tulosohjeet dc.b " " dc.b " Nuolet: yl[s ja alas, Space: Pois " asck dc.b "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ{},. ",10,11,"-" rawk dc.b k_1,k_2,k_3,k_4,k_5,k_6,k_7,k_8,k_9,k_0,k_a,k_b,k_c,k_d dc.b k_e,k_f,k_g,k_h,k_i,k_j,k_k,k_l,k_m,k_n,k_o,k_p dc.b k_q,k_r,k_s,k_t,k_u,k_v,k_w,k_x,k_y,k_z,$ad,$ab,$8f,$8d dc.b k_space,k_return,k_bspace,$e9 ; , . ; - chanlgհfa dc 6 chans dc $a0,$b0,$d0,$c0 dc 1<<0,1<<1,1<<3,1<<2 cTime dc 28419/2 ;cia timer delay (0.01 s) f_struc ds.l 6 f_col dc 0 hippocols dc $0fff,$0210,$0bbb,$0ddd,$0864,$0975,$0a74,$0b85 acopp dc.l 0 adma dc 0 airq dc 0 tubecols dc $051,$073,$0a5,$1d8,$2fa,$1d8,$0a5,$073,$051 dc $530,$750,$a70,$d90,$fb0,$d90,$a70,$750,$530 dc $107,$309,$50b,$70d,$91f,$70d,$50b,$309,$107 dc $431,$653,$875,$a97,$db9,$a97,$875,$653,$431 dc $77f,$99f,$bbf,$ddf,$fff,$ddf,$bbf,$990,$77f dc $lh_c[724,$946,$b68,$d8a,$fac,$d8a,$b68,$946,$724 dc $076,$098,$2ba,$4dc,$6fe,$4dc,$2ba,$098,$076 dc $370,$590,$7b0,$9d0,$bf0,$9d0,$7b0,$590,$370 dc $750,$970,$b90,$db0,$fd0,$db0,$b90,$970,$750 dc $077,$099,$0bb,$0dd,$0ff,$0dd,$0bb,$099,$077 dc $407,$609,$80b,$a0d,$c1f,$a0d,$80b,$609,$407 dc $400,$620,$840,$a60,$c80,$a60,$840,$620,$400 dc $707,$099,$b0b,$0dd,$f0f,$0dd,$b0b,$099,$707 dc $770,$992,$bb4,$dd6,$ff8,$dd6,$bb4,$992,$770 dc $007,$009,$20b,$40d,$61f,$40d,$20b,$009,$007 dcliV $f70,$f90,$fb0,$fd0,$ff0,$fd0,$fb0,$f90,$f70 dc $060,$280,$4a0,$6c0,$8e0,$6c0,$4a0,$280,$060 dc $700,$900,$b00,$d00,$f00,$d00,$b00,$900,$700 dc $007,$009,$00b,$00d,$00f,$00d,$00b,$009,$007 dc $f77,$f99,$fbb,$fdd,$fff,$fdd,$fbb,$f99,$f77 dc $777,$999,$bbb,$ddd,$fff,$ddd,$bbb,$999,$777 dc $530,$a60,$f90,$a60,$530,$a60,$f90,$a60,$530 dc $000,$000,$000,$000,$000,$000,$000,$000,$000 tubesamount = 23 tubecolp dc.l tubecols tubep dc $f tubecount dc 0 tubedelay dc 150 tubetobe ljAhʟdc 0 tubetobe2 dc 0 memarea dc.l 0 copsave dc.l 0 dmasave dc 0 irqsave dc 0 lev2save dc.l 0 lev3save dc.l 0 lev6save dc.l 0 intp dc.l 0 ;mihin hypitn keskeytyksess wrong dc 0 nleft dc.b 0 kys dc.b 20-1 nomus dc.b 0 nomus2 dc.b 0 no3d dc.b 0 tulosposition dc.b 1 tarkf dc.b 0 loaderf dc.b 0 key dc.b 0 ;Coolcolcolcol! nosaving dc.b 0 even colv dc 0 time dc.l 0 sin incbin dh0:asm/data/sin pers incbin dh0:asm/data/perspective mulutable a set 0 rept 256 dc a lk٫s-a set a+80 endr samplo1 dc.l sam1 dc (sam2-sam1)/2,212 dc.l sam2 dc (sam3-sam2)/2,424 dc.l sam3 dc (sam4-sam3)/2,300 dc.l sam4 dc (sam5-sam4)/2,700 dc.l sam5 dc (sam6-sam5)/2,424 dc.l sam6 dc (sam7-sam6)/2,300 dc.l sam7 dc (sam8-sam7)/2,212 dc.l sam8 dc (sam9-sam8)/2,500 dc.l sam9 dc (sam10-sam9)/2,424 dc.l sam10 dc (sam11-sam10)/2,424 dc.l sam11 dc (sam12-sam11)/2,424 dc.l sam12 dc (sam13-sam12)/2,212 dc.l sam13 dc (sam14-sam13)/2,424 dc.l sam14llK& dc (sam15-sam14)/2,424 samplo15 dc.l sam15 dc (sam16-sam15)/2,212 dc.l sam16 dc (jyms-sam16)/2,300 dc.l s1 dc (s2-s1)/2,424 dc.l s2 dc (s3-s2)/2,424 dc.l s3 dc (s4-s3)/2,370 dc.l s4 dc (s5-s4)/2,424 dc.l s5 dc (s6-s5)/2,212 dc.l s6 dc (s7-s6)/2,424 dc.l s7 dc (s8-s7)/2,424 dc.l s8 dc (s9-s8)/2,424 dc.l s9 dc (s10-s9)/2,424 dc.l s10 dc (s11-s10)/2,424 dc.l s11 dc (s12-s11)/2,424 dc.l s12 dc (s13-s12)/2,424 dc.l s13 dc (s14-s13)/2,424 dlm۱}c.l s14 dc (s15-s14)/2,424 dc.l s15 dc (s16-s15)/2,424 dc.l s16 dc (s99-s16)/2,370 scorebuffer rept 99 dc.b " 999.99 ............................. " endr sbend dc.l $7b56d ;checksum sbuflen = sbend-scorebuffer nextlist = 40 ds.b 40 ************************************************************************* ** More data & Copperlists ** ************************************************************************* sectionlnܴ "ousmous",data_c cop bcon1 dc $100,$2200!1<<15!1<<10,$108,0,$10a,0 ;med-res dc $92,$38,$94,$d0 dc $8e,$2c81,$90,$2cc1 bplp dc $e0,$7,$e2,$5000 bplp1 dc $e4,$7,$e6,$5000 dc $180,0 col1 dc $192,0 tube dc $220f,-2,$180,0 dc $230f,-2,$180,0 dc $240f,-2,$180,0 dc $250f,-2,$180 tubev dc 0 dc $260f,-2,$180,0 dc $270f,-2,$180,0 dc $280f,-2,$180,0 dc $290f,-2,$180,0 dc $2a0f,-2,$180,0 dc $2b0f,-2 dc $180 back1 dc 0,$180 back2 dc 0,$182 collo dc 0 dc $8e0f,-2 bcon dc $1loE00,$2200!1<<15!1<<10 modu dc $108,0,$10a,0 dc $8f0f,-2,$180 back3 linec1 dc 0 dc $910f,-2,$180 back6 dc 0 dc $a10f,-2,$180 back4 linec2 dc 0 dc $a30f,-2,$180 back5 dc 0 dc $a40f,-2 bcon2 dc $100,$2200!1<<15!1<<10 dc $108,0,$10a,0 dc $e80f,-2,$182 back2c dc $f00 dc $f80f,-2,$182 back2b dc 0 dc -31,-2 tube2 dc $2b0f,-2,$180,0 dc $2c0f,-2,$180,0 dc $2d0f,-2,$180,0 dc $2e0f,-2,$180,0 dc $2f0f,-2,$180,0 dc $300f,-2,$180,0 dc $310f,-2,$180,0 dc $320f,-2,$180,0 dc $lp"330f,-2,$180,0 dc $340f,-2,$180,0 dc.l -2 font incbin "dh0:asm/data/ruby.r" sam1 dc 0 incbin "df0:snd/snix" sam2 dc 0 incbin "df0:snd/splut" sam3 dc 0 incbin "df0:snd/fviuh" sam4 dc 0 incbin "df0:snd/boink" sam5 dc 0 incbin "df0:snd/snare.glASS" sam6 dc 0 incbin "df0:snd/ik_boing" sam7 dc 0 incbin "df0:snd/nuppio" sam8 dc 0 incbin "df0:snd/ik_ouz1" sam9 dc 0 incbin "df0:snd/ik_hit1" sam10 dc 0 incbin "df0:snd/ik_hit2" sam11 dc 0 incbin "df0:snd/ik_hit7" sam12 dc 0 ilqߢ,ncbin "df0:snd/flo_platz" sam13 dc 0 incbin "df0:snd/flo_bulp" sam14 dc 0 incbin "df0:snd/sp_aagh" sam15 dc 0 incbin "df0:snd/sp_pling" sam16 dc 0 incbin "df0:snd/sp_ou" jyms incbin "df0:snd/patang" s1 dc 0 incbin "df0:snd/alien" s2 dc 0 incbin "df0:snd/bb_dung" s3 dc 0 incbin "df0:snd/bb_kassa" s4 dc 0 incbin "df0:snd/bb_pdiung" s5 dc 0 incbin "df0:snd/doim" s6 dc 0 incbin "df0:snd/eug" dc.b 0 s7 dc 0 incbin "df0:snd/flop" s8 dc 0 incbin "df0:snd/ig_jududu" s9 dc 0 inclr;bin "df0:snd/ig_kash" s10 dc 0 incbin "df0:snd/ig_pdiu" s11 dc 0 incbin "df0:snd/ig_riu" s12 dc 0 incbin "df0:snd/ig_rull" s13 dc 0 incbin "df0:snd/ig_rums" s14 dc 0 incbin "df0:snd/sw_drr" s15 dc 0 incbin "df0:snd/sw_pang" s16 dc 0 incbin "df0:snd/uuh" s99 even samp incbin "df0:smp.repulsive sound" even ************************** Hippologo *********************************** copp dc $100,$3200,$102,0,$104,0 dc $92,$38,$94,$d0 dc $8e,$2c81,$90,$2cc1 dc $108,0,$10a,0 abplsalp1 dc $e0,0,$e2,0 abplp2 dc $e4,0,$e6,0 abplp3 dc $e8,0,$ea,0 f_cols dc $0180,$000,$0182,$000,$0184,$000,$0186,$000 dc $0188,$000,$018a,$000,$018c,$000,$018e,$000 dc.l -2 pic incbin "df0:hippologo.r" ************************************************************************ section varalista,bss_p varalista ds.b sbuflen+4 tulosbuf ds.b sbuflen section kuvat,bss_c screen ds.b $5000 ;1 med-res plane ds.b $5000*2 ;vec area 8,$94,$d0 dc $8e,$2c81,$90,$2cc1 dc $108,0,$10a,0 abpHn)('&%$#"!      ӿ7 sormelus2.sp*.@6; jmp percent *********************************************************************** ** Sormelus v1.2 ** * by * ** K-P ** *********************************************************************** * $VER: Sormelus 1.2 version 58 incdir dh0:Asm/include/ include graphics/graphics_lib.i include k&eys.i incdir Openlib = -$228 Closelib = -$19e Open = -$1e Close = -$24 Read = -$2a Write = -$30 Deletefile = -$48 bplcon = $2200!1<<15!1<<10 section moppi,code_p movem.l d0-a6,-(sp) lea scorebuffer,a0 ;lista talteen lea varalista,a1 move #sbuflen+4-1,d0 kopi move.b (a0)+,(a1)+ dbf d0,kopi bsr.w loadscores move #4*50,d1 bsr.w delay bsr.w startup lea $dff000,a6 move 2(a6),dmasave move $1c(a6),irqsave bsr.w vblank move #$7ff,$96(a6) move #1<<15!1<<92f!1<<8!1<<7!1<<6,$96(a6) move #$7fff,$9a(a6) move #1<<15!1<<5!1<<14!1<<3,$9a(a6) bsr.w init_timer move.l vectorbase,a0 move.l $68(a0),lev2save move.l #lev2int,$68(a0) lea $144(a6),a0 ;Spritet vekke ja kki moveq #7,d0 clop clr.l (a0)+ addq.l #4,a0 dbf d0,clop movem.l d0-a6,-(sp) clr.l song lea song+4,a0 lea samp,a1 bsr.w p41_init movem.l (sp)+,d0-a6 bsr.w clearscreen lea screen,a0 move.l a0,d0 move d0,bplp+6 swap d0 move d0,bplp+2 bsr.w trip1 move.l ?'\#cop,$80(a6) move d0,$88(a6) move.l #intr1,intp move.l vectorbase,a0 move.l $6c(a0),lev3save move.l #lev3int,$6c(a0) st nomus tst.b loaderf beq.b jaaha bsr.w loaderror ;latausvirhe bra.b okay jaaha tst.b tarkf beq.b okay bsr.w tarkerr ;User's got -100 IQ lea scorebuffer,a1 ;puhdas lista kehiin lea varalista,a0 move #sbuflen+4-1,d0 kopi2 move.b (a0)+,(a1)+ dbf d0,kopi2 okay bsr.w vaanto bsr.w survo_nimi bra.b mainloop alko bsr.w writeroff mainloop clr h2wrong ;putsataan vanhat clr.l time clr collo lea t_alku,a0 moveq #15-1,d2 lea screen,a2 clr collo bsr.w writeron bsr.w collon mouse0 bsr.w vblank cmp.b #k_esc,key beq.b vekke cmp.b #k_return,key beq.w vaihto cmp.b #k_f4,key beq.w infoa cmp.b #k_f2,key beq.w helppia cmp.b #k_f1,key beq.w tuloslista cmp.b #k_f3,key bne.b vaack tabulo cmp.b #k_f3-1,key bne.b tabulo not.b nomus2 vaack cmp.b #k_space,key bne.b mouse0 bsr.w writeroff bsr.w teddybear tᮣst.b d7 ;escaped? bne.w mainloop bsr.w do_tulos bra.w mainloop vekke bsr.w writeroff bsr.w remove_timer move.l vectorbase,a0 move.l lev2save,$68(a0) move.l lev3save,$6c(a0) move irqsave,d0 move #$7fff,$9a(a6) or #$c000,d0 move d0,$9a(a6) bsr.w p41_end move dmasave,d0 move #$7ff,$96(a6) or #$8000,d0 move d0,$96(a6) bsr.w closedown bsr.w savescores movem.l (sp)+,d0-a6 moveq #0,d0 rts vblank btst #0,$dff005 beq.b vblank vbonk btst #0,$dff005 bne.b vbonk rts delay bsr.b vblank dbf d1,delay moveq #0,d1 rts collon move #$8000,colv clo bsr.b vblank bsr.b vblank add #$111,collo cmpi #$eee,collo bne.b clo rts clearscreen btst #14,2(a6) bne.b clearscreen move.l #screen,$54(a6) clr $66(a6) move.l #$01000000,$40(a6) move #2*256*64+20,$58(a6) bloblb btst #14,2(a6) bne.b bloblb rts ************************************************************************ ** Tekstitoiminnot 껞H ** ************************************************************************ helppia lea t_help,a0 * Ohjeita bra.b prant infoa lea infot,a0 prant bsr.w writeroff moveq #15-1,d2 lea screen,a2 clr collo bsr.w writeron bsr.b collon spaze cmp.b #k_space,key bne.b spaze bsr.w writeroff lea t_alku,a0 moveq #15-1,d2 lea screen,a2 clr collo bsr.w writeron bsr.w collon bra.w vaack tuloslista * Tuloslista lea scorebuffer,a0 lea tulosbuf,a1 move.l #sbufl ten,d0 copyl move.b (a0)+,(a1)+ dbf d0,copyl lea tulosbuf,a0 moveq #99-1,d0 move.b #'0',d1 move.b #'1',d2 tuloop lea 38(a0),a0 move.b d1,(a0)+ move.b d2,(a0)+ addq #1,d2 cmp.b #'9',d2 ble.b nook addq #1,d1 move.b #'0',d2 nook dbf d0,tuloop moveq #0,d7 lea tulosbuf,a3 move.b tulosposition,d7 move.l d7,d6 subq #1,d6 mulu #11*40,d6 add.l d6,a3 dotulos bsr.w writeroff lea tulosalku,a0 moveq #1-1,d2 lea screen,a2 clr collo bsr.w writeron move.l a3,a0 mo 8veq #11-1,d2 lea screen+2*17*80,a2 bsr.w writeron lea tulosohjeet,a0 moveq #2-1,d2 lea screen+13*17*80,a2 bsr.w writeron bsr.w collon tulosloop cmp.b #k_up,key beq.b lista_up cmp.b #k_down,key beq.b lista_down ctulos cmp.b #k_space,key bne.b tulosloop move.b d7,tulosposition bsr.w writeroff lea t_alku,a0 moveq #15-1,d2 lea screen,a2 clr collo bsr.w writeron bsr.w collon bra.w vaack lista_up subq #1,d7 bne.b jepup moveq #1,d7 bra.b ctulos jepup l .^ea -11*40(a3),a3 bra.w dotulos lista_down addq #1,d7 cmp.b #9+1,d7 bne.b jepdown moveq #9,d7 bra.b ctulos jepdown lea 11*40(a3),a3 bra.w dotulos ************************************************************************ ** Tason vaihto ** ************************************************************************ vaihto moveq #2-1,d5 lea oho1,a4 move.b #'?',(a4)+ move.b #'?',(a4)+ subq #2,a4 lea oho,a0 moveq #1-1, lSd2 lea screen+11*17*80,a2 bsr.w writeron move #$f00,d7 gimme bsr.w vblank move d7,back2c eor #$f0,d7 bsr.w rawkeycon beq.b gimme cmpi.b #'0',d0 blo.b gimme cmpi.b #'9'+1,d0 bhs.b gimme move.b d0,(a4)+ lea oho,a0 moveq #1-1,d2 lea screen+11*17*80,a2 bsr.w writeron dbf d5,gimme move.b -(a4),d1 move.b -(a4),d0 cmp.b #'0',d0 bne.b vok cmp.b #'0',d1 bne.b vok move.b #'2',(a4)+ move.b #'0',(a4)+ move.b #20-1,kys bra.b vokk vok and.b #$f,d0 and.b  UUr#$f,d1 mulu #10,d0 add d1,d0 subq #1,d0 move.b d0,kys vokk bsr.w survo_nimi lea oho2,a0 lea screen+14*17*80,a2 bsr.w writeron lea oho,a0 lea screen+11*17*80,a2 bsr.w writeron bra.w vaack vaanto moveq #0,d0 move.b kys,d0 ;kysytaan n nappainta addq #1,d0 bsr.w convert lea oho1,a0 eeh999 move.b d1,(a0)+ move.b d2,(a0) rts ************************************************************************ ** Lopputulos Df ** ************************************************************************ do_tulos lea time2,a0 lea a_aika,a1 moveq #6-1,d0 dolop move.b (a0)+,(a1)+ dbf d0,dolop move.l time,d0 bsr.w screw_it2 lea time2,a0 ; lea a_koko,a1 ; moveq #6-1,d0 ;dolop2 move.b (a0)+,(a1)+ ; dbf d0,dolop2 lea a_virh,a0 move wrong,d0 bsr.b convert move.b d0,(a0)+ move.b d1,(a0)+ move.b d2,(a0)+ percent moveq #0,d0 moveq #0,d1 move wrong,d0 move.b kys,d1 addq.b #1,d1 mulu #100,d0 <'divu d1,d0 swap d0 clr d0 swap d0 lea a_vpro,a0 ;tehdn prosenttiluku move.b #'%',(a0)+ move #1000,d1 bsr.b roor moveq #100,d1 bsr.b roor moveq #10,d1 bsr.b roor or.b #'0',d0 move.b d0,(a0)+ lea arviot,a0 ;Kosh moveq #5-1,d2 lea screen+4*17*80,a2 bsr.w writeron bsr.w kosaus bsr.w do_hiscores rts roor divu d1,d0 add.b #'0',d0 move.b d0,(a0)+ clr d0 swap d0 rts convert moveq #0,d1 ; Hexaluku -> ASCII moveq #0,d2 moveq #0,d3 swap d0 c|lr d0 swap d0 divu #100,d0 swap d0 move d0,d1 clr d0 swap d0 divu #10,d1 swap d1 move d1,d2 clr d1 swap d1 or.b #$30,d0 or.b #$30,d1 or.b #$30,d2 rts ************************************************************************ ** Ajanmittaus ** ************************************************************************ contime movem.l d0-d4/a0-a4,-(Sp) move.l time,d0 bsr.b screw_it lea titext+8,a0 moveq #0,d0 moǫ#ve.b nleft,d0 bsr.b convert move.b d1,(a0)+ move.b d2,(a0) lea titext+30,a0 moveq #0,d0 move wrong,d0 bsr.b convert move.b d0,(a0)+ move.b d1,(a0)+ move.b d2,(a0) lea titext,a0 ;Sullotaan aika moveq #1-1,d2 lea screen+14*17*80,a2 bsr.w writeron movem.l (sp)+,d0-d4/a0-a4 rts screw_it2 ;aika pajkalleen moveq #0,d5 move wrong,d5 ; mulu #3,d5 * ei fargin sakotuksia bra.b ehe screw_it moveq #0,d5 ehe lea time2,a1 divu #100,d0 swap d0 moveq #0,d4 move d0^,d4 clr d0 swap d0 add d5,d0 bsr.w convert move.b d0,(a1)+ * 100.00 move.b d1,(a1)+ * 010.00 move.b d2,(a1)+ * 001.00 move.b #'.',(a1)+ move.l d4,d0 bsr.w convert move.b d1,(a1)+ * 000.10 move.b d2,(a1) * 000.01 rts *******************NH*************************************************** ** Peliosuus NH ** ************************************************************************ teddybear bsr.w p41_end ;Me5lut pois move #$1200,bcon+2 ;Loresi move #$1200!1<<15,bcon1+2 move #$1200!1<<15,bcon2+2 move #40,modu+2 move #40,modu+6 move #$eee,collo move.b kys,nleft addq.b #1,nleft move.l #intr2,intp ;oikee interrupti clr collo bsr.w collon move.l #1*50,d1 ;viivett bsr.w delay bsr.w random move.l d0,d1 and.b #$1f,d1 bsr.w delay lea samplo15,a0 ;pling bsr.w crash lea lettert,a0 lea linec1,a1 lea screen+6*17*80,a2 lea asck,a3 lea rawk,a4 lea key,a5 moveq \#0,d5 move.b kys,d5 ;Testataan # nppint st d4 move #1<<15!1<<13,$9a(a6) ;aloitetaan ajanotto again bsr.w random cmp.b d4,d0 ;ei kahta samaa perkkin beq.b again cmpi.b #41-1,d0 ;pysytn oikealla alueella bhs.b again move.b d0,d4 move.b (a4,d0),d1 move.b (a3,d0),d0 move.b d0,9(a0) moveq #0,d2 bsr.w writeron clr.b (a5) move d1,d0 uusix bsr.w tskey beq.b uusix cmpi.b #k_esc,(a5) beq.w scaped cmpi.b #1,d1 beq.b oikein addq #1,wrong move #$f00,(a1) moDV!ve #$f00,16(a1) bsr.w sam_right * ei vhennet counteria vaan arvotaan uusi bra.b again ; bra.b eij oikein move (a1),d6 and #$f00,d6 bne.b eij move #$f0,(a1) move #$f0,16(a1) eij bsr.w sam_right move.b d5,nleft dbf d5,again moveq #0,d7 ped move #1<<13,$9a(a6) feida bsr.w vblank bsr.w vblank sub #$111,collo bne.b feida move #bplcon,bcon+2 move #bplcon,bcon1+2 move #bplcon,bcon2+2 clr modu+2 clr modu+6 bsr.w clearscreen noope move.l #intr1,intp rts scaped moMveq #-1,d7 ;Escape flag clr colv bra.b ped tskey cmp.b (a5),d2 ;Jeah! Se toimii... beq.b novalid cmp.b (a5),d3 beq.b novalid cmp.b (a5),d0 bne.b wrongk move.b (a5),d2 subq.b #1,d2 move.b d2,d3 moveq #1,d1 rts wrongk move.b (a5),d2 subq.b #1,d2 move.b d2,d3 moveq #-1,d1 rts novalid moveq #0,d1 rts random movem.l d1/d2,-(sp) ;Almost frozen randomgenerator moveq #0,d0 moveq #0,d1 moveq #0,d2 move.b $bfd800,d0 move $dff006,d1 move.b d1,d2 ror #8,d1 eor.b Ud2,d0 eor.b d1,d0 movem.l (sp)+,d1/d2 rts sam_right movem.l d0/a0,-(sp) ;Efekti lea samplo1,a0 bsr.b random and #$1f,d0 mulu #8,d0 add.l d0,a0 bsr.w crash movem.l (sp)+,d0/a0 rts ************************************************************************ ** Highscore ** ************************************************************************ do_hiscores spiuze cmp.b #$7f,key bne.b spiuze movem.l d0-a6,-(sp) tW; moveq #0,d0 move.b kys,d0 mulu #nextlist,d0 lea scorebuffer,a0 add.l d0,a0 moveq #0,d0 ;lasketaan vanha enkka moveq #0,d1 move.b 1(a0),d1 and.b #$f,d1 mulu #10000,d1 add.l d1,d0 clr.l d1 move.b 2(a0),d1 and.b #$f,d1 mulu #1000,d1 add.l d1,d0 clr.l d1 move.b 3(a0),d1 and.b #$f,d1 mulu #100,d1 add.l d1,d0 clr.l d1 move.b 5(a0),d1 and.b #$f,d1 mulu #10,d1 add.l d1,d0 clr.l d1 move.b 6(a0),d1 and.b #$f,d1 add.l d1,d0 lea time2,a1 ;ja uusi moveq #0,d1 I_moveq #0,d2 move.b (a1)+,d2 and.b #$f,d2 mulu #10000,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 mulu #1000,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 mulu #100,d2 add.l d2,d1 clr.l d2 addq #1,a1 move.b (a1)+,d2 and.b #$f,d2 mulu #10,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 add.l d2,d1 clr.l d2 cmp d0,d1 ;miten ky?? bhi.w nonewhi bsr.w writeroff lea time2,a1 move.b (a1)+,1(a0) move.b (a1)+,2(a0) move.b (a1)+,3(a0) move.b 1(a1),5(a0) move.b 2(a1),6(a0) move.l a0,a4 ;nimen alue tyhjks addq.l #7,a4 moveq #33-1,d3 clrname move.b #' ',(a4)+ dbf d3,clrname clr collo move.l a0,a3 moveq #1-1,d2 lea screen+8*17*80,a2 bsr.w writeron lea scoretext,a0 moveq #2-1,d2 lea screen+5*17*80,a2 bsr.w writeron bsr.w collon moveq #29-1,d3 ;Tilaa nimelle n kirjainta move.l a3,a4 addq.l #8,a3 move.l a3,a5 subq.l #1,a5 spoze bsr.w vblank bsr.w rawkeycon beq.b spoze cmp.b #10,d0 ;RFeturn? beq.b finished cmp.b #11,d0 ;Backspace? bne.b nodel addq #2,d3 ;ei lasketa kirjaimeksi subq.l #1,a3 ;ei deletoida aikaa cmp.l a3,a5 bne.b goahead addq #1,a3 goahead move.b #' ',(a3) bra.b yesdel nodel move.b d0,(a3)+ yesdel move.l a4,a0 moveq #1-1,d2 lea screen+8*17*80,a2 bsr.w writeron dbf d3,spoze finished bsr.b survo_nimi st nosaving ;savetetaan nonewhi bsr.w writeroff movem.l (sp)+,d0-a6 rts survo_nimi move.b kys,d0 mulu #nextlist,d0 leLa scorebuffer,a0 add.l d0,a0 lea oho2,a1 moveq #40-1,d0 nlop move.b (a0)+,(a1)+ dbf d0,nlop rts ************************************************************************ ** Sound effects ** ************************************************************************ crash movem.l d0-d5/a1,-(sp) move chanfa,d0 lea chans,a1 move (a1,d0),d4 move 8(a1,d0),d5 move d5,$96(a6) bset #15,d5 move.l (a0)+,d0 movem (a0)+,d1-d2 mo떈>veq #$40,d3 move.l d0,(a6,d4) movem d1-d3,4(a6,d4) move #300,d0 dmaw dbf d0,dmaw move d5,$96(a6) move #300,d0 dmaw2 dbf d0,dmaw2 move #1,4(a6,d4) subq #2,chanfa bpl.b cok move #6,chanfa cok movem.l (sp)+,d0-d5/a1 rts kosaus move $1c(a6),d3 or #$c000,d3 move #$7fff,$9a(a6) move #$fff,back1 move #$fff,back2 move #$fff,back3 move #$fff,back4 move #$fff,back5 move #$fff,back6 move #$fff,collo move #$fff,col1+2 move #$f,$96(a6) lea jyms,a0 move.l a0,$a0(a6)r move.l a0,$b0(a6) move.l a0,$c0(a6) move.l a0,$d0(a6) move #(s1-jyms)/2,d0 move #750,d1 moveq #64,d2 movem d0-d2,$a4(a6) movem d0-d2,$b4(a6) subq #1,d1 movem d0-d2,$c4(a6) addq #2,d1 movem d0-d2,$d4(a6) move #$800f,$96(a6) moveq #25,d1 bsr.w delay jlop moveq #4-1,d5 jymslop bsr.w vblank bsr.w do3d subq #1,d5 bpl.b jymslop bsr.w make3dc sub #$111,back1 sub #$111,back2 sub #$111,back3 sub #$111,back4 sub #$111,back5 sub #$111,back6 bne.b jlop move #$f$q,$96(a6) move #$eee,collo move d3,$9a(a6) rts ************************************************************************ ** Hires writer ** ************************************************************************ writeron movem.l d0-d3/a0-a4,-(sp) st no3d lea font,a3 move.l a2,a4 lo2 moveq #40-1,d3 ;# chars per line lo moveq #0,d0 move.b (a0)+,d0 sub.b #' ',d0 divs #20,d0 move d0,d1 clr d0 swap d0 add d0,d0 mulu #4 @w0*16,d1 add d0,d1 lea (a3,d1),a1 move.l a4,a2 moveq #$f,d0 copl move (a1)+,(a2)+ lea 38(a1),a1 lea 78(a2),a2 dbf d0,copl addq #2,a4 ;Next place dbf d3,lo lea 80*16(a4),a4 ;Next line dbf d2,lo2 sf no3d movem.l (sp)+,d0-d3/a0-a4 rts writeroff clr colv wrf bsr.w vblank bsr.w vblank sub #$111,collo bne.b wrf bsr.w clearscreen rts ************************************************************************ ** Rawkey convert !FW ** ************************************************************************ * Palauttaa D0:ssa painetun nppimen ASCII-koodin. * Jos Z, ei tunnistettavia nppimi painettu. rawkeycon lea key,a0 lea asck,a1 lea rawk,a2 moveq #43,d1 keyloop move.b (a2)+,d0 bsr.b tstkey bne.b nok move.b (a1)+,d0 bra.b nak nok addq.l #1,a1 dbf d1,keyloop moveq #0,d0 nak rts tstkey cmp.b (a0),d0 bne.b nokey subq.b #1,d0 tstkey2 cmp.b (a0),d0 bne.b tstkey2 moveq #0,d0 nokey rt"36es ************************************************************************ ** Loading & Saving ** ************************************************************************ loadscores movem.l d0-a6,-(sp) moveq #0,d0 lea dosname,a1 move.l 4.w,a6 jsr openlib(a6) move.l d0,a6 move.l d0,dosb move.l #scorefile,d1 move.l #1005,d2 jsr open(a6) beq.b loaderr move.l d0,d4 move.l #scorebuffer,d2 move.l #sbuflen+4,d3 jsr read(a6)# sf loaderf move.l d4,d1 jsr close(a6) bsr.b tstark orf movem.l (sp)+,d0-a6 rts loaderr st loaderf bra.b orf savescores bsr.w tslas move.l dosb,a6 tst.b nosaving beq.b saverror move.l #scorefile,d1 jsr deletefile(a6) move.l #scorefile,d1 move.l #1006,d2 jsr open(a6) beq.b saverror move.l d0,d4 move.l #scorebuffer,d2 move.l #sbuflen+4,d3 jsr write(a6) move.l d4,d1 jsr close(a6) saverror move.l a6,a1 move.l 4.w,a6 jsr closelib(a6) rts tstark bsr.w $fjsodge bsr.b tslasku cmp.l d0,d1 bne.b nip sf tarkf rts nip st tarkf rts tarkerr clr collo bsr.w clearscreen lea nape_text,a0 moveq #4-1,d2 lea screen+6*17*80,a2 bsr.w writeron bsr.w collon spp cmpi.b #k_space,key bne.b spp bsr.w writeroff rts ;on npelity listaa loaderror clr collo bsr.w clearscreen lea err_text,a0 moveq #4-1,d2 lea screen+6*17*80,a2 bsr.w writeron bsr.w collon spa cmpi.b #k_space,key bne.b spa bsr.w writeroff rts tslas bsr.b%߇ tslasku move.l d0,(a0) bsr.b sodge rts tslasku lea scorebuffer,a0 move #sbuflen-1,d1 moveq #0,d0 moveq #0,d2 moveq #0,d3 ch move.b (a0)+,d2 eor.b #1,d3 bne.b chc not.b d2 chc add.l d2,d0 dbf d1,ch move.l (a0),d1 ;vanha summa rts sodge lea scorebuffer,a0 move #sbuflen-1,d0 move.b #-1,d1 moveq #0,d3 sl not.b d1 bne.b slll not.b (a0) slll not.b d3 bne.b sll eor.b d0,(a0) sll move.b d0,d2 not.b d2 eor.b d2,(a0)+ dbf d0,sl rts ********************************&%{**************************************** ** Copper effect ** ************************************************************************ colortubes not tubetobe ;viivytyst bne.b tobe not tubetobe2 bne.b tobe lea tube+6,a0 lea tube2+6,a1 moveq #9-1,d0 tlobo move (a0),(a1) addq #8,a0 addq #8,a1 dbf d0,tlobo cmpi #tubesamount,tubecount ;Menik ympri? bne.b notyet move.l #tubecols,tubecolp clr tubecount notyet lea t' Ʋ'ube+6,a0 move.l tubecolp,a1 lea tubep,a2 tst (a2) beq.b nextube moveq #9,d0 tubelop bsr.b fadedo addq #8,a0 addq #2,a1 dbf d0,tubelop subq #1,(a2) tobe rts nextube subq #1,tubedelay bne.b tobe move #150,tubedelay add.l #18,tubecolp move #$f,(a2) addq #1,tubecount bra.b tobe fadedo movem.l d0-d5,-(sp) move (a0),d0 move d0,d1 move d0,d2 move (a1),d3 move d3,d4 move d3,d5 and #$f,d0 and #$f0,d1 and #$f00,d2 and #$f,d3 and #$f0,d4 and #$f00,d5 bsr( 9\.b cblu bsr.b cgre bsr.b cred or d0,d1 or d1,d2 move d2,(a0) movem.l (sp)+,d0-d5 xit rts cred cmpi d2,d5 blo.b credb beq.b xit add #$100,d2 rts credb sub #$100,d2 rts cgre cmpi d1,d4 blo.b cgreb beq.b xit add #$10,d1 rts cgreb sub #$10,d1 rts cblu cmpi d0,d3 blo.b cblub beq.b xit addq #1,d0 rts cblub subq #1,d0 rts ************************************************************************* ** Lame vecs **) Y~ ************************************************************************* trip1 lea screen+$5000,a0 lea 2*$2800(a0),a1 move.l a0,draw1 move.l a1,d0 move.w d0,bplp1+6 swap d0 move.w d0,bplp1+2 wblblb btst #14,2(a6) bne.b wblblb move.l draw1,$54(a6) clr $66(a6) move.l #$01000000,$40(a6) move #3*256*64+40,$58(a6) wblblbb btst #14,2(a6) bne.b wblblbb rts do3d movem.l d0-a6,-(sp) dodd btst #14,2(a6) bne.b dodd move.l draw1,a0 lea 19+44*80(a0),a0 move.l a0,$54(a6) mo* Jve #36,$66(a6) move.l #$01000000,$40(a6) move.w #169*64+22,$58(a6) lea xrot1,a0 subq #2,(a0) subq #4,2(a0) subq #2,4(a0) bsr.w cangle2 lea xrot2,a0 addq #2,(a0) addq #2,2(a0) addq #4,4(a0) bsr.w cangle lea xrot3,a0 subq #4,(a0) subq #2,2(a0) subq #2,4(a0) bsr.w cangle2 lea xrot4,a0 addq #4,(a0) addq #2,2(a0) addq #4,4(a0) bsr.w cangle lea xrot5,a0 subq #4,(a0) subq #4,2(a0) subq #2,4(a0) bsr.w cangle2 lea vec_p,a0 move.l #cube_coords,(a0)+ move.l #cube+ __con,(a0)+ move.l #cube_rot,(a0)+ move xrot1,(a0)+ move yrot1,(a0)+ move zrot1,(a0)+ bsr.w tilt lea vec_p,a0 move.l #cube2_coords,(a0)+ addq.l #8,a0 move xrot2,(a0)+ move yrot2,(a0)+ move zrot2,(a0)+ bsr.w tilt lea vec_p,a0 move.l #cube3_coords,(a0)+ addq.l #8,a0 move xrot3,(a0)+ move yrot3,(a0)+ move zrot3,(a0)+ bsr.w tilt lea vec_p,a0 move.l #cube4_coords,(a0)+ addq.l #8,a0 move xrot4,(a0)+ move yrot4,(a0)+ move zrot4,(a0)+ bsr.b tilt lea vec_p,a0 mo,}iocve.l #cube5_coords,(a0)+ addq.l #8,a0 move xrot5,(a0)+ move yrot5,(a0)+ move zrot5,(a0)+ bsr.b tilt move.l draw1,d0 move.w bplp1+2,d1 swap d1 move.w bplp1+6,d1 move.l d1,draw1 move d0,bplp1+6 swap d0 move d0,bplp1+2 movem.l (sp)+,d0-a6 rts cangle moveq #3-1,d0 che cmpi #720,(a0) blo.b nox clr (a0) nox addq #2,a0 dbf d0,che rts cangle2 moveq #3-1,d0 cheg tst (a0) bpl.b noxg move #720,(a0) noxg addq #2,a0 dbf d0,cheg rts draw1 dc.l 0 tilt movem.l vec_p,a-t 0 movem.l vec_p+8,a3 lea pers,a6 lea sin,a1 lea 180(a1),a2 movem (a0)+,d0-d1 next move vec_p+16,d2 move (a2,d2),d3 ;cos move (a1,d2),d2 ;sin move d2,d4 move d3,d5 ; x1 = x cos(a) - y sin(a) muls d0,d3 muls d1,d2 sub.l d3,d2 add.l d2,d2 swap d2 ;d2 = x1 ; y1 = y cos(a) + x sin(a) muls d1,d5 muls d0,d4 add.l d4,d5 add.l d5,d5 swap d5 ;d5 = y1 move (a0)+,d0 move vec_p+12,d1 move (a2,d1),d4 ;cos move (a1,d1),d1 ;sin move d4,d7 move d1,d6 ; z1 = z .Xecos(b) + y1 sin(b) muls d0,d4 muls d5,d1 add.l d4,d1 add.l d1,d1 swap d1 ;d1 = z1 move vec_p+14,d3 move (a2,d3),d4 ;cos move (a1,d3),d3 ;sin move d3,a4 move d4,a5 ; x2 = x1 cos(c) + z1 sin(c) muls d2,d4 muls d1,d3 add.l d4,d3 add.l d3,d3 swap d3 ; y2 = y1 cos(b) - z sin(b) muls d5,d7 muls d0,d6 sub.l d6,d7 add.l d7,d7 swap d7 ; z2 = z1 cos(c) - x1 sin(c) move a4,d5 move a5,d6 muls d1,d6 muls d2,d5 sub.l d5,d6 ; add.l d6,d6 swap d6 add vec_/Kp+18,d6 Add d6,d6 Move (a6,d6),d6 ;perspektiivi Muls d6,d3 Muls d6,d7 Add.l d3,d3 Swap d3 ; Add.l d7,d7 Swap d7 add #160*2,d3 add #128,d7 move d3,(a3)+ move d7,(a3)+ movem (a0)+,d0-d1 cmpi.w #$9999,d0 bne.w next lea $dff002,a6 movem.l vec_p+4,a2/a3 lea pers,a4 lea mulutable,a5 movem (a2)+,d0/d2 moveq #-1,d5 ;init linedraw moveq #80,d4 dwb btst #14,(a6) bne.b dwb move d5,$44-2(a6) move d5,$72-2(a6) move #$8000,$74-2(a6) move d4,$60-2(a6) move d4,$08>66-2(a6) dol movem (a3,d0),d0/d1 movem (a3,d2),d2/d3 move.l draw1,a0 bsr.w drawline movem (a2)+,d0/d2 tst d0 bpl.b dol subq #2,a6 rts vec_p dc.l cube_coords ;Koordikset dc.l cube_con ;Kytkennt dc.l cube_rot ;Pyritetyt koordikset xrot dc 0 yrot dc 0 zrot dc 0 depth dc 80 c macro dc \1*4,\2*4 endm xrot1 dc 0 yrot1 dc 0 zrot1 dc 0 cube_coords Dc 30,30,30 ;koordikset Dc -30,30,30 Dc -30,-30,30 Dc 30,-30,30 Dc 30,30,-30 Dc -30,30,-30 Dc -30,-30,-30 Dc 301"Y,-30,-30 dc $9999 cube_rot ds.b (cube_rot-cube_coords)/3*2 ;Rotated coords cube_con c 0,1 c 1,2 c 2,3 c 3,0 c 4,5 c 5,6 c 6,7 c 7,4 c 0,4 c 1,5 c 2,6 c 3,7 dc -1 xrot2 dc 0 yrot2 dc 0 zrot2 dc 0 cube2_coords Dc -80,-80,30 Dc -140,-80,30 Dc -140,-140,30 Dc -80,-140,30 Dc -80,-80,-30 Dc -140,-80,-30 Dc -140,-140,-30 Dc -80,-140,-30 dc $9999 xrot3 dc 0 yrot3 dc 0 zrot3 dc 0 cube3_coords Dc 140,140,30 ;koordikset Dc 80,140,30 Dc 80,80,30 Dc 140,80,30 Dc 140,2p:2140,-30 Dc 80,140,-30 Dc 80,80,-30 Dc 140,80,-30 dc $9999 xrot4 dc 0 yrot4 dc 0 zrot4 dc 0 cube4_coords Dc -140,140,30 ;koordikset Dc -80,140,30 Dc -80,80,30 Dc -140,80,30 Dc -140,140,-30 Dc -80,140,-30 Dc -80,80,-30 Dc -140,80,-30 dc $9999 xrot5 dc 0 yrot5 dc 0 zrot5 dc 0 cube5_coords Dc 140,-80,30 ;koordikset Dc 80,-80,30 Dc 80,-140,30 Dc 140,-140,30 Dc 140,-80,-30 Dc 80,-80,-30 Dc 80,-140,-30 Dc 140,-140,-30 dc $9999 *************************************3Š************************************ * Line Routine for one plane, by TIP * ************************************************************************* DL_Width = 40 DL_Fill =0 ;0: NOFILL 1:FILL * Needs: * a0 planept * a5 mulutable * a6 $dff002 * d0/d1 x,y start pos * d2/d3 x,y end pos * Kills: * d0-d4/a0-a1 (+d5 in Fill Mode) ifeq DL_Fill DL_MInterns = $ca else DL_MInterns = $4a endc ifne DL_Fill SML = 2 else SML = 0 endc drawline cmp4򶇍 d1,d3 ;draw bge.b .y1ly2 exg d0,d2 exg d1,d3 .y1ly2 sub d1,d3 add d1,d1 add (a5,d1),a0 moveq #0,d1 sub d0,d2 bge.b .xdpos addq #2,d1 neg d2 .xdpos moveq #$f,d4 and d0,d4 ifne DL_Fill move.b d4,d5 not.b d5 endc lsr #3,d0 add d0,a0 ror #4,d4 or #$b00+DL_MInterns,d4 swap d4 cmp d2,d3 bge.b .dygdx addq #1,d1 exg d2,d3 .dygdx add d2,d2 move d2,d0 sub d3,d0 addx d1,d1 move5&r.b .oktants(pc,d1),d4 swap d2 move d0,d2 sub d3,d2 moveq #6,d1 lsl d1,d3 add #$42,d3 lea $52-2(a6),a1 ; WARNING: if you use fastmem and an extreme DMA-Access (e.g. 6 ; planes and copper), you should insert a tst.b (a6) here (for the ; shitty AGNUS-BUG). .wb btst d1,(a6) bne.b .wb ifne DL_Fill bchg d5,(a0) endc move.l d4,$40-2(a6) move.l d2,$62-2(a6) move.l a0,$48-2(a6) move d0,(a1)+ move.l a0,(a1)+ move d3,(a1) rts .oktants6 dc.b SML+1,SML+1+$40 dc.b SML+17,SML+17+$40 dc.b SML+9,SML+9+$40 dc.b SML+21,SML+21+$40 ************************************************************************ ** VertB Interrupt ** ************************************************************************ lev3int movem.l d0-a6,-(sp) move collo,back2b move collo,back2c bsr.w make3dc move.l intp,a0 jsr (a0) bsr.w colortubes movem.l (sp)+,d0-a6 move #1<<5,$dff09c rte 7^Eintr1 movem.l d0-a6,-(sp) tst.b nomus beq.b nom tst.b nomus2 bne.b nom2 lea $dff000,a6 bsr.w p41_music move.b $bfd800,d0 addq.b #7,d0 tit cmp.b $bfd800,d0 bne.b tit bsr.w p41_setrepeat nom tst.b no3d bne.b no3dd bsr.w do3d no3dd movem.l (sp)+,d0-a6 rts nom2 move #$f,$dff096 bra.b nom intr2 bsr.w contime lea linec1,a0 tst (a0) beq.b naf move (a0),d0 and #$f00,d0 beq.b nof sub #$100,(a0) sub #$100,16(a0) rts nof sub #$10,(a0) sub #$10,16(a0) naf rts make8#_3dc lea col1+2,a0 ;vectorin vrieffecti lea colv,a1 move (a1),d0 btst #15,d0 beq.b doobi lea tubev,a1 doobi bsr.w fadedo rts ************************************************************************* * Lev2 keyboard interrupt * ************************************************************************* lev2int move.l d0,-(sp) btst #3,$bfed01 beq.b xlev2 move $dff01c,d0 btst #3,d0 beq.b xlev2 move.b $bfec01,d0 bset #6,$bfee01 97.; clr.b $bfec01 move.b d0,key nop nop bclr #6,$bfee01 xlev2 move #8,$dff09c move.l (sp)+,d0 rte ************************************************************************* * Ajanottaja, CIA keskeytys * ************************************************************************* init_timer move.l vectorbase,a0 move.l $78(a0),lev6save move.l #Lev6Int,$78(a0) move.b #%01111111,$bfdd00 ; Stop CIAA interrupts move.b cTime,$bfd500 ; Timer A:!HW high byte move.b cTime+1,$bfd400 ; Timer A low byte move.b #%00010001,$bfde00 ; Start Timer A (continuous) move.b #%10000001,$bfdd00 ; Start CIAA Timer A interrupt rts remove_timer move.l vectorbase,a0 move.l lev6save,$78(a0) move.b #%01111111,$bfdd00 ; Stop CIAA interrupts rts Lev6Int move #$2000,$dff09c ; Clear Lev6 interrupt request bit tst.b $bfdd00 ; CIAA Timer A irq addq.l #1,time rte fade_init lea f_struc,a4 lea 5*4(a4),a2 move #$f,(a2) lea 2(a2),a3 and #;1$ff,d1 move d1,(a3) addq #2,a1 move.l a0,(a4)+ move.l a1,(a4)+ move.l a2,(a4)+ move.l a3,(a4)+ move d0,(a4)+ move d1,(a4) rts ******************************************************************************* * Startup routines * ******************************************************************************* * Pari valmiiksi mritelty pr_cli = 172 pr_msgport = 92 lib_version = 20 vblankfrequency = 530 gb_actiview<a& = 34 gb_displayflags = 206 gp_copinit = 38 startup movem.l d0-a6,-(sp) move.l 4.w,a6 moveq #0,d0 btst d0,297(a6) beq.b no68010 lea getvbr(pc),a5 jsr -$1e(a6) no68010 move.l d0,vectorbase lea gfxn,a1 moveq #33,d0 * Kick 1.2 or higher jsr openlib(a6) move.l d0,gfxb move.l d0,a6 jsr _lvowaitblit(a6) jsr _lvoownblitter(a6) move.l gb_actiview(a6),oldview * current view address sub.l a1,a1 * flush view to nothing jsr _lvoloadview(a6) jsr _lvowaittof(a6) *=^ wait twice jsr _lvowaittof(a6) movem.l (sp)+,d0-a6 rts closedown movem.l d0-a6,-(sp) move.l gfxb,a6 jsr _lvowaitblit(a6) jsr _lvodisownblitter(a6) move.l oldview,a1 * old viewmodes jsr _lvoloadview(a6) jsr _lvowaittof(a6) * wait twice jsr _lvowaittof(a6) move.l gp_copinit(a6),$dff080 * old copper move d0,$dff088 move.l a6,a1 move.l 4.w,a6 jsr closelib(a6) movem.l (sp)+,d0-a6 rts getvbr dc.l $4E7A0801 * MOVEC VBR,d0 rte *******************************> b * Player v4.1A BETA * * Non-Lev6-version * * Version 410.3 * * 1992 Jarno Paananen * * All rights reserved * ******************************* ; ; call 'P41_init' to initialize the playroutine ; A0 --> Modules address ; A1 --> Samples' address/NULL ; A6 --> Customchip baseaddress ($DFF000) ; returns -1 in D0 if not a correct module ; Used regs: A0/A1/A3/D0/D1 ?!#= ; P41_init lea cn,a3 move.l a0,module-cn(a3) move.l a0,d0 add.l d0,4(a0) add.l d0,8(a0) add.l d0,12(a0) move.l a1,d0 beq.b no_samples_supplied move.l a1,12(a0) no_samples_supplied move.l 12(a0),d0 moveq #0,d1 move.b 2(a0),d1 subq #1,d1 lea 16(a0),a1 lopos add.l d0,(a1) add.l d0,6(a1) lea 16(a1),a1 dbra d1,lopos lea temp0,a1 moveq #20,d0 cl clr (a1)+ dbf d0,cl lea temp1,a1 moveq #20,d0 cl2 clr (a1)+ dbf d0@"?p,cl2 lea temp2,a1 moveq #20,d0 cl3 clr (a1)+ dbf d0,cl3 lea temp3,a1 moveq #20,d0 cl4 clr (a1)+ dbf d0,cl4 move.l 4(a0),a4 move.l a4,Patternbase-cn(a3) move.l 8(a0),a1 move.l a1,Positionbase-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp0-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp1-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp2-cn(a3) add (a1)+,a4 move.l a4,32+temp3-cn(a3) move.l a1,Spos-cn(a3) move #63,rowpos-cn(a3) move #6,speedA#.-cn(a3) move #5,speed2-cn(a3) clr speedis1-cn(a3) clr.l Pdelay-cn(a3) clr (a3) or.b #2,$bfe001 move #$f,$96(a6) moveq #0,d0 ; ; Call 'P40_end' to stop music ; A6 --> Customchip baseaddress ($DFF000) ; P41_end clr $a8(a6) clr $b8(a6) clr $c8(a6) clr $d8(a6) rts ; ; call 'P41_music' every frame to play the musicB$rK% ; A6 --> Customchip baseaddress ($DFF000) ; Used regs: a0-a6/d0-d7 - ; P41_music lea cn,a3 moveq #44,d6 moveq #16,d7 move (a3),d4 addq #1,d4 cmpi speed,d4 beq.w Playtime lea temp0,a5 lea $a0(a6),a4 move d4,(a3) moveq #3,d5 lopas tst 30(a5) beq.w contfxdone moveq #$f,d0 and (a5),d0 add d0,d0 move jtab2(pc,d0),d0 jmp jtab2(pc,d0) jtab2 dc contfxdone-jtab2 dc portup-jtab2 dc portdwn-jtab2 dcC%o< toneport-jtab2 dc vib2-jtab2 dc TPochvslide-jtab2 dc Vibochvslide-jtab2 dc tremo-jtab2 dc arpeggio-jtab2 dc contfxdone-jtab2 dc volslide-jtab2 dc contfxdone-jtab2 dc contfxdone-jtab2 dc contfxdone-jtab2 dc contecommands-jtab2 dc contfxdone-jtab2 contecommands move.b 2(a5),d0 and.b #$f0,d0 cmp #$90,d0 beq.b Retrig cmp #$c0,d0 beq.b notecut cmp #$d0,d0 bne.w contfxdone notedelay moveq #$f,d0 and.b 2(a5),d0 cmpi (a3),d0 bne.w contfxdone move 42(a5),d0 or #$8D&Y000,d0 or d0,dma-cn(a3) move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) st setornot-cn(a3) bra.w contfxdone notecut moveq #$f,d0 and.b 2(a5),d0 cmpi (a3),d0 bne.w contfxdone clr 8(a4) clr 14(a5) bra.w contfxdone Retrig subq #1,26(a5) bne.w contfxdone move 42(a5),d0 move d0,$96(a6) or #$8000,d0 or d0,dma-cn(a3) move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) moveq #$f,d0 and.b 2(a5),d0 move d0,26(a5) st setornot-cn(a3) bra.w contfxdone arplist dc.b 0,1,E'22,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1 arpeggio move (a3),d0 move.b arplist(pc,d0),d0 beq.b arp0 ror.b #1,d0 bcc.b Arp1 moveq #$f,d0 and.b 2(a5),d0 bra.b arp3 arp0 move 28(a5),d0 move periods(pc,d0),6(a4) bra.w contfxdone arp1 moveq #0,d0 move.b 2(a5),d0 lsr.b #4,d0 arp3 add d0,d0 arp4 add 28(a5),d0 move periods(pc,d0),6(a4) bra.w contfxdone periods dc 856,856,808,762,720,678,640,604,570,538,508,480,453 dc 428,404,381,360,339,320,302,285,269,254,F(R;X240,226 dc 214,202,190,180,170,160,151,143,135,127,120,113 dc 850,850,802,757,715,674,637,601,567,535,505,477,450 dc 425,401,379,357,337,318,300,284,268,253,239,225 dc 213,201,189,179,169,159,150,142,134,126,119,113 dc 844,844,796,752,709,670,632,597,563,532,502,474,447 dc 422,398,376,355,335,316,298,282,266,251,237,224 dc 211,199,188,177,167,158,149,141,133,125,118,112 dc 838,838,791,746,704,665,628,592,559,528,498,470,444 dc 419,395,373,352,332,314,296,280,264,249,235,222 G)$W dc 209,198,187,176,166,157,148,140,132,125,118,111 dc 832,832,785,741,699,660,623,588,555,524,495,467,441 dc 416,392,370,350,330,312,294,278,262,247,233,220 dc 208,196,185,175,165,156,147,139,131,124,117,110 dc 826,826,779,736,694,655,619,584,551,520,491,463,437 dc 413,390,368,347,328,309,292,276,260,245,232,219 dc 206,195,184,174,164,155,146,138,130,123,116,109 dc 820,820,774,730,689,651,614,580,547,516,487,460,434 dc 410,387,365,345,325,307,290,274,258,244,230,217 dc 205,H+ݐx1193,183,172,163,154,145,137,129,122,115,109 dc 814,814,768,725,684,646,610,575,543,513,484,457,431 dc 407,384,363,342,323,305,288,272,256,242,228,216 dc 204,192,181,171,161,152,144,136,128,121,114,108 dc 907,907,856,808,762,720,678,640,604,570,538,508,480 dc 453,428,404,381,360,339,320,302,285,269,254,240 dc 226,214,202,190,180,170,160,151,143,135,127,120 dc 900,900,850,802,757,715,675,636,601,567,535,505,477 dc 450,425,401,379,357,337,318,300,284,268,253,238 dc 225,212,200,*(RQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+I,/189,179,169,159,150,142,134,126,119 dc 894,894,844,796,752,709,670,632,597,563,532,502,474 dc 447,422,398,376,355,335,316,298,282,266,251,237 dc 223,211,199,188,177,167,158,149,141,133,125,118 dc 887,887,838,791,746,704,665,628,592,559,528,498,470 dc 444,419,395,373,352,332,314,296,280,264,249,235 dc 222,209,198,187,176,166,157,148,140,132,125,118 dc 881,881,832,785,741,699,660,623,588,555,524,494,467 dc 441,416,392,370,350,330,312,294,278,262,247,233 dc 220,208,196,185,175,J-6Q-165,156,147,139,131,123,117 dc 875,875,826,779,736,694,655,619,584,551,520,491,463 dc 437,413,390,368,347,328,309,292,276,260,245,232 dc 219,206,195,184,174,164,155,146,138,130,123,116 dc 868,868,820,774,730,689,651,614,580,547,516,487,460 dc 434,410,387,365,345,325,307,290,274,258,244,230 dc 217,205,193,183,172,163,154,145,137,129,122,115 dc 862,862,814,768,725,684,646,610,575,543,513,484,457 dc 431,407,384,363,342,323,305,288,272,256,242,228 dc 216,203,192,181,171,161,152,K.144,136,128,121,114 volslide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test63 clr 14(a5) clr 8(a4) bra.w contfxdone test63 moveq #64,d0 cmp 14(a5),d0 bge.b ncs3 move d0,14(a5) move d0,8(a4) bra.b contfxdone ncs3 move 14(a5),8(a4) bra.b contfxdone TPochVSlide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test64 clr 14(a5) clr 8(a4) bra.b toneport test64 moveq #64,d0 cmp 14(a5),d0 bge.b ncs move d0,14(a5) ncs move 14(a5),8(a4) toneport move 18(a5),d0 beq.b contfxdone L/J p move 20(a5),d1 cmp 12(a5),d0 blt.b topoup add d1,12(a5) cmp 12(a5),d0 bgt.b toposetper move d0,12(a5) clr 18(a5) move d0,6(a4) bra.b contfxdone topoup sub d1,12(a5) cmp 12(a5),d0 blt.b toposetper move d0,12(a5) clr 18(a5) toposetper move 12(a5),6(a4) contfxdone add d6,a5 add d7,a4 dbf d5,lopas cmp speed2,d4 beq.b Preplay rts portup moveq #0,D0 move.b 2(a5),d0 sub d0,12(a5) moveq #113,d0 cmpi 12(a5),d0 ble.b PortaUskip move d0,12(a5) move d0,6(a4) braM0M.b contfxdone PortaUskip move 12(a5),6(a4) bra.b contfxdone portdwn moveq #0,d0 move.b 2(a5),d0 add d0,12(a5) cmp #856,12(a5) ble.b portadskip move.w #856,d0 move d0,12(a5) move d0,6(a4) bra.b contfxdone portadskip move 12(a5),6(a4) bra.b contfxdone preplay tst Pdelay-cn(a3) beq.b djdj subq #1,Pdelay-cn(a3) rts djdj lea temp0,a5 move.l module,a0 move.l patternbase,a4 moveq #3,d5 loaps tst.b 3(a5) beq.b takeone bmi.b keepsame subq.b #1,3(a5) clr 30(a5) add N1ǩd6,a5 dbf d5,loaps rts keepsame addq.b #1,3(a5) bra.b dko takeone tst.b 40+1(a5) beq.b takenorm subq.b #1,40+1(a5) move.l 36(a5),a2 move.l (a2)+,(a5) move.l a2,36(a5) bra.b dko takenorm move.l 32(a5),a2 tst.b (a2) bmi.b offs move.l (a2)+,(a5) move.l a2,32(a5) bra.b dko offs move (a2)+,40(a5) move (a2)+,d0 move.l a2,32(a5) lea (a4,d0),a2 move.l (a2)+,(a5) move.l a2,36(a5) dko st 30(a5) move (a5),d0 and #$1f0,d0 beq.b koto lea (a0,d0),a1 move.l a1,4(a5) O2>(move.l 12(a1),14(a5) koto add d6,a5 dbf d5,loaps rts Playtime clr (a3) tst Pdelay2-cn(a3) beq.b djddj subq #1,Pdelay2-cn(a3) rts djddj tst speedis1-cn(a3) beq.b jaedmo bsr.w preplay jaedmo lea temp0,a5 lea $a0(a6),a4 lea periods,a2 st setornot-cn(a3) moveq #0,d4 moveq #3,d5 los tst 30(a5) beq.b fxdone moveq #$f,d1 and (a5),d1 subq #3,d1 beq.b settoneport subq #2,d1 beq.b toponochange moveq #$7e,d0 and.b (a5),d0 beq.b nocha0 clr.b 23(a5) add 16(a5)P3(Q,d0 move d0,28(a5) move (a2,d0),12(a5) move 42(a5),d0 move d0,$96(a6) or d0,d4 subq #4,d1 beq.w sampleoffset move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) nocha0 moveq #$f,d0 and (a5),d0 lea jtab,a1 add d0,d0 add (a1,d0),a1 jmp (a1) settoneport move.b 2(a5),d0 beq.b toponochange move.b d0,20+1(a5) toponochange moveq #$7e,d0 and.b (a5),d0 beq.b fxdone add 16(a5),d0 move d0,28(a5) move (a2,d0),18(a5) fxdone move.l 12(a5),6(a4) add d6,a5 add d7,a4 dbfQ4b# d5,los move d4,$96(a6) move.b d4,dma+1-cn(a3) rts ; ; Call this routine 6 lines or more after P41_music ; A6 --> CUSTOMBASE $DFF000 ; P41_setrepeat lea cn,a3 tst setornot-cn(a3) beq.b killer clr setornot-cn(a3) move dma,$96(a6) ; moveq #40,d0 ;wait2 dbf d0,wait2 move.b $bfd800,d0 addq.b #2,d0 wait2 cmp.b $bfd800,d0 bne.b wait2 tst (a3) bne.b setrepeat subq #1,rR5)Ƙowpos-cn(a3) bmi.b nextpattern bra.b setrepeat Killer rts sampleoffset move #$ff00,d1 and 2(a5),d1 move.l 4(a5),a1 move.l (a1)+,d0 add.l d1,d0 move.l d0,(a4) lsr #1,d1 move (a1),d0 sub d1,d0 bpl.b offok move.l -4(a1),(a4) moveq #1,d0 offok move d0,4(a4) bra.b fxdone nextpattern move.l patternbase,a4 move #63,rowpos-cn(a3) move.l spos-cn(a3),a1 move (a1)+,d0 bpl.b dk move.l Positionbase,a1 move (a1)+,d0 dk lea (a4,d0),a0 movem (a1)+,d0-d2 move.l a1,Spos-cn(a3S6A) move.l a0,32+temp0-cn(a3) lea (a4,d0),a0 move.l a0,32+temp1-cn(a3) lea (a4,d1),a0 move.l a0,32+temp2-cn(a3) lea (a4,d2),a0 move.l a0,32+temp3-cn(a3) setrepeat lea $a0(a6),a1 move.l 4+temp0,a0 move.l 6(a0),(a1) move 10(a0),4(a1) move.l 4+temp1,a0 move.l 6(a0),16(a1) move 10(a0),20(a1) move.l 4+temp2,a0 move.l 6(a0),32(a1) move 10(a0),36(a1) move.l 4+temp3,a0 move.l 6(a0),48(a1) move 10(a0),52(a1) rts volume move.b 2(a5),14+1(a5) bra.w fxdone posjmp moveq #0T7uJ,d0 move.b 2(a5),d0 asl #2,d0 add.l Positionbase,d0 move.l d0,spos-cn(a3) pattbreak move #64,rowpos-cn(a3) move.l spos-cn(a3),a1 move.l patternbase,a0 move (a1)+,d0 bpl.b dk2 move.l Positionbase,a1 move (a1)+,d0 dk2 movem (a1)+,d1-d3 move.l a1,Spos-cn(a3) lea (a0,d0),a1 move.l a1,32+temp0-cn(a3) lea (a0,d1),a1 move.l a1,32+temp1-cn(a3) lea (a0,d2),a1 move.l a1,32+temp2-cn(a3) add d3,a0 move.l a0,32+temp3-cn(a3) bra.w fxdone vibrato move.b 2(a5),d0 beq.w fxdoneU8yҞ` move.b d0,d1 move.b 22(a5),d2 and.b #$f,d0 beq.b vibskip and.b #$f0,d2 or.b d0,d2 vibskip and.b #$f0,d1 beq.b vibskip2 and.b #$f,d2 or.b d1,d2 vibskip2 move.b d2,22(a5) bra.w fxdone settremo move.b 2(a5),d0 beq.w fxdone move.b d0,d1 move.b 24(a5),d2 moveq #$f,d3 and.b d3,d0 beq.b treskip and.b #$f0,d2 or.b d0,d2 treskip and.b #$f0,d1 beq.b treskip2 and.b d3,d2 or.b d1,d2 treskip2 move.b d2,24(a5) bra.w fxdone ecommands move.b 2(a5),d0 and.b #$f0,d0 lsr V9E6#3,d0 move etab(pc,d0),d0 jmp etab(pc,d0) etab dc filter-etab dc fineup-etab dc finedwn-etab dc fxdone-etab dc fxdone-etab dc setfinetune-etab dc fxdone-etab dc fxdone-etab dc fxdone-etab dc setretrig-etab dc finevup-etab dc finevdwn-etab dc fxdone-etab dc stopnote-etab dc pattdelay-etab dc fxdone-etab filter move.b 2(a5),d0 and.b #$fd,$bfe001 or.b d0,$bfe001 bra.w fxdone fineup moveq #$f,d0 and.b 2(a5),d0 sub d0,12(a5) moveq #113,d0 cmpi 12(a5),d0 ble.w fW:̈xxdone move d0,12(A5) bra.w fxdone finedwn moveq #$f,d0 and.b 2(a5),d0 add d0,12(a5) cmp #856,12(a5) ble.w fxdone move #856,12(a5) bra.w fxdone finevup moveq #$f,d0 and.b 2(a5),d0 add d0,14(a5) moveq #64,d0 cmpi 14(a5),d0 bge.w fxdone move d0,14(a5) bra.w fxdone Setfinetune moveq #$f,d0 and.b 2(a5),d0 add d0,d0 move mulutab(pc,d0),16(a5) bra.w fxdone mulutab dc 0,74,148,222,296,370,444,518,592,666,740,814,888,962,1036,1110 Setretrig moveq #$f,d0 and.b 2(a5),X;Gkd0 move d0,26(a5) bra.w fxdone finevdwn moveq #$f,d0 and.b 2(a5),d0 sub d0,14(a5) bpl.w fxdone clr 14(a5) bra.w fxdone stopnote move 42(a5),d0 eor d0,d4 bra.w fxdone Pattdelay moveq #$f,d0 and.b 2(a5),d0 move d0,Pdelay-cn(a3) move d0,Pdelay2-cn(a3) bra.w fxdone cspeed move.b 2(a5),d0 cmp.b #1,d0 bne.b jkd move.b d0,speed+1-cn(a3) move.b d0,speed2+1-cn(a3) st speedis1-cn(a3) bra.w fxdone jkd move.b d0,speed+1-cn(a3) subq.b #1,d0 move.b d0,speed2+1-cn(a3) cY<glr speedis1-cn(a3) bra.w fxdone VibochVSlide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test62 clr 14(a5) clr 8(a4) bra.b vib2 test62 moveq #64,d0 cmp 14(a5),d0 bge.b ncs2 move d0,14(a5) ncs2 move 14(a5),8(a4) vib2 move #$f00,d0 move 22(a5),d1 and d1,d0 lsr #2,d0 lsr #1,d1 and #$3e,d1 add d1,d0 move 12(a5),d1 tst.b 23(a5) bmi.b vibNeg add vibtab(pc,d0),d1 bra.b vib4 vibneg sub vibtab(pc,d0),d1 vib4 move d1,6(a4) move.b 22(a5),d0 lsr.b #2,d0 and #$3c,d0 aZ=idd.b d0,23(a5) bra.w contfxdone tremo move #$f00,d0 move 24(a5),d1 and d1,d0 lsr #2,d0 lsr #1,d1 and #$3e,d1 add d1,d0 move 14(a5),d1 tst.b 25(a5) bmi.b treNeg add vibtab(pc,d0),d1 cmp #64,d1 ble.b tre4 moveq #64,d1 bra.b tre4 treneg sub vibtab(pc,d0),d1 bpl.b tre4 moveq #0,d1 tre4 move d1,8(a4) move.b 24(a5),d0 lsr.b #2,d0 and #$3c,d0 add.b d0,25(a5) bra.w contfxdone vibtab incbin dh0:asm/data/vibtab jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab d[>ic fxdone-jtab dc vibrato-jtab dc fxdone-jtab dc fxdone-jtab dc settremo-jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc posjmp-jtab dc volume-jtab dc pattbreak-jtab dc ecommands-jtab dc cspeed-jtab ************************************************************************ ** Data, pointers, buffers ** ************************************************************************ section sal,data_p temp0 ds 21 dc 1 temp1 ds 21\?5 dc 2 temp2 ds 21 dc 4 temp3 ds 21 dc 8 cn dc 0 dma dc $8000 setornot dc 0 rowpos dc 63 speed dc 6 speed2 dc 5 speedis1 dc 0 spos dc.l 0 pdelay dc 0 pdelay2 dc 0 Positionbase dc.l 0 Patternbase dc.l 0 intaddr dc.l 0 module dc.l 0 song incbin "p41.repulsive sound" dosname dc.b "dos.library",0 dosb dc.l 0 scorefile dc.b "Sormelus.pisteet",0 even ** New stuff vectorbase dc.l 0 oldview dc.l 0 gfxb dc.l 0 gfxn dc.b "graphics.library",0 even ** err_text dc.b " ]@P*** Levyvirhe *** " dc.b " Ei voitu avata pistetiedostoa " dc.b " " dc.b " " nape_text dc.b " Mit]]]h?? " dc.b " Joku idiootti on n]pel[inyt " dc.b " pistetiedostoa! " dc.b " " t_alku dc.b " **************** " dc.b " **** SORMELUS **** ^AU " dc.b " ***** v1.2 ***** " dc.b " " dc.b " Space......................Aloitus " dc.b " Return.....................Tason vaihto" dc.b " F1.........................Tuloslista " dc.b " F2.........................Ohjeita " dc.b " F3.........................Musiikki " dc.b " F4.........................Tekij]t " dc.b " Esc........................Lopetus " oho dc.b " Taso......................." oh_Bro1 dc.b "?? " dc.b " " dc.b " Enn]tys: " oho2 dc.b " ???????????????????????????????????????" t_help dc.b " Tarkoitus on painaa mahdollisimman " dc.b " nopeasti kuvaruutuun ilmestyv]] " dc.b " merkki] vastaavaa n]pp]int]. " dc.b " Vihre]t viivat ilmoittavat onnistumi- " dc.b " sesta ja punaiset ep]onnistumisesta. " dc.b " Virheist] EI saa rangaistussekunteja, " dc.b " vaa`CSn uuden merkin. " dc.b " " dc.b " Luku vasemmassa alareunassa ilmoittaa " dc.b " j]ljell] olevien n]pp]inten m]]r]n, " dc.b " keskell] n]kyy aika, ja oikeassa " dc.b " reunassa virheitten lukum]]r]. " dc.b " " dc.b " Escill] voi lopettaa kesken. " dc.b " " infot dc.b " ***************************************" aD?Vdc.b " " dc.b " Suunnittelu: " dc.b " T.Lindstr[m, J.Jansson, K-P Koljonen " dc.b " " dc.b " Hippokuva & musiikki: " dc.b " T.Lindstr[m " dc.b " Koodaus: " dc.b " K-P Koljonen " dc.b " " dc.b " ***************************************"bEL dc.b " V1.2:n pit]isi toimia kaikissa " dc.b " Amigoissa. " dc.b " " dc.b " " arviot dc.b " Aika.............???.?? s " dc.b " Virheit].........??? " dc.b " Virheprosentti...??? " dc.b " " dc.b " " a_aika = arviot+25 a_virh = arviot+65cFn0 a_vpro = arviot+105 scoretext dc.b " Uusi enn]tys! " dc.b " Kirjoita nimesi: " lettert blk.b 40," " titext blk.b 40," " time2 = titext+17 tulosalku dc.b " Aika Nimi Taso" tulosohjeet dc.b " " dc.b " Nuolet: yl[s ja alas, Space: Pois " asck dc.b "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ{},. ",10,11,"-" rawk dc.b k_1,k_2,k_3,k_4,k_5,k_6,k_7,k_8,k_9,k_0,k_a,k_b,k_dG tpc,k_d dc.b k_e,k_f,k_g,k_h,k_i,k_j,k_k,k_l,k_m,k_n,k_o,k_p dc.b k_q,k_r,k_s,k_t,k_u,k_v,k_w,k_x,k_y,k_z,$ad,$ab,$8f,$8d dc.b k_space,k_return,k_bspace,$e9 ; , . ; - chanfa dc 6 chans dc $a0,$b0,$d0,$c0 dc 1<<0,1<<1,1<<3,1<<2 cTime dc 28419/2 ;cia timer delay (0.01 s) f_struc ds.l 6 f_col dc 0 hippocols dc $0fff,$0210,$0bbb,$0ddd,$0864,$0975,$0a74,$0b85 acopp dc.l 0 adma dc 0 airq dc 0 tubecols dc $051,$073,$0a5,$1d8,$2fa,$1d8,$0a5,$073,$051 dc $530,eH$750,$a70,$d90,$fb0,$d90,$a70,$750,$530 dc $107,$309,$50b,$70d,$91f,$70d,$50b,$309,$107 dc $431,$653,$875,$a97,$db9,$a97,$875,$653,$431 dc $77f,$99f,$bbf,$ddf,$fff,$ddf,$bbf,$990,$77f dc $724,$946,$b68,$d8a,$fac,$d8a,$b68,$946,$724 dc $076,$098,$2ba,$4dc,$6fe,$4dc,$2ba,$098,$076 dc $370,$590,$7b0,$9d0,$bf0,$9d0,$7b0,$590,$370 dc $750,$970,$b90,$db0,$fd0,$db0,$b90,$970,$750 dc $077,$099,$0bb,$0dd,$0ff,$0dd,$0bb,$099,$077 dc $407,$609,$80b,$a0d,$c1f,$a0d,$80b,$609,$407 dc $40fIv`C0,$620,$840,$a60,$c80,$a60,$840,$620,$400 dc $707,$099,$b0b,$0dd,$f0f,$0dd,$b0b,$099,$707 dc $770,$992,$bb4,$dd6,$ff8,$dd6,$bb4,$992,$770 dc $007,$009,$20b,$40d,$61f,$40d,$20b,$009,$007 dc $f70,$f90,$fb0,$fd0,$ff0,$fd0,$fb0,$f90,$f70 dc $060,$280,$4a0,$6c0,$8e0,$6c0,$4a0,$280,$060 dc $700,$900,$b00,$d00,$f00,$d00,$b00,$900,$700 dc $007,$009,$00b,$00d,$00f,$00d,$00b,$009,$007 dc $f77,$f99,$fbb,$fdd,$fff,$fdd,$fbb,$f99,$f77 dc $777,$999,$bbb,$ddd,$fff,$ddd,$bbb,$999,$777 dc $gJ 530,$a60,$f90,$a60,$530,$a60,$f90,$a60,$530 dc $000,$000,$000,$000,$000,$000,$000,$000,$000 tubesamount = 23 tubecolp dc.l tubecols tubep dc $f tubecount dc 0 tubedelay dc 150 tubetobe dc 0 tubetobe2 dc 0 memarea dc.l 0 copsave dc.l 0 dmasave dc 0 irqsave dc 0 lev2save dc.l 0 lev3save dc.l 0 lev6save dc.l 0 intp dc.l 0 ;mihin hypitn keskeytyksess wrong dc 0 nleft dc.b 0 kys dc.b 20-1 nomus dc.b 0 nomus2 dc.b 0 no3d dc.b 0 tulosposition dc.b 1 tarkf dc.b 0hK}C( loaderf dc.b 0 key dc.b 0 ;Coolcolcolcol! nosaving dc.b 0 even colv dc 0 time dc.l 0 sin incbin dh0:asm/data/sin pers incbin dh0:asm/data/perspective mulutable a set 0 rept 256 dc a a set a+80 endr samplo1 dc.l sam1 dc (sam2-sam1)/2,212 dc.l sam2 dc (sam3-sam2)/2,424 dc.l sam3 dc (sam4-sam3)/2,300 dc.l sam4 dc (sam5-sam4)/2,700 dc.l sam5 dc (sam6-sam5)/2,424 dc.l sam6 dc (sam7-sam6)/2,300 dc.l sam7 dc (sam8-sam7)/2,212 dc.l sam8 dc (sam9-sam8)/2,500 diLbc.l sam9 dc (sam10-sam9)/2,424 dc.l sam10 dc (sam11-sam10)/2,424 dc.l sam11 dc (sam12-sam11)/2,424 dc.l sam12 dc (sam13-sam12)/2,212 dc.l sam13 dc (sam14-sam13)/2,424 dc.l sam14 dc (sam15-sam14)/2,424 samplo15 dc.l sam15 dc (sam16-sam15)/2,212 dc.l sam16 dc (jyms-sam16)/2,300 dc.l s1 dc (s2-s1)/2,424 dc.l s2 dc (s3-s2)/2,424 dc.l s3 dc (s4-s3)/2,370 dc.l s4 dc (s5-s4)/2,424 dc.l s5 dc (s6-s5)/2,212 dc.l s6 dc (s7-s6)/2,424 dc.l s7 dc (s8-sjMNʾ7)/2,424 dc.l s8 dc (s9-s8)/2,424 dc.l s9 dc (s10-s9)/2,424 dc.l s10 dc (s11-s10)/2,424 dc.l s11 dc (s12-s11)/2,424 dc.l s12 dc (s13-s12)/2,424 dc.l s13 dc (s14-s13)/2,424 dc.l s14 dc (s15-s14)/2,424 dc.l s15 dc (s16-s15)/2,424 dc.l s16 dc (s99-s16)/2,370 scorebuffer rept 99 dc.b " 999.99 ............................. " endr sbend dc.l $7b56d ;checksum sbuflen = sbend-scorebuffer nextlist = 40 ds.b 40 ***************************************kN%********************************** ** More data & Copperlists ** ************************************************************************* section "ousmous",data_c cop bcon1 dc $100,$2200!1<<15!1<<10,$108,0,$10a,0 ;med-res dc $92,$38,$94,$d0 dc $8e,$2c81,$90,$2cc1 bplp dc $e0,$7,$e2,$5000 bplp1 dc $e4,$7,$e6,$5000 dc $180,0 col1 dc $192,0 tube dc $220f,-2,$180,0 dc $230f,-2,$180,0 dc $240f,-2,$180,0 dc $250f,-2,$180 tubev dc 0 lOY dc $260f,-2,$180,0 dc $270f,-2,$180,0 dc $280f,-2,$180,0 dc $290f,-2,$180,0 dc $2a0f,-2,$180,0 dc $2b0f,-2 dc $180 back1 dc 0,$180 back2 dc 0,$182 collo dc 0 dc $8e0f,-2 bcon dc $100,$2200!1<<15!1<<10 modu dc $108,0,$10a,0 dc $8f0f,-2,$180 back3 linec1 dc 0 dc $910f,-2,$180 back6 dc 0 dc $a10f,-2,$180 back4 linec2 dc 0 dc $a30f,-2,$180 back5 dc 0 dc $a40f,-2 bcon2 dc $100,$2200!1<<15!1<<10 dc $108,0,$10a,0 dc $e80f,-2,$182 back2c dc $f00 dc $f80f,-2,$182 bacmPXlk2b dc 0 dc -31,-2 tube2 dc $2b0f,-2,$180,0 dc $2c0f,-2,$180,0 dc $2d0f,-2,$180,0 dc $2e0f,-2,$180,0 dc $2f0f,-2,$180,0 dc $300f,-2,$180,0 dc $310f,-2,$180,0 dc $320f,-2,$180,0 dc $330f,-2,$180,0 dc $340f,-2,$180,0 dc.l -2 font incbin "dh0:asm/data/ruby.r" sam1 dc 0 incbin "snd/snix" sam2 dc 0 incbin "snd/splut" sam3 dc 0 incbin "snd/fviuh" sam4 dc 0 incbin "snd/boink" sam5 dc 0 incbin "snd/snare.glASS" sam6 dc 0 incbin "snd/ik_boing" sam7 dc 0 incbin "snd/nupnQKpio" sam8 dc 0 incbin "snd/ik_ouz1" sam9 dc 0 incbin "snd/ik_hit1" sam10 dc 0 incbin "snd/ik_hit2" sam11 dc 0 incbin "snd/ik_hit7" sam12 dc 0 incbin "snd/flo_platz" sam13 dc 0 incbin "snd/flo_bulp" sam14 dc 0 incbin "snd/sp_aagh" sam15 dc 0 incbin "snd/sp_pling" sam16 dc 0 incbin "snd/sp_ou" jyms incbin "snd/patang" s1 dc 0 incbin "snd/alien" s2 dc 0 incbin "snd/bb_dung" s3 dc 0 incbin "snd/bb_kassa" s4 dc 0 incbin "snd/bb_pdiung" s5 dc 0 incbin "snd/doim" s6 dc 0 incboRin "snd/eug" dc.b 0 s7 dc 0 incbin "snd/flop" s8 dc 0 incbin "snd/ig_jududu" s9 dc 0 incbin "snd/ig_kash" s10 dc 0 incbin "snd/ig_pdiu" s11 dc 0 incbin "snd/ig_riu" s12 dc 0 incbin "snd/ig_rull" s13 dc 0 incbin "snd/ig_rums" s14 dc 0 incbin "snd/sw_drr" s15 dc 0 incbin "snd/sw_pang" s16 dc 0 incbin "snd/uuh" s99 even samp incbin "smp.repulsive sound" even section varalista,bss_p varalista ds.b sbuflen+4 tulosbuf ds.b sbuflen section kuvat,bss_c screen ds.b $5000 ;1 p'gЯmed-res plane ds.b $5000*2 ;vec area nd/flop" s8 dc 0 incbin "snd/ig_jududu" s9 dc 0 incbin "snd/ig_kash" s10 dc 0 incbin "snd/ig_pdiu" s11 dc 0 incbin "snd/ig_riu" s12 dc 0 incbin "snd/ig_rull" s13 dc 0 incbin "snd/ig_rums" s14 dc 0 incbin "snd/sw_drr" s15 dc 0 incbin "snd/sw_pang" s16 dc 0 incbin "snd/uuh" s99 even samp incbin "smp.repulsive sound" even section varalista,bss_p varalista ds.b sbuflen+4 tulosbuf ds.b sbuflen section kuvat,bss_c screen ds.b $5000 ;1 SHTFD~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVUT7 sormelus2.s.spSU.?R; jmp percent *********************************************************************** ** Sormelus v1.2 ** * by * ** K-P ** *********************************************************************** * $VER: Sormelus 1.2 version 58 incdir dh0:Asm/include/ include graphics/graphics_lib.i include kSV&eys.i incdir Openlib = -$228 Closelib = -$19e Open = -$1e Close = -$24 Read = -$2a Write = -$30 Deletefile = -$48 bplcon = $2200!1<<15!1<<10 section moppi,code_p movem.l d0-a6,-(sp) lea scorebuffer,a0 ;lista talteen lea varalista,a1 move #sbuflen+4-1,d0 kopi move.b (a0)+,(a1)+ dbf d0,kopi bsr.w loadscores move #4*50,d1 bsr.w delay bsr.w startup lea $dff000,a6 move 2(a6),dmasave move $1c(a6),irqsave bsr.w vblank move #$7ff,$96(a6) move #1<<15!1<<9SW1!1<<8!1<<7!1<<6,$96(a6) move #$7fff,$9a(a6) move #1<<15!1<<5!1<<14!1<<3,$9a(a6) bsr.w init_timer move.l vectorbase,a0 move.l $68(a0),lev2save move.l #lev2int,$68(a0) lea $144(a6),a0 ;Spritet vekke ja kki moveq #7,d0 clop clr.l (a0)+ addq.l #4,a0 dbf d0,clop movem.l d0-a6,-(sp) clr.l song lea song+4,a0 lea samp,a1 bsr.w p41_init movem.l (sp)+,d0-a6 bsr.w clearscreen lea screen,a0 move.l a0,d0 move d0,bplp+6 swap d0 move d0,bplp+2 bsr.w trip1 move.l SX?&x#cop,$80(a6) move d0,$88(a6) move.l #intr1,intp move.l vectorbase,a0 move.l $6c(a0),lev3save move.l #lev3int,$6c(a0) st nomus tst.b loaderf beq.b jaaha bsr.w loaderror ;latausvirhe bra.b okay jaaha tst.b tarkf beq.b okay bsr.w tarkerr ;User's got -100 IQ lea scorebuffer,a1 ;puhdas lista kehiin lea varalista,a0 move #sbuflen+4-1,d0 kopi2 move.b (a0)+,(a1)+ dbf d0,kopi2 okay bsr.w vaanto bsr.w survo_nimi bra.b mainloop alko bsr.w writeroff mainloop clr SYh1wrong ;putsataan vanhat clr.l time clr collo lea t_alku,a0 moveq #15-1,d2 lea screen,a2 clr collo bsr.w writeron bsr.w collon mouse0 bsr.w vblank cmp.b #k_esc,key beq.b vekke cmp.b #k_return,key beq.w vaihto cmp.b #k_f4,key beq.w infoa cmp.b #k_f2,key beq.w helppia cmp.b #k_f1,key beq.w tuloslista cmp.b #k_f3,key bne.b vaack tabulo cmp.b #k_f3-1,key bne.b tabulo not.b nomus2 vaack cmp.b #k_space,key bne.b mouse0 bsr.w writeroff bsr.w teddybear tSZ᭿st.b d7 ;escaped? bne.w mainloop bsr.w do_tulos bra.w mainloop vekke bsr.w writeroff bsr.w remove_timer move.l vectorbase,a0 move.l lev2save,$68(a0) move.l lev3save,$6c(a0) move irqsave,d0 move #$7fff,$9a(a6) or #$c000,d0 move d0,$9a(a6) bsr.w p41_end move dmasave,d0 move #$7ff,$96(a6) or #$8000,d0 move d0,$96(a6) bsr.w closedown bsr.w savescores movem.l (sp)+,d0-a6 moveq #0,d0 rts vblank btst #0,$dff005 beq.b vblank vbonk btst #0,$dff005 bne.b vboS[nk rts delay bsr.b vblank dbf d1,delay moveq #0,d1 rts collon move #$8000,colv clo bsr.b vblank bsr.b vblank add #$111,collo cmpi #$eee,collo bne.b clo rts clearscreen btst #14,2(a6) bne.b clearscreen move.l #screen,$54(a6) clr $66(a6) move.l #$01000000,$40(a6) move #2*256*64+20,$58(a6) bloblb btst #14,2(a6) bne.b bloblb rts ************************************************************************ ** Tekstitoiminnot S\G< ** ************************************************************************ helppia lea t_help,a0 * Ohjeita bra.b prant infoa lea infot,a0 prant bsr.w writeroff moveq #15-1,d2 lea screen,a2 clr collo bsr.w writeron bsr.b collon spaze cmp.b #k_space,key bne.b spaze bsr.w writeroff lea t_alku,a0 moveq #15-1,d2 lea screen,a2 clr collo bsr.w writeron bsr.w collon bra.w vaack tuloslista * Tuloslista lea scorebuffer,a0 lea tulosbuf,a1 move.l #sbuflS ]ten,d0 copyl move.b (a0)+,(a1)+ dbf d0,copyl lea tulosbuf,a0 moveq #99-1,d0 move.b #'0',d1 move.b #'1',d2 tuloop lea 38(a0),a0 move.b d1,(a0)+ move.b d2,(a0)+ addq #1,d2 cmp.b #'9',d2 ble.b nook addq #1,d1 move.b #'0',d2 nook dbf d0,tuloop moveq #0,d7 lea tulosbuf,a3 move.b tulosposition,d7 move.l d7,d6 subq #1,d6 mulu #11*40,d6 add.l d6,a3 dotulos bsr.w writeroff lea tulosalku,a0 moveq #1-1,d2 lea screen,a2 clr collo bsr.w writeron move.l a3,a0 moS ^8veq #11-1,d2 lea screen+2*17*80,a2 bsr.w writeron lea tulosohjeet,a0 moveq #2-1,d2 lea screen+13*17*80,a2 bsr.w writeron bsr.w collon tulosloop cmp.b #k_up,key beq.b lista_up cmp.b #k_down,key beq.b lista_down ctulos cmp.b #k_space,key bne.b tulosloop move.b d7,tulosposition bsr.w writeroff lea t_alku,a0 moveq #15-1,d2 lea screen,a2 clr collo bsr.w writeron bsr.w collon bra.w vaack lista_up subq #1,d7 bne.b jepup moveq #1,d7 bra.b ctulos jepup lS _.]ea -11*40(a3),a3 bra.w dotulos lista_down addq #1,d7 cmp.b #9+1,d7 bne.b jepdown moveq #9,d7 bra.b ctulos jepdown lea 11*40(a3),a3 bra.w dotulos ************************************************************************ ** Tason vaihto ** ************************************************************************ vaihto moveq #2-1,d5 lea oho1,a4 move.b #'?',(a4)+ move.b #'?',(a4)+ subq #2,a4 lea oho,a0 moveq #1-1,S `lod2 lea screen+11*17*80,a2 bsr.w writeron move #$f00,d7 gimme bsr.w vblank move d7,back2c eor #$f0,d7 bsr.w rawkeycon beq.b gimme cmpi.b #'0',d0 blo.b gimme cmpi.b #'9'+1,d0 bhs.b gimme move.b d0,(a4)+ lea oho,a0 moveq #1-1,d2 lea screen+11*17*80,a2 bsr.w writeron dbf d5,gimme move.b -(a4),d1 move.b -(a4),d0 cmp.b #'0',d0 bne.b vok cmp.b #'0',d1 bne.b vok move.b #'2',(a4)+ move.b #'0',(a4)+ move.b #20-1,kys bra.b vokk vok and.b #$f,d0 and.b S aUT#$f,d1 mulu #10,d0 add d1,d0 subq #1,d0 move.b d0,kys vokk bsr.w survo_nimi lea oho2,a0 lea screen+14*17*80,a2 bsr.w writeron lea oho,a0 lea screen+11*17*80,a2 bsr.w writeron bra.w vaack vaanto moveq #0,d0 move.b kys,d0 ;kysytaan n nappainta addq #1,d0 bsr.w convert lea oho1,a0 eeh999 move.b d1,(a0)+ move.b d2,(a0) rts ************************************************************************ ** Lopputulos SbD ** ************************************************************************ do_tulos lea time2,a0 lea a_aika,a1 moveq #6-1,d0 dolop move.b (a0)+,(a1)+ dbf d0,dolop move.l time,d0 bsr.w screw_it2 lea time2,a0 ; lea a_koko,a1 ; moveq #6-1,d0 ;dolop2 move.b (a0)+,(a1)+ ; dbf d0,dolop2 lea a_virh,a0 move wrong,d0 bsr.b convert move.b d0,(a0)+ move.b d1,(a0)+ move.b d2,(a0)+ percent moveq #0,d0 moveq #0,d1 move wrong,d0 move.b kys,d1 addq.b #1,d1 mulu #100,d0 Sc<&$divu d1,d0 swap d0 clr d0 swap d0 lea a_vpro,a0 ;tehdn prosenttiluku move.b #'%',(a0)+ move #1000,d1 bsr.b roor moveq #100,d1 bsr.b roor moveq #10,d1 bsr.b roor or.b #'0',d0 move.b d0,(a0)+ lea arviot,a0 ;Kosh moveq #5-1,d2 lea screen+4*17*80,a2 bsr.w writeron bsr.w kosaus bsr.w do_hiscores rts roor divu d1,d0 add.b #'0',d0 move.b d0,(a0)+ clr d0 swap d0 rts convert moveq #0,d1 ; Hexaluku -> ASCII moveq #0,d2 moveq #0,d3 swap d0 cSd˘lr d0 swap d0 divu #100,d0 swap d0 move d0,d1 clr d0 swap d0 divu #10,d1 swap d1 move d1,d2 clr d1 swap d1 or.b #$30,d0 or.b #$30,d1 or.b #$30,d2 rts ************************************************************************ ** Ajanmittaus ** ************************************************************************ contime movem.l d0-d4/a0-a4,-(Sp) move.l time,d0 bsr.b screw_it lea titext+8,a0 moveq #0,d0 moSeǪ?ve.b nleft,d0 bsr.b convert move.b d1,(a0)+ move.b d2,(a0) lea titext+30,a0 moveq #0,d0 move wrong,d0 bsr.b convert move.b d0,(a0)+ move.b d1,(a0)+ move.b d2,(a0) lea titext,a0 ;Sullotaan aika moveq #1-1,d2 lea screen+14*17*80,a2 bsr.w writeron movem.l (sp)+,d0-d4/a0-a4 rts screw_it2 ;aika pajkalleen moveq #0,d5 move wrong,d5 ; mulu #3,d5 * ei fargin sakotuksia bra.b ehe screw_it moveq #0,d5 ehe lea time2,a1 divu #100,d0 swap d0 moveq #0,d4 move d0Sf^,d4 clr d0 swap d0 add d5,d0 bsr.w convert move.b d0,(a1)+ * 100.00 move.b d1,(a1)+ * 010.00 move.b d2,(a1)+ * 001.00 move.b #'.',(a1)+ move.l d4,d0 bsr.w convert move.b d1,(a1)+ * 000.10 move.b d2,(a1) * 000.01 rts *******************NH*************************************************** ** Peliosuus NH ** ************************************************************************ teddybear bsr.w p41_end ;MeSg5lut pois move #$1200,bcon+2 ;Loresi move #$1200!1<<15,bcon1+2 move #$1200!1<<15,bcon2+2 move #40,modu+2 move #40,modu+6 move #$eee,collo move.b kys,nleft addq.b #1,nleft move.l #intr2,intp ;oikee interrupti clr collo bsr.w collon move.l #1*50,d1 ;viivett bsr.w delay bsr.w random move.l d0,d1 and.b #$1f,d1 bsr.w delay lea samplo15,a0 ;pling bsr.w crash lea lettert,a0 lea linec1,a1 lea screen+6*17*80,a2 lea asck,a3 lea rawk,a4 lea key,a5 moveq Sh\ #0,d5 move.b kys,d5 ;Testataan # nppint st d4 move #1<<15!1<<13,$9a(a6) ;aloitetaan ajanotto again bsr.w random cmp.b d4,d0 ;ei kahta samaa perkkin beq.b again cmpi.b #41-1,d0 ;pysytn oikealla alueella bhs.b again move.b d0,d4 move.b (a4,d0),d1 move.b (a3,d0),d0 move.b d0,9(a0) moveq #0,d2 bsr.w writeron clr.b (a5) move d1,d0 uusix bsr.w tskey beq.b uusix cmpi.b #k_esc,(a5) beq.w scaped cmpi.b #1,d1 beq.b oikein addq #1,wrong move #$f00,(a1) moSiDU=ve #$f00,16(a1) bsr.w sam_right * ei vhennet counteria vaan arvotaan uusi bra.b again ; bra.b eij oikein move (a1),d6 and #$f00,d6 bne.b eij move #$f0,(a1) move #$f0,16(a1) eij bsr.w sam_right move.b d5,nleft dbf d5,again moveq #0,d7 ped move #1<<13,$9a(a6) feida bsr.w vblank bsr.w vblank sub #$111,collo bne.b feida move #bplcon,bcon+2 move #bplcon,bcon1+2 move #bplcon,bcon2+2 clr modu+2 clr modu+6 bsr.w clearscreen noope move.l #intr1,intp rts scaped moSjMveq #-1,d7 ;Escape flag clr colv bra.b ped tskey cmp.b (a5),d2 ;Jeah! Se toimii... beq.b novalid cmp.b (a5),d3 beq.b novalid cmp.b (a5),d0 bne.b wrongk move.b (a5),d2 subq.b #1,d2 move.b d2,d3 moveq #1,d1 rts wrongk move.b (a5),d2 subq.b #1,d2 move.b d2,d3 moveq #-1,d1 rts novalid moveq #0,d1 rts random movem.l d1/d2,-(sp) ;Almost frozen randomgenerator moveq #0,d0 moveq #0,d1 moveq #0,d2 move.b $bfd800,d0 move $dff006,d1 move.b d1,d2 ror #8,d1 eor.b SkUd2,d0 eor.b d1,d0 movem.l (sp)+,d1/d2 rts sam_right movem.l d0/a0,-(sp) ;Efekti lea samplo1,a0 bsr.b random and #$1f,d0 mulu #8,d0 add.l d0,a0 bsr.w crash movem.l (sp)+,d0/a0 rts ************************************************************************ ** Highscore ** ************************************************************************ do_hiscores spiuze cmp.b #$7f,key bne.b spiuze movem.l d0-a6,-(sp) SltWW moveq #0,d0 move.b kys,d0 mulu #nextlist,d0 lea scorebuffer,a0 add.l d0,a0 moveq #0,d0 ;lasketaan vanha enkka moveq #0,d1 move.b 1(a0),d1 and.b #$f,d1 mulu #10000,d1 add.l d1,d0 clr.l d1 move.b 2(a0),d1 and.b #$f,d1 mulu #1000,d1 add.l d1,d0 clr.l d1 move.b 3(a0),d1 and.b #$f,d1 mulu #100,d1 add.l d1,d0 clr.l d1 move.b 5(a0),d1 and.b #$f,d1 mulu #10,d1 add.l d1,d0 clr.l d1 move.b 6(a0),d1 and.b #$f,d1 add.l d1,d0 lea time2,a1 ;ja uusi moveq #0,d1 SmI^moveq #0,d2 move.b (a1)+,d2 and.b #$f,d2 mulu #10000,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 mulu #1000,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 mulu #100,d2 add.l d2,d1 clr.l d2 addq #1,a1 move.b (a1)+,d2 and.b #$f,d2 mulu #10,d2 add.l d2,d1 clr.l d2 move.b (a1)+,d2 and.b #$f,d2 add.l d2,d1 clr.l d2 cmp d0,d1 ;miten ky?? bhi.w nonewhi bsr.w writeroff lea time2,a1 move.b (a1)+,1(a0) move.b (a1)+,2(a0) move.b (a1)+,3(a0) Snmove.b 1(a1),5(a0) move.b 2(a1),6(a0) move.l a0,a4 ;nimen alue tyhjks addq.l #7,a4 moveq #33-1,d3 clrname move.b #' ',(a4)+ dbf d3,clrname clr collo move.l a0,a3 moveq #1-1,d2 lea screen+8*17*80,a2 bsr.w writeron lea scoretext,a0 moveq #2-1,d2 lea screen+5*17*80,a2 bsr.w writeron bsr.w collon moveq #29-1,d3 ;Tilaa nimelle n kirjainta move.l a3,a4 addq.l #8,a3 move.l a3,a5 subq.l #1,a5 spoze bsr.w vblank bsr.w rawkeycon beq.b spoze cmp.b #10,d0 ;RSoFeturn? beq.b finished cmp.b #11,d0 ;Backspace? bne.b nodel addq #2,d3 ;ei lasketa kirjaimeksi subq.l #1,a3 ;ei deletoida aikaa cmp.l a3,a5 bne.b goahead addq #1,a3 goahead move.b #' ',(a3) bra.b yesdel nodel move.b d0,(a3)+ yesdel move.l a4,a0 moveq #1-1,d2 lea screen+8*17*80,a2 bsr.w writeron dbf d3,spoze finished bsr.b survo_nimi st nosaving ;savetetaan nonewhi bsr.w writeroff movem.l (sp)+,d0-a6 rts survo_nimi move.b kys,d0 mulu #nextlist,d0 leSpKa scorebuffer,a0 add.l d0,a0 lea oho2,a1 moveq #40-1,d0 nlop move.b (a0)+,(a1)+ dbf d0,nlop rts ************************************************************************ ** Sound effects ** ************************************************************************ crash movem.l d0-d5/a1,-(sp) move chanfa,d0 lea chans,a1 move (a1,d0),d4 move 8(a1,d0),d5 move d5,$96(a6) bset #15,d5 move.l (a0)+,d0 movem (a0)+,d1-d2 moSq떇Zveq #$40,d3 move.l d0,(a6,d4) movem d1-d3,4(a6,d4) move #300,d0 dmaw dbf d0,dmaw move d5,$96(a6) move #300,d0 dmaw2 dbf d0,dmaw2 move #1,4(a6,d4) subq #2,chanfa bpl.b cok move #6,chanfa cok movem.l (sp)+,d0-d5/a1 rts kosaus move $1c(a6),d3 or #$c000,d3 move #$7fff,$9a(a6) move #$fff,back1 move #$fff,back2 move #$fff,back3 move #$fff,back4 move #$fff,back5 move #$fff,back6 move #$fff,collo move #$fff,col1+2 move #$f,$96(a6) lea jyms,a0 move.l a0,$a0(a6)Srr move.l a0,$b0(a6) move.l a0,$c0(a6) move.l a0,$d0(a6) move #(s1-jyms)/2,d0 move #750,d1 moveq #64,d2 movem d0-d2,$a4(a6) movem d0-d2,$b4(a6) subq #1,d1 movem d0-d2,$c4(a6) addq #2,d1 movem d0-d2,$d4(a6) move #$800f,$96(a6) moveq #25,d1 bsr.w delay jlop moveq #4-1,d5 jymslop bsr.w vblank bsr.w do3d subq #1,d5 bpl.b jymslop bsr.w make3dc sub #$111,back1 sub #$111,back2 sub #$111,back3 sub #$111,back4 sub #$111,back5 sub #$111,back6 bne.b jlop move #$fSs#,$96(a6) move #$eee,collo move d3,$9a(a6) rts ************************************************************************ ** Hires writer ** ************************************************************************ writeron movem.l d0-d3/a0-a4,-(sp) st no3d lea font,a3 move.l a2,a4 lo2 moveq #40-1,d3 ;# chars per line lo moveq #0,d0 move.b (a0)+,d0 sub.b #' ',d0 divs #20,d0 move d0,d1 clr d0 swap d0 add d0,d0 mulu #4S t@w0*16,d1 add d0,d1 lea (a3,d1),a1 move.l a4,a2 moveq #$f,d0 copl move (a1)+,(a2)+ lea 38(a1),a1 lea 78(a2),a2 dbf d0,copl addq #2,a4 ;Next place dbf d3,lo lea 80*16(a4),a4 ;Next line dbf d2,lo2 sf no3d movem.l (sp)+,d0-d3/a0-a4 rts writeroff clr colv wrf bsr.w vblank bsr.w vblank sub #$111,collo bne.b wrf bsr.w clearscreen rts ************************************************************************ ** Rawkey convert S!uFs ** ************************************************************************ * Palauttaa D0:ssa painetun nppimen ASCII-koodin. * Jos Z, ei tunnistettavia nppimi painettu. rawkeycon lea key,a0 lea asck,a1 lea rawk,a2 moveq #43,d1 keyloop move.b (a2)+,d0 bsr.b tstkey bne.b nok move.b (a1)+,d0 bra.b nak nok addq.l #1,a1 dbf d1,keyloop moveq #0,d0 nak rts tstkey cmp.b (a0),d0 bne.b nokey subq.b #1,d0 tstkey2 cmp.b (a0),d0 bne.b tstkey2 moveq #0,d0 nokey rtS"v36s ************************************************************************ ** Loading & Saving ** ************************************************************************ loadscores movem.l d0-a6,-(sp) moveq #0,d0 lea dosname,a1 move.l 4.w,a6 jsr openlib(a6) move.l d0,a6 move.l d0,dosb move.l #scorefile,d1 move.l #1005,d2 jsr open(a6) beq.b loaderr move.l d0,d4 move.l #scorebuffer,d2 move.l #sbuflen+4,d3 jsr read(a6)S#w sf loaderf move.l d4,d1 jsr close(a6) bsr.b tstark orf movem.l (sp)+,d0-a6 rts loaderr st loaderf bra.b orf savescores bsr.w tslas move.l dosb,a6 tst.b nosaving beq.b saverror move.l #scorefile,d1 jsr deletefile(a6) move.l #scorefile,d1 move.l #1006,d2 jsr open(a6) beq.b saverror move.l d0,d4 move.l #scorebuffer,d2 move.l #sbuflen+4,d3 jsr write(a6) move.l d4,d1 jsr close(a6) saverror move.l a6,a1 move.l 4.w,a6 jsr closelib(a6) rts tstark bsr.w S$xfisodge bsr.b tslasku cmp.l d0,d1 bne.b nip sf tarkf rts nip st tarkf rts tarkerr clr collo bsr.w clearscreen lea nape_text,a0 moveq #4-1,d2 lea screen+6*17*80,a2 bsr.w writeron bsr.w collon spp cmpi.b #k_space,key bne.b spp bsr.w writeroff rts ;on npelity listaa loaderror clr collo bsr.w clearscreen lea err_text,a0 moveq #4-1,d2 lea screen+6*17*80,a2 bsr.w writeron bsr.w collon spa cmpi.b #k_space,key bne.b spa bsr.w writeroff rts tslas bsr.bS%yޣ tslasku move.l d0,(a0) bsr.b sodge rts tslasku lea scorebuffer,a0 move #sbuflen-1,d1 moveq #0,d0 moveq #0,d2 moveq #0,d3 ch move.b (a0)+,d2 eor.b #1,d3 bne.b chc not.b d2 chc add.l d2,d0 dbf d1,ch move.l (a0),d1 ;vanha summa rts sodge lea scorebuffer,a0 move #sbuflen-1,d0 move.b #-1,d1 moveq #0,d3 sl not.b d1 bne.b slll not.b (a0) slll not.b d3 bne.b sll eor.b d0,(a0) sll move.b d0,d2 not.b d2 eor.b d2,(a0)+ dbf d0,sl rts ********************************S&z%**************************************** ** Copper effect ** ************************************************************************ colortubes not tubetobe ;viivytyst bne.b tobe not tubetobe2 bne.b tobe lea tube+6,a0 lea tube2+6,a1 moveq #9-1,d0 tlobo move (a0),(a1) addq #8,a0 addq #8,a1 dbf d0,tlobo cmpi #tubesamount,tubecount ;Menik ympri? bne.b notyet move.l #tubecols,tubecolp clr tubecount notyet lea tS'{ƱCube+6,a0 move.l tubecolp,a1 lea tubep,a2 tst (a2) beq.b nextube moveq #9,d0 tubelop bsr.b fadedo addq #8,a0 addq #2,a1 dbf d0,tubelop subq #1,(a2) tobe rts nextube subq #1,tubedelay bne.b tobe move #150,tubedelay add.l #18,tubecolp move #$f,(a2) addq #1,tubecount bra.b tobe fadedo movem.l d0-d5,-(sp) move (a0),d0 move d0,d1 move d0,d2 move (a1),d3 move d3,d4 move d3,d5 and #$f,d0 and #$f0,d1 and #$f00,d2 and #$f,d3 and #$f0,d4 and #$f00,d5 bsrS(| 9[.b cblu bsr.b cgre bsr.b cred or d0,d1 or d1,d2 move d2,(a0) movem.l (sp)+,d0-d5 xit rts cred cmpi d2,d5 blo.b credb beq.b xit add #$100,d2 rts credb sub #$100,d2 rts cgre cmpi d1,d4 blo.b cgreb beq.b xit add #$10,d1 rts cgreb sub #$10,d1 rts cblu cmpi d0,d3 blo.b cblub beq.b xit addq #1,d0 rts cblub subq #1,d0 rts ************************************************************************* ** Lame vecs **S)}Y~ ************************************************************************* trip1 lea screen+$5000,a0 lea 2*$2800(a0),a1 move.l a0,draw1 move.l a1,d0 move.w d0,bplp1+6 swap d0 move.w d0,bplp1+2 wblblb btst #14,2(a6) bne.b wblblb move.l draw1,$54(a6) clr $66(a6) move.l #$01000000,$40(a6) move #3*256*64+40,$58(a6) wblblbb btst #14,2(a6) bne.b wblblbb rts do3d movem.l d0-a6,-(sp) dodd btst #14,2(a6) bne.b dodd move.l draw1,a0 lea 19+44*80(a0),a0 move.l a0,$54(a6) moS*~Ive #36,$66(a6) move.l #$01000000,$40(a6) move.w #169*64+22,$58(a6) lea xrot1,a0 subq #2,(a0) subq #4,2(a0) subq #2,4(a0) bsr.w cangle2 lea xrot2,a0 addq #2,(a0) addq #2,2(a0) addq #4,4(a0) bsr.w cangle lea xrot3,a0 subq #4,(a0) subq #2,2(a0) subq #2,4(a0) bsr.w cangle2 lea xrot4,a0 addq #4,(a0) addq #2,2(a0) addq #4,4(a0) bsr.w cangle lea xrot5,a0 subq #4,(a0) subq #4,2(a0) subq #2,4(a0) bsr.w cangle2 lea vec_p,a0 move.l #cube_coords,(a0)+ move.l #cubeS+__con,(a0)+ move.l #cube_rot,(a0)+ move xrot1,(a0)+ move yrot1,(a0)+ move zrot1,(a0)+ bsr.w tilt lea vec_p,a0 move.l #cube2_coords,(a0)+ addq.l #8,a0 move xrot2,(a0)+ move yrot2,(a0)+ move zrot2,(a0)+ bsr.w tilt lea vec_p,a0 move.l #cube3_coords,(a0)+ addq.l #8,a0 move xrot3,(a0)+ move yrot3,(a0)+ move zrot3,(a0)+ bsr.w tilt lea vec_p,a0 move.l #cube4_coords,(a0)+ addq.l #8,a0 move xrot4,(a0)+ move yrot4,(a0)+ move zrot4,(a0)+ bsr.b tilt lea vec_p,a0 moS,}inve.l #cube5_coords,(a0)+ addq.l #8,a0 move xrot5,(a0)+ move yrot5,(a0)+ move zrot5,(a0)+ bsr.b tilt move.l draw1,d0 move.w bplp1+2,d1 swap d1 move.w bplp1+6,d1 move.l d1,draw1 move d0,bplp1+6 swap d0 move d0,bplp1+2 movem.l (sp)+,d0-a6 rts cangle moveq #3-1,d0 che cmpi #720,(a0) blo.b nox clr (a0) nox addq #2,a0 dbf d0,che rts cangle2 moveq #3-1,d0 cheg tst (a0) bpl.b noxg move #720,(a0) noxg addq #2,a0 dbf d0,cheg rts draw1 dc.l 0 tilt movem.l vec_p,aS-t0 movem.l vec_p+8,a3 lea pers,a6 lea sin,a1 lea 180(a1),a2 movem (a0)+,d0-d1 next move vec_p+16,d2 move (a2,d2),d3 ;cos move (a1,d2),d2 ;sin move d2,d4 move d3,d5 ; x1 = x cos(a) - y sin(a) muls d0,d3 muls d1,d2 sub.l d3,d2 add.l d2,d2 swap d2 ;d2 = x1 ; y1 = y cos(a) + x sin(a) muls d1,d5 muls d0,d4 add.l d4,d5 add.l d5,d5 swap d5 ;d5 = y1 move (a0)+,d0 move vec_p+12,d1 move (a2,d1),d4 ;cos move (a1,d1),d1 ;sin move d4,d7 move d1,d6 ; z1 = z S.Xcos(b) + y1 sin(b) muls d0,d4 muls d5,d1 add.l d4,d1 add.l d1,d1 swap d1 ;d1 = z1 move vec_p+14,d3 move (a2,d3),d4 ;cos move (a1,d3),d3 ;sin move d3,a4 move d4,a5 ; x2 = x1 cos(c) + z1 sin(c) muls d2,d4 muls d1,d3 add.l d4,d3 add.l d3,d3 swap d3 ; y2 = y1 cos(b) - z sin(b) muls d5,d7 muls d0,d6 sub.l d6,d7 add.l d7,d7 swap d7 ; z2 = z1 cos(c) - x1 sin(c) move a4,d5 move a5,d6 muls d1,d6 muls d2,d5 sub.l d5,d6 ; add.l d6,d6 swap d6 add vec_S/gp+18,d6 Add d6,d6 Move (a6,d6),d6 ;perspektiivi Muls d6,d3 Muls d6,d7 Add.l d3,d3 Swap d3 ; Add.l d7,d7 Swap d7 add #160*2,d3 add #128,d7 move d3,(a3)+ move d7,(a3)+ movem (a0)+,d0-d1 cmpi.w #$9999,d0 bne.w next lea $dff002,a6 movem.l vec_p+4,a2/a3 lea pers,a4 lea mulutable,a5 movem (a2)+,d0/d2 moveq #-1,d5 ;init linedraw moveq #80,d4 dwb btst #14,(a6) bne.b dwb move d5,$44-2(a6) move d5,$72-2(a6) move #$8000,$74-2(a6) move d4,$60-2(a6) move d4,$S08Z66-2(a6) dol movem (a3,d0),d0/d1 movem (a3,d2),d2/d3 move.l draw1,a0 bsr.w drawline movem (a2)+,d0/d2 tst d0 bpl.b dol subq #2,a6 rts vec_p dc.l cube_coords ;Koordikset dc.l cube_con ;Kytkennt dc.l cube_rot ;Pyritetyt koordikset xrot dc 0 yrot dc 0 zrot dc 0 depth dc 80 c macro dc \1*4,\2*4 endm xrot1 dc 0 yrot1 dc 0 zrot1 dc 0 cube_coords Dc 30,30,30 ;koordikset Dc -30,30,30 Dc -30,-30,30 Dc 30,-30,30 Dc 30,30,-30 Dc -30,30,-30 Dc -30,-30,-30 Dc 30S1!u,-30,-30 dc $9999 cube_rot ds.b (cube_rot-cube_coords)/3*2 ;Rotated coords cube_con c 0,1 c 1,2 c 2,3 c 3,0 c 4,5 c 5,6 c 6,7 c 7,4 c 0,4 c 1,5 c 2,6 c 3,7 dc -1 xrot2 dc 0 yrot2 dc 0 zrot2 dc 0 cube2_coords Dc -80,-80,30 Dc -140,-80,30 Dc -140,-140,30 Dc -80,-140,30 Dc -80,-80,-30 Dc -140,-80,-30 Dc -140,-140,-30 Dc -80,-140,-30 dc $9999 xrot3 dc 0 yrot3 dc 0 zrot3 dc 0 cube3_coords Dc 140,140,30 ;koordikset Dc 80,140,30 Dc 80,80,30 Dc 140,80,30 Dc 140,S2p:N140,-30 Dc 80,140,-30 Dc 80,80,-30 Dc 140,80,-30 dc $9999 xrot4 dc 0 yrot4 dc 0 zrot4 dc 0 cube4_coords Dc -140,140,30 ;koordikset Dc -80,140,30 Dc -80,80,30 Dc -140,80,30 Dc -140,140,-30 Dc -80,140,-30 Dc -80,80,-30 Dc -140,80,-30 dc $9999 xrot5 dc 0 yrot5 dc 0 zrot5 dc 0 cube5_coords Dc 140,-80,30 ;koordikset Dc 80,-80,30 Dc 80,-140,30 Dc 140,-140,30 Dc 140,-80,-30 Dc 80,-80,-30 Dc 80,-140,-30 Dc 140,-140,-30 dc $9999 *************************************S3Š ************************************ * Line Routine for one plane, by TIP * ************************************************************************* DL_Width = 40 DL_Fill =0 ;0: NOFILL 1:FILL * Needs: * a0 planept * a5 mulutable * a6 $dff002 * d0/d1 x,y start pos * d2/d3 x,y end pos * Kills: * d0-d4/a0-a1 (+d5 in Fill Mode) ifeq DL_Fill DL_MInterns = $ca else DL_MInterns = $4a endc ifne DL_Fill SML = 2 else SML = 0 endc drawline cmpS4򶆩 d1,d3 ;draw bge.b .y1ly2 exg d0,d2 exg d1,d3 .y1ly2 sub d1,d3 add d1,d1 add (a5,d1),a0 moveq #0,d1 sub d0,d2 bge.b .xdpos addq #2,d1 neg d2 .xdpos moveq #$f,d4 and d0,d4 ifne DL_Fill move.b d4,d5 not.b d5 endc lsr #3,d0 add d0,a0 ror #4,d4 or #$b00+DL_MInterns,d4 swap d4 cmp d2,d3 bge.b .dygdx addq #1,d1 exg d2,d3 .dygdx add d2,d2 move d2,d0 sub d3,d0 addx d1,d1 moveS5&㬎.b .oktants(pc,d1),d4 swap d2 move d0,d2 sub d3,d2 moveq #6,d1 lsl d1,d3 add #$42,d3 lea $52-2(a6),a1 ; WARNING: if you use fastmem and an extreme DMA-Access (e.g. 6 ; planes and copper), you should insert a tst.b (a6) here (for the ; shitty AGNUS-BUG). .wb btst d1,(a6) bne.b .wb ifne DL_Fill bchg d5,(a0) endc move.l d4,$40-2(a6) move.l d2,$62-2(a6) move.l a0,$48-2(a6) move d0,(a1)+ move.l a0,(a1)+ move d3,(a1) rts .oktantsS64 dc.b SML+1,SML+1+$40 dc.b SML+17,SML+17+$40 dc.b SML+9,SML+9+$40 dc.b SML+21,SML+21+$40 ************************************************************************ ** VertB Interrupt ** ************************************************************************ lev3int movem.l d0-a6,-(sp) move collo,back2b move collo,back2c bsr.w make3dc move.l intp,a0 jsr (a0) bsr.w colortubes movem.l (sp)+,d0-a6 move #1<<5,$dff09c rte S7^E"intr1 movem.l d0-a6,-(sp) tst.b nomus beq.b nom tst.b nomus2 bne.b nom2 lea $dff000,a6 bsr.w p41_music move.b $bfd800,d0 addq.b #7,d0 tit cmp.b $bfd800,d0 bne.b tit bsr.w p41_setrepeat nom tst.b no3d bne.b no3dd bsr.w do3d no3dd movem.l (sp)+,d0-a6 rts nom2 move #$f,$dff096 bra.b nom intr2 bsr.w contime lea linec1,a0 tst (a0) beq.b naf move (a0),d0 and #$f00,d0 beq.b nof sub #$100,(a0) sub #$100,16(a0) rts nof sub #$10,(a0) sub #$10,16(a0) naf rts makeS8#^3dc lea col1+2,a0 ;vectorin vrieffecti lea colv,a1 move (a1),d0 btst #15,d0 beq.b doobi lea tubev,a1 doobi bsr.w fadedo rts ************************************************************************* * Lev2 keyboard interrupt * ************************************************************************* lev2int move.l d0,-(sp) btst #3,$bfed01 beq.b xlev2 move $dff01c,d0 btst #3,d0 beq.b xlev2 move.b $bfec01,d0 bset #6,$bfee01 S9x clr.b $bfec01 move.b d0,key move.b $bfd800,d0 addq.b #2,d0 .w cmp.b $bfd800,d0 bne.b .w bclr #6,$bfee01 xlev2 move #8,$dff09c move.l (sp)+,d0 rte ************************************************************************* * Ajanottaja, CIA keskeytys * ************************************************************************* init_timer move.l vectorbase,a0 move.l $78(a0),lev6save move.l #Lev6Int,$78(a0) move.b #%01111111,$bfdd00S:LTHA ; Stop CIAA interrupts move.b cTime,$bfd500 ; Timer A high byte move.b cTime+1,$bfd400 ; Timer A low byte move.b #%00010001,$bfde00 ; Start Timer A (continuous) move.b #%10000001,$bfdd00 ; Start CIAA Timer A interrupt rts remove_timer move.l vectorbase,a0 move.l lev6save,$78(a0) move.b #%01111111,$bfdd00 ; Stop CIAA interrupts rts Lev6Int move #$2000,$dff09c ; Clear Lev6 interrupt request bit tst.b $bfdd00 ; CIAA Timer A irq addq.l #1,time rte fade_init lea f_strucS;)K,a4 lea 5*4(a4),a2 move #$f,(a2) lea 2(a2),a3 and #$ff,d1 move d1,(a3) addq #2,a1 move.l a0,(a4)+ move.l a1,(a4)+ move.l a2,(a4)+ move.l a3,(a4)+ move d0,(a4)+ move d1,(a4) rts ******************************************************************************* * Startup routines * ******************************************************************************* * Pari valmiiksi mritelty pr_cli = 172 pr_msgport S<YH= 92 lib_version = 20 vblankfrequency = 530 gb_actiview = 34 gb_displayflags = 206 gp_copinit = 38 startup movem.l d0-a6,-(sp) move.l 4.w,a6 moveq #0,d0 btst d0,297(a6) beq.b no68010 lea getvbr(pc),a5 jsr -$1e(a6) no68010 move.l d0,vectorbase lea gfxn,a1 moveq #33,d0 * Kick 1.2 or higher jsr openlib(a6) move.l d0,gfxb move.l d0,a6 jsr _lvowaitblit(a6) jsr _lvoownblitter(a6) move.l gb_actiview(a6),oldview * current view address sub.l a1,a1 * flush view to noS=YyP#thing jsr _lvoloadview(a6) jsr _lvowaittof(a6) * wait twice jsr _lvowaittof(a6) movem.l (sp)+,d0-a6 rts closedown movem.l d0-a6,-(sp) move.l gfxb,a6 jsr _lvowaitblit(a6) jsr _lvodisownblitter(a6) move.l oldview,a1 * old viewmodes jsr _lvoloadview(a6) jsr _lvowaittof(a6) * wait twice jsr _lvowaittof(a6) move.l gp_copinit(a6),$dff080 * old copper move d0,$dff088 move.l a6,a1 move.l 4.w,a6 jsr closelib(a6) movem.l (sp)+,d0-a6 rts getvbr dc.l $4E7A0801 *S>r + MOVEC VBR,d0 rte ******************************* * Player v4.1A BETA * * Non-Lev6-version * * Version 410.3 * * 1992 Jarno Paananen * * All rights reserved * ******************************* ; ; call 'P41_init' to initialize the playroutine ; A0 --> Modules address ; A1 --> Samples' address/NULL ; A6 --> Customchip baseaddress ($DFF000) ; returns -1 in D0 if nS?(kot a correct module ; Used regs: A0/A1/A3/D0/D1 ; P41_init lea cn,a3 move.l a0,module-cn(a3) move.l a0,d0 add.l d0,4(a0) add.l d0,8(a0) add.l d0,12(a0) move.l a1,d0 beq.b no_samples_supplied move.l a1,12(a0) no_samples_supplied move.l 12(a0),d0 moveq #0,d1 move.b 2(a0),d1 subq #1,d1 lea 16(a0),a1 lopos add.l d0,(a1) add.l d0,6(a1) lea 16(a1),a1 dbra d1,lopos lea temp0,a1 moveq #20,d0 cl clr (a1)+ dbf dS@T;0,cl lea temp1,a1 moveq #20,d0 cl2 clr (a1)+ dbf d0,cl2 lea temp2,a1 moveq #20,d0 cl3 clr (a1)+ dbf d0,cl3 lea temp3,a1 moveq #20,d0 cl4 clr (a1)+ dbf d0,cl4 move.l 4(a0),a4 move.l a4,Patternbase-cn(a3) move.l 8(a0),a1 move.l a1,Positionbase-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp0-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp1-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp2-cn(a3) add (a1)+,a4 move.l a4,32+temp3-cn(a3) move.lSA a1,Spos-cn(a3) move #63,rowpos-cn(a3) move #6,speed-cn(a3) move #5,speed2-cn(a3) clr speedis1-cn(a3) clr.l Pdelay-cn(a3) clr (a3) or.b #2,$bfe001 move #$f,$96(a6) moveq #0,d0 ; ; Call 'P40_end' to stop music ; A6 --> Customchip baseaddress ($DFF000) ; P41_end clr $a8(a6) clr $b8(a6) clr $c8(a6) clr $d8(a6) rts ;SBor ; call 'P41_music' every frame to play the music ; A6 --> Customchip baseaddress ($DFF000) ; Used regs: a0-a6/d0-d7 - ; P41_music lea cn,a3 moveq #44,d6 moveq #16,d7 move (a3),d4 addq #1,d4 cmpi speed,d4 beq.w Playtime lea temp0,a5 lea $a0(a6),a4 move d4,(a3) moveq #3,d5 lopas tst 30(a5) beq.w contfxdone moveq #$f,d0 and (a5),d0 add d0,d0 move jtab2(pc,d0),d0 jmp jtab2(pc,d0) jtab2 dc SC~ contfxdone-jtab2 dc portup-jtab2 dc portdwn-jtab2 dc toneport-jtab2 dc vib2-jtab2 dc TPochvslide-jtab2 dc Vibochvslide-jtab2 dc tremo-jtab2 dc arpeggio-jtab2 dc contfxdone-jtab2 dc volslide-jtab2 dc contfxdone-jtab2 dc contfxdone-jtab2 dc contfxdone-jtab2 dc contecommands-jtab2 dc contfxdone-jtab2 contecommands move.b 2(a5),d0 and.b #$f0,d0 cmp #$90,d0 beq.b Retrig cmp #$c0,d0 beq.b notecut cmp #$d0,d0 bne.w contfxdone notedelay moveq #$f,d0 and.b 2(a5),d0 SD . cmpi (a3),d0 bne.w contfxdone move 42(a5),d0 or #$8000,d0 or d0,dma-cn(a3) move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) st setornot-cn(a3) bra.w contfxdone notecut moveq #$f,d0 and.b 2(a5),d0 cmpi (a3),d0 bne.w contfxdone clr 8(a4) clr 14(a5) bra.w contfxdone Retrig subq #1,26(a5) bne.w contfxdone move 42(a5),d0 move d0,$96(a6) or #$8000,d0 or d0,dma-cn(a3) move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) moveq #$f,d0 and.b 2(a5),d0 move d0,26(a5) SE=:st setornot-cn(a3) bra.w contfxdone arplist dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1 arpeggio move (a3),d0 move.b arplist(pc,d0),d0 beq.b arp0 ror.b #1,d0 bcc.b Arp1 moveq #$f,d0 and.b 2(a5),d0 bra.b arp3 arp0 move 28(a5),d0 move periods(pc,d0),6(a4) bra.w contfxdone arp1 moveq #0,d0 move.b 2(a5),d0 lsr.b #4,d0 arp3 add d0,d0 arp4 add 28(a5),d0 move periods(pc,d0),6(a4) bra.w contfxdone periods dc 856,856,808,762,720,678,640,604,570,538,5SF[CV08,480,453 dc 428,404,381,360,339,320,302,285,269,254,240,226 dc 214,202,190,180,170,160,151,143,135,127,120,113 dc 850,850,802,757,715,674,637,601,567,535,505,477,450 dc 425,401,379,357,337,318,300,284,268,253,239,225 dc 213,201,189,179,169,159,150,142,134,126,119,113 dc 844,844,796,752,709,670,632,597,563,532,502,474,447 dc 422,398,376,355,335,316,298,282,266,251,237,224 dc 211,199,188,177,167,158,149,141,133,125,118,112 dc 838,838,791,746,704,665,628,592,559,528,498,470,4SG"44 dc 419,395,373,352,332,314,296,280,264,249,235,222 dc 209,198,187,176,166,157,148,140,132,125,118,111 dc 832,832,785,741,699,660,623,588,555,524,495,467,441 dc 416,392,370,350,330,312,294,278,262,247,233,220 dc 208,196,185,175,165,156,147,139,131,124,117,110 dc 826,826,779,736,694,655,619,584,551,520,491,463,437 dc 413,390,368,347,328,309,292,276,260,245,232,219 dc 206,195,184,174,164,155,146,138,130,123,116,109 dc 820,820,774,730,689,651,614,580,547,516,487,460,434 dc 4SHV10,387,365,345,325,307,290,274,258,244,230,217 dc 205,193,183,172,163,154,145,137,129,122,115,109 dc 814,814,768,725,684,646,610,575,543,513,484,457,431 dc 407,384,363,342,323,305,288,272,256,242,228,216 dc 204,192,181,171,161,152,144,136,128,121,114,108 dc 907,907,856,808,762,720,678,640,604,570,538,508,480 dc 453,428,404,381,360,339,320,302,285,269,254,240 dc 226,214,202,190,180,170,160,151,143,135,127,120 dc 900,900,850,802,757,715,675,636,601,567,535,505,477 dc 450,425,4(HSSI V01,379,357,337,318,300,284,268,253,238 dc 225,212,200,189,179,169,159,150,142,134,126,119 dc 894,894,844,796,752,709,670,632,597,563,532,502,474 dc 447,422,398,376,355,335,316,298,282,266,251,237 dc 223,211,199,188,177,167,158,149,141,133,125,118 dc 887,887,838,791,746,704,665,628,592,559,528,498,470 dc 444,419,395,373,352,332,314,296,280,264,249,235 dc 222,209,198,187,176,166,157,148,140,132,125,118 dc 881,881,832,785,741,699,660,623,588,555,524,494,467 dc 441,416,392,370,3SJ4TV50,330,312,294,278,262,247,233 dc 220,208,196,185,175,165,156,147,139,131,123,117 dc 875,875,826,779,736,694,655,619,584,551,520,491,463 dc 437,413,390,368,347,328,309,292,276,260,245,232 dc 219,206,195,184,174,164,155,146,138,130,123,116 dc 868,868,820,774,730,689,651,614,580,547,516,487,460 dc 434,410,387,365,345,325,307,290,274,258,244,230 dc 217,205,193,183,172,163,154,145,137,129,122,115 dc 862,862,814,768,725,684,646,610,575,543,513,484,457 dc 431,407,384,363,342,323,3SK(05,288,272,256,242,228 dc 216,203,192,181,171,161,152,144,136,128,121,114 volslide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test63 clr 14(a5) clr 8(a4) bra.w contfxdone test63 moveq #64,d0 cmp 14(a5),d0 bge.b ncs3 move d0,14(a5) move d0,8(a4) bra.b contfxdone ncs3 move 14(a5),8(a4) bra.b contfxdone TPochVSlide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test64 clr 14(a5) clr 8(a4) bra.b toneport test64 moveq #64,d0 cmp 14(a5),d0 bge.b ncs move d0,14(a5) ncs move 14SLp(a5),8(a4) toneport move 18(a5),d0 beq.b contfxdone move 20(a5),d1 cmp 12(a5),d0 blt.b topoup add d1,12(a5) cmp 12(a5),d0 bgt.b toposetper move d0,12(a5) clr 18(a5) move d0,6(a4) bra.b contfxdone topoup sub d1,12(a5) cmp 12(a5),d0 blt.b toposetper move d0,12(a5) clr 18(a5) toposetper move 12(a5),6(a4) contfxdone add d6,a5 add d7,a4 dbf d5,lopas cmp speed2,d4 beq.b Preplay rts portup moveq #0,D0 move.b 2(a5),d0 sub d0,12(a5) moveq #113,d0 cmpi 12(a5),dSM72c0 ble.b PortaUskip move d0,12(a5) move d0,6(a4) bra.b contfxdone PortaUskip move 12(a5),6(a4) bra.b contfxdone portdwn moveq #0,d0 move.b 2(a5),d0 add d0,12(a5) cmp #856,12(a5) ble.b portadskip move.w #856,d0 move d0,12(a5) move d0,6(a4) bra.b contfxdone portadskip move 12(a5),6(a4) bra.b contfxdone preplay tst Pdelay-cn(a3) beq.b djdj subq #1,Pdelay-cn(a3) rts djdj lea temp0,a5 move.l module,a0 move.l patternbase,a4 moveq #3,d5 loaps tst.b 3(a5) beq.b takeSNC62one bmi.b keepsame subq.b #1,3(a5) clr 30(a5) add d6,a5 dbf d5,loaps rts keepsame addq.b #1,3(a5) bra.b dko takeone tst.b 40+1(a5) beq.b takenorm subq.b #1,40+1(a5) move.l 36(a5),a2 move.l (a2)+,(a5) move.l a2,36(a5) bra.b dko takenorm move.l 32(a5),a2 tst.b (a2) bmi.b offs move.l (a2)+,(a5) move.l a2,32(a5) bra.b dko offs move (a2)+,40(a5) move (a2)+,d0 move.l a2,32(a5) lea (a4,d0),a2 move.l (a2)+,(a5) move.l a2,36(a5) dko st 30(a5) move (a5),d0 and SO>eGn#$1f0,d0 beq.b koto lea (a0,d0),a1 move.l a1,4(a5) move.l 12(a1),14(a5) koto add d6,a5 dbf d5,loaps rts Playtime clr (a3) tst Pdelay2-cn(a3) beq.b djddj subq #1,Pdelay2-cn(a3) rts djddj tst speedis1-cn(a3) beq.b jaedmo bsr.w preplay jaedmo lea temp0,a5 lea $a0(a6),a4 lea periods,a2 st setornot-cn(a3) moveq #0,d4 moveq #3,d5 los tst 30(a5) beq.b fxdone moveq #$f,d1 and (a5),d1 subq #3,d1 beq.b settoneport subq #2,d1 beq.b toponochange moveq #$7e,d0SPf and.b (a5),d0 beq.b nocha0 clr.b 23(a5) add 16(a5),d0 move d0,28(a5) move (a2,d0),12(a5) move 42(a5),d0 move d0,$96(a6) or d0,d4 subq #4,d1 beq.w sampleoffset move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) nocha0 moveq #$f,d0 and (a5),d0 lea jtab,a1 add d0,d0 add (a1,d0),a1 jmp (a1) settoneport move.b 2(a5),d0 beq.b toponochange move.b d0,20+1(a5) toponochange moveq #$7e,d0 and.b (a5),d0 beq.b fxdone add 16(a5),d0 move d0,28(a5) move (a2,d0),18(a5)SQB} fxdone move.l 12(a5),6(a4) add d6,a5 add d7,a4 dbf d5,los move d4,$96(a6) move.b d4,dma+1-cn(a3) rts ; ; Call this routine 6 lines or more after P41_music ; A6 --> CUSTOMBASE $DFF000 ; P41_setrepeat lea cn,a3 tst setornot-cn(a3) beq.b killer clr setornot-cn(a3) move dma,$96(a6) ; moveq #40,d0 ;wait2 dbf d0,wait2 move.b $bfd800,d0 addq.b #2,d0 wait2 cmp.b $bfd800,SR]Yd0 bne.b wait2 tst (a3) bne.b setrepeat subq #1,rowpos-cn(a3) bmi.b nextpattern bra.b setrepeat Killer rts sampleoffset move #$ff00,d1 and 2(a5),d1 move.l 4(a5),a1 move.l (a1)+,d0 add.l d1,d0 move.l d0,(a4) lsr #1,d1 move (a1),d0 sub d1,d0 bpl.b offok move.l -4(a1),(a4) moveq #1,d0 offok move d0,4(a4) bra.b fxdone nextpattern move.l patternbase,a4 move #63,rowpos-cn(a3) move.l spos-cn(a3),a1 move (a1)+,d0 bpl.b dk move.l Positionbase,a1 move (a1)+,d0 dk SS ?lea (a4,d0),a0 movem (a1)+,d0-d2 move.l a1,Spos-cn(a3) move.l a0,32+temp0-cn(a3) lea (a4,d0),a0 move.l a0,32+temp1-cn(a3) lea (a4,d1),a0 move.l a0,32+temp2-cn(a3) lea (a4,d2),a0 move.l a0,32+temp3-cn(a3) setrepeat lea $a0(a6),a1 move.l 4+temp0,a0 move.l 6(a0),(a1) move 10(a0),4(a1) move.l 4+temp1,a0 move.l 6(a0),16(a1) move 10(a0),20(a1) move.l 4+temp2,a0 move.l 6(a0),32(a1) move 10(a0),36(a1) move.l 4+temp3,a0 move.l 6(a0),48(a1) move 10(a0),52(a1) rts voluST{me move.b 2(a5),14+1(a5) bra.w fxdone posjmp moveq #0,d0 move.b 2(a5),d0 asl #2,d0 add.l Positionbase,d0 move.l d0,spos-cn(a3) pattbreak move #64,rowpos-cn(a3) move.l spos-cn(a3),a1 move.l patternbase,a0 move (a1)+,d0 bpl.b dk2 move.l Positionbase,a1 move (a1)+,d0 dk2 movem (a1)+,d1-d3 move.l a1,Spos-cn(a3) lea (a0,d0),a1 move.l a1,32+temp0-cn(a3) lea (a0,d1),a1 move.l a1,32+temp1-cn(a3) lea (a0,d2),a1 move.l a1,32+temp2-cn(a3) add d3,a0 move.l a0,32+temp3-cn(aSUA]3) bra.w fxdone vibrato move.b 2(a5),d0 beq.w fxdone move.b d0,d1 move.b 22(a5),d2 and.b #$f,d0 beq.b vibskip and.b #$f0,d2 or.b d0,d2 vibskip and.b #$f0,d1 beq.b vibskip2 and.b #$f,d2 or.b d1,d2 vibskip2 move.b d2,22(a5) bra.w fxdone settremo move.b 2(a5),d0 beq.w fxdone move.b d0,d1 move.b 24(a5),d2 moveq #$f,d3 and.b d3,d0 beq.b treskip and.b #$f0,d2 or.b d0,d2 treskip and.b #$f0,d1 beq.b treskip2 and.b d3,d2 or.b d1,d2 treskip2 move.b d2,24(a5) bra.w SVi fxdone ecommands move.b 2(a5),d0 and.b #$f0,d0 lsr #3,d0 move etab(pc,d0),d0 jmp etab(pc,d0) etab dc filter-etab dc fineup-etab dc finedwn-etab dc fxdone-etab dc fxdone-etab dc setfinetune-etab dc fxdone-etab dc fxdone-etab dc fxdone-etab dc setretrig-etab dc finevup-etab dc finevdwn-etab dc fxdone-etab dc stopnote-etab dc pattdelay-etab dc fxdone-etab filter move.b 2(a5),d0 and.b #$fd,$bfe001 or.b d0,$bfe001 bra.w fxdone fineup moveq #$f,d0 and.b 2(a5),d0SW9 sub d0,12(a5) moveq #113,d0 cmpi 12(a5),d0 ble.w fxdone move d0,12(A5) bra.w fxdone finedwn moveq #$f,d0 and.b 2(a5),d0 add d0,12(a5) cmp #856,12(a5) ble.w fxdone move #856,12(a5) bra.w fxdone finevup moveq #$f,d0 and.b 2(a5),d0 add d0,14(a5) moveq #64,d0 cmpi 14(a5),d0 bge.w fxdone move d0,14(a5) bra.w fxdone Setfinetune moveq #$f,d0 and.b 2(a5),d0 add d0,d0 move mulutab(pc,d0),16(a5) bra.w fxdone mulutab dc 0,74,148,222,296,370,444,518,592,666,740,814,8SX.Q'88,962,1036,1110 Setretrig moveq #$f,d0 and.b 2(a5),d0 move d0,26(a5) bra.w fxdone finevdwn moveq #$f,d0 and.b 2(a5),d0 sub d0,14(a5) bpl.w fxdone clr 14(a5) bra.w fxdone stopnote move 42(a5),d0 eor d0,d4 bra.w fxdone Pattdelay moveq #$f,d0 and.b 2(a5),d0 move d0,Pdelay-cn(a3) move d0,Pdelay2-cn(a3) bra.w fxdone cspeed move.b 2(a5),d0 cmp.b #1,d0 bne.b jkd move.b d0,speed+1-cn(a3) move.b d0,speed2+1-cn(a3) st speedis1-cn(a3) bra.w fxdone jkd move.b d0,speSYDmed+1-cn(a3) subq.b #1,d0 move.b d0,speed2+1-cn(a3) clr speedis1-cn(a3) bra.w fxdone VibochVSlide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test62 clr 14(a5) clr 8(a4) bra.b vib2 test62 moveq #64,d0 cmp 14(a5),d0 bge.b ncs2 move d0,14(a5) ncs2 move 14(a5),8(a4) vib2 move #$f00,d0 move 22(a5),d1 and d1,d0 lsr #2,d0 lsr #1,d1 and #$3e,d1 add d1,d0 move 12(a5),d1 tst.b 23(a5) bmi.b vibNeg add vibtab(pc,d0),d1 bra.b vib4 vibneg sub vibtab(pc,d0),d1 vib4 move SZdYd1,6(a4) move.b 22(a5),d0 lsr.b #2,d0 and #$3c,d0 add.b d0,23(a5) bra.w contfxdone tremo move #$f00,d0 move 24(a5),d1 and d1,d0 lsr #2,d0 lsr #1,d1 and #$3e,d1 add d1,d0 move 14(a5),d1 tst.b 25(a5) bmi.b treNeg add vibtab(pc,d0),d1 cmp #64,d1 ble.b tre4 moveq #64,d1 bra.b tre4 treneg sub vibtab(pc,d0),d1 bpl.b tre4 moveq #0,d1 tre4 move d1,8(a4) move.b 24(a5),d0 lsr.b #2,d0 and #$3c,d0 add.b d0,25(a5) bra.w contfxdone vibtab incbin dh0:asm/data/vibtab S[: jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc vibrato-jtab dc fxdone-jtab dc fxdone-jtab dc settremo-jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc posjmp-jtab dc volume-jtab dc pattbreak-jtab dc ecommands-jtab dc cspeed-jtab ************************************************************************ ** Data, pointers, buffers ** ********************************************************************S\ʷ`**** section sal,data_p temp0 ds 21 dc 1 temp1 ds 21 dc 2 temp2 ds 21 dc 4 temp3 ds 21 dc 8 cn dc 0 dma dc $8000 setornot dc 0 rowpos dc 63 speed dc 6 speed2 dc 5 speedis1 dc 0 spos dc.l 0 pdelay dc 0 pdelay2 dc 0 Positionbase dc.l 0 Patternbase dc.l 0 intaddr dc.l 0 module dc.l 0 song incbin "p41.repulsive sound" dosname dc.b "dos.library",0 dosb dc.l 0 scorefile dc.b "Sormelus.pisteet",0 even ** New stuff vectorbase dc.l 0 oldview dc.l 0 gfxb dc.l 0 gfxn dc.b "gS]raphics.library",0 even ** err_text dc.b " *** Levyvirhe *** " dc.b " Ei voitu avata pistetiedostoa " dc.b " " dc.b " " nape_text dc.b " Mit]]]h?? " dc.b " Joku idiootti on n]pel[inyt " dc.b " pistetiedostoa! " dc.b " " t_alku dc.b " **************** S^iE " dc.b " **** SORMELUS **** " dc.b " ***** v1.2 ***** " dc.b " " dc.b " Space......................Aloitus " dc.b " Return.....................Tason vaihto" dc.b " F1.........................Tuloslista " dc.b " F2.........................Ohjeita " dc.b " F3.........................Musiikki " dc.b " F4.........................Tekij]t " dc.b " Esc........................LS_ opetus " oho dc.b " Taso......................." oho1 dc.b "?? " dc.b " " dc.b " Enn]tys: " oho2 dc.b " ???????????????????????????????????????" t_help dc.b " Tarkoitus on painaa mahdollisimman " dc.b " nopeasti kuvaruutuun ilmestyv]] " dc.b " merkki] vastaavaa n]pp]int]. " dc.b " Vihre]t viivat ilmoittavat onnistumi- " dc.b " sesta ja punaiset ep]onnistumisesta. " dc.bS`v^ " Virheist] EI saa rangaistussekunteja, " dc.b " vaan uuden merkin. " dc.b " " dc.b " Luku vasemmassa alareunassa ilmoittaa " dc.b " j]ljell] olevien n]pp]inten m]]r]n, " dc.b " keskell] n]kyy aika, ja oikeassa " dc.b " reunassa virheitten lukum]]r]. " dc.b " " dc.b " Escill] voi lopettaa kesken. " dc.b " " iSaE1nfot dc.b " ***************************************" dc.b " " dc.b " Suunnittelu: " dc.b " T.Lindstr[m, J.Jansson, K-P Koljonen " dc.b " " dc.b " Hippokuva & musiikki: " dc.b " T.Lindstr[m " dc.b " Koodaus: " dc.b " K-P Koljonen " dc.b " Sb' " dc.b " ***************************************" dc.b " V1.2:n pit]isi toimia kaikissa " dc.b " Amigoissa. " dc.b " " dc.b " " arviot dc.b " Aika.............???.?? s " dc.b " Virheit].........??? " dc.b " Virheprosentti...??? " dc.b " " dc.b " Scm5 " a_aika = arviot+25 a_virh = arviot+65 a_vpro = arviot+105 scoretext dc.b " Uusi enn]tys! " dc.b " Kirjoita nimesi: " lettert blk.b 40," " titext blk.b 40," " time2 = titext+17 tulosalku dc.b " Aika Nimi Taso" tulosohjeet dc.b " " dc.b " Nuolet: yl[s ja alas, Space: Pois " asck dc.b "1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ{},. ",10,11,"-" rawk SdRgmdc.b k_1,k_2,k_3,k_4,k_5,k_6,k_7,k_8,k_9,k_0,k_a,k_b,k_c,k_d dc.b k_e,k_f,k_g,k_h,k_i,k_j,k_k,k_l,k_m,k_n,k_o,k_p dc.b k_q,k_r,k_s,k_t,k_u,k_v,k_w,k_x,k_y,k_z,$ad,$ab,$8f,$8d dc.b k_space,k_return,k_bspace,$e9 ; , . ; - chanfa dc 6 chans dc $a0,$b0,$d0,$c0 dc 1<<0,1<<1,1<<3,1<<2 cTime dc 28419/2 ;cia timer delay (0.01 s) f_struc ds.l 6 f_col dc 0 hippocols dc $0fff,$0210,$0bbb,$0ddd,$0864,$0975,$0a74,$0b85 acopp dc.l 0 adma dc 0 airq dc 0 tubecols dcSe8c $051,$073,$0a5,$1d8,$2fa,$1d8,$0a5,$073,$051 dc $530,$750,$a70,$d90,$fb0,$d90,$a70,$750,$530 dc $107,$309,$50b,$70d,$91f,$70d,$50b,$309,$107 dc $431,$653,$875,$a97,$db9,$a97,$875,$653,$431 dc $77f,$99f,$bbf,$ddf,$fff,$ddf,$bbf,$990,$77f dc $724,$946,$b68,$d8a,$fac,$d8a,$b68,$946,$724 dc $076,$098,$2ba,$4dc,$6fe,$4dc,$2ba,$098,$076 dc $370,$590,$7b0,$9d0,$bf0,$9d0,$7b0,$590,$370 dc $750,$970,$b90,$db0,$fd0,$db0,$b90,$970,$750 dc $077,$099,$0bb,$0dd,$0ff,$0dd,$0bb,$099,$077 Sf(!dc $407,$609,$80b,$a0d,$c1f,$a0d,$80b,$609,$407 dc $400,$620,$840,$a60,$c80,$a60,$840,$620,$400 dc $707,$099,$b0b,$0dd,$f0f,$0dd,$b0b,$099,$707 dc $770,$992,$bb4,$dd6,$ff8,$dd6,$bb4,$992,$770 dc $007,$009,$20b,$40d,$61f,$40d,$20b,$009,$007 dc $f70,$f90,$fb0,$fd0,$ff0,$fd0,$fb0,$f90,$f70 dc $060,$280,$4a0,$6c0,$8e0,$6c0,$4a0,$280,$060 dc $700,$900,$b00,$d00,$f00,$d00,$b00,$900,$700 dc $007,$009,$00b,$00d,$00f,$00d,$00b,$009,$007 dc $f77,$f99,$fbb,$fdd,$fff,$fdd,$fbb,$f99,$f77Sg dc $777,$999,$bbb,$ddd,$fff,$ddd,$bbb,$999,$777 dc $530,$a60,$f90,$a60,$530,$a60,$f90,$a60,$530 dc $000,$000,$000,$000,$000,$000,$000,$000,$000 tubesamount = 23 tubecolp dc.l tubecols tubep dc $f tubecount dc 0 tubedelay dc 150 tubetobe dc 0 tubetobe2 dc 0 memarea dc.l 0 copsave dc.l 0 dmasave dc 0 irqsave dc 0 lev2save dc.l 0 lev3save dc.l 0 lev6save dc.l 0 intp dc.l 0 ;mihin hypitn keskeytyksess wrong dc 0 nleft dc.b 0 kys dc.b 20-1 nomus dc.b 0 nomus2 dShc.b 0 no3d dc.b 0 tulosposition dc.b 1 tarkf dc.b 0 loaderf dc.b 0 key dc.b 0 ;Coolcolcolcol! nosaving dc.b 0 even colv dc 0 time dc.l 0 sin incbin dh0:asm/data/sin pers incbin dh0:asm/data/perspective mulutable a set 0 rept 256 dc a a set a+80 endr samplo1 dc.l sam1 dc (sam2-sam1)/2,212 dc.l sam2 dc (sam3-sam2)/2,424 dc.l sam3 dc (sam4-sam3)/2,300 dc.l sam4 dc (sam5-sam4)/2,700 dc.l sam5 dc (sam6-sam5)/2,424 dc.l sam6 dc (sam7-sam6)/2,300 dc.l sam7 dcSimR (sam8-sam7)/2,212 dc.l sam8 dc (sam9-sam8)/2,500 dc.l sam9 dc (sam10-sam9)/2,424 dc.l sam10 dc (sam11-sam10)/2,424 dc.l sam11 dc (sam12-sam11)/2,424 dc.l sam12 dc (sam13-sam12)/2,212 dc.l sam13 dc (sam14-sam13)/2,424 dc.l sam14 dc (sam15-sam14)/2,424 samplo15 dc.l sam15 dc (sam16-sam15)/2,212 dc.l sam16 dc (jyms-sam16)/2,300 dc.l s1 dc (s2-s1)/2,424 dc.l s2 dc (s3-s2)/2,424 dc.l s3 dc (s4-s3)/2,370 dc.l s4 dc (s5-s4)/2,424 dc.l s5 dc (s6-s5Sjzŭ )/2,212 dc.l s6 dc (s7-s6)/2,424 dc.l s7 dc (s8-s7)/2,424 dc.l s8 dc (s9-s8)/2,424 dc.l s9 dc (s10-s9)/2,424 dc.l s10 dc (s11-s10)/2,424 dc.l s11 dc (s12-s11)/2,424 dc.l s12 dc (s13-s12)/2,424 dc.l s13 dc (s14-s13)/2,424 dc.l s14 dc (s15-s14)/2,424 dc.l s15 dc (s16-s15)/2,424 dc.l s16 dc (s99-s16)/2,370 scorebuffer rept 99 dc.b " 999.99 ............................. " endr sbend dc.l $7b56d ;checksum sbuflen = sbend-scorebuffer nextlistSké2 = 40 ds.b 40 ************************************************************************* ** More data & Copperlists ** ************************************************************************* section "ousmous",data_c cop bcon1 dc $100,$2200!1<<15!1<<10,$108,0,$10a,0 ;med-res dc $92,$38,$94,$d0 dc $8e,$2c81,$90,$2cc1 bplp dc $e0,$7,$e2,$5000 bplp1 dc $e4,$7,$e6,$5000 dc $180,0 col1 dc $192,0 tube dc $220f,-2,$180,0 dc $230f,-2,$Sl>:S180,0 dc $240f,-2,$180,0 dc $250f,-2,$180 tubev dc 0 dc $260f,-2,$180,0 dc $270f,-2,$180,0 dc $280f,-2,$180,0 dc $290f,-2,$180,0 dc $2a0f,-2,$180,0 dc $2b0f,-2 dc $180 back1 dc 0,$180 back2 dc 0,$182 collo dc 0 dc $8e0f,-2 bcon dc $100,$2200!1<<15!1<<10 modu dc $108,0,$10a,0 dc $8f0f,-2,$180 back3 linec1 dc 0 dc $910f,-2,$180 back6 dc 0 dc $a10f,-2,$180 back4 linec2 dc 0 dc $a30f,-2,$180 back5 dc 0 dc $a40f,-2 bcon2 dc $100,$2200!1<<15!1<<10 dc $108,0,$10a,0 Sm©Z dc $e80f,-2,$182 back2c dc $f00 dc $f80f,-2,$182 back2b dc 0 dc -31,-2 tube2 dc $2b0f,-2,$180,0 dc $2c0f,-2,$180,0 dc $2d0f,-2,$180,0 dc $2e0f,-2,$180,0 dc $2f0f,-2,$180,0 dc $300f,-2,$180,0 dc $310f,-2,$180,0 dc $320f,-2,$180,0 dc $330f,-2,$180,0 dc $340f,-2,$180,0 dc.l -2 font incbin "dh0:asm/data/ruby.r" sam1 dc 0 incbin "snd/snix" sam2 dc 0 incbin "snd/splut" sam3 dc 0 incbin "snd/fviuh" sam4 dc 0 incbin "snd/boink" sam5 dc 0 incbin "snd/snare.glASS" sam6SnôMe dc 0 incbin "snd/ik_boing" sam7 dc 0 incbin "snd/nuppio" sam8 dc 0 incbin "snd/ik_ouz1" sam9 dc 0 incbin "snd/ik_hit1" sam10 dc 0 incbin "snd/ik_hit2" sam11 dc 0 incbin "snd/ik_hit7" sam12 dc 0 incbin "snd/flo_platz" sam13 dc 0 incbin "snd/flo_bulp" sam14 dc 0 incbin "snd/sp_aagh" sam15 dc 0 incbin "snd/sp_pling" sam16 dc 0 incbin "snd/sp_ou" jyms incbin "snd/patang" s1 dc 0 incbin "snd/alien" s2 dc 0 incbin "snd/bb_dung" s3 dc 0 incbin "snd/bb_kassa" s4 dc 0 incbin "Soul!snd/bb_pdiung" s5 dc 0 incbin "snd/doim" s6 dc 0 incbin "snd/eug" dc.b 0 s7 dc 0 incbin "snd/flop" s8 dc 0 incbin "snd/ig_jududu" s9 dc 0 incbin "snd/ig_kash" s10 dc 0 incbin "snd/ig_pdiu" s11 dc 0 incbin "snd/ig_riu" s12 dc 0 incbin "snd/ig_rull" s13 dc 0 incbin "snd/ig_rums" s14 dc 0 incbin "snd/sw_drr" s15 dc 0 incbin "snd/sw_pang" s16 dc 0 incbin "snd/uuh" s99 even samp incbin "smp.repulsive sound" even section varalista,bss_p varalista ds.b sbuflen+4 tulosbuf dSp^gs.b sbuflen section kuvat,bss_c screen ds.b $5000 ;1 med-res plane ds.b $5000*2 ;vec area nd/flop" s8 dc 0 incbin "snd/ig_jududu" s9 dc 0 incbin "snd/ig_kash" s10 dc 0 incbin "snd/ig_pdiu" s11 dc 0 incbin "snd/ig_riu" s12 dc 0 incbin "snd/ig_rull" s13 dc 0 incbin "snd/ig_rums" s14 dc 0 incbin "snd/sw_drr" s15 dc 0 incbin "snd/sw_pang" s16 dc 0 incbin "snd/uuh" s99 even samp incbin "smp.repulsive sound" even section varalista,bss_p varalista ds.b sbuflen+4 tulosbuf dƟNO7p sormelusintropǟp @ =@"~| +LHI6<<NN<<a&Q ,xN.SF FfaB|a /IC"QQXNu  ="~|zRFN4 IRFN,I$N8<=0H<N&Ia6j RE EfNuЀja$"ga<N& taԀ׳(Sf`g"Ka`CpgUf !NuH&J:IV4f>JBg SEkJ SBfSg>f dVf dFf d6f d&f d ~`,~f Q\~`p~`p~` p~`p~6f d f d"|;pX` u/f B`|;pf BSfF|:F>f d6Cf d$:{0P`"?~~:{0X;pj gf FSfRF˻cĽf*JSEk%Sf` 9Lo`z +/ĀQR ្"oH9U <70 /<,_,^8/R7[@wb 8a(e .2'J`L 'Cn#,,*-.(  %$*h*@ ~(6GnBkn >F6=|sb;  "m(q y$~2: #1dT#0K1>#1#u aq'bs~ M>,w>qrUq#:Nb GfκGM@$8FQGxph5<(6DQcE=>bBN[aa BA1:FN@(F|@$B,*G8 :->## DU} 鼓Z Q8@[ p  ),4z*2:Y 񡥲e#'6U=O>,}|QQ枡E*($#2KbOU *,(a2GcQ@}"$*1$@g8wf?#2$WM?cQ#ħ>#?(6(* 2@bc ݞ2; (* 2Dbu1륝>7X1(,> (1G[{#ë @(16*5qf2(Ɨ 6:( ]Z ,KwnY (:@2*[Dϙ 6FF1mi :w2 9= @JAƀPh' y#b#"; &Q !A#      .!# *!0&!-.&*7&19-(+#"(),    2 +$, !+&7/0%#>F7++)121>12362:6.*/=3+/592+''1.22 &'  (' 0/747(.;8W:@::@B7EFcT*Le?.IGX'LO= վɝȻʶk@I,YKQ@/MS "2u`  '!2 ++(,442/;.72;忹ޯ+6( ɿž&#JL$^UFFf}V}To~3~d~? g,"+  o۶̋ԫ #J4M\xKkG8dJ>IQ/@98=; ,8ۧߢң؆ֿϨڿ/-?4 4H3$+DdO_#k>7?j?)]qB b+W @''M "37h$81-#B ^.E` SʔD 68k$:scd~!2T[_(k@ [kR$u$* L<@$,{{?{{{ \{ Z|?@ ?| ΢\P*gހ**b$T$&H@$" :8ws c72 _zo<<02PBLO'+"W$AWJ8HG?GYLY7ɦ7'XLD,y<LLD<$=T+x0 ^D 48:  D9~)Ў^!A14P'+?| U$'$'y/O|<01W><8uM>c>#'8 :'8#p>w'x@w'4l'p O 0Xi|bu'pp ]y8^ʣs8l 18^}<7~.'?wO'|h'OC8w,qy9>B-O'1#-  y|(>fL -x0#'1'(77!'C'c 8Os1|~'O<'~wUb >VB`1?'"VȑPv(W81g;|oqJ`85 LC3c t1'#0' anGK⌉_@'`00wTI|wn<\gW ?V 38 /-bbn/(y#Gq27#/IFBx0|>Pa0"x0:<g)!.' 'D pO@8| 8'£#p|,<;DwDR@''x|$L:f z33I' #3x '66DI]KdB1' 'ʀOS0`@Ha@G'p <Ԝ'"^ 'A<HN`'`> 8a lD+=0)}oL5͎>>|d ?#?78' )>pūiO)SHxhs+1#[FT0 Uqx(O!y}'0 6˟ cPh@'<| ?O'3g/)x8e!xO3cP*ܱ " Vx ' ax!|a2p4OM)3fM%|%hH@p3Wz 88DCLd LK0IOx_bȇP;}$tn'T#'9 ɟ '?'8'p?&ΥD%#" |8{(8 7Mpy?' 8<8$ pyH82'H8 'b 'Z+A/?F_u"/ ]88d^.wHJ9qw'&{{_'1'w3{G'GBGO0JFOy8~ 6:va{gbH|:̅!"i!2gÞ̀' |{ ! ]-̀'ʟ*au&?>=R#7>%TRmAO̮|7Գg0 ρ7h6Vl4 V EDJPV\biou{"@Y2(/5<CIPV]dkqx %,3:AIPW^emt{'.6>EMU]dlt| $-5=ENV^gow #,5>GPXajs|"+5>HQ[dnw (2<GQ[eoy  ! + 6 A L V a l w !!!)!4!@!K!W!b!nָ|!y!!!!!!!!!!!!"""*"6"B"O"["g"s""""""""""""##"#/#;#H#U#b#o#|########### $$($5$C$P$^$k$y$$$$$$$$$$%% %/%=%K%Z%h%v%%%%%%%%%% &&'&6&E&T&c&r&&&&&&&&&& '','<'K'['k'{''''''''' ((.(?(P(`(q((((((((( ))-)>)P)a)s))))))))**&*8*J*]*o********++++>+Q+d+w+++++++,,(,<,P,d,x,,,,,,,--1-F-[-p-------..0.F.\.r......./$/;/R/i/////// 0"0:0R0j00000001+1D1\1u111111 2%2?2Y2r2222223*3D3_3z333334484T4p444444555R5n5555566;6Y6w666667-7K7j777778&8F8f888889(9I9j99999:4:V:x::::;%;H;l;;;;;)>P>w>>>>?;?c????@.@W@@@@@'AQA|AAAA'BSBBBBC/C\CCCCD?DmDDDD(EWEEEEFGFxFFF G>GpGGGH:HmHHH I=IrIIIJGJ}JJJ!KXKKKK8LpLLLMVMMMNAN}NNN1OnOOO&PePPP!QaQQQ"RcRRR(SkSSS5TyTTUGUUUV`VVV7WWWX\XXXxx;yy@ACEGjI<:8642/-+)'l%H# !l:a ' w;`ttppllhhdd`8\\XXTTPPLLHHDD@@ G8^40d@,a$ 2 i ۸$q Ȁ Ȁ Ȋhĩ$|19 (R^ G%.FyAA6Q5BBAD`9RTG2 \,61.CAޕ;@)QF( c"< P2d)Ŕ`,8,,+++p+H+ +****X*0**)))h)@))(((x(P(((('''`'8''&&&p&H& &%%%%X%0%%$$$h$@$$###x#P#(##"""`"8""!!!p!H! ! X 0  h@xP(`8pH X0h@xP(`8pH X0h@xP=(`8pH X0h@xP(`8 p H X 0  h @  x P ( ` 8  pH X0h@xP(`8pH X0h@xP(Ln7B;eHT<9|/ $fJRX~ |=dZ&-FTK-PI.\Gz&wC@Ҁ@@2 [tU2R 8EhjQWCH&,xG?|**g** (1(_,&z`j ;@r?x A^;B=}g`7;?AIHA29>;@ 7$a/'|;0IL`hM" 9p,91Zr<pl R6bHA^`-`v--B OXѢg(I$ qбWt xH VЃd@r@'r@*M xfmO4H0.X<~Gh# Q h3P& Uf < rpH'8".AztHj0]k"' (/p(jA0I( Аm<2)j`,kXM t[fSJ;(=8z= BgZDpMQDD=1*)g?E'$ . N6@жC5zY@Ir;90F:mB*g~pJUDgAWUrj΢xmENZTagJ mqXSBHa$kNi+I+QCg@01P%x0(Z;`'dkJ xa$`Z@J+*$$Ug)t@:`REFB Skg‰>(B Ka\SHkJ'0'^<0DX#AC` o~qpހwNg zQfp !yTfEt# n]m B2:gS'--X/ /fA>9n@9@; l@pn`S: j*%_*1^*Fd@*F?kuF*%._*qI*KB~w**/~*?*!|*/*$FlKyј 1CVk?b6`.oRsz2"3y EYm#Dfn4mt{$5H[p'Hk ::nu|&8J^r +Lo@@oI^(:L`u/PtFFpv} *<Ocx3UxLLqw~ ,>Qe{7Y}"RRqx .@Sh}:\(XX8."ءmJOGzPe]{9`=(d g;0K'@;9A@=GDgmSƎ/mBlB) ;`PQ9(AVm"k@*0EfS$fХ2gZPg@ M-e NA  vBEN@;0@UpRggmJz6IKVg\zDR8~,|`GuN~r {L*9SBB +kB yZp?|7X A8 pJ'LE0'e2h"L'( * yՖ v~!YBpVCQ [ёCASlH3(AI!g rz "x'BGWK SC2"2F`B-hD-P fPC mkrC4g.;AC0BCARBDHJ D\HF@xBDATl@r _%AACBlAuN1NU-j@Jhz   Ld^D=rGYp8BE=f(xzLK*I& L0dgG@ *66]GC"'Ǜx61228:20EHڄBHԃ:8 14 26:4LEZCMLLlaHTPBeP pbf g3uNpL EA&A-X "x z!4@:0 PaffI#%C#:92J: b}G P4`2ahXPTF3y x< sD2d9P$H-%Az YY9 "Y0IAJ ttP $A:d +40<0¢gX@R@|yfnBTz-f.J3+j T?|-aɓт+AdBQXBpDAPÌ739|=WMb?f) \.AHޡ3 " z )(@H(?3 #iC# E(CAH/B fo E !sIfh2N 'vhTC3A)5891 BA) jdK YOFIJD I?p M :h]L(VzlLW(eQjsCsޘD1%ohr"]/F #X,q`/n[XʃR(hYDDcoM9"D 6Źk`\|(B"\nuV]mxuBOlu` Y@ сj;]ˢe^(1(Sp%,˖ 3y\?t0 eGBVmD=0 Y,J@ Modules address ; A1 --> Samples' address/NULL ; A6 --> Customchip baseaddress ($DFF000) ; returns -1 in D0 if not a correct module ; Used regs: A0/A1/A3/D0/D1 ; P41_init modok lea cn(pc),a3 move.l a0,module-cn(a3) move.l a0,d0 add.l d0,4(a0) add.l d0,8(a0) add.l d0,12(a0) move.l a1,d0 beq.b no_samples_supplied move.l a1,12(a0) no_samples_supplied move.l 12(a0),d0 moveq #0,d1 move.b4] 2(a0),d1 subq #1,d1 lea 16(a0),a1 lopos add.l d0,(a1) add.l d0,6(a1) lea 16(a1),a1 dbra d1,lopos lea temp0(pc),a1 moveq #20,d0 cl clr (a1)+ dbf d0,cl lea temp1(pc),a1 moveq #20,d0 cl2 clr (a1)+ dbf d0,cl2 lea temp2(pc),a1 moveq #20,d0 cl3 clr (a1)+ dbf d0,cl3 lea temp3(pc),a1 moveq #20,d0 cl4 clr (a1)+ dbf d0,cl4 move.l 4(a0),a4 move.l a4,Patternbase-cn(a3) move.l 8(a0),a1 move.l a1,Positionbase-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp0-cn(aY3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp1-cn(a3) move (a1)+,d0 lea (a4,d0),a2 move.l a2,32+temp2-cn(a3) add (a1)+,a4 move.l a4,32+temp3-cn(a3) move.l a1,Spos-cn(a3) move #63,rowpos-cn(a3) move #6,speed-cn(a3) move #5,speed2-cn(a3) clr speedis1-cn(a3) clr.l Pdelay-cn(a3) clr (a3) or.b #2,$bfe001 move #$f,$96(a6) moveq #0,d0 ; ; Call 'P40_end' to stop music ; A6 --> Customchip baseaddress ($DFFn-d000) ; P41_end clr $a8(a6) clr $b8(a6) clr $c8(a6) clr $d8(a6) rts ; ; call 'P41_music' every frame to play the music ; A6 --> Customchip baseaddress ($DFF000) ; Used regs: a0-a6/d0-d7 - ; P41_music lea cn(pc),a3 moveq #44,d6 moveq #16,d7 move (a3),d4 addq #1,d4 cmpi speed(pc),d4 beq.w Playtime lea teԐmp0(pc),a5 lea $a0(a6),a4 move d4,(a3) moveq #3,d5 lopas tst 30(a5) beq.w contfxdone moveq #$f,d0 and (a5),d0 add d0,d0 move jtab2(pc,d0),d0 jmp jtab2(pc,d0) jtab2 dc contfxdone-jtab2 dc portup-jtab2 dc portdwn-jtab2 dc toneport-jtab2 dc vib2-jtab2 dc TPochvslide-jtab2 dc Vibochvslide-jtab2 dc tremo-jtab2 dc arpeggio-jtab2 dc contfxdone-jtab2 dc volslide-jtab2 dc contfxdone-jtab2 dc contfxdone-jtab2 dc contfxdone-jtab2 dc contecommands-jtab2 dc contfxdone-jtab2 contecommands move.b 2(a5),d0 and.b #$f0,d0 cmp #$90,d0 beq.b Retrig cmp #$c0,d0 beq.b notecut cmp #$d0,d0 bne.w contfxdone notedelay moveq #$f,d0 and.b 2(a5),d0 cmpi (a3),d0 bne.w contfxdone move 42(a5),d0 or #$8000,d0 or d0,dma-cn(a3) move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) st setornot-cn(a3) bra.w contfxdone notecut moveq #$f,d0 and.b 2(a5),d0 cmpi (a3),d0 bne.w contfxdone clr 8(a4) clr 14(a5) bra.w contfxdone Retrig subq #1,26(a5) bneL<.w contfxdone move 42(a5),d0 move d0,$96(a6) or #$8000,d0 or d0,dma-cn(a3) move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) moveq #$f,d0 and.b 2(a5),d0 move d0,26(a5) st setornot-cn(a3) bra.w contfxdone arplist dc.b 0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1,2,0,1 arpeggio move (a3),d0 move.b arplist(pc,d0),d0 beq.b arp0 ror.b #1,d0 bcc.b Arp1 moveq #$f,d0 and.b 2(a5),d0 bra.b arp3 arp0 move 28(a5),d0 move periods(pc,d0),6(a4) bra.w contfxdone \arp1 moveq #0,d0 move.b 2(a5),d0 lsr.b #4,d0 arp3 add d0,d0 arp4 add 28(a5),d0 move periods(pc,d0),6(a4) bra.w contfxdone periods dc 856,856,808,762,720,678,640,604,570,538,508,480,453 dc 428,404,381,360,339,320,302,285,269,254,240,226 dc 214,202,190,180,170,160,151,143,135,127,120,113 dc 850,850,802,757,715,674,637,601,567,535,505,477,450 dc 425,401,379,357,337,318,300,284,268,253,239,225 dc 213,201,189,179,169,159,150,142,134,126,119,113 dc 844,844,796,752,709,670,632,59%]Z7,563,532,502,474,447 dc 422,398,376,355,335,316,298,282,266,251,237,224 dc 211,199,188,177,167,158,149,141,133,125,118,112 dc 838,838,791,746,704,665,628,592,559,528,498,470,444 dc 419,395,373,352,332,314,296,280,264,249,235,222 dc 209,198,187,176,166,157,148,140,132,125,118,111 dc 832,832,785,741,699,660,623,588,555,524,495,467,441 dc 416,392,370,350,330,312,294,278,262,247,233,220 dc 208,196,185,175,165,156,147,139,131,124,117,110 dc 826,826,779,736,694,655,619,584,551,52_]0,491,463,437 dc 413,390,368,347,328,309,292,276,260,245,232,219 dc 206,195,184,174,164,155,146,138,130,123,116,109 dc 820,820,774,730,689,651,614,580,547,516,487,460,434 dc 410,387,365,345,325,307,290,274,258,244,230,217 dc 205,193,183,172,163,154,145,137,129,122,115,109 dc 814,814,768,725,684,646,610,575,543,513,484,457,431 dc 407,384,363,342,323,305,288,272,256,242,228,216 dc 204,192,181,171,161,152,144,136,128,121,114,108 dc 907,907,856,808,762,720,678,640,604,570,538,50EB8,480 dc 453,428,404,381,360,339,320,302,285,269,254,240 dc 226,214,202,190,180,170,160,151,143,135,127,120 dc 900,900,850,802,757,715,675,636,601,567,535,505,477 dc 450,425,401,379,357,337,318,300,284,268,253,238 dc 225,212,200,189,179,169,159,150,142,134,126,119 dc 894,894,844,796,752,709,670,632,597,563,532,502,474 dc 447,422,398,376,355,335,316,298,282,266,251,237 dc 223,211,199,188,177,167,158,149,141,133,125,118 dc 887,887,838,791,746,704,665,628,592,559,528,498,470 d@c 444,419,395,373,352,332,314,296,280,264,249,235 dc 222,209,198,187,176,166,157,148,140,132,125,118 dc 881,881,832,785,741,699,660,623,588,555,524,494,467 dc 441,416,392,370,350,330,312,294,278,262,247,233 dc 220,208,196,185,175,165,156,147,139,131,123,117 dc 875,875,826,779,736,694,655,619,584,551,520,491,463 dc 437,413,390,368,347,328,309,292,276,260,245,232 dc 219,206,195,184,174,164,155,146,138,130,123,116 dc 868,868,820,774,730,689,651,614,580,547,516,487,460 dc 434,41ZZ0,387,365,345,325,307,290,274,258,244,230 dc 217,205,193,183,172,163,154,145,137,129,122,115 dc 862,862,814,768,725,684,646,610,575,543,513,484,457 dc 431,407,384,363,342,323,305,288,272,256,242,228 dc 216,203,192,181,171,161,152,144,136,128,121,114 volslide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test63 clr 14(a5) clr 8(a4) bra.w contfxdone test63 moveq #64,d0 cmp 14(a5),d0 bge.b ncs3 move d0,14(a5) move d0,8(a4) bra.b contfxdone ncs3 move 14(a5),8(a4) bra.b contfxdӠone TPochVSlide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test64 clr 14(a5) clr 8(a4) bra.b toneport test64 moveq #64,d0 cmp 14(a5),d0 bge.b ncs move d0,14(a5) ncs move 14(a5),8(a4) toneport move 18(a5),d0 beq.b contfxdone move 20(a5),d1 cmp 12(a5),d0 blt.b topoup add d1,12(a5) cmp 12(a5),d0 bgt.b toposetper move d0,12(a5) clr 18(a5) move d0,6(a4) bra.b contfxdone topoup sub d1,12(a5) cmp 12(a5),d0 blt.b toposetper move d0,12(a5) clr 18(a5) toposetper moveW\G 12(a5),6(a4) contfxdone add d6,a5 add d7,a4 dbf d5,lopas cmp speed2(pc),d4 beq.b Preplay rts portup moveq #0,D0 move.b 2(a5),d0 sub d0,12(a5) moveq #113,d0 cmpi 12(a5),d0 ble.b PortaUskip move d0,12(a5) move d0,6(a4) bra.b contfxdone PortaUskip move 12(a5),6(a4) bra.b contfxdone portdwn moveq #0,d0 move.b 2(a5),d0 add d0,12(a5) cmp #856,12(a5) ble.b portadskip move.w #856,d0 move d0,12(a5) move d0,6(a4) bra.b contfxdone portadskip move 12(a5),6(a4) bra.pk!b contfxdone preplay tst Pdelay-cn(a3) beq.b djdj subq #1,Pdelay-cn(a3) rts djdj lea temp0(pc),a5 move.l module(pc),a0 move.l patternbase(pc),a4 moveq #3,d5 loaps tst.b 3(a5) beq.b takeone bmi.b keepsame subq.b #1,3(a5) clr 30(a5) add d6,a5 dbf d5,loaps rts keepsame addq.b #1,3(a5) bra.b dko takeone tst.b 40+1(a5) beq.b takenorm subq.b #1,40+1(a5) move.l 36(a5),a2 move.l (a2)+,(a5) move.l a2,36(a5) bra.b dko takenorm move.l 32(a5),a2 tst.b (a2) bmi.b o &klffs move.l (a2)+,(a5) move.l a2,32(a5) bra.b dko offs move (a2)+,40(a5) move (a2)+,d0 move.l a2,32(a5) lea (a4,d0),a2 move.l (a2)+,(a5) move.l a2,36(a5) dko st 30(a5) move (a5),d0 and #$1f0,d0 beq.b koto lea (a0,d0),a1 move.l a1,4(a5) move.l 12(a1),14(a5) koto add d6,a5 dbf d5,loaps rts Playtime clr (a3) tst Pdelay2-cn(a3) beq.b djddj subq #1,Pdelay2-cn(a3) rts djddj tst speedis1-cn(a3) beq.b jaedmo bsr.w preplay jaedmo lea temp0(pc),a5 lea $a0(a6),a4 !g:Klea periods(pc),a2 st setornot-cn(a3) moveq #0,d4 moveq #3,d5 los tst 30(a5) beq.b fxdone moveq #$f,d1 and (a5),d1 subq #3,d1 beq.b settoneport subq #2,d1 beq.b toponochange moveq #$7e,d0 and.b (a5),d0 beq.b nocha0 clr.b 23(a5) add 16(a5),d0 move d0,28(a5) move (a2,d0),12(a5) move 42(a5),d0 move d0,$96(a6) or d0,d4 subq #4,d1 beq.b sampleoffset move.l 4(a5),a1 move.l (a1)+,(a4) move (a1),4(a4) nocha0 moveq #$f,d0 and (a5),d0 lea jtab(pc),a1 add d0,"!d0 add (a1,d0),a1 jmp (a1) settoneport move.b 2(a5),d0 beq.b toponochange move.b d0,20+1(a5) toponochange moveq #$7e,d0 and.b (a5),d0 beq.b fxdone add 16(a5),d0 move d0,28(a5) move (a2,d0),18(a5) fxdone move.l 12(a5),6(a4) add d6,a5 add d7,a4 dbf d5,los move d4,$96(a6) move.b d4,dma+1-cn(a3) rts ; ; Call this routine 6 lines or more after P41_music ; A6 --> CUSTOMBASE $DFF000 ;#Ȗ P41_setrepeat lea cn(pc),a3 tst setornot-cn(a3) beq.b killer clr setornot-cn(a3) move dma(pc),$96(a6) moveq #40,d0 wait2 dbf d0,wait2 tst (a3) bne setrepeat subq #1,rowpos-cn(a3) bmi.b nextpattern bra.b setrepeat Killer rts sampleoffset move #$ff00,d1 and 2(a5),d1 move.l 4(a5),a1 move.l (a1)+,d0 add.l d1,d0 move.l d0,(a4) lsr #1,d1 move (a1),d0 sub d1,d0 bpl.b offok move.l -4(a1),(a4) moveq #1,d0 offok move d0,4(a4) bra fxdone nextpatter$ n move.l patternbase(pc),a4 move #63,rowpos-cn(a3) move.l spos-cn(a3),a1 move (a1)+,d0 bpl.b dk move.l Positionbase(pc),a1 move (a1)+,d0 dk lea (a4,d0),a0 movem (a1)+,d0-d2 move.l a1,Spos-cn(a3) move.l a0,32+temp0-cn(a3) lea (a4,d0),a0 move.l a0,32+temp1-cn(a3) lea (a4,d1),a0 move.l a0,32+temp2-cn(a3) lea (a4,d2),a0 move.l a0,32+temp3-cn(a3) setrepeat lea $a0(a6),a1 move.l 4+temp0(pc),a0 move.l 6(a0),(a1) move 10(a0),4(a1) move.l 4+temp1(pc),a0 move.l 6(a0),16% U(a1) move 10(a0),20(a1) move.l 4+temp2(pc),a0 move.l 6(a0),32(a1) move 10(a0),36(a1) move.l 4+temp3(pc),a0 move.l 6(a0),48(a1) move 10(a0),52(a1) rts volume move.b 2(a5),14+1(a5) bra.w fxdone posjmp moveq #0,d0 move.b 2(a5),d0 asl #2,d0 add.l Positionbase(pc),d0 move.l d0,spos-cn(a3) pattbreak move #64,rowpos-cn(a3) move.l spos-cn(a3),a1 move.l patternbase(pc),a0 move (a1)+,d0 bpl.b dk2 move.l Positionbase(pc),a1 move (a1)+,d0 dk2 movem (a1)+,d1-d3 move.l a1,S& Y*pos-cn(a3) lea (a0,d0),a1 move.l a1,32+temp0-cn(a3) lea (a0,d1),a1 move.l a1,32+temp1-cn(a3) lea (a0,d2),a1 move.l a1,32+temp2-cn(a3) add d3,a0 move.l a0,32+temp3-cn(a3) bra.w fxdone vibrato move.b 2(a5),d0 beq.w fxdone move.b d0,d1 move.b 22(a5),d2 and.b #$f,d0 beq.b vibskip and.b #$f0,d2 or.b d0,d2 vibskip and.b #$f0,d1 beq.b vibskip2 and.b #$f,d2 or.b d1,d2 vibskip2 move.b d2,22(a5) bra.w fxdone settremo move.b 2(a5),d0 beq.w fxdone move.b d0,d1 move.b 2' X4(a5),d2 moveq #$f,d3 and.b d3,d0 beq.b treskip and.b #$f0,d2 or.b d0,d2 treskip and.b #$f0,d1 beq.b treskip2 and.b d3,d2 or.b d1,d2 treskip2 move.b d2,24(a5) bra.w fxdone ecommands move.b 2(a5),d0 and.b #$f0,d0 lsr #3,d0 move etab(pc,d0),d0 jmp etab(pc,d0) etab dc filter-etab dc fineup-etab dc finedwn-etab dc fxdone-etab dc fxdone-etab dc setfinetune-etab dc fxdone-etab dc fxdone-etab dc fxdone-etab dc setretrig-etab dc finevup-etab dc finevdwn-etab dc f( Lcxdone-etab dc stopnote-etab dc pattdelay-etab dc fxdone-etab filter move.b 2(a5),d0 and.b #$fd,$bfe001 or.b d0,$bfe001 bra.w fxdone fineup moveq #$f,d0 and.b 2(a5),d0 sub d0,12(a5) moveq #113,d0 cmpi 12(a5),d0 ble.w fxdone move d0,12(A5) bra.w fxdone finedwn moveq #$f,d0 and.b 2(a5),d0 add d0,12(a5) cmp #856,12(a5) ble.w fxdone move #856,12(a5) bra.w fxdone finevup moveq #$f,d0 and.b 2(a5),d0 add d0,14(a5) moveq #64,d0 cmpi 14(a5),d0 bge.w fxdone move d0,)f'14(a5) bra.w fxdone Setfinetune moveq #$f,d0 and.b 2(a5),d0 add d0,d0 move mulutab(pc,d0),16(a5) bra.w fxdone mulutab dc 0,74,148,222,296,370,444,518,592,666,740,814,888,962,1036,1110 Setretrig moveq #$f,d0 and.b 2(a5),d0 move d0,26(a5) bra.w fxdone finevdwn moveq #$f,d0 and.b 2(a5),d0 sub d0,14(a5) bpl.w fxdone clr 14(a5) bra.w fxdone stopnote move 42(a5),d0 eor d0,d4 bra.w fxdone Pattdelay moveq #$f,d0 and.b 2(a5),d0 move d0,Pdelay-cn(a3) move d0,Pdelay*֠2-cn(a3) bra.w fxdone cspeed move.b 2(a5),d0 cmp.b #1,d0 bne.b jkd move.b d0,speed+1-cn(a3) move.b d0,speed2+1-cn(a3) st speedis1-cn(a3) bra.w fxdone jkd move.b d0,speed+1-cn(a3) subq.b #1,d0 move.b d0,speed2+1-cn(a3) clr speedis1-cn(a3) bra.w fxdone VibochVSlide move.b 2(a5),d0 sub.b d0,14+1(a5) bpl.b test62 clr 14(a5) clr 8(a4) bra.b vib2 test62 moveq #64,d0 cmp 14(a5),d0 bge.b ncs2 move d0,14(a5) ncs2 move 14(a5),8(a4) vib2 move #$f00,d0 move 22(a5),d1 an+qd d1,d0 lsr #2,d0 lsr #1,d1 and #$3e,d1 add d1,d0 move 12(a5),d1 tst.b 23(a5) bmi.b vibNeg add vibtab(pc,d0),d1 bra.b vib4 vibneg sub vibtab(pc,d0),d1 vib4 move d1,6(a4) move.b 22(a5),d0 lsr.b #2,d0 and #$3c,d0 add.b d0,23(a5) bra.w contfxdone tremo move #$f00,d0 move 24(a5),d1 and d1,d0 lsr #2,d0 lsr #1,d1 and #$3e,d1 add d1,d0 move 14(a5),d1 tst.b 25(a5) bmi.b treNeg add vibtab(pc,d0),d1 cmp #64,d1 ble.b tre4 moveq #64,d1 bra.b tre4 treneg sub ,26w&vibtab(pc,d0),d1 bpl.b tre4 moveq #0,d1 tre4 move d1,8(a4) move.b 24(a5),d0 lsr.b #2,d0 and #$3c,d0 add.b d0,25(a5) bra.w contfxdone incdir dh0:asm/data/ vibtab incbin vibtab jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc vibrato-jtab dc fxdone-jtab dc fxdone-jtab dc settremo-jtab dc fxdone-jtab dc fxdone-jtab dc fxdone-jtab dc posjmp-jtab dc volume-jtab dc pattbreak-jtab dc ecommands-jtab dc cspeed-jtab temp0 ds 21 dc 1 temp1 ds 21 dc-A 2 temp2 ds 21 dc 4 temp3 ds 21 dc 8 cn dc 0 dma dc $8000 setornot dc 0 rowpos dc 63 speed dc 6 speed2 dc 5 speedis1 dc 0 spos dc.l 0 pdelay dc 0 pdelay2 dc 0 Positionbase dc.l 0 Patternbase dc.l 0 intaddr dc.l 0 module dc.l 0 *********************************************************************** * Normal scroller * *********************************************************************** lev8 = (640+96)/8 lev16 = (640+96)/16.&} scroller movem.l d0/d1/a0-a2,-(sp) lea scrollc(pc),a1 subq.w #3,(a1) bpl.b srolli lea scrollp1(pc),a2 move.l (a2),a0 move.w #14,(a1) moveq #0,d0 move.b (a0),d0 sub.b #' ',d0 divs #20,d0 move.w d0,d1 swap d0 add.w d0,d0 mulu #40*16,d1 add.w d0,d1 lea font,a1 add.l d1,a1 move.l scrollarea(pc),a3 lea lev8(a3),a3 wblit move.l a1,$50(a6) move.l a3,$54(a6) move.l #-1,$44(a6) move.l #$00260000+lev8-2,$64(a6) move.w #$09f0,$40(a6) move.w #$0401,$58(a6) addq/ .l #1,(a2) tst.b (a0) bne.B srolli move.l scrollp2(pc),(a2) srolli move.l scrollarea(pc),a0 wblit move.l a0,$54(a6) addq #2,a0 move.l a0,$50(a6) move.l #-1,$44(a6) clr.l $64(a6) move.w #$d9f0,$40(a6) move.w #17*64+lev16,$58(a6) movem.l (sp)+,d0/d1/a0-a2 rts ************************************************************************* dmasave dc.w 0 irqsave dc.w 0 draw1 dc.l 0 draw2 dc.l 0 mulutable a set 0 rept 285 dc a a set a+40 endr vec_p dc.l cube_coords ;Koo0 ISrdikset dc.l cube_con ;Kytkennt dc.l cube_rot ;Pyritetyt koordikset xrot dc 0 yrot dc 0 zrot dc 0 depth dc 140 c macro dc \1*4,\2*4 endm xrot1 dc 0 yrot1 dc 0 zrot1 dc 0 cube_coords dc 100,-60,50 ;H dc 80,-60,50 dc 80,-10,50 dc 60,-10,50 dc 60,-60,50 dc 40,-60,50 dc 40,60,50 dc 60,60,50 dc 60,10,50 dc 80,10,50 dc 80,20,50 dc 70,29,50 dc 70,60,50 dc 100,60,50 dc 30,60,100 ;P 1 dc 30,-60,100 dc -21,-60,100 dc -30,-50,100 dc -30,-1,100 dc -22,10,100 dc1 10,10,100 dc 10,20,100 dc 0,30,100 dc 0,60,100 dc 10,-40,100 dc -7,-40,100 dc -10,-37,100 dc -10,-13,100 dc -7,-10,100 dc 10,-10,100 dc -40,-60,0 ;D dc -90,-60,0 dc -100,-50,0 dc -100,50,0 dc -90,60,0 dc -40,60,0 dc -60,-40,0 dc -73,-40,0 dc -80,-37,0 dc -80,37,0 dc -73,40,0 dc -70,40,0 dc -70,29,0 dc -60,20,0 dc $9999 cube_rot ds.b (cube_rot-cube_coords)/3*2 ;Rotated coords cube_con c 30,31 ;D c 31,32 c 32,33 c 33,34 c 34,35 c 35,30 c 36,37 c2xy 37,38 c 38,39 c 39,40 c 40,41 c 41,42 c 42,43 c 43,36 c 0,1 ;H c 1,2 c 2,3 c 3,4 c 4,5 c 5,6 c 6,7 c 7,8 c 8,9 c 9,10 c 10,11 c 11,12 c 12,13 c 13,0 c 14,15 ;P c 15,16 c 16,17 c 17,18 c 18,19 c 19,20 c 20,21 c 21,22 c 22,23 c 23,14 c 24,25 c 25,26 c 26,27 c 27,28 c 28,29 c 29,24 dc -1 sin incbin sin pers incbin perspective scrollarea dc.l scarea+15*lev8 scrollc dc.w 16 scrollp1 dc.l text scrollp2 dc.l text section jees,data_c font in3wocbin ruby.r incdir df0: slog incbin slogan.r song incbin p41.smart_enough cop dc.w $100,$1200!1<<15,$102,0,$104,0 sbp dc.w $e0,$5,$e2,$0000 dc.w $92,$28,$94,$d8 dc.w $8e,$1b61,$90,$38d1 dc.w $108,0,$10a,0 dc $182,$777,$180,$fff dc $400f,-2 dc.w $100,$1200,$102,0,$104,0 dc.w $92,$38,$94,$d0 dc.w $8e,$2c81,$90,$2cc1 dc.w $108,0,$10a,0 bplp1 dc $e0,0,$e2,0 dc $182,$3bd dc $fe0f,-2 dc.w $0180,$0fff,$0182,$aaa,$0184,$0555,$0186,$0000 bp1 dc $e0,0,$e2,0 bp2 dc $e4,0,$e64}?$,0 dc $100,$2200 dc -31,-2,$1e0f,-2,$100,0 dc.l -2 section ehehehe,bss_c scarea ds.b 100*46 screen ds.b 3*$2800 end $e0,$5,$e2,$0000 dc.w $92,$28,$94,$d8 dc.w $8e,$1b61,$90,$38d1 dc.w $108,0,$10a,0 dc $182,$777,$180,$fff dc $400f,-2 dc.w $100,$1200,$102,0,$104,0 dc.w $92,$38,$94,$d0 dc.w $8e,$2c81,$90,$2cc1 dc.w $108,0,$10a,0 bplp1 dc $e0,0,$e2,0 dc $182,$3bd dc $fe0f,-2 dc.w $0180,$0fff,$0182,$aaa,$0184,$0555,$0186,$0000 bp1 dc $e0,0,$e2,0 bp2 dc $e4,0,$e6}32m _ .o~( ~) ~~*,___  Spd4 _ .o~ ~*,_ -o~*,_ ~*,_ .o~__ .o[0;36c2m~ ~) ,____ .o ~*,____ . ~*~( ~*,____ .o ~*,____ . [Y37m~*,____ .o ~*,____ .) ~~*,___  _ .o~ ~*,____ .o ~*,____ .o [t"0;33m) ~~*,___  _ .o~~*,____ .o ~*,____ .o ~*,____ .o) ~~*,___  _ .o[0;32m~~*,____ .o ~*,____ .o ~*,____ .o) ~~*,___  _ .o~~*,____ .o%"r[0;32m ~*,____ .o) ~~*,___  _ .o~~*,____ .o ~*,____ .o ~*,____ .o ) ~~*,___  _ .o~~*,____ .o )\())( ` ) ))\ ` ) ((_)( ( /( (()/( ))\ )( ( .o) [5!⅁;37m~~*,___ ()  _ _..-' , /_, , <C>/  _ __   _ _  _  _..-' , /_, , <C>/  "lox[37;44m_ __   _ _  _  _..-' , /_, , <C>/  _ __   _ _  _  _..-' , [37;#qԫ444m/_, , <C>/  _ __   _ _  _  _..-' , /_, , <C>/  _ __   _ _ $7i+  _..-' ,  (__  '  _ .o~ ,____ .o~~*, ( _. Artist(s): Dipswitch  &զ Filename: ds!-home.txt _.o~ ~*,_ Artist(s): DARKHOLDER ~* Filename: grs!daod2o2o.txt*,_ ___ ( Artist(s): Goto80 ~ Filename: goto2020.ans_ .o~ ~%)uNMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&' '*, Artist(s): Yop  Filename: shd-4626.txt ~*,____ .o~ Artist(s): Yop  Filename: shd-rv21.txt毨  ( _.o~ Artist(s): zEUS _ ( .o Filename: se-page.txt [1;33(Ë9m,_ ( _.o~ ~ Artist(s): zEUS -.*,_ ,~*, Filename: se-bbs.txt ,____ .o~  ( _.Artist(s): Dino ~ -. Filename: dS!-GRFF.txt [)/32mo~ _ .o~ Artist(s): Yop ~* Filename: shd-2o21.txt ~ _ .o~ Artist(s): Goto80 *, Filename: dS!-GO22.txt ~ _ .[0*;32mo~ ,____ .o~  ( _.o~ ~*,_ ___ ( ~ ,(_))/ )\ /(/( /((_)/(/( _ )\[1;+;s33m )(_)) ((_))((_|()\ )\  (  _.o~ _~  _ _ _  _..-' , /_, , <C>/  _ __   _ ,b\X[30m_  _  _..-' , /_, , <C>/  _ __   _ _  _  _..-' , /_, , <C>/  [37;4-n4m_ __   _ _  _  _..-' , /_, , <C>/  _ __   _ _  _  _..-' , .%/_, , <C>/  _ __    _ _ __  ~*,_ __ ~*, ~* ),___ [/b0;35m. ~*;_ Crew(s): Divine Stylers  Size: 95 KB ;_  Crew(s): ghost riders ~ Size: 16 KB -.o~ -. Crew(s): Impure ASCII 1940 Size: 503 KB ~*, Crew(s): Shrimps Design 0 Size: 88 KB _ ,__,.o~ ~*, Crew(s): Shrimps Design Size: 21 KB , ~*;_ Crew(s): Style -.*,_ ,~* Size: 16 KB ~*;_ 1t? Crew(s): Style ;'  ; Size: 18 KB . ~*, ~*;_ Crew(s): Divine Stylers  ; Size: 999 KB ~*, ~*, Crew(s): Shrimps Design Size: 43 KB ~*, ~*2H, Crew(s): Divine Stylers  Size: 960 KB *, ~*, ~*, ~*;_ -.o~ -.*,_ ,~*,  | |_ ((_|(_)_\ (_))[1;373(m(((_)_\| |((_)((_)_ _| (_)) ((_|(_) ~*;_ (_)   __ _ _ _  _..-' , /_, , <C>/  _ __   [0;30;4>"44m_ _  _  _..-' , /_, , <C>/  _ __   _ _  _  _..-' , /_, , <C>/ [1;335";40m _ __   _ _  _  _..-' , /_, , <C>/  _ __   _ _  _  _..-' ,[1;33;406|Lm /_, , <C>/  _ __  _ _ <C>/  ~* _.~*,-. ; ;,_ .o-. ;,_ .o-._ . -. 7U;*, ,_ .o-. ;,_ .o Released: May 2020 ;,_ -. ;,_ .o-._ . ~ Released: 6 June 2020 .o -. ; ;,_ , , Released: August 2020 -. 8p ;,_ .o-._ . ( ,_ _.  ( _ ,_ Released: November 2020 ; ( ,_ _.  ( _ ,_ Released: 3 April 2021;,_ .o*, ~*,__ o'-. ;'  9Released: 7 May 2021 ,_ .o *, ~*,__ *,_.' ,_ _. _.  Released: 29 August 202o ;,_ .o*, ~*,_.' ,_ _. Released: 21 September 202 ;,_ .o-. ;[0;:32m,_ .o*, ~*,__ Released: 31 December 2021 ;,_ .o-. ;,_ .o*, ~*,__ Released: 19 January 2022 ;,_ .o-. ;,_ .o ;,_ .o*;݂[0;32m, ~*,__ o' '  ;,_ .o | _/ _ \ '_ \) | || | '_ \) / _ \/ _` / _` / -_)| '_(_-< o*, ~*,__ .  _ __ _ _  _  _..-' , /_, , /  _ __   _ _  _  _..-' , /_, , <C>/  _ __   _ _  _[1;33;40=Qȣm  _..-' , /_, , <C>/  _ __   _ _  _  _..-' , /_, , <C>/  _ __  >;v _ _  _  _..-' , /_, , <C>/  /_, ,  ' ; ,_ _. ,_ _.  ( ,_ _.  (  ?m8 ,_ _. )  ( ,_ _.  ( _ ,_ _. ,_ _. _ ,_ _.  ( ,_ _.  (  )  ( ,_ _.  ( _ ,_ _. ,_ _. _ ,_ _.  ( ;- _ ,_ _.@)$  ( ,_ _.  (  ,_ _. )  ( ,_ _.  ( _ ,_ _. _ ,_ _.  ,_ _. )  ( ,_ _.  ( _ ,_ _. _ ,_ _. .' ,_ _. _.A  ( ,_ _.  ( ) *,_.' ,_ _. _.  ( ,_ _.  ( ) _.  ( *,_.' ,_ _. _.  ( ,_ _.  ( )  B B( ,_ _.  ( ) ~*,_.' ,_ _. _.  ( ,_ _.  ( ) ~*,_.' ,_ _. _.  ( ,_ _.  ( _ ,_ _.  ( ) CE ~*,_.' _.  ( \__\___/ .__/ \_,_| .__/|_\___/\__,_\__,_\___||_| /__/ ) ~  , / _ __  _ _  _  _..-' [0;DD$30;44m, /_, , <C>/  _ __   _ _  _  _..-' , /_, , <C>/  _ __   _[37Eyw?m _  _  _..-' , /_, , <C>/  _ __   _ _  _  _..-' , /_, , <C>/  [FT37;44m_ __   _ _  _  _..-' , /_, ,   _..-' , _. _. ( ( ~( ~[1Ge;33m-._ ( ( ~( ~( ( ~( ~( ~-._ ( ~( ~( ( ~H1h9(  .o~( ~( ~-._ ( ( ~( ~( ~( ~( ~( I 3 ~( ~~( ~( ( ~~( ~( ~~( ~( ( ~( ~( ~JjS[0;32m~( ~( ~~( ( ( ~~( ~( ~~( ~( ( ~( K1 ~( ~~( ~( ( ~( ~( ~~( ~( ~~( ~( ~ [Lr 0;33m|_| |_| ~ Pau7 ~~( o .-' , /_, , / _ __ _  _  _  _..-' , /_, , <C>/  _ __  [M˲0;30;44m _  Spd4  _  _..-' , /_, , <C>/  _ __   _ _  _  _..-' , /_, , <C>N0 /  _ __   _ _  _  _..-' , /_, , <C>/  _ __   _ _  _ [0;44iAM9m _..-' ,  _1;33;40m _ _  _  _..-' , /_, , <C>/  _ __   _ _  _ [0;44OHPa9876543210/.-,+*)('&%$#"! yxw'&%$"! onmlkjihgfedcba`_^]\[ZYXWVUTSRQP/?p xc02-4.ansp:OQ             [5;3OR@:0;47m            [1;36OS@܎e;43m            OT:[0;32m            [OUy37m         [0;5;OVc30;44m       ::  ::  : :    :: :    ::  ::   :: OWNN _________________ ____ __ 00 Spd2 Pau5 Spd4 OXsl Spd- Pau5 Spd+ Spd- Pau5 Spd1 Spd4 Spd2 Pau5O Y Spd-        O ZpG          O ["          [37;4O \⤱@0m          [1;31;O ]a40m \ / ------ .-. O^ x _ _ x .------------------- ------- ---- - --- - --- ------- -------------------. . ______ _____ _____ ___.-___ __ _____ _____ ______   \\ ___________ ___:_ ____ ____ _______. O_q //  __,  W h e r e t h e w a r e z c o m e f r o m       [0O`2;1;30m            [0;1;OaK34m             [30Obz;40m              [Oc-H30;46m            ::  ::  :   [1;31;40Odאim     ::  ::  :      x - - OelPs------------------------- -------------------- Spd2 _________________ ( __   | : qUARTEX bHQ - bAD kARMA bHQ - Ofu\hOODLUM eHQ - gLOBAL oVERDOSE wHQ | _) _Y _Y _Y (__) | _Y __Y _Y (_   \ _ // |__ _//_ \ | [[* tHE yARD 1996-2022+ *]] -,_  _.-------.)/__ x  Ogw __ /\_____:         [OhJA^0;1;36m          Spd+ [1Oi;43m   __ -         [1Oj;5;34;41m   Spd4           ::Ok9We[37;44m  ::  :     ::  ::  :     ::  ::  : / \_______     ::  ::  \ / ------OlcJ X____________--------- x---- _ ) _ /..\ ------- ---  \__/  | _ __|________ ____._________ _____________ ______ _____. | OmD   \_ | \_ | \_ l_\_ _/\_ \_ _/\_ l_\_ | _/  ___ ___  | \_._/ / | \/ / / ____|__ __. _____ _____ ____  )_//`-------'\\_ l_,-  __/\__________________________________________| \______________/ \ |__ On         __ __ _ _ _____ _____ _____ ______ __   [5;36;4OoƵ1m          __  (_ )  O  dxu          |)|)(   H0CtSqz8blN}?rsormelusxSS3?GqKr?devsprs۠ssystem-configurationqr|F-||x|ni`@ " ,genericK Bgenericutu?lUpuv yxwv8disk-validatortuwl&G$ #Bv lt "*Nt0҂`r $)( r0Ҫ$)( "*XW%A%j$*XS%BB"*p(jxNB#jr#A nҪt!rҩ `t "*NJg0r#At #B "*N") $)"*Ҫ!$*"*p(j$N$*"*p(jN#A$*"*p(jNҩ%A`J$< rp(j(N"*@&)$0(G" p(jNJf"p(jNrp(j N"*@Jg"p(jNB#j"*#A nL#Atāv#C#A$) m o$) Gux[K" p0(j8N"*ҩ#p"*ҩ#p ") ©Jfr`r#A $)ĩJfr`r#A gJ f$) G " p0(j8N$) "*p0(j$NR") p0(j(N`"*Ҫp0(j,N#j$r#A($n2ҪJg"*ҩ($0"*p8(j$Nrҩ(`"*ҪJg"*Ҫ$0"*p0(j$Nr%A`"*Ҫp0(j,NB$"*ҪJg""*Ҫ$0"*p8(j$Nr%A"*#p,J,g$*,l#B,#j0"),$*R"#A40nBҪ$0"*pD(j$N"*ҩ4$0"*pDuyA(j$NRR$rҩ4`"*Ҫ#p(J(gz$)("*p<(j$N$)("*p<(j$NR")(p<(j(N"*tf"&*֪x8f&)(g$)(G," p<(j8N``<$) G<" p0(j8N`$$) "*p0IlNtgtvg`$*"*p0(jN#A$$*"*p4(jNҩ$gGT" p0(j4Nrҩ `Jfrp(j NNNq in drive 00Replace volumeis out of range is invalid- bad extension- not directory or filebitmap checksum error`b$)G|" p(j8N``"ҪJuɷpl$)"pIDNN$)"pINN$)G" p(j8N`""0tgvg`N- bad block type- unexpected data block&*ցx8f(JgGx" p(j8N` r%ArN"$)fJfJ f Jg$)G" p(j8NrN- second root block- bad directory&勴8fJ8g*(*؁*0H8g$)G@" p(j8NrN - bad header- bad extension- not directory or filebitmap checksum error`b$)G|" p(j8N``"ҪJz{?sp{|u?,|Ustartup-sequencez{ xSormelusIntro Sormelus|?startup-sequencez}|^U:Y@3xH~?sndp~ 3Tluuh/}~ߊ            #     #     #      ~;O         !%      %%+      "            ! %     ~RV  / 0  $    1"'; %       ((!:0    !      5260 #     ! #-+ $.% ~H%&"&,      !&"                        ".%#   ' ))"~wȑ !!"                    )      "        ~Uv~     !"         " $$          ~                                     ~*D                                     ~ ZV                                   *>k Tsw_pang}+K 4 =R8R-Ƞa"A$9: CL@AZN+ـϤ 2j|t2ۘ&T =󩮶೫!6Wu[:Ϋݹ =kzcK3 Էƌ;@/T)!vLqLeaЌ(W\X#/ԳE^Fv;䩯4QbiXQZZJў!չG}tQYME ɳIi,+7>hkU/+4YHϖS,dh! K#\<`l~lܲf}fCI1լ% mo,#fM ݏʵ풪 9f8b8hk1vi),/ɫ̽Dz2)iKI!Hby_ A=,#Ѐڣ M{idfdMh @N좊bF +1 ʌR 8/;7$Q}[8\H Y00 ! г-'D^-'MF1 $A [~NE 8ʣX#6R , 欭 dNԼWqDe/H Eb -9'£ε5=\0 Aɻ$0:O' X'VMYY↹0I4HF 9Ƽ-!ۨ7Z$fa)Kz!!/.;cGZx *'ϙ⺀қ.C<gL /F %$__8\F,ص꾁ט 5cFO_`HD)տܙʰ/Rr]ZR[^DOaEދJ;Hӵ ۱S2NT#I?ucL0󢉹݁(/`7*=1D_6 Sݒ!2 0T4=#5?װ׬%=Sms7 XN_7)"+n0T Ca0Ճཀ9+TgiY!iP 譞ҷ/6)5[C -ԟ)I#'^?N8%!ɥ 3#2_N7-,)ۙ NyiKW{],3;qf ؏%/R7Dke0jQ +2͗ǯǶP\8s_:rL@Q-𰀛Ҋ0L$iTK&齒ƻ7: -5?OnMKGB𹲓1FtEO8ʾͱ9@7?- ,&Bϩһ 8^H/rz>>[Iúظѯ&  \l^#+.8W7 1 *+mqH7j%01 D< װb~]: ?՟ [CWu5HeFڦǮ˴Ѭ=F1{hm7BH7ݾ7Gbq\XXR;<2 // պ[x\TSQ;#!50IZtFo^ٌSve[T[6ͱ1->D$5Z& ׭$82+"D 5X9ċ 4yzk; ﭕ *T:'-;)0)ƀӂ+6/G EEOok@븡]t_! ):0$-jI.'Ƨ=O=0.'%BnhI8ʹ6aooymSC$ē-B01Yg;/8- )ў=jux}c+ š@nhcqWLPK6갛 ')Q]XRLR[@),+ѼFdoZQD&ݸȢ9[vmW_2)*/$ϱetI(* ?BSۥ*qdZB"೐"AIXk~r^B"Ұ̺ô09.T[?.()',)&2<㴵Ƣ '5@HJHJ[WD2̹ #'TjZUw|s`A&Ә.:WiQIIϝ 8+ &PL>Uerc[XNH& 갹ЩŖ5KgP*L7ҽ 4/9%ӱȼ + (.@M]WVL785=?أLK?d)<1%WhFլQH%G= $ =5 şƹ+ZL/7* 0boT(ީ=`\PARS:<5߮ :˿Ͱ "K8@K<2(F?!Ҍɷ .AJMN81=1/!?3;G:. '/ǵ6,7>-0UU4'%_.Ծ%':atXD$⭭ܳķ'8`mjueMMHT841 ϫ% <9,໫/U}saTO-  (F:$- ͟-PC.=I-,?G1! ۹ک +('_faO0߻ )B`aQ*+GCG%))(Ҽ'bmnjE, # Խ=FC:=%  *IQTT o2!! %"$1  $$#   Ǹ%1373& )((!(0?=*  $2ÿ# ' !!' #$! $ $-  / !   $4>=:4 7B=5& $*,5*   .-**&!  "'* `d/141!  //#+0)%"#      $( "   !% "  !$ )'# $'   #++ $'  )$    "  -(%!ô&-#&$  ( +&$&()&"" &-,+    #% !   "                    Ґ        #% !   "                    (k (sw_drr}C'2'^"EgW'g΀q8iqDE򀀀/ўH`ƀ+qr4/}~r2蜀/^qZ3@@٦by2'"4r}g3żѩ;:")RSHJ;Edqt}mdR/żջ '/D4'!8@DAA:8AA;ED3Ů2QYQ4%''! !)+%3EH+';S;2'"! '!+   '48%'/+%''     2;R`3LSE%EDюw'4̀AJ`ـm"E@Eŀb2^t4giyd͎%)Qk/ـdY٢EHWgrL`~)ێ2"2"ٞ٢2'/R%4HmW٭ѻ ""%'2HggRRAJqykdRA3%ѻ 28EE;@+ :;A@EJEJLJJE8ſ 4EHYgg^@++''!'23+2;D' )2;JbW;23/'%   ):DRD222+"%!3g!Y''4Q 8@SRջH耮}οikKȡE8^%Q wR^4E}Edd倎^ՌA^3'퀀bW͜Riـ gW^DYL 2''3;)%qd4EZgrRƻ弙 '8JZ`LDE@QbR;2! "+;@;4' /283232)+'ſż)48DRWH+ "' !)ο!38@H^J:8;:2/     " '@R^gWHED8'+  !4@yt'; ZH':: %;~:3+Y<<倮'24 !L퀙D kwg`Hrgbk2 מYy;:+ 4dd+DY`Ettٕ!3ƻ"LDWkD2`yd+͜2RZgtrdg`Q^^LA2'!"μ +3ALJSRE4%3ADJHLJQE@@;4" %/DQJES`SE3//22+8@DE2!%̿)228EQ8/3;844 !' ſ';HQQ;22/! " '`bgEE+)%'88%^ բ~' ΀ـZgD~Z;@24 ;g/wQgW}僻:J2!+J}2A΀ Yr:킃rQA^SrR '"" 8A2僀 LD8mrYEiw`:'  ΢ſ2JRWbib^`QSQ83)+23'ο /DHWJ4""4;JRRQJEEEA;!Ż);;@LRH;+'2:;@EJEE3"'+!ȼŻ''''2;22;EA::%//! %2ADLL843+%""+Q;ED%@+"!:!bq Q8 Q&RA%'"`̞wt򀇀/bJE3燇 ̇b}'L4:8HH~w:; "4kdٿ/ ΞŠ'@!ۓR~Y)%42Hr}m+  !%3" ƻ"3 2JA2)8bkkZ;!% ȭ /43@EH@@834++)"!%' %"') '+48;:4482)+   )%" %')2342" !"!!   !""     )8 % "/Q+  2ѕH@%%RH "! HmR E  ;"!3A'! ! 32 ':;% ! "''!            '`bgEE+)%'88%^ բ~'B"!@splut})S)ɀU*΀ c.NSGUհ#UκU^Z5-Is)" 2ޛ/"  / "  "#5    '              %%#%W! "2                     !uS .'     *       )        #           '0    &                          L                              !                          {?               P              b   у     κ  qr Zp B Zoxsp_pling}sR K4NF)@$)"0^+ED11P:(7$0G#J #539ߺ809.+8  3'= @)!3:C߹"б!/ '. ,'أ #1Ѳ"-(@,"/5( 8!0 $ ,%7-  /!96 # %NG''>8#0% 7#, .6 5 (# J ,'I) :#" 3%0$ /;$&&޴ 7%' %5ƴ  !491! 6#) <#A(ά% %<'-M.#6/-*.8 ! .9(+75) !#/7  )*$  73?,) ߭&&,%% % + 5<## $ '?.%+  %-ܼ' ;!&*6 %* )٫Կ:0*  %  (! % )%!67 %*  .2  $&& %$$ #-&              #   "          5                       ;?                        *Ozosp_aagh}sC%ߺ 15@S '+ݳF5#)? !1->*2+ !)>' +,E>% ,%$F7))%,7 -2W1+3:F)$4-52!=)ټ(5GE%$꽻0 %066*+#,G# ڽN( 0>$*+$"* 9:-7  $$ǭG*: ' R:/-% 0 +.C6, KD-LI* ߺ.C3%/,! 3*϶ =:A(B@$ƹE3 5A+" (7; ;)-( HD 9+ :G0鶿 )*$7 ($6"(%R8 ѺJR/ ƨ-I997.ո J! ' < /M5 )A5ɲH) $ &64ww(4#,=(('"04 .#-Ὸ! "=A#&. ''' *,+06>4 B5 4*%3 '*%   4 + "۵# / PG ٷ,B;'#/"!A(;> %.3=% (!'*6 9 ,$"+ 3E+ .#&" FêPk  0*>$ %, "   /8&&)!!2+   + $:' %  0.%/)(/( *74$("+% !(/&(,&"2' *) #, )-+,&1& "-0-, 4. !&/' )+&.,  ".$020,-& 00$2( ۶}  '+!/,!  ),#3/$ %%-' // # #/* +.  0+$,   #.% %& +! #    !"&,!   %%  #  $&! !(Ŧ#     *,                        ń                       :ʞ         !"&,!   %%  #  $&! !(ȃ? !@snix}@s# .j_C;5I=I# p-ޣԗZc  -I%߀Ľ' 2#'- $T 41%XX68 28/14F%h%GDW D.5Z6jIK1=.;(R؀9MZ%$c8989<ڀ?j!p!l=JĻ;z1eml{X !\_}ʀW9j!8T Jwƀ B+ f[*ӤBQG#@^c**G4M+սw1W~% 2ӀvqK a蓇< <=/ʺhDf怀 W!+*i~(ˏ_߄Xi1 'N{ Z*Ӏ8$a(H4+6;sE տ$4hOkT ϭ ,:VO% -A /   -" 75  0(-+ S,+ %      "( @?!5 91( :볪 -5Rӯ/ *?9 #!  0,% (:4GL.%    !Թ "&''!%       " 6*)0(' +  $   !;(  $'0/(0/3 O@7/`<@  ? ߿äğ򴇵в"  ! ?%"'?8(O90+'/;<5=7;'0-%''/7?0&$+7'&#!"/  /( ۿ(0%     Ս=  (  * #                            ֖á%                     Y                               ؅p                              |i          ڜ         QDr  ( 0<46$    )%                 ܃_"                        ݙqe     ރ      ~        mlpatang} =_[[[[[KGGGGGŀՀ{w͉OS[go; ++++;;;;;;;?#VVVVVV)=bbbbZZZr333/+''##{zdl{ntf> 8:11____bbbbfjmq /AAJf_WJW1imm ͜Ʋ¹CE&k 8+ײWSk{`Θ BO dm[  $7T]9 Ǯǥ%̜˩0Tr`9  * ൚.!@<׭*!ȯ۽T7se\C(Svq_^UcCƿ,<& %# 退!4߸-!D[kv_[_M4 ӣ& O8!#$$(69B4ž $" DRL@7)6P^NZ^\=;JJBNL>"$"@_ZPI>00 Ĺ.]vjcE)() ' Ķǽ ɱ02,8MV[K:)."$)  VVRRRRRRRR ")k$ Ե *"'5::*  3. ͵źʵ.=DLNI.(/%ٯ€@EE892-(=NO8=SY@%'1O`dYHJ;  /(&( -AYL/» &4OY[[TF% ̽DO>( ν$$3<5$&7DHHDA.+00+).$$3  # &'&!"'!,DG@;.) 11.6+! &?VOpmmmjjjjjjjjjjj""'!)19EB1)'&&346/&   ̿"%2724*݀ 7EOJRc[WQL?EYaVGJTE5-08@GO\kaRYYR@0-# #2*%37:83/*#(58:8-γ==::::::::::::::==  -+00)   # &#-9=;EHC;0+))!!$䒮(##ʽ·ͷA>D?6# '**)$&&$",7:=<92)&'44"  )4:J`nkhbO@5)$   ,25;:5-**(%  2/+--05;8-" ʿ .1;DID8  "*(-031&# 6GJJIIG>+ s{¼뿵Ͼ(((+++...11144777##/22971+&)28?@CBLY`]PC7$  ..)#&5BEB:1&   # 77777:::::::===@@@@566-'     ⮮Ÿ  !"16:AEJD960"!  "1<=  " '(! ¼Ź¿ ꗚf˼ ).)142.,+%"),(  &## ,>JNMKG?2,,)# " "*0*$   û    1=FJSOMOOLGDF@1'  !(('+++'$     *;HHEA5*$!'*(  "),%  k  %#+032) #0@NVWXSKC:/((#"    &.3-&  '    !$+'$#$$''$&$! #$ $,.'',,,(*($!       %),062/(   "$$      왘 "&,30.0.0,%  &      $%!(('%!              %*./'      $&'""&&',+&   #$$$$'+)            !      "&" m@6  #%'%            "&"!            #%%$" Ű3 %&!           ""#         "            ܂       #%%$" '!@nuppio}ʰ+<(9?4²^SO/蹍"K\gh1Yqb%몟)EesA5#W=綿4>FAݬD#W&<.ᶜ25GA+ĺF">86ٮ =7%O0찾 4@5V5%̹ 3B=Q."%+8; /G4,淽98ڱ 0+5$57( կ 10!ؽ-#$ /(/(,( 0        )     #     bS"!                                          }3                                          P~Geq                                          l Tik_ouz1}؞||\8@||@@|p \|8贀 |x|p$ l||@`|lX|H؀ p|\\PD||X|4(4||8ȀX|8蘀|h䀨(|xH|x4䌀||HL||`x|d`|=<;klig_pdiu}:<44 <8%(4<9",2;;765433!2"0#/$-6=<4(/;>:0%#6 = *2>.,>1'=4!<-09>#82( <=*36&6'6'6(7'6'7'5'7(-9@<40':> 9$-6?(=:(!A33@-;:(@&>B$@ *@.< 3<)@ := A<*:7/<)A =*޿ /A;0 *@63$E19>3=.!?'"B$ݾ&@ٿ+A &Bݽ@259 1Cп"@)?7 -A ٻ::$A0 0Cڻ8> !?. $B2 "?2!@8Ŀ 9:;= ̾7Bպ #@6ƻ 7=ܾ &A7Ż5A۽#B:ʸ(B5ʻ+@4˽.C4ǽ )C5ǹ,A2˼ &??ߺ3A.ƹ(?;׷6E)ľ.?8ݻ+?;ۻ.B9 ׻-C; Ҹ ,@7 պ:>Ę ,>= 4C2̴ );8 !9C,ȹ )=;Ź ,?=º )<= Ÿ *89ɽ +??!˶1=4+=?'ӻ,84ȿ)9?/ !2<2ɼ 3?8ʻ /:7ӽ *8<. +7:*ÿ!1<8"վ !1;6м 1><'Ļ$4:0ѿ $1:6 '6<4&2:4'394" "/87'"-97$+69/ %284#.62$ #181#072$'171  %/4/":?Ǔ '-/) */1+ %.2."$*,' &,/-##+-*  "),'!)-,#"$#   "(+&  !"! !$!                    :ZY  5433!2"0#/$-6=<4(/;>:0%#6 = *2>.,>1'=4!<-09>#82( <=*36&6'6'6(7'6'7'5'7(-9@<40':> 9$-6?(=:(!A33@-;:(@&>B$@ *@.< 3<)@ @A4GFEDCBA 4kig_kash}@BwlU(I2:L?:>6S7 М/+ W?Vf: %2bi >!"+"⺡(Oq)%);B_OaE廑0ksRޣ6xA^;4 RW瀀KLԀSd&񀀀zE3a},6L Kwmџb-6($Aş2d,[_Fk8t&b!ۀ -H{}ƀam;!f0:)?ȨqdA&BP7D SZ4pO:BlX8& (kVvkE6kL @C ӗ}?h7M(=3=aD2/IaE$^S"}w4΀R0twBKlkkр(ƪWw3RkT;l顕d_0axV€V_ʉxo!~tw墩 ]t!:;+Ξ&+bLȾŮ4"MF="  +,I % ȷ &378EA0-&) ) E_  _2 E 3D!76?;/$!/F 3 "- VkAO 3L3 (4 P$ !8" &@D M?H&I($ D + (8&  &X" F $ 6 S D") &> ">(&2  3, /I3 B"0 E  !(36 L! &327 6D ++720  (8__2; ?,/2 &%>AL!%))) ת : )=+%)!B( &/% ! 3B  D@E<3$0! ,,!" ; $ 00 $ !$%߮=X$) 6!% EO/&,$"3L !$&3+ 3 %),E4 ,F_ ( 8$/; ] !48$/-PΪ8T&H$-)F)" &E4:3;)  %$2=(0)D( /%"6-7 ɟFB[$)0 B6! /= !:F @F " &%H-0,A0 6"- 6$(  (&/: 0% &4I0&(2 ,^ S(D",M2 =/ $7&8!$/2渼2O?/7, !/%  ";0; 6M0 ,O%+87  !-   2R)7) ++$&D& -!KH&)4,3>)% -O>I; %DD3!0S/ &@G1+6!% $  0&!;) X? )R $4 : 8A/"8"! 2" F33!)>%!$)-E/ !- -+   E%?H4!a,, (I4/O(+2+(/޻+b234 4!  +0 "W A$D=!(0: A)$OP¸B+  ,)D!2 >=) %-%% @{3!; M)!6  $&+%" $)&!(   &"F!                    # #   >=) %-%% H I'TSRQPONMLKJI8k ig_jududu}HJ  ROKP<Ơ@lO/(nmN)™A+BX0ҘCWeH!'$,;NUgv@6*ű%H!.^jaJ(Ī B`stt]: .>\^ftuA#"'Pptjgf]OU? 8VNi~|~m@C_tZ9(Ʃ¨)1C/%1%"C\nfaW8VlN;?3 ʯ)AN3:;N\SUA86CB/HKk į2Y{^HRBSP"(CVYOavX̩ĵ4`}tKGP2$3A+)006Ǯţ! **)X}{v{pWOH  $3B;6:,'?U]F./EgbC41! (0."  OfY;! 8NenY/ )" ޵Ƶ%)!6K]XW__dWF. $Nmqo^(Y?IK:) ׷չ/$BXȑظؿ%*Ҫ+(9?3Y|I*?"!RuxR;Y/#ҵ)' $HLۖ Ėܩ ܵA^Y%;UaUGO9".6BK,BaF$ NfX $;3Ģ+" $ ۢ//#3H6EgCE8 ֠鿾 9N1HP:% ( ԍ$28,'FE:(*1! ū)@?/벮 <\]M0 %%沨.KN89R`QA, 2PUC,峣.SbO8ȱ!>QM;',>JI<'ۮBUQE,ƚ4UlgXG, #HM0C*?Ua^NA3 ǰ,BPZO8!%ʸ$)>JS\RK<% ̸3AK_t}uYA"ű 1N]YOHEGP?! ŷ4H]us]aifQ>0! ž4+ 2FVfhg37:(Ư%KYWetV41ᛀO~% K!\¹VhݗJ iŀF2oƀ'B|#ޞAptpJ|HpGU49.9(̀6uqǮ*XNXE#8!aA]\Ā !3ŀJaFpS¸*bMDZRt, dh2ƿ2 IAQ€"HĀ0V¿ 8']N]|%K)!m@Ȁ032ɀHNS*G €+~~>foPs(Ǎ U|E3 €YnH*Ced.ő,]f'鰃3wZ+즀'ZefKɊIv{@뛀;{X͇EN ̃ C\uwAϐAiU)З +^j?;AϿ 07Hh`:. Cnj.ɘ 1^lwB! !GRViy~uX*,E]w}dF+ #:18EJC13+ :@Puyv`F)HOŭGA#MixmhNƨ $*?O;Gpy`HF$ֿѢ)<)!|d!12;WY>62A;EF,ҾϠ6I#9N/(*(?`iV(Gb3$̸  ,(1lH3dh?4;9* $ K|V4QooO2)))*4IIF4 )  ǯȺ­ 2SG+# 0bp^E(!+A3(:C*+;8(0 ' /* HP$NQ(@\]SXC$ ";FH8  /?" ŧ )3211' ё%*}YFCC M)@ MA6RjNSo hFϺ(7@2о%C$0ܯB͙ͪ6º8%Ɠ0۰O%@:2$2w>gIVqB"W2ARX!M* nf)!:֍Ѝ,8)) ъ ΂ ›1! כ,8뚛)43 ^X<PeN"1Ұ/Vtm]\C" ݱ#C]QA1 ‰+6KZG/*Ѳ 3IWvqK."Ȫ3SMQm`:44֩4IStxZEA*$OWY_egJ* M_Ufwd8!խ "$Q]EYO/ .EWe\I<*"ʞ /;Sg^JOK7( ͹,0:`qaKEK8# ž KXo}_@ %QaI@+'2!ߵ %#>Q74\~p$ ޱ¢,7##,+*#$#!!6:7.!ȱ 8\R2 CXJ7##,#/16) (ܺ'3 1E\]PM9 8?H:#  .F. ",*@NF1!1 .BB2( $$ 1:.)"ǻƮH S ."!.BF<:833164 )%"!880"  !  !#     +8;B>#!*62,1% !%,6?I>3,   #$              H TJaa                                  H @{               UV1FXWV!@fviuhr}UWD7h     "$$(&**,..000.0.,*(&$"""$(*,2266:<<::8:8844220,,($" "& &&$(**,*,,,,**,,,,...2262464666688:6820*$""(,6:>BFNPTTTPNLH><6.(" ""..88@DJFJHJHLHHLHJFD><42.2.66>@FJLPV\^`bfbb\\TPLJB>::6::B>BDFHLLTTXX^b^bdd`ZXTPJHHLLRVZ^ddddd`\NJ<840,,($((,06:DHNR\`flplllfbZTPPFLFLFFHRNVX^^^bbb^dX`Z``jjjjfffbflplrrlrnnh^XNHD@D::::JJPVV`hr~UXBmvj^NH<6(  }YZR]\[Zkflop}Y[( G5!d/Zb#h0Rl|o1Ш0Pn|u9ڶ*Ogv|xA濥!Eav~D鿠$Jix|NŦ?SmvuLή=TktrIȰ;VkvxS$غ 2Uju{S˳0IbjpUѸ,G_goPҵ+E\hmX'ؼ+C\hoa&Խ(=R^bU#ٿ"=Udh](Ĭ8NYd^0 ʮ#@Vbh_09N]ea2 ӹ7L\h_4λ0CT_[7Ѻ5FVZ\5վ+>OX]5ӽ.AMWX8® (:IUY>ȳ/>MSX=ȳ )=IMT=ͼ4BLRD0>HQG öY\"UU"2>KPIõ/8CIA*AAʾ$7>EB!ŷ*1:?=ʾ$3>BD!".7C?' $,4;=!Ľ )5==! *389" %/28! #+27!ÿ(12%079% &,/0" #.02% %+-" $&*,.# $*#"%,% $''#(& "%" ,%& && $ !')Y]iQ  $&  "    $         !                         Y };                                          ^_"qponmlkjihgfedcba`_#bo flo_platz}^`Dxv                       !W!$  B !Hi!'HEl$ǻ~`*i0Z$o''$^aA-3<00$0  ͵0 *NTK< *<-'<3E$ 6*33KW߻͸H``-л !W'EW-Ď-K*'K-N!֣ 9o*H<<{l뾑-<*B9? 906Hr !?Kf!貀 6~EZ *BW H9$ 9?60 H !W? ! 9 36-  Q!3*KT B $3!!`B-Z-0$Wf`$-^bT)\W~i `{6址?u~{W3 6 ֈǀW0'Hxu!و뻎-Q Ā63'u`Q ٵEN9ʦH6 fZ *?*-0*?K90WʀT覵<<9T !Ǡր {֬3]o-{{Qf66{ـĈKr͑No!$uLjE<0$0o9i6Hic0'$<?<`f?₀BKcНܵ'-ܵ{i 0ܠ*' BNTـ3!<WT]93ic< B^cz:09 ! ӋK*0f 0W 00KĦ3EH<-!60! 0TBʾ0ol'-Ǘ ܈-HffcK6EE$ ENu?l$?-9֔?66T-'BKߑ3͠9W*B uH!3QB! '0$*'?`$뀯` B6!>:4*! %,3761+" +6=?>6+ /=FLLE8(˿#,264."#(*("/585- "1<@@;2$Ź 5HQSK=(/ALNG6ϸ*;DD<-̺3CNOE2­0J[a\N4ջ ,FV\WH0տ4IUVJ4rwQɺ/AKH9# "8EF>,Ƹ+67-"6>;-ڿ.L`cU8廞.VjseE淜 ?_owc9Χ2XkulIܮ1Xkt`6ҭ#KcdR-Ҳ-O_Y=㼥:UZI%ί.LXL*Ѯ&GUJ)˩;]jX,6ZbM峚Mfa:â DapY$贚%ITD"ҿ$76#8A5!1.+0'    $:;!ϱ:C1"1' $-1# "*  %      r@O    ڿ.L`cU8廞.VjseE淜 ?_owc9Χ2XkulIܮ1Xkt`6ҭ#KcdR-Ҳ-O_Y=㼥:UZI%ί.LXL*Ѯ&GUJ)˩;]jX,6ZbM峚Mfa:â DapY$贚%ITD"ҿ$76#8A5!1.+0'    $:;!ϱ:C1"1' $-1# "*  %      xy0 ~}|{zy keug}xz 60*$-=)#)(žڼ GZAV1ԨƐ "4;CPRLG80( 1DKC$Ȩ)2 +=;0 '|_F٩ !!!5P@ ( 3cjPA>:0 ƾ#<8-*1:E@(*gH8̸ 3 'G<('7.$'/8RiHаȚG8W|h8?HPΨ縀- 5WH )A*ʺĨ/ 2_^6-FI::$Ԡ$;IFNu(/ +Ǩ :L@8CWSF@@8x{_1Zּ̿+.",;C=DD-ԬŸ+" ;$S@O`& Ȩ=TXU[hc<$?V<,-ƻEvr@3Xgd:B<Š+6CA54QfYB4%¿3_d"/D9OT=;;( ܸ¯">E:*'-580   λ 1W\$'}y@.C8#:J&ƻ)0*2?;7CM;-5:( е  '#  ּ 7wvLE[^]ohB&"Ƚ &=MOOXil^H@54+±x|^!32*" '1(3g@mZLREGec6˪ ''.2()D9   0CP KZ,%$˸ !21*++3EA!ʿ %>G<#"  "0 #%;B, !# />6&7SH  !#&:3  7<,   (&#'*      # "2x}mp"-  .33+!"    4C::ID1/A= %&  #$%* ') $(  #4$  ,1("      ),   !  # *1" *x~ў  "3,+% #     ,$ 5+ /0 ȿ11!,A6! 31'/8;+   %!!0.)"     $(+  )(!$084&%'!    "xS/ $' !     !       &+!(                   xD                     x              k doim}}@*{OS^#I6!UyI]vA>=+Zs@m-IofkG5kcSʗޖxG+,, Fͽś퓍@>@Λ/; fIkE=VflkwiO;7|vXBfGWI/v_9ma&誺ﷲєܿڬ 鬒տ[#ͷL{-fiwb}_KemWypsssgA2zzoQIL͟&3缨Ǚ!Ħ꼯ʓ)CN+㯊綵ǒǜF9~|QCbn=_wypcq{oXtM#QT'F,'εɹ֌ӧ#AæŽ˛ǜ4G -dGIcvl^7`}|wuiygUVU) B9!,"˷޵ϑߚר - ѿ Ǯޭݓ'ƹ,c<9/WNNw|uE=n0ѽÕ/+A, ə-A<->O*PpUnzQ$lgKcg`fO$:F%1S+MY,ǹ˦ӧø ޿ѼGG7ae>)5`glt[II+A[Oxgelp7DQcva\xY#*ëD食͙̯Ne  *C@ "# ٫&.A#-$%FN$->g}tU/ UsCCgd8DOG?9@J.#ɱջ )&36V4/ ˼:01/pi7+38576I|gMduQGCOEAjxOdg- ;Lc3ұݿŸ˜ɫٰ1, 0-#/>8'>Q0:0'.F`L'&BG  /cS4Y6DfZS`H/33a]!!78G_cP'.6,ø㯐ѯϻ  <0 7N];%>L75.+Gbsu`/ (-&&% '4!)!  # .999/7'&#OKK?<.'66,+#½Ǡۼپ !+MO7'$%=SgupcT%7NX[OOLW`D)5A]`K2#=TO'86, '+'ݿ ) @I9ǩ̻ܵ .C5#:\Q/,CD7DgmGHkxxZ<;MsxZQFA=A8&-&2'14# Ʈʫռ˿  !'33η˶Ѻͽڿ %':?+,?ccPSqxiS/AvzeF3>TXL?YaXJDLN8#'-7<7&λξñ!& ,8 +67,/; &6+  'F15#/>YscI/%,C\aO1c1 .;:FQL4*+Ͻȼ÷پû /&! 0QG,)-,.7+ 8@0%1#!!0IY][O>&4Wmi\\M6$+Pcel_9 &3CKW+5OLOCCC,%)#λǸл  ,9C3 '.' !6<6 +@EC3    !  ' #-5/ #/>G@3&4, ӷƿɹ-1'@8#.88A_aL7'$0@OVQQZ^U@38!2'#,"      $'#/80%(9RODT[XQ@<@CA7p1.8S]O4'0@LKEGA'#''+# ѿǼӱŷĸռ  ,0# ,2;@4%5;?>3+*03'(-3>GF3! (6:0ÿˬ̾ (' !#   %%  :   .*/6'#/1)*&!#+,$)<;!)215750+  # óϹûѾ 27-'%#!#&'+2;>;7./98;?C@<;835<;:C@6:O`f]O@1+##.*%!     $#    !%(34##/46CSVG5.9@<<2!'0.(*),-#!&Ͽ˿  '-//(%$% '' './07;AIIGB709HQJ?;..8995-          #& )+"'6;89:86681.00., '00.*'/7@<&  Ⱦ  #-0)&'"&&%%$'/7:/#'087,)4;@II<+          8:#   !,($'++'#!&+69316;:5+'-.(#!,793' ƾ   !$"$''$#)13-!#''&+,.43)$'*-11330$# #,+   !## +./,! #)02,'"$$!! +  $%$"))#%+++)&#)-)$')"     %'#        !'&%)/1)     $,33+$!'.43)   4U    !$ !        ! $+) "       !# "##%.-#"    տ!                        07+g                                            X                      2J^!@boink}cvH^h,ӤG_\ ֭=U`/给6OS/鱕5_qjȣ%J]Wƛ"AXG ȠI\SԲAY?1P/ܭAYd57RT)§.GO2Ƭ#0 Ů=[hD𻟭8Q\,䳛4KHس5IF໰ 4E1HZ&ѦE][ׯEVKԲ=MBڶ3B8 @YUٳBRC̪'BH)Į(@D!*B8 .cU8Ta;;RP⾲9IAõ2>4Ծ8SX+⸣ :LB˩$<>㽮+;2 ſ19]cæ/NcJ>TW%ลASEٷ%@G0л: 1A:ܿ6< )5#-, &/ӿRhB߰I_Y Ǫ:T^.㹡"GXEʨ4HKߵ,D'/( %(# PgFްLaUH]\Ұ=T[-潨#CO;Ǯ 8J)轮8D)İ 0=(ʷ*8''1"$/6Ϋ;Te.Ӱ?Tc&ӱAR]%֮ë=J%,EA YaNdJ廟A[eȫSa9۲DUJ.FJͨ 0;-Ŵ53ռ.0 (* "! 4Gf<ԥQ`1ΥZaʤ5^YE[E배HOЮ%>-!-&#" WWVǨEW UWWVVVQUW#ǿ*.FGWP!Ͳ" WWE %-0WWVV娨3. WJ3/WWVVż¨ WW(ڬ  '/.#  2@7+' ,;336ڽ("(5غ:B- \P8D9/Vk<U0.;R D3zR<8a8.4"+),((DCؠ=8?wx4/(ַ )J> ֑ڞ _jqÜmLS.8,]P5LOZ8 ,>Pa4<8 'x 0-]־+: L97O 99 9:0D0(6@_,/K\2J09e(#&@ w$ )]ėSr19($Fy$ 'Ȁm`:ˀ?x$tG<| U@'C'B\(C.J?T:\+0 OHȯjZ@ȿ?8 J, K!͟x"$+U%zn( xT2b/0x E,<_05`F8%/H@308g-B-D&<%73@/L*),Qj z$L*~&8_bߡp@2-X'H+lGL/`KGB;p:+'IGTW`=.,UX JE $=9N0(%v#^00K ?P04"2`(*3?`ȀGgȀsp4/D'  w.7,/x]q:ڬ >,Ji66R7e(!y:#8 U!*O@m?Fۭ=/+#"  /?_$?hҷ836-S0;Q3%2(T(;GP;:1+8C27H :$̾N`A=k8?)JNEGt;6Ky@;a02G0k.3m%(c!'0$4RD%/WE_FM92('X3U DJ !F N'IJ)QT%ЙIH3$fL؀$'%Q$15" 890, N$.( g_W|O笀UH,5HQ%0).'=UDF$ȄCd4!3 +D[$Թ)IT)L #'3I4 =>BOH𤡴XH-.*$*X6뽮"Ij< 57,  07F@縛>.=P 0LR4/ꌓSd*1F ;,*?#FR M #JF%CY>3C͟#38;:,-' * &;F3 &Y]7紷/60JL- /NFFQ82)(*,$.6 /FGX[8ͻF`H+$ $ERE@8 =N2 )#)5,)142.   &DLS@ '0AUK2$(8B3;=(!  #'&*1"15DN; 5   !$ 4&#FE=B=־]w1>F+U:xŀgFUaعxx!萢!!^ߐw^SewgK@UF12 ٺK>2]?KU;pK1!^ s>"@>!xsxU^eS@:@psad1 g!Fg(]!>U1@e@1ƺ((@@ހU򀀐;e@Fހ2􀖀xـR3 vKFƀX1FUF(ΖFw gx?耸뀉߀ŀgU^wͧހ2gwP1x!퀐eU]vŇ@FFw!߀e2FFπU2UK^x^ggU'^g؀߹2peK@F2e!@;S.4!U͢Ũ@ι.2@ιS^2;F(F F!(;S2FFUߨ!F@23U2UK1Fg U]@@S2;+!S!@;KSY4(Kg^ K^;v$ؖ(2>S;3dU UUFl(Fp3;+xX'3x>C132;(^xge:(?ِ Y2@FX^;p$UU2߹ψ؀ޙū;(ޢ3 (;عa!F@P4@;FP;^ 141U?!p1(@ Q+2 2 .( ͫ!2! 2ܖ(޺ص.(F( ! ŹŹ6M (d?;l"KS(^Q;!  !2(2 $!(;!!'!̫յ ;$(ظͯŰޛحاعصܸεΨ̵ҹ޹߹̹ 2;;2!((. !?;2;12U;1$>(2!(((2.  (sX$!( ' 1"422.(( ".( $4($.2+$;.22K;;K2;G;KF2@(2>!.(2!2!!+43(K22F.;F(KF4UF;U2GK;H;3F2;F.@;(?11;(>;1F32F1;G2GF;H4>Q;KK;QU>U;@X>UG.F2(@((242(>"(;!:;(?22F2?G2@F1F2(."2( !!( 2$((+!! (! 2  ! (!  DضܸصŭūιܸͺŖιހ߹ṵޙŖ諢߹ܹعΖعܹ߯ŵΣŭ((Ŷ̫2(!4! (!2"2 (2;.(;2@K..!.! (>"(;U(?(2(1;+!!+ǣ 3(1. ;;@e;!!! (($;2(@4(4(F23! !((G($ 2$;!  !(U;($"!  !.2!2;1((!+1(    '$" 2!(   !  !"(    >"(;U(?(2(1;+!!+'2 j Tbb_dung}iT{gg𘘷gggggggBg_XPb'阘gg;gggPg[gg!g_gBggg?ggggg ggggg?'gg͘͘!ggggBgggg/gg ☘gg!gg/gg[ggggggŘgggX!Xg!g3/0Xgggggg[ggg_Ř ɘFggPggbgg;_gF;30g3f)g)fggBŘ?ggŘg ?g gPј7I?阘)//_B7?M3٘;)  њ ! 03X? 7FgggggggXXPXgg37尘g)ggggggggggggggggI_0F[gggggggggggF/Xߚ 7UggggggggggggggMPIX'ɾ0/;[gggggggggggg[P?!׾ ! !ggXgggggggggXXM?ͨѳ '!!IFggggggggbgg?Mg;0☡!7g 0F''[gggMggf?gX_/ зј阳?XBU[bggg_[M0U)?3)'ͥū׺ͷųз')Bn[}377bbMgUUPPF '7 ߷ٷט'))7')?B00'' ׺ͺ !'0//0/)7?3?B7'')/'ͷ  '''0////'/0)'!  '/33000/)')0))!  !))!!!!  !)))''')/))!/OL9Ѳ ˰ G6 '#%5. 5.*  .Qp`4 1SXE11ENE, ޺1;/ $;2#*( % #WqZ3*LRI>" #9GH)龱 ȩ˹ -<=8-'&3>&%@( " '[iT;.+?GKE)/EB̿ شػ 6KXK#"GM)+2!   8XUFA2'3DRK( (9*"%ǿ ᷜǰ(1SeT.!@<+)$3<# CQOTQ3.L\J+ Ģе)%-OZO=/%'6C+>0  (83$#*$ +$ /?& ºþ#6;1  *;H<( #'(&  .JWUN?) *75 3:0 %68-)-) 1"   #8JOJ;)'"..'%*+!&*#!+1#  #$     5JK?5, ļ $!".5-"&',&   (">JA541  Ľ(43(#'(!$ "   !  " .DD:99. Ļ$14,%))  "!     ! 4<:9@<+ ¸  +53.00$ $+     %-/4>C:& ο +2258,  0(  %3       #,6==4( Ͼ%-8B>&&.    #/6894$ҽ&*! +?G<%""%.     " #-27:4 õ.1" $;?6+% 15    %# &,381ν02%`,12522-   #  !-2+Ǿ(+%-:2!     "$ #&!&3,        !(#  "!        f %#  $!        "$           $#           "                                                                             ½                                                ɛ T.´Q.V&u hippologo.iffpÂ͠FORMVILBMBMHD@ @CMAP Ѐ`@pPp@PDPPSnh@Z@@@CRNG$CAMG@BODYV* * * * * * PUT@U@UUTTUPTPUT@U@UUTTUPT**** **** PU@UTUTUU@AUUTUUTUTU`;^TPU@UTUTUU@AUUTUUTUTUT **   **  QU@UT@UUEUU@UUUUUTUTU@UPUQU@UT@UUEUU@UUUUUTUTU@UPU#*  #*  QU@UTE@UQAUU@@TU@UUUAUQU@UTE@UQAUU@@TU@UUUAU* (* (AU#AUPPUPUEUU@TT@U,AUUUAU#AUPPUPUEUU@TT@UAUUU#* **  *#* **  *AU!UPUU@UUTUUTUU@PUQUUAU!UPUU@UUTUUTUU@PUQUU * *  * * UQAUT@TUUUPU TPT@UUQAUT@TUUUPU TPT@U**  ****  **UUTUUTU@EUUUUU@U PU@AUUTUxUUTUUTU@EUUUUU@U PU@AUUTU** ***** ***UUPTU@UTU TUUTTTAUUUPTU@UTU TUUTTTAU* * **** * ***$UU@PUPUPU@UUAUPPUUU@UU@@U$UU@PUPUPU@UUAUPPUUU@UU@@U$* * *** $* * *** #UU@PU@UQPUTUA@U@PUUU#UdžGU@PU@UQPUTUA@U@PUUU ** ((*  ** ((* UU@U@PTTUP@UTUUU@U@PTTUP@UTU ****(* ("  ****(* (" UT@@UE@TUTPPTUPUUT@@UE@TUTPPTUPU ** (** ** (** PTQPUUUQ@UE@TUȑ$UUPTQPUUUQ@UE@TUUU ( ** (** ( ** (**PPUUQPPUTU UPEPUPPPUUQPPUTU UPEPUP "     "    P@ DU@UP@ QU@U@U@P@ DU@UP@ QU@U@U@*" * *(* "**" * *(* "* UAPTU UTAUɭb PTT UAPTU UTAUPTT   **(   **(UUPTUU@ PUUPUUPUUPTUU@ PUUPUUP *  " *  "UUE@UUE@U@UUPUUE@UUE@U@UUP ** * * ** * *TUUU@UUT@U@TDUPTUUU@UUT@U@TDUP( * "  ( * "  PPUUUPUT UUTUUEUUUTPPUUUPUT UUTUUEUUUT * "* * "* QPUQU QUP@PU TU@UTU QPUQU QUP@PU TU@UTU  * *   * * E@UEUU@TUUPU@@UUUTUUE ˑ_MUPUE@UEUU@TUUPU@@UUUTUUEUPU'  **"*'  **"*@UEUPUUPUUAUPUTQUUPU@@UEUPUUPUUAUPUTQUUPU@* * *** * **UU@UEUUUU@PUUPTTUU@TUU@UEUUUU@PUUPTTUU@T** (*(** (*(#UUAUUUPUU@TTP ̨` UUUT@#UUAUUUPUU@TTPUUUT@ (  (  'QUPTTTUTUTPUUUUP@P'QUPTTTUTUTPUUUUP@P  ** (*  ** (* AUUUTUU@U@UPPUUAUPP AUUUTUU@U@UPPUUAUPP'****'****TU@UT ͈H@UU@UTTU@UT@UU@UT** **** **'TUUPU@UTPUPTUTUTUUPU@UTPUPTUTU *?  * *U_  *'PAUAUUTU_UUU@@PAUAUUTU_UUU@@ ** ** **U_ ** Χ1cPPPPUU@UUP@UTTPPPPUU@UUP@UTT *+#ꪪ * *+Uꪪ *P@@UUTUUA@U@@UTP@@UUTUUA@U@@UT  @>  U  @@UU}_UU T@UUT @@UUUU T@UUT      {%U _  UUTU U@U@UTUUTUU@U@UT ** * ** UW*?UTUPU_@ xPTUTUTUPU_ PTUT (* *** (* *U**@UPPPEUUz.@UPUUTT@UPPPEUU~@UPUUTT *** U_**~ x*@U@AUU U@UTUU@@@U@AUUU@UTUU@@ * ** * UW**APUTPUPUUUTPAPUTPꪨ UPUUUTP? * @p"*  * U@PU"* ?PUPUEPQW8E@UPUPU PUPUEPQW E@UPUPU  *98*ã  *UU}PSUx*@TPTTAUF4]UUE@UUT@TPTTAU)UUE@UUT}  (:A.(*  (?UUW}U~(*}@TT@U< ZUUUUUP@T@TT@U><UUUUUP@T߽ peo   }UDyU_  y PUTTUUQU@W  TU@UTT PUTTUUQU@UZ„TU@UTT * $ 8* * UuUW*U UQQTPA? QATU@TUU UQQTPAQATU@TU * 8** * UTWUW**??U EU@TT@C(ETU EU@TT@C/ET?( @ x * ( UP_U Ӯ*  UUUQTUPGt@TUT UUUQTUPG*@TUT " <o@  " UUQU UUU ^S =PUUPTPUUU _* PUUPTP* * z_ :** * * UU6UeU z** UT@U E]o@a]TEUETPUT@U E_ "TEUETP Ƶxo J H* UUW1U|* UUTU z.8D /UUUPUT@UUTU ~ UUUPUT@( h$  * *( UU@~pU ^ * * ?x U@UUP8 0" U@U@TU U@UUP>DHH U@U@TU (*pr  *( (*}U|MU _*(Ց[mP@UU@t*@ @UTU P@UU@~L @UTUm  *pOT@  ( *}U_ lU _ (nD UUDp>d TPD UUDz@n TPn  *d@ *  UUnU _ *nPUU" PUAQT@@PUPn* PUAQT@@:n* 'rA * * UUU W* UPP@PTE[Ԁ" UPE@UPT@UPP@PTE@P* UPE@UPT@* C@ @ ** * UUWU W** UUQ@@@@ @UTTEPUUUUQ@@@* @UTTEPUU* *j x ʀ  * * *UUU W׽_  * UPTU@U10 @U@UT'UPTU@UꪫG*@U@UT'*(  "*( UWUUW "?'U@Q@QT@'@UQUPU@Q@QTꪮપ@UQUP'(  T~HC *( UUUW *'U@QPAS@p<1@PUUPU@QPꪫ, @PUUP?'*  ~  '*  UW?3UW  w'TAU@ X@U@T@@@'TAU@ꪫ⪫@U@T@@@;" _⺈ " UWUW @TP??\UTUP@TP꪿@ XUTUP{ *(#_&"* qb *(Uw UW* @UPT/>AU@TPUPTꪯAU@TP{ _~ * **U_UW* **P@U /|UUTU@UTP@Uꪫ*UUTU@UT\* x** UWW*?U @UA?0@\#TUTUUU @UATUTUU $d?% @( UwW(P @UP _p @0TUTAUUP@UP TUTAUU_  hB*   UWUW* _A@@UU D= PTUUA@@UUJPTUU* Ko ^n :d(** UUTE_(*_TUUUpaUE@QE@UTUUUzʯUE@QE@U? (P1( UWw _TUPUUt(kݠT0UP@UTUPUU~? ʿUP@U$* pDU|hF8X** }UUS _*$TUUUx*UQܶU@UUTUUU~ UQU@UU* 8%֮Ȏ * =UUR?^ $TUU@@z;ou%f/UPUU@DUTUU@@~ UPUU@DU$*  <*Z*> *  ?UUQw e~ gTU@]V[G]UPUTUEUTU @_ UPUTUEU'***r*G8^ :***UUTz'TUUAUDUUN@ =UPUUPUU TUUAUDUUOgUPUUPUUo߀'** ( ***UTp( *r߀T@UPTUW /@uU@PTUQ@TT@UPTUW? U@PTUQ@T޿ **(*@@@r* **(*UU?* 'T@UUTUUW 쨤8?UUPUQQU@TT@UUTUUWꪪ*UUPUQQU@T? (**?y (*UUGUW ? T@@@AUU R_UU@UPT@@@AUUꪪUU@UPy * 2?* UUS UWg'TAUTh UQTUUUTTAUT UQTUUUT " *p+T2  *}UUToU _   U@U@A|DuxQAPAPU U@U@A~QAPAPU/{ *0.( *UUU~(  U@@TUO$\PPUT@UU U@@TU"PPUT@UUw 8  UP?yUx  {UA@U@g?yP@UU@UPQ UA@U@P@UU@UPQ "@r *  "UPU * TQUUPEPP@UTUTDTQUUPEPP@UTUTD?   ***  UW ***ATUE@P PPUPUATUE@P PPUPU *t* * *}U_* *lc`E@UUP:/UQUUPUTUUE@UUP>UQUUPUTUU ** *U*P@UP@}UQUAUUPUTU@P@UPUQUAUUPUTU@  *** UW ***?UUPAUP U DUUPUTUPUUUPAUPU DUUPUTUPU *U_ * YUDQUPUP _UUQU@UUPUTUUDQUPUP UUQU@UUPUTU> *U *U TUQUPOUUAUPUUPUTTU TUQUPOUUAUPUUPUTT**#ꪪ (**Uꪪ (U@UQUUPEUUAUUUPUT@U@UQUUPEUUAUUUPUT@     !lU_ 'PTUAUUP_UUTUUPUQAPPTUAUUP_UUTUUPUQAP' *? * ' *U_ * 'UU@UUUTPU@@UUPUTUU@UU@UUUTPU@@UUPUTUU@* (*** (**QU TQUUTPT @UUPUUAAUQU TQUUTPT @UUPUUAAU  *"D w   * AUU@UPUUTPPU@UUQEUAUU@UPUUTPPU@UUQEU** ** UUU@UQP@TTPUPUUUU@UQP@TTPUPU  * *    * *  U@U ]P@ W TPUTTUU@UQP@ T TPUTTU* #֭{* ` ** ** ** U@U\Ǟx}Wsw@UDTUU@UP (@"TD8@UDTU* ͛>l ʫ* *  2* PUP ͛7l|yWw@UEUUPUPUP(T@@@UEUUPU  ?nz (   " ( PUEU |vWߟ@UUTPPUPUEU@T4@A@UUTPPU*$?i' .*  * (*  TUUPTAU@@TU@PPU TUUPTAU@@TU@PPU** (( ** (( TUEUTUTPPTP@UTUEUTUTPPTP@U  * *  * *UPUUPUEU@UTUPP@P@TUPUUPUEU@UTUPP@P@T*%򙖡*********** UTUUPTUPUUPTUPPP@T UTUUPTUPUUPTUPPP@T  (**  (** UQP@UUUT@UTPTPT UQP@UUUT@UTPTPT *( ** *( ** PETPUUUUUPT@T PETPUUUUUPT@T *&肽 *** * ***ETU@UUEUUUPTU@TETU@UUEUUUPTU@T "* ** "* ** TUEUQAUPUUUPTU@T TUEUQAUPUUUPTU@T  * * (  * * ( UPTU@U@@UPTUUTDUU@P UPTU@U@@UPTUUTDUU@P (** (*('@T (** (*( U@U@U@EU@@PU PU@EUAP U@U@U@EU@@PU PU@EUAP%** * %** * !UEUAPUUPUU@@PUPTUU@!UEUAPUUPUU@@PUPTUU@'* *(* *( '* *(* *( '@UEUPUPUPUU@@PUUT@'@UEUPUPUPUU@@PUUT@ * (Fm+*  * * U"UUTD@AUPUU@@@T@PPU"UUTD@AUPUU@@@T@PP  *   * T@TUUPUUU@EU@P@PT@TUUPUUU@EU@P@P *( ***  *( *** PUUAUUUUU@U@TEPT@QTPUUAUUUUU@U@TEPT@QT'*(  )\ ** * ('*(  ** * (UPPTUU@U@@PTP@UU@UPPTUU@U@@PTP@UU@** *   ** *   U@U@UEPTU@QT@UQU@U@UEPTU@QT@UQ * *   * *  U@UU@@T@U@U @PUUAU@UU@@T@U@U @PUUA*o  * *   * * 'UAUTUATEU@A@UU'UAUTUATEU@A@UU'*  '*  UUPUUEPU@EU@@@@@UTUQU@UUPUUEPU@EU@@@@@UTUQU@'*  '*  UUUATAU@@@U UP@TPUUUATAU@@@U UP+s&x@TP**  ***  *PTUU@TAU@T@TUUU@UU@PTUU@TAU@T@TUUU@UU@'    '    @UTPEAU@P@TUUU@@UTPEAU@P@TUUU@ * *(* * *(*UUPPU@U@ @UUUUPPU@U@ ,ޭ3@UU*( *( '@UPU@U@PUD@UUUPUP'@UPU@U@PUD@UUUPUP ** *  * ** *  *@U@UU@UTUTUUT@@U@UU@UTUTUUT@* * TU@UPU@UU@UUP@TU@UPU@UU@UUP@*-Yˀ* ** UUE@UUUUU@UT@UUE@UUUUU@UT@* * UUP@PAUUPUUTUPUUP@PAUUPUUTUP *  * UPPUTU@TUPPUTU@U* * *** * **TU PUUPUU@@UUT. $߫TU PUUPUU@@UUT *   *  PU TU@TUU@UUAUPPU TU@TUU@UUAUP* * * * UTUETUUUPUTUETUUUP * UPPUTU@TUPPUTU@U* * *** * **TU PUUPUU@@UUT?Y/.-,+*)('&%$#"!      x  hippologo.rpeۮ* * * PUT@UUU@UUTTUUUPT**** PUUU@UTUTUU@AUUTUUTUTUUUUUUT **  QUUU@UT@UUEUU@UUUUUTUUUTU@UPU*  QUUU@UTE@UQAUU@@TU@UUUAU* (AUUUAUPPUPUEUU@TT@UAUUU* **  *AUUUUUUPUU@UUTUUTUU@PUQUUV f * * UUUQAUT@TUUUPUUUTPT@UUUU**  **UUTUUTU@EUUUUU@UUUUPU@AUUTUUU*****UUPTUUU@UTUUUUTUUTTTTTAUUU* * ***UU@PUPUPU@UUAUPPUUU@UU@@UUU* * *** UU@PU@UQPUTUA@U@PUUUUUU ** ((* UU@U@PTTUP@UTUUU ***M C*(* (" UT@@UE@TUTPPTUPUUU ** (** PTQPUUUQ@UE@TUUU ( ** (**PPUUQPPUTUUUPEPUP "   P@DU@UP@QU@U@U@*" **(* "*UAPTUUUTAUPTT **(UUPTUU@PUUPUUP* !a| "UUE@UUE@UU@UUPP ** * *TUUU@UUT@UUU@TDUP( * " PPUUUUUPUTUUTUUEUUUT * "*QPUQUUUUQUP@PUUUTU@UTU  ** E@UEUU@TUUPU@@UUUTTTUUEUPU  **"*@UUUEUPUUPUUAUPUTQUUPU@* * **^9UU@UUUEUUUU@PUUPTTUU@T** (*(UUAUUUPUU@TTPUUUT@(  QUPTTTUTUTPUUUUP@P ** (*AUUUUUTUU@U@UPPUUAUPP****TU@UT@UUUUU@UUUT** **TUUPU@UTPUPTUTU *?  **lPAUAUUTU_UUU@@ ** **PPPPUU@UUP@UTT *+#ꪪ *P@@UUTUUA@U@@UT  @> @@UUUU}_UUT@UUT    UUUTUUUU U@U@UUUT** *UTUPUUU_@xPTUUUUUUT(* ***@UPPPEUUz.@UUUPUUTT ***@U@AUU U@UUUTUU@@ * **APUTPUPUUUTP * @p"* PUPUEPQW8E@UPUPU  *98*@TPTTAUF4]UUE@UUUUT  (:A.(*@TT@U< ZUUUUUP@T peo  PUTTUUQU@ݞW TU@UTT* $ 8*UUUQQTPA? QATU@TU* 8**UUEU@TT@C(ET( @ x * UUUQTUPGt@TUT "<o@UUUUUUU^S =PUUPTP* *z_:** UT@UUUE]o@a]TEUUUUETPJ H*UUTUUUz.8D W/UUUPUT@( h$ * *U@UUP8 0"U@U@TU(*pr *(P@UU@t*@@UTU *pOT@  (DUUDp>dTP  *d@ *PUU" PUAQT@@* 'rA* UPP@PTE[Ԁ"UPE@UPT@* C@ @** UUQ@@@@@UT ?TEPUU* *j xʀ  * UPTU@U10@U@UT*(  "U@Q@QT@'@UQUP(  T~HC *U@QPAS@p<1@PUUP*  ~  TAU@ X@U@T@@@" _⺈ @TP??\UTUP *(#_&"* UUPT/>AU@TP + _~ * **P@U /|UUTU@UT* x*U@UA?0@TUUUUTUU $d?% @(P@UP _p @0TUTAUU  hB* A@@UU D= PTUU* Ko ^(*TUUUpaUE@QE@UUU (P1(TUPUUt(kݠT0UP@UUU*  ' pDU|hF8X*TUUUx*UQU@UUUU* 8%֮Ȏ TUU@@z;ou%f/UPUU@DUUU*  <*Z*> TUUUU@]V[G]UPUTUEUUU***r*G :TUUAUDUUN@ =UPUUPUU** ( *T@UPTUUUW /@uU@PTUQ@T**(*@@@r* T@UUTUUW ?UUPUQQU@T(* (M:*?y T@@@AUU R_UU@UUUUP* 2?TAUTh UQTUUUT *p2 U@U@A|DuxQAPAPUUU *0.( U@@TUO$\PPUT@UU 8  UA@U@yP@UU@UPQ "@r * TQUUPEPP@UTUTD  \ ***ATUE@P PPUPUUU *t* *E@UUP:/UQUUPUTUU **P@UP@}UQUAUUPUTU@ ***UUPAUP UUUDUUPUTUPU *UDQUPUP_UUQU@UUPUTUUU> *UUTUQUPOUUAUPUUPUTT**#ꪪ @RK (U@UQUUPEUUAUUUPUT@  PTUAUUP_UUTUUPUQAP *? * UU@UUUTPU@@UUPUTUU@*(**QUUUTQUUTPT@UUPUUAAU  * AUU@UPUUTPPU@UUQEU** UUUU@UQP@TTPUPU  * *  PhU@UUUU]P@ W TPUTTU** ` ** U@UUU\Ǟx}Wsw@UUUUDTU* ͛>l ʫ* PUUUUUP ͛7l|yWw@UEUUPU  ?nz ( PUUUEU |vWߟ@UUTPPU* .*  TUUPTAUUUU@@TU@PPU** (( TUEUTUTPPTP@U * *UPUU=ܻPUEU@UTUPP@P@T******UTUUPTUUUPUUPTUPPP@T  (**UQP@UUUUUT@UTPTPT*( **PETPUUUUUUUPT@T* ***ETUUU@UUEUUUUUPTU@T"* **TUEUQAUUUUPUUUPTU@T  * * (UPTU@U@@UUUUPTUUTDUU@P (** (*( U@U@U@EUUUUU@@PUUUPU@EUAP** * UEUAPUUPUU@@PUPTUUUU@* *(* *( @UEUPUPUPUU@@PUUT@ * * UUUTD@AUPUU@@@T@PP  * T@TUUPUUUUU@EU@P@P *( *** PUUAUUUUUUU@<~U@TEPT@QT*(  ** * (UPPTUU@U@@PTP@UU@** *   U@U@UEPTU@QT@UQ * *  U@UU@@T@U@U@PUUA * * UAUTUATEU@A@UU*  UUPUUEPU@EU@@@@@UTUQU@*  UUUUUATAU@@@UUUUP@TP**  *PTUU@TAU@T@TUUU@UU@    @UTPEAU@P@TUUU@ * *(*UUUPPU@U@@@@UU*( @UPU@U@PUD@UUUPUP** *  *@U@UU@UTUTUUT@* TUUUUUU@UPU@UU@UUP@T** UUUUUUE@UUUUU@UT@* UUUUUUP@PAUUPUUTUP * UUUUUUUPPUTUUUU@T** **TUUUUUPUUPUU@@UUUUUT *  PUUUUUTU@TUU@UUUUUUAUP* * UUUUUTUUUETUUUUUUUP*ۤ * * PUT@UUU@UUTTUUUPT**** PUUU@UTUTUU@AUUTUUTUTUUUUUUT **  QUUU@UT@UUEUU@UUUUUTUUUTU@UPU*  QUUU@UTE@UQAUU@@TU@UUUAU* (AUUUAUPPUPUEUU@TT@UAUUU* **  *AUUUUUUPUU@UUTUUTUU@PUQUU *r * UUUQAUT@TUUUPUUUTPT@UUUU**  **UUTUUTU@EUUUUU@UUUUPU@AUUTUUU*****UUPTUUU@UTUUUUTUUTTTTTAUUU* * ***UU@PUPUPU@UUAUPPUUU@UU@@UUU* * *** UU@PU@UQPUTUA@U@PUUUUUU ** ((* UU@U@PTTUP@UTUUU ****(* t (" UT@@UE@TUTPPTUPUUU ** (** PTQPUUUQ@UE@TUUU ( ** (**PPUUQPPUTUUUPEPUP "   P@DU@UP@QU@U@U@*" **(* "*UAPTUUUTAUPTT **(UUPTUU@PUUPUUP*  " ?.TUUE@UUE@UU@UUPP ** * *TUUU@UUT@UUU@TDUP( * " PPUUUUUPUTUUTUUEUUUT * "*QPUQUUUUQUP@PUUUTU@UTU  ** E@UEUU@TUUPU@@UUUTTTUUEUPU  **"*@UUUEUPUUPUUAUPUTQUUPU@* * ** }UU@UUUEUUUU@PUUPTTUU@T** (*(UUAUUUPUU@TTPUUUT@(  QUPTTTUTUTPUUUUP@P ** (*AUUUUUTUU@U@UPPUUAUPP****TU@UT@UUUUU@UUUT** **TUUPU@UTPUPTUTU *U_  *PA o=GUAUUTU_UUU@@ **UUU_ **PPPPUU@UUP@UTT *+UUUUUꪪ *P@@UUTUUA@U@@UT  UUUUUU @@UUUUUUT@UUT  UUUUUUU_  UUUTUUUUU@U@UUUT** UUUUUUUW*UTUPUUU_ꪪPTUUUUUUT(* *UUUUUUUU**@UPPPEUU~ 6r@UUUPUUTT UUUUUUUUU_***@U@AUUU@UUUTUU@@ * UUUUUUUUUW**APUTPꪨ UPUUUTP * U@PUUUUU"* PUPUEPQW E@UPUPU  *UU}PSUUUUx*@TPTTAU)UUE@UUUUT  (?UUW}UUUU~(*@TT@U>DHHU@U@TU(*}UUUU|MUUUU_*(P@UU@~L@UTU *}UUU_ lUUUU_ (DUUDz@nTP  UUnUUUU_ *PUPn*PUAQT@@* UUUUUUW* UPP@PTE@P*UPE@UPT@* UUWUUUUW** UUQ@@@*@UTTEPUU>* *UUUUUWʀ  * UPTU@UꪫG*@U@UT*( UWUUW "U@Q@QTꪮપ@UQUP( UUUW *U@QPꪫ @PUUP*  UW?3UW TAU@ꪫ⪫@U@T@@@" UWUW @TP꪿@ XUTUP *(Uw UW* UUPTꪯAU@TP V#U_UW* **P@Uꪫ*UUTU@UT* UWW*U@UATUUUUTUU UwW(P@UP TUTAUU  UWUW* A@@UUJPTUU* UUTE_(*TUUUzʯUE@QE@UUU UWw_TUPUU~?ʿUP@UUU* }UUS!X2_*TUUU~UQU@UUUU* =UUR?^ TUU@@~UPUU@DUUU*  ?UUQwe~ TUUUU@_UPUTUEUUU***UUTzTUUAUDUUOgUPUUPUU**UTp( *T@UPTUUUW? U@PTUQ@T**(*UU?* T@UUTUUWꪪ*UUPUQQU@T(*UUG"}pUW T@@@AUUꪪUU@UUUUP* UUSUWTAUT UQTUUUT *}UUToUU_ U@U@A~QAPAPUUU *UUUUU~( U@@TU"PPUT@UU UUUP?yUUUUUx  UA@U@򪪪P@UU@UPQ "UUUPUUUUU * TQUUPEPꪪP@UTUTD  UUUUUUUUUW *#ND**ATUE@PPPUPUUU *}UUUUUUUUU_* *E@UUP>UQUUPUTUU *UUUUUUUU*P@UPꪪUQUAUUPUTU@ UUUUUUUW***UUPAUPUUUDUUPUTUPUUUUUUUU_ *UDQUPUPUUQU@UUPUTUUUUUUUUU *UUTUQUPOUUAUPUUPUTT**UUUUUꪪ ($?$yU@UQUUPEUUAUUUPUT@ UUU_ PTUAUUP_UUTUUPUQAP *U_ * UU@UUUTPU@@UUPUTUU@*(**QUUUTQUUTPT@UUPUUAAU  * AUU@UPUUTPPU@UUQEU** UUUU@UQP@TTPUPU  * *  U@UUUU%LnQP@T TPUTTU** ** U@UUUP (@"TD8@UUUUDTU*  2* PUUUUUP(T@@@UEUUPU  " ( PUUUEU@T4@A@UUTPPU* (*  TUUPTAUUUU@@TU@PPU** (( TUEUTUTPPTP@U * *UPUUPUE&d1U@UTUPP@P@T******UTUUPTUUUPUUPTUPPP@T  (**UQP@UUUUUT@UTPTPT*( **PETPUUUUUUUPT@T* ***ETUUU@UUEUUUUUPTU@T"* **TUEUQAUUUUPUUUPTU@T  * * (UPTU@U@@UUUUPT'IUUTDUU@P (** (*( U@U@U@EUUUUU@@PUUUPU@EUAP** * UEUAPUUPUU@@PUPTUUUU@* *(* *( @UEUPUPUPUU@@PUUT@ * * UUUTD@AUPUU@@@T@PP  * T@TUUPUUUUU@EU@P@P *( *** PUUAUUUUUUU@U@TEPT(BWb@QT*(  ** * (UPPTUU@U@@PTP@UU@** *   U@U@UEPTU@QT@UQ * *  U@UU@@T@U@U@PUUA * * UAUTUATEU@A@UU*  UUPUUEPU@EU@@@@@UTUQU@*  UUUUUATAU@@@UUUUP@TP)k4**  *PTUU@TAU@T@TUUU@UU@    @UTPEAU@P@TUUU@ * *(*UUUPPU@U@@@@UU*( @UPU@U@PUD@UUUPUP** *  *@U@UU@UTUTUUT@* TUUUUUU@UPU@UU@UUP@*** UUUUUUE@UUUUU@UT@* UUUUUUP@PAUUPUUTUP * UUUUUUUPPUTUUUU@U** **TUUUUUPUUPUU@@UUUUUT *  PUUUUUTU@TUU@UUUUUUAUP* * UUUUUTUUUETUUUUUUUP+,-./ 0!7f?1"^??}}߽y2#{h{???o3$Hb?x mmnnn4% ,??w;{@{5&SS\?___?6'Dgo߀r߀޿??7(4zyg/{w{?8)??9*wk:+;,<-=.>/?01W\7654321 v,hipposlogan.iffp02xIFORM ILBMBMHD@ @CMAP 𠠠PPPDPPSnh@Z@@@CRNG$CAMG@BODY >0304t$>>ϟ#>>??$>>ϟ$>>ϟ>>|~|~|~ϟ$>>|>|>|>|>|>ϟ$>>|>|>|>|>|>ϟ$>>|>|>|>|>|>ϟ$>>|>|>|>|>|>$>>|>|>|>|>|>$?>|~|~|>|~|>$?>|>|>|>|>|>05Û`$?>|>|>?$?>|>|>$>>|>|>ϟ$>>|>|>?$>>|||>||>ϟ$>>|||>||>ϟ$>>|||>||>ϟ$>>|||>||>ϟ>>||~~|~~ ϟ$>>|||>||>ϟ$>>|||ϟ$>>|||ϟ06c$>>|||ϟ$>>||?|?|%||%||?%%|~~|%?||>||%|07~<|>||%||>||$||>|$?||>|$|?|$?|χ|"|χ|"||χ| |~|"||χ||"||"|||"||0Y|"||?||$?|χ|"|χ|"||χ| |~|"||χ||"||"|||"||8 9bBA@?>=<;:9lC Tp41.repulsive soundp8:?@[P41A 8 D% D< !m<0 h6q;Gf< L9b,}'\i'8. .?)n(M)n=zzPL LX( X( dt  (  @$$ $$  (  @  P T \ t h lD h h $$ $$ dt X( X(  (  |\ P T \  ,T ,P (D8;D|k(D&P &P (D(D6D,T ,P (D(D"P $@ ?"P $@,0 ,<-( ,<-,0  "P $@2@ 2@ (@ (@ ,P     ,P ,P $@   ((  ((( H  6D 6  6,<8<66(6 ,< ,0$@ &P,>,>,>,_(@$@"P$@"PP@ (6 ,,,"(,(,&&&,,,(,,,,8=?6"(,(,""""$(2,(,?,;2, ,(, \ \;X,;X,,,,,,,,,T,, 2 620 ,, : 6, ,,, \ \ \ \ \ \ \ \;X,;X, \ 8>\ \ \ \ \ \ \  \ \ \ \ \ \ \\,, ,(, 6(@,($"$",( , %:`6c04c0 6c0:`6`0` 2c0?$(( (  H "`"c0c0c0c0"c0 c0c0, ,8?_Y" "   "", 2 0,,2 0: "6 4 6 : ( ,"$ $ $($ (  H (`6`"`"``` `` tt"c0 c0c0"`"```6,"(,( 0$ & , " @ tt` tt` :`8@f         ,<          ,6          , Ѐ          , 6` @6 (6( , %(4p,0(,< (0 ,04p(0 ,0(,0(0 ,00 (4p,0(,< (0 ,04p(0 ,0(,0(0 ,04p,0?2, 2,2, 2,2,  P2,  P P P P P P P P8A)Z P P P P P,02, 2,( 2, 2, 2 2| 2, ( 2, 2 2, 2| 2, (& ,0(& ,0,0,<(((,<,<,0,< ܀ ,0,<(,<(,0,0,<,0( 0 ,0( 0 ( Ѐ H 0 ( Ѐ H 0 ( 0 ,0,<,0,< (& ,0(0 (,04p(0 (,0 @(0 (,04p(0 (,04p(0 (,04p(0 (,0 @(0 (,04p( ,04p,0(& ,0(& ,0(4p0 8 B^t(( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 (( 0 4p(4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 (( 0 ,0(4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 (( 0 4p(4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 60 8 ,)( Ѐ H 0 ( Ѐ H 0 ( Ѐ H 0 ( 0 ,0 ,<,< ,<@,0 ,0 ,< ,<0,0,0 $ 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 (( 0 ,0(4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 (( 0 4p(4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 60 C Dx8MLKJIHGFED^p41.smart_enoughpCE!DžP41Ap )@BD@@44@D 0   =$<DLLLL$<D,DLX,DLXLLLL77YYGGGGJJ$GG"YYGGJOLL@202<2<@L@L@202<@LL@202<2<@L@L@202<@20@LL@202<2<@L@L@202<@LL@202<2<@L@L@202<CFl*mU@20:L20:L20$&$ T$***$*,*P$$&$  T$***$** Z$$&$ \ $***$*,*\ $$&$ \ $***$**\ ,$<L,$  $$$2*,*($,$ $ T2$,$d$ $,$:$**6$$ $,$:$6$ $L `,*  $$$$  $    CG 6Z2j 6Z2Z,Z2Z ,j121)++7F>#%0/7&+! ,$+    ,)("#+(++-91&7*&...-!&0!-!* #!.#    CLO~#   # !  &#  2w: ȼim1FF6 ƺD[*2@:( ȺYnwK, (:6* ù(2nw:6 *61( ù#{[G1 *6,(1ubD2  *6*( Լ*cb@2 (6(( Լ#Qc@2$2(( Լ8gD2 $1*$ cG2(,*# C M dõbK2#$(* ƵQQ2(#(* ȵ=U6*$#$* ȹ Y:2*($*# ʺ[@81(#(# ʼUD:6*##ȼ8G@8*ʼNF:1 [N@2 cQD6#úGQF8$#ƺ bN:*#ȺwN:,# ʺuG@1#ʺTUD1##C ʛI(m@2$#  ȼ|=6$#  ȺnG6(#  Ⱥ$%  (.-*,,#  UD:6*##ȼ8G@8*ʼNF:1 [N@2 cQD6#úGQF8$#ƺ bN:*#ȺwN:,# ʺuG@1#ʺTUD1##NO*ʃTSRQPO ^ slogan.rpNPQ^>>ϟ>>ϟ>>|~|~~~|~~~ϟ>>|>|>|>|>|>ϟ>>|>|>|>|>|>?>|~|~|>|~|>?>|>|>?>>|>|>ϟ>>|||>||>ϟ>>|||>||>ϟ>>||~~|~~ϟ>>|||ϟ>>||NQ|ϟ||NRiR~~|||>||||>||?||χ||~||||||>>??>>ϟ>>|>|>|>|>|>ϟ>>|>|>|>|>|>ϟ>>|>|>|>|>|>NS]f?>|>|>|>|>|>?>|>|>>>|>|>?>>|||>||>ϟ>>|||>||>ϟ>>|||>||>ϟ>>|||ϟ>>||?|?NT)7|||?|?||>||||>||?||>|?|χ|||χ|Nxa]S||χ|||||||?||||?|?||>||||>||?||>|?|χ|||χ|UHVb~}|{zyxwvutsrqponmlkjihgfedcba`_^]\[ZYXWVzlC Tsmp.repulsive soundpUWRayqAqw!a灁AQaa?A}'}qa?!5!/)鱡7a;K_oeoigic{}Oaoiaoi#?A/ 񱗿 ?A?YOWA၁?QOUX]І6}q)?C ϡѫ1!/#?Q?mE_kgqWwqoqmyka]GY171'9! ͱ+?17CCW]Ycwkq}yqwueemA_UKI?A/A%=!! ɭ=/?UWiikus}{qoqoqeY9WA?9!'1 ջUYMů  #'';1;C?GSQK_OWaOkIWa_UW]QWYEWA?Q1?A'/1!%)! ɿù '57?KOWS_]oq[sqoqouqqeeogWiUUYWI=M1?9!'!Ž !%%)%'//+)%/1/1'+/1#=%')+#3''!    !/)'%31';17539913=37UZPj9593;5/=9-/5)+3!')'! ɿ +'==?MOM_c_wqouuqk_aQKEA51'%ѿ )-33;??CGGKWUW_]cggqgmkoksqkmkggca]YWQKOIA?=533)+! ſʞy>z€0!7HZh:q/ŵ}YIT2!,뀀׀]KCt;fnU _9(D, ꣩e5=TR1:Qj0Qq,>,--է߾рBZ|C>k ]ӠZhTqX7, ]$%ѢH,Z]ϳ%=,}:H']+7,Y߽ƴ%M@^% >ߐ-кf,,ot{7 -ʀɉ  = ٠{c)SZu2 ٺѳHDCW%O#K;S=,l!72Ƣ /%ѭ,Fκ,<L!: qtD/2-ĬD똴BC0,R6# }b: ᮷,=6$'yf]-ꠣߛBk',ӌ՝U `_ O<;,c νwkf]oܣ>7<D!7%#ӅL]-$, @k2ʬ$Z2Z1D! 7Ѿ߷ 7{Ӻ !< k,=-â'˽δI: ,^)! %+fMOTb'  Mo! f7$ٯqtM2),Z+%`| ;,M ˖$% -+<-@SjY:70ľIhD $î6fb;5hf!=W/%,묺@HU atQ1Z,=2+@IkS:#ߩ温!'0fQD'<`]Oc! ߘΘÁI7'lBH$ ':05QL2  D$  R2ɽŢ)2-ZODO])@$ט;ΐٞ,+=;26 I]5KMӷ㯼ų'7>LQC`- $#®࣢/1w]F7,0+LIB-ܳţ!B 0=-, ⳾>Q{_>$7$U bSf0!7I ;C ׳  - !  !% 'վ0 >-)Fը!    +' ' %I5    - ; # /)$=2 '  U c!! #)1%!! +   !   !  ,,$   ѽ$ %   '! !   UdJ˹ ! %)             Uenk        Uf;J LPPPPOKID@ ˆ7LRTT %&Cif^Wڢ ::<.$%  ړ,KQRTTRRPKID ̐ LVV!&'+-Zlod^'毵 >BC  ͣUg|p BPRVWVTTQK9 ؟D ',034hvxs^& CI    IQVVWWVTQፀ(039<=pzt-    䥯͞ CRWVVVVT!訄>BDEp|>ٴ .  箰஻ ZWWWWW- !$%$DKOTpCж  79!UhK86 묶ٵW][[ZV%%%&((++'ɑܯ QRTpLӚ =B% !$ 뷽̢ =aa`^,&(,,.022.-ʙҦ 2XXh|RL    EI !$ 긽 fhfP+-034677632-վӟ£ VZ]lb[W0   R$% 诜 &ln7379:<===:763ٽӜɟ T]]>hifaXࣨ 殰UiMąy < $& 耋$'l:<=@BCCCCB><94ضåZ[',Ohph`䯱 詶 !!%'  仅 %+EBEHIJIIHEC>:ǩW-.0Chxs< $!%&'   Œ!(JJLOOPOOKJEB谵 C-46n|xu'$  뱽 %f,++%  ΚLPRRTTTRRQLID 몁6:@@@=<9ę&QPOJLP !!˜%,29n~uogaZP䥮 մ .279<>CDDB><9öLQOEH !%&%$ὼ ,4:>lxtodD! Ulڰ$49=>BDHHEC@=9ʞT-$(% %'(('%羻4:@Ih{uo2,'꯽ ٬%.@@CEIKJIHDB=9ʚ ! ,.   $'+,++'$ⴸ4@BEh{u92- Ҧ,-CJKOQPPLJEC>Ę 7<< !&(---,(&յ:=BBn~|a2 ™42TWWWVTQLIE@ ӔJH !&+-..-+' 䵄 ,6:<< [aP$&'(++('$䯱 %h6&%%$  %&&&&%!뱵  $'ghd^'%$$  %Zhg'&''&'&$߬$`fbP !&((+((đ $'g<2.00. ⼾! $&+=lp'('&%$𰱸ǰ  %hfaUn ]Ò!&(+,,, $499997 ة % &+-2WnH(('%Ӵʞ  %ifb'$͙  %'+---Μ  :@>>̪  &+.247lt-+(ļ!%+iP+(Ǡ $&(,-.!ߥ$ 2BB> !ɚ &,0479:ov3.,Ǿ˜ %'O6.- &(,-.0ߪ% &D9 !%&(Ĕ®!(.47:=>@l]42UoCd !%&.42 &+,..0⾴-  4!%'+-..&,27<>@CDDlP6!!%,66 &+-.00%Ǽ  $&+-02444 %.39=@CDEEEWbۓ !,<:!&+.022 $(-.4679:<:͍&,39=@CEEEEECH˜ >C=$(,.233   67:=@@@B@>:ę,27<>BCEHECUpᝁrI ߔ JH< +.234   DEHIIEEDB=9ƙʢ!.37:=>@BC$ P QLKDߨ&3  $$ ڦ  KOPLKJHD<ɋҼ$+0367::3Qը  :=>BBCDDDDB><73->CEIKLLLnPID>9 𑍘  !!! ߙ 7B!%'(,-,,,++'&!ߞ (.49=BDf~Uq!AMvf[Q՘ !%&(D.-,( !%&''%릀 hif9.... + %(lnofaZRLժη ,b]XTO3Ǘ !%&&%$ 򶀀 ]a``^[XTO3ǍPK $&+JIEDB=93 JIIHD Ԟ>DHJJJKJIHDB>:4->JJLOOOLZZTOJC!ʴ $'((+  ә DK!%&(,-...---,(&$߶ƪUr#34:>BEHp~xf3ᨨ 7973  $贱 !fa24677642 ٨Ԭ !$(-ltngb]V ƾ $Z[R, ǀ W]]ZXWTQ ´.269:nIIDB> OK OQ   ժÓ 4@@BCDEEEDB>:7-٣ KRT$fgb`[VQ۪ HDC  絶OPRRQP('+,,+++Us=$ +('%佻Ǒ&IKix@@=:9水06n|utnd] 䮯 BCB- ۼ[`^^[ZXJ!&&&&&'%!ᱻәBIpTPJH9ߵ &b[4  Ԩ̘@IIJKLLLKIHDB. ߀C+.lttod^W 4QJ  籰UtJ[2 `[X324667776640-%䶼ðɶ,QRVpDBƥ  2 ! ꪰբ!&BIHIJJIED氱&6:>l{ug簵L!  е!llmgd3002220-+'$ӸžJIJnb]XTL ܸ  6.  ꠬Ԫʹ OXWWVTRQPLI抌 -69nztf bXUutf~ē@lhdD99::::963.+ǽۨڼ TpZVQ ٵ(aKHD  Ͱ©LQRRRRQPLJIEʗ &f~x!!! ө&ilog`! ᨸ&a9..023346664뵸 WXh! ٽ TQPLH  -%HJIEC@' ᩮۻ7<=OD97776664 ж !$%^0,U v- м$'hgf`[.,+'&$绽 ! %'(-.0.--+(฽ <@@@==<:ئU!wS&< ۽!%''!3:: ҩ$(-.liR:::973.$%%%'(,-02330.-,ٽCCXXR  ՟!`b`]ZWVPK!뵼>=<--  !! ߦ7<==hxv- CCEHEEEDC@ɰ ]WT&&&&&& ӷ &(Clg[$%&&'' ٟ R !$%&&  뵵<73͠=EIED9D'& ߷4 7a]XR  JDñ(+.2466777640ͩ369=@BCDDlxxd½ CDB :<=  !$%$$ǀ %(-0367hun'$!Í !bdZVHո  !!! ҥU#y3 $^WVP7 W]Pฒ TVRQO !!! ỞWWWVTQLHB'ߢբ6==>>@>< 49 ջ366999  674,@EEHHHEC@=:6 '-049<=>@@>:7K@  466ھ!%(,-.----𼟀 %(-036779iP'&$ ͑ !Zb^XQ !&'U$zxN&%$!ٰ(& Z[D  $&b%! !$$$!nj W]XQ  !$$!!’Z]]ZVQKD>窵窻@HEDB@B >DD>  9%DKLLLKJHEC@:ǣ2=>BBCDDC@=< -   ! !$$$$9,0024466763򮒞$'-047:::<=Oh0%!Ι $,g`,%U%{>ᩱ!%'(+,+' 꾶  39&  $'+-gb! ۴б ]^[WQK3۞  %&'(++('&¢ն!&bb]+'&%%$Δ29>>- 6J ><93սΩ  !$%%$! KZXVROKH Γ%&,0367776  %ߪ $IHEߟ+  CCDEDDC@<72- $&(,.0..-(:Ӵ U&|SkZb....,(&$ ((,-02- :P,+,,+'%$! Ӱ $  ! '۰ CWWTQLJD> Šé &+-.0233 ,Dɨ=B@><73 ƍ.-.!  !   ==<:::    #%&'-,&  ȿ ## ##  %,5<<6/# M&  ʿ 1:/&U'}zI%'+&&'%ŵ %|Ź   '2FU]ZUMG<,  ,AMQQQQQOKIKMG<:AMROB6+    &,122,&#'5@M[_WG6'  ĺ,;@ABGIIBA<:/&'2<@6+     ľ #5FUbeb]ZQI@;:2/1, &5AGKQRQMFABB@AGKKB:+U?u#'/56;AGOZdeb]WQKA6552'ž&,,,/22,+1::52:A@6+#&%# ľ '2;BKR]jkf_WUWWWUQI;/''&#/:BBAFMMGBBFB<;AF@2&   #/:GUj}{tpU@!Rakd[RK@1' ʺ#+/11//+'',,+'&'#   &1;IKF<5/&  %,,# 1I]p{zqke_[RIA;:1u%*.|& "(s|/)9a!$r & "Uz7v/)6ljh 䱵 N3b0!z%*zmq $'{qw'uio" ( iqw'USx*@piB& %& 1qhnu|Bpj@' z!%&1*sktzjkp,&!"|!$ yq++<06|qw})oc`|u!*+B4u{}bh  ! {m**(-+88w tdi  ߺth'+'('7~y|,sw l\½Ȯ6hhq)/247o.tyi] a_hq),347o'"tyk]b_hqY%3686%prtyo h_irZ'47960ptvzh_jbju{%8:=K@/qvmh[UXԩw_]dlw}'9<>K,|ntgcK c`hq{/>@KEF"0{os ldnvn&0EE1{pt  ٵ piqwq%OUUYlJtmjѭ4jfpx#2Q@Jumj1 *mjr{#2K?dj oiqv 3J'vhj  uluv 3E%sca ѧ 2qnwA+QE(sdcҧ!4tnxA+QeG~ac jlpu!.ezae  UZ$nmuu .E|a1 ½# "tnvr!9Ena1 ^C$ oiqo!:<)g] XAT 'mmt?*(eWǷTLN !fgn8$c2_²bFLV+ $ljh{d¿1^UJPU( lddx}4QGM\R qijt|( OU[EKUP tddnw|Ŀ;GJQXS "sfguy}34?EMR񭽷*c  "$[#4{x}=ŻPGL![UT"$'' $7yu}7ýMEKTW $d" 5n1{1ɿ XPR\H "%%'&H|PJPY2D ^N=}V^VG¿9 R!&'#7}U\Z>FNɿPGLRX  o)" 1(==E eY !!%';~F# XLV\'   $c$ 1(=o>9aX`  !&(TGƿhLW\^ ý  &"&"(-B>HC% k]  '^#',:w}JNC&bW^ ý  ""b,,8=ED6$  &6!+-G>ID67 nb½  f !%&'&C\CH'6`   e%My!24|7EDB=, goO%'%7,n7@KOK&ֿ^S 󵽹&h],z&89>EFD?;*ſe;ͼlA#'% 00vzFOL_ ᯺ 1hbgc(9948'%YE[`e+205AFPK3ݰ ohnsz,#-H@@=78( 4RS\en0=2:KPOJJ   qins|/U_JVDD?;08'&ý TQZcpu~/CJQOJ>  ripv|z?NIC=7<&$QPMYenxQUTQN] 웨 ;okty@KIHB<7<*% XKW`kvoOTQNKH  qinu{>KJHB<59(쥮PHU_jtMUROJI.bU` vkty\EKJD?9 3$  WR\fq|OURPNKHC6An  (xpv|8HHHB=8 0 XS_it}iSUROLJE:S7   V{y@LKEA<7   ĸ]YeoxOZWUPNKHXH   v|BGIIDB<7.l GdktzGUUTOKJHFJ%Ua   &w;HIID?;7#o\ .kitw|GRTTRPKJKFF* Ω "7|z=IJIC><6$3q<  üpjrv|EQRTRPKJMP!ǿ !"ay}5BDEFC>972jn%   ujpv{=LNNOOJKJ0¼ "&av}/@CDEB=86Zsoo' %ukpv{REUb KLOOOJ{oI/  !,SoO8?@CD?=86osk  )vkqv6DEHJKLK@4&$$$ſ !&4@879:=><732/!uy(& )vmsw3EEJIKKK:(&%%   "4B-;78:=>97202)wy! ñ (wmst2EFIJJLQQ!/*('&  !,\9567997214%5{e$UcG1.Ҳ )wnC6=@CDFHX>,+*('   ""UqA99:<97215%%D{!  )w&49:<>?BaV*=.-,+# !!&d#'A779:7211<(**b}! (w#289<>@@z8?.-,-¼  !!9.)?5677421+<--..L% (,.1478:=az5>>100.+¼ 󮷵  !"%--+?367421,<2111Ud4S/  <.02468G3<:+D34321*ż   !;/0.&9788321,A33222 ǿ 8,.124;:8631>46433»  ! !:10.68986311+I88776  7+-01246631+D43332-  ! ! 0..-,3786321,.@==<:9ƿ -'',,-.021*})66666  "!!/UeWH,*,-.346321,:6@@?4 + "%'(*-.-c.9998ſ찻   !!! 6'*--2477221,N?B@@   $ "%'(Sz/<<<9   """4'+,-224421.8EEE  %!"$'*y{-==="ÿ "$""1%'*,.13211>B@= wjoY#13321  jbhn++.8^+ Uii&&!"%&ʽ cfluz7:<=<9 %oimA&.011.gch%'6}.#½  l@!''&'*(jensT6<:997½ 'ojp+)-.0*hb"<y"ÿ  #kdk`-/01. fdgkth57871*10½  VX_c ÿ+O egkj6ccktwM071 0cbhov{R2:83432 `X^b f^fiUj|α;bdltw|k2- Tchmswe,8744332ſaW]aſaY_cز^[dnsy}~  kfjotn)87743321¼e\b^ſ^Y^]b_fosz½ Agimqp)766432111 +`\aec½NJPYX b^fnsz( )gdinsl*877433211ż OL h^dfC ¼Ukm4֫񙣤JDMQ1Z[dou{35¿ Yaekpi&3331...-,&ƿ?JKh^cd KDL *WYblu}1?( f_hkY%0..-****'% ƿKFNL j_chſ璠@ 9dbh=$***(%$$& GGMSH=fbhg¼ݐ=:>PLV_iqz3?>> Ǿ   Z_c8$$$! K@MUlçf?8QV\8 lfjla¼ŕ:.VIS]fou3@?=<  b] 油FEIOV[_. rimmļ5GJRZcnsz6B?=<: RJOU[_` 3qkm¼ YRZdlqw}4@?>=:8 YMV[]M%#enl˨PTXckpusy5=998761 Um􄁝ꛨPNVYX &"(7ze$ 毶c]clttm;..--,,&# ܩbY^F"%Dq>I|1..#$ ߪSX^cloi2$$"""   ©,g_.$'<wyy(74-% aX^ekl&( ̻ 򦭫 k] %'6w|<47412%"" ʷh_hmol'(d Un16 젪֣0a !&xt`+44311 :.,+++*$" Ŀ jdiotr"nd\ 㜨 &---,,,+**/J577778741+&%  ukquu"ncdZ頤ٙ"&''*,+***wx6<=<<=?>21*%$6 {pts!&obdgb򩨤ח!$&(**(/}j8@@>>@MK/1)% å9OUoa+}qh* mcdg_Įז"%&'xy|J?@?>?E}r*0+뢤LPBtViSW]abL ˬԒ #uz6>><<=Hw&0񝤞DIMV>W_V[]`3j* ŨӐ  +xpw|1;:989gu!𛝙?DKSW!Ҿ.\\]^&=jbV 񦨤̨ Jlnsyo/99869fUpBA=FPV[ ! `Y_`&!kchif 䩨dgkty}\6<:76=W# آ<:BKSY]  T`ba'$[iimnniŻ'aU^foty{a49966+!è94>GPY^S  fN%]fii\/O9bqpoZ;` "& _UYentvyL;=:5-738BLV\^M!"! j^`ejnoppZ,3>zW&+6p #,/`Y^cnvv{FAUq(}?;)2/6?HQY_d!"%" ibchmqsuxu/1)1%/qgb  '-8;6[^bdkuy{CD?  Ա-*3;DMV\ed& i_einouy}U0-*qhh\ $/8ADWW\eimov}ED($09BKS`enZ(h_ekosy=7uhhiX",5?HI YR\djoot~C緱*&0:EMW]dnmbabinsw|mlmmDɺ'49DLDUrɜ?g^ejpz}QHCŷ,*3>HQWOrhqw|@E,*61m{u $ü),6>*첹lbiov}cJJEӾ++5?GM=lltyjCHC<834w&$ºUsʡsʀ/39 Ӳ (mdnv{y[VXV!ͽü.*2:6½  cdktye@EEEd688,)(%" 34 cdkqw}yrn`E5 ξ)#)Ѯe`hrzK;??GL:9 2%$鶶6/  jgotzoB>82+Ǿ! %dciov|F7:;50)$ݳ̕$ RfgdA#4CB=8" MH "wquzc==950)$ ۱͊43 1jeUQ|y29741 ڒDEB "sosw}`6<00)$ ժӀ-0.Uuթټ Wjc5'Iv}E97611* Ƌ/7BF4!hkpu{<342--+$  т,(.' &phi^57z[0331,,&% ᰰ䛔1:BGVinsy5-0++* ϋ%&K7VlkjY)17,.,*((#! 㔝+1?FLI8hk#)'&%"$ ȓ$JM3!mjnj1&""!! 򱠟09BKP'a"""!  UvKܭHKSW&vko1% 񟧞(/;DLQP ճ$DKSY[!>g  -PC ި'+4?GPS8  [V ںGCMV^b^!  O  FPVU   [W[ ýNMV\ch\!   QJPUW3 %%/9AKQWA UwU]   ZX]ba¼UW\bdgD!  "NKPUW]/þ,09BKSYZ  _X^cdZ½^Y^cdf$!  9JLQVX]]G½.5?HQY\G]Z_cdb ½  ]Z_cdb! @JLQVX]]#*8@HRX]]#+]Y_cdR  +]Y_cdR RJOQW[]Z A@GMUxkRW[]Z ſ`Z_cb%   6[\_cb%SKPUW\]M ĿLHQUW\]Mſ-SY`a[ 9Z\_a[ ȹ KJPVX]]& ĿPMQVX]]&ſ1PS]GA[[]G» IJRW\]]/ROSW\]]3BJRH " NUY8¼%@DMV[_[ UyN8üge097787761-&$)% UzU0;AG ! " `Nȼұ 7iktoAB@?>=831*&$ ܹ6:8 %%%&%&%%&$"  ҥ 4gkrwkCDCB@?831*%  ˵& Wg=/22210...&!  җ 4giqv|oOIIHB<721)$  񳪤 (ginD58987432*&! ԠЋ )ihnu{tSMLGA;611%$U{S؃ܝ ?gjov|R@DBB?951*&!򭠟ʋ ohnszyWRIE?;50*%!ܘ؈ 4^fkqw|ZGIFF?950*%!¹哘ċ &ifoszy[OJC>831)$ǿѕLJQdinsyeQPJD?950*%ĺюĊ/dguyzWNGB<721ĺɋ֙ .\fiouzkSPJD?950*Ŀ۞ۭ(^cktyU|tXMFA;61 ƾ߭Ԁ0Z`iqu{zROJE?95%ظۡ#UZfoxrTMD?;ĺמ‡>OYbkt|~QOJD>& ȿ" ޖJO]ir|oOJD'¸֝EIU^hv~ROJ-Ǽ& ݗFKWdpxiO6$Љ8?KW^hp}R7Ŀ"$%ӍU}┄+:ALVdpzR " "!Ѯ/4AJS]fs7ȹ"'&0:FMXcp|pȳ !%э(6@GQ^kxzC̿$ #Ԏ"1;ERYcn{Q+ü#!ω<;ER`lvrPM5Ǿ%" ެ8931*$ 阜Ç0Z_hkpu{oNM?;61-&!΂:^`hmszUE\)oMMIC>831" 顦ӣ8a_hmqv|TMKEA;61-&! à ;\_enszVDCCB=721&% 䮰Җ:a_hmqv|~DGED?;51+&!!7ַ :W]ekt?99987631&# bW ȹ΋ :`_hms`5<==:960*&!'kb(֝ 8Q[^&,...--,-'#6d]bLļŇ 9`_hC+1122210*&! 8lcfa ļոUhgu 89"!"!!&  b_`cdf=ٻ 9^%"%$&'''(*'$!!jdfhih"  6hbcdggb%º % "%phijlg$" ƿ),    `^cgghhQ!ƿ$  2'D@,6&-VV٣յZD@& %&Wʁǚ$[[]--‣K$I Wdf2=U؅z& $6DlI646:+ ×4R^f9I-Dǩ$  DhbIf4 Wʱ -[tofD-&=+Ҽ%Ltt^P-K¢ +.@am[@ +:, $6-R{mV%$Dʴ-@Dh{[D+ ¾ @.Tt^Z-4Ͱ2@Bbpx]K ,η :3Pt{bP4 &ư2=DTdZL'ʱ 6%Pp{WL= 񻾾 6:HKT]O Ҹ' ,Kh{RPB»ʗUfL %3ODTP]ʾ.3@W[V3Ҽ+.L=RvPP$Ǵ'.=9P~tiV4 ,2DBP{DK2ô3-=3@t{mKKǻ%. .96WpDK6Ƭ,$4=-6pm{=H%3&92.Wf@@:%Ο͈ ,$=94,pat3I® $2.@4 R{h=B4ښ4+D,-,pib,D& μʷ'9@6KtmD63՘蚀%9D'$'pba'D%۸Ä&I=3Ifp@@' ʚ񣈊BD-,]b[+:- U>aỢƗ+H=-9^t@6&򻊊 $@=,%^Z]%43 ƪԥ +HH+.Z{D'$$ƪƗ .@:+$aT[+.+ƴܸ%+DL$,[v@$-Ǯғ44I% TWT&%++뻱軑 .=B -[a@+, άڞ ..D&KRV-+-𸸮Ñ 46=,]O@&3 άܣ..@ HHP3-%ʰ͞6&4'TDD +'ҷ۱3,= 'D:V.'ұٮ @ +-DB4--ñ . =%&=6W6 ۼ:'$-:H4.ʵ͵UX &%,$&3=I9DZ4',6I6:ٻ &&' .-@D9 ڵ2$%DL=6پ,& +3BH6$ 谘,,  &KPK- ոܾ-'&9@K,' 񰑥., &IVL &ұƴ9- &@BW$%ʻ򬐟2- +RaK %ʪ õ B&,K@a% %.$δ򪅚-- +[tD &Úʬ I,RTh $3, 밌:, =]oB$.Ҽҟ I&[bm -2+⸼꩑3+ Dbf=Ui/,4ô ΚD fdh 2-⸼穘+$Iid9$.,ô Ǣ9 iii&3$羼 贞&Phh2-'͵  dih 3¸ǚKmf. .%Ҿʱ[mZ -¸Ԛ=ta- %&-%յWhP%$üҥ-td.&2& VbH &Ү4pb9 $&' PbK'$+һ9fa6 . @]V. &.U<:Vd4 3 .[]64,&Va@,3[]: 2+  H^P. &.Va=+ BW[9-,$VdB&'6RaB9+ռVaI+'$2OaL=%ڼRdW6%' +RbZ9$Kdh:, Rdb2%Ƿ 9doDUޞ$9  Lo]9$ ʱ &olR'4 䮾 Htf%@' $پͰ tlZ3.䪰% :xo.D+ -ʬ+ ttT9, 2 ۩4{m9O%-$Σ,%m{D6- =Ҟ& -{bBV% ,缾-Қ- ovB'=-۱Hۚ3$ 9vT9V봼%%.3ž+ۢ biD,D'Ҵ Dڪ2۱@mR,&T ٸ.-绩 %Ԧ&VW=3=ռ = Ҵ'ۻ 9^K% +3K &Uߴy;r&´$԰ DL9&496 4 Ҿ-TB'&3B@ &ʼҴ4D6+::6&ΰP6..=B3$ڼ3B=,==DҰI.49P=, 4:='=DL$հ@-6=T=' 4=:$:LP%$Է 6-4=RD,ڷ+=6,6VL  ھ=23=LK6۵$:443VP$@246DT@մ4666WL%%ͻ=3=Uu,=VP '԰,:39TL&$ ,ٻ=3@&4R[Ҽ.۪%D.9LI'&-.%᷻::=&2IfԷ 4%,D-3BL6-=۵.:D$4Baҷ=,𮻵3I.'4II-Iٰ,:K2DWҰ B2񵵬.P.2=Tշ&T$ հ'6O-BLͰD4-V.-:RҰ V&Ҵ$=K&9D$ʼI4ê.O3,2@ͷR+%ջ$DD%-42=4&%å3D9,+3IUᲖ22$DB&%+4.3-+ª 469+$'D4:ʘ @D-2$64& ÷:3=% @2:Κ$@=..3=$%“=3B$ $=.6&Ҟ :=,'-@'% ʘ:4@ $.22'ʦ 4=++=,& Қ66=3,&ʷ 242,9-'ٞ 449&2%'%Þ$..6 %6''٪,3:+ +9&ǥ&%-9 &2'+ ٰ'-U✺R=' $=,ΦƵ+'-6$ '--ٸ-=.69ժ$ 26,.2®366,Iٴ,@-,9DZ$234$RԼ¬$D$ %=- ʻ''92 $P%ƣ %:%$ @3£+%:&$$I4ʣ+2' :=Ʃ &=, &BDʩ,.+'-B.ʬ$6.&DLʱ%9-  +UUͨDHҮ ' 22 +=L ø =. -BV հ% -9&  2P3 =2.=^մ$ +=',  TDʢ $@3, =d Ա.D%. TRʢ&B2 '&@d+Ԯ3H - ҸP[ ʞ+D,+- @d2Ү9D+ͷO^+Ɵ.H% +-4a6Ҫ9B$ %ʷLf4ã3D-.%^=%٣6@+$%ҵHd@U뺣o.D%&,ʾ]D4ܣ6=,%+ڷD^L&@-+¾ROB۩99+ &-=[T9.2;KTH⪞66, -,3V]'2, 4Ҿ BZL誟,., .%,La6.' : =VR-,, - %BaD.$:$2OW3'$+'9ZOǵ- .$$ D[%2+$'4RVܱ%$'% :]4,+ 'U=ո3DZ%򰩮+ $3ZBʸ&' + ܵ,4]'2'RHھ + + ,b,2һLOž' % &b6ü+յDRã  $]B$ ٰ=VǪ$   ͸VI  ٱ3WҮ& ԵPLƦ ڴ,V&$స %ٴPIҬ   $ԵR3&豻U档d ܮKB ܮ '  , ԼT:$%$ રHB$ + 2.۾ T=%%%⪩@I%& 93 V=$' %䬥9R,% =6å L:%2 '%簥2W3 %%=4ʥH=% $42,걣,Z9'3:3Ω==&$6:2&T= .@:3Ԭ :@% $9%$B.񸦵 L:   6H U|:=3ڮ3='%%@2'D+$æ%D9&Է=L=9ڷ26.'&D9Ի,I& ʬ =3 $ҴBP 9=¸+42 .%D@͸.I%η=- ҵBP2BҴ6-4ǵ'DBǻ-I :,$һ=Vʸ-:ܴ4':Ʈ,@@ʾ,K 4,&Ҽ=WǸ -4 3$6°,=Bʾ&D',%+@T&2.- 2 &@@+@+ &2DO ¼,-, + .꼵%D@ +6 +7     UU}a,6ξDK&,++ $&4긷$I@'2 Ƽ& 29ԴDK&'%+ Ҿ,=뵸O=',  ʱ$& :9٥DI&& +Ҽ-'B%갷T= -$,ͬ. @@՞DK&' & +ξ ., D3걮Z= -2ժ9DO ΚDH&+$$3$͸ ,2$BD絢a:+4ե=յI[š =I%+ 42ҵ %6$DR긓d: $3ڦ=%ήLf 2P - =9ڴ 9ٻD^f4. ۪='ήKf2.W-=6踥=ҰOh b3U%{'᷻3'յBdDš 3^,=-9ʰ Pm$]3 %»&%۾9]R΢3b+$:%ʵ3ñRo$R6 %; 2WRڪ.] $.2 &ʷKl'P= %&QQ讔(T4'ӽ=a3ƑH6%DI$L0,R4ԣ@4 ! 7DêB ( H0赻6.  $ +DҴ4!<(þ(- ! D , UGH%B7E<ٸٙ,BPXpyyVH,% , 2'',9<Ҿ%.H99D!Dj`aas`ptts`j`pys{V99 ǻμٮξһ .Hay{stU쎒1{stXapV`gatsstpdQH'߾,2PXdXRPH79'22 ,'<9Ras{yXgXR`VHaaVQHH.'!'77<9BPP`aaggyjV2,θļ !'(" $%' !%  !"!>&7'*E  .!&   !1  4'?%  &  .F''۵:%-3!"7+ %D41.K+4. Z02 .&( +21  ! ,-HU҈  UJ F$J Q  BL6.R!'$+ > @6E*L: ٫FW:7J &1!* 1-%$'E?6+17 <-N % 1-6,<(-0 @&H0 .0 *C>7" $ lۺ'P .m+!?P <+%2?"9:!0 nXFC0? $Uh1=-iWC4.8* CJcZ-cJQ$3ϜHd^~F6 \{`2'X1:(.7X.7HhWsB:% "s ,nt *$'cb:%^8 6.1& *!0 0CER="x,$Qһ N!?3:, 8C%Z,4<9h,,[4d{& 8+4Z O(94̷F+19BQ-`12 +CC36*T,.:I3: x U!B߾a$8.7:Q* F3J&a1\0(0?=R,p3:Ca%B`N% '4 > =^ * j!U @' \9!WUam_"&B3fQ @+R:K> L"L8-Ih0s2$4W>]E37 '-: ] >9',O -$$4 IH!:9@ ^c 8!L B0 LU`*8$VQ2L8I" ",%?1E[B9& >Lߣb i  %-4!2R -4@6P3(*8P>>'BR*\=18 23(( J^ O<H87I:" `86L!@-m040* .,J-=(=]CȺD>41Z.1+ "*U?QB:-2X9@ W= :c '6&*&1$1U$'3  FC.6U0 ' 63,,-7<2 "H"N1ͯCyI%$% $,=%DT E <..+8 Q IL"K'*$, 0 % =R (""m$'( L$UEB L -$ .$a:P W  %$\ EDB09a K11PUB+113(!=, 348d%-*,T=3@@Q E^"J( D^` @ 42  -&:0D*$ 2V o 1- Wo(%6 %9  %'!-6,29n.+80 oTI2.1390$  3RL.&68 &0 +$"+J(:2I !. 2WW!CK4E++L +:+0E, ,%*.8- 3@DP>h1Q%0>6&- b'!-W "': gB+(( ,8U?<@@7\19T"  '1 9 62>"F 1! "*6,1">'%*B *( <**>0D*2J-. C..$,BB4$ ,d,4C77 &@ I'! D93E"="0EE2B%6+.<&!$J&1%K( 0  48=3 &@ 8Iڟ:U +-:"&', .% D(  $"4R T'*'<8, >4 &UgT +!2"- !N33 - (7 +C%?.!"@ .!"?  0":+?E($ !%<$7E4(^$&&!-,739 < ''0"X3T$76 1$I*$&'*%%2 3>.=E ER,9P= B $  D 2$ 2( d.DNC=.F0I  !1& >F4. !.N <@ "! :+"20% &>%CU<3(! % - 74%:9,I7 **>N=,&?+ 61XEd,= 3+$: '3`E.*6 4 3 $" L8=3 =+.  E +.77 +(72&* .? @%  :1+ 0.C2&?,-2:+<0!C,  (3 2(2!+ ,!?( 0   7>D,(U''    .EP. &L*+*&1&1,0+,C '$": " .8 , %$$ H ,  3' % %30,$"!$!4 +1<!:4* C % ,%,%7 !7!%"$ %"  :J ,@   %+% ,$+!+9   ?%   I  ( "8@"  +!   U֘Z!*& ( "   ? F !  2 4,$ 8** - !6 " "-   :4   " ,4*  (61+1% 7"1 6$ -*7"''$   >  "'."   * % %   &  , *6D   &*2-   "    .= U- '  -     !'$   &   ! 4 ( - ,!%%$  *      + 8(! 3?''$+$  '! +   &  !+<  &'(? D & ,('  ! -   -   +* UIl$ &$ !% & *0 $  "   6"  ,%.&  2!"   " &%    '. '     $,  *     !!    !" +! 0  1&   %$ 8"%   "!"" &U6 s  !$       $           (    * "  ! &  (-     !    (     "  +  ( *    !       $    U`&       -     ( !   :  .! "  &( *  &   &3   - & - % '  ,! $  % -  7   '  %   $   $  4"        "U"          "$$!1   !"   ,  -,   '   !    +  ' * !      " %+   !$ ( %  " !  * *    $ U2A .   ""!!  !! (    !    (    $$(    -    !  '        '                      $ U( %"    &                            "  !  '  -         !                        U k(|                        $!      $           *            !              &        U @r "        %         %      !                     " $                 " $  U S  &               "                              !     !                         U                  $                "      *                                              U      "                                                                           U                                                                                U$r                                                                                           U8                                                                                          Uہ7                           "                                            "            Uk                          %                                                                         UH                                                                                             " U                                                                                                       UX                                                                                                                 U-p                                                                                                       U)E                                                                                                               URe                                                                                                                      Ui]g                                                                                                               U_>                                                                                                                     UxC                                                                     U4"          U䶸U|UH !&gfedcba`_^]\[ZYXWVUTSRQPONMLKJIHGFEDCBA@?>=<;:9876543210/.-,+*)('&%$#"! (7 `sormelusph! & e@8@< HA-C0<{Qa 2<a"aM3B3Da=|=|=|=|(a y#hF!|hADpBXQHBACaLaA 3"H@3a ^-|=@#VR y#lJ!| lPZJ9_ga `"J9^ga dC-A0<{QaaT`a $ByVBdByAtEBya aa 9u`gj 9w`g 9Y`g" 9]`g 9_`gV 9[`f 9Z`fF9[ 9":v,`fa adJfda`\a za y!yFh!yJl09D=|@=@aP09B=|@=@aa LpNu9g9fNuaQrNu3baay yfNu.f-|TBnf-|@=|X.fNuA``AatEBya6a 9`faAtEByaaf`A-C| <xQA|pb<0<1A&RB 9oRA<0Q~G|9],SFaAxtEBya Kt E aAtEEapa 9g`g> 9e`gD 9#%`f]aAtEBya,a`SGf~`GH`jRG  f~ `G`VzI??ULAtE:pa><a3 GaBg 0e :dAtE:paQ$$ 0f 0f20Y` AS@YaA8EJ`aTAE:paD`p9YR@aANuAaC)pQ 9daAaAQ09Valpr09V9YRdH@B@H@Ay%2<a*rda&r a"0AtE@aaaNu0B@H@NurtvH@B@H@dH@2B@H@$Y HA4BAHA000NuH 9daLAXp9XaAnp09VaAPtEJ`aLNuz:9V`zCadH@x8B@H@Ea\. aLNua.3333(3(3YXR9X#RBya"<2aa6"aA-^aA(CEGIK`z9YP=|ag (d43@ taB0ag ug gRyV23|a`<Ff 23|aXQ~=| aayf33%3ByBya#VRNu~Byb`ggf SrNuSrNurNuH`prt929YLNuH瀀A,a@aLNu 9`fHp9Y(A-pr('ЁB(ЁB(dЁB( ЁB(ЁCart'҂B҂Bd҂BRI ҂B҂B@baCaYYYii(H^v  QBy&HtE*aAtEaa,v(KP*KSaa:g g* fTCSfRK `&/ LtE*aQaPaaLNu9Y(A-C8p'QNuH@09HCJ81:1=E Lv@-@H@0<,Q=E0<,Q=@UyHj3HL?Nu6.C=|333333332=|A-H-H-H-H0< 2<t@HHSAHTAH=|razaaSEja &yyyyyyf=|3=CNuHP\G4(Jv'p 2B@H@@@C$Lp4C&ENQTLQI'V^vQQ\LNuBybaayfaNuA`CEr+af`RQpNufSfpNuHpC,xN,@#"<$<Ng&($<-&<|NQ_"Na`LNuP_`a,yJ9ag4"<N"<$<Ng($<-&<|N"N"N,xNbNuaa|fQ^NuP^NuByaAhtEala 9`faNuByaAtEa8221><҄ҁHA69@8206108C:DքփHCއHG: < œHFyDF<6`փHCHGC@G66L @f^ML 6I"K*LzxP *G±f=EB=Ep=|r=D^=DdLL yaLJ@jUNNuL~P♙  tttttttt♙PPPPPPPP♙tPtPtPtP♙PPttPPtt♙AlBCAAr@lTADBx@H\D HDBlRA +K"CB0CA;,HB4CrkCBCPf-D>-B`-HF2"2NuAQ IUH33a yRNaL3 NsHJ9Zg&J9[f0Ma9^9fa J9\faLNu3`aAJPg0@g PhNuPhNuA2Cb0gCRaNu/9g>09g29B9`9T9f3 Ns y#xN!|xZ[Nu y!yNxNu3 J9RdNsI\E4 ,LoGA6TI((((88NuH,xp.)gKN#Cp!N#,@NN8#"N"NNLNuH,yNN2"yN"NN#&3"N,xNbLNuNzNsG'H" ѨѨѨ g!I ( r(SACёѩCQCpBYQC,pBYQCXpBYQCpBYQ(h'L"h'I0E'Jp0E'J0E'J'L'I7|?7|7| Bk BBS9=|pBnBnBnBnNuG|,~8RDyg`KI6zJmgRpU@0;NBTx -  >BBBB B- @gP @g2 @fp-Sf0-*@k"m(9QP`p-SfBlBm`Smf0-*=@@k"m(9Qp-;@P`0;g dp-`0-9{ `Pp-@m9{`8XX(\:}hS@. xqRR"}Y7{eQ>, ~wqLLxU3xcO<* }vpFF.G:tP/u`L:(}vo@@oL+ r^J8&|un:: kH'p[H5${tm44fD#mYE3"zsm..b?kVC1 yrlX(\:}hS@. xR"|Y7{eQ>, /E^R~w~~LxU3xcO<* }vwwFtP/u`L:(}vqq@oL+ r^J8&{ukk: kH'p[H5${tdd4fD#mYE3"zs^^.b?kVC1 yr--j BmBl`0fp@ml ;@9@`n9m`f--j BmBl`p@ml;@9m0-g:2-m mm m n ;@ Bm9@`m m m;@ Bm9m QygNNup-m pqm o ;@ 9@`9m `p-m mX o0<X;@ 9@`9m `JkgSkNuK y(yzJ-gkS-BmQNuR-`:J-)gS-)$m$*+J$`$$m Jk*+J `;Z(0+J E*+J$P0@gC+I+i QNuBSJkgSkNuJk gaPKIEPxzJmgnrUWAgHUAgNp~g,B-m;@;r 0-*=@@YAg"m10$(9QpUC&0@N-g@p~gm;@;r)m Q=DDNuGJkg(Bk=y9T9fJSftSkk*`lNu2<m"m Ё(I0Aj(p9@`(y7|?"k0j"y0AL'I'HpA'HA'HA 'HC y"3h  y0#h3h  y\#h 3h $ y#h03h 4Num`p-@й'@7|@"k y0j"y0L'IC'IpC'IC 'I'H`-g-ggB`n-gf-vg2zgB`B-H0;N 6R.....p..-99`p-m pqm o;@ `p-m mX o;|X `p-mp@ml;@`p-@;{`J(rP.x Vp-;@`dp-mjVBm`N0-*D`Dp-7@7@`2- f@ @ P `@ S@ Bk `--j BmBl`p@ml;@9m0<2-AHIA>A2- J-k{h`{b9A-@<-`0<2-AHIA>A2-J-k{* A@o r@`{jr9A-3@<-`   4j               57  VVVVVVVVVdZv&8pp(Fv *08>DNT\bhrx0Xt26:X\4<bj28Dfp|T6<Pv Br(F`djt@ $z  n ~ H T r x ~    4 ` h z $ , N V Z ` l r ">\d JRhr7B >Ln|V\bDTfx@>R`h^$2:BJRZz\fnv|   " * 2 : B J V d p 4 : f08&*04  6LzXl~JN   ^ 8; e?P41A 8 D% D< !m<0 h6q;Gf< L9b,}'\i'8. .?)n(M)n=zzPL LX( X( dt 9m|( (  @$$ $$  (  @  P T \ t h lD h h $$ $$ dt X( X(  (  |\ P T \  ,T ,P (D(D&P &P (D(D6D,T ,P (D(D"P $@ ?"P $@,0 ,<-( ,<-,0  "P $@2@ 2@ (@ (@ ,P     ,P ,P $@ :Z  ((  ((( H  6D 6  6,<66(6 ;g,< ,0$@ &P,>,>,>,_(@$@"P$@"PP@ (6 ,,,"(,(,&&&,,,(,,,,"(,(,""""$(2,(,?,;2, ,(, \ \;X,;X,,,,,,,,,T,, 2 620 q(`6`"`"``` `` tt"c0 c0c0"`"```6,"(,( 0$ & , " @ tt` tt` :`         ,<          ,6          , Ѐ          , 6` @6 (6( ?, %(4p,0(,< (0 ,04p(0 ,0(,0(0 ,00 (4p,0(,< (0 ,04p(0 ,0(,0(0 ,04p,0?2, 2,2, 2,2,  P2,  P P P P P P P P P P P P P,02, 2,( 2, 2, 2 2| 2, ( 2, 2 2, 2| 2, (& ,0(& ,0,0,<(((,<,<,0,< ܀ ,0,<(,<(,0,0,<,0( 0 ,0( 0 ( Ѐ H 0 ( Ѐ H 0  @)A( 0 ,0,<,0,< (& ,0(0 (,04p(0 (,0 @(0 (,04p(0 (,04p(0 (,04p(0 (,0 @(0 (,04p( ,04p,0(& ,0(& ,0(4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 (( 0 4p(4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 (( 0 ,0(!A>-C4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 (( 0 4p(4p0 (( 0 4p(0 0 (( 0 0 (4p0 (( 0 4p(0 0 60 ( Ѐ H 0 ( Ѐ H 0 ( Ѐ H 0 ( 0 ,0 ,<,< ,<@,0 ,0 ,< ,<0,0,0 $dos.librarySormelus.pisteetgraphics.library *** Levyvirhe *** Ei "B)zvoitu avata pistetiedostoa Mit]]]h?? Joku idiootti on n]pel[inyt pistetiedostoa! **************** **** SORMELUS **** ***** v1.2 ***** Space......................Aloitus Return.........#C ............Tason vaihto F1.........................Tuloslista F2.........................Ohjeita F3.........................Musiikki F4.........................Tekij]t Esc........................Lopetus Taso.......................?? Enn]tys: ??????????????????????????????????????? Tarkoitus on painaa mahdollisimman nopeasti kuvaruutuun ilmestyv]] merkki] vastaavaa n]pp]$Dl̃int]. Vihre]t viivat ilmoittavat onnistumi- sesta ja punaiset ep]onnistumisesta. Virheist] EI saa rangaistussekunteja, vaan uuden merkin. Luku vasemmassa alareunassa ilmoittaa j]ljell] olevien n]pp]inten m]]r]n, keskell] n]kyy aika, ja oikeassa reunassa virheitten lukum]]r]. Escill] voi lopettaa kesken. %E?:6 *************************************** Suunnittelu: T.Lindstr[m, J.Jansson, K-P Koljonen Hippokuva & musiikki: T.Lindstr[m Koodaus: K-P Koljonen *************************************** V1.2:n pit]isi toimia kaikissa &F'B Amigoissa. Aika.............???.?? s Virheit].........??? Virheprosentti...??? Uusi enn]tys! Kirjoita nimesi: Aika N'G33imi Taso Nuolet: yl[s ja alas, Space: Pois 1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZ{},. -뿕۹ѳٽӗݛ՝w}7 d u t QssQ0P p  pP0      1Su uS1  $ F h  h F$vvp pP p  pPww      @ ` `@ (H·  p  p     pp``    www  w0 ` `0 ` `0;w ' a:l! #H%l')+-/2468:<>?ACEGIjK<:8642/-+)'%l#H!!l: a (w<Ng0d5 ܸڔsT9! ,JmIJ3sZ~cf󜇛#ǘs'㔧tI' -SD]΃H͂[򁔁?}P--P}?[̓H΄]DS- 'It'sǛ#fc~Zs2ĶmJ, !9Tsڔܸ 5d0gM*J{GZ;w ' a:l! #H%l')+-/2468:<>?ACEGIjKwwDvvMuuZttiss|srrqq9ppVoowonn-mmTlllkkDjjujiiChh{hggTfff2eeseddZcccFbbb8aaa.```)__~_)^^^.]]]7\\\E[[[W[ ZZnZ!YYYG FFFxFGFEEEEWE(DDDDmD?DCCCC\C/CBBBBSB'AAAA|AQA'@@@@@W@.@????c?;?>>>>w>P>)>====k=E= <<<<++++********o*]*J*8*&**))))))))s)a)P)>)-)) (((((((((q(`(P(?(.(( '''''''''{'k'['K'<','' &&&&&&&&&&r&c&T&E&6&'&& %%%%%%%%%%v%h%Z%K%=%/% %%$$$$$$$$$$y$k$^$P$C$5$($$ ###########|#o#b#U#H#;#/#"##""""""""""""s"g"["O"B"6"*"""!!!!!!!!!!!!y!n!b!W!K!@!4!)!!! w l a V L A 6 + !  yoe[QG<2( -MD)9?wnd[QH>5+"|sjaXPG>5,# wog^VNE=5-$ |tld]UME>6.'{tme^WPIA:3,% xqkd]VPIC<5/("{uoib\VPJD>81+% z.Nkuoic^XRMGB<61+&  ~xsnic^YTOID?:50+&  }xsoje`\WRMID?;61-(# P@0 p`P@0 p  ` P @ 0 p `P@0 p`P@0 p`P@0 p`P@ 0 /O  ! !p!""`"##P##$@$$%0%%& &p&''`'((P(()@))*0**+ +p+,,`,--P--.@../0//0 0p011`122P223@3340445 5p566`677P778@889099: :p:;;`;<0>>? ?p?@@`@AAPAAB@BBC0CCD DpDEE`EFFPFFG@GGH0HHI IpIJJ`JKKPKKL@LLM0MMN NpNOO`O v 3,9b@ \4,kZrdGz'@O 5HѬَ> .f, =>GrVcemZDb0PxY> BxtC^Ӷ E@j  r 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ..........1Qʗ#................... 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ..................2Rʗ!........... 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ..........................3Sإ"... 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 94T͗99.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ..5Uʗ........................... 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ..........6Vʗ................... 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ..................7Wʗ........... 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ............................. 999.99 ..........................8XL_S~... 999.99 ............................. 999.99 ............................. 999.99 ............................. m,n, ,,,-----&-.-6->-F-N-V-^-f-n-v-~-------------8 8,,PP"#$%&'()*+9YB  +,-./0123488  8888888p88<8?p8 8p8|888p8pp889888?;p?:ZBr8x8>8p088p8 88xp?p??0888 88   8883p8p88;[Ńf3pp8p|pxa 88p  8p88c3 8p8p8pg38p  8?? 8cp8p 8008p 88 08 8 px???<\[S@D>>|>p8??|>p>>?808 8 a8  `  08`8 8<A8  ` 88< p88 `00p8<p88 1866p88 0383fp8x8 03f83p8<8 |p81|8p <8 | 8pp 0<880x0 >>>|x<>>>/0<?=]- lp<x< 8800`8<a80c3`o|;8g8888888888g888888pc388888>^}18 81 888`888 88 8088 >><y>>8888888888?7?_ ><<}>8888 pp88080 p p880 p88p8888 888>8<><|888g>|> .j_C;5I=I# p-ޣԗ@` (Zc  -I%߀Ľ' 2#'- $T 41%XX68 28/14F%h%GDW D.5Z6jIK1=.;(R؀9MZ%$c8989<ڀ?j!p!l=JĻ;z1eml{X !\_}ʀW9j!8T Jwƀ B+ f[*ӤBQG#@^c**G4M+սw1W~% 2ӀvqK a蓇< <=/hDf怀 W!+*i~(ˏ_AaXi1 'N{ Z*Ӏ8$a(BFNPTTTPNLH><6.(" ""..88@DJFJHJHLHHLHJFD><42.2.66>@FJLPV\^`bfbb\\TPLJB>::6::B>BDFHLLTTXX^b^bdd`ZXTPJHHLLRVZ^ddddd`\NJ<840,,($((,06:DHNR\`flplllfbZTPPFLFLFFHRNVX^^^bbb^dX`Z``jjjjfffbflplrrlrnnh^XNHD@D::::JJPVV`hr~vj^NH<6(  H^h,ӤG_\ ֭=U`/给6OS/鱕5_qjȣ%J]Wƛ"AXG ȠI\SԲAY?Wxj\1P/ܭAYd57RT)§.GO2Ƭ#0 Ů=[hD𻟭8Q\,䳛4KHس5IF໰ 4E1HZ&ѦE][ׯEVKԲ=MBڶ3B8 @YUٳBRC̪'BH)Į(@D!*B8 .cU8Ta;;RP⾲9IAõ2>4Ծ8SX+⸣ :LB˩$<>㽮+;2 ſ19]cæ/NcJ>TW%ลASEٷ%@G0л:Xyb 1A:ܿ6< )5#-, &/ӿRhB߰I_Y Ǫ:T^.㹡"GXEʨ4HKߵ,D'/( %(# PgFްLaUH]\Ұ=T[-潨#CO;Ǯ 8J)轮8D)İ 0=(ʷ*8''1"$/6Ϋ;Te.Ӱ?Tc&ӱAR]%֮ë=J%,EA YaNdJ廟A[eȫSa9۲DUJ.FJͨ 0;-Ŵ53ռ.0 (* "! Gf<ԥQ`1ΥZaʤ5^YE[E배HOЮ%>-!-&#" <Yz=ki1Ȗ4e<ѝ@e7ӢH`%ɧQR M3-=ʼ)     9_`0ͫa.ϼ)]2R872 ! ,UM.2")"     B;!      -       Z{h       d{h ` P@0 Pp Dfw "@x`Tx_xy`HރׁԀπ׀[|La38_oo|./Ep/le@/lx`H\o`/F$((c[/Z=,0'1"(l(8( ڣ+ pKHõ( 0% 𠀕T7ϰ@ _W*ߴ*0 ה`(gH;k߷ڜ* * ')8/ p7*?ۥص$ E%/P[P@Pب/&,-'߀̮ʟϿ 5 ۟#0+1D/8  78?$,-8>H4+6;sE տ$4hOkT ϭ ,\}^u :VO% -A /   -" 75  0(-+ S,+ %      "( @?!5 91( :볪 -5R/ *?9 #!  0,% (:4GL.%    ]~|!Թ "&''!%       " 6*)0(' +  $   !  $'0/(0/3 O@7/`<@  ? ߿äğ򴇵^Yв"  ! ?%"'?8(O90+'/;<5=7;'0-%''/7?0&$+7'&#!"/  /( ۿ(0%       (  * #     _ZN;                              `}s                          aϣ                                 bhh                    cgs       d0H       ( 0<46$e0eC    )%                          f                 gpz h      i  $$,044<<@DDHHHHHHDHHHHDD@@D<8440000,((($$  ȼ  @H|D4t|,|||4P||t|h@\|||||X@lX< \||\8FAݬD#W&<.ᶜ25GA+ĺF">86ٮ =7%O0찾 4@5V5%̹ 3B=Q."%+8; /G4,淽98ڱ 0+5$57( կ 10!ؽ-#$ /(/(,( 0        )     #    r5uK "!                                         swk#                                         tW/                             ||\8@||@@|p \|8贀 |x|p$ l||@`|lX|H؀ p|\\PD||X|4(4||8ȀX|8蘀|hu(|xH|x4䌀||HL||`x|d`|KV||||| ܨ$А,X|||X􀀼 X||H(8@\||0<tp00||||` ||||h>:4*! %,3761+" +6=?>6+ /=FLLE8(˿#,264."#(*("/585- "1<@@;2$Ź 5HQSK=(/ALNG6ϸ*;DD<-̺3CNOE2­0J[a\N4ջ ,FV\WH0տ4IUVJ4ɺ/AKH9# "8EF>,Ƹ+67-"6>;-ڿ.L`cU8廞.VjseE淜 ?_owc9Χ2XkulIܮ1Xkt`6ҭ#KcdR-ctҲ-O_Y=㼥:UZI%ί.LXL*Ѯ&GUJ)˩;]jX,6ZbM峚Mfa:â DapY$贚%ITD"ҿ$76#8A5!1.+0'    $:;!ϱ:C1"1' $-1# "*  %          %ߺ 15@S '+ݳF5#)? !1->*29+ !)>' +,E>% ,%$F7))%,7 -2W1+3:F)$4-52!=)ټ(5GE%$꽻0 66*+#,G# ڽN( 0>$*+$"* 9:--77  $$ǭG*: ' R:/-% 0 +.C6, KD-LI* ߺ.C3%/,! 3*϶ =:A(B@$ƹE3 5A+" (7; ;)-( HD 9+ :G0鶿 )*$7 ($6"(%R8 ѺJR/ ƨ-I997.ո J! ' < /M5 )A5ɲH) $ &64(4#,=(('"04 .#-Ὸ! "=A#&. к ''' *,+06>4 B5 4*%3 '*%   4 + "۵# / PG ٷ,B;'#/"!A(;> %.3=% (!'*6 9 ,$"+ 3E+ .#&" F  0*>$ %, "   /8&w]&)!!2+   + $:' %  0.%/)(/( *74$("+% !(/&(,&"2' *) #, )-+,&1& "-0-, 4. !&/' )+&.,  ".$020,-& 00$2(  '+!/,!  ),#3/$ t%%-' // # #/* +.  0+$,   #.% %& +! #    !"&,!   %%  #  $&! !(    Ӿ k *,                           z                   /@          K4NF)@$)"0^+ED11P:(7$0G#J #539ߺ809.+8  3'= @)!3:C߹"б!/ '. ,'أ #1Ѳ"-(X@,"/5( 8!0 $ ,%7-  /!96 # %NG''>8#0% 7#, .6 5 (# J ,'I) :#" 3%0< (,$ 0,, 0, (8(.53  7')-<.%9D : +$') !  $ -"  -%Đ` #7 $$  -"+(,'( ++" ,AD9 $+#  %  ! ,  "+ !% $ %   , / "   $  "-$   '      * +     ' %  )  "   $                                              e                                        ۹X                                  XDZ                 (   "  -!  &*  (. +*!"+ 0!K%/(+ ۱(01ݴ&[)/""*"ʣ+ Z3 ,S")( : ӾH5#35& 43*0( ,% )22=1 +  *6'41 %1 6%2 = ߽71 H65( '2>$ /;$&&޴ 7%' %5ƴ  !491! 6#) <#A(ά% %'-M.#6އܷ/-*.8 ! .9(+75) !#/7  )*$  73?,) ߭&&,%% % + 5<## $ '?.%+  %-ܼ' ;!&*6 %* )٫Կ:0*  %  (! % )%!67 W)%*  .2  $&& %$$ #-&              #   "