Kernel 0.92+

This commit is contained in:
Rémy GIBERT 2019-02-15 16:38:17 +00:00
parent b27bf6eb51
commit 8aabef1410
8 changed files with 180 additions and 85 deletions

Binary file not shown.

View File

@ -103,7 +103,9 @@ CS.RUN lda #1
sec
rts
*--------------------------------------
CS.RUN.DUMP lda PS.Table.hPS,x
CS.RUN.DUMP phx
lda PS.Table.hPS,x
>SYSCALL GetMemPtr
>STYA ZPPSPtr
@ -119,8 +121,7 @@ CS.RUN.DUMP lda PS.Table.hPS,x
>PUSHEA.G PS.FLAGS
>LDA.G PS.Index
tax
plx
lda PS.Table.Stats,x
>PUSHA CPU%

View File

@ -87,7 +87,7 @@ CMD.CD.1
bcs CMD.POPD.RTS
>STYA ZPPtr1
stx ZPPtr3 Save hMem
stx TmpByte Save hMem
ldy #1
lda (ZPPtr1),y
@ -109,7 +109,7 @@ CMD.CD.1
lda #MLI.E.INVPATH
.19 pha
lda ZPPtr3
lda TmpByte
>SYSCALL freemem
pla
sec
@ -126,7 +126,7 @@ CMD.CD.1
cmp #'/'
bne .14
lda ZPPtr3
lda TmpByte
jmp CMD.SetPrefixA already ends with a /
.14 iny
@ -149,7 +149,7 @@ CMD.CD.1
lda #'/'
sta (ZPPtr2),y
phx
lda ZPPtr3
lda TmpByte
>SYSCALL freemem
pla
*--------------------------------------
@ -261,6 +261,9 @@ CMD.SET.1
jsr CORE.ArgV.Next
beq CMD.SET.UNSET
cmp #'`'
beq CMD.SET.EXEC
jsr EXP.GET
bcs .99
@ -293,6 +296,24 @@ CMD.SET.PRINT >PUSHBI 4
>SYSCALL printf
rts
*--------------------------------------
CMD.SET.EXEC jsr CORE.ArgV.NextChar skip "`"
jsr IO.Pipe.Out
bcs .9
>PUSHBI S.PS.F.DUPENV
>LDYA ZPArgVBufPtr
>SYSCALL execl
bcs .9
jsr IO.Pipe.In
bcs .9
lda #$ff
>STA.G bReadMode
.9 rts
*--------------------------------------
CMD.DATE sec
.HS 90 bcc
CMD.TIME clc
@ -316,7 +337,7 @@ CMD.TIME clc
rts
*--------------------------------------
CMD.ECHO stz ZPPtr1 echo -N
stz ZPPtr1+1
stz ZPPtr1+1 Token Cnt
lda (ZPArgVBufPtr)
beq .8
@ -412,15 +433,17 @@ CMD.READ lda (ZPArgVBufPtr)
bra .7
.4 >STYA ZPVarNamePtr
>SYSCALL strdup
txa
>STA.G hVarName
>LDA.G bReadMode
bne .9
lda #$ff
>STA.G bReadMode
.7 jsr CORE.ArgV.Next
lda (ZPArgVBufPtr)
bne .1
>LDA.G hVarName
>LDA.G bReadMode
beq .9
clc
.99 rts

View File

@ -171,15 +171,16 @@ CORE.ExecCmd.1 lda #0
>LDA.G CORE.IntCmd
bmi CORE.ExecExtCmd
tax
jmp (J.CMD,x)
.8 clc
rts
CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
>LDYA ZPArgVBuf
>LDYA ZPArgVBuf
>SYSCALL execv
CORE.ExecExtCmd.Exit
bcs .9
tax CPID
@ -275,33 +276,35 @@ CORE.Lookup >STYA ZPPtr2
CORE.ArgV.Add >LDYA ZPArgVBufPtr
>STYA ZPArgVBufPrev Save String start of Expand
lda #C.SPACE
sta TmpByte
jsr CORE.GetCharNB
bcs .9
ldx #0 reset "" mode
.1 cmp #'"'
bne .2
txa
eor #$ff toggle "" mode
tax
bra .4
cmp #'"'
bne .10
sta TmpByte
bra .1
.2 cmp #C.SPACE
bne .3
txa between "" ?
beq .5 no...exit
lda #C.SPACE
bra .31
.10 cmp #'`'
bne .11
sta TmpByte
.3 jsr CORE.IsEndCmd
.11 jsr CORE.ArgV.PutChar
.1 jsr CORE.GetNextChar
bcs .5
.2 jsr CORE.IsEndCmd
bcc .5
cmp TmpByte
beq .5
.31 jsr CORE.ArgV.PutChar
jsr CORE.ArgV.PutChar
.4 jsr CORE.GetNextChar
bcc .1
bcc .2
.5 lda #0
jsr CORE.ArgV.PutChar
@ -317,11 +320,11 @@ CORE.ArgV.Add >LDYA ZPArgVBufPtr
ldy #$ff
.6 iny
.7 iny
lda (ZPPtr1),y
jsr CORE.ArgV.PutChar
lda (ZPPtr1),y
bne .6
bne .7
pla
>SYSCALL freemem

