NEW
PREFIX
AUTO 4,1
				.LIST OFF
				.OP	65C02
				.OR	$2000
				.TF BIN/NETSTAT
*--------------------------------------
				.INB INC/MACROS.I
				.INB INC/A2OSX.I
				.INB INC/ETH.I
				.INB INC/LIBTCPIP.I
*--------------------------------------
ZPPTR1			.EQ ZPBIN
ZPPTR2			.EQ ZPBIN+2
*--------------------------------------
*			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		CS
				.DA DS.END-DS.START		DS
				.DA #64					SS
				.DA #4					ZP
				.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.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
				
				>STZ.G SocketCount
				
.1				tay
				lda (ZPPTR1),y
				beq .7
				
				>SYSCALL GetMemPtr
				>STYA ZPPTR2
				
				lda (ZPPTR2)
				cmp #AF.INET
*				bne .7

				jsr CS.RUN.S
				
				ldy #S.SOCKET.O
				>PUSHB (ZPPTR2),y
				
				ldy #S.SOCKET.REM.PORT+1
				
.2				>PUSHB (ZPPTR2),y
				dey
				cpy #S.SOCKET.LOC.ADDR-1
				bne .2
				
				jsr CS.RUN.P
				jsr CS.RUN.T
				
				>PUSHBI 19
				>LDYA L.MSG1
				>SYSCALL printf
				
.7				>INC.G SocketCount
				cmp #K.SKTTABLE.SIZE
				bne .1
				
				lda #0					tell TSKMGR that all done ok, but 
				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
*--------------------------------------
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			.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"
MSG1.S.3		.AZ "SYN-RECEIVED"
MSG1.S.4		.AZ "ESTABLISHED"
MSG1.S.5		.AZ "CLOSE-WAIT"
MSG1.S.6		.AZ "LAST-ACK"
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 "???"
*--------------------------------------
				.DUMMY
				.OR 0
DS.START
SocketCount		.BS 1
DS.END
				.ED
*--------------------------------------
MAN
SAVE USR/SRC/BIN/NETSTAT.S
ASM
