A2osX/SYS/KERNEL.S.PFT.txt
2019-01-21 06:52:04 +00:00

146 lines
2.7 KiB
Plaintext
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

NEW
PREFIX
AUTO 4,1
*--------------------------------------
* K.PFTAdd
* In :
* Out :
*--------------------------------------
K.PFTAdd
*--------------------------------------
* K.PFTRemove
* In :
* Out :
*--------------------------------------
K.PFTRemove
clc
K.PFTRemove.RTS rts
*--------------------------------------
* PFT.CheckPathYA
* In :
* Y,A = PATH (C-String)
* Out :
*--------------------------------------
PFT.CheckPathYA stx .6+1 Save SYSCALL #
jsr STDLIB.realpath.I realpath in K.Buf256
bcs K.PFTRemove.RTS
ldx #0
.1 lda Flt.Table.hPath,x
beq .8
jsr K.GetMemPtr
>STYA ZPPtr1
ldy #$ff
.2 iny
lda (ZPPtr1),y "/FILTER\0"
beq .3 end of filter string....
cmp K.Buf256,y can be \0
beq .2
bra .8
.3 lda K.Buf256,y path is "/FILTER/..." ?
cmp #'/'
bne .8
lda Flt.Table.hLib,x get hLib
jsr K.GetMemPtr
>STYA .7+1
pla discard JSR return @
pla
>LDYAI K.Buf256 pass full path to handler
.6 ldx #$ff SELF MODIFIED SYSCALL #
.7 jmp $ffff SELF MODIFIED
.8 inx
cpx #K.FLT.MAX
bne .1
.80 >LDYAI K.Buf256
*--------------------------------------
PFT.YAToMLIPATH >STYA .1+1
ldx #0 no filter, prodos path
.1 lda $ffff,x SELF MODIFIED
beq .2
inx
sta K.MLI.PATH,x
cpx #MLI.MAXPATH
bne .1
.2 stx K.MLI.PATH
inx
stz K.MLI.PATH,x Make ending 0 for /dev/xxx path
>LDYAI K.MLI.PATH
>STYA K.MLI.PARAMS+1
clc
rts
*--------------------------------------
* PFT.CheckNodeA
* In :
* A = hFILE
* Out :
*--------------------------------------
PFT.CheckNodeA stx .80+1 Save SYSCALL #
sta .81+1 Save hFILE
tax
lda OF.Table.hFD,x
beq .9
sta IO.hFD
ldy OF.Table.hPath,x if 0, its a hDEV
bne .10
tax
lda Dev.Table+1,x
ldy Dev.Table,x
bra .11
.10 jsr K.GetMemPtr
.11 >STYA pFD
ldy #S.FD.HANDLER
lda (pFD),y
beq .8 Handler is 0, back to kernel....
jsr K.GetMemPtr
>STYA .1+1
pla discard JSR return @
pla
ldx .80+1 restore SYSCALL #
lda .81+1 restore passed hFILE
.1 jmp $ffff SELF MODIFIED
.8 lda (pFD) #S.FD.T
bne .80
ldy #S.FD.REG.REF
lda (pFD),y
sta K.MLI.PARAMS+1
.80 ldx #$ff SELF MODIFIED
.81 lda #$ff SELF MODIFIED
clc
rts
.9 lda #E.INVH
sec
rts
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.PFT
LOAD USR/SRC/SYS/KERNEL.S
ASM