From 64f4f56379cc6a3f103fd550354789c51fff2cfd Mon Sep 17 00:00:00 2001 From: David Schmenk Date: Sat, 28 Dec 2019 16:18:51 -0800 Subject: [PATCH] Add Apple /// non-jit default to free up a little memory and update images to DP2 --- images/apple/PLASMA2-BLD.PO | Bin 143360 -> 143360 bytes images/apple/PLASMA2-DEM.PO | Bin 143360 -> 143360 bytes images/apple/PLASMA2-FPSOS.PO | Bin 143360 -> 143360 bytes images/apple/PLASMA2-INET.PO | Bin 0 -> 143360 bytes images/apple/PLASMA2-SYS.PO | Bin 143360 -> 143360 bytes images/apple/PLASMA2.2mg | Bin 819264 -> 819264 bytes src/makefile | 15 +- src/mkrel | 40 +- src/toolsrc/ed.pla | 2 +- src/toolsrc/plasm.pla | 2 +- src/vmsrc/apple/a1cmd.pla | 4 +- src/vmsrc/apple/cmd.pla | 2 +- src/vmsrc/apple/cmdjit.pla | 2 +- src/vmsrc/apple/plvm03.s | 6 +- src/vmsrc/apple/plvmjit03.s | 1436 +++++++++++++++++++++++++++++++++ src/vmsrc/apple/soscmd.pla | 59 +- src/vmsrc/apple/soscmdjit.pla | 329 ++++++++ src/vmsrc/apple/sossys.pla | 36 +- src/vmsrc/apple/sossysjit.pla | 1309 ++++++++++++++++++++++++++++++ 19 files changed, 3125 insertions(+), 117 deletions(-) create mode 100644 images/apple/PLASMA2-INET.PO create mode 100755 src/vmsrc/apple/plvmjit03.s create mode 100755 src/vmsrc/apple/soscmdjit.pla create mode 100755 src/vmsrc/apple/sossysjit.pla diff --git a/images/apple/PLASMA2-BLD.PO b/images/apple/PLASMA2-BLD.PO index 6288fb682bc58a03514803191e473e7f98b2d3cf..2a33e3b19efa589a3192f7a81ecf0f01d5baa373 100644 GIT binary patch delta 11191 zcmb_i3wRt?b)GvKY2{dJ$)y; z%I?aRLdrNaO(8%aUJ}s~0uinHfF{%;F?|FQCv9m);$w&;KE zo!On)hvo2fKWTU7p8q`V>zs4X%$Zk9&%9dt`TdGfBuORG<5eXU+oT^zxNud-(zimb z-F?B1kYs+!4@cIuAYvN z#RkSQST#rTZH$0*b{**Gx53sB7aFj`Rsr@SW|L+>u1l)!3m)yhv#-wToKgXE z`?Jh-NgH8Xx=YlnH4xWh7ssVt8@zL8#x%gz0@jjaoVUC8NJ#C-AeHsd%8G2(L0l?a zzIO0h2y?LM`G+@Iin;|WpWzOQ|@@q;a2gP zifhB#h?>xnylpBRO?bw9>M8HG2GtHoQ&Ud{uXmg9sYop8nMyqz+>ts^`=wNc{Pg_B z61jZ!B9oWcyjr?YBeTy`$n0FTOYx75#v}TmUFNWUYBDyw%QNHM7O=Mi*$2s~dxGn( z!S%6N`nCtRhk|<4GvoKEGXbAE3p=w|j}mtW2}B+U4y62_ z-e4r+LsQ9kE=yZ%YBm%f^2A0GNyzo7r+q30sSvz1I{XgM=$?r-u10vTg}xdv8Qz{q zW*a`7NapKjWxP8!tZnn#2Q)d8?B2MEPpF58*`wJO(Zcbp*3|v=n_4lfq0`|hr!+LS z$HS)&Opkb`!lRluhuRj4#NwWz2qq!bQu{oX)N^MyxE5UvZ!yCq9h5ww)*jnVl9cPE zGU?~*omONtXgcWP+x!7fGJX`!N#i1*;w9CduQu_k(MSY zb-)c}ZD5z=?dln54A@|Pz|~A=u!7#Ng@-*O5N;&MdE}803ZK$A0sy!T$l}{C50Z8VSC+d!O=AFn$H2wwu8f+;< zZXF)>=*tXTwNF}<<;$!}i+Er_fw9ea9&#^>6>=q;?~&!&dhX%Q^}A$4k0u*MI2wvY z6G=6Bx84{~_o+MiqOz~7d$oA1G2raaz1mFD-<-^8k7}dY&`2yi+!*jcx_z<@5s-Y;T0=lABEw9J^u(xrptA&w zYB>VZe32{gMXta%ipA&A4Rd_56(+BskTd4zixlQ-3?#9~#Tvv8OUC(H+~QC?HJt}-yyM)!B~}VQ8gFcB-i7^hi5asbVS0#flKOi7!yB-P$Uzc#mbX&sIXIitfX75_8PfV#%?48B3(b?(pIJ{yUyX zeYv+}arK=)Wyr$H&IVVk&r07jS$f+tS@~%Eib;7o0Z)CgZjE;|K0txm3_BEa9U(`M zL&>-&#p>%^qjB^m;z{kRuPhmjQ#P7XgX>ba*Lx`o-EStLSrVK%Xcp0#g5GxSgiEd* z&ON(idS41EKa`}7)v4DPI(YzO9y8F(O{s6!ZG-*IuzQP=w)$xOq3t|rc9;atEQ3=Y zso#PVSL^&;vU2mj{kQPVH$PaW9BA+86gN{P-YrO^HqqhSmVhaTkbga#m8PY_x2|2^ z1wwlk!39}Qvva3p#rUxFT2}QUQxR~9ioj}A1d6Jvkt(;f(&@Ps`jN^7QQ;V%B1a~b zL*b*A=gM?q6-cEIuB&j^Fo+fjabqcmGB7%psj9!X-Lj02uz?{7W*svQOP-7*F%j>RR!Wbo&DL6Zs3RDp z!-$wJN%;`8HfJq_!;4Grk>#RWyL+%AF0=VF%Grl@h)k(&Dl)d!?WQ6^QcF;vF!w8W zQ+mXw>SNqT#kIt7o=crn0pd;kOCLjWB^LZhEUxMix>b`g)h`;!O`EAwiyrZ&{oSO& z^97H;A=75&0)b2mk1q&bEzp^1H6t2tyjjIvM0n~bvNx_kSldk~dC=dGi)$K2+ z&f;q5y{(_mwc!{w(_G>&pjIR|`PJ^-S5U9TmeWmx4-YXGP$;sn{0jFMR%o&1C?tKH zPv|pf{n3nw#hRJO^yCu2K9e9^X)50#pMjMlCZz!5er%Ki3V&TbF&RQ1@4vH$`wDBc zbJDorV;h<)FpBBO)5Q~LqxmS@NuEvT;Vi&N`HDe(yM+gp~X*WDngP}Y!GKh!E-x6_!82b zf-D&phJcNY?+jy*)&C!Yc<-;mXg)$2g zXy;QQhUk#a)i_k-Cvz3FQLL~&7)kPyQ*?S#V$bgO{U71Sn!`CrAP%38rjL zAlVZn+vC9nsWVQhcd3oLylRcQ2j4eg9IT`QnmM+XE(mL#d!v|D8Z=X6Fwbi88q95}q0yMI%%I>;;`gexO)BL@bhBR# z>=tz>((mYk#b+fCG@jhLaf5zqgtgWkGoI?>v_B5M-tj^^M7j-+U@<-!+5=(%8 zPlyGU&ZP{2r85i__&kD~X{4GQb`KqVJYFJ3VzDVVchhL5M-uKFuyr76@OsJRhGObz zO&tnHu|qXAIfiRd@5S@2n86R#5RoJgfO!zotctK7+k^g__+JaTXRkZGn~@&SH9h5k z;S@G#XSye~$)TxP&-R^258+A!nICQsJ$IqiIT%Zhsm9>+$Oy^-g?r&gw}nwu>4ZSb zSbH;Ew!m2RXzGoF5zo8wAq<;rc-?#u8)E0O2n^IRGMXI-6w~;~J8a$MfaF8KuP>tp zUUL})&1(Ys@kpTHs8P^dPE3K3wGA6Z-2zfhkb0U}|MFw&FEqHc^2iCJ80;R^l0$BK zFo&&y3}z#ne@HGmao64AZ1!-;ns*Nl!Euj{>EjcT$!Kiqo;XNvuyc=9ZcSC*=Pphs zI4wLB<)$h9&^trY?EPm5bhdH$LLHqLFz2J`6XC zz-}cO<~i7rNnowR%AGv_uwsx9VW3qVj-8IeC5iaAjGRVnEv~|pqwDA*o!RwqT!^4d zEj(1?f*;lI+TPZ{FERt*r+%Cso4Z)d)?*NOscr%ziGK2>AwmJKj8US3Oai+ee=TAw zads7BOR)ixRCS`JhX0a1I)a+6i(3Rsij<8!QX)(?Ht}|fkz_EzHh|px3g6M>1Zkkr>NJU{=ETzq==-uK*x4e&Ob|4Nzs-ZQww z>kr?Q=f5LgbN_EX@LLc5_WM8Z&x@qbgE|D`NHlHzygmfUj6eP3mXsN~XduKy~0 zA06vvEN4g;%X-5YEBe@DbI^I2JzC2)&wYxq@LavZR?U5%u^Z`X;K0@T6xd2Go;wv= z5!mu7&1e&eNny7F2$iO>qi{t5j1m%nTA&OAwuBUw%k9c}V>lBR4|vNOLc zfp{y`gEQdi^qpuc;7CA0jr|Iq1b{2KlDUt=7uZ}z+7}=l&hi*HF6%MocDdLy3#Ckv zf9Df?4KA!=O8w(ceCpFr&VT0jet+Q){_v0f__Lq;lc%2k{GXm%{K7NOp8w*X{rO+~ z<#S*9^7AiTc=4sb`s=^>%HRIo-=FudVU6xm?Ze!q15sb|Z-ItzkEmur+f}_}PcC41EE%pKY0&2rxgZ zIRD82yL6r07dZckJ~qfI%b;P$#G3I{($V|$HNht(sH-+Mjc=LT(9dr1lL0$EyJmc& z_^n>@NfqN8%tn)EE%6MLc!i-4_Op9$aDDY_|M>Nnzwu8Pg}2y3l9l0TUTkE&mY8{* zK(8h8cMWB!qzZ2@*7qpBD!;^#Ty*%uG^`=h3FWfnmR4-A>ip$VRrvux$Uj~QFIz*fj_ zy^W@&XTQpdlwwAo$4cb?ExWYzD~ZWyDsh#9{yz)fU>g@oWLC6dWm)Pr_42~&tW+`4 bmt3nVR6T)ldW2)ljZ*d4S|6l delta 11195 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 diff --git a/images/apple/PLASMA2-DEM.PO b/images/apple/PLASMA2-DEM.PO index b008aff4b0c169b57f82fc4cc8ac1f5476597cc4..5d144ce9e5bd1bf8c2171e02f4caf3999c54b4db 100644 GIT binary patch delta 4817 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 delta 5929 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 diff --git a/images/apple/PLASMA2-INET.PO b/images/apple/PLASMA2-INET.PO new file mode 100644 index 0000000000000000000000000000000000000000..dd75073710d8a2ee95808341bb75518414c8e919 GIT binary patch literal 143360 zcmeEv2|!fWx&N6v!!Qg3+yPWHs3YPCBMgfhA}YuZ0}e1CJHs%HfCvOeL=u;APlCot z)Wn?_H{3O9RwKqGYFuzPN!!=gv}xM3eQEz~+V|Rq|L?mqAR5!Aujy;jivH%T_nhyZ z_4~fFTv5~^u`cqZW$_opvZsR^((vcjxiq!Cdr3;r`NJt)(T6-c#4DNX<4HSGQ#y)L zj7wvernFZaPFcUk?R@8_U7v50zBSnGM4;RH-?*I^<+gc&{38FW4!5PL9n0F;h5tSj zwlrmlaY@<|-IB~D$>*0$J-;NWL$S1cX}ZeW?NHUn<@lGhBk6*4^?&VW3J;N@YgUJ( zi`$XrH*2_J_iB%i(|4q&9g<#E~6 zr(Njo8h!q7+R`NYN$y}v)7pnDNncWaen|%9G=Os2p80VmMLDcnnygIg`l*hobW_~a z`s`^5({fZje>;pz6Lyp@O{`5}vLS&}5|f*Md*|Bm^rQQBj`B0=-g4{Mn$ppo(jnT$ zbaQ{J%KuZl|Lc0U^#@#5@W0n(xb4}qr~THIQ}0|l+kW$E`=zU=&a`)3zk25Cjdq0W z$O#r}Tt@9Vv9PlvWSjD0*PnkT>iYf8QN|rf!LAo1!D5*_NV9a(j^wl*Ni}I{OXK8A zvvwpd9l3MViKjYMZ@GOu^5aP#PdX%q^{o}1#vQTpr8#(2!;YM#`lz2|edc>e@^Q{; z?p#ikYL?p$y`QSyt?Q%q1xvDJK~d+jKfB^5Tk+ZNPPBFMe`JsT9+iNj1jOu*dR<&j zMw~V^GtrPEcs>)zdodOkINX!5k4Ackn3Va6ZsZg=LY*b&<;p~iactAbD6iq{BPQB3 zGTMt{OrM>ak(eB(cSid{#l&nj$Ci(j`%pB*A4k!05^@cxy51DM0vxF=AKAYr+IWfv znw$vkJH8XMExRz$=CvqzL^TCp{w^qA@d6ZQkx_CQnZBRY(rvB zZ^mEbBHHI)juxla>k>!zCg_#dL!00Iv`tISP3(=uyjJx@8`u*qir!RLI3_->H&6D( zt0=dT;=Z&A(e5SmP1ral`6iNil*V_o1jNkcJ4*Q@vcHKEc+~s9iBkNIr!l4bFa3ST zU+xk4f2{;QdVsN;J)E5$=|PMdF?O&@!R2uy0~1o>dzd;(@(VZc4*o8PHc;UI1dA&R z&NZYYW`k{ubmaSm2XkYudOjE}s3)3}x-a@8wYic9qm4|Y)KYu%{bCS!(Nwnwqm3{m z8T5TvJ20IxR-$+?S|G8w&J4-;A_zRzPsI;L>l5Q&-MUN6RWeb!Qo>&KK7IMjjrVgd zTshmPh-hGt;jeSINCe2?WFnE2i8%4U#ne%;D5qkqNHob6q7MBjT;m!VYAaJyBZb!= zFA<5QnsI`?o8^l|5?0Gu*dfk{GSq1Cv;DJfD;M75RVdDP;h0sTAJ6oz%q(fMN)RM5 zF5E{hO>9!;FS-Q}3l}JbPoaw$5fE>YaZwcKjI8ON+8h0iZdIX6zPF1-5+yN(h`88& z9*pc!oGC;siPhaE*JlLHSVO%sid$sNew|5M0+s3sN_flU?v59G^!smF0=x`uRA?UK zgyvBvXDK>grWw}~uT&>e3;FDboZ{5@@k|r1j^x#8O8hRVk+QsS{TwEzrljE!u{SBs zk&*%_c`>z?!ah5q=*dXx2=#P?svV)8J)sImDDMajaD)me>)jd0v7~Mnwz8WQdaE<} z8efp04pKVILA-hhuO7tLc*9qdpgyf+H4>KB3c6eR@f^rxtrLKWN=-LjuBsoej^^7M z?!6aY81L04yjV!P7n|Roui=nZRiIKH=)&|aZ2K>}Tl@3jc(e^k!jL5#aAg!8tJ~U* zlxk!|k%q@htJMxlv_8Usp-N3vnd)cPnN`;MXb+SpVj0qvnlQ3z$x4<0zNSA?&`J_A zbD|v{ju2MNr7Ia%58%D*`63s4iHNh$6uHkw{$-3WUP?2WL`hkXU?t6|>+`%c(jgZU<&>x6k4=6Qs@ z2V8;s8r*kbeh=mk;rCg#n|1 z@jx^%6-YyP2Ewyp&js?~E)x6OXNx7a7Py~)d!d-KErxv=>`#fswl6U0uJq-P!f4Pmsj5r7}cv>xqO%?J|nw z)+bWF1oL&vD&E4{TAt@EoZ%V1P~!01K+YG)$%zoBoi}XZ3ps~lukgSj-q1l_lm;H` z8y!wZbg9@GW|0_<@rBa-z8)Wthx2K(7@3)!IZBYDBMB>>Z*y8X3kPa^T`Uaqd$Syd z#MG>?aG9=59l|$r7I~D)uvTf2rRaXw4M!jxb$m#->zX>xBeD=COVFtq42$QIW^aq) zh^Iy2>BTF(eSE)}ntYVXcdZ1Z7H>nD(xR|Pk9b>T7Vjl+>A^x$+mKph6ef>C3v=2q z9~*4s6=>m)$OLPfMrDXsvO?c{H?-7D7p5w7Q-|}-QW;k(vq+5^W$ZpVvq+<4CJT$z zVIp-Wmv6Il`wzRVvT(Buty07KK7vHz5iC()n~6N~Y~uvqLN}r7A|uSKL=sakB&+T*SdEfE^Z^S)+Vlh_XL=`2h0g6J z?n@guY#(IbW|Vy8Yu)Xo`0KwGUZnx=(bhn(rf3v?qd38oH-7c|I^GNvf9ZYo9HoH( zu_0Tj@d^BY-Hx(wln~0o!-ZZ;j#^S!Z~nCB-EBO64jOmMx+L*Mc#&DHBm#ttAHl5;pI?&@+iEW1cnUt2LrV!gMr$V zBcAYfWI+pL&K3v~tu{uUii7AJE>@>tpn##!SfNDaoV6Yj?%fma z!!-TS8ftmnMvf|^u*OJq zcH|tT#_WQ^hr*Ro6?1KxSjt#21{0lO5pPjMp_Za$Ako`IZ*Iy9w>x)8QoD(Q5+8v@(hWdfrdE}slePx%L!4s(MmPrq&=58xf-6Ig5ls7`QCr;dFkiW)Ko=tnn9;ZLAqWrle6($Z0;)tbTGJUp0`A zX^?FQVV&#d_v6tMLYBo$JusBPzklq30jvg|E=En%)P3%P-PNe^o2s*k5N;T*eA17P z`Eh0wxugbPrNdJiSU?_ahHzyo#KwU<#^mA3aHkg%YzvH{2q+rik+zlrj#x;orem1pYb{aU@5`lo)azD&KRU+W;IzSytTpGAf+RWb5K0if74 z{Lc6}g_ftP+bAgoY4)DMrU?>m_gaG4!7+?yJ3S5_k`|1^fv3HSk9Os!Q8uU=MH{cn7!yybpW=c)2hebo{nh0295f7?=Un z15dax`+S#ywq-D%av5aX0>96IKLCTJpc#k(5~a+ZE%mfD!oCn#1*`{N0`?&6wA9P? zW7vNM402_*;jYXc?&@iShSXLH)BSg-@>@hNCYXlYotAMS*F5m$0I&ca& z58MDg1bzg327C^D0eHBfY=OssARruw0aAc;AQQ*~3V{;92+ROx0(HRSKr_$^%m-}1 z3ScF$8dw9o0Bi!b0^5Kcz;0k4a1b~GybhcII)O95yTC=@3UC9s1AGX41pFNMwHvf1 za*3_KoY{xSIr}iV*cK>fwvj*xFcydgl7MtzI#3LlfEmCn;Bh=_mHXS~z-)y%59UIc zi(xK<`4r4Hn9ss|4(3{zFT&gia|_IuU~Y%G3+5h}`(Yk}`3lVAFyBTVr+_oSB{};F zt;_kdr@BsEx^y+3_he+he)iJYQ#TT^@#w;hTkj_F1IfH(;0N{SW6oc_`rd`pm-VuR z{C7>t`u5U$kt6-jE4+-&S32}RXK$WAd;LQ1f*T_xP`jXw5!5rEIP@@mR5D%At3W-| z&U%zGdC=k1RI{~RpK+get_B?1nfr7!zkrSgDjMM-K}qwahaB1($FEao<9vuY)H9gn zp|c4kX<$UJl4dk-i0D<)Ocr9q^M)9QlBQ}fJPfb!RhacTn1W`fkEh|5&#q+UStC>~#^LQX;iY#zEaR-L;Jorz4M)T2mD2W9htH|NB zGQD?CNC+nii4_?>LE28PV<=xW^d8qSxG&c+)X8m;wpi%5t)*6QtamuJ@*(-6nxQ<}QAnYvW|&|p7S#+FENJA6 z8hMBW77wyWVOc~LZxMReC%kshgIwr?Oz6=2n9!lTdbCnKk5}_bbqXnN1P&04U*{L# zc!}|Q1&rT$;1=)+@MnMrlQ&w4iI#y00?q(efNQ{qz<&Zi27Uqj8u%^n-+%}Vm=tgW z6o4-<5by_v0V9EEU=ol75Yv|h7=Rwe&j@=3FcYW)T7bpCGJu%B9>(to>~907fh)jG z;12LT;3vS(fnNf@0saU0Gk`4_HZkA|(2@^!klMU~0l*+&C=dXQ0El@E0m6VtU@R~J zm;y`%Qh;B0LKva8aLQ>7USZ> zmsoC`y(!EqXRcqkeKwmP{10!}k23grC9ptB^Z#vdU1R%yY5m8MgbceqWK1gTark

