Kernel 0.9.2

This commit is contained in:
Rémy GIBERT 2018-09-28 17:24:44 +02:00
parent 8861dcb76f
commit f5a068fa2b
17 changed files with 396 additions and 297 deletions

View File

@ -72,16 +72,16 @@ CS.RUN >LDYA L.MSG0
.1 lda (ZPPTR1)
beq .7
ldy #S.SOCKET.TCP.STATUS
ldy #S.SOCKET.TCP.S
lda (ZPPTR1),y
cmp #S.SOCKET.TCP.STATUS.TIMEWT+1
cmp #S.SOCKET.TCP.S.TIMEWT+1
bcs *
asl
tax
>PUSHB L.MSG1.S+1,x
>PUSHB L.MSG1.S,x
ldy #S.SOCKET.SO
ldy #S.SOCKET.O
>PUSHB (ZPPTR1),y
ldy #S.SOCKET.DST.PORT+1
@ -93,10 +93,10 @@ CS.RUN >LDYA L.MSG0
lda (ZPPTR1)
tax
cpx #S.SOCKET.SOCK.SEQPACKET+1
cpx #S.SOCKET.T.SEQPACKET+1
bcc .3
ldx #S.SOCKET.SOCK.SEQPACKET+1
ldx #S.SOCKET.T.SEQPACKET+1
.3 >PUSHB L.MSG1+1,x
>PUSHB L.MSG1,x
>PUSHBI 17

View File

@ -87,7 +87,7 @@ CS.END
MSG.USAGE .AZ "Usage : NFSMOUNT [HOST | IP]/export /mountvol\n"
LIBTCPIP >PSTR "libtcpip.o"
hLIBTCPIP .BS 1
Socket .DA #S.SOCKET.SOCK.DGRAM
Socket .DA #S.SOCKET.T.DGRAM
.BS 3
Socket.Src.Addr .BS 4
Socket.Src.Port .DA 0 Dynamic

View File

@ -349,7 +349,7 @@ MSG.UNREACH .AZ "%d.%d.%d.%d: TimeOut/Host unreachable\r\n"
MSG.REPLY .AZ "32 bytes from %d.%d.%d.%d, icmp_seq=%D, ttl=%d, time=%D ms\r\n"
hLIBTCPIP .BS 1
*--------------------------------------
Socket .DA #S.SOCKET.SOCK.RAW
Socket .DA #S.SOCKET.T.RAW
.BS 1
.DA #S.IP.PROTOCOL.ICMP
.BS 1

View File

@ -250,7 +250,7 @@ MSG.TIMEOUT .AZ "No response from %s\r\n"
MSG.DUMP0 .AZ "Program Ver Proto:Port"
MSG.DUMP1 .AZ "%10L %2d %2d:%D\r\n"
*--------------------------------------
Socket .DA #S.SOCKET.SOCK.DGRAM
Socket .DA #S.SOCKET.T.DGRAM
.BS 3
Socket.Src.Addr .BS 4
Socket.Src.Port .DA 0 Dynamic

View File

@ -293,7 +293,7 @@ MSG.SKTERR .AZ "Socket Error : $%h\r\n"
MSG.IOERR .AZ "I/O Error : $%h\r\n"
MSG.USER .AZ "User interrupt."
*--------------------------------------
Socket .DA #S.SOCKET.SOCK.STREAM
Socket .DA #S.SOCKET.T.STREAM
.BS 1
.BS 1
.BS 1

View File

@ -422,14 +422,14 @@ S.FD.DEV .EQ 16
*--------------------------------------
* S.FD.LNK
*--------------------------------------
S.FD.SSOCK.HSKT .EQ 2
S.FD.SSOCK.OPEN .EQ 3
S.FD.SSOCK.CLOSE .EQ 4
S.FD.SSOCK.READ .EQ 5
S.FD.SSOCK.WRITE .EQ 6
S.FD.SSOCK.STATUS .EQ 7
S.FD.SOCK.HSKT .EQ 2
S.FD.SOCK.OPEN .EQ 3
S.FD.SOCK.CLOSE .EQ 4
S.FD.SOCK.READ .EQ 5
S.FD.SOCK.WRITE .EQ 6
S.FD.SOCK.STATUS .EQ 7
*
S.FD.SSOCK .EQ 8
S.FD.SOCK .EQ 8
*--------------------------------------
S.FD.FIFO.S .EQ 2
S.FD.FIFO.S.ROpened .EQ 1

View File

