Kernel version 0.9 : SHELL, enhancement in Batch mode....(Cont.)

This commit is contained in:
Rémy GIBERT 2017-07-12 17:25:23 +02:00
parent 7d37574112
commit 1ae5277b45
5 changed files with 127 additions and 17 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -5,6 +5,11 @@ INC 1
AUTO 6
.LIST OFF
*--------------------------------------
TXT.Reset ldy #CSH.SEPStack
tya
sta (pData),y
rts
*--------------------------------------
TXT.Exec jsr TXT.GetBuffer
ldy #0
@ -35,9 +40,12 @@ TXT.Exec jsr TXT.GetBuffer
tya
sta (pData)
jsr TXT.CheckKeyWord
jsr TXT.CheckKeyword
bcs .5 not an internal SCRipt keyword....
lda #0
sta (pData) Reset Cmdline
jmp (J.TXTCMDS,x)
.5 lda (ZPBufPtr) restore char....
@ -59,7 +67,7 @@ TXT.Exec jsr TXT.GetBuffer
.8 clc
.9 rts
*--------------------------------------
TXT.CheckKeyWord
TXT.CheckKeyword
phy
>LDYA L.TXTCMDS
>STYA ZPPtr2
@ -134,7 +142,11 @@ TXT.SetBufPtr ldy #BatchFilePtr
sta ZPBufPtr+1
rts
*--------------------------------------
TXT.SavePtr rts
TXT.SavePtr ldx ZPBufPtr
stx CSH.SavePtr
ldx ZPBufPtr+1
stx CSH.SavePtr+1
rts
*--------------------------------------
TXT.PushPtr rts
*--------------------------------------
@ -230,27 +242,108 @@ TXT.Exec.IF jsr TXT.GetCharNB
jsr TXT.ExpEval
bcs .99
tax
jsr TXT.GetCharNB
bcs .9
bcs .99
cmp #')'
bne .9
txa
jsr TXT.GetNextCharNB
bcs .99
cmp #'{'
bne .9
lda CSH.ACC
ora CSH.ACC+1
ora CSH.ACC+2
ora CSH.ACC+3
beq .6 eval returned false, skip {{....}}
jsr TXT.GetNextCharNB Skip '{'
lda #'}' Tell '}' is expected at the end of block
jsr TXT.PushSEP
bcs .99
rts
.6 ldx #1 expecting 1 '}'
.7 jsr TXT.GetNextChar
bcs .9
cmp #'{'
bne .71
inx
bra .7
.71 cmp #'}'
bne .7
dex
bne .7
clc
rts
.9 lda #SYSMGR.ERRSYN
sec
.99 rts
*--------------------------------------
TXT.ExpEval lda #1
TXT.PushSEP tax
ldy #CSH.SEPStack
lda (pData),y
cmp #CSH.SEPStack+CSH.Stack.MAX
beq .9
pha
inc
sta (pData),y
ply
txa
sta (pData),y
clc
rts
.9 lda #SYSMGR.ERRSYN
sec
rts
*--------------------------------------
TXT.PopSEP ldy #CSH.SEPStack
lda (pData),y
cmp #CSH.SEPStack
beq .9
dec
sta (pData),y
clc
rts
.9 lda #SYSMGR.ERRSYN
sec
rts
*--------------------------------------
TXT.CheckSEP tax
ldy #CSH.SEPStack
lda (pData),y
cmp #CSH.SEPStack
beq .9
tay
txa
cmp (pData),y
bne .9
clc
rts
.9 lda #SYSMGR.ERRSYN
sec
rts
*--------------------------------------
TXT.ExpEval jsr TXT.GetNextCharNB
bcs .9
lda #1
sta CSH.ACC
clc
.9 rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT

View File

@ -21,6 +21,7 @@ ZPBufEnd .EQ ZPBIN+12
*--------------------------------------
CmdLine.MAX .EQ 127
VarLen.MAX .EQ 15
CSH.Stack.MAX .EQ 15
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
@ -103,6 +104,9 @@ CS.INIT jsr SetPWD
ldy #bExitOnEOF
lda #$FF
sta (pData),y
jsr TXT.Reset
clc
.9 rts
*--------------------------------------
@ -226,20 +230,29 @@ CS.RUN.BATCH jsr TXT.Exec
jsr CmdBuffer.Normalize
lda (pData)
beq CS.RUN.BATCH Empty line
beq .8 Empty line....nothing to do....
>LDYA pData
jsr Cmd.ExecYA
ldy #S.PS.RC
.8 ldy #S.PS.RC
sta (pPs),y
clc
rts
.9 ldy #bExitOnEOF
lda (pData),y
bne CS.RUN.EXIT
.9 cmp #MLI.ERR.EOF
bne .8
lda #0
ldy #S.PS.RC
sta (pPs),y
ldy #bExitOnEOF
lda (pData),y
asl CS if bExitOnEOF
lda #0
clc
rts
*--------------------------------------
CS.DOEVENT sec
@ -509,6 +522,9 @@ INTCMDS >PSTR "CD"
>PSTR "TIME"
.HS 00
TXTCMDS >PSTR "IF"
>PSTR "WHILE"
>PSTR "BREAK"
>PSTR "CONTINUE"
.HS 00
*--------------------------------------
MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n"
@ -527,10 +543,9 @@ CMD .BS 256
ARGS .BS 256
TIME .BS S.TIME
STAT .BS S.STAT
hNEWPATH .BS 1
hCmdLine .BS 1
hFullPath .BS 1
bStartProc .BS 1
CSH.ACC .BS 4
CSH.ARG .BS 4
*--------------------------------------
.DUMMY
.OR 0
@ -549,6 +564,8 @@ CmdHistory.END .BS 1
hBatchFile .BS 1
BatchFilePtr .BS 2
BatchFileLen .BS 2
CSH.SavePtr .BS 2
CSH.SEPStack .BS CSH.Stack.MAX+1
DS.END .ED
*--------------------------------------
MAN