This commit is contained in:
Rémy GIBERT 2020-06-30 12:40:19 +02:00
parent 26d16e1e37
commit 1efb957446
4 changed files with 153 additions and 7 deletions

Binary file not shown.

140
SYS/KERNEL.S.FS.txt Normal file
View File

@ -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

View File

@ -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

View File

@ -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