From b232facc4332dff7a991a31358c8b09b8d4baa61 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sun, 12 May 2019 22:45:11 +0200 Subject: [PATCH] Kernel 0.93 --- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/ASM.S.txt | 2 +- BIN/MORE.S.txt | 73 ++++----- BIN/SH.S.IO.txt | 2 +- BIN/SH.S.txt | 6 +- DRV/LANCEGS.DRV.S.txt | 10 +- DRV/UTHERNET.DRV.S.txt | 6 +- DRV/X.U2.DRV.S.txt | 10 +- INC/A2osX.I.txt | 8 +- INC/NET.TELNET.I.txt | 2 + LIB/LIBCRYPT.S.txt | 3 +- LIB/LIBTCPIP.S.SKT.txt | 10 +- SYS/KERNEL.S.BIN.txt | 4 +- SYS/KERNEL.S.CORE.txt | 2 +- SYS/KERNEL.S.DEF.txt | 2 + SYS/KERNEL.S.DIRENT.txt | 3 +- SYS/KERNEL.S.ENV.txt | 4 +- SYS/KERNEL.S.GP.txt | 2 +- SYS/KERNEL.S.IO.txt | 65 +++----- SYS/KERNEL.S.JMP.txt | 4 +- SYS/KERNEL.S.MEM.txt | 4 +- SYS/KERNEL.S.PS.txt | 12 +- SYS/KERNEL.S.PWD.txt | 6 +- SYS/KERNEL.S.SLISTX.txt | 2 +- SYS/KERNEL.S.STAT.txt | 2 +- SYS/KERNEL.S.STDIO.txt | 320 +++++++++++++++++++++++---------------- SYS/KERNEL.S.STDLIB.txt | 5 +- SYS/KERNEL.S.TERM.txt | 48 +++--- SYS/KERNEL.S.TERMLC.txt | 7 +- 29 files changed, 335 insertions(+), 289 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index f4c5d38eb40d1b1ee2d90562859318ab3b8ce028..7521b6cc1b04b70d1ea5a7cb8f8418956e9bd7bc 100644 GIT binary patch delta 435200 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 z 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

