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