From 31533e52d71b501c1771d2b459f5322aab9f76d8 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20GIBERT?= Date: Mon, 3 Jun 2019 17:50:41 +0200 Subject: [PATCH] Kernel 0.93 --- .Docs/KERNEL.md | 30 +++++++------ .Floppies/A2OSX.BUILD.po | Bin 33553920 -> 33553920 bytes BIN/EDIT.S.BUF.txt | 55 ++++++++++------------- SYS/KERNEL.S.IO.txt | 5 ++- SYS/KERNEL.S.STAT.txt | 91 ++++++++++++++++++--------------------- 5 files changed, 84 insertions(+), 97 deletions(-) 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 6a112eba7b62d2a04f94fd5bc5f04bec2964b5c4..702f2fda0274e36e71b83c9ad616bc01e8d88902 100644 GIT binary patch delta 20854 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 T0r(5>H{d4VAMPdG%We68(Ph_> delta 20717 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 Ofy=-@!i%(5*!2H;QaLDYA 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