Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-08-29 17:01:02 +02:00
parent 32532ccf06
commit 875b15a5b1
10 changed files with 183 additions and 265 deletions

Binary file not shown.

Binary file not shown.

View File

@ -182,7 +182,7 @@ CS.RUN.SEND.ECHO
>PUSHW L.ICMP.Request >PUSHW L.ICMP.Request
>PUSHWI ICMP.RequestLen >PUSHWI ICMP.RequestLen
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send
bcs CS.RUN.ERR bcs CS.RUN.ERR
jsr Init.Timeout jsr Init.Timeout
@ -196,7 +196,7 @@ CS.RUN.WAIT.REPLY
.1 ldy #hSocket .1 ldy #hSocket
lda (pData),y lda (pData),y
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ReadFrame >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Rcvd
bcs .2 bcs .2
ldy #hFrame ldy #hFrame

View File

@ -121,7 +121,7 @@ CS.RUN jsr Init.Timeout
>PUSHB (pData),y >PUSHB (pData),y
>PUSHW L.RPC.Request >PUSHW L.RPC.Request
>PUSHWI RPC.Request.End-RPC.Request >PUSHWI RPC.Request.End-RPC.Request
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send
bcc .4 bcc .4
>SLEEP >SLEEP
@ -133,7 +133,7 @@ CS.RUN jsr Init.Timeout
.5 ldy #hSocket .5 ldy #hSocket
lda (pData),y lda (pData),y
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ReadFrame >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Rcvd
bcc .6 bcc .6
>SLEEP >SLEEP

View File

@ -250,7 +250,7 @@ MSG.SKTOK .AZ "Connected."
*-------------------------------------- *--------------------------------------
Socket .DA #S.SOCKET.SOCK.STREAM Socket .DA #S.SOCKET.SOCK.STREAM
.BS 1 .BS 1
.DA #S.IP.PROTOCOL.TCP .BS 1
.BS 1 .BS 1
Socket.Src.Addr .BS 4 Socket.Src.Addr .BS 4
Socket.Src.Port .DA 0 Dynamic Socket.Src.Port .DA 0 Dynamic

View File

@ -47,9 +47,10 @@ LIBTCPIP.SKT.Get .EQ 38
LIBTCPIP.SKT.Accept .EQ 40 LIBTCPIP.SKT.Accept .EQ 40
LIBTCPIP.SKT.MkNod .EQ 42 LIBTCPIP.SKT.MkNod .EQ 42
LIBTCPIP.SKT.Write .EQ 44 LIBTCPIP.SKT.Read .EQ 44
LIBTCPIP.SKT.Read .EQ 46 LIBTCPIP.SKT.Write .EQ 46
LIBTCPIP.SKT.ReadFrame .EQ 48 LIBTCPIP.SKT.Rcvd .EQ 48
LIBTCPIP.SKT.Send .EQ 50
*-------------------------------------- *--------------------------------------
ERR.SKT.OOS .EQ $BF ERR.SKT.OOS .EQ $BF
ERR.SKT.BUSY .EQ $BE ERR.SKT.BUSY .EQ $BE

View File

@ -109,7 +109,7 @@ DNS.REQUEST lda hDNSSocket1
>PUSHB hDNSSocket1 >PUSHB hDNSSocket1
>PUSHW L.DNS.MSG >PUSHW L.DNS.MSG
>PUSHW DNS.MSG.LEN >PUSHW DNS.MSG.LEN
jsr SKT.Write jsr SKT.Send
lda hDNSSocket2 lda hDNSSocket2
beq .3 beq .3
@ -117,7 +117,7 @@ DNS.REQUEST lda hDNSSocket1
>PUSHB hDNSSocket2 >PUSHB hDNSSocket2
>PUSHW L.DNS.MSG >PUSHW L.DNS.MSG
>PUSHW DNS.MSG.LEN >PUSHW DNS.MSG.LEN
jsr SKT.Write jsr SKT.Send
.3 lda #ERR.DNS.PENDING .3 lda #ERR.DNS.PENDING
.9 sec .9 sec
@ -360,14 +360,14 @@ DNS.FREE ldy #S.DNSCACHE.hNAME
*-------------------------------------- *--------------------------------------
DNS.POLL lda hDNSSocket1 DNS.POLL lda hDNSSocket1
beq .8 beq .8
jsr SKT.ReadFrame jsr SKT.Rcvd
bcs .1 bcs .1
jsr DNS.DecodeMsg jsr DNS.DecodeMsg
.1 lda hDNSSocket2 .1 lda hDNSSocket2
beq .8 beq .8
jsr SKT.ReadFrame jsr SKT.Rcvd
bcs .8 bcs .8
jsr DNS.DecodeMsg jsr DNS.DecodeMsg

