From 4eb13cc475fc43b77ea2c0a47718e1de58079bab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Thu, 14 Sep 2017 17:21:06 +0200 Subject: [PATCH] Kernel 0.9.1 : Code reorganization & move to CSTR (GETTY,LOGIN) --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes DRV/CONSOLE.DRV.S.txt | 2 +- INC/A2osX.I.txt | 4 +- SBIN/GETTY.S.txt | 24 ++++---- SBIN/INSDRV.S.txt | 3 +- SBIN/LOGIN.S.txt | 3 +- SBIN/SHELL.S.CMD.txt | 118 ++++++++++++++++++++++----------------- SBIN/SHELL.S.CSH.txt | 2 +- SBIN/SHELL.S.txt | 2 +- SYS/KERNEL.S.BIN.txt | 100 ++++++++++++++++++++++++++++++--- SYS/KERNEL.S.DEV.txt | 24 ++++---- SYS/KERNEL.S.ENV.txt | 5 +- SYS/KERNEL.S.FIO.txt | 89 ----------------------------- SYS/KERNEL.S.INIT.txt | 6 +- SYS/KERNEL.S.JMP.txt | 4 +- SYS/KERNEL.S.PS.txt | 15 ++++- 17 files changed, 213 insertions(+), 188 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 99a0923e324f2b3a884c9f3d1b188427a0d8c78f..a04c5855573f9d11e348bb7b28acd02614f92112 100644 GIT binary patch delta 5340 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 diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index b010c3687644f12d03a97050a5d16236a05070da..25402aa76dc6dbb1e5c6512bd8d3778178115b5f 100644 GIT binary patch delta 23519 zcmZ{M30z#&_5Xcuc<^T45MVZ7*us*q1O^6@5MnmABqVHM$m&Xf1e5>*iJ(=StZHJS zL35>1tG1=Bt#xhE)upypt4-YZx^=HhtJc=-r~mJ{_sv3*fBX4J<}T-+d+yoqx$nv= z%dfn${GQ>M7+-F2!o(#p-&CDR6HYA`zw;9BU#Ptqt1O#P)TP|ft1VO#@y`q;{r>yx zk66Tv`!7kn+A_YWwY9y?&zyHEK0oj4>IfFdmO|$Fp)$F-`{JN)!Jhj5uHOEw!Lr~| z7JrvA+1E7|%+1@fh1u>_eC52ie~dZrq2|c!;xT62i~0TCL0>u3?^h;A#yXh(fHFDU z-N_PuqD*#lbp|)Jt`w^$97Fp^2Y%ycIWvw+V7X;1>8GKQG;ofeCH*XVC>pe%E0Zka z7yRmrW76mUQkh)Rx;C(Ky#(do)w+GSC)nSyt(&Djh`z?Ujn%F5&M)6h1o&Gj@r{#sT)5px6Rxs^%7_2{T zZubduyT6axL^(@%GHMHcW;`VT27#?S< zu6`XYd6dPlrCMm%BLI_^IB~0YNunb!)c8S*FL$0X@t${)BaS^`uz@U>14~x+_;TI0 z`xmC|>K}LhJ(`zChAP0z{{Yp9m#g-4_jd&cwgl1N_3S!)310Zj_glTt>(WU-S4m)s?-BztRQ~k?fqE^?QO$8 zpO3i{R1k4^YE#N*5Y7iW==eOU)Jm_ zRcIr5;sSSDwhAeu^U`x95p!}UwEMFic|-+lbFg(->~WULJAM`GRMTcpG~MqV&sW7E z>jiR>w@^^NxqEb^zJCYpZjaEVV7)nNl>SAB;Im?rV$h%^ggbR{@XrTqX~*Z^7JHs@ z-?P@lS)Mpn6wD2-=pI?Vy|1seW2DEov6{u})S4S?=npPrSyq1R8YOd+O}4dcA3>wT zU`0D?Yl91e!`nMMyN8EamYo&t+E`p2TpSF63KrCs1V)Bn-U^vF9^D(z+0)d$jg&-a z5KEoGefyP^vlCd+IV5qeM7G*@3PMRqELwE1Lk9zMj0(N(qJM_O!CwdtW~OmvnukrY zqGW#iex*=J;ZN>YN@G*e-}n95y}|rH4CNkbBRxX)X^-gL0Xy_0YvdXcEz3t9UK|8721f>hb;Bby+qbavZ%lmkPFm&V;giBaU2*C`C6D7Ihygq~QUaYyZGVaLd5<{w`+SX`W2pu48%1c#=}cubii3>Y>Bscg#~ZP0d%-n31~f z9Y+=@UE>L*Oo*K6%V=ewmd(#X4o&&=6C+Dd!Gx}ll7!s3pekvtiaj+0BR#>+o{phl z$53~$tT?!>W2Cbun`!d^H(|bnCL|HkT*)TKNn%|Ka1@(6gSo;4`h*40tJvg7#~4dm z7(E9P<2p+YE{z_%h)t65*B3LPX|yGD=1bWbM&DiHH2nu^pZ@k zlfV<|nb0c|OO~))@{hS0V+DYaTA9nVl>m~|z#^hglCG^nt8F!dzU}QFW$s2m9UM&y z;vkx~4*6oG*?0FyBVIUAanw=nC5kbG~H@*TZU z@+SV!LdDZ^Hf?t}DC8ggbM){W8>_PnRKsUC6Dv_j>Z-zJt2=TWQ|gP&mY-oNmkRJ49|+~w?8HE_f=If?GNk* z<~~8(B3cB&De*>A02zHU?^|8ykbo-IqW~lG?RD9ht5_15O?7V5!fF?N|F& z1To#$Luzx7XXE+I{F}DKCX5 z%->zp&>Wud@);(epQXIQRSwCI5N#=t{dp@X8PMqcvhwF@O{;aFXK=0r|Zw`G+guk!k?{Ha`XO5G%(2p z7OfuIO3e8;w2~g&SiP6I{?6~MQJmg?M2!ShYX`^Ri2}WXcj=h&v)&_A-^ZZFy3lSiPXXL9!t{?M=D8p9w`&ydRGm^@$C6hGd%c&m)nfY39DjCp zHZxY678!!v2#f4(Qhf8s!Pwi;KPFXMC&}tkmfg%7ueZ$1X~C%UR`|z*P@?5~x(0%m zbO(Dnc60|zM@LJSvaB`y;PsZw837qG<>veH+01tS^Xn~H<7-V{p@Pj^Cq3-7!$V-b z@_F-1%8N&LmX3{;`h2B3moj60c&K9oEe5%oyN5b=EoCz|qH`J#wY3E{Ht+21>+9ay z(Z{q+ix+?XRp0WQ;9=P2HB z!19@}N=;aZM#-kRVbd1CA-@zVD~x~(=1quvL%5Z>VBanr9zsJz+;tc@a(k`wOeLH+ zUnt?mfsQUR%gkOWRBT+3;*7ineEeD^H@ONbmbktKnz(&qYyD0N3_J_@?S~b&auz>% zt&%otk*S)uk1S-#i^DpZfCd}8`?o@UWGvwc2bFZ&Qd28eF5~kKD)U{iT7x|u%z()f zB=WP;T0VYI@mXQ8sK;H;FTPrFF41AB2K$hAfQcIH8)J6ZCsQ0*0?d@$EtwK#hmjJ| zzaNg%YLG3fk;ffUGLF>9At;b}c#T3uwnadt2KcRq zV07BaWR8NgA;S5{$K1`dwOA@~T?okXmcj0RFuVz%ig`Eie;-m($2XaXua5=+2y7$+L)FT%27Ztdu0d^0w}dE@p>$k{OUnre8p$9AhaR z^tY>HZ-B(QW^AN;I5hj5UoRz^D{cQii1kJaswO zNO-41-Q9Ff)lAiIWc3 zmON+g75wD&*w8p!iD{?4$5#^w`dP}A(H+2PFSVC5E8JV*dMCoCMchM#m!h^yiVR7b zYqu$4>mg!+p-#9m%(Z8F8>EQk?UfR_?~D?8m6XVh_h)`U8_>Gw)=4$*o$Z z`a{Ow%GTX3KTG_PAW&mt4U!t5TKZl5t3T^$Gk+YS4b$$%&J*sDVTifeS@%w4KA*|o zx>buEzYhSK8XJTMhQERO_T>$Y^}1XzbqLz9%3bI)0k*Ef_ z)UQKJJt~$0h{H_(jk(fq&6OU*N?S>a;(uo@wPFaz^LW%!PeegpLA&~WRD)dV$V#ZMKS>_=;_={MUB^fV&dI(9DKP1?F~?r>-y)$rGE~mo`zS$X`gzsu z0}Z6{wX0OH@YR%F5&2{78ubR|*{=#`KkP9I&ob?Rii4Zxan_T^65qU=>DS6MQQATN z-Vx1Pbx7pm$Oqiq+Od5YZs~QZi1s|!p9!>n*vv9ba6i{l%WjBFuOID&FLn0f+~HxL&Qxb0 z`Fh^DzFgb!7p&@>l{q`QheW;|IoGqmz9CA5J>t^EyrfO_6(CNP#HwOxh)gLtl3TXN zOw<$yH*X)I>|kLvPkhLdKMqq*j=D&|)k^hht7EkRU)$Pd=BTHC)wR^Gt8Z?jaaj`q5ZH3mSOru_bSZT#3_W0S4so!&rd*{&nhGu{l{z$;r8t_%Ot*B**#d2$* zh|DN40~=g&_&@gsFOu3(1WB#57R$WJ?sh#EXK=7DP_y7=+e)EV}9 zA%Ze@C4c5M)iqAJ1?cS1+8*Q;BIxx5M!JwDV~Gn-8HH1uKB|6bh$SwXK1y3m7~>4Z zxs@}|($mpQsAdLE))WbE4KKOPlG11(#b7q+NGp(6uHm$p11_3ax2LAJznLy<9B|eo z{v?=`51j!YO=Qt16UGWw^Na6|$CDPXOw=!Z=Q#>1)Z~puv;Uft2b$1Uk_a^@Kb1}|N<80at zQXkM7=a~DNKc9KdWkolUW3|4ccf{A;yRCZwl#V|StztBW*e{?V2qthlCOj!mr|^4D zU8qYebglunN>B~P7akSU;6AYg_)dN+sjQq0qj z@&42HG9Z@7u*0R2OZb^%$UF?d^{uOKtKlaX$D~wvkP8(15_e~~v;niih2250;Y9h% zPlG)wV2|73JxSQuE!-xSbXn8_Ev@a$@r}?ah7Mc19OK-`44%3o)5g)`xH1X?p~xIT zd9DRQkrThzcS>n%%?;Er`!3)hE*Rk8?^&8LXP+sq?e&cq;cKU0hAp^? zAAM7;OuiaGJl9~~71Q>8>@D?Ywj4)cSSOfLJ)GDDeODR*W)q%kJmNpnkD2?fZ zM1ImUAMzW%9JQ_RHMXokS|zzsNK6tmi7B%hlnBdQ$X|O`%_xGZATDocZe82%YpaKU z!rY6ACr{<#C4voloX`@I4fga8h=c-jLqkMh)UK??tt@jRz>73CHZ;TM5z(G0YZ`P2 zOGT^~K^gbCp)DrY3#2olRYFKZx3GAq6G6QEqI~9R;Lp6LI@6#~m>ZeN^3zam6eyqV zY%-ygM^J`}iC`B(8TuyD7(yA!N1zO@UxStGZ6*r-3YHw;-|De?QlNoMEbRyd1%ik` zlh=vf+(;m(Z2$nr#>k$?}%&PU)X z1G_<7+Q2b}pPaFoSAU?UE1i7Vp;*s2f;bT|L*WeeVbm6>M{PZnL?GiCiP-cDP3w9Q zF=xpBG97A%l&Tdv2UZq2&VF;;0F8@SVJIA7g)f%f@k5Yx2UN?t>h^l356jlv5w879 z&AAA{+H}4(pmt1Qfbx-iE;$iN4hn}Hqo+>sKn)3bkmCX(h0GjKNYg;`V5a8cQ~y%4 z#;-Wz1n3`HIihF`D5K5WdPUw5T8Md|cm!_K5YnN6h=MbqeW?0D=qZ)}HAKrJn@)uo ziKY?~o#Qw>(m^!3bQ-LrtD9M@>vfZ@<{UbvIeZg8J_>e@~AK}FV z7@Bmgxe2*$A=3_`wcwDc@Z@6r(SNJn@#`>?>ux={AyMv3-BVp4v8M+-}aRU>-z&XE^z9pSqUu9dioy`d!+^l-w&~!Rb80 z^zUQoab(7{AJE!&Qi@KlUACujIWvA_0-DP_cb#$VAD_Cm{ccPlI#>8v{5`TaH*Y~1 zbKHB{;`hmYS7`UM{iv$J;{KbM_7nVwJ4T6nrX2@X#!pQTs z;?&h=|B`?3kvc2wSEf)R!lUuFhe&4O8nc-XbKl2mmhuR1{#c!5`!y2^=+Kf@p76K0 zj^1&v&r@pK_%=cs`J(3?}_7x=BAXX|Ee>_p$`2>&w{SZ z4uT3#DNxVspr_;~bb^u$RK$n}pux#oq6FYi&_I+dHz}F;(`oc##?Q>Nn#YoU4xLQl z;(Ak{9iXjfSiT;mM(y=&P0aO6G=;qQKsR0fGYynxaSt-2*jd`c5xq{~2i%S3`gR{V zCCQJFHFMiRaA7ElnD;mQWQ-*hS3%Sfr#%KZCBNgEW+^Uu9RGGaLAa7@5cZ^hKMi|` zVCs|dW+?k9VHsxI{t)swY`FN5ie7)(WQAwsxu!kKmHHU3@*IEYe=%9@FPN*4drN_Y z1Yvp^h*@7@lU;P};&}B`h8DLqvtH+i>SJ=9)<24cQQz{0TsieketE1V zCG)M*R(RW70XJ^%ko^KV{)ClM{>)FtT9RFVF}=q@+|#YvHpsNUvPoXnXQa+^{*y&H zu?GixkduFx4B{Bm-;;(>dmoUD59FG;<;?pp{${D-9!KiW__sU^A9nU3MkRej=PRpb z+P4j&{NZC0)lIGR8>I#Rkz0;h)VHds6^h&Vgofg{P=xp2>9cT9-v6CCkG~#gu@-)c zRpUQ1am&9fpLsr~ACVi!^=%EXqA6eS8M-C8>i<521hv7c=x1fxh^w zntv_gB7~*I@bh$wH$%e(hbNXUaZXzxPT>i<#a*oFbkAZ{r1xOMU-%aB2Flq`Z-tA$ z6{l4AKMnmt&jGGfr^H35A*)6Ko!Za)6ZgPbPeD zq$%_lN1Q5)t}?uQztxg%O;d!D%RoiNyD{nG8RkOm4NdheaA}*WH!w%0S^g4^D)cM~ zM4u^VyRwyVoCiU;ihQ4>90G+y4NFI^gdOEGz6km~)OYU5o5x zxy4G+P5ffRl5EF)X?5F1mRmwC_ZSwpLGEf(OIQlFtN8KGSYVji0Z;5>!(yN=c={Z}Hf( z##eM>q(sxbKq2jT-I7+3XQ6-RFng6!6g;QBs= zwM3yvl^`4-V=;g3Zsu63gcP7?gHSG0+RLT3IxJ0!qgu?P@G&%|MzlclnnPyP@-Ls& zo}8LtxuQ!jiz`71XY}a4I#A!r;uFo|7Dcg13PK>d-E*6qi|c-QtuBhXz`>?Bqq&H^ z!LpLQgZa$u;jQ0}b-BQ|qS_05EBa6%mMVI-cunRrSvNTyD6%bNZtyW765dU19o)#7Kq)7irysCnOD2vakWzDb_O&P{ zNX`=lvl$++Em_Pk0FmI-W&=WIKHq=9l2KR~xiQ^MRRKXNvc!^*z#v+NB24ws;wdvq%?e*+T|H$Aug*pk=klX5Y+lV9^>V;1 ztl-sUZPMuXvtT$WuW_YrO>9^GZuMB^?P zl?=v0b3=&qz^rW6BA#)bB`;;MEP4yiW7-n*&RfbiUT2xBRP%$^S+dTqL6fUif!jt7 zWMr&SX97h%X+6g1%L&>jbFGlbhDYK;Ieuk?(#&WuC(b)|*y6G&kE6ot-D9^{K2^t^ z$eNnf!3Rvv^41IE6)H8@92n^s8fhIG=wzwOr}aeDbs(UIy$en0sUIBy)W%*^PB;-} z%dkAe^h|4jvGO9+UJ~H`+bnKnHD7U?W#-w9Xx5vgL!W}6IvQdK9PV0gVacsBxDH|N z3k>!lpDki)S6gVkMr2^yA!h;R4{%?bRyGH*H8a+lb`f6PI{bF8kGf1ZrIIb%z^`u8 zmga24fcQ-`0jis1SvwmowsU0Z5(N5OUVRYNow?`nuiLa7?E)G)b%*7=iCurnO+i=( zzpt@zJ(7BJ{JYJ1x8yw&5B|wBzBl4AAfRLMh~I=Y6{}F}W}{4!D3Ed@RHL(rx~|VU zK)xu&QF#x?Y$+by9q8`c62vV{@0Q-~E@oT{=rTeQVVnbDoPaKGf=m1?L%R-Zc&-m^ zK6F@sUH&dLm43%1@F3bJ>q}^ z!lbg4YssRXuBG%tQbEqXj&FP|)8}|*yq_4jn3L#q6BUQJqx{alM8`h(F02PZ{i-UtGf*lEV zKuJ?=yz{$+Jj6g;X7o@~;*_~jvk*1)d;Ipnm=x>xL+DNo#k_U+RU0o0z_NAl`hb=b zyBTLYyOVDVXtR_qK7l{6-DvV|;SUD1)CF6KH;_P|#}azX2rd88d~%C>O|F^8;xA;A z-2+1+t06Pn$$cmciS?v!!x)N~QLxkxpvC}__5LHm^bV4wy2dZY2oj9>pyCjQ*oGO( zbV!TpBeGmZ+m2@I4yd8A4#dfqfDOrk8QV|aptP1I<;?Y9>!NFK>hK@>C3bfr?W-$QJoJz`}^9w@iMhG zu+mpuTiYJ;Lj9o@;f2maZeKREtq2dP2(_3)^to~)21@%w&hmWxQ##9)YS>v$TA=n| ztH_d?F7CLqiuR5MsCF~6;$En3mTld5NOaJ2mlvs<>xVmGcDhYO6Bn!UYT6u;ummG; z*L+A$NLY%Wojn8QPuDWp+tOd(viur3#95;@Zl>xZf*M-9R^1%v?%Y1qO&uZ7^{ODD zfQ78u3KhcUqn(i7VP=n#SMn1-&^%=gvNPhBglcY9iH?Z&6*V`0Hg%`==Uf!tP}I7M zr67F^jU0Aw%r#i@E|Fs>5!Xj)d!`SHti=p6_N14Pme^-bfxTyGSBuM$D9GVTSp%6{ zF{PX(?-x_f)+kMDyOs>Uh-D8_43CUFY`cgMuak-+_xgz95PlIDS9&kIK_DunW7=VY zG$H+qF_wD+fA}^_PSTCxCAA~)vPwDs_%@3#{U$Vc&$^Xga=RsO2Fy3*wi9j>dUNW!Slc}L`o_-^kcTDLMT#^_61iCOCl$sRNW)Tw z8)0JQclaB(TXOp7eUN-{*t;dzy=`!0jOpJs_l*)AQkY37&oNghS%RI4>Kt>8k|nr( z4=^3oIW#ow&IpNM9l+GyN?gA<_N-h9vz&4hdC)TiC*5y#1T8RsBfZ zhRFX@40QYqYsvH?9?GG*k2!uGZV?p4buDEa!|@M|@gU(yy8-9Qmw+-fqm*OPgBTog zH%6vzj*XoaBx)gn`yWXz*C*4+7cYJ)=197R@9_>sc^jPW9B_n-x{n1#LB|}&EraNNOGLXSC$t{VyYmi=$ z5`Pug6n^-Q*x7TD)S7-GDadSv=}!)_`BFxYH-q&V%CYan9&xPk7Em_*jD;eFCO??I zl_>8urLY(jbeDvvBVVslfeK6Zi4?F}QaW+s*F_dqSVq+{1vC6oQnYeREWv}W5WH+q>diA;3y0aw=sLK8JAZ2nSP;6ap)Jxpw`}pKJr&8gG}3|>|^eJ6jb|< zP_z(%pbg;gQwK4$kj9qp2@qcd2T*lHCC1vt=$7i^idBR{U}=|vOO`1qmek7>{%~5HXG_XA(23&-%a^F(YG&Hy zSSIBPAW(M1)G`s|lgFdhh?H0xSB4kTgOoQNW!g@F@$3?zj*}(sp6+)i@8NGh9P3Hk zi$VH6%4~L^0!^7b{`DiV%AGMYSF5$h`r^J+j`hdwFk(>BIC=cCvA8|Rw@zIZryf_X ziThf~SAq!CmQ#9?X?TK(TotOtNG&u(kvrMR?{V2ZX?TA*O`Fu$u51z4E~#$*w#%N9 z?~%SoW^%-dqA~lX`B14Te5Tu;l9Gz$=!IrT+R52u$!U07dOX&hpN?Kv#&kG7+~(Oc zO}C3K&$FcG>+{b1|6!(O1CBi>GzVAexpK}t_pDQZ)BTZW_8Dv9^38n}aO;7%j1;`5 z6h^u#$c#BAXh1IJOAf?&#(lCyUhC?m(k*nC$v2s~P$51z#iFz+fgWr|-TC6(CQ(Yv zB!gIC&cTClyxEM5M4txtju~+5gq4T;TZ!N91@wCKxdU-Y<5eb#3y?jPPe$XbBGrfy-;Nn8F^NPOJ8Qt4#8vdDRfZg``MdBY#l#CYEsca%)9H9MNAPNa zZ%(dBd}|0Xid)u1V6+j8!09mBBQVyQAl8LIt}kQ)m+BAjz9gGo~o`_`I>4YB^F0KXM-3r%eJzCX&bRx z-X^}_b3Io%hoAGgo;HqfP<}iCf&=dgA)(13^wU6aC?e`gmUIE(5cLLEL!8LcH&fI` z@wD{EcF}V=(~%HCBb{IcOG3~{`;$GuDydr)QTQgChz`->-E!m$J$24j0JZgm-$(aK zk#Sy#H|g`|)s~e9TUu*zxe#EpF5-1x=y^&X@BKp0K~yN5vswLW(bQqmOE<)QopAi? zZ^upLD7Ad*vAA1MU|ILOIC~cUuK8=+-4?rTet4NmQLTD^qPkt#`(E7Cd%8W%*U%3_ z^!3%X;U)ag4tT!1DaI&gS^wbozGBN9|EFp6-$m8~PK~dvyKkVgW2F21^Uud~VcUBO zy_Uznyzk>*a^s*4s7%jSYZ0F??+2lta`Yet9BkPld-Q)v;OYNXqCxutWT5s5JS@!n zAzu??q$(fri(-s)>&J3R{(ty&F~)4yC#IU0D^vKL{$KuKjN#&M#29h*|G`Yipd$TK zYEDb~EZm}fPIl)Do}n4Zo-buCOaDLVeP~~yFaK-4N;76>uxQp7-#5?|a40&CZOIe47e>aO$VcTxCR3MR5t>CSRh;zq8CJ_QEjXJ=WgFmSAsxa0Am}qX>^Ir^^4i z%*aq(Dz{b}8FSp2qzW_fHU~Hnryhtu=N~#^^M~HbvkQElIeA{6oKMvmr zV3|IZA3bcOyJ3HDrMtJZoarz@AR{aGtNf|MM$tITjqq&d?%6sJBszh>{k@wv<2jcO z(?d7G9@rh4z74KbaAiZVWQm|7jE}e{Ci{a?iIwyb1@ne?3ray30D}xNK{#Ki{XID2 zAa*{4$M*>5mIm>tS)FtXHlB}yIx6wjV4hg^B9&h=VPtt>lj!1DgE?Xb43V&MP&La` ze*I4r*HRp&8+M4e0+0CcQp{ux4Hk)|!5rZv_HOIAs2ijm9H4|I2n;=%27`p#6<+S~qW^C|9=8^z4bG}s|} zxIInQp%1_!{$`bb^{HN3(L%6bh=?1bVWq55i*AC*?ZvkVwhRqy3yQ;-&*ryDKI5aG zfg1zrcdUyzG;EGCz<>6IUak!C_rB2c^^2tx)$k|3z!mh6XtWHgll-wSaFIO14}7WT zTegRO?-2dUCG;nSzy5`upp43EGUCORNWL68|uVy`Qttin{)amA>5a_~W-; zY2Dn!5A9RZy$IczT~tlMyUv66fqE%c@m)||DjCDisC8Z-!l!NIJ5njt}Q6?F1efcU!@c)_wu7x zp`a0QHnStbmKhJAL!ou~Pxv!eDgLF$PJ?eyY)z}rV>)7M!cIqcEgoPZs20MDR5GGz zHs_bT`f8;p_E#vWaz99~30-9mnZeTfs5g^ds@#bVy>~-WYMNL3S^gvZ&a0K#vA+hi zf=Bs_S1b8Rzm-W6{V^G!Eqa{KxJEh4{Y2;nWqJ5<8lG;Sca4&=?MZ9`>1g9AT*R2~ zAO0Ytbms|1%(uL^zpJsK<{+u?#FHq3f`Y9n+XI%`#hg!vhrlKtBtV{L2w$pHp~<1d zmi8==On;7louhb?0F4>XQ{*iQ+tXj5=Cr04F{JDzisR{;MZA7T853T=>>>@aqoZ$o zH@?L{7clgd2yxNNjF$U)hh-m7?5W5rS+ND9%6oQ>DR z6J3AAL>ZWbScTc%4BboVZ%Jy*d|PhyhL}|4og2L|S$XD@?W8{=O+1L31u6k7{NyZ)JBB64DEuut zuvmrv?}Rl|Mb;$wq&4eYBugkhC-U}SuR)=b>0eAk1rYNhQvz+icVqQp@&M=5Rkv3M zhkGxDnW0)Bd=ShVk7|0Ts%$P2+| zJr+Z3g}aXQFA6ItQ?AtlaTHVdsuqYx!VVNuM8gfTg5?TNecn2I9F-L!o3au!^ah|s zx_1?3n!0zj^w`~v3L#~xPjNv}&Kymmk#=d`j_A#DxU0nsI3fWGv$l$8Vyv(>c<_rGBETGvUy1?zeH3)cL! z4d$T`7*Y*7K8ipFVa+CG>UHa-eCCVRWPaBR)&T-9> zhSjiop(N|^hbL{zmhcZ>vL@#;kseG#dN6dnr)YzWi)op3I8E=rWX;MM1|lvb25B@Z zMCoHRWP$NAT#_$y2lu^f&4BZS;VBu=C@dLSL3}~tDteS1gw3K55I(7AjP~qSE~N=+ z{Jxj14&^d2i~sRuYg{bSg)IMa{?C`Kv&*j_8X*-ZKAK@JyRw&*rU#ioawqfnxA|Hkg%e@6JtFB&g%hM9 zshuUv)HL@<5QDs^OJ8i*B2l8K_QIxEnwxp zjhDV=Evvj;f{sdZ>31k1iZs3r^+-i9nDHG2pL_Uj6r8D8W5x`>&+n@d|F2*Lmqq!~ z-w+(zTiHGsZ0dkxf(GW95;C;T`MuLI z{629Ya>PHtM)W%+x~?BeYD9Cf^GB!6)$YQaSwH3(>uhEgjPZs}Roh?@R1ut4} zOXG>_Z84r-DrT_<0Uo7o;B%eyVbamP zO%%YA_d(ueV=Xg&i-VOZF8x@IQ4k-et;PgTBhU8Q@!HGPB#o$Wa3PfBG8)YxTZwOf zU~p3FG}B10y9kH22o3@KcDM5@TMXB^Yfn1{V;$g890Jq39wTiVB(`JBfZ{f>OWH() zjLP06ogLL6j6QVuRI5=l{+P5{`tQU5W;||!pUdb~^1LRbA}{Ins4)VYKb``m><#|W%eK<-H!(Zq zt<&8i2p-ekM(50TaFi5X2rnaIpDBSz`rh-W&{0Q=mi`xsz5Z9J8uhv0=d= zRaJY2$NC}e!S11<0i=mu0}%J?(81y4a|i%PKmbzSFsD|~gT=+g^w~u5+=NIm>#d0a zcU~SgE|?6u4cliQw{Y)3C+CMO~ zVJ~*Q8(}FEyIJq?tqyx$+51FI^WzC?`;i2bAtdvBa3-Ls|K@i&>?x@q5|SSg z^M&J>vFO1g9+he>~l3PxF2nI`LD# z1N<44HG2v^2MF62;tmnIF6GNJ7Z9d>#e+_}cl>M9BV>_FC4@Qk`^a)8Ahk;IcooIt zoy={CjG-q6`$(7SF_iHdWJ$=e%H8435IUI)$<{Ef=$;OW$b$^4ym}7Z((%@8HKtFu zQUTZ?Gi+v75YGmU&`>-=THe$SM+)yj45VPCkg}9`x-$x2WYZA2uK0dyxLvf-r&~j~ zOnK}Mjo!fT7cXR8@hDRf)c04QlHwy6C@kc`7=K?&(`1qU5gc3b^&zs~Y3+%c5-$aLgRK9LW zM16|s8qkLWn0||lp>@=m(uWljMX9N99b`XhR)p7&Iu+(Xic5qs;rAYt?~-|4Z+mm~o8iDVaxN0Li8WrUy|X|6C8kl$jSA7Q(ve^KBr0W8*z NI+M+vQ$_Z5{}0MRw5$LC delta 22472 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 MY`ifUE3qyAKdqZtv;Y7A diff --git a/DRV/CONSOLE.DRV.S.txt b/DRV/CONSOLE.DRV.S.txt index 16459b67..8a49362f 100644 --- a/DRV/CONSOLE.DRV.S.txt +++ b/DRV/CONSOLE.DRV.S.txt @@ -51,7 +51,7 @@ DEV.HEADER cld jmp (DRV.CS.START,x) .DA #S.DEV.S.WRITE+S.DEV.S.READ .BS 6 - >PSTR "CON" NAME + >CSTR "CON" NAME .HS 00 NAME must Be 5 bytes long *-------------------------------------- * Driver Code diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 60d1976e..840d65b1 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -214,7 +214,7 @@ SYS.SPrintF.YA .EQ $5A SYS.FPrintF.YA .EQ $5C * .EQ $5E -SYS.FileSearch .EQ $60 +* .EQ $60 SYS.GetFullPath.YA .EQ $62 SYS.LoadFile .EQ $64 SYS.SaveFile .EQ $66 @@ -246,7 +246,7 @@ SYS.PTime2Time .EQ $94 SYS.LoadLib.YA .EQ $98 SYS.UnloadLib.A .EQ $9A SYS.LoadDrv.YA .EQ $9C -* .EQ $9E +SYS.FileSearch .EQ $9E SYS.ExecProcessNewEnvYA .EQ $A0 SYS.ExecProcessYA .EQ $A2 diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 1011a5da..de54d6e1 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -40,17 +40,13 @@ L.MSG.GREETINGS .DA MSG.GREETINGS L.TERM .DA TERM .DA 0 End Of Reloc Table *-------------------------------------- -CS.INIT >SYSCALL GetArgC - cmp #1 - bne .1 +CS.INIT ldy #S.PS.ARGC + lda (pPs),y + cmp #2 + bne .9 - >LDYA L.MSG.USAGE - >SYSCALL PrintF.YA - lda #0 - sec - rts - -.1 lda #1 + >DEBUG + lda #1 >SYSCALL GetArg.A >SYSCALL MkNod.YA @@ -80,6 +76,12 @@ CS.INIT >SYSCALL GetArgC sta (pPs) clc + rts + + >LDYA L.MSG.USAGE + >SYSCALL PrintF.YA + lda #0 + sec .9 rts *-------------------------------------- CS.RUN jsr Init.Timeout @@ -293,7 +295,7 @@ Wait.TimeOut sec *-------------------------------------- CS.END PRINT.DEBUG.CHAR .AS "0123456789ABCDEF" -MSG.USAGE >CSTR "GETTY \r\n" +MSG.USAGE >CSTR "Usage : GETTY \r\n" MSG.TELNET.OPT * .DA #IAC,#WILL,#TELOPT.BINARY * .DA #IAC,#DO,#TELOPT.LINEMODE diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt index 34511606..16a46817 100644 --- a/SBIN/INSDRV.S.txt +++ b/SBIN/INSDRV.S.txt @@ -37,8 +37,7 @@ L.MSG.HELP .DA MSG.HELP L.MSG.LOAD .DA MSG.LOAD .DA 0 *-------------------------------------- -CS.INIT >DEBUG - ldy #S.PS.ARGC +CS.INIT ldy #S.PS.ARGC lda (pPs),y bne .1 diff --git a/SBIN/LOGIN.S.txt b/SBIN/LOGIN.S.txt index 0b89918e..b4b78b2d 100644 --- a/SBIN/LOGIN.S.txt +++ b/SBIN/LOGIN.S.txt @@ -38,7 +38,8 @@ L.MSG.PASSWORD .DA MSG.PASSWORD L.SHELL .DA SHELL .DA 0 *-------------------------------------- -CS.INIT lda (pPs) +CS.INIT >DEBUG + lda (pPs) ora #S.PS.F.EVENT Now accept events sta (pPs) clc Tell TskMgr To stay in memory diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 63d55cb5..35e0a47c 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -65,7 +65,10 @@ Cmd.Parse.NextC lda (ZPPtr1) *-------------------------------------- * ZPCMDBuf-> Command line (formatted & not empty) *-------------------------------------- -Cmd.Exec stz bStartProc +Cmd.Exec lda #0 + >STA.G CMD.bStartProc + >STA.G CMD.hFullpath + >STA.G CMD.hExtCmdLine >LDYA ZPCMDBuf >SYSCALL ExpandStr.YA @@ -74,26 +77,7 @@ Cmd.Exec stz bStartProc txa >STA.G CMD.hCmdLine -Cmd.Exec.2 ldy #$ff CMD Len - -.1 iny - lda (ZPPtr1),y Get CMD char... - beq .2 - - cmp #' ' we reached blank between CMD ARGS - bne .1 - - lda #0 - sta (ZPPtr1),y Cut CMD with the ending 0 - iny - -.2 tya Y=CMD len+0, if ARGS="" Y= - clc - adc ZPPtr1 - sta ZPPtr2 - lda ZPPtr1+1 - adc #0 - sta ZPPtr2+1 ZPPtr2->ARGS or CMD ending 0 if empty + jsr Cmd.Exec.Split >LDYA L.INTCMDS >STYA ZPCMDBuf we use ZPCMDBuf as a temp Ptr @@ -139,16 +123,47 @@ Cmd.Exec.2 ldy #$ff CMD Len inc ZPCMDBuf+1 bra .3 -.8 jsr Cmd.Exec.INT Found an internal Cmd... - +.8 jmp (J.INTCMDS,x) Found an internal Cmd... +*-------------------------------------- Cmd.Exec.Done php pha >LDA.G CMD.hCmdLine >SYSCALL FreeMem.A - pla + + >LDA.G CMD.hExtCmdLine + beq .1 + >SYSCALL FreeMem.A + +.1 >LDA.G CMD.hFullpath + beq .2 + >SYSCALL FreeMem.A + +.2 pla plp rts *-------------------------------------- +Cmd.Exec.Split ldy #$ff CMD Len + +.1 iny + lda (ZPPtr1),y Get CMD char... + beq .2 + + cmp #' ' we reached blank between CMD ARGS + bne .1 + + lda #0 + sta (ZPPtr1),y Cut CMD with the ending 0 + iny + +.2 tya Y=CMD len+0, if ARGS="" Y= + clc + adc ZPPtr1 + sta ZPPtr2 + lda ZPPtr1+1 + adc #0 + sta ZPPtr2+1 ZPPtr2->ARGS or CMD ending 0 if empty + rts +*-------------------------------------- * ZPPtr1->CMD * ZPPtr2->ARGS *-------------------------------------- @@ -157,12 +172,12 @@ Cmd.Exec.EXT >LDYAI 256 bcs .99 >STYA ZPCMDBuf - lda #0 - sta (ZPCMDBuf) - txa >STA.G CMD.hExtCmdLine + lda #0 + sta (ZPCMDBuf) + lda (ZPPtr1) cmp #'/' Command line is already full path, no search bne .1 @@ -234,9 +249,10 @@ Cmd.Exec.EXT.BIN >PUSHW ZPCMDBuf >SYSCALL StrCat -.1 >LDYA ZPCMDBuf - bit bStartProc - bmi .2 startproc +.1 >LDA.G CMD.bStartProc + asl + >LDYA ZPCMDBuf + bcs .2 startproc >SYSCALL ExecProcessNewEnvYA jmp Cmd.Exec.Done @@ -267,8 +283,6 @@ Cmd.Exec.EXT.SEP *-------------------------------------- * Internal Commands *-------------------------------------- -Cmd.Exec.INT jmp (J.INTCMDS,x) -*-------------------------------------- Cmd.Exec.CD lda (ZPPTR2) bne Cmd.Exec.CD1 @@ -276,7 +290,7 @@ Cmd.Exec.PWD ldy #S.PS.hPREFIX lda (pPs),y >SYSCALL GetMemPtr.A >SYSCALL PrintF.YA - rts + jmp Cmd.Exec.Done Cmd.Exec.CD1 stz UsrBuf256 @@ -380,21 +394,24 @@ Cmd.Exec.CD1 stz UsrBuf256 sta (pPs),y jsr SetPWD clc -.9 rts +.9 jmp Cmd.Exec.Done + *-------------------------------------- Cmd.Exec.ERRSYN lda #SYSMGR.ERRSYN sec - rts + jmp Cmd.Exec.Done *-------------------------------------- Cmd.Exec.STARTPROC lda (ZPPTR2) beq Cmd.Exec.ERRSYN - sec - ror bStartProc + lda #$ff + >STA.G CMD.bStartProc >LDYA ZPPTR2 >STYA ZPPTR1 - jmp Cmd.Exec.2 + + jsr Cmd.Exec.Split + jmp Cmd.Exec.EXT *-------------------------------------- Cmd.Exec.SET lda (ZPPTR2) bne Cmd.Exec.SETVAR @@ -446,7 +463,8 @@ Cmd.Exec.SET lda (ZPPTR2) bra .1 .8 clc -.9 rts +.9 jmp Cmd.Exec.Done + Cmd.Exec.SETVAR ldy #0 @@ -467,13 +485,13 @@ Cmd.Exec.SETVAR ldy #0 >LDYA ZPPTR2 String is VAR=VALUE... >SYSCALL PutEnv.YA - rts + jmp Cmd.Exec.Done .2 dey String is "VAR=", Remove endig '=' sta (ZPPTR2),y >LDYA ZPPTR2 String is "VAR"... >SYSCALL UnsetEnv.YA - rts + jmp Cmd.Exec.Done * Print requested VAR @@ -487,7 +505,7 @@ Cmd.Exec.SETVAR ldy #0 >SYSCALL PrintF.YA .8 clc -.9 rts +.9 jmp Cmd.Exec.Done .99 jmp Cmd.Exec.ERRSYN *-------------------------------------- @@ -511,7 +529,7 @@ Cmd.Exec.TIME clc >LDYAI UsrBuf256 >SYSCALL PrintF.YA - bcs Cmd.Exec.ECHO.RTS + bcs Cmd.Exec.ECHO.END bra Cmd.Exec.ECHO.CR *-------------------------------------- Cmd.Exec.ECHO lda (ZPPtr2) @@ -523,13 +541,13 @@ Cmd.Exec.ECHO lda (ZPPtr2) Cmd.Exec.ECHO.CR lda #13 >SYSCALL PutChar.A - bcs Cmd.Exec.ECHO.RTS + bcs Cmd.Exec.ECHO.END lda #10 >SYSCALL PutChar.A -Cmd.Exec.ECHO.RTS - rts +Cmd.Exec.ECHO.END + jmp Cmd.Exec.Done *-------------------------------------- Cmd.Exec.READ lda (ZPPtr2) beq .9 @@ -613,7 +631,7 @@ Cmd.Exec.READ lda (ZPPtr2) beq .9 clc -.99 rts +.99 jmp Cmd.Exec.Done *-------------------------------------- Cmd.Exec.SLEEP lda (ZPPtr2) beq .9 @@ -630,18 +648,18 @@ Cmd.Exec.SLEEP lda (ZPPtr2) bcs .9 - rts + jmp Cmd.Exec.Done .9 jmp Cmd.Exec.ERRSYN *-------------------------------------- Cmd.Exec.PAUSE lda #$FF >STA.G bPause clc - rts + jmp Cmd.Exec.Done *-------------------------------------- Cmd.Exec.EXIT lda #$FF >STA.G bExit clc - rts + jmp Cmd.Exec.Done *-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S.CMD diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index 23f87881..f3f302f6 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -163,7 +163,7 @@ CSH.Run jsr CSH.GetBuf >STA.G bCmdBufexec >LDA.G bEcho -* beq .80 + beq .80 >PUSHW ZPCMDBuf >LDYA L.MSG.ECHO diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 598491b0..7e6d5b70 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -556,7 +556,6 @@ EscChars >PSTR "DBAC" EscAscii .HS 04080A0B15 TIME .BS S.TIME STAT .BS S.STAT -bStartProc .BS 1 CSH.TSIZE .HS 0001020405 00,CHAR,INT,LONG,FLOAT.... CSH.ACCT .BS 1 CSH.ACC .BS 5 @@ -584,6 +583,7 @@ Sleep .BS 4 CMD.hCmdLine .BS 1 CMD.hFullpath .BS 1 CMD.hExtCmdLine .BS 1 +CMD.bStartProc .BS 1 CMD.VarName .BS VarLen.MAX+1 CMD.Stat .BS S.STAT diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 7f026a1b..0ffdb9b6 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -113,6 +113,95 @@ K.LoadDrv.YA jsr BIN.FindDRV jsr K.FreeMem.A pla rts +*/-------------------------------------- +* # FileSearch +* Search a file in the provided PATH list +* And return, if found, the full path to it. +* ## In: +* PUSHW = Ptr to Search Path (CSTR) %LIB%;/SYS/SLIB +* PUSHW = Ptr to File Name (CSTR) +* PUSHW = Ptr to DstBuf +* PUSHW = Ptr to DstStat +* ## Out: +* CC : success +* DstBuf = FilePath +* DstStat = S.STAT +* CS : not found +*\-------------------------------------- +K.FileSearch >PULLW .4+1 DstStat + >PULLW .2+1 DstBuf + jsr K.FileSearch.I + bcs .9 + + ldx #$ff + +.1 inx + lda K.Buf256,x +.2 sta $ffff,x Self Modified + bne .1 + + ldx #S.STAT-1 + +.3 lda K.S.STAT,x +.4 sta $ffff,x Self Modified + dex + bpl .3 +.9 rts + +K.FileSearch.I >PULLW .4+1 Filename + >PULLYA Get Search list + jsr K.ExpandStr.YA Expand it + bcs .99 + + stx .98+1 + >STYA .2+1 expanded search list ; + + stz .1+1 + +.1 ldy #$ff Self Modified Index in Search list string + + ldx #$0 + +.2 lda $ffff,y Self Modified, Search list string + beq .3 end of string, try it.... + iny + cmp #';' + beq .3 + sta K.Buf256,x + inx + bra .2 + +.3 txa + beq .98 String is empty....nothing to try + + sty .1+1 save current index + + ldy #$0 + +.4 lda $ffff,y Self Modified, Append Fiename... + sta K.Buf256,x + beq .5 + iny + inx + bra .4 + +.5 stz K.Buf256+1,x set string ending 0 + + >PUSHWI K.S.STAT + >PUSHWI K.Buf256 + >SYSCALL STAT -> BNK1 + bcs .1 Failed...retry next path... + + jsr .98 Discard Expanded hSrch list + + clc + rts + +.98 lda #$ff SELF MODIFIED : Discard Expanded hSrch list + jsr K.FreeMem.A + lda #MLI.ERR.FNOTFND + sec +.99 rts *-------------------------------------- BIN.FindLIB clc .HS B0 bcs @@ -123,14 +212,11 @@ BIN.FindDRV sec bcc .1 >LDYAI BIN.Find.ENV.DRV -.1 >SYSCALL GetEnv.YA get value for Search Path +.1 jsr K.GetEnv.YA get value for Search Path bcs .9 - - >PUSHYA Push Search path - - >LDYA BIN.CmdLine - - jsr K.FileSearch.I find libname in Search + >PUSHYA + >PUSHW BIN.CmdLine + jsr K.FileSearch.I find LIB/DRV in Search bcs .9 >LDYAI K.Buf256 diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index d0db9b33..987c86ec 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -31,7 +31,7 @@ K.GetDevByID.A cmp DevMgr.Count */-------------------------------------- * # GetDevByName.YA * ## IN: -* Y,A = Ptr to device name (PStr) +* Y,A = Ptr to device name (C-String) * ## OUT: * CC = OK, CS = ERROR * X = DEVID @@ -44,18 +44,12 @@ K.GetDevByName.YA ldx #0 -.1 lda (ZPPtr2) - cmp (ZPPtr1) - bne .3 +.1 ldy #$ff - tay - -.2 lda (ZPPtr1),y - cmp (ZPPtr2),y - bne .3 - - dey - bne .2 +.2 iny + lda (ZPPtr1),y + ora (ZPPtr2),y + bne .3 Both char are 0, match! lda ZPPtr2 sec @@ -66,7 +60,11 @@ K.GetDevByName.YA clc rts -.3 lda ZPPtr2 +.3 lda (ZPPtr1),y + cmp (ZPPtr2),y + beq .2 + + lda ZPPtr2 clc adc #S.DEV sta ZPPtr2 diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 1edb3a43..66ba20c9 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -484,7 +484,6 @@ ENV.SysVarsExit2 * ZPPtr3 -> PTR to Ending 0 *-------------------------------------- ENV.FindVarPtr1 jsr ENV.InitEnvPtr3 Store ENV - bcs .99 .1 lda (ZPPtr3) beq .9 end of ENV @@ -509,7 +508,7 @@ ENV.FindVarPtr1 jsr ENV.InitEnvPtr3 Store ENV bra .1 .9 sec -.99 rts + rts *-------------------------------------- * ENV.DiscardVarPtr3 * In: @@ -548,7 +547,7 @@ ENV.DiscardVarPtr3 ENV.InitEnvPtr3 ldy #S.PS.hENV lda (pPs),y jsr K.GetMemPtr.A - >STYA ZPPtr3 Store ENV + >STYA ZPPtr3 Store ENV rts *-------------------------------------- ENV.NextEnvPtr3 ldy #0 diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index fed830c7..e1fa4c22 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -4,95 +4,6 @@ LOMEM $A00 INC 1 AUTO 6 */-------------------------------------- -* # FileSearch -* Search a file in the provided PATH list -* And return, if found, the full path to it. -* ## In: -* PUSHW = Ptr to Search Path (CSTR) %LIB%;/SYS/SLIB -* PUSHW = Ptr to File Name (CSTR) -* PUSHW = Ptr to DstBuf -* PUSHW = Ptr to DstStat -* ## Out: -* CC : success -* DstBuf = FilePath -* DstStat = S.STAT -* CS : not found -*\-------------------------------------- -K.FileSearch >PULLW .4+1 DstStat - >PULLW .2+1 DstBuf - jsr K.FileSearch.I - bcs .9 - - ldx #$ff - -.1 inx - lda K.Buf256,x -.2 sta $ffff,x Self Modified - bne .1 - - ldx #S.STAT-1 - -.3 lda K.S.STAT,x -.4 sta $ffff,x Self Modified - dex - bpl .3 -.9 rts - -K.FileSearch.I >PULLW .4+1 - >PULLYA Get Search list - >SYSCALL ExpandStr.YA Expand it (SYSCALL to BNK2) - bcs .99 - - stx .98+1 - >STYA .2+1 expanded search list ; - - stz .1+1 - -.1 ldy #$ff Self Modified Index in Search list string - - ldx #$0 - -.2 lda $ffff,y Self Modified, Search list string - beq .3 end of string, try it.... - iny - cmp #';' - beq .3 - sta K.Buf256,x - inx - bra .2 - -.3 txa - beq .98 String is empty....nothing to try - - sty .1+1 save current index - - ldy #$0 - -.4 lda $ffff,y Self Modified, Append Fiename... - sta K.Buf256,x - beq .5 - iny - inx - bra .4 - -.5 stz K.Buf256+1,x set string ending 0 - - >PUSHWI K.S.STAT - >PUSHWI K.Buf256 - jsr K.STAT - bcs .1 Failed...retry next path... - - jsr .98 Discard Expanded hSrch list - - clc - rts - -.98 lda #$ff SELF MODIFIED : Discard Expanded hSrch list - jsr K.FreeMem.A - lda #MLI.ERR.FNOTFND - sec -.99 rts -*/-------------------------------------- * # GetFullPath.YA * ## In : * Y,A = Filename (C-String) diff --git a/SYS/KERNEL.S.INIT.txt b/SYS/KERNEL.S.INIT.txt index 1db192fd..93bea27e 100644 --- a/SYS/KERNEL.S.INIT.txt +++ b/SYS/KERNEL.S.INIT.txt @@ -434,14 +434,14 @@ DevMgr.NUL cld jmp (DevMgr.NUL.Code,x) .DA #S.DEV.S.WRITE+S.DEV.S.READ+S.DEV.S.OPENED .BS 6 - >PSTR "NUL" NAME + >CSTR "NUL" NAME .HS 00 NAME must Be 4 bytes long *-------------------------------------- DevMgr.SYS cld jmp (DevMgr.SYS.Code,x) .DA #S.DEV.S.WRITE+S.DEV.S.READ .BS 6 - >PSTR "SYS" NAME + >CSTR "SYS" NAME .HS 00 NAME must Be 4 bytes long *-------------------------------------- * Setup AuxLC $FFFE->Kernel IRQ Handler @@ -856,7 +856,7 @@ MSG.KCREAD >CSTR "Reading Kernel Config File..." MSG.KCREAD.OK >CSTR "OK\n" MSG.KCREAD.KO >CSTR "\nError While Reading Kernel Config File, Using Default.\n" *-------------------------------------- -DEV.SYS >PSTR "SYS" +DEV.SYS >CSTR "SYS" I.ENV.A2osX >CSTR "A2OSX" I.ENV.PATH >CSTR "PATH=${A2OSX}SBIN/;${A2OSX}BIN/" I.ENV.LIB >CSTR "LIB=${A2OSX}LIB/" diff --git a/SYS/KERNEL.S.JMP.txt b/SYS/KERNEL.S.JMP.txt index f6219725..cfab3445 100644 --- a/SYS/KERNEL.S.JMP.txt +++ b/SYS/KERNEL.S.JMP.txt @@ -62,7 +62,7 @@ K.SYSCALL.JMP .DA 0 $00 .DA K.FPrintF.YA .DA 0 - .DA K.FileSearch $60 + .DA 0 $60 .DA K.GetFullPath.YA .DA K.LoadFile .DA K.SaveFile @@ -98,7 +98,7 @@ K.SYSCALL.JMP .DA 0 $00 .DA K.LoadLib.YA .DA K.UnloadLib.A .DA K.LoadDrv.YA - .DA 0 + .DA K.FileSearch .DA K.ExecProcessNewEnv.YA $A0 .DA K.ExecProcess.YA diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index dbbc920a..ff758881 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -328,18 +328,29 @@ PS.Init jsr BIN.Load.YA Y,A=filename full path *-------------------------------------- PS.DupEnv.A jsr K.GetMemPtr.A >STYA ZPPtr1 + >LDYAI K.ENV.SIZE jsr K.GetMem.YA bcs .9 + >STYA ZPPtr2 - + ldy #0 .1 lda (ZPPtr1),y sta (ZPPtr2),y beq .8 - iny +.2 iny + bne .3 + inc ZPPtr1+1 + inc ZPPtr2+1 + +.3 lda (ZPPtr1),y + sta (ZPPtr2),y + bne .2 + + iny bne .1 inc ZPPtr1+1 inc ZPPtr2+1