Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2019-09-09 17:38:37 +02:00
parent e3b51a6017
commit 3bfe0a6921
2 changed files with 106 additions and 142 deletions

View File

@ -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

View File

@ -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