From 384aa458b04ba0cff258fc025ab248dd90c07b99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Sun, 21 Oct 2018 22:54:07 +0200 Subject: [PATCH] Kernel 0.9.2 --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/ARP.S.txt | 4 +- BIN/CAT.S.txt | 2 +- BIN/CHTYP.S.txt | 2 +- BIN/DNSINFO.S.txt | 2 +- BIN/FORMAT.S.txt | 2 +- BIN/LS.S.txt | 2 +- BIN/MD.S.txt | 2 +- BIN/MD5.S.txt | 2 +- BIN/NFSMOUNT.S.txt | 2 +- BIN/NSCUTIL.S.txt | 2 +- BIN/PING.S.txt | 6 +- BIN/RPCDUMP.S.txt | 2 +- BIN/TELNET.S.txt | 6 +- BIN/X.CPMVRM.S.txt | 2 +- BMP2PIX.S.txt | 4 +- DRV/LANCEGS.DRV.S.txt | 2 +- DRV/UTHERNET.DRV.S.txt | 2 +- DRV/X.SSC.DRV.S.txt | 2 +- DRV/X.U2.DRV.S.txt | 2 +- FNT2FON.S.txt | 4 +- INC/A2osX.I.txt | 32 +-- LIB/LIBPAK.S.txt | 2 +- LIB/LIBTCPIP.S.SKT.txt | 2 +- SBIN/GETTY.S.txt | 2 +- SBIN/HTTPD.S.txt | 4 +- SBIN/INSDRV.S.txt | 2 +- SBIN/NFSD.S.txt | 4 +- SBIN/SHELL.S.CMD.txt | 515 +++++++++++++++++---------------------- SBIN/SHELL.S.txt | 17 +- SYS/KERNEL.S.BIN.txt | 4 +- SYS/KERNEL.S.CORE.txt | 2 +- SYS/KERNEL.S.DEV.txt | 2 +- SYS/KERNEL.S.ENV.txt | 2 +- SYS/KERNEL.S.FIO.txt | 2 +- SYS/KERNEL.S.MEM.txt | 2 +- SYS/KERNEL.S.PS.txt | 2 +- SYS/KERNEL.S.STDIO.txt | 10 +- SYS/KERNEL.S.STDLIB.txt | 2 +- X.ERRORS.S.txt | 16 +- 41 files changed, 305 insertions(+), 373 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index b4a245e6a3c44b8ddd56ba6b11a90806a7807cc5..f66d711cda1a7501490fb99d4575b7881b4eca93 100644 GIT binary patch delta 11495 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 delta 11491 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 delta 11161 zcmaJnXJA{^)#pim_OqXySl0AN?AY1k#Zm@I%2I4OQScC!vIi)(k~lcBvE{_!D^VU9 zq!2=gX&!=5YlF zt}O)lbtw%MZw&8td8fUJtMSWewe$~Cx^r8fUOz>j0_s~?=syzlp9p%^pR>?!o6vO# z{Z1D8U4*XstE9~_hF@^H*ZwVw@sC`L_r$snj!C|;!?$`*mb>9=(_mT67zdhn?J{Q7SjFw$f@khJvfAxEkh6(bi!!8TAHSwp>!T$c<{yK1%pv&`}wqCs{ zzP-CMUI!DL((q;LYAoZW;e+eE3#VpaIDj4+(Azg{>gi4(Y=u9w8%k`C^>laX;aGA@ z9aNnw4ZpgsVo`Hue?@Q4;I_El)|=Fudj}I;2ouh1Hh1^rZPl!ih8xz8vvf(r?dvNn z32Aui`fAING<;xvedSddv|yqOdC>{G4rUybhM!+QZR*j?HlrHo>5s>{cIxeY@kAXc zw@b`ZEANtwhIK_Q8RdPD{pmfv;mx*yz9!t*+O&9Z6O=y+*?15fig%Kk(*4N+P#)(> z_IwMb>!Cz4-k*r|=#9PGw#5=%xcvm*p75kGxlyXMKLz~O_Js%NhI*bh-g``TrOKbl zq2D)1bf4w)i@(hX?16F5LF2YAEz}m(8k?>WSD&*t4bM^hiTzKf(PbhtM!a{}|U* z^gtH$=7RhJewY3fG@sFf`ozHE`8jBQ{9qwT@I^7`7m!ZIhCulxuvp~!mC%5xTT+Ai zYr(!BN`C|C&b}cG`?IH{Kt&g4`2fT0i*({k9GiB*^)i?dFXy~h_&MsU0nWe;jb4|FVP0QVcDFJrjgYPY|cRl@I)1=k;p*zrPV@mna@Pz=0(G){EL z?y2&hNI`$5Ls1=QhQFLePS4w5ym!3Nb|1HOMk!TfbXg)xKxEaeZNp<9%^jCRtSc(>S@p=1F<~#Z^nbLyoIqD4M#$o(rbX{?IW#;Pb zVcUt=wm4Mw80!yPy)k(krpc0ogsgY=bV5n5q%Ab)E>>NRe=R(^6|08P;wt_8s=Edx z^A<&dQ7zno_X)-%#j%S+`dp|OG}@mo^h(=}lS?H>YKO${`4A`I+?gTJ6o>{73}7r6 zdxezNmPYi24f{5Bc7pSNG9b}VYw!RuseF-Ad>=Tk#G_g=7LRtLT;;oP%`7(9if6ZA zC>St4db+T*LZ`w2LtS4_AE@4{jr0uwt*rK3e-UTQ>n1LP{lI9!IebNPE92hgQSNwGQebPzE(zJNw zgw&84g5r-X({EzZer#b%lRv@AqU2Kx+K2R{e8!iR&n+zO)`FFc(H0*{B0E&Z?8_@@ zRLN>qgR;e%2D{ao;gX=iS%3>db18iw+20dSfFfI2HKi0<)5)DNP>ZZ-JbnKRAB%A{i{K??R#PfFTV4xFxs{3K zbY#S$x)G1^f!%2}6-VC~v0Xy81t7bT-dK;7%0AAT4^%I1Q+d1qDk`i-+xP@@R_tNHI{}YZ>qs1= zy%&^vA;!c!;v;WLQ%_q;EFVi_9JP`u42G@KHk-weRmXOTVpyoXLysGF@3Z}S@CN|oyI0`1$o_OE|D(4)oh%&(&|ht$=?g2Ccv>Ye=&sh zWGH`$X$73iMy+B-cU_dfMj8UAsGCg|P)*=&ML?r*m(^ZS*#>E&?@FtCma9D*1{CagA+Gxf|7|8i>MEAOv?C;*`lbEF?5li`$56t zlJ2WA4I3Yds?#O&vSL32V`uPwNMuEICZ~m!hkaHqAl_KJCZ&DUJ8@WCk!NF&8`mJB zDrFaBz`rM)O+D2xaowhHs{#_a_ zv)D;_>P12g4N%f5VcAFWyV^4H^GiV*@U|PT-(d9=V?hs-F2=_9=yqv>)*;k_tVT#J zQR;G$!t%3F7{9`3-7bxDuSCEZt43!gW7l@6vTk)IJFy0x3R-0iPu22T#M9Opk8PJ` zwXWy%QJ=02Tz%LvXPK2RLD(smjy_`#=A-V!X1#kruR~qcX_}^kJ7zTOkX*$Z`7sq; zM%xa_+Zaa*u1(|;qcW&-a}JN9=vKF&9>}pU>~|xgXDh;lA3kFBDD@Kxfkli&ck&=3 z71Hs3wqS2X0|T_Tv&gvPR;$BkyxID*)GRkP9HuDxBE2KNt#^A|$6ShI2^Qq_$$BUD zA@M{KW_a>}JGXVMYtUo;n|=HrKmJ29u4@3r%R83p3f6CgWBmj1Yez}usbmd;(_yPJ z>q2Z1s<9v(H_q_hYOSsvPeo!3oHe4x%@%Z^)Z*UJV^$ZAg5DYVidCA3S=Tcmr|1my zZyxaD|5kufhp;_E;HqZ@WTlLQ15hUcm3b@?PUg(co?_g6hgEY-<)1UAF-=mvd(arU z#af%1PUNFzp&gDi_rx|2fO94;i(W|tYm6ogl$AoPN>FE0&4V3D1IP_{e2I^`9##VT z@w0pm!kaZKLvYMBshZ}2ly@Fc6$2%7uEy9vym1>AbMu7){TN$Fwgs8PrYwZ?)`5QV z0gW3M@dC+JrlpBtO#^umqA6eCdYXMM;$ZnZHIsa14o$nNxpy=6*m^9XcV`+@BudEV zA#&yU)VY~Q(aN;5Zz zX9;sA-hix%9$*2r0lXnpWy8^IMTxyOg^&rD$5>SI?Mw9Pv-M3hBbccV#AE%PTZr#c zOlo{Mh<)H(OlBO~w~ruGUHWVU?!^H^AI=~2fxdWW_onVRQb1~)2q>8CC;-_o)v=z| zhvvm(2ktQPgg?=k2A;T}4lxSrA zlAwf<@nwWoU%_v|=d1W#_8OH%oXzl*J)r*X;r;^YU`bO1$2Lt^bvB*8?R_~$3HZi4 z<&J_&DC#^Fk*7_=DP|^=U|MO7Zv$H_#}PLQzw2avS0s0##r<)^f2hzWZ8EwJ6;4}P zvpEC552t-JG@Yp@`*&i1(6K_T?#_lD^Ui7!cKblxN~qX=`e8tPCz?wl!LXQ zI+RHP@=jbIe+A|@3W!@o#?;T#_ebTCXyKyGv+1hN-q@Xh(l7E66^rE+S7v$34X+^Y zf~&!iI`d-f&e1!Y(WyGFGzAwgUjp7e#I;A-%jS9O)qR;TUbSDGLp5?@Al^^C?&<&r za*(e^)*U!W9({$sbjC^7WKTLM^m854Pmz2G*{!{vje$~!O(U3Z2F@Eqpp0nEAuXy! zS4E-X2x=Z{K1wVZ>(YjEI3E~$9;mqSEWotk{Bk}pCO5c1J&MrcRmVW#N^Zh$bo%Ka zr%BeE(QNF#*V9y+=1|4AFpKJ-9E0@8;lh#@me;=`^2V)sdBgNUjs%I)+oj#2MG z^_&q(!F!w=<*Upn?X`CbD0Aq94--i}6IVg`8hIKjP3%>YE5-=5-n|i(8`HCC0;divr~ybWqeW7HTcA!9?d4y>2$$y4g7X!zU*GH##tl zA0s%KzL%pp@5`5;tfb!0jf_#X`~)ikjz^FUOhY5b3JX`G=48MC=awjRV&jxQ8?=ZjTui{nT6rvw z#FI3CRtk82DUmY`Od)SzYKx3r2d(au={SmlglMQ#ECzHXV#23p8y&N~2ZxP^@oeo6 z-cla7v$sGDM#muUp0TVW7+o(`lu5>GDDYOhDTH~?M^o2hYP6J(HYK{EDZM5Z*R*PAmg*H?@aeFaYGHqP1Y`J6fL7|j`uzK+v~ z70cSMQg=E8>Ya2R8?`DUqPhG!o>lSR$2XBmOA|TDM$(Jc2I^giw5^-9cy}Z4 zn0pwfC6T2#UT%PjdnMx^UezPr$L7nE?&ow%PG)-d2QsdIitE1SLF38G3&zV2A>sJQ zvxPS|Cc5a6s{+d}@njd_y}NkJQ@+O$E3ujp0Lv4XC3<%x%-25U72}5GMZKrWEN#-r zh9WIR6H%<7*3-atg9WY76-W6mv2ana8oCsByfI6rCCT;)IGNaJ$+{iUQ9BV)6gypr z=!jc#=F#k^37c|pQvGxHL}J*#Vh~$9v|jJSM+bQ`V%oPLn5b|OZw@%S2~TuV17hU6 z6(7Z^`+brf3i5MH3;LqP|wue&n;t@)pC7oiU-^+7hu}HP|^LKL& zO;zgv!mCMIWshF+Abz{HTd?`hRUj z^Wnequ!Vx1D7{jwwFSowS!-hoqNi8;kvz6BNZgol&oARSbkop~M@dD-*(66Z-ZYAY znii6yMQ=vL%3D(8pJ%qfJ}5tyhwI-9rMGf(a|gH$(OtKb(XtM}tnIiXS5?d>)Z;=` z^Dx2)Ro%%sNug87Uqf0GM#u&@2i?CTuG2)POHXdWu?~;aIG<6!E{Na+=^Kckd=t;1 zap_$-&WnS^yZQ0L(banpiz3;4kncq-`+ao2`4Te2hb_(hxLk5#|KXzjhn4+@i}xQc z89A(8HJ^9ZP+DTi`8kd%ctHKx5KS%RQfSy?jlpmKSi|GA`66Wk3|k;OE|->zpP|qw z)#YG{Ws$Q3ALU!|cOoD=5lnI6QP^XuZhSZra~_X)G4dL>IBhju6&b>gDkRgA|8iAL zltqLHM0;C69f$Bd50eta3ICcQznR4t2$(&s@{lQSLCr_Qkclk zuAF29T(*kT9HC-5^KeS%G{(oF2PUV9_zM~Pj4X-ZPaGQEkyel6VpQ0?0K7Uy#%bjVO}trC_Ri|kXT|kdn?P;Kaug&2&5XbXBCsS&U@30NA^P7k{9oxsbn8X8 z<+vCXILhc9q*GyZUcp3#IhWHJE6ALcn^tngx>s?<=J#WhS2MeqqrW+O67e1Msz^0b zvKM<}>fS(JgY+D0&)~qmE`vSdw%H6zo$Y0h>mK$9CI*g&w8aq}=NI=H)%7+nRsi$r zZ8fR;83;Z8AEf<=#-=u&6Kt8@XvH#ndvTm(%OU!e(zTpi`6+2>2w&eZS~5ti`W|E} zjW`TT3LwWrY$=q$ye^i?PD`P7ZOg1sLhxmOge|lWCXaB+_D9(QRuy7l(&I-zE0~zV zArOptg7O1B*vKa>H-hqj2t%iG!Vu=$2Xn#@)&&oteJKoK%6S;oXg{4FhCqD;0jO|5 zfJYIaBwg?W)d~ev$*R0 z_SsX1`kY`GXPM6nfBH@e5ggwo#>}HxMWcLQ+~OaITl_=8@sF6ZF0nsREULd2 z+Y7+{o7^3wR`OydRlg)8eHkf~ypnmoe^tnpdQAxSyHSFTe!qV`BbfXKlCr;7gLNL+cFei(`G_wVF5pdaNb ze%Jg}!e510eIY&Et?(Z_O#Lq%#$VSzPUSHEA.G DST.MAC+5 rts -.9 lda #K.E.SYN +.9 lda #E.SYN .99 sec rts *-------------------------------------- diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index 92237e27..a037e155 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -64,7 +64,7 @@ CS.INIT .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/CHTYP.S.txt b/BIN/CHTYP.S.txt index e5f90f6e..10edd30e 100644 --- a/BIN/CHTYP.S.txt +++ b/BIN/CHTYP.S.txt @@ -68,7 +68,7 @@ CS.INIT .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/DNSINFO.S.txt b/BIN/DNSINFO.S.txt index 29c27695..2efe1589 100644 --- a/BIN/DNSINFO.S.txt +++ b/BIN/DNSINFO.S.txt @@ -81,7 +81,7 @@ CS.RUN.ADD cmp #2 sec we do not want to stay in memory rts -.9 lda #K.E.SYN +.9 lda #E.SYN sec .99 rts *-------------------------------------- diff --git a/BIN/FORMAT.S.txt b/BIN/FORMAT.S.txt index d1009ee4..9a746e0f 100644 --- a/BIN/FORMAT.S.txt +++ b/BIN/FORMAT.S.txt @@ -123,7 +123,7 @@ CS.INIT ldy #S.PS.ARGC .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/LS.S.txt b/BIN/LS.S.txt index 4503e33d..3bf318d2 100644 --- a/BIN/LS.S.txt +++ b/BIN/LS.S.txt @@ -68,7 +68,7 @@ CS.INIT dex bne .2 - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/MD.S.txt b/BIN/MD.S.txt index b26df510..2dd665de 100644 --- a/BIN/MD.S.txt +++ b/BIN/MD.S.txt @@ -52,7 +52,7 @@ CS.RUN lda #1 sec .9 rts -.99 lda #K.E.SYN +.99 lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/MD5.S.txt b/BIN/MD5.S.txt index 44e88dff..4600dfe8 100644 --- a/BIN/MD5.S.txt +++ b/BIN/MD5.S.txt @@ -68,7 +68,7 @@ CS.INIT ldy #S.PS.ARGC .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/NFSMOUNT.S.txt b/BIN/NFSMOUNT.S.txt index df32a63a..4d21b69c 100644 --- a/BIN/NFSMOUNT.S.txt +++ b/BIN/NFSMOUNT.S.txt @@ -63,7 +63,7 @@ CS.INIT >SYSCALL ArgVC .99 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/NSCUTIL.S.txt b/BIN/NSCUTIL.S.txt index 7d7e4877..0c91a20d 100644 --- a/BIN/NSCUTIL.S.txt +++ b/BIN/NSCUTIL.S.txt @@ -141,7 +141,7 @@ CS.RUN.SET lda #1 sec we do not want to stay in memory rts -.9 lda #K.E.SYN +.9 lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/PING.S.txt b/BIN/PING.S.txt index 81fa981d..639f03e1 100644 --- a/BIN/PING.S.txt +++ b/BIN/PING.S.txt @@ -62,7 +62,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? >LDYA L.MSG.IPKO >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts @@ -116,7 +116,7 @@ CS.RUN.IPOK .99 >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts @@ -162,7 +162,7 @@ CS.RUN.OPENSKT ldx #3 >LDYA L.MSG.SKTKO >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/RPCDUMP.S.txt b/BIN/RPCDUMP.S.txt index 1e7fe7ce..2b39466d 100644 --- a/BIN/RPCDUMP.S.txt +++ b/BIN/RPCDUMP.S.txt @@ -73,7 +73,7 @@ CS.INIT ldy #S.PS.ARGC .99 >LDYA L.MSG.USAGE >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts *-------------------------------------- diff --git a/BIN/TELNET.S.txt b/BIN/TELNET.S.txt index b666480b..a5d7b30e 100644 --- a/BIN/TELNET.S.txt +++ b/BIN/TELNET.S.txt @@ -69,7 +69,7 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? >LDYA L.MSG.IPKO >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts @@ -101,7 +101,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC .9 >LDYA L.MSG.USAGE >SYSCALL puts -.99 lda #K.E.SYN +.99 lda #E.SYN sec rts @@ -145,7 +145,7 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol .9 >LDYA L.MSG.SKTKO >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BIN/X.CPMVRM.S.txt b/BIN/X.CPMVRM.S.txt index d7a63ff1..2f337626 100644 --- a/BIN/X.CPMVRM.S.txt +++ b/BIN/X.CPMVRM.S.txt @@ -68,7 +68,7 @@ CS.INIT .99 >PUSHBI 0 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/BMP2PIX.S.txt b/BMP2PIX.S.txt index 824026b3..ac79f155 100644 --- a/BMP2PIX.S.txt +++ b/BMP2PIX.S.txt @@ -69,7 +69,7 @@ CS.INIT .99 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts @@ -176,7 +176,7 @@ CS.INIT.OPENINPUT .99 >LDYA L.MSG.HEADER.KO >SYSCALL printf - lda #K.E.IBIN + lda #E.IBIN sec rts *-------------------------------------- diff --git a/DRV/LANCEGS.DRV.S.txt b/DRV/LANCEGS.DRV.S.txt index 219c298a..8bee0579 100644 --- a/DRV/LANCEGS.DRV.S.txt +++ b/DRV/LANCEGS.DRV.S.txt @@ -126,7 +126,7 @@ Dev.ParseArgs >LDYA ARGS >SYSCALL sscanf bcc .8 - lda #K.E.SYN + lda #E.SYN sec .8 rts *-------------------------------------- diff --git a/DRV/UTHERNET.DRV.S.txt b/DRV/UTHERNET.DRV.S.txt index 0796e60a..1bb016e2 100644 --- a/DRV/UTHERNET.DRV.S.txt +++ b/DRV/UTHERNET.DRV.S.txt @@ -145,7 +145,7 @@ Dev.ParseArgs >LDYA ARGS >SYSCALL sscanf bcc .8 - lda #K.E.SYN + lda #E.SYN sec .8 rts *-------------------------------------- diff --git a/DRV/X.SSC.DRV.S.txt b/DRV/X.SSC.DRV.S.txt index a753c2ef..540cfd27 100644 --- a/DRV/X.SSC.DRV.S.txt +++ b/DRV/X.SSC.DRV.S.txt @@ -163,7 +163,7 @@ Dev.ParseArgs >LDYA ARGS beq .92 >SYSCALL freemem -.92 lda #K.E.SYN +.92 lda #E.SYN sec rts *-------------------------------------- diff --git a/DRV/X.U2.DRV.S.txt b/DRV/X.U2.DRV.S.txt index 8826e8a0..0e4929b9 100644 --- a/DRV/X.U2.DRV.S.txt +++ b/DRV/X.U2.DRV.S.txt @@ -146,7 +146,7 @@ Dev.ParseArgs >LDYA ARGS >SYSCALL sscanf bcc .8 - lda #K.E.SYN + lda #E.SYN sec .8 rts *-------------------------------------- diff --git a/FNT2FON.S.txt b/FNT2FON.S.txt index 354d1652..858a5262 100644 --- a/FNT2FON.S.txt +++ b/FNT2FON.S.txt @@ -72,7 +72,7 @@ CS.INIT .99 >LDYA L.MSG.USAGE >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts @@ -166,7 +166,7 @@ CS.INIT.OPENINPUT .99 >LDYA L.MSG.HEADER.KO >SYSCALL printf - lda #K.E.IBIN + lda #E.IBIN sec rts *-------------------------------------- diff --git a/INC/A2osX.I.txt b/INC/A2osX.I.txt index 9e3116ab..5d3b6c68 100644 --- a/INC/A2osX.I.txt +++ b/INC/A2osX.I.txt @@ -75,6 +75,22 @@ A2osX.S.XY .EQ $E1 A2osX.S.NIC .EQ $E2 A2osX.S.DISABLE .EQ $FF *-------------------------------------- +* ProDOS ERROR CODES : $00->$5F +* Lib ERROR CODES : $80->$BF +* Kernel ERROR CODES : $C0->$FF +*-------------------------------------- +E.OOM .EQ $FF Out Of Memory Error +E.OOH .EQ $FE Out Of Handle Error +E.INVH .EQ $FD Invalid Handle +E.BUF .EQ $FC Buffer Overflow +*-------------------------------------- +E.NSP .EQ $DD No Such Process Error +*-------------------------------------- +E.SYN .EQ $CF Syntax Error +E.ENVF .EQ $CE Env is Full +E.IBIN .EQ $CD Invalid BIN format +E.FTB .EQ $CC File Too Big Error +*-------------------------------------- * A2osX.SYSCALL Constants *-------------------------------------- C.EOF .EQ 4 @@ -262,22 +278,6 @@ SYS.FreeStkObj .EQ $FE SYS.Kernel.JMP .EQ $E000 SYS.GuiOSD.JMP .EQ $E200 *-------------------------------------- -* ProDOS ERROR CODES : $00->$5F -* Lib ERROR CODES : $80->$BF -* Kernel ERROR CODES : $C0->$FF -*-------------------------------------- -K.E.OOM .EQ $FF Out Of Memory Error -K.E.OOH .EQ $FE Out Of Handle Error -K.E.INVH .EQ $FD Invalid Handle -K.E.BUF .EQ $FC Buffer Overflow -*-------------------------------------- -K.E.NSP .EQ $DD No Such Process Error -*-------------------------------------- -K.E.SYN .EQ $CF Syntax Error -K.E.ENVF .EQ $CE Env is Full -K.E.IBIN .EQ $CD Invalid BIN format -K.E.FTB .EQ $CC File Too Big Error -*-------------------------------------- * MEM STRUCT *-------------------------------------- S.MEM.F .EQ 0 diff --git a/LIB/LIBPAK.S.txt b/LIB/LIBPAK.S.txt index a7f6090d..3d2149a0 100644 --- a/LIB/LIBPAK.S.txt +++ b/LIB/LIBPAK.S.txt @@ -123,7 +123,7 @@ Pak >PULLW ZPStatPtr clc rts -.9 lda #K.E.OOM +.9 lda #E.OOM sec rts *-------------------------------------- diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index ecf74de3..d8266cfe 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -92,7 +92,7 @@ SKT.Socket.FindFree txa >SYSCALL freemem - lda #K.E.OOH + lda #E.OOH sec rts diff --git a/SBIN/GETTY.S.txt b/SBIN/GETTY.S.txt index 6e2c624e..7dae6dc1 100644 --- a/SBIN/GETTY.S.txt +++ b/SBIN/GETTY.S.txt @@ -70,7 +70,7 @@ CS.RUN ldy #S.PS.ARGC .90 >LDYA L.MSG.USAGE >SYSCALL puts - lda #K.E.SYN + lda #E.SYN sec .9 rts diff --git a/SBIN/HTTPD.S.txt b/SBIN/HTTPD.S.txt index 08ce0501..41fa848f 100644 --- a/SBIN/HTTPD.S.txt +++ b/SBIN/HTTPD.S.txt @@ -85,7 +85,7 @@ CS.RUN jsr Init.Timeout .99 >LDYA L.MSG.TCPIPERR >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec CS.RUN.RTS rts @@ -141,7 +141,7 @@ CS.RUN.LOOP >SLEEP .9 >LDYA L.MSG.SKTERR >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/SBIN/INSDRV.S.txt b/SBIN/INSDRV.S.txt index d4248c4b..255d9180 100644 --- a/SBIN/INSDRV.S.txt +++ b/SBIN/INSDRV.S.txt @@ -61,7 +61,7 @@ CS.RUN ldy #S.PS.ARGC .9 >LDYA L.MSG.USAGE >SYSCALL puts - lda #K.E.SYN tell TSKMGR that all done ok, but + lda #E.SYN tell TSKMGR that all done ok, but sec we do not want to stay in memory .99 rts *-------------------------------------- diff --git a/SBIN/NFSD.S.txt b/SBIN/NFSD.S.txt index fcf5607a..9a804fbc 100644 --- a/SBIN/NFSD.S.txt +++ b/SBIN/NFSD.S.txt @@ -73,7 +73,7 @@ CS.RUN jsr Init.Timeout .99 >LDYA L.MSG.TCPIPERR >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts @@ -122,7 +122,7 @@ CS.RUN.INIT ldx #3 .9 >LDYA L.MSG.SKTERR >SYSCALL printf - lda #K.E.SYN + lda #E.SYN sec rts diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 88a67d75..6489818f 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -19,10 +19,14 @@ CMD.Quit >LDA.G hCmdBuf * in: * ZPCMDBuf : CString command line * out: -* ZPCMDBuf : Remove extra SPACE & comment -* ZPCMDBuf : cmd\0 arg1\0 arg2\0 ... \0 +* ZPArgVBuf : +* /path/excmd\0 arg1\0 arg2\0 ... \0 +* - or - +* intcmd\0 arg1\0 arg2\0 ... \0 *-------------------------------------- -Cmd.Parse lda #S.PS.F.HOLD+S.PS.F.DUPENV +Cmd.Parse >STZ.G CMD.bCmd + + lda #S.PS.F.HOLD+S.PS.F.DUPENV >STA.G CMD.PSFlags >LDYA ZPCMDBuf @@ -42,125 +46,151 @@ Cmd.Parse lda #S.PS.F.HOLD+S.PS.F.DUPENV bcs .9 >STYA ZPArgVBuf txa - >STA.G hArgVBuf + >STA.G CMD.hArgVBuf lda #0 sta (ZPArgVBuf) -.1 lda (ZPCMDBuf) + lda (ZPCMDBuf) beq .8 - >LDA.G CMD.hCmdLine - bne .6 we already have Cmd +.1 >LDYA ZPCMDBuf + >SYSCALL puts - jsr CMD.CheckExternal - bcs .9 + >LDA.G CMD.bCmd + bne .6 we already have Cmd, go check args + + ldy #2 + lda (ZPCMDBuf),y only one char ? + bne .2 + dey + lda (ZPCMDBuf),y + cmp #'.' leading dot ? + bne .2 -.6 jsr CMD.AddToArgV + >lda.G CMD.PSFlags yes, child process will run in same ENV + and #S.PS.F.DUPENV + sta (pData),y + bra .7 and skip this token + +.2 jsr CMD.CheckCmd + bcc .7 success, skip token, already added by CheckCmd + rts + +.6 jsr CMD.AddTokenToArgV bcs .9 .7 jsr CMD.NextCmdBufToken - bra .1 + lda (ZPCMDBuf) + bne .1 -.8 clc - rts +.8 clc .9 rts *-------------------------------------- * ZPCMDBuf-> argv[] (formatted & not empty) *-------------------------------------- -Cmd.Exec.CheckExternal - - ldy #$ff +Cmd.CheckCmd ldy #$ff .1 iny lda (ZPCMDBuf),y - beq .2 no / found, search... + beq .2 cmp #'/' bne .1 - >LDYA ZPCMDBuf found /, some path specified, no search + >LDYA ZPCMDBuf found /, some path specified, External, no search >SYSCALL realpath bcs .9 - phy - pha txa >STA.G CMD.hCmdLine - pla - ply - >PUSHEA.G CMD.Stat Command line is already full path, no search - >LDYA ZPCMDBuf - >SYSCALL STAT - bcs .9 + bra .6 go check type... -.2 >LDYAI 256 Get a buffer for found path +.2 >LDYA L.CMD.INT + jsr CMD.SearchInt no / found, search internal... + bcs .4 not internal, search PATH + + jsr CMD.AddYAToArgV X unmodified + bcs .9 + txa + >STA.G CMD.bCmd + + clc +.9 rts + +.4 >LDYAI 256 Get a buffer for found path >SYSCALL GetMem bcs .9 + txa >STA.G CMD.hCmdLine >LDYA L.ENV.PATH push ENVNAME=PATH for search >SYSCALL GetEnv get value for ENV=PATH - bcs .9 No PATH, try in CD + bcs Cmd.CheckCmd.90 - jsr Cmd.Exec.EXT.Search - bcc Cmd.Exec.EXT.ARGS + jsr Cmd.SearchExt + bcc .6 found in PATH, go check Type ldy #S.PS.hPREFIX not found, try in CD lda (pPs),y >SYSCALL GetMemPtr - jsr Cmd.Exec.EXT.Search - bcc Cmd.Exec.EXT.ARGS + jsr Cmd.SearchExt + bcs Cmd.CheckCmd.90 +.6 >PUSHEA.G CMD.Stat + >LDA.G CMD.hCmdLine + >SYSCALL GetMemPtr + >SYSCALL STAT + bcs Cmd.CheckCmd.90 + + ldy #CMD.Stat+S.STAT.P.TYPE + lda (pData),y + cmp #S.FI.T.TXT + beq Cmd.CheckCmd.TXT + cmp #S.FI.T.BIN + beq Cmd.CheckCmd.BIN + cmp #S.FI.T.SYS + beq Cmd.CheckCmd.SYS + + lda #E.SYN + sec + +Cmd.CheckCmd.90 php pha >LDA.G CMD.hCmdLine >SYSCALL FreeMem pla - sec -.9 rts -*-------------------------------------- -* CMD.hCmdLine = /path/bin -*-------------------------------------- -Cmd.Exec.EXT.ARGS - ldx #0 - jsr Cmd.RemoveStrAtX - - >LDYA ZPCMDBuf - >SYSCALL puts - >DEBUG - - >LDA.G CMD.hCmdLine - >SYSCALL GetMemPtr - ldx #0 - jsr CMD.InsertStrYAAtX - - >LDYA ZPCMDBuf - >SYSCALL puts - >DEBUG - - >LDA.G CMD.hCmdLine - >SYSCALL FreeMem - - ldy #CMD.Stat+S.STAT.P.TYPE - lda (pData),y - cmp #S.FI.T.TXT - beq Cmd.Exec.EXT.TXT - cmp #S.FI.T.BIN - beq Cmd.Exec.EXT.BIN - cmp #S.FI.T.SYS - bne .9 - - bra * - -.9 lda #K.E.SYN - sec + plp +Cmd.CheckCmd.RTS rts *-------------------------------------- -Cmd.Exec.EXT.Search - pha +* TXT : add "/PATH/SHELL" "/PATH/CMD" +*-------------------------------------- +Cmd.CheckCmd.TXT + lda #0 + >SYSCALL ArgV + jsr CMD.AddYAToArgV + bcs Cmd.CheckCmd.90 +*-------------------------------------- +* BIN : add "/PATH/CMD" +*-------------------------------------- +Cmd.CheckCmd.BIN + >LDA.G CMD.hCmdLine + >SYSCALL GetMemPtr + jsr CMD.AddYAToArgV + bcs Cmd.CheckCmd.90 + lda #$ff + >STA.G CMD.bCmd + bra Cmd.CheckCmd.90 +*-------------------------------------- +Cmd.CheckCmd.SYS +*-------------------------------------- + bra * +*-------------------------------------- +Cmd.SearchExt pha phy >PUSHEA.G CMD.Stat >LDA.G CMD.hCmdLine @@ -172,59 +202,27 @@ Cmd.Exec.EXT.Search >LDYA ZPCMDBuf push CMD >SYSCALL FileSearch rts -*-------------------------------------- -* TXT : Launch "/PATH/SHELL /PATH/CMD ARGS" -*-------------------------------------- -Cmd.Exec.EXT.TXT - lda #0 - >SYSCALL ArgV - ldx #0 - jsr Cmd.InsertStrYAAtX -*-------------------------------------- -* BIN : Launch "/PATH/CMD ARGS" -*-------------------------------------- -Cmd.Exec.EXT.BIN +*-------------------------------------- +Cmd.Exec lda (ZPArgVBuf) + cmp #'/' + bne .8 + >PUSHB.G CMD.PSFlags - >LDYA ZPCMDBuf - >SYSCALL Exec - rts + >LDYA ZPArgVBuf + >SYSCALL exec + +.8 >LDA.G CMD.bCmd + tax + jmp (J.CMD.INT,x) *-------------------------------------- -* Internal Commands +* STARTPROC : intcmd = 0 *-------------------------------------- -CMD.Exec.INT >LDYA L.CMD.INT - >STYA ZPPtr2 - - ldx #0 +Cmd.INT.STARTPROC + >LDA.G CMD.PSFlags + and #$ff^S.PS.F.HOLD + sta (pData),y -.1 phx - - >PUSHW ZPPtr2 - >LDYA ZPCMDBuf - >SYSCALL StrCaseCmp - bcs .2 - - plx - jmp (J.CMD.INT,x) Found an internal Cmd... - -.2 inc ZPPtr2 - bne .3 - inc ZPPtr2+1 - -.3 lda (ZPPtr2) - bne .2 - - inc ZPPtr2 - bne .4 - inc ZPPtr2+1 - -.4 plx - inx - inx - - lda (ZPPtr2) Array Ending 0, must be an external Cmd.... - bne .1 - - sec + clc rts *-------------------------------------- Cmd.INT.PWD ldy #S.PS.hPREFIX @@ -233,8 +231,9 @@ Cmd.INT.PWD ldy #S.PS.hPREFIX >SYSCALL puts rts *-------------------------------------- -Cmd.INT.CD lda (ZPCMDBuf) - bne .1 +Cmd.INT.CD ldx #1 + jsr Cmd.GetArgX + bcc .1 >LDYA L.ENV.HOME >SYSCALL GetEnv @@ -242,33 +241,17 @@ Cmd.INT.CD lda (ZPCMDBuf) >SYSCALL ExpandStr bcs .9 - bra .4 -.1 ldy #0 - -.2 lda (ZPCMDBuf),y - tax - iny - lda (ZPCMDBuf),y - bne .2 - cpx #'/' - beq .3 - - lda #'/' - sta (ZPCMDBuf),y - iny - lda #0 - sta (ZPCMDBuf),y - -.3 >LDYA ZPCMDBuf Get ARG0 - >SYSCALL RealPath +.1 >SYSCALL RealPath bcs .9 .4 >STYA ZPCMDBuf txa >STA.G CMD.hCmdLine +**** MEMORY LEAK : CMD.hCmdLine not released + ldy #1 lda (ZPCMDBuf),y beq .8 we have '/' @@ -278,8 +261,7 @@ Cmd.INT.CD lda (ZPCMDBuf) >SYSCALL STAT bcs .9 - ldy #CMD.Stat+S.STAT.P.TYPE - lda (pData),y + >LDA.G CMD.Stat+S.STAT.P.TYPE cmp #$0F Directory ? bne Cmd.Exec.ERRSYN @@ -296,26 +278,19 @@ Cmd.INT.CD lda (ZPCMDBuf) ldy #S.PS.hPREFIX sta (pPs),y - jsr SetPWD - clc + jmp SetPWD + .9 rts *-------------------------------------- -Cmd.Exec.ERRSYN lda #K.E.SYN +Cmd.Exec.ERRSYN lda #E.SYN sec rts *-------------------------------------- -Cmd.INT.STARTPROC - lda (ZPCMDBuf) - beq Cmd.Exec.ERRSYN - - >LDA.G CMD.PSFlags - and #$ff^S.PS.F.HOLD - sta (pData),y - - jmp Cmd.Exec.EXT -*-------------------------------------- -Cmd.INT.SET lda (ZPCMDBuf) - bne Cmd.INT.SETVAR +Cmd.INT.SET >DEBUG + + ldx #1 + jsr Cmd.GetArgX + bcc Cmd.INT.SETVAR * No arg, print all ENV @@ -365,42 +340,45 @@ Cmd.INT.SET lda (ZPCMDBuf) .8 clc .9 rts *-------------------------------------- -Cmd.INT.SETVAR cmp #'=' string is '=value' ? +Cmd.INT.SETVAR >STYA ZPPTR1 + + lda (ZPPTR1) + cmp #'=' string is '=value' ? beq .99 syntax error ldy #0 .1 iny - lda (ZPCMDBuf),y + lda (ZPPTR1),y beq .3 no =, GetEnv cmp #'=' ARGS contains =, PutEnv bne .1 iny - lda (ZPCMDBuf),y + lda (ZPPTR1),y beq .2 "VAR=" go UnsetEnv - >LDYA ZPCMDBuf String is VAR=VALUE... + >LDYA ZPPTR1 String is VAR=VALUE... >SYSCALL PutEnv rts .2 dey String is "VAR=", Remove ending '=' lda #0 - sta (ZPCMDBuf),y + sta (ZPPTR1),y - >LDYA ZPCMDBuf String is "VAR"... + >LDYA ZPPTR1 String is "VAR"... >SYSCALL UnsetEnv rts * Print requested VAR -.3 >LDYA ZPCMDBuf +.3 >LDYA ZPPTR1 >SYSCALL GetEnv bcs .8 >PUSHYA push value - >PUSHW ZPCMDBuf push name + >PUSHW ZPPTR1 push name jsr Cmd.INT.SET.PRINT .8 clc @@ -436,16 +414,21 @@ Cmd.INT.TIME clc >SYSCALL puts rts *-------------------------------------- -Cmd.INT.ECHO >PUSHW ZPCMDBuf +Cmd.INT.ECHO ldx #1 + jsr Cmd.GetArgX + bcs .71 + + >PUSHYA ldy #S.PS.hStdOut lda (pPs),y >SYSCALL fputs + >DEBUG bcs .9 - ldx #1 - + ldx #2 + .1 phx - jsr Cmd.GetStrAtX + jsr Cmd.GetArgX bcs .7 >PUSHYA @@ -458,11 +441,11 @@ Cmd.INT.ECHO >PUSHW ZPCMDBuf plx inx bcc .1 - + clc rts .7 plx - >LDA.G bECHO.N +.71 >LDA.G bECHO.N bmi .8 >PUSHBI 0 @@ -643,150 +626,104 @@ CMD.NextCmdBufToken bne .1 inc ZPCMDBuf+1 .1 tax - bne CMD.NextCmdBuf + bne CMD.NextCmdBufToken rts *-------------------------------------- -CMD.AddToArgV >LDYA ZPArgVBuf - >STYA ZPPtr1 +CMD.AddTokenToArgV + >LDYA ZPCmdBuf +CMD.AddYAToArgV >STYA ZPPtr1 + >LDYA ZPArgVBuf + >STYA ZPPtr2 -.1 lda (ZPPtr1) scan to end of argV +.1 lda (ZPPtr2) scan to end of argV beq .6 -.2 inc ZPPtr1 +.2 inc ZPPtr2 bne .3 - inc ZPPtr1+1 -.3 lda (ZPPtr1) + inc ZPPtr2+1 +.3 lda (ZPPtr2) bne .2 - inc ZPPtr1 + inc ZPPtr2 bne .4 - inc ZPPtr1+1 -.4 lda (ZPPtr1) + inc ZPPtr2+1 +.4 lda (ZPPtr2) bne .2 .6 ldy #$ff .7 iny - beq .9 - lda (ZPCMDBuf),y - sta (ZPPtr1),y +* beq .9 + lda (ZPPtr1),y + sta (ZPPtr2),y bne .7 including str ending \0 iny - beq .9 - sta (ZPPtr1),y arg[] ending \0 +* beq .9 + sta (ZPPtr2),y arg[] ending \0 clc rts -.9 lda #K.E.BUF +.9 lda #E.BUF sec rts *-------------------------------------- -Cmd.InsertStrYAAtX - >STYA ZPPtr3 new str to insert +CMD.SearchInt >STYA ZPPtr2 + + ldx #0 - jsr Cmd.GetStrAtX get ptr1=arg[x] - bcs .9 +.1 phx - >STYA ZPPtr4 Save ptr where to insert + >PUSHW ZPPtr2 + >LDYA ZPCMDBuf + >SYSCALL StrCaseCmp + bcs .2 - ldy $ff + plx + >LDYA ZPPtr2 + clc Found an internal Cmd... + rts -.1 iny get new str len - lda (ZPPtr3),y +.2 inc ZPPtr2 + bne .3 + inc ZPPtr2+1 + +.3 lda (ZPPtr2) + bne .2 + + inc ZPPtr2 + bne .4 + inc ZPPtr2+1 + +.4 plx + inx + inx + + lda (ZPPtr2) Array Ending 0, must be an external Cmd.... bne .1 - tya - sec +1 - adc ZPPtr1 - sta ZPPtr2 - - lda #0 - adc ZPPtr1+1 - lda ZPPtr2+1 - - ldy #0 - -.3 lda (ZPPtr1),y - sta (ZPPtr2),y - beq .4 - iny - bne .3 - -.4 tay - beq .5 - - jsr Cmd.NextStrPtr1 - >STYA ZPPtr1 - jsr Cmd.NextStrPtr2 - >STYA ZPPtr2 - bra .3 - -.5 ldy #ff copy new str in hole created - -.6 iny - lda (ZPPtr3),y - sta (ZPPtr4),y - bne .6 - -.8 clc -.9 rts -*-------------------------------------- -Cmd.RemoveStrAtX - jsr Cmd.GetStrAtX - bcs .9 - - jsr Cmd.NextStrPtr1 - >STYA ZPPtr2 - -.3 ldy #0 - -.4 lda (ZPPtr2),y - sta (ZPPtr1),y - beq .5 - iny - bra .4 - -.5 tya we moved the ending \0 - beq .8 - sec - adc ZPPtr2 - sta ZPPtr2 - bcc .6 - - inc ZPPtr2+1 - -.6 tya - - sec - adc ZPPtr1 - sta ZPPtr1 - bcc .3 - - inc ZPPtr2+1 - bra .3 - -.8 rts + rts *-------------------------------------- -Cmd.GetStrAtX >LDYA ZPCMDBuf +Cmd.GetArgX >LDYA ZPArgVBuf -.1 dex + dex bmi .8 >STYA ZPPtr1 - jsr Cmd.NextStrPtr1 - bcc .1 - rts +.1 jsr Cmd.NextArgPtr1 + bcs .9 + dex + bpl .1 -.8 >LDYA ZPPtr1 + >LDYA ZPPtr1 - clc - rts +.8 clc +.9 rts *-------------------------------------- -Cmd.NextStrPtr1 lda (ZPPtr1) +Cmd.NextArgPtr1 lda (ZPPtr1) beq .9 .1 inc ZPPtr1 @@ -796,31 +733,15 @@ Cmd.NextStrPtr1 lda (ZPPtr1) bne .1 inc ZPPtr1 - bne .8 + bne .3 inc ZPPtr1+1 + +.3 lda (ZPPtr1) + beq .9 .8 clc rts -.9 sec - rts -*-------------------------------------- -Cmd.NextStrPtr2 lda (ZPPtr2) - beq .9 - - >LDYA ZPPtr2 - >SYSCALL strlen - pha - tya - sec +1 - adc ZPPtr2 - tay - - pla - adc ZPPtr2+1 -* clc - rts - .9 sec rts *-------------------------------------- diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index a75499bd..200db5a7 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -65,7 +65,8 @@ J.ESC .DA CL.BS left arrow .DA HIS.GetPrev .DA CL.NAK right arow L.CMD.INT .DA CMD.INT -J.CMD.INT .DA Cmd.INT.CD +J.CMD.INT .DA Cmd.INT.STARTPROC + .DA Cmd.INT.CD .DA Cmd.INT.DATE .DA Cmd.INT.ECHO .DA Cmd.INT.EXIT @@ -75,9 +76,8 @@ J.CMD.INT .DA Cmd.INT.CD .DA Cmd.INT.READ .DA Cmd.INT.SET .DA Cmd.INT.SLEEP - .DA Cmd.INT.STARTPROC .DA Cmd.INT.TIME -L.CMD.IOR .DA CMD.IOR +L.CMD.IO .DA CMD.IO L.CSH.BOPS .DA CSH.BOPS J.CSH.BOPS .DA CSH.BOPS.ADD .DA CSH.BOPS.SUB @@ -198,7 +198,7 @@ CS.RUN >LDA.G bReadMode READ Command ? jsr CMD.Parse - lda (ZPCMDBuf) + lda (ZPArgVBuf) beq .10 Empty line jsr HIS.Add @@ -285,7 +285,7 @@ CS.RUN.BATCH >SYSCALL GetChar jsr CMD.Parse - lda (ZPCMDBuf) + lda (ZPArgVBuf) beq .8 jsr CMD.Exec @@ -371,7 +371,7 @@ ENV.HOME .AZ "HOME" *-------------------------------------- * https://www.tldp.org/LDP/abs/html/io-redirection.html *-------------------------------------- -CMD.IOR .AZ "&" +CMD.IO .AZ "&" .AZ "|" .AZ "<" .AZ ">>" @@ -382,7 +382,8 @@ CMD.IOR .AZ "&" .AZ "2>" .HS 00 *-------------------------------------- -CMD.INT .AZ "CD" +CMD.INT .AZ "STARTPROC" + .AZ "CD" .AZ "DATE" .AZ "ECHO" .AZ "EXIT" @@ -392,7 +393,6 @@ CMD.INT .AZ "CD" .AZ "READ" .AZ "SET" .AZ "SLEEP" - .AZ "STARTPROC" .AZ "TIME" .HS 00 *-------------------------------------- @@ -424,6 +424,7 @@ bSecureRead .BS 1 Sleep .BS 4 CMD.hCmdLine .BS 1 +CMD.bCmd .BS 1 CMD.hArgVBuf .BS 1 CMD.PSFlags .BS 1 diff --git a/SYS/KERNEL.S.BIN.txt b/SYS/KERNEL.S.BIN.txt index 8c9d9aa1..84290ec4 100644 --- a/SYS/KERNEL.S.BIN.txt +++ b/SYS/KERNEL.S.BIN.txt @@ -356,7 +356,7 @@ K.InsDrv >STYA ZPPtr1 clc rts -.9 lda #K.E.OOM +.9 lda #E.OOM sec rts *-------------------------------------- @@ -405,7 +405,7 @@ BIN.RelExe ldy #H.BIN.T+1 cmp /H.BIN.T.DRV65 beq .1 - lda #K.E.IBIN + lda #E.IBIN sec rts diff --git a/SYS/KERNEL.S.CORE.txt b/SYS/KERNEL.S.CORE.txt index b1768905..ffd8b1fd 100644 --- a/SYS/KERNEL.S.CORE.txt +++ b/SYS/KERNEL.S.CORE.txt @@ -358,7 +358,7 @@ CORE.GetPS ldy #0 cpy #K.PS.MAX bne .1 -.9 lda #K.E.NSP +.9 lda #E.NSP * sec rts *-------------------------------------- diff --git a/SYS/KERNEL.S.DEV.txt b/SYS/KERNEL.S.DEV.txt index db46b817..acdbec87 100644 --- a/SYS/KERNEL.S.DEV.txt +++ b/SYS/KERNEL.S.DEV.txt @@ -148,7 +148,7 @@ K.MKDev >STYA .1+1 cpx #K.IRQDEV.MAX*2 bne .2 -.9 lda #K.E.OOH +.9 lda #E.OOH * sec .99 rts diff --git a/SYS/KERNEL.S.ENV.txt b/SYS/KERNEL.S.ENV.txt index 69fb3d9a..a15630de 100644 --- a/SYS/KERNEL.S.ENV.txt +++ b/SYS/KERNEL.S.ENV.txt @@ -372,7 +372,7 @@ K.SetEnv.I jsr K.UnsetEnv.I clc rts -.99 lda #K.E.ENVF +.99 lda #E.ENVF * sec rts */-------------------------------------- diff --git a/SYS/KERNEL.S.FIO.txt b/SYS/KERNEL.S.FIO.txt index f8ad98cc..d46b41bb 100644 --- a/SYS/KERNEL.S.FIO.txt +++ b/SYS/KERNEL.S.FIO.txt @@ -58,7 +58,7 @@ K.LoadFile clc inc bne .1 -.10 lda #K.E.FTB +.10 lda #E.FTB .11 bra .99 .1 jsr K.GetMem diff --git a/SYS/KERNEL.S.MEM.txt b/SYS/KERNEL.S.MEM.txt index dde3716a..4db32d79 100644 --- a/SYS/KERNEL.S.MEM.txt +++ b/SYS/KERNEL.S.MEM.txt @@ -218,7 +218,7 @@ Mem.AddSlot >STYA ZPMemMgrTmp1 save req size .98 pla discard new Mem.Free HI -.99 lda #K.E.OOM +.99 lda #E.OOM sec rts *-------------------------------------- diff --git a/SYS/KERNEL.S.PS.txt b/SYS/KERNEL.S.PS.txt index 532c4371..0286b333 100644 --- a/SYS/KERNEL.S.PS.txt +++ b/SYS/KERNEL.S.PS.txt @@ -64,7 +64,7 @@ PS.CreateChild ldx #0 cpx #K.PS.MAX bne .1 - lda #K.E.OOH + lda #E.OOH sec rts diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 1de57233..4ff64e1d 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -1022,7 +1022,7 @@ K.FClose jsr PFT.CheckNodeA stz Nod.Table.hFD,x jmp K.Close -.9 lda #K.E.INVH +.9 lda #E.INVH sec K.FClose.RTS rts */-------------------------------------- @@ -1144,9 +1144,9 @@ K.FSeek jsr PFT.CheckNodeA .9 rts -.98 lda #K.E.SYN +.98 lda #E.SYN .HS 2C bit abs -.99 lda #K.E.FTB +.99 lda #E.FTB sec rts */-------------------------------------- @@ -1285,7 +1285,7 @@ STDIO.NewHFileYAX bne .1 pla - lda #K.E.OOH + lda #E.OOH * sec rts @@ -1326,7 +1326,7 @@ STDIO.GetHFile tay rts STDIO.GetHFile.9 - lda #K.E.INVH + lda #E.INVH sec rts *-------------------------------------- diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index b787dd7f..09465f96 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -386,7 +386,7 @@ K.realpath >STYA ZPPtr1 .89 >LDYAI K.Buf256 jmp K.NewStr -.90 lda #K.E.SYN +.90 lda #E.SYN sec rts *-------------------------------------- diff --git a/X.ERRORS.S.txt b/X.ERRORS.S.txt index 3bdb6bc1..1fc80a48 100644 --- a/X.ERRORS.S.txt +++ b/X.ERRORS.S.txt @@ -20,9 +20,14 @@ ERR.Codes .DA #MLI.E.IO .DA #MLI.E.LOCKED .DA #MLI.E.OPEN *-------------------------------------- - .DA #K.E.OOM - .DA #K.E.OOH - .DA #K.E.SYN + .DA #E.OOM + .DA #E.OOH + .DA #E.INVH + .DA #E.BUF + .DA #E.SYN + .DA #E.ENVF + .DA #E.IBIN + .DA #E.FTB *-------------------------------------- ERR.Count .EQ *-ERR.Codes *-------------------------------------- @@ -45,7 +50,12 @@ ERR.Messages >PSTR "I/O Error" *-------------------------------------- >PSTR "Out Of Memory" >PSTR "Out Of Memory Handle" + >PSTR "Invalid Handle" + >PSTR "Buffer Overflow" >PSTR "Syntax Error" + >PSTR "Env Is Full" + >PSTR "Invalid BIN format" + >PSTR "File Too Big" *-------------------------------------- >PSTR "Unknown Error" *--------------------------------------