@ -110,82 +110,81 @@ S.DNSCACHE.IP .EQ 8
*
S.DNSCACHE .EQ 12
*--------------------------------------
S.SOCKADDR.IP .EQ 0
S.SOCKADDR.ADDR .EQ 0
S.SOCKADDR.PORT .EQ 4
*
S.SOCKADDR .EQ 6
*--------------------------------------
S.SOCKET.SOCK .EQ 0
S.SOCKET.SOCK.RAW .EQ 0
S.SOCKET.SOCK.DGRAM .EQ 2
S.SOCKET.SOCK.STREAM .EQ 4
S.SOCKET.SOCK.SEQPACKET .EQ 6
S.SOCKET.SO .EQ 1
S.SOCKET.SO.DEBUG .EQ $01
S.SOCKET.SO.ACCEPTCONN .EQ $02
S.SOCKET.SO.REUSEADDR .EQ $04
S.SOCKET.SO.KEEPALIVE .EQ $08
S.SOCKET.SO.DONTROUTE .EQ $10
S.SOCKET.SO.BROADCAST .EQ $20
S.SOCKET.SO.USELOOPBACK .EQ $40
S.SOCKET.SO.LINGER .EQ $80
S.SOCKET.T .EQ S.FD.SOCK+0
S.SOCKET.T.RAW .EQ 0
S.SOCKET.T.DGRAM .EQ 2
S.SOCKET.T.STREAM .EQ 4
S.SOCKET.T.SEQPACKET .EQ 6
S.SOCKET.RAW.PROTO .EQ 2
S.SOCKET.PROTO .EQ S.FD.SOCK+1
S.SOCKET.TCP.STATUS .EQ 2
S.SOCKET.TCP.STATUS.CLOSED .EQ 0
S.SOCKET.TCP.STATUS.LISTEN .EQ 1
S.SOCKET.TCP.STATUS.SYNSENT .EQ 2
S.SOCKET.TCP.STATUS.SYNRCVD .EQ 3
S.SOCKET.TCP.STATUS.ESTBLSH .EQ 4
S.SOCKET.TCP.STATUS.CLWAIT .EQ 5
S.SOCKET.TCP.STATUS.LASTACK .EQ 6
S.SOCKET.TCP.STATUS.FINWT1 .EQ 7
S.SOCKET.TCP.STATUS.FINWT2 .EQ 8
S.SOCKET.TCP.STATUS.CLOSING .EQ 9
S.SOCKET.TCP.STATUS.TIMEWT .EQ 10
S.SOCKET.O .EQ S.FD.SOCK+2
S.SOCKET.O.DEBUG .EQ $01
S.SOCKET.O.ACCEPTCONN .EQ $02
S.SOCKET.O.REUSEADDR .EQ $04
S.SOCKET.O.KEEPALIVE .EQ $08
S.SOCKET.O.DONTROUTE .EQ $10
S.SOCKET.O.BROADCAST .EQ $20
S.SOCKET.O.USELOOPBACK .EQ $40
S.SOCKET.O.LINGER .EQ $80
S.SOCKET.TCP.OPTIONS .EQ 3
S.SOCKET.SRC.ADDR .EQ 4
S.SOCKET.SRC.PORT .EQ 8
S.SOCKET.DST.ADDR .EQ 10
S.SOCKET.DST.PORT .EQ 14
*
S.SOCKET.HDR .EQ 16
S.SOCKET.SRC.ADDR .EQ S.FD.SOCK+4
S.SOCKET.SRC.PORT .EQ S.FD.SOCK+8
S.SOCKET.DST.ADDR .EQ S.FD.SOCK+10
S.SOCKET.DST.PORT .EQ S.FD.SOCK+14
*--------------------------------------
* Listen type Queue
* Raw Type Queue
* Datagram type Queue
S.SOCKET.HQ.HEAD .EQ 16
S.SOCKET.HQ.TAIL .EQ 17
S.SOCKET.HQ .EQ 18
S.SOCKET.HQ.MAX .EQ 14 14 hMem (frames)
S.SOCKET.HQ.HEAD .EQ S.FD.SOCK+16
S.SOCKET.HQ.TAIL .EQ S.FD.SOCK+17
S.SOCKET.HQ .EQ S.FD.SOCK+18
S.SOCKET.HQ.MAX .EQ 14 14 hMem (frames)
* Stream type Queue
S.SOCKET.SQ.hTCB .EQ 16
S.SOCKET.SQ.hInMem .EQ 17
S.SOCKET.SQ.hOutMem .EQ 18
S.SOCKET.SQ.hInMem .EQ S.FD.SOCK+16
S.SOCKET.SQ.hOutMem .EQ S.FD.SOCK+17
*
S.SOCKET .EQ 32
S.SOCKET .EQ S.FD.SOCK+32
*--------------------------------------
S.TCB.INTAIL .EQ 0
S.TCB.INHEAD .EQ 2
S.TCB.INFREE .EQ 4
S.TCB.INUSED .EQ 6
*
S.TCB.OUTTAIL .EQ 8
S.TCB.OUTTAILNEXT .EQ 10
S.TCB.OUTHEAD .EQ 12
S.TCB.OUTFREE .EQ 14
S.TCB.OUTTOSEND .EQ 16
S.TCB.OUTUSED .EQ 18
*
S.TCB.INLASTSEQNUM .EQ 20 Rcvd:Last SEQ received from remote
S.SOCKET.TCP.S .EQ S.SOCKET
S.SOCKET.TCP.S.CLOSED .EQ 0
S.SOCKET.TCP.S.LISTEN .EQ 1
S.SOCKET.TCP.S.SYNSENT .EQ 2
S.SOCKET.TCP.S.SYNRCVD .EQ 3
S.SOCKET.TCP.S.ESTBLSH .EQ 4
S.SOCKET.TCP.S.CLWAIT .EQ 5
S.SOCKET.TCP.S.LASTACK .EQ 6
S.SOCKET.TCP.S.FINWT1 .EQ 7
S.SOCKET.TCP.S.FINWT2 .EQ 8
S.SOCKET.TCP.S.CLOSING .EQ 9
S.SOCKET.TCP.S.TIMEWT .EQ 10
S.TCB.OUTSEQNUM .EQ 24 Send:SEQ sent not yet ACKed (retransmit)
S.TCB.OUTNEXTSEQ .EQ 28 Send:Next SEQ to send
S.TCB.OUTACKNUM .EQ 32 Send:ACK to send to remote
S.SOCKET.TCP.O .EQ S.SOCKET+1
S.SOCKET.TCP.INTAIL .EQ S.SOCKET+2
S.SOCKET.TCP.INHEAD .EQ S.SOCKET+4
S.SOCKET.TCP.INFREE .EQ S.SOCKET+6
S.SOCKET.TCP.INUSED .EQ S.SOCKET+8
*
S.TCB .EQ 36
S.SOCKET.TCP.OUTTAIL .EQ S.SOCKET+10
S.SOCKET.TCP.OUTTAILNEXT .EQ S.SOCKET+12
S.SOCKET.TCP.OUTHEAD .EQ S.SOCKET+14
S.SOCKET.TCP.OUTFREE .EQ S.SOCKET+16
S.SOCKET.TCP.OUTTOSEND .EQ S.SOCKET+18
S.SOCKET.TCP.OUTUSED .EQ S.SOCKET+20
*
S.SOCKET.TCP.INLASTSEQNUM .EQ S.SOCKET+22 Rcvd:Last SEQ received from remote
S.SOCKET.TCP.OUTSEQNUM .EQ S.SOCKET+26 Send:SEQ sent not yet ACKed (retransmit)
S.SOCKET.TCP.OUTNEXTSEQ .EQ S.SOCKET+30 Send:Next SEQ to send
S.SOCKET.TCP.OUTACKNUM .EQ S.SOCKET+34 Send:ACK to send to remote
*
S.SOCKET.TCP .EQ S.SOCKET+38
*--------------------------------------
S.ARP.HTYPE .EQ S.ETH+0 $0001
S.ARP.PTYPE .EQ S.ETH+2 $0800

View File

@ -71,7 +71,7 @@ ICMP.IN.ECHOREP jsr IP.FillSKT.TemplateSrcDstIP
.3 lda (ZPPtrSKT)
beq .7
cmp #S.SOCKET.SOCK.RAW
cmp #S.SOCKET.T.RAW
bne .7
ldy #S.SOCKET.SRC.ADDR

View File

