Kernel 0.93

This commit is contained in:
Rémy GIBERT 2019-06-03 17:50:41 +02:00
parent e32d4679f6
commit 31533e52d7
5 changed files with 84 additions and 97 deletions

View File

@ -748,6 +748,22 @@ CC : success
CS : error CS : error
A = EC 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 # MkNod
Create a special or ordinary file. Create a special or ordinary file.
(CDEV, BDEV, DSOCKS, SSOCK, PIPE) (CDEV, BDEV, DSOCKS, SSOCK, PIPE)
@ -766,20 +782,6 @@ Create a special or ordinary file.
CC = OK, CS = ERROR CC = OK, CS = ERROR
A = hFILE 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 # pipe
## C ## C

Binary file not shown.

View File

@ -27,7 +27,7 @@ BUF.InsertClipboard
bcs .9 bcs .9
>LDYA BUF.COffset >LDYA BUF.COffset
jsr BUF.CopyCount jsr BUF.Start2YA
jsr BUF.CopyClipboard jsr BUF.CopyClipboard
@ -65,7 +65,7 @@ BUF.InsertA sta TmpByte
bcs .9 bcs .9
>LDYA BUF.COffset >LDYA BUF.COffset
.1 jsr BUF.CopyCount jsr BUF.Start2YA
.2 lda TmpByte .2 lda TmpByte
sta (BufPtr) sta (BufPtr)
@ -79,11 +79,11 @@ BUF.InsertA sta TmpByte
clc clc
adc #1 adc #1
sta BufLen sta BufLen
bcc .8 bcc .9
inc BufLen+1 inc BufLen+1
.8 clc clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
BUF.DelSel jsr BUF.GetSelLen BUF.DelSel jsr BUF.GetSelLen
@ -104,7 +104,7 @@ BUF.DelSel jsr BUF.GetSelLen
bcs .9 bcs .9
>LDYA.G SelStart >LDYA.G SelStart
jsr BUF.CopyCount jsr BUF.Start2YA
lda BufPtrBackup lda BufPtrBackup
clc clc
@ -139,7 +139,7 @@ BUF.DelCharAtCursor
bcs .9 bcs .9
>LDYA BUF.COffset >LDYA BUF.COffset
jsr BUF.CopyCount jsr BUF.Start2YA
.3 lda (BufPtrBackup) .3 lda (BufPtrBackup)
pha Save deleted char for later pha Save deleted char for later
@ -265,21 +265,21 @@ BUF.CopyClipboard
clc clc
adc ClipboardPtr adc ClipboardPtr
sta ClipboardPtr sta ClipboardPtr
bcc .4 bcc BUF.CopyAddY
inc ClipboardPtr+1 inc ClipboardPtr+1
.4 tya BUF.CopyAddY tya
clc clc
adc BufPtr adc BufPtr
sta BufPtr sta BufPtr
bcc .8 bcc .2
inc BufPtr+1 inc BufPtr+1
.8 rts .2 rts
*-------------------------------------- *--------------------------------------
BUF.CopyCount eor #$ff BUF.Start2YA eor #$ff
pha pha
tya tya
@ -305,39 +305,30 @@ BUF.CopyCount eor #$ff
inc BufPtrBackup+1 inc BufPtrBackup+1
inc BufPtr+1 inc BufPtr+1
bra .1 bra .1
.3 tya .3 tya
clc clc
adc BufPtrBackup adc BufPtrBackup
sta BufPtrBackup sta BufPtrBackup
bcc .4 bcc BUF.CopyAddY
inc BufPtrBackup+1 inc BufPtrBackup+1
bra BUF.CopyAddY
.4 tya
clc
adc BufPtr
sta BufPtr
bcc .8
inc BufPtr+1
.8 rts
*-------------------------------------- *--------------------------------------
BUF.CopyTail lda (BufPtrBackup) BUF.CopyTail ldy #0
sta (BufPtr)
beq .9 .1 lda (BufPtrBackup),y
sta (BufPtr),y
beq .8
inc BufPtrBackup iny
bne .1 bne .1
inc BufPtrBackup+1 inc BufPtrBackup+1
.1 inc BufPtr
bne BUF.CopyTail
inc BufPtr+1 inc BufPtr+1
bra BUF.CopyTail bra .1
.9 rts .8 rts
*-------------------------------------- *--------------------------------------
* Out : Y = Line Length * Out : Y = Line Length
*-------------------------------------- *--------------------------------------

View File

@ -284,7 +284,6 @@ IO.CLOSE.PIPE ldy #S.FD.PIPE.S
IO.CLOSE.FD lda (pFD),y IO.CLOSE.FD lda (pFD),y
beq .1 beq .1
* jsr K.FreeStkObj
jsr K.Freemem jsr K.Freemem
.1 lda IO.hFD .1 lda IO.hFD
@ -852,7 +851,9 @@ IO.MLIOPEN >LDYAI 1024 get a ProDOS IOBUF
* clc * clc
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
IO.DEVDIR >PSTR "/DEV/" IO.DEVDIR .DA #5 >PSTR "/DEV/"
*--------------------------------------
STAT.FIFO .AZ "/DEV/FIFO%d"
*-------------------------------------- *--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.IO SAVE USR/SRC/SYS/KERNEL.S.IO

