Kernel 0.92+

This commit is contained in:
Rémy GIBERT 2019-03-02 20:47:58 +00:00
parent d8d9c8c039
commit 9653f369c5
10 changed files with 160 additions and 150 deletions

Binary file not shown.

View File

@ -120,14 +120,39 @@ CORE.Run >LDYA ZPInputBufPtr Save Actual cmd for looping
.4 >LDYA L.CMD internal command ? .4 >LDYA L.CMD internal command ?
jsr CORE.LookupInputBuf jsr CORE.LookupInputBuf
bcs .6 no...assume external...no IO token Expected bcc .41
jsr CORE.SkipCharsA jsr CORE.ArgV.Add
bra .42
.41 jsr CORE.SkipCharsA
txa txa
>STA.G CORE.IntCmd >STA.G CORE.IntCmd
bra .7 internal, do not add token
cpx #C.FOR
bcs .7 FOR...FI : always execute
.42 jsr CORE.StkGet IF,WHILE,FOR ?
bcs .7 no particular context, exec...
and #$C0
cmp #$C0
beq .7 context/parent context is TRUE, exec
.43 jsr CORE.GetNextCharNB
bcs .44 EOF
cmp #C.CR
beq .44
cmp #';' TODO ";"
bne .43
.44 jsr CORE.GetNextCharNB Skip EoL char
clc
rts
.5 >LDYA L.CORE.IO .5 >LDYA L.CORE.IO
jsr CORE.LookupInputBuf jsr CORE.LookupInputBuf
bcs .6 bcs .6
@ -165,32 +190,13 @@ CORE.ExecCmd jsr CORE.GetNextCharNB Skip EoL char
CORE.ExecCmd.1 lda #0 CORE.ExecCmd.1 lda #0
sta (ZPArgVBufPtr) sta (ZPArgVBufPtr)
jsr CORE.StkGet IF,WHILE,FOR ? >LDYA ZPArgVBuf
bcs .3 no particular context, exec...
tax
>LDA.G CORE.IntCmd
bmi .2 external ...
and #$3F
cmp #C.FOR
bcs .3 FOR...FI : always execute
.2 txa
bpl .8 context is FALSE, skip line
asl
bpl .8 parent context is FALSE, skip line
.3 >LDYA ZPArgVBuf
>STYA ZPArgVBufPtr >STYA ZPArgVBufPtr
>LDA.G CORE.IntCmd >LDA.G CORE.IntCmd
bmi CORE.ExecExtCmd bmi CORE.ExecExtCmd
tax tax
jmp (J.CMD,x) jmp (J.CMD,x)
.8 clc
rts
CORE.ExecExtCmd >PUSHB.G CORE.PSFlags CORE.ExecExtCmd >PUSHB.G CORE.PSFlags
>LDYA ZPArgVBuf >LDYA ZPArgVBuf

View File

@ -457,7 +457,7 @@ S.FD.DSOCK.OPEN .EQ 3
S.FD.DSOCK.CLOSE .EQ 4 S.FD.DSOCK.CLOSE .EQ 4
S.FD.DSOCK.READ .EQ 5 S.FD.DSOCK.READ .EQ 5
S.FD.DSOCK.WRITE .EQ 6 S.FD.DSOCK.WRITE .EQ 6
S.FD.DSOCK.STATUS .EQ 7 S.FD.DSOCK.EOF .EQ 7
* *
S.FD.DSOCK .EQ 8 S.FD.DSOCK .EQ 8
*-------------------------------------- *--------------------------------------

View File

