`IBM b@ A@p0wQ"xNp r$IAt$%XEQPIQC `QHzt?< NA\O~?<%NNTOQKM@~x:<02||@g~|02|p|p@g~|02||@g~SF>> O`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIMOS@U`W[]_/c@e`gmoq s@u`wy{} @` @ ` o @ ` @ ` ǀ ɠ @ ` ׀ ٠ @` O`!Aa   !Oa!!#A%a')+-/1!3A5a79;=?A!CAoGMOQ!SAUWY[]_a!cAeagikmoq!sAuwy}!Aa!Aa!Aa!AaǁɡAaׁOa!A " B b  !"!B!!!!"!""#B"%b"')+-"/#/#O#5b#7#9#;=#?$A"$CB$o$G$I$K$MO%Q"%SB%Ub%%Y%[%]%_a"&cB&eb&g&&k&m&o'qsB'ub'w'y'}'("(B(b((((()")B)b)))))*"*B*b*****+"+B+b+++++,",B,b,ǂ,ɢ,,,-"-B-b-ׂ-٢---.".B..O`  @`! #@%`')+-/1 3@5`79;=?A C@E`GIMOS@U`W[]_/c@e`gmoq s@u`wy{} @` @ ` o @ ` @ ` ǀ ɠ @ ` ׀ ٠ @` O`!Aa   !Oa!!#A%a')+-/1!3A5a79;=?A!CAoGMOQ!SAUWY[]_a!cAeagikmoq!sAuwy}!Aa!Aa!Aa!AaǁɡAaׁOa!A " B b  !"!B!!!!"!""#B"%b"')+-"/#/#O#5b#7#9#;=#?$A"$CB$o$G$I$K$MO%Q"%SB%Ub%%Y%[%]%_a"&cB&eb&g&&k&m&o'qsB'ub'w'y'}'("(B(b((((()")B)b)))))*"*B*b*****+"+B+b+++++,",B,b,ǂ,ɢ,,,-"-B-b-ׂ-٢---.".B..POVOSCD1MSDAUTO POV1 POV3 ¡QPOV6 ̡jPOV16 ءPOV20 衜POV26 JPOV27 POV28 "READ ME NEWDESK INF !`DESKTOP INF `. .. POV_SC1 PRG /m`mx?<NN @0<}NqQHz>?<&NNNqNqNqNqNqNqNqAB a&MM +ЫЫA .GIJgrѓB(g<fG``GPN$^,,,,ܓ,,Cp$L(QGX /KN(K&YdB`BN/K ,HNRK&`:UgdCDE`$|a^g`|aVg E`&`| aDECI&4fLf&e|`@|a$J*g2P`f``BEg EQJENu&`|a84@HJ*fXF`.a2I|aʺ<m|ag |aEA`*`2P:`aDgt@IP$$Q` f&ed&fg^|avg &CrtfTATAQP`Q|aJgCpQP`QBC&&H&&M``NZ,Nu `````` OC# <N{.HNuVMAX/MCS}j` iֵ\F<pS7y D#QAo*vЁ0if%)<C Q`d p9XDfe' &2_ g BBEP9g# N X<j2^ǰO3'4fYUJB+zNԛM*Snv8EF YGLjJXK^}=F >blhN`3g| $~`>`O ~9d þlcpxxl` ~v~8yŅ`l6|f|>fQ$1y ]yPx(J6DD r?>s<`7@57"1pPq8"3DUfwRh3yd܇D^;HW=nަG]m 9yD'@W75zǞ(#guzQЕ=j.EWtƦ&:͘^ԸR#+uUGL74ͽ?<hS&@1=je\V+z.3=85Qs2آ=rG@kN ӣḰ,zttEZ6=bZP5&- ,G&1 g 88E p2=2I2DZ8YdzT1N&ӣJLSG5*آ͊}W"zܦ~5~F.ƅp9c4L"~hRq?~MsZCt\G@s,..A,z]ѣԊ3āӤ==2ZevMl,3> zRGGI О85,z\Ѧ!#Z\qs=r@ *R(nG(mE2%))#GlJS[TU=ܗwG$ţtw?!MG4czdX#>Vـ[dZ@W:d:ZЋ32uu2=}dR뛧EG6GB~i:LoziMM^@?=: K@4*S$ML,=2wZޭT#ו]BX2|呫c MM\ZztJ!D=rV2 Sy#PtG6=3=:%2=z9=ze*Xz2=*egzzt𥛥VG(L,UL޼  TȔȠңG6he^44Ȍ{TRd`籈Q?RJ?d4dQRd`Gi(ydʔxJ9?%Ǖ}G,GM H`I?IP" qҟʹYy<2WtFgl?}w,}f8!@@ǵ1gpϜ@J|ֺuنQ ##ޖG&@VY$\Xυ:F| Z)xa:P8NpT O\ ކ~ fC0>Ӄp͉iwרG2;MFMx1}8Jnan8S P0|8!+80f0@p`0|>>8l'8||8&D06 PE7|`EFjISN97 W yT YǕbP.O.V0M@l0LP(A_A)CJG wN: TMHDSB!@ΉIcA)48X}nwO^f V@1 3¹PM1$ho C`F 16%eKaܕBu7p>V. pՍvM I'UAuD-D/4Y T0pp_- iBI!FoaOwNp7UY%AEV;}T WITzESL`m1+ڮP48lu.xt.}\B۾W\8C_NBEɫ_Ad^p토g۝: 1/kBQ12ECumM!u2 t ; BB DR8x[|o,w)`gƄS8! k8stB#Ǣz&ΊRdH,;D$w%n| P_EX~k .8u$4CAbk$@uVaD'.@ki=T&"F /ɓKA^o-UuLGPʼn4aZ"07-X ,B=KE|tޢt<_`4D5wz{YJ'[WXsf92h_} %GƺM X!_[lJגMz;+HЂ\0Lh>hr,z$yL*i⃂rAG m~+{$%1I/ZO'"Z$bFok_i50,km rPKp΍R csT+C+F=xT!P~Aߺo_I͎C5Zbi9a x) Du\hunyF: 1an .Etj8X*o*hnqp=^#Ky3*C"'qq=%ED2hz"{6[ a|$Sj| o9h8CDOWOD4AE|N uex +Wp~Sg> P;NAStS^ |;Rylh|)/Dy6Hpa•v:){IE{_OIt_!Wj4 ٙqCMzC o^ۿW!4sfRppIxDq|Tvsg41\2N`ilguwlӒY-*a6OjabD_"Yeؠ2+cy rDc,Y'@-ńXQ$$xMs!y$h ,GQJ=‰Nq /4($(qĉ;Rvrͯ`4R SCgxQ E ATE:: k(ClB3h 7Vwweh MO}X )se״ wIIbnlL`* az:BmoC-6I*'nEj&@BUER_SIZE0Utk6(^ D͵Dq@oӞwnh3V mpMMRC!#] 5?M;BG3$&iƠФ WDN,RMJ_BX}SLul"uUҐ&\$bnQLf ;sS_rK]_vI&xڸ^ ʹǤl{/{0B9aꂽW5dzȥ %'\U "o( q_ T7/,8!Z)94z(#9+ni}pbu2{ah|\O&-TP=MZa ~׳ Z(~!l~4c2Ff[P"()HE`&%Eǯ,=Qi)՜aB,a|Ŀa0o7L aC> `! !x A#a5P/@#_mwm<2do_1> {NV (D*Wq{DMlTb~QF"01΢r)dry~9^%9Cu`8+s~+6ԣPˈ+%\@ľmB$D~vB(d>T| fxerGtY9Zh;a0$Naҿd nLovV6;Gx["3اnWmXjm]c Jw5!eA¨2W%۞pX!et0? z3@"h>ݐBCID+j0 $X"aÌF0cw%sI`s(pnlS(qG-w@vf'3tP͍tɑ`EQMtMg+,+1r~ƥ/ OkayB.l, vG^Xx64,P kond_c@9\dpcG$\E QIA# *c -n  FUL"bwnd_vHw )6y0u ;w6\uxcc, Zay`m. CŭSgq 8//ޅb](*Ǎ3v6OtTjbzT$ C7 q%'2!f|Yf*mrl[@Ѵ isd]7=dS9CqgFREQ %%U^~"VO6I#虌+4S\/ɡ M4 4[ 2X9s橭+**~rTIcE>6iSZA7*.lSDKD"/CTեvueBBMzא ӡT6L#}/R K JMvh!ފf2TTu/BB a:%i"|+6PC,+*#HA@E@dkf4m<OeB  xo2Zr8s^Sans^ԳC+e!Ȅ%LR@@|P{vMKF= T{OdF(o"B G ?Ǣu%A@&XfeV #1 ;rhx誱[+fgTyBE: S\pVDL D alwacCt1't>vL/DŽHuQIS B=bt|^nWA?S]RBE-D|ќn'ra1D1=8!OkDbi̛{Sa;Bey@aѯNl]7 1yLa?s8OdCBnv:8D=3M j0=$do t ix#L U=i|zo,cZ%`(6bѦhD"Ju4q-~ +$.5X i|[<R9^BeY3Al9Uo2&֦X=[fZV4<_ N3 !B "50w12=z$2MVTI)/DMAк\-SeEo^X`nBb]a6Nz7gF29LmC--5N+*xmy*%+ch| w/-FB-7oIuT\3'~sr)a 8pmtmtmP4r5r5rzXF:c#K @6WM6J&6M#\M#4M#M#Mf81̢@1ѧqZĄ(UKyer2*au g8mBcr,vD d!$B$; %TT[kAFRM-s` 4 ;f 4 B‘A1F`DxLy]`݅dtb!,u"LɌ#3QGR4"= Cn3}yn;s;glh^cNf?B_HATA'*#73.a_0喰z]]͓F鑝WƑ{d~."$LC Eaޜ  {m0B"d8tUm;$ Xe$ @'I6A58,!bJrsw_dCTCR _311A9PAm|RA@J50$- yOG % VE.B/JIA.W1WhvqN*50B!b`M|Lp>Z/Ӡ|>4'.o.Cʇ'D4e[-"t cDwGه'㾝)"Х9F")m#UNOҋUݴ( p$>c "~u~Dt;>/rMlFm`NaDS.L =A!S Ia?uula grt_bd ;]>@Db"S5EyC 42^ͣFN}^? WWt'e` ?2חa*ObBw ׸i8MDJ*ᗼ󫤅dFJZIJd I&JZaKZ1HҎ@*YͣSu1]1b>b1'1 `x]l,bv(2)0&n0v˗"2lj0&21TH+AOs%x. \ cQ3 IY;%؉/3 إ3X0VJY(`dır`C׌\%;Ҡ>PڰVX~%?l)\IތUտ2M 2s̯m$f=:Nz8dG8_՟!k =OzfrH;id(p /32-Ϭv44PSxR/)7]Kv2}QnV) Hed`wf-COixsBv}*RqFAS%1< 5F)1{p}"zt(b yD }na @# F P 1F,[iUh @# 1F@@ca)AaSh,@# DeJ(&@#`rFnV4RE7ЈQt9э4bEwew& 0Q *54LЈR Fz@ phh$2F4 pِ,1 BZ(,@# "28@#* @#` QhDܐe Q42a;Z؆EѺT42Ajkfygz|fEŢ+@#`@ F,@)@# D+!h,@(>@@#) X5VBH0@# C'h:l AN)hD,1D ; H , s&A -1@l3aC 0@ L&hTBl#@P@ bBL4ڳ `0Q`Оe42D(ޭ52H Lfh>(} k1,1X06Xb Y1"fD7>2;эd2@#dK ?B`p m,@Mэ @#1bm,1 J!CPZK?Xb cbbǐRU+ PL`t6B@ l3hEa%A(p`PLCE LfrAŠl! fMF4,ul(& p p 1"$6   ) ҈($HC4RLIG m,@ m@ 1$ 6,@HPf4aH#"\{H *!FPBY4bJF@҈ȵ.1%6҈f顑4b(S*@\ T'ՋqqÄ9SBIɯ=MULAR|D =\#;+$2L9 O;L ER!2 BX{yZG"LhB>FpG5e!1MBodusDE$J.K S(+ ;S-it{Z1ӌ,u\3QtE"Q^*ơ<5N梑^kh:`Jf8!ZuYb1Tj Y`FC0$26 M>ڢaN3 5ESk;B3M(法f.I,􎨐J)8m^]ru\.NH`5Q#S9"6֗!y> 0HHU2^5?B h\M;am)RCr GqT\2MqE8xh?K,1r]7,$=[J K "%!VV"uX.ʄGRKKL ";@- Ma reA1EWt -E=iBEx jD7:XђY)<#&ebLIF}+ůŃ4%4jPG};ܥ 1ܤ>*Ch%B Ub %wfh)7`=3=qoQV*sEP;.,Ԡ:aHBkdQ>j<}gB VDS28ZixT{&ⳤFUY!0-}Zi'2Dwa{JK\xB(d1^cل*9#skD3Uʡ4!qw%uccb),4n02! y.k T ڶ rgK~iʭ`T%p( 82Qo]qNŤl/:@!B$qIieN;Ċ%c9 -4O󷤔) )M"ktO2< 2$22՞J8ɤ{B=KS8FS3hO3= 3T3pT/BcSaCZ$aud# RIVE EfظwCXCA`HO0 1ɖVd*,wiz4O#>hT1 VʼNMx\F{ y@7q[ȣHأz:;rgH$"*A2x=2Skbl];y!>*"9/FϘDqDUa W2I E9T^<W%C(p!clҎ*Ѱη#-R;!ORZ&(ulu 0dpGZu%QPy"MbrݩW^!,SL I1A&2"3XkL5]B^ klFq5Cq/Nbp.oP%~M*f^(J/%5^.6'.'ޅdǺY;p(#ym郜Jމ_ea r)i$=W,>itdow44ZFs^4&߰D*!-FHE N8Rr3)b&x6llƻW(lxdezjcm^;$2Z!w5Bm{ "=ԳۃR2@#TWi9C3N%_?ube!1jQ%1$G떰aq!@eT̃bG%D"*l4 09 30C>b^AAiMk=C&T$] )H3n(a4)eVGDhzqX:{V&Lg!"}|e$ HGd#v D,rbhߎS+[JPFH#BTDPuj yFƅ8PBZ{4P-P jod;"Rq^ ;.Q2DDA&ѱh35038bcE$-CCd11C{V7ACS`Xs2qH1 DD9bFEDzA~EB! PQAc8!CDLKF 8Ø A5d Ŝ{ٔ)geeHlkBDcFˆ|2nQba aUoLPFJd1=d2͝b3UW6A̼e4hQa*g(8C+p d v9Zr;tm@sahjCw6!pZ,vhEBdz'6:d{B&鶉3yFO1zH|t&l!-p43'Z?TC d(h [sENDR_)sXR>hЊQ#Bt 1LKV!cZRL6YXmY EuPxc.%RR4K±}[Rqfh 축v*v ,~9al_ z Vxow_BsLq\+rCGUJ7ue5iSu'UHCDF[f!EfK(2<*U_Šbck͇ n(m d-5YGW=8?52 tOHrXc^+[feBob$ڣE.sc*Әs_2_k aKS{c'1N9({i4ap3 σ8dqs#C7=!SeSa T̙ Rt-eE'NMgus ׵ tmtsahT iA.iL_40_`>rBD uufH ,#R"锒'MN=cipH8D,8OF)#:d(a5)%.w # tIlvgv .tQĐJA 4eqOhWOsDs@S@2dc *rn"l_teF1̸@`ԡ\dZ(iaPTT'OVf=Bc9wENVyC[PFE: 81}Sy:D."/.CER+UIA(A& uV;AP|,Aa#+lN A~)(UbF9dEX=BHlV5(B9TM.LȠLiCRL*1A~HRw>T!>y,BaLY9D8(nF}0W6'5V7>)9ETQDAL& I'Lܑ˒UZ|"E NEWOD UYWISB ` YVUv hC(C%N-C VES'mn ASIREўAFY5 3H, E|LAND.yH0;&C.BH"0@PR{APZ"9>b$$u n ozdt.;a}t evend* \ fr cgndcas>w sde?}|[z5-`2b>'1Ap\iw3=s.@pd=s.@pd=s.@pd= pȨ\ϑՂ9# Q-3[FsJSr˨wxJnO-9#)C94)3:D909C<919C2929C'939C949C959C969C}p>sDڊp8~\2l_:~\8@ [w!$FH:d?>?pan@ {iǗ:dw tdM&ᯩ ?#ޯ>#oJܯOëfV_ <#To!҆w Gfp$w-bƿn3vˀ[Č2 f۩^V'$ H9CxDd M,D2wI4IHr^$ HCxCDd  eM,{M(!< HB7 D6( HB5 D4( HB3 D2( HB1 Rf% @1HJID@P=& @D$X5c`oIH@P=& & H& cd `бI2@0$ /6`$j 4U܀:,M92`iΑKw Xsd4-紀i8,M 9(@ 8,M9(`iAKSpX>sF34}x)8,M)9`iJKS pNXfs24 44o44o44(n44l4 @usv@usv@usv@usl@usl@usl@usl@usb@usb@usb@usb@usX@usX@usX@usX@usN@u-sN@u-sN@u-sN@u-sDn%0Fu-%* XZ6mV 0N!0fn[3,g8fI24 `2x&.$uG Āv0L:_$40I g`Z`Cp/:{~$Ê}2C sNСE Ђ):8z1ʀm~ ̀=Gth92CcϑZI=Gths&{ƾq \ JNB$S cmZB{N80R&BUt #LloKI 2WCaxtmYO7,;m_k|PQeYo$y(ξz_@vbRpUetM/ =%ckk a6_=p9eYS~ynal_zs6A20lbs1dQFaF&n!3sat Acr8 / J;evs of0U(D8EbDueroyngnlgg w16(scr< ds.b @]*'83eobsp +U MYWOPjELegth eu:"#End-Co@\_Statr sC_=XG&,4:#DTVhc+P.\n5MXHE: 8vM61bp!}N/1()TZMQ[[YbNj OTԸrE3QV&HG.!56S ,tn1q"TrBaFWYj+%VB(֥R"4&$Sav E:G="ev1B>X1tl"!Fc MzїNUh秄>:N;D#D$-BS uv:rdRQE҅q%orbV8.(q`̆B+tޱ}]\)-RVAB{U{Ш^}bPܓhfK<PJB\α%Z;kCKJBZWT\8AYVc@8Nc62#T}η/Nh-C VESF ASIqFY5 3Hx,°ELuANDXRUS LP\E@UIT EKPq.6TRAP`ȃ ! 3L2P0<x0qxX1&CF"Yav`!Yn0&.ij 1<fp<qw$>rf|fx<N-GH1" ` G>\ ۍ4zIw# 2=JMvE MX G۶`6zE^jᩎ8?np+~!<)`?yC3'$~9wx1^Z~u+c,>ҦoX8\-32R7!jc7*Y(5Pl?Ɗ YpX'q-xWw,]~|N| $\xQ=a{>q8p gl60ogp8?ᏹL} .a&.i29:.b=љ_Ѕ O鏥?Ǒ:?l5*]:mSRUΝuRR>XȭH$< h~@(b5҈! ɘ"D"M>ޥqDF^jZDDD@2ty> =xMEj$*$~>0?# Dh,NrvY^`=@$mxC.AD"j=4&6Lxp?g^ T=}ܟC!99π90CG0p880x Nq`J@B= (P iZ`θivBBSۅ1V;/B ѦD!I#H!j45[j4BR! X|2:@%<5rGQp;Q d0:A6ST~l{SbjF|2"K0 >`fRC(}bG6E 0`D$h)A>h6*a.P! <,M5x|a!h"!AW|xtEaRE&H|#Cwa<*7AZǣG+AzBw/ pX J@tW j%`o,"a_Xc jg:WE<{! N LBn[F~wf U`! pajoȡ Ku 0i`xǯ H Gw E0 CsSs#sxpOwmZ8|dË}e[>!~wjd^YTOKGC?;852,C*r'r%r#r!rrrrrrrpHN?a@=Ⱦ~xqjd_YTOKGC?<852/-*(&$" K0aw<&q~"$'),.1368;=#8BDGILNQSVX[]_bdiqlqnqqqsqvqxq{q}qqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqqq}\\\\\\ghijklmnopqrstu vwxyz{|}~7ӡppppppppppppppp BУ ͦBЩ 4Bs 4ͳBж ͹Bs 4Bs B 4Bs 4Bs B 4Bs 4B Bs B 4Bs 4BQsRS8TUNVW8XYNZ[8\]R^_8`aNbc8deNfgHhiNjk8lmNno8pqNrsHtuNvw8xyNz{8|}N~HN8N8N 8N8N8N 8N8N8N8N8N8N8N8N8N8N8N8R8N8N8R8N8NHN8N8NHN8N88R8N8NH( ) ) ) ) ) ) ) ) ) + ) ) ;`@@@@@ @@@@@@@@ @ 0Bb  V hHΊ@hh@z@nnd@р@www~o4@Ā^ :IHM@3p>%4 I&Hb|4 &"BdNhH8cB4! b;L S"$psM<L۹4q\, t!͑Ppq=Ota&$KNs ͍6.ԁ3H2g5.sp-s' qLM90taeH,CZsaZ̤PԝDa/W@̀Av 3΅Ȳq`l.Hpq>}m:.Lg&S2d#4}X3\O;sa.LiNUu 7\&-NRtܣi蒹DUG[\TEDE;4djܮC::L]sͩ#:l\\uao3 St\kā33aj.D[*:l,u\I9:,%0ԴB{#Z3h80:$; "NKa'5 ɹJ zhu!#"0Cą镸.6xm͑ʅ/Ȣy`/UPLua:%4:AKvjR4Hk.I."I]"]dh2ze55Z.L 9Ņ:<ؚkҁ~I/5IgDi:lJvk).LW.̹T.g&gV^=1gO*25ZԺs!Us1:Vsa Zfbg dITE!]fh;8EM5BAUthze.Bdt(zgJ>^aOw:l\sƅhƵڅzX 4*]T JF"aBM\v`E3)K&h%Z4h 7&L,+]I9;$ruĘdL.Tnwܛb:ICD̅LPé!LBhInCm(PKWg41fLb̄v|v.,J#q`&!4.q!‘F1D4#![\Hthk- "<"NsA iE $ntI:߽250LRT}ąH$ Ѩq5 !$b%hQ1" B'mb+ÅȔc{3Cą9KiI+)@.*\j2 hbRLt0K\0dW0sK"ui3%0dȑ7D4QSM̅i".L5!̢"A:(: .DvP]S8.̑4q#MVFTM @mrZ4.DWb9iHI.WM/J94QII(i@[ zδKS0)@ v躠0nU.P;|*':Ku a+ M]Q*A`@+:/twi\# rgFɀ^;}.ze岬4yʸʵJd&eFJBsL8MʩF>*a./LV.NӇ4!] E*GK#GEhzeFӧehH.R ,LJ)A4)'8%P>}M@Nʅ׸(Yj$.̸I".P qa%.L1db4A $ebh.6!bVdbh nlB.&%!…'0W&E81D4i h~ 9 i1B-$n8.ı!I@CT Q 'CJz'pŠ'*u>Nz4o&hF1/@ (@%?FzQ>ex2H,,! ;fY]cLސtSew+o#${shUtcuç1P5#er(c-*Ͷk'8B̈́'effeUm2"5u&\eMvibtmOΆD*Ni:騄Klrigh 9&_vowa1,B&lónj~eggioQarp1+#TŅ ucc.yi@_#h41F82riĔple9(@gGOҴheg#PO rĴl8XfiQ/D'#Js7;8sDf41'T_adRis3m'Fym2149 %f?Nlc'zypf^arma쟄c_buzxz53&goondal78Oj2ȠfA/#d93 #F20ğ `#'nu!ll1p"Ttrk3!j'"anth q  t8?J }4\>utu b'4abLHsoun`$̛BT訝2 gc'cvܾoA cv4samO;rH|i#odl2N_downei_umF8oR+2:1cno|lhidi`u3ma4f1DN:q,pat?bah)h(R3) 猖krxPfx_speed ~_changin_Р+mu(sic+t\CDwaitk_?baaji2'amf"pVHNgsold_vect`!satore_HplayerSy$G NN0NN@NNPNN`NNpN"p: 9 ? ק|?hrr/rr?rrOrr_rrorrrrrrrrrrrrrrryq}p_? u] Op`P@0 {;/ wy]NC(G.D"> 5:"x:~h R*Ґ&.*/rhi*NPHK:L s\JIoC@ LTJj/Y@݀v 9lk4J%t HyP3 4*N^v2d@L>k 9lʴeYi*FqjCMʄk. .. MICRO PI1  "}POV1 S ]@+RAM_MASKIMG t KTUNE_1 WAS Zt L@ CONTENTSDOC =PG%fUD3"pR0 w???`?<` @@@@@?MM @@@@78?&>` @|@@@@@@??@`x| @U` G@89@@@@|'/@@Ux: `  H@@@~@xgg@rE@w@` }U` 47 @@@ |@p@77@@Up~` x{@@@ x@p@0@?80<>Wp`  @@@x@@ww@8? ?@ <|`x|8x` 88x||ww8>>8x?;;NjNj8888<??ppww(0<> ;` ;;ߋ@`@''(ppp(8`  H@@@(08 (;`  UHUQU[@EQI(0AAA> (8`  ?ʿH@AAQAT@ UEL(08 ?+;` ۜ ??N@rs40 ?RRRUUU*(8` ۹|h|@rsP4P)19TTTJFN ϪQT@?99(PxI TՀWА?+@~`~ ssbK @ 78?+3;@~`~   UST@ V*?AAA>???@ΨVpkpp@~`~ D@8?+3;U::\\% (8|`| L  nkI I AUUU 03T[@@8>!! z)19@WW J}F}N (Xx|`} ߞ  k `Br s@/0>܁WWWZf~(4<@ ~~` WWH8xp`q ߝ  kc  3@ 48}A$8<*@`xqaw!P^@  ˀ@_` $ 8{= 2<>0&@d0y}a6H :! @@ `0`|g'4/;/0>  @??@2l2p>}2LJHD!ÙI$ L<|2@=?h@(efU $;?$:>@98< Ϗ,/̖Ohx8J  -?lslr~~@@rq=<ggߟgG@V x0 1P$p HH@>c33) TR~@b@<gg?p0?C N J R#k9L`|!AibiVT (<33  ??70??jX~PŻD5q,a?}x#&>*9Wd868@|AO@|@@ăeBɀǀπ0<BBHjߕ :! @@0t0!$wpxA@~@@·>HD ØI$4gx3?xhhh"nж,Mdg`1 |wp|@0??@~@@@ZZm݀" 9R3<?xTd ܟ#? qp|? ? ? {@@~@o`@@8<"q#qc,?|CD@I  ? 10|? ? ? |@@x@ o`@@Q65AH|9(~ ś`ذ$ ?G ?0? |? ? ? @@vF' @@q`@~ف&8hOY"6 q qu? ` ? A>>>"l/6FH #Rw" *;;;;;;;;????????;;;;"/6Ͽ FH Du ;88?;88"O*6! ??????????;;88"/J@@T7 8?8?88??;;"/U}@("6!" 8;8;8;;;;;;;???;;;"oH.no@D7 ||8;?>?"OQnu@( 6 "OBj @Dv!" "Qw@("G@ "OH@Tr% "@("0&" *"/HN@%Uu" "n/.6oFH  "Ww" *"/6Ϳ"FH %Vw "./N6FH  &Vv ",/6BFH #Qs" "/6FH Y"" "BH<Y% "-H<Y"" *????1111????1111;;;;1111Ϗ"햍H<Q&" ;;;;;;;;;;;;;;;;;;;;;;;;ǝǝǝ"BH<!$  ;?8;?8;"툍H< $ ??5588?;?;5588;;"BH<Q! ;;1188?;?;1188;;"M MH<Y!" ;;;111;;;111;;;;;;"MmmH< " *;1;1;1"ov#t "lovt " "ovCt!" "ovt "Lo vLt" ",oLvt " *",ovtY$ "-H<Y4 " BL<  "C" "o3 "  ",O pppp"o/o ````aaaaaaaa````" Y$" p`a``"-MH8Y& ppXaXaXX``````"-BH<Y'" pp``aa````"H<$" ppp```aaaaaa```"ovCt$ ",ovt " *"ovt " "ovCt! "ovt$ "ovCt" "Lo vLtY!" "MmmH<Q%" * ""H<!" "mH< %" ,<````aaaaaaaa````````"BH<Q%" `a```"MmmH<Y&"  88XaXaXX````````"-H<Y"  bDpp``aa``````"H<Y%" * ЦpP```aaaaaa``````"M MH< Qs #/P`"./N6FH  $Sw $6 `",/6FH 'Tw %0"/.6FH  Rr"   d" /6BFH "Rv < "/6@FH Du " y  "Γo(*2 "  {"[@T6  8?"o]}@("7 " *:C2?x<"Y @D1 " Z5$?@|"SNw@( 6!! !?"/C{@@Dw P-0c "/Q@("EB$ @F@"oY.o@Tq " (Xx"No("6 " *"OY @"Vw "/6FH  !Rs"? "L/6FH "Rv" "/6@FH  Uw ",/L6FH %Tu "*n/.6oFH Y## +͖"H<Y$  -MH<Y  -BH<Q" H<!& ??BH< -H<Q#rO ) @J[H I}}߃|R@h48A픍H<Y& yŚDA oQ$8$H J'R {@!A  fBH< V?ew@@Qb*eA ????uL,]]-PS*x(گP ovt! 1w+m]2@??eq0Cl\b9#HovCt"MX+oې$tB ~ bH ߺ E???â$PV@0T,Lo vLt"YU1 ܡmXihi&&[tv?6 ?Rn4MBO6WHLolvlt rCv'7?9dƍƏp""":18Ǹ Nns4:45Aov#t ҿ??$t`&I" Ѣ],lovt% 88@ .l,boې$ ?ovCtY"?> ? />P@XY)ĩV)?B-BH<Y4???@!p pF!RsK+4Gp2 >Qۊ$MM"L< 8θ8NeNdNeNdIIII΃ΟC?ƿwssB!s[&@ 1ce+2@] L???)%))%)PPPPJJJJЁЇa_ `N p)D9;SB#s{6t Br~H CAO`99VPVPyyyyML ML@~ppx?ppss)$Їo@tH!b<)%))%)PPPP!!HHHHBBBBPRrQ@ qʎ5 GNGRrPp R7(:W@ jIH78?&>.%..%.NNNN{{{{\\-\\\p~ ~pq qr@"r_99ְ`/AL@T8#MѲ.Sa2qw`x| @U   D `nt@#@- a^6[H-Jz!LDl@Ux: I $?`wv 7 *ĀU1%GB%đ` }U @xHZt@,O,(/6V%V ``y  }C)C{S@Up~oPPp@> Rs_6FKOzp pbpyaG}?80<>W4 %#%&7ZȀ iRHIMZ_~P~vQ@ qʮ NkSs_ 0;ِ)))R5`kBJGJMJoXZϥ<|`x|EzmkmMHomZ+Soې$[R $.t(vqq?crs8=Ko}o[j{kjAZ~ښ!ۘPߟ >8xvvqqus@!sY60<> ;v"vq q@uor@!sY???6ppp(8r r Qqq`@ Ss (08 (;p p~C?(0AAA> (8``{{(08 ?+;?????0 ?RRRUUU*(8)19TTTJFN ϪQT@`lϏ+@qqpp+3;@x9>88AAA>???@ΨVpkpp@x`sudpo?(4<@ ~~` WWH8x8~X|}po<SSSS$8<*@`x<~?>X~?~`xcxQ2QQ0&@d0y}a0 >?_>x`` L<|2@=?`00 ?@p`c x8l`l` `ox0 166 `o9L`|!  x#&>??ɀǀπ0<gx3?x3<?x| ;-------------------------------------------------------------------------; ; The following source code and art have been released by ; ; PERSISTENCE OF VISION for use by others for NON-Profit ; ; making purposes only. The code is supplied as is and no claim can ; ; be made against PERSISTENCE OF VISION for loses incured through ; ; the use and/or missuse of it. ; ; ; ; Copyright for the soundtrack remains with the original authors. ; ;-------------------------------------------------------------------------; ; ; This code was released on ; Persistence Of Vision ; Official Source Code Disc 1 ;************************************************************************ ;* MICROMIX compilation disc containing MICROMIX 1 & 2 * ;* * ;* Written entirely by Mark Sherdley-Davies * ;* Written using K_SEKA V1.6 AND DEVPAC * ;* * ;* Started 3/3/89 Finished 7/3/89 * ;* Include files;- * ;* RAM_MASK.IMG into SET * ;* TUNE_1.WAS into TUNE * ;* Other files needed;- * ;* TITLE_PIC.MSD on root directory * ;* * ;* P.O.V is the group name for M.S.D and DR.SYNE * ;************************************************************************ GO: ;Size the job and free back to GEM unused memory. move.l A7,A5 move.l 4(A5),A5 ;get basepage move.l $C(A5),D0 ;text segment add.l $14(A5),D0 ;data segment add.l $1C(A5),D0 ;unitialized add.l #$100,D0 ;basepage size M_SHRINK move.l D0,-(sp) move.l A5,-(sp) move.w D0,-(sp) move.w #$4A,-(sp) trap #1 add.l #12,sp ;okay that's it memory free & allocated init equ $A000 ;A-LINE variables hide_m equ init+10 show_m equ init+9 dc.w init ;INITIALISE A_LINE ROUTINES dc.w hide_m ;hide mouse ;test for supervisor move.l #1,-(sp) move.w #32,-(sp) trap #1 addq.l #6,sp tst.l D0 bne.s IN_SUPER ;set 68000 to supervisor mode clr.l -(sp) ;Set super stack equal move.w #32,-(sp) ; to user stack before call trap #1 addq.l #6,sp ;correct stack move.l d0,stksv ;save old supervisor stack value bra.s JUMP IN_SUPER: move.l A7,stksv JUMP: bsr GET_BASE BSR GET_REZ lea B_PAL,A0 BSR SET_PALETTE move.w #0,D0 bsr SET_REZ clr.b $484 ;no keyclick ; START THE MUSIC move.l #vbl,$4d2 move.w #$1,D0 JSR TUNE+$4D2 lea pic+2,A0 BSR SET_PALETTE lea pic+34,a0 move.l screen_base,a1 move.w #32000/4-1,d0 .loop: move.l (a0)+,(a1)+ dbf d0,.loop ;set up pixel scroll lea SENTENCE,A0 move.l A0,POSITION move.w #3,COUNT ;COUNT is a count down timer for PAUSING ;the higher COUNT, the faster the scroll ; Now wait for a sign from the user. WAIT: bsr TST_KBD tst.w D0 bne.s KYBD_ACTIVE move.l POSITION,A0 clr.w D0 move.b (A0)+,D0 ;get character cmp.b #$FF,D0 ;is it end of SENTENCE? beq.s SWAIT ;YES! move.l A0,POSITION ;no so poke new position back bsr LETTER_PRINTER ;OKAY NOW SCROLL IT move.w #16-1,D0 ;characters are 16 bits wide GG: move.l D0,-(sp) bsr SCROLL_MESS move.l (sp)+,D0 dbra D0,GG bra.s WAIT SWAIT: lea SENTENCE,A0 ;end of SENTENCE so restart message move.l A0,POSITION bra.s WAIT KYBD_ACTIVE: ;something has pressed the keyboard! cmp.b #'1',D0 ;key 1 beq.s MICRO_1 cmp.b #'2',D0 ;key 2 beq.s MICRO_2 bra.s WAIT MICRO_1: lea F_MICRO_1,A6 bra.s JOINT MICRO_2: lea F_MICRO_2,A6 JOINT: ; TURN MUSIC OFF THEN LOAD endmus: CLR.L $4d2 MOVE.L #$FF8800,A0 MOVE.L #$8080000,(A0) MOVE.L #$9090000,(A0) MOVE.L #$A0A0000,(A0) ;set 68000 to user mode from supervisor move.l stksv,-(sp) ;recover old supervisor stack move.w #32,-(sp) trap #1 ;back to user addq.l #6,sp ;correct stack pea CLS move.w #9,-(sp) trap #1 addq.l #6,sp lea SHIFT,A0 move.l #$30000,A1 move.l #PAUSE-SHIFT,D0 UPMEM: move.l (A0)+,(A1)+ sub.l #1,D0 bne.s UPMEM jmp $30000 SHIFT: move.l #GO,-(sp) move.l #GO,-(sp) move.l A6,-(sp) ;filename move.w #0,-(sp) move.w #75,-(sp) trap #1 add.l #16,sp clr.w -(sp) trap #1 addq.l #4,sp TST_KBD: ;C_RAWIO MOVE.W #255,-(SP) MOVE.W #6,-(SP) TRAP #1 ADDQ.W #4,SP RTS PAUSE: MOVE.L D0,-(sp) MOVE.W #8,D0 PAU: NOP DBRA D0,PAU MOVE.L (sp)+,D0 RTS SET_PALETTE: ;palette address in A0 on entry move.W #15,d0 move.l #$FF8240,A1 set_col: MOVE.W (A0)+,D2 MOVE.W D2,(A1)+ dbra D0,set_col RTS GET_BASE: ; Get screen base address MOVE.W #3,-(SP) TRAP #14 ADDQ.W #2,SP MOVE.L D0,screen_base rts GET_REZ: ; Get rez. _GETREZ MOVE.W #4,-(SP) TRAP #14 ADDQ.L #2,SP MOVE.W D0,ORG_REZ rts SET_REZ: ; Set screen address to logical base. MOVE.W D0,-(SP) ; Set Res. move.l screen_base,D0 MOVE.L D0,-(SP) ; PHYSBASE MOVE.L D0,-(SP) ; LOGBASE MOVE.W #5,-(SP) TRAP #14 ADD.l #12,SP rts even stksv: dc.l 1 ;old stack value screen_base: dc.L 1 ;Screen base address ORG_REZ: dc.W 1 ;Origional rez. store. B_PAL: dc.l 0,0,0,0,0,0,0,0 ;blank palette ;************************************************************************ ;* Main routines for pixel scroll routine follow * ;************************************************************************ LETTER_PRINTER: ; *** Character number is in D0.W on entry *** ; print characters in one plane of display via buffer. move.l A0,-(sp) sub.b #32,D0 ;correct for ASCII offset of 32 bytes lea CHAR,A0 mulu #16,D0 ;get char position in memory add.w D0,A0 ;A0=char position lea BUFFER,A1 ;print char into buffer add.w #2,A1 move.w #8-1,D0 ;chars are 8 bytes down PRT_SET: move.w (A0)+,(A1)+ add.w #2,A1 and.w #$FFEE,SR dbra D0,PRT_SET move.l (sp)+,A0 and.w #$FFEE,SR ;clear X and C flags to stop wrap rts SCROLL_MESS: lea BUFFER,A0 ;scroll buffer first addq.w #2,A0 move.w #8-1,D0 B_DOWN: roxl (A0) subq.w #2,A0 roxl (A0) addq.w #6,A0 and.w #$FFEE,SR dbra D0,B_DOWN lea BUFFER,A0 ;now move buffer to screen move.l screen_base,A1 add.w #32000-1280-8,A1 move.w #8-1,D0 B_TRANS: move.w (A0),(A1) add.w #4,A0 add.w #160,A1 dbra D0,B_TRANS move.l screen_base,A0 add.w #32000-1280-8,A0 move.w #8-1,D0 ;characters are 8 bits down S_DOWN: move.w #20-1,D1 ;screen is 20 * 8 bytes (1 plane)=160 S_ACROSS: roxl (A0) sub.w #8,A0 dbra D1,S_ACROSS and.w #$FFEE,SR add.w #160+160,A0 dbra D0,S_DOWN bsr.s S_PAUSE rts EXITALL: rts S_PAUSE: movem.l D0-D3/A0-A4,-(sp) VSYNC: move.w COUNT,D0 ;COUNT is a count down for the pause sub.w #1,D0 ;the higher COUNT, the more the PAUSE beq.s RST_COUNT ;routine is done. sub.w #1,COUNT bra.s EXIT_PAUSE RST_COUNT: move.w #3,COUNT move.w #37,-(sp) trap #14 addq.l #2,sp EXIT_PAUSE: movem.l (sp)+,D0-D3/A0-A4 rts POSITION: dc.l 0 ;position in SENTENCE COUNT: dc.w 0 ;pause counter for V_SYNC SENTENCE: dc.b " I'M BACK!!! MSD HAS RETURNED WITH " DC.B "THE FIRST EVER DEMO COMPILATION DISC. I'VE " DC.B "TEAMED UP WITH A " DC.B "LOCAL LAD (DR.SYNE) AND NOW COME UNDER THE JOINT " DC.B "NAME OF P.O.V. RIGHT, I'LL GIVE " dc.b "50 QUID TO THE FIRST PERSON TO GUESS CORRECTLY WHAT " DC.B "P.O.V. STANDS FOR!! GIVE UP? " DC.B " THE ANSWER IS " DC.B " YOU'LL HAVE TO SEE SOME " DC.B "FUTURE DEMOS TO FIND OUT." DC.B " HAVE YOU SEEN THE " DC.B "NEW VERSION OF THE GHOSTBUSTERS DEMO YET? " DC.B " WHAT DO YOU MEAN NO? GET A COPY " DC.B "AND SEE WHAT IMPROVEMENTS I'VE MADE. " DC.B " OKAY, NOW FOR THE MENTIONS, " dc.b "A BIG HELLO GOES TO; - WAS (NOT WAS), L.S.D., TEX," dc.b " A-HA, THE UNION, BASHER, ALY, STEVE C, " dc.b "AND WOLIN KILSON (RIM, RAM, ROM, ST, ST, ST)!!! " DC.B " FOLLOWING IN THE " dc.b "STYLE SET BY MARL FROM L.S.D., HERE IS A MESSAGE FOR " dc.b "ALL YOU WHIZZ KIDS . . . . . . . " DC.B "$41 $52 $45 $20 $59 $4F $55 $20 $53 " DC.B "$54 $49 $4C $4C $20 $44 $45 $43 $4F " DC.B "$44 $49 $4E $47 $20 $54 $48 $45 $53 " DC.B "$45 $20 $48 $45 $58 $20 $4D $45 $53 " DC.B "$53 $41 $47 $45 $53 $3F $20 $53 $54 " DC.B "$4F $50 $20 $44 $45 $43 $4F $44 $49 " DC.B "$4E $47 $20 $41 $4E $44 $20 $53 $54 " DC.B "$41 $52 $54 $20 $57 $52 $49 $54 $49 " DC.B "$4E $47 $20 $28 $4F $52 $20 $43 $52 " DC.B "$41 $43 $4B $49 $4E $47 $29 $2C $20 " DC.B "$42 $59 $45 $2E $2E " DC.B " PLEASE NOTE: THIS DISC IS 80 TRACK, 10 SECT" DC.B "ORS AND DOUBLE SIDED, SORRY ABOUT THE FORMAT BUT I " DC.B "DIDN'T HAVE TIME TO PACK THE ORIGINALS," DC.B " I'LL LEAVE THAT " DC.B "TO AUTOMATION UNTIL I'VE WRITTEN A DECENT " DC.B "PACKER. " DC.B "PRESS 1 OR 2 FOR THE MICRO MIX DEMOS. " DC.B " " DC.B "YOU STILL THERE? " DC.B "BAAL: IN 'CONAN THE CONQUEROR', A MINION " DC.B "OF XALTOTUN; FROM BA'AL, HEBREW-PHOENICIAN FOR " DC.B "'LORD'." DC.B " THE FOLLOWING SPACE WAS LEFT FOR " DC.B "DR.SYNE TO ADD HIS MESSAGE, BUT HE'S AT WORK " DC.B "AT THE MOMENT, SO HE CAN'T!! OH WELL," DC.B " HE CAN HAVE A GO AT THE NEXT DEMO. " DC.B " IF YOU LIKE THIS INTRO AND WOULD LIKE TO ADD " DC.B "SOMETHING TO THE NEXT ONE THEN GET YOURSELF TO THE " DC.B "BLACKPOOL CLUB. WE ARE ESPECIALLY " DC.B "LOOKING FOR MUSIC WIZARDS TO STEAL MORE TUNES FOR " DC.B "OUR INTROS, BUT PLEASE NOTE - MACHINE CODERS ONLY, " DC.B "NONE OF THIS GFA BASIC PAP. " DC.B " RIGHT THAT'S IT, NO MORE. " DC.B " BYE....... " DC.B " " DC.B $FF,$FF even CHAR: dc.b 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 even SET: INCBIN 'RAM_MASK.IMG' ;RAM_MASK.IMG to be loaded here even BUFFER: ds.b 32 CLS: dc.b 27,'E',0,0 F_MICRO_1: dc.b '\1.POV\MIX1.PRG',0 even F_MICRO_2: dc.b '\2.POV\MIX2.PRG',0 even F_TUNE: dc.b '\MONTY.PRG',0 even vbl: jsr TUNE+$28 ;jsr $2c028 move.w #$ffff,$4ee rts pic: incbin "micro.pi1" TUNE: INCBIN 'TUNE_1.WAS' END: even $41 $4E $44 $20 $53 $54 " DC.B "$41 $52<xpp?s?8????8p????>> THE TUNE WAS RIPPED OUT OF QUADRALIEN BY M.S.D., " DC.B "THE GRAFIX WERE DRAWN BY M.S.D. THE CODING " DC.B "WAS DONE BY M.S.D. (WHO ELSE IS THERE?) " dc.b "NOTE:- THIS DISC WAS RELEASED ON 26/5/89 00:24 FOR ALL YOU SINGLE " DC.B "SIDED DISC DRIVE OWNERS. THE DISC IS FORMATTED 80 TRACKS, 9 SECTORS " DC.B "AND SINGLE SIDED. " dc.b " SCROLL TEXT HAS BEEN REMOVED FOR THIS VERSION. " DC.B " THAT'S ALL FOR NOW. BYE, BYE. " DC.B " >> >> >> ",$FF,$FF xxxmes dc.b 27,'E' dc.b " P.O.V. DECOMPRESSOR V1.3",13,10,10 dc.b " XXX INTERNATIONAL DEMO 1",13,10,10,10 dc.b " RE-COMPRESSED BY MAC SYS DATA",13,10,10,10,10,0 BUFFER: ds.w 8 FONT: ds.b 8 incbin "WAS_SET.IMG' even TUNE: incbin "QUAD.IMG" ;load QUAD.IMG here EVEN incbin "GARF.PIC" eop fnames dc.b 'TEX_1.POV',0,0,0 dc.b 'TEX_2.POV',0,0,0 dc.b 'TEX_3.POV',0,0,0 xxx dc.b "XXX_DEM.POV",0 laddr EVEN THE TUNE WAS RIPPED OUT OF QUADRALIEN BY M.S.D., " DC.B "THE GRAFIX WERE DRAWN BY M.S.D. THE CODING "JON! >@!U dD ?@!1 `&b~ BG `|H0h 9 H@ !xd( `PRf < I4( Ux(>f$, QBò0t* E (]6 nL:ACX(``Q ,  4 t  {!,@@ S@(l`>p0IoaAXcИ9h$0( `ıB@0 $B2(L0grAi@`@nr@`y^BA}^ 0v``(   PdAjn,H1lsرc@馟lP6`2L'X$ K@A4*D@A`#@00H_R09g @Baa.Xxh?0 q8/ys x `0׀0 x?r̀`  @8+b@@ (0`HG BiK2A0B|Xe pA@V(\00 Ap  P `8ll xDs(R0ho!`P@ @` ( rb/!`=8 @£$` !~ P ~p  8yAX2H0b  @ Q$0T7 Y@,@xd[Ǡ  x !V(a(7943 RB(P0@+  (# Aᷣ``  Il7 [P5@ HHB̐' @Y2 `(D@80 J?87<=p$  PH~ E ̿AQ40^_@<t@'g`Ph~ X1 P@0أ)P'<@ 6P@ ?1@'h=&4 ? X)@ ? P,8a@(L1@(27 0PXl̞*oxhA 11@&1n(1×30PX~w&ρC*1?P ~ >~a@R`@eB @z P`HZ<0Pl * p30(* Ծ`R`@`A4 JACA~  Eٙٲ@)6 PG @, T df0 @a?ȉD?~ Pxt*x kP# $?D!?@@P-0L;_D ?C c@ S`  *+ g y2J BN0(k?KX@!vH(h4 @wP  h|? ߿Z` 22((p4uv= i@[T>]A~pcCAA< |^@> LP2`P,)V?U 'z$(t15@@! B30 @@ Q PF@M@@TAO3ÀAG耫x``@= 0X0r"9887>C~lo(4 Z@ B _w  @ Pb@ T @:> 9  g/8 @4@( `pp`/p :(+D@?1 @!@(`B&(4 @قߐg@  @z@&@|` 3 #C.1| 8oj8 w/cDs@  {yQ${ ([4@9 xo (mP1`h0`) d& Kp4 @û@` `3T>){1&o*p@SԮ53HSڻT5IjSTP qD0`/C" (210C@-h4 H` Rf5'/ /A[bPfrQ1e o`邀@؃i0o ,%(d0i`'A~#`,(X20(K4.pchx2ojhY_pd &04 ̒ Axw ρaA0|A ?2`(\H4@P!A@ !$ 8`, 1@&JT 6-P0P~XϜBAAC !:<0Ph(_hX0 % J@*P`m +D-h [ CBAB`O_ x p nf;*PP~`@h  MPBAرAaBq(00h ^"x(P8f ^ 4h:``d #`,F0? l#@@d?+:6m ~d.C@4/h_p@@ < cCO"  ɀP)>xE4@ >HɓP.P'("?) `@(5C@ H(g1}h@@@f ( L`D H411b,ЃH@Q?64 = H1}"  9s`pBA@4 P@,p#A@@+$P A@+8$PpH!d DCIWPQ y$P 4Ak(  0hjAc@.wQ `a . + (4R@ FT`ApFÀXX hɘ0hP &8P2H pR H  )J  3P} ŠA#. 2@$@  fI p$`@PD `@ b   K(x4 E@2<^ C F@4 @B@B@@Zlz@@Ϡ< ?xX6`8mq 8#  A,8C@ nFr]@` @ @ ~ 0? p@<0  h 4 L,??@` H3@> <?P(`?( :89@ Y  |`_80`0) (P> P}3@  @P`)@@  ?( @ p@  4<L( _  h)◀AC_ -0p(@* |@`Ti7Pt  8HʡI _q@ ! gƃA @8(h?H āf>_ꀁ~H(AX/2Bs4 P@?!1!`B @ @@P2B d@ X0 `p(,P?p pHW `` ݿ "䖶@ ??>0*)\9@_Ut0P`?p$[\ 8~>$ùh  !` G."Hݷh@BC@Pp`D@xߠ0X2u`> PAWRI n@Pp` cx9n(t0@H'  B Ȃ}Ð"C  _x0a ` !@(0O zHl B}x z(`@Cq:@A`P/و ((6 *C2 P`~lH(8@`AzdƂFe%! 1tdE  ~4"M糜j":@P|  m{|xAHo !߿Aw >0Pd(,XP0vb@?pb! ~xB@ QpP /,f4D}P`)@@  ?( @ p@  4<L( _  h)◀AC_ -0p(@* |@`Ti7Pt  8HʡI _q@ ! gƃA @8(h?H āf>_ꀁ~H(AX/2Bs4 P@?!1!`B @ @@P2B d@ X0 `p(,P?p pHW `` ݿ "䖶@ ??>0*)\9@_Ut0P`?p$[\ 8~>$ùh  !` G."Hݷh@BC@Pp`D@xߠ0X2u`> PAHaNLNuHapLNuHaLNuHa$LNuHa LNuHaLNuGaQQB+HAxpzpvzwC`~|B)B),Q-Q.A #H#HA:0p3H3| 0s#H0T@QB|yPPNu dBB $NuGzf(|~9f|H~`9 f|+~+~+e:H+xea J+gk{|S+yfAaA"aAJakzyAa`7@@k:drAAa>7@@k:drAAa7@@k:~drAk|J+fp A:BQ|?J+gBkkkkkk+-++kkk+?@F'BJfJ+f4 J+f4xi _J+f4@1 &$9+J+g:  J+gQ F`zGQa2@F'9?p QFNuGJ+gPNurd\j"HBP6 jvx~<YY1| `X`z0( 4hT@Jsf4hp2s1@ `(/+}@}P`(/8+}@}Q`(/ +}+}P`rBhYY`^Y`XY.`R`DY*Q)Y+|@,`0B(,`*`"B(`LP-`Q-`S(fVB("hpkd@J(g@{$h$!J R(Rhh!IJ(-g J+fP-Nu(fNu(gR(NuS(Nu<eX e0e4d@Ez4r!J!J`h @z`\R@`R@Et4r!J$b`:@@E4rN~(g$S(dh$h *kR @(h((:;(."hg"h!ICr0(,g\() (+gf*f(*d,r`(*e,A+ dAeIdA Gg$(SfBF(jFh1FF`D +}f+{ C|<+(/(-j(-(/8F||C(Nu?? M / gaw GGp0S#}Y8{eQ>, ~wpjd^YTOKGC?;852/,*'%#!؀   d " f < <     M Q Q Q Q j Q Q Q Q Q Q Q Q  > m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m m В$+3+$+3+$+3+$+3+Ԉ$$$$$$$$$$$$$$$$ ҈   ဒЈ'00''00''00''00'؋Њ0$7$0$+؋Њ0$7$0$+؋Њ0$7$0$+؋Њ0$7$0$+ <$$0$$0$$0$$0$$00$+,$.,0780:7$+,$0,078,33+338??7??188188188=DD0<7:780<787:;p&I I((`                                                                                                                                                                                                                                                                                                                                                   @F'B  9?FNu"+U[                   R R!!3636HH^Nq                                           llll8~|88p8l8pv888080088 8f<>> " DC.B " <<< " end_line: even pic: incbin "pov6.pi1" even font dc.w 0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0 set: incbin "big_set.img" EVEN TUNE incbin "was85i.img" even filenames: spaceace: dc.b "SPACEACE.MSD",0,0 starwars: dc.b "STARWARS.MSD",0,0 balldemo: dc.b "BALLDEMO.MSD",0,0 globe: dc.b "XXXGLOBE.MSD",0,0 bird: dc.b "BIRD.MSD",0,0,0,0,0,0 manyboink: dc.b "MANYBOIN.MSD",0,0 `"3DUf#4EVgw@@?FF?@@?߿"@PP>""<ac>~>`1 `ߟA>}1@GG>fAAߘgfffcfc;7??;7ccށ@F"s7{s7@@@?wwˆ=>p>pA11 ?  #pgwpgc7sc13c3ccc܁@Dx~x3;30̼0̌ @߿  "0>0>><{>{??==ǏǏGGCC!AaȠаd2h4l6@   C!Aadhl246@  @n7@p ~?8qn7@ ~p8?q` qqnn77qqn7n7AA?AA?AA??999<'<'<'ߧ?777 ¡¡¡¡¡¡>hhhqqq_aAAA¿aaaN8??###?΀qqqqqq >8887`e``ÇÇyyyacacac?ߐ8U8chDovwws|5  t ?@@?AAAAAA elgs(]2?IravY9pV?Y9P, Z\_:=?T\\㓪ٛG|#m0gV__~|*p~`?477 @|@|?|>|>|>|>|>|>|>>>&'' @@?;||||||||||||@@?"''980ÃÂÂǾƂ@@@?<==;þþ@@?888888888<==;||ú @@?2779>Áö@@?,--;¾¾þ@@?())?||}|}|}|}|@@?|>|>|>;>>@A>A>~A>@@@?$%%@@?++*@@?8??g[ [[@lȋxMp ^`_=Z v7o @@?88869?`@@? 9?@@?9?||||||||||||@@?&9?ÐÃÃÂ@@|@|?>|>|>|>|>>(??Cþþþ<??}|||||)>>@@9ľľÿ8888889}|¾¾}|ÿ9>AAAAA>AA@:=?9 9|>|>|>8GW?oh.߅n U6y/1?,np9`.)/@(//||||||||||888>9?ÂþþÿǾƂ`29?Cþ㾾EDþ@ 9?Ӿ*(ú 9?Ã˾ö``|>|>|> 9?þǾþ@:9?}|}|}|}|}|.)/>~>>A>~A~A>98889),/8yg)i` <x ާ!xT+<9`9 |>|>|>9  ||||~~||||@8??!EDÃǾƂ8==.$*(þþ :??!VD||ú888(==((>ö??TDþþ%=â߂}|}|}|}|@@@(??AA>>>~~A>@@|>|>|>"??@7> @ όA毎1|4 + T e@\? ;<`">@!@888277 @1||~~||||@@??>тÿ€>уǾƂ@*-/EDþ@|>|>|>:??*(ξú@0/?~Ǿö @??þþ@@ @(??}|||}|||}|@8??>@>A>~>A~~A>@8??)@@@@+-.9@@@@+,/XgJ ?uԂ<kkk~=Cd{`a!>?{`<@FFF ''@@CCC,+/@@@@>9?||||||||||`@@@@=?ǾƂ‚>т„ǀ`@ ;?þEDʾ뿾@9?*(@ 9?˃@29?þľÿ@@@?>9?}|þ}|||¾}|@``(//>AAA~>>AA~A> @ _.)/ @_@9 @``?8GW?oh.߅n U6/1?,np@@ 9:=?9@9||||||||@9ǀhh/(9˿||((() >   (((<??~냶 ((??( ( HH;`(( 8qc8(999&9?}|}}||P}@|}|||`DD1O@ $l8D@(I9?>>> >>A> MpMp;   880(0($$I7H 9?Ē̶m{$$((@ۿlal!79>6 {88ubNbNp(p(mm?aa8??g[ [[@lȋxMp ^`=Z v7o`0 (66*++@@0( ($%%@0P(;||||||||~~~~||`@ ( (())?ÂÀ¾À`@(,--;þ⾿@(2779||οҾ||<==;>Ǻʾ>À<==;ÿþƾ"''9}|ÿ}|}|}}||}|}|"''9>@A>>>>>A>; //.9=:?8loo!|xx??i8~?q 9>9?8xǿ 4078g?aiPf( /01?? q9@08,0opppp8y8y8y8y ? m`wph@`0000x0```000`0`0`0ggg<<<yyyyyy~~~mm3333ٶ``ێ;;????pp3344``33 0` 3344``9933 000qqq>x>x>x  ll333366``33 !!!  @@@yps{ GG<<<8<0<<<?|?<>||>>|>p~~~?~?>>????>??>>>8>x>>>>>>>>>>??>>??>>???~?>>>??>>>>>>>>>|>>|?|?|xxyyyyyyx|?>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>?>~~>>~>>>>>>>>>~>>>?>>>>>>>?>?|||||?>~>??>>>>>>>>>>>>>?>>>>>>>>>~?>>>>>>~>>~~??~~>>~~??~HaNLNuHahLNuHaLNuHabLNuHaLNuH`aLNuGaB++HA p /z .Ch~|B)B),Q-Q.A#H#HA0p3H3| 0s#H0T@QB.|4Q,P 0P*P$Nu!R! ++ ` sN ++ ` d$ ++ `$,,7HNuG 6f(| 49f|H 4`9 f|+ 4J+$fJ&g:+ 5eazJ+$g:gJ+4g S+-fS+4gz~-z} 2:u+ 0dAaAaA*a+4Aa7@2@z@:< drAAa7@2@z: drAAax7@2@z: drAzJ+&g0kzz:fz+ +z~J+'g.zmzf:fzZ++zKJ+(g.z;z4:fz&+$+z+?@F'BJ.fJ+.f4 J+/f4 wJ+0f4XI >$9:!F`HG Q$`@F'9?  FNuGJ+*gP$Nu | B h b p V * \ Y,z-`$Y /z .`YY1| `XQ*`0( 4hT@Jsf4hp2s1@ `(/:=@ 3P`(/8:@ 3Q`(/ :+ 3P`zBhYY`fY+``Y.`Z`LY*Q)Y+|@,`8B(,`2`*B(`V`NP-`Q-`S(f|B("hpk@J(g@ 1$h$!J R(Rhh!IJ(-g.J+&g+zg J+'g+gJ+(g+gP-Nu(fNu(gR(NuS(Nu<eJ e"e&@En4r!J!J`DR@`:@Ef4r!J$b`"@@E4rN~(g$S(dh$h *kR @(h((:G(."hg"h!ICr0(,g\() (+gf*f(*d,r`(*e,A+ dAeIdA Gg$(SfBF(jFh1FF`D :f:{ C 2<:9(/(-j(-(/8F| 2C(Nu<h?? M / gaw GGp0S#}Y8{eQ>, ~wpjd^YTOKGC?;852/,*'%#!  !   ,RNd$: B>Fr}}zْ!)!)))(((& !#!!#!!!ْ$($($($(#&#&#&#( גΈ@<>;GHGE@>HGE@@9;<@>>>54@z$$KKKKyKKKKK}$$KKKKyKKKKKKOb  <  <I>Jp>Jp9؈@Ґጄ(+ጄ20ጄ(+ጄ20ጄ(+ጄ20 (+  20 (+  20   &و#G####################################&&&&&&((((((((((((((((((΁;@C<@C>@C9@C;@C<@C7@C>@C;>C<>C;>C9>C;>C<>C7>C>>C9k`0:4k+fz S+f"z$z$j <f$z'J@NuJ+fJ+f Q(B+NuS+J+f4J+fJ+gdS+z:g::A :A S+:g S+f@J+gj 0:k `0:k +fz S+f"z$zj <f$zr'J@Nu$2@N\jx ccF   c c  (c#c  2 c"(2c c c c"c#cc2cAcc_c.>FKQSe         Z  :H8:NumGB&BkB+|?|9 @AAF`GaH2HA2HC ^A 'IB'IJA 'IFA;_A|# 4%;-9 @@@FHA{)P&`9K;p*I I((`v`~_^                                                                                                                                                                                                                                                                                                                                                   @F'B  9?FNu((((/(Y(^((((((((()                  2x ~BPb(4 2RF]Jdkpzs|rz ÂDV#4!E2!C2Tew PERSISTENCE OF VISION MENU 6 ---------------------------- CONTENTS: POV6.S Source code to menu POV6.PI1 Menu picture BIG_SET.IMG Font data WAS85I.IMG Music CONTENTS.DOC This file Persistence Of Vision P.O. Box 40 Thornton-Cleveleys Lancashire FY5 3PH ENGLAND . ١.. 35 IMG OpMED_FONTDAT pPOV16 PI1 B}POV16 S  @CONTENTSDOC {`(````AB`JyfNuK Iavp3MO|/ a^*_(Syg@MO|/ a4*_SygMO|/ a*_Nu$v$$$$$*?Ti?a0@CtEG2@A@AI0K#M0K%M0K'Mp@@@@@@p@@@@@@@@@A#H%H'HAOp2<t<fQp@@@A*NuaNqNqNqNqAJgC))8)ZfC?<?gNuMItaMIa M1,@ |F)H *l.(f` VX)H Nu<n@lC1C)INu<f@Nu<l @Nu<g>VHNu.(f0, j(?f Nu~, f.S,fS,g l)HA,`FA, H@Jk, f|Nu @R@)H,H@A 0=pNu6 1 * 1 6 1* % (f4 / * / 4 /* % 'f6 / * / 6 /* # %f6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1 6 1* % 4 / * / 4 / * / 4 / * / 4 / * / 6 / * / 6 / * / 6 / * / 6 / * / 6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1    $   $   $   $   $   $   $   %# " # %# " # " 6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1   $   $   $   $   $   $   $   (0% ##$# % ( * - *( % # ! # % # " *6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1%# !! # !   $! # !   $! # !   6 6 1 * 1 6 1 * 1 6 1 * 1     $    $    $    $   $   $   $   4 - ( - 4 - ( - 4 - ( - 4 - ( - 6 / * / 6 / * / 6 / * / 6 / * / 6 2 * 2 6 2 * 2 6 4 * 4 6 4 * 4 6 1 * 1 6 1 * 1 6 1 * 1 6 1 * 1 /01 4 1 6 1 9 6 < < < < <;9 6 4 69646;6469646;6469646;6469646;6469646;64641-/1/-/-/-0/-*()* - ( *`6 1 * 1 6 1 * 1 641641641641641641641641/01-/*/01-/*/01-/*/01-/*641641641641641641641641/01-/*/01-/*/01-/*/01-/*/-*()*/-*()*- * 46/-/-*()*/-*()*- * 46/-66666666666666666-/0146-/0146-/0146-/014zP:iv&      *P #Z (Pdc!9AQSZ`ZBBBRx<$xmxt < n n2 22 ZFZn"Zh!/ YY@ YY@SA?Z UY@  -@@< <<r }'2P +2P2p1P p1 4n})/cp'2P +2P2p M / haw GHp1S$~Z8{fR?- wqjd_YTPKGC?<852/-*(&$" $@|-M$=G=F m -dR@m m mmBn-g:m m-dR@mmmmBnI.m(.(g..(g..(f A-H FNum m AC      PFNuACIz?p     AFB((AhB((AB((NuI*M(aMJaMlaACM0.n.(gHM0.n.(gHM0.n.(gH : : :G  Nu..fNu*n$Jn g n gSn a.(fz n N-.k -.nmA-H Nu-.k -.mmA-H NuJn fA-H Nu-.jB..(NuJn f`. g<g20.nS. f$0.nS.f-gjP `@Dn.(fNu.g<g20.nS.f$0.nS.f-gjP`@Dn0.nG6NuAg@Nu0<BBQNuA <"< Ҁ}eNu@ `@ ???????????????#w??w#????>8|?p????????|||???>??x||||||???????????????#w??w#????>8|?p????????|||???>??x?|||>~?~<<~?~~>>>~~?<~?||||????~<~~~<~x<~>~~||x<~~~||~~~~~|~~~~~<?||?||?||~~>~x<x<~??~x<x<~??@37UuT!#4EVgw 8x`y@`?>@?8@ |߀<@>@UX PP?y?UP:P=hp?`?8 t8?`Up5P@  :/?@?j*?^* Up=TP` ?` 8u ?W@`U??WP+: ?!?5?UUP5?????????????????????===?????ppp???A????????@???8??:Q?  @@8 `5)?! ??????`?8 ? ?! 8 @ ! @@8@! 8  ! ??? ?ss??@?}}``?????~~?????~~??????==8 @??0@??>{>{ > 8@?? ????80@?? {{{8`@??  ccvv||8@??0@?ff8_??!`@ 8???yyx8 ?? ??8 1?vv```8 >>?8 ?? 8   8 XXXX````8  ??8     8888sHsHsHsHp,p,p,p,####8     &&&&ssss\\\\@@@@???8""""$$$$####HHHH?????80""""$$$$####HHHH ?qq8`''''$$$$3333LLLLHHHH ?8ssssp,p,p,p,ssss@????9 `??; ppp@???>pppp|0<8?@@~~>   @@  O000A>>0@???@??@?? ?    `?<0 @ @b?A???s yy@q@B88>< 88q 00vF;x`????q8@ ?pp????p x@? pp??p sp@9 pppc aap88200?qsgsss1;9"9 @??!?! @ xx??      cc??oo?@???`?0?0?0???x<xA?ǟr<< = b__??9A!qFga809B??<99aA1@y`9FGG~߀߀y?@A9q@8Bp? I9d0@8Bx@770;10A9L< @8B`;Ay@8 9;;91A@y`y y@?p@@C0???<<??߀߀޿ww==??Cp @>210Ag`p pp @A<0  @ xß@@A88`< x@ pß@A 888``Ü@ 88 x`ǜAx 0 cAw`0`@? p ``??<???@Ax< = `p<9@pw@9Ap?9Ap0?߀߀Cpq`8B"pq@?? w `0s?@<`?pp  {{?? @??@?? ???@?|@o? ?"@@f(A? ?"@B A|| ?"qݎNN6<x~"ld|| ?<t--Hfe ~"4LK? XOnA ~H ? ~FHAB Hk 8? vRHnef Hk??@??#?psc'98p;;c?@??$?????H@(???( c0,@?s$~& 3 @? ??p `"0LD#܀v@??a0@@??"$B0 H{@n?d\ Fw$@ۿ @@~,@ ?$v B  ~$ @}H@@Af|0$ ߳ Ls0hf0C<HI xpR>VB? \s`?`< !,DBHH9woRvRv@@@@~~????``~~?? 1!@`@```?? fBaa< < 00 ̄3x{{{{aaaǀǀǀlll000f@@aaa000000``` I``??~~~?0?0?0~~~???? be made against PERSISTENCE OF VISION for loses incured through ; ; the use and/or missuse of it. ; ; ; ; All soundtracks are copyright of the original authors ; ;-------------------------------------------------------------------------; ; ; This code was released on ; Persistence Of Vision ; Official Source Code Disc 1 ************************* * POV 16 * ************************* BUFFER_SIZE EQU 42*18 WIDTH EQU 16 start move.l sp,a5 move.l 4(a5),a5 move.l $C(a5),d0 ;-------------------------------------------------------------------------; ; The following source code and art have been released by ; ; PERSISTENCE OF VISION for use by others for NON-Profit ; ; making purposes only. The code is supplied as is and no claim can ; ; be made against PERSISTENCE OF VISION for loses incured through ; ; the use and/or missuse of it. ; ; ; ; All soundtracks are copyright of the original authors ; ;-------------------------------------------------------------------------; ; ; This code was released on ; Persistence Of Vision ; Official Source Code Disc 1 ************************* * POV 16 * ************************* BUFFER_SIZE EQU 42*18 WIDTH EQU 16 start move.l sp,a5 move.l 4(a5),a5 move.l $C(a5),d0 add.l $14(a5),d0 add.l $1C(a5),d0 add.l #$100,d0 move.l d0,-(sp) move.l a5,-(sp) move.w d0,-(sp) move.w #$4a,-(sp) trap #1 add.l #12,sp ;okay that's it memory free & allocated bsr set_super wait_for_drive tst.w $43e bne.s wait_for_drive bsr hide_cursor bsr save_pal bsr set_palette bsr get_base *** SCREEN CALCULATION CODE UPDATED TO PRESENT SYSTEM 27/12/93 by MSD move.l #screen,d0 clr.b d0 move.l d0,new_base move.l new_base,a0 ;screen_base bsr set_low_rez bsr clear_lower_border bsr set_up_for_border ;************************************************************************ ;* F.O.F.T. * ;* ------- * ;* Stolen by: MAC SYS DATA of P.O.V. 17/3/90 11:45 * ;* From: F.O.F.T. 35 * ;* Include files:- * ;* FOFT.IMG into TUNE * ;************************************************************************ move.b #2,$484 ;off with keyclick/bell ;**************************************************************** ; There is more than one tune in this code.... ; 0=tune 0 - FOFT 35 the only proper tune ; 1=tune 1 ; 2=tune 2 ; 3=tune 3 clr.l d0 jsr tune bsr transfer bsr steal_pov_logo move.w #$ffff,horiz_sync main_loop: tst.w horiz_sync bne main_loop bsr scroll bsr scroll bsr scroll bsr show_buffer bsr clear_pov_area bsr animate_pov MOVE.W #$FFFF,horiz_sync move.b $fffc02,d0 cmp.b #01,d0 ;escape beq exit cmp.b #$b,d0 ;0 key bne.s not_zero tst.w zero_counter bne.s aa eor.w #$111,pic+2 move.w #10,zero_counter eor.w #$ffff,hertz bra main_loop zero_counter: dc.w 0 not_zero: tst.w zero_counter beq.s car aa: sub.w #1,zero_counter car: cmp.b #2,d0 ;1 key blt main_loop cmp.b #5,d0 ;4 key bge main_loop move.l d0,-(sp) bsr isr_off move.l old_base,a0 ;screen_base bsr set_low_rez move.l (sp)+,d0 ;key is in D0.L and.l #$ff,d0 lea filenames,a6 sub.b #2,d0 mulu #14,d0 add.w d0,a6 tst.w hertz beq.s hz50 eor.b #2,$ff820a hz50: clr.w $ffff8240.w move.w #$fff,$ffff825e.w bsr user_mode move.l #0,-(sp) pea laddr move.l a6,-(sp) clr.w -(sp) move.w #$4b,-(sp) trap #1 add.l #16,sp bsr set_super pop: move.w $116,$ff8240 nop nop bra.s pop exit: bsr isr_off ;reset rez move.l old_base,a0 bsr set_med_rez ; bsr set_low_rez bsr restore_pal bsr show_cursor bsr user_mode clr.w -(sp) move.w #$4c,-(sp) trap #1 addq.l #4,sp rts *************************** * CUSTOM SUPPORT ROUTINES * *************************** animate_pov: move.l new_base,a1 add.l #160*147+88,a1 move.l animation_position,a0 cmp.w #$ffff,(a0) bne.s no_animation_reset move.l #animation_table,a0 move.l a0,animation_position no_animation_reset: move.w (a0),d0 and.l #$ffff,d0 add.l d0,a1 lea pov_logo,a0 move.w #14-1,d0 .loop: move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ add.l #160-72,a1 dbf d0,.loop add.l #2,animation_position rts clear_pov_area: move.l new_base,a0 add.l #160*147+88,a0 clr.l d0 move.l d0,d1 move.l d1,d2 move.l d2,d3 move.l d3,d4 move.l d4,d5 move.l d5,d6 move.l d6,a1 move.l a1,a2 move.w #50-1,d7 .loop: movem.l d0-d6/a1/a2,(a0) add.l #36,a0 movem.l d0-d6/a1/a2,(a0) add.l #160-36,a0 dbf d7,.loop rts *************** * SUBROUTINES * *************** scroll: move.l line_ptr,a6 cmp.b #$ff,(a6) bne loop3 lea scroll_line,a6 ;restart message move.l a6,line_ptr loop3 tst.w scroll_number bne loop2 move.w #WIDTH,scroll_number clr.l d0 move.b (a6)+,d0 move.l a6,line_ptr sub.w #32,d0 lsl.w #5,d0 ;*32 (1 plane char set) lea font,a6 add.l d0,a6 ;letter address is in a6 ;transfer letter into buffer ; each line in buffer is 42 bytes long. lea buffer+42,a1 move.w (a6)+,40(a1) move.w (a6)+,82(a1) move.w (a6)+,124(a1) move.w (a6)+,166(a1) move.w (a6)+,208(a1) move.w (a6)+,250(a1) move.w (a6)+,292(a1) move.w (a6)+,334(a1) move.w (a6)+,376(a1) move.w (a6)+,418(a1) move.w (a6)+,460(a1) move.w (a6)+,502(a1) move.w (a6)+,544(a1) move.w (a6)+,586(a1) move.w (a6)+,628(a1) move.w (a6),670(a1) ;32 bytes per char loop2: lea buffer+42,a5 ;scroll buffer move.w #16-1,d0 loopy: roxl 40(a5) roxl 38(a5) roxl 36(a5) roxl 34(a5) roxl 32(a5) roxl 30(a5) roxl 28(a5) roxl 26(a5) roxl 24(a5) roxl 22(a5) roxl 20(a5) roxl 18(a5) roxl 16(a5) roxl 14(a5) roxl 12(a5) roxl 10(a5) roxl 8(a5) roxl 6(a5) roxl 4(a5) roxl 2(a5) roxl (a5) add.w #42,a5 dbf d0,loopy sub.w #1,scroll_number rts show_buffer: ;puts scrolline buffer to screen lea buffer,a0 move.l new_base,a1 add.w #32000+320,a1 move.w #16-1,d7 .loop: move.w (a0)+,(a1) move.w (a0)+,8(a1) move.w (a0)+,16(a1) move.w (a0)+,24(a1) move.w (a0)+,32(a1) move.w (a0)+,40(a1) move.w (a0)+,48(a1) move.w (a0)+,56(a1) move.w (a0)+,64(a1) move.w (a0)+,72(a1) move.w (a0)+,80(a1) move.w (a0)+,88(a1) move.w (a0)+,96(a1) move.w (a0)+,104(a1) move.w (a0)+,112(a1) move.w (a0)+,120(a1) move.w (a0)+,128(a1) move.w (a0)+,136(a1) move.w (a0)+,144(a1) move.w (a0)+,152(a1) add.w #2,a0 add.w #160,a1 dbf d7,.loop rts ************************************* * INTERRUPT SERVICE ROUTINES (ISRs) * ************************************* new_vbl: ;$70 MOVEM.L d0-a6,-(A7) MOVEM.L pic+2(PC),d0-d7 MOVEM.L d0-d7,$FFFF8240.W move.l a0,d0 move.l pal_position,a0 cmp.w #$ffff,(a0) bne.s no_colour_reset move.l #pal_table,pal_position no_colour_reset move.l d0,a0 clr.b $fffffa1b.w MOVE.L #horiz_isr,$120.W clr.w horiz_sync jsr tune+$1f0 ;flash the disc drive light move.b #10,$ff8800 move.b $ff8800,d7 cmp.b #13,d7 blt.s no_flash move.b #14,$ff8800 bclr #1,$ff8802 movem.l (sp)+,d0-a6 MOVE.B #199,$FFFFFA21.W MOVE.B #8,$FFFFFA1B.W rte no_flash move.b #14,$ff8800 or.b #%00000010,$ff8802 movem.l (sp)+,d0-a6 MOVE.B #199,$FFFFFA21.W MOVE.B #8,$FFFFFA1B.W rte horiz_isr: ;$120 clr.b $fffffa1b.w move.l d0,-(sp) rept 50 nop endr moveq #0,d0 .loop cmp.b $ffff8209.w,d0 bne.s .loop CLR.B $FFFF820A.W rept 22 nop endr MOVE.B #2,$FFFF820A.W move.l d1,-(sp) move.l a0,-(sp) move.l pal_position,a0 move.w #20-1,d0 col_loop move.w (a0)+,d1 cmp.w #$ffff,d1 bne.s ad move.w (a0)+,d1 ad: move.w d1,$ffff8242.w rept 115 nop endr dbf d0,col_loop move.l (sp)+,a0 move.l (sp)+,d1 move.l (sp)+,d0 add.l #2,pal_position clr.w $ffff8242.w rte ******************** * SERVICE ROUTINES * ******************** set_up_for_border: ori.w #$700,sr move.l $70,old70 move.l $120,old120 move.b $fffffa07,olda07 move.b $fffffa09,olda09 move.b $fffffa17,olda17 move.b $fffffa1b,olda1b move.b $fffffa21,olda21 MOVE.L #new_vbl,$70.W MOVE.L #horiz_isr,$120.W MOVE.B #1,$FFFFFA07.W CLR.B $FFFFFA09.W BCLR #0,$FFFFFA0F.W BSET #0,$FFFFFA13.W BCLR #3,$FFFFFA17.W CLR.B $FFFFFA1B.W CLR.B $FFFFFA21.W MOVE.W #$2300,SR rts isr_off: ORI.W #$700,SR CLR.B $FFFF8260.W move.l old120,$120 move.l old70,$70 MOVE.B olda07,$FFFFFA07 MOVE.B olda09,$FFFFFA09 MOVE.B olda17,$FFFFFA17 move.b olda1b,$fffffa1b move.b olda21,$fffffa21 MOVE.W #$2300,SR endmusic: lea $ff8800,a0 move.l #$8080000,(a0) move.l #$9090000,(a0) move.l #$a0a0000,(a0) rts clear_lower_border: move.l new_base,a0 add.l #32000,a0 move.w #45-1,d0 clr_: clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ dbf d0,clr_ rts steal_pov_logo: lea pov_logo,a1 move.l new_base,a0 lea 160*147+88(a0),a0 move.w #14-1,d0 .loop: move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ add.w #160-72,a0 dbf d0,.loop rts set_super: clr.l -(sp) ;set supervisor mode move.w #32,-(sp) trap #1 addq.l #6,sp move.l d0,stack_save rts transfer: lea pic+34,a0 move.l new_base,a1 move.l a1,a3 add.l #32000-160,a3 lea pic+34+(160*199),a2 move.w #100-1,d0 .loop: movem.l (a0),d1/d2/d3/d4/d5/d6/d7/a4/a5/a6 movem.l d1-d7/a4-a6,(a1) add.w #40,a0 add.w #40,a1 movem.l (a0),d1/d2/d3/d4/d5/d6/d7/a4/a5/a6 movem.l d1-d7/a4-a6,(a1) add.w #40,a0 add.w #40,a1 movem.l (a0),d1/d2/d3/d4/d5/d6/d7/a4/a5/a6 movem.l d1-d7/a4-a6,(a1) add.w #40,a0 add.w #40,a1 movem.l (a0),d1/d2/d3/d4/d5/d6/d7/a4/a5/a6 movem.l d1-d7/a4-a6,(a1) add.w #40,a0 add.w #40,a1 add.w #160,a0 add.w #160,a1 movem.l (a2),d1/d2/d3/d4/d5/d6/d7/a4/a5/a6 movem.l d1-d7/a4-a6,(a3) add.w #40,a2 add.w #40,a3 movem.l (a2),d1/d2/d3/d4/d5/d6/d7/a4/a5/a6 movem.l d1-d7/a4-a6,(a3) add.w #40,a2 add.w #40,a3 movem.l (a2),d1/d2/d3/d4/d5/d6/d7/a4/a5/a6 movem.l d1-d7/a4-a6,(a3) add.w #40,a2 add.w #40,a3 movem.l (a2),d1/d2/d3/d4/d5/d6/d7/a4/a5/a6 movem.l d1-d7/a4-a6,(a3) add.w #40,a2 add.w #40,a3 sub.w #160*3,a2 sub.w #160*3,a3 bsr pause dbf d0,.loop rts pause: move.l d0,-(sp) move.w #10000,d0 pau: nop dbf d0,pau move.l (sp)+,d0 rts user_mode: move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts save_pal: lea old_pal,a1 lea $ffff8240,a0 move.w #16-1,d0 save_p: move.w (a0)+,(a1)+ dbf d0,save_p rts restore_pal: lea old_pal,a0 bra.s set_p set_palette: lea pic+2,a0 set_p: lea $ffff8240,a1 move.w #16-1,d0 set_pal: move.w (a0)+,(a1)+ dbf d0,set_pal rts get_base move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,old_base rts set_med_rez: move.w #1,-(sp) bra.s set_rez set_low_rez: clr.w -(sp) set_rez: move.l a0,-(sp) move.l a0,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts hide_cursor: pea di_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts show_cursor: pea ei_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts ei_mouse: dc.b $14,8 even di_mouse: dc.b $12,$1a even ds.l 40 ******** * Data * ******** section data pal_position: dc.l pal_table pal_table: dc.w $700,$700,$710,$710,$720,$720,$730,$730 dc.w $740,$740,$750,$750,$760,$760,$770,$770 dc.w $670,$670,$570,$570,$470,$470,$370,$370 dc.w $270,$270,$170,$170,$070,$070,$071,$071 dc.w $072,$072,$073,$073,$074,$074,$075,$075 dc.w $076,$076,$077,$077,$067,$067,$057,$057 dc.w $047,$047,$037,$037,$027,$027,$017,$017 dc.w $007,$007,$106,$106,$205,$205,$304,$304 dc.w $403,$403,$502,$502,$601,$601 dc.w $ffff dc.w $700,$700,$710,$710,$720,$720,$730,$730 dc.w $740,$740,$750,$750,$760,$760,$770,$770 dc.w $670,$670,$570,$570,$470,$470,$370,$370 dc.w $270,$270,$170,$170,$070,$070,$071,$071 dc.w $072,$072,$073,$073,$074,$074,$075,$075 animation_position dc.l animation_table animation_table dc.w 0,0,160,160,320,480,640 dc.w 800,1120,1440 dc.w 1760,2080,2560,3040,3520,4000,4640,5280 dc.w 5280+480 dc.w 4640,4000,3520,3040,2560,2080,1760,1440,1120,800,640 dc.w 480,320,160,160 dc.w $ffff stack_save dc.l 0 old70: dc.l 0 old120: dc.l 0 olda07: dc.l 0 olda09: dc.b 0 olda17: dc.b 0 olda1b: dc.b 0 olda21: dc.b 0 even horiz_sync dc.w 0 old_base dc.l 0 scroll_number dc.w 16 old_pal ds.b 32 hertz dc.w 0 ;initially 50Hz line_ptr dc.l scroll_line buffer dcb.b BUFFER_SIZE,0 scroll_line: dc.b " MAC SYS DATA PRESENTS - PERSISTENCE OF VISION 16. CREDITS: " dc.b "MENU CODED BY " dc.b "MAC SYS DATA, GRAFIX BY ALY AND MAC SYS DATA, " dc.b " THE MUSIC IS FROM F.O.F.T. MEMBERS OF P.O.V. ARE ;- " dc.b "MAC SYS DATA, BORIS, DR.SYNE AND ALY. " dc.b "HI TO;- ALAN R, GEORGE, BASHER, VAPOUR, NIEL OF COR BLIMEY AND " dc.b "THE LOST BOYS. " DC.B " IF YOU WISH TO COLLECT MORE PERSISTENCE " DC.B "OF VISION DISCS, THEY ARE AVAILABLE DIRECTLY FROM THE BLACKPOOL CLUB OR " dc.b "FROM PD LIBRARIES EVERYWHERE. " DC.B " ----- IMPORTANT NEWS ----- COMING TO A SCREEN NEAR YOU " dc.b "SOON ... P.O.V. 7! " DC.B "THIS INTRO WAS CODED BY MAC SYS DATA ON 21-3-90, THE DISC WAS RELEASED " dc.b "ON 27-4-90, WE SHOULD MAKE DISC 20 BY MID MAY. DISC 20 MAY BE A " dc.b "LITTLE DIFFERENT THAN OUR PREVIOUS ONES AND WILL INCLUDE AN INFO FILE. " dc.b " WE ARE CONSTANTLY LOOKING FOR NEW DEMOS TO PUT ON OUR " DC.B "DISCS BUT LATELY THE SUPPLY HAS DRIED UP, AS A RESULT THE NEXT FEW " DC.B "DISCS WILL CONTAIN MORE LARGE SAMPLED SOUND DEMOS AND MORE ONE MEG " DC.B "PAMPUK SINGLE PARTED DEMOS. IF YOU WANT HALF MEG ONES, GET WRITING SOME. " DC.B " HERE ARE A FEW OF THE DEMOS I HAVE RECEIVED IN THE LAST WEEK... " DC.B " ASTERIX DEMO, STARWARS RAP (COMPLETED VERSION), " DC.B "SAS DEMO, BON JOVI DEMO (1 MEG) AND BORIS VALEGO PICTURE DEMO (60HZ ONLY). " DC.B "I HAVE ALREADY PACKED THE FOLLOWING - DEF DEMO, IVOR BIGGUN DEMO (1 MEG), " DC.B "SHINY BUBBLES (1 MEG), ART MACHINE DEMO (THIS MAY APPEAR ON POV 7, AS " DC.B "SOON AS BORIS FINISHES IT), CHARLIE CHAPLIN DEMO (THIS IS A JOKE OF A " DC.B "DEMO), FOREIGN AFFAIR AND TWO OXYGENE DEMOS. " DC.B "I HAVE ALSO STARTED WORK ON THE CONSTELLATIONS DEMO AND SWEDISH NEW YEAR " DC.B "DEMO 1 (WHICH IS PROVING A BITCH TO HACK). IF ANYBODY OUT THERE " DC.B "WITHOUT AN STE BUT WANTS TO SEE THE OFFICAL STE DEMO THEN GET HOLD OF THE " DC.B "CONSTELLATIONS DEMO. THE THIRD DEMO IS VIRTUALLY THE SAME, BUT ON AN STE " DC.B "THERE IS A 12.5KHZ SAMPLED SOUND PLAYING, A FEW MORE COLOURS AND A FONT " DC.B "THAT IS READABLE! ANYWAY IF ALL YOU STE OWNERS WANT TO SEE THE " DC.B "OFFICAL DEMO, THEN KEEP A LOOK OUT FOR FUTURE P.O.V. DISCS 'COS I'VE HAVE " DC.B "A GO AT HACKING IT, BUT I CAN'T PROMISE ANYTHING. " DC.B " " dc.b $ff,$ff,$ff,$ff even font: incbin "med_font.dat" even pic incbin "pov16.PI1" tune: incbin "35.IMG" pov_logo dcb.b (72*14),0 filenames: dc.b "SUCCESS.EXE",0,0,0 dc.b "RENDEZ.POV",0,0,0,0 dc.b "TEX3.MSD",0,0,0,0,0,0 SECTION BSS new_base ds.l 1 laddr ds.l 1 ds.b 256 screen ds.b 32000 ds.b 160*20 ???<x<x<x<x<x<x???<x<x<x<x<x<x<x<x<x?<??<x<x<x<x<x<x? ??<x<x<x<x<x<x???<<0???<<<<<<<<<<<< PERSISTENCE OF VISION MENU 16 ----------------------------- CONTENTS: POV16.S Source code to menu POV16.PI1 Menu picture MED_FONT.DAT Font 35.IMG Music CONTENTS.DOC This file Persistence Of Vision P.O. Box 40 Thornton-Cleveleys Lancashire FY5 3PH ENGLAND ?<<?xx ???<<<<<<???<<<<<<??????<<<<. 衜.. 32X24 FNT ~K32X24FNTPI1 B}AUTO117 IMG Ut POV20 PI1 B}POV20 S 8J2STEALFNTS ~ECONTENTSDOC I???<x<x<x<x<x<x???<x<x<x<x<x<x<x<x<x?<??<x<x<x<x<x<x? ??<x<x<x<x<x<x???<<0???<<<<<<<<<<<<<<<????<??<<<<<x<x<x<x<x<x<x<x<x<<<<??<<?xx ???<<<<<<???<<<<<<??????<<<<<<???<<<<<<<<<???<<<<< < < < <<x<x<x<x<x<x???<x<x<x<x<x<x<x<x???<x<x<x<x<x<x<x<x<x<x?@00?@?000000000000000?xxxxxxxxxxxxx?x???~<x<<<<000<```<~<??? <<><`<`0`< <  <<8<f<6<<<<<<<<<<<<<<<<<<???`? 0??0???=x<x?` 0`` 0000000 0`` ``` `>~||>?` 0000 `` ``<x<x<x<x<x<x<x<x<x<x<x <10x <10x <10x <10x <10x <0?x< ?xx<<>?` 0`` 00000800 ``` ``` ?~~>? ``` 0``0000000`` ``` @>?` 0`` 0000000 0`` ``` `>>||?` 0000000000? ??00@?~  000?~ 000?><??? 00 00 00 000```> p```````px>?p?00?00p0000 00 00 00 00 00 00 0000p000000??>< 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00xxxxxxxx    0000???xxxxxx???<<<<<    000`` 00 00 00 00 00 00 00 00 00x<` ?p?<8?<xÃ<|x<>x0<ax<1x <x<x<|xÀ<?x?0p? ?x<<<xx ???xxxxxxxxxxxxxxxxxx???xxxxxx???<<<<<<??????xxxxx?x000000 ?x?xxxxx????88?pp8?88pp80??????``````???<<<<<<???xxxxx?x??????<<<<<<???<x<x<x<x<x<x??????xxxxx?x000000 ?x?xxxxxxxxx<p <x<x<x<x<x<xp 00x<x<x<x<x<xx<<0???<x<x<x<x<x<x????xxxxx?x???<<<x<x0x<x<x<<<<<x<x0?x"3DUfPpppGw?@??<??<???<x0x???????<x0x???????<x?@<x<x<<<<<<x<x<x<<<<<<<x<x<x<<<<<<x?<x<x<<x<<<<x0x<x<x<<x<<<<x0x<x<x<<x<< <?0x?? <<x?? <?0x??<<x?? <?0x??<<x?? <<x0x<x<x<<x<<<x<x0x<x<x<<x<<<x<x0x<x<x<<x<<<x<x0x<x<x<<<<<x<x0x<x<x<<<<<<x<x0x<x<x<<<<<x<x0?x<x????<?<x0?<x???<<?<?<x0?<x?<<??xx?<?<x0?0 ?~<x<`? `?xx<?x<?x??<<0?0?x??<??<<?0?x`?`???<<???x ?<x ?<x<@<000<??xp?<<xp?<<x<`<```<=x?x?<x?<x<``<~<<x<<x<?<x<<x<0x``<`<<x<`<x<<|x<x``<`0`<<x<0À<x<À<?x< x``< <<x< ?<?0<x``<  <<x<p?<<p?<x``<<<x< ?< ?<?x``<8?<x<x<<`00?``<f?<x<xx<<<x<<<0?``<6?<x<x<xx<<xx< ?``  <x><x>>? <x?<x???<x` <x` ` ?00<x0`` <x0`` 0`` @?<x000<x000000~<x0000<x008000000<x 0``<x ``` 0``  <x ```<x ``` ```<x `<x ? `000<x><x~>?<x~<x>~<x|| <10x||<x> <10x~? <x? <10x><x` <10x?` 000<x0 <10x ```0?<x0 <0?x 0``0><x00< ?x00000<? ``00000?? ``0`` 00??x<<``` 00?@> 00?? 00xx? p? 00xx?00? 00xxx 00 0000 00xxx 00 00p00 00  x 00 00p00 00  x 00` 00 000000x0``` 00 00x`` 00 00?>` 00 00?` 00 00?` 00 00<` 00 00<p00 00 p00 00 00? ?<  00 00> 00<00 00 00x< 00<0`` 00 00?x<??????x<????88????p?`???pp??? ? ?xxx<<x<x<xp?<xxx<<x<x<x8?xxx8<<x<x<x<xxxx<<x<x<xÃ<|xxxx?88<<x<x<x<>xxx?xpp<<?x<x<x0<axx?00??00p ?<1xx?00??000? <xx?008??000?<xx< ?xx<x ?xx?x<|xx<?x0??x<x?x<xxÀ<?xx<x?x<xx<xx?0x<x?x<xx<xxp?x<x?x<xx<xx ?x<x??x<xx<x?xx??``??x?x<<x??``??x?<xxx??``??xx<<? 0  T*  @Z0r@@QTQ!T~~~~gggggggggggggg    !$'!$&!$% %$҈$$$()!!!()$$$()!!!)(##&#&+#&+/&+/2+/27#&#&+#&+/&+/2+/27/27;27;>7;>C&##&!&!&*+#&#&+#&+/&+/2&*-2*-267 ,&##!2/+&/+&#+&#&#-*"*"+G<fjQH@A0pp CQzZ7z+Rfzz[z\HaNLNuHabLNuHa LNuHa\LNuHa tLNuH`aLNuGaB+ HA pzCb~|B)B),Q-Q.A#H#HA0p3H3| 0s#H0T@QBQPP PNu!#Z ""( ,+ @ !#0"" ,+ `#$fr"",N,K@$@@?HNuGf(|9f|H`9 f|+J+fJg:+ea @J+g:gJ+g S+fS+gz~z}:u+dAaAaA*a+Aa7@@z@:< drAAa7@@z: drAAax7@@z: drAzJ+g0kzz:fz+ +z~J+ g.zmzf:fzZ++zKJ+ g.z;z4:fz&+$+z+?@F'BJfJ+f4 J+f4 wJ+f4XI >$9:!F`HG*Q` @F'9?  FNuGJ+ gPNu t f ^ l $ J D R 8 l z > | nYz`$Yz`YY1| `XQ `0( 4hT@Jsf4hp2s1@ `(/:=@P`(/8:@Q`(/ :+P`zBhYY`fY ``Y.`Z`LY*Q)Y+|@,`8B(,`2`*B(`V`NP-`Q-`S(f|B("hpk@J(g@$h$!J R(Rhh!IJ(-g.J+g+Rg J+ g+lgJ+ g+gP-Nu(fNu(gR(NuS(Nu<eJ e"e&@En4r!J!J`DR@`:@E j4r!J$b`"@@E4rN~(g$S(dh$h *kR @(h((:G(."hg"h!ICr0(,g\() (+gf*f(*d,r`(*e,A+ dAeIdA Gg$(SfBF(jFh1FF`D :f:{ C<:9(/(-j(-(/8F|C(Nu}?? M / gaw GGp0S#}Y8{eQ>, ~wpjd^YTOKGC?;852/,*'%#!   @Z0r@@QTQ!T~~~~gggggggggggggg    !$'!$&!$% %$҈$$$()!!!()$$$()!!!)(##&#&+#&+/&+/2+/27#&#&+#&+/&+/2+/27/27;27;>7;>C&##&!&!&*+#&#&+#&+/&+/2&*-2*-267 ,&##!2/+&/+&#+&#&#-*"*"+G<fjQH@A0pp CQzZ7z+Rfzz[z\:H@E4r'J^'JbR|Nu<fjQ H@A"0pp C~Qzut7zp+lfzczeuzav:XH@E~4r'Jx'J|R| NuQ H@A0pp C.Qz%7z +fzzz:H@E4r'J'JR| NuNuGVaJ+kgaJ+ gaJ+ gax`J+LfJ+Xf QB+NuS+LJ+Zf4J+XfJ+UgdS+UzKZ:Kg::=A:2AS+Z:/g S+\f@\J+Tgj 0:k`0:k+RfzS+[f"z[$zj <f$z'Jb@NuJ+ffJ+rf Q B+NuS+fJ+tf4J+rfJ+ogdS+ozt:g::A:AS+t:g S+vf@vJ+ngj 0:nk`0:dk+lfzS+uf"zOu$zTj <f$zB'J|@NuJ+fJ+f Q B+NuS+J+f4J+fJ+gdS+z : g:6:A:AS+:g S+f@J+gj 0:k`0:đk+fzS+f"z$zj <f$z'J@Nu2@N\jx .<JXftddAAcIc")<cF cP@cc@cc-c.#c2 c!c K <)(  Fc2`Ac(cP >c .0>            :H8:NuXPGDBBkB+|?`"'QW                  Nq8ÀÀÀ888À888ÀÀÀ<<<888888ppp888<<<888À"3DUfPpppGw??ÀÀ88??ÀÀ888888888888888888888888888888;;ÀÀ;;??88ÀÀ88;;ÀÀ??;;88ÀÀ??8888pp88xxxx88ÀÀpp88((8pp88pp888888ÀÀpp88888UU  UUPP*?((8UPUP((@8PP pEP((8  BBÀPP*?((8BBÀ@888888888ppp888ÀÀÀ888À888ÀÀÀ<<<888888ppp888<<<888À888ÀÀÀ888888ppp888888À88ÀÀ88@88 pp@8888@88<<<<88xx<<<<<<8888??8888??ppHx|@G``00=? aaff00.?` aaffppCP0 aa0 aa Aa 0@ aaa000no Aaa 00@ NO70x?U@ w??@ C08'?Cxb},@[$ l ##h@/t@ 44:0;0pWX .?=? I vx?o[d:?0/0x~? @7I13 @$Sn߀?,@c-|Ҁ`W߈@Ňx~O{}wٗ>ހ!@ 2BC?~@`V?@[@#@?_?Ŀ'@H@*?D@dz?@ 3?O_E@c<@L?/@ 'ObOW{N !:PCo`~Gg8>"B8!?`g8 < ??iv݊"x"~Uz`j( :smz?o{y`?>;o80]?~ p BNq??R(5_`wG?/8i?c'?0#14{`? ?_@"< O"u? _߼H8=(P0mS~$?00??c ҥ?`@! Sw @`pp?oC˽}@O_A~?È?"Azҿha?@op@??@_&ۀ$v^^==`@?d8ho/> op_n@>H80wr>/xh`8?g{p/  ???A{y 84``?0?000 gw|~||Y40`0`0`````` ~>? w`0`0````0099_o>| ǀ`?`?~6~6``00o>~`0`0`0`0``00|?|?F@__}0>0cc?<< _|? @<`0`0`0`0``00 ccD?|=_ `W`0`0`0`0``00 cc6,??8?{@ǀ`0`0`0`0``00 cc =@<<!6P?h???b5@?0?0?0?0xx |?|?@s~@  bC>@_A@ "B>?`7~`<<oc>?`>>9!  _ ?/. "O??? Btc n?^@??cc??00``/p*;?E^`@\````00 ` ` tKN??p11 ff``00   R ^j7?p11 ff~~00?')Lײrz^#?n00??ff``00 :EŻ=(R`=L#?n ``00``00 ` ` }p'Xr <0"?@@00ff``00 ` `?1=`r_ S u??_П00ff``00 ` ` <}0Zsv?B?00ff``00 ` `  w9sqV?H 00??``?LA@p8:=xE??H @N?8H?*=!j?w? pʟ5`d<?"=A o? /P a_"=AW_? /0oۀ0ţI?/|$@ţIe(?`??11@ n  m_?U@pp}I0|8}]? ?@11$|A8v? @11rK>wo?@11 33#Tdz\' ` /??g11 33 j_@*(t??11 33 U ޷ @.  ? 11 33 l (P T.l>(O??? 1|11 33l+  ƯAP# _?޿hL??11v6 4<Al¿u}ytWbo~>5MOg3>p|(w7?ɰ!ǸC^7?gp _>iY@ӇdC ??0p @CQ ?.`ff?@^7 k?oL?? ff~?0k~_\? 00ff00~6 (_??` ~0~0?_}c ?z>??@<<xx/}?y?>?_`ff ,x?E>?? <<ffxx [<!q ?v]~??`~1~1ff$W/?}>?_ 11ff00@>g???ccʮ` }?N|??`S`0[0~? |8:g~? `ܰ?w pv~?p`C2eaHwy=^(n@ 'y3} 0Oo\???ǘ  A2o^x@ 000}?=?@ 000 qMNY?p 000~??`$ _b ??_?@ 000``1ck0gOܳ\?A@ 000aa^;O˟<gdc??/ 000aa=" w̽c-/?C@ 111aaOsxN0'?_ŀ? 333<<<z a/xPΐ}/?Ђ???̘~?~?00#1Xx3߼C ??q;p1~GT2??(FB7+/}wO?>D_@~/H?G2O~~? g ??8|$16kso18??}Mxwqq00gg s g! 3!m_ ``00  00~m~m )&  8HO$u2dR)`` ` `3300yy00 }{X;ZsY _@ cc9 7dkO@``33~?~?+Ow@x|g {y@aa00,xTCvvlY;%Hpcc0`0`"O`k_Z0 ```ff00!#/w? (Lff11?0`.wu%> @``LJ33$`@K?v%7cs@w@ aall Jd4^ oِ'N2 aa(QA 1O-oِ'JHÿ|:aall F@#`u__?TOM»9߿fPOϿ g1??@m/;D 9P?Pw={+ @ D?`޿H:{([_4ԷHJ "(~??@YK?P ۀx@6D6D????g7߀@** 00 0 0@D?$"E"E~ ~ 0000   9}<"&"&"&  00 0 0 |c<DD?????? ~<~?~??? move.w #$ffff,horiz_sync main_loop: tst.w horiz_sync bne main_loop ; move.w #$070,$ffff8240.w bsr scroll bsr scroll bsr scroll bsr scroll bsr show_buffer ; move.w pic+2,$ffff8240.w MOVE.W #$FFFF,horiz_sync move.b $fffc02,d0 cmp.b #01,d0 ;escape beq exit cmp.b #$b,d0 ;0 key bne.s not_zero tst.w zero_counter bne.s aa eor.w #$111,pic+2 eor.w #$ffff,toggle bsr.s show_hertz move.w #10,zero_counter bra main_loop show_hertz: tst.w toggle bne.s not_50 pea in50 bra.s print not_50: pea in60 print: move.w #9,-(sp) trap #1 addq.l #6,sp rts zero_counter: dc.w 0 not_zero: tst.w zero_counter beq.s car aa: sub.w #1,zero_counter car ;-------------------------------------------------------------------------; ; The following source code and art have been released by ; ; PERSISTENCE OF VISION for use by others for NON-Profit ; ; making purposes only. The code is supplied as is and no claim can ; ; be made against PERSISTENCE OF VISION for loses incured through ; ; the use and/or missuse of it. ; ; ; ; All soundtracks are copyright of the original authors ; ;-------------------------------------------------------------------------; ; ; This code was released on ; Persistence Of Vision ; Official Source Code Disc 1 ************************* * POV 20 * ************************* BUFFER_SIZE: EQU 160*24+(32*24) WIDTH: EQU 32 move.l sp,a5 move.l 4(a5),a5 move.l $C(a5),d0 add.l $14(a5),d0 add.l $1C(a5),d0 add.l #$100,d0 move.l d0,-(sp) move.l a5,-(sp) move.w d0,-(sp) move.w #$4a,-(sp) trap #1 add.l #12,sp ;okay that's it memory free & allocated *** Clear bss as most packers don't lea bssstart,a0 move.l #bssend-bssstart,d0 clear_bss clr.b (a0)+ sub.l #1,d0 bne.s clear_bss bsr set_super wait_for_drive move.w $ff8604,d0 btst #7,d0 bne.s wait_for_drive move.l #screen,d0 clr.b d0 move.l d0,new_base bsr hide_cursor bsr save_pal bsr get_base move.l new_base,a0 ;screen_base bsr set_low_rez bsr set_palette bsr transfer bsr set_up_for_border ;************************************************************************ ;* SUPER STUNTMAN * ;* -------------- * ;* Stolen by: MAC SYS DATA of P.O.V. 05/09/89 20:30 * ;* * ;* Include files:- * ;* AUTO117.IMG into TUNE * ;************************************************************************ move.b $484,old484 move.b #2,$484 ;off with keyclick/bell ;**************************************************************** ; There is more than one tune in this code.... ; 0=AUTOMATION 117 ; 1=Jingle ; 2=Jingle move.l #0,D0 jsr tune bsr show_hertz move.w #$ffff,horiz_sync main_loop: tst.w horiz_sync bne main_loop ; move.w #$070,$ffff8240.w bsr scroll bsr scroll bsr scroll bsr scroll bsr show_buffer ; move.w pic+2,$ffff8240.w MOVE.W #$FFFF,horiz_sync move.b $fffc02,d0 cmp.b #01,d0 ;escape beq exit cmp.b #$b,d0 ;0 key bne.s not_zero tst.w zero_counter bne.s aa eor.w #$111,pic+2 eor.w #$ffff,toggle bsr.s show_hertz move.w #10,zero_counter bra main_loop show_hertz: tst.w toggle bne.s not_50 pea in50 bra.s print not_50: pea in60 print: move.w #9,-(sp) trap #1 addq.l #6,sp rts zero_counter: dc.w 0 not_zero: tst.w zero_counter beq.s car aa: sub.w #1,zero_counter car: cmp.b #2,d0 ;1 key blt main_loop cmp.b #5,d0 ;4 key bge main_loop move.l d0,-(sp) bsr isr_off move.l old_base,a0 ;screen_base bsr set_low_rez move.l (sp)+,d0 move.b old484,$484 ;key is in D0.L and.l #$ff,d0 cmp.b #4,d0 ;3 key beq.s run_info lea filenames,a6 sub.b #2,d0 mulu #14,d0 add.w d0,a6 tst.w toggle beq.s hz50 eor.b #2,$ff820a hz50: bsr black_pal ; poke filename to screen move.l old_base,a0 add.w #160*199,a0 move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ bsr user_mode clr.w -(sp) ;to AUTORUN in AUTO folder move.w #$4c,-(sp) trap #1 addq.l #4,sp run_info: tst.w toggle beq.s hz50i eor.b #2,$ff820a hz50i: pea 0 pea be pea info move.w #0,-(sp) move.w #$4b,-(sp) trap #1 add.l #16,sp clr.w -(sp) trap #1 exit: bsr isr_off move.b old484,$484 ;reset rez move.l old_base,a0 bsr set_med_rez bsr restore_pal bsr show_cursor bsr user_mode clr.w -(sp) move.w #$4c,-(sp) trap #1 addq.l #4,sp rts *************** * SUBROUTINES * *************** scroll move.l line_ptr,a6 cmp.b #$ff,(a6) bne loop3 lea scroll_line,a6 ;restart message move.l a6,line_ptr loop3 tst.w scroll_number bne loop2 move.w #WIDTH,scroll_number clr.l d0 move.b (a6)+,d0 ;get letter move.l a6,line_ptr cmp.b #32,d0 beq.s space cmp.b #"a",d0 bge.s letter cmp.b #"!",d0 beq.s exclaim cmp.b #".",d0 beq.s fullstop cmp.b #"'",d0 beq.s invert cmp.b #",",d0 beq.s comma cmp.b #"?",d0 beq.s question cmp.b #"2",d0 beq.s n2 cmp.b #"0",d0 beq.s n0 letter: sub.w #65,d0 ;NOT ASCII BOUND - A=65, B=66, C=67 mulu #16*24,d0 lea font_set,a6 add.l d0,a6 ;letter address is in a6 bra.s put n0: lea font+384*41,a6 bra.s put n2: lea font+384*43,a6 bra.s put fullstop: lea font+384*39,a6 bra.s put exclaim: lea font+384*35,a6 bra.s put invert: lea font+384*31,a6 bra.s put question: lea font+384*36,a6 bra.s put comma: lea font+384*37,a6 bra.s put space: lea font,a6 ;transfer letter into buffer ; each line in buffer is 160+16 bytes long. put: move.w #24-1,d0 lea buffer+160,a1 put2: movem.l (a6),d2/d3/d4/d5 movem.l d2/d3/d4/d5,(a1) add.w #16,a6 add.w #160+16,a1 dbf d0,put2 loop2: lea buffer,a5 ;scroll buffer move.l a5,a4 move.w #3-1,d1 planes: move.w #24-1,d0 loopy: roxl 168(a5) roxl 160(a5) roxl 152(a5) roxl 144(a5) roxl 136(a5) roxl 128(a5) roxl 120(a5) roxl 112(a5) roxl 104(a5) roxl 96(a5) roxl 88(a5) roxl 80(a5) roxl 72(a5) roxl 64(a5) roxl 56(a5) roxl 48(a5) roxl 40(a5) roxl 32(a5) roxl 24(a5) roxl 16(a5) roxl 8(a5) roxl (a5) add.w #160+16,a5 dbf d0,loopy addq.w #2,a4 ;next plane move.l a4,a5 dbf d1,planes sub.w #1,scroll_number rts show_buffer: ;puts scrolline buffer to screen lea buffer,a0 move.l new_base,a1 add.l #32320,a1 move.w #24-1,d0 .loop: move.l (a0),(a1) move.w 4(a0),4(a1) move.l 8(a0),8(a1) move.w 12(a0),12(a1) move.l 16(a0),16(a1) move.w 20(a0),20(a1) move.l 24(a0),24(a1) move.w 28(a0),28(a1) move.l 32(a0),32(a1) move.w 36(a0),36(a1) move.l 40(a0),40(a1) move.w 44(a0),44(a1) move.l 48(a0),48(a1) move.w 52(a0),52(a1) move.l 56(a0),56(a1) move.w 60(a0),60(a1) move.l 64(a0),64(a1) move.w 68(a0),68(a1) move.l 72(a0),72(a1) move.w 76(a0),76(a1) move.l 80(a0),80(a1) move.w 84(a0),84(a1) move.l 88(a0),88(a1) move.w 92(a0),92(a1) move.l 96(a0),96(a1) move.w 100(a0),100(a1) move.l 104(a0),104(a1) move.w 108(a0),108(a1) move.l 112(a0),112(a1) move.w 116(a0),116(a1) move.l 120(a0),120(a1) move.w 124(a0),124(a1) move.l 128(a0),128(a1) move.w 132(a0),132(a1) move.l 136(a0),136(a1) move.w 140(a0),140(a1) move.l 144(a0),144(a1) move.w 148(a0),148(a1) move.l 152(a0),152(a1) move.w 156(a0),156(a1) add.w #160,a1 add.w #160+16,a0 dbf d0,.loop rts ************************************* * INTERRUPT SERVICE ROUTINES (ISRs) * ************************************* new_vbl ;$70 movem.l d0-a6,-(sp) movem.l pic+2,d0-d7 movem.l d0-d7,$ffff8240.w clr.b $fffffa1b.w move.l #new_timerb,$120.W clr.w horiz_sync jsr tune+$e ;flash the disc drive light move.b #8,$ffff8800.w move.b $ffff8800.w,d7 cmp.b #15,d7 blt.s no_flash move.b #14,$ffff8800.w bclr #1,$ffff8802.w movem.l (sp)+,d0-a6 clr.b $fffffa1b.w MOVE.B #199,$FFFFFA21.W MOVE.B #8,$FFFFFA1B.W rte no_flash: move.b #14,$ffff8800.w or.b #%00000010,$ffff8802.w movem.l (sp)+,d0-a6 clr.b $fffffa1b.w MOVE.B #199,$FFFFFA21.W MOVE.B #8,$FFFFFA1B.W rte new_timerb: ;$120 clr.b $fffffa1b.w move.l d0,-(sp) REPT 50 nop ENDR moveq #0,d0 .loop cmp.b $ffff8209.w,d0 bne.s .loop CLR.B $FFFF820A.W REPT 22 nop ENDR MOVE.B #2,$FFFF820A.W move.l #$02250447,$ffff8242.w move.l #$01140336,$ffff8246.w move.l (sp)+,d0 rte ******************** * SERVICE ROUTINES * ******************** set_up_for_border: ori.w #$700,sr move.l $70,old70 move.l $120,old120 move.b $fffffa07,olda07 move.b $fffffa09,olda09 move.b $fffffa17,olda17 move.b $fffffa1b,olda1b move.b $fffffa21,olda21 MOVE.L #new_vbl,$70.W MOVE.L #new_timerb,$120.W MOVE.B #1,$FFFFFA07.W CLR.B $FFFFFA09.W BCLR #0,$FFFFFA0F.W BSET #0,$FFFFFA13.W BCLR #3,$FFFFFA17.W CLR.B $FFFFFA1B.W CLR.B $FFFFFA21.W MOVE.W #$2300,SR rts isr_off: ORI.W #$700,SR move.l old120,$120 move.l old70,$70 MOVE.B olda07,$FFFFFA07 MOVE.B olda09,$FFFFFA09 MOVE.B olda17,$FFFFFA17 move.b olda1b,$fffffa1b move.b olda21,$fffffa21 MOVE.W #$2300,SR endmusic: lea $ff8800,a0 move.l #$8080000,(a0) move.l #$9090000,(a0) move.l #$a0a0000,(a0) rts set_super: clr.l -(sp) ;set supervisor mode move.w #32,-(sp) trap #1 addq.l #6,sp move.l d0,stack_save rts transfer: move.l new_base,a0 add.w #32000,a0 lea pic+34,a1 add.w #32000,a1 line move.l new_base,a2 lea -160(a1),a1 cmp.l #pic,a1 ;are we at top of the pic? ble.s transfer_done build_line: movem.l (a1)+,d0-d7 bsr.s move_block movem.l (a1)+,D0-d7 bsr.s move_block movem.l (a1)+,D0-d7 bsr.s move_block movem.l (a1)+,D0-d7 bsr.s move_block movem.l (a1)+,D0-d7 bsr.s move_block lea -160(a1),a1 cmp.l a0,a2 bne.s build_line lea -160(a0),a0 bra.s line move_block: movem.l d0-d7,(a2) lea $20(a2),a2 moveq #3,d0 t_wait: dbf d0,t_wait rts transfer_done: rts pause: move.w d0,-(sp) move.w #1000,d0 pau: nop dbf d0,pau move.w (sp)+,d0 rts user_mode: move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts save_pal: lea old_pal,a1 lea $ffff8240,a0 move.w #16-1,d0 save_p: move.w (a0)+,(a1)+ dbf d0,save_p rts restore_pal: lea old_pal,a0 bra.s set_p set_palette: lea pic+2,a0 set_p: lea $ffff8240,a1 move.w #16-1,d0 set_pal: move.w (a0)+,(a1)+ dbf d0,set_pal rts black_pal lea $ffff8240.w,a0 move.w #8-1,d0 .loop: clr.l (a0)+ dbf d0,.loop rts get_base move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,old_base rts set_med_rez move.w #1,-(sp) bra.s set_rez set_low_rez: clr.w -(sp) set_rez: move.l a0,-(sp) move.l a0,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts hide_cursor: pea di_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts show_cursor: pea ei_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts ei_mouse: dc.b $14,8 even di_mouse: dc.b $12,$1a even ds.l 40 ******** * Data * ******** section data pal_position: dc.l pal_table pal_table: dc.w $f00,$780,$f10,$790,$f20,$7A0,$f30,$7B0 dc.w $f40,$7C0,$f50,$7D0,$f60,$7E0,$f70,$7F0 dc.w $eF0,$670,$dF0,$570,$cF0,$470,$bF0,$370 dc.w $aF0,$270,$9F0,$170,$8F0,$070,$0F1,$078 dc.w $0F2,$079,$0F3,$07A,$0F4,$07B,$0F5,$07C dc.w $0F6,$07D,$0F7,$07E,$0E7,$06F,$0D7,$05F dc.w $0C7,$04F,$0B7,$03F,$0A7,$02F,$097,$01F dc.w $087,$00F,$806,$10E,$905,$20D,$A04,$30C dc.w $B03,$40B,$C02,$50A,$D01,$609 dc.w $ffff dc.w $f00,$780,$f10,$790,$f20,$7A0,$f30,$7B0 dc.w $f40,$7C0,$f50,$7D0,$f60,$7E0,$f70,$7F0 dc.w $eF0,$670,$dF0,$570,$cF0,$470,$bF0,$370 dc.w $aF0,$270,$9F0,$170,$8F0,$070,$0F1,$071 dc.w $0F2,$072,$0F3,$073,$0F4,$074,$0F5,$075 toggle: dc.w 0 ;50 hertz even line_ptr dc.l scroll_line scroll_line: dc.b "MAC SYS DATA PRESENTS " dc.b "DISC 20. " dc.b "ALL CODE AND GRAFIX BY " dc.b "MAC SYS DATA. " dc.b "MUSIC STOLEN FROM SUPER STUNT MAN BY MAC SYS DATA. " DC.B "WELL HERE WE ARE AGAIN WITH SOME MORE PACKED DEMOS ON OUR " DC.B "20TH DISC. ON THIS ONE IS THE FIRST EVER PACKED STE ONLY DEMO, " DC.B "IT WAS WRITTEN BY THE OVERLANDERS AND IS RATHER SIMPLE BUT IT " DC.B "DOES SHOW OFF THE STE'S DMA SOUND AND HARDWARE SCROLLING. " DC.B " BYE... " DC.B " " dc.b $ff,$ff,$ff,$ff even in50: dc.b 27,'Y86',"50 Hertz PAL ",0 even in60: dc.b 27,'Y86',"60 Hertz NTSC",0 even font dcb.b 384,0 ;one chars length font_set: incbin "32x24.fnt" even pic incbin "pov20.PI1" even tune: incbin "auto117.img" even filenames: dc.b "ALF.MSD",0,0,0,0,0,0,0 dc.b "STE_ACID.MSD",0,0 info: dc.b "INFO20.POV",0,0,0,0 even SECTION BSS bssstart horiz_sync ds.w 1 old_base ds.l 1 scroll_number ds.w 1 stack_save ds.l 1 old70 ds.l 1 old120 ds.l 1 olda07 ds.l 1 olda09 ds.b 1 olda17 ds.b 1 olda1b ds.b 1 olda21 ds.b 1 old484 ds.b 1 even old_pal ds.b 32 buffer ds.b BUFFER_SIZE be new_base ds.l 1 ds.b 256 screen ds.b 32000+160*32 bssend) trap #1 add.l #12,sp rts f_close move.w handle,-(sp) move.w #$3e,-(sp) trap #1 addq.l #4,sp rts pause: move.w d0,-(sp) move.w #3000,d0 pau: nop dbf d0,pau move.w (sp)+,d0 rts set_super: clr.l -(sp) ;Set super stack equal move.w #$20,-(sp) ; to user stack before call trap #1 addq.l #6,sp ;correct stack move.l d0,stack_save ;save old supervisor stack value rts set_user: move.l; STEAL font program ; 32 x 24 pixels bra skip filename: dc.b "32x24.fnt",0 ;destination name even pic: incbin "32x24fnt.pi1" ;source picture even skip bsr set_super dc.w $a00a bsr get_screen_base bsr get_old_palette bsr set_new_palette bsr get_original_rez bsr set_low_rez move.l screen_base,a1 lea pic+34,a0 move.w #32000/4-1,d0 loop: move.l (a0)+,(a1)+ dbf d0,loop move.l screen_base,a0 move.l #-1,d6 move.l a0,a6 lea buffer,a1 move.w #10-1,d1 across: move.w #24-1,d0 shift: move.l (a0),(a1)+ move.l d6,(a0) move.l 4(a0),(a1)+ move.l d6,4(a0) move.l 8(a0),(a1)+ move.l d6,8(a0) move.l 12(a0),(a1)+ move.l d6,12(a0) add.w #160,a0 bsr pause dbf d0,shift sub.w #160*24,a0 add.w #16,a0 dbf d1,across add.w #160*24,a6 move.l a6,a0 move.w #10-1,d1 .loop2: move.w #24-1,d0 .loop: move.l (a0),(a1)+ move.l d6,(a0) move.l 4(a0),(a1)+ move.l d6,4(a0) move.l 8(a0),(a1)+ move.l d6,8(a0) move.l 12(a0),(a1)+ move.l d6,12(a0) add.w #160,a0 bsr pause dbf d0,.loop sub.w #160*24,a0 add.w #16,a0 dbf d1,.loop2 add.w #160*24,a6 move.l a6,a0 move.w #10-1,d1 .loop4: move.w #24-1,d0 .loop3: move.l (a0),(a1)+ move.l d6,(a0) move.l 4(a0),(a1)+ move.l d6,4(a0) move.l 8(a0),(a1)+ move.l d6,8(a0) move.l 12(a0),(a1)+ move.l d6,12(a0) add.w #160,a0 bsr pause dbf d0,.loop3 sub.w #160*24,a0 add.w #16,a0 dbf d1,.loop4 add.w #160*24,a6 move.l a6,a0 move.w #10-1,d1 .loop5: move.w #24-1,d0 .loop6: move.l (a0),(a1)+ move.l #-1,(a0) move.l 4(a0),(a1)+ move.l d6,4(a0) move.l 8(a0),(a1)+ move.l d6,8(a0) move.l 12(a0),(a1)+ move.l d6,12(a0) add.w #160,a0 bsr pause dbf d0,.loop6 sub.w #160*24,a0 add.w #16,a0 dbf d1,.loop5 add.w #160*24,a6 move.l a6,a0 move.w #10-1,d1 .loop7: move.w #24-1,d0 .loop8: move.l (a0),(a1)+ move.l d6,(a0) move.l 4(a0),(a1)+ move.l d6,4(a0) move.l 8(a0),(a1)+ move.l d6,8(a0) move.l 12(a0),(a1)+ move.l d6,12(a0) add.w #160,a0 bsr pause dbf d0,.loop8 sub.w #160*24,a0 add.w #16,a0 dbf d1,.loop7 ;now save bsr f_create bsr f_write bsr f_close bsr set_old_palette bsr set_med_rez dc.w $a009 bsr set_user MOVE.W #$0,-(SP) ; RETURN TO GEM DESKTOP. TRAP #1 RTS *********************** * SUBROUTINES SECTION * *********************** f_create move.w #0,-(sp) pea filename move.w #$3c,-(sp) trap #1 add.l #8,sp move.w d0,handle rts f_write move.l #buffer,-(sp) move.l #eob-buffer,-(sp) move.w handle,-(sp) move.w #$40,-(sp) trap #1 add.l #12,sp rts f_close move.w handle,-(sp) move.w #$3e,-(sp) trap #1 addq.l #4,sp rts pause: move.w d0,-(sp) move.w #3000,d0 pau: nop dbf d0,pau move.w (sp)+,d0 rts set_super: clr.l -(sp) ;Set super stack equal move.w #$20,-(sp) ; to user stack before call trap #1 addq.l #6,sp ;correct stack move.l d0,stack_save ;save old supervisor stack value rts set_user: move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 ;back to user addq.l #6,sp ;correct stack rts get_old_palette: move.w #8-1,d0 lea $ff8240,a0 lea old_palette,a1 get_old: move.l (a0)+,(a1)+ dbf D0,get_old rts set_new_palette: lea pic+2,a0 bra set_pal set_old_palette: lea old_palette,a0 set_pal: lea $ff8240,a1 move.w #8-1,d0 set_p: move.l (a0)+,(a1)+ dbf d0,set_p rts get_screen_base: move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,screen_base rts get_original_rez: move.w #4,-(sp) trap #14 addq.l #2,sp move.w d0,original_rez rts set_low_rez: clr.w -(sp) bra set_rez set_med_rez: move.w #1,-(sp) set_rez: move.l #-1,-(sp) move.l #-1,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts SECTION BSS stack_save: ds.l 1 screen_base ds.l 1 original_rez: ds.w 1 handle: ds.w 1 old_palette: ds.w 16 even buffer: ds.b (16*24)*10 ds.b (16*24)*10 ds.b (16*24)*10 ds.b (16*24)*10 ds.b (16*24)*10 eob: PERSISTENCE OF VISION MENU 20 ----------------------------- CONTENTS: POV20.S Source code to menu POV20.PI1 Menu picture 32X24FNT.DAT Font data 32X24FNT.PI1 Font picture STEALFNT.S Font grabber source code AUTO117.IMG Music CONTENTS.DOC This file Persistence Of Vision P.O. Box 40 Thornton-Cleveleys Lancashire FY5 3PH ENGLAND 0 cmp.b #01,d0 ;escape beq exit cmp.b #$b,d0 ;0 key bne.s not_zero tst.w zero_counter bne.s aa eor.w #$111,$ff8240 eor.w #$ffff,toggle move.w #10,zero_counter bra.s main_loop zero_counter: dc.w 0 not_zero: tst.w zero_counter beq.s car aa: sub.w #1,zero_counter car: cmp.b #2,d0 ;1 key blt main_loop cmp.b #7,d0 ;6 key bge main_loop move.l d0,-(sp) bsr isr_off move.l old_base,a0 ;screen_base bsr set_low_rez move.l (sp)+,d0 ;key is in D0.. J.. POV26 S $K)POV26 PI1 VB}FONT DAT WvFONT PI1 {B}RAMPAGE IMG t  STEAL S TCONTENTSDOC 蛛 ;-------------------------------------------------------------------------; ; The following source code and art have been released by ; ; PERSISTENCE OF VISION for use by others for NON-Profit ; ; making purposes only. The code is supplied as is and no claim can ; ; be made against PERSISTENCE OF VISION for loses incured through ; ; the use and/or missuse of it. ; ; ; ; All soundtracks are copyright of the original authors ; ;-------------------------------------------------------------------------; ; ; This code was released on ; Persistence Of Vision ; Official Source Code Disc 1 *********************************** * POV 26 * * ------ * * Written by * * MAC SYS DATA * * 28-6-90 * *********************************** ; Special menu with ISR driven scrolline BUFFER_SIZE: EQU 17*4 WIDTH: EQU 25 ** ** NOTE: THIS MENU WAS WRITTEN FOR AUTORUN 4 SO IT WILL NOT P_EXEC ** YOUR PROGRAM FROM HERE. ** (that means it will not run your program from here!) ** To make it work, put AUTORUN4.PRG in your AUTO folder ** after this menu. ** lea bssstart,a0 move.l #bssend-bssstart,d0 clear_bss clr.b (a0)+ sub.l #1,d0 bne.s clear_bss bsr set_super wait_for_drive tst.w $43e bne.s wait_for_drive bsr hide_cursor bsr save_pal bsr set_palette bsr get_base move.l #screen,d0 clr.b d0 move.l d0,new_base move.l d0,a0 ;screen_base bsr set_low_rez bsr set_for_border ************************************************************************* * play RAMPAGE music (C) MSD 1989 * * Other files needed;- * * RAMPAGE.IMG into TUNE * * Stolen from the GIGABYTE CREW in '88 * ************************************************************************* move.b $484,old484 move.b #2,$484 ;no sound from IKBD bsr set_chip ; 0=normal tune ; 1=hi score? move.l #1,D0 bsr tune bsr transfer move.w #$ffff,horiz_sync main_loop tst.w horiz_sync bne main_loop MOVE.W #$FFFF,horiz_sync move.b $fffc02,d0 cmp.b #01,d0 ;escape beq exit cmp.b #$b,d0 ;0 key bne.s not_zero tst.w zero_counter bne.s aa eor.w #$111,$ff8240 eor.w #$ffff,toggle move.w #10,zero_counter bra.s main_loop zero_counter: dc.w 0 not_zero: tst.w zero_counter beq.s car aa: sub.w #1,zero_counter car: cmp.b #2,d0 ;1 key blt main_loop cmp.b #7,d0 ;6 key bge main_loop move.l d0,-(sp) bsr isr_off move.l old_base,a0 ;screen_base bsr set_low_rez move.l (sp)+,d0 ;key is in D0.L and.l #$ff,d0 lea filenames,a6 sub.b #2,d0 mulu #14,d0 add.w d0,a6 tst.w toggle beq.s hz50 eor.b #2,$ff820a hz50: move.l old_base,a0 bsr set_low_rez bsr restore_pal bsr show_cursor move.b old484,$484 lea $ffff8240.w,a0 clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.w (a0) bsr user_mode move.l old_base,a0 move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ clr.w -(sp) trap #1 addq.l #2,sp exit: bsr isr_off move.l old_base,a0 bsr set_med_rez bsr restore_pal bsr show_cursor move.b old484,$484 bsr user_mode clr.w -(sp) trap #1 *************** * Subroutines * *************** scroll tst.w delay beq.s carry_on sub.w #1,delay rts carry_on move.l line_ptr,a6 cmp.b #$7f,(a6) bne.s no_delay add.l #1,line_ptr move.w #320,delay rts delay dc.w 0 no_delay cmp.b #$ff,(a6) bne loop3 lea scroll_line,a6 ;restart message move.l a6,line_ptr loop3 tst.w scroll_number bne loop2 move.w #WIDTH,scroll_number moveq #0,d0 move.b (a6)+,d0 move.l a6,line_ptr sub.w #32,d0 mulu #68,d0 lea font,a6 add.l d0,a6 ;letter address is in a6 ;transfer letter into buffer lea buffer,a1 move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6)+,(a1)+ move.l (a6),(a1) ;68 bytes each char loop2 move.l new_base,a6 add.l #32000+480,a6 move.l a6,a2 add.w #152,a2 lea buffer,a1 ;scroll buffer into right pixel of screen ready for scrolling move.w #17-1,d1 loop roxl.w 2(a1) ;scroll roxl.w (a1) ;letter move.w sr,d0 ;get the X flag (extra bit scrolled from letter) and.w #1,d0 ;mask off lowest bit or.w d0,(a2) ;put onto screen sub.w d4,d4 ;clear carry flag to prevent crap appearing at top of letters add.w #4,a1 ;increase buffer position add.w #160,a2 ;increase screen dbf d1,loop move.w #17-1,d0 loopy roxl.w 152(a6) roxl.w 144(a6) roxl.w 136(a6) roxl.w 128(a6) roxl.w 120(a6) roxl.w 112(a6) roxl.w 104(a6) roxl.w 96(a6) roxl.w 88(a6) roxl.w 80(a6) roxl.w 72(a6) roxl.w 64(a6) roxl.w 56(a6) roxl.w 48(a6) roxl.w 40(a6) roxl.w 32(a6) roxl.w 24(a6) roxl.w 16(a6) roxl.w 8(a6) roxl.w (a6) sub.w d4,d4 ;clear X flag to stop wrapping. add.w #160,a6 dbf d0,loopy sub.w #1,scroll_number rts set_super clr.l -(sp) ;set supervisor mode move.w #32,-(sp) trap #1 addq.l #6,sp move.l d0,stack_save rts user_mode move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts save_pal lea old_pal,a1 lea $ffff8240,a0 move.w #16-1,d0 save_p move.w (a0)+,(a1)+ dbf d0,save_p rts restore_pal lea old_pal,a0 bra.s set_p set_palette lea pic+2,a0 set_p: lea $ffff8240,a1 move.w #16-1,d0 set_pal: move.w (a0)+,(a1)+ dbf d0,set_pal rts get_base move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,old_base rts set_med_rez move.w #1,-(sp) bra.s set_rez set_low_rez clr.w -(sp) set_rez move.l a0,-(sp) move.l a0,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts hide_cursor: pea di_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts show_cursor: pea ei_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts set_for_border: ori.w #$700,sr move.l $70,old70 move.l $120,old120 move.b $fffffa07,olda07 move.b $fffffa09,olda09 move.b $fffffa17,olda17 move.b $fffffa1b,olda1b move.b $fffffa21,olda21 MOVE.L #new_vbl,$70.W MOVE.L #horiz_isr,$120.W MOVE.B #1,$FFFFFA07.W CLR.B $FFFFFA09.W BCLR #0,$FFFFFA0F.W BSET #0,$FFFFFA13.W BCLR #3,$FFFFFA17.W CLR.B $FFFFFA1B.W CLR.B $FFFFFA21.W MOVE.W #$2300,SR rts isr_off ORI.W #$700,SR move.l old120,$120 move.l old70,$70 MOVE.B olda07,$FFFFFA07 MOVE.B olda09,$FFFFFA09 MOVE.B olda17,$FFFFFA17 move.b olda1b,$fffffa1b move.b olda21,$fffffa21 MOVE.W #$2300,SR endmusic: lea $ff8800,a0 move.l #$8080000,(a0) move.l #$9090000,(a0) move.l #$a0a0000,(a0) rts set_chip: move.w #5,D0 clr.w D1 lea $FF8800,A0 .loop: move.b D1,(A0) move.b #0,2(A0) sub.w #1,D0 bne.s .loop move.b #7,$FF8800 move.b $ff8802,D2 and.b #$C0,D2 or.b d1,d2 move.b D2,$FF8802 move.b #8,$FF8800 move.b #0,$FF8802 move.b #9,$FF8800 move.b #0,$FF8802 move.b #10,$FF8800 move.b #0,$FF8802 rts transfer: lea pic+34,a0 move.l a0,a2 add.w #16000,a0 add.w #16000,a2 move.l new_base,a1 move.l a1,a3 add.w #16000,a1 add.w #16000,a3 move.w #199,d7 .lines: move.w #20-1,d6 .words: move.l (a0)+,(a1)+ move.l -(a2),-(a3) move.w #200,d0 .p nop dbf d0,.p dbf d6,.words dbf d7,.lines rts ********* * ISRs * ********* new_vbl clr.b $fffffa1b.w move.l #horiz_isr,$120.W move.b #199,$fffffa21.w move.b #8,$fffffa1b.w movem.l d0-a6,-(sp) ;preserve regs move.w pic+4,$ffff8242.w clr.w horiz_sync bsr tune+$106 bsr scroll bsr scroll bsr scroll movem.l (sp)+,d0-a6 rte horiz_isr ;$120 clr.b $fffffa1b.w move.l d0,-(sp) REPT 50 nop ENDR moveq #0,d0 .loop cmp.b $ffff8209.w,d0 bne.s .loop CLR.B $FFFF820A.W REPT 22 nop ENDR MOVE.B #2,$FFFF820A.W move.l a0,-(sp) lea pal_table,a0 move.w #17-1,d0 col_loop move.w (a0)+,$ffff8242.w REPT 120 nop ENDR dbf d0,col_loop move.l (sp)+,a0 move.l (sp)+,d0 rte pal_table dc.w $123 dc.w $124,$125,$126,$127,$137,$237,$247,$347 dc.w $357,$457,$467,$567,$577,$677,$777,$fff rte ******** * Data * ******** scroll_number: dc.w 16 ei_mouse: dc.b $14,8 di_mouse: dc.b $12,$1a line_ptr: dc.l scroll_line scroll_line: DC.B "WELCOME TO P.O.V. 26 ALL CODING BY MAC SYS DATA, THE " DC.B "GRAPHIX AND FONT ARE FROM OUR NEW ARTIST - PRETTY GOOD EH? ALY IS STILL A " DC.B "MEMBER OF P.O.V. BUT CAN'T SUPPLY ENOUGH PICTURES TO MATCH MY PACKING SPEED. " DC.B " THE NEW ARTISTS NAME " DC.B "IS RATHER LONG SO WE WILL CALL HIM OZ FOR SHORT (WITH ONE Z). " DC.B " WELL HERE IS A TOTALLY HALF MEG COMPATABLE DISC. " DC.B " THE ULTIMATE DEMO WAS A BOOT LOADING DEMO WITH ALL THE DATA STORED " DC.B "AS RAW DATA BUT NOT ANY LONGER! HEY HI-TECH, I LIKE THE MESSAGE TO ALL " DC.B "HACKERS, IT CERTAINLY CAUGHT ME BY SURPRISE, CAN YOU USE THE SAME " DC.B "LOADER ON ALL YOUR DEMOS AS I RIPPED IT OFF IN UNDER 15 MINUTES. IF " DC.B "OK END OF TEXT AS I'M RUNNING OUT OF DISC SPACE.... " dc.b $ff,$ff even font: incbin "font.dAT" even tune: Incbin "rampage.IMG" even pic incbin "pov26.PI1" filenames: ;filenames are 14 chars long..... dc.b "ULTIMATE.MSD",0,0 dc.b "DECADE.FB",0,0,0,0,0 dc.b "FOFT7.MSD",0,0,0,0,0 dc.b "WIZARDS.MSD",0,0,0 dc.b "COPIER.POV",0,0,0,0 even SECTION BSS bssstart old484 ds.w 1 horiz_sync ds.w 1 old_base ds.l 1 old_pal ds.b 32 stack_save ds.l 1 toggle ds.w 1 ;hertz toggle old70 ds.l 1 old120 ds.l 1 olda07 ds.b 1 olda09 ds.b 1 olda17 ds.b 1 olda1b ds.b 1 olda21 ds.b 1 even buffer ds.b BUFFER_SIZE new_base ds.l 1 ds.b 256 screen ds.b 32000+160*48 bssend#'W ((Iy88TT QQ *hhU @MT(( ~~? ? a@a@7UUUUUUT@T@~*QQ??ss0ARct!!1AQ#4EVw0 0   @@D}TGt8QQ8800;;$$`h`h ߀   00``ll @2@2} @@0m~o  "ߙ f@0 @P_  00 ``ll L0GO@@~?  WI@ʏ $P((}~ =PP1xUUv " _b * *@AsBP߯P  c|>>A1Lss@@ PP)9 ((~~? ? 33?? ?? a@a@ D@?L@@PP??77aa&H" DX@ _ߠ   0066aa3300l0l0  5L15(@P@P~? {a?  0 p` ` w ?? aa``{{ 00@?@T?+ 0w; ?l`z)iX((03?? ?l0oOO%GR`xsa J BIBK$?$QQ#'W ((Iy88TT QQ *hhU @MT(( ~~? ? a@a@7UUUUUUT@T@~*QQ??ss ? /o%*U*UUu] Հ 00ll`` @_ @O@1UUUUUTUTUU?om@ UUWW U ??ooaa `@@55UEUEAA@@UU0a0n.UU**~0a?0?US U@@PPTT|c  U~u(xP(? U7HU@B PP UPBWw@ D~DW  @@@@¸@@  u}D %w(D(00~~??33 C`QQ @Bk@@00??ww<0D**\ fu@Z@    6 6 00  000???TT@A#__P߭R @@Uv "Uf6~0ߍgx_UVP *UU* ??00 66?@@\}^}u_u^TWWV8(9?7(UW(_P@@VP$qۈ$0 ~?3APAPUGUG  )TwwT@BApj@QP"݀"(v( ?| ~@?@z4CWIVEרE(@@@3@38PB@ :PPWWՊ*AA@+@` UUUTP<TT>?0``TUUUPU@UPXGU U ,**-~?~`0?0?~? ss DDUE*UETUU^`|`_T_P_T )wUWUUT?8?0? @jR_R_@@@EϿ@EUUUUWW0U)1(''A***UU***U` jamm`~UPUPtUUx5D DB^!T L@{{AH*(UW*(l}T~~? ?  ?E8w:_t_u=3@sB``UUUU@ @ Xx??77@}}#+]ԢoUU!Wu** 00ff<<? ? ?0?>?  UE~C?[_08RRPP0EE?`l` `uuKL,,]88Q* qu* "~"++ aa ?x?0?@ 8 r0$%X߇ڧ%XGDTOWW ?c0!O*#'UvH``g9ywP~?` /aE #=+~@@,,_E_Š: __|]\Uo e131Bw~ 8Xe@@ -~A/KCLE&Q/.{{ B6 jT}WT:xD$ۮ$Q* QaH"s ]?0?:DptD@ttH4@uK}z}|48I6: `|`TVuuU"j'L~!\{  ! 15 @ ?x0 ::du] @?@@@1?WW UU @@??@pTWT88x>~|  @x|@``  0:HHAmMl~ρ(<p3<??TVT00 ?_`d@+k? @@XBoX"// 1D__^^ ?@@@ TWT2 R  @Q@ ~x +L 3L G_wvuuUU"|h``0L|PGP IT ~^!_JB UD@@E UUX 88UP('(@@? / /+WW wwUપUU@UT ` p TuREED@@  ff C|]: P2Dx2AAA!46 QVaV ?@@  U U@PP`s_ !((qWD96 ?પ  ~( T`+T~~uu(` UUU@@UPpUUm}TTUPT`{~$(w`..tP?  0>>*  8 e]e]`"߀ @UUUTU 99=BX@: :  `  p p!43#qq`  QUUUUB yF!@@ *TTUTUTUUUU@PP f?nS\L@@(5UUU**U@U` UUUPU4K{4}_P((?0?*TTUUUU* U@U@UU `;`AA@` xh`?@UUUb!k@@B__D@@??  XX@@~@  *@8?@UUU{B @%hh?? ! PԀ(o?PUT {n@@  H ?*@)  0 8TT4LH?TUTU@@ UPRT Rg.,((<|3<?? ? BJo0AADD&a~?TUU@@UPU%@[-Db b < f? ? u}a؞ a%z%77 ?@@@uubb"b@@_QAtTK{0(m@ @@%~{`0 ?*?*jઠw 0?0?0?5TUU UPX?@5U@UPgP oox` ?   o ` ??  ?  pU`U@@?0? TUU?@5?@ PUTB*??.o `? j?@yy/>0?  o_]Z  π? ~~px `5*TTUUPUPUTTPTUjUUUUjAP@^A^pq01>?? *5 U UXX *5@ *5@@(/`,5*T T U U@U@UP@@ P @@`UUUPQQVQV@p|c y?~ ?  ?0?p ?@ @?UUyy` ?@@88@ < ? *R>@>@@  ?T TTT@ (`? ? *@(@}UV3078?? ?TPP ?@ ?A?a~`  ? UUp xyf ? ?  ?0?0 ?@ ?@UUpxx` ??@ |  ?T *TTUUU Px ?T T*@*P`   ?T  Pj@U@UנP00?? ?TP* @?A :P?`  ?T@ @ "UwP~a ? ?T@ ?@zU P>1?0 ? ?c??8 ??@?0?~xgg|< ?op 877 ??~ ??@0 0f ?@ ?`8 ? ? `  ? @ UUUUUUUU@P =À80 ?@ ?7@ ?@UUUUUUUUPP78?xgx< !?gx ?0?8UUUUUUUUUU' ?0<x300  >/|`70?}O0 '4_?x|a@<?O#x88~a~?q`@@<1>?`p`>8?0O80 ~?>$|0`~ ?C><8?y0?n `?? ` ?0?|~0 ((X`,0?? X``HHX` k " 33 \`X`  <  @@??  HHp<<@@`xxC  aQPQPxAA<<BB8'' @@  ߄߄_ _ 8''BB Ȑ@""q0JaJa~B?!?  C  D  @`xHP~B@@ @``P@P AB@ xHH`wp 0x@HxX`w| À"A 0xH  ?jj8(|lp   0 xh<(~j?jj p  0 0 0 xh  @?@>"8|D 0x@H?!@?@@8|D 8(0xH @h8G( >"   0x@H h8G ?!@>" (<<$$ 0xH 00xHT 00x@H@00xHH<<~B@ x8>|"D00xH   h X VƀE  `  h@X`  h X u((@ ( (+5  h X bGQ$B  @B@HxbG@IH x*@H" " @Hx *@ H) H x?@D "@0@Hxx?@x@ * 0H x*U@DBU*@ ?UA"UQ @Hx(D|*U@@ Hx* ?U@,@ H x @@(8$<00@0Hx Pp ``<<13bfxxππ|y|y@@0fc~̀ fc000ffcc~~ffcc0fcv`f̀cfc0<3f|c0?? 0` 00|y|y``<<33<|<| 0ffnٌf  77||ff00ٌٌ~x~x 0` 3xf`c6mٌf ?n`<c6lf  T*??pppppppxp<pp ?ppp????? ppppppppppppp? ppppx<<x> ppppppppppppp? ppx<<x<<xppp  ppx<??<?pp?pp7?pp|ǀxx?yyx||?<<<<<|>~ppppppppppp~>|~~|xxxxxxxxxxxx >|?ppppppppppp????p ?p??????? ppppppp??pppp??? pppppppppp?????pppp??pppp?88???~???pp ~?pppppppppp pppppppp?ppppppppppp??ppppppppppp??pppppppp??pppppppppp ?ppppppppppp? pppppppppppp ?????? pppppp`ppp<pxpppppxp<ppp ppppppppppppp?ppppppppppppp ?ppppppppppppp ?ppppppppppp??pppppppppp ?pppppppGpgpwpp???pppppppxp<pp ?ppp????? ppppppppppppp? ppppx<<x> ppppppppppppp? ppx<<x<<xppp  ppx<??<?pp?    P`@0 wpppp<<<<>>>>pppp<<<<xxxx<<<<~~~~xxxx<<<<pppp||||<<<<pppp||||pppppppp???pppp7777LJǀyyypppp????yyyppppxxxpppp|||||||pppppppp???pppppppppppp~~~~>>>>      ||||@???@xxxx~~~~@xxxx@xxxxpppAxxxxpppxxxx>>>>pppxxxx||||pppppppppppppppxxxxpppxxxx@pppxxxx@ppp~~~~xxxx@???xxxx @||||xxxx@??????@ @@@@@````@@@@ @@@@  @@@@?????? ??? ??????pppppp???pppppp???ppppppppppppppp ppppppppppppppppppppp????pppppppppppppppppp?????????????????????ppppppppppppppppppppppppppp????????????????????? @@@@$$$$@@@@ @@@@>>>>@@@@??@??~~~?????????@@???ÃApppÃpppppppppCpppσpppppppppG ~~~~σpppppppppÕppppppppp_̃ppp8888??σppp??σppp_pppppppppOpppppppppGpppppppppCppppppppp8888Appp@???ppp@ ???????~~~<<<<  <<<<````pppp@@@@```` @@@@@@@@???????????? ??????``` pppppppppppp??????pppppppppppppppppppppppp<<<<pppppppppppppppppppppxxxxppppppppppppppppppppppppppppppppppppppppppppppppppp ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppxxxxpppppppppppppppppppppppp<<<<ppppppppp???pppppppppppp?????? ??? ???ppp???????????????????????? ppp???ppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppppp???pppppppppppppppGGGGppppppppppppppppppggggpppppppppppppppppppppwwwwppppppppppppppppppppppppxxxxpppppppppppppppppp????ppp<<<<ppppppppppppppp???pppppppppppp    ??? ??? ??????      ???pppppppppppppppppppppppp???ppppppxxxxxxpppppp<<<<<<xxxppp<<<<<<<ppp<<<<pppxxxxppp<<<<pppxxxx???ppp<<<<ppp<<<pppxxxpppppppppppp>>>>pppppp??? ??? mAӌ H H H).05.05:05:<5:kkkkk+-++kkk +?@F'9+Ap QFJ+ gQ @F'  F`GQQ@F'9?p QFNuZtn"BX`0( 4hT@Jsf4hp2s1@ `(.+@P`(.8+@Q`(. ++P`vBhYY`bY`\Y*Q)Y+`N`@B(,`:|@,`2|,`*`"B(`LP-`Q-`S(fVB("hpkd@J(g@$h$!J R(Rhh!IJ(-g J+fP-Nu(fNu(gR(NuS(Nu<eX e0e4d@Ev4r!J!J`h @`\R@`R@E4r!J$b`:@@E4rN~(g$S(dh$h *kR @(h((:"hg"h!ICr0(,g\() (+gf*f(*d,r`(*e,A+ dAeIdA Gg$(SfBF(jFh1FF`D +f+ C<+(.(-j(-(.8F|C(Nu?? / gaw GGp0S#}Y8{eQ>, ~wpjd^YTOKGC?;852/,*'%#!   ),7]s{                G8QH@A0p0<CQk v 7k x7k zk yk }k | ||P PNuQNuNuGaXJk tgSk tJ+ f8J+ gS+ k v + g+ + yA+ xA7k zS+ J+ gj 0+ ~k`0+ ~kJ+ gj 0+ k`0+ kkNu 4 H \ p  $ 8 L `2 X3D)>1== "< &34P=":1)3">193 "<3"<3  3Z3B=  .'"21#2   B CBRYA?) )  ;RDN+ H8 + Nuo4  6 6  D R R g w w w w R w w w w  r  r $"        Ձ    5530303055555)0,)0,)('FA:)$FA:5'FA:%$FA:5'FA:%$047<47<@7<@C<@CH0,)0,)('FA:)$FA:5'FA:%$FA:5'FA:%$047<47<@7<@C<@CH$$$%$$'$$,))%$$" 000100300855100.+,+) H H H b b b b b b H H H mAӌ H H H).05.05:05:<5:?```O0``|```@@x??ξξξlll9>>??888 < ||>>x?@?ǂǂǂ|8?|<<|x1??@`<??c0p>?@> <<?````8888>>>>|p>8(ǀ? AAAA@@@@""""|<|phpAAAA@@@@ ?}x?<BBBBHHHH````?px?8| HHHHaaaa|?>>>ssss|?L?d?|?????8@l?A?|p?q@M<?~:9cɟ8???7???8<?<<?5 ???xp|:epeq^>~??<?6.>>??{<&.>zxd/?8?x`??~l/>?3~?0?``?s|??o_?| ?/_?`}? <<??  xx /?? 3 9'?? 9?g's/o>?;?'/O?<??x?o?o?p?;??߆~O??p?o?????^?pp}xxx??<?>|||8x<94 88Ο?~xxx}}|h//w?><|?|?|}?``o??{F{{vn>\|<|||}} ~?|n||><\<||}}^^Ο.?L ,|<<h|i}g}?///onono___?V\~|||88|]|0(pppώώώ888?66=6=~8;xttt;;;ppp񃮃888?|;::qqu8;y`x0;z;z;z?oSSS888}]]]>>{{^{;8;?c"`  888}www>>]]];;8;??l 7nnn?{www>?;;9;ǀxGGGnnn:::?z;;;>?܎܎9׹Rij;H<<<nnn7>?9ǹ' a^   ?jjj>߮ݮݮ$999?]\:W??uuu   NNNm ;;;]\];```;|?0g??;;>>>6]?|||8?00???xDxx ( &C#?@AA???q Ppd???? ~A/?sppl?ooo~@sM<ÁÁÃ~FTcɟ8~UDU c?8||||??wU-?xxxxxgAAC2T -@p g,_ Di ? q~~~6^>a?,_Zi??@6~&f?|Id?,__ RK?n`&dId?,Т/_TZK?dn |Id?-h^*[?l]<`I(d?-_TT?0N~>?0*Id?,أG_(D? }}?ߪ@V?I(d?^K?TT ܀@VId?]j¥?߀(H.?@@9?VId?Z"?߀h?33L߱V Id?\vÑ? ??{{ c3VId?ZR?P?} 4'UTId?\vÑ?} ????2N0gzUDId?ZH? ???/3 ޿@!|  UId?\jÉ?} ??/a????ǪU?T ([XH? o A>@:w?@>?@???U_͠ P[\jÉ? @@|o(8?y ? U@ [XH?@@O???@  xU*Q[\vÑ? ??O<<vUT]ɡ[XR??}|U_A[]v‘?-??@????|U@wYɡZ~S|**P 5@?Q??^>*UIC%v*~ TT*PP sUW00/]?UTZI%}? :>A@U_ƠO?IC%j*.?!?*U?ZI%#>&'X~ @@PW(l|?IC%j*~~~AA   L<ZI%x# ~? XX\8888~?8IC%qh4||PU@?@@T,,@;<8zI%h#T |* ? ^^_ c?IE%qh4?? |/1>??vI%j#T? ~ |SS _@`<''?I%Q.G4>.?|!! 1hpx??vN&Kh|!!^ |VVU___! N&.G(~}}|P! !UT N &Kh?|P ppOO_ N &.GH~~|x@B?./<=N &Oh|  "??X_>F>*GH>~~~ |??B"ށOhxxxx@?@χP I_ـ߀ @6Dը*H !??@'/__ ]:\h>>Aww>>@~????7Dը*,,TP|**>@UP)9}:\P@|xxDD8|7DŠ:|pppU@p?T??>>}:\Pa|`a,* x|?7DŠ:B|AC <>__e{ZQ].P ??00|@?f?~@@@HGJ5 ?``|||/? wA{~U{??@ @|Bk`_HG6 ?@@? |?!.?``wQ{nT # @x?x88Go`_HF p|D8|``wQ{nT xx`<<`;^ȀG ]&&? [q @F~(lYY _A>;W s99~ΡØØ<` [q >>A~@_q_UU@UU@PUUP-PP}_@;W ?""p :>![q@@@=}PPUUUUUUUU^_^___;V @@88 ..DVA==EEUUUEPAUU@W߻D7Vpꢊ( 6nQ 7^^ 7nQ????--  7^ÿ??ee pn> ppp333" ?^>@@@>>>   papapa8>8>8>OOOqqq111n6???888??? 999111   8^1 1 1 ́Ä111   111p|n !????  11|| :^PQJ9??????    111||n !/@@@@ >^ !V? ?? ]nPQ/  >^ !V ~~nPQ.  (^ ! ``33||||\n   ```>>>̓̓̓000666lll0f0f0f >^APP```888>>>000>|>|>|xxx@~a  nnnppp̓̓̓[0[0[0lll0x0x0x >>@q00ggnn0]`y(((>p},x*|`(8*r|Hx~~~*|*r|Hp>>>@>@>@>AAA>>>~>~>~>?>?>?>~~~AAA>>>>>>AAA???*r|Hp???AAA@@@@a@a@aAAAAAA@@@AAA@c@c@cAAAAAAc@c@c@@@@*r|HpAAA@@@@Q@Q@Q@@@AAA@@@AAA@U@U@UAAAU@U@U@@@@*r|Hp~~~@@@|I|I|I>>>AAAGGGAAA|I|I|IAAA>>>>>>I|I|I|GGG*r|Hpppp~~~AAA@@@@E@E@EAAAAAAAAA@A@A@AAAA@@@A@A@A@AAAjrP`pppAAA@@@@C@C@CAAAAAAAAAAAA@A@A@AAAA@@@A@A@A@AAAV'r`>>>AAA>>>AAA>>>~>~>~>>>>>>>~~~AAA>>>>>>AAA>>>U*&U*&U*&U*&~>>AA~~AA>>>>A>A>@@~>~>~~~~~~U*&>??AAaaAA@c@cAAAAaAaA@@@@@@AAAAAAAA@A@AU*&QQAA@U@UAAQAQA@@@@@@AAAAAAAA@A@AU*&>>IIAA|I|IAA>>>>IAIA@@||||~A~A~A~A|~|~U*&@@EEAA@A@AAA@@EAEA@@@@@@AAAADADA@D@DU*&@@CCAA@A@AAA@@CACA@@@@@@AAAABABA@B@BU*&AA~~AA>>A>A>@@~>~>A~A~AAU*&U*&U*&U&&>>~~>>>>>>>>>>~>~>~~VU%> AAAAAAAAAAAAAA@A@AVU%> AA@@@@@A@AAA@A@AU%x> AA>>@@@A@A~~|~|~U> AA@@@A@A@@@D@D~U> AAAAAAAAAAAA@@@B@B`U> >>~~>>>>>>>>>>@>@>AA~ _ @@5 P>~>>>A LC@CACATE@E@EA>@I~I~I \QQAQA @aAaAaA >>> >>A>  T*????????????||~~||x???qn^?>|?????????sÆÆs?;1;88p|~??~|p?```@????????????????????????????????  ????????????????????>?????????????????????????????????????~?;>;?;?;?;;998{{???????????????????????????????????????????????????????????????????????????????? ?~??~>??????~??????????????????????????>?????                                 ` `(`/A  _NuHa: fX~C2@C 2E$C E $C E$CE$CE$CE$C2C2NuAJg>S(j8PRh0( @ f BA0`Ap0ACE>M>KvJmgB."B.&B.*LHNuS]f;ARaAaAaKFA6a?_@A"A^a?_@ A&Aa?_@A*0-g@?Aat"h  )fBm>CGG|?```G]LHNuz|>:"h"&@ @gh(ft&h4$Pf!E$Prj,j*B fB<` f B;B!E&&z!K" "h"&AJAgz!E8A&IJ&fkQ JkXA($za!ERZAZ|@.@@Z!J $za!J!E0EET&Nu~G J(gS(`"h0 g f)?!@0"h fB|R0` f.    T0` f)@@"z!I!G0`t fiT0`J fG*i T0`< f|*R0` f |*R0` fV0ii"h0Q+R0J(gS(`NS(fHh"h  f Ti` g f)?[!@`Q-R(+k((,@C@20(!(*fVC`. f"VCh (+j D ` ( `VCJ( g(  C(.J(gS(`V((Jjf&f(dr`(eA dAeAdA G.( g~2(H$(8v ԁ!B8HBB(-(Q(A0BhNu4:2:JBgtA~KBA!B(|z@$z`!ERZ@Zt|@.BBZ!J $zp`!J!E0B(B(RA;ANu}(   " &*h8 a)_dd2AnLh8`i^d 2AnPh8'a_e2 anT@b`^`dh8  M / gaw GGp0S#}Y8{eQ>, ~wpjd^YTOKGC?;852/,*'%#! nLnXTFMX;@  旔枟䕞                                                                                                                               %($&'.,+)')'&).2+                                                                                                         x beq.s car aa: sub.w #1,zero_counter car: cmp.b #2,d0 ;1 key blt main_loop cmp.b #6,d0 ;5 key bge main_loop move.l d0,-(sp) bsr isr_off move.l old_base,a0 ;screen_base bsr set_low_rez move.l (sp)+,d0 ;key is in D0.L and.l #$ff,d0 lea filenames,a6 sub.b #2,d0 mulu #14,d0 add.w d0,a6 tst.w toggle beq.s hz50 eor.b #2,$ff820a hz50 move.l old_base,a0 bsr set_low_rez bsr restore_pal bsr show_cursor move.b old484,$484.w lea $200.w,a0 ;move filename to screen move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ bsr PERSISTENCE OF VISION MENU 27 ----------------------------- CONTENTS: POV27.S Source code to menu POV_BOOM.PI1 Menu picture LOST.FON Font data TRACKER.MUS Music CONTENTS.DOC This file Persistence Of Vision P.O. Box 40 Thornton-Cleveleys Lancashire FY5 3PH ENGLAND elay: cmp.b #$ff,(a6) bne not_wrap_scroll lea scroll_line,a6 ;restart message move.l a6,line_ptr not_wrap_scroll: tst.w scroll_number bne loop2 ;no new letter needed ;now test for new speed tst.w new_speed beq.s no_new_speed move.w new_speed,speed move.w new_mask,mask clr.l new_speed ;clear speed and mask in one go no_new_speed: move.w #WIDTH,scroll_number clr.l d0 move.b (a6)+,d0 move.l a6,line_ptr mulu #32*4,d0 lea font,a6 add.l d0,a6 ;letter address is in a6 ;transfer letter into buffer lea buffer,a1 move.w #32*4,d0 .loo. #.. POV28 S 9JPOV28 PI1 eB}LOST FON r,IRONLORDIMG P$NOBL_TXTS (VPOV28 TXT *STEAL_2 S |,TEXT RAW i11 DAT 3$2 DAT kf<$3 DAT nfE$4 DAT sfN$5 DAT wfW$6 DAT zf`$7 DAT fi$8 DAT fr$PICS L{CONTENTSDOC q ;-------------------------------------------------------------------------; ; The following source code and art have been released by ; ; PERSISTENCE OF VISION for use by others for NON-Profit ; ; making purposes only. The code is supplied as is and no claim can ; ; be made against PERSISTENCE OF VISION for loses incured through ; ; the use and/or missuse of it. ; ; ; ; All soundtracks are copyright of the original authors ; ;-------------------------------------------------------------------------; ; ; This code was released on ; Persistence Of Vision ; Official Source Code Disc 1 *********************************** * POV 28 * * ------ * * Written by * * MAC SYS DATA * * 28-7-90 * *********************************** * Assemble with 2.08+ * *********************************** * * Variable speed scroll * scroller uses a LSL and not ROXL * opt o+,w- BUFFER_SIZE: EQU 32*4 WIDTH: EQU 32 lea bssstart,a0 move.l #bssend-bssstart,d0 clear_bss clr.b (a0)+ sub.l #1,d0 bne.s clear_bss move.l #screen,d0 clr.b d0 move.l d0,new_base bsr set_super bsr wait_for_drive bsr hide_cursor clr.w pic+14 bsr save_pal bsr set_palette bsr get_base move.l new_base,a0 ;screen_base bsr set_low_rez bsr intro bsr steal_pov_logo bsr set_for_border ;************************************************************************ ;* IRONLORD * ;* -------- * ;* Stolen by: MAC SYS DATA of P.O.V. 21/07/90 17:37 * ;* From: The Medway Boys * ;* Include files:- * ;* IRONLORD.IMG into TUNE * ;************************************************************************ move.b $484.w,old484 move.b #2,$484.w ;no sound from IKBD ; only one tune bsr tune bsr transfer move.w #$ffff,vsync_flag main_loop: tst.w vsync_flag bne.s main_loop ; move.w #$123,$ffff8240.w bsr ripple bsr animate_pov bsr scroll ; move.w pic+2,$ffff8240.w move.w #$ffff,vsync_flag move.b $fffffc02.w,d0 cmp.b #01,d0 ;escape ******************** beq exit tst.w key_delay beq.s do_test sub.w #1,key_delay bra.s do_rest key_delay dc.w 4 do_test ;test for speed changes in scroller cmp.b #$4e,d0 bne.s not_plus cmp.w #16,speed ;first + bge.s do_rest move.l speed_table_pos,a0 move.w (a0)+,new_speed move.w (a0)+,new_mask move.l a0,speed_table_pos move.w #4,key_delay bra.s do_rest not_plus: ;now - cmp.b #$4a,d0 bne.s do_rest cmp.w #4,speed ble.s do_rest move.l speed_table_pos,a0 sub.w #4,a0 move.l a0,speed_table_pos move.w (a0)+,new_speed move.w (a0)+,new_mask move.w #4,key_delay do_rest: cmp.b #$b,d0 ;0 key bne.s not_zero tst.w zero_counter bne.s aa eor.w #$222,pic+2 eor.w #$ffff,toggle move.w #10,zero_counter bra main_loop not_zero: tst.w zero_counter beq.s car aa: sub.w #1,zero_counter car: cmp.b #2,d0 ;1 key blt main_loop cmp.b #6,d0 ;5 key bge main_loop move.l d0,-(sp) bsr isr_off move.l old_base,a0 ;screen_base bsr set_low_rez move.l (sp)+,d0 ;key is in D0.L and.l #$ff,d0 lea filenames,a6 sub.b #2,d0 mulu #14,d0 add.w d0,a6 tst.w toggle beq.s hz50 eor.b #2,$ff820a hz50 move.l old_base,a0 bsr set_low_rez bsr restore_pal bsr show_cursor move.b old484,$484.w lea $200.w,a0 ;move filename to screen move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ move.l (a6)+,(a0)+ bsr user_mode clr.w -(sp) trap #1 exit: bsr isr_off move.l old_base,a0 bsr set_med_rez bsr restore_pal bsr show_cursor move.b old484,$484.w bsr user_mode clr.w -(sp) trap #1 *************** * Subroutines * *************** scroll tst.w delay beq.s carry_on sub.w #1,delay rts carry_on move.l line_ptr,a6 cmp.b #'['-32,(a6) bne.s no_delay add.l #1,line_ptr move.w #80,delay rts delay: dc.w 0 no_delay: cmp.b #$ff,(a6) bne not_wrap_scroll lea scroll_line,a6 ;restart message move.l a6,line_ptr not_wrap_scroll: tst.w scroll_number bne loop2 ;no new letter needed ;now test for new speed tst.w new_speed beq.s no_new_speed move.w new_speed,speed move.w new_mask,mask clr.l new_speed ;clear speed and mask in one go no_new_speed: move.w #WIDTH,scroll_number clr.l d0 move.b (a6)+,d0 move.l a6,line_ptr mulu #32*4,d0 lea font,a6 add.l d0,a6 ;letter address is in a6 ;transfer letter into buffer lea buffer,a1 move.w #32*4,d0 .loop: move.b (a6)+,(a1)+ dbf d0,.loop loop2: move.l new_base,a6 add.l #32000+480,a6 move.l a6,a2 move.w speed,d3 ;bits per VBL scrolled sub.w d3,scroll_number moveq #0,d1 OFF set (160*31)+152 REPT (32*20) moveq #0,d0 move.w OFF(a6),d0 lsl.l d3,d0 or.w d1,d0 move.w d0,OFF(a6) swap d0 move.w d0,d1 OFF set OFF-8 ENDR add.w #152,a2 lea buffer,a1 ;scroll buffer into right pixel of screen ready for scrolling move.w #32-1,d2 loop moveq #0,d0 move.w 2(a1),d0 lsl.l d3,d0 move.w d0,2(a1) swap d0 move.w d0,d1 moveq #0,d0 move.w (a1),d0 lsl.l d3,d0 or.w d1,d0 move.w d0,(a1) swap d0 moveq #0,d1 move.w mask,d1 and.w d1,d0 ;mask data coming onto screen eor.w #$ffff,d1 ;invert mask and.w d1,(a2) ;mask data already on screen to prevent wrap or.w d0,(a2) ;or coming on over already there! addq.w #4,a1 add.w #160,a2 ;increase screen dbf d2,loop rts *************************** * CUSTOM SUPPORT ROUTINES * *************************** animate_pov: bsr clear_pov_area move.l new_base,a1 add.l #(160*153),a1 move.l animation_position,a0 cmp.w #$ffff,(a0) bne.s no_animation_reset lea animation_table,a0 move.l a0,animation_position no_animation_reset: moveq #0,d0 move.w (a0),d0 add.w d0,a1 lea pov_logo,a0 move.w #17-1,d0 .loop: REPT 13 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ ENDR add.l #160-(13*8),a1 dbf d0,.loop add.l #2,animation_position rts clear_pov_area: move.l new_base,a0 add.l #160*153,a0 moveq #0,d0 move.l d0,d1 move.l d1,d2 move.l d2,d3 move.l d3,d4 move.l d4,d5 move.l d5,d6 move.l d6,a1 move.l a1,a2 REPT 50 movem.l d0-d6/a1/a2,(a0) add.w #36,a0 movem.l d0-d6/a1/a2,(a0) add.w #36,a0 movem.l d0-d6/a1,(a0) add.w #160-72,a0 ENDR rts ********** ripple *********** ripple: move.l new_base,a6 add.w #96,a6 move.l ripple_pos,a4 moveq #0,d3 move.w #72-1,d7 .loop: lea logos,a5 add.w d3,a5 moveq #0,d0 cmp.b #$ff,(a4) bne.s .no lea ripple_table,a4 move.l a4,ripple_pos .no move.b (a4)+,d0 .loop2: mulu #72*64,d0 add.l d0,a5 move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ move.l (a5)+,(a6)+ add.w #160-64,a6 add.w #64,d3 dbf d7,.loop add.l #1,ripple_pos rts *************************** steal_pov_logo: lea pov_logo,a1 lea pic+34+(160*153),a0 moveq #0,d1 move.w #17-1,d0 .loop: REPT 13 move.l (a0)+,(a1)+ move.l (a0)+,(a1)+ ENDR add.w #160-(13*8),a0 dbf d0,.loop rts set_super: clr.l -(sp) ;set supervisor mode move.w #32,-(sp) trap #1 addq.l #6,sp move.l d0,stack_save rts user_mode: move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 addq.l #6,sp rts save_pal: lea old_pal,a1 lea $ffff8240,a0 move.w #16-1,d0 save_p: move.w (a0)+,(a1)+ dbf d0,save_p rts restore_pal: lea old_pal,a0 bra.s set_p set_palette: lea pic+2,a0 set_p: lea $ffff8240,a1 move.w #16-1,d0 set_pal: move.w (a0)+,(a1)+ dbf d0,set_pal rts get_base: move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,old_base rts set_med_rez: move.w #1,-(sp) bra.s set_rez set_low_rez: clr.w -(sp) set_rez: move.l a0,-(sp) move.l a0,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts show_pic: lea pic+34,a0 move.l new_base,a1 move.w #32000/4-1,d0 d_pic: move.l (a0)+,(a1)+ dbf d0,d_pic rts hide_cursor: pea di_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts show_cursor: pea ei_mouse move.w #$2-1,-(sp) move.w #$19,-(sp) trap #14 addq.l #8,sp rts pause: move.w d0,-(sp) move.w #1000,d0 .loop: nop dbf d0,.loop move.w (sp)+,d0 rts set_for_border: ori.w #$700,sr move.l $70,old70 move.l $120,old120 move.b $fffffa07,olda07 move.b $fffffa09,olda09 bp: move.b $fffffa17,olda17 move.b $fffffa1b,olda1b move.b $fffffa21,olda21 MOVE.L #vert_isr,$70.W MOVE.L #horiz_isr,$120.W MOVE.B #1,$FFFFFA07.W CLR.B $FFFFFA09.W BCLR #0,$FFFFFA0F.W BSET #0,$FFFFFA13.W BCLR #3,$FFFFFA17.W CLR.B $FFFFFA1B.W CLR.B $FFFFFA21.W MOVE.W #$2300,SR rts isr_off: ORI.W #$700,SR CLR.B $FFFF8260.W move.l old120,$120 move.l old70,$70 MOVE.B olda07,$FFFFFA07 MOVE.B olda09,$FFFFFA09 MOVE.B olda17,$FFFFFA17 move.b olda1b,$fffffa1b move.b olda21,$fffffa21 MOVE.W #$2300,SR endmusic: lea $ff8800,a0 move.l #$8080000,(a0) move.l #$9090000,(a0) move.l #$a0a0000,(a0) rts transfer: lea pic+32034,a0 ;Clear data at end of a DEGAS pic clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ clr.l (a0)+ move.l new_base,a0 lea pic+34,a1 move.w #200-1,d0 .loop1 bsr vsync bsr display_all add.w #160,a0 add.w #160,a1 dbf d0,.loop1 rts display_all movem.l d0-d7/a0-a6,-(sp) move.w #160/4-1,d0 .loop1 move.l (a1)+,(a0)+ dbf d0,.loop1 lea offset_table,a2 move.w #31,d0 .loop2 move.w (a2)+,d2 move.l a1,a3 add.w d2,a3 move.w #160/4-1,d1 .loop3 move.l (a3)+,(a0)+ dbf d1,.loop3 dbf d0,.loop2 movem.l (sp)+,d0-d7/a0-a6 rts vsync: move.w #$ffff,vsync_flag vs: tst.w vsync_flag bne.s vs rts intro pea intro_mess move.w #9,-(sp) trap #1 addq.l #6,sp move.w sr,-(sp) ;do loads of colours move.w #$2700,sr ;di move.w #$ffff,d7 lea $ffff825e.w,a0 colours: move.w #$700,(A0) move.w #$710,(A0) move.w #$720,(A0) move.w #$730,(A0) move.w #$740,(A0) move.w #$750,(A0) move.w #$760,(A0) move.w #$770,(A0) move.w #$670,(A0) move.w #$570,(A0) move.w #$470,(A0) move.w #$370,(A0) move.w #$270,(A0) move.w #$170,(A0) move.w #$70,(A0) move.w #$71,(A0) move.w #$72,(A0) move.w #$73,(A0) move.w #$74,(A0) move.w #$75,(A0) move.w #$76,(A0) move.w #$77,(A0) move.w #$77,(A0) move.w #$67,(A0) move.w #$57,(A0) move.w #$47,(A0) move.w #$37,(A0) move.w #$27,(A0) move.w #$17,(A0) move.w #$107,(A0) move.w #$207,(A0) move.w #$307,(A0) move.w #$407,(A0) move.w #$507,(A0) move.w #$607,(A0) move.w #$707,(A0) move.w #$706,(A0) move.w #$705,(A0) move.w #$704,(A0) move.w #$703,(A0) move.w #$702,(A0) dbf d7,colours move.w (sp)+,sr move.w pic+2,$ffff8240.w pea cls move.w #9,-(sp) trap #1 addq.l #6,sp rts wait_for_drive: wfd: tst.w $43e bne.s wfd rts ********* * ISRs * ********* vert_isr: movem.l d0-d7/a0-a6,-(sp) ;preserve regs move.b #49,counter ;49 lines at 4 pixels each ISR move.l #horiz_isr,$120.W clr.w vsync_flag bsr tune+$1c2 movem.l pic+2,d0-d7 movem.l d0-d7,$ffff8240.w movem.l (sp)+,d0-d7/a0-a6 move.w pic+4,$ffff8242.w clr.w $ffff8240.w move.b #8,$fffffa1b.w move.b #3,$fffffa21.w RTE horiz_isr: move.b #4,$fffffa21.w ;4 lines per isr move.l #go_border,$120.w rte go_border: subq.b #1,counter beq.s extended_scan rte extended_scan: REPT 98 nop ENDR clr.b $ffff820a.w ;60 hertz REPT 31 nop ENDR move.b #2,$ffff820a.w ;back to 50 hertz move.l #lower_border,$120.w rte lower_border: clr.b $fffa1b ;DI all other interrupts movem.l d0/a0,-(sp) move.w pic+2,$ffff8240.w lea pal_table,a0 move.w #32-1,d0 col_loop: move.w (a0)+,$ffff8242.w REPT 120 nop ENDR dbf d0,col_loop movem.l (sp)+,d0/a0 clr.w $ffff8240.w bclr #0,$fffa0f rte pal_table: dc.w $101 dc.w $202,$303,$404,$505,$406,$307,$207,$107 dc.w $007,$017,$027,$037,$047,$057,$067,$077 dc.w $076,$075,$074,$073 dc.w $072,$071,$170,$270,$370,$470,$570,$670,$770,$770 rte ******** * Data * ******** SECTION DATA zero_counter: dc.w 0 ;used as a delay for 50/60 hertz speed: dc.w 4 ;bits per VBL to scroll mask: dc.w $000f ;mask for scroll new_speed: dc.w 0 new_mask: dc.w 0 speed_table_pos: dc.l speed_table speed_table: dc.w 4,$000f dc.w 8,$00ff dc.w 16,$ffff old484: dc.w 0 scroll_number: dc.w 16 old_pal: ds.b 32 stack_save: dc.l 0 toggle: dc.w 0 ;hertz toggle old70: dc.l 0 old120: dc.l 0 olda07: dc.l 0 olda09: dc.b 0 olda17: dc.b 0 olda1b: dc.b 0 olda21: dc.b 0 even vsync_flag: dc.w 0 old_base: dc.l 0 counter: dc.w 0 ei_mouse: dc.b $14,8 di_mouse: dc.b $12,$1a buffer: dcb.b BUFFER_SIZE,0 even ************************************** line_ptr: dc.l scroll_line scroll_line: incbin text.raw dc.b $ff,$ff even ************************************** font: incbin lost.fon even ************************************** tune: incbin ironlord.img even ************************************** intro_mess: dc.b 27,'E' dc.b 27,'Y%-',"Menu coded by" dc.b 27,"Y'.","MAC SYS DATA" dc.b 27,'Y*.',"All packs by" dc.b 27,'Y,.',"MAC SYS DATA" dc.b 27,"Y0'","Persistence Of Vision are" dc.b 27,'Y2.',"MAC SYS DATA" dc.b 27,'Y31',"BORIS" dc.b 27,'Y4/',"OZYMANDIAS" dc.b 27,'Y52',"ALY" dc.b 27,'Y60',"DR.SYNE",0 even cls: dc.b 27,'E',0,0 even ************* bouncy POV thingy ********** animation_position: dc.l animation_table animation_table: dc.w 0,160,160,320,480,640 dc.w 800,1120,1440 dc.w 1760,2080,2560,3040,3520,4000 dc.w 4640,4000,3520,3040,2560,2080,1760,1440,1120,800,640 dc.w 480,320,160,160 dc.w $ffff ************* ripple data ************ logos: incbin 8.dat incbin 7.dat incbin 6.dat incbin 5.dat incbin 4.dat incbin 3.dat incbin 2.dat incbin 1.dat ripple_pos: dc.l init_ripple_table init_ripple_table: dcb.b 72,0 dcb.b 72,0 dcb.b 72,0 ripple_table: dcb.b 72,0 dc.b 1,1,1,1,2,2,2,2,3,3,3,3,4,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,8,8,8,8 dc.b 9,9,9,9,10,10,10,10,11,11,11,11,12,12,12,12,13,13,13,13,14,14,14,14,15,15,15,15 dc.b 14,14,14,14,13,13,13,13,12,12,12,12,11,11,11,11,10,10,10,10,9,9,9,9,8,8,8,8 dc.b 7,7,7,7,6,6,6,6,5,5,5,5,4,4,4,4,3,3,3,3,2,2,2,2,1,1,1,1,0,0,0,0 dc.b 1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15 dc.b 14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3,2,2,2,1,1,1,0,0,0 dc.b 1,3,5,7,9,11,13,15,15,15,15,15,13,11,9,7,5,3,1,0,0,0,0,0 dc.b 1,3,5,7,9,11,13,15,15,15,15,15,13,11,9,7,5,3,1,0,0,0,0,0 dc.b 1,1,2,2,2,3,3,3,4,4,4,5,5,5,5,6,6,6,6,7,7,7,7,7,8,8,8,8,8,8,8,8,8,8,8,8 dc.b 8,6,4,2,0,2,4,6,8,10,12,14,12,10 dc.b 8,6,4,2,0,2,4,6,8,10,12,14,12,10 dc.b 9,8,7,6,5,4,3,2,1,0 dc.b 1,2,3,4,5,7,9,11,14,15,15,15,15,15,15,15,15,15,15,15 dc.b 14,13,11,9,6,3,1,0,1,3,6,9,11,13,14,15 dc.b 15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15,15 dc.b 14,13,11,9,6,3,1,0,1,3,6,9,11,13,14,15 dc.b 14,13,11,9,8 dcb.b 60,8 dc.b 7,7,6,6,5,5,4,4,3,2,1,0 dc.b 1,1,1,2,2,2,3,3,3,4,4,4,5,5,5,6,6,6,7,7,7,8,8,8,9,9,9,10,10,10,11,11,11,12,12,12,13,13,13,14,14,14,15,15,15 dc.b 14,14,14,13,13,13,12,12,12,11,11,11,10,10,10,9,9,9,8,8,8,7,7,7,6,6,6,5,5,5,4,4,4,3,3,3,2,2,2,1,1,1,0,0,0 dc.b 1,1,2,2,3,3,4,4,5,5,6,6,7,7,8,8,9,9,10,10,11,11,12,12,13,13,14,14,15,15 dc.b 14,14,13,13,12,12,11,11,10,10,9,9,8,8,7,7,6,6,5,5,4,4,3,3,2,2,1,1,0,0 dc.b 0,15,0,14,0,13,0,12,0,11,0,10,0,9,0,8,0,7,0,6,0,5,0,4,0,3,0,2,0,1,0 dc.b 0,1,2,3,4,5,6,8,10,12,14,15,15,15,15,15 dcb.b 40,15 dc.b 14,15,13,15,12,15,11,14,10,13,9,12,8,11,7,10,6,9,5,8,4,7,3,6,2,5,1,4,0,3,0,2,0,1,0,0,0 dc.b 1,0,2,0,3,0,4,1,5,2,6,3,7,4,8,5,9,6,10,7,11,8,12,9,13,10,14,11,15,12,15,13,15,14,15,15,15 dc.b 14,15,13,15,12,15,11,14,10,13,9,12,8,11,7,10,6,9,5,8,4,7,3,6,2,5,1,4,0,3,0,2,0,1,0,0,0 dc.b 1,0,2,0,3,0,4,1,5,2,6,3,7,4,8,5,9,6,10,7,11,8,12,9,13,10,14,11,15,12,15,13,15,14,15,15,15 dc.b 14,15,13,15,12,15,11,14,10,13,9,12,8,11,7,10,6,9,5,8,4,7,3,6,2,5,1,4,0,3,0,2,0,1,0,0,0 dc.b 1,0,2,0,3,0,4,1,5,2,6,3,7,4,8,5,9,6,10,7,11,8,12,9,13,10,14,11,15,12,15,13,15,14,15,15,15 dc.b 14,15,13,15,12,15,11,14,10,13,9,12,8,11,7,10,6,9,5,8,4,7,3,6,2,5,1,4,0,3,0,2,0,1,0,0,0 dc.b 1,0,2,0,3,0,4,1,5,2,6,3,7,4,8,5,9,6,10,7,11,8,12,9,13,10,14,11,15,12,15,13,15,14,15,15,15 dc.b 14,13,12,11,10,9,8,7,6,5,4,3,2,1 dc.b 1,2,3,4,5,6,7,8,8,8,8,8,7,6,7,8,9,10,10,10,10,10,9,8,9,10,11,12,13,14,15,15,15,15 dc.b 15,15,15,15,15,15,15,13,11,9,11,13,15,15,15,15,15 dc.b 15,15,15,15,15,15,15,15,15,15,15,15 dc.b 14,14,13,13,12,11,9,6,3,0,3,6,8,9,10,11,12,13,13 dc.b 12,11,9,7,4,1,0,3,6,7,8,8 dc.b 7,6,4,2,0,2,4,6,7,7 dc.b 6,5,3,1,0,2,4,5,6,6 dc.b 5,4,2,1,0,2,3,4,5,5 dc.b 4,3,1,0,2,3,4,4 dc.b 3,1,0,1,2,3,3 dc.b 2,1,0,1,2,2 dc.b 1,0,1,1,0,0,0,0,0,0,0,0,0,0,0,0,0,0 dc.b 1,2,3,4,5,6,7,8,9,10,11,12,13,13,13,14,14,14,15,15,15,15 dc.b 14,14,14,14,13,13,13,13,12,12,12,12 dc.b 11,11,11,11,10,10,10,10,9,9,9,9,8,8,8,8,7,7,7,7,6,6,6,6,5,5,5,4,4,4,3,3,2,2,1,0,0,0,0 dcb.b 72,0 dc.b $ff ************************************** pic incbin "pov28.PI1" dcb.w 160*65,0 ************ roll out screen data ********** offset_table dc.w 160*($28+62),160*($28+56) dc.w 160*($28+52),160*($28+49) dc.w 160*($28+46),160*($28+44) dc.w 160*($28+42),160*($28+40) dc.w 160*($28+39),160*($28+38) dc.w 160*($28+37),160*($28+36) dc.w 160*($28+35),160*($28+34) dc.w 160*($28+33),160*($28+32) dc.w 160*($28+31),160*($28+30) dc.w 160*($28+29),160*($28+28) dc.w 160*($28+27),160*($28+26) dc.w 160*($28+25),160*($28+24) dc.w 160*($28+23),160*($28+21) dc.w 160*($28+19),160*($28+17) dc.w 160*($28+14),160*($28+11) dc.w 160*($28+7),160*($28+1) ****************************************** filenames: dc.b "THE_RACE.DEM",0,0 dc.b "JUNGLE.BOS",0,0,0,0 dc.b "SYNC.MSD",0,0,0,0,0,0 dc.b "COPIER.POV",0,0,0,0 EVEN SECTION BSS bssstart new_base ds.l 1 pov_logo ds.b 13*8*17 ds.b 256 screen ds.b 32000+(160*48) bssend  ?  @@__@@TP \` ߇@@X@Z 1BSR#4EVgw`??0???? p1   111?xߘÆÆa|πÆÆ0088? ÆÆ00rrϘϘ߿?߀?oÆl0`ϘϘoo!!0_@@?  ,<? <?ټټ?`? ''0'00@p@p@@?#`??0>>0߈x _@@ߔlpF0?`@@ϟ4?<; ` `\` @??88φϹ?'8? `x/xx`>>xx~?0    pp>8ǀ? <g *@0?80?5` ?e|Y p<τ8<<0x`xx?  P p p UcX@@@~||0? & 3?Z ?<À<`##`ϟϟ P@P?@?0X@@    ?  @@__@@TP \` ߇@@X@Z0?x~0?ϟϟٟ ]\_`0< / ? p@ppppdd`d````8808CC_@@??0OO' ?`AA0C0C8A8C___0?@?A  ??ßß !\__t ?z0?8>??Ǽ???P_`pLps/  !-A? P`ppp@pA 00   PO_@@@0| <||>>> ??`TXTXTT(|CUCUXXSs088~0p!!   ????  `88 T` XU@?X 0?0?0@<>>%UUUUXXUUUUUUTV? ?T5  X@`~? ?*T5?UUUX!>?@@`l? ?@TUj?UUUCXC|@@? ~0$G88?`!1 ?? 880pAAUUU@@UX`T  AUUUUP xx>60? 7?8'?^_@@`<GssPز }?@ f~s s^ CCh_x@<*** * Zg@`^a DD9}UU@UUUTUTUUuQ}P}_C@? 0/0??88z  ? ?qq5TAUUAAUU]_]___tt@ {{ ( (// pp0? EPAUUTTPUUUW00`@?|{?? ??0___@<LUUUjUU?`T<x0 UUU5U*?PWx3 UUUUXW  p H ???UU` U TT? AG0G Do@?*H"B8 ?? ~^*@X>""@? 2o@`0 #:0@? ` FH<^} UUV@5??UPT `x@???ex`c0< >aA;@0? 3?8P  X[@` '9$9r ? UUUU*?``TTUUUU*TT'd8p0U**UU 5?TUUUPB??a UJO|h`@@7`=v N @@?@@? @@0?<@J?~ ~ @ @? ?#G?1>?```  c? F:6}???ah!1?@?? 4<||i|O#w!| 8     Z!H3C~~?0@@ @ @?0s?`UUU@?~UUTs?P|.+-tNj~j@?j@?|G?_/|@~ gUVV5 ?@5@ ?UUT< @Dm ? | -i9a??00 3? % UG>  ?8 ++?<    ?0 @?t <<?@ ?@B!4p>>`UUj?U+UTm?Hb| pU~*jUU?T@p w@ yUV@ ??5U*?T?0Atx||UT`UT?`d?I@|??xUX P U T?0? P;Z\~ U _> XUT?$@@@?? 5Z\|| ??7u@@:< ?3?>>@?8???FDD]^?@?p}9{-.?~@ ???yI2]^̈3ẅ  !uV;xPw`?FdDˣ?nD;]^`0P UUUUUUUUXTp"S_Հ* jP    ? 1v"΀n?]^`$ *@ ?<.@=%sp+p P <?  @@?x <?$R]MO_ ǪU<<VWDD@H ԇ+xx߈wP sC|?%<~~DW.jaaVW UUUUUUUUUUa x~~>>$6AÐC *X2+ P~|p'>'j@'>~MNx;@VWg8<><00ʁ ~Ed~ʓʝ5`2 P?xx8 ~@ '/7 Ͽ0 n'g0wdATE@??! ` ?k1}Px?qq<<_jUU*\z8{>?5t =`77@@?s|<`x?P(0?xx``@@@@00{qp_xx??AA@@a`~0`up /? p %p??@9"x ?>>oooo!<?...888À...U]]1p7jjP<?888pppggg;;;D D D g g g RTd7V?V888888cccB|B|B|ccc  ?*2U /xxxaaaf~f~f~\\\aaa͙t 0?ll`` & &qq~`~`88``  nGnGhwhw99<`<`00h|h|݆x`c`|fff___``` ___aaabo0sOqaX,7'hwP/,7?h h V,f7???`+-368?0H8?mv8? mv8?66aa?? ??ÇÇ̇ǏpmvL<=660a0aqq aaa|>l6l6yÀÀaa|p)uumv:d166``<yy?p? aa?l6l6B11?À0``Uv=7m} oa?%u928UeT816`g?p a? 61p ΏpT,=60c} oa 6߀a  H<f8 a@?? 3r 0? >O  `< 0>|`y`p+ 0@{ Ն*@ ?L`  U_K_lyH?0PP˪U}p?_KlP@z? @ZEE40 R-˫Tk|| @o*K `oK@ @{xK@l @`|S3 l@,(0@@4 <8^? @X` =!? 1` 0  K€ hops ?x  Ѐ0@'<8,@48@ţ` X`X0`"#< x:3?Jπ p0?1a @UF(Jπ1>biN+ v/  T W 0?<,0 8@C0?@$P`@#@pc|HpN/0@8@ npq $\ gNpK, 6Lpw X ?"Op  ?9  @/0@gx$^`@@a~H  T*????????????||~~||x???qn^?>|?????????sÆÆs?;1;88p|~??~|p?```@????????????????????????????????  ????????????????????>?????????????????????????????????????~?;>;?;?;?;;998{{???????????????????????????????????????????????????????????????????????????????? ?~??~>??????~??????????????????????????>????? fzS+ )f"z )$zj <f$z'J 0@ Nu*8FTbp~ &4Nccc !c cccAc<cdc @c!Pc, cccccc)(  Fc2`Ac(cPTd  HaLNuHz ?<&NN\NuHaXLNu/ a&_NuHz ?<&NN\NuHa,LNuHz ?<&NN\NuH`aLNuHz ?<&NN\NuHAR@`4@E4r!J$b`@@E4rN~(g$S(dh$h *kR @(h((:K(."hg"h!ICr0(,g\() (+gf*f(*d,r`(*e,A+ dAeIdA Gg$(SfBF(jFh1FF`D :}f:q C $<:9(/(-j(-(/8F| $C(Nu$8 ? M / gaw GGp0S#}Y8{eQ>, ~wpjd^YTOKGC?;852/,*'%#!     +N*v*~H,Qnn99pp55__050-00000--0500020--)            ㌄($ጄ($ጄ($ጄ($ጄ($59504444521595445421-)5))0000)&-)5)0020&-&&&&&&$)-&&&&&&$)-&0000000000002&-)5)0020&-&>>2454-245420.2541-2܈2454-245420.2541-2ܐ  ہ2454-245420.2541429<9577779549<97797542܇6666675426666675427777777777779549<97797542؁JJ2454-245420.2541-25797457975425:94952454-245420.2541-2ց2454-245420.254142Ԉ&&(!()(&($))+(%&)(&02-+)+-)(&%#%&܈5797457975425:94955797457975425:9495ܒ &&(!()(&($))+(%&)(&02-+)+-)(&%#%&&N&N&&&syy!!񀀀--(-+((+-(((-+-(-+-(-΁ۂ442476440/0----0-0247467449979;<<;97779;979;9799979<;99545222252579<9;<99匄($ጄ($㌄($($ጄ($($㌄($猄($㌄($--+-/00/-+++-/-+-/-+---+-0/--)()&&&&)&)+-0-/0--00OOOOmm00OOOOmm4I]]q]]q4I]]q]]q ጄ(+($($($($ӈ            ֈԈ""""%"%"......,.,,,,,,++++,,,,,,....وֈ""""""""""""""""Ԉ $""""%"%"""""%" "1111110000RF:.1111113333RF:.و""""""""").,).,')ށ"""'""'")')'%$ ށ"""'""'Ԉ%%%%%'"""""$)G:;:8fJ+&jaβ<fjQ&H@A0pp CQz7z+fzzz:H@E4r'J'JR |&Nu<fjQ'H@A"0pp CtQzk 7zf+ fzYz[ zW :NH@E~4r'J 'J R |'NuQ(H@A0pp C$Qz (7z+ fz z )z *:H@E4r'J ,'J 0R |(NuNuGaJ+&kgaJ+'gaJ+(gax`J+fJ+f Q&B+NuS+J+f4J+fJ+gdS+zA:Ag::3A:(AS+:%g S+f@J+gj 0:k`0:k+fzS+f"z$zj <f$z'J@ NuJ+ fJ+ f Q'B+NuS+ J+ f4J+ fJ+ gdS+ z :g::A:AS+ :g S+ f@ J+ gj 0:dk`0:Zk+ fzKS+ f"zE $zJj <f$z8'J @ NuJ+ fJ+ &f Q(B+NuS+ J+ (f4J+ &fJ+ #gdS+ #z (:g:,:A:AS+ (:g S+ *f@ *J+ "gj 0:k`0:k+ fzS+ )f"z )$zj <f$z'J 0@ Nu*8FTbp~ &4Nccc !c cccAc<cdc @c!Pc, cccccc)(  Fc2`Ac(cPTd            :H8 R P:NuK3fGߪB&BkB+|?|9 @AAF``Gha0H2HA2HC A 'I!'I!A 'I!A;]A|# 4%;-9 @@@FHA{!*P&`9KBL0NsH ,:D*z<d :g*z4GO*;p*>;p*I I((`                                                                                                                                                                                                                                                                                                                                                   @|B  9?FNu*m*{*******++ +0+8+@+O+U                       \ . ~< t)6xEP2\cNq#V! a۞ xV!|djNuHy NMXg8 9Z 9Zg xVBA  NuN (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ bsr pause add.w #160-8*8,a0 dbf d0,.loop move.l a1,eob lea buffer,a2 sub.l a2,a1 move.l a1,length ;now save bsr f_create bsr f_write bsr f_close wait: bsr get_key bsr set_old_palette bsr set_med_rez dc.w $a009 bsr set_user MOVE.W #$0,-(SP) ; RETURN TO GEM DESKTOP. TRAP #1 RTS *********************** * SUBROUTINES SECTION * *********************** scroll: move.l screen_base,a0 move.w #72-1,d0 .loop: * For POV 28 menu. * *** remove all CR/LF from a text file then sub 32 **** *** to produce a data file with an offset of 0-58 **** ; ; IN: POV28.TXT ; OUT: TEXT.RAW ; ;remove all CR/LF - $0a,$0d lea oldtext,a0 lea newtext,a1 lea oldtextend,a2 remove: cmp.l a0,a2 beq.s sub32 move.b (a0)+,d0 cmp.b #$a,d0 bne.s notlf bra.s remove notlf: cmp.b #$d,d0 bne.s not_cr bra.s remove not_cr: move.b d0,(a1)+ bra.s remove sub32: lea newtext,a0 sub.l a0,a1 move.l a1,d0 move.l d0,length ;length of text in d0 reduce move.b (a0),d1 sub.b #32,d1 move.b d1,(a0)+ sub.l #1,d0 bne.s reduce ;now save move.w #0,-(sp) pea newfile move.w #$3c,-(sp) trap #1 addq #8,sp move.l d0,d7 pea newtext move.l length,-(sp) move.w d7,-(sp) move.w #$40,-(sp) trap #1 add.l #12,sp move.w d7,-(sp) move.w #$3e,-(sp) trap #1 addq #4,sp clr.w -(sp) TRAP #1 **************** * DATA SECTION * **************** newfile: dc.b "text.raw",0,0 even length: dc.l 0 oldtext: incbin pov28.txt oldtextend: SECTION BSS newtext: ds.b 10000 per: clr.l -(sp) ;Set super stack equal move.w #$20,-(sp) ; to user stack before call trap #1 addq.l #6,sp ;correct stack move.l d0,stack_save ;save old supervisor stack value rts set_user: move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 ;back to user addq.l #6,sp ;correct stack rts get_old_palette: move.w #8-1,d0 lea $ff8240,a0 lea old_palette,a1 get_old: move.l (a0)+,(a1)+ dbf D0,get_old rts set_new_palette: lea pic+2,a0 bra set_pal set_old_palette: lea old_palette,a0 set_pal: lea $ff8240,a1 move.w #8-1,d0 set_p: move.l (a0)+,(a1)+ dbf d0,set_p rts get_screen_base: move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,screen_base rts get_original_rez: move.w #4,-(sp) trap #14 addq.l #2,sp move.w d0,original_rez rts set_low_rez: clr.w -(sp) bra set_rez set_med_rez: move.w #1,-(sp) set_rez: move.l #-1,-(sp) move.l #-1,-(sp) WELCOME TO P.O.V. 28 MENU CODED BY MAC SYS DATA, ART BY OZ, MUSIC FROM IRONLORD (ZIPPY OF THE MEDWAY BOYS SEZ IT WAS WRITTEN BY MAD MAX). ON THIS DISC IS MORE 1 MEG STUFF - I NOW ONLY HAVE THREE 1 MEG ONLY DEMOS TO GET RID OF. PLEASE LISTEN TO ALL OF THE TUNE AS IT'S GREAT AND WILL INFECT YOUR BRAIN (I KEEP FINDING MYSELF WHISTLING IT AT WORK). THE NEXT PIECE OF TEXT WAS IN MY ORIGINAL TEST TEXT AND WAS WRITTEN ON 31-7-90 -------- HELLO I'VE JUST BEEN TO SEE 'BACK TO THE FUTURE 3' WITH ALY AND BORIS. IT WAS BRILLIANT! AFTER THE FILM WE ALL WENT TO A PUB BEFORE GOING HOME IN MY ASTRA. I THRASHED THE CAR ON THE WAY BACK AND MANAGED 92 MPH (IT'S ONLY A 1.2 LITRE) BUT WE STILL DIDN'T GO FLASH, CRACKLE, FIZZZZ, BOOOOOMMMMMM!!! THE SAME THING HAPPENED WHEN I SAW 'BACK TO THE FUTURE PART 1', I RODE HOME (ON MY MOTORCYCLE) AT 97 MPH WITH MY BROTHER ON THE BACK. HE WAS RATHER UNIMPRESSED AS IT WAS VERY FOGGY AND WE COULDN'T SEE WHERE WE WERE GOING! TOMORROW NIGHT BORIS AND I ARE GOING TO SEE 'GREMLINS 2' SO I'LL GIVE MY OPINION OF IT LATER IN THIS TEXT. WELL I'VE JUST COPIED THE LATEST VERSION OF GENST2 ( VERSION 2.21) FROM BORIS AND THE TIME IS 23:47. I AM RATHER SLEEPY AND SO I THINK I'LL CALL IT A NIGHT, SO UNTIL TOMORROW NIGHT.... BYE! HELLOOOOOO, WELL I'VE NOW SEEN 'GREMLINS 2' AND IT WAS OK. IN FACT IT WAS BRILLIANT, YOU MUST GO AND WATCH IT! --------- WELL ENOUGH OF THE 'TEST TEXT', HERE'S THE REAL TEXT........ LAST NIGHT I WENT TO SEE 'TOTAL RECALL' AND IT WAS THE BEST FILM I'VE SEEN FOR AGES. I THINK IT WAS MUCH BETTER THAN BTTF 3 AND GREMLINS 2 PROBABLY BECAUSE IT WAS MORE VIOLENT - YEH! BYE. 7(%.)3!7"!#+4/4(%&5452%0!24 )2/$%(/-%/.-9-/4/2#9#,% !4-0(7)4(-9"2/4(%2/.4(%"!#+(%7!32!4(%25.)-02%33%$!3)47!36%29&/''9!.$7%#/5,$.43%%7(%2%7%7%2%'/).'4/-/22/7.)'(4"/2)3!.$)!; STEAL program ; This will remove the logo from the top right hand corner of the screens ; Use: ; Change the FILENAME to 1.DAT and PIC to 1.PI1 ; 2.DAT 2.PI1 ; 3.DAT 3.PI1 ; 4.DAT 4.PI1 ; 5.DAT 5.PI1 ; 6.DAT 6.PI1 ; 7.DAT 7.PI1 ; 8.DAT 8.PI1 ; ; In each case do a change then assemble the code and run. ; then.... do the changes again until all pictures have been processed ; bra skip filename dc.b "1.dat",0 ;destination name even pic incbin "1.pi1" ;source picture even skip bsr set_super dc.w $a00a bsr get_screen_base bsr get_old_palette bsr set_new_palette bsr get_original_rez bsr set_low_rez move.l screen_base,a1 lea pic+34,a0 move.w #32000/4-1,d0 loop: move.l (a0)+,(a1)+ dbf d0,loop lea buffer,a1 move.l screen_base,a0 add.w #96,a0 move.l #-1,d1 move.w #(72+72)-1,d0 ;down .loop: move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ move.l (a0),(a1)+ move.l d1,(a0)+ bsr pause add.w #160-8*8,a0 dbf d0,.loop move.l a1,eob lea buffer,a2 sub.l a2,a1 move.l a1,length ;now save bsr f_create bsr f_write bsr f_close wait: bsr get_key bsr set_old_palette bsr set_med_rez dc.w $a009 bsr set_user MOVE.W #$0,-(SP) ; RETURN TO GEM DESKTOP. TRAP #1 RTS *********************** * SUBROUTINES SECTION * *********************** scroll: move.l screen_base,a0 move.w #72-1,d0 .loop: roxr.w (a0) roxr.w 8(a0) roxr.w 16(a0) roxr.w 24(a0) roxr.w 32(a0) roxr.w 40(a0) roxr.w 48(a0) roxr.w 56(a0) roxr.w 64(a0) add.w #2,a0 roxr.w (a0) roxr.w 8(a0) roxr.w 16(a0) roxr.w 24(a0) roxr.w 32(a0) roxr.w 40(a0) roxr.w 48(a0) roxr.w 56(a0) roxr.w 64(a0) add.w #2,a0 roxr.w (a0) roxr.w 8(a0) roxr.w 16(a0) roxr.w 24(a0) roxr.w 32(a0) roxr.w 40(a0) roxr.w 48(a0) roxr.w 56(a0) roxr.w 64(a0) add.w #2,a0 roxr.w (a0) roxr.w 8(a0) roxr.w 16(a0) roxr.w 24(a0) roxr.w 32(a0) roxr.w 40(a0) roxr.w 48(a0) roxr.w 56(a0) roxr.w 64(a0) add.w #160-6,a0 dbf d0,.loop rts f_create: move.w #0,-(sp) pea filename move.w #$3c,-(sp) trap #1 add.l #8,sp move.w d0,handle rts f_write: pea buffer move.l length,-(sp) move.w handle,-(sp) move.w #$40,-(sp) trap #1 add.l #12,sp rts f_close: move.w handle,-(sp) trap #1 addq.l #2,sp rts pause: move.w d0,-(sp) move.w #5000,d0 pau: nop dbf d0,pau move.w (sp)+,d0 rts get_key: move.w #7,-(sp) trap #1 addq.l #2,sp rts set_super: clr.l -(sp) ;Set super stack equal move.w #$20,-(sp) ; to user stack before call trap #1 addq.l #6,sp ;correct stack move.l d0,stack_save ;save old supervisor stack value rts set_user: move.l stack_save,-(sp) move.w #$20,-(sp) trap #1 ;back to user addq.l #6,sp ;correct stack rts get_old_palette: move.w #8-1,d0 lea $ff8240,a0 lea old_palette,a1 get_old: move.l (a0)+,(a1)+ dbf D0,get_old rts set_new_palette: lea pic+2,a0 bra set_pal set_old_palette: lea old_palette,a0 set_pal: lea $ff8240,a1 move.w #8-1,d0 set_p: move.l (a0)+,(a1)+ dbf d0,set_p rts get_screen_base: move.w #3,-(sp) trap #14 addq.l #2,sp move.l d0,screen_base rts get_original_rez: move.w #4,-(sp) trap #14 addq.l #2,sp move.w d0,original_rez rts set_low_rez: clr.w -(sp) bra set_rez set_med_rez: move.w #1,-(sp) set_rez: move.l #-1,-(sp) move.l #-1,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp rts **************** * DATA SECTION * **************** stack_save: dc.l 0 screen_base dc.l 0 original_rez: dc.w 0 handle: dc.w 0 eob: dc.l 0 length: dc.l 0 old_palette: ds.w 16 even SECTION BSS buffer: ds.l 1 0@ªB Їx0/0?`S aU!`  (0_` 4 )>">@? 2GPWo85l*?`NPUUV`yOQUUUU `" ǘ8_`@DB  (ss7?`UUUU@@   ?@y  3 @ bʂh1`7%,#/-%4/0/6-%.5#/$%$"9-!#393$!4! !24"9/: -53)#&2/-)2/.,/2$:)009/&4(%-%$7!9"/933%:)47!372)44%."9-!$-!8 /.4()3$)3#)3-/2%-%'345&& )./7/.,9(!6%4(2%%-%'/.,9$%-/34/'%42)$/&0,%!3%,)34%.4/!,,/&4(%45.%!3)43'2%!4!.$7),,).&%#49/52"2!).)+%%0&).$).'-93%,&7()34,).')4!47/2+ 4(%.%840)%#%/&4%847!3).-9/2)').!,4%344%84!.$7!372)44%./.   (%,,/)6%*534"%%.4/3%%"!#+4/4(%&5452%7)4(!,9!.$"/2)3)47!3"2),,)!.4!&4%24(%&),-7%!,,7%.44/!05""%&/2%'/).'(/-%).-9!342!)4(2!3(%$4(%#!2/.4(%7!9"!#+!.$-!.!'%$-0()43/.,9!,)42% "547%34),,$)$.4'/&,!3( #2!#+,% &):::: "/////------4(%3!-%4().'(!00%.%$7(%.)3!7"!#+4/4(%&5452%0!24 )2/$%(/-%/.-9-/4/2#9#,% !4-0(7)4(-9"2/4(%2/.4(%"!#+(%7!32!4(%25.)-02%33%$!3)47!36%29&/''9!.$7%#/5,$.43%%7(%2%7%7%2%'/).'4/-/22/7.)'(4"/2)3!.$)!2%'/).'4/3%%'2%-,).33/),,')6%-9/0).)/./&)4,!4%2).4()34%847%,,)6%*534#/0)%$4(%,!4%346%23)/./&'%.346%23)/. &2/-"/2)3!.$4(%4)-%)3)!-2!4(%23,%%09!.$3/)4().+),,#!,,)4!.)'(4 3/5.4),4/-/22/7.)'(4"9%(%,,////// 7%,,)6%./73%%.'2%-,).3!.$)47!3/+).&!#4)47!3"2),,)!.4 9/5-534'/!.$7!4#()4 7%,,%./5'(/&4(%4%344%84 (%2%34(%2%!,4%84,!34.)'(4)7%.44/3%%4/4!,2%#!,,!.$)47!34(%"%34&),-)6%3%%.&/2!'%3)4().+)47!3-5#("%44%24(!."44&!.$'2%-,).302/"!",9"%#!53%)47!3-/2%6)/,%.4 9%("9%&$ ?% =ڠ' ( ''''?' tp ? '  0` ? `%0@i܀#` % =0 " ? '@ '? @ ?Ц '@%'?  @?' ,` @=% :0F>ߟϘϘ0}σ0 ?Ϙ0d$ @?0pq $ ? ?" O p@`''?''?'. 1? &$ ?% =ڠ' P@''''?'  ? '   0` ? `%0@ӺFϟϟߟߟ&0'0s̀3@ ?`%π0B ? " $_` '?''(/0? %= %030 '?''(@   ? ' 3U` Հd0?@ `%0s?@@?8ߟߏp@` 5`?UzaP@P`p ` UP5j  ? 0` /Po1@@@ ''?'8@'0/?"`d$< 8@@ª#P@0p' ''?0 x0@@UAj ? o'``&@ tp |P@Pd`'0?fϏ0g0``8??8? sO@PB'?! %??00@"'+0??0??ÃÇ`ß$`e72??p?0Ãq0( #/,009??1 ƿg)!??@ R?P@?'0""@P"Is23h,x<@||*?0?BB= F>>>LQaQaPP  U U`Y`fO@0 8   / 0?Ϡπ0`0@ªB Їx0/0?`S aU!`  (0_` 4 )>">@? 2GPWo85l*?`NPUUV`yOQUUUU `" ǘ8_`@DB  (ss7?`UUUU@@   ?@y  3 @ bʂh1`43gx=5uq  b()*j{{3qqUUUUUUUQUQUUG@??8 (*(*Op=0PPQUUPQPQUUu}u}},'8??**((( ]}8<>]P!~~yy#|||A~@&Q@ PU, @3?``BB0 `X` aU!P  <0@ /0?` x@?\c|? x|?}}@#+X7?j6P?@'XUj?UUU PC|<@'XUUUPHpp@Bcc/0p?`"!|990UUUU@@ |lO x _eg4@@3c:8yy1|}UTUTUUTTAUU@@@?=88r**_`qqA@UUUUUUUUy|y|} '8?j((((((TAUUPPAUU_._>A_  ??( ( <<``` % =0 " ? '@ '?@ ? @'@%'? @?' 0` @=% (0X8ߟϘϘ0tό0| ?Ϙ0d$  ?Ϙ0d$ ? ?$ >}|''?''?' ;&$ ?% ='@G x@''''?'' 8?` ? '  00` ? `'0 @ Nϟϟߟߟ 0'040@ ?`%σ0K`` ? " 1<gǀx '?'' @?%= % _`@ '?' ' .*0?`? ' /UVU?0?@ `%0O?A  ?ߟ߿p` ` UU?P@P`p ` U@?j?  ? 0` ?@ ''?'8@?!d$< 8_@@ʨ/j?@P' ''? x0@@TGU?` ? O'``&A?0P@Pd`' ?h`Ϗ'g0@'@'  ?40O@PH'??????! 7Ч??????@"'/0? ?ß$`e? 2@?DžP@(#> <???+`?1 !?)'{???0R?P@?=0(! ?@ۂ $(OϏ ᠰ?   1@0 EEχ@T@T(|5U5U ?eg=<'8?@@"">?>>Op@ ^a@?L6@">U/0??'?Ȥϼ$'>''?''?'] b@&$ ?% =ڠ'# <?`''''?' 0 ? '  0` ? `'0@tpϟϟߟߟ$0'0f@ ?`%ρ0E00?? ? " (?< '?''0?_`?@@%= % g/0??`@ '?''0UCV?P@? ' 'A * `?@ `%0g? pߟߟp ` j@`P@P`p ` `j?5jU  ? 0` ??b ''?'8@/`?_E@d$< 8__@@T'5??B€`' ''? x0@C*??0 ? o'``&@???P@Pd`' ???40Ϗ g0``0?0???O@PD'???????! +/? ?? ????"'70? ????@ß$`e/͠2` ???`(#? , !???s0?1 ?)#?=???R?P@?g0$Dx}Emm g珘%P'XxUu`Bzpp|||?? ? ` ` ¢Eà**@>U3ap  ǃ@@@_@`@`'8? ``  U@/@0?`_`  ªB@P`0>$">! @hSs| D8|@d?pp `pjU?@<d` aUUUT5*?@b` cUUUV@ "=><D@0p >>>@ Po@U UUU@@!?>? ;,g@Ŕc 3 hg{j@88ǀUQUQUUPPPRUWU88g ꪪ88qPUPUUUUUUUUU00{ a XOpUUTPQUUQAQAUU||}p/0?xx"(( ** `` % =0 " ? '@ '?@ ?Y @'@%'? @?' ` @=% 0` ߟϘϘ0Pϰ0p ?Ϙ0d$ ??'` ٷ&H? !@<$` ' .A? 00@Lp0$ ? `?%0C/ $ ? ?"  ''?''?' &$ ?% =%@ ''''?'  ? ' _ `@0` ? `'0-@0?;`ϟϟߟߟ#'0<0@ ?`%Ϗ0o?`  ? " ' '?'' @@@%= %  ??  |~ '?' '  >? ' ?V XYV`@?@ `%?0?-0?`ߟP߿p@`V~VPPP@P`P ` U? V   ? 0` ?DT ''?'8@?*(d$< 8@ʠ?CW' ''? x0P_V ? o'``&G@WWP@P`d0`'#`Ϗ0g0''G0WO@P`???! >??WW W"'?_`0#88?8ß$`e< 2CPPVV*c AA>""<<>p@@???kA>lD888|lD8|* ?xx}|UA>00p0<>V< A>!! !Op@ `xA> /0? @pUk>?CVª>`> kU> UUUaV Uk>UUUPְ|` B~<~ ??B~<~ ,3?y` D|8|@?">>Po}:8x xx*UUUUT0rr  ``WW#b?kx,,vY`cF?WgPPW</??0??8 / ((8@G8NP_UUUUUUUUU@U_TqTW0  pp  (//~`  qp U}UEEPUUP@UWWW݀"||""( #||8QAUEETUUUUUUUps` % =0 " ? '@ '?@ ? @'@%'? @?' ` @=% 0p0ߟϘϘ0hϘ0x ?Ϙ0d$  2A<>~ ( #< <??~~AVW@?1 #?9/!*+ `R>PA?@}0!0BHP000CAa"U  b??0? /0?**`? PjjT1zxOp ?DD8|  ?~~}|5 ?6">6">U<>>* ?lD8|  ^ay@?? ?p'8?`O0<? ?Bِ߀ p8*5?aU0p5*?UUUPհ~??͈x*5?UUUkXU>0 !??!??> ??(7?>?`CCc<<U*UUTXg9900ϫHp``J[<PpAWDD,01?a`v??a3pp`c@WUEUEUUAAAKU_TTW  #c'( 888OT_UAUAUUUUWUWUW@?0~~88""(( @`>>||U}UQADUUEEPUU>( **CCƸ9@` % =0 " ? '@ '?@ ?Y @'@%'? @?' ` @=% 0@ߟϘϘ 0@0@ ?Ϙ0d$ >xx '?'' yx  %= % 00  '?' ' *@? ' ?X5 ?` eY| ?@ `%?0?<ߟP߯ p@`XxUXc@@@P@P`P ` T<& Z3?  ? 0` > P@P ''?'8X@?  d$< 8@ʀ?TP \' ''? x0@?Z ? o'``&_?]\_P@p d`%/ϏϏpe0g0&&C@C_O@PC?<=`! ;X??CCAC__0_"'=0?/A ß$`e02?O\t_ _(#  <??z?1 ??9߇????P_R3pL ?=0 -Ap 0*>  PO@_@<|>|>> ??`TTXTXT(|CCUXUXSs0~0p!!   𪨀  T` XUX@? 0@<x|? ??? .1?~~><>>̀? ?T5 X @? ?T*5U?UUX!>?? ?l@TUUj?UUCX¨C|$8?Gǀ8`!180pAA  A㪪UUUU Pxx>6'?^_@@GssP } fs~s ^ hCCx_<**** Z^a DD9@}UUUUUUUTuT}U}QP_/0?88? z qq5TUAAUU]]AU__t_t_ {{ ꪊ (/(/pp EPUAPUUTTUUW00 ` % =0 " ? '@ '?@ ?Y @'@%'? @?' ` @=% 0@ߟϘϘ 0 0` ?Ϙ0d$ ? O? ?@ `%?0?[a@ߟ p `,|*V1? P@P`p ` j>UP@P  ? 0` ?  (  ''?'8?TP \d$< 8_@@?T*(' ''? x0*?]\_ ? o'``&O.P@Pdp`''S@S _Ϗ0&0g0''!!`O@PA?>=__0_! =??!! !"'>0?'p ppOO _ß$`e8_`2Gxx?.:/(#0 <???=X_?1 /?9?R9PF?e0 AP VI _@0x0 ?WT(__'/`w^wa>>@~0? T,*,*P|>@᪬UP )9 ??|DDx8x| |ppppUT@? |a`a,x|* ?yy |CB AC<>??|@_`f@~| T ??||@ |UUUCT¬@6 |*5U?UUaT!>?@#0x@?xXg  pD|8| tp@ UUUUP<<``A? #?Fā(~l YAY>_9?9~á<x^a~q@_@_UUU@UU-PPU}PP_p/0?p" " :>`@@=P}UUUPUUU^U^U____ @8@8 . .E==UUEEEPUUA@UW˸ϸGp(ꪊ ` % =0 " ? '@ '?@ ?Y @'@%'? @?' ` @=% 0@ߟϘϘ 0π0 ?Ϙ0d$ 0'00AϿp0$ ? `?'0q? $ ? ?" ϟ/`@''?''?'. &$ ?% =_%@!P@''''?' ! ? ' & 0` ? `'0CFϟϟ ߿`$'s3@ ?`%Ͽ0? ? " ?_` '?''!/0? %= % 30  '?' ' @   ? ' ?` d0?@ `%?0?@?@8ߟP߿ p@ ` ``UazP@P`P ` P05j  ? 0` 8P1o@@@ ''?'(@<0"/?`d$< 8@>P@0p' ''? x0@@?j ? o'``&?tp |P@p g`%?fϏpg0g0 ?? sO@PO?Ч0! /??@"'70?߃?Ç`ß$`e#2??q0(# <??9??1 ??)<ş??@ R Ps ??0"< >@x"PʶIp|p00(hx8|,*>>LQQaPaP  U`U`YOf0@ 8   /00?`0@Bê x0/0?`S a!U`  0(_` 4 )>">@ ?2GPWo8l5`*?NPUUV`yOQUUUU ` " 8_`@DB  (7?ss`UUUU@@   ?@y 3 @ bh1`34gx5u=q  b(*)j{{qq3UUUUUUUUUQQUG@??8 ((**Op=0QUPPPPUUQuQuU}}},'8??**((( ]}8?<<ÀEDAUUPP@UUPPWU_xx0` % =0 " ? '@ '?@ ?Y @'@%'? @?' ` @=% 0@ߟϘϘ 0π0 ?Ϙ0d$ _` '?Ȥϼ$'P@0pd$< 8__࿿@@? P' ''? x0*? tp | ? o'``&?P@p e`%?ML3Ϗpc0g0$$9O@PG?Z8=@! 7??`"';0????@0ß$`e!2?_?(# @`<??` ?1 ??9>x?R&pY ??0   >]P~!~yy܆#|||A~@&Q@P U@, 3?``BB0 `X` a!UP  <0@𪰀 /0?` x@?\c|x|? ?}}@#X+7?j6P?@'XUUj?UU P C|<@؀'XUUUPHp@pBcc/0?p`"!|990UUUU@@ |lO x _4eg@@3c:8yy1U|U}UTTTTUUA@U@@?=88**r_`qqAUUU@UUUyUyU}| | '8?j((((((TUAAUUP_P_U_.>A  ?? ( ( <`<`` % =0 " ? '@ '?@ ?Y @'@%'? @?' ` @?' 0@ߟϘϘ 0π0 ?Ϙ0d$ |''?''?';&$ ?% =_%@'@''''?''` ? ' 800` ? `'0 NLϟϟ`ߟ` $ρ40@ ?`%ϼ0|?`` ? " ?<gǀx '?'''?@%= %#_`@ '?' '!.0?*`? ' ?VU?0?@ `'?0?A  ?ߟp p`` U?P@P`p ` @jը?  ? 0`  @Ŀ ''?'(@0!d$< (@8j?P@' ''? H@@|<U?` ? O'@`&|>?0P@P g`%>?h`Ϗ pGϟg ???40O@P~?Zg ?????! ?/???????@"'?Ϡ0>?ß$`e/ 2~>?P@(#" ,<??%0 !?@ ($@pp|!!?  1@0EE υ@@T5T5( |?UUe=g<'8?@@"">>?>Op@ ^a@?L@6">U/<?0?`H|D8|B0@p!  8~A_PՀx8CêUUUXjU?<EUUUT5*???D|zx  `||}|@0!΀1 ??UUUU ,3?`B|?$8?w00X%- ("8"g00џ;08p8pǏ  01 ꪢ pp1AUAUUUUUUUUGUGWpp' ˫ ``??@UDUUAAAAUUEE U@@ (w_`QQEUU@U@UUU@!@!\U} ??` % =0 " ? '@ '?@ ? @'@%'? @?' ` @=% 0@ߟϘϘ 0π0 ?Ϙ0d$ ?>''?''?'=@&$ ?% =_%@#`''''?'#0 ? ' ,0` ? `'0Ftpϟϟ`ߟ` &f@ ?`%Ͼ0~?00?? ? " ??< '?''#?_`@@?%= %!g/0?`@? '?'' VCP@?? ' ?A  *`?@ `%?0? pߟ0 p ` @@`P@P`P ` ` 5Ujԟ  ? 0` 0b?߈ ''?'(@8`E?_@d$< (_@<5B??`' ''? h @*~>*??0 ? o'``&~????P@ P g`%????40Ϗpg g ?????O@P_?' ??????! ?/??????"'/0?????@ß$`e'͠2????`(#! ,>>???s0?1 ??)?=8???R Pg ??%0Dx }Emm `xp~  0XUxuB`…zpp|?|?|?  `` E  @**>U3ap  @@@@_``@'8?` `   U@@/0?`_`  Bê@`P0$>">!@ hSs |D8|@d?pp `pjU@?<d` a UUUT5@*?b` c㪪UUUV@ ">=<D@p0 >>>@  Po@ UUUU@@!>??  ;g,@Քc  3 ghj{@88UUUQPQPUUPURW88g ꪪ88qPPUUUUUUUUUU00{a  XOpUQUUTQPQUUA|A|U}p/0?xx(("**  `` % =0 " ? '@ '?@ ? '@%'? @?' ` @?% 0@ߟϘϘ π0 ?Ϙ0d$ @@@%= %, ??|~ '?' '$ >? ' < XY`V@?@ `'?0~?-0?`ߟP p VPPP@p `P ` @ V  ? 0`  DT ''?'8@ *(d%= (@ CW' ''? H@@p0V ? '`&p8WW@P@ P f`'8`ϏpgϾg``>>GW0O@py ?Z ?! ?Xg/<>WWW "'>_`08888?ß$`e<_`2?@ PPՠ*VVc AA><<"">@@p???kA>88lD8|l*D 8|?x}x|U0A>00p<>V< !A!> !Op@ `xA> /0@? pUk>C?V>>` k U >UUUaV Uk>UUUP|` B ~?<~?B~<~ y,3?` D@|8?|">>}Pox:8 *UxxUUUT0rrύ  WW``#?bk,x,vY`Üc?FWPgPW</0???? /8 ((8@G8N_UUPUUUUUUUUTT@_Wq0  pp  (//~` qp }EEUUUPPUUWW@W"||""( #||8QEAEUUUUTUUUpUs` % =0 " ? '@ '?@ ? '@%'? @?' ` @=' 0@ߟϘϘ ߀0 ?Ϙ0d$ ,0? ~`?@ `'?0?P~0ߟ ` p@ ߟ@  Հ~(P@P`P ` @TP~T  ? 0`  ~" ''?'(@ ~CWd$< (_@0 ~' ''? H@(x8WW~W@ ? '`&x<~`P@P g`%<TT~W0Ϗ@p'ϟg`ٿ`??~#h`O@P|? ??WW~W ! ?/>??++~"'? 0<???SS~Wß$`e> 2|<<> ~(#$ ,?8??~8A~VW@?1 >?') !*+ `R P\ <?%0 BPH0`px%?'A"aU  b0??? /0?`**? jjPTzx1Op ?D D 8|?~}~|5 ?6">6">U><>* ?lD8| ^ya@?? ?p'8?`O0<? ?B p8*5?aU0p5*?UUUP~??x*5?UUUXkU>0 !??!??<?0" >?>?>(?7?`CCc*<<UUUT9X9g00Hp``J[<AWPDpD,0?a`1?v?a3pp`c@WUUUEAEAUUATKT_W   #c'( 888O_AATUUUUUUUUWW@W?0~~88""(( @`>>||}UDUUQEAEUUPU>( *CC*9@` % =0 " ? '@ '?@ ? '@%'? @?' ` @?% 0@ߟϘϘ ππ ?Ϙ0d$ >>xx '?''8  %= %0  '?''0*@? ' 05` ?e|Y ?@ `%<0x<<ߟ P p UcX@@@P@P `P ` &@ 3?Z  ? 0`   P@P ''?'8X@  d%> 8@@ TP \' ''? X@@@Z ? '`&@ ]\_P@ ?0P d`' Ϗpppdd``88CC_@O@Pg ?#`! =/0CCA8C___0"'90 A ß$`e12`!\__t (#!<?z?1 09#???P_?R0 P` !%0 -A_opppA 0   PO_@@<||>>> ??`TXTXTT(|CUCUXXSs0~0p!!      T` XU@?X 0@<>>? ?T5  X@? ?*T5?UUUX!>?l? ?@TUj?UUUCXC|$G88?`!180pAA  AUUUUP xx>6'?^_@@GssPز }f~s s^ CCh_x<*** * Z^a DD9}UU@UUUTUTUUuQ}P}_/0??88z qq5TAUUAAUU]_]___tt {{ ( (// ppEPAUUTTPUUUW00 ` % =0 " ? '@ '?@ ? '@%'? @?' ` @?% 0@ߟϘϘ π  ?Ϙ0d$ ?@ `'>0|>[a@ p ߟ *1? VP@P `p ` @UP@P  ? 0`  (  ''?'8@ TP \d&? 8__@@ T*(' ''? H@ ` ]\_ ? '`&`0.P@ P d`'0SS _@Ϗ00pff``<<!!`O@Ps ?!}___0! >/8!! >@~0? ,,TP|**>@U P )9??|xxDD8| |pppU@p?T a|`a,* x|?yy CB|AC <>??|@_f~`@ |T ||?? @|UUUCT@6  *5|?UUUaT!>?@#0@x?xXg  pD|8| tp@U UUUP<<``A ?#?F~(lYY _A>?99~ΡÀÀ`@@=}PPUUUUUUUU^_^___ @@88 ..E==EEUUUEPAUU@W߸Gpꢊ( . L{.. "DCX_PLUSPRG |\PICS LZH `h-`HH DCSquish-DCX_PLUS12(zC<"EM.ަG"K<:t QJ g"JbfJg 6 B+ Uan*OK4dD`X .G/Hl?<HNA\Jg*@/?<IGra:NA.o Gp?BQp|ep:"M$IApr"QNHyLNA(Hz?<&NNz@bA2gA X`f??<>NAz/ ?< Nq .DNuAC C C CF C Ch MLa"A0*AI(aM:A(a`pA0000BPA"0<NBNu # x0(Nu&n$M0<g4Q~xvtpkg4 g 2iT@`Q`2ifP@R@ JQ`Ab"HpQ.O/?< Nq .G,n A(HC$I&I.ސ>Jhf2"g*rђgfE` N2AgSA0QSGL&^H&^L&^H&^ L&^H&^@L&^H&^`L&^H&^L&^H&^L&^H&^L&^H&^AQEt$"$ЁQJEgnCD*@|e*jg"@r g g> MS@$&(*,.$A&A(AH8H8H8H8H8H8HxQ`bAN``DCXt2D:\ARC\DCX\*.LZHD:\ARC\DCX\*.*09`'C82@ A@ p2@@2BQ"<0<NB09@4~NupBy@ 3 @a3AP@@ dB@`C,B pe`prB g2Rj3AJ@RAZp@(@AD<r@xFzA(p @dL@PL@AuH@D  CA,DF @2@H @ HBD @lBrArCH`XeJ@6p H@ o@@@ HpFpBr?HrFrdZ>@zHDAA@HH@"@@DDD f:$A6a`^@J@ rdpdA|d`Zrc` @ @BADHE @\%ZJEk`0S@أQ  La!pJ@@0:@ , 63@ |@^xR*|C*p'B8| @JEjLCRRC`U(.A@$|4B֧̰fDK֢~B`V TB5BA7B BNB7B5>BBA7,p(T@(HJ@*Dx^`qp4a(|< #̡b6(@C Al6CRAPB` Zl/SHfc `a L .@: JgR`RZ @RBBB@8i.`CB|Bd, A7@Z`:!hb*t.*fi.pp B`#"RAB%B06GB\B6`RF>`XbX@7H@,`Ea aS`b\`@X†5J@ Ly*)@A7"CBEAԳv@\T&]J ћVBF E``NA`6ԺFj rH074kа8?ejȐmě(L@NHbB`68vB* *~a.a0$`*B Rb5N|ZԻ/ | r@³B>E:B09phFCrJ@Nu>\ TV.Nu|TTa*8<@0pڬ V4J@7@@^ؕ R@RR`Ƴn \fRS@@C>v:E R A |CCRBD @@@@@@@@@Af7r"L<l\ɖ RCCfhCt@$P*@@"@`(`FH` @@d>j`T< zB @ &B @ .B 2B !@*B #@ "a 5 aưa@`f(SDR@@n*xk\kf@- \D |Prc`$ < Q`< @..a</cdBFAB@ CAB8 BT!"HS64/`.\@ an@zn rR (\ \򈓔V Q\RPh$B#aVT:*/ XHa`n A"SAp"5Z#aRB(ةJBҺ@HxH \B`PpTBa蓜8-f@B(@lf@v@L`H8Jk`<PK@`PK.pA @$HVOVblH,`PHJ @@rb<``B^@^"R5 ZF0d&dNzBF$ɼ(^<"@ :@B&/p.ز~<& IB4 0/R tRA@f !| fBR JB4UCTad*HxC(@@B&@ D @D8Sgږ@ Nu6ߢ|B24t4`TJ^<L` S7`@R:a¬&cacɨ5"$b2b? |nZcDXpBzDB6FBf8`ZT@ /,JS@Ė` \<<\@ @ @B)Bv<#4a"<*g0BVL`…B@jjNuN@AFg`If2p @ pNuv @ @F\QNuh@@d `B Lav*n@ B.B.F."D.B.HB.t@.XNu@r NATA4 :BgHl@GNAPB4BNuaN ,p$rJd* BQ0RfA .E @  @" A"A" vprt@Q6t[2AXdB, C, ppr1HjRA`` /$Lt < L""Qi@@B&@ BBBB.@BB2@BAX&B*@B08CPBP@H@ `y`fR7A PBB@P b`*LA 7LJzlNzVB4DNVZH"nAaD=@p=|.@& v|~BnpN@8ZB 0.CHAJJ.b@NJ@4`RG@XRFRCC6nmD SG|ozANA$HCZRExF`dTB>DA$0Jڤ:@2@I@n*@O<U6C6EGVRD`AaLAB.beA,@@ M Aa `0<h|AFJD`J.Bz@G@ZBFDED٤((@lARCLZH@ @ZIP@ A OXCDEf6BCR `SpdT@maE8.`~$gZ`626@z,cHv@4JDRf,rBF@Fh \BRH(D&L d@a (R`/ TbB ^@\R&L`kLHf*B|BpB3C@  C CaJv .$.$ 5P`< "N4p ٺa5n @@5 @BBBB8@BBBB@BBB@&@r 5@rԼA7fžb\ae<`2R@ 4bD AgT4F E(BX h @ =Jk>A\GS\VC>B4>C>@y@&@Y@B Of`JNjbj `@&{J@J@4@ A@ A C8Ba@ aa65j{R BgfB@`$Hzڈ@< @ T\`jv/@D 5@:  @8R@LAA0J@(H7<0 Aa:ABlC0`:*P&ʀ4@Ia,@ֿNup2("JAH瀀a"LЁ@ `C.@.g@>ɪAb;a @rH5˼@!AXNuK>J .|@tf@6>*OC *m - Э@P// b JNAO A7@@<aZ@z4  pp a׊4b>j324V2`#@*`B*pM@ T@ C6:p 0n@d@aX.g @Z6B @ a`A<Дa3ZB٬D`pJ8@ ҳ<@"p6NBf~#@@Vr@ 6rB6a֦B P@A6^C`TA3@4PCC,B*4قBBBB BDxI@|>K`<6z0ڢj^b&%* h@Q>J 1@# @vHR6rB&~0 h $BQP6 b`D@< NNTb |r@&63@.ܑ0@.GTA@4@@@7@4*@4@4"@D, D,D,7B@  x(b<BHĸ| :7A=`p@*B ڻ ^p*ZAB@B{azpaF7@lک04XU@jxՄr׀2r@ Ԃ&rׄrҤZӆCdB&z@@ @ E@NEJxpA@&A@ BC@B@ β^ha6CI0a/v Ē0@@@ *@JA @|@BD@f@HD@P@BD@:@B Dn @$@"B"D/@BِAa.@B&D,@@)@& P@p(@b~a@*B@*D@@8FD!@t6,J0 ڊ R@t" a :Rٚf֛dDazBBR@jBB`@ZBVd@J6@Br `BN5T,@֚lTa-a@~c\b(*a@ `*-^C bhZh07@,*A8,@P@ӲPZ6@ `B @ b\@dB@ fp@f`6N̑К6NfA4ְVf3'fÄDCl|FBAFFLJ@l2 p4a.`<66, "˄, @". 0<"@a 3,#@@@@@0(֑@1|6feaV@Hb@~ftab\NB6LRXA@B`4(6ڨV@@@*t:dΑ`6dD`hDjx`lB @ np3aD`N\ADfFDhp*@D.anl Cbpga&Haadй(Ҹ`la5bB֝T󘙬0ԡp@Lp`v@`||' `@@@A7jaJ.(3FiB< T<R$ 4R`lt@ @:ƢڣƑ&@  @ @zA8rg@>@" @"vla jZ£f貖NeEܗ R Fpia$KN@|@ @` \aaDG~@gEz@8bZ@޸푫2R˨ʀ@fCnA(x6Тa \fR aj2@P0aLbŒ |^NŒA J,H@< g>z8vʲa5d"aNd ` aa.`T*`d,f>1.,!ABB"A`|$`zpfaɌHg@|BpAlf`zC L Lp@6FBgNA`p,C6Ȥ~H\8VbfB@BX ^Hdp66`(|Ҹ@`\h*`@"#@.>v.a$`@!H0`@"FR`a#8F@xS@2xabaB>Fb`fNu5^(_ `4A "2#2 BB2NupNaDzJC4"60"ߞ6@ߞ60`lܞprJ@N l6ܮV (4X|N(Z@XJ,a̩V4A A,%٢N( @@g`@"^5@X d@ "L <.f@J@"&"Lc@r@< |@*B A0&6 ĞNur|.RA@ < g`NuBprb.B @@  fpNuphvJ@ZvBVB@V*\B4v@.@n@ CP fv`JG@&vB gvC` 瀀($Aa~*aip@i^@H@8 Be<Ha8[p 8ErCgF5PF@F0B,Qgr@H:L`"@0`Nu6F6¶F6d z26 DD6<)r0/$7,ҪL ﳪN`( 0,@4(g$*`XDaR`XE(v6 B(AdE&@&P@ RB&A>@A`@&*@F&A@H&@&@`Cr@H&`@FLA@' 6"Dt6BR@&BB`@BBd@@Ca `(< v *`F8H8 r@J/B<@ =NAPB48 ?@&@ BNAߪ A.< B?@?D DCSq< fXH>>@< D<$B Fz<HX TX OXtB2BBB(@E``B@p$G} $` &@@CjF4024DD4 ``D.Ѹ" D`B,`@ h`Xp@ @@ L7&ha@$LDC<"B<@4ՌE@"B @*'x6A萂$3¸@8Rk b4@d F(  L" a8@ Nut(%`Z t44p 4""JE RAFʺR@2`B€.CL AdlfDhDjb*`"lB @ np3aL&DDLF>Bbr@Nu6a`~44pSC ⚒R@@"0f@gB CR@@@Xc`4rيrNu^nܐB@dfpea6bpF"6`(`(B @ BlAS@CBDad^`2. Uz/4蹲INA\GpfaD<>ƣt@J@HS@ bBl@ (*@ .@4"naĸ$"HB 6 ba7@B&aha b@ > p[a`V2HQhp,F84 bge 꼲 lclaÄ:aҢ7@J(HBB ` `Fbb@DaaXa h~ H 9*p@R<  CxaEP  C@S/E, _Rp(B v4<AR2v@@LZH@j"v@@ZIPAv@AOOHH@"Htۢ@.<Г 00a$0@#ɢnH 37@ tBZhdb&a `|P📮rDP#ėr@az7 BACF7@Bnpk@E D\A"^A"Nua6fJCZ:a jA>dp.a`@p`\`aJ 43LBFDhFHpr@3@:^bd`@f3AhBjBlBnBpBrBtBvBx6NR H@zpaAz8rRyNg*@N`*X2V8кDJX26H rtAS@Ҳ\RB@6Bb@6^@bDbA\5@\,d D*` jb0U0aBT@S˰aج @aPBB@F Bna@(@Ի>A0<.R&H`8@Cb<g" jlp~bVVaT|`6cxgBSAb`SÆQ`h@@:@<@<d'lE<Cn``@BABl` Nap@R@j@j@@CjBXj6Cԓp`@\ fD|'n/a0@B` J@v`0@V`a`Cc0Cv`@6gb D< f6p g@ f@@@ @AzB8F` bfj"fr~f@Vam@z` |*0<AAD 8r`|A@E`|EP`ڰ|ET`̰|/EV`| Ah.Az<`@V a   |B |C" #A JFgHy8NM\@Ȱ|bAn 0<' `|;A vlF|Ev@|?A@Hv@L & "AD|&A$\bz@,A`6APR|Hb$a|PE@@ 8A@ `@ 2D@,g@W@H@CA(`@X@Az*`@`Z&@&Z@&FG&0vB*@:b$*~aaaPbAh6Ab@bF@b*fRv.@@a`@D CD@t@0SDȑDP@ED@Z@VD@J@PD @:@TD@*@AD @|a @Q@`v螰l6H`B@$ g ,Db\tfS@"(t f4JBgJPf Hr`A`A詘C0(2A::`ĻD( CnfR@t`D@A DN@b`R¸`~Br3`J@@L@Hfbdk B dap`B,JA|LA|p"~0acB`JB,f@BH&mC0lBLB@B @4PBAJ@LBLAb0Fa<0)f?< NMXa7v:Aj@h7C<AFo A4RC`(VC@lGD`Al޸A`8SDB E aJѸ0ڈ`~~d` aBR Dod"@4CzAzdB A@hJAkRVR\"H(H ٖXa\@ La>aJB&@aBEd@@`ܐAhۘ``fȔzdp+a `||@¼zFj<k@޸|T@>8B<F@@xDVў|EX@@$Gf DzB>f̹TИ ccL4FE4C"̠"bbF~f`R` f"E@Bhga@@*(B"Hc `zѠc$@D20~Vhfb`B>2bg^D6X*@*r>c"`L0a@> g\C@ VC/ppaD4̴`6( l NuH瀀ZLNu 664.@$ʛ Hp/>4/J@.Apahɼ Hf d@f hp*aNuaCHNu""H(4L:j`gS@ә@ g"Ht4( B$nE6(@"Ha$IB)@d:g^@gXө @ gN@gH@ gB iBggA"gA> f ӐӨ@`fӐ`,f GHp`#*\ praLC٪ BBfnNuB@$LNu BH pbjv 2BA zIV2Й aJ@kA( a"H . I8.CZ(7`ө@ &L@* H7cC(<`aڦ@`6J rgA\BBRRAX @@CT RE|mBMRECxB \`@> @ BJD`, c,RDDfSE@<^#a~p4a@  JA(il(R@`/HNA\J IRBRVJ#.;b?R@J>NAX@;@IA\A~*Ca ڦ^ v*0c6@6/< &@ =NAPaA ڲ5AnDx@,`@,BNAߪ mpz8v57pa; raN7@ ;8̔a"@lt8A Ȣ~;a B"H/bb7I@6"0d"lzeP @a4ܐBࣦeBؼ7prA8@:fʂarBg7@(ƜpEHpe@:p@@@,AL< *?@T? ܧ< fpAp?Пa74hHPKPSA< F (Kp@  @  R`T`:BdR`7= apb~a(b7aMB&ѢBH5@JFh7`@e,@TAnNH4tD pa@TaVfN~AL5bKLb0(hڢ\@B<@ `PB>0hJBBAh@AF ȔBNKC `@$@pI.B,C,Jr>D"35TnEjhJ`,&وĪbH;@@ BA<K"HNC,FBjqWX=uOXHfG<MHBKH"KB.PpHHd$x M<r<MBF RH$ah"!Ard@|dmrc 0pHAF qbncLhLBlDt696xA :$JѰ Ӱ y B RDCoaRz8tA5gҙ(X8\88Ju "Qa`:Bp8ˮ#;"|Ht7a&ù $KB%p8\0>TD( /A @p@ԆT@jB4B K#PKj= b8H=tI= 7btJNöN`~>3;p@ @ A`;aN\5Av &d#d"`B|ӸaFNuD0<bj̼&@N*(=jT `=j`l@NCNaj<# @~@ NAT=@.&@ pA?@NAXA:BgHn@GNAP @,/@;@/AF-@0@&Axp:@$.t@ NADJ@@" ..R@ I@p@$OAR`B8. J6$F6C6@@RDRGF8JD@J : `pļV<HA&@ C&@&G&S KX|Gƺ QrF^FT@L ЋR @C4LY@@@@ @@@z  QBCD @ RFFCmNE I Ka0 Ћ"@ajz&NDl6r 3@N@ fv5 "KRaCa$Ab. rQa<ħ6̕TJ)>`@V@d\AҋR"A@F|B~JxABv Ov/`n@XA @JB @|FCZ @$RE`GREy@(p@p@"// >/.0@ HD?..C`0ܝ LxN^NuΪ8ةx:@\@ڢV @ @$ښtxBT@@@N cza*@ #b@ ;Ax9(Ha:9:896#9B@lJѴ*`8C"@"?* A9(B>R*b6aA7 ʺ@<8@TA8@H`a@ AD J@j8(<@:AU/ 3@^#@ p4a @L$#`X;ʒa;|\c*apNuc$HA;pQ PApNubA0aJ@96g*@j P4*  6(@ԶF҈96H(068< p'R@j;r|CVHB`<BTTM"bXKޔaT@S eVS96fHxBza`F0F>Nafcfa C 6@96xC$JH60 D"CoھRBk!4\:ePB@J@G^`aa"`ȒL B E `.V J@ H`(BB.ARC@  @ LZH@ @ ZIP@  A OO 8tГX@@89@ NuH8(I"HR@T8aJ@k$H&I C&JQfܳ^E8@LX;ʢ5`& ( BB@BX@HNuA"8<aҔ@zҔӔ@(Nu/ո@Ҹ  _Nupr8bb"`Z `JA@BR@rJAb"r@BB$R@3Nu`5ea Ra$$ N&A Vxv ss@@22@RAI507@0TCTD|mv%:*R Ѐ"ҁt42r Ѐ5<*S@ Ѐ0@ FbRE.J@  JA@a\ KBTA057TR|sma Rp"A43A Ԃ1(aD @R@6L U1PUU@fLd8a 0`b~0<FAJ(a>8a>8j 88zH. @vC2A57BD80`h4B s63 ~0G|l0pF:fRG G2`aj @V`f>0@ZA4`L@& aL:>0 Gf2@A1B2@AE` 0@V@1B@VCAD3B1``0EAA1@2AA 5@ A`@ؔt* R@s@@8@@|~OG° GRFD80@rf v4Vx zF:8H@PO01@8>F8 >G?p o|@$(NuJ°@V8dR8NurB 0h,B2rAaFj^QK&8B$@$F$:TBdC*B22@0h`DHCEpcDN" VR`00 2As24 :mp2<:0N&HC8ttCD4@RA|roC61|rBh*`5,AxBBB HBJ1=o` L0< xFvLa@vg | S:S@RG@o0|bEo3śyAj"D`f4@xfJ.C<@a\F˦8@F348@Z~Pla<5Lò5Ħp&B20a 0 C;l 0@ CCRDD^@ RG`0RGzAh A>RH*SEga z`JEnҺF FaH&N h$R5CsC610CRr0820*T22Po^ J2DmY*5P(5P4300@2I3`8@ 23P7@* @4J3zsB 7r6Axf9NuVB VzB &B zp"8BB|3$@@"8d` .0<v &Rv  xL4"bkRa|gBr~B|`bv 2Hx 8~҄#@|HDHCL@fb2L3@@$~`J@kP3@LAhJDfBjDDHNH@z H<I6b0"INb4j*@!rGAh|eHQFJFgA0HA f8Cb<HAnaFBSFfޔ֒X fdvAX$bBg8k6C\2HB\"J`F`B`pQI`gv\ pat NuRC| f 3&AvphL $A0 ^AIF~Bk(g&MFjGALB&J@fd&aB(Nu|Br (|f B@f@0hbr(p (B>*Nux@LCf |l`3@,C&@f@|* &B@x@@$&BfEB$*H~JB,Nu 54@^7@( a8t@ 8m\P@(; 0 B>`5@@NA߹ z H#`NAH4JBR?EBJʛBWn&g(5H4.$9̹d&8AI&$1Sf#A"l@>b.4HA8"A,"A2JBSf3`H@84C&K&MEA&@   <.`@u// oRb pNu,ec~Tj@u @bx`:0"ScT<($<'`48@:tdB C,Z,HAhX&cXaTdT A2aTePLh,iqe"JT`aZpp+N< BLڞxCa.#ܧ< *@$#@ (@ <,@$<.D5/<@ @*o*`X aڣ@.7\BXBVBZA;ӤԪz57HЩbZa&7d@f@.7Z^@8\7T^r@hRBPR77hj\Ff$B^@(Dp IpNuF>fa7ja7d4APBPl@B*j@xd`6tJ,l@A6@XB:fA:B~V$c@ @N"~|RF>|R(7Nz$@abT7c AZ3 ʲHLp" |.02`@4bBNApPARv7RZ 7TcHZ7^pCH@b4`HFZ y@Z^@NB^`0nA C`bNuB`BBFZC.HЩ7H @ʐ7HB^7HB$bB`@Hb^B`h@C0pAf`BbiChR@^0HG.TAAJanLpùN\ B> `d7L 2<1rV yC2b @P`7L1BbLNuCv2@(20fp* 0 @$NuF*fpNu: b.\@6lH7\X@Pttο~5*N@:F#AtNu; C0H< E@j RNu,v"2`KCQH2a7n>BSfCCE`@H0",`G><rA$+A XSGf&:.F<x*`JC^"0@DЀ,H$NJ)`f@Ѐ"J@@0@B <`, JA:JEfCNA"HBB r2ҁ@B86TS`|:Dpɴ>LL7V7T:oVAab .A bnC0azHBaz,.a44*@Ҁҁ5a>&I<`cTDcX<`(CD0GffT (@fJF`@n0x`D(nJfpn.epW&VC`F7n" LC\C aE@aE2C26|>o~AXB*F rģZ0HAd RarRFzNu"/ / o`Sd 7~8$o.?~|paڴBnNp0BV/8^868& &>&H` :\x*5&B BR/.@B J׬A B a 52ؠ J`T L0 g @ 5 ata,*@B.`@&`@&P@.F*xB$ATf$@DB$baB T@.F.JB.@RR >5|.@"@tNB@$,@$B$p4$,̲*gv ~ 3Z. 2<BpUA@* "ZF55Bk&E@pѺ@bbu(@B|f. BpU@J@jA4@vb2B|"m d5BDBAZm̙$ H01`0PC$KD>fZAdb2"Az5l(InH3A RA3"r5bBŕ/ (|@46zA n`2 oG| |B$cl"RC@(,f Bn@D$` riSC$A gv exX`Z RDCmC|n(_`tB* L0S@@>3@ 0HG hrG>a@ĒmAiAPGQBB󵢠5<AB(_dS\R`^4Ѽ  it`tnZ &f<f\ &2 (`,Jg ?CUCa (aQ6b"@,:a`2фh,` t@ D  5`nT5G#h//T@ a5Cz@5¦A,~@` @0MEANu~c" @ zB k5mbVR˘68@:`&5Evf00h(@A C@ TCEmz vRG|o2`84~8K f630` 64@L0`JCjRCDCR@.0FӸJp ,5J<6 `J Jgfa J/A.cd50C4fܲJfzN@j@8C`4(Bh@(B&^v`5Ѫ<I E 0)Q|ɤdT@VGm2G8+k ERRJe*AfH ldxKE@f ,D82@C!`Sj8*ZgYRR811@Gd@4131 A 320fCdmt)4Bj8`DTFk*gJ `DJ&A |,`.g-]FDF-I( -Q@*D? JDBA @2TҾ5(dRH~H2Sb:A0 GfL+NuN$*R4rxB 9024TBTDʮC.1@LtC BE4tB082X6244XD@6BR*`: H JkNuHa 0cz`*H5 zD V@4A B H A  C$A B$A C 6~3桖 @@v*<@z|SGJG@,Ɏ`@@ y?@RFEfF|fT8bbCBB,@,H>G@2 2@SAA?N@PBxv ~Bh*z*Ea6ʈiҰJ4Ny@BhtAB5~ 5E3@,vA4`GHL@p@bDR L(Nur@2 j/af XBLBCXp DNuNVH 0. a:JE*B8 K@ B  L0A `rvE^8`p l`@B<<0B@ NRD`0W@A"@4p(0n fpA .8SDJDmBRC`@@0 D@B ?.zߺ LxN^aBp @hEB8 KEBFDB8H@8 @:<<CFZB,0C&` A BA8NA:lB0@@n!JD`:x@:$@@p@V@8B @d&Ze0U@$`4Dn6`6 / ?񦙦He2xa0h@v6*4@@4@@Ɏ\@?<@@@\SdH`06`0AH8xd.Dh.@A$a.c*0DLA8dc.a.0`.0CmCn@n:8gpDpbBpJCAa2SAvk@ENVN vATBX@n C@dC@Rq C`Bnv|4p@>AA6A pC2iPCR@@1B@Jn@lR`@<n=@@f@ @f2AFpCf 02.h0CriA@$DdA DAE$D A:AAXa|0@Rkb2 xAla~AZ nBpB =np@AV=A|@d"@*0`@r2AAjA `&0Q@C&0@En`zE|1czE$`c@Ю @C-I6@RBx nJP.@AʜA @RnA,`Rn`A@d@^ @A-HLELSC`BJ@@fpz`hNuJgrS<`ɂ4˜L4/J5/4R?NA _J60j`ۤ,I#@prNuv, & FH$5A4B^a* 5G,a5/D^5nC  Nu`zD⫝̸`C"a,ah@0/x H@E`(~cJKHp@8(A|8.0/@` ¡60C$tB0HɖĊEќ豪B6H͚Bv@$2f@vphDC~D|ɚ虈86$9SCC.pr AI $(#A.@H6a@BLi~LɲJC2pѮȺxM8@pPRE~VU@bav3@C^aJlBJAf8J@``0C^N$`Zp@>CJ`C&(F&` @B`d0 @8IҀpa80aBL\h@AX@@ @&A@2:@B@J3@n@bCV`*j@:@RAF@R<@ D 0<@v$RBp@pB*@6 G6VDJ|2`jJA@RBri X`JD|daRSD`h70@@@& rz:DH70@:4DHaB 0 "MaHٓ`&5JSD4PɘREBTmz`c ``̰(B\ٰ"ҪX$I$F"JbC Cp@D`C6F02A0D@J@1AbC,G* X@(@3 "h3 ` 8`@$30 ", AV5C0TR@| fC4pBXAf`5fБ5V a8< F"a6G` ^@"6|x:8 A^AfAaޫd8hS @@@.j<@TT6`BB$`5D5l rH$SD5@ 5d@0@ӊ62ÖG6 D2EBĒEa 8&5| ,3x`e>b` "@c1AcCx@(`T"33c.3''B& gLJDn 6jxBkJC.@\:B >RGJG@"@$@7E0HHRDSG`ڱJ Nuxz~6AC&E4J N >8 Gzm7 @8Nuvt2A6AA@:3 @H xMWQ7 @XB`Nu1@&Ha>&aaNu@J@VAFJb@ A BڬHz@z~D.@.p@A@fB @ Z&H(Iva8n ,>02B8@ 2I34km@b,Gf03DaL8@ D.LHƾA»P@AF6ʤ>nC4na,r`BnaHC&dFPbBhzC$eNBN<@?Ʋ@XACfCLC(@XS*BƑ p5@Z,b`θ06B2J2C62BHý<â^DC DHãCSBP*"ad`ARCdv`Ȓt` QL@faJ,JA@Vh`Nu3?? @?@@,H6.@F@@@@D @2@BH F@T@BH RQ @@BH R!,@@BH R!,KVGNV$HpABX &n6. KTHARPSCf0.ܰn vp` n=Px|b@6E6JPʎʒ:@@԰D6 =DvJC@ A2O2h=CB4C*@Ap0p`=@&C@N0It0n&J@(B rRD0.&@A2`@.FpP.DJ @8Prn.GA0-H(SAa&P n(T(0`a@vA8^0b ,0RPH(@HN0`PevBn,GN=|A D@<B@ $nn@@c`z@*Snvh0nԺ@olRn@@"ؐF@$`$@`N AbaABF8cXAVR@2.ڲ@@.NCnIa RDn$`*aa @, H=@ڰPB``dBR@/?<HNA\(@J^J@/.BbXpAR@ \ A-HB\a".a$ CLѠ@a騆PD@A,pDS( F@`@~E8.R@FOna25 @bFFQDc8``bbaccx0Bjn@v` nT" F"T"F" [f=|H@/<BD?<@ HnAߪa`X@DTlC@l@h@BfBBgQjXa™$D@@F B I_RV!j:#$\ \..d@\ꑸ@z.b۴`/ ,ʐꡚ@F A,L2 t0SȒi@pd*C`@fB&pHBێBBшA `AɢXV@`Lª*0" * r3ZpJgnS@5` @p4m @J4//@5`AR?NA$ _J@|,j AH`"@5*I#5 Nu 9@ A `Ж @Z?Bd/.@BDh J@bLbB RAr #A ,AR@zzA <@rBE.5&A??n 3@Ha@> JfBZ B#@c8az`#Ap*A Nu3 @N3@ $37La A7ZB A5aBJB`6İ|@@bnGZ yAR@JUf@NpCNB@7fA AVg`@7fa2`L B,@7L&NF @C. 2aa b A1 y@(@6Ŕpe yAJXيAHIAD 0I\AC^L\`M<3b`  @dB `nfE\`Fa| 0 S` b@C00`Z`@6b@pBj:aT ZH@:A>7ZHD AVah7Z|`0b0Iّr b ı:l5CtS`C Hax&At ` K@`dJE@ 0hrEtAdjB6@ATp0L8Nu/`?4@ @xȔb6&b: &NuebLH@7f1AA47LC $@Z< LBVa$Nu PH瀀 L ̥bb0bbFNu A@z`(@ A xz"&SAb |,@@$H0MEQE8@D& /T@@d@Z a(C8HE`"a~``` @$ @@%EXITOKEXTRACTVIEWTESTSelect:@(3PRINTADDCONFIGSEARCHDC Xtract Plus 2.20a Sharew@ by Paul W. Lee @0SoftA@VMode: A@Archive format AzLZH@k&ZIPZOOAUTOOverwrite existing file B2 YESNOCrea@! folders (ExB)B$@ A' Add subdir@oriesA@AzDHDisplay N%A$DHMaint@CD@x/TimDElbort on bad hea@CmHHAuto sbv allDDDHSource`XthA:Deaati@ZPaCSAVE`URRE`JecentAACVE 99___9@ cCsea` maskA1 *.PRG*.TOSATP@APARSC@ DOATXTABAA,BAAGFA@PB H@ SND@NEOAI1B2B3@IMGUser define`K-`enaR1: *.AFFF~D]M@ @@@__E%@(@+A-GG2KG bTXHBG@VG of`a3a.Fs bECurr`AllUncn@A&@it_ Copyright[DoubClick W-iJ)System Enhancem@z AssocisbM1Haruyasu YoshizakiM&PKW, Inc.M RahDhesi 9403 Stroud)V- $15Houston, Texas 77036Dedic@daNTwy A. Gem+Keyboard Equival@sa - W@Close windowCAonfigurMMenuX@ esE@NZ@ e›C#F@F@Z3D1ARC mP@ Pr9F2@ aBQB_ it programF3@C7SBBF4AOOCT@ T/A)croH1 l:V@ View[SHIFT]C$Page sB)Minimum Memory Re`>r2b>/ E: 56K@I: 6D2K3: 80B 7AOOF 74KPlea`supp`y Atari ~ develop.@DO NOT PIRATE!@@>@Gq@O@H<A@@C@8 B@@@@@B@AT@ @JBTх@O@+;D@p@B8C@^@_P1@PT@@P8@@P@@cA@^@@@J@#@$Bj/@3@7JpG;@T@Ucla@pa4@@tDTcٸ@@@LTA @J @+@@AO8E@Q@fP8r@`lJ@@@JA9@jB@J$A8JLM`BN@[@\Cd4b@@JB8@JB@J B@@MT@(@O@`A`B @@4@H$D@ )t@* B`@\lm ]D0`@I,@ BHJ4@BJ$ B BA$A J0H@H B0 JN@C@ Ha  @ J0R@0KHY@E@`<`dBHܸ6A`PD42@@R)h@4`AP.@e@@@4eC^BDCn@0eC@rB0BC!@A` @ Fl@/aJ`F`eCHF `@H.@H IHF0eBHF`F@H BJHaOA7B`,@0cP #`8j `Bl `Zl h@Hj @@0Bj U>j a@0@e d8x@0E8ڰEE@0VE@0 BؤEţ A`E@0 E@0 B`E@0E `DֲE` ^j(`@@c(@~e b(Ex]BEm@BPE}@BXE@BEpPD @a@E(@a ED@BHh,`A0 ` P@ ?@ 2@P@(@ A@=Y@@Cv@@D$@l`G@ M@S@@B<Y@ @@@Bg@@nDAhu@ | Total Files: BytD A SelectedT"@1ad entry in this f@M.@BABFF O@/ /BBB !>PSCB-_ @;Press mouse button or any key to continue: ARCLZHZIPZOO*.@l*.*an@QExtrac@1gb @7 MelGB UnShrinkinD)BExpandFD>@loNInflaHiCjTesLjP@gLSkippKzDir`o`pathCy [ EOF ]@[ MORE@  e[ A CRC ok`A fails@ ----@@@@ - Invalid nodes.aH bit lengthEStack overflowEBzdec@C tableEErr`du@g readRwritC3 Cannot c@-tec`fEw@ eWARNINGa[ alAV y exist! O@BN @(Y/N/Q)? [1][ | D\saveAfigur`on! @  OK `KD,AreCDUies@5ra?@L| > Las@hanc@,o bbut FaI .PRG.ACC @$Faxed!= an unknownB @-opeHZk eR!hOWAaaiEһ Ada)IBBCE>subdB* E‘J*ܡfGa.LcrhAfrozen. A sh@kD torB$ (%00)-lh 2.00 AC.@)#(. _TMP.$$$DCX+ W`TOSTTPAPPRSCDOCTXTA@ C@) SBASGFAP@HSNDNEOPI1@2@3IMGSBP, edSqueezCBAash0123456789ABCDEF@0-A1Az4B5B@ ReduceImpDe‡C-1C2

