	TITLE	ARPDMP	- DUMP ETHER/IP GATE-HOST TABLES
	SUBTTL	PHIL BUDNE@BU - APRIL 15, 1985
	.DECSAVE

A==1
B==2
C==3
D==4
E==5
F==6

X==10
Y==11

P==17

XPEEK%=:JSYS 626			;EXTENTED PEEK JSYS
  .XPPEK==:1				;PEEK FUNCTION

AR1:	BLOCK	<ARNUM==200>		;COPY OF MONITOR GHTAR1
AR2:	BLOCK	ARNUM*<AR2LEN==3>	;COPY OF MONITOR GHTAR2
GHTAR1:	BLOCK	1			;GHT TABLE PART ONE PTR
GHTAR2:	BLOCK	1			;GHT TABLE PART TWO PTR
NIMAXH:	BLOCK	1			;MAX SIZE OF GHT TABLE
PDL:	BLOCK	<LPDL==100>
STRING:	BLOCK	20

PEKBLK:	PEKLEN				;*** XPEEK% BLOCK ****
	.XPPEK				;FUNCTION
PEKCNT:	0				;COUNT
	0				;WORDS XFERED
PEKMON:	0				;MONITOR ADDR
PEKADR:	0				;USER ADDR
PEKLEN==.-PEKBLK			;*** END OF XPEEK BLOCK ***

START:	JFCL
	MOVE	P, [-LPDL,,PDL-1]
	RESET
	MOVEI	A, .FHSLF
	SETO	C,
	EPCAP

	MOVE	B, [.RSQZ 0,GHTAR1]	;SYMBOL IN RIGHT SQUOZE FORMAT
	MOVE	C, [.RSQZ 0,STG] 	;SYMBOL TABLE FOR SPEED IN LOOKUP
	CALL	DOPEEK
	MOVEM	B, GHTAR1

	MOVE	B, [.RSQZ 0,GHTAR2]	;SYMBOL IN RIGHT SQUOZE FORMAT
	MOVE	C, [.RSQZ 0,STG] 	;SYMBOL TABLE FOR SPEED IN LOOKUP
	CALL	DOPEEK
	MOVEM	B, GHTAR2

	MOVE	B, [.RSQZ 0,NIMAXH]	;SYMBOL IN RIGHT SQUOZE FORMAT
	MOVE	C, [.RSQZ 0,STG] 	;SYMBOL TABLE FOR SPEED IN LOOKUP
	CALL	DOPEEK
	MOVEM	B, NIMAXH

	MOVE	A, GHTAR1
	MOVEI	B, AR1
	MOVE	C, NIMAXH
	CALL	DOXPEK

	MOVE	A, GHTAR2
	MOVEI	B, AR2
	MOVE	C, NIMAXH
	IMULI	C, AR2LEN
	CALL	DOXPEK

	MOVN	X, NIMAXH
	HRLZI	X, (X)
LOOP:	SKIPN	AR1(X)
	 JRST	BOT

	MOVEI	A, .GTHNS		;NUMBER TO NAME
	HRROI	B, STRING
	MOVE	C, AR1(X)
	GTHST%
	 ERJMP	TYPADR
	HRROI	A, STRING
	PSOUT
TYPADR:	MOVEI	A, ^I
	PBOUT

	MOVEI	A, .PRIOU
	LDB	B, [.BP (037700),AR1(X)] ;get first byte
	MOVEI	C,10.			;decimal
	NOUT				;output it
	 TRN
	MOVEI	B,".			;delimiter
	BOUT
	LDB	B,[.BP 000077600000,AR1(X)] ;get next byte
	NOUT				;output it
	 TRN
	MOVEI	B,".
	BOUT
	LDB	B,[.BP 177400,AR1(X)]	;get next byte
	NOUT				;output it
	 TRN
	MOVEI	B,".
	BOUT
	LDB	B,[.BP 377,AR1(X)]	;get final byte
	NOUT				;output it
	 TRN

	MOVEI	A, ^I
	PBOUT

	MOVEI	Y, (X)
	IMULI	Y, AR2LEN
	MOVE	D, [441000,,AR2(Y)]
	MOVEI	E, 6
	MOVEI	F, "-
	HRROI	A, STRING
	MOVE	C,[NO%LFL\NO%ZRO\<2,,>\16.] ;output double "hits"
	TRNA
ADRLOP:	 IDPB	F, A
	ILDB	B, D
	NOUT
	 TRN
	SOJG	E, ADRLOP
	SETZ	F,
	IDPB	F, A
	HRROI	A, STRING
	PSOUT

	
	SKIPG	B,AR2+2(Y)	;CHECK VALID BIT (SIGN)
	 JRST	NEXT

	HRROI	A, [ASCIZ ' (DUMB)']
	TLNN	B, 200000	;CHECK DUMB FLAG
	 HRROI	A, [ASCIZ ' (NOT VALID)'] ;NOT DUMB, AND NOT VALID
	PSOUT

NEXT:	HRROI	A, [.BYTE 7 ? ^M ? ^J]
	PSOUT
BOT:	AOBJN	X, LOOP
	HALTF


DOXPEK:	MOVEM	A, PEKMON		;STORE MONITOR ADDRESS
	MOVEM	B, PEKADR		;SAVE
	MOVEM	C, PEKCNT
	MOVEI	A, PEKBLK		;GET ARG BLOCK
	XPEEK%				;GO-FOR-IT!
	 ERJMP	YOULOSE
	RET

DOSNOO:	MOVEI	A, .SNPSY		;SYMBOL LOOKUP
	SNOOP
	 JRST	YOULOSE
	RET

DOPEEK:	CALL	DOSNOO
	HRRI	A, (B)
	HRLI	A, 1
	MOVEI	B, B
	PEEK
	 JRST	YOULOSE
	RET

YOULOSE:
	HRROI	A, [ASCIZ 'You lose']
	ESOUT
	HALTF
	JRST	.-1

	END	START