@ -6,40 +6,77 @@ AUTO 4,1
* # SKT.Socket
* Create a new socket
* ## C
* `hSOCKET socket(short int type, int protocol);`
* `hFD socket(short int type, short int protocol);`
* ## ASM
* **In:**
* `>PUSHW protocol`
* `>PUSHB protocol`
* `lda type`
* `>LIBCALL hLIBTCPIP,LIBTCPIP.socket`
* **Out:**
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.Socket pha
>PULLW TmpDWord save protocol
SKT.Socket sta FD.SSOCK+S.SOCKET.T save type
tax
>PULLA get protocol (RAW)
plx
jmp (J.SKT.Socket,x)
SKT.Socket.RAW
ldy #S.SOCKET
bra SKT.Socket.NEW
SKT.Socket.DGRAM
ldy #S.FD.SSOCK+S.SOCKET
.HS 2C BIT ABS
lda #S.IP.PROTOCOL.UDP
sta TmpDWord
ldy #S.SOCKET
bra SKT.Socket.NEW
SKT.Socket.STREAM
lda #S.IP.PROTOCOL.TCP
sta TmpDWord
ldy #S.SOCKET.TCP
bra SKT.Socket.NEW
SKT.Socket.SEQPACKET
ldy #S.FD.SSOCK+S.SOCKET+S.TCB
lda #0
>SYSCALL GetMemPtr
bcs .9
lda #S.IP.PROTOCOL.TCP
sta TmpDWord
ldy #S.SOCKET.TCP
SKT.Socket.NEW lda #0
>SYSCALL GetMem0
bcs .99
>STYA ZPPtrSKT
stx FD.SSOCK+S.FD.SOCK.HSKT
ldy #0
.1 lda SKT.TABLE,y
beq .2
iny
cpy #K.SKTTABLE.SIZE
bne .1
.9 rts
txa
>SYSCALL freemem
lda #K.E.OOH
sec
.99 rts
.2 txa x = hFD
sta SKT.TABLE,y
ldy #FD.SSOCK.SIZE-1
.3 lda FD.SSOCK,y
sta (ZPPtrSKT),y
dey
bpl .3
txa
clc
rts
*/--------------------------------------
* # SKT.bind
* Create a new socket
* bind a name to a socket
* ## C
* `int bind(hFD fd, const struct sockaddr *addr);`
* ## ASM
@ -51,9 +88,68 @@ SKT.Socket.SEQPACKET
* CC: A = hSOCKET
* CS: A = EC
*\--------------------------------------
SKT.bind >SYSCALL GetMemPtr
>STYA ZPPtrSKT
>PULLW ZPTmpPtr1
ldy #S.SOCKADDR-1
.1 lda (ZPTmpPtr1),y
sta SKT.ADDRCache,y
dey
bne .1
jsr SKT.FindMatching
bcc .9
ldy #S.SOCKET.SRC.ADDR+S.SOCKADDR-1
.2 lda SKT.ADDRCache-S.SOCKET.SRC.ADDR,y
sta (ZPTmpPtr1),y
bne .7
dey
bpl .2
clc
rts
.9 lda #ERR.SKT.BUSY
sec
rts
*--------------------------------------
SKT.FindMatching
ldx #0
.1 lda SKT.TABLE,x
beq .7
>SYSCALL GetMemPtr
>STYA ZPTmpPtr1
ldy #S.SOCKET.SRC.ADDR+S.SOCKADDR-1
.2 lda (ZPTmpPtr1),y
cmp SKT.ADDRCache-S.SOCKET.SRC.ADDR,y
bne .7
dey
bpl .2
>LDYA ZPTmpPtr1
clc
rts
.7 inx
cpx #K.SKTTABLE.SIZE
bne .1
* sec
.9 rts
*/--------------------------------------
* # SKT.connect
* Create a new socket
* Iinitiate a connection on a socket
* ## C
* `int connect(hFD fd, const struct sockaddr *addr);`
* ## ASM
@ -70,7 +166,7 @@ SKT.connect >SYSCALL GetMemPtr
>PULLW ZPTmpPtr1 sockaddr
ldy #S.SOCKET.SOCK
ldy #S.SOCKET.T
lda (ZPTmpPtr1),y
tax
jmp (J.SKT.connect,x)
@ -186,26 +282,26 @@ SKT.New >PULLW ZPTmpPtr1
bpl .7
lda (ZPPtrSKT)
cmp #S.SOCKET.SOCK.STREAM
cmp #S.SOCKET.T.STREAM
bne .8
ldy #S.SOCKET.SO
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.SO.ACCEPTCONN
and #S.SOCKET.O.ACCEPTCONN
bne .8 From Listen, do not send SYN packet
jsr SKT.NewTCB
bcs .99
ldy #S.SOCKET.TCP.OPTIONS
ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.SYN
jsr TCP.OUT.SendOptA Send SYN,Only for CLIENT conn,or SYN/ACK if coming from LISTEN
bcs .99
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.SYNSENT
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.SYNSENT
sta (ZPPtrSKT),y
.8 lda TmpByte
@ -224,13 +320,13 @@ SKT.New >PULLW ZPTmpPtr1
* A = hSocket
* **Out:**
*\--------------------------------------
SKT.Close jsr SKT.Get.I get SKT in ZPPtrSKT, S.SOCKET.SOCK in A
SKT.Close jsr SKT.Get.I get SKT in ZPPtrSKT, S.SOCKET.T in A
bcs .99
cmp #S.SOCKET.SOCK.STREAM
cmp #S.SOCKET.T.STREAM
beq .10 TCP
cmp #S.SOCKET.SOCK.RAW+1
bcs .9 no #S.SOCKET.SOCK.DGRAM, nor #S.SOCKET.SOCK.RAW
cmp #S.SOCKET.T.RAW+1
bcs .9 no #S.SOCKET.T.DGRAM, nor #S.SOCKET.T.RAW
.1 ldy #S.SOCKET.HQ.TAIL
lda (ZPPtrSKT),y
@ -267,24 +363,24 @@ SKT.Close jsr SKT.Get.I get SKT in ZPPtrSKT, S.SOCKET.SOCK in A
sec
.99 rts
.10 ldy #S.SOCKET.SO
.10 ldy #S.SOCKET.O
lda (ZPPtrSKT),y
bit #S.SOCKET.SO.ACCEPTCONN
bit #S.SOCKET.O.ACCEPTCONN
bne * TO DO: Listening socket
ldy #S.SOCKET.TCP.STATUS
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.CLWAIT
cmp #S.SOCKET.TCP.S.CLWAIT
bne .11
lda #S.SOCKET.TCP.STATUS.LASTACK
lda #S.SOCKET.TCP.S.LASTACK
bra .12
.11 lda #S.SOCKET.TCP.STATUS.FINWT1
.11 lda #S.SOCKET.TCP.S.FINWT1
.12 sta (ZPPtrSKT),y
ldy #S.SOCKET.TCP.OPTIONS
ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.FIN+S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y
@ -368,9 +464,9 @@ SKT.GetTable lda hSocketTable
*\--------------------------------------
SKT.Accept jsr SKT.Get.I
bcs .9
ldy #S.SOCKET.SO
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.SO.ACCEPTCONN
and #S.SOCKET.O.ACCEPTCONN
beq .99
ldy #S.SOCKET.HQ.TAIL
@ -411,15 +507,15 @@ SKT.Accept jsr SKT.Get.I
* CC: A = hFD
* CS: A = EC
*\--------------------------------------
SKT.MkNod sta FD.SSOCK+S.FD.SSOCK.HSKT
SKT.MkNod sta FD.SSOCK+S.FD.SOCK.HSKT
>LDYAI S.FD.SSOCK
>LDYAI S.FD.SOCK
>SYSCALL getmem0
bcs .9
>STYA ZPTmpPtr1
ldy #S.FD.SSOCK-1
ldy #S.FD.SOCK-1
.2 lda FD.SSOCK,y
sta (ZPTmpPtr1),y
@ -451,19 +547,19 @@ SKT.Read pha
SKT.Read.I jsr SKT.Get.I
bcs .99
cmp #S.SOCKET.SOCK.STREAM
cmp #S.SOCKET.T.STREAM
bne .90 bad skt
ldy #S.SOCKET.SO
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.SO.ACCEPTCONN
and #S.SOCKET.O.ACCEPTCONN
bne .90 Bad Skt
ldy #S.SOCKET.TCP.STATUS
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.ESTBLSH
cmp #S.SOCKET.TCP.S.ESTBLSH
bcc .92 Not yet established...no data
cmp #S.SOCKET.TCP.STATUS.FINWT2
cmp #S.SOCKET.TCP.S.FINWT2
bcs .91 closing...IO err
jsr SKT.GetDataFromSktIn
@ -502,17 +598,17 @@ SKT.Write pha
jsr SKT.Get.I
bcs .9
cmp #S.SOCKET.SOCK.STREAM
cmp #S.SOCKET.T.STREAM
bne .99
ldy #S.SOCKET.SO
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.SO.ACCEPTCONN
and #S.SOCKET.O.ACCEPTCONN
bne .99
ldy #S.SOCKET.TCP.STATUS
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.ESTBLSH
cmp #S.SOCKET.TCP.S.ESTBLSH
bne .91
jsr SKT.AddDataToSktOut will call SKT.GetTCB
@ -591,10 +687,10 @@ SKT.Send pha
jsr SKT.Get.I
bcs SKT.Send.9
cmp #S.SOCKET.SOCK.DGRAM
cmp #S.SOCKET.T.DGRAM
beq SKT.Send.UDP
cmp #S.SOCKET.SOCK.RAW
cmp #S.SOCKET.T.RAW
beq SKT.Send.RAW
lda #ERR.SKT.BAD
@ -662,9 +758,9 @@ SKT.AddToQueueA sta .2+1
* Dst : hInMem/INHEAD
*--------------------------------------
SKT.AddDataToSktIn
ldx SKT.TCBCache+S.TCB.INFREE
ldx SKT.TCBCache+S.SOCKET.TCP.INFREE
cpx ZPDataInLen
lda SKT.TCBCache+S.TCB.INFREE+1
lda SKT.TCBCache+S.SOCKET.TCP.INFREE+1
sbc ZPDataInLen+1
bcc .9 Not enough room in Q
@ -672,7 +768,7 @@ SKT.AddDataToSktIn
ldx #3
.10 lda (ZPFrameInPtr),y
eor SKT.TCBCache+S.TCB.INLASTSEQNUM,x
eor SKT.TCBCache+S.SOCKET.TCP.INLASTSEQNUM,x
bne .9
dey
dex
@ -685,11 +781,11 @@ SKT.AddDataToSktIn
lda ZPTmpPtr1
clc
adc SKT.TCBCache+S.TCB.INHEAD
adc SKT.TCBCache+S.SOCKET.TCP.INHEAD
sta ZPTmpPtr2
lda ZPTmpPtr1+1
adc SKT.TCBCache+S.TCB.INHEAD+1
adc SKT.TCBCache+S.SOCKET.TCP.INHEAD+1
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
lda ZPDataInLen
@ -720,13 +816,13 @@ SKT.AddDataToSktIn
bne .4
inc ZPTmpPtr2+1
.4 inc SKT.TCBCache+S.TCB.INHEAD
.4 inc SKT.TCBCache+S.SOCKET.TCP.INHEAD
bne .1
inc SKT.TCBCache+S.TCB.INHEAD+1
lda SKT.TCBCache+S.TCB.INHEAD+1
inc SKT.TCBCache+S.SOCKET.TCP.INHEAD+1
lda SKT.TCBCache+S.SOCKET.TCP.INHEAD+1
cmp /K.TCP.WSIZE
bne .1
stz SKT.TCBCache+S.TCB.INHEAD+1
stz SKT.TCBCache+S.SOCKET.TCP.INHEAD+1
lda ZPTmpPtr1 Dst Ptr=Buffer Base
sta ZPTmpPtr2
@ -737,37 +833,37 @@ SKT.AddDataToSktIn
.9 sec
rts
.8 lda SKT.TCBCache+S.TCB.INFREE
.8 lda SKT.TCBCache+S.SOCKET.TCP.INFREE
sec
sbc ZPDataInLen
sta SKT.TCBCache+S.TCB.INFREE
sta SKT.TCBCache+S.SOCKET.TCP.INFREE
lda SKT.TCBCache+S.TCB.INFREE+1
lda SKT.TCBCache+S.SOCKET.TCP.INFREE+1
sbc ZPDataInLen+1
sta SKT.TCBCache+S.TCB.INFREE+1
sta SKT.TCBCache+S.SOCKET.TCP.INFREE+1
lda SKT.TCBCache+S.TCB.INUSED
lda SKT.TCBCache+S.SOCKET.TCP.INUSED
clc
adc ZPDataInLen
sta SKT.TCBCache+S.TCB.INUSED
sta SKT.TCBCache+S.SOCKET.TCP.INUSED
lda SKT.TCBCache+S.TCB.INUSED+1
lda SKT.TCBCache+S.SOCKET.TCP.INUSED+1
adc ZPDataInLen+1
sta SKT.TCBCache+S.TCB.INUSED+1
sta SKT.TCBCache+S.SOCKET.TCP.INUSED+1
clc
lda SKT.TCBCache+S.TCB.INLASTSEQNUM+3
lda SKT.TCBCache+S.SOCKET.TCP.INLASTSEQNUM+3
adc ZPDataInLen
sta SKT.TCBCache+S.TCB.INLASTSEQNUM+3
sta SKT.TCBCache+S.SOCKET.TCP.INLASTSEQNUM+3
lda SKT.TCBCache+S.TCB.INLASTSEQNUM+2
lda SKT.TCBCache+S.SOCKET.TCP.INLASTSEQNUM+2
adc ZPDataInLen+1
sta SKT.TCBCache+S.TCB.INLASTSEQNUM+2
sta SKT.TCBCache+S.SOCKET.TCP.INLASTSEQNUM+2
bcc .80
inc SKT.TCBCache+S.TCB.INLASTSEQNUM+1
inc SKT.TCBCache+S.SOCKET.TCP.INLASTSEQNUM+1
bne .80
inc SKT.TCBCache+S.TCB.INLASTSEQNUM
inc SKT.TCBCache+S.SOCKET.TCP.INLASTSEQNUM
.80 clc
rts
@ -781,8 +877,8 @@ SKT.AddDataToSktIn
*--------------------------------------
SKT.GetDataFromSktIn
jsr SKT.GetTCB
lda SKT.TCBCache+S.TCB.INUSED
ora SKT.TCBCache+S.TCB.INUSED+1
lda SKT.TCBCache+S.SOCKET.TCP.INUSED
ora SKT.TCBCache+S.SOCKET.TCP.INUSED+1
bne .10
sec
rts A=0,NO DATA
@ -794,11 +890,11 @@ SKT.GetDataFromSktIn
lda ZPTmpPtr1
clc
adc SKT.TCBCache+S.TCB.INTAIL
adc SKT.TCBCache+S.SOCKET.TCP.INTAIL
sta ZPTmpPtr2
lda ZPTmpPtr1+1
adc SKT.TCBCache+S.TCB.INTAIL+1
adc SKT.TCBCache+S.SOCKET.TCP.INTAIL+1
sta ZPTmpPtr2+1
lda ZPDataInLen
@ -822,25 +918,25 @@ SKT.GetDataFromSktIn
pha
.2 lda SKT.TCBCache+S.TCB.INTAIL
eor SKT.TCBCache+S.TCB.INHEAD
.2 lda SKT.TCBCache+S.SOCKET.TCP.INTAIL
eor SKT.TCBCache+S.SOCKET.TCP.INHEAD
bne .3
lda SKT.TCBCache+S.TCB.INTAIL+1
eor SKT.TCBCache+S.TCB.INHEAD+1
lda SKT.TCBCache+S.SOCKET.TCP.INTAIL+1
eor SKT.TCBCache+S.SOCKET.TCP.INHEAD+1
beq .7 no more data....
.3 lda (ZPTmpPtr2)
pha
inc SKT.TCBCache+S.TCB.INTAIL
inc SKT.TCBCache+S.SOCKET.TCP.INTAIL
bne .4
inc SKT.TCBCache+S.TCB.INTAIL+1
lda SKT.TCBCache+S.TCB.INTAIL+1
inc SKT.TCBCache+S.SOCKET.TCP.INTAIL+1
lda SKT.TCBCache+S.SOCKET.TCP.INTAIL+1
cmp /K.TCP.WSIZE
bne .4
stz SKT.TCBCache+S.TCB.INTAIL+1
stz SKT.TCBCache+S.SOCKET.TCP.INTAIL+1
lda ZPTmpPtr1
sta ZPTmpPtr2
lda ZPTmpPtr1+1
@ -870,41 +966,41 @@ SKT.GetDataFromSktIn
ora ZPTmpPtr3+1
beq .9
lda SKT.TCBCache+S.TCB.INFREE
lda SKT.TCBCache+S.SOCKET.TCP.INFREE
clc
adc ZPTmpPtr3
sta SKT.TCBCache+S.TCB.INFREE
sta SKT.TCBCache+S.SOCKET.TCP.INFREE
lda SKT.TCBCache+S.TCB.INFREE+1
lda SKT.TCBCache+S.SOCKET.TCP.INFREE+1
adc ZPTmpPtr3+1
sta SKT.TCBCache+S.TCB.INFREE+1
sta SKT.TCBCache+S.SOCKET.TCP.INFREE+1
lda SKT.TCBCache+S.TCB.INUSED
lda SKT.TCBCache+S.SOCKET.TCP.INUSED
sec
sbc ZPTmpPtr3
sta SKT.TCBCache+S.TCB.INUSED
sta SKT.TCBCache+S.SOCKET.TCP.INUSED
lda SKT.TCBCache+S.TCB.INUSED+1
lda SKT.TCBCache+S.SOCKET.TCP.INUSED+1
sbc ZPTmpPtr3+1
sta SKT.TCBCache+S.TCB.INUSED+1
sta SKT.TCBCache+S.SOCKET.TCP.INUSED+1
lda SKT.TCBCache+S.TCB.OUTACKNUM+3
lda SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM+3
clc
adc ZPTmpPtr3
sta SKT.TCBCache+S.TCB.OUTACKNUM+3
sta SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM+3
lda SKT.TCBCache+S.TCB.OUTACKNUM+2
lda SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM+2
adc ZPTmpPtr3+1
sta SKT.TCBCache+S.TCB.OUTACKNUM+2
sta SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM+2
bcc .80
inc SKT.TCBCache+S.TCB.OUTACKNUM+1
inc SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM+1
bne .80
inc SKT.TCBCache+S.TCB.OUTACKNUM
inc SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM
.80 jsr SKT.StoreTCB
ldy #S.SOCKET.TCP.OPTIONS
ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y
@ -926,9 +1022,9 @@ SKT.GetDataFromSktIn
*--------------------------------------
SKT.AddDataToSktOut
jsr SKT.GetTCB
ldx SKT.TCBCache+S.TCB.OUTFREE
ldx SKT.TCBCache+S.SOCKET.TCP.OUTFREE
cpx ZPDataInLen
lda SKT.TCBCache+S.TCB.OUTFREE+1
lda SKT.TCBCache+S.SOCKET.TCP.OUTFREE+1
sbc ZPDataInLen+1
bcc .9 Not enough room in Q
@ -939,11 +1035,11 @@ SKT.AddDataToSktOut
lda ZPTmpPtr1
clc
adc SKT.TCBCache+S.TCB.OUTHEAD
adc SKT.TCBCache+S.SOCKET.TCP.OUTHEAD
sta ZPTmpPtr2
lda ZPTmpPtr1+1
adc SKT.TCBCache+S.TCB.OUTHEAD+1
adc SKT.TCBCache+S.SOCKET.TCP.OUTHEAD+1
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
lda ZPDataInLen
@ -974,13 +1070,13 @@ SKT.AddDataToSktOut
bne .4
inc ZPTmpPtr2+1
.4 inc SKT.TCBCache+S.TCB.OUTHEAD
.4 inc SKT.TCBCache+S.SOCKET.TCP.OUTHEAD
bne .1
inc SKT.TCBCache+S.TCB.OUTHEAD+1
lda SKT.TCBCache+S.TCB.OUTHEAD+1
inc SKT.TCBCache+S.SOCKET.TCP.OUTHEAD+1
lda SKT.TCBCache+S.SOCKET.TCP.OUTHEAD+1
cmp /K.TCP.WSIZE
bne .1
stz SKT.TCBCache+S.TCB.OUTHEAD+1
stz SKT.TCBCache+S.SOCKET.TCP.OUTHEAD+1
lda ZPTmpPtr1 Dst Ptr=Buffer Base
sta ZPTmpPtr2
@ -991,29 +1087,29 @@ SKT.AddDataToSktOut
.9 sec
rts
.8 lda SKT.TCBCache+S.TCB.OUTFREE
.8 lda SKT.TCBCache+S.SOCKET.TCP.OUTFREE
sec
sbc ZPDataInLen
sta SKT.TCBCache+S.TCB.OUTFREE
lda SKT.TCBCache+S.TCB.OUTFREE+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTFREE
lda SKT.TCBCache+S.SOCKET.TCP.OUTFREE+1
sbc ZPDataInLen+1
sta SKT.TCBCache+S.TCB.OUTFREE+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTFREE+1
lda SKT.TCBCache+S.TCB.OUTUSED
lda SKT.TCBCache+S.SOCKET.TCP.OUTUSED
clc
adc ZPDataInLen
sta SKT.TCBCache+S.TCB.OUTUSED
lda SKT.TCBCache+S.TCB.OUTUSED+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTUSED
lda SKT.TCBCache+S.SOCKET.TCP.OUTUSED+1
adc ZPDataInLen+1
sta SKT.TCBCache+S.TCB.OUTUSED+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTUSED+1
lda SKT.TCBCache+S.TCB.OUTTOSEND
lda SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND
clc
adc ZPDataInLen
sta SKT.TCBCache+S.TCB.OUTTOSEND
lda SKT.TCBCache+S.TCB.OUTTOSEND+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND
lda SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND+1
adc ZPDataInLen+1
sta SKT.TCBCache+S.TCB.OUTTOSEND+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND+1
jsr SKT.StoreTCB
rts
*--------------------------------------
@ -1030,11 +1126,11 @@ SKT.GetDataFromSktOut
lda ZPTmpPtr1
clc
adc SKT.TCBCache+S.TCB.OUTTAILNEXT
adc SKT.TCBCache+S.SOCKET.TCP.OUTTAILNEXT
sta ZPTmpPtr2 Make ZPTmpPtr2=base+nexttail
lda ZPTmpPtr1+1
adc SKT.TCBCache+S.TCB.OUTTAILNEXT+1
adc SKT.TCBCache+S.SOCKET.TCP.OUTTAILNEXT+1
sta ZPTmpPtr2+1
lda ZPDataOutLen
@ -1065,13 +1161,13 @@ SKT.GetDataFromSktOut
bne .4
inc ZPTmpPtr2+1
.4 inc SKT.TCBCache+S.TCB.OUTTAILNEXT
.4 inc SKT.TCBCache+S.SOCKET.TCP.OUTTAILNEXT
bne .1
inc SKT.TCBCache+S.TCB.OUTTAILNEXT+1
lda SKT.TCBCache+S.TCB.OUTTAILNEXT+1
inc SKT.TCBCache+S.SOCKET.TCP.OUTTAILNEXT+1
lda SKT.TCBCache+S.SOCKET.TCP.OUTTAILNEXT+1
cmp /K.TCP.WSIZE
bne .1
stz SKT.TCBCache+S.TCB.OUTTAILNEXT+1
stz SKT.TCBCache+S.SOCKET.TCP.OUTTAILNEXT+1
lda ZPTmpPtr1 Dst Ptr=Buffer Base
sta ZPTmpPtr2
@ -1079,13 +1175,13 @@ SKT.GetDataFromSktOut
sta ZPTmpPtr2+1
bra .1
.8 lda SKT.TCBCache+S.TCB.OUTTOSEND
.8 lda SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND
sec
sbc ZPDataOutLen
sta SKT.TCBCache+S.TCB.OUTTOSEND
lda SKT.TCBCache+S.TCB.OUTTOSEND+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND
lda SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND+1
sbc ZPDataOutLen+1
sta SKT.TCBCache+S.TCB.OUTTOSEND+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND+1
clc
rts
@ -1102,10 +1198,10 @@ SKT.AckDataToSktOut
.1 lda (ZPFrameInPtr),y
pha
sbc SKT.TCBCache+S.TCB.OUTSEQNUM,x
sbc SKT.TCBCache+S.SOCKET.TCP.OUTSEQNUM,x
sta TmpDWord,x
pla ....and Set SEQ = new SEQ
sta SKT.TCBCache+S.TCB.OUTSEQNUM,x
sta SKT.TCBCache+S.SOCKET.TCP.OUTSEQNUM,x
dey
dex
bpl .1
@ -1117,29 +1213,29 @@ SKT.AckDataToSktOut
beq .8
.2 clc
adc SKT.TCBCache+S.TCB.OUTTAIL
sta SKT.TCBCache+S.TCB.OUTTAIL
adc SKT.TCBCache+S.SOCKET.TCP.OUTTAIL
sta SKT.TCBCache+S.SOCKET.TCP.OUTTAIL
txa
adc SKT.TCBCache+S.TCB.OUTTAIL+1
adc SKT.TCBCache+S.SOCKET.TCP.OUTTAIL+1
and /K.TCP.WSIZE-1
sta SKT.TCBCache+S.TCB.OUTTAIL+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTTAIL+1
lda SKT.TCBCache+S.TCB.OUTFREE
lda SKT.TCBCache+S.SOCKET.TCP.OUTFREE
clc
adc TmpDWord+3
sta SKT.TCBCache+S.TCB.OUTFREE
lda SKT.TCBCache+S.TCB.OUTFREE+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTFREE
lda SKT.TCBCache+S.SOCKET.TCP.OUTFREE+1
adc TmpDWord+2
sta SKT.TCBCache+S.TCB.OUTFREE+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTFREE+1
lda SKT.TCBCache+S.TCB.OUTUSED
lda SKT.TCBCache+S.SOCKET.TCP.OUTUSED
sec
sbc TmpDWord+3
sta SKT.TCBCache+S.TCB.OUTUSED
lda SKT.TCBCache+S.TCB.OUTUSED+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTUSED
lda SKT.TCBCache+S.SOCKET.TCP.OUTUSED+1
sbc TmpDWord+2
sta SKT.TCBCache+S.TCB.OUTUSED+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTUSED+1
.8 rts
*--------------------------------------
@ -1154,16 +1250,16 @@ SKT.NewTCB >LDYAI S.TCB
sta (ZPPtrSKT),y
lda #K.TCP.WSIZE
sta SKT.TCBCache+S.TCB.INFREE
sta SKT.TCBCache+S.TCB.OUTFREE
sta SKT.TCBCache+S.SOCKET.TCP.INFREE
sta SKT.TCBCache+S.SOCKET.TCP.OUTFREE
lda /K.TCP.WSIZE
sta SKT.TCBCache+S.TCB.INFREE+1
sta SKT.TCBCache+S.TCB.OUTFREE+1
sta SKT.TCBCache+S.SOCKET.TCP.INFREE+1
sta SKT.TCBCache+S.SOCKET.TCP.OUTFREE+1
ldx #3
.2 lda A2osX.TIMER16,x
sta SKT.TCBCache+S.TCB.OUTNEXTSEQ,x
sta SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ,x
dex
bpl .2

