diff --git a/.Docs/KERNEL.md b/.Docs/KERNEL.md index 0525cd40..1f014108 100644 --- a/.Docs/KERNEL.md +++ b/.Docs/KERNEL.md @@ -748,6 +748,22 @@ CC : success CS : error A = EC +# MKFIFO +return a pathname to a new FIFO + +## C +`int mkfifo( char *pathname, int mode );` + +## ASM +**In:** +`>PUSHW mode` +`>LDYA pathname` +`>SYSCALL mkfifo` + +## RETURN VALUE +CC = OK, CS = ERROR +A = hFD + # MkNod Create a special or ordinary file. (CDEV, BDEV, DSOCKS, SSOCK, PIPE) @@ -766,20 +782,6 @@ Create a special or ordinary file. CC = OK, CS = ERROR A = hFILE -# MKFIFO -return a hFILE to a new FIFO - -## C -`hFILE mkfifo();` - -## ASM -**In:** -`>SYSCALL mkfifo` - -## RETURN VALUE -CC = OK, CS = ERROR -A = hFILE - # pipe ## C diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 6a112eba..702f2fda 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/BIN/EDIT.S.BUF.txt b/BIN/EDIT.S.BUF.txt index 70a027c5..732c2c96 100644 --- a/BIN/EDIT.S.BUF.txt +++ b/BIN/EDIT.S.BUF.txt @@ -27,7 +27,7 @@ BUF.InsertClipboard bcs .9 >LDYA BUF.COffset - jsr BUF.CopyCount + jsr BUF.Start2YA jsr BUF.CopyClipboard @@ -65,7 +65,7 @@ BUF.InsertA sta TmpByte bcs .9 >LDYA BUF.COffset -.1 jsr BUF.CopyCount + jsr BUF.Start2YA .2 lda TmpByte sta (BufPtr) @@ -79,11 +79,11 @@ BUF.InsertA sta TmpByte clc adc #1 sta BufLen - bcc .8 + bcc .9 inc BufLen+1 -.8 clc + clc .9 rts *-------------------------------------- BUF.DelSel jsr BUF.GetSelLen @@ -104,7 +104,7 @@ BUF.DelSel jsr BUF.GetSelLen bcs .9 >LDYA.G SelStart - jsr BUF.CopyCount + jsr BUF.Start2YA lda BufPtrBackup clc @@ -139,7 +139,7 @@ BUF.DelCharAtCursor bcs .9 >LDYA BUF.COffset - jsr BUF.CopyCount + jsr BUF.Start2YA .3 lda (BufPtrBackup) pha Save deleted char for later @@ -265,21 +265,21 @@ BUF.CopyClipboard clc adc ClipboardPtr sta ClipboardPtr - bcc .4 + bcc BUF.CopyAddY inc ClipboardPtr+1 -.4 tya +BUF.CopyAddY tya clc adc BufPtr sta BufPtr - bcc .8 + bcc .2 inc BufPtr+1 -.8 rts +.2 rts *-------------------------------------- -BUF.CopyCount eor #$ff +BUF.Start2YA eor #$ff pha tya @@ -305,39 +305,30 @@ BUF.CopyCount eor #$ff inc BufPtrBackup+1 inc BufPtr+1 bra .1 - + .3 tya clc adc BufPtrBackup sta BufPtrBackup - bcc .4 + bcc BUF.CopyAddY inc BufPtrBackup+1 - -.4 tya - clc - adc BufPtr - sta BufPtr - bcc .8 - - inc BufPtr+1 - -.8 rts + bra BUF.CopyAddY *-------------------------------------- -BUF.CopyTail lda (BufPtrBackup) - sta (BufPtr) - beq .9 +BUF.CopyTail ldy #0 + +.1 lda (BufPtrBackup),y + sta (BufPtr),y + beq .8 - inc BufPtrBackup + iny bne .1 + inc BufPtrBackup+1 - -.1 inc BufPtr - bne BUF.CopyTail inc BufPtr+1 - bra BUF.CopyTail + bra .1 -.9 rts +.8 rts *-------------------------------------- * Out : Y = Line Length *-------------------------------------- diff --git a/SYS/KERNEL.S.IO.txt b/SYS/KERNEL.S.IO.txt index 93577346..73ec9bde 100644 --- a/SYS/KERNEL.S.IO.txt +++ b/SYS/KERNEL.S.IO.txt @@ -284,7 +284,6 @@ IO.CLOSE.PIPE ldy #S.FD.PIPE.S IO.CLOSE.FD lda (pFD),y beq .1 -* jsr K.FreeStkObj jsr K.Freemem .1 lda IO.hFD @@ -852,7 +851,9 @@ IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF * clc .9 rts *-------------------------------------- -IO.DEVDIR >PSTR "/DEV/" +IO.DEVDIR .DA #5 >PSTR "/DEV/" +*-------------------------------------- +STAT.FIFO .AZ "/DEV/FIFO%d" *-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.IO diff --git a/SYS/KERNEL.S.STAT.txt b/SYS/KERNEL.S.STAT.txt index 34288e96..701ce547 100644 --- a/SYS/KERNEL.S.STAT.txt +++ b/SYS/KERNEL.S.STAT.txt @@ -97,11 +97,8 @@ K.ChMod jsr PFT.CheckPathYA .3 stx K.MLI.PARAMS+S.FI.A >MLICALL MLISETFILEINFO - - clc rts - .9 lda #E.SYN sec .90 rts @@ -266,6 +263,7 @@ STAT.Access2Mode .7 lda #S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU rwxrwxrwx .8 ldy /S.STAT.MODE.RU ??????R?? +STAT.Access2Mode.RTS rts */------------------------------------- * # MKDir @@ -283,7 +281,7 @@ STAT.Access2Mode * A = EC *\------------------------------------- K.MKDir jsr PFT.CheckPathYA - bcs K.Stat.9 + bcs STAT.Access2Mode.RTS lda #S.FI.T.DIR sta K.MLI.PARAMS+4 @@ -292,6 +290,38 @@ K.MKDir jsr PFT.CheckPathYA lda #S.FI.ST.DIR jmp IO.MLI.CREATE */-------------------------------------- +* # MKFIFO +* return a pathname to a new FIFO +* ## C +* `int mkfifo( char *pathname, int mode );` +* ## ASM +* **In:** +* `>PUSHW mode` +* `>LDYA pathname` +* `>SYSCALL mkfifo` +* ## RETURN VALUE +* CC = OK, CS = ERROR +* A = hFD +*\-------------------------------------- +K.MKFIFO >STYA ZPPtr1 pathname buffer + >PULLW K.S.STAT+S.STAT.MODE + + >LDYAI 512 + jsr K.pipe + bcs STAT.Access2Mode.RTS + + sta K.S.STAT+S.STAT.DEV + + >PUSHA + >PUSHBI 1 + >PUSHWI STAT.FIFO + >LDYA ZPPtr1 + jsr K.sprintf + + lda #S.STAT.MODE.FIFO + sta K.S.STAT+S.STAT.DEV + bra K.MkNod.I +*/-------------------------------------- * # MkNod * Create a special or ordinary file. * (CDEV, BDEV, DSOCKS, SSOCK, PIPE) @@ -343,35 +373,6 @@ K.MkNod.I ldx #2 clc .9 rts */-------------------------------------- -* # MKFIFO -* return a hFILE to a new FIFO -* ## C -* `hFILE mkfifo();` -* ## ASM -* **In:** -* `>SYSCALL mkfifo` -* ## RETURN VALUE -* CC = OK, CS = ERROR -* A = hFILE -*\-------------------------------------- -K.MKFIFO -* jsr K.pipe -* bcs .9 - -* sta IO.hFD -* stz K.S.STAT+S.STAT.MODE -* stz K.S.STAT+S.STAT.MODE+1 - -* >LDYA STAT.PipeFn -* >STYA ZPPtr1 -* jsr K.MkNod.I -* bcc .9 - -* jmp IO.OPEN.ERR - sec - - rts -*/-------------------------------------- * # pipe * ## C * `hFD pipe(int size);` @@ -382,7 +383,8 @@ K.MKFIFO * CC = OK, CS = ERROR * A = hFD *\-------------------------------------- -K.Pipe >STYA ZPPtr1 +K.Pipe sta .1+1 SIZE HI + .DO AUXPIPE=1 jsr K.NewStkObj Buffer in AUX mem .ELSE @@ -390,7 +392,7 @@ K.Pipe >STYA ZPPtr1 .FIN bcs .99 - stx .1+1 save PIPE buffer + stx .8+1 save PIPE buffer >LDYAI S.FD.PIPE ldx #S.MEM.F.INIT0+S.MEM.F.FD @@ -403,29 +405,22 @@ K.Pipe >STYA ZPPtr1 lda #S.FD.T.PIPE sta (pFD) - ldy #S.FD.PIPE.Free - lda ZPPtr1 - sta (pFD),y - iny - lda ZPPtr1+1 +.1 lda #$ff SELF MODIFIED + ldy #S.FD.PIPE.Free+1 sta (pFD),y - ldy #S.FD.PIPE.Size - lda ZPPtr1 - sta (pFD),y - iny - lda ZPPtr1+1 + ldy #S.FD.PIPE.Size+1 sta (pFD),y ldy #S.FD.PIPE.hMem -.1 lda #$ff Self Modified +.8 lda #$ff Self Modified sta (pFD),y txa hFD * clc rts .9 pha save error code - lda .1+1 get back PIPE buffer + lda .8+1 get back PIPE buffer .DO AUXPIPE=1 jsr K.FreeStkObj .ELSE @@ -436,8 +431,6 @@ K.Pipe >STYA ZPPtr1 .99 rts *-------------------------------------- -*STAT.PipeFn .AZ "/DEV/PIPE00" -*-------------------------------------- MAN SAVE USR/SRC/SYS/KERNEL.S.STAT LOAD USR/SRC/SYS/KERNEL.S