From ad26c6d710f778ec23c0ec9c581030af2a495c7e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 25 Aug 2020 12:56:00 +0200 Subject: [PATCH] Kernel 0.94 --- .Docs/KERNEL.md | 33 ++++++++++--------- .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes .Floppies/A2OSX.TEST.po | Bin 819200 -> 819200 bytes BIN/ATTR.S.txt | 4 +-- BIN/CAT.S.txt | 33 +++++++++++++++++++ BIN/CHGRP.S.txt | 2 +- BIN/CHOWN.S.txt | 4 +-- BIN/IRC.S.txt | 23 +++++++------ BIN/KCONFIG.S.txt | 8 ++--- BIN/LC.S.txt | 8 ++--- BIN/PAK.S.txt | 6 ++-- BIN/PAKME.S.txt | 52 +++++++++++++++--------------- BIN/SH.S.CL.txt | 7 ++-- BIN/SH.S.CORE.txt | 8 +++-- BIN/STAT.S.txt | 2 +- BIN/TERM.S.txt | 12 +++---- BIN/UC.S.txt | 8 ++--- SYS/KERNEL.S.STDIO.txt | 68 +++++++++++++++++++++------------------ 18 files changed, 158 insertions(+), 120 deletions(-) diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 059c1b7a..6d0886ea 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -575,6 +575,17 @@ CS : not found ## RETURN VALUE +# CloseSession + +## C +`int closesession(short int hSID);` + +## ASM +`>PUSHB hSID` +`>SYSCALL CloseSession` + +## RETURN VALUE + # OpenSession ## C @@ -633,17 +644,6 @@ CS : not found ## RETURN VALUE -# CloseSession - -## C -`int closesession(short int hSID);` - -## ASM -`>PUSHB hSID` -`>SYSCALL CloseSession` - -## RETURN VALUE - # SListGetData ## ASM @@ -880,8 +880,8 @@ Write Str to hFILE ## ASM **In:** +`>PUSHB stream` `>PUSHW str` -`lda stream` `>SYSCALL fputs` ## RETURN VALUE @@ -1016,7 +1016,7 @@ Read bytes from file Write bytes to file ## C -`int fwrite (short int stream, const void * ptr, int count );` +`int fwrite ( short int stream, const void * ptr, int count );` ## ASM **In:** @@ -1382,9 +1382,12 @@ Y,A = destination # StrDup Create a new copy of this C-String -Y,A = Ptr to source C-String -## RETURN VALUE +## C +`char * strdup ( char * str);` + +## ASM +Y,A = Ptr to source C-String CC : success Y,A = PTR to String X = hMem (C-String) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 8b040890d30888245584383ceb0374fca232024f..22f69fa6872a12254853cffb9a63e26294cd1251 100644 GIT binary patch delta 27349 zcmaKU3tUvi_xRksyRfheT-XQ8(<^TlTzLy9!pcKX1mxi>H4srSMFdPO3)bXnR*Ghf z_9POL@^LX^>z9>Qme>m|U#O{RRzA_p?4kb8+LkhrBb4 z8S*(G$Eu$%I69hnU5yTh`D;-BdBl2!C#au)^=KfZ#;c#-FMPzQpTA=J&>SO45R)u? z0CJfvX0`2Or|sjY@By^kJ(jL!%I2aOp=wujPpBqX{Z7G!dlaFx;No!?m8*~M5O!!l zU{G)fj{YmJk&s*5azo~f|9&M%hgFB96J`S~DJzDLaKG-~ug8Xo^+i zCE{0{8oz4)+HX(2Vvp14=wKOOCF_Ko@Kt92T5bQ@DSkn@M{Qr$yE@uQ?|&_L%h~pG zZ5)gC@E(2a^?<+F&qH`s=Y95yk&VYek@T3D_|R6@^@p2>ZS6ObcmjU~7!cSJ-bOc|SHKg1r>WzK%CV(!;fUNb8GTef^5Idr*4o2KHvLUwy^0TqS~XGhdP>`>?mGPWsST&v&k4V0$uHg=O=ow<(7{HL zGvU*1EiDkg;(=TCuUDtjo{Xyx8XGdq4V@Lb2h#UXr^iJQF?a+8jV;V9Km-3A)G`_s z%Fu$4;VN{;mLYkDPzhu$6TcGFc(wg&=L~ur5EHMq-km|yVJ+L_@)nLhT=t2PPuTKf z`+4@bk^SD->eh7_xY){wf85&dC9gkxp#ARp!|ne-eA_MH%E}*`&ab@C^iwHtj=u*C zRRTlhJ@U3y%g(?&w4LFQ|0s!_=HB)h$V zWaCu?`$%}R0~7`&u#m%z4L0(p-vZRL%X?*s&4zico7eZXZtCh|6l_xjAKSVaK8@@b z5qwx@qqe_OF7Ib2hbgn$Z{##Ov${wDm1f_LaH2@muISqcA9^yB}$ouZUE%HUvar-O_pTWjv<@zfJ*eST|X?kkIH{rXk^!~|` zKcyG1^vW(?EnVaM*78P{P!8ppSw|y(CwFs1=fOr<=jSAJDfj-M(5c*Ek=YVk!na&% zzr6BF)78Int0OBrmnN3>u>G#UTxVdiL(lSlSz@W7l$}X&Tp^Nt%5&etZ?Bn#EK;Ygm%ZdG+1Zhd8aUuCOm{o&GVKzuO9z$do80wdeKS<$Lu zOCkwc>nojTeV+mMucNj2@H4cBepV!ZG@Fd*)>lbUYN04C{_7dqKOFKvxb;<%2P#O7 zY;^&=*9e{q;I+O6rMtDduq9UWvoueIlt%E8L^g`{&E>dU#mz7NJyR&Nx`hp_L4_d;e;-^y!E*CE(Hz9*$u*GhF=>2)JPV^3*+ zIXiwtvz%1%=sJ43-#6i81bDL6NDx;T7A~FlTc3k*^6dJ)Ts^+Nj(&pD;04XJk1}=y zA9V3g_FdfEOec*7VxoGAdX<03GZXaB=H}UA{&(h zlwrs9^bog~hZ7~9+b|s1FoP|^@$2avpAC^P*xh=a336K+>0F6rQ1j;X^n28OT)2Ub z@`JKndmis~Ag$~70Gv`H-hV*UZ)_@lZ3As|o?`6%x&0sJV;Du>ZJ_5-EqL_vz*Xpr z@Xm|5SMYPs(-94$lK5aUPY_A;1x@A!noI}Ngacb=Y`#?Ub>gcYQ`d zckp^~B6C{<`nCO5zs#x8$q2F{6p~H~G4^{vL5XV^2ZA0&MoHt3?08(akq&9NV(i=t z!vZS&LqK%|)T>g3d!0;B5J@{Jq$ztMK~I}{zs{{8vB3CG2YMyEzq|daFoRtozuS`8 z?IYQ?wa^FrE2J+sbt(zXX}hlUg!M;)ER7&}8${wGre(wAQTZ7Am61Jb>_pI%&M5d{ zkH$BrmV)XMI@HWoM>gw8kcizMMC@*|9+51J-%CP%k^{0+_Utng_+G^=r>N{*eOoJG z)BziL2HFzU>%6+F@4#FA-j2B;37z{BOF^BxL2Z06qukY(_^U&10`7W&_NO-C-WTXN zwqZE$LE`0G+wZLJTiyQW`o7La7;EbiAfthuiGy0`Sox-eP6`hhP3sL%dRruEyP8NT z$*$^bEM;HDPq)xM)9)LfPU}~&2S)H`+i^tyJ^gg4)9x!C?Q%%knM6gLRtL8utg zfib;KYoh4fI%BSHMCWJFThIy*C_zmU<9Z#}a#Qd%&b;RJ)(fhcN8HI-pn z!%j}(lecYQx3{zG;V?duyGeQ_m@P`;S$6LT7$6%l9nkPZ(w3Va(Ia!6_CWV0bv8Er zwyl}nzFx>33+q73JF~Z@~Y|e zggFmpYGBfLo9JO_z$9QU;i%A*E2Pk$+Zfhq&s$Lrpw?uK4xMtCODRLg&6Gcq`(>o> zL31hu{mM?ZrfsI*leN4|2ZKcgR#y1Sbh7rC%n`B9XhlfifGLlcyi5mz5tjf)TxdyA zW}!JF!)C@gj8iL6paXh3WVjo;FBox9)PBfNC}s$loNmJv{yI!mJD~eYv_3@dDw&C- z+~D-=3HkO?5prN$6v*U&HiWpS(Lc6wlV1^xL#Uw)z9f=#>Dglo2N{+Qb6E;KPNDv= zAXh2t2sPd*W+jHWtq|+oSLi}D&QEl4!Sz~a7SG?JRN_{HZ0wkluKSU0arZyk?6|d8PLfO6r@i~o%G8ytJ?C-%y`OCk2z$w!}?a*DIh*Z_&#oyX>s!0Yz=u{KkirP?@tl!~4 z@1MUk-d^)Le(OAKaM(wP*nq52HP#0 zExpikk=9X7SbveuhCdHqq$g6Nao0uKhq{8lzDS>O|NQuF;M!7&YY!dSk3amGUPe{n z5x>w0ZZDnUT$|ih*02v<=%sW0@$z5j)Nxb6{DM_a;|O-v1u#3=$NHK(8i#iVH-_{~ z?+pOd{(v^8({uXzHGtK#wD)Ot>P4^}^Dnf&+DLy`)5kWPZ2r3QvBca+buo&*da@l09*X_h?l*XLlNmYy*A{@Tn8H>sLA{3F`SBOxMoZ#M0LLk*(<22mw2_ zi6WU2o6s)Q@4qeLWas@}#iqlkUwfbn^}7Li_;k3xXL!R&o<7ifvy>o@$cEp)_^9kP z?4u|D;=|T7Do8ZTHeG~D%P-N9)JwSe64s-k97IkF7deEDK|C6z6!lg&9b@PFZ{ zg{Pi6^)3Zr`XG0{opy--qKyCx}D`W zs1CJU?)F`?&la}RePvS<*S3cp(an$q54i*N9FCqYyWcTFPP=uX8?siESjww<%9w=6N3vXQy^$`@r&E78Htze6zd!!{jqg7^;(yfXXw9+t$KE)acl5`j zuN`~+*bm44KIU*d{P^hOM~{DS{Ey@E6GS^MKJnxU%L#n4_2e74VXQpG@%E|U)8(h{ zSwDqf>)xxrLA4af)0kK{lpT_wLYL2fJsZ@m3KtZ}E12t15IaJ(_wsr7 zbgyvM3GXkE_c0k^pw$C3=+^l?<6#A@vhJKHpO`2!6?U(YKTH|)NVa)&K}k{e7}How zrMb2|t7?7)(owkV8My|penwu;JuB~cRuLeV4J&;cQ)^`Z$X(4=F&KXH_h+m|~H# z5N)1au@tF_AgX4*#T0|QOK_Cd*GoMKNv+ATMB#!{T3w*q6tVcgOjFU+Jfxh8HrG{@ zBj;(zl!R;R>yYPkTo&)6A3a0D3rdVa>Y0F5UuKB{VpI=9EwyD9Q#8_+AyXW#sxG$> zE~PJATwRX>X9>yp+>&L!(c0O_Gy;>>3?Qg0B*K%DklS3KFE?YVImZ$cpMbQL`1R|K znz$;!D6g}al91*RKqxAnYPL)(7_)c|Fa){GC$ucJR6-aj7a-%_kYR|e#+I)q4XIiv z@vf$zh%nBhhGd^wly1(=wPa=HXCd7pTiH=fIr)}~+S-M+NLhzA*Ox6r+ImQ=u7IXR zHB~RPlvkG3BHg2diWpl_pH3pROYor^Lp2S{(B|?5HI~4jsMwY1^|kYdr6cWQw&pdN zXDzI)-zzsE?Q$Dlw1iiL)KA#!LT(Kr*|Q4D7S~lEmqxU?Vqq;5J7*4Zvxuyh(zGkY zZ0SX&!V;f6Q*M5K0rGeX0m&_d&k~y7O1x-WiEj}H3DH7Ar69Z=x3M_TG0sj4xVOvwFtD2zw}bh1#Gb|cz6uddc2G&0YWUyzxHTweeI zjcSqPf^o$nTf}CCY{vUPaSWdHA{0ah@8kh-aeYZ7OhnYYGN?gW(49p{^(xRtq-_M! zwLVa9L19i_G19({-M5!$Mz^8OWO(Sd5Rn#oeL`-IDbqxxO4Tm0H3{k7e4vc<-29?U zq}__wf9j}lcnjK))PjG|dU^XgzfDFQ8GFiYV$sU&qA+Lez-K>o%yii)wPvar`SLhr zyNeIig{cG&ebO#lJEyHQFJ5Y?Ush9rH17;h0Y3Jbquu>$EUT{&N2K;V(XgZ~197?w|7rz3^SPrU>?f%iBar*g|7wNm7t)Gyizy!I zF5&fUMVbcJ%YrCM!%2NrYCu8^a=wmCiMV_|$YsAso%2m(ipTY3OOeMdXn`wFuT5-`yw>OY`RA^-`|$nB0uvoye!6aR$a3!?A-7usAlyWBq6 zA-BK9aV;UL{*fq8K<;-%NflE-P*wMAL?b^$;p<;G`Y;qVpa2Ltc++pXz*v=>vP~#D z2g;NX1JY1Fh@&b;NGEzf4k?t>W@K=paLoZneU-CR+!&ZXkyZsE+higLY8G;Kp`>Y3 z=}HMRk*6CasVzZ$qRJ-Sdvq`fy@ZPJgM`B+Ca!9(nPJK^BGiJR&52|InhBu zd;3xNxgJMDgTI&s2y|sBm~tPph&ogoFgRQK{Dm-OIR_Fd1fdC{1U;z?7OC+FA=G5# zXHLq@D_$e0yHE)uOvG>wCm5M|8AxdqV|*g0{2Cl|(9x5M#G?*622jKB!v`J9olIhS z+;F_;Go2T{aM014io*8~f>9NXnV&q2viKNW`lVwWZgud|%e>?8wl6_>#8VTB#+uTL z3v<)6&4sH?=4qCIhk}b{1R!OCSfXwOCCKx-(FH}tg_eN4lH35qBogKe;iCL(2qz7M zi>E+1*&fam!XpR5`NfbvN(?tZfth&|AtJ?&U``(o;nDW+m`te9Ep;GV1j%XkV6k}& zB%AHw+$;!=u?HtXZEorIU=~Tuum>B`3n83o4;SS_Fl!)~167T+2QzXrA)GxBPLGCg z&Y*A%gvSjE$3l4gpl}?7bM4_ga|3DW1bYOSoe<8mhckLhZkoB!)NeT1T}WzvrmV>QJg*Zs{H6;6ZF&We){2 z`ZDD6B?VIlE_kk3>w{EZ!C)pcKn!yEh5~I)G(%t%^7I2 z4r8~iYJG$HJE>wYKwQ61+$9oA|=c!(+Y^qD$TySpNSGH1Iutwr0N%mFNsL;E0o}Q z2{*Q@^{OjGoz=`QL%OT@^>($^c+IZouZzMG+)t(F7iOABVWzx_rS%+PX_)^@_{=iB zU%<<@%8D1%Oa>cMYBJaduaRn6f!FIZ^_m9n*F~-klx3bh+f-Owgk0XB#KlEuKqyjg zky;NXn_I_&WxokY;(Cnfq{uozFiu0mAlF;AT+zs78zEt-B``ER6uE6DMJ%;U%PtV; zQ}48u5rY&w^bykqB}Gdml|o6oY$e4Yw|5?>-}hZWjlqZBRC~H~OQQE4M2VsofmH89 zRw5Vi$o&J#6eHNq)5LmJd!%Axk=I8Q?s~RZ*ML+XOT<8ieH55Pgls8;`zOGZ8fb;h z1XF)1l@J$&^!q7s*+BXwr!KR4cKQO4%g;&ug7M>f0ER?V3y}hlGSYK{g&`cNZcv+5 zf-RVcJb$wfhg)Pgc>3QajS`k65A?gRAoTnLuTRkHL+?n`L?fTS1`%Ty5)t`tY=QA* zylbDi?};*{zyB|p63}%>hWBk%Yg{OqI0Aq;nG9Rn)w%{+W}E!wGQs>%Dr81WPCimP zh+&PROc1S{eABoI1#9b78Yp=fNsAY@A6#ja(XzShYQ) z88Qm`qR3QGWXdvS=jUc1oeSh1Ry)fgM*lgJt9;OCBP`KWrj3xP%xf@k=LRG1Fqh!j;Flwmfh;1VLp)OUlnS6AE+>YaXm`( z$5){S!;lASh!LwuVDYGTp~wJS`>r}5C-6Ut40@o*%vx|b1dF}nA2L86EZA1pRF(+A^4&7eJMgPZ+IVgIo=01 z$JPY%ajo&>&#=}6@+X9N5ij-ry@_CW*`}QK%VfrBzeIl9!pO#KXCpzF*6P^RXQ-mH zTa{gXRjBD)C5g>|Ei?F&0vmzwCxPIQk70o1AbbVk{B?RC%&ynFXao!=8-_Faz-jCC zBMX*=HUHgeVXeWfjpRp0ejLb;g8aZ-2&Z(&v4QPFjPUg$d>LRH5I%(?1mIUc+om{e z2p8PfiKTn|@t5oM!#X}u2Q}D*si^)DSkNPt6K$V|oM~{3!IY??VLk%MSJT3r;pIXL zQ$biwMp=DX_{yUCvhqh@xd7q|h@kbI-DsOx&(OlS3Ua3f(Gn{WhJ%^MVr-iYh^rQs~+2Dm=y{Ptd_Xc8!7r;l1R{C1c$rPSc z$1mze$JrIgGgKzd6~5kKqHvj#h2cCKZ9#T>!G6llbnN|yjxqzvSGst5B!UJYJ~5kyHYDMhRW4wRCu9FA7cV@c%Ei;g zb(9?|y%0A-yqn8tDJpb%C^Do9nKG1V5*cQZ49_vrfRVJjDN$HmDbpn?GelYfGetDP zU)M3uMeYVV$@vIrtFTf!YPG~fH&EnUTrF4Q(p}^F?r1sj53YKDhbw-6hucL)XF`jD z!;~N0JAXNocyg^fce*j}R|gKK(sND1>MuPPIIv2vWCX=nSyVrp=nE!FGGrttq$*l6 zoyL=lrH z5rufcGQ6N9H`m;hUKD9giAo-mo1Z>DCvR+|rM9B3eqn8e#f+SN$kLv0z{wXGhZD!C z!4DZNftESYp|A?KWeP`r{tz!T(_*%Sl~>|x!xp)!h7jaHOFBwovDYU|NXK4AHov-F z@RXL7*H_e9!bg@O^-vMbTr>f>1i-h^m{Xl>G$KPF1WH9)b|6nF@(3dFWQwV)udOIs zP>S@y0;bKx6v%_v5Zo2DNaq_0iRtN<6ieOW^74v0XigY1PAARr567oIVSHUwM#3#H zIuemjBzFIl@qT!i=vWwU%E^a*L#pADGbakEq6Fp@Wt)*MT5vLOOKPj?D=g8LS>TC5 zsu+8^Ax`=PGgvC=saa5(E*?ksFq%rw1Y0jP)hw(L+DJT{9*L4iCexIcpJ9e+OPM4( zKvc>0J~WIH>;6{qdHVydYT+bWVE*sMzMt`p^_sTEr_C@HcYN)%j2gvynqkz@W-Os7Vgk?~Qf zVWz^&;@Gu9n_~rzietHBntLcHbInVWjntJ&OJ;lDNpb% ziwtY3SzK2M>bTmHor9F%WF|`!Pw*`NJ2^KW_LXhC1tkEpP7Kn$E^-!o#V;Dt08Y#| z$oBJ=|B)H+GLxCYuj4`P0*ju4y$mocU@yaat0+ZTS;IzKqF{{J#x&Br1xyvXj`Wpa zlR3R@Qv=(8S)c~yR@A%I4b}q@+wrv?#z^hJUI$^(zZ1_s$YfDGe)}L3rRpM?h&qVf zg)bgtV#?kTBZPs!8@_D=p8*H7H1H=|s!I{mJt$mPirlRvOcX$6R!(jvjP&;e1pD|0 zx&Tf8K3=qh(LU_*f5^B3N`dw)9%C6SBz%zr?x>N7K60l%qA-cvF}#aS)fZ*`z1Mw zMjG&I3oAjXTA29tUkuI>5&cvhNC|%NE5<()^16X*+g=_B9C){h3>v_v{a`sy3Bu+6 z?O=2m@1ec;o3EIVhC^s0(u1#CT%!~fXMoKN%>gS|1#WL?@$Yfue}oEL-bARh#M4bC zlca%tG0ziFoVa}y7}aDKBxRqdkUUP2fk21^Rp=;a)sd(1V_$<`><9er*GwRF2A}wv z2?{-D_eZA}BEyeR5wVpLn<|8@0~niC)pL>01swe?~z9>0lLOA zXEE$GC~guy|3=*M#PWQA&$l24nRMb2b6cd$Hru#@FI=*UfCVb>hD*y#1vtWCttgIv z(7c6s;1@B_8;HZ8`f__J@B_y&czh_{W7r|J;#f(yzJI0asC(yyY712c3^528mdgA7V=h!atDQxC$9 zMqV!egFCdEj1r}rh);as4ff*6oaN>IUs*tvYBgffgT>EDOBpu_7Be`^+QXj$t7Jh{bs0?OlAtNQfMM}q5W091r_N}YVk~jU$%hgxB5z-cs6x;< z<*?N|SQmQv;mAXbLFG>nh}!cXg7XhCezB|=A*j8f@NH9jh5!hZ+8t$5k)X!{DLgU2 zpo#DZqKqpZ&|R+JHh;;jJ*Omg-cX>g6mwOdN9d` z2#5wPAQWerQ@e11C2t`tDx4z;I%z}XFr0Uoi5LT}brK=8VK{u-+Taldfd_0eT{MY# zpjFVM7+aHK|EEcD4>T!WYLZ_9{_`;7+c1K-XX-$O0Ga866`@TMT_+EWE%3DqIt(0j z;ATf2;9D2Q!+_L-b6uDn!KqFZ*+79$4M@KZTVCv9!5( z==Y4qFhS~7*F4fImc`XXbWlh>&i$SVRuzy)(szjy@$&DP5q^bY1nE1bNa!5FU2G{Y zMY>|#`#q!eDiNY>^Ql-M^x7n`*BU&)1^zEVobo`gO_h3$nFb6gA@rm_D{S{XB(lzF zxoc5im+gr01BuHXa>|N zm`KQdDTynR;xf~b(=wZ`cnt47&iJK1E)Fd4N%%Y=EIV^^CxdHH@VJ@GB~yy07GxsB zlTy+cdy)|E)qs6ZFb2m)7;CJB!p(K=TAY7^agJXhh_yvDZ;;|CK+vuf2W&}R4vY!W zrKfJPRiA`BSK+lM7`@ACX$-^3AHy2lb%OD1ct%ucKvrc|24bES3mR_{w-uGo!A1f& zCzNZ&vF*|1C-8hP;Bm>|^}( z;P)4mn}{i>H?LNFAI_$YvjCp#hez1{qk1 zoIa7->-8z2-XfMexWQhZL4r`5WtNxF|Xmkrt6lUy_)?T=M)%z_F>|If9D;*z~o)rXa6xU_8T`hOF2G z(g>aPaEQn0TboSv;{W@B@i)Uh-2?0p7^j21I%1DXLr`cW(!r)3nKXe{LWCfGzDKdw z8OF!ym^h^TkK>dxj33p9A3DQ$4}rb8*%jrs(d~BXfnfM)yzvYZ7W>1$CsCL~oz6&B znf5H{8+(1EZ@}iq*UvDX0q1SQ^aAh#dMIl?ESr(@Pb5T`A9@joon=CDe-0f6`TvX`l>UuiI>>tc-A^?S}-g7R0$c zCqJ{W5b0qXXfzz|5>5@m->h7iv61slqI(1r;5X3(@VkXw&oRECzl)qy-j=4qKS(Qs zhas0cq#2g1qKb+~(C|O;#B+>E^%sc~1nqCU<{XpJ@Q)ZFwDm50+uEv!O(99p;P}as z%8Kf8n4Wa^?XkI*g>&ZARS@w*;FNuUEqaQ?46vmRNC2+LWMEDLW&X4b`iRgaE_NH# za^hNsO|ocME;_&wSYi~z{+m)}TL6aD2<(DAqkpr@9rll4PR@lRmge;I*cjxYk|NAa zBH748E%|nfGBd{uM?KWAeIzV_VquHjm9;sx!MVxEhy)@v>=OwHaPZ1ggYW;y=(Dxp z42EMU<4xq`U4gmKJfSEe7J2IaBRUSLq#Yq}0lFH18$#9TC56Zbe9-3^?@(`2DKr`C zgpDB5v95kLJaQVv+h1mijcUP%Ho9p;$mS1O+9e^Ep=8fZ@~|mkzlWGXzQGU~4Y(gw z>)k_Oe+|ww3Cw`yzgH-}f1WWoh0BE1lCKf77Z@KygiKu5#v*kj6fXF2qfvkf7hPb6 zI)Gn3F{TA~wJy*OSAlC@pfm~0Y>AQL*~2lJQ-$M);G`D{fT=c4hRv-DGz~}{FXc*v zGhGQb*S8LiIwvIxCqlu~KgOJ4E*y(ANwUqR>>^7{def|`dP~_XFolx=FUf|NRXhec zjg*PYF3l*L@C^8oQe@)dNj(}k2qK@UfK!pCR9yTMGfb66;)uuxoAI+hF+t`rVuT>_ z>F{k6c@J>kKPbn#OcFC7#}y0bz!=EFH-2KYR_uy**`< zWGz<>df8+dHdR1SHw8!i%xEK~LPrdgP>=%_n$t9iw=NG6wpp@@E5HqrG954cnHi;; zLE;3}ITLsP%!G`2Sd0*OTMFNH-j+e&K^-xR#0>DZ9?AvgmSguVDh;cf4XOFnVEMq_ zm?dof!s@x<$f-i&oc|m=@fXIgV6MnA7#4;~81#db=Ge^Q3FgA_NL6J=Q9UAUF~K@% zzMvwAt65b|V!>Y>gM4c6N53%MX^ZTM%37igz$04+rI6Ed(a3qRO_rS=l{n+N1ZWKe zQ)a=!M=KD!6dQhJhNza2NWz-P$MBe6nTWBEixC2AmczG=HTowYP%1j7Ys%^?tIHOE zruBSMh_%hvwL;;*p9Xy65~Gc8lsLg!K!(JcpCuD;K~}LTy|M!K6QLwHIHOu&Z@*zB zzWXcVnc8G;0B38!Dnc4GfK-h%t05$Q+wIn;2?A-%m^HZQ5@Vk6j2Iy_=2`f*H|9AA zNcM?k;r!X8L9nV>J1DlgVu={*xlV{3XrkD1U9-?c=k-z(hit%Zml^+t=j|}ERC>%p?j5# zDPl#zc@4bnGUL?n8W16P50Ub9QK4$u#FECFz)uI)2%vD?8=xj@pa`NSCzz)cn2WQK zY71l~Y8L3}AUeDb&Mn(AA?=$WbYy>mZ0v{yA+N0vC!AlhPdPei&gq1d0cr2J!c^kZ zu(3&H;XTFf239om$AW^e9d!_7f}H2b8-v(vJgnG#2n$Mzs3HA0`)(yUNF*V7jh6`r zVq|Ct{-D_1ODYqT)PI)glSgXyj>!LyvIJ^~+7hgniDIqVLQIvoYZ{8A8O63=t16Z_ z45m_vJuMdwxlghuxJ|Yvz{y0Unqp5;f(9cKqVqJHkSjrLkydJ_{|{wI59&*FyA}w0 z%D{KB4X>Li_LQ*WPTWGo7iM@Ee^}z~=>$rR6c<#+O>*y^dj*Y8FA91}-~7oTFE`m-@5}y;<<2i>$+2^UIu^!puDLgiPe}HX&AW1S+?Q z6?koj!C?~xm|DofhzuL#vI7#P2n%sIvbs~k=4GM@nOCtSn_RU35r$(*a1Lk}-YL_1 zH@qXUCT5F=*C5qFC{HwyoWBCQN!TA# zd<{d|?;9ET%E{{0!RK2tQt|60lXUKGy&{p)%HQh{9#ZXM@Hh-}>(Vk#^l>P^2g*9+ zTE1ns+5w+0areucC6NsWEy^JgBuzP6kcV0l$h%l(C#i~>bK{krWl!=rz zVpQNFyl=NQAfiqpqW+PBg*EB*OU+GiY7(v}#AYGadZ`D}O*vV}uo%0(tMybbkvcR6 zMJ&b9?`n*43wz zTHnX!gu;!^tnAh&;XXb&)>8?kz8T8ru;;_F+bl%(1 z1yrzACqj8A5~+YlLn&mV!+TXM#D?y=&;-kZFB)9OPGJ_T)E(>+C}Y-_N1ZA0*21=_{#W_JX99$-m& zIjKE~Pdc2`mGoXxPtviZACvAR{hcHW&I^eT@d^%34oi+mo@?qKR%dcG{W<)Rs1IT% zMdw8?jkZL89Q9K4b<>DwFO$(U!BiZR5$hQjANNq)n{g-N-cEQsVQu{3gv$vIBR-AW zntU?+T=?bi>to1I_@Ci-!{1BZle{$Xsl+vjuOz;i_*vr4#4nS7O}>$QFUciYm+YF1 zkfD^F7|3>pkhgyNGsFijyxAb!^Oued3^KucO1bI)_+{Y%6KC;xCCb#CQOZ7HVm}Jz z|G@h~e6^VUTj#9-45w{d+3lSyOPN?^59<<$%T_$e;st-}3aClekN(z$)$2^sO%Bi| z_QQZH@V*VjUOqb5%c`&a*NMOpu(t&_g3fLz4#wka^vu}$x_@EVcDM%Swaldz<>ct5 z0&aL9<$VN)w`!0Q_PNL*E(Ppvp&%JvU84_lr73B15H2bD%kld)dOru)*+L^7@TnSo zvLkG1A%l{_qZjJ+<*0uX(XgXmO7A~$fWiG9%M+(@}Lc#91WsyF}!GqMQ!Fw0!J;`PjnXYs? ze0Gsu>!cSO;pK_%F47y+uvsNoGqA(vg@?jP>;|}~fxLXknV{lna0OMU1@55=$C#1A zmyqN~+<}5y)L$e?IYjh4C}AUtROU%Gp@c?&d)R)&6)9mmN=Oc*gkmK&uO{{tOdFm- z;K#tbYxNp^Fw`%c)fmX^8A6dGW!f~Yum`nNI%!#5PddsF4())eKK5cW!Hj`;j|gC~ zbhLCr23aKq4a3oO`oIR0;C6;7D6A)RB(JsnpqTZdM8RNvg(KnIZO^e->`2*ZVn*6Ymc$-~(vDfWDZOxIW_~Wx7vcQHdY!CT zJb8^DUkoQWCy{c6DQ&V?THF-;(qerq+=vi`XBve|4;E{^m9X3 zAUz#SItnk+7HcAuGoe11pV@~=mkwM4cxrsbvLy>^XV+Qk%VxorkY_3EF0jQqT^S*_ zTXzU8JfYJQD04x4C3s2ulZY@o!ia-t(wF zGH{;62JjTkhx6xAEo9IaFD!u_q1yB^xV#jy0IQaO%va;+C3+ufA)c^A9|?Ook1f%M z&94)cglR-mHQ46jK5A99r5*z0WS4inNVO@h>Cv+JRkPu`@0>C)|7Mfj8{j0I1LC9x zTXKmvcd5XYr;u`)*z?YhlOyhAjT^fhyDrtoXkoKPkU{WEH4sPZGGuDR#Y^?Wl2?!$ z9fClJ2N=SU8n#~qofZd&ouyrvoa%BgqQN@h;Hn!OcUX#sufiWJ)tg3;{TFcou)E7i?(6@+vDIAHH?mDc2V^)#|gY6fhqMXUj3qe6j z*l{5-Z#G}{P8CET51UGYCJ7~q;4*0&gmMvK9bZt12x@%wv!E^fkmU zq4we47nk>tlcEV7FBzzgT?SeACk9G3@DSv~9WNX7^2)M#{g_%W|EJ|8gB;7^z5WT5 z4t!+g!-O3LmXiJjzV7|MFfxV zenl!Hu8GtIg+$uQdiB4`f<-(sw94>n7u9+vSjH2{b85q7FQ>sY*;c8v`gI%5D;k7` ztw72*L`&Lt%U~0FiZE|U$E%TZJ7F4e94kAB3jt2-!Gd0rb_Q1K#5-X_R=zDQ9kxje z1z7448Pn~sS3s8QLmyd12=m%0`g5h+1E<9eJbq%2!BgD@6@lUcN3!QG+`7l0ANP*5 zR&(BMUm(0IR^i!guc82UD&P!u6S*nn3G2QGdR$0DUhlPhXfOyo?!~WuXwZl3`&SN- zNhPcw$?@QU*jD zoK~PT4MIkCB-84rek8-6@oYeZ<9f!*%KwrwJ|IQ`rZoFw=5fk9Uy z_nr#-=sV@!FU7zbA&5O4%!jfUgPQ~3F2Kd`ntoLe)2nA!59PfZ-Plt@c}=5|T^0t* zgm=Q=nabq~?*iwhAl{KYSjf6sk1D*44jrp~WGx323DyKx?}P628=roLsV3*Uw2O<& z^JewkmbG%lDn)>|RT1Fx_eeQ;G@^T^&p%X0sZU79#wZy+8&u$Gb$v4BCe^XVrx6b= zEihPJkEZ=Xb*p`Y&q~iQ1()O%n8%Y>OvHZ<;|y}-qd;+?dY%0RCu_kKUl)q@3WwXO zSAB!vBO0%|>N_5s74W9#(W}13ELmYmcbwlnn3{J^*H|B0KJzNok?1!@HYTV0F%lgx zW~Rp4vT?>$s{2X5nURrg^MHfRPOZ-Ht{r*UlYNtIMV-pFe!^InHLWzL%`aJ=h6g=M ziP7)Zu<~rvIdVVb?E0I%f3EHve&}XDePI2~O^FpZn{IWYir<=kFJ(6e@Buwk?@%@^ zfH$;(Z*?g9MgZ@+&7a*qgl#iI;f*KZ>9xOx_Q>E_OV0rQH-dSsO-3+(58yA55+?RE z_GWgP+5!k&5dOC58oRk6fIk3l8!iao_d%ClXzD)zKQ~%wSR4uulU{84nSCyhZ)c5x z{A(nax~H-KgKV~ZXk~6MORkIv7e)qAQu?8faEbCmZ{bh-Z^AW~o8-4sCR}#O1_DaS z*QU=;$sv{!E@Y;}x5By*7KZ{RO@7;d5`Hg`-^#W)!b4^+-RrXYeM9h}3%v@sh+`<- zK9tlWcF>n!Lr-u!{J0(d+>RmK4z_#8P^x(NRI})N`%F?a`z1y5xj2@{NS*{PLGb!o zkmncR@Vii?(-EJG%_l3lSA2Rv5$KHMN|X{jEyT7|ekqov{mMQrNpa*35eoeVKPn3d zaRPq}_$`p3S5Q>thlrvQHnF_Edq5)&=rrPTAt$(MCcTl{}Nd!d;&#f$kryoSC z%KyAHM+T)wMWmZdPl3f%W+^Y5KcCoKt`{I1F-4-`vIEjyd;phh+9KDV2VrpX08Spr z$%8m~FeeY;AJ;aq{6E@~CFnk&nqVevfvA(|xb=^1B@^ zQAT=-WfVRe@1V14_eT9fb$k+K#AfdlU#sCt)CG#W7R6nQ=B~wbUyG&hGnYr9!(o2p zg(2Mtukc84OlU{%Q3Lwuy|?)lqg1Pzy6jq_wiY0)2H z41<0-|JlRBi_EL9#*KD^*t=m0wGkZc&h`!jl3HF5a3#$z8cR`B;xIB@lZ&i)&F|@Wg$X!BfecB95%t0JH8t0 zfgAB>Wd!4`Tk*MalI6~w`1kOWD>RN)>!0zHA*~oQ|HQYFs(1Yp{|khzFW-&d>PjNA z)Cr~Vchy#P0>B7>M1UlKWPp*@t?E%z*2#-%%g1!TJnAlGrPze~!QG#Ysu?d^INMt5 zma^6)Hy0yC_vjQ*QoSzd6+B}T1;<87Am#kI8+)nMc! z&&zno%oM%)3gD9~0EsB*DmKqd2~=Ds(>pd7!@6C0LmHMhC6WJ46nURpgNEn)`GXvY zNca1{XJYb}$!(}b9Hja`#GyCsLFf3L|H|d^r#+kDFW7U`7%|B!JhtmW>C#OUum zK#X)uN_YQ1O4K5HKnqETN=mw-CKE5kX=!YEI7Qux@;Hil zSf%|UT>+e@Ufofe;@{ydmvuCzXz}YCQ}kAkjVYI??v|7`A312hTx&;HN+ZL#P8oFf z9-ghTTDsH38(iZ%K1<2&@RiHDT}P|8Q`fP}2cxTGiU{k{4@MtL!!GYrN<8_W(f*Xh z`shES9Vifog*n#7yQ5#1i^C#VmbzUO_oK4Z3d*raeB1+%k*DU-6UOIRpO>dDo>6f$e-do#W5Wcr>#ATCH!y(%VdO2@++Qv>MmZ)t2^tMSLZ8>^Jo#~V|d6jW^omwFph%hQgyy9Ub# z9#cTd5VWXCl{P z)(VsEdGYdv@`8vmnY?J|stL)?n%V#y*rVv^%)eN(u^bH5sz}*LTDF`mU@Oc_D z>{mPSZg7VJ{58ZmMq2EA)lSqku}1Ifc<2{tUgXAv=p+=KU-{$l#HmplcjZm#)u3DC zE(%y9_}iO0eS{KjL4+07I*uhIIlnjnyfq6*u80abRSe|##&;}WWqi%WWDbPr_eRU($ za>*43Jkf!-SZu|#f-KNSWY->P9f-?HdNvMpPlkSBNG1_M%oPub=v z*5KDCI%s6xTD-n9%}WipAcT}eq|*zJRp8N2sJ&zX-uP^wd8iNEYY;ptzV=sk{KOb9 ze?0W9Gy^*8m`C=U~58#xjZGn^9Nwp%M=xI|MRo-JYkZXdMlPSYAca&)%;UuM-?`<~5TV+1jyH4s7>R_=y}}$nixSU(E3(96yQUCv*H1j-Sf$(>VSij-Sr)GdO-G$3M*R zr5se21_*ERg zn&Y45_%$5=497pq@y~JmT8>}G@y#5+p5r%g{PP^Yk>g+B_!f@G9KVU zzs&KkaQv$r{~E`)a{TKY-^TH8aQqgIZ|C?9j(?Nmw{mi|j{k<^zvcK|jz7flhdKT`j{lzHk8u1^ zjz7ln$2tB4$My9LN92@#i`I0>}Tv@fSJ%XO91c3;|#Ph5`ft1OfyB1OtQsgaU*CfYHJm0l?D9UucB6Cev9u z4!}5o@c_9169Do6@&O6}CIS=!6af?ilmJWum<%ulU@E{gfQJC41Iz%J3GgsLDL@&( zEP!%=*#H#)a{%T7R0321%ma7?U_QVCfNFq+05t%M0BQm10O|o213U__1Yjw^GJwYb z9tT(s@C3k<01W_*02Y8108as|1ZV=_09FC426!4^4Zt%1&jLILuohq)Kr_I4fDHi8 z18f9%0iXo{18f4=4DcerO8_qeyaMnlz-s`l0IvhI0lWdQ1)v?E1K>@7tpJ?>Zvngw zunk~4zz%?&06ah!z%GDy0Coes3(yT<1$YnOeSrT1_yAxJz=r@I0elRw7hoU2Cjg%U zd@2e<)n6W}+1 iTL8ZU+y?jq;10l_0Dl4e4e$@ZU4VPk4*ous_x}Kj{|yEJ delta 27348 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

