mirror of
https://github.com/A2osX/A2osX.git
synced 2024-06-10 06:29:33 +00:00
Kernel 0.94
This commit is contained in:
parent
1efb957446
commit
43b08f2c22
Binary file not shown.
|
@ -1,41 +1,172 @@
|
||||||
NEW
|
NEW
|
||||||
AUTO 3,1
|
AUTO 3,1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.Stat.I bit CORE.FSID
|
IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
||||||
bpl .1
|
bcc IO.OPEN.REG.E Already Exists
|
||||||
|
|
||||||
>MLICALL MLIGETFILEINFOEX
|
|
||||||
bcs K.Pipe.RTS
|
|
||||||
|
|
||||||
>LDYAI K.MLI.PARAMS+3
|
|
||||||
>STYA ZPPtr3
|
|
||||||
|
|
||||||
bra SHARED.DirEnt2Stat
|
|
||||||
|
|
||||||
.1 >MLICALL MLIGETFILEINFO
|
bit IO.Open.FLAGS Create if not exists ?
|
||||||
bcs K.Pipe.RTS
|
bpl IO.OPEN.RTS No, return MLI error
|
||||||
|
|
||||||
SHARED.GFI2Stat jsr SHARED.ClrStat
|
ldx #2 Yes, Create...
|
||||||
|
|
||||||
lda K.MLI.PARAMS+S.FI.A
|
|
||||||
jsr SHARED.Access2Mode
|
|
||||||
|
|
||||||
ldx #SHARED.GFI.Cnt
|
.1 lda IO.Open.TYPE,x
|
||||||
|
sta K.MLI.PARAMS+4,x File type,Aux type
|
||||||
.3 ldy SHARED.GFI.Src-1,x
|
|
||||||
lda K.MLI.PARAMS,y
|
|
||||||
ldy SHARED.Stat.Dst-1,x
|
|
||||||
sta K.S.STAT,y
|
|
||||||
dex
|
dex
|
||||||
bne .3
|
bpl .1
|
||||||
|
|
||||||
>LDYAI K.MLI.PARAMS+S.FI.CDATE
|
|
||||||
ldx #K.S.STAT+S.STAT.CTIME
|
|
||||||
jsr SHARED.PTime2StatYAX
|
|
||||||
|
|
||||||
>LDYAI K.MLI.PARAMS+S.FI.MDATE
|
lda #S.FI.ST.STD
|
||||||
ldx #K.S.STAT+S.STAT.MTIME
|
jsr IO.MLI.CREATE
|
||||||
jmp SHARED.PTime2StatYAX
|
bcs IO.OPEN.RTS
|
||||||
|
|
||||||
|
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
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
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
|
||||||
|
.9 rts
|
||||||
|
*--------------------------------------
|
||||||
|
SHARED.ClrStat ldx #S.STAT-1
|
||||||
|
|
||||||
|
.1 stz K.S.STAT,x
|
||||||
|
dex
|
||||||
|
bpl .1
|
||||||
|
|
||||||
|
lda CORE.FSID
|
||||||
|
sta K.S.STAT+S.STAT.FSID
|
||||||
|
|
||||||
|
rts
|
||||||
|
SHARED.ClrStat.RTS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.DirEnt2Stat
|
SHARED.DirEnt2Stat
|
||||||
jsr SHARED.ClrStat
|
jsr SHARED.ClrStat
|
||||||
|
@ -44,7 +175,7 @@ SHARED.DirEnt2Stat
|
||||||
and #$F0
|
and #$F0
|
||||||
cmp #$D0 Vol Hdr, Dir Hdr or Dir ?
|
cmp #$D0 Vol Hdr, Dir Hdr or Dir ?
|
||||||
bcc .1
|
bcc .1
|
||||||
|
|
||||||
lda /S.STAT.MODE.DIR
|
lda /S.STAT.MODE.DIR
|
||||||
sta K.S.STAT+S.STAT.MODE+1
|
sta K.S.STAT+S.STAT.MODE+1
|
||||||
|
|
||||||
|
@ -56,7 +187,7 @@ SHARED.DirEnt2Stat
|
||||||
sta K.S.STAT,y
|
sta K.S.STAT,y
|
||||||
dex
|
dex
|
||||||
bne .2
|
bne .2
|
||||||
|
|
||||||
ldy #$1E ProDOS Access
|
ldy #$1E ProDOS Access
|
||||||
lda (ZPPtr3),y
|
lda (ZPPtr3),y
|
||||||
|
|
||||||
|
@ -124,7 +255,7 @@ SHARED.PTime2StatYAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1
|
SHARED.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1
|
||||||
.DA #S.FI.UBLKS,#S.FI.UBLKS+1
|
.DA #S.FI.UBLKS,#S.FI.UBLKS+1
|
||||||
SHARED.GFI.Cnt .EQ *-SHARED.GFI.Src
|
SHARED.GFI.Cnt .EQ *-SHARED.GFI.Src
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.DirEnt.Src
|
SHARED.DirEnt.Src
|
||||||
.HS 10.1f20.1314.151617
|
.HS 10.1f20.1314.151617
|
||||||
|
|
|
@ -155,27 +155,6 @@ SHARED.GetScrnDevX
|
||||||
sta SETREADAUX
|
sta SETREADAUX
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.GetPDrv ldy #S.FD.DEV.DRVPTR
|
|
||||||
lda (pFD),y
|
|
||||||
sta pDRV
|
|
||||||
iny
|
|
||||||
lda (pFD),y
|
|
||||||
sta pDRV+1
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
SHARED.ClrStat ldx #S.STAT-1
|
|
||||||
|
|
||||||
.1 stz K.S.STAT,x
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
lda CORE.FSID
|
|
||||||
sta K.S.STAT+S.STAT.FSID
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
DEV.FIFO .AS "/dev/fifo" STAT,UNISTD
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.SHARED
|
SAVE USR/SRC/SYS/KERNEL.S.SHARED
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD USR/SRC/SYS/KERNEL.S
|
||||||
|
|
|
@ -332,12 +332,12 @@ SHARED.Stat.I bit CORE.FSID
|
||||||
>LDYAI K.MLI.PARAMS+3
|
>LDYAI K.MLI.PARAMS+3
|
||||||
>STYA ZPPtr3
|
>STYA ZPPtr3
|
||||||
|
|
||||||
bra SHARED.DirEnt2Stat
|
jmp SHARED.DirEnt2Stat
|
||||||
|
|
||||||
.1 >MLICALL MLIGETFILEINFO
|
.1 >MLICALL MLIGETFILEINFO
|
||||||
bcs K.Pipe.RTS
|
bcs K.Pipe.RTS
|
||||||
|
|
||||||
SHARED.GFI2Stat jsr SHARED.ClrStat
|
jsr SHARED.ClrStat
|
||||||
|
|
||||||
lda K.MLI.PARAMS+S.FI.A
|
lda K.MLI.PARAMS+S.FI.A
|
||||||
jsr SHARED.Access2Mode
|
jsr SHARED.Access2Mode
|
||||||
|
@ -359,103 +359,6 @@ SHARED.GFI2Stat jsr SHARED.ClrStat
|
||||||
ldx #K.S.STAT+S.STAT.MTIME
|
ldx #K.S.STAT+S.STAT.MTIME
|
||||||
jmp SHARED.PTime2StatYAX
|
jmp SHARED.PTime2StatYAX
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
SHARED.DirEnt2Stat
|
|
||||||
jsr SHARED.ClrStat
|
|
||||||
|
|
||||||
lda (ZPPtr3)
|
|
||||||
and #$F0
|
|
||||||
cmp #$D0 Vol Hdr, Dir Hdr or Dir ?
|
|
||||||
bcc .1
|
|
||||||
|
|
||||||
lda /S.STAT.MODE.DIR
|
|
||||||
sta K.S.STAT+S.STAT.MODE+1
|
|
||||||
|
|
||||||
.1 ldx #SHARED.DirEnt.Cnt
|
|
||||||
|
|
||||||
.2 ldy SHARED.DirEnt.Src-1,x
|
|
||||||
lda (ZPPtr3),y
|
|
||||||
ldy SHARED.Stat.Dst-1,x
|
|
||||||
sta K.S.STAT,y
|
|
||||||
dex
|
|
||||||
bne .2
|
|
||||||
|
|
||||||
ldy #$1E ProDOS Access
|
|
||||||
lda (ZPPtr3),y
|
|
||||||
|
|
||||||
jsr SHARED.Access2Mode
|
|
||||||
|
|
||||||
lda #$18 creation Date/time
|
|
||||||
ldx #K.S.STAT+S.STAT.CTIME
|
|
||||||
jsr SHARED.PTime2StatAX
|
|
||||||
|
|
||||||
lda #$21 mod Date/time
|
|
||||||
ldx #K.S.STAT+S.STAT.MTIME
|
|
||||||
jmp SHARED.PTime2StatAX
|
|
||||||
*--------------------------------------
|
|
||||||
SHARED.Mode2Access
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
SHARED.Access2Mode
|
|
||||||
and #S.FI.A.FULL
|
|
||||||
cmp #S.FI.A.FULL
|
|
||||||
beq .7
|
|
||||||
tay
|
|
||||||
ldx #S.STAT.MODE.RO+S.STAT.MODE.RG+S.STAT.MODE.RU+S.STAT.MODE.XO+S.STAT.MODE.XG+S.STAT.MODE.XU
|
|
||||||
|
|
||||||
bit #S.FI.A.W
|
|
||||||
beq .1
|
|
||||||
txa
|
|
||||||
ora #S.STAT.MODE.WO
|
|
||||||
tax
|
|
||||||
tya
|
|
||||||
|
|
||||||
.1 asl D in C
|
|
||||||
|
|
||||||
bpl .2 RN in N
|
|
||||||
txa
|
|
||||||
ora #S.STAT.MODE.WG
|
|
||||||
tax
|
|
||||||
.2 txa
|
|
||||||
bcc .8
|
|
||||||
ora #S.STAT.MODE.WU
|
|
||||||
.HS 2C BIT ABS
|
|
||||||
.7 lda #S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU rwxrwxrwx
|
|
||||||
.8 sta K.S.STAT+S.STAT.MODE
|
|
||||||
|
|
||||||
lda /S.STAT.MODE.RU ??????R??
|
|
||||||
ora K.S.STAT+S.STAT.MODE+1 preserve DIR
|
|
||||||
sta K.S.STAT+S.STAT.MODE+1
|
|
||||||
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
SHARED.PTime2StatAX
|
|
||||||
clc
|
|
||||||
adc ZPPtr3
|
|
||||||
tay
|
|
||||||
lda ZPPtr3+1
|
|
||||||
adc #0
|
|
||||||
SHARED.PTime2StatYAX
|
|
||||||
>PUSHYA
|
|
||||||
|
|
||||||
>PUSHB /K.S.STAT
|
|
||||||
txa
|
|
||||||
>PUSHA
|
|
||||||
>SYSCALL2 PTime2Time
|
|
||||||
rts
|
|
||||||
*--------------------------------------
|
|
||||||
SHARED.GFI.Src .DA #S.FI.T,#S.FI.AUXTYPE,#S.FI.AUXTYPE+1
|
|
||||||
.DA #S.FI.UBLKS,#S.FI.UBLKS+1
|
|
||||||
SHARED.GFI.Cnt .EQ *-SHARED.GFI.Src
|
|
||||||
*--------------------------------------
|
|
||||||
SHARED.DirEnt.Src
|
|
||||||
.HS 10.1f20.1314.151617
|
|
||||||
SHARED.DirEnt.Cnt .EQ *-SHARED.DirEnt.Src
|
|
||||||
*--------------------------------------
|
|
||||||
SHARED.Stat.Dst .DA #S.STAT.P.TYPE,#S.STAT.P.AUXTYPE,#S.STAT.P.AUXTYPE+1
|
|
||||||
.DA #S.STAT.BLOCKS,#S.STAT.BLOCKS+1
|
|
||||||
.DA #S.STAT.SIZE,#S.STAT.SIZE+1,#S.STAT.SIZE+2
|
|
||||||
*--------------------------------------
|
|
||||||
MAN
|
MAN
|
||||||
SAVE usr/src/sys/kernel.s.stat
|
SAVE usr/src/sys/kernel.s.stat
|
||||||
LOAD usr/src/sys/kernel.s
|
LOAD usr/src/sys/kernel.s
|
||||||
|
|
|
@ -20,7 +20,7 @@ IO.Open.TYPE .BS 1
|
||||||
IO.Open.AUXTYPE .BS 2
|
IO.Open.AUXTYPE .BS 2
|
||||||
IO.hFD .BS 1
|
IO.hFD .BS 1
|
||||||
.ED
|
.ED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
K.Open jsr PFT.YAToMLIPATH
|
K.Open jsr PFT.YAToMLIPATH
|
||||||
>PULLB IO.Open.FLAGS
|
>PULLB IO.Open.FLAGS
|
||||||
|
|
||||||
|
@ -29,30 +29,37 @@ K.Open jsr PFT.YAToMLIPATH
|
||||||
stz IO.Open.AUXTYPE
|
stz IO.Open.AUXTYPE
|
||||||
stz IO.Open.AUXTYPE+1
|
stz IO.Open.AUXTYPE+1
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
UNISTD.Open jsr UNISTD.CheckDev
|
UNISTD.Open ldx #5 /DEV/
|
||||||
bcs IO.OPEN.REG
|
cpx K.MLI.PATH
|
||||||
*--------------------------------------
|
bcs .99
|
||||||
|
|
||||||
|
.1 lda K.MLI.PATH,x
|
||||||
|
cmp DEV.FIFO-1,x
|
||||||
|
bne .99
|
||||||
|
dex
|
||||||
|
bne .1
|
||||||
|
*--------------------------------------
|
||||||
* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE)
|
* /DEV/xxxxxx (CDEV,BDEV,DSOCK,SSOCK,PIPE)
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
>LDYAI K.MLI.PATH+6 skip $/DEV/
|
>LDYAI K.MLI.PATH+6 skip $/DEV/
|
||||||
|
|
||||||
jsr K.GetDevByName
|
jsr K.GetDevByName
|
||||||
bcc .7
|
bcc .7
|
||||||
|
|
||||||
ldx #2
|
ldx #2
|
||||||
.10 lda Nod.Table.hPath-2,x
|
.10 lda Nod.Table.hPath-2,x
|
||||||
beq .3
|
beq .3
|
||||||
|
|
||||||
jsr K.GetMemPtr
|
jsr K.GetMemPtr
|
||||||
>STYA ZPPtr1
|
>STYA ZPPtr1
|
||||||
|
|
||||||
ldy #0
|
ldy #0
|
||||||
|
|
||||||
.2 lda (ZPPtr1),y
|
.2 lda (ZPPtr1),y
|
||||||
iny
|
iny
|
||||||
cmp K.MLI.PATH,y
|
cmp K.MLI.PATH,y
|
||||||
bne .3
|
bne .3
|
||||||
|
|
||||||
cmp #0 end of string ?
|
cmp #0 end of string ?
|
||||||
|
|
||||||
bne .2
|
bne .2
|
||||||
|
@ -60,15 +67,15 @@ UNISTD.Open jsr UNISTD.CheckDev
|
||||||
lda Nod.Table.hFD-2,x return hFD
|
lda Nod.Table.hFD-2,x return hFD
|
||||||
jsr UNISTD.GetPFD
|
jsr UNISTD.GetPFD
|
||||||
bra .71
|
bra .71
|
||||||
|
|
||||||
.3 inx
|
.3 inx
|
||||||
cpx #K.NOD.MAX+2
|
cpx #K.NOD.MAX+2
|
||||||
bne .10
|
bne .10
|
||||||
|
|
||||||
lda #MLI.E.NODEV
|
lda #MLI.E.NODEV
|
||||||
* sec
|
* sec
|
||||||
rts no OF found
|
rts no OF found
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
.7 stx IO.hFD
|
.7 stx IO.hFD
|
||||||
>STYA pFD
|
>STYA pFD
|
||||||
|
|
||||||
|
@ -85,70 +92,8 @@ UNISTD.Open jsr UNISTD.CheckDev
|
||||||
.DA IO.OPEN.DSOCK
|
.DA IO.OPEN.DSOCK
|
||||||
.DA IO.OPEN.SSOCK
|
.DA IO.OPEN.SSOCK
|
||||||
.DA IO.OPEN.PIPE
|
.DA IO.OPEN.PIPE
|
||||||
*--------------------------------------
|
|
||||||
IO.OPEN.REG >MLICALL MLIGETFILEINFO
|
|
||||||
bcc IO.OPEN.REG.E Already Exists
|
|
||||||
|
|
||||||
bit IO.Open.FLAGS Create if not exists ?
|
.99 jmp IO.OPEN.REG
|
||||||
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
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
lda #S.FI.ST.STD
|
|
||||||
jsr IO.MLI.CREATE
|
|
||||||
bcs IO.OPEN.RTS
|
|
||||||
|
|
||||||
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
|
|
||||||
*/--------------------------------------
|
*/--------------------------------------
|
||||||
* # close
|
* # close
|
||||||
* ## C
|
* ## C
|
||||||
|
@ -231,66 +176,16 @@ UNISTD.GetPFD sta IO.hFD
|
||||||
>STYA pFD
|
>STYA pFD
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
UNISTD.CheckDev ldx #5 /DEV/
|
|
||||||
cpx K.MLI.PATH
|
|
||||||
bcs .99
|
|
||||||
|
|
||||||
.1 lda K.MLI.PATH,x
|
|
||||||
cmp DEV.FIFO-1,x
|
|
||||||
bne .9
|
|
||||||
dex
|
|
||||||
bne .1
|
|
||||||
|
|
||||||
clc
|
|
||||||
rts
|
|
||||||
|
|
||||||
.9 sec
|
|
||||||
.99 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.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.OPEN.CDEV
|
IO.OPEN.CDEV
|
||||||
IO.OPEN.BDEV jsr SHARED.GetPDrv
|
IO.OPEN.BDEV jsr SHARED.GetPDrv
|
||||||
ldx #IOCTL.OPEN
|
ldx #IOCTL.OPEN
|
||||||
lda IO.hFD
|
lda IO.hFD
|
||||||
jsr SHARED.pDrvJmp
|
jsr SHARED.pDrvJmp
|
||||||
bcs IO.WRITE.REG.RTS
|
bcs IO.WRITE.CDEV.RTS
|
||||||
|
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.OPEN.DSOCK
|
IO.OPEN.DSOCK
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.OPEN.SSOCK
|
IO.OPEN.SSOCK
|
||||||
lda IO.hFD
|
lda IO.hFD
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.CLOSE.CDEV
|
IO.CLOSE.CDEV
|
||||||
|
@ -312,10 +207,12 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE
|
||||||
|
|
||||||
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
|
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
|
||||||
|
|
||||||
.9 rts
|
.9
|
||||||
|
IO.WRITE.CDEV.RTS
|
||||||
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
IO.CLOSE.DSOCK
|
IO.CLOSE.DSOCK
|
||||||
IO.CLOSE.SSOCK
|
IO.CLOSE.SSOCK
|
||||||
ldy #S.FD.SSOCK.CLOSE
|
ldy #S.FD.SSOCK.CLOSE
|
||||||
.HS 2C BIT ABS
|
.HS 2C BIT ABS
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -337,31 +234,6 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
|
||||||
lda IO.hFD
|
lda IO.hFD
|
||||||
.1 jmp $FFFF SELF MODIFIED
|
.1 jmp $FFFF SELF MODIFIED
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
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.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
|
IO.EOF.CDEV lda #S.IOCTL.STATCODE.EOF
|
||||||
jmp SHARED.GetDevStatus
|
jmp SHARED.GetDevStatus
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
@ -376,10 +248,10 @@ IO.MkFD stx .8+1
|
||||||
ldx #S.MEM.F.INIT0+S.MEM.F.FD
|
ldx #S.MEM.F.INIT0+S.MEM.F.FD
|
||||||
jsr MEM.GetMem.YAX
|
jsr MEM.GetMem.YAX
|
||||||
bcs .9
|
bcs .9
|
||||||
|
|
||||||
>STYA pFD
|
>STYA pFD
|
||||||
stx IO.hFD
|
stx IO.hFD
|
||||||
|
|
||||||
.8 ldx #$ff SELF MODIFIED
|
.8 ldx #$ff SELF MODIFIED
|
||||||
lda IO.MkFD.T,x
|
lda IO.MkFD.T,x
|
||||||
sta (pFD) X = hFD, A = T
|
sta (pFD) X = hFD, A = T
|
||||||
|
@ -389,39 +261,6 @@ IO.MkFD stx .8+1
|
||||||
IO.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE
|
IO.MkFD.Y .DA #S.FD.REG,#S.FD.DIR,#S.FD.PIPE
|
||||||
IO.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
|
IO.MkFD.T .DA #S.FD.T.REG,#S.FD.T.DIR,#S.FD.T.PIPE
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
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
|
|
||||||
dex
|
|
||||||
bpl .1
|
|
||||||
|
|
||||||
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
|
|
||||||
.9 rts
|
|
||||||
*--------------------------------------
|
|
||||||
IO.CLOSE.NOD ldx #2
|
IO.CLOSE.NOD ldx #2
|
||||||
|
|
||||||
lda IO.hFD
|
lda IO.hFD
|
||||||
|
@ -456,6 +295,16 @@ IO.CLOSE.NOD ldx #2
|
||||||
K.ChOwn clc
|
K.ChOwn clc
|
||||||
rts
|
rts
|
||||||
*--------------------------------------
|
*--------------------------------------
|
||||||
|
SHARED.GetPDrv ldy #S.FD.DEV.DRVPTR
|
||||||
|
lda (pFD),y
|
||||||
|
sta pDRV
|
||||||
|
iny
|
||||||
|
lda (pFD),y
|
||||||
|
sta pDRV+1
|
||||||
|
rts
|
||||||
|
*--------------------------------------
|
||||||
|
DEV.FIFO .AS "/dev/fifo" STAT,UNISTD
|
||||||
|
*--------------------------------------
|
||||||
MAN
|
MAN
|
||||||
SAVE USR/SRC/SYS/KERNEL.S.UNISTD
|
SAVE USR/SRC/SYS/KERNEL.S.UNISTD
|
||||||
LOAD USR/SRC/SYS/KERNEL.S
|
LOAD USR/SRC/SYS/KERNEL.S
|
||||||
|
|
|
@ -78,6 +78,8 @@ A2osX.D1.B .PH $D000
|
||||||
.INB usr/src/sys/kernel.s.unistd
|
.INB usr/src/sys/kernel.s.unistd
|
||||||
.INB usr/src/sys/kernel.s.stdio
|
.INB usr/src/sys/kernel.s.stdio
|
||||||
.INB usr/src/sys/kernel.s.stdio2
|
.INB usr/src/sys/kernel.s.stdio2
|
||||||
|
.INB usr/src/sys/kernel.s.dev
|
||||||
|
.INB usr/src/sys/kernel.s.pipe
|
||||||
.EP
|
.EP
|
||||||
A2osX.D1.S .EQ *-A2osX.D1.B
|
A2osX.D1.S .EQ *-A2osX.D1.B
|
||||||
|
|
||||||
|
@ -116,8 +118,6 @@ A2osX.E0.B .PH $E000
|
||||||
|
|
||||||
.INB usr/src/sys/kernel.s.mem
|
.INB usr/src/sys/kernel.s.mem
|
||||||
* go to A2osX.D1
|
* go to A2osX.D1
|
||||||
.INB usr/src/sys/kernel.s.pipe
|
|
||||||
.INB usr/src/sys/kernel.s.dev
|
|
||||||
|
|
||||||
DevMgr.Timer .BS 1
|
DevMgr.Timer .BS 1
|
||||||
DevMgr.Stat .DA DevMgr.FreeMem
|
DevMgr.Stat .DA DevMgr.FreeMem
|
||||||
|
|
Loading…
Reference in New Issue
Block a user