2020-06-30 10:40:19 +00:00
|
|
|
|
NEW
|
|
|
|
|
AUTO 3,1
|
|
|
|
|
*--------------------------------------
|
2020-06-30 14:30:14 +00:00
|
|
|
|
IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
|
|
|
|
bcc IO.OPEN.REG.E Already Exists
|
|
|
|
|
|
|
|
|
|
bit IO.Open.FLAGS Create if not exists ?
|
|
|
|
|
bpl IO.OPEN.RTS No, return MLI error
|
|
|
|
|
|
|
|
|
|
ldx #2 Yes, Create...
|
|
|
|
|
|
|
|
|
|
.1 lda IO.Open.TYPE,x
|
|
|
|
|
sta K.MLI.PARAMS+4,x File type,Aux type
|
|
|
|
|
dex
|
2020-06-30 10:40:19 +00:00
|
|
|
|
bpl .1
|
|
|
|
|
|
2020-06-30 14:30:14 +00:00
|
|
|
|
lda #S.FI.ST.STD
|
|
|
|
|
jsr IO.MLI.CREATE
|
|
|
|
|
bcs IO.OPEN.RTS
|
2020-06-30 10:40:19 +00:00
|
|
|
|
|
2020-06-30 14:30:14 +00:00
|
|
|
|
IO.OPEN.REG.E ldx #0
|
|
|
|
|
jsr IO.MkFD
|
|
|
|
|
bcs IO.OPEN.RTS
|
|
|
|
|
|
|
|
|
|
jsr IO.MLI.OPEN
|
|
|
|
|
bcs UNISTD.Open.ERR
|
|
|
|
|
|
|
|
|
|
lda IO.Open.FLAGS
|
|
|
|
|
bit #O.WRONLY
|
|
|
|
|
beq .20 Write mode ?
|
|
|
|
|
|
|
|
|
|
and #O.APPEND Append ?
|
|
|
|
|
bne .11 yes, go to end of file
|
|
|
|
|
|
|
|
|
|
stz K.MLI.PARAMS+2
|
|
|
|
|
stz K.MLI.PARAMS+3
|
|
|
|
|
stz K.MLI.PARAMS+4
|
|
|
|
|
>MLICALL MLISETEOF no, reset size to 0
|
|
|
|
|
bra .21
|
|
|
|
|
|
|
|
|
|
.11 >MLICALL MLIGETEOF
|
|
|
|
|
bcs UNISTD.Open.ERR
|
|
|
|
|
|
|
|
|
|
>MLICALL MLISETMARK
|
|
|
|
|
.21 bcs UNISTD.Open.ERR
|
|
|
|
|
|
|
|
|
|
.20 lda IO.Open.FLAGS
|
|
|
|
|
and #O.TEXT Text Mode ?
|
|
|
|
|
beq .8
|
|
|
|
|
|
|
|
|
|
lda #$FF
|
|
|
|
|
sta K.MLI.PARAMS+2
|
|
|
|
|
lda #C.CR
|
|
|
|
|
sta K.MLI.PARAMS+3
|
|
|
|
|
>MLICALL MLINEWLINE
|
|
|
|
|
bcs UNISTD.Open.ERR
|
|
|
|
|
|
|
|
|
|
.8 lda IO.hFD
|
|
|
|
|
IO.OPEN.RTS rts
|
|
|
|
|
|
|
|
|
|
UNISTD.Open.ERR pha Save Error Code
|
|
|
|
|
lda IO.hFD
|
|
|
|
|
jsr K.Close
|
|
|
|
|
pla
|
|
|
|
|
sec
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
IO.READ.REG ldx #MLIREAD
|
|
|
|
|
.HS 2C BIT ABS
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
IO.WRITE.REG ldx #MLIWRITE
|
|
|
|
|
|
|
|
|
|
ldy #S.FD.REG.REF
|
|
|
|
|
lda (pFD),y
|
|
|
|
|
sta K.MLI.PARAMS+1
|
|
|
|
|
>PULLW K.MLI.PARAMS+2
|
|
|
|
|
>PULLW K.MLI.PARAMS+4
|
|
|
|
|
|
|
|
|
|
lda #4 Param Count = 4 for MLIREAD & MLIWRITE
|
|
|
|
|
jsr GP.MLICall
|
|
|
|
|
bcs .9
|
|
|
|
|
>LDYA K.MLI.PARAMS+6
|
|
|
|
|
.9
|
|
|
|
|
IO.WRITE.REG.RTS
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
IO.CLOSE.REG
|
|
|
|
|
IO.CLOSE.DIR ldy #S.FD.REG.REF
|
|
|
|
|
lda (pFD),y
|
|
|
|
|
beq .1
|
|
|
|
|
sta K.MLI.PARAMS+1
|
|
|
|
|
>MLICALL MLICLOSE
|
|
|
|
|
|
|
|
|
|
.1 ldy #S.FD.REG.IOBUF
|
|
|
|
|
lda (pFD),y
|
|
|
|
|
beq .2
|
|
|
|
|
jsr K.FreeMem
|
|
|
|
|
.2 lda IO.hFD
|
|
|
|
|
jmp K.FreeMem
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
IO.EOF.REG >MLICALL MLIGETMARK
|
|
|
|
|
bcs .9
|
|
|
|
|
ldy #2
|
|
|
|
|
.1 lda K.MLI.PARAMS+2,y
|
|
|
|
|
sta ACC32,y
|
|
|
|
|
dey
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
>MLICALL MLIGETEOF
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
ldy #2
|
|
|
|
|
.2 lda K.MLI.PARAMS+2,y
|
|
|
|
|
eor ACC32,y
|
|
|
|
|
bne .8 FALSE
|
|
|
|
|
dey
|
|
|
|
|
bpl .2
|
|
|
|
|
lda #$ff TRUE
|
|
|
|
|
* clc
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
|
|
.8 lda #0
|
|
|
|
|
* clc
|
|
|
|
|
.9 rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
IO.MLI.CREATE sta K.MLI.PARAMS+7 Storage Type
|
|
|
|
|
ldx #3
|
|
|
|
|
.1 lda DATELO,x
|
|
|
|
|
sta K.MLI.PARAMS+8,x Create Date/Time
|
2020-06-30 10:40:19 +00:00
|
|
|
|
dex
|
2020-06-30 14:30:14 +00:00
|
|
|
|
bpl .1
|
2020-06-30 10:40:19 +00:00
|
|
|
|
|
2020-06-30 14:30:14 +00:00
|
|
|
|
lda #S.FI.A.FULL
|
|
|
|
|
sta K.MLI.PARAMS+3 Access
|
|
|
|
|
>MLICALL MLICREATE
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
IO.MLI.OPEN >LDYAI 1024 get a ProDOS IOBUF
|
|
|
|
|
ldx #S.MEM.F.ALIGN
|
|
|
|
|
jsr MEM.GetMem.YAX
|
|
|
|
|
bcs .9
|
|
|
|
|
|
|
|
|
|
>STYA K.MLI.PARAMS+3 Save Ptr to IOBUF for MLIOPEN call
|
|
|
|
|
txa
|
|
|
|
|
ldy #S.FD.REG.IOBUF
|
|
|
|
|
sta (pFD),y
|
|
|
|
|
|
|
|
|
|
>MLICALL MLIOPEN
|
|
|
|
|
bcs .9
|
|
|
|
|
lda K.MLI.PARAMS+5 get ref_num
|
|
|
|
|
ldy #S.FD.REG.REF
|
|
|
|
|
sta (pFD),y
|
|
|
|
|
|
|
|
|
|
sta K.MLI.PARAMS+1 Next MLI Calls are REF_NUM based
|
|
|
|
|
|
|
|
|
|
* clc
|
2020-07-13 19:29:31 +00:00
|
|
|
|
.9
|
|
|
|
|
FS.OPEN.RTS rts
|
2020-07-10 13:59:56 +00:00
|
|
|
|
*--------------------------------------
|
|
|
|
|
FS.Stat bit CORE.FSID
|
2020-07-13 19:29:31 +00:00
|
|
|
|
bmi FS.StatEX
|
2020-07-10 13:59:56 +00:00
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
>MLICALL MLIGETFILEINFO
|
|
|
|
|
bcs FS.OPEN.RTS
|
2020-07-10 13:59:56 +00:00
|
|
|
|
|
2020-07-16 14:53:35 +00:00
|
|
|
|
jsr FS.ClrStat
|
2020-07-10 13:59:56 +00:00
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
lda K.MLI.PARAMS+S.FI.T
|
|
|
|
|
cmp #S.FI.T.DIR
|
|
|
|
|
bne .1
|
|
|
|
|
|
|
|
|
|
lda /S.STAT.MODE.DIR
|
|
|
|
|
sta K.S.STAT+S.STAT.MODE+1
|
|
|
|
|
|
|
|
|
|
.1 lda K.MLI.PARAMS+S.FI.A
|
|
|
|
|
jsr FS.Access2Mode
|
2020-07-10 13:59:56 +00:00
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
ldx #FS.GFI.Cnt
|
2020-07-10 13:59:56 +00:00
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
.3 ldy FS.GFI.Src-1,x
|
2020-07-10 13:59:56 +00:00
|
|
|
|
lda K.MLI.PARAMS,y
|
2020-07-13 19:29:31 +00:00
|
|
|
|
ldy FS.Stat.Dst-1,x
|
2020-07-10 13:59:56 +00:00
|
|
|
|
sta K.S.STAT,y
|
|
|
|
|
dex
|
|
|
|
|
bne .3
|
|
|
|
|
|
|
|
|
|
>LDYAI K.MLI.PARAMS+S.FI.CDATE
|
|
|
|
|
ldx #K.S.STAT+S.STAT.CTIME
|
|
|
|
|
jsr SHARED.PTime2StatYAX
|
|
|
|
|
|
|
|
|
|
>LDYAI K.MLI.PARAMS+S.FI.MDATE
|
|
|
|
|
ldx #K.S.STAT+S.STAT.MTIME
|
|
|
|
|
jmp SHARED.PTime2StatYAX
|
2020-06-30 10:40:19 +00:00
|
|
|
|
*--------------------------------------
|
2020-07-13 19:29:31 +00:00
|
|
|
|
FS.StatEX >MLICALL MLIGETFILEINFOEX
|
|
|
|
|
bcs FS.OPEN.RTS
|
|
|
|
|
|
|
|
|
|
>LDYAI K.MLI.PARAMS+3
|
|
|
|
|
>STYA ZPPtr3
|
|
|
|
|
*--------------------------------------
|
2020-07-16 14:53:35 +00:00
|
|
|
|
FS.DirEnt2Stat jsr FS.ClrStat
|
2020-06-30 10:40:19 +00:00
|
|
|
|
|
|
|
|
|
lda (ZPPtr3)
|
|
|
|
|
and #$F0
|
|
|
|
|
cmp #$D0 Vol Hdr, Dir Hdr or Dir ?
|
|
|
|
|
bcc .1
|
2020-06-30 14:30:14 +00:00
|
|
|
|
|
2020-06-30 10:40:19 +00:00
|
|
|
|
lda /S.STAT.MODE.DIR
|
|
|
|
|
sta K.S.STAT+S.STAT.MODE+1
|
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
.1 ldx #FS.DirEnt.Cnt
|
2020-06-30 10:40:19 +00:00
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
.2 ldy FS.DirEnt.Src-1,x
|
2020-06-30 10:40:19 +00:00
|
|
|
|
lda (ZPPtr3),y
|
2020-07-13 19:29:31 +00:00
|
|
|
|
ldy FS.Stat.Dst-1,x
|
2020-06-30 10:40:19 +00:00
|
|
|
|
sta K.S.STAT,y
|
|
|
|
|
dex
|
|
|
|
|
bne .2
|
2020-06-30 14:30:14 +00:00
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
ldy #S.FIEX.ACCESS
|
|
|
|
|
lda (ZPPtr3),y
|
|
|
|
|
|
|
|
|
|
jsr FS.Access2Mode
|
|
|
|
|
|
|
|
|
|
ldy #S.FIEX.ACL
|
2020-06-30 10:40:19 +00:00
|
|
|
|
lda (ZPPtr3),y
|
2020-07-13 19:29:31 +00:00
|
|
|
|
cmp #$57
|
|
|
|
|
bne .7
|
2020-06-30 10:40:19 +00:00
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
ldy #S.FIEX.ACL.UID
|
|
|
|
|
lda (ZPPtr3),y
|
|
|
|
|
sta K.S.STAT+S.STAT.UID
|
2020-06-30 10:40:19 +00:00
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
ldy #S.FIEX.ACL.GID
|
|
|
|
|
lda (ZPPtr3),y
|
|
|
|
|
sta K.S.STAT+S.STAT.GID
|
|
|
|
|
|
|
|
|
|
ldy #S.FIEX.ACL.MOD
|
|
|
|
|
lda (ZPPtr3),y
|
|
|
|
|
tsb K.S.STAT+S.STAT.MODE
|
|
|
|
|
iny
|
|
|
|
|
lda (ZPPtr3),y
|
|
|
|
|
tsb K.S.STAT+S.STAT.MODE+1
|
|
|
|
|
|
|
|
|
|
.7 lda #S.FIEX.CTIME
|
2020-06-30 10:40:19 +00:00
|
|
|
|
ldx #K.S.STAT+S.STAT.CTIME
|
|
|
|
|
jsr SHARED.PTime2StatAX
|
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
lda #S.FIEX.MTIME
|
2020-06-30 10:40:19 +00:00
|
|
|
|
ldx #K.S.STAT+S.STAT.MTIME
|
|
|
|
|
jmp SHARED.PTime2StatAX
|
|
|
|
|
*--------------------------------------
|
2020-07-16 14:53:35 +00:00
|
|
|
|
FS.ClrStat ldx #S.STAT-1
|
2020-07-13 19:29:31 +00:00
|
|
|
|
|
|
|
|
|
.1 stz K.S.STAT,x
|
|
|
|
|
dex
|
|
|
|
|
bpl .1
|
|
|
|
|
|
|
|
|
|
lda CORE.FSID
|
|
|
|
|
sta K.S.STAT+S.STAT.FSID
|
|
|
|
|
|
2020-06-30 10:40:19 +00:00
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2020-07-13 19:29:31 +00:00
|
|
|
|
FS.Mode2Access clc
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
FS.Access2Mode and #S.FI.A.FULL
|
2020-06-30 10:40:19 +00:00
|
|
|
|
cmp #S.FI.A.FULL
|
|
|
|
|
beq .7
|
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
lda #S.STAT.MODE.XU
|
2020-06-30 10:40:19 +00:00
|
|
|
|
|
|
|
|
|
.HS 2C BIT ABS
|
2020-07-13 19:29:31 +00:00
|
|
|
|
.7 lda #S.STAT.MODE.FU
|
|
|
|
|
|
2020-06-30 10:40:19 +00:00
|
|
|
|
.8 sta K.S.STAT+S.STAT.MODE
|
|
|
|
|
|
2020-07-13 19:29:31 +00:00
|
|
|
|
lda /S.STAT.MODE.RU
|
|
|
|
|
tsb K.S.STAT+S.STAT.MODE+1 preserve DIR
|
2020-06-30 10:40:19 +00:00
|
|
|
|
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
SHARED.PTime2StatAX
|
|
|
|
|
clc
|
|
|
|
|
adc ZPPtr3
|
|
|
|
|
tay
|
|
|
|
|
lda ZPPtr3+1
|
|
|
|
|
adc #0
|
|
|
|
|
SHARED.PTime2StatYAX
|
|
|
|
|
>PUSHYA
|
|
|
|
|
|
|
|
|
|
>PUSHB /K.S.STAT
|
|
|
|
|
txa
|
|
|
|
|
>PUSHA
|
|
|
|
|
>SYSCALL2 PTime2Time
|
|
|
|
|
rts
|
|
|
|
|
*--------------------------------------
|
2020-07-13 19:29:31 +00:00
|
|
|
|
FS.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1
|
2020-06-30 10:40:19 +00:00
|
|
|
|
.DA #S.FI.UBLKS,#S.FI.UBLKS+1
|
2020-07-13 19:29:31 +00:00
|
|
|
|
FS.GFI.Cnt .EQ *-FS.GFI.Src
|
2020-06-30 10:40:19 +00:00
|
|
|
|
*--------------------------------------
|
2020-07-13 19:29:31 +00:00
|
|
|
|
FS.DirEnt.Src .DA #S.FIEX.T,#S.FIEX.AUXTYPE,#S.FIEX.AUXTYPE+1
|
|
|
|
|
.DA #S.FIEX.BLKUSED,#S.FIEX.BLKUSED+1
|
|
|
|
|
.DA #S.FIEX.EOF,#S.FIEX.EOF+1,#S.FIEX.EOF+2
|
|
|
|
|
FS.DirEnt.Cnt .EQ *-FS.DirEnt.Src
|
2020-06-30 10:40:19 +00:00
|
|
|
|
*--------------------------------------
|
2020-07-13 19:29:31 +00:00
|
|
|
|
FS.Stat.Dst .DA #S.STAT.P.TYPE,#S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
|
2020-06-30 10:40:19 +00:00
|
|
|
|
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1
|
|
|
|
|
.DA #S.STAT.SIZE,#S.STAT.SIZE+1,#S.STAT.SIZE+2
|
|
|
|
|
*--------------------------------------
|
|
|
|
|
MAN
|
|
|
|
|
SAVE usr/src/sys/kernel.s.fs
|
|
|
|
|
LOAD usr/src/sys/kernel.s
|
|
|
|
|
ASM
|