mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-21 15:32:15 +00:00
Kernel version 0.9 : SHELL, enhancement in Batch mode....(Cont.)
This commit is contained in:
parent
7d37574112
commit
1ae5277b45
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user