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