View File

@ -8,15 +8,13 @@ IO.Reset jsr IO.Reset.In
jsr IO.Reset.Err
rts
*--------------------------------------
IO.Pipe.In clc
rts
*--------------------------------------
IO.Pipe.Out >SYSCALL pipe
bcs .9
IO.Pipe.In ldy #S.PS.hStdOut
lda (pPS),y
pha
clc
.9 rts
jsr IO.Reset.Out
pla
*--------------------------------------
IO.Set.In pha
jsr IO.Reset.In
@ -42,7 +40,31 @@ IO.Reset.In >LDA.G IO.hIn
sta (pPS),y
>STZ.G IO.hIn
.8 rts
.8 clc
IO.Reset.In.RTS rts
*--------------------------------------
IO.Pipe.Out >SYSCALL pipe
bcs IO.Reset.In.RTS
>STA.G IO.hPipe
>PUSHA
>PUSHBI 1
>PUSHW L.NOD.Template
>LEA.G IO.NodBuf
>SYSCALL sprintf
>PUSHB.G IO.hPipe
>PUSHW 0
>LEA.G IO.NodBuf
>SYSCALL mknod
bcc IO.Set.Out
pha
>LDA.G IO.hPipe
>SYSCALL close
pla
dec
rts
*--------------------------------------
IO.Set.Out pha
jsr IO.Reset.Out

View File

@ -57,9 +57,6 @@ E.BADFTYPE .EQ $C8
.DUMMY
.OR ZPBIN
ZS.START
ZPPtr1 .BS 2
ZPPtr2 .BS 2
ZPPtr3 .BS 2
ZPCLBuf .BS 2
ZPInputBuf .BS 2
ZPInputBufPtr .BS 2
@ -68,6 +65,9 @@ ZPArgVBuf .BS 2
ZPArgVBufPrev .BS 2
ZPArgVBufPtr .BS 2
ZPVarNamePtr .BS 2
ZPPtr1 .BS 2
ZPPtr2 .BS 2
TmpByte .BS 1
ZS.END .ED
*--------------------------------------
* File Header (16 Bytes)
@ -166,6 +166,7 @@ L.HOME.PROFILE .DA HOME.PROFILE
L.M32.Printf .DA M32.Printf
L.ERR.Codes .DA ERR.Codes
L.ERR.Messages .DA ERR.Messages
L.NOD.Template .DA NOD.Template
.DA 0
*--------------------------------------
CS.INIT clc
@ -221,7 +222,7 @@ CS.RUN jsr CL.Init
>SYSCALL execl
>SLEEP
*--------------------------------------
CS.RUN.LOOP jsr IO.Reset
CS.RUN.LOOP
.1 jsr CheckSleep
beq .3
@ -270,7 +271,7 @@ CS.RUN.LOOP jsr IO.Reset
.61 >STZ.G bPause
bra .62
.6 >LDA.G hVarName read mode ?
.6 >LDA.G bReadMode read mode ?
bne .7
.62 >LDA.G bBatchMode batch mode ?
@ -283,6 +284,7 @@ CS.RUN.LOOP jsr IO.Reset
rts
*--------------------------------------
CS.RUN.INTERACTIVE
jsr IO.Reset
jsr CL.Reset
jsr CL.PrintPrompt
bcs .9
@ -335,24 +337,19 @@ CS.RUN.READ jsr CL.RESET
lda (ZPCLBuf)
bne .2
>LDA.G hVarName
>SYSCALL GetMemPtr
>LDYA ZPVarNamePtr
>SYSCALL UnSetEnv
bra .7
.2 >PUSHW ZPCLBuf
>LDA.G hVarName
>SYSCALL GetMemPtr
>LDYA ZPVarNamePtr
>SYSCALL SetEnv
.7 php
pha
>LDA.G hVarName
>SYSCALL freemem
>STZ.G hVarName
>STZ.G bReadMode
>STA.G bREAD.S
pla
@ -360,7 +357,9 @@ CS.RUN.READ jsr CL.RESET
.8 jmp CS.RUN.LOOP.END
*--------------------------------------
CS.RUN.BATCH >SYSCALL GetChar
CS.RUN.BATCH jsr IO.Reset
>SYSCALL GetChar
bcs .2
cmp #3 test Ctrl-c
@ -618,6 +617,7 @@ EXP.OP.MATH .AZ "+"
*--------------------------------------
EscChars .AS 'DBAC'
EscChars.Cnt .EQ *-EscChars
NOD.Template .AZ "/DEV/PIPE%h"
M32.Printf .AZ "%L"
*--------------------------------------
.DUMMY
@ -626,9 +626,9 @@ DS.START
CORE.STACK .BS CORE.STACK.MAX+1 pData (0 = Stack Ptr)
PUSHD.STACK .BS PUSHD.STACK.MAX+1
hInputBuf .BS 1 batch mode
hVarName .BS 1 read mode
hInputBuf .BS 1
bReadMode .BS 1
bBatchMode .BS 1
bEscMode .BS 1
@ -664,6 +664,9 @@ HIS.Index .BS 1
IO.hIn .BS 1
IO.hOut .BS 1
IO.hErr .BS 1
IO.hPipe .BS 1
IO.NodBuf
* .BS 12 /DEV/PIPExx\0
*--------------------------------------
M32.BUF .BS 12 -1234567890\0
M32.ACC .BS 4