View File

@ -97,11 +97,8 @@ K.ChMod jsr PFT.CheckPathYA
.3 stx K.MLI.PARAMS+S.FI.A .3 stx K.MLI.PARAMS+S.FI.A
>MLICALL MLISETFILEINFO >MLICALL MLISETFILEINFO
clc
rts rts
.9 lda #E.SYN .9 lda #E.SYN
sec sec
.90 rts .90 rts
@ -266,6 +263,7 @@ STAT.Access2Mode
.7 lda #S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU rwxrwxrwx .7 lda #S.STAT.MODE.FO+S.STAT.MODE.FG+S.STAT.MODE.FU rwxrwxrwx
.8 ldy /S.STAT.MODE.RU ??????R?? .8 ldy /S.STAT.MODE.RU ??????R??
STAT.Access2Mode.RTS
rts rts
*/------------------------------------- */-------------------------------------
* # MKDir * # MKDir
@ -283,7 +281,7 @@ STAT.Access2Mode
* A = EC * A = EC
*\------------------------------------- *\-------------------------------------
K.MKDir jsr PFT.CheckPathYA K.MKDir jsr PFT.CheckPathYA
bcs K.Stat.9 bcs STAT.Access2Mode.RTS
lda #S.FI.T.DIR lda #S.FI.T.DIR
sta K.MLI.PARAMS+4 sta K.MLI.PARAMS+4
@ -292,6 +290,38 @@ K.MKDir jsr PFT.CheckPathYA
lda #S.FI.ST.DIR lda #S.FI.ST.DIR
jmp IO.MLI.CREATE 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 * # MkNod
* Create a special or ordinary file. * Create a special or ordinary file.
* (CDEV, BDEV, DSOCKS, SSOCK, PIPE) * (CDEV, BDEV, DSOCKS, SSOCK, PIPE)
@ -343,35 +373,6 @@ K.MkNod.I ldx #2
clc clc
.9 rts .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 * # pipe
* ## C * ## C
* `hFD pipe(int size);` * `hFD pipe(int size);`
@ -382,7 +383,8 @@ K.MKFIFO
* CC = OK, CS = ERROR * CC = OK, CS = ERROR
* A = hFD * A = hFD
*\-------------------------------------- *\--------------------------------------
K.Pipe >STYA ZPPtr1 K.Pipe sta .1+1 SIZE HI
.DO AUXPIPE=1 .DO AUXPIPE=1
jsr K.NewStkObj Buffer in AUX mem jsr K.NewStkObj Buffer in AUX mem
.ELSE .ELSE
@ -390,7 +392,7 @@ K.Pipe >STYA ZPPtr1
.FIN .FIN
bcs .99 bcs .99
stx .1+1 save PIPE buffer stx .8+1 save PIPE buffer
>LDYAI S.FD.PIPE >LDYAI S.FD.PIPE
ldx #S.MEM.F.INIT0+S.MEM.F.FD ldx #S.MEM.F.INIT0+S.MEM.F.FD
@ -403,29 +405,22 @@ K.Pipe >STYA ZPPtr1
lda #S.FD.T.PIPE lda #S.FD.T.PIPE
sta (pFD) sta (pFD)
ldy #S.FD.PIPE.Free .1 lda #$ff SELF MODIFIED
lda ZPPtr1 ldy #S.FD.PIPE.Free+1
sta (pFD),y
iny
lda ZPPtr1+1
sta (pFD),y sta (pFD),y
ldy #S.FD.PIPE.Size ldy #S.FD.PIPE.Size+1
lda ZPPtr1
sta (pFD),y
iny
lda ZPPtr1+1
sta (pFD),y sta (pFD),y
ldy #S.FD.PIPE.hMem ldy #S.FD.PIPE.hMem
.1 lda #$ff Self Modified .8 lda #$ff Self Modified
sta (pFD),y sta (pFD),y
txa hFD txa hFD
* clc * clc
rts rts
.9 pha save error code .9 pha save error code
lda .1+1 get back PIPE buffer lda .8+1 get back PIPE buffer
.DO AUXPIPE=1 .DO AUXPIPE=1
jsr K.FreeStkObj jsr K.FreeStkObj
.ELSE .ELSE
@ -436,8 +431,6 @@ K.Pipe >STYA ZPPtr1
.99 rts .99 rts
*-------------------------------------- *--------------------------------------
*STAT.PipeFn .AZ "/DEV/PIPE00"
*--------------------------------------
MAN MAN
SAVE USR/SRC/SYS/KERNEL.S.STAT SAVE USR/SRC/SYS/KERNEL.S.STAT
LOAD USR/SRC/SYS/KERNEL.S LOAD USR/SRC/SYS/KERNEL.S