From bb490f0347a782e36ab8ddb888cacc306383c772 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 16 Mar 2016 17:37:02 +0100 Subject: [PATCH] DNS:code rewrite --- A2OSX.BOOT.DSK | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes LIB/LIBTCPIP.S.ARP.txt | 366 ++++++++++++++++++++++------------------ LIB/LIBTCPIP.S.DNS.txt | 79 ++++++--- LIB/LIBTCPIP.S.FRM.txt | 5 +- LIB/LIBTCPIP.S.HST.txt | 4 +- LIB/LIBTCPIP.S.ICMP.txt | 5 + 7 files changed, 260 insertions(+), 199 deletions(-) diff --git a/A2OSX.BOOT.DSK b/A2OSX.BOOT.DSK index b5458ea2dea6620cf873d8815c0b650c0959d74e..912e37fe68e2e3974c48169f661d2429996c49cc 100644 GIT binary patch delta 3021 zcmb_ee{2)i9ltv}#0d!;!GKBgXBOlucP&WZi+BO9qz~l@!y|V0GCyHde4yOBH4O z>Zy+@WSVzv-rq@oGDtI5>E5$D=t*hk*?PCX@k!DcA(^ca5?r6Mhsd-Y#)H##G+7_? z-aR3Wokb;+^|FQ3j&^ya%V*KITzs^NcMw)CRmpZ2FS_^)2u-}$#Ahb-Pf2Cc#rvs8 zbFf3QsUVS+Dj8p(7on}LVDb18-GbBylP_Qw4O1%{q^CaG5UAp1E26Z}!7c)MkVPu_ z9mIu2#Zxxj()Q>2ajGCb-slrjBqS4BC85^^(kxq4@==#pXS*lZ>tqG2qO%Lend};e zKX<~U%EhoPc7899v35T9}zWMv7D| zGSJP!GGb8^eTeIWJp$}?$m4tYbe@KXnT^86iy)uqdpJ(Ro^cgUexI$PrkfcN!m)F( z%|IXI%g)7L5>H~tBy2%r4P^1iNgUB&+94!=j1oUWkOoqT)N-z-sLT6sw^!PDjtk^X zp<`WIoE2;Ml$LEGB~VK3OhQMbSk(x9I-xHoHjo&Q%18-F7LXW+0EhLn`NK}u@cP@n z!cJzmoH&QYTUcfx=2zKz!l;_>vpJkmwa;$h@KRL+V|M@^bGZN5AuTl2m7W)GLLcuR zI+QjeQN7xoGZ?xVv5qi4Rl7__GzfT^ifD>84t{q<_)sw0k%q3i&}cMc8~-5mnWb&r zYNNc%L35Q?OuID zW@d`j|3;i~DndxD*~*1}1W1ma!4YCMXSvzeh35Qs1DkEy_VZOfp|ErTZ+gQ%;z9$o zVku7`4nTs+TN+`m$go&MD=*RKSCrqzr&D@GW{lOZp<$`v{Q7_icmEPVJE@Yb_oe_R zlIpSzcdC-n;qWk{!&L;CJ0;5Kf0-T%en6V;K^Olc;mZ4DY$TjJzan5J?8=Ol>eqlD zQZ6RDkZ@2~Mz^<}SWQYtOb45JqP8+uf6C!Up%h%t;LOz5^kIhp*uRaV|G);V_*CMj zVh*D?*P-55w3wX-9s!_k&jWQEJkXnNW$|8OiKNgu&qBh)L2?K^)x1P5RDNmBU<_DH zTH#9Pu(-vF1j&Sdm!nK%VDCrkhGBv#P>BZIn0QVG- zm>(s!B9nSbfeqpXCKJEF;@>f_*&}QNu|m_p&0f_q&?n(#hOTNcpf^zG(^=Vn=<%I9 zgod7Q1E1Z!352y1zg4z6@^l7o*c*xkJPk&h7vw`=aX6&Rz$?@sJi(~^GSui%Sk&n@ zDrhql3n&gjocFFZ`qCB5BC=K`*-B~llgg4Ln2k7sWSe$9UBk;%YB;;>Oj>smtC~JN ztXCQ6x!$k&1a}SZUDSW%&~Rv^>*(H+Ae5zl*g(`UAnJ&LsN>+mR*+gX9XSfUGyo1G zhmHcwjzLTLJ<_kHy$nF*t?BBOeveW%MQ2N<7~tYn9=}J|Xze z{K{RIRxuFZHhbK|1wev8E~y}@=CQaI67fiTB@*MA3@*;I*8#v`h*@Q?+_%K z2@djqwb7|7HV4zr?k}~{je$+h&CV0fB@I_xH(ZyR{LQb`N9x~n=W<_Z+1B!GOQR>3 zd(88U$M0F!`jggn@0{1k?c)YGY7MoveeG?$k)x<&JJy$?O-^*hMX30gxEt^5z_aa8 z74x$xZGI{ZP1^~jru*8xnX#aLLoOQa@Wv=ER?BiRHy7i%33e6;xXT+`&cz<#VquuL zntZ{#f6_{?3>Y7h*%AXr@*?~5Uwz`o15tJqEOuaFz%(6+6wyCB{yJOA{PraM!+!x#kWbS9 delta 2974 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 KT~{w!FaH$=@R5T6 delta 10407 zcmai43wTvmm0l-@6He|)49R`v1_F8U%H!t2GZbh;5=cr2m)!8C&`WZGl)OkTZBmuX z0Yd4+T7~8`t$nGbwxyQJ2%~kzR%aaR%s4te#!<&w>!YKN+G*=(t*!ssd*4TbI{gZK zIeYK5)?Vx1YyEre96w%v{CNGvS7*!^EH3e0`sIw>Go6xgBa%^MpM5slfA;z8nU}tt z{a{u@HeK=%|5rw@Y}z+iTnN{4n;eNn@G%q{-qhGc{(y6Q^9*mlyHJ~q^mN-b;b3DYENE>c_w1>2E9=OZqfL^# zNSo~IiP&XoYN(OSx!PoRUpIN@Nhwow&MHom(-tCsiBMVXE}g0pa`MZjOl6Jb&{#fS zbN0QMRT^KQP2MyzY_o-p&CS6!G8an4<|1u!I5tA&Vy)u&1=ZxO(0EeIj!;`?%N>0^ zqjp&>`6{(wox`T{SW{zDYfIHASykHP{^$`qSWiYZl$k-;5bdV28oABn+{$pAeIwQd zySmzWZ7t^R@3zb8sH{$!o;H2@?D_RqNt`mJvW`VAQ6g(;{?epK0Rp--Gvh7o#Kp@O zwV$nPh93Zxwhpr3wEf*9cCdjw@YYTJLpI$I1 zA}8;4twvkyG`_C6vn$xTG2Tm{(z)?%FE4HYPM``>D)tPF;oJcbQ9RvUgyNW-oJ!cIk!7mdhVKDqIa${!sr6(ws(q}J`!JeVV)Mjq-J9J)06H?l5}LiM|HTPy$Iwup9b8Hc9nSr`^_5kdrLz1G z1R#kfcS^IiFw|AP<=odvj=gz?XL){DPDQ?zPNDp+DN}LMtgTQq9I=DT$=C+-mu+`i z_vlOGJES(x&NOXJ>o){9Y^PbfrU;?@-MrU`-3~370->HgX^PdV{2QjM;J z@Zi8fB%m}!acDA+FoH+P9F|D7Mj(aH2988bEk+$WO6SPDnI?z&MydRktM+&DU^Hg$ zk8~flfvwol5%P^b9U1JqIocDive|Bi#QftFT=JJ4j4AN2 z*Op49hw+VFY@SdKJgFRbN;wdxe_T0m2^pthig}xasd+}GfVgoxzE<8r!KGXdPq&Qr z#_U^qV~6aPrZsi;Dtkz}PJpGeWeb^is@!oG*10}F!DY@+UxduNrCiSklkkT(WqLL5 zK^co6Xdl8HPHMu35;o4~I`vs`>%+=Q!2GO)dBHgWbEw?f67CAN-6mkTgnaih#uowV|!y*6qjvFmq;*cNTcSc_^e8lzjw+ z13aQ58f%W;e0~2ASr1{kdZ-neZUa4)E*k_ z9f$#YTz9KJs<2l#{{Q+p>tonawEF~EA16>1kc$&!J|=zRIWK&}>f&v8sti!_c)~GB z7*~yoL!r(?$tSQ4KL0Dy&VP66_>=i04i}P#@f0>`T}WV-d`~A%e!9y`KgrRI52YAO z`l%7=z z_Kw&Gjv|29lKDA_U+eFbRe;go!-VY5Gy2)i3aWX5CY=kN`n*VWDk)Og7ZSxH8Iv?8 zRWr5qeKCbxaU{f7^B+`M{YT{+RJ$)hWz9b+HSu&c#+Naa_aX&Xh=UQ9`LE(D(yQcKV!Z7Ulce~8LsSKr%6Z|A8%1?-~Cm&EIl#)+h1HJR!K_#^(4N` zf0wvh^bHEGoPM-Vj>HCs837zufmSO0CQZfx>QtChcD10U!>i`EB+SfjOW0Zek%HTI zluK8V`JWPQx!;w0Q0^%H9%gXiSXnpOB`D^$FX{UivG(!A!ROhsySsmF+)LwlAmbR}!{w0|tMLs98UO>iP-3XPQ4% z?DS_cO9WmOS)#2296=CG#vl?SdH$O%2iIeo#cT(u$@n>h&HjaBzmgRQ&-$e}7;rj9 zVUhJeN^Jv~zf#8iS{mp34I4K_7Bkt`)B;%fzYtvZy7O4OUaGwzIB`bNo6gJa`kcUT zF$)Qa?P}`~IoS9=%r5#J4+rLi$o>0iGhpajn6dB=&c;pp0`J>$$EEM6owAHOoXD56 zym{}cJuV}IaDknzInT7t2*d*!$?GE~3+64o?$f6ZbhS2eEM{nu<{JDjJdufOB|`%n zn+dUAQ{4}f*Z#^SWM%P3!KDos>$Wt-oEABYLi(%@U-mRzs8-OGqjbGT>B?2Qzs#cL#OFA}$+kUDyfi{NeQ@sg4w;L|ss9PE0BGrwH zRDO-|tFyB*W?t^moArEampmI~%cvZ@8OP3fm9#!W)9^Egj?qFHTlsH9-Du^>Lkj2;ahk-G`$wv}wSUSqbj& z!Ej4QGZ`SsQ#K z^w`H@nhi3E3+(AgPmf(^9~d0A`=SH({;^n8kV^rqS}Fv&TwBAOYG>p4(9w}Yb|{Q~ z1Ex{|D5vo9x;DG^6cXy-P^@b)}6_hiTa)qtTKDjW!e6?^fN%lEL2G}S0Kb#;*sU3nS`p!Df z=efM~=M-PO7Y50Gi!nhDkq)wn>axNau^v3U3>mR^+&JsAe zV3TA%h$P7w8bp%8B3R_iN5CE)AoEc*25uzOxz<_Tp_sFhF3m7b@>N)hXIJA=Z7z6UMh0jd`9GEB+{D7gRC>v|e?TwE1h=EYPdhIR z=z)yOboR9i9%ujknRE7eK+&d$+W=i7_h+vT@N?LlykI5+Y=NGMXn`Yvp^*u07K%)dV}_=^V$*J7YBV2?E+91?yMF50&$S7w1odz z5YrIw7!}Q2rZAitmxIz(kpUV*1>i7$)&g)Eb*ZX;EpaDDzEJ*k`iAww9?+U}pK$$t zUD@@9vg^&iXcrS7&M)v96CUsH62~y9WSFXdPtMnd^~%h*c*Y+DiK5Io za#VNE!+QkpFl~l4pXCCbE6KY+1Zo4`aLBWW-8n5aELPT_Rf5L};pniE%(rS&% z0b6y~*&|=_W%z?J3f$W(!5exvcXcv?Vf2YUG7PIw}?rIW1n%FG4| zv`$&s*wM6kYeyHaZ5vz7hQSz zlxv;_ru?1L$7Y;AX1p3lpQ<_9UEdlV6<4lS`EwZ6(*g$)K58K249;^dC=X+jr{MNw zf%b@76mk~GkD6(M^KhawKEN43v7MAq*qZ~s!}}~NuSF`4-y<`C6pD-_C=d76M3%#q z;CS=}UdECON%`H?}-5pNQi+m^mko zR)5j}3&cmwVD5v}WIdexl=sLqd%fU7jINYnsM0wgMyWl59dWHqYRLQeG#M=x7?U_l zb>upqr0I{V`VDeKc~5Yk0c=u<5sfc#ke*UC_JZ^5XSC9ZyE1)Oe1|fBuEpiUXnLE0 zD~x!WWc0HW>d6E2Pk+KQfPZqWdMIye#!9%QumPXJt@v&gY-`#SLIwfP#tWWnRnm{wC=ac6UdT5tUj9m! ze`&r!Kb}b|i_Kg-v(M?{2l*?D-^tpSQC09Bh8oLcRmoN^xpGxYlkkiwZau|$_kQ0s zFP@J&C?6|D6BTEd3^zBGmk1>r*!P)!G6QfawU=^PS_&RT2WcxKJ>rpKw zi;Ki!URdAk+^V@enR79{WS(0;|^S6tC0fB zlAt!qS=)R?K^O233;95GQ^6t$RbJUTI1=kXXA{rI8^XT8LDW4bTARakM^aDF=8F@GY;09l#A)fJj~K z1g9$t7!l1|u$$F9B;G24{!?VFO<8{}h62|yz2ah+?iAS1FO~efXsv@R33+c5yU%Gh zT(jcMSZlVxKE70~mk~8K;G?TGfz+%v@%a?LR0@a%Hi}4xyCVZ_p*#4T$|OQYI~KY( zNuMM0D=(7O0o^M2n=!=-@f3awi<7YhA96aS??p7+VKz^u6chnY`bHO9w3Tm(v9Sob zw@HVltJtnoEG1(HCYw8D?)C1PZVktDcOoEhj^iG+6kfi8joF(Rt;OIz3^Jc+pj>oc z1Y{RBa2Tx!kBFRY?Z*hW?$EL7R>B&{?2$#s8BcQAz^sQ>e?9<|K95B&g5zW{0dIb2h7mOSp$Eeiws(`(xyA z?+_UwNGjZtF6mS!o+a%gN29}IWOQP9c33n_msnj&4qj)rN@8qnOV%N4yQpkq5&TBT z4q1}s?R0*9#x-~OF1BNgigpVYeVP^9k%7V3q3EzO=URX`Dap72O3U^-O}D#Bi}wjd za!uc$Xg1k{2k^gWHkdbZu{(W!uWONWP1rS8JMZiYyNWhE4hh~*q%}$Li(}krB>xkN zmU3m|kD{=V@gx?QPpL|JK~>VH6P5JXL|>MH-lpb!yI(JkA6N5iHSdIEq2(tvSv)$z ziKK2PZa9hNm1jIjD^p#I)5@=a-fgg>;0)ydxzchw<^j%e#^@bv@SW1J#$Eiw2iQ~H zPUSHW L.ARP.REP + ldx #DEVMGR.NET.SEND + jsr NetDevJmp + +ARP.IN.REP lda #K.ARP.TTL + sta ARP.TmpCache+S.ARPCACHE.TTL + lda /K.ARP.TTL + sta ARP.TmpCache+S.ARPCACHE.TTL+1 + + ldy #S.ARP.SPA+3 + ldx #3 + +.1 lda (ZPFrameBase1),y + sta ARP.TmpCache+S.ARPCACHE.IP,x + dey + dex + bpl .1 + + ldy #S.ARP.SHA+5 + ldx #5 + +.2 lda (ZPFrameBase1),y + sta ARP.TmpCache+S.ARPCACHE.MAC,x + dey + dex + bpl .2 + + lda #S.ARPCACHE.STATUS.RESOLVED + + jsr ARP.ADD.I + clc + rts +*-------------------------------------- ARP.CLEAR ldx #K.ARPCACHE.SIZE*S.ARPCACHE .1 dex stz ARP.CACHE,x @@ -25,7 +98,7 @@ ARP.QUERY >PULLW ZPPtrIP IP >PULLW ZPPtrMAC MAC ARP.QUERY.I jsr ARP.FIND.BY.IP - bcs ARP.REQUEST + bcs .3 send an ARP request lda (ZPCachePtr) get status... bpl .9 Pending... @@ -38,6 +111,7 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP inc ZPCachePtr+1 .1 ldy #5 + .2 lda (ZPCachePtr),y sta (ZPPtrMAC),y dey @@ -45,29 +119,30 @@ ARP.QUERY.I jsr ARP.FIND.BY.IP clc rts -.9 lda #ERR.ARPPENDING - sec - rts -*-------------------------------------- -ARP.REQUEST ldy #3 -.1 lda (ZPPtrIP),y +.3 ldy #3 + +.4 lda (ZPPtrIP),y sta ARP.REQ.TPA,y sta ARP.TmpCache+S.ARPCACHE.IP,y dey - bpl .1 + bpl .4 >PUSHW L.ARP.REQ ldx #DEVMGR.NET.SEND jsr NetDevJmp - bcs .9 + bcs .99 + + lda #5 + sta ARP.TmpCache+S.ARPCACHE.TTL + stz ARP.TmpCache+S.ARPCACHE.TTL+1 lda #S.ARPCACHE.STATUS.PENDING - jsr ARP.ADD.I ZPPtrIP still pointing IP + jsr ARP.ADD.I - lda #ERR.ARPPENDING +.9 lda #ERR.ARPPENDING sec -.9 rts +.99 rts *-------------------------------------- * ARP.ADD * In: @@ -76,77 +151,37 @@ ARP.REQUEST ldy #3 *-------------------------------------- ARP.ADD >PULLW ZPPtrIP IP >PULLW ZPPtrMAC MAC + + stz ARP.TmpCache+S.ARPCACHE.TTL + stz ARP.TmpCache+S.ARPCACHE.TTL+1 + + ldy #3 +.1 lda (ZPPtrIP),y + sta ARP.TmpCache+S.ARPCACHE.IP,y + dey + bpl .1 + + ldy #5 +.2 lda (ZPPtrMAC),y + sta ARP.TmpCache+S.ARPCACHE.MAC,y + dey + bpl .2 + lda #S.ARPCACHE.STATUS.RESOLVED+S.ARPCACHE.STATUS.STATIC ARP.ADD.I sta ARP.TmpCache jsr ARP.FIND.BY.IP - bcc .5 - jsr DNS.FIND.FREE + bcc .1 + jsr ARP.FIND.FREE -.1 lda ARP.CACHE,x get status - beq .7 empty ARP cache entry - - phx +.1 ldy #S.ARPCACHE-1 +.2 lda ARP.TmpCache,y + sta (ZPCachePtr),y + dey + bpl .2 - ldy #0 -.2 lda (ZPPtrIP),y - cmp ARP.CACHE+S.ARPCACHE.IP,x - bne .4 - inx - iny - cpy #4 - bne .2 - plx - bra .7 same IP,update MAC - -.4 pla get back index in ARP.CACHE clc - adc #S.ARPCACHE - cmp #K.ARPCACHE.SIZE*S.ARPCACHE - beq .5 Cache is full ? - tax - bra .1 - -.5 bra * - - ldx #K.ARPCACHE.SIZE*S.ARPCACHE-S.ARPCACHE -.6 lda ARP.CACHE+S.ARPCACHE-1,x - sta ARP.CACHE-1,x - dex - bne .6 - - ldx #K.ARPCACHE.SIZE*S.ARPCACHE-S.ARPCACHE - -.7 lda Status - sta ARP.CACHE,x mark ARP entry Status - - lda #K.ARP.TTL - sta ARP.CACHE+S.ARPCACHE.TTL,x - lda /K.ARP.TTL - sta ARP.CACHE+S.ARPCACHE.TTL+1,x - - ldy #0 - phx -.8 lda (ZPPtrIP),y store IP in cache - sta ARP.CACHE+S.ARPCACHE.IP,x - iny - inx - cpy #4 - bne .8 - plx - lda Status - bpl .82 no MAC if "pending" - - ldy #0 -.81 lda (ZPPtrMAC),y store MAC in cache - sta ARP.CACHE+S.ARPCACHE.MAC,x - iny - inx - cpy #6 - bne .81 - -.82 clc rts *-------------------------------------- * ARP.GETCACHE @@ -212,72 +247,99 @@ ARP.RESOLVE ldy #S.IP.DST adc /S.ETH.DSTMAC sta ZPPtrMAC+1 *-------------------------------------- -*-------------------------------------- -*-------------------------------------- -ARP.IN ldy #S.ARP.TPA - ldx #S.IPCFG.IP +ARP.FIND.BY.IP >LDYA L.ARP.CACHE + >STYA ZPCachePtr + + lda #K.ARPCACHE.SIZE + sta TmpOffset -.1 lda (ZPFrameBase1),y - cmp IPCFG,x - bne .9 +.1 lda (ZPCachePtr) + beq .7 + + ldy #S.ARPCACHE.IP+3 + ldx #3 + lda (ZPCachePtr),y + cmp (ZPPtrIP) + bne .7 + ldy #S.ARPCACHE.IP+1 + lda (ZPCachePtr),y + ldy #1 + cmp (ZPPtrIP),y + bne .7 + + ldy #S.ARPCACHE.IP+2 + lda (ZPCachePtr),y + ldy #2 + cmp (ZPPtrIP),y + bne .7 + + ldy #S.ARPCACHE.IP+3 + lda (ZPCachePtr),y + ldy #3 + cmp (ZPPtrIP),y + bne .7 + clc + rts + +.7 lda ZPCachePtr + clc + adc #S.ARPCACHE + sta ZPCachePtr + bcc .8 + inc ZPCachePtr+1 + +.8 dec TmpOffset + bne .1 + sec + rts +*-------------------------------------- +ARP.FIND.FREE >LDYA L.ARP.CACHE + >STYA ZPCachePtr + + lda #$ff + sta TmpDWord + sta TmpDWord+1 + + ldx #K.ARPCACHE.SIZE + +.1 lda (ZPCachePtr) + beq .8 + bpl .6 + + ldy #S.ARPCACHE.TTL + lda (ZPCachePtr),y + sec + sbc TmpDWord iny - inx - cpx #S.IPCFG.IP+4 + lda (ZPCachePtr),y + sbc TmpDWord+1 + bcc .6 + + lda (ZPCachePtr),y + sta TmpDWord+1 + dey + lda (ZPCachePtr),y + sta TmpDWord + + >LDYA ZPCachePtr + >STYA ZPTmpPtr1 save lowest TTL slot ... + +.6 lda ZPCachePtr + clc + adc #S.ARPCACHE + sta ZPCachePtr + bcc .7 + inc ZPCachePtr+1 + +.7 dex bne .1 - ldy #S.ARP.OPERATION+1 HI byte - lda (ZPFrameBase1),y - cmp #S.ARP.OPERATION.REQ - beq ARP.IN.REQ + >LDYA ZPTmpPtr1 + >STYA ZPCachePtr + lda #0 + sta (ZPCachePtr) - cmp #S.ARP.OPERATION.REP - beq ARP.IN.REP - -.9 clc Discard any other ARP frames - rts - -ARP.IN.REQ ldy #S.ETH.SRCMAC+5 - ldx #5 - -.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 - - >PUSHW L.ARP.REP - ldx #DEVMGR.NET.SEND - jsr NetDevJmp - -ARP.IN.REP lda #S.ARP.SHA - clc - adc ZPFrameBase1 - sta ZPPtrMAC - lda ZPFrameBase1+1 - adc /S.ARP.SHA - sta ZPPtrMAC+1 - - lda #S.ARP.SPA - clc - adc ZPFrameBase1 - sta ZPPtrIP - lda ZPFrameBase1+1 - adc /S.ARP.SPA - sta ZPPtrIP+1 - - lda #S.ARPCACHE.STATUS.RESOLVED - jsr ARP.ADD.I - clc +.8 clc rts *-------------------------------------- ARP.EXPIRE >LDYA L.ARP.CACHE @@ -286,7 +348,7 @@ ARP.EXPIRE >LDYA L.ARP.CACHE ldx #K.ARPCACHE.SIZE .1 lda (ZPCachePtr) - beq .7 + beq .3 ldy #S.ARPCACHE.TTL sec @@ -313,36 +375,6 @@ ARP.EXPIRE >LDYA L.ARP.CACHE bne .1 rts *-------------------------------------- -ARP.FIND.BY.IP >LDYA L.ARP.CACHE - >STYA ZPCachePtr - - lda #K.ARPCACHE.SIZE - sta TmpOffset - -.1 lda (ZPCachePtr) - beq .7 - - ldy #S.ARPCACHE.IP - lda (ZPCachePtr),y - - - -.7 lda ZPCachePtr - clc - adc #S.ARPCACHE - sta ZPCachePtr - bcc .8 - inc ZPCachePtr+1 - -.8 dec TmpOffset - bne .1 - - - sec - rts -*-------------------------------------- -ARP.FIND.FREE -*-------------------------------------- MAN SAVE LIB/LIBTCPIP.S.ARP LOAD LIB/LIBTCPIP.S diff --git a/LIB/LIBTCPIP.S.DNS.txt b/LIB/LIBTCPIP.S.DNS.txt index 87a0851e..6e9bb435 100644 --- a/LIB/LIBTCPIP.S.DNS.txt +++ b/LIB/LIBTCPIP.S.DNS.txt @@ -87,8 +87,12 @@ DNS.REQUEST jsr HST.PSTR2DNS.I >STYA DNS.MSG.ID >STYA DNS.TmpCache+S.DNSCACHE.ID + lda #5 sta DNS.TmpCache+S.DNSCACHE.TTL + stz DNS.TmpCache+S.DNSCACHE.TTL+1 + stz DNS.TmpCache+S.DNSCACHE.TTL+2 + stz DNS.TmpCache+S.DNSCACHE.TTL+3 lda #S.DNSCACHE.STATUS.PENDING jsr DNS.ADD.I @@ -119,14 +123,31 @@ DNS.REQUEST jsr HST.PSTR2DNS.I DNS.ADD >PULLW ZPPtrDNS Get host string >PULLW ZPPtrIP Get host IP address + ldy #3 + +.1 lda (ZPPtrIP),y + sta DNS.TmpCache+S.DNSCACHE.IP,y + dey + bpl .1 + + stz DNS.TmpCache+S.DNSCACHE.TTL + stz DNS.TmpCache+S.DNSCACHE.TTL+1 + stz DNS.TmpCache+S.DNSCACHE.TTL+2 + stz DNS.TmpCache+S.DNSCACHE.TTL+3 + lda #S.DNSCACHE.STATUS.RESOLVED+S.DNSCACHE.STATUS.STATIC DNS.ADD.I sta DNS.TmpCache jsr DNS.FIND.BY.NAME - bcc .5 Found!!! update this entry - - jsr DNS.FIND.FREE + bcs .1 not found, go create new + + ldy #S.DNSCACHE.hNAME + lda (ZPCachePtr),y + sta DNS.TmpCache,y + bra .20 + +.1 jsr DNS.FIND.FREE lda (ZPPtrDNS) iny add 1 for len byte @@ -143,24 +164,20 @@ DNS.ADD.I sta DNS.TmpCache sta (ZPTmpPtr1) tay -.1 lda (ZPPtrDNS),y +.2 lda (ZPPtrDNS),y sta (ZPTmpPtr1),y dey - bne .1 + bne .2 - ldy #S.DNSCACHE-1 -.2 lda DNS.TmpCache,y +.20 ldy #S.DNSCACHE-1 +.3 lda DNS.TmpCache,y sta (ZPCachePtr),y dey - bpl .2 + bpl .3 clc rts -.5 - clc - rts - .9 sec rts *-------------------------------------- @@ -226,24 +243,22 @@ DNS.FIND.FREE >LDYA L.DNS.CACHE bpl .6 pending.....skip ldy #S.DNSCACHE.TTL - ldx #0 + ldx #3 sec .2 lda TmpDWord,x is save TTL greater then actual TTL? sbc (ZPCachePtr),y - inx iny - cpy #S.DNSCACHE.TTL+4 - bne .2 + dex + bpl .2 bcc .6 no, ldy #S.DNSCACHE.TTL - ldx #0 + ldx #3 .3 lda (ZPCachePtr),y Save new lowest TTL sta TmpDWord,x - inx iny - cpy #S.DNSCACHE.TTL+4 - bne .3 + dex + bpl .3 >LDYA ZPCachePtr >STYA ZPTmpPtr1 save lowest TTL slot ... @@ -260,7 +275,7 @@ DNS.FIND.FREE >LDYA L.DNS.CACHE >LDYA ZPTmpPtr1 >STYA ZPCachePtr - jmp DNS.FREE + jsr DNS.FREE .8 clc rts @@ -305,21 +320,25 @@ DNS.FREE ldy #S.DNSCACHE.hNAME sta (ZPCachePtr) rts *-------------------------------------- -DNS.SKTPOLL lda hDNSSocket1 +DNS.POLL lda hDNSSocket1 beq .8 jsr SKT.RCVDA bcs .8 + jsr DNS.DecodeMsg - bra * - - + lda hDNSSocket2 + beq .8 + jsr SKT.RCVDA + bcs .8 + jsr DNS.DecodeMsg .8 clc rts - -.9 sec - rts *-------------------------------------- +DNS.DecodeMsg sta hFrame1 + >SYSCALL SYS.GetMemPtrA + >STYA ZPFrameBase1 + ldy #S.DNS.F+1 lda (ZPFrameBase1),y and /S.DNS.F.QR @@ -349,6 +368,10 @@ DNS.SKTPOLL lda hDNSSocket1 .3 iny skip high byte of offset iny skip lo byte of offset + +.9 lda hFrame1 + >SYSCALL SYS.FreeMemA + rts *-------------------------------------- MAN SAVE LIB/LIBTCPIP.S.DNS diff --git a/LIB/LIBTCPIP.S.FRM.txt b/LIB/LIBTCPIP.S.FRM.txt index c23b5428..97d3678a 100644 --- a/LIB/LIBTCPIP.S.FRM.txt +++ b/LIB/LIBTCPIP.S.FRM.txt @@ -287,9 +287,8 @@ RCVD.FRAMEA sta hFrame1 cpx /S.ETH.ETHERTYPE.IP bne .9 - jsr IP.IN - bcs .9 - jmp DNS.SKTPOLL + jmp IP.IN + .9 sec rts *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.HST.txt b/LIB/LIBTCPIP.S.HST.txt index 05c4b012..0a041650 100644 --- a/LIB/LIBTCPIP.S.HST.txt +++ b/LIB/LIBTCPIP.S.HST.txt @@ -11,7 +11,9 @@ HST.GETBYNAME >PULLW ZPPtrDNS bcc .1 jsr DNS.QUERY.I bcs .9 -.1 jmp ARP.REQUEST.I + >LDYA TmpBuffer256 + >STYA ZPPtrMAC +.1 jmp ARP.QUERY.I .9 rts *-------------------------------------- HST.GETBYADDR >PULLW ZPPtrIP diff --git a/LIB/LIBTCPIP.S.ICMP.txt b/LIB/LIBTCPIP.S.ICMP.txt index a33ad149..85fa1ec5 100644 --- a/LIB/LIBTCPIP.S.ICMP.txt +++ b/LIB/LIBTCPIP.S.ICMP.txt @@ -51,6 +51,11 @@ ICMP.IN ldy #S.ICMP.TYPE dex bpl .4 + lda #K.ARP.TTL + sta ARP.TmpCache+S.ARPCACHE.TTL + lda /K.ARP.TTL + sta ARP.TmpCache+S.ARPCACHE.TTL+1 + lda #S.ARPCACHE.STATUS.RESOLVED jsr ARP.ADD.I