From 906bf8322b9707c8c1d2474e08967f7fb12f4374 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 26 Sep 2016 18:02:14 +0200 Subject: [PATCH] Kernel version 0.8 : Shell : MLI API Calls Removed --- A2OSX.BOOT.po | Bin 143360 -> 143360 bytes A2OSX.SRC.po | Bin 819200 -> 819200 bytes INC/A2osX.I.txt | 92 ++++++++++++++++++------------------------- SBIN/SHELL.S.CMD.txt | 20 +++++++--- SBIN/SHELL.S.TXT.txt | 36 +++++------------ SBIN/SHELL.S.txt | 13 +++--- 6 files changed, 67 insertions(+), 94 deletions(-) diff --git a/A2OSX.BOOT.po b/A2OSX.BOOT.po index cc29f704211e64fa9aed6800d3704e670d85f7c9..51ec34ab6b089d183aa87ff186397afcf4061d03 100644 GIT binary patch delta 6943 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 delta 27211 zcmaKVc|erM`Txw~uFJmM?7iHe0_q9~2pWycvM9P7vUuiPaaAG$0laeIs(5QuQm3YA z65G_aN!lc}(KJV6&NgQ?X_F=~_tEBRW54b9+crmkpE=%T(e(F6#qU26H{7u$zv))sGILA0o>qO5FZQ@FF6m@7%?sqvGEql%OcpV^t| zHCIbO)-=)-Z1nqrL2s+C&DRv#E^AILD9W9EnmpcX;Qnn#4x=Yx=z5XLi*l z&R1o@VQqI!Vw3z;-8>xJU6t4(e@$r}-o4wKxIq4Lw+%nG+eJgeZ|t7rZYNEVwN0z~ zybXPki0ZPYtb(`~4(IQ2(M7{E_GBe4mK8lqhOgY?rb~yf-Q&($rdM1N>_HPd1hts` zGUB;p_`W^v)tAajj>|}C)K}5dza%;**iz>UMq7Pz0;J$_Qo5z6E>KoBc^3cE5S<=v zUAMfevm?4FGSJi4Ps~@SUausgx;L~m#8-{?Bx@2+7)8I>Yn*kQ8os25p8tBx!X-if zar(mL)Zm^yeDFo9scm61ar^M;8b0u%&E#)vA#T4YY2csr;uHKp+yVYM{OF5D+Q7dO z0?mtt(|-4W!M#A>v;~61)5bs7v^O>dh&e=#cmu7(*{;Z|FDt9?2Ab;yJAp42O7b%n zk<#x5{ZZe-CD9@b7ptkJ)4D{}LvZxUb-!DZ$1%V!l#R;SP(^)`oWCSO9CD;0K_G0x*n%tsS7vWcwVRTs3;u&%4C zIlMMPGMg@Js981yxj51v>DWfht>g$N&KwgBf@Sw&5)aL44Yjv5HqVI`;8y|33Jo84 z%R}3T?|v)GwUCS^db_tS6fGy_MZ@pD_4Jq$;`k+7uz}j@QtzinI=eff%UWC8+scV{ zf*x7k9f^9&N&3n7l8GpL0A+n)US@fadZ#izVE04p-04Ku;KNkRruh*ns5SnY9wF{W zDW3;EgN2Zcra5iiKwDdADHiS&<)b6oW5AG;Z+@H#Wtjd1^{-vw4Qz~bc-sQLdSZT3 zHT{%q+WfRc%=yg-V(akycQXcmOT}sx7S)uIjAzipKsZ|5TOS?>mrUA3%+IQJo>T2S zFWbp_VWgeFlE(HOT`M+43zzdxlKi6HWJ3eV_}v9fo>ons;Z2UgBE2+Bf3^{v$Lw!W zYe}gEtKeT9=~&a+7g^c4aj9=;R;YccFFIPgPb_CGzc4ur_9Rw5LCY*4Ny+5M^2pUu z%pNhPkRt=(jYLc3d<4qMi8GDk*$0!;!NO~MqlFWuOdv@asKZwdbt*DZ(7O@1Lj_X` zqT#Nto(+)|(Um=Y(XP(^fzIw#(Vp(EPGGO^=~}lo(oZz2>am7o*~pPuia<{2oIpDl z#Kz`^7LsQNT1P+cWT@HRGb!5Hy*}L4xgy#d9$4-5dP#|cu(F$|)mj-9?HdyN|1OnqOWd9Zj?(CcA&q;7mA*?NjYbA(rA=Sv=4-Zo({m1cl-%6q<%(TItn>~&|@Mg6x z49#8K7%k$P*;e1WjdF$y#f=j`_W`Mxrt;~u+}{4ZX{Jxb&@!TMFu!gjomAIARG7<didN~tIJWNM5AJ86)NlK&RQWRMegZXVW@(UQM7ce5Hy)* z5GcP*#Cegx9Gf*$V6xjXAYB)uv(ABN8|<&e_^+;ceg(13{uZFo2U61O^Z_+?_hY7r z5&H|V)n9;LPHfm_&TF}xRA8&oC95ye)ziU>^JswyI}MrA$S2K9=dnTj88<(MNHT-q z;nf?r_lMU(R zPvz4*da2+BL-u9t%Y2&Ux?GB_@e1^&U8!%4#2M!G9CSIGTR_KO)*(AHt^k%fB4tur zDTH6h<0>hSS*w+>aBk#m!o_im6h~)gTp8b~_eeSNT*aO%pzf?Sam9))x5}FCE=CKf zi>}4)Sa__6X3bi=76vpF`bpWX^8pgumHhSl`IhEun-e0oUtu+%N8<|1iTy#AKbzXp zACfzNac^rs-+;0nX6c@>ZiD9$mL4)@vPW;GW1YX&SCb??D$xterxM30cJOk8E#2~% zu8)k5V_rN@u!m+-_w*-6^!_$(Ohj9uelI54Q<4~L(8i~Mp8gw%W3V1F74!;fJ-=nC zKI%3-gTfilvMD|~J^i`!hT)%+6zuY%`i9C`*xx4)3&iz1J`Bf|#?xpm z^^9zWcLP(w`jSqecfz&;ueTry>RwjVO(n+Pql*0x5=T_2(6NlKph$aFq1KX_udyk0 z^rE!a0k*tBycKLkWD^;8mR(y%i#px})cTg}Iz}0$I{9tAf9#CfJF2w`Vtf}BGT!4- zzA0`f#`giXeV}G5evqCI#f(k)2nen}@x}NyYX+N(*r2eba9%C>l+E|kV#jCSI&Gix zX|o!_1MDt8^`EGxiN--&IY_)f*;ITB&oGp=JMYiXqRx>-Uya+6BJjZl%q0hP#U zfzdqV?}~)G*Y$EkKq$otP>N!{%7&W4Ya-G96Z5DeDWk+p+LyF@TY4kiT!NSSwzKft z7RR8LsMAJ_7Bp?ucy*XOs~fv}*NHuXWF*Ci(Cs=HOR(0Zp@hxIt{Y0S7Pxg~q>sRb zaGpJAg!M!w!DgkX05fZaow!%#u&MB5GU9Qd9O0VUJIcbZ?4SJ{O3-VT8 zF^xEL(c!s8)Y@Uq`<5BWk1dy)5v?FbtE&*7>QoxVUoW;>-Urc&VsmXCk6nCIm?TXA zD01i%*GbnBI^8obHy8R6+lH@im2Z#SK-DjAb9z1Xq+F&jE(gZAE7-qy(UmORJI3YK!Z@x7PAAFBl^H)_<^;ypUqa~o)ibqxS1T@*I0;C!yk z*NUUoB1<>bjmsW&gy|hQder;c13PqWEspQbtIs2#y>l&uh1mN6R~F#H{u3LiIf-tC zd*T1+@U-{F)577)-a0ur6VsxNKm{@$E~B{*1jbxp#73W`e{XDf)Mj$75-lAY{lUv7sD6kx?W=;XWx5TOYt0JIPY z%TepLj48kH4oxmD9zY{aeF;2f7$9hg+@v_zh>pF2B9O$boAsVbR zab~L|##S_41cR)901~2;xs^{;znG{fOr2F&E@K-IZ6T}@-`N|1%bwp!&DoxIeNQ;w zq9zj-viUpdcy7;;X^WvtzSv1C;o1@68|TEZEoG1Gq*nVflz`UxUKmNOSSA<{WcsD- z)19<7eAxxH9G6Rpk2~TwG(&M-fwAx-KDYSP5g+Tw{hglWP%K<8O6C%u$`H%yU{~#; zp86G|F&ev9L^cX54=#*|Y{j-x9RI+i+yvsR4B4>2Oq3_UoYm}^T{OG26IfCZa;}01 zES=0c#ma?JLfmUu+HUGfR4%2NYgxr^dJ*krJ-exGN{?cxT9R=!U!yp7CdNL@ ztJcqFK_1Ts2%B=RW;2woW6$me)2?TK-%Y2OHUQ1OQJRLEPWpq&S~0CF{iO(qGgvpo%y>ld2I6mnq9UBUtB}fVIrGa>H}N&esA9!2j!79Z%p>0XhvA9lu{4JewBA?6i;Jbg$)?%g%?t9o?{AIZZX#Sw|SPGw7(l6pF97lzuUrL%G zs>FCd0In0DQ=A>nn;hp!&boXT*SSPGMa>UD!@-MV`IT`8qiUGal9FtU>qBoKhy!V^WWpA6KmUgk+EGC)H_AOjRfnSu><> zie)4PC!vvF=BK5bLgVKlWyAeeeb$MAFz*4H;(G=(2)!pJ7!E_(ll3_W0cZHdVE9m9 z2Xr^FK0g}9*(U!5cKrdGH~B?XG+I7>7Y7}YkJIeg12iY`jO?lCC3fxrEu8VPAdYt! zH_N;Wad1k*!AV;G4K1yKW}>~KFD7yQQA)^beCA*0Jm50D!N1RPK5&`d#CO(PEFS`S zW%}E(W)`T_}S;f#M;@mkC#+h*z|L0=<&usi-@x`pN zI!R)(p9;Ssr;=Fe@uLwg#RQTaU}u+VS>^^R+2QbE>Q0{{>*UYHuo`#`mfmM@8X74( z`WAJJDJPD3iv0QiAM%4EDi=HJ9Gm}h>RI(SthwWVq$N{0 zQl-haglK<9o7`m$oA@6n^|g^y16=aL^*wdS-$s%W zFthN_c*_yg8bgJ*(qR<#_!zf|9$_s%r*Nc?rAK-Y*$|O~H1jAoKQSjNC%;9VH8gOI zHHo6h!=k66^15x2{tkHU^}gVLNdZzuDnE9>CRiTm?`Y~-5h2NGdOTs}N|KSTI*N-? zWT?I}WnVTMx+$04U_6KGY5vLld+FN~S;<+N4dZ0aSz1PW*hc=Rm;DrfELTfilF~;` zmi^Y$KoN~NiD*Oy9du@j-Teal&|-yd5^i&=ZPd;zf>fFvrP6}RbCA;Qa^ps{DB9i= zl}r;Y4$dsED&dD6oQ;va`ZjOtYQV}GFAYZxYvOjim^}u;w`X7gjEPy<&XFFLM^oWtA3aAx`6uDPCC#H6GOk<(U)a~{3@L`9 z3ii|YXkq$PAvfFoetEu{P{rPSkB-l)<~B}Px{fg|(Fl(M5c4!CmL)Z;@O@g0^VaMu zH75><)8#I#%@7)2cw~`mz^(ZVWEWtcLK`?P@Sqa0%+mSEb}?p8w-xmnbRqR%yABL= zhnK?yYzp_UK@glh|2|A`m3vU^XMcI0PDrT7iDmXj)NZOESpoGuW-4(uuzNNbY>Rp7 zf!LDFb0tBkNIsAR2~US*UW^*#AzVO>J*cSRyL)}4e;^9hCY~nt;0M&5)Er|3dkcH# z18Pfbm7R=Rz`pqaOWnq9e~UWDfV7bOswB2{)_T9mnzT?~8RA*Qdha*6mRJ_Y_;QJC zCT*!s>*Bu70ZiSp7_pap3$Zq2EQqO7rih?5>oWG)htxBfrz=P~bs;Z78Q6831|t1Y z-uM8wY*nm%e3(^!M90DRu2bJ3zQ$D&`-;(ACT#;PGBTKzVlW{bwRCsJYB`v6e%2D4 zAUt0XGMu=iVo6^EisHpc!#PV)YhEj>7j?7TKheTmoVDUrfv^XOxmPXn)hEMq6K|u# zX@>L@pU|^8X`iK#d-5_YNWZa0YV$pI_L$;oRoze^$+28!ZHez-u&FogYfCmabJBux_7_tVl zRb}j_IpyshRb@lLhG_AMo(`RNmGrd$b0N=ty-oT_$4Im)Bo|q>qy1c6X z6d>l6u~yBHJG)%f$A(@3uz9M&tyH*G09vZKqf6L@u;YYQsFAxff^YX|21f-9vkP3f zu+X?~Y-HQhV3!Hwp`3VTu{YkexTZO0W9NelE$01|I}OS3T~N7BRjxtW3{OUIHXG|X zZGjkV4T?5ptR>H-rQdCBYg`1E8!|T(!SiS<98v?VeLZV?2SkLYa6%E>h4Y2G&^2PB zCBsA$zP$-i6gLZFV$OxOS;hj{pa`$-=7$}Pn_}|(VGk)Y522Z+&>Wr@(E_d0E?t-A zg;Y45&5IP_izST(OIUWYA>Xo8{&Xy(?A>Go!nYlNc| z2~BJps!zK@O;|0-gpU--1>60r!+i)KuInBkM)*pJ)}fXSKCcz@`=l_!SL5x$1g9BJ zA+TP~O7>N>2QUrMKoRouwxBtO)=PM7h9EL$TzJ8D7%~OPcdY% z$G4d6WAfqNWbX_nII3imT3>7(jqq@i#aouj%ZKhF7fU9O&%n4tGWSd&9^R zA`@?5ccdChCk>)m%Vy3|+?|&m9o6p^V%egb=2_dsqPW(YhorfwZIAVB-a(JRkwsE> z#!_qe;%K|n;E;5)JH7;ww9GwH4j?XaDNBfDFDF9?+djz%?)_|Yn!%NQBgf^Q$&3T% zONry4;L|GeAy9=8qz%hyP(nzwn_@JWzoWSBux!1M9ZokCO!%%uI8QAeQMflt-0bhM z#&koL;}$jMTB3blNlOiJ+$w0eDDAdU)WOffrv+z)qoZb(Sbm^Ss`-a%pm#8uVX&I~ zP4&e6Bl!)DNZiNxw`aNt@z73yA$Lwjje` z8@!uKXDp)%x}ktre-;l5_~*6&_VZCNqzM%e+dc8HR^P%9uY7Mjko#Q<+*w%<1{Z6}G-T5U z*qTg34*eC|ooSdzA7m#o4U_0YEZCgrp%1hFWE$Lqk5EkGVG#hYswQc_raTgRK>wZj zDCOOY-yts#J&=r3baiuJv6w^|SfH2QZ1)FLzlOP*YzU>w2r5; zr9KOcjhzEGs-Mr{XUFOu_0#&iEN$ryv^4CND7F{aY@5OAdXbYj7l}|keVe?E^-EN4 zobz{VtQ^xPOA01;rk%16%gcNy$gw2m-(z?I{QUzhJ!Usp zoX9Ul=3?Eb1ktH*hO_y32KUMiX#~Oi>h)vZ=B@4BEAmzA0yw(bBBVFixg5YlIuPf9 zm82KJ-*{j(v8@6yG71RijWW>2b+YI33`L1B%eduUvWERL&rl2vou6+g%j#B1l>XL* z+(9MNW$OZgYBI5ht<5)-PP*+vE3b|f`AOCQdokbONn9s8 zEnd(5mT#CaVS^g)Mpbd{GJU)a;AsR`IED6W*z5v>jb6(Z6&T9sb!H$7S6~q-~ErkZBbBiij6le=Iwls@ws)%zd8!R+9 zrf*ZFye?-#B#&<8^)c(&L#m9&#pgnP18v?GktB^m&vtgY(BN*|q2shI^7`Qo_XY#a z5~q@6?No)x%x&>|+kJIG)p#{A!?n(bIBqwLW}ZEKtjLg~=`IwU2v5`*)>4M$c`T2cKJmF08Hn1&d3dk~ zo2z8g8qS!F()&V;I9QVO8XnJ6E)mEo$*9%iAbOUjhJ&V>1Rm6rcGfJ|Su=%KC^dPO z4lDrhVh*&YBa$b5)zbR$_+kk*rljP$kqYeSL31Yi;&OwDE&t3=kYhovuQXpRb7F@X zb&AYyWYt#~@^a=~Kq10?%Fb~IS^81xoPp@xXk(RoJxE5&1yvE`6IE-8$i4Ek5q9=n zi?h@o;;0wcx(MlwHk929MTe=$;vgv|r;J#auya=!GJ{LcUkB^5QLRd%E;%2|e(5MI zsm<6q$Jk7Z`EqsWx&qwx?Dpk`6U!4)?DWhqHJm%VDItYlZTQ=XYZ40Se9sgT^folL zdwCptH~x+4KX^=77IEDWE8;&$W;u$m3x)Rc8vKK&2u80>$SQ@~LcsJ~VBRjVgV#nu z`IgM?yEY-y#M5;h)$E;X6YPWFwNY3i=3%Qj56S~59x&i2RIv%Qwzc?)9h^9-NKkB_ zaXyr1CR)I%92c4k-VhU)>%3X)iq{Rf85b-0D<^e6x%w=6eFCz-u1hFR^2-HAPOqz; zEx2@yW6%K)2X_>WPLLrQBGD=eW`w(gSP_XDIHB*EFS zytm6C)F#h56i3;WlIx3Bv(IlxC>-oOzm|3tYH>A+gt9e!F}mb@#ho8X(pr7WAnV;g za`kW>F)E=X)D?;Jk~DZW;-s8t2rz>tkVKOE$&qkV_X=q5X$>T8VDvDxbwK3#_((C? zz!j^`H+m8gN!qB0sKE(v6Nt#UhMgTu$S%HibeE3nfX8)wdHGNPr{7J;_kbU7<_#== zbHYV~gQKva;I+-b=Mwwpn$eh(NRM(cg5y3)IA{1(8RbKeWmZ=I$QBR7y697=aZMTPm#xinfp=4e4|>~ z19D|uhuD;8f^+FGuPOZVF(Jyh>HOBT@5G4G4$DHMf@lnUS$miV(G$NbT18~yh-A=N zH?!NL2{WzV)0+yck8}_4Ogh^wLU6o@LW^t=U2qVI7V}w4(r+JKi4-3tEdAp#vfnC*iEF|f;obMdtFHyyEKNn?@c5p(%jVA#v zdVsCk3NicD1${oKMhue%xwNIxy6`~9>L@=|>?e+g(FKq5OdW!Qb0F&Hemulr9#La2 zhiv{Dt=k`!d^9>A&w5H9Fh4;E^$C^v*!dKsJ|2%oGM>0#piioSJ|zd_`3-B?mf&86 z=(1SP8j|*m-h|Xa$!Gb)`UyoO8J8-g=6m(6!K(SWl3cG@qBuWuK~mS zx(o`WpXHbvqljj4hfzPVzsYr4$52AX;9Gi^kmk3!`L|KVlZCZ8jcD(poa-ud`W_$B z`=}|e2B9@ye@AEMq>WJVA1JQ;5IAXwE|*VLF}4bb974=u7lN1Y&q|%>0l?gm2%z?H ztgF;d1$|(XW7`u<$-3%+W*zTjk-Z7y2I18e45_@jW{*6ky0S)2u`m;M^7#=N)Xwaf z7eroBLg^xe9gXn&l1#XHg&2jrts(DfI2=eCJif8*4w8|TkF)$pQX%u+pqbf~_OYhY z0$#wAQPfQ=BOJgavxq8-n|pt7L92w=$1&f&1X~7tzf!>}e9r{oJ1o)Q1J?KI5;Tzt zKQO02p_$2^Rr8~avm36e)pKu|FeL)YowSV@;St8|zEO*eWgOxfF?Fsa zg0J_ajik6y_ZPDIg9*8wd1zT4hm45m6HAb<5NCI16T9JHg2UF#C%t7<8{=Bpod*+& z(ifnv5C~-P0V^-W-bRy#c6xX{E#yvLQUZ@J`+7ZfXU<&Y3oZ;GwJJ*7izU+>JCrcb zs(3`tA}rrVJRt^4+>Lu12b*c85nSe4$b5`CQ5k31ljYx_*@Vyy z-ZiQ&80l_Z-h@C@5DgAMv1AYk`2F|@WC;X9gVRrpVk$|8s}CN`k+SsrxUh_XNID#Q zyta~KZxyk>LQb0c#vFb(BW;6zeieryQm~PI`GO^{A_*p&KFoBOY_VYu^ufCUn@uR2 z@*%hf(#yhf>D8+AI=-F4@hS~eyvev~&CPYVIYTY{X z29Ujua^l>~Chs>n+%WPkC>QsDwy?`lzHlqbIb*}#+6K*y1VbTyrNjs$kGOX5jsIIX zClU4@1Uw24xUi-K_rM>*&rehKuxIz1yotywdk^Q}qdqaFu`J|=aq7w?f zMipX*IVc%@6y-1qKSQIXlk`yHPO3 z{c<`TCouDk+!Ep;8h_8RTTG^O{&WEpwTA2@A&!;oKSxbh&&>Vz==mFc5tnFR0$rYI z)4v9$$aNH=0`uYz;Z(ab9(iVE!(xsU0`W~0UtlcdVEB&$sd_gSPGwWp4#(Gl;2o=GIFl61a< zSf>+nhE&D&OsHa9>KwfU={Bf4F;1obZFajbPn>8O2UM3Iy$D1=-LIS{mK0MzUvQBzyTt_Qj24 zzZwZ*bn1rj0kusYWD|SGxU2}w3HHSqaF{pE@9iCX+>~u9V1agta8u4w;26fErSLY*M1dC8RQxI=&>r^pdhAa~$L?9!J^ zF3&Mh*vd;Q_&;*4D*VLxV|L&rlOypbk`&kx_r7HE4BjR1rH9@xTbo)5RTu~MDR4D$ z{#>@MZaD1|!UN*&nFwYSRhE&wUlMlodXse!Z)4yYnyNCAb3#W4`T7e5@)4LSA8|dP zm&%kmxmHzpk>f$V0100_^e3mNx{Np;(o47tN{*u%_uL=W!8{LXZbS~Gx{|ma(F