View File

@ -56,7 +56,7 @@ SKT.New >PULLW ZPTmpPtr1
bpl .5 already found an empty slot.... bpl .5 already found an empty slot....
>LDYA ZPTmpPtr2 found one... >LDYA ZPTmpPtr2 found one...
>STYA ZPTmpPtr3 save it! >STYA ZPPtrSKT save it!
stx TmpOffset stx TmpOffset
.5 lda ZPTmpPtr2 .5 lda ZPTmpPtr2
@ -75,7 +75,7 @@ SKT.New >PULLW ZPTmpPtr1
ldy #S.SOCKET.HDR-1 ldy #S.SOCKET.HDR-1
.7 lda (ZPTmpPtr1),y .7 lda (ZPTmpPtr1),y
sta (ZPTmpPtr3),y sta (ZPPtrSKT),y
dey dey
bpl .7 bpl .7
@ -91,8 +91,6 @@ SKT.New >PULLW ZPTmpPtr1
jsr SKT.NewTCB jsr SKT.NewTCB
bcs .99 bcs .99
>LDYA ZPTmpPtr3
>STYA ZPPtrSKT
lda #S.TCP.OPTIONS.SYN lda #S.TCP.OPTIONS.SYN
jsr TCP.OUT.SendOptA Send SYN,Only for CLIENT conn!!!! jsr TCP.OUT.SendOptA Send SYN,Only for CLIENT conn!!!!
bcs .99 bcs .99
@ -329,233 +327,6 @@ SKT.MkNod sta .1+1
.9 rts .9 rts
*/-------------------------------------- */--------------------------------------
* # SKT.Write (DGRAM,STREAM,RAW)
* Send block of data
* **In:**
* PUSHB = hSocket
* PUSHW = pBuf
* PUSHW = len
* **Out:**
*\--------------------------------------
SKT.Write >PULLW ZPDataInLen
>PULLW ZPDataInPtr
>PULLA
jsr SKT.Get.I
bcs .9
cmp #S.SOCKET.SOCK.DGRAM
beq SKT.Write.UDP
cmp #S.SOCKET.SOCK.RAW
beq SKT.Write.RAW
cmp #S.SOCKET.SOCK.STREAM
bne .99
ldy #S.SOCKET.SO
lda (ZPPtrSKT),y
and #S.SOCKET.SO.ACCEPTCONN
bne .99
jmp SKT.Write.TCP
.99 lda #ERR.SKT.BAD
sec
.9 rts
*--------------------------------------
SKT.Write.RAW ldy #S.SOCKET.RAW.PROTO
lda (ZPPtrSKT),y
tax
>LDYA ZPDataInLen
jsr FRM.NewIP
bcs .9
jsr SKT.SetFrameOutDstIP
jsr SKT.CopyDataInToOut
jmp FRM.SendIP
.9 rts
*--------------------------------------
SKT.Write.UDP ldx #S.IP.PROTOCOL.UDP
>LDYA ZPDataInLen
jsr FRM.NewIP
bcs .9
jsr SKT.SetFrameOutDstIP
ldy #S.SOCKET.SRC.PORT
lda (ZPPtrSKT),y
tax
iny
lda (ZPPtrSKT),y
ldy #S.UDP.SRCPORT
sta (ZPFrameOutPtr),y
iny
txa
sta (ZPFrameOutPtr),y
ldy #S.SOCKET.DST.PORT
lda (ZPPtrSKT),y
tax
iny
lda (ZPPtrSKT),y
ldy #S.UDP.DSTPORT
sta (ZPFrameOutPtr),y
iny
txa
sta (ZPFrameOutPtr),y
jsr SKT.CopyDataInToOut
jmp FRM.SendIP
.9 rts
*--------------------------------------
SKT.Write.TCP ldy #S.SOCKET.TCP.STATUS
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.ESTBLSH
bne .91
jsr SKT.AddDataToSktOut will call SKT.GetTCB
bcs .90
jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error....
clc
rts
.90 lda #0 no data transfered
sec
rts
.91 lda #MLI.E.IO
sec
.99 rts
*/--------------------------------------
* # SKT.ReadFrame (DGRAM,RAW)
* **In:**
* A = hSocket
* **Out:**
* A = hFrame
*\--------------------------------------
SKT.ReadFrame jsr SKT.Get.I
bcs .9
ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
tax
ldy #S.SOCKET.HQ.HEAD
cmp (ZPPtrSKT),y
beq .99
inc
cmp #S.SOCKET.HQ.MAX
bne .1
lda #0
.1 ldy #S.SOCKET.HQ.TAIL
sta (ZPPtrSKT),y
txa
clc
adc #S.SOCKET.HQ
tay
lda (ZPPtrSKT),y
clc
rts
.99 sec
.9 rts
*/--------------------------------------
* # SKT.PutC (STREAM)
* Write a Char To Stream
* **In:**
* PUSHB = hSocket
* PUSHB = Char
* **Out:**
*\--------------------------------------
SKT.PutC >PULLB TmpByte
ldx #1
stx ZPDataInLen
stz ZPDataInLen+1
ldx L.TmpByte
stx ZPDataInPtr
ldx L.TmpByte+1
stx ZPDataInPtr+1
bra SKT.PutS.1
*/--------------------------------------
* # SKT.PutS (STREAM)
* Write Line in pBuf
* **In:**
* PUSHB = hSocket
* PUSHW = PSTR
* **Out:**
*\--------------------------------------
SKT.PutS >PULLW ZPDataOutPtr
lda (ZPDataInPtr)
sta ZPDataInLen
stz ZPDataInLen+1
inc ZPDataInPtr
bne SKT.PutS.1
inc ZPDataInPtr+1
SKT.PutS.1 >PULLA
jsr SKT.Get.I
bcs .9
cmp #S.SOCKET.SOCK.STREAM
bne .9
jmp SKT.Write.TCP
.9 lda #ERR.SKT.BAD
sec
rts
*/--------------------------------------
* # SKT.GetC.A (STREAM)
* Read a Char From Stream in A
* **In:**
* A = hSocket
* **Out:**
* A = char
*\--------------------------------------
SKT.GetC.A stz bTextMode
ldx #1
stx ZPDataOutLen
stz ZPDataOutLen+1
ldx L.TmpByte
stx ZPDataOutPtr
ldx L.TmpByte+1
stx ZPDataOutPtr+1
jsr SKT.Read.I
bcs .9
lda TmpByte
.9 rts
*/--------------------------------------
* # SKT.GetS (STREAM)
* Read a CR terminated Line in pBuf
* **In:**
* PUSHB = hSocket
* PUSHW = pBuf
* PUSHW = len
* **Out:**
* Y,A = bytes read
*\--------------------------------------
SKT.GetS sec
.HS 90 bcc
*/--------------------------------------
* # SKT.Read (STREAM) * # SKT.Read (STREAM)
* Read data in pBuf * Read data in pBuf
* **In:** * **In:**
@ -565,9 +336,7 @@ SKT.GetS sec
* **Out:** * **Out:**
* Y,A = bytes transfered * Y,A = bytes transfered
*\-------------------------------------- *\--------------------------------------
SKT.Read clc SKT.Read >PULLW ZPDataOutLen
ror bTextMode
>PULLW ZPDataOutLen
>PULLW ZPDataOutPtr >PULLW ZPDataOutPtr
>PULLA >PULLA
@ -601,6 +370,163 @@ SKT.Read.I jsr SKT.Get.I
.92 lda #0 .92 lda #0
sec sec
.99 rts .99 rts
*/--------------------------------------
* # SKT.Write (STREAM)
* Send block of data
* **In:**
* PUSHB = hSocket
* PUSHW = pBuf
* PUSHW = len
* **Out:**
*\--------------------------------------
SKT.Write >PULLW ZPDataInLen
>PULLW ZPDataInPtr
>PULLA
jsr SKT.Get.I
bcs .9
cmp #S.SOCKET.SOCK.STREAM
bne .99
ldy #S.SOCKET.SO
lda (ZPPtrSKT),y
and #S.SOCKET.SO.ACCEPTCONN
bne .99
ldy #S.SOCKET.TCP.STATUS
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.ESTBLSH
bne .91
jsr SKT.AddDataToSktOut will call SKT.GetTCB
bcs .90
jsr TCP.OUT.I SKT.GetTCB called, try to push, ignore error....
clc
rts
.90 lda #0 no data transfered
sec
rts
.91 lda #MLI.E.IO
sec
rts
.99 lda #ERR.SKT.BAD
sec
.9 rts
*/--------------------------------------
* # SKT.Rcvd (DGRAM,RAW)
* **In:**
* A = hSocket
* **Out:**
* A = hFrame
*\--------------------------------------
SKT.Rcvd jsr SKT.Get.I
bcs .9
ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
tax
ldy #S.SOCKET.HQ.HEAD
cmp (ZPPtrSKT),y
beq .99
inc
cmp #S.SOCKET.HQ.MAX
bne .1
lda #0
.1 ldy #S.SOCKET.HQ.TAIL
sta (ZPPtrSKT),y
txa
clc
adc #S.SOCKET.HQ
tay
lda (ZPPtrSKT),y
clc
rts
.99 sec
.9 rts
*/--------------------------------------
* # SKT.Send (DGRAM,RAW)
* **In:**
* A = hSocket
* **Out:**
* A = hFrame
*\--------------------------------------
SKT.Send >PULLW ZPDataInLen
>PULLW ZPDataInPtr
>PULLA
jsr SKT.Get.I
bcs .9
cmp #S.SOCKET.SOCK.DGRAM
beq SKT.Send.UDP
cmp #S.SOCKET.SOCK.RAW
beq SKT.Send.RAW
lda #ERR.SKT.BAD
sec
.9 rts
*--------------------------------------
SKT.Send.RAW ldy #S.SOCKET.RAW.PROTO
lda (ZPPtrSKT),y
tax
>LDYA ZPDataInLen
jsr FRM.NewIP
bcs .9
jsr SKT.SetFrameOutDstIP
jsr SKT.CopyDataInToOut
jmp FRM.SendIP
.9 rts
*--------------------------------------
SKT.Send.UDP ldx #S.IP.PROTOCOL.UDP
>LDYA ZPDataInLen
jsr FRM.NewIP
bcs .9
jsr SKT.SetFrameOutDstIP
ldy #S.SOCKET.SRC.PORT
lda (ZPPtrSKT),y
tax
iny
lda (ZPPtrSKT),y
ldy #S.UDP.SRCPORT
sta (ZPFrameOutPtr),y
iny
txa
sta (ZPFrameOutPtr),y
ldy #S.SOCKET.DST.PORT
lda (ZPPtrSKT),y
tax
iny
lda (ZPPtrSKT),y
ldy #S.UDP.DSTPORT
sta (ZPFrameOutPtr),y
iny
txa
sta (ZPFrameOutPtr),y
jsr SKT.CopyDataInToOut
jmp FRM.SendIP
.9 rts
*-------------------------------------- *--------------------------------------
* PRIVATE * PRIVATE
*-------------------------------------- *--------------------------------------
@ -754,7 +680,6 @@ SKT.AddDataToSktIn
* In: * In:
* Src : hInMem/INTAIL * Src : hInMem/INTAIL
* Dst : ZPDataOutPtr/ZPDataOutLen * Dst : ZPDataOutPtr/ZPDataOutLen
* bTextMode
* Out: * Out:
* Y,A = bytes read * Y,A = bytes read
*-------------------------------------- *--------------------------------------
@ -832,12 +757,6 @@ SKT.GetDataFromSktIn
.5 pla get back data.... .5 pla get back data....
bit bTextMode do we need to check CR ?
bpl .6
cmp #13
beq .7
.6 sta (ZPDataOutPtr),y .6 sta (ZPDataOutPtr),y
iny iny
bne .61 bne .61
@ -851,10 +770,7 @@ SKT.GetDataFromSktIn
.7 pla discard byte counter HI .7 pla discard byte counter HI
.8 bit bTextMode here, bacause dst buf full.... .8 lda ZPTmpPtr3 Do we have transfered something?
bmi .9 ....and TextMode selected, NO ending CR found
lda ZPTmpPtr3 Do we have transfered something?
ora ZPTmpPtr3+1 ora ZPTmpPtr3+1
beq .9 beq .9
@ -1138,7 +1054,7 @@ SKT.NewTCB >LDYAI S.TCB
txa txa
ldy #S.SOCKET.SQ.hTCB ldy #S.SOCKET.SQ.hTCB
sta (ZPTmpPtr3),y sta (ZPPtrSKT),y
lda #K.TCP.WSIZE lda #K.TCP.WSIZE
sta SKT.TCBCache+S.TCB.INFREE sta SKT.TCBCache+S.TCB.INFREE
@ -1160,7 +1076,7 @@ SKT.NewTCB >LDYAI S.TCB
txa txa
ldy #S.SOCKET.SQ.hInMem ldy #S.SOCKET.SQ.hInMem
sta (ZPTmpPtr3),y sta (ZPPtrSKT),y
>LDYAI K.TCP.WSIZE >LDYAI K.TCP.WSIZE
>SYSCALL getmem >SYSCALL getmem
@ -1168,7 +1084,7 @@ SKT.NewTCB >LDYAI S.TCB
txa txa
ldy #S.SOCKET.SQ.hOutMem ldy #S.SOCKET.SQ.hOutMem
sta (ZPTmpPtr3),y sta (ZPPtrSKT),y
ldx #S.TCB-1 ldx #S.TCB-1