@ -382,44 +382,22 @@ SKT.shutdown.STREAM
* `>PUSHWI count` * `>PUSHWI count`
* `>PUSHW buf` * `>PUSHW buf`
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.read` * `>LIBCALL hLIBTCPIP,LIBTCPIP.read`
* ## RETURN VALUE * ## RETURN VALUE
* CC: Y,A = bytes read * CC: Y,A = bytes read
* CS: A = EC * CS: A = EC
*\-------------------------------------- *\--------------------------------------
SKT.Read jsr SKT.PullhFDDataInPtrLen SKT.Read jsr SKT.PullhFDDataInPtrLen
ldy #S.SOCKET.T jsr SKT.EOF.I
lda (ZPPtrSKT),y bcs .9 I/O error
cmp #S.SOCKET.T.STREAM
bne .90 bad skt
ldy #S.SOCKET.O tay
lda (ZPPtrSKT),y beq .9 exit with CC,Y,A = 0
and #S.SOCKET.O.ACCEPTCONN
bne .90 Bad Skt jmp SKT.GetDataFromSktIn
ldy #S.SOCKET.TCP.S .9 rts
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.ESTBLSH
bcc .92 Not yet established...no data
cmp #S.SOCKET.TCP.S.FINWT2
bcs .91 closing...IO err
jsr SKT.GetDataFromSktIn
rts if CS, No data...
.90 lda #ERR.SKT.BAD
sec
rts
.91 lda #MLI.E.IO
sec
rts
.92 lda #0
sec
.99 rts
*/-------------------------------------- */--------------------------------------
* # Write (STREAM) * # Write (STREAM)
* ## C * ## C
@ -429,28 +407,15 @@ SKT.Read jsr SKT.PullhFDDataInPtrLen
* `>PUSHWI count` * `>PUSHWI count`
* `>PUSHW buf` * `>PUSHW buf`
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.write` * `>LIBCALL hLIBTCPIP,LIBTCPIP.write`
* ## RETURN VALUE * ## RETURN VALUE
* CC: Y,A = bytes written * CC: Y,A = bytes written
* CS: A = EC * CS: A = EC
*\-------------------------------------- *\--------------------------------------
SKT.Write jsr SKT.PullhFDDataInPtrLen SKT.Write jsr SKT.PullhFDDataInPtrLen
ldy #S.SOCKET.T jsr SKT.CheckStream
lda (ZPPtrSKT),y bcs .9
cmp #S.SOCKET.T.STREAM
bne .99
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.O.ACCEPTCONN
bne .99
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.S.ESTBLSH
bcc .90 Not yet established...no data
bne .91
jsr SKT.AddDataToSktOut will call SKT.GetTCB jsr SKT.AddDataToSktOut will call SKT.GetTCB
bcs .90 bcs .90
@ -461,15 +426,7 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen
.90 lda #0 no data transfered .90 lda #0 no data transfered
sec sec
rts .9 rts
.91 lda #MLI.E.IO
sec
rts
.99 lda #ERR.SKT.BAD
sec
rts
*/-------------------------------------- */--------------------------------------
* # Recv (RAW,DGRAM,SEQPACKET) * # Recv (RAW,DGRAM,SEQPACKET)
* # RecvFrom (RAW,DGRAM,SEQPACKET) * # RecvFrom (RAW,DGRAM,SEQPACKET)
@ -480,7 +437,7 @@ SKT.Write jsr SKT.PullhFDDataInPtrLen
* **In:** * **In:**
* `>PUSHW addr` (RecvFrom) * `>PUSHW addr` (RecvFrom)
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.Recv` * `>LIBCALL hLIBTCPIP,LIBTCPIP.Recv`
* ## RETURN VALUE * ## RETURN VALUE
* CC: A = hMem * CC: A = hMem
* CS: A = EC * CS: A = EC
@ -589,7 +546,7 @@ SKT.Recv clc
* `>PUSHWI count` * `>PUSHWI count`
* `>PUSHW buf` * `>PUSHW buf`
* `lda fd` * `lda fd`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.send` * `>LIBCALL hLIBTCPIP,LIBTCPIP.send`
* ## RETURN VALUE * ## RETURN VALUE
* CC: Y,A = bytes written * CC: Y,A = bytes written
* CS: A = EC * CS: A = EC
@ -669,15 +626,47 @@ SKT.setsockopt >SYSCALL GetMemPtr
sta (ZPPtrSKT),y sta (ZPPtrSKT),y
* clc * clc
rts rts
*-------------------------------------- *--------------------------------------
SKT.EOF >SYSCALL GetMemPtr SKT.EOF >SYSCALL GetMemPtr
>STYA ZPPtrSKT >STYA ZPPtrSKT
ldy #S.SOCKET.TCP.INUSED SKT.EOF.I ldy #S.SOCKET.TCP.INUSED
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
iny iny
ora (ZPPtrSKT),y ora (ZPPtrSKT),y
clc bne .8
jsr SKT.CheckStream
bcs .9
lda #0 no DATA
.8 clc
.9 rts
*--------------------------------------
SKT.CheckStream ldy #S.SOCKET.T
lda (ZPPtrSKT),y
cmp #S.SOCKET.T.STREAM
bne .99
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.O.ACCEPTCONN
bne .99
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
beq .91
cmp #S.SOCKET.TCP.S.CLWAIT
bcs .91
rts CC=ESTBLSH...or less
.91 lda #MLI.E.IO
sec
rts
.99 lda #ERR.SKT.BAD
sec
rts rts
*/-------------------------------------- */--------------------------------------
* # GetTable * # GetTable
@ -957,13 +946,8 @@ SKT.AddDataToSktIn
*-------------------------------------- *--------------------------------------
SKT.GetDataFromSktIn SKT.GetDataFromSktIn
jsr SKT.GetTCB jsr SKT.GetTCB
lda SKT.Cache+S.SOCKET.TCP.INUSED
ora SKT.Cache+S.SOCKET.TCP.INUSED+1 ldy #S.SOCKET.SQ.hInMem
bne .10
sec
rts A=0,NO DATA
.10 ldy #S.SOCKET.SQ.hInMem
lda (ZPPtrSKT),y lda (ZPPtrSKT),y
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base >STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
@ -1042,11 +1026,7 @@ SKT.GetDataFromSktIn
.7 pla discard byte counter HI .7 pla discard byte counter HI
.8 lda ZPTmpPtr3 Do we have transfered something? .8 >ADC16 SKT.Cache+S.SOCKET.TCP.INFREE,ZPTmpPtr3
ora ZPTmpPtr3+1
beq .9
>ADC16 SKT.Cache+S.SOCKET.TCP.INFREE,ZPTmpPtr3
>SBC16 SKT.Cache+S.SOCKET.TCP.INUSED,ZPTmpPtr3 >SBC16 SKT.Cache+S.SOCKET.TCP.INUSED,ZPTmpPtr3
lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM+3 lda SKT.Cache+S.SOCKET.TCP.OUTACKNUM+3
@ -1074,10 +1054,6 @@ SKT.GetDataFromSktIn
>LDYA ZPTmpPtr3 >LDYA ZPTmpPtr3
clc clc
rts rts
.9
* lda #0
sec
rts
*-------------------------------------- *--------------------------------------
* From SKT.Write.TCP * From SKT.Write.TCP
* Src : ZPDataInPtr/ZPDataInLen * Src : ZPDataInPtr/ZPDataInLen

