2IMGAPSX@@@ 8L xC)pJJJJ IH(ȱH:=IH[H`@H^H 2 9 @   I/H`JLNGȄBȄF aK ' faaFF  RJm# KKJ qJ )J ۈJJm  JFȱJGJKaȄM ' 5aaNNJFLGJ`a  XL LG &PRODOS`DaElH$?EGvѶK+`L XX LU ŠϠĠӥS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RTROLL.WRITEk k ' @&PRODOS }<  ,HELLO.SYSTEM':/ /!AF<u//!G / /!H&/ /!ID/ /!Q/ /!X$./ %/ !T  $/@/Z//WDESKTOP?  !"#$%&L !C_" %k"l" (#M8( % ) L*"m"n" (_7, )7(P0 ( @X p 8  u"!_"f"0 ~&f"0 %o"p" (,) &q"r" ( %L*")0I0hx H( + %Щ ߩu"L! )L! 8'  )ɀ)4,- U JNT) u"Ls"t" ( !` ^"M)Fi/ b"3 h"i"j" e" iL X>"L;"ίΠ`v""""""*$ Fk%YeQP!/RB}QBiBB}\ }FEL,#> ȏ6 . ) ɘ"    L:#:#ŠϠĠԠ  m# m# J Qڨ)̰}] нȱ ̀𩠙 i V N c ɘ\   VG+ #X ɛL ' 0% '8 Jm ʈ0  0ŠϠĠ͢Š͠͠ϠŠŠϠĠخ͠ ͍B B(8`=YYZLYLYLY뿭` 8!@8` %MNЩUMߩ  L 5   8 0 8  `0 / X& & +&&7&P^&0`ŠӠֱǭԠŠҬî̠ӠĮʎ1|&… (n}&Dž (\%Tz&Lc()8= (J 8'z&'{& 3((ʎ1|&|&|&3223 ')L&18|&"m11 2H22h2舌|&|&12H)M0 h10200I20h2 (`LE%12 `_'"L  <8# ȱ)ɀ  )( ` (Xp< @( )m((.(( M(i  ``) |'(j21 z& {&!` ({&z&(i({&(( CBDFGE (r&$ 3(,}&r& … 3(ŅL&JJJJ`Ϡ'8`r&h)hrȱȱȱȱ0]cȱeem*ȱ*ȱ**ȱ**ȱ* )* * )L(`L?* *Ll) ) L( )Ll)8e` ,$`ee` `* G** c*` v* G* c*`hh8`8`***`}*`e`H)hJJ*0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <.<ʆ>,=?BC8 é&'112`HB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`eLJCAB@=?<>=?<>CAB@?A` 1 L  <>`ڢF]PL8i m L   6< L  BLRAM' hLDLآ <B*IBGF08Lé'+8H <,``h(`@ڍL3hh@ihAiH(ؠȱ@JJJJq@)@qvȱ@Hȱ@Ah@@cqe J) LL LJiB LJ) BxNhHHHHL(  ްƠx@BEOD  ް(`( C)CJJJl`B g-`J,~@~@}J@` ߩ%S @ ~`E hhhߺ0 h ߐ( ߐ ߐ  0 HϭߍLпllllhh8` Q)T'P#) ɺiL? )?      `l@Hȱ@IױHXATȱH ɯȩ׍̎5H)/@a)_ .0 :A[8@`,뎎׮Б` L ` @>O)I38 I`aם`K8`@Nȱ@O@ IiNȽבN)/ȩ/N`@[ WHJjjjhA D'KI؍0JHi 뎁`C8` @ 3N@) K莭 ⭪i`0 ]; 뮁ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّNΨ0NN` G8`F@ 0 H LK8`6 7I8`FHGH hGhF܌ բFܽܕF芝ܝ 밶67 8܅I m9IHHyHȘI Lܝ` @_@ g@Ю׍O)mיOʈ@mȱ@_ȱ@iklbJtKuO)5OI0ܢܽ eL'A* 7`aFG (CD Lz܅IN mAIH` pm mI0LM AOHJFKG 밳JK 밨C%܈@" T)Ii)܍N*܍A'ܮ( 4 䭐 $H %HFFHGHG 됬`R8`)` AHO` 'Q'܅IHHOOЍO@`8 ` ͉% ΉQ8`܅I `L܍MN h8D`F` alH)HFȍJHGK $%܍&܍!ܢ8* J8` L ܝ:)I 'ܝ6`B8iNFLGM`B܅IH3H ( )ȱHΨ`Ί8AeHI SB60I ٙGٙEFJCʈ h猪`8m0`,0H hi PȽΨhٍ0GF8yאFG  $0 K01 E8`1ݺ00 ] 0ʩ 谼 谷`12)1`0`Ȏi 0U`)8`Ψ` W |G 4A)H ܝʈh٭0٭)ܝ٭*ܝ٥F٥G٭'ܝ٭(ܝ`)َ 8ʈ` 0ٝ)i `8`R ꍌvw zNمFمG < Ό0 FGL鮁0 ٭w٭vٽ8`H8`  ,v w 8` vw `ٽJJJJ`H͌hn)NjNjNjN. GH͌ z;٭ *Nۙ۰ڙک `Z8` G# ,`w .w .w .w8۰*Jv۩ ٰvw`JJJJ;i z묁͖ zٍ0  `H8` `ٍyٍiB0H0FG h0`FG `ϩBxED0C ް(`(8`ؑ@`M8`8@ؐʈI묂)v8vv L} LةC8`؍)@ i)v8vyJ ^ ؅F Ls) +%J(a .FإGؐ.` .JHIH IL3FHGI ҭJjHIHB>IؙJJ [: IL}HIHI`JKJK`FHIG ( Ȣ؝}؈JL)eKM`)` J vJ͛ $0 ΊJFJL8`JGBJ T FإG`BH TFإG`,H hHB؅F  ؅GxDE؍00C ް(`(8` zL+J  :"L zH  : 9ؙ` @ P8`K8`B8` H؈OJJJJحm) ) )Ю ЪG `F $ ᭔ع+ؠ 6H  Rh8` 䮁ٽ ٬ؠ@` ( H )8`)i п` H h)N$% LL L L 6 &pJ덟 )@።NJOK 6iKKΞΞ IJΟ JФ̭JjHFIH HIGxKE ް((H hH h8`8@ȭ@L6쬂8NNO 8 ؍JL`RΞʱLN1MOMEKP/MEKΞL;L-M O,p莝eNNO(`JNKOL 6/ &P L8 } [ؑJ`L@ȱ@ `@Nȱ@O`؝}}vIvؐ` jzؽ}؝v j ) j؝zv؈` ` H Th)N@ ;; L  6$ )bJ ] ) H 8hL )  )حJjIwHIvH؊ PLKΞʱNLMO MЈMEKݸP%MEKΞL( O, PeNNO J(` C  7 2JvHIwHI؊ LI  .` A Hv ع Hw ؙ؊ؠIhHIhH  iع `  عiعi` )؍0CGHFHBFGx ް(8hFhG`@4͔ L @Ai ׭2` . R#ع؍0 ]讁)`.@+ i 8` L )߹0 )p )@ ) ȩ ؝H0JK 방 LMJKFG 嬂؍b؍c؝d ؝_ vO) vO )حI͖ z`H@h`h``N8`  ) ;⬂Ȣ؝z@zݚ@ʈLJ KIJHȢݚ h魚)Jn 8 δ ؍ ؍ \H8 ع)ꭱJJJJ Ȣ؝I؈ 6h(8H = h(8Hh(`ؑ@`@ȱ@ ` B@8ZO h鮁ٍٍٍoHٍn8bhcOJJJJO)O@` %I -m) 0@O)N8` @LL =@ /ȹP8` i` =ם0 /B =)( ȹ`8m8m@8` G8`F Pm)@N8`O)@J /טyרםOO)׍O`a 밑 LȹL@ȅH@IL,0` G קּ= ]H.m)N 0 H`aO)@LP8` \᮰ ֩OCDC z L䬁yٙ٭yٙ٩`K GE`FaG 6%&N    ܮ `J HH hh` 0 @ LGL r`̴Yܝ ݝ0̴ȩFG   0` ܅F݅G ` { rͬ 밽܅F݅G ` {* r% L`L뮰HH hFhG܍ݍ 8 `FHGH  hGhF`ݹܙ݊`@Bɼ>K@J5 {9X(K {XXK تKo`V8`no` D on {I9XX`)HJJJh`OeNeO࿰ {9XАO`@ȭ@` ON aNJKO`HхhꭋILhH),fx8 (8` ԍ`@Ae J m00[roIIJK,-NOPQRSu' @   !"#$Ԡ͠(C)1983-87APPLELKL`BLL ެެެެެެެެެެެެެެެ(C)APPLE'83xLLM Mh@8nЍLޭ 0J @,,LRP׽8H  ): e: y8鰕:Jjjj<)yאi8i;i(*=>hPם8`;Zx3QZYXXWV[HEVhEhH)IWHPHHHAHHHLaVEWLӿ`` ֽ ְ& .Vӈ  JJJJH 8h Ei 8EX`'8`jӍWӥC)p> pӥCYӍY 轊( ( ӈBV ( ӭp0 \BkJ ՠ@iӦ> Ӑi'j:ZH i@ioZZH h ѐȭnWǥBJ Ӱ8XӦ>` Ր+>*L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| 0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌18V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``  / XʩXύX X %   % ɍRH hɛɘɉɈ $ Ld :Ldې)ɮ۰ɺ' Ld  : X ( % ɛ$ɘɉ ɈL :Lɍ)ې)ɮ۰ɺH h 'L  ġLL ̹L)'L ȳL O'F ʻ ̹(((L $ʩ $$ $L `ީ % K@D EFby LҠؠӠ΢ϠԩҠŠƠԠԠŠӢɯϠҠůȠԠĠ  0h)ύh0HHHH " ׍hhhhhhh .hh8`JIMJAYKERRY&MIKE()*+,-./0123456789:;<=>?@ABCDEZ?BC ,qZ?`BC ,kBX RBB?ȅBC8 éc !d `h %i ؍j uk A : <%=؅>?BC8 éc `d ȅ<=>?BiC éh %i j 0k X : %Lq$H 9h @ hh A; ALe`  W<=>?BqC é  q   I X0~b L  m > p!p W rP j ɱ h ^ jej p!p m m!p h p K L0jjHjH`jj jԽjHjH`A cWZfEcWf0i`>f0 `4QeŠjL 7wXkkkkjjkk pj m mL0jl  pL0j+iFqQ   e1k<=>%?BqC éLq<%=>U?BqC Lq<=>%?BqC éLq pH m `h mL0j    mL> U 7$  9$;e3児kL&;IWeu l lL l 6l j :lL ;7R plH PlBlL;p l`;p 6l`1jJH ^ph ]p֠pÎpp pp?Lp?> =C?`BH<Bh<` q: q< q5 q, q% q q q  qhqhq ^p q qqH  \p qh qHqH`Li$-4qqqqqfqhqjqL^p)00")3L*r Ram disk error.L r Less than 128K RAM.L r No 80 column card. > :, e#r&'2&'12)p0Lq321125h i j k : 88  )$5 +5 H H6 ȹ7 <=>?BhC ,  n v  ',W,R,Pd^ A^ >y d^ D^ >0 , \ 2d3 |&| & Do you want sound?| Press Y(yes) or N(no).|Teachers This program|has a print option. See|the User's Guide for|details.   > W r)!ɔ `LBt K LBt  DR j 0 D#O j ~ `3  (  $:%; $?%@h* cp (  > rɱ7EɳS/ b r >h X u h,W,U,P AhOLtɔ `L9u K L9u P ` >Nh* v ><=>?BhC , I v7We3c & *箠 >Li]f0X菀elwxeffl*bUeՀ]b@@kb*d(bl`nfnb*n Ufb*nUbUnbdnUb( ( Tf~b*eu'wxUuUàìb*eu*ǻU@uU|pdD@LJb ?gl|w|??Ǽg{|fibebe𠀪b重ǏϾb逍b逍϶bǾbcdef϶bcdbdecdefT񀣇UՀb( ()!UbUf~df#U*U 0XĶ::#$:gi-nq"'"NOؙـwg۪qs^`޳TUU*UU*@4?U~*燳ٌƌ*02pm@o`qp08u~eUa9盟ρP"/ 132a3f`0 jklmoqrstvwxy|}*՘ЏՕՔЀف*  R *R"%c`efgijklmnopЀٰU * % *`bdhi՛ǟߥ漢Գ    ".1cetv}( %%" #*%J@KPdQSX@jp@qrsvwy|PTՔ՝թլ熃("#@% , I(*O i*qs u*w(xy}*TQNӘԜО@DPTٌAQU!) " %IU~PQUR_UUVX_[U\^_aUU_gUh~UqsUx{Á " *( ճ J@U0-.0I*Q{U;X[;]acCdfh*x{ՆԈЌԏ՘Ņٿ@P@P" IUQScTxU~WX[\rabzdf UUxy}ʉ‚ (** *( " *:U&@,@I*QT<80" * BRy{psiL?~|xsgO~|C% *`.0203`06`IZ\^bcfgiknswT}U*()(*~p~|ysO?? @2 EV[]_acdeklnosuy*}*U|g@??xU*EJPQTVY_`defhjklm?suwUz}U*(#?~y?`~(*CHKLOPSWZ[]_acdejprb"yR~UTSGO?~yg?C|Uف@P@P@! | /| CHIKLMNRSZ\`ade3hsj3msp3s#v !} * *(#~|(*ټ(* B R  *( *"($U%T . CDJLNOPSTUVWXY[]^_YV e `0p~8A0A`QyxYxYxYqEUTAGPUTPUUP J UTPTU! $* CFHIJQRTXYZ[defghijkloB!p*vxz|}"~ *~(r *ه  vEV\]^_`abcdegijklp`TrtTvxI?U|~~I~QeU̻T(EIcoO ?*tvx  |~*q*_**|"J*(*()(:@&.@/`2i@amxlo;?r|qOvxz~QoETqEUٞ U) # &.1/`21gHbXj|kl}maLp~>_>vyB*z|~ *****|(b *ٰb@cp8e|;gg93pGgsux9x~qO|~~QE~I|QEUPTUU T"P@.`/02`35`6`p! ~*<"#)''' *ه* $%!*:U%T7.8/028370\`]p^l_`cO#cx>OfggimxnyALf3uvwxqD@UUP :*&YpZ\[\}]b~cyd|fyg|Ois9kO|ngpuyv|w{^prp* * *ك !"&X.8W`>Y{Z\c]|^yG?af|pfk|lym|nwox )BxUAT%UPUپEU%" #*% WXwY[~\qO?_`|aqO?ds_t=zp(| (*.+*(* **TUWXnYZ|\^~_|`{agLafg?io?pq{AvxPxxUzTQU@PUهB<.F2F3|XY]Z\^c_y`|ceaLh~=Gmowp""vx *(*  **3E`0H`J@LW`XY{@\@?Aayb{csdg/?h~i|jksmonpptUT@p` U٘ U$%('@C@D|EgFGxCJKyLM~NfO|PxRpS`UH6W~XY|Zx[s\gO9`sax!@>@sAD~Eq?GI|C?LM|APQ~RpSgV~Wq?Z]~^y_gaiyjlpmoop~Uف 8` )E7RexS9ATY\X\TVefWcehoy|~Wdhiloq{ØWhopq}~TƌV\ ' ' &`L^iLiLi0`.iȍ/i/i0o -i -i/i,i %i i ixPa ix i,iؙ8^8 i 1i,h`xH -i,i+ihL` ihi,i8h 2 h `h`h% 1i,i nii)Ihݠi`h8` `i)`0`LBiLuiL|i0``h hh .h .hhhi 2 'Hi0hhD  `h Vhfh hh  h`ii -ii i i -i i8ijImi`%i8Ii` IFL4i `h% ha b nvivi)Ih݄i`h8` `vi)`0` ]B `B<`  `$H 9h hh A ALe` 'P` O'` M'a`,@ 0`I ` ` l,(`,`,ɏ ~I0~`ɠ`i`igH8h`$ `  N ii . ` `,*`0V }0 ` # u j u Lj h $ `h   `h j j `h   ^ ` 0`  & |g`g@g~~x`_ ` e g  f  L^ ` j h ^ Lh H ` H h z h h ^ h ` 8 `  . %  i!8`` k l k u~ u~ t t`z` | 6Xc3` L&Xč` *Jj,`  ȱ 8 ȱo \ `,$L S ȱȱ ȱ tpge g,})` )Y )I I 0XƢШƢ$\ `II) ` 0X  8eƜL ȱ` %    6 ge g,}0XƧ Ɯз`0X W  `d / h 3 `,T ,ULȘ`ɢQhheeHH)I N 褡ģ,})Eġ %I1ģ %I1ǽgi0ge `橱`)i9L ))m99 ȱ @3m9g䙐G2`.?H $ ))  {Jʎho 8Ʃ9 )|{-,H  h|    j в%*ɢɌ F *,, ** *,= > *],Z *I]  , , . j `}`hh HH`))JJJJy eȑ`  ( 3ig䙐(̈́! ѐ斤,`` j ,eIg I`' `O ONOqN8Nm`} ~ E  $``f` )J`נi@(igigw0@?`oiȍ`" 6 mLR ΍ iHH 纎"m H ͐Lh ]mm͒д"`ٓ` m"z{hh  yLH yL͐z{zL@h ]mm͒б"`HggehHh`z{͌``0Xi HHLi A Bqq DE6   `ii &3iHH  hh   @@@@@@@@@@@@@@@@@@JJLL@@@@@EH@((8((6@@H@(@8(8(8(9(DH)HL*(8H8H(L8H(@@@@@@((8(8D8888 888ޫަξPI?/?O_o^nd~"t2޼6,S^C9`*mFzS` ? 8333N333>33>00>333>O333333333333333 3333?>3333  ?3003?0033?00 333333>0330 333333333?333?333c33cCGOscC333333?0 ?0>3>3333>03333330 ?333?00000003333338 ? 33333333 3? ?0333 333>030333 33 33?3333??>csc>000033O3? 333 ????3333333333L0pp0~~<<<~<<~<<<  pppppppppppppppppxvxppvpuwwppx:vMLZ\\\\\\\\ppp9p\p3cCCC3cCFl8@`0    33 n @T <80" * BRy{psiL?~|xsgO~|C-@.`/x0|1~2:;?ApWnswT}U*()(*~p~|ysO?? $( + ##2:?AWnsuy*}*U|g@??x@PTU "'T+-/2:?n?qsuwUz}U*(#?~y?`(*(*(J" $*' +1@3O589?A0_>vyB*z| *****|(b *~? *&((7)x+3'# 24?6`7:? @AFGJWb@cp8e|;gg93nqpGgsux9x~qO|U~QE~I|QEU U"Q$E%A&Q(P)Q*T,U/1d2q3|4~5:?@W`p! **<"#)''' * "*) +,r-x.|/~0:?\`]p^l_`cO#cx>OfggimxnyALf3uvwxqD@UUP,0?1:?YpZ\[\}]b~cyd|fyg|Ois9kOnq|ngpuyv|w{^pr2p* * *248?9?W`>Y{Z\c]|^yG?af|gipfk|lym|nwox@xUAT%UPUWXwY[~\qO?_`|aqO?ds_t=zp(| *.+*(* *(H H HH(H&()*H23H6(; WXnYZ|\^~_|`{agLafg?io?pq{AvxPxxUzTQU֏@PU | q c A TQS@O?UWW#P$w'U)گ,.23457U;XY]Z\^c_y`|ceaLh~=Gmowp"vx *(**~|xrJ b*TDT#$\%`'*)ڹ/012345;E`0H`J@LW`XY{@\@?Aayb{csdg/?h~i|jksmonpptUUU?O#$&'U)257U;C@D|EgFGxCJKyLM~NfO|PxRpS`U@6W~XY|Zx[s\gO9`sax!@sAD~Eq?GI|C?LM|APQ~RpSgV~Wq?Z]~^y_gaiyjlpmoop~DDU7FN(7%`'p`@+0x`7@P !0"48fn{#|U7@ PDD+ %5]\TRGYSx C$ ?Ox7 ` `" $WR|nhxa @A 6RZ& v*0l-0smsp@7@  XRJrs lLYsv\?$)9z(49+6^:f}a4@p7   [Z[_W!-"1#)$39=IPX\R$)+jz7 & (* + 7IL  $<c1<m@ qPH(hP@jm@qw|@-`dh ( dhv dqPUtyE|!EUUej@p@ (Lty"`|k@hxpnqswy{9<|~ |*`}?IXk@nGA@`Hi "@m3FrzW?>vx@b @XPa  `@8 @f]@^p_x, c@Xhp mx(`y @}[p\\@1\F< `0@0(L`up;o?}~pY#2\A`pcff7jx3),`pa{!- W`B[p ?C0 F0`v@y$X*` 0@hs BXUZbBF_ `tXbpa3gp@o@1W"Z\]l,_f0`^3cBjl8lpo*E`0H`J@LW? ]?>B 8P[V\hq loUpC@D|EgFGxCJKyLM~NfO|PxRpS`U@6"Zx \`7!&L`^D /7jvk{mp .sxBxCOD|EFG?HI|JcLMxNsPRcT|?FXx0O`g ;%e;SdfbmqQs@pByCEG>IgKpMk@C Y >@sAC?AIcOsQq@WXx ]`s8`kx0@AqIOr@`@rsw_u|p@tx {@}y;o?}~p{ 1151111115@@T,\<|<|dP+@1 ` @p\( r +9\(& " "  (*1  [*VZ|j/>jU#APAE@E@U11Gw sH s \ wqs#vu&vu%?BwC í5  yLi y wu \ LKt7f3W  LTyԍzuz/ u s n >u Iuts vv &s ku[{ ,{[{ utzti =u  i;uti Lrtt@ ?<@=BC , eL"p8tDt Dt`pl8 i wutt(ui   \ruti\t]8sui tmuut^tuttH $nu h $X8``1Gc5La0Nc6q`10d4AcU%fW0eUfWe0E`1Nc5Ea6Nd0vc5d0c5d0c5d=u;u
    )9Pvvv       svvv14Qo  L(Dd>dvvwwwwwwwwxxxxxxxxx\V^Xxx.+k0,.+5 ?5?@@@@+k+~+?5?=5@|WUuUuUW~:jk?:jkj:+08,|?5 @@@@@OmO?jnj?>6>@Om-mo?jnoj~j`g6vfv6g5775@om {njol|`w6fv6g?5?575@OmO?jn~>jnj?`w6vFG?5767 @OmO?jnjnj?Uf yUf 4y}?}o}{}~}*U~_>_^\X^^~_~_*U}?}o}{}~}*U~_^^X\^>_~_~_*U n st  A j >u &s ku j l?BDC  Dsqs  ALiy k k m >  k ` [{z zL [{Ly z K ( zL z 0 Qzmv8 kv "z h@ h  jz,Nz z 0{ u j hɩiz   2 H h zL 8Z{ 8X{ 0 ,J8``  2 T{ mvkvttttgv tttt`[{ z[{ z 0{ j 0{ j [{ z(+{ { j ( { j ` &,` &,` '+` z !{(lv $gv kvmv jzN{ }`1(fFH)h)J{{i { } ƥ j ƣ@ д` W x3L r& n ҆ K L2r HH` : K L2r HH` Ǔj  m H > l  5L  j  q W lӍr $ D C|Lx} 2s0~r$~r nL =s0H nH h s %wڭw k 7}L+sk $}L+s x Hsl~`I+~`}egަu~ۥݹڨ sk 7}`s w` ~{ک۰Lywk kLu~Lz܍\ݍ]ލ^}ֹ ~׌yیyLyɀ< 8JJ(zry\ ]8 ^ , $   $X j $X\^mg^\L@ykLyu~>y}ֹ ~ש{8{m{{ ( {L@yu~L}ֽ ~`ڤ"  36 qLl  8q  x W r1 n  K L~ H nhvHpH`9 =s0H Ӎr $ x|hLr 2s0H $ x|hLr L K L~ H|H`Wuu[,u񁁁 r& n ʆ K L HH` 4 K L HH` r& n چ K L HH` @ K L HH` % )Zf f`jkimyn ˀ ˀ78m u iH Rp r nhHH` l م7  ̐L x|Lr3 L~ɱ q|L~ ҐL x| م l t5 ̇ WLE ̇ W   t q > L~7 م l t [   > 6 L x| ߐ Ґ 6 LLxr Lr6 l qLr8q L~ɱL~3 3HH` 7* O W r) n † K L, HH` . K L, HH` C n ` # n LƏ,{,,~~~~{1N`6c`1e`6z`1|`6`0`7e2Ed4Mc2d4c0"`5@f0`5f8t`9zb9te;z`8nf:ta8zf:aIrcQ|cO?aRHd u 蓭 M'a `+ >+  ɱ >3L~ ̐ q| 蓩 ɱ L~L L,8  L,8H ! hH u hH ǃ ō j h,! L 8 i ``` ?L, ou okk Lk lao E j EL  P  P '  % ''P ' 'P  &' P'P %%  & '    $K S k  ( m` L [ `laoL=F?aBCL"YGhloqsuxz}}7d _Vb esqqsgGGgO7XH ʎ5R 6 A   j 6 A   3LƁk Cq<@=ׅ>N?,BC , eL"p "0 j ɱ L j B " F`ɱL2r l3LbLCLv1N`6c`1e`6z`1|`6`0`7e2Ed4Mc2d4c0"`5@f0`5f8`dQb8dQb0b5d0"`5@f0D`5^f0b`5|f0~`5f0`5f0`5fEcFeCbDdU eW,f7 `9,aAcNd o&zh䠋L Baukx,[i i  L,L^ Ljb ̐, $v* vLr* ̇L i iL ɱ , > | x| qӍr6Lrه r k k m >  kLC㈪ K ㈊㈭ C 6 j 6 OL L㈪0 i U 爩, $ Q j QLq u  i -q䈍i ` j Lz -r .B EY \p`/F]1 b `8e L2r303 m3Șڍlȱlȱlɱl H $ j h $`>Ra>a5`5 f5+f5If5df5f5fWu]F/0` `XH $wH $} P } 7} Phw 7}LI $}h $L n l?BDC  D LA+ u~ʎijkʎl R 70( jʎu~ʎiʎkʎl +}}u~  qL}~4 > qL~ r k W r& n  K L ыHϋH` F K L ՋHӋH`?fBbJ`Lc k H  kЋ CLLi k4 >L2r5 ǓLɱ6 C >L~ $ CLr`38Wf #\^`\^` L L8T` 9Te 8Nf 8Rc 0` ӌ0` ٌ3fL30003333O{3 u 38   8m58 ̍48  ! h@ u j @ ˍ  Ə u j hө,! i4 35L], 55`UbaU Ai!i iYY8 ` # +LE A 7XLW 9 Pi`H P eh PLj H $hiL'/ 7 7`i,M` L # E L `I n j -.10$3ÌˌČ8 Č̌ $  ČiČ ̌̌ & ̌ L+,L L V ҏ̴`ƨ 訍 H) `h)Ji 8`` ƨ設 MI` ƨŨδLH !*B` $ $ $ #8 JJHH)hJJJh"H)m hJJJJ   +LE i` #L #L` [`[ `L0` H ` B u ̇L z u ҏ j Ə L) & C H δ > + > ONB L)xj ] j ]x`ݍl8bm_8nid80k޹r}o8`iar}e80m|g('fcy}f8`imy}p`  ` F j R Lz j LH $ h $`cii&i&(i(iiiiii'i'` V& W%9e3 &ɱ $ "  mLf mLx j  Lq V&`^lz1` ޒ(?IOIg w)w)w)w)(w(7Ggp?fsssgx?>^z?_z?>^z?@OzxA9z` .My`  /U*U*Uk_~{~{x{x{x{x{x{x{x{x{xk_x/U*U*Ux~p?fsssgx?>^z?_z?>^z?@OzxA8`3YdL&9L lL 7  Q `+i- HH I F~fwi H $ h $hhL| ^m)`AOg|<|agbpepbe|axbp`dpexf|g@|ys39<@>~>N>~O LNONL?Gcs3r3scG'g`k`||xqsrsqx|0X U2c@AU*wxU #9'(*'(sH6>+z~ff~z+?g[C{GUL Uc[*ONL*msuW_E`psp@/wx/_  ?C~G.Hno.p~t~.nNn.n.~~ ` p x |~-/q245q7@CGUHJKOMO3QSTVWYZ\]_aa!cefhikloUptUiqy}e}]\]U.|/x081?2~3|4x7|8~CG*HJKMN|OQSTV`WY`?[]y^p9@ap&cedlo*pt*~}{wolonNn`**_ -q02q7@CGUHJ@KM@NP@QS@TUyVpWy@YpZf[@]_@`b@ce@fg~Gixj~DloUptUgCgC*U@@@@@@@~ | x p 178?G:;o:?t?:;:;9;:;:?0x1`2G7`8x@pArwpxprp0#0~1x2q40868?:@;0|9~:s#$-G47G8gAA$-2 ss$0G2G$0|1p4LO$-q/0q$-c078383$0~1>7>8~$0q1@46~?O@O#$0G2Gx~s-y~x0|1p4~pcGLKOLOGcp| | O  O?Og`  ` O ` Opp|y| y WS ~0X "**U*UU*r* "*r* +z~NN~z+?U?Ogww7Gg+z~ff~z+?UU Ug*(I )(UL * *OL U*ONLUU uW_E`*uW_E`*ED"EEDE#]WgY `'`'EbW:XuH l j h` x| l م t q ,| 7`+ >+LЛ + >w 7}L $} q >L~``07AA|L| O xpx3?3a3c~fs0p0sNOLMb7XabNNpaU?X3?`gT~Y[<f~ULdpd |`Y??QcC3sY|y|QcRaS`fgYp<^QaLUaYpf[`f^QTCgYx0L|QsCsY\^YxsxaaaaaaaRGgZGR3X[aRff[aRfgX[aRgg[aRX[aR OO[aR?V~XNQ0>8>0X ?><>QpfpfVX8]QaL@LVX8303]QCycOUaX<f~QAySayAX L L]X|y|bMX15PN;35MQ/XNtK yVwXN  Of~8LXP 3X#08 $%6;WY\^y{>@*s*UU*'r124r;*>@UBErG2HR2JrLrY*\*brv*y*r*U*'/!1>4"&*.26:>#'+/37;?#'+/37;?((((PPPP @?05:?DINSX]16;@EJOTY^27CHMRW\a6 FL7 SL8 DCE8EJC 0LE EJ EjC 0LE E E qJLAL  Jf 2 `L[M@MC LMvMDLLLL LxL L L L`LL`HLLh`                 `E7s$ByIMMMNNNOOOPPPQQQQRRRRSSSSSTTKI}&Z&5` >lTTUUUUUVVVVVWWWWWXXXYYYYZZZZZZ[@A<G ET14>pT14>PT14>nT14>qT14>QT14> HHPHHH#PX`hpxX`hpX`hpX`hp nT16AG NT16pT16PT16r HH)PX`hp %0 A<G NT14>ET14>eT14>qT14>QT14>pT14>PT14>@NT14<AS >ET14>QT14>PT14X@BO*~,-N0@58;>BO!g,`a0538;3>BOy!$g),s0`g5f9gf>fBgO!$),15:>CO!$%?),-?156?:>??COxy!@"O$N)g,f2g5f;g>fDO)-x25x:=xBO?)*?-82?58:?=8B?GOO@~f"~&f*~.f2~6f:~>fB~GOxy|#&|+.|36|;>|COps@L"@&@'L*@.@/L2@6@7L:@>@?LB@Ops&)c+c.c13C7sGO#p&)+.135G79L;ABLDO$q&)F+,F./F12F47xy;xy>xAxyDxO&p)q+pq.pq1pq4p6;>ADO67?03;03>0??A03D0?GO6~B| |GO.?0BcO&y)+y.x1x35x8x;x=?xBxEyGO?8&)F+,F./F13F56F89F;=F?@FBCFEO@N&)1+,1./11315181;=1?1B1EO!&) + . 13 5 8 ;= ? B EO&ps;>CO4C;>GCO7;>cCO;`OOOO(O*gsys3x~O?O?O  C~x?2?O?  O @~|y C2O `2O`??Gq~2O~|  Csy|gscI~2O ~p2O |c  ??Oc|2O ~|ysy|~23?3O~5?5x6CEO7x8CC@~9p;?Bp;x24@5O:@;OD? ?gsy|&>y.|0~2?E0"Gcy|~2|x6r8f:N<?@NfCpx|`~|%g&O)?~'319;<=>@I03~JO36|p9D|CDDpJO ?  Og36:~xc>?@cFJO36;?cx`?FJO@ 369Gq|@~xc?JO ~|g`|!g$O&(?*6p8rsDpqpJO|O`|`pGcGp?@|@!??O@gO @$?& ? gsy|~!$~&|(ysg,??q!,|q/?!/OxC !-.Cx ~xc O ?!(?*Ocx~~|ysgOgs$y&|(~xx7?9?@`GG` @5a|a``4?7O98Las;G| gsxp L<|yc?!&+16<|@~yg@!x"C&p(?+|a.?2p3G7xc9O/9035L6Icsy|~|ygOA,~2OOO |Lg0GIs?gy?$g'?+|/0Is',0GxI!.I!.I!.I!.I!.Ig`g!`g.`g0GILy$g'?+g/06g9I?9?9?#'$?'>(?0p69IN g`g~069sIsMp69I69I69I69I69I69:OI@JOM69yIyMx6@7O9@IIIIIIII sIp s,5gDJ ,5DJ ,5DJ `g,`/C2C5`gD`J psIpOOO@OO|~? O?O OgO O?Oa La? OO`gO|y|~| |?!"CLc~O!#?sGG`#OCxysy<Axy"x yx~<Asy|"yqOFpsgcp~ |y |?N`sg#s%s~8gs"g$OOxAg O  ? aysy%O|ysx ~ %|&p'~O(p)|*x,O%?O%~'|x|x ."O#G.p? ?%~&?'> O?Cy|~ |yq|~AO'~|x|x`=?AE?GI?KOM?< O?@-7sy;s3pxy8gO  Oc`?~|xyxy$|+~1x3C5O?HcgG Og sy|~?#(?+csqy4x|8g`g O  OgsyqA|~#?gsy|~OO gsgG3x?cx*~yg-O3Odpy sG?GpA.xOpgOG ?Cx~p/|sgg~|y | 2|q4G89OpOgysg~|O~?y|~ ?"s@@?s???gs>` ?GsLp=`M?Ogs|s8=Lxxg O  C<5gy|grx|ysgO4=x|y3ysg O"?$2`:?O  sO"~$|0?8cx @ "O$/6c| ~xsG$*O,4O~,2?3@ysG-|0?1Gx|ycO +,Cxc0<gx |yc#O)?+Lgqx|O"?$NdqO?sOsO1gsy|OsgOO|O$O$|(O)|qg-O-|ycO~|y!O?"?#C|"@#O#`"?#A~"O"~p$O%O%xc'O'OoG939'8(90 ? OG3s /3 ypf OfOI IO!"O12@ ONL |~1L1O 3Ls 11O f9c 1OG3s 3Nc$?&O12O4OfO fsF$@&1+?,10?4c9O~|~ 3L1F&~1yc59|a f? 115x7;~p=G pfg`~c 178>B|DysFG ?  Ogs1L|g' fg!`g1`8`G~xc s`gF@sBrsc C!3s/30Csp9x:CKxc?OwcI39!8#9.80;~xsgNxOprsp~(~1@xAC ?%&Oq|Bx ? s|~|ysG$~Cpq|~ x$`D`?Acsg `%~aE`<x'xF@|Cs~x(`GppG ?`)@*HxO sy|~*`JxO+LxOONNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNNOM   iz1`3 & Fxɱ '& & Fx >  L]mxRL_ovI'箮+z yyCyyDyyEyyGy  j k  ( Kx >y<=>?BC ,y yyy`>q"#] \zz n Dz6z~8z9z0:z;z`k 7PfIE$E<p? H|~?   ?"0#o%5'u(})s*L+X@A>B|CcEgGxG8G1O0KyLeNwL2 R{SdTc`fnp(`!#l$H%`&0  +`,@@BcDqEN1HyF9F=MsL3Qy@7f8p @ p |"#~$X%|'~(n)gAO #*0H  `@)`*p+X,h .x/>&#6A`0DpFH`Jhpiljj%EnJ`rxX}@0 c @x|~8# 000p0+->2C385`7{8|>`0CFDa?$HWA<h >=txp}`2$'(cd`PL,X0cBJIAa@p`F`_ \"p |159>S P?c7 p=W"`K@P`oh r{~pH `~ #}|~  {P3lc  >!r"N$%g&w' *o+F.x/c1|2pD G]GKgLU- `cad{ J &1C .(qxPp`|~ 6|3 c f cC0Yx#?@?!%s'c(f)c+[-F.S 12?>@?x4 GJ]Bcgiyj`0sAu{v|cl 7  { _ Q^* &g(_+Q,>-J>? AF(F HHIp?i<+nUqQ(    ' +@F`0x<  `b~d$`%H'f(h( /2U3Ta@ e 0gpX:n)W'0$.@/P(03s5t79D:x0RpTx@NX^Yx^x>%AOIVgl@mp)aba8a{Xs[O0|6A < w x}M(" #P' $ -/ &.8RU ^|_{M4de|g7ixloq~r{ { nwf$9Ez. D ? @0OY "$$&@!(@0E1I"^=_zK)HIH7@ PLqC{ 0Pp p u 8r9p#&.(+*4 Q` UpWpYx_g ox?p"B6HJw8 RPXROJ 5`maydAf@iCk} ps t@AFD20L~>gI~0J^ < 0"` 0"x#(&  /?@yAsBgCxDpE`EH5Ie RW"3/)< d f}hmb p`ekK1,0al\&m|W9^-3!@px0  X P(jz@p  p!_$X%x&<-/ ACDy#&,!JPLxMlPxRPUHf  p s`skg< 1f\%)C|jP@( ` p@J @A!$DJ    |cJ` 2  h p `06`0"@#8 )_ CxES36M63QSSxaxcccgxiccnx@(PTPH( ( (Hxtjj$ $ ?)P @ Cg `)ZH"%_&`')z*c+@,`0D 6F`GfHe10NeOfP`6a@2f2@i2m2 @ J@ JEJ}9sd0p``@`pP(  O g  3# '3+1.L/72L,5l6L:E08> Gi >8> GpF`/NGxvgf`p~wp@? 0?Xgxy9 ` p (   -~/p0~4@ 8~;~E?lp{%R) @`Awvlx_0* e%&Q'R(\)`*p+{-q.a/3@,Ed ,KU)(Rm@' Xsx/`3{}(T*|b  & D F) jzfp@T!* |~  x |~& 3!~"3#M '0 *?, |f  | c ~ 1?!< #s$=(,p-H#) 0B  p@`x|~     00 !b"3$0%`&,@/`102p4X,68F:~?x@|A~E HdNcCG0Ucg@0 np{@`0 Gc3<0`8xq|~~|p` c| F C s  ~8@` ~p #c$q'<(d)F*O+s,c-A.c/O0|1p0394[5~6x7l @cD|EFFwG| @K`OSxV~` dpff3ckx osysa`@Fa@pH0@s~0s 4F5f6|7`9D@Ep8 HLIdJfFGP>R~S|UxVpWxX|Yv]x^|_~c n0{?p 80<|`|4gONgcCy1sapy93cG> | xx9"G %3 -0~1|2x3`5a9:|=qAEtFIMN`OxP|Q~ST~W|Yx^?_bpfygp`90t pFl|x pX@0dNO9`0    <~sCg<`9"q $d%s&0(p *F+f-| 03`587@9~=8?`@@DH~IfJL< TV]p^~_OcCFOgn@p`p<@?p9Lf3pd67'C,GLp`1  0 c FD0! x`0x  %Y )A*a,A-04 5p6`7c8g9<?GgHK>L]celo{@`00 Hf1 39g 0C$Cp? " )  6H|@ @`0"p%3's({)*@,`.p/01p408A>BC|D`GHx@?L|Ma?PQpT~]x^|_~c n0@x@!x"o#O$N&<'0*a+y,=/`0x1?4p58A|BpCC>FxG`0K`C A?S^cb|FdCOg~8@`n@`qt~gfg $g%f)g,f3g6f8gBaCC 4F`@NxOpCR|SxTc^?_bpdyfygp`9qt~|  |"v#s%x&< ,</1|2p3A56x8A`D~EpAH~IxA>M|NpCQ~RxG]p^~_OFOLgn@p`p<  "#y$@%L'N(^), 14 8ACEGIKMPRT]celo #*0H0`F0  x0 @`@`0  cs@xF*`,H /x0F1`3|4c5@7=@>xDCEc#GcG0L|O~ WY~i` fFnL`r@}@00@0@0p1    1qcx L& )+0,1-03@4x5a8|=AD>HcAJcK~LOYe@ff8&NFlsac< ` 0av~ L`fC0cd`0|1AxpH CgdgCg`p|x"f$F&(C)@*C+G,F-a.f/F258p0:`;?> HOWY\`L`f&Cc3`0 sv~ |  C<x  #0$a%A&C*1+A/0~4x Z3103 F3 Fc`0kq0v%')+15aen ps@0 p0"@#`$')c*s1@5C@Dp HJOQ STpa|eph@`s!a#^`Lf3N`2$ (  |` @p"1#& (g)=+8,x192q3a578B~G@I` @SUV~^@_`a?d87`jy?0oCc3@`cg 1Cf 0@pp|ql@1  1N3`ba`'g(?)84576d8g9|BDp O Q@Tp\xO^y<cnkpoqp~@0 `x @p1Ap{ v8 p~pH |xL"f$F&(N)L+X,.`/00`1@3x8|EHJ OQS]ardpi`@Cqr|G}1~a{ c`0`f@0@? 1 0  #0$a%A&C*q-/ 6 ae0`3np ag<xH1`C|G1%'*b ` 0 Lf3N`!$g%+?-O.g/32O3<M@OQ`0SYa|<`g~`csp@`|c@0`pp`0  sL{  | G ` F1`@0()|*G+`,F-1.x/{0|1~26g8C:<?@`@G@0RSsTcUs \]d0Qi3fqb10 }aCpC<x Cc0fcDBALc0    ),<AGT`d`0  fd$`%8 '` *`+ /2f?@@`BH@JpK`@MpO\PfQcRfScTwU^a@`cp`@fpX\fcfcnw^ux`00`G7`0$'*,0.@/ 2<3O4L586L 9H0>ExFFGcHq1?Kp9MoR@SpCXf^xF`caq0?dp9fojl@mpCf{fC  `>0L3D L p~3"@#`'@(`)8-/ 1263H:>|0B`DGHLIxJLL0NOO|RUW^|LbxLe0gOhloqvx}~n~F0|fH  8 @p?fl "#l$8'A()02~3C4@6`8p>8DlD01Ky0MxNOAR@S`U0V|^=G 01dy0fxO@jl@`o0p|u{8F3cCa`ac03cAxq?s#&.0/2036 EHJU0VaCY_cjo0aCsc|`aCG qL?  Wqv0H 0 `@@08lF 8`@0 x %'0(`)-.0@05@0:~C@Dx>GfFLRUWp\p_0``@c`e@gcksnp0rp`pcsC3vv~p D&L0p CC p>c  p @ `fmLF 8p $0%`'+f/0c1F3p 6x9:=<>f?CBsHJp@R`XcY~\L`layefj@k rtO$Dyy8FHa~`G0a`a  0 yx"`#& +L,@/p0D1c2805p:?@yAOCxDLHvRW`<\31  e ipclcrgLqr12d`a`0>a@[@a@`8  A ` 0 Gs@? |!G$@%`&+- 509c:?ACpACFsG_C@J`Upi  s8 8 9@OIO@` 27x{ c  g3c3c|'@(0)|*v+c,F/00`3A`0Dp0Fp0Hp0OpS0WpX\p `eh ko0{~F0p`xNsFp`  fc 0L0 c"`#p$x%l&G(<)x*q+c,w-.~/N03a4c@f}N3 qgL0`    %&1'c(g@3BaC`3 GfHc KL OXPcQsRxS|T~U\]p@ 3  CGNT] ehn|@ ` p 0x|L|f>lf3#~$3&?'3+,<-0/2L7 9||f>s y O | g >3 !@"`#x$g%269  !#L%O'@)@+@-@/@:!#y2p33036p9#s$N%@(,p-8/02g3f5F6G7@9#&+ 599 2|*8HSels"ɤ&E-27=CJPV\naiehb. 1131%21& ' 2 (&(!젉 -3")%0/ 2 &* 2) .4 0䬠/+.򠂮,.03*423'311#-$᠌,40012젋443 .t@~ $,7>CHQU?^ae9mt{%:fD'j$.*&+./&   ',,  0'%+-*0蠑.С0 𬢠*堒 客𡢠 䠓(-* ($!,0/-0$%/-䬠,ɠ - */'-+$0.)#&+0"#%).$0./O $@DQfuz'+2=aMP\immzb6cv w!)/3:AGNT[af#jmpIMN9I @0筠&1AL '(?H !)2)"!3O孠NQ𠄮 :H :B*B;:CF7 K%+H $,M*4;+"$OM,-# P1砃M쮢-QQKJ<3=I .@NM>PCɠ /=JJPKN9DM?5LMD6BE8FOA0O#QQ(+<24QGPLN嬠GMNBOPH砃OPO!c\\iijг г`7\dSf7dSf7dSf0b5d 8 ` . %  i!8``;?Bi8 gLܴy0y myʹȘʹʹ׍lȹʹlȹʹlɱl H $ j h $`>La>wa>a5` r& n  K Lܴ KXHTH`  K Lܴ KHH` l j ly8hhLi,yL yi~0,^0 `0X %&npU**UU) ) U|'< +<,|.yQRUTWre2jr*n*r**rBr**3 Tt!T#*,.QTUWXgL\9^`agbefgijUw|~+z~NN~z+?Uayqyaߟ߸UU<`|f| *!#U,.QRUTWO]gAFasbgij*wxy{~Ug*LasaL򦂧*xLx@ x U!#*,.QTUWY?3]ceijUw{~*OL U 9UUpyq U@JK!J"@#U,.QRUTWXyYsZf\s]y^eF7j*w{~uW_E`*U@AC@C @ *'f(F*F+f,.QTkED E%@&C-@.DREWDpEtDEDE0X CUEbc* #KLUq?~7'(*'(sH6>+z~ff~z+?g[C{GUL Uc[*ONL*msuW_E`pspBcoAu_Unp*jz*|j*Uu5uU  ?,01?256?@AxEI`JxL`MaNcOgPsQyRxS|WxXyYsZgO]_*mnxOgswy9<?gsg?UxsysgO?y>O?Ocy*~ ` p x |~+x,`-G/0p1`2G5`6p?@xAGH`IxJ9< G??UVyYs[\~^UlmxnqxrrguOLxNzO|}~fOxqO@*xUxsgO?|y|p9cspU.056>?x@BEG@IKLfOR`FT`UpVWyYp[]^*klxmoxO|`}90gOGpy@Ux|Ogsrx?;GpL p|*_ .x05x=>p?B0JK|930PxQ~RVy9YC\p]|^UjkploqxrsguO|g~srcO?18Gp*pU8~?Ogy|~fx~|s~ygOU~ | x p .G0856G<0>?BE?>80L8<89U8?_*i0?oU_^_U0??<>?3?@?````xxxxxxx`p@`@`pOx?@@?<~@`pp0p0p`1pa1pppp`|p`cx|~~~|x``@0p?xxxxxxxxxxx`p@`x~g@@@`?x||x``````xx`sy<`?@pxx?xxxxxxx`~@<Lp?~G~p@|@`?pxp`@?|@?`@3 >@>f`p|<~||x8  <xpc|~ ~`~`|<>pxC|~||x@p0p`x8xAx?xGxsy?p?fp|`x``@ `p8 @c@xfw3x{?|p |v^ p `p0~0N`L` 0f@@|_`AsOcNfwpxp`?C0`@3pcf xpOpOg`> ?3@a``>>``~~||xxxxx||~~`p@`0~O~N?x f33@p?xsr??~|~gN|p@?`Lp0p@@@@Osg@7NXp0{?|?@?l]`9fFspL@p?8 dx|p` `qxff@?`g?v`Clpypp0s30s3`c8`> @}{07?ss``s?`?`pGOc@ `@@ ``@`s@?x~|x<~||?xp` `8xl8`` www`c@?p``|pxx8~~?@@O?`AC`F ?x~?`x?x`@|G`p`pxp@?@@@?? ~| `x|~~~~~~~|C?~G?~|Oxp``@`@x@?|?@?~?pp?pp@@@?@>~@@ ~? x|||?|?x?x?||p|`pax`@@~|xp?`08p@Cx`|xxx``?@??~||~~G>@```p`pxxpxp`@?@?`p{|x?p@@~~~~~@@px?px`p?x|x@@@q~aLc@`x?|~@```@@~x```px?0>>xp`? 0  0``CC1p|xG@|~@yg0`0`pCxps``?x~|xp@@?@G?`g`scx~@`x|~??~|p?p|@`pxx||||xxp?p@x?@?````xxxxxxx`p@` ``#pGD?xOgxxp?`@```|@?x?xp>@~`ppxxxxp``pxpcdX `p8 @c@xfw3x{?|pp@?@;@1@0xLf? @p3p@`~~||xxxxx||~~``@@~?>f@O?@@```x9x0PpC`@L`?`Lp0p@@p fN3s8y?3< p0`@@@```@``L@`Ao@px0a4@`8@@ `0P @f|f|~~@@ `@@<F9bq?`pG~@~|apq@<@x~p~x@@`@x@?|?@?~?pp?pp@@@?@>@?~xpppqp`0@xpx|~xp``g?>>0 @x~?~?x`|x?p@@~~~~~@@px?p`@`  @?@3xxxsp?`@`pxxp?xxpp|x`80~l0~@||~~@@xp0  0``CC1p|xG@|~@yg0`0x~?@@```@@?~x@@@@`?ppx|~~~@?@?`pxxxp`Lp?~G~p@|`p?`xp@0x@1~`p|G@ ~``Lp@a0  @x>~@@3` 0@xcpqxcp@A||G`p3` @?`?3|  p@@@@@@@@@@@@@@@@@@N|xxxp@?p@@?x~@?@?`````@@?~x`~`8F`<8`8x@x@A~`ppx_x`x8Nx{xO8`xxFvn_; |v^ p `p0~0N`L` 0f@@g@@@C0`@pcf xpOpOg`8`pp @}{07@@@@@@@~~|x0Np`n`;`?L?`@O@q? xx?|@98@p`<<@O@@@O~|?p@088 c0`` |ga93`0@ x`~papaps`gy@Os<? ~x >?@g`O`O`O`g@?3 3`@@??`Lp0p@@@`p8x@||c|A3x@Opc0  0``CC1p|xG@|~@yg0`0@px|xA~s?~~~~cxx|x`|p333~@`@?`````x||x@@@@~x`@ @p?xsr??~|~gN|p@ <xpc|~ ~`~`|<>pxC`~~||xxxxx||~~``C1`d@q@@9N@9?@8`s3p`8 ?L0~q~q?`Lp0p@@x~`0C?p3~gxGs`8?`q`8p`p8 @c@xfw3x{?|px@qLg~g|G~~'p`8xp?@C|xc`|@088 ||?~~@x@<@Gf8 ~@>f`p|<~||x8  8xl8`` www`c@`?@?@ ``@`s@?x~|x<~||?xp` `> ?3@a``>>``x?|~@```@@~x```px? ?x~?`x?x`@|G|x?p@@~~~~~@@px?p@?pgxxpppppx|~|p@@@0  0``CC1p|xG@|~@yg0`0|pC?xg||p@~xx|x>@`@x@?|?@?~?pp?pp@@@?@>l8 `@p?~`pp`?`@>@|p|0>8 |~?@?~@?@@gxqppx`|~?~|x`@@pxpG?@O?@_@x|~?~?x@G~@ ~~0?@?@?`?`px@|s`a~0@`pOx?@@?<~@`pp@?p``|pxx8~~?@@O?`AC`F>@~`ppxxxxp``pxpc`@`  @?@3@`?pxp`@?|@?`@3 >@ ``#pGD?xOgxxp?`@```|@?x?xp>@```p`pxxpxp`@?@?`p{0>>xp`? @pqpy``@@`p8 @c@xfw3x{?|p||?~~@x@<8xl8`` www`c?ss``s?`?`pGOc@ `@``L@ ``@`s@?x~|x<~||?xp` `> ?3@a``>>`@p9xgx~@xx?f``?Ox`x`~~||xxxxx||~~`p@`0~O~N?x f@088 `|C`Opxx|8~xLOp@@@0fppypyx|~c~s~|x`?pp??`Lp0p@@ @@@0@@px|||pp@`@`@x@?|?@?~?pp?pp@@@?@> ~~0?@?@?`?`px@|s`a~0>@~`ppxxxxp``pxpc@?````xxxxxxx`p@`Lp?~G~p@| ``#pGD?xOgxxp?`@```|@?x?xp>@```p`pxxpxp`@?@?`p{`?p|~|`p`?~@`x?p`p?||?~?||x?p@@~~~~~@@px?px`p?x|x@@@gLqfLaLc@G?@O?@_@x|~?~?x@G~@p|~@@?``gpx|~~~~~|?ppa`@`  @?@30\x?xx|~|||||x~g@@@`?x||x@`cg@cg@cg@c@g@|``````0  0``CC1p|xG@|~@yg0`0l8 `@p?~`pp`?`@>@|p|0>8 @@gypx?~@``@qppppppppx@` xxx|O|gg@@0fppypy@y@ `<~p?~`? pp?`x8xAx?xGxsy?p?fp|`x``@ `px?x?p@@@@`f`&0ff00p0f'@088 x|~c~s~|x`?pp?@Gf8 ~@ <xpc|~ ~`~`|<>pxC?`Lp0p@@2f@~x~q~x~|~ ?8@?`xyO9Hy`N`3|@`?@?`~~||xxxxx||~~``pp`p ~f  x@y7~@pL@p?8 dx|p``@`  @?@3@?`pxppx~~O~@`x?@p?>8p0 `0\x?xx|~|||||l8 `@p?~`pp`?`@>@|p|0>8 x`p|px|x||x?@'@`x|~~~~~~~|C?~G?~|Oxp```x?|~~~~|x?p```pppp``x@@@`@@@G?@O?@@x|~?~?x@G~@x~g@@@`?x||x`F``C1``0 0 @@@@`pOx?@@?<~@`pp ?x~?`x?x`@|G0  0``CC1p|xG@|~@yg0`0@`O`o`?p?pO`opp|@````@@?@x@?|@px|~~xx@`?pxp`@?|@?`@3 >@|x?p@@~~~~~@@px?p`xx||||@?@?@?@?`p@`?p?ppx~@`x|~??~|p?`Lp0p@@ <xpc|~ ~`~`|<>pxC@`p~@y@a`8>l68x pF`8~3@y} @{a  |v^ p `p0~0N`L` 0f@0fppypy@``www`cC0`@3pcf xpOpOg`@0 0ps`A@`pF9syxy`|pxypx@x_0`> ?3@a``>>`@p?xsr??~|~gN|p@ ~8<8<8<<~<~<~<~<~<~<~<~ @y@ `<~p?~`? pp?G@p?xsxo|O|O|Gxkxp?@8x@p@`a`?` @O` &`~~||xxx||~~`g0f8dxLxLxx<p|`|@`p8x@L~>~?@G?@O?~@ppp?p?@?|?@`@`  @?@3~@@ ~? x|||?|?x?x?||0\x?xx|~|||||>p@p`@?`ppxxxp```pxxc@Cx`|xxx``?@??~||~~G@G``x|||xx`G@@?~|~??~p?|@``x|~~~|||@?p>@```p`pxxpxp`@?@?`p{`x?|~@```@@~x```px?`x~x`p|px|x||x@'@`x|~~~~|x`<~a~s|sxxxp@c`O?@~t?p?```ppx?p@@~~~@@px?p?px|~~~~~|xp@?@px|xA~s?~~~~cxx|x`|p?`Lp0p@@ <xpc|~ ~`~`|<>pxC0fppypyx pF`8~3@y} @{a |v^ p `p0~0N`L` 0fpF9syxy`|pxypx@x_0`@``www`cC0`@pcf xpOpOg``LO`F@xyp``?@0> ?3@a``>>`@p?xsr??~|~gN|p@@p9xgx~@xx?f``?x`xN @```@@p<0 > <0@8x@p@`a`?` @ `|C`Opxx|8~xLOp@@@@`p8x@L~?@G?@O?~@ppp?p?@s?|?@`@`  @?@3~@@ ~? x|||?|?x?x?|<p?|@``x|~~~|||@?p>p@p`@?`ppxxxp```pxxc@Cx`|xxxO``?@??~||~GLp?~G~p@|`cpp|~~~||p@c``?~??@@>@```p`pxxpxp`@?@?`p{`x?|~@```@@~x```px?`?p|~|`p`?~@`x?p`?p?||?~?|@@=|0~N@?~`|`x`x@?p`@x~?@`p`@~x<~a~s|sxxxp@c?`O?@_~t?p?```p}p|~@@?``gpx|~~~~~|?ppa@px|xA~s?~~~~cxx|x`|p333~@`@?`````x||x@0X$9O|<c>f:L3~||0| |@  cc3a.0s1379p:g;cGIsJaK`RcUaa0fci`03aysa`@`pYOF133~79>:fICLPf?k3n{p?g` .0~7 IL?R3Ua c? i kL y`{y`~a8|L| . 1L393f~i0k|0~8 8~;G`c 0>133~9>8I>Jfa kn0|1L79F:F>IxJLLx@Nn L x`@`p0p 0 0p3qO IN q .9Ln3>qca33>0@33'x(L*x+@,733IxJLLx@Nk|La3cx` |'p*q9|IpLqi30cq~3xl 'q(3*19x:l a3ax`~x'3(0*,9xI30LNi@``xx0303L`yc'*7`9y:cILi GLc10f|%p&@+9Gp@kg001qX3> <f8f<%'q(a+7<8f8;<GIqJai303OCyl assM?8 éS?8 é򩔅pppi%%%`@uV 1@蟀FF _ = * WSJ rG SS n JnS K L%/HH` k K L%HH`ݰﰰH *h8 - L% =QpiLѰ,%  =` L% L% L% L% O *Qp - OL > *Qp - >L QpQp ` j L_ ӭ U) + > z |  ( | I + ( |# ( |  g >`ƠL 2d@d3a>eAcCcAcCc3LaA^`3haAz`3aA`3aA`%  z , l _ W n > ± YL$ v >  L% y +p '  QHLG9 AJ n L% '  FH Ah ݪLH Ah L n  gp ȱ  ˷ #  AD n LaL H  A "p`L% _ ӭ |  G > I + ( | Uhr n G W >` iq`8i˨稹ϺX`к`˨@˨@˨ {di rL r" e $ e` L$Ɉ /к 0 Q A(`ɮɰɺې )8`` _` j h ^ h %`Ji `кк Ѳ *Q :z8`z  j ײ` u Ln W Hi h P LE $ к  ` @0`  :L 2d@d3a>ezк>ɥ$ Ѻ JmzL mzкJzj)Ii `L _ +p> n L0. LTD n LKʊ) K L aKRL:˨ ް䰍)12)͜(89` q - Z#ܰ ݰ 鰰  `߳ߵ  Ƚͨ) ȭȩÑȩ'ȩ ' )ذȊٰ `JJJ `)pJJJJ ݏ`  l Н H 跕h(`JJJ ) ֱ)`ްCFGBϭ ,` l 緩I Z 緢9JJJ )Hȱh d緊Hhh`BFG ްCϭ ,`lHh` `  ɲ ɲ `ذ)ذ)nٰjذ` ֲذٰٰjذ8iH ذذٰ ٰٰ h q RH ٰ ذ ذ ٰh q ` Ȋ8j`h8`` ó`  ``8  `8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL L? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8RLnSOS BOOT 1.1 SOS.KERNEL SOS KRNLI/O ERRORFILE 'SOS.KERNEL' NOT FOUND%INVALID KERNEL FILE: xةw,@  ȱlmi8#)!) >dLԡm#i㰼m#iЕOLԡȱfg hi !dLԡ憦  Ljmkm l y`2 Lԡ8(Je稽)ʈ@LPROx :(`+L!'L!i08` $6JJJJ6 ƹN$`)p##**LSׅکP$ # :LdөЭ iԩѥѮ# ##L cLL L"%%L# j# ѥ#H# #h` \I꽌ɪVɭսɖ0սɖ!ɖ 꽌ɪ\8`꽌ɪɖ۽*ݽ%ݙEۈзЮ꽌ɪФ`76$\8$9867I$i$88 8 K :9 W :8н :$)* 77` ݌HhHh V ꩖݌$ ݌ `Hh݌`80^݌Hh  ݌ - - -   EEHJНh , - - -`HJН݌h Hh݌`8`0($ p,&"!֠LsԮ# L# .ҥҭ"%&8  Hh# j<ԥ/8`# j# ع&0 &`%8`" %# j%8`  $LhR  L+ %` '  L5+ LN 8 n "p` H0i֡h *** 0ޡ``PR ˨ e ` ' (/d ,,,`LoLLL `H xh G`xL x `xL LH uh `````@G%Ll 8ii  O $z 8` 8ii  O5 >z 8`[ 8``H h h l`xL h`"G CUs'/2(($(:BDC7)*EA,2,+HI/@"18 ;-!=C&:H0B@5C5;1@ADI;>AH@ET mwoxvlu~6?HQZv.6JRfn+nz{o|lzmvnw `H0 @ u QL >ɥ$Ʉɓ L! Jm>LC m>QЮJ>j)Ii ``3b0X`3c3Ce` ̠ )ͺȱ ٿ``̮̮׮ϯ׮ů樝Ap`Ap`  `d u = Lj j k k` o p p`H E  ĩ 0LH E  ש Oh GLz3`3`1a3Ib`5a3Eb` !"#`*$L07 #L`HFKh98``LMDEFHF'+/DEGH #88 n 8`  #! 8` 8` # u 8`HJJJJ ơh Ρ8 nh@hA qLnq) 0:i` ĩ ( Lz+P nL+> nL> nA ˪L uH rh rY > W r n LL _ K L/o oi = "p`} uu`  ʫHi ǫh`d ׫h d `$,ګ嫽gige I``H 8`HH +phh n > r n  K L e  > "p`  > "p8` f L qL2f  լ3d   լ  B` 5B` 8T*U ( qacc30fyc1`3fqsac`hT*U:@ԪժժՂϙƙÙΙÙÙ晱懃ƙԪժժՎ ? ? `  OH $hLY (`  y `YNL L 6f  걠 >L  y``ע ` j L g ӭ U) * U45 z | _ _ G > I + ( |  - (! | gL>> ɶ 8 ׶LE iH hL 2d@d3a>eAcCcAcCc3Wa5\f3a5f3]a@ef3fa@nf3oa@wf3xa@f3a@f3a@f3a@f3a@f3a@f +p n ˪ L+ % E  ݪL "pL ˨ +p # ȋ L  ʑ  gp n e "pL ˨@ +p˨ Ȓ L  8#W$ﴩ 9:"   (LδM2 -M2  ꭬`A I̬`3HH3c =>  *  1 )!"! hh3` `8ﴈM 1 $`9:8`` մ  8`` ;Hȱh` `iM 1 մʴδ8` $ "`` J [M2``2 * +p0 Ř  (L L+ Μ ʊ `˨ J  յά J ; 12ȭM` ;쵬쵢 = 1` ; = 1` ; JL1 ;)i˨樱``(LL8`` ɶ L ɶ ׶ j LE LI>F LI ` >LGL3A W 6LP  L  մ  細L L: $5 `3e CK0x|~~|x0W[âXʢZѢ\ y3W *' ' I 0Ye3 & y詢  j  W | 3L>o4h?*??jWY -*4:>INS^cgkpuy|Tm6}U@A٢  ڍY!$7)-15'19=@&PCj_).Q`":RakQ2"lbabma;M.qVnD% o?5d:,4GEk-q ;\hCjq ;05kfclﮠVT1Z Zg@ cUY16 2 jmp[kG$bWEgHXf[qVfknIqIgJK3l 7FXA=@6\&N7m%l#L=gmPcppg2(o`(l^jm8ZOeN!koleMi(SLH^A_m96fj]0+iTUPci`neW>BUldYlkVZ^p]_pmo_ &/8AJS\enw  O BC,T,Q W Oɠ5 i B6 i$ B7 it B8 i B9 i B W Bj@BHBAh Bv@ H Bhv@ Bv@ OɕɊޢɈɋѢɍLRAɛL @ɠнB8 5 B8$6 B8t7 B8齍8 B8 9 < B Oɍ ɛ* K L@ B A AA  AH h ,P P `4A CJJJJ AA4A AB% CL@ Wv@0D] BI BLM@BIBLM@ B A B &BwB BLM@) ɺi` B A B$t &BwB BLM@ B A Bt &BwB BLM@Lev@BBAB`A`5   H BhLCBBALDCBBwB aBwB OɕɊBɈɋBɍɛɘ`8BBB8BI8i8BB BB0 i C% BB8wB# C BwB8B" C BC`B% BL "$`B$% "LBB XCcCȹCCC }C` (KC $(ɠkCBȱ(ɠ($ pC(Ȑ`I@`)`B CLC UQ BLC ICLC %H BhLCLC,sC$߬C pC$( ($LC`CL{0 ;DO_0m$2]04Kdgkry -369JuJvu8}8nvi{uKVxKV>V>v̭znǠnǠR{nvn!D!W}ynz_`|}EEK˭>l,lKɠ]l]>]ˠ֭]ˠ֭DWLL{Là`X`yŠnvϠzϯ٠aIIa^ͭ{Ӡ|avb7bKbb|baYy_|9D9WZ.ZKZa}ĭ}ĭsjfstGF  ep[}נtrdt[Š}nvz{llyyΠ٠y|حxOj`|YtryؠЭw-pΠЭ;o|Ӡ4mЭeqNRح<<{uΠv}Ġ@RѭRحpqMoPqPà{^ȠΠ_Ӡؠe|{}ͭ r`=\C?>ȄЍɍ>ȍ?@~ 0 maaaLh 0-bH)b%bzT08`1b  ,`, `L` D  ȱ 8 ȱ `,$ ȱȱ ȱqmge g) ) )I I 0XƢЫƢ$ `II) 0X 8eƜL ȱ` D  z $̆ ̊  ge g0XƧz Ɯк`0X ` % ) `Ș`,T ,ULLQ n hheeHH)I` K ģ)Eġ %I1ģ %Mn 1ɽgi0ge `橱`)i L )R m ȱ R @0)m 䙐 =H`h5D饫H R ) {Jʎ ho R 8Ʃ )|{l-, H   h|  %    Mв%*ɢɌ( 6  *,,Y ** *, *], *I   ,! j `}`hh HH`))lJJJJy eȑ`  (`ig/䙐  ѐ斤,``,I I`' ` %-LNPhh 曪񄚭b Wl6O ONOqN8Nm6`    ` `hfx` )hJ`xנi@(igigw0@?`b-Rb ӱ` i ? ?j q q r i o 85 :w q5Liɠ Q~ MLhɆ cv dv i0ܭevݢigv8mʎ8mifvi0gvhviv`cv`))`))`m`]P۰-)}Ȧ8iʨ80 kv80 8`kvݍi ` P0ɠI }` ۱ , 0Hj h`eZꍥi썥XC80鍨8`kv퍊i(덪rv-퍍  ` (08@HPX`hpxH h@`8X0xEazzH z LhL~iq X Ġō :| ɍL r  p Lhs X Ġԍ N| ɍL   p 䍍 Ljs X Šٍ> >| ɍL Ġ  p 䍍 LjL} X Šō :| ɍ č Lj ̤Ƹ p 䍍 Ljn X Šō :| ɍL ɑL   p 䍍 Lj X Ǎ p LjˠĠŠĠŠŠŠ%ʊ $(ɰɺ Ӡҍ hhLj ` ξ ɍɛɘ` X ٢ ``>`,L9 NNNNNNNNNNNNNNNND8NNNNFFNN68N(H(H((NNN(N(((((D((L:(8H(H8<(NNNNNN(8(88H(8DH8D<8H88H88<8HHC+L͎\;l|9͜ ެ) 9UI+,YfscGn p{}DQ^7 ? 8333 3 3333>0303333 30 ??00?00 33>03 33?3333333>csc>c33c3333333 333333??333?333?? ?0 ?0>3>3333>033333300333333330 33?000033CGOscC33333 ?? ?03333333N33>33>00>333>O333333333333333L3333?>3333O3333333333?00000003333338 ? 3333     ?g =='?(??PI.PIANO \ X  Ǐg =='?(??PIANO.C`\ X  $                                       $ $g =='?(??COMMONC#Y : *======================================================================* COMMON START OBJ COM_ADDR *======================================================================* TUNC~ GEQU $02D5 LETTER~ GEQU LETTER *======================================================================* MAD EQU $04 TONE EQU $A0 DURA EQU $A1 D2 EQU $A2 TXT_PTR EQU $F0 NAME EQU $03BA SND_FLG EQU $03CF 0 = make noise 1 = keep quiet KEYBOARD EQU $C000 KEYCLEAR EQU $C010 GRAFIX EQU $C050 TEXTMODE EQU $C051 FULLSCR EQU $C052 PAGE_1 EQU $C054 HIRES EQU $C057 WAIT EQU $FCA8 *======================================================================* DISABLE~H ENTRY LDA #$F0 LDX #$20 BNE ~ always *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ENABLE~H ENTRY LDA #$EA TAX ~ STA HELP~ STX HELP~+1 RTS *======================================================================* WRITE~ ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * A = paragraph #, returns all registers disturbed *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ASL A TAY INY LDA (TXT_PTR),Y PHA DEY LDA (TXT_PTR),Y PHA JMP MESSAGE * E X I T * *======================================================================* SPACE~P ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR DRAW~SI *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SPACE~BAR ENTRY LDA #$A0 JSR KEY~WAIT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* WIPE~SI ENTRY LDA SPACE~ICON+1 SEC SBC #1 STA SI~TOP ADC #8 STA SI~BOTTOM JSR _0 JSR FLIP _0 ANOP JSR BOX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SI~COLOR ENTRY DC H'00' FF|7F = w 80|00 = b AA = r D5 = b 55 = p 2A = g LEFT DC H'1F' 0-rel incl left XBYTE (0 to 27) SI~TOP ENTRY DC H'B6' incl top YPOS (0 to BF) RIGHT DC H'27' 0-rel incl right XBYTE (0 to 28) SI~BOTTOM ENTRY DC H'BF' incl bottom YPOS (0 to BF) LMASK DC H'E0' mask for leftmost byte (FF = default (60)) RMASK DC H'8F' mask for rightmost byte (FF = default (66)) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEY~WAIT ENTRY STA CMP+1 WAITL JSR KEY~IN CMP CMP #0 from above BNE WAITL RTS * E X I T * returns EQ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEY~IN ENTRY STA KEYCLEAR W INC RANDLO INC RANDHI JSR FLIP CMP ADPAGE BNE K JSR DELAY~ JMP W K RTS * E X I T * returns NE *======================================================================* DRAW~SI ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USE EOR,NOMSK LDA #$B JSR DSI_1 JSR FLIP LDA #$D DSI_1 STA SPACE~ICON+5 LDA #SPACE~ICON-4 LDX #>SPACE~ICON-4 JMP PRE_DRAW *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SPACE~ICON ENTRY DC H'4F B7 65 09 08 0B 0D',A'SPACE_ICON,SPACE_ICON+$48' *======================================================================* OPTIONS~ ENTRY BIT KEYBOARD BPL NOKEY LDA KEYBOARD CMP #$98 BEQ QUIT~ CMP #$C8 BEQ HELP~ CMP #$E8 BEQ HELP~ CMP #$8F BNE KEY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SOUND~ ENTRY LDA SND_FLG BEQ SOUNDOFF LDY #0 DC H'2C' SOUNDOFF LDY #1 STY SND_FLG LDA #0 BEQ KEY always *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* QUIT~ ENTRY JMP EXIT~ * E X I T * *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* HELP~ ENTRY NOP -> BEQ NOKEY always NOP STA FULLSCR STA PAGE_1 STA TEXTMODE *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SPACEB STA KEYCLEAR WAIT_K LDA KEYBOARD BPL WAIT_K CMP #$A0 BNE SPACEB *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #0 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* HGR~ ENTRY STA HIRES STA GRAFIX KEY STA KEYCLEAR NOKEY RTS * E X I T * *======================================================================* DELAY~ ENTRY LDA #$FF JMP WAIT *======================================================================* NAME~OUT ENTRY LDA NAME CMP #$8D did bozo tell us his name? BEQ ANON no, so do nothing M ', ' yes, put ", " JSR DO_NAMEOUT ANON ANOP M '. ' RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DO_NAMEOUT ANOP LDA #>NAME-1 PHA LDA # data, X=type STX C~TYPE STA 0 STY 1 CLC ADC #4 BCC OK INY OK STA CR~ST STY CR~ST+1 LDY #3 SCE LDA (0),Y STA C~TOP,Y DEY BPL SCE *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* C~START ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Larry's world famous UNCrunch code *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STACK_RTN EQU $22FD SUBS_START EQU $22FF DEST EQU $00 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$60 STA ST2_LEN LDA CR~ST STA LDA_CR+1 STA ST2_LEN+3 STA EX_STAGE2+1 LDA CR~ST+1 STA LDA_CR+2 STA ST2_LEN+4 STA EX_STAGE2+2 TSX STX STACK_RTN JSR LDA_CR load length of table STA ST2_LEN+1 store as immediate byte CMP #$00 if 0 then no stage 2 subs... BEQ _50 ...so skip all this nonsense STA TUMP JSR LDA_CR load and save last del STA _66+1 JMP _61 _60 JSR LDA_CR loop skips table _61 DEC TUMP BNE _60 _63 JSR LDA_CR 1st sub del STA _65+1 LDA LDA_CR+1 PHA LDA LDA_CR+2 PHA _64 JSR LDA_CR _65 CMP #$FF current sub del BNE _64 _66 CMP #$FF last sub del BNE _63 TSX STX SUBS_START LDA #$A0 STA ST2_LEN disable expand stage 2 _50 LDX C~LEFT STX COL+1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_COL LDX C~TOP init to top of column *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LOAD_LOOP LDA #$00 STA FLAG JSR LDA_CR load byte PHA save new pattern *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PHA_RETURN INC FLAG JSR LDA_CR load count CMP C~BOTTOM check for single bytes BEQ _01 BCS _00 _01 STA TUMP normal (INDEX <= BOTTOM) CPX TUMP INDEX - new value BCC _19 new value > INDEX ? _00 INC LAST_BYTE+1 for single byte store LDA LDA_CR+1 reset crunch pointer BNE _05 DEC LDA_CR+2 _05 DEC LDA_CR+1 JMP _20 _19 STA LAST_BYTE+1 store end count _20 PLA reload new pattern *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LOOP JSR STU BEQ EOC *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LAST_BYTE CPX #$FF BNE LOOP BEQ LOAD_LOOP always EOC INC COL+1 end of column LDA COL+1 next column CMP C~RIGHT end of screen? BNE INIT_COL LDX STACK_RTN TXS RTS QUIT! end of screen *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA_CR LDA CR~ST modified address INC LDA_CR+1 inc storage pointer to prepare BNE ST2_LEN for next byte INC LDA_CR+2 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ST2_LEN LDY #$FF check stage 2 flag bytes _22 CMP CR~ST,Y BEQ EX_STAGE2 DEY BNE _22 _99 RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* EX_STAGE2 LDA CR~ST,Y STA STAGE2_DEL TYA ASL A CLC ADC SUBS_START TAY LDA $100,Y STA LDA_STAGE2+1 DEY LDA $100,Y STA LDA_STAGE2+2 PLA fix stack for JMP return PLA LDA FLAG stage 2 thru ACC or X load? BEQ LOAD_STAGE2 normal BNE ACC_PUSHED ACC was pushed *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_COL2 LDX C~TOP init to top of column *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LOAD_STAGE2 JSR LDA_STAGE2 load byte BCC _11 JMP LOAD_LOOP _11 PHA save new pattern *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ACC_PUSHED JSR LDA_STAGE2 load count BCC _51 JMP PHA_RETURN _51 CMP C~BOTTOM check for single bytes BEQ _21 BCS _02 _21 STA TUMP normal (INDEX <= BOTTOM) CPX TUMP BCC _29 new value > INDEX ? _02 INC LAST_BYTE+1 for single byte store LDA LDA_STAGE2+1 reset crunch pointer BNE _15 DEC LDA_STAGE2+2 _15 DEC LDA_STAGE2+1 JMP _23 _29 STA LAST_BYTE+1 store end count _23 PLA reload new pattern *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LOOP2 JSR STU BEQ EOC2 CPX LAST_BYTE+1 BNE LOOP2 BEQ LOAD_STAGE2 always EOC2 INC COL+1 end of column LDA COL+1 next column CMP C~RIGHT end of screen? BNE INIT_COL2 LDX STACK_RTN TXS RTS QUIT! end of screen *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STU PHA LDA VADDRL,X STA DEST LDA VADDRH,X CLC ADC ADPAGE STA DEST+1 PLA *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COL LDY #$FF PHA *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* C~TYPE ENTRY STA (DEST),Y STA=$91 EOR=$51 AND=$31 ORA=$11 STA (DEST),Y PLA INX add another byte to the pattern CPX C~BOTTOM bottom of column? RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA_STAGE2 LDA CR~ST modified INC LDA_STAGE2+1 inc storage pointer to prepare BNE _54 for next byte INC LDA_STAGE2+2 _54 CMP STAGE2_DEL end of stage 2? BNE _90 SEC RTS _90 CLC RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STAGE2_DEL DC H'00' TUMP DC H'00' FLAG DC H'00' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* C~TOP ENTRY DC H'00' C~BOTTOM ENTRY DC H'C0' C~LEFT ENTRY DC H'30' C~RIGHT ENTRY DC H'58' CR~ST ENTRY DC A'$6900' *======================================================================* END (COMMON) *======================================================================* g =='?(??OBJ a  DEB.ROOTHELLOB.AMFCBOOTTBackup.........g =='?(??Da a  Ǣ boۍ1W  dSo sorry, this section is not ready yet. Press any key to return to the menu.  1,LL3  S h' h'`  S h'`g =='?(??Ea a  Ǣ boۍ1W  dSo sorry, this section is not ready yet. Press any key to return to the menu.  1,LL3  S h' h'`  S h'`g =='?(??B.ROOTa a  ,= JUNGLECOMMON% 9 oۍ0WSTEP0<STEP0'=>#?BhC ,o JUNGLE_SCREEN JUNGLE_SCREEN H WIPEGRID WIPE1P LZSPECHAR[SPECHAR\ SYM_GRID L SYM_GRIDQTALKTALK H  RAND_LETTERS PWINDOWTEXTSTEXTS C P NEWTEXT  C P NEWTEXT ENCIPHER L PNT_ANSȌYY8 ONE_LETTYYJUNG_XsJUNG_Z udt ECHOYY WIPEGRID SYM_GRID L P  WIPEPAPERQNUM ENCIPHER L PWINDOWTEXTSTEXTS CQNUM INPUT  WIPECOLUMNS L  WIPECOLUMNS0 WALKS PWINDOW TRUEFALSES TRUEFALSESQNUMQNUM C ߛ C QNUMTF_CORTEXTSTEXTS  ߛ WIPETEXT(, C CQNUMTF_COR, CD WALKS( BUTTERFLY_ANIM P NEWTEXT( pi CQNUM & CL NEWTEXTTEXTSTEXTS C TF_ANSWERS TF_ANSWERSQNUM C P  WIPEPAPERQNUMQNUMQNUM LL3 WIPEPAPERQNUMQNUMQNUM LL3 WIPEPAPERQNUMQNUMQNUM LL3 WIPEPAPERg =='?(??HELLO,W W   2061b-Rb, ӱ ЮIh(6H(2h) h  KjkLl l oۍ7VɅ  L9ᑩ e a' L,R,P,Wd ᑩ e2  X ݛ ] a NN :F`stuo, ɈNJɍlɠې u L L u L s u`u s ` ݛ ]٨Ψ﩮 , )_NY, ݛ ]箮 L5NO,` u LLu a' a'` # $ / 0 %  &   ` .343퇾*Հe]b@c@kb*d(bl`nbUfnb*fn UbUfb*fnUbUfncnUb( ( TbUf~b*flu'wxUbUfluUwxàìb*flu*wxǻUbUfl@uUwx|pdD@LJb ?gl|w|??Ǽg{|beb𠀪blǏϾblbl϶blǾbcdf϶bcdbdecdfTUՀb( ()!UbUf~d#U*U  ȁՁҀr몀  !"#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmopr  "#$&'(*+,-./0123456789:;<>@BDFHJLNPRTVXZ\^`bdfhjlnps !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmop՘Ձ  "$&(*,.01246789:;<>@BDFHJLNPRTVXZ\^`bdfhjlnps몀 !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmop՘ҀҀҀҀҀ  !#$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnps몀 !#%&')+-/135789;=?ACEGIKMOQSUWY[]_acegikmo  !"#$%&'()*+,-./0123456789:;<=>@BDFHJLNPRTVXZ\^`bdefhjlnpsಀ !#%')+-/13579;=?@ACEGIKMOQSUWY[]^_acegikmoգ񲀴ոAs𒀕ܭnprՎգΫϯὰijlmox{ ƎZ[\]^bdfijlmortvxyz{~Ո瞀գԥѰԳfW]_adeghjnoqu8FW\]_abefghlmnpqrsuvwyz|}dž㍀Ԕ՛ԟգ8;=?ACEFHJNPRTVXYZ[\]`adefgijklns𞀠LJ)8<>ACFIJLNSTUWXhijopԃՉԍЎգ񰿎 !#'()<=>ACDFLSVWXabcdehijlmno !)<@FLNPRSV\^_`abcdfgiklnՎգ澼 !#'(+-0479<@BDLNOPQRTUVXYZ[\]hikln '),-01345679<@BDFILNTVhiklnՎЏ󞀠գᦁ岁)<>DFLNQSVhikln)@BCFLMNVhijlnՑգ̽<=>?@ABDEFfgjlnfghjlnՎЏգ̿fgijlnǜǰhklՎգ㿀prs$%qՎѐգΨΰû #()*acfjnopsLJ !"%&*,.01[\^egijnpգ񰿎 "&')+./01UWY[`aefgjnps  $',289>?DJPRTUVW]dfghjlp՗ՅՅՅՅՅՅՅՅՅՅ  %&PRSTUWXZ\]^_dhlps "#$%'*,-.[\`aefgikop՗ҀҀҀҀҀ %&'()+-bcdefghimnpsnp՗qs ꪍ鍎` ȱHHL] w8qis l L a'`~ `NO L L` ݚ L LqOe  +,Iɘɏ3,"L3RTQɠWP`Lɍ ] ( ]`HHL]A xyȱ.ȱH.,0,0Ƣơ h`Ҏ ;Tqďݏ% e@kCZ>e0303333  33?3333??>csc>000033O3? ?0 ?0>3>?3333333 33?? ?03333333N333333333L000003333338 ? 3333>33>00>333>33>03333333333 33333333wf3>ccccc>  ?>c`0 >c`8`c>ccc```??`c?>?cc>`0 >cc>cc>>cc~`c>30 333333333?333?333c33csC333333333333?>O3333   ,`, =`L%` ȱܗ8ȱ?,`,$#ȱȱؗȱ؅qmge g)0)))I I 0XƢЫƢ$,`II) 00Xܗؗ8eƜLחȱ` Ҙ$ޗ◰ge g0XƧҘƜк`0X $ޗ`4}8`Ș`,T ,ULKQܙƙhheeHH)IK 㙤ģ)Eġ %I1ģ %Mƙ1ɽgi0ge `橱`)iLCȱ @()mDSH 㚢 ) { 󙍢mJʎBhoo 8ƩBٚ)|{-,oH Xo ͛h| Z u u L u в%*ɢɌf*,,** *, *],**I-u ,yjx`}`hh 9HH`))JJJJy eȑ`ٚ (`ig*䙐 Xoѐ斤,``,I I`' ` 0%-bbLbNbPbhh 曪񄚭b lO ONOqN8Nm`_`  㚩Z`[`fÜ` )J`Üנ H/ggh@Hh$ذ`=Ѝ>IIh(H(p`hhHH$ -ʆ  ɍ ɬɍԩ L8@?`]}_^yahh  ޥHH}V ?^  L9rs2 &p0V 즢@з_аݛЩb ɬ  %bhh HHrsLp /84 /)ץ /ɻ /ɫ /`a} r띹s=>* Щ Ơơ=?>^bL `` % # % `8 `=m`>ma`3#  <HHL],PUiIJ莁qqLM莄u => H=>`ii <&3iHH N Hhh < <g =='?(??B.At;a a   ,? WIPEGRIDCOMMONGRIDGRID H` WIPEGRIDCOMMONGRIDGRID H` WIPEGRIDCOMMONGRIDGRID H` WIPEGRIDCOMMONGRIDGRID H` WIPEGRIDCOMMONGRIDGRID H` WIPEGRIDCOMMONGRIDGRID H` WIPEGRIDCOMMONGRIDGRID H` WIPEGRID,@ WIPEPAPERCOMMON  LWIPE1PNPAPERPAPER H`N  LWIPE1PNPAPERPAPER H`N  LWIPE1PNPAPERPAPER H`N  LWIPE1PNPAPERPAPER H`N  LWIPE1PNPAPERPAPER H`N  LWIPE1PNPAPERPAPER H`N  LWIPE1PNPAPERPAPER ,B WIPECOLUMNSCOMMONCOLUMNSCOLUMNS H` WIPECOLUMNSCOMMONCOLUMNSCOLUMNS H` WIPECOLUMNSCOMMONCOLUMNSCOLUMNS H` WIPECOLUMNSCOMMONCOLUMNSCOLUMNS H` WIPECOLUMNSCOMMONCOLUMNSCOLUMNS H` WIPECOLUMNSCOMMONCOLUMNSCOLUMNS H` WIPECOLUMNSCOMMONCOLUMNSCOLUMNS H` WIPECOLUM,< WALKSCOMMONC_WALK ݚ a'WALKWALK HTIXTIX S_WALK8C_WALKC_WALKS_WALKC_WALKC_WALKC_WALKC_WALK qTIX0 C_WALKiC_WALK  ݚC_WALKD8 3S_WALKS_WALKS_WALK q LS_WALK iS_WALKS_WALKS_WALK q LS_WALK LS_WALK q LS_WALK LS_WALK q LS_WALK LS_WALK q LS_WALK LS_WALK q LS_WALK LS_WALK q LS_WALK LS_WALK q LS_WALK LS_WALK q,; HINTCOMMONTIX DR_LET L TIX`NTCOMMONTIX DR_LET L TIX`NTCOMMONTIX DR_LET L TIX`NTCOMMONTIX DR_LET L TIX`NTCOMMONTIX DR_LET L TIX`NTCOMMONTIX DR_LET L TIX`NTCOMMONTIX DR_LET L TIX`NTCOM,E BUTTERFLY_ANIMCOMMON pHjj0L<8 BUTTERFLY BUTTERFLYT BUTTERFLY -8 BUTTERFLY BUTTERFLYC BUTTERFLY` BUTTERFLY- EYES  pi`EYESEYESEYESLq pjj40( BUTTERFLY 8`i BUTTERFLY BUTTERFLY` BUTTERFLY ig BUTTERFLY BUTTERFLY` BUTTERFLY8 BUTTERFLY` BUTTERFLYi BUTTERFLY`> BUTTERFLY BUTTERFLYF - BUTTERFLY BUTTERFLYe` F - BUTTERFLY BUTTERFLYe` F - BUTTERFLY BUTTERFLYe` F - BUTTERFLY BUTTERFLYe` F - BUTTERFLY BUTTERFLYQ,B ORCHID_ANIMCOMMONQORCHIDORCHID H QORCHID2ORCHID2 H $ NO_ORCHID NO_ORCHID HLFLASHNTIXWHICHSCRNOWHICHSCR L TIXNWHICHSCR L`OWHICHSCR L TIXNWHICHSCR L`OWHICHSCR L TIXNWHICHSCR L`OWHICHSCR L TIXNWHICHSCR L`O,@ TALK_ANIMCOMMONQTALKTALK H FLASHLK_ANIMCOMMONQTALKTALK H FLASHLK_ANIMCOMMONQTALKTALK H FLASHLK_ANIMCOMMONQTALKTALK H FLASHLK_ANIMCOMMONQTALKTALK H FLASHLK_ANIMCOMMONQTALKTALK H FLASHLK_ANIMCOMMONQTALKTALK H FLASHLK_ANIM,B MONKEY_ANIMCOMMONMONKEYSMONKEYS H MONKEYS2MONKEYS2 H ('MONKEYS3MONKEYS3 H MONKEYS6MONKEYS6 HTIX LTIX:TIXMONKEYS3MONKEYS3 H MONKEYS4MONKEYS4 H MONKEYS3MONKEYS3 H MONKEYS5MONKEYS5 H TIXˢMONKEYS2MONKEYS2 H MONKEYSMONKEYS H  NO_MONKEYS NO_MONKEYS H LL NO_MONKEYS NO_MONKEYS H LL NO_MONKEYS NO_MONKEYS H LL NO_MONKEYS NO_MONKEYS H LL NO_MONKEYS NO_MONKEYS H LL NO_MONKEYS NO_MONKEYS H LL NO.,? ONE_LETTCOMMONFLASHESTIX DR_LET L TIXFLASHES TIX`DR_LET L TIXFLASHES TIX`DR_LET L TIXFLASHES TIX`DR_LET L TIXFLASHES TIX`DR_LET L TIXFLASHES TIX`DR_LET L TIXFLASHES TIX`DR_LET<,? LET_GRIDCOMMONCOUNTCOUNT COUNT`DR_LETNLETXsLETZ"u ", tia u 㚩oLqNLETXsLETZ"u ", tia u 㚩oLqNLETXsLETZ"u ", tia u 㚩oLqNLETXsLETZ"u ", tia u 㚩oLqNLETXsLETZ"u ", tia u 㚩oLqNLETXsLETZ"u ", tia u 㚩oLm,C RAND_LETTERSCOMMONTIX TIX0) 8 &COUNT L COUNT` SOME_LETTERSN COUNT R_0_25 DR_LETCOUNT` NO_LETTERSN > L WIPEGRIDSYM_GRIDN 㚩COUNTCOUNTSYMXSYMSYMYSYMSYMZSYMi DRAW_SYMCOUNT`SYMZSYMi DRAW_SYMCOUNT`SY,? DRAW_SYMCOMMON 8 i SYMSYMSYMLq i SYMSYMSYMLq i SYMSYMSYMLq i SYMSYMSYMLq i SYMSYMSYMLq i SYMSYMSYMLq i SYMSYMSYM;,? OVERLINECOMMONSYM804666SYMʎ57SYMZ_8`LMASKS8RMASKS9 a`LMASKS8RMASKS9 a`LMASKS8RMASKS9 a`LMASKS8RMASKS9 a`LMASKS8RMASKS9 a`LMASKS,? ENCIPHERCOMMON   㚬 SLINE2_Y 5 SLINE1_YNSJbiSYMZ_D8SYMQMARGINSYM'ȌCOUNTH8᪽CENZmSYMZ_SYMh DRAW_SYM OVERLINESYMSYMCOUNTL[PNT_ANSNANSWERSANSWERSiANSWERS` QUEST_OUTN QUESTIONSH QUESTIONSH X cQLINESQLINES:N ݛL]IONSH X cQLINESQLINES:N ݛL]IONSH X cQLINESQLINES:N ݛL]IONSH X cQLINESQLINES:N ݛL]IONSH X cQLINESQLINES:N ݛL]IONSH X cQLINESQLINES:N ݛL]IONSH X cQLINESQLINES:N ݛL]IONS,= R_0_25 p`,= R_0_25 p`,= R_0_25 p`,= R_0_25 p`,= R_0_25 p`,= R_0_25 p`,= R_0_25 p`,= R_0_25m,> SPECHARCOMMON+$*:6u` sŘbuu8`iLMASKS`es0atb 8$`tiduRMASKS`fs80c g LLuRMASKS`fs80c g LLuRMASKS`fs80c g LLuRMASKS`fs80c g LLuRMASKS`fs80c g LLu,< INPUTCOMMON TRIES [oۍ0WPLINESPLINES 3QMARGINLINE1_Y  oANS_IND  ɿsHtHuH HINT huhths,ACCEPT0n  eaANS_INDANS_BUF ECHO_ZtECHO_YsECHO_XANS_IND  mssГ m PNT_ANS8nACCEPTLJQMARGINLINE2_Y  ɍɈ LJ  PNT_ANSħ ANS_BUF'񆧬 PNT_ANSLħ{ANS_BUFTRIES03 PWINDOW  MONKEY_ANIMTEXTSTEXTS pi C C P NEWTEXT  PWINDOW CL/  MONKEY_ANIM  PWINDOWTEXTSTEXTS CCORRECT_ANSWERSCORRECT_ANSWERSQNUM8 CTEXTSTEXTS  C PL  p 18  MONKEY_ANIM  ORCHID_ANIM  TALK_ANIMTEXTSTEXTS pi C C P NEWTEXTL9POSLINENs8 tbu` `ECHON u u L u`nACCEPT PNT_ANS`ANS_INDANS_BUF 0GANS_INDnACCEPT dtANS_INDECHO_XsECHO_YtECHO_ZuANS_BUF  (s` CHAR_SHIFTN2)o)Jj8`g s8 siu`HAR_SHIFTN2)o)Jj8`g s8 siu`HAR_SHIFTN2)o)Jj8`g s8 siu`HAR_SHIFTN2)o)Jj8`g s8 siu`HAR_SHIFTN2)o)Jj8`g s8 siu`HAR_SHIFTN2)o)Jj8`gA,> PWINDOWCOMMONPLINESPLINESoۍ0W [NEWTEXTN ݛWIPETEXTN: 5 LW_1_PAGEN a'`WIPETEXTN: 5 LW_1_PAGEN a'`WIPETEXTN: 5 LW_1_PAGEN a'`WIPETEXTN: 5 LW_1_PAGEN a'`WIPETEXTN: 5 LW_1_PAGEN a'`WIPETEXTN: 5 L,= COMMONPLINESHQLINESH7d  BUTTERFLY_S BUTTERFLY_Sd BUTTERFLY_SEYESA @@>7d EYES_SEYES_SCIRCLE_TA @@0` CIRCLE_STR_FAA @@0` CIRCLE_SCIRCLE_S(CIRCLE_BA @@0`  CIRCLE_S`S_WALKHBe`) aaJbbcC_WALKA `) SYMH  SYMBOLSSYMBOLSSYMBOLS$SYMBOLS6SYMBOLSHSYMBOLSZSYMBOLSlSYMBOLS~SYMBOLSSYMBOLSSYMBOLSSYMBOLSSYMBOLSSYMBOLSSYMBOLSSYMBOLSSYMBOLS SYMBOLS2SYMBOLSDSYMBOLSVSYMBOLShSYMBOLSzSYMBOLSSYMBOLSSYMBOLSSYMBOLSSYMXH57:ACEHJLOQSYMYHSYMZHdfae`bcefccfad`acf`cf`ad`aCENZHLETXH58:@BDGHJUNG_ZHeeee`eACCEPTSTESTSZZZ_CODENGHJUNG_ZHeeee`eACCEPTSTESTSZZZ_CODENGHJUNG_ZHeeee`eACCEPTSTESTSZZZ_CODENGHJUNG_ZHeeee`eACCEPTSTESTSZZZ_CODENGHJUNG_ZHeeee`eACCEPTSTESTSZZZ_CODENGHJUNG_ZHeeee`eACCEPTSTESTSZZZ_CODENGHJUNG_ZHeeee`eACCEPTSTESTSZZZ_CODENGHJUNG_ZHeeee`eACCEPTSTESTSZZZ^,D JUNGLE_SCREEN0XՀQT(*-'( -.0 45x6B *; U@@ATCEDUEQFUEKQLPMTD@PE<' N\`]a1`@TdEPTQSlCAPDPDTvPx{DQTU@DU("""2 "6"7`8f;0 A DFK "Q "T( )( (_c2*h "h "p t*(.*y{*  (* " F|8/P0U2E3Q4T5U6T89@:P?@ABGHIKLPQSXZ[]^_adeghinqrwyz{|Ņ0*3J4I#'8!<@>P@PBPH@K@PnRSTU[\]^_`abcdefhijkmnopqrstuvwxyz{|}~ ,-/2T3Q4T5U:T<=B?J@HAJBHCJ F*L(")!Rbkprsux  #(,.147 9G(I)!NOPQRSTYZ_`cdghqr  !"#$'*+,.0125:>EFHIKNORVX[_eikosw{  !"#$%&'()*+,-.߈/0123456789:;<=?@ABCDEFGHIJLMNOPQRTVXYZ[\]^_`abcdefghijklmnopqrsuvwxyz{|}~  "$%&(*+,-./0123468AGLNQTWPYZ[\]^_`abcdefghijklmnopqrstuvxz|~ŀĂńՅՐՀhijklmnopqrstuvxz|~ŀĂńՅՐՀhijklmnopqrstuvxz|~ŀĂńՅՐՀhijklmnopqrstuvxz|~ŀĂńՅՐՀhijklmnopqrstuvxz|~ŀĂńՅՐՀhijklmnopqrstuvxz|~ŀĂńՅՐՀhijklmnopq,< STEP0pq,< STEP0pq,< STEP0pq,< STEP0pq,< STEP0pq,< STEP0pq,< STEP0pq,< STEP0pqp ,= HIDATAGRIDNh-5S,,---------------*-PAPERN,i/8P000*3*5* ":b<~=K~L|OR~S|Y~[oGHJ`barbxc|d~fjx`BJ@o|px|yyqg?~~|x`@0d1p2@4U5A7y8|9|}OG7G3C3C3C7G3~4x5r6x7~~vxatututututututututututu143_57?8/+*4+!# /;?=Q?Scu|~?0y1e3U4Q5E7T8Q9T:Q;D>?IOK?OGPRUSTQXZ\_ru~ߟψÁԎCOLUMNSNj/8P7gsx@fg00*3*5* ":b<@0 ?`@A_BwCEGG_I|JxL_@NQR~S|U|Wp8N>GHJ`barbxc|6gshO8` @pgss3vss3s0d1p2@4U5A 9K:d3?{@~AEFNGOHNJLON03T0UWYZ|[x7]_asbyc|d~N0gyhjk``p_XWvX_}g3>LO@03~4x5r6x89}:<937# \?_`? n|pr} tuv w}}xsf~y0~8|9y:sCpDsEpFsGpHsIpJyK|LMpNsTpUV|WyXsiyjpksoppqxrsgfvg~`g`ߑ08g9s;3?sF3GsIsJLNsQ3RsUVXOZg[sd3Cfs3Cisg3osqg3Cs3Css3s03_58;=A>O?`@~DEF~GsH~ILJ|>NLROU@VX~YC]q_c`bscgdfeyfLO@0/+*4+!6?;DEOFHIK>NR9SyUVXZ~[|\}]^^w bfcgMegmoyqLvcwC=a||yAOs~y0y1e3U4Q5E7T8Q9T:Q;D3G03CA>0?GPRUSTQVWxXsYg\f]g^`agcfdgjsafog`qrxssgydcgdcg~`g`SYMBOLSN/nߠ؁χχއֆ׎ֆއ怳怳׆ׂփ߆򄁈́΃̃؁؁އއއ؁؁ORCHIDNpuCf07^ fL@NQ@U^`fKMHZ,l,LL2NOPcS0TfE+4*kS9]3_\xbfzDvqw5?.ILr3)S]MhD)( .J+j~? fD4):K=Mfk| Sb)0I%p10Mu{}_d' fJ,+* PYl'MqU^V_:9Un)l4`fIUP #'TVU[t%* f NO_ORCHIDNdqCf07(G "J L*S W*[(] "` b"fDFIQEKTLPAPPRTSUUQPYAE]UDUSUEfE#G&I, "N Q*U(" Z*]("ce fEDUEQFUEKQLPMTD@PQTE<' N\`]a1@TdEf DF(*K "(*Q "T( (*)( (_(*c2*fDTF@JTKUAOQPTQUQTTUUWEQTUA@Uef D *GI* (*Q*V*Y  (*_ * (fMONKEYSN`rC*05ȩ!' *&TU*#% )**"%〾*#&*MONKEYS2Nr[*05!౎) *"&TU*!%J)**!〾*"%)*MONKEYS3Nru*05ʉ!ႊ( *͘ǰ ఘՀTU*#%Ă )**〾#*%Ҁ*MONKEYS4Nssr*05"( *Ձ ށTU*"% )**̘ؼ#*$&Ԁ*MONKEYS5Nsp*05ٍم!#⊪( *Џ ՀTU*Ԕ兵$&Ш )**І#*!%(*MONKEYS6NUtr*05‚"( *ݸ'TU*%Š )**〾&*%Ҁ* NO_MONKEYSNt!*05' *&TU*& )***(*WALKNt*0V0*;cF 3L3L6 6`p9;3al@p|<@``$@`p*p|0 ~ ~|x0gadL0gw g$ccc*8  ;;s; $*vF f   @p9;sAC xp8 `pxx8*po`p  6x=} 3`?0|p 3f|s   `p0`@Alpx `pp8*0o0 8 @aCp73  g f `p0``8pvpvsx|8 G@* 3  ? 70s` `0Lx F@ *px xp ~xwx cqxOg *<@f?60  *TALKN x vPV/b d ((Hl@ (hH` v.0P3P.5o6O8w:f<@L@@Q@TaTdc6AIk6Ac@6Hv23F4m 8 48#|` ~` ``cxq~f 0`gxxC00f@@``g|pc``@0 0@`` pp~ZZZ_DATAN@`` pp~ZZZ_DATAN@`` pp~ZZZ_DATAN@`` pp~ZZZ_DATAN@`` pp~ZZZ_DATAN@`` pp~,< STEP1~,< STEP1~,< STEP1~,< STEP1~,< STEP1~,< STEP1~,< STEP1~,< STEP1~g =='?(??M&a a  3,  ꚩ% ,U H, { H {L  HLTɱɷ)iwʊH h  L5NO ,`H h ᑽ⑩ݑޑߑQLePJ}077>=DDKJRQXʎ     ` h` $ & N O Z  [ o M  Y L2 M Y N O `Z [ +Ο &} `ӠϠŭZ )x`-+b*'Q&h$0XOP!"x#L$| x*U벀++cin>ADcefhilnor "#&>ADHJMefilnsuڿ{  !"#%&'@EHJKNceinpuxy{|~  %(@ABCDJNegu{  "$&'-1569>@EHJNTWX[\^`qru ˀ "$&./2678@EJNTUVZ^_efilnruڠ}  "$&'/257JKOVY\^cfinruڼy| ˁ "$%&>DHMcnsuv|  !&'@BDJcefinr{!'>@ABCDHIJMceilnorՊ׏ՑՖ@DJMefinÃ*+,efghij뷁(+pu𘙘nprsu J' (*DJWY\npt?? A  9yYYAU ?!a#?%1&e(UJNQTWYZ]v{UuWuUT , MON "*&x(*CFKNѸQRUY]`agjklpuڇ}?붃à f<EUTPQTQSN@U!@#3$?&>'A(U.257>?@BFGJNQSYZ^aehjpr}@~븟 xL| x*!"f#<%<&f(*>?CFKќRTW\yz|? pqyU&x(U?CFKѼQRTYnqu{_WUEU ()*)+)*!"p$q&y(*FGJLWXY\npqrt*(*+*(+̌!T"S#T$Q%S&Q'T(UFJY\pqtu|pqp|僆pt+Àg붟xWZmoqr//̌UUDKUVWXZ[mosUaUPWU~C~@C~*;>ADEFGHKMPSW[mopsv{B@p`Bbp|TpypU;<=>?ADFHJMOPQSUWX[mops|q303*-02569=?@ADFGIKʸPQRSWX[_`dgjkoyz{|CfFfU./678=>?@ADFGHIJTWX[_`hjkڃy}| @GL */257=BFGKW\`dgimt}@U;=AFJLPQSWY[motz#0 *FLUWXYZ[mtv{+* *j*+/UZor~Amr|~|~|~@`p08G px> M=uU*TU ! U*U𡰬Ur0X,>0mWx@*U~ > ~x$QxTx\xL_pp~>~ | x ||!c"3$aQSsTaU`\q1_3pgc|x||!C"g$gSg0V`\C]f_FG`!O"A#N$GSCTfVC \ _ `0 `T!q$q&pSO V @[`^`3 !s"3%SCVZ GLfxx !%SV?\_ L sa`$Sg0`$SL\>]f`8Cgg3  3 SoZ@\xL_AG$Q13Z` $S>Tf$SxLVx@X3?3p0p 0 pSX>f $VLx@x$ V  0p0$VCfF|L |$VGN@ $~!x"L$V !1$cVg ? !f$;*+8,x-XVg0p03 !|%*,F-g/F\papgi3 ON !q"X$p /QUsVc\^p_g`cbi3V~^C_g``Gix x`!"@$,L/x0@16`8c9f;cS~ ^La i>3l~qp@qC !18G9L;Q LS|0g0jpl Gq!x"L$,O /6 9G:LQVgi?c3c<f 8 f <!p$*,8;S>3V~\~bgi3 ? !"3%?683<S~ ^~ bgf~ !<"v$|*F-f/f8|9f;|SxLV^LagCOC L LL%-A/G8x ;ySxV^qYaqgiy@ ?  ? ?!q$q68y9x:XSa3Vc^1_c``3ia3lc`8 ~ | ~ ~!$*7S^ail?>?`0Xf,>0mWx@*U~ > ~x$QxTx\xL_pp~>~ | x ||!c"3$aQSsTaU`\q1_3pgc|x||!C"g$gSg0V`\C]f_FG`!O"A#N$GSCTfVC \ _ `0 `T!q$q&pSO V @[`^`3x` !s"3%SCVZ GLfp !%SV?\_ L sc$Sg`$SL\>]f`8 3  3 SoZ@\xL_@$Q13Z` $S>Tf$SxLVx@Xp0p 0 pSX $V33$ V << xL$V|L |$V3 $~|!x"L$V0|0 !1$cVgyl x!f$;*+8,x-XVg0p0| !|%*,F-g/F\papgi3 ON !q"X$p /QUsVc\^p_g`cbi3V~^C_g``Gix `!"@$,L/x0@16`8c9f;cS~ ^La i>3l~qpp0p0 !18G9L;Q LS|0g0jpl G!x"L$,O /6 9G:LQVgi?3<f 8 f <!p$*,8;S>3V~\~bgi3 ? <<!"3%?683<S~ ^~ bgf~ ~!<"v$|*F-f/f8|9f;|SxLV^LagCOC L LL%-A/G8x ;ySxV^qYaqgiy@ ?  ? ?!q$q68y9x:XSa3Vc^1_c``3ia3lc`8 ~ | ~ ~!$*7S^ail?>?`       ŠԠŠ͠ƠŠήƠҠҠӠԬՠSԠĠٮƠҠĠ)Š ĠҠŠנӠӠԬՠ̠ŠΠ-ŠҮϠĠԠŠԠҮԠ٠ӠҠԠǠĬΠӠ,ԠӠΠҮϧӠƠŮՠŠˬՠ٠ŠԠRŠȠŠŮ:ŠƠŠӠӠĠΠX  (  ) ٠͠ӠĠΠQͬǠȠǠԮŠǠĠĠŠVӠΠŠҠԠҠQŠҠӠҠՠϠ,ΠΠŠŠǠŠԮϠŠ/ΠƠŠҠӠƠ̬Ӡ:      ήӠϠԠŠƠՠŠĠ٠ĠӬ(ϠŠάΠӠՠ٠٠ŠŠŮŠ )ĠөŭҭŠĠҠŠנӠϠŠȠΠĠөΠΠΠӠĮӠҠŠŠŠĠȠŠĠӮĠ٠ǠԠΠŠٮҠŮƠՠŠˬՠ٠ŠӠϠԠŠ-ϠŠȠŠŮάΠӠΠĠҠ٠ԠҬՠŠ)өŠŠƠΠΠĠŮҠ٠Ӭ)   (  ) Š͠ӠĠΠQͬǠȠǠԮŠǠĠĠŠVӠΠŠҠԠҠQŠҠӠҠՠϠ,ΠΠŠŠǠŠԮϠŠ/ΠƠŠҠӠƠ̬Ӡ:(ԠŠ͠ƠŠծ='    ( )0ƠҠŠӠԬՠ+ŠĠԠӠĠŠԠҠٮƠҠĠŠŠƠԠӠԠŠΠԮӠԬΠŠŠРƠŠծ@ŠŠҠծ@ӠΠŠŠƠ.ӠŠӠŠծŠŠƠŠӠĠԠŠ͠,ŠĠΠŠŠؠӠŠծG(àĠӠӠĠΠ-     (  )ͬǠȠǠԮŠǠĠĠŠVӠΠŠҠԠҠQŠҠӠҠՠϠTǠŠԮϠŠ/ΠΠӠĠŠ̬Ӡ:g =='?(??F}a a  95 oۍ0Wʅ< =}> ?BhC ,oLa5b c S6 H S5h`h,"0i iihh)i  h) ꚭi ih, h|h xhhighh,0,0Э0Lv iL~`0X$                                       $ $` hhhh˿wqje^YTOKFB>;841.+)&$"      ̮ͬ쮻g =='?(??Ca a  Ǣ boۍ1W  dSo sorry, this section is not ready yet. Press any key to return to the menu.  1,LL3  S h' h'`  S h'`g =='?(??BOOT+a a  b-Rb, ӱ ; LЮIh(6H(2h) h ;  ; KjkLl l ;  י a',R,P,W L L5NO,` u LLu a' a'` | }   ~ x  r  `#3-%2 33,`, =`L%` ȱܗ8ȱ?,`,$#ȱȱؗȱ؅qmge g)0)))I I 0XƢЫƢ$,`II) 00Xܗؗ8eƜLחȱ` Ҙ$ޗ◰ge g0XƧҘƜк`0X $ޗ`4}8`Ș`,T ,ULKQܙƙhheeHH)IK 㙤ģ)Eġ %I1ģ %Mƙ1ɽgi0ge `橱`)iLCȱ @()mDSH 㚢 ) { 󙍢mJʎBhoo 8ƩBٚ)|{-,oH Xo ͛h| Z u u L u в%*ɢɌf*,,** *, *],**I-u ,yjx`}`hh 9HH`))JJJJy eȑ`ٚ (`ig*䙐 Xoѐ斤,``,I I`' ` 0%-bbLbNbPbhh 曪񄚭b lO ONOqN8Nm`_`  㚩Z`[`fÜ` )J`Üנ H/ggh@Hh$ذ`퇾*Հe]b@c@kb*d(bl`nbUfnb*fn UbUfb*fnUbUfncnUb( ( TbUf~b*flu'wxUbUfluUwxàìb*flu*wxǻUbUfl@uUwx|pdD@LJb ?gl|w|??Ǽg{|beb𠀪blǏϾblbl϶blǾbcdf϶bcdbdecdfTUՀb( ()!UbUf~d#U*U  ȁՁҀr몀  !"#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmopr  "#$&'(*+,-./0123456789:;<>@BDFHJLNPRTVXZ\^`bdfhjlnps !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmop՘Ձ  "$&(*,.01246789:;<>@BDFHJLNPRTVXZ\^`bdfhjlnps몀 !#%')+-/13579;=?ACEGIKMOQSUWY[]_acegikmop՘ҀҀҀҀҀ  !#$&(*,.02468:<>@BDFHJLNPRTVXZ\^`bdfhjlnps몀 !#%&')+-/135789;=?ACEGIKMOQSUWY[]_acegikmo  !"#$%&'()*+,-./0123456789:;<=>@BDFHJLNPRTVXZ\^`bdefhjlnpsಀ !#%')+-/13579;=?@ACEGIKMOQSUWY[]^_acegikmoգ񲀴ոAs𒀕ܭnprՎգΫϯὰijlmox{ ƎZ[\]^bdfijlmortvxyz{~Ո瞀գԥѰԳfW]_adeghjnoqu8FW\]_abefghlmnpqrsuvwyz|}dž㍀Ԕ՛ԟգ8;=?ACEFHJNPRTVXYZ[\]`adefgijklns𞀠LJ)8<>ACFIJLNSTUWXhijopԃՉԍЎգ񰿎 !#'()<=>ACDFLSVWXabcdehijlmno !)<@FLNPRSV\^_`abcdfgiklnՎգ澼 !#'(+-0479<@BDLNOPQRTUVXYZ[\]hikln '),-01345679<@BDFILNTVhiklnՎЏ󞀠գᦁ岁)<>DFLNQSVhikln)@BCFLMNVhijlnՑգ̽<=>?@ABDEFfgjlnfghjlnՎЏգ̿fgijlnǜǰhklՎգ㿀prs$%qՎѐգΨΰû #()*acfjnopsLJ !"%&*,.01[\^egijnpգ񰿎 "&')+./01UWY[`aefgjnps  $',289>?DJPRTUVW]dfghjlp՗ՅՅՅՅՅՅՅՅՅՅ  %&PRSTUWXZ\]^_dhlps "#$%'*,-.[\`aefgikop՗ҀҀҀҀҀ %&'()+-bcdefghimnpsnp՗qs ꪍ鍎` ȱHHL] w8qis l L a'`~ `NO L L` ݚ L LqOe  +,Iɘɏ3,"L3RTQɠWP`Lɍ ] ( ]`HHL]A xyȱ.ȱH.,0,0Ƣơ h`Ҏ ;Tqďݏ% e@kCZ>e0303333  33?3333??>csc>000033O3? ?0 ?0>3>?3333333 33?? ?03333333N333333333L000003333338 ? 3333>33>00>333>33>03333333333 33333333wf3>ccccc>  ?>c`0 >c`8`c>ccc```??`c?>?cc>`0 >cc>cc>>cc~`c>30 333333333?333?333c33csC333333333333?>O3333   =Ѝ>IIh(H(p`hhHH$ -ʆ  ɍ ɬɍԩ L8@?`]}_^yahh  ޥHH}V ?^  L9rs2 &p0V 즢@з_аݛЩb ɬ  %bhh HHrsLp /84 /)ץ /ɻ /ɫ /`a} r띹s=>* Щ Ơơ=?>^bL `` % # % `8 `=m`>ma`3# HHL]'PUiIJ莁qqLM莄u=> H <=>`ii <&3iHH N Hhh < <g =='?(??T\'\' ,"0)Zp)Oe,0,0Э0LЃ˿wqje^YTOKFB>;841.+)&$"      ̮ͬ쮻g =='?(??JDATAFQ X  *======================================================================* COMMON DATA *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* pLINES DC H'06 94 9D A6 AF B8 00' qLINES DC H'06 3C 46 50 5A 7A 00' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COUNT DS 1 WHICHSCR DS 1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LMASKS DC H'FF FE FC F8 F0 E0 C0' RMASKS DC H'80 81 83 87 8F 9F BF' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BUTTERFLY DC A'$4000,$4000' DC H'3E 37 64 19 04 0B 00' DC A'BUTTERFLY_S,0,BUTTERFLY_S+$64,0,BUTTERFLY_S+($64*2),0' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* EYES DC A'$4000,$4000' DC H'3E 37 64 08 02 0B 00' DC A'EYES_S,0,EYES_S+$10,0' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CIRCLE_T DC A'$4000,$4000' DC H'30 00 60 1E 08 0B 00' DC A'CIRCLE_S,0' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TR_FA DC A'$4000,$4000' DC H'30 00 60 07 08 0B 00' DC A'CIRCLE_S+(8*$1E),0,CIRCLE_S+(8*$25),0' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CIRCLE_B DC A'$4000,$4000' DC H'30 00 60 0C 08 0B 00' DC A'CIRCLE_S+(8*$2C),0' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* S_WALK DC H'42 65 60' DC H'29 04' DC H'0B 00' DC A'$6102,0' DC A'$6102+(1*$A4),0' DC A'$6102+(2*$A4),0' DC A'$6102+(3*$A4),0' DC A'$6102+(4*$A4),0' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* C_WALK DC A'0,0' DC H'00 01 60' DC H'29 03' DC H'0B 00' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SYM DC H'00 00 00' x y z DC H'09 02' h w DC H'0B 00' DC A'SYMBOLS,0' A DC A'SYMBOLS+($01*$12),0' B DC A'SYMBOLS+($02*$12),0' C DC A'SYMBOLS+($03*$12),0' D DC A'SYMBOLS+($04*$12),0' E DC A'SYMBOLS+($05*$12),0' F DC A'SYMBOLS+($06*$12),0' G DC A'SYMBOLS+($07*$12),0' H DC A'SYMBOLS+($08*$12),0' I DC A'SYMBOLS+($09*$12),0' J DC A'SYMBOLS+($0A*$12),0' K DC A'SYMBOLS+($0B*$12),0' L DC A'SYMBOLS+($0C*$12),0' M DC A'SYMBOLS+($0D*$12),0' N DC A'SYMBOLS+($0E*$12),0' O DC A'SYMBOLS+($0F*$12),0' P DC A'SYMBOLS+($10*$12),0' Q DC A'SYMBOLS+($11*$12),0' R DC A'SYMBOLS+($12*$12),0' S DC A'SYMBOLS+($13*$12),0' T DC A'SYMBOLS+($14*$12),0' U DC A'SYMBOLS+($15*$12),0' V DC A'SYMBOLS+($16*$12),0' W DC A'SYMBOLS+($17*$12),0' X DC A'SYMBOLS+($18*$12),0' Y DC A'SYMBOLS+($19*$12),0' Z *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * a b c d e f g h i j k l m n o p q r s t u v w x y z SYMX DC H'35 37 3A 3C 3F 41 43 45 47 4A 4C 4E 51 35 38 3A 3C 3E 41 43 45 48 4A 4C 4F 51' SYMY DC H'03 02 04 02 04 02 03 03 03 03 04 04 04 1A 19 1A 18 19 17 18 18 19 1A 19 18 19' SYMZ DC H'64 66 61 65 60 62 63 65 66 63 63 66 61 64 60 61 63 66 60 63 66 60 61 64 60 61' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * a b c d e f g h i j k l m n o p q r s t u v w x y z CENZ DC H'00 01 00 02 02 00 02 00 01 02 00 02 00 00 01 00 00 01 00 00 02 00 00 00 02 00' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * a b c d e f g h i j k l m n o p q r s t u v w x y z LETX DC H'35 38 3A 3C 3F 41 43 46 48 4A 4C 4F 51 35 38 3A 3C 3F 41 43 45 48 4A 4C 4F 51' LETZ DC H'66 61 63 65 61 63 64 60 63 63 65 62 61 66 62 64 64 60 62 64 66 62 61 66 60 64' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINE1_Y EQU $70 LINE2_Y EQU $86 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* QNUM DS 1 TIX DS 1 SYMZ_ DS 1 qMARGIN DS 2 ANS_IND DS 1 ANS_BUF DS 13 ECHO_X DS 13 ECHO_Y DS 13 ECHO_Z DS 13 TRIES DS 1 FLASHES DS 1 YY DS 1 JUNG_X DC H'3E 40 42 44 47 48' JUNG_Z DC H'65 65 65 65 60 65' ACCEPT DS 1 BPL accept, BMI reject test ds 1 *LLO DS 1 *LHI DS 1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ZZZ_CODE ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (COMMON) *======================================================================* JUNGLE_SCREEN START DC H'00 C0 30 58' DC H'06 FF FC FA F8 F6 F5 F5 92 D5 80 C0 F5 F6 92 AA' DC H'80 C0 F6 F8 00 05 15 F8 FA 51 54 FA FC 28 2A FC' DC H'FF 80 C0 00 2D 80 FF D5 27 95 28 85 20 FC 2D 02' DC H'2E 30 0C 06 03 34 0E 35 78 36 42 0A 2A 3B 0A 3C' DC H'42 38 06 28 02 28 47 20 22 4A 0A 4C 2A 53 0A 08' DC H'00 57 02 2A 5B 28 5D 20 22 60 20 62 22 67 0A 69' DC H'2A 0A 02 00 02 20 70 28 72 2E 23 03 77 06 0C 18' DC H'7C 0C 06 00 80 40 30 18 0C 26 FC 28 22 0A 2A 70' DC H'0C 26 20 2A 00 F6 AA 26 82 27 80 28 54 29 55 2A' DC H'45 2B 55 2C 54 2D 55 14 15 30 45 31 40 32 50 33' DC H'55 34 54 35 50 36 53 37 46 38 4C 3A 06 3B 43 01' DC H'14 15 41 14 10 01 05 46 15 49 51 45 4B 54 4C 50' DC H'41 05 50 01 50 52 54 53 55 55 05 51 50 59 41 45' DC H'15 5D 55 44 11 05 15 55 53 55 45 15 55 69 54 40' DC H'00 14 55 41 14 55 05 01 50 54 14 54 45 55 5D 55' DC H'15 7D 45 41 54 FA 14 F8 51 55 89 54 50 47 4C 19' DC H'71 05 00 F5 D5 26 D4 27 C0 0A 29 2A 02 20 08 28' DC H'31 68 28 35 22 37 0A 02 00 3B 20 28 08 2A 41 0A' DC H'00 03 45 23 47 26 49 2C 20 22 02 4E 0A 00 51 2A' DC H'55 28 22 0A 5A 2A 5D 28 08 22 08 00 63 02 65 0A' DC H'52 68 08 02 1A 18 6D 40 0A 36 02 FC 22 FC 0A 78' DC H'02 20 FC 7E 0A 22 28 82 2A 02 30 86 18 88 78 62' DC H'32 1A 0C 06 23 20 00 F6 AA 2A 01 2B 44 11 2D 44' DC H'01 05 15 31 54 32 55 33 51 34 45 35 55 15 37 55' DC H'38 50 F8 3C 50 3D 45 3E 55 01 40 40 41 54 15 43' DC H'45 44 55 45 51 46 55 17 15 45 4B 51 4C 50 4D 54' DC H'14 44 40 50 FA 45 01 19 3C 00 27 0A 4E 5C 60 5D' DC H'61 31 04 60 81 40 54 64 15 45 50 54 51 53 03 6C' DC H'43 41 50 44 14 50 44 14 54 76 50 78 00 05 7B 15' DC H'05 44 51 80 54 55 83 15 14 00 88 40 8A 44 04 15' DC H'8E 55 90 00 F5 D5 28 81 08 22 08 22 08 22 00 32' DC H'20 22 14 36 22 37 60 38 66 3B 30 02 0D 00 0A 41' DC H'08 0A 44 02 46 00 FC 4B 0A 22 FC 51 0A 22 54 28' DC H'08 20 FC 29 28 09 20 28 5F 00 FC 63 32 2A 68 0A' DC H'22 68 0A 22 FC 70 00 02 0A 74 2A 28 2E 2A 79 00' DC H'7B 2A 0A 7F 02 81 00 20 84 28 86 2A 0A 02 22 20' DC H'00 8D 46 7C 38 00 92 AA FF 2F 50 30 55 32 45 33' DC H'51 34 54 35 55 36 54 38 00 39 40 3A 50 10 3C 54' DC H'3D 51 05 3F 54 40 51 41 45 42 55 15 44 54 46 40' DC H'01 4A 54 4B 55 15 05 41 4F 51 50 54 51 55 05 FA' DC H'54 55 55 57 15 45 FA 55 15 05 41 40 15 55 65 15' DC H'01 40 44 45 6B 15 05 11 01 10 71 00 10 40 60 30' DC H'58 19 31 30 7B 31 7D 18 06 53 54 55 83 15 05 FA' DC H'55 15 41 18 46 43 01 00 10 00 92 D5 FF 2A 31 2C' DC H'2A 35 0A 02 28 38 3A 22 FC 3D 0A 00 40 02 42 0A' DC H'44 0B 2A 47 00 49 2A 0A 02 FC 51 00 2A 56 00 2A' DC H'59 0A 02 20 FC 5F 0A 20 0A 2A 02 20 FC 69 28 08' DC H'6B 80 20 FC 70 0A 28 2B 21 08 0A FC 28 2A 28 22' DC H'28 00 7F 2A 83 80 2A 86 22 FC 8A 0A 8C 02 20 08' DC H'22 00 92 AA FF 05 2F 55 32 15 05 34 40 35 50 36' DC H'51 11 39 41 19 0C 3D 4C 18 41 1C 0C 44 18 47 0C' DC H'10 4A 00 4C 15 4D 55 05 01 51 00 53 41 55 50 54' DC H'55 59 14 15 5D 05 45 50 55 62 54 64 15 67 05 01' DC H'00 6B 55 6E 51 14 15 05 73 01 10 14 15 7A 05 7C' DC H'01 00 7F 01 81 05 04 F8 01 00 89 04 11 04 11 44' DC H'11 44 00 92 D5 FF 2F 00 92 AA FF 2F 00 91 80 D5' DC H'FF 2F 00 91 80 92 AA FF 2F 00 91 80 D5 FF 2F 00' DC H'91 80 92 AA FF 2F 00 91 80 D5 FF 2F 00 91 80 92' DC H'AA FF 2F 00 91 80 D5 FF 2F 00 91 80 92 AA FF 2F' DC H'00 91 80 D5 FF 2F 00 91 80 92 AA FF 2F 00 91 80' DC H'D5 FF 2F 00 91 80 92 AA FF 2F 00 91 80 D5 FF 2F' DC H'00 91 80 92 AA FF 2F 00 91 80 D5 FF 2F 00 91 80' DC H'92 AA FF 2F 00 91 80 D5 FF 2F 00 91 80 92 AA FF' DC H'2F 00 91 80 D5 FF 2F 00 91 80 92 AA FF 2F 00 91' DC H'80 D5 FF 2F 00 91 80 92 AA FF 2F 00 91 80 D5 FF' DC H'2F 00 34 02 36 0A 3B 1A 30 E2 C2 3F 8A 41 AA 42' DC H'8A E2 44 B8 45 8C 46 A6 48 A3 08 0A 2A 52 0A 54' DC H'02 55 C0 58 E0 59 B2 5A 82 5B 8A 5D AA 60 A8 62' DC H'88 64 A0 65 A8 66 88 68 A8 69 A0 6A C0 E0 6F C8' DC H'70 88 71 A8 76 80 77 A0 78 AA 7C 82 7D A0 7E A8' DC H'82 AA 86 8A 87 AA 8B A8 8C A0 80 8F A0 90 B0 80' DC H'92 AA FF 00 31 40 33 00 34 60 35 70 3A 60 00 3C' DC H'80 3E 81 3F 83 40 86 41 9E 42 B3 E1 E0 E1 E5 47' DC H'B1 48 8C 49 86 4B 8C 4C 99 D9 CC D6 50 86 51 96' DC H'C6 53 93 D3 D5 58 D0 5A C4 5B 94 C4 5D 90 5E C0' DC H'5F 80 61 94 D5 64 80 65 B6 E3 67 80 68 BE 69 9C' DC H'C1 F7 6E B6 C1 E3 71 9C 72 81 D5 D4 D5 77 95 79' DC H'85 7A 81 7B 94 7C 95 82 85 84 C1 80 86 C0 87 90' DC H'C1 81 C5 85 8C 95 90 8D 80 D5 FF 30 2A 33 4A 34' DC H'49 23 27 38 21 1C 18 00 3C 40 3E 50 10 40 50 10' DC H'42 50 48 40 4B 00 40 50 6E FB 52 8D 53 9B 54 A0' DC H'55 AA 5B A8 5C AA 5D A2 5E A8 5F A2 60 88 61 A0' DC H'62 80 63 A2 64 82 65 8A 66 88 68 8A 69 82 6A 81' DC H'6B 83 6D A3 6E 83 6F A1 70 80 71 A0 72 80 73 A0' DC H'74 80 75 A0 76 A8 77 A0 78 A8 79 A2 7A 88 7B A2' DC H'7C A8 7D 82 7E 88 7F 82 80 88 81 8A 82 88 82 80' DC H'82 88 80 82 80 82 80 82 80 82 91 80 F6 8A 01 CB' DC H'0D 8B 0F A3 10 AB 12 A1 13 8C 14 BE FE 17 9E 18' DC H'8E 19 8C C1 1B 83 1C 8B 2C 8A 2D 80 2F F8 32 54' DC H'33 51 34 54 35 55 3A 54 3C 00 3D 42 3F 4A 40 48' DC H'41 4A 42 48 43 4A 0A 46 2A 4C 28 22 29 21 01 C1' DC H'52 83 C4 D5 62 D4 D5 D1 D4 C5 D4 D5 D4 D5 6B 94' DC H'D5 70 D4 D5 72 94 73 85 75 81 78 80 F5 80 01 AA' DC H'05 A2 06 80 07 A0 0D 80 D5 10 8C F3 12 B1 DD 14' DC H'C0 D4 17 D0 D6 D7 1B D0 20 D4 23 C5 28 95 2C D4' DC H'2E D0 31 C0 00 34 02 37 0A 39 02 FC 47 28 49 29' DC H'21 05 15 4E 01 4F BC 50 B7 51 99 52 B3 53 80 54' DC H'AA 59 A8 5A AA 5F 8A 60 AA 63 8A 64 AA 67 8A 68' DC H'AA 71 A0 72 80 F6 80 02 85 03 90 C5 05 91 C5 07' DC H'94 C4 09 94 D4 0B 90 D0 0D 80 0E C0 0F 82 11 8A' DC H'12 AA 1E 8A 1F B0 20 AE 21 AA 22 B0 23 AC 24 8A' DC H'27 CA 2A C2 2B 80 2C B8 DC 2E BC EC 30 8C 31 98' DC H'32 C0 D0 35 D4 3A 94 D4 D5 3E 95 D5 45 95 46 85' DC H'D5 48 95 49 85 D5 4B 95 D5 4E D1 4F 95 D5 52 C5' DC H'D5 56 95 58 85 C5 D5 5B 91 D5 C4 D5 5F 91 D5 C4' DC H'D5 D1 D5 65 C0 D5 D1 D5 69 C0 D5 6B 95 D4 C5 D4' DC H'6F 95 D5 C5 D5 73 94 D4 D0 77 C0 7B 80 F5 A2 03' DC H'A0 05 80 07 82 08 80 09 82 0A 88 0B A2 0C 88 0D' DC H'A2 0E 88 0F A2 10 80 11 88 12 80 14 F9 15 8D FD' DC H'17 8D F9 19 81 1A A9 20 89 21 A8 22 88 23 A8 24' DC H'8A 25 AA 26 8A 27 AA 28 8A 29 A2 2A 8A 2B A2 2C' DC H'88 2D A1 2E 88 2F A0 30 88 31 A2 32 80 33 A2 34' DC H'82 35 A2 36 8A 37 A2 38 A8 39 A0 3A A2 3B A0 3C' DC H'A2 3D A0 3F AA 40 A0 41 A8 42 A0 43 A8 44 A0 45' DC H'88 46 A2 47 82 48 A2 49 82 4A A2 4C 80 4D A2 4E' DC H'80 4F A0 50 8A 51 A0 52 88 E0 54 88 E0 56 A8 E2' DC H'58 A8 59 A2 5A 8A 5B A2 5C 8A 5D A8 5E 8A 5F AA' DC H'60 8A 61 A2 62 A8 63 A2 64 A8 65 82 66 A8 67 A2' DC H'68 8A 69 A2 6A 8A 6B A2 6C 8A 6D AA 6E 8A 6F AA' DC H'70 8A 71 AA 72 8A 73 AA 75 A8 76 AA 77 A2 78 AA' DC H'79 A8 7A AA 7B A2 7C AA 7D 8A 7E AA 7F A8 81 88' DC H'82 A8 85 A0 8C 80 F6 80 01 C0 02 80 C4 04 84 C4' DC H'06 84 0A 80 0E 81 0F 80 10 81 11 84 12 81 13 84' DC H'14 90 15 84 16 90 C4 18 90 C4 1A 91 1B 84 1C 91' DC H'C4 1E 91 C4 20 91 C4 22 95 C4 24 91 25 C0 26 91' DC H'C4 28 95 C4 2A 91 2B 84 2C 81 2D A4 2E A1 2F A0' DC H'30 A1 31 A8 32 A9 33 A8 34 A9 36 A8 38 AA 41 A8' DC H'47 A0 4C A1 4E 81 51 80 04 54 14 57 50 59 84 5A' DC H'81 5B 84 5C 81 5D 84 5E 81 5F 84 60 81 61 84 62' DC H'81 63 84 64 81 65 84 66 81 67 84 68 81 69 84 6A' DC H'81 6B 84 6C 85 6D 84 6E 85 6F 94 70 91 71 94 72' DC H'91 73 85 74 91 75 85 76 91 C5 78 95 C4 7A 95 C5' DC H'7C 95 C5 7E 95 C5 80 95 C4 82 95 C5 84 91 D5 85' DC H'D1 D5 D1 D5 90 95 80 D5 80 C0' END (JUNGLE_SCREEN) STEP0 START END HIDATA START OBJ $6880 GRID ENTRY DC H'00 2D 35 53' DC H'04 FC FA F9 F8 F8 16 80 F8 F9 2C D5 F9 FA 2C AA' DC H'2D D5 FA FC 01 FF 16 80 FF FC AA 01 FE 16 82 FE' DC H'FA FC F9 2D AA 01 F7 F8 F7 FA FC F9 2D AA 01 DF' DC H'F8 DF FA FC F9 2D AA FC FA 01 FE F8 FE F9 2D AA' DC H'FC FA 01 FB F8 FB F9 2D AA FC FA 01 EF F8 EF F9' DC H'2D AA FC FA 01 BF F8 BF F9 2D AA FC FA FC F9 2D' DC H'AA 01 FD F8 FD FA FC F9 2D AA 01 F7 F8 F7 FA FC' DC H'F9 2D AA 01 DF F8 DF FA FC F9 2D AA FC FA 01 FE' DC H'F8 FE F9 2D AA FC FA 01 FB F8 FB F9 2D AA FC FA' DC H'01 EF F8 EF F9 2D AA FC 1A 7F 1C FF FA 01 7F FF' DC H'F8 7F 1C FF 2A 7F F9 2D' PAPER ENTRY DC H'2F 91 38 50' DC H'02 FD FB FB 80 91 00 30 FB FD 80 91 00 30 7F FD' DC H'02 30 2A 00 33 2A 35 02 2A 0A 22 08 3A 62 FC 3C' DC H'7E 3D 7F 4B 7E 4C 7C 4F 7F 52 7E 53 7C 59 7E 5B' DC H'6F 47 48 4A 60 62 61 72 62 78 63 7C 64 7E 66 7F' DC H'6A 78 60 42 4A 40 6F 7C 70 7F 78 7C 79 79 71 67' DC H'07 3F 7E 7F 87 7E 8B 7C 78 8E 60 40 00 91 05 30' DC H'64 31 70 32 40 05 34 55 35 41 00 37 79 38 7C 39' DC H'7F 7C 1F 7D 80 4F 47 37 47 33 43 33 43 33 43 37' DC H'47 0F 8C 1F 7F 90 FD 33 7E 34 78 35 72 36 78 37' DC H'7F 88 7E 7F 7E 7F 76 78 61 07 FD 90 FD 88 FF 90' DC H'FD 88 FF 8D 7F 90 FD 90 FD 74 FF 75 7F 90 FD 74' DC H'FF 75 7F 90 FD 74 FF 75 7F 90 FD 74 FF 75 7F 90' DC H'FD 74 FF 75 7F 90 FD 74 FF 75 7F 90 FD 74 FF 75' DC H'7F 90 FD 74 FF 75 7F 90 FD 74 FF 75 7F 90 FD 74' DC H'FF 75 7F 90 FD 74 FF 75 7F 90 FD 8D FF 8F 7F FB' DC H'FF 31 7F 8B FF 8E BF 7F FB FF 34 7F 8B FF 8D BF' DC H'80 7F FD 33 5F 35 7F 37 3F 38 7F 85 FF 87 BF 9F' DC H'8A CF E3 F8 FE 7F 90 FB 2F 2B 2A 34 2B 21 08 23' DC H'09 2F 1F 3B 3F 3D 7F 51 3F 53 7F 63 FF 75 7F FF' DC H'80 7F 84 BF C1 7C 7E 89 7F 8C 3F 1F 07 A0 AC 91' DC H'00 30 79 31 65 15 33 55 34 51 35 45 15 37 54 38' DC H'51 39 54 3A 51 3B 44 11 05 3E 3F 49 4F 4B 1F 3F' DC H'4F 1F 47 50 52 55 53 54 51 03 FF 58 8F D7 5A 8F' DC H'FF 5C 8F D7 5F 8F FF 72 9F CF 75 DF C3 D5 C3 DF' DC H'C3 D5 C3 7E DF 9F FF F7 B3 B9 9C 9F CF 88 C7 C3' DC H'81 D0 D4 8E 95 85 95 91' COLUMNS ENTRY DC H'2F 91 38 50' DC H'08 FF FE FD FC FB FA F9 F8 F8 7F 37 F8 F9 67 0F' DC H'F9 FA 73 78 FA FB 7F 40 FB FC 7F 80 91 FC FD 66' DC H'67 FD FE 80 30 00 FE FF 7F 00 FF 02 30 2A 00 33' DC H'2A 35 02 2A 0A 22 08 3A 62 1C 3C 40 30 0C 3F 60' DC H'40 7F 41 5F 42 77 43 7F 45 47 1F 47 5F 06 49 7C' DC H'4A 78 03 4C 5F 40 4E 7F 1F 51 0F 52 7E 53 7C 00' DC H'55 7C 04 57 70 38 4E 3E 0F 47 48 4A 60 62 61 72' DC H'62 78 63 7C 36 06 FD 67 73 68 7F 4F 38 60 02 0A' DC H'40 00 70 7F 0F 67 73 73 33 76 73 84 F9 7F 03 73' DC H'8B 33 73 8E 03 FF 91 05 30 64 31 70 32 40 05 34' DC H'55 35 41 00 19 0C 39 4B 3A 64 33 3C 79 3D 6C 3E' DC H'7F 3F 7B 40 7E 41 7F 45 1F 46 4E 47 4F 48 4E 1F' DC H'4A FF 4C 4F 4E 7F 30 33 54 30 55 FF 57 FF 59 7F' DC H'5A 7C 5B 78 37 5D 7F 5F 0F 07 61 73 62 79 63 7C' DC H'64 7E 4E 30 67 79 68 7F 6A 00 6B 7F 60 FD 60 70' DC H'FF 5F 58 57 76 58 5F 7D 0F 67 33 82 F9 FF 3E 88' DC H'FB 4C 8C 4F 8E 40 FC 00 30 7F 33 7E 34 78 35 72' DC H'36 78 00 38 7F 39 7D 3A 7F 3C 70 3D 60 19 07 40' DC H'7F 42 4F 1F 44 FF 46 79 03 48 FF 4A FF 1F 4E 7F' DC H'4F 60 50 66 06 52 7E 54 00 55 FF 57 FB 3F 31 20' DC H'07 0F 3F 60 3E 3C 39 33 37 23 0C 5C 3F 5F 60 3F' DC H'00 0C 6E 7C 00 70 FF 72 7D 0D 74 75 76 0D 77 7D' DC H'7D 78 73 66 82 FA FF 7E 88 7F 01 19 8C 79 8E 01' DC H'FC 00 30 F8 7E 38 7C 39 79 3A 73 43 70 44 73 45' DC H'70 46 73 47 70 48 73 49 70 4A 79 4B 7C 4C 7F 4D' DC H'70 4E 73 54 70 55 7F 56 7C 57 79 58 73 69 79 6A' DC H'70 6B 73 6F 70 70 7F 71 78 72 73 67 66 76 67 84' DC H'FA 7E 60 67 8B FD 8E 60 FC 00 91 FE 91 FE 91 FE' DC H'91 FE 91 FE 91 FE 91 FE 91 FE 91 FE 91 FE 91 FE' DC H'91 FE 91 FE 91 FE 91 FE 90 80 91 80 30 F8 0F 38' DC H'67 39 73 3B 03 3C 73 3E 33 3F 73 46 33 47 73 03' DC H'49 73 4A F9 4C 7F 03 4E 73 51 33 52 73 55 03 56' DC H'7F 58 1F 4F 5A 67 5B 73 64 33 43 66 73 33 43 69' DC H'73 67 03 33 6F 73 03 71 7F 0F 67 FA 33 43 73 33' DC H'43 73 84 F9 7F 03 73 8B 33 73 8E 03 FC 00 30 7F' DC H'33 5F 35 F8 00 38 7F 3B 00 0E 3D 41 3E 4F 3F 60' DC H'40 7E 44 01 45 7F 46 7E 47 73 48 7E 49 4C 4A 7C' DC H'00 3E 4E FB 4C 52 4F 55 40 56 FF 58 7E 59 7F 1F' DC H'07 43 5D 71 1D 5F 63 60 7F 62 73 63 67 64 66 65' DC H'79 66 7F 3C 43 69 7F 6C 7E 40 4C 4F 40 71 FF 33' DC H'76 47 77 7F 60 5F 41 7B 7E 7C 7F 1F 4F 41 7C 3C' DC H'83 79 67 00 3E 88 FB 4C 8C 4F 8E 40 FC 00 30 2F' DC H'2B 2A 34 2B 21 36 3F 00 0F 3B 00 1C 19 44 1E 45' DC H'4F 46 7F 48 1F 49 7F 4B 00 3E 4E 7F 01 19 52 39' DC H'53 79 55 01 56 FF 58 7F 5A 7E 5B 7C 5C 7D 5D 5E' DC H'5E 77 1F 0D 07 62 66 63 67 4D 65 F8 67 7F 6D 01' DC H'19 6F 79 01 71 FF 4C 76 63 77 7F 43 3D 61 1F 7C' DC H'7F 7C 79 41 1F 1E 83 4F 73 00 7E 88 7F 01 19 8C' DC H'79 8E 01 FC 00 30 79 31 65 15 33 55 34 51 35 45' DC H'15 37 54 38 51 39 54 3A 51 3B 44 11 05 33 47 30' DC H'33 43 41 18 3E 30 3F 1F 47 50 52 55 53 54 51 00' DC H'56 7F 57 78 58 73 59 67 5C 66 5D 67 5E 60 61 67' DC H'63 66 64 67 6A 73 61 66 6F 67 60 71 7F 72 78 73' DC H'73 67 79 64 63 67 64 63 67 84 FA 7E 60 67 8B FD' DC H'8E 60 FC' SYMBOLS ENTRY DC H'A0 80 F0 80 D8 81 8C 83 86 86 83 8C FF 8F 80 80' DC H'80 80 81 84 83 86 87 87 CF 87 FF 87 CF 87 87 87' DC H'83 86 81 84 F8 81 DE 87 D6 86 D7 8E D6 86 DE 87' DC H'F8 81 80 80 80 80 9C 80 9C 80 9C 80 9C 80 FF 80' DC H'BE 80 9C 80 88 80 80 80 FF 80 FF 80 80 80 FF 80' DC H'FF 80 80 80 80 80 80 80 80 80 8A 80 84 80 8A 80' DC H'9B 80 9B 80 9B 80 9B 80 8E 80 84 80 B3 80 E6 80' DC H'B3 80 E6 80 B3 80 E6 80 E6 80 E6 80 E6 80 FC 80' DC H'86 83 82 82 D7 86 D7 82 D6 83 FC 80 80 80 80 80' DC H'FC 80 82 83 B8 82 B9 86 B8 82 82 83 FC 80 80 80' DC H'80 80 9C 80 9C 80 80 80 FF 81 C1 81 C1 81 FF 81' DC H'80 80 80 80 B3 86 80 80 B3 86 B3 86 B3 86 FF 87' DC H'80 80 80 80 80 80 E6 80 FF 81 FF 81 FE 80 BC 80' DC H'98 80 80 80 80 80 80 80 FC 80 97 83 95 82 95 86' DC H'95 82 97 83 FC 80 80 80 80 80 FF 8F FE 87 FC 83' DC H'F8 81 F0 80 A0 80 80 80 80 80 80 80 FF 83 83 83' DC H'83 83 83 83 83 83 83 83 FF 83 80 80 80 80 F8 81' DC H'86 86 82 84 FF 8F 80 80 80 80 80 80 80 80 80 80' DC H'F8 81 86 86 82 84 83 8C 82 84 86 86 F8 81 80 80' DC H'80 80 E0 80 E0 81 FF 83 FF 87 FF 83 E0 81 E0 80' DC H'80 80 80 80 84 82 F0 80 88 81 85 8A 84 82 88 81' DC H'F2 84 81 88 A0 80 B0 80 98 80 B3 86 E0 80 B3 86' DC H'98 80 B0 80 E0 80 B0 80 88 80 9C 80 BE 80 FF 80' DC H'9C 80 9C 80 9C 80 9C 80 80 80 B0 80 F8 80 CC 81' DC H'86 83 83 86 80 80 80 80 80 80 80 80 F3 8C CE 83' DC H'80 80 B3 8C CC 83 80 80 80 80 80 80 80 80 D8 81' DC H'D8 81 DE 87 DE 87 DE 87 D8 81 D8 81 80 80 80 80' DC H'9E 80 BF 80 B3 80 B0 80 BC 80 8C 80 8C 80 8C 80' DC H'80 80 A0 80 F0 80 F8 81 FC 83 FE 87 FF 8F 80 80' DC H'80 80 80 80' ORCHID ENTRY DC H'43 66 30 37' DC H'00 00 5E 20 00 66 00 4C 40 4E 00 51 40 55 00 5E' DC H'10 60 00 66 00 4B 02 4D 3C 75 73 50 60 2A 15 53' DC H'55 54 54 56 22 48 78 32 56 52 2A 00 66 00 4C 50' DC H'24 0D 69 6D 7B 52 5B 31 34 71 7F 3F 0A 0D 2A 42' DC H'00 5D 60 00 3C 0D 00 66 00 4C 0A 0B 24 37 51 47' DC H'46 54 59 39 2C 18 6E 7C 49 15 00 02 00 66 00 4D' DC H'01 4F 02 03 02 54 04 01 58 04 02 07 05 00 66 00' DC H'66' ORCHID2 ENTRY DC H'43 66 30 37' DC H'00 00 46 20 40 10 30 00 20 00 52 20 48 78 55' DC H'58 4C 04 6C 59 64 54 20 00 66 00 45 05 12 1A 2B' DC H'6F 39 2C 4C 61 4D 60 40 10 50 60 28 4A 1E 37 0D' DC H'73 78 7A 6B 42 15 54 10 14 40 00 62 40 00 66 00' DC H'44 40 45 50 7B 3E 48 5A 2C 6C 2C 4C 4C 32 4E 4F' DC H'13 50 63 0E 53 30 54 66 1D 45 13 2B 34 2A 6B 53' DC H'39 5D 33 5F 5C 78 62 00 66 7A 44 76 71 77 35 3F' DC H'2E 49 4C 02 72 33 05 07 29 12 53 5D 4D 68 44 29' DC H'28 02 0A 2E 4A 2B 13 12 AE 6A 7E 3F 0A 08 66 02' DC H'44 01 0F 11 34 29 3A 4B 1E 3D 4D 66 6B 7C 1C 0C' DC H'1D 53 62 29 30 49 25 70 31 30 4D 75 7B 7D 5F 64' DC H'1D 27 0D 1B 00 66 00 4A 2C 2B 2A 0B 03 13 50 59' DC H'6C 27 4D 71 55 5E 56 5F 3A 39 55 6E 29 6C 34 00' DC H'60 01 00 66 00 49 55 15 05 00 50 02 23 27 1D 54' DC H'56 55 5B 74 25 2A 0A 00 66' NO_ORCHID ENTRY DC H'43 66 30 37' DC H'00 28 47 20 22 4A 0A 4C 2A 53 0A 08 00 57 02 2A' DC H'5B 28 5D 20 22 60 20 62 22 66 01 44 05 46 15 49' DC H'51 45 4B 54 4C 50 41 05 50 01 50 52 54 53 55 55' DC H'05 51 50 59 41 45 15 5D 55 44 11 05 15 55 53 55' DC H'45 66 03 45 23 47 26 49 2C 20 22 02 4E 0A 00 51' DC H'2A 55 28 22 0A 5A 2A 5D 28 08 22 08 00 63 02 65' DC H'0A 66 45 44 55 45 51 46 55 17 15 45 4B 51 4C 50' DC H'4D 54 14 44 40 50 51 54 45 01 19 3C 00 27 0A 4E' DC H'5C 60 5D 61 31 04 81 40 54 64 15 45 66 0A 44 02' DC H'46 00 28 2A 4B 0A 22 28 2A 51 0A 22 54 28 08 20' DC H'28 2A 29 28 09 20 28 5F 00 28 2A 63 32 2A 66 15' DC H'44 54 46 40 01 4A 54 4B 55 15 05 41 4F 51 50 54' DC H'51 55 05 51 54 54 55 55 57 15 45 51 54 55 15 05' DC H'41 40 15 55 65 15 66 0A 44 0B 2A 47 00 49 2A 0A' DC H'02 28 2A 51 00 2A 56 00 2A 59 0A 02 20 28 2A 5F' DC H'0A 20 0A 2A 02 20 28 66' MONKEYS ENTRY DC H'14 2A 30 35' DC H'00 D4 15 D2 CA C8 A9 A3 A0 A9 C8 C6 CF 21 CD C6' DC H'D3 D0 D5 27 95 85 20 2A AA 26 82 80 54 55 2A D5' DC H'23 95 25 A5 A8 C0 0A 29 2A 2A AA 22 94 D5 25 80' DC H'B6 E3 80 BE 2A D5 23 D4 D2 26 CA C8 C1 08 2A' MONKEYS2 ENTRY DC H'14 2A 30 35' DC H'00 CA 15 AA 17 80 9B B1 80 9F 8E E0 FB 21 DB E0' DC H'B1 8E C0 8A 29 20 2A AA 16 A9 18 A5 A4 1B A5 A9' DC H'A8 A9 22 A8 AA 26 82 80 54 55 2A D5 1F 95 21 A5' DC H'A9 89 25 A9 A0 C0 4A 29 2A 2A AA 1E 94 D5 21 80' DC H'B6 E3 80 BE 9C C1 F7 BE 2A D5 1F D4 D2 22 CA C8' DC H'25 CA C2 C1 29 08 2A' MONKEYS3 ENTRY DC H'14 2A 30 35' DC H'00 95 15 A5 17 89 CA E2 82 CA 89 B1 F9 21 99 B1' DC H'E1 82 8A AA 28 8A 20 2A A5 15 95 D5 C0 CD 98 80' DC H'CF C7 B0 FD 20 F8 E0 B0 98 87 D0 D5 80 54 55 2A' DC H'D5 16 D4 18 92 1A A2 A8 88 1E A8 A4 C4 E4 23 E5' DC H'25 C4 82 A0 0A 29 2A 2A AA 17 94 D5 1A 80 B6 E3' DC H'80 BE 9C C1 F7 23 E3 80 C1 E3 9C C1 D4 2A D5 18' DC H'D4 D2 1B CA C8 1E CA D2 D1 D3 25 D1 D0 D2 80 08' DC H'2A' MONKEYS4 ENTRY DC H'14 2A 30 35' DC H'00 95 15 A5 18 A9 89 1B A9 81 85 E5 F5 22 E5 C1' DC H'8A AA 28 8A 20 2A A5 15 95 D5 81 E6 B3 E6 80 F6' DC H'8F DF 20 DE 81 83 BF 9F C0 95 80 54 55 2A D5 16' DC H'D4 18 94 1B A5 A4 1E A5 85 95 22 C5 25 84 80 A0' DC H'0A 29 2A 2A AA 17 94 D5 1A 85 99 CC 98 81 D8 BC' DC H'FF 23 FB 87 8F FE FC 81 D4 2A D5 18 D4 D2 D0 D3' DC H'D1 D3 D4 D3 D0 D6 24 D4 26 D5 D4 80 08 2A' MONKEYS5 ENTRY DC H'14 2A 30 35' DC H'00 95 15 A5 A9 81 D9 8D D9 85 B9 C1 ED 21 85 23' DC H'F5 E2 8A AA 28 8A 20 2A A5 15 95 17 D4 D1 C3 C1' DC H'D0 8F 9F BF 20 BD BC 9E AF A7 90 D5 80 54 55 2A' DC H'D5 17 D4 94 A4 84 E4 B5 E5 95 E5 85 B5 24 95 26' DC H'D0 A8 0A 29 2A 2A AA 17 94 D5 1A D0 86 8C 86 C0' DC H'BD FE FF 23 F7 F0 F8 BF 9F C0 D5 2A D5 18 D4 1A' DC H'D2 1F D4 21 D5 25 D4 D5 28 82 08 2A' MONKEYS6 ENTRY DC H'14 2A 30 35' dc H'00 95 15 A5 C5 E9 88 C2 82 A2 E9 F1 99 B9 F9 22' dc H'F1 C1 8A AA 28 8A 20 2A A5 15 80 8D D8 C0 8F 87' dc H'90 DD B8 E0 F0 F8 FF BF 8F D0 D5 27 80 54 55 2A' dc H'D5 16 D4 18 90 92 A2 1C A0 88 84 A4 C4 E4 25 C2' dc H'8A A0 0A 29 2A 2A AA 17 94 81 B6 E3 80 BE 9C C1' dc H'F7 E3 80 C1 E3 FF 26 BE 80 C1 D4 2A D5 18 D4 D0' dc H'D2 C2 C8 1F C2 D1 D3 25 D1 D0 D2 80 08 2A' NO_MONKEYS ENTRY DC H'14 2A 30 35' DC H'00 D5 27 95 85 20 2A AA 26 82 80 54 55 2A D5 26' DC H'D4 C0 0A 29 2A 2A AA 2A D5 28 81 08 2A' WALK ENTRY DC H'01 2A 30 56' DC H'03 FF FE FD FD 18 30 FD FE 00 03 FE FF 00 2A 00' DC H'FF 00 04 0E 3B 63 46 08 0C 33 4C 33 4C 36 0C 36' DC H'10 FD FF 05 60 70 39 3B 33 61 FE 06 6C 0F FD 00' DC H'40 70 7C 3C 16 1C 00 40 60 1C 00 60 24 00 40 00' DC H'60 70 2A 00 02 70 00 7F 03 7C 00 30 09 0F 7E 0B' DC H'0E 7E 7C 78 30 03 67 13 61 64 4C 16 1B 30 67 0F' DC H'7F 1C 00 77 20 67 24 00 63 00 63 00 63 2A 00 04' DC H'03 05 0E 06 19 38 09 1B 03 0D 01 06 0F 1E 03 3B' DC H'03 3B 73 3B 16 18 07 0C 06 00 07 FE 24 00 01 FE' DC H'07 2A FE 1C 76 46 06 0C 07 18 66 09 18 06 0B 18' DC H'0C 0C 0D 18 FF 03 40 70 39 3B 73 41 43 06 0B 0C' DC H'78 70 0F 38 10 1C 0C 60 00 70 16 78 18 00 78 1D' DC H'38 1F 00 1C 00 1E 07 1F 00 2A 06 02 FE 1F 70 6F' DC H'60 70 08 1F 09 19 0A 0F 36 78 3D 7D 0F 18 06 0C' DC H'33 60 0F 15 1F 3F 18 00 19 1E 1B 1C 00 1C 00 1C' DC H'30 7C 70 FF 05 01 07 00 0C 01 FE 00 03 13 07 06' 100 DC H'03 FF 03 06 04 1B 33 66 7C 73 09 0F 07 0B 0E 0C' DC H'0C FF 03 60 70 30 60 40 41 03 06 6C 70 78 0E 1C' DC H'0C 60 70 00 70 15 00 38 00 18 1C 19 1E 0E 00 2A' DC H'06 02 FE 1F 30 6F 30 07 1F 08 0D 07 00 3C 6C 01' DC H'66 6C 59 63 00 0E 17 00 0E 00 0E 1B 1F 1D FF 10' DC H'01 12 00 2A 0E 02 33 36 7E 4E 06 0C 00 0A 40 0C' DC H'00 2A 30 02 7C 46 7C 39 33 40 6C 6E 53 61 0C 0C' DC H'7C 66 4E 0E 40 06 07 FF 03 01 00 07 01 03 00 01' DC H'0C 00 0F 01 00 01 FF 2A 00 02 4C 03 1E 05 70 60' DC H'70 40 60 0B 00 2A 03 02 07 03 03 FE 06 0C 07 07' DC H'03 00 06 0C FF 2A FF 04 40 06 60 30 09 60 40 00' DC H'0D 70 78 7C 70 6E 70 66 0F 47 03 70 19 78 1C 00' DC H'78 24 00 70 00 78 40 78 2A 00 02 0C 33 7F 07 5F' DC H'4E 60 3F 00 0C 1F 40 7F 14 00 3F 00 3F 7F 1C 00' DC H'7F 1F 71 79 24 00 38 00 3C 61 7D 2A 00 06 40 61' 200 DC H'41 30 0A 18 0B 0C 06 01 03 07 01 0F 00 06 0E 16' DC H'06 00 1B 01 FF 03 38 66 33 06 19 4C 67 09 18 66' DC H'0B FD 0D 18 06 FF 03 40 05 60 07 40 00 0B 70 78' DC H'70 6C 60 66 0E 47 03 60 16 70 18 78 00 70 20 00' DC H'38 00 3C 60 7C 00 2A 0C 02 33 7F 05 5F 4E 61 3F' DC H'00 0A 1F 61 7F 0F 3F 11 00 3F 00 3F 16 7F 19 00' DC H'3F 38 3C 1E 00 1C 00 3E 38 0E FF 05 01 07 00 0A' DC H'40 61 43 70 37 00 06 07 13 03 00 18 01 FF 08 1E' DC H'33 0A 19 0B 0C 67 0D 18 66 0F FD 0C FF 02 60 04' DC H'70 30 60 00 60 38 70 76 70 76 07 73 00 78 13 7C' DC H'00 38 00 0E 00 0F 0C 47 00 40 00 2A 03 02 0C 03' DC H'07 33 05 18 06 0F 00 07 09 1C 0A 1F 3F 0C 0F 37' DC H'30 73 60 07 13 0F 00 07 18 00 07 00 07 0C 0F FF' DC H'05 60 30 07 18 4C 78 0A 0C 46 03 40 01 10 FF 05' DC H'01 03 08 05 06 07 0C 03 01 00 2A 70 02 78 03 0C' 300 DC H'78 00 70 07 0C 7E 78 77 03 78 0E 1C 10 0C 00 06' DC H'0E FF 03 63 71 05 18 78 4F 67 01 06 0C FE 10 FE' DC H'FF 03 01 03 07 01 FF 2A 18 02 3C 03 18 40 05 1C' DC H'66 3F 08 1C 06 36 30 FF 03 06 04 0D 05 0C 00 2A' TALK ENTRY DC H'0B 76 50 56' dc H'00 00 2F 80 00 62 20 64 08 20 00 28 00 28 48 6C' dc H'40 20 00 28 68 48 60 20 00 76 00 2E 80 30 50 14' dc H'33 50 2E 35 6F 36 4F 38 7F 77 3A 66 E0 3C 40 00' dc H'4C 40 00 40 51 00 40 54 00 61 15 54 64 14 63 36' dc H'00 08 7F 41 49 6B 36 41 00 63 1C 40 36 48 14 76' dc H'00 32 08 33 46 34 6D 09 0D 38 0B 34 38 23 3C 43' dc H'00 4A 40 4D 00 AE BB E3 51 60 0D 39 0A 00 62 08' dc H'02 65 0A 68 00 0A 09 6C 01 02 00 02 03 72 01 00' dc H'76 48 0C 68 0D 22 0F 02 10 27 11 15 12 5F 13 72' dc H'14 20 15 70 16 72 17 1F 0D 07 1A 4A 08 00 30 05' dc H'14 32 51 33 54 34 41 35 40 00 39 40 11 01 3C 50' dc H'00 4B 02 0B 4E 08 00 02 01 03 04 00 76 75 0D 0C' dc H'0E 26 0F 64 10 51 11 33 12 65 09 10 14 17 48 18' dc H'6A 19 69 1A 57 1B 50 00 1F 04 00 22 11 00 27 50' dc H'00 2B 41 00 04 00 30 10 00 34 02 37 0A 39 02 22' dc H'00 76 00 0C 02 0E 0A 0F 28 11 20 00 1D 20 1E 3A' dc H'1E 04 1A 1C 23 26 00 76' ANSWERS ENTRY DC I1'AS0-ANSWERS,AS1-ANSWERS' DC I1'A00-ANSWERS,A01-ANSWERS,A10-ANSWERS,A11-ANSWERS' DC I1'A20-ANSWERS,A21-ANSWERS,A30-ANSWERS,A31-ANSWERS' DC I1'A40-ANSWERS,A41-ANSWERS,A50-ANSWERS,A51-ANSWERS' DC I1'A60-ANSWERS,A61-ANSWERS,A70-ANSWERS,A71-ANSWERS' DC I1'A80-ANSWERS,A81-ANSWERS,A90-ANSWERS,A91-ANSWERS' AS0 DC H'06',C'jungle' AS1 DC H'00' A00 DC H'07',C'nervous' A01 DC H'06',C'system' A10 DC H'06',C'spinal' A11 DC H'04',C'cord' A20 DC H'05',C'nerve' A21 DC H'05',C'cells' A30 DC H'0A',C'peripheral' A31 DC H'00' A40 DC H'08',C'cerebrum' A41 DC H'00' A50 DC H'0A',C'cerebellum' A51 DC H'00' A60 DC H'05',C'brain' A61 DC H'04',C'stem' A70 DC H'07',C'medulla' A71 DC H'00' A80 DC H'05',C'bones' A81 DC H'00' A90 DC H'09',C'vertebrae' A91 DC H'00' QUESTIONS ENTRY DC A'QS-1,Q0-1,Q1-1,Q2-1,Q3-1,Q4-1,Q5-1,Q6-1,Q7-1,Q8-1,Q9-1' QS DC C'Welcome to the }' Q0 DC C'Your sense organs and all the nerve cells in your body make up the }' Q1 DC C'The bundle of nerves that goes down the back from the brain is the }' Q2 DC C'Your brain, spinal cord, and nerves are made up of }' Q3 DC C'Nerves that taste food and feel heat, pain and pressure are part of the|\',H'0C',C'nervous system }' Q4 DC C'The large mass of wrinkled tissue at the top of the brain is the }' Q5 DC C'The part of the brain that coordinates muscle action is the }' Q6 DC C'The brain part that sits at the top of the spinal cord is the }' Q7 DC C'Breathing, heart beat, and vessel contraction are controlled by the }' Q8 DC C'The brain and spinal cord are protected by membranes, fluid, and }' Q9 DC C'The spinal cord fits through 26 interlocking hollow bones called }' TRUEFALSES ENTRY DC A'TF0-1,TF1-1,TF2-1,TF3-1,TF4-1,TF5-1,TF6-1,TF7-1,TF8-1,TF9-1,TFA-1' TF0 DC C'Your nervous system functions to circulate your blood. }' TF1 DC C'The brain and spinal cord are part of the peripheral nervous system. }' TF2 DC C'The spinal cord is a muscle. }' TF3 DC C'The peripheral nervous system includes all nerves except those in the brain and spinal cord. }' TF4 DC C'The cerebrum controls involuntary movements like breathing and heartbeat. }' TF5 DC C'The cerebrum is divided into two halves. }' TF6 DC C'The brain stem contains the cerebellum. }' TF7 DC C'The medulla is part of the peripheral nervous system. }' TF8 DC C'Fluid surrounding the brain acts like a shock absorber to protect it from sudden movements. }' TF9 DC C'The spinal cord is protected by the skull. }' TFA DC C'Press T for True or F for False. }' TF_COR ENTRY DC C'ffftftfftf' TEXTS ENTRY DC A'T00-1,T01-1,T02-1,T03-1,T04-1,T05-1,T06-1,T07-1,T08-1,T09-1,T0A-1,T0B-1,T0C-1,T0D-1,T0E-1,T0F-1,T10-1,T11-1,T12-1,T13-1' T00 DC C'Chip the Chimp and his friends have found some mysterious messages written in code. Help Chip and his friends decode the messages. }' T01 DC C'Type letters to fill in the blanks. Press Return when done. Press ? if you need a clue. }' T02 DC C'Press Space to see a sample question. }' T03 DC C'YES! What a brainchild! }' T04 DC C'GREAT! You must have had brainfood for breakfast. }' T05 DC C'What a brain! You broke the code! }' T06 DC C'Here comes Dr. Micro with his net. Help him catch the right answer to the next question. }' T07 DC C"You didn't eat your brainfood this morning. }" T08 DC C'You have jungle fever and missed the message. }' T09 DC C'Try again. }' T0A DC C'Let me help you. }' T0B DC C"Uh-oh. You've been brainwashed! The answer is }" T0C DC C"Right. That's a brainy answer. }" T0D DC C"Great! That's real food for thought. }" T0E DC C"Let's decode another message. }" T0F DC C"Sorry. }" T10 DC C"Right! }" T11 DC C"This statement is }" T12 DC C"true. }" T13 DC C"false. }" CORRECT_ANSWERS ENTRY DC A'CA0-1,CA1-1,CA2-1,CA3-1,CA4-1,CA5-1,CA6-1,CA7-1,CA8-1,CA9-1' CA0 DC C'$nervous system.* }' CA1 DC C'$spinal cord.* }' CA2 DC C'$nerve cells.* }' CA3 DC C'$peripheral.* }' CA4 DC C'$cerebrum.* }' CA5 DC C'$cerebellum.* }' CA6 DC C'$brain stem.* }' CA7 DC C'$medulla.* }' CA8 DC C'$bones.* }' CA9 DC C'$vertebrae.* }' TF_ANSWERS ENTRY DC A'TA0-1,TA1-1,TA2-1,TA3-1,TA4-1,TA5-1,TA6-1,TA7-1,TA8-1,TA9-1' TA0 DC C"Your nervous system functions to control your body's activities so you can react to your environment. }" TA1 DC C"The brain and spinal cord are part of the central nervous system. }" TA2 DC C"The spinal cord is not a muscle. It is a bundle of nerves running from your brain down the center of your back. }" TA3 DC C"The peripheral nervous system includes all nerves except those in the brain and spinal cord. }" TA4 DC C"The cerebrum controls voluntary movements like walking and talking. }" TA5 DC C"The cerebellum is divided into two halves. }" TA6 DC C"The brain stem does not contain the cerebellum. The brain stem contains the medulla. }" TA7 DC C"The medulla is located in the brain stem and is part of the central nervous system. }" TA8 DC C"Fluid surrounding the brain acts like a shock absorber to protect this delicate tissue from sudden movements. }" TA9 DC C"The spinal cord is protected by vertebrae and the brain is protected by the skull. }" BUTTERFLY_S ENTRY dc H'30 00 00 00 08 00 06 00 08 00 08 00 10 00 08 00' dc H'20 00 04 00 40 00 02 00 1C 01 39 00 36 5A 6C 00' dc H'63 18 46 01 43 01 43 01 03 5B 41 01 73 5B 4F 01' dc H'1E 43 79 00 5E 5B 7B 00 78 43 1F 00 00 5B 01 00' dc H'40 43 03 00 70 5B 0F 00 38 42 1C 00 1C 5B 39 00' dc H'1C 66 38 00 1C 66 38 00 38 66 1C 00 70 43 0F 00' dc H'60 01 07 00 30 00 00 00 08 00 06 00 08 00 08 00' dc H'10 00 08 00 20 00 04 00 40 00 02 00 00 01 01 00' dc H'00 5A 00 00 60 18 06 00 60 01 07 00 70 5B 0F 00' dc H'30 5B 0D 00 30 43 0D 00 60 5B 07 00 40 43 03 00' dc H'00 5B 01 00 00 43 01 00 00 5B 01 00 00 43 01 00' dc H'40 5B 03 00 60 66 06 00 60 66 06 00 60 67 07 00' dc H'40 43 03 00 00 01 01 00' EYES_S ENTRY dc H'8E 8E 9F 9F 83 83 83 83 83 83 9F 9F 8E 8E 80 80' dc H'80 80 8E 8E 9F 9F 9C 9C 9C 9C 9C 9C 9F 9F 8E 8E' CIRCLE_S ENTRY dc H'00 00 00 7E 0F 00 00 00 00 00 70 01 70 01 00 00' dc H'00 00 0C 00 00 06 00 00 00 00 03 00 00 18 00 00' dc H'00 60 00 00 00 60 00 00 00 30 00 00 00 40 01 00' dc H'00 18 00 00 00 00 03 00 00 0C 00 00 00 00 06 00' dc H'00 06 00 00 00 00 0C 00 00 03 00 00 00 00 18 00' dc H'40 01 00 00 00 00 30 00 60 00 00 00 00 00 60 00' dc H'60 00 00 00 00 00 60 00 30 00 00 00 00 00 40 01' dc H'30 00 00 00 00 00 40 01 18 00 00 00 00 00 00 03' dc H'18 00 00 00 00 00 00 03 0C 00 00 00 00 00 00 06' dc H'0C 00 00 00 00 00 00 06 0C 00 00 00 00 00 00 06' dc H'0C 00 00 00 00 00 00 06 06 00 00 00 00 00 00 0C' dc H'06 00 00 00 00 00 00 0C 06 00 00 00 00 00 00 0C' dc H'06 00 00 00 00 00 00 0C 06 00 00 00 00 00 00 0C' dc H'06 00 00 00 00 00 00 0C 06 00 00 00 00 00 00 0C' dc H'0C 00 00 00 00 00 00 06 0C 00 00 00 00 00 00 06' dc H'0C 78 0F 00 00 00 00 06 0C 40 01 00 00 00 00 06' dc H'18 40 41 0F 33 3C 00 03 18 40 41 19 33 66 00 03' dc H'30 40 41 01 33 7E 40 01 30 40 41 01 33 06 40 01' dc H'60 40 41 01 3E 7C 60 00 0C 7E 03 60 00 00 00 06' dc H'0C 06 00 60 00 00 00 06 18 06 60 63 78 71 01 03' dc H'18 7E 00 66 0C 18 03 03 30 06 60 67 78 78 43 01' dc H'30 06 30 66 40 19 40 01 60 06 60 67 7C 70 63 00' dc H'60 00 00 00 00 00 60 00 40 01 00 00 00 00 30 00' dc H'00 03 00 00 00 00 18 00 00 06 00 00 00 00 0C 00' dc H'00 0C 00 00 00 00 06 00 00 18 00 00 00 00 03 00' dc H'00 30 00 00 00 40 01 00 00 60 00 00 00 60 00 00' dc H'00 00 03 00 00 18 00 00 00 00 0C 00 00 06 00 00' dc H'00 00 70 01 70 01 00 00 00 00 00 7E 0F 00 00 00' ZZZ_DATA ENTRY END (HIDATA) STEP1 START END g =='?(??MAKEMAX +  MACGEN {1} MAX/{1} MAX/MACROS g =='?(??BOOT/X-  *===============================================================* 65816 OFF 65C02 OFF LONGA OFF LONGI OFF MSB ON ORG $801 KEEP OBJ/BOOT COPY ZPAGE MCOPY MAX/BOOT *------------ os gequ 1 0: DOS 3.3 1: ProDOS devel gequ 1 0: FINAL 1: TESTING *===============================================================* INIT_DRAW_ROUTINES START *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BUFFER_PTR EQU $F0 NAME_BYTES EQU 17 Max # bytes in name NAME_CHARS EQU 20 Max # chars in name NAME_S EQU OPTST-NAME_CHARS-1 ($3BA) student's name OPTST EQU $3CF sound flag *------------ aif os,.a DC H'0B 08 0A 00 8C 32 30 36 31 00 00 00' 10 CALL 2061 ago .b .a DC H'EA EA EA EA EA EA EA EA EA EA EA EA' .b *------------ LDY #$62 Set new DOS buffer at $6000-$6252 STY $9D01 LDY #$2D STY $9D00 LDA #0 Set ($6200-$6252) to zero LDY #$52 _00 STA $6200,Y DEY BNE _00 _01 LDA _02,Y BEQ _03 JSR COUT INY BNE _01 _02 DC H'95 8D 84',C'MAXFILES1',H'8D 00' _03 ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR MOVEIT Install DRAW,FONT,UNCRUNCH (A=0) *===============================================================* LC_CHECK ANOP Detects language card *------------ aif os,.c LDX $C08B DOS 3.3 - Read RAM MAIN $D000 bank 1 ago .d .c JMP NOLC ProDOS - don't bother .d *------------ LDX $C08B Write RAM MAIN $D000 bank 1 LDA $D000 LDX $C081 Read ROM $D000 LDX $C081 Write RAM MAIN $D000 bank 2 LDX $C083 Read RAM MAIN $D000 bank 2 LDX $C083 EOR #$FF STA $D000 CMP $D000 Test 1: Did the value change PHP LDX $C08B Read RAM MAIN $D000 bank 1 LDX $C08B Write RAM MAIN $D000 bank 1 CMP $D000 Test 2: Did it also change bank 1 PHP LDX $C089 Read ROM MAIN $D000 bank 1 LDX $C089 Write RAM MAIN $D000 bank 1 PLA PLP BNE NOLC Test 1: Should be equal PHA PLP BEQ NOLC Test 2: Should not be equal *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA $C068 status register AND #%11111001 bit 1 off ORA #%00000100 bit 2 on STA $C068 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA $C081 language card present - read ROM... LDA $C081 & write RAM LDA #4 JSR MOVEIT RAM $F800-$FFFF <- ROM $F800-$FFFF *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA $C083 set card for writing LDA $C083 LDA #1 JSR MOVEIT Install RAMDisk *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #FSEARCH STA FLOAD+2 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$4C STA INIT_R JSR INIT_R Init RAM DISK routines *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Ram disk configuration: * AUX_MEM = 00 for not 64K : : 80 : 00 * 80 for 64K : : : * INIT_R = 4C for >48K : 60 : : 4C * = 60 for 48K or less : 48K 64K 128K *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NOLC ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #2 JSR MOVEIT Install TUNC *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_DRAW *------------ aif devel,.e *------------ LINK_LETTER $37,$56 POINT LINE_PTR,LINES *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #0 STA ADPAGE draw 1 view 2 JSR FLIP draw 2 view 1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* UNCRUNCH TROLL_LOGO *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #0 STA ADPAGE draw 1 view 2 BOX BLACK0,0,0,39,191 black screen on 1 JSR FLIP draw 2 view 1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BIT $C052 BIT $C050 BIT $C057 ziew black screen on 1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$64 STA HOW_SLOW JSR MOVE_TO_VISIBLE scroll logo on *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* UNCRUNCH TITLE LDA #$32 STA HOW_SLOW JSR MOVE_TO_VISIBLE *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* GET_NAME LDA #0 STA HOW_SLOW JSR BORDER JSR ONE_PAGE LINE 1 M 'Please type your name,|then press Return. ' BOX WHITE,10,78,$60,27,78,$63 underline for input echo JSR MOVE_TO_VISIBLE LDA #$3A position input echo LDX #70 LDY #$60 STA LETTER+4 STX LETTER+5 STY LETTER+6 POINT TABLE,LETTER BIT $C010 LDY #0 STY 'WHITE',.C2 &L ASEARCH '&A',0,1 AIF &L=0,.C1 DC H'7F' AGO .C9 .C1 DC H'FF' AGO .C9 .C2 AIF '&A'<>'BLACK',.C4 &L ASEARCH '&A',0,1 AIF &L=0,.C3 DC H'00' AGO .C9 .C3 DC H'80' AGO .C9 .C4 AIF '&A'<>'RED',.C5 DC H'AA' AGO .C9 .C5 AIF '&A'<>'ORANGE',.C51 DC H'AA' AGO .C9 .C51 AIF '&A'<>'BLUE',.C6 DC H'D5' AGO .C9 .C6 AIF '&A'<>'PURPLE',.C7 DC H'55' AGO .C9 .C7 AIF '&A'<>'VIOLET',.C71 DC H'55' AGO .C9 .C71 AIF '&A'<>'GREEN',.C8 DC H'2A' AGO .C9 .C8 MNOTE 'Unknown BOX color',4 JUNK COLOR .C9 AIF &B>$27,.E1 AIF &C>$BF,.E1 DC I1'&B,&C' AIF (C:&G)=0,.J &H SETA &D-$60 &I SETA $66-&G AIF &E>$27,.E1 AIF &F>$BF,.E1 DC I1'&E,&F,$FF|&H,$7F|-&I+$80' MEXIT .J AIF &D>$27,.E1 AIF &E>$BF,.E1 DC I1'&D,&E,$FF,$FF' MEXIT .E1 MNOTE 'BOX out of range',4 Out of screen range MEND *=========================- * INV left,top,right,bottom (INCLUSIVE) * INV left,top,left shift,right,bottom,right shift * * See BOX * * translates to: * * JSR INVERT * DC H'7F,left,top,right,bottom,left shift mask,right shift mask' *:::::::::::::::::::::::::- MACRO &LAB INV &A,&B,&C,&D,&E,&F LCLA &H LCLA &I LCLA &L &LAB JSR INVERT DC H'7F' DC I1'&A,&B' AIF (C:&F)=0,.J &H SETA &C-$60 &I SETA $66-&F DC I1'&D,&E,$FF|&H,$7F|-&I+$80' MEXIT .J DC I1'&C,&D,$FF,$FF' MEND *=========================- * INC2 &A * * Increment pointer &A (&A,&A+1) by two *:::::::::::::::::::::::::- MACRO &LAB INC2 &A &LAB INC &A BNE INC&SYSCNT INC &A+1 INC&SYSCNT ANOP MEND *=========================- * DEC2 &A * * Decrement pointer &A (&A,&A+1) by two *:::::::::::::::::::::::::- MACRO &LAB DEC2 &A &LAB LDA &A BNE DEC&SYSCNT DEC &A+1 DEC&SYSCNT DEC &A MEND *=========================- * RANDOM &A * * Get a random number in Areg between 0 and &A-1 *:::::::::::::::::::::::::- MACRO &LAB RANDOM &A &LAB LDA &A JSR RANDGEN MEND *=========================- * PROMPT &A * * Pass a string thru the DOS parser * * Note : MSB must be ON *:::::::::::::::::::::::::- MACRO &LAB PROMPT &A &LAB JSR PROMPT DC C'&A',H'00' MEND *=========================- * DOS &A * * Send a command thru the DOS parser * * Note : MSB must be ON *:::::::::::::::::::::::::- MACRO &LAB DOS &A &LAB JSR PROMPT DC H'8D 84',C'&A',H'8D 00' MEND *=========================- * BLOAD &A * * BLOAD file &A * * Note : MSB must be ON *:::::::::::::::::::::::::- MACRO &LAB BLOAD &A &LAB JSR BLOAD DC C'&A',H'8D 00' MEND *=========================- * FLOAD &A * * If there is a RAM disk * BLOAD file &A from the RAM disk * else * BLOAD file &A from the floppy disk * * Note : MSB must be ON *:::::::::::::::::::::::::- MACRO &LAB FLOAD &A &LAB JSR FLOAD DC C'&A',H'8D 00' MEND *=========================- * M &A * * Send the string &A through the text print on screen routine * * Note : MSB must be ON *:::::::::::::::::::::::::- MACRO &LAB M &A &LAB JSR MESSAGE DC C'&A',H'FF' MEND *=========================- * LINE &A * * Go to the left margin on line &A * * The line table pointer is in $90 * * Note: The first location is how many lines *:::::::::::::::::::::::::- MACRO &LAB LINE &A &LAB ANOP AIF &A=1,.A LDY #&A JSR TEXT_LINE AGO .B .A JSR TEXT_LINE1 .B MEND *=========================- * DRAW &A * * Draw shape who's data is at &A *:::::::::::::::::::::::::- MACRO &LAB DRAW &A &LAB LDA #&A LDX #>&A JSR PRE_DRAW MEND *=========================- * RESTORE &A * * Restore shape who's data is at &A *:::::::::::::::::::::::::- MACRO &LAB RESTORE &A &LAB LDA #&A LDX #>&A JSR PRE_RESTORE MEND *=========================- * USE &A[,&B][,&C][,&D] * * - Is the screen being saved before drawn * SAV - Yes * NOSAV - No * * - What is cut out of the screen before the shape is drawn * FULLMSK - Cut out entire draw area * MSK - Cut out mask (second shape of what to cut) * SELFMSK - Cut out mask (use shape as mask shifted one bit right) * NOMSK - Do not cut anything from screen * * - How is shape placed in the screen * EOR - EOR the shape with the screen, (use w/NOMSK) * STA - ORA shape with screen * * - Where is the high bit coming from * COLOR - Use shapes high bit * BGCOLOR - Use backgrounds high bit *:::::::::::::::::::::::::- * 7 6 5 4 3 2 1 0 or and * NOSAV 0 00 80 7F * SAV 1 80 * NOMSK 0 0 0 00 70 8F * FULLMSK 0 0 1 10 * MSK 0 1 0 20 * SELFMSK 1 1 0 60 * STA 0 00 08 F7 * EOR 1 08 * COLOR 0 00 04 FB * BGCOLOR 1 04 * * 8 4 2 1 8 4 2 1 X >> A *:::::::::::::::::::::::::- MACRO &LAB USE &A,&B,&C,&D LCLC &S LCLC &M LCLC &O LCLC &H LCLC &MS LCLC &MM LCLC &MO LCLC &MH &S SETC '0' &M SETC '000' &O SETC '0' &H SETC '0' &MS SETC '1' &MM SETC '111' &MO SETC '1' &MH SETC '1' LCLA &CNT LCLA &N LCLC &VAR(4) AIF C:&D=0,.J &VAR(4) SETC '&D' .J AIF C:&C=0,.N &VAR(3) SETC '&C' .N AIF C:&B=0,.L &VAR(2) SETC '&B' .L &VAR(1) SETC '&A' &CNT SETA C:&VAR &N SETA 0 .TOP AIF '&VAR(&CNT)'='NOSAV',.A AIF '&VAR(&CNT)'='SAV',.B AIF '&VAR(&CNT)'='FULLMSK',.C AIF '&VAR(&CNT)'='MSK',.D AIF '&VAR(&CNT)'='SELFMSK',.E AIF '&VAR(&CNT)'='NOMSK',.F AIF '&VAR(&CNT)'='EOR',.G AIF '&VAR(&CNT)'='STA',.H AIF '&VAR(&CNT)'='COLOR',.I AIF '&VAR(&CNT)'='BGCOLOR',.J AIF '&VAR(&CNT)'='',.K MNOTE 'Unknown USE parameter',4 AGO .K .A &S SETC '0' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .B &S SETC '1' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .C &M SETC '001' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .D &M SETC '010' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .E &M SETC '110' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .F &M SETC '000' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .G &O SETC '1' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .H &O SETC '0' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .I &H SETC '0' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N AGO .K .J &H SETC '1' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N .K &CNT SETA &CNT-1 AIF &CNT>0,^TOP AIF &N=15,.M &LAB LDX #%&S.&M.&O.&H.00 LDA #%&MS.&MM.&MO.&MH.11 JSR SET_PATCHES MEXIT .M &LAB LDA #%&S.&M.&O.&H.00 JSR SET_ALL_PATCHES MEXIT .P MNOTE 'Duplicate USE parameter',4 MEND *=========================- * INITIALIZE &A * * A is the shape (shape address) * * Point draw routines to shape &A *:::::::::::::::::::::::::- MACRO &LAB INITIALIZE &A &LAB LDA #&A LDX #>&A JSR INITIALIZE MEND *=========================- * INIT_DRAW * * Init draw routines by setting OPTIONS (run during every flip), * normal limits of the screen, special characters, and TGEN *:::::::::::::::::::::::::- MACRO &LAB INIT_DRAW &LAB LDA #OPTIONS LDX #>OPTIONS JSR INIT_DRAW MEND *=========================- * LINK_LETTER &A,&B * * A is the left margin * B is the right margin * * Set up the points to FONT *:::::::::::::::::::::::::- MACRO &LAB LINK_LETTER &A,&B &LAB LDA #LETTER STA $92 LDA #>LETTER STA $93 LDA #LETTER+$6C STA LETTER_ADDR LDA #>LETTER+$6C STA LETTER_ADDR+1 LDA #&A STA $98 LDA #&B STA $99 MEND *=========================- * MUNCRUNCH &A * * A is the location of the crunched code * * Uncrunch code at &A that is in Mark's format *:::::::::::::::::::::::::- MACRO &LAB MUNCRUNCH &A &LAB LDX #&A LDA #>&A JSR M_UNCRUNCH MEND *=========================- * TUNCRUNCH &A,&B * * A is the location of the crunched code * B is the phrase * * Uncrunch the phrase &B from the code at &A that is in Tim's format *:::::::::::::::::::::::::- MACRO &LAB TUNCRUNCH &A &LAB LDY #&A LDA #>&A LDX #&B JSR T_UNCRUNCH MEND MACRO &LAB POINT &PTR,&ADDR LDA #<&ADDR STA &PTR LDA #>&ADDR STA &PTR+1 MEND MACRO &LAB MOVE &START,&END,&DEST POINT SRC_START,&START POINT SRC_END,&END POINT DEST,&DEST LDY #0 JSR MOVE MEND MACRO &LAB INA CLC ADC #1 MEND MACRO &LAB DEA SEC SBC #1 MEND MACRO &LAB UNCRUNCH &ADDR LDA #<&ADDR STA CR~ST LDA #>&ADDR STA CR~ST+1 JSR C~START MEND MACRO &LAB UNC &LABEL,&KIND LDX #&KIND._OP LDA #<&LABEL LDY #>&LABEL JSR UNC~ MEND MACRO &LAB MNT JMP $FF65 MEND MACRO &LAB PRE_TCR &A,&B &LAB LDA #>&A LDY #<&A LDX &B JSR TUNC MEND MACRO &LAB CASE_0_3 &A,&B,&C LCLC &L &L SETC _&SYSCNT &LAB ROR A ROR A BCS &L BPL &A BMI &B &L BPL &C MEND g =='?(??DUMMY   MACRO &LAB BOX &A,&B,&C,&D,&E,&F,&G LCLA &H LCLA &I LCLA &L &LAB JSR BOX AIF '&A'<>'WHITE',.C2 &L ASEARCH '&A',0,1 AIF &L=0,.C1 DC H'7F' AGO .C9 .C1 DC H'FF' AGO .C9 .C2 AIF '&A'<>'BLACK',.C4 &L ASEARCH '&A',0,1 AIF &L=0,.C3 DC H'00' AGO .C9 .C3 DC H'80' AGO .C9 .C4 AIF '&A'<>'RED',.C5 DC H'AA' AGO .C9 .C5 AIF '&A'<>'ORANGE',.C51 DC H'AA' AGO .C9 .C51 AIF '&A'<>'BLUE',.C6 DC H'D5' AGO .C9 .C6 AIF '&A'<>'PURPLE',.C7 DC H'55' AGO .C9 .C7 AIF '&A'<>'VIOLET',.C71 DC H'55' AGO .C9 .C71 AIF '&A'<>'GREEN',.C8 DC H'2A' AGO .C9 .C8 MNOTE 'Unknown BOX color',4 .C9 AIF &B>$27,.E1 AIF &C>$BF,.E1 DC I1'&B,&C' AIF (C:&G)=0,.J &H SETA &D-$60 &I SETA $66-&G AIF &E>$27,.E1 AIF &F>$BF,.E1 DC I1'&E,&F,$FF|&H,$7F|-&I+$80' MEXIT .J AIF &D>$27,.E1 AIF &E>$BF,.E1 DC I1'&D,&E,$FF,$FF' MEXIT .E1 MNOTE 'BOX out of range',4 MEND MACRO &LAB LINE &A &LAB ANOP AIF &A=1,.A LDY #&A JSR TEXT_LINE AGO .B .A JSR TEXT_LINE1 .B MEND MACRO &LAB INIT_DRAW &LAB LDA #OPTIONS LDX #>OPTIONS JSR INIT_DRAW MEND MACRO &LAB LINK_LETTER &A,&B &LAB LDA #LETTER STA $92 LDA #>LETTER STA $93 LDA #LETTER+$6C STA LETTER_ADDR LDA #>LETTER+$6C STA LETTER_ADDR+1 LDA #&A STA $98 LDA #&B STA $99 MEND g =='?(??BOOT}    MACRO &LAB BOX &A,&B,&C,&D,&E,&F,&G LCLA &H LCLA &I LCLA &L &LAB JSR BOX AIF '&A'<>'WHITE',.C2 &L ASEARCH '&A',0,1 AIF &L=0,.C1 DC H'7F' AGO .C9 .C1 DC H'FF' AGO .C9 .C2 AIF '&A'<>'BLACK',.C4 &L ASEARCH '&A',0,1 AIF &L=0,.C3 DC H'00' AGO .C9 .C3 DC H'80' AGO .C9 .C4 AIF '&A'<>'RED',.C5 DC H'AA' AGO .C9 .C5 AIF '&A'<>'ORANGE',.C51 DC H'AA' AGO .C9 .C51 AIF '&A'<>'BLUE',.C6 DC H'D5' AGO .C9 .C6 AIF '&A'<>'PURPLE',.C7 DC H'55' AGO .C9 .C7 AIF '&A'<>'VIOLET',.C71 DC H'55' AGO .C9 .C71 AIF '&A'<>'GREEN',.C8 DC H'2A' AGO .C9 .C8 MNOTE 'Unknown BOX color',4 .C9 AIF &B>$27,.E1 AIF &C>$BF,.E1 DC I1'&B,&C' AIF (C:&G)=0,.J &H SETA &D-$60 &I SETA $66-&G AIF &E>$27,.E1 AIF &F>$BF,.E1 DC I1'&E,&F,$FF|&H,$7F|-&I+$80' MEXIT .J AIF &D>$27,.E1 AIF &E>$BF,.E1 DC I1'&D,&E,$FF,$FF' MEXIT .E1 MNOTE 'BOX out of range',4 MEND MACRO &LAB FLOAD &A &LAB JSR FLOAD DC C'&A',H'8D 00' MEND MACRO &LAB M &A &LAB JSR MESSAGE DC C'&A',H'FF' MEND MACRO &LAB LINE &A &LAB ANOP AIF &A=1,.A LDY #&A JSR TEXT_LINE AGO .B .A JSR TEXT_LINE1 .B MEND MACRO &LAB USE &A,&B,&C,&D LCLC &S LCLC &M LCLC &O LCLC &H LCLC &MS LCLC &MM LCLC &MO LCLC &MH &S SETC '0' &M SETC '000' &O SETC '0' &H SETC '0' &MS SETC '1' &MM SETC '111' &MO SETC '1' &MH SETC '1' LCLA &CNT LCLA &N LCLC &VAR(4) AIF C:&D=0,.J &VAR(4) SETC '&D' .J AIF C:&C=0,.N &VAR(3) SETC '&C' .N AIF C:&B=0,.L &VAR(2) SETC '&B' .L &VAR(1) SETC '&A' &CNT SETA C:&VAR &N SETA 0 .TOP AIF '&VAR(&CNT)'='NOSAV',.A AIF '&VAR(&CNT)'='SAV',.B AIF '&VAR(&CNT)'='FULLMSK',.C AIF '&VAR(&CNT)'='MSK',.D AIF '&VAR(&CNT)'='SELFMSK',.E AIF '&VAR(&CNT)'='NOMSK',.F AIF '&VAR(&CNT)'='EOR',.G AIF '&VAR(&CNT)'='STA',.H AIF '&VAR(&CNT)'='COLOR',.I AIF '&VAR(&CNT)'='BGCOLOR',.J AIF '&VAR(&CNT)'='',.K MNOTE 'Unknown USE parameter',4 AGO .K .A &S SETC '0' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .B &S SETC '1' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .C &M SETC '001' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .D &M SETC '010' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .E &M SETC '110' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .F &M SETC '000' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .G &O SETC '1' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .H &O SETC '0' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .I &H SETC '0' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N AGO .K .J &H SETC '1' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N .K &CNT SETA &CNT-1 AIF &CNT>0,^TOP AIF &N=15,.M &LAB LDX #%&S.&M.&O.&H.00 LDA #%&MS.&MM.&MO.&MH.11 JSR SET_PATCHES MEXIT .M &LAB LDA #%&S.&M.&O.&H.00 JSR SET_ALL_PATCHES MEXIT .P MNOTE 'Duplicate USE parameter',4 MEND MACRO &LAB INIT_DRAW &LAB LDA #OPTIONS LDX #>OPTIONS JSR INIT_DRAW MEND MACRO &LAB LINK_LETTER &A,&B &LAB LDA #LETTER STA $92 LDA #>LETTER STA $93 LDA #LETTER+$6C STA LETTER_ADDR LDA #>LETTER+$6C STA LETTER_ADDR+1 LDA #&A STA $98 LDA #&B STA $99 MEND MACRO &LAB POINT &PTR,&ADDR LDA #<&ADDR STA &PTR LDA #>&ADDR STA &PTR+1 MEND MACRO &LAB UNCRUNCH &ADDR LDA #<&ADDR STA CR~ST LDA #>&ADDR STA CR~ST+1 JSR C~START MEND g =='?(??MENU(Q: Q:  MACRO &LAB USE &A,&B,&C,&D LCLC &S LCLC &M LCLC &O LCLC &H LCLC &MS LCLC &MM LCLC &MO LCLC &MH &S SETC '0' &M SETC '000' &O SETC '0' &H SETC '0' &MS SETC '1' &MM SETC '111' &MO SETC '1' &MH SETC '1' LCLA &CNT LCLA &N LCLC &VAR(4) AIF C:&D=0,.J &VAR(4) SETC '&D' .J AIF C:&C=0,.N &VAR(3) SETC '&C' .N AIF C:&B=0,.L &VAR(2) SETC '&B' .L &VAR(1) SETC '&A' &CNT SETA C:&VAR &N SETA 0 .TOP AIF '&VAR(&CNT)'='NOSAV',.A AIF '&VAR(&CNT)'='SAV',.B AIF '&VAR(&CNT)'='FULLMSK',.C AIF '&VAR(&CNT)'='MSK',.D AIF '&VAR(&CNT)'='SELFMSK',.E AIF '&VAR(&CNT)'='NOMSK',.F AIF '&VAR(&CNT)'='EOR',.G AIF '&VAR(&CNT)'='STA',.H AIF '&VAR(&CNT)'='COLOR',.I AIF '&VAR(&CNT)'='BGCOLOR',.J AIF '&VAR(&CNT)'='',.K MNOTE 'Unknown USE parameter',4 AGO .K .A &S SETC '0' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .B &S SETC '1' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .C &M SETC '001' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .D &M SETC '010' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .E &M SETC '110' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .F &M SETC '000' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .G &O SETC '1' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .H &O SETC '0' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .I &H SETC '0' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N AGO .K .J &H SETC '1' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N .K &CNT SETA &CNT-1 AIF &CNT>0,^TOP AIF &N=15,.M &LAB LDX #%&S.&M.&O.&H.00 LDA #%&MS.&MM.&MO.&MH.11 JSR SET_PATCHES MEXIT .M &LAB LDA #%&S.&M.&O.&H.00 JSR SET_ALL_PATCHES MEXIT .P MNOTE 'Duplicate USE parameter',4 MEND MACRO &LAB INIT_DRAW &LAB LDA #OPTIONS LDX #>OPTIONS JSR INIT_DRAW MEND MACRO &LAB UNC &LABEL,&KIND LDX #&KIND._OP LDA #<&LABEL LDY #>&LABEL JSR UNC~ MEND g =='?(??LAB X X  MACRO &LAB BOX &A,&B,&C,&D,&E,&F,&G LCLA &H LCLA &I LCLA &L &LAB JSR BOX AIF '&A'<>'WHITE',.C2 &L ASEARCH '&A',0,1 AIF &L=0,.C1 DC H'7F' AGO .C9 .C1 DC H'FF' AGO .C9 .C2 AIF '&A'<>'BLACK',.C4 &L ASEARCH '&A',0,1 AIF &L=0,.C3 DC H'00' AGO .C9 .C3 DC H'80' AGO .C9 .C4 AIF '&A'<>'RED',.C5 DC H'AA' AGO .C9 .C5 AIF '&A'<>'ORANGE',.C51 DC H'AA' AGO .C9 .C51 AIF '&A'<>'BLUE',.C6 DC H'D5' AGO .C9 .C6 AIF '&A'<>'PURPLE',.C7 DC H'55' AGO .C9 .C7 AIF '&A'<>'VIOLET',.C71 DC H'55' AGO .C9 .C71 AIF '&A'<>'GREEN',.C8 DC H'2A' AGO .C9 .C8 MNOTE 'Unknown BOX color',4 .C9 AIF &B>$27,.E1 AIF &C>$BF,.E1 DC I1'&B,&C' AIF (C:&G)=0,.J &H SETA &D-$60 &I SETA $66-&G AIF &E>$27,.E1 AIF &F>$BF,.E1 DC I1'&E,&F,$FF|&H,$7F|-&I+$80' MEXIT .J AIF &D>$27,.E1 AIF &E>$BF,.E1 DC I1'&D,&E,$FF,$FF' MEXIT .E1 MNOTE 'BOX out of range',4 MEND MACRO &LAB M &A &LAB JSR MESSAGE DC C'&A',H'FF' MEND MACRO &LAB LINE &A &LAB ANOP AIF &A=1,.A LDY #&A JSR TEXT_LINE AGO .B .A JSR TEXT_LINE1 .B MEND MACRO &LAB DRAW &A &LAB LDA #&A LDX #>&A JSR PRE_DRAW MEND MACRO &LAB USE &A,&B,&C,&D LCLC &S LCLC &M LCLC &O LCLC &H LCLC &MS LCLC &MM LCLC &MO LCLC &MH &S SETC '0' &M SETC '000' &O SETC '0' &H SETC '0' &MS SETC '1' &MM SETC '111' &MO SETC '1' &MH SETC '1' LCLA &CNT LCLA &N LCLC &VAR(4) AIF C:&D=0,.J &VAR(4) SETC '&D' .J AIF C:&C=0,.N &VAR(3) SETC '&C' .N AIF C:&B=0,.L &VAR(2) SETC '&B' .L &VAR(1) SETC '&A' &CNT SETA C:&VAR &N SETA 0 .TOP AIF '&VAR(&CNT)'='NOSAV',.A AIF '&VAR(&CNT)'='SAV',.B AIF '&VAR(&CNT)'='FULLMSK',.C AIF '&VAR(&CNT)'='MSK',.D AIF '&VAR(&CNT)'='SELFMSK',.E AIF '&VAR(&CNT)'='NOMSK',.F AIF '&VAR(&CNT)'='EOR',.G AIF '&VAR(&CNT)'='STA',.H AIF '&VAR(&CNT)'='COLOR',.I AIF '&VAR(&CNT)'='BGCOLOR',.J AIF '&VAR(&CNT)'='',.K MNOTE 'Unknown USE parameter',4 AGO .K .A &S SETC '0' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .B &S SETC '1' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .C &M SETC '001' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .D &M SETC '010' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .E &M SETC '110' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .F &M SETC '000' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .G &O SETC '1' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .H &O SETC '0' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .I &H SETC '0' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N AGO .K .J &H SETC '1' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N .K &CNT SETA &CNT-1 AIF &CNT>0,^TOP AIF &N=15,.M &LAB LDX #%&S.&M.&O.&H.00 LDA #%&MS.&MM.&MO.&MH.11 JSR SET_PATCHES MEXIT .M &LAB LDA #%&S.&M.&O.&H.00 JSR SET_ALL_PATCHES MEXIT .P MNOTE 'Duplicate USE parameter',4 MEND MACRO &LAB INIT_DRAW &LAB LDA #OPTIONS LDX #>OPTIONS JSR INIT_DRAW MEND MACRO &LAB LINK_LETTER &A,&B &LAB LDA #LETTER STA $92 LDA #>LETTER STA $93 LDA #LETTER+$6C STA LETTER_ADDR LDA #>LETTER+$6C STA LETTER_ADDR+1 LDA #&A STA $98 LDA #&B STA $99 MEND MACRO &LAB POINT &PTR,&ADDR LDA #<&ADDR STA &PTR LDA #>&ADDR STA &PTR+1 MEND MACRO &LAB MOVE &START,&END,&DEST POINT SRC_START,&START POINT SRC_END,&END POINT DEST,&DEST LDY #0 JSR MOVE MEND MACRO &LAB UNC &LABEL,&KIND LDX #&KIND._OP LDA #<&LABEL LDY #>&LABEL JSR UNC~ MEND g =='?(??JUNGLE` Q: Q:  MACRO &LAB BOX &A,&B,&C,&D,&E,&F,&G LCLA &H LCLA &I LCLA &L &LAB JSR BOX AIF '&A'<>'WHITE',.C2 &L ASEARCH '&A',0,1 AIF &L=0,.C1 DC H'7F' AGO .C9 .C1 DC H'FF' AGO .C9 .C2 AIF '&A'<>'BLACK',.C4 &L ASEARCH '&A',0,1 AIF &L=0,.C3 DC H'00' AGO .C9 .C3 DC H'80' AGO .C9 .C4 AIF '&A'<>'RED',.C5 DC H'AA' AGO .C9 .C5 AIF '&A'<>'ORANGE',.C51 DC H'AA' AGO .C9 .C51 AIF '&A'<>'BLUE',.C6 DC H'D5' AGO .C9 .C6 AIF '&A'<>'PURPLE',.C7 DC H'55' AGO .C9 .C7 AIF '&A'<>'VIOLET',.C71 DC H'55' AGO .C9 .C71 AIF '&A'<>'GREEN',.C8 DC H'2A' AGO .C9 .C8 MNOTE 'Unknown BOX color',4 .C9 AIF &B>$27,.E1 AIF &C>$BF,.E1 DC I1'&B,&C' AIF (C:&G)=0,.J &H SETA &D-$60 &I SETA $66-&G AIF &E>$27,.E1 AIF &F>$BF,.E1 DC I1'&E,&F,$FF|&H,$7F|-&I+$80' MEXIT .J AIF &D>$27,.E1 AIF &E>$BF,.E1 DC I1'&D,&E,$FF,$FF' MEXIT .E1 MNOTE 'BOX out of range',4 MEND MACRO &LAB RANDOM &A &LAB LDA &A JSR RANDGEN MEND MACRO &LAB LINE &A &LAB ANOP AIF &A=1,.A LDY #&A JSR TEXT_LINE AGO .B .A JSR TEXT_LINE1 .B MEND MACRO &LAB DRAW &A &LAB LDA #&A LDX #>&A JSR PRE_DRAW MEND MACRO &LAB USE &A,&B,&C,&D LCLC &S LCLC &M LCLC &O LCLC &H LCLC &MS LCLC &MM LCLC &MO LCLC &MH &S SETC '0' &M SETC '000' &O SETC '0' &H SETC '0' &MS SETC '1' &MM SETC '111' &MO SETC '1' &MH SETC '1' LCLA &CNT LCLA &N LCLC &VAR(4) AIF C:&D=0,.J &VAR(4) SETC '&D' .J AIF C:&C=0,.N &VAR(3) SETC '&C' .N AIF C:&B=0,.L &VAR(2) SETC '&B' .L &VAR(1) SETC '&A' &CNT SETA C:&VAR &N SETA 0 .TOP AIF '&VAR(&CNT)'='NOSAV',.A AIF '&VAR(&CNT)'='SAV',.B AIF '&VAR(&CNT)'='FULLMSK',.C AIF '&VAR(&CNT)'='MSK',.D AIF '&VAR(&CNT)'='SELFMSK',.E AIF '&VAR(&CNT)'='NOMSK',.F AIF '&VAR(&CNT)'='EOR',.G AIF '&VAR(&CNT)'='STA',.H AIF '&VAR(&CNT)'='COLOR',.I AIF '&VAR(&CNT)'='BGCOLOR',.J AIF '&VAR(&CNT)'='',.K MNOTE 'Unknown USE parameter',4 AGO .K .A &S SETC '0' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .B &S SETC '1' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .C &M SETC '001' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .D &M SETC '010' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .E &M SETC '110' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .F &M SETC '000' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .G &O SETC '1' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .H &O SETC '0' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .I &H SETC '0' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N AGO .K .J &H SETC '1' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N .K &CNT SETA &CNT-1 AIF &CNT>0,^TOP AIF &N=15,.M &LAB LDX #%&S.&M.&O.&H.00 LDA #%&MS.&MM.&MO.&MH.11 JSR SET_PATCHES MEXIT .M &LAB LDA #%&S.&M.&O.&H.00 JSR SET_ALL_PATCHES MEXIT .P MNOTE 'Duplicate USE parameter',4 MEND MACRO &LAB INIT_DRAW &LAB LDA #OPTIONS LDX #>OPTIONS JSR INIT_DRAW MEND MACRO &LAB LINK_LETTER &A,&B &LAB LDA #LETTER STA $92 LDA #>LETTER STA $93 LDA #LETTER+$6C STA LETTER_ADDR LDA #>LETTER+$6C STA LETTER_ADDR+1 LDA #&A STA $98 LDA #&B STA $99 MEND MACRO &LAB POINT &PTR,&ADDR LDA #<&ADDR STA &PTR LDA #>&ADDR STA &PTR+1 MEND MACRO &LAB MOVE &START,&END,&DEST POINT SRC_START,&START POINT SRC_END,&END POINT DEST,&DEST LDY #0 JSR MOVE MEND MACRO &LAB UNC &LABEL,&KIND LDX #&KIND._OP LDA #<&LABEL LDY #>&LABEL JSR UNC~ MEND MACRO &LAB CASE_0_3 &A,&B,&C LCLC &L &L SETC _&SYSCNT &LAB ROR A ROR A BCS &L BPL &A BMI &B &L BPL &C MEND g =='?(??PIANO a a  MACRO &LAB DRAW &A &LAB LDA #&A LDX #>&A JSR PRE_DRAW MEND MACRO &LAB USE &A,&B,&C,&D LCLC &S LCLC &M LCLC &O LCLC &H LCLC &MS LCLC &MM LCLC &MO LCLC &MH &S SETC '0' &M SETC '000' &O SETC '0' &H SETC '0' &MS SETC '1' &MM SETC '111' &MO SETC '1' &MH SETC '1' LCLA &CNT LCLA &N LCLC &VAR(4) AIF C:&D=0,.J &VAR(4) SETC '&D' .J AIF C:&C=0,.N &VAR(3) SETC '&C' .N AIF C:&B=0,.L &VAR(2) SETC '&B' .L &VAR(1) SETC '&A' &CNT SETA C:&VAR &N SETA 0 .TOP AIF '&VAR(&CNT)'='NOSAV',.A AIF '&VAR(&CNT)'='SAV',.B AIF '&VAR(&CNT)'='FULLMSK',.C AIF '&VAR(&CNT)'='MSK',.D AIF '&VAR(&CNT)'='SELFMSK',.E AIF '&VAR(&CNT)'='NOMSK',.F AIF '&VAR(&CNT)'='EOR',.G AIF '&VAR(&CNT)'='STA',.H AIF '&VAR(&CNT)'='COLOR',.I AIF '&VAR(&CNT)'='BGCOLOR',.J AIF '&VAR(&CNT)'='',.K MNOTE 'Unknown USE parameter',4 AGO .K .A &S SETC '0' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .B &S SETC '1' AIF '&MS'='0',.P &MS SETC '0' &N SETA 1+&N AGO .K .C &M SETC '001' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .D &M SETC '010' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .E &M SETC '110' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .F &M SETC '000' AIF '&MM'='000',.P &MM SETC '000' &N SETA 2+&N AGO .K .G &O SETC '1' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .H &O SETC '0' AIF '&MO'='0',.P &MO SETC '0' &N SETA 4+&N AGO .K .I &H SETC '0' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N AGO .K .J &H SETC '1' AIF '&MH'='0',.P &MH SETC '0' &N SETA 8+&N .K &CNT SETA &CNT-1 AIF &CNT>0,^TOP AIF &N=15,.M &LAB LDX #%&S.&M.&O.&H.00 LDA #%&MS.&MM.&MO.&MH.11 JSR SET_PATCHES MEXIT .M &LAB LDA #%&S.&M.&O.&H.00 JSR SET_ALL_PATCHES MEXIT .P MNOTE 'Duplicate USE parameter',4 MEND MACRO &LAB INIT_DRAW &LAB LDA #OPTIONS LDX #>OPTIONS JSR INIT_DRAW MEND MACRO &LAB LINK_LETTER &A,&B &LAB LDA #LETTER STA $92 LDA #>LETTER STA $93 LDA #LETTER+$6C STA LETTER_ADDR LDA #>LETTER+$6C STA LETTER_ADDR+1 LDA #&A STA $98 LDA #&B STA $99 MEND MACRO &LAB POINT &PTR,&ADDR LDA #<&ADDR STA &PTR LDA #>&ADDR STA &PTR+1 MEND MACRO &LAB MOVE &START,&END,&DEST POINT SRC_START,&START POINT SRC_END,&END POINT DEST,&DEST LDY #0 JSR MOVE MEND MACRO &LAB UNC &LABEL,&KIND LDX #&KIND._OP LDA #<&LABEL LDY #>&LABEL JSR UNC~ MEND MACRO &LAB MNT JMP $FF65 MEND g =='?(??FONT L ; FONT START dc H'00 00 00 08 02 0B 00 00 00 00 00 40' dc H'40 40 40 40 40 40 40 40 40 40 40 40 40 40 40 40' dc H'36 34 3A 40 40 40 40 36 46 46 40 40 35 28 34 40' dc H'3A 3A 3A 3A 3A 3A 3A 3A 3A 4A 15 16 40 40 40 48' dc H'40 18 48 18 48 18 48 19 48 14 18 49 18 1C 4B 28' dc H'28 28 28 18 18 48 28 2C 28 18 18 40 40 40 40 40' dc H'40 18 48 48 28 48 28 28 38 34 28 28 14 4C 28 38' dc H'28 28 38 28 08 28 08 2C 18 18 28 E9 E9 E9 E9 E9' dc H'E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 5E 39 49 E9' dc H'E9 E9 E9 59 D9 C9 E9 E9 4F 1E 62 E9 72 82 92 A2' dc H'B2 C2 D2 E2 F2 02 39 D3 E9 E9 E9 12 E9 49 22 59' dc H'32 69 42 79 52 E1 89 62 F1 99 72 EF 72 A0 01 1C' dc H'A9 82 FF 82 11 2C B9 E9 E9 E9 E9 E9 E9 C6 92 9F' dc H'D4 AC AE E1 0F 35 92 61 E1 B9 BB 1C 6E C8 29 37' dc H'E7 44 F4 51 01 0E 2A 0C 00 0C 00 3F 00 0C 00 0C' dc H'00 0C 00 38 00 00 00 00 33 00 33 00 33 00 1E 00' dc H'0C 00 00 00 00 33 00 1E 00 0C 00 1E 00 33 00 00' dc H'00 00 33 00 33 00 33 00 3E 00 30 00 1E 00 33 00' dc H'03 00 1E 00 30 00 33 00 1E 00 00 00 33 00 33 00' dc H'33 00 1E 00 0C 00 0C 00 0C 00 00 00 00 03 00 03' dc H'00 00 00 03 00 03 00 00 00 0C 00 1E 00 33 00 33' dc H'00 3F 00 33 00 33 00 00 00 1E 00 33 00 03 00 03' dc H'00 03 00 33 00 1E 00 00 00 3F 00 03 00 03 00 1F' dc H'00 03 00 03 00 3F 00 00 00 3E 00 63 00 03 00 03' dc H'00 73 00 63 00 3E 00 00 00 30 00 30 00 30 00 30' dc H'00 33 00 33 00 1E 00 00 00 03 06 07 07 4F 07 33' dc H'06 03 06 03 06 03 06 00 00 3F 00 0C 00 0C 00 0C' dc H'00 0C 00 0C 00 0C 00 00 00 3F 00 30 00 18 00 0C' dc H'00 06 00 03 00 3F 00 00 00 00 1E 00 30 00 3E 00' dc H'33 00 3E 00 00 00 00 03 00 03 00 00 00 03 00 06' dc H'00 03 00 03 00 03 00 03 00 03 00 03 00 03 00 00' dc H'00 03 00 03 00 03 00 03 00 03 00 03 00 3F 00 00' dc H'00 1F 00 33 00 33 00 1F 00 33 00 33 00 33 00 00' dc H'00 33 00 33 00 1E 00 0C 00 1E 00 33 00 33 00 00' dc H'00 00 00 00 3F 00 00 00 00 00 00 00 00 00 3F 00' dc H'18 00 0C 00 06 00 3F 00 00 00 00 1E 00 03 00 1E' dc H'00 30 00 1E 00 00 00 00 33 00 33 00 33 00 33 00' dc H'1E 00 00 00 00 03 06 33 06 33 06 33 06 4E 03 00' dc H'00 03 00 03 00 33 00 1F 00 0F 00 1F 00 33 00 00' dc H'00 00 1F 00 33 00 33 00 1F 00 03 00 03 00 03 00' dc H'00 00 03 06 33 06 33 06 33 06 33 06 33 06 4C 01' dc H'00 00 30 00 00 00 30 00 30 00 30 00 30 00 33 00' dc H'1E 00 33 00 33 00 33 00 33 00 33 00 1E 00 38 00' dc H'0C 00 0C 00 3F 00 0C 00 0C 00 0C 00 00 00 00 1F' dc H'00 33 00 33 00 33 00 33 00 00 00 00 3E 00 33 00' dc H'33 00 3E 00 30 00 30 00 3E 00 33 00 33 00 33 00' dc H'3E 00 00 00 00 1E 00 33 00 33 00 3E 00 30 00 1E' dc H'00 33 00 33 00 33 00 33 00 33 00 1E 00 00 00 33' dc H'00 33 00 33 00 33 00 33 00 1E 00 0C 00 00 00 03' dc H'00 03 00 1F 00 33 00 33 00 33 00 33 00 00 00 00' dc H'1E 00 33 00 33 00 33 00 1E 00 00 00 00 1F 00 33' dc H'00 03 00 03 00 03 00 00 00 03 00 03 00 03 00 03' dc H'00 03 00 00 00 03 00 00 00 77 00 66 00 33 00 00' dc H'00 00 00 00 00 00 00 00 00 07 00 06 00 03 00 00' dc H'00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00' dc H'00 00 3E 00 63 00 63 00 63 00 63 00 63 00 3E 00' dc H'00 00 0C 00 0F 00 0C 00 0C 00 0C 00 0C 00 3F 00' dc H'00 00 3E 00 63 00 60 00 30 00 0C 00 07 00 7F 00' dc H'00 00 3E 00 63 00 60 00 38 00 60 00 63 00 3E 00' dc H'00 00 63 00 63 00 63 00 7F 00 60 00 60 00 60 00' dc H'00 00 3F 00 03 00 03 00 3F 00 60 00 63 00 3F 00' dc H'00 00 3E 00 03 00 03 00 3F 00 63 00 63 00 3E 00' dc H'00 00 7F 00 60 00 30 00 18 00 0C 00 0C 00 0C 00' dc H'00 00 3E 00 63 00 63 00 3E 00 63 00 63 00 3E 00' dc H'00 00 3E 00 63 00 63 00 7E 00 60 00 63 00 3E 00' dc H'00 00 1E 00 33 00 30 00 18 00 0C 00 00 00 0C 00' dc H'00 00 1F 00 33 00 33 00 1F 00 33 00 33 00 1F 00' dc H'00 00 1F 00 33 00 33 00 33 00 33 00 33 00 1F 00' dc H'00 00 3F 00 03 00 03 00 1F 00 03 00 03 00 03 00' dc H'00 00 33 00 33 00 33 00 3F 00 33 00 33 00 33 00' dc H'00 00 63 00 33 00 1F 00 07 00 1F 00 33 00 63 00' dc H'00 00 03 03 07 03 0F 03 1F 03 73 03 43 03 03 03' dc H'00 00 33 00 33 00 33 00 33 00 33 00 33 00 1E 00' dc H'00 00 03 00 03 00 1F 00 33 00 33 00 33 00 1F 00' dc H'00 00 00 1E 00 33 00 03 00 33 00 1E 00 00 00 00' dc H'1E 00 33 00 3F 00 03 00 3E 00 00 00 00 4F 03 33' dc H'06 33 06 33 06 33 06 00 00 03 00 06 00 0C 00 0C' dc H'00 0C 00 06 00 03 00 00 00 0C 00 06 00 03 00 03' dc H'00 03 00 06 00 0C 00 00 00' END g =='?(?? FINDER.DATA\ p $ PIXUOGENDEO3ERHPDATAENMMON3ERHTONEGENMMON3ERH TIMS.COMMON3ERtHPIANOE.ASMA3ERQHLSTDLE.ASMA3ER"RAMDLE.ASMA3ER SINGLE.ASMA3ER6NJUNGLE.ASMA3ER"ALLMON.ASMA3ER COMMON.ASMA3ERNTUNCAQUTAEO3ER"LDATAQUTAEO3ERLABTYQUTAEO3ERNTEXTYQUTAEO3ERDRAWYQUTAEO3ERNDUMMYQUTAEO3ERCOM.EQUTAEO3ERNZPAGEOOTAEO3ER"MAKEBOOTAEO3ERMEMAPAXNDEO3ERNTITLEAXNDEO3ERd"LOGOEAXNDEO3ERdFONTMAXNDEO3ERdNMAXTMAXNDEO3ERA"BOOTMAXNDEO3ERAMAKEMAXNDEO3ERANJDATANCNDEO3ER"OBJMONCNDEO3ERCOMMONCNDEO3ERNMENUOGENDEO3ERg =='?(??LOGO X  TROLL_LOGO START DC H'0F FD FB FA F9 F7 F6 F5 F4 F3 F1 EF EE ED EC EB' DC H'EB B4 FF B6 EB EC B4 C3 C7 CF EC ED 87 BE ED EE' DC H'81 83 EE EF 9C FF 9E EF F1 C0 2A F1 F3 8F 80 FF' DC H'F3 F4 87 BA FF F4 F5 80 B4 8F B6 C0 F5 F6 BA D5' DC H'80 F6 F7 BA AA 80 F7 F9 AE 80 F9 FA 65 80 FA FB' DC H'96 80 FB FD 5D 80 FD 80 C0 80 C0 80 62 40 63 80' DC H'40 6B 80 BA C0 80 C0 80 62 2A 64 28 02 62 6C 60' DC H'6E 80 F7 C0 80 62 55 FA 66 7F 6E 80 F6 F1 FD 62' DC H'2A FA 66 7F 6E 80 0A 92 08 94 80 F7 C0 55 FD 62' DC H'55 FA 66 7F FB F6 F1 FD 62 2A FA 66 7F 6E 03 FB' DC H'9C F0 F8 9E BC A7 FC A8 BC F9 F7 C0 55 FD 62 15' DC H'55 FA 66 7F 6E 80 9C 9F 9D BF F8 A7 FF F8 F9 F6' DC H'F1 FD 63 00 02 FA 0F 6E 80 F7 C0 55 FD 62 28 20' DC H'08 28 93 20 95 80 9C F8 FC 9E 9E A3 FC F8 80 AA' DC H'9E AC FC F8 80 F6 C0 54 FD 62 55 FA 66 7E FB 9C' DC H'8F 9D 9F 9E BC A0 80 A3 8F 9F A5 BC AC 9F 8F 80' DC H'F7 F1 FD 62 2A FA 66 7F 6C 07 75 27 77 07 78 7F' DC H'7F 07 FB 9D C0 E0 A3 C0 80 AA E0 AC C0 80 B4 C0' DC H'BA C1 BB C0 C0 55 FD 62 55 FA 66 7F 6C 80 75 55' DC H'77 80 78 7F 7F 80 EF C3 A0 83 A3 FF A5 C0 AA C3' DC H'AC FF F9 EB F4 87 F1 FD 62 2A FA 66 7F 6C 80 75' DC H'2A 77 80 78 7F 7F 80 9C EE 87 A0 80 A3 EE 87 AC' DC H'83 81 80 EC BA C7 BB C0 C0 55 FD 62 55 FA 66 7F' DC H'6C 40 75 55 77 80 78 7F 7F 7C 70 64 44 94 40 FB' DC H'9C C0 E0 F0 AC E0 AD C0 80 EB F4 C7 87 F1 FD 62' DC H'00 02 0A FA 3F 67 7F 6C 7C 77 7F 7C 3F 03 0F 3F' DC H'7F FB EF E1 AC FF F9 EC BA C7 BC CF C0 AA FD 67' DC H'01 03 07 7B 01 7C 80 81 01 03 FB 9D EE AC 81 80' DC H'EB F4 ED FF C0 D5 FD 62 D4 D0 C4 65 94 91 90 93' DC H'80 9C E0 F0 F8 AC F0 E0 F5 BA 80 BC C0 BE 8F C0' DC H'AA FD 62 AA FA FE FB 9C BF FF F0 A0 80 AA F0 AC' DC H'FF AD BF 80 B4 FE FF F4 80 ED FF FE C0 D5 FD 62' DC H'D5 FA FF 6C 87 8D C7 8F 87 FF FB 9E 81 A0 80 AA' DC H'81 AC 80 EC B8 C0 BA C3 CF BE C7 C3 C0 AA FD 62' DC H'AA FA FF 6C 80 8D AA F3 FB 9C F0 F9 EB F4 ED FF' DC H'C0 D5 FD 62 D5 FA FF 6C 80 8D D5 F3 FB 9C 81 F9' DC H'B4 CF B6 C0 BE CF C0 D4 FD 62 AA FA FF 6C F0 F2' DC H'8F F0 FF FB 9C C0 E0 F0 F9 B4 87 B6 8F B8 9F BA' DC H'B7 E7 C7 BE 87 C0 AA FD 62 81 63 85 64 95 FA 66' DC H'BF FB EF E1 A7 FF E1 F9 B4 CF B6 8F C0 D5 FD 62' DC H'C0 63 80 64 C0 92 80 9D EE F9 EB F8 C0 AA FD 62' DC H'AA 64 A8 65 82 F2 94 F0 FB 9C FE 9E F5 BA 80 BC' DC H'C0 BE 80 C0 D5 FD 63 81 64 85 FA 66 9F 90 FF FB' DC H'EF 8F F9 B4 FE FF F4 80 ED FF FE C0 AA FD 8D AA' DC H'F3 FB 9C 83 9E 80 B4 83 87 8F B8 80 BA 83 8F BE' DC H'87 83 C0 54 FD 8D D5 F3 FB 9C FC 9E BC A3 FC A5' DC H'BC AC FC F9 F7 F1 FD 8D AA F3 FB EF 80 A3 87 A5' DC H'80 AC FF F9 F6 C0 55 FD 8D 85 D5 80 FF FB 9E C0' DC H'A3 80 AA C0 AC 80 F7 F1 FD 62 28 20 08 28 90 29' DC H'92 21 94 81 FB 9C FE FF 87 A3 FF FE 80 AA 87 AC' DC H'FF FE 80 F6 C0 55 FD 62 05 15 55 FA 66 7E FB 9C' DC H'83 87 8F A0 80 A3 83 87 8F AC 87 83 80 F7 F1 FD' DC H'64 00 FA 03 8D 23 8F 03 7F FB F6 C0 80 8D 55 8F' DC H'80 7F FB F7 C0 80 8D 2A 8F 80 7F FB F6 C0 80 8D' DC H'55 8F 80 7F FB F7 C0 80 8D 02 0A 80 1F FB BA 85' DC H'80 C0 80 C0' END g =='?(??TITLc8+X  title start DC H'0A F5 F4 EB E9 E8 D7 D6 D2 CB C8 C8 81 D5 81 C8' DC H'CB 04 AA CB D2 80 D5 D2 D6 FF 72 80 D6 D7 FF BE' DC H'80 D7 E8 80 C0 FF 02 80 E8 E9 05 80 E9 EB AA 80' DC H'EB F4 B8 80 F4 F5 AA D5 F5 D5 01 D2 03 D2 E9 D5' DC H'07 D2 09 D2 0B D2 0D D2 0F D2 11 D2 13 D2 15 D2' DC H'17 D2 19 D2 1B D2 1D D2 1F 80 20 95 21 80 22 95' DC H'23 D2 25 D2 27 D2 29 D2 2B D2 2D D2 2F D2 31 D2' DC H'33 D2 35 D2 37 D2 39 D2 3B D2 3D D2 3F D2 41 A0' DC H'D5 43 F5 45 F5 47 F5 49 F5 4B F5 4D F5 4F F5 51' DC H'F5 53 F5 55 F5 57 A8 D5 59 A8 D4 5B A0 D5 5D A2' DC H'D5 5F A2 D5 61 8A D5 63 8A D5 65 F5 67 F5 69 F5' DC H'6B F5 6D F5 6F AA 70 80 FF 72 81 D5 F4 D7 FF C0' DC H'AA 01 80 02 AA 03 80 CB E9 06 AA 07 80 08 AA 09' DC H'80 0A AA 0B 80 0C AA 0D 80 0E AA 0F 80 10 AA 11' DC H'C0 12 AA 13 C0 14 AA D0 16 A2 D0 18 A2 D0 1A A2' DC H'D0 1C A2 D0 1E A8 D4 20 F5 22 AA 23 C0 24 A2 D0' DC H'26 A2 27 C0 28 82 D0 2A 82 2B C0 2C 8A 2D C0 2E' DC H'8A 2F C0 30 8A 31 80 32 AA 33 80 34 AA 35 80 36' DC H'AA 37 80 38 AA 39 80 3A AA 3B C0 3C AA D0 3E AA' DC H'D4 40 F5 42 F5 44 F5 46 F5 48 F5 4A F5 4C F5 4E' DC H'F5 50 F5 52 F5 54 F5 56 F5 58 F5 5A F5 5C F5 5E' DC H'F5 60 F5 62 F5 64 AA D4 66 AA C1 68 F5 6A F5 6C' DC H'F5 6E F5 70 80 FF 00 73 AA F4 D7 FF C0 D5 01 D2' DC H'03 D2 E9 D5 07 D2 09 D2 0B 80 C5 0D A8 D5 0F 8A' DC H'E5 11 B2 D9 FA 14 B9 DA F9 F2 C5 19 8A D5 1B F5' DC H'1D F5 1F F5 21 F5 23 F5 25 F5 27 F5 29 F5 2B F5' DC H'2D F5 2F F5 31 80 C5 33 A0 C5 35 A0 D5 37 A0 D5' DC H'39 A2 D5 3B A2 D5 3D A2 D5 3F F5 41 F5 43 F5 45' DC H'F5 47 F5 49 F5 4B F5 4D F5 4F F5 51 F5 53 F5 55' DC H'F5 57 F5 59 F5 5B F5 5D F5 5F F5 61 F5 63 F5 65' DC H'F5 67 F5 69 F5 6B F5 6D F5 6F AA 70 80 FF 00 D5' DC H'98 C8 D5 C8 D5 C8 D5 C8 D5 C8 D5 81 D5 F4 D7 FF' DC H'C0 AA 01 80 02 AA 03 80 CB E9 06 AA 07 80 08 82' DC H'D0 0A A8 0B 95 E2 F9 FE EF FB E7 12 9D EC F7 E7' DC H'F6 17 99 FF 19 C0 1A F5 1C F5 1E F5 20 F5 22 F5' DC H'24 F5 26 F5 28 F5 2A F5 2C F5 2E F5 30 AA 31 80' DC H'32 F5 34 F5 36 AA 37 95 38 AA 39 95 3A AA 3B 95' DC H'3C F5 3E F5 40 F5 42 F5 44 F5 46 F5 48 F5 4A F5' DC H'4C F5 4E F5 50 F5 52 F5 54 F5 56 F5 58 F5 5A F5' DC H'5C F5 5E F5 60 F5 62 F5 64 F5 66 F5 68 F5 6A F5' DC H'6C F5 6E F5 70 80 D6 73 AA 98 80 99 EB 9B EB 9D' DC H'EB 9F EB A1 EB A3 EB A5 EB A7 EB A9 EB AA 80 AA' DC H'F4 D7 FF C0 D5 01 D2 03 D2 E9 D5 07 80 09 AA 0A' DC H'81 FE CF 0D BB EF 0F BC FD F6 12 AF FD DE F1 ED' DC H'EF F7 FF 1A 80 F8 F9 F2 E1 1F 8A D5 21 F5 23 F5' DC H'25 F5 27 F5 29 F5 2B F5 2D F5 2F 82 D5 31 A8 D5' DC H'33 F5 35 F5 37 F5 39 F5 3B F5 3D F5 3F F5 41 F5' DC H'43 F5 45 F5 47 F5 49 F5 4B F5 4D F5 4F F5 51 F5' DC H'53 F5 55 F5 57 F5 59 F5 5B F5 5D F5 5F F5 61 F5' DC H'63 F5 65 F5 67 F5 69 F5 6B F5 6D F5 6F AA 70 80' DC H'D6 D5 98 D2 80 D5 D2 80 D5 D2 80 D5 D2 80 D5 D2' DC H'80 D5 D2 F4 D7 FF C0 AA 01 80 02 AA 03 80 CB E9' DC H'06 AA 07 80 09 95 0A A8 C7 0C 9F FF FA F6 10 B6' DC H'DE 12 BF F3 ED DE F3 CF FF FC EF 1C FB DB F7 E7' DC H'20 8E 21 BE 23 BC 24 9C DD 26 9C DD 28 9C D1 2A' DC H'AA D1 2C AA D4 2E F5 30 F5 32 F5 34 F5 36 F5 38' DC H'F5 3A F5 3C F5 3E F5 40 F5 42 F5 44 F5 46 F5 48' DC H'F5 4A F5 4C F5 4E F5 50 F5 52 F5 54 F5 56 F5 58' DC H'F5 5A F5 5C F5 5E F5 60 F5 62 F5 64 F5 66 F5 68' DC H'F5 6A F5 6C F5 6E F5 70 AA D6 73 AA 98 80 99 EB' DC H'9B EB 9D EB 9F EB A1 EB A3 EB A5 EB A7 EB A9 EB' DC H'AA 80 AA F4 D7 FF C0 D5 01 D2 03 D2 E9 D5 07 80' DC H'D4 09 80 D1 0B 82 C4 0D 88 0E 93 0F A7 CF 11 9F' DC H'DD 13 BD 14 B6 15 B7 16 B9 17 9F CF 19 A1 CF 1B' DC H'9E DB 1D 9D CE 1F A3 D0 21 F5 23 F5 25 8A 26 95' DC H'27 82 C5 29 80 D1 2B 80 D1 2D 80 D1 2F 80 D1 31' DC H'80 D1 33 80 D1 35 82 C5 37 8A 38 95 39 F5 3B F5' DC H'3D F5 3F F5 41 F5 43 F5 45 F5 47 F5 49 F5 4B F5' DC H'4D F5 4F F5 51 F5 53 F5 55 F5 57 F5 59 F5 5B F5' DC H'5D F5 5F F5 61 F5 63 F5 65 F5 67 F5 69 F5 6B F5' DC H'6D F5 6F F5 D6 D5 F4 D7 FF C0 AA 01 80 02 AA 03' DC H'80 CB E9 06 AA 07 80 08 AA 09 80 0A AA 0B 80 0C' DC H'AA 0D 80 0E AA 0F 80 10 A8 11 80 12 A8 13 81 14' DC H'A2 15 81 16 A2 17 81 18 A2 19 81 1A A2 1B 81 1C' DC H'A2 1D 81 1E A0 1F 81 20 A8 21 81 22 A8 23 80 24' DC H'A8 25 80 26 AA 27 80 28 AA 29 80 2A AA 2B 80 2C' DC H'AA 2D 80 2E AA 2F 80 30 AA 31 80 32 AA 33 80 34' DC H'AA 35 80 36 AA 37 80 38 AA 39 80 3A A8 3B 81 3C' DC H'A2 3D 95 3E 8A D5 40 F5 42 F5 44 F5 46 F5 48 F5' DC H'4A F5 4C F5 4E F5 50 F5 52 F5 54 F5 56 F5 58 F5' DC H'5A F5 5C F5 5E F5 60 F5 62 F5 64 AA 65 95 66 F5' DC H'68 F5 6A F5 6C F5 6E F5 70 AA D6 73 AA A4 8A C2' DC H'E0 B2 80 B4 A0 AA F4 D7 FF C0 D5 01 D2 03 D2 E9' DC H'D5 07 D2 09 D2 0B D2 0D D2 0F D2 11 D2 13 D2 15' DC H'D2 17 D2 19 D2 1B D2 1D D2 1F D2 21 D2 23 D2 25' DC H'D2 27 D2 29 D2 2B D2 2D D2 2F D2 31 D2 33 D2 35' DC H'D2 37 D2 39 D2 3B D2 3D 80 D0 3F 82 40 85 41 F5' DC H'43 F5 45 F5 47 F5 49 F5 4B F5 4D F5 4F F5 51 F5' DC H'53 F5 55 F5 57 F5 59 F5 5B F5 5D AA 5E 95 5F F5' DC H'61 8A D5 63 A2 D5 65 A8 D5 67 F5 69 F5 6B F5 6D' DC H'F5 6F F5 D6 D5 A3 C0 8E A5 BF F1 AB FF AD F1 B2' DC H'80 B4 C1 D5 B8 C0 D7 FF C0 E2 01 E0 E2 E0 E2 E0' DC H'E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0' DC H'E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0' DC H'E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 E2 E0' DC H'E2 E0 E2 E0 E2 E0 E2 E0 E2 E0 41 E1 E2 E5 E2 E5' DC H'EA E5 EA E5 EA E5 EA E5 EA E5 EA E5 EA E5 EA E5' DC H'EA E5 EA E5 EA E5 EA E0 EA E4 EA E5 EA E5 EA E5' DC H'EA E5 EA E5 EA E5 EA E5 EA E5 EA D6 73 AA 8E 8A' DC H'82 F0 92 80 95 82 A1 AA A3 A0 8C 9C A7 BC A9 FC' DC H'AB DC AD 9C B2 80 A0 B5 AA F4 BA B0 98 9C 98 B0' DC H'E8 04 D4 05 94 6E D4 70 D3 72 D0 D5 8E C0 80 90' DC H'BF 92 87 9E 80 90 A1 D5 A3 81 CE AB CF AF CE B1' DC H'CC 80 B4 81 D5 F4 BA 9E B3 83 B3 9E E8 CB E9 07' DC H'FE 08 86 69 BE 6A 86 6C FE 6D 80 6F AA 78 8A 7B' DC H'CA C2 E2 80 82 81 8A 82 AA 8E A0 80 8E 96 FE 98' DC H'8E 9E 80 A1 AA A3 80 9F FF E3 B0 FF B1 BF 80 B4' DC H'A0 AA F4 BA 83 C6 8E 86 C3 E8 04 D5 E9 07 FF 08' DC H'80 5A A0 5B A8 5C AA 5D 80 5E 82 E2 F2 62 E2 64' DC H'F2 E2 66 82 69 FA 6A 80 6C 8F 6D A0 F0 6F 81 E1' DC H'72 F1 74 F8 76 FC F0 78 8A 79 A8 7A 87 7B 8F 7E' DC H'9F 7F 83 81 80 83 95 87 D5 88 95 8A 85 8E 81 80' DC H'E7 9E 80 A0 84 D5 A3 D4 A5 D0 D1 B0 D0 D4 B3 D5' DC H'F4 BA 66 B7 E6 86 DF E8 CB E9 07 FF 08 80 57 D0' DC H'D4 D5 5D 80 5F FF 61 85 DE 64 D9 65 BF 67 9C 68' DC H'C0 F1 6A 80 D4 D5 6E CF 6F B8 C3 71 8F FF 75 E7' DC H'FB FD FF FE FF 83 80 F8 86 80 F0 E0 FE FF 8C 9F' DC H'80 90 FF 92 81 94 A9 81 96 9F 98 81 99 A1 9B 81' DC H'FF 9E 80 A1 AA A6 8A B5 AA F4 BA E3 B6 E7 B6 E3' DC H'E8 04 D5 E9 07 FF 08 80 38 C0 46 80 57 AA 5C 8A' DC H'5D C0 F0 5F 9F EC 61 83 62 81 E1 C7 65 B3 66 80' DC H'67 87 68 B1 CC FE FC 6C B2 6D 8A 6E AA 70 FF 71' DC H'80 72 88 73 AB 75 8B 76 AB 77 8B 79 AB 7A 8B 7C' DC H'AB 7D 8B 7F AB 80 8B 82 AB 80 C7 86 80 C3 C1 E3' DC H'8D 80 D4 94 D5 9B D4 9F D5 A3 80 8E AA FE AC 8E' DC H'B2 80 B4 94 D5 F4 BA E3 B6 E3 86 E3 E8 CB E9 07' DC H'FF 08 80 38 E1 E3 3B E7 3D EF 3F FB 41 F3 43 E3' DC H'45 C3 46 80 48 F0 FC 4A 8E 4E FC F8 50 80 52 8E' DC H'54 FC F0 56 D2 58 95 59 85 5A 81 5B 98 5C BE 5D' DC H'BF F3 F8 60 B1 61 9B 64 99 65 8C 66 80 67 87 CC' DC H'69 81 6A 85 6B B4 6C B5 6E 99 CD E7 F0 FD 73 BD' DC H'FD 83 80 84 9F 86 80 87 A7 81 89 BF FF 8C FC 80' DC H'82 90 F2 F0 9E 80 A0 A0 A1 AA A3 A0 87 C7 E7 B0' DC H'C7 87 80 B4 88 AA F4 BA 83 86 87 86 83 E8 04 D5' DC H'E9 07 FF 08 80 1B F0 29 80 38 81 3C C1 F1 3E B9' DC H'41 F9 43 B9 F1 C1 46 80 49 83 4A 87 4C E0 4E E1' DC H'E3 E7 53 C7 54 83 55 80 E0 57 C0 58 80 68 9F 69' DC H'80 6A 98 FC FF 6F BF 70 9F CF C7 D3 D4 83 D5 89' DC H'D4 8D D0 8E C0 80 90 B8 96 BF 98 B8 9E 80 A0 C1' DC H'D5 A3 C0 8E A5 BF F1 B0 BF 8E 80 B4 D0 D5 F4 BA' DC H'BF 8C BF E8 CB E9 07 FF 08 80 0A F0 0C 80 1B 87' DC H'1C 9F 1D B8 21 9F 23 B8 27 9F 28 87 29 80 3C 83' DC H'3D 8F 3E 9C 41 9F 43 80 44 9F 46 80 4C F1 53 FF' DC H'FE F0 56 BF 57 9F 58 80 61 F0 62 B0 63 BC 64 9C' DC H'65 BC F8 F1 68 85 69 95 6A 84 E0 6C 8B 6D 89 6E' DC H'A8 6F AA 8E A0 80 8E 9C FC F0 80 A1 AA A3 80 9C' DC H'AC DC FC AF BC 9C 8C 80 A0 A8 AA F4 BA 9F B3 9F' DC H'B3 BF E8 04 D5 E9 07 FF 08 80 0A BF 0C 87 18 80' DC H'1F EE FE 21 8E 29 80 3C B7 FF C7 40 87 46 80 4C' DC H'E0 F8 4E 9C 50 F8 E0 52 80 53 9C F8 E0 56 80 5C' DC H'C0 E0 5E B0 5F 98 60 8C 61 86 62 83 63 80 64 83' DC H'66 81 67 80 FF 69 80 6B FF 6C 80 6E D5 8E 81 80' DC H'E7 9C E3 E0 80 A0 84 D5 A3 85 A4 B9 AA B8 AB B9' DC H'AC BB AD BF AE BE AF BC B0 B8 B0 80 B4 81 D5 F4' DC H'BA BC E6 BE BC E8 CB E9 07 FF 08 80 0A 8E 0E FE' DC H'10 8E 18 80 1F C0 C3 21 87 23 C0 E0 27 C0 28 80' DC H'2B E0 F8 2D 9C 30 F8 F0 F8 DC 34 9C 37 F8 E0 39' DC H'80 3C F0 F1 F3 40 E0 42 C0 44 80 4C C1 C7 4E 8E' DC H'4F 80 50 81 51 87 52 8E 54 87 55 81 56 80 58 98' DC H'59 8C 5A 86 5B 83 5C 81 5D 80 68 FF 69 80 6B FF' DC H'6C 80 6E AA 8F A8 88 C1 E3 F7 FF DD C9 C1 9E 80' DC H'A0 8A A1 AA F4 BA 8C BE BC E8 04 D5 E9 07 FF 08' DC H'80 0F C3 E7 16 C7 17 87 18 80 1F 8F 20 BF F0 FE' DC H'FF F1 27 FF FE 29 80 2C 83 2D 87 30 83 31 81 33' DC H'BB 34 B7 35 AE 36 9C 37 BB F3 39 80 3C B8 40 9D' DC H'42 8F 44 87 46 80 49 8E 4C FF 4E 8E 54 FC F0 56' DC H'80 68 FF 69 80 6B FF 6C 80 6E D5 8E D0 8F 90 83' DC H'E3 F3 9E 80 A0 84 D5 A3 95 E1 A6 81 A8 85 B0 E5' DC H'B2 81 B5 D5 F4 BA 86 BE 9E E8 CB E9 07 FF 08 80' DC H'0E 8E 0F BF F1 13 FF 14 BF 15 81 FF FE 18 80 1B' DC H'9C 1D 80 1F 9C 29 80 3C F0 FC 3E 8E 44 FC F0 46' DC H'80 4C E0 F8 4E 9C 51 FC 53 9C F8 E0 56 80 68 FF' DC H'69 80 6B FF 6C 80 6E AA 8E A8 80 87 91 9F 92 B8' DC H'97 BF 99 B8 9E 80 A0 A0 A1 AA A3 80 9F A6 87 A7' DC H'A7 AF 87 9F B2 80 A8 B5 AA F4 BA E0 B0 F0 B0 BF' DC H'E8 04 D5 E9 07 FF 08 80 1F B7 FF C7 29 80 3C E0' DC H'E3 E7 44 C3 45 80 4C C1 C7 CE 51 CF C7 53 C0 CF' DC H'56 80 68 FF 69 80 6A BE FF 6C 80 6E D5 8E D0 8F' DC H'C0 86 8E 93 9E 95 BE 97 EE 99 CE 9B 8E 9E 80 A0' DC H'94 D5 A3 80 FF A6 B8 B2 80 B3 C0 B5 D5 F4 BA E3' DC H'B6 E7 86 F6 E8 CB E9 07 FF 08 80 20 81 21 83 29' DC H'80 3C F1 44 BF 45 8E 46 80 4C BB FF F3 56 80 68' DC H'FF 69 80 6A C0 FF 6C 80 6E AA 8E A0 90 A7 9D A6' DC H'9E A0 9F A8 A1 AA A3 A8 A4 AB A6 A8 A8 AA F4 BA' DC H'F3 98 F1 C3 F9 E8 04 D5 E9 07 FF 08 80 3C E0 F8' DC H'3E 9C 40 F8 E0 42 80 43 9C F8 E0 46 80 4C 83 4D' DC H'8F 4E 9C 56 80 68 FF 69 80 6A BF FF 6C 80 6E D5' DC H'91 95 A1 D5 A3 95 A5 85 B5 D5 F4 BA F9 CC BD CD' DC H'F8 E8 CB E9 07 FF 08 80 3C 81 3D 87 3E 8E 3F 80' DC H'40 81 41 87 42 8E 44 87 45 81 46 80 66 D4 67 80' DC H'D3 D0 6A 90 FF 6C 80 6E AA 8E 80 90 F8 92 B8 96' DC H'F8 98 B8 9C F8 9E 80 A1 AA A3 A0 A4 AE AA 8E CE' DC H'EE FE AE BE 9E 8E 86 80 A8 AA F4 BA F8 8D BE F8' DC H'E8 04 D5 E9 07 FF 08 80 66 AA 67 80 68 AA 6A A2' DC H'FF 6C 80 6E D5 8E D0 8F C0 83 8F 92 9C 96 8F 98' DC H'9C 9C 8F 83 80 90 D4 D5 A3 C0 9C AC 9D 9F AF 9E' DC H'9C 98 80 B4 D1 D5 F4 BA 8C CC BF E8 CB E9 07 FF' DC H'08 80 66 95 67 80 E5 69 85 6A 84 FF 6C 80 6E AA' DC H'8E 82 80 90 B8 FE C7 9C FE 9D F4 A0 A0 A1 AA A3' DC H'80 A4 B8 FE C7 B0 FE B1 F4 B4 A0 AA F4 BA EF 99' DC H'9F 99 BF E8 04 D5 05 C0 07 C7 C6 68 C7 C6 6B C7' DC H'6C C0 D0 D5 8E 85 90 F0 F1 F3 9C F1 F0 80 A0 81' DC H'D5 A3 84 F0 F1 F3 B0 F1 F0 80 B4 D1 D5 F4 BA EF' DC H'E3 BF 80 C0 BF 02 B0 04 B2 70 BE FE 72 82 73 AA' DC H'8E A8 8F A0 87 91 9F 92 B8 9C 9F 87 9E A0 9F A8' DC H'A0 AA A3 80 87 9F A6 B8 AA 9F 87 8E AE 9C B0 B8' DC H'B2 80 B4 82 AA F4 BA E7 B0 E3 80 F7 80 C0 80 24' DC H'C0 25 80 71 D6 D5 8E D1 90 8E 94 8C DC D8 F8 F0' DC H'9D F1 81 C1 A1 D5 A3 C1 8E A6 CE A8 EE AA FE AC' DC H'EE AE CE B0 8E B2 80 B4 84 D5 F4 B9 C0 C3 BB C0' DC H'C1 C3 C1 BF C0 C0 80 09 CC FC 0B B0 E6 FC 0E C0' DC H'11 80 16 87 17 8C FE F0 1A B0 1B 9C 1C 8E 1D 80' DC H'23 FE F1 F8 EE E3 28 B0 29 8C 2A 80 61 CC FC 63' DC H'B0 E0 66 CC DC D8 F0 6A 80 6E 87 6F 8C 70 80 D6' DC H'73 AA 8E A0 90 A7 94 A3 96 A9 98 AA A3 80 87 C7' DC H'E3 A8 E1 AA C0 80 81 AE E3 B0 C7 87 80 82 8A AA' DC H'F4 D7 FF C0 80 02 98 04 B0 E0 06 80 07 C0 E0 E1' DC H'E0 0D C1 0F 81 11 83 12 87 FE FC F8 16 98 FC FF' DC H'1A 9C F8 F0 1E B0 F0 21 F8 22 9E FF E1 25 C0 26' DC H'80 2A B8 EC 2C C0 F0 2E 98 30 C0 31 80 5B 9C 5C' DC H'B0 E3 5E 83 C6 EC F9 E0 65 C1 67 81 69 83 6A 87' DC H'FE FC F8 6E 98 F8 70 80 D6 D5 A3 C0 8E A5 BF F1' DC H'A8 81 C1 9F AB BF F0 AE F1 B0 BF 8E 80 B3 C0 D0' DC H'D5 F4 D7 FF C0 80 02 83 03 9B 04 8F 05 83 08 81' DC H'09 80 0D 81 0E 83 0F 87 10 8E FE 12 B3 FF CC FF' DC H'16 B3 FF FC 19 BF 1A B3 1B BF FC FF F3 FF CC FF' DC H'22 B3 FF CC FF 26 9E 27 8C 29 86 2B 87 2E 8F 2F' DC H'9B 30 99 31 80 55 C0 F0 57 8C EC 59 C0 5B 83 60' DC H'81 61 80 65 81 66 83 67 87 CE FE 6A B3 FF CC FF' DC H'6E B3 FF 70 80 D6 73 AA A5 A8 A9 AA AC A8 B1 AA' DC H'F4 D7 FF C0 80 01 E0 02 C0 C6 05 EC F8 E0 0C F0' DC H'0E B8 0F 9C 10 9F 12 F6 FF 14 99 FF E6 FF C1 19' DC H'8A 1A AA 1C 88 C1 FF 20 99 FF E6 FF 24 99 FF 27' DC H'BC 2C B0 F8 32 B0 F8 38 B0 39 BC 3E 98 3F BC 44' DC H'B0 F8 4A B0 F8 50 CC 52 B0 CC 54 86 55 81 56 80' DC H'57 83 E0 E1 C1 C3 5D EE FC E0 64 F0 F8 66 BC 67' DC H'9E 68 9F 6A F6 FF 6C 99 FF E6 FF 70 80 D6 D5 97' DC H'85 D5 85 D5 85 D5 85 D5 85 D5 85 D5 85 D5 85 D5' DC H'85 D5 85 D5 85 D5 F4 D7 FF C0 80 01 E0 02 B1 F9' DC H'04 9F 05 87 06 83 07 81 0C 80 10 C0 F0 FF 14 F3' DC H'FF EC FF F3 FF CE FE 1C B3 FF CC FF 20 B3 FF FC' DC H'FF 25 C3 26 80 50 81 52 80 53 81 54 83 55 86 57' DC H'83 58 86 E0 5A B1 F9 5C 9F 5D 87 5E 83 5F 81 64' DC H'80 68 C0 F0 FF 6C F3 FF EC FF 70 80 D6 73 AA 97' DC H'80 98 EB 9A EB 9C EB 9E EB A0 EB A2 EB A4 EB A6' DC H'EB A8 EB AA EB AA F4 D7 FF C0 80 03 83 04 80 08' DC H'B0 09 98 CC EC 0D FC 0E 9E 0F B7 E3 11 81 13 80' DC H'17 81 18 83 DF FF 1B BF 1C 8E 1D 8F 1E 87 1F 83' DC H'22 81 23 80 24 81 25 87 FE 27 BC F8 2A 98 2C B8' DC H'2D B0 2E 80 5B 83 5C 80 60 B0 61 98 CC EC 65 FC' DC H'66 9E 67 B7 E3 69 81 6B 80 6F 81 70 80 D6 D5 97' DC H'D2 80 D5 D2 80 D5 D2 80 D5 D2 80 D5 D2 80 D5 D2' DC H'F4 D7 FF C0 80 09 B0 0A B1 0B 9C 0C 8F 0D 83 0E' DC H'8F 0F 80 10 81 11 80 15 F0 16 B8 17 8C EC 19 BF' DC H'FB F0 1C 80 25 87 26 81 27 80 28 8F 29 83 2B 86' DC H'2D 80 62 81 63 80 64 87 65 83 66 8F 67 80 68 81' DC H'69 80 6D F0 6E B8 EC 70 80 D6 73 AA 97 80 98 EB' DC H'9A EB 9C EB 9E EB A0 EB A2 EB A4 EB A6 EB A8 EB' DC H'AA EB AA F4 D7 FF C0 80 16 86 17 83 18 81 19 80' DC H'1A 87 1B 80 6E 81 70 80 D6 D5 97 D4 D5 D4 D5 D4' DC H'D5 D4 D5 D4 D5 D4 D5 D4 D5 D4 D5 D4 D5 D4 D5 D4' DC H'D5 F4 D7 FF C0 80 71 D6 73 AA F4 D7 FF C0 E9 EA' end (title) g =='?(??MEMAPQ*u 0200 0220 03BB name 03CF sound (0 on 1 off) 03D0 0400 text screen 0800 <1800> 2000 screen 1 4000 screen 2 6000 shift tables/DOS file buffer 6700 vertical addresses (lo) 67C0 vertical addresses (hi) 6880 <24B3> 8D33 common code 91E3 'space' icon 926F FONT 9758 DRAW 9D00 DOS g =='?(??MAKEBOOTFa ~. RM OBJ/=.= ASSEMBLE BOOT NAMES=(TROLL_LOGO TITLE STEP1 COMMON SI FONT STEP2 RAMD_V53 STEP3 TUNC STEP4) RM OBJ/BOOT RM OBJ/BOOT.B ASML BOOT NAMES=(INIT_DRAW_ROUTINES DRAW_V53) LINK +S OBJ/BOOT >/H/JUNK MAKEEQU -C /H/JUNK /H/JUNK2 * CAPTURE ~ -C /H/JUNK2 COM.EQU COPY -C /H/JUNK2 COM.EQU RM /H/JUNK= MAKEBIN OBJ/BOOT RM OBJ/=.= g =='?(??ZPAGE >0  *-------------------------------- * Version 5.3 *-------------------------------- ; ZERO PAGE EQUATES FALSE GEQU 0 TRUE GEQU 1 TABLE GEQU $06 DESTAD GEQU $08 SAVE GEQU $1A ADPAGE GEQU $1C RANDLO GEQU $4E RANDHI GEQU $4F MINIMUM_SHIF GEQU $60 MAXIMUM_SHIF GEQU $66 LINE_PTR GEQU $90 LETTER_PTR GEQU $92 TEXTLINE GEQU $96 LEFT_MARGIN GEQU $98 RIGHT_MARGIN GEQU $99 BX0 GEQU $A0 BX1 GEQU $A1 BX2 GEQU $A2 BX3 GEQU $A3 BX4 GEQU $A4 BXL GEQU $A5 BXR GEQU $A6 TEMP GEQU $A7 STT GEQU $A8 PATCH_FLAGS GEQU $AB BOTH_PAGES GEQU $AC g =='?(??COM.EQU a a  ASCII GEQU $9B75 AUX_FLAG GEQU $9770 BLACKFONT GEQU $9763 BLOAD GEQU $9C25 BOX GEQU $9961 COMMON GEQU $230E COM_ADDR GEQU $8D33 COUT GEQU $FDED CR~ST GEQU $91E1 C~BOTTOM GEQU $91DE C~LEFT GEQU $91DF C~RIGHT GEQU $91E0 C~START GEQU $9065 C~TOP GEQU $91DD C~TYPE GEQU $91BC DELAY~ GEQU $8E0C DISABLE~H GEQU $8D33 DRAW_V53 GEQU $0992 DRAW~SI GEQU $8D97 DRAW GEQU $9775 ENABLE~H GEQU $8D39 EOR_FONT_FLAG GEQU $9A3D EXIT~ GEQU $9033 FILE~OUT GEQU $9035 FLIP GEQU $994C FLOAD GEQU $9769 FONT GEQU $284E FSEARCH GEQU $F34B HELP~ GEQU $8DE9 HGR~ GEQU $8E02 HOW_SLOW GEQU $9C12 INITIALIZE GEQU $9937 INIT GEQU $F300 INIT_DRAW GEQU $9C8A INIT_DRAW_ROUTINES GEQU $0801 INIT_R GEQU $976C INVERT GEQU $9967 IO_BUFFER_PAGE_RAMD GEQU $F4CF IO_BUFFER_PAGE GEQU $0062 KEY~IN GEQU $8D82 KEY~WAIT GEQU $8D77 LETTER_ADDR GEQU $9B8D LETTER~ GEQU $926F *LETTER GEQU $926F LINE_ADDRESS GEQU $99E3 MELODY~ GEQU $8E31 MESSAGE GEQU $9B5D MOVE_TO_HIDDEN GEQU $9BF5 MOVE_TO_VISIBLE GEQU $9BF8 NAME~OUT GEQU $8E11 NEXT_LETTER GEQU $9B9D ONE_PAGE GEQU $9758 OPTIONS~ GEQU $8DBD PRE_DRAW GEQU $9771 PRE_RESTORE GEQU $98AC PRE_UNCR_TEXT GEQU $02E1 PROMPT2 GEQU $9C47 PROMPT GEQU $9C30 QUIT~ GEQU $8DE6 RAMD_V53 GEQU $2D33 RANDGEN GEQU $9C70 RESTORE_SCREEN GEQU $98B0 RTN_FLAG GEQU $976F SET_ALL_PATCHES GEQU $9AE3 SET_LEFT_RIGHT GEQU $9924 SET_NORM_LIM GEQU $9912 SET_PATCHES GEQU $9ADD SET_TOP_BOTTOM GEQU $991D SI GEQU $27BE SI~BOTTOM GEQU $8D73 SI~COLOR GEQU $8D6F SI~TOP GEQU $8D71 SOUND~ GEQU $8DD5 SPACE_ICON GEQU $91E3 SPACE~BAR GEQU $8D53 SPACE~ICON GEQU $8DB2 SPACE~P GEQU $8D50 SPECIAL_CHARS GEQU $9B5A STEP1 GEQU $230E STEP2 GEQU $2D33 STEP3 GEQU $3225 STEP4 GEQU $3309 STRING GEQU $9A39 TCR_DST_HI GEQU $032E TCR_DST_LO GEQU $0329 TEXT_LINE_SHIFT GEQU $9BEA TEXT_LINE GEQU $9BDF TEXT_LINE1 GEQU $9BDD TEXT_LINE_START GEQU $9BDA TGEN GEQU $9CA2 TITLE GEQU $12AE TROLL_LOGO GEQU $0F3A TUNC GEQU $3225 TUNC~ GEQU $02D5 TWO_PAGES GEQU $975B UNCR_TEXT GEQU $0328 UNC~ GEQU $9048 VADDRH GEQU $67C0 VADDRL GEQU $6700 VADDR_GEN GEQU $9CCD *WAIT GEQU $FCA8 WHITEFONT GEQU $9760 WIPE~SI GEQU $8D58 WRITE~ GEQU $8D43 g =='?(??DUMMYr [ u *======================================================================* * * * H U M A N B O D Y : B R A I N & N E R V O U S S Y S T E M * * * *======================================================================* * D U M M Y C O D E F O R U N F I N I S H E D P A R T S * *======================================================================* ORG $800 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 65816 OFF 65C02 OFF LONGA OFF LONGI OFF *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEEP OBJ/C *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COPY COM.EQU COPY ZPAGE MCOPY MAX/DUMMY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LETTER GEQU LETTER~ *======================================================================* DUMMY START INIT_DRAW JSR TWO_PAGES LINK_LETTER $31,$57 LDA #LINETBL ;ADDRESS (LO) OF LINE TABLE STA LINE_PTR LDA #>LINETBL ;ADDRESS (HI) OF LINE TABLE STA LINE_PTR+1 JSR BORDER LINE 1 JSR MESSAGE DC C'So sorry, this section is not ready yet. ' DC C'Press any key to return to the menu. ',H'FF' mel lda #14 jsr melody~ BIT $C010 KEY LDA $C000 BPL KEY jmp mel JMP EXIT~ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINETBL DC H'03 9E A9 B4' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (DUMMY) *======================================================================* BORDER START JSR _0 JSR FLIP _0 ANOP BOX BLUE,0,0,39,191 BOX BLACK,0,1,$62,39,190,$64 RTS END (BORDER) *======================================================================* CLEAR START JSR _00 JSR FLIP _00 BOX BLACK0,0,0,39,191 OPTIONS ENTRY RTS END (CLEAR) *======================================================================* g =='?(??DRAWXZa +  *===============================================================* DRAW_V53 START *===============================================================* OBJ $9758 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LONGA OFF LONGI OFF *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TRUE EQU 1 FALSE EQU 0 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TABLE EQU $06 2 DESTAD EQU $08 2 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SAVE EQU $1A 2 ADPAGE EQU $1C 2 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RANDLO EQU $4E RANDHI EQU $4F *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINE_TABLE EQU $90 2 LETTER EQU $92 2 v_PTR EQU $94 2 TEXTLINE EQU $96 1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ***** $97 FREE ***** *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LEFT_MARGIN EQU $98 RIGHT_MARGIN EQU $99 V_STR_PTR EQU $9A LENGTH EQU $9C DRAW/RESTORE_SCREEN *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BOX_COLOR EQU $A0 BOX BOX_X1 EQU $A1 BOX_Y1 EQU $A2 BOX_X2 EQU $A3 BOX_Y2 EQU $A4 BOX_Z1 EQU $A5 BOX_Z2 EQU $A6 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* XINDEX EQU $A0 TINDEX EQU $A1 WIDTH EQU $A2 MSO EQU $A3 SSO EQU $A4 * $A5 & $A6 Reserved by BOX TEMP EQU $A7 STT EQU $A8 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ***** $AA FREE ***** *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PATCH_FLAGS EQU $AB BOTH_PAGES EQU $AC *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ***** $AD & $AE FREE ***** *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SHAPE EQU $EB S EQU SHAPE MASK EQU $ED D EQU MASK *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ST_LOC EQU $6000 VADDRL GEQU $6700 VADDRH GEQU $67C0 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* XBYT EQU 4 YPOS EQU 5 XSHFT EQU 6 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MIN_SHIFT EQU ST_LOC/256 $60 MAX_SHIFT EQU MIN_SHIFT+6 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BUFFER EQU $200 DOS input buffer is word buffer *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Don't forget to update your version in BOOT (G2) IO_BUFFER EQU $6000 $6000 to $6252 IO_BUFFER_PAGE GEQU $62 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *= SYSTEM VARIABLES =* *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COUT GEQU $FDED WAIT GEQU $FCA8 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ONE_PAGE ENTRY LDA #FALSE DC H'2C' *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TWO_PAGES ENTRY LDA #TRUE STA BOTH_PAGES RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* WHITEFONT ENTRY LDA #$04 DC H'2C' *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BLACKFONT ENTRY LDA #$0C STA EOR_FONT_FLAG RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* FLOAD ENTRY JMP BLOAD If >48K then JMP FSEARCH *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_R ENTRY RTS If >48K then JMP $F300 DC H'00 F3' *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RTN_FLAG ENTRY DC I1'FALSE' AUX_FLAG ENTRY Is RAM disk on? DC I1'FALSE' *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * SHAPE TABLE EXPECTED BY DRAW ROUTINES * 0 page 1 background save (LO,HI) * 2 page 2 background save (LO,HI) * 4 x coord, upper left corner of shape ($30..$57 visible) * 5 y coord, " ($00..$BF visible) * 6 shift within byte ($60..$66) * 7 height (if > $40, shape cannot disappear vertically) * 8 width * 9 offset to current figure (4n+7) * A offset to last figure (rarely used) * B 0th figure shape address (LO,HI) * D 0th figure mask address (LO,HI) * F 1st figure shape address (LO,HI) * ...etc... *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PRE_DRAW ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Inits TABLE (0-page) and continues with DRAW. This is the * entry point of the DRAW macro. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA TABLE STX TABLE+1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DRAW ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR SET_SAVE_ADDRESS Init SAVE pointer LDY #$04 Init position LDA (TABLE),Y XBYT LDX #0 STX TINDEX Init TINDEX pS1 CMP #SAVE [STA (SAVE,X)] STA dXBYT INC SAVE BNE pS6 INC SAVE+1 pS6 INY LDA (TABLE),Y YPOS pS2 CMP #SAVE [STA (SAVE,X)] STA dYPOS INC SAVE BNE pS7 INC SAVE+1 pS7 LDA SAVE SEC SBC dXBYT STA SAVE BCS pS5 DEC SAVE+1 pS5 INY LDA (TABLE),Y Init SHIFT pointers STA d14+2 STA d11+2 TAX Uses Shape as its own CPX #MIN_SHIFT Mask, shifted 1 bit pM1 DC H'2C 02' [BEQ d30] when SELFMASKing DEX through bit-shifted shape DC H'24' d30 INX STX d8+2 STX d16+2 INY LDA (TABLE),Y Init shape Size STA LENGTH INY LDA (TABLE),Y STA dWIDTH INY LDA (TABLE),Y Init Shape & Mask Addresses TAY LDX #0 d31 LDA (TABLE),Y STA SHAPE,X INY INX CPX #4 BNE d31 NEXTLINE LDA #dWIDTH dWIDTH EQU *-1 STA WIDTH LDX #dYPOS dYPOS EQU *-1 CPX #$00 Top of Screen dTOP EQU *-1 BCC d15 CPX #$C0 Bottom of Screen dBOTTOM EQU *-1 BCS d15 LDA VADDRH,X ADC ADPAGE STA DESTAD+1 LDA VADDRL,X STA DESTAD LDA #$FF dXBYT EQU *-1 STA XINDEX XINDEX = Screen X-BYTE index * XINDEX of $30-$57 is visible * on screen LDA #$00 Zero shift overflows STA SSO S(hape) S(hift) O(verflow) STA MSO M(ask) S(hift) O(verflow) *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DRAW_INNER_LOOP ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Extract color bit (bit 7) LDY TINDEX [XINDEX/TINDEX] pC1 EQU *-1 LDA (SHAPE),Y [(DESTAD)/(SHAPE)] pC2 EQU *-1 AND #$80 STA d13+1 Color flag * Extract shape info * (bits 0-6) LDY TINDEX LDA (SHAPE),Y AND #$7F Remove color bit STA d10+1 Shape byte pM2 LDA (MASK),Y [LDA (MASK),Y/LDA #$00/LDA #$7F] AND #$7F TAX LDY XINDEX LDA (DESTAD),Y pS3 CMP #SAVE [STA (SAVE),Y] EOR #$FF > > > FLIP < < < d8 ORA $FF00,X Shift pointer ORA MSO M(ask) S(hift) O(verflow) ORA #$80 Remove color bit d16 LDY $FF80,X New shift overflow STY MSO EOR #$FF > > > FLIP < < < d10 LDX #$FF Shape byte pE1 ANOP d11 ORA $FF00,X Shift pointer [EOR/ORA] pE2 ORA SSO S(hape) S(hift) O(verflow) * [EOR/ORA] d13 ORA #$FF Color flag LDY XINDEX CPY #$30 pL1 EQU *-1 BCC d14 Beyond left edge CPY #$58 pR1 EQU *-1 BCS d14 Beyond right edge STA (DESTAD),Y d14 LDA $FF80,X New Shape Shift Overflow STA SSO S(hape) S(hift) O(verflow) INC TINDEX BNE d17 INC SHAPE+1 INC MASK+1 d17 INC XINDEX DEC WIDTH BNE DRAW_INNER_LOOP BEQ d19 d15 INC TINDEX BNE d18 INC SHAPE+1 INC MASK+1 d18 INC XINDEX DEC WIDTH BNE d15 BEQ PREP_NEXT_LINE Always * * LOOP * * END OF LINE d19 LDY XINDEX LDA (DESTAD),Y pS4 CMP #SAVE [STA (SAVE),Y] LDX d11+2 Check shift CPX #$60 If no shift, BEQ PREP_NEXT_LINE Don't draw the bits * shifted out of the byte. EOR #$FF > > > FLIP < < < ORA MSO M(ask) S(hift) O(verflow) EOR #$FF > > > FLIP < < < pE3 ORA SSO S(hape) S(hift) O(verflow) * [EOR/ORA] AND #$7F [#$7F/#$FF] Remove color * bit sometimes pC3 EQU *-1 pC4 ORA d13+1 Color Flag [ORA/BIT] CPY #$30 pL2 EQU *-1 BCC PREP_NEXT_LINE Beyond left edge CPY #$58 pR2 EQU *-1 BCS PREP_NEXT_LINE Beyond right edge STA (DESTAD),Y Put byte on screen *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PREP_NEXT_LINE ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INC dYPOS LDA dWIDTH Combines dWIDTH+SAVE & INC SAVE SEC ADC SAVE STA SAVE BCC *+4 INC SAVE+1 DEC LENGTH BEQ END JMP NEXTLINE *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET_SAVE_ADDRESS ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY ADPAGE BEQ _1 LDY #2 _1 LDA (TABLE),Y Save address lo STA SAVE INY LDA (TABLE),Y Save address hi STA SAVE+1 END RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PRE_RESTORE ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA TABLE STX TABLE+1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RESTORE_SCREEN ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * REPLACES DATA IN (SAVE) TO SCREEN 1 OR 2 * ENTER WITH 'TABLE'(Z-PAGE) INITIALIZED * 'JSR RESTORE_SCREEN' WILL RESTORE THE MOST RECENTLY DRAWN SHAPE *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR SET_SAVE_ADDRESS LDY #7 LDA (TABLE),Y LENGTH STA LENGTH LDX #0 LDA (SAVE,X) XBYT STA r4+1 XBYT INC SAVE BNE pS8 INC SAVE+1 pS8 LDA (SAVE,X) YPOS STA r2+1 YPOS r1 LDY #8 LDA (TABLE),Y WIDTH STA TEMP r2 LDY #$FF YPOS LDA #$24 CPY dTOP BCC r3 CPY dBOTTOM BCS r3 LDA #$91 r3 STA r6 CLC LDA VADDRH,Y Add ADPAGE to vert addr hi * for page 1 or 2 ADC ADPAGE STA DESTAD+1 LDA VADDRL,Y Store vertical address lo STA DESTAD r4 LDY #$FF XBYT r5 INC SAVE Next byte of SAVE BNE pS9 INC SAVE+1 pS9 LDA (SAVE,X) Screen save CPY #$30 pL3 EQU *-1 BCC r7 CPY #$58 pR3 EQU *-1 BCS r7 r6 STA (DESTAD),Y [CMP #DESTAD] Store byte * on screen r7 INY Next screen position DEC TEMP WIDTH BPL r5 * LOOP * * END OF LINE * PREP NEXT LINE INC r2+1 YPOS DEC LENGTH BNE r1 Next line RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET_NORM_LIM ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$30 LDX #$58 JSR SET_LEFT_RIGHT LDA #$00 LDX #$C0 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET_TOP_BOTTOM ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA dTOP STX dBOTTOM RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET_LEFT_RIGHT ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA pL1 STA pL2 STA pL3 STX pR1 STX pR2 STX pR3 RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INITIALIZE ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA TABLE STX TABLE+1 LDY #3 LOOP1 LDA (TABLE),Y STA |SHAPE,Y DEY BPL LOOP1 INY TYA STA (SHAPE),Y STA (SHAPE+2),Y OPTIONS RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* FLIP ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA ADPAGE BNE _2 BIT $C054 View 1 LDA #$20 Draw 2 BNE _3 always _2 BIT $C055 View 2 LDA #$00 Draw 1 _3 STA ADPAGE JMP OPTIONS Patched - initially points to RTS FLIP+18 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BOX ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$91 STA (),Y LDX #$FF FLIP BITS BNE _00 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INVERT ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$51 EOR (),Y LDX #$80 DON'T FLIP BITS _00 STA B_TYPE SAVE STA OR EOR STX _07+1 SAVE FLIP OR DON'T FLIP PLA STA v_PTR PLA STA v_PTR+1 LDY #7 _01 LDA (v_PTR),Y STA |BOX_COLOR-1,Y DEY BNE _01 CLC LDA #7 ADC v_PTR TAX LDA #0 ADC v_PTR+1 PHA TXA PHA LDA BOX_COLOR AND #$7F BEQ _02 BLACK EOR #$7F BEQ _02 WHITE LDA #$7F COLORED _02 STA _05+1 SAVE BYTE TO EOR WITH LDX BOX_Y1 Y-START DEX _03 INX CPX BOX_Y2 Y-END BEQ _031 BCS _10 _031 JSR LINE_ADDRESS LDY BOX_X1 X-START _04 CPY BOX_X2 X-END BEQ _041 BCS _03 _041 TYA AND #$01 ODD OR EVEN BEQ _06 _05 LDA #$FF DUMMY ($FF OR $80) _06 EOR BOX_COLOR FLIPS FOR ODD COLORED BYTES CPY BOX_X1 IS FIRST BYTE BNE _08 AND BOX_Z1 Z-START (MASK) STA TEMP LDA BOX_Z1 Z-START (MASK) _07 EOR #$FF DUMMY FLIP BITS (IF BOX) AND (DESTAD),Y MASK ORIGINAL BYTE ORA TEMP OR IN COLOR _08 CPY BOX_X2 IS LAST BYTE BNE B_TYPE AND BOX_Z2 Z-END (MASK) STA TEMP LDA BOX_Z2 Z-END (MASK) EOR _07+1 FLIP BITS (IF BOX) AND (DESTAD),Y MASK ORIGINAL BYTE ORA TEMP OR IN COLOR B_TYPE STA (DESTAD),Y STA (),Y / EOR (),Y STA (DESTAD),Y INY BNE _04 Always *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINE_ADDRESS ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA VADDRL,X CLC ADC #$30 STA DESTAD LDA VADDRH,X ADC ADPAGE STA DESTAD+1 _10 RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INC_STT ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INC STT BNE W3 INC STT+1 W3 LDA (STT),Y RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* W1 TAY Change offset to point to spacing CLC LDA (LETTER),Y Letter Spacing (carry is clear) AND #$0F ADC #0 W_LEN W_LEN EQU *-1 STA W_LEN JMP W0 always *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * CHECK WORD_WRAP & RETURN W2 TYA Zero 'A' STA BUFFER,X store end marker (zapped if not end) INY LDA (STT),Y ASL A strip hi-bit LDY TAB_SPACING BNE _201 CMP #$40 ' ' * 2 BEQ W0 _201 LDY #XBYT ldx letter.xbyt LDA (LETTER),Y TAX LDY #XSHFT add x-shift to length of word LDA (LETTER),Y AND #$07 CLC ADC W_LEN _12 CPX RIGHT_MARGIN BEQ _13 BCS SET_CR Past the margin _13 CMP #7 BCC DUMP_BUFFER < MAXIMUM SHIFT = OK SO END * SEC SBC #7 INX Next byte BNE _12 always *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STRING ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Draw $FF-terminated ASCII string whose address is in STT. * (No registers nor STT preserved) *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA PATCH_FLAGS PHA *============================* * LDA #$0C Set for b/w font *::::::::::::::::::::::::::::* DC H'A9' EOR_FONT_FLAG ENTRY DC H'0C' *============================* JSR SET_ALL_PATCHES WORD_WRAP ANOP * Go to next line if this word won't fit on this line. LDX #0 BUFF_PTR BUFF_PTR EQU *-1 W0 LDY #0 STY TAB_SPACING JSR INC_STT AND #$7F Strip hi-bit STA BUFFER,X INX *::::::::::::::::::::::::::::* * Check for special characters *::::::::::::::::::::::::::::* CMP #$20 BEQ W2 CMP #$7B tab char = '{' BCC W1 BNE W4 JSR INC_STT STA TAB_SPACING CLC ADC W_LEN STA W_LEN LDA #0 W4 LSR A * IF Areg = #$7C newline char = '|' * #$7E '~' End of word char, don't print * #$00 was #$7B, tab char = '{' * goto W2 * Else * Areg = #$7D '}', Return * #$7F * goto STRING_RTN BCC W2 * SEC DEX STX BUFF_PTR PLA BCS SET_ALL_PATCHES Always *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET_CR ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DEC RTN_FLAG Set the carriage return flag LDA TAB_SPACING BEQ DUMP_BUFFER LDA STT SEC SBC #2 STA STT BCS DUMP_BUFFER DEC STT+1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DUMP_BUFFER ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #$00 STY BUFF_PTR STY W_LEN _21 STY SNDX LDA BUFFER,Y BEQ WORD_WRAP words are 0-terminated AND #$7F Strip hi-bit CMP #$7C '|', newline char BEQ _22 CMP #$7B #'{' BCC _211 LDA #$FF TAB_SPACING EQU *-1 STA SPACING * SEC Already set BCS _25 Always _211 BIT RTN_FLAG should we do a carriage return? BPL _24 -> no _22 PHA JSR CR_SPECIAL_CHARS LDA #0 STA RTN_FLAG Clear RTN_FLAG BCS _23 Don't print carriage return. JSR RETURN_OUT Issue a carriage return _23 PLA CMP #$7C '|', newline BEQ _26 _24 JSR SPECIAL_CHARS BCS _26 Special character - do not print JSR ASCII JSR DRAW LDA BOTH_PAGES BEQ _25 JSR FLIP JSR DRAW _25 JSR NEXT_LETTER _26 LDY #SNDX SNDX EQU *-1 INY BNE _21 always *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET_PATCHES ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* AND PATCH_FLAGS Mask out flag bits STX TEMP ORA TEMP OR in new bits *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET_ALL_PATCHES ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA PATCH_FLAGS and save the flags ROL A ($80) BCC SAVE_OFF *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * BACKGROUND SAVE Shapes moving across a background must be * drawn with background saves and restores. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SAVE_ON ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #$81 STA (ZERO,X) LDX #$91 STA (ZERO),Y BNE SAVE_SET ->Always *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SAVE_OFF ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #$C9 CMP # LDX #$C9 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SAVE_SET ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STY pS1 STY pS2 STX pS3 STX pS4 ROL A ($40) BCC SELF_MASK_OFF *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * SELF MASKING DRAW uses the shape as its own mask. The body of * the shape will be correctly masked. Edges may have a black or * white outline. Black areas of the shape will be transparent. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SELF_MASK_ON ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #$F0 DC H'2C' Skip 2 bytes *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SELF_MASK_OFF ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #$2C STY pM1 ROL A ($20) BCC SPECIAL_MASK *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USE_MASK ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ROL A LDY #$B1 LDX #MASK BNE USE_MASK_SET TO DO THE STORES *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SPECIAL_MASK ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ROL A ($10) BCC USE_NO_MASK *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USE_FULL_MASK ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX #$7F DC H'2C' Skip 2 bytes *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USE_NO_MASK ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX #$00 LDY #$A9 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USE_MASK_SET ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STY pM2 STX pM2+1 ROL A ($08) BCC EOR_OFF *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* EOR_ON ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #$5D DC H'2C' Skip 2 bytes *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* EOR_OFF ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #$1D STY pE1 ROL A Get the flag bit before TYA we trash A EOR #$18 Changes A to STA pE2 [EOR ZPAGE/ORA ZPAGE] STA pE3 BCS COLOR_FIX Set before the TYA *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * COLOR FIX/UNFIX When a white shape is drawn on a colored * background, the colors may change due to the flipping of the * color bit. COLOR FIX uses the color bit of the background; * COLOR UNFIX uses the color bit of the shape. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COLOR_UNFIX ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX #$0D LDA #TINDEX LDY #SHAPE BNE COLOR_FIX_SET *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COLOR_FIX ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #XINDEX LDY #DESTAD LDX #$2C *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COLOR_FIX_SET ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STX pC4 STA pC1 STY pC2 LDA #$FF ROR A Carry state set on entry STA pC3 store either $7F or $FF RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CR_SPECIAL_CHARS ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$7D '}', * falls thru to SPECIAL_CHARS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SPECIAL_CHARS ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CLC Patch this to JMP MY_SC_HANDLER to RTS intercept special characters in NOP message strings. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MESSAGE ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Prints a string to one or two hires screens depending on the * state of BOTHPAGES. * Starts printing where the last string ended. * Includes auto line feed and auto word wrap. * The character '|' issues a return and line feed. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLA STA STT PLA STA STT+1 JSR STRING LDY #0 LDA (STT),Y CMP #$FD BEQ _38 LDA STT+1 PHA LDA STT PHA _38 RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ASCII ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Loads the shape offset from the font table to set DRAW * to print the correct ASCII character. * Tables may be extended up to 128 chars. and may be * altered to have one character print instead of another. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* AND #$7F Permits Hi-Bit ascii TAY LDA (LETTER),Y AND #$0F STA SPACING LDA (LETTER),Y Calculate the address by LSR A adding the offset to the LSR A start of the font. LSR A LSR A STA TEMP Hi-byte of address offset LDA LETTER Prep Draw to point to Letter STA TABLE CLC *============================* * ADC LETTER_ADDR,Y Lo-byte of address offset *::::::::::::::::::::::::::::* DC H'79' LETTER_ADDR ENTRY DC A'0' *============================* LDY #11 Save letter as the shape STA (LETTER),Y LDA LETTER+1 STA TABLE+1 Prep Draw to point to Letter ADC TEMP INY STA (LETTER),Y RTS Return with carry clear and not equal to zero *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NEXT_LETTER ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Advances the character position pointer to the next available * position on a line. * Also issues RETURN.OUT = a return & linefeed. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #XBYT Load X with Letter.xbyt LDA (LETTER),Y TAX LDY SNDX Eliminate spaces at start LDA BUFFER,Y of line CMP #$20 PHP Save status LDY #XSHFT LDA (LETTER),Y PLP Restore Status BNE _40 finish CMP -> Branch if CMP #MIN_SHIFT not a space BNE _40 CPX LEFT_MARGIN BEQ NEXT_LETTER-1 RTS from last subroutine _40 CLC ADC #SPACING SPACING EQU *-1 _41 CMP #MAX_SHIFT+1 BCC MOVE_DONE SBC #7 INX CPX RIGHT_MARGIN BCC _41 ->Always BEQ _41 In the last byte JSR CR_SPECIAL_CHARS Past last byte - Send a * carriage return and fall * thru to RETURN_OUT *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RETURN_OUT ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #0 COMPARE TO TEXT LINES STY RTN_FLAG CLEAR RETURN FLAG LDA TEXTLINE CMP (LINE_TABLE),Y BCS TEXT_LINE1 INC TEXTLINE *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TEXT_LINE_START ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY TEXTLINE DC H'2C' Skip 2 bytes *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TEXT_LINE1 ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #1 Start with line 1. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TEXT_LINE ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA (LINE_TABLE),Y STY TEXTLINE LDY #YPOS STA (LETTER),Y LDX LEFT_MARGIN *============================* * LDA #MIN_SHIFT LDA #MIN_SHIFT No shift *::::::::::::::::::::::::::::* Shift of left margin DC H'A9' TEXT_LINE_SHIFT ENTRY DC I1'MIN_SHIFT' *============================* *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE_DONE ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #XSHFT STA (LETTER),Y *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STX_LETTER_XBYT ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #XBYT TXA STA (LETTER),Y RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE_TO_HIDDEN ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Routines used to copy one hires page onto another. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #SAVE DC H'2C' Skip 2 bytes *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE_TO_VISIBLE ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA # > > *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PROMPT ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Print 0-terminated ASCII immediately following JSR PROMPT, * return to address following terminator. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * This entry point sets the DOS buffer at $6000..$6252 and * restores the tables with TGEN before returning. *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * To set the buffer to another location, do the following ... * * LDA #>Third Page initialized to #$62 * STA PROMPT+6 * STA PROMPT+11 * STA PROMPT+14 * STA PROMPT+18 * STA PROMPT+22 * STA $9D01 * STA IO_BUFFER_PAGE_RAMD+1 Found in RAMD.ASM *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #00 LDY #$25 _30 STA IO_BUFFER+$22D,Y DEY BPL _30 LDY #IO_BUFFER_PAGE STY IO_BUFFER+$24C DEY STY IO_BUFFER+$24E DEY STY IO_BUFFER+$250 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PROMPT2 ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #0 STA v_STR_PTR PLA TAY PLA STA v_STR_PTR+1 BNE _32 always _31 LDA (v_STR_PTR),Y BEQ _32 JSR COUT _32 INY BNE _33 INC v_STR_PTR+1 _33 TAX BNE _31 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STY v_STR_PTR LDA $9D01 CMP #$62 BNE _34 JSR TGEN _34 JMP (|v_STR_PTR) *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RANDGEN ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Returns a random number in 'A' *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA _63+1 Save upper limit for random # LDA RANDHI Scramble RANDHI ORA #$F0 STA RANDHI LDA (RANDLO),Y Load a random byte INC RANDHI Change indirect address ADC (RANDLO),Y Add a random byte SEC _63 SBC #$FF Dummy upper limit INC RANDLO Change RANDHI BCS _63 Still pos ADC _63+1 Force over zero RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_DRAW ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA FLIP+19 STX FLIP+20 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR SET_NORM_LIM LDA #$10 USE NOSAV,FULLMSK,STA,COLOR JSR SET_ALL_PATCHES LDA #$18 STA SPECIAL_CHARS LDA #$60 STA SPECIAL_CHARS+1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TGEN ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #0 _80 LDA #>ST_LOC STA _81+2 LDA #>ST_LOC+$600 STA _83+2 TYA LDX #7 _81 STA ST_LOC,Y ASL A AND #$7F INC _81+2 DEX BNE _81 TYA LDX #7 _82 LSR A _83 STA ST_LOC+$80,Y DEC _83+2 DEX BNE _82 INY BPL _80 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* VADDR_GEN ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * LDX #0 Xreg is counting lines LDY #$20 Start at $2000 TXA Yreg is Hi byte, Areg is Lo byte CLC Normally carry is clear TGEN_LINE PHA Save location SBC #$2F STA VADDRL,X Store Location-#$30 TYA Lo byte in table VADDRL SBC #0 Hi byte in table VADDRH STA VADDRH,X PLA Get location INY Add $400 to location INY INY INY CPY #$40 Compare to $4000 BCC FOUND_NEXT If less OK * SEC Already set SBC #$80 ..else subtract $1F80 PHA TYA SBC #$1F TAY PLA CPY #$24 Compare to $2400 BNE FOUND_NEXT If less OK * SEC Already set SBC #$D8 ..else subtract $3D8 BCS DEC_HI DEY DEC_HI DEY DEY DEY FOUND_NEXT INX Next line CPX #$C0 Repeat until at last line BCC TGEN_LINE RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (DRAW_V53) *===============================================================* g =='?(??TEXT 5  LAB1.TCRLAB2.TCRLAB3.TCRBackup.........g =='?(??LAB1.TCRZ7 Y% I'm glad you could join me in my Brain Lab. This is my friend Chip the Chimp. He's in the animal training program to learn how to talk. Chip is so smart he's going to help me tell you how the brain works. The brain is very important. If your brain stops working, you stop working. You'd be KAPUT without your brain! Right, Dr. Micro? Right, Chip. Now tell us what the brain does. The $brain* is a great organizer! It acts like a computer to store information and interpret it so you know what's going on around you. Your brain tells you what you see, feel, hear, smell, and taste. I told you he's smart. A fly lands on the boy's nose. His brain tells him, 'Fly is on nose...it tickles...wrinkle nose so fly will leave.' His brain tells him what he sees, how he feels, and how to react. Not bad, Chip. But tell us about the nervous system. Your brain and spinal cord, sense organs, and all the nerve cells in your body make up the $nervous* $system.* The nervous system controls all body activities and reacts to your environment. What is the nervous system made of? Your nervous system is made up of $nerve cells* that send signals throughout your body. How do all these signals know which way to go? Nerve cells in your brain and spinal cord function as the control center, or $central nervous system.* The central nervous system coordinates all incoming and outgoing signals. The $spinal cord,* the bundle of nerves going from your brain down your back, acts like a relay station. It sends signals back and forth from your muscles to the brain. Is that all there is to the nervous system? No, there's also the $peripheral* $nervous system.* This system has nerves that connect the sense organs to the brain and spinal cord. These nerves feel heat, pain, pressure, and help you taste food. g =='?(??LAB2.TCRZ7Y% What does the brain look like, and how many parts does it have? It looks like a head of cauliflower, but it really has three distinct parts. The large mass of wrinkled tissue at the top is the $cerebrum.* It's folded to fit into the skull. The cerebrum has two halves called the right and left hemispheres. It looks like the biggest part. What does the cerebrum do? The cerebrum controls voluntary movements of the muscles. It also controls emotions, speech, and the senses like seeing, hearing, smelling, touching, and tasting. What's that round part at the bottom? That part at the back of the brain is the $cerebellum.* It's just under the cerebrum. The cerebellum has a series of lined ridges and is also divided into two halves. It looks pretty small. But it's important! It helps muscles work together to keep your balance. You dance or play tennis because the cerebellum coordinates where your body is and where it is going. Are there any other parts of the brain we missed? The $brain stem* is the third part of the brain. It is a swelling at the top of the spinal cord and under the brain and looks like a stalk holding everything up. But what does the brain stem do? The $medulla* is inside the brain stem and controls involuntary actions like heart beat, breathing, swallowing, coughing, and contraction of vessels. Each part has a job to do. How are the brain and nervous system protected? The brain is protected by a round, bony covering called the $skull.* Inside it, 3 thin membranes surround the brain. The inner membrane holds fluid that bathes the brain. This clear, colorless liquid acts like a shock absorber protecting the brain from sudden movements. This fluid also brings nutrients to the brain and takes away wastes. The spinal cord is also protected by membranes, fluid, and bones. 26 interlocking bones called $vertebrae* surround the spinal cord. Good job, Chip. The brain is amazing and so are you! Now Chip will teach us a little brain geography. g =='?(??LAB3.TCRNZ8Y% This part of the cerebrum controls the sense of sight. As light enters the eyes, nerve cells at the back of the eye send information to the brain. Your brain then interprets what you see. An area in the cerebrum regulates movements like walking. Walking also takes coordination of lots of muscles. The cerebellum at the back of the brain helps your muscles work together. UGH! The girl smells a skunk. A region in her cerebrum goes into action when it receives messages from nerves in her nose. Her brain tells her to hold her nose. The girl makes friends with the skunk. As she pets it, nerves in her skin feel the touch and send messages to the cerebrum of her brain. Her brain tells her the skunk feels soft and furry. The girl's ears pick up sound waves. Inside her ears, nerves change the sound waves into signals that are sent to the brain. This area of the cerebrum interprets what she hears. This region of the brain in the cerebrum regulates speech. It helps you translate thoughts into words by coordinating movements of the muscles in the throat, mouth, and vocal cords. Ahhh! That tasted good. Tasting food is controlled by this area of the cerebrum. It interprets whether the food you eat or drink is salty, sweet, bitter, or sour. Breathing is controlled by this area of the brain stem called the medulla. It is also called the breathing center of the brain. This area of the brain, the medulla located in the brain stem, controls heart beat. It makes your heart go pitter-patter. Chip's speech training has really paid off. How good are you at deciphering code? Meet me in the jungle to find out... g =='?(??LABiC#Z* : *======================================================================* * * * H U M A N B O D Y : B R A I N & N E R V O U S S Y S T E M * * * *======================================================================* * section 2: B R A I N L A B * *======================================================================* ORG $800 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEEP OBJ/A COPY ZPAGE COPY COM.EQU MCOPY MAX/LAB *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* GEN ON MSB ON 65816 OFF 65C02 OFF LONGA OFF LONGI OFF *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LETTER GEQU LETTER~ OPTIONS GEQU OPTIONS~ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE GEQU $FE2C Y must be 0! *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA_OP GEQU $91 EOR_OP GEQU $51 AND_OP GEQU $31 ORA_OP GEQU $11 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* _ GEQU $00 SPACE GEQU $A0 TXT_PTR GEQU $F0 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * $00 used by UNCRUNCH PNT GEQU $02 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SRC_START GEQU $3C SRC_END GEQU $3E DEST GEQU $42 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LEFTMAR GEQU $98 RIGHTMAR GEQU $99 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEYCLEAR GEQU $C010 WAIT GEQU $FCA8 *======================================================================* LAB START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR ENABLE~H *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_DRAW *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE STEP0,STEP1,$6880 move data up to $6880 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$FF STA SI~COLOR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #0 STA HOW_SLOW *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* UNC LAB_SCREEN,STA JSR MOVE_TO_VISIBLE *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$4C SPECHAR handles special chars STA SPECIAL_CHARS POINT SPECIAL_CHARS+1,SPECHAR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * * jsr dwindow *test lda #0 * sta tix * sta anum * jsr printext * lda anum * jsr doanim *k jsr key~in * cmp #$88 <- * beq prevtext * cmp #$95 -> * beq nexttext * cmp #$8a v * beq prevanim * cmp #$8b ^ * bne k *nextanim inc anum * lda anum * cmp #15 * bcc na * lda #0 *na sta anum * jsr doanim * jmp k *nexttext inc tix * lda tix * cmp #46 * bcc nt * lda #0 *nt sta tix * jsr printext * jmp k *prevanim dec anum * lda anum * bpl pa * lda #14 *pa sta anum * jsr doanim * jmp k *prevtext dec tix * lda tix * bpl pt * lda #45 *pt sta tix * jsr printext * jmp k * *printext anop A = tix (current text 0..45) * pha * jsr newtext * pla * jsr d_or_m * bcc d *m jsr mwindow * jmp onward *d jsr dwindow *onward lda #>cr_txt1 * ldy #cr_txt2 * ldy #ANIM_TIME_TAB * JSR UNPACK time to do an animation? * BCC NOANIM * LDA TIX * ASL A * TAX * LDA ANIM_ROU,X * STA ANIM_VEC+1 * LDA ANIM_ROU+1,X * STA ANIM_VEC+2 *ANIM_VEC JSR $FF65 NOANIM LDA #>CR_TXT1 LDY #CR_TXT2 LDY # next BEQ NEXT CMP #$88 <- prev BEQ PREV CMP #$8D RETURN select BEQ SEL BNE KI NEXT INC TIX LDA TIX CMP #9 BCC L DEC TIX BNE KI always PREV DEC TIX BPL L INC TIX BEQ KI always SEL ANOP JSR NEWTEXT LDA #>CR_TXT3 LDY #NAMES-1 ADC #0 PHA LDA TEMP PHA JMP MESSAGE END (WRITE_NAME) *======================================================================* DOBOY0 START JSR SCREEN UNC BOY0,STA JMP MOVE_TO_VISIBLE END *======================================================================* DOBOY1 START JSR SCREEN UNC BOY0,STA UNC BOY1,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOBOY2 START JSR SCREEN UNC BOY0,STA UNC BOY2,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOBOY3 START JSR SCREEN UNC BOY0,STA UNC BOY3,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOBOY4 START JSR SCREEN UNC BOY0,STA UNC BOY4,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOBRAIN0 START JSR SCREEN UNC BRAIN0,STA JMP MOVE_TO_VISIBLE END *======================================================================* DOBRAIN1 START JSR SCREEN UNC BRAIN0,STA UNC BRAIN1,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOBRAIN2 START JSR SCREEN UNC BRAIN0,STA UNC BRAIN2,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOBRAIN3 START JSR SCREEN UNC BRAIN0,STA UNC BRAIN3,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOBRAIN4 START JSR SCREEN UNC BRAIN0,STA UNC BRAIN4,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOBRAING START JSR SCREEN UNC BRAIN0,STA UNC BRAINGEO,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOCNS START JSR SCREEN UNC CNS,STA JMP MOVE_TO_VISIBLE END *======================================================================* DOPNS START JSR SCREEN UNC CNS,STA UNC PNS,EOR JMP MOVE_TO_VISIBLE END *======================================================================* DOSKULL START JSR SCREEN UNC SKULL,STA JMP MOVE_TO_VISIBLE END *======================================================================* DOSPINE START JSR SCREEN UNC SKULL,STA UNC SPINE,EOR JMP MOVE_TO_VISIBLE END *======================================================================* SCREEN START BOX WHITE,1,$C,$64,$15,$64,$65 RTS ENTRY RTS END (SCREEN) *======================================================================* DWINDOW START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* POINT LINE_PTR,dLINES write in Dr's speech bubble LINK_LETTER $47,$57 LDA #$54 BNE CONT always *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MWINDOW ENTRY POINT LINE_PTR,mLINES write in monkey's speech bubble LINK_LETTER $31,$57 LDA #$BF *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CONT PHA remember who's speaking STA Y_END SEC SBC #8 STA SPACE~ICON+1 JSR TWO_PAGES text on both screens *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR BOX erase both spikes DC H'80 1C 58 20 65 FC 83' JSR BOX DC H'80 00 89 05 91 E0 9F' PLA who's speaking? BPL DS draw his spike UNC MONKEYSPIKE,EOR JMP ON DS ANOP UNC DOCTORSPIKE,EOR ON JSR FLIP JSR MOVE_TO_HIDDEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NEWTEXT ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINE 1 LDY #1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* WIPETEXT ENTRY LDA (LINE_PTR),Y STA Y_START LDA LEFT_MARGIN SEC SBC #$31 STA X_START JSR W_1_PAGE JSR FLIP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* W_1_PAGE ENTRY JSR BOX DC H'FF' X_START DC H'00' Y_START DC H'00' X_END DC H'27' Y_END DC H'BF E0 8F' CLC RTS * E X I T * *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (DWINDOW) *======================================================================* SPECHAR START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CMP #$24 BEQ DOLLAR '$' begin highlight CMP #$2A BEQ STAR '*' end highlight BNE NOT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DOLLAR LDA LETTER+6 '$' begin highlight SEC SBC #2 CMP #$60 BCS OK ADC #7 OK TAY LDA LMASKS-$60,Y STA LMASK LDA LETTER+4 SBC #$30 STA LEFT LDA LETTER+5 STA TOP > > > *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SEC SEC DC H'24' skip CLC *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NOT CLC *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RTS $ * handled, EXIT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STAR ANOP '*' highlight preceding word LDA LETTER+5 set position for end highlight CLC ADC #7 STA BOTTOM LDY LETTER+6 LDA RMASKS-$60,Y STA RMASK LDA LETTER+4 SEC SBC #$30 STA RIGHT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* HILITE JSR INVERT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COLOR DC H'7F' LEFT DC H'00' 0-relative, inclusive left XBYTE TOP DC H'00' inclusive top YPOS RIGHT DC H'00' 0-relative, inclusive right XBYTE BOTTOM DC H'00' inclusive bottom YPOS LMASK DC H'00' mask for left edge byte RMASK DC H'00' mask for right edge byte *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR FLIP JMP MOVE_TO_HIDDEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (SPECHAR) *======================================================================* D_OR_M START LDX #D_OR_M_TAB BNE UNPACK always *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* UNPACK ENTRY * A = index, X = table lo, Y = table hi STX 0 STY 1 ROR A ROR A ROR A /8 PHA AND #$0F TAY quotient PLA AND #$F0 ROL A ROL A ROL A TAX remainder LDA (0),Y ASL ASL A DEX BPL ASL RTS cc 0, cs 1 END (UNPACK) *======================================================================* ZZZ_CODE START END COPY LDATA g =='?(??LDATA\FZ+ : *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LAB_SCREEN START DC H'00 C0 30 58' dc H'11 F5 EF EB E9 E8 DE DA D6 D3 D2 CE CC CB C9 C8' dc H'BA B9 B9 26 FF 56 B9 BA 80 67 BA C8 1B 80 1C C8' dc H'C9 80 55 C9 CB 80 2A CB CC FF 65 CC CE 80 92 CE' dc H'D2 BB EE D2 D3 80 FF D3 D6 FF C0 AA D6 DA 03 FF' dc H'DA DE 26 FF 58 80 DE E8 1F 80 E8 E9 FF C0 80 E9' dc H'EB 02 80 EB EF 67 80 FF 6B 80 EF F5 07 80 F5 BC' dc H'01 F0 EB F3 04 80 F0 06 B8 F5 F4 D4 F4 D4 F4 65' dc H'D4 F0 67 8F CF 69 C0 CF 6B 8F 6C CE F0 FC FE FF' dc H'BE FE FC C0 AA DA 04 AA F5 EE 09 D2 0B BB CC D2' dc H'EF 92 FF C0 D5 DA D5 F5 DD F7 DD F7 CC F7 DD EF' dc H'92 D6 DA 04 AA F5 08 D2 0A D2 CC EE 66 BB EF 92' dc H'FF C0 D5 DA D5 F5 F7 DD F7 DD CC DD F7 EF 92 D6' dc H'DA 04 AA F5 EE 09 D2 0B BB CC D2 EF 92 FF C0 D5' dc H'DA D5 F5 DD F7 DD F7 CC F7 DD EF 92 D6 DA 04 AA' dc H'F5 08 D2 0A D2 CC EE 66 BB EF 8E C0 91 D3 C0 D5' dc H'DA D5 F5 F7 DD F7 DD CC DD F7 EF 88 A0 8B 80 88' dc H'8D AA 90 EC 80 D6 DA 04 AA F5 EE 09 D2 0B BB CC' dc H'D2 EF 6C C0 6D 80 81 C0 D0 84 D4 86 D5 8C C5 C4' dc H'D0 90 E0 D3 C0 D5 DA D5 F5 DD F7 DD F7 CC F7 DD' dc H'EF 6C 8F 6D 86 6E 8C 6F 98 F0 71 80 7A A8 7B 88' dc H'7F A8 C2 E2 83 CA 84 8A 85 AA 86 A2 89 8A 8B AA' dc H'8D 8A 82 90 B6 80 D6 DA 04 AA F5 08 D2 0A D2 CC' dc H'EE 66 BB EF F0 6D C0 E0 6F B0 70 9F 71 80 77 94' dc H'D5 7A 80 7B B6 E3 7D 80 7E 9E 7F 8C E1 F7 82 B6' dc H'C1 E3 85 9C C1 87 95 8A D5 D4 D0 8E C0 90 D8 D3' dc H'C0 D5 DA D5 F5 F7 DD F7 DD CC DD F7 EF 6C 87 6D' dc H'81 6E 80 7A 8A 7B 88 7F 8A 80 81 81 83 83 81 80' dc H'82 89 8A 88 8C A8 8D A2 90 B2 80 D6 DA 04 AA F5' dc H'EE 09 D2 0B BB CC D2 EF 8E 81 91 D3 C0 D5 DA D5' dc H'F5 DD F7 DD F7 CC F7 DD EF 92 D6 DA 04 AA F5 08' dc H'D2 0A D2 CC EE 66 BB EF 92 FF C0 D5 DA D5 F5 F7' dc H'DD F7 DD CC DD F7 EF 92 D6 DA 04 AA F5 EE 09 D2' dc H'0B BB CC D2 EF 92 FF C0 D5 DA D5 F5 DD F7 DD F7' dc H'CC F7 DD EF 92 D6 DA 04 AA F5 08 D2 0A D2 CC EE' dc H'66 BB EF 92 FF C0 D5 DA D5 F5 F7 DD F7 DD CC DD' dc H'F7 EF 92 FF C0 BC 01 F2 02 8A F2 04 8A F2 06 B8' dc H'F5 08 BE 09 BB 0A BE 0B BB 0C BF 65 81 67 F8 F9' dc H'69 81 F9 F8 6C CE E9 01 D4 EB 1C D4 E8 27 C0 E0' dc H'2A F0 54 E0 56 C0 57 80 74 E0 F8 76 98 77 80 78' dc H'C0 79 80 7A B8 F8 7D 80 50 8C 80 F0 91 80 E9 01' dc H'AA EB 1C AA E8 26 FE FF 57 FE 58 80 75 A7 76 AF' dc H'77 AE 78 AF 79 80 7B FF 7D CB 8C 80 83 91 80 E9' dc H'01 D5 EB 0A E0 0C 80 0D A0 0F A8 1A 80 FC D5 E8' dc H'DE 5A C0 5C D0 D4 5E 84 E4 C4 E4 63 C4 65 84 6A' dc H'80 6E C0 6F 80 F0 E0 F0 F8 FC FF 79 BE 7A 80 7C' dc H'9F 7D 80 15 88 55 8C CE E9 01 AA EB 0B 01 00 01' dc H'0F 04 05 1A 00 1B 87 1C AA E8 B9 83 57 A8 58 AA' dc H'5E D3 61 83 62 BD 64 B3 FF 67 F8 68 80 E0 6A 80' dc H'6B A8 6C AA 6D A0 6E 9F 6F B0 C7 71 9F FF 77 F9' dc H'FC FE 87 80 72 8A 02 60 FC FE 90 BC 80 E9 01 D5' dc H'EB 0F 60 10 78 11 7C 13 7E 16 7C 18 78 19 70 00' dc H'1B 80 D5 E8 D4 22 D0 23 80 B9 80 D5 5B 95 5D C1' dc H'F0 5F BF D9 61 86 62 83 C3 64 8F E6 66 BA 8E 68' dc H'A3 CD FC F9 E5 D5 6F D3 71 80 72 97 D7 74 97 76' dc H'D7 77 97 79 D7 7A 97 7C D7 7D 97 7F D7 80 97 D7' dc H'82 97 84 D7 86 97 80 CF 8A 80 83 C7 8F 80 C6 80' dc H'E9 01 AA EB 0F 9F FF 13 BF DF 15 BF F7 18 E3 F1' dc H'1A B0 C8 AA E8 B9 80 57 AA 58 8A 59 82 5A 98 5B' dc H'BC 5C B7 F9 E7 F0 E3 61 B6 63 B7 64 B3 65 98 66' dc H'BA 8E 68 B8 69 83 6A AB 6B A9 6C 8A EA 6E B2 6F' dc H'98 CF E0 FA 87 80 88 BF 8A 80 8B 8F FF 8E FD FC' dc H'F9 80 E9 01 D5 EB 0C 00 0D 80 10 81 11 83 12 87' dc H'13 86 14 83 16 86 17 8F 18 87 19 8F 1A 9B 1B 80' dc H'D5 E8 B9 F8 FE 58 80 5E 81 60 80 6B 81 6C 83 6D' dc H'80 6E 86 6F 8F 71 9F 73 BF FF FC 77 FD F9 7A 81' dc H'D1 7C 81 C1 7F E1 80 B1 81 81 11 51 11 51 87 50' dc H'54 8B 50 80 81 90 CE E9 01 AA EB 0A C0 0C FE 0D' dc H'2A 10 6A 11 72 FE 13 BE EE 15 B6 16 72 18 4A 0A' dc H'FE C8 AA E8 DE 76 81 78 83 7A F0 F2 F0 7D 87 2F' dc H'82 27 23 28 2A 8C CE E9 01 D5 EB 09 81 0A 83 0C' dc H'7F 0D 55 10 4E 11 5F 12 59 13 5B 14 5D 15 57 16' dc H'5C 17 5B 18 57 19 54 1A 7F 1B 80 D5 E8 DE 7A FF' dc H'7D C9 8C CE E9 01 AA EB 11 C0 E0 14 C0 16 E0 F0' dc H'E0 F0 D8 C8 AA E8 DE 6E 70 00 50 72 00 73 7E 50' dc H'77 80 78 78 79 D3 7D CB 8C CE E9 01 D5 EB 0F FC' dc H'FF 13 FC F9 FB ED 17 B7 19 BF 1A 9D 1B 80 D5 E8' dc H'D4 22 D0 23 80 DE 6E 1C 00 14 72 00 73 7F 14 77' dc H'80 78 7F 79 D3 7D C9 8C CE E9 01 AA EB 0F 83 10' dc H'8F 11 9F 12 BF 14 FF 18 BF 19 9E 1A 80 1C AA E8' dc H'DE 6E 07 00 05 45 40 4F 45 77 40 47 40 4F 7D 40' dc H'4A 8C 40 8F CE E9 01 D5 EB 10 A8 12 B8 15 A8 1B' dc H'80 D5 E8 DE 62 C0 E0 F0 65 B0 70 CB 0A 2A 00 76' dc H'7C 8C 00 2A 8F 80 90 9E 80 E9 01 AA EB 0D 84 F4' dc H'1A 84 C8 AA E8 DE 62 8F 63 BF 64 B0 E0 68 80 71' dc H'55 74 80 76 BF 8C C9 8F CE E9 01 D5 EB 0C F0 E2' dc H'F2 E2 F2 E2 F2 E2 F2 E2 F2 E2 F2 E2 F2 1B 80 D5' dc H'E8 DE 63 C0 64 80 66 E0 67 80 E0 69 80 E0 6B 80' dc H'E0 6D 80 E0 6F 80 71 2A 74 00 7C 03 84 00 8D 2A' dc H'8F CE E9 01 AA EB 0C A6 0D A4 0E A6 0F A4 10 A6' dc H'11 A4 12 A6 13 A4 14 A6 15 A4 16 A6 17 A4 18 A6' dc H'19 A4 1A A6 C8 AA E8 20 A8 22 A0 23 80 DE 5A F0' dc H'F8 F0 EC 5E BC DC D8 61 80 63 FF 64 BA FB F8 69' dc H'BB 6A B8 6B 9B 6C B8 6D BB F8 FB 70 C9 75 01 71' dc H'79 01 55 01 71 7F 01 55 86 01 55 01 55 01 55 8F' dc H'CE E9 01 D5 EB 0C 8E 0F 8A 10 84 11 8A 12 84 13' dc H'8A 14 80 15 8A 16 84 17 8A 18 80 19 8A 1A 8E 1B' dc H'80 D5 E8 20 81 23 80 DE F7 F6 CF DB EE 5E BB E7' dc H'DF 61 9E 62 D3 64 8C 67 FF C1 69 98 6C F0 6D 80' dc H'C1 FF 70 CB 22 74 2A 75 80 E3 F7 FF 79 CB 7B 80' dc H'E3 F7 FF 7F CB 86 CB 80 2A CB 8F CE E9 01 AA EB' dc H'1C AA E8 26 87 27 9F FF 53 BF 55 9F 56 8F 57 83' dc H'58 80 5A 86 5B 8F 5C 83 5D 9F 5E BE 5F B1 60 9F' dc H'61 87 62 80 63 9F 64 BA 8F 69 8E 6B 8C 6C 8E 6E' dc H'8F 70 80 15 75 10 13 79 10 15 10 13 7F 10 15 86' dc H'10 15 10 15 10 15 8F 80 90 9E CE 9F 93 BF FF BE' dc H'BF 9F C0' END (LAB_SCREEN) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STEP0 START END HIDATA START OBJ $6880 MONKEYSPIKE ENTRY DC H'89 92 30 36' dc H'00 00 91 40 92 00 8F 70 7E 7F 92 00 8D 60 7E 7F' dc H'92 00 8C 7C 7F 92 00 8A 70 7F 8F 3F 1F 0F 92 18' dc H'8A 0F 07 03 01 00 92' DOCTORSPIKE ENTRY DC H'58 66 4C 51' dc H'01 FF FF 3F 0F 03 00 66 FF 00 61 40 60 70 78 0C' dc H'66 00 5A 40 5B 60 70 78 7C 7E 7F FF 7E 59 7F 5E' dc H'1F 07 01 00 66 7F 5A FF 03 59 00 66' BOY0 ENTRY DC H'19 50 37 3F' dc H'00 FF 2A BF FF 50 FF 1F 9F 8F 97 9F 83 81 80 28' dc H'81 83 80 2D C1 E7 EF 37 F7 39 FB FD FE 3D E1 9F' dc H'FF F7 FF FB 87 FB 46 8F EF 4A CF 9F FF 50 FF 1B' dc H'CF 83 80 81 80 2C BF FF 31 C0 81 BF FF C1 83 B3' dc H'C3 FF 3C FE 3E FF 42 FB FC FF 4C 80 FF 50 8F 1A' dc H'C3 81 80 2D 83 30 87 8F FE FC F9 FB FF FC FD FF' dc H'48 BF DF EF F3 FC 4E D9 E3 50 FF 1B 98 80 33 87' dc H'9F 39 FF 3F 9F FF 50 FF 1B 80 38 83 87 3C 83 81' dc H'B8 FE FF BF 47 FF 50 FF 1C FC E0 F0 C0 80 41 E0' dc H'F0 F8 FC 48 F9 F3 E7 CF 9F BF FF 50 FF 21 FE F8' dc H'E0 28 F0 E0 37 F0 F8 3C FC FE 3F FF 4D FE FC FF' dc H'50' BOY1 ENTRY DC H'1D 3A 39 3F' dc H'00 00 20 40 22 70 78 7C 28 78 60 00 3A 60 1E 7C' dc H'7F 2B 78 00 3A 7F 2B 5F 60 7E 2F 7C 78 40 00 3A' dc H'01 1E 1F 7F 33 5F 1E 3E 3C 37 38 30 3A 00 1F 01' dc H'07 0F 3F 24 7F 2D 0F 7F 33 1F 0F 00 3A 00 26 01' dc H'2C 00 2F 01 32 00 3A' BOY2 ENTRY DC H'1D 3A 36 3F' dc H'00 00 34 60 36 00 3A 00 34 1C 0F 07 00 3A 00 3A' dc H'00 20 40 22 70 78 7C 28 78 60 00 3A 60 1E 7C 7F' dc H'22 73 24 03 25 33 28 03 7F 2B 78 00 3A 7F 24 67' dc H'66 28 0F 7F 2B 5F 60 7E 2F 7C 78 40 00 3A 01 1E' dc H'1F 7F 24 1C 4C 28 1C 7F 1F 7F 33 5F 1E 3E 3C 37' dc H'38 30 3A 00 1F 01 07 0F 3F 24 78 79 28 78 79 7C' dc H'7F 2D 0F 7F 33 1F 0F 00 3A 00 26 01 2C 00 2F 01' dc H'32 00 3A' BOY3 ENTRY DC H'1D 44 37 3F' dc H'00 00 36 40 00 44 00 35 10 09 17 06 3A 03 00 1F' dc H'7E 60 08 41 04 7C 00 44 00 20 40 22 70 78 7C 28' dc H'78 60 00 36 24 4C 38 3C 00 3B 01 00 01 00 41 04' dc H'07 03 44 60 1E 7C 7F 22 73 24 03 25 33 28 03 7F' dc H'2B 78 00 36 01 03 02 00 44 7F 24 67 66 28 0F 7F' dc H'2B 5F 60 7E 2F 7C 78 31 40 00 44 01 1E 1F 7F 24' dc H'1C 4C 28 1C 7F 1F 7F 33 5F 1E 35 3E 36 3C 37 38' dc H'30 3A 00 44 00 1F 01 07 0F 22 3F 24 78 79 28 78' dc H'79 7C 7F 2D 0F 7F 33 1F 0F 00 44 00 26 01 2C 00' dc H'2F 01 32 00 44' BOY4 ENTRY DC H'17 34 3A 3F' dc H'00 00 2A 40 60 70 00 2E 30 40 00 34 00 19 78 0C' dc H'E0 00 D0 27 40 C6 3F F9 CF F8 CE 70 87 9C 60 00' dc H'34 7C 18 07 81 80 FF FE E0 8A AA 21 A9 DA AA A9' dc H'DA AA 29 A8 03 1F 7F B3 9E CF CC 61 66 60 34 01' dc H'18 9F F0 80 1C E3 87 80 B9 FD 22 FC FD 25 FC FD' dc H'2A 9C 60 78 FE FF 30 7F 1F 07 01 34 00 19 01 07' dc H'1D 06 21 07 01 29 00 2B 03 30 00 34' BRAIN0 ENTRY DC H'21 64 3B 46' dc H'00 FF 3C BF 49 FF 54 BF 56 9F 58 CF C7 5B D3 5E' dc H'83 61 FF 64 FF 2E BF 9F 31 8F 33 A7 35 A3 37 A9' dc H'39 A8 3C AA 49 A8 A9 A3 A7 4F A3 51 A9 A8 55 AA' dc H'5E A0 61 A7 64 FF 27 BF 9F CF C7 D3 D1 D4 30 95' dc H'85 C5 E5 37 C5 F1 B9 F9 3E F1 E5 C5 F1 F9 B9 F9' dc H'F1 C1 85 95 4B D5 64 FF 23 9F 87 A9 A8 AA 29 8A' dc H'82 E2 F0 F8 FC 30 F8 EF 33 9F FD 36 E3 EF 9F FE' dc H'F9 FB FD 3E D3 EF F9 FF DF E7 FC DF BF F8 FE 4A' dc H'FC F0 80 82 AA 64 9F 22 C1 D4 D5 85 81 F1 F8 FC' dc H'F8 FB FF FE 83 BF DF C3 EF FC F6 ED BD BE DF F0' dc H'FB BD FB F8 F7 EF 9B FD 43 FB 8F FF FE 9B E7 FF' dc H'4B BF 80 E0 C0 85 95 D5 64 80 22 AA 24 8A 82 E0' dc H'F3 F7 2A BF DF F1 FE FF 30 FD BB 87 FF FB DF E0' dc H'FE FF BF CF E0 EF DF 3F E7 F8 FE 9D C7 F8 FD DD' dc H'CE BF FF F9 FC FF 8F FF BE C0 E2 53 C2 8A 56 AA' dc H'64 80 22 D5 24 D0 80 9E BF 29 9F FF BF CC F3 E7' dc H'F1 FD FE FB F7 EF 8F F3 F9 FC FE 9D E7 F7 3F FB' dc H'FD C1 BE FF FB 87 FF 48 FC BB C7 FD FC FF 9F E0' dc H'FF 55 FE F8 E1 F1 5B E5 5D C5 85 95 62 D5 64 F8' dc H'22 82 AA 26 80 8E 9E FF 2B F8 C7 FF 2F 80 EF DF' dc H'EF 9F ED F7 FE FD FF FC FB E7 9B FD FE 40 FD DD' dc H'B8 BE DE EF DE F9 9F FF 4B 87 F9 BC DF 51 9F DF' dc H'9F BF 5B FF 60 FE 62 FC 64 FF 22 FC E1 85 95 D5' dc H'D4 D0 D3 C7 87 BB FF FE FB 31 E7 FF B8 DB C7 DE' dc H'DD BD BB FD FE DF 80 F7 FB FD 42 F8 87 FF FD FB' dc H'E7 DF DC F1 C0 9F BF DB E3 ED AE B7 BB BA FC 80' dc H'84 D4 5E D0 D1 62 D3 C3 64 FF 25 FC F0 C2 8A AA' dc H'2C A8 A9 A3 30 A7 32 81 9F BF FF 37 FD FB BB C7' dc H'FD FE DF ED EF 9C B9 EB BF DE EC ED D9 CF BD FE' dc H'BF 80 BF F7 B9 FE 8C B3 BF 9F 86 A0 A8 AA 64 BF' dc H'29 BE 2B BC B9 B1 A5 30 95 34 94 39 90 91 A3 A7' dc H'3E AF 41 A7 A3 AC AF 47 A7 A3 90 4B 94 95 94 54' dc H'95 5D A5 A1 B1 B0 BC 64' BRAIN1 ENTRY DC H'26 4F 3D 46' dc H'05 FF FE FD FC FB FB 00 4F 00 FB FC 00 54 FC FD' dc H'00 2A 00 FD FE 00 55 FE FF 00 28 00 FF 00 34 20' dc H'00 20 00 20 FF 28 00 20 00 42 28 FF 4F 00 2C 70' dc H'FC 00 50 00 32 45 FE 00 36 41 00 15 00 51 FE 00' dc H'3E 41 00 51 FE FC 00 15 FC 00 54 FB 28 29 FF 7F' dc H'00 02 00 0A FD 20 FF 0A 00 2A 3B 40 2A 00 22 00' dc H'0A FF 0A FD 22 FD 4F 40 27 FE 00 15 00 71 FE 00' dc H'55 00 05 00 51 00 36 40 FE 00 3A 45 06 3C 45 FE' dc H'00 50 00 17 00 50 FE 00 15 00 51 FE 00 55 4F 0A' dc H'27 00 28 2A 00 2A 2A 00 2C 4C 00 22 FF 2A FD 22' dc H'FF 08 00 22 00 22 FF 2A FD 2A FF 02 FF 0A 4F 00' dc H'28 14 FE 00 2C 47 FE 2F 3C 30 45 00 32 45 00 34' dc H'45 FC FE 00 51 00 11 FC FE 00 10 FC 00 54 00 15' dc H'FE 00 01 FB 28 01 00 02 00 2C 3B FD 2A FD 0A 00' dc H'0A FF 28 00 0A 3C 22 FF 28 FD 2A 00 0A FB 2E 01' dc H'00 05 00 01 00 15 FE 00 51 00 3A 45 FC 00 3E 45' dc H'00 14 00 41 FC 00 45 00 45 FC FB 3C 02 00 02 00' dc H'02 00 02 00 02 00 02 00 02 00 4F' BRAIN2 ENTRY DC H'4C 55 43 45' dc H'00 15 4D 00 4E 51 00 45 00 15 00 10 55 00 4E 22' dc H'00 2A 00 22 00 0A 55' BRAIN3 ENTRY DC H'4C 63 40 44' dc H'01 FF FF 00 2A 00 FF 00 52 20 00 63 00 50 55 00' dc H'52 55 00 54 55 00 50 00 50 00 50 00 40 00 63 28' dc H'4D 00 0A 00 0A 00 0A FF 2A FF 2A FF 2A FF 28 63' dc H'01 4D 00 60 01 00 01 63' BRAIN4 ENTRY DC H'54 61 41 43' dc H'00 40 55 00 50 10 50 00 40 00 40 00 61 02 55 00' dc H'0A 00 0A 00 0A 00 0A 00 0A 00 0A 61' CNS ENTRY DC H'13 5F 38 3E' dc H'00 FF 2C BF 2E DF 30 EF 33 F7 35 FB 37 FD 39 BF' dc H'DE EE 3D DE B6 CE EE DC C3 FF 59 BF DF EF 5E 9F' dc H'5F FF 16 BF 1B DF EF BF 1F FF BF 22 FF 26 BF E7' dc H'FB FD FE 2C FF 33 CF DB 37 DD DE DF EF 3F F7 47' dc H'FB 58 FD FE BF 5D CF F0 5F 87 14 FD AE AB 1A 87' dc H'BF 1D FF 1F FE FF 22 FA FB 25 FD FE FF 43 BF FF' dc H'DF 4B CF EF 4E E7 F7 51 F3 FB 54 FD 59 FC FF 5F' dc H'FC 14 F3 ED D9 B5 1C B9 BE DE EE F6 26 CE FE 40' dc H'FF 43 FE FD 4B F9 FB 50 F7 52 EF 55 DF 5B FF 5F' dc H'FF 27 FC F7 EF DF 2C BF FF 32 FA F6 35 EE 39 DE' dc H'DD BB FB 3F FF B7 42 F7 44 EF 4A CF DF 51 CF EF' dc H'58 DF BF FF 5C FB F7 8F 5F FF 2D FE 2F FD 31 FF' dc H'FB F7 36 EF 3C EE DD 3F BE BB BC DF E1 FF 59 FE' dc H'F9 FF F7 5E F8 5F' PNS ENTRY DC H'15 5D 38 3E' dc H'01 FF FF 29 09 FF 00 33 40 36 50 10 39 11 04 00' dc H'41 01 00 5D 00 2A 20 28 00 08 02 22 08 02 33 00' dc H'44 40 47 00 40 4C 20 58 10 08 5B 02 01 5D 50 16' dc H'54 1A 78 1B 40 1C 44 08 1E 54 08 04 21 50 10 00' dc H'60 14 10 28 58 12 11 2B 54 13 10 2E 54 05 04 31' dc H'54 05 04 34 54 14 05 04 38 54 05 01 3B 51 05 11' dc H'3E 49 25 11 01 09 01 04 00 04 00 04 4B 14 08 02' dc H'00 5D 02 16 06 0A 1C 0E 1D 47 01 02 01 00 03 01' dc H'00 03 28 0B 23 03 0B 2C 33 03 2B FF 0B FF 0B FF' dc H'38 0B FF 0B 29 21 33 25 08 42 10 00 20 40 00 48' dc H'10 4A 20 4D 60 40 44 48 00 5B 40 00 5D 00 2A 01' dc H'04 08 01 10 11 00 24 20 33 40 00 3F 01 43 00 02' dc H'04 09 00 01 02 04 4F 00 51 02 55 00 02 58 04 5A' dc H'10 23 40 5D 00 31 02 00 34 01 36 02 38 00 02 04' dc H'00 5B 08 01 5D' SKULL ENTRY DC H'16 29 39 3D' dc H'00 FF 17 BF 9F CF 20 E7 E3 F3 24 C3 F3 28 87 29' dc H'81 17 FC 87 EB B9 ED B9 F3 8F BF 21 FF BF 26 9F' dc H'EF F0 29 F0 17 CF 9C F1 E7 ED D7 DD CE B0 BB C6' dc H'FF BE 80 FE FF 29 FF 18 FE FC FD F9 F3 22 F9 FC' dc H'FF 29' SPINE ENTRY DC H'18 56 39 3D' dc H'00 00 56 78 19 14 1A 46 11 1C 40 08 74 1F 52 20' dc H'48 00 3D 40 3F 60 47 40 49 00 56 23 19 0E 18 12' dc H'1C 28 1D 22 1E 31 1F 4F 20 44 21 39 00 25 08 1F' dc H'13 28 3F 13 2A 3E 66 2C 3E 2D 4C 7C 2F 4C 6C 31' dc H'4C 7C 33 4C 6C 35 4C 6C 37 44 7E 26 7E 23 7F 11' dc H'3E 3F 08 1F 08 1F 08 1F 08 1F 31 1F 63 7E 0C 70' dc H'00 40 00 60 00 60 54 30 18 56 00 2E 01 00 01 00' dc H'01 00 01 00 01 00 01 00 4B 01 03 02 07 06 07 03' dc H'01 00 56' BRAINGEO ENTRY DC H'28 61 3D 45' dc H'00 00 39 40 00 43 40 00 61 00 2A 60 10 08 04 00' dc H'31 10 33 60 02 36 1C 37 50 38 40 31 16 14 0A 0E' dc H'28 14 0E 18 30 08 13 30 46 48 00 09 01 02 08 00' dc H'61 00 2A 01 00 2D 01 7C 2F 40 20 31 3C 70 33 3B' dc H'05 15 36 43 37 41 20 0F 04 3B 42 04 07 3E 48 70' dc H'04 62 42 42 43 44 70 00 01 64 18 00 4A 60 78 70' dc H'10 21 00 61 00 29 08 2A 40 20 0E 01 00 30 02 31' dc H'38 7B 00 04 20 1F 01 00 39 40 30 67 1E 27 3E 41' dc H'21 0F 09 71 39 04 0C 3E 29 48 5C 0F 07 03 00 70' dc H'40 4F 60 20 00 61 00 2B 40 2C 33 0C 18 0E 02 7E' dc H'04 08 10 70 0C 06 03 01 62 67 3C 48 08 07 7C 02' dc H'3E 41 00 3A 1B 01 00 03 44 38 02 03 00 4E 61 1F' dc H'00 58 28 00 5C 20 00 10 00 61 41 29 00 2B 07 2C' dc H'38 00 2F 7F 10 27 28 20 12 08 01 02 00 03 04 18' dc H'63 0C 39 70 40 45 2E 42 5F 7F 44 59 45 51 26 08' dc H'7C 70 00 78 06 43 4E 60 40 00 40 00 54 60 20 00' dc H'60 01 61 01 29 00 2E 01 04 31 18 00 06 22 34 29' dc H'32 62 64 02 21 20 7F 08 04 03 01 43 74 18 1B 1C' dc H'00 2C 24 0E 3F 10 4D 4E 20 4F 58 36 4D 52 5A 15' dc H'0D 47 3A 78 54 50 00 61 00 37 02 04 3A 78 02 01' dc H'20 12 10 63 41 46 14 40 21 13 12 26 30 42 41 00' dc H'1E 3E 69 06 19 35 4D 33 2C 39 3F 0E 0A 02 00 61' GIRLPIX ENTRY dc H'00 75 30 52' dc H'17 F4 EE EB EA E9 E8 E6 E4 DD D9 D2 D0 CE CD C4' dc H'C2 B5 B4 AE AB AA A8 A5 A5 75 FF 07 A5 A8 FE E1' dc H'EF EC F3 A8 AA F2 E2 C8 8B 88 87 AA AB FD E5 BE' dc H'AB AE C1 C8 E1 F0 F1 E3 AE B4 A3 9F DF B4 B5 C3' dc H'B1 C1 83 E3 B5 C2 A1 A9 C2 C4 F8 F9 C4 CD BF 9F' dc H'CD CE BD 42 81 9D 46 81 CE D0 BD 1A 81 9D 1E 81' dc H'D0 D2 FC FE FF D2 D9 F6 F7 D9 DD F2 E2 C8 8B 88' dc H'87 A7 A6 A3 A9 81 DD E4 FD FC E0 9C FD E4 E6 8C' dc H'99 F1 81 E6 E8 FF 75 FF E8 E9 F0 F7 E9 EA D4 D5' dc H'81 EA EB F0 E0 CF DE CC E1 FF EB EE 9D 9E 8C B1' dc H'FF EE F4 F7 B7 DB BB ED 8D E3 FF F4 FF 01 CD 8F' dc H'A7 08 C2 0B A3 BF DF 0F CF 11 F4 28 CD 8F A7 2F' dc H'C2 32 B4 36 CF 38 DF BF 3B FF 50 CD 8F A7 57 C2' dc H'5A B4 5E CF 60 F4 75 80 01 EA FD 81 E2 BE E6 E0' dc H'FA 11 FC 13 E4 D0 20 EE 27 80 EA AB 2F E6 E0 FA' dc H'38 F8 F3 8F FA E5 9D FD BD 41 FD 81 9D 47 C1 81' dc H'BD BE CC F1 FF 4F 80 EA AB 57 E6 E0 FA 60 FC 62' dc H'E4 BD 69 81 9D 6D 81 6F EE 75 F8 01 F2 E2 C8 83' dc H'9C B0 BB B2 B3 F1 E1 E3 E7 C7 B7 F7 15 E9 18 D9' dc H'1B E9 20 EB F8 DD C3 C7 36 D7 38 B7 3B B0 B6 8F' dc H'EF 40 8F E0 E7 F7 F8 46 F0 E7 EF F6 F8 FF 4F F8' dc H'DD C3 C7 D7 5F C7 61 B7 F7 E7 90 F7 67 D9 6A E9' dc H'6F F0 E0 CF DE CC E1 75 FF 06 FE 09 FC 0B FD 0F' dc H'FE FF 2E C4 31 D2 3E FE 40 FF 56 C4 59 D2 61 A8' dc H'E8 75 E8 01 CD 8F A7 08 C2 0B B4 0F CF 11 F4 29' dc H'CD 8F A7 30 C2 33 B4 37 CF 39 F4 55 CD 5A 87 A7' dc H'5D 8F 9F DF CF 62 F7 64 B7 DB BB ED 8D E3 FF 75' dc H'80 01 EA AB 08 E6 E0 FA 11 FC 13 E4 D0 20 EE 28' dc H'80 EA FD E5 9E 30 CC 99 F1 81 E0 FA 39 FC 3B E4' dc H'CE 48 EE 52 83 D1 D4 84 F5 95 F9 5A F1 E5 C5 85' dc H'E0 F2 FA F8 FC 64 E0 9D FC BC 69 81 9D 6D 81 6F' dc H'EE 75 F8 01 DD C3 D7 0F 87 B7 F7 E7 97 F7 E9 18' dc H'D9 1B B0 B7 1F F7 EB 28 F8 F2 E2 C8 8B 88 80 A7' dc H'8D B8 E1 34 D3 93 83 F7 3D E9 40 D9 43 B0 B7 47' dc H'F7 EB 52 E0 CA 8A A0 AF A3 9B 5A 98 81 A7 80 8F' dc H'60 CF 62 C7 64 E0 E7 C7 B6 B7 F7 B0 B7 6E F7 F0' dc H'E0 CF DE CC E1 A5 C4 0A D2 10 A8 FF 17 F1 E1 C1' dc H'CC D8 CC 1E E0 E1 B5 E7 FF 2F C4 FC FD FB F7 36' dc H'F0 FF 39 DF ED DE ED DE FF F1 E1 C1 CC D8 CC 46' dc H'E0 E1 B5 E7 FF 55 FE FC 59 E1 E5 5C F1 F8 FC FE' dc H'64 FC FB E7 DC C0 80 98 CC 6D E0 6F B5 E7 75 FF' dc H'20 AE FF 48 AE FF 6F AE 75 E8 01 CD 8F A7 08 C2' dc H'0B B4 0F CF 11 F4 29 9F 8F A7 2F C2 33 E3 F7 37' dc H'B7 8F FF 75 80 01 D4 85 E1 AB 08 E6 E0 FA 11 FC' dc H'13 E4 D0 20 EE 28 80 EA FD E1 FE F3 9B E7 F7 83' dc H'E1 F9 FA 39 FD 3D E1 9D FD CE 48 EE 75 F8 01 E2' dc H'C8 87 E7 DC CF F7 C6 C3 C1 D1 93 0E 83 E3 F3 12' dc H'F7 15 E9 18 D9 1B E9 20 EB 28 F8 AA AC AD 32 8E' dc H'98 B9 B3 F7 38 E7 97 F7 3D E9 40 D9 43 E9 48 EB' dc H'75 FF 03 FE FC FD 09 F9 FB F3 F7 0E F6 F9 FF 2E' dc H'F8 30 F9 32 FC FF 35 FE 39 E8 75 E8 01 CD 8F A7' dc H'08 C2 0B B4 0F CF 11 F4 29 CD 8F A7 30 C2 33 B4' dc H'CF 39 F4 75 80 01 EA AB 08 E6 E0 FA 11 FC 13 E4' dc H'D0 20 EE 28 80 EA AB 30 E6 80 DA 9A 39 BC FC E4' dc H'CE 48 EE 75 F8 01 DD C3 C7 0F D7 11 B7 15 B0 87' dc H'E7 F6 87 1B 90 B7 F7 20 EB 28 F8 AA A7 A6 A3 A9' dc H'80 C0 97 86 8E 98 FC F7 E7 87 E9 40 D9 43 E9 48' dc H'EB A5 C4 0A D2 17 FE FD FE FC F8 FC FF 2F C4 32' dc H'D2 36 FE FC 39 F9 FB 3C FC E8 75 E8 01 CD 8F A7' dc H'08 C2 0B B4 0F CF 11 F4 28 CD 8F A7 2F C2 32 B4' dc H'36 CF 38 F4 75 80 01 EA AB 9E E6 FC FE 13 E4 D0' dc H'20 EE 27 80 EA AB 2F E6 E0 BA DA 37 BA FC 3A E4' dc H'BD 41 81 9D 45 81 47 EE 75 F8 01 AA A6 09 A3 A9' dc H'81 C7 CF 12 BF F7 E7 90 F7 18 D9 1B E9 20 EB F8' dc H'DD C3 C7 D6 37 C6 C7 B7 F7 E7 90 F7 3F D9 42 E9' dc H'47 EB A5 C4 0A D2 12 A8 FF 2E C4 31 D2 39 A8 E8' dc H'75 E8 01 CD 8F A7 08 C2 C9 E3 F7 0F B7 8F FF 28' dc H'BF 8F A7 30 C2 33 A3 C7 DF CF 38 F4 75 80 01 EA' dc H'FD 85 9E 87 83 8F E3 81 F9 FA 11 FD 15 E1 9D FD' dc H'D0 20 EE 27 81 D4 81 FD E1 BD BE 9C 99 89 85 81' dc H'98 BA FA 38 FC 3A E4 BD 41 81 9D 45 81 47 EE 75' dc H'F8 01 F2 E2 C8 8B 80 87 AC 98 9C 99 98 B8 B1 F3' dc H'10 E3 9B F7 15 E9 18 D9 1B E9 20 EB F8 E2 C8 CB' dc H'88 A7 2E A0 9E 98 9E D8 B8 F2 E3 E7 38 C7 B7 F7' dc H'3C E9 3F D9 42 E9 47 EB A5 C4 0A FC FF 0D FE 11' dc H'FF 2D C4 30 D2 34 FE FD 39 FE FF 75' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CR_TXT1 ENTRY dc H'1B 5F F6 15 28 48 60 A5 B6 C7 F6 0C 16 2D 60 75' dc H'88 A3 C3 CE EF 05 1F 37 5F 7B 87 A0 B9 D7 E3 D8' dc H'F3 FB FC FF E9 EA 04 0E 14 1C 20 23 DB 29 30 39' dc H'40 44 47 31 4D 54 5A 61 67 6E EB 75 26 7C 7F 84' dc H'88 8B 91 96 9A 9D A3 AA 26 B0 B7 EC BD C2 C9 3B' dc H'32 80 CF D3 85 34 D8 4A 81 DC E1 E5 EA 5D EE D5' dc H'F1 51 F5 F8 FB FE 02 05 DD 09 BA 36 B4 11 EB 0D' dc H'10 13 16 19 1C C6 1F 22 DE CC 25 5E 00 01 01 01' dc H'01 01 01 01 01 02 02 02 02 02 02 02 02 02 02 03' dc H'03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03' dc H'04 04 04 04 04 04 03 04 04 04 04 04 04 04 04 04' dc H'04 04 04 04 03 04 04 04 04 04 04 04 04 04 04 04' dc H'04 04 02 04 04 03 04 04 04 04 04 04 04 04 04 04' dc H'04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04' dc H'05 05 04 05 04 04 04 04 04 05 05 05 05 05 05 04' dc H'05 05 04 04 05 04 C9 A7 ED A0 E7 EC E1 24 E3 50' dc H'EC E4 A0 EA EF 51 A0 ED E5 44 A0 ED 52 C2 3B A0' dc H'CC E1 E2 AE 00 D4 E8 E9 F3 3C ED 52 E6 F2 E9 E5' dc H'45 46 25 46 ED F0 AE 00 C8 E5 A7 53 E9 26 E1 EE' dc H'E9 ED 54 55 3B 47 A0 F0 56 E7 F2 E1 ED 3D 57 E1' dc H'F2 EE 18 F4 54 EB AE 00 46 F0 3C F3 EF 27 48 15' dc H'F4 EF 28 ED E5 29 3E E8 58 10 F7 59 EB F3 AE 00' dc H'D4 19 3C F6 5A 52 E9 ED F0 59 F4 E1 EE F4 AE A0' dc H'C9 E6 0F F3 F4 EF F0 F3 1A AC 2A F4 EF F0 1A AE' dc H'A0 D9 50 A7 E4 A0 E2 5B CB C1 D0 D5 D4 A0 F7 E9' dc H'F4 11 3B A1 A0 D2 E9 E7 E8 F4 5C C4 F2 AE A0 CD' dc H'E9 E3 56 BF 00 D2 E9 E7 E8 F4 1B CE 58 16 3F 10' dc H'E4 EF E5 F3 AE 00 40 A4 E2 3B AA 3C E1 A0 E7 5D' dc H'5E 2B E9 FA 5A A1 00 C9 F4 0C E3 EF ED F0 F5 F4' dc H'5A 3D F3 F4 59 E5 44 E6 59 ED E1 2C 5F 44 F4 5A' dc H'F0 5D F4 A0 E9 F4 60 EF 37 21 5E 15 EF EE A0 E1' dc H'F2 50 45 49 AE 00 D9 4A 0D 3E 3F 2A E5 E5 5C 41' dc H'AC 48 E1 F2 5C F3 ED 4B 38 2D AE 00 C9 4C EC 24' dc H'61 A7 F3 27 AE 00 C1 A0 E6 EC 52 EC E1 5F 53 EF' dc H'26 E2 EF F9 A7 F3 A0 EE EF F3 E5 AE 00 06 5C A7' dc H'C6 EC F9 3C EF EE 2E AE AE E9 F4 55 E9 E3 EB 57' dc H'F3 AE AE AE F7 F2 51 EB 57 A0 EE EF F3 5B F3 EF' dc H'A0 E6 EC 52 F7 E9 EC EC A0 57 E1 F6 E5 AE A7 00' dc H'06 A0 3F 48 60 E5 E5 F3 5C E8 58 48 A0 41 F3 38' dc H'18 5D 4D AE 00 CE EF F4 A0 E2 E1 E4 1B C2 F5 F4' dc H'16 E1 E2 50 F4 07 AE 00 D9 03 AC 0E 38 1C A0 EE' dc H'09 4A 2F ED E1 EB 5B F5 25 A4 30 F3 AA A0 A4 31' dc H'AE AA 00 D4 08 1D 42 EC 2F 4D E9 F6 E9 F4 E9 E5' dc H'F3 39 5D 4D F3 4C 32 E5 EE F6 E9 56 EE ED E5 EE' dc H'F4 AE 00 D7 4E A0 E9 F3 07 33 EF E6 BF 00 D9 4A' dc H'0A A0 E9 F3 33 F5 F0 A0 EF E6 A0 A4 EE 13 AA 55' dc H'E8 E1 34 17 F4 E8 F2 50 E7 11 EF E4 F9 AE 00 C8' dc H'58 A0 E4 EF 1C F3 E5 17 21 E9 E3 E8 A0 F7 E1 F9' dc H'3D E7 EF BF 00 CE 09 03 A0 E6 F5 EE E3 2C F3 43' dc H'1D A0 E3 E5 EE F4 5A 5C 59 A0 A4 04 AE AA 00 40' dc H'04 4F 59 E4 51 5E E5 42 EC 44 E3 EF ED 47 39 50' dc H'F4 E7 EF 47 1E AE 00 40 A4 12 AC AA 3A E2 F5 5F' dc H'57 A0 EF E6 1F 35 E6 56 ED 0F E4 58 EE 22 E1 E3' dc H'EB AC 0C 5D EC E1 52 F3 F4 5E E9 EF EE AE 00 C9' dc H'34 F3 17 E2 E1 E3 EB 39 E6 59 F4 E8 A0 E6 56 ED' dc H'32 ED F5 F3 E3 57 F3 4C 14 AE 00 C9 53 F4 4E 1C' dc H'5D 3C F4 EF 07 BF 00 CE EF AC 43 5D A7 42 F3 EF' dc H'3A A4 F0 5A E9 F0 E8 5A 54 AA A0 A4 0B AE AA 00' dc H'D4 E8 E9 20 A0 E8 E1 F3 1F F4 4E 4F EE EE E5 E3' dc H'F4 43 0E 3D F4 61 05 AE 00 D4 61 F3 E5 1F 41 48' dc H'5E 5C F0 E1 51 5C F0 5D F3 F3 F5 5D 38 28 49 2D' dc H'A0 E6 EF EF E4 AE 00 4A 23 E1 45 F3 F0 51 54 4F' dc H'F2 E4 00 E3 E5 EE F4 F2 54 A0 30 53 F3 F9 F3 F4' dc H'E5 ED 00 C8 E9 F3 0D E8 E9 ED 00 55 61 0A 00 13' dc H'44 A0 F9 00 A0 4D 53 EC E9 EB 5B E1 A0 00 23 F4' dc H'4B F3 A0 00 60 E5 EE F3 E5 2B F3 00 22 3B A0 00' dc H'14 A0 00 E8 50 F4 32 E2 00 5A F6 5B E3 4B F3 00' dc H'55 61 A0 E2 F2 E1 E9 EE 00 A7 53 E7 EF 47 A0 00' dc H'29 F5 53 00 1E A0 00 A0 E8 58 4C A0 00 A0 F7 59' dc H'EB 51 E7 00 5C 46 F0 AE A0 00 A0 54 EC 55 E8 E5' dc H'00 4F EE F4 56 EC 00 60 E9 E7 EE 54 F3 00 A0 EE' dc H'5A F6 E5 53 00 EB EE 58 A0 F7 E8 00 36 A0 00 E4' dc H'A0 49 A0 00 F0 43 A0 00 EE 3A 00 60 ED E1 F2 F4' dc H'00 48 EC F0 A0 00 55 4B A0 00 37 F3 00 A0 59 E7' dc H'E1 EE 00 F4 E9 EF EE A0 E1 00 55 E1 F3 F4 E5 00' dc H'A0 E2 EF E4 F9 A0 00 EE 5A F6 EF F5 00 A0 49 F2' dc H'A0 00 A0 ED E1 E4 E5 A0 00 F4 60 E5 EE E4 00 5C' dc H'E1 5F 00 A0 E1 5F A0 00 A0 E9 53 00 F7 E8 E1 F4' dc H'00 D4 E8 5B 00 E6 E5 E5 EC 00 53 E1 EC 00 A0 51' dc H'00 C3 E8 E9 00 A0 61 00 F9 50 00 50 F2 00 E5 EC' dc H'EC 00 55 EF 00 E1 E3 F4 00 A0 E3 EF 00 A0 F4 00' dc H'F2 EF 00 EC E5 00 EF F7 00 EF F2 00 E5 F2 00 AC' dc H'A0 00 F2 E5 00 A0 F3 00' CR_TXT2 ENTRY dc H'13 6E 04 1A 42 7F 91 C9 D7 07 14 72 87 B9 C4 0B' dc H'1C 53 AF D5 F3 18 1D 28 2D 35 3C 40 48 1E 4E 52' dc H'57 61 64 6A 6F 78 2E 7E 50 81 8C 94 9C A2 5A 95' dc H'A6 AF B7 79 C0 C9 CE D3 D7 B0 E0 E6 E9 2F ED 5C' dc H'9E F4 F7 FD 03 06 0B 11 18 1D 19 23 2A D0 9F 31' dc H'36 3A 37 3D 42 47 4B 4E 1F 54 87 52 56 5A 5F 62' dc H'66 69 6D 71 08 74 77 48 7B 6E 7E 81 6A 15 37 20' dc H'4B 89 84 32 67 5E 87 A3 8A 8D C6 90 93 27 96 2E' dc H'99 9C 9F 01 01 01 01 01 01 01 02 02 02 02 02 02' dc H'03 03 03 03 03 03 04 04 04 04 04 04 04 04 04 04' dc H'04 04 04 04 04 04 04 04 04 03 04 04 04 04 04 04' dc H'04 04 04 04 04 04 04 04 04 04 04 04 04 04 04 04' dc H'04 04 04 04 04 05 05 05 05 05 05 04 05 05 04 04' dc H'05 05 05 04 05 05 05 05 05 05 04 04 05 05 05 05' dc H'05 05 05 05 05 05 05 05 05 05 05 05 05 05 05 05' dc H'05 04 04 05 04 04 04 05 04 05 05 04 05 05 05 05' dc H'05 05 05 05 D7 03 41 4D EB E5 2E E8 EF F7 A0 ED' dc H'56 F9 2F 30 E9 57 58 59 BF 00 06 E1 A0 5A E1 E4' dc H'42 E3 E1 F5 EC E9 E6 EC EF F7 5B 5C E2 F5 57 E9' dc H'57 5D 4E 5E 58 5F 60 5D 61 E4 62 F4 63 E3 F4 2F' dc H'AE 00 43 EC 64 E7 61 ED E1 F3 F3 42 F7 F2 63 EB' dc H'EC 65 66 62 F3 F5 E5 11 07 F2 17 E6 67 E4 65 44' dc H'E6 E9 F4 45 EF 3B 31 A0 0C 58 F3 12 0F F2 E9 E7' dc H'E8 F4 3C EC E5 E6 57 5A ED 62 F0 46 F3 AE 00 06' dc H'47 E2 E9 E7 E7 68 F4 3D 69 D7 0D 21 A0 E4 EF BF' dc H'00 0C 1D 18 1E 42 4F 22 69 50 6A F3 EF 19 E5 ED' dc H'EF F4 E9 6B F3 5C F3 F0 E5 E5 E3 E8 2E 47 F3 E5' dc H'EE F3 E5 2B F3 E5 E5 3E 5A 64 32 ED 33 AC 51 F5' dc H'E3 1A F4 E1 F3 F4 52 AE 00 D7 58 48 F4 53 34 08' dc H'EF F4 F4 EF ED BF 00 D4 53 08 E1 E3 EB 0E 07 E5' dc H'6C 17 EA F5 F3 F4 35 66 13 69 D4 09 36 F3 5B E9' dc H'68 42 EC 63 65 A0 F2 6D E7 68 49 23 A0 E4 E9 F6' dc H'6D 65 45 EF 12 AE 00 50 41 5F F0 5D F4 F4 5E F3' dc H'ED 4E AE 00 C2 F5 57 E9 48 E9 ED F0 6E F4 56 F4' dc H'A1 A0 50 5A EC F0 F3 22 A0 F7 6E EB 51 E7 E5 4F' dc H'F2 44 EB E5 E5 F0 2C 6A 56 E3 E5 69 D9 6F A0 E4' dc H'56 E3 61 6E A0 F0 EC E1 5E F4 E5 EE EE E9 5F E2' dc H'E5 E3 E1 F5 F3 61 F4 09 E3 EF 6E E4 63 E1 F4 68' dc H'37 2C EF E4 F9 3F EE E4 37 A0 E9 F4 4A E7 EF 52' dc H'AE 00 C1 5D 66 46 A0 56 5E EF 4F F2 2F 0E A0 F7' dc H'61 ED 62 F3 65 BF 00 43 A4 38 4B AA 24 60 E9 F2' dc H'E4 3D 0E 69 C9 F4 3F A0 F3 F7 33 11 A0 EF E6 04' dc H'49 35 05 14 E1 A0 F3 F4 6A EB A0 E8 67 E4 4C E5' dc H'59 F2 F9 60 4C F5 F0 AE 00 C2 F5 57 F7 03 4B A0' dc H'E4 EF BF 00 43 A4 ED 65 F5 6C E1 AA 4A 63 F3 6D' dc H'E5 15 4B 49 19 63 18 39 2B 5A 64 57 E2 E5 E1 F4' dc H'5C E2 5D E1 60 32 F7 4E EF F7 3E E3 6F E7 1A E3' dc H'6B F4 F2 39 42 59 F3 F3 E5 EC F3 69 C5 E1 E3 E8' dc H'3D A0 36 EA EF E2 44 E4 EF AE 00 C8 EF F7 70 5D' dc H'05 EE 5B F6 6F 5F F3 F9 4B 1B BF 00 10 0A E1 34' dc H'5C E2 6B 5E E3 EF 59 F2 52 0F A4 31 AA A0 C9 EE' dc H'F3 6D 61 E9 F4 5C B3 A0 60 63 1F F3 20 16 A0 43' dc H'63 EE 5B 1F A0 E8 67 E4 25 F4 53 A0 E2 E1 4F F3' dc H'1C AE 00 D4 E8 E9 5F E3 EC E5 64 5C E3 67 6E EC' dc H'68 F3 4D F1 F5 6D 70 E3 F4 2B E1 A0 F3 E8 EF E3' dc H'EB 70 E2 F3 6E E2 5B 26 52 15 E6 F2 EF ED A0 F3' dc H'F5 E4 E4 E5 EE A0 1E 69 D4 E8 E9 25 6A F3 EF A0' dc H'E2 F2 52 5F EE F5 F4 F2 E9 E5 EE F4 F3 51 05 F4' dc H'E1 EB E5 5F E1 F7 E1 5E F7 E1 F3 F4 68 AE 00 D4' dc H'0B 23 0A 27 F3 AC 3A 2E E2 6B 68 69 B2 B6 45 5B' dc H'EC EF E3 EB 4C E2 6B 68 28 A4 59 F2 F4 E5 54 E5' dc H'AA 20 04 AE 00 C7 EF EF E4 A0 EA EF E2 5C C3 E8' dc H'E9 F0 69 10 70 ED E1 FA 52 3C F3 EF 70 5D A0 F9' dc H'6F A1 00 CE EF F7 A0 C3 E8 E9 F0 A0 F7 E9 6C 66' dc H'E5 E1 E3 E8 A0 F5 5F E1 4D F4 F4 EC 29 E7 E5 EF' dc H'E7 F2 E1 F0 E8 F9 AE 00 0D 54 63 A0 00 66 55 F3' dc H'F0 63 6A A0 E3 6E E4 00 15 56 E4 A0 00 50 41 F3' dc H'4D EB E5 A0 00 24 A4 E3 5B E5 E2 00 3D 2A E2 00' dc H'55 40 E5 6C F5 ED A0 00 1B A0 E2 F9 A0 00 D4 13' dc H'A0 00 53 30 4F A0 00 A0 EF E6 A0 60 61 54 E9 EE' dc H'00 28 47 00 D4 E8 29 E9 F3 00 2A F4 EF F0 00 66' dc H'F7 EF A0 58 EC 59 F3 00 55 40 F2 F5 ED 00 1C A0' dc H'00 F5 ED AE AA A0 C9 F4 A7 F3 A0 00 F6 67 F5 EE' dc H'F4 64 5E 00 A0 E3 6B F4 F2 67 5F 00 E8 52 AC 49' dc H'A0 00 26 E5 E4 00 ED EF 59 ED E5 EE F4 F3 00 A0' dc H'ED E5 ED 54 EE E5 00 A0 F3 F5 F2 F2 6F EE E4 00' dc H'A0 ED F5 F3 E3 EC E5 F3 00 3F EC F3 EF 00 A0 62' dc H'A0 47 00 F3 3A A0 00 A0 F0 F2 EF F4 E5 E3 F4 00' dc H'A0 E3 4E 65 A0 00 2D A0 00 70 F4 3B 00 A0 F9 6F' dc H'F2 A0 E2 00 3D F3 00 A0 E4 EF E5 5F 00 F3 EB F5' dc H'6C AE 00 3E F3 00 E5 6C 63 E7 00 A0 F2 6F EE E4' dc H'00 A0 F5 EE E4 E5 F2 00 58 5F E1 A0 00 A0 F7 5A' dc H'F2 E5 00 E1 E3 F4 E9 EF EE 00 A0 E6 EC F5 E9 E4' dc H'00 A0 F0 64 F4 00 52 AC A0 00 4A E1 00 EC EF EF' dc H'EB 00 A0 EF E6 A0 00 D4 5A A0 00 51 A0 00 A0 63' dc H'F4 00 A0 56 E4 00 A0 E9 5F 00 F3 F4 E5 ED 00 52' dc H'A0 00 A0 EC E9 00 6A EC 00 F4 E8 E5 00 C9 F4 A0' dc H'00 66 EF 00 58 F4 00 E2 F2 E1 00 E1 EE 00 E8 E1' dc H'00 F6 E5 00 F4 E8 00 E1 F2 00 A0 F4 00 EF EC 00' dc H'AE A0 00 E1 EC 00 EC EC 00 EF F2 00 EF F5 00 A0' dc H'E1 00' CR_TXT3 ENTRY dc H'0B 56 C4 03 43 80 C8 01 40 87 9C C5 DF 10 1F 2A' dc H'32 3A 40 1A 45 4B 3B 50 57 60 6B 74 7D 87 3C 90' dc H'9A 51 A0 A3 A7 AA AD B1 BA C3 CA D0 D8 DE 1B E2' dc H'E9 EE F4 DF F9 01 09 0E 14 EF 1A 21 27 2B B3 2E' dc H'71 F6 33 37 3D 41 46 4B 4F 23 54 58 52 5D 60 64' dc H'67 EB 6A 41 6E 72 75 78 48 27 42 7B 7E 8D 81 84' dc H'A4 51 54 00 01 01 01 01 02 02 02 02 02 02 03 03' dc H'03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03' dc H'03 03 03 03 03 03 03 03 03 03 03 03 03 03 03 03' dc H'03 03 03 03 03 03 04 04 04 04 03 04 04 04 04 03' dc H'04 03 03 04 04 04 04 04 04 04 04 04 04 03 04 04' dc H'04 04 03 04 03 04 04 04 04 03 03 03 04 04 03 04' dc H'04 03 04 03 D4 E8 43 F0 E1 F2 F4 07 18 4B 35 4C' dc H'44 4D E9 E7 E8 F4 4E C1 4F EC E9 E7 E8 50 E5 3B' dc H'F3 36 E5 F9 E5 1D A0 E3 3C 06 E5 F9 35 E4 45 E6' dc H'51 ED 52 E9 EF EE 0A D9 53 19 54 EE A0 08 3D 4C' dc H'E5 AE 00 C1 EE 3E E1 04 12 EC E9 EB E5 A0 F7 2C' dc H'4E D7 2C A0 55 F3 EF 56 E1 EB E5 F3 11 EF EE 44' dc H'A0 EC EF F4 F3 44 1E 4E D4 46 E3 E5 57 E2 E5 EC' dc H'EC F5 ED 06 37 13 F2 1A F7 51 EB 56 EF E7 E5 F4' dc H'47 AE 00 D5 C7 C8 A1 A0 1B F3 ED 3C A0 E1 1C 25' dc H'26 14 E7 EF E5 27 E1 E3 F4 E9 EF EE A0 F7 54 EE' dc H'A0 E9 50 57 E3 E5 E9 F6 E5 F3 15 E6 F2 EF ED 0B' dc H'EE EF 4C 05 EF A0 E8 EF EC E4 38 EE EF 4C AE 00' dc H'1B 2D E6 F2 E9 E5 EE E4 4F F7 E9 4B 3F 1C F3 4D' dc H'46 F0 E5 F4 4F E9 F4 AC 0B F3 EB 58 A0 E6 E5 E5' dc H'EC 36 F4 53 E3 E8 39 4C EE E4 15 F4 EF 0C EF E6' dc H'A0 54 28 05 54 2E A0 E6 E5 E5 EC F3 4D EF E6 F4' dc H'39 E6 F5 F2 F2 F9 AE 00 1F A7 4F 48 4F F0 E9 E3' dc H'EB A0 F5 F0 0F 4E C9 EE F3 E9 E4 E5 38 48 1D 4F' dc H'E3 E8 E1 EE E7 E5 3F 0F 2F F3 E9 E7 EE 55 4F 4B' dc H'49 E1 F2 35 F4 0A D4 20 07 08 F3 46 E8 48 F3 AE' dc H'00 D4 E8 E9 F3 25 0D 04 30 4E C9 F4 13 56 F2 E1' dc H'EE F3 EC 52 E5 A0 4B 53 E7 E8 F4 27 F7 51 E4 4F' dc H'E2 F9 11 EE E7 A0 12 31 1A 29 4B F2 EF 52 AC A0' dc H'ED 53 4B AC 39 F6 EF E3 55 A0 E3 51 E4 F3 AE 00' dc H'C1 E8 E8 E8 A1 A0 D4 E8 49 F4 E1 F3 F4 E5 E4 A0' dc H'E7 4A 4E D4 E1 F3 F4 40 E6 4A 03 21 3A 0E E5 F4' dc H'47 36 E6 4A A0 3D E5 49 51 A0 E4 F2 58 EB A0 43' dc H'F3 55 F4 F9 AC 4D F7 E5 E5 F4 AC A0 E2 E9 41 AC' dc H'A0 51 4D 53 F2 AE 00 C2 22 03 16 10 2A 3A 43 55' dc H'F3 EF 10 E2 22 A0 E3 E5 3B 0D AE 00 D4 09 37 AC' dc H'36 2A A0 EC EF E3 52 E5 E4 23 16 AC A0 18 32 E2' dc H'E5 52 3A 2D F9 53 F2 A0 32 E7 EF A0 F0 E9 41 AD' dc H'F0 E1 41 AE 00 C3 E8 E9 F0 A7 4F 30 56 42 40 E8' dc H'E1 4F 57 55 EC F9 A0 F0 E1 E9 E4 44 E6 AE 00 C8' dc H'EF F7 A0 E7 4A 3E A0 3D 49 E4 E5 E3 E9 F0 47 40' dc H'E3 EF E4 E5 BF A0 CD E5 E5 50 ED E5 23 EA F5 EE' dc H'E7 EC E5 56 EF A0 E6 58 E4 A0 53 F4 AE AE AE 00' dc H'A0 43 2B EC E5 E4 A0 E2 F9 56 20 A0 31 A0 00 45' dc H'0C 57 E7 F5 EC 52 E5 F3 A0 00 4E C8 E5 19 3C 38' dc H'F4 00 A0 52 33 E1 E3 EB 24 00 44 3F A0 21 A0 00' dc H'0E E1 F4 A0 00 56 EF 17 AE A0 00 34 F3 26 A0 00' dc H'44 33 F2 E1 E9 EE 00 E9 3B F0 57 F4 4F F7 E8 00' dc H'4D 53 EE E4 A0 F7 E1 F6 E5 F3 00 A0 E3 55 EC E5' dc H'E4 3F A0 00 A0 E3 EF 51 E4 58 52 E9 00 ED EF F6' dc H'E5 ED E5 EE F4 4F 00 A0 54 EC F0 4F F9 EF F5 00' dc H'A0 ED E5 F3 F3 E1 E7 E5 4F 00 37 4D F4 E5 ED 00' dc H'2B 4F 00 28 A0 F4 00 1E A0 00 1F A0 00 2E 4E C1' dc H'00 F3 AC A0 EE E5 F2 F6 E5 00 A0 ED F5 F3 E3 EC' dc H'E5 F3 00 D4 46 E7 E9 F2 EC 00 E8 E9 F3 3E E1 00' dc H'E3 E5 57 E2 F2 F5 ED 00 57 E1 4B 58 E7 00 A0 58' dc H'36 00 A0 57 E7 E9 EF EE 00 45 A0 54 F2 00 F3 45' dc H'F4 EF A0 00 F2 A0 E2 42 00 ED E5 E4 F5 EC EC E1' dc H'00 E3 EF EE F4 F2 EF EC 00 55 EB 58 E7 00 ED E1' dc H'EB E5 4F 00 4D EB F5 EE EB 00 F3 F0 E5 E5 E3 E8' dc H'00 EF E6 A0 4B E5 00 E8 48 50 00 36 E2 00 E5 A0' dc H'4C EE 00 A0 47 A0 00 A0 E1 EE E4 A0 00 4E C9 50' dc H'00 EE F4 E5 F2 00 E5 EC EC F3 00 F9 53 A0 00 A0' dc H'E1 F2 E5 00 58 E7 A0 00 F4 F4 E5 F2 00 E9 4F 00' dc H'A0 EF E6 00 A0 58 00 54 A0 00 E5 E1 F2 00 EF EF' dc H'E4 00 F4 E8 00 F3 E5 00 A0 F3 00 EF F2 00 E1 F4' dc H'00 E8 E5 00 E1 EC 00' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* D_OR_M_TAB ENTRY DC B'0000101110111011010111101110110101010101011100' * 0123456789012345678901234567890123456789012345 * 0 1 2 3 4 ANIM_TIME_TAB ENTRY DC B'0000000000000000000000000000000000000000000000' * 0123456789012345678901234567890123456789012345 * 0 1 2 3 4 BLINKER_M ENTRY DC 8H'FF 81' BLINKER_S ENTRY DC 2H'FF 81',4H'C3 81',2H'FF 81' BLINKER ENTRY DC H'00 00 00 08 02 0B 00',A'BLINKER_S,BLINKER_M' BLINKER_XYZ ENTRY DC H'3D 35 66 3E 39 65 3E 42 65 42 2E 63 43 3C 63 44 42 61 41 50 64 41 55 65 43 4E 60 40 29 60' NAME_XZ ENTRY DC H'33 64 34 61 33 66 33 63 34 61 35 60 32 66 33 61 34 63' NAMES ENTRY DC C'speaking ',H'FD',C'tasting ',H'FD',C'smelling ',H'FD',C'touching ',H'FD',C'hearing ',H'FD',C'seeing ',H'FD',C'heartbeat ',H'FD',C'breathing ',H'FD',C'moving ',H'FD' * 0 1 2 3 4 5 6 7 8 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* dLINES ENTRY DC H'06 29 32 3B 44 4D 00' mLINES ENTRY DC H'06 93 9C A5 AE B7 00' TIX ENTRY DS 1 COUNT ENTRY DS 1 WHICHSCR ENTRY DS 1 LMASKS ENTRY DC H'FF FE FC F8 F0 E0 C0' RMASKS ENTRY DC H'80 81 83 87 8F 9F BF' ZZZ_DATA ENTRY END (HIDATA) STEP1 START END *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* g =='?(??TUNCT-Z+  *======================================================================* TUNC START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* OBJ $2D5 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PTR_1 EQU $00 TCR_DST EQU $210 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR PRE_UNCR_TEXT LDA #>TCR_DST-1 PHA LDA #'TCR_DST' STA STA_END+2 JSR _20 LDA #$A0 space to dump buffer JSR STA_END LDA #$FD return * YOU CAN USE THIS LINE OF CODE TO PUT ANY DESIRED CHAR AT THE END * OF EACH SECTION OF TEXT DATA (IN PLACE OF THE $00). TO DO SO * UNCOMMENT THIS LINE AND REPLACE THE #$00 WITH THE DESIRED ASCII * VALUE. THIS LINE IS UNNECESSARY IF YOU WANT A $00 TERMINATOR. *-------------------------------- STA_END STA $FFFF ;DUMMY ADDRESS TO SAVE TEXT INC STA_END+1 BNE _16 INC STA_END+2 _16 RTS *-------------------------------- _20 LDA $FFFF,X ;DUMMY SEG LO-OFFSETS (FIRST PAGE) _22 LDY $FFFF,X ;DUMMY SEG HI-OFFSETS (FIRST PAGE) _24 CLC *-------------------------------- _26 ADC #$FF ;DUMMY ADDR OF START OF DATA (LO) STA PTR_1 TYA _28 ADC #$FF ;DUMMY ADDR OF START OF DATA (HI) STA PTR_1+1 LDY #$00 *-------------------------------- _30 LDA (PTR_1),Y ;LOAD A BYTE BEQ _16 ;END OF TEXT? BPL _34 ;SPECIAL CHARACTER? JSR STA_END ;SAVE CHARACTER _32 INC PTR_1 ;NEXT BYTE BNE _30 INC PTR_1+1 ;NEXT PAGE BNE _30 ;ALWAYS *-------------------------------- _34 CMP #$02 BCC _48 ;$01 IS SPECIAL CASE * SEC ;CARRY IS SET SBC #$03 ;LOWEST TOKEN VALUE IS $03 BCC _52 ;$02 IS SPECIAL CASE CLC ;ANY OTHER TOKEN ($03 to $7F) _36 ADC #$FF ;DUMMY NUM OF SECTS TAX ;SEGMENT NUM LDA PTR_1+1 PHA ;SAVE PTR TO TEXT (HI) LDA PTR_1 PHA ;SAVE PTR TO TEXT (LO) BCC _44 _40 LDA $FFFF,X ;DUMMY SECT LO-OFFSETS (SECOND PAGE) _42 LDY $FFFF,X ;DUMMY SECT HI-OFFSETS (SECOND PAGE) JSR _24 BEQ _46 ;ALWAYS *-------------------------------- _44 JSR _20 _46 PLA STA PTR_1 ;RESTORE PTR TO TEXT (LO) PLA STA PTR_1+1 ;RESTORE PTR TO TEXT (HI) BNE _32 ;ALWAYS *-------------------------------- _48 INC PTR_1 ;NEXT BYTE BNE _50 INC PTR_1+1 ;NEXT PAGE _50 LDA (PTR_1),Y CMP #$01 ;LO-BYTE CHARACTER DELIMETER BEQ _32 JSR STA_END ;SAVE A CHARACTER (LO-BYTE ASCII) BNE _48 ;ALWAYS *-------------------------------- _52 INC PTR_1 ;NEXT BYTE BNE _54 INC PTR_1+1 ;NEXT PAGE _54 LDA (PTR_1),Y TAX ;NUM OF SPACES LDA #$A0 ;' ' _56 JSR STA_END ;SAVE A CHARACTER (SPACE) DEX BNE _56 BEQ _32 ;ALWAYS *:::::::::::::::::::::::::- END (UNCRUNCH) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PTR_1 EQU $00 TCR_DST EQU $220 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PRE_UNCR_TEXT ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STX _08+1 ;SAVE X (SECT NUM) STY _26+1 ;SAVE ADDR OF CRUNCHED DATA (LO) STA _28+1 ;SAVE ADDR OF CRUNCHED DATA (HI) STY PTR_1 ;INIT PTR TO CRUNCHED DATA (LO) STA PTR_1+1 ;INIT PTR TO CRUNCHED DATA (HI) TAX CLC TYA ADC #$02 STA _20+1 ;SAVE ADDR OF SECT LO-OFFSETS (LO) STA _40+1 BCC _00 INX _00 STX _20+2 ;SAVE ADDR OF SECT LO-OFFSETS (HI) INX STX _40+2 ;NEXT PAGE OF SECT LO-OFFSETS (HI) DEX CLC LDY #$00 ADC (PTR_1),Y ;NUM OF SECTS BCC _02 INX CLC _02 INY ;LDY #$01 ADC (PTR_1),Y ;NUM OF TOKENS STA _22+1 ;SAVE ADDR OF SECT HI-OFFSETS (LO) STA _42+1 BCC _04 INX _04 STX _22+2 ;SAVE ADDR OF SECT HI-OFFSETS (HI) INX STX _42+2 ;NEXT PAGE OF SECT HI-OFFSETS (HI) DEY ;LDY #$00 LDA (PTR_1),Y ;NUM OF SECTS STA _36+1 _08 LDX #$FF ;DUMMY X (SECT NUM) *-------------------------------- UNCR_TEXT ENTRY _10 DC H'A9' ;ADDR TO UNCRUNCH TEXT AT (LO) TCR_DST_LO ENTRY DC I1<'TCR_DST' STA STA_END+1 _12 DC H'A9' ;ADDR TO UNCRUNCH TEXT AT (HI) TCR_DST_HI ENTRY DC I1>'TCR_DST' STA STA_END+2 JSR _20 LDA #$A0 ;THIS PUTS THE BYTE '00' AT THE END * YOU CAN USE THIS LINE OF CODE TO PUT ANY DESIRED CHAR AT THE END * OF EACH SECTION OF TEXT DATA (IN PLACE OF THE $00). TO DO SO * UNCOMMENT THIS LINE AND REPLACE THE #$00 WITH THE DESIRED ASCII * VALUE. THIS LINE IS UNNECESSARY IF YOU WANT A $00 TERMINATOR. *-------------------------------- STA_END STA $FFFF ;DUMMY ADDRESS TO SAVE TEXT INC STA_END+1 BNE _16 INC STA_END+2 _16 RTS *-------------------------------- _20 LDA $FFFF,X ;DUMMY SEG LO-OFFSETS (FIRST PAGE) _22 LDY $FFFF,X ;DUMMY SEG HI-OFFSETS (FIRST PAGE) _24 CLC *-------------------------------- _26 ADC #$FF ;DUMMY ADDR OF START OF DATA (LO) STA PTR_1 TYA _28 ADC #$FF ;DUMMY ADDR OF START OF DATA (HI) STA PTR_1+1 LDY #$00 *-------------------------------- _30 LDA (PTR_1),Y ;LOAD A BYTE BEQ _16 ;END OF TEXT? BPL _34 ;SPECIAL CHARACTER? JSR STA_END ;SAVE CHARACTER _32 INC PTR_1 ;NEXT BYTE BNE _30 INC PTR_1+1 ;NEXT PAGE BNE _30 ;ALWAYS *-------------------------------- _34 CMP #$02 BCC _48 ;$01 IS SPECIAL CASE * SEC ;CARRY IS SET SBC #$03 ;LOWEST TOKEN VALUE IS $03 BCC _52 ;$02 IS SPECIAL CASE CLC ;ANY OTHER TOKEN ($03 to $7F) _36 ADC #$FF ;DUMMY NUM OF SECTS TAX ;SEGMENT NUM LDA PTR_1+1 PHA ;SAVE PTR TO TEXT (HI) LDA PTR_1 PHA ;SAVE PTR TO TEXT (LO) BCC _44 _40 LDA $FFFF,X ;DUMMY SECT LO-OFFSETS (SECOND PAGE) _42 LDY $FFFF,X ;DUMMY SECT HI-OFFSETS (SECOND PAGE) JSR _24 BEQ _46 ;ALWAYS *-------------------------------- _44 JSR _20 _46 PLA STA PTR_1 ;RESTORE PTR TO TEXT (LO) PLA STA PTR_1+1 ;RESTORE PTR TO TEXT (HI) BNE _32 ;ALWAYS *-------------------------------- _48 INC PTR_1 ;NEXT BYTE BNE _50 INC PTR_1+1 ;NEXT PAGE _50 LDA (PTR_1),Y CMP #$01 ;LO-BYTE CHARACTER DELIMETER BEQ _32 JSR STA_END ;SAVE A CHARACTER (LO-BYTE ASCII) BNE _48 ;ALWAYS *-------------------------------- _52 INC PTR_1 ;NEXT BYTE BNE _54 INC PTR_1+1 ;NEXT PAGE _54 LDA (PTR_1),Y TAX ;NUM OF SPACES LDA #$A0 ;' ' _56 JSR STA_END ;SAVE A CHARACTER (SPACE) DEX BNE _56 BEQ _32 ;ALWAYS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (TUNC) *======================================================================* g =='?(?? COMMON.ASMqQ: *======================================================================* 65816 OFF 65C02 OFF LONGA OFF LONGI OFF MSB ON ORG $800 KEEP TEST *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COPY ZPAGE MCOPY MAX/MACROS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LETTER GEQU 0 SPACE_ICON GEQU 0 COM_ADDR GEQU $800 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COPY COMMON *======================================================================* g =='?(??ALLpa   MAKEBOOT MAKE MENU M MAKE LAB A MAKE JUNGLE B MAKE PIANO F MAKE DUMMY C COPY -C OBJ/C OBJ/D COPY -C OBJ/C OBJ/E g =='?(??JUNGLEZQ# : *======================================================================* * * * H U M A N B O D Y : B R A I N & N E R V O U S S Y S T E M * * * *======================================================================* * section 2: C O D E O F T H E J U N G L E * *======================================================================* ORG $800 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEEP OBJ/B COPY ZPAGE COPY COM.EQU MCOPY MAX/JUNGLE *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* GEN ON MSB ON 65816 OFF 65C02 OFF LONGA OFF LONGI OFF *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LETTER GEQU LETTER~ OPTIONS GEQU OPTIONS~ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE GEQU $FE2C Y must be 0! *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA_OP GEQU $91 EOR_OP GEQU $51 AND_OP GEQU $31 ORA_OP GEQU $11 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* _ GEQU $00 SPACE GEQU $A0 TXT_PTR GEQU $F0 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * $00 used by UNCRUNCH PNT GEQU $02 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SRC_START GEQU $3C for MOVE SRC_END GEQU $3E DEST GEQU $42 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LEFTMAR GEQU $98 RIGHTMAR GEQU $99 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEYCLEAR GEQU $C010 WAIT GEQU $FCA8 *======================================================================* JUNGLE START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USING COMMON *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR ENABLE~H *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_DRAW *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINK_LETTER $30,$57 text margins at screen edges *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE STEP0,STEP1,$6880 move data up to $6880 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX #0 STX SI~COLOR STX HOW_SLOW LDA #$B7 STA SPACE~ICON+1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* UNC JUNGLE_SCREEN,STA JSR WIPEGRID JSR WIPE1P JSR MOVE_TO_VISIBLE *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$4C SPECHAR handles special chars STA SPECIAL_CHARS POINT SPECIAL_CHARS+1,SPECHAR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR SYM_GRID put the symbols up JSR FLIP JSR SYM_GRID *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* UNC TALK,EOR JSR RAND_LETTERS ...& some letters... JSR MOVE_TO_VISIBLE ...show 'em *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR PWINDOW POINT TXT_PTR,TEXTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #0 JSR WRITE~ JSR SPACE~P JSR NEWTEXT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #2 JSR WRITE~ JSR SPACE~P JSR NEWTEXT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #0 JSR ENCIPHER JSR FLIP JSR MOVE_TO_HIDDEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY #0 JSR PNT_ANS LDY #0 LDA (PNT),Y STA CPY+1 INY INY STY YY LDA (PNT),Y SEC SBC #$E1 JSR ONE_LETT LDY YY LDA JUNG_X-1,Y STA LETTER+4 LDA JUNG_Z-1,Y STA LETTER+6 LDA #$64 STA LETTER+5 LDA (PNT),Y JSR ECHO LDY YY CPY CPY #_ BCC INY JSR MOVE_TO_HIDDEN JSR DELAY~ JSR WIPEGRID JSR SYM_GRID JSR FLIP JSR MOVE_TO_HIDDEN JSR SPACE~P *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR WIPEPAPER *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #1 STA QNUM LOOP JSR ENCIPHER JSR FLIP JSR MOVE_TO_HIDDEN JSR PWINDOW POINT TXT_PTR,TEXTS LDA #1 JSR WRITE~ LDA QNUM JSR INPUT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR WIPECOLUMNS JSR FLIP JSR WIPECOLUMNS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$30 JSR WALKS Dr. Micro enters *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR PWINDOW POINT TXT_PTR,TRUEFALSES DEC QNUM LDA QNUM JSR WRITE~ T/F question displayed LINE 5 LDA #$A JSR WRITE~ T/F instrux displayed ~~ JSR KEY~IN ORA #$20 CMP #'t' BEQ CHECK CMP #'f' BNE ~~ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CHECK LDX QNUM CMP TF_COR,X PHP EQ right NE wrong PHP EQ right NE wrong PHP EQ right NE wrong *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* POINT TXT_PTR,TEXTS LINE 5 LDY #5 JSR WIPETEXT PLP EQ right NE wrong BNE UHUH LDA #$10 DC H'2C' UHUH LDA #$F JSR WRITE~ LDA #$11 JSR WRITE~ LDX QNUM LDA TF_COR,X CMP #'f' BEQ F LDA #$12 DC H'2C' F LDA #$13 JSR WRITE~ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$44 Dr. Micro exits JSR WALKS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLP EQ right NE wrong JSR BUTTERFLY_ANIM JSR SPACE~P JSR NEWTEXT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLP EQ right NE wrong BNE WRONG RANDOM #2 CLC ADC #$C JSR WRITE~ LDA QNUM CMP #9 BEQ NEXT LDA #$E JSR WRITE~ JMP NEXT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* WRONG JSR NEWTEXT POINT TXT_PTR,TEXTS LDA #$F JSR WRITE~ POINT TXT_PTR,TF_ANSWERS LDA QNUM JSR WRITE~ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NEXT JSR SPACE~P *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR WIPEPAPER *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INC QNUM INC QNUM LDA QNUM CMP #11 BCS FIN JMP LOOP FIN JMP EXIT~ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (JUNGLE) *======================================================================* WIPEGRID START USING COMMON UNC GRID,STA RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (WIPEGRID) *======================================================================* WIPEPAPER START USING COMMON JSR WIPE1P JSR FLIP WIPE1P ENTRY UNC PAPER,STA RTS END (WIPEPAPER) *======================================================================* WIPECOLUMNS START USING COMMON UNC COLUMNS,STA RTS END (WIPECOLUMNS) *======================================================================* WALKS START USING COMMON *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * enter A=$30 for walk toward, A=$44 for walk away *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA C_WALK+4 USE SAV BOX BLACK0,0,0,39,191 UNC WALK,STA LDA #4 STA TIX CONVERT_WALK ANOP LDA TIX ASL A ASL A TAX LDA S_WALK+7,X SEC SBC #2 STA C_WALK STA C_WALK+2 LDA S_WALK+8,X SBC #0 STA C_WALK+1 STA C_WALK+3 DRAW C_WALK DEC TIX BMI DONE LDA C_WALK+4 CLC ADC #4 STA C_WALK+4 BNE CONVERT_WALK always DONE ANOP JSR MOVE_TO_HIDDEN USE NOSAV,STA,FULLMSK LDA C_WALK+4 CMP #$44 BCC WALK_OUT WALK_IN LDA #$1F LOOP_IN SEC SBC #4 CMP #$B BCC DONE_WALK STA S_WALK+5 DRAW S_WALK-4 JSR DELAY~ JSR FLIP LDA S_WALK+5 BNE LOOP_IN always WALK_OUT LDA #7 LOOP_OUT CLC ADC #4 CMP #$1C BCS DONE_WALK STA S_WALK+5 DRAW S_WALK-4 JSR DELAY~ JSR FLIP LDA S_WALK+5 BNE LOOP_OUT always DONE_WALK ANOP JSR MOVE_TO_HIDDEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JMP TGEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (WALKS) *======================================================================* HINT START USING COMMON LDX #0 LOOP STX TIX JSR DR_LET JSR FLIP LDA #$80 JSR WAIT JSR MOVE_TO_VISIBLE LDX TIX INX CPX #26 BCC LOOP RTS END (HINT) *======================================================================* BUTTERFLY_ANIM START USING COMMON *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TOP_EDGE EQU $2D borders of black 'stage' BOTTOM_EDGE EQU $91 LEFT_EDGE EQU $3C RIGHT_EDGE EQU $4C *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PHP EQ right NE wrong *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RANDOM #4 choose an edge to enter from PHA remember which edge CASE_0_3 TOP,BOTTOM,LEFT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RIGHT ANOP position offstage for entrance LDA #RIGHT_EDGE BNE L0 always LEFT ANOP LDA #LEFT_EDGE SEC SBC BUTTERFLY+8 L0 STA BUTTERFLY+4 LDA #$54 center; maybe randomize STA BUTTERFLY+5 BNE T1 always BOTTOM ANOP LDA #BOTTOM_EDGE BNE T0 always TOP ANOP LDA #TOP_EDGE SEC SBC BUTTERFLY+7 T0 STA BUTTERFLY+5 LDA #$43 center; maybe randomize? STA BUTTERFLY+4 T1 LDA #$60 STA BUTTERFLY+6 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_FIN LDA #TOP_EDGE draw on stage only LDX #BOTTOM_EDGE JSR SET_TOP_BOTTOM LDA #LEFT_EDGE LDX #RIGHT_EDGE JSR SET_LEFT_RIGHT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #30 entrance takes 30 steps STA TIX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLA edge entered from CASE_0_3 ENTER_DOWN,ENTER_UP,ENTER_RIGHT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ENTER_LEFT ANOP JSR FLAP JSR LEFTWARDS DEC TIX BNE ENTER_LEFT BEQ DRUNKARDS_WALK ENTER_RIGHT ANOP JSR FLAP JSR RIGHTWARDS DEC TIX BNE ENTER_RIGHT BEQ DRUNKARDS_WALK ENTER_UP ANOP JSR FLAP JSR UPWARDS DEC TIX BNE ENTER_UP BEQ DRUNKARDS_WALK ENTER_DOWN ANOP JSR FLAP JSR DOWNWARDS DEC TIX BNE ENTER_DOWN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DRUNKARDS_WALK ANOP stumble around the stage JSR MOVE_R choose a direction to move JSR CHECK too near edge of stage? BCC OK no, go ahead and move LDX TEMP yes, find opposite direction... LSR TEMP BCC INX DEX DC H'24' INX INX TXA JSR MOVE ...back to original position... LDA TEMP JSR MOVE ...& move in opposite direction OK ANOP JSR FLAP DEC TIX BNE DRUNKARDS_WALK 256 times *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR CLEAR LDA #$B STA BUTTERFLY+9 DRAW BUTTERFLY JSR FLIP JSR MOVE_TO_HIDDEN freeze butterfly open *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLP EQ right NE wrong BNE QUIT if wrong no capture LDX QNUM if right, TRUE or FALSE? LDA TF_COR,X CMP #'f' BEQ F LDA #$B DC H'2C' F LDA #$F setup picture for TRUE or FALSE STA TR_FA+9 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA BUTTERFLY+5 position circle on butterfly SEC SBC #5 STA CIRCLE_T+5 ADC #$1D STA TR_FA+5 ADC #7 STA CIRCLE_B+5 LDA BUTTERFLY+4 SEC SBC #2 STA CIRCLE_T+4 STA TR_FA+4 STA CIRCLE_B+4 LDA BUTTERFLY+6 SEC SBC #2 CMP #$60 BCS SB ADC #7 DEC CIRCLE_T+4 DEC TR_FA+4 DEC CIRCLE_B+4 SB STA TR_FA+6 STA CIRCLE_B+6 STA CIRCLE_T+6 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USE EOR,NOSAV,NOMSK DRAW CIRCLE_T DRAW TR_FA DRAW CIRCLE_B USE STA,FULLMSK JSR FLIP JSR MOVE_TO_HIDDEN QUIT JMP SET_NORM_LIM E X I T *======================================================================* FLAP ANOP BIT LOOKING handle it if looking BPL DO_EYES (always for testing) * RANDOM #? if not looking... * BNE NO_EYES ...maybe start looking CLC ROR LOOKING now we're looking LDA #5 STA BL_CNT JSR LOOK ...set up eyes... DO_EYES ANOP DEC BL_CNT time to change eyes yet? BNE SAME no, skip change DEC BLINKS time to move eyes yet? BNE FIXED LDA #10 reset counter... STA BLINKS JSR LOOK ...& move eyes FIXED LDA #5 reset counter... STA BL_CNT LDA EYES+9 ...& change eyes EOR #4 STA EYES+9 SAME ANOP JSR DRAW_EYES NO_EYES ANOP DRAW BUTTERFLY JSR FLIP LDA BUTTERFLY+9 EOR #4 STA BUTTERFLY+9 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CLEAR ANOP BOX BLACK0,$C,$2D,$1B,$91 RTS E X I T *======================================================================* LOOK ANOP LDA BUTTERFLY+4 how much room around butterfly? SEC for shift ADC BUTTERFLY+8 STA BF_R_EDGE LDA BUTTERFLY+5 CLC ADC BUTTERFLY+7 STA BF_B_EDGE LDA #RIGHT_EDGE SEC SBC BF_R_EDGE STA R_MARGIN LDA #BOTTOM_EDGE SEC SBC BF_B_EDGE STA B_MARGIN LDA BUTTERFLY+4 SEC SBC #LEFT_EDGE STA L_MARGIN LDA BUTTERFLY+5 SEC SBC #TOP_EDGE STA T_MARGIN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RANDOM #4 choose an side to put eyes on CASE_0_3 ABOVE,BELOW,TOLEFT TORIGHT ANOP LDA R_MARGIN SEC SBC EYES+8 BCC TOLEFT put 'em left if won't fit right BEQ TOLEFT JSR RANDGEN put 'em right CLC ADC BF_R_EDGE BCC TL0 always TOLEFT ANOP LDA L_MARGIN SEC SBC EYES+8 BCC TORIGHT put 'em right if won't fit left BEQ TORIGHT JSR RANDGEN put 'em left CLC ADC #LEFT_EDGE TL0 STA EYES+4 LDA #$4C BOTTOM_EDGE - $45 JSR RANDGEN CLC ADC #TOP_EDGE STA EYES+5 RANDOM #7 CLC ADC #$60 STA EYES+6 BNE DRAW_EYES always, -> E X I T ABOVE ANOP LDA T_MARGIN SEC SBC EYES+7 BCC BELOW put 'em below if won't fit above BEQ BELOW JSR RANDGEN put 'em above CLC ADC #TOP_EDGE BCC BL0 always BELOW ANOP LDA B_MARGIN SEC SBC EYES+7 BCC ABOVE put 'em above if won't fit below BEQ ABOVE JSR RANDGEN put 'em below CLC ADC BF_B_EDGE BL0 STA EYES+5 RANDOM #$B ADC #$3E STA EYES+4 RANDOM #7 CLC ADC #$60 STA EYES+6 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DRAW_EYES ANOP LDA #EYES LDX #>EYES JMP PRE_DRAW E X I T *======================================================================* MOVE_R ANOP RANDOM #4 MOVE STA TEMP CASE_0_3 DOWNWARDS,UPWARDS,RIGHTWARDS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LEFTWARDS ANOP LDA BUTTERFLY+6 SEC SBC #2 CMP #$60 BCS OKL ADC #7 DEC BUTTERFLY+4 OKL STA BUTTERFLY+6 RTS E X I T *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RIGHTWARDS ANOP LDA BUTTERFLY+6 CLC ADC #2 CMP #$67 BCC OKR SBC #7 INC BUTTERFLY+4 OKR STA BUTTERFLY+6 RTS E X I T *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* UPWARDS ANOP LDA BUTTERFLY+5 SEC SBC #2 STA BUTTERFLY+5 RTS E X I T *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DOWNWARDS ANOP LDA BUTTERFLY+5 CLC ADC #2 STA BUTTERFLY+5 RTS E X I T *======================================================================* CHECK LDA #$3E LEFT_EDGE+2 CMP BUTTERFLY+4 BCS ENDCH LDA BUTTERFLY+4 CMP #$46 RIGHT_EDGE-6 BCS ENDCH LDA #$2D TOP_EDGE CMP BUTTERFLY+5 BCS ENDCH LDA BUTTERFLY+5 CMP #$65 BOTTOM_EDGE-$2C ENDCH RTS E X I T *======================================================================* BF_B_EDGE DS 1 BF_R_EDGE DS 1 R_MARGIN DS 1 L_MARGIN DS 1 T_MARGIN DS 1 B_MARGIN DS 1 BL_CNT DC H'05' BLINKS DC H'0A' LOOKING DC H'00' PL looking (TEST) MI not looking *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (BUTTERFLY_ANIM) *======================================================================* ORCHID_ANIM START USING COMMON UNC ORCHID,EOR JSR MOVE_TO_VISIBLE UNC ORCHID2,EOR JSR FLASH UNC NO_ORCHID,STA JMP MOVE_TO_VISIBLE *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* FLASH ENTRY LDA #8 STA TIX STA WHICHSCR LOOP STA KEYCLEAR ~ INC RANDLO INC RANDHI INC WHICHSCR odd viewing ORCHID2 JSR FLIP CMP ADPAGE BNE K JSR DELAY~ JSR DELAY~ DEC TIX BPL ~ K LSR WHICHSCR BCC ~~ JSR FLIP ~~ RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (ORCHID_ANIM) *======================================================================* TALK_ANIM START USING COMMON UNC TALK,EOR JSR FLASH JMP MOVE_TO_HIDDEN END (TALK_ANIM) *======================================================================* MONKEY_ANIM START USING COMMON PHP carry clear NO, carry set YES UNC MONKEYS,STA JSR WAITFLIP UNC MONKEYS2,STA JSR WAITFLIP PLP BCC NO carry clear NO, carry set YES *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* YES ANOP UNC MONKEYS3,STA JSR WAITFLIP UNC MONKEYS6,STA LDA #4 STA TIX YLOOP JSR DELAY~ JSR FLIP DEC TIX BNE YLOOP BEQ FIN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NO LDA #4 STA TIX NLOOP ANOP UNC MONKEYS3,STA JSR WAITFLIP UNC MONKEYS4,STA JSR WAITFLIP UNC MONKEYS3,STA JSR WAITFLIP UNC MONKEYS5,STA JSR WAITFLIP DEC TIX BNE NLOOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* FIN ANOP UNC MONKEYS2,STA JSR WAITFLIP UNC MONKEYS,STA JSR WAITFLIP UNC NO_MONKEYS,STA *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* WAITFLIP JSR DELAY~ JSR FLIP JMP MOVE_TO_HIDDEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (MONKEY_ANIM) *======================================================================* ONE_LETT START * A = target letter 0..25 (a..z) USING COMMON STA ~+1 LDA #4 STA FLASHES LDX #0 LOOP STX TIX JSR DR_LET FLASH JSR FLIP JSR DELAY~ LDX TIX ~ CPX #_ BNE NEXT DEC FLASHES BNE FLASH BEQ QUIT NEXT JSR MOVE_TO_VISIBLE LDX TIX INX BNE LOOP always QUIT RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (ONE_LETT) *======================================================================* LET_GRID START USING COMMON LDA #25 STA COUNT LOOP LDX COUNT JSR DR_LET DEC COUNT BPL LOOP RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DR_LET ENTRY LDA LETX,X STA LETTER+4 LDA LETZ,X STA LETTER+6 CPX #13 BCC _0 LDA #$22 DC H'2C' _0 LDA #$0C STA LETTER+5 TXA CLC ADC #$61 JSR ASCII USE NOSAV,NOMSK,EOR,BGCOLOR LDA #LETTER JMP PRE_DRAW *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (LET_GRID) *======================================================================* RAND_LETTERS START USING COMMON LDA #5 STA TIX _00 JSR FLASHEM DEC TIX BPL _00 BMI NO_LETTERS FLASHEM ANOP JSR NO_LETTERS JSR SOME_LETTERS LDA #5 STA COUNT FLASH JSR FLIP JSR DELAY~ DEC COUNT BPL FLASH RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SOME_LETTERS ENTRY LDA #10 STA COUNT LOOP JSR R_0_25 TAX JSR DR_LET DEC COUNT BPL LOOP RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NO_LETTERS ENTRY JSR _0 JSR FLIP _0 JSR WIPEGRID *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SYM_GRID ENTRY USE NOSAV,NOMSK,EOR,BGCOLOR LDA #25 STA COUNT LOOP2 LDX COUNT LDA SYMX,X STA SYM LDA SYMY,X STA SYM+1 LDA SYMZ,X STA SYM+2 TXA CLC ADC #$E1 JSR DRAW_SYM DEC COUNT BPL LOOP2 RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (RAND_LETTERS) *======================================================================* DRAW_SYM START USING COMMON * A = ascii for 'a' through 'z'. Position symbol before call. SEC SBC #$E1 ascii -> 0 rel ASL A ASL A *4 CLC ADC #$B STA SYM+5 LDA #SYM-4 JMP PRE_DRAW END (DRAW_SYM) *======================================================================* OVERLINE START USING COMMON LDA SYM SEC SBC #$30 STA LEFT STA RIGHT INC RIGHT INC RIGHT LDX SYM+1 DEX DEX STX TOP STX BOTTOM LDA SYMZ_ SEC SBC #$60 TAX LDA LMASKS,X STA LMASK LDA RMASKS-2,X STA RMASK JSR BOX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COLOR DC H'00' FF|7F = w 80|00 = b AA = r D5 = b 55 = p 2A = g LEFT DC H'00' 00 - 27 TOP DC H'00' 00 - BF RIGHT DC H'00' 00 - 27 BOTTOM DC H'00' 00 - BF LMASK DC H'00' RMASK DC H'00' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RTS * E X I T * *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (OVERLINE) *======================================================================* ENCIPHER START * A = 0..9 (answer #) USING COMMON ASL A TAY STY T JSR QUEST_OUT USE NOSAV,NOMSK,EOR,COLOR LDY T INY _99 JSR PNT_ANS LDY #0 LDA (PNT),Y STA LOOP+1 BEQ ONE_LINE LDA #LINE2_Y do 2nd line LDX #1 JSR DO_LINE ONE_LINE LDY T JSR PNT_ANS LDY #0 LDA (PNT),Y STA LOOP+1 LDA #LINE1_Y do 1st line LDX #0 DO_LINE STA YPOS+1 LDA LOOP+1 LSR A LDA #$62 ADC #0 STA SYMZ_ LDA #$44 SEC SBC (PNT),Y STA SYM x STA qMARGIN,X remember initial x YPOS LDA #_ STA SYM+1 y LOOP CPY #_ BCS DONE INY STY COUNT LDA (PNT),Y PHA SEC SBC #$E1 ascii -> 0 rel TAX LDA CENZ,X CLC ADC SYMZ_ STA SYM+2 PLA JSR DRAW_SYM JSR OVERLINE INC SYM INC SYM LDY COUNT BNE LOOP always DONE JMP TWO_PAGES *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PNT_ANS ENTRY LDX #>ANSWERS LDA ANSWERS,Y offset CLC ADC # > > *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SEC SEC DC H'24' skip CLC *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NOT CLC *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RTS $ * handled, EXIT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STAR ANOP '*' highlight preceding word LDA LETTER+5 set position for end highlight CLC ADC #7 STA BOTTOM LDY LETTER+6 LDA RMASKS-$60,Y STA RMASK LDA LETTER+4 SEC SBC #$30 STA RIGHT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* HILITE JSR INVERT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COLOR DC H'7F' LEFT DC H'00' 0-relative, inclusive left XBYTE TOP DC H'00' inclusive top YPOS RIGHT DC H'00' 0-relative, inclusive right XBYTE BOTTOM DC H'00' inclusive bottom YPOS LMASK DC H'00' mask for left edge byte RMASK DC H'00' mask for right edge byte *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR FLIP JMP MOVE_TO_HIDDEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (SPECHAR) *======================================================================* INPUT START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * A = 1..10 (question #) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USING COMMON *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ASL A TAY STY Q *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #1 STA TRIES *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR TWO_PAGES LINK_LETTER $30,$57 text margins at screen edges POINT LINE_PTR,pLINES *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* GO_AGAIN JSR DISABLE~H can't press H for help screen LDX qMARGIN LDA #LINE1_Y JSR POSLINE position LETTER for 1st line *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* POINT TABLE,LETTER we'll be drawing LETTER *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #0 STA ANS_IND *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR INITLINE1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* _0 JSR KEY~IN STA CHAR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CMP #'?' question mark asks for hint BNE ~~ LDA LETTER+4 PHA LDA LETTER+5 PHA LDA LETTER+6 PHA JSR HINT PLA STA LETTER+6 PLA STA LETTER+5 PLA STA LETTER+4 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ~~ BIT ACCEPT BMI _2 all chars in, await RETURN or BS ORA #$20 force lower case STA CHAR_LC CMP #$E1 BCC _2 not 'a' thru 'z' CMP #$FB BCS _2 not 'a' thru 'z' LDX ANS_IND remember answer input STA ANS_BUF,X LDA CHAR_LC JSR CHAR_SHIFT STY ADD+1 STA ECHO_Z,X A=LETTER+6, remember echo pos LDA LETTER+5 STA ECHO_Y,X LDA LETTER+4 STA ECHO_X,X INX prep for next char in answer STX ANS_IND LDA CHAR_LC JSR ECHO ADD LDA #0 CLC ADC LETTER+4 position next char echo STA LETTER+4 DEC WIDTH BNE _0 still on this line INC LINE next lines... LDA LINE CMP #2 ...both lines in? BCS _3 if so, shine on alphas ADC Q TAY JSR PNT_ANS set up 2nd line... LDY #0 LDA (PNT),Y ...if there is a 2nd line... BNE _1 _3 SEC ...otherwise, shine on alphas ROR ACCEPT JMP _0 _1 STA WIDTH LDX qMARGIN+1 LDA #LINE2_Y JSR POSLINE position LETTER for 2nd line BNE NXTCHR always *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* _2 LDA CHAR CMP #$8D BEQ CHKANS for now CMP #$88 BEQ BU CMP #$FF BNE NXTCHR BU JSR BACKUP NXTCHR JMP _0 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CHKANS JSR END LDY Q JSR PNT_ANS LDY #0 LDX #$FF LDA (PNT),Y STA TEMP INC TEMP CHECK INY CPY TEMP BCS NXTWRD INX LDA (PNT),Y CMP ANS_BUF,X BNE WRONG BEQ CHECK NXTWRD STX TEMP LDY Q INY JSR PNT_ANS LDY #0 LDA (PNT),Y BNE NOTDONE JMP DONE NOTDONE LDX TEMP STA TEMP INC TEMP CHECK2 INY CPY TEMP BCS DONE INX LDA (PNT),Y CMP ANS_BUF,X BEQ CHECK2 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* WRONG DEC TRIES BMI SORRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR PWINDOW give 'em another try CLC JSR MONKEY_ANIM POINT TXT_PTR,TEXTS RANDOM #2 CLC ADC #7 JSR WRITE~ LDA #9 JSR WRITE~ JSR SPACE~P JSR NEWTEXT JSR CLEARANS JSR PWINDOW LDA #1 JSR WRITE~ JMP GO_AGAIN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SORRY CLC JSR MONKEY_ANIM JSR CLEARANS JSR PWINDOW POINT TXT_PTR,TEXTS LDA #$B JSR WRITE~ POINT TXT_PTR,CORRECT_ANSWERS LDA QNUM SEC SBC #1 JSR WRITE~ POINT TXT_PTR,TEXTS LDA #6 JSR WRITE~ JSR SPACE~P JMP END *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DONE ANOP RANDOM #15 JSR MELODY~ SEC JSR MONKEY_ANIM JSR ORCHID_ANIM JSR TALK_ANIM POINT TXT_PTR,TEXTS RANDOM #3 CLC ADC #3 JSR WRITE~ LDA #6 JSR WRITE~ JSR SPACE~P *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END JSR NEWTEXT JMP ENABLE~H *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* POSLINE ENTRY STX LETTER+4 SEC SBC #$C STA LETTER+5 LDA #$62 STA LETTER+6 RTS *======================================================================* CLEARANS ANOP JSR BACKUP BPL CLEARANS RTS *======================================================================* ECHO ENTRY JSR ASCII echo answer input JSR DRAW JSR FLIP JSR DRAW LDA #0 RTS *======================================================================* INITLINE1 ANOP LDA #0 STA LINE CLC ROR ACCEPT LDY Q JSR PNT_ANS PNT -> correct answer LDY #0 LDA (PNT),Y STA WIDTH RTS *======================================================================* BACKUP ANOP LDX ANS_IND LDA ANS_BUF-1,X CMP #'i' BEQ PHP CMP #'l' PHP PHP EQ then kludge *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DEX BMI QUIT return MI when no chars left *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STX ANS_IND CLC ROR ACCEPT accept chars after BS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA LINE CMP #2 BCC NOTEND DEC LINE BNE SAMELINE always *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NOTEND LDY #0 LDA WIDTH CMP (PNT),Y BCC SAMELINE *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR INITLINE1 LDA #0 STA WIDTH LDA #$64 STA LETTER+5 LDX ANS_IND *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SAMELINE INC WIDTH LDA ECHO_X,X STA LETTER+4 LDA ECHO_Y,X STA LETTER+5 LDA ECHO_Z,X STA LETTER+6 LDA ANS_BUF,X JSR ECHO *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* QUIT STX _X+1 to preserve negative flag PLP was this 'i' or 'l'? BNE _X not 'i' or 'l' so no kludge DEC LETTER+4 kludge for 'i' and 'l' _X LDX #_ reset negative flag RTS returns MI when no more chars *======================================================================* CHAR_SHIFT ENTRY * A = char (hi ascii) AND #$7F lo ascii TAY LDA LETTER,Y AND #$0F lo nybble is spacing of char LSR A STA TEMP LDA #$6A SEC SBC TEMP CMP #$60 BCC PREV_X CMP #$67 BCC OK NEXT_X INC LETTER+4 LDY #1 SEC SBC #7 BNE STA always OK LDY #2 BNE STA always PREV_X DEC LETTER+4 LDY #3 CLC ADC #7 STA STA LETTER+6 RTS *======================================================================* Q DS 1 offset to current answer LINE DS 1 1 1st line, 0 2nd line WIDTH DS 1 # chars on current line CHAR DS 1 temporary CHAR_LC DS 1 temporary *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (INPUT) *======================================================================* PWINDOW START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USING COMMON *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* POINT LINE_PTR,pLINES write in prompt window LINK_LETTER $30,$57 text margins at screen edges JSR TWO_PAGES text on both screens *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NEWTEXT ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINE 1 LDY #1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* WIPETEXT ENTRY LDA (LINE_PTR),Y STA Y_START JSR W_1_PAGE JSR FLIP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* W_1_PAGE ENTRY JSR BOX DC H'00 00' Y_START DC H'00 27 BF FF FF' CLC RTS * E X I T * *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (PWINDOW) *======================================================================* COPY JDATA g =='?(??SIL) ; SI START DC H'F0 80 80 80 80 80 80 80 D8 81 80 80 80 80 80 80' DC H'8E FE F1 F3 C3 87 9F 9E 83 80 9B B0 86 CC 81 B3' DC H'83 FC F1 B1 C6 CF 81 BF 83 80 80 B3 E6 CC 81 83' DC H'83 9E F8 F1 C3 8F 9F BE 83 80 80 B0 80 80 80 80' DC H'FE 87 80 80 80 80 80 80 80 80 80 80 80 80 80 80' DC H'80 80 80 80 80 80 80 80 80 80 F0 F3 C3 87 9F 9E' DC H'80 80 98 B0 86 CC 81 B3 80 80 F0 B1 C6 CF 81 BF' DC H'80 80 80 B3 E6 CC 81 83 80 80 F8 F1 C3 8F 9F BE' DC H'80 80 80 B0 80 80 80 80 80 80 80 80 80 80 80 80' END (SI) g =='?(??RAMD;a2:,+  *======================================================================* RAMD_V53 START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* OBJ $F300 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * When used with the FLOAD macro, this code should BLOAD and save up * to 30 files in a RAM disk on AUXILIARY MEMORY (in 128K machines). * Each call for a file should use the same FLOAD macro call (to insure * the same spelling). * File names may be up to 7 characters long ($8D is added as a * delimiter, for a total of 8 bytes per filename). * If a file will not fit, it will be BLOADed normally. * If a file will fit, it will be BLOADed and saved on the RAM disk. * Subsequent FLOADs will load the file from the RAM disk. * INIT ($F300) must be called before the first FLOAD. This is done * automatically when the DRAW routines are loaded and started up. * The ',A$xxxx' parameter may be included. No other parameters are * permitted (eg ',D2'). The address must be a 4-digit hex number. * There can be no other commas in the string. If ',A$xxxx' in first * FLOAD, next FLOAD will BLOAD. If no ',A$xxxx' in a later FLOAD, load * address is set. * The maximum RAMD size is $500. *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * EQUATES *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* NUM_FILES EQU 30 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ADDR EQU $94 ADDRESS (v_PTR) V_STR_PTR EQU $9A LEN_T EQU $A0 TEMP LENGTH OF FILE (XINDEX) MFI EQU $A2 MATCHED FILE INDEX (BX_1) NO_ADD EQU $A3 NO ADDRESS FLAG (MSO) FNDX_T EQU $A4 TEMP FILE INDEX (SSO) BANK EQU $A7 BANK # (TEMP) SRC EQU $EB SOURCE (SHAPE) DST EQU $ED DESTINATION (MASK) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LEN EQU $AA60 Length of file AT EQU $AA72 Start of file *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STORAGE EQU $D000 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *COUT EQU $FDED *======================================================================* INIT ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$00 INIT TO ZERO STA FNDX FILE INDEX STA LAST NEXT BYTE AVAIL (LO) LDA #$D0 STA LAST+1 NEXT BYTE AVAIL (HI) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* AUX_TEST ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX $B000 Load byte TXA LDY $A000 Load byte STA $C005 Write to AUX MEM STA $A000 Save test byte EOR #$FF Test byte to store STA $B000 Save test byte STA $C004 Write MAIN MEM CMP $B000 TEST 1:Has the location changed BEQ NO_AUX TEST 1:should be not equal STA $C003 Read AUX MEM CMP $B000 TEST 2:Did it also change Bank 0 PHP EOR #$FF CMP $A000 TEST 3:Did it change all of Bank 1 PHP STA $C002 Read MAIN MEM PLA PLP BNE NO_AUX TEST 2:should be equal PHA PLP BEQ YES_AUX TEST 3:should be not equal NO_AUX LDA #$80 STA AUX_FLAG AUX MEM flag YES_AUX STX $B000 STY $A000 RTS *======================================================================* FSEARCH ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLA ADDR OF NAME (LO) STA ADDR PLA ADDR OF NAME (HI) STA ADDR+1 PHA LDA ADDR PHA LDX FNDX FILE INDEX BEQ _000 LDA END_B-1,X END BANK # OF PREVIOUS FILE DC H'24' SKIP 1 BYTE _000 TXA (LDA #$00) BANK # STARTS AT 00 _050 JSR SETBANK LDX FNDX FILE INDEX BEQ _350 DEX _100 STX MFI MATCHED FILE INDEX TXA ASL A *2 ASL A *4 ASL A *8 TAX LDY #$01 START AT 01 NOT 00 _200 LDA (ADDR),Y LOAD BYTE OF NAME CMP NAMES,X COMPARE WITH TABLE BNE _250 NO MATCH CMP #$8D RETURN (END CHAR) BEQ _400 FULL MATCH INX INY CPY #$09 MAX 8 CHARS PER NAME BNE _200 KEEP TRYING BEQ _300 _250 CMP #$AC ',' BNE _300 LDA NAMES,X NAME TABLE CMP #$8D RETURN (END CHAR) BEQ RELOAD_FILE A MATCH WITH ',A$xxxx' _300 LDX MFI MATCHED FILE INDEX DEX BPL _100 TRY NEXT ENTRY IN TABLE _350 LDA #$01 NOT A FORCED BLOAD BNE _450 NO MORE TO TRY, BLOAD FILE _400 LDX MFI MATCHED FILE INDEX LDA ADLO,X ADDR IN MEM (LO) ORA ADHI,X ADDR IN MEM (HI) BNE RELOAD_FILE 0000 IN ADDR, MUST BLOAD FILE STX FNDX_T TEMP FILE INDEX _450 STA CHECK_LENGTH+1 FORCED BLOAD FLAG JMP BLOAD_FILE *======================================================================* RELOAD_FILE ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX MFI MATCHED FILE INDEX SEC LDA TBLL+1,X START OF NEXT FILE (LO) SBC TBLL,X START OF THIS FILE (LO) STA $AA60 LEN OF FILE (LO) LDA END_B,X END BANK OF THIS FILE EOR TBLB,X START BANK OF THIS FILE TAY 00=SAME, 01=0-1, 02=0-2, 03=1-2 LDA TBLH+1,X START OF NEXT FILE (HI) SBC TBLH,X START OF THIS FILE (HI) CLC ADC ADJB,Y ADJUST FOR BANK CHANGES STA $AA61 LEN OF FILE (HI) LDX #$00 INIT TO ZERO STX _371+1 ADDR STRING FLAG STX ADDR PLA ADDR OF NAME (LO) TAY PLA ADDR OF NAME (HI) BNE _051 ---> ALWAYS _001 LDA (ADDR),Y LOAD A BYTE OF NAME BEQ _101 '00' IS END CHAR CPX #$03 THREE CHARS BEFORE ADDR BCC _021 STA A_DOLLAR,X SAVE BYTE OF ADDR STRING INX CPX #$07 CHECK IF DONE BNE _051 NOT YET INC _371+1 ADDR STRING FLAG BNE _051 _021 CMP A_DOLLAR,X CHECK FOR ADDR STRING BNE _051 INX _051 INY BNE _001 INC ADDR+1 BNE _001 ---> ALWAYS _101 LDA ADDR+1 NEW RETURN ADDR (HI) PHA TYA NEW RETURN ADDR (LO) PHA _301 LDX MFI MATCHED FILE INDEX LDA TBLB,X BANK # TABLE STA _601+1 SAVE BANK # CMP #$02 AUX MEM BNE _351 STA $C003 READ AUX MEM * STA $C004 WRITE MAIN MEM _351 JSR SETBANK LDA TBLL,X ADDR IN BANK (LO) STA SRC SOURCE ADDR (LO) LDA TBLH,X ADDR IN BANK (HI) STA SRC+1 SOURCE ADDR (HI) _371 LDA #$FF DUMMY ADDR STRING FLAG BEQ _381 LDA A_DOLLAR+3 FIRST BYTE OF ADDR LDX A_DOLLAR+4 SECOND BYTE OF ADDR STRING JSR STRIP_ADDR2 TAY DESTINATION (HI) LDA A_DOLLAR+5 THIRD BYTE OF ADDR STRING LDX A_DOLLAR+6 FOURTH BYTE OF ADDR STRING JSR STRIP_ADDR2 JMP _391 _381 LDY ADHI,X ADDR IN MEM (HI) LDA ADLO,X ADDR IN MEM (LO) _391 STA DST DESTINATION (LO) STA $AA72 STY DST+1 DESTINATION (HI) STY $AA73 LDY #$00 _401 LDA (SRC),Y SOURCE STA (DST),Y DESTINATION INC DST DESTINATION (LO) BNE _501 INC DST+1 DESTINATION (HI) _501 INC SRC SOURCE (LO) BNE _801 INC SRC+1 SOURCE (HI) _601 LDA #$FF DUMMY, BANK # BNE _701 LDA SRC+1 SOURCE (HI) CMP #$E0 TOP OF BANK 0 BNE _801 LDA #$01 BANK 1 LDX #$D0 NEW SOURCE ADDR (HI) BNE _751 _701 CMP #$01 CHECK BANK # BNE _801 LDA AUX_FLAG AUX MEM FLAG BMI _801 NO AUX MEM LDA SRC+1 SOURCE ADDR (HI) CMP #$F3 TOP OF BANK 1 BNE _801 STILL ROOM LEFT STA $C003 READ AUX MEM * STA $C004 WRITE MAIN MEM LDA #$02 NEW BANK # (AUX MEM) LDX #$08 NEW SOURCE ADDR _751 STA _601+1 NEW BANK # JSR SETBANK STY SRC SOURCE ADDR (LO) $00 STX SRC+1 SOURCE ADDR (HI) _801 LDX MFI MATCHED FILE INDEX LDA SRC SOURCE (LO) CMP TBLL+1,X BOTTOM OF NEXT FILE (LO) BNE _401 LDA SRC+1 SOURCE (HI) CMP TBLH+1,X BOTTOM OF NEXT FILE (HI) BNE _401 LDA BANK BANK # CMP END_B,X END BANK # FOR THIS FILE BNE _401 BEQ EXIT_NO_ROOM Always *======================================================================* BLOAD_FILE ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA FNDX FILE INDEX CMP #NUM_FILES MAX 30 FILE NAMES IN TABLE BEQ _052 ASL A *2 ASL A *4 ASL A *8 TAX LDY #$01 STY NO_ADD NO ADDR STRING FLAG _002 LDA (ADDR),Y BYTE OF NAME BEQ _052 '00' IS END CHAR CMP #$AC ',' BNE _022 LDA #$00 SET TO ZERO STA NO_ADD NO ADDR STRING FLAG LDA #$8D REPLACE ',' WITH 'RETURN' _022 STA NAMES,X SAVE NAME IN TABLE INX INY CPY #$09 MAX 8 CHARS PER NAME BNE _002 _052 STY $9D01 Yreg can not = $62, disable TGEN JSR BLOAD BLOAD FILE DC H'00' LDA #0 STA v_STR_PTR IO_BUFFER_PAGE_RAMD ENTRY LDA #IO_BUFFER_PAGE STA $9D01 * LDA #$00 START OF PSEUDO-PROMPT WITH NO RETURN * STA ADDR PLA ADDR OF NAME (LO) TAY PLA ADDR OF NAME (HI) STA v_STR_PTR+1 BNE _152 ---> ALWAYS _102 LDA ( ALWAYS _202 LDA v_STR_PTR+1 RESTORE RETURN ADDR PHA TYA PHA *======================================================================* CHECK_LENGTH ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$FF DUMMY FORCED BLOAD FLAG BNE _053 LDX FNDX_T TEMP FILE INDEX LDA AT BLOAD ADDR (LO) STA ADLO,X ADDR IN MEM (LO) LDA AT+1 BLOAD ADDR (HI) STA ADHI,X ADDR IN MEM (HI) EXIT_NO_ROOM JMP RESTORE_VARS _053 LDA FNDX FILE INDEX CMP #NUM_FILES MAX 30 FILE NAMES IN TABLE BEQ EXIT_NO_ROOM NO VACANCY LDA AUX_FLAG AUX MEM FLAG BPL _103 LDA BANK BANK # BNE _003 JSR ADD_L_L BCC _453 CMP #$03 BCC _453 LENGTH OF FILE (LO) BCS EXIT_NO_ROOM Always _003 JSR ADD_L_L BCS EXIT_NO_ROOM CMP #$F3 BCC _453 BCS EXIT_NO_ROOM Always _103 LDA BANK BANK # BNE _203 JSR ADD_L_L BCC _453 CMP #$BB BCC _453 BCS EXIT_NO_ROOM Always _203 CMP #$01 BANK 2? BNE _303 JSR ADD_L_L BCC _453 CMP #$AB BCC _453 BCS EXIT_NO_ROOM Always _303 JSR ADD_L_L BCS EXIT_NO_ROOM CMP #$C0 BCS EXIT_NO_ROOM _453 LDA LEN LENGTH OF FILE (LO) STA LEN_T TEMP LEN OF FILE (LO) LDA LEN+1 LENGTH OF FILE (HI) STA LEN_T+1 TEMP LEN OF FILE (HI) *======================================================================* SAVE_FILE ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX FNDX FILE INDEX LDA BANK BANK # STA TBLB,X BANK # TABLE CMP #$02 BNE _204 * STA $C002 READ MAIN MEM STA $C005 WRITE AUX MEM _204 JSR SETBANK LDA AT BLOAD ADDR (LO) STA SRC SOURCE (LO) STA ADLO,X ADDR IN MEM (LO) LDA AT+1 BLOAD ADDR (HI) STA SRC+1 SOURCE (HI) STA ADHI,X ADDR IN MEM (HI) LDA NO_ADD NO ADDR STRING FLAG BNE _304 NO ADDR STRING STA ADLO,X STORE A 00 TO BOTH STA ADHI,X ADDR IN MEM (HI) & (LO) _304 LDA LAST NEXT BYTE AVAIL (LO) STA DST DESTINATION (LO) LDA LAST+1 NEXT BYTE AVAIL (HI) STA DST+1 DESTINATION (HI) LDY #$00 _604 LDA (SRC),Y LOAD SOURCE BYTE STA (DST),Y SAVE DESTINATION BYTE INC SRC SOURCE (LO) BNE _654 INC SRC+1 SOURCE (HI) _654 INC DST DESTINATION (LO) BNE _804 INC DST+1 DESTINATION (HI) LDA BANK BANK # BNE _704 LDA DST+1 DESTINATION (HI) CMP #$E0 TOP OF BANK 0 BNE _804 LDX #$D0 START ADDR OF BANK 1 (HI) LDA #$01 BANK # 1 BNE _754 _704 CMP #$01 BNE _804 LDA DST+1 DESTINATION (HI) CMP #$F3 TOP OF BANK 1 BNE _804 * STA $C002 READ MAIN MEM STA $C005 WRITE AUX MEM LDA #$02 NEW BANK (AUX MEM) LDX #$08 NEW DEST (HI) _754 JSR SETBANK STY DST DESTINATION (LO) $00 STX DST+1 DESTINATION (HI) _804 DEC LEN_T LENGTH OF FILE (LO) BNE _604 DEC LEN_T+1 LENGTH OF FILE (HI) BPL _604 LDX FNDX FILE INDEX LDA BANK BANK # STA END_B,X END BANK FOR THIS FILE INX FILE INDEX + 1 LDA DST (ADC) DESTINATION (LO) STA LAST NEXT BYTE AVAIL (LO) STA TBLL,X ADDR TABLE (LO) LDA DST+1 (ADC) DESTINATION (HI) STA LAST+1 NEXT BYTE AVAIL (HI) STA TBLH,X ADDR TABLE (HI) STX FNDX FILE INDEX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RESTORE_VARS ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA $C002 READ MAIN MEM STA $C004 WRITE MAIN MEM LDA $9D01 CMP #$62 Restore Draw Tables? BNE AUX_MEM RTS JMP TGEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SETBANK ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA BANK SET BANK FLAG CMP #$01 BEQ BANK2 BCS AUX_MEM LDA $C083 READ RAM BANK 2 LDA $C083 & WRITE RAM BANK 2 RTS BANK2 ANOP LDA $C08B READ RAM BANK 1 LDA $C08B & WRITE RAM BANK 1 AUX_MEM RTS *======================================================================* STRIP_ADDR2 ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR STRIP_ADDR ASL A ASL A ASL A ASL A STA ORA+1 SAVE HI HALF BYTE TXA JSR STRIP_ADDR ORA ORA #$FF DUMMY (COMBINE HALF BYTES) RTS *======================================================================* STRIP_ADDR ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SEC SBC #$B0 CONVERTS ASCII HEXIDECIMAL # CMP #$0A TO TRUE HEXIDECIMAL # BCC RTS IN THE LO HALF BYTE OF ACC. SBC #$07 RTS RTS *======================================================================* ADD_L_L ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CLC LDA LAST NEXT BYTE AVAIL (LO) ADC LEN LENGTH OF FILE (LO) LDA LAST+1 NEXT BYTE AVAIL (HI) ADC LEN+1 LENGTH OF FILE (HI) RTS *======================================================================* STORAGE_TABLES ANOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * VARIABLES AND TABLES *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LAST DC A'STORAGE' NEXT BYTE AVAILABLE TBLL DC I1'STORAGE' ADDR IN BANK (LO) DS NUM_FILES TBLH DC I1>'STORAGE' ADDR IN BANK (HI) DS NUM_FILES TBLB DS NUM_FILES WHICH BANK A FILE STARTS IN END_B DS NUM_FILES WHICH BANK A FILE ENDS IN ADLO DS NUM_FILES ADDR IN MEM (LO) ADHI DS NUM_FILES ADDR IN MEM (HI) NAMES DS NUM_FILES*8 FILE NAMES (END IN $8D) A_DOLLAR DC C',A$xxxxX' LAST 'X' IS $8D ADJB DC H'00' NO BANK CHANGE DC H'10' BANK 0 TO BANK 1 DC H'33' BANK 0 TO BANK 2 DC H'23' BANK 1 TO BANK 2 FNDX DC H'00' FILE INDEX (RANGE 0-7) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (RAMD_v53) *======================================================================* g =='?(??LST+a 35  ORCA/M ASM65816 1.0 1 Mar 1991 11:17:06 Pass 1: JUNGLE Pass 2: JUNGLE Local Symbols 000160 CHECK 0000E7 CPY 000198 F 0001FD FIN 0000BF INY 000108 LOOP 0001E7 NEXT 000181 UHUH 0001C9 WRONG 000153 ~~ Pass 1: WIPEGRID Pass 2: WIPEGRID Pass 1: WIPEPAPER Pass 2: WIPEPAPER Local Symbols 000006 WIPE1P Pass 1: WIPECOLUMNS Pass 2: WIPECOLUMNS Pass 1: WALKS Pass 2: WALKS Local Symbols 000022 CONVERT_WALK 000056 DONE 0000A3 DONE_WALK 000069 LOOP_IN 000087 LOOP_OUT 000067 WALK_IN 000085 WALK_OUT Pass 1: HINT Pass 2: HINT Local Symbols 000002 LOOP Pass 1: BUTTERFLY_ANIM Pass 2: BUTTERFLY_ANIM Local Symbols 00021B ABOVE 00022E BELOW 0002C5 BF_B_EDGE 0002C6 BF_R_EDGE 000240 BL0 0002CC BLINKS 0002CB BL_CNT 000025 BOTTOM 000091 BOTTOM_EDGE 0002CA B_MARGIN 0002AA CHECK 000189 CLEAR 0002A0 DOWNWARDS 000155 DO_EYES 000258 DRAW_EYES 00008C DRUNKARDS_WALK 0002C4 ENDCH 000081 ENTER_DOWN 00005A ENTER_LEFT 000067 ENTER_RIGHT 000074 ENTER_UP 0000D3 F 000167 FIXED 000144 FLAP 00003C INIT_FIN 00009C INX 00001B L0 000015 LEFT 000270 LEFTWARDS 00003C LEFT_EDGE 000194 LOOK 0002CD LOOKING 0002C8 L_MARGIN 000264 MOVE 00025F MOVE_R 000177 NO_EYES 0000A6 OK 00027F OKL 000292 OKR 000141 QUIT 000011 RIGHT 000283 RIGHTWARDS 00004C RIGHT_EDGE 0002C7 R_MARGIN 000174 SAME 00010F SB 00002F T0 000037 T1 000200 TL0 0001EF TOLEFT 000029 TOP 00002D TOP_EDGE 0001DB TORIGHT 0002C9 T_MARGIN 000296 UPWARDS 0001D9 _14 00026E _19 00000F _3 000058 _4 Pass 1: ORCHID_ANIM Pass 2: ORCHID_ANIM Local Symbols 000024 FLASH 000048 K 00002C LOOP 00002F ~ 000050 ~~ Pass 1: TALK_ANIM Pass 2: TALK_ANIM Pass 1: MONKEY_ANIM Pass 2: MONKEY_ANIM Local Symbols 00007D FIN 000048 NLOOP 000043 NO 00009E WAITFLIP 00001C YES 000036 YLOOP Pass 1: ONE_LETT Pass 2: ONE_LETT Local Symbols 000010 FLASH 00000A LOOP 000024 NEXT 00002D QUIT 000019 ~ Pass 1: LET_GRID Pass 2: LET_GRID Local Symbols 000011 DR_LET 000005 LOOP 000024 _0 Pass 1: RAND_LETTERS Pass 2: RAND_LETTERS Local Symbols 00001A FLASH 00000F FLASHEM 00002B LOOP 00004B LOOP2 000038 NO_LETTERS 000026 SOME_LETTERS 000041 SYM_GRID 00003E _0 000005 _00 Pass 1: DRAW_SYM Pass 2: DRAW_SYM Pass 1: OVERLINE Pass 2: OVERLINE Local Symbols 000037 BOTTOM 000033 COLOR 000034 LEFT 000038 LMASK 000036 RIGHT 000039 RMASK 000035 TOP Pass 1: ENCIPHER Pass 2: ENCIPHER Local Symbols 00007E DONE 000035 DO_LINE 000053 LOOP 00008E OK 000024 ONE_LINE 000081 PNT_ANS 000091 QUEST_OUT 0000B5 T 00004E YPOS 000011 _99 Pass 1: R_0_25 Pass 2: R_0_25 Pass 1: SPECHAR Pass 2: SPECHAR Local Symbols 000064 BOTTOM 000060 COLOR 00000A DOLLAR 00005D HILITE 000061 LEFT 000065 LMASK 00001D NOSHIFT 000040 NOT 000029 OK 000063 RIGHT 000066 RMASK 00003E SEC 000042 STAR 000062 TOP Pass 1: INPUT Pass 2: INPUT Local Symbols 0000A9 ADD 00021F BACKUP 0000F1 BU 0002B7 CHAR 0002B8 CHAR_LC 000282 CHAR_SHIFT 00010A CHECK 000131 CHECK2 0000F7 CHKANS 0001F3 CLEARANS 0001B1 DONE 0001F9 ECHO 0001DE END 00002F GO_AGAIN 000208 INITLINE1 0002B5 LINE 00029A NEXT_X 00012B NOTDONE 000242 NOTEND 0000F4 NXTCHR 000119 NXTWRD 0002A4 OK 00022B PHP 0001E4 POSLINE 0002A8 PREV_X 0002B4 Q 000276 QUIT 00025B SAMELINE 000176 SORRY 0002B0 STA 0002B6 WIDTH 00013E WRONG 00004A _0 0000D5 _1 0000E2 _2 0000CE _3 00027F _X 00006F ~~ Pass 1: PWINDOW Pass 2: PWINDOW Local Symbols 000025 NEWTEXT 00002A WIPETEXT 000035 W_1_PAGE 00003A Y_START Pass 1: COMMON Pass 2: COMMON 1590 0000 COMMON DATA Local Symbols 0001F3 ACCEPT 0001B0 ANS_BUF 0001AF ANS_IND 00001E BUTTERFLY 00015C CENZ 00006A CIRCLE_B 000048 CIRCLE_T 00000E COUNT 000094 C_WALK 0001BD ECHO_X 0001CA ECHO_Y 0001D7 ECHO_Z 000035 EYES 0001E5 FLASHES 0001E7 JUNG_X 0001ED JUNG_Z 000176 LETX 000190 LETZ 000070 LINE1_Y 000086 LINE2_Y 000010 LMASKS 0001AA QNUM 000017 RMASKS 00009F SYM 00010E SYMX 000128 SYMY 000142 SYMZ 0001AC SYMZ_ 000079 S_WALK 0001AB TIX 0001E4 TRIES 000057 TR_FA 00000F WHICHSCR 0001E6 YY 0001F5 ZZZ_CODE 000000 pLINES 000007 qLINES 0001AD qMARGIN 0001F4 test Pass 1: JUNGLE_SCREEN Pass 2: JUNGLE_SCREEN Pass 1: STEP0 Pass 2: STEP0 Pass 1: HIDATA Pass 2: HIDATA Local Symbols 007936 A00 00793E A01 007945 A10 00794C A11 007951 A20 007957 A21 00795D A30 007968 A31 007969 A40 007972 A41 007973 A50 00797E A51 00797F A60 007985 A61 00798A A70 007992 A71 007993 A80 007999 A81 00799A A90 0079A4 A91 007918 ANSWERS 00792E AS0 007935 AS1 008648 BUTTERFLY_S 00824B CA0 00825E CA1 00826E CA2 00827E CA3 00828D CA4 00829A CA5 0082A9 CA6 0082B8 CA7 0082C4 CA8 0082CE CA9 008730 CIRCLE_S 006AC8 COLUMNS 008237 CORRECT_ANSWERS 008710 EYES_S 006880 GRID 007260 MONKEYS 0072A3 MONKEYS2 0072FE MONKEYS3 007373 MONKEYS4 0073E5 MONKEYS5 007455 MONKEYS6 0074C7 NO_MONKEYS 007164 NO_ORCHID 007003 ORCHID 007078 ORCHID2 00692C PAPER 0079CB Q0 007A0F Q1 007A53 Q2 007A87 Q3 007AE1 Q4 007B23 Q5 007B60 Q6 007B9F Q7 007BE4 Q8 007C26 Q9 0079BB QS 0079A5 QUESTIONS 006E2F SYMBOLS 007F2A T00 007FAE T01 008007 T02 00802E T03 008047 T04 00807A T05 00809D T06 0080F7 T07 008124 T08 008153 T09 00815F T0A 008171 T0B 0081A0 T0C 0081C0 T0D 0081E6 T0E 008205 T0F 00820D T10 008215 T11 008228 T12 00822F T13 0082F0 TA0 008357 TA1 00839A TA2 00840B TA3 008469 TA4 0084AE TA5 0084DA TA6 008530 TA7 008585 TA8 0085F4 TA9 00780C TALK 007F02 TEXTS 007C7E TF0 007CB6 TF1 007CFC TF2 007D1A TF3 007D78 TF4 007DC3 TF5 007DED TF6 007E16 TF7 007E4D TF8 007EAA TF9 007ED6 TFA 0082DC TF_ANSWERS 007EF8 TF_COR 007C68 TRUEFALSES 0074E8 WALK 0088F0 ZZZ_DATA Pass 1: STEP1 Pass 2: STEP1 2327 0000 STEP1 START Global Symbols 00001C ADPAGE 000031 AND_OP 009B75 ASCII 009770 AUX_FLAG 009763 BLACKFONT 009C25 BLOAD 0000AC BOTH_PAGES 009961 BOX 0000A0 BX0 0000A1 BX1 0000A2 BX2 0000A3 BX3 0000A4 BX4 0000A5 BXL 0000A6 BXR 00230E COMMON 008D33 COM_ADDR 00FDED COUT 0091E1 CR~ST 0091DE C~BOTTOM 0091DF C~LEFT 0091E0 C~RIGHT 009065 C~START 0091DD C~TOP 0091BC C~TYPE 008E0C DELAY~ 000042 DEST 000008 DESTAD 008D33 DISABLE~H 009775 DRAW 000992 DRAW_V53 008D97 DRAW~SI 008D39 ENABLE~H 009A3D EOR_FONT_FLAG 000051 EOR_OP 009033 EXIT~ 000000 FALSE 009035 FILE~OUT 00994C FLIP 009769 FLOAD 00284E FONT 00F34B FSEARCH 008DE9 HELP~ 008E02 HGR~ 009C12 HOW_SLOW 00F300 INIT 009937 INITIALIZE 009C8A INIT_DRAW 000801 INIT_DRAW_ROUTINES 00976C INIT_R 009967 INVERT 000062 IO_BUFFER_PAGE 00F4CF IO_BUFFER_PAGE_RAMD 00C010 KEYCLEAR 008D82 KEY~IN 008D77 KEY~WAIT 000098 LEFTMAR 000098 LEFT_MARGIN 00926F LETTER 009B8D LETTER_ADDR 000092 LETTER_PTR 00926F LETTER~ 0099E3 LINE_ADDRESS 000090 LINE_PTR 000066 MAXIMUM_SHIF 008E31 MELODY~ 009B5D MESSAGE 000060 MINIMUM_SHIF 00FE2C MOVE 009BF5 MOVE_TO_HIDDEN 009BF8 MOVE_TO_VISIBLE 008E11 NAME~OUT 009B9D NEXT_LETTER 009758 ONE_PAGE 008DBD OPTIONS 008DBD OPTIONS~ 000011 ORA_OP 0000AB PATCH_FLAGS 000002 PNT 009771 PRE_DRAW 0098AC PRE_RESTORE 0002E1 PRE_UNCR_TEXT 009C30 PROMPT 009C47 PROMPT2 008DE6 QUIT~ 002D33 RAMD_V53 009C70 RANDGEN 00004F RANDHI 00004E RANDLO 0098B0 RESTORE_SCREEN 000099 RIGHTMAR 000099 RIGHT_MARGIN 00976F RTN_FLAG 00001A SAVE 009AE3 SET_ALL_PATCHES 009924 SET_LEFT_RIGHT 009912 SET_NORM_LIM 009ADD SET_PATCHES 00991D SET_TOP_BOTTOM 0027BE SI 008D73 SI~BOTTOM 008D6F SI~COLOR 008D71 SI~TOP 008DD5 SOUND~ 0000A0 SPACE 0091E3 SPACE_ICON 008D53 SPACE~BAR 008DB2 SPACE~ICON 008D50 SPACE~P 009B5A SPECIAL_CHARS 00003E SRC_END 00003C SRC_START 000091 STA_OP 00230E STEP1 002D33 STEP2 003225 STEP3 003309 STEP4 009A39 STRING 0000A8 STT 000006 TABLE 00032E TCR_DST_HI 000329 TCR_DST_LO 0000A7 TEMP 000096 TEXTLINE 009BDF TEXT_LINE 009BDD TEXT_LINE1 009BEA TEXT_LINE_SHIFT 009BDA TEXT_LINE_START 009CA2 TGEN 0012AE TITLE 000F3A TROLL_LOGO 000001 TRUE 003225 TUNC 0002D5 TUNC~ 00975B TWO_PAGES 0000F0 TXT_PTR 000328 UNCR_TEXT 009048 UNC~ 0067C0 VADDRH 006700 VADDRL 009CCD VADDR_GEN 00FCA8 WAIT 009760 WHITEFONT 008D58 WIPE~SI 008D43 WRITE~ 000000 _ 2 errors found 16 was highest error level 2328 source lines 81 macros expanded 917 lines generated g =='?(??PIANO'a : *======================================================================* * * * H U M A N B O D Y : B R A I N & N E R V O U S S Y S T E M * * * *======================================================================* * section 6: P R O F E S S O R P I A N O * *======================================================================* ORG $800 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEEP OBJ/F COPY ZPAGE COPY COM.EQU MCOPY MAX/PIANO *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* GEN ON MSB ON 65816 OFF 65C02 OFF LONGA OFF LONGI OFF *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LETTER GEQU LETTER~ *OPTIONS GEQU OPTIONS~ *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE GEQU $FE2C Y must be 0! *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA_OP GEQU $91 EOR_OP GEQU $51 AND_OP GEQU $31 ORA_OP GEQU $11 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* _ GEQU $00 SPACE GEQU $A0 TXT_PTR GEQU $F0 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * $00 used by UNCRUNCH PNT GEQU $02 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SRC_START GEQU $3C for MOVE SRC_END GEQU $3E DEST GEQU $42 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LEFTMAR GEQU $98 RIGHTMAR GEQU $99 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TONE1 GEQU $5 TONE2 GEQU $6 DURATION GEQU $7 D2 GEQU $8 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEYCLEAR GEQU $C010 SPEAKER GEQU $C030 WAIT GEQU $FCA8 *======================================================================* PIANO START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR ENABLE~H *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_DRAW *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINK_LETTER $30,$57 text margins at screen edges *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MOVE STEP0,STEP1,$6880 move data up to $6880 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX #0 STX SI~COLOR STX HOW_SLOW LDA #$B7 STA SPACE~ICON+1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$4C SPECHAR handles special chars STA SPECIAL_CHARS POINT SPECIAL_CHARS+1,SPECHAR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR FLIP UNC PIANO_SCREEN,STA * JSR MOVE_TO_VISIBLE JSR FLIP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$35 STA QNOTE init X position of note LDA #$60 STA QNOTE+2 init Z position of note *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* READY_FOR_KEY ANOP BIT KEYCLEAR ANY_KEY_DOWN ANOP LDA KEYCLEAR BPL ANY_KEY_DOWN KEY_DETECTED ANOP LDX #$22 is it a legal key? FIND_KEY ANOP DEX BMI READY_FOR_KEY any more legal keys to check? CMP KEYS,X is it this key? BNE FIND_KEY if not, check next key STA CURRENT_KEY legal key found...remember it! CPX #$11 convert to 0-relative index BCC PLAY_NOTE TXA SBC #$11 TAX STX NOTE_INDEX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLAY_NOTE ANOP LDA TONES,X look up the note to play STA TONE1 STA TONE2 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA OFFS,X look up the fine tuning... AND #1 ...& fine tune it TAY LDA T,Y STA BEQ_DEY STA BEQ_DD LDA OFFS,X AND #$FE STA BNE_0+1 STA BNE_5+1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USE MSK,NOSAV,STA,COLOR LDA NOTE_INDEX ASL A ADC #$E STA QNOTE+1 set Y position of note CMP #$1A is it above middle of staff? BCC LOWER LDA #$E DC H'2C' skip LDA #$A LOWER LDA #$A STA QNOTE+5 select note orientation DRAW QNOTE-4 INC QNOTE move note right 1 byte & 4 bits LDA QNOTE+2 CLC ADC #4 CMP #$67 BCC OK SBC #7 INC QNOTE OK STA QNOTE+2 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLAY ANOP enough hub-hub...play the note! LDA TONE1 LDX #$01 LDY #$1A STY D2 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DEX ANOP DEX BNE DEY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CLICK ENTRY BIT SPEAKER *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX TONE1 BNE_0 BNE _0 _0 BEQ _1 _1 BEQ _2 _2 BEQ _3 _3 BEQ _4 _4 BEQ BEQ_DEY BEQ_DEY BEQ DEY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DEY ANOP DEY BNE DEC_DUR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CLICK2 ENTRY BIT SPEAKER *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY TONE2 BNE_5 BNE _5 _5 BEQ _6 _6 BEQ _7 _7 BEQ _8 _8 BEQ _9 _9 BEQ BEQ_DD BEQ_DD BEQ DEC_DUR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DEC_DUR ANOP DEC D2 BNE DEX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA KEYCLEAR is a key being held down? BMI SAME_KEY JMP READY_FOR_KEY no, wait for another key SAME_KEY ANOP CMP CURRENT_KEY yes, is it the same key? BEQ DEX if so continue playing same note JMP KEY_DETECTED if not set up the new note *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (PIANO) *======================================================================* *COLOR DC H'00' FF|7F = w 80|00 = b AA = r D5 = b 55 = p 2A = g *LEFT DC H'00' 00 - 27 *TOP DC H'00' 00 - BF *RIGHT DC H'00' 00 - 27 *BOTTOM DC H'00' 00 - BF *LMASK DC H'00' *RMASK DC H'00' *======================================================================* SPECHAR START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * CMP #$24 * BEQ DOLLAR '$' begin highlight * CMP #$2A * BEQ STAR '*' end highlight * BNE NOT **::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *DOLLAR LDA LETTER+6 '$' begin highlight * CMP #$60 * BNE NOSHIFT * LDA LETTER+4 if against left margin... * CMP LEFTMAR * BNE NOSHIFT * LDA #$62 ...leave room for highlight * STA LETTER+6 *NOSHIFT LDA LETTER+6 * SEC * SBC #2 * CMP #$60 * BCS OK * ADC #7 *OK TAY * LDA LMASKS-$60,Y * STA LMASK * LDA LETTER+4 * SBC #$30 * STA LEFT * LDA LETTER+5 * STA TOP > > > **::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *SEC SEC * DC H'24' skip CLC **::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *NOT CLC **::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* OPTIONS ENTRY RTS $ * handled, EXIT *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *STAR ANOP '*' highlight preceding word * LDA LETTER+5 set position for end highlight * CLC * ADC #7 * STA BOTTOM * LDY LETTER+6 * LDA RMASKS-$60,Y * STA RMASK * LDA LETTER+4 * SEC * SBC #$30 * STA RIGHT **::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *HILITE JSR INVERT **::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *COLOR DC H'7F' *LEFT DC H'00' 0-relative, inclusive left XBYTE *TOP DC H'00' inclusive top YPOS *RIGHT DC H'00' 0-relative, inclusive right XBYTE *BOTTOM DC H'00' inclusive bottom YPOS *LMASK DC H'00' mask for left edge byte *RMASK DC H'00' mask for right edge byte **::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * JSR FLIP * JMP MOVE_TO_HIDDEN **::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (SPECHAR) *======================================================================* COPY PDATA g =='?(?? TIMS.COMMONS n$ *================================ COMMON_CODE START USING V_TBL ZP GEQU 00 ZY GEQU 02 DEST EQU $00 STACK_RTN EQU $22FD SUBS_START EQU $22FF OBJ UNCRUNCH *================================ NEXT_PAGE ENTRY JSR DRAW_SPACE JSR GET_SP_FLIP *-------------------------------- CL_SPACE ENTRY JSR _09 JSR FLIP _09 BOX BLACK,0,181,39,191 RTS *================================ GET_SP_FLIP ENTRY JSR CL_KEY _03 JSR GETCH_FLIP CMP #$A0 BNE _03 RTS *================================ DEL_50 ENTRY LDX #$50 *-------------------------------- DELAY ENTRY TXA JSR WAIT DEX BNE DELAY RTS *================================ NEXT_HOME ENTRY JSR NEXT_PAGE *-------------------------------- HOME ENTRY LINE 13 *-------------------------------- CL_TEXT ENTRY JSR _40 JSR FLIP _40 BOX BLACK,0,138,39,178 RTS *================================ NEXT_HOME2 ENTRY JSR NEXT_PAGE *-------------------------------- HOME2 ENTRY LINE 14 *-------------------------------- CL_TEXT2 ENTRY JSR _41 JSR FLIP _41 BOX BLACK,0,148,39,178 RTS *================================ CL_PROB ENTRY JSR _200 JSR FLIP _200 BOX BLACK,0,28,$63,18,136,$66 RTS *================================ CL_MATH ENTRY JSR _210 JSR FLIP _210 BOX BLACK,19,27,38,136 RTS *================================ CL_R_BOX ENTRY JSR _220 JSR FLIP _220 BOX BLACK,8,14,$66,30,25,$60 RTS *================================ DRAW_SPACE ENTRY LDA #$0B ;FIG # JSR _25 JSR DEL_50 LDA #$0D ;FIG # _25 STA SPACE+9 DRAW SPACE *-------------------------------- SW_PAGE ENTRY INC W_SCRN ;WHICH SCREEN FOR OPHELP LDA ADPAGE ;(00 OR 20) EOR #$20 STA ADPAGE ;(20 OR 00) RTS *================================ DRAW_CURSOR ENTRY LDA LETTER+4 ;XBYT STA CURSOR+4 LDA LETTER+6 ;XSHFT STA CURSOR+6 LDA ADPAGE BNE _24 JSR SW_PAGE JSR _24 JMP SW_PAGE *-------------------------------- _24 DRAW CURSOR RTS *================================ GETCH ENTRY INC RANDLO ;RANDOM SEED (LO) INC RANDHI ;RANDOM SEED (HI) LDA $C000 ;LOAD KEYBOARD BPL GETCH ;NO KEY PRESSED JSR OPTIONS ;CHECK OPTIONS BEQ GETCH ;OPTIONS USED BIT $C010 ;CLEAR KEYBOARD RTS *================================ CL_KEY ENTRY ;Clearout clear board buffer on IIgs JSR OPTIONS BIT $C010 ;CLEAR KEYBOARD LDA #$40 JSR WAIT LDA $C000 BMI CL_KEY RTS *================================ GETCH_FLIP ENTRY INC RANDLO ;RANDOM SEED (LO) INC RANDHI ;RANDOM SEED (HI) JSR FLIP JSR DEL_50 LDA $C000 ;LOAD KEYBOARD BPL GETCH_FLIP ;NO KEY PRESSED JSR OPTIONS ;CHECK OPTIONS BEQ GETCH_FLIP ;OPTIONS USED BIT $C010 ;CLEAR KEYBOARD RTS *================================ GETCH_WAIT ENTRY INC RANDLO ;RANDOM SEED (LO) INC RANDHI ;RANDOM SEED (HI) JSR FLIP LDX #$20 _26 LDA #$20 JSR WAIT LDA $C000 ;LOAD KEYBOARD BMI _28 DEX BPL _26 BMI GETCH_WAIT ;ALWAYS *-------------------------------- _28 JSR OPTIONS ;CHECK OPTIONS BEQ GETCH_WAIT ;OPTIONS USED BIT $C010 ;CLEAR KEYBOARD RTS *================================ PR_EQUAL ENTRY LDA #$BD ;'=' *-------------------------------- PR_OPER ENTRY STA P89+1 JSR MESSAGE P89 DC C' x ' ;DUMMY CHECK OPERATION DC H'FD' *================================ P_STRING ENTRY PHA TXA PHA JMP MESSAGE *================================ PRE_C_START ENTRY STA CR_ST STX CR_ST+1 *-------------------------------- C_START ENTRY LDA #$60 STA ST2_LEN LDA CR_ST STA LDA_CR+1 STA ST2_LEN+3 STA EX_STAGE2+1 LDA CR_ST+1 STA LDA_CR+2 STA ST2_LEN+4 STA EX_STAGE2+2 TSX STX STACK_RTN JSR LDA_CR ;LOAD LENGTH OF TABLE STA ST2_LEN+1 ;STORE AS IMMEDIATE BYTE CMP #$00 ;IF ZERO THEN NO STAGE 2 SUBS BEQ _50 ;SO SKIP ALL THIS NONSENSE STA TUMP JSR LDA_CR ;LOAD AND STA _66+1 ;SAVE LAST DEL JMP _61 _60 JSR LDA_CR ;LOOP SKIPS TABLE _61 DEC TUMP BNE _60 _63 JSR LDA_CR ;1ST SUB DEL STA _65+1 LDA LDA_CR+1 PHA LDA LDA_CR+2 PHA _64 JSR LDA_CR _65 CMP #$FF ;SUB DEL BNE _64 _66 CMP #$FF ;LAST SUB DEL BNE _63 TSX STX SUBS_START LDA #$A0 STA ST2_LEN ;TURNS EX STAGE2 ON _50 LDX C_LEFT STX COL+1 INIT_COL ANOP LDX C_TOP ;INIT TO TOP OF COL LOAD_THEN_LOOP ANOP LDA #$00 STA FLAG JSR LDA_CR ;LOAD BYTE PHA ;SAVE NEW PATTERN PHA_RETURN ANOP INC FLAG JSR LDA_CR ;LOAD COUNT CMP C_BOTTOM ;CHECK FOR SINGLE BYTES BEQ _01 BCS _00 _01 STA TUMP ;NORMAL (INDEX <= BOTTOM) CPX TUMP ;INDEX - NEW VALUE BCC _19 ;BRANCH IF NEW VALUE > INDEX _00 INC LAST_BYTE+1 ;FOR SINGLE BYTE.STORE LDA LDA_CR+1 ;RESET CRUNCH POINTER BNE _05 DEC LDA_CR+2 _05 DEC LDA_CR+1 JMP _20 _19 STA LAST_BYTE+1 ;STORE END COUNT _20 PLA ;RELOAD NEW PATTERN LOOP ANOP JSR STU BEQ EOC LAST_BYTE CPX #$FF BNE LOOP BEQ LOAD_THEN_LOOP ;-->ALWAYS EOC INC COL+1 ;END OF COL LDA COL+1 ;NEXT COL CMP C_RIGHT ;CHECK FOR END OF SCREEN BNE INIT_COL LDX STACK_RTN TXS RTS ;-> !!! END OF SCREEN !!! <- LDA_CR ANOP _10 LDA CR_ST ;MODIFIED ADDRESS INC _10+1 ;INC STORAGE POINTER IN BNE ST2_LEN ;PREP FOR NEXT BYTE INC _10+2 ; ;COMPARISON TO STAGE2 FLAG BYTES ST2_LEN LDY #$FF ; = STAGE 2 LENGTH _22 CMP CR_ST,Y BEQ EX_STAGE2 DEY BNE _22 ;LOOP NEVER LOADS WITH INDEX=0 ; ;1ST BYTE (= NO. OF STAGE2 SUBS) ; ;IS NEVER CMPD TO _99 RTS EX_STAGE2 ANOP LDA CR_ST,Y STA ST2_DEL TYA ASL A CLC ADC SUBS_START TAY LDA $100,Y STA LDA_STAGE2+1 DEY LDA $100,Y STA LDA_STAGE2+2 PLA ;ADJUST STACK FOR 'JMP' RETURN PLA LDA FLAG ;CHECK IF STAGE 2 WAS ENTERED ; ;FROM ACC OR 'X' LOAD BEQ LOAD_STAGE2_THEN_LOOP ;->ACC - NORMAL BNE ACC_WAS_PUSHED ;->ACC - PUSHED INIT_COL2 ANOP LDX C_TOP ;INIT TO TOP OF COL LOAD_STAGE2_THEN_LOOP ANOP JSR LDA_STAGE2 ;LOAD BYTE BCC _11 JMP LOAD_THEN_LOOP _11 PHA ;SAVE NEW PATTERN ACC_WAS_PUSHED ANOP JSR LDA_STAGE2 ;LOAD COUNT BCC _51 JMP PHA_RETURN _51 CMP C_BOTTOM ;CHECK FOR SINGLE BYTES BEQ _21 BCS _02 _21 STA TUMP ;NORMAL (INDEX <= BOTTOM) CPX TUMP BCC _29 ;-> BRANCH IF NEW VALUE > INDEX _02 INC LAST_BYTE+1 ;FOR SINGLE BYTE.STORE LDA LDA_STAGE2+1 ;RESET CRUNCH POINTER BNE _15 DEC LDA_STAGE2+2 _15 DEC LDA_STAGE2+1 JMP _23 _29 STA LAST_BYTE+1 ;STORE END COUNT _23 PLA ;RELOAD NEW PATTERN LOOP2 ANOP JSR STU BEQ EOC2 CPX LAST_BYTE+1 BNE LOOP2 BEQ LOAD_STAGE2_THEN_LOOP ;-->ALWAYS EOC2 INC COL+1 ;END OF COL LDA COL+1 ;NEXT COL CMP C_RIGHT ;CHECK FOR END OF SCREEN BNE INIT_COL2 LDX STACK_RTN TXS RTS ;-> !!! END OF SCREEN !!! <- STU ANOP PHA LDA VADDRL,X STA DEST LDA VADDRH,X CLC ADC ADPAGE STA DEST+1 PLA COL LDY #$FF PHA *-------------------------------- C_TYPE ENTRY STA (DEST),Y ;STA($91), EOR($51), AND($31), ORA($11) STA (DEST),Y PLA INX ;ADD ANOTHER BYTE TO PATTERN CPX C_BOTTOM ;CHECK FOR BOTTOM OF COL RTS LDA_STAGE2 ANOP _13 LDA CR_ST ; INC _13+1 ;INC STORAGE POINTER IN BNE _54 ;PREP FOR NEXT BYTE INC _13+2 _54 CMP ST2_DEL ;CHECK FOR END OF STAGE 2 BNE _55 SEC RTS _55 CLC RTS *================================ SCORE_SD ENTRY LDA #SC_MUS BNE MUSIC ;ALWAYS *-------------------------------- RIGHT_SD ENTRY LDA #R_MUS *-------------------------------- MUSIC ENTRY STA ZP ;init pointer to melody STX ZP+1 LDY #0 ;init note index *-------------------------------- NEXT STY ZY ;remember note index LDA OPTST ;sound on? BNE EXIT_M LDA (ZP),Y ;note (hi nyb duration, lo nyb note) BEQ EXIT_M PHA AND #$0F TAX ;X <- note BEQ STA LDA #$30 STA STA CLICK+1 ;if rest, make CLICK BIT $C000 PLA AND #$F0 ;note duration LSR A STA DURATION *-------------------------------- LDA WAVE_L,X ASL A STA CYCLE2+1 TXA BNE ADD_11 ;not a rest LDA #14 ;rest (14+11=25, goes with 60) ADD_11 CLC ADC #11 STA CYCLE1+1 *-------------------------------- CYCLE1 LDY #$FF CYCLE2 LDX #$FF MOOP DEX BNE MOOP CLICK BIT $C030 DEY BNE CYCLE2 *-------------------------------- DEC DURATION BNE CYCLE1 *-------------------------------- LDA #$40 JSR WAIT ;Pause between notes JSR OPTIONS *-------------------------------- LDY ZY INY BNE NEXT ;Always *-------------------------------- EXIT_M RTS *================================ WAVE_L EQU EXIT_M DC I1'120,114,107,101,96,90,85,80,76,72,68,64,60,57,54' * 1/2 length of sound wave divided by 10. Use 0 for rest. *-------------------------------- DURATION DS 1 Counter for beats for this note *================================ WRONG_SD ENTRY LDA #$DC STA LOW2+1 LDA #$20 STA LOW1+1 LDA #$09 STA DURATION *-------------------------------- LDA OPTST ;sound on? BNE EXIT_M *-------------------------------- LOW1 LDY #$FF LOW2 LDX #$FF LOWLOOP PHA PLA BIT 00 DEX BNE LOWLOOP LOWCLICK BIT $C030 DEY BNE LOW2 *-------------------------------- LDA LOW2+1 LDY DURATION CPY #4 BCC __ * SEC ;CARRY IS SET ADC #4 ;+5 __ STA LOW2+1 INC LOW1+1 DEC DURATION BNE LOW1 RTS *================================ R_MUS DC H'11 2D 00' SC_MUS DC H'12 16 19 1E 10 19 6E 00' *================================ FLASH_READ ENTRY LDA #$06 ;X-START LDX #$0B ;X-END LDY #$81 ;Z-END BNE _90 ;ALWAYS *================================ FLASH_PLAN ENTRY LDA #$0B ;X-START LDX #$10 ;X-END LDY #$FF ;Z-END BNE _90 ;ALWAYS *================================ FLASH_DO_MATH ENTRY LDA #$11 ;X-START LDX #$1A ;X-END LDY #$8F ;Z-END BNE _90 ;ALWAYS *================================ FLASH_CHECK ENTRY LDA #$1A ;X-START LDX #$20 ;X-END LDY #$FF ;Z-END *-------------------------------- _90 STA _95+1 ;SAVE X-START STX _95+3 ;SAVE X-END STY _95+6 ;SAVE Z-END LDA #$80 ;BLACK STA _95 LDA #$01 ;TOP LDX #$09 ;BOTTOM JSR _94 LDA #$AA ;RED STA _95 LDX #$01 ;TOP _91 STX _92+1 TXA JSR _94 _92 LDX #$FF ;DUMMY INX INX CPX #$0B BNE _91 *================================ FLASH_9 ENTRY JSR CL_KEY LDY #$07 _93 JSR FLIP LDA $C000 ;LOAD KEYBOARD BMI _932 LDX #$40 JSR DELAY DEY BNE _93 _930 JMP MOVE_TO_VISIBLE *-------------------------------- _932 TYA AND #$01 BNE _930 JMP MOVE_TO_HIDDEN *-------------------------------- _94 STA _95+2 ;Y-START STX _95+4 ;Y-END JSR BOX _95 DC H'FF' ;DUMMY COLOR DC H'FF FF' ;DUMMY X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'FF FF' ;Z1, DUMMY Z2 RTS *================================ DRAW_DIV ENTRY BOX WHITE,19,27,$62,19,136,$63 LDA #$1B ;TOP LDX #$89 ;BOTTOM JSR SET_TOP_BOTTOM LDA #$50 STA HOW_SLOW JSR MOVE_TO_VISIBLE LDA #$00 STA HOW_SLOW JMP SET_NORM_LIM *================================ INV_CL1 ENTRY LDA #$00 ;OFFSET BEQ _68 ;ALWAYS *================================ INV_CL2 ENTRY LDA #$04 ;OFFSET BNE _68 ;ALWAYS *================================ INV_CL3 ENTRY LDA #$08 BNE _68 ;ALWAYS *================================ INV_CL4 ENTRY LDA #$0C _68 CLC ADC PB_NUM ;PROBLEM # _69 TAY LDA CL1_XE,Y ;X-END BNE _690 TYA CLC ADC #$04 BNE _69 ;ALWAYS *-------------------------------- _690 STA _70+2 ;SAVE X-END LDA #$00 STA CL1_XE,Y ;ZERO OUT X-END LDA IN1_XS,Y ;X-START STA _70 LDA IN1_YS,Y ;Y-START STA _70+1 CLC ADC #$08 ;Y-END STA _70+3 LDA IN1_ZS,Y ;Z-START STA _70+4 LDA CL1_ZE,Y ;Z-END STA _70+5 *-------------------------------- REINV_CL ENTRY JSR INVERT DC H'7F' ;WHITE _70 DC H'FF FF' ;DUMMY X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'FF FF' ;DUMMY Z1, DUMMY Z2 JMP MOVE_TO_VISIBLE *================================ INV_QUES ENTRY LDY PB_NUM ;PROBLEM # LDA QUE_XS,Y ;X1-START STA _71 LDA QUE_XE,Y ;X1-END STA _71+2 STA _72+2 LDA QUE_YS,Y ;Y1-START STA _71+1 CLC ADC #$08 ;Y1-END STA _71+3 * CLC ;CARRY IS CLEAR ADC #$01 ;Y2-START STA _72+1 LDA QUE_YE,Y ;Y2-END STA _72+3 LDA QUE_ZS,Y ;Z1-START, Z2-START STA _71+4 LDA QUE_ZE,Y ;Z1-END, Z2-END STA _71+5 STA _72+5 *-------------------------------- REINV_QUES ENTRY JSR INVERT DC H'7F' ;WHITE _71 DC H'FF FF' ;DUMMY X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'FF FF' ;DUMMY Z1, DUMMY Z2 JSR INVERT DC H'7F' ;WHITE _72 DC H'00 FF' ;X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'E0 FF' ;Z1, DUMMY Z2 JMP MOVE_TO_VISIBLE *================================ CL_RES ENTRY LDA #$10 ;RESULT OFFSET CLC ADC OP_NUM ;OPERATION NUMBER TAY LDA #$19 ;X-START SEC ;+1 ADC P_DIGS ;MAX # OF DIGITS STA _73+2 ;X-END LDA NUM1_Y1,Y ;Y-START CLC ADC ST_OFF ;STEP OFFSET STA _73+1 CLC ADC #$07 ;Y-END STA _73+3 *-------------------------------- JSR BOX DC H'80' ;BLACK _73 DC H'19 FF' ;X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'FF FF' ;Z1, Z2 JMP MOVE_TO_VISIBLE *================================ INV_SHOT ENTRY LDA SHOT_Y1,Y ;Y-START STA _74+1 CLC ADC #$09 ;Y-END STA _74+3 LDA SHOT_X2,Y ;X-END STA _74+2 LDA SHOT_Z2,Y ;Z-END STA _74+5 *-------------------------------- REINV_SHOT ENTRY JSR INVERT DC H'7F' ;WHITE _74 DC H'01 FF' ;X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'FF FF' ;Z1, DUMMY Z2 JMP MOVE_TO_VISIBLE *================================ INV_OPER ENTRY LDA LINETBL+13,Y ;Y-START TAX DEX ;Y-START STX _76+1 STA _75+1 CLC ADC #$06 ;Y-END STA _75+3 TAX INX ;Y-END STX _76+3 LDA OP_X2,Y ;X-END STA _76+2 LDA OP_Z2,Y ;Z-END STA _76+5 *-------------------------------- REINV_OPER ENTRY JSR INVERT DC H'7F' ;WHITE _75 DC H'17 FF' ;X1, DUMMY Y1 DC H'18 FF' ;X2, DUMMY Y2 DC H'FF 87' ;Z1, Z2 *-------------------------------- JSR INVERT DC H'7F' ;WHITE _76 DC H'19 FF' ;X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'E0 FF' ;Z1, DUMMY Z2 JMP MOVE_TO_VISIBLE *================================ INV_NUM ENTRY LDA N_POS ;NUMBER POSITION ASL A ;* 2 ASL A ;* 4 * CLC ;CARRY IS CLEAR ADC OP_NUM ;OPERATION NUMBER TAY LDA NUM1_Y1,Y ;Y-START CLC ADC ST_OFF ;STEP OFFSET STA _77+1 ;SAVE Y-START CLC ADC #$06 ;Y-END STA _77+3 ;SAVE Y-END *-------------------------------- LDX #$19 ;X-START LDA #$FF ;Z-START LDY DIV_X ;DIV XBYT CORRECTION BEQ _764 LDX #$14 ;X-START FOR DIVISOR LDA #$FF ;Z-START FOR DIVISOR _764 STA _77+4 ;SAVE Z-START STX _77 ;SAVE X-START TXA SEC ADC P_DIGS ;MAX # OF DIGITS TAX ;X-END LDY P_DIGS ;MAX # OF DIGITS LDA EL_ZE,Y ;Z-END LDY DIV_X ;DIV XBYT CORRECTION BEQ _768 LDX #$17 ;X-END FOR DIVISOR LDA #$9F ;Z-END FOR DIVISOR _768 STA _77+5 ;SAVE Z-END STX _77+2 ;SAVE X-END *-------------------------------- REINV_NUM ENTRY JSR INVERT DC H'7F' ;WHITE _77 DC H'FF FF' ;DUMMY X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'FE FF' ;Z1, DUMMY Z2 JMP MOVE_TO_VISIBLE *================================ INV_TEXT ENTRY ASL A ;* 2 ASL A ;* 4 ADC PB_NUM ;PROBLEM # TAY *-------------------------------- LDA IN1_XS,Y ;X-START STA _988 LDA IN1_XE,Y ;X-END STA _988+2 LDA IN1_YS,Y ;Y-START STA _988+1 CLC ADC #$08 ;Y-END STA _988+3 LDA IN1_ZS,Y ;Z-START STA _988+4 LDA IN1_ZE,Y ;Z-END STA _988+5 *-------------------------------- REINV_TEXT ENTRY JSR INVERT DC H'7F' ;WHITE _988 DC H'FF FF' ;DUMMY X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'FF FF' ;DUMMY Z1, DUMMY Z2 JMP MOVE_TO_VISIBLE *================================ POS_NUM ENTRY LDA N_POS ;NUMBER POSITION ASL A ;* 2 ASL A ;* 4 * CLC ;CARRY IS CLEAR ADC OP_NUM ;OPERATION NUMBER TAY LDA #$49 ;XBYT SEC SBC DIV_X ;DIV XBYT CORRECTION STA LETTER+4 LDA #$60 ;XSHFT CLC ADC DIV_Z ;DIV XSHFT CORRECTION STA LETTER+6 LDA NUM1_Y1,Y ;YPOS CLC ADC ST_OFF ;STEP OFFSET STA LETTER+5 RTS *================================ P_NUMBER ENTRY STA _990+1 ;SAVE NUMBER # TO PRINT JSR POS_NUM _990 LDA #$FF ;DUMMY NUMBER CHOOSEN *-------------------------------- P_NUM_F ENTRY CMP P_NUMS ;# OF RND #S BEQ P_R_T_1 CMP #$00 BNE _991 LDA F1_DOL ;FACTOR #1 DOLLAR SIGN JSR P_DOLLAR LDX #F_T_1-1 BNE _995 ;ALWAYS *-------------------------------- _991 CMP #$01 BNE _992 LDA F2_DOL ;FACTOR #2 DOLLAR SIGN JSR P_DOLLAR LDX #F_T_2-1 BNE _995 ;ALWAYS *-------------------------------- _992 CMP #$02 BNE _993 LDA F3_DOL ;FACTOR #3 DOLLAR SIGN JSR P_DOLLAR LDX #F_T_3-1 BNE _995 ;ALWAYS *-------------------------------- _993 LDA F4_DOL ;FACTOR #4 DOLLAR SIGN JSR P_DOLLAR LDX #F_T_4-1 BNE _995 ;ALWAYS *-------------------------------- P_R_T_1 ENTRY LDA R1_DOL ;RESULT #1 DOLLAR SIGN JSR P_DOLLAR LDX #R_T_1-1 _995 JMP P_STRING *-------------------------------- P_DOLLAR ENTRY STA _996 JSR MESSAGE _996 DC C' ~' DC H'FD' *================================ DRAW_EQ_L ENTRY LDY OP_NUM ;OPERATION NUMBER LDA #$18 ;EQUAL LINE XBYT CLC ADC #$02 * CLC ;CARRY IS CLEAR ADC P_DIGS ;MAX # OF DIGITS STA _997+2 ;X-END LDA #$47 ;OPERATOR XBYT STA OPS+4 LDA #$43 ;EQUAL LINE YPOS CLC ADC ST_OFF ;STEP OFFSET STA _997+1 ;Y-START STA _997+3 ;Y-END LDX P_DIGS ;MAX # OF DIGS LDA EL_ZE,X ;EQUAL LINE Z-END STA _997+5 LDA OPS_Y,Y ;YPOS CLC ADC ST_OFF ;STEP OFFSET STA OPS+5 LDA #$66 ;XSHFT STA OPS+6 LDA OPS_L,Y ;LEN STA OPS+7 LDA OPS_W,Y ;WID STA OPS+8 LDA OPS_F,Y ;FIG # STA OPS+9 USE STA,NOSAV,BGCOLOR,FULLMSK DRAW OPS USE STA,NOSAV,COLOR,FULLMSK *-------------------------------- JSR BOX DC H'FF' ;WHITE _997 DC H'17 FF' ;DUMMY X1, DUMMY Y1 DC H'FF FF' ;DUMMY X2, DUMMY Y2 DC H'C0 FF' ;Z1, DUMMY Z2 JMP MOVE_TO_VISIBLE *================================ CONV_FACTS ENTRY LDX #$00 _80 LDA F_T_1,X ;FACTOR TEXT CMP #$10 ;8-WIDE SPACE BNE _82 LDA #$A6 ;0-WIDE SPACE _82 CMP #$20 ;LOWEST NORM CHAR BCS _84 * CLC ;CARRY IS CLEAR ADC #$10 ;CONVERT TO NORMAL _84 STA F_T_1,X ;FACTOR TEXT INX CPX #$30 ;END OF FACTORS/RESULTS BNE _80 LDX #$00 _86 LDA F1_DOL,X ;FACTOR #1 DOLLAR SIGN CMP #$10 BNE _88 LDA #$A6 ;ZERO WIDE SPACE STA F1_DOL,X _88 INX CPX #$06 BNE _86 RTS *================================ P_NAME ENTRY LDX #NAME_S-1 JMP P_STRING *================================ SAVE_LET ENTRY LDA LETTER+4 ;XBYT STA L50+1 LDA LETTER+5 ;YPOS STA L52+1 LDA LETTER+6 ;XSHFT STA L54+1 RTS *================================ LOAD_LET ENTRY L50 LDA #$FF ;DUMMY XBYT STA LETTER+4 L52 LDA #$FF ;DUMMY YPOS STA LETTER+5 L54 LDA #$FF ;DUMMY XSHFT STA LETTER+6 RTS *================================ NUM1_Y1 ENTRY DC H'1F 1F 1F 1F' H'4D 4D 4D 4D' *-------------------------------- NUM2_Y1 ENTRY DC H'28 28 28 28' H'56 56 56 56' *-------------------------------- NUM3_Y1 ENTRY DC H'31 31 31 46' H'5F 5F 5F 74' *-------------------------------- NUM4_Y1 ENTRY DC H'3A 3A 3A 46' H'68 68 68 74' *-------------------------------- NUM5_Y1 ENTRY DC H'46 46 46 3A' H'74 74 74 68' *================================ SHOT_Y1 ENTRY DC H'8B 9F A9' *-------------------------------- SHOT_X2 ENTRY DC H'0A 09 0A' *-------------------------------- SHOT_Z2 ENTRY DC H'FF BF FF' *================================ OP_X2 ENTRY DC H'21 25 27 21' *-------------------------------- OP_Z2 ENTRY DC H'FF FF 9F 87' *-------------------------------- EL_ZE ENTRY DC H'FF 80 81 83 87 8F 9F BF FF' *================================ S_OPS1 ENTRY DC H'AB AD AA AF' ;'+ - * /' DC H'AB AA AA AB' ;'+ * * +' DC H'AD AB AF AF' ;'- + / /' DC H'AD AA AA AF' ;'- * * /' DC H'AD' ;'-' *-------------------------------- C_OPS1 ENTRY DC H'AD AB A5 F8' ;'- + % x' DC H'AD A5 A5 AD' ;'- % % -' DC H'AB AD F8 F8' ;'+ - x x' DC H'AB A5 A5 F8' ;'+ % % x' DC H'AB' ;'+' *================================ S_OPS2 ENTRY DC H'AB AD AA AF' ;'+ - * /' DC H'AA AD AB AF' ;'* - + /' DC H'AF AD AB AD' ;'/ - + -' DC H'AB AF AA AA' ;'+ / * *' DC H'AA' ;'*' *-------------------------------- C_OPS2 ENTRY DC H'AD AB A5 F8' ;'- + % x' DC H'A5 AB AD F8' ;'% + - x' DC H'F8 AB AD AB' ;'x + - +' DC H'AD F8 A5 A5' ;'- x % %' DC H'A5' ;'%' *================================ OP_NUM1 ENTRY DC H'00 01 02 03' DC H'00 02 02 00' DC H'01 00 03 03' DC H'01 02 02 03' DC H'01' *-------------------------------- OP_NUM2 ENTRY DC H'00 01 02 03' DC H'02 01 00 03' DC H'03 01 00 01' DC H'00 03 02 02' DC H'02' *================================ OPS_Y ENTRY DC H'3B 3B 3B 44' *-------------------------------- OPS_L ENTRY DC H'07 07 07 09' *-------------------------------- OPS_W ENTRY DC H'02 02 02 01' *-------------------------------- OPS_F ENTRY DC H'0B 0D 0F 13' *================================ OPS_LO ENTRY DC I1<'FPADD,FPSUB,FPMUL,FPDIV' *-------------------------------- OPS_HI ENTRY DC I1>'FPADD,FPSUB,FPMUL,FPDIV' *================================ F_BLANK ENTRY DC H'10 10 10 10 10 10 FE FD' *================================ P_X ENTRY DC H'30 31 32 33 30 31 32 33 30 31 32 33' *-------------------------------- P_Y ENTRY DC H'0A 0A 0A 0A 0F 0F 0F 0F 14 14 14 14' *-------------------------------- P_Z ENTRY DC H'63 64 65 66 63 64 65 66 63 64 65 66' *-------------------------------- PCK_Y ENTRY DC H'2A 3B 4C 5D 6E 7F' ;H'4C 5D 6E 7F 90 A1' *-------------------------------- PCK_XR ENTRY DC H'52 53 54 55 56 58' *-------------------------------- PCK_ZR ENTRY DC H'60 62 63 65 66 60' *-------------------------------- PCK_XL ENTRY DC H'49 47 46 45 44 43' *-------------------------------- PCK_ZL ENTRY DC H'60 65 64 63 62 60' *================================ LINETBL ENTRY DC H'10 1C 25 2E 37 40 49 52 5B 64 6D 76 7F 8C 96 A0 AA' *-------------------------------- IBOX1_1 GEQU UNCRUNCH-$36 IBOX1_S GEQU IBOX1_1-2 *-------------------------------- IBOX2_1 GEQU IBOX1_1-$36 IBOX2_S GEQU IBOX2_1-2 *-------------------------------- IBOX3_1 GEQU IBOX2_1-$51 IBOX3_S GEQU IBOX3_1-2 *-------------------------------- IBOX4_1 GEQU IBOX3_1-$3F IBOX4_S GEQU IBOX4_1-2 *-------------------------------- CBOX1_1 GEQU IBOX4_1-$122 CBOX1_S GEQU CBOX1_1-2 *-------------------------------- CBOX2_1 GEQU CBOX1_1-$3C CBOX2_2 GEQU CBOX2_1+$1E CBOX2_S GEQU CBOX2_2-2 *-------------------------------- SBOX_1 GEQU CBOX2_1-$2A SBOX_S GEQU SBOX_1-2 *-------------------------------- DBOX1_1 GEQU SBOX_1-$BE DBOX1_S GEQU DBOX1_1-2 *-------------------------------- DBOX2_1 GEQU DBOX1_1-$A0 DBOX2_S GEQU DBOX2_1-2 *================================ IBOX1 ENTRY DC A'IBOX1_S,IBOX1_S' ;SAVE ADDRS DC H'35 00 60' ;X, Y, Z DC H'09 05' ;LEN, WID - 1 DC H'0B 0B' ;FIG #S DC A'IBOX1_1' ;SHAPE ADDR *-------------------------------- IBOX2 ENTRY DC A'IBOX2_S,IBOX2_S' ;SAVE ADDRS DC H'3B 00 60' ;X, Y, Z DC H'09 05' ;LEN, WID - 1 DC H'0B 0B' ;FIG #S DC A'IBOX2_1' ;SHAPE ADDR *-------------------------------- IBOX3 ENTRY DC A'IBOX3_S,IBOX3_S' ;SAVE ADDRS DC H'41 00 60' ;X, Y, Z DC H'09 08' ;LEN, WID - 1 DC H'0B 0B' ;FIG #S DC A'IBOX3_1' ;SHAPE ADDR *-------------------------------- IBOX4 ENTRY DC A'IBOX4_S,IBOX4_S' ;SAVE ADDRS DC H'4A 00 60' ;X, Y, Z DC H'09 06' ;LEN, WID - 1 DC H'0B 0B' ;FIG #S DC A'IBOX4_1' ;SHAPE ADDR *-------------------------------- CBOX1 ENTRY DC A'CBOX1_S,CBOX1_S' ;SAVE ADDRS DC H'30 09 60' ;X, Y, Z DC H'0A 1C' ;LEN, WID - 1 DC H'0B 0B' ;FIG #S DC A'CBOX1_1' ;SHAPE ADDR *-------------------------------- CBOX2 ENTRY DC A'CBOX2_S,CBOX2_S' ;SAVE ADDRS DC H'52 05 60' ;X, Y, Z DC H'05 05' ;LEN, WID - 1 DC H'0B 0B' ;FIG #S DC A'CBOX2_1' ;SHAPE ADDR DC A'CBOX2_2' ;SHAPE ADDR *-------------------------------- SBOX ENTRY DC A'SBOX_S,SBOX_S' ;SAVE ADDRS DC H'52 0A 60' ;X, Y, Z DC H'07 05' ;LEN, WID - 1 DC H'0B 0B' ;FIG #S DC A'SBOX_1' ;SHAPE ADDR *-------------------------------- DBOX1 ENTRY DC A'DBOX1_S,DBOX1_S' ;SAVE ADDRS DC H'30 13 60' ;X, Y, Z DC H'0A 12' ;LEN, WID - 1 DC H'0B 0B' ;FIG #S DC A'DBOX1_1' ;SHAPE ADDR *-------------------------------- DBOX2 ENTRY DC A'DBOX2_S,DBOX2_S' ;SAVE ADDRS DC H'48 13 60' ;X, Y, Z DC H'0A 0F' ;LEN, WID - 1 *-------------------------------- SPACE ENTRY DC H'0B 0B' ;FIG #S DC A'DBOX2_1' ;SHAPE ADDR *-------------------------------- DC H'50 B6 60' ;X, Y, Z DC H'09 08' ;LEN, WID DC H'0B 0D' ;FIG #S *-------------------------------- OPS ENTRY DC A'SPACE_I' ;SHAPE ADDR DC A'SPACE_I2' ;SHAPE ADDR *-------------------------------- DC H'49 00 60' ;X, Y, Z DC H'07 02' ;LEN, WID DC H'0B 13' ;FIG #S DC A'$966E' ;SHAPE ADDR ;'+' DC A'$9379' ;SHAPE ADDR ;'-' DC A'$92DC' ;SHAPE ADDR ;'x' *-------------------------------- POINT ENTRY DC A'$9304' ;SHAPE ADDR ;'%' DC A'DIV_OP' ;SHAPE ADDR ;')' *-------------------------------- DC H'30 00 60' ;X, Y, Z DC H'07 01' ;LEN, WID *-------------------------------- CURSOR ENTRY DC H'0B 0B' ;FIG #S DC A'PT_SHPE' ;SHAPE ADDR *-------------------------------- DC H'30 00 60' ;X, Y, Z DC H'07 01' ;LEN, WID DC H'0B 0B' ;FIG #S DC A'CSR_SHP' ;SHAPE ADDR *================================ PT_SHPE DC H'83' ;'0000011' DC H'87' ;'0000111' DC H'8F' ;'0001111' DC H'9F' ;'0011111' DC H'8F' ;'0001111' DC H'87' ;'0000111' DC H'83' ;'0000011' *================================ CSR_SHP DC H'BF' ;'0111111' DC H'BF' ;'0111111' DC H'BF' ;'0111111' DC H'BF' ;'0111111' DC H'BF' ;'0111111' DC H'BF' ;'0111111' DC H'BF' ;'0111111' *================================ DIV_OP DC H'03' ;'00000011' DC H'06' ;'00000110' DC H'06' ;'00000110' DC H'0C' ;'00001100' DC H'0C' ;'00001100' DC H'0C' ;'00001100' DC H'0C' ;'00001100' DC H'06' ;'00000110' DC H'06' ;'00000110' *================================ ST2_DEL DC H'00' TUMP DC H'00' FLAG DC H'00' *================================ COPY EXTRA END g =='?(??TONEGEN^ a Y(  *======================================================================* 65816 OFF 65C02 OFF LONGA OFF LONGI OFF MSB ON ORG $800 KEEP OBJ/T *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* KEYBOARD GEQU $C000 KEYCLEAR GEQU $C010 SPEAKER GEQU $C030 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TONE1 GEQU $5 TONE2 GEQU $6 DURATION GEQU $7 D2 GEQU $8 *======================================================================* TONEGEN START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* USING DATA *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* READY_FOR_KEY ANOP BIT KEYCLEAR ANY_KEY_DOWN ANOP LDA KEYCLEAR BPL ANY_KEY_DOWN KEY_DETECTED ANOP LDX #$22 is it a legal key? FIND_KEY ANOP DEX BMI READY_FOR_KEY any more legal keys to check? CMP KEYS,X is it this key? BNE FIND_KEY if not, check next key STA CURRENT_KEY legal key found...remember it! CPX #$11 convert to 0-relative index BCC PLAY_NOTE TXA SBC #$11 TAX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLAY_NOTE ANOP LDA TONES,X look up the note to play STA TONE1 STA TONE2 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA OFFS,X look up the fine tuning... AND #1 ...& fine tune it TAY LDA T,Y STA BEQ_DEY STA BEQ_DD LDA OFFS,X AND #$FE STA BNE_0+1 STA BNE_5+1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLAY ANOP enough hub-hub...play the note! LDA TONE1 LDX #$01 LDY #$1A STY D2 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DEX ANOP DEX BNE DEY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CLICK ENTRY BIT SPEAKER *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX TONE1 BNE_0 BNE _0 _0 BEQ _1 _1 BEQ _2 _2 BEQ _3 _3 BEQ _4 _4 BEQ BEQ_DEY BEQ_DEY BEQ DEY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DEY ANOP DEY BNE DEC_DUR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CLICK2 ENTRY BIT SPEAKER *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY TONE2 BNE_5 BNE _5 _5 BEQ _6 _6 BEQ _7 _7 BEQ _8 _8 BEQ _9 _9 BEQ BEQ_DD BEQ_DD BEQ DEC_DUR *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DEC_DUR ANOP DEC D2 BNE DEX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA KEYCLEAR is a key being held down? BMI SAME_KEY JMP READY_FOR_KEY no, wait for another key SAME_KEY ANOP CMP CURRENT_KEY yes, is it the same key? BEQ DEX if so continue playing same note BNE KEY_DETECTED if not set up the new note *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (TONEGEN) *======================================================================* DATA DATA TONES DC H'FF F0 E3 D7 CB BF B4 AA A0 98 8E 86 7F 77 71 6A 65 5E 59 54 4F 4B 46 42 3E 3B 38 34 31 2E 2B 29 26 24 22 20 1E 00' OFFS DC H'03 02 00 07 04 08 05 09 05 08 03 01 06 03 09 03 09 03 04 07 07 09 03 04 03 09 0B 05 05 04 02 07 04 04 03 04 00 00' CURRENT_KEY DC H'00' T DC H'D0 F0' * 0 1 2 * 0123456789ABCDEF0123456789ABCDEF012 KEYS DC C'ZSXDCVGBHNJM,L.;/zsxdcvgbhnjm,l.;/' END (DATA) *======================================================================* g =='?(??PDATA# a \  PIANO_SCREEN START DC H'00 C0 30 58' dc H'05 FD FB FA F7 F6 F6 AA FF F6 F7 14 80 F7 FA C0' dc H'FF FA FB 24 80 92 FF FB FD 80 FF FD FF 08 FD 0C' dc H'80 0D BF 0E 9F 0F 8F 10 80 E7 F7 C7 16 8F 17 9F' dc H'18 FD 1C BF 1E FF FB FD FA 03 E7 C3 05 99 08 80' dc H'C1 E1 F1 0C 80 F0 0F E3 10 80 12 E6 E7 F7 15 8F' dc H'17 80 19 9F 1B 9C 1C 98 1E CC E1 FF FB FD FA 08' dc H'FD 0C FD 10 80 FE FC F7 FE FF 18 FD FB FD FA 08' dc H'80 09 87 0A 93 0B 99 0C 80 0D 81 0E 9F 10 80 11' dc H'87 12 93 13 99 F7 15 81 16 9F 18 FD FB 80 AA CF' dc H'FA 08 FD 0C FD 10 FD 14 FD 18 FD FB 80 F8 F6 FA' dc H'08 FD 0C FD 10 FD 14 FD 18 FD FB FD FA 08 FD 0C' dc H'FD 10 FD 14 FD 18 FD FB 80 94 BF F6 FA 08 FD 0C' dc H'FD 10 FD 14 FD 18 FD FB 80 AA E7 FA 08 FD 0C FD' dc H'10 FD 14 FD 18 FD FB 80 FC F6 FA 08 FD 0C FD 10' dc H'FD 14 FD 18 FD FB FD FA 08 FD 0C FD 10 FD 14 FD' dc H'18 FD FB FD FA 08 FD 0C FD 10 FD 14 FD 18 FD FB' dc H'80 F3 FA 08 FD 0C FD 10 FD 14 FD 18 FD FB FD FA' dc H'08 FD 0C FD 10 FD 14 FD 18 FD FB FD FA 08 FD 0C' dc H'FD 10 FD 14 FD 18 FD FB 80 8F F6 FA 08 FD 0C FD' dc H'10 FD 14 FD 18 FD FB 80 AA F9 FA 08 FD 0C FD 10' dc H'FD 14 FD 18 FD FB FD FA 08 FD 0C FD 10 FD 14 FD' dc H'18 FD FB FD FA 08 FD 0C FD 10 FD 14 FD 18 FD FB' dc H'80 87 F6 FA 08 FD 0C FD 10 FD 14 FD 18 FD FB 80' dc H'94 C0 AA FC FA 08 FD 0C FD 10 FD 14 FD 18 FD FB' dc H'FD FA 08 FD 0C FD 10 FD 14 FD 18 FD FB FD FA 08' dc H'FD 0C FD 10 FD 14 FD 18 FD FB 80 83 AA BF FA 08' dc H'FD 0C FD 10 FD 14 FD 18 FD FB 80 E0 AA FE FA 08' dc H'FD 0C FD 10 FD 14 FD 18 FD FB FD FA 08 FD 0C FD' dc H'10 FD 14 FD 18 FD FB FD FA 08 FD 0C FD 10 FD 14' dc H'FD 18 FD FB 80 94 9F FA 08 FD 0C FD 10 FD 14 FD' dc H'18 FD FB FD FA 08 FD 0C FD 10 FD 14 FD 18 FD FB' dc H'FD FA 08 FD 0C FD 10 FD 14 FD 18 FD FB FD FA 08' dc H'FD 0C FD 10 FD 14 FD 18 FD FB 80 AA CF FA 08 FD' dc H'0C FD 10 FD 14 FD 18 FD FB 80 F8 F6 FA 08 FD 0C' dc H'FD 10 FD 14 FD 18 FD FB FD FA 08 FD 0C FD 10 FD' dc H'14 FD 18 FD FB 80 94 BF F6 FA 08 FD 0C FD 10 FD' dc H'14 FD 18 FD FB 80 AA E7 FA 08 FD 0C FD 10 FD 14' dc H'FD 18 FD FB 80 FC F6 FA 08 FD 0C FD 10 FD 14 FD' dc H'18 FD FB FD FA 08 FD 0C FD 10 FD 14 FD 18 FD FB' dc H'FD FA 08 FD 0C FD 10 FD 14 FD 18 FD 24 80 92 87' dc H'80 83 FA 08 FD 0C FD 10 FD 14 FD 18 FD 24 80 C0' END (PIANO_SCREEN) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STEP0 START END HIDATA START OBJ $6880 QNOTE ENTRY DC H'00 00 60 11 01 0A' use 0A for midC to A, 0E above DC A'QNOTE_S,LQNOTE_M,QNOTE_S,HQNOTE_M' QNOTE_S dc H'80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80 80' LQNOTE_M dc H'E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 E0 FC FE FF FE BC' HQNOTE_M dc H'9E BF FF BF 9F 83 83 83 83 83 83 83 83 83 83 83 83' TONES ENTRY DC H'FF F0 E3 D7 CB BF B4 AA A0 98 8E 86 7F 77 71 6A 65 5E 59 54 4F 4B 46 42 3E 3B 38 34 31 2E 2B 29 26 24 22 20 1E 00' OFFS ENTRY DC H'03 02 00 07 04 08 05 09 05 08 03 01 06 03 09 03 09 03 04 07 07 09 03 04 03 09 0B 05 05 04 02 07 04 04 03 04 00 00' CURRENT_KEY ENTRY DC H'00' NOTE_INDEX ENTRY DC H'00' T ENTRY DC H'D0 F0' KEYS ENTRY * 0 1 2 * 0123456789ABCDEF0123456789ABCDEF012 DC C'ZSXDCVGBHNJM,L.;/zsxdcvgbhnjm,l.;/' ZZZ_DATA ENTRY END (HIDATA) STEP1 START END *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* g =='?(?? HEARTRESP 5;  TUNESTUNETESTTT.ROOTT1T2T3SFXSFX.LINKSFX.LISTHELPBackup.........g =='?(??TUNES  T1 DC H'65 6B 78 A1 65 78 A1 87 5A 65 00' D1 DC H'1D 1D 1D 3D 3D 43 43 43 43 6B 00' T2 DC H'CA 87 A1 B4 78 98 8F 87 80 78 72 6B 65 00' D2 DC H'49 5E 1F 46 68 20 22 20 23 20 25 20 49 00' T3 DC H'CA A1 87 6B 78 87 98 A1 6B 87 65 00' D3 DC H'3F 3D 40 1C 1D 39 3D 3A 3D 3C 6C 00' g =='?(??TUNETESTP ,   KEEP /R/OBJ/TT 65816 OFF 65C02 OFF LONGA OFF LONGI OFF *======================================================================* MELODY START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BIT $C010 K LDA $C000 BPL K SEC SBC #$C1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ASL A TAX LDA TONES,X STA 0 LDA TONES+1,X STA 1 LDA DURAS,X STA 2 LDA DURAS+1,X STA 3 LDY #$FF LOOP INY LDA (0),Y BEQ MELODY STA TONE LDA (2),Y STA DURA TYA PHA *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX #$01 LDY #$2E STY D2 DEX DEX BNE DEY XTW BIT $C030 LDX TONE DEY DEY BNE DEC YTW BIT $C030 LDY TONE DEC DEC D2 BNE DEX DEC DURA BNE DEX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLA TAY JMP LOOP *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TONE DS 1 DURA DS 1 D2 DS 1 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TONES DC A'TA,TB,TC,TD,TE,TF,TG,TH,TI,TJ,TK,TL,TM,TN,TO,TP,TQ' DURAS DC A'DA,DB,DC,DD,DE,DF,DG,DH,DI,DJ,DK,DL,DM,DN,DO,DP,DQ' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TA DC H'98 87 78 65 6B 65 5A 4C 50 5A 50 4C 00' DA DC H'15 15 15 15 15 15 15 15 15 15 15 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TB DC H'CA BF B4 AA A1 CA A1 87 A1 87 6B 87 6B 65 00' DB DC H'10 10 10 10 20 20 20 20 20 20 20 20 20 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TC DC H'87 65 6B 65 5A 6B 65 5F 5A 55 50 65 00' DC DC H'15 2D 15 25 28 16 15 16 16 27 28 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TD DC H'8F 87 78 8F 5A 78 6B 78 87 A1 78 87 8F B4 00' DD DC H'11 0C 20 1E 21 40 0E 12 1E 21 11 0C 23 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TE DC H'FF F1 E3 D6 CA BF B4 CA D6 CA B4 A1 B4 CA 00' DE DC H'26 25 20 20 20 1F 53 27 23 2B 44 49 26 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TF DC H'CA A1 98 87 CA 98 87 78 87 98 78 65 00' DF DC H'1B 30 1C 31 19 36 19 39 19 44 46 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TG DC H'78 87 98 78 6B 78 87 78 5A 65 6B 65 00' DG DC H'27 23 23 25 24 23 24 21 49 3D 19 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TH DC H'98 87 78 65 98 50 5A 65 00' DH DC H'20 20 20 20 20 20 20 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TI DC H'CA B4 A1 98 87 78 6B 65 00' DI DC H'20 20 20 20 20 20 20 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TJ DC H'CA BF B4 AA A1 98 8F 87 80 78 72 6B 65 00' DJ DC H'10 10 10 10 10 10 10 10 10 10 10 10 4A' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TK DC H'65 6B 78 A1 65 78 A1 87 5A 65 00' DK DC H'1D 1D 1D 3D 3D 43 43 43 43 6B' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TL DC H'CA 87 A1 B4 78 98 8F 87 80 78 72 6B 65 00' DL DC H'49 5E 1F 46 68 20 22 20 23 20 25 20 49' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TM DC H'CA A1 87 6B 78 87 98 A1 6B 87 65 00' DM DC H'3F 3D 40 1C 1D 39 3D 3A 3D 3C 6C' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TN DC H'CA A1 87 A1 87 78 6B 65 6B 65 5A 65 6B 65 5A 65 00' DN DC H'50 1A 30 30 70 1A 1A 1A 1A 1A 1A 1A 1A 1A 1A 50' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TO DC H'CA D6 E3 F1 FF 00' DO DC H'24 24 24 24 70' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TP DC H'B4 87 80 78 B4 87 80 6B 65 6B 72 78 80 87 8F 98 65 5A 6B 65 00' DP DC H'26 39 54 A5 20 31 4D CB 2B 27 2B 29 29 27 2E 38 2F 30 36 78' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TQ DC H'CA BF B4 AA B4 AA A1 98 A1 98 8F 87 8F 87 80 78 80 78 72 6B 72 6B 65 5F 65 00' DQ DC H'10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 10 20' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (MELODY) *======================================================================* g =='?(??TT.ROOT ,= MELODY ??5ȱ+ȱH.,0,0Ƣơh`Yr%6QfߘxekeZLPZPLJ k k eJe-ke%Z(ke_ZU'P(eJ x Z!x@kx!x #J&% S'#+DI&J016x9DxFeJx'##x%k$x#$x!ZIe=keJ x e P Z eJ x k eJ`xrkeJekxexg =='?(??T1  KEEP /R/OBJ/T1 ORG $6100 T1_0 START DC H'65 6B 78 A1 65 78 A1 87 5A 65 00' END ALIGN 256 T1_1 START DC H'65 6B 78 A1 65 78 A1 87 5A 65 00' END ALIGN 256 T1_2 START DC H'1D 1D 1D 3D 3D 43 43 43 43 6B 00' END g =='?(??T2(  KEEP /R/OBJ/T2 ORG $6100 T2_0 START DC H'CA 87 A1 B4 78 98 8F 87 80 78 72 6B 65 00' END ALIGN 256 T2_1 START DC H'CA 87 A1 B4 78 98 8F 87 80 78 72 6B 65 00' END ALIGN 256 T2_2 START DC H'49 5E 1F 46 68 20 22 20 23 20 25 20 49 00' END g =='?(??T3(  KEEP /R/OBJ/T3 ORG $6100 T3_0 START DC H'CA A1 87 6B 78 87 98 A1 6B 87 65 00' END ALIGN 256 T3_1 START DC H'CA A1 87 6B 78 87 98 A1 6B 87 65 00' END ALIGN 256 T3_2 START DC H'3F 3D 40 1C 1D 39 3D 3A 3D 3C 6C 00' END g =='?(??SFXi +  ORG $280 KEEP /R/OBJ/SFX 65816 OFF 65C02 OFF LONGA OFF LONGI OFF ABSADDR ON *======================================================================* NOTES GEQU 0 NOTE GEQU 2 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TONE GEQU $0300 DURATION GEQU $0303 *======================================================================* SFX START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DES_CHRO ENTRY LDA #DESCHRON BNE SET *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ASC_CHRO ENTRY LDA #ASCCHRON BNE SET *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* EFFECT_1 ENTRY LDA #EFFECT1N BNE SET *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* EFFECT_2 ENTRY LDA #EFFECT2N *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET ENTRY STA NOTES STX NOTES+1 LDA #0 STA NOTE RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLAYNOTE ENTRY LDY #0 INC NOTE LDA NOTE CMP (NOTES),Y BCC _0 LDA #1 _0 STA NOTE TAY LDA (NOTES),Y STA TONE LDA #8 STA DURATION JMP $6B08 TONE_GEN *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F 10 11 12 ASCCHRON DC H'13 FF F1 E3 D6 CA BF B4 AA A1 98 8F 87 80 78 72 6B 65 5F' DESCHRON DC H'13 5F 65 6B 72 78 80 87 8F 98 A1 AA B4 BF CA D6 E3 F1 FF' EFFECT1N DC H'05 FF F1 E3 F1' EFFECT2N DC H'05 CA A1 87 A1' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (SFX) *======================================================================* g =='?(??SFX.LINKx4+  DES_CHRO GEQU $280 ASC_CHRO GEQU DES_CHRO+6 EFFECT_1 GEQU ASC_CHRO+6 EFFECT_2 GEQU EFFECT_1+6 PLAYNOTE GEQU EFFECT_2+$D g =='?(??SFX.LIST`  ORCA/M ASM65816 1.0 6 Dec 1989 15:30:29 0001 0000 ORG $280 0002 0000 KEEP /R/OBJ/SFX 0003 0000 65816 OFF 0004 0000 65C02 OFF 0005 0000 LONGA OFF 0006 0000 LONGI OFF 0007 000280 0000 ABSADDR ON 0008 000280 0000 *======================================================================* 0009 000280 0000 NOTES GEQU 0 0010 000280 0000 NOTE GEQU 2 0011 000280 0000 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0012 000280 0000 TONE GEQU $0300 0013 000280 0000 DURATION GEQU $0303 0014 000280 0000 *======================================================================* 0015 000280 0000 SFX START 0016 000280 0000 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0017 000280 0000 DES_CHRO ENTRY 0018 000280 0000 A9 43 LDA #DES_CHRO_NOTES 0020 000284 0004 D0 10 BNE SET 0021 000286 0006 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0022 000286 0006 ASC_CHRO ENTRY 0023 000286 0006 A9 33 LDA #ASC_CHRO_NOTES 0025 00028A 000A D0 0A BNE SET 0026 00028C 000C *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0027 00028C 000C EFFECT_1 ENTRY 0028 00028C 000C A9 53 LDA #EFFECT_1_NOTES 0030 000290 0010 D0 04 BNE SET 0031 000292 0012 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0032 000292 0012 EFFECT_2 ENTRY 0033 000292 0012 A9 63 LDA #EFFECT_2_NOTES 0035 000296 0016 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0036 000296 0016 SET ENTRY 0037 000296 0016 85 00 STA NOTES 0038 000298 0018 86 01 STX NOTES+1 0039 00029A 001A A0 FF LDY #$FF 0040 00029C 001C 84 02 STY NOTE 0041 00029E 001E 60 RTS 0042 00029F 001F *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0043 00029F 001F PLAYNOTE ENTRY 0044 00029F 001F E6 02 INC NOTE 0045 0002A1 0021 A5 02 LDA NOTE 0046 0002A3 0023 29 0F AND #$F 0047 0002A5 0025 A8 TAY 0048 0002A6 0026 B1 00 LDA (NOTES),Y 0049 0002A8 0028 8D 00 03 STA TONE 0050 0002AB 002B A9 08 LDA #8 0051 0002AD 002D 8D 03 03 STA DURATION 0052 0002B0 0030 4C 0E 6B JMP $6B0E TONE_GEN 0053 0002B3 0033 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0054 0002B3 0033 F1 E3 D6 CA ASC_CHRO_NOTES DC H'F1 E3 D6 CA BF B4 AA A1 98 8F 87 80 78 72 6B 65' 0055 0002C3 0043 F1 E3 D6 CA DES_CHRO_NOTES DC H'F1 E3 D6 CA BF B4 AA A1 98 8F 87 80 78 72 6B 65' 0056 0002D3 0053 FF F1 E3 F1 EFFECT_1_NOTES DC H'FF F1 E3 F1 FF F1 E3 F1 FF F1 E3 F1 FF F1 E3 F1' 0057 0002E3 0063 CA A1 87 A1 EFFECT_2_NOTES DC H'CA A1 87 A1 CA A1 87 A1 CA A1 87 A1 CA A1 87 A1' 0058 0002F3 0073 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* 0059 0002F3 0073 END (SFX) Local Symbols 000006 ASC_CHRO 000033 ASC_CHRO_NOTES 000000 DES_CHRO 000043 DES_CHRO_NOTES 00000C EFFECT_1 000053 EFFECT_1_NOTES 000012 EFFECT_2 000063 EFFECT_2_NOTES 00001F PLAYNOTE 000016 SET 0060 0002F3 0000 *======================================================================* Global Symbols 000303 DURATION 000002 NOTE 000000 NOTES 000300 TONE 60 source lines 0 macros expanded 0 lines generated Link Editor 1.1 Segment: 00000280 00000073 Code: SFX Global symbol table: 00000286 G 01 00 ASC_CHRO 00000280 G 01 00 DES_CHRO 0000028C G 01 00 EFFECT_1 00000292 G 01 00 EFFECT_2 0000029F G 01 00 PLAYNOTE 00000296 G 01 00 SET 00000280 G 01 00 SFX Segment Information: Number Type Length Org 1 $00 $00000073 $00000280 There is 1 segment, for a length of $00000073 bytes. g =='?(??HELP 5(&  HR1HR2HR3HR4HR5HR6HR7HR1.SRCHR2.SRCHR3.SRCHR4.SRCHR5.SRCHR6.SRCHR7.SRCBackup.........g =='?(??HR1 X     (  ) IӠΠƠŠԠĠŠŠǠĠĠŠ̠ǠӠĠӠӠӠΠŠҠԠҠŠ ΠΠŠŠĠΠΠŠԮӠǠĠŠҠӠҠՠϠȠΠƠŠҠӠƠŠҠΠŠҠԠΠŠǠŠԮϠŠŠE٠͠ӠĠΠҠԠҮҠŠӬ̬Ӡ̠ͬǠȠǠĠӠϠŠŠԠƠŠpРCԮ͠ǠĮg =='?(??HR2}X   '  ( )ӠƠՠϠԠŠĠή IϠŠԠŬŠҠ̠ ٠͠ƠŠԠĠŠРծƠҠҠӠԬՠ̠ ǠӠĠӠӠԠҠٮƠҠĠҠΠΠŠԮԠƠŠŠŠנӠϠ̠ŠԠӠԬՠ̠ŠΠŠ ͠ӠĠΠŠԮŠӠǠΠŠҠԠΠԠҮ ĠҠŠנӠϠŠŠҠԠҮӠpCĠϠŠΠĬΠՠĠŠŠƠħӠg =='?(??HR3}X     (  )ŠӮĠŠΠŠԠΠԠҠٮƠҠĠҠ IŠԠϠȠȠҠƠӠԬՠ̠ŠΠŠ ŠŠ٠ҠĠ̮Ӡ1ԠӠԠƠŠҠԠҮ Ҡ٠Ҡ2ҠĮΠŠ٠ٮŠŠנӠϠŠŠάΠӠŠĮΠŠҠРĠΠŠҠϠŠӠ?ƠՠĠϠŠŠӠ ĠάàӠŠĮŠԠӬΠӠĠĠŠӠή𠠠pCˠԠŠҠƠӠĠĠƠҠҠӠԬՠ̠g =='?(??HR4 X       (  )ȠŠ٠ӠĮŠӠԬՠ̠ŠΠŠ I ĠҠŠנӠϠԠҮŠҮȠϠŠ̠ԠԠ 젠ӠŠάΠӠE𠠠ӠƠ٠ӠŠήƠҠҠӠԬՠ̠pРCΠƠΠΠӠάԠҠٮƠҠĠҠg =='?(??HR5}X       (  )ԠŬΠӠŠǠŠԮϠŠŠ IŠϠˠԠ̠ŠӬϠՠ̬Ӡ Ԡ̠ŠΠ͠Š 젠̮ 𠠠ŠǠĠĠŠ̠𠠠ӠΠŠҠԠҠŠpCŠŮŠŠנӠϠŠҠӠҠՠϠȠg =='?(??HR6X     ( )ŠӠάȠŠؠԠ IŠĠǠŠǠԠƠƠҠҠӠԬՠ̠ŠŮŠŠԠƠӠԠҠٮƠҠĠҠ ŠŠ٠ҠĠ̮Ӡ1ǠӠŠΠԠԠӠԬՠ̠ŠΠŠҠ٠Ҡ2ҠĮΠŠ٠ӠŠŮӠԠҮEάҠӠŠĮΠŠΠҠŠӠȠŠĠάҠӠŠĮάĠŠ̠ȠԮӠpC?ƠՠĠԮg =='?(??HR7}X  ,    ( )ƠҠҠӠԬՠ̠ IΠӠĠΠŠԠƠŠԠҠٮƠҠĠҠ άȠŠŠӠӠԬՠ̠ŠΠŠ 젠ĠΠŠԮŠŠԠԠҮŠӠȠŠĠҠϠŠήŠŠנ ĠŠάĠŠĠӠϠԠҠŬΠΠŮӠϠРΠӠpCҮg =='?(??HR1.SRCX }  iHEART OF MINE (TUTORIAL)n INFORMATION ON THE STRUCTURE AND FUNCTION OF THE MAJOR ORGANS OF THE CIRCULATORY SYSTEM IS PRESENTED IN VISUAL FORM, ALONG WITH ACCOMPANYING TEXT. A CROSS SECTION OF THE HEART AND THE SURROUNDING ARTERIES AND VEINS IS SHOWN ON THE LEFT. TERMS BEING DEFINED APPEAR IN THE SMALLER HEART IN THE UPPER RIGHT CORNER. FOR SOME TERMS, CUPID FLIES TO INDICATE THE PART OF THE DIAGRAM BEING DEFINED. THE FLASHING HAND AND SPACE SYMBOL APPEARS IN THE LOWER RIGHT CORNER WHILE THE COMPUTER WAITS FOR YOU TO FINISH READING THE TEXT. TO CONTINUE THE TUTORIAL, PRESS iSPACEn. g =='?(??HR2.SRC} }/  iCUPID'S ARROW (GAME)n A CUTAWAY DIAGRAM OF THE HEART AND THE SURROUNDING ARTERIES AND VEINS IS SHOWN ON THE LEFT. A PART OF THE DIAGRAM IS DESCRIBED ON THE RIGHT. USE iUn, iDn, iLn AND iRn OR THE ARROW KEYS TO MOVE CUPID TO THE DESTINATION DESCRIBED, THEN PRESS iRETURNn. IF YOU DO NOT MOVE CUPID TO THE CORRECT PLACE, THE COMPUTER WILL HELP YOU. USE THE ARROW KEYS TO SCROLL THE LIST OF NAMES APPEARING IN THE SMALLER HEART IN THE UPPER RIGHT CORNER. PRESS iRETURNn WHEN YOU FIND THE NAME OF CUPID'S DESTINATION. IF YOUR ANSWER IS INCORRECT, YOU WILL GET ANOTHER TRY. IF YOUR SECOND ANSWER IS INCORRECT, YOU WILL BE SHOWN THE CORRECT ANSWER. g =='?(??HR3.SRC} }  iAIR PATHWAYS (TUTORIAL)n CHOOSE THE EASY OR HARD LEVEL. PRESS i1n FOR EASY OR i2n FOR HARD. IN THE EASY VERSION, COMMON TERMS ARE USED. IN THE HARD VERSION, SCIENTIFIC TERMS ARE USED. LOOK AT THE PAIR OF PICTURES AND READ THE HINTS. FIND A TITLE IN THE LIST ON THE RIGHT TO MATCH EACH PAIR OF PICTURES THAT DESCRIBES A PART OF THE AIR PATHWAY. USE THE ARROW KEYS TO MOVE THE RUNNER UP AND DOWN THE LADDER TO THE TITLE THAT MATCHES, THEN PRESS iRETURNn. IF YOUR ANSWER IS INCORRECT, YOU WILL GET ANOTHER TRY. IF YOUR SECOND ANSWER IS INCORRECT, YOU WILL BE SHOWN THE CORRECT ANSWER. PRESS i?n IF YOU NEED TO SEE THE PICTURES AND READ THE HINTS AGAIN. g =='?(??HR4.SRC }  iTAKE A DEEP BREATH (TUTORIAL)n MODELS OF RESPIRATORY ACTIONS ARE SHOWN. A DESCRIPTION OF AN ACTION IS GIVEN, WITH THE KEY WORDS HIGHLIGHTED. USE iUn, iDn, iLn AND iRn OR THE ARROW KEYS TO MOVE DR. DASH TO THE MODEL THAT BEST MATCHES THE DESCRIPTION, THEN PRESS iRETURNn. IF YOUR ANSWER IS INCORRECT, YOU WILL GET ANOTHER TRY. IF YOUR SECOND ANSWER IS INCORRECT, YOU WILL BE SHOWN THE CORRECT ANSWER. g =='?(??HR5.SRCu} }  iLAB OLYMPICS (TUTORIAL)n CHOOSE A DIVE. USE THE ARROW KEYS TO HIGHLIGHT A DIVE, THEN PRESS iRETURNn. BE SURE TO LOOK AT ALL THE DIVES, SO YOU GET ALL THE INFORMATION FROM THE TUTORIAL. THE FLASHING HAND AND SPACE SYMBOL APPEARS IN THE LOWER RIGHT CORNER WHILE THE COMPUTER WAITS FOR YOU TO FINISH READING THE TEXT. TO CONTINUE THE TUTORIAL, PRESS iSPACEn. g =='?(??HR6.SRCc}  iSEA OF LIFE (GAME)n CHOOSE THE EASY OR HARD LEVEL. PRESS i1n FOR EASY OR i2n FOR HARD. IN THE EASY VERSION, EASIER TERMS ARE USED. IN THE HARD VERSION, HARDER TERMS ARE USED. A SENTENCE IS GIVEN, WITH A WHITE BOX AT THE END INDICATING THE MISSING PART OF THE SENTENCE. CHOOSE THE SET OF WORDS MOVING ACROSS THE SCREEN THAT BEST COMPLETES THE SENTENCE. PRESS iRETURNn WHEN YOUR CHOICE PASSES BENEATH THE FISHERMAN, AND HE WILL CATCH IT. PRESS i?n IF YOU NEED A HINT. IF YOUR ANSWER IS INCORRECT, YOU WILL GET ANOTHER TRY. IF YOUR SECOND ANSWER IS INCORRECT, YOU WILL BE SHOWN THE CORRECT ANSWER. g =='?(??HR7.SRC}8 }1  iUP, UP AND AWAY (GAME)n THE NUMBERS 1 THROUGH 12 ARE ARRANGED AROUND THE SCREEN, AND ARE HIGHLIGHTED IN SEQUENCE. PRESS iRETURNn TO STOP ON A NUMBER. A QUESTION IS ASKED ON THE LEFT OF THE SCREEN, WITH FIVE POSSIBLE ANSWERS LISTED ON THE RIGHT. CHOOSE THE BEST ANSWER TO THE QUESTION. USE THE ARROW KEYS TO HIGHLIGHT YOUR CHOICE, THEN PRESS iRETURNn. IF YOUR ANSWER IS INCORRECT, YOU WILL GET ANOTHER TRY. IF YOUR SECOND ANSWER IS INCORRECT, YOU WILL BE SHOWN THE CORRECT ANSWER. g =='?(?? FINDER.DATAj\p &BRAINUSCARIVER9< HEARTRESPRIVERDIGEXUSCARIVER<SKELMUSCARIVERg =='?(?? CATEGORIZING 5((  CATDET.HELPHDG FINDER.DATABackup.........g =='?(??CATb!b iELIMINATE SUSPECTS AND SOLVE THE CASEn EXAMINE THE FACTS: USE THE LEFT AND RIGHT ARROW KEYS TO SEE THE OTHER CATEGORIES AND ALL THE FACTS YOU HAVE ENTERED IN EACH CATEGORY. ELIMINATE SUSPECTS: USE iSPACE BARn OR ARROW KEYS TO HIGHLIGHT A FACT ABOUT ONE OF THE 8 SUSPECTS. PRESS i?n TO ASK THE CHIEF ABOUT THE FACT. THE CHIEF WILL TELL YOU WHETHER OR NOT THE FACT ELIMINATES THE SUSPECT. IF YOU NEED TO CHOOSE ADDITIONAL FACTS, PRESS iESCn TO GO BACK TO THE SUSPECT FILES. ELIMINATE SUSPECTS UNTIL YOU ARE READY TO SOLVE THE CASE, THEN ACCUSE A SUSPECT. USE iSPACE BARn OR ARROW KEYS TO HIGHLIGHT A FACT ABOUT A SUSPECT AND PRESS i!n TO ACCUSE THE SUSPECT. TAKE CARE! YOU CAN ONLY ACCUSE ONE SUSPECT. PRESS iSPACE BARn TO CONTINUE g =='?(??DET.HELPb"X         נӠϠԠԠԠŠӠ̠ՠŠ٠ 0"ƠŠӮӠ?ϠˠŠϠŠŠŬΠŠŠŠӺŠŠԠĠƠԠŠԮŠƠ̠ԮŠ ҠנӠϠ0 ԠנӠϠŠŠҠ̠ՠҠҠԠŠԠԠԠԠԠĠ`ӠĠ̠ŠӠՠŠӠŠԮƠՠĠϠӠ!ϠŠŠԮŠ`EPĠΠȠٮŠ̠ӬӠϠšՠΠ٠ŠŠԮ ˠϠŠԠӮAŠӺŠ ҠӠ ϠŠg =='?(??HDGf X       ήӠϠԠŠĠƠՠŠĠ٠ĠӬ $"ϠŠάΠӠΠՠ٠٠ŠŠŮŠ ĠөŭҭŠĠҠŠנӠϠŠȠ/ ΠĠөΠΠӠΠӠĮӠҠŠҠŠŠĠȠŠĠӮ`Ġ٠ǠԠΠŠٮҠŮƠՠŠˬՠ٠ŠԠ`EPӠϠԠŠĠϠŠȠŠŮ άΠӠΠĠҠ٠ԠҬՠŠpAөŠŠƠΠΠӠĠŮҠ٠Ӭg =='?(?? FINDER.DATATV8V8p Y@HDG.HELPA2LSESKDET.HELPA2LSESKHCATINTRO62LSESKg =='?(??CHARTS 5(*  GENHELPMOREHELP FINDER.DATABackup.........g =='?(??GENHELP)( (#  ___________________________________ | | | 7 6 5 4 3 2 1 0 | | | | BLUE 1 0 1 0 1 0 1 0 AA/D5 | | | | RED 1 1 0 1 0 1 0 1 D5/AA | | | | PURPLE 0 0 1 0 1 0 1 0 2A/55 | | | | GREEN 0 1 0 1 0 1 0 1 55/AA | ____|___________________________________|____ | | | | JSR $FCA8 | SHAPE TABLE | | | | | A delay | 0 page 1 bg save (l/h) | | | 2 page 2 bg save (l/h) | | 0F < .001 | 4 xbyte 5 ypos 6 shift | | 1F .003 | 7 height 8 width | | 2F .006 | 9 this frame A last frame | | 3F .011 | B 0th frame shape (l/h) | | 4F .017 | D " mask (l/h) | | 5F .024 | F 1st frame shape (l/h) | | 6F .032 | ...etc... | | 7F .042 |______________________________| | 8F .053 | | | 9F .065 | BYTE ZAP | | AF .079 | | | BF .094 | 0 quit | | CF .110 | 1 READ 'previous' sector | | DF .127 | 2 READ specified sector | | EF .146 | 3 READ 'next' sector | | FF .166 | 4 change display format | |______________| 5 printer options | | 6 refresh screen display | | 7 change slot / drive | | 8 disk map | | 9 ALTER byte @ cursor | | = WRITE sector to disk | |____________________________| g =='?(??MOREHELPR( (#  n AND 0 = 0 7 negative 1 = n 6 overflow (BIT an RTS to force on) 5 n OR 0 = n 4 break 1 = 1 3 decimal 2 interrupt disable n XOR 0 = n 1 zero 1 = NOT n 0 carry ADPAGE C0E8 drive off 00 20 9 on TO_HIDDEN >1 >2 A 1 TO_VISIBLE >2 >1 B 2 ASL C < 7...0 < 0 LSR 0 > 7...0 > C ROL 7...0 ROR 7...0 > C > < C < g =='?(?? FINDER.DATA>V7/p 'gfMOREHELP.MATEMKHGENHELPKPMATEMKg =='?(??DRAW 5'2 V4.1V4.2V5.0V5.3 FINDER.DATAREADMEBackup.........g =='?(??V4.1 5>/  RAMD.ASMDRAW.ASMD.DOSRAMDD41 ZPAGE.VARS VARIABLESMACROSBackup.........g =='?(??RAMD.ASM8g5> ,+  65816 OFF 65C02 OFF LONGA OFF LONGI OFF LIST ON SYMBOL ON GEN ON ABSADDR ON KEEP RAMD MSB ON ORG $F300 *======================================================================* RAMD START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * FILE 'RAM.DISK' *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * When used with the FLOAD macro, this code should BLOAD * and save up to 32 files in the RAM DISK and the AUXILIARY * MEMORY (on the extended 80 column card). * * Each call for a file should use the same FLOAD macro call * (to insure the same spelling). * * Each file name cannot exceed 8 bytes in length (including * an $8D (RETURN) terminator.) * * If a file will not fit, it will be BLOADed normally. * * If a file will fit, it will be BLOADed and saved in the * RAM DISK or AUX MEMORY and in subsequent FLOADs the file * will be moved, not BLOADed. * * You MUST INIT (JSR $F303) before the first FLOAD macro * call in order to test for the AUXILIARY MEMORY. * * If an ',A$xxxx' string is included in an FLOAD, then: * You MUST use a full 4 byte HEXIDECIMAL address. * There can be no other commas in the string. * The ',A$xxxx' is not counted in the length of the file name. * No other modifiers to the string should be used. (,D2) * If ',A$xxxx' in first FLOAD, next FLOAD will BLOAD. * If no ',A$xxxx' in a later FLOAD, load address is set. * Fload will match 'TEST' and 'TEST,A$6900' as same file. * *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ** EQUATES *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ADDR GEQU $94 ADDRESS (v_PTR) V_STR_PTR GEQU $9A LEN_T GEQU $A0 TEMP LENGTH OF FILE (XINDEX) MFI GEQU $A2 MATCHED FILE INDEX (BX_1) NO_ADD GEQU $A3 NO ADDRESS FLAG (MSO) FNDX_T GEQU $A4 TEMP FILE INDEX (SSO) BANK GEQU $A7 BANK # (TEMP) SRC GEQU $EB SOURCE (SHAPE) DST GEQU $ED DESTINATION (MASK) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* AUX_FLAG GEQU $94EB BLOAD GEQU $9898 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LEN GEQU $AA60 AT GEQU $AA72 *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STORAGE GEQU $D000 COUT GEQU $FDED *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (RAMD) *======================================================================* INIT START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$00 INIT TO ZERO STA FNDX FILE INDEX STA BANK BANK # STA LAST NEXT BYTE AVAIL (LO) LDA #$D0 STA LAST+1 NEXT BYTE AVAIL (HI) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* AUX_TEST ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA $FBB3 MACHINE ID BYTE CMP #$38 APPLE II BEQ NO_AUX CMP #$EA APPLE II+ BEQ NO_AUX LDX $800 Load byte LDY $C00 Load byte LDA #$EE Test byte to store STA $C005 Write to AUX MEM STA $C003 Read from AUX MEM STA $800 Save test byte ASL A Change test byte STA $C00 Save changed byte CMP $800 Compare with original BEQ NO_AUX Same, no AUX MEM LDA $800 Load original byte CMP #$EE Compare with original BNE NO_AUX Not same, no AUX MEM CLC Set flag BCC BACK And exit NO_AUX SEC Set flag BACK STA $C004 Write NORMAL MEM STA $C002 Read NORMAL MEM ROR AUX_FLAG AUX MEM flag STY $C00 Restore STX $800 Restore RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (INIT) *======================================================================* SEARCH START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PLA ADDR OF NAME (LO) STA ADDR PLA ADDR OF NAME (HI) STA ADDR+1 PHA LDA ADDR PHA LDX FNDX FILE INDEX BEQ _00 LDA END_B-1,X END BANK # OF PREVIOUS FILE DC H'24' SKIP 1 BYTE _00 TXA (LDA #$00) BANK # STARTS AT 00 _05 JSR SETBANK LDX FNDX FILE INDEX BEQ _35 DEX _10 STX MFI MATCHED FILE INDEX TXA ASL A *2 ASL A *4 ASL A *8 TAX LDY #$01 START AT 01 NOT 00 _20 LDA (ADDR),Y LOAD BYTE OF NAME CMP NAMES,X COMPARE WITH TABLE BNE _25 NO MATCH CMP #$8D RETURN (END CHAR) BEQ _40 FULL MATCH INX INY CPY #$09 MAX 8 CHARS PER NAME BNE _20 KEEP TRYING BEQ _30 _25 CMP #$AC ',' BNE _30 LDA NAMES,X NAME TABLE CMP #$8D RETURN (END CHAR) BEQ RELOAD_FILE A MATCH WITH ',A$xxxx' _30 LDX MFI MATCHED FILE INDEX DEX BPL _10 TRY NEXT ENTRY IN TABLE _35 LDA #$01 NOT A FORCED BLOAD BNE _45 NO MORE TO TRY, BLOAD FILE _40 LDX MFI MATCHED FILE INDEX LDA ADLO,X ADDR IN MEM (LO) ORA ADHI,X ADDR IN MEM (HI) BNE RELOAD_FILE 0000 IN ADDR, MUST BLOAD FILE STX FNDX_T TEMP FILE INDEX _45 STA CHECK_LENGTH+1 FORCED BLOAD FLAG JMP BLOAD_FILE *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (SEARCH) *======================================================================* RELOAD_FILE START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX MFI MATCHED FILE INDEX SEC LDA TBLL+1,X START OF NEXT FILE (LO) SBC TBLL,X START OF THIS FILE (LO) STA $AA60 LEN OF FILE (LO) LDA END_B,X END BANK OF THIS FILE EOR TBLB,X START BANK OF THIS FILE TAY 00=SAME, 01=0-1, 02=0-2, 03=1-2 LDA TBLH+1,X START OF NEXT FILE (HI) SBC TBLH,X START OF THIS FILE (HI) CLC ADC ADJB,Y ADJUST FOR BANK CHANGES STA $AA61 LEN OF FILE (HI) LDX #$00 INIT TO ZERO STX _37+1 ADDR STRING FLAG STX ADDR PLA ADDR OF NAME (LO) TAY PLA ADDR OF NAME (HI) BNE _05 ---> ALWAYS _00 LDA (ADDR),Y LOAD A BYTE OF NAME BEQ _10 '00' IS END CHAR CPX #$03 THREE CHARS BEFORE ADDR BCC _02 STA A_DOLLAR,X SAVE BYTE OF ADDR STRING INX CPX #$07 CHECK IF DONE BNE _05 NOT YET INC _37+1 ADDR STRING FLAG BNE _05 _02 CMP A_DOLLAR,X CHECK FOR ADDR STRING BNE _05 INX _05 INY BNE _00 INC ADDR+1 BNE _00 ---> ALWAYS _10 LDA ADDR+1 NEW RETURN ADDR (HI) PHA TYA NEW RETURN ADDR (LO) PHA _30 LDX MFI MATCHED FILE INDEX LDA TBLB,X BANK # TABLE STA _60+1 SAVE BANK # CMP #$02 AUX MEM BNE _35 STA $C003 READ AUX MEM * STA $C004 WRITE MAIN MEM _35 JSR SETBANK LDA TBLL,X ADDR IN BANK (LO) STA SRC SOURCE ADDR (LO) LDA TBLH,X ADDR IN BANK (HI) STA SRC+1 SOURCE ADDR (HI) _37 LDA #$FF DUMMY ADDR STRING FLAG BEQ _38 LDA A_DOLLAR+3 FIRST BYTE OF ADDR LDX A_DOLLAR+4 SECOND BYTE OF ADDR STRING JSR STRIP_ADDR2 TAY DESTINATION (HI) LDA A_DOLLAR+5 THIRD BYTE OF ADDR STRING LDX A_DOLLAR+6 FOURTH BYTE OF ADDR STRING JSR STRIP_ADDR2 JMP _39 _38 LDY ADHI,X ADDR IN MEM (HI) LDA ADLO,X ADDR IN MEM (LO) _39 STA DST DESTINATION (LO) STA $AA72 STY DST+1 DESTINATION (HI) STY $AA73 LDY #$00 _40 LDA (SRC),Y SOURCE STA (DST),Y DESTINATION INC DST DESTINATION (LO) BNE _50 INC DST+1 DESTINATION (HI) _50 INC SRC SOURCE (LO) BNE _80 INC SRC+1 SOURCE (HI) _60 LDA #$FF DUMMY, BANK # BNE _70 LDA SRC+1 SOURCE (HI) CMP #$E0 TOP OF BANK 0 BNE _80 LDA #$01 BANK 1 LDX #$D0 NEW SOURCE ADDR (HI) BNE _75 _70 CMP #$01 CHECK BANK # BNE _80 LDA AUX_FLAG AUX MEM FLAG BMI _80 NO AUX MEM LDA SRC+1 SOURCE ADDR (HI) CMP #$F3 TOP OF BANK 1 BNE _80 STILL ROOM LEFT STA $C003 READ AUX MEM * STA $C004 WRITE MAIN MEM LDA #$02 NEW BANK # (AUX MEM) LDX #$08 NEW SOURCE ADDR _75 STA _60+1 NEW BANK # JSR SETBANK STY SRC SOURCE ADDR (LO) $00 STX SRC+1 SOURCE ADDR (HI) _80 LDX MFI MATCHED FILE INDEX LDA SRC SOURCE (LO) CMP TBLL+1,X BOTTOM OF NEXT FILE (LO) BNE _40 LDA SRC+1 SOURCE (HI) CMP TBLH+1,X BOTTOM OF NEXT FILE (HI) BNE _40 LDA BANK BANK # CMP END_B,X END BANK # FOR THIS FILE BNE _40 JMP RESTORE_VARS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (RELOAD_FILE) *======================================================================* BLOAD_FILE START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA FNDX FILE INDEX CMP #$20 MAX 32 FILE NAMES IN TABLE BEQ _05 ASL A *2 ASL A *4 ASL A *8 TAX LDY #$01 STY NO_ADD NO ADDR STRING FLAG _00 LDA (ADDR),Y BYTE OF NAME BEQ _05 '00' IS END CHAR CMP #$AC ',' BNE _02 LDA #$00 SET TO ZERO STA NO_ADD NO ADDR STRING FLAG LDA #$8D REPLACE ',' WITH 'RETURN' _02 STA NAMES,X SAVE NAME IN TABLE INX INY CPY #$09 MAX 8 CHARS PER NAME BNE _00 _05 JSR BLOAD BLOAD FILE DC H'00' * LDA #$00 START OF PSEUDO-PROMPT WITH NO RETURN * STA ADDR PLA ADDR OF NAME (LO) TAY PLA ADDR OF NAME (HI) STA v_STR_PTR+1 BNE _15 ---> ALWAYS _10 LDA ( ALWAYS _20 LDA v_STR_PTR+1 RESTORE RETURN ADDR PHA TYA PHA *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (BLOAD_FILE) *======================================================================* CHECK_LENGTH START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #$FF DUMMY FORCED BLOAD FLAG BNE _05 LDX FNDX_T TEMP FILE INDEX LDA AT BLOAD ADDR (LO) STA ADLO,X ADDR IN MEM (LO) LDA AT+1 BLOAD ADDR (HI) STA ADHI,X ADDR IN MEM (HI) RTS _05 LDA FNDX FILE INDEX CMP #$20 MAX 32 FILE NAMES IN TABLE BEQ _40 LDA AUX_FLAG AUX MEM FLAG BPL _10 LDA BANK BANK # BNE _00 JSR ADD_L_L BCC _45 CMP #$03 BCC _45 LENGTH OF FILE (LO) RTS _00 JSR ADD_L_L BCS _40 CMP #$F3 BCC _45 RTS _10 LDA BANK BANK # BNE _20 JSR ADD_L_L BCC _45 CMP #$BB BCC _45 RTS _20 CMP #$01 BANK 2? BNE _30 JSR ADD_L_L BCC _45 CMP #$AB BCC _45 RTS _30 JSR ADD_L_L BCS _40 CMP #$C0 BCC _45 _40 RTS _45 LDA LEN LENGTH OF FILE (LO) STA LEN_T TEMP LEN OF FILE (LO) LDA LEN+1 LENGTH OF FILE (HI) STA LEN_T+1 TEMP LEN OF FILE (HI) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (CHECK_LENGTH) *======================================================================* SAVE_FILE START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDX FNDX FILE INDEX LDA BANK BANK # STA TBLB,X BANK # TABLE CMP #$02 BNE _20 * STA $C002 READ MAIN MEM STA $C005 WRITE AUX MEM _20 JSR SETBANK LDA AT BLOAD ADDR (LO) STA SRC SOURCE (LO) STA ADLO,X ADDR IN MEM (LO) LDA AT+1 BLOAD ADDR (HI) STA SRC+1 SOURCE (HI) STA ADHI,X ADDR IN MEM (HI) LDA NO_ADD NO ADDR STRING FLAG BNE _30 NO ADDR STRING STA ADLO,X STORE A 00 TO BOTH STA ADHI,X ADDR IN MEM (HI) & (LO) _30 LDA LAST NEXT BYTE AVAIL (LO) STA DST DESTINATION (LO) LDA LAST+1 NEXT BYTE AVAIL (HI) STA DST+1 DESTINATION (HI) LDY #$00 _60 LDA (SRC),Y LOAD SOURCE BYTE STA (DST),Y SAVE DESTINATION BYTE INC SRC SOURCE (LO) BNE _65 INC SRC+1 SOURCE (HI) _65 INC DST DESTINATION (LO) BNE _80 INC DST+1 DESTINATION (HI) LDA BANK BANK # BNE _70 LDA DST+1 DESTINATION (HI) CMP #$E0 TOP OF BANK 0 BNE _80 LDX #$D0 START ADDR OF BANK 1 (HI) LDA #$01 BANK # 1 BNE _75 _70 CMP #$01 BNE _80 LDA DST+1 DESTINATION (HI) CMP #$F3 TOP OF BANK 1 BNE _80 * STA $C002 READ MAIN MEM STA $C005 WRITE AUX MEM LDA #$02 NEW BANK (AUX MEM) LDX #$08 NEW DEST (HI) _75 JSR SETBANK STY DST DESTINATION (LO) $00 STX DST+1 DESTINATION (HI) _80 DEC LEN_T LENGTH OF FILE (LO) BNE _60 DEC LEN_T+1 LENGTH OF FILE (HI) BPL _60 LDX FNDX FILE INDEX LDA BANK BANK # STA END_B,X END BANK FOR THIS FILE INX FILE INDEX + 1 LDA DST (ADC) DESTINATION (LO) STA LAST NEXT BYTE AVAIL (LO) STA TBLL,X ADDR TABLE (LO) LDA DST+1 (ADC) DESTINATION (HI) STA LAST+1 NEXT BYTE AVAIL (HI) STA TBLH,X ADDR TABLE (HI) STX FNDX FILE INDEX *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RESTORE_VARS ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA $C002 READ MAIN MEM STA $C004 WRITE MAIN MEM NO_SAVE RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SETBANK ENTRY *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA BANK SET BANK FLAG CMP #$01 BEQ BANK2 BCS AUX_MEM LDA $C083 READ RAM BANK 2 LDA $C083 & WRITE RAM BANK 2 RTS BANK2 ENTRY LDA $C08B READ RAM BANK 1 LDA $C08B & WRITE RAM BANK 1 AUX_MEM ENTRY RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (SAVE_FILE) *======================================================================* STRIP_ADDR2 START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR STRIP_ADDR ASL A ASL A ASL A ASL A STA _00+1 SAVE HI HALF BYTE TXA JSR STRIP_ADDR _00 ORA #$FF DUMMY (COMBINE HALF BYTES) RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (STRIP_ADDR2) *======================================================================* STRIP_ADDR START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SEC SBC #$B0 CONVERTS ASCII HEXIDECIMAL # CMP #$0A TO TRUE HEXIDECIMAL # BCC _00 IN THE LO HALF BYTE OF ACC. SBC #$07 _00 RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (STRIP_ADDR) *======================================================================* ADD_L_L START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* CLC LDA LAST NEXT BYTE AVAIL (LO) ADC LEN LENGTH OF FILE (LO) LDA LAST+1 NEXT BYTE AVAIL (HI) ADC LEN+1 LENGTH OF FILE (HI) RTS *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (ADD_L_L) *======================================================================* STORAGE_TABLES START *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * VARIABLES AND TABLES *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LAST ENTRY DC A'STORAGE' NEXT BYTE AVAILABLE TBLL ENTRY DC I1'STORAGE' ADDR IN BANK (LO) DS $20 TBLH ENTRY DC I1>'STORAGE' ADDR IN BANK (HI) DS $20 TBLB ENTRY DS $20 WHICH BANK A FILE STARTS IN END_B ENTRY DS $20 WHICH BANK A FILE ENDS IN ADLO ENTRY DS $20 ADDR IN MEM (LO) ADHI ENTRY DS $20 ADDR IN MEM (HI) NAMES ENTRY DS $100 FILE NAMES (END IN $8D) A_DOLLAR ENTRY DC C',A$xxxxX' LAST 'X' IS $8D ADJB ENTRY DC H'00' NO BANK CHANGE DC H'10' BANK 0 TO BANK 1 DC H'33' BANK 0 TO BANK 2 DC H'23' BANK 1 TO BANK 2 FNDX ENTRY DC H'00' FILE INDEX (RANGE 0-7) *::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* END (STORAGE_TABLES) *======================================================================* g =='?(??DRAW.ASMu>9 +  * FILE 'DRAW.V4.1' * 65816 OFF 65C02 OFF LONGA OFF LONGI OFF MCOPY MACROS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SETCOM 30 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LIST ON Do not forget to change SYMBOL ON the label PRINT to TRUE EXPAND ON GEN ON ABSADDR ON *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Remember to change the label PRODOS * KEEP D41 ProDOS D41 TRUE KEEP D.DOS DOS3.3 D.DOS FALSE *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MSB ON ORG $6000 *===============================================================* DRAW_V41 START *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PRINT GEQU TRUE PRODOS GEQU FALSE *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TRUE GEQU 1 FALSE GEQU 0 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TABLE GEQU $06 DESTAD GEQU $08 SAVE GEQU $1A ADPAGE GEQU $1C *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LINE_TABLE GEQU $90 LETTER GEQU $92 v_PTR GEQU $94 LETTER_ADDR GEQU $96 LEFT_MARGIN GEQU $98 RIGHT_MARGIN GEQU $99 V_STR_PTR GEQU $9A LENGTH GEQU $9C DRAW/RESTORE_SCREEN *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BOX_COLOR GEQU $A0 BOX BOX_X1 GEQU $A1 BOX_Y1 GEQU $A2 BOX_X2 GEQU $A3 BOX_Y2 GEQU $A4 BOX_Z1 GEQU $A5 BOX_Z2 GEQU $A6 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* XINDEX GEQU $A0 TINDEX GEQU $A1 WIDTH GEQU $A2 MSO GEQU $A3 SSO GEQU $A4 * $A5 & $A6 Reserved by BOX TEMP GEQU $A7 STT GEQU $A8 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ***** $AA FREE ***** *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PATCH_FLAGS GEQU $AB BOTH_PAGES GEQU $AC *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ***** $AD & $AE FREE ***** *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SHAPE GEQU $EB S GEQU SHAPE MASK GEQU $ED D GEQU MASK *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ST_LOC GEQU $6000 VADDRL GEQU $6700 VADDRH GEQU $6800 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* XBYT GEQU 4 YPOS GEQU 5 XSHFT GEQU 6 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* MIN_SHIFT GEQU $60 MAX_SHIFT GEQU MIN_SHIFT+6 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* BUFFER GEQU $9AC0 Use DOS buffer for word buffer * (Contents destroyed by LOAD or SAVE) SEARCH GEQU $F34F *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *= SYSTEM VARIABLES =* *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RANDLO GEQU $4E RANDHI GEQU $4F COUT GEQU $FDED WAIT GEQU $FCA8 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INIT_DRAW_ROUTINES ANOP *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR PROMPT-T_START+R_START DC H'95 8D 84' DC C'MAXFILES1' DC H'8D 00' LDA #R_START Real Start address (hi) STA SAVE+1 Source (hi) LDA #T_START Target address (hi) STA DESTAD+1 Destination (hi) LDY #$00 _B0 LDA (SAVE),Y Source STA (DESTAD),Y Destination INC DESTAD Destination (lo) BNE _B1 INC DESTAD+1 Destination (hi) _B1 INC SAVE Source (lo) BNE _B2 INC SAVE+1 Source (hi) _B2 LDA DESTAD+1 Destination (hi) CMP #>R_END Real End (hi) BNE _B0 LDA DESTAD Destination (lo) CMP #SEARCH >FLOAD STA FLOAD+2 LDA #$4C JMP STA INIT_R JSR INIT_R Init RAM DISK routines NOLC JMP TGEN *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* R_START ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *===============================================================* * TESTPRINT Fake output to print correct * addresses *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * DS $3480-R_START *===============================================================* OBJ $9480 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* T_START ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *** ENTRY POINT VECTOR TABLES *** *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JMP PRE_DRAW JMP DRAW JMP PRE_RESTORE JMP RESTORE_SCREEN JMP FLIP JMP BOX JMP PROMPT JMP BLOAD JMP SET_PATCHES JMP RANDGEN JMP INITIALIZE JMP LINE_ADDRESS JMP INIT_DRAW JMP SET_TOP_BOTTOM JMP SET_LEFT_RIGHT JMP MOVE_TO_HIDDEN JMP MOVE_TO_VISIBLE JMP MESSAGE JMP TAB_MESSAGE JMP INLINE_BOX *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* ONE_PAGE ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #FALSE DC H'2C' SKIP 2 BYTES *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* TWO_PAGES ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDA #TRUE STA BOTH_PAGES RTS JMP TEXT_LINE JMP ASCII JMP NEXT_LETTER JMP STRING *WHITE_FONT ANOP LDA #$04 DC H'2C' SKIP 2 BYTES *BLACK_FONT ANOP LDA #$0C STA EOR_FONT_FLAG RTS SPECIAL_CHARS_EXT ENTRY CLC Patch this location with a RTS 'JMP MY_SPECIAL_CHAR_HANDLER' NOP to intercept special or * control characters imbedded * in a message string JMP HELP_MOVER FLOAD ENTRY JMP BLOAD If LC.CHECK detects lang card * then JMP SEARCH INIT_R ENTRY RTS If LC.CHECK detects lang card * then JMP $F300 DC H'00 F3' JMP TGEN *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* COUT_FLAG ENTRY DC I1'FALSE' RTN_FLAG ENTRY DC I1'FALSE' HOW_SLOW ENTRY DC I1'TRUE' AUX_FLAG ENTRY DC I1'FALSE' *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PRE_DRAW ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* *== TABLES FOR DRAW ROUTINES ==* *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * * BYTE 0,1 -> SCREEN 1 BACKGROUND SAVE ADDRESS (LO,HI) * BYTE 2,3 -> SCREEN 2 BACKGROUND SAVE ADDRESS (LO,HI) * * -*- LENGTH OF THE SAVE AREA = [ (WIDTH+1) * LENGTH ] + 2 * * *** (WIDTH+1) * 1 IS ADDED TO THE WIDTH BECAUSE THE SHAPE MAY BE DRAWN * SHIFTED WITHIN A BYTE. A FOUR BYTE WIDE SHAPE WILL FULLY * OBSCURE THE THREE CENTER BYTES AND PARTIALLY OBSCURE A * BYTE ON THE LEFT AND A BYTE ON THE RIGHT. * *** * LENGTH * WILL GIVE THE AREA (OR NUMBER OF BYTES) IN THE BACKGROUND * SAVE * *** + 2 * XBYT AND YPOS ARE STORED IN THE FIRST 2 BYTES OF THE SAVE * ADDING TWO MORE BYTES TO THE AREA REQUIRED BY THE SAVE * * * BYTE 4,5,6 -> THE COORDINATES OF THE UPPER LEFT CORNER OF THE * SHAPE * * BYTE 4 -> XBYT = (HORIZONTAL BYTE ON THE SCREEN - $30) * *** - $30 ALLOWS SHAPES TO BE DRAWN STARTING OFF THE LEFT EDGE * OF THE SCREEN. * $00 - $2F SHAPE IS HIDDEN OFF THE LEFT EDGE OF THE SCREEN * $30 - $57 SHAPE IS VISIBLE ON THE SCREEN * $58 - $FF SHAPE IS PAST THE RIGHT EDGE OF THE SCREEN * * BYTE 5 -> YPOS = (VERTICAL COORDINATE OF THE SHAPE) * *** $00 - $BF IS VISIBLE ON THE SCREEN * SHAPES LONGER THAN $40 BYTES CANNOT DISAPPEAR VERTICALLY - * THEY WILL WRAP AROUND * * BYTE 6 -> XSHFT = (THE SHIFT OF A SHAPE WITHIN A BYTE) * *** THIS ALLOWS A SHAPE TO BE MOVED HORIZONTALLY AT LESS THAN * FULL BYTE INCREMENTS. * VALUES RANGE FROM $60 - $66 AND ARE THE HIGHT BYTE OF THE * SHIFT TABLE ADDRESSES. * * * BYTE 7 -> LENGTH = (SHAPE LENGTH IN BYTES) * BYTE 8 -> WIDTH = (SHAPE WIDTH IN BYTES) * * BYTE 9 -> FIGURE INDEX = [ (FIGURE# * 4) + 7 ] * *** THIS IS A OFFSET FROM THE START OF THIS TABLE TO THE * ADDRESS OF THE SHAPE BEING DRAWN. * * BYTE 10 -> LAST SHAPE INDEX = [ (# OF FIGS) * 4 + 7] * *** THIS IS THE OFFSET OF THE LAST SHAPE * * BYTE 11,12,13,14 * BYTE 15,16,17,18 * etc. * *** IN GROUPS OF 4 - THE ADDRESSES OF THE SHAPES AND THEIR * MASKS SHAPE LO , SHAPE HI , MASK LO , MASK HI * *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * INITIALIZES THE ZERO PAGE VARIABLE 'TABLE' BEFORE ENTERING * 'DRAW'. THIS IS THE ENTRY POINT FROM THE DRAW MACRO *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA TABLE STX TABLE+1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DRAW ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Init SAVE pointer JSR SET_SAVE_ADDRESS * Init position LDY #$04 LDA (TABLE),Y XBYT LDX #0 STX TINDEX Init TINDEX pS1 ENTRY CMP #SAVE [STA (SAVE,X)] STA dXBYT INC SAVE BNE pS6 INC SAVE+1 pS6 ANOP INY LDA (TABLE),Y YPOS pS2 ENTRY CMP #SAVE [STA (SAVE,X)] STA dYPOS INC SAVE BNE pS7 INC SAVE+1 pS7 ANOP LDA SAVE SEC SBC dXBYT STA SAVE BCS pS5 DEC SAVE+1 pS5 ANOP INY * Init SHIFT pointers LDA (TABLE),Y XSHFT STA d14+2 STA d11+2 TAX Uses Shape as its own CPX #MIN_SHIFT Mask, shifted 1 bit pM1 ENTRY DC H'2C 02' [BEQ d30] when SELF1MASK * is active DEX Self-masking through bit * shifted shape DC H'24' Skip 1 byte d30 INX STX d8+2 STX d16+2 INY * Init shape Size LDA (TABLE),Y LENGTH STA LENGTH INY LDA (TABLE),Y WIDTH STA dWIDTH INY * Init Shape & Mask Addresses LDA (TABLE),Y Figure # TAY LDX #0 d31 LDA (TABLE),Y STA SHAPE,X INY INX CPX #4 BNE d31 NEXTLINE ANOP LDA #dWIDTH dWIDTH GEQU *-1 STA WIDTH LDX #dYPOS dYPOS GEQU *-1 CPX #$00 Top of Screen dTOP GEQU *-1 BCC d15 CPX #$C0 Bottom of Screen dBOTTOM GEQU *-1 BCS d15 LDA VADDRH,X ADC ADPAGE STA DESTAD+1 LDA VADDRL,X STA DESTAD LDA #$FF dXBYT GEQU *-1 STA XINDEX XINDEX = Screen X-BYTE index * XINDEX of $30-$57 is visible * on screen LDA #$00 Zero shift overflows STA SSO S(hape) S(hift) O(verflow) STA MSO M(ask) S(hift) O(verflow) *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* DRAW_INNER_LOOP ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * Extract color bit (bit 7) LDY TINDEX [XINDEX/TINDEX] pC1 GEQU *-1 LDA (SHAPE),Y [(DESTAD)/(SHAPE)] pC2 GEQU *-1 AND #$80 STA d13+1 Color flag * Extract shape info * (bits 0-6) LDY TINDEX LDA (SHAPE),Y AND #$7F Remove color bit STA d10+1 Shape byte pM2 ENTRY LDA (MASK),Y [LDA (MASK),Y/LDA #$00/LDA #$7F] AND #$7F TAX LDY XINDEX LDA (DESTAD),Y pS3 ENTRY CMP #SAVE [STA (SAVE),Y] EOR #$FF > > > FLIP < < < d8 ORA $FF00,X Shift pointer ORA MSO M(ask) S(hift) O(verflow) ORA #$80 Remove color bit d16 LDY $FF80,X New shift overflow STY MSO EOR #$FF > > > FLIP < < < d10 LDX #$FF Shape byte pE1 ENTRY d11 ORA $FF00,X Shift pointer [EOR/ORA] pE2 ENTRY ORA SSO S(hape) S(hift) O(verflow) * [EOR/ORA] d13 ORA #$FF Color flag LDY XINDEX CPY #$30 pL1 GEQU *-1 BCC d14 Beyond left edge CPY #$58 pR1 GEQU *-1 BCS d14 Beyond right edge STA (DESTAD),Y d14 LDA $FF80,X New Shape Shift Overflow STA SSO S(hape) S(hift) O(verflow) INC TINDEX BNE d17 INC SHAPE+1 INC MASK+1 d17 INC XINDEX DEC WIDTH BNE DRAW_INNER_LOOP BEQ d19 d15 ANOP INC TINDEX BNE d18 INC SHAPE+1 INC MASK+1 d18 ANOP INC XINDEX DEC WIDTH BNE d15 BEQ PREP_NEXT_LINE * * LOOP * * END OF LINE d19 LDY XINDEX LDA (DESTAD),Y pS4 ENTRY CMP #SAVE [STA (SAVE),Y] LDX d11+2 Check shift CPX #$60 If no shift, BEQ PREP_NEXT_LINE Don't draw the bits * shifted out of the byte. EOR #$FF > > > FLIP < < < ORA MSO M(ask) S(hift) O(verflow) EOR #$FF > > > FLIP < < < pE3 ENTRY ORA SSO S(hape) S(hift) O(verflow) * [EOR/ORA] AND #$7F [#$7F/#$FF] Remove color * bit sometimes pC3 GEQU *-1 pC4 ENTRY ORA d13+1 Color Flag [ORA/BIT] CPY #$30 pL2 GEQU *-1 BCC PREP_NEXT_LINE Beyond left edge CPY #$58 pR2 GEQU *-1 BCS PREP_NEXT_LINE Beyond right edge STA (DESTAD),Y Put byte on screen *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PREP_NEXT_LINE ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* INC dYPOS LDA dWIDTH Combines ">AD2 dWIDTH,SAVE" & * ">INC2 SAVE" SEC Does INC SAVE ADC SAVE STA SAVE BCC *+4 INC SAVE+1 DEC LENGTH BEQ END JMP NEXTLINE *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* SET_SAVE_ADDRESS ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* LDY ADPAGE BEQ _1 LDY #2 _1 LDA (TABLE),Y Save address lo STA SAVE INY LDA (TABLE),Y Save address hi STA SAVE+1 END RTS *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* PRE_RESTORE ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* STA TABLE STX TABLE+1 *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* RESTORE_SCREEN ENTRY *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* * REPLACES DATA IN (SAVE) TO SCREEN 1 OR 2 * ENTER WITH 'TABLE'(Z-PAGE) INITIALIZED * 'JSR RESTORE_SCREEN' WILL RESTORE THE MOST RECENTLY DRAWN SHAPE *:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::* JSR SET_SAVE_ADDRESS LDY #7 LDA (TABLE),Y LENGTH STA LENGTH