HSTTST: RESET% ; flush all I/O
MOVE P,[IOWD PDLLEN,PDL] ; load stack pointer
HRROI A,HSTBUF ; get local host name
CALL $GTLCL
IFNSK.
TMSG <?Unable to get local host name>
HALTF%
JRST HSTTST
ENDIF.
TMSG <Primary local name registry: >
HRROI A,HSTBUF ; output local name
PSOUT%
TMSG <
>
DO.
TMSG <Host name: > ; prompt for another host name
HRROI A,HSTBUF ; get another name
MOVX B,RD%BEL!RD%CRF!HSTNML ; break on end of line
HRROI C,[ASCIZ/Host name: /] ; prompt text
RDTTY% ; read the name
IFJER.
TMSG <?RDTTY% error>
HALTF%
JRST .-1
ENDIF.
SETZ B, ; tie off string with null
DPB B,A
SETOB C,CURREG ; initially try all registries
DO.
HRROI A,HSTBUF ; now, get its host address and registry
HRROI B,HS2BUF ; and canonical name
CALL $GTCAN
IFSKP.
SKIPL CURREG ; first time?
IFSKP.
TMSG <(Primary) >
ENDIF.
MOVEM C,CURREG ; save registry pointer
HLRO A,(C) ; protocol name
PSOUT%
TMSG < registry is >
HRROI A,HS2BUF ; output primary registry name
PSOUT%
TMSG <, address >
CAME B,$UKHST ; the unknown address?
IFSKP.
TMSG <indeterminate
>
ELSE.
MOVEI A,.PRIOU ; output address
MOVX C,NO%MAG!^D8 ; as an unsigned octal number
NOUT%
NOP
TMSG < (octal)
>
ENDIF.
AOS C,CURREG ; start at next registry
SKIPE (C) ; end of list?
LOOP. ; no, try further
ELSE.
SKIPL CURREG ; any successful lookups?
IFSKP.
TMSG <?No such host registered
> ; no, complain
ENDIF.
ENDIF.
ENDDO.
LOOP.
ENDDO.