View File

@ -13,7 +13,7 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDstIPP
.3 lda (ZPPtrSKT)
beq .7
cmp #S.SOCKET.SOCK.STREAM
cmp #S.SOCKET.T.STREAM
bne .7
ldy #S.SOCKET.SRC.ADDR
@ -26,9 +26,9 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDstIPP
cpy #S.SOCKET.SRC.PORT+2
bne .4
ldy #S.SOCKET.SO
ldy #S.SOCKET.O
lda (ZPPtrSKT),y
and #S.SOCKET.SO.ACCEPTCONN Listening socket?
and #S.SOCKET.O.ACCEPTCONN Listening socket?
beq .5 no, go check if Dst Match
ldy #S.TCP.OPTIONS yes, only accept SYN packet
@ -51,9 +51,9 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDstIPP
and #S.TCP.OPTIONS.RST RST ? go Kill this socket.
bne TCP.IN.RST
ldy #S.SOCKET.TCP.STATUS
ldy #S.SOCKET.TCP.S
lda (ZPPtrSKT),y
cmp #S.SOCKET.TCP.STATUS.TIMEWT+1
cmp #S.SOCKET.TCP.S.TIMEWT+1
bcs *
asl
tax
@ -77,12 +77,12 @@ TCP.IN jsr IP.FillSKT.TemplateSrcDstIPP
TCP.IN.RST jmp SKT.Destroy
*--------------------------------------
TCP.IN.JMP.LISTEN
lda #S.SOCKET.SOCK.STREAM
sta SKT.Template+S.SOCKET.SOCK
stz SKT.Template+S.SOCKET.SO
stz SKT.Template+S.SOCKET.TCP.STATUS
lda #S.SOCKET.T.STREAM
sta SKT.Template+S.SOCKET.T
stz SKT.Template+S.SOCKET.O
stz SKT.Template+S.SOCKET.TCP.S
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
sta SKT.Template+S.SOCKET.TCP.OPTIONS
sta SKT.Template+S.SOCKET.TCP.O
jsr ARP.AddFromFrameInPtr
@ -112,8 +112,8 @@ TCP.IN.JMP.LISTEN
jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK
bcs .9
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.SYNRCVD
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.SYNRCVD
sta (ZPPtrSKT),y
clc
@ -138,9 +138,9 @@ TCP.IN.JMP.SYNSENT
sec Check if ACK=OUTNEXTSEQ+1
.1 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x
.1 lda SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ,x
adc #0
sta SKT.TCBCache+S.TCB.OUTNEXTSEQ,x
sta SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ,x
eor (ZPFrameInPtr),y
bne .9
dey
@ -153,8 +153,8 @@ TCP.IN.JMP.SYNSENT
jsr TCP.OUT.SendOptA SYN.ACK recieved, Send, ACK
bcs .9
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.ESTBLSH
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.ESTBLSH
sta (ZPPtrSKT),y
jmp SKT.StoreTCB
@ -177,18 +177,18 @@ TCP.IN.JMP.SYNRCVD
sec
.1 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x Check if ACK=OUTNEXTSEQ+1
.1 lda SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ,x Check if ACK=OUTNEXTSEQ+1
adc #0
sta SKT.TCBCache+S.TCB.OUTSEQNUM,x setup SEQNUM
sta SKT.TCBCache+S.TCB.OUTNEXTSEQ,x ...and update NEXTSEQ
sta SKT.TCBCache+S.SOCKET.TCP.OUTSEQNUM,x setup SEQNUM
sta SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ,x ...and update NEXTSEQ
eor (ZPFrameInPtr),y
bne .8
dey
dex
bpl .1
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.ESTBLSH
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.ESTBLSH
sta (ZPPtrSKT),y
jmp SKT.StoreTCB
@ -226,8 +226,8 @@ TCP.IN.JMP.ESTBLSH
bcs .9
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.CLWAIT
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.CLWAIT
sta (ZPPtrSKT),y
.8 clc
@ -254,8 +254,8 @@ TCP.IN.JMP.FINWT1
bit #S.TCP.OPTIONS.ACK
beq TCP.IN.JMP.FINWT2.1
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.FINWT2
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.FINWT2
sta (ZPPtrSKT),y
*--------------------------------------
TCP.IN.JMP.FINWT2
@ -268,8 +268,8 @@ TCP.IN.JMP.FINWT2.1
jsr TCP.IN.ACKTheFIN
bcs .9
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.TIMEWT
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.TIMEWT
sta (ZPPtrSKT),y
.8 clc
@ -281,8 +281,8 @@ TCP.IN.JMP.CLOSING
bit #S.TCP.OPTIONS.ACK
beq .1
ldy #S.SOCKET.TCP.STATUS
lda #S.SOCKET.TCP.STATUS.TIMEWT
ldy #S.SOCKET.TCP.S
lda #S.SOCKET.TCP.S.TIMEWT
sta (ZPPtrSKT),y
.1 clc
@ -301,15 +301,15 @@ TCP.IN.ACKTheSYN
.3 lda (ZPFrameInPtr),y Set OUTACK=SEQ+1 for new socket...
adc #0
sta SKT.TCBCache+S.TCB.INLASTSEQNUM,x
sta SKT.TCBCache+S.TCB.OUTACKNUM,x
sta SKT.TCBCache+S.SOCKET.TCP.INLASTSEQNUM,x
sta SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM,x
dey
dex
bpl .3
rts
*--------------------------------------
TCP.IN.ACKTheFIN
ldy #S.SOCKET.TCP.OPTIONS
ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.ACK
sta (ZPPtrSKT),y
@ -321,9 +321,9 @@ TCP.IN.ACKTheFIN
sec
.3 lda SKT.TCBCache+S.TCB.OUTACKNUM,x
.3 lda SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM,x
adc #0
sta SKT.TCBCache+S.TCB.OUTACKNUM,x
sta SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM,x
dey
dex
bpl .3
@ -379,8 +379,8 @@ TCP.IN.SetDataInPtrAndLen
*--------------------------------------
TCP.OUT jsr SKT.GetTCB
TCP.OUT.I lda SKT.TCBCache+S.TCB.OUTTOSEND+1
ldy SKT.TCBCache+S.TCB.OUTTOSEND
TCP.OUT.I lda SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND+1
ldy SKT.TCBCache+S.SOCKET.TCP.OUTTOSEND
bne .1
@ -389,7 +389,7 @@ TCP.OUT.I lda SKT.TCBCache+S.TCB.OUTTOSEND+1
* Y,A=0 : no data to send
ldy #S.SOCKET.TCP.OPTIONS
ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y
bne TCP.OUT.SendOptA a least an option...
clc No, data, no flag....exit
@ -408,25 +408,25 @@ TCP.OUT.I lda SKT.TCBCache+S.TCB.OUTTOSEND+1
jsr SKT.GetDataFromSktOut
ldy #S.SOCKET.TCP.OPTIONS
ldy #S.SOCKET.TCP.O
lda (ZPPtrSKT),y
ora #S.TCP.OPTIONS.ACK
jsr TCP.OUT.SendOptA.1
bcs TCP.OUT.9
lda SKT.TCBCache+S.TCB.OUTNEXTSEQ+3
lda SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ+3
clc
adc ZPDataOutLen
sta SKT.TCBCache+S.TCB.OUTNEXTSEQ+3
sta SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ+3
lda SKT.TCBCache+S.TCB.OUTNEXTSEQ+2
lda SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ+2
adc ZPDataOutLen+1
sta SKT.TCBCache+S.TCB.OUTNEXTSEQ+2
sta SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ+2
bcc .80
inc SKT.TCBCache+S.TCB.OUTNEXTSEQ+1
inc SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ+1
bne .80
inc SKT.TCBCache+S.TCB.OUTNEXTSEQ
inc SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ
.80 jmp SKT.StoreTCB exits with CC
TCP.OUT.9 rts
@ -448,7 +448,7 @@ TCP.OUT.SendOptA.1
ldx #3
ldy #S.TCP.ACKNUM+3
.1 lda SKT.TCBCache+S.TCB.OUTACKNUM,x
.1 lda SKT.TCBCache+S.SOCKET.TCP.OUTACKNUM,x
sta (ZPFrameOutPtr),y
dey
dex
@ -457,23 +457,23 @@ TCP.OUT.SendOptA.1
.10 ldx #3
ldy #S.TCP.SEQNUM+3
.2 lda SKT.TCBCache+S.TCB.OUTNEXTSEQ,x
.2 lda SKT.TCBCache+S.SOCKET.TCP.OUTNEXTSEQ,x
sta (ZPFrameOutPtr),y
dey
dex
bpl .2
ldy #S.TCP.WINDOW
lda SKT.TCBCache+S.TCB.INFREE+1
lda SKT.TCBCache+S.SOCKET.TCP.INFREE+1
sta (ZPFrameOutPtr),y
iny
lda SKT.TCBCache+S.TCB.INFREE
lda SKT.TCBCache+S.SOCKET.TCP.INFREE
sta (ZPFrameOutPtr),y
jsr FRM.SendIP
bcs .9
ldy #S.SOCKET.TCP.OPTIONS
ldy #S.SOCKET.TCP.O
lda #0
sta (ZPPtrSKT),y
@ -493,10 +493,10 @@ TCP.NewFrame ldx #S.IP.PROTOCOL.TCP
sta (ZPFrameOutPtr),y
ldy #S.TCP.WINDOW
lda SKT.TCBCache+S.TCB.INFREE+1
lda SKT.TCBCache+S.SOCKET.TCP.INFREE+1
sta (ZPFrameOutPtr),y
iny
lda SKT.TCBCache+S.TCB.INFREE
lda SKT.TCBCache+S.SOCKET.TCP.INFREE
sta (ZPFrameOutPtr),y
clc

