mirror of
https://github.com/A2osX/A2osX.git
synced 2024-11-29 17:50:18 +00:00
230 lines
4.5 KiB
Plaintext
230 lines
4.5 KiB
Plaintext
PR#3
|
||
PREFIX /A2OSX.SRC
|
||
NEW
|
||
INC 1
|
||
AUTO 6
|
||
.LIST OFF
|
||
*--------------------------------------
|
||
* K.FileSearch
|
||
* in :
|
||
* PULLW = PSTR to File Name (PSTRING)
|
||
* PULLW = PSTR to Search Path (PSTRING) %LIB%;/SYS/SLIB
|
||
* out :
|
||
* Y,A = PSTR to FilePath (PSTRING)
|
||
* X = hMem to FilePath
|
||
*--------------------------------------
|
||
K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
|
||
>PULLYA Get Search list
|
||
>SYSCALL SYS.ExpandPStrYA Expand it (SYSCALL to BNK1)
|
||
bcs .99
|
||
|
||
stx K.FileSearch.hSrch
|
||
>STYA ZPQuickPtr2 expanded search list ;
|
||
|
||
stz K.FileSearch.Index
|
||
|
||
.1 stz KrnBuf256 reset String
|
||
ldx #0
|
||
|
||
ldy K.FileSearch.Index
|
||
|
||
.2 tya
|
||
cmp (ZPQuickPtr2) end of src string ?
|
||
beq .3 end of string, try it....
|
||
iny
|
||
lda (ZPQuickPtr2),y
|
||
cmp #';'
|
||
beq .3
|
||
inx
|
||
sta KrnBuf256,x
|
||
bra .2
|
||
|
||
.3 txa
|
||
beq .98 String is empty....nothing to try
|
||
|
||
sty K.FileSearch.Index save current index
|
||
|
||
ldy #0
|
||
|
||
.4 iny
|
||
lda (ZPQuickPtr4),y Append Fiename...
|
||
inx
|
||
sta KrnBuf256,x
|
||
tya
|
||
cmp (ZPQuickPtr4)
|
||
bne .4
|
||
|
||
stx KrnBuf256 set string length
|
||
|
||
>PUSHWI KrnSTAT
|
||
>PUSHWI KrnBuf256
|
||
jsr K.STAT
|
||
bcs .1 Failed...retry next path...
|
||
|
||
lda K.FileSearch.hSrch Discard Expanded hSrch list
|
||
jsr K.FreeMemA
|
||
>LDYAI KrnBuf256
|
||
>SYSCALL SYS.NewPStrYA
|
||
.99 rts
|
||
|
||
.98 lda K.FileSearch.hSrch Discard Expanded hSrch list
|
||
jsr K.FreeMemA
|
||
lda #SYSMGR.ERRFNF
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
K.FileSearch.hSrch .BS 1
|
||
K.FileSearch.Index .BS 1
|
||
*--------------------------------------
|
||
* K.GetFullPathYA
|
||
* in :
|
||
* Y,A = Filename (PSTRING)
|
||
* out :
|
||
* Y,A = FullPath (PSTRING)
|
||
* X = hMem of FullPath
|
||
*--------------------------------------
|
||
K.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy
|
||
lda (ZPQuickPtr3)
|
||
beq .9
|
||
|
||
stz KrnBuf256
|
||
|
||
ldy #1
|
||
lda (ZPQuickPtr3),y
|
||
cmp #'/' full path starting with '/'?
|
||
beq .1 yes, do not append to current prefix
|
||
|
||
ldy #S.PS.hPREFIX
|
||
lda (pPs),y
|
||
jsr K.GetMemPtrA
|
||
>PUSHYA
|
||
>PUSHWI KrnBuf256
|
||
jsr K.PStrCpy
|
||
|
||
.1 >PUSHW ZPQuickPtr3
|
||
>PUSHWI KrnBuf256
|
||
jsr K.PStrCat
|
||
|
||
>LDYAI KrnBuf256
|
||
jmp K.NewPStrYA
|
||
.9 sec
|
||
rts
|
||
*--------------------------------------
|
||
* K.LoadFile
|
||
* in :
|
||
* PULLW = PATH (Handled by....
|
||
* PULLB = MODE ...
|
||
* PULLB = TYPE ...
|
||
* PULLW = AUXTYPE ...FOPEN)
|
||
* out :
|
||
* Y,A = File Length
|
||
* X = hMem of Loaded File
|
||
*--------------------------------------
|
||
K.LoadFile jsr K.FOPEN
|
||
bcs .9
|
||
|
||
sta K.LoadFile.hFile
|
||
|
||
ldx #SYS.FSEEK.END
|
||
jsr K.LoadFile.Seek
|
||
bcs .99
|
||
|
||
lda K.LoadFile.hFile
|
||
jsr K.FTELLA
|
||
bcs .99
|
||
>STYA K.LoadFile.Len
|
||
phx
|
||
plx
|
||
bne .98 LEN > 65535 !!???
|
||
|
||
>PUSHYA push len
|
||
>PUSHBI 0
|
||
jsr K.GetMem
|
||
bcs .99
|
||
>STYA K.LoadFile.Mem
|
||
stx K.LoadFile.hMem
|
||
|
||
ldx #SYS.FSEEK.SET
|
||
jsr K.LoadFile.Seek
|
||
bcs .97
|
||
|
||
>PUSHW K.LoadFile.Mem
|
||
>PUSHW K.LoadFile.Len
|
||
>PUSHB K.LoadFile.hFile
|
||
jsr K.FREAD
|
||
bcs .97
|
||
|
||
jsr .99
|
||
|
||
>LDYA K.LoadFile.Len
|
||
ldx K.LoadFile.hMem
|
||
clc
|
||
.9 rts
|
||
|
||
.97 pha
|
||
lda K.LoadFile.hMem
|
||
jsr K.FreeMemA
|
||
pla
|
||
.HS 2C
|
||
|
||
.98 lda #SYSMGR.ERRFTB
|
||
|
||
.99 pha
|
||
lda K.LoadFile.hFile
|
||
jsr K.FCLOSEA
|
||
pla
|
||
sec
|
||
rts
|
||
*--------------------------------------
|
||
K.LoadFile.Seek >PUSHWI 0
|
||
>PUSHWI 0
|
||
txa
|
||
>PUSHA
|
||
>PUSHB K.LoadFile.hFile
|
||
jmp K.FSEEK
|
||
*--------------------------------------
|
||
* PULLW = SrcPtr
|
||
* PULLW = SrcLen
|
||
* PULLW = PATH (Handled by....
|
||
* PULLB = MODE ...
|
||
* PULLB = TYPE ...
|
||
* PULLW = AUXTYPE ...FOPEN)
|
||
*--------------------------------------
|
||
K.SaveFile >PULLW K.LoadFile.Mem
|
||
>PULLW K.LoadFile.Len
|
||
|
||
jsr K.FOPEN
|
||
bcs .9
|
||
|
||
sta K.LoadFile.hFile
|
||
|
||
>PUSHW K.LoadFile.Mem
|
||
|
||
>PUSHW K.LoadFile.Len
|
||
|
||
>PUSHB K.LoadFile.hFile
|
||
jsr K.FWRITE
|
||
bcs .99
|
||
|
||
jsr .99
|
||
clc
|
||
rts
|
||
|
||
.99 pha
|
||
lda K.LoadFile.hFile
|
||
jsr K.FCLOSEA
|
||
pla
|
||
sec
|
||
|
||
.9 rts
|
||
*--------------------------------------
|
||
K.LoadFile.hFile .BS 1
|
||
K.LoadFile.hMem .BS 1
|
||
K.LoadFile.Mem .BS 2
|
||
K.LoadFile.Len .BS 2
|
||
*--------------------------------------
|
||
MAN
|
||
SAVE SYS/KERNEL.S.FIO
|
||
LOAD SYS/KERNEL.S
|
||
ASM
|