A2osX/BIN/RPCDUMP.S.txt

262 lines
5.4 KiB
Plaintext
Raw Permalink Normal View History

2015-10-19 20:35:00 +00:00
NEW
2020-08-19 19:39:43 +00:00
AUTO 3,1
2015-10-19 20:35:00 +00:00
.LIST OFF
.OP 65C02
.OR $2000
2020-08-19 19:39:43 +00:00
.TF bin/rpcdump
2015-10-19 20:35:00 +00:00
*--------------------------------------
2020-08-19 19:39:43 +00:00
.INB inc/macros.i
.INB inc/a2osx.i
.INB inc/eth.i
.INB inc/libtcpip.i
.INB inc/net.tcpip.i
2015-10-19 20:35:00 +00:00
*--------------------------------------
TIMEOUT.MAX .EQ 40 40*100ms = 4 sec.
2015-10-19 20:35:00 +00:00
*--------------------------------------
2020-08-19 19:39:43 +00:00
.DUMMY
.OR ZPBIN
ZS.START
ZPIPCfgPtr .BS 2
ZPFrameBase .BS 2
ZS.END .ED
2015-10-19 20:35:00 +00:00
*--------------------------------------
* File Header (16 Bytes)
*--------------------------------------
CS.START cld
jmp (.1,x)
.DA #$61 6502,Level 1 (65c02)
.DA #1 BIN Layout Version 1
2018-09-25 06:25:32 +00:00
.DA #S.PS.F.EVENT
.DA #0
2015-10-19 20:35:00 +00:00
.DA CS.END-CS.START Code Length To Relocate
.DA DS.END-DS.START Data Segment to Allocate
.DA #16 SS
2020-08-19 19:39:43 +00:00
.DA #ZS.END-ZS.START Zero Page Size
2015-10-19 20:35:00 +00:00
.DA 0
*--------------------------------------
.1 .DA CS.INIT
.DA CS.RUN
.DA CS.DOEVENT
.DA CS.QUIT
L.LIBTCPIP .DA LIBTCPIP
L.Socket .DA Socket
L.Socket.Dst.Addr .DA Socket.Dst.Addr
L.RPC.Request .DA RPC.Request
L.MSG.USAGE .DA MSG.USAGE
L.MSG.UNKNOWN .DA MSG.UNKNOWN
L.MSG.TIMEOUT .DA MSG.TIMEOUT
L.MSG.DUMP0 .DA MSG.DUMP0
L.MSG.DUMP1 .DA MSG.DUMP1
2015-10-19 20:35:00 +00:00
.DA 0
*--------------------------------------
2017-12-22 21:24:30 +00:00
CS.INIT ldy #S.PS.ARGC
2020-02-28 07:21:46 +00:00
lda (pPS),y
beq .99
2015-10-19 20:35:00 +00:00
>LDYA L.LIBTCPIP
2018-07-19 15:33:55 +00:00
>SYSCALL LoadLib
2015-10-19 20:35:00 +00:00
sta hLIBTCPIP
2020-08-19 19:39:43 +00:00
>LIBCALL hLIBTCPIP,LIBTCPIP.GETCFG is TCPIP loaded ?
bcs .99
>STYA ZPIPCfgPtr
lda (ZPIPCfgPtr) Configured ?
bpl .99
ldx #3
ldy #S.IPCFG.IP+3
.1 lda (ZPIPCfgPtr),y
sta Socket.Src.Addr,x
dey
dex
bpl .1
2015-10-19 20:35:00 +00:00
clc
rts
.99 >LDYA L.MSG.USAGE
2020-02-28 07:21:46 +00:00
>SYSCALL PutS
2018-10-21 20:54:07 +00:00
lda #E.SYN
sec
rts
2015-10-19 20:35:00 +00:00
*--------------------------------------
2020-08-19 19:39:43 +00:00
CS.RUN jsr Init.TimeOut
.1 >PUSHW L.Socket.Dst.Addr
lda #1
2018-10-16 15:48:03 +00:00
>SYSCALL ArgV
2015-10-19 20:35:00 +00:00
>PUSHYA
2020-08-19 19:39:43 +00:00
>LIBCALL hLIBTCPIP,LIBTCPIP.HST.GetByName
bcc .2
2015-10-19 20:35:00 +00:00
>SLEEP
2020-08-19 19:39:43 +00:00
jsr Wait.TimeOut
bcc .1
lda #1
2018-10-16 15:48:03 +00:00
>SYSCALL ArgV
2015-10-19 20:35:00 +00:00
>PUSHYA
2018-08-23 15:16:20 +00:00
>PUSHBI 2
>LDYA L.MSG.UNKNOWN
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
2015-10-19 20:35:00 +00:00
sec
rts
.2 >PUSHW L.Socket
2020-08-19 19:39:43 +00:00
>LIBCALL hLIBTCPIP,LIBTCPIP.Socket
bcs .91
2018-09-17 15:42:38 +00:00
>STA.G hSocket
ldx #3
2023-11-12 13:20:15 +00:00
.21 lda A2osX.T16,x
sta RPC.Request,x
dex
bpl .21
2018-09-17 15:42:38 +00:00
.3 >PUSHWI RPC.Request.End-RPC.Request
>PUSHW L.RPC.Request
2018-09-17 15:42:38 +00:00
>LDA.G hSocket
2020-08-19 19:39:43 +00:00
>LIBCALL hLIBTCPIP,LIBTCPIP.Send
bcc .4
>SLEEP
2020-08-19 19:39:43 +00:00
jsr Wait.TimeOut
bcc .3
.91 bra .99
2020-08-19 19:39:43 +00:00
.4 jsr Init.TimeOut
2018-09-17 15:42:38 +00:00
.5 >LDA.G hSocket
2020-08-19 19:39:43 +00:00
>LIBCALL hLIBTCPIP,LIBTCPIP.Recv
bcc .6
>SLEEP
2020-08-19 19:39:43 +00:00
jsr Wait.TimeOut
bcc .5
bra .99
.6 ldy #hFrame
sta (pData),y
2018-07-18 15:30:42 +00:00
>SYSCALL GetMemPtr
>STYA ZPFrameBase
jsr DumpRPCFrame
2015-10-19 20:35:00 +00:00
ldy #hFrame
2015-10-19 20:35:00 +00:00
lda (pData),y
2018-07-18 15:30:42 +00:00
>SYSCALL FreeMem
2015-10-19 20:35:00 +00:00
lda #0
sec
rts
.99 lda #1
2018-10-16 15:48:03 +00:00
>SYSCALL ArgV
>PUSHYA
2018-08-23 15:16:20 +00:00
>PUSHBI 2
>LDYA L.MSG.TIMEOUT
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
sec
2015-10-19 20:35:00 +00:00
rts
*--------------------------------------
CS.DOEVENT lda (pEvent)
2017-01-29 21:47:19 +00:00
bpl .9 is it a TIMER event?
2015-10-19 20:35:00 +00:00
ldy #TimeOut
lda (pData),y
beq .9
2015-10-19 20:35:00 +00:00
dec
sta (pData),y
.9 sec do not discard TIMER event
2015-10-19 20:35:00 +00:00
rts
*--------------------------------------
CS.QUIT ldy #hSocket
lda (pData),y
beq .1
2020-08-19 19:39:43 +00:00
>LIBCALL hLIBTCPIP,LIBTCPIP.Shutdown
.1 lda hLIBTCPIP
beq .8
2018-07-20 14:10:10 +00:00
>SYSCALL UnloadLib
.8 clc
rts
*--------------------------------------
2020-08-19 19:39:43 +00:00
Init.TimeOut ldy #TimeOut
lda #TIMEOUT.MAX
sta (pData),y
rts
*--------------------------------------
Wait.TimeOut sec
ldy #TimeOut
lda (pData),y
beq .9
clc
.9 rts
*--------------------------------------
DumpRPCFrame lda #S.UDP+24
clc
adc ZPFrameBase
sta ZPFrameBase
lda /S.UDP+24
adc ZPFrameBase+1
sta ZPFrameBase+1
>LDYA L.MSG.DUMP0
2020-02-28 07:21:46 +00:00
>SYSCALL PutS
.1 ldy #3
lda (ZPFrameBase),y Value follows?
beq .9
ldy #18 port
>PUSHB (ZPFrameBase),y
iny
>PUSHB (ZPFrameBase),y
ldy #15 proto
>PUSHB (ZPFrameBase),y
ldy #11 version
>PUSHB (ZPFrameBase),y
ldy #4 program
.7 >PUSHB (ZPFrameBase),y
iny
cpy #8
bne .7
2018-08-23 15:16:20 +00:00
>PUSHBI 8
>LDYA L.MSG.DUMP1
2020-02-28 07:21:46 +00:00
>SYSCALL PrintF
lda #20
2015-10-19 20:35:00 +00:00
clc
adc ZPFrameBase
sta ZPFrameBase
bcc .1
inc ZPFrameBase+1
bra .1
.9 rts
2015-10-19 20:35:00 +00:00
*--------------------------------------
CS.END
2019-12-03 15:42:17 +00:00
LIBTCPIP .AZ "libtcpip"
2018-08-23 15:16:20 +00:00
hLIBTCPIP .BS 1
MSG.USAGE .AZ "Usage : RPCDUMP <ip|host>"
MSG.UNKNOWN .AZ "%s: Unknown host\r\n"
MSG.TIMEOUT .AZ "No response from %s\r\n"
MSG.DUMP0 .AZ "Program Ver Proto:Port"
MSG.DUMP1 .AZ "%10L %2d %2d:%D\r\n"
2018-08-23 15:16:20 +00:00
*--------------------------------------
2018-09-28 15:24:44 +00:00
Socket .DA #S.SOCKET.T.DGRAM
.BS 3
Socket.Src.Addr .BS 4
Socket.Src.Port .DA 0 Dynamic
Socket.Dst.Addr .BS 4
Socket.Dst.Port .DA UDP.PORT.PMAP
*--------------------------------------
RPC.Request .BS 4 XID
.HS 00000000 0=CALL
.HS 00000002 RPCVERS
.HS 000186A0 PROG=portmapper
.HS 00000002 VERS
.HS 00000004 PMAPPROC_DUMP
.HS 00000000 CRED
.HS 00000000
.HS 00000000 VERF
.HS 00000000
RPC.Request.End .EQ *
2015-10-19 20:35:00 +00:00
*--------------------------------------
.DUMMY
.OR 0
DS.START
hSocket .BS 1
2015-10-19 20:35:00 +00:00
hFrame .BS 1
TimeOut .BS 1
DS.END
.ED
*--------------------------------------
MAN
2020-08-19 19:39:43 +00:00
SAVE usr/src/bin/rpcdump.s
2015-10-19 20:35:00 +00:00
ASM