View File

@ -13,7 +13,7 @@ UDP.IN jsr IP.FillSKT.TemplateSrcDstIPP
.3 lda (ZPPtrSKT)
beq .7
cmp #S.SOCKET.SOCK.DGRAM
cmp #S.SOCKET.T.DGRAM
bne .7
ldy #S.SOCKET.SRC.ADDR

View File

@ -292,12 +292,15 @@ CFG.HOSTS.SScanF .AZ "%d.%d.%d.%d %s %s"
*--------------------------------------
FD.SSOCK .BS 1 S.FD.HANDLER
.DA #S.FD.T.SSOCK
.BS 1 S.FD.SSOCK.HSKT
.DA #0 S.FD.SSOCK.OPEN
.DA #0 S.FD.SSOCK.CLOSE
.BS 1 S.FD.SOCK.HSKT
.DA #0 S.FD.SOCK.OPEN
.DA #0 S.FD.SOCK.CLOSE
.DA #LIBTCPIP.SKT.Read
.DA #LIBTCPIP.SKT.Write
.DA #0 S.FD.SSOCK.STATUS
.DA #0 S.FD.SOCK.STATUS
.BS 1 S.SOCKET.T
.BS 1 S.SOCKET.PROTO
FD.SSOCK.SIZE .EQ *-FD.SSOCK
*--------------------------------------
IOCTL .BS S.IOCTL
DCB.NIC .BS S.DCB.NIC
@ -330,7 +333,7 @@ ARP.REP.SPA .BS 4
ARP.REP.THA .BS 6
ARP.REP.TPA .BS 4
*--------------------------------------
DNS.SOCKET .DA #S.SOCKET.SOCK.DGRAM
DNS.SOCKET .DA #S.SOCKET.T.DGRAM
.BS 3
DNS.SOCKET.SA .BS 4
DNS.SOCKET.SP .DA 0 Dynamic
@ -366,6 +369,7 @@ DNS.TmpCache .BS S.DNSCACHE
ARP.TmpCache .BS S.ARP
SKT.Template .BS S.SOCKET
SKT.TCBCache .BS S.TCB
SKT.ADDRCache .BS S.SOCKADDR
TmpByte .BS 1
TmpDWord .BS 4
TmpOffset .BS 2