View File

@ -79,9 +79,10 @@ CS.START cld
.DA SKT.Accept .DA SKT.Accept
.DA SKT.MkNod .DA SKT.MkNod
.DA SKT.Write
.DA SKT.Read .DA SKT.Read
.DA SKT.ReadFrame .DA SKT.Write
.DA SKT.Rcvd
.DA SKT.Send
*-------------------------------------- *--------------------------------------
L.DEVNAME .DA DEVNAME L.DEVNAME .DA DEVNAME
L.MSG.DEV.KO .DA MSG.DEV.KO L.MSG.DEV.KO .DA MSG.DEV.KO

View File

@ -124,7 +124,7 @@ CS.RUN >PUSHW L.Socket
CS.RUN.SDISC >PUSHB.G hSocket CS.RUN.SDISC >PUSHB.G hSocket
>PUSHW L.DHCP.DISC >PUSHW L.DHCP.DISC
>PUSHWI DHCP.DISC.LEN >PUSHWI DHCP.DISC.LEN
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send
bcc .1 bcc .1
jmp CS.RUN.KO jmp CS.RUN.KO
@ -161,7 +161,7 @@ CS.RUN.SREQ ldx #3
>PUSHB.G hSocket >PUSHB.G hSocket
>PUSHW L.DHCP.REQ >PUSHW L.DHCP.REQ
>PUSHWI DHCP.REQ.LEN >PUSHWI DHCP.REQ.LEN
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Send
bcs CS.RUN.KO bcs CS.RUN.KO
lda #S.IPCFG.STATUS.SREQ lda #S.IPCFG.STATUS.SREQ
@ -214,7 +214,7 @@ CS.RUN.KO pha
rts rts
*-------------------------------------- *--------------------------------------
CS.RUN.SKT.RCVD >LDA.G hSocket CS.RUN.SKT.RCVD >LDA.G hSocket
>LIBCALL hLIBTCPIP,LIBTCPIP.SKT.ReadFrame >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Rcvd
bcs .9 bcs .9
>STA.G hFrame >STA.G hFrame