diff --git a/.Docs/LIBTCPIP.md b/.Docs/LIBTCPIP.md index 5c310bfe..237749f6 100644 --- a/.Docs/LIBTCPIP.md +++ b/.Docs/LIBTCPIP.md @@ -52,7 +52,7 @@ **Out:** Y,A = PTR to DNS.CACHE -# SKT.Socket +# Socket Create a new socket ## C @@ -67,7 +67,7 @@ Create a new socket CC: A = hSOCKET CS: A = EC -# SKT.bind +# Bind bind a name to a socket ## C @@ -82,7 +82,7 @@ bind a name to a socket CC: A = hSOCKET CS: A = EC -# SKT.connect +# Connect Iinitiate a connection on a socket ## C @@ -97,7 +97,7 @@ Iinitiate a connection on a socket CC: A = hSOCKET CS: A = EC -# SKT.listen +# Listen Listen for connections on a socket ## C @@ -110,7 +110,7 @@ Listen for connections on a socket **Out:** CS: A = EC -# SKT.Accept +# Accept Accept a connection on a socket ## C @@ -123,19 +123,19 @@ Accept a connection on a socket **Out:** A = hSocket -# SKT.Close +# Shutdown Close socket ## C -`int close(int fd);` +`int shutdown(int fd);` ## ASM **In:** `lda fd` -`>LIBCALL hLIBTCPIP,LIBTCPIP.close` +`>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown` **Out:** -# SKT.Read (STREAM) +# Read (STREAM) ## C `int skt.read(hFD fd, void *buf, int count);` @@ -150,7 +150,7 @@ Close socket CC: Y,A = bytes read CS: A = EC -# SKT.Write (STREAM) +# Write (STREAM) ## C `int skt.write(hFD fd, const void *buf, int count);` @@ -165,11 +165,13 @@ CS: A = EC CC: Y,A = bytes written CS: A = EC -# SKT.Recv (RAW,DGRAM,SEQPACKET) +# Recv (RAW,DGRAM,SEQPACKET) -# SKT.RecvFrom (RAW,DGRAM,SEQPACKET) -hMem recv(hFD fd); -hMem recvfrom(hFD fd, struct sockaddr *addr); +# RecvFrom (RAW,DGRAM,SEQPACKET) + +## C +`hMem recv(hFD fd);` +`hMem recvfrom(hFD fd, struct sockaddr *addr);` ## ASM **In:** @@ -180,9 +182,9 @@ hMem recvfrom(hFD fd, struct sockaddr *addr); CC: A = hMem CS: A = EC -# SKT.Send (RAW,DGRAM,SEQPACKET) +# Send (RAW,DGRAM,SEQPACKET) -# SKT.SendTo (RAW,DGRAM,SEQPACKET) +# SendTo (RAW,DGRAM,SEQPACKET) ## C `int skt.send(hFD fd, const void *buf, int count);` @@ -199,11 +201,11 @@ CS: A = EC CC: Y,A = bytes written CS: A = EC -# SKT.GetTable +# GetTable Get socket table ## C -`void * skt.gettable();` +`void * gettable();` ## ASM **In:** diff --git a/.Floppies/A2OSX.BUILD.po b/.Floppies/A2OSX.BUILD.po index 746a3e78..ede7c628 100644 Binary files a/.Floppies/A2OSX.BUILD.po and b/.Floppies/A2OSX.BUILD.po differ diff --git a/.Floppies/A2OSX.SRC.po b/.Floppies/A2OSX.SRC.po index a8cc2af2..6fa4bfbe 100644 Binary files a/.Floppies/A2OSX.SRC.po and b/.Floppies/A2OSX.SRC.po differ diff --git a/BIN/NETSTAT.S.txt b/BIN/NETSTAT.S.txt index b288f4fa..0324d46c 100644 --- a/BIN/NETSTAT.S.txt +++ b/BIN/NETSTAT.S.txt @@ -36,10 +36,15 @@ CS.START cld L.LIBTCPIP .DA LIBTCPIP L.MSG0 .DA MSG0 L.MSG1 .DA MSG1 - .DA MSG1.UDP - .DA MSG1.TCP - .DA MSG1.RAW - .DA MSG1.INV +L.MSG1.T .DA MSG1.T.RAW + .DA MSG1.T.DGRAM + .DA MSG1.T.SEQPKT + .DA MSG1.T.STREAM + .DA MSG1.T.INV +L.MSG1.P .DA MSG1.P.ICMP + .DA MSG1.P.TCP + .DA MSG1.P.UDP + .DA MSG1.P.INV L.MSG1.S .DA MSG1.S.0 .DA MSG1.S.1 .DA MSG1.S.2 @@ -51,6 +56,7 @@ L.MSG1.S .DA MSG1.S.0 .DA MSG1.S.8 .DA MSG1.S.9 .DA MSG1.S.10 + .DA MSG1.S.INV .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP @@ -64,7 +70,7 @@ CS.INIT >LDYA L.LIBTCPIP CS.RUN >LDYA L.MSG0 >SYSCALL puts - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.GETTABLE + >LIBCALL hLIBTCPIP,LIBTCPIP.GetTable >STYA ZPPTR1 >STZ.G SocketCount @@ -72,15 +78,15 @@ CS.RUN >LDYA L.MSG0 .1 tay lda (ZPPTR1),y beq .7 + >SYSCALL GetMemPtr >STYA ZPPTR2 - ldy #S.SOCKET.TCP.S - lda (ZPPTR2),y - cmp #S.SOCKET.TCP.S.TIMEWT+1 - bcs * - tax - >PUSHB L.MSG1.S+1,x - >PUSHB L.MSG1.S,x + + lda (ZPPTR2) + cmp #AF.INET +* bne .7 + + jsr CS.RUN.S ldy #S.SOCKET.O >PUSHB (ZPPTR2),y @@ -92,15 +98,10 @@ CS.RUN >LDYA L.MSG0 cpy #S.SOCKET.LOC.ADDR-1 bne .2 - lda (ZPPTR2) - tax - cpx #S.SOCKET.T.SEQPACKET+1 - bcc .3 - - ldx #S.SOCKET.T.SEQPACKET+1 -.3 >PUSHB L.MSG1+1,x - >PUSHB L.MSG1,x - >PUSHBI 17 + jsr CS.RUN.P + jsr CS.RUN.T + + >PUSHBI 19 >LDYA L.MSG1 >SYSCALL printf @@ -112,6 +113,53 @@ CS.RUN >LDYA L.MSG0 sec we do not want to stay in memory rts *-------------------------------------- +CS.RUN.S ldy #S.SOCKET.TCP.S + lda (ZPPTR2),y + + cmp #S.SOCKET.TCP.S.TIMEWT+1 + bcc .1 + + lda #S.SOCKET.TCP.S.TIMEWT+1 + +.1 asl + tax + >PUSHB L.MSG1.S+1,x + >PUSHB L.MSG1.S,x + rts +*-------------------------------------- +CS.RUN.P ldy #S.SOCKET.PROTO + lda (ZPPTR2),y + + ldx #0 + +.3 cmp PROTO,x + beq .4 + inx + cpx #PROTO.Cnt + bne .3 + +.4 txa + asl + tax + + >PUSHB L.MSG1.P+1,x + >PUSHB L.MSG1.P,x + + rts +*-------------------------------------- +CS.RUN.T ldy #S.SOCKET.T + lda (ZPPTR2),y + tax + cpx #S.SOCKET.T.STREAM+1 + bcc .5 + + ldx #S.SOCKET.T.STREAM+1 + +.5 >PUSHB L.MSG1.T+1,x + >PUSHB L.MSG1.T,x + + rts +*-------------------------------------- CS.DOEVENT sec rts *-------------------------------------- @@ -124,12 +172,19 @@ CS.QUIT lda hLIBTCPIP *-------------------------------------- CS.END LIBTCPIP .AZ "libtcpip" -MSG0 .AZ "Proto Local Remote Options Status" -MSG1 .AZ "%s %03d.%03d.%03d.%03d:%05D %03d.%03d.%03d.%03d:%05D %b %s\r\n" -MSG1.UDP .AZ "UDP" -MSG1.TCP .AZ "TCP" -MSG1.RAW .AZ "RAW" -MSG1.INV .AZ "???" +MSG0 .AZ "Type Prot Local Remote Options Status" +MSG1 .AZ "%s %s %03d.%03d.%03d.%03d:%05D %03d.%03d.%03d.%03d:%05D %b %s\r\n" +MSG1.T.RAW .AZ "RAW " +MSG1.T.DGRAM .AZ "DGRAM " +MSG1.T.SEQPKT .AZ "SEQPKT" +MSG1.T.STREAM .AZ "STREAM" +MSG1.T.INV .AZ "??? " +PROTO .DA #S.IP.PROTOCOL.ICMP,#S.IP.PROTOCOL.TCP,#S.IP.PROTOCOL.UDP +PROTO.Cnt .EQ *-PROTO +MSG1.P.ICMP .AZ "ICMP" +MSG1.P.TCP .AZ "TCP " +MSG1.P.UDP .AZ "UDP " +MSG1.P.INV .AZ "??? " MSG1.S.0 .AZ "*" MSG1.S.1 .AZ "LISTENING" MSG1.S.2 .AZ "SYN-SENT" @@ -141,6 +196,7 @@ MSG1.S.7 .AZ "FIN-WAIT-1" MSG1.S.8 .AZ "FIN-WAIT-2" MSG1.S.9 .AZ "CLOSING" MSG1.S.10 .AZ "TIME-WAIT" +MSG1.S.INV .AZ "???" hLIBTCPIP .BS 1 *-------------------------------------- .DUMMY diff --git a/BIN/TELNET.S.txt b/BIN/TELNET.S.txt index 782d54d9..9ee19067 100644 --- a/BIN/TELNET.S.txt +++ b/BIN/TELNET.S.txt @@ -10,6 +10,7 @@ AUTO 4,1 .INB INC/A2OSX.I .INB INC/ETH.I .INB INC/LIBTCPIP.I + .INB INC/NET.TELNET.I *-------------------------------------- TIMEOUT.MAX .EQ 40 4 sec. BUFSIZE .EQ 256 @@ -37,7 +38,10 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP -L.Socket .DA Socket +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 L.MSG.USAGE .DA MSG.USAGE L.MSG.UNKNOWN .DA MSG.UNKNOWN @@ -54,12 +58,7 @@ CS.INIT >LDYA L.LIBTCPIP bcs .9 sta hLIBTCPIP - lda (pPs) - ora #S.PS.F.EVENT Now accept events - sta (pPs) - clc - .9 rts *-------------------------------------- CS.RUN >LIBCALL hLIBTCPIP,LIBTCPIP.GET.IPCFG is TCPIP loaded ? @@ -81,7 +80,7 @@ CS.RUN.IPOK ldy #S.PS.ARGC jsr Init.Timeout -.2 >PUSHEA.G DST.IP +.2 >PUSHW L.SA.REMOTE.AD lda #1 >SYSCALL GetArg >PUSHYA @@ -114,21 +113,17 @@ CS.RUN.HOSTOK ldy #S.PS.ARGC lda #2 >SYSCALL GetArg >SYSCALL atoi - >STYA Socket.Dst.Port + >STYA SA.REMOTE+S.SOCKADDR.PORT CS.RUN.PORTOK lda #1 >SYSCALL GetArg >PUSHYA - >PUSHW Socket.Dst.Port + >PUSHW SA.REMOTE+S.SOCKADDR.PORT - ldy #DST.IP+3 ldx #3 -.1 lda (pData),y - sta Socket.Dst.Addr,x - >PUSHA - dey +.1 >PUSHB SA.REMOTE+S.SOCKADDR.ADDR,x dex bpl .1 @@ -136,26 +131,27 @@ CS.RUN.PORTOK lda #1 >LDYA L.MSG.HOSTOK >SYSCALL printf -CS.RUN.OPENSKT ldx #3 - ldy #S.IPCFG.IP+3 - -.1 lda (ZPIPCfgPtr),y - sta Socket.Src.Addr,x - dey - dex - bpl .1 - - >PUSHW L.Socket - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.New +CS.RUN.OPENSKT >PUSHBI 0 no protocol + lda #S.SOCKET.T.STREAM + >LIBCALL hLIBTCPIP,LIBTCPIP.Socket + bcs .9 + + >STA.G hSocket + pha + >PUSHW L.SA.LOCAL + pla + >LIBCALL hLIBTCPIP,LIBTCPIP.Bind bcc .2 - >LDYA L.MSG.SKTKO +.9 >LDYA L.MSG.SKTKO >SYSCALL puts lda #K.E.SYN sec -.9 rts + rts -.2 >STA.G hSocket +.2 >PUSHW L.SA.REMOTE + >LDA.G hSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Connect >LDYA L.MSG.SKTOK >SYSCALL puts @@ -172,7 +168,7 @@ CS.RUN.LOOP >SLEEP >PUSHWI BUFSIZE >PUSHW ZPBufPtr >LDA.G hSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Read + >LIBCALL hLIBTCPIP,LIBTCPIP.Read bcc .1 tay @@ -205,7 +201,7 @@ CS.RUN.LOOP >SLEEP >PUSHW ZPBufLen >PUSHW ZPBufPtr >LDA.G hSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Write + >LIBCALL hLIBTCPIP,LIBTCPIP.Write bcs CS.RUN.SKTERR @@ -255,7 +251,7 @@ CS.DOEVENT lda (pEvent) CS.QUIT >LDA.G hSocket beq .1 - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Close + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown .1 >LDA.G hBuf beq .2 @@ -293,19 +289,19 @@ 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.T.STREAM +SA.LOCAL .DA #AF.INET S.SOCKADDR.AF .BS 1 + .BS 4 S.SOCKADDR.ADDR + .BS 2 S.SOCKADDR.PORT +*-------------------------------------- +SA.REMOTE .DA #AF.INET S.SOCKADDR.AF .BS 1 - .BS 1 -Socket.Src.Addr .BS 4 -Socket.Src.Port .DA 0 Dynamic -Socket.Dst.Addr .BS 4 -Socket.Dst.Port .DA TCP.PORT.TELNET + .BS 4 S.SOCKADDR.ADDR + .DA TCP.PORT.TELNET *-------------------------------------- .DUMMY .OR 0 DS.START -DST.IP .BS 4 hBuf .BS 1 hSocket .BS 1 TimeOut .BS 1 diff --git a/INC/LIBTCPIP.I.txt b/INC/LIBTCPIP.I.txt index 6f5a4f71..51dd3d80 100644 --- a/INC/LIBTCPIP.I.txt +++ b/INC/LIBTCPIP.I.txt @@ -39,23 +39,23 @@ LIBTCPIP.DNS.GetCache .EQ 26 LIBTCPIP.HST.GetByName .EQ 28 LIBTCPIP.HST.GetByAddr .EQ 30 -LIBTCPIP.SKT.Socket .EQ 32 -LIBTCPIP.SKT.Bind .EQ 34 -LIBTCPIP.SKT.Connect .EQ 36 -LIBTCPIP.SKT.Listen .EQ 38 +LIBTCPIP.Socket .EQ 32 +LIBTCPIP.Bind .EQ 34 +LIBTCPIP.Connect .EQ 36 +LIBTCPIP.Listen .EQ 38 -LIBTCPIP.SKT.Accept .EQ 40 -LIBTCPIP.SKT.Close .EQ 42 +LIBTCPIP.Accept .EQ 40 +LIBTCPIP.shutdown .EQ 42 -LIBTCPIP.SKT.Read .EQ 44 -LIBTCPIP.SKT.Write .EQ 46 -LIBTCPIP.SKT.Recv .EQ 48 -LIBTCPIP.SKT.Send .EQ 50 +LIBTCPIP.Read .EQ 44 +LIBTCPIP.Write .EQ 46 +LIBTCPIP.Recv .EQ 48 +LIBTCPIP.Send .EQ 50 -LIBTCPIP.SKT.RecvFrom .EQ 52 -LIBTCPIP.SKT.SendTo .EQ 54 +LIBTCPIP.RecvFrom .EQ 52 +LIBTCPIP.SendTo .EQ 54 -LIBTCPIP.SKT.GetTable .EQ 56 +LIBTCPIP.GetTable .EQ 56 *-------------------------------------- ERR.SKT.OOS .EQ $BF ERR.SKT.BUSY .EQ $BE @@ -69,8 +69,6 @@ ERR.ARP.PENDING .EQ $B5 UDP.PORT.DNS .EQ 53 UDP.PORT.PMAP .EQ 111 *-------------------------------------- -TCP.PORT.TELNET .EQ 23 -*-------------------------------------- S.IPCFG.STATUS .EQ 0 S.IPCFG.STATUS.OFF .EQ %00000000 TCPIP Unconfigured S.IPCFG.STATUS.SDISC .EQ %00000001 DISCOVERY Sent diff --git a/LIB/LIBTCPIP.S.CFG.txt b/LIB/LIBTCPIP.S.CFG.txt index 0c24826c..630cc774 100644 --- a/LIB/LIBTCPIP.S.CFG.txt +++ b/LIB/LIBTCPIP.S.CFG.txt @@ -493,7 +493,7 @@ SET.IPCFG.I >LDYA L.DCB.NIC .2 lda hDNSSocket beq .3 - jsr SKT.Close + jsr SKT.Shutdown stz hDNSSocket .3 lda IPCFG+S.IPCFG.DNS1 diff --git a/LIB/LIBTCPIP.S.SKT.txt b/LIB/LIBTCPIP.S.SKT.txt index 6877e2a0..207dbb3b 100644 --- a/LIB/LIBTCPIP.S.SKT.txt +++ b/LIB/LIBTCPIP.S.SKT.txt @@ -3,7 +3,7 @@ PREFIX /A2OSX.BUILD AUTO 4,1 .LIST OFF */-------------------------------------- -* # SKT.Socket +* # Socket * Create a new socket * ## C * `hFD socket(short int type, short int protocol);` @@ -101,7 +101,7 @@ SKT.Socket.FindFree clc rts */-------------------------------------- -* # SKT.bind +* # Bind * bind a name to a socket * ## C * `int bind(hFD fd, const struct sockaddr *addr);` @@ -121,13 +121,13 @@ SKT.bind >SYSCALL GetMemPtr lda SKT.LOC.ADDR+S.SOCKADDR.PORT bne .1 - ldy SKT.LOC.ADDR+S.SOCKADDR.PORT+1 + ldx SKT.LOC.ADDR+S.SOCKADDR.PORT+1 bne .1 jsr GetDynPort - sta SKT.LOC.ADDR+S.SOCKADDR.PORT+1 - stx SKT.LOC.ADDR+S.SOCKADDR.PORT + sta SKT.LOC.ADDR+S.SOCKADDR.PORT + stx SKT.LOC.ADDR+S.SOCKADDR.PORT+1 .1 jsr SKT.FindMatchingLoc bcc .9 @@ -141,7 +141,7 @@ SKT.bind >SYSCALL GetMemPtr sec rts */-------------------------------------- -* # SKT.connect +* # Connect * Iinitiate a connection on a socket * ## C * `int connect(hFD fd, const struct sockaddr *addr);` @@ -231,7 +231,7 @@ SKT.connect.9 lda #ERR.SKT.BAD sec SKT.connect.99 rts */-------------------------------------- -* # SKT.listen +* # Listen * Listen for connections on a socket * ## C * `int listen(hFD fd);` @@ -268,7 +268,7 @@ SKT.listen >SYSCALL GetMemPtr sec rts */-------------------------------------- -* # SKT.Accept +* # Accept * Accept a connection on a socket * ## C * `hFD Accept(hFD fd);` @@ -314,17 +314,17 @@ SKT.Accept >SYSCALL GetMemPtr sec .9 rts */-------------------------------------- -* # SKT.Close +* # Shutdown * Close socket * ## C -* `int close(int fd);` +* `int shutdown(int fd);` * ## ASM * **In:** * `lda fd` -* `>LIBCALL hLIBTCPIP,LIBTCPIP.close` +* `>LIBCALL hLIBTCPIP,LIBTCPIP.shutdown` * **Out:** *\-------------------------------------- -SKT.Close >SYSCALL GetMemPtr +SKT.shutdown >SYSCALL GetMemPtr >STYA ZPPtrSKT cmp #S.SOCKET.T.STREAM @@ -391,7 +391,7 @@ SKT.Close >SYSCALL GetMemPtr jmp TCP.OUT Try to push FIN/ACK */-------------------------------------- -* # SKT.Read (STREAM) +* # Read (STREAM) * ## C * `int skt.read(hFD fd, void *buf, int count);` * ## ASM @@ -442,7 +442,7 @@ SKT.Read >SYSCALL GetMemPtr sec .99 rts */-------------------------------------- -* # SKT.Write (STREAM) +* # Write (STREAM) * ## C * `int skt.write(hFD fd, const void *buf, int count);` * ## ASM @@ -495,8 +495,8 @@ SKT.Write >SYSCALL GetMemPtr sec rts */-------------------------------------- -* # SKT.Recv (RAW,DGRAM,SEQPACKET) -* # SKT.RecvFrom (RAW,DGRAM,SEQPACKET) +* # Recv (RAW,DGRAM,SEQPACKET) +* # RecvFrom (RAW,DGRAM,SEQPACKET) * ## C * `hMem recv(hFD fd);` * `hMem recvfrom(hFD fd, struct sockaddr *addr);` @@ -601,8 +601,8 @@ SKT.Recv clc sec rts */-------------------------------------- -* # SKT.Send (RAW,DGRAM,SEQPACKET) -* # SKT.SendTo (RAW,DGRAM,SEQPACKET) +* # Send (RAW,DGRAM,SEQPACKET) +* # SendTo (RAW,DGRAM,SEQPACKET) * ## C * `int skt.send(hFD fd, const void *buf, int count);` * `int skt.sendto(hFD fd, const void *buf, int count, const struct sockaddr *addr);` @@ -669,10 +669,10 @@ SKT.Send.9 rts SKT.Send.SEQPACKET bra * */-------------------------------------- -* # SKT.GetTable +* # GetTable * Get socket table * ## C -* `void * skt.gettable();` +* `void * gettable();` * ## ASM * **In:** * `>LIBCALL hLIBTCPIP,LIBTCPIP.skt.GetTable` @@ -691,7 +691,7 @@ SKT.PullLocAddr >PULLW ZPTmpPtr1 .1 lda (ZPTmpPtr1),y sta SKT.LOC.ADDR,y dey - bne .1 + bpl .1 rts *-------------------------------------- SKT.PullRemAddr >PULLW ZPTmpPtr1 @@ -701,24 +701,24 @@ SKT.PullRemAddr >PULLW ZPTmpPtr1 .1 lda (ZPTmpPtr1),y sta SKT.REM.ADDR,y dey + bpl .1 + 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 + cpy #S.SOCKET.LOC.PORT+2 bne .1 rts *-------------------------------------- -SKT.SetLocAddr ldy #S.SOCKET.LOC.PORT+1 +SKT.SetRemAddr ldy #S.SOCKET.REM.ADDR -.1 lda SKT.LOC.ADDR-S.SOCKET.LOC.ADDR,y +.1 lda SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y sta (ZPPtrSKT),y - dey - cpy #S.SOCKET.LOC.ADDR-1 - bne .1 - rts -*-------------------------------------- -SKT.SetRemAddr ldy #S.SOCKET.REM.PORT+1 - -.1 lda SKT.REM.ADDR-S.SOCKET.REM.ADDR,y - sta (ZPPtrSKT),y - dey - cpy #S.SOCKET.REM.ADDR-1 + iny + cpy #S.SOCKET.REM.PORT+2 bne .1 rts *-------------------------------------- @@ -742,13 +742,13 @@ SKT.FindMatchingLocRem .3 lda (ZPTmpPtr1),y -.4 cmp SKT.LOC.ADDR-S.SOCKET.LOC.ADDR,y +.4 cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y bne .8 iny cpy #S.SOCKET.REM.ADDR bne .3 - lda SKT.REM.ADDR + lda SKT.REM.ADDR+S.SOCKADDR.ADDR cmp #$ff FF.FF.FF.FF, Broadcast ? bne .5 @@ -760,7 +760,7 @@ SKT.FindMatchingLocRem ldy #S.SOCKET.REM.PORT Boradcast, check port only .5 lda (ZPTmpPtr1),y - cmp SKT.REM.ADDR-S.SOCKET.REM.ADDR,y + cmp SKT.REM.ADDR+S.SOCKADDR.ADDR-S.SOCKET.REM.ADDR,y bne .9 wrong remote host, exit.... iny cpy #S.SOCKET.REM.PORT+2 @@ -797,7 +797,7 @@ SKT.FindMatchingLoc phy .2 lda (ZPTmpPtr1),y - cmp SKT.LOC.ADDR-S.SOCKET.LOC.ADDR,y + cmp SKT.LOC.ADDR+S.SOCKADDR.ADDR-S.SOCKET.LOC.ADDR,y bne .7 dey cpy #S.SOCKET.LOC.ADDR-1 diff --git a/LIB/LIBTCPIP.S.txt b/LIB/LIBTCPIP.S.txt index cf5d8849..271182a9 100644 --- a/LIB/LIBTCPIP.S.txt +++ b/LIB/LIBTCPIP.S.txt @@ -78,7 +78,7 @@ CS.START cld .DA SKT.Listen .DA SKT.Accept - .DA SKT.Close + .DA SKT.Shutdown .DA SKT.Read .DA SKT.Write @@ -308,8 +308,8 @@ FD.DSOCK .DA #S.FD.T.DSOCK .BS 1 S.FD.DSOCK.HSKT .DA #0 S.FD.DSOCK.OPEN .DA #0 S.FD.DSOCK.CLOSE - .DA #LIBTCPIP.SKT.Recv - .DA #LIBTCPIP.SKT.Send + .DA #LIBTCPIP.Recv + .DA #LIBTCPIP.Send .DA #0 S.FD.DSOCK.STATUS *-------------------------------------- .DA #AF.INET S.SOCKET.AF @@ -322,8 +322,8 @@ FD.SSOCK .DA #S.FD.T.SSOCK .BS 1 S.FD.DSOCK.HSKT .DA #0 S.FD.DSOCK.OPEN .DA #0 S.FD.DSOCK.CLOSE - .DA #LIBTCPIP.SKT.Read - .DA #LIBTCPIP.SKT.Write + .DA #LIBTCPIP.Read + .DA #LIBTCPIP.Write .DA #0 S.FD.DSOCK.STATUS *-------------------------------------- .DA #AF.INET S.SOCKET.AF diff --git a/SBIN/TELNETD.S.txt b/SBIN/TELNETD.S.txt index 052c425c..d5c6bc01 100644 --- a/SBIN/TELNETD.S.txt +++ b/SBIN/TELNETD.S.txt @@ -10,6 +10,7 @@ AUTO 4,1 .INB INC/A2OSX.I .INB INC/ETH.I .INB INC/LIBTCPIP.I + .INB INC/NET.TELNET.I *-------------------------------------- CONN.MAX .EQ 16 TIMEOUT.MAX .EQ 30 30 sec. @@ -38,7 +39,9 @@ CS.START cld .DA CS.DOEVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP -L.Socket .DA Socket +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 @@ -85,16 +88,26 @@ CS.RUN jsr Init.Timeout CS.RUN.INIT ldx #3 ldy #S.IPCFG.IP+3 .1 lda (ZPIPCfgPtr),y - sta Socket.Src.Addr,x + sta SA.LOCAL+S.SOCKADDR.ADDR,x dey dex bpl .1 - >PUSHW L.Socket - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.New + >PUSHBI 0 no protocol + lda #S.SOCKET.T.STREAM + >LIBCALL hLIBTCPIP,LIBTCPIP.Socket bcs .9 >STA.G hSrvSocket + pha + >PUSHW L.SA.LOCAL + pla + >LIBCALL hLIBTCPIP,LIBTCPIP.Bind + bcs .9 + + >LDA.G hSrvSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Listen + bcs .9 >LDYA L.MSG.INITOK >SYSCALL puts @@ -127,7 +140,7 @@ CS.RUN.ERR sec *-------------------------------------- CS.RUN.SERVER >LDA.G hSrvSocket - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Accept + >LIBCALL hLIBTCPIP,LIBTCPIP.Accept bcs .8 >STA.G hClientSocket @@ -135,21 +148,23 @@ CS.RUN.SERVER >LDA.G hSrvSocket ldx #CONN.MAX .1 lda (pData),y - beq .2 + beq CS.RUN.CLIENT iny dex bne .1 - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Close - bra .8 + >LDA.G hClientSocket + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown +.8 clc + rts -.2 sta (pData),y +CS.RUN.CLIENT sta (pData),y - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Get + >SYSCALL GetMemPtr >STYA ZPSktPtr ldx #3 - ldy #S.SOCKET.DST.ADDR+3 + ldy #S.SOCKET.REM.ADDR+3 .3 >PUSHB (ZPSktPtr),y dey @@ -163,8 +178,16 @@ CS.RUN.SERVER >LDA.G hSrvSocket >SYSCALL printf bcs .9 - + >PUSHB.G hClientSocket + >PUSHBI 1 + >PUSHWI L.NOD.Template + >LDYAI L.NOD.Name + >SYSCALL sprintf + >PUSHB.G hClientSocket + >PUSHW 0 + >LDYAI L.NOD.Name + >SYSCALL mknod .8 clc @@ -190,7 +213,7 @@ CS.QUIT ldx #CONN.MAX phx phy - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Close + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown ply plx @@ -201,7 +224,7 @@ CS.QUIT ldx #CONN.MAX ldy #hSrvSocket lda (pData),y beq .3 - >LIBCALL hLIBTCPIP,LIBTCPIP.SKT.Close + >LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown .3 lda hLIBTCPIP >SYSCALL UnloadLib @@ -223,7 +246,7 @@ Wait.TimeOut sec CS.END *-------------------------------------- hLIBTCPIP .BS 1 -LIBTCPIP .AZ "libtcpip.o" +LIBTCPIP .AZ "libtcpip" MSG.TCPWAIT .AZ "TELNETD:Waiting for TCP/IP initializing..." MSG.INITOK .AZ "TELNETD:Init Ok, Listening." MSG.TCPIPERR .AZ "TELNETD:TCP/IP Not initialized properly" @@ -234,16 +257,18 @@ CMD.LINE .AS "${A2OSX}SBIN/GETTY " .AZ " ${A2OSX}SBIN/LOGIN" *-------------------------------------- -Socket .DA #S.SOCKET.T.STREAM - .DA #S.SOCKET.O.ACCEPTCONN - .DA #S.SOCKET.TCP.S.LISTEN +SA.LOCAL .DA #AF.INET S.SOCKADDR.AF .BS 1 -Socket.Src.Addr .BS 4 -Socket.Src.Port .DA TCP.PORT.TELNET -Socket.Dst.Addr .BS 4 -Socket.Dst.Port .BS 2 + .BS 4 S.SOCKADDR.ADDR + .DA TCP.PORT.TELNET *-------------------------------------- -NOD.Name .AZ "TTY%h" +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