A2osX/SYS/KERNEL.S.STAT.txt
2017-08-24 17:29:22 +02:00

236 lines
4.4 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.

PR#3
PREFIX /A2OSX.BUILD
LOMEM $A00
INC 1
AUTO 6
*/--------------------------------------
* # Stat
* Return information about a file
* ## In :
* PUSHW = PTR to S.STAT buffer
* PUSHW = PTR to Filename (PSTR)
* ## Out :
*\--------------------------------------
K.Stat jsr PFT.CheckPathSTK
jsr STDIO.PullMLIPath
>PULLW ZPPtr2
>MLICALL MLIGETFILEINFO
bcs .9
ldx K.MLI.PARAMS+S.FILEINFO.ACCESS
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO
cpx #S.FILEINFO.ACCESS.FULL
beq .2
lda #S.STAT.MODE.XO+S.STAT.MODE.RO
cpx #S.FILEINFO.ACCESS.R
beq .2
lda #0
.2 ldy #S.STAT.MODE
sta (ZPPtr2),y
ldx #K.Stat.DST-K.Stat.SRC
.3 ldy K.Stat.SRC-1,x
lda K.MLI.PARAMS,y
ldy K.Stat.DST-1,x
sta (ZPPtr2),y
dex
bne .3
ldy #S.STAT.SIZE
lda #0
sta (ZPPtr2),y
iny
lda K.MLI.PARAMS+S.FILEINFO.BLOCKSUSED
asl
sta (ZPPtr2),y
iny
lda K.MLI.PARAMS+S.FILEINFO.BLOCKSUSED+1
rol
sta (ZPPtr2),y
iny
lda #0
rol
sta (ZPPtr2),y
clc
.9 rts
*--------------------------------------
K.Stat.SRC .DA #S.FILEINFO.TYPE
.DA #S.FILEINFO.AUXTYPE,#S.FILEINFO.AUXTYPE+1
.DA #S.FILEINFO.BLOCKSUSED,#S.FILEINFO.BLOCKSUSED+1
K.Stat.DST .DA #S.STAT.P.TYPE
.DA #S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1
*/-------------------------------------
* # MKDir.YA
* ## In:
* Y,A = DIR name
* ## Out:
* CC : success
* CS : error
* A = EC
*\-------------------------------------
K.MKDir.YA jsr PFT.CheckPathYA
>STYA K.MLI.PARAMS+1
lda #S.FILEINFO.ACCESS.FULL
sta K.MLI.PARAMS+S.FILEINFO.ACCESS
lda #S.FILEINFO.TYPE.DIR
sta K.MLI.PARAMS+S.FILEINFO.TYPE
lda #S.FILEINFO.STORETYPE.DIR
sta K.MLI.PARAMS+S.FILEINFO.STORETYPE
* jsr DATETIME
ldx #3
.1 lda DATELO,x
sta K.MLI.PARAMS+8,x
dex
bpl .1
>MLICALL MLICREATE
rts
*/--------------------------------------
* # MkNodYA
* return a hFile for a given Device Name
* ## IN:
* Y,A=DevName
* ## OUT:
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MkNodYA jsr K.GetDevByNameYA Ptr1=NAME
bcs .9
>STYA pDev
stx .1+1
ldy #S.DEV.S
lda (pDev),y
bit #S.DEV.S.BLOCK
bne .99
txa Pass DEV.ID to OPEN
ldx #DEVMGR.OPEN
jsr pDevJmp
bcs .9
>LDYAI S.NODE.DEV
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr3 Ptr3=S.NODE
ldy #S.NODE.T
lda #S.NODE.T.CDEV
sta (ZPPtr3),y
ldy #S.NODE.DEV.ID
.1 lda #$ff Self Modified
sta (ZPPtr3),y
ldy #S.NODE.DEV.JMP
lda pDev
sta (ZPPtr3),y
iny
lda pDev+1
sta (ZPPtr3),y
txa
clc
.9 rts
.99 lda #MLI.ERR.IO
sec
rts
*/--------------------------------------
* # MkNodA
* return a hFile for a given Socket
* ## IN:
* A=hSocket
* ## OUT:
* CC = OK, CS = ERROR
* X = hFILE
* Y,A = pFILE
*\--------------------------------------
K.MkNodA sta .1+1
>LDYAI S.NODE.SSOCK
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr1
ldy #S.NODE.T
lda #S.NODE.T.SSOCK
sta (ZPPtr1),y
ldy #S.NODE.SSOCK.HSKT
.1 lda #$ff
sta (ZPPtr1),y
>LDYA ZPPtr1
.9 rts
*/--------------------------------------
* # MKFIFO
* return a S.FILE to a new FIFO
* ## IN:
* ## OUT:
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MKFIFO >LDYAI 256
jsr K.GetMemYA
bcs .99
stx .1+1 save FIFO buffer
>LDYAI S.NODE.FIFO
jsr K.GetMem0YA
bcs .9
>STYA ZPPtr1
ldy #S.NODE.T
lda #S.NODE.T.FIFO
sta (ZPPtr1),y
iny S.NODE.FIFO.hMem
.1 lda #$ff Self Modified
sta (ZPPtr1),y
txa
clc
rts
.9 pha save error code
lda .1+1 get back FIFO buffer
jsr K.FreeMemA
pla
sec
.99 rts
*/--------------------------------------
* # ChMod
* ## In:
* PUSHW = MODE
* PUSHW = PATH
*\--------------------------------------
K.ChMod
sec
rts
*--------------------------------------
MAN
SAVE /A2OSX.SRC/SYS/KERNEL.S.STAT
LOAD /A2OSX.SRC/SYS/KERNEL.S
ASM