8L2C)pJJJJ IH(ȱH:=IH[H`@HcH  $ +   I/H`JLNGȄBȄF aK  haaFF  mJm# KKJ UJ )J ۈ) ;J3ȱJFȱJGJKaȄM  aaNNJFLGJL LL L L Ӡֲ筱㮬""C# )ߝ &h)h# )#M8 % ) L"L# )L"K@$+$+SIEVE.8BEM.EMD$$A2E.AUXMEM.EMD$$ERR.8B@$%$%ERR.8B@$,$,ERR.8B@$4$4ERR.8B@$9$9ERR.8B@$9$9ERR.8B@$$ERR.8B @$$ERR.8B@$3$3ERR.8B@$;$;ERR.8B@$$ERR.8B@$$ERR.8B@$$ERR.8B@$"$"ERR.8B$$ERR.8B@$$ERR.8B@$ $ ERR.8B@$$ERR.8B@$%$%ERR.8B@$$ERR.8B$(UNITTEST b$&TETRIS$ERR.8B$ $ ERR.8B$%$%ERR.8B$'$'ERR.8B$9$9KEYS.8Bc$LINES.8BF$'UNIT.8B2$ $ +UNITTEST.8BEMD$0 $0)TETRIS.8B%$0$0A2E.AUXMEM.EMD$0$0(BYTECODE.$0$0)SIEVE4.8BEM$# $#EBVM.SYSTEM$0 $0&EBDISSYSTEM H$0$0&PRODOS"B3!$!3! EBDISS.SYSTEM$0 $0(SIEVE.8BYSTEM$0 $0EIGHTBALL3!' "EBANKL.SYSTEM+:Xq$0$0QUIT.SYSTEM*83!$! /!) BITSY.BOOT0m3!$! /!1 ,BASIC.SYSTEM2(3!$! !8EB.SYSTEMEM7.2z$0 $0$EBVMKS.SYSTEM|? &PRODOS `DaElH$?EGvѶK+`L HHLy XP LM ŠϠĠӠS)*+,+`F)) (*=GJFjJJA QE'+ '== `@ STSP8QSS8 m P o R(8R, )7(P0 ( @C p 8  # ": +# #0 z& #0 y%u# ).#",b=# ) y%ƭ)0I0hx H( , y%Щ ߭#f )  !"#$%&'(LL`BL Lޣޣޣޣޣޣޣޣޣޣޣޣޣޣޣ(C)APPLE xLLM Mh@x8n,,(Lޭ 0J @,,L:$آ <B*IBGF08Lé'+8H <,``h(`@ڍL3HEVhEhH)IWHPHHHAHHHLaVEWLӿ``) \i ᘏi᫫8(`hhh8k-<ʆ>Q=?BC8 é&'112` $+ @+`hh8`8`+ݪ+ݲ+`}+`e`H)hJJh+0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <x0HH1HH "),Z("eem+ȱ+ȱ++ȱ++ȱ+ *+ * *L)`L+ *LI* * L) *LI*8e` ,$`ee` `+ $++ @+` S+( (H(h ((n&/v&(,y&v&( ((n&0(Н` (ɣ`HHHJ)  )hhh y%J(֭(Q(`11J  2LA) (8`rȱȱȱȱ0]cȱ @) w'(j21 v& w&!` (w&v&f(i(w&(g( CBDFGE ) ( ((H(h ((n&$ (,y&n& … (ŅL&JJJJ`Ϡ'8`n&  LDž )Vi()Д (18x&"m11 2H22h2舌x&x&12H)M0 h1020I20h2 `L%12 `_'#L  <8# ȱ)ɀ  )' ` (Xp< 0 8  `0 / X  &/ PV 8 )0`ʎ1x&… (ny&Dž (\%Tv&L4()8= (J 8'v&'w& ((ʎ1x&x&x&3223 '堠خ YYZLYLY@뿭` 8+'#@8` y%MNЩUMߩ  L 5   8 m# m# J LD Qר)ɨ] оȱ ̀𩠙 i ȶ O Ѽ G \ ɟU V@$ C ɛL e '8 Jm ʈ0 q 0`#i% F%Z^^^e-.ـ]!0SB}/BiBB}/ iF12m+ {#  L## b 8#  )ɀ 4,- Ux xxJNxxT) #L# ) "` #L)Ei/ #3  ### # iL Xj 0 "0ӠP׽8H  ): e: y8鰕:Jjjj<)yאi8i;i(*=>hPם8`;Zx3Q`_^]ba`0h)ύh0HHHH " ׍hhhhhddhh .hh8`JIMJAYKERRY&MIKEhB}_ݝ@JJJJq@)@wwȱ@Hȱ@Ah@@dw "Je ) LyL LyJiB J) xNhHHHHL(  ްƠx@BEOD X ް(`( C)CJJJlBJ,~{8{{ L< LnةC8`؍)@ =i){8{wJ ] ؅F L2) P+%J(^ b FإGؐ,` b JHIH I%FHGI ԭJjHIH@=IؙJJ :芙 B묅͚ Bٍ0 S  `H8` `ٍyٍiB0H0FGO h0`שFGBxEDʎ0C ް(`(8`ؑ@`M8`8@ؐʈI묆)NjNjNjN. H͐ B;٭ S*Nۙ۰ڙک `Z8` # `| .| .| .|8۰*J{۩ ٰʊ{|`JJJJ٪ 0ٝ)i `8`Q 鍐{|ʎ BNمFمG < ΐ0 FGLV鮅0 ٭|٭{ٽ8`H8`  ,{ | 8` {| `ٽJJJJ`H͐hn) 谼 ^谷`12)1`0`Ȏi i ٝU`)8`Ϊ` J ;: 4 ܝʈ)٭0و+۝ٹHٹ)۝`H) 8ʈh`ȹٝLٝJFOH &猬`8m0`,0H hi 0PȽΪhٍ0GF8yאFG  ^$0 01 E8`1ݼ00  0ʩ &8D`F` eH)HFȍOHGP %܍&܍ܢ8* J8` [L ܝ? &ܝ:`G8iSFQGR`G܅IH3H ( y )ȱHΪ`Ύ8FeHI >QB;0N [4 \䭐 $H %HFFHGHG 됬`R8` )` ` FHT` b8܅IHHTTЍT  jg@`8 ` ͍% ΍Q8`܅I `Q܍RS5TI0ܢܽ jQ'F* i7efFG (HI uLB܅IS mFIH` ur rN0QR \FTHOFPG 밳OP 밨H%܈E" T)Ia)܍S*܍F'ܮ( I8`FHGH ihGhF܌ բE۽ܕEܝ 밷;< =܅I m>IHHyHȘI 밎Lܝ @d@ l@Ю׍T)mיTʈ@rȱ@dȱ@npqgOyPzT)ȱ@)0 ;-N0 H0 M⭬ih` ; 뮅ٝ٘ 0 W,0 .H hȑNWȮّNW8`ٍّNΪ0NN` `G8`F@ 0 LyK8`; <А L ` N@>T)I38 Nefם`K8`ȱ@Nȱ@O@ ;IiNȽבN)/ȩ/N`@[ WHJjjjhA 'KI؍0JHi  뎅`ةC8` ɺihh8` )?  R   ސ `@Hȱ@IױHXATȱH ɯȩ׍̒5H)/@a)_ .0 :A[8@`,뎒׮Б` R@~@}J@` ߩ%S @ ~`E hhhߢ ߐ( ߐ ߐ ߐ  ޕϭߍLпllll Q)T 22') 9 4HIHI`JKJK`FHIG ( bȢ؝؈JL)eKM`)` J {J͟ 0 ΎJFJL8`JGJ إG`H إG`B F`,H hHB؅F  ؅GxDE؍00C ް(`(8` BLJ  ! BH  9ؙ` N@ TP8`K8`B8` M؈TJJJJحr) ) )Ю ЪGeF $ ᭔` on ,I9XX`) HJJJh`OeNeO࿰ ,9XБO`@ȭ@` ON NJKO`?>х=<<>=?ّ>ILB* DքEF$ L`L뮲HH hFhG܍ݍ 8 `FHGH hGhF`ݹܙ݊`@Bɼ>K@J5 ,9X(K ,XXK تKo`V8`nohh` 0@ tLlL '_̶Xܝ ݝ0̶ȩFG  b 0` d ܅F݅G ` 0 'ͬ d 밽܅F݅G ` 0) ' 'H-r)N 0 efT)@kP8`   BHTHIH uh`yٙ٭yٙ٩`H BeFfG 3%&N   ܮ `J HH B )( ȹ`8m8m@8` `G8`F R N TPr)@N8`T)@J טyרםTT)׍Tef 밑 LȹL@ȅH@IL],0` ND Tוֹ:`@ȱ@ ` NB@8YT 2鮅ٍٍٍtHٍs8ghhTJJJJT)T@` N%I -r) 0@T)N8` @LLu `=@ ȹP8` i` ם0KIJHȢݞ 2魞)Jn 8 ζ ؍ ؍ H8 ع)ꭳJJJJ b Ȣ؝I؈ h(8H h(8Hh(`ؑ@ЭOP 방 [QROPFG \ S嬆؍g؍h؝i ؝d {T) {T u)حN͚ B`H@h`h``N8`  ) ⬆Ȣ؝@ݞ@ʈL x ް(8hFhG`@4͔ L V@Ai ׭2` . #ع؍0 讅)`.@+ i 8` L )߹0 )p )@ = ) Pȩ ؝M0΢L O,G PeNNO (` C  7 2J{HI|HI؊ 7L  ` = H{ ؙؾ ح| ؙIHIhH 7 iع ` i عiعi` )؍0CGHFHBFG؝{؈` ` H h)N@ ; L  $ )dJ ' ) 7H h8` ) s )حJjI|HI{H؊ PLK΢ʱNLMO MІMEKݸP%MEKP/MEK΢LL-M O,Gp莡eNNO(`JNKOL - P L8 < ؑJ`L@ȱ@ `@Nȱ@O`؝}{I{ؐ` ؽ؝{  pJ덦 )@፥NJOK cKK΢΢ IJΦ H DФ̭JjHFIH8HIGxKE ް((H HhH h8`8@ȭ@L묆8NNO 8 ؍JL`R΢ʱLN1MOMEKع+ؠ H  h8` 䮅ٽ ٬ؠ@` ( M )8`)i п` H h)N$% LL L ; LV pCJJJJ֍qQ(`)Cq p"*֭֬)/ )DI@+8`@Ae yUnvgIJK,-NOPQRSu' @   !"#$ Ԡͭ \GQ H ?h8 S / ?8 V []bj \ ^e_f a  i  \ 2EL 0 8`0)H ""H"h8 ek)E/8)٠$ ʮ#Ю#κ ú¬נ(ӶıӮ ԭФcb 0L `L_)_jffigfȱfjbgcL{0g)`J   ( ȅy x)iitȄa`a |R+ ,', ʂ3F/) ޠn iй `jjȰd %i(edde) ɍz [fg `)-f~ 0Ý ~>f  XL eaafʈ   a}a0 Lehɕ7f Uc@bcJbciȅbcLI*E`J Tɛ4iH !حX  / Xߩϝypo)W0 ,((0JJJ Tcb L h"a""az %ac "%(kh dfeg?id0dJJJJ)u(((((%i(d)8V%֌&8V֌֠)HV)hH)hHIhդD?DRIDQD)҅; ?JDQD]ՎՎՎ`MY pӭY)p  ӭp`C)`BFGV 8``8LխӅ:HhHh Ո թ թ ՘VYҪҦ>:Y)Ң`;R?AJ;<ȰY)Ң`Y?)Ң`ȐҰ ;HhHh=Ң`Hh `Hh`DEiȍ0֌1֍ZԍsԍԍԍԥDEԌ8TԌ8WpԌqԠ 7I꽌ɪ꽌ɭ蠪:љVE:8`]ѾV]H)]ѾV]ҙ)]ѾT]ҙ)] >8hUD` ԝY`> Hh݌(`HCJJJJ)*h`0($ p,&"op8`kkV꽌ɪɖxlӽ*kӽ-kәmMlӈ 꽌ɪ`8` *L o % ԽYӍZӭoӝY 3Ѡ шNZ`rZLkӭZӍq8r7IZӐiZkӐk 8 ѹs ӭq ѹ| kн Z)*>>` @ $(,048<@DHLPTX\`dh 0ުlptx| ֽ ְ& .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Ӧ>` Ր+><>=?<>CAB@?A` 1 L  <>`ڢF]PL8i m L   6< L  BLRAM' hLDLHB-9F 3"aɿ LLB Nϰ H  @h( L Lj  @`eLJCAB@=?`HZ; [:HZ"h+h`8h`/Ȁ򈘍` L   `H0H"hHHH HHH "hpHH"VHH; [*i)    +hhHH"""8h/ ʎ S` ?8 r 0 88`  e x[ jc k[oo0 VeHeh eoooo0oo:L5[L5[ jc x[oo0oo:&ooaoog UL5[ x[ jc k[ UU e x[ jc coo O U eoooL5[ jcoooo 譡oo u ڢLC[ qLC[8oo;(oon ک RRoo 7RLC[ c ]+ eLC[ jc x[ooL5[oo0oo: UL5[ x[ jc k[ _ q^) 1P *H U, dd *oo ("n ک RRoo RRL1U 1V UL5[ x[ 1L5[ x[pI x[PIo mooo L5[ + ddЦ ,L5[Sp腈ioñ2ܢo Lkoo$Foo [ c v ڢLl z[ +oooo Lkoo'noooo doooo' v ڢLloo z[ +oooo Lkoo(,oo2 * k [ jc c [ jc [ jc ILl)  z[ +\ [ jc c [ jc [ jc ILlk) { ڢLlk z[ +oooo Lkoo0Noo:> [  v ڢLl z[ +oood [ 2L p ڢLloo(L k { ڢLl k ڢLlk2 * 5!Ll *L 2 *kk dipjp d f1 f1 f1 5!Ll  z[kk z[ipjpkk ckk ) 1 1 1 *kk +L kCee jcoo d coo doo !Uooaoo{L ooAoo[L oo0oo:L  z[PI [qq z[ doo["芠 ),-./FGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxy / X e1 󮠹o&Fooaoo{&ooAL oo[L oo&gooooaoo{&ooAoo[ U k ڢLlm dp z[PI9 z[ di m f U U, UmvmLm, ,`, X,`, ,`, 7 7,0 d$, ,(` jc 1V hc: dрPI c z[ z_ d z[ x[LW[ e fc (Voooo 譡oo u ڢLloo0oo:ooaoogL5[L5[ Tc >V Tc c [ '5 jc k ڢL x[)JJJJȑ c z[ dk" z[ x[ [ k[kLL  p ڢLks. hc z[ / ) B!12JJJ)J (0!! X 0 ,(( () ,a0*ɸ&ɱɛɍɠ ) X e ɛ),a€0:б\0JJJJ`)٠#(  !Š̘LJپھ pHJh` H!h߻g޻tػٻpứ `޻ٻtػp߻8nٻniػtpiٻٻtụs໅o8ễpڻiۻniݻi>j?kܻڻ߻>ٻ׻pڻ׻Ii׻׻߻߻ڻ l 1ڻۻ `>i3Lm8n933LҞAAJL ةޘг uv $ 8LʞeЌ>?@`>?@`Ba8` K  LK ֟ ֟  KK`JJJJ8`轶K)` #hhp@3 @LtJ)s@J f 򟰸 p`H? hth?,E30ɍФ3 E3HD F3 Ʉ%h3 fM E  pLthɍLL3`3,A0s0% Ipn HpnI:L ؅30پھ p WH־Ǿh۰8L־JjjjZ[ɾ)Ⱦ8 AOLӜ ҤLLX>(F`־ؾپھ׾` fɄ KDEF zLp z pL[ fKɍKL?`  zL$݅3`(l8L3LX>(Ƀ,`3,G0]ɾ g` H`پ_پ p _پ׾`>( p۾m׾) W)ʩ@`ɾ>(O puȾ ɾ-O ͱc־JjjjZ[ (`O>0O z PODEF޾ p  ޾ p($ذ z (0 k( L?ԦʚLeةީe s  pL f,FLk,DL,C0$3 >@ Ɉ 3ɾꩈL(3ɾ;Ƀ kB94 l% fʽ  ՚,S` H H06172839h` z97L75v^e ?/( ze?L[LLɍ$?`?e ɍɥAH93827160hH46576879h`,C fL ɍ f ,S0 @ pLޭBYL 8!9 詍` "  4"/pӠàӠΠŠ۫ӠàԠŠ13456789:;<=>?@ABCDEJJH !h穖tp% ;"Z/݀>">"' 1" 7"5).莀/ ;" " 6" >" 1"6"$ "g"" !"""""IջLLG ASTARTUP$#   / XXύX?klmnÍoL) "6L'?"( L:0`6708" = ***)< ԠԺԠԠúԠϠѺԠϠӯ(>?Ek?!>Q>>>ڻۻ `` `>ڻ ۻ `e>>?ܻ?ܻ>?Emn(>e>ܻȱ>e?>Q>ؠ> ie>>?`׻;ػ=:<ٻ:<=;`׻׻mػ;>:8o>oȑ>ppȑ>> :oݻp` HKpn͵ @p;=po:S ST$I2 U)VJ :T)`l8`a HbIJhjǾȾɾ p٭b=a<I/q)im@^ʈ0 L/S 51-m@ʈ0 L٨/` E չ5L/A2ʩJ -V HrTJ6LGSL )AJ E @V n k38`J" Hʩ V HЧ H HЖabT)!J B8`@U)9VJ T)h*I/W)󩭙L=id =`H) +hJJJJ ɺi` [  ` . 8  `O`S  )AI-LG B C VW>m⻑>` !im8i仍nj廍ki滥lj绥oi>?Ek?>Q>> L>ܻ `/ e>>?ܻ?ޱ>Ƀ B ,  W ` z])Y 񩢍`Ⱦɾ0Ǿ p) : z6 E= =& =8Hh =` 6Y׾ؾ+پھ p|پɾʾ`HV)jh츾$-#㻍Ͼ p о־޾Ǿ` 8` 8`ɾ)ɾ ɾɾ0miȾ p pY)`lP *,N!ǾȾɾʾ pǾ~H kh8`8`,C k  8` Ⱦ㻍ɾM$ mHc z[ [ [ k[ Z0 p ڢL z[)U& z[ z[ MUqHqhi z[ z[ MUqHqh k[@ c z[qHqh c z[qq eL1U Tc fc{r|rzrsipjp 5?UpkkkkW dk  hc: w x[ [ k[ dkL z[) hc wآ6 Gة hc z[ w x[ [ [ k[  Gآ# GؠA*k% x[ [ [ k[ z[ @L z[ @LLkL x[ [ [ k[L GL z[ [ k[ wؠLkL GLk x[ [ c z[ @L x[ [ c z[ @L z[); z[ x[ [L z[ x[ [ k[L z[ x[ [L z[ x[ [L #LLLLL[^)o `\o8` ԠŬLL,~z @`$仫@v$⩔,C[B?I>孓`仫6VtCicQĿUKqtVt Nʮq$6,⨁ K6, VtI=v!gNVt Vt  lg~Tһ   LiLMTRӱüϠž(+@ABCDEFGHIKLMNPSV     T[fouu~ՠٯ* PWN*]ĿNTz @n6VC/+A>@I5gN Oz @n[Dz @nd0PENWRITEXECREATEFRESTORENAMEBRUNLOCKCHAIN#FLUSHREADPOSITIONOMONPR#PREFIXCLOSEAPPEND Hѫ5 FڬB :hQ|Q@@ -!S    !C- !ABELSDFRV@@ !$(19@E ۭ (8 mȾȾmɾɾʾiʾ` Lpl8l:/0sНsƬƀ#(ZZV4G_0=( A P FjL\5p-e9ABSAVERIFYBLOADELETEBYECATALOGOZ}ȾȾ󰹩 p` ־ǾҾ,G 8`׾ؾ ж p ධۥs׾tؾE` ( о(־Ǿ,G 8`_`W)H־JjjjhZ[ p̭ зLKǾ  . .8  ȾɾʾNfne }ȾȾI > Ie f`8` P־ǾҾ,G0C ж=W)_`ZV"׾پӾؾھ pD`Y׾ؾOW)Ⱦɾʾ pD`8`W)CB) 5W) )W)@! p:`V)R ޾,N0MHhHh p' P,N HCNh`M`M N `޾Lp h־Ҿ,G0^W)TP) ecfdپھ׾ؾӾ p$c d pccddީ 8` jЭW)`_ 㻍Ͼ pH Ph8`jGM㻝ﻭоM  GY):_Z`[蹀[:`V)8`MN; Ҵ;`;C Ҵ N8` YG)̀#:Z[蹀[Ǿ ph㻍Ͼ pH Ph8`Ͼо־ǾҾ_` [Ӿ pW) LC`C N `9V) ` V) ޾ p` (8` 8`8`(W)`_V)Ij!؍Í`_ ek. RRkk ckk ){opo  dk k)kk m[kkipjpk k x[1 LC[khYh 7Ripjp kR RR?UpzrkLC[ e 3TL0!oooo 2oooo L0!oooo 譡oo;𾭡ooL0!oo d O dzrk ɫ^ȱɬRȱɭFȱɳ:ȱɴ ,ooooLoo;L d CLL0! z[ V `i먊ik d k[ emoomooooa z[{ z[A z[[ z[0 z[:L#D z[[6 !U z[] !UwL)oo z[ipjpwL)oo) z[ipjpwL)L%k z[rr z[)L' cXi jc 3e& cdi jc 3ewL) !U z[ wL) [q8  [q jc z[ dq !U` z[ !U z[  cm jc( JL(  !U z[( m ک( RRL) !Uoooo ( 1 z[ipjpL)k3rr d f1 z[ f1 k G؀: x[ k[ d%k G؀! x[L1 z[Ҁр [ dL1k. GL1 z[Ҁр [ dL1k/ GL1  dL1k0 GL1 dL1k2 GL1 x[1H1h dL1k3 GL1 x[Hh dL1k4 GL1 x[QHQh dL1k c z[ c] dL1k# GL1 x[qHqh dL1k$ GL1 z[8Hh dL1k) GL1 c z[ Z dL1k* GL1 z[ҀpI * dL1k+ GL1 z[ҀPI * dL1k, GL1 c z[ [ dL1k- G/L.L.LE/Ll/L/L%0CvL-IL.L<.La.L.L/L/L/L 1 c z[  dL1k% GL1 c z[ z_ dL1k& GL1 y ڢLW[ c z[ V dL1k' GL1 y ڢLW[fФ0f hcoo Z L5[rqfƪdL5[ Tc Tc1f hcoo ZL5[qrfŪdL5[ KV * hc ]+ jc z[pI  z[PI0 ULM0 ]+ d z[L 1L.LSpo` jck hc z[ wL5[Tp iio x[Tpj کVp jc [TpL5[k`TpVp jc [TpTp iioLm[ (V TcoobRf hcoo Z+fdoo腈 łL5[rqjc x[L*2L*b^ZVRNc_VRghA=/+'#$ &"(.%= L5[ L5[ L5[L5[L5[L5[L5[L5[L5[L5[L5[L5[c L5[ TcSpoSpj کVp jc [SpL'[SpVp jc [Sp! z[ipjph ڢL1U jck Gآ> GL)Up jc( x[ MUiӨio k[ Up$ U x[@PI0ʩi ڢ 5[L5[ z[kk [= x[ V MUiӨio c z[ V MUiӨio k[ F 5[L5[ Tc{spptpxpypupȱvpwpsp $mLC[ jpL)kL(= hc wؠ z[]p^p VȊ z[ ȑr rrr z[ Ȋ z[rrr r  z[rrZ hc wآ G؀Eoo f1 z[ m[kkipjpkk ckk ){opo. z[ m[ dL z[ [ [ c fc z[ [ k[ i68 Tc [  z[ipjpwL) Gؠqoooo 歡oo,oooo  !U z[ wL) z[,L"L"oooo ) 1 z[ipkk m[kkipjpk kL5[ jc 1Vrr2 c c 3e z[ x[LR[ x[ m[ dà z[X}r~r2 c c 3e z[ x[LR[ x[ m[ d x[-жLR[LR[kplp}r~rrrrr` jc hc_p8ap`pbp z[ MUeHeh wآ GL5[ jc hc_p8ap`pbp z[eHeh wآ GL5[ jc rV Tc: Tc c [ '5 d l ڢL< z[PI o ڢL< dL7kL7 `2 d z[ [ L<{ooAoo[LCoo0oo:LC z[PI  [qq doo[V-kk [ 2kkLFkk [ 2 LFoooo = 1LF 1 1 1` Tc e fc Tc Tck Tco oMooaoo{&ooAoo[ U]k ڢLF z[PI9 z[ diee jcoo doooofooaoo: Up [ MUiӨio k[zr`Up [ MUiӨio k[ e ڢ`kLBUp [ MUiӅio Up [ MUiӨio c]p^p ڢUp MUiӅioBUp MUiӨio c]p^p ڀUp [ MUiӅiozrk!1 Gح]p^p f1; hc w؀zrzr f1 f1L'[Up [ MUiӨio k[ e ڢ`kqUp MUiӅio]p^p蒈9 hc wآUp [ MUiӨio c]p^p ڢUp [ MUiӅio`Up [ MUiӨio k[ ">x >o z[ c z[ [ [ k[ Z0 p ڢF! z[ MUqq z[ z[qq L1U Tc) GL'[ Tc)  GL'[ Tc) hc z[ wLC[ Tc)  hc z[ wLC[ Tc f1L@k1k x[ [ c X>L@ x[ [ c 9>L@ x[ [ z[L@ x[ [Ly@  p ڢL@ x[ [ k[ dk{ Gؠ hc wآ6 Gة hc z[ w x[ [ [ k[  Gآ# Gؠ"k x[ [ [ k[ LH[ Tc GL'[ Tc GL'[ Tc) hc z[ wLC[ Tc) hc z[ wLC[ jc KV Tc c [ '5 jc k ڢL@ x[)JJJJ x[)ȑ x[) | ڢL@}  p ڢrr [rrr rrrrȭrrrrr}r ~r r}rr~r`rr [ crr jc :kplp z[8rHrh 2 z[ȑ}r~r z[rr{r8{r|rrr}r~r x[- x[rr x[ m[ d z[ c c re z[ UU MU UU z[Hh z[ȑr rrr z[Ȋ z[rr}r ~r z[}r~r z[rrL1U{r|r `2rr jci jc rerrrrȑȑ 歡oo,oooo (! z[ MU qq z[ z[ qq !ULi:-  !Uoo" o7o2} ڢLLFLF: 1LF Tc [ LFkk [ jc c [ jc [ jc I} )ʩʩ f1k> [ jc [ '5k f1 Gح]p^p f1 z[ f1ipjp f1oo f1 z[ f1 z[ f1L1U jcipjpkk' z[ ݉LR[ (V TcɁ VL5[L5[ (Vɛ L'[L'[ Tr:`9l Ldil`rrw2raR+ b TLH[ȑ 4`Ldrr`r -a T:`r$ RRJJJJ) R RR) R RR x[ d) R RR) R RRL5[ Tc$ RRJJJJ) R RR) R RRL'[ Tc (V Tc (V fcqHqh jc c z[ 8qȱ,р"qHqh V Ѓ VqqpzrLuQn.kLuQn vLuQn ۢ 4kLuQ jc hc c z[ e PfL5[ Tc hc [ jc PfL'[ jc (V' jc Tc c z[ e0 [ RR c z[ Af d c e dЫ0 RRLR[ Tc Va0 [L'[ jcg 7R dŢg V ,g 7RL'[g 7R~g 7Rkplpmpnpopppqprp ީ)g 7RVp ]d h 7RTpSp2 *k> RRkn jc bSk fy˩onokkipjp    RR|ii 7R?UpzrUp? i ک?Uɷ x[ɗ x[LM[ooȱ ; x[LM[qLOdLM[oooo 譡oo*oo;`n ک RRoo 7R`` (V A{r|r?Up}r~rrrrrkkkk U dUg 7Rz[}r~r z[rroooo 譡oo,L:LL2L 1 q ڢ L1Ukap_pbp`pk [= hc: wآ )` Tcag a V [0 VL'[ XV*LdP `i먊ik d k[ eoo jc z[ c 3e^ x[ z[ [ jc k[ [ z[ [ jc k[ e z[ m[ dТ  `2 d [ c [ jc re z[  z[ȑ z[ [ [r rrr z[Ȋ z[rr}r ~r  [q jcoo dqooo ojooaoo{ooAoo[LLoo0oo:LLoo[-oooo]oowLPOrrP z[-8 r x[rr < Gح_pap`pbp( 1 LSOoooo 譡oo)LFOoo jcXi jc 3e *oo jcdi jc 3e wLPOmoo oooo  [q8!  z[] !U !U z[ hc z[ Z z[ҀLM[ z[ LM[LM[ ekLNOkj 7Rm 7Rj 7R 3 d jcm jc re x[]pȭ^p x[ ȑr rrr x[ Ȋ x[rrr f1ipjp f1 z[ f1LC[Up [ MUiӨio k[ g ڢ`k?9 hcUp [ MUiӨio k[ wآUp [ MUiӨio c]p^p ڀfUp [ MUiӨio k[EH9zr9Up [ MUiӨio cUp MUiӨio k[ Fc  1 1 1 1` Tc!UiӨio k[ Z0LI$Up MUiӨio c k[ e!Up MUiӨio k[rUp [ MUiӨio cUp [ MUiӨio k[ F 1 1 1 1 1LC[ Tc f1k-cpdp f11 Gح]p^p f1; hc wآ+zrzr Gآ GآUp [ MUiӅio   hcUp [ MUiӨio k[ wآ! Gآ GآUp [ MUiӅio  hcUp [ MUiӨio k[ wآ* Gة; hcUp [ MUiӨio k[ wآ Gآ GLI cUp [ M4ip8ipjpk kc kk ckk ) x[ooLH[ 1V TcUp [ MUiӨio k[)%khUp MUiӨio k[ k[GUp [ MUiӨio k[1-k$Up MUiӨio k[ d f ڢLC[kLH Gآr`rHqih`qHȊqh`Heh`2H1hL0U &` & & & &` .[H)8hɀjh`hɀ`ihfj```ll jcll jcLP W0 a 4m aLTLMTIHIh`kLl`I` ej8`8`8`8吰`Ɓƀ`8`Ɓ`8`Ɓ`8`Ɓ`8`Ɓ`8`Ɓ`8`Ɓ` d fEL&``rrI jc hc 4`,m-m01*m P^H,m-m Uh.m/m #kHrr X fkh``)  TMT`@ʩ220` .[ .[LWrrrrr TmL rrr`LTȥȺ芑hhHHLd &` .[ &`` .[H)8 h `h``ih &`FjFjFjFj`HhL5[Hh` V z[ VȑȥHhL1UHhL5[ƀ`Ɓƀ`H8Ɓh`Ljc8ƁȊ` dR5m)H0L-dr$ K 7)  捥Ŋ֦䋐`L z[ U%H%h e z[ee V m[ d jc8H噪h d e d7 z[+ z[ȑȊ [ X z[ d8H噪h V dL z[8Hh4 z[ȑȊ [ X z[ eJ Wr`7mLXr̢LTm amΔ`2vk `wk` jc eV jc jc jc  z[L.cȱ c e @U z[L.c z[ qHqh [ z[L.c c z[eeee*` & &eHeh`IiHIih` 1U4m  H[LMTH6m [ jc jc Cah .[ .[ )W3rr)-mmr TmG)G WH ahLT7mrrȢ Tm߮r5m) rrТ Tm H ahв4mJmrȑh [ȑL]eHeh jcrr ] u] jc ] ] ]L] ]mrHmrh ] ]`. Ac&Ff eHehfjffꥎ`L_L_ AcF eHehfjf쪥`Fejf` & & ]) ]rrr)ɀ#@ Рr ]mrrqL]rqHrhrkmȱlm u]r jc ]rpkRȄ ]CAƘ ]%) ]" ] ] ] L^Ƙ ]L^L]L]rmrrmrmrH` .[Ff 扥eeȑL.[ d f$L&``Ljcr`93`` u]r jcrr jmrrr`rH X ]h` V ]iL]e扦llL<\8刪ȱ剰@ȱȱlele ll`llllL\SO L\llȱ ȱL\lȱlL\8刑ȱ剑eeȥȥi `i`L[L[L[e````L1UL1UL1UL1UL1Uj)```` ZL[eHeh` .[ȅȅȪHH`*`$`0`` ```_iŋ7qȱqȱȱ ȥȥ`ll`ȥȥȥȥ`rr)  TLR[) jc c c z[ z_  z[ L1U Pfrr Х jc z[ eLR[ ZL[恱8 i `PIll``llȑllll`ŋ%ȱᑊllLYee@ō<qȥqȱȱ ȥȥLYllLYȥȥȥȑll`eȱe; H[ x[LsXr,Hiȱih8 c mr jc z[ errLR[`Ƌeelel`lll lBleȱel+l&llll l`LU 4m`8`A e/;60rrrŢ Tm*)/ȑȄ8吰Ɖ A@A (V`BL1U jc VT  T`LsTrr))  TLsX))莔r hc c c z[ z_ АHȊhL5[`II .[ .[ъ```II .[ .[ 󥊦`8IrHIqhL0U8IqHȊIqh`I8eƁ` Ac f`&*&HŎ叐hHh䅈`&*Ŏ悈` Ac f` d_5m)U0$5m)@rѢ TmD΢ Tm;4mL-drr  7ƋLPdLMTLTm 9`^/%*+-><&|!=!><&|<>====&|<>-+!~*^ m[ d~ LH[ c c 3eР z[ c z[ m[ ڠ z[ m[ dЖLH[ Tc? RRe V MUiik k[ 7RL'[kp8Hlp阪h` `mp8opHnppph``8qpHrph`` jc z[mgpHmhph8HPh jc [ jc z[ z[ d 4epfpepfp jc z[ 4m]p]p^pLR[m jcepfpepfp jcC/epfpepfp jc z[ d 4]p^p x[лepfpepfp jc 4]p^pL5[ KVrr\rr d x[ 6 d x[ kR dkk ckk ){p 7R RR Ukk m[kkk kЉLR[mpnpopppqprpkkkk` jcepfpepfp jc 4]p^pL5[ jc jcepfpepfp jc 4epfpepfp jck ckk ) d cȹ{p Z7 x[i{ip jc hc hc[p\p SZ d` Uj jc hc hc[p\p SZ !U1kk m[kkk kL֭[p\p Vi 7RLH[[p\p Vs ڢLH[ jc hckkkko x[рJ x[8񀅐8 Hh V d I8qȑ qL1ȱ'n ۢ 4n vۢ UDs ڭ[p\p VW#mm vۢ U LԠLԭ[p\p V x[ kRȢh 7R L1U KV ԪL׭kkkkLZע dkd c hc8 hc[p\p W ds ڭ[p\p VL֠  d z[ !Uq рLՠ m  m Lթn jcm jc re n р- 8 Viim jc m d qDZiim[y߅ ,`L  m`m`3`6n-nmn Tcm jcPhGh 7R x[ 7R: RR !U x[ x[m dnm cih W[p\ps ڢLC[LC[ XV Tcm jc fc fc ԪL 5 ةm d m `LLdLdLdLdLdLdLdLdcbmrm r`8`L8ll`;nLl`vmmLoVmmst U m,,CnpihRi$iiijiiii8hiiihiCiiFiiihhhwh}hiijjjiii jijlllrrrllllmm @emdrrk ȩ [k [kLm`m` mrr`o65 %' (+/@BCDEFG HIJKMNPRSUVa@iith+iihhi hvihhghi*hbhhii^ih4h8hhijh>hh9id:r [:a*^ ']PPPP  @PPPP  ars kbd.lnBlk2: endsubno forkbd.chno subAux: pr.msgno ifendifBye! pr.chword div/0byte clearpr.nlextra err stackredeftype----mode... callfreeBrk elsesub quitvarscompbytefilewordlinkrunnewendarg / OK :c:i:l:w: subNo aux mem! expect varexpected bad line#not constpr.dec.sReading Writing Brk at bad expr err at no whileendwhileRestart too longbad dimbad idxbad strcomplexbad valbad num lines pr.strfree: Blk1: pr.decpr.hexreturnendfor v *** (C)BOBBI, 2018 *** Unable to load EM driver a2e.auxmem.emd *** EIGHTBALL V0.78 *** Licenced under GPL. source,bytecodeFree Software. lists,linkage a2e.auxmem.emdNo mem (2)! No tgt mem! No mem (1)! ran into d jc z[ d 4 c z[ 4LW[epfp jc KVgphp dȹom RR ԩi 7R, z[ D4{p d jc hc hc[p\p SZ !U z[рŭ[p\p VLR[ jc m3 jc c z[ e 3 e x[ c z[ r4 c z[ e d x[kk m[Ȋkk x[Ȋ x[kkLH[ jc m3 jc c z[ e 3 e x[ c z[ r4 c z[ e d x[kȭk x[kkLH[ jc x[8Hh jc fcipjp z[рPILW[kkkkL ݠ z[jpVipQ x[k .8ʆ &ii %0Ơe`8ʆ &iieHeh腫8ʆ &i8`梥eHeh腫8ʆ &iƠe`8梥eHeh腫8ʆ &ii . %0e`8ʆ &iieHeh腫 .8ʆ &ii %08`梥eHeh腫8ʆ &ii . %0`梥eHeh腫8ʆ &ii . %0e`8ʆ &ii8ʆ &iieHeh蒂`ʆ &ii %0Ơe`8ʆ &ii8ʆ &i8`梥8ʆ &iƠe`8ʆ &iieHeh腫 &ii %0`梥8ʆ &ii . %0e`8ʆ &ii .8ʆ &ii %08`梥 .8{}~ . %0e`8ʆ &ii8ʆ &ii . %0`梥8ʆ &ii . %0e`8ʆ &ii .8ʆ 5 1 % R%, F%o5U5L5, ,`, X,`, ,`, 7 7,0 d$, ,(`1 ! "x2 ! " "32 ! $" "ddaɨ欀L梥8ʆ &ii Loading ... k: s2lm<=<`)_ `F | " H "h  " eu... File Not Found... Error $ - Press Any Key L !8   ! " "! " LB !LB !lt mnL kRi 7R V kRi 7Ri 7R [ kRi 7R p kRg 7R2i 7R u kRi 7R kRgL7R x[ RR x[ x[ RR x[)[ RR x[ [ [ k[ kR] RR RR x[)wb RR x[) c RR RR x[)+ x[ x[ [ k[ x[ [ kR RR x[ m[ dLzL5[עh 7Rޢh 7R C k m[Ȋkk m[kkkk m[kk e"kk dkk m[kkipjpk kLLW[LW[ jckk jc z[ e 3 ekk c z[ r4L5[}r~r jcL x[ x[ RR x[ x[ RR x[ʆ &ii8ʆ &ii .8ʆ &ii %08ʆ &iiȥ`栢8ʆ &ii .8ʆ &ii %0`e8ʆ &ii .8ʆ &ii %08ʆ &ii .8ʆ &ii %0`Ơ`栢8ʆ &ii .8ʆ &ii %0`8ʆ &ii . .8 &ii w0 &8ʆ &ii!8ʆ &iiƠ`8ʆ &ii8ʆ &ii $`8ʆ &ii .8ʆ &ii .8ʆ &ii 8ʆ &ii .8ʆ &ii .8ʆ &ii L+ %0Ơ`8ʆ &ii8ʆ &ii#8ʆ &iiƠ`8ʆ &iii 1 %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &ii 1 %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &ii % %0Ơ` .8ʆ &ii 1 %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &ii 0 %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &i`8ʆ &ii .8ʆ &ii .8ʆ &ii "1 %0Ơ`8ʆ &ii8ʆ &ii R+`8ʆ &ii .8ʆ &iit(status) w2=w2+10 status=(w1==10)&&(w2==110)&&(w3==50) call expect(status) w2=w1+10 status=(w1==10)&&(w2==20)&&(w3==50) call expect(status) '------------------ ' Byte variables '------------------ pr.msg "Byte vars:"; pr.nl byte b1=10; byte b2=100; wor'----------------------' ' Eightball Unit Tests ' '----------------------' word status=0 '------------------ ' Word variables '------------------ pr.msg "Word vars:"; pr.nl word w1=10 word w2=100 word w3=50 status=(w1==10)&&(w2==100)&&(w3==50) call expecii w0 %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &ii * %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &ii 0 %00`8ʆ &ii .8 %0`8ʆ &ii .8ʆ &ii .8ʆ &ii $ %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &8ʅ`8ʆ &ii8ʆ &ii8H妪h8ʒ`8ʆ &ii8ʆ &iieHeh蒂`8ʆ &ii . % . 0Ơ`8ʅ8ʆ &iiƠ`8ʆ &iieeƠ`8ʅ腈8ʅ . 0`e椥ii %0`e栥8ʅ8ʆ &ii . %0`栢8ʆ &ii . %0`8ʆ &ii8ʅ腈8ʅ$ %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &ii [, %0Ơ`8ʆ &ii .8ʆ &ii .8ʆ &ii 1 %0Ơ`8ʆ d b3=50; call expect((b1==10)&&(b2==100)&&(b3==50)) b2=b2+10 call expect((b1==10)&&(b2==110)&&(b3==50)) b2=b1+10 call expect((b1==10)&&(b2==20)&&(b3==50)) '------------------ ' Word arrays '------------------ pr.msg "Word arrays:"; pr.nl word wpre=0 wor==&warr) '------------------ ' Call subroutine '------------------ pr.msg "Call sub:"; pr.nl call gv1() call expect(iw==987) call gb1() call expect(ib==$ae) call gwa1() call expect(warr[3]==1234) call gba1() call expect(barr[7]==$34) call c1() call exbyte buf[100]=0 while 1 kbd.ln &buf,100 pr.str &buf pr.nl endwhile byte key=0 while 1 kbd.ch &key pr.msg "You pressed ["; pr.ch key; pr.msg "]"; pr.nl endwhile end f iw==123 ib=1 else ib=0 endif call expect(ib==0) '------------------ ' Pointers/Addresses '------------------ pr.msg "Pointers/Addresses:"; pr.nl word ptr=&iw *ptr=9999 call expect(iw==9999) ptr=&ib ^ptr=73 call expect(ib==73) call expect(&warr[0]=1 endif call expect(ib==1) iw=124 ib=0 if iw==123 ib=1 endif call expect(ib==0) '------------------ ' If/Else/Endif '------------------ pr.msg "If/Else/Endif:"; pr.nl iw=123 ib=99 if iw==123 ib=1 else ib=0 endif call expect(ib==1) iw=124 ib=99 ipr.nl sum=0 iw=0 while iw<4 sum=sum+iw iw=iw+1 endwhile call expect(sum==6) sum=0 ib=0 while ib<4 sum=sum+ib ib=ib+1 endwhile call expect(sum==6) '------------------ ' If/Endif '------------------ pr.msg "If/Endif:"; pr.nl iw=123 ib=0 if iw==123 ib-------------- pr.msg "For loop:"; pr.nl word sum=0 word iw=0 for iw=1:3 sum=sum+iw endfor call expect(sum==6) sum=0 byte ib=0 for ib=1:3 sum=sum+ib endfor call expect(sum==6) '------------------ ' While loop '------------------ pr.msg "While loop:"; ii /Ơ`8ʆ &iiƠ`梥`8ʆ &ii$8ʆ &ii梥8`梥8ʆ &ii &ii8ʆ &ii =%`8ʆ &ii8ʆ &ii8ʆ &ii /Ơ`8ʆ &ii8ʆ &ii8ʆ &&barr[1])==3) call expect((bpre==0)&&(barr[0]==12)&&(barr[1]==12)&&(warr[2]==12)&&(barr[9]==12)&&(bpost==0)) barr[1]=123 call expect((bpre==0)&&(barr[0]==12)&&(barr[1]==123)&&(warr[2]==12)&&(barr[9]==12)&&(bpost==0)) '------------------ ' For loop '----rr[0]==12)&&(warr[1]==123)&&(warr[2]==12)&&(warr[9]==12)&&(wpost==0)) '------------------ ' Byte arrays '------------------ pr.msg "Byte arrays:"; pr.nl byte bpre=0 byte barr[10]=12 byte bpost=0 call expect((&barr[2]-&barr[1])==1) call expect((&barr[4]-d warr[10]=12 word wpost=0 pr.msg "Size of word (4 for interpeter, 2 for 6502 & VM): " pr.dec (&warr[2]-&warr[1]) pr.nl call expect((wpre==0)&&(warr[0]==12)&&(warr[1]==12)&&(warr[2]==12)&&(warr[9]==12)&&(wpost==0)) warr[1]=123 call expect((wpre==0)&&(wapect(iw==555) pr.msg " Recursive:"; pr.nl call recurse1(5, &iw) call expect(iw==120) '------------------ ' Subroutine params '------------------ pr.msg "Sub params:"; pr.nl warr[0]=100 call pw1(warr[0]) call expect(iw==200) barr[2]=10 call pb1(barr[2]) call expect(iw==20) warr[0]=10 warr[1]=20 call pw2(warr[0],warr[1]) call expect(iw==200) barr[0]=10 barr[1]=20 call pb2(barr[0],barr[1]) call expect(iw==200) warr[0]=500 warr[1]=750 call add(warr[0],warr[1],&iw) call expect(iw==1250) warr[0]=500 warr[eƠ`腈8Ƥ . 08Ƥ8ʆ &iiƠ`梥梩腈8Ƥ . 08Ƥ`椥.msg " FAIL " endif pr.nl return 0 endsub d addr=&xx ^addr=123 if xx==123 iw=1 endif return 0 endsub sub gp1() iw=0 word addr=&iw *addr=5436 if iw==5436 iw=1 endif return 0 endsub ' ' Utility subroutines ' sub expect(byte b) if b pr.msg " Pass " else prword loc=0 loc=4 iw=iw*loc return 0 endsub sub lb2() byte loc=0 loc=4 iw=iw*loc return 0 endsub sub lpw1() iw=0 word xx=0 word addr=&xx *addr=1234 if xx==1234 iw=1 endif return 0 endsub sub lpb1() iw=0 byte xx=0 work, even though ' recurse2() works fine?? sub recurse3(word x) if x==0 return 1; else return x*recurse2(x-1) endif endsub sub lw1() word loc=2 iw=iw*loc return 0 endsub sub lb1() byte loc=2 iw=iw*loc return 0 endsub sub lw2() rn x*x endsub sub recurse1(word x, word addr) if x==0 *addr=1 else call recurse1(x-1,addr) *addr=*addr*x endif endsub sub recurse2(word x) if x==0 return 1; else return recurse2(x-1)*x endif endsub ' Why does this not wor1(word val, word addr) *addr=val return 0 endsub sub ppb1(byte val, word addr) ^addr=val return 0 endsub sub c1() call c2() return 0 endsub sub c2() call c3() return 0 endsub sub c3() iw = 555 return 0 endsub sub sqr(word x) retundsub sub pb1(byte xx) iw = xx * 2 return 0 endsub sub pw2(word xx, word yy) iw = xx * yy return 0 endsub sub pb2(byte xx, byte yy) iw = xx * yy return 0 endsub sub add(word a, word b, word sumaddr) *sumaddr=a+b return 0 endsub sub ppw gb1() ib = $ae; ' Set global byte return 0 endsub sub gwa1() warr[3] = 1234; ' Set global word array member return 0 endsub sub gba1() barr[7] = $34; ' Set global byte array member return 0 endsub sub pw1(word xx) iw = xx * 2 return 0 elb2() call expect(iw==123*4) call lpw1() call expect(iw==1) call lpb1() call expect(iw==1) call gp1() call expect(iw==1) '------------------ '------------------ end ' ' Test subroutines ' sub gv1() iw = 987; ' Set global word return 0 endsub sub should. iw=recurse3(4) call expect(iw==24) '------------------ ' Locals '------------------ pr.msg "Locals:"; pr.nl iw=123 call lw1() call expect(iw==123*2) iw=123 call lb1() call expect(iw==123*2) iw=123 call lw2() call expect(iw==123*4) iw=123 call '------------------ pr.msg "Invoke func:"; pr.nl call expect(sqr(10)==100) pr.msg " Recursive:"; pr.nl iw=recurse2(4) call expect(iw==24) ' TODO: This is failing in the compiler where it returns 1 ' But it is okay in interpreter where it returns 24 as it1]=750 call add(warr[0],warr[1],&warr[2]) call expect(warr[2]==1250) word a1=&iw call ppw1(2345, a1) call expect(iw==2345) call ppw1(2345, &iw) call expect(iw==2345) word a2=&ib call ppb1(110, a2) call expect(ib==110) '------------------ ' Invoke func `8ʆ &ii $"Ơ`8ʆ &ii "Ơ`8ʆ &i "Ơ`78 &ii . %0 "8ʆ &iiОƠ`梀腡 "`栢8ʆ &ii . # %0`8ʆ &ii .8ʆ &i #8`dPd ii2 % %P .dТ1 Hh4 w)ȑȊ -) ,' w) 0 k% w) k%ȑȥHhL$HhLF)ƀ`Ɓƀ`H8Ɓh`8ƁȊ` N/R5)H0L_/t5$ K 7h ) w)Ll. . w)ee w) =%%H%h %0 w)ee k% j) 0 .8H噪h 0 w0 07 w)+ w)ȑȊ -) ,' w) 08H噪h k% 0L w)85) x5y5Т 65 H A,hв5JJ &t5`5L,'x5̢L65 A,5Δ`ȊL$2݇2 `2` . % . . .  w)Ll.ȱ . 0 $ w)Ll. w) qHqL+ .F eHehfjf쪥`Fejf` )L)IiHIih` $5  Y)L$H5 /) . . ,h ?) ?) d&3x5y5)-L5z5 65G)G &H 9,hL$5z5{5Ȣ 65߮|54e4e 44`4444L*SO Lc*44ȱ ȱL*4ȱ4L*8刑ȱ剑eeȥȥi`. .&Ff eHehfjffꥎ`L+恱8 i `PI `e````L$L$L$L$``eHeh`*`$`0`` ```_i扦44L*8刪ȱ剰@ȱȱȱᑊ44L(ee@ō<qȥqȱȱ ȥȥL(44L(ȥȥȥȑ44`eȱe;ŋ7qȱqȱȱ ȥȥ`44`ȥȥȥȥ`` $` . $  $`L,$`Ƌee4e4`444 4B4eȱe4+4&4444 444``44ȑ4444`ŋ% ~) . .  ʊHȱhLT) 5`8`A 0/;60x5y5z5Ţ 65*)/ȑȄ8吰Ɖ A@A {%`BL$)` &)` &)` &)` &l44 .44 .L! N&0 A, 5 9,L$L$IHIh`2L4`I` e28`8`8吰`Ɓƀ`8`Ɓ`8`Ɓ` )L))  $`L!% . 4/ {%))T) )ȢA .L8) $t5:`94 LJ/i4`r5s5w2raR+ b $LY)ȑ `+LJ/r5s5`t5 k, $:`u5v5`rHqih`Heh`2H1hL$``JJJ) " ") " "L8) . {% . {% .qHqh . . w) 8qȱ,р"qHqh d% Ѓ d%qqLc) {% .Ɂ r%LF)LF) {%ɛ L8)_0 11LF) . . ~) . 11L8) . {%' . . . w) 00 /) " . w) "1 0 . 0 0Ы0 "Lc) . r%a0 /)L8) .$ "JJJJ) " ") " " u) /) " ") " "LF) .$ "J! . # _0 .o2 @0e2 ! !}2 ! .2 ' 0< %腡 . 1 . " & %Pd "L^) 2 !U2 !E2 ! 2 !  U A ` . . . w) )  捥Ŋ֦䋐`L$HhȵHh`` ?) ?)LN&x5y5z5{5|5 65L t5}5~5`L$ ?)H)8 h `h``ih &` ?)H)8hJ`h`h`ihFj`FjFjFjFj`HhLF)Hh`HȊhLF) ?) ``8IrHIqhL$8IqHȊIqh`I8eƁ` . 0`&*&HŎ叐hHh䅈`&*Ŏ悈` )L @  w  \mm  Umm H L-  w  Umm iQi @ w  w -  H mmо" T w  UmmF+2.* & " 9;= CLO L   H    H  w  cmm iQi @ w  \mm  Umm H   | C, uL2, ,`, X,`, ,`, 7 7,0 d$, ,(`, $,` JJJJ)  )  L @  w mm    H6 Loading ... k: s2lm<=<`)_ `F | " H "h  " eu... File Not Found... Error $ - Press Any Key L !8   ! " "! " LB !LB !lt mnL  5`5`3`6 6r55 55 `LD5w55 w5`8`844`6L4`U5o5Lo^%55st R% 5,,"6"6ԅ ,`L 4445554455 5 C' };uTB(OlLy > p ction Licenced under GPL. EightBallVM v0.78 WARNING: evalptr Free Software. (c)Bobbi, 2018 Loading 'bytecode PC=' r %' (+/@BCDEFG HIJKMNPRSUVK,( + 0 :  k ;dm!vX') )L) )L) )L) . 0` N/_5)U0$5)@x5Ѣ 65D΢ 65;5L_/}5~5  7ƋL/L$L$QȊQL$r5 ` Bytecode file (CR for default)>Unsupported instru Umm iQi @ w L  ͒` mHPmh P& w  M  â  w M w  w   U O   H   .  O  O  UP L6G w  w { w e w I  U A 5 `    O  L   V  L  z'    O ;0    O    9$`e````L`L`L`L```eHeh`_i扦L8刪ȱ剰@ȱȱee `LOSO L ᑊLee@ō<qȥqȱȱ ȥȥL{L{ȥȥȥȑ`eȱe;ŋ7qȱqȱȱ ȥȥ``ȥȥȥȥ` }e"%  }=`    =`L`Ƌeee` Beȱe+& ``ȑ`ŋ%ȱ   ʊHȱhL, 6`8`A ,/;60Ţ V*)/ȑȄ8吰Ɖ A@A z`BL`)` )` )` )` ` $`%%#"%L2 )%2H$,J,U(h(,T`I` e8`8`8`8`8吰`Ɓƀ`8`Ɓ`8`Ɓ`)  =`L  < z))T) )ȢA  V  pLR` i =:``rHqih`Heh`2H1hL_      LD  )H )h,,a0)` C0 Q 6 IL.LIHIh`OL `H h   $$!р"qHqh U Ѓ UqqL; z Ɂ qLL zɛ LL =:`9 LRi`w2raR+ b =L1r.nl return 0 endsub = 0 j = j + i endwhile endif endfor return 0 endsub sub printresults(word n, byte AA[]) word i = 0 for i = 2 : (n - 1) if AA[i] if i > 2 pr.msg ", " endif pr.dec i endif endfor pr.msg "." pdec nr; pr.nl call sieve(n, nr, array) call printresults(n, array) return 0 endsub sub sieve(word n, word nr, byte AA[]) pr.msg "Sieve" word i = 0; word j = 0 for i = 2 : (nr - 1) if AA[i] j = i * i while (j < n) AA[j] ' Sieve of Eratosthenes pr.msg "Sieve of Eratosthenes ..." const sz=30 const arrsz=sz*sz byte A[arrsz] = {} word i = 0 for i = 0 : arrsz-1 A[i] = 1 endfor call doall(sz, A) end sub doall(word nr, byte array[]) word n = nr * nr pr.msg "nr is "; pr. Ы0 L;  qa0 L $ JJJJ)  )  M )  )  L $ JJJJ)  )  L  z  z qHqh   O 8qȱ,ȱ ȱLZȱLZ8刑ȱ剑eeȥȥi` `6  1LH8    h   Y3)-l VG)G H IhL.9Ȣ V߮7) Т V H Qhв6JJ `9L!̢LV Q5Δ`2 ``       OLjȱ   o OLj O qHqhdec nr; pr.nl call sieve(n, nr, array) call printresults(n, array) return 0 endsub sub sieve(word n, word nr, byte AA[]) pr.msg "Sieve" word i = 0; word j = 0 for i = 2 : (nr - 1) if AA[i] j = i * i while (j < n) AA[j] ' Sieve of Eratosthenes pr.msg "Sieve of Eratosthenes ..." const sz=30 const arrsz=sz*sz byte A[arrsz] = {} word i = 0 for i = 0 : arrsz-1 A[i] = 1 endfor call doall(sz, A) end sub doall(word nr, byte array[]) word n = nr * nr pr.msg "nr is "; pr. Loading ... k: s2lm<=<`)_ `F | " H "h  " eu... File Not Found... Error $ - Press Any Key L !8   ! " "! " LB !LB !lt mnL Kԅ ,`L  5`5`3`<3"#,+. `Ld5 `8`8` AL `,V`uLoO34st C ,,K (' LT: ")r %' (+/@BCDEFG HIJKMNPRSUV[Mzupka\WRH %*/49>C @fPBDCHLDABIKBDLNSTAWILDAWIPOPBPSHWPSHBDISCSPFPFPSPATORRTOAPICKLDAWOVERDUP2STRBSTRWPRCHLDRBLDRWSTABLDABJSRIBRCINEQLJMPIPOPWBNOTBANDBXORSTAWLSHRSHJMPBRCJSRLTERTSGTENEGMODDIVMULSUBADDINCDRPDUPLDISWPBORENDGT ` Bytecode file (CR for default)>EightBall Disassembler v0.78 Licenced under GPL. Free Software. (c)Bobbi, 2018 **ILLEGAL**Loading '...00 bytecodeLDRWIPRHEXLDRBIPRSTRSTRWIPRMSGSTRBISTABIPRDECK8IrHIqhL_8IqHȊIqh`I8eƁ`  J`&*&HŎ叐hHh䅈`&*Ŏ悈`  J` V_7)U0$7)@Ѣ VD΢ V;6Lg  7ƋLLL.$ K 7)  捥Ŋ֦䋐`LHhȵHh``  LC VL `L.FjFjFjFj`Hh`HȊhL  ``Hh4 OȑȊ  ! O  j O jȑȥHhL```HhLƀ`Ɓƀ`H8Ɓh`8ƁȊ` VR7)H0Lg b OLj  Oee O %H%h  Oee j B  8H噪h   7 O+ OȑȊ  ! O 8H噪h j L O8= 0 j = j + i endwhile endif endfor return 0 endsub sub printresults(word n, byte AA[]) word i = 0 for i = 2 : (n - 1) if AA[i] if i > 2 pr.msg ", " endif pr.dec i endif endfor pr.msg "." ptr=&iw *ptr=9999 call expect(iw==9999) ptr=&ib ^ptr=73 call expect(ib==73) call expect(&warr[0]==&warr) '------------------ ' Call subroutine '------------------ pr.msg "Call sub:"; pr.nl call gv1() call expect(iw==987) call gb1() call expect(ib==$ae) dif:"; pr.nl iw=123 ib=99 if iw==123 ib=1 else ib=0 endif call expect(ib==1) iw=124 ib=99 if iw==123 ib=1 else ib=0 endif call expect(ib==0) '------------------ ' Pointers/Addresses '------------------ pr.msg "Pointers/Addresses:"; pr.nl word p------------ ' If/Endif '------------------ pr.msg "If/Endif:"; pr.nl iw=123 ib=0 if iw==123 ib=1 endif call expect(ib==1) iw=124 ib=0 if iw==123 ib=1 endif call expect(ib==0) '------------------ ' If/Else/Endif '------------------ pr.msg "If/Else/En call expect(sum==6) '------------------ ' While loop '------------------ pr.msg "While loop:"; pr.nl sum=0 iw=0 while iw<4 sum=sum+iw iw=iw+1 endwhile call expect(sum==6) sum=0 ib=0 while ib<4 sum=sum+ib ib=ib+1 endwhile call expect(sum==6) '------&&(barr[1]==123)&&(warr[2]==12)&&(barr[9]==12)&&(bpost==0)) '------------------ ' For loop '------------------ pr.msg "For loop:"; pr.nl word sum=0 word iw=0 for iw=1:3 sum=sum+iw endfor call expect(sum==6) sum=0 byte ib=0 for ib=1:3 sum=sum+ib endfor2,12,12,12,12,12,12,12} byte bpost=0 call expect((&barr[2]-&barr[1])==1) call expect((&barr[4]-&barr[1])==3) call expect((bpre==0)&&(barr[0]==12)&&(barr[1]==12)&&(warr[2]==12)&&(barr[9]==12)&&(bpost==0)) barr[1]=123 call expect((bpre==0)&&(barr[0]==12)&(warr[9]==12)&&(wpost==0)) warr[1]=123 call expect((wpre==0)&&(warr[0]==12)&&(warr[1]==123)&&(warr[2]==12)&&(warr[9]==12)&&(wpost==0)) '------------------ ' Byte arrays '------------------ pr.msg "Byte arrays:"; pr.nl byte bpre=0 byte barr[2*5]={12,12,1 "Word arrays:"; pr.nl word wpre=0 word warr[10]={12,12,12,12,12,12,12,12,12,12} word wpost=0 pr.msg "Size of word (4 for interpeter, 2 for 6502 & VM): " pr.dec (&warr[2]-&warr[1]) pr.nl call expect((wpre==0)&&(warr[0]==12)&&(warr[1]==12)&&(warr[2]==12)&pr.nl byte b1=10; byte b2=100; word b3='a'; call expect((b1==10)&&(b2==100)&&(b3=='a')) b2=b2+10 call expect((b1==10)&&(b2==110)&&(b3=='a')) b2=b1+10 call expect((b1==10)&&(b2==20)&&(b3=='a')) '------------------ ' Word arrays '------------------ pr.msg0)&&(w2==100)&&(w3==50) call expect(status) w2=w2+10 status=(w1==10)&&(w2==110)&&(w3==50) call expect(status) w2=w1+10 status=(w1==10)&&(w2==20)&&(w3==50) call expect(status) '------------------ ' Byte variables '------------------ pr.msg "Byte vars:"; '----------------------' ' Eightball Unit Tests ' '----------------------' byte status=0 word counter=1 word fails=0 '------------------ ' Word variables '------------------ pr.msg "Word vars:"; pr.nl word w1=10 word w2=100 word w3=50 w1=10 status=(w1==1r.nl return 0 endsub call gwa1() call expect(warr[3]==1234) call gba1() call expect(barr[7]==$34) call c1() call expect(iw==555) call noret() call expect(iw==9876) '------------------ ' Subroutine params '------------------ pr.msg "Sub params:"; pr.nl warr[0]=100 call pw1(warr[0]) call expect(iw==200) barr[2]=10 call pb1(barr[2]) call expect(iw==20) warr[0]=10 warr[1]=20 call pw2(warr[0],warr[1]) call expect(iw==200) barr[0]=10 barr[1]=20 call pb2(barr[0],barr[1]) call expect(iw==200) warr[0]=500 warr[1]=750 call add(else return x*recurse3(x-1) endif endsub sub lw1() word loc=2 iw=iw*loc return 0 endsub sub lb1() byte loc=2 iw=iw*loc return 0 endsub sub lw2() word loc=0 loc=4 iw=iw*loc return 0 endsub sub lb2() byte loc=0 loc=4 iw=iwirstlevel(xyz) call expect(xyz[3]==123) endsub sub recurse2(word x) if x==0 return 1; else return recurse2(x-1)*x endif endsub ' Why does this not work, even though ' recurse2() works fine?? sub recurse3(word x) if x==0 return 1; word i=0 iw=0 for i=0:len-1 iw=iw+A[i] endfor endsub sub pbrfirstlevel(word XX[]) call pbrsecondlevel(XX) endsub sub pbrsecondlevel(word XX[]) byte i=0 for i=0:9 XX[i]=123 endfor endsub sub wrapper() word xyz[10]={} call pbrf A[i] = i endfor endsub sub sumwarray(word A[], word len) word i=0 iw=0 for i=0:len-1 iw=iw+A[i] endfor endsub sub setbarray(byte A[], word len) word i=0 for i=0:len-1 A[i] = i endfor endsub sub sumbarray(byte A[], word len) ub sub noret() iw = 9876 endsub sub sqr(word x) return x*x endsub sub recurse1(word x, word addr) if x==0 *addr=1 else call recurse1(x-1,addr) *addr=*addr*x endif endsub sub setwarray(word A[], word len) word i=0 for i=0:len-1 return 0 endsub sub ppw1(word val, word addr) *addr=val return 0 endsub sub ppb1(byte val, word addr) ^addr=val return 0 endsub sub c1() call c2() return 0 endsub sub c2() call c3() return 0 endsub sub c3() iw = 555 return 0 ends iw = xx * 2 return 0 endsub sub pb1(byte xx) iw = xx * 2 return 0 endsub sub pw2(word xx, word yy) iw = xx * yy return 0 endsub sub pb2(byte xx, byte yy) iw = xx * yy return 0 endsub sub add(word a, word b, word sumaddr) *sumaddr=a+b ord return 0 endsub sub gb1() ib = $ae; ' Set global byte return 0 endsub sub gwa1() warr[3] = 1234; ' Set global word array member return 0 endsub sub gba1() barr[7] = $34; ' Set global byte array member return 0 endsub sub pw1(word xx) } byte iii=0 word summ=0 for iii=0:cstsz-1 AAA[iii]=10 endfor for iii=0:cstsz-1 summ=summ+AAA[iii] endfor call expect(summ==cstsz*10) '------------------ call done() '------------------ end ' ' Test subroutines ' sub gv1() iw = 987; ' Set global wt(iw==123*4) iw=123 call lb2() call expect(iw==123*4) call lpw1() call expect(iw==1) call lpb1() call expect(iw==1) call gp1() call expect(iw==1) '------------------ ' Consts '------------------ pr.msg "Consts:"; pr.nl const cstsz=10 word AAA[cstsz]={(5) call expect(iw==5*4*3*2) iw=recurse3(5) call expect(iw==5*4*3*2) '------------------ ' Locals '------------------ pr.msg "Locals:"; pr.nl iw=123 call lw1() call expect(iw==123*2) iw=123 call lb1() call expect(iw==123*2) iw=123 call lw2() call expecall sumbarray(BB, 10) call expect(iw==45) call pbrfirstlevel(AA) call expect(AA[3]==123) call wrapper() '------------------ ' Invoke func '------------------ pr.msg "Invoke func:"; pr.nl call expect(sqr(10)==100) pr.msg " Recursive:"; pr.nl iw=recurse2 a2) call expect(ib==110) pr.msg " Recursive:"; pr.nl call recurse1(5, &iw) call expect(iw==120) pr.msg " Array pass by ref:"; pr.nl word AA[10]={} call setwarray(AA, 10) call sumwarray(AA, 10) call expect(iw==45) byte BB[10]={} call setbarray(BB, 10) cwarr[0],warr[1],&iw) call expect(iw==1250) warr[0]=500 warr[1]=750 call add(warr[0],warr[1],&warr[2]) call expect(warr[2]==1250) word a1=&iw call ppw1(2345, a1) call expect(iw==2345) call ppw1(2345, &iw) call expect(iw==2345) word a2=&ib call ppb1(110,*loc return 0 endsub sub lpw1() iw=0 word xx=0 word addr=&xx *addr=1234 if xx==1234 iw=1 endif return 0 endsub sub lpb1() iw=0 byte xx=0 word addr=&xx ^addr=123 if xx==123 iw=1 endif return 0 endsub sub gp1() iw=0 word addr=&iw *addr=5436 if iw==5436 iw=1 endif return 0 endsub ' ' Utility subroutines ' sub expect(byte b) pr.dec counter pr.msg ": " counter=counter+1 if b pr.msg " Pass " else pr.msg " FAIL " fails=fails+1 ee r1,byte r2,byte color) byte i=0 for i=r1:r2 call plot(c,i,color) endfor endsub sub frame() call hlin(lhs,rhs,bttm,4) call vlin(lhs,top,bttm,4) call vlin(rhs,top,bttm,4) endsub sub drawPiece(byte c,byte r,byte rot,byte erase) if piece==0 retur endif endsub sub readpix(byte c,byte r) word a=addrs[r/2]+c if r%2 return (^a&$f0)>>4 else return ^a&$0f endif endsub sub hlin(byte c1,byte c2,byte r,byte color) byte i=0 for i=c1:c2 call plot(i,r,color) endfor endsub sub vlin(byte c,byte c=0 for r=0:19 for c=0:39 ^(addrs[r]+c)=0 endfor endfor for r=20:23 for c=0:39 ^(addrs[r]+c)=' '+128 endfor endfor endsub sub plot(byte c,byte r,byte color) word a=addrs[r/2]+c if r%2 ^a=(^a&$0f)|(color<<4) else ^a=(^a&$f0)|colo054=0 ^$c056=0 endsub sub loresmix() ^$c050=0 ^$c053=0 ^$c054=0 ^$c056=0 endsub sub text() ^$c051=0 ^$c054=0 endsub sub clrlo() byte r=0 byte c=0 for r=0:23 for c=0:39 ^(addrs[r]+c)=0 endfor endfor endsub sub clrlomix() byte r=0 bytreturn 0 else call checkframe(row) col=stcol;row=strow;rot=0 call prng() piece=rr%5 endif endif endwhile endsub sub getkey() if ^kbdata<128 return 0 endif ^kbstrb=0 return ^kbdata endsub sub lores() ^$c050=0 ^$c052=0 ^$c if key=='p' while getkey()==0 endwhile endif endif endif endif key=^spkr row=row+1 lok=1 rok=1 rotok=1 call drawPiece(ocol,orow,orot,1); 'Erase if drawPiece(col,row,rot,0) if row==strow+1 call loser() endwhile end sub playgame() while 1 key=getkey() orow=row;ocol=col;orot=rot if key=='s'&&rotok if rot==3 rot=0 else rot=rot+1 endif else if (key=='a')&&lok col=col-1 else if (key=='d')&&rok col=col+1 else ce=rr%5 call loresmix() while 1 score=0 pr.ch clrscr call clrlomix() call frame() call printnewlines() if first call printintro() kbd.ch &key call clearintro() first=0 endif call printtext() call printscore() call playgame() kbd.ch &key us col, row, rotation byte ocol=stcol byte orow=strow byte orot=0 byte key=0 byte piece=0 byte done=0 word score=0 ' Seed the PRNG word rr=$4e ' Left, right, rotate permitted? byte lok=1 byte rok=1 byte rotok=1 ' First run byte first=1 call prng() pie22 const strow=8 const stcol=18 ' Apple II specific addresses const spkr=$c030 const kbdata=$c000 const kbstrb=$c010 const hpos=36 const rnd=$4e ' ASCII const beep=7 const clrscr=12 ' Position of piece byte col=stcol byte row=strow byte rot=0 ' Previo' Apple II Low Res Tetris ' Bobbi 2018 word addrs[24]={$400,$480,$500,$580,$600,$680,$700,$780,$428,$4a8,$528,$5a8,$628,$6a8,$728,$7a8,$450,$4d0,$550,$5d0,$650,$6d0,$750,$7d0} ' Size of playfield const lhs=14 const rhs=lhs+11 const top=10 const bttm=top+ndif pr.nl return 0 endsub sub done() if fails==0 pr.msg "*** ALL "; pr.dec counter-1; pr.msg " TESTS PASSED ***"; pr.nl else pr.msg "*** "; pr.dec fails; pr.ch '/'; pr.dec counter-1; pr.msg " TESTS FAILED ***"; pr.nl endif endsub rn drawT(c,r,rot,erase) else; if piece==1 return drawL(c,r,rot,erase) else; if piece==2 return drawZ(c,r,rot,erase) else; if piece==3 return drawSq(c,r,rot,erase) else return drawI(c,r,rot,erase) endif;endif;endif;endif endsub sub drawT(byte c,byte r,byte rot,byte erase) byte color=1 if erase color=0 endif if rot==0 call plot(c,r+1,color) call plot(c+1,r+1,color) call plot(c+2,r+1,color) call plot(c+1,r+2,color) if erase return 0 endif lok=!(readpix(c-1,r+2)||readpix(c,ot==2) call plot(c+1,r,color) call plot(c+1,r+1,color) call plot(c+2,r+1,color) call plot(c+2,r+2,color) if erase return 0 endif lok=!(readpix(c,r+1)||readpix(c,r+2)||readpix(c+1,r+2)||readpix(c+1,r+3)) rok=!(readpix(c+3,r+2)||readpix(c+(c+2,r+2)||readpix(c+2,r+3)||readpix(c+3,r+3)) return readpix(c+1,r+2)||readpix(c+2,r+1)||readpix(c+3,r+1) endif endif endif endif endsub sub drawZ(byte c,byte r,byte rot,byte erase) byte color=2 if erase color=0 endif if (rot==0)||(rall plot(c+3,r,color) call plot(c+1,r+1,color) if erase return 0 endif lok=!(readpix(c,r+1)||readpix(c,r+2)) rok=!(readpix(c+2,r+1)||readpix(c+3,r+1)||readpix(c+4,r+1)||readpix(c+2,r+2)) rotok=!(readpix(c+2,r+1)||readpixrok=!(readpix(c+3,r+1)||readpix(c+3,r+2)||readpix(c+3,r+3)) rotok=!(readpix(c+1,r+1)||readpix(c+1,r+2)||readpix(c+3,r+1)) return readpix(c+1,r+1)||readpix(c+2,r+3) else if rot==3 call plot(c+1,r,color) call plot(c+2,r,color) c2) else if rot==2 call plot(c+1,r,color) call plot(c+2,r,color) call plot(c+2,r+1,color) call plot(c+2,r+2,color) if erase return 0 endif lok=!(readpix(c,r+1)||readpix(c+1,r+1)||readpix(c+1,r+2)||readpix(c+1,r+3)) endif lok=!(readpix(c-1,r+2)||readpix(c,r+2)||readpix(c+1,r+2)) rok=!(readpix(c+1,r+2)||readpix(c+2,r+2)||readpix(c+3,r+2)||readpix(c+3,r+1)) rotok=!(readpix(c+2,r+2)||readpix(c+2,r+3)) return readpix(c,r+2)||readpix(c+1,r+2)||readpix(c+2,r+eadpix(c+3,r+3)) rotok=!(readpix(c,r+2)||readpix(c+2,r+1)) return readpix(c+1,r+3)||readpix(c+2,r+3) else if rot==1 call plot(c+2,r,color) call plot(c,r+1,color) call plot(c+1,r+1,color) call plot(c+2,r+1,color) if erase return 0 call plot(c+1,r,color) call plot(c+1,r+1,color) call plot(c+1,r+2,color) call plot(c+2,r+2,color) if erase return 0 endif lok=!(readpix(c,r+1)||readpix(c,r+2)||readpix(c,r+3)||readpix(c+1,r+3)) rok=!(readpix(c+2,r+1)||readpix(c+2,r+3)||r+3)) rotok=!(readpix(c,r+2)||readpix(c+2,r+2)||readpix(c+1,r+3)) return readpix(c+1,r+3)||readpix(c+2,r+2) endif endif endif endif endsub sub drawL(byte c,byte r,byte rot,byte erase) byte color=8 if erase color=0 endif if rot==0 color) call plot(c+1,r+1,color) call plot(c+2,r+1,color) call plot(c+1,r+2,color) if erase return 0 endif lok=!(readpix(c,r+1)||readpix(c,r+2)||readpix(c,r+3)) rok=!(readpix(c+2,r+2)||readpix(c+3,r+2)||readpix(c+2,r)||readpix(c+1,r+2)) rok=!(readpix(c+1,r+2)||readpix(c+2,r+2)||readpix(c+3,r+2)) rotok=!(readpix(c+1,r+2)||readpix(c+2,r+2)||readpix(c+1,r+3)) return readpix(c,r+2)||readpix(c+1,r+2)||readpix(c+2,r+2) else if rot==3 call plot(c+1,r,)) return readpix(c,r+2)||readpix(c+1,r+3) else if rot==2 call plot(c+1,r,color) call plot(c,r+1,color) call plot(c+1,r+1,color) call plot(c+2,r+1,color) if erase return 0 endif lok=!(readpix(c-1,r+2)||readpix(c,r+2) call plot(c+1,r+1,color) call plot(c+1,r+2,color) if erase return 0 endif lok=!(readpix(c-1,r+2)||readpix(c,r+2)||readpix(c,r+3)) rok=!(readpix(c+2,r+1)||readpix(c+2,r+2)||readpix(c+2,r+3)) rotok=!(readpix(c,r+2)||readpix(c+2,r+2r+2)||readpix(c,r+3)) rok=!(readpix(c+2,r+2)||readpix(c+3,r+2)||readpix(c+2,r+3)) rotok=!(readpix(c,r+2)||readpix(c+1,r+3)) return readpix(c,r+2)||readpix(c+1,r+3)||readpix(c+2,r+2) else if rot==1 call plot(c+1,r,color) call plot(c,r+1,color3,r+3)) rotok=!(readpix(c,r+3)||readpix(c+1,r+3)||readpix(c+1,r+2)) return readpix(c+1,r+2)||readpix(c+2,r+3) else if (rot==1)||(rot==3) call plot(c+1,r+1,color) call plot(c+2,r+1,color) call plot(c,r+2,color) call plot(c+1,r+2,color) if erase return 0 endif lok=!(readpix(c-1,r+3)||readpix(c,r+3)||readpix(c+2,r+2)) rok=!(readpix(c+1,r+3)||readpix(c+2,r+3)||readpix(c+2,r+2)||readpix(c+3,r+2)) rotok=!(readpix(c+2,r+2)||readpix(c+2,r+3)) return readpix(c,r+3)||readpix(c!*;S !*;S> &6з# # '1;\T 2 639mT 2 3> &6з# # '1;T 27>9T 2>>     =#T !*;T>    V>QT>' 6з# # !*;?S !*;5S>' 6з# # !*;S !*;S' 6з# # # # η ·  ̷˷ʷ=sUϷηͷ=sU1;Rη#-1;gR=~l>9Rη=j Ϸ η ͷ=l÷' ȷ9VQ>+1;R>>>PRTV>PST ȷ=R1;TQŷ A={S=%U=k1;?Q=lɷD=&l =Ll=cl=UQɷD9Q1;R=R ɷη ˷Ϸ ̷ͷ ʷɷs-/1;Qͷ-1;Q ͷ9Qͷ# ͷ9Qɷa-·/1;QϷ$ Ϸ9Qɷd-/1;QϷ# Ϸ9Qɷp-1;Q=R-1;Q9Q0 ɷη".;P((((PPPPN=l÷' score=score+1 call printscore() return 1 endsub sub deleterow(byte r) byte i=r byte c=0 byte v=0 byte empty=0 while (i>top+1)&&(!empty) empty=1 for c=lhs+1:rhs-1 v=readpix(c,i-1) if v empty=0 endif call plot(c,i,v) endfor ir) byte rr=r+3 if rr>bttm-1 rr=bttm-1 endif while rr>=r if checkline(rr) pr.ch beep else rr=rr-1 endif endwhile endsub sub checkline(byte r) byte c=0 for c=lhs+1:rhs-1 if !readpix(c,r) return 0 endif endfor call deleterow(r) +2,r+1,color) call plot(c+1,r+2,color) call plot(c+2,r+2,color) if erase return 0 endif lok=!(readpix(c,r+2)||readpix(c,r+3)) rok=!(readpix(c+3,r+2)||readpix(c+3,r+3)) rotok=1 return readpix(c+1,r+3)||readpix(c+2,r+3) endsub sub checkframe(byte readpix(c+3,r+4)) rotok=!(readpix(c,r+3)||readpix(c+1,r+3)||readpix(c+3,r+3)) return readpix(c+2,r+4) endif endif endsub sub drawSq(byte c,byte r,byte rot,byte erase) byte color=13 if erase color=0 endif call plot(c+1,r+1,color) call plot(cl plot(c+2,r+1,color) call plot(c+2,r+2,color) call plot(c+2,r+3,color) if erase return 0 endif lok=!(readpix(c+1,r+1)||readpix(c+1,r+2)||readpix(c+1,r+3)||readpix(c+1,r+4)) rok=!(readpix(c+3,r+1)||readpix(c+3,r+2)||readpix(c+3,r+3)||e return 0 endif lok=!readpix(c-1,r+3) rok=!readpix(c+4,r+3) rotok=!(readpix(c+2,r+3)||readpix(c+2,r+4)) return readpix(c,r+3)||readpix(c+1,r+3)||readpix(c+2,r+3)||readpix(c+3,r+3) else if (rot==1)||(rot==3) call plot(c+2,r,color) cal+1,r+3) endif endif endsub sub drawI(byte c,byte r,byte rot,byte erase) byte color=14 if erase color=0 endif if (rot==0)||(rot==2) call plot(c,r+2,color) call plot(c+1,r+2,color) call plot(c+2,r+2,color) call plot(c+3,r+2,color) if eras =#T !*;T> =T  =T  =T>ȷ-1;U    =.V>9)Vȷ-1;U    =b\>9)Vȷ-1;U    =c>9)Vȷ-1;V    =^i>9)V    =Bf>> 1;@V -1;W  # =#T # # =#T # # =#T # # =#T 1;V> $ #=rT  #=rT0  #=rT# #=rT # #=rT01  #=rT # #=rT0 # #=rT01 # #=rT # #=rT0>9=f - -01;=f # # =#T # # =#T  # > 1;c - -01;d #  =#T # # =#T # # =#T # # =#T 1;c>  #=rT  #=rT0 # #=rT0 # #=rT01 · T # #=rT0 # #=rT0 # #=rT01 # #=rT # #=rT0 # #=rT0 # #=rT01 # #=rT # #=rT0 # #=rT0> #=rT01 # #=rT # #=rT0>9b -1;b #  =#T #  =#T #  =#T # # =#T 1;a>  #=rT  #=rT01 · # #=r# =#T 1;`>  #=rT # #=rT0 # #=rT0 # #=rT01 · # #=rT # #=rT0 # #=rT01 # #=rT # #=rT0 #=rT0 # #=rT01 # #=rT # #=rT01  #=rT # #=rT0 # #=rT0>9b -1;Ha #  =#T #  =#T # # =#T # -1;_ #  =#T  # =#T # # =#T # # =#T 1;{^> $ #=rT  #=rT0 # #=rT01 · # #=rT # #=rT0 # ##=rT  #=rT0  #=rT0 # #=rT01 · # #=rT # #=rT0 # #=rT01  #=rT # #=rT01 # #=rT # #=rT0>9b  #=rT0 # #=rT01 # #=rT # #=rT0>> 1;t\ -1;] #  =#T # # =#T # # =#T # # =#T 1;\>  # # =#T # # =#T # # =#T 1;[[>  #=rT  #=rT0  #=rT01 · # #=rT # #=rT0 # #=rT01  #=rT ## #=rT # #=rT0 # #=rT01 # #=rT # #=rT0 # #=rT01  #=rT # #=rT0 # #=rT0>9]\ -1;]\ #  =#T 1  #=rT # #=rT0>9]\ -1;Z #  =#T  # =#T # # =#T # # =#T 1;Y> $ #=rT  #=rT0 # #=rT01 ·  # # =#T # # =#T 1;GX> $ #=rT  #=rT0  #=rT01 · # #=rT # #=rT0 # #=rT01  #=rT # #=rT001 · # #=rT # #=rT0 # #=rT01  #=rT # #=rT01  #=rT # #=rT0 # #=rT0>9]\ -1;4Y #  =#T  # =#T=#T # # =#T 1;3e> $ #=rT  #=rT0 # #=rT01 · # #=rT # #=rT0 # #=rT0 # #=rT01 # #=rT # #=rT01  #=rT # #=rT0>> 1;Tf - -01;g  # =#T # # =#T # # =#T # # =#T 1;f> $ #=rT1 · -n-/a-/=` #  --/a-/=`CWord arrays: A ".;]Q          CSize of word (4 for interpeter, 2 for 6502 & VM): 6۷#6۷#$CWord vars: A d2  -d-/2-/ =` # -n-/2-/ =` # --/2-/ =`CByte vars: A da -d-/a-/=` #  ȱ  ȱ Lr   i ȱ 8L%%$%D%$D$D %%$%D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65a2e.auxmem.emd ld65 V2.15Sat Apr 14 10:20:35 2018emd&',IQ )ɀ```i   r``i  8 =e? B C(LÅ   i sg "SCORE: " endsub sub printscore() ^hpos=17 pr.dec score pr.msg " " endsub sub loser() ^hpos=10 pr.msg "GAME OVER - SCORE WAS " pr.dec score endsub sub prng() rr=rr*8191+7; ' Mersenne prime endsub =i-1 endwhile endsub sub printnewlines() byte i=0 for i=0:19 pr.nl endfor endsub sub printintro() ^hpos=10 pr.msg "TETRIS - PRESS ANY KEY" endsub sub clearintro() ^hpos=10 pr.msg " " endsub sub printtext() ^hpos=10 pr.m$ CTETRIS - PRESS ANY KEY>$ C >$ CSCORE: >$ŷ?C >$ CGAME OVER - SCORE WAS ŷ?>÷%#÷>11; k> !*;j =@kŷ#ŷ=cl>>   #) 1/1;k#$  $=rT 1;k   =#T !*;}k $9Qk> A !*;k> #=rT01 · # #=rT # #=rT01  # #=rT # #=rT0>> #  $)1;j $ *1;j =j1;jA9j $9j>#$  =rT#=rT # #=rT0 # #=rT01 # #=rT>>  1;pi # # =#T # # =#T # # =#T # # =#T 1;i>  #=rT =#T # # =#T 1;3h> # #=rT # #=rT0 # #=rT0 # #=rT01 · # #=rT # #=rT0 # #=rT0 # #=rT01  # #=rT1 # #=rT # #=rT01  #=rT # #=rT0 # #=rT0 # #=rT0>9Yi - -01;Yi #  =#T # # =#T # # ? A-6۷# -/6۷# -/6۷# -/ 6۷# -/ٷ-/=`{6۷#-6۷# -/6۷#{-/6۷# -/ 6۷# -/ٷ-/=`CByte arrays: A ".;R  ɷ %ɷ>>ɷ   -1;E`ɷ>>ɷ  { {-1;x`ɷ>>ɷɷ <ɷ<-1;`ɷ>>?C: # 1;`C Pass 9`C FAIL # A>>-1*;^> ".;_6# =^6# {-=`> -1;d_>9y_ $=P_ %>> -1;_>9_  $=~_%>>ɷ %ɷ>>ɷ %ɷ>>ɷ %ɷ>>>ɷ $ɷ 6 ##ɷ !*;^> $  # !*;X^>ɷ $ɷ  ##ɷ !*;^>6 #=^>  {6 # !>   #>>  >>  >>=P]>>=_]>>+ɷ>>&ɷ>  %>> -1;] 9] $ =]   %> $ 6 # !*;]! *;[  $6##! *;\  %-=`=`ɷ>> ȷ>>6۷#>>4η#>> %ɷ>> %ɷ>>  %ɷ>>  %ɷ>ls: A{ɷ=_ɷ{%-=`{ɷ=_ɷ{%-=`{ɷ=_ɷ{%-=`{ɷ=_ɷ{%-=`=`ɷ-=`=O`ɷ-=`=`ɷ-=`CConsts: A ".;[  $ 6#Y# =E^# ={^ɷ--=`6#=^6#{-=`= _CInvoke func: A =|]d-=`C Recursive: A=P_ɷɷ%%%-=`=~_ɷɷ%%%-=`CLocaɷ) -=`) ɷ=]ɷ) -=`ȷn·=.]ȷn-=`C Recursive: Aɷ=]ɷx-=`C Array pass by ref: A ".;Y6# =]6# =^ɷ--=` ".;η#η#η#=\ɷ-=`6۷#6۷#6۷#6۷#ɷ=]ɷ-=`6۷#6۷#6۷#6۷#6۷#=]6۷#-=`ɷ) ķ=]=A]ɷ+-=`=p]ɷ&-=`CSub params: Ad6۷#6۷#=\ɷ-=` η#η#=\ɷ-=` 6۷#6۷#6۷#6۷#=\ɷ-=` η#1; V ȷ9V ȷȷ-=`CPointers/Addresses: AɷƷ'ɷ'-=`ȷƷƷIȷI-=`6۷#6۷#-=`CCall sub: A=\\ɷ-=`=m\ȷ-=`=~\6۷#-=`=\η#4-=`˷ ȷȷ+1;*U˷ȷ#˷ȷ# ȷ9U˷-=`CIf/Endif: A{ɷ ȷɷ{-1;fU ȷȷ-=`|ɷ ȷɷ{-1;U ȷȷ-=`CIf/Else/Endif: A{ɷc ȷɷ{-1;U ȷ9U ȷȷ-=`|ɷc ȷɷ{- -/ η# -/ͷ-/=`CFor loop: Aɷ˷ɷ#˷ɷ!ɷ*;CT˷-=`˷ ȷ˷ȷ#˷ȷ! ȷ*;T˷-=`CWhile loop: A˷ɷɷ+1;T˷ɷ#˷ɷ#ɷ9T˷-=`        η#η#$-=`η#η#$-=`ط-η# -/η# -/6۷# -/ η# -/ͷ-/=`{η#ط-η# -/η#{-/6۷#;/aC*** ALL $?C TESTS PASSED *** A9\aC*** ?/A$?C TESTS FAILED *** A>".;P((((PPPPN=l÷' #=rT0 # #=rT01 # #=rT # #=rT0>> 1;t\ -1;] #  =#T # # =#T # # =#T # # =#T 1;\>  # # =#T # # =#T # # =#T 1;[[>  #=rT  #=rT0  #=rT01 · # #=rT # #=rT0 # #=rT01  #=rT ## #=rT # #=rT0 # #=rT01 # #=rT # #=rT0 # #=rT01  #=rT # #=rT0 # #=rT0>9]\ -1;]\ #  =#T 1  #=rT # #=rT0>9]\ -1;Z #  =#T  # =#T # # =#T # # =#T 1;Y> $ #=rT  #=rT0 # #=rT01 ·  # # =#T # # =#T 1;GX> $ #=rT  #=rT0  #=rT01 · # #=rT # #=rT0 # #=rT01  #=rT # #=rT001 · # #=rT # #=rT0 # #=rT01  #=rT # #=rT01  #=rT # #=rT0 # #=rT0>9]\ -1;4Y #  =#T  # =#T =^i>9)V    =Bf>> 1;@V -1;W  # =#T # # =#T # # =#T # # =#T 1;V> $ #=rT  #=rT0  #=rT =#T !*;T> =T  =T  =T>ȷ-1;U    =.V>9)Vȷ-1;U    =b\>9)Vȷ-1;U    =c>9)Vȷ-1;V   !*;S !*;S> &6з# # '1;\T 2 639mT 2 3> &6з# # '1;T 27>9T 2>>     =#T !*;T>    V>QT>' 6з# # !*;?S !*;5S>' 6з# # !*;S !*;S' 6з# # # # η ·  ̷˷ʷ=sUϷηͷ=sU1;Rη#-1;gR=~l>9Rη=j Ϸ η ͷ=l÷' ȷ9VQ>+1;R>>>PRTV>PST ȷ=R1;TQŷ A={S=%U=k1;?Q=lɷD=&l =Ll=cl=UQɷD9Q1;R=R ɷη ˷Ϸ ̷ͷ ʷɷs-/1;Qͷ-1;Q ͷ9Qͷ# ͷ9Qɷa-·/1;QϷ$ Ϸ9Qɷd-/1;QϷ# Ϸ9Qɷp-1;Q=R-1;Q9Q0 ɷη#=rT  #=rT0  #=rT0 # #=rT01 · # #=rT # #=rT0 # #=rT01  #=rT # #=rT01 # #=rT # #=rT0>9b -1;_ #  =#T  # =#T # # =#T # # =#T 1;{^> $ #=rT  #=rT0 # #=rT01 · # #=rT # #=rT0 # #$ CTETRIS - PRESS ANY KEY>$ C >$ CSCORE: >$ŷ?C >$ CGAME OVER - SCORE WAS ŷ?>÷%#÷>11; k> !*;j =@kŷ#ŷ=cl>>   #) 1/1;k#$  $=rT 1;k   =#T !*;}k $9Qk> A !*;k> #=rT01 · # #=rT # #=rT01  # #=rT # #=rT0>> #  $)1;j $ *1;j =j1;jA9j $9j>#$  =rT#=rT # #=rT0 # #=rT01 # #=rT>>  1;pi # # =#T # # =#T # # =#T # # =#T 1;i>  #=rT =#T # # =#T 1;3h> # #=rT # #=rT0 # #=rT0 # #=rT01 · # #=rT # #=rT0 # #=rT0 # #=rT01  # #=rT1 # #=rT # #=rT01  #=rT # #=rT0 # #=rT0 # #=rT0>9Yi - -01;Yi #  =#T # # =#T # # #=rT01  #=rT # #=rT0>> 1;Tf - -01;g  # =#T # # =#T # # =#T # # =#T 1;f> $ #=rT1 · =#T # # =#T 1;3e> $ #=rT  #=rT0 # #=rT01 · # #=rT # #=rT0 # #=rT0 # #=rT01 # #=rT # # #=rT # #=rT01  #=rT # #=rT0 # #=rT01 # #=rT # #=rT0>9=f - -01;=f # # =#T # # =#T  # > 1;c - -01;d #  =#T # # =#T # # =#T # # =#T 1;c>  #=rT  #=rT0 # #=rT0 # #=rT01 · T # #=rT0 # #=rT0 # #=rT01 # #=rT # #=rT0 # #=rT0 # #=rT01 # #=rT # #=rT0 # #=rT0> #=rT01 # #=rT # #=rT0>9b -1;b #  =#T #  =#T #  =#T # # =#T 1;a>  #=rT  #=rT01 · # #=r# =#T 1;`>  #=rT # #=rT0 # #=rT0 # #=rT01 · # #=rT # #=rT0 # #=rT01 # #=rT # #=rT0 #=rT0 # #=rT01 # #=rT # #=rT01  #=rT # #=rT0 # #=rT0>9b -1;Ha #  =#T #  =#T # # =#T # = = 3 ȩ= P& = =`$`%8"`.= ` Data mismatch in page $%04X at $%04X Data is $%04X (should be $%04X) Loaded ok, page count = $%04X Testing em_map/em_use/em_commit Testing em_copyfrom/emL !8   ! " "! " LB !LB !lt mnL  Loading ... k: s2lm<=<`)_ `F | " H "h  " eu... File Not Found... Error $ - Press Any Key L !8   ! " "! " LB !LB !lt mnL .nl return 0 endsub sub xxxxxx(word qqq) return qqq endsub word counter=0 word fails=0 call expect(sqr(10)==100) end sub sqr(word x) return x*x endsub sub expect(byte b) pr.dec counter pr.msg ": " counter=counter+1 if b pr.msg " Pass " else pr.msg " FAIL " fails=fails+1 endif prR U TRg Ri R Z TRܢi R m TRhL R ;R a[)[ ;R a[ [ Z T[ TR] ;R ;R a[)wb ;R a[) c ;R ;R a[)+ a[ a[ [ T[ a[ [ TR ;R a[ V[ dLYL[h Ri R ( TRܢi R ; TRg Ri R @ TRܢi 5=8JJ`c<8o<p<` =L|<`,V`=+=Lo*<<st * S=,,==ԅ ,`L  <`<`3`_=.===C==cture damagedUnknown error %' (+/@BCDEFG HIJKMNPRSUV~3R)0\771&77 ? ? ?L<<<<<<< `LL4L4L4L4L4L4L4L44<>< >`8`LypeLEnd of file encounteredMPosition out of rangeNFile access errorPFile is openQDirectory structure damagedRNot a ProDOS disk SInvalid system call parameter"UVolume Control Block table fullVBad buffer addressWDuplicate volumeZFile struce off-line@Invalid pathnameBMaximum number of files openCInvalid reference numberDDirectory not foundEVolume not foundFFile not foundGDuplicate filenameHVolume fullIVolume directory fullJIncompatible file formatKUnsupported storage_t@emd>>9  ȩ  B9 B9L<`<` <>>`o65Bad system call number"Bad system call parameter count%Interrupt table full 'I/O error(No device connected+Disk write protected.Disk switched/DeviPPPP  @PPPP  _copytoError in em_load_driver: %u Apple IIe auxiliary memoryWhich RAM exp to test? Apple II auxiliary memoryLoading %s ... Comparing a2e.auxmem.emd Filling a2.auxmem.emdos: %u, %s Passed! %c: %s 0123456789ABCDEF-2147483648 Loading ... k: s2lm<=<`)_ `F | " H "h  " eu... File Not Found... Error $ - Press Any Key L !8   ! " "! " LB !LB !lt mnL eem+ȱ+ȱ++ȱ++ȱ+ *+ * *L)`L+ *LI* * L) *LI*8e` ,$`ee` `+ $++ @+` S+( (H(h ((n&/v&(,y&v&( ((n&0(Н` (ɣ`HHHJ)  )hhh y%J(֭(Q(`11J  2LA) (8`rȱȱȱȱ0]cȱ @) w'(j21 v& w&!` (w&v&f(i(w&(g( CBDFGE ) ( ((H(h ((n&$ (,y&n& … (ŅL&JJJJ`Ϡ'8`n&  LDž )Vi()Д (18x&"m11 2H22h2舌x&x&12H)M0 h1020I20h2 `L%12 `_'#L  <8# ȱ)ɀ  )' ` (Xp< 0 8  `0 / X  &/ PV 8 )0`ʎ1x&… (ny&Dž (\%Tv&L4()8= (J 8'v&'w& ((ʎ1x&x&x&3223 ' ȱ  ȱ Lr   i ȱ 8L%%$%D%$D$D %%$%D%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%o65a2e.auxmem.emd ld65 V2.15Sat Apr 14 10:20:35 2018emd&',IQ )ɀ```i   r``i  8 =e? B C(LÅ   i r.nl return 0 endsub = 0 j = j + i endwhile endif endfor return 0 endsub sub printresults(word n, byte AA[]) word i = 0 for i = 2 : (n - 1) if AA[i] if i > 2 pr.msg ", " endif pr.dec i endif endfor pr.msg "." pdec nr; pr.nl call sieve(n, nr, array) call printresults(n, array) return 0 endsub sub sieve(word n, word nr, byte AA[]) pr.msg "Sieve" word i = 0; word j = 0 for i = 2 : (nr - 1) if AA[i] j = i * i while (j < n) AA[j] ' Sieve of Eratosthenes pr.msg "Sieve of Eratosthenes ..." const sz=30 const arrsz=sz*sz byte A[arrsz] = {} word i = 0 for i = 0 : arrsz-1 A[i] = 1 endfor call doall(sz, A) end sub doall(word nr, byte array[]) word n = nr * nr pr.msg "nr is "; pr. Loading ... k: s2lm<=<`)_ `F | " H "h  " eu... File Not Found... Error $ - Press Any Key  $+ @+`hh8`8`+ݪ+ݲ+`}+`e`H)hJJh+0JJ)` (< ( < *? ( < (? ( < (? ( <*? * **? *? *? ( < *? ( <x0HH1HH "),Z("