A2osX/BIN/NETSTAT.S.txt

234 lines
4.5 KiB
Plaintext
Raw Permalink Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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