mirror of https://github.com/A2osX/A2osX.git
This commit is contained in:
parent
26d16e1e37
commit
1efb957446
Binary file not shown.
|
@ -0,0 +1,140 @@
|
|||
NEW
|
||||
AUTO 3,1
|
||||
*--------------------------------------
|
||||
SHARED.Stat.I bit CORE.FSID
|
||||
bpl .1
|
||||
|
||||
>MLICALL MLIGETFILEINFOEX
|
||||
bcs K.Pipe.RTS
|
||||
|
||||
>LDYAI K.MLI.PARAMS+3
|
||||
>STYA ZPPtr3
|
||||
|
||||
bra SHARED.DirEnt2Stat
|
||||
|
||||
.1 >MLICALL MLIGETFILEINFO
|
||||
bcs K.Pipe.RTS
|
||||
|
||||
SHARED.GFI2Stat jsr SHARED.ClrStat
|
||||
|
||||
lda K.MLI.PARAMS+S.FI.A
|
||||
jsr SHARED.Access2Mode
|
||||
|
||||
ldx #SHARED.GFI.Cnt
|
||||
|
||||
.3 ldy SHARED.GFI.Src-1,x
|
||||
lda K.MLI.PARAMS,y
|
||||
ldy SHARED.Stat.Dst-1,x
|
||||
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
|
||||
*--------------------------------------
|
||||
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
|
||||
SAVE usr/src/sys/kernel.s.fs
|
||||
LOAD usr/src/sys/kernel.s
|
||||
ASM
|
|
@ -20,6 +20,7 @@ K.PutChar >PUSHA character
|
|||
bcc K.PutChar.RTS
|
||||
|
||||
cmp #E.NODATA
|
||||
sec
|
||||
bne K.PutChar.RTS
|
||||
|
||||
inc 0 = BLOCKING
|
||||
|
@ -55,6 +56,7 @@ K.FPutC jsr PFT.CheckNodeA
|
|||
jsr UNISTD.Write
|
||||
bcc K.PutChar.RET1 pop char...
|
||||
cmp #E.NODATA
|
||||
sec
|
||||
bne K.PutChar.RET1
|
||||
|
||||
inc 0 = BLOCKING
|
||||
|
@ -108,9 +110,10 @@ K.PutS >STYA ZPPtr2
|
|||
bcc K.PutS.RTS
|
||||
|
||||
cmp #E.NODATA
|
||||
bne K.PutS.RTS 0 = BLOCKING
|
||||
sec
|
||||
bne K.PutS.RTS
|
||||
|
||||
* sec
|
||||
inc 0 = BLOCKING
|
||||
|
||||
K.PutS.RET2 >POP 2 pop K.IOBuf
|
||||
K.PutS.RTS rts
|
||||
|
@ -156,6 +159,7 @@ K.FPutS jsr PFT.CheckNodeA set IO.hFD
|
|||
bcc K.PutS.RET2
|
||||
|
||||
cmp #E.NODATA
|
||||
sec
|
||||
bne K.PutS.RET2 IO Error
|
||||
inc FF-> 0 = BLOCKING
|
||||
* sec
|
||||
|
@ -202,10 +206,8 @@ K.FGetS jsr PFT.CheckNodeA
|
|||
.1 jsr STDIO.Get.1
|
||||
bcc .2
|
||||
|
||||
cmp #MLI.E.EOF
|
||||
beq .9
|
||||
|
||||
cmp #E.NODATA
|
||||
sec
|
||||
bne .9 IO error
|
||||
|
||||
inc NO DATA -> BLOCKING
|
||||
|
@ -247,6 +249,7 @@ K.FGetS jsr PFT.CheckNodeA
|
|||
beq .8 String terminated by EOF
|
||||
|
||||
cmp #E.NODATA
|
||||
sec
|
||||
bne .9 I/O error
|
||||
|
||||
lda ZPPtr2 NO DATA, but string not yet terminated
|
||||
|
@ -265,7 +268,7 @@ K.FGetS jsr PFT.CheckNodeA
|
|||
sta (pStack),y !n HI
|
||||
|
||||
lda #0 BLOCKING
|
||||
sec
|
||||
* sec
|
||||
rts
|
||||
|
||||
.8 lda #0
|
||||
|
@ -306,6 +309,7 @@ K.GetC jsr PFT.CheckNodeA
|
|||
bcc .8
|
||||
|
||||
cmp #E.NODATA
|
||||
sec
|
||||
bne K.GetC.RTS I/O error
|
||||
|
||||
inc 0 = BLOCKING
|
||||
|
@ -440,6 +444,7 @@ K.FWrite jsr PFT.CheckNodeA
|
|||
bcc K.FWrite.RTS
|
||||
|
||||
K.FWrite.9 cmp #E.NODATA
|
||||
sec
|
||||
bne K.FWrite.RTS IO Error
|
||||
|
||||
dec pStack FF = NODATA
|
||||
|
@ -447,7 +452,7 @@ K.FWrite.9 cmp #E.NODATA
|
|||
dec pStack
|
||||
dec pStack keep ptr & count on stack
|
||||
inc 0 = BLOCKING
|
||||
|
||||
* sec
|
||||
K.FWrite.RTS rts
|
||||
|
||||
K.FWrite.RET4 >RET 4
|
||||
|
|
|
@ -39,6 +39,7 @@ A2osX.MAIN.B .PH A2osX.EndTables
|
|||
.INB usr/src/sys/kernel.s.core
|
||||
.INB usr/src/sys/kernel.s.drv
|
||||
.INB usr/src/sys/kernel.s.pft
|
||||
.INB usr/src/sys/kernel.s.fs
|
||||
Mem.MLoMem .EQ *
|
||||
.EP
|
||||
A2osX.MAIN.S .EQ *-A2osX.MAIN.B
|
||||
|
|
Loading…
Reference in New Issue