mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-16 18:30:26 +00:00
Kernel 0.9.1 : Shell, CSH, bug-fix added Ctrl-C....
This commit is contained in:
parent
a894e55476
commit
0eed73230f
Binary file not shown.
Binary file not shown.
@ -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...
|
||||
|
@ -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
|
||||
|
||||
|
155
SBIN/SHELL.S.txt
155
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 "$ "
|
||||
|
Loading…
x
Reference in New Issue
Block a user