mirror of
https://github.com/A2osX/A2osX.git
synced 2024-07-07 04:28:56 +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
|
plp
|
||||||
rts
|
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
|
CL.Insert >LDA.G CmdBuflen
|
||||||
cmp #CmdLine.MAX
|
cmp #CmdLine.MAX
|
||||||
beq .9 Buffer full, discard...
|
beq .9 Buffer full, discard...
|
||||||
|
@ -5,10 +5,15 @@ INC 1
|
|||||||
AUTO 6
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.TYPE.CHAR .EQ 1
|
CSH.TQ.POINTER .EQ %10000000
|
||||||
CSH.TYPE.INT .EQ 2
|
CSH.TQ.CONST .EQ %01000000
|
||||||
CSH.TYPE.LONG .EQ 3
|
CSH.TQ.SIGNED .EQ %00100000
|
||||||
CSH.TYPE.FLOAT .EQ 4
|
|
||||||
|
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
|
CSH.Init lda #$FF
|
||||||
>STA.G bExitOnEOF
|
>STA.G bExitOnEOF
|
||||||
@ -283,13 +288,13 @@ CSH.CONTINUE
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.CHAR lda #CSH.TYPE.CHAR
|
CSH.CHAR lda #CSH.T.CHAR
|
||||||
bra CSH.TYPE
|
bra CSH.TYPE
|
||||||
CSH.INT lda #CSH.TYPE.INT
|
CSH.INT lda #CSH.T.INT
|
||||||
bra CSH.TYPE
|
bra CSH.TYPE
|
||||||
CSH.LONG lda #CSH.TYPE.LONG
|
CSH.LONG lda #CSH.T.LONG
|
||||||
bra CSH.TYPE
|
bra CSH.TYPE
|
||||||
CSH.FLOAT lda #CSH.TYPE.FLOAT
|
CSH.FLOAT lda #CSH.T.FLOAT
|
||||||
|
|
||||||
CSH.TYPE >STA.G CSH.ACCT
|
CSH.TYPE >STA.G CSH.ACCT
|
||||||
|
|
||||||
@ -488,7 +493,7 @@ CSH.Lookup phy Y = len
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.GetNumInACC >LDA.G CSH.ACCT
|
CSH.GetNumInACC >LDA.G CSH.ACCT
|
||||||
cmp #CSH.TYPE.FLOAT
|
cmp #CSH.T.FLOAT
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
>PUSHWI ZPCSHBufPtr
|
>PUSHWI ZPCSHBufPtr
|
||||||
@ -721,7 +726,7 @@ CSH.StoreACCToVar
|
|||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.IsACC0 >LDA.G CSH.ACCT
|
CSH.IsACC0 >LDA.G CSH.ACCT
|
||||||
cmp #CSH.TYPE.FLOAT
|
cmp #CSH.T.FLOAT
|
||||||
bne .1 char,int,long
|
bne .1 char,int,long
|
||||||
>LDA.G CSH.ACC
|
>LDA.G CSH.ACC
|
||||||
bne .9
|
bne .9
|
||||||
@ -756,7 +761,7 @@ CSH.BOPS.ADD
|
|||||||
|
|
||||||
|
|
||||||
CSH.BOPS.SUB >LDA.G CSH.ACCT
|
CSH.BOPS.SUB >LDA.G CSH.ACCT
|
||||||
cmp #CSH.TYPE.FLOAT
|
cmp #CSH.T.FLOAT
|
||||||
beq .8
|
beq .8
|
||||||
|
|
||||||
|
|
||||||
@ -796,27 +801,26 @@ CSH.BOPS.LOR
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.Push pha
|
CSH.Push pha
|
||||||
>LDA.G CSH.StackPtr
|
>LDA.G CSH.StackPtr
|
||||||
|
inc
|
||||||
|
beq .9
|
||||||
|
sta (pData),y
|
||||||
|
dec
|
||||||
tay
|
tay
|
||||||
|
|
||||||
pla
|
pla
|
||||||
sta (ZPCSHStack),y
|
sta (ZPCSHStack),y
|
||||||
iny
|
|
||||||
beq .9
|
|
||||||
tya
|
|
||||||
>STA.G CSH.StackPtr
|
|
||||||
sta (pData),y
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 lda #CSH.E.SOVERFLW
|
.9 pla
|
||||||
|
lda #CSH.E.SOVERFLW
|
||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.Pop >LDA.G CSH.StackPtr
|
CSH.Pop >LDA.G CSH.StackPtr
|
||||||
beq .9
|
beq .9
|
||||||
dec
|
dec
|
||||||
tay
|
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
tay
|
||||||
lda (ZPCSHStack),y
|
lda (ZPCSHStack),y
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
@ -825,12 +829,12 @@ CSH.Pop >LDA.G CSH.StackPtr
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CSH.CheckStack pha
|
CSH.CheckStack tax
|
||||||
>LDA.G CSH.StackPtr
|
>LDA.G CSH.StackPtr
|
||||||
beq .9
|
beq .9
|
||||||
dec
|
dec
|
||||||
tay
|
tay
|
||||||
pla
|
txa
|
||||||
cmp (ZPCSHStack),y
|
cmp (ZPCSHStack),y
|
||||||
bne .9
|
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
|
ldy #S.PS.RC
|
||||||
lda (pPs),y
|
lda (pPs),y
|
||||||
beq .11
|
beq .11
|
||||||
|
|
||||||
jsr IO.PrintErrMsg
|
jsr IO.PrintErrMsg
|
||||||
bcs CS.RUN.EXIT.RTS
|
bcs .9
|
||||||
|
|
||||||
.11 >LDA.G bPause
|
.11 >LDA.G bPause
|
||||||
bpl .13
|
bpl .13
|
||||||
|
|
||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs .8
|
bcs .8
|
||||||
|
|
||||||
|
>STZ.G bPause
|
||||||
|
|
||||||
.13 jsr CheckSleep
|
.13 jsr CheckSleep
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
>LDA.G CSH.hBuf batch mode ?
|
>LDA.G CSH.hBuf batch mode ?
|
||||||
beq .10
|
bne CS.RUN.BATCH
|
||||||
|
|
||||||
jmp CS.RUN.BATCH
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.10 jsr CL.RESET reset CmdBuf
|
.10 jsr CL.RESET reset CmdBuf
|
||||||
|
|
||||||
.12 jsr CL.PrintPrompt
|
.12 jsr CL.PrintPrompt
|
||||||
bcs CS.RUN.EXIT.RTS
|
bcs .9
|
||||||
|
|
||||||
.1 >SYSCALL Sleep
|
.1 >SYSCALL Sleep
|
||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs .1 no char
|
bcs .1 no char
|
||||||
|
|
||||||
jsr CS.CHARIN
|
jsr CL.CHARIN
|
||||||
|
|
||||||
>LDA.G bCmdBufExec Something to execute ?
|
>LDA.G bCmdBufExec Something to execute ?
|
||||||
bpl .1
|
bpl .1
|
||||||
|
|
||||||
>LDA.G CmdBuflen
|
|
||||||
beq .10 Empty line
|
|
||||||
|
|
||||||
jsr CMD.Parse
|
jsr CMD.Parse
|
||||||
|
|
||||||
@ -204,14 +202,14 @@ CS.RUN >LDA.G bReadMode READ Command ?
|
|||||||
sta (pPs),y
|
sta (pPs),y
|
||||||
|
|
||||||
>LDA.G bExit
|
>LDA.G bExit
|
||||||
bne CS.RUN.EXIT
|
bne .80
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CS.RUN.EXIT lda #0
|
.80 lda #0
|
||||||
CS.RUN.EXIT.ERR sec
|
sec
|
||||||
CS.RUN.EXIT.RTS rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.RUN.READ lda #0 reset Buffer
|
CS.RUN.READ lda #0 reset Buffer
|
||||||
sta (ZPCMDBuf)
|
sta (ZPCMDBuf)
|
||||||
@ -220,7 +218,7 @@ CS.RUN.READ lda #0 reset Buffer
|
|||||||
>SYSCALL GetChar
|
>SYSCALL GetChar
|
||||||
bcs .1 no char
|
bcs .1 no char
|
||||||
|
|
||||||
jsr CS.CHARIN
|
jsr CL.CHARIN
|
||||||
|
|
||||||
>LDA.G bCmdBufExec
|
>LDA.G bCmdBufExec
|
||||||
bpl .1
|
bpl .1
|
||||||
@ -231,7 +229,24 @@ CS.RUN.READ lda #0 reset Buffer
|
|||||||
>SYSCALL SetEnv
|
>SYSCALL SetEnv
|
||||||
rts
|
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
|
bcc .7
|
||||||
|
|
||||||
cmp #MLI.E.EOF
|
cmp #MLI.E.EOF
|
||||||
@ -296,105 +311,6 @@ CS.DOEVENT lda (pEvent)
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
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
|
CS.QUIT jsr HIS.Quit
|
||||||
jsr CSH.Quit
|
jsr CSH.Quit
|
||||||
jsr CMD.Quit
|
jsr CMD.Quit
|
||||||
@ -522,8 +438,15 @@ CSH.TYPES >PSTR "char"
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* int printf ( const char * format, ... );
|
* int printf ( const char * format, ... );
|
||||||
CSH.FUNCTIONS >PSTR "printf"
|
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 );
|
* float cos ( float x );
|
||||||
>PSTR "cos"
|
>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.GREETINGS >CSTR "\r\nA2osX-Shell 0.9.1\r\n\r\n"
|
||||||
MSG.PROMPT >CSTR "$ "
|
MSG.PROMPT >CSTR "$ "
|
||||||
|
Loading…
Reference in New Issue
Block a user