From cf29180a686889b4955e431728758c47033bcade Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Wed, 25 Oct 2017 17:34:23 +0200 Subject: [PATCH] Kernel 0.9.1 : SHELL, CSH style scripting.....(wip) --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes SBIN/SHELL.S.CSH.txt | 373 +++++++++++++++++++++++---------------- SBIN/SHELL.S.txt | 73 +++++--- 4 files changed, 268 insertions(+), 178 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ca130cbdb1e156bd49cba9f80068e18ea788697b..f974d1fbbda033cfbc85aad664d40e4f870e670d 100644 GIT binary patch delta 1828 zcmZuxdu&r>6uj>oK5l+)g>>)PAf$0n=7*ziS5svEu%M9rOZb5q3|kC-82{i}#=;gJw?zdtm}xZb;_GTOD!xe2g{X-aollf`Zu!f^H0SI2&i6aN z^Zm~Ga+Aq$G8tCxHJjG)OOHwBdQ!HYVQ%MxB|LMMVb<{r%E;3!Y06m|#!7n@GJQ_F z%{T#s4>le;-gt<8xp&}*ZG>sCF-$*1McC<6`{}kkA#}MP2Mm6^E>1H)_czT zqxVJc3GX{z%^M7_3NsAscESl>S(>wz7g=_f%eHK}Zi@flfhTC%LzXnH2q=Cd2SMWKXcRq%(0Pyr5 z4{@{O)Kx|Nb!}Ct#cEvlMPW>Am#yjYsBFn{#qCl)zXUULE`1*GE`>}m#<^XZU?Ng( zk!=AC(Op&Krpkw_b@M6PA9iV^crp=$GmvULGoYE`e7>kUr`K_5&MuF82`OaHbNYhQ z&j_TNZKgE>xwhmxr(Lp3kO>0sh4*N$Kza(E<>UM5F9P}LD!WT}s-XX_@;aAxO#|*1 zsG!Z}eLCkSgYdp5aUEEqa%q;!yn!vi{&BiF@3wm+c%NoOvZ{2VB2^+6Wy>>fA_OMr z&myT}N9mFP;n}maA%MHH^q~L=6pgwvV~B~5(oBG?XMd#^17r`*$Q~bcO?(i+HRsfS zo0yZ!(%b=l%sK2Bg7`Q+79_1mctwafY@@E7X{T|PdF>L@nh+5SMqTlJG!Y_02xG&f zW$8Y5))03z2WqK)p4$xvv(7YV-{(L-i`D30mw;%EG&0zi+Ej3WI*7SY4hcniz;k(CCwytXsFLR=o(DKQ*VFPtNS6 zGu7mQ0fS+k>e22r7@Cj(pD2c6YL#}q5o%C-wQJ!8f9i5$7nXao+$7|@if5t^PWu&y zlwqM+RLT)%I+vV9J^F}lIi-D%QG9M#KCuzvr~OfRQ7ziunkHC)usY4CMY4}c2(+feF@5T7}W z816w3x28SQsLxoNMHryFmJyK%B7JQcX!whI- z#xZ?L`xzUuB_bKj9|_w3C(yOEWKo3yQ42JS+=mJm*`+);en9%lIOO?jQvWd`+35qd zq;fn$3h9%z#O>}DQ@`z%WM&%QnHdK1J7XH9&?u&gjTd4@kA7N9Jk|@r{5JgVr2GTIojCw3wRe$x3zyy}q8r z#v6!*K3Pxh@qXu&H{dLH1ozroF)M|V0b_I1SxCFIKljQk4uzz-__MSuN;Y3r;^_DJ zy@854cj7+xij}O7^|KDPpZI*l@277?iHq)uk`VnTN*n?6{hL~wAGWk~b@p_0Zf-4T zX>Zgen#*wEGapt)^BS91?jxN#Fk+Dt87k5Vy4ZrHwtytKw7_FH3hF<)r8)!NYp xp4jo~Y13Qm_$d>i-7)giOYfRCn|2gvh83Wh(F)P#p;^$1(29>2XqWwc^k2MbriB0i delta 1672 zcmZuwX>1cm6y6;laZC;;4Uw}Dcs}CzT3nW$_hQm|qyC#o{bLgDh%J>z17@ykE@pnvDhp z0cw7*X*AO`%3kU2Uu-zQEHg07ULbJ9w9D-Ahx|?c_x-K@PXA(Goo~5sg|E;5vHx%L zHSZ~}*7BBbx}vx8=gO=0%l1Djko~glko_}Tf8|NvZ@x3mFPvXGFFMsOwd=%xzWuHN z*XRDUpJCt=Go&rT{B&uq?nEi+H>65sRp`DQO1#3Xu`(DnLZStj@i56vaZ(4#r?>`g zc!V&~q&P!P!bU;i9q2PljbwX@qt4AHIBkKnS*T4+QEg|2TNA@ z5xia~w+bl9koOgPucLK8Jrs26Ud`v&m?5r9p_8jQIE%fmt zJ=;LcryNi64Y1PL28EuOmU2`dSvs}~M&AS2>=bmzNOzp;Sq*T>EmQ!FF<-2ej4;Uy zudRh4*FK>Ts(3*!)?@=E`-5R%VIhS&LZCZL9c`%G0Ex+;HWq7=G z5vuA>vJrg}MYKs(1SQp^C(glNys(1yX1S7}mR2MLY2ug{*0=?~lHDQJ$a850CdFXx zOa-%P1&U)nEh3lh)7#Y@3};KB9$lhc+OAk{q2&tgN{~&WLs}1${k*VF?3PxO-V`@c z^y-)G)RuIoI8iSf8pzHR2dzBWk)7J8D%g{~%47;BSa`?_r8I)-*T@sftb9z?-IRW( zyR-s@2t}bpAGRq&<*Ut*TPb0Q=#Xm`(!=M<$JEL4h+*yt0{69jf>ASdHjch}8 z$Yy)V$DR&{2{S>vtpUA9St*Sugxh>fudt(`8V=PVJ3Ie;5NY%L*;gJ^9;*%SuS4T= zcESLBwF?GJg!vw1&BV1L>DgEp9EP#ocuhT8&lclMJ!%|kKpz z-q^Nbr>cEhm%5{K+eezs9i1Dx@YY89`j`S!pNn^TD{5^$AKI4I;qgZF#?UR*@qv}- z>y;``pQe2?*!`KB3DtFW(13L3Z>mt{_$}3L6*d9N0P)ILx&QzG diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index d41ef49867c10d242ef99a073d6a15b80b4c5c52..56cfffb425562a2539c1668c1cb3e6e2b0f12176 100644 GIT binary patch delta 16681 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 delta 15752 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 Day?uw diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index 02ed1580..5af4d99d 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -64,7 +64,7 @@ CSH.Run lda #0 cmp #'}' End of block ? bne .1 - jsr CSH.CheckStack must be on stack.... + jsr CSH.CheckStack must be something on stack.... bcs .9 jsr CSH.Pop was expected, get stacked Cmd... @@ -88,7 +88,8 @@ CSH.Run lda #0 bra .9 error, todo : PREOPS ++ --..... .3 >LDYA L.CSH.KEYWORDS - jsr CSH.Lookup + jsr CSH.LookupID + bcs .4 not an internal CSH keyword.... txa @@ -184,63 +185,103 @@ CSH.Quit >LDA.G CSH.hBuf .8 rts *-------------------------------------- -CSH.SavePtr >LDYA ZPCSHBufPtr - >STYA.G CSH.BufPtrSave +CSH.WHILE +CSH.IF jsr CSH.GetCharNB + bcs .9 + cmp #'(' + bne .9 + + jsr CSH.GetNextCharNB + bcs .9 + + jsr CSH.ExpEval + bcs .99 + + jsr CSH.GetCharNB + bcs .99 + cmp #')' + bne .9 + + jsr CSH.GetNextCharNB + bcs .99 + cmp #'{' + bne .9 + + jsr CSH.IsACC0 + bcc .6 eval returned ACC=0, skip {{....}} + + jsr CSH.GetNextCharNB Skip '{' + bcs .99 + + >LDA.G CSH.CmdSave Push "IF" or "WHILE" + tax + jsr CSH.Keyword.start + bcs .99 + + lda #'}' Tell '}' is expected at the end of block + jsr CSH.Push + bcs .99 + rts -*-------------------------------------- -CSH.RestorePtr >LDYA.G CSH.BufPtrSave - >STYA ZPCSHBufPtr - rts -*-------------------------------------- -CSH.Lookup >STYA ZPPtr1 - jsr CSH.GetIdentLen - - phy Y = kw len - - ldx #0 - -.1 lda (ZPPtr1) - beq .9 Ending 0, not found.... - - pla - pha Get Back Len - - cmp (ZPPtr1) Same Len ? - bne .4 - - tay - -.2 lda (ZPPtr1),y +.6 ldx #1 expecting 1 '}' for now.... -.3 dey - cmp (ZPCSHBufPtr),y - bne .4 - tya - - bne .2 - - pla Found keyword... - clc - adc ZPCSHBufPtr ..advance Ptr to char after it.. - sta ZPCSHBufPtr - bcc .8 - inc ZPCSHBufPtr+1 - clc -.8 rts - -.4 inx +.7 jsr CSH.GetNextChar + bcs .9 + cmp #'{' + bne .71 inx + bra .7 - lda ZPPtr1 +.71 cmp #'}' + bne .7 + txa + beq .9 + dex + bne .7 + + jsr CSH.GetNextChar + + clc + rts + +.9 lda #CSH.E.SYNTAX sec - adc (ZPPtr1) - sta ZPPtr1 - bcc .1 - inc ZPPtr1+1 - bra .1 - -.9 pla +.99 rts + +CSH.Keyword.Start + jmp (J.CSH.KEYWORDS.START,x) +*-------------------------------------- +CSH.IF.START jmp CSH.Push +*-------------------------------------- +CSH.WHILE.START pha + >LDA.G CSH.BufPtrSave+1 WHILE : push loop address... + jsr CSH.Push + >LDA.G CSH.BufPtrSave + jsr CSH.Push + pla + jmp CSH.Push +*-------------------------------------- +CSH.IF.END jsr CSH.GetNextChar just skip ending '}' + clc + rts +*-------------------------------------- +CSH.WHILE.END jsr CSH.Pop + sta ZPCSHBufPtr + jsr CSH.Pop + sta ZPCSHBufPtr+1 + clc + rts +*-------------------------------------- +CSH.ELSE +CSH.DO +CSH.FOR +CSH.SWITCH +CSH.CASE +CSH.BREAK +CSH.CONTINUE + + lda #CSH.E.SYNTAX sec rts *-------------------------------------- @@ -253,7 +294,7 @@ CSH.LONG lda #CSH.TYPE.LONG CSH.FLOAT lda #CSH.TYPE.FLOAT CSH.TYPE >STA.G CSH.ACCT - + jsr CSH.GetChar bcs .9 cmp #' ' @@ -307,108 +348,71 @@ CSH.TYPE >STA.G CSH.ACCT sec .99 rts *-------------------------------------- -CSH.WHILE -CSH.IF jsr CSH.GetCharNB - bcs .9 - cmp #'(' - bne .9 - - jsr CSH.GetNextCharNB - bcs .9 +CSH.SavePtr >LDYA ZPCSHBufPtr + >STYA.G CSH.BufPtrSave + rts +*-------------------------------------- +CSH.RestorePtr >LDYA.G CSH.BufPtrSave + >STYA ZPCSHBufPtr + rts +*-------------------------------------- +CSH.LookupID >STYA ZPPtr1 + jsr CSH.GetIDLen + bra CSH.Lookup - jsr CSH.ExpEval - bcs .99 +CSH.LookupOP >STYA ZPPtr1 + jsr CSH.GetOPLen - jsr CSH.GetCharNB - bcs .99 - cmp #')' - bne .9 +CSH.Lookup phy Y = len - jsr CSH.GetNextCharNB - bcs .99 - cmp #'{' - bne .9 + ldx #0 - >LDA.G CSH.ACC - iny - ora (pData),y - iny - ora (pData),y - iny - ora (pData),y - beq .6 eval returned false, skip {{....}} +.1 lda (ZPPtr1) + beq .9 Ending 0, not found.... - jsr CSH.GetNextCharNB Skip '{' - - >LDA.G CSH.CmdSave Push "IF" or "WHILE" - cmp #10 WHILE - beq .1 if "IF", no need to push Saved Ptr - - pha - >LDA.G CSH.BufPtrSave+1 WHILE : push loop address... - jsr CSH.Push - >LDA.G CSH.BufPtrSave - jsr CSH.Push pla + pha Get Back Len -.1 jsr CSH.Push - bcs .99 + cmp (ZPPtr1) Same Len ? + bne .4 - lda #'}' Tell '}' is expected at the end of block - jsr CSH.Push - bcs .99 - - rts + tay -.6 ldx #1 expecting 1 '}' for now.... +.2 lda (ZPPtr1),y -.7 jsr CSH.GetNextChar - bcs .9 - cmp #'{' - bne .71 - inx - bra .7 - -.71 cmp #'}' - bne .7 - txa - beq .9 - dex - bne .7 - - jsr CSH.GetNextChar +.3 dey + cmp (ZPCSHBufPtr),y + bne .4 + tya + + bne .2 + pla Found keyword... clc - rts - -.9 lda #CSH.E.SYNTAX - sec -.99 rts -*-------------------------------------- -CSH.IF.END jsr CSH.GetNextChar just skip ending '}' - clc - rts -*-------------------------------------- -CSH.WHILE.END jsr CSH.Pop + adc ZPCSHBufPtr ..advance Ptr to char after it.. sta ZPCSHBufPtr - jsr CSH.Pop - sta ZPCSHBufPtr+1 - clc - rts -*-------------------------------------- -CSH.ELSE -CSH.DO -CSH.FOR -CSH.SWITCH -CSH.CASE -CSH.BREAK -CSH.CONTINUE + bcc .8 + inc ZPCSHBufPtr+1 + clc +.8 rts - lda #CSH.E.SYNTAX +.4 inx + inx + + lda ZPPtr1 + sec + adc (ZPPtr1) + sta ZPPtr1 + bcc .1 + inc ZPPtr1+1 + bra .1 + +.9 pla sec rts *-------------------------------------- CSH.ExpEval jsr CSH.ZeroACC + >STA.G CSH.EXPBOP1 A=0 jsr CSH.GetCharNB bcs .9 @@ -417,13 +421,14 @@ CSH.ExpEval jsr CSH.ZeroACC cmp #';' beq .8 - jsr CSH.IsLetter Fnc or Var ? +.10 jsr CSH.IsLetter Fnc or Var ? bcs .5 jsr CSH.GetVar - bcs .1 + bcs .4 + >DEBUG jsr CSH.LoadACCFromVar bcs .9 @@ -433,12 +438,41 @@ CSH.ExpEval jsr CSH.ZeroACC bcs .9 >LDYA L.CSH.BOPS - jsr CSH.Lookup + jsr CSH.LookupOP + bcs .9 + + >LDA.G CSH.EXPBOP1 previous OP... + bne .2 go check precedence + + txa + >STA.G CSH.EXPBOP1 + jsr CSH.ACC2ARG + jsr CSH.GetCharNB + bcc .10 + +.9 lda #CSH.E.SYNTAX + sec +.99 rts + +.2 txa + >STA.G CSH.EXPBOP2 + >CMP.G CSH.EXPBOP1 + bcs .3 + +* new OP has precedence, stack ACC - bra .8 + + bra .10 -.1 +* Old OP has precedence, compute ACC=ARG ACC +.3 >LDA.G CSH.EXPBOP1 + jsr CSA.Compute + bcs .9 + jsr CSH.GetCharNB + bcc .10 + +.4 bra .9 @@ -452,10 +486,9 @@ CSH.ExpEval jsr CSH.ZeroACC .8 clc rts - -.9 lda #CSH.E.SYNTAX - sec -.99 rts +*-------------------------------------- +CSA.Compute tax + jmp (J.CSH.BOBS,x) *-------------------------------------- CSH.GetNumInACC >LDA.G CSH.ACCT cmp #CSH.TYPE.FLOAT @@ -487,9 +520,11 @@ CSH.ZeroACC lda #0 rts *-------------------------------------- +CSH.ACC2ARG +*-------------------------------------- * Vars... *-------------------------------------- -CSH.AddVar jsr CSH.GetIdentLen +CSH.AddVar jsr CSH.GetIDLen sec >ADC.G CSH.SymbolsPtr Enough room to store this symbol ? @@ -511,7 +546,7 @@ CSH.AddVar jsr CSH.GetIdentLen >LDA.G CSH.SymbolsPtr pha - jsr CSH.GetIdentLen + jsr CSH.GetIDLen ply sta (ZPCSHSymbols),y @@ -556,7 +591,7 @@ CSH.AddVar jsr CSH.GetIdentLen CSH.GetVar >LDYA ZPCSHSymbols >STYA ZPPtr1 - jsr CSH.GetIdentLen + jsr CSH.GetIDLen pha .1 lda (ZPPtr1) @@ -626,6 +661,8 @@ CSH.LoadACCFromVar >LEA.G CSH.ACC >STYA ZPPtr1 + + ldy #0 .1 lda (ZPCSHValue),y sta (ZPPtr1) @@ -655,6 +692,8 @@ CSH.StoreACCToVar >LEA.G CSH.ACC >STYA ZPPtr1 + + ldy #0 .1 lda (ZPPtr1) inc ZPPtr1 @@ -672,6 +711,38 @@ CSH.StoreACCToVar sec rts *-------------------------------------- +CSH.IsACC0 >LDA.G CSH.ACCT + cmp #CSH.TYPE.FLOAT + bne .1 char,int,long + >LDA.G CSH.ACC + bne .9 + +.8 clc + rts + +.1 tax + lda CSH.TSIZE,x + tax + + lda #0 + ldy #CSH.ACC + +.2 ora (pData),y + iny + dex + bne .2 + + tax + beq .8 + +.9 sec + rts +*-------------------------------------- +CSH.BOPS.PLUS + + clc + rts +*-------------------------------------- * Stack *-------------------------------------- CSH.Push pha @@ -738,7 +809,7 @@ CSH.GetOPLen ldy #0 .8 tya rts *-------------------------------------- -CSH.GetIdentLen ldy #0 +CSH.GetIDLen ldy #0 .1 iny lda (ZPCSHBufPtr),y diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 59e7545d..db04f191 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -85,12 +85,9 @@ J.INTCMDS .DA Cmd.Exec.CD .DA Cmd.Exec.STARTPROC .DA Cmd.Exec.TIME L.CSH.BOPS .DA CSH.BOPS +J.CSH.BOBS .DA CSH.BOPS.PLUS L.CSH.KEYWORDS .DA CSH.KEYWORDS -J.CSH.KEYWORDS .DA CSH.CHAR - .DA CSH.INT - .DA CSH.LONG - .DA CSH.FLOAT - .DA CSH.IF +J.CSH.KEYWORDS .DA CSH.IF .DA CSH.WHILE .DA CSH.ELSE .DA CSH.DO @@ -99,6 +96,13 @@ J.CSH.KEYWORDS .DA CSH.CHAR .DA CSH.CASE .DA CSH.BREAK .DA CSH.CONTINUE + .DA CSH.CHAR + .DA CSH.INT + .DA CSH.LONG + .DA CSH.FLOAT +J.CSH.KEYWORDS.START + .DA CSH.IF.START + .DA CSH.WHILE.START J.CSH.KEYWORDS.END .DA CSH.IF.END .DA CSH.WHILE.END @@ -479,6 +483,9 @@ INTCMDS >CSTR "CD" >CSTR "TIME" .HS 00 *-------------------------------------- +OPChars.Count .EQ 14 +CSH.OPChars >PSTR "!~+-*/%=&|^&<>" +*-------------------------------------- * Pre Operators: + - ! ~ ++ -- *-------------------------------------- CSH.PREOOPS >PSTR "+" @@ -491,6 +498,21 @@ CSH.PREOOPS >PSTR "+" CSH.POSTOPS >PSTR "++" >PSTR "--" .HS 00 +*-------------------------------------- +* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |= +*-------------------------------------- +CSH.AOPS >PSTR "=" + >PSTR "+=" + >PSTR "-=" + >PSTR "*=" + >PSTR "/=" + >PSTR "%=" + >PSTR "<<=" + >PSTR ">>=" + >PSTR "&=" + >PSTR "^=" + >PSTR "!=" + .HS 00 *-- Binary ---- H to L prececence ----- * Arithmetic Operators: * / % * Arithmetic Operators: + - @@ -521,38 +543,27 @@ CSH.BOPS >PSTR "+" >PSTR "||" .HS 00 *-------------------------------------- -* Assignment Operators: = += -= *= /= %= <<= >>= &= ^= |= -*-------------------------------------- -CSH.AOPS >PSTR "=" - >PSTR "+=" - >PSTR "-=" - >PSTR "*=" - >PSTR "/=" - >PSTR "%=" - >PSTR "<<=" - >PSTR ">>=" - >PSTR "&=" - >PSTR "^=" - >PSTR "!=" - .HS 00 -*-------------------------------------- * Reserved Keywords: *-------------------------------------- -CSH.KEYWORDS >PSTR "char" - >PSTR "int" - >PSTR "long" - >PSTR "float" - >PSTR "if" +CSH.KEYWORDS >PSTR "if" >PSTR "while" >PSTR "else" >PSTR "do" >PSTR "for" >PSTR "switch" >PSTR "case" + >PSTR "break" + >PSTR "continue" +CSH.TYPES >PSTR "char" + >PSTR "int" + >PSTR "long" + >PSTR "float" .HS 00 *-------------------------------------- -OPChars.Count .EQ 14 -CSH.OPChars >PSTR "!~+-*/%=&|^&<>" +* int printf ( const char * format, ... ); +CSH.FUNCTIONS >PSTR "printf" +* float cos ( float x ); + >PSTR "cos" *-------------------------------------- MSG.GREETINGS >CSTR "\r\nA2osX-Shell 0.9.1\r\n\r\n" MSG.PROMPT >CSTR "$ " @@ -619,9 +630,17 @@ CSH.hStack .BS 1 CSH.StackPtr .BS 1 CSH.CmdSave .BS 1 + CSH.ACCT .BS 1 CSH.ACC .BS 5 +CSH.EXPBOP1 .BS 1 + +CSH.ARGT .BS 1 +CSH.ARG .BS 5 + +CSH.EXPBOP2 .BS 1 + DS.END .ED *-------------------------------------- MAN