mirror of
https://github.com/A2osX/A2osX.git
synced 2025-01-24 21:31:20 +00:00
Kernel 0.92 SHELL, IF ELSE FI with unary and binary operators
This commit is contained in:
parent
90323830f4
commit
09b24372ac
Binary file not shown.
Binary file not shown.
@ -204,6 +204,11 @@ AUTO 4,1
|
||||
ldy #]1
|
||||
ora (pData),y
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA EOR.G
|
||||
ldy #]1
|
||||
eor (pData),y
|
||||
.EM
|
||||
*--------------------------------------
|
||||
.MA CMP.G
|
||||
ldy #]1
|
||||
|
15
README.md
15
README.md
@ -255,7 +255,7 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
|
||||
| ---- | ------ | ------- | ----- |
|
||||
| TCPIPD | Working | Socket API.ARP,IP,ICMP,UDP & TCP ok | 0.92 |
|
||||
| DHCPCLNT| Working | rewritten to use new Socket API | 0.92 |
|
||||
| TELNETD | In Progress | | 0.9 |
|
||||
| TELNETD | In Progress | | 0.92 |
|
||||
| HTTPD | In Progress | | 0.9 |
|
||||
|
||||
## Internal Shell commands:
|
||||
@ -265,17 +265,20 @@ OApple+1,OApple+2,OApple+3 to switch between screens : Kernel Log, text, DHGR.
|
||||
| CD | Working | Improved syntax : now, 'CD ../BIN' works |
|
||||
| MD | Working | Create a directory |
|
||||
| RD | Working | Delete an empty directory |
|
||||
| PWD | Working | |
|
||||
| PWD | Working | Print Working Directory |
|
||||
| DATE | Working | |
|
||||
| ECHO | Working | \b,\e,\f,\n,\\\ and \\% supported |
|
||||
| EXIT | Working | |
|
||||
| PAUSE | Working | |
|
||||
| EXIT | Working | exit shell |
|
||||
| PAUSE | Working | Wait until CR |
|
||||
| READ | Working | -S : no echo (password) |
|
||||
| | | -P : "prompt message" |
|
||||
| TIME | Working | |
|
||||
| SET | Working | |
|
||||
| SLEEP | Working | |
|
||||
| SET | Working | -X toggle debug mode |
|
||||
| SLEEP | Working | Wait <count> 10th sec |
|
||||
| STARTPROC | Working | Used in A2osX.startup |
|
||||
| IF ELSE FI | Working | [ -d direxists ] |
|
||||
| | | [ -e fileordirexists ] |
|
||||
| | | [ -f fileexists ] |
|
||||
|
||||
## Shell variables:
|
||||
|
||||
|
@ -128,7 +128,7 @@ CL.Insert >LDA.G CL.Len
|
||||
txa
|
||||
sta (ZPCMDBuf),y
|
||||
|
||||
>LDA.G bSecureRead
|
||||
>LDA.G bREAD.S
|
||||
bpl .2
|
||||
ldx #'*'
|
||||
|
||||
@ -259,7 +259,10 @@ CL.PrintEOL.8 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.PrintCmdBuf >LDYA ZPCMDBuf
|
||||
>SYSCALL printf
|
||||
>PUSHYA
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPs),y
|
||||
>SYSCALL fputs
|
||||
rts
|
||||
*--------------------------------------
|
||||
CL.GetLine lda (ZPFileBufPtr)
|
||||
@ -351,12 +354,11 @@ CL.Parse >STZ.G CMD.IntCmd
|
||||
>LDA.G CMD.IntCmd
|
||||
bne .3 we already have Cmd, go check args
|
||||
|
||||
ldy #2
|
||||
ldy #1
|
||||
lda (ZPCMDBuf),y only one char ?
|
||||
bne .2
|
||||
|
||||
dey
|
||||
lda (ZPCMDBuf),y
|
||||
lda (ZPCMDBuf)
|
||||
cmp #'.' leading dot ?
|
||||
bne .2
|
||||
|
||||
|
@ -52,13 +52,28 @@ Cmd.Exec >LDA.G CMD.IntCmd
|
||||
|
||||
.1 jmp (J.CMD.INT,x)
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.2 >PUSHB.G CMD.PSFlags
|
||||
>LDYA ZPArgVBuf
|
||||
>SYSCALL execv
|
||||
bcs .9
|
||||
|
||||
tax CPID
|
||||
|
||||
>LDA.G CMD.PSFlags
|
||||
and #S.PS.F.HOLD
|
||||
bne .3
|
||||
|
||||
txa
|
||||
>PUSHA
|
||||
>PUSHBI 1
|
||||
>LDYA L.MSG.PID
|
||||
>SYSCALL printf
|
||||
rts
|
||||
|
||||
.3 >SLEEP Suspend this PID
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* STARTPROC : intcmd = 0
|
||||
*--------------------------------------
|
||||
@ -200,7 +215,19 @@ Cmd.INT.SET ldx #1
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Cmd.INT.SETVAR >STYA ZPPTR1
|
||||
Cmd.INT.SETVAR jsr CMD.IsSwitch
|
||||
bcs .10
|
||||
|
||||
cmp #'X'
|
||||
bne .99
|
||||
|
||||
>LDA.G bSET.X
|
||||
eor #$ff
|
||||
sta (pData),y
|
||||
clc
|
||||
rts
|
||||
|
||||
.10 >STYA ZPPTR1
|
||||
|
||||
lda (ZPPTR1)
|
||||
cmp #'=' string is '=value' ?
|
||||
@ -231,6 +258,13 @@ Cmd.INT.SETVAR >STYA ZPPTR1
|
||||
>SYSCALL UnsetEnv
|
||||
rts
|
||||
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.99 lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
* Print requested VAR
|
||||
|
||||
.3 >LDYA ZPPTR1
|
||||
@ -239,12 +273,6 @@ Cmd.INT.SETVAR >STYA ZPPTR1
|
||||
|
||||
>PUSHYA push value
|
||||
>PUSHW ZPPTR1 push name
|
||||
jsr Cmd.INT.SET.PRINT
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
|
||||
.99 jmp Cmd.Exec.ERRSYN
|
||||
*--------------------------------------
|
||||
Cmd.INT.SET.PRINT
|
||||
>PUSHBI 4
|
||||
@ -274,37 +302,45 @@ Cmd.INT.TIME clc
|
||||
>SYSCALL puts
|
||||
rts
|
||||
*--------------------------------------
|
||||
Cmd.INT.ECHO ldx #1
|
||||
jsr Cmd.GetArgX
|
||||
bcs .71
|
||||
|
||||
>PUSHYA
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPs),y
|
||||
>SYSCALL fputs
|
||||
bcs .9
|
||||
Cmd.INT.ECHO lda #1
|
||||
>STA.G CMD.ArgIndex
|
||||
|
||||
ldx #2
|
||||
|
||||
.1 phx
|
||||
tax
|
||||
jsr Cmd.GetArgX
|
||||
bcs .7
|
||||
>PUSHYA
|
||||
|
||||
lda #C.SPACE
|
||||
>SYSCALL putchar
|
||||
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPs),y
|
||||
>SYSCALL fputs
|
||||
plx
|
||||
inx
|
||||
bcc .1
|
||||
clc
|
||||
rts
|
||||
pha
|
||||
>PUSHBI 0
|
||||
pla
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
.7 plx
|
||||
.71 >LDA.G bECHO.N
|
||||
>INC.G CMD.ArgIndex
|
||||
tax
|
||||
|
||||
jsr Cmd.GetArgX
|
||||
bcs .7
|
||||
|
||||
.1 lda #C.SPACE
|
||||
>SYSCALL putchar
|
||||
bcs .9
|
||||
|
||||
>PUSHBI 0
|
||||
|
||||
>LDA.G CMD.ArgIndex
|
||||
tax
|
||||
jsr Cmd.GetArgX
|
||||
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
>INC.G CMD.ArgIndex
|
||||
tax
|
||||
|
||||
jsr Cmd.GetArgX
|
||||
bcc .1
|
||||
|
||||
.7 >LDA.G bECHO.N
|
||||
bmi .8
|
||||
|
||||
>PUSHBI 0
|
||||
@ -315,105 +351,53 @@ Cmd.INT.ECHO ldx #1
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Cmd.INT.READ ldx #1
|
||||
Cmd.INT.READ lda #1
|
||||
>STA.G CMD.ArgIndex
|
||||
|
||||
tax
|
||||
jsr Cmd.GetArgX
|
||||
beq .9
|
||||
|
||||
lda #0
|
||||
>STA.G bSecureRead
|
||||
>STA.G CMD.VarName.LEN
|
||||
|
||||
lda pData
|
||||
clc
|
||||
adc #CMD.VarName
|
||||
sta ZPPTR1
|
||||
lda pData+1
|
||||
adc #0
|
||||
sta ZPPTR1+1
|
||||
|
||||
.1 lda (ZPPtr2)
|
||||
beq .8
|
||||
|
||||
cmp #' '
|
||||
bne .11
|
||||
jsr Cmd.NextCharPtr2
|
||||
bra .1
|
||||
|
||||
.11 cmp #'-'
|
||||
bne .7
|
||||
|
||||
jsr Cmd.NextCharPtr2
|
||||
beq .9
|
||||
bcs .9
|
||||
|
||||
.1 jsr CMD.IsSwitch
|
||||
bcs .4
|
||||
cmp #'S'
|
||||
bne .2
|
||||
|
||||
lda #$80
|
||||
>STA.G bSecureRead
|
||||
lda #$ff
|
||||
>STA.G bREAD.S
|
||||
|
||||
jsr Cmd.NextCharPtr2
|
||||
beq .8
|
||||
cmp #' '
|
||||
bne .9
|
||||
|
||||
bra .1
|
||||
bra .7
|
||||
|
||||
.2 cmp #'P'
|
||||
bne .9
|
||||
|
||||
jsr Cmd.NextCharPtr2
|
||||
beq .9
|
||||
|
||||
cmp #' '
|
||||
bne .9
|
||||
|
||||
jsr Cmd.NextCharPtr2
|
||||
beq .9
|
||||
|
||||
cmp #'"'
|
||||
bne .9
|
||||
|
||||
.3 jsr Cmd.NextCharPtr2
|
||||
beq .9
|
||||
|
||||
cmp #'"'
|
||||
beq .1
|
||||
|
||||
>SYSCALL PutChar
|
||||
bcs .99
|
||||
bra .3
|
||||
|
||||
.9 jmp Cmd.Exec.ERRSYN
|
||||
|
||||
.7 >LDA.G CMD.VarName.LEN
|
||||
cmp #VarLen.MAX
|
||||
beq .9
|
||||
>INC.G CMD.ArgIndex
|
||||
tax
|
||||
jsr Cmd.GetArgX
|
||||
bcs .9
|
||||
pha
|
||||
|
||||
inc
|
||||
sta (pData),y
|
||||
|
||||
ply
|
||||
lda (ZPPtr2)
|
||||
sta (ZPPTR1),y
|
||||
iny
|
||||
lda #0
|
||||
sta (ZPPTR1),y
|
||||
|
||||
jsr Cmd.NextCharPtr2
|
||||
beq .1
|
||||
cmp #' '
|
||||
beq .1
|
||||
|
||||
>PUSHBI 0
|
||||
pla
|
||||
>SYSCALL printf
|
||||
bcs .99
|
||||
bra .7
|
||||
|
||||
.8 >LDA.G CMD.VarName.LEN No var name ? SYNERR
|
||||
.4 >SYSCALL newstr
|
||||
txa
|
||||
>STA.G hVarName
|
||||
|
||||
.7 >INC.G CMD.ArgIndex
|
||||
tax
|
||||
jsr Cmd.GetArgX
|
||||
bcc .1
|
||||
|
||||
>LDA.G hVarName
|
||||
beq .9
|
||||
|
||||
lda #$ff
|
||||
>STA.G bReadMode
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.SYN
|
||||
sec
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
Cmd.INT.SLEEP ldx #1
|
||||
@ -506,11 +490,8 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR
|
||||
|
||||
bcs .1
|
||||
|
||||
phx
|
||||
ldx #3
|
||||
jsr Cmd.GetArgX
|
||||
plx
|
||||
bcs .9 we need one arg
|
||||
txa
|
||||
>STA.G CMD.Operator
|
||||
|
||||
jsr CMD.IF.UNARY
|
||||
bcs .9
|
||||
@ -524,11 +505,31 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR
|
||||
ldx #4 go check ]
|
||||
bra .8
|
||||
|
||||
.1
|
||||
.9 lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
|
||||
.1 ldx #3
|
||||
jsr Cmd.GetArgX
|
||||
beq .9
|
||||
|
||||
>PUSHYA
|
||||
>LDYA L.CMD.IF.TOKEN3 -eq -ne .... ?
|
||||
jsr Lookup
|
||||
bcs .9
|
||||
txa
|
||||
>STA.G CMD.Operator
|
||||
|
||||
ldx #5
|
||||
jsr CMD.IF.BINARY
|
||||
bcs .9
|
||||
|
||||
>LDA.G CMD.IF.PTR
|
||||
tay
|
||||
txa
|
||||
eor (pData),y
|
||||
sta (pData),y
|
||||
|
||||
ldx #5 go check ]
|
||||
|
||||
.8 jsr Cmd.GetArgX
|
||||
beq .9
|
||||
@ -544,14 +545,20 @@ Cmd.INT.IF >LDA.G CMD.IF.PTR
|
||||
bne .9
|
||||
|
||||
clc
|
||||
.99 rts
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.IF.UNARY ldx #3
|
||||
jsr Cmd.GetArgX
|
||||
bcs .9 we need one arg
|
||||
|
||||
>LDA.G CMD.Operator
|
||||
tax
|
||||
jmp (J.CMD.IF.TOKEN2,x)
|
||||
|
||||
.9 lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.IF.UNARY jmp (J.CMD.IF.TOKEN2,x)
|
||||
|
||||
|
||||
CMD.IF.D jsr CMD.IF.DEF.7
|
||||
bcs CMD.IF.DEF.9
|
||||
>LDA.G CMD.Stat+S.STAT.P.TYPE
|
||||
@ -583,6 +590,119 @@ CMD.IF.DEF.8 ldx #$ff true
|
||||
|
||||
CMD.IF.DEF.9 ldx #0 false
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CMD.IF.BINARY ldx #2
|
||||
jsr Cmd.GetArgX
|
||||
bcs .9
|
||||
|
||||
ldx #4
|
||||
jsr Cmd.GetArgX
|
||||
bcs .9
|
||||
|
||||
>LDA.G CMD.Operator
|
||||
beq .1 =
|
||||
|
||||
cmp #2 !=
|
||||
bne CMD.IF.BINARY.NUM
|
||||
lda #$ff
|
||||
>STA.G CMD.Operator
|
||||
|
||||
.1 ldx #2
|
||||
jsr Cmd.GetArgX
|
||||
>PUSHYA
|
||||
ldx #4
|
||||
jsr Cmd.GetArgX
|
||||
>SYSCALL strcmp
|
||||
lsr CS if !=
|
||||
>EOR.G CMD.Operator
|
||||
tax
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
|
||||
CMD.IF.BINARY.NUM
|
||||
ldx #2
|
||||
jsr Cmd.GetArgX
|
||||
bcs .9
|
||||
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
|
||||
>PULLL.G CMD.NumArg1
|
||||
|
||||
ldx #4
|
||||
jsr Cmd.GetArgX
|
||||
bcs .9
|
||||
|
||||
>SYSCALL AToL
|
||||
bcs .9
|
||||
|
||||
>PULLL.G CMD.NumArg2
|
||||
|
||||
ldx #4
|
||||
ldy #CMD.NumArg2+3
|
||||
|
||||
.1 lda (pData),y
|
||||
pha
|
||||
dey
|
||||
dex
|
||||
bne .1
|
||||
|
||||
ldx #4
|
||||
ldy #CMD.NumArg1
|
||||
|
||||
sec
|
||||
|
||||
.2 pla
|
||||
sbc (pData),y
|
||||
sta (pData),y
|
||||
iny
|
||||
dex
|
||||
bne .2
|
||||
|
||||
bcc .5 CC if Arg1 < Arg2
|
||||
|
||||
ldy #CMD.NumArg1
|
||||
|
||||
lda (pData),y
|
||||
iny
|
||||
ora (pData),y
|
||||
iny
|
||||
ora (pData),y
|
||||
iny
|
||||
ora (pData),y Z if Arg1 = Arg2
|
||||
|
||||
bne .4
|
||||
|
||||
.3 lda #%001 001 arg1 = arg2
|
||||
bra .6
|
||||
.4 lda #%010 010 arg1 > arg2
|
||||
bra .6
|
||||
.5 lda #%100 100 Arg1 < Arg2
|
||||
|
||||
.6 pha
|
||||
|
||||
>LDA.G CMD.Operator
|
||||
lsr
|
||||
tax
|
||||
pla
|
||||
eor CMD.IF.TOKEN3.BITS,x
|
||||
bne .80
|
||||
|
||||
ldx #$ff true
|
||||
clc
|
||||
rts
|
||||
|
||||
.80 ldx #0 false
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
Cmd.INT.ELSE >LDA.G CMD.IF.PTR
|
||||
@ -623,52 +743,60 @@ Cmd.GetArgX >LDYA ZPArgVBuf
|
||||
|
||||
>STYA ZPPtr1
|
||||
|
||||
.1 jsr Cmd.NextArgPtr1
|
||||
bcs .9
|
||||
.1 lda (ZPPtr1)
|
||||
beq .9
|
||||
|
||||
.2 inc ZPPtr1
|
||||
bne .3
|
||||
inc ZPPtr1+1
|
||||
.3 lda (ZPPtr1)
|
||||
bne .2
|
||||
|
||||
inc ZPPtr1
|
||||
bne .4
|
||||
inc ZPPtr1+1
|
||||
|
||||
.4 lda (ZPPtr1)
|
||||
beq .9
|
||||
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
>LDYA ZPPtr1
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Cmd.NextArgPtr1 lda (ZPPtr1)
|
||||
beq .9
|
||||
|
||||
.1 inc ZPPtr1
|
||||
bne .2
|
||||
inc ZPPtr1+1
|
||||
.2 lda (ZPPtr1)
|
||||
bne .1
|
||||
|
||||
inc ZPPtr1
|
||||
bne .3
|
||||
inc ZPPtr1+1
|
||||
|
||||
.3 lda (ZPPtr1)
|
||||
beq .9
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
Cmd.NextCharPtr2NB
|
||||
.1 jsr Cmd.NextCharPtr2
|
||||
beq .9
|
||||
cmp #C.SPACE
|
||||
beq .1
|
||||
CMD.IsSwitch >STYA ZPPtr1
|
||||
lda (ZPPtr1)
|
||||
cmp #'-'
|
||||
bne .9
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
Cmd.NextCharPtr2
|
||||
inc ZPPtr2
|
||||
bne .1
|
||||
inc ZPPtr2+1
|
||||
.1 lda (ZPPtr2)
|
||||
rts
|
||||
ldy #1
|
||||
lda (ZPPtr1),y
|
||||
beq .9
|
||||
|
||||
iny
|
||||
lda (ZPPtr1),y
|
||||
bne .9
|
||||
|
||||
dey
|
||||
lda (ZPPtr1),y
|
||||
cmp #'a'
|
||||
bcc .8
|
||||
cmp #'z'+1
|
||||
bcs .8
|
||||
eor #$20
|
||||
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 >LDYA ZPPtr1
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE /A2OSX.SRC/SBIN/SHELL.S.CMD
|
||||
|
@ -45,9 +45,8 @@ ZPCSHStack .EQ ZPBIN+18
|
||||
.FIN
|
||||
*--------------------------------------
|
||||
CmdLine.MAX .EQ 127
|
||||
VarLen.MAX .EQ 15
|
||||
History.MAX .EQ 256
|
||||
CMD.IF.STACK.MAX .EQ 4
|
||||
CMD.IF.STACK.MAX .EQ 8
|
||||
*--------------------------------------
|
||||
* File Header (16 Bytes)
|
||||
*--------------------------------------
|
||||
@ -80,6 +79,7 @@ L.MSG.ECHOCRLF .DA MSG.ECHOCRLF
|
||||
L.MSG.BATCHERR .DA MSG.BATCHERR
|
||||
L.MSG.ERROR .DA MSG.ERROR
|
||||
L.MSG.PRINTENV .DA MSG.PRINTENV
|
||||
L.MSG.PID .DA MSG.PID
|
||||
L.ENV.PATH .DA ENV.PATH
|
||||
L.ENV.PWD .DA ENV.PWD
|
||||
L.ENV.PS1 .DA ENV.PS1
|
||||
@ -165,7 +165,7 @@ CS.RUN jsr SetPWD
|
||||
*--------------------------------------
|
||||
CS.RUN.LOOP jsr CL.Reset
|
||||
jsr IO.Reset
|
||||
|
||||
|
||||
.1 jsr CheckSleep
|
||||
beq .3
|
||||
|
||||
@ -205,7 +205,7 @@ CS.RUN.LOOP jsr CL.Reset
|
||||
|
||||
>STZ.G bPause
|
||||
|
||||
.6 >LDA.G bReadMode READ Command ?
|
||||
.6 >LDA.G hVarName read mode ?
|
||||
bne .7
|
||||
|
||||
>LDA.G hFileBuf batch mode ?
|
||||
@ -218,8 +218,6 @@ CS.RUN.LOOP jsr CL.Reset
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.INTERCATIVE
|
||||
>STZ.G bSecureRead Clear password mode
|
||||
|
||||
jsr CL.PrintPrompt
|
||||
bcs .9
|
||||
|
||||
@ -258,16 +256,31 @@ CS.RUN.READ
|
||||
>LDA.G CL.bExec
|
||||
bpl .1
|
||||
|
||||
>STZ.G bReadMode
|
||||
|
||||
lda (ZPCMDBuf)
|
||||
beq .8
|
||||
bne .2
|
||||
|
||||
>PUSHW ZPCMDBuf
|
||||
>LDA.G hVarName
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL UnSetEnv
|
||||
bra .7
|
||||
|
||||
.2 >PUSHW ZPCMDBuf
|
||||
|
||||
>LEA.G CMD.VarName
|
||||
>LDA.G hVarName
|
||||
>SYSCALL GetMemPtr
|
||||
>SYSCALL SetEnv
|
||||
|
||||
.7 php
|
||||
pha
|
||||
|
||||
>LDA.G hVarName
|
||||
>SYSCALL freemem
|
||||
>STZ.G hVarName
|
||||
>STA.G bREAD.S
|
||||
|
||||
pla
|
||||
plp
|
||||
|
||||
.8 jmp CS.RUN.LOOP.END
|
||||
*--------------------------------------
|
||||
CS.RUN.BATCH >SYSCALL GetChar
|
||||
@ -319,7 +332,6 @@ CS.RUN.Exec jsr CL.Parse
|
||||
lda (ZPArgVBuf)
|
||||
beq CS.RUN.LOOP.8
|
||||
jsr CMD.Exec
|
||||
>SLEEP if S.PS.HOLD
|
||||
*--------------------------------------
|
||||
CS.RUN.LOOP.END ldy #S.PS.RC
|
||||
sta (pPs),y
|
||||
@ -450,6 +462,7 @@ MSG.ECHOCRLF .AZ "\r\n"
|
||||
MSG.BATCHERR .AZ "^\r\nLine #%D:"
|
||||
MSG.ERROR .AZ "[$%h]:%S.\r\n"
|
||||
MSG.PRINTENV .AZ "%s=%s\r\n"
|
||||
MSG.PID .AZ "PID=%d\r\n"
|
||||
FMT.DATE .AZ "%A (%w), %B %d %Y"
|
||||
FMT.TIME .AZ "%H:%M:%S (%I:%M:%S%p)"
|
||||
*--------------------------------------
|
||||
@ -489,16 +502,31 @@ CMD.INT .AZ "STARTPROC"
|
||||
.AZ "FI"
|
||||
.HS 00
|
||||
*--------------------------------------
|
||||
CMD.IF.TOKEN1 .AZ "["
|
||||
.AZ "!["
|
||||
CMD.IF.TOKEN1 .AZ "!["
|
||||
.AZ "["
|
||||
.HS 00
|
||||
CMD.IF.TOKEN2 .AZ "-d"
|
||||
.AZ "-e"
|
||||
.AZ "-f"
|
||||
.HS 00
|
||||
CMD.IF.TOKEN3 .AZ "-eq"
|
||||
CMD.IF.TOKEN3 .AZ "="
|
||||
.AZ "!="
|
||||
.AZ "-eq"
|
||||
.AZ "-ne"
|
||||
.HS 00
|
||||
.AZ "-lt"
|
||||
.AZ "-le"
|
||||
.AZ "-gt"
|
||||
.AZ "-ge"
|
||||
.HS 00
|
||||
CMD.IF.TOKEN3.BITS
|
||||
.DA #%000
|
||||
.DA #%000
|
||||
.DA #%001
|
||||
.DA #%110
|
||||
.DA #%100
|
||||
.DA #%101
|
||||
.DA #%010
|
||||
.DA #%011
|
||||
*--------------------------------------
|
||||
.DO CSH=1
|
||||
.INB /A2OSX.SRC/SBIN/SHELL.C.CSH
|
||||
@ -511,15 +539,15 @@ EscChars.Cnt .EQ *-EscChars
|
||||
.DUMMY
|
||||
.OR 0
|
||||
DS.START
|
||||
hFileBuf .BS 1
|
||||
hFileBuf .BS 1 batch mode
|
||||
hVarName .BS 1 read mode
|
||||
|
||||
bEscMode .BS 1
|
||||
bPause .BS 1
|
||||
bExit .BS 1
|
||||
bSET.X .BS 1
|
||||
bECHO.N .BS 1
|
||||
bReadMode .BS 1
|
||||
bSecureRead .BS 1
|
||||
bREAD.S .BS 1
|
||||
|
||||
Sleep .BS 4
|
||||
|
||||
@ -532,9 +560,12 @@ CMD.hCmdLine .BS 1
|
||||
CMD.hCmdBuf .BS 1
|
||||
CMD.hArgVBuf .BS 1
|
||||
|
||||
CMD.ArgIndex .BS 1
|
||||
CMD.Operator .BS 1
|
||||
CMD.NumArg1 .BS 4
|
||||
CMD.NumArg2 .BS 4
|
||||
|
||||
CMD.PSFlags .BS 1
|
||||
CMD.VarName.LEN .BS 1
|
||||
CMD.VarName .BS VarLen.MAX+1
|
||||
CMD.Stat .BS S.STAT
|
||||
CMD.Time .BS S.TIME
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user