From a4d5f42fdad9ade3e88515fa03543a78f85b021a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Fri, 20 Oct 2017 17:42:24 +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 | 333 ++++++++++++++++++++++++--------------- SBIN/SHELL.S.txt | 35 +--- SYS/KERNEL.S.STDLIB.txt | 12 +- 5 files changed, 212 insertions(+), 168 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 59121849d706c73a6cc2bf112a5fdd668664d8fc..99c7fdd78591a51e838d6ca01f29100c952d2cbf 100644 GIT binary patch delta 2054 zcma)7e{2)i9X~(EAqhCP%LwM0jjzv6a<*Pq3`ch7bf6 zMRB5d8wn`_$rsXIq-pAt6=!i8wmUPyrnMECwl#J&?V#194LZ*|bcD{*x)%wcb&-pkx)m;vuL z7rAU9{l%Jn3l7c2OmJ?ep#juf?OXYerQ+EC!yivH+`V0FTx*=FGFMyvC$m-5lK-jP zC|F|lO@m~%s=y3dsYR-~{-R(hd^Y)-<2%egC&Qe8IT-i6#BGaoMs`Q`NBSel$ZO$+ z@KSgsJQNv;{F!SGueW~6so{S#oo@MUOOapV|Jd}XWvO|TzubJL<*(uSztj&WzqX74@h2ESc5TG8V# zl%Uo7@V3_!-h)?K!6kphlV;1D?DmsT_kcgUrIgTvad;(^qIRhvPHR-QE+v}&_2^mj z=^Mc1Q%Hd^^lq`h#KhtkoR7h<{Fa~WZ_HWWe>Z$gs2A@cVxR{M0W1o|f> zug*%oRlw)RN}xS7WjWkRz6)>gcD zU*R_~T#KCksIX355}Wrfa8sUhkeHM2N5~+??1>VOGwqv^I763vs}gD~N?NPZzQiSY zB}&erS+tED-+rlCHTwHe5lRmIBX$;+R89iz!y@SSF`Im~jRxKqwAfffRfz zl&wZk_hz2B@)cO=2RIT?YA(>U#Ew4;@B=|<0*tY})UCPUKuFn~gqMS3iUab3QdjCS z0~ID?B0Lj7JIa*odOgnM#=2eyVkm3VGgdetb34fK$zh3|NlEOOn53swHomH|V@920 zqJbI+p=6H1ZiQ6*7HC_SRG7KRYmRyCQOZ5YPw`pnn%^xxc#wzKFib)Ay){opOJQQH zZn(s2CynZcusG!<zPRdQD?hy%6*P_PaK`Dd%EAM|s0gtG>KF8yvi2dKBH@ju4FN%&;&G9`-9ffaj!P_jJ)}I1 z+}v-Z??!-?7~+@>Lx-S5joSRBF1--}^%w??6+pKjpoXIzF|EaOOpuOMlJJ7z^mxgy zZ$U?w5s+jy!NriW0hFLZDz(sYl`U0GW}^k>SBRWmeseWtcb*-ZSjs;>Wa{S) zMQ#KsDHiHXhyUMAU~V`+yX3r)8#UdToQ+OM>}py2RGh>)#^}gtRyj6gQI6749JEo{ za%|$AsB(yosO%E9DFs#$J2(}}{xcQFhj}`JM8*Qg%>oTVj3tYJn&mg&i7u~!M%Fy| zEMSt4=jkZ2$StM{<1xH3^1+3`=L{;ggU*=*a{Z4$wFZIUj(~HzBVe3AAZ>n+v?)St z(4Y~EAV8k2B9ZzyY!Sg}E`+|h|Q)kXP*PU8Kham!X-GprLY zz%$r9J&QMhX91?X=Qw&sWm$>Us*&QjBdPgH2l(QBya<2d^PUg<*_)J6IlX=r-u(7?MKJ%OAY4bQtjZy4}weN_d?r~P{#zjiDo5}PvXwlx@?;+S5KEWOqXk>%eB+xy2bLwYySm^p83lF delta 1788 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 delta 16536 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

)eisv3d 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 h`PGj4JT2X=ZxrADD2z0Zd@`tB5TO diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index dad592cb..2487cae7 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -27,8 +27,6 @@ CSH.Init lda #$FF >STA.G CSH.hBuf >SYSCALL GetMemPtr.A >STYA ZPCSHBufPtr - - >STYA.G CSH.BufBase >LDYAI 256 >SYSCALL GetMem0.YA @@ -89,18 +87,19 @@ CSH.Run lda #0 bra .9 error, todo : PREOPS ++ --..... -.3 jsr CSH.GetLen Get the len of this possible keyword/var - +.3 >LDYA L.CSHCMDS jsr CSH.IsKeyword bcs .4 not an internal CSH keyword.... - stx CSH.CmdSave - + txa + >STA.G CSH.CmdSave jmp (J.CSHCMDS,x) -.4 jsr CSH.GetVar +.4 jsr CSH.GetVar Y=Ptr To Value bcs .5 + + jsr CSH.GetCharNB bcs .9 cmp #'=' @@ -109,17 +108,16 @@ CSH.Run lda #0 jsr CSH.GetNextCharNB Skip = bcs .99 + phy jsr CSH.ExpEval + ply bcs .9 - jsr CSH.GetChar + jsr CSH.SetVarValueAtY bcs .9 cmp #';' bne .99 - jsr CSH.SetVar - bcs .9 - jmp CSH.GetNextCharNB Skip ; .99 lda #CSH.E.SYNTAX @@ -195,68 +193,56 @@ CSH.RestorePtr phy ply rts *-------------------------------------- -CSH.GetLen ldy #0 we have already a letter - -.1 iny - lda (ZPCSHBufPtr),y - beq .8 - - jsr CSH.IsLetterOrDigit - bcc .1 +CSH.IsKeyword >STYA ZPPtr1 -.8 tya - >STA.G CSH.IdentLen - rts -*-------------------------------------- -CSH.IsKeyword >LDYA L.CSHCMDS - >STYA ZPPtr2 + jsr CSH.GetIdentLen + + phy Y = kw len ldx #0 -.1 lda (ZPPtr2) +.1 lda (ZPPtr1) beq .9 Ending 0, not found.... - >LDA.G CSH.IdentLen + pla + pha Get Back Len - cmp (ZPPtr2) Same Len ? + cmp (ZPPtr1) Same Len ? bne .4 tay -.2 lda (ZPCSHBufPtr),y +.2 lda (ZPPtr1),y - cmp #'a' To Uppercase - bcc .3 - cmp #'z'+1 - bcs .3 - eor #$20 - -.3 cmp (ZPPtr2),y +.3 dey + cmp (ZPCSHBufPtr),y bne .4 - dey + tya + bne .2 - >LDA.G CSH.IdentLen + pla Found keyword... clc - adc ZPCSHBufPtr + adc ZPCSHBufPtr ..advance Ptr to char after it.. sta ZPCSHBufPtr bcc .8 inc ZPCSHBufPtr+1 - clc Found an internal Cmd... + clc .8 rts .4 inx inx - lda ZPPtr2 + lda ZPPtr1 sec - adc (ZPPtr2) - sta ZPPtr2 + adc (ZPPtr1) + sta ZPPtr1 bcc .1 - inc ZPPtr2+1 + inc ZPPtr1+1 bra .1 -.9 sec +.9 pla + sec rts *-------------------------------------- CSH.WHILE @@ -292,13 +278,13 @@ CSH.IF jsr CSH.GetCharNB jsr CSH.GetNextCharNB Skip '{' - lda CSH.CmdSave Push "IF" or "WHILE" + >LDA.G CSH.CmdSave Push "IF" or "WHILE" beq .1 if "IF", no need to push Saved Ptr pha - lda CSH.BufPtrSave+1 WHILE : push loop address... + >LDA.G CSH.BufPtrSave+1 WHILE : push loop address... jsr CSH.Push - lda CSH.BufPtrSave + >LDA.G CSH.BufPtrSave jsr CSH.Push pla @@ -376,10 +362,13 @@ CSH.TYPE >STA.G CSH.ACCT jsr CSH.IsLetter bcs .9 - jsr CSH.GetLen - jsr CSH.FindVar + jsr CSH.GetVar Already exists ? bcc .90 + jsr CSH.AddVar No, add with undefined value... + bcs .99 +* Y=Ptr in DATA to Value + jsr CSH.GetCharNB bcs .9 cmp #';' @@ -391,32 +380,33 @@ CSH.TYPE >STA.G CSH.ACCT jsr CSH.GetNextCharNB bcs .9 + phy Save Ptr To Value jsr CSH.ExpEval + ply + bcs .9 + jsr CSH.SetVarValueAtY Update value to this var + jsr CSH.GetChar bcs .9 cmp #';' bne .9 -.8 jsr CSH.AddVar - bcs .99 - - jsr CSH.GetNextCharNB Skip ; +.8 jsr CSH.GetNextCharNB Skip ; clc rts .90 lda #CSH.E.DUP sec rts + .9 lda #CSH.E.SYNTAX sec .99 rts *-------------------------------------- CSH.ExpEval jsr CSH.ZeroACC - ldy #0 - jsr CSH.GetCharNB bcs .9 cmp #')' @@ -433,6 +423,7 @@ CSH.ExpEval jsr CSH.ZeroACC bcs .9 jsr CSH.GetNumInACC + bcs .9 @@ -443,41 +434,45 @@ CSH.ExpEval jsr CSH.ZeroACC sec .99 rts *-------------------------------------- -CSH.GetNumInACC +CSH.GetNumInACC >LDA.G CSH.ACCT + cmp #CSH.TYPE.FLOAT + bcc .1 + >PUSHWI ZPCSHBufPtr + >PUSHW ZPCSHBufPtr + >PUSHEA.G CSH.ACC + + >SYSCALL StrToF + rts + +.1 >PUSHBI 10 - >LDA.G CSH.ACCT - -* >SYSCALL StrToL -* bcs .9 -* rts - -.9 lda #CSH.E.SYNTAX - sec + >PUSHWI ZPCSHBufPtr + >PUSHW ZPCSHBufPtr + >PUSHEA.G CSH.ACC + >DEBUG + >SYSCALL StrToL rts *-------------------------------------- CSH.ZeroACC lda #0 - - >STA.G CSH.ACC + ldx #5 + ldy #CSH.ACC + +.1 sta (pData),y iny - sta (pData),y - iny - sta (pData),y - iny - sta (pData),y + dex + bne .1 + rts *-------------------------------------- * Vars... *-------------------------------------- -CSH.AddVar jsr CSH.FindVar - bcc .97 - - >LDA.G CSH.SymbolsPtr - +CSH.AddVar jsr CSH.GetIdentLen sec - >ADC.G CSH.IdentLen + >ADC.G CSH.SymbolsPtr + bcs .99 - adc #2 TYPE + OFS + adc #1 OFS bcs .99 >LDA.G CSH.DataPtr @@ -485,7 +480,7 @@ CSH.AddVar jsr CSH.FindVar >LDA.G CSH.ACCT tax -* clc + sec +1 for Type adc CSH.TSIZE,x bcs .98 Out of memory @@ -494,17 +489,13 @@ CSH.AddVar jsr CSH.FindVar jsr CSH.GetChar -.10 sta (ZPCSHSymbols),y +.1 sta (ZPCSHSymbols),y iny jsr CSH.GetNextChar jsr CSH.IsLetterOrDigit - bcc .10 + bcc .1 - lda CSH.ACCT - sta (ZPCSHSymbols),y - - iny pla Get Back Data OFS pha sta (ZPCSHSymbols),y @@ -513,94 +504,98 @@ CSH.AddVar jsr CSH.FindVar tya >STA.G CSH.SymbolsPtr + >LEA.G CSH.ACCT + >STYA ZPPtr1 ACCT/ACC in ZPPtr1 + ply Get Back Data OFS again + phy - >LDA.G CSH.ACCT + lda (ZPPtr1) + sta (ZPCSHSymbols),y Add Type to Data + iny + tax - lda CSH.TSIZE,x + lda CSH.TSIZE,x A = byte count to store - ldx #0 - -.1 pha - >LDA.G CSH.ACC tax + +.2 inc ZPPtr1 + bne .3 + inc ZPPtr1+1 + +.3 lda (ZPPtr1) sta (ZPCSHData),y iny - inx - pla - dec - bne .1 + dex + bne .2 tya >STA.G CSH.DataPtr + ply Exit with Y=Data Offset clc rts - -.97 lda #CSH.E.DUP - sec - rts - + .98 pla .99 lda #CSH.E.OOM sec rts *-------------------------------------- -CSH.SetVar +CSH.SetVarValueAtY clc rts *-------------------------------------- -CSH.GetVar jsr CSH.FindVar - bcs .9 +CSH.GetVar >LDYA ZPCSHSymbols + >STYA ZPPtr1 - clc -.9 rts -*-------------------------------------- -CSH.FindVar >LDYA ZPCSHSymbols - >STYA ZPPTR1 + jsr CSH.GetIdentLen + phy -.1 lda (ZPPTR1) +.1 lda (ZPPtr1) beq .9 - >CMP.G CSH.IdentLen - bne .4 + pla + pha + cmp (ZPPtr1) + bne .3 tay -.2 lda (ZPPTR1),y +.2 lda (ZPPtr1),y + dey cmp (ZPCSHBufPtr),y bne .3 - dey + tya bne .2 - lda (ZPPTR1) - sec - adc ZPPTR1 - sta ZPPTR1 - bcc .8 - inc ZPPTR1+1 + pla + + jsr CSH.VarSkipName clc .8 rts -.3 lda (ZPPTR1) skip Name -.4 sec - adc ZPPTR1 - bcc .5 - inc ZPPTR1+1 - clc +.3 jsr CSH.VarSkipName -.5 adc #2 Skip Type+OFS - sta ZPPTR1 - bcc .1 - inc ZPPTR1+1 +.5 inc ZPPtr1 Skip Pointer to TYPE/DATA + bne .1 + inc ZPPtr1+1 bra .1 -.9 sec +.9 pla + sec rts *-------------------------------------- +CSH.VarSkipName lda (ZPPtr1) + sec + adc ZPPtr1 + sta ZPPtr1 + bcc .8 + inc ZPPtr1+1 +.8 rts +*-------------------------------------- * Stack *-------------------------------------- CSH.Push pha @@ -655,6 +650,16 @@ CSH.CheckStack pha *-------------------------------------- * CHAR related Subs..... *-------------------------------------- +CSH.GetIdentLen ldy #0 + +.1 iny + lda (ZPCSHBufPtr),y + beq .8 + + jsr CSH.IsLetterOrDigit + bcc .1 +.8 rts +*-------------------------------------- CSH.GetCharNB jsr CSH.GetChar bcs CSH.GetNextCharNB.RTS jsr CSH.CheckCharNB @@ -724,6 +729,72 @@ CSH.IsDigit10 cmp #'0' .9 sec rts *-------------------------------------- +CSH.ErrorMsg >LDA.G CSH.hBuf + >SYSCALL GetMemPtr.A + >STYA ZPPtr1 + + lda #0 + >STA.G CSH.LineNum + iny + >STA.G CSH.LineNum+1 + +.1 >LDYA ZPPtr1 + >STYA ZPPtr2 Save actual line start + + >INCW.G CSH.LineNum + +.2 lda (ZPPtr1) + beq .6 EoF + inc ZPPtr1 + bne .3 + inc ZPPtr1+1 + +.3 cmp #$0D + bne .2 Scan until EoL + + ldx ZPPtr1 + cpx ZPCSHBufPtr + lda ZPPtr1+1 + sbc ZPCSHBufPtr+1 + bcc .1 not this line.... + +.4 ldy #0 + +.5 lda (ZPPtr2),y + beq .6 + iny + cmp #$0D + beq .6 + phy + >SYSCALL PutChar.A + ply + bra .5 + +.6 lda #$0D + >SYSCALL PutChar.A + lda #$0A + >SYSCALL PutChar.A + + lda ZPCSHBufPtr + sec + sbc ZPPtr2 + beq .8 + tay + +.7 phy + lda #'-' + >SYSCALL PutChar.A + ply + dey + bne .7 + +.8 >PUSHW.G CSH.LineNum + + >LDYA L.MSG.CSHERR + >SYSCALL PrintF.YA + + rts +*-------------------------------------- MAN SAVE /A2OSX.SRC/SBIN/SHELL.S.CSH LOAD /A2OSX.SRC/SBIN/SHELL.S diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 361ee2f2..2db84bb3 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -34,7 +34,6 @@ CSH.E.NOVERFLW .EQ $7D CSH.E.OOM .EQ $7C CSH.E.DUP .EQ $7B CSH.E.UNDEF .EQ $7A -CSH.E.TOOLONG .EQ $79 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -214,33 +213,9 @@ CS.RUN.BATCH jsr CSH.Run pha - lda ZPCSHBufPtr - sec - >SBC.G CSH.BufBase - tay + jsr CSH.ErrorMsg - lda ZPCSHBufPtr+1 - >SBC.G CSH.BufBase+1 - - >PUSHYA - - >LDYA L.MSG.CSHERR - >SYSCALL PrintF.YA - - jsr CSH.RestorePtr - - jsr CSH.GetChar - bcs .2 - >SYSCALL PutChar.A - -.1 jsr CSH.GetNextChar - bcs .2 - cmp #13 - beq .2 - >SYSCALL PutChar.A - bra .1 - -.2 pla + pla ldy #S.PS.RC sta (pPs),y @@ -510,7 +485,7 @@ MSG.PROMPT >CSTR "$ " MSG.ECHO >CSTR ">%s\r\n" MSG.ERROR >CSTR "[$%h]:%S.\r\n" MSG.PRINTENV >CSTR "%s=%s\r\n" -MSG.CSHERR >CSTR "Pos %D:" +MSG.CSHERR >CSTR "^\r\nLine #%D:" FMT.DATE >CSTR "%A, %B %d %Y" FMT.TIME >CSTR "%H:%M:%S (%I:%M:%S%p)" *-------------------------------------- @@ -556,9 +531,10 @@ IO.hOut .BS 1 IO.hErr .BS 1 CSH.hBuf .BS 1 -CSH.BufBase .BS 2 CSH.BufPtrSave .BS 2 +CSH.LineNum .BS 2 + CSH.hSymbols .BS 1 CSH.SymbolsPtr .BS 1 @@ -568,7 +544,6 @@ CSH.DataPtr .BS 1 CSH.hStack .BS 1 CSH.StackPtr .BS 1 -CSH.IdentLen .BS 1 CSH.CmdSave .BS 1 CSH.ACCT .BS 1 CSH.ACC .BS 5 diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index 0bd1865a..cb67010f 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -14,16 +14,13 @@ AUTO 6 * Target buffer filled with a FLOAT (packed) *\-------------------------------------- K.StrToF jsr K.AToF - bcs .9 - >PULLW ZPPtr3 lda TXTPTR sta (ZPPtr3) ldy #1 - lda TXTPTR + lda TXTPTR+1 sta (ZPPtr3),y - -.9 rts + rts */-------------------------------------- * # AToF * Convert String to 40 bits Float @@ -71,10 +68,11 @@ K.StrToUL clc Unsigned * clc K.StrToUL.Exit adc ZPPtr2 - sta ZPPtr3 + sta (ZPPtr3) lda #0 adc ZPPtr2+1 - sta ZPPtr3+1 + ldy #1 + sta (ZPPtr3),y K.StrToUL.rts rts */--------------------------------------