2017-12-22 21:24:30 +00:00
|
|
|
|
NEW
|
2017-08-24 12:46:48 +00:00
|
|
|
|
PREFIX /A2OSX.BUILD
|
2017-12-22 21:24:30 +00:00
|
|
|
|
AUTO 4,1
|
2017-10-09 15:30:48 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
* # FStat
|
|
|
|
|
* Return information about a hfile
|
2018-07-20 11:51:08 +00:00
|
|
|
|
* ## ASM
|
|
|
|
|
* `int fstat(int fd, struct stat *statbuf);`
|
|
|
|
|
* ## ASM
|
2018-06-18 08:44:02 +00:00
|
|
|
|
* **In:**
|
2017-10-09 15:30:48 +00:00
|
|
|
|
* PUSHW = PTR to S.STAT buffer
|
|
|
|
|
* PUSHB = hFile
|
2018-06-18 08:44:02 +00:00
|
|
|
|
* **Out:**
|
2017-10-09 15:30:48 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
*jsr PFT.CheckNodeSTK
|
|
|
|
|
|
2017-08-24 12:46:48 +00:00
|
|
|
|
*/--------------------------------------
|
|
|
|
|
* # Stat
|
|
|
|
|
* Return information about a file
|
2018-07-20 11:51:08 +00:00
|
|
|
|
* ## C
|
|
|
|
|
* `int stat(const char *pathname, struct stat *statbuf);`
|
|
|
|
|
* ## ASM
|
2018-06-18 08:44:02 +00:00
|
|
|
|
* **In:**
|
2018-07-20 11:51:08 +00:00
|
|
|
|
* `>PUSHW statbuf`
|
|
|
|
|
* `>LDYA pathname`
|
|
|
|
|
* `>SYSCALL stat`
|
2018-06-18 08:44:02 +00:00
|
|
|
|
* **Out:**
|
2017-08-24 12:46:48 +00:00
|
|
|
|
*\--------------------------------------
|
2018-07-20 11:51:08 +00:00
|
|
|
|
K.Stat jsr PFT.CheckPathYA
|
|
|
|
|
jsr STDIO.SetMLIPathYA
|
|
|
|
|
|
2017-08-25 06:37:21 +00:00
|
|
|
|
>PULLW K.Stat.StoreY+1
|
2018-07-20 11:51:08 +00:00
|
|
|
|
|
2017-08-24 12:46:48 +00:00
|
|
|
|
>MLICALL MLIGETFILEINFO
|
|
|
|
|
bcs .9
|
|
|
|
|
|
2017-10-27 14:56:46 +00:00
|
|
|
|
ldx K.MLI.PARAMS+S.FI.A
|
2017-08-24 12:46:48 +00:00
|
|
|
|
|
|
|
|
|
lda #S.STAT.MODE.XO+S.STAT.MODE.WO+S.STAT.MODE.RO
|
2017-10-27 14:56:46 +00:00
|
|
|
|
cpx #S.FI.A.FULL
|
2017-08-24 12:46:48 +00:00
|
|
|
|
beq .2
|
|
|
|
|
|
|
|
|
|
lda #S.STAT.MODE.XO+S.STAT.MODE.RO
|
2017-10-27 14:56:46 +00:00
|
|
|
|
cpx #S.FI.A.R
|
2017-08-24 12:46:48 +00:00
|
|
|
|
beq .2
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
|
|
|
|
|
.2 ldy #S.STAT.MODE
|
2017-08-25 06:37:21 +00:00
|
|
|
|
jsr K.Stat.StoreY
|
2017-08-24 12:46:48 +00:00
|
|
|
|
|
|
|
|
|
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
|
2017-08-25 06:37:21 +00:00
|
|
|
|
jsr K.Stat.StoreY
|
2017-08-24 12:46:48 +00:00
|
|
|
|
dex
|
|
|
|
|
bne .3
|
|
|
|
|
|
|
|
|
|
ldy #S.STAT.SIZE
|
|
|
|
|
lda #0
|
2017-08-25 06:37:21 +00:00
|
|
|
|
jsr K.Stat.StoreY
|
2017-08-24 12:46:48 +00:00
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
|
2017-10-27 14:56:46 +00:00
|
|
|
|
lda K.MLI.PARAMS+S.FI.UBLKS
|
2017-08-24 12:46:48 +00:00
|
|
|
|
asl
|
2017-08-25 06:37:21 +00:00
|
|
|
|
jsr K.Stat.StoreY
|
2017-08-24 12:46:48 +00:00
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
|
2017-10-27 14:56:46 +00:00
|
|
|
|
lda K.MLI.PARAMS+S.FI.UBLKS+1
|
2017-08-24 12:46:48 +00:00
|
|
|
|
rol
|
2017-08-25 06:37:21 +00:00
|
|
|
|
jsr K.Stat.StoreY
|
2017-08-24 12:46:48 +00:00
|
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
|
|
lda #0
|
|
|
|
|
rol
|
2017-08-25 06:37:21 +00:00
|
|
|
|
jsr K.Stat.StoreY
|
2017-08-24 12:46:48 +00:00
|
|
|
|
|
|
|
|
|
clc
|
|
|
|
|
.9 rts
|
2017-08-25 06:37:21 +00:00
|
|
|
|
|
|
|
|
|
K.Stat.StoreY sta $ffff,y
|
|
|
|
|
rts
|
2017-08-24 12:46:48 +00:00
|
|
|
|
*--------------------------------------
|
2017-10-27 14:56:46 +00:00
|
|
|
|
K.Stat.SRC .DA #S.FI.T
|
|
|
|
|
.DA #S.FI.AUXTYPE,#S.FI.AUXTYPE+1
|
|
|
|
|
.DA #S.FI.UBLKS,#S.FI.UBLKS+1
|
2017-08-24 12:46:48 +00:00
|
|
|
|
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
|
2017-08-24 15:29:22 +00:00
|
|
|
|
*/-------------------------------------
|
2018-06-21 15:12:10 +00:00
|
|
|
|
* # MKDir
|
2018-06-14 15:31:36 +00:00
|
|
|
|
* **In:**
|
2017-08-24 15:29:22 +00:00
|
|
|
|
* Y,A = DIR name
|
2018-06-14 15:31:36 +00:00
|
|
|
|
* **Out:**
|
2017-08-24 15:29:22 +00:00
|
|
|
|
* CC : success
|
|
|
|
|
* CS : error
|
|
|
|
|
* A = EC
|
|
|
|
|
*\-------------------------------------
|
2018-06-21 15:12:10 +00:00
|
|
|
|
K.MKDir jsr PFT.CheckPathYA
|
2017-08-25 06:37:21 +00:00
|
|
|
|
jsr STDIO.SetMLIPathYA
|
2017-10-27 14:56:46 +00:00
|
|
|
|
lda #S.FI.A.FULL
|
|
|
|
|
sta K.MLI.PARAMS+S.FI.A
|
|
|
|
|
lda #S.FI.T.DIR
|
|
|
|
|
sta K.MLI.PARAMS+S.FI.T
|
|
|
|
|
lda #S.FI.ST.DIR
|
|
|
|
|
sta K.MLI.PARAMS+S.FI.ST
|
2017-08-24 15:29:22 +00:00
|
|
|
|
|
|
|
|
|
* jsr DATETIME
|
|
|
|
|
|
|
|
|
|
ldx #3
|
|
|
|
|
.1 lda DATELO,x
|
|
|
|
|
sta K.MLI.PARAMS+8,x
|
|
|
|
|
dex
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
>MLICALL MLICREATE
|
|
|
|
|
rts
|
|
|
|
|
*/--------------------------------------
|
2018-06-21 15:12:10 +00:00
|
|
|
|
* # MkNod
|
2018-06-28 15:26:34 +00:00
|
|
|
|
* int mknod(const char *pathname, mode_t mode, dev_t dev);
|
2017-08-24 15:29:22 +00:00
|
|
|
|
* return a hFile for a given Device Name
|
2018-06-14 15:31:36 +00:00
|
|
|
|
* **In:**
|
2017-08-24 15:29:22 +00:00
|
|
|
|
* Y,A=DevName
|
2018-06-14 15:31:36 +00:00
|
|
|
|
* **Out:**
|
2017-08-24 15:29:22 +00:00
|
|
|
|
* CC = OK, CS = ERROR
|
|
|
|
|
* A = hFILE
|
|
|
|
|
*\--------------------------------------
|
2018-07-09 15:25:38 +00:00
|
|
|
|
K.MkNod jsr K.GetDevByName Y,A=NAME
|
2017-08-24 15:29:22 +00:00
|
|
|
|
bcs .9
|
2018-01-15 06:50:44 +00:00
|
|
|
|
>STYA .1+1
|
|
|
|
|
stx .2+1
|
2017-08-24 15:29:22 +00:00
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
ldy #S.FD.T
|
2018-07-11 15:13:29 +00:00
|
|
|
|
lda (pFD),y
|
2018-07-10 15:33:13 +00:00
|
|
|
|
cmp #S.FD.T.CDEV
|
2017-08-24 15:29:22 +00:00
|
|
|
|
bne .99
|
|
|
|
|
|
|
|
|
|
txa Pass DEV.ID to OPEN
|
2018-06-22 14:59:24 +00:00
|
|
|
|
ldx #IOCTL.OPEN
|
2018-01-15 06:50:44 +00:00
|
|
|
|
.1 jsr $FFFF SELF MODIFIED
|
2017-08-24 15:29:22 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
>LDYAI S.FD.DEV
|
2018-06-21 15:12:10 +00:00
|
|
|
|
jsr K.GetMem0
|
2017-08-24 15:29:22 +00:00
|
|
|
|
bcs .9
|
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
>STYA ZPPtr3 Ptr3=S.FD
|
2017-08-24 15:29:22 +00:00
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
ldy #S.FD.T
|
|
|
|
|
lda #S.FD.T.CDEV
|
2017-08-24 15:29:22 +00:00
|
|
|
|
sta (ZPPtr3),y
|
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
ldy #S.FD.DEV.DEVID
|
2017-08-24 15:29:22 +00:00
|
|
|
|
|
2018-01-15 06:50:44 +00:00
|
|
|
|
.2 lda #$ff Self Modified
|
2017-08-24 15:29:22 +00:00
|
|
|
|
sta (ZPPtr3),y
|
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
ldy #S.FD.DEV.DRVPTR
|
2018-01-15 06:50:44 +00:00
|
|
|
|
lda .1+1
|
2017-08-24 15:29:22 +00:00
|
|
|
|
sta (ZPPtr3),y
|
|
|
|
|
|
|
|
|
|
iny
|
2018-01-15 06:50:44 +00:00
|
|
|
|
lda .1+2
|
2017-08-24 15:29:22 +00:00
|
|
|
|
sta (ZPPtr3),y
|
|
|
|
|
txa
|
|
|
|
|
clc
|
|
|
|
|
.9 rts
|
|
|
|
|
|
2017-10-26 16:01:54 +00:00
|
|
|
|
.99 lda #MLI.E.IO
|
2017-08-24 15:29:22 +00:00
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*/--------------------------------------
|
|
|
|
|
* # MKFIFO
|
2018-06-28 15:26:34 +00:00
|
|
|
|
* int mkfifo(const char *pathname, mode_t mode);
|
2017-10-09 15:30:48 +00:00
|
|
|
|
* return a hFILE to a new FIFO
|
2018-06-14 15:31:36 +00:00
|
|
|
|
* **In:**
|
|
|
|
|
* **Out:**
|
2017-08-24 15:29:22 +00:00
|
|
|
|
* CC = OK, CS = ERROR
|
|
|
|
|
* A = hFILE
|
|
|
|
|
*\--------------------------------------
|
|
|
|
|
K.MKFIFO >LDYAI 256
|
2018-06-21 15:12:10 +00:00
|
|
|
|
jsr K.GetMem
|
2017-08-24 15:29:22 +00:00
|
|
|
|
bcs .99
|
|
|
|
|
|
|
|
|
|
stx .1+1 save FIFO buffer
|
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
>LDYAI S.FD.FIFO
|
2018-06-21 15:12:10 +00:00
|
|
|
|
jsr K.GetMem0
|
2017-08-24 15:29:22 +00:00
|
|
|
|
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>STYA ZPPtr1
|
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
ldy #S.FD.T
|
|
|
|
|
lda #S.FD.T.FIFO
|
2017-08-24 15:29:22 +00:00
|
|
|
|
sta (ZPPtr1),y
|
|
|
|
|
|
2018-07-10 15:33:13 +00:00
|
|
|
|
iny S.FD.FIFO.hMem
|
2017-08-24 15:29:22 +00:00
|
|
|
|
.1 lda #$ff Self Modified
|
|
|
|
|
sta (ZPPtr1),y
|
|
|
|
|
txa
|
|
|
|
|
clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.9 pha save error code
|
|
|
|
|
lda .1+1 get back FIFO buffer
|
2018-06-22 06:24:35 +00:00
|
|
|
|
jsr K.FreeMem
|
2017-08-24 15:29:22 +00:00
|
|
|
|
pla
|
|
|
|
|
sec
|
|
|
|
|
|
|
|
|
|
.99 rts
|
2017-08-24 12:46:48 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE /A2OSX.SRC/SYS/KERNEL.S.STAT
|
|
|
|
|
LOAD /A2OSX.SRC/SYS/KERNEL.S
|
|
|
|
|
ASM
|