From 6dc3efd617f3d9542a5995e2eb486c016a46b2c8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sun, 13 Mar 2016 23:09:00 +0100 Subject: [PATCH] LIBTCPIP:Started implementing Socket API --- A2OSX.BOOT.DSK | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/LIBTCPIP.I.txt | 2 +- LIB/LIBTCPIP.S.ARP.txt | 130 ++++----------- LIB/LIBTCPIP.S.DNS.txt | 240 +++++++++++----------------- LIB/LIBTCPIP.S.FRM.txt | 203 ++++++++++++++---------- LIB/LIBTCPIP.S.HST.txt | 176 +++++++++++++++++++++ LIB/LIBTCPIP.S.ICMP.txt | 63 +++++--- LIB/LIBTCPIP.S.IP.txt | 33 ++-- LIB/LIBTCPIP.S.SKT.txt | 339 ++++++++++++++++++++++++++++++++-------- LIB/LIBTCPIP.S.TCP.txt | 273 +++++++++++++++++++++++++++++++- LIB/LIBTCPIP.S.UDP.txt | 155 +++++++++++++++++- LIB/LIBTCPIP.S.txt | 280 +++++++++++++++++++-------------- 13 files changed, 1339 insertions(+), 555 deletions(-) create mode 100644 LIB/LIBTCPIP.S.HST.txt diff --git a/A2OSX.BOOT.DSK b/A2OSX.BOOT.DSK index c9841f58d58a990df558188ea159afe950df046f..42c7a0bc8eb467f44ddb557361d82d7bd39ee44a 100644 GIT binary patch delta 26353 zcmeIadt6l2{y)6;%m4#&8OKpZKwWc#0g+ptqUol2gT%{GyJ%K}N`VQOx5`t^bb>-+ zJOg8*3AUTW;}GMS!Q1g9IAs}l%66ufSYA3xXo8d1vV`Az?L8p&?R;O)^SquvoA*$NYyOnIwIP znjsXNSxAP-9sdZ58T~Ag3>F%o z5edUg89RBx%-J)Uz)u#*vNW1YV&p=_ToNmH91Tig8Anhsk!6zPA=?szF9!w77)GJ_ zahJD^1%+%!?~(Am;uaP%3B4q$>2ebe>^;jjDL8_ zbRip$U>750vZd%{nAi)Q$=@EHE`6FrIHo-i z<+u7>h*frMd@}m3*Me?k7GgD08RPh@anr};Or0eZpqC7+m?5M;81~zRClj$ThCDR| z&jnA##~ZR{&6++wPz6EoY0Si23G*PiQ`~h=ldvJF4puVDAv52rc#8D3#|ztbx;Z*C z6T1>WVd5Spiot2j$jMVuW{jQk=(HJ=g^e2QV1k*i`i6OHjX%^&3mwavU1+)J0fls&l)#9dwRcg?~wat3FC3xGyiSp0*U3B!yg|>KYIVs zM~*&zl%lxx==(>{93A_0=hrmFFo~zlXIszK;<$;w%V)2h9rlC%hpHbo|M2II$2uZU zPB@u$GVf&m$rUHx#=qK=-jfGUetGib$?s44PhLKma%%FaS5A3P?K$-+{++R@S$6A8hiQJnq$?+7{+{T_Obtb)BX(>hEzQhV_E){r<;s8jK{Z~cpSZe z$G#3vH<#-=M5>Q*E5sn$^%dEAG>el7;mSE#q~W}$JD+@fg#K}>1t_xNoITRTlEH_# zP9ekEP5c);9YlZL{vR^=!h)E_82?>q8LL?TNKWdFQ5d*8CEl3UbUs9=WgXg@fv5xx zSR-5SKvYJfQgY}^vaPc&MqMB;jd8bi^1B`XekR?SFHv#qew8<-O0{3rh$pwjbttEL zn_^)uJ4^n8yQin2yT`YKm$iQ7SJ+|?SHv9VcDTN>_4HJ9_i*8^X4_BF3cu8-HUl{J za6`;tvB>zC+1hQ3JDi`DsPG57;|?#1IlOw<;fmpo-OuXT!HyHp#)S+&ymi=NcbtP= zG~4pwk#<$0)gNq=`fNeIMwRU&WFXjw!2QvY#3;Xl27Yyc0!4Od*S;eh<5HKNE;;37 z+`(#pip_VVgOna=Je4-w{o#>Bxj&ebc~9{JxnS?9&p$fC%UclcJK{GU^c~@kh#&*q z5_M+hM@Re``4$&LMj!Fq>E3sw;iDroIubCU)~Zv9WBgK5>A10I1pA>QrZAl?b>tKl zvG+SZDAeJ3vTy{RJwjYpq-WC|Sw$K=7ZzpUSz8p#KI7P3M3T~vma-*GqpDp+5S5ll z8kx)`5_G#?Ri(;WN1yrhL7s6)i|@Ge55Tt^lJEn(%$E{AsEog^HfNgqwWv&S8;#LE{h!%X?x_}R#BaHb!jt`$xS=zr@Y2RjU&F{@MA6sdE z&)k~D4-}xb2%xi(x!T;iln*8kwAo9{tuqnJZnH<3>sPAVuKZ0Yu64X(6WGx5yt1HbSl_2Sk1xxO-Ts~`;XVISXGtD;R zaqQv5FH_|IRcM#c@EXfr$mkV1tosXKlxi)5ztMc4^KR$8E=s zuWma|PMq>AZ@b}_xjwTN+D;s=_zoTS+kP&FZotEyKhMcp{Vm1mgox932=Z6n2I@XW z@tl0hGYm1}J>^F0z;Z5nMR4MH!*|EGehZYc+~3li{H*?9NC|M5BXRO-x=+w!ak=DD z26Uhf z8XH~C$ttgq4;|kwOAW_ZF@VM^{->~QqL&Yg=sw|OS~|Q;ZTE=_-Hx%#hlHa_G~IJt z)b4J_{No&yo4Hxktwi3~(2 zBU77E`-<(u<^ZbyT(LrDM!U9;nkznRcI~t6Yj#E1K5lkJ*gkD``dlF-xEbY+8PAUf z>3ZY&J9NFU&i!C%LSdk?^V8l8$9K=ifVlnqd>s4ndxKwKEx(=)px(%A@iMKsY4X;; zC}i0LOU++&qx6xZo*}}}ST7S($Aont* zen6G}M1kHu>3K?65s6n)ddYV4w7Rh8bm^5Aq^4fBb)PO|zAwF6$7FWiJY9ONj_vF| zU3$Ha-NX>~drtyw;QgbX5n1lvPLumZX267!DkdLWhCyaMI;F=2#UDGqfALAScH7vM zkFl1{uPJJYXI3Yj;TAx2(Es3h)Hd=AB^YM}GBOeY+1%#2+m?KWB%bypmJTdYtR8j7 zopgo_YW65e${9}tVb5U5>QHN?nszek3|0!K5H*BwWFSNpoZdtsC7w-(`X!|W1G?1W zRTN@Gm)*VNb_Yhxg}ZxBXa1zH%{|-VX1+({iL>q{UFyQQXKhcObuaBIeB!L_sk5HB z?kCS?p6hl$b@p73XPSF?S4=DMPqr=Z;=;TNb)KS>K^J)gOIc2W>X|<=rPolo1tGc4 zg$p29F+i*&L%%2I&Y+=&C(qiJc2z8Kw7!%qTi!)}b^P*@K5|J{sRT7kr44h>ZhgWr z@@0($R6=1}ah5!PR-WZXh(R08jO~-N+)Qyw$J+Lv#gu+>R+!TL2iq+{7|B*fQp-rJXDXW7Ynt1w-?sk6f2H+h ze;BE2_XJfS=YYGp-T%oP@@V@?>j%hiH?`w}+aBlO1R? z`gMs*f;nkw2c3~2={t78^EO}+J62vBqo(@n1rW_jt=kbeIhT?>sdquAW)}TYA zq{D9D*gqt(j#P^gz>isyC}pFn@n~Lcs15CimnWf00`Vy0)fjEo?`qCvC!04 z_-MbvnPTCvzQX)|g$u+&#>^>Ps?uR4alq@V3ypCQN@wFa#vg?(7)O4voVP!O^xmpC z^5g|B${SZ-HZaZ~=Z(V#wrS6o=MA*!&bt_Jq_~#KIHEak9nh#~{f6&$N^ltMk#;xVZgZwtjekx>GIsaY^PUJU zyfQAUF)nmWRUCG&kiYuEkG3=CE6$!LmWO`y#M|1>ldKD*^G8oOXnh>w?)LN8HMbHN zoygm5njf)@D!RAanjigoC(}{K&_Od8G~381Lg`WY97UlQF!t|V-+`loW~$8$I8U5Y zMwn(>_Ky`=KXQ@zH)43gc4T&D{fOBu@61L3I7XPLpGy2_`@$hd^lQT&JaoZjjkxe* zmA~uA1^=(^BNxaI=k1p{7O_e{R!3UtZ}BPkU)&ddgnkkS-WW%T^Zi^($0OMs&5QI!rVQBnpU7gz=c%V6HZ zhY5qncCu=Kf~TAAEIKZFLP4cL8shvRG=b_MgEaALXX(%q5NQfOQQ%nMLg*hHI0TVU zL>d`jtpuV%zU2t;|2>cH<=XT>)BQxnELWKAn@;zS&9-Bm?sa<;TUyI_#x<}sR&8Do zQ`6Sz9_p)~@^z=;j&d8Gqq;6M^U|))=7YyNd9wA#=GDhKUDku&bn+q2u+`smVtd4h z8_N>Y)z*n|DkbIziV07 z=gYhJeb}|OMsT^;tXkd5W@ zgwlMcd=V@Kw7YL!TH948o%(PNP2l&{yTUGdy68W(xn_vJ zM&+*=jJ?e?|H1tj9uaWOAx=%G*LRs6XX2Ajgwsg8Vk@XMVI>g@; z?YG6t4-WAwf?QJD5I-sH^sr_ZlWA_7(@N}$29ojmFmETOBya>F^_(T0u(f(1FJeYc{UlYZM4YX=RDs$<%yotog*)G~MXW zJY?tN+c+v%+go$d=wCdNZ1UZ7BOkR6MIAS`erzP$bUClWsL8}rRC5#o4Zl_v2Cz0GHYEYWPF`~~%@R8A*a zu+tRHq~wN*?v3RV$u4#!+s!tv9xjo@lWoKvC9!O9sz~i1mq!TbK}~B-^M|^Q3u$Y& ztAa55T(<$a4v1BPZ9g_=xg^fPw0?pRkgo==3pLx?n|Hr3q<;6ZAt-UTH}j#cyM$tE zcYqT33tUeMIW?B9=9-Jm@)wea`V_z7k@l+-VgV;TU&jB2)5eG4u+g&4H2L}S=V|Oe z#+o0RGu>Uy=N8nvFE*cJ>;qPJHQO#Wcm2?8{Q>#5j^-@)4?u0Xh+2t=8ngG)cZPVn zw=xS?%hEV@H?wfPEG^WrwJLmEr3i6lpnY&XklimNtqRvsF%sf(3lUeR2sc&f38Mq2 z!?T9ChSG@RW>tnRQOF`CO4l4AmYnNT$df@=eg$12%-+2H(T*98)UfQyIa8)in>p*@ z*I^gE#yVbgOo((2QJanQtT-c^jzl{SJCZFm=Rs$jOars9qv`YL_3Xly3!g{xmn+~f zVD`3bj`pl{zaMRLN85HpBjZ3rw8soJXV@Uv{PJxh22~6n6LT)wHpXqaDH3`g>~}s+u(_aFm&_yktWA@juj>#s?KSRMt!O0j(xa2vp5A zD(hL;V}kQZgvy%GI-U>7zd@o@j)$s=<-Iy-R-GgZ6SewpD%)yRja^k!sj8_`&7mfz z)vA=gsRWagUG<_}wcf7kXL16W3u>~fvJ#_0J?r06mE{X|BO2`}Q?$F+sQkgM;LOf7 zsx71T2wxBm2$$?ofzElNN$1TLUod~7*D@oLUB+>?`WemSyd_0>iwLMM znN?7jw}i~hTef^LnOMAp7#5_F{FRQZb@yn;=Pk>dzpS9>88UAA!(`^-yu1Y|DJhI$ zL5d+QV*!~0Fw43t@|Q|%Ylqdpm90@wby?7FWDeLk4Q-`C|QY z*TX`}OztFhxoc%0v6-M4q+O}`RntK39${c(0jZ{;gq{bDE19iB_(S)T*>`TCKKvOfnnohM_sb3cFi%(BTOh`!BWSDJuJN|4u!?=f% z1~qYNLBBnNZF`KI970+I8Kd=ta3!vuN+krfyAvF9_NNWLrt#!CYXI1&R9sKAR4J`N zWU=F&{X=5sCDaYtq;x81Bk5derILi{?7>?g)P*?s{X@ah&hLK!&!kTiMl>3~YXpBe z!2fJDHtjOjpCXj!7d*jY^ZD8K{rb zYxLvvX8kgKss2qpr{6VSe^r0`%sgScq$eAQ=V3BY;~s3_)38^d&<3v`Y=E%hzR*lA z>1e#1KHQzRC0z_M!5K#pfn6peXt<lx&1fvC(!#-{O>bH`ZR&w{&2(u2PW_@>NWt z%s&JGF`r-7^AS{5M0d_KB5kH3=QTa1D;N#Afy1U&jpVAv!G5N3bhJjZ4^(}2H``S8 z*$Bt%&%&JtBo@!TtCt&W&l@UM7|KNfq_(8S{k(x6(y+qdALxtnL||-XY2n@)gw|{1 zPg-=b+#m=Pkf#z!gONBl(*;=k2Q85ww4Q0?9-Zf!`vn6(tbvj2W+kmU&kr_(!O85F zSR}OugTJk#g}-7wOrF(wzG!&Cu=|3(9a7j^x*tgz zk^zMz!!Lq`@%Q0ks36rjn~cA-M-0VY%3gh9~{T7aJ+nQ0iNF<)ZrQY1$`z7Oe(9$oS zU{`EA{>2;#5_cY=pc@WNRvOaoSU`k_-jIdJpT=*ydPvST9%dzfe$p9Fvg64t;*q;n z32`$iri|i)K%(uYt6qfp56wO!X1iL&ykrgXhB*_^hS?>hp<~9;1k3q4rgpftj;$T8 z>)wv^dDTvy7L z@m)1E$4ztGG^c!Ztkx#?8QrnkfTkue2f!X6j1(DrN(xCOj= z&hDne4%ydQ3!|mQwk$m@odiO(_peaOq)qm{wI=-m#dYV%reXTpEIrym*{hLSI}7yp^A^<7Gk;y@m4h5l@D+IqwjNBG%})x)&zIIUlPFiuN;(^yBMo=`+t#THkOUFBqE z)n@BE_!~aPAGtouP{!Y|2CvW3BShP7rM6YZkAQ(XTMw01zIB*3Yj(DNeYQUTfM5O) zf5~NSv380Wc!CcO)ACgyqCHlL^BYOzUyF(tKeuG*vgNPUZria34CfM?R>^UyN-n0Q zk~48bDmjFl+BK$q+GzU2>GTf>EZZj+e7jrQ~~EwN=ilEnK{d5o(b^ z@pHI%MDr^->)1wBDM$UIrSHO>_`S}W_PY!&vCf%!PFu;9)xCEP4OpXo2jG-)Bbw?{ z0f71D22tq9K4?h$F+!&`mQ|*jaueiIXPB2OTxGJYGPNL5ZnBk|;QRWKi*c_q6<|jJ z++7}saYMZvq}U*$O|*uz4&jNJyc+ZW$mz|n z^uhGUAD-n8Od`E~w}iv^xkxWp55&-G2q?WYr&HI;@ZpHc$cy8$m+O|AHbN?f;4T)cdxk@`HfHr8-Vs zKuR0x-YsBC-PS1gT%s;el{UDaAT)!PN=mm1rT+lIZi-L$r+^9@)4y!s4FUtXd;^(^ zs5!_@POsdGykN>qyA#rR>BjiDM1&1(mv_Bsf-R}SRJWZ@%66Ehc6`3q#D7({<8z;h{|tLwUHGOcyJrjb zdSL}3W=@ZdBj>Rqy*ujRz>WfOtK=-)2w^)oOu{+C+B7*#fkP*59Gg&r=_(YbYmpcf zi$M_rY_ptKAvXk?suP<+zqWdM7;P?-xaPI*h$ZpJ+a#2{XR^4TB@GKn>9&$aC)3#I z9|1uimXqz?VEVEVdmkpyE2MptXDEcCi`1G{*GTtDBL=>$rpQ052(ujE91YjRl;ZVjz6)*7sg)!NoY)z_y=(5SV;-5%CQ=`FmZz9!UW~) zH~wx~c7jAmY#U59H70JPQ<~}J3YgkmboQ@efiE=IZZqNVV@;p4h|9Q`F5}UWo+#=b zZX}T@oWzBQ+Pr!XwxYMORmx`z{VVtfK$&ARy^UzGI?y7Q3R+cd;`L$&Tx?Udsj^Yn zP!gA{vJt1Qk*pu(-eV#kjlw+&885MR14V`#ZTVl84$D@zry%$bR_*`UqK*E8MYEWl z+{RiQY6y6s;2wczd4*?#@N|QJeVhVvurb|#XIs-d=^|P8mUwPJh|MzbGOx!U@}-9# z+QRz*q=*6)s!y+M5D5Ym_sU^Lu5ab|JrGgDo3c#n52xYk0A%787h^%9#l;Fw=2m>2 z?NA!Tp|8^1V@>`7n5-ILqdJmSaX1Z&_Enmoha3`vJaGjVh{0GB7II^<`$3aGBT$V^ zuVB*uTeZ1?dJl^Az=Zz$BtSl&XsVfDsu^#p8E0}?t&(0+iMhEKQ`7dlxvBm#k{ztZ zlu?z=X>W3;*V3uJ?zFcxOfpq>N3wd$JL$qSR(e`Kn`DC7n5pzo;<_;-FR-02^DXgjZmA7T5KJNY69;53 z%wFq9d5j_n;D^Ed*2oR~ve7>zE2cG)mteLU!P}Huyf~_^CTJE|KieKty9yV4O8+Gc z=mX)oM|d{j(hqGg{1odCJtYAbvdkETK8|WUe_8#3$(5we+fxN8#Kq(_acm_d5m*x% zA-FVhdK}bp$bVs=pN&}%t$qPfmqFGmqtVC!6qWw~?Dvh`tmU;h;Ylp$Ib&$jj-BtdjV<;Wok0 z#r1)gs4>y<(9@0L|E#*kLU5MG{K99!U%*>}>+7~{Y82)vi_T;{=FmbXQJB(5PEpy2 zqpIAJPYE9^j=eB_Ac{T^piY6Px-KBag@B7T)>a8Z6`eENhBVBY?d>#(U$kVcSb}-7 z)e0pwX<(NjUQ1)`Mo|(|+Wt-t_fqj3FQEk41LMhmJ&!k2>_Ma@(Id@y&Oo91$W{Lu zx1ZsUA=9`{HJNQYHg?qt?ynacR@ zS7({%fNMT6q4G42f&KJD)4D?*zrMxmK{X}R;!LQ;qfbfwX&tp6nylXgU=DdWb*23) zbGcuR6cQfQ)=x~QWUy^WA8Go;RM~K#OmUqy-0-2vf1gn1zq7;rkts2%_7fBIV`Lj! z06F{c=SG{UP9xM%0c=4y!)_jt*90jZR{Egr8tcW8}dMD`#-cz53N@ z?BKPJu`-odK%aeu64X@1m~NHOLS{lBJti2%Lt@QL&~}<5kp*psL8{;HPbeQOMIPv+5?n{9H` zb(!!y)upw-s1^<@64VBVpfywp&$oo<8W^=u9*OeCHCtS%U#{^7w^XiKSGC67WOQ=0 z{|(eFl!atvTz;>CsM#pQYMPA{(YvVA2)7r6J&dENa;j-XT^n3r;0=h=Ap%mUlyBQ> z%q;rEn6pzCK=_f1Q!O7ESMM{H`-k8x>=XS{A5s5QCMxGV5l`#N0_`-~w_vXB?5eS!%Q&56kfA*sean|*zLGJsM_lrMMa{L$>XY0JB~fSRjRr)Jw0Vw zo3^Lt8~oMk7={!&a&PM5I9&sPY`%516+Ui`i>-YV(Q=>LscU%G!QE8FZqhZp*9V~P z1K@_b#yEE0Bm>{paquJusx{esdz{^p)Cyl>1eI_z&G3gyTvkYbF-@=f_E>#*+G=!J zO;(?6gAU5ZmV7%KQ_V)PLoA*LN?$FpmP4nDajB|e+#7UNR=CbLCRg`c;|?M{6{Bru|j^lt3~IbzoSmtxksu-00izs_?B#w8CUprvn46)4>|iAL|NV z4lbAorDIU)o~vniTqBT4tH9!3#nTFuagMAQ0M&k*-T`J*8l`=;x|rHhOkIf&2sdna z%fp%s5&>newbtspg))+_A{jt=>)X{4EITx6gARSy=wQC7(H-2NtA0f)DcC7tK|gX^07!TX!`?{W2*VbUQ#XgmXOI3VQ&EM0*N7`blG7}%EqTUdIp zEeyIdZuLxnyyFtqeOs{PH|o8y-~}1sH=bP3UeI=F8C|GOrAyHnboc1q*X`APr8}xS zr@Nt3=;QVG>a+E8^v}a((WGy`-D6?9sdvYch8WSaW9!yqE{BP88Hb?ZrXF-q+T75s zhciGb&{fJhc*{@#jt~Kd_XEu7(As+R!pfF9N~+w5zm8QdeXC>*Drm$Cq+bP2UWV5$ zz!rQG2)9-0f}kyRj)L1?20$y6-n(^Tbu9vAFJ{1I4R(vf#X7t{53&UCg>1A2r#l{% zMv9e^#2`To;t}+=VEqfA62*Mue}w`}f5%M!exmBzTxkNazcKp&6lvP`7+!%I>0)zf z2&|Dvr;6zm1iif@_YN^PqhD^L9qNSK{U_2enplI~C4aMTVZl@i zbBOI>pS9cCjgs+fm~Hht_3v-rwflnskPUhq#lwe#`5&V@rB*7w8I?q~lZBcCnp&Mp zzeV?@ZlHdo{&D@v-|dGj`i3pyT6^Y{R+p@8T#I>}jagpnpA3Cy?RuA9IOK3%HC$-6 zr5Gwk8EnS*iiG%p9++mRNHy4!;wutivbDMN7LbGY^|ccWwGYI@E{OYdqzbpy+y>I1 zr(;VX4eaZt2JJ1h8)FoaVTwmN9bAilHdQJ!&8uYoEL`Ql_&N5=82&z(H)8sU z6s1-47?nCGZmd6?4ApvKU`uhql1j5=$Rav;BjrLC<^}k`K>$xBnXL0X&{k(x7bKUi zt*eAWSIylh+ns2rT)U3H?$TF5wgb7bL;R|wr{?iGyEq&*hLbNBQgU2#s9 zyrctaYhdx2#lhy{wb!Z>C=-MEC8|lCfaON&nqYIY*ADM38qhSH7FFM`WaHS^svlRf zCW}kYUo+3);34y_ftwoUKUgYP!lc1S=%%5`D}RVRQ?^?dFJhncd+h%!@&o%L9|S+I z1%f?y2OYt8qYSt(0wa_l>to`mH0p^L#9nHRw70m%SK0-S0;1z8?XDhs*rI}Y%jPdGSe#Pa_qL;HX5M4DOXla(n-Wjs z3I%;7kSxtxvLbKEQe2prTl7HhOM<2ud5aglNSHVKfmgGIR zJZ~wzdQrV*5Ib$y@V*A77L)OLD+=c4C6l}t3MfQM_31%ujB0*y(bEObEMJnhpnr*$ zeQno375lYhr<%$Sd_4Hl!R*xs);}H9d8D z>f@<-sq-K|e4O}Q;ryeIL`i8B))Mm_N#!_??9f@=&JHSrnMwitF&q%Ol2pHX4RaK~pf z7&5BAk7477>N5Pvedk0huo*Kd5;Ceav8+1!akn9(QrUunN@X7@(PdOmk7ZNjW}Lo@ zBrmD@^;ovRGBo46p&9;ATp(zj;Sb3)Hx18#cU7OkP4X&R@A1bbMrFD68DU}SLOgBy zjC>kF*kV07#|^ODO65v`w*Y#^{|Zfk&GZ5UH@oj<0XL_*=pY-$K2iPRL3UAyE@L%- z=2l-g2wRjc1B%819A-}t4mo`bL6;%iOh7}TdVuqukO2wMm;njUm~k*6BNQg~C(!!i z;@qq+Sw}V)xW~Q9Ozz3&lv&(duabM}Ips<+J|4ulFUY@_U&dH^3&ZHFhroQ_0aOeT|h(-h#PB%+%s# zq%SeINIbh_T;Q ziy~a@%3IJ2N$+;i7SkCrWnRIu)TPN2moHjG#xGyIDDMT@U?4XuchS?ga_1IhPbbO0 z8w_E3Gx{drRz~%GT9%Wf7$+N6-zNwwxP%@XZjv_0BT-3Z<5TBml0 z_TSnLEiSjy3rFMnT|=@>()AZzvvdtvIzdSF45OsJ(XJRwnHV^lR7W}5Epl;-b;E!` zBD&z=?2~1yYeuu`d1xsMOv64>kUPj#jr{=aUpRdIwu&gk2-k5k&1j^*|J3-_F~A+G*&K~m@5qzcu+ifjohofTbHX_s9UZpgNE7yO9Y*0 z7z?Ov>DHYyThMKKO0d2mxO)0%cJP1@J?_K^hcb{Wu83c=eo zzX`JpmGNhGVjvR&VIv^0SNrQ?f$<7WDPVrXq6)oRJ9APrfn7v%7gxWU$=+!R(eroG zZ6oeOYE2vp3mMC6AR^gY8Gb0dp?1uGoeTL=$qy(i$1{lh6J}<}+8LQ#&`-)5xxOY; zzr{b$E!V3H7TDx^+~^IW?vRrS=n*|10Z z>4gowL&4mD37OrPPGR>VpN81GK`zJ+5bA_s(jil!P7a}N>9Qp$#r>qa>e@W^P26Rb zY`&M3SVmIL$So9DX=Z0?fSq=xWq8zFJ~-t$984_wIV=$O3|%Jc7Xk3vWUr+%t4|G+WsS191B~V7VURL}&Y3)^maUwa6E+xAYY> zuJtQ=bCKx>^aV3lAj&gjufa294)+Wso5E2Uw$uz4Q<#!rOUqaZCv!%IEj^=VR7Ooo z#%;LP+>uc;Is*rKjXx7N`rxy>>Q2x2{0=IDWn_FlI>Vp7PL`RsrgY~RHZqKTr#k8( zHfEB-WrcaqCB>tu#0L_p7Hod5=-StPO>g*GL--IH@c!7YSsKAPd&acNc z>V*CCn-B9gy)QDlWp_a-c-)W!?^I70rW^Jrkkg*tYH#s|}fg45F=l$v+1 zwZCe;BqDAE;sPeYThQ#az)B5~Eyrs;- z)`s=`7%Kd2__DPYphN_e;6UrMC5sD4@ugFs3iP7pufaJe_NYRS)THc+qIiS{auxhF zaaHM7gd9rE#yvWJ;=vx>!EU;kSzU~tkM3giZdRW-f{(CGV)dAkz}~=XjhRqCdaD`5 zYWYC#_tj9#+*?cVTJE|rjSZGaDm^eib+eW=b|?YsGU=Hcl>t(olF^0Z^J&-U4C_aM zvlJ$tB}&FJ&Fg-5JiTk6dz6Iw??a zOz%O96y&&b(!-c_+%u5=D3|I_`}^u+cm*Q$jN#c1T4NY$e5v$c$g~ppXs=S&uT!B4 zI!f&8$l@8^SMR^~*4r2DCrrTXR->*6Qm^wwi2RezjyPG=*#JLI5BDHdD_z08Ga{C{ z2^T15Zp)S8DW3@Q9)F12_}qI zfpgjrQb=M3C&7`N{1_W=U}jC2IZF^4#YgZShGpJmnSv34Z-nKMpy*xCKgJGXrzA|B zIqucnZ}-h#z1 z5?P{oj*mP3dEFHzASLX%XmQl}XnUC^P z>N!O+ylIt?gd5U&3UZCrC$P*}RNyG_f$(EhSerwK+Q?b$Yx=9N=`|m|24Io99n^v9 z(7_c8_p9JiMa~%H{E^d?HXuO*aGtJ$01*ruIUK0v5E)kTtSOYBXIyN9zgW(P;w>oL zF<@c2d(Bt-S0CyH*ty_swF%x<3*4=5=rGQ#hw{(;3eJyl)~@n#5<043UU7t3G!c`J zQn1Zc@V0)BVV=N1%6v##L%|TseEEpFe1Vboj#C&u=A+bym%^ve7eR%G86AStmh1cj z?HbwGya`o~ntTC#-KXu@8s~fJcM0<-Yaq~c-=8F^x zpmIuFq@V`XU02vt%X}ysiGre$1UVMAIWE_$G?`$_+nSW&PRyVrG!{lUGH0acPhI+q zuEY#n+fAbOLjJp)7w{c}1{D4^*`w~~uJ8;1B!xH)2s5`pr2J~`>F1Pq9gQ{_I){7O z3sa(H&Pa33ozy_6nvTTMLijLi20368Lp zH#}-w-a3|vJWpi*-UT9TACi1$hQip-3*#Avp3KNiQ}%gslAvmYxO!}NW(b6f8;j2Q zN&TsGRyoz2aRdY{Z4tCIXoldBF*KW-3re8u)rM7c?r3&D`-mqIQ_w2$hr?Ggh>EIp z0PlrsN`U=R6x2ofE410$NIGdq>tD#_(V2PLf~hGNdS4eK1fmPiNy(Sk3dZxN42mN+ z4;(g}P9{t$WZXMRp;61cBW2Hs1{&ItUJoBxxN4xd}_lhQLRlf(Y#$Iz4i zl%cSELpG1He+7X;O-s34Y8%E97clktndhV)$pJLF|qbEiH>Brw_11)65C{Jpp zh#-2)3kVKE*H2d}0h1O)+0_8baDvGT0k-Oj71q6a%XKzMws`2j5vlT{Oi{!#T5v zzS&w_6d$NF4t2&AFMjb>30YQ5<}WH(JP$AG*T3<|&SmTtc5HF(k_Elpj7OF6XlGeo zze<7TCZKFe?viIoUeSWv`rGyJ4cI*`aRInlfSXiIyINMfm;ydsun3+VaU74JaC+|2 zWg;51Yw9POzkJD3_?Q+KFNOD~xM)NG_)!2SkqJw3!Gi#@B(G>0SyWJzrwNolhVpUC zmyvmkiswID{jXoyh~(a)*+Nwjjd{h(mccg_z@!&q4iS#nN33LR3p;_8@0!@c{)^rG z3OioXb4E}BHh;{@CVax?9w+-3IKk`0`_ah8k-reYb>z zu6<31D;T(c3nh$3V)$QRIH9jphYTrwzKZmd@Vq2EFXNgo-U9MV=;zV+u)0e; zWK(?B0auz!uMiKl^ZM8C)U|wkg}>$-<0mdFQZA+i@gT&k*DSb~WW~*pE3KIxDS2B% z25CvRrtVVa*(;@&Jd*vF>-_4xE2Vy@Uq9vWqz@a~D=#H&Fl`4$rn!A&rqcIHoNc&5 z=WKUk;@$%$9DRqZzUg&CZyqi+TcY}B&>1*JzlD`cd2-pF9cp-v4WG~)WA{>_xnyvZ^uTocPf+rSsW(E zw0Hc-Y?I)=i$%TrEuGNXxTg~tR3{d(PfwYplj z4mS;iRCZ6T7YX`4f>(FnyE-97i`=?lUR|w=0_OO&5XouncXjuzzg7EPU7)rlP#rDP z#{Qssng{Q+4|*&zglU&?v=^wh1KAUvHb<+p42(9l+p-Z?d4( zcLQ<2*NRb&q0{oBOSj&ogB|)ZCIPSZIg$Ii{$&^Kxuv5#TgLkvcIb9b)CbCT>i$Pr zu)f~ipi4?|=~C)-Devo28gvKvPHN#+?_N(kP_JJv^Z-=qbhU5M?z?vAa)=g^Xl@v* zoAAu4_dmbb{q5#Mti*9-{>Yt&*(0pwU+Y%P%20%a4;<3}FDNup)&Ea6KoQ;lFE}h} zaQ{Dsl}Kel!6EX{umRx_kx^{$0469bN){R^l}AWI!h_@kB3W5TSOg;t4h@fzFd>ma z;nFZxZixzxkPVQ8zOZTG*N^P_wBz_pJ|BXq5CZ=s+-WB8vPiu~b+_mqGh$B}zRdXf;o%@gL=l3rDW;rG)ex^Jp$@bvg zH+o*Z_S_rV+}gtM%(FMgpKspe`r^c7^W+b%E#9-YdH*XLj5iYAJztu3@o>m<|I;N?XwwIWzD}zA>h&MD<=og#uLAGi+{VU$rYi8& zXW=)53?Y=3Zu{x&4(YBm6U$SuG)ZuGe-%SN>d~>;vqq&e6SJp^(F|r>&a|2Iv)i+> zr%Vv?K(oIUoO$`s0_iV_j3JSldo}r*d$mh78#VvZe6P8#35O%EzgOoTZLe33%+U0^ z`_pibR&?blMOR+hP|+JQTVp@dPimx2qJWQYjF$TNV5Yw977v=CPB_mDdX4m!WQo^A z==TYz?<{Si^)mI4(H=7?=vf+@h#0-UhQ=dAeG;u->nA!|oBIj1g0D)r&*ZcSujVs? z&m=NTVE|cG`bR**!;K&ouiI0Xo1&k~4b}y!Y4u_txZKdc9@xPw!?=bEt_s>nh=477 z+x?Ryk;OimD_jGiH%}}CU#CumPqv^4dAW-UR?_<+^ae_7FFP(+My5TR4FB-bWqDK@ zLRo@X7N|-c)_v9C6kfcfcyZp6MK8`RQi*V4Rfrl(ikI|dLSxP-Ub;gjkx5i1nS0pD z?7fncs~?a^VunC%Gim%oGKL&oKI;a;;6cyNqPyFdJ?i0ZH2ZkVyBQ}+@R*J!#|Rm!!FNusYoF-R@=CCnz)=(SB%BT8X-z+mweUqB zVd7!QY_#L0(RmzO6RaZ!t>-ZttAi^qm7mr^3>K{?+s26LF-U7YCR>jd#e`26k|S+W zT5968LNd-K6O)64WP~k9N1MGzBTNR4tniU+eBGt*iznB$(DiXCSo~~>5oYv#;#XcS z(yzQ&{^w_2=vTJU0Qs5pwbAptHu^y{_5AV2VtTuCvhYDjbgQr!2k@;lwoFhfg?k_L zhJgjQW9bx%ifOV`rwHyxs``;5H>)GzT34!|*SMMfi5@LV`jHGbT9G7%+zcc}l?G}^GFkTG;ym1b2^bT}`0=SzrliiEP4e?ig@vZ2xbecweb4j>{SyxX zvn^$lL|`@HqQ1b4$2Rzx+#una!5X4jpm|U8cg_2ne`vO8c4 z_!n@!v+`hqmUjeh8UYCj-HL##_Km>h0>P$;`$h9}7ePO|{Wl}8uo$}O?|#!3QymPq zhs4W4m|z1E!WTL4Ri``Xr=0>16a6^H|57lI7;@R82czQWBe3m=7c{p z4?OSylf>j?&zv=3DwPyw&Yn7I=7g!Ugvg8u<0fQ3GGROebMx2-0hEO}l_^AFg2@>> zbJnP_<0ey)V_W*BFM=SJr2qe>&j0V2I;*Lv^Y7pN%1R#nzj05j_Yzp(&fEXxYhs~n SD1F(D{yu`NdR6L7Q~n>@7IQWL delta 20784 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�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 delta 141728 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 z�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 ByXOjF?U zSPu{)og1u1_$Tr5E!%YQR1vwuD#olkH*ZyQsD`ncPH3EWC)c2Sf?bek11i+lMKGKr~A3)C!X!6g4${swKM$a##m zO}+i9g5IjyMiISFe(;1dGWvc6P2mGvv2{^P<6v*k5RCi!d)1aftX24+ta{Q}fS|Fh zPdW>2zm=PxbVjEB-fYnX3*f&?!#(hLC{s$U8D*Nfz-{gh(mH(L4 z2!blTyi;Ji@VI>7AI`jmPne%^geZ=sTA8Vk!98hyX-E1=bs(l9Yw17C;uV8^L%r%; z!SXTxDOviIGq3I$^Ygs^9oskQ^Eed?{jB)`yU^M*xLFTWFQU)MEl)Wkk>?XCG%uN_ zW;eA_!0-O1r<~+>Pg{hQM+Y#xRNtooyS!|EzzL0iKw!~Vss2E zssl7_x+r|j{M6J7XEgq(c5_<2D0p3-_%u$}zvL-TI}2QI=;QdNJojm5#P*iF2Bo&Q z z+Sh%?Rp>U-(bVf-kHz>r=|i_Z;q_BR!IyH*vzX^svKxQ8Axy_IFY4Pq)YLcF*gt@5 z^J+N{Y0h0eMSAyOcfvjLJuJ!@}-SQzyM{Dd*(g$36n@#@pS!Z6kohvl<52^|p zj0W8IG)0vZrc2{FX8|0Qc+Nox%h6*a0*osWZbcK2TLu@lK{G?;>JT>JC_r$I%DUXd zIZeQBZvFtXU#hPTbJKK@2XQ&-tKx36pL!9_v`wWCO}*<9>Nko!NYAZetA4XE;L}9% z?D8D>>~r9;bLCghIg4#xS@68GEap=m{eIi{imIyNNyCc=hMU=?4L(XJszy;m&-&p; z9KqqmJGQJvw4tIPeW}x5+Ij|o9fo=-yF7)=Dn=IMikd0-+Oid;gFChj4R`jeg-J9K z;UW;G&(rAh+f3!Os~NarIYDXJw7q~c#w9i8$#si;ijG~ zJsYu@MwQy{N!9Y2mz)z}eEfg-}V0ygoWl&Jl<&R%> zPIk@ERcFfAsLm{z`--#DHCvUAo+IbKg1RTjE%fI^dFU1A1lwHs0R5?#|9-_esYWM# zfQEYfFe0iB5>(To7>@! zz*g>vle<`#gNoxvpcaBOT?FYa7u5-Wn=UfRzo|&=W*aX8?Yf+ZKSt!!Ma<|>6U*(y zgwd@v;bp2kupEtuXr%dYBj})3=r&zw12K}-rdzi;8EsIW*v5Z~E(2}La3W~yskV;s zTu&_~h`W`#62kp1Ue?j9^p~u3imsBaui=obmYZI4R@v6bBlM?7KKz=q&bC&5i$8_y ztkw-6OHb0;PbV~=BC=k#z3$An^~%#;cg~qb3C=<3#TR0EZ6Qd7w5Qy-Pb6Uc6c zxk{9tCSQHsS<3Jd5AtxO{i)v}bmJF|D^!cJEwb@n&eDpl3H3OPAulmB zS_AP9@{)f!^W4Vi3bLX>dE^aveQZ}hgF__9BjFV}rE;1_yd^u#LerI!m5c~^e1`df z!f|r#I)R+dx{Jm|OFGn{ohtHnnx*K2mO*=31b1<{obskK$A$D3guF|knSaw+G7;%4 z=x6jCvuRg1EH*pamUImB!G>!1`>IM=OdfgDSt_@@>C7mI44d__N^Ih3R*&qKFTUx_ zcj+X}WqakfXhkWSX`G_-;Q0C&jG5=W<#a&=G5;-RVZjAvU-Rd6RW5)Kvzci|>}~Wy zdG1>{LKn$v-f~74>V(TVlyJGN!#cxAyG(uO?#Bi|06b4GY2-5fTb)dGv-xC34jg_P zC+l(A@!-HiBSi{bXTYX+;64=kbLh-Rf6!(Tmlo- z!@8tNm0-7|E>V(c24srxU!_W8n=me)RRnuHV)oYB#6{CY;A&k&5uP;)2wtPhS{CCN z@N{R0@U^-S#{{JcFM+bXP8UOnW)(xmeZ4AfZ1Je6fLqGHL7woAGjH>a>Qh^znl+^G zHxVxSfhwlE$FR}e`=MI;$j#Uhu;zG?x31&-JuO?|2-gcYwOdq;;86&o8|ctem;=2- z;alZH?>IxQ+f<$C?edj(z$pGmH~Fzm3wg=eKsO2e#4LnM4lf6&^q-n#+Al{tAO-I* z%gOYGI{?T(Q@#7{1jy{gW1XYB)R%eQpJS$+dr!X@`M)p=NaVvEjZy~*37d76z7+^= zOE+c|j*hcRG~O+L_iyJMC#9umIwqZ$xEe}|j$5_KBePv&yL4bXFxJs~ZV^hR{n*Gim|AaH4fXd6r4 z2t{_mHzcrvPChQiYN+p6R5bxSV!^iu-;5RrNcvPbIf^yK5_-gJv9q}B(9hlo<~Y(I z-YZNeMG5)C%A5As{85hs&DOE2s{!R534a_=*NGyi=w?1*FMve{O92hHmaf5*o^CEE z&_fTr87zf%j=~IQ!9Y=I35VgZ0UaG{&LC{gJzSj;7!`tUjva#I&^Im@Sy0ibP|FZ~ z75n962+`8=12(z%5odS;RCO%5ghB%5i6T2pfb$r5X*{q{)av+9zD*u@#2J_XYecgF zRCgk~fXvHO1LX9A?v5M42DQj0|ArAtisKESxf401Bp_7)K|WAirU5EvfI=}iXdMym zQKUHHz{#U2(myN)#%THDSiM5y)CvX0+Y&ZwUIz$u5rT0d?M%W42qQBm>cyJ|lrRZE zL4}u4W6?aUW2G&|#&ZefXh{}~EU(ifU7$K~OoWNXm=Rbr(tanl>>niWvk>eWQ-z@D z6Sj@q=M*)Mim9qkIkPIG&_2y3yQ?xv$H1nMqi@vIiU^DvQ$U7vaR78aEFEvE$_Ta0 z(miSlF*qj)N(~I0(7)q|zyy+yas^n(&|Dm*V5FW80!d7o*lYo6El;3dUS6Bw zpR+|zb*r8#9H<8L+1#cMM*iuE2cxlnkYrBvLtP>|C||A3h~&V&l1Ahur9fKoE!&as z1-tDy1Lz{_%!El~?uySYaF(i_G@I|yp^MLlcjs&k@;MshYLOXB=;mB&vTNhB9j2X6 z>1Vg@XOFeZ#y&mu^VHO%=O<2`^bGs>HsFdopm7o<7fQ#JjN%w{OzbgFswHi-dkH>= zE+tTsRVoXFXTM$m;IPXStci#SI+p{s>x2Q#6JO7R3Y5s9L{K2DY24H^SU=R=C93q$NXWR>~m*y%ZTr zMXyzR3q4fA-d>-uw>Knwp__ao?4l7`#30qw_CaAlE5&xw&_(gMNO}Nu6m^!k!H!#K z_@lHtq=)m}s;b2AV&FDaf=g!YCM7Bh@q_aty+}V+ixmEe{M*!w5J;({71bKX!aL;G zQ!@%|Ka-JZ8D%bzPV{Wo-X)u-Wz-;I|ITR{s}ZsP8T`rmC4b}!fxBhX^o$k9W@p%! z+l4ruelVlemOES|t|<;?!tyn?Y(j}6Bzq2J1buEXDpy=zT#$wG=hsarnHH269Lng; zJvC31m)OH7z4??0B}VA@*M~CFegr}TTYT&U zdk@E2sE6efA7L(}K(ef0gtZeL6!rpwsS|>pbI@MpNtp>#C)Ug%3Pj`qdHGf((uI8! zYcU_9xC}~*`CBC<4F8TiSwNGjaK~#Kdl2%vU-&GaAk%6)*(K3~&KF@g1}O_DelglCdn~j16a2L|l7{{CS z|4mus0TWx`J!USJHQM8PG?0^jr@`PZ#EyD}oSL{A?n27sgH?Vj_N?gX8yem)aQG}E zlJS(l#j0F#Y@YF@?dSp{Pd2PE#!iHN#Bl45?L!E>(7SD>@JxUWMg7FCiQOW1q8Psi zN7{S>CQXuu*BBE6m1sfw>)|u|hBghiceaReljT$B%T^`7U1N-jRjV}**1&2N5$2NO z$58+gzA8HQ9Q@471kVPBS93$IH;Wt3^z_VU^Ic030Pb>qrsZaYKWI~HUYCMUeqlzVMjsTS8RYq z7px};piJ0HsIm=$g1R%1Y$$=qKuzZI7!B&nbX%h=Uu#TrHeuYnX1Qjq5f045nNZQ` z(63`Yz7#Kz7q2ynVlDd2F4R*5349Vhdl#8IspL8A>dqGjkkM@lF4n801VfPTv@eAR zhVBJi*HTmc8{Yy*ieOlaDuhO-?`v$FI4sAmGr~O`7?IKeDH;MJ>}%|pC_>AWp-Qu?%w}|1 zC_|U2up!DAOSlcY=`GfJok=WB%Ky7#U3^0)IS$)nL+ZR_dj`TdI zml!w-rWYaymKKbZ6bj8^n+u}#a8i7*x=@(k#BdInU5vmJ_|s#;58(iJj=t6Q3tze--4YCS@P@Pd z5+nsFJCp&+#xT%1>;V0c8E^o#cwZzwAOgwo;4gW}fx$@VVIz?OS?D6ulp{c6YuWZ9 z;WXq2#KYpf*7BlC^esxr#+QT_)Ax~@W@xZy>-K)ALXc#$7mtx}_=(%rfw=9!L#%-+}Jn`pCq5HHs85UsWTGm@zp9;Q&{v zWr+aMP~_^!_iif23QjZGOY~g7eO+H4dNxQbK$f60bj_Kl>4T#qSxUp{5Lv4!#G7L_ zbucG&L5OLB6hH({1g{rUjHMNxAZxC9a%bV>)@$Hk@Y;YDS&b%F-k0=*CpDeen6d6C;q zpA%LVOuR5oQ4$cxsrUg0NHbY{d@aGtGY>VU9c#H-uO;#&twDn1#_UgYI^qOo;UK6N#xE}dN(uFr?YMiFma%MtI=1Fl?Os>r!yUztB+7=wg%t7`(Zy{WOk zZ(GAa&mh9*>>1H~uWk-`+CDbVtP7s6#4FU4UT)=MaKVU{7wVR~weeytI#bze>xjNeVoeiuWDf-pZc=p|-Ek*d82 z_B=eaYg?}fUm0Ba1}X$N3+0^ zb1&WXqWEeV+iMhMf-TpNR>`&U_Ps`N6F77AZ0_4SFmV{jXci-)>#@SY8wkgx4hIH3 zdAP_;GIJm3O>pXZEwX>8PMG2yb8n_!JFNrCyt@CWo(L@kLh}Ga1#dNHoe(>Pl8TcI zEqMEPd~|?sMQG3ma* zD6>5-CtYAfZGV?7_%rhf8-;YEXm7YLX4=D3drzs_QYH$X91*<2&me|W~3THa0X?W%^3=m)`3>%XzFpNV4VBN)p*X2tW z8)Yv2bK<{b)?p+6*d>V8Kh9GKk-#eQ%MbxXaUWjQg?~08$aVt_FFeImM#-t=pDs0K z96n$KkM1|@$Abrqr|q%4F2SKx8+9fsGJ9N)^Wy^(nS8A&lNgh3r>JTK0xC}6s^zsTqZZEh{nYw-F(Kbu?g~vhm)H{!@W5BY zdMXIBmOPa`3ecjxa{m=Z;iP>U7!~7?d@6+Rywm|W%v#|ELT>AFMJHVtALSxF3cP5O zN4Z3e61-HFTxkSa_p1rTr|7v%Z_acuB?M=D$uu%iU%$pA52EQ%;co=x(9r-r>`nSxMMj_l`CQ4%(++o&BV`Al`_eS2v zPQH!v2Zo2}zio7%H{fk56XWIO((o@|&fnX5AiP70gKcYx+$a-~4@UO10yWD-&4(ku zba5YaSNUQO4;_>PR~pf2hpc6EUtyiVEA@gNPF+x`7Bqxs{z@YlJCeGfW3JW;V})N0WlvNa{*^u0sbz2|_<{J+6iS21{5<&viH9iyO^R zV-|;elSUXn&pN<8V)o&=6*Y)k0s{p&5DHMG?_`dZ9f?VYkaGuh4`PXc?h?MArOwlFCpt9lLNR*J zVV7cEyIc5vF#@(d1le+pQ835zh~69EA4tCEfmI-F}A10^Q7bX-w-F*cK6WABqv>tT&6OW&aIS2XH~> z4dzH)64fkz14ymK>k49-$XXvL<>aTz0JTh;mwAg~+sbP|+<{ouWV-<(nOFX{IwI-5 zW9dOCn_v-noXO-dP%8Q<{)xQwepgZRPvcdH3N}Cm(~$1FG~p+VpDQ9Q0$U%FG;U|B zgQl(L^CDDKH;C{rc@gqK3+vIcKn|-lYQh>FS8H^S_1OWcSorT9xkj2UPFSPg=rsam z%xiRi>KcVWA%DlrAB+$75C-%7Hv72kdgI%)bkZaq|Mn*1tF)s>4ZGJm<&IbA^1Z4r zA7q~9!o5b9?{(|){Y%{=-y6x75A^Yy`ewbQZr1Y7l$!k_~yp^xROTU>s>@O+|Y zh0Y)f6?vbkn+Wlzg#&;ZKOb=uztHV)6Cn#F!YjT*j<0BazNVYVnDd*2&VV_;9RaTZ z2dFWpjakEm3B4J1C4caxrS3B&@Z)yCoDOc6(9Ge)9v5WTWfkL&l5JMalqmvP zvNQ&OIeV#o?#mRKa+K4IDu53t?XEs^#BTXUDR|=-*%+;wdd6toBgn3?O0jB;)6*EQ z8X4WEoVs$=jW<r(4E02c_xibs%w5$;Q?fg>zNIZl`UNU93h9dxcw6+?h^hJ zu*HNKRljUibfQ`|&s=kZM7Una8@9TGu?G6Ij`BWXsyHd0M${oP8w6#usSd`Nyz%~d zBl@QJ?(q&(Vhu&iP-yq~7j*4dh`B^hGJ^y$fOC-zftQNl^eoadg1<%Uh>^^s=B(jX zLxkJ(ES9DW!`$9wkLecQn$uf&b9r-unPK5xO;?P?uWR%>-NP3RBA0{G^(z=ppmWF^)B|k3 zzpS*TNyGkul-5j2Z`5}S;sz1y(|0TJO@!{6btA@R{jm2Z0Igu&qA$f(>rzZ67DnHS z0nA&WX79G-^C}#t({2uGOkfXfSNCJctY)24#|~5spP`R*%KbPq6`+Eh`hM&(J4(JE zXQ4BSm(557_v38*4xRIz_v8EeG{J5j0toAVoICPlK^VcxhTVFbk!5d>K3RKtPZRD3 z1QPmwgwLn@5kKPk3VSZly&#g%g^8`zce)4{(b7RCq0K21XUO;95)FBs7)P1XQ?K)W z4en*}fevVJFHanhuJb_+E-u0$jOqs~pL!9lOx*+HFvi5wN6FJo66q=phIJ>5BMJ)N z)d|gG>LmjcZ<0vYrnYlk&!-nR0Svsp3EH1MdK09CFk*&4f<%R62SG_yHV$oq$(_0^ z2nEIuv5w-R-(xR$cs>v(SfT*1^2wx;0luDz+*|csxGl9t=ys-0!M6Vhi>8i!{*UPf z?K*Ee6ePnWp&0I00OkBd52^Y1pQiR^+@Wr1;AiRuBCr=}cmsE;RY{~NJa?%c%40Bn z{`rVD*vrr_MzlgH9Mkz(GwxR7xe;_*FY9r=X7})#;Z|$A%JbNm@mCtYdpC)ziDpE! zRJ!?%$8+vCJ{*pXfItL(J!1UCP-G!U2S`7fFi`^f{t=B(>Ue<8;)8n45?-o@6i~)* zy;@B0J2eM{?v`h6bC)gtBXxIH;vgdQrx9fs!uw~vK^o%--@~a}RPYxL(6;cAWK<&@ ze+6{jN0XrwnSax_66%)VP@}vidf2d z3*!^QQkyC`D?CxPQ-t@O6y(I_HgHmhdYpUwkLnTOx>FC52)s`Vj$RXP5p$f>^;8l1 zP8*>WC;{%^3pp>K&&Ak39G(*W_RdiISPhlIeirqr8I zef---m(3nywhL;liCQTLLlLGp;6_ZAD(=aOFE z0yko^*`d^g{ODP)P2pTQ(B&$aRUc>e8o!g)t#?-1hY3!!CN$6J}}Q!Xj{Mo zw6>%U;8=+6{3q!dBxv9lsbx-JDPRwx>2AkjV)vJDc=IqhcqD{{1d@Xxi0~d=;IfDO z2 ziW5-LJ5h&o(`tQ@ISKLJ*yOWXlvdhFPm&*l(?1xW$@E3(WU6$Q!)kPqQ)35lqwrD9 zG~ua5H9|Zq^C7+Q5pvatwdUVgGSH*;577a9; zq66|k74XCI%prJisX=O=U{{tsCnk?&%(des-zAKCe24v3eggv15fhq{1r5B61(eZb zS7dv$1rNf_C=z%cx`SjscfR$BzKBdjhSs1WNgyC~FQj02bb4K|>!BThDL>Ie9FTUhW^ww0R41y2J25KmA1ij{4X`&wP4F*fZ< zVrXF7!z>modXf=@X9tF&gM|Zn28QyVsWw56!jkWu2~ZCtDa<|^sTS)Vp6P(btm?n= zyv44`nIFS+U_r+)+&~Lp#7R-?{zp;lBBy(u~>tnS!vDdI`rv*Lp9G9KVef7%Zx-l+g6Vq_`Ja*HvRU118GVL%f1l_Qq zcTff7gTHl_-9n2xNMBC2J%+Na2m;iAsFK2$W8Z`+_V=tat){)Xc1`qYP{LlbK=EMb ztCj&DtgB5cEpr-vyOt1eTSQa{*gKRfh3?E7w8vD*0<$Eft8|$KVO`LzJIT(oH|`kh zI-thQ&Zl49`d3bbN9@wm$%*pMZvKhWQD8TPjQVus7TQZu1o59f8SWz5Ar5d~tWCB{ zD01eliW{TMV0?Mc(wFyp3D-bjz_Zn@@|=S^q^L{86u?E>DI77nw&xN;`VP7BaQu4j zMm=TcX5P5Hjj=}I+nYL=XP?#~Vdu_Ey~W1)TI~Lvc5iHDj7RUH)Mk#0F*Uz>{()J9o+3+0bJHwg`_oqK;%5>%UgCMy`jGpa`oQ!Z z5*vD+w?4UE;1Q6!VPQSmD>x64&j^s3r?+JS$j?m*saEWXct-RivX zUp%4M8&-+&rkarVt<-_u)=T$}O(CL6LJ0eriU9ZYZ}dRt7|sy?(T5_AuY~8lI9Tte zf>rnd1F`ADI1qRoXuBN$#gwx@re{TwMHuK4JrH6;{tsU>KBbEyjL-E(f1$zuG8O!< z6!`gH+vNUkS2**VIKYBwykc9N#k=)0l#b#(<{>??$yaG8IjP?*hdiCzpC4f@fm7 zR)iKR4mq&`IN_5t1BwcZP$33YKw=GO>{?ARgB8X6GpyoNAa6E>m+)Y6J;=QWKI;Kw58Jc8KX|xe{i; z@_K?bbh5m0gDW@@BlHdoDu&fKl|+KOL}=xRcIY^?O1_E~q1A~k*63~Sk$3&dHtX0X zSBa<80m&Pi+R!-eMLK?T$Te&axWBR%?Q6A41>eZKhFrmV#iM=;5Gd7Uz3@U3!Z%)1V8Ulp$UM$G zc?TKQz9HPkI(ZN(Ax7=b?P@HL+0#s1!K_GbI(Mm37;#qTjkS) za1fq&y>9kwGMOdKD`ja`Fq@u>9NYYXp@FXM{bWjNKyOdni^pq0X!uZ@T+97Y_00(A zIzg*WI4tkq=?dAQji(7rGxGHWB5DG8QDqRLPSo-~1YbppyeROJ%q?ad&fNyN- zlN%UEB{-yUUPXAu<3-f+xCt1*J&|5kx?sxd2}GubEGB%Fsbe`N6HHY}Fu^gTT2Y?y zqXPR(hAF33SJlG&y41OrPSNB*?Y;r%Ct!v-*tc;LZt1|FyzeYmMr>-*SeXB`RG7$F zidokgBjyj8*ogVh((?ypF`MQ;$3|XNByT+-0ahG9h|2ocrpTP7Zzc9f~OBcTpO$tKy02~Q^h z4G|Lz?v`oVZaJ;-3JN;HXRIp;_@!9F?o{Z#Cnwc`@75_Jj@PNmo5~NVP2yTisFvPV z7ZNzG)~pb8x@$C()}tMzAgo~(+%#=9 z3D4Pj zgX>_Ft~VI`tZ>K36OS*^xq3(Rg&$6Z%DWp8m=g93H+oO%I%V(Gov0UMUn1}XyW>1s z!1GZ|*Y<*h5wUz1ju;VKZNh-vqRV&jh!IT|m&6CiraWRq@VO!Y)^^05IDoP(eWWVM zyPWy1+=H}6OeBF1QGz4A0k&KtS-G{G*KSfeV8~Jenq8vgdzx*7q`k> zwk^Rb^9Y+=8dvLnkDcoZ+pD97=uqje58|<=lpc_!4h^DA4 z(*yFp-9Wa%EQ>5wO=z{rvWjGr!5nQnVfM!w^;{4siX&v(D!)&eJ3v&49JKUYilAT7 zDgG9li^AIY@bq#K>GYqKm^5m*LuJB3urUKC-R)r@@Fsi%)1*jS- zw6uR#C1h(V0$jw#73o7!`NKjAL zTBmy>4@FvdaG^XBSWuG?2Nz1-bqN&_XU={^7VmbK1YDWSY{KF(OYxQk*>+h_mL7@a z#Cyn9TpR)~K^PD5DN*`f&Bx7vZ5*o?C@z!rIp8N&5+p{vR0IR68`4kh<-9B@(BmQ$!xc7{OTee+HMw#Q`9j<}Px61?N>A{Tp_BIiXs2|RjHc=Q=|2A40 z5mcj~Kv!GVgdc_a2eJ^0f+GC`t04-C`A2@lC{f+JOYLw!W#L`fL%;vSpC9?_A)Eb+ zV{g0cwiw@7Y-Od|rJTvwCGakKS8}W9z#=!8&J-W0HVJj>ObE(HW9p<72MKzj7MmQX zBdsf8;&^2KDlc%336)4c3`wp2etK>`D=+3B!TXbqQL{SSo8Mmo<1U?)N2#iT@IQ+Xf)RWhkD# zTvFWw8;q1F49o8*t1imQHV+9_tf`vLRxEw z@c0U4&8~#h<`$6(`O9vR8tq1C^zOPT(ColhDL9-x35BOXvx8K;h2Lv~zt?9}mgQ_2 zI@4zrsNDzWsqmYRZQ0Ngu^g!WUgl;$hc8uLcuq$Mj+C|(`$@j zcshH0jZuK7v-(J9rcNsV_0sMm5CTR4GEdhF6X+fOjO&Hn28%0?(bQq*Onn#7U6fR zFr#n|JaW+Y>oV<&^Db9hz|RNRBmOJ+?MIS)wkY4*;6SwTD`i=F=tvwya0R6YQm&%? zwvzT+FzQ@I^?*k}+gBr<3<~3lV~fD)zmTU||D~$(S|V+5>~S5Aj$&$7<8#mTRGpxi zkbpIGb(cXtyC&YmT9k3zKx~N6n%^ioTBP4338lVH)%q({D+u+ksk7@De?Q^~jT>Oh z`pxQGY)}*Pn*j>>Z{fS&#KhdHCT61=#cgV0ZWj|%eFxgg*ktm+VO+5Ae2Ko21_QJx zvP@VYQ*c*7kZPD0aS1PQc*X*&5o_iILKCwAm+pXOWb`91gzgCO4ghCDo`6vSm9Y@q zTsCTfXy!D@her@nY3`*xOa~;R+rSAtCPbU?M+`_tQo^kB`xK>00n(IC%1<~Aq-e@$ zxC%yKqLIZlmE<7>n2p3ce&Dr!*%ipvqJVGA3+#4E9eA?FR=A0abybAxBZTDy9V&w3 z!5Q>$|SZXU>F?Yc@hKS;&Dec>8{xt3E>7bPJm#KJ{Pzf_T*%WTU3Ie&JRo>c_6CK^{* z&5-`g(Rfrf?!S^}Bq#gwV`$lo|0hB+#^8>hIS^=EbZy-m(IHVoIx=6$0$1ZDetW|W z)5!y z5RB$4bq(PmDxVA|_-lD=z2O-F%q7a)s1^o@i+SN|1D%4O@w$dHuN9{i9>9MElDpOL zwCL;AUgq(=eDg_r*|)(w7kCa}-h9kS_)6+VaN^1zCyC~5s=C`%b?|9^$H~=gB2;6{Wy52j@yHm7unhb_`mwE9jwFJxfo%~wexDf9%)6OD4xMz2NOAPcc|Qn|#74dcEV?4OnMDN7d=K(HE{FHLEs~%(A5w%1 z9^SW7k_iL==UCP@GsWz&^I;TM1|!>v&g~%BL%hGq(1gYI2)FP}pV-{4w8sS76{$ai zc(cc0_kM7j;b~2UI3G+9B{O}eWOnqY700HcG^OnpWyGmtI>h&4TkKVZlz+;?XA!Bq z$}u=MSFgFo3c|Zzl?#^8N#CK9zC&&9*ZO{0 zRymou4_m9PkT`R`uJ%GLBa2xaInWxW9l^SJ-ZWWtI-mfy6rk`eHOFs@vUpd^_hxCY zM9ZFr^Az7uI}n@| zB3;?o1WG6sLWJq_=guHOg7Crzhp@vaUBx^Xwk4xjQsHnrPn+b(?+BEdxdfuYxGLX$ z-ZFcF@=A1N6!VTiVtvyDVG#mHgY-8WG13k|8m_OaZ*IJ9eWzn^W|*o}31nx&UGtMd z$*i>8&f7a3CB?1^yTUxmN+q)r^MC+8rbUjg%Feex6Jey(vq)K)xJTKM zCN*`!5(m$+Mw6Mzxb>|`{>S{c8K2t#UB7yClktSjp}XX+&CBA)erx2eJ34JpB;;YO zwUza?W5N~T?)r#eWsB=8;0-><8_#L%Z0?GP_yClLP))vgUL@fw#E|myPwqB?c)?~> z+tw1V77mhvyx<-q7z&vMDsi)l7yz=_P&U5|`EaJMDyR&%)Ws`63%UFu6v)Yo7l0!f z(ed6xuN{8Lb#1$e%*aWD0@h}062WB0HTu(<+ja6&{o2;@n2||S*|+V zCgUr}k!KI*?VF9z=+bz8L`9^a0(C4@mXK2~V^zoj2Fm%y&4xcO?&6j1#r6(CEXCx4 zo>#A%KHrl&ip8%?g@_SYLphXlZ~$ICU{W-yV^q zt*DxLyCmg{e~T~u5DXBnp%SaZSQV;pGRx~zBlO_nYJ{;P)ZZ*;DxX%PW!FPeAf%ON z$txrc%5K4*Qg5ZQdl^fEY(V((r|7J3xN1QN5(I?K z1#L4GK?Uw7en&uk&uqH2g`7{ZO?Zz*pg$d;pGGlOcnc(`DS1u&}=rUZMdrM^{&2gH2}{zY_cF-^!4 zy39?rbz9d2xX>jZ%;AoSEE~dsQxNuUmS*?Zb1vrJ*J|0eOT;3lr$QVccs;zq@Gs|; zyOMpuOVxc0835IQp)1rYzRkM1#I(v7p zgt?GrMig7qxrzFReE`1~#F>IkD=MzWWPv>ulLgoBU`nOa=!zypwUO-_U_`NMF_v); z9ai}r6lhLxpr|h@Dg+~{GGOSwSyhOJz<>(PV{tW5AXrc_kOyUl9b3#X7~nh6#8q%v zA;;j@M#KzUKC60|#rNK|afe;4(-+kDOz0|ab=OwTs2vk)STy(Io<(7bn0?xIUN=<_ zrdmZ%f@f|wa%?;Jv0ceQ-aK9l1Rh~?$dj)!8HJk{LE`cr;~P`8+-zld0>>^mDk?7T zwM15fPx7t!Tz^Uu(jva;6q`>MF?QInojkfbIlHs5yScLPs`k3JMwSjfRvJBrVfXCW zmGBD*l&0^NExY!x(sgnav3l~+q$?LN!DslimB|6JLm|>_hR$N%eLS|q@SF)Im(nF` zocWwpih^S?&-3zk@t)+Sl?xWe$iHxuf8I{^<@Q05Mhg zEIs?Ymt-%~UdH>vxeE~gJqAE~06!KigwLV$SMV30txR_x#IJrpwwIC;fUNPVs1Vrt z5Tg)b{QZ20bJE^GF|&HS<|= zO_u|Yy`<@kepK#1;U*;Y7&f5^^P?Zg9Q{K%TK7lH!uc@;^Z%$e@o`zykgh_2v_D2~ z1A~X9RI`6q&7M$0G(K0& z;-MDLOiuPjzd)k{Abdm|mA!H!RCRwb!&kC>t9j#VRlSZNqqI%*Z)N+&ccT3mgWqIv zVA5c1baQ8<<&3)SMiEVPkO+44J>z#g4pV#GrlcWuA-9Mz*b^l{Zt?QT5+RUZ5Jmai znv@urdB8c&6bqfZ2MME-SVFE_Cxe`sP+ggcEY}bUXowvuR|&<{VnpazGKYL+kqXN} zCdzaj88SjsjHRdAL|AD_d5kpGWp_HoZWBU{3S~f_m0>fRQ6}X^rYc?JqSAEuZVET> z{V$|sosIBu%$-HaB9`82I&Z*BX>J?thV=wA#z4)6*kSDxiGk~$jPP4X#5*IeO6+WG zY>?LVtGej#@`lNst&LMjvbyPnZ7M=lCWwzcwwN7Vw8Mz~Xqf0!jyZ0U?J?P^1m)Ci1rimYHwf?GLA^W8VZxVNtn}9<`jEme zRI>Y@7Ab5pN#U3MNuld28)l1i0qW^a=GT;fg;H`5;~R&nujpGF-}6FB&LAR@Bfhio z*lI_hOHj!$WHTL2O%%?LrTr_BQvQ1&O8KAvPAU1Zu;ZMRX4tUS+IZ@;q+n>Av=(#z z52jLCN&W;YRyp3re>yFx-2PKIZkm=)Ewn>5^Lrp>&J4Qb(H&rK@!oGyQoDW8(%4r}EL&rK?c zw)JZo`^=1prgzX+%bBxN5i`)QN!ETBPSZ1Bxku+%wLX|k_Q;B*rV1{h3F^e=&WaTx zg#1k0h=oj>jH{Z;<7UbSdAeXRzi}5rHG({uPzpqfX`oO{dmjJjFG!l@_yg^6f$Ls0 z^?dhdY-FToQUfZRvd;TJX$RCy1c9unr13!IB!JLaYCKRfiK}4@OFi2h4>mk}vLiT+ zKo3wiiN?+~8(aS9GsY5ovX%;g^5T6)i9IKS7ff`7_#^v_y78%Apb??s1GM%5I{Ez) zytOw@36tH4lu;u)YAZZIBN(hlQ-5o@L+H3_wabwXZ-3YzQa&!3f50ZmpJ6SMS zf;)gjOT;fsDB#FffKy^WaDCv3-EwKAls%a7jekoH*s}|G>_d1Q4;Btw#of;tc2Mgg zg+`0PhSANb8WQ??=MZy*OdCoAED=TuUCnf(i~fjWfnoiViSQxD&2ZUAA+t}I5UrHJ zXBnnK!wcci2oW8sXr$sp!;%kml$#h%uaGHv6@_a#)pqxO!|s|hZb(Jd90Fyvn+eBN z@+(@k>XiHC-;cFwqf;J`e}CSp4NrMc{$0?fRSqiKB7dCOrWH06vcV6DpNMABR@c(L z=9GHVb8~peVyfS@mCZr$RirA>tb3bCfca1hB0J-eCXb~jZz&jo1#sK0Q9&-q=qlBV zeMW|THMPv|v+;w6lDu}mjlcJYq`Wo}HdB#@AU1tEoVQ7ZDiw!6YpICHQ8YgnMFNO# zQBx~|Y(dH#o>M<-HknAWP`+?-KWQ+XodS7w;GT`phuF_Wf+jM5v5h{XCo~Z8qVot> z-QL9fL%@x+Hk?@ptwBO^&QRM1{{DVFP?uU_9@JXq9Y!Z@S*%a{KG=v$VG$*(7n-nJ zlg6w$W#S3G-8+I;9!~N^N1~UAp$VRvge&v~xC44G%Tmi#Lzn=q0>%85(#BC0n%J}a zl7(>D@2pbgpzs(aNeh**vPUDE&Lvo&F{lOMF$B2)3ySxv1|G0hjUK~-wY=^P!&|+a z<%3`g5kvLpRdN%E=RxxpE|^_VP{0HoCo>zU#)yvRj_2nbFhXJGJca6&Vj~!Ov+Pq% zrct&e8!D^9#>lUuZ}OtB>=rx?lsF*jf;=@S@&v*zIt@ux6aG{?V*>TRnas=0$?BRh zeF3;a3XrK}E5bX1M-lnNi3qj!n;ib_0mDJWpPrmL+vT)?Dr=zm%-abAWx?}O9W9-Z zmM&+RApJyH1#%~<8d2TG6(DX2(0)NSa7#>9Bfy&?L7)+!GI3R=s98P_L>Kg0!Le+R zX>m809J_=mBnwOj<+j?68wp?;K)+dl2=_pTVVXD$Nw5{*6K}KS*ay$xxd)B>q?u|z zH(9pYK<2K>Jx(aqH0hlN2}S0=20x6q`CUk9stJpdRsKHzwtWgm}vNv-p`* z!OaIR;)8pQ{3@vS)mCyYi7(4i)atvq-%%kyK`d|yzo^&n*DRCWaV}RAT0?q#NjWZ4 zl;d(#lJRreno^Ed(ZFC1v!~baL4_~&AT;<#@iQ7zD^xNbp-5J!8exZjm25;`DHuXV z!79n-0@28^FNL^z%&1ku{}Mf`qjMAcDRW+9t+DJBlNg58C8^NiPwf{J@ED(Ah{e$wuvQEsM9M4X57{`mHK06D=2`FXFw0u;EK zwnyR|;`losQe%foWGhO5K}akik+n1ffCpen(6-b6_;iQ*6spKa=-mW}$D?w=biio3 zn6$^y0pAm}i%Mw<63K=Br26J5wb(o5xBjPj!C`FOU9<L`uWIBO z)d)CF=GaHHP4oe*rq~4FHpS(r@Nn=28#OPf>$RlAr=K9S-u-ea`;1$A5tXLBM3X8Q zQAE4Xd6~a?*vLNnfZ7bzEbSFJr$r?dI8O(WPBQW;meFgb*Ot)sd6jZ-zku=|l5-3V zl=C%J4|svYaz?$c^Ul{H`2wP)n;|JIMCF zOA}4;6vaT{+i~eEmhoPEN7JoxRCNvH95_}TMbEMLHQdlMZAMiy8Mu9beCl>B^L!Yu z1X;osEaM~UrCd`~obgAw?bM{Yj??Ls7eq@ZHk$q?IjG>rbSnq=cQr}*QO76d+0;K( ztM!>Yn(n`g)q-q_`m%dy1e;%YVdPI&t=Zw| z(pi}KG`v7pnweS5gE#2?8}c~hL-9V1JEm2h%5bv4;R>uq=^AR_j<)&KM!0G3WVJyOU2X?US->5S6wI9`7% zWRpX0<@~5oe71k%fK3LV%Oh$bv6zCU;TEPV-JStAk8&{Z^C)M~bn7_uP9dp>y*I!8 zC}Ixyq01X!P~P8}#jM(|V*#l61cem#!C_bgPUvpNsUyQP+KY)WlHxbeNlu5#PpI~Y zC1gS9{D@Ro2$&yiaOgbu!(@G^X?m7W3+hgX7LdM&xf^}IMVPkc)WTc_?b(LWFZbb<6DT`I(3+Z1W+>S#TqkvX9TR3|1E+P`=|x;wh-S`!u=+CX!` z3#3^UK+t}<;u$YmD-I1OLP3eCEvKLngrj{2;@_%IvCJ8-Sj#LvI!GS{Qef@IN?zq( zeP9ed8&+*}lM~WaOO5Y*!m6!rY85L#3~f{Y!qqD}ezs)pe8?MTf=6A1iek+`&pnG+ z?i>6k9~#;A>?1(M7_{S{@BKOoouR}(iQN}YA0;E<`-m#<`&ktmiioS>s`cXPuU_>-11LX^@%Hrp z`iBRc`6seXx3&m#er#?Iru~`r#$V(bB@BV-e-(q~y-g0UtBR$4lHjZ%_fuZ^krB|a zAi>YXaz}M&AjNW@IH@X>Du+7q=KhoP!~HG(hn!Lz_aB%7yutq>p+i9%T!-OtK)e6T zgaeJ8rKEU{uha#=bg9B*#y954{?smRa|=m z?>%k=4JoVB0D}h~H@x-~2&Dcu$)7z)GI#XGPCT&_v17%>Z3sE&_DuWdwjclbaSndm V2R|NzA4$QFl<@y2CH$N1{{T}RkHr80 diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index a22a9203..324ef4a4 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -53,7 +53,7 @@ LIBTCPIP.SKT.ACCEPTA .EQ 56 LIBTCPIP.SKT.SENDA .EQ 58 LIBTCPIP.SKT.SEND .EQ 60 LIBTCPIP.SKT.RCVDA .EQ 62 -LIBTCPIP.SKT.RCVD .EQ 64 +*LIBTCPIP.SKT.RCVD .EQ 64 LIBTCPIP.SKT.CLOSEA .EQ 66 LIBTCPIP.SKT.GETTABLE .EQ 68 LIBTCPIP.SKT.GETA .EQ 70 diff --git a/LIB/LIBTCPIP.S.ARP.txt b/LIB/LIBTCPIP.S.ARP.txt index 0d231c05..b33a40dd 100644 --- a/LIB/LIBTCPIP.S.ARP.txt +++ b/LIB/LIBTCPIP.S.ARP.txt @@ -5,9 +5,7 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -ARP.IN >PULLW ZPFrameBase1 - >PULLW ZPFrameLen1 - ldy #S.ARP.TPA +ARP.IN ldy #S.ARP.TPA ldx #S.IPCFG.IP .1 lda (ZPFrameBase1),y @@ -39,59 +37,36 @@ ARP.IN.REP >LDAXI S.ARP.SHA clc ARP.IN.RTS rts -ARP.IN.REQ jsr NEW.ARP.FRAME - bcs ARP.IN.RTS +ARP.IN.REQ ldy #S.ETH.SRCMAC+5 + ldx #5 - phx - >STYA ZPFrameBase2 - ldy #S.ARP.OPERATION+1 - lda #S.ARP.OPERATION.REP - sta (ZPFrameBase2),y +.1 lda (ZPFrameBase1),y + sta ARP.REP.DSTMAC,x + sta ARP.REP.THA,x + dey + dex + bpl .1 + + ldy #S.ARP.SPA+3 + ldx #3 + +.2 lda (ZPFrameBase1),y + sta ARP.REP.TPA,x + dey + dex + bpl .2 >LDAXI S.ARP.SHA jsr SetFramePtr1AX - - >LDAXI S.ETH.DSTMAC - jsr SetFramePtr2AX - - ldy #6 - jsr CopyFramePtr12 - - >LDAXI S.ARP.THA - jsr SetFramePtr2AX - - ldy #10 IP(4) + MAC(6) - jsr CopyFramePtr12 - - >PUSHW ZPFramePtr1 still point to SHA + >PUSHW ZPFramePtr1 >LDAXI S.ARP.SPA jsr SetFramePtr1AX >PUSHW ZPFramePtr1 jsr ARP.ADD - ldx #5 - ldy #S.ARP.SHA+5 -.4 lda IPCFG+S.IPCFG.MAC,x - sta (ZPFrameBase2),y - dey - dex - bpl .4 - - ldx #3 - ldy #S.ARP.SPA+3 -.5 lda IPCFG+S.IPCFG.IP,x - sta (ZPFrameBase2),y - dey - dex - bpl .5 - - >PUSHW ZPFrameBase2 - jsr SEND.ARP.FRAME - - pla - >SYSCALL SYS.FreeMemA - clc - rts + >PUSHW L.ARP.REP + ldx #DEVMGR.NET.SEND + jmp NetDevJmp *-------------------------------------- * ARP.CLEAR *-------------------------------------- @@ -228,60 +203,21 @@ ARP.QUERY.I ldx #0 tax cmp #K.ARPCACHE.SIZE*S.ARPCACHE bne .1 +*-------------------------------------- +ARP.REQUEST.I ldy #3 +.1 lda (ZPPtrIP),y + sta ARP.REQ.TPA,y + dey + bpl .1 + + >PUSHW L.ARP.REQ + ldx #DEVMGR.NET.SEND + jsr NetDevJmp - jsr NEW.ARP.FRAME nothing in ARP cache, send ARP request bcs .9 - phx - ldy #S.ARP.OPERATION+1 - lda #S.ARP.OPERATION.REQ - sta (ZPFrameBase1),y + jsr ARP.ADD.PENDING ZPPtrIP still pointing IP - ldx #5 - ldy #S.ARP.SHA+5 -.71 lda IPCFG+S.IPCFG.MAC,x - sta (ZPFrameBase1),y - dey - dex - bpl .71 - - ldx #3 - ldy #S.ARP.SPA+3 -.72 lda IPCFG+S.IPCFG.IP,x - sta (ZPFrameBase1),y - dey - dex - bpl .72 - - ldy #3 -.73 lda (ZPPtrIP),y - pha - dey - bpl .73 - - ldy #S.ARP.TPA -.74 pla - sta (ZPFrameBase1),y - iny - cpy #S.ARP.TPA+4 - bne .74 - - lda #255 - ldy #S.ETH.DSTMAC -.75 sta (ZPFrameBase1),y - iny - cpy #S.ETH.DSTMAC+6 - bne .75 - - jsr SEND.ARP.FRAME.I - - bcs .76 - - jsr ARP.ADD.PENDING ZPARPIP still pointing IP - -.76 pla - >SYSCALL SYS.FreeMemA - sec .9 rts *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 48ea2f22..b9b885e5 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -5,42 +5,6 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -DNS.IN ldy #S.DNS.F+1 - lda (ZPFrameBase1),y - and /S.DNS.F.QR - beq .9 - - ldy #S.DNS.ANCOUNT+1 - lda (ZPFrameBase1),y - beq .9 - - ldy #S.DNS.QDCOUNT+1 - lda (ZPFrameBase1),y - tax - beq .3 no QUERY to skip - - ldy #S.DNS Read query - -.1 lda (ZPFrameBase1),y - beq .2 - iny - bne .1 -.2 tya - clc - adc #4 Skip QTYPE & QCLASS - tay - dex skip another QUERY ? - bne .1 - -.3 iny skip high byte of offset - iny skip lo byte of offset - - clc - rts - -.9 sec - rts -*-------------------------------------- DNS.CLEAR ldx #K.DNSCACHE.SIZE*S.DNSCACHE .1 stz DNS.CACHE-1,x dex @@ -56,11 +20,10 @@ DNS.CLEAR ldx #K.DNSCACHE.SIZE*S.DNSCACHE * CC: hit: IP filled with address * CS: missed *-------------------------------------- -DNS.QUERY >PULLYA Get host string - jsr PSTR2DNSHostName - +DNS.QUERY >PULLW ZPPtrDNS Get host string >PULLW ZPPtrIP Get IP address to fill +DNS.QUERY.I jsr HST.PSTR2DNS.I ldx #0 .1 lda DNS.CACHE,x @@ -106,126 +69,60 @@ DNS.QUERY >PULLYA Get host string tax cmp #K.DNSCACHE.SIZE*S.DNSCACHE bne .1 +*-------------------------------------- +DNS.REQUEST ldx #0 + ldy #12 -DNS.REQUEST jsr NEW.UDP.FRAME - bcc .1 - - bra * - - rts - -.1 phx - - ldy #S.UDP.SRCPORT - lda /UDP.PORT.DNS - sta (ZPFrameBase1),y +.1 lda DNSHostname,x + sta DNS.MSG,y + beq .2 + inx iny - lda #UDP.PORT.DNS - sta (ZPFrameBase1),y + bne .1 - ldy #S.UDP.DSTPORT - lda /UDP.PORT.DNS - sta (ZPFrameBase1),y - iny - lda #UDP.PORT.DNS - sta (ZPFrameBase1),y - - ldy #S.DNS.ID - lda A2osX.RANDOM16 - sta (ZPFrameBase1),y - sta DNSMessageID - iny - lda A2osX.RANDOM16+1 - sta (ZPFrameBase1),y - sta DNSMessageID+1 - -* ldy #S.DNS.F -* lda /S.DNS.F.RD -* sta (ZPFrameBase1),y -* iny -* lda #S.DNS.F.RD -* sta (ZPFrameBase1),y - - ldy #S.DNS.QDCOUNT - lda /1 - sta (ZPFrameBase1),y - iny - lda #1 - sta (ZPFrameBase1),y - - lda #S.DNS - clc - adc ZPFrameBase1 - sta ZPFramePtr1 - lda /S.DNS - adc ZPFrameBase1+1 - sta ZPFramePtr1+1 - - ldy #0 -.2 lda DNSHostname,y - sta (ZPFramePtr1),y - beq .3 - iny - bne .2 - -.3 iny +.2 iny lda /S.DNS.QTYPE.A - sta (ZPFramePtr1),y + sta DNS.MSG,y iny lda #S.DNS.QTYPE.A - sta (ZPFramePtr1),y + sta DNS.MSG,y iny lda /S.DNS.QCLASS.IN - sta (ZPFramePtr1),y + sta DNS.MSG,y iny lda #S.DNS.QCLASS.IN - sta (ZPFramePtr1),y - - lda DNSHostnameLen Get hostname len again (QNAME) - clc - adc #6 (len+1) + Ending 0 + QTYPE + QCLASS - adc #S.DNS - sta ZPFrameLen1 + sta DNS.MSG,y + + iny + tya + sta DNS.MSG.LEN lda #0 - adc /S.DNS - sta ZPFrameLen1+1 + sta DNS.MSG.LEN+1 - ldx #S.IPCFG.DNS1 - ldy #S.IP.DST + lda hDNSSocket1 + beq .9 + + >LDYA A2osX.RANDOM16 + >STYA DNS.MSG + + >PUSHW DNS.MSG.LEN + >PUSHW L.DNS.MSG + >PUSHB hDNSSocket1 + jsr SKT.SEND - lda IPCFG,x - beq .5 + lda hDNSSocket2 + beq .9 -.4 lda IPCFG,x - sta (ZPFrameBase1),y - iny - inx - cpx #S.IPCFG.DNS1+4 - bne .4 - jsr SEND.UDP.FRAME.I - bcs .8 + >LDYA A2osX.RANDOM16 + >STYA DNS.MSG+S.DNS.ID + + >PUSHW DNS.MSG.LEN + >PUSHW L.DNS.MSG + >PUSHB hDNSSocket2 + jsr SKT.SEND -.5 ldx #S.IPCFG.DNS2 - ldy #S.IP.DST - - lda IPCFG,x - beq .7 - -.6 lda IPCFG,x - sta (ZPFrameBase1),y - iny - inx - cpx #S.IPCFG.DNS2+4 - bne .6 - jsr SEND.UDP.FRAME.I - bcs .8 - -.7 jsr DNS.ADD.PENDING.I - -.8 pla - >SYSCALL SYS.FreeMemA - sec +.9 sec rts *-------------------------------------- * DNS.ADD @@ -233,10 +130,11 @@ DNS.REQUEST jsr NEW.UDP.FRAME * PULLW = hostname PSTR to Add * PULLW = PTR to IP *-------------------------------------- -DNS.ADD >PULLYA Get host string - jsr PSTR2DNSHostName +DNS.ADD >PULLW ZPPtrDNS Get host string >PULLW ZPPtrIP Get host IP address + jsr HST.PSTR2DNS.I + lda #$80 sta DNSHostTTL+3 stz DNSHostTTL+2 @@ -323,10 +221,10 @@ DNS.UPD.ENTRY lda Status sta DNS.CACHE+S.DNSCACHE.STATUS,x bmi .1 pending? - lda DNSMessageID - sta DNS.CACHE+S.DNSCACHE.ID,x - lda DNSMessageID+1 - sta DNS.CACHE+S.DNSCACHE.ID+1,x +* lda DNSMessageID +* sta DNS.CACHE+S.DNSCACHE.ID,x +* lda DNSMessageID+1 +* sta DNS.CACHE+S.DNSCACHE.ID+1,x bra .9 @@ -356,7 +254,51 @@ DNS.GETCACHE >LDYA L.DNS.CACHE clc rts *-------------------------------------- +DNS.SKTPOLL lda hDNSSocket1 + beq .8 + jsr SKT.RCVDA + bcs .8 + bra * + + + +.8 clc + rts + +.9 sec + rts +*-------------------------------------- + ldy #S.DNS.F+1 + lda (ZPFrameBase1),y + and /S.DNS.F.QR + beq .9 + + ldy #S.DNS.ANCOUNT+1 + lda (ZPFrameBase1),y + beq .9 + + ldy #S.DNS.QDCOUNT+1 + lda (ZPFrameBase1),y + tax + beq .3 no QUERY to skip + + ldy #S.DNS Read query + +.1 lda (ZPFrameBase1),y + beq .2 + iny + bne .1 +.2 tya + clc + adc #4 Skip QTYPE & QCLASS + tay + dex skip another QUERY ? + bne .1 + +.3 iny skip high byte of offset + iny skip lo byte of offset +*-------------------------------------- MAN SAVE LIB/LIBTCPIP.S.DNS LOAD LIB/LIBTCPIP.S diff --git a/LIB/LIBTCPIP.S.FRM.txt b/LIB/LIBTCPIP.S.FRM.txt index 381f9dcf..c23b5428 100644 --- a/LIB/LIBTCPIP.S.FRM.txt +++ b/LIB/LIBTCPIP.S.FRM.txt @@ -119,10 +119,6 @@ NEW.ARP.FRAME jsr NEW.ETH.FRAME clc .9 rts *-------------------------------------- -* Out: -* Y,A = Frame PTR -* X = hMem -*-------------------------------------- NEW.ETH.FRAME >PUSHWI K.ETH.FRAME.LEN >PUSHBI S.MEM.F.INIT0 >SYSCALL SYS.GetMem @@ -131,14 +127,18 @@ NEW.ETH.FRAME >PUSHWI K.ETH.FRAME.LEN clc .9 rts *-------------------------------------- -* In: -* Out: -*-------------------------------------- SEND.ICMP.FRAME >PULLW ZPFrameBase1 - >PULLW ZPFrameLen1 - + jsr FRM.GetLen1 +SEND.ICMP.FRAME.I >PUSHW ZPFrameLen1 - >PUSHWI S.ICMP.TYPE + >PUSHWI S.ICMP.TYPE-2 + + ldy #S.ICMP.CHECKSUM + lda #0 + sta (ZPFrameBase1),y + iny + sta (ZPFrameBase1),y + jsr IP.ComputeChecksum phy @@ -150,117 +150,154 @@ SEND.ICMP.FRAME >PULLW ZPFrameBase1 bra SEND.IP.FRAME.I *-------------------------------------- -* In: -* Out: -*-------------------------------------- SEND.TCP.FRAME >PULLW ZPFrameBase1 - >PULLW ZPFrameLen1 + jsr FRM.GetLen1 +SEND.TCP.FRAME.I + bra SEND.IP.FRAME.I *-------------------------------------- -* In: -* Out: -*-------------------------------------- SEND.UDP.FRAME >PULLW ZPFrameBase1 - >PULLW ZPFrameLen1 + jsr FRM.GetLen1 SEND.UDP.FRAME.I ldy #S.UDP.LENGTH+1 lda ZPFrameLen1 sec - sbc #S.IP + sbc #S.IP-2 sta (ZPFrameBase1),y dey lda ZPFrameLen1+1 - sbc /S.IP - sta (ZPFrameBase1),y - lda #0 SET.UDP.CHECKSUM - ldy #S.UDP.CHECKSUM (0 = Disable UDP Checksum) - sta (ZPFrameBase1),y - iny + sbc /S.IP-2 sta (ZPFrameBase1),y bra SEND.IP.FRAME.I *-------------------------------------- -* In: -* Out: -*-------------------------------------- SEND.IP.FRAME >PULLW ZPFrameBase1 - >PULLW ZPFrameLen1 + jsr FRM.GetLen1 -SEND.IP.FRAME.I ldx #S.IPCFG.IP - ldy #S.IP.SRC +SEND.IP.FRAME.I ldx #3 + ldy #S.IP.SRC+3 -.10 lda IPCFG,x +.10 lda IPCFG+S.IPCFG.IP,x sta (ZPFrameBase1),y - inx - iny - cpy #S.IP.SRC+4 - bne .10 + dey + dex + bpl .10 - jsr ARP.RESOLVE - bcs .9 ldy #S.IP.TOTAL.LENGTH+1 lda ZPFrameLen1 sec - sbc #S.ETH + sbc #S.ETH-2 sta (ZPFrameBase1),y dey lda ZPFrameLen1+1 - sbc /S.ETH + sbc /S.ETH-2 + sta (ZPFrameBase1),y + + lda #0 + ldy #S.IP.HDR.CHECKSUM + sta (ZPFrameBase1),y + iny sta (ZPFrameBase1),y stz IP.CHECKSUM RESET.IP.CHECKSUM stz IP.CHECKSUM+1 - stz IP.CHECKSUM+2 -* stz IP.CHECKSUM+3 Optimized for IP Header + + clc ldy #S.IP.V.IHL.DSCP.ECN + ldx #10 10 words for IP Header + .1 lda (ZPFrameBase1),y + adc IP.CHECKSUM + sta IP.CHECKSUM + + iny + lda (ZPFrameBase1),y + adc IP.CHECKSUM+1 + sta IP.CHECKSUM+1 + iny + dex + bne .1 + + ldy #S.IP.HDR.CHECKSUM + lda IP.CHECKSUM + adc #0 + eor #$FF + sta (ZPFrameBase1),y + iny + lda IP.CHECKSUM+1 + adc #0 + eor #$FF + sta (ZPFrameBase1),y + + ldy #S.IP.PROTOCOL + lda (ZPFrameBase1),y + cmp #S.IP.PROTOCOL.TCP + bne .3 + jsr TCP.ComputeChecksum + bra .8 + +.3 cmp #S.IP.PROTOCOL.UDP + bne .8 + jsr UDP.ComputeChecksum + +.8 lda DevFlags + and #S.DEVINFO.NET.FLAGS.ARPOFFLOAD + bne .81 + + jsr ARP.RESOLVE + bcs .9 + +.81 >PUSHW ZPFrameBase1 + ldx #DEVMGR.NET.SEND + jmp NetDevJmp +.9 rts +*-------------------------------------- +SEND.ARP.FRAME >PUSHW ZPFrameBase1 + ldx #DEVMGR.NET.SEND + jmp NetDevJmp +*-------------------------------------- +SEND.ETH.FRAME >PUSHW ZPFrameBase1 + ldx #DEVMGR.NET.SEND + jmp NetDevJmp +*-------------------------------------- +RCVD.FRAME >PULLW ZPFrameBase1 + bra * +*-------------------------------------- +RCVD.FRAMEA sta hFrame1 + >SYSCALL SYS.GetMemPtrA + >STYA ZPFrameBase1 + + jsr FRM.GetLen1 + + ldy #S.ETH.ETHERTYPE + lda (ZPFrameBase1),y tax iny lda (ZPFrameBase1),y - iny - clc - adc IP.CHECKSUM - sta IP.CHECKSUM - txa - adc IP.CHECKSUM+1 - sta IP.CHECKSUM+1 - bcc .2 - inc IP.CHECKSUM+2 -*.2 bne .3 Optimized for IP Header -* inc IP.CHECKSUM+3 Optimized for IP Header -.2 cpy #S.IP + + cmp #S.ETH.ETHERTYPE.ARP + bne .1 + cpx /S.ETH.ETHERTYPE.ARP bne .1 - lda IP.CHECKSUM - clc - adc IP.CHECKSUM+2 - eor #$FF - ldy #S.IP.HDR.CHECKSUM+1 - sta (ZPFrameBase1),y - dey - lda IP.CHECKSUM+1 -* adc IP.CHECKSUM+3 Optimized for IP Header - adc #0 Optimized for IP Header - eor #$FF - sta (ZPFrameBase1),y - bra SEND.ETH.FRAME -.9 rts + jmp ARP.IN + +.1 cmp #S.ETH.ETHERTYPE.IP + bne .9 + cpx /S.ETH.ETHERTYPE.IP + bne .9 + + jsr IP.IN + bcs .9 + jmp DNS.SKTPOLL +.9 sec + rts *-------------------------------------- -* In: -* Out: -*-------------------------------------- -SEND.ARP.FRAME >PULLW ZPFrameBase1 -SEND.ARP.FRAME.I - >LDYAI S.ARP default ARP Frame length - >STYA ZPFrameLen1 -*-------------------------------------- -* In: -* Out: -*-------------------------------------- -SEND.ETH.FRAME >PUSHW ZPFrameLen1 - >PUSHW ZPFrameBase1 - ldx #DEVMGR.NET.SEND - jsr NetDevJmp +FRM.GetLen1 lda (ZPFrameBase1) Get Frame Len + sta ZPFrameLen1 + ldy #1 + lda (ZPFrameBase1),y + sta ZPFrameLen1+1 rts *-------------------------------------- MAN diff --git a/LIB/LIBTCPIP.S.HST.txt b/LIB/LIBTCPIP.S.HST.txt new file mode 100644 index 00000000..a0f5c625 --- /dev/null +++ b/LIB/LIBTCPIP.S.HST.txt @@ -0,0 +1,176 @@ +PR#3 +PREFIX /A2OSX.SRC +NEW +INC 1 +AUTO 6 + .LIST OFF +*-------------------------------------- +HST.GETBYNAME >PULLW ZPPtrDNS + >PULLW ZPPtrIP + jsr HST.ScanIP + bcc .1 + jsr DNS.QUERY.I + bcs .9 +.1 jmp ARP.REQUEST.I +.9 rts +*-------------------------------------- +HST.GETBYADDR >PULLW ZPPtrIP + >PULLW ZPPtrDNS + + + sec + rts +*-------------------------------------- +HST.DNS2PSTR >PULLW ZPPtrDNS + + sec + rts +*-------------------------------------- +HST.PSTR2DNS >PULLW ZPPtrDNS + +HST.PSTR2DNS.I lda (ZPPtrDNS) + beq .9 + + cmp #K.DNS.MAXLEN-1 + bcs .9 + + tay + + inc + sta DNSHostNameLen + + lda #0 Ending 0 + sta DNSHostName+1,y + + ldx #0 + +.1 lda (ZPPtrDNS),y + and #$7f + cmp #'.' + beq .2 + + cmp #'A' + bcc .10 + cmp #'Z'+1 + bcs .10 + adc #$20 + +.10 inx + bra .3 + +.2 txa + ldx #0 + +.3 sta DNSHostName,y + dey + bne .1 + stx DNSHostName + + clc + rts + +.9 sec + rts +*-------------------------------------- +HST.ScanIP stz HST.IP + + lda (ZPPtrDNS) + beq .9 + + ldy #0 + +.1 ldx #0 + stx HST.DecStr + +.2 tya + cmp (ZPPtrDNS) + beq .4 + + iny + lda (ZPPtrDNS),y + cmp #'.' + beq .3 + + cmp #'0' + bcc .9 + cmp #'9'+1 + bcs .9 + cpx #3 + beq .9 + inx + sta HST.DecStr,x + bra .2 + +.3 stx HST.DecStr + phy + jsr HST.Dec2Hex + ply + bcc .1 + rts + +.4 txa + beq .5 + + stx HST.DecStr + jsr HST.Dec2Hex + bcs .9 + +.5 ldx HST.IP + cpx #4 + bne .9 + + ldy #3 +.6 lda HST.IP,x + sta (ZPPtrIP),y + dex + dey + bpl .6 + clc + rts + +.9 sec + rts +*-------------------------------------- +HST.Dec2Hex ldy HST.DecStr + beq .9 + + ldx HST.IP + cpx #4 + beq .9 + inx + + lda HST.DecStr+1 + and #$0f + sta HST.IP,x + + ldy #1 + +.1 cpy HST.DecStr + beq .8 + iny + lda HST.IP,x + asl HST.IP,x + bcs .9 + asl HST.IP,x + bcs .9 + adc HST.IP,x + bcs .9 + asl + bcs .9 + sta HST.IP,x + lda HST.DecStr,y + and #$0f + adc HST.IP,x + sta HST.IP,x + bcc .1 +.9 sec + rts + +.8 stx HST.IP + clc + rts +*-------------------------------------- +MAN +SAVE LIB/LIBTCPIP.S.HST +LOAD LIB/LIBTCPIP.S +ASM diff --git a/LIB/LIBTCPIP.S.ICMP.txt b/LIB/LIBTCPIP.S.ICMP.txt index 8da37909..6739acdd 100644 --- a/LIB/LIBTCPIP.S.ICMP.txt +++ b/LIB/LIBTCPIP.S.ICMP.txt @@ -9,44 +9,55 @@ ICMP.IN ldy #S.ICMP.TYPE lda (ZPFrameBase1),y cmp #S.ICMP.TYPE.ECHOREQ bne .9 - + ldy #S.IP.DST ldx #S.IPCFG.IP -.10 lda (ZPFrameBase1),y +.1 lda (ZPFrameBase1),y cmp IPCFG,x bne .9 iny inx cpx #S.IPCFG.IP+4 - bne .10 - - jsr NEW.ICMP.FRAME - bcs .9 - phx - >STYA ZPFrameBase2 - ldy #S.ICMP.TYPE - lda #S.ICMP.TYPE.ECHOREP - sta (ZPFrameBase2),y - jsr MakeIPReply - - ldy #S.ICMP.IDENTIFIER -.1 lda (ZPFrameBase1),y - sta (ZPFrameBase2),y - iny - cpy #ZPFrameLen1 bne .1 - >PUSHW ZPFrameLen1 - >PUSHW ZPFrameBase2 - jsr SEND.ICMP.FRAME + ldy #S.ICMP.TYPE + lda #S.ICMP.TYPE.ECHOREP + sta (ZPFrameBase1),y + + ldy #S.IP.SRC+3 + ldx #3 - pla - >SYSCALL SYS.FreeMemA - clc - rts +.2 lda (ZPFrameBase1),y + sta TmpIP,x + dey + dex + bpl .2 + + ldy #S.IP.DST+3 + ldx #3 + +.3 lda TmpIP,x + sta (ZPFrameBase1),y + dey + dex + bpl .3 + + ldy #S.ETH.SRCMAC+5 + ldx #5 + +.4 lda (ZPFrameBase1),y + sta TmpMAC,x + dey + dex + bpl .4 + + >PUSHW L.TmpMAC + >PUSHW L.TmpIP + jsr ARP.ADD + + jmp SEND.ICMP.FRAME.I .9 sec rts - *-------------------------------------- MAN SAVE LIB/LIBTCPIP.S.ICMP diff --git a/LIB/LIBTCPIP.S.IP.txt b/LIB/LIBTCPIP.S.IP.txt index 1cdbb80f..277c6861 100644 --- a/LIB/LIBTCPIP.S.IP.txt +++ b/LIB/LIBTCPIP.S.IP.txt @@ -5,9 +5,7 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -IP.IN >PULLW ZPFrameBase1 - >PULLW ZPFrameLen1 - ldy #S.IP.PROTOCOL +IP.IN ldy #S.IP.PROTOCOL lda (ZPFrameBase1),y cmp #S.IP.PROTOCOL.ICMP bne .2 @@ -16,16 +14,7 @@ IP.IN >PULLW ZPFrameBase1 .2 cmp #S.IP.PROTOCOL.UDP bne .3 - ldy #S.UDP.DSTPORT - lda /UDP.PORT.DNS - cmp (ZPFrameBase1),y - bne .21 - iny - lda #UDP.PORT.DNS - cmp (ZPFrameBase1),y - bne .21 - jmp DNS.IN -.21 jmp UDP.IN + jmp UDP.IN .3 cmp #S.IP.PROTOCOL.TCP bne .9 @@ -57,23 +46,30 @@ IP.ComputeChecksum adc ZPFrameBase1+1 sta TmpOffset+1 - stz IP.CHECKSUM RESET.IP.CHECKSUM + stz IP.CHECKSUM stz IP.CHECKSUM+1 stz IP.CHECKSUM+2 stz IP.CHECKSUM+3 - ldy #1 -.1 lda (ZPTmpPtr1),y - clc + ldy #2 + +.1 clc + + iny + lda (ZPTmpPtr1),y adc IP.CHECKSUM sta IP.CHECKSUM - lda (ZPTmpPtr1) + + dey + lda (ZPTmpPtr1),y adc IP.CHECKSUM+1 sta IP.CHECKSUM+1 + bcc .3 inc IP.CHECKSUM+2 bne .3 inc IP.CHECKSUM+3 + .3 lda ZPTmpPtr1 clc adc #2 @@ -85,6 +81,7 @@ IP.ComputeChecksum lda ZPTmpPtr1+1 cmp TmpOffset+1 bne .1 + lda IP.CHECKSUM clc adc IP.CHECKSUM+2 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 4e7f2e5d..f3b169c4 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -5,84 +5,127 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -SKT.NEW >PULLW ZPPtrSKT +* IN : PULLW = PTR to S.SOCKET template +* OUT : +* YA=PTR to new S.SOCKET +* X hSocket 128PULLW ZPTmpPtr1 - stz bFound - ldy #S.SOCKET.SRC.PORT+1 - lda (ZPPtrSKT),y + lda (ZPTmpPtr1),y dey - ora (ZPPtrSKT),y + ora (ZPTmpPtr1),y bne .1 jsr GetDynPort - sta (ZPPtrSKT),y + sta (ZPTmpPtr1),y txa iny - sta (ZPPtrSKT),y + sta (ZPTmpPtr1),y .1 >LDYA L.SKT.TABLE - >STYA ZPTmpPtr1 + >STYA ZPTmpPtr2 + stz TmpOffset to keep track of any free slot + ldx #0 -.2 lda (ZPTmpPtr1) +.2 lda (ZPTmpPtr2) beq .4 - - ldy #S.SOCKET.SRC.PORT+1 - -.3 lda (ZPPtrSKT),y - cmp (ZPTmpPtr1),y + cmp (ZPTmpPtr1) bne .5 - dey - bpl .3 + + ldy #S.SOCKET.SRC.ADDR + +.3 lda (ZPTmpPtr1),y + cmp (ZPTmpPtr2),y + bne .5 + iny + cpy #S.SOCKET.DST.PORT+2 + bne .3 lda ERR.SBUSY sec rts -.4 bit bFound - bmi .5 - sec - ror bFound - stx hSocket - >LDYA ZPTmpPtr1 - >STYA ZPTmpPtr2 +.4 bit TmpOffset + bmi .5 Already found an empty slot + >LDYA ZPTmpPtr2 + >STYA ZPTmpPtr3 + txa + ora #$80 + sta TmpOffset -.5 lda ZPTmpPtr1 +.5 lda ZPTmpPtr2 clc adc #S.SOCKET - sta ZPTmpPtr1 + sta ZPTmpPtr2 bcc .6 - inc ZPTmpPtr1+1 + inc ZPTmpPtr2+1 .6 inx cpx #K.SKTTABLE.SIZE bne .2 - bit bFound + bit TmpOffset Did we found an empty slot ? bpl .9 ldy #S.SOCKET-1 -.7 lda (ZPPtrSKT),y - sta (ZPTmpPtr2),y +.7 lda (ZPTmpPtr1),y + sta (ZPTmpPtr3),y dey bpl .7 - lda hSocket + lda ZPTmpPtr1 + clc + adc #S.SOCKET.DST.ADDR + sta ZPPtrIP + lda ZPTmpPtr1+1 + adc /S.SOCKET.DST.ADDR + sta ZPPtrIP+1 + lda (ZPPtrIP) + beq .8 + + jsr ARP.REQUEST.I + +.8 ldx TmpOffset + >LDYA ZPTmpPtr3 clc rts -.9 lda ERR.OOS +.9 lda #ERR.OOS sec rts *-------------------------------------- -SKT.LISTEN - sec +SKT.ACCEPTA jsr SKT.GetA + bcs .9 + ldy #S.SOCKET.SO + lda (ZPPtrSKT),y + and #S.SOCKET.SO.ACCEPTCONN + bne .99 + + ldy #S.SOCKET.LQ.HEAD + lda (ZPPtrSKT),y + ldy #S.SOCKET.LQ.TAIL + cmp (ZPPtrSKT),y Queue Empty + beq .9 CC + pha + inc + cmp #S.SOCKET.LQ.MAX + bne .1 + lda #0 +.1 sta (ZPPtrSKT),y + pla + clc + adc #S.SOCKET.LQ + tay + lda (ZPPtrSKT),y + clc rts -*-------------------------------------- -SKT.ACCEPT + +.99 lda #ERR.SBAD sec - rts +.9 rts *-------------------------------------- SKT.SENDA sec @@ -97,25 +140,30 @@ SKT.SEND >PULLB hSocket jsr SKT.GetA bcs .9 - cmp #S.SOCKET.SOCK.DGRAM + cpx #S.SOCKET.SOCK.DGRAM beq SKT.SEND.UDP - bra * + cpx #S.SOCKET.SOCK.STREAM + bne .99 + jmp SKT.SEND.TCP - sec +.99 sec .9 rts *-------------------------------------- SKT.SEND.UDP jsr NEW.UDP.FRAME bcs .9 - >STYA ZPFrameBase1 - - lda #S.UDP + stx hFrame1 + + lda #S.UDP-2 clc adc ZPDataLen + sta (ZPFrameBase1) sta ZPFrameLen1 - lda /S.UDP + lda /S.UDP-2 adc ZPDataLen+1 + ldy #1 + sta (ZPFrameBase1),y sta ZPFrameLen1+1 ldy #S.SOCKET.SRC.PORT @@ -129,7 +177,7 @@ SKT.SEND.UDP jsr NEW.UDP.FRAME txa sta (ZPFrameBase1),y - ldy #S.SOCKET.SRC.ADDR + ldy #S.SOCKET.DST.ADDR ldx #4 .1 lda (ZPPtrSKT),y @@ -161,63 +209,224 @@ SKT.SEND.UDP jsr NEW.UDP.FRAME lda #S.UDP clc adc ZPFrameBase1 - sta ZPTmpPtr1 + sta ZPFramePtr1 lda /S.UDP adc ZPFrameBase1+1 - sta ZPTmpPtr1+1 + sta ZPFramePtr1+1 ldy #0 .3 jsr DecDataLen beq .4 lda (ZPDataPtr),y - sta (ZPTmpPtr1),y + sta (ZPFramePtr1),y iny bne .3 inc ZPDataPtr - inc ZPTmpPtr1 + inc ZPFramePtr1 bra .3 -.4 jmp SEND.UDP.FRAME.I +.4 jsr SEND.UDP.FRAME.I + bcc .9 + lda hFrame1 + >SYSCALL SYS.FreeMemA + sec .9 rts *-------------------------------------- -SKT.RCVDA +SKT.SEND.TCP + bra * sec rts *-------------------------------------- -SKT.RCVD - sec +SKT.RCVDA jsr SKT.GetA + bcs .9 + + ldy #S.SOCKET.DQ.TAIL + lda (ZPPtrSKT),y + + ldy #S.SOCKET.DQ.HEAD + cmp (ZPPtrSKT),y + beq .99 + + pha + inc + cmp #S.SOCKET.DQ.MAX + bne .1 + lda #0 +.1 sta (ZPPtrSKT),y + pla + clc + adc #S.SOCKET.DQ + tay + lda (ZPPtrSKT),y + clc rts + +.99 sec +.9 rts *-------------------------------------- -SKT.CLOSE - sec - rts +SKT.CLOSEA jsr SKT.GetA + bcs .9 + cpx #S.SOCKET.SOCK.DGRAM + + beq .8 + + ldy #S.SOCKET.SO + lda (ZPPtrSKT),y + bit #S.SOCKET.SO.ACCEPTCONN + + beq * + + +.8 lda #0 + sta (ZPPtrSKT) + clc +.9 rts *-------------------------------------- SKT.GETTABLE >LDYA L.SKT.TABLE clc rts *-------------------------------------- -SKT.GetA stz ZPPtrSKT+1 - asl - rol ZPPtrSKT+1 - asl - rol ZPPtrSKT+1 - asl - rol ZPPtrSKT+1 - asl - rol ZPPtrSKT+1 +SKT.GetA stz ZPPtrSKT + + and #$7f Strip off msb + lsr + ror ZPPtrSKT + lsr + ror ZPPtrSKT + lsr + ror ZPPtrSKT + pha + + lda ZPPtrSKT adc L.SKT.TABLE sta ZPPtrSKT - lda ZPPtrSKT+1 + pla adc L.SKT.TABLE+1 sta ZPPtrSKT+1 + lda (ZPPtrSKT) beq .9 + tax + >LDYA ZPPtrSKT rts CC .9 lda #ERR.SBAD sec rts *-------------------------------------- +* ZPPtrSKT -> actual socket +* A = hSocket +*-------------------------------------- +SKT.AddToQueueL pha + ldy #S.SOCKET.LQ.HEAD + lda (ZPPtrSKT),y + tax + inc + cmp #S.SOCKET.LQ.MAX + bne .1 + lda #0 +.1 ldy #S.SOCKET.LQ.TAIL + cmp (ZPPtrSKT),y + beq .9 Queue full!! + + ldy #S.SOCKET.LQ.HEAD + sta (ZPPtrSKT),y + txa + clc + adc #S.SOCKET.LQ + tay + pla + sta (ZPPtrSKT),y + + clc + rts + +.9 pla + sec + rts +*-------------------------------------- +SKT.AddToQueueD ldy #S.SOCKET.DQ.HEAD + lda (ZPPtrSKT),y + tax + inc + cmp #S.SOCKET.DQ.MAX + bne .1 + lda #0 +.1 ldy #S.SOCKET.DQ.TAIL + cmp (ZPPtrSKT),y + beq .9 Queue full!! + + ldy #S.SOCKET.DQ.HEAD + sta (ZPPtrSKT),y + txa + clc + adc #S.SOCKET.DQ + tay + lda hFrame1 + sta (ZPPtrSKT),y + clc + rts + +.9 sec + rts +*-------------------------------------- +SKT.AddToQueueS + clc + rts + +.9 sec + rts +*-------------------------------------- +SKT.TCPSendSYNACKA + jsr SKT.GetA + + ldy #S.SOCKET.SRC.ADDR+3 + ldx #3 +.1 lda (ZPPtrSKT),y + sta TCP.MSG+S.IP.SRC,x + dey + dex + bpl .1 + + ldy #S.SOCKET.SRC.PORT + lda (ZPPtrSKT),y + sta TCP.MSG+S.TCP.SRCPORT+1 + iny + lda (ZPPtrSKT),y + sta TCP.MSG+S.TCP.SRCPORT + + ldy #S.SOCKET.DST.ADDR+3 + ldx #3 +.2 lda (ZPPtrSKT),y + sta TCP.MSG+S.IP.DST,x + dey + dex + bpl .2 + + ldy #S.SOCKET.DST.PORT + lda (ZPPtrSKT),y + sta TCP.MSG+S.TCP.DSTPORT+1 + iny + lda (ZPPtrSKT),y + sta TCP.MSG+S.TCP.DSTPORT + + ldy #S.SOCKET.SQ.SEQNUM+7 + ldx #7 +.3 lda (ZPPtrSKT),y + sta TCP.MSG+S.TCP.SEQ.NUMBER,x + dey + dex + bpl .3 + + lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK + sta TCP.MSG+S.TCP.OPTIONS + + >PUSHW L.TCP.MSG + jsr SEND.TCP.FRAME + + clc + rts +*-------------------------------------- MAN SAVE LIB/LIBTCPIP.S.SKT LOAD LIB/LIBTCPIP.S diff --git a/LIB/LIBTCPIP.S.TCP.txt b/LIB/LIBTCPIP.S.TCP.txt index e501e5d6..4426b4ab 100644 --- a/LIB/LIBTCPIP.S.TCP.txt +++ b/LIB/LIBTCPIP.S.TCP.txt @@ -5,9 +5,278 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -TCP.IN clc +TCP.IN ldy #S.IP.SRC+3 + ldx #3 + +.1 lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.DST.ADDR,x + dey + dex + bpl .1 + + ldy #S.TCP.SRCPORT + lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.DST.PORT+1 + iny + lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.DST.PORT + + ldy #S.IP.DST+3 + ldx #3 +.2 lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.SRC.ADDR,x + dey + dex + bpl .2 + + ldy #S.TCP.DSTPORT + lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.SRC.PORT+1 + iny + lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.SRC.PORT + + >LDYA L.SKT.TABLE + >STYA ZPPtrSKT + + ldx #0 + +.3 lda (ZPPtrSKT) + beq .7 + cmp #S.SOCKET.SOCK.STREAM + bne .7 + + ldy #S.SOCKET.SRC.ADDR + +.4 lda TmpSocket,y + cmp (ZPPtrSKT),y + bne .7 Not for this socket... + iny + cpy #S.SOCKET.SRC.PORT+2 + bne .4 + + ldy #S.SOCKET.SO + lda (ZPPtrSKT),y + and #S.SOCKET.SO.ACCEPTCONN Listening socket? + beq .5 + + ldy #S.TCP.OPTIONS yes, only accept SYN packet + lda (ZPFrameBase1),y + cmp #S.TCP.OPTIONS.SYN + bne .7 not for this listening socket + jmp TCP.IN.LISTEN.NEW + +.5 ldy #S.SOCKET.DST.ADDR + +.6 lda TmpSocket,y regular socket, check remote ADDR/PORT + cmp (ZPPtrSKT),y + bne .7 + iny + cpy #S.SOCKET.DST.PORT+2 + bne .6 + + jmp TCP.IN.ESTABLISHED + +.7 lda ZPPtrSKT + clc + adc #S.SOCKET + sta ZPPtrSKT + bcc .8 + inc ZPPtrSKT+1 + +.8 inx + cpx #K.SKTTABLE.SIZE + bne .3 + + clc Discard frame rts -.9 sec +*-------------------------------------- +TCP.IN.LISTEN.NEW + lda #S.SOCKET.SOCK.STREAM + sta TmpSocket + + stz TmpSocket+S.SOCKET.SO + + ldy #S.TCP.SEQ.NUMBER+3 + ldx #3 + + sec +.1 lda (ZPFrameBase1),y + adc #0 + sta TmpSocket+S.SOCKET.SQ.ACKNUM,x + dey + dex + bpl .1 + + ldx #3 +.2 lda A2osX.TIMER16,x + sta TmpSocket+S.SOCKET.SQ.SEQNUM,x + dex + bpl .2 + + >PUSHW L.TmpSocket + + jsr SKT.NEW + bcs .9 + txa + ldy #S.SOCKET.PARENT + sta (ZPPtrSKT),y + + jsr SKT.TCPSendSYNACKA + + ldy #S.SOCKET.STATUS + lda #S.SOCKET.STATUS.SYNRCVD + sta (ZPPtrSKT),y + + + clc +.9 rts +*-------------------------------------- +TCP.IN.ESTABLISHED + stx hSocket + ldy #S.SOCKET.STATUS + lda (ZPPtrSKT),y + cmp #S.SOCKET.STATUS.SYNRCVD Waiting for ACK to establish? + bne .1 + + ldy #S.TCP.OPTIONS yes, only accept ACK packet + lda (ZPFrameBase1),y + cmp #S.TCP.OPTIONS.ACK + bne .8 + + ldx #3 + ldy #S.SOCKET.SQ.SEQNUM+3 + sec +.10 lda (ZPPtrSKT),y + adc #0 + sta TmpDWord,x + dey + dex + bpl .10 + + ldx #3 + ldy #S.TCP.ACK.NUMBER+3 +.11 lda (ZPFrameBase1),y + cmp TmpDWord,x + bne .8 + dey + dex + bpl .11 + + ldx #3 + ldy #S.SOCKET.SQ.SEQNUM+3 +.12 lda TmpDWord,x + sta (ZPPtrSKT),y + dey + dex + bpl .12 + + ldy #S.SOCKET.STATUS + lda #S.SOCKET.STATUS.ESTBLSH + sta (ZPPtrSKT),y + + ldy #S.SOCKET.PARENT + lda (ZPPtrSKT),y + jsr SKT.GetA + + lda hSocket + jsr SKT.AddToQueueL + +.8 clc + rts + +.1 cmp #S.SOCKET.STATUS.ESTBLSH + bne .99 + + + + + bra * +.99 clc + rts +*-------------------------------------- +TCP.ComputeChecksum + lda #0 RESET.TCP.CHECKSUM + ldy #S.TCP.CHECKSUM + sta (ZPFrameBase1),y + iny + sta (ZPFrameBase1),y + + >LDYA ZPFrameBase1 + >STYA ZPTmpPtr1 + + lda ZPFrameLen1 + sec + sbc #S.IP-2 + sta ZPDataLen + + lda ZPFrameLen1+1 + sbc /S.IP-2 + sta ZPDataLen+1 + + clc + +* lda ZPDataLen+1 +* adc #0 RESERVED (all zero) + sta IP.CHECKSUM + + lda ZPDataLen + adc #S.IP.PROTOCOL.TCP + sta IP.CHECKSUM+1 + + ldy #S.IP.SRC + + ldx #4 4 words for SRC & DST IP + +.10 lda (ZPFrameBase1),y + adc IP.CHECKSUM + sta IP.CHECKSUM + iny + lda (ZPFrameBase1),y + adc IP.CHECKSUM+1 + sta IP.CHECKSUM+1 + iny + dex + bne .10 + + ldy #S.IP + +.1 jsr DecDataLen + beq .8 + + lda (ZPTmpPtr1),y + adc IP.CHECKSUM + sta IP.CHECKSUM + + iny + bne .20 + inc ZPTmpPtr1+1 + +.20 jsr DecDataLen + bne .2 + lda #0 + bra .21 + +.2 lda (ZPTmpPtr1),y + +.21 adc IP.CHECKSUM+1 + sta IP.CHECKSUM+1 + + iny + bne .1 + inc ZPTmpPtr1+1 + bra .1 + +.8 ldy #S.TCP.CHECKSUM + lda IP.CHECKSUM + adc #0 Don't forget to add last carry!!! + eor #$FF + sta (ZPFrameBase1),y + iny + lda IP.CHECKSUM+1 + adc #0 Don't forget to add last carry!!! + eor #$FF + sta (ZPFrameBase1),y rts *-------------------------------------- MAN diff --git a/LIB/LIBTCPIP.S.UDP.txt b/LIB/LIBTCPIP.S.UDP.txt index 02e98615..520b8631 100644 --- a/LIB/LIBTCPIP.S.UDP.txt +++ b/LIB/LIBTCPIP.S.UDP.txt @@ -5,8 +5,161 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -UDP.IN +UDP.IN ldy #S.IP.SRC+3 + ldx #3 +.1 lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.DST.ADDR,x + dey + dex + bpl .1 + + ldy #S.UDP.SRCPORT + lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.DST.PORT+1 + iny + lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.DST.PORT + + ldy #S.IP.DST+3 + ldx #3 +.2 lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.SRC.ADDR,x + dey + dex + bpl .2 + + ldy #S.UDP.DSTPORT + lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.SRC.PORT+1 + iny + lda (ZPFrameBase1),y + sta TmpSocket+S.SOCKET.SRC.PORT + + >LDYA L.SKT.TABLE + >STYA ZPPtrSKT + + ldx #0 + +.3 lda (ZPPtrSKT) + beq .7 + cmp #S.SOCKET.SOCK.DGRAM + bne .7 + + ldy #S.SOCKET.SRC.ADDR + +.4 lda TmpSocket,y + cmp (ZPPtrSKT),y + bne .7 + iny + cpy #S.SOCKET.DST.PORT+2 + bne .4 + + jsr SKT.AddToQueueD + bcs .99 + lda (pEvent) Make sure kernel not discard frame... + and #$FF^S.EVT.F.hMEM1 + sta (pEvent) + clc ...when clearing event!!!! + rts + +.7 lda ZPPtrSKT + clc + adc #S.SOCKET + sta ZPPtrSKT + bcc .8 + inc ZPPtrSKT+1 + +.8 inx + cpx #K.SKTTABLE.SIZE + bne .3 + .9 sec +.99 rts +*-------------------------------------- +UDP.ComputeChecksum + lda #0 RESET.TCP.CHECKSUM + ldy #S.UDP.CHECKSUM + sta (ZPFrameBase1),y + iny + sta (ZPFrameBase1),y + + >LDYA ZPFrameBase1 + >STYA ZPTmpPtr1 + + lda ZPFrameLen1 + sec + sbc #S.IP-2 + sta ZPDataLen + + lda ZPFrameLen1+1 + sbc /S.IP-2 + sta ZPDataLen+1 + + clc + + ldy #S.UDP.LENGTH + lda (ZPFrameBase1),y +* adc #0 RESERVED (all zero) + sta IP.CHECKSUM + + iny + lda (ZPFrameBase1),y + adc #S.IP.PROTOCOL.UDP + sta IP.CHECKSUM+1 + + ldy #S.IP.SRC + + ldx #4 4 words for SRC & DST IP + +.10 lda (ZPFrameBase1),y + adc IP.CHECKSUM + sta IP.CHECKSUM + iny + lda (ZPFrameBase1),y + adc IP.CHECKSUM+1 + sta IP.CHECKSUM+1 + iny + dex + bne .10 + + ldy #S.IP + +.1 jsr DecDataLen + beq .8 + + lda (ZPTmpPtr1),y + adc IP.CHECKSUM + sta IP.CHECKSUM + + iny + bne .20 + inc ZPTmpPtr1+1 + +.20 jsr DecDataLen + bne .2 + lda #0 + bra .21 + +.2 lda (ZPTmpPtr1),y + +.21 adc IP.CHECKSUM+1 + sta IP.CHECKSUM+1 + + iny + bne .1 + inc ZPTmpPtr1+1 + bra .1 + +.8 ldy #S.UDP.CHECKSUM + lda IP.CHECKSUM + adc #0 Don't forget to add last carry!!! + eor #$FF + sta (ZPFrameBase1),y + iny + lda IP.CHECKSUM+1 + adc #0 Don't forget to add last carry!!! + eor #$FF + sta (ZPFrameBase1),y rts *-------------------------------------- MAN diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index e054fca6..606b799b 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -15,17 +15,15 @@ AUTO 6 ZPFrameBase1 .EQ ZPLIB ZPFrameLen1 .EQ ZPLIB+2 ZPFramePtr1 .EQ ZPLIB+4 -ZPFrameBase2 .EQ ZPBIN+6 -ZPFrameLen2 .EQ ZPBIN+8 -ZPFramePtr2 .EQ ZPBIN+10 ZPPtrIP .EQ ZPLIB+12 ZPPtrMAC .EQ ZPLIB+14 ZPPtrDNS .EQ ZPLIB+16 ZPPtrSKT .EQ ZPLIB+18 ZPTmpPtr1 .EQ ZPLIB+20 ZPTmpPtr2 .EQ ZPLIB+22 -ZPDataPtr .EQ ZPLIB+24 -ZPDataLen .EQ ZPLIB+26 +ZPTmpPtr3 .EQ ZPLIB+24 +ZPDataPtr .EQ ZPLIB+26 +ZPDataLen .EQ ZPLIB+28 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -71,32 +69,47 @@ CS.START cld .DA DNS.ADD .DA DNS.GETCACHE - .DA ARP.IN - .DA IP.IN + .DA RCVD.FRAMEA + .DA RCVD.FRAME .DA SKT.NEW - .DA SKT.LISTEN - .DA SKT.ACCEPT + .DA $FFFF + .DA SKT.ACCEPTA .DA SKT.SENDA .DA SKT.SEND .DA SKT.RCVDA - .DA SKT.RCVD - .DA SKT.CLOSE + .DA $FFFF + .DA SKT.CLOSEA .DA SKT.GETTABLE + .DA SKT.GETA + + .DA HST.GETBYNAME + .DA HST.GETBYADDR *-------------------------------------- L.IPCFG .DA IPCFG +L.ARP.REQ .DA ARP.REQ +L.ARP.REP .DA ARP.REP +L.DNS.SOCKET .DA DNS.SOCKET +L.DNS.MSG .DA DNS.MSG L.ARP.CACHE .DA ARP.CACHE L.DNS.CACHE .DA DNS.CACHE L.SKT.TABLE .DA SKT.TABLE +L.TmpMAC .DA TmpMAC +L.TmpIP .DA TmpIP +L.TmpSocket .DA TmpSocket +L.TCP.MSG .DA TCP.MSG .DA 0 *-------------------------------------- LIB.LOAD lda bFirstLoad bne .8 jsr ARP.CLEAR jsr DNS.CLEAR - >LDYA K.DYNPORT.START + + >LDYAI K.DYNPORT.START >STYA DYNPORT.LAST + inc bFirstLoad + .8 clc rts *-------------------------------------- @@ -113,6 +126,23 @@ SET.IPCFG >PULLW ZPTmpPtr1 cpy #S.IPCFG bne .1 + ldx #5 +.2 lda IPCFG+S.IPCFG.MAC,x + sta ARP.REQ.SRCMAC,x + sta ARP.REQ.SHA,x + sta ARP.REP.SRCMAC,x + sta ARP.REP.SHA,x + dex + bpl .2 + + ldx #3 +.3 lda IPCFG+S.IPCFG.IP,x + sta ARP.REQ.SPA,x + sta ARP.REP.SPA,x + sta DNS.SOCKET.SA,x + dex + bpl .3 + lda IPCFG+S.IPCFG.HDEV >SYSCALL SYS.GetDevByIDA @@ -125,16 +155,54 @@ SET.IPCFG >PULLW ZPTmpPtr1 ldy #S.DEVINFO.FLAGS lda (ZPTmpPtr2),y sta DevFlags - and #S.DEVINFO.FLAGS.ARPOFFLOAD - beq .2 + and #S.DEVINFO.NET.FLAGS.ARPOFFLOAD + beq .4 >LDYA ZPTmpPtr1 ldx #DEVMGR.SETIPCFG jsr NetDevJmp -.2 >LDYA ZPTmpPtr1 +.4 lda hDNSSocket1 + beq .41 + jsr SKT.CLOSEA + +.41 lda hDNSSocket2 + beq .42 + jsr SKT.CLOSEA + +.42 lda IPCFG+S.IPCFG.DNS1 + beq .6 + + ldx #3 +.5 lda IPCFG+S.IPCFG.DNS1,x + sta DNS.SOCKET.DA,x + dex + bpl .5 + + >PUSHW L.DNS.SOCKET + jsr SKT.NEW + bcs .9 + + stx hDNSSocket1 + +.6 lda IPCFG+S.IPCFG.DNS2 + beq .8 + + ldx #3 +.7 lda IPCFG+S.IPCFG.DNS2,x + sta DNS.SOCKET.DA,x + dex + bpl .7 + + >PUSHW L.DNS.SOCKET + jsr SKT.NEW + bcs .9 + + stx hDNSSocket2 + +.8 >LDYA ZPTmpPtr1 clc - rts +.9 rts *-------------------------------------- * grab a copy on the fly for lib function * OUT : @@ -151,28 +219,6 @@ ToLowerCaseA cmp #'A' adc #$20 .1 rts *-------------------------------------- -MakeIPReply >LDAXI S.IP.SRC - jsr SetFramePtr1AX - >LDAXI S.IP.DST - jsr SetFramePtr2AX - ldy #4 - jsr CopyFramePtr12 - - >LDAXI S.IP.DST - jsr SetFramePtr1AX - >LDAXI S.IP.SRC - jsr SetFramePtr2AX - ldy #4 - jsr CopyFramePtr12 - - >LDAXI S.ETH.SRCMAC - jsr SetFramePtr1AX - >LDAXI S.ETH.DSTMAC - jsr SetFramePtr2AX - ldy #6 - jsr CopyFramePtr12 - rts -*-------------------------------------- * A,X = Frame PTR *-------------------------------------- SetFramePtr1AX clc @@ -183,25 +229,6 @@ SetFramePtr1AX clc sta ZPFramePtr1+1 rts *-------------------------------------- -* A,X = Frame PTR -*-------------------------------------- -SetFramePtr2AX clc - adc ZPFrameBase2 - sta ZPFramePtr2 - txa - adc ZPFrameBase2+1 - sta ZPFramePtr2+1 - rts -*-------------------------------------- -* Y = bytes to copy from ZPFramePtr1 to ZPFramePtr2 -*-------------------------------------- -CopyFramePtr12 dey - lda (ZPFramePtr1),y - sta (ZPFramePtr2),y - tya - bne CopyFramePtr12 - rts -*-------------------------------------- GetDynPort inc DYNPORT.LAST bne .1 inc DYNPORT.LAST+1 @@ -211,7 +238,7 @@ GetDynPort inc DYNPORT.LAST lda DYNPORT.LAST+1 sbc /K.DYNPORT.END bcs .1 - >LDAXI K.DYNPORT.END + >LDAXI K.DYNPORT.START >STAX DYNPORT.LAST rts CC @@ -219,52 +246,6 @@ GetDynPort inc DYNPORT.LAST clc rts *-------------------------------------- -PSTR2DNSHostName >STYA ZPTmpPtr1 - - lda (ZPTmpPtr1) - beq .9 - - cmp #K.DNS.MAXLEN-1 - bcs .9 - - tay - - inc - sta DNSHostNameLen - - lda #0 Ending 0 - sta DNSHostName+1,y - - ldx #0 - -.1 lda (ZPTmpPtr1),y - and #$7f - cmp #'.' - beq .2 - - cmp #'A' - bcc .10 - cmp #'Z'+1 - bcs .10 - adc #$20 - -.10 inx - bra .3 - -.2 txa - ldx #0 - -.3 sta DNSHostName,y - dey - bne .1 - stx DNSHostName - - clc - rts - -.9 sec - rts -*-------------------------------------- DecDataLen lda ZPDataLen bne .1 lda ZPDataLen+1 @@ -284,27 +265,100 @@ NetDevJmp jmp * .INB LIB/LIBTCPIP.S.TCP .INB LIB/LIBTCPIP.S.DNS .INB LIB/LIBTCPIP.S.SKT + .INB LIB/LIBTCPIP.S.HST *-------------------------------------- CS.END *-------------------------------------- +IPCFG .BS S.IPCFG +*-------------------------------------- +ARP.REQ .DA S.ARP-2 Frame size +ARP.REQ.DSTMAC .HS FFFFFFFFFFFF +ARP.REQ.SRCMAC .BS 6 +ARP.REQ.ETYPE .DA /S.ETH.ETHERTYPE.ARP + .DA #S.ETH.ETHERTYPE.ARP + .HS 0001.0800.06.04 +ARP.REQ.OP .DA /S.ARP.OPERATION.REQ + .DA #S.ARP.OPERATION.REQ +ARP.REQ.SHA .BS 6 +ARP.REQ.SPA .BS 4 +ARP.REQ.THA .BS 6 +ARP.REQ.TPA .BS 4 +*-------------------------------------- +ARP.REP .DA S.ARP-2 Frame size +ARP.REP.DSTMAC .BS 6 +ARP.REP.SRCMAC .BS 6 +ARP.REP.ETYPE .DA /S.ETH.ETHERTYPE.ARP + .DA #S.ETH.ETHERTYPE.ARP + .HS 0001.0800.06.04 +ARP.REP.OP .DA /S.ARP.OPERATION.REP + .DA #S.ARP.OPERATION.REP +ARP.REP.SHA .BS 6 +ARP.REP.SPA .BS 4 +ARP.REP.THA .BS 6 +ARP.REP.TPA .BS 4 +*-------------------------------------- +TCP.MSG .DA S.TCP-2+4 +4 bytes for MSS option + .BS 12 ETH:MAC+MAC + .DA /S.ETH.ETHERTYPE.IP + .DA #S.ETH.ETHERTYPE.IP + + .DA $0045 IP: + .BS 6 LEN+ID+Frag + .DA #K.IP.TTL + .DA #S.IP.PROTOCOL.TCP + .BS 2 Checksum + .BS 8 IP:DST,SRC + + .BS 4 TCP:Ports + .BS 8 SEQ,ACK + .DA #$60 6 DWORD + .BS 1 Options + .DA /K.TCP.WSIZE + .DA #K.TCP.WSIZE + .BS 4 CHK,URG + .HS 0204 MSS option + .DA /K.TCP.MSS + .DA #K.TCP.MSS +*-------------------------------------- +DNS.SOCKET .DA #S.SOCKET.SOCK.DGRAM + .BS 3 +DNS.SOCKET.SA .BS 4 +DNS.SOCKET.SP .DA 0 Dynamic +DNS.SOCKET.DA .BS 4 +DNS.SOCKET.DP .DA UDP.PORT.DNS + .BS 16 +*-------------------------------------- +DNS.MSG.LEN .BS 2 +DNS.MSG .BS 2 ID + .DA /S.DNS.F.RD Flags=query + .DA #S.DNS.F.RD Flags=query + .DA $100 QDCOUNT + .BS 6 ANCOUNT,NSCOUNT,ARCOUNT + .BS K.DNS.MAXLEN+6 DNS.MSG+12 +*-------------------------------------- +ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE +DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE +SKT.TABLE .BS K.SKTTABLE.SIZE*S.SOCKET +*-------------------------------------- bFirstLoad .DA #0 Status .BS 1 DevFlags .BS 1 -DNSMessageID .BS 2 -DNSDynamicPort .BS 2 +hDNSSocket1 .BS 1 +hDNSSocket2 .BS 1 DNSHostTTL .BS 4 -DNSHostName .BS K.DNS.MAXLEN+1 DNSHostNameLen .BS 1 +DNSHostName .BS K.DNS.MAXLEN+1 IP.CHECKSUM .BS 4 -IPCFG .BS S.IPCFG -ARP.CACHE .BS K.ARPCACHE.SIZE*S.ARPCACHE -DNS.CACHE .BS K.DNSCACHE.SIZE*S.DNSCACHE -SKT.TABLE .BS K.SKTTABLE.SIZE*S.SOCKET +TmpMAC .BS 6 +TmpIP .BS 4 +TmpDWord .BS 4 +TmpSocket .BS S.SOCKET +hFrame1 .BS 1 hSocket .BS 1 -bFound .BS 1 DYNPORT.LAST .BS 2 -*TmpCounter .BS 2 TmpOffset .BS 2 +HST.DecStr .BS 4 +HST.IP .BS 5 *-------------------------------------- MAN SAVE LIB/LIBTCPIP.S