View File

@ -117,17 +117,7 @@ CS.RUN.LOOP0 >LDYA L.ENV.TERM
ldy #S.PS.hStdOut ldy #S.PS.hStdOut
lda (pPs),y lda (pPs),y
>SYSCALL fwrite >SYSCALL fwrite
bcs .9 I/O error bcs CS.RUN.EXIT I/O error
.2 >LDA.G ArgDev
>SYSCALL ArgV
>PUSHYA
>PUSHWI K.VER
>PUSHBI 4
>LDYA L.MSG.GREETINGS
>SYSCALL printf
.9 bcs CS.RUN.9 unable to send greetings...reset..
jsr Init.Timeout jsr Init.Timeout
@ -148,23 +138,32 @@ CS.RUN.LOOP1 >SLEEP
cmp #IAC cmp #IAC
beq CS.RUN.IACMODE beq CS.RUN.IACMODE
>SYSCALL PutChar >SYSCALL PutChar
bcc .2 bcs CS.RUN.EXIT
bra CS.RUN.LOOP1 bra CS.RUN.LOOP1
.1 jsr Wait.Timeout .1 jsr Wait.Timeout
bcc CS.RUN.LOOP1 bcc CS.RUN.LOOP1
>LDA.G ArgDev
>SYSCALL ArgV
>PUSHYA
>PUSHWI K.VER
>PUSHBI 4
>LDYA L.MSG.GREETINGS
>SYSCALL printf
bcs CS.RUN.EXIT unable to send greetings...
.2 >PUSHBI S.PS.F.HOLD .2 >PUSHBI S.PS.F.HOLD
>LDA.G ArgProg >LDA.G ArgProg
>SYSCALL ArgV >SYSCALL ArgV
>SYSCALL ExecV >SYSCALL ExecV
bcs CS.RUN.9
>SLEEP >SLEEP
>LDA.G bExitOnClose CS.RUN.EXIT >LDA.G bExitOnClose
bmi .8 bmi .8
jmp CS.RUN.LOOP0 jmp CS.RUN.LOOP0

