mirror of
https://github.com/A2osX/A2osX.git
synced 2025-03-31 08:29:41 +00:00
Kernel 0.9.2
This commit is contained in:
parent
8bcf18386a
commit
005c2ee1c6
Binary file not shown.
Binary file not shown.
@ -37,28 +37,35 @@ L.LIBTCPIP .DA LIBTCPIP
|
||||
L.SSCANF.IP .DA SSCANF.IP
|
||||
L.MSG0 .DA MSG0
|
||||
L.MSG1 .DA MSG1
|
||||
L.MSG.USAGE .DA MSG.USAGE
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTCPIP
|
||||
>SYSCALL LoadLib
|
||||
sta hLIBTCPIP
|
||||
|
||||
* lda (pPs)
|
||||
* ora #S.PS.F.EVENT Now accept events
|
||||
* sta (pPs)
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
bne CS.RUN.ADD
|
||||
cmp #1
|
||||
bne .1
|
||||
jmp CS.RUN.DUMP
|
||||
*--------------------------------------
|
||||
CS.RUN.ADD cmp #2
|
||||
beq .1
|
||||
jmp .9
|
||||
|
||||
.1 >PUSHEA.G DST.IP+3
|
||||
.1 cmp #3
|
||||
beq CS.RUN.ADD
|
||||
|
||||
>PUSHBI 0
|
||||
>LDYA L.MSG.USAGE
|
||||
|
||||
>SYSCALL printf
|
||||
|
||||
lda #E.SYN
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
CS.RUN.ADD >PUSHEA.G DST.IP+3
|
||||
>PUSHEA.G DST.IP+2
|
||||
>PUSHEA.G DST.IP+1
|
||||
>PUSHEA.G DST.IP
|
||||
@ -152,10 +159,12 @@ CS.QUIT lda hLIBTCPIP
|
||||
*--------------------------------------
|
||||
CS.END
|
||||
LIBTCPIP .AZ "libtcpip"
|
||||
hLIBTCPIP .BS 1
|
||||
SSCANF.IP .AZ "%d.%d.%d.%d"
|
||||
MSG0 .AZ "STS TR.ID Hostname IP Address TTL"
|
||||
MSG1 .AZ "$%h $%H %32s %03d.%03d.%03d.%03d %u\r\n"
|
||||
hLIBTCPIP .BS 1
|
||||
MSG.USAGE .AS "Usage : Add a static entry, DNSINFO <host> <IP>\r\n"
|
||||
.AZ " Dump DNS Cache, DNSINFO \r\n"
|
||||
*--------------------------------------
|
||||
DS.START
|
||||
DST.IP .BS 4
|
||||
|
@ -39,7 +39,6 @@ CS.START cld
|
||||
.DA CS.QUIT
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.SA.LOCAL .DA SA.LOCAL
|
||||
L.SA.LOCAL.AD .DA SA.LOCAL+S.SOCKADDR.ADDR
|
||||
L.SA.REMOTE .DA SA.REMOTE
|
||||
L.SA.REMOTE.AD .DA SA.REMOTE+S.SOCKADDR.ADDR
|
||||
L.MSG.IPKO .DA MSG.IPKO
|
||||
@ -75,8 +74,17 @@ CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ?
|
||||
|
||||
CS.RUN.IPOK ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
|
||||
beq .9
|
||||
cmp #2
|
||||
bcc .9
|
||||
|
||||
ldy #S.IPCFG.IP+3
|
||||
ldx #3
|
||||
|
||||
.1 lda (ZPIPCfgPtr),y
|
||||
sta SA.LOCAL+S.SOCKADDR.ADDR,x
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
jsr Init.Timeout
|
||||
|
||||
@ -105,13 +113,10 @@ CS.RUN.IPOK ldy #S.PS.ARGC
|
||||
sec
|
||||
rts
|
||||
|
||||
CS.RUN.HOSTOK ldy #S.PS.ARGC
|
||||
lda (pPs),y
|
||||
cmp #2
|
||||
bcc CS.RUN.PORTOK
|
||||
|
||||
lda #2
|
||||
CS.RUN.HOSTOK lda #2
|
||||
>SYSCALL ArgV
|
||||
bcs CS.RUN.PORTOK
|
||||
|
||||
>SYSCALL atoi
|
||||
>STYA SA.REMOTE+S.SOCKADDR.PORT
|
||||
|
||||
@ -152,7 +157,8 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
|
||||
.2 >PUSHW L.SA.REMOTE
|
||||
>LDA.G hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Connect
|
||||
|
||||
bcs .9
|
||||
|
||||
>LDYA L.MSG.SKTOK
|
||||
>SYSCALL puts
|
||||
|
||||
@ -164,7 +170,6 @@ CS.RUN.OPENSKT >PUSHBI 0 no protocol
|
||||
>STA.G hBuf
|
||||
|
||||
CS.RUN.LOOP >SLEEP
|
||||
|
||||
>PUSHWI BUFSIZE
|
||||
>PUSHW ZPBufPtr
|
||||
>LDA.G hSocket
|
||||
@ -179,14 +184,15 @@ CS.RUN.LOOP >SLEEP
|
||||
>PUSHW ZPBufPtr
|
||||
ldy #S.PS.hStdOut
|
||||
lda (pPs),y
|
||||
>SYSCALL write
|
||||
>SYSCALL fwrite
|
||||
bcs .11
|
||||
|
||||
.2 >PUSHWI BUFSIZE
|
||||
>PUSHW ZPBufPtr
|
||||
ldy #S.PS.hStdIn
|
||||
lda (pPs),y
|
||||
>SYSCALL read
|
||||
|
||||
>SYSCALL fread
|
||||
bcc .3
|
||||
tay
|
||||
beq CS.RUN.LOOP no char from STDIN
|
||||
@ -198,14 +204,20 @@ CS.RUN.LOOP >SLEEP
|
||||
cmp #3 Ctrl-C
|
||||
beq CS.RUN.USER
|
||||
|
||||
>PUSHW ZPBufLen
|
||||
.4 >PUSHW ZPBufLen
|
||||
>PUSHW ZPBufPtr
|
||||
>LDA.G hSocket
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Write
|
||||
|
||||
bcs CS.RUN.SKTERR
|
||||
bcc .8
|
||||
|
||||
jmp CS.RUN.LOOP
|
||||
tay
|
||||
bne CS.RUN.SKTERR
|
||||
|
||||
* >SLEEP
|
||||
* bra .4
|
||||
|
||||
.8 jmp CS.RUN.LOOP
|
||||
|
||||
.9 lda #0
|
||||
sec
|
||||
|
@ -106,8 +106,16 @@ DNS.REQUEST lda hDNSSocket
|
||||
rts
|
||||
*--------------------------------------
|
||||
DNS.REQUEST.SEND
|
||||
|
||||
* TODO : >PUSHW L.SOCKADDR.DNS1....DNS2
|
||||
ldy #3
|
||||
.1 lda IPCFG+S.IPCFG.DNS1,y
|
||||
sta SA.REMOTE+S.SOCKADDR.ADDR,y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
>LDYAI UDP.PORT.DNS
|
||||
>STYA SA.REMOTE+S.SOCKADDR.PORT
|
||||
|
||||
>PUSHW L.SA.REMOTE
|
||||
|
||||
>PUSHW DNS.MSG.LEN
|
||||
>PUSHW L.DNS.MSG
|
||||
@ -415,7 +423,7 @@ DNS.DecodeMsg sta hFrameIn
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPFrameInPtr
|
||||
|
||||
ldy #S.DNS.F+1
|
||||
ldy #S.DNS.F
|
||||
lda (ZPFrameInPtr),y
|
||||
and /S.DNS.F.QR
|
||||
beq .9
|
||||
|
@ -16,22 +16,19 @@ AUTO 4,1
|
||||
* CC: A = hSOCKET
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.Socket tax type (RAW,DGRAM,SEQPACKET,STREAM)
|
||||
|
||||
SKT.Socket tax
|
||||
>PULLA get protocol (RAW)
|
||||
|
||||
SKT.Socket.I jmp (J.SKT.Socket,x)
|
||||
|
||||
SKT.Socket.RAW ldy #S.SOCKET socket.size
|
||||
|
||||
SKT.Socket.RAW ldy #S.SOCKET
|
||||
bra SKT.Socket.DSOCK
|
||||
SKT.Socket.DGRAM
|
||||
lda #S.IP.PROTOCOL.UDP
|
||||
ldy #S.SOCKET socket.size
|
||||
ldy #S.SOCKET
|
||||
bra SKT.Socket.DSOCK
|
||||
SKT.Socket.SEQPACKET
|
||||
lda #S.IP.PROTOCOL.TCP
|
||||
ldy #S.SOCKET.TCP socket.size
|
||||
|
||||
ldy #S.SOCKET.TCP
|
||||
SKT.Socket.DSOCK
|
||||
stx FD.DSOCK+S.SOCKET.T save type
|
||||
sta FD.DSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
|
||||
@ -40,27 +37,27 @@ SKT.Socket.DSOCK
|
||||
bcs .9
|
||||
>STYA ZPTmpPtr1
|
||||
stx FD.DSOCK+S.FD.DSOCK.HSKT
|
||||
|
||||
|
||||
jsr SKT.Socket.FindFree
|
||||
bcs .9
|
||||
|
||||
ldy #FD.DSOCK.SIZE-1
|
||||
|
||||
|
||||
.1 lda FD.DSOCK,y
|
||||
sta (ZPTmpPtr1),y
|
||||
dey
|
||||
bpl .1
|
||||
|
||||
|
||||
txa
|
||||
clc
|
||||
.9 rts
|
||||
|
||||
|
||||
SKT.Socket.STREAM
|
||||
lda #S.IP.PROTOCOL.TCP
|
||||
ldy #S.SOCKET.TCP
|
||||
|
||||
stx FD.SSOCK+S.SOCKET.T save type
|
||||
sta FD.SSOCK+S.SOCKET.PROTO ICMP,UDP,TCP
|
||||
sta FD.SSOCK+S.SOCKET.PROTO
|
||||
lda #0 Y = socket.size
|
||||
>SYSCALL GetMem0
|
||||
bcs .9
|
||||
@ -116,22 +113,21 @@ SKT.Socket.FindFree
|
||||
*\--------------------------------------
|
||||
SKT.bind >SYSCALL GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
|
||||
jsr SKT.PullLocAddr
|
||||
|
||||
|
||||
lda SKT.LOC.ADDR+S.SOCKADDR.PORT
|
||||
bne .1
|
||||
ldx SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
||||
bne .1
|
||||
|
||||
|
||||
jsr GetDynPort
|
||||
|
||||
|
||||
sta SKT.LOC.ADDR+S.SOCKADDR.PORT
|
||||
stx SKT.LOC.ADDR+S.SOCKADDR.PORT+1
|
||||
|
||||
|
||||
.1 jsr SKT.FindMatchingLoc
|
||||
bcc .9
|
||||
|
||||
|
||||
jsr SKT.SetLocAddr
|
||||
|
||||
clc
|
||||
@ -142,7 +138,7 @@ SKT.bind >SYSCALL GetMemPtr
|
||||
rts
|
||||
*/--------------------------------------
|
||||
* # Connect
|
||||
* Iinitiate a connection on a socket
|
||||
* Initiate a connection on a socket
|
||||
* ## C
|
||||
* `int connect(hFD fd, const struct sockaddr *addr);`
|
||||
* ## ASM
|
||||
@ -163,71 +159,27 @@ SKT.connect >SYSCALL GetMemPtr
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
jmp (J.SKT.connect,x)
|
||||
|
||||
SKT.connect.RAW
|
||||
SKT.connect.DGRAM
|
||||
|
||||
jsr SKT.SetRemAddr
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
SKT.connect.STREAM
|
||||
>LDYAI K.TCP.WSIZE
|
||||
>SYSCALL getmem
|
||||
bcs SKT.connect.99
|
||||
txa
|
||||
|
||||
ldy #S.SOCKET.SQ.hInMem
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
>LDYAI K.TCP.WSIZE
|
||||
>SYSCALL getmem
|
||||
bcs SKT.connect.99
|
||||
txa
|
||||
|
||||
ldy #S.SOCKET.SQ.hOutMem
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
SKT.connect.SEQPACKET
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda (ZPPtrSKT),y
|
||||
bne SKT.connect.9
|
||||
|
||||
jsr SKT.SetRemAddr
|
||||
jsr SKT.NewTCB
|
||||
bcs SKT.connect.99
|
||||
|
||||
lda #K.TCP.WSIZE
|
||||
ldy #S.SOCKET.TCP.INFREE
|
||||
sta (ZPPtrSKT),y
|
||||
ldy #S.SOCKET.TCP.OUTFREE
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
lda /K.TCP.WSIZE
|
||||
ldy #S.SOCKET.TCP.INFREE
|
||||
sta (ZPPtrSKT),y
|
||||
ldy #S.SOCKET.TCP.OUTFREE
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
ldy #S.SOCKET.TCP.OUTNEXTSEQ
|
||||
|
||||
.2 lda A2osX.TIMER16-S.SOCKET.TCP.OUTNEXTSEQ,y
|
||||
sta (ZPPtrSKT),y
|
||||
iny
|
||||
cpy #S.SOCKET.TCP.OUTNEXTSEQ+4
|
||||
bne .2
|
||||
|
||||
lda #S.TCP.OPTIONS.SYN
|
||||
jsr TCP.OUT.SendOptA Send SYN
|
||||
bcs .9
|
||||
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda #S.SOCKET.TCP.S.SYNSENT
|
||||
sta (ZPPtrSKT),y
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.S
|
||||
|
||||
clc
|
||||
.9 rts
|
||||
jmp SKT.StoreTCB
|
||||
|
||||
SKT.connect.9 lda #ERR.SKT.BAD
|
||||
.9 lda #ERR.SKT.BAD
|
||||
sec
|
||||
SKT.connect.99 rts
|
||||
*/--------------------------------------
|
||||
@ -358,9 +310,7 @@ SKT.shutdown >SYSCALL GetMemPtr
|
||||
>SYSCALL FreeMem
|
||||
bra .1
|
||||
|
||||
.8 lda #0
|
||||
sta (ZPPtrSKT)
|
||||
clc
|
||||
.8 clc
|
||||
rts
|
||||
|
||||
.9 lda #ERR.SKT.BAD
|
||||
@ -474,7 +424,7 @@ SKT.Write >SYSCALL GetMemPtr
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda (ZPPtrSKT),y
|
||||
cmp #S.SOCKET.TCP.S.ESTBLSH
|
||||
bne .91
|
||||
bcc .90 Not yet established...no data
|
||||
|
||||
jsr SKT.AddDataToSktOut will call SKT.GetTCB
|
||||
bcs .90
|
||||
@ -509,11 +459,16 @@ SKT.Write >SYSCALL GetMemPtr
|
||||
* CC: A = hMem
|
||||
* CS: A = EC
|
||||
*\--------------------------------------
|
||||
SKT.RecvFrom sec
|
||||
SKT.RecvFrom pha
|
||||
>PULLW ZPTmpPtr1 addr
|
||||
pla
|
||||
|
||||
sec
|
||||
.HS 90 BCC
|
||||
SKT.Recv clc
|
||||
php
|
||||
|
||||
php
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPPtrSKT
|
||||
|
||||
@ -544,13 +499,12 @@ SKT.Recv clc
|
||||
tay
|
||||
lda (ZPPtrSKT),y
|
||||
plp
|
||||
bcc .9
|
||||
bcc .9 Exit with CC and A=hFrame
|
||||
|
||||
pha
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPFrameInPtr
|
||||
|
||||
>PULLW ZPTmpPtr1 addr
|
||||
|
||||
ldy #S.IP.SRC
|
||||
|
||||
.2 lda (ZPFrameInPtr),y
|
||||
@ -625,41 +579,35 @@ SKT.Send clc
|
||||
>STYA ZPPtrSKT
|
||||
plp
|
||||
|
||||
>PULLW ZPDataInPtr
|
||||
>PULLW ZPDataInLen
|
||||
|
||||
bcc .1
|
||||
|
||||
jsr SKT.PullRemAddr
|
||||
jsr SKT.SetRemAddr
|
||||
|
||||
.1 >PULLW ZPDataInPtr
|
||||
>PULLW ZPDataInLen
|
||||
|
||||
ldy #S.SOCKET.T
|
||||
.1 ldy #S.SOCKET.T
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
jmp (J.SKT.send,x)
|
||||
*--------------------------------------
|
||||
SKT.Send.RAW ldy #S.SOCKET.PROTO
|
||||
lda (ZPPtrSKT),y
|
||||
|
||||
tax
|
||||
>LDYA ZPDataInLen
|
||||
jsr FRM.NewIP
|
||||
bcs SKT.Send.9
|
||||
|
||||
bra SKT.Send.DGRAM.8
|
||||
*--------------------------------------
|
||||
SKT.Send.DGRAM ldx #S.IP.PROTOCOL.UDP
|
||||
>LDYA ZPDataInLen
|
||||
jsr FRM.NewIP
|
||||
bcs SKT.Send.9
|
||||
|
||||
jsr SKT.SetFrameOutTCPUDPPorts
|
||||
|
||||
SKT.Send.DGRAM.8
|
||||
|
||||
jsr SKT.SetFrameOutDstIP
|
||||
|
||||
jsr SKT.CopyDataInToOut
|
||||
|
||||
jmp FRM.SendIP
|
||||
*--------------------------------------
|
||||
SKT.Send.STREAM lda #ERR.SKT.BAD
|
||||
@ -685,9 +633,7 @@ SKT.GetTable >LDYA L.SKT.Table
|
||||
* PRIVATE
|
||||
*--------------------------------------
|
||||
SKT.PullLocAddr >PULLW ZPTmpPtr1
|
||||
|
||||
ldy #S.SOCKADDR-1
|
||||
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
sta SKT.LOC.ADDR,y
|
||||
dey
|
||||
@ -695,9 +641,7 @@ SKT.PullLocAddr >PULLW ZPTmpPtr1
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.PullRemAddr >PULLW ZPTmpPtr1
|
||||
|
||||
ldy #S.SOCKADDR-1
|
||||
|
||||
.1 lda (ZPTmpPtr1),y
|
||||
sta SKT.REM.ADDR,y
|
||||
dey
|
||||
@ -705,7 +649,6 @@ SKT.PullRemAddr >PULLW ZPTmpPtr1
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.SetLocAddr ldy #S.SOCKET.LOC.ADDR
|
||||
|
||||
.1 lda SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
||||
sta (ZPPtrSKT),y
|
||||
iny
|
||||
@ -714,7 +657,6 @@ SKT.SetLocAddr ldy #S.SOCKET.LOC.ADDR
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.SetRemAddr ldy #S.SOCKET.REM.ADDR
|
||||
|
||||
.1 lda SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
|
||||
sta (ZPPtrSKT),y
|
||||
iny
|
||||
@ -724,105 +666,118 @@ SKT.SetRemAddr ldy #S.SOCKET.REM.ADDR
|
||||
*--------------------------------------
|
||||
SKT.FindMatchingLocRem
|
||||
ldx #0
|
||||
|
||||
|
||||
.1 lda SKT.TABLE,x
|
||||
beq .8
|
||||
|
||||
|
||||
phx
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPTmpPtr1
|
||||
plx
|
||||
|
||||
ldy #0
|
||||
|
||||
|
||||
ldy #S.SOCKET.AF
|
||||
lda (ZPTmpPtr1),y
|
||||
cmp #AF.INET
|
||||
bne .8
|
||||
|
||||
ldy #S.SOCKET.LOC.ADDR
|
||||
|
||||
.2 lda (ZPTmpPtr1),y
|
||||
bne .4
|
||||
|
||||
|
||||
ldy #S.SOCKET.LOC.PORT This Socket is bound to 0.0.0.0,check only LOC port
|
||||
|
||||
.3 lda (ZPTmpPtr1),y
|
||||
|
||||
|
||||
.4 cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
||||
bne .8
|
||||
iny
|
||||
cpy #S.SOCKET.REM.ADDR
|
||||
cpy #S.SOCKET.LOC.PORT+2
|
||||
bne .3
|
||||
|
||||
lda SKT.REM.ADDR+S.SOCKADDR.ADDR
|
||||
cmp #$ff FF.FF.FF.FF, Broadcast ?
|
||||
bne .5
|
||||
|
||||
|
||||
ldy #S.SOCKET.O
|
||||
lda (ZPTmpPtr1),y
|
||||
and #S.SOCKET.O.ACCEPTCONN
|
||||
beq .6
|
||||
|
||||
ldy #S.TCP.OPTIONS Listening, only SYN packet....
|
||||
lda (ZPFrameInPtr),y
|
||||
cmp #S.TCP.OPTIONS.SYN
|
||||
beq .7 a SYN recieved on a LISTEN socket, ok
|
||||
bne .8 bad packet for this listening
|
||||
|
||||
.6 lda SKT.REM.ADDR+S.SOCKADDR.ADDR
|
||||
cmp #$ff FF.FF.FF.FF, Broadcast ?
|
||||
bne .41
|
||||
|
||||
* ldy #S.SOCKET.O
|
||||
lda (ZPTmpPtr1),y
|
||||
and #S.SOCKET.O.BROADCAST
|
||||
beq .9 this socket does not accept broadcast
|
||||
|
||||
ldy #S.SOCKET.REM.PORT Boradcast, check port only
|
||||
bra .5
|
||||
|
||||
.41 ldy #S.SOCKET.REM.ADDR
|
||||
|
||||
.5 lda (ZPTmpPtr1),y
|
||||
cmp SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y
|
||||
bne .9 wrong remote host, exit....
|
||||
bne .8 wrong remote host, exit....
|
||||
iny
|
||||
cpy #S.SOCKET.REM.PORT+2
|
||||
bne .5
|
||||
|
||||
>LDYA ZPTmpPtr1 x = SKT.TABLE index
|
||||
.7 >LDYA ZPTmpPtr1 x = SKT.TABLE index
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.8 inx
|
||||
cpx #K.SKTTABLE.SIZE
|
||||
bne .1
|
||||
|
||||
|
||||
.9 sec
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.FindMatchingLoc
|
||||
|
||||
ldy #S.SOCKET.LOC.PORT+1
|
||||
phy
|
||||
|
||||
ldx #0
|
||||
|
||||
|
||||
.1 lda SKT.TABLE,x
|
||||
beq .7
|
||||
|
||||
|
||||
phx
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPTmpPtr1
|
||||
plx
|
||||
|
||||
ply
|
||||
phy
|
||||
|
||||
|
||||
ldy #S.SOCKET.AF
|
||||
lda (ZPTmpPtr1),y
|
||||
cmp #AF.INET
|
||||
bne .7
|
||||
|
||||
ldy #S.SOCKET.LOC.ADDR
|
||||
|
||||
.2 lda (ZPTmpPtr1),y
|
||||
cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y
|
||||
bne .7
|
||||
dey
|
||||
cpy #S.SOCKET.LOC.ADDR-1
|
||||
iny
|
||||
cpy #S.SOCKET.LOC.PORT+2
|
||||
bne .2
|
||||
|
||||
ply
|
||||
|
||||
|
||||
>LDYA ZPTmpPtr1 x = SKT.TABLE index
|
||||
clc
|
||||
rts
|
||||
|
||||
|
||||
.7 inx
|
||||
cpx #K.SKTTABLE.SIZE
|
||||
bne .1
|
||||
|
||||
ply
|
||||
|
||||
|
||||
* sec
|
||||
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
* ZPPtrSKT -> actual socket
|
||||
* A = hSocket or hFrame
|
||||
*--------------------------------------
|
||||
SKT.AddToQueueA sta .2+1
|
||||
SKT.AddToQueueA pha
|
||||
ldy #S.SOCKET.HQ.HEAD
|
||||
lda (ZPPtrSKT),y
|
||||
tax
|
||||
@ -830,24 +785,25 @@ SKT.AddToQueueA sta .2+1
|
||||
cmp #S.SOCKET.HQ.MAX
|
||||
bne .1
|
||||
lda #0
|
||||
|
||||
|
||||
.1 ldy #S.SOCKET.HQ.TAIL
|
||||
cmp (ZPPtrSKT),y
|
||||
beq .9 Queue full!!
|
||||
|
||||
|
||||
ldy #S.SOCKET.HQ.HEAD
|
||||
sta (ZPPtrSKT),y
|
||||
txa
|
||||
clc
|
||||
adc #S.SOCKET.HQ
|
||||
tay
|
||||
|
||||
.2 lda #$ff
|
||||
|
||||
pla
|
||||
sta (ZPPtrSKT),y
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 sec
|
||||
|
||||
.9 pla dicard hFrame
|
||||
* sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
* From TCP.IN
|
||||
@ -860,7 +816,7 @@ SKT.AddDataToSktIn
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||
sbc ZPDataInLen+1
|
||||
bcc .9 Not enough room in Q
|
||||
|
||||
|
||||
ldy #S.TCP.SEQNUM+3
|
||||
ldx #3
|
||||
|
||||
@ -870,7 +826,7 @@ SKT.AddDataToSktIn
|
||||
dey
|
||||
dex
|
||||
bpl .10
|
||||
|
||||
|
||||
ldy #S.SOCKET.SQ.hInMem
|
||||
lda (ZPPtrSKT),y
|
||||
>SYSCALL GetMemPtr
|
||||
@ -884,15 +840,15 @@ SKT.AddDataToSktIn
|
||||
lda ZPTmpPtr1+1
|
||||
adc SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
||||
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
||||
|
||||
|
||||
lda ZPDataInLen
|
||||
eor #$FF
|
||||
tax
|
||||
|
||||
|
||||
lda ZPDataInLen+1
|
||||
eor #$FF
|
||||
pha
|
||||
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 inx
|
||||
@ -900,9 +856,9 @@ SKT.AddDataToSktIn
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
|
||||
|
||||
pha
|
||||
|
||||
|
||||
.2 lda (ZPDataInPtr),y
|
||||
sta (ZPTmpPtr2)
|
||||
iny
|
||||
@ -912,7 +868,7 @@ SKT.AddDataToSktIn
|
||||
.3 inc ZPTmpPtr2
|
||||
bne .4
|
||||
inc ZPTmpPtr2+1
|
||||
|
||||
|
||||
.4 inc SKT.TmpCache+S.SOCKET.TCP.INHEAD
|
||||
bne .1
|
||||
inc SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
||||
@ -920,7 +876,7 @@ SKT.AddDataToSktIn
|
||||
cmp /K.TCP.WSIZE
|
||||
bne .1
|
||||
stz SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
||||
|
||||
|
||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||
sta ZPTmpPtr2
|
||||
lda ZPTmpPtr1+1
|
||||
@ -929,31 +885,31 @@ SKT.AddDataToSktIn
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
|
||||
|
||||
.8 lda SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||
sec
|
||||
sbc ZPDataInLen
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||
sbc ZPDataInLen+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INUSED
|
||||
clc
|
||||
adc ZPDataInLen
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.INUSED
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INUSED+1
|
||||
adc ZPDataInLen+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.INUSED+1
|
||||
|
||||
|
||||
clc
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+3
|
||||
adc ZPDataInLen
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+3
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+2
|
||||
adc ZPDataInLen+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.INLASTSEQNUM+2
|
||||
@ -993,20 +949,20 @@ SKT.GetDataFromSktIn
|
||||
lda ZPTmpPtr1+1
|
||||
adc SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||
sta ZPTmpPtr2+1
|
||||
|
||||
|
||||
lda ZPDataInLen
|
||||
eor #$FF
|
||||
tax
|
||||
|
||||
|
||||
lda ZPDataInLen+1
|
||||
eor #$FF
|
||||
pha
|
||||
|
||||
|
||||
stz ZPTmpPtr3 Reset byte counter
|
||||
stz ZPTmpPtr3+1
|
||||
|
||||
|
||||
ldy #0
|
||||
|
||||
|
||||
.1 inx Check if room left in dest buffer
|
||||
bne .2
|
||||
pla
|
||||
@ -1014,60 +970,60 @@ SKT.GetDataFromSktIn
|
||||
beq .8
|
||||
|
||||
pha
|
||||
|
||||
|
||||
.2 lda SKT.TmpCache+S.SOCKET.TCP.INTAIL
|
||||
eor SKT.TmpCache+S.SOCKET.TCP.INHEAD
|
||||
bne .3
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||
eor SKT.TmpCache+S.SOCKET.TCP.INHEAD+1
|
||||
beq .7 no more data....
|
||||
|
||||
|
||||
.3 lda (ZPTmpPtr2)
|
||||
pha
|
||||
|
||||
|
||||
inc SKT.TmpCache+S.SOCKET.TCP.INTAIL
|
||||
bne .4
|
||||
|
||||
|
||||
inc SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||
cmp /K.TCP.WSIZE
|
||||
bne .4
|
||||
|
||||
|
||||
stz SKT.TmpCache+S.SOCKET.TCP.INTAIL+1
|
||||
lda ZPTmpPtr1
|
||||
sta ZPTmpPtr2
|
||||
lda ZPTmpPtr1+1
|
||||
sta ZPTmpPtr2+1
|
||||
bra .5
|
||||
|
||||
|
||||
.4 inc ZPTmpPtr2
|
||||
bne .5
|
||||
inc ZPTmpPtr2+1
|
||||
|
||||
|
||||
.5 pla get back data....
|
||||
|
||||
|
||||
.6 sta (ZPDataInPtr),y
|
||||
iny
|
||||
bne .61
|
||||
inc ZPDataInPtr+1
|
||||
|
||||
|
||||
.61 inc ZPTmpPtr3
|
||||
bne .1
|
||||
inc ZPTmpPtr3+1
|
||||
|
||||
|
||||
bra .1
|
||||
|
||||
|
||||
.7 pla discard byte counter HI
|
||||
|
||||
.8 lda ZPTmpPtr3 Do we have transfered something?
|
||||
ora ZPTmpPtr3+1
|
||||
beq .9
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||
clc
|
||||
adc ZPTmpPtr3
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||
adc ZPTmpPtr3+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.INFREE+1
|
||||
@ -1085,16 +1041,16 @@ SKT.GetDataFromSktIn
|
||||
clc
|
||||
adc ZPTmpPtr3
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+3
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+2
|
||||
adc ZPTmpPtr3+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+2
|
||||
|
||||
|
||||
bcc .80
|
||||
inc SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM+1
|
||||
bne .80
|
||||
inc SKT.TmpCache+S.SOCKET.TCP.OUTACKNUM
|
||||
|
||||
|
||||
.80 jsr SKT.StoreTCB
|
||||
|
||||
ldy #S.SOCKET.TCP.O
|
||||
@ -1103,11 +1059,10 @@ SKT.GetDataFromSktIn
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
jsr TCP.OUT.I SKT.GetTCB already called, Try to ACK read DATA
|
||||
|
||||
|
||||
>LDYA ZPTmpPtr3
|
||||
clc
|
||||
rts
|
||||
|
||||
.9
|
||||
* lda #0 NO DATA
|
||||
sec
|
||||
@ -1138,15 +1093,15 @@ SKT.AddDataToSktOut
|
||||
lda ZPTmpPtr1+1
|
||||
adc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
||||
sta ZPTmpPtr2+1 Make ZPTmpPtr2=base+Tail
|
||||
|
||||
|
||||
lda ZPDataInLen
|
||||
eor #$FF
|
||||
tax
|
||||
|
||||
|
||||
lda ZPDataInLen+1
|
||||
eor #$FF
|
||||
pha
|
||||
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 inx
|
||||
@ -1154,9 +1109,9 @@ SKT.AddDataToSktOut
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
|
||||
|
||||
pha
|
||||
|
||||
|
||||
.2 lda (ZPDataInPtr),y
|
||||
sta (ZPTmpPtr2)
|
||||
iny
|
||||
@ -1166,7 +1121,7 @@ SKT.AddDataToSktOut
|
||||
.3 inc ZPTmpPtr2
|
||||
bne .4
|
||||
inc ZPTmpPtr2+1
|
||||
|
||||
|
||||
.4 inc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD
|
||||
bne .1
|
||||
inc SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
||||
@ -1174,7 +1129,7 @@ SKT.AddDataToSktOut
|
||||
cmp /K.TCP.WSIZE
|
||||
bne .1
|
||||
stz SKT.TmpCache+S.SOCKET.TCP.OUTHEAD+1
|
||||
|
||||
|
||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||
sta ZPTmpPtr2
|
||||
lda ZPTmpPtr1+1
|
||||
@ -1183,7 +1138,7 @@ SKT.AddDataToSktOut
|
||||
|
||||
.9 sec
|
||||
rts
|
||||
|
||||
|
||||
.8 lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE
|
||||
sec
|
||||
sbc ZPDataInLen
|
||||
@ -1191,7 +1146,7 @@ SKT.AddDataToSktOut
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||
sbc ZPDataInLen+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED
|
||||
clc
|
||||
adc ZPDataInLen
|
||||
@ -1199,7 +1154,7 @@ SKT.AddDataToSktOut
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
||||
adc ZPDataInLen+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND
|
||||
clc
|
||||
adc ZPDataInLen
|
||||
@ -1207,8 +1162,7 @@ SKT.AddDataToSktOut
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
||||
adc ZPDataInLen+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
||||
jsr SKT.StoreTCB
|
||||
rts
|
||||
jmp SKT.StoreTCB
|
||||
*--------------------------------------
|
||||
* From TCP.OUT
|
||||
* Src : hOutMem/OUTTAIL
|
||||
@ -1217,7 +1171,7 @@ SKT.AddDataToSktOut
|
||||
SKT.GetDataFromSktOut
|
||||
ldy #S.SOCKET.SQ.hOutMem
|
||||
lda (ZPPtrSKT),y
|
||||
|
||||
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPTmpPtr1 Make ZPTmpPtr1=buffer base
|
||||
|
||||
@ -1229,15 +1183,15 @@ SKT.GetDataFromSktOut
|
||||
lda ZPTmpPtr1+1
|
||||
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||
sta ZPTmpPtr2+1
|
||||
|
||||
|
||||
lda ZPDataOutLen
|
||||
eor #$FF
|
||||
tax
|
||||
|
||||
|
||||
lda ZPDataOutLen+1
|
||||
eor #$FF
|
||||
pha
|
||||
|
||||
|
||||
ldy #0
|
||||
|
||||
.1 inx
|
||||
@ -1245,9 +1199,9 @@ SKT.GetDataFromSktOut
|
||||
pla
|
||||
inc
|
||||
beq .8
|
||||
|
||||
|
||||
pha
|
||||
|
||||
|
||||
.2 lda (ZPTmpPtr2)
|
||||
sta (ZPDataOutPtr),y
|
||||
iny
|
||||
@ -1257,7 +1211,7 @@ SKT.GetDataFromSktOut
|
||||
.3 inc ZPTmpPtr2
|
||||
bne .4
|
||||
inc ZPTmpPtr2+1
|
||||
|
||||
|
||||
.4 inc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT
|
||||
bne .1
|
||||
inc SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||
@ -1265,7 +1219,7 @@ SKT.GetDataFromSktOut
|
||||
cmp /K.TCP.WSIZE
|
||||
bne .1
|
||||
stz SKT.TmpCache+S.SOCKET.TCP.OUTTAILNEXT+1
|
||||
|
||||
|
||||
lda ZPTmpPtr1 Dst Ptr=Buffer Base
|
||||
sta ZPTmpPtr2
|
||||
lda ZPTmpPtr1+1
|
||||
@ -1279,7 +1233,7 @@ SKT.GetDataFromSktOut
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
||||
sbc ZPDataOutLen+1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTTOSEND+1
|
||||
|
||||
|
||||
clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
@ -1302,22 +1256,21 @@ SKT.AckDataToSktOut
|
||||
dey
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
|
||||
lda TmpDWord+3
|
||||
ldx TmpDWord+2
|
||||
bne .2
|
||||
tay
|
||||
beq .8
|
||||
|
||||
|
||||
.2 clc
|
||||
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAIL
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTTAIL
|
||||
|
||||
|
||||
txa
|
||||
adc SKT.TmpCache+S.SOCKET.TCP.OUTTAIL+1
|
||||
and /K.TCP.WSIZE-1
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTTAIL+1
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE
|
||||
clc
|
||||
adc TmpDWord+3
|
||||
@ -1325,7 +1278,7 @@ SKT.AckDataToSktOut
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||
adc TmpDWord+2
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTFREE+1
|
||||
|
||||
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED
|
||||
sec
|
||||
sbc TmpDWord+3
|
||||
@ -1333,57 +1286,83 @@ SKT.AckDataToSktOut
|
||||
lda SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
||||
sbc TmpDWord+2
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTUSED+1
|
||||
|
||||
|
||||
.8 rts
|
||||
*--------------------------------------
|
||||
SKT.GetTCB ldy #S.SOCKET.TCP-S.SOCKET
|
||||
|
||||
.1 dey
|
||||
lda (ZPPtrSKT),y
|
||||
sta SKT.TmpCache,y
|
||||
cpy #S.SOCKET
|
||||
SKT.NewTCB ldx #S.SOCKET
|
||||
|
||||
.1 stz SKT.TmpCache,x
|
||||
inx
|
||||
cpx #S.SOCKET.TCP
|
||||
bne .1
|
||||
|
||||
>LDYAI K.TCP.WSIZE
|
||||
>STYA SKT.TmpCache+S.SOCKET.TCP.INFREE
|
||||
>SYSCALL getmem
|
||||
bcs SKT.StoreTCB.RTS
|
||||
txa
|
||||
ldy #S.SOCKET.SQ.hInMem
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
>LDYAI K.TCP.WSIZE
|
||||
>STYA SKT.TmpCache+S.SOCKET.TCP.OUTFREE
|
||||
>SYSCALL getmem
|
||||
bcs SKT.StoreTCB.RTS
|
||||
txa
|
||||
ldy #S.SOCKET.SQ.hOutMem
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
ldx #3
|
||||
|
||||
.2 lda A2osX.TIMER16,x
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.OUTNEXTSEQ,x
|
||||
dex
|
||||
bpl .2
|
||||
*--------------------------------------
|
||||
SKT.StoreTCB ldy #S.SOCKET
|
||||
.1 lda SKT.TmpCache,y
|
||||
sta (ZPPtrSKT),y
|
||||
iny
|
||||
cpy #S.SOCKET.TCP
|
||||
bne .1
|
||||
clc Make CC for successfull exit
|
||||
SKT.StoreTCB.RTS
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.StoreTCB ldy #S.SOCKET.TCP-S.SOCKET
|
||||
|
||||
.1 dey
|
||||
lda SKT.TmpCache,y
|
||||
sta (ZPPtrSKT),y
|
||||
cpy #S.SOCKET
|
||||
SKT.GetTCB ldy #S.SOCKET
|
||||
.1 lda (ZPPtrSKT),y
|
||||
sta SKT.TmpCache,y
|
||||
iny
|
||||
cpy #S.SOCKET.TCP
|
||||
bne .1
|
||||
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.Destroy ldy #S.SOCKET.SQ.hOutMem
|
||||
lda (ZPPtrSKT),y
|
||||
beq .1
|
||||
>SYSCALL FreeMem
|
||||
|
||||
|
||||
.1 ldy #S.SOCKET.SQ.hInMem
|
||||
lda (ZPPtrSKT),y
|
||||
beq .2
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.2 lda #0
|
||||
sta (ZPPtrSKT)
|
||||
clc
|
||||
|
||||
.2 clc
|
||||
rts
|
||||
*--------------------------------------
|
||||
SKT.SetFrameOutDstIP
|
||||
ldy #S.SOCKET.REM.ADDR
|
||||
ldx #4
|
||||
|
||||
|
||||
.1 lda (ZPPtrSKT),y
|
||||
pha
|
||||
iny
|
||||
dex
|
||||
bne .1
|
||||
|
||||
|
||||
ldy #S.IP.DST+3
|
||||
ldx #4
|
||||
|
||||
|
||||
.2 pla
|
||||
sta (ZPFrameOutPtr),y
|
||||
dey
|
||||
|
@ -4,13 +4,12 @@ AUTO 4,1
|
||||
.LIST OFF
|
||||
*--------------------------------------
|
||||
TCP.IN jsr FRM.GetTargetSKT.TCPUDP
|
||||
>DEBUG
|
||||
|
||||
|
||||
jsr SKT.FindMatchingLocRem
|
||||
bcs TCP.IN.JMP.CLOSED no socket, go discard
|
||||
|
||||
>STYA ZPPtrSKT
|
||||
|
||||
|
||||
ldy #S.SOCKET.PROTO
|
||||
lda (ZPPtrSKT),y
|
||||
cmp #S.IP.PROTOCOL.TCP
|
||||
@ -35,20 +34,15 @@ TCP.IN.JMP.CLOSED
|
||||
rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.LISTEN
|
||||
ldy #S.TCP.OPTIONS SYN Received, send SYN.ACK packet
|
||||
lda (ZPFrameInPtr),y
|
||||
cmp #S.TCP.OPTIONS.SYN
|
||||
bne TCP.IN.JMP.CLOSED
|
||||
|
||||
ldy #S.SOCKET.T Create a new client socket
|
||||
lda (ZPPtrSKT),y
|
||||
tax Same type a listening socket
|
||||
|
||||
iny #S.SOCKET.PROTO
|
||||
lda (ZPPtrSKT),y
|
||||
|
||||
jsr SKT.Socket.I get new socket in ZPTmpPtr1
|
||||
bcs TCP.IN.JMP.CLOSED
|
||||
|
||||
txa
|
||||
|
||||
jsr SKT.AddToQueueA Queued successfully ?
|
||||
|
||||
bcs TCP.IN.JMP.CLOSED no, discard frame and new socket
|
||||
@ -57,27 +51,26 @@ TCP.IN.JMP.LISTEN
|
||||
|
||||
lda ZPTmpPtr1
|
||||
sta ZPPtrSKT
|
||||
ldaZPTmpPtr1+1
|
||||
lda ZPTmpPtr1+1
|
||||
sta ZPPtrSKT+1
|
||||
|
||||
jsr TCP.IN.ACKTheSYN
|
||||
jsr SKT.SetLocAddr
|
||||
jsr SKT.SetRemAddr
|
||||
|
||||
jsr SKT.NewTCB
|
||||
bcs .99
|
||||
|
||||
jsr SKT.StoreTCB
|
||||
jsr TCP.IN.ACKTheSYN
|
||||
|
||||
lda #S.TCP.OPTIONS.SYN+S.TCP.OPTIONS.ACK
|
||||
jsr TCP.OUT.SendOptA SYN received, Send SYN.ACK
|
||||
bcs .9
|
||||
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda #S.SOCKET.TCP.S.SYNRCVD
|
||||
sta (ZPPtrSKT),y
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.S
|
||||
jmp SKT.StoreTCB
|
||||
|
||||
clc
|
||||
rts
|
||||
|
||||
.9 lda #0 error
|
||||
sta (ZPPtrSKT) clear this socket
|
||||
lda #ERR.SKT.OOS
|
||||
.9 lda #ERR.SKT.OOS
|
||||
.99 rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.SYNSENT
|
||||
@ -109,10 +102,8 @@ TCP.IN.JMP.SYNSENT
|
||||
jsr TCP.OUT.SendOptA SYN.ACK recieved, Send, ACK
|
||||
bcs .9
|
||||
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda #S.SOCKET.TCP.S.ESTBLSH
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.S
|
||||
jmp SKT.StoreTCB
|
||||
|
||||
.9 lda #S.TCP.OPTIONS.RST
|
||||
@ -143,9 +134,8 @@ TCP.IN.JMP.SYNRCVD
|
||||
dex
|
||||
bpl .1
|
||||
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda #S.SOCKET.TCP.S.ESTBLSH
|
||||
sta (ZPPtrSKT),y
|
||||
sta SKT.TmpCache+S.SOCKET.TCP.S
|
||||
jmp SKT.StoreTCB
|
||||
|
||||
.8 clc
|
||||
@ -185,12 +175,13 @@ TCP.IN.JMP.ESTBLSH
|
||||
ldy #S.SOCKET.TCP.S
|
||||
lda #S.SOCKET.TCP.S.CLWAIT
|
||||
sta (ZPPtrSKT),y
|
||||
|
||||
jmp SKT.StoreTCB
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.CLWAIT
|
||||
clc Wait for SKT.CloseA from Daemon
|
||||
clc Wait for SKT.shutdown
|
||||
rts
|
||||
*--------------------------------------
|
||||
TCP.IN.JMP.LASTACK
|
||||
|
@ -133,16 +133,16 @@ J.TCP.IN .DA TCP.IN.JMP.CLOSED
|
||||
.DA TCP.IN.JMP.TIMEWT
|
||||
J.SKT.Socket .DA SKT.Socket.RAW
|
||||
.DA SKT.Socket.DGRAM
|
||||
.DA SKT.Socket.STREAM
|
||||
.DA SKT.Socket.SEQPACKET
|
||||
.DA SKT.Socket.STREAM
|
||||
J.SKT.connect .DA SKT.connect.RAW
|
||||
.DA SKT.connect.DGRAM
|
||||
.DA SKT.connect.STREAM
|
||||
.DA SKT.connect.SEQPACKET
|
||||
.DA SKT.connect.STREAM
|
||||
J.SKT.send .DA SKT.send.RAW
|
||||
.DA SKT.send.DGRAM
|
||||
.DA SKT.send.STREAM
|
||||
.DA SKT.send.SEQPACKET
|
||||
.DA SKT.send.STREAM
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
LIB.LOAD ldx RefCount
|
||||
@ -211,7 +211,6 @@ POLL >PUSHW L.IOCTL
|
||||
jmp IP.IN
|
||||
|
||||
.9 lda hFrameIn
|
||||
beq LIB.UNLOAD.8
|
||||
>SYSCALL FreeMem
|
||||
|
||||
.99 rts
|
||||
@ -222,11 +221,10 @@ POLL >PUSHW L.IOCTL
|
||||
PULSE and #S.EVT.F.T1SEC
|
||||
beq .1
|
||||
|
||||
* jsr ARP.EXPIRE
|
||||
* jsr DNS.EXPIRE
|
||||
jsr ARP.EXPIRE
|
||||
jsr DNS.EXPIRE
|
||||
|
||||
.1
|
||||
* jsr DNS.POLL
|
||||
.1 jsr DNS.POLL
|
||||
jmp FRM.RETRY
|
||||
*--------------------------------------
|
||||
GetDynPort inc DYNPORT.LAST
|
||||
@ -319,9 +317,9 @@ FD.DSOCK.SIZE .EQ *-FD.DSOCK
|
||||
*--------------------------------------
|
||||
FD.SSOCK .DA #S.FD.T.SSOCK
|
||||
.BS 1 S.FD.HANDLER
|
||||
.BS 1 S.FD.DSOCK.HSKT
|
||||
.DA #0 S.FD.DSOCK.OPEN
|
||||
.DA #0 S.FD.DSOCK.CLOSE
|
||||
.BS 1 S.FD.SSOCK.HSKT
|
||||
.DA #0 S.FD.SSOCK.OPEN
|
||||
.DA #0 S.FD.SSOCK.CLOSE
|
||||
.DA #LIBTCPIP.Read
|
||||
.DA #LIBTCPIP.Write
|
||||
.DA #0 S.FD.DSOCK.STATUS
|
||||
|
@ -55,6 +55,7 @@ CS.RUN ldy #S.PS.ARGC
|
||||
>PUSHBI O.RDWR
|
||||
lda #1
|
||||
>SYSCALL ArgV get /dev/xxx
|
||||
|
||||
>SYSCALL fopen
|
||||
bcs .9
|
||||
|
||||
|
@ -40,14 +40,14 @@ CS.START cld
|
||||
.DA CS.QUIT
|
||||
L.LIBTCPIP .DA LIBTCPIP
|
||||
L.SA.LOCAL .DA SA.LOCAL
|
||||
L.NOD.Template .DA NOD.Template
|
||||
L.NOD.Name .DA NOD.Name
|
||||
L.MSG.TCPWAIT .DA MSG.TCPWAIT
|
||||
L.MSG.INITOK .DA MSG.INITOK
|
||||
L.MSG.TCPIPERR .DA MSG.TCPIPERR
|
||||
L.MSG.SKTERR .DA MSG.SKTERR
|
||||
L.MSG.ABORT .DA MSG.ABORT
|
||||
L.MSG.INCOMING .DA MSG.INCOMING
|
||||
L.NOD.Template .DA NOD.Template
|
||||
L.CMD.Template .DA CMD.Template
|
||||
.DA 0
|
||||
*--------------------------------------
|
||||
CS.INIT >LDYA L.LIBTCPIP
|
||||
@ -163,6 +163,8 @@ CS.RUN.CLIENT sta (pData),y
|
||||
>SYSCALL GetMemPtr
|
||||
>STYA ZPSktPtr
|
||||
|
||||
>PUSHB.G hClientSocket
|
||||
|
||||
ldx #3
|
||||
ldy #S.SOCKET.REM.ADDR+3
|
||||
|
||||
@ -171,24 +173,34 @@ CS.RUN.CLIENT sta (pData),y
|
||||
dex
|
||||
bpl .3
|
||||
|
||||
>PUSHB.G hClientSocket
|
||||
|
||||
>PUSHBI 5
|
||||
>LDYA L.MSG.INCOMING
|
||||
>SYSCALL printf
|
||||
bcs .9
|
||||
|
||||
>PUSHB.G hClientSocket
|
||||
>PUSHBI 1
|
||||
>PUSHWI L.NOD.Template
|
||||
>LDYAI L.NOD.Name
|
||||
>PUSHW L.NOD.Template
|
||||
>LEA.G NodBuf
|
||||
>SYSCALL sprintf
|
||||
|
||||
>PUSHB.G hClientSocket
|
||||
>PUSHW 0
|
||||
>LDYAI L.NOD.Name
|
||||
>LEA.G NodBuf
|
||||
>SYSCALL mknod
|
||||
bcs .9
|
||||
|
||||
>PUSHEA.G NodBuf
|
||||
>PUSHBI 2
|
||||
>PUSHW L.CMD.Template
|
||||
>LEA.G CmdBuf
|
||||
>SYSCALL sprintf
|
||||
|
||||
>LEA.G CmdBuf
|
||||
>SYSCALL puts
|
||||
|
||||
>PUSHBI S.PS.F.DUPENV
|
||||
>LEA.G CmdBuf
|
||||
>SYSCALL execl
|
||||
|
||||
.8 clc
|
||||
.9 rts
|
||||
@ -221,8 +233,7 @@ CS.QUIT ldx #CONN.MAX
|
||||
dex
|
||||
bne .1
|
||||
|
||||
ldy #hSrvSocket
|
||||
lda (pData),y
|
||||
>LDA.G hSrvSocket
|
||||
beq .3
|
||||
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
|
||||
|
||||
@ -253,22 +264,14 @@ MSG.TCPIPERR .AZ "TELNETD:TCP/IP Not initialized properly"
|
||||
MSG.SKTERR .AZ "TELNETD:Listen Error."
|
||||
MSG.ABORT .AZ "TELNETD:User Aborted."
|
||||
MSG.INCOMING .AZ "TELNETD:Incoming Connection [SKT=%h] From : %d.%d.%d.%d\r\n"
|
||||
CMD.LINE .AS "${A2OSX}SBIN/GETTY "
|
||||
|
||||
.AZ " ${A2OSX}SBIN/LOGIN"
|
||||
*--------------------------------------
|
||||
NOD.Template .AZ "/DEV/TTY%h"
|
||||
CMD.Template .AZ "${A2OSX}SBIN/GETTY %s ${A2OSX}SBIN/LOGIN"
|
||||
*--------------------------------------
|
||||
SA.LOCAL .DA #AF.INET S.SOCKADDR.AF
|
||||
.BS 1
|
||||
.BS 4 S.SOCKADDR.ADDR
|
||||
.DA TCP.PORT.TELNET
|
||||
*--------------------------------------
|
||||
SA.REMOTE .DA #AF.INET S.SOCKADDR.AF
|
||||
.BS 1
|
||||
.BS 4 S.SOCKADDR.ADDR
|
||||
.BS 2 S.SOCKADDR.PORT
|
||||
*--------------------------------------
|
||||
NOD.Template .AZ "/DEV/TTY%h"
|
||||
NOD.Name .AZ " "
|
||||
*--------------------------------------
|
||||
.DUMMY
|
||||
.OR 0
|
||||
@ -278,7 +281,8 @@ SktIndex .BS 1
|
||||
hSrvSocket .BS 1
|
||||
hClientSocket .BS 1
|
||||
TimeOut .BS 1
|
||||
|
||||
NodBuf .BS 11
|
||||
CmdBuf .BS 65
|
||||
DS.END
|
||||
.ED
|
||||
*--------------------------------------
|
||||
|
@ -45,17 +45,45 @@ IO.Open.I jsr STDIO.SetMLIPathYA
|
||||
>LDYAI K.MLI.PATH+6 skip $/DEV/
|
||||
|
||||
jsr K.GetDevByName
|
||||
bcs IO.OPEN.RTS
|
||||
bcc .7
|
||||
|
||||
>STYA pFD
|
||||
phx DEVID
|
||||
ldx #0
|
||||
|
||||
.10 lda Nod.Table.hPath,x
|
||||
beq .6
|
||||
jsr K.GetMemPtr
|
||||
>STYA ZPPtr1
|
||||
|
||||
ldy #0
|
||||
|
||||
.2 lda (ZPPtr1),y
|
||||
iny
|
||||
cmp K.MLI.PATH,y
|
||||
bne .6
|
||||
cmp #0 end of string ?
|
||||
bne .2
|
||||
|
||||
txa return hFILE
|
||||
clc
|
||||
rts
|
||||
|
||||
.6 inx
|
||||
cpx #K.NOD.MAX
|
||||
bne .10
|
||||
|
||||
lda #MLI.E.NODEV
|
||||
* sec
|
||||
rts no OF found
|
||||
|
||||
.7 >STYA pFD
|
||||
phx DEVID/hFILE
|
||||
|
||||
lda (pFD) #S.FD.T
|
||||
tax
|
||||
pla
|
||||
jmp (.2,x)
|
||||
jmp (.8,x)
|
||||
|
||||
.2 .DA STDIO.IOERR REG
|
||||
.8 .DA STDIO.IOERR REG
|
||||
.DA STDIO.IOERR DIR
|
||||
.DA IO.OPEN.CDEV
|
||||
.DA STDIO.IOERR BDEV
|
||||
|
@ -239,9 +239,8 @@ Mem.NextSlot lda ZPMemMgrSPtr
|
||||
K.FreeMem.ERR >PUSHA
|
||||
>PUSHBI 1
|
||||
|
||||
>PUSHWI K.FreeMem.ERR1
|
||||
lda #DEVID.SYS
|
||||
>SYSCALL fprintf
|
||||
>LDYAI K.FreeMem.ERR1
|
||||
>SYSCALL printf
|
||||
sec
|
||||
rts
|
||||
|
||||
@ -314,14 +313,13 @@ K.FreeMem tay
|
||||
|
||||
>PUSHYA
|
||||
>PUSHBI 2
|
||||
>PUSHWI K.FreeMem.ERR2
|
||||
lda #DEVID.SYS
|
||||
>SYSCALL fprintf
|
||||
>LDYAI K.FreeMem.ERR2
|
||||
>SYSCALL printf
|
||||
sec
|
||||
rts
|
||||
*--------------------------------------
|
||||
K.FreeMem.ERR1 .AZ "FreeMem:Bad hMem:%h."
|
||||
K.FreeMem.ERR2 .AZ "FreeMem:hMem already freed At $%H."
|
||||
K.FreeMem.ERR1 .AZ "FreeMem:Bad hMem:%h.\r\n"
|
||||
K.FreeMem.ERR2 .AZ "FreeMem:hMem already freed At $%H.\r\n"
|
||||
*/--------------------------------------
|
||||
* # GetMemPtr
|
||||
* A = hMem
|
||||
|
Loading…
x
Reference in New Issue
Block a user