*d6=Z2*A2QLT3ySjHy7O&eIjxxD-r$O7jj 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 zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt z00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun z0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP z3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbF zC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epy zpa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+ zfC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O z0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC z1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo z6rcbFC_n)UP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)U zP=Epypa2CZKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZ zKmiI+fC3bt00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fC3bt y00k&O0SZun0u-PC1t>rP3Q&Lo6rcbFC_n)UP=Epypa2CZKmiI+fCB%21pW_MM-}w| delta 301278 zcmaI83tUvy_Bg)JIWxn7;W5Af!~5`%HzRL`As;Y+kRu=2d3utx*@w_cUWEKxG|9XDkWvI9|>t~ryBo8&71 zrBUs;Cy!wc?ub%EL6$_XH%b*rPCHbtQ<(ZUzHrlq?6~0O{KjznwS$!N8#hn>mC0Np zN6(K_DI?IgNa&1;abAq#jXA}J{3+$yys}CJe-!zQ3>}uCt>H>vB$7oq@7QztN&*pU zF-n|KQJ7y=oL`Y5=1|N9`U5hwK3wBT>Gwskev5Z7t`%>{hV-mg5IUI-$P{-##!Vy@ zd872~L{=3ahziEJiCGRtg{$A#bG}oqdU6g5i}LoS@{uaOQF`ev!yJ5L+LhA`lk`T^ zRWqYH%%BzH1ZP5nYNIl}-Z*(JMa^{VaQ-8GQp)&W$Nx3y>iD%u?mY zN$)1Tm4wjY3cby>`Sr}^w=)H8n6N1Fc7M`7~bwA(ZEwt(A}`tBL} z!Qt*o{k37M(trLVYQn8b zv;5dnJwCcgEyOLkb3LVP6m6FGl(j7-gqEk97wCn<;VqnSDctOFY{8Dh!+!NZ zbX@g|S=lM?ncM+%kg&{ZUZ}UQ&5!CW4aS$l%(0zZ&*XFVOq&X@Kbd`cCJ!=p??Kj{ z+3lZg=iB|WJFf`nqQ+znC6pZpvnb0z$`TZ}kEDM*R3UWF5QN7g8U{xTFxQJ&Bq_u! zk`xWX%V9<~93-{|ADN|k!0gg9t8IaPpkHPC+00sIwayx_u&uK|FrmT+TSsk0RI(9>KZbQxNnH?`@c08WdVFtjR?n{}mjJ@j6LZSOnVGCt#VVeJ* z*w(!! zp=O-5Y`}ur4rdKm82UTreOEKmTTnBjKXm)O?(g5*ayYB`^{g#b`sO)$u*Y0|`$PKn zhxP4`5QCi=XH^RB=z+*9HfxWp3zo9 z06%rl7NwjeJ{Ub!0}>x|L}1lOMb;*1Oh+p0llN70&FE|Z2R>*^>z`yzf(pEY*Kqz4R2R3tjXOCe%Ev_7Q2SUppKhLo&v8ruKTE%TmYF>^3lDQlDC37iWlSPGrpcHf zbrrO2aF7#o^foU`1JKEUZoQ0&e$X%5A~{sEPj<5}amc*qINLb0tdrCAd1v35H2@yn z;zQCsvpT@fAh~Z=*X#{dO>>B!x;p$6-&91Z; z+1O5WlhxaWL!5pqr*Bh(>$XMeAw!!?-}PWyn!amlTOPz}o#`;Ezsc$CC4DlzsOiF{ zB7pU!>6;$x%hNYa?NjRq-z3ErCs^fBZi^Do9cumgNbnd!2^mRPg;%NMt*pM`5JbB- z3p+l^Jg)lnPmSJ7Z1mWRXExSDwAOAqZu`j`4yv6jycY&GgFxLJkiBnmSI!0yrjs*= zLFg0JYJ4+>#&WUN{@EtMJ;odbwtYvks<1QJs)h($N&XKqHXg_Yr<4|@$d~3bnf*xD zVB?HULfoJyJlACoDr}svG>tG9y-{PLCc>G{Ot5ntgv-K3s5urt=65&1|uXh&zq@cEKli7o7+~CPMo&7%BGn@ zadP)NdYk*HV|yx}Q`tEn zvY-P%a4i)ZR7@1!;>vhLe6OE&2So0+>!z0L2oT@Ro^-saYB$M3l^ zk@f%8*F4<(Uw!wF`kF_Yf7I)`f6`xmxcMi2_s{yvk2L?R@Ak^p0EJg}w`Vp`cxJco zw^i9T?zTs^@LMVo!dcZ?DZHJr@8PaTsF*}LZ;OJd zVpeIE{H|}3&+VGC(*!)bDEj8Cu-2Zkq6d1a+QW9!wbX8h+b@35x@&n%9PmBF;RjTV zhQFgHI$81qo~vS_=YWkb-Tpz}{e!5oAI7T8r0f1KQ5rSwDQ zYbC^so9}ffvmsuXpzo|~`vk_O#WpZX3}lHr_KCiAzZaumD+hLJnB~k)yh6hS`>xi* zm}_j%>_kJ*=J#os7^WAW&@dXM)L4HT+OrzlHH>e)Q;PLD2;tzJmEfH-g>{Z5? zH-4B%vJa|k!r0992vjXHa0ZRvvXE@F{nNr!FpMloCEmX#qpLtZ1;!b1DKO4}#!6&i z>>fgSh8SxU7CFrdwgeOe6NNd(;?i049oQlHd zwfWN4(- z32+JSBdKNhn|MZ;v>bTl%_yCkKU?ILk>8ZJdiml-^Q-G>8mHE*ML{coqPQe4ry@t9 z$ZINI)|gjaSB>IU;*ta=mZ`&Q6PTEo)j(M^qr7Y@l`12%sc7lr)r%J`Xq>UCW+mbu zM{)g8i75C9Jea@))vpngzH5;|n_n?&8_AT~WT;!YIMIN7pCr(d0t!tNp?S#TuLN2= zokG)*?>b24<{N1;lM-pCAoukITHZqV>5#`$kgCYZr8HT{qaKpR0zlSJZ%j@?9u1JL ztf0in$;hJ-k_7|}*c9aPG$ajWVlowZJVUS|=agim+5pM?asy?Zl8L;UAYERXW60l5 z>ym=JHj?}$#*$(RN!KCIX91E&M6RbrWFmf(s0Xj-P)>o?SYpUAQavXj&&>o<1nUem zcM9@-o&a)6OO5#zImW4*NGWNE-y$ip8I@?u@=A)0qAADqJ0&F}%~pWUEE@w=Bqb*` zA|GZOZqzbrO$*>F%4QTBXd&bJ<$z8?{;jxM%V_3qC)oU171X5Tl9KxsNyv8x01ajN zITiU-(s9X965?MF#ZbS9%JcK5YRmI0M1KKp>YXCYFr!R@r64uNVdEKZ=Urm9acy|Q zc<5bsi^+hOQ2Fd~?Ub6jX*EmA>#FNS?+0E!?G$6EowjTNHB4ku3i9cozyd-k0n?Cr z4+RofD^XQsQU>yQnZl+`&0DlmBGe%tvji+&R`1}MgM9Z&(1N0Z5^CefBm+`+QfTR- zry$LK3N|cWwyFl;%~Z5x5cgGpdzNbn z8RY^7=pVug`sKiiVlz{ojr<(!`N>|qz zL|_U?cbEbRthQPbIt9$~It7E`4Pr?tX~@r7KLQ-31>t%|_==4pGDU~fM;v_1B?chs z8zLcabr2em+uu-J8?Af_hYP{ec<$O_V6lN#H!TMReTtt- zVFK&_PD#KUYaSQnNy|rWgAOL?pn~I+qP%>5_0j^dI_V(6XCova!RI3hsQw8`U%GP9 z(mDsd4*C5<T42l-9;CxsW>2M5d8MmT~v|8gWUpz-~iW-!!NtX(b&oB0Pvvix0)>a2LyW#*Fmai2H*Fo_9ZUkCg zCqY5bs}3mix)Kxwy@vbK7@s-U9Z2I7QVZ2VT)N?a8kRV+7*N2?5oqpf&BhU;l#+sMe{^~ zvvkP+M+%;?bg_sKqkI;)*iR$$c`F~6=%IW6nS%X`maZBFgJORX73=dW{w5uw-v3dm z{53W6D@AY10pI`4VTl}wnZHwtsf!jb7HyxCfi(9h4BB1k%o#;_qUbpw;~%4N(ilY< zb09hmQv^i9(wR~*U~t65DaG)VlaKsaT%W;cd^m>mN;xYZtrUyPO+o%Ldg^`2kaQV>Nh2d>F#y22*46?LtrRW3s(8WdI_X&O+#TVB+QC|0#l6j9w zcpVCe!r$u{e_b@i6ZaPhL@VbTP;iWcvxp$$<7cRH^7Bzp9G;xT1Tyh>EWjX{F6s1L0-|#3k=9V1^a_vpB!3v?y;QQ5rZ;js(vwDyB+KMc%m*sI;Ptg20~)63Cb@Qe_}{ z9utQ=@YgRCK@n4-2(=N1J-~R!Pa7ebCFX{apHJ~9u#mEZ$%Li^Kk@+M7g!3JeWs5P24I8%U0!Az+&%mVY%(O~0( zn#UK-uW8IFEkgWk5t~$nJtr{ZnK?LT0;4IM%TP*~E)-Sd=fYHED)l|+r5=(n1tn$E zaw@2=L0|B&1T~ZtSCo~A(-s(OJ%aa6VAKgF30qQ{Urg-)I`FM_WHFYM=ZnxZMhC)9z}D2svgA?CNdiT+7Vpti~@(t zq@b`xcZDMbnjsrz3Jpo}IWa4KFtiSen=e=y%5G6WGHA0f{*PA#4>O>8S0QmH)UDC~(* zJO~JiqaK>JA;m$kW`rOoFRu(#M+q`UILOz6&v`!SpxU7=21&9I|5wo}p6dXUXUNrx z^HvDH>m2}XagjJ(j?^V1zo$mPhLUO2dXX?t@~g*ROomY0AaQFXR7JVkaw$*+K8=|i zh$_$Epd2Q!YJ&p}TFnuA`*BGyQI#j5(54X_%zulD^Qk5P3usvq3fVYgs2s;2b=StsxRZW^I-qajIZV~u}OPJ$PI-#Wnwo2vsJ&& z5%`n>aq%WHIUV`Ef^+g2--3M-wp`RIOe{5BBOom-D2R+;v>dR16rNW;wS1;1Pa0re z#U1%DNIf7CROXkJ7nKy#J~<^7$t~c8s)HhudQVC^;$IWJ#^n&iy>jTS5Z^6A;LHR` zYsIAu2>Y)~Y4DpVQs_`y9k9HjGLa?nsqb+B4SD&M6bd2hhy$4G0KypS4F}LzJe3l{ z)a!2!SY9~3i{81x!}xTVhpwkBL+uI0#=r zdeWys!Ea;L6qts+18VVpcZ7nfE3FanePU*x_e2!bP@8Y0>pBqN-yZ`k&82;FItu6? zg%%hnX-3l%%T_Kx@()NMAC91DAv!4JBgTmiSv4QyZV<-*6Nx0h5>~w`rQSUig?x(7 zO@YSscl$TVB-3g^%ZUGn2o3os-U2+* zY*Id=RW0dyXe&)c0bh(o7)bXcb#DIu!siNM0RQi?1hfmH1Tdla4^|a1ei2`STa~U7V6cIL+X_dpy+m;Ub0)_(~+C=DkmlA>2^J_@|v2izlIras#EG9gDb6j&t|~ z$Wecu$no_UDu)~wBny8d;)n}r%c0hTT;9~rvdq~HXkx&?Vkp*7RGK?%2|G%S`DNlTS^_yzWZND1=`$R7 zM;CF&fyyh%ugov5ptTw4B7%Ov)l*^M{$IQv9`!#uh$*Qw)+OtyDBvdts<@=;7(c{(7lgfGo($YQA12$<}Ni20#ic#nW#dSRG4kv9Tm4Pb>lPK_XRPFdNrcQN8LfjRmWh&aYdvY-wZB(gihZU}(aJh$Nn&EHoR^ zNTjipN+1AO{TH={)L|qoH3e#+G~^jhV9;{@BIbfAdj!puUp`}+IHZCY7%7(EH4cQJ ztz)FsMoDEyLsj!DD@G=qfiVt%wjw#HqL5Zc+)D_G#p6q$*~Q_hCCo&aHg7IrCeidVr4VbRieRbh=F>#U zBhvv~QG^RinGjtDeV>-Eot>W}4iSm8_RMa46uot1QgOwU5W+1Osn1Tha_x9N<3;RKLXHBq9c zt0rK8NuscBlfeMxS~A6j?l?yT`s4z!IO_#ZrqzR)y8$nq4oc3$o8gg_KbAyWRzj5* z31ekglqk3lS1^jpL_t&VdBUX-|3i}_&~*d z`C#-z-5bWez%*pWeMmCSdydSmB2y@~60ax+wlncI@|cCY%Yp4|{5d=xt-3EK*(wrq zW|Ex#a~)X6ATebF4MP48IS{ZyDGn(m#KR866bX?*5l1VSr}MZ!ETO$kyO_hyk=2$T zg}`w00~Y;;2bw0BAF>o~nAkK4_W4yCa+?e~!Sf^YLwIH<6Ph1rsoH>=7(m%JuuYuV z*J6j93D5V#KgjpseaIY&G|McHN#F}K&vU)+bTUs5Iz4h{%e*_y^Lz6av++*Mir(d` z*kLZEAwU=kG0S=cyVD?N^D%1@;8f$~(ALOJa3F!{3Ev*6F~M;iEqRCC^dKP-?|p)e zV}8M(Kfxv_fHGWY>iy#hmX!gFS;q#t{t`lnpJVI+-IsC9IySg!C?qmfHBm?m>8|cq zxpbrcq-4P(v>`z#4uym&vRTz1TYvbK&~vYZ+WF(QUj=hWgQm|Cda&>HP}smXhg@y= z$?V<}KJZ1jJ*Itmz?CSQ>`JsWtgjfcLW5W*$djhUR+HPJM z*Kl>+-T+I0F0eLmDCkHe97B;?6voMcgZ1_)gMwA)RGfQ0)GmiZZ5q>NmxJs65zrp| zTJWdALSRDRw*hH^X5KR#2d`%}%%?bGJuAp4pmIH%lFA*4Jhy#p-g$wVkW;};!DdxY zctC6Tfg_Qv;e(T{uKl4l1)LLPTf_0Y>)D5*#P?b#dMC+llZyT|P!Yrj1qWpYJr=Yn zXfJ-?DK?2U&Pr$ETlSAE+NIaKEShw%M~MeDF7$ zE9lE^yU-9q)5G=@-L>Ca5?v0$d7kifs^E;^^}*%vpCku0HuV5J7@Hd$2C{_`yIoM) zerlM~$(;KT3<(PEWY2v}Y^?gVA-VHjLgyb1ft}pBzlYivQLOCTXA)N3`Fld=-NGTu zFtDkW{)HfZF`eP^C)s_a=-I09_{e6x7aOzcVnG8vAR-yS>%3@P^r%&Im5hj)} zIDpI~G~k_E*@V>k$Rzi^4gGC0bakL#Vf(Sc^_UEGZ0HwLP?E*DV@tmUbu{* z1^N{JX)Bwk0u0*$Qf%pug`=hxBTm`IKH$@5{a{0QQ^eLI5mjccRoGP9DnN$DZLHSK zG905Z@oP2+O<@3fXB(Rd!TrD6*m<-q05IJacqA`=xw}FYL#QYef~awFa@%Ohvx1 zAwLSOq+My6!w6;tG-0Ozvy1}dq?OLW;k(#~5buyGVx@ymR$0tK*VQKn`iE^lg5?w< z&HP<#qRW?8V;hRh4V>^L-o1-WRqYAsN_r6f*kq9@Do)sg&+TG&`K$;vqn;!?UnRT+ zY~T!|0B?A68yo0%<7!jPKo7s3yVev7A<3mL@LE$sUn+jLjSa?U+SqYCa&tj}a}4O{ zZkBQHbw0rU!oigk{^%k0WoJ-=`Av2l(}zEOlWk&*y~d;Lzc}U2NF2E7jhs6X^a;Msj_B-G-mK6Vmo8OHDRvB8i$+sA4` zjWIeC5vhqt)D%IkZuISh7zanQemM-qoL=cJ^rpVY9%qjBv)+7f-~fA>IGQU=d*qHS#+)LQeP_ENJRW=ij^>kY?T)bJTkFsUS(AK==}vR?ovn}DF}ef^ zk6xxpJQU4E@k@Yk-klb1e+lDP5kcr}TO#go4XP;z=<5T8%t{3pMiU=1|8^_&!*OSF0&8L}zN z%{@a&oUtN|Ky{`g|514fx(K^lr%cl`1P8{4;4JvhV6f-L3A-YM12{98TP`~)bob)d zlDQn;#K~j&BCT*iXmPzzZ#$a8@v{0yStU}*5Q-9F;F$2V@HOGC5nd5a5q=SKBM^e- zf_jDmT8BE15a|myTxj~{$c4c~TO#zx7Y;ufe(uq5y9PQN@w&w!jnM5cP(@gN)tTO1 z7H(;19cp+7h=*)v_g(1vM(_%=e%EjiuJH_!b9Mq8Wg&yT7ffY2Q%7A71Ivt~hbCX(6|1M~?#HDq%$J3&EC z7T3;jU?KbvMxa16=x6&3PLdA^GF@29hxm4Ye~esaW?F}^UnUot{kJfyesH=yd2oe2 zaZrFRZD-h^o9(KwGYm>yY_k>yU9KUb~4~RlP2*#odC0BdOLDVM07P2RyjW<|;fIZw(hV z##!HKkQV~H7StyfUXE*U8jP^H2rtA?TJWwdpbgIG9&;!|=*|>`y)i9vVODGdFLcLk zHeUik((ttBI6u?6IIG*Bo85U34&DuZ%3EGt$2536`@pD`(A1&UdiNZfU z$3JBn%_IeNBY35ci%kliJ zTq3gvw{GRy`A`uTg44HglW-_BvJg|@;kSj2cMrcKY`kYiU);6J2l~g^e(8Q!Xu8|o zhYxJy;&ELj=ZCLvpVlkl~~(9H73Gy!|kT;Aqn>mCfH(u*G*dlNrnxY>~n=j zbXGOd#V+!*?{?Ssoo|ycLk0Y{l}nF`6uQTWQPKoXLE1v37(WT?PBRhHTX+;t+|E6q zi4}DgLmv(9-SJ{N4sYKMik*b}w{u!=5bX2FyGdSB6b=!(Lou_1OU6I_oAbnm9b9~{ z*LcuJu`o$zjTtPr@s?rp4(JAw21{*O!WH~HkhlYvx6RK(cw?!kAMfCVM6dBcxs7NS zvb#|Ecv2Z7k?kUBCHAvo)c$e+T8xdfn9oGpdg_Gto_I#9E~Y|BfRSqfH6w8Qo_UNE!kx`~<>}a4dt=+H=S`u<*#xf!fv~ z(y(w&n_4r8$kLfaw4)uv!@+_bVX-Rn|G`2yf$w0>ICZpeM@HHIUq%S3?x4m%8xNz2 zg9Gc<36@WECg@i+!ZEyQ7xy-^3LDzEZ6-GUIT#2EPFYre((w%j*%TVk1YEZU6Pho1 z4p9Sw@A(h|2HD&FpI z8nL|3v#c)WtJ8;ChmPEAh_!q`B#X8Ga;Q`2eudKA6zQhutrtZ)fi}pxABn%rakt@ujQzI;ieyGW;icAi15*H$bX`>vjpWJWg*d zFn;AN64&2 z_~VjL7kvBSJ7A|;xByP_;YZBeT=l#=x@*HQfw6M`m=9Qr>HVjfOJ?|Bi<{sRve~r1 zlauxG`^h}YL_UUq(1QI3ICr?cG7Zl-%ITPCcyVdzON3%fAW%cTG& zt(V*6J?)xxr^TcBFxUP%*KXx3ZpI?~&t9%29}uNx9=;4vC~W=Kn!kZ>a^9-B4&!~c zl{YiTkf+_J^J9yP;P#$X-F=t?1-c1I-&^@^&2^#mY>V0$d_(B(-S-yf%GC?&jQ zymqnV_y3Wf^a3VO>IU~F4ohU`-YglzojyIg90_9?5I@X~j%{3sNiYI((~w~TAh z4$ig3K~{TWCx33;DSIF+n+>k9ZQO^t7$Uo1IA`^OOkEufTwl{Eq3|mh&t{)2>^iSo zdA{i^cu$u{k(X_JH-C~;sN0D?#_FgW3p(U8Wo{tvUVV>5ospb^6Guk57Gl%69sz)3;9B@xS}H z$l1EDtWJf(OQ&jE6ea-@zjg9pk)%Zkq^-5yJZ`%~ZXzx`NO0$yIu`8dL=8S8kk6Ys z2;!5bJ)O*gmlv2DyeX=4SkU3p_qa0Hxp?J0E~Or7uDE)^#b$$fSBs`Q>#GBrMe={0 zZDDQNUAmgHO%HdSYkC9*r62bJ4p7ZmUzxd14Wwa>gk_-XF8peMtQkVcAwm`kAD^ym zkdyb@g~EBq`^8v~24@2NimW<0Ck^Ub*hLCsVf ztTylZ7i)*5Q5M#+3vvDXoMsXTEE}->0BwBuU+3-4RR;!o&Tq;3>Pb@-RsC(JlQtzW zo}ItqahpH+q{j55WgQ3y4J7vnZ^I|w=R%n@{PX+Vgplwds|Ie+dccG$RoMUC6$Fdp zj6FsOA8NUIz=o&ybLo1>mnb$1aV$R834}jxkcQ$m>Hyuy%OtG-uKm@a_I>!ReopJz zKV(-PCwG(Ehb%^rV?X|-p9`D#>d@_dL+k!Ew1|O&erz7QShiYL%M`M!*h@pBe{T)l z8e-1$eK1rg)SYW^qA!MXf-kQ8fJ>~0z(PMt(d>PlG|FbR`0x=QzSo81>(=okgv3Dz z8I_T!LepG(Mp$~os_Gox6RL)IW>@SP_BQ?ja~Ht=+xQ2BoNLz4j3GD4)2Z_WeBHtA zJ%VfjCsfd|fHfa-kxm0={&D83Gv8vvhg_Kp&~nBDw}B47{2?cVfP_w+A4qv2kwWGC z%USwZjL&_@#e08xwv&P75IcYMLYVDm%TuPUAK<``xEMc6w9d5Qt)^pyxCzl;M)>bp zT=@|fULSJK>RQ8YM;27W!FmQVk!Edi(Se?m?+W<(s!j{v+1J7vQ6z#3M1YULeG9SxV@?loBL-Z{+?wkXji6ApZ*TYB`I z2U#d!?NNf$ch;~f;U8G>F=tRf&S2qtT=FrO;L&lu^KTF!t=CC}+uDscf6UF!dh>ik z$R=A_-#yjfc$@n8@#CBA(ZZYOkM|)@0Q?HCSK-z6H{sBE%dpA?qM;{@)*$BNz)!f1 zaFng{6D~pa)Yr}R_+OvEd^(|*`IH-GcAn(a`v*8ypb z!o}^Hzj!|K4IN8TR#CojWgYCV3mo0I4+(Q%$rj?)iN?IyIYl5tQAzIVg(xDNYnxbJ zF*^tEO?D69gh&p55vd4(!=*?*4vP1W;_$;6?!I&UqCu|ts~X1$10^AO3=pYexi%t} zgQ-^>*S2isNIE_l`Nl);niXSn>vTw-KuSo&eNVV+O0`mLoX2x*ApbLnPZBE-ne3$-O9N z!g>#$;l7tM>w9;9!)X|JzHyOT%hXq$3A(=E#*a7DH&@)A|7FRS!9)H-AAR}PFBg7= zQ23duGi%N?oY{2d#WT@oL(UeSopBaAO!)KFd5^ENzecEZh@=8fx}5YrN#0D~Kl^>t z_v9_q9%}#oY|1&mb6=eO9dgOfBgEK(Yyq~3wvD#uY*yP5+mE(4@N1ViALTy#KD)(^ zP?&vv?`M~|y9)Qm?>v6zw_&E!ubJtGO@%LSaPjr9C6qt`uu8{k*5A0=9Dmh>RR4i( zb`voKIgDUJzF(5`L}?5Mx`+FBCggJxpb-&`W%(5|%8DB+bBr_ck;f@E?&;YHIgJw< zwOTE5KF!9>CHG=IzG8_{A>;PC>NQ9`#1ccNH^SX8ZAJCG#We|Qkk=WO+EyaeW+C}m zwhg(TW7}5MRX2h~hy$EwG4qVZ+uQZ)5ipWp06NV#*kjn;Pj?aCmEW>$6H8|pjX6kl ziEV=-H?FK%vASke9g<%Lyw?>8KRc&sdG*TbB`D-7et6hDc+xe%dR})3tIc|TRn2_l zbAyW87%|OQq@@>z^DB|^Ch&mDH>M)~mUt8)<~DwN*gd-bdy(AXL~eFTRPqTf{tgRc z-nB^e!~H}a{~aZQdh$QA#Cs9{lgL{AGb^^3t;8;rGveclmg?i+!2M)6N@jxkmKV+} zYMj5U*Y!5{4x`n;LHNdq#wW-f%ElOa-Alh%|6!?Rm zxgfmEi;1s?Ye4iU{ua1x3@67uGMHL&{b!q)^o9+uMN4Za#q%P_Q%6C?tCwsi0JvYA z#mpYVCLnonr~RPpk~$cdMVQc1_YreeWXn8 z6Pa3wH!ULGWfGGI$7YJ*BqJl=7R2?)aR1M?UEbtO-=S z40}r0ob2Z3DxfxPUQS~~63Pg}jV+4k{aY2RM_r>~*-~g8OY2s}qS$ae{Xa54tV(n9 z)I>=1$r(*>OL+cY8p-iQ6cdTZe=d*q9w%bqx`w<>(%V`y>%@`^>;WK2pl zh^MNMN1T`k(r~B>spIjAR)x1`!U&WcKt#cbctxL6P>>cG;WEk;ZPC(2b(;wrM*@Y7 z$0u490$lak=Hc(p1}9_Z?TR2K1xIaHL}APK{z+4mIwY2|75QcnIVKhr8?;jz9bSpN z^a#2eaZ*X3&>XW7?N_v!Nd5qVMmzzvVg97kBZ1xp2!hR;#**da+!(o-gyd6z!mkiv z>v~t8^diU!eTo(u@`DIE&oxLn6+laCXy<7p%%&kY1+|klvD~6YxCU8_nVU{NObKq? zpzw|^B_%+23P)0B7bAW;Y9nF8r3`Xm(u(Efz{I}-m)vyH)X$KJBjJF!S0#`_aEn<^ zZc33JM>!LUhCWZ5jO4Q*m-lR>O~cUJ=0N>v8$_;El5}t|OFoB)Hy5-)`s2o`Qn>h) zjMNVyI`I~jNKfb@<-?E*I$jqNSRa905hi@&eW&ops!1vHkT%m%3T?JXIUneWTHrea z3jmwElT78wVK8NlR0Hsyg@}eJ?^>kQIr2+VE|R2#YRVsjGJO7mTc^0GvEMnlhX=m| zk+6*9O9A7*3^TuJH0*MO8D}S-IV*^9VJzXOj^|3Tz!k5A^O&0g!}S>I**gIBcgv%{1V>&%1f!q*-nMeMopyL3^-yR7~nlmgxVrm zg?!`z`7{%`eWez%e0AM?xZIB9TY=DT8&>)F`_%ii0*TnJMoaYEE@`%O3Oz!K)H_5G zBv&$)l$0Xn3nLET_2Qo$SiY0g2H)p^r8zUo;j->7qK)|^pg;g|gYQ8AFL@gw-;F=O z3bofuQgw-Aw*x$+126UQ4^G=dn;&UY{L7-l@n$h>dGD1X1$FYR%WJEVypvS&6yUETfVp&c^@E3l5|u+uID58wxbwEvXJLNf~^>B zcP@tVVyn;rb>4I=d4@WeKSZ~dDN8M2UDuVjzt>Cs5}79fbp0e;K@Ujgv9N8s{zfRFdP zNSlgj1Cc)3fs}nfLLyoklD`KeKJSBppan^0%`eLV1F1eBv1WcfX<6jkAjtJYDHoiY z_WAfelZrXyp8&6bPa#_p4G$8#Dft!TN)l539rA<4wdqJcKm;3MmnjuNuEy8`KGH{#~VD8>*&nXv$=-Eq#KlXp6N1WX)B@G9~8 zh@U3|E=)#T+a0zc-ILM_iXagJ)TPE@Ps_dQ;XeClrE3eQXZcA~a2eQtOzjHjcUzD= z0EBZ2B=tfrK@4>4WOaZK7HiGJ#dOjVyh4ctj^p$+HVYC(7@=^N!NAa1^sLh!MX%Ey zr+gJ14)>NGcCtUJdM45_;9Xxr$Ht|;{QI)bsBmZO?Z;14O&jOHzfs&772%Al{rDAt zk9O`o>BnCQ^73BGh(oTCNYZ;Ejn8IW)jLKj)a#SMza&%p+#uSct$UREBR&6seE($L zMJXP5YfiW-tiYiU@)Hx_6dat5pr_#C%_Yt9{${SfC$2SSlj{GPW&O=;KOBt8}}P|cdV=8!xDB~ql;|b*DW$w7;N{s-tK$7Q+{(1XRYpA#GR}9-ZqA zBY%aPs`!Y7u-)+J#94QY@hmi$6*fEIbpG{=!W%cI7}^Vc>G7&@F05{)4IK}`y5`&c;g9k zc>hJ3>!w1o&9UGHS!8R!-RauxcU{$q>-MZ;!^3b~_bPkK9t)%ugeT)|$i*Faw+SQs} zXt5MW=JMZ8nNfsLugk-{>v}Km>HiZrqR;Rjv99Vhqk#kea*mI3b^9v=le0B21By@X zjXck@tcSXjghLuiVCi&2Z_)*R1MB7e@BiWX$wfZN>F9Nyo8b9WtRt2^{UG^xx)M(} z@;8shIKSNQ<-PHLa$2uCZvkoE7$Z&54QG(1cZ@WT-*7%7sf3i7X;L^w1QOoCF-)p_3L< z$-sj2)?x}S&LDT_t)&z&S?uoaNTw1t9*$HRVWV=S(g_<+M=FD`f&N-#lL2hpy&Wm4 zO0^?JRLT2@-R^8(%slQk3qB}a^|;%F{hM6&`;sqOh*MzxagiwK38v_%Ryl!5^W6kX zd@;-E3Q%l(%BK0``x;37+*oMRrg<=Q;5UnTh3E04@ygJkEl_$PEaVxQa*HY&b8^cO z-z-vuZ^ciJR|+A@7UI0Hhz|GFTVcrHvz?4INaG*{?oU$k?y&AeraTeQDZ?@c*&Fbm z0crjPM%<)$5e6dS=uW;9IB2lrz<~JS3mC1Il0{SbF2cSInuKH5LHaZXlJ6$jUSjZ` zHV@w!?PP!j(+wT+>R@1fVeLjkc|v2(grvqv$bSzY$qXo~Y3Z_r#-i~hjWsJ*E?Ws- z$fLuSjgA#kfROP`|)a>GCJth|JBt2ks`{1 z-_j|^c^(woxnoH<^fi22rwn1bv0IihIPviPSh&6~otpp!z;$M_AmIULDa1vQoqFXs zXt&TtWA)03s+LC_;bpn{U{t8O_X)kysjA)$k3^~@6bbH*EEA>0#%KN+0LFA~Q`V4tY`O7x0Q$ z&GM-g@ikC9FYsJ>YhJkATWr)#FwEm zuryb+6h4CnpY>zt&RawzEV1x!5~Z$zFZtotok}0yx5na*F>PcmV%$6U-JQxv=3V^F zPNlc&dxRx4m?V_YzY{CtQ$LV=621WNA>@EH3HZtYITM4F9|KBUe&atCnZ*o{Avs?0 zcV#dheo-lRih}bqun~xpcPaz0>SLwcU3pw$n2KUPWAO67D?{+QT}oc@`TdkKE!0qX zLMkE?`TmoE6$9FI9V$wRMZ8TcIO<>civgElY{N>0J5v5zDkBZWd^v(}VNZ(X#S(7- z?mnl$Ca{t)eyX;@P^z6tE+ix6>CwDHuy&%1u0P{Yv%{EPXa8gj_%z<1Xoz{v|A~rJ z=xg9kRu16i^*0PGWst)~BlUp^wNyBuzZFj&Rh7C*E&|yDFXQ?)WkCIRj5Y()RauAa z!O2J%kK~)+YGK~2VPui_a<9=e=@bITf0q@+cRB^vRs`UexNFhEIIsZyMzmZ(2Z>wG~ zTHRC>{~N9za1rq9AGj!-fHeMhDW88lG>E%@A_oED?~P{g0vgw05Qv6T_<|N<@tx0< zp_H2!5W6z4TSvkv^jop)7$k=@GJN|br5~$c@roTvZ&?ZQal)qkO0|M#$$l=*c|oaW zePB}es?ys@?gCqGxk_ByuFRS4#=_RLxMDkEI9Qfa_r|}qE3-<}A|R)H8ghfH>5XxYoikrZjM+JZzR`rd z;G((%*a$tN3At+sgtU%@3rr~1ABP=+?vHM)!9HjJApg7%8XSoGJCs2IaD5$?n)Hoi zLli!w<_y=^>3(Qz2>!W48N&!TbdS<6DhzZ<7Y1OVA{^AAj$mmAFd7*fQFJ7pyGI%2 zHx6{Me9e7fDK?6w9ub0{vMHTd-)P*wN9m)80Zwq+{LCI@fHE~+8W|=vVW*dsG5X*H zvM&l>zf1oBLl2J)aRk;u_RVcSzL795=o{9aTB;m}ScAL|9f zTGAdJbl|=d|CAFvGIr8v9w!9=5+}2G;m6AO`dkO`m`HA5$3*fxx<`zB3;u@?*tks@ zOIpa%z^;6dkkU}@Vq{_1vuG)78%>ki1cY$C+f1>*Q(Yy;-{EuCt z;hf~4y{LuwpPkBaQy%>v6V^JEEeb}uWc8vyQ2|W(7%&$%#B_^UeD_mj7@qqIxc3s+ zf6vLoIj=w;_u?x`FU8U^fQg^DC~)Elr4ujq+&;_jg;$hnW(EG~6=jZMB{U8HRrrB@ zN=-nW=yLpODY!f?1()zA@X~z{gV*4eeadmlwPG`euaQ29`}ZmRnZM$peaf_ebt0U` zmi6%Nh%F&c;g~LEutz<>Mq)=y1C1TdWi|63htSc;;vR*E_vEL6#$XV`1o?gqQawW; zV*U!A&t@xR;Q%#rK80n^)|`J;rj~k#i9HPEv&7#h>^UNx&aRR(N(Q- z-3}I_+Y(tQ;05rOq^%JBUxeu2uk?1=DYmVET`czaK&gpu6CFt0%aa0w>uv`J7=*S{ zhlPPAi|+v=&7KkGQoby@42++G_Odu}D~u64NiU)vzYj`*?K-|oG^Wpf*z||qFk(dX z!s)Q>Lqi^XcUlz9*+LYy9F04O`(IT?Iv*07rKX!ksRX~nqZ%oIGa@xbOUXdo%Q~W! zBKXV-9B>Le!s47V7Y&#A1{_W)Pz3Cpq<{-Q2b6A;|0XtK^_w8pa(diI%oCr6lt-m{ z!B^ql8q2b@tfZm@KCF)Xj{&=P{y(~|13s!^>(6d>VY4^8d$(_TFSJb|G^rs4qJe}Y zG({yqC>jWopkP~9iac!SQ%0W+QL&<60V`tf6nhta_Ky8ozyFz;ySqvFe$PktPC0XC z=1e>DKWFTLq>Km6ylISjML2L65O>*{NpnYIV1XuynMnR{t& z;M2xvUVdPk-Qv_9LmYJ#JZ?TNi2D4~YjC6YgrZEYoz2+(@N-_*0@n0r%(xadHGzlh zXGPsoofwj~=VY}~pH~cKz91vva_J?k;8H;%o1VPv4S{o={Ro#=EG<=V>@}sawH7Nv z;DDJQI$QHa4w}V*Fy&?NK?g$YDr~PRd45gysr_{-f+9I!M3g-FLt_T`h`)Xt zW`O_l-)__LwU03-1#V{4C%ou(ZKUZ_e&X%g%(TyBxR?Px$8Tc>$oPUExLr#h{w2ct zY%;!z2dYiR*A!xGGD^OoiK000Edu*&F1{0+i|OAZE^&@HtmX*M4`QUZv@cuG+PP6o z1ppV(VcwVueu^cKQ^C)2D#-Z-gV%Jemf^SkDu;&l8~TH`fN*B|zs=h*8h?-POyJ+O zxqWHXf(0vB;16E9UGtm&lp|~SUvkg~|3+%879~fEzUcx-gI8f~`$z5?3Rn_#88I4e zu9~@lZ`x+}n@ve#;;1nv$>UWLkcABr+z?;CJ(eV~L#k_@5{8G^`X=VJN?>7(;wYBd zkN>q@3nllL0Kfq@o^_{IGB){$1nqqYYJCXirzG*iFWPg0K1ZDMnn}%7Q?RUOIz^<9 z@4Hj$-`^$4@hxv?zD%!k`P&sFHU&WMsWi7%Y=bI zJf@{~8lGanjLhsoFp0rFkR^wbNH`$#rJqBPNUCoFu+;t(NVIlf>GUi@;+wub!7Ax3oq1g1<%l&YfEJ zk^%(>#byPQCi;Z=00R{}rr4B>b3u`UTNNHr@R!hhJIg~tK~O5;YnDefMJpS8;tL>m`I33kWq<0+0Xd!Y%$EMfMb%qdx1SA#RjfYEbVN|j6@YCI9Y zjT$?vDT7hFq~aP`y$qCtUaXb5dVn~G)bRs%YlBUb_+NKpi$7UaJ-eRg-lJvtj_y~ECt-5yJQs0jiq&W-E3I+wOb$@f;jo zJX(t!dtn@iS`m>uoqvCimeVjJNgf1e%C@u4LR`k|BxA`bTL)687*1OY+d2TjupKKi z*pEvxE>P#l;go+opL4I4XFdV2>1~>~--$@Lbh+5jj7XWQcmyWFH}432IsXV^o4tTv z_b~Q*Dedvhsf*AeI0C1);8BvrN63`3B#H0Xq-8lyqWTKWW%kJ;$j{HdPqU?U80~;_ z$kKQ{S>`hM+R!p0%Tcd#iCmC(oAr&%c8Z)!Y%63dg}RYwluXoPnOv#TovI}9G$o1p zDv}DCK?F9J1yYD|1c)Gp*el1XN zg`#$4oZ5dBwW}nxL09v4?$-wPza~lO*t!0eJ&or)tfiX$*V4@5OTJFhNZ-OwctA_b zxL!#Pwrg7zsT&lj8~J4qXah|*@kbxfj)InzvO8{8*>6E(FXvUSX@QJe<0NiVByN`^ z((d3>9@J9jZBN4WMPszSsit<~^hsmOnfuQ8GFr28>2j8Q7n0P~Pi5K;YKK*%{0!VJ zDqWO0t z**>|or&QWXHsKk5>qFZ3&~r&~1*=>UX{{Um!sdsyqkJ#MNZVeLb7$s0KJ{TOW7vKb z1Fw?@d-IO<^W`J3p8X0hrOP}-8b94{Jn>@9P=AVbgBrN-%R35cVhp* zO5frYk7!}j+q~@&=%n7|8z0e%Oz-oZk7$J>J}_zmrRE_lT^-VDLLCUf!iPs-A?qXV z*rR1)<2-1OR_6HxH0VH5iHo97F=JG^hFYIU40s_=qtW;k5(A?+9(+S$8V5p z)VE2Xz)#tO!_4=4wA`%klFnzL?-5ub=C&UFH|hso`Y5*OKk~(oYK4xURIC0hg!|AQ z&F3Zs=P&UhN`B*yKB^U`|4+>|ze|C)|4EZBDR)x;;-`g&8eq5gIFh=tz`OB?ViWtY|2MstyI$`UQARZN-9U=HnN=to08JmmSxm{X--8rYE!@o}IYrIW3%iluTkM`7kk$maSSeh97zF|wDeYRdiZr*v!%>c`OuDS z{QDPhlZN1aq^K;JCj|)iXqF;;`{$!``e-^A#PhdXNYj}`7jG6)Hy16k@B>@5f?13E zbmJ1E*%MTqC-q7N3fjq_E>)fOrLnnXnH)$Xmh(TJ)`s^x#bT&E(|PkVSogc65QSF~ z|3mzz$}w)VAzfRBPvbigWm?TYz@OmheNv$8@EMe5ppIGbOmHFgqGc?6mTaU6&uR`G zmp*5!>O(yu(1@`k~ zy3`F8{^8U1fI0JDG_EoN8)d8Y98wp^A$6e~QWy7XSnSJWYYe)Cm+#jK`cH*BepY%Z zcRjC#{g?GhjcO0MT%_X{y{Pq%_%`?L6aN)PCK_9~%og{+S0;{_|H#1=yt;2nl;F4~ zG3~W#bZw!ua&&DqMps0;K{YRi*Ntj;-6W)&Y1^8*ZV6@$BWQmWqA@^FiX)Dz7`ip>k zFzr5-8m+sFWMpvCZi~8~LJBS4fB%t2)&uce4~mhM!S$!?7Jk<=CUKin^spRWb&vGw zB<9;=Gtgl@GO@896lxLVKIb*@DPx20f?|YFG&PnkPF)Ulc|-(f`*iA^ovRa;D5QgiQjQA zIC=6Vt^{2&v$r?Y0`{g{z_ho}2=c(~Ng-ghZzRWufayQKG2 z$3Q6GmsTLyAQ4pZtb{T2a5hP}{)YeE&hsU-u6UETBnX5kq^M z_{{~R0}yqqu|>3+VKNg;vc|Dcad-vxJp*6Xip^Fl-}%1X>+gqL5^!$oZxy|eVY3Qs zO=YsR?|w0;9g*sQ6a)*~?zU^SoFuO>SQHistisz^dl83X#H| zE6r~u0L#IrQhesY0p9tFHmEFU75geJ1Y#tX70jM$753H1Vq;yL!JmHx zLYB!7zoG@EX30v>ezCf3{^E8zm}gtXwjz*2?I^BXjLR!($J|&u+VZS&&z>(y7Zvd7 zuj1HIc!Y)-P|P>Is+B}afXxsGmc$bM1CEfxHc+uK=!k3#jE(RvYg$@Lg=$y0?XRTf@Hg6qS;gMXHe42N8=)F^WUM&f zQIyNLiK=O7#h}+l$0*syQV-F^b=o*9ubQNV29GBiXx9mfR+XZK>0qK_xmvQERl~K{ zwam=gSP`n_NpI5B*o@o5I;+s_dnQ3%0G+Z;mW=xAt^C7{n%8tRKl^p4G>(yFdm2BLFyqa%+Qyc8Q^V>b&zVz-__&@!x z|99E^%Qv;r`GY^$@h!ZOI82`J;YD#S5syK~Grzkq>$~kCKKU)J&JMR6nF0`fD!<|_ ztPy$qfw#0to5wl*zE$sR(kI_^G63<5C*QO<=h%0E(%<#AX1YI}uH>zN#xebF3BZC0 zIyBB}S?0Z)uXCkG{6N6T`DI-kPHEkR3^st3moJ9Y02H^p1Dkx{;UxHySs$eMha`4R zdpH(e3UJ(l_W4nXRb8uY=c3&!+Lm=KY+up7U@$=yqXt&d^{6S5ke<2rCT3^FK-MKt zJGs4mIbE}r3jAvn&qqL~H~(bj2kH*1Y)|Z`{Rx74io2I5C15e|6o8CXHDFfaXViXv%;uDlRp20z2J?c2 zuI|%gL?K1KR|t&?6&(C9bai*GXphdq{jM?>dTsa4XMH10+pb8lB$b?#M_wf}js9sm6=je zG0ly7jNiN^Wu)nGerQWdLF7sEVtTcNEYFp*1n<-4dGvHPp83YJv=hn0g7+EoJW7=i zN9aU=>lJfL2L_Dr+<^D9UNyJinQ=&sh!>S?C8r?tcy2tj zwSEd7PkqB&-4I?}-GFdaF}>qW3d8Jal>Zie;~1sBy>HXEXphw@kN;hBbz^faoCkDQ zFI}M01>ci_i^<*}^v{#r20oC%O)YgDZHsnoO)=XdxatPDK5(tMc2*M%gTr`dv#NPE z{=n0W6Ce_T+~?!PcR=p97+>Xh&&YXw{0nhgV_%f=2IC9QD={YkCk7RK0d8V^A!P(W z6Zt8K-V*;pBtR!Bj)>l7diB7P6V z@4M9R(!3eW36P42n9^92$F!aJl5LW9w?VX_aZ-Kt29c<0DiS&FQCS+BkpsXLmBV(Q zl=_@qJZkcUY*U6-z)eQ}Zt>;CeNtmHL;^FtLIOU(U0YHDrU!Y^mXs{hL%eoNO0Ml; zGi7U9vF(nOV;NZ)ztu@GxyQ>Nx(~3>WEua?=d1EcWksQI<>J?gxMP?eM|HxmORBOFS0YI z^4t15a6gKT&U|S++Jt?qYns)VOX-T%+H5_K*;|YaYI3Vp-o87g6IanXdWM~ioxx3? zJH}`;C8yOacNU-gxg#esTLy?*v19Q&R`uiX(WB}CY)TTV-VM5_`|*-MkGlI$KwzU< z+M*>Loy!&tV96({YGuu}9upR9U3wD#>~n{=Uz@1lE}LWEB7dO4FgZ}BuH>qbS9Llb zHAnOLzjiu`%^9!pWtXM|@ObJm%=$X!|MWLt?*ab`bm=`4?lT6Juf^RTEwe1}7OWM- zW%xP@nvd)1j!ximB%VCX-3u*0(X{UtuW*vnzJl3)kgKTU z$5^_oh0Om`?}W7H0^Xa2e&N&l`2xdqz`YZB^8xWKooeFdR2hd@0shA0;Y4aRj!=Wj zx2#Qk>N(eI{ua%f-Ej#012n})96UBUii)u+YowNkLe}}tuivgUQS#rSd##@#JL5v z5VwE+ew%-E`cnEU#2McCw(%Tfp}aJOR8+pev~ zSX^n&tV7J0_kar@$-7s#u~4Zf+E>K%vR-AEqikn|EL0Ad&`>_^8b@$Rr3Ccp!z4)4 z;8q{rlY(s|wc~1L1x%bdk1{CHVADtU%Bm3J1}W=Us`xm*2gOCkgDegfOrOxR1)Nog zz!V~x(y`XK$n76HKfbsuASFq=JZqAaEQGd&yaH4)>mrI;td7%=>?Qb4Kgr5>e3KN4 zXeY-K+B)PRU0VvWQn_bchP3w1*!r|wtxwKVXyu3kxYv1VJIh&tFZnwP>jprLqHrv@ zV9AR1`PikeX7(<*&Q!DFZu}zH(F&2XWIliI3k;%_GF~iXr{cGQ{Le9N#7{wXU7^Vh zmtHAzZY(Nv|JiTQF}2N8Ya7C3x=3cpzdzGIgZ*7;WHyh#wP-|O_h0{Wl>7ZTZ~-GH z`Gnn4+he+SJXFbl5UQ81fK5d61&2$X!fWzDf3=)KLX{toF`kKg#oY?G( zd7Cye-f41FDCc$*LGAY7~e=uWgY;r=~4dsp1P6z4=Ph%aUI7V1pp& zK|_9WPkQkBRlM6$;{4M!aA;1;@LSzEDI<1RZ?!l4GIZ{i(w!6V&YLIa3lXJLR6mO1 zB_o~L1CvHy;~I^Jfqs~~Wx&oE$@(QTwkC~yBx&>#c1_ag=k=fI%SB%L&W9DEfY2o~a&E z&=t$85&!1g zSF)qumH~K?X2#gLTl?hvJ{M~)oDCbF*vb7!SmKH41^~qPXFS*e3{o?kMF7$qX^*{gQ{P^9C9XBoA zcCzqG{Oj90nuQnE6@2zM=fBHNI1K05+vgr$HztIKjn<8Wd+~K+m(D-DZhYLsc;!X2 z57V21A-pNb;quaYu&$tSsR5p zJH?qD7+d)Ny@-{^pF%nIM|RvVp2b>Hz`sAmIov$9kVhUdkE3_77OimR(f50gn1gr? z?1mN2V@(m;iBd-$oSUd!g?d}6S8X_y5d6T01(J5XiPzW;td!*UR(P$oVZ{{Iw^%NF zCBy)BVC9S_#R@7Q4JTQztW$e2D;7^??;w4?*ih2KNvbUz96w{1Z{OJpZyG4 z=ZK#mRz}*}$rhosVWE(=VVR`(09ML)ys%Y4L)aopw|x#&;&+=?4h68En#~1Zzd+`P z%L$Qh{U2s`|L?TxB;^Dqd8`9iC?>JcAK2h^TKqxZpHK9hn*fAhUx zCk4&_nE4KTM*NJhc`-V|zb^BcdISoeeKxbi6KVkYE0vlP$bM3(0R=OqiTSKaaW}_8 z2L^M{en^1}JB90C%kpf7XJ2r(r|4Fcy+2l#kp!ot(A9au6A*nYJ@SX1zw z?f~fao21mmPKox6mr3h|OQAD?;#a$?pa*!wgl!4DchSNb1d9I%MQZ+dX#pxNn8eFZ zb%u7Wa{iI$55W6i-}T&cm2;BKANcx6am#OTZc4Mj7~i*TkJGZ-^0@O)Iw4qgJ?VVe z><>&iLLUCb)6R$dffJ4t_0TiUOZCsRzN0kL!8~!BYv$^6fbK(4Y;xPc4qBH(V>;t zk|>1(&bcv#gY{HI22MjHHy1lS6IMx5a%-QwT3B{Pnd5ZBl#|ZrXUH_DMeK}zrZhPU zokb^yK*V;oI;li@9XHPD!6~ywsq}LdYgI9w2lN)sH3lbiNJw65aI!9e6aV_&oY2TU z&s--4cG`wM4N6bYBZ>a6UTkgb#THEb$i9z`e-*IrYn|OxJ2<~(Vz|DA>2@nLge}qH zS*^9rQ;L}zcfUd}SzlF+G_|ZSh4Y`B1ttf7_$Oz$1ed)O4d9Q4%U=44_rl$JuT1%F z?)ll7m+X-@X=U&L^|Q0o<5S7X2Itd%EEDMVpPd=y0Tm8EV)YZl&{(m#dBvI)u%jpmAz=p|h}EDMeNP4+X^!*ukrWjw3-8G8t-pIIl!@|20C- zaV^G*Tv`0rNj=9FgeX17^+=b!)y(g_Sy`xVg7sE}*l&yJI-o$7H%H70Yetr~T~s@ZWCg0?M9ytc7t`{VwnJ(=a(ALx5>#>8 z-HJTAgnEx)>50yKpAF#5)HL2L^+%3H^dhdyM%1&FLV1IxO}I}8-Wv2F}n-LkrUgx+8fG&JBuT8i8(G%UifbvR?NepIEib%~Qsr7|lUtjrCe>E3v;+JFlPk6S zV64_M-2X~KWl+2G#0B%Kvf&F~W0Uy(e>pRP=h3xG`NUxpEAe{!n)a^w$5pZ1zb!ms zc4eFYvG6TsS3xq9)9U~ef644B$uL`I);BcNU>%#*LIyeG+4Kw5a;!D z0ugGU3i!d@Dn&2#1~iya0-4)Ebx2Lg95*6j7D50N*|p8}9~)d%F+0EZPS-v9Peq2Z zD`mqf*Xh|-f8dKF#cjM%Hz97sk>q^qt@;c7 z{ei7Vh~sN_>Zf=ExAlqIb+>LxnPriqJY;19kHIY{6pwY`rnUtQ>*W=8s9(?UY8CG8 z&jwDeodp+q;^w`QjkK|W6RT^CfML9Ck6w~tOP1t4b|zC_6t0~Xt*e4(0*z*Ql2ho5E;Y39H=7Mn{c;VUS(=HrmAS=DQ;F+h~ zSK}cX0Zn6}`G%M4*yBoT=tkYUK-L4NRpIU`T+h7ivNesWM1XFg2N`G!<6R`0HL;r3 z#VD|NiIV5ab;~;iByO-M7q|A^QGt@9erBGNRZCL?2{#1E9fr6sg-A(p?}~{#q&>JS z7ZK7GS4;PbXm@8+IGeV2QhE~q%H{A~rw?sCMFt4*UxD9-_imsS?okxB`uW z=_Sh+vCOj&9DjYHVogiisqIlLr2rwafoGF25ITEyOBg(Lv@cr|&l|;ObjdQpD6&Ar zkh_Gf60=6mK_~d5s*maUp_N^WDId!^R|U?5>I>?@iZvn%eNP2@*YxRr4f`iGh1u4r z!L(lXI>r*vDVV)BfTp;>Vb*`q_r?io`dSlvG$LVfPrgv~aq2~A$NZ>VsS-Om?P8w& zyq-F2lZbDT30V3i_!PgpqSZrMx>w^GQMIQ1Qc6j^U-oal^m)D1bQ!PC?_E_&kS20WK_6T($f5bnscO{AkUnZfhTqKwL0C_?ZYxHXmrPc|7$du|hgFcs}U$e?K9 zJbwLtJ=7ntw8X72K3zBM z;;Z-RCAQr%X0f2u5BmyMbU%M)9|%3bzuBh`vppyi)bo9mwR*pv2C&x&`}NUqcKM(E z=;%lI^ZWHO(;oiEeiZm9A9w(N_VU>W^mNl>eB}W>2LQ><2lQ;y6MPr_d6K_Qf1cvM zP~6izco1LD@DT^~iG!XMrR}xMK?{rSjLrdgRRqqNQy2>@WJS;O8xQJ*ffpou3)UPJ zEgn^TZgF`|2FZp%K zNR}sWsI~Y_%(_aF&gW0Pta~coGG-A)6O&Dy5OL;x8)F@Mk=V`-OVK+R<5}-=?G-(< z?7ja#=li{Kma&{ejL&*S&&v5oE_M=x&0PPLtKIU3&iQQ}Ebxh3XivnG6H=EX7h3;k zGMVC0J~AL)pUC`z))BekE!!A7n8-H+-FSmS&a}&Afb}czpZPW8$*=0^!@eP+r>jYb z8WW3cDxRK52t;d4#7=`&;qUR*McQG;ok{M1&QkCeh19xLu=F1pkG!g`?2Ka6L+rVns331hRG0H}h`#Obf;Lv!KTT1@D}3HCiWO7}BZ zMVEBvGAsOCvq4sV>udTzHym4wxt5IWCY|5+x?b4NjV#$7e&}^Q3x50mK};SF`=Xp-d z-w931f+dTVbPGJXAIS#>__Q~5FRy(71#j=^xOZY=?>SZZM}bP{D8BP8Js25{ z2yq7q>SGX|HkLqv*oR1NS|>JC&G?c55d#IN)_E;yjJuwNiL+kf&Fc(uC})t*q0KB%>Kgqyw9H zb;2{cD^sS&dC+E{cr-FmUorYDG8%yy!*YDk`|3i7s@ zaAG7ukh2^nEB8DJ0flR1Iq?mc&tH5;FX^`cl^xQ~e}6|G99bw(u;NKaBbk4(WK>mD z&a>_%hSH%1nI0%;ux z@xAZr=~GXk0#_%@!OXitwm^xj4b5quZse6th>Rv&d88&hRWxDbwBAkVUuDRZ(SvYN zZ(A)K8#CMK%1Y!6X;%|C(-fP06gz0ZYRwTcib$ZX~nHDv0 zM-x-ia&j)(#I;5yREwc)t?=2*Z0qD-*LqbExj0(SLl)Zx#Vs7{3kSs;P5d#;ku%cH zCt8UEw%i!77a$)VWrc!}CW4rN<6fR=7opqaRgvvtIb6x6s)gxxI5i@x*E4Z33MPAc2{E`o_iMp2Gfj`Oc08i~uxP|ZkKrcwS-W0DNpKwU` zS;|?~RvtX0XPR!{!w%_rc(HBPA$`<b@2mG;lPe-M9CctS2(t9dej@x68p{)EQHP|4zkJc;ZAl?n=e{U6OwG4qo*k zmc*Sz-ygXfP3*rXmOfm*QFJPfTlZ4q-$!jL9vg)b9PvSqcEr|T|NU4|$SG;ry0!%i zqSb9HfUxvE(1X)z06UoNLCI|3A!4>G)>9LC=ZCtr(Dtwrg+~xACurLq)!C0qwlnwg ztdH~z{V}v!-0x%2H%!Csr_cVo|Q7KW@77eNaB8; z!cLFMFbodgi%OQu)^(zIq3f}}gp|I0UpY-6g=u;D4`7v1iT(BB)e5nef_p^nO zKy4M`|M({Y#_AN~mtC;({L|$oFAI989Hr}wk{UO$eRu~2_-%n!KMse#Z zjavMS2+uEu)Pc{9G{6JDn)tL&&~U$*_@Ynrvi|=wozK#K$5R-e=%KPdKo_gJ>Wazj zt14;;i}@E=!CwtHeq*!BaH&~p;-7w^hmSTVpb|9T_NBNow?$rYN)f<>X|vL0E&leS zdvVmLKQ2kdCW2XQpjVL0Pxw^NPqs@mXQjqBeyR^mPLZDl4*oP^Q-I5uJy7|wa z>IIb^Ma~;1=L5NPKgw@ku(k^?R?J^an_?)fqf22u$FhTb%4d33B!pz{R5P~Rw9!=Z z>js2>MW^veD=#jo5(034m(e2t9Re`FXc_FTf#YZ19J-XJF)a1uv|8lKhKUE{nI~h2 zBqXurOT2(qpeh2-SB0QvD^e9KMmP;!fVxX49ANzU9SiWjId4Lj4%G;7PwhF1Il}Vp zI=^^GG4qwmOE%T5Vz#gXc+Uou^VOg0B{>zyM+-(J+}mO!ikOs2l^>hx3B&kfpX=jI z!@21TOaLPgJ!&M+_(C62 zofT&yJUojJ{7N4ZnT_87G-J&rC39l8q#TDVY7?v-4`f{#o`b-4`vg>q#y%)%Cn5<+ z0gh~QLCDr7fC5aL7jwIxJYNi%D9c}fOMRF#mW&(_EidW9KV3@}E#t3$r8`aS{FATr z*1Clv>A5U(ky$ZPdjSUfc~BV4Z;$5H4l1w6W3I*0vd?e@yu?UbCtLxSp3Ea(>*3@M z+1-Up`L3_^g2*y86%1o;fVgO%65DBMKyj%ZjH~$7BU=i@5>U68mLw^MEY+MBuh)e2GK|u%2PQhWXBzC2k`Rs>%n_F$vHemKGqJV%x5SKC0byeH%gHS^P3oS_Mqf@2E8oFfPPjQ& z@b|vevzvfoO4v^z6|(`*BsNR{G9_>_S-4>*Xo&Y35b z=|k0XeVmi>jYQwKwFmvFQ;E(E5^d+bu}2Xi>LyjhHvSBXIQr&3MFej#ia`2}u?fTn zKvV*|D5rwu+#X9h^?X{QeUUr*(DQDOCkmHeBqpvq(VaAb-KGBSkbkX!O0m%03F#{? zBKv(gY272o2R^EV8Lcrk0Cy6r>2Matg8-a>rpkEeS{`vD3)cfN_#@40G*~QmjtmRv?~OaBnQ(W3hzp#}gCMV0yxQ z8LNDfZ$7LK&3_8%R1cA#t{EVA@-fh@Cc}Z=;~VJAD5Sx_`>M2p60)+k0{{ zu)VLw(+5ZvI%EvmUi3axOkwr-h|>L+HU|9Q54tz1cO-@Ui68aShVPAuS)4})Fy~># z)hP53yc^L#U(IYk%bDHwi!9Cit7?9Ebf@M|{msnB{RFMk?=(KqO@DxkWJ|c#EkO7;kD| zt2^n+sd!0<+(uKp3&?Jg()`*m&=<_+ldhAKf$T=|b6Ijg`A!Z6$>DKSymp*;b2cc% zum4#eXiDWT{;VGjy=d?kz0Q=*PxwVI(=w!!WFQ1G`IW!u6>a2<9k*uUT8wh9#XcUi`n3uokTKg5D@!yliGRdvp6s_cz-hl z+!>Z_D4@Hr92K36JsJ{s!-W7{WZ{y*T855EhD-J@8vk?vuwW2xwILK4=p z;P{?J4_>`y8H&&*#Ik#zV z;ciV#NTXyr*l^EKHBd7&bHe?)P+E&e;x#y7S8Ij~?$&9fse-iQWEW$@?LIy+hA5u^ z%8nC-OLH3ytTL82mw)j;JvXmS4n^xcq|oLo$L(ub@&X}XYgtY^AN;$X9a)&j>{^W3 zMU+9fSr?t}UDCVdnfIi`JcG*DKyEu^XZe@)PQ7LsOYT&1s4YiE5<9?3;a;6=i~0*Y zq`(S(@ORxmx(j97x)rHYk3dR0O;NzXW|gEM2!vMi+&}bS@#!GoK0|i6u*t3l#6vq% z^)^nUXCXoH+5E&m^rDK0YH}*k{jxTE;%>WC0001XQ8!8d|F3(pnM%ZTZGB}y&*9MofP~R|N9R;kh(GHGUh#>JXlL84F)W6mwo{s@+U6VtQUf;b`d-= zb10kFGylbk6n|jO$Ecrj^Num00SV@$@U$Th0qtlo%l7E zF1lj*g%6gyWdgC#6y1XlW2Fh*OBrI2GnETV$9=SP_y_L7%F$!7aPCeTxQ5)V2mn#? z{c7pRdVpW_x1L!6SL|Y!w_IEqW5Ik#RV(-~u^`w=tW)R_{@&kuP}?IJtY&$S@_+u; zbF22s0KxHN_-!!kc^n@-utNSPD5OUf!2gqy|EK!!|8x)jpHcj0KFhcKqi3W(2a(1; zO^r-pNcKGXG4KLEfaZw22zxMv!Z&VftS=$nv#;kAjv>9DDADx{vmKx(ZdS8QxOS&4 zX`J|)1b=ETlWe^L`r^8#r)*hYr7~Vi8jWoXHLp>&_YEwD0=^h_>PkxJ5ejmSMt^5H#j19NX17&4tYmQf4@rEJ z**(T){Sn=r^-~hxZ-(OX=Oq4(*`00vHHlCU#j}2c6v?w&0N(4xY5<(WI=BmKTiymesrw=AXO3LYm(fB4RCQUj!n?*nBlh6 zm1H;qCafC#yQpYvBCLrqGTFFS<;2DHJdW!kSB7HX&B4S1x0b#Th|G=C3?MypJa8XjJ4(=sg{peQct3p z3h?bNB)73Ns+FqD54ZQEMC*AmUCeK_x-&v0h{M53CS8k*>A?eqM{a&%KWCsM3ZH2J zI&>0#x_trD2B9kIf#<=}C2h$N3lzY7|Bul1hNXXIV^wCZQq@SK#8J`;_xQpwKFwX^ z7@yAaUO2{=6MSr=?W&YKiNzj`IE=ClSII~8NuD`UCFl3_bNij6=nI;MVUULW(fsv( z?!4SF7HPB$l$4mgj-Jva-V+-u>(D%or}lSGGmYmb_jhMTCRmj5piCUDVZN$fLG|^_ zH?db(O%3x__X=xZ-kM%P)0wxnSI}hUtBVIkXnqajX4DI>`_hV0F@n?hWXZ9s-eS}x zT)&aIj*frU;PaUHCpdLA#6Q8Lb4vWPft5~;e@(}&WLuQ4x4E;1GzzcL>jj7vlTWm3 z$>}h+g0Fs($(Gid1{hvqp`gp5P%}Sha|c5$inrD{Mbx5n`sQSJ*giu!AD?C6r@XD> z`QF*+)se^YDar2P5$kdI$ecqC&2easV|I*!qd-d|Md$>>bGc$*Xoc`bX**H+s`kQ5 zKMAuO`9pq05FSEM`rgSLju3(u<`SW&nM(r|HSUJn>G+0%)wsXY2h_JMa zV*O*@<$ZXy!bLwTS;31mcX32{=XZ4*PWQ!h=~}5|U7Wm_b}9-~dxF!Xw`=#RUNfS7 zwc$lN`E-l4JaC)==i~4-*SH+`VfUH%pkFa}H)kQBzgX0dKbyazx#yHe5Mr$4Dd$jT zsbdI6@msCx_0hJKtGZV&Z^znoE}xs?_66X`U&UfsUkERYSndX|y>KyJO(?-73;jS$?U!-1f?$~JKiOn^QQyXS8?*%e!5SC2}oY~AuF63`J+{LDg zxY_A0>VL6F(8dor+-b?O99FW4H#?E!5`MbVojvqYk!0|yvE>y*D~FMQbm$|1$VjJS&=KL zCuyH3dIc^NS}R%TD!kc1Nb`vZr!ETDHB?P%Vf11^&v3HPW@*=`;F(5pm`sWo&vkO# zLLnf?)H6RG5>Vw;cXW2O+k{0!aI1wM-r)8{{Pdy#1PknlXc23@5%TG~NzSDPDL8Uu z!J9FT;(TvV0HNetl)O1_C6S3rQp|H3z68~n#NAHuw2REU1HYCm;}dmvM)h_XD)y3h z;t-kx=rmBZ@;EOnP0 zUZl2GZUh$B(K~w9-H7$xA8SR~C}_q9jzsD~B+hz><`73i^I!NGnZbNQouz1v-yV#Q+vEd4Q&oG*8~edhef`O9v1-my2(JS-vR^DvP4!NH`B86ZzDofe!@Ez{-xJF?xc5Rh!D2-@H{$u>E~cwiiAv_kxeeR$ujdZgYL{cJc%IIP`J*uT44U7Sz+8tXJ+6L@DKv?_vbrN zXtK?UL-#6{k<9l6-RUMf{}O*9aDO46U8t>v^OvbL*mb7h-2>S)xbks;f(uSC=+>@8 zIn9A14Cd6yw3oJbxZ!6hZt1WBkW}Wt>jxryXxSR(^r8+eL>o8NEX{{ZWt%0~Tv+7t z!Q7QR*-v)BebV6@s`G42)WZ*(^Z2&(U2hx zdYxHDI@FM*Wn05T;lDMZ%atD+4UZ=%p>X7pjj`BLm9gx6J}T9n>9ZD~=C(rla)Gr7 z9~s4bZmK)oQ(}!Pp2@*@>HvOWsyh@JBrTn7c=$koj)$NC+Rg!^Y7HZQUa3*ysCA7( z5~AveB+w|iYgl?Y7^&#NEt+ylRr4`S!&3;N>qoJ`P%woqQs=UXwX?}Dj~1y^<&9!N zJd%)DWe}kxDZ>?wkvR8`07v$bhKE7_QTR1dy`M=BOp}?c7mp_Nx}NonK|14|O}N?x z>ToQ2j#PhH<75XUk5|qLQzoD%Fs!NQa20>JpJPbwL<$mP8xJZ-WgU4s#v`xw4Yf2I z?@Dt|7^CmYFf5}hX5LtorSqm4?%;^L0Y>QiN0V>DKl=@d`5Po(+VD5{md(Qs#~d5F znr|sefnoLx_qfR7W7zqHIk0{G?-eCoMM+``c*NVa^z z*rH$;gXLL-p@N?a3_9$u20&){*S}_L)VgJ*YL!tRZS$DOQ%&pLG-+MTPeJ zwByF29G$n#bdS?nCfisv(vDy@lYZ>JYoo7leL#GS%c#%u$xkcQ(DY2A2(ov>lSvdgwaBrbSWo5j^zhlbvHXsD4g=$o(oSb zobt_{3+L`Gea+o^k~Xz*^7N*h$*rwTHN0)SC%|tS?>TPwKjS?nb0$kW(JcMuSIMF+aB2la2H5>GX9H=M;A`zpvVpYwF-{;E!#o zqPlr+D9yBtr{hmXr%_T}OFf>PXomW;MR*SY!f9KLXG>rRv*($rTWG~(wtP7hvJ3e2 zf24Z(mmhmHQz8H5W6#XwA{jNPm`^L~7vjr4@pw!nJo<^Jz%+nw`@}QIG?2giiKnFB zAOLTxS~mZZlwlgoFX>A6rL)iw)0CD;cnn}k_XWaV{hapWMs(z{v@mb@B`MWZ$`}5U zG&8BpG-dZcpLq1kE!P)?ZM(f^c)wY=+wzeYj*3Xty6a=FDXV|DdIs~qF1_G5-yo~m zRm}P(%(c?rf`6OTq`*6j=jOp<(YrEDF3jk}u!YSW^L`+$zp!MG4^?txlX{5nHTy!5 z4`mE|+!!%dn9?yD4Curx@v*e<^L@eqAHZbNQrmDoZ4PklnF4D%@e{ta9I&JlzsrZ? z<8$><0f#pZxT_E`LuqRP%Q^8;iDwQRu$qg=FQNdCapGebQGgAd_!v$UzEvM1hyo1h zM9fH{@V)Ut1P-f@Q6S)i9i2#4UIq%zAC0eakZ}HFd{vYkhtHp5pP=G|ah=RKl*s&Q zd{q(|*xAXrVMGS@b@FRCSaHI@PJIy-7}kZiS$yW*=6=4vO}qc@@2mD^r8zKX3&kjO zGPNsKU=mZePBy3M%H7AN`z|oqZICE}BjgO`p-f+PPFT&RaBs%6Qe!p++JGja7}FkOB=?wWcpGg!xgz|*lSi*!zIuNkR;VE zwu&Q>F%{NZ0-RV4Bk^k7*L5j#kHBb}r-@=L2FFKj46>6ldnon{3f+$dPpF?Om~A{t zqc@^pzD3ext%Ai8vrnWc9g7X{2Fg?o=3BzKV=Wdku}`fe^{76{1RXTBYVFi%>xKbj zi!p|;i7o4}b*z^k4R!0Ve@#7_Uy|hu!F@3P_{`PK{33i>T3Ff?5yHRE@>%UuQF<24 zwnlQkbhIxu1bZ#WH%`?KZy$DwWd>O`brW&ks#Ig)C!8In~Va&9amlyhc$?K@`Rx|&4 z`t+JZ=kX77eZk}nirBxnDbMFk*%;4%J}=Mq`Arvy?EIc?k1qpKo{2~ZO;$7W-FKMsIp&Ogla0ZgPy z$f<6rXI7ZuF#lC?DyoF@Ve&4jmy~f0%!?|0p(K`ZEk7aOmu|XF)FZG(3C#6MV77wN z;2Zdj`MyCgu%V`jSZ_jD2xc`xOmRt64LH3arQVxm3nlPty@j~B)sS8z0|_sTZVcgt z-HosZfVqtlUMn_dVlO5n7<)02VEfK+On9*k6DBkFDB-1DSX_9m_aS>=7vEIi^XFmj zMS|Nh9~l0Q@bu+tYM73F7=<<0qIK5J-~C~M&t)pqXe&b-w=x!j4U0Iwz{y}WoD8P4Z+CP?xONrx@xBARyvXNGJt!?n=2dqssb7XW zJZ60vTo%6~dn2+2jnjhBjDBX;SE<=v!!#n#d*X3lda#lCUYAs2Avki{-!wLc{m{fdU zph;nck(kv33mP)ih=noVSAA1izeWMJZ=^7LzC{)Q$KzQ%%CIILV*4IKG#*o;?{Kfg zVAuBpH8_D!;#Kg#=%yDRKk@PsjE`TW4VLX!Rr+te2r|$AdXZz=@2WFU7VK~2g=V}g z?N3C@3qCAnSOtU!yqFA;O^&*6#GWxr9QorN<}gc~W`4!6Va%7rKO`P43MpDq&OH5O ze5`UT*dIVvGRs^QMHx+SxU>}JtjuSV_+KNe3nSQCEPrSa53qAE6-S0J0xE zCeBKJ*!NV*wNpjV?31Qg7{+X{?h&(3hH4j}rZS0mmcsdF%TtRzR~fs&?UVV+Ofmbw zU`H&S1voK?*=HmzovB59>_A^AwOIN-20!73nKetgNcVeg2Md<)WdnVI$bfh>9%o+x zpdj-PjEBkjYRwAf8x#+$T>%$~YmQ;w!SS%kI4`aN_I`*&_xi$SSz_%nDsTgxJM~f| zkD2sEnXSw`FhUz0f4NGm*gKDAGau}MdJBLyR5cj%LY1n)hN%V{$vh)u$Hl~hX(N?U z*a$!;W9e+8(UzSnSmqdD%+DR4r_S?oQ`jY`;>h`VWK*yamKX;vvQ^|r=Xo~~G)Az99xDOy(aEW9`M98TISP>`q# zJa8bz@7P%Jo;kf*6M)#`)c_jKv=d?ptuO^*uDLQb98u8@!w+*HI=#~NF$}v2l=vZSFIM7`ZPNCl_o5u28wLOSm$Yy9K!&SJAi;$l=;#yt$5DRZgZ z(E&{JGy-hTDBhpNhy6KPuLbYVE8bsF!}3MRe922l=GiAEGs&Z{Bev~V{dqw4XUReS zZH2Gc{IVR(<6lvO`PCzJ)oa87w3@KSp~oLl*B*x)|C_RCJB)Ey!P}_Naz3}n=jT@q z_1R7D@NGkV<)-)e-b!Dl>3#lwr7y>s@`0*$%S0AF#0x5YLvlXqLpbHXMygsi{9}Gf zrEgdoOmAqAi&G*F@?j9Leu{FlK9dD}P6gz4e1Ra>mtq3ID9WcJf8ZB-H$N0QnH!N+$;D=NA z7SiDb`iaDm{z$CZ2(ya;2l<0}4GY$V>9rf%#!@(`TKsrBF$$SSsvn{nFE8Sw;)z@7+?e)$I5CUi z15ZBzdZYnCK?EsF^bj$fswyEfO@)*BsjV>M@TVJ)c_V`8Whi>s8f7YaS&Cjo1P0+C z7|20DqL|grs&9o8QA9cOl7!D6G#NU}n~!HIqyZlu9*tH_Yyqwhsq{h#{T8Xv(V^mA z1Y3ZMshY)XFuI{$&K)3ICqjZ*(|D2SlDGqB)WtiqSw~8-s*jRGjq;KfY1F0?&IepIkUVo z^Ulosoq6Z|Ju?vJ9NlXn)-i!l=NuV`_MeVo7R*R@R#VP`rnCo4l{!?xX=xABIUv+A zEg7AeX(q2`0m9hm$@)aAl(^R<&8|6+FoU9YSF6)V}Vp< zFF;Gnr(0yQ5ShfzKvm(POs#`qUV^RKu`!Y@nZL-EOlItM@6&-8(8|u#=T7uWC!KYS z+(S+P6k6i$aj8uyZ&@Z5FwF}s>aFN(T|LS3&ppR};>da~F_KSCV-ds0BMb`*3z44I$80KK=w@x00rI^4T>n=99 zmVy{aS}Jyt{%Vp}l(EsIvif3|3RZV7aj8JyKCSXrP)736ikTAZ+E3i>_pP&QN3o*qP}tM2lb74 zoMJ!9L|>EX=}o5BS6>0sKHC%--KKiSg&wxm8+=5Xr=h5p--o( zJNS%5d)77gbFR6ccg_8R_G{7HFPie?hhBE&5$#L)E4IyFvqMJkb@-M2!nQedE2hnV zg*LAp>6IjYeT+8G`AxDAn^ov{t^jYk0zk1Mqoeox%rtrC%%0ZVa+(VN0oV07T_XFB zaNFHff`39G{I_gn)Q(!cZl3w3Iy+c%vMPI9H&63Q1AorcPk3Hz;yYIS)vFtpzH5tg zWS*d5-@iDiqU!gaeteo&(dVxwTU}G<6&?3J@-6wmrkwGisjWcyNBYD%udL6<2rK$T zx72xl#$gxqDZbQtW#b|E5TuEe2deV%@*q zi-v+#P=9EeM1HREjRI%yNRz&NpXf{ zmZWc(;WR@nMp9+LPD8j0*}P(i`wM}HaSyeBvxm77;$3n$(in82eznmX7##s`c~r1; z3K@th9+`!=N_~E#=Z&nEtZGEhB9u&Ll?w?-s<@%iwrxwt=+mZqB@<50>bZP%74*ti z8UvN3=+3Hi917E$!*~apfp6<7I$qbz@d`%-CrBwKS`~x266XeNSS))wAyx>A5E-I^ zlM$=`6n$uxS6OgMy6&gKyS!G1+q|+^o%9oopIebdM{N^UP9W(}gBo;wn^)B}10R{Q zPW50cFcW%+u4XTgsmkxr6I#5oad)cpM8J-b(^@+=iBZPMs^mvK0++!2uC-;0gp5^X zKi1n@@Ja3`dN&do-qkZ+M^i_0gNcWQ^Wa@-mjFNVxXcL-1oUqxjY)eR?`Xiwt_p5MLA{H6B(f4`OG%y(kfasT;Y*T9 z*1^PVy$W4w(o^2Idt8~kFwx_}$Ys4Q6bwR7B7^e@m+RZwy&*F>IGYp7ubm| zw$!v)g}3&OSa@ach;o-#>w*qgC|qOuO2FTyPwDWYt=GEVAiL41(01EGk?ZA=7yFPU z?wqO64X!udXbTv3n@}mA-h9@^8!18JlC?c|UYTy4?;WXr#t^Sd`3Fp`EtZ zdUx2A>z7|(wFP+dj@)Tuk4(k(ew^-8$uTSlDTm7LlFQ9vO~1SJYjeDc#81V0mw3y} zRRwp$9s8M7iR(=+0qF_Zce@J2`}{qK7rIv-o{g$#kJU<~rUUcMOdzyZo`sD#K+HB= z_WkMS=mA___+VB%YKJ6z%&;ahefOE6BtF+0-jeeuszY8dF@4E?%w0QL`Hvsj93r$1 z?YE8QKXGJeD~v%(4!YJlWLhgx`XrLW2zErf8pZZgC|b_b$rh|u(PwP`>IJrvXRS4U zDgk-JsIF_9kM&mDYy9Wa1%cJUoVIv#%{*27f+U;}oVm7@tzz2nohtmI%`$mrVdy2> z8N8Qm^QKI~(B$6FlU*Jdu&1c0;49K1uexXCwcd$&ulGu%wqXWR@qcktDtLB+zeGCW zH&8!4CdcIvVf3o6u6bS{FLhgZuP*tGerti}&66ph_gkAgep@RxDe~`G(pgsQ7Iwp_CV}loPN)&7yY}1UgdHBWiQ>a2nHnYC6iIve@*{XpM<~p|Lz%YPFvSm-rU4Gcl1EfTLCc&k3$yR)QM%&EA5E{g>PH$j^*ptZ?j&} zKc~G~*KD_*{yS+;B#}(?UF!>h&)UW7SFd%6M*b3*ftBAC=+B93T|WP1yv#V`@+o}J zc$v~TukibF+Wd;9PM2%J2gcpHVZAvH3rh13jR#Bsok!#&r-6E7zlsyEFroZR%!eQ9df4;2b6&=7tT}D%QcI#_ zRE6DHugDCswZ5sb>oxCVz4M3pMFm*-G(2^Kn>S9M|6*q0pz+wT!3_R(@3aYcbqZsd zQ=-aUHP&xY<&*WU7c!{>F|%_SmDlOwmom#* z>XC9T)-5GvGc1L$cxjequv}?oW-}y4Q;!WtLZ{jo$Dd|m;O*M2P>z_XH@}p5Vn&PJ z`%>nh;jQ*vP_}KyTn!fS@%dPo&c@25F)SLdCSe)U-sO%1(b0apeXEakNNJKFoW1X0 zG&CXcMoD(Y)JmnEtbDpMI$*?rHzs^C;fo1H6ThC2H?eHu2@^+8Y?!!k;ynWg5B_@4 zfq|D!Tok{1)HmbrjcBQUuzJ(zoSF}7-mPhk4;$54^Y0peA0SI4eA`EO$j$Hm88cJjor6USCf3J%Lp3@aX1ZvG!KZ1}JV zlcrAk%ht%57;~N&cTvI;|p1br&a!Dz|ME>do%pu zE+r=FcUM&2)35Tb8$OJb?DPHgn=)|%VE2XE&y57i*XVn8`DGdB>lb(VRT*pbNAhQ# z4)2ENdOcz{TpM)TZa+5m0@WOEoY?`xx{iix#Jn!)P^A~TATd2p1sS{aei!N6cl#As z;XJV0FPCGj(Ro^yU$lO+^1h`%-R&19aP*Rd)iuXkYERp|cI7!Mu*2cn)fcLQ zOOZSl^shI;SlIWztxoOfA*WB|;cO)r4p%;oR7$$)>Qw}XDk0r z;54PAPea{|R#kwrlu{n@J*N;SDkVK2iaM=fKK4yYd!b+v9I%v((N;SLCnkq++EU5~ zI+uJLxs-In(!b!ElrsTcFy3Cn+fqL8Xi?#7({2pFDso*9cXLBSn~H4j;WMMD5g!|_ zPy3iwh}@9&kR54|@r^xvTHD}}xGC+^2*I{0z(I-0qMBV(Bi~7TOhaK|r}W*lPy6Xj z9au0e*pc?CgGsycblL;Dq1rjk9V-02w4Z!o41eF5tD}`6HlD2_KS)P7eFmgXD*u+W zPgA2RxHau;X_$w5zAf$1+}hfv3VxXOXlO=3@^4RjG~&>xo#;ez>2`aQI&qJmo46w# zN5bOfxU!-kEJ460_kDf2e3z z(ko#SlVdDum3LRtH|44PpZ4~vF)^dNj`mgl?%tlGY}B6}?W@Y~#*H-0Yl}~dHcW47 zF%@E*;!*?d(YN30S7qL-PStnZ>sOS;>+uR;laW}hZSgrRwX^5P8&uI={nfp`KN3d> zOQrS-ZBa${AH#cr8uWm!+v5+!@lz}I_>~zC>8tnnWwrZk+?k_C#oIS5QQ_{id*+5! zF!4>h>sMZ&!jGigGgmKD10L0X+2dE?oZ;s9jMkYA=APt-8t}L-+v`_F_9LXNy~aQV ze^tK&x@|8=^@Lu%7wkKzuSF~zO0@@n5>MLHVbJ)L6>a1{t?KYj-O|)?lMJhc&m^59 zINxqQemrYq`p-!awm{f!zC$$|&5DXVZ;xWKy#y*2RrsPiE2tgCibGCVr@}9}GnI~C z)7CC;WHm4A`S z=MNnGM$b%EAeXr+{41A>%cKZWnAZ;nz4kCPFj8hrO`2C@>BsvW4o8BSjJt6otq;8^ zM?qu0k7K6X@Q%{EgnxfT!hcXYqc9Y$fNo~ZD%c1>I%Dbt54`}!OeDOw^d0y6h0ES{ zwfAQ^ojDb&-ZZ8vfP_Z;WE>F*kn-L=x@Zw-Xwv&{$zkz%P|_G5Y*~RrncvfUH{=vY zA)-mi%+{Fm+m!b{PUy%g>;n~z@;}sPKHx_)KGI)5;1_ujC}vX8+dFDIRMjVX=L3HK zj89F3!C}Z_des^PGOpIp3F3xL#h**u80P!22mN>gx)>Gx0tbH`887q?R}24ieaKwC zeM-9lfAq^#-KKCtHJao&F z#j@-FdC(_d-zP78i~(KS$S$;T@e+%#pY|i5c|L7*;ByNWx0BV@ws^z3 z<**+?JXrvTYCMKii;8s^6RAWAyv1xRwWXm7mLk|I%fPlt#)KwyUpeK7D~tb7J_Re} ze)|0%_mfkJ*kV9>GG5U8%Y9Ut<8XR3W%huK1{-Ib${C30_`YMJ4?^_p!5PSChb%S) zhsfn8q%XI(6dG!5+|__#`u%-=)j&w>RNjeb4cUg?Zs9q?l~`8&5gHw-tGj(K7vd1#kmboSxZh3 zOBrKE+bq*+WnSTr&ww3G4{tMDDuZ%roc^rakJUgeB{o@oCyNlw0CalU(=#+n2GRD@_E`Bh3ZAL~FGn4WeG4X9}+;T80j@3!?JYYj7 z=&DRlFuQC;psI2OsGCtc8-w$Sv(d8pq(}S{#}IRQU^CNyc5#aNZj1 z!nJB;=W-SPhAokh7^irt$eGD}+=V#j7CuRgK(M}S10c27cNBx|<6_UhC(Pmtv27Xgt^{79faTWTY9XDj2 zHG4y+J>#mRQ#wqKZX`T5O4aN&uH)d%_k7!P%GT;nAN5Nc)*<~O9B6f{hTUNA#Pu-g zl=1N@a^aEf6y2z2J?4AyixJ&6Qsj~&YdHH-1PUXt-U?ZqDoW^2#`^w{%X(DcoKCE| zHgsM93uQ!>XC4pT<%k^JtY1S0*n0`rL=)cD9v8Vwf>$D5->c*~TC-w}3SDi*J<)9v zwPS%yAY``{OrNlpAW6^-`^=|G6L~yB2WX7VRAMDug`xUoHnQpbiQ1)%9 zbb>#GfAn@U`YaITTaS^|wNda6L@By6H2`6on)UXn!%;Xtaw*lQ(x2d`7_p_t2+V2-l+9OYXa;T9J8tW)~ zk(iJllFa)hF+2w5K%oav+P)9U*ko+C9@0|}_{DSgS-BC`s<9q5SDsT@x9@goj8S?&Ps%80Xq9{dV^1M}v5@Uumn!^>X}~M1q1lzmYwTG)>j}T8_<2{Gn0CKl z=^lI$1+08YZ+gP-x9DYe3wHZhWsaLFdgbUW&=#RrZ5Jte%~nm%5=c}1!rWbIc*UE{ zFZEYX_T2%LI6sh1huC2`EeKw}Eq-o~p!=70YYtxLq|h>&&DwzXif|^3v+am)+>tEjmM(34FDGn?9?^!#m#ZqIm_NWO5|fx5D7g$0NuYFs z!of$DNfi#U8337W>l1578DO4(T%?%T@O3E6^yP4(Vb=Ozp0?pgGjyVq7sVaXqqtDc z#CsGMVwsVyxHv?tx<_$Gp}5&K2$KODqdOFMs_*DPJTcDBRL8hpcv7Ha^&EV{Sz8Ak z;CAx{F=R0Wy(hb5$Ep0WPUA4-Vx#AU4$sUy$En=$$#dGUfkJQsa;Tc?>^R(n*a-lo&HL7peG0Z60u88uzkKI>PHFPjmN`6spwnc3E1 zKW@p^9V-UHPOY@bgqg8roB8fFWzf1a)}GN>r3RgAQGg|dE&-nu~+Vs88`9sFe3dpLpUA?ur z4_a1rIV@9bDgE|TY-2fd@wv-4 zHLaKD0N?FTx5$C3cqs~xZid4RVuvDIn1gwPU1Slxn)fn z&TlxUOxNLrHZWeBKsti(Dphc%3%2)zw9j%LGbL?E1x==ACAv!GElIjhN2tgJP3UYm z@|PtYn7<+>gn~A#p#`q9oeMJ*q6AqXc&tdeW$hVht#oc#c}DOzoztv4Blz5; z8>`N6LO^J;k|k$2&vQ;$bil=(&S{pLal@L*_EV~Lwwc>l?We6w@Jr6#`P9FrsjvPP42TyB1cb4)=V$6 ziMN>?s#V3eb(oNzT;5L$0>j51X^lmHf)pN(W(UR z(uZQjTzbzTnm0gsdmc$odupq-mzy0r`L(%rhee`(3mpJ8J}c}vAy=5Bb0?vbq=@fF}+w__%@G;WN~ zteq$Go;_}xMI^Boar5t!Bw?1&5N~b8R-*R@%^57Pm3+YNhZuZNGI~gF>t9-YZg3wQ zdENFBdq`CDVYi*5F{#3`wph&NJd!LCTH#S#6Md|AtZ63JJA))f;v9G4xGWa-E`hslUsb7D+Pqa_Pi$P3Q_f?fAy1r z%T-srv@^846O~tbiPEimN@Lwsx0e1f+WpmirGW!G>Wj1V(mr{S*3GK;B}r-V(R&XE zUq+^RKQ|@VY7d1Ez5=h%tEd)yu$cg;f1#WGg0jdj-S(7k*wzUBD%f2! zC2(Fw0<(IQsA!8cwM@h1-34|x);s$OSF?D{x>AxBd*7m~Z0U}O8@f7(wWGz#zout! zQ>RTSw9RFFtt}U}hBW_mR~*dxbH)SJcfJDEC.G MAC.Depth diff --git a/BIN/MORE.S.txt b/BIN/MORE.S.txt index 8e7e54d6..93e1858d 100644 --- a/BIN/MORE.S.txt +++ b/BIN/MORE.S.txt @@ -19,6 +19,16 @@ PG.SIZE .EQ 23 ZS.START ZPPTR1 .BS 2 ZPBufPtr .BS 2 +ArgCount .BS 1 +hFile .BS 1 +LineCount .BS 1 +LineNum .BS 2 +bHelp .BS 1 +bLineNum .BS 1 +bPage .BS 1 +bEscCodes .BS 1 +ArgIndex .BS 1 +hBuf .BS 1 ZS.END .ED *-------------------------------------- @@ -32,7 +42,7 @@ CS.START cld .DA #0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize - .DA #16 Stack Size + .DA #64 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- @@ -54,7 +64,8 @@ CS.INIT clc rts *-------------------------------------- CS.RUN -.1 >INC.G ArgCount +.1 inc ArgCount + lda ArgCount >SYSCALL ArgV bcs .7 @@ -86,7 +97,7 @@ CS.RUN sta (pData),y bra .1 -.4 >LDA.G hFile +.4 lda hFile bne .99 >LDYA ZPPtr1 @@ -95,13 +106,14 @@ CS.RUN bra .1 scan for any other args -.7 >LDA.G bHelp +.7 lda bHelp beq .8 + .71 jsr .99 lda #0 rts -.8 >LDA.G hFile +.8 lda hFile bne .80 ldy #S.PS.hStdIn @@ -120,8 +132,7 @@ CS.RUN bcs .9 >STYA ZPBufPtr - txa - >STA.G hBuf + stx hBuf >PUSHBI 0 >LDYA L.MSG.Init @@ -130,11 +141,13 @@ CS.RUN CS.RUN.LOOP jsr CS.RUN.GETLINE bcs .9 -.1 >INCW.G LineNum +.1 inc LineNum + bne .11 + inc LineNum+1 - >LDA.G LineCount +.11 lda LineCount bne .2 - >LDA.G bPage + lda bPage beq .2 lda #C.FF @@ -142,11 +155,11 @@ CS.RUN.LOOP jsr CS.RUN.GETLINE .2 jsr CS.RUN.PRINT - >INC.G LineCount + inc LineCount + lda LineCount cmp #PG.SIZE bne CS.RUN.LOOP - lda #0 - sta (pData),y + stz LineCount jsr CS.RUN.PAUSE bcc CS.RUN.LOOP @@ -167,7 +180,7 @@ CS.RUN.OPEN pha pla >SYSCALL FOpen bcs .9 - >STA.G hFile + sta hFile .9 rts *-------------------------------------- @@ -203,9 +216,11 @@ CS.RUN.PAUSE >PUSHBI 0 bra .90 -.5 >INCW.G LineNum - - jsr CS.RUN.PRINT +.5 inc LineNum + bne .6 + inc LineNum+1 + +.6 jsr CS.RUN.PRINT bra CS.RUN.PAUSE @@ -222,7 +237,7 @@ CS.RUN.ERASE >PUSHBI 0 >SYSCALL fprintf rts *-------------------------------------- -CS.RUN.GETC >LDA.G hFILE +CS.RUN.GETC lda hFILE bne .1 ldy #S.PS.hStdErr @@ -235,7 +250,7 @@ CS.RUN.GETC >LDA.G hFILE *-------------------------------------- CS.RUN.GETLINE >PUSHWI 256 >PUSHW ZPBufPtr - >LDA.G hFile + lda hFile bne .1 ldy #S.PS.hStdIn @@ -244,16 +259,16 @@ CS.RUN.GETLINE >PUSHWI 256 .1 >SYSCALL fgets rts *-------------------------------------- -CS.RUN.PRINT >LDA.G bLineNum +CS.RUN.PRINT lda bLineNum bpl .1 - >PUSHW.G LineNum + >PUSHW LineNum >PUSHBI 2 >LDYA L.MSG.NUMLINE >SYSCALL printf bcs .9 -.1 >LDA.G bEscCodes +.1 lda bEscCodes bmi .2 >LDYA ZPBufPtr @@ -270,12 +285,12 @@ CS.RUN.PRINT >LDA.G bLineNum >SYSCALL printf .9 rts *-------------------------------------- -CS.QUIT >LDA.G hBuf +CS.QUIT lda hBuf beq .1 >SYSCALL FreeMem -.1 >LDA.G hFILE +.1 lda hFILE beq .2 >SYSCALL FClose @@ -306,16 +321,6 @@ MSG.PauseErase .AZ "\r\e[2K" .DUMMY .OR 0 DS.START -ArgCount .BS 1 -hFile .BS 1 -LineCount .BS 1 -LineNum .BS 2 -bHelp .BS 1 -bLineNum .BS 1 -bPage .BS 1 -bEscCodes .BS 1 -ArgIndex .BS 1 -hBuf .BS 1 DS.END .ED *-------------------------------------- diff --git a/BIN/SH.S.IO.txt b/BIN/SH.S.IO.txt index d7187045..89209916 100644 --- a/BIN/SH.S.IO.txt +++ b/BIN/SH.S.IO.txt @@ -59,7 +59,7 @@ IO.Reset.In >LDA.G IO.hIn .8 clc IO.Reset.In.RTS rts *-------------------------------------- -IO.Pipe.Out >LDYAI 256 +IO.Pipe.Out >LDYAI 512 >SYSCALL pipe bcs IO.Reset.In.RTS >STA.G IO.hPipe diff --git a/BIN/SH.S.txt b/BIN/SH.S.txt index 1a4d45e8..bd1d4ee5 100644 --- a/BIN/SH.S.txt +++ b/BIN/SH.S.txt @@ -109,6 +109,7 @@ CS.START cld *-------------------------------------- L.MSG.GREETINGS .DA MSG.GREETINGS L.MSG.PROMPT .DA MSG.PROMPT +L.MSG.PROMPTCRLF .DA MSG.PROMPTCRLF L.MSG.TRACE .DA MSG.TRACE L.MSG.ECHOCRLF .DA MSG.ECHOCRLF L.MSG.BATCHERR .DA MSG.BATCHERR @@ -339,7 +340,7 @@ CS.RUN.INTERACTIVE bpl .1 >PUSHBI 0 - >LDYA L.MSG.ECHOCRLF + >LDYA L.MSG.PROMPTCRLF >SYSCALL printf bcs .9 @@ -581,7 +582,8 @@ ToUpperCase cmp #'a' CS.END *-------------------------------------- MSG.GREETINGS .AZ "\r\nA2osX-SH %d.%d\r\n\r\n" -MSG.PROMPT .AZ "\e[7h$ " +MSG.PROMPT .AZ "\e[7h$ " Enable Line Wrap +MSG.PROMPTCRLF .AZ "\e[7l\r\n" Disable Line Wrap MSG.TRACE .AZ ">%s\r\n" MSG.BATCHERR .AZ "^\r\nLine #%D:" MSG.ERROR .AS "[$%h]:%S." diff --git a/DRV/LANCEGS.DRV.S.txt b/DRV/LANCEGS.DRV.S.txt index 74fc84bc..7f4bf66f 100644 --- a/DRV/LANCEGS.DRV.S.txt +++ b/DRV/LANCEGS.DRV.S.txt @@ -334,7 +334,7 @@ READ php lda L91C96.2.IST,x and #L91C96.2.IST.RCV bne .1 - lda #MLI.E.EOF + lda #E.NODATA .9 plp sec @@ -373,10 +373,10 @@ READ php ply - >SYSCALL getmem + >SYSCALL2 getmem bcs .9 >STYA ZPBufPtr - stx .8+1 + phx phy ldy #S.IOCTL.BUFPTR+1 @@ -415,7 +415,7 @@ READ php .4 lda #L91C96.2.MMUCR.REMREL sta L91C96.2.MMUCR,x -.8 lda #$ff hMem +.8 pla hMem plp clc @@ -464,7 +464,7 @@ WRITE php dey bne .2 - lda #MLI.E.EOF + lda #E.NODATA .9 plp sec diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index 8e9f00c4..1b205205 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -374,7 +374,7 @@ READ php and /PP.RxEvent.RxOK+PP.RxEvent.IA+PP.RxEvent.Brdcast+PP.RxEvent.Runt bne .1 - lda #MLI.E.EOF + lda #E.NODATA .9 plp sec @@ -400,7 +400,7 @@ READ php pla - >SYSCALL getmem + >SYSCALL2 getmem bcs .9 >STYA ZPBufPtr @@ -488,7 +488,7 @@ WRITE php dey bne .1 -.9 lda #MLI.E.EOF +.9 lda #E.NODATA plp sec diff --git a/DRV/X.U2.DRV.S.txt b/DRV/X.U2.DRV.S.txt index f8673453..92b3f36d 100644 --- a/DRV/X.U2.DRV.S.txt +++ b/DRV/X.U2.DRV.S.txt @@ -387,7 +387,7 @@ READ php ora W5100.DR,x LO bne .1 - lda #MLI.E.EOF + lda #E.NODATA .9 plp sec @@ -432,11 +432,11 @@ READ php sty RXTX.Size .FIN - >SYSCALL getmem + >SYSCALL2 getmem bcs .9 >STYA ZPBufPtr - stx .8+1 + phx phy ldy #S.IOCTL.BUFPTR+1 @@ -529,7 +529,7 @@ READ php lda #W5100.AR.S0.CR.RCVD sta W5100.DR,x -.8 lda #$ff SELF MODIFIED hMem + pla hMem plp clc @@ -569,7 +569,7 @@ WRITE php sbc RXTX.Size+1 bcs WRITE.1 - lda #MLI.E.EOF + lda #E.NODATA plp sec diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 98989454..51a95dea 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -6,7 +6,7 @@ K.ENV.SIZE .EQ 256 *-------------------------------------- K.MEM.ALIGN .EQ 16 K.MEM.nALIGNm1 .EQ $F0 -*K.MEM.ALIGN .EQ 64 +*K.MEM.ALIGN .EQ 64 *K.MEM.nALIGNm1 .EQ $C0 *-------------------------------------- K.IRQDEV.MAX .EQ 4 @@ -94,6 +94,8 @@ A2osX.SYSCALL2 .EQ $E200 * Kernel ERROR CODES : $60->$7F * Lib ERROR CODES : $80->$BF *-------------------------------------- +E.NODATA .EQ $FF No Data +*-------------------------------------- E.OOM .EQ $7F Out Of Memory Error E.OOH .EQ $7E Out Of Handle Error E.INVH .EQ $7D Invalid Handle @@ -110,7 +112,7 @@ E.INUM .EQ $73 Invalid Numerical E.NOKEY .EQ $6F Undefined Key E.DUPKEY .EQ $6E Duplicate Key -E.NODATA .EQ $6D No Data +E.EMPTYKEY .EQ $6D No Data for this key E.DATALEN .EQ $6C Data Length Mismatch E.IPWDDB .EQ $68 Invalid PWD database @@ -129,6 +131,8 @@ C.VT .EQ 11 C.FF .EQ 12 C.CR .EQ 13 C.FS .EQ 21 +C.S0 .EQ 24 +C.S1 .EQ 25 C.ESC .EQ 27 C.SPACE .EQ 32 C.COLON .EQ 58 diff --git a/INC/NET.TELNET.I.txt b/INC/NET.TELNET.I.txt index 3603d6e1..e6af6b76 100644 --- a/INC/NET.TELNET.I.txt +++ b/INC/NET.TELNET.I.txt @@ -3,10 +3,12 @@ PREFIX AUTO 4,1 *-------------------------------------- * https://android.googlesource.com/platform/prebuilts/gcc/linux-x86/host/x86_64-linux-glibc2.7-4.6/+/jb-dev/sysroot/usr/include/arpa/telnet.h +* https://web.maths.unsw.edu.au/~lafaye/CCM/internet/telnet.htm *-------------------------------------- TCP.PORT.TELNET .EQ 23 *-------------------------------------- SE .EQ 240 $F0 +DM .EQ 242 $F2 SB .EQ 250 $FA SB.IS .EQ 0 SB.SEND .EQ 1 diff --git a/LIB/LIBCRYPT.S.txt b/LIB/LIBCRYPT.S.txt index 859390c1..cd73174a 100644 --- a/LIB/LIBCRYPT.S.txt +++ b/LIB/LIBCRYPT.S.txt @@ -1,6 +1,5 @@ NEW -PREFIX -AUTO 4,1 + AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 97f59e89..56f03059 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -404,9 +404,8 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen jsr TCP.OUT.SendOptA -.8 lda #0 - tay eof=true, exit with CC,Y,A = 0 - clc +.8 lda #E.NODATA + sec .99 rts *-------------------------------------- * In: @@ -552,9 +551,8 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen bcs SKT.AddDataToSktOut - lda #0 Not enough room in Q,no data transfered - tay exit with CC,Y,A = 0 - clc + lda #E.NODATA Not enough room in Q,no data transfered + sec .99 rts *-------------------------------------- * Src : ZPDataInPtr/ZPDataInLen diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 2352e97f..96fc524a 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -178,7 +178,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE >LDYA BIN.CmdLine ldx #SYS.LoadFile - jsr K.SYSCALL.GoB BANK1!!! + jsr K.SYSCALL2.BANK BANK1!!! bcs BIN.Load.Cleanup.RTS Error Loading file stx BIN.hMem save hMem @@ -220,7 +220,7 @@ BIN.Load.1 >LDYA K.S.STAT+S.STAT.P.AUXTYPE >LDYA BIN.CmdLine get back bin path ldx #SYS.strdup make a copy of this string - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .98 lda BIN.hMem Keep X=new string hMem diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index 4cf7ed37..6dcc348a 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -529,7 +529,7 @@ CORE.PSFree sta .10+1 Save PS ID txa ldx #SYS.fclose - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK .10 lda #$ff Self Modified diff --git a/SYS/KERNEL.S.DEF.txt b/SYS/KERNEL.S.DEF.txt index 9c24c2a2..9034b374 100644 --- a/SYS/KERNEL.S.DEF.txt +++ b/SYS/KERNEL.S.DEF.txt @@ -156,6 +156,8 @@ S.DCB.TTY.MODE .EQ 2 S.DCB.TTY.MODE.ESC .EQ 2 S.DCB.TTY.MODE.CSI .EQ 4 S.DCB.TTY.MODE.IAC .EQ 6 +S.DCB.TTY.MODE.G0 .EQ 8 +S.DCB.TTY.MODE.G1 .EQ 10 S.DCB.TTY.CH .EQ 3 S.DCB.TTY.CV .EQ 4 S.DCB.TTY.SCROLLTOP .EQ 5 diff --git a/SYS/KERNEL.S.DIRENT.txt b/SYS/KERNEL.S.DIRENT.txt index 8928867a..dfdc8966 100644 --- a/SYS/KERNEL.S.DIRENT.txt +++ b/SYS/KERNEL.S.DIRENT.txt @@ -579,8 +579,7 @@ K.ReadDir.ConvertTime lda ZPPtr3+1 adc #0 ldx #SYS.PTime2Time BANK2 - jsr K.SYSCALL.GoB - rts + jmp K.SYSCALL2.BANK */------------------------------------- * # CloseDir * ## C diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index add65d55..0a9044aa 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -119,7 +119,7 @@ K.ExpandStr stz .88+1 Reset Intermediate string... >LDYAI K.Buf256 ldx #SYS.StrDup - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 stx .88+1 save this as temp string, in case of recurse @@ -233,7 +233,7 @@ ENV.Search.YA >STYA .4+1 .5 >PUSHWI K.S.STAT >LDYAI K.Buf256 ldx #SYS.stat - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .1 Failed...retry next path... lda K.S.STAT+S.STAT.P.TYPE diff --git a/SYS/KERNEL.S.GP.txt b/SYS/KERNEL.S.GP.txt index 7a78261c..4258f7b8 100644 --- a/SYS/KERNEL.S.GP.txt +++ b/SYS/KERNEL.S.GP.txt @@ -129,7 +129,7 @@ GP.SysCall dec IRQ.InKernel tay pla - jsr K.SYSCALL.Go + jsr K.SYSCALL2 bcc .2 no error quit... tax CS,A=0 ? diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 0d04240d..89f2f2db 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -312,7 +312,7 @@ IO.CLOSE.NOD ldx #2 * sec rts */-------------------------------------- -* # read (BLOCKING) +* # read * ## C * `int read(hFD fd, void *buf, int count);` * ## ASM @@ -342,7 +342,7 @@ IO.Read.I lda (pFD) #S.FD.T .DA IO.READ.SSOCK .DA IO.READ.PIPE */-------------------------------------- -* # write (BLOCKING) +* # write * ## C * `int write(hFD fd, const void *buf, int count);` * ## ASM @@ -389,40 +389,28 @@ IO.WRITE.REG ldx #MLIWRITE >LDYA K.MLI.PARAMS+6 .9 rts *-------------------------------------- -* (pStack)+2 count -* (pStack)+0 buf -*-------------------------------------- IO.READ.CDEV ldx #IOCTL.READ .HS 2C BIT ABS *-------------------------------------- IO.WRITE.CDEV ldx #IOCTL.WRITE - ldy #3 - -.1 lda (pStack),y - sta K.S.IOCTL+S.IOCTL.BUFPTR,y - dey - bpl .1 - + >PULLW K.S.IOCTL+S.IOCTL.BUFPTR + >PULLW K.S.IOCTL+S.IOCTL.BYTECNT jsr K.IOCTL.GetPDRV >LDYAI K.S.IOCTL jsr K.IOCTL.pDrvJmp - bcc .8 - tay CS, A=0 ? - bne .9 no, I/O error + bcs .9 + >LDYA K.S.IOCTL+S.IOCTL.BYTECNT - rts BLOCKING I/O - -.8 >LDYA K.S.IOCTL+S.IOCTL.BYTECNT - -.9 >RET 4 +.9 rts *-------------------------------------- IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE .HS 2C BIT ABS *-------------------------------------- IO.READ.SSOCK ldy #S.FD.SSOCK.READ + lda (pFD),y tax Function Offset in LIB @@ -433,25 +421,7 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ lda IO.hFD -.1 jsr $FFFF SELF MODIFIED - bcs .9 I/O error - - phy - ply - bne .9 - - tax - bne .9 - - dec pStack no data transfered, CC, Y,A = 0 - dec pStack - dec pStack - dec pStack keep buf/count on stack - sec BLOCKING I/O -.9 rts -*-------------------------------------- -* (pStack)+2 count -* (pStack)+0 buf +.1 jmp $FFFF SELF MODIFIED *-------------------------------------- IO.READ.PIPE ldy #S.FD.PIPE.Used+1 @@ -466,7 +436,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 jmp IO.READ.PIPE.EOF Remote PS closed the Pipe -.11 jmp IO.READ.PIPE.BLK +.11 jmp IO.READ.PIPE.NODATA .10 >PULLW .3+1 get buf @@ -506,6 +476,7 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 sty .2+1 ldy #S.FD.PIPE.Tail+1 +* clc adc (pFD),y sta .2+2 @@ -591,13 +562,11 @@ IO.READ.PIPE ldy #S.FD.PIPE.Used+1 IO.READ.PIPE.EOF lda #MLI.E.EOF + .HS 2C BIT ABS +IO.READ.PIPE.NODATA + lda #E.NODATA sec - >RET 4 - -IO.READ.PIPE.BLK - lda #0 BLOCKING I/O - sec - rts + >RET 4 *-------------------------------------- * (pStack)+2 count * (pStack)+0 buf @@ -618,7 +587,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S ldy #3 sbc (pStack),y - bcc IO.READ.PIPE.BLK not enough room in PIPE + bcc IO.READ.PIPE.NODATA not enough room in PIPE ldy #S.FD.PIPE.Free+1 sta (pFD),y @@ -627,7 +596,7 @@ IO.WRITE.PIPE ldy #S.FD.PIPE.S sta (pFD),y store new Free >PULLW .2+1 get buf - + >PULLA get cnt lo sta .80+1 pha diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index 2717aed5..2a8c9e10 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -417,10 +417,10 @@ K.SYSCALL.BANK .DA #RRAMWRAMBNK1 $00 .DA 0 .DA 0 *-------------------------------------- -K.SYSCALL.Go bit K.SYSCALL.BANK,x Get Target BNK +K.SYSCALL2 bit K.SYSCALL.BANK,x Get Target BNK bpl K.SYSCALL.JMP 0, E000, no BNK change -K.SYSCALL.GoB sta .7+1 +K.SYSCALL2.BANK sta .7+1 lda $D000 #RRAMWRAMBNK1 or #RRAMWRAMBNK2 cmp K.SYSCALL.BANK,x beq .7 diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index 1a87ce98..ecc3019b 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -273,7 +273,7 @@ K.FreeMem.ERR phx >LDYAI K.FreeMem.MSG .1 ldx #SYS.printf - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK plx sec @@ -536,7 +536,7 @@ K.FreeStkObj ldx #SYS.FreeMem * X = hMem of Loaded Object in AUX mem *\-------------------------------------- K.LoadStkObj ldx #SYS.LoadTxtFile To get ending \0 - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .99 sty .81+1 diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index aff9ba04..00a96c3e 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -144,7 +144,7 @@ PS.CreateChild ldx #0 jsr K.GetMemPtr ldx #SYS.StrDup - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 jsr PS.SetMemOwner Set Ownership @@ -230,7 +230,7 @@ PS.Load ldy #$ff >PUSHWI K.S.STAT >LDYA PS.ArgV found /, some path specified, no search ldx #SYS.stat - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcc .6 REAL path in K.Buf256 .99 rts @@ -308,7 +308,7 @@ PS.Load.SCRIPT ldx #$ff .5 >PUSHWI K.S.STAT >LDYAI K.Buf256 ldx #SYS.stat - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs PS.Load.RTS lda K.S.STAT+S.STAT.P.TYPE @@ -415,7 +415,7 @@ PS.LoadGetHeader >PUSHBI O.RDONLY >LDYAI K.IOBuf ldx #SYS.fopen - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 sta .1+1 @@ -423,13 +423,13 @@ PS.LoadGetHeader >PUSHWI K.IOBuf+128 .1 lda #$ff SELF MODIFIED ldx #SYS.fread - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK php pha lda .1+1 ldx #SYS.fclose - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK pla plp .9 rts diff --git a/SYS/KERNEL.S.PWD.txt b/SYS/KERNEL.S.PWD.txt index 484d60f4..42811535 100644 --- a/SYS/KERNEL.S.PWD.txt +++ b/SYS/KERNEL.S.PWD.txt @@ -74,7 +74,7 @@ PWD.Store lda PWD.DBPtr >PUSHBI O.WRONLY+O.CREATE >LDYAI PWD.FILE ldx #SYS.FOpen - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcc .1 pha @@ -91,7 +91,7 @@ PWD.Store lda PWD.DBPtr >PUSHYA lda .7+1 ldx #SYS.FWrite - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .2 jsr .7 @@ -106,7 +106,7 @@ PWD.Store lda PWD.DBPtr .7 lda #$ff ldx #SYS.fclose - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK .8 lda #$ff jsr K.freemem diff --git a/SYS/KERNEL.S.SLISTX.txt b/SYS/KERNEL.S.SLISTX.txt index 4455daa4..94bb68c3 100644 --- a/SYS/KERNEL.S.SLISTX.txt +++ b/SYS/KERNEL.S.SLISTX.txt @@ -82,7 +82,7 @@ SLIST.GetData jsr SLIST.Select inc ZPSListDataLen+1 bra .2 -.99 lda #E.NODATA +.99 lda #E.EMPTYKEY sec .9 rts diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 07ccf64a..b5bec783 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -329,7 +329,7 @@ K.MkNod.I ldx #2 >LDYA ZPPtr1 ldx #SYS.StrDup - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 txa diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 845602a6..e2c341a7 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -1,16 +1,10 @@ NEW -PREFIX -AUTO 4,1 -*-------------------------------------- -*K.PrintF.PadL .BS 1 -*K.PrintF.PadC .BS 1 -*HEXBUF .BS 4 -*BCDBUF .BS 5 5, enough to handle 10 digits (32bits) + AUTO 3,1 *-------------------------------------- HEXBUF .EQ FAC K.PrintF.PadL .EQ FAC+4 K.PrintF.PadC .EQ FAC+5 -BCDBUF .EQ ARG +BCDBUF .EQ ARG 5, enough to handle 10 digits (32bits) HEXBUF.Signed .EQ ARG.SIGN */-------------------------------------- * # putchar (BLOCKING) @@ -29,14 +23,16 @@ K.PutChar >PUSHA character ldy #S.PS.hStdOut lda (pPs),y jsr K.FPutC - bcc .8 - - tay - bne .8 - - >RET 1 - -.8 rts + bcc K.PutChar.RTS + + tay E.NODATA + bpl K.PutChar.RTS + + inc 0 = BLOCKING + +K.PutChar.RET1 inc pStack + +K.PutChar.RTS rts */-------------------------------------- * # fputc (BLOCKING) * Print A (char) to hFILE @@ -50,22 +46,26 @@ K.PutChar >PUSHA character * ## RETURN VALUE * CC = success *\-------------------------------------- -* (pStack)+0 character -*-------------------------------------- K.FPutC jsr PFT.CheckNodeA - bcs .8 - + bcs K.PutChar.RET1 + lda (pStack) character sta K.IOBuf - ldy #1 write 1 byte - jsr K.FPutC.Y - bcc .8 - tay - bne .8 + lda #0 + >PUSHA + inc write 1 byte + >PUSHA + + >PUSHWI K.IOBuf buf + jsr IO.Write.I + bcc K.PutChar.RET1 pop char... + tay E.NODATA + bpl K.PutChar.RET1 + + inc 0 = BLOCKING + sec rts - -.8 >RET 1 */-------------------------------------- * # puts (BLOCKING) * Write Str to StdOut, appends '\r\n' @@ -78,36 +78,49 @@ K.FPutC jsr PFT.CheckNodeA * ## RETURN VALUE * CC = success *\-------------------------------------- -K.PutS >PUSHYA - +K.PutS >STYA ZPPtr2 + + ldy #0 + +.1 lda (ZPPtr2),y + beq .2 + sta K.IOBuf,y + iny + bne .1 + +.9 lda #E.BUF + sec + rts + +.2 lda #C.CR + sta K.IOBuf,y + iny + beq .9 + + lda #C.LF + sta K.IOBuf,y + + iny + beq .9 + + lda #0 + sta K.IOBuf,y + + >PUSHWI K.IOBuf + ldy #S.PS.hStdOut lda (pPs),y - jsr K.FPutS - bcs K.PutS.RTS - - lda #C.CR - sta K.IOBuf - lda #C.LF - sta K.IOBuf+1 - - ldy #2 write 2 bytes - -K.FPutC.Y lda #0 - - >PUSHYA count - >PUSHWI K.IOBuf buf - jsr IO.Write.I - bcc K.PutS.RTS + bcc .99 tay - bne K.PutS.RTS + bpl .99 - >RET 4 pop buf,count but keep char - -K.PutS.RTS rts + inc 0 = BLOCKING +* sec +.99 rts */-------------------------------------- * # fputs (BLOCKING) -* Write Str to FILE +* Write Str to hFILE * ## C * `int fputs (hFILE stream, const char * str );` * ## ASM @@ -121,23 +134,42 @@ K.PutS.RTS rts K.FPutS jsr PFT.CheckNodeA set IO.hFD bcs .9 - >PULLYA Get String - >STYA ZPPtr2 Save Buffer - ldx #SYS.strlen Get String len in Y,A - jsr K.SYSCALL.GoB + lda (pStack) + sta ZPPtr2 Get String + + ldy #1 + lda (pStack),y + sta ZPPtr2+1 + +* ldy #0 + dey + ldx #0 + +.1 lda (ZPPtr2),y + beq .2 + iny + bne .1 + inx + bra .1 + +.2 txa + >PUSHA push len HI + + tya + >PUSHA push len LO + + >PUSHW ZPPtr2 - >PUSHYA push len - >PUSHW ZPPtr2 push buffer jsr IO.Write.I bcc .8 tay - bne .8 + bpl .9 - >RET 4 + inc 0 = BLOCKING .8 rts -.9 >RET 2 +.9 >RET 2 pop str */-------------------------------------- * # PrintF (BLOCKING) * # FPrintF (BLOCKING) @@ -361,9 +393,11 @@ K.PrintF.1 stz PrintF.Cnt jsr K.FWrite bcc .81 tay - bne .99 + bpl .99 - >RET 4 + inc 0 = BLOCKING +* sec + rts .80 lda #0 Writing to buffer, append \0 ldy PrintF.Cnt @@ -812,7 +846,7 @@ K.FGetS jsr PFT.CheckNodeA bcs .9 lda (pFD) - bne K.FGetS.Special + bra K.FGetS.Special * clc lda (pStack) @@ -906,17 +940,17 @@ K.FGetS.Special lda (pStack) .3 jsr K.GetC.I bcc .2 another char... - + .4 tay - bne .9 I/O error - + bpl .9 I/O error + lda ZPPtr2 sta (pStack) s - + lda ZPPtr2+1 ldy #1 sta (pStack),y s - + lda ZPPtr1 eor #$ff * sec @@ -929,11 +963,11 @@ K.FGetS.Special lda (pStack) adc #0 iny sta (pStack),y !(n+2) - - lda #0 BLOCKING I/O + + lda #0 BLOCKING sec rts - + .8 lda #0 sta (ZPPtr2) terminate string clc @@ -967,17 +1001,18 @@ K.GetChar ldy #S.PS.hStdIn *\-------------------------------------- K.GetC jsr PFT.CheckNodeA bcs K.GetC.RTS - + K.GetC.I >PUSHWI 1 >PUSHWI K.IOBuf - + jsr IO.READ.I bcc .8 tay - bne K.GetC.RTS I/O error - - >RET 4 BLOCKING I/O - + bpl K.GetC.RTS I/O error + + inc 0 = BLOCKING + rts + .8 lda K.IOBuf K.GetC.RTS rts @@ -1008,7 +1043,7 @@ K.GetC.RTS rts * A = Number of arguments filled. *\-------------------------------------- K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format - + stz .5+1 reset LStack Ptr stz .80+1 rest Arg processed @@ -1017,18 +1052,18 @@ K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format cmp #'%' Escape ? beq .2 - + cmp #' ' Space ? beq .12 - + cmp (ZPPtr2) Same char in string? bne .9 - + inc ZPPtr2 bne .1 inc ZPPtr2+1 bra .1 - + .12 inc ZPPtr2 Space.... bne .14 inc ZPPtr2+1 @@ -1036,28 +1071,28 @@ K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format .14 cmp (ZPPtr2) another one ? beq .12 bne .1 - + .2 jsr MEM.GetCharPtr1 Get specifier after % beq .9 unexpected End of format after "%" ? ldx #K.SScanFJMP-K.SScanFTBL-2 - + .3 cmp K.SScanFTBL,x beq .4 dex dex bpl .3 - + .9 jsr .8 lda #MLI.E.EOF sec rts - + .4 jsr .5 bcs .9 out of Ptr on stack - + bra .1 - + .8 lda pStack sec ByteCnt byte adc (pStack) ... ByteCnt @@ -1069,12 +1104,12 @@ K.SScanF jsr MEM.SPtr2PPtr1 ptr2=String to Scan,Ptr1=format .5 lda #$FF SELF MODIFIED LStack Ptr cmp (pStack) beq .99 CS - + tay iny lda (pStack),y sta ZPPtr3 - + iny lda (pStack),y sta ZPPtr3+1 get VAR Ptr @@ -1110,11 +1145,11 @@ K.SScanF.H lda K.SScanFTBL+1,x Get VAR size pha jsr STDLIB.GetHex - + K.SScanF.GetVAL jsr K.SScanF.Fwd Y=char count parsed - + .1 ply get back VAL size - + .2 lda STDLIB.32-1,y dey sta (ZPPtr3),y @@ -1134,7 +1169,7 @@ K.SScanF.S ldy #$ff bne .1 .2 lda #0 add \0 to param ptr sta (ZPPtr3),y - + K.SScanF.Fwd tya Y=char count parsed clc adc ZPPtr2 @@ -1185,7 +1220,7 @@ K.FOpen jsr PFT.CheckPathYA jsr STDIO.NewHFile bcc K.FClose.RTS - + jmp IO.Open.ERR K.FOpen.RET4 >RET 4 @@ -1202,18 +1237,18 @@ K.FOpen.RET4 >RET 4 *\-------------------------------------- K.FClose jsr PFT.CheckNodeA bcs K.FClose.RTS - + sta .1+1 store hFile - + jsr IO.Close.I bcs K.FClose.RTS - + .1 ldx #$ff SELF MODIFIED stz OF.Table.hFD-1,x lda OF.Table.hPath-1,x beq K.FClose.RTS special files have no path - + stz OF.Table.hPath-1,x jmp K.FreeMem discard filename @@ -1234,8 +1269,16 @@ K.FClose.RTS rts *\-------------------------------------- K.FRead jsr PFT.CheckNodeA bcs K.FOpen.RET4 - - jmp IO.Read.I + + jsr IO.Read.I + bcc .9 + + tay + bpl .9 + + inc 0 = BLOCKING + +.9 rts */-------------------------------------- * # FWrite (BLOCKING) * Write bytes to file @@ -1252,8 +1295,16 @@ K.FRead jsr PFT.CheckNodeA *\-------------------------------------- K.FWrite jsr PFT.CheckNodeA bcs K.FOpen.RET4 - - jmp IO.Write.I + + jsr IO.Write.I + bcc .9 + + tay + bpl .9 + + inc 0 = BLOCKING + +.9 rts */-------------------------------------- * # FFlush * ## C @@ -1265,8 +1316,15 @@ K.FWrite jsr PFT.CheckNodeA *\-------------------------------------- K.FFlush jsr PFT.CheckNodeA bcs .9 + + lda (pFD) + bne STDIO.IOERR >MLICALL MLIFLUSH .9 rts +*-------------------------------------- +STDIO.IOERR lda #MLI.E.IO + sec + rts */------------------------------------- * # FSeek * Set the file-position indicator for hFILE @@ -1281,18 +1339,18 @@ K.FFlush jsr PFT.CheckNodeA *\------------------------------------- K.FSeek jsr PFT.CheckNodeA bcc .11 - - >RET 6 - + + >RET 5 + .11 >PULLA whence tax >PULLW ZPPtr1 offset LW >PULLW ZPPtr2 offset HW cpx #SEEK.END+1 bcs .98 - + jmp (.1,x) - + .1 .DA .10 .DA .20 .DA .30 @@ -1313,9 +1371,9 @@ K.FSeek jsr PFT.CheckNodeA .8 ldy #0 ldx #3 3 bytes, 24 bits!!! - + clc - + .81 lda K.MLI.PARAMS+2,y adc ZPPtr1,y sta K.MLI.PARAMS+2,y @@ -1323,7 +1381,7 @@ K.FSeek jsr PFT.CheckNodeA iny dex bne .81 - + bcs .99 Offset out of range! .82 >MLICALL MLISETMARK @@ -1357,9 +1415,9 @@ K.FSeek jsr PFT.CheckNodeA *\-------------------------------------- K.FEOF jsr PFT.CheckNodeA bcs .9 - + jmp IO.EOF - + .9 rts */-------------------------------------- * # FTell @@ -1377,17 +1435,17 @@ K.FTell jsr PFT.CheckNodeA bcs .9 >MLICALL MLIGETMARK bcs .9 - + lda #0 >PUSHA - + ldy #2 - + .1 lda K.MLI.PARAMS+2,y >PUSHA dey bpl .1 - + .9 rts */-------------------------------------- * # Remove @@ -1402,7 +1460,7 @@ K.FTell jsr PFT.CheckNodeA *\-------------------------------------- K.Remove jsr PFT.CheckPathYA bcs .9 - + >MLICALL MLIDESTROY .9 rts */-------------------------------------- @@ -1421,16 +1479,16 @@ K.Rename jsr PFT.CheckPathYA bcs .9 >PULLW .1+1 - + ldy #0 - + .1 lda $ffff,y Self Modified beq .8 iny sta K.Buf256,y cpy #MLI.MAXPATH bne .1 - + .8 sty K.Buf256 >LDYAI K.Buf256 >STYA K.MLI.PARAMS+3 @@ -1449,30 +1507,30 @@ STDIO.NewHFile sta .4+1 Store hFD .1 lda OF.Table.hFD-1,x beq .2 - + inx cpx #K.OF.MAX+1 bne .1 - + lda #E.OOH * sec rts - + .2 stx .3+1 Store hFILE - + lda (pFD) cmp #S.FD.T.CDEV beq .20 - + cmp #S.FD.T.BDEV bne .21 - + .20 lda #0 No hPath for DEV bra .3 - + .21 >LDYAI K.buf256 ldx #SYS.strdup - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs .9 txa @@ -1483,14 +1541,10 @@ STDIO.NewHFile sta .4+1 Store hFD sta OF.Table.hFD-1,x txa hFILE - + clc .9 rts *-------------------------------------- -STDIO.IOERR lda #MLI.E.IO - sec - rts -*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.STDIO LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index 47a603f3..c5400a5b 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -315,7 +315,7 @@ STDLIB.realpath.I ror .82+1 ldx #SYS.ExpandStr - jsr K.SYSCALL.GoB + jsr K.SYSCALL2.BANK bcs STDLIB.32.RTS >STYA ZPPtr1 @@ -426,8 +426,7 @@ STDLIB.realpath.I bpl .88 >LDYAI K.Buf256 ldx #SYS.StrDup BANK 2 - jsr K.SYSCALL.GoB - rts + jmp K.SYSCALL2.BANK .88 clc rts diff --git a/SYS/KERNEL.S.TERM.txt b/SYS/KERNEL.S.TERM.txt index 9800e75b..91b0ef39 100644 --- a/SYS/KERNEL.S.TERM.txt +++ b/SYS/KERNEL.S.TERM.txt @@ -266,8 +266,8 @@ DRV.TERM.READ jsr DRV.TERM.GetIOCTLBufCntDCB clc rts -.9 lda #0 Error = char - sec +.9 lda #E.NODATA +* sec rts *-------------------------------------- DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufCntDCB @@ -296,6 +296,8 @@ DRV.TERM.WRITE jsr DRV.TERM.GetIOCTLBufCntDCB .DA DRV.TERM.ESC .DA DRV.TERM.CSI .DA DRV.TERM.IAC + .DA DRV.TERM.G0 + .DA DRV.TERM.G1 *-------------------------------------- DRV.TERM.COUT lda (ZPBufPtr) @@ -332,9 +334,7 @@ DRV.TERM.COUT lda (ZPBufPtr) .DA DRV.TERM.COUT.FS .DA DRV.TERM.COUT.ESC -.8 ldy #S.DCB.TTY.bINVERSE - ora (ZPDCBPtr),y - jsr SetCharAtCurPos +.8 jsr SetCharAtCurPos *-------------------------------------- DRV.TERM.COUT.FS ldy #S.DCB.TTY.CH @@ -378,8 +378,6 @@ DRV.TERM.COUT.DEL sta (ZPDCBPtr),y S.DCB.TTY.CH .3 lda #$20 - ldy #S.DCB.TTY.bINVERSE - ora (ZPDCBPtr),y jmp SetCharAtCurPos *-------------------------------------- DRV.TERM.COUT.FF @@ -438,6 +436,8 @@ DRV.TERM.ESC1 lda #0 y = #S.DCB.TTY.MODE .4 .DA Scroll.Dn M .DA Scroll.Up D .DA RESET c + .DA G0 ( + .DA G1 ) *-------------------------------------- DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER lda (ZPDCBPtr),y @@ -453,9 +453,7 @@ DRV.TERM.CSI ldy #S.DCB.TTY.INBUFFER cpy #S.DCB.TTY.INBUFFER.MAX-1 buffer full? bne .8 - lda #0 - ldy #S.DCB.TTY.MODE - sta (ZPDCBPtr),y + jmp RESET.MODE .8 clc rts @@ -526,9 +524,7 @@ DRV.TERM.CSI.Exec pha - lda #0 - ldy #S.DCB.TTY.MODE - sta (ZPDCBPtr),y + jsr RESET.MODE pla @@ -576,7 +572,9 @@ Csi.LWDisable clc rts *-------------------------------------- Csi.DispAttr ldx CsiParamCnt - beq .8 + bne .1 + + jmp RESETATTR .1 lda CsiParams-1,x bne .2 @@ -585,9 +583,9 @@ Csi.DispAttr ldx CsiParamCnt bra .7 .2 eor #7 - bne .8 + bne .7 - ldy #S.DCB.TTY.bINVERSE +.3 ldy #S.DCB.TTY.bINVERSE sta (ZPDCBPtr),y .7 dex @@ -676,7 +674,7 @@ Csi.Home lda CsiParamCnt ldy #S.DCB.TTY.CH sta (ZPDCBPtr),y - iny + iny S.DCB.TTY.CV sta (ZPDCBPtr),y clc rts @@ -718,6 +716,11 @@ Csi.Home lda CsiParamCnt Csi.Home.8 clc rts *-------------------------------------- +DRV.TERM.G0 +DRV.TERM.G1 + + jmp RESET.MODE +*-------------------------------------- DRV.TERM.IAC ldy #S.DCB.TTY.INBUFFER lda (ZPDCBPtr),y inc @@ -843,8 +846,7 @@ COUT.IAC.DONT COUT.IAC.EXIT *-------------------------------------- RESET.MODE lda #0 - - ldy #S.DCB.TTY.MODE +SET.MODE ldy #S.DCB.TTY.MODE sta (ZPDCBPtr),y clc rts @@ -865,6 +867,12 @@ RESETATTR lda #$80 clc rts *-------------------------------------- +G0 lda #S.DCB.TTY.MODE.G0 + .HS 2C BIT ABS +*-------------------------------------- +G1 lda #S.DCB.TTY.MODE.G1 + bra SET.MODE +*-------------------------------------- ENQ ldx #0 .1 lda ENQ.String,x @@ -1263,7 +1271,7 @@ RESET.VALUES .DA #0 S.DCB.TTY.MODE CtrlChars .HS 05080A0C0D151B CtrlChars.Cnt .EQ *-CtrlChars *-------------------------------------- -EscCodes .AZ "MDc" +EscCodes .AZ "MDc()" EscCodes.Cnt .EQ *-EscCodes CsiCodes .AS "hlmnrKH" CsiCodes.Cnt .EQ *-CsiCodes diff --git a/SYS/KERNEL.S.TERMLC.txt b/SYS/KERNEL.S.TERMLC.txt index 7d7c2b0b..875c8d5d 100644 --- a/SYS/KERNEL.S.TERMLC.txt +++ b/SYS/KERNEL.S.TERMLC.txt @@ -167,7 +167,9 @@ SetCharAtCurPos.SCR pla bra SetCharAtY.SCR -SetCharAtCurPos pha +SetCharAtCurPos ldy #S.DCB.TTY.bINVERSE + ora (ZPDCBPtr),y + pha ldy #S.DCB.TTY.CV lda (ZPDCBPtr),y tax @@ -226,6 +228,9 @@ GetCharAtCurPos ldy #S.DCB.TTY.CV rts *-------------------------------------- +REMAP.95.126 .HS 404142434445464748494a4b4c4d4e4f + .HS 505152535455565758595a5b5c5d5e5f +*-------------------------------------- BUF.BASEL .DA #0 .DA #80 .DA #160