View File

@ -23,7 +23,8 @@ CS.START cld
jmp (.1,x) jmp (.1,x)
.DA #$61 6502,Level 1 (65c02) .DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1 .DA #1 BIN Layout Version 1
.DA 0 .DA #S.PS.F.EVENT
.DA #0
.DA CS.END-CS.START CS .DA CS.END-CS.START CS
.DA DS.END-DS.START DS .DA DS.END-DS.START DS
.DA #64 SS .DA #64 SS
@ -51,9 +52,6 @@ CS.INIT >LDYA L.LIBTCPIP
>SYSCALL LoadLib >SYSCALL LoadLib
sta hLIBTCPIP sta hLIBTCPIP
lda (pPs)
ora #S.PS.F.EVENT Now accept events
sta (pPs)
clc clc
rts rts
*-------------------------------------- *--------------------------------------

View File

@ -63,18 +63,28 @@ CS.RUN jsr Init.Timeout
>LDYA L.MSG.TCPWAIT >LDYA L.MSG.TCPWAIT
>SYSCALL puts >SYSCALL puts
.1 >LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ? .1 >SLEEP
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
bcs .99 bcs .99
>STYA ZPIPCfgPtr >STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ? lda (ZPIPCfgPtr) Configured ?
bmi CS.RUN.INIT bmi CS.RUN.INIT
>SLEEP
jsr Wait.Timeout jsr Wait.Timeout
bcc .1 bcs .99
ldy #S.PS.hStdIn
lda (pPs),y
>SYSCALL feof
bcs .9 I/O err
tay
beq .1
>SYSCALL GetChar >SYSCALL GetChar
bcs .1 bcs .9
cmp #$03 cmp #$03
bne .1 bne .1
jmp CS.RUN.ABORT jmp CS.RUN.ABORT
@ -84,7 +94,7 @@ CS.RUN jsr Init.Timeout
>SYSCALL puts >SYSCALL puts
pla pla
sec sec
rts .9 rts
CS.RUN.INIT ldx #3 CS.RUN.INIT ldx #3
ldy #S.IPCFG.IP+3 ldy #S.IPCFG.IP+3
@ -122,16 +132,14 @@ CS.RUN.PORTOK >PUSHBI 0 no protocol
>SYSCALL puts >SYSCALL puts
.2 >SLEEP .2 >SLEEP
jsr CS.RUN.SERVER
bcs CS.RUN.ERR
* >SYSCALL GetChar >LDA.G hSrvSocket
* bcs .2 >LIBCALL hLIBTCPIP,LIBTCPIP.Accept
bcs .2
* cmp #$03 jsr CS.RUN.SERVER
* beq CS.RUN.ABORT bcc .2
rts
bra .2
.9 pha .9 pha
>LDYA L.MSG.SKTERR >LDYA L.MSG.SKTERR
@ -144,15 +152,10 @@ CS.RUN.ABORT >LDYA L.MSG.ABORT
>SYSCALL puts >SYSCALL puts
lda #3 lda #3
CS.RUN.ERR sec sec
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.SERVER >LDA.G hSrvSocket CS.RUN.SERVER pha
>LIBCALL hLIBTCPIP,LIBTCPIP.Accept
bcs .8
pha
ldy #hSockets ldy #hSockets
ldx #CONN.MAX ldx #CONN.MAX
@ -161,7 +164,7 @@ CS.RUN.SERVER >LDA.G hSrvSocket
pla pla
sta (pData),y sta (pData),y
bra CS.RUN.CLIENT bra CS.RUN.CLIENT
.2 iny .2 iny
dex dex
@ -172,7 +175,9 @@ CS.RUN.SERVER >LDA.G hSrvSocket
.8 clc .8 clc
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.CLIENT >STA.G hClientSocket CS.RUN.CLIENT >SLEEP give some time for TCPIP SYN/ACK
>STA.G hClientSocket
>SYSCALL GetMemPtr >SYSCALL GetMemPtr
>STYA ZPSktPtr >STYA ZPSktPtr

