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