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

This commit is contained in:
Rémy GIBERT 2017-07-11 17:53:52 +02:00
parent 3cf8399ffb
commit 7d37574112
7 changed files with 184 additions and 52 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -270,8 +270,6 @@ CS.DOEVENT sec
CS.QUIT jsr FIO.FileClose
bne CS.QUIT
>DEBUG
jsr SYM.Quit
ldy #ASM.T.hMem

View File

@ -7,7 +7,7 @@ AUTO 6
*--------------------------------------
* Y,A -> Command line (formatted & not empty)
*--------------------------------------
Cmd.ExecYA stz Cmd.Exec.Mode
Cmd.ExecYA stz bStartProc
Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
>STYA ZPPtr1
@ -17,14 +17,8 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
ldx #0 ARGS len
lda (ZPPtr1),y
.10
* cmp #'a'
* bcc .11
* cmp #'z'+1
* bcs .11
* eor #$20 to Uppercase
.11 sta CMD,y Store Cmd in Buffer
.10 sta CMD,y Store Cmd in Buffer
sty CMD update CMD len
tya
@ -51,7 +45,7 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
pla
>SYSCALL FreeMemA
>LDYA L.CMDS
>LDYA L.INTCMDS
>STYA ZPPtr2
ldx #0
@ -98,8 +92,7 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
sta ZPPtr2
bcc .1
inc ZPPtr2+1
bra .1
bra .1
*--------------------------------------
Cmd.Exec.EXT ldy #1
lda CMD,y
@ -187,7 +180,7 @@ Cmd.Exec.EXT.BIN
>SYSCALL PStrCat
.1 >LDYAI UsrBuf256
bit Cmd.Exec.Mode
bit bStartProc
bmi .2 startproc
>SYSCALL ExecProcessNewEnvYA
@ -206,10 +199,7 @@ Cmd.Exec.PWD ldy #S.PS.hPREFIX
>SYSCALL GetMemPtrA
>SYSCALL PPrintFYA
bcs .9
lda #13
>SYSCALL PutCA
lda #10
>SYSCALL PutCA
jmp Cmd.Exec.ECHO.CR
.9 rts
Cmd.Exec.CD1 stz UsrBuf256
@ -324,7 +314,7 @@ Cmd.Exec.STARTPROC
lda ARGS
beq Cmd.Exec.ERRSYN
sec
ror Cmd.Exec.Mode
ror bStartProc
>LDYA L.ARGS
jmp Cmd.ExecYA.1
@ -432,26 +422,26 @@ Cmd.Exec.TIME clc
>LDYAI UsrBuf256
>SYSCALL PPrintFYA
bcs .9
lda #13
>SYSCALL PutCA
lda #10
>SYSCALL PutCA
.9 rts
bcs Cmd.Exec.ECHO.RTS
bra Cmd.Exec.ECHO.CR
*--------------------------------------
Cmd.Exec.ECHO lda ARGS
beq .1
beq Cmd.Exec.ECHO.CR
>LDYA L.ARGS
>SYSCALL PPrintFYA
bcs .9
bcs Cmd.Exec.ECHO.RTS
.1 lda #13
Cmd.Exec.ECHO.CR
lda #13
>SYSCALL PutCA
bcs Cmd.Exec.ECHO.RTS
lda #10
>SYSCALL PutCA
.9 rts
Cmd.Exec.ECHO.RTS
rts
*--------------------------------------
Cmd.Exec.READ lda ARGS
beq .9

View File

