TITLE HSTTST -- test HSTNAM module SUBTTL Mark Crispin 20-Apr-83/26-Dec-87 SEARCH MACSYM,MONSYM ; system definitions SALL ; suppress macro expansions .DIRECTIVE FLBLST ; sane listings for ASCIZ, etc. .TEXT "/NOINITIAL" ; suppress loading of JOBDAT .TEXT "HSTTST/SAVE" ; save as HSTTST.EXE .TEXT "/SYMSEG:PSECT:CODE" ; put symbol table and patch w/ code .REQUIRE HSTNAM ; host name routines .REQUIRE SYS:MACREL ; macsym support routines EXTERN $GTCAN,$GTLCL,$UKHST ; routines invoked externally ; AC definitions A=1 ; temporary, JSYS AC's B=2 C=3 D=4 P=17 ; stack pointer HSTNML==^D64 ; maximum number of characters in host name HSTBFL==<HSTNML/5>+1 ; length of host buffer PDLLEN==^D1000 ; stack length .PSECT DATA,1000 ; enter data area CURREG: BLOCK 1 ; current registry start HSTBUF: BLOCK HSTBFL ; host name buffers HS2BUF: BLOCK HSTBFL PDL: BLOCK PDLLEN ; stack .ENDPS .PSECT CODE,40000 ; enter code area 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. END HSTTST