A2osX/SYS/KERNEL.S.FIO.txt

247 lines
4.8 KiB
Plaintext
Raw Normal View History

2015-03-14 21:48:35 +00:00
PR#3
2015-06-03 18:30:57 +00:00
PREFIX /A2OSX.SRC
2015-03-14 21:48:35 +00:00
NEW
INC 1
AUTO 6
.LIST OFF
*--------------------------------------
2016-09-21 15:20:37 +00:00
* K.FileSearch
2015-03-14 21:48:35 +00:00
* in :
2016-08-17 06:25:58 +00:00
* PULLW = PSTR to File Name (PSTRING)
* PULLW = PSTR to Search Path (PSTRING) %LIB%;/SYS/SLIB
2015-03-14 21:48:35 +00:00
* out :
2016-08-17 06:25:58 +00:00
* Y,A = PSTR to FilePath (PSTRING)
* X = hMem to FilePath
2015-03-14 21:48:35 +00:00
*--------------------------------------
K.FileSearch >PULLW ZPQuickPtr4 ZPQuickPtr1 trashed by ExpandPStrYA
2016-08-17 06:25:58 +00:00
>PULLYA Get Search list
>SYSCALL SYS.ExpandPStrYA Expand it (SYSCALL to BNK1)
* bcs .99
bcc .10
rts
2016-08-17 06:25:58 +00:00
.98 lda K.FileSearch.hSrch Discard Expanded hSrch list
jsr K.FreeMemA
lda #SYSMGR.ERRFNF
sec
rts
.10 stx K.FileSearch.hSrch
>STYA ZPQuickPtr3 ZPQuickPtr2 trashed by K.STAT !!! expanded search list ;
2015-06-03 18:30:57 +00:00
2016-09-21 15:20:37 +00:00
stz K.FileSearch.Index
2016-08-17 06:25:58 +00:00
.1 stz KrnBuf256 reset String
2016-08-17 06:25:58 +00:00
ldx #0
2016-06-07 06:10:18 +00:00
2016-09-21 15:20:37 +00:00
ldy K.FileSearch.Index
2016-06-07 06:10:18 +00:00
2016-08-17 06:25:58 +00:00
.2 tya
cmp (ZPQuickPtr3) end of src string ?
2016-08-17 06:25:58 +00:00
beq .3 end of string, try it....
iny
lda (ZPQuickPtr3),y
2016-08-17 06:25:58 +00:00
cmp #';'
beq .31
2016-08-17 06:25:58 +00:00
inx
sta KrnBuf256,x
2016-08-17 06:25:58 +00:00
bra .2
.31 iny skip ';' for next try
2016-08-17 06:25:58 +00:00
.3 txa
beq .98 String is empty....nothing to try
2016-09-21 15:20:37 +00:00
sty K.FileSearch.Index save current index
2015-06-03 18:30:57 +00:00
2016-08-17 06:25:58 +00:00
ldy #0
2016-06-07 06:10:18 +00:00
2016-08-17 06:25:58 +00:00
.4 iny
lda (ZPQuickPtr4),y Append Fiename...
inx
sta KrnBuf256,x
2016-08-17 06:25:58 +00:00
tya
cmp (ZPQuickPtr4)
bne .4
2015-06-03 18:30:57 +00:00
2016-09-26 16:00:52 +00:00
stx KrnBuf256 set string length
2015-06-03 18:30:57 +00:00
lda #'!'
>SYSCALL SYS.COutA
>LDYAI KrnBuf256
>SYSCALL SYS.PSTROutYA
>DEBUG
2016-09-26 16:00:52 +00:00
>PUSHWI KrnSTAT
>PUSHWI KrnBuf256
jsr K.STAT
2016-08-17 06:25:58 +00:00
bcs .1 Failed...retry next path...
2015-06-03 18:30:57 +00:00
2016-09-21 15:20:37 +00:00
lda K.FileSearch.hSrch Discard Expanded hSrch list
jsr K.FreeMemA
lda #'@'
>SYSCALL SYS.COutA
>LDYAI KrnBuf256
>SYSCALL SYS.PSTROutYA
>DEBUG
>LDYAI KrnBuf256
>SYSCALL SYS.NewPStrYA
.99 rts
2015-03-14 21:48:35 +00:00
*--------------------------------------
2016-09-21 15:20:37 +00:00
K.FileSearch.hSrch .BS 1
K.FileSearch.Index .BS 1
2016-08-17 06:25:58 +00:00
*--------------------------------------
2016-09-21 15:20:37 +00:00
* K.GetFullPathYA
2016-08-17 06:25:58 +00:00
* in :
* Y,A = Filename (PSTRING)
* out :
* Y,A = FullPath (PSTRING)
* X = hMem of FullPath
*--------------------------------------
2016-09-21 15:20:37 +00:00
K.GetFullPathYA >STYA ZPQuickPtr3 Ptr1 & 2 used by StrCpy
2016-08-17 06:25:58 +00:00
lda (ZPQuickPtr3)
beq .9
stz KrnBuf256
2016-08-17 06:25:58 +00:00
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
2016-09-21 15:20:37 +00:00
jsr K.GetMemPtrA
2016-08-17 06:25:58 +00:00
>PUSHYA
>PUSHWI KrnBuf256
>SYSCALL SYS.PStrCpy
2016-08-17 06:25:58 +00:00
.1 >PUSHW ZPQuickPtr3
>PUSHWI KrnBuf256
>SYSCALL SYS.PStrCat
2016-08-17 06:25:58 +00:00
>LDYAI KrnBuf256
>SYSCALL SYS.NewPStrYA
rts
2016-08-17 06:25:58 +00:00
.9 sec
rts
*--------------------------------------
2016-09-21 15:20:37 +00:00
* 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
2016-09-21 15:20:37 +00:00
sta K.LoadFile.hFile
2016-09-21 15:20:37 +00:00
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 !!???
2016-09-21 15:20:37 +00:00
>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
2016-09-21 15:20:37 +00:00
>PUSHW K.LoadFile.Mem
>PUSHW K.LoadFile.Len
>PUSHB K.LoadFile.hFile
jsr K.FREAD
bcs .97
jsr .99
2016-09-21 15:20:37 +00:00
>LDYA K.LoadFile.Len
ldx K.LoadFile.hMem
clc
2016-09-21 15:20:37 +00:00
.9 rts
.97 pha
lda K.LoadFile.hMem
jsr K.FreeMemA
pla
.HS 2C
2016-09-21 15:20:37 +00:00
.98 lda #SYSMGR.ERRFTB
.99 pha
2016-09-21 15:20:37 +00:00
lda K.LoadFile.hFile
jsr K.FCLOSEA
pla
sec
2016-09-21 15:20:37 +00:00
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)
*--------------------------------------
2016-09-21 15:20:37 +00:00
K.SaveFile >PULLW K.LoadFile.Mem
>PULLW K.LoadFile.Len
2016-09-21 15:20:37 +00:00
jsr K.FOPEN
bcs .9
2016-09-21 15:20:37 +00:00
sta K.LoadFile.hFile
2016-09-21 15:20:37 +00:00
>PUSHW K.LoadFile.Mem
2016-09-21 15:20:37 +00:00
>PUSHW K.LoadFile.Len
2016-09-21 15:20:37 +00:00
>PUSHB K.LoadFile.hFile
jsr K.FWRITE
bcs .99
jsr .99
clc
rts
.99 pha
2016-09-21 15:20:37 +00:00
lda K.LoadFile.hFile
jsr K.FCLOSEA
pla
sec
.9 rts
*--------------------------------------
2016-09-21 15:20:37 +00:00
K.LoadFile.hFile .BS 1
K.LoadFile.hMem .BS 1
K.LoadFile.Mem .BS 2
K.LoadFile.Len .BS 2
*--------------------------------------
2015-03-14 21:48:35 +00:00
MAN
SAVE SYS/KERNEL.S.FIO
2015-03-14 21:48:35 +00:00
LOAD SYS/KERNEL.S
ASM