From 7d375741125052c8ce1c0c71d4c389c24ac745a2 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 11 Jul 2017 17:53:52 +0200 Subject: [PATCH] Kernel version 0.9 : SHELL, enhancement in Batch mode....(Cont.) --- .Floppies/A2OSX.BOOT.po | Bin 143360 -> 143360 bytes .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes BIN/ASM.S.txt | 2 - SBIN/SHELL.S.CMD.txt | 44 ++++------ SBIN/SHELL.S.TXT.txt | 177 +++++++++++++++++++++++++++++++++++---- SBIN/SHELL.S.txt | 13 +-- 7 files changed, 184 insertions(+), 52 deletions(-) diff --git a/.Floppies/A2OSX.BOOT.po b/.Floppies/A2OSX.BOOT.po index b0f6222521f42c52039cfcba17b0c29958965cfb..51dcb739d001d76903906b845383097272cada26 100644 GIT binary patch delta 2849 zcmZvedrTBZ7{F)lv7QLRp$HL>VUOqD!vi1OT@``5!=4`82?tX9@Y*J=CdTw(Ta_kU zRE#lNaWP#f(%@PQ7{TRCH2s5Al4@NW?JA~ej8sTtrNPIxHE7yuI=jbf5B87UZ)U#V z_nL2KH#DRR4e7Wvje3+^-khPyip5X80sIDlG~v^vE*qav1tdWQ23%FOVA>VG5kLS` zlDfpnYRzpkx!cucp33Q5>nz;pOm4s(a8AQOd@P*l&#q0K3>-;;2eqkj;}OZ3=$TAWi5gkh8wRQdvFapYQ@TD4I-GR%>nxq^_9oHO^6( ztF3lbd1~Eq>_h-)z;-QAs-1_b1u$HjRu_q6L{5KRp}0l!^Ar{j{&uk8=c9SWvWP5F7M#b&8YO2x7hU{wQ3cru@+*8b z)$Xa#iCs7Vjk1vXjm=Qy4|8edk$Q|p*JCWI9`zv4>nU4XUT5)*cL>pl&Hkb^+uSx5 z6;3^%Fc)z8J^pc$I0Ol3eSKtqo~IQ{@h}-HVP^cV^A$RbZzYThsue8qRN}3l zdP#^*yh&`N4W%~=N!HqC0khY-1A*73nw{vu**KKhFr%}9axT-rFwlazgfdin5mfFI z6T~yh&TR#`E_e0%fX_c+jQ9@6a8enAzE#>N`nj&IBj#&aF@XBe;Y=SnN~w)HV}cPG zJE${M4@H}3Gi~|GLK%yUVQMJra!zLMgWP+$_p@BN>YP8bf5>@2?V&1+Zy5nVn@RQq z1p0U=x|xjkVG6Uu1})IRoU+0E(kHoGMSDvxDXP8OGP?jxwjVo6qDGP{Vz*(4y?}4r zQ*>O?V!%_8m5z8A6;Ez03?5h8hGdQX81Nc8E?pph_bo9b~^;1+(&BkSW0-oxF;L z7%V)%9g=&@ZoHjJ|hlMb2;o*1;SJMgHnV4w9)J7htxwS_hvqD{wdS;eHQy;f}Hu_VvM z@<Gsz+lgL^J%)#@ z3*R`kcUf-m1c>c!HuFnGLu8fNPz=)<^BTxvlfoK^(l_J6b^T0@TU@?5e{8$1vHDrYnC2Mix zI&w4#U2$?1xj9`ivLHMBunS22(?OkzM}7<%CAOkFq0x*b=t# z@#2%kw6zoaI%>rP^G7L6Ppw4ztvx=pzn~r5w2IoRm-NE3Za-?Yc5k?tSq61b^MXV# z7_$?a9mDzU0O=`i1B$2kI57)1(4__uAsfY|;_*V1Lp6;a$FISud`|tj7lj?6yLj=q zn8ECK!pzm1y4Rz#>!zB5xUAG~Qo83%x|B%9_x;RRv)nEZ_Aq%7kHI`}I#CI> z%>o*nrPDb;0H_8#qv|y}9h7bMgPd|-RmC)x&|vUo)DGD%&nPsWnLklMDII-3{;Yj= R;R;Nvk{at`Mv7`U`G03PZf*bo delta 2687 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 delta 3960 zcmZu!4{#La72n&vyCfGv4ni;l3}5!{NN(@n-nUC~gntzSA|3-wk&eL`Pm2Xw;*2x4 zRzPnN5)n8|(8+>L+U-{U9L=Vih%&TICr%5!O$ArbswhLOe@GyN1(ASGwePz`z>e9> z_r3T1dGCGi{oeb&lO!xjSbxKAKgYVpy?E5Vn>o)$Urjjr_7zSaOFhk&xINS-6oSFc zOWF@FX}2BOu!wT~mLh*k(Gm1~`F-p>u8w<%Tg^SmQJjOz;|2l)!GX}_&?astSHOMb zeRJCMiW?P|D?awFsBlfY?mIE<749{TqR>itMJ2t|7MJ%|(*C<_mHJ|3PbX_J@ipaX zY8R`#)XbtytX{3ILsYl=IyCxKw7tBGbzk%+cd@98?P9GnXm#aY&nql)%j5hsYuhf1 zetO2Z2mJbkkp)*rXP@!Y^U&GAnX>`Q(Q96p`0h^w2m6rjKwp(hp1!2%K;N=*pPxo{ zvv`}jkE3bX9;Chg8*E9UFE=|4gbRopl|bYJag-3nCS8&!Nub5@vLOA-nnBiL4P*@) z9;-A1CjfrDfy}F;w3E!4pYPtqCbn65y`S?Y{du&DPk{245M8`l2&+%PNgJYD_|u9_ zr8@aN1A!d_f!!y0t2ooigQy`w=K>LQLQFp-}Z8~ZfQG>7rt5g@ZV#fyp zruV>+fq?OFlhfFs)Aypcu{nOLIf$N>H-_k`^guvv3(<m#b<)yUL%u1(?r6wj5q3pzbWcmn)vK(uc5Txr-QX;OdusxLc= ztUX=4QD|K%-NhdOUClh~kl%~acTQe}8u^au(y?YZS^Tu-t&Do}`rrV|tEJU|K)`u#^`ei|#n) z-Rs%qg_hmr)$T;?Q&2W=C32rYN934D2jsmXJ@4=ZkuGLlbkphAWAqz4vxVUB(PQ+6 zKe#tcpiFj}D_a3beUO*_oZ0O#*^05R?YH?D8*D0Sd4$eQ4i*k)E5ac(h_;pQD1VuM zG`cbRLiG31gV94#M|6CYi!P4V;v8{|7!gI$DGWvjBS*{sS#Fg7tNeKR-Ryk!N%)>( zH?U8$o7l~4n*9rVl6~g~zw7LEmh(L2Y4vn@4tYNGoZ&oYJs*2M@kqSOQ|OuCndB++ zcsy0U+rOA^iEpiMt=zeeDa-$bPcK3L3F$@XkbHU_vnZ+fbRGbV9-h|38F7I-HX%(1ol)cfie~7fl3{+e<2!Ixn|)pFY&h~;%p~CH|lq? zVNEOnJC;Ch%4=I3fhHey;DdHMh|p5g*}7Ot-a>8_}YrJ0!zR`w{lLUz{X})RyTnW zt)BGW7?j%YzSanCq}eOt*4gWjfim zYP_}AJq&|rVMuqKunXuSr>~ak4KHNZqJaLO^oZdD@_ImDCjG>i2BZ?u7fA7>QDGL5 zGtEQ;-fRy85o!8S)+{EhH%}U!U=7xsC{01-A-#|&xaQTJQUOqKd^lVBAQZ(2wj3zz z(=U>(=fIPF=u)uhLsSsbKinC?Bf*)AiK*Xsh>1t<2Rvj$h|NDkK&{tMXIMX!NLAz3 z7;c?`TWfGat48fr2*rcCJaQeNSHn%kS?_O4_oO1?=;+i)0yL};+p1->nVDEN7e5VH zsK)(U%`ckhw3<*U#UAUPi~mc8<>i|h@6rp=wRVWrLAa72ROWTXdF0b*+hDYJtD8hE zkqY7L1wrnv)-YCVa9c$z52Qp0a)I0*Btz8Y0IyUSr$TaOGjoqEB)hjTvkSxEj_fVA zrZUlL7vu-GFg}|gKf8tT76}#lMlDB330TV&QX*Ya8vwetvkt(R)|i_iba zv_EgNkVUDK73*pe zYjBsSoavrDlC^g$FR%lB3UVEK$C#laW?E1RYo}vD9;rM%7MAkohvr8gh@-O z95Lk-OA^{_)IJNL=Ah1OoP)kgD)g4T{W)fK1$YhK2{Q+sf_Vj1a{7X%vW{A8O;V}; z?pi#0%MI4bm!4yA@^0K(i%Gss00_GQ!g|3_Er#`NwOBd_&Vqs!p*lqi*Qwujikbd1tFT!%2+fuC3I!T6 zM^@ovKj?WA#=h8Di{oK#{qES~;sL2wa|kKBKq3WoWNJ2>Wg-2pn@0b?V3_o}$e+r%!ncce^_oLJD0o!vJR@q^4c@Hr z+eU3BMc+egE+aN4Cyg$cu;_bobEJ2^XDz7-1SNhFeXn9`9_6Nlno5nZHPLv8yppYA zBAB44DW9A%)6DmvrguTo?p=IIA}a*04xzOQ12TAvJDvoPmei?KroWRv19W~Cwd*^o za7lt-fj=-*h2dX1IdUsZO63TOjacFWbX0^aZUNg%BEa+VKc@CkbxG;!R<^%5){}$!Ek~E$93xgp6IX( z-B7BSA-e#@8oR)&shJqEolC`VY8KXJ05t=rW@EVExl|2K&B5>!i2fcZDgYF)xqc=A zAMCB4g<&^rt)GoyvsUB6^>Z+6PQ?E%f3%&MvTp}NCllIK)Lu67eo;=PC%})BZ4tCC z0#$)r(JBQr)QxPl8es~={=qS#c@;{yfU>U|44sxIl0vTKj&%7Wool2kN9|}tg+3kR zS(6t+OO~&ZpWMm#lEvYh*EhMw8)j^YffWkZ$)=)M@k56(*|#)xzc^yVirXz(2^Q6X zMcWj|+cC2oN>Zk~P6Toy8NQ-nkkQO)Ac|{d<1drrSt>NrwOCfyPf<%m2|yhUj$^Hy zGzHaJX8}twLQKl^ILxb^v4eyelNlMb_nKcq8Ec7XAyUhArxq6D?U4jA`9NpYLej${ s%XAUrfj}=Ge&z*cy|b}}X>74Kwm2GFfX-=b$!%=OYix1tYso+VKW_{f#sB~S diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index 604640984be657a7ee931c5aafe8d38cad1664b6..c7e5d042334c70c75e952a085c75902aaf203329 100644 GIT binary patch delta 19048 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 - jsr SYM.Quit ldy #ASM.T.hMem diff --git a/SBIN/SHELL.S.CMD.txt b/SBIN/SHELL.S.CMD.txt index 3e6efd50..c721984d 100644 --- a/SBIN/SHELL.S.CMD.txt +++ b/SBIN/SHELL.S.CMD.txt @@ -7,7 +7,7 @@ AUTO 6 *-------------------------------------- * Y,A -> Command line (formatted & not empty) *-------------------------------------- -Cmd.ExecYA stz Cmd.Exec.Mode +Cmd.ExecYA stz bStartProc Cmd.ExecYA.1 >SYSCALL ExpandPStrYA >STYA ZPPtr1 @@ -17,14 +17,8 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA ldx #0 ARGS len lda (ZPPtr1),y -.10 -* cmp #'a' -* bcc .11 -* cmp #'z'+1 -* bcs .11 -* eor #$20 to Uppercase -.11 sta CMD,y Store Cmd in Buffer +.10 sta CMD,y Store Cmd in Buffer sty CMD update CMD len tya @@ -51,7 +45,7 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA pla >SYSCALL FreeMemA - >LDYA L.CMDS + >LDYA L.INTCMDS >STYA ZPPtr2 ldx #0 @@ -98,8 +92,7 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA sta ZPPtr2 bcc .1 inc ZPPtr2+1 - bra .1 - + bra .1 *-------------------------------------- Cmd.Exec.EXT ldy #1 lda CMD,y @@ -187,7 +180,7 @@ Cmd.Exec.EXT.BIN >SYSCALL PStrCat .1 >LDYAI UsrBuf256 - bit Cmd.Exec.Mode + bit bStartProc bmi .2 startproc >SYSCALL ExecProcessNewEnvYA @@ -206,10 +199,7 @@ Cmd.Exec.PWD ldy #S.PS.hPREFIX >SYSCALL GetMemPtrA >SYSCALL PPrintFYA bcs .9 - lda #13 - >SYSCALL PutCA - lda #10 - >SYSCALL PutCA + jmp Cmd.Exec.ECHO.CR .9 rts Cmd.Exec.CD1 stz UsrBuf256 @@ -324,7 +314,7 @@ Cmd.Exec.STARTPROC lda ARGS beq Cmd.Exec.ERRSYN sec - ror Cmd.Exec.Mode + ror bStartProc >LDYA L.ARGS jmp Cmd.ExecYA.1 @@ -432,26 +422,26 @@ Cmd.Exec.TIME clc >LDYAI UsrBuf256 >SYSCALL PPrintFYA - bcs .9 - lda #13 - >SYSCALL PutCA - lda #10 - >SYSCALL PutCA -.9 rts + bcs Cmd.Exec.ECHO.RTS + bra Cmd.Exec.ECHO.CR *-------------------------------------- Cmd.Exec.ECHO lda ARGS - beq .1 + beq Cmd.Exec.ECHO.CR >LDYA L.ARGS >SYSCALL PPrintFYA - bcs .9 + bcs Cmd.Exec.ECHO.RTS -.1 lda #13 +Cmd.Exec.ECHO.CR + lda #13 >SYSCALL PutCA + bcs Cmd.Exec.ECHO.RTS + lda #10 >SYSCALL PutCA -.9 rts +Cmd.Exec.ECHO.RTS + rts *-------------------------------------- Cmd.Exec.READ lda ARGS beq .9 diff --git a/SBIN/SHELL.S.TXT.txt b/SBIN/SHELL.S.TXT.txt index 2ae65a62..80270fda 100644 --- a/SBIN/SHELL.S.TXT.txt +++ b/SBIN/SHELL.S.TXT.txt @@ -6,35 +6,47 @@ AUTO 6 .LIST OFF *-------------------------------------- TXT.Exec jsr TXT.GetBuffer - jsr TXT.GetChar + + ldy #0 + + jsr TXT.GetCharNB bcs .9 -.11 cmp #' ' - bne .10 - - jsr TXT.GetNextChar - bcc .11 - bcs .9 - -.10 ldy #0 + jsr TXT.SavePtr Save Ptr, in case of while,for.... cmp #$0D - beq .2 + beq .6 empty line...skip... .1 iny sta (pData),y cpy #CmdLine.MAX - beq .2 + beq .7 Buffer full, try execute... jsr TXT.GetNextChar - bcs .3 - cmp #$0D - bne .1 + bcs .7 EOF, try execute... -.2 jsr TXT.GetNextChar Skip CR + cmp #$0D EOL, skip CR and exec... + beq .6 + + jsr TXT.CheckCharNB + bcc .1 still in keyword....loop -.3 tya + tya + sta (pData) + + jsr TXT.CheckKeyWord + bcs .5 not an internal SCRipt keyword.... + + jmp (J.TXTCMDS,x) + +.5 lda (ZPBufPtr) restore char.... + bra .1 + +.6 jsr TXT.GetNextChar Skip last char... + +.7 tya + beq .8 empty line....nothing to do.. sta (pData) ldy #bEcho @@ -47,6 +59,53 @@ TXT.Exec jsr TXT.GetBuffer .8 clc .9 rts *-------------------------------------- +TXT.CheckKeyWord + phy + >LDYA L.TXTCMDS + >STYA ZPPtr2 + + ldx #0 + +.1 lda (ZPPtr2) + beq .9 Ending 0, not found.... + + cmp (pData) Same Len ? + bne .4 + + tay + +.2 lda (pData),y + + cmp #'a' To Uppercase + bcc .3 + cmp #'z'+1 + bcs .3 + eor #$20 + +.3 cmp (ZPPtr2),y + bne .4 + dey + bne .2 + + ply + clc Found an internal Cmd... + rts + +.4 inx + inx + + lda ZPPtr2 + sec + adc (ZPPtr2) + sta ZPPtr2 + bcc .1 + inc ZPPtr2+1 + bra .1 + +.9 ply + sec + rts +*-------------------------------------- TXT.GetBuffer ldy #hBatchFile lda (pData),y >SYSCALL GetMemPtrA @@ -75,7 +134,33 @@ TXT.SetBufPtr ldy #BatchFilePtr sta ZPBufPtr+1 rts *-------------------------------------- -TXT.PushPtr +TXT.SavePtr rts +*-------------------------------------- +TXT.PushPtr rts +*-------------------------------------- +TXT.GetCharNB jsr TXT.GetChar + bcs TXT.GetNextCharNB.RTS + jsr TXT.CheckCharNB + bcc TXT.GetNextCharNB.RTS +*-------------------------------------- +TXT.GetNextCharNB + jsr TXT.GetNextChar + bcs TXT.GetNextCharNB.RTS + jsr TXT.CheckCharNB + bcs TXT.GetNextCharNB +TXT.GetNextCharNB.RTS + rts +*-------------------------------------- +TXT.CheckCharNB cmp #32 SPACE + beq .9 + cmp #13 CR + beq .9 + cmp #10 LF + beq .9 + cmp #8 TAB + beq .9 + clc +.9 rts *-------------------------------------- TXT.GetNextChar phy ldy #BatchFilePtr @@ -94,7 +179,7 @@ TXT.GetNextChar phy inc ZPBufPtr bne TXT.GetChar inc ZPBufPtr+1 - +*-------------------------------------- TXT.GetChar lda ZPBufPtr eor ZPBufEnd bne .1 @@ -110,6 +195,62 @@ TXT.GetChar lda ZPBufPtr .1 lda (ZPBufPtr) clc rts +*--------------------------------------- +TXT.IsLetterOrDigit + jsr TXT.IsDigit + bcc TXT.IsLetterRTS +*--------------------------------------- +TXT.IsLetter cmp #'A' + bcc .9 + + cmp #'Z'+1 + bcc TXT.IsLetterRTS + + cmp #'a' + bcc .9 + cmp #'z'+1 + rts CC if lowercase + +.9 sec + +TXT.IsLetterRTS rts +*--------------------------------------- +TXT.IsDigit cmp #'0' + bcc .9 + cmp #'9'+1 + rts cc if ok, cs if not + +.9 sec + rts +*-------------------------------------- +TXT.Exec.IF jsr TXT.GetCharNB + bcs .9 + cmp #'(' + bne .9 + + jsr TXT.ExpEval + bcs .99 + tax + + jsr TXT.GetCharNB + bcs .9 + cmp #')' + bne .9 + + txa + + + clc + rts + + +.9 lda #SYSMGR.ERRSYN + sec +.99 rts +*-------------------------------------- +TXT.ExpEval lda #1 + clc + rts *-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 03ce39e9..9f4c5ef8 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -55,7 +55,7 @@ L.TIME .DA TIME L.STAT .DA STAT L.FMT.DATE .DA FMT.DATE L.FMT.TIME .DA FMT.TIME -L.CMDS .DA CMDS +L.INTCMDS .DA INTCMDS J.INTCMDS .DA Cmd.Exec.CD .DA Cmd.Exec.DATE .DA Cmd.Exec.ECHO @@ -66,6 +66,8 @@ J.INTCMDS .DA Cmd.Exec.CD .DA Cmd.Exec.SET .DA Cmd.Exec.STARTPROC .DA Cmd.Exec.TIME +L.TXTCMDS .DA TXTCMDS +J.TXTCMDS .DA TXT.Exec.IF L.ERR.Codes .DA ERR.Codes L.ERR.Messages .DA ERR.Messages .DA 0 @@ -495,7 +497,7 @@ CS.END ENV.PATH >PSTR "PATH" ENV.PWD >PSTR "PWD" ENV.PS1 >PSTR "PS1" -CMDS >PSTR "CD" +INTCMDS >PSTR "CD" >PSTR "DATE" >PSTR "ECHO" >PSTR "EXIT" @@ -506,6 +508,8 @@ CMDS >PSTR "CD" >PSTR "STARTPROC" >PSTR "TIME" .HS 00 +TXTCMDS >PSTR "IF" + .HS 00 *-------------------------------------- MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n" MSG.PROMPT >PSTR "%S$ " @@ -525,8 +529,8 @@ TIME .BS S.TIME STAT .BS S.STAT hNEWPATH .BS 1 hCmdLine .BS 1 -Cmd.Exec.Mode .BS 1 hFullPath .BS 1 +bStartProc .BS 1 *-------------------------------------- .DUMMY .OR 0 @@ -545,8 +549,7 @@ CmdHistory.END .BS 1 hBatchFile .BS 1 BatchFilePtr .BS 2 BatchFileLen .BS 2 -DS.END - .ED +DS.END .ED *-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S