mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-22 12:29:21 +00:00
Kernel version 0.9 : SHELL, enhancement in Batch mode....(Cont.)
This commit is contained in:
parent
3cf8399ffb
commit
7d37574112
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -270,8 +270,6 @@ CS.DOEVENT sec
|
||||
CS.QUIT jsr FIO.FileClose
|
||||
bne CS.QUIT
|
||||
|
||||
>DEBUG
|
||||
|
||||
jsr SYM.Quit
|
||||
|
||||
ldy #ASM.T.hMem
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
Loading…
x
Reference in New Issue
Block a user