`8NNNNNNp NNNNNNNNNNNNNNNNNNNNNNNNNNNNAT/?< NA\><yBy"@a$Q><yBy@aQNu<<NqNqQNu Galaxies are VIRUS FREE ! All Circuits Operational.... ------------------------------ Distributed under Licence ***** 1989 BUDGIE UK ***** 凴`  @`! #@%`')+-/1 3@5`79;=?A LE`GIKMOQ S@U`WY[]_a ce`gikmoq s@u`wy{} o @ ` P` @ ` ǀ ɠ @ ` ׀ ٠  o @`!A   !Aa!!#Ao')+-/1!3A69;=?A!CAEaGIYLTONYGOTHJUDYGARYANNELIVEHELP[\]^CAMYSIMETPY(JIM  `@0 `  @`! #@%`')+-/1 3@5`79;=?A LE`GIKMOQ S@U`WY[]_a ce`gikmoq s@u`wy{} o @ ` P` @ ` ǀ ɠ @ ` ׀ ٠  o @`!A   !Aa!!#Ao')+-/1!3A69;=?A!CAEaGIYBUDGIEBUDGIE t GALAXIA t GALLERY t CBUKt 5DESKTOP INFt KBUDGIE MFPEt .  t..  tBUDGIE_2DOCt %>ATT PRGJt Z .  t..  tGALAXIA PRGt TRIBUTE DOC3t X`B?< NA#~ #"Z?<"NNT@=3.|@x yN0<?BQ#ppa' L!&gA'C!&"ر(Dma`A#L~HHna^|$gNua B9`aP$#fp#Q#2y )g3 3da a&CByPByNa^>K@>< |a@:QByvB93>B93`BybBy ,BPByVBy #}lBFa 9 `gNP\ [ 3@9i9igL~ y}H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~H~PyJJydgaaa ylBB/a xa@a _Jy`gSy``TByTBАШgDJydgSyd3X`09 @ 3638;B93>a y`nafabaXa~EpBAa"E dp ~aE p~aEbp><aJydf$JyVf y`naa`R9td y$vf9g <gBF`3<<` <<@3aN09 ;(3DH@3LXy y m"By ``D$f3P wRyb ybfBybTy , y ,fBy ,J9fy@<9  9g#B9`8#yNa9@ 99g`x 99g0yJfb (gX 99f 99g`@Ev'|~~ JgS+AtApBB(A@QGA@Q FQNuB@9<Dg|;m|Cn@ @NuȖdP< \yhRyRJydg? 9\g:9(^d0S9]S9\]\9<YdZJ9[g [S9[J9Xg2 XiS9X0NsaNs## # NuhM><#BF9Jd<92.HV0 nhgnBEJngJ9gTn:.A2z"H4.Jp f Jq fBn`p q |mBn nhnJ@k~ y`nt8D"y@jDD| n\8Dy>jDD|nF8XD38;8.pJngDyP=|h3>B9RyvXH8. y jSAa\L@TNQ yf3 yRm3NuJygSyJy`fJ9gS9NuHa@>AJpfC ql~1|f 3,`|f 3,`| f3,|f3T3V3,| f3X3 Z3,LNu?<NNT3NuAJygSyB@h|mh@hB"y@| m`Vy2w3|U3|U@3|U3|3|3|T3|TB3|T3|3|3|T3|TD3|T3||n|m$Vy23|T3|T@3|T3|Nu,yAJygSy hf "NBa@JygSy hf "NDa Jyg8Sy h f*"NFVy23|3|@3|T3|Nu4H\p%k6Qk4H\p9R &&&&&&&&&644444446     M|*y<<"JVk0V@ M02.4<z1B1Bf1B1B&091BTQNuNuJ@k|_nA|nBG nhm2>G36SnhB9B9><`"JngC >G>1p6H@CC4$y@Jn f nhf=AQn|j3 @3>B909@@ 6H@C y29>6;096<98:9:0E2aT0E2aJ02Ea@02Ea6E0E2Ea(0E2Ea0E2Ea0E2EaNu6H@C4BAB N6;0PNu0  9i9igNu@C* yBG0"k(@&I01[1[@1[1[1[ 1[1[`QH`Nu ( y>C,E^BG0k@&I4HB44HB44HB4@D4HB44HB44HB4 $4HB4PH`A0<#1|hhpBhBXQByvNuBA@pf'w$ww y@Tg09  [6H@C 9<RdyTyT$y@vADL?H?L?H?L?H?@L?H?L?H?L?H? L?H?L?H?`Nu3 NuJyPgRASyPRyN yNf" ydgHa LRydByN 'gR` SH`NuSQj`13V:<AC^  Q 9ZBy'jJPf3D3La(aaJy'jg g #` #PB<<#PaFaB,M><@anQaX< f0<(`@|Am|[m@ `aQA .g m`,GOTHaa`Nu?<?<NMXNu?<?<NAXNuByh0y (g yhmNuGEOFCUNTTWATFUCKPISSSHITCRAPJEFFGFREGFRYSHAGFRIGK!z>< m` NuXQNu3'jLHLH*NuE!z><"y$I*B!gdSGj ><B 9'lgBR`BJfJg.<B L3X3X3XF3X3X3X"3X3XdP`Nu"y$@><I*!RgXSGj ><BBfBiBi i iAB L3X3X3XF3X3X3X"3X3XdP`Nu0<2<(E!*azNu>< `><?<BgBg?<BgB/<!&?NNNuLGOTHJUDYGARYANNELIVEHELP[\]^CAMYSIMEJIM `@0 /<(V?< NN\Nu  < l Q pp/@p@ 88&d&d= %8 o iff~~Z~@@@33??^-? @<< {K8 xHp <<00z00? 3`, @ H ~ 0>>>! @? 0 `0 8xh   H~ 0>>>! π@10  ?h``@ @F```>>?$~p` ?h``@ F```>>?$~`p?xO<   pp !">A`z<   pp'">@ "40B@]! >00 0 0 0 0  D2  88J~1T~882? "?5?@@ ` @< ~@~~~<@  "&,49;;;:96630,)%  !#&()*++++*)('$! !#&()***,/24555578:=?ACDGIJKLLMOQSTUX[]___adhloqqqqqqrtvz} "%&'())*//0000//..-,+*(&%$"""""""!       "#%'*,.//01223458:=@BDFILNNOPRSUWY[\]^^`cegikkllllllmmnorsuvxyyz{{{{{|~       !"#$%'*-/1356789999999::::;;<==>??@@AAAAAA@?=<986421/+'!   !"$')**+-/01357899:;<>@BDFHJKMOPPPPPPPQRTUWY\^_acefffffffeedccccdddddegikllmnoqrssssssqomkihghijkmnnoppqqqrrsstuvwy{|||}}}}}}}|||}}  }{yyxxxy{} !#&')+,-/0234679:;<<>?BEIMPQRRRRRPONNMMMMNPSVZ]`cdeffedb`^\ZXVUTTSSSSSTVXZ]`cegilnooonlifc`][YVTTSSSTUVX[]`beiknoqrsttuwxy{~``` `aa``! @pp!`@ @@ @pp`````` ``` aa```! @pp!`@ @@ @pp`````` bbb @q`qX` > P>||=~ @=~88 !!!pt(( h @hxx}}88E,E$G,`auxx0 0 <<|t|88g gw|t|FFF"""xxxx`x`@@@@@"""xxx8@?@p@@@``pR Rr@PX@À@À@@@XXX zzz@@π@πb b b q`q@׎׎`X> > |P|= =~@~88   !!!pt(( hx@hx}}88EEG,$,`auxx00 < <|8t|8ggw |t|F"F"F"xxxxx``@@@"@"@"xxx8?@@p@@@``pR R@rPX@@@@@X XX z@z@z@a|$gNu#RRByRAxN0<JACEx "Qaˢa˞#QpN aˊa^ 9DfNa8 |"N#fp#QaNuRyhHG_`$yR69R*!SCjX#W#W#X#Y#Y#$U&fER6*"*!Bg "R jag "j j atg "j jag "j ja#R3Ra\LNs (C) G.WHEATON. 45 GOLDRILL AVE BOLTON. LANCS, U.K. RY_@W_@X^hY\Y[W_@X[LY\YZW[LX[Y\>YZWZXZY\0Y[W[X[Y\Y[LW[TX^pY\>Y]0W^pX]4Y\W]0Y^X],Y\Y]W^$X_LY^>Y^W]0X]0Y\Y^W^X^hY\W^Y]X]0Y\Y]0W]X]0Y\0Y^$W^ X^$Y\0Y_TW_\X_XY\0Y[W_ X[LY\Y^pW_ X_Y\0") HHAEHA|fBQ"S)f#A#Ai3AXQ)<fR)Nu`<V$V0VxVV$VVW WW&W.WLWRWtW|@ {NR)  B@) 12)AI|(mA(3Nu 9Zg@ )m8)f.i2)i2)imDAin2)i3ANuDi` 9ZgS) im3i`Y) )Nu|`| i#n3i` ) mTi`B)\iNu|Nu| in3i`]iNu9WfiW)`|| Nu92WdS)Nu H           @@@ @y@l@` l`H @< @6 @0 6 0  @@@@@@@@``````` @@````````````        H@@ @@ `` ```` `` @y@l @`xh@  H  H            H           `  $ H / < H $  BAaXpmNuABnNu4<"|b I2<OB0嘲<Kn H@(H@0QQ`f3`y` |b"|a`Bf 3` $|pBB9`8<BB6<d Qgg(g(@g(g(g( g(g(`NuG WHEATON ....IT LIVES, THE SECOND IN THE SERIES, FIRST ACE INVADERS, NOW A QUEST FOR GALAXIA, WHATEVER NEXT, BOUNTY BOB MAYBE? THE 8-BIT NOSTALGIA STRIKES AGAIN. THIS ONE ALSO TOOK LESS THAN A WEEK TO WRITE FOR ONE PERSON...G.WHEATON. INCLUDING EVERYTHING EXCEPT MUSIC, WHICH I HAD WRITTEN IN A PREVIOUS LIFE. HOW DO YOU LIKE THE 'SPECTRUM ANALYSER' ? I HAVE ALSO GOT A 3D VERSION, BUT HAVEN'T USED IT YET. This scroller was the very first one I wrote on the ST. looks like it would be. I found it the other day on a dusty disk, down the cellar. IT LOOKS LIKE THE SHAPESHIFTERS HAVE NOW BECOME THE SHAPESHIFTER, DOC DOGOOD HAS NOT BEEN SEEN, OR HEARD FROM FOR WEEKS NOW, LOST IN ACTION! HOW CAN YOU HAVE A CREW WITH ONE MEMBER? ...GOTH, THE SHAPESHIFTERS ? WHAT. I WAS FORCED TO WRITE MY OWN HIGH SCORE MODULE... AHHHH. SANITY TAKES ANOTHER STEP CLOSER TO PRECIPICE. IT WAS QUITE INTERESTING ACTUALLY. THIS IS A BUDGIE U.K LICENCEWARE RELEASE, ONLY LICENCED DISTRIBUTORS MAY SELL IT, BUT THE USER IS FREE TO MAKE AND GIVE COPIES, LIKE NORMAL P.D. FOR DETAILS OF BUDGIE U.K PLEASE DON'T KEEP WRITING TO ME, THE ADDRESS IS...... BUDGIE U.K. 5 MINSTER CLOSE, RAYLEIGH, ESSEX, SS6 8SF. U.K. IF YOU DO WANT TO WRITE TO ME (GOTH) THEN THE ADDRESS IS.......... 45 GOLDRILL AVE, BOLTON, LANCS, U.K. FEEL FREE TO SEND CONTRIBUTIONS. IF YOU WANT THE SOURCE FOR THIS GAME THEN ENCLOSE SAE AND 3. WHAT INCREDIBLE VALUE. I GOT THE NEW EURYTHMICS ALBUM, WE TOO ARE ONE. IT'S GREAT. ALSO, MY ELTON JOHN & QUEEN ALBUMS HAVE HELPED ME SURVIVE YET AGAIN, WHAT INCREDIBLE TALENTS THEY POSSESS. MY JOB IS BORING ME TO DEATH AND LEAVING LITTLE TIME AND ENERGY FOR PROGRAMMING, THESE DAYS, BUT THE MONEY IS USEFUL, I FEEL LIKE A BULLET IN THE GUN OF ROBERT FORD! I WAS GOING OUT WITH A NICE GIRL THE OTHER WEEK, BUT ALAS, AS USUAL IT IS NOW OVER. It's a hard life. One of the lads at work...Colin, keeps wanting to buy my ST, or a part x with his spectrum...ha ha ha. I found a door, down in the crypt, after knocking down a wall, no I didn't i was lying. sounded interesting though didn't it? oh did it not. THANKS TO THE OLD WOMAN DOWNSTAIRS; KATH, WHO HAS JUST BEEN UP AND GIVEN ME A BEAUTIFUL LOOKING APPLE PIE. WHEN I'M DEAD AND FLY THE WHITE BIRD HOME, I WILL REMEMBER THINGS LIKE THAT.  I ALWAYS WANTED TO DO THAT! DON'T KNOW WHY. It is now Sunday the 15th of October 1989, Today I woke at 12-30 p.m. and finished this game, I had just the title picture to do then the title program, fit the music and this scroller in and that's it. Cockadoodie. At this time there are about 25 BUDGIE U.K. games out, I will tell you a few I like, of the ones I have seen. IMPULSE, by Ian Grainger. (great), you should go over to Devpak Ian. SPACE BLOB, I really like this, and I completed it without cheating. ANGELICA, by Camy Maertens, (one vbi game), different and original, in 68000 code. MONEYSPINNER. by Jim Holmwood. Great fruit machine program. OTHER PROGRAMS OF MINE ON THE BUDGIE LABEL.... ACE INVADERS, ZENITH, TRI-HELI AND BANDIT. WELL I DON'T HAVE TIME FOR MUCH MORE, I AM WRITING THIS SCROLLTEXT ON THE FAST BASIC EDITOR, SO THERE IS ALWAYS THE CHANCE OF A SUDDEN CRASH, I DON'T USE F.B. MUCH NOW, LOST TOO MANY SOURCES IN THE PAST. BUT THIS OLD SCROLLER IS FROM THE ERA WHEN I DID. FINALLY GREETING GO TO TCB, WHO REALLY LIVEN THINGS UP ON THE ST. AND WHO ARE PROBABLY THE BEST. HI TO MAD MAX AND THE REST OF TEX, WHO DESERVE APPRECIATION. ALSO ALL THE REST OF THE MEGA MIGHTY UNION. GREAT GUYS. THE LOST BOYS, OF ENGLAND, YOUR DEMO IS GREAT. I DON'T CARE WHAT THEY SAY. FINALLY IT'S GOODNIGHT FROM GOTH, THE LAST REMAINING SHAPESHIFTER. I thought I'd drowned and you never know, your a slow river and you run so cold. `<|fl0fF8l8pvp88pf< 80 0 ~~`0 0```nff>fff~fff<<f<flxpxlf``````~fv~~nfffffff<ff<f>``|fff|<```<>fff>ff>|``|ffff8<p``flxlf8<|fffffff>|f```>`<|~ffff>fff<|lf<|~ 0~0p p` 44b~ <~`<f<~>f<>f>0<~><~><``<f<~`<f0fff>ffff>|f<``<:0|00~ff<<6f|ff|`0|000` <~> 8< 4X|fff4Xfvnf<>f><000| 6kÆ6n֟6ll6l66l4X<~>4X>`~l>ffn <>6666666~~fv~ff<~>6640xwD0PpU` A`pm g3p 8pggxm83gg@3 <gggg@l<<"s"s"s``?pgg?@`΀?vsm @@ $$""""""   8gg?9@88ǎǎ>#>#>#9gg?o9@""""""sgg<s`΀?pyxx"r"r"r<<  vg< g8̀sfg<3""E"Errr&x&&x39gg<3>>}>}###<8<<80g6vg<36 ""9"9sss<<<<<  @?l?fg<3<@̀? ?gg<3<S??vg< L??fg<30??gg<3<S??gg< L+0?gg>33??gg???gg' 99_x_x||}}+0?gg#sYYDDDDPDPDAAAA[[??gg9DGDGxxyyyyUU??ggSSDDDDPPPPTTAAAADQDQ+0?gg`?QQ8D8D_L_L}}AA33??gg&gp??gg>݀"38??gg? ??gg? ??gg< ??gg<s?56gv<9@xxx@xxx@@@?/ ??gf3<@ ?@? ??gg<;?p```@?56gv<g8??gf3<3??gg<xx?56gv< @??gf3<g@??gg<30g@??gg<3<g@??gg<3<Y@??gg<3<f@?g <3<g@?p?9sA<3<Y@g8sc933<3 @3{g63<̀@?pl?3< 3@ g8 3<sg6@s639@3<9?l@9l?s`3? @X 3??9@xx??pp̀3Igs`$$g?3p3$$3638```$$?l3<  ??@ ??$$ q` Il6 6?/ <<70@  ll?`I@  ?=` 8 ff``&ff``6gg @@~6&ff߀(?~6π@@nn``߀ 9 `~6` ?p``p߀PF1`~0 6Ϙ3 8 0gߌ =@ `?wp`?6dx<s|@ xs|X9wp ~2<,?3? @gߌ p'$wp?`~S0e?wH#s߃@$+xN=wp)2c70\;t ` gr<{wpV1| @| >\;t  |?P`s98|wpQ?||AX>`|j978?\;t s3V>y p<wpQ?||AX>`s?Ϙ0j978?\;t `s3V_<@x?sxG9|L^Ø?s?Ϙ0g>߀\;t P|? s@p3csxG9|L^Ø?!?`dBg>\;tp  |?ƀ8 9sx q?0!q!/?By8y`\;tp " p[qሜ&s@? f?M!</9?z=H1`^9pTp%HM1`x?O<ἠs8/= P9?=G9^9p = 9G9 }?/(g?P9?=~~^9pTp 3~IŎ8hs8/(g?P9?=~~ `p  3~1?xP`s8/(XP9?=~W8^9Pp 3V8 oF ?/(g?P9? ~S?@ P 3~w<?s8/(g?P9?<0~S?^9P ` 3~8;ys8XP9?x+^9P (V8csqs8/(g?P9?0~S?@ 3~s8/(gP9?0~pS?^9P 3~X?6}ǃs8/(gP9?~pS?^9P 3~l|ls8/(gP9?~ppS?^9P 3~68s8//gP9?~ppӿ?^9P 3~x<s8/?zgP9?@@|@ ^9P 0 <`|xs8/?zgP9?|@ ^9P 0&s8/P9?^9P ?cC<s8/P9?^9P ?>~x@@s8/ `zgP9? p@ ^9P 0'|<s8/ xzgP9?p@ ^9P 0's8/(g@~ppS?^9P 3~?@s8/)gP9?~?ppS?^9P ~3|~ ?s s8/(g@~pS?^9P@ 3~8xx9s8/(g?P9?~S?^9P 3~'p<s8/(g?P9?~S?^9P 3~O<axs8/(g?@222~S?^9P 3~wyp<?/(g?P9?0~S?^9P 3~8s8/(g?P9??~S?^9P 3㇜@@|c~s8/(g?P9?=~S?^9P 3Ə89>?s8/(g?P9?}=~S?^9P 3'q~s8/(g?P9?}=~S?^9P 3O<p>s8/(g?P9?}=~S?^9P 34y xs8/9?z=xT8^9P(4hrs8/(g?!/?Jy~S?^9P 3x8s8/(g?!?@?dB~S?^9P 3?`<| 04| ` 08`07?_y ~s<<GG>>xp>G~  ss"" "("(?1 <<JJ""  ##w @&@& (( LL""  "*"*""&&GG!!<<")") pp ?@  @@ @@@@  T*<<<(       "  "*    $0"F   l$ 220*P    \ &&F |2   Z 0 $.  tC..  tANGELICANEOt D}BUDGIE3 NEOt d}AMONOIDNEOt }SEAKING NEOt }SLIDENEOPRGt CTEXSHOW TOSt wTEXSHOW TXTt VTYCOON NEOt }NVADERSNEOt }OSTILE NEOt 7}!!!22CCTTvv @w9rQYGsz<{aߑS~9| ?4 M?>1 _?;7/s?>׽_{3w gNw?O|'loͿn^u3g 3޵Ns??0`0`0`#&mx`9?9o?| ``````m+9 <>| ``````{_H<>|  ``````x[G'_3<>| ``````Ǐ3YgK\ܯ<>| !``````| A``````-<>| ``````o<>``````#?f<>|``````j8y<>|``````,>}?χ<>|``````œ>=W<>|``````, ppf>?|ppp```KxiAP0pq͎3|?C ߀?(l?<ԘwHgY9‚|Ƒ??ew@?9<` AR"=oa'k??e>0e=>X| ~>G_>²|B57h3/>\z}&jY1|GA??O>KxW!=.y<{y>!| 0׹qqg?>ao`łoC\ BQb>o}) F0>~~~<Υ~5\T(/>|?D}43T̋y|`?>=le`0_FFUaa@? >=<{8?O0nO0r@>=ec`@O &]ٳ@)C"!~7?+<+Bݿ`fy``pKa 9>{Q@O'A2MIg<37@mgp?|ki_# s`wT~l&e\d?# >`fd asG}?S AJK>Pȿ@n?t@35Eƙ8f 9 ?} c`d<s{ v@Zdރ [B}?;Dy %&{9Fk $tx;7| om46F\v! yS`M{?hwwa\<=C+8<H0`H?g `z0x{ f/7w nn}OnE;\CC? fil2 o a21 'IP?>>>`7:V = f$d~?""""""(((_ ?e ƭC±723q?>>> ///8Gc;8ܓl#\p (((G0aOc/y bbb///7@q?p7??\$|ۃxY&0q#p w\z<9  @??9# h[ZwhjX|>|<Pč? >nngWLwtGg">>>?X%kil2C<<"""""" 6d0p2y͆Lc` """>>>jaNf0ǿ_@ j""""""e1RĆc8⚟e">>>"""$>x>MAfWpA^n3~BM> aQ1/s>s>s x^~$+*f3e=7o(((B(B(B("""pP2'>ds?(((CCC"""%', gj ( ( ((B(B(B("""d' ʀT8*{>2+>hV9 jyEEE@@@@@@~11g0&GUOEEE@@@@@@1~$QI0(Aј Dl+_cEEE@|||@@@8}sobLWN_n`K#R.xV_O~=kdn9~ |?>1hx[`<<=31ߣ`x{-lyrWW#k/ v`8 ?QnZr{{ӂ Pu y~ 5ҰJ? G n ˿_?7C"]bzzs mGCܯڝc7=?A"Hog&!꘮'oxxcKbvj  `vq G7? ->cxo?4pY>? C0wwSΝA3ya=lc<9`}QwG8xA63`o}a9͟_}OЙ?t Ra~Vc66o_m< !;q`W̿g(ಧє`oIB9i?ws+Gvƅ#${@-;Ǭ?_ǿ~d937"k i,ӈ/|$ X,p5B8U zRwىHl<OTgE\`5r?ӏ,{ '>*oҿtS߀ @4ox8x` Ԭ~Fo?O,  P]??p0p|j~_{OdE|{>K{3~];} Xl HP?hW?Ψo 7?w^K>A~J~c~uH#,^@`Aկ?2{ F}?Z'?^ 0Dk?|n ????)k ?MG?jb}/?{2A~4~ڠ,l?11C;/98H~ kgj@#`_g/6y?|W/EXrۀ3(}G` y??.800mǠ8?/*@C"%@<oI ou~001O7"ufg?{n#vZ9333K 0@?c?//ݾ ?WwG@o?[c?scW``Ge#/%_:8+7g?!ppp?2CA:~>IwgE[??;mopphиC?w}d^;Q?;/o}ppt-/ӷ7ox~??=qpp W6 ;;rʸ1wa? _wwfL kN j@8.氏I*)7-_ҿ'?@N1b oQPM04M8nޟ?]/yO0n1/%9uI 0a4zH=>χ^o¡nDJpN=|\/s ^@??u84oΚwnNnn=qϏ2?|=}~xx}9|(w?#<|m}gNq`=5=2 >K??_}=!0ߐo<yk~Syt3m0 gLEm :.>g*/Nc?~h#\?lRv;v;v;;;;qA(|N?+n.Et?iO$#<;8m?}yyw;w;w;ΝΝg8g8g8B8{㾿?vP=ΝX'dZXZ&s1TRLIآߍw;w;w;ΝΝ'9'9'9΀΀΀L秘gyS&?GY{:p &?0 ?U3>Nm#ǽv;v;v;ΝΝ;;;?"U#[<?&~7O|k?mׯ>smw;w;w;ΝΝ999΀΀΀T"8qZ8 Mwc.CY&9)A=B}w;w;w;ΝΝ888,:>:xڽbp/^!xp9>vvv;;; f|v7`T  =e@9NOf{O O~>'mK^9?z~h8:y  ǽ'3{gс>?avϦy-Yb`s ? ??_3c=,b | Ϳg<wU7~!MH 700?>8?'@Dqp'.;'?c]o1Mypp 9Y|'<`E?183sOTx`&h ؽ'/8{M߃O?)qq$,I }g?z>HX?IwAss`=o,83sOTx1{lxI6ss//}.!ߟYM߃O?Aɏ>xjmNsNs~< 6}>HX?IwP$^ e qqg'+\?ǁ?{ y?|?p'xeb__'>#SyYo ..?((%%?K..;;88 w"ATCBGeGwTE @ @ @???@@IIERER  ddTTc%% @@? aO@ A A A@@? ohoag@80 @@@@@?@{@{{agBBB  @@??0?@|O[[;;ag  (  Hj H@@? aO~~((11!@@p@(0(0(0@@` ``??@  0"0 @@ߘDߘ@ PpP@@?08D<@<@ $$@@@@@X`߀Dߟ@ @?` &&"(@@@A߁\>߿0@SsA@@? A߁>߿#c#!a@@?(C2<?"Ģ @@@?0<pp@@@?0a T?1hh<PPP@@_P? ?AA<??7`\AA@@@ `D8x@ww\  b @@? _A_? ?AwX`@0vvAAQ@@@? ?? |߀0)=^^]@@7CB7|p~~HH@@@fx 00@@|*0@@  8C% P@@? E nc~~@@@@@@A= =@|XXXhhh@@xHbダP#@lC@@pG @s࿟b @@pD  `8-߀~P@@@@@pA!}A? !߁@Aww@@x ?` xww9@@xHPp??  @v￀ P @@`@}Bp~2 @@xK?B  8 Й@@?^F^@Om@@@@?_O_? z@p@@@? ||}_g!? `pp@@? {A{^W`pp0`? 3cs @@{A{`?`p`_3OC'a q @@??yy}??'{{x wvDL{@@p pcc !` j588 4aww`x#ܬ```@@??~{ ???`x ߣ``@@??3 y< < @???00ϝ@@r?}zz3t3t CO=`߀`@B? @@~ `CVV0@@~B|4?s;BB44(@@  !   @o@@OOg p{}}}@ c@@yxy0x?{ ?? @@/``p/00@C|?ƀ0@@@@@ϿϿ4IɁ?((޿-01>π<?&cooo@@!?m` ` ps3# ///@@@# 4|@@< 6VVAC P߯߯߯!(@@||..n : `c|_99& __ hߗߗߗ0@@<~(0(Hx&c hߗߗߗT@@??>=<>=P_>~@?@@|zz q (P@@??O3Jϵ<@@NAuK`$-4E@@;/<_ 3 g 3Ap?J"Fsss999```@@@Lj9?ƩV  ~݀$ܯW") B3νν JDJDJDHHH@@? _":,m=a11/  KKK%%%```@@ 2_ _2!߀ KKK@@~>~o@NN~|~/ 8BzB?``@JJJHHH@@|Wo o0n0~ϑ@B@IF++9ge rGrGrG9^9^9^```@@^~qEp }r ߀CC|@@@@?}@X {qGG@@@ >.eei@h yyq~~~~~~0@@x H ނނ?ppр   ߀KK| Hyy?@??? @@`` <<`| 8HxHtyJoO@@@@?/B37;T/}`@@@ tt>/@n!=!߀wMM  D@@?'@Ё~~ooq@@?`-AI޶ # 0(@@|T00#6<<@u:sn}}?  ~@@?(?t~|\@@`:ߟA{_'@|">#O@@P~||e$4##3D0#"߀߀@@ xx@@@h??#!1T:}~~"@@@@ @ ppDF?A Aw B@@@@@Gx_r  !~~~@www@@>*HH8{y??@@|T @@ #x  ~< ' {;8???R@@5  pXgg~~ X X X` 000((""@@~DD`@H!H o''g? %!!<<@@  ?OP|\?0lllAA((PP00?? 98?wvvvOpp_?8?8?D~~@?115??;|7w @@PP00 ?l 77' @www@@@@B!!""_8|  +D0@/+ ##߀  HwH;@}.zeU H@߀x, 8>1)a |||@8<<<???@<oo ? 62Bd @}? B```???< } }}B??`  ~~~8@!ށ ~~~"@   0??$0@ s@}}}`X _A8888??HO@P??```???`@`@`@???F!w?f ???@@<,t(1~(t F#0iPz&Gٸh@p" ```@ +6Թ+FOv''SSz~AJJ40);???s qT no6/6w?`xxx  P@P@0a`c<<=||__``?s ?8ttt@@?s 0?????ۻ///@@s 0????zzz 0???@0>(?|~~~v?|}}|00`6B?~??|gg`{{{```PP@ >?|O_@x?00>0@``` >?|``?00>0ppp` ``pp>pppp??~?`g`<>xxx?Cx?~?888?A8?0?~???==x=???0?~?@@x?08?~?x?~?|~~0~?|a`}|}0?|  0???|30?|??00?@0??x<<?p?x??|x``?????|9??y|z`` 3  cˀ4..]Z]ZЀ+:{:ՕՕ ..U[U[<q?s?|?? 00}0@Ͽ<8`ǟ88   y< @@yA <??yyya =??yy??a{ ?||yy??s{@xxyy<<sy??y|9? yyyyxxxx0??@yyyyxxxx{|yy||{|xxxxyyy|||>>>n?8:?>>>>>>???|?x?????!|?p3 pE<`?@ T ~8?` ! g Nu`s c . F t.. F tQUEEN5 PI1Ht B}RASTERS1DOCMt ICHAIN PRGQt RASTER PRGTt tRASTER_5S Wt  RASTERS2DOC[t 7CSHAPE PRGat Hx  fD34$2TD3""7ꏐ 8ߚ;O6xʍ ʜ9}.25Dnxׯ~/da=Gn|:{Ηv..6q~o~Ϸ{翿?[_}0>=1{ZwJ0p׏8{@F{N;ݗTǻ-x<}0`?y0;?U2z>p045:?}yw88 6睾byJ~j5!϶R><}1S}ڀv(~6&v~9A@c$i|ob8~zuj.x;9! ?_G)n?ҀCvo?@g@& jg{T Ft?;?_/axPwpP`,Y/bp?-zp WG~38h?p`p?0 W,~)8%wθp0@7p0?0?Wn ר8_wpJs!vdm>|P~_z}d8ׂh.8ܮ080?ÿ?}$!@!(a?G]>1pjn@&b)b?8.?p ڑe(b?k3 "W_SC!__S U^+ -/@?X^&O6&?ق8?h#g#_يwr8|Js7>oտ/ <32_i _-_@!`azSݫ ?QW9wQQ_?GoKWTz6Tawwo7K]xo}߭@M?T^ ] ` ` ? ? ? ~ N \p1F}t<p0@>$0?Cg`2r_8h l>|yp7`oda_~A_Nÿ@@>| OT o,@缱y3B2}Ϝ64p`> WĿ?^_=^071)>8kX?: ~:]h!>pA.8W@+ zVl>GWj& 2m><==2y1z>? : * P]Kd g[[WQRï<C>?pjkS!1; boWW|wwz{>?8*?~/*_C$?**~RՀ;>|gO~vR\/GGGnVzՀ;>|UWoDFF[[[?I-?>3@TWOKz=oͯPS_?>###P*W$/%j%!X}?GiHUTA"oUKK HwA?K*W60ߵ?J?|?? BjUSo@->1QULBPhdsUUK(4"UpSc2#?7wJ#ύOg??JU__+W_%+P_˿~DUu~/W\~" _O~.NPT+B|&N-*_|o~Zjo|<'l//pt @_8pxz]Op61hܯ>?+f@PP@Z|EIo6__F|?u }@dDpV8?vze`[[S^0 o}TT`@_@Mm$Ss>wh(s8@@V+0W8ЀI_8`7rH *Ug'_x0ohpn? UW?Dp ; 8ppG߿_Wzp/?$PP@70UX|_?B?oHUX?@~}7@_ y\~?C.?_@_A*|@}_/ D @= PU߀ E>9~ ʃjjՀCPY yŹ4?UWU? UUOO o> 2p:?WWaPP |t`OTf? +8 7sU' 8x>>?T?Wue+/0? >p=>?ԯ???Ttrpp`??? IY^"_P\?<(?pWsp7?|<|.>G+ݟ=MM%x=}GOn?| M@-_x<|8w|x0GG@G/00yy?{zxbb|?0:Oxxii=~  AO?8(:?aa3U@qŗUP??xaxa3Yow.w a aYgLL?UES_|aa300o/#{z|(xx7~dd}w3T|UT990? =91n`/@@_22__3wv?p?+g?@pQT0;?>//>>H8UUQqQ< (( """"JJ  }.)* ? //<< >>>>KK8||>&|&?UU@ **"" """"JJ  ?? >> ""JJ  K2ŽB?UG!"235DDEUVfgw @@0 XdH1@@@pB$@!  @p}$w"rA $@@H @Dx  @a @@7 Á@@ 8?mA@B( 8P H ?o22PCID@pt+?"$8n`_"@788@|||]gT xxxSώxxxxx~y~Pppp???c?@ ?C>DDppp??? O` @ppp???}|mv@qqp???__? sFqqp???M*K @ qqp?>?>???tE|ѻ.Dwqqp~>~>???.cp @qqp>>???߀?@U`0 y0C7qqp>>???f0K?$'A#{qqp>>???n{~~@cqqp>>???9evl@WXO'a||qqp????_ɿ0P6`||qqp????W? Wp A qqp?????;8`cל(0'?ppp~~>>???'}_?coj=wppp>>???|{>E?@7@oppp>>??? c ~'0s (_נϲ0Mxxx>>???lp@Ay)GH'xxx??? `}0 xL!???~;M@/pH???#0/?^__*Pկx ?;̾3x 8h zP\<<GC??'&S 0r0`ODL`%0N~2Py~4 ?oE(!lC  5C ?gI$`0 0փwp s@```l.Of8m8 !```*   ```B > CyC@@||cc`H+? c~Dj@C2||cc`qqp1:8yx8 / k= &=||cc`110urGp @0 P_? $~ ycc`B™Bfz~AH??;o0cc`vBBǀ2 N pV&_?@  cc`AAA F@R ʯ979 n~ !`?䝫f /H(<??[,B`I h_{?H3?)?So,_o}?49?1/ ?/+ @ڛx'YN?`?@@gx%/^_?|@?W/0@ax_? - ````0770/d`Ƒn|_?Ow{cc`4n7_؀_? ~ʀ3 H cc`??x8'W؈Y_?_~s_ ||cc`27W؈_?ZVaE@@$0||cc`Ww^?}&9?E>3||cc`g??"8'?c|20pwGo?@```o_Ba$'A^qq0#@``` uE7^ʨ88?o7ȿ```IF?!~ d?_Asppx(?? p<spozTpYDAm?7` | 4|c 51b_?DA]E8t w Pr? ?@OpqSA|{ԗ0TX7y?K?~_?+I1OӰ 0gv{یtQϯoRx 2>?@?FaϸG&?`V?uƇ? C'wЈlq`Ypd|?gH_Doƀ}xQl|G@@g@ og7L3?87@0kZր! pn x99Q @  73I|%@m??ln?/o@w}>0? "  ... ```!!!111 ~ @@nnnκκ l J ``` ȾȾ ;@_c@3[%?g"! G`J ` <м#м#3B?< NA\#p#p2< |@"|2Q/?< NA\ ?<NNT#?<NNT#?<NNT3 @f?</NAXO?< NATJ@j.?<NAT<f?<NAT< g<g `< gJyf09Lj>3N29J4BIA6A3HjDC43J33/<?<NN\O?]ፌw썆w[ ݍSꢱÏDrk̍捌ꢱMro󢱍 Rq ꍍq덍 Rq ꍍqﲴrr썌灍ꍍ_ ru=獍Ͼt?#ύeď̍̾Nכ獍ιNnϾOվM4Wqru 񍎍UErqqruqWWDry捍s͍sârsre]썋Erw-񍅍qÏ퍍ٲ岱̍捍Rq덍퍍 rUErqmUUErwt񍋍ƯUErqwqiߍ [[WӍM)d%q{%d)Í)s=\1wMq덍qq4rw񲱨t4rwj MqrwKMrw=rwrqrwqϞtrrUUErwqcqRtqtwϡrw1rw=rq썌ɞqr=rq썌qrϡrw1rwq҅4rwϴrwjsw1rwc}ͻ=rq`}΍Rtq54rwϴrwjsw1rwc}ͻ=rq`}΍Rtq郌4rwϴrwjsw rw/c}ͻ=rq`}΍Rtq4rwݬt L]4 hMMݮM ͮM 썌i썏3tȍt ̭񍋝뜬DrqE獍ὴ=荍۾t獍]tս׿Ǵ捍퍍퍏Erw 퍍eErw 􍌍덍ݾt㍉Ï͍=raMdM OͯĨ׍׍׍UUUꍍ5􍌍덍+tϏ񍿝덍퍍ѹ΍eǏύmď̍9덍;덍퍍?㍍?⍍K9㍍9⍍K;㍍;⍍KErrmͽ͍덍񍋝O͝ry썍Mꍍ?􍌍덍-tϯ5덍퍍ù΍eǏύmď̍ˍeȍmɍ5덍 7덍 1덍 RErrmͽ͍덍O ODr{Ere􍌍󽴍덍t %卋升千卟卛͍ ύjϩ9_C썌7퍌͡U썌IO퍌o썌ӡC퍌a썌ɡUO퍍{썌o퍍U=썌aO퍍37썍{{퍍)q I썍Y썌=O퍍I썍;Oq 덍rk ḫ|덍 ḫ|썍=Ocs[scscscscsPqccPPErGͧ[sXscs`scs`sc}`}Pq-Vq-ErKjrMʱ ˍ덍 Oɭ|퍭|^q-Er}nͭɽՍ̿j4LՏ̿j4LՉ̿j4LՋ̿j4L^q-ErMr+Rr41IÏRq4߮q_덍덍qqbrwrrꍍMy6ގ{F.ԏwPO$܌pclYE0?% Ӎԍٍƍʍ΍ࢍໍ್ȍߍՍӍ鍉獉㍉򍍎srrrrrrrrrr ࣍Ɍ܍܃͍6퍍]࣍Ɍ͍=࣍Ɍ܍܃퍍=࣍Ɍ܍܃퍍uǴꍍCt ޴ 덍 썎ŭI썎썎썎t 썉M՞MᓞtՍᒞL᫭I썉پM՞M᭞tՍᬞL᪭썉M՞MᯞtՍᮞLᥭ썉t Ǵ덍ᓝqErwqjqqrrM ᨭᦁ덍ϴϴᮽ덍덍퍍MrmrErURg=7I卉)-GōCፉ}[퍉T4ϥ퍌qT퍌%񍌍퍌卋XM 덍獌%rQr덍卋͍hͯׯ퍌ŝ8M8M񍌍퍌8M8M񍌍e͍r'8M8M񍍎퍍GrML񍌍퍍'񍍎]ԍԍ퍍T퍍ԍ܍ԍ܍ԍ퍍]]ԍ퍍񍍎퍍՜͍퍍ÜM퍍Ʌ]퍍eԍ却퍍񍍎%퍍ޥ덍񍍎1协捍%%͍ǥꍍM 卭ǥ덍卩Ǎߍߍ南]卑덍卿񍌍퍍卿񍍎卹却č񍽍덍ꍍV5荍荍荍Ë鍍 rhcXMߍߍ卝rr卹rMsuߍ͍schũݩǍrrsY͍hũq_ꍍޥ鍍南卭rꍍ%獌卥]ޥ鍍卹卙r덍卝s덍drrč]]即] r^Lꍍꍍޥ鍍񍌍nꍍ덍덍鍍e퍍_?荍%̍o鍍̌-荍nċru]̇ ꍍމ덍獍rQ千ˍ]퍍ɍr덍 N ꍍ٥͍捍%e 8K8Nᨅꍍޥ鍍却ޥ덍%q4U 񍋍񍌍1񍍎ծǍ񍍎hͫ􍋍ƍ^qBrKq q۞qٮtݞq  uᦞMrhrErOύOύOύOύ]y働奍ύэ'y働奍ύэէ⍍Ɏ͎ވ؋눭Ɏڏʌߊϊڏ؉Ɏݍ͍ݍَ͍Ɏ͎݉؋ɋُތߍ܍͍ߎ̏،ȏ؎ɏڏʌߊϊ썍rrrrrΆrrr]r}rrr}r}rrrsrsrrrMrMrrrqrsrrrqrsrrrqrs ssrrrsrsrrrqrsrrrerurrryrqrrrqrsrrr]r}rrrursrrrursrrrurs qsrrrqrsrrrursrrm퍒rrmrru퍒rrM퍒rru퍒rrurru 퍒rru퍒rrurrr}r}r퍒rrururrrurur퍒rr}r}r퍒rrurur퍒rrururrruru r퍒rrurur퍒rruru͍rrrsr}rrrsru͍rrrsrurrrsr}r򍓍rqr򍓍rq rq s}͂qmMrrrsrur rusurrrrwrqrur rqr򍓍rusu 򍓍 򍓍r򍒍rs sjBs}Mr͍rs su퍍rr}r퍍rsr썍rurrrururrruruRrqrqrrsr Mrs M rrq r퍍rr}r}r퍍rr}r}rwrur퍍rruruMM Msrrrqrq srrrur}rrrur}rsrurrrsru}Msrrsrsrrrrrsr}rrsrsrsursur򍍎rur򍍎ruUrur򍍎ssM}Mrrsursu퍒rrruru퍒rrruru rqrsrrssuu rrmrk }uqsMMrrssuur퍒rrrururur퍒rrrurururݍrrrururur퍒rrr{r}r}rrrqrs 2 rurk rurusMMr퍒rrr{r}r}r򍓍rsrrrrqrururrrrsrururrrrqr}r}rrrrsruru rrrrsruru srrrrsrururrrrqr}r} ssrrrrr{rwr}r}rrrrrursrururrrrrAryrMrMrrrrrursruru rrrrrursruru srrrrrursrururrrrrAryrMrM r͍ryrrqr͍rur͍ru rrq qr͍rqr͍ru srrerrsrrmrrq rrs srrsrrm s ssqqssrrrMrMrrr}r}rrrMrMrrr}r}rrrsrsrrrsrs q MMqswssrrr]r}rrryrqrrr]r}rrryrqrrrqrsrrrqrs m 폒 u펒q rrM퍒rr}rrM퍒rr}͍rru퍒rru MM ]Muus팒s rrr}r}r퍒rrururrr}r}r퍒rrurur퍒rrurur퍒rrururrm umsurr͍Ls͍rrrsr}rrrsru͍rrrsr}rrrsrurrrsrurrrsrurrM yq}usur-ls r rusurrrrursrur rusurrrrursrurrrrursruz͂RqmM퍍r s 싍u͍ - Mr퍍ru퍍rrur퍍ru퍍rruݍrrumsMr퍍rqq 3L e m r퍍rruru r퍍rruru MsMMMrrrq rrsps} srrrr} rMrsrrrr}urqrqq}Mrrrsr srrrqrs2wpsu wrsursursur󍍎rur3rsr󍍎rurrrrrsr}M}Mr썓mMrrrurs }} qq ssuur썓r} M}Kr썓m}퍒rrruruMM B r퍒rrrururue mm rurururݍrrr{r}r} rݍrrjjj r퍒rrrururuMMM }MMrrrrsruru lsMM rsuurrrrqr}r} rrrrq~M~M }MMrrrrqruru}MM mummrrrrrursruru-Ls 2usuurrrrrAryrMrM rrrrtmrutmtm mummrrrrr{rwr}r}M}MM qr͍ru q qrru rqu ur͍rym srrq s srrm rrs srre} ss ss ss ss ssrrrursrrsrsrrrqrqrrrMrMuu qsͲMwq qsͲMuqͲMwqrrr}rqrrqrsrrrrsrrr]r}m} } m }퍒rrM 򍍈ru퍒rr}퍒rrM ]MemL ]MMM]Memr퍒rr r rrrurur퍒rrurur퍒rr}r}퍒}B} summM ls umm ummMrrrmrrrrsrurrrsrur͍rs}rm} syq}-M ]|sMzr}brMyq}-M ~͂srMsrrrrursru~͂r}rsr}usur񍍏~ArsM u͏  m ml u͏ m qrr mrmrrrruu}qM 3 L=y }Mqq3 Luurs rMrMrrrururr~E~E s 򍍎s񍍏rrsurrq 򍍎s񍍉rs}srr}r rrrsrurrrs~Ersursuҍwqurrsus ҍwqurjqrsmsrrrsrrrusurrr~Ers~E ssuu}} ̋uu}}mM}} usMM usssuur}MMrݍrrr{r}r}emmw݉uu{}}emm emmrrrrururu rrrrurururrr{r}}r͍~AMMrrrrqr}r}mMMu}}q}}mMM}MMummrrrrsrurusrrrrsrururrrrqr}r}}MMrrrrrAryrMrM-M E}MMAyMM-M mummmummrrrrrursrurusrrrrrursrururrrrrAryrMrMM}MMrru͍ }uͭ u}rrqqrrqr퍍rumrrm mm surrssrrsr͍rm}rrrqrsrrMMrrqrsrrrmr}rrr r rrrursr rr}rqrrrMrMrrr}rurrr-rm퍒rruq 򍍈rmrrr]r}rrmrr r퍒rruruuurrrMrMrrrErMr퍒rr}r}r퍒rrmrm r򍓍rqq}rrrmr rrrurmrrrqr} rrrrqrm rͲM 򍓍jrmr}r}rrrrrMrrrrrurErMrrrr}rqr}rrr}q}pMrrr}ruMryrqr rrm퍍rr}rMs}MMr퍍rrur}rrrr}sqqrrMr퍍rr}r}NM}M}EMrrrsrurrrsrusurrrqrmrrrqrmrnq }qMr͍r5󍍎rrrrursru}q}rrrrrsr}rzeumrrp}rq}sMˍ퍒rrrurumm퍒rrrururMMMrMrqq}}NMMMrrr5rKr퍒rrrururuMMMr퍒rrrururu 폒 Rr-rrrarmrmQ.M̓ mrrrrsrururrrrsruru򍒍m rrrrsrururMrrrrurmrm򍑍 m rrrrr{rwr}r}rrrrrsrr}r}rMrrrrrsrr}r}r rrrrrrer r ҍ m r͍ryrrus rrusrrr} 퍍rrerr}rrr}ssrrM͍MuurrrMrM؂rrrurumm}urrrmrm rrrqrqM m퍒rrMMMBM􍓍j u8  TMmmr퍒rrMrMMMAM(~B}پ}r?Mumrr}MMMBMk jlY!ksǍi퍎MmumrrrMr}MMMBMAr rwEMm퍍rrM ͍ ɍ ͍Trrrx} mmr퍍rrMr  ~|-Mm͍M}r͍rM j$mrEr{%murrMMBMB֎BAr`rgٍAM MMAMV8i u?Muurr MMAM~玾r(~A}>񍍎M}urr MMBMjَk jm Mmummsrss ͎ ͎ʎ ͍ rryM͍M}r͍  rrrum ur rrrqrq11ssrrrqrqrrss}}Ȕrrrrssqsrrrrsrrs r m}ݍrr s rr ͍r͎MqMݍ̔rrrr s rrrr r퍒rr͍ rMM̕rrrkr ksrrrkr rrMrsqr rMMe͑󍭍rrr rMr rqOM sr rqOMr r rrrMM=e͵ӍrrrM su r퍍rurrrqrq 򍍎Mr51ŏɭձՕ 򍍎MrM r퍍rrr} rMrѪ-g')Ł rMrMs s srrrqrur򍍏rMrqAÝ b Mj͍ύr򍍏rMrrrsrsrsursursursurrrr{rwr} rMMM춁R^Br AAN-k=LM rM퍒rrruru ssuu ssuur썓ryq MM] ֍ T_m] rr ͍r퍒rrrurururݍrrr{r}r}rݍrrr{r}r} reMMM 3mr򍓍rsrrrrqr}r}rrrrqr}r} }MMϓ ssrrrrrAryrMrMrrrrrAryrMrM mϓ rrurru }˲ srrmrrm rrrrrry$&1%0`Bqbwr;2p bgrJ3pBqRgbD`ST`*@W S5 Q0W @4A4A$!F17A$6G17&64&6$&6$&667&7+r6657f`PRgB  'GPcrr`QF1&'% &6PPcrrs`QF'F1pS`srbprrs`C&17J5%G7VAPSRcsrspscCQwQ&F! $10@casccsrBRcSB@1GG'*476FAVP@S3BS`spprC@Q174$**&&6Q@@SScssc`bCQAF1&4'%'7G6AQPPSS`cCQ@Q1F&7''$4'$&4FF0A@APPQaa0A06A77''4'4'!&61FAA@0AA0A1A16A67&''7$'47461&16A1AVQ@AQ@@A@1A6766''7'7677F7FAAVQQAAV6FF66&6&76'7&7611!1F1AAFAA16F166F66&776&&66FAAF6FF66766166FF11AAFA166F667766&6616F6166F1661661&66166F66166166166r66H0&Vfq&7FE4&$'606Ca@0!4'57@ABppQ7''7D0@110'DUAPGVAV!6VFF64f1GQGG6GTgFF&WG1&1F66 6F16W6&W!167FC6G10'6'7AA7TGWD& 01011!6&'6FGgWWVG4!1166G7F161AGF!676A6 GF6F6'F11FG61&66A166!11'6!6&67F1GG6A&G676FG166F16!6FG!6616611616A766166A11FF6F!76FAFA6&F66F6F61766166166F66F66A66F66166r66r66#A@rp rq*#RZD*0PARgrq rsb@gv0Qr@prEV#rvpbSpbspJdsq*q2rTBr2VBsq"rdrqwRBUrbrrrJr*CrFrsrQ&bqvrvs*r%*rrd3JAcs!rwrtCQr$rP:Bs rZRw$r&J P Bsqr:BvC Srr*d `rFrv$*rt#rf@5"q!431A7QD66$!6Gbw!7%@$'bs1PDP1'&`46 p*@ac0WF$A@'6@fRV!5AQ6'$&F1Acg&1$&@`Q7&'!Q''&@a1G$cPA$!&AP4'SQ7'Ca&71V16&66A46@Q14AF17AA4667AAF1A7&1F7&AA17&AF&&6!cW61G1Q7@G'&76671AF1661Q'&AG&1F661F661F66AF167!661A6AA66F66r66r66rrrr66GW4JE!'Gv:sJzzzB"6Dvzp:w'U@zA*CzV 11WCCGs"RQp"f`AewGC4Zz ::*: %UdVQ0tqpcrRrbrsrrscPQA667''%'&6F@QSScrrc`QA1&&'$5'6AAPScsrrscPAF6'$$ &1APSbrrscPAF6'$ '1APSrrscQQ66'$$'&11@PcrrscPA67''66AAPPccrrc`PA67'$ ''&66AAPPSbbrrc`PAF67' $''6&611AAQPP`ccbrrscc`PPQAAF667''$''66AA66r66rrrrrrrr$ - - - - - - - -  - -  - -  - -  - -͍̈܍ٍ͈͍͉͍͌̍̈܍ٍ͈͍͉͍͌̍̈܍ٍ͈͍͉͍͌̍̈܍ٍ͈͍͉͌̍)ϯMϭ͏)ϭMϤ͉)ϯMϭ͏)ϭMϤ͉)ϯMϭ͏)ϭMϤ͉)ϯMϭ͏)ϭMϤ͉%ɔMLM %LMM %ɔMLM %LMM %ɔMLM %LMM %ɔMLM %LMM ͍Ͻ=覍ʽ͋=ٍ͍Ͻ=覍ʽ͋=ٍ͍Ͻ=覍ʽ͋=ٍ͍Ͻ=覍ʽ͋=ٍ\mMMs͎Q\MMm̀Qs\mMMs͎Q\MMm̀Qs\mMMs͎Q\MMm̀Qs\mMMs͎Q\MMm̀Qs]}mm]}mm]}mm]}mm]}mm]}mm]}mm]}mm"rrzwzrzrrrr򍍏"zrzrzwrr"rrzwzrzrrrr򍍏"zrzrzwrr"rrzwzrzrrrr򍍏"zrzrzwrr"rrzwzrzrrrr򍍏"zrzrzwrrՎ-}󍈍 mՍ-} mՎ-}󍈍 mՍ-} mՎ-}󍈍 mՍ-} mՎ-}󍈍 mՍ-} mՒ-HwM͎ QՌ-MH wQՒ-HwM͎ QՌ-MH wQՒ-HwM͎ QՌ-MH wQՒ-HwM͎ QՌ-MH wQ蝍ˋܽ=M~=M܍~蝍ˋܽ=M~rrvrqr}rrKI\L=M~=M܍~蝍ˋܽ=M~=M܍~%ALMMA%LAMMA%ALMMA%mArrrrqrurq rrr MA%LAMMA%ALMMA%LAMMA)Kϭ퍍)Kρ)Kϭ퍍)Kmrrrrrxrprrrrϭ퍍)Kρ)Kϭ퍍)Kρȉ̍͌݌ݍȍ͙̍݌ȉ̍͌݌ݍ2Mrrrrrwrrwss͌݌ݍȍ͙̍݌ȉ̍͌݌ݍȍ͙̍݌ % % % rrrrrprryq q % % % % - - - rrrrrLrreuu - - - - rrrRrmrrݏ}}} rrzrr]}}%mm   --   - ssz rrrzrurrU }}-   -- 퍉ŏύ  퍉 ssu rrrArre uuŏύ  퍉ŏύ čȍݍ݌Čȍݍ͌݌čȍݍ݌ ssrrrrprrxqq݌Čȍݍ͌݌čȍݍ݌Čȍݍ͍(=݌( =ݍ (=݌ ssrrrrwrrvss݌( =ݍ (=݌( =덜.팞ꍋ덜.퍞덜.팞ꍊ rsrrrrzrprrrr.팞ꍋ덜.퍞덜.팞ꍋ덜MˁA݌!팑MMMA!MMMˁA݌!팑LsLrsKrBrrrururt MrrAr !팑MMMA!MMMˁA݌!팑MMMAPu]ʍ: Pu]ʍ: Pu]ʍ: rsrsrrrrr}r}r}rzrM}}rM]ʍ: Pu]ʍ: Pu]ʍ: Pu q͍5uMq ͍5uM q͍5uMq ͍5uM q͍5uMq ͍5uM q͍5uMq fprprps2rrMRfRrRrpsprpr2RrRrRMfprprps2rrMRfRrRrpsprpr2RrRrRMfprprps2rrMRfRrRrpsprpr2RrRrRMfprprps2rrMRfRrRrp p p eq Mueq Mueq Mueq Mueq Mueq Mueq Mueq Pe] zPe] zPe] zPe] zPe] zPe] zPe] zPeMɌA! ͍񌗕MM A!͔MMɌA! ͍񌗕MM A!͔MMɌA! ͍񌗕MM A!͔MMɌA! ͍񌗕MMAɍ.͍ɍ齍.͋ɍ.͍ɍ齍.͋ɍ.͍ɍ齍.͋ɍ.͍ɍ ͍  ͅ ͍  ͅ ͍  ͅ ͍ čٍ͉͉͍č܌ٍ͈͍͌čٍ͉͉͍č܌ٍ͈͍͌čٍ͉͉͍č܌ٍ͈͍͌čٍ͉͉͍č܌͍͍ --ō폏 -- --ō폏 -- --ō폏 -- --ō폏 -- - -  - -  - -  - - $]썋 ,44 PPP "X"X"Xh9h9h9"""@@@  {9T9T$$$333HHH    ! ! !nnn @@@PPP3 33||@@@>>>   PPP...P@P@P@ P P Piii]]ppp!p!p!pJJJ@@@:::]]] ```||GGGޟޟޟwww```""" wwwߤ$$   ???xxx P P P   wXwXwXnnn(((((("@"@"@BBBHHHpooo C,C,C,F0F0F0@@@IPIPIP000 777www   000\f\f\f.A.A.AaaaMMMVVV$$$KKK///    JJJV?V?V???v?v?v(((444@@@SSS>>>PPP///vBBB HHH999p8p8p8yfyfyfP]]]aaagqngngng000DDDEEE_HHHggg / / /o????߳߳߳```000V V V ]]],,,{{{[[[ " " " eeehhh   !!! , , ,   ]]]YYYb0b0b0BBB@@@ uuup BXBXBXWWWOOO߿߿߿aaa@@@ddd~?@@@___@@@DDDBBB000mmm___\?ТТТ(((hhh@h@h@h~~~---&&&!!! " " "@@@@@@bbbٝٝ???KKK!!!CCC@@@/// {{{}}}@@@   000   " " " 1Y1Y1Yޢޢޢ}}}mmmM M M  ؀؀؀ EXmyߟ{{{v@v@v@@@@OOO   i^]o,:w???>>>BBB@@===(((SSS;ǃ{{{;uuuhhh777$$${{{/868686Ͽggg$$$HHH@@@3g3g3gPPPPPPCCCLLL]]]bbb   """|||CCBcAbbb&&&dOdOdO000>>>yyy   ?UUU@@@666 """ȄȄȄx<yYuuusss    222?$?0v?1>wog]]]AAAPPPC  [[[EEE???_C_-#1'?QQQ!!!_ @@@?"?x2?:: z z zАА(((`-1?e?}t}tt 6 6 6, """444@@@))) "!"!"!HHH?8?~Ϗ ??CXCXCX @@@   Ka==000!!!```NBB@@@111PPP .WxWxx   $$$   bbb aGQDDD @@@ 0$$@@@ddd ***@@@@H@H@HspspspAAAQQQA@A E쿟~>@@@@@@(((xxx>` {?"""    UwUwUw[[[ӳӳӳPPPBBBDDDq@?@?_[է@@@   ((( ttt SoSoSo$$$   pJ#P߯!!!BBB͞͞͞{{{666eeewwwwww???oooY0Y0Y0!!!5@@@X X X jjjPPPW@8@8@8xxx222DDDK=0...444@F@F@F#ǿǿǿ@@@ȉȉyyyafC⿝̣ @@@???aaCCC׿׿׿|vKÃ`pppCCC???OOO fff];;;wwwOOO   xw9㜀@ ###???QQQ{ooo_R_Ł;>@___^LL?---?@@@$$$===y}翿?"? @ ~~~yyyررS_S_S_ZZZλߋߋߋ@@@@KKKY{Y{Y{')))t ~@222:::~hh[[[PPP  s>>>`0`0`0h?<@???LLLP@P@P@ @@@@ޭޭޭOߵ000 @bbb߿߭߭ %%% EEEeee@ @ @ G@}##@oOO"""￶aaa$$$? ?6@___w @@@@@@@@@9@sssww@@@   ߿@@@AcAA`l?π?`j/~^HH \\\ hhhs`Hp Řooo|ȃ~yaa```HHHAAA@@@ y  p,F8 5559?555FFF@@8   ```   $C  ?YYYϿ:::ʀ@@ǿ8L0L0L@@@OOO Д?k`?1J1J1JTTT???ϿBBBHHH_@@@ ( ( ( 9 F?000OOOTTT-@@?p3܎܎܎PPP@@@ x߇Pp9yy777v(((T-TTݿff@@@HHH   '?'@@@vvvCCCB?BB@@Ż2 2 WWW ZDZDZD ?l˿FvCvvwMwMwM- ""$$$PPPo?.777^^^ gBB @@"" )))AAA6zzz@@@2P2P2PHHH7 AA""xxx1$1$1$@@@? P """ Ҁ-A@A@  D/@@@'AAӑ$$aaabbb???܄܄܄L @@@/@@~~P2P2P2???~~~5H5H5H ` U444` ` `     = @@   5,5,5,???999@>A@```000؀' Z  3O3O3O?-?-?-oXQjjj    ʺ5}}ޱ/!!!]G]G]G€. . . ppp""">>>Lި@@@dccc   |}}}@@@@]@@|||k33Slll@@@ThhhDDD%$$$bbb444    $ $_XXL((JCJCJC   8+"""B B B $$o=p___W(((xÇHHH a$a$o%666m[m[m[=DDD'''J+JJK777@@@{{{!aao@@4z4z4z8Q8Q8Qi@i@i@(((AAA777///sN? _ _ _ññӀӀ """z888aaa  P?@^@^@^ßppp5,,,Kpppnnn-CҼҼҼXXX111׿7}}}aaaBBB \222000 q q q___000 ?33UUUXXX'P'P'Pddd> ---?$$$AAA @gGccc s_ zzz(((@O@V@V@VxxxO PP @A@ p{{ @@@@@@    UUUUUUUUUEU}y}T>ATU_UH]UUUUUUUUUUUUUUU ?UUUUUUUUUUUUUUUUUUoo!AV $$+`+`!F@Gnn_ ]O0__@ffydyd@rvaaޞR/Qx[͝N7Ng)GGAebfYdYdD 66P"߿)IC߻ % ]~ @ffIdYd@A:?HL!o@f BYfKʿ%o`~> ?qJ ??|>/o[wwث{_#g_ BfY"Yfſ1}?/@;<}}h ??>/_@K6O?ffdYfyAtW34oi{7?<# ;?Dl!@gakg&fYbYfl,"/&]Y o/?zOwO,Q[ &Ef @Yk!?s@7=e.o~da!24[?Fwf[Y߿ @?t A"??|[[;928G9&vf@"~ Y;? "*E(??H@ww z4w@>͑BfQY>B?l@A GĖZ?=?q)yy/߿7 G`GM͑bfY >@1-˿7 Y[ۄS_ m?׆o {rHgdo#͉DfYHK]4 7{?;nn{{''0ݾ" / ?Ҁ́&fHY;s-=<<&' J@ok2s_^~nk><` ͙ffY:tE$w`H3ry(9H#&f<8?_t`EnY'kݔ_D~ a>L ??ku;;#@@O Y }L \F0ǝ8` 5 K. Qq??}y>{w?FqWk/J Sp(*Q1Y@@&@0PpU߀N0"!3 g..z}>2 ?!Ԧo$i-O=9lPlj`  oHی n?:+4vQAAO w@R⭽PC CϏ2sw?}L X0p!wFv` 1b @ A 0-0@q@dd/8?d~~?ibREw:V@BE A~m Ҿ!A  iC;;b( @ >GwuUe`c; t ÈW ```*qoM>Pw?$`G_vo`>&"@.X` Q޾AX? D$P@5TpO@2z/wß?ξN;;UY$XSWBm*\w@@'0˧$H>A@ 4L  o zr3S@A'o&@!>?<@7PjP( 7@T8 CI& /DzޓΝ?a윃O0G(@|"@t |@c9@j0 @Po7'@Y~GlvRۿЛjݢA@_=g P#P @yD? F!`{@@sI[J2̈Eory+(dw@`˖P`̖! 1z,dAAtWLyegl/ 9=x_|A<P] (sqFw@o[T0[ XLNa1P( = cr/}}/_Z|zvQ^LHQ&@g{`0@V>hDv C*l?%- ??VPȯ2 Qb((J@@ D4OĂ7d_ 8X87~?->?-~WVeer+{! &  b @ 4^cHD|0cPROBx_="T D"]}hDp|R- 5l<,B%~1`;M {d = N~ڿ#x0?@\{ !n<b&@(?A \"?W 5b o<0S7ׁ?|}۞7) 4doNN~@)T:;;@}? }~ >OkkZ]PU~P6~@*0n   u:̍6`dtVH ?nH>>IIkko~F 4#FG[4 Kmu A G!<?,ES#=P^9%?__>* ]4ƅyR&` Tv V?:L|$T, B.?R>mrPw?? یzNx'{y!`UЪ(T_*("SBJbU|H=|"`JhyPPXOHB z 9M: @ޝfw? fQCzNH]\{@`= +* wn $Ke)< \Vzv @'gߟ{KY?@LR?#+D?D[?(r0BAג +6$s5"~{/;,WШ!xad AG*@PN[^{PP` )V w!@ Mwl0/ 9;DH=(2ʥZ!^]C4}q!|B S&!6<,oҘ@ ̀'@l  pH yy0 8q\"xla`Gxx$WTY 2  BY&(Z Tub~V(\@#`e)<@s!4n#1Q{IJ@H H@!v\M;5sn? # Nxk!tl ?I 9YG( @~7tM!"[74D ^@Ow@d&UX F IRx`CpR(>u@?@~D@ wLx/x7H_ Rd+9_ hog_ot Z  wb;z[}0 ڀ%my k5±ތo?H F4 RU, rl܀-F[$w᫼T-?7d@)@;Āw(f*o"< " [Ǿ@VwbU$6@ɫ2P-Gp"2@hB^]" :OAߧ! OH1w" AB\#xvBPwT~Xva HvWJ Pp.XQ@aA">oo??\}L@6mR@{00QQ??o??? {  PY a@?'W?<_??? $d}|n|fx>}<~~gff~fN_?<???? 7 ?~~~fl`lq`pfn f0~l6 k;8????? (A"{`fffof`gX`X`x}ffxx~ep|;8????ks@FِQ~f}|fffo~fnf||f@fpptQ2 x30xxx??/xPg ݉ ffffgfffgxgx`ffy^!xFydj@30ppp????G?????Q6@ Nflflfnf``yfono #< q000???????? } c#~}~~z~x>~~|~~<~})?f_f_g c #w0 8???C?????WGP7P&$fD9dyyFDdDd????????/+/ = P a@pC0FoFnf `uB%L1? ?????'#/'B#!If NyhEYA P?z?????'#/l P0*mu0`PA@@^"+ ??????51=p~;J@F  ?????????11=gp0BWBN}WA@B-A@???????91=gu@8 `pբDt0L 1?/??`?????88<ε1hH"#nPD@@@z:?=??%????88<y: @^ ^2p?AW=d \y!a ȆPZ?????88<80@10YY|}||||~<~<~f~f~<~<~>>???*  L`ny`lnb`gdnxxy[C_>>>????R@`f``f`xvoxfy`:2s >>>???%?*dxf~~~?~|ff|=> ??? 0?0Mx0ccA&9gg%g@]@y=?dH$$/IiAI b b7J9!`D$ 5GgB&0~`,@,\\@<$8z(cc@ij" " ĠDg2ghQQGM @vv75L7D7 TT > ]$1! KJvvSDD>>?((p OO~@lFhDh++-4!4 `@B@ 2;XZӄ)@44^^KK>60w0`gc`@#ala`E D ~~70  $ $b"nܞ4/0/CBb# EE""/=9ǿ@"HHBBFF!!kk\W)V)PX22V=F=116@6 II}}e%@B`B` HHAAS4S4--``1 aaaa@ RRa`TT @@ X6X6ll&&  T*{fgoo`fg`oo ?{f0ggoo3``fg`oL< { B e s t v i e w e d in MEDIUM RES INTERRUPTS, RASTERS, BORDERS AND OTHER STUFF by Stefan Posthuma With my hands still shaking a little from a heavy Andes Attack session (I reached level 14 with 350000 or so points!), I feel ready to tell you something about the things that make life on the ST so colorful. In fact, they are the essential element of every super-duper demo that is being created nowadays. They are called: rasters. First of all, let me tell you what rasters are and before that, I will inform you about the basis of a raster: the interrupt. Let's say you write a program and you want to do something which has to be done with specific time-intervals, like blinking a cursor or playing some music. You can go through a lot of trouble and call your routines very often and time them or something to they will be executed regularly, or you can program them on interrupt. When you move your mouse, the keyboard processor will notice it, process the movement and then send the information to the 68000. It sounds simple, but how does one processor 'send' something to the other? Well, it simply 'interrupts' the processor it wants to tell something. In case of the mouse movement, the keyboard processor will generate an interrupt which will put the 68000 in interrupt mode. Now the 68000 has 7 interrupt levels. This means that there are 7 different interrupts possible. Also this means that an interrupt can interrupt an interrupt when it has a higher level! The different levels are used for the keyboard-processor, the vertical blank interrupt etc. More on this later. Immediately after it has received the signal, the 68000 will first complete its current instruction. After that, the status register and the program counter will be put on stack, the processor will enter supervisor mode and will jump to a certain memory location. These locations are set on fixed addresses somewhere in the first 500 bytes of memory or so. The keyboard processor will create a level 6 interrupt. The 68000 will fetch the value of memory location $118 and jump to the address formed by that value. Then it will execute the instructions normally from that address. When it reaches an RTE instruction, the status register and program counter will be fetched from stack and the processor goes back to user mode and program execution will continue just like nothing happened. As long as the interrupt routine does not corrupt the stack or changes any registers used by the normal program, the normal program will not 'know' that there has been an interrupt. Still with me? If you're not, don't worry too much about it, it is not totally essential for the understanding of the rest of this article. Now TOS has a nice feature if you want to use an interrupt- driven routine. The level 4 interrupt is the VBL. As you might know, the screen is painted by an electron beam. On a color monitor in 50Hz mode, the screen is drawn 50 times per second by this electron beam. It starts at the top left-hand corner of the screen and draws from left to right. When it has reached the right edge of the screen, it will jump back to the left and draw the next line. When it has reached the bottom of the screen, it will jump back to the top of the screen and start all over again. At this point, the level 4 interrupt will be generated. The time needed for the electron beam to go back to the top of the screen is long enough for the 68000 to do some work. When you are in 50Hz mode, the level 4 interrupt will be created 50 times a second! At location $4CE (a legal one), is a list of 8 addresses. The first few ones are used by TOS, but there are always a couple of them free to use. (They will be zero). When you have a routine, just put it's address in one of the free locations and it will be called 50 times a second! Make sure your routine is short because it will slow down other operations. Back to the story about the electron beam. Let's say you can track it and you can do something at specific places on the screen. If you can somehow see when the beam is in the middle of the screen and you switch color palette just then, the rest of the screen will be painted using the new palette and you will have 32 colors on the screen! (This is the basic principle, make sure you understand it!!) So how can we track the electron beam then? Well, it all comes down to timer B. Timer B is a nice feature from the MFP 68901 processor and it counts screen lines! Each time a new screen line is drawn, the timer B data register will be increased so it will contain the number of the scanline drawn, starting at the first one after the upper border. Even better about timer B is that when you put a value in it, let's say 10, 10 scanlines later an interrupt will be generated! Well, this means that we have found the way. This is the way it works! Ok, practical now. Let's create a raster. First of all, we need a safe way to trigger timer B. Why not use the level 4 interrupt which occurs each time the electron beam reaches the bottom of the screen. Here we set the value for timer B and in that scanline, the interrupt will occur! So if we want a raster on scanline 100, we activate timer B with a value of 100 in the level 4 interrupt and wait for the timer B interrupt. Uh oh....strange things are happening.... MFP 68901: Hi guys! Interrupt time! 68000 : No way, I'm tired...leave me alone! MFP 68901: Ah, come one, just one little interrupt... 68000 : Forget it, go away! MFP 68901: Ok, have it your way. 68000 : Fine. MFP 68901: OVERRIDE!!!!!! 68000 : OUCH!!! MMU : Hey? What's going on? Who is overriding there without filing the proper request at my address bus? MFP 68901: I am and you can't stop me. 68000 : Groan... MMU : Stop it right now or I'll have to get involved here. 68000 : Yeah, stop this idiot! MFP 68901: Fools! MMU : SYNCHRONISE!! Shifter : AAAAAAHHHHH! My borders!!! MMU : Ooops, wrong interrupt level. MFP 68901: Wow! no borders, let's throw some rasters in there! Shifter : NO!!! AAAAAAAAAAAAAGGGRRLLL!! 68000 : Hey guys, what about me? MMU, MFP 68901: We're having fun. In fact, we haven't had this much fun since the Union Demo. Shifter : WHAT???!! UNION DEMO??!!!? AAAAAAAHAHAAAAAHAAHAAA!!! 68000 : Nurse!! MMU : Yeah, border here, synchro there.....I'm having a blast. MFP 68901: Ok, what does this address do? Shifter : AHAHAAAAAAAAAGGRRRLGGALAAAHAAHAHHH!!!! 68000 : Hey, look out!! Gemdos critial error handler: PANIC! Exception vector: ZAP! 68000, MMU, MFP 68901: Uh oh..... Shifter : UNION DEMO!!! RAAAAAAHHH! LOST BOYS!! GROOOOOWWWLL!! CAREBEARS!!! AAAAAAAAAAHHAHAHAHAHHAHAHGGGGGLLLlllpp.. ST : CRASH!! Stefan : F.CK!! Good thing I press CONTROL-V regularly. I was about to tell you exactly how to program a Timer B raster interrupt. First thing we do is to install the new vectors so the 68000 will jump to our routines when interrupted. The VBL vector is $70 and the Timer B vector is $120. Now before we start messing around with the vectors, we have to put them in a safe place so we can restore them to their normal values at the end of the program. Also, we must make sure that any other VBL routines (e.g. music) are still called so we must jump to the old value of the level 4 vector after our level 4 interrupt. The following source fragments are originally by TEX. All I know about rasters I learned from them. Thanks guys! Note: supervisor mode must be on before you can mess with any of these registers. hblon: move.l $120,oldtb ; save old timer B vector move.l $70,old4 ; save old VBL vector move.l $70,new4b+2 ; now, the new VBL routine will jump to the old VBL after it is done. move.b $fffffa07,old07 ; Timer B enable move.b $fffffa09,old09 ; Timer C enable move.b $fffffa0f,old0f ; Timer B in-service move.b $fffffa11,old11 ; Timer C in-service move.b $fffffa1b,old1b ; Timer B control and.b #$df,$fffa09 ; disable Timer C and.b #$fe,$fffa07 ; disable Timer B move.l #newtb,$120 ; new Timer B vector move.l #new4,$70 ; new VBL vector or.b #1,$fffffa07 ; enable Timer B or.b #1,$fffffa13 ; set Timber B mask rts You can see that timer C will be switched off. This to prevent it from messing things up. Now we have installed two vectors for the VBL and the Timer B and we have set some registers of the MFP 68901 to allow Timer B interrupts and to disable Timer C. The thing we need now are the two routines to handle the VBL and the Timer B we installed. new4: clr.b $fffffa1b ; disable Timer B move.b 100,$fffffa21 ; set Timber B offset move.b #8,$fffffa1b ; enable Timer B move.w #$0,$ff8240 ; background = black new4b: jmp $12345678 ; the old VBL vector will have replaced the $12345678 so control will be passed on to the old VBL routine. The important value here is the '100'. This will mean that in the 100th scanline of the screen, a Timer B interrupt occurs and the vector at $120 will be called. newtb: clr.b $fffffa1b.w ; timer stop movem.l a0/d0,-(sp) ; save A0 and D0 move.w #$fa21,a0 ; timer B data move.b (a0),d0 ; get value of Timer B wait: cmp.b (a0),d0 ; wait one scanline beq.s wait move.w #$700,$ff8240 ; background red movem.l (sp)+,a0/d0 ; get registers back bclr #0,$fffffa0f.w ; end of interrupt rte First of all, you have to stop the timer to prevent any other interrupts from it. After that, you HAVE to push any registers you use on the stack. This is of vital importance, else somewhere in the middle of the normal program, registers will be changed and things go utterly wrong. Then we load the Timer B data register into A0. Reading this register will give you the current value of Timber B, i.e. the current scanline. After that we read the value of it in D0 and wait until it changes. In other words, we wait for the beginning of the next scanline. Why? Well, when an interrupt occurs, the 68000 has to complete its current instruction. After that, registers (PC and ST) have to pushed on stack etc. All this takes a little while and when the actual interrupt routine is called, the electron beam is already in the left border, drawing visible screen area. If you change colors now, this will be visible. Also, the interrupt will not always occur at exactly the same place, so you will see some nervous flickering which is of course not tolerable if you want to write a demo. So we wait until the beginning of the next scanline and immediately after, change screen color. The electron beam in then still drawing the non-visible parts of the left border and your raster will be nice and stable. To restore the vectors, use the following code: hbloff: move.w sr,-(sp) ; save status register move.w #$2700,sr ; disable all interrupts move.b old07(pc),$fffffa07 ; restore all registers move.b old09(pc),$fffffa09 move.b old0f(pc),$fffffa0f move.b old11(pc),$fffffa11 move.b old1b(pc),$fffffa1b move.l oldtb,$120 ; old Timer B back move.l old4,$70 ; old VBL back move.w (sp)+,sr ; restore status register rts OK, these are the raw basics for raster programming. Now you know how to create a raster, let you imagination run free and create demo's! I will give you one more example, let's say we want another raster at screen line 150. This means we will have two Timer B interrupts, one at line 100 and another one at line 150. In the VBL, you set the one for line 100 and in the Timer B interrupt at line 100, you set the one for line 150. Easy! So in the new4 routine, you add 1 line of code that sets the vector for the first Timer B. move.l newtb1,$120 In the newtb1 routine, you have to do three extra things: - set the new value for Timer B - set the new Timer B vector - enable Timer B again. The new value is set in scanlines from the current one. So if you want a raster at scanline 150, you have to set the Timer B value to 150-100 = 50. move.l #$fa21,a0 move.b #50,(a0) ; this sets the new Timer B value move.l #newtb2,$120 ; set the new Timer B vector move.b #8,$fffffa1b ; allow Timer B again Now you have to create a routine called newtb2 that handles the next raster. It is identical to the newtb1 routine (without the new changes). Of course, you can do more things with rasters than just change background color. By changing more colors, and changing not only one scanline, but some more, you can create the typical 'round' rasters that are to be found in so many demos. Just take a look at the color demo in this issue. There are three rasters that seem to revolve around each other. It is done with a clever trick, think about it! Also, if you use a table of values for timer B instead of a fixed number, you can create moving rasters. The last purpose of raster interrupts is to get rid of borders. Now it has been explained already in the wizard series, but I will tell you once again. This is how border-obliteration works: The MMU (Memory Management Unit or GLUE chip) tells the Shifter (the video chip responsible for drawing the screen) exactly when to display screen memory and when to display border. There is one thing that the MMU does not really like and that is the changing of screen frequency (register $ff820a). When you do this, it will 'forget' the Shifter for a tiny while. Now if you change the frequency at a certain point in the last scanline of the screen, the MMU will forget to tell the Shifter that the lower border has started and the Shifter will happily continue displaying screen memory instead of border. The only thing special about the new screen memory is that it is shifted one plane to the left. There is 16 bytes missing at the lower-right corner of the screen. But that is not annoying at all. So you simply generate a Timer B interrupt at scanline 199, wait a while, change screen frequency (50-60Hz), wait for the next scanline, wait some more and change the frequency back (60-50Hz) and the border will be gone! Timer B will also happily continue counting scanlines, so rasters in the lower border are no trouble or whatsoever! (Check out the color demo!). For source material about this, check ST NEWS 4.2 Removing the upper border is achieved in the same way. But there is a serious problem here. There are two versions of the MMU around and they both require a different position where you have to change frequency. It wouldn't be that much of a problem (just change frequency at both points and you are home free) if the screen address wouldn't start at different points on the screen then. This would mean that your graphics would be all misplaced on one ST while it works perfectly well on another. There must be a way to check this. I think it can be done by generating a Timer B interrupt at a certain position and examining the video address counter ($ff8205-$ff8209) but I haven't tried this yet. Removing the right and the left border is a little (a LOT more) harder. It still has to do with changing frequency, but other problems arise here. Now getting rid of the right border is not too difficult (I already managed it). You have to create a raster, wait a while until the electron beam it at a precise point and change frequency. Do it at exactly the right spot and the right border will be gone. The problem lies in the exactly. Remember the story about the flicker? Well, even if you wait for the next scanline, you never can be sure of the exact position. So you need a way to synchronise the raster so it happens at the exact spot every time. There is a way but it is a little hard to explain. With this technique, you can also create 'scrolling' rasters. I did this in the 4.4 demo (really nice one...I'm still working on it) and there is an ST NEWS logo in the lower, left and right border which scrolls and bounces and is made up entirely out of rasters. It is REALLY nice. Also, you have open the border over and over again for every scanline. This means you spend a lot of time waiting for the right border and if you open the entire right border, you won't have any time left. The left border is still a mystery to me. After a lot of trying, I finally gave up. The screen did the most crazy things but the left border just remained. One final remark about the full-screen demo by Level 16 (UNION DEMO!!!). Andreas told me how he did it and it is really brilliantly solved. I mean you send all time waiting for the border so there is no time left for the things he does (like music, a sprite, color animation and rasters). But he did it. It has to do with filling in the code for the music etc. in the 'gaps' (normally a lot of NOP's) where he waits for the next border. It must have been one hell of a job to get it all synchronised. Also, it is just one big list of instructions, no loops or whatever (one jump I guess to the beginning). So this is why it is so big and this is why the assembler source is 2Mb large. Now this is just guessing (but I think I am right) so Andreas might laugh a lot after reading this. Check out the source in this folder: raster5.s ~?ff3031~f30f ?*?s 3031~f30fs?~?9 A~f30P3?@~`f*O.|b*m - ЭЭ// Bg?<JNAO ?<NNT3`/<(/<(Hy.?<?<KNA/<(/<(HyF?<?<KNA?9`/NAX yCP <2Qa?<NATH@<faLH@?9|/9~/9~?<NN /<Bg?<NNP /9?< NA\BgNA# |#px#p 9 9# #p99Nu@F'F? 81*#| #xpFNuB8$!3D@# N4VxB8H2|!#  t | &9f C,g3@QLPgH@LNsB8H2|!L# 2<$9f Bg3@QLPgH@LNsB8H2|!@# 2< | g3BQLPgH@LNsB8H2|!gB8 pNqQ LNs&7GWVUTb`SP@000@P`S`bTa:\budgie.mfp\queen5.pi1  " . F  J 8 *222 move.l #mon,-(sp) mouse on clr.w -(sp) move.w #25,-(sp) trap #14 addq.l #8,sp dc.w $a009 move.l savereg,-(sp) leave supervisor move.w #$20,-(sp) trap #1 addq.l #6,sp clr.w -(sp) sayonara! trap #1 oldrez: dc.w 0 oldscr: dc.l 0 savereg: dc.l 0 screen: dc.l 0 oldpal: ds.w 16 mon: dc.b $08 moff: dc.b $12 even *------------------------------------------------------- ; see the article for comments about these addresses hblon move.l $120,oldtb save old timer B vector move.l $70,old; rasters ; ; create some nice rasters ; ST NEWS 4.3 adapted by Budgie UK Nov 1, 1989 ; courtesy Stefan Posthuma ; A Digital Insanity creation clr.l -(sp) supervisor mode on move.w #$20,-(sp) trap #1 move.l d0,savereg move.l $44e,a0 current physbase sub.l #$2000,a0 go back a bit because our 50-60 hz... move.l a0,physbase ..trick would push us into rom move.l a0,a7 move.l #moff,-(sp) mouse off clr.w -(sp) move.w #25,-(sp) trap #14 addq.l #8,sp dc.w $a00a move.w #4,-(sp) get resolution trap #14 addq.l #2,sp move.w d0,oldrez and save it move.l $44e,oldscr move.l physbase,screen movem.l $ffff8240.w,d0-d7 save colors... movem.l d0-d7,oldpal ..quickly move.w #0,-(sp) set low res move.l screen(pc),-(sp) phys move.l screen(pc),-(sp) log move.w #5,-(sp) trap #14 add.l #12,sp * bra hi avoid loading degas pic * load a degas picture at a specific address move.w #0,-(sp) move.l #pic_name,-(sp) open file move.w #$3D,-(sp) trap #1 addq.l #8,sp move.w d0,handle move.l screen,d0 load direct to current screen sub.l #34,d0 sub.l #1*160,d0 hide the palette data move.l d0,-(sp) move.l #34,-(A7) read it move.w handle,-(A7) move.w #$3F,-(A7) trap #1 adda.l #12,A7 move.l screen,d0 load direct to current screen add.l #40*160,d0 push the picture 40 lines DOWN ; inside the bottom border! move.l d0,-(sp) move.l #32000,-(A7) read picture move.w handle,-(A7) move.w #$3F,-(A7) trap #1 adda.l #12,A7 move.w handle,-(SP) move.w #$3E,-(SP) trap #1 close file addq.l #4,SP move.l screen,a0 sub.l #192,a0 locate palette's origin lea palette,a1 destination move.l #16-1,d0 paloop move.w (a0)+,(a1)+ save it dbra d0,paloop hi *----------------------------------------------- bsr hblon enable my interrupts# *------------------------------------------------ again move.w #7,-(sp) wait for a key no echo trap #1 addq.l #2,sp swap d0 cmp.b #$01,d0 ESC ? if so quit bne again *------------------------------------------------ bsr hbloff disable interrupts movem.l oldpal,d0-d7 old colors back movem.l d0-d7,$ffff8240.w move.w oldrez,-(sp) old resolution back move.l oldscr,-(sp) move.l oldscr,-(sp) move.w #5,-(sp) trap #14 add.l #12,sp move.l #mon,-(sp) mouse on clr.w -(sp) move.w #25,-(sp) trap #14 addq.l #8,sp dc.w $a009 move.l savereg,-(sp) leave supervisor move.w #$20,-(sp) trap #1 addq.l #6,sp clr.w -(sp) sayonara! trap #1 oldrez: dc.w 0 oldscr: dc.l 0 savereg: dc.l 0 screen: dc.l 0 oldpal: ds.w 16 mon: dc.b $08 moff: dc.b $12 even *------------------------------------------------------- ; see the article for comments about these addresses hblon move.l $120,oldtb save old timer B vector move.l $70,old4 save old vb vector move.l $70,new4b+2 now, new vb routine will jump to ; old one afterwards move.b $fffffa07,old07 timer B enable move.b $fffffa09,old09 timer C enable move.b $fffffa0f,old0f timer B in-service move.b $fffffa11,old11 timer C in-service move.b $fffffa1b,old1b timer B control and.b #$df,$fffa09 disable timer C and.b #$fe,$fffa07 disable timer B move.l #newtb1,$120 new timer B vector move.l #new4,$70 new vb vector or.b #1,$fffffa07 enable timer B or.b #1,$fffffa13 set timer B mask rts hbloff move.w sr,-(sp) move.w #$2700,sr cut out all interrupts move.b old07(pc),$fffffa07 restore all old vectors move.b old09(pc),$fffffa09 move.b old0f(pc),$fffffa0f move.b old11(pc),$fffffa11 move.b old1b(pc),$fffffa1b move.l oldtb,$120 move.l old4,$70 move.w (sp)+,sr rts old4: dc.l 0 oldtb: dc.l 0 old07: dc.b 0 old09: dc.b 0 old0f: dc.b 0 old11: dc.b 0 old1b: dc.b 0 even ; This is the new VBL handler new4 clr.b $fffffa1b.w disable timer B move.b #36,$fffffa21 first raster 36 lines away move.b #8,$fffffa1b enable timer B move.w #$644,$ff8240 initial border (beige) move.l #newtb1,$120 timer B vector new4b jmp $12345678 pass ontrol to OLD vb vector newtb1 clr.b $fffffa1b.w timer stop movem.l d0-d7/a0-a1,-(sp) save from corruption move.w #$fa21,a1 timer B data register (ie scanline!) move.b #22,(a1) put 22 in it : second interrupt at line 58 move.l #newtb2,$120 set new timer B vector move.b #8,$fffffa1b.w allow timer B again moveq.w #22-1,d2 number of colors in table ; change above figure to 48 and we'll get 48 lines with different ; colors BUT, next interrupt further down will be unstable.. move.l #pal1,a0 pal1: color table ; I am now randomly modifying A0 to point ANYWHERE in memory move.l $466,d3 random value lsl.l #1,d3 make it even move.l d3,a0 point to it add.l #44,a0 add 22 words ; we can now clearly see these 22 lines grouped at the top of picture ; from line 36 onwards (22 different random colors) loop move.b (a1),d0 get value of timer B wait cmp.b (a1),d0 wait one scanline ! beq wait move.w -(a0),$ff8240 use those randoms colors (backwards) ; move.w (a0)+,d1 ; move.w d1,$ff8240 set colors ; move.w d1,$ff8242 ; move.w d1,$ff8244 ; move.w d1,$ff8246 ; move.w d1,$ff8248 ; move.w d1,$ff824a ; move.w d1,$ff824c ; move.w d1,$ff824e dbra d2,loop movem.l palette,d1-d7/a0 loopx move.b (a1),d0 more waiting for... waitx cmp.b (a1),d0 ... next scanline beq waitx movem.l d1-d7/a0,$ff8240 movem.l (sp)+,d0-d7/a0-a1 bclr #0,$fffffa0f.w end of interrupt rte newtb2 clr.b $fffffa1b.w timer stop movem.l d0-d7/a0-a1,-(sp) move.w #$fa21,a1 move.b #76,(a1) third one will be at line 58+40=98 move.l #newtb3,$120 move.b #8,$fffffa1b.w ; now follows the second lot of lines from location 58 to 80 move.w #22-1,d1 raster is 22 scanlines deep move.l $466,d2 get a random number lsl.l #1,d2 make sure it's even move.l d2,a0 that's where we'll get our colors from! loop2 move.b (a1),d0 wait2 cmp.b (a1),d0 see if scanline has moved on beq wait2 move.w (a0)+,$ff8240 now use those totally random colors dbra d1,loop2 movem.l palette,d1-d7/a0 restore original palette move.b (a1),d0 waity cmp.b (a1),d0 beq waity movem.l d1-d7/a0,$ff8240 movem.l (sp)+,d0-d7/a0-a1 bclr #0,$fffffa0f.w end of interrupt rte newtb3 clr.b $fffffa1b.w timer stop movem.l d0-d7/a0-a1,-(sp) move.w #$fa21,a1 move.b #64,(a1) kill border at line 199 (101+98) move.l #killborder,$120 move.b #8,$fffffa1b.w ; now we have the third group of colors, again random move.w #21-1,d1 number of scanlines wanted move.l #pal1,a0 where colors are stored loop3 move.b (a1),d0 wait3 cmp.b (a1),d0 beq wait3 move.w (a0)+,$ff8242 the Budgie logo this time dbra d1,loop3 movem.l palette,d1-d7/a0 again restore original palette move.b (a1),d0 waitz cmp.b (a1),d0 beq waitz movem.l d1-d7/a0,$ff8240 movem.l (sp)+,d0-d7/a0-a1 bclr #0,$fffffa0f.w end of interrupt rte killborder clr.b $fffffa1b.w timer stop * bra bill jumping to bill will skip the 50-60 hz bit movem.l d0-d1/a0-a1,-(sp) move.w #$fa21,a1 move.b #140,(a1) changing this number had little effect move.b #8,$fffffa1b.w this line is essential move.b (a1),d0 wait4 cmp.b (a1),d0 wait last scanline beq wait4 clr.b $ffff820a.w 60 Hz moveq #4,d0 nopi2 nop wait a while dbf d0,nopi2 move.b #2,$ffff820a.w 50 Hz movem.l (sp)+,d0-d1/a0-a1 bill bclr #0,$fffffa0f.w end of interrupt rte final exit *------------------------------------------ pal1 dc.w $026,$237,$247,$257,$256,$255,$254,$162 dc.w $560,$653,$750,$740,$730,$600,$530,$600 dc.w $730,$740,$750,$760,$653,$560,$162,$254 palette ds.w 32 ds.w 10 physbase dc.l 0 screen_0 dc.l 0 handle dc.w 0 pic_name dc.b "a:\budgie.mfp\queen5.pi1",0 even ds.w 48 even    @lD  D  Dl@l H H H l H H H l H H H l l [QH5DHQ HQ[l HQ[l HQ[l`lyl @B, b  *Z        BUDGIE UK are the creators of many fine games for the ST. Budgie Games are Licenceware: only authorized distributors are allowed to sell our games. You are free to copy them, but NOT to sell them. The Licensed Distributors pay a fixed Royalty which goes to all our authors. Most good PD Libraries are Licensed Distributors. Write to Budgie UK for a list. Single-sided disks are 2.95 each Often less for quantities Double-sided compilations : 3.95 each Often 3.50 or less for quantities. Productivity Range: 3.95 each ***************************** The following BUDGIE titles are now available: ***************************** - BU 1 DAMONOID by Camy Maertens. The first BUDGIE game. Entirely written in machine code ( like most of our productions ). 20 planets, no less,have to be protected from Damonoid and its invading fleet. Action is fast. Time is running out. Any enemy impact on your planet causes havoc. You can sustain 13 direct hits. But, should the Damonoid itself land, the result would be fatal! -------------------------------------- -BU 2 FOOTBALL 88 by Simon Rush. A complete manager game. Very addictive Mouse controlled. Colour only. This program has won worldwide acclaim: Game of The Month with 17 Bit Software Game of the Year with FloppyShop Magazine. Being entirely Gem based, this Football Manager is extremely easy to play and contains many features that sets it apart from other offerings, its multi-user capability being one of them. If you are a budding soccer supremo this game is undoubtedly for you! ------------------------------------- - BU 3 BLITZ III by Camy Maertens. This is a bombing raid with a different scenario: three aircraft fly in formation, all under joystick control. The aim of the game is to destroy the city before too much altitude is lost. With each bombing pass, the altitude drops inexorably. On some versions a rewarding bonus screen appears after each successful mission. This is a classic revisited: it first appeared on the VIC 2O in 1982. Budgie UK have added a new twist with multiple aircraft and variable height control. 'challenging game...' ST Format Feb 89 ------------------------------------- - BU 4 OTHELLO by Jim Holmwood. This is an immaculate implementation of the board game of Reversi. It is entirely mouse controlled and plays a mean game. You may find it difficult to beat the computer, but this will maintain its appeal. Two versions are on this disk: one mono and the other colour. ------------------------------------- - BU 5 PRO DARTS by Martyn Carr This is a mouse controlled simulation 5O1 down. All darts addicts will love this game and the somewhat hesitant pointer (too much beer perhaps) Speech commentary adds to the realism Written in Fast Basic. One of the few easy-to-get-on-with darts games for the Atari ST. ------------------------------------ - BU 6 DR BORIS by Alex Dewdney a TNT maniac is on the loose, lighting explosive devices in a maze of increasingly dangerous alleys. You have 1O seconds to defuse the bombs before the inevitable blast. There are many obstructions in your path, including walls and...skulls. Also on this disk, by the same author, PUZZLER a diabolical brain teaser. If you thought the rubik cube was tough wait until the PUZZLER reduces you to a nervous wreck ! ------------------------------------- - BU 7 BALL ZONE by Ian Grainger An incredible Arkanoid type game, only better. Needless to say, this game is mouse controlled and has many levels. But the main attractions are the time counter which dramatically increases the tension and, also, the reassuring presence of base line tiles which will rescue you in desparate situations. The score is based on the number of tiles and parasites destroyed and on the time left at the end of each level. This is an absolute must for your collection! The first ever Quality game written in HiSoft Basic. Top Game with Page 6 Magazine. ------------------------------------ - BU 8 SPECULATOR by Camy Maertens Here we have a true to life simulation based on real futures markets. Keep your cool as the Index creates the drama. This game is for up to three players. You start with 5OOO points and have to correctly guess the direction of the market. Trends develop, reversals occur and sudden panics can cause havoc with the soundest strategies. Everything that could conceivably happen in real trading is reproduced in this simulation. The Index 'point and figure' chart unfolds before your eyes and reveals your profits or ...losses. Any open position carrying an excessive loss is automatically stopped. Closing balances are saved to disk. ------------------------------------- - BU 9 TYCOON new version by Simon Rush. A mineral exploring game. The objective is to survey, test drill and eventually exploit various sites to extract valuable minerals. Mines have different levels of profitability. Other factors, such as world prices, currency fluctuations and production costs all have an effect on the profitability of the venture. ------------------------------------- - BU 10 MONEYSPINNER by Jim Holmwood The slot machine is alive ! This accolade winning Budgie UK classic incorporates all the usual features : nudges, gambles, holds, and some more The scrolling is smooth and once again, the game is mouse controlled. Entirely written in 68OOO code, with digitized sound and hi-scores tables. State of the Art gambling! 'A very enjoyable game to say the least!..'ST Action December 88 94% rating: STuffed Disk Magazine. ------------------------------------- - BU 11 MAELSTROM by Marvey Mills A very smooth vertical scrolling space shoot_out. First, a meteorites field has to be negotiated, then other weird space objects are on collision course with your capsule. It's a matter of destroy or be destroyed. 68000 code again. ------------------------------------- - BU 12 ACE INVADERS by Gary Wheaton The DEFINITIVE Space Invader ! Everything the all-time classic is or should be is in this game: speed, sound, drama, excitement. All collectors and connoisseurs will treasure this disk. Number One PD Game at the 1988 Xmas Atari Show ! There is nothing to touch it, even commercial. 95% STuffed Disk Magazine. 3 stars ST FORMAT July 89 ------------------------------------- - BU 13 ZENITH new version 1.1 by Gary Wheaton A space combat for two players. Poised at the edge of universe, the two giant ships are set for battle. Mouse v. Joystick. Several convoys of aliens fly through space, wave after wave. Your mission is to intercept them. Your opponent has the same ambition and his space ship has to be destroyed. The ensuing battle is a delight for all arcade fanatics. Another classic! ------------------------------------- - BU 14 GOLDRUSH by Mark Annetts Colour version A multi-level platform pursuit. The aim is to collect the gold while avoiding your pursuer. Joystick controlled. The puzzles are the main attraction of this platform game. This is the thinking man's version of Loderunner. Also on same disk: ZERPHOD by Ian Grainger 3D maze challenge. Find the modules but avoid the beasties. (one of them is an.. elephant! Nasty) The search must be completed before time runs out. ------------------------------------- -BU15 PERILS of PENFOLD by Philip Bishop A superb graphic adventure with caves to explore, potions and spells to gather, ghosts and flying knives to avoid and puzzles to solve. Also included on this disk, by the same author: LINE of FOUR a fiendish connect game that will give hours of pleasure ...or frustration! ---------------------------------- -BU 16 WORD PUZZLE GENERATOR by Keith Bearman Medium res and hi res monochrome. You can play the puzzles on your monitor or print them on paper. Cheat (answer) grids are also generated. Puzzles, cheat sheets and word lists can be saved to disk for later use. Full on-line help. Because of its expandability, this program will keep you busy for a very long time. Jeremy Hughes' fantastic Font accessory accompanies this program. ---------------------------------- -BU 17 MAKE A BREAK by Martyn Brown of 17Bit Software A truly exciting and colourful trivia quizz with very strong snooker connotations! The questions have different degrees of difficulty depending on the ball you decide to pot. Subjects covered are arts, the world, books, sports, science, the past, music etc.. Can you clear the table? The game is one of the best of the genre. Version 1.1 ---------------------------------------- -BU 18 PARABELLUM by Alex Dewdney Confined to the deepest dungeon of the underworld, you must progress from chamber to chamber until you escape. Finding the obligatory keys, candles and artifacts is far from an easy task as evil creatures lurk in every corner: your plight is daunting! The is a challenging platform game with remarkable animated graphics and lasting appeal. --------------------------------------- -BU 19 TRI HELI by Gary Wheaton A pixel feast if ever there was one! Two blindingly fast games on one disk, plus several demos, all compacted to give you hours of arcade entertainment. Tri Heli and Cosmos are superb examples of 8-bit classics now at last gracing the Atari ST. This disk was the licenceware sensation of the 1989 Atari Show. --------------------------------------- -BU20 OPERATION ANGELICA by Camy Maertens Part one of the South Atlantic Conflict. Vertical scroller combining arcade and strategy. Your mission is to rescue British troops stranded on Buff Cove. The island has been mined. Time is critical and enemy aircraft are bombing you relentlessly... Nine action-packed levels! ---------------------------------------- -BU21 IMPULSE by Ian Grainger At last a totally original concept! Each scene holds a cosmic detonator, strategically situated, and thoroughly guarded. First, marauding aliens have to be eliminated, using your rotating laser gun. Angles are critical if the laser is not to rebound on you. Eventually, the detonator is exposed and has to be hit. Eleven levels of bounces, trajectories and deflections. ---------------------------------------- -BU22 BANDIT by Gary Wheaton and the Shapeshifters Electronic slot machine with nudges up and down, holds, shoot-outs and a delightful page three bonus. Excellent music, superlative graphics. Only the Shapeshifters could have brought you this awesome arcade bonanza! Also on same disk, the Spartan demo. ---------------------------------------- -BU23 SPACE BLOB by Robin Edwards An immensely enjoyable platform game. Fifteen levels and three bonus screens. Collect the crystals and avoid the baddies. Try not to land on rugged terrain: Space Blob likes his landings soft and gentle. Music with all levels. Very addictive. Also on same disk: HAPPY the anti-virus smiling face. And more goodies! ---------------------------------------- -BU24 SLIPPERY SID by Neil Scrimgeour Sid is a very special snake. Emprisoned in a set of mazes, Sid has to munch his way through large quantities of pills. As he munches, he grows longer, shedding the odd tail just to confuse you. Nine mazes. Cheat mode and other options. Source code also included. ---------------------------------------- -BU25 SCARY by Eddie Bryan The haunted mansion in which your girl friend has been abducted is a den of evil and unnatural. Many rooms have to be searched before your task is complete. The hero in this game is a bat. There is a scene where the bat encounters a dodo which has to be killed and ...cooked. Weird things indeed. -------------------------------------- -BU26 CARRIER ATTACK by Keith Bearman Rediscover the drama and excitement of Battleships. Ten levels of computer intelligence. On levels nine and ten, you merely have to destroy the computer's two carriers to win the game. But then the computer has three shots against your one! Naval strategy of the highest level. -------------------------------------- -BU27 PSICOTIC by Philip Rankin A space combat against forces attacking from the East. Extra armement can be gained during the engagements. Dare and survive! -------------------------------------- -BU28 SUB HUNT by the Oliver Bros A two player game set in some of the globe's hot spots: Tropics, Arctic, and Persian Gulf. Busy shipping lanes are under threat. Protect allied vessels and destroy enemy cargo. Helicoper v submarine. Also, by Paul Dowers: SEA FISHERMAN. A fishing simulator on the ST..! Prepare for exciting action, but do take a book with you, just in case... ------------------------------------- -BU29 DEATH CAMP by Dave Blower The first text-based adventure from Budgie UK. Ample illustrations are nevertheless provided to convey the true atmosphere. The Japanese POW camp is your nightmare. Your objective: to escape! ------------------------------------ -BU30 A QUEST FOR GALAXIA by Gary Wheaton and the Shapeshifters Part two of Budgie's tribute to the all-time classics. Rediscover the thrill and excitement of an immortal game. 10 levels of galactic chaos. High scores saved to disk. This game is without a doubt, the jewel in the Budgie collection. The Shapeshifters at their best! ----------------------------------- * * * DOUBLE SIDED COMPILATIONS: 520K memory OK but double-sided drive needed -COM1 Perils of Penfold /Line of Four Goldrush /Zerphod ----------------- -COM2 Ace Invaders /Zenith /Tri Heli /Cosmos -------------------------------------------- -COM3 Football 88 /Parabellum ----------------------------- -COM4 Make a Break /Blitz /Word Generator ----------------------------------------- -COM5 Dr Boris /Puzzler /Pro Darts /Maelstrom --------------------------------------------- -COM6 Damonoid /Speculator /Othello ----------------------------------- -COM7 Ball Zone /Moneyspinner ----------------------------- -COM8 Football 88 /Moneyspinner /Tri-Heli ----------------------------------------- -COM9 Bandit /Slippery Sid /Space Blob -------------------------------------- -COM10 Angelica /Galaxia /Psicotic ---------------------------------- * * * Budgie UK PRODUCTIVITY range: 3.95 -PRO1 ELECTRONIC BANK STATEMENT by David G. Pullin Oct 1989 (single-sided) This is the sequel to HOME ACCOUNTS with many new features added: macros, code classification of statement entries, palette setting, disk management, printer access, real time clock. Standing orders are thoroughly covered. Up to three statements may reside in memory at once, each with up to one hundred entries. This program is an ideal tool to manage your bank transactions. Full explanations in doc. files. -PRO2 THE BUDGIE UK PROGRAMMER'S LIBRARY Double-sided disk full of machine-code routines, used by Budgie programmers to write their games. A working 'shell' example is supplied. More than 60 'basic-like' macros. Three years of developing and testing went into this collection. Subjects covered are sprites, screen handling, disk operations, interrupts, fonts, sound, scrolling, mouse and joystick handling, etc... Updates are available at regular intervals. * * * All titles COPYRIGHT Budgie UK All marketing rights reserved. *************** BUDGIE UK 5 Minster Close Rayleigh Essex SS6 8SF United Kingdom October 20, 1989 *************** Coming soon: More MAJOR Budgie UK Productions: - FINAL LAP by Camy Maertens - SEA KING by Jim Holmwood - BEYOND BERKWOOD by Andrew Vaughan - HOSTILE RECEPTION by Eddie Bryan BUDGIE UK now accounts for more than 55% of the ENTIRE budget games production on the Atari ST !!! ******************************* If you have a game you want to share with your fellow ST ers, contact BUDGIE UK for help, advice and exchange of routines. More than one huBudgie UK Licenceware --------------------- A QUEST FOR GALAXIA (c) November 1989 Budgie UK and Gary Wheaton + Shapeshifters All marketing rights reserved. Unauthorised distribution strictly prohibited. ndred machine code routines available to members! We will particularly favour programs written in 68000 code or compiled languages. No more STOS please !!! (unless e x c e p t i o n a l...) >> All authors receive royalties << Budgie UK : the fairer face of PD. ********************************* B e s t v i e w e d in MEDIUM RES THE WIZARDS PART II - RASTER INTERRUPTS by Erik and Udo of TEX Originally published in "68000'er/ST Magazin" of August 1988, this is the second article in which the world's most famous hackin' group - The Exceptions - explains some of the tricks that made them famous in the first place. Or: How to do things that are impossible. This article was written by Erik and Udo of TEX (thanks for sending the original, Erik!), and translated and reprinted by kind permission through Tarik Ahmia of "68000'er/ST Magazine" (cheers to you! May your life be bug-less forever!). In ST NEWS Volume 3 Issue 5, the Exceptions told you something about smooth horizontal scrolling; in this issue they'll talk about the mysterious topic of....raster interrupts. Hello, dear Demofreaks and machine language programmers, hello dear readers! Here we are again, gathered together for yet another hour of tips & tricks. Have you understood the previous article well, and are the characters now scrolling smoothly over your screen? Or have you, quite outraged, scrolled your ST through your (closed) window? Whatever may be the case, we now mercilessly intend to go on with the next chapter: We will dig deep into the wonderful world of Raster interrupts! But, like in our earlier story, I would also like to present you with some more anecdotes from the "Development Story" of our Club. Don't start panting now, since I will now just describe some of the proceedings that took care that we met someone who called himself "Mad Max", or better Jochen. He is now, in all modesty, one of the very best (or the best?) sound programmer on the Atari ST. The whole thing with Jochen (and the second demo) started in the sales department of a Computershop in Mannheim. There, I talked with someone named Sascha about the subject of pirated softw..., no, we talked about decentralized safety backups, the creation of which we both felt warm about. Thus, I drove to and fro a small meeting of ST freaks in Ramsen, a small village that is located on an even more remote spot than our native village Bad Drkheim. The meetings took place at our member-to-be Michael ("Daryl"). Sometimes, a longhaired fella could be seen there that did not yet have an ST, but that was definitely interested in the machine. Unbelievable stories were told of him: Despite of the fact that he was 15 years old at that time, he already knew how to handle the Music routine of music programmer Rob Hubbard on the C-64, so that he could play melodies through that. On his school, Jochen gained his first fame by creating 'rock versions' of X-mas songs. When he got to have an ST a bit later, we immediately stumbled onto the poor guy with the question if he couldn't do something like that on the ST, too. His lapidary answer to this question was: "Why not?". After a while, the first successes followed. Only later did I hear that Jochen had examined the ST in a way that can only be described as 'adventurous'. Without being slowed down by books about the "Sixteen-Thirtytwo" he found out everything about the necessary sound registers and started to experiment with these. Soon, amazing tones could be heard coming from the small chamber, where Udo could also be found. Up to then, ST friends weren't particularly treated to good music in games or music programs. We were stunned. And from then on there were three of us: Jochen was now with us as sound specialist. The thought of a new demo crawled into our minds. A demo with more movements on the screen, even MORE colors and music of our own. Being a Rob-Hubbard fan, Jochen did the impossible and made ST versions of some of Rob's songs. Back then, this method was very tiring; hours of typing data from printed out C-64 songs were needed. Then, one afternoon, we met at Jochen's place, harassed his sister out of the common room and began making the second demo. Graphics were designed, routines were made to match one another and note tables were entered. Our feverish work was only interrupted by some (not quite good) pizzas and the accidental appearance of the house cat on our keyboards. Jochen was just typing the C-64 game "Thing on a Spring" music and ordered me to design the graphics for that. That happened at about 02.00 hours. I did it. And that's the reason that in the second TEX demo a small piece of graphics is present that will never see the light of the screen because, as you would have guessed (or don't you know our second demo?), the music data was not ready in time - whereas the logo was. Why? Well, the morning sun was sending its rays directly on our monitors and, who'd believe that , we were TIRED! Muttering, Udo, Michael and the Chronicler of this text went on the way to home. Happily, we sighed something like "finally ready", "good music" and "the rasters are standing". Yes, there they are again, those mysterious "Raster Interrupts". Finally, such a program does not merely exist of music, but should also offer some extraordinary optical effects. And what would be more appropriate than more than 16 colors simultaneously on the screen? But first, we will have a deeper look into the world of raster interrupts. As you might know, an 'interrupt' is a signal of a chip inside a computer, that caused the processor to stop regular program execution and allow the program to branch to a specific memory address. After that, program execution continues as if nothing has happened. A rasterinterrupt is an interrupt that is cleared when the electron beam of the monitor (that is controlled by the computer) reaches a certain line on the screen. When you allow the raster interrupt to branch to a subprogram that, for example, changes the border color, you can now change the border color wherever you want. Because the color change takes place on the same location every time, two parts of the screen appear that hold a specified size. The methods of achieving a raster interrupt are different from machine to machine. With the C-64, the Videochip takes care of this job. You just have to give it the number of the line. In the Amiga, a co-processor named Copper is there for this (as well as other) jobs. With our ST, things go even more different. The Shifter, the chip that is responsible for the screen display, is as deaf as can be. This means that is doesn't offer much that we could use to do things. It does contain a register that contains the currently displayed video address, but we have to read that constantly in order to find out where the electron beam currently is. Bingo. The additional colors should, after all, cost the least processor time possible. So let's have a look at the other interrupt sources that are available. How are things with the so called timers? The ST has four of those, that can clear interrupts to one's heart's content. It's clever to use Timer B here. We can give that one a counter, that it will easily decrease with one. When the value reaches zero, Timer B can clear an interrupt through the MFP (Multi Function Peripheral chip). The clue with this method is that this counter is decremented by one every time a screen line has been displayed on the monitor. When we supply it, for example, with the value "100", exactly 100 screen lines later an interrupt is cleared. Practical, isn't it? If we can now also make sure that it regains its original value exactly at the upper screen border, it is possible to clear the rasterinterrupt you've been wanting all the time at any place. Quite exceptionally, the ST makes it easy for us here. There's the so-called "VBL" (Vertical Blank) that is cleared regularly - when the monitors starts displaying a new screen (in color mode, that's 50 or 60 times per second). This interrupt is eagerly used by many applications in the ST, to take care of tasks that have to be performed quite often. When we reset our timer, if possible before any of the other VBL routines are executed, we have reached our goal: The raster interrupt is 'standing'. Since we have already come so far, it's probably quite clear to you that we will go further than just switching the border color. The possibilities are almost without limits. Some examples: If you reset the counter after every interrupt that's cleared, it is of course possible to create several raster interrupts. This functions up to line 199 (up to now) and please don't forget: After the VBL, so when the screen buildup starts anew, you have to reset the first counter and the original colors. Thus, it's possible to change all 16 colors at once, but it's also possible to display both color resolutions (320x200 and 640x200) at once, like some famous adventures from "Magnetic Scrolls" clearly demonstrate (e.g. "The Pawn", "Jinxter" and others). Another way to torture the Shifter is to change the screen frequency in the middle of the screen. Some nice effects are created then, but we will not dig into this any deeper until our last part of this series. Now, you must be glad that you know what raster interrupts are all about. But there's something you should know that's not really nice: Raster interrupts are not always equal to raster interrupts. No, the switching line between two color palettes have to stand perfectly still and should not be insulting to the eye of the spoilt beholder in the least! How such flickering appears, is easy to see. Just imagine you have just changed the border color in a screen line. Two things can disturb your 'raster'. Your routine can be interrupt by another interrupt of a higher level. This assures flickering of several screen lines. If the interrupt routine is left to itself, the actual clearing of the interrupt also takes a certain amount of time before the ST actually handles your routine. Depending on the way you have programmed, it takes a while until the command is encountered that changes the border color. In the meantime, the electron beam continues and the switching of one color to another enters the visual range of the screen. How you can avoid these effects, which difficulties you will encounter while trying to avoid them will Udo tell you now. Just like Erik just explained, the ST doesn't really help us with programming raster interrupts. But there are three ways to achieve a color switch, though: We take over control of the horizontal blank, the vertical blank and the MFP. Some additional explanations: The MC68000 processor has several interrupt priority levels. An interrupt of lower priority can be interrupt by one of a higher priority. In the ST, there are three priority levels with the numbers 2, 4 and 6. 1. The horizontal blank (HBL) has priority two (that's the lowest), because it is called 15625 times per second on a color monitor. Therefore, this interrupt is normally not even enabled on the ST. 2. The vertical blank (VBL) has priority four. It is executed at least 50 times per second. The CPU branches fifty times per second to an interrupt routine that handles GEM: The setting of the mouse, check drive, flash cursor... The MFP is a chip with many tasks. It has priority six, that is divides as well. The MFP is responsible for the RS232 port, for the keyboard data handling, control of printer and disk drives, has a monochrome monitor detect function and has four independent timers. Two of these timers count external signals; timer B gets its signals from the monitor: It counts horizontal blanks, and thus works much like the HBL - with the difference that the HBL counts all blanks, and Timer B only counts the blanks of screen lines that are actually displayed (normally 200). The method of VBL is very messy, because the current screen position is compared constantly, and it thus is no real "interrupt". So let me do some explaining. Everything started when Erik wanted more than 16 colors simultaneously on the screen. One weekend, he surprised me with a program that could display several border colors at once. It was done with help of the HBL interrupt, that decreased a counter at every call until it would reach the value of zero. Then, the colors were changed and the counter was set for the next call. Principally this is very simple but it looked awful! Because every interrupt can override the HBL, it was very difficult to count the lines. The range of the color switch went up and down when moving the mouse or typing on the keyboard (the mouse is a very intensive level-6-interrupt source). That's why this method was hardly perfect for us, although this same method was used in games like "Gauntlet I" (the title picture). After the scroll routine of our demo was finished (see ST NEWS Volume 3 Issue 5) and we principally had the background artwork, we wanted to change the colors several times in the middle of the screen, and we also wanted to use 16 other colors for the scroller. Then, in April 1986, a program appeared in the "68000'er Sonderheft" that allowed the display of 512 colors at once. Yes! The Markt & Technik guys made us familiar with the principles of programming more than sixteen colors at once on the screen! Trying the program displayed a picture much like a chess board, which really displayed all 512 colors of the ST. Alright, the mouse did mess up things a bit (flickering of one line), but that didn't have much to say in our new demo anyway. So we built the appropriate parts in our demo and lo and behold....: Still it was trash. The color switching didn't flicker up and down anymore, but now one could see the color switching in one screen line. This was caused by the following: The MFP signals the CPU to perform a level 6 interrupt when the internal counter reaches the value of zero. The CPU now handles the current command completely before it branches to the interrupt routine at all. During this time, the electron beam of course moved on, so that you can see the colors switching in the next line. Many programs leave some space for this switching, but this could not be the case in our picture. Somehow, somewhere, we would have to switch the colors faster. But the fastest way is also too slow: Since the colors have to be switched immediately after the interrupt is cleared. And here's the trick: One has to clear the interrupt one line earlier and wait one line further for a HBL. Thus, it is possible to set the colors while the horizontal blank is performed. With this method, we change the color of one line to another. On the contrary to Magnetic Scrolls title pictures ("The Pawn", "Jinxter"...), our routine only interrupts the program one line earlier, that thus executes more operations as well (music, scrolling...). In our demo, we only had to build in the music and the whole case would be closed. But for our second demo, Erik had conspired some more tricks. Starting with color palette animation in certain parts of the screen as well as the copying of song logos onto the screen, we generally built in more. It was early in the morning when the demo was ready. Since it mainly concerned music, we called it "Little Sound Demo". So far Udo's excursion into the hot world of raster programming. And now you can throw yourself at the source file that is contained in the "PROGRAMS" folder on this ST NEWS disk (the file is called "WIZARDS2.S"). Just one more hint: Start the program as .TOS, because GEM tends to grow nuts when it looks at so many colors and crashes. We expect that no games, whether Public Domain or not, will ever bother to have raster interrupts that flicker or that are not present at all. A very typical example of this is a quite recent game's "Game Over" screen that reminds us of the city's library, although there's no fella there that walks around with a Mega blaster in an Alien Spaceship. In the next issue of ST NEWS, you will be able to find an article about sound programming as it should be, explaining how you can get tones from the soundchip which the (probably already retired) developers of this chip didn't consider to be possible. See you all then! Editorial remark: In the original article, a type-in-listing appeared that had some small errors in it. In this issue of ST NEWS, the proper listing is of course supplied on the disk. nds to grow nuts` *O*m - ЭЭ" Ҁ.A// ??<JNA B?< NA\#BBBg/9N/9N?<NNO ##/9?< NA\?</<?<1NAHA 9afJgB` `Jg9d$y69*!SCjl#N##x#### # &fE6*"*!Bg "R ja2g "j j a <g "j ja g "j ja#3LNu9gA`aHLNuy` G.WHEATON. 45 GOLDRILL AVE, BOLTON, LANCS, U.K. H/?< NN\LNu budgie3.pi1v H Hx H  H xx H  h hx H  H xx H   xx H   xx   H Hx  H?  x  U)f:0") HHAEHA|fBQ"#A#Ai3AXQ0*$ ) f*%f)<fR)NuJgJ`8Zn  44@ {N if|#R)  B@) Nu (C) G.WHEATON. 45 GOLDRILL AVE BOLTON. LANCS, U.K. 9 Dg@ )m8)f.i2)i2)imDAin2)i3ANuDi` i m3iNu )Nu| i<n 3iNu|-Ui` )m )nZiNu ) mRi`S)Nu|`F| imi Nu3|NuBA)<m |Ti`                   @lD  D  Dl@l H H H l H H H l H H H l l [QH5DHQ HQ[l HQ[l HQ[l`lyl @B, b  *Z         U|U#a000000 #b000000 #c7770007000600070055200505552220770557075055507703111103 #d #E 9B 02 #W 00 00 10 03 15 11 08 A:\*.*@ #W 00 00 0D 08 15 0B 00 @ #W 00 00 0E 09 15 0B 00 @ #W 00 00 0F 0A 15 0B 00 @ #M 00 01 00 FF A GALAXIA@ @ #M 02 01 00 FF B Budgie UK@ @ #T 00 03 02 FF Black Hole@ @ #F FF 04 @ *.*@ #D FF 01 @ *.*@ #G 03 FF *.APP@ @ #G 03 FF *.PRG@ @ #F 03 04 *.TOS@ @ #P 03 04 *.TTP@ @ ??PUUTTp*@?UPp?? ?@@@p?? L @JZ Rj*   XDhlR6^  &     <##??????A QUEST FOR GALAXIA ------------------- by Gary Wheaton and The Shapeshifters. Budgie UK is proud to present the definitive implementation of the all-time classic. This is the second program written by Gary Wheaton as a tribute to ATARI's 8-bit masterpieces. The first such program was ACE INVADERS released in October 88 which has now become Budgie UK's top seller. GALAXIA took one week-end (of sheer genius) to write. Admitedly the Shapeshifters' machine code routines, now numbering hundreds, had already been developed over the years. Press F1-F9 for more exciting levels. The high scores are saved on sector 6. Anybody out there with a disk editor can have a look at it. No cheating please! We recommend that you make a copy of this disk, or transfer the main PRG onto another disk. But do remember, the high scores will be written to sector 6. Finally, you all know by now that Budgie games are freely copyable and exchangeable. The only restriction put upon Budgie products is that only LICENSED distributors, (who pay us quarterly royalties) are allowed to market or sell them. (c) November 1989 Budgie UK & Gary Wheaton