mirror of
https://github.com/A2osX/A2osX.git
synced 2025-02-18 15:30:43 +00:00
Kernel 0.93+
This commit is contained in:
parent
e3b51a6017
commit
3bfe0a6921
@ -1307,7 +1307,9 @@ CMD.NEXT.LINE lda (pData)
|
|||||||
|
|
||||||
lda #0
|
lda #0
|
||||||
* clc
|
* clc
|
||||||
.9 rts
|
.9
|
||||||
|
CMD.NEXT.LINE.RTS
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.WHILE
|
CMD.WHILE
|
||||||
CMD.IF jsr CORE.StkGetCtx
|
CMD.IF jsr CORE.StkGetCtx
|
||||||
@ -1316,23 +1318,22 @@ CMD.IF jsr CORE.StkGetCtx
|
|||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
jsr EXP.TEST
|
jsr EXP.TEST
|
||||||
bcs .9
|
bcs CMD.NEXT.LINE.RTS
|
||||||
|
|
||||||
.3 lda CORE.IntCmd
|
.3 lda CORE.IntCmd
|
||||||
cmp #C.WHILE
|
cmp #C.WHILE
|
||||||
bne .8
|
bne .8
|
||||||
|
|
||||||
|
lda #3
|
||||||
|
jsr CORE.StkCheck
|
||||||
|
bcs CMD.NEXT.LINE.RTS
|
||||||
|
|
||||||
>LDYA ZPInputCmdPtr
|
>LDYA ZPInputCmdPtr
|
||||||
jsr CORE.StkPushYA Push BEFORE WHILE/IF
|
jsr CORE.StkPushYA Push BEFORE WHILE/IF
|
||||||
bcs .9
|
|
||||||
|
|
||||||
.8 lda CORE.TestResult
|
.8 lda CORE.TestResult
|
||||||
ora CORE.IntCmd
|
ora CORE.IntCmd
|
||||||
jsr CORE.StkPush
|
jmp CORE.StkPush
|
||||||
|
|
||||||
clc
|
|
||||||
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
CMD.LOOP jsr CORE.StkPull
|
CMD.LOOP jsr CORE.StkPull
|
||||||
bcs .9
|
bcs .9
|
||||||
|
@ -12,30 +12,23 @@ NEW
|
|||||||
.OR ZPDRV
|
.OR ZPDRV
|
||||||
ENV.SearchPath .BS 2
|
ENV.SearchPath .BS 2
|
||||||
ENV.BufLen .BS 1
|
ENV.BufLen .BS 1
|
||||||
|
ENV.VarEndChar .BS 1
|
||||||
ENV.bNoExp .BS 1
|
ENV.bNoExp .BS 1
|
||||||
ENV.VarLen .BS 1
|
|
||||||
ENV.hMem .BS 1
|
ENV.hMem .BS 1
|
||||||
ENV.bInVar .BS 1
|
|
||||||
ENV.bExp .BS 1
|
ENV.bExp .BS 1
|
||||||
ENV.VarName .BS 16
|
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.ExpandStr stz ENV.hMem Reset Intermediate string...
|
K.ExpandStr stz ENV.hMem Reset Intermediate string...
|
||||||
|
|
||||||
.1 >STYA ZPPtr2
|
.1 >STYA ZPPtr1
|
||||||
|
|
||||||
stz ENV.BufLen init Expanded String len=0
|
stz ENV.BufLen init Expanded String len=0
|
||||||
stz ENV.bExp No var found yet
|
stz ENV.bExp No var found yet
|
||||||
stz ENV.bNoExp Reset no expand flag
|
stz ENV.bNoExp Reset no expand flag
|
||||||
|
|
||||||
ldy #0
|
|
||||||
|
|
||||||
.10 stz ENV.VarLen
|
.10
|
||||||
stz ENV.bInVar reset In var flag
|
.11 jsr SHARED.GetCharPtr1 End of CSTR?
|
||||||
|
beq .80
|
||||||
.11 lda (ZPPtr2),y End of CSTR?
|
|
||||||
beq .8
|
|
||||||
|
|
||||||
iny
|
|
||||||
|
|
||||||
cmp #'''
|
cmp #'''
|
||||||
bne .21
|
bne .21
|
||||||
@ -51,64 +44,71 @@ K.ExpandStr stz ENV.hMem Reset Intermediate string...
|
|||||||
.22 jsr ENV.AddAToBuf
|
.22 jsr ENV.AddAToBuf
|
||||||
bra .11
|
bra .11
|
||||||
|
|
||||||
.23 ldx ENV.bInVar already in a var?
|
.23 cmp #'$' no, found one ?
|
||||||
bne .3 yes...
|
|
||||||
|
|
||||||
cmp #'$' no, found one ?
|
|
||||||
bne .22 no, store...
|
bne .22 no, store...
|
||||||
|
|
||||||
ror ENV.bExp Toggle Expanded flag
|
ror ENV.bExp Toggle Expanded flag
|
||||||
|
|
||||||
sta ENV.bInVar Set In Var flag
|
lda (ZPPtr1)
|
||||||
|
bne .3
|
||||||
bra .11 skip this char
|
|
||||||
|
lda #'$' End of string, output $
|
||||||
.3 cmp #'{' we are in var, "{" after "$"?
|
bra .22
|
||||||
|
|
||||||
|
.3 stz ENV.VarEndChar
|
||||||
|
|
||||||
|
cmp #'{' "${VAR]""?
|
||||||
bne .31
|
bne .31
|
||||||
ldx ENV.VarLen No char in var yet ?
|
|
||||||
beq .11 normal, "${" syntax is ok,skip
|
|
||||||
|
|
||||||
bne .5 not allowed char in varname, end of var
|
dec ENV.VarEndChar "}" expected
|
||||||
|
|
||||||
.31 cmp #'}' end of var?
|
|
||||||
beq .50
|
|
||||||
|
|
||||||
jsr SHARED.IsIDValid _,.,a-z,A-Z,0-9 ?
|
jsr SHARED.NextCharPtr1 skip "{"
|
||||||
bcc .32 yes, add to varname
|
bra .40
|
||||||
|
|
||||||
ldx ENV.VarLen
|
.31 jsr ZP.IsDigit $0 ... $9 ?
|
||||||
bne .5 varname has already chars...end of var
|
bcs .32
|
||||||
|
|
||||||
inx must be a $? or ?x.....go expand
|
and #$0f
|
||||||
stx ENV.VarLen
|
|
||||||
sta ENV.VarName
|
|
||||||
bra .51 go Expand....
|
|
||||||
|
|
||||||
.32 ldx ENV.VarLen
|
|
||||||
cpx #16
|
|
||||||
beq .11 varname longer than 15....ignore
|
|
||||||
|
|
||||||
sta ENV.VarName,x
|
jsr K.ArgV
|
||||||
inx
|
bcs .10 Arg# is undefined, do not append anything
|
||||||
stx ENV.VarLen
|
|
||||||
bra .11
|
jsr ENV.AddYAToBuf
|
||||||
|
bra .10
|
||||||
|
|
||||||
|
.32 ldx #ENV.SysVars.Cnt-1
|
||||||
|
|
||||||
.5 dey last char was invalid...move back
|
.33 cmp ENV.SysVars,x
|
||||||
|
beq .34
|
||||||
|
dex
|
||||||
|
bpl .33
|
||||||
|
bra .40
|
||||||
|
|
||||||
.50 ldx ENV.VarLen
|
.34 txa
|
||||||
beq .10 var name is empty...start over
|
bne .35
|
||||||
|
|
||||||
.51 stz ENV.VarName,x
|
jsr ENV.SysVarsAllArgs
|
||||||
phy save current index
|
bra .10
|
||||||
jsr ENV.GetValue
|
|
||||||
ply restore index in string...
|
.35 ldy ENV.SysVars.PS-1,x
|
||||||
.52 bra .10 reset start flag and continue
|
lda (pPS),y
|
||||||
|
jsr ENV.SysVarsNum
|
||||||
|
bra .10
|
||||||
|
|
||||||
.8 ldx ENV.VarLen end of STR,are we in a var?
|
.40
|
||||||
beq .80 no...exit...
|
|
||||||
|
|
||||||
stz ENV.VarName,x
|
|
||||||
jsr ENV.GetValue yes, expand and add to STR
|
.50 jsr ENV.FindVarP1
|
||||||
|
bcs .10
|
||||||
|
|
||||||
|
jsr SHARED.AddYToPtr1
|
||||||
|
jsr ENV.NextEnvP3
|
||||||
|
jsr ENV.AddP3ToBuf
|
||||||
|
|
||||||
|
.70 lda ENV.VarEndChar
|
||||||
|
beq .10
|
||||||
|
jsr SHARED.GetCharPtr1 skip "}"
|
||||||
|
jmp .10
|
||||||
|
|
||||||
.80 lda ENV.hMem working from our temp string ?
|
.80 lda ENV.hMem working from our temp string ?
|
||||||
beq .81 no...
|
beq .81 no...
|
||||||
@ -126,6 +126,8 @@ K.ExpandStr stz ENV.hMem Reset Intermediate string...
|
|||||||
bit ENV.bExp SELF MODIFIED Did we expand something ?
|
bit ENV.bExp SELF MODIFIED Did we expand something ?
|
||||||
bpl K.FileSearch.RTS No, exit with Y,A from STRDUP
|
bpl K.FileSearch.RTS No, exit with Y,A from STRDUP
|
||||||
jmp .1 Yes, start over with hPStr
|
jmp .1 Yes, start over with hPStr
|
||||||
|
.99 >DEBUG
|
||||||
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # FileSearch
|
* # FileSearch
|
||||||
* Search a file in the provided PATH list
|
* Search a file in the provided PATH list
|
||||||
@ -400,7 +402,7 @@ K.GetEnv >STYA ZPPtr1
|
|||||||
jsr ENV.NextEnvP3 Skip NAME
|
jsr ENV.NextEnvP3 Skip NAME
|
||||||
clc just in case ADC in NextEnvPtr3 disturb CC
|
clc just in case ADC in NextEnvPtr3 disturb CC
|
||||||
|
|
||||||
.9 >LDYA ZPPtr3
|
.9 >LDYA ZPPtr3 \0
|
||||||
rts
|
rts
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # UnsetEnv
|
* # UnsetEnv
|
||||||
@ -424,13 +426,6 @@ K.UnsetEnv.I.9 rts
|
|||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* PRIVATE
|
* PRIVATE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.GetValue jsr ENV.ExpandSysVar
|
|
||||||
bcc K.UnsetEnv.I.9
|
|
||||||
|
|
||||||
>LDYAI ENV.VarName
|
|
||||||
jsr K.GetEnv
|
|
||||||
bcs K.UnsetEnv.I.9
|
|
||||||
*--------------------------------------
|
|
||||||
ENV.AddYAToBuf >STYA ZPPtr3
|
ENV.AddYAToBuf >STYA ZPPtr3
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.AddP3ToBuf ldx ENV.BufLen
|
ENV.AddP3ToBuf ldx ENV.BufLen
|
||||||
@ -446,75 +441,37 @@ ENV.AddP3ToBuf ldx ENV.BufLen
|
|||||||
stx ENV.BufLen
|
stx ENV.BufLen
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
* ENV.ExpandSysVar
|
|
||||||
* In:
|
|
||||||
* ENV.VarLen,ENV.VarName
|
|
||||||
* Out:
|
|
||||||
* CC: Found
|
|
||||||
* Append VALUE to K.Buf256
|
|
||||||
* CS: Not Found
|
|
||||||
*--------------------------------------
|
|
||||||
ENV.ExpandSysVar
|
ENV.ExpandSysVar
|
||||||
ldx ENV.VarLen
|
>LDYAI ENV.StrVars
|
||||||
cpx #1 is name 1 char?
|
|
||||||
bne .4
|
|
||||||
|
|
||||||
lda ENV.VarName
|
|
||||||
jsr ZP.IsDigit $0...$9 ??
|
|
||||||
bcs .1
|
|
||||||
|
|
||||||
and #$0F
|
|
||||||
|
|
||||||
jsr K.ArgV
|
|
||||||
bcs K.UnsetEnv.I.8 Arg# is undefined, do not append anything
|
|
||||||
|
|
||||||
jmp ENV.AddYAToBuf
|
|
||||||
|
|
||||||
.1 ldx #ENV.SysVars.Cnt-1
|
|
||||||
|
|
||||||
.2 cmp ENV.SysVars,x
|
|
||||||
beq .3
|
|
||||||
dex
|
|
||||||
bpl .2
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
rts
|
|
||||||
|
|
||||||
.3 txa
|
|
||||||
beq ENV.SysVarsArgs
|
|
||||||
|
|
||||||
ldy ENV.SysVars.PS-1,x
|
|
||||||
bra ENV.SysVars.PSY
|
|
||||||
|
|
||||||
.4 >LDYAI ENV.StrVars
|
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
|
|
||||||
ldx #0
|
ldx #0
|
||||||
|
|
||||||
.5 lda (ZPPtr3)
|
.4 ldy #$ff
|
||||||
beq .9
|
|
||||||
|
|
||||||
cmp ENV.VarLen
|
.5 iny
|
||||||
bne .7
|
lda (ZPPtr3),y
|
||||||
|
cmp (ZPPtr3),y
|
||||||
tay
|
|
||||||
|
|
||||||
.6 lda (ZPPtr3),y
|
|
||||||
dey
|
|
||||||
cmp ENV.VarName,y
|
|
||||||
bne .7
|
bne .7
|
||||||
tya
|
tya
|
||||||
bne .6
|
bne .7
|
||||||
|
|
||||||
jmp (ENV.StrVarsJmp,x)
|
jmp (ENV.StrVarsJmp,x)
|
||||||
|
|
||||||
.7 inx
|
.7 inx
|
||||||
inx
|
inx
|
||||||
|
|
||||||
lda (ZPPtr3)
|
lda (ZPPtr3)
|
||||||
|
beq .9
|
||||||
|
|
||||||
jsr ENV.NextEnvP3A
|
jsr ENV.NextEnvP3A
|
||||||
bra .5
|
bra .4
|
||||||
|
|
||||||
|
.9 sec
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.SysVarsArgs lda #1
|
ENV.SysVarsAllArgs
|
||||||
|
lda #1
|
||||||
jsr K.ArgV
|
jsr K.ArgV
|
||||||
bcs ENV.SysVarsNum.8
|
bcs ENV.SysVarsNum.8
|
||||||
|
|
||||||
@ -533,8 +490,6 @@ ENV.SysVarsArgs lda #1
|
|||||||
jsr ENV.AddAToBuf
|
jsr ENV.AddAToBuf
|
||||||
bra .2
|
bra .2
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.SysVars.PSY lda (pPS),y
|
|
||||||
|
|
||||||
ENV.SysVarsNum jsr MATH.A2STR10NP
|
ENV.SysVarsNum jsr MATH.A2STR10NP
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
@ -555,6 +510,15 @@ ENV.SysVars .AS "*#?@$!"
|
|||||||
ENV.SysVars.Cnt .EQ *-ENV.SysVars
|
ENV.SysVars.Cnt .EQ *-ENV.SysVars
|
||||||
ENV.SysVars.PS .DA #S.PS.ARGC,#S.PS.RC,#S.PS.PPID,#S.PS.PID,#S.PS.CPID
|
ENV.SysVars.PS .DA #S.PS.ARGC,#S.PS.RC,#S.PS.PPID,#S.PS.PID,#S.PS.CPID
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
ENV.StrVars .AZ "LOGNAME"
|
||||||
|
.AZ "GECOS"
|
||||||
|
.AZ "HOME"
|
||||||
|
.AZ "SHELL"
|
||||||
|
.AZ "PWD"
|
||||||
|
.AZ "UID"
|
||||||
|
.AZ "GID"
|
||||||
|
.DA #0
|
||||||
|
*--------------------------------------
|
||||||
ENV.StrVarsJmp .DA ENV.StrVarsSession
|
ENV.StrVarsJmp .DA ENV.StrVarsSession
|
||||||
.DA ENV.StrVarsSession
|
.DA ENV.StrVarsSession
|
||||||
.DA ENV.StrVarsSession
|
.DA ENV.StrVarsSession
|
||||||
@ -602,6 +566,7 @@ ENV.StrVarsSession
|
|||||||
* ZPPtr1 -> NAME
|
* ZPPtr1 -> NAME
|
||||||
* Out:
|
* Out:
|
||||||
* CC: Found
|
* CC: Found
|
||||||
|
* Y = NAME len
|
||||||
* ZPPtr1 -> NAME
|
* ZPPtr1 -> NAME
|
||||||
* ZPPtr3 -> ENV.NAME
|
* ZPPtr3 -> ENV.NAME
|
||||||
* CS: Not Found
|
* CS: Not Found
|
||||||
@ -617,16 +582,23 @@ ENV.FindVarP1 jsr ENV.InitEnvP3 Store ENV
|
|||||||
|
|
||||||
.2 iny
|
.2 iny
|
||||||
lda (ZPPtr1),y
|
lda (ZPPtr1),y
|
||||||
cmp (ZPPtr3),y
|
beq .3
|
||||||
bne .3
|
|
||||||
|
|
||||||
ora #0
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
|
jsr SHARED.IsIDValid
|
||||||
|
bcs .3
|
||||||
|
|
||||||
|
cmp (ZPPtr3),y
|
||||||
|
beq .2
|
||||||
|
|
||||||
|
bra .4
|
||||||
|
|
||||||
|
.3 lda (ZPPtr3),y
|
||||||
|
bne .4
|
||||||
|
|
||||||
clc
|
clc
|
||||||
rts
|
rts
|
||||||
|
|
||||||
.3 jsr ENV.NextEnvP3x2 Skip NAME & VALUE
|
.4 jsr ENV.NextEnvP3x2 Skip NAME & VALUE
|
||||||
bra .1
|
bra .1
|
||||||
|
|
||||||
.9 sec
|
.9 sec
|
||||||
@ -740,15 +712,6 @@ ENV.Dup.A sta .8+1 Store target page Count
|
|||||||
clc
|
clc
|
||||||
.9 rts
|
.9 rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
ENV.StrVars >PSTR "LOGNAME"
|
|
||||||
>PSTR "GECOS"
|
|
||||||
>PSTR "HOME"
|
|
||||||
>PSTR "SHELL"
|
|
||||||
>PSTR "PWD"
|
|
||||||
>PSTR "UID"
|
|
||||||
>PSTR "GID"
|
|
||||||
.DA #0
|
|
||||||
*--------------------------------------
|
|
||||||
ENV.VARS .DA .1
|
ENV.VARS .DA .1
|
||||||
.DA .2
|
.DA .2
|
||||||
.DA .3
|
.DA .3
|
||||||
|
Loading…
x
Reference in New Issue
Block a user