5D 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 3FD : /RAM Driver * Aux $3FE -> 3FF : IRQ Vector *-------------------------------------- -UsrBuf256 .EQ $0200 Main -*-------------------------------------- -* $12 bytes min !!!! -*-------------------------------------- -MLICALL.PARAMS .EQ $0300 +UsrBuf256 .EQ $0200 Main *-------------------------------------- *D.STACK.BASE .EQ $0300 $03EF... D.STACK.TOP .EQ $03F0 ...Down to $0300 *-------------------------------------- -*** IRQ Handler *** +*** $3F0-$3FF IRQ Handler.... *** *-------------------------------------- * Main/Aux $400 -> $7FF : Console Screen * Main/Aux $800 -> $BFF : System Screen *-------------------------------------- -KrnBuf256 .EQ $0C00 +KrnBuf256 .EQ $0C00 Main +*-------------------------------------- +MLICALL.PARAMS .EQ $0D00 Main, $12 bytes min !!!! +KrnSTAT .EQ $0D12 *-------------------------------------- *** Z80 Reserved $0F00-10FF*** *-------------------------------------- Z80STACK .EQ $0FFF (0FFFFh) Down to $0F00 -Z80JMP .EQ $1000 +Z80JMP .EQ $1000 (00000h) Up To $10FF *-------------------------------------- EvtMgr.Table .EQ $1100 K.EVT.MAX*S.EVT.SIZE=32*8=256b *-------------------------------------- @@ -176,17 +175,38 @@ SYS.SetEnv .EQ $3A SYS.GetEnvYA .EQ $3C SYS.UnsetEnvYA .EQ $3E *-------------------------------------- -SYS.MLICreateFile .EQ $40 -SYS.MLIGetFileInfoYA .EQ $50 -SYS.MLIGetPrefixYA .EQ $5A +*-------------------------------------- -SYS.MLIOpenYA .EQ $5E +*-------------------------------------- +SYS.FOPEN .EQ $60 +SYS.FOPEN.R .EQ $01 Open For Read +SYS.FOPEN.W .EQ $02 Open For Write +SYS.FOPEN.A .EQ $04 Append +SYS.FOPEN.T .EQ $08 Open/Append in Text mode +SYS.FOPEN.X .EQ $80 Create if not exists -SYS.MLINewLine .EQ $60 -SYS.MLIRead .EQ $62 -SYS.MLIWrite .EQ $64 -SYS.MLICloseA .EQ $66 +SYS.FCLOSEA .EQ $62 +SYS.FREAD .EQ $64 +SYS.FWRITE .EQ $66 + +SYS.FFLUSH .EQ $68 +SYS.FSEEK .EQ $6A +SYS.FSEEK.SET .EQ $00 +SYS.FSEEK.CUR .EQ $01 +SYS.FSEEK.END .EQ $02 +SYS.FTELL .EQ $6C +SYS.FEOF .EQ $6E + +SYS.REMOVE .EQ $70 +SYS.RENAME .EQ $72 +SYS.STAT .EQ $74 + + +SYS.OPENDIRYA .EQ $78 +SYS.READDIRA .EQ $7A +SYS.CLOSEDIRA .EQ $7C +SYS.MKDIRYA .EQ $7E *-------------------------------------- SYS.GetDevByIDA .EQ $80 @@ -206,20 +226,13 @@ SYS.GetPSByIDA .EQ $98 SYS.Sleep .EQ $9C *-------------------------------------- -SYS.CheckPrefixYA .EQ $A0 + SYS.FileSearch .EQ $A2 SYS.GetFullPathYA .EQ $A4 SYS.LoadFile .EQ $A8 SYS.SaveFile .EQ $AA *-------------------------------------- -SYS.AddNetCfg .EQ $B0 -SYS.SetNetCfg .EQ $B2 -SYS.GetNetCfgA .EQ $B4 -SYS.ClrNetCfgA .EQ $B6 -*-------------------------------------- -*SYS.ScreenSelectA .EQ $C0 -*-------------------------------------- SYS.COutA .EQ $D0 SYS.PStrOutYA .EQ $D4 @@ -234,35 +247,6 @@ SYS.DecOutYA .EQ $DE *SYS.FPUTC .EQ $F4 *SYS.FPUTS .EQ $F6 *-------------------------------------- -SYS.FOPEN .EQ $E0 -SYS.FOPEN.R .EQ $01 Open For Read -SYS.FOPEN.W .EQ $02 Open For Write -SYS.FOPEN.A .EQ $04 Append -SYS.FOPEN.T .EQ $08 Open/Append in Text mode -SYS.FOPEN.X .EQ $80 Create if not exists - -SYS.FCLOSEA .EQ $E2 -SYS.FREAD .EQ $E4 -SYS.FWRITE .EQ $E6 - -SYS.FFLUSH .EQ $E8 -SYS.FSEEK .EQ $EA -SYS.FSEEK.SET .EQ $00 -SYS.FSEEK.CUR .EQ $01 -SYS.FSEEK.END .EQ $02 -SYS.FTELL .EQ $EC -SYS.FEOF .EQ $EE - -SYS.REMOVE .EQ $F0 -SYS.RENAME .EQ $F2 -SYS.STAT .EQ $F4 -SYS.FSTAT .EQ $F6 - -SYS.OPENDIRYA .EQ $F8 -SYS.READDIRA .EQ $FA -SYS.CLOSEDIRA .EQ $FC -SYS.MKDIRYA .EQ $FE -*-------------------------------------- * ProDOS ERROR CODES : $00->$5F * Lib ERROR CODES : $80->$BF * Kernel ERROR CODES : $C0->$FF @@ -282,7 +266,7 @@ TSKMGR.ERRNSP .EQ $DD No Such Process Error *-------------------------------------- SYSMGR.ERRSYN .EQ $CF Syntax Error SYSMGR.ERRENVF .EQ $CE Env is Full -SYSMGR.ERRIDIR .EQ $CD Invalid Directory + SYSMGR.ERRFTB .EQ $CC File Too Big Error SYSMGR.ERRFNF .EQ $CB File Not Found Error *-------------------------------------- diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 51002436..fbd24adb 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -116,13 +116,12 @@ Cmd.Exec.EXT ldy #1 .3 stz UsrBuf256 reset UsrBuf256 for final CMDLINE - >LDYA L.CMD - >SYSCALL SYS.MLIGetFileInfoYA + >PUSHW L.STAT + >PUSHW L.CMD + >SYSCALL SYS.STAT bcs .99 - >STYA ZPPtr2 - ldy #1 Get File Type - lda (ZPPtr2),y + lda STAT+S.STAT.TYPE cmp #$04 TXT File ? beq Cmd.Exec.EXT.TXT cmp #$06 BIN File ? @@ -235,6 +234,7 @@ Cmd.Exec.CD1 lda ARGS+1 .3 >PUSHW L.ARGS Append ARG to buffer >PUSHWI UsrBuf256 >SYSCALL SYS.PStrCat + bcs .9 ldx UsrBuf256 lda #'/' Ending with '/'? @@ -247,9 +247,17 @@ Cmd.Exec.CD1 lda ARGS+1 Cmd.Exec.CD.Change >STYA ZPPtr1 - >SYSCALL SYS.CheckPrefixYA + + >PUSHW L.STAT + >PUSHW ZPPtr1 + >SYSCALL SYS.STAT bcs .9 + lda STAT+S.STAT.TYPE + sec + eor #$0F Directory ? + bne .9 + >LDYA ZPPtr1 >SYSCALL SYS.NewPStrYA bcs .9 diff --git a/SBIN/SHELL.S.TXT.txt b/SBIN/SHELL.S.TXT.txt index 00dd7201..4b20024f 100644 --- a/SBIN/SHELL.S.TXT.txt +++ b/SBIN/SHELL.S.TXT.txt @@ -5,34 +5,23 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -TXT.OpenFileYA >SYSCALL SYS.MLIOpenYA +TXT.OpenFileYA >PUSHWI 0 Aux type + >PUSHBI 4 S.FILEINFO.TYPE.TXT + >PUSHBI SYS.FOPEN.R+SYS.FOPEN.T + + >SYSCALL SYS.FOPEN bcs .9 ldy #hInputFile sta (pData),y - pha - txa - ldy #hInputBuffer - sta (pData),y - - >PUSHBI $0D Line separator for TXT file - >PUSHBI $FF - pla - >PUSHA - >SYSCALL SYS.MLINewLine - bcc .9 - pha - jsr TXT.CloseFile - pla - sec .9 rts *-------------------------------------- -TXT.ReadFile >PUSHWI 127 - >PUSHWI UsrBuf256+1 +TXT.ReadFile >PUSHWI UsrBuf256+1 + >PUSHWI 127 ldy #hInputFile lda (pData),y >PUSHA - >SYSCALL SYS.MLIRead + >SYSCALL SYS.FREAD bcs .9 tya @@ -79,18 +68,13 @@ TXT.CloseFile ldy #hInputArgs lda (pData),y beq .9 - >SYSCALL SYS.MLICloseA - ldy #hInputBuffer - lda (pData),y - >SYSCALL SYS.FreeMemA - + >SYSCALL SYS.FCLOSEA + .9 lda #0 ldy #hInputArgs sta (pData),y ldy #hInputFile sta (pData),y - ldy #hInputBuffer - sta (pData),y rts *-------------------------------------- MAN diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 95d466d5..b7406b34 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -44,6 +44,7 @@ L.ENV.PATH .DA ENV.PATH L.CMD .DA CMD L.ARGS .DA ARGS L.TIME .DA TIME +L.STAT .DA STAT L.FMT.DATE .DA FMT.DATE L.FMT.TIME .DA FMT.TIME L.CMDS .DA CMDS @@ -315,13 +316,9 @@ CS.QUIT jsr HIS.Quit ldy #hInputFile lda (pData),y beq .1 - >SYSCALL SYS.MLICloseA + >SYSCALL SYS.FCLOSEA -.1 ldy #hInputBuffer - lda (pData),y - beq .8 - >SYSCALL SYS.FreeMemA - +.1 .8 clc rts *-------------------------------------- @@ -444,7 +441,8 @@ EscChars >PSTRING "DBAC" EscAscii .HS 04080A0B15 CMD .BS 256 ARGS .BS 256 -TIME .BS S.Time +TIME .BS S.TIME +STAT .BS S.STAT hNEWPATH .BS 1 hCmdLine .BS 1 Cmd.Exec.Mode .BS 1 @@ -463,7 +461,6 @@ CmdHistory.IDX .BS 1 CmdHistory.END .BS 1 hInputFile .BS 1 hInputArgs .BS 1 -hInputBuffer .BS 1 DS.END .ED *--------------------------------------