WY<{RD7+-uHOe-cdFA8P6 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 feof + >SYSCALL FEOF bcs .99 tay @@ -322,7 +322,7 @@ CS.RUN.CheckSwitch bne .9 >LDYA ZPPtr1 - >SYSCALL strupr + >SYSCALL StrUpr ldx #AttrMask-AttrList2-1 diff --git a/BIN/CAT.S.txt b/BIN/CAT.S.txt index a1fcb8b5..c066a747 100644 --- a/BIN/CAT.S.txt +++ b/BIN/CAT.S.txt @@ -64,11 +64,13 @@ CS.RUN lda ArgCount >SYSCALL ArgV bcs .7 + >STYA ZPPtr1 lda (ZPPtr1) cmp #'-' bne .4 + ldy #1 lda (ZPPtr1),y @@ -91,13 +93,17 @@ CS.RUN lda #$80 sta 0,y bra .1 + .4 inc FileCount bra .1 scan for any other args + .7 lda FileCount beq .99 + >LDYAI 256 >SYSCALL GetMem bcs .9 + >STYA ZPBufPtr stx hBuf *-------------------------------------- @@ -105,13 +111,16 @@ CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y >SYSCALL FEOF bcs .90 IO error + tay bne .10 no char >SYSCALL GetChar bcs .9 IO error + cmp #$03 Ctrl-C beq .9 Abort.... + cmp #$13 Ctrl-S bne .10 @@ -124,17 +133,21 @@ CS.RUN.LOOP ldy #S.PS.hStdIn .11 lda hFile bne .2 + .1 inc ArgIndex lda ArgIndex >SYSCALL ArgV bcs .99 No more arg...the end! + >STYA ZPPtr1 lda (ZPPtr1) cmp #'-' beq .1 An option, skip... + >LDYA ZPPtr1 jsr CS.RUN.OPEN .90 bcs .9 + sta hFile .2 >PUSHWI 254 Leave room for CRLF @@ -147,8 +160,10 @@ CS.RUN.LOOP ldy #S.PS.hStdIn jsr CS.RUN.PRINT bcc CS.RUN.LOOP rts + .7 cmp #MLI.E.EOF bne .9 + jsr CS.RUN.CLOSE jmp CS.RUN.LOOP @@ -166,29 +181,39 @@ CS.RUN.OPEN stz bPrintedBlankLine Reset this flag for the new file *-------------------------------------- CS.RUN.PRINT inc LineNum bne .10 + inc LineNum+1 + .10 lda bSuppressBlankLine bpl .2 + lda (ZPBufPtr) bne .1 Empty line ? lda bPrintedBlankLine bmi .8 + lda #$ff sta bPrintedBlankLine bra .2 + .1 stz bPrintedBlankLine + .2 jsr CS.RUN.PRINTNUM bcs .99 + lda bPrintAll bmi .3 ldy #$ff + .20 iny lda (ZPBufPtr),y beq .21 + cmp #C.SPACE bcs .20 + lda #C.SPACE sta (ZPBufPtr),y bra .20 @@ -198,17 +223,22 @@ CS.RUN.PRINT inc LineNum rts .3 stz ByteIndex + .4 ldy ByteIndex lda (ZPBufPtr),y beq .7 + cmp #C.SPACE bcc .5 + >SYSCALL PutChar .99 bcs .9 + bra .62 .8 clc rts + .5 tax >LDYA L.ASCII @@ -228,6 +258,7 @@ CS.RUN.PRINT inc LineNum >PUSHBI 2 >SYSCALL PrintF bcs .9 + .62 inc ByteIndex bne .4 @@ -253,7 +284,9 @@ CS.QUIT lda hBuf CS.RUN.CLOSE lda hFile beq .8 + stz hFile + >SYSCALL FClose .8 clc rts diff --git a/BIN/CHGRP.S.txt b/BIN/CHGRP.S.txt index c7020748..c0f973f3 100644 --- a/BIN/CHGRP.S.txt +++ b/BIN/CHGRP.S.txt @@ -118,7 +118,7 @@ CS.RUN >INC.G ArgIndex *-------------------------------------- CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL feof + >SYSCALL FEOF bcs .99 tay diff --git a/BIN/CHOWN.S.txt b/BIN/CHOWN.S.txt index 307e415d..04775254 100644 --- a/BIN/CHOWN.S.txt +++ b/BIN/CHOWN.S.txt @@ -119,7 +119,7 @@ CS.RUN >INC.G ArgIndex *-------------------------------------- CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL feof + >SYSCALL FEOF bcs .99 tay @@ -210,7 +210,7 @@ CS.RUN.DIR lda (ZPFileName) >PUSHW ZPFullPath >PUSHB.G UID >PUSHBI 255 - >SYSCALL chown + >SYSCALL ChOwn jsr CS.RUN.CheckErr bcs .9 diff --git a/BIN/IRC.S.txt b/BIN/IRC.S.txt index 29ca304f..71c4c2b4 100644 --- a/BIN/IRC.S.txt +++ b/BIN/IRC.S.txt @@ -158,9 +158,9 @@ CS.RUN.IPOK ldy #S.PS.ARGC lda #1 >SYSCALL ArgV >PUSHYA - >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GETBYNAME + >LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName bcc CS.RUN.HOSTOK - lda TimeOut + lda TimeOut bne .2 >PUSHW L.MSG.UNKNOWN @@ -180,7 +180,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC CS.RUN.HOSTOK lda #2 >SYSCALL ArgV - >SYSCALL atoi + >SYSCALL AToI >STYA SA.REMOTE+S.SOCKADDR.PORT >PUSHW L.MSG.HOSTOK @@ -270,7 +270,7 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol CS.RUN.LOOP >SLEEP lda hFile - >SYSCALL feof + >SYSCALL FEOF bcs .9 tay @@ -288,7 +288,7 @@ CS.RUN.LOOP >SLEEP .2 ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL feof + >SYSCALL FEOF bcs .9 tay bne CS.RUN.LOOP EOF = true, no char from STDIN @@ -312,13 +312,13 @@ CS.RUN.MkNod >PUSHEA.G NodBuf >PUSHW L.NOD.Template >PUSHB hSocket >PUSHBI 1 - >SYSCALL sprintf + >SYSCALL SPrintF bcs .9 >PUSHEA.G NodBuf >PUSHW 0 >PUSHB hSocket - >SYSCALL mknod + >SYSCALL MKNod bcs .9 >PUSHEA.G NodBuf @@ -656,7 +656,7 @@ CS.RUN.CMD.376 CS.RUN.GetMsg >PUSHWI MSGSIZE >PUSHW ZPMsgPtr lda hFile - >SYSCALL fgets + >SYSCALL FGetS bcs .9 lda (ZPMsgPtr) @@ -967,12 +967,12 @@ CS.DOEVENT lda (pEvent) CS.QUIT lda hFile beq .1 - >SYSCALL fclose + >SYSCALL FClose .1 lda hSocket beq .2 -* >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown .2 lda hText beq .3 @@ -1058,8 +1058,7 @@ NOD.Template .AZ "/dev/irc%h" DS.START NULLSTRING .BS 1 NodBuf .BS 11 -DS.END - .ED +DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/irc.s diff --git a/BIN/KCONFIG.S.txt b/BIN/KCONFIG.S.txt index f27fcb09..7cdfa552 100644 --- a/BIN/KCONFIG.S.txt +++ b/BIN/KCONFIG.S.txt @@ -6,9 +6,9 @@ AUTO 4,1 .OR $2000 .TF bin/kconfig *-------------------------------------- - .INB INC/MACROS.I - .INB INC/MLI.I - .INB INC/A2OSX.I + .INB inc/macros.i + .INB inc/mli.i + .INB inc/a2osx.i *-------------------------------------- .DUMMY .OR ZPBIN @@ -406,5 +406,5 @@ DS.START StatBuf .BS S.STAT DS.END .ED MAN -SAVE USR/SRC/BIN/KCONFIG.S +SAVE usr/src/bin/kconfig.s ASM diff --git a/BIN/LC.S.txt b/BIN/LC.S.txt index e9f3c987..ced80080 100644 --- a/BIN/LC.S.txt +++ b/BIN/LC.S.txt @@ -104,7 +104,7 @@ CS.RUN >INC.G ArgIndex *-------------------------------------- CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL feof + >SYSCALL FEOF bcs .99 tay @@ -265,7 +265,7 @@ CS.RUN.GetNewPath >SYSCALL StrCpy >LDYA ZPFileName - >SYSCALL strlwr + >SYSCALL StrLwr >PUSHW ZPFileName >LDYA ZPNewPath @@ -341,9 +341,7 @@ hFile .BS 1 hMem .BS 1 .INB usr/src/bin/x.fileenum.g - -DS.END - .ED +DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/lc.s diff --git a/BIN/PAK.S.txt b/BIN/PAK.S.txt index eec4e25f..cd61f0cb 100644 --- a/BIN/PAK.S.txt +++ b/BIN/PAK.S.txt @@ -415,8 +415,8 @@ CS.RUN.OpenArc >LDA.G ArcName >STA.G hArcFile + >PUSHB.G hArcFile >PUSHW L.ARC.Header - >LDA.G hArcFile >SYSCALL FPutS .9 CS.RUN.OpenArc.RTS @@ -509,8 +509,8 @@ CS.RUN.WriteArcHdr jsr CS.RUN.WriteArcByteA bcs CS.RUN.WriteArcHdr.9 + >PUSHB.G hArcFile >PUSHW ZPRelPath - >LDA.G hArcFile >SYSCALL FPutS CS.RUN.WriteArcHdr.9 @@ -683,5 +683,5 @@ DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/BIN/PAK.S +SAVE usr/src/bin/pak.s ASM diff --git a/BIN/PAKME.S.txt b/BIN/PAKME.S.txt index 62edfd3b..8f6729d4 100644 --- a/BIN/PAKME.S.txt +++ b/BIN/PAKME.S.txt @@ -5,12 +5,12 @@ NEW .OR $2000 .TF bin/pakme *-------------------------------------- - .INB INC/MACROS.I - .INB INC/A2OSX.I - .INB INC/KERNEL.I - .INB INC/PAK.I - .INB INC/LIBPAK.I - .INB INC/MLI.E.I + .INB inc/macros.i + .INB inc/a2osx.i + .INB inc/kernel.i + .INB inc/pak.i + .INB inc/libpak.i + .INB inc/mli.e.i *-------------------------------------- CHUNK.MAX .EQ 32 *-------------------------------------- @@ -126,19 +126,19 @@ CS.RUN.START >PUSHW L.MSG.SRCFILE >PUSHWZ >PUSHWZ lda hSrcFile - >SYSCALL fseek + >SYSCALL FSeek bcs CS.RUN.RTS >PUSHW ZPDstTableOfs >PUSHW ZPSrcBufPtr lda hSrcFile - >SYSCALL fread + >SYSCALL FRead bcs CS.RUN.RTS >PUSHW ZPDstTableOfs >PUSHW ZPSrcBufPtr lda hDstFile - >SYSCALL fwrite + >SYSCALL FWrite bcs CS.RUN.RTS jsr CS.QUIT.BUF @@ -151,7 +151,7 @@ CS.RUN.RTS rts *-------------------------------------- CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL feof + >SYSCALL FEOF bcs CS.RUN.RTS tay @@ -228,7 +228,7 @@ CS.RUN.CheckSrcFile >PUSHB hSrcFile >PUSHEA.G STATBUF - >SYSCALL fstat + >SYSCALL FStat .99 bcs .9 >LDA.G STATBUF+S.STAT.SIZE+3 @@ -271,13 +271,13 @@ CS.RUN.CheckTAG >PUSHBI SEEK.SET >PUSHYA lda hSrcFile - >SYSCALL fseek + >SYSCALL FSeek bcs CS.RUN.CheckSrcFile.RTS >PUSHWI 10 >PUSHEA.G PAKME.HEADER lda hSrcFile - >SYSCALL fread + >SYSCALL FRead bcs CS.RUN.CheckSrcFile.RTS ldx #4 @@ -311,7 +311,7 @@ CS.RUN.GetTable >LDA.G PAKME.HEADER+8 >PUSHWZ >PUSHW ZPDstTableOfs lda hSrcFile - >SYSCALL fseek + >SYSCALL FSeek bcs .9 >LDA.G PAKME.HEADER+7 @@ -324,7 +324,7 @@ CS.RUN.GetTable >LDA.G PAKME.HEADER+8 >PUSHEA.G PAKME.TABLE lda hSrcFile - >SYSCALL fread + >SYSCALL FRead .9 rts *-------------------------------------- @@ -352,13 +352,13 @@ CS.RUN.GetChunk lda ZPChunkIndex >PUSHWZ >PUSHW ZPChunkOfs lda hSrcFile - >SYSCALL fseek + >SYSCALL FSeek bcs .9 >PUSHWI 3 >PUSHEA.G CHUNK.HEADER lda hSrcFile - >SYSCALL fread + >SYSCALL FRead bcs .9 >LDA.G CHUNK.HEADER @@ -378,7 +378,7 @@ CS.RUN.GetChunk lda ZPChunkIndex >PUSHW ZPChunkLen >PUSHW ZPSrcBufPtr lda hSrcFile - >SYSCALL fread + >SYSCALL FRead bcs .9 * clc @@ -416,7 +416,7 @@ CS.RUN.RewriteTable >PUSHWZ >PUSHW ZPDstTableOfs lda hDstFile - >SYSCALL fseek + >SYSCALL FSeek bcs CS.RUN.WriteTable.RTS *-------------------------------------- CS.RUN.WriteTable @@ -427,12 +427,12 @@ CS.RUN.WriteTable >PUSHYA >PUSHEA.G PAKME.TABLE lda hDstFile - >SYSCALL fwrite + >SYSCALL FWrite CS.RUN.WriteTable.RTS rts *-------------------------------------- CS.RUN.WritePak lda hDstFile - >SYSCALL ftell + >SYSCALL FTell bcs .9 >PULLW ZPChunkNewOfs @@ -442,7 +442,7 @@ CS.RUN.WritePak lda hDstFile >PUSHW ZPChunkPakedLen >PUSHW ZPDstBufPtr lda hDstFile - >SYSCALL fwrite + >SYSCALL FWrite bcs .9 >PUSHW L.MSG.PAKED @@ -457,7 +457,7 @@ CS.RUN.WritePak.RTS *-------------------------------------- CS.RUN.WriteStore lda hDstFile - >SYSCALL ftell + >SYSCALL FTell bcs CS.RUN.WritePak.RTS >PULLW ZPChunkNewOfs @@ -467,13 +467,13 @@ CS.RUN.WriteStore >PUSHWI 3 >PUSHEA.G CHUNK.HEADER lda hDstFile - >SYSCALL fwrite + >SYSCALL FWrite bcs .9 >PUSHW ZPChunkLen >PUSHW ZPSrcBufPtr lda hDstFile - >SYSCALL fwrite + >SYSCALL FWrite bcs .9 >PUSHW L.MSG.STORE @@ -569,5 +569,5 @@ PAKSTAT .BS S.PAKSTAT DS.END .ED *-------------------------------------- MAN -SAVE USR/SRC/BIN/PAKME.S +SAVE usr/src/bin/pakme.s ASM diff --git a/BIN/SH.S.CL.txt b/BIN/SH.S.CL.txt index cbcaf58f..203eb5a3 100644 --- a/BIN/SH.S.CL.txt +++ b/BIN/SH.S.CL.txt @@ -300,10 +300,11 @@ CL.PrintEOL >LDA.G CL.Ptr CL.PrintEOL.8 clc rts *-------------------------------------- -CL.PrintCLBuf >PUSHW ZPCLBuf - - ldy #S.PS.hStdOut +CL.PrintCLBuf ldy #S.PS.hStdOut lda (pPS),y + >PUSHA + >PUSHW ZPCLBuf + >SYSCALL FPutS rts *-------------------------------------- diff --git a/BIN/SH.S.CORE.txt b/BIN/SH.S.CORE.txt index eb172382..b6c806fd 100644 --- a/BIN/SH.S.CORE.txt +++ b/BIN/SH.S.CORE.txt @@ -245,9 +245,11 @@ CORE.Run.7 jsr CORE.GetCharNB jsr IO.Pipe.Out bcs CORE.Run.Exit - lda #S.PS.F.HOLD+S.PS.F.CLOSEONX Run in the background... - tsb CORE.PSFlags ...and close PIPE OUT on exit - + lda #S.PS.F.HOLD Run in the background... + trb CORE.PSFlags + lda #S.PS.F.CLOSEONX ...and close PIPE OUT on exit + tsb CORE.PSFlags + jsr CORE.ExecCmd php diff --git a/BIN/STAT.S.txt b/BIN/STAT.S.txt index b1185eb8..b7beba27 100644 --- a/BIN/STAT.S.txt +++ b/BIN/STAT.S.txt @@ -121,7 +121,7 @@ CS.RUN.DUMP lda ArgFile >SYSCALL PrintF jsr Mod2CSTR - >PUSHW L.MSG.MOD + >PUSHW L.MSG.Mod >PUSHEA.G MOD >PUSHBI 2 >SYSCALL PrintF diff --git a/BIN/TERM.S.txt b/BIN/TERM.S.txt index f294b817..460502d9 100644 --- a/BIN/TERM.S.txt +++ b/BIN/TERM.S.txt @@ -81,7 +81,7 @@ CS.RUN lda #1 CS.RUN.LOOP >SLEEP lda hDev - >SYSCALL feof + >SYSCALL FEOF bcs .99 tay bne .2 EOF, no char @@ -89,7 +89,7 @@ CS.RUN.LOOP >SLEEP >PUSHWI BUFSIZE >PUSHW ZPBufPtr lda hDev - >SYSCALL fRead + >SYSCALL FRead bcc .1 .99 rts @@ -97,13 +97,13 @@ CS.RUN.LOOP >SLEEP >PUSHW ZPBufPtr ldy #S.PS.hStdOut lda (pPS),y - >SYSCALL fwrite + >SYSCALL FWrite bcs .9 .2 ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL feof + >SYSCALL FEOF bcs .9 tay bne CS.RUN.LOOP EOF = true, no char from STDIN @@ -112,7 +112,7 @@ CS.RUN.LOOP >SLEEP >PUSHW ZPBufPtr ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL fread + >SYSCALL FRead .3 bcs .9 >STYA ZPBufLen @@ -123,7 +123,7 @@ CS.RUN.LOOP >SLEEP >PUSHW ZPBufLen >PUSHW ZPBufPtr lda hDev - >SYSCALL fWrite + >SYSCALL FWrite bcs .9 jmp CS.RUN.LOOP diff --git a/BIN/UC.S.txt b/BIN/UC.S.txt index fcf49627..250e4be2 100644 --- a/BIN/UC.S.txt +++ b/BIN/UC.S.txt @@ -104,7 +104,7 @@ CS.RUN >INC.G ArgIndex *-------------------------------------- CS.RUN.LOOP ldy #S.PS.hStdIn lda (pPS),y - >SYSCALL feof + >SYSCALL FEOF bcs .99 tay @@ -265,7 +265,7 @@ CS.RUN.GetNewPath >SYSCALL StrCpy >LDYA ZPFileName - >SYSCALL strupr + >SYSCALL StrUpr >PUSHW ZPFileName >LDYA ZPNewPath @@ -341,9 +341,7 @@ hFile .BS 1 hMem .BS 1 .INB usr/src/bin/x.fileenum.g - -DS.END - .ED +DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/uc.s diff --git a/SYS/KERNEL.S.STDIO.txt b/SYS/KERNEL.S.STDIO.txt index 04d9a076..373419d4 100644 --- a/SYS/KERNEL.S.STDIO.txt +++ b/SYS/KERNEL.S.STDIO.txt @@ -17,17 +17,14 @@ K.PutChar >PUSHA character ldy #S.PS.hStdOut lda (pPS),y jsr K.FPutC - bcc K.PutChar.RTS + bcc .8 - cmp #E.NODATA - sec - bne K.PutChar.RTS + tay + bne .8 - inc 0 = BLOCKING + >PULLA CS,A=0:BLOCKING, restore A -K.PutChar.RET1 inc pStack - -K.PutChar.RTS rts +.8 rts */-------------------------------------- * # fputc (BLOCKING) * Print A (char) to hFILE @@ -42,7 +39,7 @@ K.PutChar.RTS rts * CC = success *\-------------------------------------- K.FPutC jsr PFT.CheckNodeA - bcs K.PutChar.RET1 + bcs .8 lda (pStack) character sta K.IOBuf @@ -54,13 +51,16 @@ K.FPutC jsr PFT.CheckNodeA >PUSHWI K.IOBuf buf jsr UNISTD.Write - bcc K.PutChar.RET1 pop char... + bcc .8 pop char... + cmp #E.NODATA sec - bne K.PutChar.RET1 + bne .8 - inc 0 = BLOCKING -* sec + inc CS,A=0:BLOCKING + rts + +.8 >POP 1 rts */-------------------------------------- * # puts (BLOCKING) @@ -74,12 +74,13 @@ K.FPutC jsr PFT.CheckNodeA * ## RETURN VALUE * CC = success *\-------------------------------------- -K.PutS >STYA ZPPtr2 +K.PutS >STYA .1+1 ldy #0 -.1 lda (ZPPtr2),y +.1 lda $FFFF,y SELF MODIFIED beq .2 + sta K.IOBuf,y iny bne .1 @@ -95,27 +96,26 @@ K.PutS >STYA ZPPtr2 lda #C.LF sta K.IOBuf,y - iny beq .9 lda #0 sta K.IOBuf,y - >PUSHWI K.IOBuf - ldy #S.PS.hStdOut lda (pPS),y + >PUSHA + >PUSHWI K.IOBuf + jsr K.FPutS + bcc K.PutS.RTS - - cmp #E.NODATA - sec + tay bne K.PutS.RTS - inc 0 = BLOCKING + >LDYA .1+1 CS,A=0:BLOCKING, restore Y,A -K.PutS.RET2 >POP 2 pop K.IOBuf +K.PutS.RET3 >POP 3 pop StdOut & buffer K.PutS.RTS rts */-------------------------------------- * # fputs (BLOCKING) @@ -124,30 +124,33 @@ K.PutS.RTS rts * `int fputs (hFILE stream, const char * str );` * ## ASM * **In:** +* `>PUSHB stream` * `>PUSHW str` -* `lda stream` * `>SYSCALL fputs` * ## RETURN VALUE * CC = success *\-------------------------------------- -K.FPutS jsr PFT.CheckNodeA set IO.hFD - bcs K.PutS.RET2 +K.FPutS jsr PFT.CheckNode2 set IO.hFD + bcs K.PutS.RET3 lda (pStack) sta ZPPtr2 Get String ldy #1 lda (pStack),y sta ZPPtr2+1 -* ldy #0 - dey + + ldy #0 ldx #0 .1 lda (ZPPtr2),y beq .2 + iny bne .1 + inx bra .1 + .2 txa >PUSHA push len HI @@ -156,14 +159,15 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD >PUSHW ZPPtr2 jsr UNISTD.Write - bcc K.PutS.RET2 + bcc K.PutS.RET3 cmp #E.NODATA sec - bne K.PutS.RET2 IO Error + bne K.PutS.RET3 IO Error + inc FF-> 0 = BLOCKING -* sec -K.FPutS.RTS rts + +K.FPutS.RTS rts */-------------------------------------- * # fgets (BLOCKING) * read bytes from stream into the array