J@@ A@@B@CH ci>0@PX`hpx &ccG //?/wwws333331@AG28B@^@~@@@lB@ F3`A@*HB3C?C>I@@N@AcE`@ AtBq@jSR@`@W@`7@@ VOU@@b 0A`@4AACnB@B4@f`d@@@;  @   ``@ @$@& x xl#*3;ScsR@@V@@`@@^@@v@Aj`a;@LcDA  !1Aa@``  0@`gArEjAdA`@BA A @     @     A  6   @@7  A ,        2  (@^@Y@H@g @u  @   @ @" @  @X   $@ @v@r  @@@  @@ . D@ @t"@ @=AA  $ @bAt& . &$  @ZF"@ : @U@  `X G&@ `,B @a"0A < "&$&` `, (A@ ,J0 *@g"`[    ` a b@@ ` a`C@`   " @M@rAJ  @w`>A` Ama AZ`B $bAJ&@ x`D@?D=`=b@W@za  GB @P 0, a @`` #8@ q @m@CX@I>@,@^A N`*@@`@@ 6*A`*e 1Cf `b@] ` A A  aJF@1,ϙ @p .@`k`?`PA`A@Hi*A  @>GQ)B@ " @AK/ I`$ >..a7`q4`L@#f ^ "@@e! .  . c6ˑ F@a@빥`' @8`Q!`302AAABR":ѓU&`é0o`F &( `%S y ܺ`:cۚ` `ء@"U@d` (fN|ZI&(F8T  (&P4<&$(~lhf&& @&[ br `!``WcKYꩯ~@鎚;@A(B@ѴѦz`${ rABbF B  $@@BG D G/@BbA^:7{uMdN'?k7~|% R@o\|fx[[ ˓ sFmUi/=pjׯKgGql7zJkDOc~T'zo~fmJϢup #B63?\d2;MZmY^wrlo[U!M0gpB$yR!ï5~-SM8vFh)Ë_fybTkΣ[@ g&ڳ\vɭ%Ԟjs.7}u_B,iht߿~|>W q5csoKd]IQpn ϠF%TiBFP,+;_h$x†SY*'5nj O@y$?ݯj@z7l[+gPοZV<&njͽ-Ro[lKԋKtR¿li9?eERA}MQIZ'N{?ݼY|ֽ ^jM^G=IC}>9_hr4lګrafe \3#},VF7;ݯ20XPE"w Z' _/S(’"ﵲaoV ? Izkkm- x՗¶gGxʆۀ^674Y-kz%p3NZtLf>2;Z c1m/;BaV}yKdƵn8.vb/L8MJyٵ4;a]{)-lh1-%B}f 1.pi1F1~!]6罋qg=c_~w`q` dkLQǃi$ϋߖ Sw)o6pص7cDp<2{! I<ݍwǡ@0+uΝ7dY7<Ńpșq$oZ3|+=2EPkK-}r,R cfsPo肜8J(oo:-"m-Twr087#WnU+ l?ȉꚋsMchqV-(0u_Ph/*,ë #y8z7hK cml;~ֻE}iQXCw2 ražӬ wX|"f?/;;fU h<̏x{X7~}oFP_"+'F]Q4hC~? P`)\lxy`TYR( F䛀pI:8>&wvײ]_R_V+1v*oleHktU%;gC~ _F5wԻ(\;MFI)&*`ʀ'H#뽪y&rv.[bDM…҉Yj}]r91@lݵ{hCA5~S ffu=,T2X nϛS^9'DT|x3]=N$7Of%e?_Xʹ!bI*'A) $S|Bz׼n!pX#8–|7de{구߾|0oW%KݳDt߻нqxJtdD,U6~F';IX1߁:pp'E Vs'-ʉO:üAo|rGkX_8/~W*Did0\,lhݢ9Ne ;7$-E>Y'Va*]9+ItlIפ~ ;UǍ#8żWOc6u_]7]_^T7o[5sW{#rP`я'|*0E`Z_Y&|S O]׺N?l+rf6 2r'>-ۉ`,`oxwS_8dž3'7yfSDߞTΎպ~^6-CXl=!{w{`'kjPiilRo:/&?;\;ףYf"Yg^Bxju}O\O [5zr E]s~cg $+8i.1oDTTo Cpc~!ޟ_.\6-"|w@u/fuk|7wy RS;[{F;+|謐!6WN KNzWwCk+CkTwwC otoPےaC8motEJ X~~XyuapIZXcrO]v{y=x}tUԞ~|.^W<\z_Q9ŭ=c_ Y~5ٻwHPhHMv{^^&˸::iXgKRf~'ߖ ߿A0!X_`KZ 7Tܳ̏߸z}4\˙]c۞kb7D]U+_ho_?@GB}?HJJ-,ruq׮hǞ*}QQG5qyߛ7`%L7i1gtg'Gu:lWX/My,Xs)c¡O#0^kk`o߿_OQe?#>r%Y7D?kZmS GtnW ?|ѲK342z[lK aY__JiS4me@~<rWL% ٽ$xqgq.jo=p 2cQR1/X-;F3O) ܯ ` ?atgy߻aPwWFٱV"%nꎃGAk4{%`m/xϊxn҅\9\`7~$Ƞ}Ejtטt^G+d[d2G8 #Z_?ˊjy?/²–?p)l˚ 8I6縷o_ӵ ^9A?}Н/~Y#po]n&rEpk=f2(zgtOB!UD,nj\ 'jUfO2ꚴ[NhM_WhS$,r7/Ҕ\1WZ}cqm,KfȊ9~q#-9so&/b?vO"G1ݽ9n߹,tQ9m__k?aA~NroQue~a|kϿy 瞧hi| nOe<]ʽRg!Jv氫giQ[}g{uRߠ. "=#2:o8?'L) u9W׽>U/;`ql{ x<1r=9h1x ].Tix]8}OzoO0S]KBҹݺ)Sjᛯi F)1%TyT_A;^O-Ǯ_Y5˙gk?F!cA*}T5k E(WACJAfد\J`CF^JN{նoDk 9#CNt<@ /qcߴZz*oiSJ2:LBY.:EzX̏"Cݯnř8EڻM 1IoobcYq! j}3H WN{$&&*ȍ5 ɣw QopWfB_X0Wv?ݖ-AYM[ר  o8Nܝ;uil޻5 VZzq_w:B}۠w- nZK!ݾ3b#a^7D|~GRMKyRH[žpx-o_9%d$GMUfzUG!6JQyË sw6䬄@;EZI=K8 ϻ HߙR]6nʝYtyKMi-wi <~_o FJyaeo4 ͻtIN {ͭx'`t_d>_h\ cU{^xd&TClbój7d`^@ɜ7Gl '|V@ӇM!Bz VEJ{57/WΏ͎~LK#Y)|S sGaBiޮJViU.oyYlaj*/~8r8W-۾m^FFNA11"szo(_Vv捯Ͱ J{pO8o]6ЭqK E9"Kpq6,đ91Wmk]j}M1a L(K4ߺj{ I9>z4댖h^3E G.N ڵ. !azezjEQ{W\Dvgv f8Wvrl| 7\nwmҎ }5 Q4_#$oܮ:ӟУ ?,x^[@bB_V[7,:g7" $pVA§<}.2 }]B?f٥&t#<_M/hA @ZY)|~Z @טz|\ >rOcn+0ZCMe-ٳ.eO^w)57Kއ&{|^-ҹ*K]D^):ڧccY0_ K}#1f$7rbAC׌(8ߺn_Km;U]?yD Gxɏv5wΜ&/Znmڕ3Hnjzo—^:7{uMdN'?k7~|% R@o\|fx[[ ˓ sFmUi/=pjׯKgGql7zJkDOc~T'zo~fmJϢup #B63?\d2;MZmY^wrlo[U!M0gpB$yR!ï5~-SM8vFh)Ë_fybTkΣ[@ g&ڳ\vɭ%Ԟjs.7}u_B,iht߿~|>W q5csoKd]IQpn ϠF%TiBFP,+;_h$x†SY*'5nj O@y$?ݯj@z7l[+gPοZV<&njͽ-Ro[lKԋKtR¿li9?eERA}MQIZ'N{?ݼY|ֽ ^jM^G=IC}>9_hr4lګrafe \3#},VF7;ݯ20XPE"w Z' _/S(’"ﵲaoV ? Izkkm- x՗¶gGxʆۀ^674Y-kz%p3NZtLf>2;Z c1m/;BaV}yKdƵn8.vb/L8MJyٵ4;a]{)X }xm LOL &tWS?dIjiOЙ}p |a w$~a|8OT׵{I5.N|xْ2EH+#}`VAM~ke"3Jݪҕ_<ߞ*,_N2W5^m>ذ)o]+:w7IlLLgZZ2Gif޸NX95%ph].n~{:k-Ch %n|m3ߪ8ù od<`4L5/ 'z<x{|Z^ {{c My)\Kڦssw<w=Bcဿ*[L~^{x_mlR.> ջ=+C l6UY-zqY,x~mU:BF{Ջ!yybn}|A*0`{X7ir7u t05~~;FьkRg]W v~ o=]y㋿75yߔdoݰ~={_0]%#!EV)? !{VP $׬ж!ws~dh[{uO׿o֜=!;;@I5 !>Ξm9uL?}R\iNbްD>z^j1>S2im(_>;}ų:Jno7)̂= ^ h=ny~;=ўK25 k|au:d΋7_dԍC_7@1#oԧ"d5)~/Z]9QAPkaTH=ɺY Ay;R~xU;||Z٬4klF] ko{}͙X՗Vhp+$m4,&"tj{db}>/XY~*JBi9CQQ,) o *UJ~r7Mi.O]e>%?enk9١(gNMߜ ,#\|W[߿9kosqS|45\2J`EܵokN%'op)S1g>f)ZC_L+mߚ1d]ylOuLoۼ./J.~tvINlEzc0WAogj}[;{ۮZ h?틇hFTW$ڿ|W{?Wnca]_XU7Zz m>:ʦn (.$?_~D{#W!C)uS4wX5YoTkoi[RڑW̩u)/nOp $^LrjjBWEz4}ubM86V@eJ5N ,b]*Gn)CN|wp3pγ)< fk< \Q[Ip=.wE} "ߞĜ|e  ̚%эd$2A [{7{Q{ov3tr*O\wBmi:"9nLV:QSM ?z#[{_ۮ- A.hj{Nfi)٦omnlqGG]'Zeߛ}ֱd=C6bۊ)KXcOzޣOq]TN +yMOyE(,o%VU/7Z!qtdedFU1ñ%1GBv27$z$`  vlޛ!B1Y#?`߉!cvV;GA_˲WXʝn7֦yz:<0-~*6|oV>Իxu摾{W^8ˉ<߶)z*NT C7=ur_%H\ A)z@"+{4e}@)40*dBP n эs~.4e |٠e}O? ~LH wE3=1β'@cibØ"v(Uqsh?j?ӶEo) ܖw̪ ?=)z4j=u2I.7t.rS/~fF%Y+5S[<ϱ DBk'-$ok|y@ ֝ԧJdמ7d^ 4<`rǰNOa/ {W9s,݋RÙ-Kt?vgd-\5)c9?ZDAriD1 7W2ɿK.`'u+{'(p ( @ &L@ 4h>| @$L8 *Vh .\x @1b@ 4jp 7n<z?~   0 @P  (-lh1-"B} f 2.pi1F1~!]6罋qg=c_~w`q` dkLQǃi$ϋߖ Sw)o6pص7cDp<2{! I<ݍwǡ@0+uΝ7dY7<Ńpșq$oZ3|+=2EPkK-}r,R O` _BLsjm=`P[ -_[<̜7ONV~_yJM_}: o*-30,`ept>ߐWi(2l8{7hѿ{1\iu+poY1\LLdjV\=l>u'_w ؿ tApg55;\:lޑ 34zߥ+ݗgV2_+';lcȽ(g8Ft×l~g; `S T8U4˫ىlW#t+jWP5x.4T !V&RM*f^tBOcRh0*E}}nr?w_w%||FU;(b3}0.!`Ht/#ัS/ `EXs_턀n ɵ)a9Is|VR̪"}JbHONTxc?&߹9`k{oO{V0|">=n5@.-ꅌWZLOK "4Dᵭ_ֽww-S}kBIr{2K潳B%7]jccf'ڠ^kȺ'}(dpGOoѸ7";|Wx_^_q9"\F,^o}sOo^ ڻ.|p_ZO_5z'bh-ρ;[~À+ B{> KD T-j ;4z>y]{7p*E/r6)X kc>SWy`ve?wVYwr<߼LM-= j3 JGsTC)09s~.|)t̓;#$D$!ޚij|WIߊMDr-"4t{nه[X?e'僋Sjϻנk2 q |="?Q}P&r4<{u,hׅy}N5;h;`Ū}s*8pluWΜж{Nh/~?/%(L1 $Zz0Dx78 7mUeբí}x h:!!Q > NDOJ x ]pϴ{r7=݌#WǰD:ƿ nWe~,?2wb[s]_m-҃ 7߶?d&%g(d{kFכttsuwyuU?,tcl=־o~3j~%ӣx|[7G>X;ɲ<^tV~3 {2y.q{ǐ%=?? P&,.o_ňt,rN1M'H.+`ۭS #_:;:4^c~ ,NKt̻eTUX|1_ví "r!ӗnu['ʴ1ϗ=)Ƭn. |-?w쾧2%cSWcK*lԕ똩GM_v֏kRDTrP]"ԱMc*J:5[n{޷MG/9uɹp<2i ۬6)O0E/T}s}/t;=66O32#„יxޢx+5EAYr9 76aQF 5|-~6As7z9%@'YdSO߹7ŧwz#φNlvغs~ 7~΢Ͻ~得w;{=ˑ7;ECD RwSg0b{Un5S[ oO85л.)L+lߛז%gev2a׷)j}L~ iuF]_ rHCtp(^; , .|&QI=x8B2߷?XG~^`+zGRբ/3OũmgM/7coi-{뎛,AQ֝eF/6S371qsƚ6*tߴd+WosXx|L^F)Ż1˻v6g){eaJ-7oX"x|7׮`d߫QٰЯ7o;L+,O_Ӥ[1 f%4Ar[G< xC滿_hD4fRAzIUsxÀDmo o`ò TX#Ŝu[r>k ?_%α eh[ f{;4y7dWВd (1EBTl8.`2?~P,dٌq}(BW^ύq@x*EE9~cx_c~U{J}lM2%DߒNK"C~/Uܿvv鯔FvL{67Qqۆz5XR5ϙ^sO,7_npBǬ6 X]~0.'F\Ϛ+[OyS|{6V[=Ir^/$+utspQT0N#r.>J#a7CoǦ _InQІ˜p-߽* < I;ľn?zsw%'Rd7^+YTpnNmo~3 yʝ.ٛ\v׀[ByKw9RJ-]T0doFUb P!H'lM{~@>AV_Is Zj4VM_q[^XJG8au-J״נ;xxŒaHʭM9z;4v/@;5h7ѪHŊx **f? P7)Њޡ;j<2 Jc 7eZZg q;VyO ƿSVyԍ˙2m΁;vG$.w<-dF\CV8mVݘ߿X},_Ő}oI9=(~4~k~x;2BvvDU (8jJ&_OV`M|he[?]7klk BET˹xAw9"x^wŸu8SS48E'탘qa @<]5 fo?=BblyͿiw [rk܍9yK!Fg+kpicͯ$cpmrS|\DԞϯ@[IJ=~A}{pNR`ء/a߂;)87z5A=5pۿȬY<]g ]}w/sN7 hG~|QnNNf= n`?d霡QC>jӢ"3ӿ٠نQؽ^A\roOvk ?kaRdz=&'- Wq __ 8h6oNfS{_`4 3mɓٿ1܅(Ϸ&$x\.^qU~AW+S꾯 U#mҎ/* >&'83 ZmaK͠o^Vn`VPX@;> MGX56dx_7_7撮UE_c&2R._sWl~GEčj#9jۖs_E˥',ӻˁzn8E+W3G]1髠mvFފ;E0?צ5ݍ k5R 2]y-O-{(ݭvXj_%r2Vv_#MUĮqҺdߍE0L2*N#}_KE|NqZu‡߻Y{ՅD+v7i:4=qa~T1@=?Չ{fvfUD2I&jGp^^ySgOq~e =vtY~;4 A|6AP'!C+cT[гLJ Ab_ƥƽ6CgWo3Zų^_VY_Bͪsd#~}#Z7}͉=W?oJ}+E_ +l_~! ^f۪W,јҮwceaKNDKTg;}do%^Q)uE=7ߐ/RǩgJ0j-{0ɣV W\|xҬ@^9 sPjtotå.Y%%vfp>|_MmfF/bȠ=+A8Y v<r8Gn`K݅}Z~~y[7ģ:,%*zUko_ ^*~/_G{rW_k[MsW:mxT:ZK-X)w7¹ed,7EK}{n ![N?>\/}/?aj/+ odv ~'-n]Wع2U. 9g]rܠ 'p{6u[,?:/<nqa83_~g|vWy`>&XV@|}dC| _h/x-_%O>5~k׹Np;͹J#+Cz>vG~}Bk;撌leK޾~=^;Z/:nT6 ,gY}.+VZվGnwla7_)|%a+]߫'I v[?8j߅f/gLbƋ*/0qbCC=ݹ}_<yԥv9]^T=1.WnVT.mEp_?F`w"7ײ؋hFXn-7C0#m{Fu w!^\٤x90 o}J)ӫt΢7dW7\!7ڬklc"">+$f9+_Z?qr?'"@֍w8d~#˪=h߹o?s]73qź m7TZ;FN-U9Ku glq:9۴[7M;_}C[|n9)%%q(w9?zLPյןA]>Zs?_U~> ~|t70a@_Ǒ=A|_X8Xj?)(mcj^uonN_f$vX|VyL xWSZQYpc$)}$EE>k|kX!97 FCUťwgnqo{wkSt*pƖ9Mѻ)#/ιv.d)6Je!vsφؓ{҄g?FJ6,TؐuN[%q8'<[ڻ~ū1YjԗD'<QR_R|d&Z>P5Xk@fmJ+;ل]}^Cb7qZ7ޙ!2OHaoɸw`*u-,ɨy/rX?F;xs]SnVd6r qw^/R N 1 JiiWJQN1{W7~x?x?X"v]|`_rN#D /|51ʚ|%'0"jA_ o,L;"5m~Uhu{ݞqNlWin?ppǂM--7ЫJu4֫^p>B =wuv㋡OrL=^o>&s`'؏!ΖlәzBxzrl|91V{qG04n"Mѻߒl}־<w~v9WmqҽϨ)cqXY8~H&]BPk:##XWpW&o?VCT}{ZG cE+Fҳmsx77Hr꿸:&1w%iCUDYz7DaX;7_i[4/}ޛF*n02a۔+IWhLhԌ߇6嬽7w A ؎\zuI,8"is(6Ή)&RY~YkF%4|󯽎7{UxZer MqɔAS@C)&s<"6 XAs,'77ϊ KۀxKfR_}4,E9Ν/շ|H^D91*F)S$3"^qeio*Mf:w5`+t8iߺ̔by֫\xYٽ\˩,hI ̿q x ewo+^17TāJN^[ZeYn쭦A;tQ|b[~oXV;ih+.TS͎}yZGɭXoĞ >Vc ퟮO?h6|h0?<} }{`?{Tdزo>b,}YvJlkW!>!꒎Ls*6.J_&*bY/,EI.>v*/OYZ>/菭~] u Z[oDyKeFtkA&[؋s26͚w|i~O\Nv* R~8TΆܣ@a'whXqH{2>4+0ǃ_kP}_$m+YI_kan|y?" ek0mۚ|-\N@}鷺GC;-w77^-=aVsy3몿.sGŁ>ͣmjv‡^^6\1Zm)`ҬdϷ={qCѼTx~My?/]^F5RI-y;J.C{˵VW] ݇Eڷ^?a Mm _1:>ǩ6=U^L,^vV?VMԓ \RܧǍ~?q퇪%:Ȗw P #9ܧ8i͟3=V7+/?xO:32b]nlFu8[_|wWkL2W&v;ku ~˧go^."GGi n='hgpZ붷>t~:1uW66d O7]$}x[-W7xfLFT޿o][ `ßwTE<"IHTJ=?z/?18pn?Og .+IDdnUyD~{$P[!nB8ǒ=2nȫAM7pp8#?jwWYw^lpW}H_sP{T ؛lNU$|;O6/.o4L9o96>v A7c ? Sz/F?jhʨ2o[xO7e{PU'ΙPW2dž cfP8uL(ifGX.?rчR{ SB~o^ݮ[HdYO )KAK㡮wѷll\"w{n,8'<bE b~#<Ap={W%^h߂^Y|X"ׇ[>2?L$ne2&=+bX(?wpژ uO'Ouv4g[oQ#ir_ֵKp}>z﷋VӶ8cQg܌uunMi]t};nO9YwWz!w& ee = h i .m)]Lj**W7p~; L,[i)`J> {I%Op)p$Y!{/?h'NT+i~+_w ϫ"~ggFКŹ=O&"T嫣^/먄x!77oboZ^wK~ϸ+91 Sι\sCe͜;3 #%KcHIV *QVqh.8߅ŢXtѴd.EU8~Fԇ8J qnLsqo(7$1hBg6B^w}5oe7[S۰aڂZH*D)#KSgܿeKãt~֏z~o&z9Y^Ct9$`/+0m?T;x_TZ |\ t:D$T'\Msxmf=҇\/JgxBG `5M[y8E66ⷻV1X /p1eXT'!= [Tǂ J;=_͠n7Ěfs\>mDd[h`(]7R!5 /,oPUȝ"}GaUP7KW WtgC8tC~Gą%,][e]L6XEZ5w~Nkinn ÙU6Ju5~xhFyMiWsHfpn3:V9Cθnz {u޷Jbx<Т&I;ν#UG;OGu"㵳<3_ b,{YTi tαW샙l+Ғsye}2ޔ߫|S_G^u~_Wz!7+gj#a`'Gb:5s뽴0R~2xl4^ѣ,lC kakmM 0GFDWu-^xO\_/O7a7Vn2ȗr.d.) `{WH7Nr3زOioP@N1l.In5z. OOc:s^mۖrWi}b,3Nמy^9xo;g|GDsx4>Sw ϣMx_x/}BumBD;dN 0Nm1x<w^yҞ}}7 Sf?5k?E,8# sW{:9+z/l 6n<7Ӱc֧`seFbJR^h['+nqq@;6pp Ǒ?V ||}7z};۬s 5b+ to9O'P:1SuSx7;</HEwfE_Rs5o܋Ξr=/Z;_nx>3\=v>Z>47 ^N_ϑ=aͽZw?tNZ~2q}imx&9g]{[!Xזo^A>o0WqNL5v?Yىh6IzjFO:>Uo^mhi]Z,2;r=ʻz]2;r~ %m\cIG+TSh+Ѿ2qrwtKw*jvvjy7C¿7Emm~1C͇mwͫ \ߺ8?8?˜;A'4i]YGIܚ:c7j/OZL\x4>S/gF h=2ٽpY^x}L_͎* 0Iu&;҈[Is3Pc=pö,髦 ?^=?)b7.68+]K/;]z;\!axksmpy_b4Y90|F E^4OϟU'$ӽ7ƪ_s~i7Wy#ɜGtIt ];1`ߪ+~s ۦ_־\NT5.oto;.ݯ8pw*tݪC g[1~vz^?wZznOUnUGy{!Äퟱ!1U3.5K81}V?iHP%4+woFMgR # 3M;9ndE큇K+{.7TގoջPz9rx3ʯ+#F:v?V$Ě-;$a^2ofS/Xɵ$D &TRQLHj%jԓڻ}Yjf]WįՃZv:Cx9`$ YX8MLw:{8OKvg˘\uO]wA q||W`<v+C`}˶G(56us{|9OܺSyuQ:U50ij\fKz4IElwAۨdpLy`'a ;-L1dOj/}g܌7J[p4ߙv W{'L<V|QPVju?ʻu}T'ߦ-A-. +Gyu'+H_@MLxr$rMS|2p_LKKc3#Ge=)7ot;~÷6^ fiѧ1z5-%f)zZɟ|AXU?Mz#Vߊxkݱ+u\&[MQVF')s&CYtiOz޿._8g.WyC@zpxPS?-Ȁmr!C'-aaAF0;Q@eq]9JS/K@ƛ 5|, M@An)efs 7)GH#껤=: 7|=,7,gL}Yoq۞,959z7HϋCJAJ?0T?y||2ʰ;j Q QJJ1W}\__/lrn\z-'R[n_!ð8xȶP(5uAS3jrZoCkYlJmm]0$T}MNZ_ 05/_\ȡ!U ȼȌ|%jȝd zS{u"G:z#=XhĒe}MEyuS˞ROYŬ/7ȼq:^7N 1+ɾ5}L_Ѷ jb";hxfv+k0ψﭐNk.GGZ6ݹzFa l&f~,bg \tgeN9o ?J0DU)ʴrGy/ݹriv6%`ݯy[z*>;<ĭ3ɇ5([ ''8E}$'@YDݾ6SGBFn3Qe5m߻\< =+w`sKZP?su/p8X3꿜?sl顮zx,f^( +Qo?ſ ^IW杫opn[9Tw=ݮ`{/2+ wZ@v*?:0>S~ V7#b> y~ JTĪꁛuGeKiE*nސ/"ͭ<@a}߿?HS?vrj4hp/gfD@ ˭6M~'w{9߶V<ګ;NDBMk)͊/??if?@qQEII;߾nTK_ D/x_g̭m~_cIܨM[Yqe+5\ Ȭ T(?yOBUކ50d[ ,JU>B8}oZJ "X~IX=/X=lTMwsoY!csee>}>w"wLU.Xr`<0s»p=ア7M3QqB`$WBD$^RXrmEl)7}X?a^঄)vGyK"pLpxGqpa]yVLo{5F&'Z'щjSOXdnuԞ~ o߿M6~(1=wu΢$=)17Q n=zV s̫vas*|jDݑ ;ユ%6EX234^2F;s1 3~v.~}pvcS7Ѷ!M;+HE=pW}]ߺJ˷o8}K~:'G5<0v,n1W,+眬\]`aW׍X9륻Z4[E5'|Ee Tw Sk`N`\!08i˸K^F%w\8}*.ڔO`-`~ܪx\Ӯ yT۷Wuzva#a]]61q83ƖC lC2쉟TE|x~K ʯZHT*{p6p$1=Ep<؃+ gS5­%#xy.!C$}8]ػ>jyC+́Pel~rQ>6hmko }J1`g;k6se;7DQ/'" +wIKSH7nrFg?q̧zt9`>J(:2P6[koEOlN@ ~V̷m2)y(&V5ތ-Th][ݽ~՞i{+]p,> 0̚ 9 #:'4Z m*ג Rn~GhIٝՐ=ʼ̮7hraސbiiw?v_wwYv ClկoZֵ87:Iz\I`ߥ|_qWz}՟%仫e_9Hc5a@Hiv瑥rYթڄX0 q`=&kF;rr֩[]u oN<:l (?Ѡw/zìoߓx&ejsz+_SUկS0-l88ű ?|]h7ܬ2r/+NfKOLZ' 1@ ЯvBnoy3~=uluwƿ?f٭/}JUe^&W0|+\TUrbkS~0+g aJ8RV58_x~A`MLfXl0jkJ'orwSj_3Zq"w饅35+[,Xtn`X ? #oG&v\ O??y7A L[wrZSK,D), +3g%g b; &-E se"HoPk-[n133d^x̗j,4 d2:D iZ"Dq];+n˧ _‡,bԨQF2 m!9˲gN7L\61Wg!-皦݅n,,ޝ]7?!N[ 5< ^0V@ @@` @ , , 0@ 4<<@ L0P@P@TP@TP@T`X`\```@dhhhlxxxxx||||R/0Y`=-lh1-]B}+f 5.pi1F1~!]6罋qg=c_~w`q` dkLQǃi$ϋߖ Sw)o6pص7cDp<2{! I<ݍwǡ@0+uΝ7dY7<Ńpșq$oZ3|+=2EPkK-}r,R O` _BLsjm=`P[ -* itd`po9gWrOwկ9# jϜQ4g$m~k~z_?8z7h{y1j\im&rqqs׿s֮j6}Y!uՍ^T2 2ll 4zߍ+y_2_B#':u*~܏݀lL?oů1L3½w*;"u>8~JToN+1kfuԕiݛĸEz7y@,8#{j f5뽻λ"iz3^p&˘аѓW} ؍>amT;v4(opH̱ѧa7e7"1M0iyzHo|,"8]* `bΞ;Sd$7xi?m?a h^ުH!09|yƐsw ߛ]q[m]N1rGsT|S\o}>+c~a~6ۅd1&f)r{J,sǐ\w]`z?Yk~]j=:ׯ|nR7ܥQ$ wZ\o*>? 2gvz\F=_džﻦβy7/x(6>[ۘ_o0΢1|v!qhblP6 Z~=zdc\?.eXȊsJBJmԞ@nv 2Oo} ,cQ ߬> 1J$yOQsɂ~?isFi={EڸQ?Ͽ>X>Z(AҾ 8X@裋_s>; =`֖7ڞ" 'H6x>DEu6d~8=u߷ҁT"oM[Vr;n{HZZ.OiG]Yݻw* k*㶤uys߿Ni`RNtʒO pw<~=ӫ  .fP5Zե:;?/n/9 VWxMw;tOy769?kO8? ex1%NxWߟ]|Q=Κ$ŏdl/?Hˢ@0rαE`+ߙt~՘Ss~I{?]_&@c/bdHRs &3)W}@}f$%[-*v<)֭WImgP~CH9Qλ}t틑P*[wҿJ Ș*¯78|kDm_u/;;=ۃu#Mv[钜&ܮl[W A^y5%ɛD{ܹMW)+;\\þ+Aߵ`1{qݛzitW/Ֆ߼o^n~)N(XmO~%c͖ w3 ts=?}U5[:]ٯ NًDZ-la={N~viͲ9I1|V?C]\;g A,Lk5.YgǼ7]XWJ;>f ?rX+GD]#}]oX6noa|ok99E5bR.Ap]-|#vK>؝ 7U~9yw}P9ɰobe?U,?w5Yu/߭Uo㛦1 *n>;/jff|R9B^wf~6tbE8ՠp/3W9E۰x߆7䵰Ur˅XMM_ `{/X+fςt U w +ʥt>԰ɿW=oh~Ő-A-:N_}]u\' -E~-_[~bZ>CfC?'UYӄN%ݦk|[P=ctە;mBIy ;Ob): -O]n0s>Ah(PW|+Co6_x=: plg_<~1 LQB:B,V .ln}~eP#^}y<* O'#o`ղ"ie+?XAjme+6Z rܰ;*7̝W]v;ʌV>$U(bΏkam8C^P Vwљ%o!"5T=#2Xì8* owo & 8aC]n/y_\F?ߙ\*=[mP6~V믰qᴉ}uiU2xM)^(>MhgڻuW}[8| 3_'|omXW|o@\|A2O7'p97_)gW!_:џ&;sx,0{ȲoZ߹s"ʹ(嶗p@skp11 o+6Y~aE Akb' xug~a4zMN.jSދ2{(@ 6J;x4~]]GNOXl$,~|:cٝ0&|)n)3}O.]L lM{R5ځ LU(bHW:bRt۳Gt>bHh_dߪyR}r^L}*W60<,Uw+ NS`@j#X-M5>k6jFs/Jb X>!0+ ʏ6SPL.B+W~0.Z$o׻Jܨ~7{a.tAo[iWպHEp\nbyN˿77Κۼ7z}nྲྀo9=ofBrn]וyrjC\7fN^9x!|K_>-y='_8Z(1K TSYi@֯ǖWoOus}P? yRnEr52Y{gwh<ӄ׾'?ydČ9q(v3jĮW8_rhN[7H7(}j `ܴ&S[͜i2l7T?5֯^M]`9k5wB]}bm|nw#;ٙ*o8%j"cVYp2"KjϤ'po<F-tٚXxa5e`u2[O7:zj9J@,ȸm={n~_5M"˥҇RI@O/'>6X3~8ө1$Zm͸|7z{g`JO]߲eNCŚ&&į'N]~<1?ZͩtbqG& HkY=:UNj-Ю߿|OyU5wѠ[<\xf J2[:ȏ8C~%mk?#~;.puE7R( Oהj6~cXwwk}g,։sHw-z.*\ޮ>}ܿJl Pũ-Ѡeݯ*Ǡ{o'a}T2#e,b>d?ą}Wn:Ó<){zpircuw8l{W{D|8oz|kN\ۘÚѿgo-8k+0V^c>Cyku~Ć[ wbfNlO?Iiv*U6berj}?.&M LO ^刵Ow>ߢ? x۰ڵw dB\rtOA\ kg 8R|_T7͂t$[Oj$X 9e`q{kKO"9Iݵ6QUƺM]} 6DٳX{Yud@ 'S[LjԍtGl5|2}m*bVO Y=҂/{|ӹ~qJZrcy.Fwdٴot. [ud@, >SGۼu ~ўX~+;CCkao7^ezٻw%LWCiv5oyoR`⿤~9#~7 ݉4@ڿ%9OX579qW 7<_5O~Cq76 ?c=Z N`zV9t v0 5ňoﬕ_lX32%4?z7M7 !#kQG_\]~$߁~Rus _@ڧe#CqU@t;xb٪:+jV4L_e7gtc4Փj25J5߁5#_9읆ijN2;}Wi|_}Dwk̈kzUWpz!^Ա,`S<8*#O["@jE{S{H?ݘYTHfU6SkPŨ lĈ__M1Vk\49<p`ZL;3ٜG> qn8gfͼǀlMT)I}0=qz`cVE9pѺQXmlԂ<_@_ kip=]hӕf{}z!n]i|kɯt别`@@ P`X```hpx  $` &` ( ( * * * * , , . . 2 4@ 4@ 6` 6<<<>>>p<PҀ x-lh1-B}/f 6.pi1.F1~!]6罋qg=c_~w`q` dkLQǃi$ϋߖ Sw)o6pص7cDp<2{! I<ݍwǡ@0+uΝ7dY7<Ńpșq$oZ3|+=2EPkK-}r,R O` _BLsjm=`P[ -[<̜7ONV~_yJM_}: o*-0D?ywpqxs&]lOl6@><6n}moΕ1~dТ$ITyz&A6omL7h52LS>vK5]]kB7>%~jW»rԐ[_,TM~|< ofr? w_ֻ+U`߯Yo>ԛJW[e2先5MT'$.=E V>0 Ov'FN:1 4|?{S_s/L`V[`w6 pl [{S'U{:, z7s?}?WN.oJZgfTҾr?0p_WoksQu`B_{^9pXhjQNcDC;A>6׹} s:׀J;*z osW~9Fxupyiwx/tMǢNϩM{nܾǿg{o{W:>? }~< "A=( WR:1S^ګ~J~@ǖ헙_AVz.XOw=̓Ʒa%~xr_{VSs!F(GC*}z_&}xַ\GtQ9y?پjT'V:quVYvKQc_.w\~4_*qËTݯ]_cJ}>}Ѿߟq<"Bz|zWr,ƀ_O6; &=]5é7qOS+~q5ѯ}#AbndA[ڒ~jÉ~{ٺxa:=(9sO62[7xwD9>Y*W}5>>ڸb񐁄qޛ!zo-7JTߓ_L9 Ul/vaǫL6.,Zc)>m[ m=mMtv<xtwޘ9UpQ]YCteJ='uhvc&bv_e i8crsyj<*C4;덉%[0 Wbl+/X5:RqaUա^%/y}߶º x3~;l<a¢KO2ש/yI]AU7ߺҐ)w;`NqW.8Ӑ̸$jZ;>]_%E;~Vd2~{_C6 Yc3UbϚz6.5Ѹ:6w!$J6ϳF,HpT5ICowӣ\a}֩tgZQ쒙tیc\~p(}uגK/އ 3uՂmX@\!r$VV?`yrb:`HF1i?ԟ@|lӷ8+qQEh4G+vM-[>szu{u 0zFV-z*j`l+xKHe4_s^4ao>u lω+ p\^0ﳝQkvd-]k[2B5)ݚF꘬Y˕aK}&7B\cX{Iy!C)SSb!ji%i c~8<>:o<Ε$ya*m[~~ڛumֿzoޟxoQw+n]]t3j,7&b3#|w |oA 7d㶛h#:'lsoa]erW/|x1OԆwWC$Lp^RSpf*KY޻8Cf{n72J9l7w_f[!UNs6M^X}l(hU,~yo w\:7s=^Ǫ-t+9Ww7 k4&lg?_ͻ܃xx%e`w/s}Ut*o^qUodIO8&)(!:X5UXb[wf67/C%x`w{0[s47A+@ MVJ|DYk`KײY<}PhF8>ĺplk_qOyLϴZV Q_ V"A q+4u7NihDU-dVo Tn~_*fȶȵ[m+M4N̮0ϣd꾧j7ܛiڄEmHp~W`݅4@LU5E kW>x[ D_fPɨE[8 M`}~39!e0_t =~ vU P1*9/vF;8_ߘoxb:K㝮oMf }^T|K>~X!2 0RoA_ gWb+%RD_?Kcȳo/bR'+gʻ—?o?*#@LJ`ooX6'1^ _J'[[*_oJ4R7w?rnu_lY8}[ $SOoa|<jnJNx+Mpf 0=U/s)xym$f?r~87?>T.}n׎Z5U7C0s<*2߽&Vv+}T5]; yuz6<@o߿Po=/Z^e7C<}ɯCG}M}6(~Xˮj}~ָ 0jDk|` 3w^8}{~BW+|T<|X,o^']r`"=GgOs 27a_oc't%h X͑{KT T7iTUs/Ռ9=_TjvNIW19 "!4"Eh `G+[Օ 5_Q7h}QhBԕ9ץyI.UA#NoK,nO~R:Ɗ7ɺOe|\]h`]J J.F4K|  ,- y2.9-߇7!ㇸ"NK4.^"Bj%47|˥M:ͥ{FLLs+Gf z_ m2 %%qnu_aXĈzx.$-sB+M KMύTo!j|۽s#>.@Xѵ?ߏ|/-<5A轻l<i>;s(fl_EV-}A/1.,vC}ܞ{Dկo3wB#OF;MeiTO/\y_ǒG \iV/|isz LvNr@WAEn%{K@&?z_wJ#֜ze'XIڹcHW~f>P8[W؈Rpsc1ĭK#}ü+[3V2%O"kC7ꠞM7꾀ۢ`j|s_}l }?D>;( 7{W 7hFLa_م(RZk'8ʈ]ff==?EMhΣG_G۝4:Md%wǑi D͎fsz_uЧiY}_ U+ _A=kS ,Kb w&J 2QrW%pSyYz5V&!0K,=Z|Y7ꝥvcFݯ~Me \{D=վܸ?+f)NCݏzY44&5J_V]5I7e1#'v1o愭+lu>#>*y5MZ\gO< C BO 'Ou axN)5ӮrrD@n;NWB q [nNI#ܑ =狔ًi^]H?oMlU„mO@ rF}e|?ÃW|=p;!Kr(W azFC"o$v׸`3`( 8P@`hpx  " " "@ $@ $` &` ( * , . . 0 0 2 2@ 4@ 6` 6` 6<>>>>S5hڜo$-lh1-B}2f 7.pi1F1~!]6罋qg=c_~w`q` dkLQǃi$ϋߖ Sw)o6pص7cDp<2{! I<ݍwǡ@0+uΝ7dY7<Ńpșq$oZ3|+=2EPkK-}r,R O` _BLsjm=`P[ -_*wr7DWY*ﶕFܶplk GH_V5?_n_zCC=4zh\߽{~mSes_72M.-g :ڗ>uۋF P ;,fq[|o+so듒ZI 9?3mk#-2HL? o_Sf&cwp}tIײ^(_sW 򿥇įҏNj+*  mJ4?\L߬1(S#_ ~[*ZtVyZj.ֿ ;o~6}px8X_[>8rO24?!|dV$7ϫ pT 6} qlW\$C X ׽xNo{a iUKL<"]jW4d1D4)3v+[5k1ha`7_Nrt6>F {6@]΀)w}u$`5/<anv0] =2Y }+R6oIrcq;?;-{'үԎ:0x:j ӿtq=rX= mfq<Mw^9k-R$b?]o^_o~zIoS5QzkLڝǂ8Hs^ kc^%@*Lw4Ap{o|nzw=q?{NA{uTӴOO&VyOVj?nWc lxy%DZon;eFiKY_R /kprTn֑,紟K"9v_i ߨU{Jw:ϺM BLP0/u7U١!0 l(DGG.Hu?|IVF% ?1WV-3(L v'(q6u4>ѹxo98p3˫׊I4X1[o3NlKe9xP_]UԿ/%r왻˟~Hs.eC5M?]sy^RG,7~l3Z,>A$h(א;< Ϲ1!_Zs] 061zjkV 'wئLZgxM_YP_uvd2z꣚uIw0X{^2oTv_ |Y7ذ=;f(=?y>tDՉW\(VxS5mU =~H~?Ƙm.nnHy5B7kQY gspȉ7x;Ï8;iQ YE7 _B9BćcIyٰ:Zk۞N`yVq_ɀ?gzgY;oC5n䶧E_m=Ntm[ Q}}ϬQB> ~=Z҈/;pfo[lK›H70w_x?q(J 16J9r g۴`}-aC+j&TH5~?sDr@߮܂e8-F-pi _qs9 uݩ7TE_?leүD=Q UF7]ނj;>}'G$A浨Ω@?'7c藧6F8McjPHowxFpTYQnx?VxMX~-X_ԭ +hiVs ` fQ?;o닾бQUJ<'hoMt 8~8$=3}] ϖ~KpW #xE2D5>Daa~l&łcf_\׼3~s}p/NB^)87 8ASu׼JC{a!;Wk||>\F aG;S0/wOVny}%};o^ i'G}a7i?}+˵:Gk*A@}$obo~ Xy+]BlK\n߃os{(Nau4z”87AտZo?'K2b:rUaw{-g8%o5K83?{v[hۅJێ4kSVsg g(oo`8Ec>tkd㨦=iq-~ܚn2Nj.mo~c9cFZA=*'o~?z"QI{<'>]폫Hr뺞AݐMoWdT.fMauڐN!ݱiR}=6R$I ?kޮSUG~jvNppݶA/"G@P>_33ky;-j7\ܫ0ﭫ.r0 |뽛Tgw7u3cVOLOT!D39ggm'zv;߼ޭ}k7Τ"aTC͋X#?mG<~zw-}5M5̙ +P{~9O»o0kf}涑}`z[S_)d^<}΀^7Lhv3)xb{u>fsd^G0iW{K;BwٞЛi̳ٸj'/&;WiV/;Wk,7-@Oˮǎ34V|u0:Dk:4\u/[O gXp9*"}}Xb~smDG^ /'uʯxoݓ*{ LzϾZV]yg޽X%Nj:@{]__^dgr\P]G5?`=]7CnWW>1h=_4N|LJf}mXB-"$CDdI~+l]%#쨗V3MהC;:BZo]w -km[ 7(^ Mٟ.}D dۦr8xWeUKĜ]C)]쟀}wɔ薚F8 "ĥkTImԖV L|q{}2LIiBL¿,F=/K8迯5MQ^~ :Ѻeծ7f Y`E;//`=l9q#uK=TpR`li7N?'d!m2^ CnKcM11F'A?]y2O;a" &bEoO7} QMUwK ^.3%.;X Tj=sb/Qlʚ޸f?a>SoU&c‡ "o购WK<0}oEvoNonaDn}7>Wxoo:}7~^""3w:^׆͒@ck~B&Yeܽ (g,ZW}| xrZ˂POh T;Tcű\tytRG#$v`{/xD)َuv@' z>i<~:8K"WVqtULi=Mq*^z@pqp,r-CʉVb0RH`p$@ 0@ 488@@@D@D H P@P@TP@TP@TP@TP@X`Xp`d@d@dhhhl|| @@ @?c0-lh1-B}6f 8.pi1ŜF1~!]6罋qg=c_~w`q` dkLQǃi$ϋߖ Sw)o6pص7cDp<2{! I<ݍwǡ@0+uΝ7dY7<Ńpșq$oZ3|+=2EPkK-}r,R O` _BLsjm=`P[ -_*wr7DWY*ﶕFܶplk GH_V5?_n_zCC=4zh\߽{~mSes_72M.-g :ڗ>uҺ^mm<`ݖ@fs[|o+so瓒yI I?S Q@[ddrt-p1G>USle(ҿe(E_"8߸A7vWj5|X475ki`Փ+oMf?9w_Қ+U`߭lI]߆ܣ@UBG2M>?6%~SkP@?!dW*/7׻uM[OU΂0UOk-~r=r__[ >;gA^9&x Y^x\`y~A=r[%u&~.tUz;8ߢKaG7 fGʾf'Zp ey~D+ZN w\*?6A\ŗ-wLѼo9NP% h# g7Y &:u4U67}7P>H%Oca_NΎ 3e۾+~XNWI4/oWpkmV=pHC`񭷬kLŃ~>,<"mcíT:p="\Gx*Hw#8S?l}B>I,P{+Qݙp(1`܀>O"z>rA_*WZ?.'c%grA>'Bnϼky+NY]qj7V0ՍDP本0=Tmchֻ/ysdx>IcO '-_90עZDWt-lk&?%7%t[r˘c#ZC|{r];ŀi?]Gd5D 5`,zs2! ߹vsZߜ߈8P?$/de{ޒu:,O%=>g2*]fտGJW2A$^dkΓ])}5U⿍uoۑWN'K447Tֶt5y7]{tٯ?d/B?*c+6v`%ҡ韎>jj-Kl`r4AUg$yVzoΞ4boMagˠ,~)A@#vhpI+l,TgKWެq7KtfNXB F>Z z+@6(sm}*|S ֹF]͛}D7M|+KG*hwc`~5v/Ԕ .t "#aT`8kڎ,noxЪ* P~g翋Wp'.5kK|NYȆVޏRCPݒo߉Gۼ@µY ~"rzķ+ :"__J%s(i"d3ŇavOv!|Gf"mc Sz^zu\~ѡ4sLxZpN[#9nDX}z_B ȹe;bLҐf;q 4'\N~-_G)?xc6prL4S/ gE{D5ف+K=!W_yJoMQ$4ks81Zc _>WG޵~"ͮm uav/8|4wW.|*&M=S0ƿ^6V?ܲOߜHx BoB{m5RiSʼ*'ukJo~qL; 9p \ D VIJE4~47g;Uлj{O'uzK7W7X~ޭX|ݎo3O;dS@mk_O8/eOWr?DWOop8,Wn;-#ۀoO/oR׉}J_wWݡ~4 pEw?z]b*pyC.nUg{|7j{72[ ̟Ѐ7ww)~~A\U8}w; ^Q{&Pf-vtt VIh:Al>OY9̍U~tYkW ??o EԞdCh rK̃vFo:^Q5mvg 37>(kώ:KQ @:1n-Ambx!ʻUǿ+zq.#}5)ܹ׍7L ;Q'` }婢-~Xᒅ%768#6gMWx{avB>?H*XΔ Ppz`dRC_{~_ڍ{&$?={ oyyPҾp@KH߶ )at./>Pb^n,GB8!ч7w]U[gKVMee4 +݊sꟌ=N=n46ߑw[,k<ILaʿ:aGy€p_|X/OK~ߩ7~ #Ip77!;摋qIPzU ߔ%L՚_ZA|i2&5?Ba%1}΁%o97bW}p)ƌ=Ɂ/!ɍҮӽ_>Ozkf\x0L9n?k+i'c'6sx$$F A&Y9c`R9{o--z0A8*ⷀcЄ2g 2@Z*;ҦԽ~i->~Ql ]-54꯵Lqq܍w딕wMmPJ/j!Di{ޛ~}GSeUsmbV7>8[0^f  ( ( H P`X``hpp  $` & ( * * , , , . . .@ 4@ 6` 6` 6` 68<<<>>@>Ѐ~ ; FY5 3PH ENGLAND PERSISTENCE OF VISION MENU 28 ----------------------------- CONTENTS: POV28.S Source code to menu POV28.PI1 Menu picture LOST.FON Font data IRONLORD.IMG Music POV28.TXT ASCII scroll text NOBL_TXT.S ASCII scroll text grabber TEXT.RAW Raw text included into source STEAL_2.S Picture grabber 1.DAT Rippler data 1 2.DAT Rippler data 2 3.DAT Rippler data 3 4.DAT Rippler data 4 5.DAT Rippler data 5 6.DAT Rippler data 6 7.DAT Rippler data 7 8.DAT Rippler data 8 CONTENTS.DOC This file \PICS\PICS.LZH Degas pictures archieved \PICS\DXC_PLUS.PRG Sharware archiever program Persistence Of Vision P.O. Box 40 Thornton-Cleveleys Lancashire FY5 3PH ENGLAND Persistence Of Vision Official Source Code Disc 1 (POVOSCD1) ------------------------------------------------------------ This source code disc has been released by PERSISTENCE OF VISION for use by others for NON-Profit making purposes only. The code is supplied as is and no claim can be made against PERSISTENCE OF VISION for loses incurred through the use and/or abuse of it. PERSISTENCE OF VISION gives no guarantee that the code is functional, it is supplied as taken from backup discs stored by PERSISTENCE OF VISION. PERSISTENCE OF VISION regrets that no help can be given in modifying the code or fixing modifications made by others. All soundtracks are copyright of the original authors Mac Sys Data P.O. Box 40 Thornton-Cleveleys FY5 3PH Lancashire England MSD 28/12/93 TENTS.DOC This file Persistence Of Vision P.O. Box 40 Thornton-Cleveleys Lancashire FY5 3PH ENGLAND ND #a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #K 4F 53 4C 00 46 42 43 57 45 58 00 00 00 00 00 00 00 00 00 00 00 00 00 52 00 00 4D 56 50 00 @ #E 98 12 00 06 #Q 41 40 43 40 43 40 #W 00 00 1A 01 21 14 00 A:\*.*@ #W 00 06 02 0B 21 09 00 @ #W 00 00 0A 0F 34 09 00 @ #W 00 00 0E 01 34 09 00 @ #W 00 00 04 07 4C 0C 00 @ #W 00 00 0C 0B 4C 09 00 @ #W 00 00 08 0F 34 09 00 @ #W 00 00 06 01 34 09 00 @ #N FF 04 000 @ *.*@ @ #D FF 01 000 @ *.*@ @ #G 03 FF 000 *.APP@ @ @ #G 03 FF 000 *.PRG@ @ @ #Y 03 FF 000 *.GTP@ @ @ #P 03 FF 000 *.TTP@ @ @ #F 03 04 000 *.TOS@ @ @ #M 00 00 00 FF A POVOSCD1_A@ @ #M 01 00 00 FF B POVOSCD1_B@ @ #T 00 03 02 FF BIN@ @ |׳hy'}d.5leŖ>=n)4W[xi8/ez94QpiX}eveW}1tLcF)ny`5q_mny$WSoqyVNpK{cdiqditrit3ihqŏev1)`oj}Əl}%0rVdc;0*yy~ $m u] 0FDhe0)Trh`&R|ikq%Pntj0$N.m!c4ӏFl*#a000000 #b000000 #c???000?000<00;4 .BW>R9M4I x$|EBBIлXQ`|E\QNsl?Nl;'Ldl BMl;Ml?)擳'+==fbjyjXݛ c LjdLoxL{d+y hbeL4cqqLo+ ebLg f y+;B;\*M*M*DhE+% 2$ŷXH~q8*˾_Q Kqd*ݶGlxMx%O<HboYsmhBpî̱!Vt@.-fH|a䒠%+99sgLMM_SD^2!,sv1LU8̋JyPЪKR\+Gvm!tor7e G7?hs<0U'FaN0Թφ_+T&yzSɣ".