I5?eeLz06`vo2oA}{s+2`+cNj|^+ z*&o1IAga3}Ipby#mnhW;$bk8~1vU8}#oikbbTDbSdz z3Wu8g+pPXQNvX&3jFMDOdoT3zBJk4Xb$7 zi_P9Vve5(_k@jTaFXTWG1dDzsvkZL9fAEmMy}lkj@h?&W5~%s98Bx=N;*so2pwq<; zB4~i6EFtp;V0ee-2Vlw3M7?Mb7Jy**)9Me*A*@*yG^kn5L*pwYrFf91pxDsGcU=hD&cJ@8zs4ekV+lvn7-^9fy1_$=wW06PB8s|C{LDe#{v)lI6Z@<#KV^2SOn?b{$#qTJ!fG#oT;uIurQMPl}$+Oztz<{?4;&Aw)z=Khou7X&NXX?V>OJhm%2GDn#`fiiO_w>!F}P;4t% zTDN{4kt{W38yQAhqRtm->Wj$N&r}n^J9pm+1M_G;RyUUB6N)E{|Mwp0nE|+m%>blA zXQKVxjN2%v(`79G3z>9zH$+w}bg;rrXn$&wOoc>8IV~2h)rPEE7xNZr>pb2fYhAz> zQk#R;+nr&ibIep0j$BhP2hvPrk&r7H&yfqYR+G%HX^rPG&();DmdN*N&QahDxl*1` zma8xOkP^3CP~rx9lM?s3pv3*7Hz{!=1to5^4=Hi$eMpJ>{eGmx9oC<+r_WQuF{$Py3r2mOAI}>@^6(Xh0 z3;UmZVGag!ObmJ`5CKHNf2zpaRtU2U;U<_fVAjBFfIn$vp9E|GG3L(z>wpcwX5b~@ z72qUr4!D5lF5|gduzw%;G4L~h81&BpDH!5W05RIp05Q|EfXx8ylll-E+K*s<%nh=K ziY0b4_9)RFrukxMQic6XgKWEC?t%LV%wys~wreoIC-$^`1dVMPw6eK?5wHR_U_G!y z!t9?)ylpPfzPbSefbr1GPI2+JrNN#Ll)*g%?i!elFk9d^A6N{m09L|(pNp66ILx;Y zeiG(cm=_Ut6}Sn!4}1*&U%>yjF#iW82Q98l>TPp}2GL! zPg-I76qr+CCc;dCnGQ1(W)@5X%;_)-VV1x&!mNOa8OdG^vleDOOlXwtvthQtd_w9^ z!Ut{W`fAl8_ITaE<}PKQ&0Y^zHeR}V`qZWKak5doV7s7~Mew}}$S3&w$6eE zE@NBTiKVW`t{%PgndI}g+SxT}m-N^byY$%A^IejU-LOCHQrD-q-|G6Q5gWlV2ycq< ziVCllXeK1+WZ35&_9QJaB~iyH*2_=>3LDU>$f-IVZ8YvSyj4o7IBP zKjdPhEj`%o{F`p8OE``nxZwB!TAC&^)+#l-cqZ%vhl*&?&_WN7)zNkYIHYJzR#(9) zG5k{5EHfj5)dhPvCNZS#}B^K!tBqf+pu1L?qjWI5YhQOd1Zo$SdX`9*2&_cUz#6j51 z{!mQs7W0 zC~Lx$0UD-#EIT_ZS~YF9HMHIm+En@Y?8>@|N|mX$zG5cH23YrQmh0bR7HqZT0#jI3 zFkcg)jKYdJN4wISWmOtp7U;;vzA~UyE$;eJGz^>M09I~LsHQy zyn`yYuCk?}vVz2%hVqJ;kbCMID(cOZ(W*cy6mZ-^sjx!Dy(0Mp{=~1}D~;)2qcna3 zmO2`8hVbeh%ohSA_Nqzo=AhGIufaZki!?yZwEcw?ld5YgRdX7vt(B@usxL>;ictXi z7x1c?BNz$|WVDXtsq|XIlsyGAf_D^|{;LWMdy@W2fsMuCeDQ#8tx6!}Zz!i6oWU_= z&*Jb}*ijh5h~Ap9LS^<=7%R-7GE|5129bAbsIo=Fw}kL;)_AhKCxiLSET;8!w9)#8 z$~tPJ78FJ_wN!eDF|AvON{Ar%RSC5OZ&D^bG&^6b91k|TYt9785ii{Ai9EHQ+0GvD zKS@dg2Eai9A7iW zcnK_s5dyJrLZxSv1k(VmC+TLm@ItZHpK|TVG_SI;sk**S6{!tZB~&(3r>$Wa-6hzj zqvfa7)mGP4s+#L-XV0o^5>CJv{yadFs7~(ZIHogJ86qJ8w>3hEzJuYfQ8;`~D+u*>8yY+5R77u|Gjp3*!3O(ja?b z$Bcaj=WU>|iw5}X|w4jD@gc`FriSuyO`J!79C9&DQh zdowT(SO_cumIF@%tAQ5~Z!^xRbilq3cm?iP;l2p-GR*5RZy}uzVJamO`v8fXeUL}(l0j~jX0&fGfOXnKge7k`@-_BlW+Fb`M= zKrXZ|!}CwW-032*b->(*blw0?xD2s(y2$LOk=_Nwy#(Aq_#LG6BbcAMxZ8dWQzDhv zTp^#yr4qY`RBXdOGTT6ab_l6};Xp7zGU6ENU|Tfo@jyBNdC-;x|2)WekOgh!u+M2V!KGDu)E0y z+XG~reWXlc*T}^70+_`zfBPJn#D?v1wgob@5t+YjIn0$ZPuptvt%H37;%t=-weQ5b z&BGVt-aU&`P(t8T?E65R6zqh$@%{}+ygJ@pke)A}x}MG}?h~YYk4N3SdaJ7oi+KHd zHs&~_MJ(!doxPsT4`G7b$PfL7IMheU{3A=im(G8)G~Sg-eH`-tU&+m_=iGjztjET} zcse4^u*FuL=+rZkj@uP1KDhH{7i=?!ObdZlKM<@fjywA<1INE88hrgBiBr^NMooCi zJ{}X1Q8OV8=bOO=yQF1a!*OV%MoR~t$svP4s4o*=5Npq%=~S)MbTCV zoprOqEMH}no8?$b(Latj#+Xh`XP}_L=J2H7L!YEX+Ki548Hy+|+1yCy?Piq4k``V; z8^&>JLIG92MMi5V*c*@RIC^YRGwEr~?yIcsX7|ih-IA76XmUOCJ?RB;s090_=}-x0 zC>R<1SL*vw@V|5k@R{4F%i%l@tpL3aw_s0NNIBpE z;IJ}t49`$KV#e-!eEBbGyB#N*|D~Jo-}Q3AqeA|!=fCR@S2j8nE$C;$`l41ER1lUK zJjIZy%%mBL`k$)MO9&Su+|`MJq0+PMhN*FRfg+F zGVS2prt%q342=Rg$%zJ4Ob=Og<+Ca$<01UVI5rOBS3NKvI0jq*GBK7_0Y`C>L^i`E z5;zev8{=9l#_RJ%bWu}>FC?JGpXAY^;ke+c(SBC-8b zk-zF1zs0~ZxHrMvitud+ z-vRdlZkX*2*v}*0#|Zlr_!azJAfU@2K)XYL_7scl1I5Ga(eRrBOoclc7d~W)z3jQ- zq4s>S%2tGNvlOTVs(_h59q>3{MH+MPoDJhF1bO>%*xPW4#Ip!{4(=CV-vB!B9Xhj+QR;%)` z6teqI7AjlJqqJR5q%m`Jvm1riiZ$H}ul{jv2!8DE)Q{NSI za#pZCO*V?j41qqy*!MRGCdI@rSReW&HVHzIaDdb? zM-w}Bp9G$npLCm9p{S~;GrX##Gu+VOQyelBlQ$M-7=s1@r;`RS^#GpaoK!lAtRC&% z>ci`?BWsJ`xlizXlROPwKE<3HH0!=VAW#L&0-ganfG!^#Ilv^S63c~Ko8n;46myt( zIlBpyXALIHMu2W;nhz`kNK3vB*aU0`UI*R=-p8{)Mmqlm`)`2X0e=AKeCii~1e$GE zKn{2S*x_UI0s3Q8ic`ZWs4nH~M%RVA=gwY#=lz?BGB+Q%&YZn;szByT)*EN9B*+5E zcKz(>JXsal?p(ic^Xxmfl4P?S{-@56w+^W5P(C5Jl1p{Jl{|V{su>VEI zF>FEQusP0uKCJBuAta(;{6$cU!;|r^tDiliN@Z!RtW?daoK@dAcNi^d;lHZT+ak%t zEjd_!=NCCLmQlvSGQSQl$YJHe6EQ;uh*%wN(m_1KalTFtGq43z>Ka&;inRnXE#I>s zDC{C=5|$!yM+S;ef-}g_rpOG>;)HA+k2jE6cyE-6=Mlcf9|9O;6CZ~xW3FzR*|U^M z3;47yJf1`c+Qo6UyO|Hy560>`t@>hvGX#fTG3#HjN&ii+6ft_t-xU8}EwW>Gg@qbs z(g7E0IJ)3ok+*^t$^{v^w!WcZuA^-_`z|^gzjH))vnOUTXJbcua|q3&n0Da(Li4>w zN7owm^ndC{f`$S2Il>$NaotCa3L^7kA{exUE=a~bzQGJ`Tw{X!DZ5$%d8{U&3-LHv zOB=N#*{4`0{;zH;%&I_M7s0f$p1wtt1yFy`%5ndqDxtBuxl#ou;(2b0ihxZIngeqh zDzPEPTG?dn-69k*W^_7+fcjagoCH+`4gydjt{%BfR4lL~S*RL~uxX~nV)?@1UL|!<2hqQjX-7Evd_qpTvoGU~EJ6jTgmJ)3Z$~4QHnfkDV0w0{A(5Vmx%VLL zfS9Z*iU^4eF_h2~&=`z|hM)m>7B~)Y&=TZ8OHd0mGl_jJliKGqv8^3ifql?|-e$wF z{o2E>g*G4p+JH=G2Z}_Ttr}WUJN(w+ipp)UABTqEI^4HJgKc-={t$6FNcNssjt_+y z35s+Xjuo3T~+V8BS$e1udx^fJT+hCEB(?TksP6x5K^* zH~_o`oCIzm>?hDld;*g+3I7B8pJB%=W)Fu19|H}*6fhu3;(oSiFsH*Thgl2%CYTFg zZUhtZ5JG9VA=WZ|SMCBOYjfIkZ7|D&<~_u^le{~tc;{qI?T zzi;d7KXB_{6HZS!w+;$c+B(?8f32;9_t=`+2RNF)!m41C(${BI+`;jHRdFoVd@WYR z9YPB!VdW21!alra|9yPNj*t5HdD(}&sdIB-&y4)lO897+K2?S87EU@jR?z>CVrDFf zqdC%UxjL!N6D%t>c9tvaq?uS}mS+Cv*VCbs5P<(?xkHCeO&h12+#S9>Q-35){kR|5 za2O}G1g4;m`dpaW5#JeQKjum7^BdS__S5G=MNZS*{p#^(OmI!WVIUbQ@p524CcHdM zcJ;vP%-{Y?=550luxx$+&K23mV-kx2reFfgfT@Q{+=fZ-RZN2K!~H$@{}_{<7?X_* zaL42|3}zry+#@mZXy6`;$t@oDCF8b2dkO4))#1-T?fo1kyY-mtHgPK3R!m}0jo)|Z z-m!!zv3FuJJB>8XA^i(Dn12cJt^(NGhMS-y_TO{gkb3(6Rw@0EcKXQcA5#K~Uip9N zUzq=m-#PjJZ<O75>B|?EvUzBJ8iSod9ki>?1Hqw8{TxNUN{(uZ0AU z{R6g1kmeI0^=H7$g-IL!Yv7N40`_?@*F)mp3Ty**0K4IT2hYmB`_jL2K)L^;Sghy! zU&}|*H&%sDfpN@bBug>e|BbCFI2!zsYu^u)j>qR&*@K_rN^pFNtIzjeg=ndn35ogI z6hnqiphA+4gI74C|6sI#z?kbiR&y2`p4)~aY##CQ+6hx|(kJkclZF)CWE67JITkmp#-t+TO;G$#B$@2|}8pI2bt zj+`gQ#!dZpQ1Z{AqPHpbG`PqpM}r&FbIde}j!Dw(NY3rja?kr46W`# zP~U`InDuqhs&cEfyrOCrTKz;}@sSiUlO&Xvo6!ENtg~wU%JFTz>I$qm)z^j9<8-n$ zw8`37Sw8FQeOXV6CEZo5JpkL-vCb=@H5iK|#%oBRjPy%-SH}*^?LX>n#tJgN!$Z;Q zIEGJs-FsmB?|MRUaZVeZI~P9XC)nxGM;k5~qI5YUELfh#=@ld;K~gM9r(~K?^5Rz0 zO0#f*gKv`Xm4+zn@@UZa$I6$5^Ic(x_o2%je4iG)5fhs`q+)#_f@>;p_*Oz1HAr)? zEup3B2R%VR<}EB;>*z`>1X`RAP(-I4L=|K07%Sko<_X8?lVkVcwl^GK(Im$1!@XPB zs&CX7oS!fe8#Ss}U4zIXTU961#3ta7jV2cItW4IPE5heNq=yuUk)}%&nHAB{@kNPo z(mqODmyhJa0&)I7-^k$-YPFSb&c{+5oU1JP_{>0lTXTMp7qoVkd_#X9eAWy*RcZY% zi1rf;rl6Vj(4Avu58A`uTo{yPDMaxEWi7Gl)eCravQi!EO%KB{CP?37({dhivLp3M zo(>y_S6O%|Z6kn*12T^>im#67eN=4|topDo1w7LmrzcV2(X3u?^^<~?l#2`bss+N~ z;Be53FB23RmifR&dw=zi(>?ARbsg_Wj~!Q59a9Q*O6&0lzrZI_^jIoHNTIT-z!3r$ zZDEGKlNA=bpLI@}IP*^eH>xH0?*-SmxV-ld~6qKLGu)pC=wz2H*jlj&-rW3P$`a%nvyk zHsOk~0hhBYuw*t|>}?+{_NEQAv{}}^78`Q0EQZ^P{Ow0^W6>$t&%y69%8$c(XJ&m~MVebO& z0^bAv1NaE|De!aP*TC<9KLCFMz@E|xSeq;01^57TE7Blf2oL~_0D^%KAPlEfBXN3l z0_>Avk9QetFT_dL5}a@~!mk3bz`q)C`ka!rFNPbpC)uBY`7F$}F8=nDI4%1Q>}Qe2 zRTmH2bv%0u_&)sp6Y+im^Ap7TrOVL2yo89AL^`GUrG3P`JBNF3OLu&=uJDJo#k~73bpOx);_d&X9*Iv(N=`{l`lbDvNrvt)E$Xw zXVllvsI3%|$EE+XXN66vs-09>H+-1Gg?DJsHqC9)l6tx_GGOup9zqTtF=5U!409Ce zccVr4xzYNc!FwS4ne+bVb6q!XW}oZIb>9B`*Iq-44=ViQ|77>FDD3yxJ;yHxV8OZP z?`Xfm9xG!%?KfU57Z;5$A+O)`i*kh{%ITQk4#xziBg_kqFv0O=|1n~PxM++sWUMP3 zW1Wt1?r@BAIy7EzXq?YPh&{zc5zdfES2!Y_j?wOLjCMLgz2FFSJ`*nH#YN%H5Und5 zTEQ{6f4(~$`GR9XzfoRrjB-BXA@+7HO3XAQW|!>fALH&VE{YLC6ayxE!7(ufYC2ZMw{9`mF4K z-(m<(%|v4`^heVQG6ctwBd$N%Oi)~~fgGhn&}Q<3N`njF&<&wBqYF-sgd=eXJ(Cz* znh!_j5Imy`$_yq4qYpIFZEKE`psTRf#qcGWUw31f%LAt*v8E+|*FKqHO$wK0Q6$=g~0A zebl{2`veu=3&J=Ptpcz@`Mw5?1<0HikG|O8uM#xvo32THBsnbWr){h~93Q@WHYm5rufPcfM3RWuZL`_HHV)I0cQ5l+NfM7YjRgq2VsIoRm@J`9g$ zkws+0`2`$D774f5hI>oy6*j9GhqvBNM-9V;RXx-~O#r-vYq#-n8^KX1LSa%txzXo0 zSE1POt;7&fXkf1!g(h4zfO2$HzoaG*sZ^FJc(u3zD;ODO?JQP9M!`(#XVd5gnNtR+C9)0IM;PIf&tEa2E~x zQTHfzr8|^e?+#->=+1`QQLYk^c8I>QvZ+ZG9y&qz0+i$AH_n63sBXfoanS}3`sPn` zcr#}h>WfwXlzmc+Cf;c}Eqb|86N8FFbHL(0K9Eit6{M^8>Gg6n9m8=S427J?Nqi!! zu@G^ktfq?0JXTXfW+tntB{PZDEFyC6W#ZZK?nJzd zj@|Cggqgz*;7sh1?o#&ly%!wmc)W>}zN06nZ$103reUth^2=04zWgun<@Y(1(h40Y`yT0DVF9L*NtOcL0ZduwH;a z5Dbh1;sM9uBb@5xRJLcZKXx6=y)aL3D*F{I_kRHMQ<#5%>4v3$AF;|F2vZAl3QQf$ z5}1uJ=VG6%^D=DvYTUoIL97x!Vzdwbbj8Pc0H2??Ulk9*$yt@{C$Rq1)22f6{=?`%^5-T-}Ui7wS1 z255kAU;>Znz$b_!!v)vjxZrxUtJD?^dk*YHu0w4`*e$Tv!;Wu{ z*q(%asq0YtN?Q}>_t?%kPj@1pFpcW)knRE@i_Az0%gH^<%#)we+8>L()k ze*n+13%q0huT$>FwdVQ`riql|wj&=7+>{Ti6`9!~5pH-9Ntc;%qtFU7E;d@`w_=f1 zstE$aYL&p?mRMcP!Ud7x2TfRts({CVR$wvE z2CN0P051c3a3#WfFs}pu#UylTqW$-_JoRBK(7BC{(1Cu_3h_Dpt5H zX!q}kdDKj!7Dhr2{1GA&K0UGh7gX8!3`O5C%`_q2ZXrz4?5b*Z(*!k(eVbjX_|9;B zIl~97USlRRH%6UFT&BZm5nEiaDbSOA1d+gs?A!3kEb$T7I&tZrljxRVu_iqMBB{l7 zb+fC*<%nCIi!;DQGfD_>Tixtd#X2<$lQK7SQ+7xVrVd~_9vOhZeyNy zJ5$)#z`mJz*!RPJ2=>=uzs*Fp|3EAG5tG?}0z0OC`)`?x{lA$zuG*B_l5y47nRlQvgMV>)y)JQdukXF{AAa}Ff4Gfgj%ZqaYQ7Lvn$N~DQFZT$ z4Sv(e@m_h1B`4)4Bxc~lagM()R^njC(gzN9Aljq9Z$k;BWoG3V^7E%pClnMFz%o5= z`gFte>3M|(`FVM|$-zo5CC__%d;9u$dn>(pPfssT{PDcf$D3FB_Jfzw$ESaPA8#Lc z@Lpa7C4RkO`1ta?rFKl~hPO9Sh%6}%em!6i z)m|Qm#e0EhpMFCo=n6}V%8Vu=Mxe!H!sS0?GgX?(tBIDJ>}*3`F314^xp}#U>3IgY zb8~XCGgD*32jL}^O3K{B!xQ;iekXn{$TdLYEZL*c1Z z`uPtX92z&RsH~{0yu7T`R9RsH4Mr?zRG>&I%FQNIHR{Nam7_<#29!l!c5YsF7HG@L z$gkk_~9v&XSZSbE-!}Nl} zqT-U$GGn=^!dz*YQB_?tvvyWpeZ%98P1f1Xb6V!MKJnzd`3n}>7A;<~blLJ1Pd)ui z+dq@wZ#Zvv1^&=T6>_hB{zFs&W0SJ-OUjI8WoU~P=o==J(P%Q8%xH+^D59#A41G=( znqCh6=T6VXZ?;}PZCb{(%#4hT)Z~N-nto{KXz6HZ=%wg)WEWaJTARWHU6q<40r|oQ z?UXtNwM7NBQS=&xyZ1nU)zA@>(zB-*gO*ZbnX$C23Mk7ss#k*;$|?U6-Dko|cptJ7y#XC2tH~)EB7pc`7L{WR8C62_gtY3JL*Tgy``i zn-J>m=I)_zle;T;p8+bB7T0wZ7K515l2W6wq_o_KKhR=CuQj4*s#4N*=!{v@vapzd zu9-DWKP@XWJv~jAl9ry75H~S$L_g3%{Zr_oN)HS~Lf%vcLkN5CB}FBmrnI!Aq`0K46#p@jl?ep|S~90)>od|avNE$WGqcf3GEpQc z=}9T6NeNRYjSC%$3i48*G?1y1M@zuKM5TcW0fp3ZgqlGk!hfOC$Ws_cJ>BJ=s363{ z&j58~e5N6&jFD=R}ap?*qB%T47*(~J~dranurOV6N&qR*O^q02~1N=i&h zNJ>tOkBglc7C2a~4h{$m4hkAIazvnd#E9VF5%hJ`5rKgt0|Vg^7&vU$un|Fl0mFv{ z4j(prcz}A?kl`bS;UlWUR6~aO4<0;JHEf8#zbZ&NIx9b)%B2vUsT9QmGC&P}i6T=) zHOfVgT0(K?(Ntift$>WA#FWIusj+cWqC$rTsx<16qehMl4$%gU92qhyX!!7v!NEc5 z5uh)4R8X)6zoSM4sntQDA;Fs9QQDwU+Q`t5&{4r7f+qMBnv$BDOjQ&c8#7)#Fmy~( zTwHuYLVQwkQc_Ana#H-%q*Rn$d{Rn!TBZ%#g zEY5Chp3{u~EweYx%K?{x@+dAsGbt`bKNd=)tQ><43dn+nf-z;zE0X;oqT6S(uem3T2eNJ8;n3clf(&7Tl=oOZ#+WOkc>iPyO z=Fgckx25HYC+E*!xM=ZW+mff-o^E^Q>6OpgpId$4tSJvgg3%vUQd*4MK?~|e81+Dp zB|QUEEJl<}v|98c9Z`~=nw*#r9}iNZ$BY=9mNF?nHybO6pf@`s$B>s}$jLF}=I7^^ zptwN`O2b$&qq?ekW=(Z%L*wJk&9htPJ~{8nC+01fKY!knitEcob<5_h?d{vzUq4roOI1{gv8~)xT8yCu%>`v+DmS6+R8%FWrt31& z)2M1Nx}>M2fR@Dg_&7A%NiosU+Q){PTbouqwPJ~F*^;G;m#8Dq& zTD5ZJs({S;as8GpTVHyqz5V4~yE{5|2VXgI#gA#we#tC0Y`uq6<;EObGQ0oU?NA zh8NeZUHkm%=kRBL{)M&AJ-6Ea+}an`y|8ZG`i(EH-?VZ4`c0d*ywv{E_MJO+@7;G` z-<~}Oj~qXC#x3k;?0vM-+uerN%QnVwA;cWjJ#+xW##Bj=t-qz#6W_U zG}ICG<#ehdG|x29f-XYcdGf>wV@CEHx%l9_?_D^5?(F&V=T4tFed^Si(ba7EJ6$`o(20DympVRT@aZ*pCv)zyJeU(1p-+sXNC^7#|tv8?@r}4{zVP zefRwj?%ut9=l1OzH*a6Nap(38q<-TT{%+p5bLU1^*R^Z6Zd~oUb?e5>TeoiCx_R^3 ztq(qU|IXdpck%cB-4EXX;M(mU*o_56#m3U&A`pZ+Dn(zy*jrYDX&a+VX=R!)#_7>V zFuAzL%UJcnd-VgmMAO91uB58yy`QRR8Xs_iw&)>(#<-*O|L-Ru*8C zGh)~+D=nhgnx+Fx*+dE&P#MYv(goy;-068F^5lTC(`RO+rKX{pCPzm;<`=X3-J93D zu3cO?IWcW~QgU2uuBk9GdxZ%wBWwTvz2JeM&@BT6#+2;afNEym#{lPhk!!DF<^2o(})% zA4&-0jf0&jGf&GhkN{YipPOG)fLbhoSPFu2b8@qFsZ&A+4op9E_0El}*H1J(xiT+x z{Y=B2CqqyWW5!Rw{-gWq@3qUtE}9P)wa4|3OYcL4H1@ z(rJm&;p0a~M#V*sGrjxa&6{WMUYb>c5udnhkV91@lnm+&tr&f(w9K3Z zDHI9=kU{?h)~}dac~Rl?f)Y|3)E&BUJn zS{pMqBxYhnbj;YO7_D|f*yyN9Q)k*w-r1EFK6-rgglKK}+>3XvU%&9d(U~X|WKH~k z1%^0GOC$}H(-@3@#U-Y!Y*bM}5z2`;9E4K)7W#h?x?XXysrA_1>s?o_9f+AcdR$EW z=%AQ{;P8xypp3Da*yzaQ*wD#I>d=&NQRxw3DU-&=Muo@3O`04#_tXaq5~7piW71;7 z#&5iF^Tw4c-`iXb{XjWJTgXKfDxo7a5!JzmV}5heOQ)$jJ_x` zxnkU;8L<<~Vn-JwMU>@-W=) z3)B)-4@Q1;a-s#T1LXqVh#GAXH727lOHm18ctiukBbJIKZ{E6k>AiCsM@0mVN*U!p zHgwG7i14XlAqkNIqsNbkj2sm`L8X}-HX&9!E;%?XH6lDVZ0zLcFLvr9663-r$3=t| zoV<1I=9$}XH<~Qq4Jc9kn5a0YKY{;6o#YpS1|tR+OjsoLml`WDjUyVBAU#o0QD$nM zyXwuZi|5}xy>^tTa{8nx)stcy6QXCOjW3@*Hh21HU3qkN_4u^vNr|(PV=L39m~+RK z7LF~Lwf*ew_>7s8CRL_S$X#^$`lV~<@9wIrm;u?D$^>~3cS#d9W&<>qq5`1U2)-E| z7)=+A1@WNsL3DxTgEFeDV&RGx-o6Y@;NsD;nTu^xGM6HrSJW(jdd;~jr(S>k)ZzTmC5;2K zt*VMA6`58(W$y4Pb%}AsMWbg`1~e59nwzhfVH{~PX~tB=1P?Ah{?2=gg2pyP2G28$ z-hTPLD{r5>{zN(65{-qJZJ~1u?G|m6Xelazv{IG@T7bV=1&V2IOIkU@`9e?fQs>f|>mNjl&+;r^xyBFTMeyC2+vO&!zR1mrm-X2|vco_O4 zS}?p|&c;8gMzaZpLbS}NtiX@Ca@Ny}7aZ?={k2zLef4n1?!8;LztY}uaPz*sTlVdJ zY46^H2lgM@vG0|ghYz(MKD_Pt(Y>$k+Whi?z5BNxcNdRb^G<;>Gi~ZrZqc z(`K-;JKA5~v3=Lh9Xt1S?A*C$_ntlb_a8jCx1;00L6}EgIeh5wQTQA>2D%UKJ9O}s zqp!aD<{NKyp6omg=5r1;TXZA*V(cYO4(ugL1^owor?3zj+EUPh9!(k=#KVy2P^6;y zTB@oov*ts%+4SOzn>KEMe6jYq=bwLmwDL~_~QBvn-0Bo;_XwXPQG*Yl|~v^Nc5m- z8lx=6H;_WrQ(T0?ApLn6%>e}k1(2L*ctc#$MWnJrdxo~f=pcg0@#?bx|%`}Un3 zAY}KRy;M8<4xm_$9Rn>F%)y~y_>9xaw@#pzI#0gaQ43n2g2G@ztR=}M#4v$#0xbp5 z;~Vk}`Pl~IrBE)Uf7vD(+h6W@`8lKgnZ=8rSlZSyy~H+e=JEsR zP%rNS9lJVqqT%e_cks}G1N#pgg1CC@wKv{4Ul9~UnwZrm-+c4!6DK<_?5sxLq5s6$ zg7Gdc&d)=25G}|aq+r3LSWkQ%^(4%TG#`?1i)yOGcvn?bYhAK%ar?HHcfGtyx8O-L zR0A_hvZhx(-mr4_4r(oExTvD-+aWa{K5_`1`Y?z&_Udb|pD!8#J~$-e`L|IlCpu5P z*FFP9LYxVDF-^rKU}_5ria|+UUS574q@tXhVtpohHJY?AIhq7k2LlYI4l0_Njf-rH z+P7`nwQuE!3DbfGJ~kp~SWJc{I>Y|*_8r@|??5eqoSi%N?%M|<4j&|f4j()I+8gKc z{2`~P!`6Tn>PnY4SU?Gl?_dv#(TyRLpgfB5av*%r3X1`jB4|@{4f$wCf})5TFb3Yr z3iMu!xoYO)|DU}#fvf7w5`DLbXe>2oh%t%7fpa*(VV>uC6i^UB5m5%2K|n-i6p%p# z5yV+hQJjZ3&qGXNrpjDNb#;xY>Po7+y874sUU%PjU%kHN{jYrvf~lk{sn@^X``w$j zVV$$*Z|(K1Z_VF6Ep07F4j&siyE{H4HY6lCG(2iWo|k9x?qf&kq?0GW=mdzI#hbry z@fC*jCER%^^Je1923ySnw>=N>ydT`X|G};Tu_AGbBxs01&BN0{8L3Oe8A@G(Qr#1<^71(%_Hd-oqaeDv7SW5PmP$U1IColdQaXMkj-oh3j5CxLVlg*g z^pcFG;;P2xrbCB@hxQE(A3b~+e2$$se(dO>BS(c(Mvk92b@BvS2!=rkT_WytuQM%a z2@+#T_szTa?!48UpNl1%x2*B4&8xu!k%Fwn*%6OyMHJePDPUM5de=3#ZiMCs4h#*C3?Dg6A00b(Vq}ERV<(RvJ9g^q$&=`$ z3m0IQS1w+@bm`LB)5nF6j-0uV7J9Jj%+<@+uiUtP<%4Euf~rC8uY_k&f#NNT=bW~j z6ycJjL}HiAh)pi#0CCqW8T%w)B?P=C8{;9rsGzE;xp`>MzJrGj9vL}0eB{vZ(P8Wc z%!iSYlgH_;)6zj_E?hV*!{`#C_sWeMSFc{Xb>aNYJ9l5bdf@7V`>(zF@bw2D*TW!DG+bNJT8Jb;B}Xh6Dr|{TGL8-m9UeJ; z?8xw;!$*flj>9d&Dq_o=W-wzXoMkA13@SjR9a`Yr#p~B^-@ml?;yvW<-MbHdv;hT7 z`>-wF2sar*3>{(KC8;UNDUu#pO8gi;g1bRDlSpUI>Q%Yfd0FJ7*C1c28aENsqC?Btm<;B@NT`P1iLIeq@(`3sk^pe|jeUrt}XdF$T&O9w9B zzkBEIy@#)Vyq+e~QN}_TByC#S3Pv)chj57c(OV^K|zjgcW z-3vok@7=w7A6$M|xl9#qY0^8S@0KmgNMA~79VwSYu1F%?ixZb7FX1@044#0*IH3#X zAHx}agbt|PP~SXsVE+&i(_x7i4-3~G86K7~4F{h%gNb>DKROArynYg`gTP+gL%brN$)S01}=C=xX&`E z@t|N9BH~4bg~fICb&UtHcZUugJ#_HEp5En;0*VL&3$A zF~%UyM$F|EM~J#}45ibj&z)l+oxgDP z`c-)M^hFGZyC+ZGe)R#!+VpOGLGD!SR zoNY7!LkMOO+qS%J{iaPr@Gd4VynE!x&@iYRWpp2=kKkbX<_x@h0cm#z69yX-T&~}^ zef9=S`|7#Vwe1cmTK}oR6;zTm7$)w$Is3quuz!iTE zuK_0sZlRObHq>uwf?*FGJdE5G{ylmOW}$-+XpHR>XU?2EgA;&;KCfDK1pcpIzjf>W zsmnLO=-8P%bkO|=58k>~f`KoCnL(uLArK+&OTsFJq(~C6cY>!Wi(!`xvBZgYh>M$( zMGXa{fpd!sOB)(CHtk2<9U2m{96lhDclaJLgnuRNBlIEaza&xeX9<~Gdo;EmVbIa@4&Nzu{BISO~gri3m@WH}d+?2LzV6H!UnR0PQgf~+En zhAoww1LHEJ$Y^Dbip1h#|CyL6k^hB!SfQQq&RAAp8{J zT$M1n`9voQ3aPy)UE92&W#hiRdk*a1cR(^y4C^E6a&+Vfj5Bil)VXtry7L!B=1L#o zU|)I#C2*TW&8^#X5c!n*_h0>ZI2SFWx*lo|rKN~nNsfrFp+-OkbbMlb3gP$Vj3Y!H zvc=@VlDsS|7F;Seu4}B`zGn|T1Ou}S9TT-Qa^&d9@CgitQ)kYdJ9Ux)B);?&5>^+_ zU%Yzdny?JG+o?@A-_*Lfy`!_ev#Yzin_Sw~p1$6m-k$y)yLav0yLa!- zT@Y^XfrFSg!$%Hc0m9>GFBxpdPn|l3pK#{vt%fYI)-puaQRzk11j-1rB{3OXq;w)K zHa>nKqApFfa3sc=MGOFUEnB2+At~LGs?OSVNkq}fR>SH^)Pty*9qgXPbS*(x*fBk0 zRR*d~(!5!C$V9zl5&pwt&&?{TZWuheuULF|Y$5wLWejpQgkxa{Q2iBeOJ_WROewCA=~LCtQO3L6pFv3 zjw2~4A$~D=5Hv#%cWT-}jiyHMP%quP{D_hsKHYdQ_VDISQ=;Z3@>Ov~s z*}>My#lcQ*=Rj`6(ct9dNZwv&ZKKz_dbzv1k~ML2b#-%fG&s1r+u3V$k(ui<(s@wS zG^7z+mZwwvm68UH;adh!LR>8Qa1!DP#2L`v7=8r3F&8A_QA{|fprEv*tZaQ};fg39 zA6Flyw)px51%(8J1d<5|3JHq{iwX$}3JNEi9vJEu7!VK|5=qW9Dk?fAJ~0vJ0wakS zLQdhj4I9!DB<3%;NHk%&n7ESROqNXeVnhqCPNPsDE>1P;Rv1H>=m4TGx%q{lQdn5V zK&tLuu_|@RYNQX^JD0Ily0)ZbZFyPg+KP&*@{-cBb?erztEgI6+f?6BU%zovQ}d?Q zwssM7+Xr`SAKbfV2o<((U*9I&UvWny^{^bBn3j|xd3PB@35ymphDa;M#!{gKzbwb# z#l1)7lA0}~ehFO!?-p10EY3*GtzBPUwV`H1O+)j>mQ5{ft*xzXt?lg{9j%)?yL-0x z_ipRkJ~%MAYjDs0{Rj3RK&dl~hEHN@VGLiqMEvg3`>oPT=?Gk0RwS<2EerrP{hPFi zAsrV>twe&Vrx|F7XsPgHR1-?Yc#+zOlC@0-G81b$J2rQ8^>lZ2^=#kXyKP`#=S~vi zyLaqlNbf&*2&Zl2=n>WE#8)CZgnmNaT)Bc7e)HCCk-m36?Gomt6)_gXg2KopU53m> zDbhXhaWQ1Y7bfAoVTfWkNNzuymy?581efzM<4;>K`PmRVLA31%77|1zd4#+++@NV3_d-KN4+qXXK!b8qL*2ypu zi3={6bEtqssDf}ILl0eWVG(xeE7DgI_r?_wiy^OY4LSh%Qd+U0BBy z+d!vp$FAKwckF;Fd-ve13?0C%F60n)@7mqI_RXWy?woX z1Kaxt`UiGHkzIo-yNIKG43}~k2j%Q3;)s~Pgd8qix=I-4+MS25-oqcb^I;cq7=~Pd z!oiA>umTng*=GzX>N%u?z$K0nHavU062f}fs3P>DIIoy5r4?o6-L;jOn_D(_w{L-U zJGwfzY}vAXVEc~2K}Z8aV%IQga8f|%)F~oW7!jvWqbsjnCGv6q+NG;^@87w1`~5C8 zAhindg4eMkZD|t!QnW_N8p>#4%)&@Yv=Wl3@e#LDjgb{dyo0C|okRzfm9E=bSDw|@ z+}_i~d5KS9fZx3LsBwA4EBC?X zeYKA=2#GPK(Tx;2%7~_rB2lX6D2R%Rjb~2QDIadpEAjYH5X4 z(qHuOMfgDO+86Lax*WpF!iQsIV{#Jb#ook|y?X8HjcZr$yjc(#HFOVW z_R}8WU5TNJ^gzhqNK0W9>PRdX>L;S9pa2(&y9mOQ!VwjXIuidCKcKj@6g^#Em9wRz zYs==Mf{Xx9ufWKV=(>UJ13PyQ4({1Y{OQmT@sNY!-y&fk3&KTu=$hbi>k`XxOXpO38_1T@g!yxzHmki0QVNFTO zlQ0mTJ$aJK>dY<*(mFafZ|UpVy0yEjSE{CV?b>N9mO>5SZA7zWmrRLRAQ;6lLc z#*OQ@?%omO`$wC_Kw6a{W}WyWgced#lPHN=l$c1d*usTT(a{tW%G3i+A*f2t1#V+r z0mBHpK~+fQts6G1ZijU{yZie4cJCY<=LPblZ{;8bLQ=Pd|8|DJ-PyCq zI{Jy&*voQt)rbL$9TgJ}E|C$G`pJ;TcEw;NwIhm= z&@Nqs{ZiIivmu9JMEy5ncl-9f?fu)f4-O813BnF^_F^WW2KZNFRVbu$EO@pTWmroD zoSwRS|HqvxGbAg)5CRqAP;f2A3&m@=B8;PmC@=|+gf4gq-~#iar?X&ObTz(OQDJFG zMSE>k*5OA;F<_7jG=pX zz@>e)Fk~hTNdPE?C{!{I{o;g0h?kg!agni6FibQtGBHBMV-Rl*5tC157-x+d%cAm* z8gxKMXXlpgZv2owu<73cRS>#JT~#$g7}TW z6VIrpXInQ#hTD4k2ZSVa(4M_i8JY-l2)#6X0xO1ynfSG^@0FW3FW9T*{KJ+8K#8^6bc!b=|Ny!fo(^PS}aTVJI;{`|dZ`xPV zM_8GJGBNDbpi44iNV;etg~C`2P$ovwBzPqm*bF&Tj!L357wZM%ySTKtqO+l9bsO5b zYa6J*z1#Y?_sNjnwR3RKJ~&q`!9)`rICSjf$q{l}BgamX(n9oJzH%KC^B&ysHm{;DCF)^k|!7!6517)8rEHtkKtWhT2$HDxFM^x zYs=OxTd|{h`uZ_=`*sZO-iz$rBbMgD1ALM)hG!T^bP)#3c`7ooU#^m#7V&bQX!B1y zRgXl7!jq$<>7(R?c(f4=W30K1j0}$!XOuXn8i1j;Kngs-CJ(Q%u(WtxXH$L7rj9LL zFiiK>tw_6VJvh>Xq8VjS?>TTlROEhCH6}QAFX8ty=Rk+}#})Exw{H_`xcBhEkDD2% z5|=`JEK6I0eM#XZh@csfxoF0Su!v~nZZeF`IO1fg0Etb34%Gt)-Qu#M$}RPEIUCzM zH@A0f#gyvn?M24yz?8yZkp9^N=j?`ohX~Fykd70ZKS50M>^TA;m#>PgE4Vy(@M#nB zODtJTZz2pvNhef+TQGH_A}NfGijGa<*H96>lDtPUf{T=U;5L$kEiJ0(uB**MHFkIR z^mcb`g?9xP2m|vniuUat+_je=gQ_2gkBZ<$*b%8Zd+8cB17TGRDZ+IRezF;fp(2Av zB5^wUh^UL|M?)7hBkCwRDhVBcLQ0ol5E*PT)WW_6Yl_j0rR7^28%w)-Vce~~!Y**` zw*G-WjD}r1_v{gwhpZVCgoqU(UkJAnRFtqhnQ9pL3gK1pOg?R)Xct@%WMG2nO&8&f z#3#f`?Pr{@Ze&DM1imDq5bl+-J8ILh>fo6CTfyLa)eC5IWc9(aN#apd!tcg9S#X{7rGF5mypy# z3_2Kw()!3qAx!up903w*m{Z1JgE%Hqk5g2Y;LNrZ*1DQv1tNC*Wz|DPM6V6CMBm?87s)LaF^A&c@%=>P$4BEvuSf7R-HIU%hXu2 z=xD}}Slvio=0!vcX(FPSGa+=r;+2^U;vz{9o}6%TN!i+}-j;%eKHg3SVl0j>P6lEv zdV7PEg*rGpJG;5KxVktxx=^x8eJE2UoLxQKo$MVA4lW+9t}d=_9v<>aLBE)#qUh%gNK2+A?j{b8}vP>E$^DsisYn z+4u^RW|fIA1~11Pp?@T^M<2ntiNrjl<{plLXQCq_qrxFeG;|@=CdL%jH!)ran}d6w zU&=5lspu>%OHErrP#7(bSfGChZY^DwLE448ih7YOrqs`1B^Q^kEw3OTvyLfn6_x9& zt2flv)z;LvZtW|_j8Yxg^yLywUBZCDJ7O*m)^2!Xl_g1Q8*8eo*4J?F^?YrpscUN5L?ouAMdF(+SQJ~f^z`%%?m$DKxQ9px z;xHXNIE*DuB?{S!OAn71h&xC%?lKa<*t;TM@ED0OK$gfz9Fp*;i0E+aI+1n6JScLL zVh@SKOF{Fd3J!f3HGKn2R3HYmN9^ze zm=Aa;D1;N@x4nWUxN+st$wIa8M}i)>0boLcL?*4E7zw?=ym$fOQGyFmRf3CBUm?0t zCY%T^1)x$?JyMxm-oUVJY+%k|BiTom&8ncm&XbuF`1<{XL9ncF-G-=qm$c3?rYt}d zigQSt+`RGTQ9|$t7qJ+?hTzzer9?2};u0`kPy*2m=*aNM$OKq{QAr;m0vJb9K9EcD zs0i*YF0S2Gm0r_SUsI1*sS~l%VvNb*=1X)4+o}gMcwi^aK9SSqXY-ZXF9n=DoAa@B3K^08SzU@13mLx`X=NPvF+0$ZDxwe#m$>nYxHMgY&LyztJx9AqhjnoKa`C|Tq#@l@y%k3SuYw2O`s zjg-h7u@ugMc~ME^Kc!-dNQ3xCWosKZZ(3bn73iXOb`gQ^E{mI+lfl{5-Gd1VE>2D^ zE`&n7yu7J2Va3zO%bT~zdV6~N1Ox^K1q6kJ`)s=U-kxlUtfP+v7ow>MI{X0ekVsv0 zTpUp;OqeJpp&?-ik`azTJ+36q!r| zy0{SecXD!ecXM`gXVckPFmrbCc5`xrCLXR%u8<|%XY=Lvc4bR?58+Pl!JG&f;)Y0; z*fg^rv?ddlrIO=V+Hr6)wc6@5JZcYyNI=!__J=8hah52?}es4!Ms6Z7WsuE_P z?nYHd3~A=N#>nir=$NReh(z=hEF}eI_%Ko}*f!zF3><-YWZEsyuUmalY=HYB- z=i+Fv6DsH+4+wyZ0gP-N=rdcrt<8L9d&1rG=p9#kTb;X?v%yC15a_q{+DCmDHp0DP zN-amiNccU0*=cc@Q$(c*s7B+*#!*TD!=%8v^byKYD)C8CloVj_(nlSe^XhB-_3oao z_B_3vt+ft{*xTvt^^7ZUBCVy-X_nQ4MSxD+;-rKni&CljmS85sno&&{GoQGWTfAixG1O^dG zHRjEjCLV=dCk_dM7vjV$L`%m;#jtnrBGrNsGgHbB5p@h{sR}AAT;H`Zx3NCN!Nb>? zhjyT4nAHZRv1Oi*JxI_&T046^8+IV8b9B(!dU?`0;NtHLVh*9f{Wm`85OsttKp;rU zDP#)iVxlh$BsD_Dj8-PJ65xelu%;y7Y{Z2Let5B>kp!3S=IpxKU^{nTC)!enl3o&e z4)(Ndr(=q)UZc@F*xKq@2P1>tTIb>E;;6OOdIyjSv^NBY4qX3qGwdQRqeN3B*(l)- zsi#2ZMu8AxI|hwJMgW7C1celPFzFk!VNEWj(Ab$sn8K>wO*yso;r4F6j<$C84$#I< zhP9o8y#Xq~ybgNlGdr0^Y{!_=S!-;tc^w$(-rjJSgF|4%&g(zgB*vwR3RN#m1fzH$ zfwVLlBs!AR5zI?iDmI!q%LF%<;JFZH#L6TFBc;uGI3`7fMU}lRYZ^AjIeYjy>GX7p zPTGCxSsUG)=NzOdM}xgg&obCykJ~YanW@xT4>vs$Nay3u=(o2IjNX0Y()) z1<1T)su&ic8lenCp^Ksj*-;)Oc^edxRDcuxmdqjr>rzILUs&1Gyt=9`($T}u#hw8R z1L*V)K9LUgv581nCkH2HR_kDrBwU0l6%z&>fRV|J&>}4Gb$uJND(V*MUA&wi z3Qw!k+dC}X=<86};ONebLTAWA|7Z>PCa|)d*4k#ilidP3OCKCyi@b3Pj@*6y(|X>= zg6>{UqGpNIn@Bb|9>0+g16+c%i;l*_kBFy0XsIL}DTE|Sj>QXM@JtZBd3kx2+gozh z)hB3OJstF5VY^_y)={6f-D5`KX5CA3Ua))q1r74XX1B%)Jvljujv4jI~O zw{6T?S0Ar&^P&d~%wu2hoX$0~e_cxM&Zc7xx~C#qJ%h%BQo0*o=9qYX)01t1`=E-1oaP;sOXV`gE^arQ!>Dj}S=|N0ytjy%N?OTaGBrxwE z?g1BTcW+mC$BsAhgS}Je!u>bj6I_<1E|)Sk+z#THG8I^yMj{?$_%OctgFuXF?BL`i zCan`xlju|?EQ3yxBHog%4SDNZ7NQ%S;7mss=jD4gcWl|*TDf=2`i%oUTUy#uL%Mqj z055d}7Z+ZPpwW1EJ0a|}fe{{5JvfFgJaFfS>nYjAOJk9E2aW(vN0?|sjxuxCpx$8D2*m<}ckS6x__L19%b~d$?#}01I&fnMH zzkBzph|XRz=_?HegM*V^YdwDfba6rK_=dQNEDT8)y8CXGXgf0Y3~D9-qXT#i1eqf` zN40ff7vc=z;V}yn5|UBjQUsp14DKZio6YPs$+6|;lx(ffDQ`&7d$~J+48qpGbx(I~ zLq&LhUrFK4zP_&Rtl*X{t!>@eRDu|s9PDft2rh&j3_jj|-p&qo0SSlhya_HSMsbeP zaG7Z?dGSK{1?i8~fTW{`!g1E{XwgWE@bKx+&h`8`kb8|FeThQoj}^&*E2ZE)z;20@yNY5 zs>B_EbrCJ-8*+QpR3u885ifvnT~tg&R2aS*N+6zC0|PAuxk&n6YF347czZ+En&K_h zS>=sMdVg;_8^oI4!724n&x*`rJ2rL=cT~1_4Yo)7ZS3o4?=JLkAui)&XQR`(d3zXa zwGIJ(v9ZoJ4uMHWAHH5L^sFkXPBf*v8+RS64Ht?d+oW_a`mdTD!cUHEVg-hV_LW9_xF^rC0j9 z8k{^`v3Ru}zMhUcTZ6xEkhi_9Q{b{=_g`I$ZAs0pgvSV6|MNemEcWt1Hqmz%To!%O|jsc~2^z(8-eYym$IPu_43H@)Z?n8P|Jb;R3OvAb0 z5*I;)48uD-G&CAhk4P16wdiX29Th1Ut;)`4Rt)@7Sk{ti?M@GfiD|I&+OR!*!3&g2 zS?hu~tk&uE&bbugG?)9jx;eUHNN6=qj&@9HcJ=ahb$4^|3|TSq;8qbHy;L!re92p&d7M}&t23%^iRmcV=V$;jfesrp*zlFw9^;+~q~wVRgCccV;7-m1cj zO_o%6+1fiex!O7S#Yeh0J2*t+?kr9Aba8cXbilsSIQR$nKtvlS90GUW;Edt>w~DF0 zgjcZfrF2*Xosnbk>Ul{b7SjQ&srg952#0+!sSq+n-5Ux^T9z$v zb2DH|VedK_-2AYd9G$ca?47YGWgKG~=<(7V?LFKKb_?b^En4E|8?%T)$K(}p-hP=Q z_pg`Wv9qZ4K!l{oGr}*VJrQ!qy4c9r$nda;kPtQ`uu1<(Fm5U4G422ZN#^jb$|>rs zE-r3K*SfpfV?r7*Gm#^Dy_2iGV~m@|CB#vK{f&7koNede=4`KBu)uSDx!Xyb0 zW&H)do~uqhyjm==3=&6p%Zwr{Z*@?s(qGIeG$R8kI9N4*3AN(0B`uZOZ~SVNcPY?c znO)pjotM{?Ztd=dHK|AW**Um4>1`eDy-IouW7cfSaj~}5Ap}u|G6f%B(b~p&Wx7w~ z(&bqh%a>HF@bk?*asQP9sn^0TA^IX|Pa@4?Vd6{2;FU;*FM`6fkPz`{#Y>SsT&gMp zWQ=HQaLHIz*j2M8r!h_AjxB|Dp;1Q}*!H%GJN9kcynSDHf(|1X8{5&*(bdV>37)dG zbM^6qKrhd?ahmJm?UOfh`)odFU<$x4#%QRNrXuR#Swt@~4qQUR!omB^vf{Uan z&`RV?R_Cl*y<%m4XH8LFYw7}551t$o4r5wgI^g6|ba2Ox-8*;eE_A{Pa4QrIw9QGs!*Bh>Z@9hzgGg4FMV9 z9*jNScCvUe^?-Q!s1DNjtFki4C*-x&l;&?7f^I zYH)ONcEI1p!*%iW@b&?hz>wgepkSY})32V&MIADhlX%4!U9>2fqB=%2nE*r`N%F|B zZ~{!BA&^NTiBtfJKR~~N3JGEs$(-bGswv9dxYC;8s^VgcWv_K`v|Tu`W5z+kX-U9)HR&Vl~z zJ9iCcXrUGE5$Ox8Z^6ZZIF*N|zh7`jNMK;7clDXqkK|x*lIMX3BR~NL`RpvEk=zKhJl*JiiP&?S$cvtP-F~}=& zs6NRQ|AX8KnG{GSedO##gv{5MKx1flK#1pt({CKe<{>e4g;|KnK^hzq7=}CzS)&LH zOq5Y@ND%gSG~xz}3YU#HO<^HRS{ChyQI(b7T35Pe(<+^ts~t~|_5mBcoi3<#5Bvf) zyStKXk;d>6ZUW{%M6z}Bfm?ih0{kdn4GMLwIs3*waFJN2=x8ZpK;la1B{m$k1s9?~ zp`oF?5hxs75IACj%djJ5f`(MRe9}*=@>=WH<+o;Qon0{NuwK>Zf}L$>-)_q6=%vBR zK)6T;BA|mOH=oz9xOsYb`C!%g`UU!ggt^q8dwoxqaBeb6QTj;b770laVMemZf;!?= zNr7PzWX%`G$0ncyu+hOql(odm2qb3aw>4KVj*u@-jAjan=?Pm0ZPd;|=tAVZCmnr= z;30e_{t^75wRLfI_wn`drk8>PL&Myf&c3#bnb8!z5a+;(!ZCt331W(o3odx|Vd1=N z1|7icNhEPBxKJ~MWE4?tG#q%5MP`0$W9gc}_Log5iwbe8q}d0H0_1~so0@$>T!@(c8AJ@fkZRicRC7IKzq%n-XkEX;7>T6##R z5(3ABQF%f&Oe{)3g3b~OfO$~^g!)!w=C;(7uWrfJySWn}6x-XL;HAN^eD8qt(BSU+ zAo@%XuQ1vX%Q_8VGFK0f@q%$--2i{5*0Ya#Rv_vSEyg4O^AZwbF%1xNaBVo&LS!g{ zH#9Ve5rrV8`WpiV`66@cU|%AAgoajR=55+gn$wb__wc}PG=K}O+B-U>?v}DCQqr|S zU;t^vw&4UjQj$6+cMo?@FMq<`fq{X3F74;u>Q3h|#e~8`lahDhg-93L6=n$!1()y; zUS}0dvM*8<$DAj%cBlc~8iX0cyqJ|M*EFpw$!*KlczU3xi6PtC@=`iGy9CBF+}l66 zDMF)Ka}w4RW6MS}Z$3_@nn+tZ00I$>#wRK{MA+=YXyhpPv4@e2qK3kvb+IQwSXQvBA%$T&%jh`B%x06#if zEN*bXcA=g=B-B4Vj8F_p3JZqrgxMuT1?#FyW=>;W#j4GPS~qtYKu8z^ePO5bsouAp zx`DwRd&!~bP}35{B=~D>!z2cStI)-t9tsT#3iIx`@OJA`5RtbkQrjoEkgFHkpcHWy zL4>!{g@yB)FT4^ocT9XNlQcwA6OorVA`BzZ;he_C%2jQJ*1TO%k5wyXCR}0bv}zx3 zW!t%9*Zz%Rc8&(r1AMF1oNa55OuskEGRfQ#IxhVJDVsoL1ZBNvHs(wUW=DZ z!n-jf8j&st-LR0T@Q^?ZaLfjH7Z(Zl5o0}-f;%eoCB_Oa%~jbg1v*z3iJS7zcyYws zj_EqMmo(#^{ycYEdnZJ{*fkP~*4bczyL$O}`jPeu3JVT$-*WD)CT7Wj3c_CkV^9TK zGKPgzFdP#a9E6|?2@4H?a|nHq5|scI)xAVw7)_X&bW+BOtcH!%Yc?0@3E2|IB*;!F zfup0r;IXQ+cEezQdugCpS2|l~G6Oc&HX3WKwcbs9BTv7;z~Erv-JY{=HsBl~T;La) z0T)7acmUucCO1wRc{={FypVNKI>4DSD1*1KLsTB;gk{wd4{qR@Ko*TPxjM>v33nG{8e4MX%JGpn|tGP}FN#>2~1 zaKX%mX?R;FDCt5w4&;z8kxs%9u*Y_>bI{JW);W73>tNo1z#wMA1aH6aZVmk|aWN4s zGz39t69S-(!a{LgL*Q{t27l=ydGTf3LX}-Gd6%XTa-?WUOqkU*%~e?)YxU$98PRyl zG>wuZyzHp=C_7k0uv<`(prKxGt##1Mv$1vd^mN1e4)hBQ4)hHS?0@Bl>*Te%Fbo4) zkWs@Nbd!`Ypc5fUu#C7sf69ZRqlB}WDu7j-EEbiJ1^1D($?6R)Rjb=e?U;B(5&*l+ z##)#Iz^+^}Sb-pBQ=(@u%mR(@udTC(2e^o43=9nL583g`JLTZAMABEtQ#y%y7vWpA zheAczflH9!f_FkO43al49)%&LB?KC&TSdOeRG;ci>sGfHJGeSaZiZp2)rjs<1)r^7 zRjw!_Y&zj09pQglw1C#h!`;oxH_*?Y7J>r81~0u`DQ_gj|3c2;F2carF5n`ZOHG9l z7v?rGrr{Q%G7>7o{Km9{cbAiXl*q^Gtg4pE)g7gFZq816Ypez_-e}yxmh6>{U3i3~ zBSbCWP&257m$X`V*G=pwe|Qpp8NBqUoZDi&h-xGtC8YxrcvquQSl!4MMt@MSe?V}U zuu)tz@(?=*a|+Ln5FaB+0(Yy{wNW9FoS~m1qYc2cmNJdc+&-42}+}N3uX; z>x}i{?dcU1jNtY6i`sqZ^|eeNl;{FvStK?$`4P&8BO;J3;laG*F)%ok*QE+w!tj+$ zk{3aZ`MpFik*cK?D|6PhRAzUqwS`~kA*RAPBJU)TW=CH!tZZ$`O<+aA%OpwWBVDX* z-B8o+-gvM9VoSyBy!5b4gf7W(iALePgNz7X@rsZypb;3tA9kSNCL<|Ulq10@Tq*+8 zQU@inE~~tCT~>P~F$9AxN)bK4AhO0)B%8zz0%d4Kls9t@@d9j!G;3@O?yi)N1q1|O zP6hZ!?|kKM5jq;p7*7C50%I}>i)d;TrX`q!gd&Ih1N{8`{n!c>(~e|cJZVtGog~&F z3&?;=WykugwklUQ7iT;Ygo_TZ3??Og1D)U@Ned%y2)o!wme`suGcb&N2r~Gik|=1~ zbNN;gksV2n!!A;PgW&?iMZ&fsSHhs5e}F%cHFN={xZr~1O_ZrGFg*oSYCt|?bwzh| z_U0-_S5FT@lelVnd=FlcOaw;t3Ji`!78vPz5iBG;CHaW$?c?R{1~ zmJ?=C<3C7Ugllvpv5qjoB{&o`{G~g+sAQp739|-0j(m~VS(Cp}ae-qpO1rCbJF5-u zo^A|Ys3PxtB(8xVfkry)ONfNn!K~9D>5z6>9djWV4%Ohf3Uy5PY9TZ?4_bh)sFBkAtVM886S#y%6e;Zx70a%xCwt6 z^jL6+5Jod1hEGR3lIB=f7!x|o8*AKYjn>KAlW;RZ4?lRuchSCUR|{}4z$KnQk14ny zIuM&h9m)X=IR5}-qi;}HIH3m2sf7t5VMtYrHAS&HxdgO8NpD?FcY_;|Y*@nyp9Dpq z!7pJD6OebY$J|BeAY8OyYD1ZU)(-jN<%>)0hx6#;wdBCHi+PI(Fi1K&9!po%jPmpm zIR6Z1)VZIZFO>213JeVqYbr7t_vr~P5-yk8oQ#aZ-n#tmW_NeU;b4zPhEie>IrF}1 zN8T7p62KWTNY0IP1o0QNmVwF`UKZ-<4b6T1ygim5x_&;7mxrsdWic1%qi6;*-2tlv zfeSt4>*M3+=jVwT6E1#j6y7~a3Nh^Xzr-!`zp(HuGk`@S?S?&GWN~PC+-4)~knapUY9bXly#MqNFWc z5pj${2^PUqegVF|1W7P67)Tt)%Z^0}V6G#q#h0Z<5brS~zo&ZDrj6^0OQ>2cEn7?3 zXU+PG>e`yRy82pPA^ghdM)QVhR`87@o+K1@yM5$Yd#IgIh00KCV7={DDH4Cf%w zv7-_gL^KqEJ1^szC@KQTFTh7ofi!Tt3?$qVOkQJ#4GBXGkvO&BlAg0=!tD zo{`&Ao3jy$^bPD8WF+^y@ z$bc?O#20{D($m+p)%G7|4iB^PctIa;b9wOK)mLA=_xdB=yYTR}hp#?-?X}lleT|oD zzxwKHufOs7YY!j3`R417_<#M4x88o|?YG{2`{9QNGOz%!>Zql|fP!5JEUSbO&h_^d z-bEDoc(|h|!!cnf5~c1=cvp0i#GJ{ofJ^?)({FzCH$VB?pMC!MuRs6IZ+`u&U;gTs zzx>6|KL7P^KL6$CzxnkqfA#CnKmYt!zy9^-zvRF#IP?ovfBldW7;{QW z|L!0D;rIXe```cJ5C8N}fB3^6SpUOEYoQ6{3sUX^GPD+g(TyLCYW5Yf`1yN#dt(Z^ z`4J_9Y?!}P-bw?F+EZy5jEpZxe!c{%yt@QU%z-nqLs zLkb?Hi?E<1KQB3vP%u()kq+{ga!xNVHyi){!1qDDMe|h;uh530>0l{l8Rx$S#-%53`GE#Zh0X2N!BGN?$ zH4;~nu8boivk>z1LXCQPxd#&bU_?_O6o<_q))dm0z#Z92WG{M&Y%U)XmX`(qN_@nx zRO{7==@G8yMH)y(g6wKZ2{{qfvk~1a!3749>hFjfBAF{Vf`p!oqX0i&xYkz&v?o6U z!F!g~s0W@Luk4WQni{c(d6zGRFmx39n(8=ebXM~!NtwB|nj#t8TY*)qvrpaw!L)IV zWUwT}M(G;yM?#|VOGM%TNI(U;i1;TUMv5M9J~)`M><2x3`8f)2Pfv<*0|O<%8cEm} z)0pHigjq~*N}Yho%YBe|D=F&1s>oA0Q<^_JeR7#=9)N|Dym-rUfu{&=Ed=qWd|H@|F_J>?)j zfmdKwAivPaPx956xs81GxQ1UT?`H@94c3+=)|T0c3l+XfrYg&tw3dl;6$?44v*e!Y z5Bsv^rs0F%n09$Ktvn~UEMI=Lv7$1+Ty}G*oX>F^#pUI+^*M$40h+>sI$pqAp$RHp z%XUF=S$@cLPEj(=be2l1Gry|mr7ReTR%`|m75%^}W!^xxGQV{VKd@T>tmSy6!Vi%0 z-KaRXZe(98>+M|A&2KvPDb54O74z0p>^rNN4_r_t4t%Vrzv=kiV#|s0v!COB+Y!3G z`OYUlO0}G)u=>HHpQOsqeX4}y7e7CG^nvjw`D~Pr-up1sQm_2zk@1K7!1Dj=B_$~~ zEqV-zvEToDaqRd1rrIg$X^}~bBEp5n%Afk71wTgHWjB@6{!UTk_y777B{6zgbfWu{ z+nMiFo>3+~`}L=}jh!~6OjH8Q#-HXVcT*c(6rOB4@lQvT8Oont{QA?L+)Vk?1seVE zsYcbijh*rTuc;LHrMZm%>RA(&pIeRl{nt-EeCxAE?>|gdrfM{rCV)j&Q`I$fHB)2n zVA`w6TrKjUW zWO9qCP24D0S`uyuA0!Xy#can@30!0m{x^62KF{K zHftK2n^hb#Gv$G0wXveft=Y7yS*{x=X`B8fX4OWYu1yvC(|rhXFqX^}Qy6hA|9-@EV9^ zqhm31(I}H*46?`x>K^T#tMr4|+E7fdow zDy+)4vdE}dn_HZ3KPjc6a6^9bqFJf4GG^t@g5HMt^Gjy)d(cy#`ZCO)s_xB9pJHZc zDKY1S5(_?1{!{oWQ2a!>o0+RyE>o5=A+JoM31Aai)N zW6|aLRfYAV$0o}$gO#xfeetXUGe5KJL%Fi^`O%h=D{AwrOf8uiTQWR9+Eik3K|VuE zMZ?U`Ty8f@DYsCpE*sC#&$leFnBCc?HuGd>^k_q)$41_NTw~!j$I^)8voQ`#2&&dp zRB2KiHk5~Qafz9-Ozx4Q`vDt59J7omC3BQzL6doWvr3f)d`!-^+QLIj$~L^X#dx@_ zy{*Pv-KCy0b&GnI!RpE3_8JQgn`al8MYXQ(@~1Ekr>vezQJ<-!yr;w_2q{SPB~ zl#D4Df*@};I7?}bHd9(-frUT+gWuVS%?!YFX6X*l>0f&I&zy&k&fh&B! z#`n8slLkIy{g8e^8?rUz7PBY_z%vrG3QtAfpl|a;4|~NqsAvT z=t6!OdhDm>M}K1c(FdQt^XZBy#k16vcOEUBvToL!@4WSP>J+FkwrI7?l629BF%5@B z)>&jlyV7};d>QwA?PsdXbmL+5S}qb5qjBL@E-nVH0JPj|bTQt;bU-%r)74!ZSHIP( zHFANvDIZ*JS~u=B9Ws7tO|5f=@lt7A8Z%vDL|%3X7J9jz)+N>WC7;vTd~%_w@jq+b zcr*1LT=Nw2vh%6yIYDio+@Ty3Bh22 zoQy>-mo1gpvLX+rE^50%xACpZ5%mJKZCaNGz+OAX3E$5(UYp0;f%YHxem=dTj54A6 zE$ltYvPSk%w^iBT;u64yk@-T51DDY={&Kn4C3ST43HNa`b-cl92K90mBm0dquX=@g z3w2G-f3iGT4G>Nhv_@Ok$-w=(#qbULO_v+nc5wlDc_NWcU%8KI+&;lURs;_Nt*cKi zt#Y|~!r0}iY*7*V%Kc=Y+J;traCOtzdXgNGZS`LA4f4ju)SHj{5Ioh^)ssz>mn+mI zRecasGow4lzSTC=)@7e|oXBKTM51YV(jFp?r!_4uS|gr3JLe^-BJ-;>lN*fNXY6*_ zMbm1}J)wzS3-Y?Ln~ycEo^EVYJ*4VFx?`_sC%Xh zxkv9X+V+!g^_Fs#vH5YAn@*8uPleIc6aV}}J!=$awRIWG#vL*&cy_tyNqb*iQI8pq zk0-g@MD8+OWtDNw8Wr5w4)uO=6H^zAHf8*VbizGyFJP4IP;#TE33A4kq;*x5nFh09 zARRY)@%V4kGYJ+M>J8*#IYE{ux8`!=Mbbesl1(>bHG|U~M=y{={EcE~(x`fA-Ra3i zqZdmH#`_r8)U70={9xU56TwVcr`t?tkA54O!L(B@=4N0b7sz7V!HQ}ku?eP}!EO0A z_ADncI0HtT;y{4f3g^k7H7%phZp77iU)EVs*F~fo7m?3~jM1&pZ)3l+r7{BFDt2_39Zfd!(49UztJIM8n2^lU^0Qe76W#E1JjCV zk{ge2?CaM5Y{;1UOU3+~+8o<2mrFb9r>x1g@%!sq`|3XND(F8hlMh)_SLB;zteJ0E zdqVlANGG@AHeccNuQtv0lgs6bvBjwGzeVe+AEtVQV;8GyqSds2sr~6D57P8C?iMNy zgaH2;4r9p64aQ$RNnsc;=IvV_9ie z2Cp(|Zk^D_bRrX%zp@A|cn}$(Iv3^vvaOr`eRciR=N1x=#(Gq;jT%6Z$S_?FKIt0> zXY%fZ7w9(is7g<{(j+NF_?eCx_o~!p-#A&owPQ>oXK_sJ4Ox>r|JhNKQD{7>UZHX} zYhqiOl*0IX}*@)?BM%q3%(i zSAs{zGi|lgos74Bf(d7!MEGQn0qgL4&HOz4!9(9~3aHHZM3lo9s`yozW=tgsJEUl^!d!) zku`@*dj|*8G4))z#(w$&PRnB26Cacc7*ACXv&q@hHF8vT$Qj0S$?#{Xo3d-VbrV~h z>ndOB$yr&X_0>NPWi?G#D-&G#lsm|N`z(!|kp*x@6Sv4}%HkGMJ|-zl`6lzPZZ*mJ z^a;~vsz_-x5%rps{Pk;d%0;iKOL$dvZADe7CbwR*G@oqZ((3%G@?4UK`Bl@Ext3%i zr%anUd#IKEF57sE3;%#52)+U$s(JhTUN5Dr_P$iA=!Ff7A|JnxG`H@!%pJKp0NPC8B@7%`g6}d|NQJ1X3crg>ZO-no;#muSj>K!r(a-iV_<@d zv#TAmzCAs?yj_@r>cRZHP@gbg|H!ByCN#z^ObAbmSez6s)2)`K##4{Gh+13fT(fiY zmgg6&C@jj9mx?2u)>Kxl-%wLrTURerGAh=!R&Q>v<%dbObT{{I+SanYZD2>o;7+ny zTlelpVA5(bcu>4}zm8-lN|K=%vmE`=Z4_|-d(W4)~Nk#m- z@7;R;&Ik8Cdhp3>)L&D~{?niRe8T_A{QXzpZlM-1j#Vapi(AZn{?Gpu^A>YuQp+U8 zqQyd)+%nnT{FJ%<2Di(Ke&+L6XFgxamlWNWnI(oRd1i)9 zFR4W~h7hx|iFsyRlQ(hN{6%n#)RdhI#swiL!B7p@zhqBbO~ILGiLhw&94)G^M~iq($AV%$PFnO!d6%pq2vj z-GAW{Mev*?ALen7^1=^16dt5!q4K(Lk z6ihX|pw_m$P&2h)O2JfFFPK_0MXg3MtDb3k;MoOJE=*O?na#5#ZZfSJpLjNPDFIgH zR!U6bOvMmZJ*~j1zxrjR#wvLln*~sDQ$Wh%vUvf0 z(B60C|NKGuoPsI6)zi(YEeqxZO-{M@1HJ#u%Tuz=j$BvDrs=J%^zP4HoR-~|op_L{ z8GZOHHrk~V^-E^T{+iiBvDw*WGlC{0PE!=FxHzpcIaDz-uBk_Rvx7p*p5+94CGT0& zL-$tZJqx09Ot(CgYp^oivbU`=Z^kHT@@5z`HuIId89||6e|B4C@-w5&jx2s$J-f8{aCzRP1w8+{C=+7c965*@*047G2@2`Z1Fl{XD!E>6$Z%~J9#6DKLj z(-p{_HyyH%tPzZpi>8iJ{pMHDJtXL=q&8Ar?SOBhdiW^1D%AtRM#=6lM)rWPQMwy% z+NToUc-Q}o?#8p9I(h5?M-sm!-M{UFd^@^-4Nl*Y?*B67FVnqE<@WDDcfYTryWi7v zZ|i-El;fG|X?|CqvF)jo|600#iwF4*bblJB?@0H$$)j}tW+`Jt*ZBPZMN-Cyv+&TW-{LX89o3B-sB(hw3EC>ZBh}3;z7y5kzZKQ{Mup5c+1@uQW4?-Wd*6R1 zWB%;y{}QTy(_{Q~RB!*zRPQw(rTRC^_Hje=o6vn)wtrU{1KQtS#&Gg~fsFa42l;k% z|Ek>k?sT`B_?PKEPN#kox=+*nyXw@xO!xLN+5Z26?%(1;z60H##_2msnS&EX>Hf{K zeVhgPO>}?Sg8a);#)z}ZHs3hS^riu$1QJW z#@uv^iDFM*HWT){th8ktT4JQ4-~6e)l^GVQCzCu&De;|&55cEbc3W?Q?@ZRR7ysj9 z>gI=@SIk^zD`ufUF>nyDd_ggLPph>0PEcB-CMm5kKpYScU;(!-29kjkAQe~!bOKv| ztw1l(2lN9wfStf@U@x#A7@njIoS8JE^*rkrS-&-DX6s$PAF=Ok_Wh9cPuce~)_)27 zhV3sV%^UdFN%LACvp&^gUh6CiWx$qiPYdehfu%q$umQjkZ|wwj0hfVa0AFyv#bmPq zr^$0$!zc3`Kq_z=xHMTAxHoxL>+e|qSKz+^6Q?MxGk_NWTfi0Y1{MM-z%n2Qr~q1k zc3?Yj5I6-ePoecTa1VGF_zd_Z@CV?(0aKq*TCIRNfEMrs0)bUPF;E871MR>z-~ezO zI19WAybF8){1o^d@ZW*|047i6zJLbM10H}k5CJR#mH~M{InW050{y@N;4E+j_zd_p z@LS;j0R97*^aG{!Iba^31^j>rAO=VQvVcmU8rTH%0(*f&z!~5?a2t38d;t6$_!9Ud zU_MQ0odP@uXaPrH5wHTt1d0LN=+JBE_z?I6_!aPb;9r3WGnCdJ05btwzyya0a*zybgQ{`~>(r;9r3M0L+*yJp-5t%m*9*4z0~){u@B8OE z@NeV>mM_TKkKg%`X=)IXTv3)zmHc1K%x9JS7suuQM(6*k->-l8{%a3W6KY~hqQQ@! zEaUgB&J1y_$qaJk1Qv7i3D4%`p|=#pBDpN5KEF!cEgzHOn41@1zBnZ|z&xqAEWkXr zEH7YULVo?kn6hd`v6~)Sm7iZ-Twb_dvplD&s<@)ciHeZgqMT|?@p?^t#fBx((Bx+q_>CZ{@Q4HFpGYXY3@7fhcn5248^%qcFH zgkW`jB?ty+9IIq*<8&q6Yyz(oh(UW4DE&2jWH5!%G@a4P(im|~HaAUgoS;}KWs1Qg zPf>S_{M+Md-j*;S-Au7ESgE_L%+xQZzn{ok7e@YvyiLK%@S^dM@h(pvGR~v4vQW>+ zFiW4HOr?dX2K$SqCjQmfgkpF>onWZ1l5ld-O3Npm@;zNS{|dUqs?rfILl2w*gTV(f(qr2PGbF7&Uc zFAVmwo^C#&D9y4!(K}e)U2d7%*;Z{ELkU}&SxLj{cwTV|PTP@d5!*Bft zV)V%BxbEt4&jDe|>bAtk|ePd=pN34F zt`tn`ubHN)nSyg*Rx^bxg;{&~4C9d*{WUW*HB;3iQwydUo{PGG44uI@9)*%Ir(l}d z{u;}I8GOzvm{u?&DshogU|BG$y~c`7zGf$TCsQSUFO1F=Dn4vpUxCE&?$d_ z+5aA9|1He^In4g^$K0N_!p^}y+=4rXB`#3(f)G@~V`St^k*t?lYTYb>3=&Jyzx3*2 zTj^gjQ6BhvqUWsUs5-?oK|Q6ztZ0cP++m!2ZX6FXEaX1P_rB)fw9$h{zUH9$=)uij zb5MqvdfNgsBgQiX^8j-O{V3+i31%8;ILfSOxn*C_WUff|ll5NXx|11%Fv*}c2w@UG zGF>0JPajuLa1)dYrH>7H zF}SQym6b$Du+q}+#U|Mug{@=ALmYF=&!b6BFzw15-@F;pSZ?-`@;}@A7WgQtd;hbu zlg;dA6VB#E2q76>OBe$zikhpa;Sot-2@6>eqSY;ib&VJ>H{?$#m8`N9EeLC+g|@UQ z6fW^XOORM8Vm44PK^_zGLa(^Yr^A5*VTz6bhVI7zB-vae02(0dUYyUcXb+hEIggOc(s@`UcHaJe04Sk zQq*)ixKK!8g}NVwx}V|#pm-Cpr-3Rh2mcNe7VE!*yVYz8trE`aXGN9%fWwkCv}_G^ zWiqldAuY7dWgcT(s}QK}T;O0x`3@LDqt#(dHQQMFQ_q+R8 z86>8+bUH2SOPm58CDnduEu_2eqil?JzHf2fnp*U7xD1IBVqFgqsOW!DQ2|sl@*sU50-i@Hp@!;0M+N+kuyW*MVceJHSV}4DZJ} z;{Q~~d#~Ue*2VZ^xD2len>oaDycaKA{v>SBkPg2r$b;ZF6lV#3qv3ZOhx2#gcH{ggHh5UXS-eZJS%eo@4y*$FzzYbk;j+BjAa4hD0xtuv z0s-KUz+s>j=m6dZP620t^FRtVfEcOI^5*I>Q2;p~vIFvckRR74_?PR4`Tf98ftU2z z{=L8f;0>TnFZ!?PIlr0D_V(q8cOWnv7{enSeu)1(pXI+jCd)r9CfoY}Cd?iJ9tD;F ztAUNcE=-&?#bhayYM;W*V^S;*lVa3h^`=730tN&B0>6AihJP|pWJvKk;Vv;`cwGp4 z1b7U10)GDoem{V`99RiF2fr8K_cO@92DSkI4!=71{T}jbzvjy}AVW2XZSPJ(FU={EJ zupam&uoZX_*a_X2g$(aroL>`of1{A$KPaSlk0C4vlYch@Y!dMvU_6iyU;y(@1B!tX z;6dQKfZK@nZsh&t##rwYa909P0#5-xg#E~v=wD;Z@ctC?&!D%_X!h11Y%|6al=&P|{Q{bx+km%%yV#8`hv=4JV|FngSYa8M9Tr4IACH~PO9`{N$ykb4jGiLem}-f6Hf~-hHg9I-u(=I6 zQ`5%dNyg3R@Po$N`;w6fMGGoLd&wA)?Hf6gZ7o$2S1ODRNO^-Y$jGGoDi)MKqJ&q? ztN7PP7nDa;jAIuo$BB# zO(+%eDm5wPDixdqX%&Z84Gv~VjsbXaa3v2yF^LN|fpk`5vWkU1hZh^J=yX`wWfPSy zIuu40Jf5@F^pvY(D~Ur4{9lqu%QCU$=FJ2rWy?*G+VR4Cl0sXt=EKw2NP6$1>;iwA z|6YFO+gy7>u*qsUTCsb$QH}C|o6j%Y#M-bTnxz#G5`;4OeH;C%%A1>nrYZ!~9+qm2ienkP~nX??TxK;scR zjr*e8?O!j7G`F_D?xbmio%3lwc0S^y>B>2u_K$9}n?YJT4<2*~F)8~`Oc7S6w6fD9 zsZB`m(20CusUjUac%RUsNJowzm?Es}%YxgFDGrjx948LmE8MF{e>`Xxev7=i_|Deo>Q795RPYB^*2emS zwb-1mUT$J8gX-#%h58dv-Op6lr!8vftr_U8*;}#xI<@N)?CNr@II}xYFNbtZK4H0W zcVm4E6NAgozE~R;7N0-AljI(j(^krTb8LaF!QY%cr`vh{kRYEwWR!y;Q_=A%+Ib1wNIWy+3;MADTLDK_^GVur3h z4+lfuAk45k&S7%z`uIuL#mDn25;zdHMRSy5rF)!77M3MZ&&J5vBvIAFAn8;g4#Ig9 zL5f#Z@W87$xyYH1oMWY2L_n1+99ayLhQ$(>cp}iQatbD2$@tS zxbXl#1TQINStvJFKpe3IZ%+82B#SN?Oz{~4cDIL|XRpD=jFj{ItDnfc{Pt*$QGw?;qNXR7d8B%O=hSeKQxWaK;B)<{Y zvfDBkEceC{M^!5X9JBY zEsRE8Xuauc=A`OHavB}UX+$(9iMv5oiWbXCiM!A`;%jE5>P51;C6d*h-C3!fF;Yc| zzd^=I9G0XW zUQ$FH{}Jx)n{L+6CbMNoZWbh^2jY{RRaaO-u~InF(v*>hc_~8=6HIJ?VU289q>(AA zXgaDY1XUG+qN+4%cHdpbVq-AqE<$M^XFV;k%uc{Ua{QN%2GOD56V~pcLjlY<)S-a& z{z~-5I7y$Ih2D58Ese{ZE0&rfk~;pPrTqz`KpY#|S(7tM`sDfXm2p^{is%*f8Vyvh z8;$|rVaZoGMn-ZR+MOfo`^o70O8ynS`u)kU%`r4uTGr&#l>UXWFVer%u2qu2Dx~L@ z3{b{C^ev@h>BH=5>n7UAMsgh9og=cdD#e*={WXPF=3M7kOY~~DDWeT*9F9V^0;>`< zxF>Q#G%{9adm71Gh^CCZe7ONFgF}1_FIb>9Ani!Y;z>!ujarc7zH223_!`npL^mh0 z+a4Cr32UBcrB7y2tVm;lOvgObCW(97b*bV3461o-5{#S0B03I*nbiS@#`9n}4~>pE z6B3I=Fu_Z4%2jJ@@61bo{(9JE* zMsIksKgCs0N{-8b;f-JjM;Wj%ZG9(k$xzDHcjotnP!eOks~^q}%+~7|JJoD$A9Rtj zp>&qxgRsI_GM24r03VH(=(#oh2sa{~aLrivNx+&9Zid`Dz{L2bzH+Kr7GzybA<@i@?XgRX~sR9V3tcBmw<^!N71}1TY%79k>HvM%~{5 zDu87GGvH=M+rI*S127})-N5U>+rT;C5^xnTVV$NAkOr{zqnm+A0M?AW4*_Ms<3JVg zG_Vrz1HS+^0kyz(U?=br@HPNLZSRM`6+n+Q6$4-f`T!|F8juML1cm`4fzd#8{U;Cd z1fUR@3d{l?0zAO?fnMuA-WTBhIj{|Q4QK*F!2bZ(0A>Vk0@yl^4Y(V~2bd8!GXQ@W zcoZlHDuM3-%YdfUM+TPlHKt9qqM_AKOkz3o2JA@JGt@0Zu+KwN~7sgtcD0fa3R$8zE^2WhA z0{Xi4_YcQF+Gjhb*N{EgVn{Gni|=1;k}vKc0s6rX8W2gtyn!OmD`mdz)(N@zwPki1 zeVaJJF;kq8KYeE5jQois;~g{di;Kl^MRUX{`E#&26!~n&`i9}QW}AHH4r{|v+8_%% zhBX|uG=y&2KDuGg%?-mZHop{#SxGP1()Zlbu;J#0kiJR2yn{BZwl?grG^`%haBOr# z&eH+>uZ{N^Y6tpaYshk;R`wa|41S?W{xldHG;T3ApOQaZZm4bX#nu@%5ZWaF1!aES zG;n)0S3By>YA(b#ZGbpIIZjoM6WMW9HK(S&r<&Vvwq+&##BQd#YOcMly7igXjjf^9 zaO-_-54G9b9%*}`?R#zBwrASbxBa;FNZX#a7u!B;JJ^1v?MfTp{vkQk79!@h=Q@AU zS>5@=PSP3QnbTR&ncjIv=Yr0X&Wg_8cD~lRzjMvW<0p-8{zu#Q+ke#F*8XmLYR9mS zUv~Vi9ufpDUoxk1NLg=_;cm>iu`5tU&qI{&GEO5e~Djf{2O?3 z*vT~~51uq&{QF7!_Vy3k`HovUCf{)U^Q1kjds=4?k}4DeAY0Zq^ru z!@giGAtpm`C-<=Ku>7&2wEVpq%O*sk!X__N(x29Ej-fGKO!Ngqsiu`{uPD)^1Nyc4 zclEi};7a-8Z{Bl>ue5FnKCSmWJ9(!Axxxv@sp_2*;5aRAJyYLUP~TEeA1J7o3-*f$ zK2^PzS2EB&J9$emBI}u|XPxX>7x1iW@vLjyFCsol$?BlgMwcEr-w`<@4Mp+{Ry92O z$azBK{9;JhtTP>!uc&G-hT=Bsnn`upVfjr57yPGJ2Ey_u2vO+TTSL~L7GKis7oXPs92vv?61a$n>ye}yirl(=;rWuT+e0mP zO}NQ+S*c;#yi-ag_tst5R(Fb3nI+bwI(uYRhf_%8I)$jGs#bTw7ewK91^0_8Ma*MY zut!#l$HI|Nk2g|LxKeyjq0{1K{f|+@pL@`-;btyHRtn`gE&5L(u-66IyUpW2)#I_3 z@wRQVPEliZsk^XOaViyKg+dz7qZGX_DmQy zXvJ!KLt9>Gu)Q04hyK}iKGa3u^e`XZ)P#2=zY0^6(blr9!c|c+gr8+v?G${p3v{< zVOvw^5dEE+l83ccB{t}2^59A-?Kk(cI}5|P^Uh6X$1~ertd3QCD1Q1{zT9@u>!Izs&(C&oEE<#6SRQd z`Ji=tWmb4%Q))9mNZL-JG{{ozI=QUt_)eV`;S)+SZNu;sSm{57l~5ezi!09T7i;va zjI5Qc<^t6*isTD^Ng4NUL2E(s=qtX{9^a|obd_YgQ0OnM*j`2J%Wk4t*gp*ewYhk| z64m#sO>{-?_p8J5h1x3!&GN-AKfS#76Puk-`-7Qy5W}A-lf;gj>6|uWW|3jS)QQD& zih0LOr*bG{(u5cs>_to*&khCrqh~k{-|0urLr{VW8&y?L8hoa`f17x#dLb zx0C|oZaKt%9H=4nfl&W6n7araawwrG6ua|6Zhhmqpq;sZ`lBiPLJRAU zwI8p4?Q+A~ociNvMGZb<{V~|9yas!fqeyLE4N<3Q_@FTu+i_I>sAHe}zN`M|BBs4> z5%kmGU{UrhLZm~+L$NjC`lBK4<9#e5dobjgC!&6csQ>M%Z}E*yTO|ALu5a|+wJ6}b z2d#HJTJMAvXV9Q?Mauy+d}c+{<*HpR$Jfg_>l2lQv#Lp5B*UL(t;#*g@o>9GJ-z}tc$b)NOSJFeQTlg|L-=LB3RHh{PDatogfZ4b9)*$(_r>5EM-UBa=!Sk`O|PEe1KM z$+YuQov==B!Xe;VC*x2jP)zK7x<2hu{XD@ZtUZC&bPO?rU5s&-1S^4}6Y3A%n}*Yn zq0VqH7_v02&z*-dtbP0AfP6wpEE+{Ab+afBt%ZPu&dmwu!hjR1uUnuMXf%e&ami!&*&LW<Pde`_9V! zw*=c;cBX7Oi#E9>=ohva9_5knACU0NU0Z_4@9et37GYh>7UQ}`$9=}0yyn`YrlbZT;tv4!e16oOka%~EE!NHp0#2&nqZ%~3_6ThZKGF)yl^7ghW#YSa{A{i1T{iYopU zHBe+lYKT^{n;W*;j6I!_VRi$dtk|*;FfS=a&CK|6`(4=kDZXxw`B&h;me`9egsH0Z zvLx`W2L8L8m#~wq3m>DSl_~9nh2898VbNgXf(CrMRnp+Vmmb*JmbZ^!A5##s^OK}< z11vElFKe(ouFa|>8_c;jCPI8Y(YYbfZ74~@r`+uNV7Fi%wlGo*K2xrcL^u0UXI$-^ zxAm|K$m!6#4QBjAwA+AkSKwn0=q*HSrF~z)rOh78636kel=)IoKe)4(TA!!R`o8dM z>5DT$Dy34%ehXJBWiOSgowX_Wa$;!}pZ$ZXL9D!#W6eLo%}M-3_mer?yu2ay?-6%3 z+IQ*_yT$z!J}p^ZWp=NqO2}S`D1%&fd=)-Ot!PnyQYtyuq+r8c$vw!qAPuYh_#(8( zLQAf=2i=^VgW_>jgB*v$_>?`yV0Qi~r987rByMqGsZ^B6%FjyPQ?Nni@Oa0 zl0J=R-`V3NaXiY*v&gCLL7*EKDixo<;}^BLs>D*soyazMRw~Ak$@Z?WS|(hXRA)tB zeDodc?Yas)Z4>U zbPX3q;cWCy^Z^^T63FJH*PYW+Y#3pcK8Q1V#&}jo>=}nU!&F@538mwaYYsm1uT8-* z&%TM|@M2YA=>&{0p21?}M9&bhGQVu7ST)66SUQnoLG$k|&Cjhs2@75GC)pn&rIS$5 z`33I6h3-P+C5e@j+=VD0%6~WZwH{SD2_Jt;VJ44&oIs>&Ouh*+M{K2&P%$a7w1A&q zK<3G%+F}RSDsnLNSV;Rg@#fd}g z=@=iGQ7Q*QlyQ!@V1&8Qft?SqX}NM+V0Q{cz<7r!lZUV#5mD-5N@`N@|Kg<7bo99G z&S%-=_Gej^!d?^U!FZ;WQ?i5!)H|pQDbcfH>UD(Oqn)p1AcmcN?qy~hLfojZiWW1Y zK|HefWCLLp&Y9gnq%>!vMLNECb^}aV7c?mMy%?nhRFIr%mO7dMj)np3i1CKA&p~N$ zrD5QRQA6*XKftZG=Oc5dN0e7*c!((3^UCyM&Icdl4H<$?t(3qMBciD00@NtS0Fmjl zXh_|;%Tf}C+z^EiDJ9YGBH?0(O z8+Q_J*UJ6L-4DaBGL-g5nlKSTz(}*hKCXD`I1yVt-6EoOd3fslG!eTdY)tg%nTQrp zHrX;40{}ZAUlhQG6I{6ZbJ6LU#B)m~TO6HX+$+>7kL2;zKMJ=D8@!gpP-`4r5=*US z3ci+_**EU!0A}W)+(H(|;o~{bkCr^rgc%0$-WmD%cMM@&OHOfKWThY=z!TQl55cro z=NvP@8BCIiE~B*)ze%qbmWebiBgZgO`H@tlPD>`7|H zS9&K|{~48Me?JV78N|UD3xcYCCy{2clyC3vu%T1kjVpsJR}FwIt8~-dX~a3x!aNKE zoTf~hbG8N78y3gPE!oBffPQ3TO#X}+O8Maii>&Y%<41DSrl`XO%Z!a5aDf_ZTwqF4 z29`|h4f!p7RsQBydt(07X}!MoSu~g&7>3{Xx_!tPb427w>@YHQW^v(!9v1qvvl&1x zqV_J+zt!B<6Rt`BEDU_^!rtKew-FBJsM_B*j)Ch;9Nzp2`==M%4z>Nh?P6PV`?)ru zJrnEyt&08AtDT2o=~Ul2vhz+@JypR1%G0^Ab7f~u=i8mrPd<3^(8((&$G!PqZJXL( zX}{W@*fFkSHf)}bc9eB2=~&URx#O*lPdaGlz|McT^?xk>!vsKPCIDZ#{*T3fm;f}w z1mN$m{=Zol(%0&UYER(#N@IYpV*}7@VHPWl>MFMC_s?ew&}1|BwgHG%jh>Gz|6jM* zUw7&s-5MZTes#URmsLRTfWOf?pm$WobRcRa@cDpmh_!%6F$+)`Y?6ho7rRzm?6s7C zBYOeXqp!CYIPit`0?HV1LwkY$MP5;}fk<{YHXFD;$G^pFKxSqGfxq2spqr1+n+@cC z#;hD%Fn_tR=|E4!{bEG-8+Rl9C#?{h^wQq{{z)&MR&0#{jRB1TjRB1TjRB1TjRB1T zjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1T zjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1T zjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1T zjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1TjRB1T WjRB1TjRB1TjRB1Tje-B~4E$eI=yh2D literal 0 HcmV?d00001 diff --git a/images/apple/PLASMA2-SYS.PO b/images/apple/PLASMA2-SYS.PO index 31fa6f58fd1027c717ae9f18be0fc0f102cebeac..03da6f5df895c7c12e7fd9af4594152f9f6660ec 100755 GIT binary patch delta 30137 zcmc(|3w%@M{rLZ!lQd1QoTM!+^cHSuDNrKVtb0~A9W+5n}ZD+m!f1ctR@R6>+G zw*eAs4fD3jD2h`DNWt4?5vrglg~D_?H#di%^MX3SEB(EnlceRceYfB5`+vRum3PkP zxnIw7p1UjFH?Mf#ym^SxA16#AL+PrTStZW+>k}&s0+WaG^7;%C9|-NCyit8rVK13d zdf~{T9*d?p5idq-V)ft*Ys6YVtmRcYi%ScqIHUHADI!61rid#B7bZ(orn{k zCX3O7)uf)}HqDM%w$+qnYSL7r;(um9;$IZM5ci4?&dJi728msHNg|S^h?znaYTl5E zm9Db!Jy8*-7Yd^&jM1Z@=ao!ZtVnUyjOw){#OcLC5jQC3T1zdioLD6YKl*oi3HDx< zq4v`YQWs*y;F1dW%%~lnrD%${-t)XmpIk9>{Ir^ysJ+w6Wm?Zm!;lGOpiPI}c!+Ilu z`p-)1P-0i*t}OFJ(s6nv75lQdb0cRjJv$Mne=cIg7WoRC<(qv%naf#L5sjNTeGk6< z_-x;-6qsDf$2pBuzN zlQ*u`HB0b2u20jqnU`KvU`1|86bsD-HqS!qhOfKp%?@wEnuY{#+-74#+=fthy~!c! z4el5r&`c;VZCa4^veMEtJbN&|Q?n;4|7dzBJEN>3+iP%@39lHwLiPC59bVyCl=Y-l z%onx-*OgDki8_OA_-CJ8>B_{8rzLBCjLj=*S50yyh~Xwg=|(#JN7E14K_#Qh~eV5zP}rWcPpNMWO;tbc6ch9zRIai8<*>wX(>$Q_2%uijVyH7O5G!yYIBik8tF&T9c~rAFs_Al0@Faz_ElR)8uq{ge(8Mju zMO8LZF@<;}O{pk#7TRnRDl4YQI1*VI>5}4do3pyiV;es+$yx4kR+2DV-qbuBPHeQ8 zo@tfkd4)Yzi(OR}Nuf8kDCr}J8#&>wbXHa2CaK4+%#QMk8H7=6O-<{Yp3$#=W)?N; zq~iDV_%o$qx|0m6m{wjo+~#t6@~V-TuNnCV|ztgaZ=^9a!(nh z;w+zDR#{O#g(&MW^;A^2s+=C%v?^yQMV2&vTA8aNdzU_cU^&sxYai^leohGKEsFsFXfXFnVbSB}i zbIN#^vr;#VmMo5=uFI-yRb~DuWv=2%Sw~7L%1fMX>QRL(ibz#(7gv=OyKLdlj?6xf zZANjGtd~iHYGMKC_ zn^^Ajm)fe_&XTeTWrX9JnIsc(R{CX`j~VS4DU(-1x$@0Qno;JNM1V3NnwUykiL0W@ z>6&SqQtT<2q-VCCglL4$hzHr}8E%_UT*a?*0)hI=D6S+Ki1e+vMAja?Ac!i}P!>Jy zp~p#qQD0@jg2IGNiVTGKmC4FX?IZ(|#?RE<`SrBvFF*+| z1A1gJ^|y@t!MqD4xKDoZ2b>E(`6Mz^%0Dk*RLOlMv+?o@(l<>W-AZ4y~N-bw5$ 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 I;wxnT51Q6vvj6}9 delta 117802 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 vmsrc/apple/cmdjit.a acme --setpc 8192 -o $(CMDJIT) vmsrc/apple/cmdjitstub.s -$(SOSCMD): vmsrc/apple/soscmd.pla libsrc/jitcore.pla $(PLVM03) $(PLASM) +$(SOSCMD): vmsrc/apple/soscmd.pla $(PLVM03) $(PLASM) ./$(PLASM) -AMOW < vmsrc/apple/soscmd.pla > vmsrc/apple/soscmd.a acme --setpc 4094 -o $(SOSCMD) vmsrc/apple/soscmd.a +$(SOSCMDJIT): vmsrc/apple/soscmdjit.pla libsrc/jitcore.pla $(PLVMJIT03) $(PLASM) + ./$(PLASM) -AMOW < vmsrc/apple/soscmdjit.pla > vmsrc/apple/soscmdjit.a + acme --setpc 4094 -o $(SOSCMDJIT) vmsrc/apple/soscmdjit.a + $(PLVM02): vmsrc/apple/plvm02.s acme -o $(PLVM02) -l vmsrc/apple/plvm02.sym vmsrc/apple/plvm02.s @@ -199,6 +205,11 @@ vmsrc/apple/sossys.a: vmsrc/apple/sossys.pla $(PLASM) $(PLVM03): vmsrc/apple/plvm03.s vmsrc/apple/sossys.a acme -o $(PLVM03) -l vmsrc/apple/plvm03.sym vmsrc/apple/plvm03.s +vmsrc/apple/sossysjit.a: vmsrc/apple/sossysjit.pla $(PLASM) + ./$(PLASM) -AOW < vmsrc/apple/sossysjit.pla > vmsrc/apple/sossysjit.a + +$(PLVMJIT03): vmsrc/apple/plvmjit03.s vmsrc/apple/sossysjit.a + acme -o $(PLVMJIT03) -l vmsrc/apple/plvmjit03.sym vmsrc/apple/plvmjit03.s # # Sample code # diff --git a/src/mkrel b/src/mkrel index 3854133..cb084a0 100755 --- a/src/mkrel +++ b/src/mkrel @@ -50,8 +50,12 @@ cp rel/apple/GRAFIX#FE1000 prodos/sys/GRAFIX.REL rm -rf prodos/fpsos mkdir prodos/fpsos +cp ../sysfiles/SOS.KERNEL#0C0000 prodos/fpsos/SOS.KERNEL.\$0C +cp ../sysfiles/SOS.DRIVER#0C0000 prodos/fpsos/SOS.DRIVER.\$0C cp rel/apple/SOS.INTERP#050000 prodos/fpsos/SOS.INTERP.\$05 cp rel/apple/SOS.CMD#FE1000 prodos/fpsos/SOS.CMD.REL +cp rel/apple/SOS.INTERPJIT#050000 prodos/fpsos/SOS.INTERPJIT.\$05 +cp rel/apple/SOS.CMDJIT#FE1000 prodos/fpsos/SOS.CMDJIT.REL mkdir prodos/fpsos/sys cp rel/apple/SOS#FE1000 prodos/fpsos/sys/SOS.REL @@ -127,24 +131,24 @@ cp samplesrc/fatcat.pla prodos/bld/samples/FATCAT.PLA.TXT cp samplesrc/gfxdemo.pla prodos/bld/samples/GFXDEMO.PLA.TXT cp samplesrc/lz4cat.pla prodos/bld/samples/Z4CAT.PLA.TXT -mkdir prodos/bld/examples -cp samplesrc/examples/ex.1.pla prodos/bld/examples/EX.1.PLA.TXT -cp samplesrc/examples/ex.2.pla prodos/bld/examples/EX.2.PLA.TXT -cp samplesrc/examples/ex.3.pla prodos/bld/examples/EX.3.PLA.TXT -cp samplesrc/examples/ex.4.pla prodos/bld/examples/EX.4.PLA.TXT -cp samplesrc/examples/ex.5.pla prodos/bld/examples/EX.5.PLA.TXT -cp samplesrc/examples/ex.6.pla prodos/bld/examples/EX.6.PLA.TXT -cp samplesrc/examples/ex.7.pla prodos/bld/examples/EX.7.PLA.TXT -cp samplesrc/examples/ex.8.pla prodos/bld/examples/EX.8.PLA.TXT -cp samplesrc/examples/ex.9.pla prodos/bld/examples/EX.9.PLA.TXT -cp samplesrc/examples/ex.10.pla prodos/bld/examples/EX.10.PLA.TXT -cp samplesrc/examples/ex.11.pla prodos/bld/examples/EX.11.PLA.TXT -cp samplesrc/examples/ex.12.pla prodos/bld/examples/EX.12.PLA.TXT -cp samplesrc/examples/ex.13.pla prodos/bld/examples/EX.13.PLA.TXT -cp samplesrc/examples/ex.14.pla prodos/bld/examples/EX.14.PLA.TXT -cp samplesrc/examples/ex.15.pla prodos/bld/examples/EX.15.PLA.TXT -cp samplesrc/examples/ex.16.pla prodos/bld/examples/EX.16.PLA.TXT -cp samplesrc/examples/ex.17.pla prodos/bld/examples/EX.17.PLA.TXT +#mkdir prodos/bld/examples +#cp samplesrc/examples/ex.1.pla prodos/bld/examples/EX.1.PLA.TXT +#cp samplesrc/examples/ex.2.pla prodos/bld/examples/EX.2.PLA.TXT +#cp samplesrc/examples/ex.3.pla prodos/bld/examples/EX.3.PLA.TXT +#cp samplesrc/examples/ex.4.pla prodos/bld/examples/EX.4.PLA.TXT +#cp samplesrc/examples/ex.5.pla prodos/bld/examples/EX.5.PLA.TXT +#cp samplesrc/examples/ex.6.pla prodos/bld/examples/EX.6.PLA.TXT +#cp samplesrc/examples/ex.7.pla prodos/bld/examples/EX.7.PLA.TXT +#cp samplesrc/examples/ex.8.pla prodos/bld/examples/EX.8.PLA.TXT +#cp samplesrc/examples/ex.9.pla prodos/bld/examples/EX.9.PLA.TXT +#cp samplesrc/examples/ex.10.pla prodos/bld/examples/EX.10.PLA.TXT +#cp samplesrc/examples/ex.11.pla prodos/bld/examples/EX.11.PLA.TXT +#cp samplesrc/examples/ex.12.pla prodos/bld/examples/EX.12.PLA.TXT +#cp samplesrc/examples/ex.13.pla prodos/bld/examples/EX.13.PLA.TXT +#cp samplesrc/examples/ex.14.pla prodos/bld/examples/EX.14.PLA.TXT +#cp samplesrc/examples/ex.15.pla prodos/bld/examples/EX.15.PLA.TXT +#cp samplesrc/examples/ex.16.pla prodos/bld/examples/EX.16.PLA.TXT +#cp samplesrc/examples/ex.17.pla prodos/bld/examples/EX.17.PLA.TXT mkdir prodos/bld/inc cp inc/args.plh prodos/bld/inc/ARGS.PLH.TXT diff --git a/src/toolsrc/ed.pla b/src/toolsrc/ed.pla index a0ae85a..f45658f 100755 --- a/src/toolsrc/ed.pla +++ b/src/toolsrc/ed.pla @@ -1600,7 +1600,7 @@ def cmdmode#0 word cmdptr, line clrscrn - puts("PLASMA Editor, Version 2.0 Dev\n") + puts("PLASMA Editor, Version 2.0 DP2\n") while not exit puts(@filename) cmdptr = gets($BA) diff --git a/src/toolsrc/plasm.pla b/src/toolsrc/plasm.pla index 675a7b5..d8feba6 100755 --- a/src/toolsrc/plasm.pla +++ b/src/toolsrc/plasm.pla @@ -507,7 +507,7 @@ include "toolsrc/parse.pla" // // Look at command line arguments and compile module // -puts("PLASMA Compiler, Version 2.0 Dev\n") +puts("PLASMA Compiler, Version 2.0 DP2\n") arg = argNext(argFirst) if ^arg and ^(arg + 1) == '-' opt = arg + 2 diff --git a/src/vmsrc/apple/a1cmd.pla b/src/vmsrc/apple/a1cmd.pla index b93c896..0feef38 100755 --- a/src/vmsrc/apple/a1cmd.pla +++ b/src/vmsrc/apple/a1cmd.pla @@ -40,7 +40,7 @@ predef sext(a)#1, divmod(a,b)#2, execmod(modfile)#1 // // Exported CMDSYS table // -word version = $0110 // 01.10 +word version = $0200 // 02.00 word syspath word syscmdln word = @execmod @@ -52,7 +52,7 @@ byte perr, refauto // String pool. // byte autorun[] = "AUTORUN" -byte verstr[] = "\nPLASMA " +byte verstr[] = "\nPLASMA DP2" byte freestr[] = "MEM FREE:$" byte errorstr[] = "ERR:$" byte prompt[] = "PLASMA" diff --git a/src/vmsrc/apple/cmd.pla b/src/vmsrc/apple/cmd.pla index af1df5a..45c50f0 100755 --- a/src/vmsrc/apple/cmd.pla +++ b/src/vmsrc/apple/cmd.pla @@ -1383,7 +1383,7 @@ heap = @lastdef // // Print PLASMA version // -prstr("PLASMA 2.0 Dev 64K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout +prstr("PLASMA 2.0 DP2 64K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout // // Init symbol table. // diff --git a/src/vmsrc/apple/cmdjit.pla b/src/vmsrc/apple/cmdjit.pla index 0aeba58..6f40545 100755 --- a/src/vmsrc/apple/cmdjit.pla +++ b/src/vmsrc/apple/cmdjit.pla @@ -1460,7 +1460,7 @@ heap = @lastdef // // Print PLASMA version // -prstr("PLASMA 2.0 Dev 128K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout +prstr("PLASMA 2.0 DP2 128K\n")//; prbyte(version.1); cout('.'); prbyte(version.0); crout // // Init symbol table. // diff --git a/src/vmsrc/apple/plvm03.s b/src/vmsrc/apple/plvm03.s index db24f80..e0a8d42 100755 --- a/src/vmsrc/apple/plvm03.s +++ b/src/vmsrc/apple/plvm03.s @@ -81,13 +81,9 @@ SEGSTART = $2000 CMP #$B8 BNE - LDA #$00 ; INIT JIT, FRAME & POOL POINTERS - STA JITCOMP - STA JITCOMP+1 - STA JITCODE STA PPL STA IFPL - LDA #$90 ; RESERVE 4K FOR JITCODE - STA JITCODE+1 + LDA #$A0 ; TOP OF RAM FOR FRAME POINER STA PPH STA IFPH LDX #$FF ; INIT STACK POINTER diff --git a/src/vmsrc/apple/plvmjit03.s b/src/vmsrc/apple/plvmjit03.s new file mode 100755 index 0000000..f33a56a --- /dev/null +++ b/src/vmsrc/apple/plvmjit03.s @@ -0,0 +1,1436 @@ +;********************************************************** +;* +;* APPLE /// PLASMA INTERPETER +;* +;* SYSTEM ROUTINES AND LOCATIONS +;* +;********************************************************** +; +; HARDWARE REGISTERS +; +MEMBANK = $FFEF + !SOURCE "vmsrc/plvmzp.inc" +DVSIGN = TMP+2 +DROP = $EF +NEXTOP = $F0 +FETCHOP = NEXTOP+1 +IP = FETCHOP+1 +IPL = IP +IPH = IPL+1 +OPIDX = FETCHOP+6 +OPPAGE = OPIDX+1 +; +; XPAGE ADDRESSES +; +XPAGE = $1600 +DROPX = XPAGE+DROP +IFPX = XPAGE+IFPH +PPX = XPAGE+PPH +IPX = XPAGE+IPH +JMPTMPX = XPAGE+JMPTMP +TMPX = XPAGE+TMPH +SRCX = XPAGE+SRCH +DSTX = XPAGE+DSTH +;* +;* SOS +;* + !MACRO SOS .CMD, .LIST { + BRK + !BYTE .CMD + !WORD .LIST + } +;* +;* INTERPRETER HEADER+INITIALIZATION +;* +SEGSTART = $2000 + *= SEGSTART-$0E + !TEXT "SOS NTRP" + !WORD $0000 + !WORD SEGSTART + !WORD SEGEND-SEGSTART + + LDY #$0F ; INSTALL PAGE 0 FETCHOP ROUTINE + LDA #$00 +- LDX PAGE0,Y + STX DROP,Y + STA DROPX,Y + DEY + BPL - + LDX #$4C ; SET JMPTMP OPCODE + STX JMPTMP + STA TMPX ; CLEAR ALL EXTENDED POINTERS + STA SRCX + STA DSTX + STA PPX + STA IFPX + LDA #VMCORE + STA SRCH + LDY #$00 + STY DSTL + LDA #$A0 + STA DSTH +- LDA (SRC),Y + STA (DST),Y + INY + BNE - + INC SRCH + INC DSTH + LDA DSTH + CMP #$B8 + BNE - + LDA #$00 ; INIT JIT, FRAME & POOL POINTERS + STA JITCOMP + STA JITCOMP+1 + STA JITCODE + STA PPL + STA IFPL + LDA #$90 ; RESERVE 4K FOR JITCODE + STA JITCODE+1 + STA PPH + STA IFPH + LDX #$FF ; INIT STACK POINTER + TXS + LDX #ESTKSZ/2 ; INIT EVAL STACK INDEX + JMP SOSCMD +;PRHEX PHA +; LSR +; LSR +; LSR +; LSR +; CLC +; ADC #'0' +; CMP #':' +; BCC + +; ADC #6 +;+ STA $480 +; PLA +; AND #$0F +; ADC #'0' +; CMP #':' +; BCC + +; ADC #6 +;+ STA $481 ;$880 +;FAIL STA $0480 +; RTS +;SEGREQ !BYTE 4 +; !WORD $2000 +; !WORD $9F00 +; !BYTE $10 +; !BYTE $00 +PAGE0 = * + !PSEUDOPC DROP { +;* +;* INTERP BYTECODE INNER LOOP +;* + INX ; DROP + INY ; NEXTOP + LDA $FFFF,Y ; FETCHOP @ $F1, IP MAPS OVER $FFFF @ $F2 + STA OPIDX + JMP (OPTBL) +} +VMCORE = * + !PSEUDOPC $A000 { +TEMPBUF !FILL $F0 +CMDPARS !WORD 0 ; $A0F0 +JITCOMP !WORD 0 ; $A0F2 +JITCODE !WORD 0 ; $A0F4 +SENTRY !WORD INTERP ; $A0F6 +XENTRY !WORD XINTERP ; $A0F8 +JENTRY !WORD JITINTRP ; $A0FA +;* +;* OPCODE TABLE +;* + !ALIGN 255,0 +OPTBL !WORD ZERO,CN,CN,CN,CN,CN,CN,CN ; 00 02 04 06 08 0A 0C 0E + !WORD CN,CN,CN,CN,CN,CN,CN,CN ; 10 12 14 16 18 1A 1C 1E + !WORD MINUS1,BREQ,BRNE,LA,LLA,CB,CW,CS ; 20 22 24 26 28 2A 2C 2E + !WORD DROP,DROP2,DUP,DIVMOD,ADDI,SUBI,ANDI,ORI ; 30 32 34 36 38 3A 3C 3E + !WORD ISEQ,ISNE,ISGT,ISLT,ISGE,ISLE,BRFLS,BRTRU ; 40 42 44 46 48 4A 4C 4E + !WORD BRNCH,SEL,CALL,ICAL,ENTER,LEAVE,RET,CFFB ; 50 52 54 56 58 5A 5C 5E + !WORD LB,LW,LLB,LLW,LAB,LAW,DLB,DLW ; 60 62 64 66 68 6A 6C 6E + !WORD SB,SW,SLB,SLW,SAB,SAW,DAB,DAW ; 70 72 74 76 78 7A 7C 7E + !WORD LNOT,ADD,SUB,MUL,DIV,MOD,INCR,DECR ; 80 82 84 86 88 8A 8C 8E + !WORD NEG,COMP,BAND,IOR,XOR,SHL,SHR,IDXW ; 90 92 94 96 98 9A 9C 9E + !WORD BRGT,BRLT,INCBRLE,ADDBRLE,DECBRGE,SUBBRGE,BRAND,BROR ; A0 A2 A4 A6 A8 AA AC AE + !WORD ADDLB,ADDLW,ADDAB,ADDAW,IDXLB,IDXLW,IDXAB,IDXAW ; B0 B2 B4 B6 B8 BA BC BE + !WORD NATV ; C0 +;* +;* SYSTEM INTERPRETER ENTRYPOINT +;* +INTERP PLA + CLC + ADC #$01 + STA IPL + PLA + ADC #$00 + STA IPH + LDY #$00 + STY IPX + JMP FETCHOP +;* +;* ENTER INTO USER BYTECODE INTERPRETER +;* +XINTERP PLA + STA TMPL + PLA + STA TMPH +- LDY #$03 + LDA (TMP),Y + STA IPX + DEY + LDA (TMP),Y + STA IPH + DEY + LDA (TMP),Y + STA IPL + DEY + JMP FETCHOP +;* +;* JIT PROFILING ENTRY INTO INTERPRETER +;* +JITINTRP PLA + STA TMPL + PLA + STA TMPH + LDY #$04 + LDA (TMP),Y ; DEC JIT COUNT + SEC + SBC #$01 + STA (TMP),Y + BNE - ; INTERP BYTECODE + LDA JITCOMP ; CALL JIT COMPILER + STA SRCL + LDA JITCOMP+1 + STA SRCH + INY ; LDY #$05 + LDA (SRC),Y + STA IPX + DEY + LDA (SRC),Y + STA IPH + DEY + LDA (SRC),Y + STA IPL + DEX ; ADD PARAMETER TO DEF ENTRY + LDA TMPL + SEC + SBC #$02 ; POINT TO DEF ENTRY + PHA ; AND SAVE IT FOR LATER + STA ESTKL,X + LDA TMPH + SBC #$00 + PHA + STA ESTKH,X + LDY #$00 + JSR FETCHOP ; CALL JIT COMPILER + PLA + STA TMPH + PLA + STA TMPL + JMP (TMP) ; RE-CALL ORIGINAL DEF ENTRY +;* +;* INTERNAL DIVIDE ALGORITHM +;* +_NEG LDA #$00 + SEC + SBC ESTKL,X + STA ESTKL,X + LDA #$00 + SBC ESTKH,X + STA ESTKH,X + RTS +_DIV STY IPY + LDY #$11 ; #BITS+1 + LDA #$00 + STA TMPL ; REMNDRL + STA TMPH ; REMNDRH + STA DVSIGN + LDA ESTKH+1,X + BPL + + INX + JSR _NEG + DEX + LDA #$81 + STA DVSIGN ++ ORA ESTKL+1,X ; DVDNDL + BEQ _DIVEX + LDA ESTKH,X + BPL _DIV1 + JSR _NEG + INC DVSIGN +_DIV1 ASL ESTKL+1,X ; DVDNDL + ROL ESTKH+1,X ; DVDNDH + DEY + BCC _DIV1 +_DIVLP ROL TMPL ; REMNDRL + ROL TMPH ; REMNDRH + LDA TMPL ; REMNDRL + CMP ESTKL,X ; DVSRL + LDA TMPH ; REMNDRH + SBC ESTKH,X ; DVSRH + BCC + + STA TMPH ; REMNDRH + LDA TMPL ; REMNDRL + SBC ESTKL,X ; DVSRL + STA TMPL ; REMNDRL + SEC ++ ROL ESTKL+1,X ; DVDNDL + ROL ESTKH+1,X ; DVDNDH + DEY + BNE _DIVLP +_DIVEX INX + LDY IPY + RTS +;* +;* MUL TOS-1 BY TOS +;* +MUL STY IPY + LDY #$10 + LDA ESTKL+1,X + EOR #$FF + STA TMPL + LDA ESTKH+1,X + EOR #$FF + STA TMPH + LDA #$00 + STA ESTKL+1,X ; PRODL +; STA ESTKH+1,X ; PRODH +_MULLP LSR TMPH ; MULTPLRH + ROR TMPL ; MULTPLRL + BCS + + STA ESTKH+1,X ; PRODH + LDA ESTKL,X ; MULTPLNDL + ADC ESTKL+1,X ; PRODL + STA ESTKL+1,X + LDA ESTKH,X ; MULTPLNDH + ADC ESTKH+1,X ; PRODH ++ ASL ESTKL,X ; MULTPLNDL + ROL ESTKH,X ; MULTPLNDH + DEY + BNE _MULLP + STA ESTKH+1,X ; PRODH + LDY IPY + JMP DROP +;* +;* NEGATE TOS +;* +NEG JSR _NEG + JMP NEXTOP +;* +;* DIV TOS-1 BY TOS +;* +DIV JSR _DIV + LSR DVSIGN ; SIGN(RESULT) = (SIGN(DIVIDEND) + SIGN(DIVISOR)) & 1 + BCS NEG + JMP NEXTOP +;* +;* MOD TOS-1 BY TOS +;* +MOD JSR _DIV + LDA TMPL ; REMNDRL + STA ESTKL,X + LDA TMPH ; REMNDRH + STA ESTKH,X + LDA DVSIGN ; REMAINDER IS SIGN OF DIVIDEND + BMI NEG + JMP NEXTOP +;* +;* DIVMOD TOS-1 BY TOS +;* +DIVMOD JSR _DIV + LSR DVSIGN ; SIGN(RESULT) = (SIGN(DIVIDEND) + SIGN(DIVISOR)) & 1 + BCC + + JSR _NEG ++ DEX + LDA TMPL ; REMNDRL + STA ESTKL,X + LDA TMPH ; REMNDRH + STA ESTKH,X + ASL DVSIGN ; REMAINDER IS SIGN OF DIVIDEND + BMI NEG + JMP NEXTOP +;* +;* INCREMENT TOS +;* +INCR INC ESTKL,X + BNE + + INC ESTKH,X ++ JMP NEXTOP +;* +;* DECREMENT TOS +;* +DECR LDA ESTKL,X + BNE + + DEC ESTKH,X ++ DEC ESTKL,X + JMP NEXTOP +;* +;* ADD TOS TO TOS-1 +;* +ADD LDA ESTKL,X + CLC + ADC ESTKL+1,X + STA ESTKL+1,X + LDA ESTKH,X + ADC ESTKH+1,X + STA ESTKH+1,X + JMP DROP +;* +;* SUB TOS FROM TOS-1 +;* +SUB LDA ESTKL+1,X + SEC + SBC ESTKL,X + STA ESTKL+1,X + LDA ESTKH+1,X + SBC ESTKH,X + STA ESTKH+1,X + JMP DROP +; +;* +;* SHIFT TOS LEFT BY 1, ADD TO TOS-1 +;* +IDXW LDA ESTKL,X + ASL + ROL ESTKH,X + CLC + ADC ESTKL+1,X + STA ESTKL+1,X + LDA ESTKH,X + ADC ESTKH+1,X + STA ESTKH+1,X + JMP DROP +;* +;* BITWISE COMPLIMENT TOS +;* +COMP LDA #$FF + EOR ESTKL,X + STA ESTKL,X + LDA #$FF + EOR ESTKH,X + STA ESTKH,X + JMP NEXTOP +;* +;* BITWISE AND TOS TO TOS-1 +;* +BAND LDA ESTKL+1,X + AND ESTKL,X + STA ESTKL+1,X + LDA ESTKH+1,X + AND ESTKH,X + STA ESTKH+1,X + JMP DROP +;* +;* INCLUSIVE OR TOS TO TOS-1 +;* +IOR LDA ESTKL+1,X + ORA ESTKL,X + STA ESTKL+1,X + LDA ESTKH+1,X + ORA ESTKH,X + STA ESTKH+1,X + JMP DROP +;* +;* EXLUSIVE OR TOS TO TOS-1 +;* +XOR LDA ESTKL+1,X + EOR ESTKL,X + STA ESTKL+1,X + LDA ESTKH+1,X + EOR ESTKH,X + STA ESTKH+1,X + JMP DROP +;* +;* SHIFT TOS-1 LEFT BY TOS +;* +SHL STY IPY + LDA ESTKL,X + CMP #$08 + BCC + + LDY ESTKL+1,X + STY ESTKH+1,X + LDY #$00 + STY ESTKL+1,X + SBC #$08 ++ TAY + BEQ + + LDA ESTKL+1,X +- ASL + ROL ESTKH+1,X + DEY + BNE - + STA ESTKL+1,X ++ LDY IPY + JMP DROP +;* +;* SHIFT TOS-1 RIGHT BY TOS +;* +SHR STY IPY + LDA ESTKL,X + CMP #$08 + BCC ++ + LDY ESTKH+1,X + STY ESTKL+1,X + CPY #$80 + LDY #$00 + BCC + + DEY ++ STY ESTKH+1,X + SEC + SBC #$08 +++ TAY + BEQ + + LDA ESTKH+1,X +- CMP #$80 + ROR + ROR ESTKL+1,X + DEY + BNE - + STA ESTKH+1,X ++ LDY IPY + JMP DROP +;* +;* DUPLICATE TOS +;* +DUP DEX + LDA ESTKL+1,X + STA ESTKL,X + LDA ESTKH+1,X + STA ESTKH,X + JMP NEXTOP +;* +;* ADD IMMEDIATE TO TOS +;* +ADDI INY ;+INC_IP + LDA (IP),Y + CLC + ADC ESTKL,X + STA ESTKL,X + BCC + + INC ESTKH,X ++ JMP NEXTOP +;* +;* SUB IMMEDIATE FROM TOS +;* +SUBI INY ;+INC_IP + LDA ESTKL,X + SEC + SBC (IP),Y + STA ESTKL,X + BCS + + DEC ESTKH,X ++ JMP NEXTOP +;* +;* AND IMMEDIATE TO TOS +;* +ANDI INY ;+INC_IP + LDA (IP),Y + AND ESTKL,X + STA ESTKL,X + LDA #$00 + STA ESTKH,X + JMP NEXTOP +;* +;* IOR IMMEDIATE TO TOS +;* +ORI INY ;+INC_IP + LDA (IP),Y + ORA ESTKL,X + STA ESTKL,X + JMP NEXTOP +;* +;* LOGICAL NOT +;* +LNOT LDA ESTKL,X + ORA ESTKH,X + BEQ + + LDA #$00 + STA ESTKL,X + STA ESTKH,X + JMP NEXTOP +;* +;* CONSTANT -1, ZERO, NYBBLE, BYTE, $FF BYTE, WORD (BELOW) +;* +MINUS1 DEX ++ LDA #$FF + STA ESTKL,X + STA ESTKH,X + JMP NEXTOP +ZERO DEX + STA ESTKL,X + STA ESTKH,X + JMP NEXTOP +CN DEX + LSR ; A = CONST * 2 + STA ESTKL,X + LDA #$00 + STA ESTKH,X + JMP NEXTOP +CFFB LDA #$FF + DEX + STA ESTKH,X + INY ;+INC_IP + LDA (IP),Y + STA ESTKL,X + JMP NEXTOP +CB LDA #$00 + DEX + STA ESTKH,X + INY ;+INC_IP + LDA (IP),Y + STA ESTKL,X + JMP NEXTOP +;* +;* LOAD ADDRESS & LOAD CONSTANT WORD (SAME THING, WITH OR WITHOUT FIXUP) +;* +- TYA ; RENORMALIZE IP + CLC + ADC IPL + STA IPL + BCC + + INC IPH ++ LDY #$FF +LA INY ;+INC_IP + BMI - + DEX + LDA (IP),Y + STA ESTKL,X + INY + LDA (IP),Y + STA ESTKH,X + JMP NEXTOP +CW DEX + INY ;+INC_IP + LDA (IP),Y + STA ESTKL,X + INY + LDA (IP),Y + STA ESTKH,X + JMP NEXTOP +;* +;* CONSTANT STRING +;* +CS DEX + ;INY ;+INC_IP + TYA ; NORMALIZE IP + SEC + ADC IPL + STA IPL + LDA #$00 + TAY + ADC IPH + STA IPH + LDA PPL ; SCAN POOL FOR STRING ALREADY THERE + STA TMPL + LDA PPH + STA TMPH +_CMPPS ;LDA TMPH ; CHECK FOR END OF POOL + CMP IFPH + BCC _CMPS ; CHECK FOR MATCHING STRING + BNE _CPYS ; BEYOND END OF POOL, COPY STRING OVER + LDA TMPL + CMP IFPL + BCS _CPYS ; AT OR BEYOND END OF POOL, COPY STRING OVER +_CMPS LDA (TMP),Y ; COMPARE STRINGS FROM AUX MEM TO STRINGS IN MAIN MEM + CMP (IP),Y ; COMPARE STRING LENGTHS + BNE _CNXTS1 + TAY +_CMPCS LDA (TMP),Y ; COMPARE STRING CHARS FROM END + CMP (IP),Y + BNE _CNXTS + DEY + BNE _CMPCS + LDA TMPL ; MATCH - SAVE EXISTING ADDR ON ESTK AND MOVE ON + STA ESTKL,X + LDA TMPH + STA ESTKH,X + BNE _CEXS +_CNXTS LDY #$00 + LDA (TMP),Y +_CNXTS1 SEC + ADC TMPL + STA TMPL + LDA #$00 + ADC TMPH + STA TMPH + BNE _CMPPS +_CPYS LDA (IP),Y ; COPY STRING FROM AUX TO MAIN MEM POOL + TAY ; MAKE ROOM IN POOL AND SAVE ADDR ON ESTK + EOR #$FF + CLC + ADC PPL + STA PPL + STA ESTKL,X + LDA #$FF + ADC PPH + STA PPH + STA ESTKH,X ; COPY STRING FROM AUX MEM BYTECODE TO MAIN MEM POOL +_CPYS1 LDA (IP),Y ; ALTRD IS ON, NO NEED TO CHANGE IT HERE + STA (PP),Y ; ALTWR IS OFF, NO NEED TO CHANGE IT HERE + DEY + CPY #$FF + BNE _CPYS1 + INY +_CEXS LDA (IP),Y ; SKIP TO NEXT OP ADDR AFTER STRING + TAY + JMP NEXTOP +;* +;* LOAD VALUE FROM ADDRESS TAG +;* +LB LDA ESTKL,X + STA ESTKH-1,X + LDA (ESTKH-1,X) + STA ESTKL,X + LDA #$00 + STA ESTKH,X + JMP NEXTOP +LW LDA ESTKL,X + STA ESTKH-1,X + LDA (ESTKH-1,X) + STA ESTKL,X + INC ESTKH-1,X + BNE + + INC ESTKH,X ++ LDA (ESTKH-1,X) + STA ESTKH,X + JMP NEXTOP +;* +;* LOAD ADDRESS OF LOCAL FRAME OFFSET +;* +- TYA ; RENORMALIZE IP + CLC + ADC IPL + STA IPL + BCC + + INC IPH ++ LDY #$FF +LLA INY ;+INC_IP + BMI - + LDA (IP),Y + DEX + CLC + ADC IFPL + STA ESTKL,X + LDA #$00 + ADC IFPH + STA ESTKH,X + JMP NEXTOP +;* +;* LOAD VALUE FROM LOCAL FRAME OFFSET +;* +LLB INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + DEX + LDA (IFP),Y + STA ESTKL,X + LDA #$00 + STA ESTKH,X + LDY IPY + JMP NEXTOP +LLW INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + DEX + LDA (IFP),Y + STA ESTKL,X + INY + LDA (IFP),Y + STA ESTKH,X + LDY IPY + JMP NEXTOP +;* +;* ADD VALUE FROM LOCAL FRAME OFFSET +;* +ADDLB INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + LDA (IFP),Y + CLC + ADC ESTKL,X + STA ESTKL,X + BCC + + INC ESTKH,X ++ LDY IPY + JMP NEXTOP +ADDLW INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + LDA (IFP),Y + CLC + ADC ESTKL,X + STA ESTKL,X + INY + LDA (IFP),Y + ADC ESTKH,X + STA ESTKH,X + LDY IPY + JMP NEXTOP +;* +;* INDEX VALUE FROM LOCAL FRAME OFFSET +;* +IDXLB INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + LDA (IFP),Y + LDY #$00 + ASL + BCC + + INY + CLC ++ ADC ESTKL,X + STA ESTKL,X + TYA + ADC ESTKH,X + STA ESTKH,X + LDY IPY + JMP NEXTOP +IDXLW INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + LDA (IFP),Y + ASL + STA TMPL + INY + LDA (IFP),Y + ROL + STA TMPH + LDA TMPL + CLC + ADC ESTKL,X + STA ESTKL,X + LDA TMPH + ADC ESTKH,X + STA ESTKH,X + LDY IPY + JMP NEXTOP +;* +;* LOAD VALUE FROM ABSOLUTE ADDRESS +;* +LAB INY ;+INC_IP + LDA (IP),Y + STA ESTKH-2,X + INY ;+INC_IP + LDA (IP),Y + STA ESTKH-1,X + LDA (ESTKH-2,X) + DEX + STA ESTKL,X + LDA #$00 + STA ESTKH,X + JMP NEXTOP +LAW INY ;+INC_IP + LDA (IP),Y + STA TMPL + INY ;+INC_IP + LDA (IP),Y + STA TMPH + STY IPY + LDY #$00 + LDA (TMP),Y + DEX + STA ESTKL,X + INY + LDA (TMP),Y + STA ESTKH,X + LDY IPY + JMP NEXTOP +;* +;* ADD VALUE FROM ABSOLUTE ADDRESS +;* +ADDAB INY ;+INC_IP + LDA (IP),Y + STA ESTKH-2,X + INY ;+INC_IP + LDA (IP),Y + STA ESTKH-1,X + LDA (ESTKH-2,X) + CLC + ADC ESTKL,X + STA ESTKL,X + BCC + + INC ESTKH,X ++ JMP NEXTOP +ADDAW INY ;+INC_IP + LDA (IP),Y + STA SRCL + INY ;+INC_IP + LDA (IP),Y + STA SRCH + STY IPY + LDY #$00 + LDA (SRC),Y + CLC + ADC ESTKL,X + STA ESTKL,X + INY + LDA (SRC),Y + ADC ESTKH,X + STA ESTKH,X + LDY IPY + JMP NEXTOP +;* +;* INDEX VALUE FROM ABSOLUTE ADDRESS +;* +IDXAB INY ;+INC_IP + LDA (IP),Y + STA ESTKH-2,X + INY ;+INC_IP + LDA (IP),Y + STA ESTKH-1,X + LDA (ESTKH-2,X) + STY IPY + LDY #$00 + ASL + BCC + + INY + CLC ++ ADC ESTKL,X + STA ESTKL,X + TYA + ADC ESTKH,X + STA ESTKH,X + LDY IPY + JMP NEXTOP +IDXAW INY ;+INC_IP + LDA (IP),Y + STA SRCL + INY ;+INC_IP + LDA (IP),Y + STA SRCH + STY IPY + LDY #$00 + LDA (SRC),Y + ASL + STA TMPL + INY + LDA (SRC),Y + ROL + STA TMPH + LDA TMPL + CLC + ADC ESTKL,X + STA ESTKL,X + LDA TMPH + ADC ESTKH,X + STA ESTKH,X + LDY IPY + JMP NEXTOP +;* +;* STORE VALUE TO ADDRESS +;* +SB LDA ESTKL,X + STA ESTKH-1,X + LDA ESTKL+1,X + STA (ESTKH-1,X) + INX + JMP DROP +SW LDA ESTKL,X + STA ESTKH-1,X + LDA ESTKL+1,X + STA (ESTKH-1,X) + LDA ESTKH+1,X + INC ESTKH-1,X + BNE + + INC ESTKH,X ++ STA (ESTKH-1,X) +;* +;* DROP TOS, TOS-1 +;* +DROP2 INX + JMP DROP +;* +;* STORE VALUE TO LOCAL FRAME OFFSET +;* +SLB INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + LDA ESTKL,X + STA (IFP),Y + LDY IPY + BMI FIXDROP + JMP DROP +SLW INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + LDA ESTKL,X + STA (IFP),Y + INY + LDA ESTKH,X + STA (IFP),Y + LDY IPY + BMI FIXDROP + JMP DROP +FIXDROP TYA + LDY #$00 + CLC + ADC IPL + STA IPL + BCC + + INC IPH ++ JMP DROP +;* +;* STORE VALUE TO LOCAL FRAME OFFSET WITHOUT POPPING STACK +;* +DLB INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + LDA ESTKL,X + STA (IFP),Y + LDA #$00 + STA ESTKH,X + LDY IPY + JMP NEXTOP +DLW INY ;+INC_IP + LDA (IP),Y + STY IPY + TAY + LDA ESTKL,X + STA (IFP),Y + INY + LDA ESTKH,X + STA (IFP),Y + LDY IPY + JMP NEXTOP +;* +;* STORE VALUE TO ABSOLUTE ADDRESS +;* +- TYA ; RENORMALIZE IP + CLC + ADC IPL + STA IPL + BCC + + INC IPH ++ LDY #$FF +SAB INY ;+INC_IP + BMI - + LDA (IP),Y + STA ESTKH-2,X + INY ;+INC_IP + LDA (IP),Y + STA ESTKH-1,X + LDA ESTKL,X + STA (ESTKH-2,X) + JMP DROP +SAW INY ;+INC_IP + LDA (IP),Y + STA TMPL + INY ;+INC_IP + LDA (IP),Y + STA TMPH + STY IPY + LDY #$00 + LDA ESTKL,X + STA (TMP),Y + INY + LDA ESTKH,X + STA (TMP),Y + LDY IPY + BMI FIXDROP + JMP DROP +;* +;* STORE VALUE TO ABSOLUTE ADDRESS WITHOUT POPPING STACK +;* +DAB INY ;+INC_IP + LDA (IP),Y + STA ESTKH-2,X + INY ;+INC_IP + LDA (IP),Y + STA ESTKH-1,X + LDA ESTKL,X + STA (ESTKH-2,X) + LDA #$00 + STA ESTKH,X + JMP NEXTOP +DAW INY ;+INC_IP + LDA (IP),Y + STA TMPL + INY ;+INC_IP + LDA (IP),Y + STA TMPH + STY IPY + LDY #$00 + LDA ESTKL,X + STA (TMP),Y + INY + LDA ESTKH,X + STA (TMP),Y + LDY IPY + JMP NEXTOP +;* +;* COMPARES +;* +ISEQ LDA ESTKL,X + CMP ESTKL+1,X + BNE ISFLS + LDA ESTKH,X + CMP ESTKH+1,X + BNE ISFLS +ISTRU LDA #$FF + STA ESTKL+1,X + STA ESTKH+1,X + JMP DROP +ISNE LDA ESTKL,X + CMP ESTKL+1,X + BNE ISTRU + LDA ESTKH,X + CMP ESTKH+1,X + BNE ISTRU +ISFLS LDA #$00 + STA ESTKL+1,X + STA ESTKH+1,X + JMP DROP +ISGE LDA ESTKL+1,X + CMP ESTKL,X + LDA ESTKH+1,X + SBC ESTKH,X + BVS + + BPL ISTRU + BMI ISFLS ++ +- BPL ISFLS + BMI ISTRU +ISLE LDA ESTKL,X + CMP ESTKL+1,X + LDA ESTKH,X + SBC ESTKH+1,X + BVS - + BPL ISTRU + BMI ISFLS +ISGT LDA ESTKL,X + CMP ESTKL+1,X + LDA ESTKH,X + SBC ESTKH+1,X + BVS + + BMI ISTRU + BPL ISFLS ++ +- BMI ISFLS + BPL ISTRU +ISLT LDA ESTKL+1,X + CMP ESTKL,X + LDA ESTKH+1,X + SBC ESTKH,X + BVS - + BMI ISTRU + BPL ISFLS +;* +;* BRANCHES +;* +SEL INX + TYA ; FLATTEN IP + SEC + ADC IPL + STA TMPL + LDA #$00 + TAY + ADC IPH + STA TMPH ; ADD CASEBLOCK OFFSET + LDA IPX ; COPY XBYTE FROM IP + STA TMPX + LDA (TMP),Y + ;CLC ; BETTER NOT CARRY OUT OF IP+Y + ADC TMPL + STA IPL + INY + LDA (TMP),Y + ADC TMPH + STA IPH + DEY + STY TMPX ; CLEAR TMPX + LDA (IP),Y + STA TMPL ; CASE COUNT + INC IPL + BNE CASELP + INC IPH +CASELP LDA ESTKL-1,X + CMP (IP),Y + BEQ + + LDA ESTKH-1,X + INY + SBC (IP),Y + BMI CASEEND +- INY + INY + DEC TMPL + BEQ FIXNEXT + INY + BNE CASELP + INC IPH + BNE CASELP ++ LDA ESTKH-1,X + INY + SBC (IP),Y + BEQ BRNCH + BPL - +CASEEND LDA #$00 + STA TMPH + DEC TMPL + LDA TMPL + ASL ; SKIP REMAINING CASES + ROL TMPH + ASL + ROL TMPH +; CLC + ADC IPL + STA IPL + LDA TMPH + ADC IPH + STA IPH + INY + INY +FIXNEXT TYA + LDY #$00 + SEC + ADC IPL + STA IPL + BCC + + INC IPH ++ JMP FETCHOP +BRAND LDA ESTKL,X + ORA ESTKH,X + BEQ BRNCH + INX ; DROP LEFT HALF OF AND + BNE NOBRNCH +BROR LDA ESTKL,X + ORA ESTKH,X + BNE BRNCH + INX ; DROP LEFT HALF OF OR + BNE NOBRNCH +BREQ INX + INX + LDA ESTKL-2,X + CMP ESTKL-1,X + BNE NOBRNCH + LDA ESTKH-2,X + CMP ESTKH-1,X + BEQ BRNCH + BNE NOBRNCH +BRNE INX + INX + LDA ESTKL-2,X + CMP ESTKL-1,X + BNE BRNCH + LDA ESTKH-2,X + CMP ESTKH-1,X + BNE BRNCH + BEQ NOBRNCH +BRTRU INX + LDA ESTKH-1,X + ORA ESTKL-1,X + BNE BRNCH +NOBRNCH INY ;+INC_IP + INY ;+INC_IP + BMI FIXNEXT + JMP NEXTOP +BRFLS INX + LDA ESTKH-1,X + ORA ESTKL-1,X + BNE NOBRNCH +BRNCH TYA ; FLATTEN IP + SEC + ADC IPL + STA TMPL + LDA #$00 + TAY + ADC IPH + STA TMPH ; ADD BRANCH OFFSET + LDA IPX ; COPY XBYTE FROM IP + STA TMPX + LDA (TMP),Y + ;CLC ; BETTER NOT CARRY OUT OF IP+Y + ADC TMPL + STA IPL + INY + LDA (TMP),Y + ADC TMPH + STA IPH + DEY + STY TMPX ; CLEAR TMPX + JMP FETCHOP +;* +;* FOR LOOPS PUT TERMINAL VALUE AT ESTK+1 AND CURRENT COUNT ON ESTK +;* +BRGT LDA ESTKL+1,X + CMP ESTKL,X + LDA ESTKH+1,X + SBC ESTKH,X + BVS ++ +- BPL NOBRNCH + BMI BRNCH +BRLT LDA ESTKL,X + CMP ESTKL+1,X + LDA ESTKH,X + SBC ESTKH+1,X + BVS ++ + BPL NOBRNCH + BMI BRNCH +DECBRGE DEC ESTKL,X + LDA ESTKL,X + CMP #$FF + BNE + + DEC ESTKH,X +_BRGE LDA ESTKL,X ++ CMP ESTKL+1,X + LDA ESTKH,X + SBC ESTKH+1,X + BVS - + BPL BRNCH + BMI NOBRNCH +INCBRLE INC ESTKL,X + BNE _BRLE + INC ESTKH,X +_BRLE LDA ESTKL+1,X + CMP ESTKL,X + LDA ESTKH+1,X + SBC ESTKH,X + BVS - +++ BPL BRNCH + BMI NOBRNCH +SUBBRGE LDA ESTKL+1,X + SEC + SBC ESTKL,X + STA ESTKL+1,X + LDA ESTKH+1,X + SBC ESTKH,X + STA ESTKH+1,X + INX + BNE _BRGE +ADDBRLE LDA ESTKL,X + CLC + ADC ESTKL+1,X + STA ESTKL+1,X + LDA ESTKH,X + ADC ESTKH+1,X + STA ESTKH+1,X + INX + BNE _BRLE +;* +;* INDIRECT CALL TO ADDRESS (NATIVE CODE) +;* +ICAL LDA ESTKL,X + STA ICALADR+1 + LDA ESTKH,X + STA ICALADR+2 + INX + TYA + SEC + ADC IPL + PHA + LDA IPH + ADC #$00 + PHA + LDA IPX + PHA +ICALADR JSR $FFFF + PLA + STA IPX + PLA + STA IPH + PLA + STA IPL + LDY #$00 + JMP FETCHOP +;* +;* CALL INTO ABSOLUTE ADDRESS (NATIVE CODE) +;* +CALL INY ;+INC_IP + LDA (IP),Y + STA CALLADR+1 + INY ;+INC_IP + LDA (IP),Y + STA CALLADR+2 +_CALL TYA + SEC + ADC IPL + PHA + LDA IPH + ADC #$00 + PHA + LDA IPX + PHA +CALLADR JSR $FFFF + PLA + STA IPX + PLA + STA IPH + PLA + STA IPL + LDY #$00 + JMP FETCHOP +;* +;* ENTER FUNCTION WITH FRAME SIZE AND PARAM COUNT +;* +ENTER LDA IFPH + PHA ; SAVE ON STACK FOR LEAVE + LDA IFPL + PHA + INY + LDA (IP),Y + EOR #$FF + SEC + ADC PPL + STA PPL + STA IFPL + LDA #$FF + ADC PPH + STA PPH + STA IFPH + INY + LDA (IP),Y + BEQ + + ASL + TAY +- LDA ESTKH,X + DEY + STA (IFP),Y + LDA ESTKL,X + INX + DEY + STA (IFP),Y + BNE - ++ LDY #$03 + JMP FETCHOP +;* +;* LEAVE FUNCTION +;* +LEAVE INY ;+INC_IP + LDA (IP),Y + CLC + ADC IFPL + STA PPL + LDA #$00 + ADC IFPH + STA PPH + PLA ; RESTORE PREVIOUS FRAME + STA IFPL + PLA + STA IFPH +RET RTS +;* +;* RETURN TO NATIVE CODE +;* +NATV TYA ; FLATTEN IP + SEC + ADC IPL + STA IPL + BCS + + JMP (IP) ++ INC IPH + JMP (IP) +SOSCMD = * + !SOURCE "vmsrc/apple/sossysjit.a" + +} +SEGEND = * diff --git a/src/vmsrc/apple/soscmd.pla b/src/vmsrc/apple/soscmd.pla index eef4d83..e9f3ca2 100755 --- a/src/vmsrc/apple/soscmd.pla +++ b/src/vmsrc/apple/soscmd.pla @@ -17,14 +17,9 @@ end // // Private addresses // -const jitcbuf = $9000 -const codemax = $A000 const cmdparser = $A0F0 -const jitcomp = $A0F2 -const jitcodeptr = $A0F4 const sinterp = $A0F6 const xinterp = $A0F8 -const jitinterp = $A0FA const estkh8 = $C000 const estkh = $00C0 const estkl8 = $D000 @@ -36,49 +31,6 @@ const tmpl8 = $E700 const tmph8 = $E800 word directentry, indirectentry // -// COPY FROM EXT MEM TO MAIN MEM. -// -asm defcpy(dst, defentry)#0 - !SOURCE "vmsrc/plvmzp.inc" -XPAGE = $1600 -SRCX = XPAGE+SRCH -DSTX = XPAGE+DSTH - - LDA ESTKL+1,X - STA DSTL - LDA ESTKH+1,X - STA DSTH - LDA ESTKL,X - STA TMPL - LDA ESTKH,X - STA TMPH - LDY #$05 - LDA (TMP),Y - STA SRCX - DEY - LDA (TMP),Y - STA SRCH - DEY - LDA (TMP),Y - STA SRCL - LDY #$07 - LDA (TMP),Y - TAY - DEY - BEQ + -- LDA (SRC),Y - STA (DST),Y - DEY - BNE - -+ LDA (SRC),Y - STA (DST),Y - STY SRCX - INX - INX - RTS -end -include "libsrc/jitcore.pla" -// // SOS routines // FILE I/O // @@ -291,8 +243,7 @@ def shell#1 volumes break is '+' - *jitcodeptr = jitcbuf - //cmdsys:modexec(striptrail(cmdptr)) + //cmdsys:modexec(striptrail(cmdptr)) return striptrail(cmdptr) //cmdsys:syswrite(cmdsys.refcons, @textmode, 3) break @@ -317,13 +268,7 @@ end // // Save pointer to command line handler // -*cmdparser = @shell -// -// Install JIT compiler -// +*cmdparser = @shell directentry = *sinterp indirectentry = *xinterp -*jitcomp = @compiler -cmdsys.jitcount = 32 -cmdsys.jitsize = 96 done diff --git a/src/vmsrc/apple/soscmdjit.pla b/src/vmsrc/apple/soscmdjit.pla new file mode 100755 index 0000000..eef4d83 --- /dev/null +++ b/src/vmsrc/apple/soscmdjit.pla @@ -0,0 +1,329 @@ +include "inc/cmdsys.plh" +sysflags nojitc // Keep JITC from compiling itself +// +// JIT compiler values +// +// +// Indirect interpreter DEFinition entrypoint +// +struc t_defentry + byte interpjsr + word interpaddr + word bytecodeaddr + byte bytecodexbyte + byte callcount + byte bytecodesize +end +// +// Private addresses +// +const jitcbuf = $9000 +const codemax = $A000 +const cmdparser = $A0F0 +const jitcomp = $A0F2 +const jitcodeptr = $A0F4 +const sinterp = $A0F6 +const xinterp = $A0F8 +const jitinterp = $A0FA +const estkh8 = $C000 +const estkh = $00C0 +const estkl8 = $D000 +const estkl = $00D0 +const ifpl8 = $E000 +const ifph8 = $E100 +const jmptmp = $00E6 +const tmpl8 = $E700 +const tmph8 = $E800 +word directentry, indirectentry +// +// COPY FROM EXT MEM TO MAIN MEM. +// +asm defcpy(dst, defentry)#0 + !SOURCE "vmsrc/plvmzp.inc" +XPAGE = $1600 +SRCX = XPAGE+SRCH +DSTX = XPAGE+DSTH + + LDA ESTKL+1,X + STA DSTL + LDA ESTKH+1,X + STA DSTH + LDA ESTKL,X + STA TMPL + LDA ESTKH,X + STA TMPH + LDY #$05 + LDA (TMP),Y + STA SRCX + DEY + LDA (TMP),Y + STA SRCH + DEY + LDA (TMP),Y + STA SRCL + LDY #$07 + LDA (TMP),Y + TAY + DEY + BEQ + +- LDA (SRC),Y + STA (DST),Y + DEY + BNE - ++ LDA (SRC),Y + STA (DST),Y + STY SRCX + INX + INX + RTS +end +include "libsrc/jitcore.pla" +// +// SOS routines +// FILE I/O +// +def getpfx(path)#1 + byte params[4] + + ^path = 0 + params.0 = 2 + params:1 = path + params.3 = 128 + syscall($C7, @params) + return path +end +def setpfx(path)#1 + byte params[6] + byte fileinfo[2] + + params.0 = 3 + params:1 = path + params:3 = @fileinfo + params.5 = 2 + if not syscall($C4, @params) and (fileinfo.1 == $00 or fileinfo.1 == $0F) // Make sure it's a directory + params.0 = 1 + params:1 = path + syscall($C6, @params) + else + getpfx(path) // Get current path + fin + return path +end +def dev_info(devnum, name, list, listlen)#1 + byte params[7] + + params.0 = 4 + params.1 = devnum + params:2 = name + params:4 = list + params.6 = listlen + return syscall($85, @params) +end +def volume(devname, volname)#1 + byte params[9] + + params.0 = 4 + params:1 = devname + params:3 = volname + params:5 = 0 + params:7 = 0 + return syscall($C5, @params) +end +// +// Command mode +// +def volumes()#0 + byte info[11] + byte devname[17] + byte volname[17] + byte i + + for i = $01 to $18 + if dev_info(i, @devname, @info, 11) == 0 + puts(@devname) + if volume(@devname, @volname) == 0 + puts(" => /") + puts(@volname) + putc('/') + fin + putln + fin + next +end +def catalog(path)#0 + byte refnum + byte firstblk + byte entrylen, entriesblk + byte i, type, len + word entry, filecnt, catptr + + if !^path + getpfx(path) + fin + refnum = cmdsys:sysopen(path) + if not refnum + return + fin + catptr = heapmark + firstblk = 1 + repeat + if cmdsys:sysread(refnum, catptr, 512) == 512 + entry = catptr + 4 + if firstblk + entrylen = catptr->$23 + entriesblk = catptr->$24 + filecnt = catptr=>$25 + entry = entry + entrylen + fin + for i = firstblk to entriesblk + if ^entry + ^entry = ^entry & $0F + puts(entry) + type = ' ' + when entry->$10 + is $0F // Is it a directory? + type = '/' + break + is $FF // SYSTEM file + type = '-' + break + is $FE // REL file + type = '+' + wend + putc(type) + for len = ^entry to 18 + putc(' ') + next + filecnt-- + fin + entry = entry + entrylen + next + firstblk = 0 + else + filecnt = 0 + fin + until filecnt == 0 + cmdsys:sysclose(refnum) + putln() +end +def stripchars(strptr)#1 + while ^strptr and ^(strptr + 1) > ' ' + memcpy(strptr + 1, strptr + 2, ^strptr) + ^strptr-- + loop + return ^strptr +end +def stripspaces(strptr)#0 + while ^strptr and ^(strptr + ^strptr) <= ' ' + ^strptr-- + loop + while ^strptr and ^(strptr + 1) <= ' ' + memcpy(strptr + 1, strptr + 2, ^strptr) + ^strptr-- + loop +end +def striptrail(strptr)#1 + byte i + + for i = 1 to ^strptr + if ^(strptr + i) <= ' ' + ^strptr = i - 1 + break + fin + next + return strptr +end +def parsecmd(strptr)#1 + byte cmd + + cmd = 0 + stripspaces(strptr) + if ^strptr + cmd = ^(strptr + 1) + memcpy(strptr + 1, strptr + 2, ^strptr) + ^strptr-- + fin + stripspaces(strptr) + return cmd +end +// +// Command line handler +// +def shell#1 + byte textmode[3] + byte prefix[64] + byte err[] + word cmdptr + // + // Copy AUTORUN commmand line + // + cmdptr = strcpy(heapmark, cmdsys:cmdline) + // + // Handle commands. + // + repeat + if ^cmdptr + when toupper(parsecmd(cmdptr)) + is 'C' + catalog(cmdptr) + break + is 'P' + if ^cmdptr and ^(cmdptr + 1) <> '/' + strcat(@prefix, cmdptr) + else + strcpy(@prefix, cmdptr) + fin + setpfx(@prefix) + break + is '/' + repeat + prefix-- + until prefix[prefix] == '/' + if prefix > 1 + setpfx(@prefix) + fin + break + is 'S' + setpfx(cmdptr) + strcat(getpfx(cmdsys:syspath), "SYS/")) + break + is 'V' + volumes + break + is '+' + *jitcodeptr = jitcbuf + //cmdsys:modexec(striptrail(cmdptr)) + return striptrail(cmdptr) + //cmdsys:syswrite(cmdsys.refcons, @textmode, 3) + break + otherwise + puts("?\n") + wend + if cmdsys.syserr + err = cmdsys.syserr + puts("ERR:$") + putb(err) + else + puts("OK") + fin + putln + fin + puts(getpfx(@prefix)) + cmdptr = gets($BA) + strcpy(cmdsys:cmdline, cmdptr) + until 0 + return 0 +end +// +// Save pointer to command line handler +// +*cmdparser = @shell +// +// Install JIT compiler +// +directentry = *sinterp +indirectentry = *xinterp +*jitcomp = @compiler +cmdsys.jitcount = 32 +cmdsys.jitsize = 96 +done diff --git a/src/vmsrc/apple/sossys.pla b/src/vmsrc/apple/sossys.pla index af01f8f..267121f 100755 --- a/src/vmsrc/apple/sossys.pla +++ b/src/vmsrc/apple/sossys.pla @@ -23,7 +23,6 @@ const modinitkeep = $4000 const instr = $A020 const cmdparser = $A0F0 const xinterp = $A0F8 -const jitinterp = $A0FA // // Indirect interpreter DEFinition entrypoint // @@ -32,17 +31,8 @@ struc t_defentry word interpaddr word bytecodeaddr byte bytecodexbyte - byte callcount - byte bytecodesize end // -// JIT compiler values -// -const jitcbuf = $9000 -const jitcomp = $A0F2 -const jitcodeptr = $A0F4 -const codemax = $A000 -// // Pedefined functions. // predef syscall(cmd,params)#1, call(addr,areg,xreg,yreg,status)#1 @@ -1027,19 +1017,10 @@ def lookupextern(esd, index)#1 fin return 0 end -def adddef(isfirst, ext, addr, deflast)#1 +def adddef(ext, addr, deflast)#1 word preventry, defentry, defsize defentry = *deflast *deflast = defentry + t_defentry - if not isfirst - preventry = defentry - t_defentry - defsize = addr - preventry=>bytecodeaddr - if defsize <= jitsize - preventry=>interpaddr = *jitinterp // JSR JITINTRP - preventry->callcount = jitcount // Set JIT countdown - preventry->bytecodesize = defsize // Set size - fin - fin defentry->interpjsr = $20 // JSR defentry=>interpaddr = *xinterp // XINTERP defentry=>bytecodeaddr = addr @@ -1048,11 +1029,11 @@ def adddef(isfirst, ext, addr, deflast)#1 return defentry end def loadmod(mod)#1 - word refnum[], deffirst, rdlen, modsize, bytecode, codefix, defofst, defcnt, init, initcode[], fixup + word refnum[], rdlen, modsize, bytecode, codefix, defofst, defcnt, init, initcode[], fixup word addr, defaddr, modaddr, modfix, modofst, modend word deftbl, deflast, codeseg word moddep, rld, esd, sym - byte lerr, defext, skipjit, fileinfo[], str[16], filename[33] + byte lerr, defext, fileinfo[], str[16], filename[33] byte header[128] lerr = 0 // @@ -1087,7 +1068,6 @@ def loadmod(mod)#1 // This is an EXTended RELocatable (data+bytecode) module. // systemflags = header.4 | systemflags - skipjit = header.5 & (nojitc >> 8) defofst = header:6 defcnt = header:8 init = header:10 @@ -1173,14 +1153,12 @@ def loadmod(mod)#1 // // Run through the DeFinition Dictionary. // - deffirst = 1 while ^rld == $02 // // This is a bytcode def entry - add it to the def directory. // - adddef(deffirst, defext, rld=>1 + defofst, @deflast) - deffirst = skipjit // Calculate JIT potential or not - rld = rld + 4 + adddef(defext, rld=>1 + defofst, @deflast) + rld = rld + 4 loop // // Run through the Re-Location Dictionary. @@ -1234,7 +1212,7 @@ def loadmod(mod)#1 // initcode = 0 if init - initcode = adddef(deffirst, defext, init + defofst, @deflast)() + initcode = adddef(defext, init + defofst, @deflast)() if initcode < 0 perr = -initcode fin @@ -1286,7 +1264,7 @@ cmdlnptr = @cmdln // Print PLASMA version // init_cons -prstr("PLASMA 2.0 Dev JITC\n")//; putb(version.1); putc('.'); putb(version.0); putln +prstr("PLASMA 2.0 DP2\n")//; putb(version.1); putc('.'); putb(version.0); putln prstr("MEM:$"); prword(availheap); crout // // Exec command line parser diff --git a/src/vmsrc/apple/sossysjit.pla b/src/vmsrc/apple/sossysjit.pla new file mode 100755 index 0000000..2e91d8d --- /dev/null +++ b/src/vmsrc/apple/sossysjit.pla @@ -0,0 +1,1309 @@ +const membank = $FFEF +const RELADDR = $1000 +// +// System flags: memory allocator screen holes. +// +const restxt1 = $0001 +const restxt2 = $0002 +const resxtxt1 = $0004 +const resxtxt2 = $0008 +const reshgr1 = $0010 +const reshgr2 = $0020 +const resxhgr1 = $0040 +const resxhgr2 = $0080 +const nojitc = $0100 +// +// Module don't free memory +// +const modkeep = $2000 +const modinitkeep = $4000 +// +// Private addresses +// +const instr = $A020 +const cmdparser = $A0F0 +const xinterp = $A0F8 +const jitinterp = $A0FA +// +// Indirect interpreter DEFinition entrypoint +// +struc t_defentry + byte interpjsr + word interpaddr + word bytecodeaddr + byte bytecodexbyte + byte callcount + byte bytecodesize +end +// +// JIT compiler values +// +const jitcbuf = $9000 +const jitcomp = $A0F2 +const jitcodeptr = $A0F4 +const codemax = $A000 +// +// Pedefined functions. +// +predef syscall(cmd,params)#1, call(addr,areg,xreg,yreg,status)#1 +predef crout()#0, cout(c)#0, prstr(s)#0, print(i)#0, prbyte(b)#0, prword(w)#0 +predef cin()#1, rdstr(p)#1, toupper(c)#1, strcpy(dst,src)#1, strcat(dst,src)#1 +predef markheap()#1, allocheap(size)#1, allocalignheap(size, pow2, freeaddr), releaseheap(newheap)#1, availheap()#1 +predef memset(addr,value,size)#0, memcpy(dst,src,size)#0 +predef uword_isgt(a,b)#1, uword_isge(a,b)#1, uword_islt(a,b)#1, uword_isle(a,b)#1, sext(a)#1, divmod(a,b)#2 +predef execmod(modfile)#1, open(path)#1, close(refnum)#1, read(refnum, buff, len)#1, write(refnum, buff, len)#1 +// +// Exported CMDSYS table +// +word version = $0200 // 02.00 +word syspath +word cmdlnptr +word = @execmod, @open, @close, @read, @write +byte perr +byte jitcount = 0 +byte jitsize = 0 +byte refcons = 0 +byte devcons = 0 +// +// String pool. +// +byte hexchar[] = '0','1','2','3','4','5','6','7','8','9','A','B','C','D','E','F' +// +// Exported Machine ID. +// +byte machid = $F2 // Apple ///, 80 columns +// +// Console and textmode control characters +// +byte console[] = ".CONSOLE" +byte textmode[] = 16, 0, 15 + +// +// Working input buffer overlayed with strings table +// +byte cmdln = "" +// +// SOS.CMD as DCI string +// +byte soscmd = 'S'|$80,'O'|$80,'S'|$80,'.'|$80,'C'|$80,'M'|$80,'D'|$80,'J'|$80,'I'|$80,'T' +// +// Standard Library exported functions. +// +byte sysmodstr[] = "CMDSYS" +byte machidstr[] = "MACHID" +byte sysstr[] = "SYSCALL" +byte callstr[] = "CALL" +byte putcstr[] = "PUTC" +byte putlnstr[] = "PUTLN" +byte putsstr[] = "PUTS" +byte putistr[] = "PUTI" +byte putbstr[] = "PUTB" +byte putwstr[] = "PUTH" +byte getcstr[] = "GETC" +byte getsstr[] = "GETS" +byte toupstr[] = "TOUPPER" +byte strcpystr[] = "STRCPY" +byte strcatstr[] = "STRCAT" +byte hpmarkstr[] = "HEAPMARK" +byte hpalignstr[] = "HEAPALLOCALIGN" +byte hpallocstr[] = "HEAPALLOC" +byte hprelstr[] = "HEAPRELEASE" +byte hpavlstr[] = "HEAPAVAIL" +byte memsetstr[] = "MEMSET" +byte memcpystr[] = "MEMCPY" +byte uisgtstr[] = "ISUGT" +byte uisgestr[] = "ISUGE" +byte uisltstr[] = "ISULT" +byte uislestr[] = "ISULE" +byte sextstr[] = "SEXT" +byte divmodstr[] = "DIVMOD" +byte sysmods[] = "" // overlay sys path with exports +word exports[] = @sysmodstr, @version +word = @sysstr, @syscall +word = @callstr, @call +word = @putcstr, @cout +word = @putlnstr, @crout +word = @putsstr, @prstr +word = @putistr, @print +word = @putbstr, @prbyte +word = @putwstr, @prword +word = @getcstr, @cin +word = @getsstr, @rdstr +word = @toupstr, @toupper +word = @hpmarkstr, @markheap +word = @hpallocstr,@allocheap +word = @hpalignstr,@allocalignheap +word = @hprelstr, @releaseheap +word = @hpavlstr, @availheap +word = @memsetstr, @memset +word = @memcpystr, @memcpy +word = @strcpystr, @strcpy +word = @strcatstr, @strcat +word = @uisgtstr, @uword_isgt +word = @uisgestr, @uword_isge +word = @uisltstr, @uword_islt +word = @uislestr, @uword_isle +word = @sextstr, @sext +word = @divmodstr, @divmod +word = @machidstr, @machid +word = 0 +word sysmodsym = @exports +// +// System variables. +// +word systemflags = 0 +word heap = $2000 +byte autorun[] +byte modseg[15] +byte modid = 0 +word symtbl, lastsym +// +// CALL SOS +// SYSCALL(CMD, PARAMS) +// +asm syscall(cmd,params)#1 + LDA ESTKL,X + LDY ESTKH,X + STA PARAMS + STY PARAMS+1 + INX + LDA ESTKL,X + STA CMD + BRK +CMD !BYTE 00 +PARAMS !WORD 0000 + LDY #$00 + STA ESTKL,X + STY ESTKH,X + RTS +end +// +// CALL 6502 ROUTINE +// CALL(AREG, XREG, YREG, STATUS, ADDR) +// +asm call(addr,areg,xreg,yreg,sstatus)#1 +REGVALS = SRC + PHP + LDA ESTKL,X + STA TMPL + LDA ESTKH,X + STA TMPH + INX + LDA ESTKL,X + PHA + INX + LDY ESTKL,X + INX + LDA ESTKL+1,X + PHA + LDA ESTKL,X + INX + STX ESP + TAX + PLA + PLP + JSR JMPTMP + PHP + STA REGVALS+0 + STX REGVALS+1 + STY REGVALS+2 + PLA + STA REGVALS+3 + LDX ESP + LDA #REGVALS + STA ESTKL,X + STY ESTKH,X + PLP + RTS +end +// +// SET MEMORY TO VALUE +// MEMSET(ADDR, VALUE, SIZE) +// With optimizations from Peter Ferrie +// +asm memset(addr,value,size)#0 + LDA ESTKL+2,X + STA DSTL + LDA ESTKH+2,X + STA DSTH + LDY ESTKL,X + BEQ + + INC ESTKH,X + LDY #$00 ++ LDA ESTKH,X + BEQ SETMEX +SETMLPL CLC + LDA ESTKL+1,X +SETMLPH STA (DST),Y + DEC ESTKL,X + BEQ ++ +- INY + BEQ + +-- BCS SETMLPL + SEC + LDA ESTKH+1,X + BCS SETMLPH ++ INC DSTH + BNE -- +++ DEC ESTKH,X + BNE - +SETMEX INX + INX + INX + RTS +end +// +// COPY MEMORY +// MEMCPY(DSTADDR, SRCADDR, SIZE) +// +asm memcpy(dst,src,size)#0 + INX + INX + INX + LDA ESTKL-3,X + ORA ESTKH-3,X + BEQ CPYMEX + LDA ESTKL-2,X + CMP ESTKL-1,X + LDA ESTKH-2,X + SBC ESTKH-1,X + BCC REVCPY +; +; FORWARD COPY +; + LDA ESTKL-1,X + STA DSTL + LDA ESTKH-1,X + STA DSTH + LDA ESTKL-2,X + STA SRCL + LDA ESTKH-2,X + STA SRCH + LDY ESTKL-3,X + BEQ FORCPYLP + INC ESTKH-3,X + LDY #$00 +FORCPYLP LDA (SRC),Y + STA (DST),Y + INY + BNE + + INC DSTH + INC SRCH ++ DEC ESTKL-3,X + BNE FORCPYLP + DEC ESTKH-3,X + BNE FORCPYLP + RTS +; +; REVERSE COPY +; +REVCPY ;CLC + LDA ESTKL-3,X + ADC ESTKL-1,X + STA DSTL + LDA ESTKH-3,X + ADC ESTKH-1,X + STA DSTH + CLC + LDA ESTKL-3,X + ADC ESTKL-2,X + STA SRCL + LDA ESTKH-3,X + ADC ESTKH-2,X + STA SRCH + DEC DSTH + DEC SRCH + LDY #$FF + LDA ESTKL-3,X + BEQ REVCPYLP + INC ESTKH-3,X +REVCPYLP LDA (SRC),Y + STA (DST),Y + DEY + CPY #$FF + BNE + + DEC DSTH + DEC SRCH ++ DEC ESTKL-3,X + BNE REVCPYLP + DEC ESTKH-3,X + BNE REVCPYLP +CPYMEX RTS +end +// +// COPY FROM MAIN MEM TO EXT MEM. +// +// MEMXCPY(DSTSEG, SRC, SIZE) +// +asm memxcpy(dst,src,size)#0 + LDA ESTKL,X + ORA ESTKH,X + BEQ CPYXMEX + LDY #$00 + STY DSTL + LDA ESTKH+2,X + CLC + ADC #$60 + STA DSTH + LDA ESTKL+2,X + CLC + ADC #$7F + STA DSTX + LDA ESTKL+1,X + STA SRCL + LDA ESTKH+1,X + STA SRCH + INC ESTKH,X +CPYXLP LDA (SRC),Y + STA (DST),Y + INY + BNE + + INC DSTH + INC SRCH ++ DEC ESTKL,X + BNE CPYXLP + DEC ESTKH,X + BNE CPYXLP + LDA #$00 + STA DSTX +CPYXMEX INX + INX + INX + RTS +end +// +// POKE BYTE VAL INTO EXT MEM. +// +// XPOKEB(SEG, DST, BYTEVAL) +// +asm xpokeb(seg, dst, byteval)#0 + LDA ESTKL+1,X + STA DSTL + LDA ESTKH+1,X + CLC + ADC #$60 + STA DSTH + LDA ESTKL+2,X + CLC + ADC #$7F + STA DSTX + LDY #$00 + LDA ESTKL,X + STA (DST),Y + STY DSTX + INX + INX + INX + RTS +end +// +// Unsigned word comparisons. +// +asm uword_isge(a,b)#1 + LDA ESTKL+1,X + CMP ESTKL,X + LDA ESTKH+1,X + SBC ESTKH,X + LDA #$FF + ADC #$00 + EOR #$FF + STA ESTKL+1,X + STA ESTKH+1,X + INX + RTS +end +asm uword_isle(a,b)#1 + LDA ESTKL,X + CMP ESTKL+1,X + LDA ESTKH,X + SBC ESTKH+1,X + LDA #$FF + ADC #$00 + EOR #$FF + STA ESTKL+1,X + STA ESTKH+1,X + INX + RTS +end +asm uword_isgt(a,b)#1 + LDA ESTKL,X + CMP ESTKL+1,X + LDA ESTKH,X + SBC ESTKH+1,X + LDA #$FF + ADC #$00 + STA ESTKL+1,X + STA ESTKH+1,X + INX + RTS +end +asm uword_islt(a,b)#1 + LDA ESTKL+1,X + CMP ESTKL,X + LDA ESTKH+1,X + SBC ESTKH,X + LDA #$FF + ADC #$00 + STA ESTKL+1,X + STA ESTKH+1,X + INX + RTS +end +asm divmod(a,b)#2 + JSR INTERP ; CALL INTERP + !BYTE $36, $5C ; DIVMOD, RET +end +asm sext(a)#1 + LDY #$00 + LDA ESTKL,X + BPL + + DEY ++ STY ESTKH,X + RTS +end +// +// A DCI string is one that has the high bit set for every character except the last. +// More efficient than C or Pascal strings. +// +//def dcitos(dci, str) +// byte len, c +// len = 0 +// repeat +// c = (dci).[len] +// len = len + 1 +// (str).[len] = c & $7F +// until !(c & $80) +// ^str = len +// return len +//end +asm dcitos(dci, str)#1 + LDA ESTKL,X + STA DSTL + LDA ESTKH,X + STA DSTH + LDA ESTKL+1,X + STA SRCL + LDA ESTKH+1,X + STA SRCH + LDY #$00 +- LDA (SRC),Y + CMP #$80 + AND #$7F + INY + STA (DST),Y + BCS - + TYA + LDY #$00 + STA (DST),Y + INX + STA ESTKL,X + STY ESTKH,X + RTS +end +//def stodci(str, dci) +// byte len, c +// len = ^str +// if len == 0 +// return +// fin +// c = toupper((str).[len]) & $7F +// len = len - 1 +// (dci).[len] = c +// while len +// c = toupper((str).[len]) | $80 +// len = len - 1 +// (dci).[len] = c +// loop +// return ^str +//end +asm stodci(str, dci)#1 + LDA ESTKL,X + STA DSTL + LDA ESTKH,X + STA DSTH + LDA ESTKL+1,X + STA SRCL + LDA ESTKH+1,X + STA SRCH + INX + LDY #$00 + LDA (SRC),Y + BEQ ++ + TAY + LDA (SRC),Y + JSR TOUPR + BNE + +- LDA (SRC),Y + JSR TOUPR + ORA #$80 ++ DEY + STA (DST),Y + BNE - + LDA (SRC),Y +++ STA ESTKL,X + STY ESTKH,X + RTS +end +asm toupper(c)#1 + LDA ESTKL,X +TOUPR AND #$7F + CMP #'a' + BCC + + CMP #'z'+1 + BCS + + SBC #$1F ++ STA ESTKL,X + RTS +end +// +// Lookup routines. +// +//def lookuptbl(dci, tbl) +// word match +// while ^tbl +// match = dci +// while ^tbl == ^match +// if !(^tbl & $80) +// return (tbl):1 +// fin +// tbl = tbl + 1 +// match = match + 1 +// loop +// while (^tbl & $80) +// tbl = tbl + 1 +// loop +// tbl = tbl + 3 +// loop +// return 0 +asm lookuptbl(dci, tbl)#1 + LDY #$00 + STY DSTL + LDA ESTKH,X + CLC + ADC #$60 + STA DSTH + LDA ESTKL,X + CLC + ADC #$7F + STA DSTX + LDA ESTKL+1,X + STA SRCL + LDA ESTKH+1,X + STA SRCH +- LDA (DST),Y + BEQ + + CMP (SRC),Y + BNE ++ + INY + ASL + BCS - + LDA (DST),Y + PHA + INY + LDA (DST),Y + TAY + PLA ++ INX + STA ESTKL,X + STY ESTKH,X + LDA #$00 + STA DSTX + RTS +++ LDY #$00 +-- LDA (DST),Y + INC DSTL + BEQ + +--- ASL + BCS -- + LDA #$02 + ADC DSTL + STA DSTL + BCC - + INC DSTH + BCS - ++ INC DSTH + BNE --- +end +// def lookupidx(esd, index) +// word sym +// while ^esd +// sym = esd +// esd = sym + dcitos(sym, @str) +// if esd->0 & $10 and esd->1 == index +// return sym +// fin +// esd = esd + 3 +// loop +//end +asm lookupidx(esd, index)#1 + LDA ESTKL,X + STA TMPL + INX +--- LDA ESTKH,X + STA SRCH + LDA ESTKL,X +-- STA SRCL + LDY #$00 +- LDA (SRC),Y + BPL + + INY + BNE - ++ BEQ ++ ; END OF ESD + INY + LDA (SRC),Y + INY + AND #$10 ; EXTERN FLAG? + BEQ + + LDA (SRC),Y + CMP TMPL + BEQ +++ ; MATCH ++ INY + TYA + SEC + ADC SRCL + STA ESTKL,X ; SYM PTRL + BCC -- + INC ESTKH,X ; SYM PTRH + BNE --- +++ STA ESTKL,X ; END OF ESD + STA ESTKH,X ++++ RTS +end +//def lookupdef(addr, deftbl)#1 +// while deftbl->0 == $20 +// if deftbl=>3 == addr +// return deftbl +// fin +// deftbl = deftbl + t_defentry +// loop +// return 0 +//end +asm lookupdef(addr, deftbl)#1 + LDA ESTKH,X + STA SRCH + LDA ESTKL,X + STA SRCL + INX +- LDY #$00 + LDA (SRC),Y + CMP #$20 ; JSR OPCODE? + BNE ++ + LDY #$03 + LDA (SRC),Y + CMP ESTKL,X + BNE + + INY + LDA (SRC),Y + CMP ESTKH,X + BNE + + LDA SRCL ; MATCH + STA ESTKL,X + LDA SRCH + STA ESTKH,X + RTS ++ LDA #$08 ; T_DEFENTRY + CLC + ADC SRCL + STA SRCL + BCC - + INC SRCH + BNE - +++ STY ESTKL,X + STY ESTKH,X + RTS +end +// +// Reloc internal data +// +//def reloc(modfix, modofst, bytecode, rld)#3 +// word addr, fixup +// while ^rld +// if ^rld & $10 // EXTERN reference. +// return rld, addr, fixup +// fin +// addr = rld=>1 + modfix +// fixup = *addr + modofst +// if uword_isge(fixup, bytecode) // Bytecode address. +// return rld, addr, fixup +// fin +// *addr = fixup +// rld = rld + 4 +// loop +// return rld, addr, fixup +//end +asm reloc(modfix, modofst, bytecode, rld)#3 + LDA ESTKL,X + STA SRCL + LDA ESTKH,X + STA SRCH + LDY #$00 +- LDA (SRC),Y + BEQ RLDEX ; END OF RLD + PHA + INY + LDA (SRC),Y + INY + CLC + ADC ESTKL+3,X ; ADDR=ENTRY=>1+MODFIX + STA DSTL + LDA (SRC),Y + ADC ESTKH+3,X + STA DSTH + PLA + AND #$10 ; EXTERN REF - EXIT + BNE RLDEX + TAY ; FIXUP=*ADDR+MODOFST + LDA (DST),Y + INY + CLC + ADC ESTKL+2,X + STA TMPL + LDA (DST),Y + ADC ESTKH+2,X + CMP ESTKH+1,X ; FIXUP >= BYTECODE? + BCC + + STA TMPH + BNE RLDEX ; YEP, EXIT + LDA TMPL + CMP ESTKL+1,X + BCS RLDEX ; YEP, EXIT + LDA TMPH ++ STA (DST),Y ; *ADDR=FIXUP + DEY + LDA TMPL + STA (DST),Y + LDA SRCL ; NEXT ENTRY +; CLC + ADC #$04 + STA SRCL + BCC - + INC SRCH + BNE - +RLDEX INX + LDA TMPL + STA ESTKL,X + LDA TMPH + STA ESTKH,X + LDA DSTL + STA ESTKL+1,X + LDA DSTH + STA ESTKH+1,X + LDA SRCL + STA ESTKL+2,X + LDA SRCH + STA ESTKH+2,X + RTS +end +// +// SOS routines +// FILE I/O +// +def open(path)#1 + byte params[7] + + params.0 = 4 + params:1 = path + params.3 = 0 + params:4 = 0 + params.6 = 0 + perr = syscall($C8, @params) + return params.3 +end +def close(refnum)#1 + byte params[2] + + params.0 = 1 + params.1 = refnum + perr = syscall($CC, @params) + return perr +end +def read(refnum, buff, len)#1 + byte params[8] + + params.0 = 4 + params.1 = refnum + params:2 = buff + params:4 = len + params:6 = 0 + perr = syscall($CA, @params) + return params:6 +end +def write(refnum, buff, len)#1 + byte params[6] + + params.0 = 3 + params.1 = refnum + params:2 = buff + params:4 = len + perr = syscall($CB, @params) + return perr +end +// +// CONSOLE I/O +// +def dev_control(devnum, code, list)#1 + byte params[5] + + params.0 = 3 + params.1 = devnum + params.2 = code + params:3 = list + return syscall($83, @params) +end +def dev_getnum(name)#1 + byte params[4] + + params.0 = 2 + params:1 = name + params.3 = 0 + syscall($84, @params) + return params.3 +end +def init_cons()#0 + byte nlmode[2] + + refcons = open(@console) + devcons = dev_getnum(@console) + nlmode:0 = $0D80 + //nlmode.0 = $80 + //nlmode.1 = $0D + dev_control(devcons, $02, @nlmode) + write(refcons, @textmode, 3) +end +// +// MEMORY CALLS +// +def seg_find(search, pages, id)#3 + byte params[10] + + params.0 = 6 + params.1 = search + params.2 = id + params:3 = pages + params:5 = 0 + params:7 = 0 + params.9 = 0 + perr = syscall($41, @params) + return params.9, params:5, params:7 +end +def seg_release(segnum)#1 + byte params[2] + + params.0 = 1 + params.1 = segnum + perr = syscall($45, @params) + return perr +end +// +// CONSOLE I/O +// +def cout(ch)#0 + byte nc + + nc = 1 + if ch == $0D + ch = $0A0D + nc = 2 + fin + write(refcons, @ch, nc) +end +def crout()#0 + cout($0D) +end +def cin()#1 + byte ch + read(refcons, @ch, 1) + return ch & $7F +end +def prstr(str)#0 + write(refcons, str + 1, ^str) + if str->[^str] == $0D + cout($0A) + fin +end +def print(i)#0 + if i < 0; cout('-'); i = -i; fin + if i >= 10; print(i / 10); fin + cout(i % 10 + '0') +end +def rdstr(prompt)#1 + cout(prompt) + ^instr = read(refcons, instr+1, 128) + if instr->[^instr] == $0D + ^instr-- + fin + crout + return instr +end +def prbyte(v)#0 + cout(hexchar[(v >> 4) & $0F]) + cout(hexchar[v & $0F]) +end +def prword(v)#0 + prbyte(v >> 8) + prbyte(v) +end +// +// Heap routines. +// +def availheap()#1 + byte fp + return @fp - heap +end +def allocheap(size)#1 + word addr + addr = heap + heap = heap + size + if uword_isge(heap, @addr) + heap = addr + return 0 + fin + return addr +end +def allocalignheap(size, pow2, freeaddr)#1 + word align, addr + if freeaddr + *freeaddr = heap + fin + align = (1 << pow2) - 1 + addr = (heap | align) + 1 + heap = addr + size + if uword_isge(heap, @addr) + return 0 + fin + return addr +end +def markheap()#1 + return heap +end +def releaseheap(newheap)#1 + heap = newheap + return @newheap - heap +end +// +// Symbol table routines. +// +def addsym(sym, addr)#0 + while ^sym & $80 + xpokeb(symtbl.0, lastsym, ^sym) + lastsym = lastsym + 1 + sym = sym + 1 + loop + xpokeb(symtbl.0, lastsym, ^sym) + xpokeb(symtbl.0, lastsym + 1, addr.0) + xpokeb(symtbl.0, lastsym + 2, addr.1) + xpokeb(symtbl.0, lastsym + 3, 0) + lastsym = lastsym + 3 +end +// +// String routines. +// +def strcpy(dst, src)#1 + memcpy(dst+1, src+1, ^src) + ^dst = ^src + return dst +end +def strcat(dst, src)#1 + memcpy(dst + ^dst + 1, src + 1, ^src) + ^dst = ^dst + ^src + return dst +end +// +// Module routines. +// +def lookupextern(esd, index)#1 + word sym, addr + byte str[16] + sym = lookupidx(esd, index) + if sym + addr = lookuptbl(sym, symtbl) + if !addr + perr = $81 + dcitos(sym, @str) + cout('?'); prstr(@str); crout + fin + return addr + fin + return 0 +end +def adddef(isfirst, ext, addr, deflast)#1 + word preventry, defentry, defsize + defentry = *deflast + *deflast = defentry + t_defentry + if not isfirst + preventry = defentry - t_defentry + defsize = addr - preventry=>bytecodeaddr + if defsize <= jitsize + preventry=>interpaddr = *jitinterp // JSR JITINTRP + preventry->callcount = jitcount // Set JIT countdown + preventry->bytecodesize = defsize // Set size + fin + fin + defentry->interpjsr = $20 // JSR + defentry=>interpaddr = *xinterp // XINTERP + defentry=>bytecodeaddr = addr + defentry->bytecodexbyte = ext + defentry->t_defentry = 0 + return defentry +end +def loadmod(mod)#1 + word refnum[], deffirst, rdlen, modsize, bytecode, codefix, defofst, defcnt, init, initcode[], fixup + word addr, defaddr, modaddr, modfix, modofst, modend + word deftbl, deflast, codeseg + word moddep, rld, esd, sym + byte lerr, defext, skipjit, fileinfo[], str[16], filename[33] + byte header[128] + lerr = 0 + // + // Read the RELocatable module header (first 128 bytes) + // + dcitos(mod, @filename) + refnum = open(@filename) + if !refnum and filename < 16 + // + // Try system path + // + refnum = open(strcpy(@filename,strcat(strcpy(@header, @sysmods), @filename))) + fin + if refnum + header.0 = 3 + header:1 = @filename + header:3 = @fileinfo + header.5 = 2 + if not syscall($C4, @header) and fileinfo.1 <> $FE // Make sure it's a REL module + close(refnum) + perr = $4A // Incompatible type + return -perr + fin + rdlen = read(refnum, @header, 128) + modsize = header:0 + moddep = @header.1 + defofst = modsize + RELADDR + defext = 0 + init = 0 + if rdlen > 4 and header:2 == $6502 // magic number + // + // This is an EXTended RELocatable (data+bytecode) module. + // + systemflags = header.4 | systemflags + skipjit = header.5 & (nojitc >> 8) + defofst = header:6 + defcnt = header:8 + init = header:10 + moddep = @header.12 + // + // Load module dependencies. + // + while ^moddep + if !lookuptbl(moddep, symtbl) + if refnum + close(refnum) + refnum = 0 + fin + if loadmod(moddep) < 0 + return -perr + fin + fin + moddep = moddep + dcitos(moddep, @str) + loop + // + // Init def table. + // + deftbl = allocheap(defcnt * t_defentry + 1) + deflast = deftbl + ^deflast = 0 + if !refnum + // + // Reset read pointer. + // + refnum = open(@filename) + rdlen = read(refnum, @header, 128) + fin + fin + // + // Alloc heap space for relocated module (data + bytecode). + // + moddep++ + modfix = moddep - @header.2 // Adjust to skip header + modsize = modsize - modfix + rdlen = rdlen - modfix - 2 + modaddr = allocheap(modsize) + memcpy(modaddr, moddep, rdlen) + // + // Read in remainder of module into memory for fixups. + // + addr = modaddr + repeat + addr = addr + rdlen + rdlen = read(refnum, addr, 4096) + until rdlen <= 0 + close(refnum) + // + // Add module to symbol table. + // + addsym(mod, modaddr) + // + // Apply all fixups and symbol import/export. + // + modfix = modaddr - modfix + modofst = modfix - RELADDR + modend = modaddr + modsize + bytecode = defofst + modofst + rld = modend // Re-Locatable Directory + esd = rld // Extern+Entry Symbol Directory + while ^esd // Scan to end of ESD + esd = esd + 4 + loop + esd++ + if defcnt + // + // Locate bytecode defs in allocated segment. + // + modseg[modid], codeseg, drop = seg_find($00, (rld - bytecode + 255) >> 8, modid + $12) + if perr + return -perr + fin + modid++ + defext = codeseg.0 + $7F // (codeseg.0 | $80) - 1 + defaddr = (codeseg & $FF00) + $6000 + codefix = defaddr - bytecode + defofst = defaddr - defofst + fin + // + // Run through the DeFinition Dictionary. + // + deffirst = 1 + while ^rld == $02 + // + // This is a bytcode def entry - add it to the def directory. + // + adddef(deffirst, defext, rld=>1 + defofst, @deflast) + deffirst = skipjit // Calculate JIT potential or not + rld = rld + 4 + loop + // + // Run through the Re-Location Dictionary. + // + while ^rld + rld, addr, fixup = reloc(modfix, modofst, bytecode, rld) + if ^rld + *addr = ^rld & $10 ?? *addr + lookupextern(esd, rld->3) :: lookupdef(fixup + codefix, deftbl) + rld = rld + 4 + fin + loop + // + // Run through the External/Entry Symbol Directory. + // + while ^esd + sym = esd + esd = esd + dcitos(esd, @str) + if ^esd & $08 + // + // EXPORT symbol - add it to the global symbol table. + // + addr = esd=>1 + modofst + if uword_isge(addr, bytecode) + // + // Use the def directory address for bytecode. + // + addr = lookupdef(addr + codefix, deftbl) + fin + addsym(sym, addr) + fin + esd = esd + 3 + loop + if defext + // + // Copy bytecode to code segment. + // + memxcpy(codeseg, bytecode, modsize - (bytecode - modaddr)) + fin + else + lerr = $46 + fin + if lerr + return -lerr + fin + // + // Free up end-of-module main memory. + // + releaseheap(bytecode) + // + // Call init routine if it exists. + // + initcode = 0 + if init + initcode = adddef(deffirst, defext, init + defofst, @deflast)() + if initcode < 0 + perr = -initcode + fin + fin + return initcode +end +def execmod(modfile)#1 + byte moddci[17] + word saveheap, savesym, saveflags + + perr = 1 + if stodci(modfile, @moddci) + saveheap = heap + savesym = lastsym + saveflags = systemflags + if loadmod(@moddci) < modkeep + lastsym = savesym + heap = saveheap + while modid + modid-- + seg_release(modseg[modid]) + loop + xpokeb(symtbl.0, lastsym, 0) + systemflags = saveflags + else + modid = 0 + fin + fin + return -perr +end +// +// Init 2K symbol table. +// +drop, symtbl, drop = seg_find($00, $08, $11) +lastsym = symtbl & $FF00 +xpokeb(symtbl.0, lastsym, 0) +while *sysmodsym + stodci(sysmodsym=>0, heap) + addsym(heap, sysmodsym=>2) + sysmodsym = sysmodsym + 4 +loop +// +// Clear system path and command line +// +sysmods = 0 +syspath = @sysmods +cmdlnptr = @cmdln +// +// Print PLASMA version +// +init_cons +prstr("PLASMA 2.0 DP2 JITC\n")//; putb(version.1); putc('.'); putb(version.0); putln +prstr("MEM:$"); prword(availheap); crout +// +// Exec command line parser +// +loadmod(@soscmd) +modid = 0 +autorun = open("AUTORUN") +if autorun > 0 + cmdln = read(autorun, @cmdln.1, 64) + close(autorun) +fin +// +// Call cmd line parser +// +repeat + execmod((*cmdparser)()) + write(refcons, @textmode, 3) + cmdln = 0 +until 0 +done