mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-04 12:29:40 +00:00
Kernel 0.93+
This commit is contained in:
parent
dc1d30d28d
commit
c893bb214a
|
@ -118,33 +118,20 @@ Create a hDEV
|
|||
## RETURN VALUE
|
||||
none, always succeed.
|
||||
|
||||
# ExpandStr
|
||||
**In:**
|
||||
Y,A = PTR to String to Expand (C-String)
|
||||
|
||||
## RETURN VALUE
|
||||
X = hMem to Expanded String (C-String)
|
||||
Y,A = PTR to Expanded String
|
||||
|
||||
# FileSearch
|
||||
Search a file in the provided PATH list
|
||||
And return, if found, the full path to it.
|
||||
# Expand
|
||||
|
||||
## C
|
||||
`int filesearch ( char * filename, char * searchpath, char * fullpath, stat * filestat);`
|
||||
`char *expand(const char *str, char *expanded);`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHWI filename`
|
||||
`>PUSHWI fullpath`
|
||||
`>PUSHWI searchpath`
|
||||
`>PUSHWI filestat`
|
||||
`>PUSHW string`
|
||||
`>PUSHW expanded`
|
||||
`>SYSCALL expand`
|
||||
|
||||
## RETURN VALUE
|
||||
CC : success
|
||||
DstBuf = FilePath
|
||||
DstStat = S.STAT
|
||||
CS : not found
|
||||
Y,A = PTR to Expanded String
|
||||
X = hMem to Expanded String (C-String)
|
||||
|
||||
# PutEnv
|
||||
Change or add an environment variable, string is 'NAME=VALUE'
|
||||
|
@ -154,7 +141,7 @@ Change or add an environment variable, string is 'NAME=VALUE'
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>LDYA string`
|
||||
`>PUSHW string`
|
||||
`>SYSCALL putenv`
|
||||
|
||||
## RETURN VALUE
|
||||
|
@ -167,8 +154,8 @@ Change or add an environment variable
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHW name`
|
||||
`>PUSHW value`
|
||||
`>LDYA name`
|
||||
`>SYSCALL setenv`
|
||||
|
||||
## RETURN VALUE
|
||||
|
@ -198,7 +185,7 @@ Remove an environment variable
|
|||
|
||||
## ASM
|
||||
**In:**
|
||||
`>LDYA name`
|
||||
`>PUSHW name`
|
||||
`>SYSCALL unsetenv`
|
||||
|
||||
## RETURN VALUE
|
||||
|
@ -463,6 +450,26 @@ Load a file in memory
|
|||
Y,A = File Length
|
||||
X = hMem of Loaded File
|
||||
|
||||
# FileSearch
|
||||
Search a file in the provided PATH list
|
||||
And return, if found, the full path to it.
|
||||
|
||||
## C
|
||||
`int filesearch ( char * filename, char * searchpath, char * fullpath, stat * filestat);`
|
||||
|
||||
## ASM
|
||||
**In:**
|
||||
`>PUSHWI filename`
|
||||
`>PUSHWI fullpath`
|
||||
`>PUSHWI searchpath`
|
||||
`>PUSHWI filestat`
|
||||
|
||||
## RETURN VALUE
|
||||
CC : success
|
||||
DstBuf = FilePath
|
||||
DstStat = S.STAT
|
||||
CS : not found
|
||||
|
||||
# GetMemStat
|
||||
**In:**
|
||||
Y,A = Ptr to 24 bytes buffer
|
||||
|
|
Binary file not shown.
|
@ -12,7 +12,7 @@ CL.Init >LDYAI 256
|
|||
*--------------------------------------
|
||||
CL.PrintPrompt >LDYA L.PS1
|
||||
|
||||
>SYSCALL ExpandStr
|
||||
>SYSCALL Expand
|
||||
bcs .9
|
||||
phx
|
||||
pha
|
||||
|
|
|
@ -249,7 +249,7 @@ CMD.SET.YA pha
|
|||
>SYSCALL SetEnv
|
||||
rts
|
||||
|
||||
CMD.SET.UNSET >LDYA ZPVarNamePtr
|
||||
CMD.SET.UNSET >PUSHW ZPVarNamePtr
|
||||
>SYSCALL UnsetEnv
|
||||
rts
|
||||
|
||||
|
|
|
@ -429,7 +429,7 @@ CORE.ArgV.Add lda #C.SPACE
|
|||
|
||||
>LDYA ZPArgVBufPtr
|
||||
>STYA ZPArgVBufPrev
|
||||
>SYSCALL ExpandStr
|
||||
>SYSCALL Expand
|
||||
bcs .9
|
||||
|
||||
phx
|
||||
|
|
|
@ -270,7 +270,7 @@ SYS.StrVDup .EQ $AE
|
|||
|
||||
SYS.Str2StrV .EQ $B0
|
||||
SYS.ArgV .EQ $B2
|
||||
SYS.ExpandStr .EQ $B4
|
||||
SYS.Expand .EQ $B4
|
||||
SYS.FileSearch .EQ $B6
|
||||
|
||||
SYS.PutEnv .EQ $B8
|
||||
|
|
|
@ -126,7 +126,7 @@ CS.RUN ldy #S.PS.ARGC
|
|||
|
||||
CS.RUN.LOOP0 >SLEEP
|
||||
|
||||
>LDYA L.ENV.TERM
|
||||
>PUSHW L.ENV.TERM
|
||||
>SYSCALL UnSetEnv
|
||||
|
||||
.1 >PUSHWI TELNETOPTS.LEN
|
||||
|
|
|
@ -425,7 +425,7 @@ CS.RUN.DumpFile pha
|
|||
bcs .7
|
||||
|
||||
>LDYA ZPBufPtr
|
||||
>SYSCALL ExpandStr
|
||||
>SYSCALL Expand
|
||||
bcc .2
|
||||
|
||||
.99 php
|
||||
|
|
|
@ -1,12 +1,17 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*/--------------------------------------
|
||||
* # ExpandStr
|
||||
* # Expand
|
||||
* ## C
|
||||
* `char *expand(const char *str, char *expanded);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* Y,A = PTR to String to Expand (C-String)
|
||||
* `>PUSHW string`
|
||||
* `>PUSHW expanded`
|
||||
* `>SYSCALL expand`
|
||||
* ## RETURN VALUE
|
||||
* X = hMem to Expanded String (C-String)
|
||||
* Y,A = PTR to Expanded String
|
||||
* X = hMem to Expanded String (C-String)
|
||||
*\--------------------------------------
|
||||
.DUMMY
|
||||
.OR ZPDRV
|
||||
|
@ -17,7 +22,7 @@ ENV.hMem .BS 1
|
|||
ENV.bExp .BS 1
|
||||
.ED
|
||||
*--------------------------------------
|
||||
K.ExpandStr jsr K.strdup
|
||||
K.Expand jsr K.strdup
|
||||
bcc .1
|
||||
|
||||
rts
|
||||
|
@ -122,127 +127,155 @@ K.ExpandStr jsr K.strdup
|
|||
|
||||
* clc
|
||||
.9 rts
|
||||
*/--------------------------------------
|
||||
* # FileSearch
|
||||
* Search a file in the provided PATH list
|
||||
* And return, if found, the full path to it.
|
||||
* ## C
|
||||
* `int filesearch ( char * filename, char * searchpath, char * fullpath, stat * filestat);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHWI filename`
|
||||
* `>PUSHWI fullpath`
|
||||
* `>PUSHWI searchpath`
|
||||
* `>PUSHWI filestat`
|
||||
* ## RETURN VALUE
|
||||
* CC : success
|
||||
* DstBuf = FilePath
|
||||
* DstStat = S.STAT
|
||||
* CS : not found
|
||||
*\--------------------------------------
|
||||
K.FileSearch >PULLW .4+1 DstStat
|
||||
>PULLW .2+1 DstBuf
|
||||
>PULLW ENV.Search.2+1 path to search
|
||||
>PULLW ENV.Search.4+1 filename to find
|
||||
|
||||
stz ENV.Search.98+1
|
||||
|
||||
jsr ENV.Search
|
||||
bcs K.FileSearch.RTS
|
||||
|
||||
ldx #$ff
|
||||
.1 inx
|
||||
lda K.Buf256,x
|
||||
.2 sta $ffff,x Self Modified
|
||||
bne .1
|
||||
ldx #S.STAT-1
|
||||
.3 lda K.S.STAT,x
|
||||
.4 sta $ffff,x Self Modified
|
||||
dex
|
||||
bpl .3
|
||||
* clc
|
||||
K.FileSearch.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
ENV.Search.CWD >STYA ENV.Search.4+1 filename to find
|
||||
ldy #S.PS.hCWD
|
||||
lda (PS.NewPSPtr),y
|
||||
jsr K.GetMemPtr
|
||||
>STYA ENV.Search.2+1
|
||||
ENV.SysVar ldx #ENV.SysVars.Cnt-1
|
||||
|
||||
.1 cmp ENV.SysVars,x
|
||||
beq .2
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
stz ENV.Search.98+1
|
||||
|
||||
bra ENV.Search
|
||||
|
||||
ENV.Search.LIB ldx #0
|
||||
.HS 2C BIT ABS
|
||||
ENV.Search.DRV ldx #2
|
||||
.HS 2C BIT ABS
|
||||
ENV.Search.PATH ldx #4
|
||||
sec
|
||||
rts
|
||||
|
||||
>STYA ENV.Search.4+1 filename to find
|
||||
|
||||
>PUSHW ENV.VARS,x
|
||||
>PUSHWI 0 allocate...
|
||||
jsr K.GetEnv get value for Search Path
|
||||
bcs K.FileSearch.RTS
|
||||
|
||||
>STYA ENV.Search.2+1
|
||||
stx ENV.Search.98+1
|
||||
|
||||
ENV.Search stz ENV.Search.1+1
|
||||
|
||||
ENV.Search.1 ldy #0 Self Modified Index in Search list string
|
||||
|
||||
ldx #0
|
||||
|
||||
ENV.Search.2 lda $ffff,y SELF MODIFIED
|
||||
|
||||
beq ENV.Search.3 end of string, try it....
|
||||
|
||||
iny
|
||||
cmp #':'
|
||||
beq ENV.Search.3
|
||||
|
||||
sta K.Buf256,x
|
||||
inx
|
||||
bra ENV.Search.2
|
||||
|
||||
ENV.Search.3 txa
|
||||
beq ENV.Search.98 String is empty....nothing to try
|
||||
|
||||
sty ENV.Search.1+1 save current index
|
||||
.2 txa
|
||||
beq ENV.SysVarsAllArgs
|
||||
|
||||
ldy ENV.SysVars.PS-1,x
|
||||
lda (pPS),y
|
||||
*--------------------------------------
|
||||
ENV.SysVarsNum jsr MATH.A2STR10NP
|
||||
ldy #0
|
||||
|
||||
ENV.Search.4 lda $ffff,y Self Modified, Append Filename...
|
||||
sta K.Buf256,x
|
||||
beq ENV.Search.5
|
||||
|
||||
.1 lda A2osX.NumStrBuf,y
|
||||
beq ENV.SysVarsNum.8
|
||||
iny
|
||||
inx
|
||||
bra ENV.Search.4
|
||||
|
||||
ENV.Search.5 >PUSHWI K.S.STAT
|
||||
>LDYAI K.Buf256
|
||||
>SYSCALL2 stat
|
||||
bcs ENV.Search.1 Failed...retry next path...
|
||||
|
||||
lda K.S.STAT+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR Dir ?
|
||||
beq ENV.Search.1
|
||||
jsr ENV.Search.98 Discard Expanded hSrch list
|
||||
|
||||
jsr ENV.AddAToBuf
|
||||
bra .1
|
||||
ENV.SysVarsNum.8
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
ENV.SysVarsAllArgs
|
||||
lda #1
|
||||
jsr K.ArgV
|
||||
bcs ENV.SysVarsNum.8
|
||||
>STYA ZPPtr3
|
||||
|
||||
ENV.Search.98 lda #$ff SELF MODIFIED : Discard Search list
|
||||
beq .1
|
||||
|
||||
jsr K.FreeMem
|
||||
.1 lda (ZPPtr3)
|
||||
beq ENV.SysVarsNum.8
|
||||
|
||||
.1 lda #MLI.E.FNOTFND
|
||||
sec
|
||||
.2 jsr ENV.AddP3ToBuf
|
||||
jsr ENV.NextEnvP3
|
||||
lda (ZPPtr3)
|
||||
beq ENV.SysVarsNum.8
|
||||
lda #C.SPACE
|
||||
jsr ENV.AddAToBuf
|
||||
bra .2
|
||||
*--------------------------------------
|
||||
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.ExpandStrVar
|
||||
>LDYAI ENV.StrVars
|
||||
>STYA ZPPtr3
|
||||
ldx #0
|
||||
|
||||
.1 lda (ZPPtr3)
|
||||
beq .9
|
||||
|
||||
ldy #$ff
|
||||
.2 iny
|
||||
lda (TXTPTR),y
|
||||
beq .3
|
||||
|
||||
jsr SHARED.IsIDValid
|
||||
bcs .3
|
||||
|
||||
cmp (ZPPtr3),y
|
||||
beq .2
|
||||
|
||||
bra .4
|
||||
|
||||
.3 lda (ZPPtr3),y
|
||||
bne .4
|
||||
|
||||
jmp (ENV.StrVarsJmp,x)
|
||||
|
||||
.4 inx
|
||||
inx
|
||||
jsr ENV.NextEnvP3
|
||||
bra .1
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
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
|
||||
.DA ENV.StrVarsSession
|
||||
.DA ENV.StrVarsPWD
|
||||
.DA ENV.StrVarsUID
|
||||
.DA ENV.StrVarsGID
|
||||
*--------------------------------------
|
||||
ENV.StrVarsPWD ldy #S.PS.hCWD
|
||||
lda (pPS),y
|
||||
jsr K.GetMemPtr
|
||||
jmp ENV.AddYAToBuf
|
||||
*--------------------------------------
|
||||
ENV.StrVarsUID ldy #S.SESSION.UID
|
||||
.HS 2C
|
||||
ENV.StrVarsGID ldy #S.SESSION.GID
|
||||
lda (pSession),y
|
||||
jmp ENV.SysVarsNum
|
||||
ENV.StrVarsSession
|
||||
lda pSession
|
||||
clc
|
||||
adc #S.SESSION.NAME
|
||||
sta ZPPtr3
|
||||
lda pSession+1
|
||||
adc /S.SESSION.NAME
|
||||
sta ZPPtr3+1
|
||||
|
||||
.1 dex
|
||||
dex
|
||||
bmi .3
|
||||
|
||||
ldy #$ff
|
||||
.2 iny
|
||||
lda (ZPPtr3),y
|
||||
bne .2
|
||||
|
||||
jsr ENV.NextEnvP3Y
|
||||
bra .1
|
||||
|
||||
.3 jmp ENV.AddP3ToBuf
|
||||
*--------------------------------------
|
||||
ENV.AddYAToBuf >STYA ZPPtr3
|
||||
*--------------------------------------
|
||||
ENV.AddP3ToBuf ldx ENV.BufLen
|
||||
ldy #$ff
|
||||
dex
|
||||
.1 iny
|
||||
inx
|
||||
lda (ZPPtr3),y
|
||||
sta K.Buf256,x
|
||||
bne .1
|
||||
stx ENV.BufLen
|
||||
rts
|
||||
*--------------------------------------
|
||||
ENV.AddAToBuf ldx ENV.BufLen
|
||||
sta K.Buf256,x
|
||||
inc ENV.BufLen
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # PutEnv
|
||||
|
@ -251,11 +284,11 @@ ENV.Search.98 lda #$ff SELF MODIFIED : Discard Search list
|
|||
* `int putenv(char *string);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>LDYA string`
|
||||
* `>PUSHW string`
|
||||
* `>SYSCALL putenv`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
K.PutEnv >STYA FORPNT NAME=VALUE
|
||||
K.PutEnv >PULLW FORPNT NAME=VALUE
|
||||
|
||||
ldy #0
|
||||
|
||||
|
@ -280,7 +313,7 @@ K.PutEnv >STYA FORPNT NAME=VALUE
|
|||
.2 lda #0
|
||||
sta K.Buf256,y
|
||||
|
||||
inc FORPNT
|
||||
inc FORPNT skip =
|
||||
bne .3
|
||||
inc FORPNT+1
|
||||
|
||||
|
@ -443,7 +476,7 @@ K.GetEnv >PULLW FORPNT value
|
|||
* `int unsetenv(const char *name);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>LDYA name`
|
||||
* `>PUSHW name`
|
||||
* `>SYSCALL unsetenv`
|
||||
* ## RETURN VALUE
|
||||
*\--------------------------------------
|
||||
|
@ -455,137 +488,6 @@ K.UnsetEnv.I jsr ENV.FindVarTXTPTR
|
|||
K.UnsetEnv.I.8 clc
|
||||
K.UnsetEnv.I.9 rts
|
||||
*--------------------------------------
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
ENV.SysVarsAllArgs
|
||||
lda #1
|
||||
jsr K.ArgV
|
||||
bcs ENV.SysVarsNum.8
|
||||
>STYA ZPPtr3
|
||||
|
||||
.1 lda (ZPPtr3)
|
||||
beq ENV.SysVarsNum.8
|
||||
|
||||
.2 jsr ENV.AddP3ToBuf
|
||||
jsr ENV.NextEnvP3
|
||||
lda (ZPPtr3)
|
||||
beq ENV.SysVarsNum.8
|
||||
lda #' '
|
||||
jsr ENV.AddAToBuf
|
||||
bra .2
|
||||
*--------------------------------------
|
||||
ENV.SysVar ldx #ENV.SysVars.Cnt-1
|
||||
|
||||
.1 cmp ENV.SysVars,x
|
||||
beq .2
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
sec
|
||||
rts
|
||||
|
||||
.2 txa
|
||||
beq ENV.SysVarsAllArgs
|
||||
|
||||
ldy ENV.SysVars.PS-1,x
|
||||
lda (pPS),y
|
||||
*--------------------------------------
|
||||
ENV.SysVarsNum jsr MATH.A2STR10NP
|
||||
ldy #0
|
||||
.1 lda A2osX.NumStrBuf,y
|
||||
beq ENV.SysVarsNum.8
|
||||
iny
|
||||
jsr ENV.AddAToBuf
|
||||
bra .1
|
||||
ENV.SysVarsNum.8
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
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.ExpandStrVar
|
||||
>LDYAI ENV.StrVars
|
||||
>STYA ZPPtr3
|
||||
ldx #0
|
||||
|
||||
.1 lda (ZPPtr3)
|
||||
beq .9
|
||||
|
||||
ldy #$ff
|
||||
.2 iny
|
||||
lda (TXTPTR),y
|
||||
beq .3
|
||||
|
||||
jsr SHARED.IsIDValid
|
||||
bcs .3
|
||||
|
||||
cmp (ZPPtr3),y
|
||||
beq .2
|
||||
|
||||
bra .4
|
||||
|
||||
.3 lda (ZPPtr3),y
|
||||
bne .4
|
||||
|
||||
jmp (ENV.StrVarsJmp,x)
|
||||
|
||||
.4 inx
|
||||
inx
|
||||
jsr ENV.NextEnvP3
|
||||
bra .1
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
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
|
||||
.DA ENV.StrVarsSession
|
||||
.DA ENV.StrVarsPWD
|
||||
.DA ENV.StrVarsUID
|
||||
.DA ENV.StrVarsGID
|
||||
*--------------------------------------
|
||||
ENV.StrVarsPWD ldy #S.PS.hCWD
|
||||
lda (pPS),y
|
||||
jsr K.GetMemPtr
|
||||
jmp ENV.AddYAToBuf
|
||||
*--------------------------------------
|
||||
ENV.StrVarsUID ldy #S.SESSION.UID
|
||||
.HS 2C
|
||||
ENV.StrVarsGID ldy #S.SESSION.GID
|
||||
lda (pSession),y
|
||||
jmp ENV.SysVarsNum
|
||||
ENV.StrVarsSession
|
||||
lda pSession
|
||||
clc
|
||||
adc #S.SESSION.NAME
|
||||
sta ZPPtr3
|
||||
lda pSession+1
|
||||
adc /S.SESSION.NAME
|
||||
sta ZPPtr3+1
|
||||
|
||||
.1 dex
|
||||
dex
|
||||
bmi .3
|
||||
ldy #$ff
|
||||
.2 iny
|
||||
lda (ZPPtr3),y
|
||||
bne .2
|
||||
jsr ENV.NextEnvP3Y
|
||||
bra .1
|
||||
.3 jmp ENV.AddP3ToBuf
|
||||
*--------------------------------------
|
||||
* ENV.FindVarTXTPTR
|
||||
* In:
|
||||
* TXTPTR -> NAME
|
||||
|
@ -682,24 +584,6 @@ ENV.NextEnvP4Y tya
|
|||
inc ZPPtr4+1
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
ENV.AddYAToBuf >STYA ZPPtr3
|
||||
*--------------------------------------
|
||||
ENV.AddP3ToBuf ldx ENV.BufLen
|
||||
ldy #$ff
|
||||
dex
|
||||
.1 iny
|
||||
inx
|
||||
lda (ZPPtr3),y
|
||||
sta K.Buf256,x
|
||||
bne .1
|
||||
stx ENV.BufLen
|
||||
rts
|
||||
*--------------------------------------
|
||||
ENV.AddAToBuf ldx ENV.BufLen
|
||||
sta K.Buf256,x
|
||||
inc ENV.BufLen
|
||||
rts
|
||||
*--------------------------------------
|
||||
* ENV.Dup
|
||||
* In:
|
||||
* A = ENV hMem To Duplicate
|
||||
|
@ -746,13 +630,6 @@ ENV.Dup.A sta .8+1 Store target page Count
|
|||
clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
ENV.VARS .DA .1
|
||||
.DA .2
|
||||
.DA .3
|
||||
.1 .AZ "LIB"
|
||||
.2 .AZ "DRV"
|
||||
.3 .AZ "PATH"
|
||||
*--------------------------------------
|
||||
MAN
|
||||
SAVE USR/SRC/SYS/KERNEL.S.ENV
|
||||
LOAD USR/SRC/SYS/KERNEL.S
|
||||
|
|
|
@ -1035,15 +1035,15 @@ TskMgrInit >LDYAI MSG.TSK
|
|||
>SYSCALL2 SetEnv
|
||||
bcs .9
|
||||
|
||||
>LDYAI I.ENV.PATH
|
||||
>PUSHWI I.ENV.PATH
|
||||
>SYSCALL2 PutEnv
|
||||
bcs .9
|
||||
|
||||
>LDYAI I.ENV.LIB
|
||||
>PUSHWI I.ENV.LIB
|
||||
>SYSCALL2 PutEnv
|
||||
bcs .9
|
||||
|
||||
>LDYAI I.ENV.DRV
|
||||
>PUSHWI I.ENV.DRV
|
||||
>SYSCALL2 PutEnv
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
|
|
|
@ -108,7 +108,7 @@ K.SYSCALL .DA 0 $00
|
|||
|
||||
.DA K.Str2StrV $B0
|
||||
.DA K.ArgV
|
||||
.DA K.ExpandStr
|
||||
.DA K.Expand
|
||||
.DA K.FileSearch
|
||||
.DA K.PutEnv
|
||||
.DA K.SetEnv
|
||||
|
|
|
@ -725,6 +725,135 @@ K.LoadFile clc
|
|||
clc
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # FileSearch
|
||||
* Search a file in the provided PATH list
|
||||
* And return, if found, the full path to it.
|
||||
* ## C
|
||||
* `int filesearch ( char * filename, char * searchpath, char * fullpath, stat * filestat);`
|
||||
* ## ASM
|
||||
* **In:**
|
||||
* `>PUSHWI filename`
|
||||
* `>PUSHWI fullpath`
|
||||
* `>PUSHWI searchpath`
|
||||
* `>PUSHWI filestat`
|
||||
* ## RETURN VALUE
|
||||
* CC : success
|
||||
* DstBuf = FilePath
|
||||
* DstStat = S.STAT
|
||||
* CS : not found
|
||||
*\--------------------------------------
|
||||
K.FileSearch >PULLW .4+1 DstStat
|
||||
>PULLW .2+1 DstBuf
|
||||
>PULLW ENV.Search.2+1 path to search
|
||||
>PULLW ENV.Search.4+1 filename to find
|
||||
|
||||
stz ENV.Search.98+1
|
||||
|
||||
jsr ENV.Search
|
||||
bcs K.FileSearch.RTS
|
||||
|
||||
ldx #$ff
|
||||
.1 inx
|
||||
lda K.Buf256,x
|
||||
.2 sta $ffff,x Self Modified
|
||||
bne .1
|
||||
ldx #S.STAT-1
|
||||
.3 lda K.S.STAT,x
|
||||
.4 sta $ffff,x Self Modified
|
||||
dex
|
||||
bpl .3
|
||||
* clc
|
||||
K.FileSearch.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
ENV.Search.CWD >STYA ENV.Search.4+1 filename to find
|
||||
ldy #S.PS.hCWD
|
||||
lda (PS.NewPSPtr),y
|
||||
jsr K.GetMemPtr
|
||||
>STYA ENV.Search.2+1
|
||||
|
||||
stz ENV.Search.98+1
|
||||
|
||||
bra ENV.Search
|
||||
|
||||
ENV.Search.LIB ldx #0
|
||||
.HS 2C BIT ABS
|
||||
ENV.Search.DRV ldx #2
|
||||
.HS 2C BIT ABS
|
||||
ENV.Search.PATH ldx #4
|
||||
|
||||
>STYA ENV.Search.4+1 filename to find
|
||||
|
||||
>PUSHW ENV.VARS,x
|
||||
>PUSHWI 0 allocate...
|
||||
jsr K.GetEnv get value for Search Path
|
||||
bcs K.FileSearch.RTS
|
||||
|
||||
>STYA ENV.Search.2+1
|
||||
stx ENV.Search.98+1
|
||||
|
||||
ENV.Search stz ENV.Search.1+1
|
||||
|
||||
ENV.Search.1 ldy #0 Self Modified Index in Search list string
|
||||
|
||||
ldx #0
|
||||
|
||||
ENV.Search.2 lda $ffff,y SELF MODIFIED
|
||||
|
||||
beq ENV.Search.3 end of string, try it....
|
||||
|
||||
iny
|
||||
cmp #':'
|
||||
beq ENV.Search.3
|
||||
|
||||
sta K.Buf256,x
|
||||
inx
|
||||
bra ENV.Search.2
|
||||
|
||||
ENV.Search.3 txa
|
||||
beq ENV.Search.98 String is empty....nothing to try
|
||||
|
||||
sty ENV.Search.1+1 save current index
|
||||
|
||||
ldy #0
|
||||
|
||||
ENV.Search.4 lda $ffff,y Self Modified, Append Filename...
|
||||
sta K.Buf256,x
|
||||
beq ENV.Search.5
|
||||
|
||||
iny
|
||||
inx
|
||||
bra ENV.Search.4
|
||||
|
||||
ENV.Search.5 >PUSHWI K.S.STAT
|
||||
>LDYAI K.Buf256
|
||||
>SYSCALL2 stat
|
||||
bcs ENV.Search.1 Failed...retry next path...
|
||||
|
||||
lda K.S.STAT+S.STAT.P.TYPE
|
||||
cmp #S.FI.T.DIR Dir ?
|
||||
beq ENV.Search.1
|
||||
jsr ENV.Search.98 Discard Expanded hSrch list
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
ENV.Search.98 lda #$ff SELF MODIFIED : Discard Search list
|
||||
beq .1
|
||||
|
||||
jsr K.FreeMem
|
||||
|
||||
.1 lda #MLI.E.FNOTFND
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
ENV.VARS .DA .1
|
||||
.DA .2
|
||||
.DA .3
|
||||
.1 .AZ "LIB"
|
||||
.2 .AZ "DRV"
|
||||
.3 .AZ "PATH"
|
||||
*/--------------------------------------
|
||||
* # GetMemStat
|
||||
* **In:**
|
||||
* Y,A = Ptr to 24 bytes buffer
|
||||
|
@ -837,7 +966,7 @@ K.StrVDup >STYA ZPPtr1
|
|||
*\--------------------------------------
|
||||
ARG.bInQuote .EQ ZPPtr3
|
||||
*--------------------------------------
|
||||
K.Str2StrV jsr K.ExpandStr
|
||||
K.Str2StrV jsr K.Expand
|
||||
|
||||
bcs .9
|
||||
>STYA ZPPtr1
|
||||
|
|
|
@ -147,8 +147,7 @@ STDLIB.realpath.I
|
|||
clc
|
||||
ror .82+1
|
||||
|
||||
ldx #SYS.ExpandStr
|
||||
jsr K.SYSCALL2
|
||||
>SYSCALL2 expand
|
||||
bcs K.atoi.RTS
|
||||
|
||||
>STYA ZPPtr1
|
||||
|
|
Loading…
Reference in New Issue
Block a user