mirror of
https://github.com/A2osX/A2osX.git
synced 2024-08-13 21:29:33 +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
|
CS.QUIT jsr FIO.FileClose
|
||||||
bne CS.QUIT
|
bne CS.QUIT
|
||||||
|
|
||||||
>DEBUG
|
|
||||||
|
|
||||||
jsr SYM.Quit
|
jsr SYM.Quit
|
||||||
|
|
||||||
ldy #ASM.T.hMem
|
ldy #ASM.T.hMem
|
||||||
|
@ -7,7 +7,7 @@ AUTO 6
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* Y,A -> Command line (formatted & not empty)
|
* Y,A -> Command line (formatted & not empty)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.ExecYA stz Cmd.Exec.Mode
|
Cmd.ExecYA stz bStartProc
|
||||||
|
|
||||||
Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
|
Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
@ -17,14 +17,8 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
|
|||||||
ldx #0 ARGS len
|
ldx #0 ARGS len
|
||||||
|
|
||||||
lda (ZPPtr1),y
|
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
|
sty CMD update CMD len
|
||||||
|
|
||||||
tya
|
tya
|
||||||
@ -51,7 +45,7 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
|
|||||||
pla
|
pla
|
||||||
>SYSCALL FreeMemA
|
>SYSCALL FreeMemA
|
||||||
|
|
||||||
>LDYA L.CMDS
|
>LDYA L.INTCMDS
|
||||||
>STYA ZPPtr2
|
>STYA ZPPtr2
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
@ -99,7 +93,6 @@ Cmd.ExecYA.1 >SYSCALL ExpandPStrYA
|
|||||||
bcc .1
|
bcc .1
|
||||||
inc ZPPtr2+1
|
inc ZPPtr2+1
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.Exec.EXT ldy #1
|
Cmd.Exec.EXT ldy #1
|
||||||
lda CMD,y
|
lda CMD,y
|
||||||
@ -187,7 +180,7 @@ Cmd.Exec.EXT.BIN
|
|||||||
>SYSCALL PStrCat
|
>SYSCALL PStrCat
|
||||||
|
|
||||||
.1 >LDYAI UsrBuf256
|
.1 >LDYAI UsrBuf256
|
||||||
bit Cmd.Exec.Mode
|
bit bStartProc
|
||||||
bmi .2 startproc
|
bmi .2 startproc
|
||||||
|
|
||||||
>SYSCALL ExecProcessNewEnvYA
|
>SYSCALL ExecProcessNewEnvYA
|
||||||
@ -206,10 +199,7 @@ Cmd.Exec.PWD ldy #S.PS.hPREFIX
|
|||||||
>SYSCALL GetMemPtrA
|
>SYSCALL GetMemPtrA
|
||||||
>SYSCALL PPrintFYA
|
>SYSCALL PPrintFYA
|
||||||
bcs .9
|
bcs .9
|
||||||
lda #13
|
jmp Cmd.Exec.ECHO.CR
|
||||||
>SYSCALL PutCA
|
|
||||||
lda #10
|
|
||||||
>SYSCALL PutCA
|
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
Cmd.Exec.CD1 stz UsrBuf256
|
Cmd.Exec.CD1 stz UsrBuf256
|
||||||
@ -324,7 +314,7 @@ Cmd.Exec.STARTPROC
|
|||||||
lda ARGS
|
lda ARGS
|
||||||
beq Cmd.Exec.ERRSYN
|
beq Cmd.Exec.ERRSYN
|
||||||
sec
|
sec
|
||||||
ror Cmd.Exec.Mode
|
ror bStartProc
|
||||||
|
|
||||||
>LDYA L.ARGS
|
>LDYA L.ARGS
|
||||||
jmp Cmd.ExecYA.1
|
jmp Cmd.ExecYA.1
|
||||||
@ -432,26 +422,26 @@ Cmd.Exec.TIME clc
|
|||||||
|
|
||||||
>LDYAI UsrBuf256
|
>LDYAI UsrBuf256
|
||||||
>SYSCALL PPrintFYA
|
>SYSCALL PPrintFYA
|
||||||
bcs .9
|
bcs Cmd.Exec.ECHO.RTS
|
||||||
lda #13
|
bra Cmd.Exec.ECHO.CR
|
||||||
>SYSCALL PutCA
|
|
||||||
lda #10
|
|
||||||
>SYSCALL PutCA
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.Exec.ECHO lda ARGS
|
Cmd.Exec.ECHO lda ARGS
|
||||||
beq .1
|
beq Cmd.Exec.ECHO.CR
|
||||||
|
|
||||||
>LDYA L.ARGS
|
>LDYA L.ARGS
|
||||||
>SYSCALL PPrintFYA
|
>SYSCALL PPrintFYA
|
||||||
bcs .9
|
bcs Cmd.Exec.ECHO.RTS
|
||||||
|
|
||||||
.1 lda #13
|
Cmd.Exec.ECHO.CR
|
||||||
|
lda #13
|
||||||
>SYSCALL PutCA
|
>SYSCALL PutCA
|
||||||
|
bcs Cmd.Exec.ECHO.RTS
|
||||||
|
|
||||||
lda #10
|
lda #10
|
||||||
>SYSCALL PutCA
|
>SYSCALL PutCA
|
||||||
|
|
||||||
.9 rts
|
Cmd.Exec.ECHO.RTS
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
Cmd.Exec.READ lda ARGS
|
Cmd.Exec.READ lda ARGS
|
||||||
beq .9
|
beq .9
|
||||||
|
@ -6,35 +6,47 @@ AUTO 6
|
|||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
TXT.Exec jsr TXT.GetBuffer
|
TXT.Exec jsr TXT.GetBuffer
|
||||||
jsr TXT.GetChar
|
|
||||||
|
ldy #0
|
||||||
|
|
||||||
|
jsr TXT.GetCharNB
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.11 cmp #' '
|
jsr TXT.SavePtr Save Ptr, in case of while,for....
|
||||||
bne .10
|
|
||||||
|
|
||||||
jsr TXT.GetNextChar
|
|
||||||
bcc .11
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.10 ldy #0
|
|
||||||
|
|
||||||
cmp #$0D
|
cmp #$0D
|
||||||
beq .2
|
beq .6 empty line...skip...
|
||||||
|
|
||||||
.1 iny
|
.1 iny
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
cpy #CmdLine.MAX
|
cpy #CmdLine.MAX
|
||||||
beq .2
|
beq .7 Buffer full, try execute...
|
||||||
|
|
||||||
jsr TXT.GetNextChar
|
jsr TXT.GetNextChar
|
||||||
bcs .3
|
bcs .7 EOF, try execute...
|
||||||
cmp #$0D
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
.2 jsr TXT.GetNextChar Skip CR
|
cmp #$0D EOL, skip CR and exec...
|
||||||
|
beq .6
|
||||||
|
|
||||||
.3 tya
|
jsr TXT.CheckCharNB
|
||||||
|
bcc .1 still in keyword....loop
|
||||||
|
|
||||||
|
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)
|
sta (pData)
|
||||||
|
|
||||||
ldy #bEcho
|
ldy #bEcho
|
||||||
@ -47,6 +59,53 @@ TXT.Exec jsr TXT.GetBuffer
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.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
|
TXT.GetBuffer ldy #hBatchFile
|
||||||
lda (pData),y
|
lda (pData),y
|
||||||
>SYSCALL GetMemPtrA
|
>SYSCALL GetMemPtrA
|
||||||
@ -75,7 +134,33 @@ TXT.SetBufPtr ldy #BatchFilePtr
|
|||||||
sta ZPBufPtr+1
|
sta ZPBufPtr+1
|
||||||
rts
|
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
|
TXT.GetNextChar phy
|
||||||
ldy #BatchFilePtr
|
ldy #BatchFilePtr
|
||||||
@ -94,7 +179,7 @@ TXT.GetNextChar phy
|
|||||||
inc ZPBufPtr
|
inc ZPBufPtr
|
||||||
bne TXT.GetChar
|
bne TXT.GetChar
|
||||||
inc ZPBufPtr+1
|
inc ZPBufPtr+1
|
||||||
|
*--------------------------------------
|
||||||
TXT.GetChar lda ZPBufPtr
|
TXT.GetChar lda ZPBufPtr
|
||||||
eor ZPBufEnd
|
eor ZPBufEnd
|
||||||
bne .1
|
bne .1
|
||||||
@ -110,6 +195,62 @@ TXT.GetChar lda ZPBufPtr
|
|||||||
.1 lda (ZPBufPtr)
|
.1 lda (ZPBufPtr)
|
||||||
clc
|
clc
|
||||||
rts
|
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
|
MAN
|
||||||
SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT
|
SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT
|
||||||
|
@ -55,7 +55,7 @@ L.TIME .DA TIME
|
|||||||
L.STAT .DA STAT
|
L.STAT .DA STAT
|
||||||
L.FMT.DATE .DA FMT.DATE
|
L.FMT.DATE .DA FMT.DATE
|
||||||
L.FMT.TIME .DA FMT.TIME
|
L.FMT.TIME .DA FMT.TIME
|
||||||
L.CMDS .DA CMDS
|
L.INTCMDS .DA INTCMDS
|
||||||
J.INTCMDS .DA Cmd.Exec.CD
|
J.INTCMDS .DA Cmd.Exec.CD
|
||||||
.DA Cmd.Exec.DATE
|
.DA Cmd.Exec.DATE
|
||||||
.DA Cmd.Exec.ECHO
|
.DA Cmd.Exec.ECHO
|
||||||
@ -66,6 +66,8 @@ J.INTCMDS .DA Cmd.Exec.CD
|
|||||||
.DA Cmd.Exec.SET
|
.DA Cmd.Exec.SET
|
||||||
.DA Cmd.Exec.STARTPROC
|
.DA Cmd.Exec.STARTPROC
|
||||||
.DA Cmd.Exec.TIME
|
.DA Cmd.Exec.TIME
|
||||||
|
L.TXTCMDS .DA TXTCMDS
|
||||||
|
J.TXTCMDS .DA TXT.Exec.IF
|
||||||
L.ERR.Codes .DA ERR.Codes
|
L.ERR.Codes .DA ERR.Codes
|
||||||
L.ERR.Messages .DA ERR.Messages
|
L.ERR.Messages .DA ERR.Messages
|
||||||
.DA 0
|
.DA 0
|
||||||
@ -495,7 +497,7 @@ CS.END
|
|||||||
ENV.PATH >PSTR "PATH"
|
ENV.PATH >PSTR "PATH"
|
||||||
ENV.PWD >PSTR "PWD"
|
ENV.PWD >PSTR "PWD"
|
||||||
ENV.PS1 >PSTR "PS1"
|
ENV.PS1 >PSTR "PS1"
|
||||||
CMDS >PSTR "CD"
|
INTCMDS >PSTR "CD"
|
||||||
>PSTR "DATE"
|
>PSTR "DATE"
|
||||||
>PSTR "ECHO"
|
>PSTR "ECHO"
|
||||||
>PSTR "EXIT"
|
>PSTR "EXIT"
|
||||||
@ -506,6 +508,8 @@ CMDS >PSTR "CD"
|
|||||||
>PSTR "STARTPROC"
|
>PSTR "STARTPROC"
|
||||||
>PSTR "TIME"
|
>PSTR "TIME"
|
||||||
.HS 00
|
.HS 00
|
||||||
|
TXTCMDS >PSTR "IF"
|
||||||
|
.HS 00
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n"
|
MSG.GREETINGS >PSTR "\r\nA2osX-Shell\r\n\r\n"
|
||||||
MSG.PROMPT >PSTR "%S$ "
|
MSG.PROMPT >PSTR "%S$ "
|
||||||
@ -525,8 +529,8 @@ TIME .BS S.TIME
|
|||||||
STAT .BS S.STAT
|
STAT .BS S.STAT
|
||||||
hNEWPATH .BS 1
|
hNEWPATH .BS 1
|
||||||
hCmdLine .BS 1
|
hCmdLine .BS 1
|
||||||
Cmd.Exec.Mode .BS 1
|
|
||||||
hFullPath .BS 1
|
hFullPath .BS 1
|
||||||
|
bStartProc .BS 1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.DUMMY
|
.DUMMY
|
||||||
.OR 0
|
.OR 0
|
||||||
@ -545,8 +549,7 @@ CmdHistory.END .BS 1
|
|||||||
hBatchFile .BS 1
|
hBatchFile .BS 1
|
||||||
BatchFilePtr .BS 2
|
BatchFilePtr .BS 2
|
||||||
BatchFileLen .BS 2
|
BatchFileLen .BS 2
|
||||||
DS.END
|
DS.END .ED
|
||||||
.ED
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE /A2OSX.SRC/SBIN/SHELL.S
|
SAVE /A2OSX.SRC/SBIN/SHELL.S
|
||||||
|
Loading…
Reference in New Issue
Block a user