diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index fd83d890..44c32fa7 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index b00df69b..0e52713a 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/SBIN/SHELL.S.CL.txt b/SBIN/SHELL.S.CL.txt index 57012d02..d331f1d0 100644 --- a/SBIN/SHELL.S.CL.txt +++ b/SBIN/SHELL.S.CL.txt @@ -21,6 +21,85 @@ CL.PrintPrompt >LDYA L.ENV.PS1 plp rts *-------------------------------------- +CL.CHARIN tax + + >LDA.G bEscMode + beq .13 + + cpx #'[' + beq .9 + + lda #0 + sta (pData),y Y=bEscMode + txa + + ldx #EscChars.count-1 + +.17 cmp EscChars,x + beq .18 + dex + bpl .17 + clc + rts + +.18 txa + asl + tax + jmp (J.ESC,x) +*-------------------------------------- +.13 cpx #$20 + bcc CL.CHARIN.CTRL + +.1 cpx #$7f + bne .2 + jmp CL.DEL + +.2 jmp CL.Insert + +.9 clc + rts +*-------------------------------------- +CL.CHARIN.CTRL cpx #13 CR + bne .10 + + txa + >SYSCALL PutChar.A + lda #10 + >SYSCALL PutChar.A + + >LDA.G CmdBufPtr + tay + lda #0 + sta (ZPCMDBuf),y + tya + >STA.G CmdBuflen + + lda #$ff + >STA.G bCmdBufexec + clc + rts + +.10 cpx #$1B esc + bne .11 + + lda #$ff + >STA.G bEscMode + clc + rts + +.11 cpx #3 Ctrl-C + bne .12 + + jmp CL.CLR + +.12 cpx #24 Ctrl-X + bne .13 + + jmp CL.SUPPR + +.13 clc + rts +*-------------------------------------- CL.Insert >LDA.G CmdBuflen cmp #CmdLine.MAX beq .9 Buffer full, discard... diff --git a/SBIN/SHELL.S.CSH.txt b/SBIN/SHELL.S.CSH.txt index 758f3cb7..dde01cfa 100644 --- a/SBIN/SHELL.S.CSH.txt +++ b/SBIN/SHELL.S.CSH.txt @@ -5,10 +5,15 @@ INC 1 AUTO 6 .LIST OFF *-------------------------------------- -CSH.TYPE.CHAR .EQ 1 -CSH.TYPE.INT .EQ 2 -CSH.TYPE.LONG .EQ 3 -CSH.TYPE.FLOAT .EQ 4 +CSH.TQ.POINTER .EQ %10000000 +CSH.TQ.CONST .EQ %01000000 +CSH.TQ.SIGNED .EQ %00100000 + +CSH.T.CHAR .EQ 1 +CSH.T.INT .EQ 2 +CSH.T.LONG .EQ 3 +CSH.T.FLOAT .EQ 4 +CSH.T.VARIADIC .EQ $FF *-------------------------------------- CSH.Init lda #$FF >STA.G bExitOnEOF @@ -283,13 +288,13 @@ CSH.CONTINUE sec rts *-------------------------------------- -CSH.CHAR lda #CSH.TYPE.CHAR +CSH.CHAR lda #CSH.T.CHAR bra CSH.TYPE -CSH.INT lda #CSH.TYPE.INT +CSH.INT lda #CSH.T.INT bra CSH.TYPE -CSH.LONG lda #CSH.TYPE.LONG +CSH.LONG lda #CSH.T.LONG bra CSH.TYPE -CSH.FLOAT lda #CSH.TYPE.FLOAT +CSH.FLOAT lda #CSH.T.FLOAT CSH.TYPE >STA.G CSH.ACCT @@ -488,7 +493,7 @@ CSH.Lookup phy Y = len rts *-------------------------------------- CSH.GetNumInACC >LDA.G CSH.ACCT - cmp #CSH.TYPE.FLOAT + cmp #CSH.T.FLOAT bcc .1 >PUSHWI ZPCSHBufPtr @@ -721,7 +726,7 @@ CSH.StoreACCToVar rts *-------------------------------------- CSH.IsACC0 >LDA.G CSH.ACCT - cmp #CSH.TYPE.FLOAT + cmp #CSH.T.FLOAT bne .1 char,int,long >LDA.G CSH.ACC bne .9 @@ -756,7 +761,7 @@ CSH.BOPS.ADD CSH.BOPS.SUB >LDA.G CSH.ACCT - cmp #CSH.TYPE.FLOAT + cmp #CSH.T.FLOAT beq .8 @@ -796,27 +801,26 @@ CSH.BOPS.LOR *-------------------------------------- CSH.Push pha >LDA.G CSH.StackPtr + inc + beq .9 + sta (pData),y + dec tay - pla sta (ZPCSHStack),y - iny - beq .9 - tya - >STA.G CSH.StackPtr - sta (pData),y clc rts -.9 lda #CSH.E.SOVERFLW +.9 pla + lda #CSH.E.SOVERFLW sec rts *-------------------------------------- CSH.Pop >LDA.G CSH.StackPtr beq .9 dec - tay sta (pData),y + tay lda (ZPCSHStack),y clc rts @@ -825,12 +829,12 @@ CSH.Pop >LDA.G CSH.StackPtr sec rts *-------------------------------------- -CSH.CheckStack pha +CSH.CheckStack tax >LDA.G CSH.StackPtr beq .9 dec tay - pla + txa cmp (ZPCSHStack),y bne .9 diff --git a/SBIN/SHELL.S.txt b/SBIN/SHELL.S.txt index 82d22052..6e457efb 100644 --- a/SBIN/SHELL.S.txt +++ b/SBIN/SHELL.S.txt @@ -154,39 +154,37 @@ CS.RUN >LDA.G bReadMode READ Command ? ldy #S.PS.RC lda (pPs),y beq .11 + jsr IO.PrintErrMsg - bcs CS.RUN.EXIT.RTS + bcs .9 .11 >LDA.G bPause bpl .13 >SYSCALL GetChar bcs .8 + + >STZ.G bPause .13 jsr CheckSleep bne .8 >LDA.G CSH.hBuf batch mode ? - beq .10 - - jmp CS.RUN.BATCH + bne CS.RUN.BATCH *-------------------------------------- -.10 jsr CL.RESET reset CmdBuf +.10 jsr CL.RESET reset CmdBuf .12 jsr CL.PrintPrompt - bcs CS.RUN.EXIT.RTS + bcs .9 .1 >SYSCALL Sleep >SYSCALL GetChar bcs .1 no char - - jsr CS.CHARIN + + jsr CL.CHARIN >LDA.G bCmdBufExec Something to execute ? bpl .1 - - >LDA.G CmdBuflen - beq .10 Empty line jsr CMD.Parse @@ -204,14 +202,14 @@ CS.RUN >LDA.G bReadMode READ Command ? sta (pPs),y >LDA.G bExit - bne CS.RUN.EXIT + bne .80 .8 clc rts -CS.RUN.EXIT lda #0 -CS.RUN.EXIT.ERR sec -CS.RUN.EXIT.RTS rts +.80 lda #0 + sec +.9 rts *-------------------------------------- CS.RUN.READ lda #0 reset Buffer sta (ZPCMDBuf) @@ -220,7 +218,7 @@ CS.RUN.READ lda #0 reset Buffer >SYSCALL GetChar bcs .1 no char - jsr CS.CHARIN + jsr CL.CHARIN >LDA.G bCmdBufExec bpl .1 @@ -231,7 +229,24 @@ CS.RUN.READ lda #0 reset Buffer >SYSCALL SetEnv rts *-------------------------------------- -CS.RUN.BATCH jsr CSH.Run +CS.RUN.BATCH >SYSCALL GetChar + bcs .2 + + cmp #3 test Ctrl-c + bne .1 + + sec + rts + +.1 cmp #19 test Ctrl-s + bne .2 + + lda #$80 + >STA.G bPause + clc + rts + +.2 jsr CSH.Run bcc .7 cmp #MLI.E.EOF @@ -296,105 +311,6 @@ CS.DOEVENT lda (pEvent) .9 sec rts *-------------------------------------- -CS.CHARIN tax Save Char - >LDA.G CSH.hBuf Batch mode ? - beq .10 -* Batch Mode - cpx #3 test Ctrl-c - bne .12 - - >LDA.G bExitOnEOF - >STA.G bExit - clc - rts - -.12 cpx #19 test Ctrl-s - bne .8 - - lda #$80 - >STA.G bPause - -.8 clc - rts -*-------------------------------------- -* interactive mode -.10 >LDA.G bEscMode - beq .13 - - cpx #'[' - beq .9 - - lda #0 - sta (pData),y Y=bEscMode - txa - - ldx #EscChars.count-1 - -.17 cmp EscChars,x - beq .18 - dex - bpl .17 - clc - rts - -.18 txa - asl - tax - jmp (J.ESC,x) -*-------------------------------------- -.13 cpx #$20 - bcc CS.CHARIN.CTRL - -.1 cpx #$7f - bne .2 - jmp CL.DEL - -.2 jmp CL.Insert - -.9 clc - rts -*-------------------------------------- -CS.CHARIN.CTRL cpx #13 CR - bne .10 - - txa - >SYSCALL PutChar.A - lda #10 - >SYSCALL PutChar.A - - >LDA.G CmdBufPtr - tay - lda #0 - sta (ZPCMDBuf),y - tya - >STA.G CmdBuflen - - lda #$ff - >STA.G bCmdBufexec - clc - rts - -.10 cpx #$1B esc - bne .11 - - lda #$ff - >STA.G bEscMode - clc - rts - -.11 cpx #3 Ctrl-C - bne .12 - - jmp CL.CLR - -.12 cpx #24 Ctrl-X - bne .13 - - jmp CL.SUPPR - -.13 clc - rts -*-------------------------------------- CS.QUIT jsr HIS.Quit jsr CSH.Quit jsr CMD.Quit @@ -522,8 +438,15 @@ CSH.TYPES >PSTR "char" *-------------------------------------- * int printf ( const char * format, ... ); CSH.FUNCTIONS >PSTR "printf" + .DA #CSH.T.INT returned value + .DA #CSH.TQ.CONST+CSH.T.CHAR+CSH.TQ.POINTER + .DA #CSH.T.VARIADIC + .DA #0 * float cos ( float x ); >PSTR "cos" + .DA #CSH.T.FLOAT + .DA #CSH.T.FLOAT + .DA #0 *-------------------------------------- MSG.GREETINGS >CSTR "\r\nA2osX-Shell 0.9.1\r\n\r\n" MSG.PROMPT >CSTR "$ "