diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 5a44711e..4ba39238 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/SYS/KERNEL.S.FS.txt b/SYS/KERNEL.S.FS.txt index 76959db6..4fceb8b3 100644 --- a/SYS/KERNEL.S.FS.txt +++ b/SYS/KERNEL.S.FS.txt @@ -1,41 +1,172 @@ 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 +IO.OPEN.REG >MLICALL MLIGETFILEINFO + bcc IO.OPEN.REG.E Already Exists -.1 >MLICALL MLIGETFILEINFO - bcs K.Pipe.RTS + bit IO.Open.FLAGS Create if not exists ? + bpl IO.OPEN.RTS No, return MLI error -SHARED.GFI2Stat jsr SHARED.ClrStat - - lda K.MLI.PARAMS+S.FI.A - jsr SHARED.Access2Mode + ldx #2 Yes, Create... - 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 +.1 lda IO.Open.TYPE,x + sta K.MLI.PARAMS+4,x File type,Aux type dex - bne .3 - - >LDYAI K.MLI.PARAMS+S.FI.CDATE - ldx #K.S.STAT+S.STAT.CTIME - jsr SHARED.PTime2StatYAX + bpl .1 - >LDYAI K.MLI.PARAMS+S.FI.MDATE - ldx #K.S.STAT+S.STAT.MTIME - jmp SHARED.PTime2StatYAX + 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 +*-------------------------------------- +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 jsr SHARED.ClrStat @@ -44,7 +175,7 @@ SHARED.DirEnt2Stat 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 @@ -56,7 +187,7 @@ SHARED.DirEnt2Stat sta K.S.STAT,y dex bne .2 - + ldy #$1E ProDOS Access lda (ZPPtr3),y @@ -124,7 +255,7 @@ SHARED.PTime2StatYAX *-------------------------------------- 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.GFI.Cnt .EQ *-SHARED.GFI.Src *-------------------------------------- SHARED.DirEnt.Src .HS 10.1f20.1314.151617 diff --git a/SYS/KERNEL.S.SHARED.txt b/SYS/KERNEL.S.SHARED.txt index 8577f092..95f76af3 100644 --- a/SYS/KERNEL.S.SHARED.txt +++ b/SYS/KERNEL.S.SHARED.txt @@ -155,27 +155,6 @@ SHARED.GetScrnDevX sta SETREADAUX 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 SAVE USR/SRC/SYS/KERNEL.S.SHARED LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index e543e458..6ba4fc66 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -332,12 +332,12 @@ SHARED.Stat.I bit CORE.FSID >LDYAI K.MLI.PARAMS+3 >STYA ZPPtr3 - bra SHARED.DirEnt2Stat + jmp SHARED.DirEnt2Stat .1 >MLICALL MLIGETFILEINFO bcs K.Pipe.RTS -SHARED.GFI2Stat jsr SHARED.ClrStat + jsr SHARED.ClrStat lda K.MLI.PARAMS+S.FI.A jsr SHARED.Access2Mode @@ -359,103 +359,6 @@ SHARED.GFI2Stat jsr SHARED.ClrStat 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.stat LOAD usr/src/sys/kernel.s diff --git a/SYS/KERNEL.S.UNISTD.txt b/SYS/KERNEL.S.UNISTD.txt index 2165aca4..5c9cab54 100644 --- a/SYS/KERNEL.S.UNISTD.txt +++ b/SYS/KERNEL.S.UNISTD.txt @@ -20,7 +20,7 @@ IO.Open.TYPE .BS 1 IO.Open.AUXTYPE .BS 2 IO.hFD .BS 1 .ED -*-------------------------------------- +*-------------------------------------- K.Open jsr PFT.YAToMLIPATH >PULLB IO.Open.FLAGS @@ -29,30 +29,37 @@ K.Open jsr PFT.YAToMLIPATH stz IO.Open.AUXTYPE stz IO.Open.AUXTYPE+1 *-------------------------------------- -UNISTD.Open jsr UNISTD.CheckDev - bcs IO.OPEN.REG -*-------------------------------------- +UNISTD.Open ldx #5 /DEV/ + 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) -*-------------------------------------- +*-------------------------------------- >LDYAI K.MLI.PATH+6 skip $/DEV/ jsr K.GetDevByName bcc .7 - + ldx #2 .10 lda Nod.Table.hPath-2,x beq .3 jsr K.GetMemPtr >STYA ZPPtr1 - + ldy #0 .2 lda (ZPPtr1),y iny cmp K.MLI.PATH,y bne .3 - + cmp #0 end of string ? bne .2 @@ -60,15 +67,15 @@ UNISTD.Open jsr UNISTD.CheckDev lda Nod.Table.hFD-2,x return hFD jsr UNISTD.GetPFD bra .71 - + .3 inx cpx #K.NOD.MAX+2 bne .10 - + lda #MLI.E.NODEV * sec rts no OF found -*-------------------------------------- +*-------------------------------------- .7 stx IO.hFD >STYA pFD @@ -85,70 +92,8 @@ UNISTD.Open jsr UNISTD.CheckDev .DA IO.OPEN.DSOCK .DA IO.OPEN.SSOCK .DA IO.OPEN.PIPE -*-------------------------------------- -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 - 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 +.99 jmp IO.OPEN.REG */-------------------------------------- * # close * ## C @@ -231,66 +176,16 @@ UNISTD.GetPFD sta IO.hFD >STYA pFD 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.BDEV jsr SHARED.GetPDrv ldx #IOCTL.OPEN lda IO.hFD jsr SHARED.pDrvJmp - bcs IO.WRITE.REG.RTS - + bcs IO.WRITE.CDEV.RTS *-------------------------------------- IO.OPEN.DSOCK *-------------------------------------- -IO.OPEN.SSOCK +IO.OPEN.SSOCK lda IO.hFD *-------------------------------------- IO.CLOSE.CDEV @@ -312,10 +207,12 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE >LDYA K.S.IOCTL+S.IOCTL.BYTECNT -.9 rts +.9 +IO.WRITE.CDEV.RTS + rts *-------------------------------------- IO.CLOSE.DSOCK -IO.CLOSE.SSOCK +IO.CLOSE.SSOCK ldy #S.FD.SSOCK.CLOSE .HS 2C BIT ABS *-------------------------------------- @@ -337,31 +234,6 @@ IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE lda IO.hFD .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 jmp SHARED.GetDevStatus *-------------------------------------- @@ -376,10 +248,10 @@ IO.MkFD stx .8+1 ldx #S.MEM.F.INIT0+S.MEM.F.FD jsr MEM.GetMem.YAX bcs .9 - + >STYA pFD stx IO.hFD - + .8 ldx #$ff SELF MODIFIED lda IO.MkFD.T,x 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.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 lda IO.hFD @@ -456,6 +295,16 @@ IO.CLOSE.NOD ldx #2 K.ChOwn clc 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 SAVE USR/SRC/SYS/KERNEL.S.UNISTD LOAD USR/SRC/SYS/KERNEL.S diff --git a/SYS/KERNEL.S.txt b/SYS/KERNEL.S.txt index d1f7d10d..6a271c10 100644 --- a/SYS/KERNEL.S.txt +++ b/SYS/KERNEL.S.txt @@ -78,6 +78,8 @@ A2osX.D1.B .PH $D000 .INB usr/src/sys/kernel.s.unistd .INB usr/src/sys/kernel.s.stdio .INB usr/src/sys/kernel.s.stdio2 + .INB usr/src/sys/kernel.s.dev + .INB usr/src/sys/kernel.s.pipe .EP A2osX.D1.S .EQ *-A2osX.D1.B @@ -116,8 +118,6 @@ A2osX.E0.B .PH $E000 .INB usr/src/sys/kernel.s.mem * go to A2osX.D1 - .INB usr/src/sys/kernel.s.pipe - .INB usr/src/sys/kernel.s.dev DevMgr.Timer .BS 1 DevMgr.Stat .DA DevMgr.FreeMem