mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-14 13:29:02 +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
|
AUTO 6
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
TXT.Reset ldy #CSH.SEPStack
|
||||||
|
tya
|
||||||
|
sta (pData),y
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
TXT.Exec jsr TXT.GetBuffer
|
TXT.Exec jsr TXT.GetBuffer
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
@ -35,9 +40,12 @@ TXT.Exec jsr TXT.GetBuffer
|
|||||||
tya
|
tya
|
||||||
sta (pData)
|
sta (pData)
|
||||||
|
|
||||||
jsr TXT.CheckKeyWord
|
jsr TXT.CheckKeyword
|
||||||
bcs .5 not an internal SCRipt keyword....
|
bcs .5 not an internal SCRipt keyword....
|
||||||
|
|
||||||
|
lda #0
|
||||||
|
sta (pData) Reset Cmdline
|
||||||
|
|
||||||
jmp (J.TXTCMDS,x)
|
jmp (J.TXTCMDS,x)
|
||||||
|
|
||||||
.5 lda (ZPBufPtr) restore char....
|
.5 lda (ZPBufPtr) restore char....
|
||||||
@ -59,7 +67,7 @@ TXT.Exec jsr TXT.GetBuffer
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TXT.CheckKeyWord
|
TXT.CheckKeyword
|
||||||
phy
|
phy
|
||||||
>LDYA L.TXTCMDS
|
>LDYA L.TXTCMDS
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
@ -134,7 +142,11 @@ TXT.SetBufPtr ldy #BatchFilePtr
|
|||||||
sta ZPBufPtr+1
|
sta ZPBufPtr+1
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TXT.SavePtr rts
|
TXT.SavePtr ldx ZPBufPtr
|
||||||
|
stx CSH.SavePtr
|
||||||
|
ldx ZPBufPtr+1
|
||||||
|
stx CSH.SavePtr+1
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TXT.PushPtr rts
|
TXT.PushPtr rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -230,27 +242,108 @@ TXT.Exec.IF jsr TXT.GetCharNB
|
|||||||
|
|
||||||
jsr TXT.ExpEval
|
jsr TXT.ExpEval
|
||||||
bcs .99
|
bcs .99
|
||||||
tax
|
|
||||||
|
|
||||||
jsr TXT.GetCharNB
|
jsr TXT.GetCharNB
|
||||||
bcs .9
|
bcs .99
|
||||||
cmp #')'
|
cmp #')'
|
||||||
bne .9
|
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
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
|
||||||
.9 lda #SYSMGR.ERRSYN
|
.9 lda #SYSMGR.ERRSYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.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
|
clc
|
||||||
rts
|
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
|
MAN
|
||||||
SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT
|
SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT
|
||||||
|
@ -21,6 +21,7 @@ ZPBufEnd .EQ ZPBIN+12
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CmdLine.MAX .EQ 127
|
CmdLine.MAX .EQ 127
|
||||||
VarLen.MAX .EQ 15
|
VarLen.MAX .EQ 15
|
||||||
|
CSH.Stack.MAX .EQ 15
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* File Header (16 Bytes)
|
* File Header (16 Bytes)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -103,6 +104,9 @@ CS.INIT jsr SetPWD
|
|||||||
ldy #bExitOnEOF
|
ldy #bExitOnEOF
|
||||||
lda #$FF
|
lda #$FF
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
|
jsr TXT.Reset
|
||||||
|
|
||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
@ -226,20 +230,29 @@ CS.RUN.BATCH jsr TXT.Exec
|
|||||||
|
|
||||||
jsr CmdBuffer.Normalize
|
jsr CmdBuffer.Normalize
|
||||||
lda (pData)
|
lda (pData)
|
||||||
beq CS.RUN.BATCH Empty line
|
beq .8 Empty line....nothing to do....
|
||||||
|
|
||||||
>LDYA pData
|
>LDYA pData
|
||||||
jsr Cmd.ExecYA
|
jsr Cmd.ExecYA
|
||||||
ldy #S.PS.RC
|
|
||||||
|
.8 ldy #S.PS.RC
|
||||||
sta (pPs),y
|
sta (pPs),y
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 ldy #bExitOnEOF
|
.9 cmp #MLI.ERR.EOF
|
||||||
lda (pData),y
|
bne .8
|
||||||
bne CS.RUN.EXIT
|
|
||||||
|
lda #0
|
||||||
|
|
||||||
|
ldy #S.PS.RC
|
||||||
|
sta (pPs),y
|
||||||
|
|
||||||
|
ldy #bExitOnEOF
|
||||||
|
lda (pData),y
|
||||||
|
asl CS if bExitOnEOF
|
||||||
|
lda #0
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CS.DOEVENT sec
|
CS.DOEVENT sec
|
||||||
@ -509,6 +522,9 @@ INTCMDS >PSTR "CD"
|
|||||||
>PSTR "TIME"
|
>PSTR "TIME"
|
||||||
.HS 00
|
.HS 00
|
||||||
TXTCMDS >PSTR "IF"
|
TXTCMDS >PSTR "IF"
|
||||||
|
>PSTR "WHILE"
|
||||||
|
>PSTR "BREAK"
|
||||||
|
>PSTR "CONTINUE"
|
||||||
.HS 00
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n"
|
MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n"
|
||||||
@ -527,10 +543,9 @@ CMD .BS 256
|
|||||||
ARGS .BS 256
|
ARGS .BS 256
|
||||||
TIME .BS S.TIME
|
TIME .BS S.TIME
|
||||||
STAT .BS S.STAT
|
STAT .BS S.STAT
|
||||||
hNEWPATH .BS 1
|
|
||||||
hCmdLine .BS 1
|
|
||||||
hFullPath .BS 1
|
|
||||||
bStartProc .BS 1
|
bStartProc .BS 1
|
||||||
|
CSH.ACC .BS 4
|
||||||
|
CSH.ARG .BS 4
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
@ -549,6 +564,8 @@ CmdHistory.END .BS 1
|
|||||||
hBatchFile .BS 1
|
hBatchFile .BS 1
|
||||||
BatchFilePtr .BS 2
|
BatchFilePtr .BS 2
|
||||||
BatchFileLen .BS 2
|
BatchFileLen .BS 2
|
||||||
|
CSH.SavePtr .BS 2
|
||||||
|
CSH.SEPStack .BS CSH.Stack.MAX+1
|
||||||
DS.END .ED
|
DS.END .ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
|
Loading…
Reference in New Issue
Block a user