NEW AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 .TF bin/netstat *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i .INB inc/eth.i .INB inc/net.tcpip.i .INB inc/libtcpip.i *-------------------------------------- .DUMMY .OR ZPBIN ZS.START ZPPTR1 .BS 2 ZPPTR2 .BS 2 SocketIndex .BS 1 ZS.END .ED *-------------------------------------- * File Header (16 Bytes) *-------------------------------------- CS.START cld jmp (.1,x) .DA #$61 6502,Level 1 (65c02) .DA #1 BIN Layout Version 1 .DA 0 .DA CS.END-CS.START Code Size (without Constants) .DA DS.END-DS.START Data SegmentSize .DA #64 Stack Size .DA #ZS.END-ZS.START Zero Page Size .DA 0 *-------------------------------------- * Relocation Table *-------------------------------------- .1 .DA CS.INIT .DA CS.RUN .DA CS.DOEVENT .DA CS.QUIT L.LIBTCPIP .DA LIBTCPIP L.MSG0 .DA MSG0 L.MSG1 .DA MSG1 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 .DA MSG1.S.3 .DA MSG1.S.4 .DA MSG1.S.5 .DA MSG1.S.6 .DA MSG1.S.7 .DA MSG1.S.8 .DA MSG1.S.9 .DA MSG1.S.10 .DA MSG1.S.11 .DA MSG1.S.INV .DA 0 *-------------------------------------- CS.INIT >LDYA L.LIBTCPIP >SYSCALL LoadLib bcs .9 sta hLIBTCPIP .9 rts *-------------------------------------- CS.RUN >LDYA L.MSG0 >SYSCALL PutS >LIBCALL hLIBTCPIP,LIBTCPIP.GetTable >STYA ZPPTR1 ldy SocketIndex .1 lda (ZPPTR1),y beq .7 >SYSCALL GetMemPtr >STYA ZPPTR2 ldy #S.SOCKET.AF lda (ZPPTR2),y cmp #AF.INET bne .7 >PUSHW L.MSG1 jsr CS.RUN.TP ldy #S.SOCKET.LOC.ADDR jsr CS.RUN.A ldy #S.SOCKET.REM.ADDR jsr CS.RUN.A ldy #S.SOCKET.O >PUSHB (ZPPTR2),y jsr CS.RUN.S 2 bytes >PUSHBI 19 >SYSCALL PrintF bcs .9 .7 inc SocketIndex ldy SocketIndex cpy #K.SKTTABLE.SIZE bne .1 lda #0 tell TSKMGR that all done ok, but sec we do not want to stay in memory .9 rts *-------------------------------------- CS.RUN.TP ldy #S.SOCKET.T lda (ZPPTR2),y tax cpx #S.SOCKET.T.STREAM+1 bcc .1 ldx #S.SOCKET.T.STREAM+1 .1 >PUSHB L.MSG1.T+1,x >PUSHB L.MSG1.T,x 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.A ldx #4 .2 >PUSHB (ZPPTR2),y iny dex bne .2 iny >PUSHB (ZPPTR2),y dey >PUSHB (ZPPTR2),y 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.DOEVENT sec rts *-------------------------------------- CS.QUIT lda hLIBTCPIP beq .8 >SYSCALL UnloadLib .8 clc rts *-------------------------------------- CS.END LIBTCPIP .AZ "libtcpip" hLIBTCPIP .BS 1 MSG0 .AZ "Type Prot Local Remote Options Status" MSG1 .CZ "%s %s %3d.%3d.%3d.%3d:%5D %3d.%3d.%3d.%3d:%5D %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 "OPENED" MSG1.S.2 .AZ "LISTENING" MSG1.S.3 .AZ "SYN-SENT" MSG1.S.4 .AZ "SYN-RECEIVED" MSG1.S.5 .AZ "ESTABLISHED" MSG1.S.6 .AZ "CLOSE-WAIT" MSG1.S.7 .AZ "LAST-ACK" MSG1.S.8 .AZ "FIN-WAIT-1" MSG1.S.9 .AZ "FIN-WAIT-2" MSG1.S.10 .AZ "CLOSING" MSG1.S.11 .AZ "TIME-WAIT" MSG1.S.INV .AZ "???" *-------------------------------------- .DUMMY .OR 0 DS.START DS.END .ED *-------------------------------------- MAN SAVE usr/src/bin/netstat.s ASM