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 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

View File

@ -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