From 0c36c7138493b160ee109ecf6b38891097c20a26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Tue, 24 Oct 2017 17:44:12 +0200 Subject: [PATCH] Kernel 0.9.1 : SHELL, CSH style scripting.....(wip), bug fix in AToL --- .Floppies/A2OSX.BUILD.po | Bin 819200 -> 819200 bytes .Floppies/A2OSX.SRC.po | Bin 819200 -> 819200 bytes SBIN/SHELL.S.CSH.txt | 136 ++++++++++++++++++++++++++++++++------- SBIN/SHELL.S.txt | 5 +- SYS/KERNEL.S.IRQ.txt | 3 +- SYS/KERNEL.S.STDLIB.txt | 2 + 6 files changed, 120 insertions(+), 26 deletions(-) diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index ece36de70c85ec6f511e72f91b818d42a0507f25..ca130cbdb1e156bd49cba9f80068e18ea788697b 100644 GIT binary patch delta 4029 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�`3mY-jqbaG8r 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 L.CSH.KEYWORDS - jsr CSH.IsKeyword + jsr CSH.Lookup bcs .4 not an internal CSH keyword.... txa @@ -96,7 +96,7 @@ CSH.Run lda #0 jmp (J.CSH.KEYWORDS,x) -.4 jsr CSH.GetVar Y=Ptr To Value +.4 jsr CSH.GetVar bcs .5 @@ -113,7 +113,7 @@ CSH.Run lda #0 ply bcs .9 - jsr CSH.SetVarValue + jsr CSH.StoreACCToVar bcs .9 cmp #';' bne .99 @@ -192,7 +192,7 @@ CSH.RestorePtr >LDYA.G CSH.BufPtrSave >STYA ZPCSHBufPtr rts *-------------------------------------- -CSH.IsKeyword >STYA ZPPtr1 +CSH.Lookup >STYA ZPPtr1 jsr CSH.GetIdentLen @@ -288,7 +288,7 @@ CSH.TYPE >STA.G CSH.ACCT bcs .9 - jsr CSH.SetVarValue Update value to this var + jsr CSH.StoreACCToVar Update value to this var jsr CSH.GetChar bcs .9 @@ -315,7 +315,7 @@ CSH.IF jsr CSH.GetCharNB jsr CSH.GetNextCharNB bcs .9 - + jsr CSH.ExpEval bcs .99 @@ -341,6 +341,7 @@ CSH.IF jsr CSH.GetCharNB 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 @@ -417,11 +418,31 @@ CSH.ExpEval jsr CSH.ZeroACC beq .8 jsr CSH.IsLetter Fnc or Var ? - bcs .1 + bcs .5 + jsr CSH.GetVar + + bcs .1 + + jsr CSH.LoadACCFromVar + bcs .9 + + jsr CSH.GetCharNB + bcs .9 + jsr CSH.IsOPChar + bcs .9 + + >LDYA L.CSH.BOPS + jsr CSH.Lookup + + + bra .8 + +.1 + bra .9 -.1 jsr CSH.IsDigit10 number ? +.5 jsr CSH.IsDigit10 number ? bcs .9 jsr CSH.GetNumInACC @@ -522,6 +543,8 @@ CSH.AddVar jsr CSH.GetIdentLen adc ZPCSHData+1 sta ZPCSHValue+1 + >LDA.G CSH.ACCT + sta (ZPCSHValue) * clc rts @@ -530,22 +553,6 @@ CSH.AddVar jsr CSH.GetIdentLen sec rts *-------------------------------------- -CSH.SetVarValue >LDA.G CSH.ACCT - tax - lda CSH.TSIZE,x - tax - - >LDA.G CSH.ACCT - tay - -.1 lda (pData),y - sta (ZPCSHValue),y - iny - dex - bpl .1 +1 for ACCT - clc - rts -*-------------------------------------- CSH.GetVar >LDYA ZPCSHSymbols >STYA ZPPtr1 @@ -608,6 +615,63 @@ CSH.GetVar >LDYA ZPCSHSymbols sec rts *-------------------------------------- +CSH.LoadACCFromVar + >LDA.G CSH.ACCT + cmp (ZPCSHValue) + bne .9 + + tax + lda CSH.TSIZE,x + tax Byte count to transfer + + >LEA.G CSH.ACC + >STYA ZPPtr1 + +.1 lda (ZPCSHValue),y + sta (ZPPtr1) + inc ZPPtr1 + bne .2 + inc ZPPtr1+1 + +.2 iny + dex + bne .1 + + clc + rts + +.9 lda #CSH.E.TMISMATCH + sec + rts +*-------------------------------------- +CSH.StoreACCToVar + >LDA.G CSH.ACCT + cmp (ZPCSHValue) + bne .9 + + tax + lda CSH.TSIZE,x + tax Byte count to transfer + + >LEA.G CSH.ACC + >STYA ZPPtr1 + +.1 lda (ZPPtr1) + inc ZPPtr1 + bne .2 + inc ZPPtr1+1 + +.2 sta (ZPCSHValue),y + iny + dex + bne .1 + clc + rts + +.9 lda #CSH.E.TMISMATCH + sec + rts +*-------------------------------------- * Stack *-------------------------------------- CSH.Push pha @@ -662,6 +726,18 @@ CSH.CheckStack pha *-------------------------------------- * CHAR related Subs..... *-------------------------------------- +CSH.GetOPLen ldy #0 + +.1 iny + lda (ZPCSHBufPtr),y + beq .8 + + jsr CSH.IsOPChar + bcc .1 + +.8 tya + rts +*-------------------------------------- CSH.GetIdentLen ldy #0 .1 iny @@ -711,6 +787,18 @@ CSH.GetChar lda (ZPCSHBufPtr) sec rts *--------------------------------------- +CSH.IsOPChar ldx #OPChars.Count-1 + +.1 cmp CSH.OPChars,x + beq .8 + dex + bpl .1 + sec + rts + +.8 clc + rts +*--------------------------------------- CSH.IsLetterOrDigit jsr CSH.IsDigit10 bcc CSH.IsLetterRTS diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 5716ada0..59e7545d 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -34,6 +34,7 @@ CSH.E.NOVERFLW .EQ $7D CSH.E.OOM .EQ $7C CSH.E.DUP .EQ $7B CSH.E.UNDEF .EQ $7A +CSH.E.TMISMATCH .EQ $79 *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- @@ -83,6 +84,7 @@ J.INTCMDS .DA Cmd.Exec.CD .DA Cmd.Exec.SLEEP .DA Cmd.Exec.STARTPROC .DA Cmd.Exec.TIME +L.CSH.BOPS .DA CSH.BOPS L.CSH.KEYWORDS .DA CSH.KEYWORDS J.CSH.KEYWORDS .DA CSH.CHAR .DA CSH.INT @@ -549,6 +551,7 @@ CSH.KEYWORDS >PSTR "char" >PSTR "case" .HS 00 *-------------------------------------- +OPChars.Count .EQ 14 CSH.OPChars >PSTR "!~+-*/%=&|^&<>" *-------------------------------------- MSG.GREETINGS >CSTR "\r\nA2osX-Shell 0.9.1\r\n\r\n" @@ -565,7 +568,7 @@ FMT.TIME >CSTR "%H:%M:%S (%I:%M:%S%p)" EscChars.Count .EQ 4 EscChars .AS 'DBAC' -CSH.TSIZE .HS 0001020405 00,CHAR,INT,LONG,FLOAT.... +CSH.TSIZE .HS 0001020405 VOID,CHAR,INT,LONG,FLOAT.... *-------------------------------------- .DUMMY .OR 0 diff --git a/SYS/KERNEL.S.IRQ.txt b/SYS/KERNEL.S.IRQ.txt index 156b3e68..1ed4ec46 100644 --- a/SYS/KERNEL.S.IRQ.txt +++ b/SYS/KERNEL.S.IRQ.txt @@ -48,7 +48,8 @@ K.IrqHandlerAuxLC rti .2 -* bra * BRK + pla pull P + bra * lda .12+1 diff --git a/SYS/KERNEL.S.STDLIB.txt b/SYS/KERNEL.S.STDLIB.txt index a178ab0c..461baac2 100644 --- a/SYS/KERNEL.S.STDLIB.txt +++ b/SYS/KERNEL.S.STDLIB.txt @@ -169,6 +169,7 @@ STDLIB.32.T10 ldx #3 bcs .9 overflow!!! ldx #0 + phy ldy #4 * clc @@ -179,6 +180,7 @@ STDLIB.32.T10 ldx #3 inx dey bne .2 + ply bcs .99 overflow!!!