View File

@ -1142,7 +1142,7 @@ I.ENV.ROOT .AZ "ROOT"
I.ENV.PATH .AZ "PATH=${ROOT}SBIN/:${ROOT}BIN/" I.ENV.PATH .AZ "PATH=${ROOT}SBIN/:${ROOT}BIN/"
I.ENV.LIB .AZ "LIB=${ROOT}LIB/" I.ENV.LIB .AZ "LIB=${ROOT}LIB/"
I.ENV.DRV .AZ "DRV=${ROOT}DRV/" I.ENV.DRV .AZ "DRV=${ROOT}DRV/"
CTRLR.SHELL .AZ "${ROOT}BIN/SHELL" CTRLR.SHELL .AZ "${ROOT}BIN/SH"
ETCINIT.CMDLINE .AZ "${ROOT}ETC/INIT" ETCINIT.CMDLINE .AZ "${ROOT}ETC/INIT"
*-------------------------------------- *--------------------------------------
MLIOPEN00 .DA #3 MLIOPEN00 .DA #3

View File

@ -404,9 +404,6 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE
.9 >RET 4 .9 >RET 4
*-------------------------------------- *--------------------------------------
IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF
.HS 2C BIT ABS
*--------------------------------------
IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
.HS 2C BIT ABS .HS 2C BIT ABS
*-------------------------------------- *--------------------------------------
@ -419,9 +416,24 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ
jsr K.GetMemPtr jsr K.GetMemPtr
>STYA .1+1 >STYA .1+1
lda IO.hFD lda IO.hFD
.1 jmp $FFFF SELF MODIFIED .1 jsr $FFFF SELF MODIFIED
bcs .9
phy
ply
bne .9
tax
bne .9
inc pStack CC, Y,A = 0
inc pStack
inc pStack
inc pStack keep buf/count on stack
sec BLOCKING I/O
.9 rts
*-------------------------------------- *--------------------------------------
* (pStack)+2 count * (pStack)+2 count
* (pStack)+0 buf * (pStack)+0 buf
@ -702,6 +714,20 @@ IO.EOF.CDEV >LDYAI K.IOBuf
ora K.IOBuf+1 ora K.IOBuf+1
.9 rts .9 rts
*-------------------------------------- *--------------------------------------
IO.EOF.SSOCK ldy #S.FD.SSOCK.EOF
lda (pFD),y
tax Function Offset in LIB
ldy #S.FD.SSOCK.IOHANDLER
lda (pFD),y
jsr K.GetMemPtr
>STYA .1+1
lda IO.hFD
.1 jmp $FFFF SELF MODIFIED
*--------------------------------------
IO.EOF.PIPE IO.EOF.PIPE
lda #MLI.E.IO lda #MLI.E.IO
sec sec

View File

@ -31,7 +31,7 @@ K.FPwr ldx #ROM.PWR
jsr MATH.PullARG jsr MATH.PullARG
plx plx
bra MATH.Go jmp GP.RomCallPushFAC
*/-------------------------------------- */--------------------------------------
* # Log,Sqr,Exp,Cos,Sin,Tan,ATan * # Log,Sqr,Exp,Cos,Sin,Tan,ATan
* Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x) * Return Log(x), Sqr(x), E^X, Cos(x), Sin(X), Tan(x), ATan(x)
@ -68,7 +68,7 @@ K.ATan ldx #ROM.ATAN
jsr MATH.PullFAC jsr MATH.PullFAC
plx plx
bra MATH.Go jmp GP.RomCallPushFAC
*/-------------------------------------- */--------------------------------------
* # float * # float
* Return 'floated' long * Return 'floated' long
@ -92,7 +92,7 @@ K.Float ldx #4
ldx #ROM.LTOF ldx #ROM.LTOF
MATH.Go jmp GP.RomCallPushFAC jmp GP.RomCallPushFAC
*/-------------------------------------- */--------------------------------------
* # lrintf * # lrintf
* Return float rounded into a long * Return float rounded into a long