@ -6,35 +6,47 @@ AUTO 6
.LIST OFF
*--------------------------------------
TXT.Exec jsr TXT.GetBuffer
jsr TXT.GetChar
ldy #0
jsr TXT.GetCharNB
bcs .9
.11 cmp #' '
bne .10
jsr TXT.GetNextChar
bcc .11
bcs .9
.10 ldy #0
jsr TXT.SavePtr Save Ptr, in case of while,for....
cmp #$0D
beq .2
beq .6 empty line...skip...
.1 iny
sta (pData),y
cpy #CmdLine.MAX
beq .2
beq .7 Buffer full, try execute...
jsr TXT.GetNextChar
bcs .3
cmp #$0D
bne .1
bcs .7 EOF, try execute...
.2 jsr TXT.GetNextChar Skip CR
cmp #$0D EOL, skip CR and exec...
beq .6
jsr TXT.CheckCharNB
bcc .1 still in keyword....loop
.3 tya
tya
sta (pData)
jsr TXT.CheckKeyWord
bcs .5 not an internal SCRipt keyword....
jmp (J.TXTCMDS,x)
.5 lda (ZPBufPtr) restore char....
bra .1
.6 jsr TXT.GetNextChar Skip last char...
.7 tya
beq .8 empty line....nothing to do..
sta (pData)
ldy #bEcho
@ -47,6 +59,53 @@ TXT.Exec jsr TXT.GetBuffer
.8 clc
.9 rts
*--------------------------------------
TXT.CheckKeyWord
phy
>LDYA L.TXTCMDS
>STYA ZPPtr2
ldx #0
.1 lda (ZPPtr2)
beq .9 Ending 0, not found....
cmp (pData) Same Len ?
bne .4
tay
.2 lda (pData),y
cmp #'a' To Uppercase
bcc .3
cmp #'z'+1
bcs .3
eor #$20
.3 cmp (ZPPtr2),y
bne .4
dey
bne .2
ply
clc Found an internal Cmd...
rts
.4 inx
inx
lda ZPPtr2
sec
adc (ZPPtr2)
sta ZPPtr2
bcc .1
inc ZPPtr2+1
bra .1
.9 ply
sec
rts
*--------------------------------------
TXT.GetBuffer ldy #hBatchFile
lda (pData),y
>SYSCALL GetMemPtrA
@ -75,7 +134,33 @@ TXT.SetBufPtr ldy #BatchFilePtr
sta ZPBufPtr+1
rts
*--------------------------------------
TXT.PushPtr
TXT.SavePtr rts
*--------------------------------------
TXT.PushPtr rts
*--------------------------------------
TXT.GetCharNB jsr TXT.GetChar
bcs TXT.GetNextCharNB.RTS
jsr TXT.CheckCharNB
bcc TXT.GetNextCharNB.RTS
*--------------------------------------
TXT.GetNextCharNB
jsr TXT.GetNextChar
bcs TXT.GetNextCharNB.RTS
jsr TXT.CheckCharNB
bcs TXT.GetNextCharNB
TXT.GetNextCharNB.RTS
rts
*--------------------------------------
TXT.CheckCharNB cmp #32 SPACE
beq .9
cmp #13 CR
beq .9
cmp #10 LF
beq .9
cmp #8 TAB
beq .9
clc
.9 rts
*--------------------------------------
TXT.GetNextChar phy
ldy #BatchFilePtr
@ -94,7 +179,7 @@ TXT.GetNextChar phy
inc ZPBufPtr
bne TXT.GetChar
inc ZPBufPtr+1
*--------------------------------------
TXT.GetChar lda ZPBufPtr
eor ZPBufEnd
bne .1
@ -110,6 +195,62 @@ TXT.GetChar lda ZPBufPtr
.1 lda (ZPBufPtr)
clc
rts
*---------------------------------------
TXT.IsLetterOrDigit
jsr TXT.IsDigit
bcc TXT.IsLetterRTS
*---------------------------------------
TXT.IsLetter cmp #'A'
bcc .9
cmp #'Z'+1
bcc TXT.IsLetterRTS
cmp #'a'
bcc .9
cmp #'z'+1
rts CC if lowercase
.9 sec
TXT.IsLetterRTS rts
*---------------------------------------
TXT.IsDigit cmp #'0'
bcc .9
cmp #'9'+1
rts cc if ok, cs if not
.9 sec
rts
*--------------------------------------
TXT.Exec.IF jsr TXT.GetCharNB
bcs .9
cmp #'('
bne .9
jsr TXT.ExpEval
bcs .99
tax
jsr TXT.GetCharNB
bcs .9
cmp #')'
bne .9
txa
clc
rts
.9 lda #SYSMGR.ERRSYN
sec
.99 rts
*--------------------------------------
TXT.ExpEval lda #1
clc
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT

View File

@ -55,7 +55,7 @@ L.TIME .DA TIME
L.STAT .DA STAT
L.FMT.DATE .DA FMT.DATE
L.FMT.TIME .DA FMT.TIME
L.CMDS .DA CMDS
L.INTCMDS .DA INTCMDS
J.INTCMDS .DA Cmd.Exec.CD
.DA Cmd.Exec.DATE
.DA Cmd.Exec.ECHO
@ -66,6 +66,8 @@ J.INTCMDS .DA Cmd.Exec.CD
.DA Cmd.Exec.SET
.DA Cmd.Exec.STARTPROC
.DA Cmd.Exec.TIME
L.TXTCMDS .DA TXTCMDS
J.TXTCMDS .DA TXT.Exec.IF
L.ERR.Codes .DA ERR.Codes
L.ERR.Messages .DA ERR.Messages
.DA 0
@ -495,7 +497,7 @@ CS.END
ENV.PATH >PSTR "PATH"
ENV.PWD >PSTR "PWD"
ENV.PS1 >PSTR "PS1"
CMDS >PSTR "CD"
INTCMDS >PSTR "CD"
>PSTR "DATE"
>PSTR "ECHO"
>PSTR "EXIT"
@ -506,6 +508,8 @@ CMDS >PSTR "CD"
>PSTR "STARTPROC"
>PSTR "TIME"
.HS 00
TXTCMDS >PSTR "IF"
.HS 00
*--------------------------------------
MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n"
MSG.PROMPT >PSTR "%S$ "
@ -525,8 +529,8 @@ TIME .BS S.TIME
STAT .BS S.STAT
hNEWPATH .BS 1
hCmdLine .BS 1
Cmd.Exec.Mode .BS 1
hFullPath .BS 1
bStartProc .BS 1
*--------------------------------------
.DUMMY
.OR 0
@ -545,8 +549,7 @@ CmdHistory.END .BS 1
hBatchFile .BS 1
BatchFilePtr .BS 2
BatchFileLen .BS 2
DS.END
.ED
DS.END .ED
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SBIN/SHELL.S