Kernel 0.93+

This commit is contained in:
Rémy GIBERT 2020-01-16 15:55:21 +01:00
parent ad6a4da9a4
commit 3cab630f23
2 changed files with 38 additions and 39 deletions

Binary file not shown.

View File

@ -18,9 +18,13 @@ ENV.hMem .BS 1
ENV.bExp .BS 1 ENV.bExp .BS 1
.ED .ED
*-------------------------------------- *--------------------------------------
K.ExpandStr stz ENV.hMem Reset Intermediate string... K.ExpandStr jsr K.strdup
bcc .1
.1 >STYA TXTPTR rts
.1 stx ENV.hMem Intermediate string...
>STYA TXTPTR
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
@ -95,7 +99,7 @@ K.ExpandStr stz ENV.hMem Reset Intermediate string...
bcs .70 bcs .70
jsr ENV.NextEnvP3Y Skip NAME= jsr ENV.NextEnvP3Y Skip NAME=
jsr ENV.AddP3ToBuf jsr ENV.AddP3ToBuf Add VALUE
.70 lda (TXTPTR) .70 lda (TXTPTR)
beq .72 beq .72
@ -110,22 +114,23 @@ K.ExpandStr stz ENV.hMem Reset Intermediate string...
bra .35 skip "}" and loop bra .35 skip "}" and loop
.80 lda ENV.hMem working from our temp string ? .80 ldx ENV.BufLen
beq .81 no...
jsr K.FreeMem yes, discard....
.81 ldx ENV.BufLen
stz K.Buf256,x stz K.Buf256,x
>LDYAI K.Buf256 lda ENV.hMem
jsr K.FreeMem
>LDYAI K.Buf256 dup in case of '' processing
jsr K.strdup jsr K.strdup
bcs K.FileSearch.RTS bcs .9
stx ENV.hMem save this as temp string, in case of recurse
bit ENV.bExp Did we expand something ? bit ENV.bExp Did we expand something ?
bpl K.FileSearch.RTS No, exit with Y,A from STRDUP bpl .9
jmp .1 Yes, start over with ENV.hMem jmp .1
* clc
.9 rts
*/-------------------------------------- */--------------------------------------
* # FileSearch * # FileSearch
* Search a file in the provided PATH list * Search a file in the provided PATH list
@ -193,20 +198,12 @@ ENV.Search.PATH ldx #4
ENV.Search.Ptr2 >LDYA ZPPtr2 ENV.Search.Ptr2 >LDYA ZPPtr2
ENV.Search.YA >STYA .4+1 ENV.Search.YA >STYA .4+1
* >LDYA ENV.SearchPath
* jsr K.ExpandStr Y,A = Search Path, Expand it
* bcs ENV.Search.98
* >STYA .2+1 expanded search list ;
* stx ENV.Search.97+1
stz .1+1 stz .1+1
.1 ldy #$0 Self Modified Index in Search list string .1 ldy #0 Self Modified Index in Search list string
ldx #$0 ldx #0
*.2 lda $ffff,y Self Modified, Search list string
.2 lda (ENV.SearchPath),y .2 lda (ENV.SearchPath),y
beq .3 end of string, try it.... beq .3 end of string, try it....
@ -220,11 +217,11 @@ ENV.Search.YA >STYA .4+1
bra .2 bra .2
.3 txa .3 txa
beq ENV.Search.97 String is empty....nothing to try beq ENV.Search.98 String is empty....nothing to try
sty .1+1 save current index sty .1+1 save current index
ldy #$0 ldy #0
.4 lda $ffff,y Self Modified, Append Filename... .4 lda $ffff,y Self Modified, Append Filename...
sta K.Buf256,x sta K.Buf256,x
@ -238,19 +235,15 @@ ENV.Search.YA >STYA .4+1
>LDYAI K.Buf256 >LDYAI K.Buf256
>SYSCALL2 stat >SYSCALL2 stat
bcs .1 Failed...retry next path... bcs .1 Failed...retry next path...
lda K.S.STAT+S.STAT.P.TYPE lda K.S.STAT+S.STAT.P.TYPE
cmp #S.FI.T.DIR Dir ? cmp #S.FI.T.DIR Dir ?
beq .1 beq .1
jsr ENV.Search.97 Discard Expanded hSrch list jsr ENV.Search.98 Discard Expanded hSrch list
clc clc
rts rts
ENV.Search.97
* lda #$ff SELF MODIFIED : Discard Expanded Search list
* jsr K.FreeMem
ENV.Search.98 lda #$ff SELF MODIFIED : Discard Search list ENV.Search.98 lda #$ff SELF MODIFIED : Discard Search list
jsr K.FreeMem jsr K.FreeMem
@ -268,11 +261,11 @@ ENV.Search.98 lda #$ff SELF MODIFIED : Discard Search list
* `>SYSCALL putenv` * `>SYSCALL putenv`
* ## RETURN VALUE * ## RETURN VALUE
*\-------------------------------------- *\--------------------------------------
K.PutEnv >STYA ZPPtr2 NAME=VALUE K.PutEnv >STYA FORPNT NAME=VALUE
ldy #0 ldy #0
.1 lda (ZPPtr2),y copy NAME to K.Buf256 .1 lda (FORPNT) copy NAME to K.Buf256
beq .9 beq .9
cmp #'=' cmp #'='
@ -280,7 +273,11 @@ K.PutEnv >STYA ZPPtr2 NAME=VALUE
sta K.Buf256,y sta K.Buf256,y
iny iny
inc FORPNT
bne .1 bne .1
inc FORPNT+1
bra .1
.9 lda #E.SYN .9 lda #E.SYN
sec sec
@ -288,10 +285,12 @@ K.PutEnv >STYA ZPPtr2 NAME=VALUE
.2 lda #0 .2 lda #0
sta K.Buf256,y sta K.Buf256,y
inc FORPNT
bne .3
inc FORPNT+1
jsr SHARED.AddYp1ToPtr2 .3 >LDYAI K.Buf256
>LDYAI K.Buf256
>STYA TXTPTR >STYA TXTPTR
bra K.SetEnv.I bra K.SetEnv.I
*/-------------------------------------- */--------------------------------------
@ -335,7 +334,7 @@ K.SetEnv.I jsr K.UnsetEnv.I
ldy #$ff ldy #$ff
.19 iny .19 iny
lda (ZPPtr2),y lda (FORPNT),y
bne .19 bne .19
jsr ENV.NextEnvP4Y ZPPtr4 = ENVSIZE + VALUE jsr ENV.NextEnvP4Y ZPPtr4 = ENVSIZE + VALUE