From 2c0e0d15f7337fa6d3f4cb7b358d6c7939ca17bd Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 27 Aug 2018 07:39:42 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/TELNET.S.txt | 16 +- DRV/LANCEGS.DRV.S.txt | 661 +++++++++++++++++++++++---------------- DRV/UTHERNET.DRV.S.txt | 33 +- DRV/X.U2.DRV.S.txt | 8 +- README.md | 4 +- 7 files changed, 409 insertions(+), 313 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 398ec8b19dd129eb44e9d41034c9881568cc39c9..0eafa7daecf242223c21f0c7ba3f35f7d9d4364d 100644 GIT binary patch delta 2352 zcmZWqZEzFE8Q!~F3tN&uAjTGqfxXk7kv}GUga(r|#g1*T8JlS^Fd2_qOgfqVXl7j8D5*QN4busz z@1BH7ruukq_q~1J-F@DDp4GISnzr-GO^i3HwsjMK#BOK^#n;lYA^OhHNpxPscTbd6YY(D&W)1jjXA=`|A(G@;y zPf2dro}!8L+>dr2$wM2|f``sBh^=XBIM~>{zatllY!@K*97bb`qbwII6c2S@I^BIq zh;?5Q7y2E}xHCSWe5$0C2&+%vO{}d_DtNY=1~ZwDO1^PA1Ck+1ut_X@fLX0Byqd&TlQ)aD|tG) z?4?Xk;?^=9&l8`gHRGd@+*bt+mA}g*aZO=A9alzR4d5{Fb&n*LZmT8T0z!T8=bvB7 zV{%-+D}Nz>DgQ|xq(gL=`lz3trU;Gp$$^*H4m&QbT@!!Hy!FJ&#*e?2->h3M`Q1or zIZ{fZ>q)qppt#|w^Nt;-#$TuICCF{|c3P_X>A4R-Kl`~sEqmOuvSsgb8!02vauNPZV8%X#dxV(`*Ir@@3OnmZHk}8jWooG)d0zTUQk3_&v+rLT#PBZx{ z>Gch5-6tD+_IGUSXzys;v!ij(lccGy_vN0x$Im|_H8NWQt3}_)#R@MEd_(&22|>I+ zr%Hky`a{ZRir}8M3U=%Xt1!Ei_=~G$fuc1`YxMGQ8X7a>gJyiltg2rrH8iJ25Ee3ORtc#*qs_zKdq%1_MO$<{PN3$M@ey+w z`P4(5G5w8(Tr+3D_euRJ2tV*{&@LR}6`Pt(g9 z`$d!FdU~1~Lhv`H;R?QK#slX2FlW70mg#I+E?Z@JhnMB;)f`q?cCw`=iR=o|=miRp zPXhLOrU4&N=|xs$$3NZztKigyr2vp(7RbO9h57|1DYW2UA#BZX zk@IpmcF}=31ZS6ft8J&AuVsw$gEOVy95 zR{A5B&9+sRn#4^-`&7>R{VL}@1Q7=wip@^pb2R_Da@c*+eT1?GV7geTvJ(khA?{U~ zKY?p1_Nt(JM@G1GVu#uCrZdqBq z89*GecZ13vB=Od**_}K29yZS_);1Mjs<1<$f)YDw;tJvXppfrg@vY>}{7fl99tUBE^T7e1E&T zw7ob|L86;-7sw}dUcG4k_DU=1klD$QxTy#RSHR#i+ek^Abh3#Lu);nJiCf%Gg`W|) z)b1KK-ijzB>L%gmVLCvfcz!8pWB>dBm#&2jgl8y@P!d&PB38D5EA8M`z#YxVY~KRj z%f1YY1?=nsE@#mN+#w<~_XmuBmW30vGBjesZ-kMOr|#cZ8<|K+T)`MdJ` XU0~PvyYl^A1^zC(zsoV#<)r@umzdQ* delta 2291 zcmZuyeNa@_6~FJjyUTv@p&_^;lKbAfix4^yQ>)l%8xS_K4w#ORVwh!SnQ5lbKWO70 zNoSgt)vzmLT%zK5F=oljR=`(w2`d#O&B8NiVTsb6&eZ9s({^e~wPU8tw9_&jb$i}p zF=o>Jxc9vC&OM*Mdye1#yx;%)*kz12y3CHgt5^oYxqkdU_GNLF@dn5KGkH!Ptx(A> zqdSPKP?vrD!$C8*a{{BENzQc!S3lB-zV>ocoqPX2chhsV`@e?}GJn8fbW0c8m6s92 zj=uXt-`P2b(MFebjj5k4udm)$^=a&4 zi4viJ4^q}VgNyb3jTyXym2VLWxJ9;miy)asgH%DRV~gM^)k&}xDD|WR6kH0F0pU`y zu9kq>M0)1q^vspgiBf^j?UFb&v_4eJ6Y)4LQR)W0cig4W(&kr(>t9Z8mi7IRjF8HO z-jzqYdrIl4JTVn6ZRzL6)el2lGEAyueP8D#Xonq`qqSFT_R6Y!6j%j6F z3aew4J}7HYQ<+#T&5Y;=Tlsv{*T;+42?DDIqH2uIyS&A*V{Jq z^#?1Ern{NLFpt>xIy^@nFl*dG=-O3%f+A#7%6^9%y1kT&L5XV|4r2&_G^)} zl2+4BpRRn(!wV!}c;iVsJIpE0sc-<8j87fNO5m7+^e`-`te&paztwo957H1mtgQxA z6+WUV*%4FXEcnv{K-QDhqrq=bs`GGr+dE8Qpydt(o5HVo8~>848{u7?z%rj&^;Q># zpWgxtU=|h)9C4bV#-v$h!78Do!Y^0kB)YXT0E~IfocfpFF$FN`)>fbN_^jb$x|bo% zC1AeuztHF)a6k;pnF{cI`3W`vw0xjV-cVxA2TP zN+AU!Y`a_7=Fn-&PxPJyoY&k!E!jX@6alK&eu6+m3R)`?;QNFGkQ#bXXkov13z8M$ zMd5&^CQmEEUR#o$kc^U#uqH+DaAJ=c&rd?hEbKAT_!I zNwe3!C6r}P{O0z_+bT8IAWPjBYO{xF!#}1&=V`;|(;;QtP34=>-euRS3w69dLbaEl6-5Pn^Oxxrx)zgB=&?1f8Up=oI~kvS<78 z53KCV@y$Kq0%NIuT$_E#us&s2|46rfa&r6(4pPe{$tuh89b>?__B(aSo(yuo$TgW6` zxMAf_-f;S&CMjYjLL%_D?xhP$6}izO65E`a7%&BtocN7p4`~ot=K#Ms2ZW12`1n?m zmmp27?-ML>2iV*IU%Y$0q^A{7_s^(AVsd6Q2}*8!DeN%N7~4d2kyxRz>4u4}D>q6> z%mwnSXcm{)fGq(#W|CO_EPeqS6XNYzOjfCpS==~u1!G$q+TFarexKX((m2Qemz%^3 m_`y4d%;ck2Ob@uA*A(=cgWjy5*AnzvgI-(EYajAD=>Gt*-lTf~ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 6779b82cf22fd5945a0ac62a5403f1ab9928a456..60c31cd3ae78ca8df7a1b826a46e0a9bbed7a76b 100644 GIT binary patch delta 15908 zcmZu&33yaR67Khs7v8*=bM7M{kN`pgLkh1zt)!j4mCRskdZ!&#URd-ia*I!+;X;aar zO+^Rm5)<8{lg#0!#9a7;q#a(L_}(y?BpePTf0K|tVHClCx#ZK=8{MO)riPo+pM+tK z)UYMvOtY0-H;Uwqn34+pOQD~ng_|>i=|2*(c|@8W8q>O6qffUTelw%tY}x(*&A8WO zlOCjVf7fh>YgbQ@hk4#71Km9v!cTVE3O^tN#QZlhu&T8;R8>9SU)LDuEg;H=&}{h# zo0~%uo0`0JZS6sSfVe*<^v5{~4!h+O-j^HebAC#~$9iqD=d*Bmr(60*IAfVJ|8p|X z+};|B4MR#R8*7RF1sPZpTodvZ66H%^=J_goGtBxrd~l81^9|WXtl!4C2ZG%_m4Q0q z{*JMC+P{x+kMuczK=$^eACcHkD1!TE9Mu>}hIV7OW}{l#lNv&R@c-*ElkM zjY;rNob)e{z^=@!BA(w+ilpD6(fx1QJY8|ovg5MFk@8>Mx8{(yIKPmnC&)lsdmpi$ z3?FN^l%0xp6%mC<1H>jtY*Tan-m1z9Z$nMx1X!vJJ?ROOw}|4-LI;SGohW&WX;V+4 zCr^U(x`C8 zI*T+qeEB+;GzNOIq|>n7HdY!at*csCUK0XoV0!)};vUCF<-sU-;w0k9hk-7SG9IL} zPKe2X%E*@GMLAryi7_!EUCsg~%G{!G>G~$Ac=uYDJaUrIY|w=M*s& z4ymTX>-RP`RX0>u5$n`&VXsA<21C@-r2*RchHNczOqVL_8vWH*4ziU}6mLdMJb!T2 zQYKy*7q2`fUZl%e!M42;W{#^0f6zNtszwpV%?gj~8!OEQ5wlRl8tAvoiKmQKSj+a` zW~qy(3|-E8By4YhiFzaU_Jwl6oSWc#)?7Mrnc|UMKH9NNambl|s?SOA^apV4JW#my zV8}a_DD&aFx9ivc?(tPb;;q~jVg&m6d26O{$ z?Jc3ojD?~qO(K>%IJrel6>FC^^>hI}Wgkj-r{tX!FT`D9(qv-(!w?znj>)herrYk3 zyps(wu&uO7_cAf29uQ*OCny#X%fTUH=!c@c%Kbnx=deWY`(&7luHK;!Ykd%R81&s+{Hbj%27959-Bg$(aq~$oL zgtvIb+HQZ~V&eXb@E@;>CC0j(Z=j)AlHbH0P}9N^qPzuEvff7Lktw}HOTmZO-{oh< z_8xEW_h5+Y{foD6-7f9hEPAqe<;`^R)uz$?85a*Crd}d;e)IpCxdohCb010BYB;>~ZSlLUUdp|JvIF^FhU&M_ zUs+yP7g`qVSsh$W^vhvGTDn8tX+){M0tQ)j#&ndMB}uswiS~k#<4ShHAoVJgx{tVb zizD%SnP>D?%$s?nE}|2A$cb%k<aZ~qVk&Qg~U-I50sYsy#DIC>dHXKUjVmClaHADE0H89Ags2@ zTLm|pqgoak0cXm03w^O=Cg-zYa$x~X_JL8TvxHc)<$;z?0}Y5U^ctC8bRfZ&f{Aa+lfnN1$#nujl{B8W>NS=-&ujPAk^~Ll8p1^fsQVS z5uu@?9AwUHmg%u;bhl>-Us&VPrQN|E^hho8Ku=#Y8Qv<>$M+{?_6Lmvh_Vz9by?h@ zrY`4_u)`x-TV!AK6{5X>m{vxXvI^##SIdL1!gg^^a20mqaYk=K^tSpM=oMFC7tD8b z%i=1G*NvVbhor9Mx}mQV^x;lg&*?|B3hDPodzC(*@7^Fo*u(Xd-kCfsZN&w+>I-o> z%^|*3M7;>q4I*{(M%eAvmJr))f7^y2N$&@XTi(32yLnv@&qLV+vok`**}&9#@t}Fo zmU#)N$+9GS>g*b#ZbrLpCYf7Un@d%;0vX#jIJZ-pMcPjLQif%&ymaW2FBA5DIhRkp zg4?^gQ)Yo!>XmYpZ@#zE@2zgAB9>ipRN*f3R`^4p0auBEyJd*(_IRtxF{ZSK_skw< zldh(X_vo23uR#TXb{_f#5bhB39%w`gTl{O6^z?NGiJkIcwch#FzRmN4UEOUR?L@tn z({~QgL-*(o+jTf7>LE(6XLIN)cS@P`ci=Vp254Y*mT@B|ms_x9W?lI#KQY||4QL<} zZl-%@4;wGtLSLCZEVFPgG|%>j3JMCQR#g@j6;GO6axnrH$E^_p<8ur6|4V9`$jIC1 z1NZ79M%_NNch&-;-oeGy_u;p@&&(gm`r4g{S41_Fh9#Dx&^g6e-ng!f-Tu4FN>oEQ?~DJM~gQ?QsodW z2MmC@09&pwg*f{jCAy>bZ63{Ainc^;dyKH{)6llU9_d9X(HZS6VU=E2n+NYE%3d4XDWFJZJqreFc8PGPAug026`*n zTC2MNV*O2MD#TzPf>x>@@u*M#ShRz(eFE*aPcb}Y2N;W4)z8o@0ga%QW5fzp&2lne z*d+T)4n@3$yJ^yL#U_143*mzIfl0>)O<>zBZ}crUW@ChE`7VAin1KQ|Pjs+!5lA?H zlxPToi(zQ!**{D4rsYbO^b5y*zY1Im){VhLGFUbbCJKld>^L4r>tMVQD0%{;ZKH$G z!DLxNpa>1uc>jV-IvTFHe!*^uL&ocSRck+s7h~=r1I!lJ9u3&lL}8g=zl?e@u_O(# zOa<(hm{q*e<3s`*W|JlnGuW=73q=AGUeYgQN=BJdWB|59JeDQZC=x?tDi}5%hz?fG z=mTEK7$THzj`k`Rps!ic!kISMxTTux5O0DyFdODKt2542U4u=PsNATTO&f03Om?$o z(fuow%!=V)0Yh%q?1<(NIL0Q2drYVK)9T%%k8Q&M)q zzHu*9K-4Q4Rbt*nAXf9uYw%Y4d^^zps8jf8hEsRhHaC0DTy^g1_4KiF0-J@@yWuGUG%D9m)MZJmha^6gT zxIl3XzlEF5NtX2(a!2byX#KE z^W1j{K7ZhRvhEI-m1j!(>1#;|*6Mo(i>Tf!h9BU=t@n`y&22qivD)qErZWx>+Je2l zWJ{WUzmRhpQ6C@!w6t2YCuW`x_#>frPa9`>f<)IQ;%DoVM2O>E-Ms^Cu!xL0N}rT9 z4?VC^QT1a)T(h31=&_B8JNfBIgXZqE4J2(13_B7~Gww>H*A844mgKMZoKQ0)Ih@}7 z-I0@O{_QmXsGLlzZZ%oMwdXBWSR8%$$a!-l%kkIW`0JZ*z5UL+EP$V0di@PI!u)Ud z++j*ToZkGlOus5rykSr4MY7{`y74ZPeZ(1{QmZ>dxd3Qts)&B3IB;+k(?J=XrS!=k zHAm?TGJr;@mT~h+DTmJ`7*!X7%~e2WGo%#2v9$)_j;I0}m?wvexf*D=XNC_2U6xsc zU4pHKmi?qz`{!_)YOU}Cb!Y_j1a3A=@J6!o?O5_k0?< zLvv2FE-=b0eC$~$-a;{aK}`s8As)VC5iR>!v%AlZ?*dcdisd?ocK)n6N1SV*S<~KK z)wPc3=S77ZxtJzDD~~8WAGlbWVW{w}GpoF?6U4H_FuT4Mo3vK+f6T=NxsGQprHe`w z&y;02mcJ9g9zd#|Se6SF zakbOEzi3XW0~27+cX3DN-A3yD)VAMr8aTz7+v#i1saAT{ep7**f9alSN}jZX zK5-&(RKI!|r{lSt@blg&q8j)X@K!PffGdwR7HpYa-cVIn?IRgGqfHg_{9wcxa0!Yr zFa;ZS@rHseFaY%+<0@!CAG-y#7aOv714sJGG{w^qhAzkh98ChtzM9Je_hVkTs;g~X zunXQ{T7yL0!#ix0h$o-j-s-uK^aOImc`Y>Z0Qd4}Ykm>24iH53yJBsVh~v8ORjVvz zB}BcRQ?%Yd(4Zn#v%O_iD@lWEbp`mSv0iwD8b>m2LM_4tf?);b`HB5z{(OH6|Jchv zZsi}hu{ZrGaI@kJe7Yp5cknOlp^~KR^~`^+43pSSA|775zTYEDXQFF~W6AMjoPt z|JFv#!AlnWC0`9bgcId3DjwXp4A3w<2@m6z2SGSEnxe`rOWJxu%}csT$`KwcK>oCt zI3EsgYIjI~#J6_)Bit|YXZT0OGyG%NHRkbX7X)!n0H^dPG3r7b0J$qj4rd=l?~9M^ zUbuEyQ1}$c$RFDkxOj>Bj4;ysVJ(jy}}0z&|l%lWVP#6zL}!2z+2rkn{{~L!bP!-9VS0KNy4P8<23bv zDKq0Qu}yy+g!H_@YAF7S)eGmm2{jasw+7J&R5G4#4{c_2J@4>x4Uqxx7I|H32F@(5IPxVto*m|IGE={0l*w*@ZVMx0iYUB(!0<=6C&z%OBl)zHjq>BlHpI zmVYNStxa$0KRx6U3K$BN!9!DZi42S`RUUrU|3N3}ss-z*E z>@;;X3h>iS0O!H3L|%yK8hl^f#-NTaZ6mH^dgBVn9y(Jvspx6oMF!@rreY2N;-EC1 zywKC(JrXN-kQ zumGiTL)ydY;V<9D2&y=fp1o2llCtQ|m6}}|PVazkQ?du~s>C;aFd$_FkWoj9N97#x zsGQ3ml^vsK>ITj38I6;pxm<3p${3iKc^aLuLGwssX$Ktm@XT@iAY)d8NA9ckR|kkI zkM7){Ig|2XTG9Ax&eaS1Ct$7xpMXbI78Fh+x)&BFFzG}Xm0G~5@!s@8+(*OcA~71a zq8LUyCdCQKv<k3CZIk_@F3 zNSJ4!n8p*(%edgVMZ{K)><8(yqmuR0tM4;qEUgk5I-$@--WmWVzRLMTuNG$wcfw3T zFqVN+W&vw$cJ%4E24#dq+#HdJtA*~0I^1ApS#-@o(-hfJPfxXIwuG_xza2DsQ%IE`lJDe>CDwd9z zR`Ga>q;w*W$kX>4=|-Y<;aLCL|^TTn{VD}#l-O3|K{!t+ZXzye2eZ=GF z`S4jkw~l_k1OV<6cyLbJQRL0F{1}XLJ%w6Mue#4syf@j1EAeMSoJc;}% zswT>FFw62hUqNon9cwQ{J@KDGTnw^aWGBCwC@&$Sm+65P%{lEAzLuy(G&SIrue=IF zGG7x^W1Rtrm*xc;Yl!1GI&S-!f8j$S_bYSQVuCn|u#Qj(?vvwQBie;E9RFt&@rSZ&*S%G}M72j}MvM z&G<<8r;quwj1CV>?8b+Dz~4EU7)Y4-8S;%r9r%KLWTQ6Yg8VclbRW>#R ze2sNPI||>~tGN9bB0H;Y0$jr$!|hLVoCvrkh7$qY;1_`t0pj2{juW5bUj$Bk-hdNd z;5hNm0w=!6aN^4t!SgDcK{yfc4sMHaTXldt5u6ABhm1VVaUvp_K{yc+O~xBBcu-S; zIPtF_+#sCzrV%H;&2Zv73?~9)!MlRv#PF#qr! zc9j8c5h4SZAAq0@(92MO1W<;g{~VQ=1EgOf5|8^;NDO7|LSpqdA?)u$ScERa|HA;% zI4o;N+dUBhNGJILrvXecsGN(0KkjnMvP3U0g+zG83C)r)GEt(Blq%UyaL$GUgr|ih zFc$YPDSUj5b2S4Z@rsaQ;`Ze&0?Sf0VTk%rLrh7I4umZMd_rug!uF!j0x@G6^kk=_ zV=L@Qbl0W=EWw@RCHAUWn4U$L9+0xa1o&YDw-MFOBVe;b8iWZ)x~S)*HbU~yj~_K< z+leKU6Xs=B_2|f~!|9rnnk6F}DC#3nIOc1I=g@P?l&qP##tFPaZIrl)N5h38VAL4l zZJ`ioEL@4PnmAv*-$xwd=#ym%2uagUY57te{iY(Z6_(;5@}^CWBWEue%remECzdHVZ$l_n ze@2w4upPSXM|6N6k=twr(9bHv zLq|swpM{yV0D!BddHX9?z$h-slXW@Ql&x1CLop3R&zx9=8dL z1ruKZ5~r>-Od;v3@azrnc(oV}=hzOT)ea$erx1J%7d*Mk0Cc-SE(E%3;Y9o+;(mOv z9+??IuB(qukaVZCf$ptTviBwGo6ZilhPna9g`h;weu2cQDq|+F4a)s=Ko;WB$O32r z7i^57HbrA701yn#Ud)AcZ>C2j-6d^7UU_B!3Fy!|B88dx+vo?--oG8&`$Rjj?0}dM zesN{2^}LKr1x>ux({ec{#l__5mn)#c8LB*OJL9`p(jaYDocZej8X^X`TT& zi<7K{SM$lh2ecCa*)>8F0XGOsOQDgyDA-JL2I&4OCCddnXT6TEB3d*Fw?fYKxNsXi zTBRgI6#=Yr-&Q?wA=Hy#87m9ml^gMp0Z*WIrUIT|VL8?e6ZIAZkMORym#-`pUy8h7#S00*`FHYml(S1gL_=TGsujM1$(S?}0T7 z*n0rGxr#+#?|n#2z+M%A1Vg;{GsHU`cv=s0IgC-1`hbWiAH-Dv;uS!`IL7rbf*@x< zpazomNZbLM0XLu)#`e+r*ia@Zj~nnt`V)LW6dXNi=v0sL1MnUb2T-y((9zSp3ey{j z!O-a;8rrE_AF^Jqe>1GVytOq{5?a#N6YLHxg)A62zVZdc{1m4j6G?d*kMQQUH|1eo66soP5~*f}vXnc*0bp;0$7YaS$sQti2Rb1M|y+_eOmM#zS~i^eR1A ztyueEJ>5NBZJnVa!zv(6ip#LR#%UW5BIUS2kaWN@XvL9zR9?qb0#;!$;G2VZgJk+! zFaeWB1;h$)rMrh0Sw$aSQUJTecH!MP>M-2|n1z>&zmIwVsKpQ#U@;tvEsKfuL;RCR z@l9U8uM!JtK7uKhkHH`Fga$Y3M8GwlFkF-QsnEi|^WZA^GvRy-3rXs}J-W63a|2PL zeG%DX{Y%jfb>Lq`biA*n)sS=k%rhAXe@Hh}Hx{YdI8dRqm6bkCun5jUGDpy+OYfYIj z2&=NqSzO-eN=XV-w?(x#9je-lwxL30Dl-cxLxrvGj{}lvtRgj9C7ue^Y-lFjyPL2M z6**eR4B`lTn*x<>QJ!X~M>X)ot%r(KV$MUBaTou1Nv2JoDvn_jpnsHCrtP09IddoC vxIV)PY=sNoTmTh;5Z1@mX)Wa9MO%PTdJ$9)t~#48}55I+uN6fgb*UK__DF8AR!45$wuB|a}QY{LPAIa0xplIfL7d} zWg3?%E>y)0P|&)dwraJlN?Y4n+gioe+Nu?|uIl$cGxN5D&!0b%J9FmDnKLuz{Lh(_ zZQH80ZL4~;F*DO&mX#fA%`C+)KF7g}GT$C!(Y`$x&i*JP|AsO~|CO?1{muTeOpxUt z5o9r^{d9+&?JQ!G$IZ+||JJ2Hn_$n5wcES$-(qb0xI7OUCl30{T#kdkwl|;c$bXCt z2kUC0wJpuzww6Zbc|4Zi>pIxl8?+P^zRiZ$b+$)KL&3V*`N8If+F+=)zP>J4S-}c_ z&!69Cbs3_875pK#ZGE8fk8GGZ-l0L8qjmMmLX9oq%@s`l6PlgxN?zryt-;2gzOGQ1 z1>R$^oXtM>F*QrF$M-&ql?=Kq1%HXzSG&ecshql*`9Hw#zA1lY!|i>Y(b5Dlaa-H6 zn3*54;Z9OxLtw=C)`;`N%Hasvi$aE87$DD5zt5<%vEp#!omb0 zR5X@URCFR06{Dwk9I2>sC^OKRTOx-^T^Zw*mP!*^(kEbmQKnRNl2ny3Q7Xf6vewdC z-+aS`g9Fjp#+Fb$b4-?^(b;I*Ec7xZ7Tw}=Ii|`EI?uAhcS>x@Mc%9+_=n45a|T0N zMeN4GfL0lM5WiR9cb6Ocmp?7Zv8kq(1*Q`}NB)c?KWg^P1UHYRaCYpCA%6xdI5qak zP{4hfHaxenZe>kF6w`tX$0u-lZ0ttAHV1TLwYh@ojFD8+SYV!@ssU9Xa~dm{4?=%| zUJGGebxDEff{R7gLnyy{K~ko8k8h!nYe_@w^^L9CnOK$IvSe}Wv`wvABP}s@=cdd^ z6WIEi)nMF~hWWuzkThFg$6PJi@X+9@C>p1zE~dBArYupL(xx^gBsawy*2G?1Kf*XI zCE1rHWe;_&>lU&v7qYKN${z3WtrRP>4&dYbxcvSLK;djp zXH9l*6>XK<*^$l~J-$xj9O%M0vzvOiL`z{mSL1u^8ZB7KWA=VuUXL6XH$Zo7wecIz z%-ytuiCe;oZBNQob$h* z#+ey+V)}LMOy5KD-G##!S{bUXX>5$H?i%Xt>SgBLxPBdjQ8EzsfW~<*(MV%6e`9y+ z&;ZNXOFTD6gR@A`AArcXj~2Cs1@0$-dH7Y+PD*e+Z~`&+$t4&MN{M09y4kB;m7Ka9X+$N7SI{%<-HYl-yGD z`J@alV7U87T5x)b48rlbwI2&HX1%Dycu8@rV$PRGiDCXE(W}1#mg8U5_#^L)@$+x@ znPWPCMjGyC#?RGVeNElf*X3Q!c|%*?))210zJCpfj$#|SdYJwTTG%g>doCS}_bST^ zX2P=oU1s>3Qlmb@dIgKt!0f zZAufu^~fGyRG8(0D|UD5t}=;twiDS2@Xnb#G=gHg&&;T6+L>6r^D4!)sj(qgAFOX# zz-(7*!P#8w_b!qi*y0+wMEzPwc+z!b*=SGXfuC}yF+P_-F0Yi7li3A1L!CU$Pf@SMu{ z8y3?w;WUY!mQSy&s0cQ-VWZ7C3WUMD&IQ^Udj{Y3sjV<~9< zwWCHG^-NewV*!4`WH}c}ZYdLtZ{XT-Tgl01DuzHGi!qP0kqytSX$ywx8|!PsSaBQE zo6ugwqsMK5qD2iXw}lON^!7)~t12ognAw^bU%Z6>V|i9lahvQfmHirc|)|WZCS9sxsG`^@OhuxJlX(1?*Xe%8|3|;+kE4OQaCj9 z4b}~8V&=w#2ql~NBM(@|&AkXbotr^Qm?_!_q#nd7nR83Z=%&TgWV@K*s1s~9E@1)~ z7hcM9_E`&NUPiRiSJe!xZpFSkBT_wZ!Lnr%Gq)voB8o}9m-C}H=&lUrxq`3%!sgbt zQ_$thtY-cle9sp)pSF`43bZTvANE$_-*pRmEfj`qH8X6`2KcL;CDA+!B^>I^N0F$t|~X2!5QeYRT|46M-f zty0sr+gNQ#>~-$#tfp;Y=!W3@5RS{#@3W@RLcaSe+ewzXJNSl&tgcw$T7w_^$~IBE zGuE_rvbKjm`*r37n{k)qRB$)Xf7lvWagPj*ODlFPs%frktZ!rXdlOCbmxdbZn0;@e z0sBu4KadR-J3v6&Y`+f;B*+dNMQSL%KjvFkboK*iUKENxmxT+tPtI$9kWG%&4fJg4 zLfo*vvx^xI$qx6!OodH11?!i<+k+MJJ%UE*_OD5_0?B(HjorA;-Rs%UTDrRjyN0ey zcFth_1FUUD7?-hUYuB!1$1G+XlvBALV{~PpNkn69;j22@{4>O z%RM4L1PWk*=j4~P8S`uE2o+x5(6)pXKF>Ftn^jQqf)w8OBPK<5kG=k~ zml79FG*bv_zKrvxvIalFc`JE^AAiMCeAs)s{^6ud7@*%LaI@Qt%WBg5d<7AKT@8sgW*&kC65NqWOrhft^WB;K746mi|)7a}*7I=PO-aNmjvwmQJnO`a>0FeHbHq7T7uoPCpCJM}z z#018F6$1Pp)QWLLy$En81Th6%%+N zu-9i1$(xACpU68;r`PV63rs``MnG!AEKuC5nX^!Gk86ySFcv%=MHYDMlzEw1tOmge zj2k6V2|6Q6rtu_GsRbd1O6ep;a!yDUN!$mcObK<8;$O*}6GsVUo}B2_CxO3hvIPcS zpvEZ{;moX47g-2#M454lML5^ophX!ga`Db`OG5d($mAk5RG|nfEdb%W$z~y-_Eha& zG{&t}^V56u!uiuIA_1y!dRU^A>1ZSlJ3<>*4Q=V~VvZTIrE15ru7Sax^?l5kDS7*5 z@gvo`r!s$be9VHznuQ^jcWV5b(t9lbwD_k?nfg!XANT0K;yJ3hYDYtBc~ebjarwgK z%$O^An`iJFPt~^`*4F7qZB7@EXu@Ik3&3;u*e3lp&EvfQxMTM25uH4?S%2H&9pvA> zlj#YhVjVe{=^NQD=HJB2|CH$~1jQ!NOoe>lA=Wz#it`!iyGU__VG3xh#vn zwFJwA34*r;z!@xt%>k}~n`>Lz9IS6^yIMer8>Am8xRF<0tOt-Zxu7nyXr&$l z4?6&im@C}V+tsoWa{<1HUEIyX;mz?}N+<_S@vz zjN6qH`#!(6G|S8HT9WNCq-&ad7wK|5Z>i556Sx~gUH6a+rrFmtHp~y#wl=gf@4dXg zKGVZnhYhb~?ESHMHHF#({Ee&(S7hJF`HctFoC;vL9%jqidxnB)ZC8;=wm&j*!H7^#22Vo5gp6Ab8rU$ZLh&T9u#BlaCPe#d)8DH|5R&05Z@%7X&@g>IRW!PN& z%!qF9ds(i;1VRYbEp2LA$!xFS*Os6+@Svz|Mn#yvi>5TY6LyM6o z72?SU1P%B01J))XD0A5v!OI(x@DiZZ0Z{7UdA(Vu@ya7cOa9Sc{_4$N|K_)E{jRdA zdfN0kb7Pw2)7|%4^SQpq_9@?gFw@I#>&>$AJC7I_@He+-PCPvE1*1gE8dyEZyps^1 zA}aDu=69B5c}l0?M&wMT!zmL0%sfRM-I+`eqO-L;c4}wK!U~*L>2mc-w0f)Ld2W;o zogZow?kcZZ1=teMo72=8hcTRvQH3-3)D>C2nrb)z6=cuC^}>b8nT?-`Ap2AmWFz-L zc~SFpH94##at|yp7i;kGJ2Nd_i@Qby){*&=j{!4J)<~}dovZ!?f%O6@cxhT-y-;5A zWMG}w5D&R18e+~f$>PcoRPI?aB_ZtCwD?{k5JgTx0FY@+Z-x{`ixe%t6`}!)E)CVU z0Vpy55?=D>OxO9r8sQrFdiXr`&XgPCFQrSJ}SW2st1BCS*Ui!Re^Zq9@J^pi4jC-!KW#`F5IpKW%=v3V|xw$?} z=R6o<#s$g}wZ{!n)hdb!5ygj*g}Itj!ke8f|&ZYt0{Q$U&tdrF}%ynwPZX5{;(mP zLH1ws2{)$a(_oE04pEIM;Ml8ch5ef`L|uwQl*Y~bg;V)!RI1|)Bao#r>T z)GlVuLD?d}yKM3diTG@z_;(Y9V`FpR^GPNdj=|N_hkUW}Y!P%@iO%A`nBVbqrcb*> zL|frY#}W@+A+j*o7!uS36vN^7+)O|xo^>K@3$-!>xI^T2kSYJEF(Hyv4y|$|j5$(aY+GWi9eYs*eA;Rg!c)o;k{dcH|0I4WR z7Hn==(1v4;*Bwj?BWdhWxBD(Eu=(z!#A5tTet)-ZjvtAa6cMX}@Gp>N-o1=}+ija` z*~|DDt8G5ZeQfs{o16EowiR0LPyFs(w5VYc(~)1H#L95{;5tTdhkm*q5`C$k?x{3>)ctfy zxBd(*6v-2M0ymL2k@;(;1NJcEd1~)qwigI55=Hip;uMt;rvI2|UX(O}mq1gQj3E|w z4K;Q323OXwY)X=J(8Jqo<^%>BVdisyg%Xc$Ij_>k79{WxJ>>jUijEJ2)IVdlvz(vH z^FeBhFz0Ks9}&LvNbo#>K>}u1vb;Bvv{<$K=tyF~d*hdK;rg$z633e~ATox!8W!q=jU?c=mD9U@Ty^aA&r*#r3h5XZdtz)Ze%+f`%ji|Q<242 zk2qcWzes2Q9=WsTf7BeXX#Y)<88{BcLjNDTnNiscnYEPjmGg}xmiPACl#7(lkcz5G zxwtu6N*+(QATecR$S1mBCh}jMcutwIqdL0xko7@++g987oUHgOSOuFghW~V{ZFl>@{m4@UXD{Mn0bzIi^C-Afz-c!MBPt}V69MB$Av zFo3@Sna4B>R1+fnLU0L;<=IbI{f$MK6$am0EHZoBnLduDD2cyrCz#jN(0+Nxj}Wr8 zS!`n|1{F@=mtA5j@Rf}u5pJRIB)%WL+C)BgwasHN{bUT8I*Hp?>u$c`Qky3tif=@^ zFMkTXihnJ$ljID^IvDo{Yx#mxAoRv>RR3lxI` z%$O}p5z0>Gy)*O)k<&(KKvjC=ot|V!=VOjK4HNK!=$m`uG5Q&h#GFS1k^aQq)!^GP zpC10xY*Ve;-RZDRk-CwU1KIWHCQ~^RXJ`R9_!fdgB@TP)ts|u_QV-<~ir)+bB=M>N zY5d7RE+!!wwcw0&A)4f%NN@(EXdWd*OI!$Wpc3wS8C9Q&;hcIzOzou+;{eg+s$(nHjNZA48Q#)1ZL6^$HcVn1s zH9gx4%(g~08$GJN?ZT1uZA;f_eD`D4P;qbC6cq%Nam|+YNu`(b+a9wvmiSRDk+L^} zO2BDRI#Ihp;~O8h*7yfTP_+qOwSyXe{c&q0-}|^VuicNLi8NLqlB_mj3Fam_Zz<5j zMQMb}NuZj76>d>PO1YK6+BU$}+-wsD{Afa|T?kGXD? z_Bz$%Ro}!9ci5_Yv5^ZG=D7N1u65d~CVh8wuiTj3U~6!7;J&8~?_FohEfayvu&UI% z<%E@b?pt}Z)8@*$jrQzzerqQ@!uQiAsX%B#$F1-V{u+9V?;PDLMc4xtRd;ct%U0Qa zH|d_h_JrDs%Gu1k2MSQx?0Z3$yH{?#?9KlHDKv%pK1B_6p}>rJAD}4{-XJcJe;>c2 z%jSzb2omEVwe*MOrLsOERvl%zk7}up8T&N~_(TP@%5mBcXe#fbl844YbsrxSvQM;iXizG@gUvbel%X=`KsigNiD zlJl&F1G-!0M2sVck7oka#PTg04qawD<6=iXq8s9ucuYP*S&6nBO6(@G7l?EOjeJa| z6fe5uV=_V>`cRL_hCm-kyIQ;3qXoY^e!7g?(Q zfe=c?BT^_8hq(SmU2_nEB!xoo!Q3B9Tu&O1e_=rN>YtFf|44`{>(xIcaVH&D;v(o! z;>IHj<4Yy!R~TLNPu}>Lb!;_a2Z2EmK42AiNBWQ4TmOIA|5L91HQzN?_q!1#jNILl zZ~2pR^>IEXEu`8^JoO+;0`MYnEOIiX9g@ZBy0p2jtP>E9Nf2Ti46t=u ziAtW3q<#=Vuws)e5f!Vqxos0lxnmo6`a4&&)!SQ8>DyB8@*^uKOFdFehL?2_*;B zky$pzDR)znbT>f#%5AwOz(%E1#x;f7n751{nTOEiB;N9^Z3+-ReiZXtzO`k0CZ$n_ zsH~4wPUhNuSr)Yf7KGUfMiOka=vYyWJQFI1CzR(n)z0g#()RcGH z3H_3127ldRx?M9<8Hpmps@cNDL{1&yVu0e~F6MM7Fc)y04x4f@b4R!s;Pm*-oJadu zqokX!q^p(EW!K3vQBfsY4_Qz$>sUxtqO()~9>W3rogTsXfw@x@4^_6U2)04{Qycl7 zT75h(uhp$BO`1qyCb#oS1o~!kV*8xH-L#0(WQ~WdEm8ML_?nV`z|*ABz%qXJc7&44 zX@bd)6;gBSMY$59fGI2a{_W=E9s!)UL}fd3o+HE3a#6rUFXhY*d`yW|GzI6^;O{J) z=cR6fz);5dsJGqHj_SqqE{O!%q0#ZHNDMcBu1+_o0@I~%a-vX*0+UW6>>{}YVfNX8 z$dubB%Ged^*I~T-`goopd19IS22sFX zb)&LFHz|%tjseTkWGO{5=FN%Tz;09lW%)b5C)Y2_>QIR&FQVfX8Eq$(oqwwc>30sc zZ|aKTn%Hko9Z35M+)DYQ#1K-<9T2#s@2<(5Jw;a=bSuf!C2|wb!$MjPCal?(r zba%;%&c-om5TnXbdGYs`wNgxZ?3LIp-@<&=f5MD|PnE!vCT5w+S^y>f7 zP(F%3;=Db3jKBMTm@MyWxp{H(@r^Pc-;S^aEFX1`$OtCPhmM*@W=EYPU8RJ=Tqt-P zVMF-2`^=h59VLzY_I+lMU!OB3YpqSzAY@KF9z#cqD!l48s=28xu{?SFaFvOv_d{+nqF9j`o&;7# w1ci)Z1y$3hPc2RR2gzfA4=>6Z1wqOLIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? bmi CS.RUN.IPOK >LDYA L.MSG.IPKO - >SYSCALL printf + >SYSCALL puts lda #K.E.SYN sec rts @@ -93,7 +93,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC bra .99 .9 >LDYA L.MSG.USAGE -.99 >SYSCALL printf +.99 >SYSCALL puts lda #K.E.SYN sec rts @@ -112,6 +112,7 @@ CS.RUN.HOSTOK lda #1 dex bpl .1 + >PUSHBI 6 >LDYA L.MSG.HOSTOK >SYSCALL printf @@ -129,14 +130,13 @@ CS.RUN.OPENSKT ldx #3 bcc .2 >LDYA L.MSG.SKTKO - >SYSCALL printf + >SYSCALL puts lda #K.E.SYN sec rts .2 txa - ldy #hSocket - sta (pData),y + >STA.G hSocket .9 lda #0 sec @@ -181,11 +181,11 @@ Wait.TimeOut sec *-------------------------------------- CS.END LIBTCPIP .AZ "libtcpip.o" -MSG.IPKO .AZ "TCP/IP Not Loaded/Configured.\r\n" -MSG.USAGE .AZ "Usage : TELNET [port]\r\n" +MSG.IPKO .AZ "TCP/IP Not Loaded/Configured." +MSG.USAGE .AZ "Usage : TELNET [port]" MSG.UNKNOWN .AZ "%s: Unknown host\r\n" MSG.HOSTOK .AZ "Connecting to %d.%d.%d.%d (%s) ...\r\n" -MSG.SKTKO .AZ "Failed to Open Socket.\r\n" +MSG.SKTKO .AZ "Failed to Open Socket." hLIBTCPIP .BS 1 TimeOut.ms .BS 2 Socket .DA #S.SOCKET.SOCK.STREAM diff --git a/DRV/LANCEGS.DRV.S.txt b/DRV/LANCEGS.DRV.S.txt index 103e7e6a..e7480e83 100644 --- a/DRV/LANCEGS.DRV.S.txt +++ b/DRV/LANCEGS.DRV.S.txt @@ -11,11 +11,9 @@ AUTO 4,1 .INB INC/MLI.ERR.I .INB INC/NIC.I .INB INC/NIC.91C96.I - .INB INC/LIBTCPIP.I + .INB INC/ETH.I *-------------------------------------- -ZPTmpPTR .EQ ZPDRV -Size .EQ ZPDRV+2 -Counter .EQ ZPDRV+4 +ZPArgPtr .EQ ZPDRV *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -25,21 +23,31 @@ CS.START cld .DA #1 DRV Layout Version 1 .DA 0 .DA CS.END-CS.START Code Length - .DA DEV.HEADER-CS.START Device Header Offset - .DA DRV.CS.START-CS.START Driver Code Offset - .DA DRV.CS.END-DRV.CS.START Drv Code Length + .DA 0 + .DA 0 + .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- L.MSG.DETECT .DA MSG.DETECT L.MSG.DETECT.OK .DA MSG.DETECT.OK L.MSG.DETECT.KO .DA MSG.DETECT.KO -L.DEV.HEADER.NAME .DA DEV.HEADER.NAME +L.DRV.CS.START .DA DRV.CS.START +L.FD.DEV .DA FD.DEV +L.FD.DEV.NAME .DA FD.DEV.NAME +L.SSCANF.MAC .DA SSCANF.MAC +L.MAC0 .DA DCB+S.DCB.NIC.MAC +L.MAC1 .DA DCB+S.DCB.NIC.MAC+1 +L.MAC2 .DA DCB+S.DCB.NIC.MAC+2 +L.MAC3 .DA DCB+S.DCB.NIC.MAC+3 +L.MAC4 .DA DCB+S.DCB.NIC.MAC+4 +L.MAC5 .DA DCB+S.DCB.NIC.MAC+5 .DA 0 End Of Reloc Table *-------------------------------------- -Dev.Detect >STYA Args +Dev.Detect >STYA ARGS + >LDYA L.MSG.DETECT - >SYSCALL printf + >SYSCALL puts ldx #$70 ldy #7 @@ -51,7 +59,7 @@ Dev.Detect >STYA Args cmp #DEVID beq .3 -.2 dec DEV.HEADER.NAME+3 +.2 dec FD.DEV.NAME+3 txa sec sbc #$10 @@ -60,7 +68,7 @@ Dev.Detect >STYA Args bne .1 >LDYA L.MSG.DETECT.KO - >SYSCALL printf + >SYSCALL puts lda #MLI.E.NODEV sec @@ -70,61 +78,128 @@ Dev.Detect >STYA Args lda #A2osX.S.NIC sta A2osX.S,y - >LDYA ARGS - >STYA ZPTmpPTR + jsr Dev.ParseArgs + bcs .9 - lda (ZPTmpPTR) - beq .4 - - sec - ror USERMAC - >SYSCALL GetMemPtr - >STYA ZPTmpPTR - jsr DecodeMac - bcc .4 - lda #K.E.SYN - sec - rts - -.4 >PUSHW L.DEV.HEADER.NAME +.8 >PUSHW L.FD.DEV.NAME + >PUSHBI 2 >LDYA L.MSG.DETECT.OK >SYSCALL printf + + >PUSHWI DRV.END + >PUSHWI DRV.CS.END + >PUSHWI DRV.CS.START + >LDYA L.DRV.CS.START + >SYSCALL InsDrv + bcs .9 + >STYA FD.DEV+S.FD.DEV.DRVPTR + + >LDYA L.FD.DEV + >SYSCALL MKDEV + +.9 rts +*-------------------------------------- +Dev.ParseArgs >LDYA ARGS + >STYA ZPArgPTR + lda (ZPArgPTR) + bne .1 + + lda A2osX.RANDOM16 + eor A2osX.TIMER16 + sta DCB+S.DCB.NIC.MAC+3 + eor A2osX.RANDOM16+1 + sta DCB+S.DCB.NIC.MAC+4 + eor A2osX.TIMER16+1 + sta DCB+S.DCB.NIC.MAC+5 clc rts -*-------------------------------------- - .INB /A2OSX.SRC/DRV/X.NET.DRV.S + +.1 >PUSHW L.MAC5 + >PUSHW L.MAC4 + >PUSHW L.MAC3 + >PUSHW L.MAC2 + >PUSHW L.MAC1 + >PUSHW L.MAC0 + >PUSHBI 12 6 x byte PTRs + >PUSHW L.SSCANF.MAC + >LDYA ZPArgPtr + >SYSCALL sscanf + bcc .8 + + lda #K.E.SYN + sec +.8 rts *-------------------------------------- CS.END -MSG.DETECT .AZ "LanCeGS/SMSC91C96 Driver.\r\n" +ARGS .BS 2 +MSG.DETECT .AZ "LanCeGS/SMSC91C96 Driver." MSG.DETECT.OK .AZ "LanCeGS/SMSC91C96 Installed As Device : %S\r\n" -MSG.DETECT.KO .AZ "Hardware Not Found.\r\n" -Args .BS 2 +MSG.DETECT.KO .AZ "Hardware Not Found." +SSCANF.MAC .AZ "%h:%h:%h:%h:%h:%h" *-------------------------------------- -* Device Header (16 Bytes) -*-------------------------------------- -DEV.HEADER cld - jmp (DRV.CS.START,x) - .DA #0 - .BS 6 -DEV.HEADER.NAME .AZ "ETH7" +FD.DEV .DA #S.FD.T.CDEV + .DA #0 HANDLER + .DA #0 BUSID + .DA #0 DEVID + .DA 0 BUSPTR + .BS 2 DRVPTR +FD.DEV.NAME .AZ "ETH7" NAME + .HS 000000 *-------------------------------------- * Driver Code *-------------------------------------- -DRV.CS.START .DA STATUS - .DA READBLOCK - .DA WRITEBLOCK +ZPIOCTL .EQ ZPDRV +ZPBufPtr .EQ ZPDRV+2 +Size .EQ ZPDRV+4 +Counter .EQ ZPDRV+6 +*-------------------------------------- +DRV.CS.START cld + jmp (.1,x) +.1 .DA STATUS + .DA A2osX.BADCALL + .DA A2osX.BADCALL .DA A2osX.BADCALL .DA A2osX.BADCALL .DA A2osX.BADCALL .DA OPEN .DA CLOSE - .DA A2osX.BADCALL - .DA A2osX.BADCALL -L.DEVSTAT .DA DEVSTAT + .DA READ + .DA WRITE + .DA A2osX.BADCALL IRQ .DA 0 end or relocation *-------------------------------------- -STATUS lda #S.DIB.NIC.STATUS.10 - sta LINK.STATUS +STATUS >STYA ZPIOCTL + + ldy #S.IOCTL.STATCODE + lda (ZPIOCTL),y + beq .1 + + cmp #S.IOCTL.STATCODE.GETDIB + bne STATUS.DCB + + ldx #S.DIB-1 + .HS 2C bit abs +.1 ldx #3 + + ldy #S.IOCTL.BUFPTR + lda (ZPIOCTL),y + sta .3+1 + iny + lda (ZPIOCTL),y + sta .3+2 + +.2 lda DIB,x +.3 sta $ffff,x SELF MODIFIED + dex + bpl .2 + + clc + rts + +STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB + bne STATUS.9 + + stz DCB+S.DCB.NIC.LINK ldx DEVSLOTx0 @@ -133,234 +208,43 @@ STATUS lda #S.DIB.NIC.STATUS.10 lda L91C96.0.EPHSR+1,x and /L91C96.0.EPHSR.LINK beq .1 - lda LINK.STATUS - ora #S.DIB.NIC.STATUS.OK - sta LINK.STATUS + + lda #S.DCB.NIC.LINK.OK + tsb DCB+S.DCB.NIC.LINK -.1 lda L91C96.0.TCR,x + lda L91C96.0.TCR,x lda L91C96.0.TCR+1,x and /L91C96.0.TCR.FDSE - bne .2 - lda LINK.STATUS - ora #S.DIB.NIC.STATUS.FD - sta LINK.STATUS + beq .1 + + lda #S.DCB.NIC.LINK.FD + tsb DCB+S.DCB.NIC.LINK -.2 >LDYA L.DEVSTAT +.1 ldy #S.IOCTL.BUFPTR + lda (ZPIOCTL),y + sta .4+1 + iny + lda (ZPIOCTL),y + sta .4+2 + + ldx #S.DCB.NIC-1 + +.3 lda DCB,x +.4 sta $ffff,x SELF MODIFIED + dex + bpl .3 + clc rts -*-------------------------------------- -READBLOCK ldx DEVSLOTx0 - lda #2 - sta L91C96.BSR,x - - lda L91C96.2.IST,x - and #L91C96.2.IST.RCV - bne READBLOCK.RxOK - lda #MLI.E.EOF - sec - rts -READBLOCK.RxOK lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ - sta L91C96.2.PTR,x - lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ - sta L91C96.2.PTR+1,x - - lda L91C96.2.DATA,x Get Frame Status Word (lo) - lda L91C96.2.DATA,x Get Frame Status Word (HI) - - asl - asl - asl #$10 = odd? - asl if odd, CS - - lda L91C96.2.DATA,x get lo byte count - sbc #5 compute Size - sta Size - eor #$ff - sta Counter - tay - - lda L91C96.2.DATA,x get hi byte count - sbc #0 - sta Size+1 - eor #$ff - sta Counter+1 - eor #$ff - - iny - bne .1 - - inc -.1 iny - bne .11 - - inc -.11 >SYSCALL getmem - bcs .99 - >STYA ZPTmpPTR - stx .8+1 - sty .8+3 - sta .8+5 - - lda Size - sta (ZPTmpPTR) - ldy #1 - lda Size+1 - sta (ZPTmpPTR),y - - iny - - ldx DEVSLOTx0 - -.2 inc Counter - bne .21 - inc Counter+1 - beq .4 - -.21 lda L91C96.2.DATA,x - sta (ZPTmpPTR),y - iny - bne .3 - inc ZPTmpPTR+1 - -.3 inc Counter - bne .31 - inc Counter+1 - beq .4 - -.31 lda L91C96.2.DATA,x - sta (ZPTmpPTR),y - iny - bne .2 - inc ZPTmpPTR+1 - bra .2 - -.4 lda #L91C96.2.MMUCR.REMREL - sta L91C96.2.MMUCR,x - -.8 ldx #$ff hMem - ldy #$ff PtrLO - lda #$ff PtrHI - clc -.99 rts -*-------------------------------------- -WRITEBLOCK >STYA ZPTmpPTR - - ldx DEVSLOTx0 - lda #2 - sta L91C96.BSR,x - - lda (ZPTmpPTR) - sta Size - eor #$ff - sta Counter - eor #$ff - - clc - adc #6 3 WORDs more Status, len & Control - - bne .10 - clc LO byte is 0, no need for an extra empty page - -.10 ldy #1 - lda (ZPTmpPTR),y - sta Size+1 - eor #$ff - sta Counter+1 - eor #$ff - - adc #0 - -.1 ora #L91C96.2.MMUCR.ALLOC - sta L91C96.2.MMUCR,x - - ldy #0 - -.2 lda L91C96.2.IST,x - and #L91C96.2.IST.ALLOC - bne .3 - dey - bne .2 - - lda #MLI.E.EOF +STATUS.9 lda #MLI.E.BADCTL sec rts - -.3 lda L91C96.2.AAR,x - sta L91C96.2.PNR,x - - lda #L91C96.2.PTR.AUTOI - sta L91C96.2.PTR,x - lda /L91C96.2.PTR.AUTOI - sta L91C96.2.PTR+1,x - - ldy #S.ETH.SRCMAC+5 Add Src MAC Address - ldx #5 -.4 lda MAC,x - sta (ZPTmpPTR),y - dey - dex - bpl .4 - - ldx DEVSLOTx0 - stz L91C96.2.DATA,x write fake status word - stz L91C96.2.DATA,x - - lda Size - pha - eor #$01 - lsr - pla - adc #$05 add 5 if odd, 6 if even - sta L91C96.2.DATA,x - lda Size+1 - adc #$00 - sta L91C96.2.DATA,x - - ldy #2 - -.5 inc Counter - bne .51 - inc Counter+1 - beq .70 - -.51 lda (ZPTmpPTR),y - iny - bne .6 - inc ZPTmpPTR+1 - -.6 inc Counter - bne .61 - inc Counter+1 - beq .71 - -.61 sta L91C96.2.DATA,x - lda (ZPTmpPTR),y - sta L91C96.2.DATA,x - iny - bne .5 - inc ZPTmpPTR+1 - bra .5 - -.70 lda #0 - sta L91C96.2.DATA,x - sta L91C96.2.DATA,x - bra .8 - -.71 sta L91C96.2.DATA,x - lda #%00100000 signal an extra (odd) byte - sta L91C96.2.DATA,x - -.8 lda #L91C96.2.MMUCR.NQPKT - sta L91C96.2.MMUCR,x - clc - rts - -.9 sec - rts *-------------------------------------- OPEN jsr CLOSE +* ldx DEVSLOTx0 Done by CLOSE + lda #L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA sta L91C96.0.TCR,x lda /L91C96.0.TCR.FDSE+L91C96.0.TCR.FUDPLX+L91C96.0.TCR.PADEN+L91C96.0.TCR.TXENA @@ -384,14 +268,14 @@ OPEN jsr CLOSE bmi .2 .1 lda L91C96.1.IAR,x - sta MAC,y + sta S.DCB.NIC.MAC,y inx iny cpy #6 bne .1 bra .3 -.2 lda MAC,y +.2 lda S.DCB.NIC.MAC,y sta L91C96.1.IAR,x inx iny @@ -426,6 +310,233 @@ CLOSE ldx DEVSLOTx0 stz L91C96.0.RCR,x stz L91C96.0.RCR+1,x + clc + rts +*-------------------------------------- +READ php + sei + + >STYA ZPIOCTL + + ldx DEVSLOTx0 + lda #2 + sta L91C96.BSR,x + + lda L91C96.2.IST,x + and #L91C96.2.IST.RCV + bne .1 + lda #MLI.E.EOF + +.9 plp + sec + rts + +.1 lda #L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ + sta L91C96.2.PTR,x + lda /L91C96.2.PTR.RCVD+L91C96.2.PTR.AUTOI+L91C96.2.PTR.READ + sta L91C96.2.PTR+1,x + + lda L91C96.2.DATA,x Get Frame Status Word (lo) + lda L91C96.2.DATA,x Get Frame Status Word (HI) + + asl + asl + asl #$10 = odd? + asl if odd, CS + + lda L91C96.2.DATA,x get lo byte count + sbc #5 compute Size + sta Size + pha + ldy #S.IOCTL.BYTECNT + sta (ZPIOCTL),y + eor #$ff + sta Counter + + lda L91C96.2.DATA,x get hi byte count + sbc #0 + sta Size+1 + iny + sta (ZPIOCTL),y + eor #$ff + sta Counter+1 + eor #$ff + + ply + + >SYSCALL getmem + bcs .9 + >STYA ZPBufPtr + stx .8+1 + + phy + ldy #S.IOCTL.BUFPTR+1 + sta (ZPIOCTL),y + dey + pla + sta (ZPIOCTL),y + + ldx DEVSLOTx0 + + ldy #0 + +.2 inc Counter + bne .21 + inc Counter+1 + beq .4 + +.21 lda L91C96.2.DATA,x + sta (ZPBufPtr),y + iny + bne .3 + inc ZPBufPtr+1 + +.3 inc Counter + bne .31 + inc Counter+1 + beq .4 + +.31 lda L91C96.2.DATA,x + sta (ZPBufPtr),y + iny + bne .2 + inc ZPBufPtr+1 + bra .2 + +.4 lda #L91C96.2.MMUCR.REMREL + sta L91C96.2.MMUCR,x + +.8 ldx #$ff hMem + + plp + clc + rts +*-------------------------------------- +WRITE php + sei + + >STYA ZPIOCTL + + ldx DEVSLOTx0 + + lda #2 + sta L91C96.BSR,x + + ldy #S.IOCTL.BYTECNT + lda (ZPIOCTL),y + sta Size + eor #$ff + sta Counter + eor #$ff + + clc + adc #6 3 WORDs more Status, len & Control + + bne .10 + clc LO byte is 0, no need for an extra empty page + +.10 iny + lda (ZPIOCTL),y + sta Size+1 + eor #$ff + sta Counter+1 + eor #$ff + + adc #0 + +.1 ora #L91C96.2.MMUCR.ALLOC + sta L91C96.2.MMUCR,x + + ldy #0 + +.2 lda L91C96.2.IST,x + and #L91C96.2.IST.ALLOC + bne .3 + dey + bne .2 + + lda #MLI.E.EOF + +.9 plp + sec + rts + +.3 lda L91C96.2.AAR,x + sta L91C96.2.PNR,x + + lda #L91C96.2.PTR.AUTOI + sta L91C96.2.PTR,x + lda /L91C96.2.PTR.AUTOI + sta L91C96.2.PTR+1,x + + ldy #S.IOCTL.BUFPTR + lda (ZPIOCTL),y + sta ZPBufPtr + iny + lda (ZPIOCTL),y + sta ZPBufPtr+1 + + ldy #S.ETH.SRCMAC+5 Add Src MAC Address + ldx #5 +.4 lda S.DCB.NIC.MAC,x + sta (ZPBufPtr),y + dey + dex + bpl .4 + + ldx DEVSLOTx0 + stz L91C96.2.DATA,x write fake status word + stz L91C96.2.DATA,x + + lda Size + pha + eor #$01 + lsr + pla + adc #$05 add 5 if odd, 6 if even + sta L91C96.2.DATA,x + lda Size+1 + adc #$00 + sta L91C96.2.DATA,x + + ldy #2 + +.5 inc Counter + bne .51 + inc Counter+1 + beq .70 + +.51 lda (ZPBufPtr),y + iny + bne .6 + inc ZPBufPtr+1 + +.6 inc Counter + bne .61 + inc Counter+1 + beq .71 + +.61 sta L91C96.2.DATA,x + lda (ZPBufPtr),y + sta L91C96.2.DATA,x + iny + bne .5 + inc ZPBufPtr+1 + bra .5 + +.70 lda #0 + sta L91C96.2.DATA,x + sta L91C96.2.DATA,x + bra .8 + +.71 sta L91C96.2.DATA,x + lda #%00100000 signal an extra (odd) byte + sta L91C96.2.DATA,x + +.8 lda #L91C96.2.MMUCR.NQPKT + sta L91C96.2.MMUCR,x + + plp clc rts *-------------------------------------- @@ -433,18 +544,22 @@ DRV.CS.END DEVSLOTx0 .BS 1 USERMAC .BS 1 *-------------------------------------- -DEVSTAT .DA #0 - .BS 3 size +DIB .DA #0 + .DA #0,#0,#0 size >PSTR "LanCEGS/L91C96" .BS 1 - .DA #S.DIB.T.NET + .DA #S.DIB.T.NIC .BS 1 Subtype .BS 2 Version -*-------------------------------------- -FLAGS .DA #0 -LINK.STATUS .BS 1 OK/DUPLEX/SPEED -MAC .BS 6 *-------------------------------------- +DCB .DA #S.DCB.T.NIC + .BS 1 FLAGS + .BS 1 LINK + .DA #S.DCB.NIC.SPEED.10 + .HS 000E3A123456 MAC + .BS 12 IP/MASK/GW +*-------------------------------------- +DRV.END MAN SAVE /A2OSX.SRC/DRV/LANCEGS.DRV.S ASM diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index 0e839446..5634f011 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -177,7 +177,7 @@ DRV.CS.START cld .DA A2osX.BADCALL .DA A2osX.BADCALL .DA A2osX.BADCALL - .DA CONTROL + .DA A2osX.BADCALL .DA A2osX.BADCALL .DA OPEN .DA CLOSE @@ -216,8 +216,7 @@ STATUS >STYA ZPIOCTL STATUS.DCB cmp #S.IOCTL.STATCODE.GETDCB bne STATUS.9 - lda #S.DCB.NIC.SPEED.10 - sta DCB+S.DCB.NIC.SPEED + stz DCB+S.DCB.NIC.LINK ldx DEVSLOTx0 @@ -269,32 +268,10 @@ STATUS.9 lda #MLI.E.BADCTL sec rts *-------------------------------------- -CONTROL >STYA ZPIOCTL - - ldy #S.IOCTL.CTRLCODE - lda (ZPIOCTL),y - cmp #S.IOCTL.CTRLCODE.SETDCB - bne STATUS.9 - -.1 ldy #S.IOCTL.BUFPTR - lda (ZPIOCTL),y - sta .2+1 - iny - lda (ZPIOCTL),y - sta .2+2 - - ldx #S.DCB.NIC-1 - -.2 lda $ffff,x SELF MODIFIED - sta DCB,x - dex - bpl .2 - - clc - rts -*-------------------------------------- OPEN jsr CLOSE +* ldx DEVSLOTx0 Done by CLOSE + lda /PP.RxCTL sta PacketPagePTR+1,x lda #PP.RxCTL @@ -569,7 +546,7 @@ DIB .DA #0 DCB .DA #S.DCB.T.NIC .BS 1 FLAGS .BS 1 LINK - .BS 1 SPEED + .DA #S.DCB.NIC.SPEED.10 .HS 000E3A123456 MAC .BS 12 IP/MASK/GW *-------------------------------------- diff --git a/DRV/X.U2.DRV.S.txt b/DRV/X.U2.DRV.S.txt index 7dec2847..f02cf21d 100644 --- a/DRV/X.U2.DRV.S.txt +++ b/DRV/X.U2.DRV.S.txt @@ -187,7 +187,11 @@ DRV.CS.START cld .DA A2osX.BADCALL .DA A2osX.BADCALL .DA A2osX.BADCALL + .DO U2AI=1 .DA CONTROL + .ELSE + .DA A2osX.BADCALL + .FIN .DA A2osX.BADCALL .DA OPEN .DA CLOSE @@ -248,6 +252,7 @@ STATUS.9 lda #MLI.E.BADCTL sec rts *-------------------------------------- + .DO U2AI=1 CONTROL >STYA ZPIOCTL ldy #S.IOCTL.CTRLCODE @@ -269,8 +274,7 @@ CONTROL >STYA ZPIOCTL dex bpl .2 - clc - rts + .FIN *-------------------------------------- OPEN jsr CLOSE diff --git a/README.md b/README.md index 9da36052..b5af3e39 100644 --- a/README.md +++ b/README.md @@ -296,10 +296,10 @@ note : '$VAR' does NOT expand Variable | Mouse.DRV | Working | Apple Mouse Card,//c Mouse Port | 0.9.1 | | DHGR.DRV | Working | 560x192 Mono/16 colors Mixed-Mode support | 0.9.1 | | ---- | ------ | ------- | ----- | -| LanCeGS.DRV | Working | | 0.9.1 | +| LanCeGS.DRV | Working | | 0.92 | | Uthernet.DRV | Working | | 0.92 | | Uthernet2.DRV | Working | | 0.92 | -| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.9 | +| Uther2.AI.DRV | In Progress | With ARP/IP Offloading | 0.92 | ## BIN,External Shell commands: | Name | Status | Comment | K.Ver |