mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-25 20:33:13 +00:00
Kernel 0.92+
This commit is contained in:
parent
0195d8aef6
commit
f3624cb542
@ -89,11 +89,11 @@ CSH.FN >PSTR "printf"
|
|||||||
.DA #CSH.T.VARIADIC
|
.DA #CSH.T.VARIADIC
|
||||||
.DA #0
|
.DA #0
|
||||||
* int puts ( const char * str );
|
* int puts ( const char * str );
|
||||||
>PSTR "printf"
|
>PSTR "puts"
|
||||||
.DA #CSH.T.INT returned value
|
.DA #CSH.T.INT returned value
|
||||||
.DA #CSH.Q.CONST+CSH.Q.POINTER1
|
.DA #CSH.Q.CONST+CSH.Q.POINTER1
|
||||||
.DA #CSH.T.CHAR
|
.DA #CSH.T.CHAR
|
||||||
.DA 0
|
.DA #0
|
||||||
* float cos ( float x );
|
* float cos ( float x );
|
||||||
>PSTR "cos"
|
>PSTR "cos"
|
||||||
.DA #CSH.T.FLOAT returned value
|
.DA #CSH.T.FLOAT returned value
|
||||||
|
298
BIN/SH.S.CMD.txt
298
BIN/SH.S.CMD.txt
@ -8,7 +8,6 @@ CMD.NOHUP >LDA.G CORE.PSFlags
|
|||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
jsr RemoveStrFromArgV
|
|
||||||
jmp CORE.ExecExtCmd
|
jmp CORE.ExecExtCmd
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.SHIFT lda #1
|
CMD.SHIFT lda #1
|
||||||
@ -41,9 +40,8 @@ CMD.PUSHD >LDA.G PUSHD.STACK
|
|||||||
txa
|
txa
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
ldx #1
|
lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
bne CMD.CD.1
|
||||||
bcc CMD.CD.1
|
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
@ -69,9 +67,8 @@ CMD.PWD ldy #S.PS.hPREFIX
|
|||||||
>SYSCALL puts
|
>SYSCALL puts
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.CD ldx #1
|
CMD.CD lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
bne CMD.CD.1
|
||||||
bcc CMD.CD.1
|
|
||||||
|
|
||||||
CMD.CD.HOME >LDYA L.ENV.HOME
|
CMD.CD.HOME >LDYA L.ENV.HOME
|
||||||
>SYSCALL GetEnv
|
>SYSCALL GetEnv
|
||||||
@ -172,9 +169,8 @@ CMD.Exec.SSYN lda #E.SSYN
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.SET ldx #1
|
CMD.SET lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
bne CMD.SET.1
|
||||||
bcc CMD.SET.1
|
|
||||||
|
|
||||||
* No arg, print all ENV
|
* No arg, print all ENV
|
||||||
|
|
||||||
@ -226,16 +222,8 @@ CMD.SET ldx #1
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* SET +X VAR = VALUE1 op VALUE2 op VALUE3 ...
|
* SET +X VAR = VALUE1 op VALUE2 op VALUE3 ...
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.SET.1 >STZ.G CORE.Varname
|
CMD.SET.1 >DEBUG
|
||||||
|
.1 jsr CMD.IsSwitch
|
||||||
lda #1
|
|
||||||
>STA.G CORE.ArgIndex
|
|
||||||
|
|
||||||
.1 tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcs .8
|
|
||||||
|
|
||||||
jsr CMD.IsSwitch
|
|
||||||
bcs .6
|
bcs .6
|
||||||
|
|
||||||
cmp #'C'
|
cmp #'C'
|
||||||
@ -251,41 +239,32 @@ CMD.SET.1 >STZ.G CORE.Varname
|
|||||||
|
|
||||||
.5 eor #$ff
|
.5 eor #$ff
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
>INC.G CORE.ArgIndex
|
jsr CORE.ArgV.Next
|
||||||
bra .1
|
bne .1
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
.6 >LDA.G CORE.ArgIndex
|
.6 >LDYA ZPArgVBufPtr
|
||||||
>STA.G CORE.Varname
|
>STYA ZPVarNamePtr
|
||||||
|
|
||||||
>INC.G CORE.ArgIndex
|
jsr CORE.ArgV.Next
|
||||||
tax
|
beq CMD.SET.GET
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcs CMD.SET.GET
|
|
||||||
|
|
||||||
>STYA ZPPTR1
|
|
||||||
|
|
||||||
lda (ZPPTR1)
|
|
||||||
|
|
||||||
cmp #'='
|
cmp #'='
|
||||||
bne .99
|
bne .99
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPTR1),y
|
lda (ZPArgVBufPtr),y
|
||||||
bne .99
|
bne .99
|
||||||
|
|
||||||
>INC.G CORE.ArgIndex
|
jsr CORE.ArgV.Next
|
||||||
tax
|
beq CMD.SET.UNSET
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcs CMD.SET.UNSET
|
|
||||||
|
|
||||||
jsr EXP.GET
|
jsr EXP.GET
|
||||||
|
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
>PUSHYA
|
>PUSHYA
|
||||||
>LDA.G CORE.Varname
|
>LDYA ZPVarNamePtr
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
>SYSCALL SetEnv
|
>SYSCALL SetEnv
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -294,24 +273,18 @@ CMD.SET.1 >STZ.G CORE.Varname
|
|||||||
|
|
||||||
.99 jmp CMD.Exec.CSYN
|
.99 jmp CMD.Exec.CSYN
|
||||||
|
|
||||||
CMD.SET.UNSET >LDA.G CORE.Varname
|
CMD.SET.UNSET >LDYA ZPVarNamePtr
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
>SYSCALL UnsetEnv
|
>SYSCALL UnsetEnv
|
||||||
rts
|
rts
|
||||||
|
|
||||||
CMD.SET.GET >LDA.G CORE.Varname
|
CMD.SET.GET >LDYA ZPVarNamePtr
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
>SYSCALL GetEnv
|
>SYSCALL GetEnv
|
||||||
bcc .1
|
bcc .1
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.1 >PUSHYA push value
|
.1 >PUSHYA push value
|
||||||
>LDA.G CORE.Varname
|
>LDYA ZPVarNamePtr
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
>PUSHYA push name
|
>PUSHYA push name
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.SET.PRINT >PUSHBI 4
|
CMD.SET.PRINT >PUSHBI 4
|
||||||
@ -343,6 +316,9 @@ CMD.TIME clc
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.ECHO >STZ.G bECHO.N
|
CMD.ECHO >STZ.G bECHO.N
|
||||||
|
|
||||||
|
lda (ZPArgVBufPtr)
|
||||||
|
beq .8
|
||||||
|
|
||||||
.1 jsr CMD.IsSwitch
|
.1 jsr CMD.IsSwitch
|
||||||
bcs .2
|
bcs .2
|
||||||
|
|
||||||
@ -352,40 +328,17 @@ CMD.ECHO >STZ.G bECHO.N
|
|||||||
lda #$ff
|
lda #$ff
|
||||||
>EOR.G bECHO.N
|
>EOR.G bECHO.N
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
bra .1
|
bra .7
|
||||||
|
|
||||||
.2 pha
|
.2 >PUSHBI 0
|
||||||
>PUSHBI 0
|
>LDYA ZPArgVBufPtr
|
||||||
pla
|
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>INC.G CORE.ArgIndex
|
.7 jsr CORE.ArgV.Next
|
||||||
tax
|
bne .1
|
||||||
|
|
||||||
jsr CORE.GetArgX
|
>LDA.G bECHO.N
|
||||||
bcs .7
|
|
||||||
|
|
||||||
.6 lda #C.SPACE
|
|
||||||
>SYSCALL putchar
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>PUSHBI 0
|
|
||||||
|
|
||||||
>LDA.G CORE.ArgIndex
|
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
|
|
||||||
>SYSCALL printf
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>INC.G CORE.ArgIndex
|
|
||||||
tax
|
|
||||||
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcc .6
|
|
||||||
|
|
||||||
.7 >LDA.G bECHO.N
|
|
||||||
bmi .8
|
bmi .8
|
||||||
|
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
@ -400,9 +353,8 @@ CMD.ECHO >STZ.G bECHO.N
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.GETKEY ldx #1
|
CMD.GETKEY lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
beq .99
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>SYSCALL getchar
|
>SYSCALL getchar
|
||||||
bcc .1
|
bcc .1
|
||||||
@ -418,19 +370,14 @@ CMD.GETKEY ldx #1
|
|||||||
|
|
||||||
>PUSHEA.G M32.BUF
|
>PUSHEA.G M32.BUF
|
||||||
|
|
||||||
ldx #1
|
>LDYA ZPArgVBufPtr
|
||||||
jsr CORE.GetArgX
|
|
||||||
>SYSCALL SetEnv
|
>SYSCALL SetEnv
|
||||||
.9 rts
|
.9 rts
|
||||||
|
|
||||||
.99 jmp CMD.Exec.CSYN
|
.99 jmp CMD.Exec.CSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.READ lda #1
|
CMD.READ lda (ZPArgVBufPtr)
|
||||||
>STA.G CORE.ArgIndex
|
beq .9
|
||||||
|
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.1 jsr CMD.IsSwitch
|
.1 jsr CMD.IsSwitch
|
||||||
bcs .4
|
bcs .4
|
||||||
@ -445,13 +392,11 @@ CMD.READ lda #1
|
|||||||
.2 cmp #'P'
|
.2 cmp #'P'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
>INC.G CORE.ArgIndex
|
jsr CORE.ArgV.Next
|
||||||
tax
|
beq .9
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcs .9
|
|
||||||
pha
|
|
||||||
>PUSHBI 0
|
>PUSHBI 0
|
||||||
pla
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
bcs .99
|
bcs .99
|
||||||
bra .7
|
bra .7
|
||||||
@ -461,10 +406,9 @@ CMD.READ lda #1
|
|||||||
txa
|
txa
|
||||||
>STA.G hVarName
|
>STA.G hVarName
|
||||||
|
|
||||||
.7 >INC.G CORE.ArgIndex
|
.7 jsr CORE.ArgV.Next
|
||||||
tax
|
lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
bne .1
|
||||||
bcc .1
|
|
||||||
|
|
||||||
>LDA.G hVarName
|
>LDA.G hVarName
|
||||||
beq .9
|
beq .9
|
||||||
@ -473,10 +417,10 @@ CMD.READ lda #1
|
|||||||
|
|
||||||
.9 jmp CMD.Exec.CSYN
|
.9 jmp CMD.Exec.CSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.SLEEP ldx #1
|
CMD.SLEEP lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
beq .9
|
||||||
bcs .9
|
|
||||||
|
|
||||||
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL AToL
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -491,10 +435,10 @@ CMD.PAUSE lda #$FF
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.EXIT ldx #1
|
CMD.EXIT lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
beq .8 no arg, exit 0
|
||||||
bcs .8 no arg, exit 0
|
|
||||||
|
|
||||||
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL AToL
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -513,35 +457,35 @@ CMD.EXIT ldx #1
|
|||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.MD ldx #1
|
CMD.MD lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
beq .9
|
||||||
bcs .9
|
|
||||||
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL MKDir
|
>SYSCALL MKDir
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 jmp CMD.Exec.CSYN
|
.9 jmp CMD.Exec.CSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.REN ldx #2
|
CMD.REN lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
beq .9
|
||||||
bcs .9
|
>PUSHW ZPArgVBufPtr
|
||||||
>PUSHYA
|
|
||||||
ldx #1
|
jsr CORE.ArgV.Next
|
||||||
jsr CORE.GetArgX
|
lda (ZPArgVBufPtr)
|
||||||
|
beq .90
|
||||||
|
|
||||||
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL Rename
|
>SYSCALL Rename
|
||||||
rts
|
rts
|
||||||
|
|
||||||
|
.90 >PULLYA
|
||||||
.9 jmp CMD.Exec.CSYN
|
.9 jmp CMD.Exec.CSYN
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.RD ldx #1
|
CMD.RD lda (ZPArgVBufPtr)
|
||||||
jsr CORE.GetArgX
|
beq .9
|
||||||
bcs .9
|
|
||||||
phy
|
|
||||||
pha
|
|
||||||
>PUSHEA.G StatBuf
|
>PUSHEA.G StatBuf
|
||||||
pla
|
>LDYA ZPArgVBufPtr
|
||||||
ply
|
|
||||||
>SYSCALL STAT
|
>SYSCALL STAT
|
||||||
bcs .99
|
bcs .99
|
||||||
|
|
||||||
@ -549,8 +493,7 @@ CMD.RD ldx #1
|
|||||||
cmp #S.FI.T.DIR
|
cmp #S.FI.T.DIR
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldx #1
|
>LDYA ZPArgVBufPtr
|
||||||
jsr CORE.GetArgX
|
|
||||||
>SYSCALL Remove
|
>SYSCALL Remove
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
@ -583,7 +526,7 @@ CMD.IF jsr CORE.StkGet
|
|||||||
bit #$40 Parent is true ?
|
bit #$40 Parent is true ?
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
jsr EXP.EVAL
|
jsr EXP.TEST
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
.3 >LDA.G CORE.IntCmd
|
.3 >LDA.G CORE.IntCmd
|
||||||
@ -655,121 +598,32 @@ CMD.LOOP jsr CORE.StkPull
|
|||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.IsSwitch lda (ZPInputBufPtr)
|
CMD.IsSwitch lda (ZPArgVBufPtr)
|
||||||
cmp #'-'
|
cmp #'-'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPInputBufPtr),y
|
lda (ZPArgVBufPtr),y
|
||||||
beq .9
|
beq .9
|
||||||
|
tax
|
||||||
iny
|
iny
|
||||||
lda (ZPInputBufPtr),y
|
lda (ZPArgVBufPtr),y
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
dey
|
txa
|
||||||
lda (ZPInputBufPtr),y
|
|
||||||
cmp #'a'
|
cmp #'a'
|
||||||
bcc .8
|
bcc .8
|
||||||
cmp #'z'+1
|
cmp #'z'+1
|
||||||
bcs .8
|
bcs .8
|
||||||
eor #$20
|
eor #$20
|
||||||
|
jsr CORE.ArgV.NextChar
|
||||||
|
jsr CORE.ArgV.NextChar
|
||||||
.8 clc
|
.8 clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.IOCheck >LDYA L.CMD.IO
|
|
||||||
|
|
||||||
jsr CORE.Lookup
|
|
||||||
bcs CMD.IOCheck.RTS not a IO token...should be an arg....
|
|
||||||
|
|
||||||
jmp (J.CMD.IO,x)
|
|
||||||
|
|
||||||
CMD.IOCheck.RTS rts
|
|
||||||
*--------------------------------------
|
|
||||||
CMD.IO.AMP >LDA.G CORE.PSFlags
|
|
||||||
and #$ff^S.PS.F.HOLD
|
|
||||||
sta (pData),y
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
CMD.IO.IN lda #O.RDONLY+O.TEXT
|
|
||||||
jsr CMD.IO.Open
|
|
||||||
bcs CMD.IOCheck.RTS
|
|
||||||
jmp IO.Set.In
|
|
||||||
CMD.IO.OUTA
|
|
||||||
CMD.IO.1OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
|
|
||||||
bra CMD.IO.OUT.1
|
|
||||||
CMD.IO.OUT
|
|
||||||
CMD.IO.1OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
|
|
||||||
|
|
||||||
CMD.IO.OUT.1 jsr CMD.IO.Open
|
|
||||||
bcs CMD.IOCheck.RTS
|
|
||||||
jmp IO.Set.Out
|
|
||||||
|
|
||||||
CMD.IO.2OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
|
|
||||||
bra CMD.IO.2OUT.1
|
|
||||||
CMD.IO.2OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
|
|
||||||
|
|
||||||
CMD.IO.2OUT.1 jsr CMD.IO.Open
|
|
||||||
bcs CMD.IOCheck.RTS
|
|
||||||
jmp IO.Set.Err
|
|
||||||
*--------------------------------------
|
|
||||||
CMD.IO.Open pha Open Mode
|
|
||||||
lda (ZPArgVBufPtr)
|
|
||||||
beq .9 no arg left....
|
|
||||||
|
|
||||||
>PUSHWI 0 Aux type
|
|
||||||
>PUSHBI S.FI.T.TXT ftype
|
|
||||||
pla
|
|
||||||
>PUSHA flags
|
|
||||||
>LDYA ZPArgVBufPtr
|
|
||||||
>SYSCALL fopen
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 pla
|
|
||||||
lda #E.CSYN
|
|
||||||
sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CMD.AddArg2ArgV jsr CORE.GetCharNB
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldx #0
|
|
||||||
|
|
||||||
.1 cmp #'"'
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
txa
|
|
||||||
eor #$ff
|
|
||||||
tax
|
|
||||||
bra .4
|
|
||||||
|
|
||||||
.2 cmp #C.SPACE
|
|
||||||
bne .3
|
|
||||||
txa
|
|
||||||
bpl .8
|
|
||||||
|
|
||||||
.3 jsr CORE.IsEndCmd
|
|
||||||
bcc .9
|
|
||||||
|
|
||||||
sta (ZPArgVBufPtr)
|
|
||||||
|
|
||||||
.4 inc ZPArgVBufPtr
|
|
||||||
bne .5
|
|
||||||
inc ZPArgVBufPtr
|
|
||||||
.5 jsr CORE.GetNextChar
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
.8 lda #0
|
|
||||||
sta (ZPArgVBufPtr)
|
|
||||||
|
|
||||||
clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/SH.S.CMD
|
SAVE USR/SRC/BIN/SH.S.CMD
|
||||||
LOAD USR/SRC/BIN/SH.S
|
LOAD USR/SRC/BIN/SH.S
|
||||||
|
@ -39,146 +39,18 @@ CORE.Quit >LDA.G CORE.hArgVBuf
|
|||||||
* set hStdIn = hStdOut
|
* set hStdIn = hStdOut
|
||||||
* set hStdOut = Std
|
* set hStdOut = Std
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Exec >PUSHW ZPArgVBuf
|
CORE.Run.CSYN lda #E.CSYN
|
||||||
>LDYA ZPArgVBuf
|
sec
|
||||||
>STYA ZPArgVBufPtr
|
rts
|
||||||
|
|
||||||
>SYSCALL Args2ArgV TOKENIZE CL in ZPArgVBuf
|
|
||||||
|
|
||||||
>STZ.G CL.CmdSep
|
|
||||||
|
|
||||||
lda (ZPArgVBufPtr) empty line ?
|
|
||||||
beq .80
|
|
||||||
|
|
||||||
cmp #'#' comment ?
|
|
||||||
beq .80
|
|
||||||
|
|
||||||
*************** LOOP Cmd Arg
|
|
||||||
|
|
||||||
.10 lda #S.PS.F.HOLD+S.PS.F.DUPENV
|
|
||||||
>STA.G CORE.PSFlags
|
|
||||||
|
|
||||||
>LDA.G CL.CmdSep
|
|
||||||
cmp #'|'
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
jsr IO.Pipe.In
|
|
||||||
bcs .90
|
|
||||||
|
|
||||||
*************** LOOP Token
|
|
||||||
|
|
||||||
.1 cmp #'#' comment ?
|
|
||||||
beq .80 yes, ignore remaining
|
|
||||||
|
|
||||||
ldy #1
|
|
||||||
lda (ZPArgVBufPtr),y only one char ?
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
lda (ZPArgVBufPtr)
|
|
||||||
cmp #'.' leading dot ?
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
>LDA.G CORE.PSFlags yes, child process will run in same ENV
|
|
||||||
and #$ff^S.PS.F.DUPENV
|
|
||||||
sta (pData),y
|
|
||||||
jsr CORE.ShiftArgVToken and skip this token
|
|
||||||
|
|
||||||
.2 jsr CMD.IOCheck
|
|
||||||
bcc .7 IO token & related args processed
|
|
||||||
tay an error ?
|
|
||||||
bne .90 yes...I/O error...
|
|
||||||
|
|
||||||
jsr CORE.NextArgVToken no...keep as cmd or arg
|
|
||||||
|
|
||||||
.7 lda (ZPArgVBufPtr)
|
|
||||||
|
|
||||||
beq .71 EOL...
|
|
||||||
cmp #';'
|
|
||||||
bne .70
|
|
||||||
|
|
||||||
>STA.G CL.CmdSep
|
|
||||||
jsr CORE.ShiftArgVToken Skip ;
|
|
||||||
bra .72 exec
|
|
||||||
|
|
||||||
.70 cmp #'|'
|
|
||||||
bne .1 another token...
|
|
||||||
|
|
||||||
>STA.G CL.CmdSep
|
|
||||||
|
|
||||||
jsr IO.Pipe.Out
|
|
||||||
bcs .90
|
|
||||||
|
|
||||||
jsr CORE.ShiftArgVToken Skip |
|
|
||||||
bra .72 and exec
|
|
||||||
|
|
||||||
jsr CORE.ShiftArgVToken Skip ;
|
|
||||||
lda #0
|
|
||||||
|
|
||||||
.71 >STA.G CL.CmdSep
|
|
||||||
|
|
||||||
.72 jsr CORE.ExecCmd
|
|
||||||
bcs .90
|
|
||||||
|
|
||||||
>LDA.G CL.CmdSep
|
|
||||||
bne .10 if sep is ; or |...loop
|
|
||||||
|
|
||||||
.80 clc
|
|
||||||
|
|
||||||
.90 rts
|
|
||||||
*--------------------------------------
|
|
||||||
* Input : ZPArgVBuf
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.ExecCmd ldy #$ff
|
|
||||||
|
|
||||||
.1 iny
|
|
||||||
lda (ZPArgVBuf),y
|
|
||||||
beq .11
|
|
||||||
cmp #'/'
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
bra .12
|
|
||||||
|
|
||||||
.11 >PUSHW ZPArgVBuf
|
|
||||||
>LDYA L.CORE.CMD
|
|
||||||
jsr CORE.Lookup no / found, search internal...
|
|
||||||
bcc .13 not internal
|
|
||||||
|
|
||||||
.12 ldx #$ff found a / in Arg0 .. external
|
|
||||||
.13 txa
|
|
||||||
>STA.G CORE.IntCmd
|
|
||||||
|
|
||||||
.10 jsr CORE.StkGet IF,WHILE,FOR ?
|
|
||||||
bcs .3 no particular context, exec...
|
|
||||||
tax
|
|
||||||
|
|
||||||
>LDA.G CORE.IntCmd
|
|
||||||
bmi .2 external ...
|
|
||||||
|
|
||||||
and #$3F
|
|
||||||
cmp #C.FOR
|
|
||||||
bcs .3 FOR...FI : always execute
|
|
||||||
|
|
||||||
.2 txa
|
|
||||||
bpl .8 context is FALSE, skip line
|
|
||||||
asl
|
|
||||||
bpl .8 parent context is FALSE, skip line
|
|
||||||
|
|
||||||
.3 >LDA.G CORE.IntCmd
|
|
||||||
bmi CORE.ExecExtCmd
|
|
||||||
|
|
||||||
tax
|
|
||||||
jmp (J.CORE.CMD,x)
|
|
||||||
|
|
||||||
.8 clc
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
||||||
>STYA ZPInputCmdPtr
|
>STYA ZPInputCmdPtr
|
||||||
|
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
>STYA ZPArgVBufPtr
|
>STYA ZPArgVBufPtr
|
||||||
lda #0
|
|
||||||
sta (ZPArgVBuf) Reset Arg Buffer
|
lda #$ff
|
||||||
|
>STA.G CORE.IntCmd assume external
|
||||||
|
|
||||||
jsr CORE.GetCharNB
|
jsr CORE.GetCharNB
|
||||||
bcs CORE.Run.RTS Ending 0, CS,A=0
|
bcs CORE.Run.RTS Ending 0, CS,A=0
|
||||||
@ -190,15 +62,24 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
|||||||
bcs CORE.Run.RTS A=0, CS
|
bcs CORE.Run.RTS A=0, CS
|
||||||
eor #C.CR
|
eor #C.CR
|
||||||
bne .1
|
bne .1
|
||||||
rts EOL, CC,A=0
|
.9 rts EOL, CC,A=0
|
||||||
|
|
||||||
.2 cmp #'.'
|
.2 cmp #'|'
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
|
jsr IO.Pipe.In
|
||||||
|
bcs CORE.Run.RTS
|
||||||
|
|
||||||
|
jsr CORE.GetNextCharNB
|
||||||
|
bcs CORE.Run.CSYN
|
||||||
|
|
||||||
|
.3 cmp #'.'
|
||||||
|
bne .4
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPInputBufPtr),y
|
lda (ZPInputBufPtr),y
|
||||||
cmp #C.SPACE
|
cmp #C.SPACE
|
||||||
bne .1
|
bne .4
|
||||||
|
|
||||||
>LDA.G CORE.PSFlags yes, child process will run in same ENV
|
>LDA.G CORE.PSFlags yes, child process will run in same ENV
|
||||||
and #$ff^S.PS.F.DUPENV
|
and #$ff^S.PS.F.DUPENV
|
||||||
@ -207,18 +88,56 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
|
|||||||
jsr CORE.GetNextCharNB skip ". "
|
jsr CORE.GetNextCharNB skip ". "
|
||||||
bcs CORE.Run.RTS nothing to execute...
|
bcs CORE.Run.RTS nothing to execute...
|
||||||
|
|
||||||
.3 >LDYA L.CORE.CMD internal command ?
|
.4 >LDYA L.CMD internal command ?
|
||||||
jsr CORE.Lookup
|
jsr CORE.Lookup
|
||||||
bcs .4
|
bcs .6 external, add token
|
||||||
|
txa
|
||||||
|
>STA.G CORE.IntCmd
|
||||||
|
bra .7 internal, do not add token
|
||||||
|
|
||||||
jmp (J.CORE.CMD,x)
|
.5 >LDYA L.CORE.IO
|
||||||
|
jsr CORE.Lookup
|
||||||
|
bcs .6
|
||||||
|
|
||||||
.4
|
jsr CORE.GetNextCharNB
|
||||||
|
bcs CORE.Run.CSYN
|
||||||
|
jsr CORE.IO.JMP
|
||||||
|
bcs CORE.Run.RTS
|
||||||
|
bra .7
|
||||||
|
|
||||||
|
.6 jsr CORE.ArgV.Add
|
||||||
|
|
||||||
|
.7 jsr CORE.GetCharNB
|
||||||
|
bcs CORE.ExecCmd
|
||||||
|
|
||||||
|
jsr CORE.IsEndCmd
|
||||||
|
bcs .5
|
||||||
|
cmp #'|'
|
||||||
|
beq CORE.ExecCmd
|
||||||
|
|
||||||
|
jsr CORE.GetNextCharNB
|
||||||
|
|
||||||
|
jsr IO.Pipe.Out
|
||||||
|
bcs CORE.Run.RTS
|
||||||
|
|
||||||
|
bra CORE.ExecCmd
|
||||||
|
|
||||||
.8 clc
|
.8 clc
|
||||||
CORE.Run.RTS rts
|
CORE.Run.RTS rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* Input : ZPArgVBuf
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.ExecCmd lda #0
|
||||||
|
jsr CORE.ArgV.PutChar
|
||||||
|
|
||||||
|
>LDA.G CORE.IntCmd
|
||||||
|
bmi CORE.ExecExtCmd
|
||||||
|
tax
|
||||||
|
>LDYA ZPArgVBuf
|
||||||
|
>STYA ZPArgVBufPtr
|
||||||
|
|
||||||
|
jmp (J.CMD,x)
|
||||||
|
|
||||||
CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
|
CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
|
||||||
>LDYA ZPArgVBuf
|
>LDYA ZPArgVBuf
|
||||||
>SYSCALL execv
|
>SYSCALL execv
|
||||||
@ -247,55 +166,7 @@ CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
|
|||||||
.8 clc
|
.8 clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.NextArgVToken
|
|
||||||
lda (ZPArgVBufPtr)
|
|
||||||
inc ZPArgVBufPtr
|
|
||||||
bne .1
|
|
||||||
inc ZPArgVBufPtr+1
|
|
||||||
.1 tax
|
|
||||||
bne CORE.NextArgVToken
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.ShiftArgVToken
|
|
||||||
>LDYA ZPArgVBufPtr
|
|
||||||
jmp RemoveStrFromArgV
|
|
||||||
*--------------------------------------
|
|
||||||
CORE.GetArgX >LDYA ZPArgVBuf
|
|
||||||
|
|
||||||
dex
|
|
||||||
bmi .8
|
|
||||||
|
|
||||||
>STYA ZPPtr1
|
|
||||||
|
|
||||||
.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
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
* search ZPInputBufPtr in Y,A table
|
* search ZPInputBufPtr in Y,A table
|
||||||
*
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.Lookup >STYA ZPPtr1
|
CORE.Lookup >STYA ZPPtr1
|
||||||
|
|
||||||
@ -324,7 +195,7 @@ CORE.Lookup >STYA ZPPtr1
|
|||||||
plx
|
plx
|
||||||
|
|
||||||
tya
|
tya
|
||||||
sec
|
clc
|
||||||
adc ZPInputBufPtr
|
adc ZPInputBufPtr
|
||||||
sta ZPInputBufPtr
|
sta ZPInputBufPtr
|
||||||
bcc .8
|
bcc .8
|
||||||
@ -353,9 +224,110 @@ CORE.Lookup >STYA ZPPtr1
|
|||||||
bne .1
|
bne .1
|
||||||
|
|
||||||
lda #E.CSYN
|
lda #E.CSYN
|
||||||
sec
|
CORE.Lookup.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* ArgV
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.ArgV.Add jsr CORE.GetCharNB
|
||||||
|
bcs CORE.Lookup.9
|
||||||
|
|
||||||
|
ldx #0
|
||||||
|
|
||||||
|
.1 cmp #'"'
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
txa
|
||||||
|
eor #$ff
|
||||||
|
tax
|
||||||
|
bra .4
|
||||||
|
|
||||||
|
.2 cmp #C.SPACE
|
||||||
|
bne .3
|
||||||
|
txa
|
||||||
|
bpl .8
|
||||||
|
|
||||||
|
.3 jsr CORE.IsEndCmd
|
||||||
|
bcc CORE.Lookup.9
|
||||||
|
|
||||||
|
jsr CORE.ArgV.PutChar
|
||||||
|
|
||||||
|
.4 jsr CORE.GetNextChar
|
||||||
|
bra .1
|
||||||
|
|
||||||
|
.8 lda #0
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.ArgV.PutChar
|
||||||
|
sta (ZPArgVBufPtr)
|
||||||
|
CORE.ArgV.NextChar
|
||||||
|
inc ZPArgVBufPtr
|
||||||
|
bne .8
|
||||||
|
inc ZPArgVBufPtr
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.ArgV.Next lda (ZPArgVBufPtr)
|
||||||
|
beq .8
|
||||||
|
|
||||||
|
.1 jsr CORE.ArgV.NextChar
|
||||||
|
lda (ZPArgVBufPtr)
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
jsr CORE.ArgV.NextChar
|
||||||
|
lda (ZPArgVBufPtr)
|
||||||
|
|
||||||
|
.8 rts
|
||||||
|
*--------------------------------------
|
||||||
|
* IO
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.IO.JMP jmp (J.CORE.IO,x)
|
||||||
|
|
||||||
|
CORE.IO.AMP >LDA.G CORE.PSFlags
|
||||||
|
and #$ff^S.PS.F.HOLD
|
||||||
|
sta (pData),y
|
||||||
|
clc
|
||||||
|
CORE.IO.RTS rts
|
||||||
|
|
||||||
|
CORE.IO.IN lda #O.RDONLY+O.TEXT
|
||||||
|
jsr CORE.IO.Open
|
||||||
|
bcs CORE.IO.RTS
|
||||||
|
jmp IO.Set.In
|
||||||
|
CORE.IO.OUTA
|
||||||
|
CORE.IO.1OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
|
||||||
|
bra CORE.IO.OUT.1
|
||||||
|
CORE.IO.OUT
|
||||||
|
CORE.IO.1OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
|
||||||
|
|
||||||
|
CORE.IO.OUT.1 jsr CORE.IO.Open
|
||||||
|
bcs CORE.IO.RTS
|
||||||
|
jmp IO.Set.Out
|
||||||
|
|
||||||
|
CORE.IO.2OUTA lda #O.WRONLY+O.APPEND+O.CREATE+O.TEXT
|
||||||
|
bra CORE.IO.2OUT.1
|
||||||
|
CORE.IO.2OUT lda #O.WRONLY+O.TRUNC+O.CREATE+O.TEXT
|
||||||
|
|
||||||
|
CORE.IO.2OUT.1 jsr CORE.IO.Open
|
||||||
|
bcs CORE.IO.RTS
|
||||||
|
jmp IO.Set.Err
|
||||||
|
*--------------------------------------
|
||||||
|
CORE.IO.Open pha Open Mode
|
||||||
|
jsr CORE.GetCharNB
|
||||||
|
bcs .9 no arg left....
|
||||||
|
|
||||||
|
>PUSHWI 0 Aux type
|
||||||
|
>PUSHBI S.FI.T.TXT ftype
|
||||||
|
pla
|
||||||
|
>PUSHA flags
|
||||||
|
>LDYA ZPInputBufPtr
|
||||||
|
>SYSCALL fopen
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 pla
|
||||||
|
lda #E.CSYN
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
* Input Buffer
|
||||||
|
*--------------------------------------
|
||||||
CORE.IsSpaceOrEndCmd
|
CORE.IsSpaceOrEndCmd
|
||||||
cmp #C.SPACE
|
cmp #C.SPACE
|
||||||
beq CORE.IsEndCmd.8
|
beq CORE.IsEndCmd.8
|
||||||
@ -408,6 +380,8 @@ CORE.GetChar lda (ZPInputBufPtr)
|
|||||||
.9 sec
|
.9 sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
* Stack
|
||||||
|
*--------------------------------------
|
||||||
CORE.StkPushPtr lda ZPInputCmdPtr
|
CORE.StkPushPtr lda ZPInputCmdPtr
|
||||||
jsr CORE.StkPush
|
jsr CORE.StkPush
|
||||||
bcs CORE.StkPullPtr.9
|
bcs CORE.StkPullPtr.9
|
||||||
|
198
BIN/SH.S.EXP.txt
198
BIN/SH.S.EXP.txt
@ -3,8 +3,65 @@ PREFIX
|
|||||||
AUTO 4,1
|
AUTO 4,1
|
||||||
.LIST OFF
|
.LIST OFF
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXP.EVAL ldx #1
|
EXP.GET >LDYA ZPArgVBufPtr
|
||||||
jsr CORE.GetArgX
|
>STYA ZPPtr1
|
||||||
|
>DEBUG
|
||||||
|
jsr CORE.ArgV.Next
|
||||||
|
bne .1
|
||||||
|
|
||||||
|
>LDYA ZPPtr1 no op, return text value
|
||||||
|
clc
|
||||||
|
rts
|
||||||
|
|
||||||
|
.1 >LDYA ZPPtr1
|
||||||
|
>SYSCALL AToL
|
||||||
|
bcs .99
|
||||||
|
|
||||||
|
>PULLL.G M32.ACC
|
||||||
|
|
||||||
|
.2 >LDYA L.EXP.OP.MATH + - .... ?
|
||||||
|
jsr CORE.Lookup
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
txa
|
||||||
|
>STA.G CORE.Operator
|
||||||
|
|
||||||
|
jsr M32.ACC2ARG
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next get next argument in ACC
|
||||||
|
beq .9
|
||||||
|
|
||||||
|
>LDYA ZPArgVBufPtr
|
||||||
|
>SYSCALL AToL
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>PULLL.G M32.ACC
|
||||||
|
jsr EXP.GET.OP
|
||||||
|
.99 bcs .9
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next another op ?
|
||||||
|
bne .2
|
||||||
|
|
||||||
|
.8 >PUSHL.G M32.ACC
|
||||||
|
>PUSHBI 4
|
||||||
|
>PUSHW L.M32.Printf
|
||||||
|
>LEA.G M32.BUF
|
||||||
|
>SYSCALL sprintf
|
||||||
|
bcs .9
|
||||||
|
|
||||||
|
>LEA.G M32.Buf
|
||||||
|
|
||||||
|
rts
|
||||||
|
|
||||||
|
.9 lda #E.BADEXP
|
||||||
|
sec
|
||||||
|
rts
|
||||||
|
|
||||||
|
EXP.GET.OP >LDA.G CORE.Operator
|
||||||
|
tax
|
||||||
|
jmp (J.EXP.OP.MATH,x)
|
||||||
|
*--------------------------------------
|
||||||
|
EXP.TEST lda (ZPArgVBufPtr)
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>LDYA L.EXP.BEGIN
|
>LDYA L.EXP.BEGIN
|
||||||
@ -23,8 +80,7 @@ EXP.EVAL ldx #1
|
|||||||
>ORA.G CORE.Test
|
>ORA.G CORE.Test
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
ldx #2
|
jsr CORE.ArgV.Next
|
||||||
jsr CORE.GetArgX
|
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>LDYA L.EXP.OP.UNARY -d -e -f ?
|
>LDYA L.EXP.OP.UNARY -d -e -f ?
|
||||||
@ -35,21 +91,23 @@ EXP.EVAL ldx #1
|
|||||||
txa
|
txa
|
||||||
>STA.G CORE.Operator
|
>STA.G CORE.Operator
|
||||||
|
|
||||||
jsr EXP.EVAL.UNARY
|
jsr CORE.ArgV.Next
|
||||||
|
jsr EXP.TEST.UNARY
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>EOR.G CORE.Test
|
>EOR.G CORE.Test
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
ldx #4 go check ]
|
bra .8 go check ]
|
||||||
bra .8
|
|
||||||
|
|
||||||
.9 lda #E.ESYN
|
.9 lda #E.ESYN
|
||||||
sec
|
sec
|
||||||
.99 rts
|
.99 rts
|
||||||
|
|
||||||
.1 ldx #3
|
.1 >LDYA ZPArgVBufPtr
|
||||||
jsr CORE.GetArgX
|
>STYA ZPPtr1
|
||||||
|
|
||||||
|
jsr CORE.ArgV.Next
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>LDYA L.EXP.OP.BINARY -eq -ne .... ?
|
>LDYA L.EXP.OP.BINARY -eq -ne .... ?
|
||||||
@ -58,32 +116,26 @@ EXP.EVAL ldx #1
|
|||||||
txa
|
txa
|
||||||
>STA.G CORE.Operator
|
>STA.G CORE.Operator
|
||||||
|
|
||||||
jsr EXP.EVAL.BINARY
|
jsr EXP.TEST.BINARY
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>EOR.G CORE.Test
|
>EOR.G CORE.Test
|
||||||
sta (pData),y
|
sta (pData),y
|
||||||
|
|
||||||
ldx #5 go check ]
|
.8 jsr CORE.ArgV.Next
|
||||||
|
|
||||||
.8 jsr CORE.GetArgX
|
|
||||||
beq .9
|
beq .9
|
||||||
|
|
||||||
>STYA ZPPTR1
|
|
||||||
|
|
||||||
lda (ZPPTR1)
|
|
||||||
cmp #']'
|
cmp #']'
|
||||||
bne .9
|
bne .9
|
||||||
|
|
||||||
ldy #1
|
ldy #1
|
||||||
lda (ZPPTR1),y
|
lda (ZPArgVBufPtr),y
|
||||||
bne .9
|
bne .9
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXP.EVAL.UNARY ldx #3
|
EXP.TEST.UNARY jsr CORE.ArgV.Next
|
||||||
jsr CORE.GetArgX
|
beq .9 we need one arg
|
||||||
bcs .9 we need one arg
|
|
||||||
|
|
||||||
>LDA.G CORE.Operator
|
>LDA.G CORE.Operator
|
||||||
tax
|
tax
|
||||||
@ -114,8 +166,7 @@ EXP.OP.UNARY.F jsr EXP.OP.UNARY.DEF.7
|
|||||||
|
|
||||||
EXP.OP.UNARY.DEF.7
|
EXP.OP.UNARY.DEF.7
|
||||||
>PUSHEA.G StatBuf
|
>PUSHEA.G StatBuf
|
||||||
ldx #3
|
>LDYA ZPArgVBufPtr
|
||||||
jsr CORE.GetArgX
|
|
||||||
>SYSCALL STAT
|
>SYSCALL STAT
|
||||||
rts
|
rts
|
||||||
|
|
||||||
@ -129,27 +180,19 @@ EXP.OP.UNARY.DEF.9
|
|||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXP.EVAL.BINARY ldx #2
|
EXP.TEST.BINARY >LDA.G CORE.Operator
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
ldx #4
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>LDA.G CORE.Operator
|
|
||||||
beq .1 =
|
beq .1 =
|
||||||
|
|
||||||
cmp #2 !=
|
cmp #2 !=
|
||||||
bne EXP.EVAL.BINARY.NUM
|
bne EXP.TEST.BINARY.NUM
|
||||||
lda #$80
|
lda #$80
|
||||||
>STA.G CORE.Operator
|
>STA.G CORE.Operator
|
||||||
|
|
||||||
.1 ldx #2
|
.1 jsr CORE.ArgV.Next
|
||||||
jsr CORE.GetArgX
|
beq .9
|
||||||
>PUSHYA
|
|
||||||
ldx #4
|
>PUSHW ZPPtr1
|
||||||
jsr CORE.GetArgX
|
>LDYA ZPArgVBufPtr
|
||||||
>SYSCALL strcmp
|
>SYSCALL strcmp
|
||||||
ror CS if !=
|
ror CS if !=
|
||||||
and #$80
|
and #$80
|
||||||
@ -162,20 +205,17 @@ EXP.EVAL.BINARY ldx #2
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXP.EVAL.BINARY.NUM
|
EXP.TEST.BINARY.NUM
|
||||||
ldx #2
|
jsr CORE.ArgV.Next
|
||||||
jsr CORE.GetArgX
|
beq .9
|
||||||
bcs .9
|
|
||||||
|
|
||||||
|
>LDYA ZPPtr1
|
||||||
>SYSCALL AToL
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>PULLL.G M32.ACC
|
>PULLL.G M32.ACC
|
||||||
|
|
||||||
ldx #4
|
>LDYA ZPArgVBufPtr
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>SYSCALL AToL
|
>SYSCALL AToL
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
@ -203,72 +243,6 @@ EXP.EVAL.BINARY.NUM
|
|||||||
sec
|
sec
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
EXP.GET >LDA.G CORE.ArgIndex
|
|
||||||
inc
|
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
>LDA.G CORE.ArgIndex no op, return text value
|
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
rts
|
|
||||||
|
|
||||||
.1 >LDA.G CORE.ArgIndex
|
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
>SYSCALL AToL
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
>PULLL.G M32.ACC
|
|
||||||
|
|
||||||
jsr EXP.GetNext
|
|
||||||
|
|
||||||
.2 >LDYA L.EXP.OP.MATH + - .... ?
|
|
||||||
jsr CORE.Lookup
|
|
||||||
|
|
||||||
bcs .9
|
|
||||||
txa
|
|
||||||
>STA.G CORE.Operator
|
|
||||||
|
|
||||||
jsr M32.ACC2ARG
|
|
||||||
|
|
||||||
jsr EXP.GetNext get next argument in ACC
|
|
||||||
.99 bcs .9
|
|
||||||
|
|
||||||
>SYSCALL AToL
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>PULLL.G M32.ACC
|
|
||||||
jsr EXP.GET.OP
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
jsr EXP.GetNext another op ?
|
|
||||||
bcc .2
|
|
||||||
|
|
||||||
.8 >PUSHL.G M32.ACC
|
|
||||||
>PUSHBI 4
|
|
||||||
>PUSHW L.M32.Printf
|
|
||||||
>LEA.G M32.BUF
|
|
||||||
>SYSCALL sprintf
|
|
||||||
bcs .9
|
|
||||||
|
|
||||||
>LEA.G M32.Buf
|
|
||||||
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 lda #E.BADEXP
|
|
||||||
rts
|
|
||||||
|
|
||||||
EXP.GET.OP >LDA.G CORE.Operator
|
|
||||||
tax
|
|
||||||
jmp (J.EXP.OP.MATH,x)
|
|
||||||
*--------------------------------------
|
|
||||||
EXP.GetNext >INC.G CORE.ArgIndex
|
|
||||||
tax
|
|
||||||
jsr CORE.GetArgX
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/BIN/SH.S.EXP
|
SAVE USR/SRC/BIN/SH.S.EXP
|
||||||
LOAD USR/SRC/BIN/SH.S
|
LOAD USR/SRC/BIN/SH.S
|
||||||
|
31
BIN/SH.S.txt
31
BIN/SH.S.txt
@ -110,8 +110,8 @@ J.ESC .DA CL.BS left arrow
|
|||||||
.DA HIS.GetNext
|
.DA HIS.GetNext
|
||||||
.DA HIS.GetPrev
|
.DA HIS.GetPrev
|
||||||
.DA CL.NAK right arow
|
.DA CL.NAK right arow
|
||||||
L.CORE.CMD .DA CORE.CMD
|
L.CMD .DA CMD
|
||||||
J.CORE.CMD .DA CMD.NOHUP
|
J.CMD .DA CMD.NOHUP
|
||||||
.DA CMD.CD
|
.DA CMD.CD
|
||||||
.DA CMD.DATE
|
.DA CMD.DATE
|
||||||
.DA CMD.ECHO
|
.DA CMD.ECHO
|
||||||
@ -138,15 +138,15 @@ J.CORE.CMD .DA CMD.NOHUP
|
|||||||
.DA CMD.IF
|
.DA CMD.IF
|
||||||
.DA CMD.ELSE
|
.DA CMD.ELSE
|
||||||
.DA CMD.FI
|
.DA CMD.FI
|
||||||
L.CMD.IO .DA CMD.IO
|
L.CORE.IO .DA CORE.IO
|
||||||
J.CMD.IO .DA CMD.IO.AMP
|
J.CORE.IO .DA CORE.IO.AMP
|
||||||
.DA CMD.IO.IN
|
.DA CORE.IO.IN
|
||||||
.DA CMD.IO.OUTA
|
.DA CORE.IO.OUTA
|
||||||
.DA CMD.IO.OUT
|
.DA CORE.IO.OUT
|
||||||
.DA CMD.IO.1OUTA
|
.DA CORE.IO.1OUTA
|
||||||
.DA CMD.IO.1OUT
|
.DA CORE.IO.1OUT
|
||||||
.DA CMD.IO.2OUTA
|
.DA CORE.IO.2OUTA
|
||||||
.DA CMD.IO.2OUT
|
.DA CORE.IO.2OUT
|
||||||
L.EXP.BEGIN .DA EXP.BEGIN
|
L.EXP.BEGIN .DA EXP.BEGIN
|
||||||
L.EXP.OP.UNARY .DA EXP.OP.UNARY
|
L.EXP.OP.UNARY .DA EXP.OP.UNARY
|
||||||
J.EXP.OP.UNARY .DA EXP.OP.UNARY.D
|
J.EXP.OP.UNARY .DA EXP.OP.UNARY.D
|
||||||
@ -174,7 +174,7 @@ CS.RUN jsr CL.Init
|
|||||||
ldy #S.PS.ARGC
|
ldy #S.PS.ARGC
|
||||||
lda (pPS),y
|
lda (pPS),y
|
||||||
beq .1 no arg, continue starting interactive
|
beq .1 no arg, continue starting interactive
|
||||||
|
|
||||||
>PUSHWI 0 Aux type
|
>PUSHWI 0 Aux type
|
||||||
>PUSHBI S.FI.T.TXT
|
>PUSHBI S.FI.T.TXT
|
||||||
>PUSHBI O.RDONLY
|
>PUSHBI O.RDONLY
|
||||||
@ -206,6 +206,7 @@ CS.RUN jsr CL.Init
|
|||||||
>LDYA L.MSG.GREETINGS
|
>LDYA L.MSG.GREETINGS
|
||||||
>SYSCALL printf
|
>SYSCALL printf
|
||||||
bcs CS.INIT.RTS
|
bcs CS.INIT.RTS
|
||||||
|
bra CS.RUN.LOOP
|
||||||
|
|
||||||
>PUSHEA.G StatBuf
|
>PUSHEA.G StatBuf
|
||||||
>LDYA L.HOME.PROFILE
|
>LDYA L.HOME.PROFILE
|
||||||
@ -526,7 +527,7 @@ ENV.PS1 .AZ "PS1"
|
|||||||
ENV.HOME .AZ "HOME"
|
ENV.HOME .AZ "HOME"
|
||||||
HOME.PROFILE .AZ "${HOME}PROFILE"
|
HOME.PROFILE .AZ "${HOME}PROFILE"
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CORE.CMD .AZ "NOHUP"
|
CMD .AZ "NOHUP"
|
||||||
.AZ "CD"
|
.AZ "CD"
|
||||||
.AZ "DATE"
|
.AZ "DATE"
|
||||||
.AZ "ECHO"
|
.AZ "ECHO"
|
||||||
@ -557,7 +558,7 @@ CORE.CMD .AZ "NOHUP"
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* https://www.tldp.org/LDP/abs/html/io-redirection.html
|
* https://www.tldp.org/LDP/abs/html/io-redirection.html
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.IO .AZ "&"
|
CORE.IO .AZ "&"
|
||||||
.AZ "<"
|
.AZ "<"
|
||||||
.AZ ">>"
|
.AZ ">>"
|
||||||
.AZ ">"
|
.AZ ">"
|
||||||
@ -633,13 +634,11 @@ CL.hCLBuf .BS 1
|
|||||||
CL.Ptr .BS 1
|
CL.Ptr .BS 1
|
||||||
CL.Len .BS 1
|
CL.Len .BS 1
|
||||||
CL.bReady .BS 1
|
CL.bReady .BS 1
|
||||||
CL.CmdSep .BS 1
|
|
||||||
|
|
||||||
CORE.IntCmd .BS 1
|
CORE.IntCmd .BS 1
|
||||||
CORE.hArgVBuf .BS 1
|
CORE.hArgVBuf .BS 1
|
||||||
|
|
||||||
CORE.ArgIndex .BS 1
|
CORE.ArgIndex .BS 1
|
||||||
CORE.Varname .BS 1
|
|
||||||
CORE.Test .BS 1
|
CORE.Test .BS 1
|
||||||
CORE.Operator .BS 1
|
CORE.Operator .BS 1
|
||||||
CORE.PSFlags .BS 1
|
CORE.PSFlags .BS 1
|
||||||
|
Loading…
Reference in New Issue
Block a user