NEW AUTO 3,1 .LIST OFF .OP 65C02 .OR $2000 .TF bin/netstat *-------------------------------------- .INB inc/macros.i .INB inc/a2osx.i .INB inc/kernel.i .INB inc/eth.i .INB inc/net.tcpip.i .INB inc/libtcpip.i *-------------------------------------- .DUMMY .OR ZPBIN ZS.START ZPPTR1 .BS 2 FDIndex .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 inc FDIndex ldx FDIndex .1 lda FDs.pHI-1,x beq .7 ldy FDs.pLO-1,x >STYA ZPPTR1 lda (ZPPTR1) cmp #S.FD.T.DSOCK beq .2 cmp #S.FD.T.SSOCK bne .7 .2 ldy #S.SOCKET.AF lda (ZPPTR1),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 (ZPPTR1),y jsr CS.RUN.S 2 bytes >PUSHBI 19 >SYSCALL PrintF bcs .9 .7 inc FDIndex ldx FDIndex cpx #K.FD.MAX+1 bcc .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 (ZPPTR1),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 (ZPPTR1),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 (ZPPTR1),y iny dex bne .2 iny >PUSHB (ZPPTR1),y dey >PUSHB (ZPPTR1),y rts *-------------------------------------- CS.RUN.S ldy #S.SOCKET.TCP.S lda (ZPPTR1),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