View File

@ -447,7 +447,7 @@ MSG.CFG.NA .AZ "DHCPCLNT:TCPIP Already configured, exiting."
hLIBTCPIP .BS 1
IPCFG .BS S.IPCFG
*--------------------------------------
Socket .DA #S.SOCKET.SOCK.DGRAM
Socket .DA #S.SOCKET.T.DGRAM
.BS 3
.HS 00.00.00.00 Socket.Src.Addr
.DA UDP.PORT.DHCPC Socket.Src.Port

View File

@ -268,9 +268,9 @@ hClntSocket .BS 1
*--------------------------------------
HTTP.200OK .AZ "HTTP/1.1 200 OK\r\n"
*--------------------------------------
Socket .DA #S.SOCKET.SOCK.STREAM
.DA #S.SOCKET.SO.ACCEPTCONN
.DA #S.SOCKET.TCP.STATUS.LISTEN
Socket .DA #S.SOCKET.T.STREAM
.DA #S.SOCKET.O.ACCEPTCONN
.DA #S.SOCKET.TCP.S.LISTEN
.BS 1
Socket.Src.Addr .BS 4
Socket.Src.Port .DA 80

View File

@ -205,9 +205,9 @@ MSG.ABORT .AZ "NFSD:User Aborted\n"
MSG.INCOMING .AZ "NFSD:Incoming Connection From : %d.%d.%d.%d\n"
hLIBTCPIP .BS 1
*--------------------------------------
Socket .DA #S.SOCKET.SOCK.DGRAM
.DA #S.SOCKET.SO.ACCEPTCONN
.DA #S.SOCKET.TCP.STATUS.LISTEN
Socket .DA #S.SOCKET.T.DGRAM
.DA #S.SOCKET.O.ACCEPTCONN
.DA #S.SOCKET.TCP.S.LISTEN
.BS 1
Socket.Src.Addr .BS 4
Socket.Src.Port .DA 2049