View File

@ -361,62 +361,87 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ
.1 jmp $FFFF SELF MODIFIED
*--------------------------------------
IO.READ.PIPE >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
IO.READ.PIPE >PULLW .3+1 S.IOCTL.BUFPTR
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
ldy #S.FD.PIPE.S
lda (pFD),y
bit #S.FD.PIPE.S.WOpened
beq .9 Remote PS did not opened yet the pipe
bit #S.FD.PIPE.S.WClosed
beq .99 Remote PS closed the Pipe
* ldy #S.FD.PIPE.S
* lda (pFD),y
* bit #S.FD.PIPE.S.WOpened
* beq .9 Remote PS did not opened yet the pipe
* bit #S.FD.PIPE.S.WClosed
* beq .99 Remote PS closed the Pipe
ldy #S.FD.PIPE.hMem
lda (pFD),y
jsr K.GetMemPtr
>STYA .2+1
ldx #0
.1 ldy #S.FD.PIPE.Tail
lda (pFD),y
iny #S.FD.PIPE.Head
cmp (pFD),y
beq .9 PIPE is empty
.2 lda $ffff,x SELF MODIFIED
.3 sta $ffff,x SELF MODIFIED
inx
bne .1
clc
rts
.9 lda #MLI.E.VOLFULL
.9 lda #0
sec
rts
.99 lda #MLI.E.EOF
sec
rts
*--------------------------------------
IO.WRITE.PIPE >PULLW K.S.IOCTL+S.IOCTL.BUFPTR
IO.WRITE.PIPE >PULLW .2+1 S.IOCTL.BUFPTR
>PULLW K.S.IOCTL+S.IOCTL.BYTECNT
ldy #S.FD.PIPE.S
lda (pFD),y
bit #S.FD.PIPE.S.ROpened
beq .9 Remote PS did not opened yet the pipe
bit #S.FD.PIPE.S.RClosed
beq .99 Remote PS closed the Pipe
* ldy #S.FD.PIPE.S
* lda (pFD),y
* bit #S.FD.PIPE.S.ROpened
* beq .9 Remote PS did not opened yet the pipe
* bit #S.FD.PIPE.S.RClosed
* beq .99 Remote PS closed the Pipe
ldy #S.FD.PIPE.hMem
lda (pFD),y
jsr K.GetMemPtr
>STYA .1+2
>STYA .3+1
ldy #S.FD.PIPE.Head
ldx #0
.1 ldy #S.FD.PIPE.Head
lda (pFD),y
inc
dey #S.FD.PIPE.Tail
cmp (pFD),y
beq .9 PIPE is full
iny
sta (pFD),y
tay
lda K.IOBuf
.1 sta $ffff,y
clc
.2 lda $ffff,x SELF MODIFIED
.3 sta $ffff,x SELF MODIFIED
inx
bne .1
.8 clc
rts
.9 lda #MLI.E.VOLFULL
sec
rts
.99 lda #MLI.E.EOF
sec
rts

View File

@ -210,7 +210,7 @@ K.MkNod >STYA ZPPtr1 pathname
>PULLW K.S.STAT+S.STAT.MODE
>PULLB K.S.STAT+S.STAT.DEV
ldx #0
K.MkNod.I ldx #0
.1 lda Nod.Table.hFD,x
beq .2
@ -243,17 +243,33 @@ K.MkNod >STYA ZPPtr1 pathname
* # MKFIFO
* return a hFILE to a new FIFO
* ## C
* `hFILE mkfifo(const char *pathname, int mode);`
* `hFILE mkfifo();`
* ## ASM
* **In:**
* `>PUSHW mode`
* `>LDYA pathname`
* `>SYSCALL mkfifo`
* ## RETURN VALUE
* CC = OK, CS = ERROR
* A = hFILE
*\--------------------------------------
K.MKFIFO sec
K.MKFIFO
* jsr K.pipe
* bcs .9
* sta K.S.STAT+S.STAT.DEV
* 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
* pha
* lda K.S.STAT+S.STAT.DEV
* jsr K.Close
* pla
sec
rts
*/--------------------------------------
* # pipe
@ -287,7 +303,7 @@ K.Pipe >LDYAI K.PIPE.SIZE
.1 lda #$ff Self Modified
sta (pFD),y
txa
clc
* clc
rts
.9 pha save error code
@ -298,6 +314,8 @@ K.Pipe >LDYAI K.PIPE.SIZE
.99 rts
*--------------------------------------
*STAT.PipeFn .AZ "/DEV/PIPE00"
*--------------------------------------
MAN
SAVE USR/SRC/SYS/KERNEL.S.STAT
LOAD USR/SRC/SYS/KERNEL.S