Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/utilities/dnconn.list
There are no other files named dnconn.list in the archive.
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 1
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

     1					;<LCAMPBELL.DECNET>DNCONN.MAC.57 21-May-81 12:49:26, Edit by LCAMPBELL
     2					; Allow nonexistent host table, implement account/userid/pswd for
     3					; non-pass-through hosts, lengthen sleep times, etc. etc.
     4					;<LCAMPBELL.DECNET>DNCONN.MAC.53 20-May-81 14:46:34, Edit by LCAMPBELL
     5					;<LCAMPBELL.DECNET>DNCONN.MAC.52 20-May-81 14:43:02, Edit by LCAMPBELL
     6					; Return addr of host table to caller of .DNINI (for COMND recognition)
     7					;<LCAMPBELL.DECNET>DNCONN.MAC.51 20-May-81 13:57:13, Edit by LCAMPBELL
     8					; Added /NOMAIL20 for MS's use (we ignore it)
     9					;<LCAMPBELL.DECNET>DNCONN.MAC.50 19-May-81 12:52:30, Edit by LCAMPBELL
    10					; Created from code ripped out of DMAILR
    11
    12					;This software is furnished under a license and may only be used
    13					;  or copied in accordance with the terms of such license.
    14					;
    15					;Copyright (C) 1981  by Digital Equipment Corporation
    16					;			Maynard, Massachusetts, USA
    17
    18
    19						TITLE DNCONN - DECNET Connect Utility
    20
    21						SUBTTL Larry Campbell
    22
    23						SEARCH MACSYM,MONSYM
    24						SALL
    25						.DIRECTIVE FLBLST
    26
    27			000001		T1=1
    28			000002		T2=2
    29			000003		T3=3
    30			000004		T4=4
    31			000005		P1=5
    32			000006		P2=6
    33			000007		P3=7
    34			000010		P4=10
    35			000012		AP=12		; Argument block pointer
    36			000013		F=13		; Flags
    37			000014		W1=14
    38			000015		W2=15
    39			000016		JFN=16
    40			000017		P=17
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 2
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

    41
    42					;User interface to DNCONN - DECNET connect utility, with pass-through
    43					;
    44					;Routines are called by PUSHJ 17,<routine>
    45					;All accumulators except 1 and 2 are preserved
    46					;
    47					;Entry points:
    48					;
    49					;.DNINI	Init routing database and memory manager
    50					;
    51					;	AC1/ address of argument block (see DNCUNV.MAC for format)
    52					;
    53					;Return	+1: failure, AC1 points to error message, and error
    54					;	    message has already been output to appropriate destination
    55					;	+2: success, AC1 contains address of TBLUK table containing
    56					;	    names of all known hosts (the RH of each entry in this table
    57					;	    should be ignored by the calling program)
    58					;
    59					;	Called only once at program startup, or whenever the routing
    60					;	 database might have changed.  The argument block is the
    61					;	 same as that for .DNCON, but the only entries referenced
    62					;	 are DN.ERR, DN.WRN, and DN.INF, and these only if errors occur.
    63					;	 (DMAILR calls .DNINI whenever it wakes up to scan
    64					;	 for work to do)
    65					;
    66					;
    67					;.DNCON	Connect to remote object
    68					;
    69					;	AC1/ address of argument block 
    70					;
    71					;Return	+1: failure, AC1 contains either:
    72					;	    String pointer to text of error message
    73					;
    74					;	    In addition, if DN.ERR, DN.WRN, or DN.INF contain
    75					;	     a destination designator, the appropriate text
    76					;	     will have been written to the destination.
    77					;
    78					;	+2: success, JFN for net link in AC1
    79					;
    80					;The caller is responsible for all subsequent I/O and for closing the net link.
    81					;
    82					;Arguments for .DNCON routine - Connect to remote object
    83					;
    84					;	Name	Offset	Contents
    85					;	----	------	--------
    86			000000			DN.FLG== 0	; Flag bits
    87		400000	000000			   DN%DTS==1B0		; Preface msgs with date-time stamp
    88		200000	000000			   DN%SPL==1B1		; Spooler - be more patient
    89			000001			DN.HST== 1	; String pointer to remote host name
    90			000002			DN.ROB== 2	; Remote object type (binary number)
    91			000003			DN.LOB== 3	; Local object type (binary number)
    92			000004			DN.BSZ== 4	; Byte size (binary number)
    93			000005			DN.OPT== 5	; String pointer to ASCIZ optional data string
    94			000006			DN.PWD== 6	; String pointer to ASCIZ password string
    95			000007			DN.ACN== 7	; String pointer to ASCIZ account string
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 2-1
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

    96			000010			DN.USR==10	; String pointer to ASCIZ user-ID string
    97			000011			DN.ROP==11	; Destination designator for returned optional data
    98			000012			DN.RPC==12	; Maximum byte count for DN.ROP
    99			000013			DN.ERR==13	; Destination designator for error messages
   100			000014			DN.WRN==14	; Destination designator for warning messages
   101			000015			DN.INF==15	; Destination designator for informational messages
   102
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 3
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   103
   104					;Parameters
   105
   106			020000		STRN==20000			; Number of words for string space
   107			000204		ROUTEN==^D132			; Max chars in routing string
   108			000047		HOSTNN==^D39			; Max chars in a hostname
   109			000500		HSTPAG==500			; Page into which we map DECNET-HOSTS.TXT
   110
   111					;Impure storage
   112
   113	000000'				DATBEG:
   114	000000'				PMRHAK:	BLOCK 1
   115	000001'				ATTEMP: BLOCK 1
   116	000002'				HTABJ: BLOCK 1
   117	000003'				HNPTR: BLOCK 1
   118	000004'				RTPTR: BLOCK 1
   119	000005'				HFPGS: BLOCK 1
   120	000006'				HFCNT: BLOCK 1
   121	000007'				HFPTR:	BLOCK 1
   122	000010'				HSTR: BLOCK 20
   123	000030'				TERM: BLOCK 1
   124	000031'				NETJFN: BLOCK 1
   125	000032'				TMPST: BLOCK <ROUTEN+5>/5
   126	000065'				NJ: BLOCK 1
   127	000066'				FNAME: BLOCK 20
   128	000106'				PTR0: BLOCK 1
   129	000107'				ERRBUF:	BLOCK 50		; Error message buffer
   130	000157'				PSSHST:	BLOCK 10		; Name of 1st host in multihop connection
   131	000167'				CURRUT:	BLOCK 1			; Address of current route string block
   132	000170'				CURHST:	BLOCK 10		; Current (1st) destination host
   133	000200'				HOSTAB:	BLOCK 1000		; Host name and route table (TBLUK-style)
   134	001200'				FBITS:	BLOCK 1			; Flag bits for current host
   135	001201'				STRSPC:	BLOCK STRN		; String space
   136	021201'				STRSP0:	BLOCK 1			; Pointer to next free word in string space
   137	021202'				DATEND:
   138	021202'				ACSAV:	BLOCK 20		; AC save area
   139
   140					;Switch table
   141
   142	021222'	000004	000004		SWTTAB:	SWTTB0,,SWTTB0
   143	021223'	022345'	000000			[ASCIZ /ANF10/],,0
   144	021224'	022347'	000000			[ASCIZ /Gateway.ARPANET/],,0
   145	021225'	022353'	000000			[ASCIZ /KAWELL/],,0
   146	021226'	022355'	000000			[ASCIZ /NoMail20/],,0	; Can't receive TOPS20-style mail
   147			000004		SWTTB0==.-SWTTAB-1
   148
   149
   150					;MACRO definitions
   151
   152					DEFINE IERROR (STRING),<	;; Internal, fatal error
   153						JRST [	HRROI T1,ERRBUF		;; Where to build error message
   154							CALL DTSTMP		;; Date-time stamp maybe
   155							MOVE T2,[POINT 7,[ASCIZ /STRING/]]
   156							SETZB T3,T4
   157							SOUT
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 3-1
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   158							SKIPN T1,DN.ERR(AP)
   159							JRST .DNLER
   160							HRROI T2,[ASCIZ /
   161					?/]
   162							SOUT
   163							HRROI T2,ERRBUF
   164							SOUT			;;  then fill it
   165							HRROI T2,[ASCIZ /
   166					/]
   167							SOUT
   168							JRST .DNLER]		;; Return pointing to string
   169					>
   170
   171
   172					DEFINE JERR (PFX,STRING),<		;; JSYS error
   173						CALL [	HRROI T1,ERRBUF		;; Where to build error string
   174							CALL DTSTMP		;; CRLF and maybe timestamp
   175							HRROI T2,[ASCIZ /STRING because: /]
   176							SETZB T3,T4		;; Build error string
   177							SOUT
   178							HRLOI T2,.FHSLF		;; Last JSYS error
   179							ERSTR
   180							 JFCL
   181							 JFCL
   182							SETZB T3,T4
   183							HRROI T2,[ASCIZ /
   184					PFX/]
   185							SKIPE T1,DN.ERR(AP)
   186							SOUT
   187							HRROI T2,ERRBUF		;; Point to string we built
   188							SKIPE T1,DN.ERR(AP)	;; If user supplied message sink,
   189							SOUT			;;  write the error there
   190							HRROI T2,[ASCIZ /
   191					/]
   192							SKIPE T1,DN.ERR(AP)
   193							MOVE T1,[POINT 7,ERRBUF]
   194							RET]
   195					>
   196
   197					DEFINE JERROR (PFX,STRING),<
   198						JRST [	JERR (PFX,STRING)
   199							JRST .DNLER]		;; Go return failure to caller
   200					>
   201
   202					DEFINE WARN (STRING),<		;; Do warning message
   203						CALL [IFIDN <STRING><CRLF>,<
   204							HRROI T1,ERRBUF
   205							CALL DTSTMP
   206						      >
   207						      IFDIF <STRING><CRLF>,<
   208							HRROI T2,[ASCIZ /STRING/]
   209							SETZB T3,T4
   210							SOUT
   211						      >
   212							RET]			;; Continue on, this is nonfatal
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 3-2
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   213					>
   214
   215
   216					;Type an informational message
   217
   218					DEFINE INFO(STRING),<
   219						CALL [IFIDN <STRING><CRLF>,<
   220							HRROI T2,[ASCIZ/
   221					/]
   222							SETZB T3,T4
   223							SKIPE T1,DN.INF(AP)
   224							SOUT
   225							SKIPE T1,DN.INF(AP)
   226							CALL DTSTMP		;; CRLF and maybe timestamp
   227						      >
   228						      IFDIF <STRING><CRLF>,<
   229							HRROI T2,[ASCIZ /STRING/]
   230							SETZB T3,T4
   231							SKIPE T1,DN.INF(AP)	;;  if one exists
   232							SOUT
   233						      >
   234							RET]
   235					>
   236					;Route-string block definitions
   237
   238			000000		RB.LNK==0		; Link to next route-string block
   239			000001		RB.FLG==1		; Flag bits
   240			000002		RB.RST==2		; Routing string begins here
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 4
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   241
   242					;Jacket routines -- provide AC-saving and restoring and set up arg ptrs
   243
   244					;Entry point for init routine
   245
   246	021227'	250 00 0 00 021202'	.DNINI::EXCH 0,ACSAV		; First save ACs
   247	021230'	200 00 0 00 022357'		MOVE 0,[1,,ACSAV+1]
   248	021231'	251 00 0 00 021221'		BLT 0,ACSAV+17
   249	021232'	200 12 0 00 000001 		MOVE AP,T1		; Get arg block pointer
   250	021233'	200 13 0 12 000000 		MOVE F,DN.FLG(AP)	; Load up flags AC
   251	021234'	260 17 0 00 021261'		CALL DNINI		; Do the work
   252	021235'	124 01 0 00 021203'	.DNRSK:	DMOVEM T1,ACSAV+1	; Return these two to caller
   253	021236'	200 00 0 00 022360'		MOVE 0,[ACSAV+1,,1]	; Restore the ACs
   254	021237'	251 00 0 00 000017 		BLT 0,17
   255	021240'	200 00 0 00 021202'		MOVE 0,ACSAV
   256	021241'	254 00 0 00 022257'		RETSKP
   257
   258					;Here for failure return to caller
   259
   260	021242'	200 01 0 00 022361'	.DNLER:	MOVE T1,[POINT 7,ERRBUF]
   261	021243'	124 01 0 00 021203'		DMOVEM T1,ACSAV+1	; Restore ACs
   262	021244'	200 00 0 00 022360'		MOVE 0,[ACSAV+1,,1]
   263	021245'	251 00 0 00 000017 		BLT 0,17
   264	021246'	200 00 0 00 021202'		MOVE 0,ACSAV
   265	021247'	263 17 0 00 000000 		RET
   266
   267
   268					;Entry point for connect utility
   269
   270	021250'	250 00 0 00 021202'	.DNCON::EXCH 0,ACSAV		; Save ACs
   271	021251'	200 00 0 00 022357'		MOVE 0,[1,,ACSAV+1]
   272	021252'	251 00 0 00 021221'		BLT 0,ACSAV+17
   273	021253'	200 12 0 00 000002 		MOVE AP,T2
   274	021254'	202 12 0 00 000000'		MOVEM AP,PMRHAK
   275	021255'	200 12 0 00 000001 		MOVE AP,T1		; Set up arg ptr
   276	021256'	200 13 0 12 000000 		MOVE F,DN.FLG(AP)
   277	021257'	260 17 0 00 021465'		CALL .DNCN0		; Do the work
   278	021260'	254 00 0 00 021235'		CALLRET .DNRSK		; Go do winning return
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 5
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   279
   280					;DNINI - Init memory manager and routing database
   281					; Local flag: P2 nonzero indicates that we've found the routing string
   282
   283	021261'	260 17 0 00 022232'	DNINI:	CALL INIMEM		; Init memory manager
   284	021262'	201 01 0 00 000777 		MOVEI T1,777		; Empty host table first
   285	021263'	202 01 0 00 000200'		MOVEM T1,HOSTAB		;  ..
   286	021264'	205 01 0 00 100001 		MOVX T1,GJ%SHT!GJ%OLD
   287	021265'	561 02 0 00 022362'		HRROI T2,[ASCIZ /SYSTEM:DECNET-HOSTS.TXT/]
   288	021266'	104 00 0 00 000020 		GTJFN
   289	021267'	320 16 0 00 022260'		 ERJMP R		; Just return quietly if no host table
   290	021270'	200 02 0 00 022367'		MOVX T2,<7B5>+OF%RD
   291	021271'	104 00 0 00 000021 		OPENF
   292	021272'	320 16 0 00 022260'		 ERJMP R
   293	021273'	202 01 0 00 000002'		MOVEM T1,HTABJ
   294	021274'	104 00 0 00 000036 		SIZEF			; Get file size
   295	021275'	255 00 0 00 000000 		 JFCL			; Unlikely
   296	021276'	202 03 0 00 000005'		MOVEM T3,HFPGS		; Save page count
   297	021277'	200 01 0 00 022370'		MOVE T1,[POINT 7,HSTPAG*1000]
   298	021300'	202 01 0 00 000007'		MOVEM T1,HFPTR		; save
   299	021301'	514 01 0 00 000002'		HRLZ T1,HTABJ		; Map from file page zero
   300	021302'	200 02 0 00 022371'		MOVE T2,[.FHSLF,,HSTPAG]	;  to fork page HSTPAG
   301	021303'	661 03 0 00 510000 		TXO T3,PM%RD!PM%PLD!PM%CNT
   302	021304'	104 00 0 00 000056 		PMAP
   303	021305'	200 01 0 00 000002'		MOVE T1,HTABJ		; Get JFN back
   304	021306'	200 02 0 00 022372'		MOVE T2,[1,,.FBSIZ]	; Get byte count for file
   305	021307'	201 03 0 00 000003 		MOVEI T3,T3		; Into T3
   306	021310'	104 00 0 00 000063 		GTFDB
   307	021311'	320 16 0 00 022436'		 ERJMP [JERROR (?,<GTFDB failure for SYSTEM:DECNET-HOSTS.TXT>)]
   308	021312'	202 03 0 00 000006'		MOVEM T3,HFCNT		; Save
   309	021313'	400 06 0 00 000000 		SETZ P2,		;Flag that no routing string has been found yet
   310	021314'	201 01 0 00 000010 	DNINI0:	MOVEI T1,<<HOSTNN+5>/5>	;Room for one host name plus null
   311	021315'	260 17 0 00 022241'		CALL ALLSTR		;Allocate string space
   312	021316'	254 00 0 00 022456'		 IERROR <Host table from SYSTEM:DECNET-HOSTS.TXT too big for internal buffer>
   313	021317'	505 01 0 00 440700 		HRLI T1,(POINT 7,)	;Form byte pointer to this place
   314	021320'	202 01 0 00 000003'		MOVEM T1,HNPTR
   315	021321'	201 01 0 00 000033 		MOVEI T1,<<ROUTEN+5>/5>	;room for routing string plus null
   316	021322'	260 17 0 00 022241'		CALL ALLSTR
   317	021323'	254 00 0 00 022456'		 IERROR <Host table from SYSTEM:DECNET-HOSTS.TXT too big for internal buffer>
   318	021324'	505 01 0 00 440700 		HRLI T1,(POINT 7,)	; Form byte pointer
   319	021325'	202 01 0 00 000004'		MOVEM T1,RTPTR
   320	021326'	200 07 0 00 000003'		MOVE P3,HNPTR		;First we're parsing hostnames
   321	021327'	201 10 0 00 000047 		MOVEI P4,HOSTNN		;max bytes in a hostname
   322	021330'	260 17 0 00 021420'	DNINI1:	CALL TBIN		;Get next byte
   323	021331'	254 00 0 00 021406'		 JRST DNINIX
   324	021332'	306 01 0 00 000057 		CAIN T1,"/"		; Switch?
   325	021333'	260 17 0 00 021436'		CALL HSTIDK		; Yes, parse it
   326	021334'	306 01 0 00 000012 		CAIN T1,12		;EOL?
   327	021335'	254 00 0 00 021360'		JRST DNINI4		;Yes, let's see what we've got
   328	021336'	306 01 0 00 000075 		CAIN T1,"="		;MS handles synonyms, we ignore them
   329	021337'	254 00 0 00 021344'		JRST DNINI2
   330	021340'	306 01 0 00 000054 		CAIN T1,","		;Start of routing string?
   331	021341'	254 00 0 00 021351'		JRST DNINI3		;Yes, go handle
   332	021342'	136 01 0 00 000007 		IDPB T1,P3		;No, deposit next char of hostname or route
   333	021343'	367 10 0 00 021330'		SOJG P4,DNINI1		;Watch out for too-long strings
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 5-1
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   334
   335	021344'	260 17 0 00 021420'	DNINI2:	CALL TBIN		;Synonym - ignore entire line
   336	021345'	254 00 0 00 021406'		 JRST DNINIX
   337	021346'	302 01 0 00 000012 		CAIE T1,12
   338	021347'	254 00 0 00 021344'		JRST DNINI2
   339	021350'	254 00 0 00 021360'		JRST DNINI4		;OK, go see if we have something
   340
   341	021351'	400 01 0 00 000000 	DNINI3:	SETZ T1,		; Comma - tie off hostname string and
   342	021352'	136 01 0 00 000007 		IDPB T1,P3		;  begin parsing routing string
   343	021353'	201 10 0 00 000204 		MOVEI P4,ROUTEN		; Max chars in routing string
   344	021354'	200 07 0 00 000004'		MOVE P3,RTPTR		; Where to store routing string
   345	021355'	271 07 0 00 000002 		ADDI P3,RB.RST		; Skip to route string part of block
   346	021356'	474 06 0 00 000000 		SETO P2,		; Flag that routing string was found
   347	021357'	254 00 0 00 021330'		JRST DNINI1		; Go eat more of the file
   348
   349					;Here after EOL found.  P2 will be nonzero if a routing string was found.
   350
   351	021360'	400 01 0 00 000000 	DNINI4:	SETZ T1,		;Insure ASCIZ
   352	021361'	200 02 0 00 000007 		MOVE T2,P3
   353	021362'	136 01 0 00 000002 		IDPB T1,T2		; ..
   354	021363'	201 01 0 00 000200'		MOVEI T1,HOSTAB		;TBLUK table for hosts
   355	021364'	560 02 0 00 000003'		HRRO T2,HNPTR		; See if entry already in table
   356	021365'	104 00 0 00 000537 		TBLUK
   357	021366'	607 02 0 00 040000 		TXNN T2,TL%EXM		; Already there?
   358	021367'	254 00 0 00 021377'		JRST DNINI6		; No, add to table then
   359
   360					;If node already in table and this entry has no route string, ignore it
   361
   362						JUMPE P2,[MOVEI P4,<<HOSTNN+5>/5> ;No routing found - reuse string blks
   363							MOVE P3,HNPTR		;Back to scanning hostname
   364							SETZ P2,		;Flag no routing string found yet
   365	021370'	322 06 0 00 022474'			JRST DNINI1]		;Try next line in file
   366	021371'	200 02 0 00 000001 	DNINI5:	MOVE T2,T1		; Save addr of current block
   367	021372'	550 01 0 01 000000 		HRRZ T1,(T1)		; Move to next block in chain
   368	021373'	326 01 0 00 021371'		JUMPN T1,DNINI5		; Look for end of chain
   369	021374'	550 01 0 00 000004'		HRRZ T1,RTPTR		; Get address of routing string
   370	021375'	202 01 0 02 000000 		MOVEM T1,(T2)		; Link to list
   371	021376'	254 00 0 00 021404'		JRST DNINI7		; Done
   372	021377'	201 01 0 00 000200'	DNINI6:	MOVEI T1,HOSTAB
   373	021400'	504 02 0 00 000003'		HRL T2,HNPTR		; Address of hostname
   374	021401'	540 02 0 00 000004'		HRR T2,RTPTR		; Address of routing string
   375	021402'	104 00 0 00 000536 		TBADD			; Add to the table
   376	021403'	320 16 0 00 022541'		 ERJMP [JERROR (?,<TBADD error adding hosts to routing table>)]
   377	021404'	400 06 0 00 000000 	DNINI7:	SETZ P2,		;reset route-string-found flag
   378	021405'	254 00 0 00 021314'		JRST DNINI0		;OK, try for next guy
   379
   380	021406'	474 01 0 00 000000 	DNINIX:	SETO T1,		; Unmap file pages now
   381	021407'	200 02 0 00 022371'		MOVE T2,[.FHSLF,,HSTPAG]
   382	021410'	200 03 0 00 000005'		MOVE T3,HFPGS
   383	021411'	661 03 0 00 400000 		TXO T3,PM%CNT
   384	021412'	104 00 0 00 000056 		PMAP
   385	021413'	200 01 0 00 000002'		MOVE T1,HTABJ		;Close JFN and return
   386	021414'	104 00 0 00 000022 		CLOSF
   387	021415'	254 00 0 00 022600'		 JERROR (?,Error closing SYSTEM:DECNET-HOSTS.TXT>)
   388	021416'	201 01 0 00 000200'		MOVEI T1,HOSTAB		; Return address of host table to caller
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 5-2
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   389	021417'	263 17 0 00 000000 		RET
   390
   391
   392					;Utility routine to read bytes, ignoring null, LWSP, and CR
   393					; Also eats up comments so higher level need not worry about them
   394					;Return	+1: EOF
   395					;	+2: OK, next byte in T1
   396
   397	021420'	375 00 0 00 000006'	TBIN:	SOSGE HFCNT		; Any bytes left?
   398	021421'	263 17 0 00 000000 		RET			; No, nonskip return
   399	021422'	134 01 0 00 000007'		ILDB T1,HFPTR		; Yes, fetch next
   400	021423'	322 01 0 00 021420'		JUMPE T1,TBIN		; Ignore nulls
   401	021424'	306 01 0 00 000073 		CAIN T1,";"		; Comment?
   402						JRST [	CALL TBIN		; Yes, eat chars until EOL
   403							 RET			; Pass EOF up to caller
   404							CAIE T1,12		;  ..
   405							JRST .			;  ..
   406	021425'	254 00 0 00 022602'			RETSKP]			; OK, return the LF to caller
   407	021426'	306 01 0 00 000041 		CAIN T1,"!"		; Other flavor of comment?
   408						JRST [	CALL TBIN		; Yes, chew it up
   409							 RET			; Pass EOF up to caller
   410							CAIN T1,"!"		; Chew chars until closing bang
   411							CALLRET TBIN		;  but return next char, not bang
   412							CAIE T1,12		;  or EOL
   413							JRST .			; Neither case, keep munching
   414	021427'	254 00 0 00 022607'			RETSKP]			; EOL, return it
   415	021430'	302 01 0 00 000040 		CAIE T1," "		; Ignore spaces
   416	021431'	306 01 0 00 000015 		CAIN T1,15		;  and CR
   417	021432'	254 00 0 00 021420'		JRST TBIN
   418	021433'	306 01 0 00 000011 		CAIN T1,11		; Ignore tabs
   419	021434'	254 00 0 00 021420'		JRST TBIN
   420	021435'	254 00 0 00 022257'		RETSKP
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 6
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   421
   422					;Parse switch
   423					;Return	+1: always, T1/ terminating character, T2 trashed
   424
   425	021436'	201 02 0 00 000010'	HSTIDK:	MOVEI T2,HSTR		; Point to place to stuff switch
   426	021437'	505 02 0 00 440700 		HRLI T2,(POINT 7,)
   427	021440'	260 17 0 00 021420'	HSTDK0:	CALL TBIN		; Get a byte
   428	021441'	254 00 0 00 021450'		 JRST HSTDK1		; Let someone else bite it on this one
   429	021442'	307 01 0 00 000172 		CAIG T1,172
   430	021443'	305 01 0 00 000101 		CAIGE T1,101		; If not alphabetic,
   431	021444'	254 00 0 00 021450'		JRST HSTDK1		; Finish up and quit
   432	021445'	620 01 0 00 000040 		TRZ T1,40		; Uppercase
   433	021446'	136 01 0 00 000002 		IDPB T1,T2		; Stuff into switch
   434	021447'	254 00 0 00 021440'		JRST HSTDK0		; Loop thru all chars
   435	021450'	202 01 0 00 000030'	HSTDK1:	MOVEM T1,TERM		; Save terminator
   436	021451'	400 01 0 00 000000 		SETZ T1,			; Insure ASCIZ
   437	021452'	136 01 0 00 000002 		IDPB T1,T2
   438	021453'	201 02 0 00 000010'		MOVEI T2,HSTR		; Point to switch name
   439	021454'	201 01 0 00 021222'		MOVEI T1,SWTTAB		; Switch table
   440	021455'	104 00 0 00 000537 		TBLUK
   441						ERJMP [	JERROR (?,<TBLUK error while parsing switches from SYSTEM:DECNET-HOSTS.TXT>)
   442	021456'	320 16 0 00 022663'	]
   443	021457'	607 02 0 00 140000 		TXNN T2,TL%EXM+TL%ABR		; Found this switch?
   444						JRST [	WARN CRLF
   445							WARN <Unknown switch >
   446							HRROI T2,HSTR
   447							SETZB T3,T4
   448							SOUT
   449							WARN < in SYSTEM:DECNET-HOSTS.TXT>
   450							SKIPN T1,DN.WRN(AP)
   451							RET
   452							HRROI T2,[ASCIZ/
   453					%/]
   454							SOUT
   455							HRROI T2,ERRBUF
   456							SOUT
   457							HRROI T2,[ASCIZ/
   458					/]
   459							SOUT
   460	021460'	254 00 0 00 022712'			RET]
   461	021461'	550 01 0 01 000000 		HRRZ T1,(T1)		; Get bits associated with switch
   462	021462'	436 01 0 00 001200'		IORM T1,FBITS		; Save for posterity
   463	021463'	200 01 0 00 000030'		MOVE T1,TERM		; Return terminator
   464	021464'	263 17 0 00 000000 		RET			; Return
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 7
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   465
   466					;.DNCON - Connect to remote object
   467
   468	021465'	402 00 0 00 000167'	.DNCN0:	SETZM CURRUT		; Init state variables
   469	021466'	402 00 0 00 000157'		SETZM PSSHST
   470	021467'	402 00 0 00 000170'		SETZM CURHST
   471	021470'	402 00 0 00 000001'		SETZM ATTEMP
   472	021471'	350 00 0 00 000001'		AOS ATTEMP
   473	021472'	254 00 0 00 021475'		JRST .DNCO2		; Skip alternate path verbiage first pass
   474	021473'	260 17 0 00 022736'	.DNCO1:	INFO < trying alternate path, >
   475	021474'	350 00 0 00 000001'		AOS ATTEMP
   476	021475'	260 17 0 00 021776'	.DNCO2:	CALL HSTNAM		; Get JFN for server or pass-through
   477	021476'	202 01 0 00 000031'		MOVEM T1,NETJFN
   478	021477'	332 00 0 00 000157'		SKIPE PSSHST		; Doing any routing?
   479						JRST [	INFO <routing = >	; Yes, be chatty
   480							HRROI T2,PSSHST
   481							SETZB T3,T4
   482							SKIPE T1,DN.INF(AP)	; If we have a place to put msgs,
   483							SOUT			;  output it
   484							INFO <::>
   485	021500'	254 00 0 00 022761'			JRST .+1]
   486	021501'	200 01 0 00 000031'		MOVE T1,NETJFN		; pass net JFN to OPNLNK
   487	021502'	260 17 0 00 022137'		CALL OPNLNK
   488	021503'	254 00 0 00 021511'		 JRST TRYAGN
   489	021504'	260 17 0 00 021553'		CALL PSSNEG		; Negotiate with pass-through task if necessary
   490						 JRST [	MOVE T1,NETJFN		; OK, dump the JFN, it didn't work
   491							TXO T1,CZ%ABT
   492							CLOSF
   493							 JFCL
   494	021505'	254 00 0 00 022770'			JRST TRYAGN]
   495					;	INFO <connect OK, >
   496	021506'	260 17 0 00 022775'		INFO CRLF
   497	021507'	200 01 0 00 000031'		MOVE T1,NETJFN
   498	021510'	263 17 0 00 000000 		RET			; Win!!
   499
   500
   501					;Here to try for another path
   502	021511'	260 17 0 00 021546'	TRYAGN:	CALL ALTRNT
   503	021512'	254 00 0 00 021473'		 JRST .DNCO1		; Yes, go use it
   504	021513'	561 01 0 00 000107'		HRROI T1,ERRBUF
   505	021514'	561 02 0 00 023004'		HRROI T2,[ASCIZ /Connection failed after /]
   506	021515'	403 03 0 00 000004 		SETZB T3,T4
   507	021516'	104 00 0 00 000053 		SOUT
   508	021517'	200 02 0 00 000001'		MOVE T2,ATTEMP
   509	021520'	201 03 0 00 000012 		MOVEI T3,^D10
   510	021521'	104 00 0 00 000224 		NOUT
   511	021522'	255 00 0 00 000000 		 JFCL
   512	021523'	561 02 0 00 023011'		HRROI T2,[ASCIZ / routing attempt/]
   513	021524'	403 03 0 00 000004 		SETZB T3,T4
   514	021525'	104 00 0 00 000053 		SOUT
   515	021526'	201 02 0 00 000163 		MOVEI T2,"s"
   516	021527'	200 03 0 00 000001'		MOVE T3,ATTEMP
   517	021530'	302 03 0 00 000001 		CAIE T3,1
   518	021531'	104 00 0 00 000051 		BOUT
   519	021532'	400 02 0 00 000000 		SETZ T2,
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 7-1
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   520	021533'	104 00 0 00 000051 		BOUT
   521	021534'	403 03 0 00 000004 		SETZB T3,T4
   522	021535'	336 01 0 12 000013 		SKIPN T1,DN.ERR(AP)
   523	021536'	254 00 0 00 021242'		JRST .DNLER
   524						HRROI T2,[ASCIZ /
   525	021537'	561 02 0 00 022406'	?/]
   526	021540'	104 00 0 00 000053 		SOUT
   527	021541'	561 02 0 00 000107'		HRROI T2,ERRBUF
   528	021542'	104 00 0 00 000053 		SOUT
   529						HRROI T2,[ASCIZ /
   530	021543'	561 02 0 00 022407'	/]
   531	021544'	104 00 0 00 000053 		SOUT
   532	021545'	254 00 0 00 021242'		JRST .DNLER		; No, report failure to caller
   533					;Utility routine to test for alternate path to a host
   534					;Return	+1: Alternate path exists
   535					;	+2: nope
   536
   537	021546'	336 01 0 00 000167'	ALTRNT:	SKIPN T1,CURRUT		; Point to current routing string block
   538	021547'	254 00 0 00 022257'		RETSKP			; No alternate path if no routing
   539	021550'	550 01 0 01 000000 		HRRZ T1,(T1)		; Get possible address of alternate
   540	021551'	326 01 0 00 022260'		JUMPN T1,R		; If nonzero, there's a path
   541	021552'	254 00 0 00 022257'		RETSKP
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 8
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   542
   543					;PSSNEG - Negotiate hairy routing with pass-through task
   544					;Call with:
   545					;	T1/ JFN of net link to first pass-through task
   546					;Return	+1: failure, error message(s) already logged
   547					;	+2: success, JFN now speaks to mail listener at other end
   548
   549	021553'	336 00 0 00 000157'	PSSNEG:	SKIPN PSSHST		; are we routing at all?
   550	021554'	254 00 0 00 022257'		RETSKP			; no, just pretend we did good stuff
   551	021555'	202 01 0 00 000065'		MOVEM T1,NJ		; Save net JFN
   552	021556'	200 02 0 00 000167'		MOVE T2,CURRUT		; Point to current routing string block
   553	021557'	271 02 0 00 000002 		ADDI T2,RB.RST		; Skip to string part
   554	021560'	505 02 0 00 440700 		HRLI T2,(POINT 7,)	; ..
   555	021561'	134 01 0 00 000002 	PSSNG0:	ILDB T1,T2		; Skip first hostname, we're already there
   556	021562'	322 01 0 00 021763'		JUMPE T1,PSSNFG		; Better not find any nulls here, foax
   557	021563'	302 01 0 00 000072 		CAIE T1,":"
   558	021564'	254 00 0 00 021561'		JRST PSSNG0
   559	021565'	134 01 0 00 000002 		ILDB T1,T2		; Better be two colons
   560	021566'	302 01 0 00 000072 		CAIE T1,":"		;  ..
   561	021567'	254 00 0 00 021763'		JRST PSSNFG		;No !@#$ing good
   562	021570'	201 01 0 00 000032'		MOVEI T1,TMPST		;Where to build crud for msg to psthhru
   563	021571'	505 01 0 00 440700 		HRLI T1,(POINT 7,)
   564	021572'	201 03 0 00 000001 		MOVEI T3,1		;I don't understand what this 1 is for,
   565	021573'	136 03 0 00 000001 		IDPB T3,T1		; but it don't work without it...
   566	021574'	403 03 0 00 000004 		SETZB T3,T4		;Move remainder of routing string there
   567	021575'	104 00 0 00 000053 		SOUT
   568	021576'	332 03 0 12 000010 		SKIPE T3,DN.USR(AP)		;IS USERID FIELD PRESENT
   569						CALL [HRLI T3,(POINT 7,0)
   570							ILDB T4,T3
   571							SKIPE T4
   572							TRO F,1		;USERID IS PRESENT
   573	021577'	260 17 0 00 023015'			RET]
   574	021600'	332 03 0 12 000006 		SKIPE T3,DN.PWD(AP)		;IS PASSWORD FIELD PRESENT
   575						CALL [HRLI T3,(POINT 7,0)
   576							ILDB T4,T3
   577							SKIPE T4
   578							TRO F,2
   579	021601'	260 17 0 00 023022'			RET]
   580	021602'	332 03 0 12 000007 		SKIPE T3,DN.ACN(AP)
   581						CALL [HRLI T3,(POINT 7,0)
   582							ILDB T4,T3
   583							SKIPE T4
   584							TRO F,4
   585	021603'	260 17 0 00 023027'			RET]
   586	021604'	403 03 0 00 000004 		SETZB T3,T4
   587	021605'	602 13 0 00 000007 		TRNE F,7		;ANY ACCOUNTING FIELDS PRESENT?
   588	021606'	254 00 0 00 021610'		JRST PSSNG4		;YES
   589						JRST [	HRROI T2,[ASCIZ /"/]	; All of them are blank,
   590	021607'	254 00 0 00 023035'			JRST PSSNG3]		;  skip this stuff entirely
   591	021610'	211 02 0 00 000002 	PSSNG4:	MOVNI T2,2		; Back up over terminating double colon
   592	021611'	133 02 0 00 000001 		ADJBP T2,T1		;  ..
   593	021612'	200 01 0 00 000002 		MOVE T1,T2		;  ..
   594	021613'	201 02 0 00 000042 		MOVEI T2,42		; Delimit user-id/password/account strings
   595	021614'	136 02 0 00 000001 		IDPB T2,T1		;  with doublequote
   596	021615'	606 13 0 00 000001 		TRNN F,1		;USERID THERE?
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 8-1
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   597	021616'	254 00 0 00 021631'		JRST PSS.A		;NO
   598	021617'	200 02 0 12 000010 		MOVE T2,DN.USR(AP)
   599	021620'	505 02 0 00 440700 		HRLI T2,(POINT 7,0)
   600	021621'	260 17 0 00 021764'		CALL UQSOUT
   601	021622'	200 04 0 00 000013 		MOVE T4,F		;GET FLAGS
   602	021623'	405 04 0 00 000007 		ANDI T4,7		;GET THE BITS
   603	021624'	201 02 0 00 000040 		MOVEI T2," "		;GET A SPACE
   604	021625'	302 04 0 00 000007 		CAIE T4,7
   605	021626'	306 04 0 00 000003 		CAIN T4,3
   606	021627'	136 02 0 00 000001 		IDPB T2,T1		;YES, OUTPUT A SPACE
   607	021630'	400 04 0 00 000000 		SETZ T4,
   608	021631'	606 13 0 00 000002 	PSS.A:	TRNN F,2
   609	021632'	254 00 0 00 021644'		JRST PSS.B
   610	021633'	200 02 0 12 000006 		MOVE T2,DN.PWD(AP)
   611	021634'	505 02 0 00 440700 		HRLI T2,(POINT 7,0)
   612	021635'	260 17 0 00 021764'		CALL UQSOUT
   613	021636'	201 02 0 00 000040 		MOVEI T2," "
   614	021637'	200 04 0 00 000013 		MOVE T4,F
   615	021640'	405 04 0 00 000007 		ANDI T4,7
   616	021641'	306 04 0 00 000007 		CAIN T4,7
   617	021642'	136 02 0 00 000001 		IDPB T2,T1		;OUTPUT A SPACE
   618	021643'	400 04 0 00 000000 		SETZ T4,
   619	021644'	606 13 0 00 000004 	PSS.B:	TRNN F,4		;ACCOUNT STRING THERE?
   620	021645'	254 00 0 00 021651'		JRST PSS.C		;NO
   621	021646'	200 02 0 12 000007 		MOVE T2,DN.ACN(AP)
   622	021647'	505 02 0 00 440700 		HRLI T2,(POINT 7,0)
   623	021650'	260 17 0 00 021764'		CALL UQSOUT
   624	021651'	561 02 0 00 023037'	PSS.C:	HRROI T2,[ASCIZ /"::"/]	; More punctuation
   625	021652'	104 00 0 00 000053 	PSSNG3:	SOUT			;  ..
   626	021653'	336 02 0 12 000002 		SKIPN T2,DN.ROB(AP)	; Get remote object type
   627	021654'	254 00 0 00 023054'		IERROR <No remote object type specified when .DNCON was called>
   628	021655'	201 03 0 00 000012 		MOVX T3,^D10		; Decimal number
   629	021656'	104 00 0 00 000224 		NOUT
   630	021657'	254 00 0 00 023125'		 JERROR (?,<NOUT failure at PSSNEG>)
   631	021660'	201 02 0 00 000075 		MOVEI T2,"="		; Punctuate!
   632	021661'	136 02 0 00 000001 		IDPB T2,T1		;  ..
   633	021662'	201 02 0 00 000042 		MOVEI T2,42		; Close quote
   634	021663'	136 02 0 00 000001 		IDPB T2,T1		;  ..
   635	021664'	400 02 0 00 000000 		SETZ T2,		; Insure ASCIZ
   636	021665'	136 02 0 00 000001 		IDPB T2,T1
   637	021666'	200 01 0 00 000065'		MOVE T1,NJ		;JFN of net link
   638	021667'	561 02 0 00 000032'		HRROI T2,TMPST		;Message to send
   639	021670'	403 03 0 00 000004 		SETZB T3,T4
   640	021671'	104 00 0 00 000532 		SOUTR			;Force the message out
   641						 ERJMP [JERR (%,<Couldn't send path to pass-through task>)
   642	021672'	320 16 0 00 023165'			RET]
   643	021673'	200 01 0 00 000065'	PSSNG1:	MOVE T1,NJ		;Now read the response
   644	021674'	561 02 0 00 000032'		HRROI T2,TMPST
   645	021675'	403 03 0 00 000004 		SETZB T3,T4
   646	021676'	104 00 0 00 000531 		SINR
   647						 ERJMP [WARN CRLF
   648							WARN <Couldn't read reply from pass-through task because: >
   649							HRLOI T2,.FHSLF
   650							ERSTR
   651							 JFCL
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 8-2
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   652							 JFCL
   653							SKIPN T1,DN.WRN(AP)
   654							RET
   655							HRROI T2,[ASCIZ /
   656					%/]
   657							SOUT
   658							HRROI T2,ERRBUF
   659							SOUT
   660							HRROI T2,[ASCIZ /
   661					/]
   662							SOUT
   663	021677'	320 16 0 00 023206'			RET]
   664	021700'	400 04 0 00 000000 		SETZ T4,		;tie off reply
   665	021701'	136 04 0 00 000002 		IDPB T4,T2		; ..
   666	021702'	561 01 0 00 000107'		HRROI T1,ERRBUF
   667	021703'	561 02 0 00 000032'		HRROI T2,TMPST
   668	021704'	403 03 0 00 000004 		SETZB T3,T4
   669	021705'	104 00 0 00 000053 		SOUT			;MOVE THE ANSWER
   670	021706'	200 02 0 00 022361'		MOVE T2,[POINT 7,ERRBUF]
   671	021707'	200 01 0 00 023225'		MOVE T1,[POINT 7,TMPST]
   672	021710'	134 03 0 00 000002 	FIXUP:	ILDB T3,T2		;GET A BYTE
   673	021711'	322 03 0 00 021745'		JUMPE T3,ENDF.2		;ALL DONE
   674	021712'	306 03 0 00 000042 		CAIN T3,""""		;DOUBLE QUOTE?
   675	021713'	254 00 0 00 021716'		JRST FIXIT		;YES
   676	021714'	136 03 0 00 000001 		IDPB T3,T1		;SAVE IT
   677	021715'	254 00 0 00 021710'		JRST FIXUP
   678	021716'	136 03 0 00 000001 	FIXIT:	IDPB T3,T1		;SAVE IT
   679	021717'	134 03 0 00 000002 		ILDB T3,T2		;GET A BYTE OF THE USER ID
   680	021720'	322 03 0 00 021745'		JUMPE T3,ENDF.2
   681	021721'	306 03 0 00 000042 		CAIN T3,""""
   682	021722'	254 00 0 00 021741'		JRST ENDF.1
   683	021723'	302 03 0 00 000040 		CAIE T3," "
   684	021724'	254 00 0 00 021716'		JRST FIXIT
   685	021725'	136 03 0 00 000001 		IDPB T3,T1		;THE BLANK
   686	021726'	261 17 0 00 000002 		PUSH P,T2
   687	021727'	561 02 0 00 023226'		HRROI T2,[ASCIZ/password/]
   688	021730'	403 03 0 00 000004 		setzb t3,t4
   689	021731'	104 00 0 00 000053 		SOUT
   690	021732'	262 17 0 00 000002 		POP P,T2
   691	021733'	134 03 0 00 000002 	EATUP:	ILDB T3,T2		;EAT UP THE PASSWORD
   692	021734'	322 03 0 00 021745'		JUMPE T3,ENDF.2
   693	021735'	306 03 0 00 000042 		CAIN T3,""""
   694	021736'	254 00 0 00 021741'		JRST ENDF.1
   695	021737'	302 03 0 00 000040 		CAIE T3," "
   696	021740'	254 00 0 00 021733'		JRST EATUP
   697	021741'	136 03 0 00 000001 	ENDF.1:	IDPB T3,T1
   698	021742'	403 03 0 00 000004 		SETZB T3,T4
   699	021743'	104 00 0 00 000053 		SOUT
   700	021744'	254 00 0 00 021746'		JRST ENDF.3
   701	021745'	136 03 0 00 000001 	ENDF.2:	IDPB T3,T1
   702	021746'	201 07 0 00 000032'	ENDF.3:	MOVEI P3,TMPST		;Point to reply we just read
   703	021747'	505 07 0 00 440700 		HRLI P3,(POINT 7,)
   704	021750'	134 10 0 00 000007 		ILDB P4,P3		;Get the answer
   705	021751'	303 10 0 00 000001 		CAILE P4,1		;I think 1 means success...
   706						JRST [	WARN CRLF
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 8-3
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   707							MOVE T2,P3		;  to caller's warning designator
   708							SETZB T3,T4
   709							SOUT
   710							SKIPN T1,DN.WRN(AP)
   711							RET
   712							HRROI T2,[ASCIZ/
   713					%/]
   714							SOUT
   715							HRROI T2,ERRBUF
   716							SOUT
   717							HRROI T2,[ASCIZ /
   718					/]
   719							SOUT
   720	021752'	254 00 0 00 023230'			RET]
   721	021753'	336 01 0 12 000015 		SKIPN T1,DN.INF(AP)	; Success, write pass-through's verbiage
   722	021754'	254 00 0 00 021760'		JRST PSSNG2
   723	021755'	200 02 0 00 000007 		MOVE T2,P3		;  to info destination
   724	021756'	403 03 0 00 000004 		SETZB T3,T4
   725	021757'	104 00 0 00 000053 		SOUT			;Be informative
   726	021760'	322 10 0 00 021673'	PSSNG2:	JUMPE P4,PSSNG1		;read msgs until a 1-prefixed msg arrives
   727	021761'	260 17 0 00 023246'		INFO <, >
   728	021762'	254 00 0 00 022257'		RETSKP
   729
   730	021763'	254 00 0 00 023263'	PSSNFG:	IERROR <bad format for internal host table>
   731
   732					; DO A SOUT, DELETING ALL ^V'S ON THE WAY
   733	021764'	134 03 0 00 000002 	UQSOUT:	ILDB T3,T2
   734	021765'	306 03 0 00 000026 		CAIN T3,26
   735	021766'	254 00 0 00 021764'		JRST UQSOUT
   736	021767'	322 03 0 00 021772'		JUMPE T3,UQEND
   737	021770'	136 03 0 00 000001 		IDPB T3,T1
   738	021771'	254 00 0 00 021764'		JRST UQSOUT
   739	021772'	261 17 0 00 000001 	UQEND:	PUSH P,T1
   740	021773'	136 03 0 00 000001 		IDPB T3,T1
   741	021774'	262 17 0 00 000001 		POP P,T1
   742	021775'	263 17 0 00 000000 		RET
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 9
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   743
   744					;Get JFN for net link, either to host on local net, or to pass-through task
   745
   746	021776'	561 01 0 00 000066'	HSTNAM:	HRROI T1,FNAME		;build prefix of net JFN string
   747	021777'	561 02 0 00 023301'		HRROI T2,[ASCIZ /DCN:/]
   748	022000'	403 03 0 00 000004 		SETZB T3,T4
   749	022001'	104 00 0 00 000053 		SOUT
   750	022002'	202 01 0 00 000106'		MOVEM T1,PTR0		; Save filespec pointer for a bit
   751	022003'	561 01 0 00 000170'		HRROI T1,CURHST		; Stuff destination hostname in here
   752	022004'	336 02 0 12 000001 		SKIPN T2,DN.HST(AP)	; Get host name pointer
   753	022005'	254 00 0 00 023314'		IERROR <No host name supplied when .DNCON was called>
   754	022006'	104 00 0 00 000053 		SOUT
   755	022007'	332 01 0 00 000167'		SKIPE T1,CURRUT		; See if trying 2nd thru nth route
   756						JRST [	HRRZ T1,(T1)		; Yes, fetch next route
   757	022010'	254 00 0 00 023332'			JRST HSTNA2]
   758	022011'	201 01 0 00 000200'		MOVEI T1,HOSTAB		;see if this host is nonadjacent
   759	022012'	561 02 0 00 000170'		HRROI T2,CURHST		; ..
   760	022013'	104 00 0 00 000537 		TBLUK
   761	022014'	320 16 0 00 023371'		 ERJMP [JERROR (?,<TBLUK failure at HSTNAM>)]
   762	022015'	603 02 0 00 040000 		TXNE T2,TL%EXM		;Is it in the nonadjacent table?
   763						JRST [	HRRZ T1,(T1)		; Yes, point to route string block
   764	022016'	254 00 0 00 023332'			JRST HSTNA2]		; Go do the routing
   765	022017'	561 02 0 00 000170'	HSTNA0:	HRROI T2,CURHST		; No, just connect straight on thru then
   766	022020'	200 05 0 12 000002 		MOVE P1,DN.ROB(AP)	; Get remote object type
   767	022021'	402 00 0 00 000157'		SETZM PSSHST		; Flag that no routing is being done
   768	022022'	200 01 0 00 000106'	HSTNA1:	MOVE T1,PTR0		; Restore ptr to partial filespec
   769	022023'	403 03 0 00 000004 		SETZB T3,T4
   770	022024'	104 00 0 00 000053 		SOUT			; Tack on hostname
   771	022025'	201 02 0 00 000055 		MOVEI T2,"-"		; Punctuation for network filespec
   772	022026'	136 02 0 00 000001 		IDPB T2,T1		;  ..
   773	022027'	200 02 0 00 000005 		MOVE T2,P1		; Object type (final dest, or pass-through)
   774	022030'	201 03 0 00 000012 		MOVX T3,^D10		; Move it in decimal
   775	022031'	104 00 0 00 000224 		NOUT
   776	022032'	254 00 0 00 023425'		 JERROR (?,<NOUT failure at HSTNA1>)
   777	022033'	403 03 0 00 000004 		SETZB T3,T4
   778	022034'	561 02 0 00 023427'		HRROI T2,[ASCIZ /;BDATA:144011/]
   779	022035'	332 00 0 00 000000'		SKIPE PMRHAK		; SEND OPTIONAL DATA?
   780	022036'	104 00 0 00 000053 		SOUT			;YES
   781	022037'	336 00 0 00 000157'		SKIPN PSSHST		; Is this a direct connection?
   782	022040'	260 17 0 00 022067'		CALL MVATTR		; Yes, move file attributes then
   783	022041'	205 01 0 00 000001 		MOVX T1,GJ%SHT		; Get a JFN on the net file
   784	022042'	561 02 0 00 000066'		HRROI T2,FNAME
   785	022043'	104 00 0 00 000020 		GTJFN
   786	022044'	320 16 0 00 023467'		 ERJMP [JERROR (?,<Can't GTJFN for net link>)]
   787	022045'	263 17 0 00 000000 		RET			; Return with JFN in T1
   788
   789
   790					;Here if routing node -- set up for connect to pass-thru task in adjacent node
   791
   792	022046'	202 01 0 00 000167'	HSTNA2:	MOVEM T1,CURRUT		; Save current routing block address
   793	022047'	271 01 0 00 000002 		ADDI T1,RB.RST		; Skip to routing string word
   794	022050'	336 00 0 01 000000 		SKIPN (T1)		; If this route string is null (i.e., adjacent
   795	022051'	254 00 0 00 022017'		JRST HSTNA0		;  node with alternate, nonadjacent routing)
   796									;  just ignore and try direct connect
   797	022052'	505 01 0 00 440700 		HRLI T1,(POINT 7,)	; Form string pointer
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 9-1
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   798	022053'	200 03 0 00 023470'		MOVE T3,[POINT 7,PSSHST]; Where to put name of adjacent node
   799	022054'	134 02 0 00 000001 	HSTNA3:	ILDB T2,T1		; Move chars from routing string
   800	022055'	322 02 0 00 023516'		JUMPE T2,[IERROR <Bad routing string at HSTNA3>]
   801	022056'	306 02 0 00 000072 		CAIN T2,":"		;stop at first colon
   802	022057'	254 00 0 00 022062'		JRST HSTNA4
   803	022060'	136 02 0 00 000003 		IDPB T2,T3		;store chars of 1st node in route
   804	022061'	254 00 0 00 022054'		JRST HSTNA3
   805	022062'	400 02 0 00 000000 	HSTNA4:	SETZ T2,		; Insure ASCIZ
   806	022063'	136 02 0 00 000003 		IDPB T2,T3		;  ..
   807	022064'	561 02 0 00 000157'		HRROI T2,PSSHST		; This will be host to connect to
   808	022065'	201 05 0 00 000173 		MOVEI P1,^D123		; Object type for pass-through task
   809	022066'	254 00 0 00 022022'		JRST HSTNA1
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 10
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   810
   811					;Move file attributes into filespec string pointed to by T1
   812
   813	022067'	261 17 0 00 000005 	MVATTR:	PUSH P,P1		; Get a reg
   814	022070'	403 03 0 00 000004 		SETZB T3,T4		; Set up for all those SOUTs
   815	022071'	336 05 0 12 000010 		SKIPN P1,DN.USR(AP)	; UserID specified?
   816	022072'	254 00 0 00 022103'		JRST MVATT0		; No, skip this
   817	022073'	505 05 0 00 440700 		HRLI P1,(POINT 7,0)
   818	022074'	134 02 0 00 000005 		ILDB T2,P1
   819	022075'	322 02 0 00 022103'		JUMPE T2,MVATT0
   820	022076'	200 05 0 12 000010 		MOVE P1,DN.USR(AP)
   821	022077'	561 02 0 00 023517'		HRROI T2,[ASCIZ /;USERID:/]
   822	022100'	104 00 0 00 000053 		SOUT
   823	022101'	200 02 0 00 000005 		MOVE T2,P1
   824	022102'	104 00 0 00 000053 		SOUT
   825	022103'	336 05 0 12 000006 	MVATT0:	SKIPN P1,DN.PWD(AP)	; Password
   826	022104'	254 00 0 00 022115'		JRST MVATT1
   827	022105'	505 05 0 00 440700 		HRLI P1,(POINT 7,0)
   828	022106'	134 02 0 00 000005 		ILDB T2,P1
   829	022107'	322 02 0 00 022115'		JUMPE T2,MVATT1
   830	022110'	200 05 0 12 000006 		MOVE P1,DN.PWD(AP)
   831	022111'	561 02 0 00 023521'		HRROI T2,[ASCIZ /;PASSWORD:/]
   832	022112'	104 00 0 00 000053 		SOUT
   833	022113'	200 02 0 00 000005 		MOVE T2,P1
   834	022114'	104 00 0 00 000053 		SOUT
   835	022115'	336 05 0 12 000007 	MVATT1:	SKIPN P1,DN.ACN(AP)	; Account
   836	022116'	254 00 0 00 022127'		JRST MVATT2
   837	022117'	505 05 0 00 440700 		HRLI P1,(POINT 7,0)
   838	022120'	134 02 0 00 000005 		ILDB T2,P1
   839	022121'	322 02 0 00 022127'		JUMPE T2,MVATT2
   840	022122'	200 05 0 12 000007 		MOVE P1,DN.ACN(AP)
   841	022123'	561 02 0 00 023524'		HRROI T2,[ASCIZ /;CHARGE:/]
   842	022124'	104 00 0 00 000053 		SOUT
   843	022125'	200 02 0 00 000005 		MOVE T2,P1
   844	022126'	104 00 0 00 000053 		SOUT
   845	022127'	336 05 0 12 000005 	MVATT2:	SKIPN P1,DN.OPT(AP)	; Optional data
   846	022130'	254 00 0 00 022135'		JRST MVATT3
   847	022131'	561 02 0 00 023526'		HRROI T2,[ASCIZ /;DATA:/]
   848	022132'	104 00 0 00 000053 		SOUT
   849	022133'	200 02 0 00 000005 		MOVE T2,P1
   850	022134'	104 00 0 00 000053 		SOUT
   851	022135'	262 17 0 00 000005 	MVATT3:	POP P,P1
   852	022136'	263 17 0 00 000000 		RET
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 11
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   853
   854					;Open link to foreign host, JFN in T1
   855
   856	022137'	201 15 0 00 000002 	OPNLNK:	MOVEI W2,^D2		;how many times to retry OPENF
   857	022140'	603 13 0 00 200000 		TXNE F,DN%SPL		;if system scan,
   858	022141'	201 15 0 00 000003 		MOVEI W2,^D3		; be more patient
   859	022142'	200 16 0 00 000001 		MOVE JFN,T1		;save JFN
   860
   861	022143'	201 14 0 00 000050 	OPNLK1:	MOVEI W1,^D40		;how many times to retry MTOPR
   862	022144'	603 13 0 00 200000 		TXNE F,DN%SPL		;if system scan,
   863	022145'	201 14 0 00 000120 		MOVEI W1,^D80		; be much more patient
   864	022146'	201 02 0 00 300000 		MOVX T2,OF%RD!OF%WR
   865	022147'	336 03 0 12 000004 		SKIPN T3,DN.BSZ(AP)	; Get byte size user specified
   866	022150'	254 00 0 00 023545'		IERROR <Nonzero byte size must be specified when .DNCON is called>
   867	022151'	137 03 0 00 023563'		DPB T3,[POINT 6,T2,5]	; Stuff into OPENF arg
   868	022152'	104 00 0 00 000021 		OPENF
   869						 ERJMP [MOVE T1,JFN		;restore JFN
   870							RLJFN			;dump the JFN
   871							 JFCL
   872							JERR (%,<Can't OPENF net link>)
   873	022153'	320 16 0 00 023617'			RET]
   874	022154'	201 02 0 00 000025 	OPNLK2:	MOVX T2,.MORLS		;read link status
   875	022155'	104 00 0 00 000077 		MTOPR			; ..
   876	022156'	603 03 0 00 400000 		TXNE T3,MO%CON
   877	022157'	254 00 0 00 022257'		RETSKP
   878	022160'	603 03 0 00 014000 		TXNE T3,MO%ABT!MO%SYN	; Has other end already dumped us?
   879						JRST [	SETZB W1,W2		; Yes, zero wait counts
   880	022161'	254 00 0 00 023624'			JRST OPNLK3]		; Dump the JFN and report the failure
   881	022162'	201 01 0 00 000764 		MOVEI T1,^D500		;wait 1/2 second
   882	022163'	550 02 0 00 000003 		HRRZ T2,T3		; get reason code
   883	022164'	306 02 0 00 000004 		CAIN T2,4		; destination process does not exist?
   884	022165'	201 01 0 00 001750 		MOVEI T1,^D1000		; yes, wait longer (other end may be busy)
   885	022166'	104 00 0 00 000167 		DISMS
   886	022167'	200 01 0 00 000016 	OPNLK3:	MOVE T1,JFN		;restore JFN
   887	022170'	367 14 0 00 022154'		SOJG W1,OPNLK2		;check again
   888	022171'	661 01 0 00 404000 		TXO T1,CZ%ABT!CO%NRJ	;dump the link but keep JFN
   889	022172'	104 00 0 00 000022 		CLOSF			; ..
   890	022173'	255 00 0 00 000000 		 JFCL
   891	022174'	621 01 0 00 404000 		TXZ T1,CZ%ABT!CO%NRJ	;dump useless bits
   892	022175'	367 15 0 00 022143'		SOJG W2,OPNLK1		;try the OPENF again
   893	022176'	104 00 0 00 000023 		RLJFN			;no good, dump the JFN
   894	022177'	255 00 0 00 000000 		 JFCL
   895						; ..
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 12
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   896						; ..
   897
   898	022200'	602 03 0 00 777777 		TRNE T3,-1		;disconnection reason?
   899						JRST [	HRRZS T3		;yes, discard useless bits
   900							PUSH P,T3		;save reason code
   901							HRROI T1,ERRBUF		; Build error message in error buffer
   902							CALL DTSTMP
   903							HRROI T2,[ASCIZ /Connect failed because: /]
   904							SETZB T3,T4
   905							SOUT
   906							POP P,T3		;get reason code back
   907							HRRO T2,REASON(T3)
   908							SKIPL T3
   909							CAILE T3,NREASN		;range check reason code
   910							HRROI T2,FUNNY		;out of range, get catch-all msg
   911							SETZB T3,T4
   912							SOUT
   913							SKIPN T1,DN.WRN(AP)	; If no msg sink, finish up
   914							RET
   915							SETZB T3,T4
   916							HRROI T2,[ASCIZ /
   917					%/]
   918							SOUT
   919							HRROI T2,ERRBUF		; Do have msg sink, fill it
   920							SOUT
   921							HRROI T2,[ASCIZ /
   922					/]
   923							SOUT
   924	022201'	254 00 0 00 023633'			RET]
   925	022202'	561 01 0 00 000107'		HRROI T1,ERRBUF
   926	022203'	260 17 0 00 022220'		CALL DTSTMP		; time stamp the log file
   927	022204'	561 02 0 00 023663'		HRROI T2,[ASCIZ /Timed out waiting for connect confirm from server process/]
   928	022205'	104 00 0 00 000053 		SOUT
   929	022206'	336 01 0 12 000014 		SKIPN T1,DN.WRN(AP)
   930	022207'	263 17 0 00 000000 		RET
   931	022210'	403 03 0 00 000004 		SETZB T3,T4
   932						HRROI T2,[ASCIZ /
   933	022211'	561 02 0 00 022711'	%/]
   934	022212'	104 00 0 00 000053 		SOUT
   935	022213'	561 02 0 00 000107'		HRROI T2,ERRBUF
   936	022214'	104 00 0 00 000053 		SOUT
   937						HRROI T2,[ASCIZ /
   938	022215'	561 02 0 00 022407'	/]
   939	022216'	104 00 0 00 000053 		SOUT
   940	022217'	263 17 0 00 000000 		RET
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 13
DNCONN	MAC	13-Jul-81 11:18		Larry Campbell

   941
   942					SUBTTL Utility routines
   943
   944					;Place CRLF and date/time stamp in log file, dest designator in T1
   945
   946	022220'	403 03 0 00 000004 	DTSTMP:	SETZB T3,T4
   947	022221'	607 13 0 00 400000 		TXNN F,DN%DTS		;only if user asked for timestamps
   948	022222'	263 17 0 00 000000 		RET
   949	022223'	474 02 0 00 000000 		SETO T2,		;current date/time
   950	022224'	400 03 0 00 000000 		SETZ T3,		; everything
   951	022225'	104 00 0 00 000220 		ODTIM
   952	022226'	255 00 0 00 000000 		 JFCL
   953	022227'	201 02 0 00 000040 		MOVEI T2," "		; Prettyprint it
   954	022230'	104 00 0 00 000051 		BOUT
   955	022231'	263 17 0 00 000000 		RET
   956
   957   958
   959					SUBTTL Memory manager (such as it is)
   960
   961					;Init memory manager
   962
   963	022232'	402 00 0 00 500000 	INIMEM:	SETZM	HSTPAG*1000	;MAKE THIS PAGE EXIST FOR GLXLIB
   964	022233'	402 00 0 00 000000'		SETZM	DATBEG		;ZERO IMPURE STORAGE FOR GLXLIB
   965	022234'	200 01 0 00 023677'		MOVE T1,[DATBEG,,DATBEG+1] ;IF WE DIDN'T DO THIS GLXLIB
   966	022235'	251 01 0 00 021201'		BLT T1,DATEND-1		;WOULD MEMORY MANAGE OUR MEMORY
   967	022236'	201 01 0 00 001201'		MOVEI T1,STRSPC
   968	022237'	202 01 0 00 021201'		MOVEM T1,STRSP0
   969	022240'	263 17 0 00 000000 		RET
   970
   971
   972					;Allocate c(T1) words of storage
   973					; Returns +1: failure
   974					;	  +2: OK, address in T1
   975
   976	022241'	200 02 0 00 021201'	ALLSTR:	MOVE T2,STRSP0		;current free space
   977	022242'	271 02 0 01 000000 		ADDI T2,(T1)		; plus amount requested
   978	022243'	301 02 0 00 021201'		CAIL T2,STRSPC+STRN	;overflow?
   979	022244'	263 17 0 00 000000 		RET			;yes, fail
   980	022245'	200 02 0 00 021201'		MOVE T2,STRSP0		;no, get address of this string
   981	022246'	261 17 0 00 000002 		PUSH P,T2		;save for a bit
   982	022247'	402 00 0 02 000000 		SETZM (T2)		;zero it
   983	022250'	515 03 0 02 000000 		HRLZI T3,(T2)		;build BLT pointer
   984	022251'	541 03 0 02 000001 		HRRI T3,1(T2)		; ..
   985	022252'	271 02 0 01 777777 		ADDI T2,-1(T1)		;last word to zero
   986	022253'	251 03 0 02 000000 		BLT T3,(T2)
   987	022254'	272 01 0 00 021201'		ADDM T1,STRSP0		; ..
   988	022255'	262 17 0 00 000001 		POP P,T1		;return address of chunk
   989	022256'	254 00 0 00 022257'		RETSKP
   990
   991	022257'	350 00 0 17 000000 	RSKP:	AOS 0(P)
   992	022260'	263 17 0 00 000000 	R:	RET
   993
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 14
DNCONN	MAC	13-Jul-81 11:18		Memory manager (such as it is)

   994
   995					;Table of reasons for disconnection from net link
   996
   997	022261'	000000	023700'		REASON:	[ASCIZ /No special error/]			;0
   998	022262'	000000	023704'			[ASCIZ /Resource allocation failure/]		;1
   999	022263'	000000	023712'			[ASCIZ /Destination node does not exist/]	;2
  1000	022264'	000000	023721'			[ASCIZ /Node shutting down/]			;3
  1001	022265'	000000	023725'			[ASCIZ /Destination process does not exist/]	;4
  1002	022266'	000000	023734'			[ASCIZ /Invalid name field/]			;5
  1003	022267'	000000	023740'			[ASCIZ /Destination process queue overflow/]	;6
  1004	022270'	000000	023747'			[ASCIZ /Unspecified error/]			;7
  1005	022271'	000000	023753'			[ASCIZ /Third party aborted the logical link/]	;8
  1006	022272'	000000	023763'			[ASCIZ /User abort/]				;9
  1007	022273'	000000	022335'			FUNNY						;10
  1008	022274'	000000	023766'			[ASCIZ /Undefined error code/]			;11
  1009	022275'	000000	022335'			FUNNY						;12
  1010	022276'	000000	022335'			FUNNY						;13
  1011	022277'	000000	022335'			FUNNY						;14
  1012	022300'	000000	022335'			FUNNY						;15
  1013	022301'	000000	022335'			FUNNY						;16
  1014	022302'	000000	022335'			FUNNY						;17
  1015	022303'	000000	022335'			FUNNY						;18
  1016	022304'	000000	022335'			FUNNY						;19
  1017	022305'	000000	022335'			FUNNY						;20
  1018	022306'	000000	023773'			[ASCIZ /Connect initiate with illegal destination address/] ;21
  1019	022307'	000000	022335'			FUNNY						;22
  1020	022310'	000000	022335'			FUNNY						;23
  1021	022311'	000000	024005'			[ASCIZ /Flow control violation/]		;24
  1022	022312'	000000	022335'			FUNNY						;25
  1023	022313'	000000	022335'			FUNNY						;26
  1024	022314'	000000	022335'			FUNNY						;27
  1025	022315'	000000	022335'			FUNNY						;28
  1026	022316'	000000	022335'			FUNNY						;29
  1027	022317'	000000	022335'			FUNNY						;30
  1028	022320'	000000	022335'			FUNNY						;31
  1029	022321'	000000	024012'			[ASCIZ /Too many connections to node/]		;32
  1030	022322'	000000	024020'			[ASCIZ /Too many connections to destination process/] ;33
  1031	022323'	000000	024031'			[ASCIZ /Access not permitted/]			;34
  1032	022324'	000000	024036'			[ASCIZ /Logical link services mismatch/]	;35
  1033	022325'	000000	024045'			[ASCIZ /Invalid account/]			;36
  1034	022326'	000000	024051'			[ASCIZ /Segment size too small/]		;37
  1035	022327'	000000	024056'			[ASCIZ /Process aborted/]			;38
  1036	022330'	000000	024062'			[ASCIZ /No path to destination node/]		;39
  1037	022331'	000000	024070'			[ASCIZ /Link aborted due to data loss/]		;40
  1038	022332'	000000	024076'			[ASCIZ /Destination logical link address does not exist/] ;41
  1039	022333'	000000	024110'			[ASCIZ /Confirmation of disconnect initiate/]	;42
  1040	022334'	000000	024120'			[ASCIZ /Image data field too long/]		;43
  1041			000054		NREASN==.-REASON
  1042
  1043	022335'	125 156 153 156 157 	FUNNY:	ASCIZ /Unknown DECnet disconnect reason code/
  1044
  1045
  1046						END

NO ERRORS DETECTED
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page 14-1
DNCONN	MAC	13-Jul-81 11:18		Memory manager (such as it is)


PROGRAM BREAK IS 024126
CPU TIME USED 00:07.240

85P CORE USED
DNCONN - DECNET Connect Utility	MACRO %53B(1215) 09:51  6-May-82 Page S-1
DNCONN	MAC	13-Jul-81 11:18		SYMBOL TABLE

ACSAV		021202'		FUNNY		022335'		PMRHAK		000000'		.DNCON		021250'	int	
ALLSTR		022241'		GJ%OLD	100000	000000	sin	PSS.A		021631'		.DNINI		021227'	int	
ALTRNT		021546'		GJ%SHT	000001	000000	sin	PSS.B		021644'		.DNLER		021242'		
AP		000012		GTFDB	104000	000063	int	PSS.C		021651'		.DNRSK		021235'		
ATTEMP		000001'		GTJFN	104000	000020	int	PSSHST		000157'		.FBSIZ		000012	sin	
BOUT	104000	000051	int	HFCNT		000006'		PSSNEG		021553'		.FHSLF		400000	sin	
CALL	260740	000000		HFPGS		000005'		PSSNFG		021763'		.MORLS		000025	sin	
CALLRE	254000	000000	spd	HFPTR		000007'		PSSNG0		021561'		
CLOSF	104000	000022	int	HNPTR		000003'		PSSNG1		021673'		
CO%NRJ	400000	000000	sin	HOSTAB		000200'		PSSNG2		021760'		
CURHST		000170'		HOSTNN		000047	spd	PSSNG3		021652'		
CURRUT		000167'		HSTDK0		021440'		PSSNG4		021610'		
CZ%ABT	004000	000000	sin	HSTDK1		021450'		PTR0		000106'		
DATBEG		000000'		HSTIDK		021436'		R		022260'		
DATEND		021202'		HSTNA0		022017'		RB.FLG		000001	spd	
DISMS	104000	000167	int	HSTNA1		022022'		RB.LNK		000000	spd	
DN%DTS	400000	000000	spd	HSTNA2		022046'		RB.RST		000002	spd	
DN%SPL	200000	000000	spd	HSTNA3		022054'		REASON		022261'		
DN.ACN		000007	spd	HSTNA4		022062'		RET	263740	000000		
DN.BSZ		000004	spd	HSTNAM		021776'		RLJFN	104000	000023	int	
DN.ERR		000013	spd	HSTPAG		000500	spd	ROUTEN		000204	spd	
DN.FLG		000000	spd	HSTR		000010'		RSKP		022257'		
DN.HST		000001	spd	HTABJ		000002'		RTPTR		000004'		
DN.INF		000015	spd	INIMEM		022232'		SINR	104000	000531	int	
DN.LOB		000003	spd	JFN		000016		SIZEF	104000	000036	int	
DN.OPT		000005	spd	MO%ABT	010000	000000	sin	SOUT	104000	000053	int	
DN.PWD		000006	spd	MO%CON	400000	000000	sin	SOUTR	104000	000532	int	
DN.ROB		000002	spd	MO%SYN	004000	000000	sin	STRN		020000	spd	
DN.ROP		000011	spd	MTOPR	104000	000077	int	STRSP0		021201'		
DN.RPC		000012	spd	MVATT0		022103'		STRSPC		001201'		
DN.USR		000010	spd	MVATT1		022115'		SWTTAB		021222'		
DN.WRN		000014	spd	MVATT2		022127'		SWTTB0		000004	spd	
DNINI		021261'		MVATT3		022135'		T1		000001		
DNINI0		021314'		MVATTR		022067'		T2		000002		
DNINI1		021330'		NETJFN		000031'		T3		000003		
DNINI2		021344'		NJ		000065'		T4		000004		
DNINI3		021351'		NOUT	104000	000224	int	TBADD	104000	000536	int	
DNINI4		021360'		NREASN		000054	spd	TBIN		021420'		
DNINI5		021371'		ODTIM	104000	000220	int	TBLUK	104000	000537	int	
DNINI6		021377'		OF%RD		200000	sin	TERM		000030'		
DNINI7		021404'		OF%WR		100000	sin	TL%ABR	100000	000000	sin	
DNINIX		021406'		OPENF	104000	000021	int	TL%EXM	040000	000000	sin	
DTSTMP		022220'		OPNLK1		022143'		TMPST		000032'		
EATUP		021733'		OPNLK2		022154'		TRYAGN		021511'		
ENDF.1		021741'		OPNLK3		022167'		UQEND		021772'		
ENDF.2		021745'		OPNLNK		022137'		UQSOUT		021764'		
ENDF.3		021746'		P		000017		W1		000014		
ERJMP	320700	000000	int	P1		000005		W2		000015		
ERRBUF		000107'		P2		000006		..MX1		000025	spd	
ERSTR	104000	000011	int	P3		000007		..MX2		000001	spd	
F		000013		P4		000010		..TX1	400000	000000	spd	
FBITS		001200'		PM%CNT	400000	000000	sin	..TX2		000001	spd	
FIXIT		021716'		PM%PLD	010000	000000	sin	.DNCN0		021465'		
FIXUP		021710'		PM%RD	100000	000000	sin	.DNCO1		021473'		
FNAME		000066'		PMAP	104000	000056	int	.DNCO2		021475'		
ACSAV	   138#	   246	   247	   248	   252	   253	   255	   261	   262	   264	   270	   271	   272
ALLSTR	   311	   316	   976#
ALTRNT	   502	   537#
AP	    35#	   249	   250	   273	   274	   275	   276	   307	   312	   317	   376	   387	   442	   450
	   474	   479	   482	   484	   496	   522	   568	   574	   580	   598	   610	   621	   626	   627
	   630	   641	   653	   710	   721	   727	   730	   752	   753	   761	   766	   776	   786	   800
	   815	   820	   825	   830	   835	   840	   845	   865	   866	   872	   913	   929
ATTEMP	   115#	   471	   472	   475	   508	   516
CO%NRJ	   888	   891
CURHST	   132#	   470	   751	   759	   765
CURRUT	   131#	   468	   537	   552	   755	   792
CZ%ABT	   491	   888	   891
DATBEG	   113#	   964	   965
DATEND	   137#	   966
DN%DTS	    87#	   947
DN%SPL	    88#	   857	   862
DN.ACN	    95#	   580	   621	   835	   840
DN.BSZ	    92#	   865
DN.ERR	    99#	   307	   312	   317	   376	   387	   442	   522	   627	   630	   641	   730	   753	   761
	   776	   786	   800	   866	   872
DN.FLG	    86#	   250	   276
DN.HST	    89#	   752
DN.INF	   101#	   474	   479	   482	   484	   496	   721	   727
DN.LOB	    91#
DN.OPT	    93#	   845
DN.PWD	    94#	   574	   610	   825	   830
DN.ROB	    90#	   626	   766
DN.ROP	    97#
DN.RPC	    98#
DN.USR	    96#	   568	   598	   815	   820
DN.WRN	   100#	   450	   653	   710	   913	   929
DNINI	   251	   283#
DNINI0	   310#	   378
DNINI1	   322#	   333	   347	   365
DNINI2	   329	   335#	   338
DNINI3	   331	   341#
DNINI4	   327	   339	   351#
DNINI5	   366#	   368
DNINI6	   358	   372#
DNINI7	   371	   377#
DNINIX	   323	   336	   380#
DTSTMP	   307	   312	   317	   376	   387	   442	   444	   496	   627	   630	   641	   647	   706	   730
	   753	   761	   776	   786	   800	   866	   872	   902	   926	   946#
EATUP	   691#	   696
ENDF.1	   682	   694	   697#
ENDF.2	   673	   680	   692	   701#
ENDF.3	   700	   702#
ERRBUF	   129#	   260	   307	   312	   317	   376	   387	   442	   444	   455	   504	   527	   627	   630
	   641	   647	   658	   666	   670	   706	   715	   730	   753	   761	   776	   786	   800	   866
	   872	   901	   919	   925	   935
F	    36#	   250	   276	   572	   578	   584	   587	   596	   601	   608	   614	   619	   857	   862
	   947
FBITS	   134#	   462
FIXIT	   675	   678#	   684
FIXUP	   672#	   677
FNAME	   127#	   746	   784
FUNNY	   910	  1007	  1009	  1010	  1011	  1012	  1013	  1014	  1015	  1016	  1017	  1019	  1020	  1022
	  1023	  1024	  1025	  1026	  1027	  1028	  1043#
GJ%OLD	   286
GJ%SHT	   286	   783
HFCNT	   120#	   308	   397
HFPGS	   119#	   296	   382
HFPTR	   121#	   298	   399
HNPTR	   117#	   314	   320	   355	   363	   373
HOSTAB	   133#	   285	   354	   372	   388	   758
HOSTNN	   108#	   310	   321	   362
HSTDK0	   427#	   434
HSTDK1	   428	   431	   435#
HSTIDK	   325	   425#
HSTNA0	   765#	   795
HSTNA1	   768#	   809
HSTNA2	   757	   764	   792#
HSTNA3	   799#	   804
HSTNA4	   802	   805#
HSTNAM	   476	   746#
HSTPAG	   109#	   297	   300	   381	   963
HSTR	   122#	   425	   438	   446
HTABJ	   116#	   293	   299	   303	   385
INIMEM	   283	   963#
JFN	    39#	   859	   869	   886
MO%ABT	   878
MO%CON	   876
MO%SYN	   878
MVATT0	   816	   819	   825#
MVATT1	   826	   829	   835#
MVATT2	   836	   839	   845#
MVATT3	   846	   851#
MVATTR	   782	   813#
NETJFN	   124#	   477	   486	   490	   497
NJ	   126#	   551	   637	   643
NREASN	   909	  1041#
OF%RD	   290	   864
OF%WR	   864
OPNLK1	   861#	   892
OPNLK2	   874#	   887
OPNLK3	   880	   886#
OPNLNK	   487	   856#
P	    40#	   686	   690	   739	   741	   813	   851	   900	   906	   981	   988	   991
P1	    31#	   766	   773	   808	   813	   815	   817	   818	   820	   823	   825	   827	   828	   830
	   833	   835	   837	   838	   840	   843	   845	   849	   851
P2	    32#	   309	   346	   362	   364	   377
P3	    33#	   320	   332	   342	   344	   345	   352	   363	   702	   703	   704	   707	   723
P4	    34#	   321	   333	   343	   362	   704	   705	   726
PM%CNT	   301	   383
PM%PLD	   301
PM%RD	   301
PMRHAK	   114#	   274	   779
PSS.A	   597	   608#
PSS.B	   609	   619#
PSS.C	   620	   624#
PSSHST	   130#	   469	   478	   480	   549	   767	   781	   798	   807
PSSNEG	   489	   549#
PSSNFG	   556	   561	   730#
PSSNG0	   555#	   558
PSSNG1	   643#	   726
PSSNG2	   722	   726#
PSSNG3	   590	   625#
PSSNG4	   588	   591#
PTR0	   128#	   750	   768
R	   289	   292	   540	   992#
RB.FLG	   239#
RB.LNK	   238#
RB.RST	   240#	   345	   553	   793
REASON	   907	   997#	  1041
ROUTEN	   107#	   125	   315	   343
RSKP	   256	   406	   414	   420	   538	   541	   550	   728	   877	   989	   991#
RTPTR	   118#	   319	   344	   369	   374
STRN	   106#	   135	   978
STRSP0	   136#	   968	   976	   980	   987
STRSPC	   135#	   967	   978
SWTTAB	   142#	   147	   439
SWTTB0	   142	   147#
T1	    27#	   249	   252	   260	   261	   275	   284	   285	   286	   293	   297	   298	   299	   303
	   307	   310	   312	   313	   314	   315	   317	   318	   319	   324	   326	   328	   330	   332
	   337	   341	   342	   351	   353	   354	   366	   367	   368	   369	   370	   372	   376	   380
	   385	   387	   388	   399	   400	   401	   404	   407	   410	   412	   415	   416	   418	   429
	   430	   432	   433	   435	   436	   437	   439	   442	   444	   450	   461	   462	   463	   474
	   477	   479	   482	   484	   486	   490	   491	   496	   497	   504	   522	   537	   539	   540
	   551	   555	   556	   557	   559	   560	   562	   563	   565	   592	   593	   595	   606	   617
	   627	   630	   632	   634	   636	   637	   641	   643	   647	   653	   666	   671	   676	   678
	   685	   697	   701	   706	   710	   721	   727	   730	   737	   739	   740	   741	   746	   750
	   751	   753	   755	   756	   758	   761	   763	   768	   772	   776	   783	   786	   792	   793
	   794	   797	   799	   800	   859	   866	   869	   872	   881	   884	   886	   888	   891	   901
	   913	   925	   929	   965	   966	   967	   968	   977	   985	   987	   988
T2	    28#	   273	   287	   290	   300	   304	   307	   312	   317	   352	   353	   355	   357	   366
	   370	   373	   374	   376	   381	   387	   425	   426	   433	   437	   438	   442	   443	   445
	   446	   449	   452	   455	   457	   474	   479	   480	   484	   496	   505	   508	   512	   515
	   519	   524	   527	   529	   552	   553	   554	   555	   559	   589	   591	   592	   593	   594
	   595	   598	   599	   603	   606	   610	   611	   613	   617	   621	   622	   624	   626	   627
	   630	   631	   632	   633	   634	   635	   636	   638	   641	   644	   648	   649	   655	   658
	   660	   665	   667	   670	   672	   679	   686	   687	   690	   691	   707	   712	   715	   717
	   723	   727	   730	   733	   747	   752	   753	   759	   761	   762	   765	   771	   772	   773
	   776	   778	   784	   786	   799	   800	   801	   803	   805	   806	   807	   818	   819	   821
	   823	   828	   829	   831	   833	   838	   839	   841	   843	   847	   849	   864	   866	   867
	   872	   874	   882	   883	   903	   907	   910	   916	   919	   921	   927	   932	   935	   937
	   949	   953	   976	   977	   978	   980	   981	   982	   983	   984	   985	   986
T3	    29#	   296	   301	   305	   307	   308	   312	   317	   376	   382	   383	   387	   442	   445
	   447	   449	   474	   479	   481	   484	   496	   506	   509	   513	   516	   517	   521	   564
	   565	   566	   568	   569	   570	   574	   575	   576	   580	   581	   582	   586	   627	   628
	   630	   639	   641	   645	   648	   668	   672	   673	   674	   676	   678	   679	   680	   681
	   683	   685	   688	   691	   692	   693	   695	   697	   698	   701	   708	   724	   727	   730
	   733	   734	   736	   737	   740	   748	   753	   761	   769	   774	   776	   777	   786	   798
	   800	   803	   806	   814	   865	   866	   867	   872	   876	   878	   882	   898	   899	   900
	   904	   906	   907	   908	   909	   911	   915	   931	   946	   950	   983	   984	   986
T4	    30#	   307	   312	   317	   376	   387	   442	   445	   447	   449	   474	   479	   481	   484
	   496	   506	   513	   521	   566	   570	   571	   576	   577	   582	   583	   586	   601	   602
	   604	   605	   607	   614	   615	   616	   618	   627	   630	   639	   641	   645	   648	   664
	   665	   668	   688	   698	   708	   724	   727	   730	   748	   753	   761	   769	   776	   777
	   786	   800	   814	   866	   872	   904	   911	   915	   931	   946
TBIN	   322	   335	   397#	   400	   402	   408	   411	   417	   419	   427
TERM	   123#	   435	   463
TL%ABR	   443
TL%EXM	   357	   443	   762
TMPST	   125#	   562	   638	   644	   667	   671	   702
TRYAGN	   488	   494	   502#
UQEND	   736	   739#
UQSOUT	   600	   612	   623	   733#	   735	   738
W1	    37#	   861	   863	   879	   887
W2	    38#	   856	   858	   879	   892
..MX1	   286#	   286	   290#	   290	   628#	   628	   774#	   774	   783#	   783	   864#	   864	   874#	   874
..MX2	   286#	   286	   287	   290#	   290	   628#	   629	   774#	   775	   783#	   783	   784	   864#	   865
	   874#	   875
..TX1	   301#	   301	   357#	   357	   383#	   383	   443#	   443	   491#	   491	   762#	   762	   857#	   857
	   862#	   862	   876#	   876	   878#	   878	   888#	   888	   891#	   891	   947#	   947
..TX2	   301#	   301	   302	   357#	   357	   358	   383#	   383	   384	   443#	   443	   444	   491#	   491
	   762#	   762	   763	   857#	   857	   858	   862#	   862	   863	   876#	   876	   877	   878#	   878
	   879	   888#	   888	   889	   891#	   891	   892	   947#	   947	   948
.DNCN0	   277	   468#
.DNCO1	   474#	   503
.DNCO2	   473	   476#
.DNCON	   270#
.DNINI	   246#
.DNLER	   260#	   307	   312	   317	   376	   387	   442	   523	   532	   627	   630	   730	   753	   761
	   776	   786	   800	   866
.DNRSK	   252#	   278
.FBSIZ	   304
.FHSLF	   300	   307	   376	   381	   387	   442	   630	   641	   649	   761	   776	   786	   872
.MORLS	   874
BOUT	   518	   520	   954
CALL	   251	   277	   283	   307	   311	   312	   316	   317	   322	   325	   335	   376	   387	   402
	   408	   427	   442	   444	   445	   449	   474	   476	   479	   484	   487	   489	   496	   502
	   569	   575	   581	   600	   612	   623	   627	   630	   641	   647	   648	   706	   727	   730
	   753	   761	   776	   782	   786	   800	   866	   872	   902	   926
CALLRE	   278	   411
CLOSF	   386	   492	   889
DISMS	   885
ERJMP	   289	   292	   307	   376	   441	   641	   647	   761	   786	   869
ERSTR	   307	   376	   387	   442	   630	   641	   650	   761	   776	   786	   872
GTFDB	   306
GTJFN	   288	   785
IERROR	   152#	   312	   317	   627	   730	   753	   800	   866
INFO	   218#	   474	   479	   484	   496	   727
JERR	   172#	   307	   376	   387	   442	   630	   641	   761	   776	   786	   872
JERROR	   197#	   307	   376	   387	   441	   630	   761	   776	   786
MOVX	   286	   290	   628	   774	   783	   864	   874
MTOPR	   875
NOUT	   510	   629	   775
ODTIM	   951
OPENF	   291	   868
PMAP	   302	   384
RET	   265	   307	   376	   387	   389	   398	   403	   409	   442	   444	   445	   449	   451	   460
	   464	   474	   479	   484	   496	   498	   573	   579	   585	   630	   641	   642	   647	   648
	   654	   663	   706	   711	   720	   727	   742	   761	   776	   786	   787	   852	   872	   873
	   914	   924	   930	   940	   948	   955	   969	   979	   992
RETSKP	   256	   406	   414	   420	   538	   541	   550	   728	   877	   989
RLJFN	   870	   893
SINR	   646
SIZEF	   294
SOUT	   307	   312	   317	   376	   387	   442	   445	   448	   449	   454	   456	   459	   474	   479
	   483	   484	   496	   507	   514	   526	   528	   531	   567	   625	   627	   630	   641	   648
	   657	   659	   662	   669	   689	   699	   709	   714	   716	   719	   725	   727	   730	   749
	   753	   754	   761	   770	   776	   780	   786	   800	   822	   824	   832	   834	   842	   844
	   848	   850	   866	   872	   905	   912	   918	   920	   923	   928	   934	   936	   939
SOUTR	   640
TBADD	   375
TBLUK	   356	   440	   760
TXNE	   762	   857	   862	   876	   878
TXNN	   357	   443	   947
TXO	   301	   383	   491	   888
TXZ	   891
WARN	   202#	   444	   445	   449	   647	   648	   706