View File

@ -234,9 +234,9 @@ CMD.LINE .AS "${A2OSX}SBIN/GETTY "
.AZ " ${A2OSX}SBIN/LOGIN"
*--------------------------------------
Socket .DA #S.SOCKET.SOCK.STREAM
.DA #S.SOCKET.SO.ACCEPTCONN
.DA #S.SOCKET.TCP.STATUS.LISTEN
Socket .DA #S.SOCKET.T.STREAM
.DA #S.SOCKET.O.ACCEPTCONN
.DA #S.SOCKET.TCP.S.LISTEN
.BS 1
Socket.Src.Addr .BS 4
Socket.Src.Port .DA TCP.PORT.TELNET

View File

@ -195,10 +195,10 @@ IO.WRITE.CDEV ldx #IOCTL.WRITE
>LDYA K.S.IOCTL+S.IOCTL.BYTECNT
.9 rts
*--------------------------------------
IO.WRITE.SSOCK ldy #S.FD.SSOCK.WRITE
IO.WRITE.SSOCK ldy #S.FD.SOCK.WRITE
.HS 2C BIT ABS
*--------------------------------------
IO.READ.SSOCK ldy #S.FD.SSOCK.READ
IO.READ.SSOCK ldy #S.FD.SOCK.READ
lda (pFD),y
tax Function Offset in LIB
@ -210,7 +210,7 @@ IO.READ.SSOCK ldy #S.FD.SSOCK.READ
>PUSHW K.S.IOCTL+S.IOCTL.BYTECNT
>PUSHW K.S.IOCTL+S.IOCTL.BUFPTR
ldy #S.FD.SSOCK.HSKT
ldy #S.FD.SOCK.HSKT
lda (pFD),y
.1 jmp $ffff