mirror of
https://github.com/A2osX/A2osX.git
synced 2024-12-23 21:30:48 +00:00
Kernel version 0.9 : SHELL, enhancement in Batch mode....(Cont.)
This commit is contained in:
parent
37c8230d5c
commit
417fcfe9aa
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -5,19 +5,46 @@ INC 1
|
||||
AUTO 6
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
TXT.Reset ldy #CSH.SEPStack
|
||||
tya
|
||||
CSH.Reset ldy #CSH.hStack
|
||||
lda (pData),y
|
||||
bne .1
|
||||
|
||||
>LDYAI 256
|
||||
>SYSCALL GetMemYA
|
||||
bcs .9
|
||||
txa
|
||||
ldy #CSH.hStack
|
||||
sta (pData),y
|
||||
rts
|
||||
|
||||
.1 lda #0
|
||||
ldy #CSH.StackPtr
|
||||
sta (pData),y
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
TXT.Exec jsr TXT.GetBuffer
|
||||
CSH.Exec jsr CSH.GetBuffer
|
||||
|
||||
ldy #CSH.hStack
|
||||
lda (pData),y
|
||||
>SYSCALL GetMemPtrA
|
||||
>STYA ZPCSHStack
|
||||
|
||||
ldy #0
|
||||
|
||||
jsr TXT.GetCharNB
|
||||
jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
|
||||
jsr TXT.SavePtr Save Ptr, in case of while,for....
|
||||
cmp #'}' End of block ?
|
||||
bne .10
|
||||
|
||||
jsr CSH.CheckStack must be on stack....
|
||||
bcs .9
|
||||
|
||||
jsr CSH.Pop was expected, get stacked Cmd...
|
||||
tax
|
||||
jmp (J.CSHCMDS.END,x)
|
||||
|
||||
.10 jsr CSH.SavePtr Save Ptr, in case of while,for....
|
||||
|
||||
cmp #$0D
|
||||
beq .6 empty line...skip...
|
||||
@ -26,50 +53,51 @@ TXT.Exec jsr TXT.GetBuffer
|
||||
sta (pData),y
|
||||
|
||||
cpy #CmdLine.MAX
|
||||
beq .7 Buffer full, try execute...
|
||||
beq .8 Buffer full, try execute...
|
||||
|
||||
jsr TXT.GetNextChar
|
||||
bcs .7 EOF, try execute...
|
||||
jsr CSH.GetNextChar
|
||||
bcs .8 EOF, try execute...
|
||||
|
||||
cmp #$0D EOL, skip CR and exec...
|
||||
beq .6
|
||||
|
||||
jsr TXT.CheckCharNB
|
||||
jsr CSH.CheckCharNB
|
||||
bcc .1 still in keyword....loop
|
||||
|
||||
tya
|
||||
sta (pData)
|
||||
|
||||
jsr TXT.CheckKeyword
|
||||
jsr CSH.CheckKeyword
|
||||
bcs .5 not an internal SCRipt keyword....
|
||||
|
||||
lda #0
|
||||
sta (pData) Reset Cmdline
|
||||
|
||||
jmp (J.TXTCMDS,x)
|
||||
stx CSH.CmdSave
|
||||
jmp (J.CSHCMDS,x)
|
||||
|
||||
.5 lda (ZPBufPtr) restore char....
|
||||
bra .1
|
||||
|
||||
.6 jsr TXT.GetNextChar Skip last char...
|
||||
.6 jsr CSH.GetNextChar Skip last char...
|
||||
|
||||
.7 tya
|
||||
beq .8 empty line....nothing to do..
|
||||
.8 tya
|
||||
beq .80 empty line....nothing to do..
|
||||
sta (pData)
|
||||
|
||||
ldy #bEcho
|
||||
lda (pData),y
|
||||
beq .8
|
||||
beq .80
|
||||
|
||||
>PUSHW pData
|
||||
>LDYA L.MSG.ECHO
|
||||
>SYSCALL PPrintFYA
|
||||
.8 clc
|
||||
.80 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
TXT.CheckKeyword
|
||||
CSH.CheckKeyword
|
||||
phy
|
||||
>LDYA L.TXTCMDS
|
||||
>LDYA L.CSHCMDS
|
||||
>STYA ZPPtr2
|
||||
|
||||
ldx #0
|
||||
@ -114,12 +142,12 @@ TXT.CheckKeyword
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
TXT.GetBuffer ldy #hBatchFile
|
||||
CSH.GetBuffer ldy #CSH.hBuf
|
||||
lda (pData),y
|
||||
>SYSCALL GetMemPtrA
|
||||
>STYA ZPBufBase
|
||||
|
||||
ldy #BatchFileLen
|
||||
ldy #CSH.BufLen
|
||||
lda (pData),y
|
||||
clc
|
||||
adc ZPBufBase
|
||||
@ -130,7 +158,7 @@ TXT.GetBuffer ldy #hBatchFile
|
||||
adc ZPBufBase+1
|
||||
sta ZPBufEnd+1
|
||||
|
||||
TXT.SetBufPtr ldy #BatchFilePtr
|
||||
CSH.SetBufPtr ldy #CSH.BufPtr
|
||||
lda (pData),y
|
||||
clc
|
||||
adc ZPBufBase
|
||||
@ -142,28 +170,202 @@ TXT.SetBufPtr ldy #BatchFilePtr
|
||||
sta ZPBufPtr+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
TXT.SavePtr ldx ZPBufPtr
|
||||
stx CSH.SavePtr
|
||||
CSH.SavePtr ldx ZPBufPtr
|
||||
stx CSH.BufPtrSave
|
||||
ldx ZPBufPtr+1
|
||||
stx CSH.SavePtr+1
|
||||
stx CSH.BufPtrSave+1
|
||||
rts
|
||||
*--------------------------------------
|
||||
TXT.PushPtr rts
|
||||
CSH.WHILE
|
||||
CSH.IF jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
cmp #'('
|
||||
bne .9
|
||||
|
||||
jsr CSH.GetNextCharNB
|
||||
bcs .9
|
||||
|
||||
jsr CSH.ExpEval
|
||||
bcs .99
|
||||
|
||||
jsr CSH.GetCharNB
|
||||
bcs .99
|
||||
cmp #')'
|
||||
bne .9
|
||||
|
||||
jsr CSH.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 CSH.GetNextCharNB Skip '{'
|
||||
|
||||
lda CSH.CmdSave Push "IF" or "WHILE"
|
||||
beq .1 if "IF", no need to push Saved Ptr
|
||||
|
||||
pha
|
||||
lda CSH.BufPtrSave+1 WHILE : push loop address...
|
||||
jsr CSH.Push
|
||||
lda CSH.BufPtrSave
|
||||
jsr CSH.Push
|
||||
pla
|
||||
|
||||
.1 jsr CSH.Push
|
||||
bcs .99
|
||||
|
||||
lda #'}' Tell '}' is expected at the end of block
|
||||
jsr CSH.Push
|
||||
bcs .99
|
||||
|
||||
rts
|
||||
|
||||
.6 ldx #1 expecting 1 '}' for now....
|
||||
|
||||
.7 jsr CSH.GetNextChar
|
||||
bcs .9
|
||||
cmp #'{'
|
||||
bne .71
|
||||
inx
|
||||
bra .7
|
||||
|
||||
.71 cmp #'}'
|
||||
bne .7
|
||||
txa
|
||||
beq .9
|
||||
dex
|
||||
bne .7
|
||||
|
||||
jsr CSH.GetNextChar
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
sec
|
||||
.99 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
|
||||
CSH.IF.END jsr CSH.GetNextChar just skip ending '}'
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
TXT.CheckCharNB cmp #32 SPACE
|
||||
CSH.WHILE.END jsr CSH.Pop
|
||||
ldy #CSH.BufPtr
|
||||
sta (pData),y
|
||||
jsr CSH.Pop
|
||||
ldy #CSH.BufPtr+1
|
||||
sta (pData),y
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.BREAK
|
||||
*--------------------------------------
|
||||
CSH.CONTINUE
|
||||
|
||||
lda #CSHERR.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.Push pha
|
||||
ldy #CSH.StackPtr
|
||||
lda (pData),y
|
||||
tay
|
||||
|
||||
pla
|
||||
sta (ZPCSHStack),y
|
||||
iny
|
||||
beq .9
|
||||
tya
|
||||
ldy #CSH.StackPtr
|
||||
sta (pData),y
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SOVERFLW
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.Pop ldy #CSH.StackPtr
|
||||
lda (pData),y
|
||||
beq .9
|
||||
dec
|
||||
tay
|
||||
sta (pData),y
|
||||
lda (ZPCSHStack),y
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.CheckStack pha
|
||||
ldy #CSH.StackPtr
|
||||
lda (pData),y
|
||||
beq .9
|
||||
dec
|
||||
tay
|
||||
pla
|
||||
cmp (ZPCSHStack),y
|
||||
bne .9
|
||||
|
||||
tya
|
||||
ldy #CSH.StackPtr
|
||||
sta (pData),y
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.ExpEval stz CSH.ACC
|
||||
stz CSH.ACC+1
|
||||
stz CSH.ACC+2
|
||||
stz CSH.ACC+3
|
||||
|
||||
jsr CSH.GetCharNB
|
||||
bcs .9
|
||||
cmp #')'
|
||||
beq .8
|
||||
|
||||
jsr CSH.IsLetter Fnc or Var ?
|
||||
bne .1
|
||||
|
||||
|
||||
.1
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #CSHERR.SYNTAX
|
||||
sec
|
||||
rts
|
||||
*---------------------------------------
|
||||
CSH.IsLetterOrDigit
|
||||
jsr CSH.IsDigit
|
||||
bcc CSH.IsLetterRTS
|
||||
*--------------------------------------
|
||||
CSH.GetCharNB jsr CSH.GetChar
|
||||
bcs CSH.GetNextCharNB.RTS
|
||||
jsr CSH.CheckCharNB
|
||||
bcc CSH.GetNextCharNB.RTS
|
||||
*--------------------------------------
|
||||
CSH.GetNextCharNB
|
||||
jsr CSH.GetNextChar
|
||||
bcs CSH.GetNextCharNB.RTS
|
||||
jsr CSH.CheckCharNB
|
||||
bcs CSH.GetNextCharNB
|
||||
CSH.GetNextCharNB.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
CSH.CheckCharNB cmp #32 SPACE
|
||||
beq .9
|
||||
cmp #13 CR
|
||||
beq .9
|
||||
@ -174,8 +376,8 @@ TXT.CheckCharNB cmp #32 SPACE
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
TXT.GetNextChar phy
|
||||
ldy #BatchFilePtr
|
||||
CSH.GetNextChar phy
|
||||
ldy #CSH.BufPtr
|
||||
lda (pData),y
|
||||
inc
|
||||
sta (pData),y
|
||||
@ -189,10 +391,10 @@ TXT.GetNextChar phy
|
||||
.1 ply
|
||||
|
||||
inc ZPBufPtr
|
||||
bne TXT.GetChar
|
||||
bne CSH.GetChar
|
||||
inc ZPBufPtr+1
|
||||
*--------------------------------------
|
||||
TXT.GetChar lda ZPBufPtr
|
||||
CSH.GetChar lda ZPBufPtr
|
||||
eor ZPBufEnd
|
||||
bne .1
|
||||
|
||||
@ -208,15 +410,11 @@ TXT.GetChar lda ZPBufPtr
|
||||
clc
|
||||
rts
|
||||
*---------------------------------------
|
||||
TXT.IsLetterOrDigit
|
||||
jsr TXT.IsDigit
|
||||
bcc TXT.IsLetterRTS
|
||||
*---------------------------------------
|
||||
TXT.IsLetter cmp #'A'
|
||||
CSH.IsLetter cmp #'A'
|
||||
bcc .9
|
||||
|
||||
cmp #'Z'+1
|
||||
bcc TXT.IsLetterRTS
|
||||
bcc CSH.IsLetterRTS
|
||||
|
||||
cmp #'a'
|
||||
bcc .9
|
||||
@ -225,9 +423,9 @@ TXT.IsLetter cmp #'A'
|
||||
|
||||
.9 sec
|
||||
|
||||
TXT.IsLetterRTS rts
|
||||
CSH.IsLetterRTS rts
|
||||
*---------------------------------------
|
||||
TXT.IsDigit cmp #'0'
|
||||
CSH.IsDigit cmp #'0'
|
||||
bcc .9
|
||||
cmp #'9'+1
|
||||
rts cc if ok, cs if not
|
||||
@ -235,117 +433,7 @@ TXT.IsDigit cmp #'0'
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
TXT.Exec.IF jsr TXT.GetCharNB
|
||||
bcs .9
|
||||
cmp #'('
|
||||
bne .9
|
||||
|
||||
jsr TXT.ExpEval
|
||||
bcs .99
|
||||
|
||||
jsr TXT.GetCharNB
|
||||
bcs .99
|
||||
cmp #')'
|
||||
bne .9
|
||||
|
||||
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
|
||||
rts
|
||||
|
||||
.9 lda #SYSMGR.ERRSYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
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
|
||||
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
|
||||
SAVE /A2OSX.SRC/SBIN/SHELL.S.TXT
|
||||
SAVE /A2OSX.SRC/SBIN/SHELL.S.CSH
|
||||
LOAD /A2OSX.SRC/SBIN/SHELL.S
|
||||
ASM
|
||||
|
104
SBIN/SHELL.S.txt
104
SBIN/SHELL.S.txt
@ -18,10 +18,14 @@ ZPPTR3 .EQ ZPBIN+4
|
||||
ZPBufBase .EQ ZPBIN+8
|
||||
ZPBufPtr .EQ ZPBIN+10
|
||||
ZPBufEnd .EQ ZPBIN+12
|
||||
ZPCSHStack .EQ ZPBIN+14
|
||||
*--------------------------------------
|
||||
CmdLine.MAX .EQ 127
|
||||
VarLen.MAX .EQ 15
|
||||
CSH.Stack.MAX .EQ 15
|
||||
CSHERR.SYNTAX .EQ $7F
|
||||
CSHERR.SOVERFLW .EQ $7E
|
||||
CSHERR.NOVERFLW .EQ $7D
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -47,6 +51,7 @@ L.MSG.PROMPT .DA MSG.PROMPT
|
||||
L.MSG.ECHO .DA MSG.ECHO
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
L.MSG.PRINTENV .DA MSG.PRINTENV
|
||||
L.MSG.CSHERR .DA MSG.CSHERR
|
||||
L.ENV.PATH .DA ENV.PATH
|
||||
L.ENV.PWD .DA ENV.PWD
|
||||
L.ENV.PS1 .DA ENV.PS1
|
||||
@ -67,18 +72,27 @@ 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.CSHCMDS .DA CSHCMDS
|
||||
J.CSHCMDS .DA CSH.IF
|
||||
.DA CSH.WHILE
|
||||
.DA CSH.BREAK
|
||||
.DA CSH.CONTINUE
|
||||
J.CSHCMDS.END .DA CSH.IF.END
|
||||
.DA CSH.WHILE.END
|
||||
L.ERR.Codes .DA ERR.Codes
|
||||
L.ERR.Messages .DA ERR.Messages
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT jsr SetPWD
|
||||
|
||||
* lda (pPs)
|
||||
* ora #S.PS.F.EVENT Now accept events
|
||||
* sta (pPs)
|
||||
|
||||
>SYSCALL GetArgC
|
||||
cmp #1
|
||||
|
||||
beq CS.INIT.INTERACTIVE no arg, continue starting interactive
|
||||
beq .1 no arg, continue starting interactive
|
||||
|
||||
>PUSHWI 0 Aux type
|
||||
>PUSHBI 4 S.FILEINFO.TYPE.TXT
|
||||
@ -91,37 +105,29 @@ CS.INIT jsr SetPWD
|
||||
bcs .9
|
||||
|
||||
phy
|
||||
ldy #BatchFileLen+1
|
||||
ldy #CSH.BufLen+1
|
||||
sta (pData),y
|
||||
dey
|
||||
pla
|
||||
sta (pData),y
|
||||
|
||||
txa
|
||||
ldy #hBatchFile
|
||||
ldy #CSH.hBuf
|
||||
sta (pData),y
|
||||
|
||||
ldy #bExitOnEOF
|
||||
lda #$FF
|
||||
sta (pData),y
|
||||
|
||||
jsr TXT.Reset
|
||||
jmp CSH.Reset
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.INIT.INTERACTIVE
|
||||
jsr HIS.Init
|
||||
.1 jsr HIS.Init
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.GREETINGS
|
||||
>SYSCALL PPrintFYA
|
||||
|
||||
lda (pPs)
|
||||
ora #S.PS.F.EVENT Now accept events
|
||||
sta (pPs)
|
||||
|
||||
clc
|
||||
* clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #bPause
|
||||
@ -139,7 +145,7 @@ CS.RUN ldy #bPause
|
||||
jsr ERR.Print
|
||||
bcs CS.RUN.EXIT.RTS
|
||||
|
||||
.11 ldy #hBatchFile batch mode ?
|
||||
.11 ldy #CSH.hBuf batch mode ?
|
||||
lda (pData),y
|
||||
beq .10
|
||||
|
||||
@ -225,7 +231,7 @@ CS.RUN.READ lda #0
|
||||
plp
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.BATCH jsr TXT.Exec
|
||||
CS.RUN.BATCH jsr CSH.Exec
|
||||
bcs .9
|
||||
|
||||
jsr CmdBuffer.Normalize
|
||||
@ -241,25 +247,50 @@ CS.RUN.BATCH jsr TXT.Exec
|
||||
rts
|
||||
|
||||
.9 cmp #MLI.ERR.EOF
|
||||
bne .8
|
||||
beq .98
|
||||
|
||||
lda #0
|
||||
pha
|
||||
|
||||
ldy #CSH.BufPtr+1
|
||||
>PUSHB (pData),y
|
||||
dey
|
||||
>PUSHB (pData),y
|
||||
|
||||
>LDYA L.MSG.CSHERR
|
||||
>SYSCALL PPrintFYA
|
||||
|
||||
.90 jsr CSH.GetChar
|
||||
bcs .91
|
||||
>SYSCALL PutCA
|
||||
|
||||
jsr CSH.GetNextChar
|
||||
bcs .91
|
||||
cmp #13
|
||||
beq .91
|
||||
>SYSCALL PutCA
|
||||
bra .90
|
||||
|
||||
.91 pla
|
||||
bra .99
|
||||
|
||||
.98 lda #0
|
||||
|
||||
ldy #S.PS.RC
|
||||
.99 ldy #S.PS.RC
|
||||
sta (pPs),y
|
||||
pha
|
||||
|
||||
ldy #bExitOnEOF
|
||||
lda (pData),y
|
||||
asl CS if bExitOnEOF
|
||||
lda #0
|
||||
|
||||
pla
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.DOEVENT sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.CHARIN tax
|
||||
ldy #hBatchFile Batch mode ?
|
||||
ldy #CSH.hBuf Batch mode ?
|
||||
lda (pData),y
|
||||
beq .10
|
||||
* Batch Mode
|
||||
@ -397,12 +428,17 @@ CS.CHARIN.CTRL cpx #13 CR
|
||||
*--------------------------------------
|
||||
CS.QUIT jsr HIS.Quit
|
||||
|
||||
ldy #hBatchFile
|
||||
ldy #CSH.hBuf
|
||||
lda (pData),y
|
||||
beq .1
|
||||
>SYSCALL FreeMemA
|
||||
|
||||
.1
|
||||
.1 ldy #CSH.hStack
|
||||
|
||||
lda (pData),y
|
||||
beq .8
|
||||
>SYSCALL FreeMemA
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -501,9 +537,9 @@ CmdBuffer.DEL lda (pData)
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
.INB /A2OSX.SRC/SBIN/SHELL.S.CMD
|
||||
.INB /A2OSX.SRC/SBIN/SHELL.S.CSH
|
||||
.INB /A2OSX.SRC/SBIN/SHELL.S.ERR
|
||||
.INB /A2OSX.SRC/SBIN/SHELL.S.HIS
|
||||
.INB /A2OSX.SRC/SBIN/SHELL.S.TXT
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
*--------------------------------------
|
||||
@ -521,7 +557,7 @@ INTCMDS >PSTR "CD"
|
||||
>PSTR "STARTPROC"
|
||||
>PSTR "TIME"
|
||||
.HS 00
|
||||
TXTCMDS >PSTR "IF"
|
||||
CSHCMDS >PSTR "IF"
|
||||
>PSTR "WHILE"
|
||||
>PSTR "BREAK"
|
||||
>PSTR "CONTINUE"
|
||||
@ -532,6 +568,7 @@ MSG.PROMPT >PSTR "%S$ "
|
||||
MSG.ECHO >PSTR ">%S\r\n"
|
||||
MSG.ERROR >PSTR "Err:%S [%h]\r\n"
|
||||
MSG.PRINTENV >PSTR "%S=%S\r\n"
|
||||
MSG.CSHERR >PSTR "Pos %D:"
|
||||
FMT.DATE >PSTR "%A, %B %d %Y"
|
||||
FMT.TIME >PSTR "%H:%M:%S (%I:%M:%S%p)"
|
||||
*--------------------------------------
|
||||
@ -561,11 +598,14 @@ bExitOnEOF .BS 1
|
||||
hCmdHistory .BS 1
|
||||
CmdHistory.IDX .BS 1
|
||||
CmdHistory.END .BS 1
|
||||
hBatchFile .BS 1
|
||||
BatchFilePtr .BS 2
|
||||
BatchFileLen .BS 2
|
||||
CSH.SavePtr .BS 2
|
||||
CSH.SEPStack .BS CSH.Stack.MAX+1
|
||||
CSH.hBuf .BS 1
|
||||
CSH.BufPtr .BS 2
|
||||
CSH.BufLen .BS 2
|
||||
CSH.CmdSave .BS 1
|
||||
CSH.SepSave .BS 1
|
||||
CSH.BufPtrSave .BS 2
|
||||
CSH.hStack .BS 1
|
||||
CSH.StackPtr .BS 1
|
||||
DS.END .ED
|
||||
*--------------------------------------
|
||||
MAN
|
||||
|
Loading…
Reference in New Issue
Block a user