Google
 

Trailing-Edge - PDP-10 Archives - BB-H348C-RM_1982 - swskit-v21/listings/monitor/nspsrv.list
There are no other files named nspsrv.list in the archive.
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 1
NSPSRV	MAC	 6-Apr-82 10:58	

     1					; UPD ID= 569, SNARK:<5.MONITOR>P2-NSPSRV.MAC.22,   6-Apr-82 10:58:06 by GRANT
     2					;Undo more debugging code
     3					; UPD ID= 475, SNARK:<5.MONITOR>P2-NSPSRV.MAC.21,  12-Feb-82 15:24:08 by GRANT
     4					;TCO 5.1729 - NSPINT no longer loaded, remove calls to OUTSEG
     5					; UPD ID= 469, SNARK:<5.MONITOR>P2-NSPSRV.MAC.20,   9-Feb-82 08:30:27 by GRANT
     6					;TCO 5.1724 - Release all messages immediately when a link is aborted
     7					; UPD ID= 464, SNARK:<5.MONITOR>P2-NSPSRV.MAC.19,   7-Feb-82 20:35:04 by GRANT
     8					;TCO 5.1721 Make NODE JSYS function .NDGLN use 30-bit addressing
     9					; UPD ID= 372, SNARK:<5.MONITOR>P2-NSPSRV.MAC.18,   5-Jan-82 08:50:19 by GRANT
    10					;TCO 5.1649 - Add null message handling
    11					; UPD ID= 361, SNARK:<5.MONITOR>P2-NSPSRV.MAC.17,  13-Dec-81 10:48:16 by GRANT
    12					;TCO 5.1636 - use SEGSZ
    13					; UPD ID= 353, SNARK:<5.MONITOR>P2-NSPSRV.MAC.16,  10-Dec-81 10:28:01 by GRANT
    14					;Make CLZWDC just like it was in R4
    15					; UPD ID= 341, SNARK:<5.MONITOR>P2-NSPSRV.MAC.15,   4-Dec-81 08:59:22 by GRANT
    16					;TCO 5.1626 - In NODINI, make an extensible field for the node number.
    17					; UPD ID= 311, SNARK:<5.MONITOR>P2-NSPSRV.MAC.14,   6-Nov-81 10:16:04 by GRANT
    18					;TCO 5.1607 - In BLKULK, replace a JRST that was accidently removed
    19					; UPD ID= 302, SNARK:<5.MONITOR>P2-NSPSRV.MAC.13,  28-Oct-81 14:29:42 by GRANT
    20					;Turn off debugging mousetraps
    21					; UPD ID= 297, SNARK:<5.MONITOR>P2-NSPSRV.MAC.12,  28-Oct-81 10:20:32 by GRANT
    22					;TCO 5.1599 - Make NTMAN% give error return
    23					; UPD ID= 291, SNARK:<5.MONITOR>P2-NSPSRV.MAC.11,  22-Oct-81 16:10:51 by GRANT
    24					;TTREMS ends with RET instead of RETSKP
    25					; UPD ID= 289, SNARK:<5.MONITOR>P2-NSPSRV.MAC.10,  22-Oct-81 13:14:02 by GRANT
    26					;The label MCTYI2 should be TTREMS
    27					; UPD ID= 288, SNARK:<5.MONITOR>P2-NSPSRV.MAC.9,  22-Oct-81 12:17:10 by GRANT
    28					;Typo in UPD ID=278
    29					; UPD ID= 285, SNARK:<5.MONITOR>P2-NSPSRV.MAC.8,  21-Oct-81 17:36:08 by GRANT
    30					;TCO 5.1593 - Defensive code in RESEND to prevent looping caused by bad counter
    31					; UPD ID= 278, SNARK:<5.MONITOR>P2-NSPSRV.MAC.7,  21-Oct-81 13:08:58 by GRANT
    32					;TCO 5.1594 - Create TTGETS and TTREMS for TTYSRV to use
    33					; UPD ID= 272, SNARK:<5.MONITOR>P2-NSPSRV.MAC.6,  19-Oct-81 15:58:02 by GRANT
    34					;Typo in UPD ID=248 - line of code was duplicated
    35					; UPD ID= 253, SNARK:<5.MONITOR>NSPSRV.MAC.116,   8-Oct-81 16:24:42 by GRANT
    36					;TCO 5.1534 - make RDSTS reflect MO%WFC correctly
    37					; UPD ID= 251, SNARK:<5.MONITOR>NSPSRV.MAC.115,   7-Oct-81 14:32:02 by GRANT
    38					;More TCO 5.1561 - fix return from BLKULK
    39					; UPD ID= 250, SNARK:<5.MONITOR>NSPSRV.MAC.114,   7-Oct-81 11:53:04 by GRANT
    40					;RE: previous edit - ASUBR in CLRBLK should be CLRLLB
    41					; UPD ID= 248, SNARK:<5.MONITOR>NSPSRV.MAC.113,   7-Oct-81 11:16:26 by GRANT
    42					;TCO 5.1561 - Create new (recreate old) module
    43					;Fix failure return from CALL SNDLS in RDINT
    44					;Put CHKLLT in RJECT1
    45					;Obtain a new block of space for the remote descriptor in CLRBLK
    46					;Change TQNx and TMNx reflecting change in MACSYM
    47					; UPD ID= 1430, SNARK:<5.MONITOR>NSPSRV.MAC.62,   9-Jan-81 17:47:22 by MURPHY
    48					;MOVE STMXDF HERE FROM NSPINT
    49					; UPD ID= 1408, SNARK:<5.MONITOR>NSPSRV.MAC.61,   6-Jan-81 15:02:35 by MURPHY
    50					;MAKE CERTAIN CODE RESIDENT THAT MAY NOW BE CALLED FROM SKED
    51					; UPD ID= 1372, SNARK:<5.MONITOR>NSPSRV.MAC.60,  22-Dec-80 09:48:02 by GRANT
    52					;TCO 5.1218 - Change error message in OPNDFT
    53					; UPD ID= 1360, SNARK:<5.MONITOR>NSPSRV.MAC.59,  17-Dec-80 15:46:00 by MURPHY
    54					;CHKLLT INSTEAD OF CHKMCB
    55					; UPD ID= 1348, SNARK:<5.MONITOR>NSPSRV.MAC.58,  12-Dec-80 11:19:45 by MURPHY
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 1-1
NSPSRV	MAC	 6-Apr-82 10:58	

    56					;CHKMCB AT LSIDON
    57					; UPD ID= 1318, SNARK:<5.MONITOR>NSPSRV.MAC.57,  26-Nov-80 07:17:11 by GRANT
    58					;TYPO IN PREVIOUS EDIT
    59					; UPD ID= 1316, SNARK:<5.MONITOR>NSPSRV.MAC.56,  25-Nov-80 16:58:23 by GRANT
    60					;New version of NTMAN% JSYS - NSP node counters and formatted data return
    61					; UPD ID= 1312, SNARK:<5.MONITOR>NSPSRV.MAC.55,  25-Nov-80 09:43:28 by GRANT
    62					;TCO 5.1202 - Verification of message flags subtype field
    63					; UPD ID= 1309, SNARK:<5.MONITOR>NSPSRV.MAC.54,  24-Nov-80 16:49:42 by MURPHY
    64					;Make abort close release LL block immediately
    65					;Certain subroutines need to be resident
    66					; UPD ID= 1299, SNARK:<5.MONITOR>NSPSRV.MAC.53,  19-Nov-80 16:59:45 by MURPHY
    67					;XON, XOFF OPTION FOR NVT
    68					; UPD ID= 1291, SNARK:<5.MONITOR>NSPSRV.MAC.52,  18-Nov-80 16:45:58 by MURPHY
    69					;NRT BUGS
    70					; UPD ID= 1283, SNARK:<5.MONITOR>NSPSRV.MAC.51,  18-Nov-80 14:04:39 by GRANT
    71					;TCO 5.1159 - more, don't shut off line if a Phase III transport msg appears,
    72					; just throw the message away
    73					; UPD ID= 1281, SNARK:<5.MONITOR>NSPSRV.MAC.50,  18-Nov-80 11:14:34 by GRANT
    74					;TCO 5.1159 - again, put test in a better place
    75					; UPD ID= 1274, SNARK:<5.MONITOR>NSPSRV.MAC.49,  14-Nov-80 17:52:09 by MURPHY
    76					;NRT BUGS
    77					; UPD ID= 1266, SNARK:<5.MONITOR>NSPSRV.MAC.48,  11-Nov-80 17:53:58 by MURPHY
    78					;NRT bug - MCBQC
    79					; UPD ID= 1225, SNARK:<5.MONITOR>NSPSRV.MAC.47,   3-Nov-80 16:29:36 by GRANT
    80					;TCO 5.1187 - Make segment size calculation in STRMSG
    81					; UPD ID= 1191, SNARK:<5.MONITOR>NSPSRV.MAC.46,  23-Oct-80 16:08:38 by GRANT
    82					;Fix GETBYM arguments in GTASC0
    83					; UPD ID= 1186, SNARK:<5.MONITOR>NSPSRV.MAC.45,  21-Oct-80 15:46:05 by GRANT
    84					;Add segment size check to DOSRVS and FILLIN
    85					; UPD ID= 1183, SNARK:<5.MONITOR>NSPSRV.MAC.44,  21-Oct-80 09:12:26 by GRANT
    86					;TCO 5.1177 - Rewrite DEDCOR to fix bug and become more efficient
    87					; UPD ID= 1178, SNARK:<5.MONITOR>NSPSRV.MAC.43,  20-Oct-80 17:12:20 by MURPHY
    88					;MAKE GETBYT OPEN CODE (GETBYM MACRO)
    89					; UPD ID= 1168, SNARK:<5.MONITOR>NSPSRV.MAC.42,  15-Oct-80 16:14:55 by GRANT
    90					;Add flow control threshold logic in SQI
    91					; UPD ID= 1150, SNARK:<5.MONITOR>NSPSRV.MAC.41,  10-Oct-80 16:19:28 by GRANT
    92					;More of previous edit
    93					; UPD ID= 1140, SNARK:<5.MONITOR>NSPSRV.MAC.40,   8-Oct-80 10:51:01 by GRANT
    94					;TCO 5.1169 - Make PRSNAM call PARNO1
    95					;<5.MONITOR>NSPSRV.MAC.39,  6-Oct-80 13:31:25, EDIT BY MURPHY
    96					;<5.MONITOR>NSPSRV.MAC.38,  6-Oct-80 11:43:48, EDIT BY MURPHY
    97					; UPD ID= 1124, SNARK:<5.MONITOR>NSPSRV.MAC.37,   5-Oct-80 15:02:30 by MURPHY
    98					;DITTO
    99					; UPD ID= 1119, SNARK:<5.MONITOR>NSPSRV.MAC.36,   3-Oct-80 12:21:08 by MURPHY
   100					;DITTO
   101					; UPD ID= 1111, SNARK:<5.MONITOR>NSPSRV.MAC.35,   3-Oct-80 01:00:34 by MURPHY
   102					;MAKE NSP NOTIFY TTYSRV UPON RECEIPT OF DATA AND ACKS
   103					; UPD ID= 1105, SNARK:<5.MONITOR>NSPSRV.MAC.34,   2-Oct-80 09:35:12 by MURPHY
   104					;DITTO
   105					; UPD ID= 1092, SNARK:<5.MONITOR>NSPSRV.MAC.33,   1-Oct-80 13:35:09 by MURPHY
   106					;FIX ACVAR
   107					; UPD ID= 1067, SNARK:<5.MONITOR>NSPSRV.MAC.32,  30-Sep-80 11:02:43 by GRANT
   108					;TCO 5.1160 - make NSPRTH BUGCHK more meaningful
   109					; UPD ID= 1065, SNARK:<5.MONITOR>NSPSRV.MAC.31,  30-Sep-80 10:46:39 by GRANT
   110					;TCO 5.1159 - must reject Phase III Transport init message
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 1-2
NSPSRV	MAC	 6-Apr-82 10:58	

   111					; UPD ID= 1064, SNARK:<5.MONITOR>NSPSRV.MAC.30,  30-Sep-80 10:31:05 by GRANT
   112					;Fix sequential input again and init NMAPLK in NSPINI
   113					; UPD ID= 1061, SNARK:<5.MONITOR>NSPSRV.MAC.29,  30-Sep-80 10:16:15 by MURPHY
   114					;NVT bugs
   115					; UPD ID= 1059, SNARK:<5.MONITOR>NSPSRV.MAC.28,  26-Sep-80 13:30:48 by GRANT
   116					;Add NTMAN% JSYS
   117					; UPD ID= 1056, SNARK:<5.MONITOR>NSPSRV.MAC.27,  26-Sep-80 12:12:52 by MURPHY
   118					;Make BLKULK preserve T2; fix various NVT bugs
   119					; UPD ID= 1036, SNARK:<5.MONITOR>NSPSRV.MAC.26,  24-Sep-80 11:48:18 by GRANT
   120					;TCO 5.1153 - NETSQI must save T2 over the call to BLKULK
   121					; UPD ID= 1023, SNARK:<5.MONITOR>NSPSRV.MAC.25,  16-Sep-80 16:07:18 by GRANT
   122					;Change MONX01 to NSPX26 in NDSIC routine
   123					; UPD ID= 1019, SNARK:<5.MONITOR>NSPSRV.MAC.24,  16-Sep-80 15:34:14 by GRANT
   124					;TCO 5.1146 - Fix free space bug in MTRDIN
   125					; UPD ID= 1007, SNARK:<5.MONITOR>NSPSRV.MAC.23,  11-Sep-80 18:17:22 by GRANT
   126					;Change MONX01 to MONX06 in GETBLK routine
   127					; UPD ID= 943, SNARK:<5.MONITOR>NSPSRV.MAC.21,  20-Aug-80 20:09:04 by MURPHY
   128					;Merge FILNSP into NSPSRV
   129					; UPD ID= 920, SNARK:<5.MONITOR>NSPSRV.MAC.20,  19-Aug-80 15:17:32 by MURPHY
   130					;File open mode 1 for small segsiz
   131					; UPD ID= 902, SNARK:<5.MONITOR>NSPSRV.MAC.19,  14-Aug-80 22:54:49 by MURPHY
   132					;Locks again
   133					; UPD ID= 892, SNARK:<5.MONITOR>NSPSRV.MAC.18,  13-Aug-80 18:21:01 by MURPHY
   134					;Handle locks at scheduler level
   135					; UPD ID= 846, SNARK:<5.MONITOR>NSPSRV.MAC.17,   6-Aug-80 17:32:48 by MURPHY
   136					;ULOKLL again
   137					; UPD ID= 845, SNARK:<5.MONITOR>NSPSRV.MAC.16,   6-Aug-80 14:25:32 by MURPHY
   138					;BUGCHK at ULOKLL if lock not already locked; make few more routines resident
   139					; UPD ID= 820, SNARK:<5.MONITOR>NSPSRV.MAC.15,   1-Aug-80 13:21:31 by GRANT
   140					;TCO 5.1119 - Fix cause of "overly OKINT" BUGCHKs when DN20 gets reloaded
   141					; UPD ID= 790, SNARK:<5.MONITOR>NSPSRV.MAC.14,  23-Jul-80 20:13:13 by MURPHY
   142					;MORE OF THE SAME
   143					; UPD ID= 777, SNARK:<5.MONITOR>NSPSRV.MAC.13,  22-Jul-80 17:07:09 by MURPHY
   144					;MAKE A FEW ROUTINES GLOBAL
   145					; UPD ID= 753, SNARK:<5.MONITOR>NSPSRV.MAC.12,  11-Jul-80 17:05:41 by MURPHY
   146					;MAKE VARIOUS THINGS RESIDENT WITH VIEW TOWARD MAKING THEM RUN AT SKED LEVEL
   147					; UPD ID= 623, SNARK:<5.MONITOR>NSPSRV.MAC.11,  11-Jun-80 11:06:36 by GRANT
   148					;Wrong AC being loaded in PRUNE
   149					; UPD ID= 621, SNARK:<5.MONITOR>NSPSRV.MAC.10,  10-Jun-80 13:23:07 by MURPHY
   150					; UPD ID= 606, SNARK:<5.MONITOR>NSPSRV.MAC.9,   5-Jun-80 10:23:04 by GRANT
   151					;More of UPD ID= 330
   152					; UPD ID= 605, SNARK:<5.MONITOR>NSPSRV.MAC.8,   5-Jun-80 08:40:19 by ENGEL
   153					;MAKE ASCIIZ RESIDENT
   154					; UPD ID= 593, SNARK:<5.MONITOR>NSPSRV.MAC.7,   3-Jun-80 09:44:15 by ENGEL
   155					;MAKE NODINI RESIDENT
   156					; UPD ID= 590, SNARK:<5.MONITOR>NSPSRV.MAC.6,   3-Jun-80 09:03:33 by ENGEL
   157					;FIX ONEBYT
   158					; UPD ID= 588, SNARK:<5.MONITOR>NSPSRV.MAC.5,   2-Jun-80 17:24:28 by ENGEL
   159					;MAKE PORTIONS OF NODINI CODE RESIDENT
   160					; UPD ID= 502, SNARK:<5.MONITOR>NSPSRV.MAC.4,   1-May-80 15:02:52 by GRANT
   161					;TCO 5.1031 - Make CI processing distinguish between busy and non-existent
   162					; UPD ID= 477, SNARK:<5.MONITOR>NSPSRV.MAC.3,  24-Apr-80 16:52:51 by GRANT
   163					;In DEDMCB, use DCN instead of DTEN for valid port number test -
   164					;DTEN won't work on the 2020
   165					; UPD ID= 455, SNARK:<5.MONITOR>NSPSRV.MAC.2,  22-Apr-80 14:02:03 by MURPHY
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 1-3
NSPSRV	MAC	 6-Apr-82 10:58	

   166					;FIX UP ENTRY SEQUENCE IN INFERIOR FORK
   167					; UPD ID= 351, SNARK:<4.1.MONITOR>NSPSRV.MAC.421,  25-Mar-80 08:58:26 by GRANT
   168					;Undo the previous edit
   169					; UPD ID= 339, SNARK:<4.1.MONITOR>NSPSRV.MAC.420,  17-Mar-80 18:11:26 by GRANT
   170					;At OUTRR7, don't include SEGNUM bytes in MSDTC count
   171					; UPD ID= 330, SNARK:<4.1.MONITOR>NSPSRV.MAC.419,  14-Mar-80 09:58:02 by GRANT
   172					;In STRSAV, reverse the search order of the DTEs when looking for the MCB
   173					; UPD ID= 226, SNARK:<4.1.MONITOR>NSPSRV.MAC.418,  25-Jan-80 13:30:56 by GRANT
   174					;TCO 4.2599 - DEDMCB should not clear the loopback word
   175					; UPD ID= 190, SNARK:<4.1.MONITOR>NSPSRV.MAC.417,   8-Jan-80 13:34:55 by GRANT
   176					;Fix DTE range check in DEDMCB
   177					; UPD ID= 124, SNARK:<4.1.MONITOR>NSPSRV.MAC.416,  10-Dec-79 15:40:10 by GRANT
   178					;Fix typeo in UPD ID=100 in MOVSEG
   179					; UPD ID= 114, SNARK:<4.1.MONITOR>NSPSRV.MAC.415,   8-Dec-79 13:09:40 by MILLER
   180					;FIX BUGS IN NETINP AND NETSQI.
   181					; UPD ID= 100, SNARK:<4.1.MONITOR>NSPSRV.MAC.413,   5-Dec-79 17:20:06 by MILLER
   182					;REPLACE MISSING CODE IN MOVSEG. FIX ANCIENT RACE BETWEEN MOVSEG AND
   183					; THE SCHEDULER
   184					; UPD ID= 85, SNARK:<4.1.MONITOR>NSPSRV.MAC.412,   3-Dec-79 15:06:50 by GRANT
   185					;TCO 4.2588 - Change CCMSG: and DCMSG: to be compatible with Phase III
   186					;<4.MONITOR>NSPSRV.MAC.411, 20-Nov-79 11:40:56, EDIT BY GRANT
   187					;Previous edit lines removed
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 2
NSPSRV	MAC	 6-Apr-82 10:58	

   188
   189
   190					;THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY ONLY BE USED
   191					;  OR COPIED IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE.
   192					;
   193					;COPYRIGHT (C) 1976,1977,1978,1979 BY DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
   194
   195						SEARCH NSPPAR,PROLOG,PROKL
   196						TTITLE (NSPSRV,,< - Network Services Protocol Interface to TOPS20	>)^
   197					^
   198
   199					;THIS MODULE CONTAINS THE CONTROL ROUTINES AND JSYS INTERFACES
   200					;FOR THE HOST-TO-HOST PROTOCOL OF DECNET KNOWN AS NSP.
   201					;NSP ALLOWS COMMUNICATION BETWEEN PROCESSES ON HOSTS BY MEANS
   202					;OF LOGICAL LINKS. A LOGICAL LINK IMPLIES AN "OBJECT" ON ONE
   203					;OF THE HOSTS AND A PROCESS ON ANOTHER HOST WISHING TO AVAIL ITSELF
   204					;OF THE OBJECT'S SERVICES, A PHYSICAL COMMUNICATIONS PATH BETWEEN
   205					;THE HOSTS WHICH IS ERROR-FREE( SEE DDCMP SPECIFICATION FOR THE
   206					;MAGIC BEHIND THIS ASSUMPTION), AND A TON OF LOGIC IN EACH OF
   207					;THE HOSTS AND IN THE INTERVENING MCB NODES (IF ANY) WHICH ROUTE
   208					;AND CONTROL THE FLOW OF THE DATA. THIS MODULE IS RESPONSIBLE
   209					;FOR COMMUNICATING WITH ADJACENT MCB NODES AND FOR MAINTAINING AND
   210					;ESTABLISHING LOGICAL LINKS ON DEMAND OF PROCESSES IN THIS TOPS20
   211					;HOST OR OF PROCESSES IN THE NETWORK.
   212
   213
   214					;THIS MODULE CONTROLS, ALLOCATES, AND DEALLOCATES ENTRIES
   215					;IN THE LOGICAL LINK TABLE. AN ENTRY  IN THE LOGICAL LINK TABLE
   216					;CONTAINS INFORMATION NEEDED BY NSPSRV TO PROPERLY MANAGE
   217					;THE LINK. THE INFORMTION IS FALLS INTO ONE OF TWO CLASSES:
   218					;LOGICAL PARAMETERS AND PROCESS PARAMETERS. AMONG THE LOGICAL
   219					;LINK PARAMETERS ARE: CURRENT LINK STATE, BUFFER COUNTS, FLOW
   220					;CONTROL OPTIONS, AND SEGEMENT NUMBERS. AMONG THE PROCESS
   221					;PARAMETERS ARE: PI CHANNELS FOR VARIOUS EVENTS, OWNING FORK,
   222					;WINDOW PAGE BYTE COUNTS
   223
   224					;THE LINK TABLE IS STORED AS A BINARY TREE. ENTRIES ARE LINKED IN
   225					;THE TREE IN ORDER BY LINK NUMBER, AND THE SEARCH ALGORTIHM INSURES
   226					;THAT A LINK CAN BE LOCATED IN LOG(2) OF THE NUMBER OF ENTRIES.
   227
   228					;WITHIN THE LOGICAL LINK TABLE ARE ENTRIES WHICH REPRESENT
   229					;"LISTENING" OBJECTS. THESE ARE PROCESSES WHICH HAVE DECLARED THEIR
   230					;INTEREST IN PARTICIPATING IN A DIALOGUE, BUT NO NETWORK ENTITY HAS
   231					;ATTEMPTED AS YET TO CONNECT TO THE OBJECT. UPON RECEIPT OF A
   232					;CONNECT-INITIATE, THE LOGICAL LINK TABLE IS SEARCHED FOR A LISTENING
   233					;OBJECT WHICH COORESPONDS TO THE REQUIREMENTS OF THE CONNECTOR. THIS
   234					;SEARCH IS,UNFORTUNATELY, EXHAUSTIVE AND MAY REQUIRE A CONSIDERABLE
   235					;AMOUNT OF TIME.
   236
   237					;MESSAGES ARE STORED IN MONITOR RESIDENT FREE SPACE. EACH MESSAGE
   238					;HAS A HEADER ON IT OF THE FORM:
   239
   240					;	POINTER TO NEXT MESSAGE IN THE CHAIN
   241					;	DTE#, FLAGS, SEG #, LOGICAL LINK ADDRESS OF OWNING LINK
   242					;	MESSAGE FLAGS, # OF DATA BYTES, TOTAL # OF BYTES
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 2-1
NSPSRV	MAC	 6-Apr-82 10:58	

   243					;	BYTE POINTER TO DATA BYTES (EXCLUDES NSP HEADER)
   244
   245					;THIS MODULE ALSO CONTAINS ROUTINES FOR PARSING AND VERIFYING NETWORK
   246					;FILE SPECS. A FILE SPEC IS OF THE FORM:
   247					;DCN:HOST-OBJECT-DESCRIPTOR.TASKNAME;ATTRIBUTES
   248					; TO MAKE A CONNECTION, OR:
   249					;SRV:OBJECT-DESCRIPTOR.TASKNAME
   250					; TO DECLARE A SERVER
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 3
NSPSRV	MAC	 6-Apr-82 10:58	

   251
   252					;DEFINE LOCAL MACROS
   253
   254					DEFINE LLLOCK<
   255					   	CALL LOKLL>		;;GO LOCK UP THE TREE
   256
   257					DEFINE LLLULK<
   258					   	CALL ULOKLL>		;;GO UNLOCK THE TREE
   259
   260					DEFINE ATTENT (VALUE,BIN,COUNT,EXCLU)<
   261						<BIN>B0+<COUNT>B17+EXCLU*1000+VALUE>
   262
   263					DEFSTR (NTATR,,35,9)
   264					DEFSTR (NTATC,,17,6)
   265					DEFSTR (NTATE,,26,9)
   266					DEFSTR (NTATB,,0,1)
   267
   268					DEFAC (STS,P1)
   269					DEFAC (JFN,P2)
   270					DEFAC (DEV,P4)
   271					DEFAC (F1,P5)
   272
   273					;DEFINITIONS FOR FILE SPECS
   274
   275		   	   000020	MAXDSC==^D16			;MAX CHARACTERS IN DESCRIPTOR
   276		   	   000020	TSKMAX==^D16			;MAX CHARACTERS IN A TASK NAME
   277		   	   000006	MAXHST==:6			;MAX SIZE OF A HOST STRING
   278
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 4
NSPSRV	MAC	 6-Apr-82 10:58	

   279
   280					SUBTTL	Device Dispatch Vectors for SRV: and DCN: Devices
   281
   282					;FOR DEVICE SRV
   283
   284						SWAPCD
   285
   286	000000'02  400000  000105'	SRVDTB::DTBDSP (NETDIR)		;DIRECTORY SET
   287	000001'02  400000  000066'		DTBDSP (SRNSET)		;NAME LOOKUP
   288	000002'02  400000  000101'		DTBDSP (EXTSET)		;EXTENSION LOOKUP
   289	000003'02  400000  000111'		DTBDSP (VERSET)		;VERSION LOOKUP
   290	000004'02  400000  007127'		DTBBAD (DESX9)		;NO PROTECTION
   291	000005'02  400000  007127'		DTBBAD (DESX9)		;NO ACCOUNT
   292	000006'02  400000  007127'		DTBBAD (DESX9)		;NO STATUS
   293	000007'02  400000  002011'		DTBDSP (SRCOPN)		;OPEN
   294	000010'02  400000  003731'		DTBDSP (NETSQI)		;INPUT
   295	000011'02  400000  000563'		DTBDSP (NETSQO)		;OUTPUT
   296	000012'02  400000  003252'		DTBDSP (NETCLZ)		;CLOSE
   297					   REPEAT 7,<
   298						DTBBAD (DESX9)>	;ILLEGAL FUNCTIONS
   299	000013'02  400000  007127'
   300	000014'02  400000  007127'
   301	000015'02  400000  007127'
   302	000016'02  400000  007127'
   303	000017'02  400000  007127'
   304	000020'02  400000  007127'
   305	000021'02  400000  007127'
   306
   307	000022'02  400000  000410'		DTBDSP (NTMTOP)		;MTOPR
   308					   REPEAT 2,<DTBBAD (DESX9)>	;ILLEGAL FUNCTIONS
   309	000023'02  400000  007127'
   310	000024'02  400000  007127'
   311
   312	000025'02  400000  000576'		DTBDSP (NETSQR)		;SOUTR
   313	000026'02  000000000000#		DTBDSP (RFTADN)		;NO TIME AND DATE
   314	000027'02  000000000000#		DTBDSP (RFTADN)		;NO TIME AND DATE
   315	000030'02  400000  003426'		DTBDSP (NETINP)		;SET FOR INPUT
   316	000031'02  400000  003473'		DTBDSP (NETOUP)		;SET FOR OUTPUT
   317	000032'02  400000  007131'		DTBBAD (GJFX49)		;NO ATTRIBUTES
   318
   319					;FOR THE DCN DEVICE
   320
   321	000033'02  400000  000105'	DCNDTB::DTBDSP (NETDIR)		;DIR SET
   322	000034'02  400000  000075'		DTBDSP (DCNSET)		;NAME LOOKUP
   323	000035'02  400000  000101'		DTBDSP (EXTSET)		;EXTENSION LOOKUP
   324	000036'02  400000  000111'		DTBDSP (VERSET)		;VERSION LOOKUP
   325					   REPEAT 3,<
   326						DTBBAD (DESX9)>	;ILLEGAL FUNCTIONS
   327	000037'02  400000  007127'
   328	000040'02  400000  007127'
   329	000041'02  400000  007127'
   330
   331	000042'02  400000  000332'		DTBDSP (DCNOPN)		;OPEN
   332	000043'02  400000  003731'		DTBDSP (NETSQI)		;INPUT
   333	000044'02  400000  000563'		DTBDSP (NETSQO)		;OUTPUT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 4-1
NSPSRV	MAC	 6-Apr-82 10:58		Device Dispatch Vectors for SRV: and DCN: Devices

   334	000045'02  400000  003252'		DTBDSP (NETCLZ)		;CLOSE
   335					   REPEAT 7,<
   336						DTBBAD (DESX9)>	;ILLEGAL FUNCTIONS
   337	000046'02  400000  007127'
   338	000047'02  400000  007127'
   339	000050'02  400000  007127'
   340	000051'02  400000  007127'
   341	000052'02  400000  007127'
   342	000053'02  400000  007127'
   343	000054'02  400000  007127'
   344
   345	000055'02  400000  000410'		DTBDSP (NTMTOP)		;MTOPR
   346					   REPEAT 2,<DTBBAD (DESX9)>	;ILLEGAL FUNCITONS
   347	000056'02  400000  007127'
   348	000057'02  400000  007127'
   349
   350	000060'02  400000  000576'		DTBDSP (NETSQR)		;SOUTR
   351	000061'02  000000000000#		DTBDSP (RFTADN)		;NO TIME AND DATE
   352	000062'02  000000000000#		DTBDSP (SFTADN)		;NO TIME AND DATE
   353	000063'02  400000  003426'		DTBDSP (NETINP)		;SET FOR INPUT
   354	000064'02  400000  003473'		DTBDSP (NETOUP)		;SET FOR OUTPUT
   355	000065'02  400000  001753'		DTBDSP (NETATR)		;PARSE ATTRIBUTES
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 5
NSPSRV	MAC	 6-Apr-82 10:58		GTJFN Routines

   356					SUBTTL	GTJFN Routines
   357
   358					;ROUTINES CALLED FROM GTJFN PROCESSING TO LOOK UP FILE NAMES
   359
   360					;NAME LOOKUP FOR SRC DEVICE
   361
   362	000066'02  322 01 0 00 007136'	SRNSET::JUMPE T1,[RETBAD (GJFX18,<OKINT>)] ;CANT'T STEP IT
   363						CALL [	TRVAR <NTCNT,NTPNT,NTOBJ,NTDDSC,NTDSS>
   364							CALL SRCNAM	;GO PARSE THE NAME
   365							 RETBAD()	;HAD AS ERROR
   366	000067'02  260 17 0 00 007137'			RETSKP]		;GOOD
   367	000070'02  263 17 0 00 000000 		 RETBAD ()		;FAILED
   368	000071'02  602 14 0 00 020000 	OKRET:	TQNE <UNLKF>		;WANT TO UNLOCK?
   369	000072'02  254 00 0 00 000000*		JRST SK2RET		;NO. RETURN
   370	000073'02  256 00 0 00 000000*		OKINT			;YES. GO OKINT THEN
   371	000074'02  254 00 0 00 000072*		JRST SK2RET		;AND RETURN
   372
   373					;ROUTINE TO DO NAME LOOKUP FOR DCN DEVICE
   374
   375	000075'02  322 01 0 00 007136'	DCNSET::JUMPE T1,[RETBAD (GJFX18,<OKINT>)] ;CANT'T STEP IT
   376						CALL [	TRVAR <NTCNT,NTPNT,NTOBJ,NTDSC,NTDSS,NTHST,NTHSC>
   377							CALL DCNNAM	;GO PARSE NAME
   378							  RETBAD()	;SOME SORT OF ERROR
   379	000076'02  260 17 0 00 007144'			RETSKP]		;GOOD
   380	000077'02  263 17 0 00 000000 		 RETBAD ()		;SOME SORT OF FAILURE
   381	000100'02  254 00 0 00 000071'		JRST OKRET		;AND DONE
   382
   383					;EXTENSION CHECKER
   384
   385	000101'02  322 01 0 00 007136'	EXTSET::JUMPE T1,[RETBAD (GJFX18,<OKINT>)] ;CANT'T STEP IT
   386						CALL [	TRVAR <NTCNT,NTPNT>
   387							CALL NETEXT	;CHECK EXTENSION
   388							 RETBAD()	;SOME SORT OF ERROR
   389	000102'02  260 17 0 00 007151'			RETSKP]		;AND DONE
   390	000103'02  263 17 0 00 000000 		 RETBAD ()		;SOME SORT OF FAILURE
   391	000104'02  254 00 0 00 000071'		JRST OKRET		;AND DONE
   392
   393					;ROUTINE TO LOOK UP DIRECTORY COMPONENT IN NETWORK FILE SPEC
   394
   395	000105'02  603 14 0 00 000001 	NETDIR::TQNE <STEPF>		;WANT TO STEP?
   396	000106'02  254 00 0 00 007156'		RETBAD (GJFX17)		;YES. CAN'T DO IT
   397	000107'02  350 00 0 00 000000*		NOINT			;PREVENT INTS
   398	000110'02  254 00 0 00 000074*		JRST SK2RET		;AND SAY IT IS SET
   399
   400					;VERSION LOOKUP
   401
   402	000111'02  607 14 0 00 000001 	VERSET::TQNN <STEPF>		;TRYING TO STEP?
   403	000112'02  254 00 0 00 000071'		JRST OKRET		;NO. ALLOW IT THEN
   404	000113'02  325 01 0 00 000071'		JUMPGE T1,OKRET		;IF NOT STEPPING, OKAY
   405	000114'02  254 00 0 00 007133'		RETBAD (GJFX18,<OKINT>)	;ALL ELSE IS WRONG
   406
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 6
NSPSRV	MAC	 6-Apr-82 10:58		GTJFN Routines

   407					;ROUTINE TO ASSIGN WINDOW PAGES TO A JFN.
   408					;ACCEPTS:	NORMAL FILE SYSTEM REGISTER (JFN,ETC...)
   409					;RETURNS:	+1	FAILED
   410					;		+2	SUCCESS.
   411
   412	000115'02  402 00 0 11 000000*	ASGWDW::SETZM FILWND(JFN)
   413	000116'02  402 00 0 11 000000*		SETZM FILBCT(JFN)	;AND CLEAR COUNTS
   414	000117'02  607 10 0 00 200000 		TQNN <READF>		;WANT READ ON THIS FILE?
   415	000120'02  254 00 0 00 000127'		JRST ASGWRT		;NO. TRY WRITE
   416	000121'02  260 17 0 00 000000*		CALL ASGPAG		;GET A JSB PAGE
   417	000122'02  254 00 0 00 007160'		 RETBAD (MONX02)	;COULDN'T
   418	000123'02  542 01 0 11 000115*		HRRM T1,FILWND(JFN)	;SAVE WINDOW PAGE
   419	000124'02  135 03 0 00 000000*		LDB T3,PBYTSZ		;GET BYTE SIZE
   420	000125'02  260 17 0 00 002446'		CALL MAKINP		;GET A POINTER FOR INPUT
   421	000126'02  202 01 0 11 000000*		MOVEM T1,FILBFI(JFN)	;INIT INPUT POINTER
   422	000127'02  607 10 0 00 100000 	ASGWRT:	TQNN <WRTF>		;WANT WRITE
   423	000130'02  254 00 0 00 000000*		RETSKP			;NO ALL DONE
   424	000131'02  260 17 0 00 000121*		CALL ASGPAG		;GET A PAGE FOR OUTPUT
   425						 JRST [	SKIPE T1,FILWND(JFN) ;FAILED. HAVE READ WINDOW?
   426							CALL RELPAG	;RELEASE THE INPUT PAGE
   427							SETZM FILWND(JFN) ;NOTE NO PAGE WAS ASSIGNED
   428							SETZM FILBFI(JFN) ;PREVENT RELEASE OF FREE SPACE BY RLJFN
   429	000132'02  254 00 0 00 007162'			RETBAD (MONX02)] ;AND FAIL
   430	000133'02  506 01 0 11 000123*		HRLM T1,FILWND(JFN)	;STORE WINDOW
   431	000134'02  254 00 0 00 000130*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 7
NSPSRV	MAC	 6-Apr-82 10:58		GTJFN Routines

   432					;ROUTINE TO COMPUTE NUMBER OF USEFUL BYTES IN A JSB STRING.
   433					;CALLED FROM ROUTINES THAT PROCESS NETWORK FILE NAMES.
   434					;ACCEPTS:	T1/FREE BLOCK ADDRESS
   435					;	TRVAR <NTCNT,NTPNT,.....>
   436					;RETURNS:	+1 ALWAYS WITH COUNT IN NTCNT AND POINTER IN NTPNT
   437
   438	000135'02  550 03 0 01 000000 	COMPUT:	HRRZ T3,0(T1)		;GET COUNT OF WORDS IN BLOCK
   439	000136'02  370 00 0 00 000003 		SOS T3			;DISCOUNT THE HEADER
   440	000137'02  221 03 0 00 000005 		IMULI T3,5		;GET BYTE COUNT
   441	000140'02  350 00 0 00 000003 		AOS T3			;ADD IN FINAL TERMINATOR
   442	000141'02  505 01 0 00 000700 		HRLI T1,(<POINT 7,0,35>) ;GET STRING POINTER TO THE BLOCK
   443	000142'02  202 01 0 15 000002 		MOVEM T1,NTPNT		;AND SAVE THE STARTING POINTER
   444	000143'02  260 17 0 00 000146'		CALL CMPLEN		;GET LENGTH OF STRING
   445	000144'02  202 03 0 15 000001 		MOVEM T3,NTCNT		;SAVE COUNT
   446	000145'02  263 17 0 00 000000 		RET			;DONE, RETURN
   447
   448
   449					;CMPLEN - ROUTINE TO COMPUTE LENGTH OF STRINGS
   450					;
   451					;ACCEPTS IN T1/ POINTER TO START OF STRING
   452					;	    T3/	MAX NUMBER OF BYTES IN STRING
   453					;		CALL CMPLEN
   454					;RETURNS: +1 ALWAYS, WITH T3/ ACTUAL NUMBER OF BYTES IN STRING
   455
   456	000146'02  265 16 0 00 000000*	CMPLEN::STKVAR <CPLCNT>
   457	000147'02  000001  000001
   458	000150'02  202 03 0 17 777776 		MOVEM T3,CPLCNT		;STARTING COUNT
   459	000151'02  200 02 0 00 007167'		MOVE T2,[POINT 0,0,2]	;GET DUMMY POINTER
   460	000152'02  400 04 0 00 000000 		SETZ T4,
   461	000153'02  104 00 0 00 000052 		SIN			;FIND NUMBER OF USEFUL BYTES IN THE STRING
   462	000154'02  322 03 0 00 000000*		JUMPE T3,R		;IF NO NULLS, ALL SET
   463	000155'02  274 03 0 17 777776 		SUB T3,CPLCNT		;FOUND A NULL THEN. GET CHARACTERS SKIPPED
   464	000156'02  213 00 0 00 000003 		MOVNS T3		;GET COUNT
   465	000157'02  263 17 0 00 000000 		RET			;AND DONE
   466
   467					;ROUTINE TO SCAN NAME STRING FOR NETWORK PUNCTUATION CHARACTER AND
   468					;UPDATE COUNTS.
   469					;ACCEPTS:	IN TRVAR'S
   470					;	NTPNT	CURRENT TEXT POINTER
   471					;	NTCNT	CURRENT BYTE COUNT
   472
   473					;RETURNS:
   474					;	NTPNT	UPDATED POINTER
   475					;	NTCNT	UPDATED COUNT
   476					;	T1/ ORIGINAL POINTER
   477					;	T3/ NUMBER OF CHARCTERS FOUND BEFORE PUNCTUATION
   478
   479	000160'02  200 01 0 15 000002 	NETDSH:	MOVE T1,NTPNT		;GET BYTE POINTER
   480	000161'02  200 02 0 00 007167'		MOVE T2,[POINT 0,0,2]	;DUMMY
   481	000162'02  200 03 0 15 000001 		MOVE T3,NTCNT		;THE COUNT
   482	000163'02  201 04 0 00 000055 		MOVEI T4,"-"		;STOP ON THE END OF THE HOST FIELD
   483	000164'02  104 00 0 00 000052 		SIN			;GET IT
   484	000165'02  250 01 0 15 000002 		EXCH T1,NTPNT		;STORE NEW POINTER. GET OLD
   485	000166'02  250 03 0 15 000001 		EXCH T3,NTCNT		;STORE NEW COUNT. GET OLD COUNT
   486	000167'02  274 03 0 15 000001 		SUB T3,NTCNT		;GET BYTES TRANSPIRED
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 7-1
NSPSRV	MAC	 6-Apr-82 10:58		GTJFN Routines

   487	000170'02  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 8
NSPSRV	MAC	 6-Apr-82 10:58		GTJFN Routines

   488
   489					;ROUTINE TO PARSE THE NAME FIELD OF A SOURCE SPECIFICATION.
   490					;A NAME FIELD LOOKS LIKE:
   491					;	OBJECT-DESCRIPTOR
   492					;OR
   493					;	-
   494					;WHERE THE FORMER IS THE SYNTAX FOR A GENERIC OBJECT
   495					;AND THE LATTER IS THE SYNTAX FOR A TASK ONLY
   496					;ACCEPTS:
   497					;	T1/ POINTER TO NAME BLOCK
   498					;	TRVAR <NTCNT,NTPNT,NTOBJ,NTDSC,NTDSS>
   499					;RETURNS:
   500					;	+1 SYNTAX OR SEMANTICS ERROR. CODE IN T1
   501					;	+2 ACCEPTABLE NAME.
   502
   503					;	WITH TRVAR'S FILLED IN
   504
   505	000171'02  260 17 0 00 000135'	SRCNAM::CALL COMPUT		;COMPUTE STRING COUNT
   506	000172'02  476 00 0 15 000003 		SETOM NTOBJ		;ASSUME NO OBJECT
   507	000173'02  260 17 0 00 000160'		CALL NETDSH		;GO FIND OBJECT NAME
   508	000174'02  307 03 0 00 000001 		CAIG T3,1		;WAS IT NULL?
   509	000175'02  254 00 0 00 000212'		JRST SRCNOB		;YES. NO GENERIC OBJECT GIVEN
   510	000176'02  135 04 0 15 000002 		LDB T4,NTPNT		;GET TERMINATOR
   511	000177'02  202 04 0 15 000003 		MOVEM T4,NTOBJ		;SAVE IT
   512	000200'02  400 04 0 00 000000 		SETZ T4,		;GET A NULL
   513	000201'02  137 04 0 15 000002 		DPB T4,NTPNT		;TIE OFF OBJECT NAME
   514	000202'02  260 17 0 00 001153'		CALL OBJLOK		;GO LOOK UP THE OBJECT
   515	000203'02  254 00 0 00 007170'		 RETBAD (DCNX3)		;NO SUCH OBJECT. COMPLAIN
   516	000204'02  337 00 0 00 000001 		SKIPG T1		;A LEGAL OBJECT TYPE?
   517	000205'02  254 00 0 00 007170'		RETBAD (DCNX3)		;NO. COMPLAIN
   518	000206'02  307 01 0 00 000000*		CAIG T1,DECOBJ		;IS IT A DEC RESERVED OBJECT?
   519						JRST [	MOVX T3,SC%WHL!SC%OPR ;YES. MUST BE PRIVILEGED THEN
   520							TDNE T3,CAPENB	;IS IT ENABLED?
   521							JRST .+1	;YES. PROCEED
   522	000207'02  254 00 0 00 007172'			RETBAD (DCNX3)]	;NO. ERROR
   523	000210'02  250 01 0 15 000003 		EXCH T1,NTOBJ		;SAVE GENERIC OBJECT TYPE
   524	000211'02  137 01 0 15 000002 		DPB T1,NTPNT		;AND PUT BACK TERMINATOR
   525	000212'02  402 00 0 15 000004 	SRCNOB:	SETZM NTDSC		;ASSUME NO DESCRIPTOR
   526	000213'02  332 03 0 15 000001 		SKIPE T3,NTCNT		;ANY BYTES LEFT IN STRING?
   527	000214'02  307 03 0 00 000001 		CAIG T3,1		;YES. ENOUGH TO MAKE A DESCRIPTOR?
   528	000215'02  254 00 0 00 000134*		RETSKP			;NO ALL DONE THEN
   529	000216'02  202 03 0 15 000004 		MOVEM T3,NTDSC		;STORE COUNT OF DESCRIPTOR
   530	000217'02  335 00 0 15 000003 		SKIPGE NTOBJ		;HAVE AN OBJECT?
   531	000220'02  254 00 0 00 007170'		RETBAD (DCNX3)		;NO. ILLEGAL SPECIFICATION
   532	000221'02  303 03 0 00 000020 		CAILE T3,MAXDSC		;WITHIN RANGE?
   533	000222'02  254 00 0 00 007176'		RETBAD (DCNX12)		;NO.ILLEGAL DESCRIPTOR
   534	000223'02  200 01 0 15 000002 		MOVE T1,NTPNT		;GET POINTER
   535	000224'02  202 01 0 15 000005 		MOVEM T1,NTDSS		;SAVE BEGINNING OF DESCRIPTOR
   536	000225'02  254 00 0 00 000215*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 9
NSPSRV	MAC	 6-Apr-82 10:58		GTJFN Routines

   537
   538					;ROUTINE TO PARSE NAME FOR A CONNECT ATTEMPT.
   539					;AACEPTS:	T1/ BLOCK ADDRESS OF NAME
   540					;	TRVAR <NTCNT,NTPNT,NTOBJ,NTDSC,NTDSS,NTHST,NTHSC>
   541					;RETURNS:
   542					;		+1 SYNTAX ERROR
   543					;		+2 NAME IS GOOD. TRVAR'S FILLED IN
   544
   545	000226'02  260 17 0 00 000135'	DCNNAM::CALL COMPUT		;FIND COUNT
   546	000227'02  254 00 0 00 000230'		CALLRET PRSNAM		;GO PARSE NAME FIELD
   547
   548
   549
   550					;PRSNAM - ROUTINE TO DO THE PARSING OF THE NAME
   551					;
   552					;ACCEPTS:	IN TRVAR'S
   553					;	NTPNT	CURRENT TEXT POINTER
   554					;	NTCNT	CURRENT BYTE COUNT
   555					;		CALL PRSNAM
   556					;RETURNS: +1	 FAILED, SYNTAX ERROR
   557					;	  +2	SUCCESS, WITH APPROPRIATE TRVARS FILLED IN
   558
   559	000230'02  260 17 0 00 000160'	PRSNAM::CALL NETDSH		;GO PICK OFF HOST NAME
   560	000231'02  336 00 0 15 000001 		SKIPN NTCNT		;MORE IN THE STRING?
   561	000232'02  254 00 0 00 007200'		RETBAD (DCNX1)		;NO. SYNTAX ERROR THEN
   562	000233'02  476 00 0 15 000007 		SETOM NTHSC		;ASSUME LOCAL CONNECTION
   563	000234'02  377 00 0 00 000003 		SOSG T3			;HAVE A REAL STRING?
   564	000235'02  254 00 0 00 000247'		JRST DCNOBJ		;NO. GO LOOK FOR OBJECT THEN
   565	000236'02  303 03 0 00 000006 		CAILE T3,MAXHST		;WITHIN BOUNDS?
   566	000237'02  254 00 0 00 007202'		RETBAD (COMX19)		;NO. STRING TOO LONG
   567	000240'02  202 01 0 15 000006 		MOVEM T1,NTHST		;SAVE POINTER TO HOST
   568	000241'02  202 03 0 15 000007 		MOVEM T3,NTHSC		;AND SAVE COUNT
   569	000242'02  350 00 0 00 000001 		AOS T1			;POINT TO THE ACTUAL TEXT
   570	000243'02  505 01 0 00 440700 		HRLI T1,440700		;MAKE A BYTE POINTER FOR PARSING
   571	000244'02  200 02 0 00 000003 		MOVE T2,T3		;GET NODE NAME CHARACTER COUNT
   572	000245'02  260 17 0 00 000000*		CALL PARNO1		;SEE IF VALID NODE NAME SYNTAX
   573	000246'02  263 17 0 00 000000 		 RETBAD ()		;INVALID NODE NAME - RETURN THE ERROR
   574	000247'02  260 17 0 00 000160'	DCNOBJ:	CALL NETDSH		;GO FIND OBJECT
   575	000250'02  307 03 0 00 000001 		CAIG T3,1		;HAVE A REAL STRING?
   576	000251'02  254 00 0 00 007170'		RETBAD (DCNX3)		;NO. INVALID OBJECT THEN
   577	000252'02  135 04 0 15 000002 		LDB T4,NTPNT		;GET BACK TERMINATOR
   578	000253'02  202 04 0 15 000003 		MOVEM T4,NTOBJ		;SAVE IT
   579	000254'02  400 04 0 00 000000 		SETZ T4,		;GET A NULL
   580	000255'02  137 04 0 15 000002 		DPB T4,NTPNT		;TIE OFF STRING
   581	000256'02  260 17 0 00 001153'		CALL OBJLOK		;GO LOOK UP THE OBJECT
   582	000257'02  254 00 0 00 007170'		 RETBAD (DCNX3)		;NO SUCH
   583	000260'02  250 01 0 15 000003 		EXCH T1,NTOBJ		;SAVE OBJECT
   584	000261'02  137 01 0 15 000002 		DPB T1,NTPNT		;AND PUT BACK TERMINATOR
   585	000262'02  254 00 0 00 000212'		JRST SRCNOB		;FINISH UP ON DESCRIPTOR
   586
   587					;ROUTINE TO PARSE EXTENSION. THIS FIELD WILL BE THE TASKNAME
   588
   589	000263'02  260 17 0 00 000135'	NETEXT:	CALL COMPUT		;GET COUNT
   590	000264'02  200 01 0 15 000001 		MOVE T1,NTCNT		;GET THE COMPUTED COUNT
   591	000265'02  303 01 0 00 000020 		CAILE T1,TSKMAX		;WITHING RANGE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 9-1
NSPSRV	MAC	 6-Apr-82 10:58		GTJFN Routines

   592	000266'02  254 00 0 00 007176'		RETBAD (DCNX12)		;NO. TOO LONG
   593	000267'02  254 00 0 00 000225*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 10
NSPSRV	MAC	 6-Apr-82 10:58		Routines to open DCN: or SRV: links

   594					SUBTTL	Routines to open DCN: or SRV: links
   595
   596					;COMMON ROUTINE FOR OPENF JSYS. THIS CODE IS CALLED BY BOTH SRCOPN
   597					;AND DCNOPN TO ASSIGN A LL BLOCK, ASSIGN A LL ADDRESS, AND FILL
   598					;IN COMMON VALUES.
   599					;	RETURNS +1	FAILED. T1/ ERROR CODE
   600					;		+2 SUCCESS	T1/ LL BLOCK ADDRESS
   601					;			 AND LL TREE LOCKED
   602
   603	000270'02  634 04 0 00 000004 	OPNDNC::TDZA T4,T4		;NOTE OPENING DCN:
   604	000271'02  476 00 0 00 000004 	OPNSRC::SETOM T4		;NOTE OPENING SRV:
   605	000272'02  623 10 0 00 020000 		TQZE <RNDF>		;WANT APPEND?
   606	000273'02  661 10 0 00 100000 		TQO <WRTF>		;YES. FORCE ON WRITE THEN
   607	000274'02  607 10 0 00 300000 		TQNN <READF,WRTF>	;WANT SOME FORM OF ACCESS?
   608	000275'02  254 00 0 00 007204'		RETBAD (OPNX14)		;NO. ILLEGAL OPEN
   609	000276'02  135 02 0 00 000124*		LDB T2,PBYTSZ		;LOOK AT REQUESTED BYTE SIZE
   610	000277'02  302 02 0 00 000010 		CAIE T2,10		;BYTES?
   611	000300'02  306 02 0 00 000007 		CAIN T2,7		;OR ASCII?
   612	000301'02  254 00 0 00 000304'		JRST BYTGUD		;YES. ACCEPTS IT
   613	000302'02  302 02 0 00 000044 		CAIE T2,44		;-10 WORD MODE?
   614	000303'02  254 00 0 00 007206'		RETBAD (SFBSX2)		;NO. ILLEGAL BYTE SIZE
   615	000304'02  550 01 0 11 000000*	BYTGUD:	HRRZ T1,FILNEN(JFN)	;GET ADDRESS OF STRING BLOCK
   616	000305'02  271 01 0 00 000001 		ADDI T1,1		;GET ADDRESS OF STRING
   617	000306'02  135 02 0 00 000276*		LDB T2,PBYTSZ		;GET BYTESIZE OF OPENF
   618	000307'02  332 00 0 00 000004 		SKIPE T4		;OPENING DCN: ?
   619						JRST [	CALL OPNSWK	;NO, CALL WORK ROUTINE TO OPEN SRV:
   620							 RETBAD ()	;FAILED, RETURN ERROR CODE
   621	000310'02  254 00 0 00 007210'			JRST SAVLLB ]	;GO SAVE LL BLOCK ADDRESS IN JFN BLOCK
   622	000311'02  260 17 0 00 001366'		CALL OPNDWK		;CALL WORK ROUTINE TO OPEN DCN:
   623	000312'02  263 17 0 00 000000 		 RETBAD ()		;FAILED, RETURN ERROR CODE
   624
   625
   626	000313'02  202 01 0 11 000000*	SAVLLB:	MOVEM T1,FILLLB(JFN)	;SAVE BLOCK ADDRESS
   627	000314'02  603 10 0 00 200000 		TQNE <READF>		;WANT BI-DIRECTIONAL LINK?
   628	000315'02  260 17 0 00 001331'		CALL SETOPI		;SET INPUT FLAG FOR LOGICAL LINK
   629	000316'02  603 10 0 00 100000 		TQNE <WRTF>		;WANT WRITE?
   630	000317'02  260 17 0 00 001334'		CALL SETOPW		;SET OUTPUT FLAG FOR LOGICAL LINK
   631	000320'02  260 17 0 00 000322'		CALL STMXDF		;SET INPUT/OUTPUT MAX QUEUE DEFAULTS
   632	000321'02  254 00 0 00 000267*		RETSKP			;AND DONE
   633
   634					;STMXDF - SET MAX INPUT/OUTPUT QUEUE DEFAULTS
   635					;
   636					;ACCEPTS:	T1/ ADDRESS OF LOGICAL LINK BLOCK
   637					;
   638					;RETURNS:	+1,ALWAYS
   639					;
   640					;DESTROYS T2
   641
   642	000322'02  201 02 0 00 000011 	STMXDF::MOVEI T2,MAXSEG		;ASSUME READ ONLY
   643	000323'02  135 16 0 00 007213'		OPSTR <SKIPE>,LLOPW,(T1) ;OPEN FOR WRITE AS WELL?
   644	000324'02  332 00 0 00 000016 
   645	000325'02  201 02 0 00 000010 		MOVEI T2,MAXSG1		;YES. USE A SMALLER NUMBER
   646	000326'02  137 02 0 00 007214'		STOR T2,LLMQI,(T1)	;SAVE THE INPUT QUEUE LENGTH (ALSO FLOW CONTROL)
   647	000327'02  201 02 0 00 000010 		MOVEI T2,MAXSGQ		;SET OUTPUT QUEUE LENGTH
   648	000330'02  137 02 0 00 007215'		STOR T2,LLMQO,(T1)	;SAVE IN LINK BLOCK
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 10-1
NSPSRV	MAC	 6-Apr-82 10:58		Routines to open DCN: or SRV: links

   649	000331'02  263 17 0 00 000000 		RET
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 11
NSPSRV	MAC	 6-Apr-82 10:58		Routines to open DCN: or SRV: links

   650					;ROUTINE CALLED FROM THE OPENF JSYS TO OPEN A DCN NETWORK CONNECTION
   651
   652	000332'02  265 16 0 00 000000*	DCNOPN::TRVAR <NTCNT,NTPNT,NTOBJ,NTDSC,NTDSS,NTHST,NTHSC,NTCIB>
   653	000333'02  000010  000010
   654	000334'02  335 16 0 00 000000#		GTOKM (.GODNA,,[RETERR ()]) ;ASK ACJ TO GIVE ITS BLESSING
   655	000335'02  334 00 0 00 000000 
   656	000336'02  607 16 0 00 200000 
   657	000337'02  260 17 0 00 007225'
   658	000340'02  334 00 0 00 000000 
   659	000341'02  254 00 0 00 007244'
   660	000342'02  554 01 0 11 000304*		HLRZ T1,FILNEN(JFN)	;GET NAME FOR THE CONNECTION
   661	000343'02  260 17 0 00 000226'		CALL DCNNAM		;GO PARSE THE NAME FIELD
   662	000344'02  263 17 0 00 000000 		 RETBAD ()		;FAILED
   663	000345'02  260 17 0 00 000270'		CALL OPNDNC		;GO DO COMMON SETUP
   664	000346'02  263 17 0 00 000000 		 RETBAD () 		;FAILED
   665	000347'02  260 17 0 00 000115'		CALL ASGWDW		;NOW SET UP WINDOWS
   666	000350'02  254 00 0 00 007245'		 RETBAD (,<CALL CLENUP>) ;FAILED, RETURN ERROR
   667	000351'02  200 01 0 11 000313*		MOVE T1,FILLLB(JFN)	;GET ADDRESS OF LOGICAL LINK BLOCK
   668	000352'02  504 02 0 15 000007 		HRL T2,NTHSC		;GET COUNT OF HOST STRING BYTES
   669	000353'02  540 02 0 15 000004 		HRR T2,NTDSC		;GET COUNT OF DESCRIPTOR STRING BYTES
   670	000354'02  200 03 0 15 000006 		MOVE T3,NTHST		;GET ADDRESS OF BLOCK HOLDING HOST NAME STRING
   671	000355'02  200 04 0 15 000005 		MOVE T4,NTDSS		;GET POINTER TO DESCRIPTOR STRING
   672	000356'02  260 17 0 00 002245'		CALL STRSAV		;GO MOVE PERMANENT LL STRINGS
   673	000357'02  254 00 0 00 007245'		 RETBAD (,<CALL CLENUP>) ;FAILED, RETURN ERROR
   674	000360'02  200 01 0 11 000351*		MOVE T1,FILLLB(JFN)	;GET LOGICAL LINK BLOCK ADDRESS
   675	000361'02  550 02 0 11 000000*		LOAD T2,FILATL,(JFN)	;GET POINTER TO ATTRIBUTE LIST
   676	000362'02  504 03 0 15 000003 		HRL T3,NTOBJ		;GET OBJECT
   677	000363'02  540 03 0 15 000004 		HRR T3,NTDSC		;GET DESCRIPTOR COUNT
   678	000364'02  200 04 0 15 000005 		MOVE T4,NTDSS		;GET DESCRIPTOR POINTER
   679	000365'02  260 17 0 00 002115'		CALL CRTLNK		;GO CREATE THE LOGICAL LINK
   680	000366'02  254 00 0 00 007245'		 RETBAD (,<CALL CLENUP>) ;FAILED
   681	000367'02  254 00 0 00 000321*		RETSKP			;DONE, RETURN SUCCESS
   682
   683
   684					;CLENUP - ROUTINE TO CLEAN UP JFN BLOCK IF OPEN OF DCN: FAILS
   685					;
   686					;ACCEPTS IN JFN/ OFFSET TO JFN BLOCK
   687					;		CALL CLENUP
   688					;RETURNS: +1 ALWAYS
   689
   690	000370'02  265 16 0 00 000146*	CLENUP:	STKVAR <CLNERR>
   691	000371'02  000001  000001
   692	000372'02  202 01 0 17 777776 		MOVEM T1,CLNERR		;SAVE ERROR CODE
   693	000373'02  370 00 0 00 000000*		DECR DCCUR		;ONE LESS LINK ON FAILURE
   694	000374'02  200 01 0 11 000360*		MOVE T1,FILLLB(JFN)	;GET ADDRESS OF LOGICAL LINK BLOCK
   695	000375'02  260 17 0 00 001531'		CALL DELNOD		;FREE THE NODE
   696	000376'02  554 01 0 11 000133*		HLRZ T1,FILWND(JFN)	;GET WINDOW PAGE ADDRESS
   697	000377'02  332 00 0 00 000001 		SKIPE T1		;ANY WINDOW PAGE ASSIGNED YET ?
   698	000400'02  260 17 0 00 000000*		CALL RELPAG		;YES, RELEASE IT
   699	000401'02  550 01 0 11 000376*		HRRZ T1,FILWND(JFN)	;GET OTHER WINDOW PAGE
   700	000402'02  332 00 0 00 000001 		SKIPE T1		;ANY ASSIGNED ?
   701	000403'02  260 17 0 00 000400*		CALL RELPAG		;YES, RELEASE IT ALSO
   702	000404'02  402 00 0 11 000126*		SETZM FILBFI(JFN)	;PREVENT RELEASE OF SPACE BY RLJFN
   703	000405'02  260 17 0 00 000000#		CALL ULOKLL		;UNLOCK THE LL TREE
   704	000406'02  200 01 0 17 777776 		MOVE T1,CLNERR		;RESTORE ERROR CODE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 11-1
NSPSRV	MAC	 6-Apr-82 10:58		Routines to open DCN: or SRV: links

   705	000407'02  263 17 0 00 000000 		RET
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 12
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Routines

   706					SUBTTL	MTOPR Routines
   707
   708	000410'02  607 10 0 00 400000 	NTMTOP:	TQNN <OPNF>		;CHECK FOR OPENED
   709	000411'02  254 00 0 00 007247'		RETBAD (CLSX1)		;NO IT IS ILLEGAL
   710	000412'02  260 17 0 00 003426'		CALL NETINP		;SET UP FOR INPUT
   711	000413'02  200 01 0 11 000374*		MOVE T1,FILLLB(JFN)	;MUST LOCK UP BLOCK
   712	000414'02  260 17 0 00 000000#		CALL BLKLLK		;DO IT
   713						 JRST [	TQO BLKF	;CANNOT LOCK IT, INDICATE BLOCK NEEDED
   714	000415'02  254 00 0 00 007251'			RET ]		;RETURN AND TRY AGAIN LATER
   715	000416'02  256 04 0 00 007253'		XCTU [HRRZ T2,2]	;GET FUNCTION CODE
   716	000417'02  205 03 0 00 777757 		MOVSI T3,-NTMTCT	;SCAN TABLE FOR THE FUNCTION
   717	000420'02  554 04 0 03 000427'	NTMTO1:	HLRZ T4,NTMTTB(T3)	;GET NEXT ENTRY
   718	000421'02  306 02 0 04 000000 		CAIN T2,0(T4)		;IS THIS IT?
   719						JRST [	HRRZ T2,NTMTTB(T3) ;GET DISPATCH ADDRESS
   720	000422'02  254 00 0 00 007254'			JRST 0(T2)]	;AND GO DO IT
   721	000423'02  253 03 0 00 000420'		AOBJN T3,NTMTO1		;DO ENTIRE TABLE
   722	000424'02  200 01 0 11 000413*		MOVE T1,FILLLB(JFN)	;GET LOGICAL LINK BLOCK ADDRESS
   723	000425'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK THE BLOCK
   724	000426'02  254 00 0 00 007256'		RETBAD (MTOX1)		;FAIL
   725
   726	000427'02  000024  000506'	NTMTTB:	.MOACN,,MTASGN		;SET CONNECT INTERRUPT
   727	000430'02  000025  000527'		.MORLS,,NTSTS		;READ LINK STATUS
   728	000431'02  000026  002460'		.MORHN,,NTRHN		;READ FOREIGN HOST NAME
   729	000432'02  000027  002454'		.MORTN,,NTRTN		;READ LINK TASK NAME
   730	000433'02  000030  002546'		.MORUS,,NTRUS		;READ USER STRING
   731	000434'02  000031  002570'		.MORPW,,NTRPW		;READ PASSWORD
   732	000435'02  000032  002552'		.MORAC,,NTRAC		;READ ACCOUNT STRING
   733	000436'02  000033  002613'		.MORDA,,NTRDA		;READ OPTIONAL DATA
   734	000437'02  000035  002701'		.MORIM,,MTRDIN		;READ INT MESSAGE
   735	000440'02  000036  002765'		.MOSIM,,MTSNIN		;SEND INT MESSAGE
   736	000441'02  000037  003064'		.MOROD,,NTRCOB		;READ OBJ-DESC OF CONNECT OBJECT
   737	000442'02  000040  003133'		.MOCLZ,,NTMTCZ		;CLOSE/REJECT A CONNECTION
   738	000443'02  000041  003164'		.MOCC,,NTACPT		;ACCEPT A CONNECTION
   739	000444'02  000034  002534'		.MORCN,,NTRCN		;READ CONNECT OBJECT NUMBER
   740	000445'02  000042  003201'		.MORSS,,MTGSS		;GET LINK SEGMENT SIZE
   741	000446'02  000043  000450'		.MOANT,,NTANT		;ATTACH NETWORK TERMINAL
   742	000447'02  000044  000473'		.MOSNH,,NTSNH		;SET NETWORK HOST FOR TERMINAL
   743		   	   000021	NTMTCT==.-NTMTTB		;LENGTH OF TABLE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 13
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Routines

   744
   745					;ATTACH NETWORK TERMINAL TO JOB
   746					; JFN, etc. setup by .MTOPR entry code
   747					;returns with LL connected to terminal and JFN released
   748					; T2/ terminal line number assigned
   749
   750	000450'02  200 01 0 11 000424*	NTANT:	MOVE T1,FILLLB(JFN)	;GET LL BLOCK
   751	000451'02  260 17 0 00 000000*		CALL ASMCB		;ASSIGN "MCB" TERMINAL AND CONNECT TO LL
   752	000452'02  263 17 0 00 000000 		 RETBAD()
   753	000453'02  256 04 0 00 007260'		UMOVEM T1,T2
   754	000454'02  400 01 0 00 000000 		SETZ T1,
   755	000455'02  250 01 0 11 000450*		EXCH T1,FILLLB(JFN)	;DISASSOCIATE JFN FROM LL
   756	000456'02  563 00 0 01 000003 		SETONE LLFRK,(T1)	;NO FORK
   757	000457'02  513 00 0 01 000003 		SETZRO <LLDRC,LLPII,LLPIC>,(T1) ;NO INTERRUPTS
   758	000460'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK LL
   759	000461'02  554 01 0 11 000401*		HLRZ T1,FILWND(JFN)	;GET OUTPUT WINDOW
   760	000462'02  332 00 0 00 000001 		SKIPE T1
   761	000463'02  260 17 0 00 000403*		CALL RELPAG		;RELEASE IT
   762	000464'02  550 01 0 11 000461*		HRRZ T1,FILWND(JFN)	;GET INPUT WINDOW
   763	000465'02  332 00 0 00 000001 		SKIPE T1
   764	000466'02  260 17 0 00 000463*		CALL RELPAG		;RELEASE IT
   765	000467'02  402 00 0 11 000000*		SETZM FILBFO(JFN)
   766	000470'02  402 00 0 11 000404*		SETZM FILBFI(JFN)
   767	000471'02  260 17 0 00 000000*		CALL RELJFN
   768	000472'02  254 00 0 00 000367*		RETSKP
   769
   770					;SET NETWORK HOST
   771					; T1/ JFN of LL (JFN, STS, etc setup at .MTOPR entry)
   772					; T2/ ptr to arg block:
   773					;	0 - size in words (including this one)
   774					;	1 .SHTTY - terminal ident
   775					;	2 .SHESC - flags,,escape char
   776					; returns with line connected to LL, JFN unchanged
   777
   778	000473'02  265 16 0 00 000000*	NTSNH:	SAVEAC <Q1>
   779	000474'02  256 04 0 00 007261'		UMOVE Q1,T3		;GET ARG PTR
   780	000475'02  256 04 0 00 007262'		UMOVE T1,.SHTTY(Q1)
   781						CALL [	SAVEAC <JFN,STS,DEV> ;KEEP THESE FOR ORIGINAL JFN
   782	000476'02  260 17 0 00 007273'			CALLRET CHKTTM]	;GET LINE NUMBER IN T2
   783	000477'02  263 17 0 00 000000 		 RETBAD()
   784	000500'02  200 01 0 11 000455*		MOVE T1,FILLLB(JFN)
   785	000501'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK LL
   786	000502'02  256 04 0 00 007301'		UMOVE T3,.SHESC(Q1)	;GET ESC CHAR AND FLAGS
   787	000503'02  260 17 0 00 000000*		CALL TTSETH
   788	000504'02  263 17 0 00 000000 		 RETBAD()
   789	000505'02  254 00 0 00 000472*		RETSKP
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 14
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Routines

   790
   791					;SET INTERRUPT CHANNEL NUMBERS
   792
   793	000506'02  265 16 0 00 000473*	MTASGN:	ACVAR <W1>		;GET A WORK REG
   794	000507'02  256 04 0 00 007261'		UMOVE W1,3		;GET ARGUMENT
   795	000510'02  135 02 0 00 007302'		LOAD T2,MO%CDN,W1	;GET CONNECT INTERRUPT
   796	000511'02  260 17 0 00 002616'		CALL MTSETC		;GO SET IT
   797	000512'02  254 00 0 00 000523'		 JRST NTMERR		;BAD
   798	000513'02  135 02 0 00 007303'		LOAD T2,MO%INA,W1	;GET INT CHANNEL
   799	000514'02  260 17 0 00 002626'		CALL MTSETI		;GO DO INT CHANNEL
   800	000515'02  254 00 0 00 000523'		 JRST NTMERR		;BAD
   801	000516'02  135 02 0 00 007304'		LOAD T2,MO%DAV,W1	;GET DATA CHANNEL
   802	000517'02  260 17 0 00 002635'		CALL MTSETD		;SET IT
   803	000520'02  254 00 0 00 000523'		 JRST NTMERR		;BAD
   804	000521'02  260 17 0 00 000000#		CALL BLKULK		;FREE BLOCK
   805	000522'02  254 00 0 00 000505*		RETSKP			;AND DONE
   806
   807					; HERE ON AN ERROR SETTING THE INTERRUPT CHANNELS
   808
   809	000523'02  250 01 0 11 000500*	NTMERR:	EXCH T1,FILLLB(JFN)	;SAVE ERROR CODE, GET LL BLOCK ADDRESS
   810	000524'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK THE BLOCK
   811	000525'02  250 01 0 11 000523*		EXCH T1,FILLLB(JFN)	;RESTORE LL BLOCK ADDRESS, GET ERROR CODE
   812	000526'02  263 17 0 00 000000 		RETBAD ()		;FAIL
   813
   814						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 15
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Routines

   815					;READ LINK STATUS
   816
   817	000527'02  260 17 0 00 002504'	NTSTS:	CALL RDSTS		;GO GET THE STATUS
   818	000530'02  256 04 0 00 007305'		UMOVEM T3,3		;RETURN RESULT
   819	000531'02  260 17 0 00 000000#		CALL BLKULK		;FREE BLOCK
   820	000532'02  254 00 0 00 000522*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 16
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Routines

   821
   822					;UNDO OUTPUT
   823
   824	000533'02  626 10 0 00 010000 	NETUOU::TQZN <FILOUP>		;NOW DOING OUTPUT?
   825	000534'02  263 17 0 00 000000 		RET			;NO. ALL DONE
   826	000535'02  200 01 0 11 000525*		MOVE T1,FILLLB(JFN)	;GET LL BLOCK
   827	000536'02  260 17 0 00 001337'		CALL SKPFLO		;IS FLOW FROM THE FILE-SYSTEM ?
   828	000537'02  263 17 0 00 000000 		 RET			;NO. DONE
   829	000540'02  200 01 0 11 000000*		MOVE T1,FILCNT(JFN)	;GET COUNT
   830	000541'02  335 00 0 00 000001 		SKIPGE T1
   831	000542'02  402 00 0 00 000001 		SETZM T1		;ONLY ALLOW DOWN TO ZERO
   832	000543'02  506 01 0 11 000116*		HRLM T1,FILBCT(JFN)	;STORE NEW COUNT
   833	000544'02  200 01 0 11 000000*		MOVE T1,FILBYT(JFN)	;GET BYTE POINTER
   834	000545'02  202 01 0 11 000467*		MOVEM T1,FILBFO(JFN)	;SAVE IT
   835	000546'02  263 17 0 00 000000 		RET			;DONE
   836
   837					;UNDO INPUT
   838
   839	000547'02  626 10 0 00 020000 	NETUIN::TQZN <FILINP>		;NOW DOING INPUT?
   840	000550'02  263 17 0 00 000000 		RET			;NO. ALL DONE
   841	000551'02  200 01 0 11 000535*		MOVE T1,FILLLB(JFN)	;GET LL BLOCK
   842	000552'02  260 17 0 00 001343'		CALL SKPFLI		;IS FLOW TO THE FILE-SYSTEM ?
   843	000553'02  263 17 0 00 000000 		 RET			;NO. ALL DONE
   844	000554'02  200 01 0 11 000540*		MOVE T1,FILCNT(JFN)	;GET COUNT
   845	000555'02  335 00 0 00 000001 		SKIPGE T1		;VALID COUNT?
   846	000556'02  402 00 0 00 000001 		SETZM T1		;ONLLY ALLOW DOWN TO ZERO
   847	000557'02  542 01 0 11 000543*		HRRM T1,FILBCT(JFN)	;SAVE IT
   848	000560'02  200 01 0 11 000544*		MOVE T1,FILBYT(JFN)	;GET BYTE POINTER
   849	000561'02  202 01 0 11 000470*		MOVEM T1,FILBFI(JFN)	;SAVE IT
   850	000562'02  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 17
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's.

   851					SUBTTL	Sequential I/O JSYS's.
   852
   853					;SEQUENTIAL OUTPUT.
   854
   855	000563'02  265 16 0 00 000000*	NETSQO:	ASUBR <NETCHR>		;SAVE THE CHARACTER
   856	000564'02  200 01 0 11 000551*		MOVE T1,FILLLB(JFN)	;GET LL BLOCK ADDRESS
   857	000565'02  260 17 0 00 000000#		CALL BLKLLK		;LOCK IT UP
   858						 JRST [	TQO <BLKF>	;CANNOT LOCK IT,
   859	000566'02  254 00 0 00 007251'			RETBAD() ]	; WAIT UNTIL LOCK IS FREE
   860	000567'02  260 17 0 00 001357'		CALL GETSTA		;GO GET CURRENT LOGICAL LINK STATE
   861	000570'02  254 00 1 02 004247'		JRST @SQOSTA-1(T2)	;AND DO PROPER THING
   862
   863	000571'02  375 00 0 11 000554*	NETSQ1::SOSGE FILCNT(JFN)	;HAVE ANY CHARACTERS?
   864						JRST [	CALL OUTRR	;AND SEND SOME MESSAGES
   865							 RETBAD()	;FAILED
   866							CALL NETOUP	;SET UP FOR OUTPUT
   867							MOVE T1,FILLLB(JFN) ;GET BACK LL BLOCK
   868	000572'02  254 00 0 00 007306'			JRST NETSQ1]	;AND TRY AGAIN
   869	000573'02  200 02 0 15 000001 		MOVE T2,NETCHR		;GET BYTE
   870	000574'02  136 02 0 11 000560*		IDPB T2,FILBYT(JFN)	;STASH BYTE
   871	000575'02  254 00 0 00 000000#		CALLRET BLKULK		;RELEASE BLOCK AND RETURN
   872
   873					;FORCE OUT ALL BUFFERED CHARACTERS. CALLED FROM SOUTR
   874
   875	000576'02  200 01 0 11 000564*	NETSQR:	MOVE T1,FILLLB(JFN)	;GET LL BLOCK ADDRESS
   876	000577'02  260 17 0 00 000000#		CALL BLKLLK		;LOCK IT
   877						 JRST [	TQO <BLKF>	;CANNOT LOCK IT,
   878	000600'02  254 00 0 00 007251'			RETBAD() ]	; WAIT UNTIL LOCK IS FREE
   879	000601'02  260 17 0 00 001357'		CALL GETSTA		;GO GET CURRENT LOGICAL LINK STATE
   880	000602'02  254 00 1 02 004260'		JRST @SQOOTR-1(T2)	;DO WORK
   881
   882	000603'02  260 17 0 00 001361'	NETSR1::CALL SETEOM		;NOTE THAT NEXT OUTPUT IS AN ENTIRE MESSAGE
   883	000604'02  260 17 0 00 003505'		CALL OUTRR		;DO THE WORK
   884	000605'02  263 17 0 00 000000 		 RETBAD()		;FAILED
   885	000606'02  200 01 0 11 000576*		MOVE T1,FILLLB(JFN)	;GET BACK LL BLOCK
   886	000607'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK BLOCK
   887	000610'02  254 00 0 00 000532*		RETSKP			;AND RETURN GOOD
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 18
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

   888					SUBTTL	NSP Initialization
   889
   890
   891					;NAMINI INITIALIZES NODE NAME TO "TOPS20"
   892
   893						RESCD
   894
   895	000000'01  120 01 0 00 002147'	NAMINI::DMOVE T1,[ASCIZ /TOPS20/] ;GET OUR DEFAULT NODE NAME
   896	000001'01  124 01 0 00 000000*		DMOVEM T1,OURNAM	;SET IT (ASSUME SETSPD HASN'T RUN YET!)
   897	000002'01  201 01 0 00 000006 		MOVEI T1,6		;COUNT OF CHARS IN "OURNAM"
   898	000003'01  202 01 0 00 000000*		MOVEM T1,OURCNT		;STORE IT (OURNAM COPIED TO LLSR EVEN ON
   899									;NON-DECNET SYSTEMS, AND .SJLL,
   900									;.JILLO REFERENCE IT!)
   901	000004'01  201 01 0 00 000000*		MOVEI T1,NODNUM		;GET OUR DEFAULT NODE NUMBER
   902	000005'01  202 01 0 00 000000*		MOVEM T1,OURNUM		;SET IT
   903	000006'01  263 17 0 00 000000 		RET
   904
   905					;ROUTINE TO INIT NETWORK DATA BASES,ETC.
   906
   907						SWAPCD			;SWAPPABLE
   908
   909	000611'02  476 00 0 00 000000*	NSPINI::UNLOCK LLLLCK		;UNLOCK LOCK
   910	000612'02  476 00 0 00 000000*		UNLOCK OUTLOK		;INITIALIZE LOCK ON BACKGROUND TASK'S QUEUE
   911	000613'02  476 00 0 00 000000*		UNLOCK NODLOK		;INITIALIZE LOCK ON NODTBL
   912	000614'02  476 00 0 00 000000*		UNLOCK NMAPLK		;INIT LOCK ON NODE NAME MAPPING TABLE
   913	000615'02  200 01 0 00 007313'		MOVX T1,INIWAT		;GET TIME BEFORE BLOCKED OUTPUT RETRY
   914	000616'02  202 01 0 00 000000*		MOVEM T1,OUTIVL		;SAVE DEFAULT TIME INTERVAL
   915	000617'02  260 17 0 00 001142'		CALL OBJINI		;INIT OBJECT TABLE
   916	000620'02  260 17 0 00 001073'		CALL LLINIT		;AND INIT LL ADDRESS BIT TABLE
   917	000621'02  201 01 0 00 000400 		MOVEI T1,SEGSIZ		;GET DEFAULT SEGMENT SIZE
   918	000622'02  202 01 0 00 000000*		MOVEM T1,SEGSZ		;SET IT UP
   919	000623'02  205 01 0 00 200000 		MOVX T1,1B1		;MAKE FORK HAVE ALL CAPS
   920	000624'02  400 02 0 00 000000 		SETZ T2,
   921	000625'02  104 00 0 00 000152 		CFORK			;GET A FORK
   922						 BUG (NSPFRK,<<T1,REASON>>)
   923						  ;BUG type:    BUGHLT, SOFT
   924						  ;BUG message: NSPINI-CFORK FAILED
   925						       SALL
   926	000626'02  256 00 0 00 007314'
   927	000627'02  201 02 0 00 004430'		MOVEI T2,TSKINI		;THE STARTING ADDRESS
   928	000630'02  104 00 0 00 000312 		MSFRK			;START IT
   929	000631'02  205 02 0 00 200000 		MOVX T2,FRKRUN		;SAY FORK IS RUNNING
   930	000632'02  436 02 0 00 000000*		IORM T2,MCBDTE		;SET FLAG
   931	000633'02  260 17 0 00 000636'		CALL ININOD		;INITIALIZE KNOWN NODE TABLE
   932						 BUG(NDINIT)
   933						  ;BUG type:    BUGINF, SOFT
   934						  ;BUG message: NSP - Could not add first entry to node table
   935						       SALL
   936	000634'02  256 00 0 00 007317'
   937	000635'02  263 17 0 00 000000 		RET			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 19
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

   938					; INITIALIZE TABLE OF KNOWN NODES
   939
   940	000636'02  350 00 0 00 000107*	ININOD:	NOINT			;DO NOT PERMIT INTERRUPTS WHILE ASSIGNING SPACE
   941	000637'02  201 01 0 00 000026 		MOVX T1,MAXNOD+2	;NEED 1 WORD PER NODE PLUS FREE BLOCK HEADER
   942									;  PLUS TBLUK HEADER
   943	000640'02  260 17 0 00 000000*		CALL ASGSWP		;ALLOCATE SOME SPACE FOR NODE TABLE
   944	000641'02  254 00 0 00 007321'		 RETBAD (,<OKINT>)	;FAILED
   945	000642'02  256 00 0 00 000073*		OKINT			;PERMIT INTERRUPTS AGAIN
   946	000643'02  271 01 0 00 000001 		ADDI T1,1		;POINT PAST FREE BLOCK HEADER
   947	000644'02  202 01 0 00 000000*		MOVEM T1,NODTBL		;SAVE ADDRESS OF NODE TABLE
   948	000645'02  201 04 0 00 000024 		MOVX T4,MAXNOD		;GET MAX NUMBER OF ENTRIES IN TABLE
   949	000646'02  202 04 0 01 000000 		MOVEM T4,(T1)		;INITIALIZE TBLUK HEADER
   950	000647'02  201 01 0 00 000000*		MOVEI T1,OURNAM		;GET POINTER TO OUR NODE NAME
   951	000650'02  201 02 0 00 000000 		MOVX T2,.NDSON		;STATE IS ON
   952	000651'02  400 03 0 00 000000 		SETZ T3,		;NO NEIGHBOR NODE
   953	000652'02  260 17 0 00 000765'		CALL ADDINT		;ADD US TO THE KNOWN NODES
   954	000653'02  263 17 0 00 000000 		 RETBAD ()		;FAIL
   955	000654'02  254 00 0 00 000610*		RETSKP			;DONE, RETURN SUCCESS
   956
   957
   958
   959
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 20
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

   960					;ADDNOD - ROUTINE TO ADD A NODE TO THE TABLE OF KNOWN NODES
   961					;
   962					;ACCEPTS IN T1/	ADDRESS OF ASCIZ NODE NAME
   963					;	    T2/	STATE OF NODE
   964					;	    T3/ POINTER TO NEARER NEIGHBOR NODE (FOR STATE OF "ON")
   965					;		CALL ADDNOD
   966					;RETURNS: +1	 FAILED
   967					;	  +2	SUCCESS, NODE ADDED IF NOT ALREADY IN TABLE
   968
   969	000655'02  265 16 0 00 000563*	ADDNOD:	ASUBR <ADNADR,ADNSTA,ADNABR,ADHLD>
   970
   971					; SEE IF NODE IS TO BE ADDED OR REMOVED FROM KNOWN NODE TABLE
   972
   973	000656'02  550 03 0 15 000002 		HRRZ T3,ADNSTA		;GET NODE STATE
   974	000657'02  306 03 0 00 000001 		CAIN T3,.NDSOF		;NODE OFF ?
   975						JRST [	CALL REMNOD	;REMOVE NODE FROM TABLE OF KNOWN NODES
   976							 RET		;FAILURE - RETURN
   977	000660'02  254 00 0 00 007323'			JRST ADDTEL]	;NOTIFY INTERESTED USERS THAT TOPOLOGY CHANGED
   978
   979					; CHECK TO SEE IF THE NODE IS ALREADY IN THE TABLE
   980
   981	000661'02  350 00 0 00 000636*		NOINT			;DO NOT PERMINT INTERRUPTS WITH TABLE LOCKED
   982	000662'02  352 00 0 00 000613*		LOCK NODLOK		;LOCK THE TABLE
   983	000663'02  265 16 0 00 000000*
   984	000664'02  550 02 0 15 000001 		HRRZ T2,ADNADR		;GET ADDRESS OF NODE NAME STRING
   985	000665'02  505 02 0 00 440700 		HRLI T2,(POINT 7,)	;FORM POINTER TO NODE NAME STRING
   986	000666'02  200 01 0 00 000644*		MOVE T1,NODTBL		;GET ADDRESS OF NODE TABLE
   987	000667'02  104 00 0 00 000537 		TBLUK			;SEE IF THE NODE IS IN THE TABLE OF KNOWN NODES
   988						 ERJMP [UNLOCK NODLOK	;UNLOCK THE TABLE
   989							OKINT		;PERMIT INTERRUPTS AGAIN
   990	000670'02  320 16 0 00 007326'			RET]		;AND RETURN FAILURE
   991	000671'02  607 02 0 00 040000 		TXNN T2,TL%EXM		;ALREADY IN TABLE (EXACT MATCH) ?
   992	000672'02  254 00 0 00 000711'		JRST ADDIT		;NO - ADD THIS NODE NAME
   993
   994					; NODE ALREADY EXISTS. CHECK THE NEIGHBOR
   995
   996	000673'02  202 01 0 15 000004 		MOVEM T1,ADHLD		;YES - SAVE THE ENTRIES TABLE LOCATION
   997	000674'02  200 01 0 15 000003 		MOVE T1,ADNABR		;GET POINTER TO NEIGHBOR NAME
   998	000675'02  322 01 0 00 000702'		JUMPE T1,ADDND1		;IF ZERO => NO NEIGHBOR
   999	000676'02  260 17 0 00 001064'		CALL NABROK		;CHECK FOR EXISTENCE OF NEIGHBOR
  1000						 JRST [	UNLOCK NODLOK	;NONEXISTANT NEIGHBOR - ERROR
  1001							OKINT		;ALLOW INTERRUPTS
  1002	000677'02  254 00 0 00 007326'			RET]		;ERROR RETURN
  1003	000700'02  200 02 0 15 000004 		MOVE T2,ADHLD		;GET NODE ADDRESS
  1004	000701'02  554 01 0 01 000000 		HLRZ T1,(T1)		;GET ADDRESS OF NEIGHBOR NAME
  1005	000702'02  542 01 0 02 000000 	ADDND1:	HRRM T1,(T2)		;ADD NEIGHBOR NAME TO NODE TABLE
  1006
  1007					; SINCE NODE WAS ALREADY IN TABLE WE CAN FREE THE NAME STRINGS
  1008
  1009	000703'02  550 01 0 15 000001 		HRRZ T1,ADNADR		;GET ADDRESS OF STRINGS
  1010	000704'02  370 00 0 00 000001 		SOS T1			;POINT TO START OF BLOCK
  1011	000705'02  260 17 0 00 000000*		CALL RELMES		;FREE THE SPACE
  1012	000706'02  476 00 0 00 000662*		UNLOCK	NODLOK		;UNLOCK THE NODE TABLE
  1013	000707'02  256 00 0 00 000642*		OKINT			;ALLOW INTERRUPTS
  1014	000710'02  254 00 0 00 000654*		RETSKP
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 20-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

  1015
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 21
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

  1016					; ADD THE NODE TO THE TABLE OF KNOWN NODES
  1017
  1018	000711'02  200 01 0 15 000003 	ADDIT:	MOVE T1,ADNABR		;GET ADDRESS OF NEIGHBOR NAME STRING
  1019	000712'02  322 01 0 00 000716'		JUMPE T1,ADDIT1		;IF ZERO => NO NEIGHBOR
  1020	000713'02  260 17 0 00 001064'		CALL NABROK		;CHECK FOR IT'S EXISTENCE
  1021						 JRST [	UNLOCK NODLOK	;UNLOCK THE NODE TABLE
  1022							OKINT		;ALLOW INTERRUPTS
  1023	000714'02  254 00 0 00 007326'			RET]
  1024	000715'02  554 01 0 01 000000 		HLRZ T1,(T1)		;GET ADDRESS OF NEIGHBOR NAME
  1025	000716'02  504 02 0 15 000001 	ADDIT1:	HRL T2,ADNADR		;GET ADDRESS OF NODE NAME STRING
  1026	000717'02  540 02 0 00 000001 		HRR T2,T1		;GET NODES NEIGHBOR NAME
  1027	000720'02  200 01 0 00 000666*		MOVE T1,NODTBL		;GET ADDRESS OF NODE TABLE
  1028	000721'02  104 00 0 00 000536 		TBADD			;ADD THE NODE TO TABLE OF KNOWN NODES
  1029						 ERJMP [UNLOCK NODLOK	;UNLOCK THE TABLE
  1030							OKINT		;PERMIT INTERRUPTS AGAIN
  1031	000722'02  320 16 0 00 007326'			RET]		;AND RETURN FAILURE
  1032	000723'02  476 00 0 00 000706*		UNLOCK NODLOK		;UNLOCK THE TABLE
  1033	000724'02  256 00 0 00 000707*		OKINT			;PERMIT INTERRUPTS AGAIN
  1034
  1035					;HERE TO NOTIFY INTERESTED USERS THAT TOPOLGY HAS CHANGED
  1036
  1037	000725'02  202 05 0 15 000001 	ADDTEL:	MOVEM Q1,ADNADR		;SAVE Q1
  1038	000726'02  201 05 0 00 000000*		MOVEI Q1,NTCTAB		;START LOOKING AT TOP OF TABLE
  1039	000727'02  336 00 0 05 000000 	NTCIN1:	SKIPN (Q1)		;IS THERE AN ENTRY?
  1040	000730'02  254 00 0 00 000734'		JRST NTCIN2		;NO. KEEP LOOKING.
  1041	000731'02  554 02 0 05 000000 		LOAD T2,NTCFRK,(Q1)	;GET FORK NUMBER
  1042	000732'02  550 01 0 05 000000 		LOAD T1,NTCCHN,(Q1)	;GET THE CHANNEL NUMBER
  1043	000733'02  260 17 0 00 000000*		CALL PSIRQ		;INTERRUPT USER
  1044	000734'02  302 05 0 00 000000#	NTCIN2:	CAIE Q1,NTCTAB+<NTCMAX-1>	;DID WE SEARCH WHOLE TABLE?
  1045	000735'02  344 05 0 00 000727'		AOJA Q1,NTCIN1		;NO - CHECK NEXT ENTRY
  1046	000736'02  200 05 0 15 000001 		MOVE Q1,ADNADR		;RESTORE Q1
  1047	000737'02  254 00 0 00 000710*		RETSKP
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 22
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

  1048					;REMNOD - ROUTINE TO REMOVE A NODE FROM THE TABLE OF KNOWN NODES
  1049					;
  1050					;ACCEPTS IN T1/	POINTER TO ASCIZ NODE NAME
  1051					;		CALL REMNOD
  1052					;RETURNS: +1	 FAILED
  1053					;	  +2	SUCCESS
  1054
  1055	000740'02  265 16 0 00 000655*	REMNOD:	ASUBR <RMNNAM>
  1056
  1057	000741'02  350 00 0 00 000661*		NOINT			;DO NOT PERMINT INTERRUPTS WITH TABLE LOCKED
  1058	000742'02  352 00 0 00 000723*		LOCK NODLOK		;LOCK THE TABLE
  1059	000743'02  265 16 0 00 000663*
  1060	000744'02  200 01 0 00 000720*		MOVE T1,NODTBL		;GET ADR OF HEADER OF KNOWN NODE TABLE
  1061	000745'02  200 02 0 15 000001 		MOVE T2,RMNNAM		;GET NAME OF NODE
  1062	000746'02  104 00 0 00 000537 		TBLUK			;FIND THE NAME IN THE KNOWN NODE TABLE
  1063	000747'02  320 16 0 00 000762'		 ERJMP REMNDX		;FAILED
  1064	000750'02  607 02 0 00 040000 		TXNN T2,TL%EXM		;IN TABLE (EXACT MATCH) ?
  1065	000751'02  254 00 0 00 000762'		JRST REMNDX		;NO - FAIL
  1066	000752'02  260 17 0 00 001023'		CALL NODDEL		;YES - DELETE NODE AND REST OF TREE
  1067	000753'02  254 00 0 00 000762'		 JRST REMNDX		;ERROR - FAIL
  1068	000754'02  200 01 0 15 000001 		MOVE T1,RMNNAM		;FREE THE BUFFER
  1069	000755'02  370 00 0 00 000001 		SOS T1			;BACK-UP TO HEADER WORD
  1070	000756'02  260 17 0 00 000705*		CALL RELMES
  1071	000757'02  476 00 0 00 000742*		UNLOCK NODLOK		;UNLOCK THE TABLE
  1072	000760'02  256 00 0 00 000724*		OKINT			;PERMIT INTERRUPTS AGAIN
  1073	000761'02  254 00 0 00 000737*		RETSKP			;DONE, RETURN SUCCESS
  1074
  1075
  1076					; HERE ON AN ERROR
  1077
  1078	000762'02  476 00 0 00 000757*	REMNDX:	UNLOCK NODLOK		;UNLOCK THE DATABASE
  1079	000763'02  256 00 0 00 000760*		OKINT			;PERMIT INTERRUPTS AGAIN
  1080	000764'02  263 17 0 00 000000 		RET			;FAIL
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 23
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

  1081					;ADDINT - ROUTINE TO ADD A NODE TO KNOWN NODE TABLE, NAME STRING ALREADY
  1082					;	    IN MONITOR.
  1083					;
  1084					;ACCEPTS IN T1/	POINTER TO NODE NAME STRING
  1085					;	    T2/	NODE STATE
  1086					;	    T3/ POINTER TO NEARER NEIGHBOR NODE (OR ZERO)
  1087					;		CALL ADDINT
  1088					;RETURNS: +1	 FAILED
  1089					;	  +2	SUCCESS
  1090
  1091	000765'02  265 16 0 00 000740*	ADDINT:	ASUBR <ADIPTR,ADISTA,ADINBR,ADIBLK>
  1092
  1093					; COPY THE STRING INTO A FREE BLOCK
  1094
  1095	000766'02  350 00 0 00 000741*		NOINT			;DO NOT PERMIT INTERRUPTS WHILE ASSIGNING SPACE
  1096	000767'02  201 01 0 00 000006 		MOVX T1,2*<<NODMAX+12>/5> ;ASSIGN SPACE FOR NODE NAMES
  1097	000770'02  260 17 0 00 000640*		CALL ASGSWP		;GET SOME SPACE
  1098	000771'02  254 00 0 00 007321'		 RETBAD (,<OKINT>)	;FAILED
  1099	000772'02  271 01 0 00 000001 		ADDI T1,1		;POINT TO WHERE STRING GOES
  1100	000773'02  202 01 0 15 000004 		MOVEM T1,ADIBLK		;SAVE DESTINATION ADDRESS OF STRING
  1101	000774'02  200 02 0 15 000001 		MOVE T2,ADIPTR		;GET SOURCE STRING ADDRESS
  1102	000775'02  201 03 0 00 000006 		MOVX T3,NODMAX		;MAX SIX CHARS
  1103	000776'02  260 17 0 00 001260'		CALL MOVSTR		;MOVE STRING INTO FREE BLOCK
  1104	000777'02  200 01 0 15 000004 		MOVE T1,ADIBLK		;NOW MOVE THE NEIGHBOR NAME
  1105	001000'02  271 01 0 00 000003 		ADDI T1,<NODMAX+12>/5	;POINT TO SECOND SLOT
  1106	001001'02  201 03 0 00 000006 		MOVX T3,NODMAX		;MAXIMUM NODE NAME
  1107	001002'02  332 02 0 15 000003 		SKIPE T2,ADINBR		;COPY NEIGHBOR (IF THERE)
  1108	001003'02  260 17 0 00 001260'		CALL MOVSTR		;MOVE NEIGHBOR NAME
  1109
  1110					; ADD NODE TO TABLE OF KNOWN NODES
  1111
  1112	001004'02  200 01 0 15 000004 		MOVE T1,ADIBLK		;GET ADDRESS OF NODE NAME STRING
  1113	001005'02  200 02 0 15 000002 		MOVE T2,ADISTA		;GET NODE STATE
  1114	001006'02  332 03 0 15 000003 		SKIPE T3,ADINBR		;PASS T3=0 IF NO NEIGHBOR
  1115	001007'02  201 03 0 01 000003 		MOVEI T3,<<NODMAX+12>/5>(T1)	;POINT TO NEIGHBOR NAME
  1116	001010'02  260 17 0 00 000655'		CALL ADDNOD		;ADD NODE TO KNOWN NODE TABLE
  1117	001011'02  254 00 0 00 001014'		 JRST ADIN10		;FAILED, CLEAN UP
  1118	001012'02  256 00 0 00 000763*		OKINT			;PERMIT INTERRUPTS AGAIN
  1119	001013'02  254 00 0 00 000761*		RETSKP			;DONE, RETURN SUCCESS
  1120
  1121					; HERE ON AN ERROR
  1122
  1123	001014'02  202 01 0 15 000002 	ADIN10:	MOVEM T1,ADISTA		;SAVE ERROR CODE
  1124	001015'02  200 01 0 15 000004 		MOVE T1,ADIBLK 		;ADDRESS OF BLOCK
  1125	001016'02  370 00 0 00 000001 		SOS T1			;POINT TO HEADER
  1126	001017'02  260 17 0 00 000756*		CALL RELMES		;RELEASE THE BLOCK
  1127	001020'02  256 00 0 00 001012*		OKINT			;PERMIT INTERRUPTS AGAIN
  1128	001021'02  200 01 0 15 000002 		MOVE T1,ADISTA		;RESTORE ERROR CODE
  1129	001022'02  263 17 0 00 000000 		RETBAD () 		;FAIL
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 24
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

  1130					;NODDEL - ROUTINE TO DELETE A GIVEN ENTRY FROM THE NODE TABLE
  1131
  1132					;ACCEPTS:	T1/ ADDRESS OF ENTRY IN NODE TABLE (WITH NODTBL LOCKED)
  1133
  1134					;RETURNS:	+1,ALWAYS, ALL AC'S PRESERVED
  1135
  1136					;*** N.B. *** THIS ROUTINE IS RECURSIVE. ***
  1137
  1138					;NODTBL IS REALLY A TREE OF NODES.  EACH NODE HAS THE ADDRESS OF A NEARER 
  1139					;NEIGHBOR (I.E. NEARER TO US THAN IT).  WHEN REMOVING A NODE WE MUST REMOVE
  1140					;ALL THE NODES THAT HAVE IT AS A NEIGHBOR.  THINGS BECOME RECURSIVE BECAUSE
  1141					;WHEN WE REMOVE THE SECONDARY NODES THEY COULD ALSO BE NEIGHBORS TO OTHER
  1142					;NODES.
  1143
  1144	001023'02  265 16 0 00 000000*	NODDEL:	SAVET
  1145	001024'02  265 16 0 00 000370*		STKVAR <DELHLD>
  1146	001025'02  000001  000001
  1147	001026'02  200 03 0 01 000000 		MOVE T3,(T1)		;GET ENTRY WE ARE DELETING
  1148	001027'02  202 03 0 17 777776 		MOVEM T3,DELHLD		;SAVE NODTBL POINTER
  1149	001030'02  554 03 0 01 000000 		HLRZ T3,(T1)		;GET ADDRESS OF NODE NAME
  1150	001031'02  200 01 0 00 000744*		MOVE T1,NODTBL		;GET ADDRESS OF NODE TABLE
  1151	001032'02  200 04 0 00 001031*		MOVE T4,NODTBL		;HOLD FOR LOOP DECISION
  1152
  1153					; FIND ANY ENTRIES HAVING CURRENT NODE AS NEAREST NEIGHBOR
  1154
  1155	001033'02  350 00 0 00 000001 	NODDL1:	AOS T1			;POINT TO NEXT ENTRY
  1156	001034'02  550 02 0 01 000000 		HRRZ T2,0(T1)		;GET THE NEIGHBOR ADDRESS
  1157	001035'02  316 02 0 00 000003 		CAMN T2,T3		;IS THE CURRENT NODE THE NEIGHBOR
  1158						JRST [	HLRZ T2,0(T1)	;YES - IS THIS A POINTING TO SELF CASE?
  1159							CAMN T2,T3	;???
  1160							JRST .+1	;YES - THEN DO NOTHING
  1161							CALL NODDEL	;YES - REMOVE THAT NODE ***RECURSION***
  1162							 RETBAD		;ERROR - FAIL
  1163							MOVE T1,NODTBL	;START AT TOP OF TABLE
  1164	001036'02  254 00 0 00 007331'			JRST NODDL1]	;SEARCH WHOLE TABLE AGAIN
  1165	001037'02  554 02 0 04 000000 		HLRZ T2,0(T4)		;GET CURRENT LENGTH OF TABLE
  1166	001040'02  270 02 0 00 000004 		ADD T2,T4		;T2<= ADDRESS OF LAST ENTRY
  1167	001041'02  311 02 0 00 000001 		CAML T2,T1		;ARE WE FINISHED
  1168	001042'02  254 00 0 00 001033'		JRST NODDL1		;NO - KEEP LOOKING
  1169						;...
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 25
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

  1170						;...
  1171
  1172					; HAVE CLEARED ALL ENTRIES DOWN THE TREE FROM HERE - DELETE THIS NODE
  1173
  1174	001043'02  544 01 0 04 000000 		HLR T1,(T4)		;GET COUNT OF ENTRIES
  1175	001044'02  200 02 0 17 777776 		MOVE T2,DELHLD		;LOOKING FOR THIS ENTRY
  1176	001045'02  350 00 0 00 000004 	NODDL2:	AOS T4			;BUMP TO NEXT ENTRY
  1177	001046'02  316 02 0 04 000000 		CAMN T2,(T4)		;THE ONE WE WANT?
  1178	001047'02  254 00 0 00 001053'		JRST NODDL3		;YES - DELETE IT
  1179	001050'02  367 01 0 00 001045'		SOJG T1,NODDL2		;NO - KEEP LOOKING
  1180						BUG (NDBDEL)
  1181						  ;BUG type:    BUGCHK, SOFT
  1182						  ;BUG message: NSP - Error in deleting node name from table
  1183						       SALL
  1184	001051'02  256 00 0 00 007340'
  1185	001052'02  263 17 0 00 000000 		RETBAD
  1186	001053'02  200 02 0 00 000004 	NODDL3:	MOVE T2,T4		;GET THE NODE TABLE ENTRY
  1187	001054'02  554 04 0 02 000000 		HLRZ T4,(T2)		;GET ADDRESS OF FREE BLOCK HOLDING STRINGS
  1188	001055'02  200 01 0 00 001032*		MOVE T1,NODTBL		;POINT TO NODE TABLE
  1189	001056'02  104 00 0 00 000535 		TBDEL			;DELETE THE ENTRY
  1190	001057'02  320 16 0 00 007130'		 ERJMP [RETBAD]		;ERROR - HANDLE
  1191	001060'02  200 01 0 00 000004 		MOVE T1,T4		;RELEASE THE STRING BLOCK
  1192	001061'02  370 00 0 00 000001 		SOS T1			;POINT TO FIRST WORD OF FREE BLOCK
  1193	001062'02  260 17 0 00 001017*		CALL RELMES		;FREE IT
  1194	001063'02  254 00 0 00 001013*		RETSKP
  1195
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 26
NSPSRV	MAC	 6-Apr-82 10:58		NSP Initialization

  1196					;NABROK - ROUTINE TO CHECK FOR EXISTENCE OF A NODE
  1197
  1198					;ACCEPTS:	T1/POINTER TO NODE STRING
  1199
  1200					;RETURNS:	+1,NODE DOES NOT EXIST
  1201					;		+2,NODE EXISTS
  1202					;			T1/ADDRESS OF NODTBL ENTRY
  1203
  1204	001064'02  200 02 0 00 000001 	NABROK:	MOVE T2,T1		;MOVE POINTER TO NODE NAME
  1205	001065'02  200 01 0 00 001055*		MOVE T1,NODTBL		;POINT TO TABLE OF NODES
  1206	001066'02  104 00 0 00 000537 		TBLUK			;IS IT THERE
  1207	001067'02  320 16 0 00 007130'		 ERJMP [RET]		;ERROR  - RETURN
  1208	001070'02  607 02 0 00 040000 		TXNN T2,TL%EXM		;EXACT MATCH?
  1209	001071'02  263 17 0 00 000000 		RET			;NO - INDICATE NODE DOES NOT EXIST
  1210	001072'02  254 00 0 00 001063*		RETSKP			;YES - INDICATE EXISTENCE
  1211
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 27
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1212					SUBTTL	Routines to Manipulate Logical Link Blocks and Object Tables
  1213
  1214						RESCD			;CALLED ONLY IN PROCESS CONTEXT
  1215
  1216					;ROUTINES USED TO LOCK AND UNLOCK LL TREE
  1217
  1218	000007'01			LOKLL::
  1219	000007'01  336 00 0 00 000000*		SKIPN INSKED		;SKED LEVEL?
  1220	000010'01  350 00 0 00 000000*		NOINT			;PREVENT INTS
  1221	000011'01  352 00 0 00 000000*		LOCK LLLLCK,<CALL LCKTST> ;LOCK UP THE TREE
  1222	000012'01  260 17 0 00 000000*
  1223	000013'01  263 17 0 00 000000 		RET			;DONE
  1224
  1225	000014'01  335 00 0 00 000011*	ULOKLL::SKIPGE LLLLCK		;NOW LOCKED?
  1226						JRST [	BUG(LLLKBD)	;NO, CONFUSION
  1227						  ;BUG type:    BUGCHK, SOFT
  1228						  ;BUG message: UNLOCK LL LOCK WHEN NOT LOCKED
  1229						       SALL
  1230	000015'01  254 00 0 00 002153'			RET]
  1231	000016'01  476 00 0 00 000014*		UNLOCK LLLLCK
  1232	000017'01  336 00 0 00 000007*		SKIPN INSKED
  1233	000020'01  256 00 0 00 000000*		OKINT
  1234	000021'01  263 17 0 00 000000 		RET
  1235
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 28
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1236					;ROUTINES TO LOCK AND UNLOCK INDIVIDUAL LL BLOCKS
  1237
  1238					;LOCK A BLOCK.
  1239					;	T1/ BLOCK ADDRESS
  1240					;RETURNS:	+1 FAILED. BLOCK ROUTINE IN T1
  1241					;		+2 SUCCESS
  1242
  1243					;ENTRY POINT IF LLLLCK NOT LOCKED
  1244
  1245	000022'01  350 00 0 00 000010*	BLKLLK::NOINT
  1246						LOCK LLLLCK,<JRST [
  1247							MOVEI T1,LLLCKT	;BUSY, RETURN TEST
  1248	000023'01  352 00 0 00 000016*			RET]>
  1249	000024'01  254 00 0 00 002155'
  1250	000025'01  260 17 0 00 000031'		CALL BLKLOK
  1251	000026'01  254 00 0 00 000014'		 CALLRET ULOKLL		;UNLOCK AND GIVE UP
  1252	000027'01  260 17 0 00 000014'		CALL ULOKLL
  1253	000030'01  254 00 0 00 000000*		RETSKP
  1254
  1255					;ENTRY POINT IF LLLLCK ALREADY LOCKED
  1256
  1257	000031'01  265 16 0 00 000000*	BLKLOK::SAVEAC <T4>		;PRESERVE TEMP AC
  1258					;	SKIPGE LLLLCK		;*** TEMP - ENSURE OUTER LOCK ALREADY SET ***
  1259					;	JSR BUGCHK
  1260					;	SKIPE INSKED		;MAKE SURE ONLY PROPER SCHEDULER CONTEXT
  1261					;	SKIPGE FORKX
  1262					;	SKIPA
  1263					;	JSR BUGCHK		;INSKED WITH FORKX NOT -1 CAUSES CONFUSION
  1264	000032'01  200 16 0 01 000001 		JE LLRCT,(T1),BLKLK0	;IF FIRST LOCKER, NO CHECKS NEEDED
  1265	000033'01  607 16 0 00 070000 
  1266	000034'01  254 00 0 00 000040'
  1267	000035'01  550 04 0 01 000022 		LOAD T4,LLRFK,(T1)	;GET PREVIOUS LOCKER'S ID
  1268	000036'01  312 04 0 00 000000*		CAME T4,FORKX		;WERE WE PREVIOUS LOCKER
  1269	000037'01  254 00 0 00 000047'		JRST BLKLK1		;NO, FAIL RETURNING SCHED TEST
  1270	000040'01  205 16 0 00 010000 	BLKLK0:	INCR LLRCT,(T1)		;OK TO LOCK (EITHER FIRST LOCKER OR LAST WAS US)
  1271	000041'01  272 16 0 01 000001 
  1272	000042'01  200 04 0 00 000036*		MOVE T4,FORKX		;GET OUR FORK ID
  1273	000043'01  542 04 0 01 000022 		STOR T4,LLRFK,(T1)	;STORE OUR ID AS LAST LOCKER
  1274	000044'01  336 00 0 00 000017*		SKIPN INSKED
  1275	000045'01  350 00 0 00 000022*		NOINT			;PREVENT INTERRUPT WHILE BLOCK LOCKED
  1276	000046'01  254 00 0 00 000030*		RETSKP			;DONE, BLOCK NOW LOCKED
  1277
  1278					; HERE IF LOCK WILL NOT BE PERMITTED - RETURN A SCHEDULER TEST
  1279
  1280	000047'01  550 01 0 01 000002 	BLKLK1:	LOAD T1,LLLNK,(T1)	;GET LL ADDRESS
  1281	000050'01  507 00 0 00 000001 		HRLS T1			;TO THE LH
  1282	000051'01  541 01 0 00 000326'		HRRI T1,CHKLOK		;THE TEST ROUTINE
  1283	000052'01  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 29
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1284
  1285					;UNLOCK A BLOCK
  1286					;	T1/ BLOCK ADDRESS
  1287					;RETURNS:	+1 ALWAYS
  1288
  1289	000053'01  265 16 0 00 000000*	BLKULK::SAVEAC <T2>		;BE TRANSPARENT
  1290	000054'01  135 02 0 00 002157'		LOAD T2,LLRCT,(T1)	;GET LOCK COUNT
  1291	000055'01  302 02 0 00 000001 		CAIE T2,1		;OUTERMOST?
  1292						JRST [	DECR LLRCT,(T1)	;NO, JUST DECREMENT
  1293	000056'01  254 00 0 00 002160'			JRST BLKUK1]
  1294	000057'01  513 00 0 01 000022 		SETZRO LLRFK,(T1)	;LOCK BECOMING CLEAR, CLEAR LAST FORK
  1295	000060'01  205 16 0 00 070000 		SETZRO LLRCT,(T1)
  1296	000061'01  412 16 0 01 000001 
  1297	000062'01  336 00 0 00 000044*	BLKUK1:	SKIPN INSKED
  1298	000063'01  256 00 0 00 000020*		OKINT
  1299	000064'01  263 17 0 00 000000 		RET
  1300
  1301					;SCHED TEST FOR ABOVE
  1302
  1303	000065'01  331 00 0 00 000023*	LLLCKT:	SKIPL LLLLCK
  1304	000066'01  254 00 0 04 000000 		JRST 0(T4)		;STILL BUSY
  1305	000067'01  254 00 0 04 000001 		JRST 1(T4)		;FREE
  1306
  1307						SWAPCD
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 30
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1308
  1309					;ROUTINE TO INIT LL ADDRESS BIT TABLE. CALLED AT SYSTEM STARTUP
  1310
  1311	001073'02  265 16 0 00 000506*	LLINIT:	ACVAR <W1>		;GET A WORK REGISTER
  1312	001074'02  205 05 0 00 000000#		MOVSI W1,-MAXLNK	; GET MAX LINK VALUE
  1313	001075'02  350 00 0 00 000005 		AOS W1			;SKIP ENTRY 0
  1314	001076'02  550 01 0 00 000005 	LLINI1:	HRRZ T1,W1		;GET LINK ADDRESS
  1315	001077'02  260 17 0 00 001272'		CALL FRELNK		;FREE LINK #
  1316	001100'02  253 05 0 00 001076'		AOBJN W1,LLINI1		;DO 'EM ALL
  1317	001101'02  263 17 0 00 000000 		RET			;AND DONE
  1318
  1319						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 31
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1320					;LOKPIP - ROUTINE TO LOCK AN ATS DATA DATA OR CONTROL PIPE
  1321					;
  1322					;ACCEPTS IN T3/	ATS PIPE IDENTIFIER
  1323					;		CALL LOKPIP
  1324					;RETURNS: +1	 FAILED, SCHEDULER TEST IN T1
  1325					;	  +2	SUCCESS, PROCESS NOINT AND PIPE LOCKED
  1326
  1327	001102'02  265 16 0 00 000332*	LOKPIP::TRVAR <LKPCOD,LKPLLB>
  1328	001103'02  000002  000002
  1329	001104'02  202 03 0 15 000001 		MOVEM T3,LKPCOD		;SAVE ATS ID
  1330
  1331					; GET THE ADDRESS OF THE LOGICAL LINK BLOCK
  1332
  1333	001105'02  260 17 0 00 000000#		LLLOCK			;LOCK THE LOGICAL LINK TREE
  1334	001106'02  201 01 0 00 001120'		MOVEI T1,CHKPIP		;GET COROUTINE TO FIND ATS PIPE
  1335	001107'02  476 00 0 00 000002 		SETOM T2		;ANY LINK
  1336	001110'02  260 17 0 00 001176'		CALL OBJSRC		;GO FIND BLOCK
  1337						 JRST [	LLLULK		;DOES NOT EXIST
  1338							BUG(NSPPWA)
  1339						  ;BUG type:    BUGCHK, HARD
  1340						  ;BUG message: LOKPIP - Pipe went away
  1341						       SALL
  1342	001111'02  254 00 0 00 007344'			RET ]		;UNLOCK THE TREE AND RETURN FAILURE
  1343	001112'02  202 01 0 15 000002 		MOVEM T1,LKPLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  1344
  1345					; LOCK THE BLOCK
  1346
  1347	001113'02  200 01 0 15 000002 		MOVE T1,LKPLLB		;GET LOGICAL LINK BLOCK ADDRESS
  1348	001114'02  260 17 0 00 000000#		CALL BLKLOK		;GO LOCK THE LOGICAL LINK BLOCK
  1349						 JRST [	LLLULK		;CANNOT LOCK IT NOW, UNLOCK THE TREE
  1350	001115'02  254 00 0 00 007347'			RET ]		;RETURN SCHED TEST
  1351	001116'02  260 17 0 00 000000#		LLLULK			;BLOCK IS NOW RESERVED. UNLOCK THE TREE
  1352	001117'02  254 00 0 00 001072*		RETSKP			;DONE, RETURN WITH PIPE LOCKED
  1353
  1354
  1355
  1356					;CHKPIP - COROUTINE TO FIND ATS LINK BLOCK WITH GIVEN ATS DATA PIPE
  1357					;
  1358					;ACCEPTS IN TRVAR LKPCOD/ ATS ID FOR PIPE
  1359					;	    T1/	ADDRESS OF LINK BLOCK TO CHECK
  1360					;		CALL CHKPIP
  1361					;RETURNS: +1	 NOT DESIRED BLOCK
  1362					;	  +2	SUCCESS, FOUND BLOCK WITH REQUESTED ID
  1363
  1364	001120'02  265 16 0 00 001023*	CHKPIP:	SAVET			;PRESERVE TERMPORARY AC'S
  1365	001121'02  200 16 0 01 000002 		JE LLINT,(T1),R		;LOOK AT INTERNAL LINKS ONLY
  1366	001122'02  607 16 0 00 004000 
  1367	001123'02  254 00 0 00 000154*
  1368	001124'02  200 02 0 01 000033 		LOAD T2,LLDRV,(T1)	;GET DRIVER CORRELATION CODE
  1369	001125'02  312 02 0 15 000001 		CAME T2,LKPCOD		;DESIRED ATS ID ?
  1370	001126'02  263 17 0 00 000000 		RET			;NO, RETURN FAILURE
  1371	001127'02  254 00 0 00 001117*		RETSKP			;YES, RETURN SUCCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 32
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1372					;ULKPIP - ROUTINE TO UNLOCK AN ATS DATA OR CONTROL PIPE
  1373					;
  1374					;ACCEPTS IN T3/	ATS PIPE IDENTIFIER
  1375					;		CALL ULKPIP
  1376					;RETURNS: +1 ALWAYS, WITH PIPE UNLOCKED
  1377
  1378	001130'02  265 16 0 00 001102*	ULKPIP::TRVAR <LKPCOD>
  1379	001131'02  000001  000001
  1380	001132'02  202 03 0 15 000001 		MOVEM T3,LKPCOD		;SAVE ATS ID FOR COROUTINE
  1381	001133'02  260 17 0 00 000000#		LLLOCK			;LOCK THE LOGICAL LINK TREE
  1382	001134'02  201 01 0 00 001120'		MOVEI T1,CHKPIP		;GET COROUTINE ADDRESS
  1383	001135'02  476 00 0 00 000002 		SETOM T2		;ANY LINK
  1384	001136'02  260 17 0 00 001176'		CALL OBJSRC		;GO FIND BLOCK
  1385						 JRST [	LLLULK		;DOES NOT EXIST
  1386							BUG(NSPPHV)
  1387						  ;BUG type:    BUGCHK, HARD
  1388						  ;BUG message: ULKPIP - Pipe has vanished
  1389						       SALL
  1390	001137'02  254 00 0 00 007353'			RET ]		;UNLOCK THE TREE AND RETURN FAILURE
  1391	001140'02  260 17 0 00 000000#		LLLULK			;UNLOCK THE TREE
  1392	001141'02  254 00 0 00 000000#		CALLRET BLKULK		;UNLOCK PIPE AND RETURN
  1393
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 33
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1394					;ROUTINE TO FIND INDEX INTO LOGICAL LINK TABLES.
  1395					;ACCEPTS:	T1/ LOGICAL LINK
  1396					;		T2/ FOREIGN LINK I.D. -1 FOR ANY
  1397					;		T3/ HOST NAME STRING IF LLLKUH USED
  1398					;RETURNS:	+1 FAILED. LINK NOT FOUND
  1399					;			T1/ INSERT POINT FOR NEW ENTRY
  1400					;		+2 SUCCESS. T1/ ADDRESS OF LINK ENTRY
  1401					;			T2/ PREVIOUS NODE ADDRESS
  1402					;PRESERVES T4
  1403
  1404						RESCD			;NEEDS TO BE RESIDENT
  1405
  1406	000070'01  476 00 0 00 000003 	LLLKUP::SETOM T3		;NO HOST MATCH IF ENTERED HERE
  1407	000071'01  265 16 0 00 000031*	LLLKUH:	SAVEAC <T4>		;PRESERVE AC
  1408	000072'01  265 16 0 00 000000*		STKVAR <LASTM,LNKID,LLHO> ;REMEMBER INSERT POINT
  1409	000073'01  000003  000003
  1410	000074'01  202 03 0 17 777774 		MOVEM T3,LLHO		;SAVE HOST STRING POINTER
  1411	000075'01  402 00 0 17 777776 		SETZM LASTM		;NO INSERT FOUND YET
  1412	000076'01  202 01 0 17 777775 		MOVEM T1,LNKID		;SAVE DESIRED ADDRESS
  1413	000077'01  200 01 0 00 000000*		MOVE T1,LLHEAD		;GET HEAD OF TREE
  1414	000100'01  322 01 0 00 000122'	LLLKU1:	JUMPE T1,LLFAIL		;NO THERE. ERGO, NOT FOUND
  1415	000101'01  550 03 0 01 000002 		LOAD T3,LLLNK,(T1)	;GET THE LINK I.D.
  1416	000102'01  312 03 0 17 777775 		CAME T3,LNKID		;IS THIS IT?
  1417						JRST [	MOVEM T1,LASTM	;REMEMBER THIS AS INSERT POINT
  1418							CAMG T3,LNKID	;NEED TO GO UP OR DOWN?
  1419							JRST [	LOAD T1,LLUPL,(T1) ;GET UP POINTER
  1420								JRST LLLKU1] ;AND GO SEE ABOUT IT
  1421							LOAD T1,LLDWN,(T1) ;DOWN. GET DOWN POINTER
  1422	000103'01  254 00 0 00 002167'			JRST LLLKU1]	;AND GO SEE ABOUT IT
  1423	000104'01  321 02 0 00 000110'		JUMPL T2,LLLKU2		;IF NO HOST CHECK, FOUND IT
  1424	000105'01  135 16 0 00 002174'		OPSTR <CAME T2,>,LLHLK,(T1) ;DOES THE HOST MATCH?
  1425	000106'01  312 02 0 00 000016 
  1426	000107'01  254 00 0 00 002175'		RETBAD (NSPX2)		;NO. GIVE ERROR
  1427	000110'01  200 02 0 17 777776 	LLLKU2:	MOVE T2,LASTM		;RETURN PREVIOUS NODE
  1428	000111'01  337 00 0 17 777774 		SKIPG LLHO		;WANT HOST MATCH?
  1429	000112'01  254 00 0 00 000046*		RETSKP			;NO. ALL DONE THEN
  1430	000113'01  200 02 0 01 000014 		LOAD T2,LLHST,(T1)	;GET HOST STRING
  1431	000114'01  250 01 0 17 777774 		EXCH T1,LLHO		;SAVE LINK. GET SOURCE HOST NAME
  1432	000115'01  260 17 0 00 000000*		CALL CMPSTR		;DO COMPARE
  1433	000116'01  254 00 0 00 002175'		 RETBAD (NSPX2)		;NO MATCH
  1434	000117'01  200 01 0 17 777774 		MOVE T1,LLHO		;A MATCH. GET LINK
  1435	000120'01  200 02 0 17 777776 		MOVE T2,LASTM		;GET PREVIOUS
  1436	000121'01  254 00 0 00 000112*		RETSKP			;AND DONE
  1437
  1438					;COULDN'T FIND REQUIRED LINK. RETURN INSERT POINT
  1439
  1440	000122'01  200 01 0 17 777776 	LLFAIL:	MOVE T1,LASTM		;FOUND AN INSERT POINT?
  1441	000123'01  263 17 0 00 000000 		RET			;AND RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 34
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1442
  1443					;ALL OF THIS CODE IS UNSUITABLE FOR EXTENDED ADDRESSING. SINCE
  1444					;OBJECT NAMES CAN RESIDE IN SWAPPABLE FREE SPACE, OBJTBL
  1445					;NEEDS TO HAVE 36 BIT ADDRESSES POINTING TO THE STRINGS. ALSO,
  1446					;A REPLACEMENT FOR TBLUK IS NEEDED WHICH WILL DO LOOK UP, DELETE
  1447					;AND ADD ENTRIES TO SUCH AN "EXTENDED" TABLE. FOR THE TIME BEING,
  1448					;HOWEVER, THE CODE AS WRITTEN WILL SUFFICE.
  1449
  1450					;ROUTINE TO INITIALIZE THE OBJECT TABLE FOR THE MONITOR.
  1451
  1452						SWAPCD
  1453
  1454	001142'02  200 01 0 00 007356'	OBJINI:	MOVE T1,[OBJPRO,,OBJTBL]
  1455	001143'02  251 01 0 00 000000#		BLT T1,OBJTBL+OBJENT	;INIT THE TABLE
  1456	001144'02  263 17 0 00 000000 		RET			;AND DONE
  1457
  1458					;THIS TABLE SHOULD BE MOVED TO STG SOMEDAY*****************
  1459					;PROTOTYPE OBJECT TABLE
  1460
  1461	001145'02  000005  000000*	OBJPRO:	OBJENT,,OBJMAX
  1462	001146'02  007357'  000003		[ASCIZ /ATS/],,3
  1463	001147'02  007360'  000021		[ASCIZ /FAL/],,21
  1464	001150'02  007361'  000023		[ASCIZ /NCU/],,23
  1465	001151'02  007362'  000007		[ASCIZ /NRM/],,7
  1466	001152'02  007363'  000000		[ASCIZ /TASK/],,0
  1467		   	   000005	OBJENT==.-OBJPRO-1		;# OF ENTRIES
  1468
  1469					;ROUTINE TO LOOK UP AN OBJECT NAME IN THE SYSTEM OBJECT TABLES
  1470					;ACCEPTS:	T1/ POINTER TO TEST OBJECT NAME
  1471					;RETURNS:	+1 NOT FOUND. NO SUCH OBJECT
  1472					;		+2 OBJECT FOUND
  1473					;			T1/ OBJECT NUMBER
  1474
  1475	001153'02  265 16 0 00 000765*	OBJLOK::ASUBR <OBJPTR>		;SAVE POINTER
  1476	001154'02  200 02 0 00 000001 		MOVE T2,T1		;COPY POINTER
  1477	001155'02  200 01 0 00 007364'		MOVE T1,[OBJTBL]	;GET THE OBJECT TABLE
  1478	001156'02  104 00 0 00 000537 		TBLUK			;LOOK UP THE OBJECT
  1479	001157'02  607 02 0 00 040000 		TXNN T2,TL%EXM		;FOUND IT?
  1480	001160'02  254 00 0 00 001163'		JRST OBJLO1		;NO. GO CHECK FOR NUMBER
  1481	001161'02  550 01 0 01 000000 		HRRZ T1,0(T1)		;YES. GET OBJECT NUMBER
  1482	001162'02  254 00 0 00 001127*		RETSKP			;AND RETURN WITH IT
  1483
  1484					;TBLUK DIDNT'T FIND IT. SEE IF IT IS NUMERIC
  1485
  1486	001163'02  400 01 0 00 000000 	OBJLO1:	SETZ T1,		;GET AN ACCUMULATOR
  1487	001164'02  134 02 0 15 000001 	OBJLO2:	ILDB T2,OBJPTR		;GET NEXT BYTE
  1488	001165'02  322 02 0 00 001162*		JUMPE T2,RSKP		;IF AT THE END, GOOD NUMBER
  1489	001166'02  301 02 0 00 000060 		CAIL T2,"0"		;A VALID NUMBER
  1490	001167'02  303 02 0 00 000071 		CAILE T2,"9"		;STILL?
  1491	001170'02  263 17 0 00 000000 		RET			;NO. NOT A VALID NUMBER
  1492	001171'02  221 01 0 00 000012 		IMULI T1,^D10		;YES. ADJUST ACCUMULATOR
  1493	001172'02  271 01 0 02 777720 		ADDI T1,-"0"(T2)	;AND ADD IN NEW QUANTITY
  1494	001173'02  303 01 0 00 001145*		CAILE T1,OBJMAX		;STILL VALID?
  1495	001174'02  263 17 0 00 000000 		RET			;NO. GIVE AN ERROR
  1496	001175'02  254 00 0 00 001164'		JRST OBJLO2		;GO DO ALL OF IT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 35
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1497
  1498					;ROUTINE TO FIND A "LISTENING" OR ACTIVE OBJECT IN THE LOGICAL
  1499					;LINK TABLE. WILL ALSO DO SCAN OF ENTIRE TREE
  1500					;ACCEPTS:
  1501					;	T1/ COUROUTINE ADDRESS TO CALL WHEN OBJECT IS FOUND
  1502					;	T2/ 0 IF OBJECT MAY BE LISTENING OR ACTIVE
  1503					;		1 IF OBJECT MUST BE LISTENING ONLY
  1504					;		-1 IF ANY LINK IS ACCEPTBLE
  1505					;RETURNS:
  1506					;	+1 OBJECT NOT FOUND
  1507					;	+2 OBJECT FOUND. 
  1508					;		T1/ POINTER INTO LINK TABLE FOR THIS OBJECT
  1509					;		T2/ LINK I.D. OF THE OBJECT
  1510
  1511					;THE COROUTINE IS CALLED TO CHECK IF THE OBJECT IS THE ONE
  1512					;WANTED. THE COROUTINES ARE CALLED WITH THE FOLLOWING ARGS:
  1513					;	T1/ ADDRESS OF LOGICAL LINK ENTRY
  1514					;	ALL OF THE P AND Q REGISTERS INTACT
  1515					;THE COROUTINES RETURN AS FOLLOWS:
  1516					;	+1 DON'T WANT THIS OBJECT
  1517					;	+2 THIS IS THE ONE
  1518					;THE COROUTINE MUST PRESERVE ALL TEMPORARY AC'S
  1519
  1520	001176'02  402 00 0 00 000000*	OBJSRC::SETZM GUDOBJ		;INIT "GOOD OBJECT" FLAG
  1521	001177'02  120 03 0 00 000001 		DMOVE T3,T1		;SAVE ARGS
  1522	001200'02  336 01 0 00 000000*		SKIPN T1,LLHEAD		;ANY LINKS?
  1523						JRST [MOVEI T2,.DCX4	;NO, SAY "DESTINATION PROCESS
  1524	001201'02  254 00 0 00 007365'		      RET]		; DOES NOT EXIST"
  1525	001202'02  261 17 0 00 007220'		PUSH P,[0]		;PUT A "FENCE" ON THE STACK
  1526	001203'02  261 17 0 00 000001 	OBJSND:	PUSH P,T1		;SAVE THIS ONE
  1527	001204'02  321 04 0 00 001210'		JUMPL T4,OBJSN2		;IF ANY MATCH, GO HANDLE THIS ONE
  1528	001205'02  200 16 0 01 000002 		JE LLFOB,(T1),OBJSNO	;IF NOT OBJECT, CAN'T BE A MATCH
  1529	001206'02  607 16 0 00 000001 
  1530	001207'02  254 00 0 00 001214'
  1531	001210'02  322 03 0 00 001223'	OBJSN2:	JUMPE T3,OBJSFD		;IF NO COROUTINE, DONE
  1532	001211'02  260 17 0 03 000000 		CALL 0(T3)		;CALL THE COROUTINE
  1533	001212'02  334 00 0 00 000000 		SKIPA			;NOT THE ONE
  1534	001213'02  254 00 0 00 001223'		JRST OBJSFD		;FOUND IT
  1535	001214'02  135 01 0 00 007367'	OBJSNO:	LOAD T1,LLUPL,(T1)	;NOT THE ONE. GET THE UP POINTER
  1536	001215'02  326 01 0 00 001203'		JUMPN T1,OBJSND		;HAVE ONE. GO LOOK AT IT
  1537	001216'02  262 17 0 00 000001 	OBJSN1:	POP P,T1		;NOT FOUND. GET PREVIOUS ONE
  1538						JUMPE T1,[MOVEI T2,.DCX4	;NO MORE, SAY "DESTINATION PROCESS
  1539						          SKIPE GUDOBJ		; DOES NOT EXIST"
  1540						          MOVEI T2,.DCX33	;OR "TOO MANY CONNECTIONS"
  1541	001217'02  322 01 0 00 007370'		           RET]
  1542	001220'02  135 01 0 00 007374'		LOAD T1,LLDWN,(T1)	;GET DOWN SIDE
  1543	001221'02  326 01 0 00 001203'		JUMPN T1,OBJSND		;IF HAVE ONE, GO LOOK AT IT
  1544	001222'02  254 00 0 00 001216'		JRST OBJSN1		;IF NOT, KEEP POPING
  1545
  1546					;FOUND THE OBJECT
  1547
  1548	001223'02  476 00 0 00 001176*	OBJSFD:	SETOM GUDOBJ		;FOUND THE RIGHT SERVER
  1549						JUMPG T4,[LOAD T2,LLSTA,(T1)	;GET LL STATE
  1550						          CAIE T2,LLSLIS	;IS IT LISTENING?
  1551						          JRST OBJSNO		;NO, TRY AGAIN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 35-1
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1552	001224'02  327 04 0 00 007376'		          JRST .+1]		;YES, EVERYTHING OK
  1553	001225'02  262 17 0 00 000002 		POP P,T2		;MUST CLEAN UP THE STACK
  1554	001226'02  326 02 0 00 001225'		JUMPN T2,.-1		;KEEP CLEANING
  1555	001227'02  550 02 0 01 000002 		LOAD T2,LLLNK,(T1)	;GET LOGICAL LINK I.D.
  1556	001230'02  254 00 0 00 001165*		RETSKP			;DONE. RETURN GOOD
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 36
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1557
  1558					;ROUTINE TO GET A UNIQUE TASK NAME.
  1559					;ACCEPTS:	T1/ LL POINTER
  1560					;		LL TREE MUST BE LOCKED
  1561					;RETURNS:	+1 ALWAYS
  1562					;		LLTSK FILLED IN WITH NAME
  1563					;PRESERVES T1
  1564
  1565	001231'02  265 16 0 00 001130*	GETTSK:	TRVAR <LLADDR,TSKBLK>
  1566	001232'02  000002  000002
  1567	001233'02  202 01 0 15 000001 		MOVEM T1,LLADDR		;SAVE LL BLOCK ADDRESS
  1568	001234'02  201 01 0 00 000003 		MOVEI T1,3		;NEED A BLOCK OF THIS SIZE
  1569	001235'02  260 17 0 00 001300'		CALL GETBLK		;GO GET A BLOCK
  1570	001236'02  263 17 0 00 000000 		 RET			;NO MORE SPACE
  1571	001237'02  202 01 0 15 000002 		MOVEM T1,TSKBLK		;SAVE ADDRESS
  1572	001240'02  505 01 0 00 440700 	GETTS1:	HRLI T1,(<POINT 7,>)	;MAKE A BYTE POINTER
  1573	001241'02  350 02 0 00 000000*		AOS T2,LASTSK		;GET A NUMBER FOR THE TASK NAME
  1574	001242'02  201 03 0 00 000010 		MOVEI T3,10		;CONVERT OCTAL
  1575	001243'02  104 00 0 00 000224 		NOUT			;MOVE NUMBER
  1576	001244'02  255 00 0 00 000000 		 JFCL			;WILL WORK
  1577	001245'02  415 01 0 00 001253'		XMOVEI T1,TSKLOK	;MAKE SURE IS UNIQUE
  1578	001246'02  476 00 0 00 000002 		SETOM T2		;ANY LINK
  1579	001247'02  260 17 0 00 001176'		CALL OBJSRC		;GO LOOK FOR A MATCH
  1580						 JRST [	MOVE T1,LLADDR
  1581							MOVE T2,TSKBLK	;GET BLOCK ADDRESS
  1582							STOR T2,LLTSK,(T1)
  1583	001250'02  254 00 0 00 007403'			RETSKP]		;AND DONE
  1584	001251'02  200 01 0 15 000002 		MOVE T1,TSKBLK		;FOUND IT
  1585	001252'02  254 00 0 00 001240'		JRST GETTS1		;TRY AGAIN
  1586
  1587					;COROUTINE TO CHECK FOR TASK MATCH
  1588
  1589	001253'02  265 16 0 00 001120*	TSKLOK:	SAVET			;SAVE ALL TEMPS
  1590	001254'02  135 02 0 00 007402'		LOAD T2,LLTSK,(T1)	;GET THIS ONE'S ADDRESS
  1591	001255'02  322 02 0 00 001123*		JUMPE T2,R		;IF NONE, CAN'T BE IT
  1592	001256'02  200 01 0 15 000002 		MOVE T1,TSKBLK		;GET BLOCK ADDRESS
  1593	001257'02  254 00 0 00 000000*		CALLRET CMPSTR		;GO DO THE COMPARE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 37
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1594
  1595					;COLLECTION OF UTILITIES
  1596
  1597					;MOVE ONE STRING TO ANOTHER.
  1598					;ACCEPTS:	T1/ DEST STRING BLOCK
  1599					;		T2/ SOURCE STRIGN BLOCK
  1600					;		T3/ COUNT OR -1
  1601					;RETURNS:	+1 ALWAYS.
  1602					;ALL REGISTERS PRESERVED
  1603
  1604	001260'02  265 16 0 00 001253*	MOVSTR::SAVET			;SAVE ALL TEMPS
  1605	001261'02  265 16 0 00 000000*		ACVAR <W1,W2>		;GET SOME WORK REGS
  1606	001262'02  200 05 0 00 007407'		MOVE W1,[POINT 7,0(T1)]
  1607	001263'02  200 06 0 00 007410'		MOVE W2,[POINT 7,0(T2)]	;SET UP ARGS
  1608	001264'02  134 04 0 00 000006 	MOVST0:	ILDB T4,W2		;GET NEXT BYTE
  1609	001265'02  136 04 0 00 000005 		IDPB T4,W1		;STASH IT
  1610	001266'02  322 04 0 00 001255*		JUMPE T4,R		;IF NULL, ALL DONE
  1611	001267'02  321 03 0 00 001264'		JUMPL T3,MOVST0		;IF NO COUNT, KEEP GOING
  1612	001270'02  367 03 0 00 001264'		SOJG T3,MOVST0		;MORE IN THE COUNT?
  1613	001271'02  263 17 0 00 000000 		RET			;NO. ALL DONE
  1614
  1615						ENDAV.			;END ACVAR
  1616
  1617					;ROUTINE TO "FREE" A LL ADDRESS.
  1618					;ACCEPTS:	T1/ LL ADDRESS TO FREE
  1619					;RETURNS:	+1 ALWAYS
  1620
  1621	001272'02  405 01 0 00 000000*	FRELNK:	ANDI T1,MAXLNK		;ISOLATE LOCAL INDEX
  1622	001273'02  231 01 0 00 000044 		IDIVI T1,44		;COMPUTE WORD AND OFFSET
  1623	001274'02  270 01 0 00 007411'		ADD T1,[LLBITS]		;GET BIT TABLE OFFSET
  1624	001275'02  200 02 0 02 000000*		MOVE T2,BITS(T2)	;GET A BIT
  1625	001276'02  436 02 0 01 000000 		IORM T2,0(T1)		;TURN OF THE BIT
  1626	001277'02  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 38
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1627
  1628					;ROUTINES TO GET AND RETURN SWAPPABLE FREE SPACE
  1629
  1630					;ROUTINE TO GET A BLOCK FROM THE LL STRING SPACE POOL
  1631					;ACCEPTS:	T1/ SIZE TO GET
  1632					;RETURNS:	+1 FAILED. T1/ERROR CODE
  1633					;		+2 SUCCESS T1/ BLOCK ADDRESS
  1634
  1635	001300'02  201 02 0 01 000001 	GETBLK:	MOVEI T2,1(T1)		;ACCOUNT FOR HEADER
  1636	001301'02  270 02 0 00 000000*		ADD T2,BLKASG		;COMPUTE AMOUNT THIS WOULD MAKE
  1637	001302'02  303 02 0 00 000000*		CAILE T2,MAXBLK		;WITHIN BOUNDS?
  1638	001303'02  254 00 0 00 007412'		RETBAD (MONX06)		;NO. INSUFFICIENT RESOURCES - NO SWAPPABLE FREE SPACE
  1639	001304'02  350 00 0 00 000001 		AOS T1			;GET SPACE +1
  1640	001305'02  260 17 0 00 000770*		CALL ASGSWP		;GET SOME SPACE
  1641	001306'02  263 17 0 00 000000 		 RETBAD			;FAILED. GIVE IT UP
  1642	001307'02  550 02 0 01 000000 		HRRZ T2,0(T1)		;GET COUNT ASSIGNED
  1643	001310'02  272 02 0 00 001301*		ADDM T2,BLKASG		;ACCOUNT FOR IT
  1644	001311'02  350 00 0 00 000001 		AOS T1			;POINT TO FIRST USEFUL BLOCK
  1645	001312'02  254 00 0 00 001230*		RETSKP			;AND GOOD
  1646
  1647					;ROUTINE TO RETURN A STRING BLOCK
  1648					;ACCEPTS:	T1/ ADDRESS OF FIRST DATA LOCATION (HEADER+1)
  1649					;RETURNS:	+1 ALWAYS
  1650
  1651	001313'02  370 00 0 00 000001 	RELBLK:	SOS T1			;POINT TO HEADER
  1652	001314'02  550 02 0 01 000000 		HRRZ T2,0(T1)		;GET WORDS IN THIS BLOCK
  1653	001315'02  250 02 0 00 001310*		EXCH T2,BLKASG
  1654	001316'02  276 02 0 00 001315*		SUBM T2,BLKASG		;COMPUTE NEW COUNT
  1655	001317'02  550 02 0 01 000000 		HRRZ T2,0(T1)		;GET SIZE OF THE BLOCK AGAIN
  1656	001320'02  254 00 0 00 000000*		CALLRET RELSWP		;RELEASE THE BLOCK
  1657
  1658					;ROUTINE TO GET A RESIDENT FREE SPACE BLOCK
  1659					;ACCEPTS:	T1/ SIZE REQUIRED
  1660
  1661						RESCD
  1662
  1663	000124'01  505 01 0 00 000000*	GETRES::HRLI T1,.RESP3		;IN PROCESS CONTEXT
  1664	000125'01  332 00 0 00 000062*		SKIPE INSKED		;SKED CONTEXT?
  1665	000126'01  505 01 0 00 000000*		HRLI T1,.RESP2		;YES, NO PAGE FAULTS PLEASE
  1666	000127'01  200 02 0 00 002177'		MOVE T2,[RS%SE0!.RESNP]	;FROM THE NETWORK
  1667	000130'01  260 17 0 00 000000*		CALL ASGRES		;GET SOME SPACE
  1668	000131'01  263 17 0 00 000000 		 RETBAD()		;COULDN'T
  1669	000132'01  254 00 0 00 000121*		RETSKP			;GOT IT
  1670
  1671						SWAPCD
  1672
  1673					;ROUTINE TO MOVE A STRING FROM JSB FREE SPACE TO SWAPPABLE FREE SPACE.
  1674					;ACCEPTS:	T1/ DESTINATION BLOCK ADDRESS
  1675					;		T2/ SP TO JSB FREE SPACE
  1676					;		T3/ COUNT
  1677					;CLOBBERS ALL TEMPS
  1678
  1679	001321'02  265 16 0 00 001024*	MOVST1::STKVAR <MVSPTR>
  1680	001322'02  000001  000001
  1681	001323'02  200 04 0 00 007407'		MOVE T4,[POINT 7,0(T1)]	;FORM STRING POINTER
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 38-1
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate Logical Link Blocks and Object Tables

  1682	001324'02  202 04 0 17 777776 		MOVEM T4,MVSPTR		;SAVE POINTER
  1683	001325'02  134 04 0 00 000002 	MOVST2:	ILDB T4,T2		;GET A BYTE
  1684	001326'02  136 04 0 17 777776 		IDPB T4,MVSPTR		;STORE IT
  1685	001327'02  367 03 0 00 001325'		SOJG T3,MOVST2		;DO ALL BYTES
  1686	001330'02  263 17 0 00 000000 		RET			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 39
NSPSRV	MAC	 6-Apr-82 10:58		Logical Link Creation

  1687					SUBTTL	Logical Link Creation
  1688
  1689					; ROUTINES TO SET INPUT/OUTPUT FLAGS IN LOGICAL LINK BLOCKS
  1690					;
  1691					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  1692					;		CALL SETOPI/SETOPW
  1693					;RETURNS: +1 ALWAYS
  1694
  1695	001331'02  205 16 0 00 000400 	SETOPI::SETONE LLOPI,(T1) 	;SET INPUT FLAG
  1696	001332'02  436 16 0 01 000002 
  1697	001333'02  263 17 0 00 000000 		RET			;DONE, RETURN
  1698
  1699
  1700	001334'02  205 16 0 00 000200 	SETOPW::SETONE LLOPW,(T1)	;SET OUTPUT FLAG
  1701	001335'02  436 16 0 01 000002 
  1702	001336'02  263 17 0 00 000000 		RET			;DONE, RETURN
  1703
  1704
  1705					; ROUTINES TO TEST THE DIRECTION OF I/O
  1706					;
  1707					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  1708
  1709	001337'02  200 16 0 01 000010 	SKPFLO::JE LLFLO,(T1),R		;NON-SKIP IF FLOW NOT FROM FILE-SYSTEM
  1710	001340'02  607 16 0 00 020000 
  1711	001341'02  254 00 0 00 001266*
  1712	001342'02  254 00 0 00 001312*		RETSKP			;SKIP IF FLOW IS FROM THE FILE-SYSTEM
  1713
  1714
  1715	001343'02  200 16 0 01 000010 	SKPFLI::JE LLFLI,(T1),R		;NON-SKIP IF FLOW NOT TO THE FILE-SYSTEM
  1716	001344'02  607 16 0 00 040000 
  1717	001345'02  254 00 0 00 001341*
  1718	001346'02  254 00 0 00 001342*		RETSKP			;SKIP if FLOW IS TO THE FILE-SYSTEM
  1719
  1720
  1721					; ROUTINES TO SET/CLEAR DIRECTION-OF-FLOW BITS
  1722
  1723	001347'02  205 16 0 00 020000 	CLRFLO::SETZRO LLFLO,(T1) 	;SWITCH FLOW TO BE "TO THE NETWORK"
  1724	001350'02  412 16 0 01 000010 
  1725	001351'02  263 17 0 00 000000 		RET			;DONE, RETURN
  1726
  1727	001352'02  205 16 0 00 020000 	SETFLO::SETONE LLFLO,(T1) 	;SWITCH FLOW TO BE "FROM FILE-SYSTEM"
  1728	001353'02  436 16 0 01 000010 
  1729	001354'02  263 17 0 00 000000 		RET			;DONE, RETURN
  1730
  1731
  1732					;GETBSZ - ROUTINE TO OBTAIN THE BYTE SIZE FOR A LOGICAL LINK
  1733					;
  1734					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  1735					;	    	CALL GETBSZ
  1736					;RETURNS: +1 ALWAYS, WITH T3/ BYTE SIZE
  1737					;
  1738					; PRESERVES LOGICAL LINK BLOCK ADDRESS IN T1
  1739
  1740	001355'02  135 03 0 00 007414'	GETBSZ::LOAD T3,LLBSZ,(T1)	;GET BYTE SIZE
  1741	001356'02  263 17 0 00 000000 		RET			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 39-1
NSPSRV	MAC	 6-Apr-82 10:58		Logical Link Creation

  1742
  1743
  1744					;GETSTA - ROUTINE TO RETURN CURRENT STATE OF A LOGICAL LINK
  1745					;
  1746					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  1747					;		CALL GETSTA
  1748					;RETURNS: +1 ALWAYS, WITH T2/ LINK STATE
  1749					;
  1750					; PRESERVES LOGICAL LINK BLOCK ADDRESS IN T1
  1751
  1752	001357'02  135 02 0 00 007375'	GETSTA::LOAD T2,LLSTA,(T1)	;GET CURRENT STATE
  1753	001360'02  263 17 0 00 000000 		RET
  1754
  1755
  1756
  1757					;SETEOM - ROUTINE TO SET "END-OF-MESSAGE-NEEDED" FLAG FOR A LOGICAL LINK
  1758					;
  1759					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  1760					;		CALL SETEOM
  1761					;RETURNS: +1 ALWAYS
  1762
  1763	001361'02  205 16 0 00 000002 	SETEOM::SETONE LLFEM,(T1)	;SAY SHOULD GET EOM ON OUTPUT
  1764	001362'02  436 16 0 01 000002 
  1765	001363'02  263 17 0 00 000000 		RET			;DONE, RETURN
  1766
  1767
  1768					;GETMXS - ROUTINE TO GET MAX SEGMENT SIZE
  1769					;
  1770					;ACCEPTS IN T1/ LOGICAL LINK BLOCK ADDRESS
  1771
  1772
  1773	001364'02  135 04 0 00 007415'	GETMXS::LOAD T4,LLSWG,(T1)	;GET MAX SEG SIZE
  1774	001365'02  263 17 0 00 000000 		RET			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 40
NSPSRV	MAC	 6-Apr-82 10:58		Logical Link Creation

  1775					;WORK ROUTINES TO OPEN DCN: OR SRV:
  1776					;
  1777					;	OPNDWK - OPEN A FILESYSTEM DCN: LINK
  1778					;	OPNSWK - OPEN A FILESYSTEM SRV: LINK
  1779					;	OPNIWK - OPEN AN INTERNAL LINK
  1780					;
  1781					;ACCEPTS IN T1/	ADDRESS OF TASK STRING
  1782					;	    T2/	BYTE SIZE OF OPEN
  1783					;		CALL OPNSWK/OPNDWK
  1784					;RETURNS: +1	 FAILED, ERROR CODE IN T1
  1785					;	  +2	SUCCESS, WITH T1/ ADDRESS OF LOGICAL LINK BLOCK
  1786
  1787	001366'02  201 03 0 00 000033 	OPNDWK::MOVEI T3,LKSIZE		;BASIC LL BLOCK SIZE
  1788	001367'02  254 00 0 00 001374'		JRST OPNWRK		;CALL WORK ROUTINE
  1789	001370'02  201 03 0 00 000041 	OPNSWK::MOVEI T3,LKSIZE+LKOBJS	;BASIC SIZE PLUS WORDS NEEDED FOR SRV: LINKS
  1790	001371'02  254 00 0 00 001374'		JRST OPNWRK		;CALL WORK ROUTINE
  1791	001372'02  201 03 0 00 000044 	OPNIWK::MOVEI T3,LKSIZE+LKISIZ	;BASIC SIZE PLUS WORDS NEEDED FOR INTERNAL LINKS
  1792	001373'02  254 00 0 00 001374'		JRST OPNWRK		;GO DO THE OPEN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 41
NSPSRV	MAC	 6-Apr-82 10:58		Logical Link Creation

  1793					;OPNWRK - WORK ROUTINE TO OPEN A LOGICAL LINK
  1794					;
  1795					;ACCEPTS IN T1/	ADDRESS OF TASK STRING
  1796					;	    T2/	BYTE SIZE OF OPEN
  1797					;	    T3/	SIZE OF LOGICAL LINK BLOCK NEEDED
  1798					;		CALL OPNWRK
  1799					;RETURNS: +1	 FAILED, ERROR CODE IN T1
  1800					;	  +2	SUCCESS, WITH T1/ ADDRESS OF LOGICAL LINK BLOCK
  1801
  1802	001374'02  265 16 0 00 001231*	OPNWRK:	TRVAR <SAVBLK,SAVERR,SAVSTR,SAVBSZ>
  1803	001375'02  000004  000004
  1804									; NOTE: TRVAR IS NEEDED HERE INSTEAD OF STKVAR
  1805									;	BECAUSE COROUTINES ACCESS THE VARIABLES.
  1806	001376'02  202 01 0 15 000003 		MOVEM T1,SAVSTR		;SAVE STRING BLOCK ADDRESS
  1807	001377'02  202 02 0 15 000004 		MOVEM T2,SAVBSZ		;SAVE BYTE SIZE
  1808	001400'02  205 02 0 00 200000 		MOVX T2,FRKRUN		;SEE IF NETWORK IS INTIALIZED
  1809	001401'02  616 02 0 00 000632*		TDNN T2,MCBDTE		;IS IT?
  1810	001402'02  254 00 0 00 007416'		RETBAD (DCNX11)		;NO. ILLEGAL TO USE IT THEN
  1811	001403'02  200 01 0 00 000003 		MOVE T1,T3		;COPY # OF ADDITIONAL WORDS NEEDED FOR LL BLOCK
  1812	001404'02  505 01 0 00 000000*		HRLI T1,.RESP3		;IN PROCESS CONTEXT
  1813	001405'02  201 02 0 00 000000*		MOVEI T2,.RESNP		;FROM THE NETWORK POOL
  1814	001406'02  260 17 0 00 000000*		CALL ASGRES		;GET A LL BLOCK
  1815	001407'02  263 17 0 00 000000 		 RET			;COULDN'T. MUST FAIL
  1816	001410'02  202 01 0 15 000001 		MOVEM T1,SAVBLK
  1817	001411'02  201 01 0 00 000005 		MOVEI T1,OPTSIZ		;SIZE OF OPTDATA BLOCK
  1818	001412'02  260 17 0 00 001300'		CALL GETBLK		;GET A BLOCK OF PROPER SIZE
  1819	001413'02  254 00 0 00 001503'		 JRST RLBLK		;COULDN'T. FREE BLOCK
  1820	001414'02  200 02 0 15 000001 		MOVE T2,SAVBLK		;GET BACK BLOCK ADDRESS
  1821	001415'02  137 01 0 00 007420'		STOR T1,LLOPT,(T2)	;SAVE BLOCK ADDRESS
  1822	001416'02  200 01 0 00 000002 		MOVE T1,T2		;GET LL BLOCK ADDRESS
  1823	001417'02  260 17 0 00 000000#		LLLOCK			;LOCK UP THE TREE
  1824	001420'02  260 17 0 00 001710'		CALL MAKLNK		;GET LL ADDRESS AND INSERT ENTRY
  1825						 JRST [	MOVEM T1,SAVERR	;SAVE ERROR CODE
  1826							LLLULK
  1827							MOVE T1,SAVBLK	;GET BLOCK
  1828							LOAD T1,LLOPT,(T1)
  1829							CALL RELBLK	;FREE UP OPT BLOCK
  1830	001421'02  254 00 0 00 007422'			JRST RLBLK1]	;AND GET RID OF LL BLOCK
  1831	001422'02  260 17 0 00 000000#		LLLULK			;RELEASE LOCK
  1832						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 42
NSPSRV	MAC	 6-Apr-82 10:58		Logical Link Creation

  1833
  1834					;OPEN CONTINUED. CHECK QUOTA TO SEE IF CAN MAKE THIS LINK
  1835
  1836	001423'02  350 00 0 00 000373*		INCR DCCUR		;INCREMENT COUNT
  1837	001424'02  550 02 0 00 001423*		LOAD T2,DCCUR		;GET IT
  1838	001425'02  554 04 0 00 001424*		LOAD T4,DCMAX		;GET MAX COUNT ALLOWED
  1839	001426'02  313 02 0 00 000004 		CAMLE T2,T4		;NO. ALLOWED TO MAKE ANOTHER LINK?
  1840						JRST [	MOVE T3,CAPENB	;NO, SEE IF CAPS
  1841							TXNE T3,SC%WHL!SC%OPR
  1842							JRST .+1	;OK
  1843							MOVEI T1,DCNX5	;NO. GIVE ERROR
  1844	001427'02  254 00 0 00 007430'			JRST OPNFAI]	;AND GO FAIL
  1845	001430'02  200 02 0 15 000001 		MOVE T2,SAVBLK		;GET LL BLOCK ADDRESS
  1846	001431'02  201 03 0 02 000025 		MOVEI T3,LLHNM1(T2)	;GET PLACE TO PUT REMOTE HOST NAME STRING
  1847	001432'02  202 03 0 02 000014 		STOR T3,LLHST,(T2)	;SET IT
  1848	001433'02  201 01 0 00 000005 		MOVEI T1,<MAXDSC+4>/4	;A BLOCK FOR REMOTE DESCRIPTOR
  1849	001434'02  260 17 0 00 001300'		CALL GETBLK		;GET ONE
  1850	001435'02  254 00 0 00 001454'		 JRST OPNFAI		;COULDN'T
  1851	001436'02  200 02 0 15 000001 		MOVE T2,SAVBLK		;GET LL BLOCK
  1852	001437'02  137 01 0 00 007435'		STOR T1,LLFDS,(T2)	;SAVE BLOCK
  1853	001440'02  200 01 0 15 000003 		MOVE T1,SAVSTR		;GET POINTER TO EXTENSION BLOCK
  1854	001441'02  322 01 0 00 001510'		JUMPE T1,OPNDFT		;NONE. GO DEFAULT TASK NAME
  1855	001442'02  135 02 0 00 007436'		LDB T2,[POINT 7,(T1),6] ;GET FIRST BYTE
  1856	001443'02  322 02 0 00 001510'		JUMPE T2,OPNDFT		;IF NULL EXTENSION. GO DEFAULT TASK NAME
  1857						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 43
NSPSRV	MAC	 6-Apr-82 10:58		Logical Link Creation

  1858
  1859					;USER SPECIFIED EXTENSION. CHECK FOR DUPLICATE
  1860
  1861	001444'02  505 01 0 00 440700 		HRLI T1,(POINT 7,)	;FORM POINTER TO THE STRING
  1862	001445'02  201 03 0 00 000047 		MOVX T3,MAXLC		;GET MAX SIZE OF EXTENSION
  1863	001446'02  260 17 0 00 000146'		CALL CMPLEN		;COMPUTE ACTUAL NUMBER OF BYTES IN STRING
  1864	001447'02  231 03 0 00 000005 		IDIVI T3,5		;COMPUTE NUMBER OF WORDS IN STRING
  1865	001450'02  332 00 0 00 000004 		SKIPE T4		;AND ROUND RESULT UP
  1866	001451'02  271 03 0 00 000001 		ADDI T3,1		; IF NEEDED
  1867	001452'02  200 01 0 00 000003 		MOVE T1,T3		;COPY SIZE OF STRING
  1868	001453'02  260 17 0 00 001300'		CALL GETBLK		;GET A BLOCK TO HOLD IT
  1869					OPNFAI:	 JRST [	LLLOCK		;LOCK UP TREE
  1870							EXCH T1,SAVBLK	;GET BLOCK ADDRESS
  1871							CALL DELNOD	;RELEASE LL BLOCK
  1872							LLLULK		;RELEASE LOCK
  1873							MOVE T1,SAVBLK	;GET ERROR CODE
  1874							DECR DCCUR	;DISCOUNT THIS LINK
  1875	001454'02  254 00 0 00 007437'			RET]		;DONE
  1876	001455'02  202 01 0 15 000002 		MOVEM T1,SAVERR		;SAVE BLOCK ADDRESS
  1877	001456'02  200 02 0 15 000003 		MOVE T2,SAVSTR		;GET STRING BLOCK
  1878	001457'02  476 00 0 00 000003 		SETOM T3		;NO COUNT
  1879	001460'02  260 17 0 00 001260'		CALL MOVSTR		;MOVE THE STRING
  1880	001461'02  201 01 0 00 001516'		MOVEI T1,TSKCHK		;COROUTINE ADDRESS
  1881	001462'02  476 00 0 00 000002 		SETOM T2		;SEARCH ALL LOGICAL LINKS
  1882	001463'02  260 17 0 00 000000#		LLLOCK			;LOCK UP THE TREE
  1883	001464'02  260 17 0 00 001176'		CALL OBJSRC		;DO IT
  1884	001465'02  334 00 0 00 000000 		 SKIPA			;NOT FOUND. CAN USE IT
  1885						JRST [	MOVE T1,SAVERR	;GET TASK NAME BLOCK
  1886							CALL RELBLK	;RELEASE IT
  1887							MOVE T1,SAVBLK	;GET LL BLOCK ADDRESS
  1888							CALL DELNOD	;RELEASE THE BLOCK
  1889							LLLULK		;FREE THE TREE LOCK
  1890							MOVEI T1,DCNX4	;ILLEGAL TASK NAME
  1891							DECR DCCUR	;DISCOUNT THIS LINK
  1892	001466'02  254 00 0 00 007446'			RET]		;AND DONE
  1893	001467'02  200 02 0 15 000002 		MOVE T2,SAVERR		;GET TASK BLOCK
  1894	001470'02  200 01 0 15 000001 		MOVE T1,SAVBLK		;GET LL BLOCK ADDRESS
  1895	001471'02  137 02 0 00 007402'		STOR T2,LLTSK,(T1)	;STORE BLOCK ADDRESS
  1896	001472'02  205 16 0 00 400000 	OPNEXT:	SETONE LLBOM,(T1)	;NEXT OUTPUT WILL BE BOM
  1897	001473'02  436 16 0 01 000010 
  1898	001474'02  200 03 0 15 000004 		MOVE T3,SAVBSZ		;GET BYTE SIZE
  1899	001475'02  137 03 0 00 007414'		STOR T3,LLBSZ,(T1)	;SAVE BYTE SIZE IN LOGICAL LINK BLOCK
  1900	001476'02  302 03 0 00 000044 		CAIE T3,44		;WORD MODE?
  1901	001477'02  254 00 0 00 001502'		JRST OPENX1		;NO. GO ON
  1902	001500'02  205 16 0 00 000010 		SETONE LLFDI,(T1)	;YES. REMEMBER THIS
  1903	001501'02  436 16 0 01 000002 
  1904	001502'02  254 00 0 00 001346*	OPENX1:	RETSKP			;DONE, RETURN SUCCESS WITH T1/ LL BLOCK ADDRESS
  1905
  1906
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 44
NSPSRV	MAC	 6-Apr-82 10:58		Logical Link Creation

  1907
  1908					;ROUTINE TO GET RID OF LL BLOCK AFTER ERROR
  1909
  1910	001503'02  202 01 0 15 000002 	RLBLK:	MOVEM T1,SAVERR		;SAVE ERROR
  1911	001504'02  200 01 0 15 000001 	RLBLK1:	MOVE T1,SAVBLK		;GET BLOCK ADDRESS
  1912	001505'02  260 17 0 00 000000*		CALL RELRES		;FREE IT
  1913	001506'02  200 01 0 15 000002 		MOVE T1,SAVERR		;GET ERROR
  1914	001507'02  263 17 0 00 000000 		RET			;AND DONE
  1915
  1916					;ROUTINE TO GET DEFAULT TASK NAME FOR A LINK
  1917
  1918	001510'02  260 17 0 00 000000#	OPNDFT:	LLLOCK			;LOCK UP THE TREE
  1919	001511'02  200 01 0 15 000001 		MOVE T1,SAVBLK		;GET BLOCK ADDRESS
  1920	001512'02  260 17 0 00 001231'		CALL GETTSK		;GO GET A NAME
  1921						 JRST [	MOVE T1,SAVBLK	;FAILED
  1922							CALL DELNOD	;SO RELEASE LL BLOCK
  1923							LLLULK		;FREE TREE LOCK
  1924							MOVEI T1,MONX06	;"NO MORE SWAPPABLE FREE SPACE"
  1925	001513'02  254 00 0 00 007456'			RET]		;DONE
  1926	001514'02  200 01 0 15 000001 		MOVE T1,SAVBLK		;GET BACK LL BLOCK ADDRESS
  1927	001515'02  254 00 0 00 001472'		JRST OPNEXT		;AND DONE
  1928
  1929					;COROUTINE OF OPEN CODE TO CHECK VALIDITY OF A USER-SUPPLIED
  1930					;TASK NAME
  1931
  1932	001516'02  265 16 0 00 001260*	TSKCHK:	SAVET			;SAVE TEMPS
  1933	001517'02  554 02 0 01 000003 		LOAD T2,LLFRK,(T1)	;SEE IF THE SAME FORK
  1934	001520'02  554 02 0 02 000000*		HLRZ T2,FKJOB(T2)	;GET FORK'S JOB NUMBER
  1935	001521'02  200 04 0 00 000000*		MOVE T4,FORKX		;GET THIS FORK'S NUMBER
  1936	001522'02  554 04 0 04 001520*		HLRZ T4,FKJOB(T4)	;GET THIS FORK'S JOB NUMBER
  1937	001523'02  316 02 0 00 000004 		CAMN T2,T4		;IS IT?
  1938	001524'02  263 17 0 00 000000 		RET			;YES. NO NEED TO CHECK ANYMORE
  1939	001525'02  135 02 0 00 007402'		LOAD T2,LLTSK,(T1)	;GET THIS ONE'S ADDRESS
  1940	001526'02  322 02 0 00 001345*		JUMPE T2,R		;IF NONE, CAN'T BE IT
  1941	001527'02  200 01 0 15 000002 		MOVE T1,SAVERR		;GET TASK BLOCK ADDRESS
  1942	001530'02  254 00 0 00 001257*		CALLRET CMPSTR		;GO DO THE COMPARE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 45
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate the Logical Link Tree

  1943					SUBTTL	Routines to Manipulate the Logical Link Tree
  1944
  1945					;DELETE NODE FROM LL TREE
  1946					;	T1/ BLOCK ADDRESS
  1947
  1948	001531'02  265 16 0 00 001153*	DELNOD::ASUBR <SAVBLK>		;SAVE BLOCK ADDRESS
  1949	001532'02  550 01 0 01 000002 		LOAD T1,LLLNK,(T1)	;GET ITS ADDRESS
  1950	001533'02  476 00 0 00 000002 		SETOM T2		;ANY MATCH
  1951	001534'02  260 17 0 00 000000#		CALL LLLKUP		;GO LOOK IT UP
  1952	001535'02  263 17 0 00 000000 		 RET			;NOT THERE (THIS IS LEGITIMATE FOR A LOCAL LINK)
  1953						JUMPE T2,[SETZM LLHEAD	;IF THE HEAD. CLEAR HEADER
  1954	001536'02  322 02 0 00 007463'			JRST DELNO1]	;AND PROCEED
  1955	001537'02  135 03 0 00 007465'		LOAD T3,LLUPL,(T2)	;SEE IF THIS IS UP OR DOWN
  1956	001540'02  265 16 0 00 000000*		NOSKD1
  1957	001541'02  7 004 20 0 00 001002 	CHNOFF DLSCHN		;TURN OFF INTERRUPTS
  1958	001542'02  316 03 0 00 000001 		CAMN T3,T1
  1959						JRST [	SETZRO LLUPL,(T2) ;UP
  1960	001543'02  254 00 0 00 007466'			JRST DELINS]	;GO DO INSERTS
  1961	001544'02  525 16 0 00 007777 		SETZRO LLDWN,(T2)	;DOWN
  1962	001545'02  412 16 0 02 000001 
  1963	001546'02  7 004 20 0 00 002002 DELINS:	CHNON DLSCHN
  1964	001547'02  265 16 0 00 000000*		OKSKD1
  1965	001550'02  550 01 0 01 000002 	DELNO1:	LOAD T1,LLLNK,(T1)	;GET ADDRESS
  1966	001551'02  260 17 0 00 001272'		CALL FRELNK		;RELEASE THE LINK #
  1967	001552'02  200 01 0 15 000001 		MOVE T1,SAVBLK		;GET BACK LL BLOCK ADDRESS
  1968	001553'02  135 02 0 00 007367'		LOAD T2,LLUPL,(T1)	;DOES THIS HAVE AN UP POINTER?
  1969	001554'02  322 02 0 00 001560'		JUMPE T2,DELDWN		;NO
  1970	001555'02  200 01 0 00 000002 		MOVE T1,T2		;YES.
  1971	001556'02  260 17 0 00 001735'		CALL ADDLNK		;GO PUT IT IN
  1972	001557'02  200 01 0 15 000001 		MOVE T1,SAVBLK		;GET BACK ADDRESS
  1973	001560'02  135 02 0 00 007374'	DELDWN:	LOAD T2,LLDWN,(T1)	;SEE IF IT HAS A DOWN
  1974	001561'02  322 02 0 00 001565'		JUMPE T2,DELDNE		;AND GO RELEASE BLOCKS
  1975	001562'02  200 01 0 00 000002 		MOVE T1,T2		;GET ADDRESS
  1976	001563'02  260 17 0 00 001735'		CALL ADDLNK
  1977	001564'02  200 01 0 15 000001 		MOVE T1,SAVBLK		;GET BACK BLOCK ADDRESS
  1978	001565'02  135 16 0 00 007421'	DELDNE:	OPSTR <SKIPE T2,>,LLOPT,(T1) ;HAVE AN OPTDATA STRING?
  1979	001566'02  332 02 0 00 000016 
  1980	001567'02  260 17 0 00 001614'		CALL DELREL		;YES. GET RID OF IT
  1981	001570'02  135 16 0 00 007402'		OPSTR <SKIPE T2,>,LLTSK,(T1) ;HAVE A TASK NAME?
  1982	001571'02  332 02 0 00 000016 
  1983	001572'02  260 17 0 00 001614'		CALL DELREL		;YES. GET RID OF IT
  1984	001573'02  135 16 0 00 007471'		OPSTR <SKIPE T2,>,LLFDS,(T1) ;HAVE A DESCRIPTOR STRING?
  1985	001574'02  332 02 0 00 000016 
  1986	001575'02  260 17 0 00 001614'		CALL DELREL		;YES. GET RID OF IT
  1987	001576'02  200 16 0 01 000002 		JE LLFOB,(T1),DELBLK	;AN OBJECT?
  1988	001577'02  607 16 0 00 000001 
  1989	001600'02  254 00 0 00 001612'
  1990	001601'02  332 02 0 01 000034 		OPSTR <SKIPE T2,>,LLDSC,(T1) ;YES. HAVE A DESCRIPTOR STRING?
  1991	001602'02  260 17 0 00 001614'		CALL DELREL		;YES. GET RID OF IT
  1992						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 46
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate the Logical Link Tree

  1993						; ..
  1994
  1995	001603'02  332 02 0 01 000035 		OPSTR <SKIPE T2,>,LLUSR,(T1) ;HAVE A USER STRING?
  1996	001604'02  260 17 0 00 001614'		CALL DELREL		;YES. GET RID OF IT
  1997	001605'02  332 02 0 01 000036 		OPSTR <SKIPE T2,>,LLACT,(T1) ;HAVE AN ACCOUNT STRING?
  1998	001606'02  260 17 0 00 001614'		CALL DELREL		;YES. GET RID OF IT
  1999	001607'02  135 16 0 00 007472'		OPSTR <SKIPE T2,>,LLPSW,(T1) ;HAVE A PASSWORD STRING?
  2000	001610'02  332 02 0 00 000016 
  2001	001611'02  260 17 0 00 001614'		CALL DELREL		;YES. GET RID OF IT
  2002	001612'02  260 17 0 00 001622'	DELBLK:	CALL REMQUE		;REMOVE BLOCK FROM OUTQUE OF NEEDED
  2003	001613'02  254 00 0 00 001505*		CALLRET RELRES		;FREE BLOCK AND RETURN
  2004
  2005	001614'02  265 16 0 00 001516*	DELREL:	SAVET
  2006	001615'02  350 00 0 00 000766*		NOINT			;PREVENT INTERRUPTS WHILE DEASSIGNING SPACE
  2007	001616'02  200 01 0 00 000002 		MOVE T1,T2		;GET BLOCK ADDRESS
  2008	001617'02  260 17 0 00 001313'		CALL RELBLK		;FREE BLOCK
  2009	001620'02  256 00 0 00 001020*		OKINT			;PREMIT INTERRUPTS AGAIN
  2010	001621'02  263 17 0 00 000000 		RET			;RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 47
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate the Logical Link Tree

  2011					;REMQUE - ROUTINE TO REMOVE A LINK FROM OUTQUE
  2012					;
  2013					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  2014					;		CALL REMQUE
  2015					;RETURNS: +1 ALWAYS, WITH LINK REMOVED IF QUEUED
  2016
  2017	001622'02  200 16 0 01 000002 	REMQUE:	JE LLQUE,(T1),R		;NOTHING TO DO IF THIS LINK WAS NOT QUEUED
  2018	001623'02  325 16 0 00 001526*
  2019
  2020					; INITIALIZATION
  2021
  2022	001624'02  352 00 0 00 000612*		LOCK OUTLOK		;LOCK THE QUEUE
  2023	001625'02  265 16 0 00 000743*
  2024	001626'02  201 04 0 00 000000 		MOVEI T4,0		;INITIALIZE CURRENT QUEUE ITEM
  2025	001627'02  550 03 0 00 000000*		HRRZ T3,OUTQUE		;GET ITEM AT HEAD OF QUEUE
  2026
  2027					; SEARCH THE QUEUE FOR THE DESIRED LINK
  2028
  2029	001630'02  316 03 0 00 000001 	RMQ010:	CAMN T3,T1		;FOUND DESIRED ITEM ?
  2030	001631'02  254 00 0 00 001637'		JRST RMQ020		;YES, GO REMOVE IT FROM THE QUEUE
  2031	001632'02  200 04 0 00 000003 		MOVE T4,T3		;NO, SAVE CURRENT ITEM AS PREVIOUS ITEM
  2032	001633'02  200 03 0 03 000040 		LOAD T3,LLOUT,(T3)	;MAKE NEXT ITEM CURRENT ITEM
  2033	001634'02  326 03 0 00 001630'		JUMPN T3,RMQ010		;AND GO CHECK NEW CURRENT ITEM
  2034						BUG(NSPLNQ)
  2035						  ;BUG type:    BUGCHK, SOFT
  2036						  ;BUG message: REMQUE - Link not queued
  2037						       SALL
  2038	001635'02  256 00 0 00 007473'
  2039	001636'02  263 17 0 00 000000 		RET			;SHOULD NEVER HAPPEN
  2040
  2041					; HERE WITH THE DESIRED LINK ADDRESS IN T3, PREVIOUS ITEM IN T4
  2042
  2043	001637'02  554 02 0 00 001627*	RMQ020:	HLRZ T2,OUTQUE		;GET POINTER TO TAIL OF QUEUE
  2044	001640'02  316 02 0 00 000003 		CAMN T2,T3		;REMOVING TAIL OF QUEUE ?
  2045	001641'02  506 04 0 00 001637*		HRLM T4,OUTQUE		;YES, SAVE POINTER TO NEW TAIL OF QUEUE
  2046	001642'02  200 02 0 03 000040 		LOAD T2,LLOUT,(T3)	;GET POINTER TO NEXT BLOCK
  2047	001643'02  336 00 0 00 000002 		SKIPN T2		;REMOVING HEAD OF QUEUE ?
  2048						JRST [	HRRM T2,OUTQUE	;YES, SAVE NEXT BLOCK AS NEW HEAD
  2049	001644'02  254 00 0 00 007475'			JRST RMQ030 ]	;AND CLEAN UP
  2050	001645'02  202 02 0 04 000040 		STOR T2,LLOUT,(T4)	;STORE NEXT BLOCK IN PREVIOUS
  2051
  2052					; HERE WITH ITEM REMOVED FROM QUEUE
  2053
  2054	001646'02  205 16 0 00 400000 	RMQ030:	SETZRO LLQUE,(T1)	;CLEAR "LINK ON OUTQUE" FLAG
  2055	001647'02  412 16 0 01 000002 
  2056	001650'02  476 00 0 00 001624*		UNLOCK OUTLOK		;UNLOCK THE QUEUE
  2057	001651'02  263 17 0 00 000000 		RET			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 48
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate the Logical Link Tree

  2058					;ROUTINE TO RESET AN LL BLOCK SO THAT IT CAN REVERT TO
  2059					;THE LISTENING STATE. USED WHEN A SERVER REJECTS A CONNECTION.
  2060
  2061	001652'02  265 16 0 00 001531*	CLRBLK:	ASUBR <CLRLLB>		;LL BLOCK ADDRESS
  2062	001653'02  260 17 0 00 000000#		CALL FLUSH		;FIRST GET RID OF MESSAGES
  2063	001654'02  200 16 0 00 007477'		SETZRO LLFNM,(T1)	;CLEAR CONNECTOR
  2064	001655'02  412 16 0 01 000004 
  2065	001656'02  201 16 0 00 177777 		SETZRO LLHLK,(T1)
  2066	001657'02  412 16 0 01 000004 
  2067	001660'02  205 16 0 00 770000 		SETZRO LLUCT,(T1)	;NO OPTDATA
  2068	001661'02  412 16 0 01 000013 
  2069	001662'02  200 02 0 01 000014 		LOAD T2,LLHST,(T1)
  2070	001663'02  402 00 0 02 000000 		SETZM 0(T2)		;NO REMOTE HOST NAME
  2071	001664'02  201 01 0 00 000005 		MOVEI T1,<MAXDSC+4>/4	;MAX CHARS IN DESCRIPTOR
  2072	001665'02  260 17 0 00 001300'		CALL GETBLK		;GET SWAPPABLE FREE SPACE BLOCK
  2073	001666'02  263 17 0 00 000000 		 RETBAD ()		;COULDN'T
  2074	001667'02  200 02 0 00 000001 		MOVE T2,T1		;POSITION THE ADDRESS
  2075	001670'02  200 01 0 15 000001 		MOVE T1,CLRLLB		;RETRIEVE THE LL BLOCK ADDRESS
  2076	001671'02  137 02 0 00 007471'		STOR T2,LLFDS,(T1)	;PUT BLOCK ADDRESS IN LL BLOCK
  2077	001672'02  201 16 0 00 177777 		SETZRO LLRSN,(T1)	;NO DISCONNECT REASON
  2078	001673'02  412 16 0 01 000020 
  2079	001674'02  200 16 0 01 000002 		JE LLFOB,(T1),R		;IN CASE CALLED FOR NON-OBJECT
  2080	001675'02  607 16 0 00 000001 
  2081	001676'02  254 00 0 00 001623*
  2082	001677'02  402 00 0 01 000040 		SETZM LLUSGP(T1)	;NO GROUP,USER
  2083	001700'02  513 00 0 01 000033 		SETZRO LLSOB,(T1)	;NO OBJECT #
  2084	001701'02  200 02 0 01 000035 		LOAD T2,LLUSR,(T1)	;GET USER BLOCK
  2085	001702'02  402 00 0 02 000000 		SETZM 0(T2)		;NO USER
  2086	001703'02  200 02 0 01 000036 		LOAD T2,LLACT,(T1)	;GET ACCOUNT BLOCK
  2087	001704'02  402 00 0 02 000000 		SETZM 0(T2)		;NONE
  2088	001705'02  205 16 0 00 770000 		SETZRO LLPCT,(T1)	;NO PASSWORD DATA
  2089	001706'02  412 16 0 01 000037 
  2090	001707'02  263 17 0 00 000000 		RET			;AND DONE
  2091
  2092						ENDAS.
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 49
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate the Logical Link Tree

  2093
  2094					;ROUTINE TO GET A LL ADDRSS AND INSERT A NODE IN THE TREE
  2095					;MUST BE CALLED WITH LL LOCK LOCKED.
  2096					;ACCEPTS:	T1/ BLOCK ADDRESS
  2097					;RETURNS:	+1 SOME SORT OF FAILURE (SHOULDN'T HAPPEN)
  2098					;		+2 INSERTED.
  2099
  2100	001710'02  265 16 0 00 001652*	MAKLNK:	ASUBR <SAVADR>		;SAVE BLOCK ADDRESS
  2101	001711'02  205 01 0 00 000000#		MOVSI T1,-LLBIT		;# OF WORDS IN BIT TABLE
  2102	001712'02  200 02 0 00 007500'		MOVE T2,[LLBITS]	;THE TABLE ITSELF
  2103	001713'02  336 03 0 02 000000 	MAKLN1:	SKIPN T3,0(T2)		;HAVE SOME BITS?
  2104						JRST [	AOS T2		;NO. NEXT WORD THEN
  2105							AOBJN T1,MAKLN1	;SEE IF ANY MORE
  2106							MOVEI T1,DCNX5	;NO MORE LINKS
  2107	001714'02  254 00 0 00 007501'			RET]		;AND DONE
  2108	001715'02  243 03 0 00 001716'		JFFO T3,.+1		;COMNPUTE LEADING ZEROES
  2109	001716'02  200 03 0 04 001275*		MOVE T3,BITS(T4)	;GET THE BIT
  2110	001717'02  412 03 0 02 000000 		ANDCAM T3,0(T2)		;TURN IT OFF
  2111	001720'02  553 00 0 00 000001 		HRRZS T1		;GET # OF FULL WORDS SKIPPED
  2112	001721'02  221 01 0 00 000044 		IMULI T1,44		;COMPUTE SKIPPED BITS
  2113	001722'02  271 01 0 04 000000 		ADDI T1,0(T4)		;THE INDEX
  2114	001723'02  550 02 0 00 000000*		HRRZ T2,TODCLK		;GET THE CURRENT CLOCK
  2115	001724'02  242 02 0 00 000000*		LSH T2,MAXEXP		;ZERO RIGHT-HAND BITS
  2116	001725'02  405 02 0 00 177777 		ANDI T2,177777		;GET A 16 BIT QUANTITY
  2117	001726'02  271 02 0 01 000000 		ADDI T2,0(T1)		;FORM LL ADDRESS
  2118	001727'02  200 01 0 15 000001 		MOVE T1,SAVADR		;GET BACK BLOCK ADDRESS
  2119	001730'02  542 02 0 01 000002 		STOR T2,LLLNK,(T1)	;PUT IN THE ADDRESS
  2120	001731'02  200 02 0 00 001521*		MOVE T2,FORKX		;PUT IN FORK OWNER
  2121	001732'02  506 02 0 01 000003 		STOR T2,LLFRK,(T1)	;TO THE BLOCK
  2122	001733'02  260 17 0 00 001735'		CALL ADDLNK		;AND GO ADD IN THE LINK
  2123	001734'02  254 00 0 00 001502*		RETSKP			;DONE
  2124
  2125					;ROUTINE TO ADD A BLOCK TO THE LL TREE
  2126					;ACCEPTS:	T1/BLOCK TO ADD
  2127					;RETURNS:	+1 ALWAYS.
  2128					;MUST BE CALLED WITH TREE LOCKED
  2129
  2130	001735'02  265 16 0 00 001710*	ADDLNK:	ASUBR <SAVBLK>		;SAVE BLOCK ADDRESS
  2131	001736'02  550 01 0 01 000002 		LOAD T1,LLLNK,(T1)	;GET LINK I.D.
  2132	001737'02  474 02 0 00 000000 		SETO T2,		;NO HOST CHECK
  2133	001740'02  260 17 0 00 000000#		CALL LLLKUP		;GO GET INSERT POINT
  2134	001741'02  334 00 0 00 000000 		 SKIPA			;GOOD
  2135						BUG (ADDONF)
  2136						  ;BUG type:    BUGHLT, SOFT
  2137						  ;BUG message: ADDOBJ-LLLKUP FAILED
  2138						       SALL
  2139	001742'02  256 00 0 00 007505'
  2140	001743'02  200 02 0 15 000001 		MOVE T2,SAVBLK		;GET BACK LL BLOCK
  2141						JUMPE T1,[MOVEM T2,LLHEAD ;FIRST ONE
  2142	001744'02  322 01 0 00 007507'			RET]		;AND DONE
  2143	001745'02  550 03 0 02 000002 		LOAD T3,LLLNK,(T2)	;GET THIS LINK I.D.
  2144	001746'02  550 04 0 01 000002 		LOAD T4,LLLNK,(T1)	;GET INSERT I.D.
  2145	001747'02  311 03 0 00 000004 		CAML T3,T4
  2146						JRST [	STOR T2,LLUPL,(T1)
  2147	001750'02  254 00 0 00 007511'			RET]		;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 49-1
NSPSRV	MAC	 6-Apr-82 10:58		Routines to Manipulate the Logical Link Tree

  2148	001751'02  137 02 0 00 007374'		STOR T2,LLDWN,(T1)	;NEW LINK
  2149	001752'02  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 50
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2150					SUBTTL	More Link Creation Routines
  2151
  2152					;ROUTINE CALLED FROM GTJFN TO VERIFY AN ATTRIBUTE
  2153					;ACCEPTS:	T1/ BLOCK ADDRESS
  2154					;		T2/ ATTRIBUTE VALUE
  2155					;RETURNS:	+1 INVALID. ERROR CODE IN T1
  2156					;		+2 GOOD ATTRIBUTE
  2157
  2158	001753'02  265 16 0 00 001073*	NETATR::ACVAR <W1>		;GET A WORK REG
  2159	001754'02  205 03 0 00 777772 		MOVSI T3,-MAXNTA	;# OF ATTRIBUTES IN TABLE
  2160	001755'02  135 16 0 00 007513'	NETAT2:	OPSTR <CAME T2,>,NTATR,ATTRTB(T3) ;IS THIS IT?
  2161	001756'02  312 02 0 00 000016 
  2162						JRST [	AOBJN T3,NETAT2	;DO ALL OF THEM
  2163	001757'02  254 00 0 00 007514'			RETBAD (GJFX49)] ;COULDN'T FIND IT
  2164	001760'02  135 05 0 00 007516'		LOAD W1,NTATB,ATTRTB(T3) ;FOUND IT. GET BINARY BIT
  2165	001761'02  135 02 0 00 007517'		LOAD T2,NTATC,ATTRTB(T3) ;GET MAX COUNT
  2166	001762'02  332 00 0 00 000005 		SKIPE W1		;BINARY?
  2167	001763'02  221 02 0 00 000003 		IMULI T2,3		;YES. ADJUST COUNT
  2168	001764'02  505 01 0 00 010700 		HRLI T1,(<POINT 7,0,34>) ;FORM A BYTE POINTER
  2169	001765'02  134 04 0 00 000001 	CNTLOP:	ILDB T4,T1		;GET NEXT BYTE
  2170	001766'02  322 04 0 00 001776'		JUMPE T4,NETAT1		;IF NULL, DONE
  2171	001767'02  361 02 0 00 007522'		SOJL T2,[RETBAD (GJFX50)] ;ATTRIBUTE TOO LONG
  2172	001770'02  322 05 0 00 001765'		JUMPE W1,CNTLOP		;IF NOT BINARY, GO GET MORE
  2173	001771'02  301 04 0 00 000060 		CAIL T4,"0"		;IS BINARY. CHECK RANGE
  2174	001772'02  303 04 0 00 000067 		CAILE T4,"7"		;""
  2175	001773'02  334 00 0 00 000000 		SKIPA
  2176	001774'02  254 00 0 00 001765'		JRST CNTLOP		;GOOD RANGE
  2177	001775'02  254 00 0 00 007520'		RETBAD (GJFX50)		;INVALID
  2178	001776'02  135 02 0 00 007523'	NETAT1:	LOAD T2,NTATE,ATTRTB(T3) ;GET EXCLUSION PARTNER
  2179	001777'02  332 00 0 00 000002 		SKIPE T2		;HAVE ONE?
  2180	002000'02  260 17 0 00 002427'		CALL FNDATR		;YES. GO LOOK FOR IT
  2181	002001'02  254 00 0 00 001734*		 RETSKP			;NOT THERE. ERGO, GOOD ARG
  2182	002002'02  254 00 0 00 007524'		RETBAD (GJFX45)		;CONFLICT
  2183
  2184						ENDAV.			;END ACVAR
  2185
  2186					;THE ATTRIBUTE TABLE
  2187
  2188	002003'02  000000000000#	ATTRTB:	ATTENT (.PFUDT,0,^D16,0)
  2189	002004'02  000000000000#		ATTENT (.PFPWD,0,^D8,.PFBPW)
  2190	002005'02  000000000000#		ATTENT (.PFBPW,1,^D8,.PFPWD)
  2191	002006'02  000000000000#		ATTENT (.PFACN,0,^D16,0)
  2192	002007'02  000000000000#		ATTENT (.PFOPT,0,^D16,.PFBOP)
  2193	002010'02  000000000000#		ATTENT (.PFBOP,1,^D16,.PFOPT)
  2194		   	   000006	MAXNTA==.-ATTRTB
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 51
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2195
  2196
  2197					;ROUTINES TO OPEN NETWORK CONNECTION. CALLED FROM OPENF JSYS
  2198
  2199					;OPEN SRC JFN
  2200
  2201	002011'02  265 16 0 00 001753*	SRCOPN::ACVAR <W1>		;GET A WORK REG
  2202	002012'02  265 16 0 00 001374*		TRVAR <NTCNT,NTPNT,NTOBJ,NTDSC,NTDSS>
  2203	002013'02  000005  000005
  2204	002014'02  554 01 0 11 000342*		HLRZ T1,FILNEN(JFN)	;GET NAME FOR THE CONNECTION
  2205	002015'02  260 17 0 00 000171'		CALL SRCNAM		;PARSE NETWORK NAME
  2206	002016'02  263 17 0 00 000000 		 RETBAD()		;ERROR
  2207	002017'02  260 17 0 00 000271'		CALL OPNSRC		;GO DO COMMON OPEN SETUP
  2208	002020'02  263 17 0 00 000000 		 RETBAD()		;FAILED
  2209	002021'02  200 05 0 00 000001 		MOVE W1,T1		;SAVE LL BLOCK
  2210	002022'02  337 02 0 15 000003 		SKIPG T2,NTOBJ		;GET OBJECT TYPE
  2211	002023'02  254 00 0 00 002025'		JRST NOOOBJ		;NONE GIVEN
  2212	002024'02  506 02 0 05 000033 		STOR T2,LLNAM,(W1)	;SAVE OBJECT
  2213	002025'02  336 01 0 15 000004 	NOOOBJ:	SKIPN T1,NTDSC		;HAVE A DESCRIPTOR?
  2214	002026'02  254 00 0 00 002050'		JRST NODESC		;NO. GO ON
  2215	002027'02  271 01 0 00 000004 		ADDI T1,4
  2216	002030'02  231 01 0 00 000005 		IDIVI T1,5		;COMPUTE WORDS NEEDED
  2217	002031'02  260 17 0 00 001300'		CALL GETBLK		;GET ONE
  2218	002032'02  263 17 0 00 000000 		 RETBAD ()		;FAILED, RETURN ERROR CODE
  2219	002033'02  202 01 0 05 000034 		STOR T1,LLDSC,(W1)	;SAVE POINTER
  2220	002034'02  200 02 0 15 000005 		MOVE T2,NTDSS		;GET STRING POINTER
  2221	002035'02  200 03 0 15 000004 		MOVE T3,NTDSC		;GET COUNT
  2222	002036'02  260 17 0 00 001321'		CALL MOVST1		;MOVE THW STRING
  2223	002037'02  201 01 0 00 002071'		MOVEI T1,OPNUNQ		;MUST VERIFY UNIQUENESS OF NAME
  2224	002040'02  402 00 0 00 000002 		SETZM T2		;NEED TO CHECK OBJECTS ONLY
  2225	002041'02  260 17 0 00 001176'		CALL OBJSRC		;DO IT
  2226	002042'02  254 00 0 00 002050'		 JRST NODESC		;NOT FOUND. CAN HAVE IT
  2227	002043'02  554 02 0 01 000003 		LOAD T2,LLFRK,(T1)	;FOUND ONE. WHICH JOB?
  2228	002044'02  554 02 0 02 001522*		HLRZ T2,FKJOB(T2)	;""
  2229	002045'02  201 01 0 00 602024 		MOVEI T1,DCNX9		;DUPICATE NAME ERROR
  2230	002046'02  312 02 0 00 000000*		CAME T2,JOBNO		;THIS JOB?
  2231	002047'02  254 00 0 00 002103'		JRST SRCFAL		;NO. CAN'T HAVE IT
  2232	002050'02  260 17 0 00 002111'	NODESC:	CALL GTSBLK		;GET A BLOCK FOR USER NAME
  2233	002051'02  254 00 0 00 002103'		 JRST SRCFAL		;NONE
  2234	002052'02  202 01 0 05 000035 		STOR T1,LLUSR,(W1)	;SAVE IT
  2235	002053'02  260 17 0 00 002111'		CALL GTSBLK		;GET A BLOCK FOR THE ACCOUNT
  2236	002054'02  254 00 0 00 002103'		 JRST SRCFAL		;NONE
  2237	002055'02  202 01 0 05 000036 		STOR T1,LLACT,(W1)	;SAVE IT
  2238	002056'02  260 17 0 00 002111'		CALL GTSBLK		;GET A BLOCK FOR THE PASSWORD
  2239	002057'02  254 00 0 00 002103'		 JRST SRCFAL		;NONE
  2240	002060'02  137 01 0 00 007526'		STOR T1,LLPSW,(W1)	;SAVE IT
  2241	002061'02  260 17 0 00 000115'		CALL ASGWDW		;GO GET WINDOW PAGES
  2242	002062'02  254 00 0 00 002103'		 JRST SRCFAL		;FAILED
  2243	002063'02  201 01 0 00 000001 		MOVEI T1,LLSLIS		;GET INITIAL STATE
  2244	002064'02  137 01 0 00 007527'		STOR T1,LLSTA,(W1)	;SET UP THIS LISTENER
  2245	002065'02  205 16 0 00 000001 		SETONE LLFOB,(W1)	;SAY THIS IS AN OBJECT
  2246	002066'02  436 16 0 05 000002 
  2247	002067'02  260 17 0 00 000000#		LLLULK			;FREE LOCK
  2248	002070'02  254 00 0 00 002001*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 52
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2249
  2250					;COROUTINE OF SRCOPN TO CHECK FOR UNIQUE NAME
  2251
  2252	002071'02  265 16 0 00 001614*	OPNUNQ:	SAVET			;SAVE TEMPS
  2253	002072'02  554 02 0 01 000033 		LOAD T2,LLNAM,(T1)	;GET OBJECT NUMBER
  2254	002073'02  554 16 0 05 000033 		OPSTR <CAME T2,>,LLNAM,(W1) ;SAME AS OURS?
  2255	002074'02  312 02 0 00 000016 
  2256	002075'02  263 17 0 00 000000 		RET			;NO. NO CONFLICT THEN
  2257	002076'02  200 01 0 01 000034 		LOAD T1,LLDSC,(T1)	;GET ITS DESCRIPTOR
  2258	002077'02  200 02 0 05 000034 		LOAD T2,LLDSC,(W1)	;GET OURS
  2259	002100'02  260 17 0 00 001530*		CALL CMPSTR		;SEE IF A MATCH
  2260	002101'02  263 17 0 00 000000 		 RET			;NO.
  2261	002102'02  254 00 0 00 002070*		RETSKP			;YES. COULD BE A PROBLEM
  2262
  2263					;OPEN FAILURE ROUTINE. CLEAN UP FROM ATTEMPT
  2264
  2265	002103'02  370 00 0 00 001425*	SRCFAL:	DECR DCCUR		;ONE LESS LINK ON FAILURE
  2266	002104'02  250 01 0 00 000005 		EXCH T1,W1		;GET BLOCK ADDRESS
  2267	002105'02  260 17 0 00 001531'		CALL DELNOD		;FREE THE NODE
  2268	002106'02  260 17 0 00 000000#		LLLULK			;UNLOCK THE TREE
  2269	002107'02  200 01 0 00 000005 		MOVE T1,W1		;GET ERROR CODE
  2270	002110'02  263 17 0 00 000000 		RET			;AND FAIL
  2271
  2272					;LOCAL ROUTINE TO GET A STRING BLOCK FOR SRCOPN.
  2273
  2274	002111'02  201 01 0 00 000005 	GTSBLK:	MOVEI T1,OPTSIZ		;THE PROPER SIZE
  2275	002112'02  260 17 0 00 001300'		CALL GETBLK		;GET ONE
  2276	002113'02  263 17 0 00 000000 		 RET			;FAILED
  2277	002114'02  254 00 0 00 002102*		RETSKP			;GOT IT
  2278
  2279						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 53
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2280					;CRTLNK - ROUTINE TO CREATE A LOGICAL LINK
  2281					;
  2282					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  2283					;	    T2/	ADDRESS OF ATRIBUTE LIST
  2284					;	    T3/	OBJECT,,COUNT OF BYTES IN DESCRIPTOR
  2285					;	    T4/	POINTER TO DESCRIPTOR STRING
  2286					;	 TRVARS -- NTCNT,NTPNT,NTOBJ,NTDSC,NTDSS,NTHST,NTHSC
  2287					;
  2288					;		CALL CRTLNK
  2289					;RETURNS: +1	 FAILED, ERROR CODE IN T1
  2290					;	  +2	SUCCESS
  2291
  2292	002115'02  265 16 0 00 000000*	CRTLNK::ACVAR <W1,W2,W3>	;GET A WORK REGISTER
  2293	002116'02  265 16 0 00 001321*		STKVAR <CRLATR,CRLCIB,CRLCNT,CRLOBJ,CRLHST,CRLHSC,CRLDSS,CRLDSC>
  2294	002117'02  000010  000010
  2295
  2296					; SAVE INPUT ARGUMENTS
  2297
  2298	002120'02  200 05 0 00 000001 		MOVE W1,T1		;SAVE LL BLOCK ADDRESS
  2299	002121'02  202 02 0 17 777776 		MOVEM T2,CRLATR		;SAVE ATTRIBUTE LIST POINTER
  2300	002122'02  556 03 0 17 777773 		HLRZM T3,CRLOBJ		;SAVE OBJECT
  2301	002123'02  572 03 0 17 777767 		HRREM T3,CRLDSC		;SAVE COUNT OF BYTES IN DESCRIPTOR
  2302	002124'02  202 04 0 17 777770 		MOVEM T4,CRLDSS		;SAVE DESCRIPTOR POINTER
  2303
  2304	002125'02  200 01 0 17 777773 		MOVE T1,CRLOBJ		;GET OBJECT
  2305	002126'02  137 01 0 00 007530'		STOR T1,LLFNM,(W1)	;SAVE IT
  2306	002127'02  337 03 0 17 777767 		SKIPG T3,CRLDSC		;ANY DESCRIPTOR GIVEN
  2307	002130'02  254 00 0 00 002134'		JRST DSCNUL		;NO, SKIP MOVING STRING
  2308	002131'02  135 01 0 00 007531'		LOAD T1,LLFDS,(W1)	;GET DESCRIPTOR BLOCK
  2309	002132'02  200 02 0 17 777770 		MOVE T2,CRLDSS		;GET JSB STRING POINTER
  2310	002133'02  260 17 0 00 001321'		CALL MOVST1		;AND MOVE IT
  2311
  2312					;ALL STRINGS ARE MOVED. MUST GENERATE CONNECT-INITIATE MESSAGE
  2313
  2314	002134'02  201 01 0 00 000046 	DSCNUL:	MOVEI T1,CONLEN+MSHDR+RTHLEN ;GET A BLOCK FOR THE CI
  2315	002135'02  260 17 0 00 000000#		CALL GETRES		;GET A RESIDENT BLOCK
  2316	002136'02  263 17 0 00 000000 		 RETBAD ()		;FAILED, RETURN ERROR
  2317	002137'02  202 01 0 17 777775 		MOVEM T1,CRLCIB		;SAVE BLOCK ADDRESS
  2318	002140'02  505 01 0 00 441000 		HRLI T1,(<POINT 8,>)	;MAKE A BYTE POINTER
  2319	002141'02  271 01 0 00 000007 		ADDI T1,MSHDR		;RESERVE HEADER
  2320	002142'02  202 01 0 05 000016 		MOVEM T1,LLBPTR(W1)	;SAVE IN LL BLOCK
  2321	002143'02  402 00 0 05 000017 		SETZM LLBPCT(W1)	;ZERO COUNT
  2322	002144'02  200 01 0 00 000005 		MOVE T1,W1		;LL BLOCK ADDRESS
  2323	002145'02  201 02 0 00 000030 		MOVEI T2,CNMRFL+CNMCI	;MESSAGE FLAGS
  2324	002146'02  260 17 0 00 000000#		CALL RTHDCI		;PUT ON ROUTING HEADER AND FLAGS
  2325	002147'02  260 17 0 00 002335'		CALL DOSRVS		;INSERT LL ADDRESSES AND STANDARD SERVICES
  2326						;..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 54
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2327
  2328						; ..
  2329
  2330					;NOW BUILD OBJECT ADDRESSING FIELDS
  2331
  2332	002150'02  337 00 0 17 777767 		SKIPG CRLDSC		;HAVE A COUNT FOR DESCRIPTOR
  2333						JRST [	MOVEI T2,OBJZRO	;GET OBJECT TYPE ZERO INDICATOR
  2334							CALL ONEBYT
  2335							MOVE T2,CRLOBJ	;GET OBJECT TYPE
  2336							CALL ONEBYT
  2337							LOAD T1,LLFDS,(W1) ;GET DESCRIPTOR STRING
  2338							SETZRO LLFDS,(W1) ;CLEAR LOCATION
  2339							CALL RELBLK	;RELEASE UNUSED BLOCK
  2340							MOVE T1,W1	;RESTORE LL BLOCK ADDRESS
  2341	002151'02  254 00 0 00 007532'			JRST DSCDON]	;DONE WITH THIS
  2342	002152'02  201 02 0 00 000001 		MOVEI T2,OBJONE		;GET OBJECT TYPE 1
  2343	002153'02  260 17 0 00 000000#		CALL ONEBYT		;STORE HEADER
  2344	002154'02  200 02 0 17 777773 		MOVE T2,CRLOBJ		;GET OBJECT NUMBER
  2345	002155'02  260 17 0 00 000000#		CALL ONEBYT		;PUT IT IN
  2346	002156'02  135 03 0 00 007471'		LOAD T3,LLFDS,(T1)	;GET DESCRIPTOR STRING
  2347	002157'02  260 17 0 00 000000#		CALL ASCIIZ		;PUT IT IN
  2348
  2349					;MESSAGE BUILT. INSERT SENDER'S NAME AND USER DATA
  2350
  2351	002160'02  201 02 0 00 000001 	DSCDON:	MOVEI T2,OBJONE		;SENDER IS A TASK
  2352	002161'02  260 17 0 00 000000#		CALL ONEBYT
  2353	002162'02  201 02 0 00 000000 		MOVEI T2,OBJTSK		;THE I.D. FOR TASK
  2354	002163'02  260 17 0 00 000000#		CALL ONEBYT
  2355	002164'02  135 03 0 00 007402'		LOAD T3,LLTSK,(T1)	;GET POINTER TO TASK NAME
  2356	002165'02  260 17 0 00 000000#		CALL ASCIIZ		;AND INSERT IT
  2357
  2358					;NOW CHECK FOR AND INSERT ANY OPTIONAL DATA
  2359
  2360	002166'02  200 01 0 00 000005 		MOVE T1,W1		;GET LOGICAL LINK BLOCK ADDRESS
  2361	002167'02  200 02 0 17 777776 		MOVE T2,CRLATR		;GET ADDRESS OF ATTRIBUTE LIST
  2362	002170'02  260 17 0 00 002177'		CALL INSATR		;GO INSERT ATTRIBUTES IN MESSAGE
  2363
  2364	002171'02  201 02 0 00 000002 		MOVEI T2,LLSCIS		;GET NEW STATE
  2365	002172'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;STORE NEW STATE
  2366	002173'02  260 17 0 00 000000#		LLLULK			;RELEASE TREE NOW
  2367	002174'02  200 02 0 17 777775 		MOVE T2,CRLCIB		;GET BLOCK ADDRESS
  2368	002175'02  260 17 0 00 000000#		CALL SNDCTL		;SEND MESSAGE TO THE NETWORK
  2369	002176'02  254 00 0 00 002114*		RETSKP			;AND DONE FOR NOW
  2370
  2371						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 55
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2372					;INSATR - ROUTINE TO INSERT ATTRIBUTE VALUES INTO THE CI MESSAGE
  2373					;
  2374					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  2375					;	    T2/	ADDRESS OF ATTRIBUTE TABLE
  2376					;		CALL INSATR
  2377					;RETURNS: +1 ALWAYS
  2378
  2379	002177'02  265 16 0 00 002116*	INSATR:	STKVAR <INALLB,INAATR,INAPNT,INACNT>
  2380	002200'02  000004  000004
  2381	002201'02  202 01 0 17 777776 		MOVEM T1,INALLB		;SAVE LOGICAL LINK ADDRESS
  2382	002202'02  202 02 0 17 777775 		MOVEM T2,INAATR		;SAVE ATTRIBUTE LIST ADDRESS
  2383
  2384	002203'02  200 01 0 17 777776 		MOVE T1,INALLB		;GET LOGICAL LINK BLOCK ADDRESS
  2385	002204'02  400 02 0 00 000000 		SETZ T2,		;DEFAULT MENU BYTE
  2386	002205'02  260 17 0 00 000000#		CALL ONEBYT		;PUT IT IN
  2387	002206'02  200 03 0 01 000016 		MOVE T3,LLBPTR(T1)	;GET POINTER TO MENU
  2388	002207'02  202 03 0 17 777774 		MOVEM T3,INAPNT		;SAVE IT
  2389	002210'02  201 02 0 00 000001 		MOVEI T2,1		;ASSUME WILL BE PRESENT
  2390	002211'02  202 02 0 17 777773 		MOVEM T2,INACNT		;SET IT
  2391	002212'02  201 02 0 00 000000*		MOVEI T2,.PFUDT		;SEE IF USER I.D. GIVEN
  2392	002213'02  200 03 0 17 777775 		MOVE T3,INAATR		;GET ATTRIBUTE LIST ADDRESS
  2393	002214'02  260 17 0 00 002431'		CALL GETATR		;IS IT?
  2394						 JRST [	SETZM T2	;NOT THERE.
  2395							CALL ONEBYT	;SAY IS NULL
  2396	002215'02  254 00 0 00 007544'			JRST DOSPW1]	;AND GO ON TO PASSWORD
  2397	002216'02  260 17 0 00 000000#		CALL ASCIIZ		;PUT IN THE DATA
  2398	002217'02  201 02 0 00 000000*	DOSPW1:	MOVEI T2,.PFPWD		;SEE IF A PASSWORD IS GIVEN
  2399	002220'02  200 03 0 17 777775 		MOVE T3,INAATR		;GET ATTRIBUTE LIST ADDRESS
  2400	002221'02  260 17 0 00 002431'		CALL GETATR		;IS IT?
  2401						 JRST [	MOVEI T2,.PFBPW	;NO. SEE ABOUT ALTERNATE FORM
  2402							MOVE T3,INAATR	;GET ATTRIBUTE LIST ADDRESS
  2403							CALL GETATR	;IS IT?
  2404							 JRST [	SETZ T2, ;NO.
  2405								CALL ONEBYT ;INSERT A PLACEHOLDER
  2406								JRST DOACT] ;AND GO ON
  2407							MOVEI T4,BININ	;YES. INSERT BINARY VALUE
  2408	002222'02  254 00 0 00 007552'			JRST DOPSWD]
  2409	002223'02  201 04 0 00 000000#		MOVEI T4,ASCIIZ		;YES. INSERT ASCII FORM
  2410	002224'02  260 17 0 04 000000 	DOPSWD:	CALL 0(T4)		;PUT IT IN
  2411	002225'02  201 02 0 00 000000*	DOACT:	MOVEI T2,.PFACN		;SEE IF AN ACCOUNT
  2412	002226'02  200 03 0 17 777775 		MOVE T3,INAATR		;GET ATTRIBUTE LIST ADDRESS
  2413	002227'02  260 17 0 00 002431'		CALL GETATR		;IS IT?
  2414	002230'02  201 03 0 00 007220'		 MOVEI T3,[0]		;NO. PUT IN NULL STRING
  2415	002231'02  260 17 0 00 000000#		CALL ASCIIZ		;YES. PUT IT IN
  2416						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 56
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2417						; ..
  2418
  2419	002232'02  201 02 0 00 000000*		MOVEI T2,.PFOPT		;HAVE OPTIONAL USER DATA?
  2420	002233'02  200 03 0 17 777775 		MOVE T3,INAATR		;GET ATTRIBUTE LIST ADDRESS
  2421	002234'02  260 17 0 00 002431'		CALL GETATR		;IS IT?
  2422						 JRST [	MOVEI T2,.PFBOP	;NO. TRY OTHER FORM
  2423							MOVE T3,INAATR	;GET ATTRIBUTE LIST ADDRESS
  2424							CALL GETATR	;IS IT?
  2425							 JRST INMENU	;NO USER DATA
  2426							MOVEI T4,BININ	;FOUND IT
  2427	002235'02  254 00 0 00 007560'			JRST DOOPT]	;PUT IT IN
  2428	002236'02  201 04 0 00 000000#		MOVEI T4,ASCIIZ		;FOUND ASCII FORM
  2429	002237'02  201 02 0 00 000002 	DOOPT:	MOVEI T2,2		;SAY FOUND OPTDATA
  2430	002240'02  436 02 0 17 777773 		IORM T2,INACNT		;TO THE MENU
  2431	002241'02  260 17 0 04 000000 		CALL 0(T4)		;INSERT IT
  2432	002242'02  200 02 0 17 777773 	INMENU:	MOVE T2,INACNT		;GET FINAL MENU
  2433	002243'02  137 02 0 17 777774 		DPB T2,INAPNT		;PUT IT IN THE MESSAGE
  2434	002244'02  263 17 0 00 000000 		RET			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 57
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2435					;STRSAV - ROUTINE TO SAVE NAME STRINGS ON LINK CREATION
  2436					;
  2437					;ACCEPTS IN TRVARS:	NTHST, NTHSC, NTDSS, NTDSC, NTOBJ
  2438					;	    T1/	ADDRESS OF LL BLOCK
  2439					;	    T2/	COUNT OF HOST STRING BYTES,,COUNT OF DESCRIPTOR STRING BYTES
  2440					;	    T3/	POINTER TO HOST NAME STRING
  2441					;	    T4/	POINTER TO DESCRIPTOR STRING
  2442					;		CALL STRSAV
  2443					;RETURNS: +1	 FAILED, ERROR CODE IN T1
  2444					;	  +2	SUCCESS, STRINGS SAVED
  2445
  2446	002245'02  265 16 0 00 002115*	STRSAV::ACVAR <W1,W2,W3>
  2447	002246'02  265 16 0 00 002177*		STKVAR <SSVHST,SSVHSC,SSVDSC,SSVDSS>
  2448	002247'02  000004  000004
  2449	002250'02  576 02 0 17 777775 		HLREM T2,SSVHSC		;SAVE HOST STRING BYTE COUNT
  2450	002251'02  572 02 0 17 777774 		HRREM T2,SSVDSC		;SAVE DESCRIPTOR BYTE COUNT
  2451	002252'02  202 03 0 17 777776 		MOVEM T3,SSVHST		;SAVE HOST NAME STRING POINTER
  2452	002253'02  202 04 0 17 777773 		MOVEM T4,SSVDSS		;SAVE DESCRIPTOR STRING POINTER
  2453	002254'02  200 05 0 00 000001 		MOVE W1,T1		;SAVE LL BLOCK ADDRESS
  2454	002255'02  337 03 0 17 777775 		SKIPG T3,SSVHSC		;HAVE A HOST NAME?
  2455						JRST [	SETONE LLLOC,(W1) ;NOTE THIS IS A LOCAL LINK
  2456							SKIPL W2,NSPLPB	;GET PORT FOR LOOPBACK
  2457							RETSKP		;NOT ACTIVE
  2458							MOVE T2,[POINT 7,OURNAM] ;POINT TO OUR NAME
  2459							MOVE T3,OURCNT	;LENGTH OF OUR NAME
  2460	002256'02  254 00 0 00 007567'			JRST DCNOP8 ]	;USE LOOPBACK PORT FOR LINK
  2461	002257'02  312 03 0 00 000000*		CAME T3,OURCNT		;SAME COUNT AS OUR NAME?
  2462	002260'02  254 00 0 00 002272'		JRST DCNOP0		;NO. CAN'T BE US THEN
  2463	002261'02  200 01 0 17 777776 		MOVE T1,SSVHST		;GET BLOCK POINTER
  2464	002262'02  200 02 0 00 007566'		MOVE T2,[POINT 7,OURNAM] ;GET POINTER TO OUR NAME
  2465	002263'02  260 17 0 00 002322'		CALL COMPAR		;SEE IF THE SAME
  2466	002264'02  254 00 0 00 002272'		 JRST DCNOP0		;NO. SAVE IT THEN
  2467	002265'02  205 16 0 00 200000 		SETONE LLLOC,(W1)	;YES, NOTE LOCAL LINK
  2468	002266'02  436 16 0 05 000002 
  2469	002267'02  331 06 0 00 000000*		SKIPL W2,NSPLPB		;GET PORT FOR LOOPBACK
  2470	002270'02  254 00 0 00 002176*		RETSKP			;NONE SO JUST RETURN
  2471	002271'02  254 00 0 00 002314'		JRST DCNOP7		;HAVE PORT TO USE
  2472	002272'02  201 06 0 00 000000*	DCNOP0:	MOVEI W2,DCN		;GET NUMBER OF PORTS
  2473	002273'02  476 00 0 00 000007 		SETOM W3		;WHERE TO REMEMBER MCB PORT
  2474	002274'02  370 00 0 00 000006 	DCNOP2:	SOS W2			;MAKE NEXT PORT NUMBER
  2475	002275'02  335 02 0 06 001401*		SKIPGE T2,MCBDTE(W2)	;IS PORT ACTIVE ?
  2476	002276'02  603 02 0 00 100000 		TXNE T2,NTSHUT		;IS PORT SHUTTING DOWN ?
  2477	002277'02  254 00 0 00 002313'		JRST DCNOP3		;CAN'T USE THIS ONE
  2478	002300'02  607 02 0 00 040000 		TXNN T2,NOTMCB		;IS THIS AN MCB?
  2479	002301'02  550 07 0 00 000006 		HRRZ W3,W2		;YES. REMEMBER PORT THEN
  2480	002302'02  200 03 0 17 777775 		MOVE T3,SSVHSC		;GET COUNT OF CHARS IN NAME
  2481	002303'02  135 16 0 00 007576'		OPSTR <CAME T3,>,NAMCN,MCBDTE(W2) ;SAME COUNT AS NODE NAME?
  2482	002304'02  312 03 0 00 000016 
  2483	002305'02  254 00 0 00 002313'		JRST DCNOP3		;NO. THIS CAN'T BE IT THEN
  2484	002306'02  201 02 0 06 000000*		MOVEI T2,ITSNAM(W2)	;ALMOST ADR OF NEIGHBOR'S NAME
  2485	002307'02  271 02 0 06 000000 		ADDI T2,(W2)		;MAKE NEIGHBORS NAME
  2486	002310'02  505 02 0 00 440700 		HRLI T2,(POINT 7,)	;FORM POINTER TO NAME
  2487	002311'02  200 01 0 17 777776 		MOVE T1,SSVHST		;GET BLOCK POINTER AGAIN
  2488	002312'02  260 17 0 00 002322'		CALL COMPAR		;SEE IF THIS MATCHES
  2489					DCNOP3:	 JRST [JUMPG W2,DCNOP2	;DIDN'T MATCH, MORE TO CHECK?
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 57-1
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2490						       SKIPGE W2,W3	;NO, WAS THERE AN MCB?
  2491						       RETBAD (DCNX13)	;NO, "NODE NOT ACCESSIBLE"
  2492	002313'02  254 00 0 00 007601'		       JRST .+1]	;YES, SEND CONNECT TO THE MCB
  2493	002314'02  200 02 0 17 777776 	DCNOP7:	MOVE T2,SSVHST		;GET POINTER TO STRING TO BE MOVED
  2494	002315'02  200 03 0 17 777775 		MOVE T3,SSVHSC		;GET COUNT
  2495	002316'02  137 06 0 00 007605'	DCNOP8:	STOR W2,LLPRT,(W1)	;SAVE PORT #
  2496	002317'02  200 01 0 05 000014 		LOAD T1,LLHST,(W1)	;GET ADDRESS OF HOST STRING
  2497	002320'02  260 17 0 00 001321'		CALL MOVST1		;AND MOVE IT
  2498	002321'02  254 00 0 00 002270*		RETSKP			;DONE, ALL STRINGS SAVED. RETURN SUCCESS.
  2499
  2500						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 58
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2501					;LOCAL ROUTINE FOR STRSAV TO COMPARE TWO STRINGS
  2502					;ACCEPTS:	T1/ POINTER TO STRING 1
  2503					;		T2/ POINTER TO STRING 2
  2504					;		T3/ COUNT
  2505					;RETURNS:	+1 NO MATCH
  2506					;		+2 MATCH
  2507
  2508	002322'02  265 16 0 00 002245*	COMPAR:	ACVAR <W1,W2,W3>	;GET SOME REGS
  2509	002323'02  200 05 0 00 000001 		MOVE W1,T1		;COPY POINTER TO FIRST STRING
  2510	002324'02  200 06 0 00 000002 		MOVE W2,T2		;COPY POINTER TO SECOND STRING
  2511	002325'02  200 07 0 00 000003 		MOVE W3,T3		;SAV COUNT
  2512	002326'02  134 03 0 00 000005 	CMPRLP:	ILDB T3,W1		;GET NEXT BYTE
  2513	002327'02  134 04 0 00 000006 		ILDB T4,W2		;GET THIS ONE'S NEXT
  2514	002330'02  312 03 0 00 000004 		CAME T3,T4		;MATCH?
  2515	002331'02  263 17 0 00 000000 		RET			;NO. NO MATCH THEN
  2516	002332'02  373 00 0 00 000007 		SOSLE W3		;ANY MORE BYTES?
  2517	002333'02  326 03 0 00 002326'		JUMPN T3,CMPRLP		;DO ENTIRE STRING
  2518	002334'02  254 00 0 00 002321*		RETSKP			;A MATCH!!!!
  2519
  2520						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 59
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2521
  2522					;ROUTINE TO INSERT THE LL ADDRESSES IN A MESSAGE.
  2523					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  2524
  2525						RESCD
  2526
  2527	000133'01  634 02 0 00 000002 	PUTLLR:	TDZA T2,T2		;SAY SEND 0 SOURCE IF IN CIR
  2528	000134'01  476 00 0 00 000002 	PUTLLA:	SETOM T2		;SAY ALWAYS SEND CURRENT SOURCE
  2529	000135'01  265 16 0 00 000000*		ACVAR <W1>		;GET A WORK REG
  2530	000136'01  200 05 0 00 000002 		MOVE W1,T2		;SAVE ENTRY FLAG
  2531	000137'01  135 02 0 00 002174'		LOAD T2,LLHLK,(T1)	;GET DEST ADDRESS
  2532	000140'01  260 17 0 00 000212'		CALL TWOBYT		;PUT IT IN
  2533	000141'01  550 02 0 01 000002 		LOAD T2,LLLNK,(T1)	;GET SOURCE ADDRESS
  2534	000142'01  326 05 0 00 000146'		JUMPN W1,PUTLL1		;IF NO REJECT CHECK, GO ON
  2535	000143'01  135 05 0 00 002200'		LOAD W1,LLSTA,(T1)	;GET LINK STATE
  2536	000144'01  306 05 0 00 000003 		CAIN W1,LLSCIR		;IS THIS A LINK REJECT THEN?
  2537	000145'01  402 00 0 00 000002 		SETZM T2		;YES. SEND 0 SOURCE ADDRESS
  2538	000146'01  254 00 0 00 000212'	PUTLL1:	CALLRET TWOBYT		;AND PUT IT IN
  2539
  2540
  2541						ENDAV.			;END ACVAR
  2542						SWAPCD
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 60
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2543
  2544					;ROUTINE TO INSERT CI/CC COMMON FIELDS
  2545
  2546					;	T1/ LL BLOCK
  2547
  2548	002335'02  265 16 0 00 002246*	DOSRVS:	STKVAR <MSGFLG>
  2549	002336'02  000001  000001
  2550	002337'02  202 02 0 17 777776 		MOVEM T2,MSGFLG		;SAVE FLAGS
  2551	002340'02  260 17 0 00 000000#		CALL PUTLLA		;PUT IN LL ADDRESSES
  2552	002341'02  201 02 0 00 000005 		MOVEI T2,CISRVS+CIMSCT	;ASSUME SEG COUNTS
  2553	002342'02  200 16 0 01 000010 		TMNE LLIMS,(T1)		;WANT MESSAGE COUNTS?
  2554	002343'02  603 16 0 00 010000 
  2555	002344'02  201 02 0 00 000011 		MOVEI T2,CISRVS+CIMCNT	;YES
  2556	002345'02  260 17 0 00 000000#		CALL ONEBYT		;PUT IN SERVICES BYTE
  2557	002346'02  201 02 0 00 000001 		MOVEI T2,LNKPRI		;GET DEFAULT PRIORITY
  2558	002347'02  260 17 0 00 000000#		CALL ONEBYT
  2559	002350'02  135 03 0 00 007606'		LOAD T3,IOMODE		;GET FILE OPEN MODE
  2560	002351'02  306 03 0 00 000001 		CAIN T3,.GSSMB		;SMALL BUFFER MODE?
  2561	002352'02  334 03 0 00 007607'		SKIPA T3,[SMLSEG]	;YES, USE SMALL SEGSIZ
  2562	002353'02  200 03 0 00 000622*		MOVE T3,SEGSZ		;NO, USE NORMAL SEGMENT SIZE
  2563	002354'02  200 02 0 17 777776 		MOVE T2,MSGFLG		;GET MESSAGE TYPE
  2564	002355'02  302 02 0 00 000030 		CAIE T2,CIMMFL		;IS IT A CI?
  2565						JRST [	LOAD T2,LLSWG,(T1)	;NO, A CC - GET CI'S SEG SIZE
  2566							CAMLE T2,T3		;LESS THAN OURS?
  2567							MOVE T2,T3		;NO, USE OURS
  2568							TMNE LLLOC,(T1)		;LOCAL CONNECTION?
  2569							JRST DOSRV1		;YES, NO NEED TO CHECK FURTHER
  2570							LOAD T4,LLPRT,(T1)	;GET PORT NUMBER
  2571							CAMLE T2,NSPMAX(T4)	;LESS THAN PORT'S SEGSIZ?
  2572							MOVE T2,NSPMAX(T4)	;NO, USE PORT'S
  2573	002356'02  254 00 0 00 007611'			JRST DOSRV1]
  2574	002357'02  200 02 0 00 000003 		MOVE T2,T3		;USE SEGSIZE SELECTED ABOVE
  2575	002360'02  137 02 0 00 007415'	DOSRV1:	STOR T2,LLSWG,(T1)	;PUT SEG SIZE IN LL BLOCK
  2576	002361'02  200 16 0 01 000002 		TMNE LLFDI,(T1)		;OPEN IN WORD MODE?
  2577	002362'02  603 16 0 00 000010 
  2578	002363'02  201 02 0 00 000374 		MOVEI T2,WSEGSZ		;YES. GET PROPER SEG SIZE
  2579						JN LLINT,(T1),[	MOVEI T2,ISEGSZ ;IF INTERNAL LINK USE DIFFERENT
  2580	002364'02  200 16 0 01 000002 				JRST .+1 ]	; SEGMENT SIZE
  2581	002365'02  603 16 0 00 004000 
  2582	002366'02  254 00 0 00 007623'
  2583	002367'02  205 16 0 00 000010 		SETZRO LLFDI,(T1)	;INIT THIS FLAG
  2584	002370'02  412 16 0 01 000002 
  2585	002371'02  254 00 0 00 000000#		CALLRET TWOBYT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 61
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2586
  2587					;ROUTINE TO BUILD A ROUTING HEADER.
  2588					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  2589					;		T2/ PROPER MESSAGE FLAGS
  2590
  2591						RESCD
  2592
  2593	000147'01  265 16 0 00 000053*	RTHDCI:	SAVEAC <T2>		;PRESERVE THE FLAGS
  2594	000150'01  265 16 0 00 000072*		STKVAR <MSGFLG>		;TO SAVE THE FLAGS
  2595	000151'01  000001  000001
  2596	000152'01  202 02 0 17 777776 		MOVEM T2,MSGFLG		;SAVE FLAGS
  2597	000153'01  200 16 0 01 000002 		JN LLLOC,(T1),RTHDC1	;JUMP IF LOCAL
  2598	000154'01  603 16 0 00 200000 
  2599	000155'01  254 00 0 00 000164'
  2600	000156'01  201 02 0 00 000106 		MOVEI T2,RTFLG		;ROUTING FLAGS ARE FIRST
  2601	000157'01  260 17 0 00 000207'		CALL ONEBYT		;PUT IN FLAGS
  2602	000160'01  200 03 0 01 000014 		LOAD T3,LLHST,(T1)	;GET HOST STRING POINTER
  2603	000161'01  260 17 0 00 000166'		CALL ASCIIZ		;GO PUT IN IMAGE ASCII FIELD
  2604	000162'01  201 03 0 00 000001*		MOVEI T3,OURNAM		;GET OUR NAME
  2605	000163'01  260 17 0 00 000166'		CALL ASCIIZ		;PUT IT IN
  2606	000164'01  200 02 0 17 777776 	RTHDC1:	MOVE T2,MSGFLG		;GET MESSAGE FLAGS
  2607	000165'01  254 00 0 00 000207'		CALLRET ONEBYT		;AND PUT IT IN THE MESSAGE
  2608
  2609					;ROUTINE TO INSERT IMAGE-ASCII FIELD INTO MESSAGE
  2610					;		T2/ COUNT OF BYTES
  2611					;ACCEPTS:	T3/ BLOCK ADDRESS
  2612
  2613	000166'01  205 02 0 00 200000 	ASCIIZ:	MOVX T2,1B1		;ENTRY FOR ZERO TERMINATED STRING
  2614	000167'01  265 16 0 00 000000*	ASCIIC:	ACVAR <W1,W2,W3>	;GET A REGISTER
  2615	000170'01  200 05 0 00 002201'		MOVE W1,[POINT 7,0(T3)]	;GET A BYTE POINTER
  2616	000171'01  265 16 0 00 000150*		STKVAR <ASCCNT>		;THE COUNT
  2617	000172'01  000001  000001
  2618	000173'01  202 02 0 17 777776 		MOVEM T2,ASCCNT		;SAVE COUNT
  2619	000174'01  403 02 0 00 000007 		SETZB T2,W3		;SET COUNT REGS
  2620	000175'01  260 17 0 00 000207'		CALL ONEBYT		;PUT IN ZERO COUNT
  2621	000176'01  200 06 0 01 000016 		MOVE W2,LLBPTR(T1)	;SAVE BYTE POINTER
  2622	000177'01  375 00 0 17 777776 	ASCIIL:	SOSGE ASCCNT		;HAVE ANY MORE BYTES?
  2623	000200'01  254 00 0 00 000203'		JRST ASCIID		;NO. GO WRAP UP
  2624	000201'01  134 02 0 00 000005 		ILDB T2,W1		;GET NEXT BYTE
  2625	000202'01  327 02 0 00 000205'		JUMPG T2,ASCII1		;NO. IS THIS A NULL?
  2626	000203'01  137 07 0 00 000006 	ASCIID:	DPB W3,W2		;YES.
  2627	000204'01  263 17 0 00 000000 		RET			;ALL DONE
  2628
  2629	000205'01  260 17 0 00 000207'	ASCII1:	CALL ONEBYT		;STASH IT
  2630	000206'01  344 07 0 00 000177'		AOJA W3,ASCIIL		;AND DO ENTIRE STRING
  2631
  2632
  2633						ENDAV.			;END ACVAR
  2634						SWAPCD
  2635
  2636					;MOVE A BINARY FIELD
  2637
  2638	002372'02  265 16 0 00 001261*	MVBNRY:	ACVAR <W1,W2>		;GET WORK REGS
  2639	002373'02  200 05 0 00 007625'		MOVE W1,[POINT 8,0(T3)]	;GET A POINTER
  2640	002374'02  200 06 0 00 000002 		MOVE W2,T2		;SAVE COUNT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 61-1
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2641	002375'02  260 17 0 00 000000#	MVBNR1:	CALL ONEBYT		;PUT IN THE BYTE
  2642	002376'02  361 06 0 00 001676*		SOJL W2,R		;ANY MORE?
  2643	002377'02  134 02 0 00 000005 		ILDB T2,W1		;GET NEXT BYTE
  2644	002400'02  254 00 0 00 002375'		JRST MVBNR1		;GO STASH IT
  2645
  2646						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 62
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2647
  2648					;MORE ROUTINES
  2649
  2650					;INSERT BINARY QUANTITY IN A MESSAGE
  2651					;ACCEPTS:	3/ BLOCK ADDRESS
  2652
  2653	002401'02  265 16 0 00 002322*	BININ:	ACVAR <W1,W2,W3>	;GET A WORK REG
  2654	002402'02  403 02 0 00 000006 		SETZB T2,W2
  2655	002403'02  505 03 0 00 440700 		HRLI T3,(<POINT 7,>)	;FORM A BYTE POINTER
  2656	002404'02  260 17 0 00 000000#		CALL ONEBYT		;PUT IN COUNT BYTE
  2657	002405'02  200 07 0 01 000016 		MOVE W3,LLBPTR(T1)	;SAVE POINTER
  2658	002406'02  205 05 0 00 777775 	BININ1:	MOVSI W1,-3		;DO 3 BYTES
  2659	002407'02  400 02 0 00 000000 		SETZ T2,		;AN ACCUMULATOR
  2660	002410'02  260 17 0 00 002424'	BININ2:	CALL BINXT		;GET NEXT BYTE
  2661	002411'02  254 00 0 00 002415'		 JRST BININ3		;DONE
  2662	002412'02  242 02 0 00 000003 		LSH T2,3		;ADJUST ACCUMULATOR
  2663	002413'02  271 02 0 04 777720 		ADDI T2,-"0"(T4)	;PUT IN NEXT BYTE
  2664	002414'02  253 05 0 00 002410'		AOBJN W1,BININ2		;DO AN OCTET
  2665	002415'02  606 05 0 00 777777 	BININ3:	TRNN W1,-1		;FOUND ANY?
  2666	002416'02  254 00 0 00 002422'		JRST BININ4		;NO. ALL DONE
  2667	002417'02  260 17 0 00 000000#		CALL ONEBYT		;YES. PUT IT IN
  2668	002420'02  350 00 0 00 000006 		AOS W2			;ONE MORE IN
  2669	002421'02  325 05 0 00 002406'		JUMPGE W1,BININ1	;IF MORE TO DO, DO THEM
  2670	002422'02  137 06 0 00 000007 	BININ4:	DPB W2,W3		;PUT IN FINAL COUNT
  2671	002423'02  263 17 0 00 000000 		RET			;AND DONE
  2672
  2673	002424'02  134 04 0 00 000003 	BINXT:	ILDB T4,T3		;GET NEXT BYTE
  2674	002425'02  322 04 0 00 002376*		JUMPE T4,R		;IF THE NULL, ALL DONE
  2675	002426'02  254 00 0 00 002334*		RETSKP			;A VALID BYTE
  2676
  2677						ENDAV.			;END ACVAR
  2678
  2679					;ROUTINES TO INSERT BYTES IN MESSAGE AND ACCOUNT FOR THEM
  2680
  2681					;INSERT ONE BYTE. ACCEPTS:	T2/ THE BYTE
  2682					;				T1/ LL BLOCK ADDRESS
  2683					;PRESERVES ALL REGISTERS
  2684
  2685						RESCD
  2686	000207'01  136 02 0 01 000016 	ONEBYT:	IDPB T2,LLBPTR(T1)	;STASH BYTE
  2687	000210'01  350 00 0 01 000017 		AOS LLBPCT(T1)		;ACCOUNT FOR IT
  2688	000211'01  263 17 0 00 000000 		RET			;DONE
  2689
  2690					;ROUTINE TO INSERT TWO BYTES, EXTENDED OR NOT
  2691					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  2692					;		T2/ THE BYTE
  2693					;MAY CLOBBER T2.
  2694
  2695	000212'01  260 17 0 00 000207'	TWOBYT:	CALL ONEBYT		;STORE LOW ORDER BYTE
  2696	000213'01  241 02 0 00 777770 		ROT T2,-^D8		;GET HIGH ORDER BYTE
  2697	000214'01  254 00 0 00 000207'		CALLRET ONEBYT		;STORE IT
  2698						SWAPCD
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 63
NSPSRV	MAC	 6-Apr-82 10:58		More Link Creation Routines

  2699					;ROUTINES TO FIND AND PARSE ARBITRARY ATTRIBUTES
  2700
  2701					;FIND ATTRIBUTE:
  2702					;ACCEPTS:	T2/ PREFIX VALUE
  2703					;RETURNS:	+1/ NO SUCH PREFIX
  2704					;		+2/ FOUND. T3=POINTER TO VALUE STRING
  2705
  2706	002427'02  550 03 0 11 000361*	FNDATR:	LOAD T3,FILATL,(JFN)	;GET LIST OF ATTRIBUTES
  2707	002430'02  254 00 0 00 002431'		CALLRET GETATR		;GO FIND ATTRIBUTE
  2708
  2709
  2710					;GETATR - ROUTINE TO FIND AN ATTRIBUTE
  2711					;
  2712					;ACCEPTS IN T2/	PREFIX VALUE
  2713					;	    T3/	ADDRESS OF ATTRIBUTE LIST
  2714					;		CALL GETATR
  2715					;RETURNS: +1	 FAILED, NO SUCH PREFIX
  2716					;	  +2	SUCCESS, WITH T3/ POINTER TO VALUE STRING
  2717
  2718	002431'02  322 03 0 00 002425*	GETATR:	JUMPE T3,R		;IF NO MORE, ALL DONE
  2719	002432'02  135 16 0 00 007626'		OPSTR <CAME T2,>,PRFXV,(T3) ;IS THIS THE ONE WE WANT
  2720	002433'02  312 02 0 00 000016 
  2721						JRST [	LOAD T3,PRFXL,(T3) ;NO. GET NEXT
  2722	002434'02  254 00 0 00 007627'			JRST GETATR]	;AND LOOK AT IT
  2723	002435'02  201 03 0 03 000001 		MOVEI T3,1(T3)		;GET POINTER TO BLCOK
  2724	002436'02  254 00 0 00 002426*		RETSKP			;AND SAY WE FOUND IT
  2725
  2726
  2727					;ROUTINE TO MAKE PROPER BYTE POINTER AND RETURN MAX COUNT FOR A
  2728					;BUFFER.
  2729					;ACCEPTS:	T1/ WINDOW ADDRESS
  2730					;		T3/ BYTE SIZE
  2731					;RETURNS:	+1
  2732					;		T1/ BYTE POINTER
  2733					;		T2/ COUNT
  2734
  2735	002437'02  200 04 0 00 000003 	MAKPTR:	MOVE T4,T3		;SAVE IT
  2736	002440'02  435 03 0 00 004400 		IORI T3,4400		;MAKE A BYTE POINTER
  2737	002441'02  137 03 0 00 007631'		DPB T3,[POINT 12,T1,11]
  2738	002442'02  201 02 0 00 000044 		MOVEI T2,44		;BITS IN A WORD
  2739	002443'02  231 02 0 04 000000 		IDIVI T2,0(T4)		;COMPUTE BYTES IN A WORD
  2740	002444'02  242 02 0 00 000011 		LSH T2,PGSFT		;COMPUTE BYTES IN A PAGE
  2741	002445'02  263 17 0 00 000000 		RET			;AND DONE
  2742
  2743					;SPECIAL ROUTINE TO MAKE AN INPUT POINTER FOR FLOW FROM NETWORK
  2744
  2745	002446'02  261 17 0 00 000003 	MAKINP::PUSH P,T3		;SAVE BYTE SIZE
  2746	002447'02  260 17 0 00 002437'		CALL MAKPTR		;GET A POINTER
  2747	002450'02  262 17 0 00 000003 		POP P,T3		;GET BACK BYTE SIZE
  2748	002451'02  306 03 0 00 000044 		CAIN T3,44		;WORD MODE?
  2749	002452'02  553 00 0 00 000001 		HRRZS T1		;YES. GET ADDRESS ONLY
  2750	002453'02  263 17 0 00 000000 		RET			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 64
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  2751					SUBTTL	MTOPR Utility Functions
  2752
  2753
  2754					;READ LINK TASK NAME
  2755
  2756	002454'02  135 02 0 00 007402'	NTRTN::	LOAD T2,LLTSK,(T1)	;GET THE NAME
  2757	002455'02  260 17 0 00 002467'	NTCPY:	CALL NTACPY		;DO THE WORK
  2758	002456'02  260 17 0 00 000000#		CALL BLKULK		;RELEASE LL BLOCK
  2759	002457'02  254 00 0 00 002436*		RETSKP			;AND DONE
  2760
  2761					;READ FOREIGN HOST NAME
  2762
  2763	002460'02  260 17 0 00 002561'	NTRHN::	CALL MTRDCK		;VERIFY LINK STATE
  2764						JRST [	MOVEI T1,DCNX11	;SAY NOT CONNECTED ANYMORE
  2765	002461'02  254 00 0 00 007632'			JRST SQOBAD]	;AND DONE
  2766	002462'02  200 02 0 01 000014 		LOAD T2,LLHST,(T1)	;YES. GET HOST STRING
  2767	002463'02  200 16 0 01 000002 		TMNE LLLOC,(T1)		;LOCAL?
  2768	002464'02  603 16 0 00 200000 
  2769	002465'02  201 02 0 00 000647*		 MOVEI T2,OURNAM	;YES. USE  LOCAL NAME THEN
  2770	002466'02  254 00 0 00 002455'		CALLRET NTCPY		;AND GO COPY TO USER
  2771
  2772					;WORKER ROUTINE TO COPY AN ASCII STRING TO THE USER.
  2773					;		T2/ ADDRESS OF STRING BLOCK
  2774
  2775	002467'02  256 04 0 00 007634'	NTACPY:	UMOVE T3,3		;GET USER'S STRING POINTER
  2776	002470'02  641 03 0 00 777777 		TLC T3,-1
  2777	002471'02  647 03 0 00 777777 		TLCN T3,-1		;WANT DEFAULT?
  2778	002472'02  505 03 0 00 440700 		HRLI T3,(<POINT 7,>)	;USE. DO IT
  2779	002473'02  265 16 0 00 002011*		ACVAR <W1>		;GET A WORK REG
  2780	002474'02  200 05 0 00 007410'		MOVE W1,[POINT 7,0(T2)]	;POINT TO SOURCE
  2781	002475'02  134 04 0 00 000005 	NTCPY1:	ILDB T4,W1		;GET A BYTE
  2782	002476'02  322 04 0 00 002501'		JUMPE T4,NTCPY2		;IF NULL, ALL DONE
  2783	002477'02  256 03 0 00 007635'		XCTBU [IDPB T4,T3]	;STORE BYTE
  2784	002500'02  254 00 0 00 002475'		JRST NTCPY1		;DO THEM ALL
  2785	002501'02  256 04 0 00 007305'	NTCPY2:	UMOVEM T3,3		;RETURN BYTE POINTER
  2786	002502'02  256 03 0 00 007635'		XCTBU [IDPB T4,T3]	;APPEND A NULL
  2787	002503'02  263 17 0 00 000000 		RET			;AND DONE
  2788
  2789						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 65
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  2790
  2791					;MTOPR FUNCTIONS CONTINUED...
  2792
  2793					;RDSTS - GET LINK STATUS
  2794					;
  2795					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK (ASSUMED LOCKED)
  2796					;		CALL RDSTS
  2797					;RETURNS: +1 ALWAYS, WITH T3/ LINK STATUS
  2798
  2799	002504'02  135 03 0 00 007636'	RDSTS::	LOAD T3,LLRSN,(T1)	;GET REASON IN CASE NOW DISCONNECTED
  2800	002505'02  200 16 0 01 000002 		TMNE LLFOB,(T1)		;IS THIS AN OBJECT?
  2801	002506'02  603 16 0 00 000001 
  2802	002507'02  661 03 0 00 200000 		TXO T3,MO%SRV		;YES
  2803	002510'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET CURRENT STATE
  2804	002511'02  306 02 0 00 000004 		CAIN T2,LLSRUN		;RUNNING?
  2805	002512'02  661 03 0 00 400000 		TXO T3,MO%CON		;YES. ALL CONNECTED
  2806	002513'02  306 02 0 00 000001 		CAIN T2,LLSLIS		;LISTENING?
  2807	002514'02  661 03 0 00 100000 		TXO T3,MO%WFC		;YES. WAITING FOR INCOMING CONNECT
  2808	002515'02  302 02 0 00 000002 		CAIE T2,LLSCIS		;CI SENT?
  2809	002516'02  306 02 0 00 000003 		CAIN T2,LLSCIR		;OR CI RECEIVED?
  2810	002517'02  661 03 0 00 040000 		TXO T3,MO%WCC		;YES. WAITING FOR CONNECTION TO COMPLETE
  2811	002520'02  302 02 0 00 000007 		CAIE T2,LLSDIR		;DI RECEIVED?
  2812	002521'02  306 02 0 00 000011 		CAIN T2,LLSABT		;OR ABORTED?
  2813						JRST [	TXO T3,MO%ABT	;YES. ASSUME ABORTED
  2814							JE LLFDI,(T1),.+1
  2815							TXC T3,MO%ABT!MO%SYN ;NO. SWITCH TO SYNCH DI
  2816	002522'02  254 00 0 00 007637'			JRST .+1]	;AND PROCEED
  2817	002523'02  200 16 0 01 000002 		TMNE LLFIM,(T1)		;HAVE WHOLE MESSAGE IN BUFFER?
  2818	002524'02  603 16 0 00 000040 
  2819	002525'02  661 03 0 00 020000 		TXO T3,MO%EOM		;YES
  2820	002526'02  332 00 0 01 000006 		SKIPE LLMSI(T1)		;HAVE ANY INTERRUPT MESSAGES?
  2821	002527'02  661 03 0 00 002000 		TXO T3,MO%INT		;YES. SAY SO
  2822						JN LLLWC,(T1),[TXO T3,MO%LWC ;IF LINK WAS CONNECTED, SO NOTE
  2823	002530'02  200 16 0 01 000001 			       JRST .+1] ;CONTINUE
  2824	002531'02  603 16 0 00 100000 
  2825	002532'02  254 00 0 00 007645'
  2826	002533'02  263 17 0 00 000000 		RET			;DONE, RETURN
  2827
  2828					;MTOPR FUNCTION TO RETURN OBJECT USED TO CONNECT TO THE SERVER
  2829
  2830					NTRCN::	JE LLFOB,(T1),[CALL BLKULK ;FREE BLOCK
  2831	002534'02  200 16 0 01 000002 				RETBAD (DESX9)] ;AND RETURN ERROR
  2832	002535'02  607 16 0 00 000001 
  2833	002536'02  254 00 0 00 007647'
  2834	002537'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET CURRENT STATE
  2835	002540'02  306 02 0 00 000001 		CAIN T2,LLSLIS		;LISTENING?
  2836						JRST [	MOVEI T1,DCNX11	;YES. NOT CONNECTED
  2837	002541'02  254 00 0 00 007632'			JRST SQOBAD]	;GO CLEAN UP AND GIVE ERROR
  2838	002542'02  550 02 0 01 000033 		LOAD T2,LLSOB,(T1)	;GET OBJECT USED TO CONNECT
  2839	002543'02  256 04 0 00 007651'		UMOVEM T2,3		;RETURN TO USER
  2840	002544'02  260 17 0 00 000000#	MTDON:	CALL BLKULK		;FREE BLOCK
  2841	002545'02  254 00 0 00 002457*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 66
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  2842
  2843					;MORE MTOPR ROUTINES...
  2844
  2845					;READ USER NAME
  2846
  2847	002546'02  260 17 0 00 002556'	NTRUS::	CALL MTOBJ		;MAKE SURE IS RUNNING OBJECT
  2848	002547'02  254 00 0 00 003677'		 JRST SQOBAD		;NOT
  2849	002550'02  200 02 0 01 000035 		LOAD T2,LLUSR,(T1)	;GET BLOCK ADDRESS
  2850	002551'02  254 00 0 00 002455'		CALLRET NTCPY		;GO DO IT
  2851
  2852					;READ ACCOUNT STRING
  2853
  2854	002552'02  260 17 0 00 002556'	NTRAC::	CALL MTOBJ		;MAKE SURE IS RUNNING OBJECT
  2855	002553'02  254 00 0 00 003677'		 JRST SQOBAD		;NOT
  2856	002554'02  200 02 0 01 000036 		LOAD T2,LLACT,(T1)	;GET BLOCK
  2857	002555'02  254 00 0 00 002455'		CALLRET NTCPY		;AND GO DO IT
  2858
  2859					;COMMON ROUTINE TO VERIFY OBJECT
  2860
  2861
  2862	002556'02  200 16 0 01 000002 	MTOBJ:	JE LLFOB,(T1),MTOBJ1	;MAKE SURE IS OBJECT
  2863	002557'02  607 16 0 00 000001 
  2864	002560'02  254 00 0 00 002567'
  2865	002561'02  135 02 0 00 007375'	MTRDCK:	LOAD T2,LLSTA,(T1)	;IT IS. GET CURRENT STATE
  2866	002562'02  306 02 0 00 000003 		CAIN T2,LLSCIR		;IN CIR STATE?
  2867	002563'02  254 00 0 00 002545*		RETSKP			;YES. IS GOOD THEN
  2868	002564'02  135 02 0 00 007375'	MTRNCK::LOAD T2,LLSTA,(T1)	;GET STATE
  2869	002565'02  306 02 0 00 000004 		CAIN T2,LLSRUN		;RUNNING?
  2870	002566'02  254 00 0 00 002563*		RETSKP			;YES.
  2871	002567'02  254 00 0 00 007416'	MTOBJ1:	RETBAD (DCNX11)		;NOT A RUNNING OBJECT
  2872
  2873					;READ PASSWORD
  2874
  2875	002570'02  260 17 0 00 002556'	NTRPW::	CALL MTOBJ		;MAKE SURE IS RUNNING OBJECT
  2876	002571'02  254 00 0 00 003677'		 JRST SQOBAD		;NOT
  2877	002572'02  135 02 0 00 007472'		LOAD T2,LLPSW,(T1)	;GET BLOCK ADDRESS
  2878	002573'02  135 03 0 00 007652'		LOAD T3,LLPCT,(T1)	;AND THE COUNT
  2879	002574'02  256 04 0 00 007653'	NTCPYB:	UMOVEM T3,4		;RETURN COUNT
  2880	002575'02  265 16 0 00 002372*		ACVAR <W1,W2>		;GET WORK REGS
  2881	002576'02  200 06 0 00 000003 		MOVE W2,T3		;SAVE COUNT
  2882	002577'02  200 05 0 00 007654'		MOVE W1,[POINT 8,0(T2)]	;GET POINTER TO DATA
  2883	002600'02  256 04 0 00 007634'		UMOVE T3,3		;GET USER SP
  2884	002601'02  641 03 0 00 777777 		TLC T3,-1
  2885	002602'02  647 03 0 00 777777 		TLCN T3,-1
  2886	002603'02  505 03 0 00 440700 		HRLI T3,(<POINT 7,>)	;FORM DEFAULT
  2887	002604'02  254 00 0 00 002607'		JRST NTCP11		;GO MAKE SURE IS AT LEAST ONE
  2888	002605'02  134 04 0 00 000005 	NTCP1:	ILDB T4,W1		;GET NEXT BYTE
  2889	002606'02  256 03 0 00 007635'		XCTBU [IDPB T4,T3]	;STORE IT
  2890	002607'02  365 06 0 00 002605'	NTCP11:	SOJGE W2,NTCP1		;AND DO THEM ALL
  2891	002610'02  256 04 0 00 007305'		UMOVEM T3,3		;RETURN BYTE POINTER
  2892	002611'02  260 17 0 00 000000#	NTMTGD:	CALL BLKULK		;FREE THE BLOCK
  2893	002612'02  254 00 0 00 002566*		RETSKP			;AND DONE
  2894
  2895						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 67
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  2896
  2897					;READ OPT DATA
  2898
  2899	002613'02  135 02 0 00 007421'	NTRDA::	LOAD T2,LLOPT,(T1)	;GET OPTIONAL DATA BLOCK
  2900	002614'02  135 03 0 00 007655'		LOAD T3,LLUCT,(T1)	;GET COUNT
  2901	002615'02  254 00 0 00 002574'		CALLRET NTCPYB		;AND GO DO IT
  2902
  2903					;SET CONNECT DONE INTERRUPT CHANNEL
  2904
  2905	002616'02  260 17 0 00 002646'	MTSETC::CALL CHKCHL		;VERIFY CHANNEL
  2906	002617'02  263 17 0 00 000000 		 RET			;BAD
  2907	002620'02  321 02 0 00 002612*		JUMPL T2,RSKP		;IF NO CHANGE, DONE
  2908	002621'02  137 02 0 00 007656'		STOR T2,LLPIC,(T1)	;SAVE CHANNEL
  2909	002622'02  135 03 0 00 007375'		LOAD T3,LLSTA,(T1)	;GET STATE OF LINK
  2910	002623'02  301 03 0 00 000003 		CAIL T3,LLSCIR		;NEED INTERRUPT NOW?
  2911	002624'02  260 17 0 00 005300'		CALL CONINT		;YES. GIVE IT
  2912	002625'02  254 00 0 00 002620*		RETSKP			;AND DONE
  2913
  2914					;SET INTERRUPT MESSAGE CHANNEL
  2915
  2916	002626'02  260 17 0 00 002646'	MTSETI::CALL CHKCHL		;CHECK CHANNEL
  2917	002627'02  263 17 0 00 000000 		 RET			;BAD
  2918	002630'02  321 02 0 00 002625*		JUMPL T2,RSKP		;IF NO CHANGE, ALL DONE
  2919	002631'02  137 02 0 00 007657'		STOR T2,LLPII,(T1)	;SAVE CHANNEL
  2920	002632'02  332 00 0 01 000006 		SKIPE LLMSI(T1)		;HAVE ANY INT MESSAGES
  2921	002633'02  260 17 0 00 002662'		CALL INTINT		;YES. DO INTERRUPT NOW THEN
  2922	002634'02  254 00 0 00 002630*		RETSKP			;AND DONE
  2923
  2924					;SET DATA ARRIVED INT CHANNEL
  2925
  2926	002635'02  260 17 0 00 002646'	MTSETD::CALL CHKCHL		;VERIFY CHANNEL
  2927	002636'02  263 17 0 00 000000 		 RET
  2928	002637'02  321 02 0 00 002634*		JUMPL T2,RSKP		;IF NO CHANGE, RETURN
  2929	002640'02  137 02 0 00 007660'		STOR T2,LLDRC,(T1)	;SAVE CHANNEL
  2930	002641'02  200 16 0 01 000020 		TMNN LLDRW,(T1)		;HAVE ANY MESSAGES ON RAW Q?
  2931	002642'02  607 16 0 00 007400 
  2932	002643'02  332 00 0 01 000012 		SKIPE LLOMSG(T1)	;NO. ANY ORDERED MESSAGES?
  2933	002644'02  260 17 0 00 000000#		CALL DATINR		;YES. GIVE INT THEN
  2934	002645'02  254 00 0 00 002637*		RETSKP			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 68
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  2935
  2936					;ROUTINE TO VERIFY CHANNEL #
  2937					;		T2/ CHANNEL
  2938					;RETURNS:	+1 BAD CHANNEL
  2939					;		+2 VALID CHANNEL
  2940
  2941	002646'02  306 02 0 00 000776 	CHKCHL:	CAIN T2,.MOCIA		;CLEAR?
  2942						JRST [	SETZM T2	;IF SO. UNSETTING
  2943	002647'02  254 00 0 00 007661'			RETSKP]		;SO, RETURN A ZERO
  2944	002650'02  306 02 0 00 000777 		CAIN T2,.MONCI		;NO CHANGE?
  2945						JRST [	SETOM T2	;YES
  2946	002651'02  254 00 0 00 007663'			RETSKP]		;SO SAY SO
  2947	002652'02  301 02 0 00 000044 		CAIL T2,44		;WITHIN RANGE?
  2948	002653'02  254 00 0 00 002661'		JRST CHKILL		;NO
  2949	002654'02  303 02 0 00 000005 		CAILE T2,5		;WITHIN RANGE 0-5?
  2950	002655'02  301 02 0 00 000027 		CAIL T2,^D23		;OR WITHIN RANGE 23-35
  2951	002656'02  354 00 0 00 000002 		AOSA T2			;YES. A GOOD CHANNEL
  2952	002657'02  254 00 0 00 002661'		JRST CHKILL		;NO. ILLEGAL
  2953	002660'02  254 00 0 00 002645*		RETSKP			;RETURN GOOD VALUE
  2954	002661'02  254 00 0 00 007665'	CHKILL:	RETBAD (ARGX13)		;INVALID CHANNEL
  2955
  2956					;COMMON ROUTINE TO GENERATE INTERRUPT RECEIVED INTERRUPT
  2957
  2958	002662'02  265 16 0 00 002071*	INTINT:	SAVET			;SAVE REGS
  2959	002663'02  260 17 0 00 002672'		CALL TELINT		;GO NOTIFY DRIVER IF THIS IS AN INTERNAL LINK
  2960	002664'02  554 02 0 01 000003 		LOAD T2,LLFRK,(T1)	;GET FORK TO INT
  2961	002665'02  135 16 0 00 007657'		OPSTR <SKIPN T1,>,LLPII,(T1) ;HAVE AN INT CHANNEL?
  2962	002666'02  336 01 0 00 000016 
  2963	002667'02  263 17 0 00 000000 		RET			;NO
  2964	002670'02  370 00 0 00 000001 		SOS T1			;YES
  2965	002671'02  254 00 0 00 000733*		CALLRET PSIRQ		;GO DO THE INTERRUPT
  2966
  2967
  2968
  2969					;TELINT - ROUTINE TO NOTIFY THE DRIVER WHEN AN INTERRUPT MSG IS RECEIVED
  2970					;	  FOR AN INTERNAL LOGICAL LINK
  2971					;
  2972					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  2973					;		CALL TELINT
  2974					;RETURNS: +1 ALWAYS, WITH DRIVER NOTIFIED
  2975
  2976	002672'02  200 16 0 01 000002 	TELINT:	JE LLINT,(T1),R		;IF NOT AN INTERNAL LINK, THEN DONE
  2977	002673'02  607 16 0 00 004000 
  2978	002674'02  254 00 0 00 002431*
  2979	002675'02  265 16 0 00 002662*		SAVET			;PRESERVE TEMPORARY AC'S
  2980	002676'02  200 04 0 01 000034 		LOAD T4,LLVEC,(T1)	;GET DRIVER VECTOR ADDRESS
  2981	002677'02  200 01 0 01 000033 		LOAD T1,LLDRV,(T1)	;GET DRIVER CORRELATION CODE
  2982	002700'02  254 00 1 04 000005 		CALLRET @.NSINT(T4)	;NOTIFY DRIVER AND RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 69
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  2983					;MORE MTORP FUNCTIONS...
  2984
  2985					;RECEIVE INTERRUPT MESSAGE
  2986
  2987					MTRDIN::MOVE T2,[IFIW![	XCTBUU [IDPB T2,3] ;ROUTINE TO RETURN BYTE
  2988	002701'02  200 02 0 00 007672'				RET ]]	; AND DONE
  2989	002702'02  256 04 0 00 007634'		UMOVE T3,3		;GET USER'S DESTINATION POINTER
  2990	002703'02  260 17 0 00 002721'		CALL RDINT		;GO READ AN INTERRUPT MESSAGE
  2991						 JRST [	JUMPE T2,SQOBAD	;FAILED, RETURN ERROR
  2992	002704'02  254 00 0 00 007673'			JRST ULKRET ]	; OR BLOCK IF NEEDED
  2993	002705'02  256 04 0 00 007653'		UMOVEM T3,4		;RETURN BYTE POINTER
  2994	002706'02  256 04 0 00 007675'		UMOVEM T4,3		;RETURN COUNT TO USER
  2995	002707'02  261 17 0 00 000002 		PUSH P,T2		;STASH MESSAGE ADDRESS
  2996	002710'02  260 17 0 00 000000#		CALL BLKULK		;DONE WITH BLOCK
  2997	002711'02  262 17 0 00 000001 		POP P,T1		;RETRIEVE MESSAGE ADDRESS
  2998	002712'02  260 17 0 00 001613*		CALL RELRES		;RELEASE MESSAGE
  2999	002713'02  254 00 0 00 002660*		RETSKP			;AND DONE
  3000
  3001
  3002
  3003
  3004					;ULKRET - ROUTINE TO UNLOCK LOGICAL LINK BLOCK AND GIVE BLOCK-NEEDED RETURN
  3005					;
  3006					;ACCEPTS IN JFN/ ADDRESS OF JFN BLOCK
  3007					;		JRST ULKRET
  3008					;RETURNS TO CALLER WITH BLKF SET
  3009
  3010	002714'02  661 10 0 00 000040 	ULKRET:	TQO <BLKF>		;NOTE BLOCK IS NEEDED
  3011	002715'02  250 01 0 11 000606*		EXCH T1,FILLLB(JFN)	;SAVE ERROR. GET BLOCK ADDRESS
  3012	002716'02  260 17 0 00 000000#		CALL BLKULK		;FREE BLOCK
  3013	002717'02  250 01 0 11 002715*		EXCH T1,FILLLB(JFN)	;GET BACK ERROR
  3014	002720'02  263 17 0 00 000000 		RETBAD ()		;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 70
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  3015					;RDINT - ROUTINE TO READ AN INTERRUPT MESSAGE
  3016					;
  3017					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  3018					;	    T2/	ADDRESS OF ROUTINE TO STORE BYTES
  3019					;			(SHOULD ASSUME BYTE POINTER IS IN T3)
  3020					;	    T3/	DESTINATION BYTE POINTER
  3021					;		CALL RDINT
  3022					;RETURNS: +1	 FAILED, T2/ 0 => DO NOT BLOCK, T2/ -1 => BLOCK
  3023					;	  +2	SUCCESS, INTERRUPT MESSAGE DELIVERED, WITH
  3024					;		T2/ ADDRESS OF MESSAGE
  3025					;		T3/ UPDATED COUNT
  3026					;		T4/ UPDATED POINTER
  3027
  3028	002721'02  265 16 0 00 002473*	RDINT::	ACVAR <W1>
  3029	002722'02  265 16 0 00 002335*		STKVAR <RDICNT,RDIPTR,RDIRTN>
  3030	002723'02  000003  000003
  3031	002724'02  202 01 0 00 000005 		MOVEM T1,W1		;SAVE LL BLOCK ADDRESS
  3032	002725'02  202 02 0 17 777774 		MOVEM T2,RDIRTN		;SAVE ROUTINE TO STORE BYTES
  3033	002726'02  202 03 0 17 777775 		MOVEM T3,RDIPTR		;SAVE DESTINATION BYTE POINTER
  3034	002727'02  260 17 0 00 002564'	RDINT1:	CALL MTRNCK		;CHECK STATE
  3035	002730'02  254 00 0 00 002762'		 JRST RDINX		;FAIL, NOT IN RUN STATE
  3036	002731'02  336 02 0 01 000006 		SKIPN T2,LLMSI(T1)	;HAVE AN INT MESSAGE?
  3037						JRST [	MOVX T1,DCNX15	;NO INTERRUPT MESSAGE AVAILABLE
  3038	002732'02  254 00 0 00 007676'			JRST RDINX ]	;RETURN ERROR
  3039	002733'02  201 02 0 00 000001 		MOVEI T2,1		;ASK FOR ONE MORE
  3040	002734'02  201 03 0 00 000001 		MOVEI T3,MSLSI		; INTERRUPT MESSAGE
  3041	002735'02  260 17 0 00 000000#		CALL SNDLS		;SEND MESSAGE
  3042						 JRST [	MDISMS		;CAN'T, WAIT A BIT
  3043							MOVE T1,W1	;RETRIEVE THE LL BLOCK ADDRESS
  3044	002736'02  254 00 0 00 007700'			JRST RDINT1]	;TRY IT AGAIN
  3045	002737'02  200 02 0 01 000006 		MOVE T2,LLMSI(T1)	;GET BACK MESSAGE
  3046	002740'02  135 04 0 00 007703'		LOAD T4,MSDTC,(T2)	;GET COUNT
  3047	002741'02  202 04 0 17 777776 		MOVEM T4,RDICNT		;SAVE COUNT
  3048	002742'02  202 04 0 00 000005 		MOVEM T4,W1		;AND SAVE AS LOOP VARIABLE
  3049	002743'02  200 03 0 17 777775 		MOVE T3,RDIPTR		;GET DESTINATION POINTER SUPPLIED
  3050	002744'02  641 03 0 00 777777 		TLC T3,-1
  3051	002745'02  647 03 0 00 777777 		TLCN T3,-1
  3052	002746'02  505 03 0 00 440700 		HRLI T3,(<POINT 7,>)	;GET DEFAULT
  3053	002747'02  202 03 0 17 777775 		MOVEM T3,RDIPTR		;SAVE POINTER
  3054	002750'02  200 04 0 02 000003 		MOVE T4,MSBPTR(T2)	;GET POINTER TO MESSAGE DATA
  3055	002751'02  254 00 0 00 002754'		JRST MTRDI2		;GO MOVE DATA
  3056
  3057	002752'02  134 02 0 00 000004 	MTRDI1:	ILDB T2,T4		;GET NEXT BYTE
  3058	002753'02  260 17 1 17 777774 		CALL @RDIRTN		;STORE A BYTE
  3059	002754'02  365 05 0 00 002752'	MTRDI2:	SOJGE W1,MTRDI1		;DO THEM ALL
  3060	002755'02  200 02 0 01 000006 		MOVE T2,LLMSI(T1)	;GET BACK MESSAGE
  3061	002756'02  402 00 0 01 000006 		SETZM LLMSI(T1)		;NONE NOW
  3062	002757'02  200 03 0 17 777776 		MOVE T3,RDICNT		;RESTORE COUNT
  3063	002760'02  200 04 0 17 777775 		MOVE T4,RDIPTR		;RESTORE POINTER
  3064	002761'02  254 00 0 00 002713*		RETSKP			;DONE, RETURN SUCCESS
  3065
  3066					; HERE ON AN ERROR
  3067
  3068	002762'02  634 02 0 00 000002 	RDINX:	TDZA T2,T2		;NOTE BLOCK NOT WANTED
  3069	002763'02  476 00 0 00 000002 	RDINB:	SETOM T2		;BLOCK NEEDED
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 70-1
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  3070	002764'02  263 17 0 00 000000 		RET			;FAIL
  3071
  3072						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 71
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  3073
  3074					;MORE MTOPR'S....  SEND INTERRUPT MESSAGE
  3075
  3076	002765'02  256 04 0 00 007704'	MTSNIN::UMOVE T4,4		;GET COUNT
  3077	002766'02  256 04 0 00 007634'		UMOVE T3,3		;GET BP
  3078	002767'02  256 04 0 00 007704'		UMOVE T4,4		;GET COUNT
  3079						MOVE T2,[IFIW![	XCTBUU [ILDB T2,3]
  3080	002770'02  200 02 0 00 007710'				RET]]	;ROUTINE TO GET BYTES
  3081	002771'02  260 17 0 00 002777'		CALL SNINT		;SEND THE INTERRUPT MESSAGE
  3082	002772'02  254 00 0 00 003677'		 JRST SQOBAD		;FAILED, RETURN ERROR
  3083	002773'02  256 04 0 00 007305'		UMOVEM T3,3		;STORE UPDATED BYTE POINTER
  3084	002774'02  200 01 0 11 002717*		MOVE T1,FILLLB(JFN)	;GET BACK BLOCK ADDRESS
  3085	002775'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK THE LOGICAL LINK BLOCK
  3086	002776'02  254 00 0 00 002761*		RETSKP			;DONE, RETURN SUCCESS
  3087
  3088
  3089					;SNINT - ROUTINE TO SEND AN INTERRUPT MESSAGE
  3090					;
  3091					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  3092					;	    T2/	ADDRESS OF ROUTINE TO GET BYTES
  3093					;			(PLACES BYTE IN T2, ASSUMES PTR IN T3)
  3094					;	    T3/	BYTE POINTER FOR GETTING BYTES
  3095					;	    T4/	COUNT OF BYTES TO SEND
  3096					;		CALL SNINT
  3097					;RETURNS: +1	 FAILED, ERROR CODE IN T1
  3098					;	  +2	SUCCESS, WITH T3/ UPDATED BYTE POINTER
  3099
  3100	002777'02  265 16 0 00 002721*	SNINT::	ACVAR <W1>		;CAN SEND IT
  3101	003000'02  265 16 0 00 002722*		STKVAR <SIMLLB,SIMRTN,SIMPTR,SIMCNT>
  3102	003001'02  000004  000004
  3103	003002'02  202 02 0 17 777775 		MOVEM T2,SIMRTN		;SAVE ROUTINE ADDRESS
  3104	003003'02  202 03 0 17 777774 		MOVEM T3,SIMPTR		;SAVE POINTER FOR GETTING BYTES
  3105	003004'02  202 04 0 17 777773 		MOVEM T4,SIMCNT		;SAVE COUNT OF BYTES TO SEND
  3106	003005'02  260 17 0 00 002564'		CALL MTRNCK		;MAKE SURE IS RUNNING
  3107	003006'02  263 17 0 00 000000 		 RET			;NOT IN RUN STATE, FAIL
  3108	003007'02  200 04 0 17 777773 		MOVE T4,SIMCNT		;GET COUNT
  3109	003010'02  303 04 0 00 000020 		CAILE T4,MAXDSC		;WITHIN RANGE?
  3110						JRST [	MOVEI T1,DCNX12	;ARG TOO LARGE
  3111	003011'02  254 00 0 00 007176'			RET ]		;RETURN ERROR
  3112						JE LLMIC,(T1),[	MOVEI T1,DCNX14 ;ANY QUOTA?
  3113	003012'02  200 16 0 01 000015 				RET ]	;NO, FAIL
  3114	003013'02  607 16 0 00 770000 
  3115	003014'02  254 00 0 00 007711'
  3116	003015'02  201 01 0 00 000021 		MOVEI T1,INTLEN+MSHDR	;LENGTH
  3117	003016'02  260 17 0 00 000000#		CALL GETRES		;GET SOME SPACE
  3118	003017'02  263 17 0 00 000000 		 RET			;NO SPACE, FAIL
  3119	003020'02  200 05 0 00 000001 		MOVE W1,T1		;SAVE BLOCK ADDRESS
  3120	003021'02  201 02 0 01 000007 		MOVEI T2,MSHDR(T1)	;GET TO DATA PART
  3121	003022'02  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)
  3122	003023'02  200 01 0 11 002774*		MOVE T1,FILLLB(JFN)	;GET LL BLOCK
  3123	003024'02  202 02 0 01 000016 		MOVEM T2,LLBPTR(T1)	;THE POINTER
  3124	003025'02  402 00 0 01 000017 		SETZM LLBPCT(T1)	;INIT COUNT
  3125	003026'02  201 02 0 00 000060 		MOVEI T2,DATMFL+DATFLI+DATINT ;FLAGS
  3126	003027'02  137 02 0 00 007713'		STOR T2,MSMFL,(W1)	;SAVE IN MESSAGE
  3127	003030'02  260 17 0 00 000000#		CALL RTHDCI		;PUT ON ROUTE HEADER AND FLAGS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 71-1
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  3128	003031'02  260 17 0 00 000000#		CALL PUTLLA		;PUT IN LL ADDRESSES
  3129	003032'02  135 02 0 00 007714'		LOAD T2,LLISN,(T1)	;GET SEG #
  3130	003033'02  350 00 0 00 000002 		AOS T2			;NEXT ONE
  3131	003034'02  405 02 0 00 007777 		ANDI T2,7777		;MOD 4096
  3132	003035'02  137 02 0 00 007715'		STOR T2,MSSEG,(W1)	;SAVE IN MESSAGE
  3133	003036'02  137 02 0 00 007714'		STOR T2,LLISN,(T1)	;LAST SEG SENT
  3134	003037'02  260 17 0 00 000000#		CALL TWOBYT		;PUT IN DATA PART
  3135	003040'02  205 16 0 00 770000 		DECR LLMIC,(T1)		;ONE LESS PIECE OF QUOTA
  3136	003041'02  272 16 0 01 000015 
  3137	003042'02  200 04 0 17 777773 		MOVE T4,SIMCNT		;GET COUNT
  3138	003043'02  200 03 0 17 777774 		MOVE T3,SIMPTR		;GET POINTER
  3139	003044'02  641 03 0 00 777777 		TLC T3,-1
  3140	003045'02  647 03 0 00 777777 		TLCN T3,-1
  3141	003046'02  505 03 0 00 440700 		HRLI T3,(<POINT 7,>)	;FORM DEFAULT
  3142	003047'02  202 03 0 17 777774 		MOVEM T3,SIMPTR		;SAVE UPDATED POINTER
  3143	003050'02  254 00 0 00 003053'		JRST MSTSN2		;GO SEND THEM
  3144	003051'02  260 17 1 17 777775 	MSTSN1:	CALL @SIMRTN		;GET NEXT BYTE
  3145	003052'02  260 17 0 00 000000#		CALL ONEBYT		;STORE IN MESSAGE
  3146	003053'02  365 04 0 00 003051'	MSTSN2:	SOJGE T4,MSTSN1		;DO THEM ALL
  3147	003054'02  550 02 0 01 000002 		LOAD T2,LLLNK,(T1)	;GET LINK ADDRESS
  3148	003055'02  137 02 0 00 007716'		STOR T2,MSLLA,(W1)	;SAVE IN MESSAGE
  3149	003056'02  201 02 0 00 000001 		MOVEI T2,MSLSI		;GET TYPE OF THIS MESSAGE
  3150	003057'02  137 02 0 00 007717'		STOR T2,MSTOM,(W1)	;SAVE IN MESSAGE
  3151	003060'02  200 02 0 00 000005 		MOVE T2,W1		;GET MESSAGE
  3152	003061'02  260 17 0 00 000000#		CALL SNDSEG		;SEND IT
  3153	003062'02  200 03 0 17 777774 		MOVE T3,SIMPTR		;RETURN UPDATED POINTER
  3154	003063'02  254 00 0 00 002776*		RETSKP			;DONE, RETURN SUCCESS
  3155
  3156						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 72
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  3157
  3158					;MTOPR ROUTINE TO RETURN OBJECT-DESCRIPTOR.
  3159					;RETURNS OBJECT-DESCRIPTOR IN STRING POINTED TO BY USER AC3
  3160					;RETURNS USER,GROUP CODE IN AC4 (OR A ZERO IN AC4 IF NONE).
  3161
  3162	003064'02  200 16 0 01 000002 	NTRCOB::JE LLFOB,(T1),NTRCB1	;MAKE SURE IT IS AN OBJECT
  3163	003065'02  607 16 0 00 000001 
  3164	003066'02  254 00 0 00 003073'
  3165	003067'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET STATE
  3166	003070'02  302 02 0 00 000003 		CAIE T2,LLSCIR		;RECIEVED A CI?
  3167	003071'02  306 02 0 00 000004 		CAIN T2,LLSRUN		;OR RUNNING?
  3168	003072'02  334 00 0 00 000000 		SKIPA			;YES
  3169					NTRCB1:	JRST [	CALL BLKULK	;NO. UNLOCK BLOCK
  3170	003073'02  254 00 0 00 007720'			JRST MTOBJ1]	;AND DONE
  3171	003074'02  200 02 0 01 000040 		MOVE T2,LLUSGP(T1)	;GET USER,GROUP
  3172	003075'02  256 04 0 00 007722'		UMOVEM T2,4		;RETURN IT
  3173	003076'02  135 02 0 00 007723'		LOAD T2,LLFNM,(T1)	;GET OBJ NUMBER USED IN CI
  3174	003077'02  200 03 0 00 007724'		MOVE T3,[-OBJENT,,OBJPRO+1] ;SET UP FOR SEARCH
  3175	003100'02  550 04 0 03 000000 	NTRCB2:	HRRZ T4,0(T3)		;GET OBJECT NUMBER
  3176	003101'02  306 04 0 02 000000 		CAIN T4,0(T2)		;THIS THE ONE?
  3177						JRST [	HLRZ T2,0(T3)	;YES. GET POINTER TO NAME
  3178	003102'02  254 00 0 00 007725'			JRST NTRCB3]	;AND PROCEED
  3179	003103'02  253 03 0 00 003100'		AOBJN T3,NTRCB2		;NO. LOOK AT NEXT
  3180	003104'02  265 16 0 00 003000*		STKVAR <NTRCBN>		;NOT FOUND
  3181	003105'02  000001  000001
  3182	003106'02  201 03 0 00 000012 		MOVEI T3,12		;CONVERT OBJECT NUMBER TO TEXT
  3183	003107'02  561 01 0 17 777776 		HRROI T1,NTRCBN
  3184	003110'02  104 00 0 00 000224 		NOUT
  3185	003111'02  255 00 0 00 000000 		 JFCL
  3186	003112'02  200 01 0 11 003023*		MOVE T1,FILLLB(JFN)	;GET BACK LL BLOCK
  3187	003113'02  201 02 0 17 777776 		MOVEI T2,NTRCBN		;GET POINTER TO NUMBER
  3188	003114'02  260 17 0 00 002467'	NTRCB3:	CALL NTACPY		;PUT OBJECT STRING IN USER SPACE
  3189	003115'02  135 03 0 00 007471'		LOAD T3,LLFDS,(T1)	;GET DESCRIPTOR
  3190	003116'02  336 00 0 03 000000 		SKIPN 0(T3)		;HAVE ONE?
  3191	003117'02  254 00 0 00 002544'		JRST MTDON		;NO. ALL DONE THEN
  3192	003120'02  201 02 0 00 007727'		MOVEI T2,[ASCIZ /-/]	;YES. PUT IN PUNCTUATION
  3193	003121'02  260 17 0 00 002467'		CALL NTACPY
  3194	003122'02  135 02 0 00 007471'		LOAD T2,LLFDS,(T1)	;GET BACK DESCRIPTOR STRING
  3195	003123'02  254 00 0 00 002455'		CALLRET NTCPY		;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 73
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  3196
  3197					;MTOPR FUNCTION TO REFUSE A CONNECTION
  3198					;*************** NOTE *******************
  3199					;THIS CODE HAS A RACE IN THAT THE LINK IS IMMEDIATELY CONVERTED
  3200					;INTO A "LISTENER". THEREFORE, WHEN THE DC ARRIVES, THERE
  3201					;IS POTENTIAL CONFUSION OVER THE OWNER. THE
  3202					;PROBABILITY OF FAILURE IS <1/(HOSTS*2**16)> WHERE,
  3203					;"HOSTS" = # OF HOSTS ON THE NET.
  3204
  3205	003124'02  260 17 0 00 003206'	NTRJCT:	CALL NTRFCI		;SEND DI
  3206	003125'02  254 00 0 00 003677'		 JRST SQOBAD		;NEED TO BLOCK
  3207	003126'02  260 17 0 00 000000#		CALL FLUSH		;KILL OF BUFFERS (IF ANY)
  3208	003127'02  260 17 0 00 001652'		CALL CLRBLK		;RESET LL BLOCK
  3209	003130'02  201 02 0 00 000001 		MOVEI T2,LLSLIS		;GET NEW STATE
  3210	003131'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;SET IT BACK TO LISTENING
  3211	003132'02  254 00 0 00 002611'		CALLRET NTMTGD		;AND DONE
  3212
  3213					;MTOPR FUNCTION TO CLOSE A CONNECTION
  3214
  3215	003133'02  135 02 0 00 007375'	NTMTCZ::LOAD T2,LLSTA,(T1)	;GET CURRENT STATE
  3216	003134'02  306 02 0 00 000003 		CAIN T2,LLSCIR		;REALLY REJECTING A CONNECTION?
  3217	003135'02  254 00 0 00 003124'		CALLRET NTRJCT		;YES. GO DO IT
  3218	003136'02  306 02 0 00 000006 		CAIN T2,LLSDIQ		;DI QUEUED?
  3219	003137'02  254 00 0 00 003155'		JRST NTMCZ0		;YES. GO ON THEN
  3220	003140'02  302 02 0 00 000004 		CAIE T2,LLSRUN		;NOW CONNECTED?
  3221	003141'02  254 00 0 00 003073'		JRST NTRCB1		;NO. CAN'T DISCONNECT THEN
  3222	003142'02  256 04 0 00 007730'		UMOVE T2,2		;GET   REASON,,.MOCLZ
  3223	003143'02  557 00 0 00 000002 		HLRZS T2		;GET TYPE OF CLOSE
  3224	003144'02  332 00 0 00 000002 		SKIPE T2		;SYNCHRONOUS DISCONNECT?
  3225						JRST [	CALL FLUSH	;NO, ABORT CLOSE. CLEAN OUT MESSAGES
  3226	003145'02  254 00 0 00 007731'			JRST NTMCZ0]	;AND SEND THE MESSAGE
  3227	003146'02  200 16 0 01 000023 		JE LLQOU,(T1),NTMCZ0	;IF QUEUER EMPTY, GO ON.
  3228	003147'02  606 16 0 00 000377 
  3229	003150'02  254 00 0 00 003155'
  3230	003151'02  260 17 0 00 000000#		CALL MOVSEG		;PICK UP ACKS
  3231	003152'02  254 00 0 00 003546'		 JRST OUTWAT		;NEED TO BLOCK
  3232	003153'02  201 02 0 00 000000#		MOVEI T2,CHKEMP		;WAIT FOR ALL ACKS
  3233	003154'02  254 00 0 00 003546'		JRST OUTWAT		; AND GO DO IT
  3234
  3235					;READY TO SEND THE MESSAGE
  3236
  3237	003155'02  201 02 0 00 000006 	NTMCZ0:	MOVEI T2,LLSDIQ		;SET STATE
  3238	003156'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;""
  3239	003157'02  260 17 0 00 003206'		CALL NTRFCI		;SEND DI
  3240	003160'02  254 00 0 00 003677'		 JRST SQOBAD		;MUST WAIT
  3241	003161'02  201 02 0 00 000005 		MOVEI T2,LLSDIS		;NEW STATE
  3242	003162'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;STORE IT
  3243	003163'02  254 00 0 00 002611'		CALLRET NTMTGD		;AND DONE
  3244
  3245					;ROUTINE TO ACCEPT A CONNECTION
  3246
  3247	003164'02  265 16 0 00 003104*	NTACPT::STKVAR <<OPTDAT,4>>
  3248	003165'02  000004  000004
  3249	003166'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET STATE
  3250	003167'02  302 02 0 00 000003 		CAIE T2,LLSCIR		;PROPER STATE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 73-1
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  3251	003170'02  254 00 0 00 003073'		JRST NTRCB1		;NO. ERROR
  3252	003171'02  201 03 0 17 777773 		MOVEI T3,OPTDAT		;MOVE OPTDATA IF ANY
  3253	003172'02  256 04 0 00 007733'		UMOVE T2,4		;GET COUNT
  3254	003173'02  256 04 0 00 007734'		UMOVE T4,3		;GET USER'S POINTER
  3255	003174'02  260 17 0 00 003223'		CALL NTMVOP		;GET OPTDATA ARG
  3256	003175'02  254 00 0 00 003677'		 JRST SQOBAD		;TOO LONG
  3257	003176'02  260 17 0 00 003707'		CALL CNFCOM		;GO CONFIRM IT
  3258	003177'02  254 00 0 00 003677'		 JRST SQOBAD		;NEED TO WAIT
  3259	003200'02  254 00 0 00 002611'		CALLRET NTMTGD		;DONE
  3260
  3261					;MTOPR TO RETURN MAX SEGMENT SIZE FOR THE LINK
  3262
  3263	003201'02  260 17 0 00 002564'	MTGSS::	CALL MTRNCK		;MUST BE RUNNING
  3264	003202'02  254 00 0 00 003677'		 JRST SQOBAD		;NOT
  3265	003203'02  135 02 0 00 007415'		LOAD T2,LLSWG,(T1)	;GET MAX SEG SIZE
  3266	003204'02  256 04 0 00 007651'		UMOVEM T2,3		;RETURN TO USER
  3267	003205'02  254 00 0 00 002611'		CALLRET NTMTGD		;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 74
NSPSRV	MAC	 6-Apr-82 10:58		MTOPR Utility Functions

  3268
  3269					;COMMON ROUTINE USED TO SET UP FOR CALL TO SNDDI TO DISCONNECT
  3270					;OR REFUSE A CONNECTION.
  3271
  3272	003206'02  265 16 0 00 003164*	NTRFCI:	STKVAR <<OPTDAT,4>>	;GET SOME SPACE TO HOLD USER DATA
  3273	003207'02  000004  000004
  3274	003210'02  201 03 0 17 777773 		MOVEI T3,OPTDAT		;WHERE TO MOVE OPTDATA TO
  3275	003211'02  256 04 0 00 007733'		UMOVE T2,4		;GET COUNT
  3276	003212'02  256 04 0 00 007734'		UMOVE T4,3		;GET USER'S POINTER
  3277	003213'02  260 17 0 00 003223'		CALL NTMVOP		;DO IT
  3278	003214'02  263 17 0 00 000000 		 RETBAD()		;TOO LONG
  3279	003215'02  256 04 0 00 007735'		XCTU [HLRZ T2,2]	;GET REASON
  3280	003216'02  201 04 0 00 000070 		MOVEI T4,CNMRFL+CNMDI	;GET PROPER FLAGS
  3281	003217'02  260 17 0 00 003374'		CALL SNDDI		;SEND THE DI
  3282						 JRST [	TQO <BLKF>	;SCHED TEST ALREADY IN T1, NOTE BLOCK NEEDED
  3283	003220'02  254 00 0 00 007251'			RET ]		;COME BACK AGAIN LATER
  3284	003221'02  260 17 0 00 000000#		CALL SNDCTL		;SEND THE MESSAGE
  3285	003222'02  254 00 0 00 003063*		RETSKP			;AND DONE
  3286
  3287					;ROUTINE TO COPY OPTDATA TO A BUFFER AND RETURN PROPER OPTDATA
  3288					;ARG
  3289					;	T2/ INPUT BYTE COUNT
  3290					;	T3/ BUFFER ADDRESS
  3291					;	T4/ INPUT POINTER
  3292					;RETURNS:	+1 TOO LONG
  3293					;		+2 DONE
  3294
  3295	003223'02  265 16 0 00 002401*	NTMVOP::ACVAR <W1,W2,W3>
  3296	003224'02  265 16 0 00 003206*		STKVAR <NMVCNT,NMVPTR>
  3297	003225'02  000002  000002
  3298	003226'02  641 04 0 00 777777 		TLC T4,-1		;CHECK FOR SPECIAL POINTER
  3299	003227'02  647 04 0 00 777777 		TLCN T4,-1		;IS IT?
  3300	003230'02  505 04 0 00 440700 		HRLI T4,(<POINT 7,>)	;YES. CONVERT IT THEN
  3301	003231'02  202 04 0 17 777775 		MOVEM T4,NMVPTR		;SAVE POINTER TO INPUT
  3302	003232'02  202 02 0 17 777776 		MOVEM T2,NMVCNT		;SAVE COUNT OF BYTES
  3303	003233'02  200 07 0 00 000003 		MOVE W3,T3		;SAVE BUFFER ADDRESS
  3304	003234'02  402 00 0 00 000003 		SETZM T3		;ASSUME NO DATA
  3305	003235'02  200 04 0 17 777776 		MOVE T4,NMVCNT		;GET COUNT
  3306	003236'02  322 04 0 00 003222*		JUMPE T4,RSKP		;IF NONE, NO ARG
  3307	003237'02  331 00 0 00 000004 		SKIPL T4		;COUNT MUST BE POSITIVE
  3308	003240'02  303 04 0 00 000020 		CAILE T4,MAXDSC		;WITHING LIMITS
  3309	003241'02  254 00 0 00 007176'		RETBAD (DCNX12)		;NO. TOO LONG
  3310	003242'02  137 04 0 00 007736'		STOR T4,CNTFLD,W3	;BUILD RETURN ARG
  3311	003243'02  200 06 0 00 007737'		MOVE W2,[POINT 8,0(W3)]	;GET POINTER TO SOURCE
  3312	003244'02  200 03 0 17 777775 		MOVE T3,NMVPTR		;GET USER'S POINTER
  3313	003245'02  256 03 0 00 007740'	NTMVO1:	XCTBU [ILDB W1,T3]	;GET BYTE
  3314	003246'02  136 05 0 00 000006 		IDPB W1,W2		;STASH IT
  3315	003247'02  367 04 0 00 003245'		SOJG T4,NTMVO1		;COPY THEM ALL
  3316	003250'02  200 03 0 00 000007 		MOVE T3,W3		;GET ARG
  3317	003251'02  254 00 0 00 003236*		RETSKP			;AND DONE
  3318
  3319						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 75
NSPSRV	MAC	 6-Apr-82 10:58		Routines to CLose a Logical Link

  3320					SUBTTL	Routines to CLose a Logical Link
  3321
  3322
  3323	003252'02  265 16 0 00 002575*	NETCLZ::ACVAR <W1,W2>		;GET SOME WORK REGISTERS
  3324	003253'02  200 06 0 00 000001 		MOVE W2,T1		;SAVE ENTRY FLAGS
  3325	003254'02  260 17 0 00 000533'		CALL NETUOU		;UNDO OUTPUT
  3326	003255'02  200 01 0 11 003112*	NETCL1:	MOVE T1,FILLLB(JFN)	;GET LL BLOCK ADDRESS
  3327	003256'02  260 17 0 00 000000#		CALL BLKLLK		;LOCK THE BLOCK
  3328						 JRST [	TXNN W2,CZ%ABT	;ABORT?
  3329							JRST WATBLK	;NO. CONVENTIONAL WAIT THEN
  3330							MDISMS		;YES. WAIT HERE
  3331	003257'02  254 00 0 00 007741'			JRST NETCL1]	;AND TRY AGAIN
  3332	003260'02  260 17 0 00 000000#		CALL MOVSEG		;PICK UP LATENT ACKS
  3333	003261'02  200 01 0 11 003255*		 MOVE T1,FILLLB(JFN)	;GET BACK LL BLOCK ADDRESS
  3334	003262'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET CURRENT STATE
  3335	003263'02  254 00 1 02 004335'		JRST @CLZSTA-1(T2)	;GO DO PROPER THING
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 76
NSPSRV	MAC	 6-Apr-82 10:58		Routines to CLose a Logical Link

  3336
  3337					;STATE ROUTINES OF NETCLZ
  3338					;LINK IN RUN STATE
  3339
  3340	003264'02  603 06 0 00 004000 	CLZRUN:	TXNE W2,CZ%ABT		;WANT ABORT?
  3341					CLZDI:	JRST [	MOVEI T2,.DCX9	;YES. SAY USER ABORT
  3342	003265'02  254 00 0 00 007745'			JRST CLZEMP]	;AND GO SEND DI,ETC...
  3343	003266'02  135 03 0 00 007414'		LOAD T3,LLBSZ,(T1)	;GET BYTE SIZE
  3344	003267'02  260 17 0 00 002437'		CALL MAKPTR		;COMPUTE MAX BYTES IN BUFFER
  3345	003270'02  200 01 0 11 003261*		MOVE T1,FILLLB(JFN)	;GET BACK POINTER
  3346	003271'02  554 03 0 11 000557*		HLRZ T3,FILBCT(JFN)	;SEE IF ANY BYTES
  3347	003272'02  275 02 0 03 000000 		SUBI T2,0(T3)		;COMPUTE BYTES TO BE SENT
  3348	003273'02  200 16 0 01 000010 		TMNE LLFLO,(T1)		; FLOW NOW TO F/S?
  3349	003274'02  603 16 0 00 020000 
  3350	003275'02  332 00 0 00 000002 		SKIPE T2		;YES. ANY BYTES?
  3351	003276'02  334 00 0 00 000000 		SKIPA			;HAVE DATA TO SEND
  3352	003277'02  254 00 0 00 003305'		JRST CLZCMS		;ALL DATA SENT. WAIT FOR ACKS
  3353	003300'02  205 16 0 00 000002 		SETONE LLFEM,(T1)	;SAY EOM IN THIS BUFFER
  3354	003301'02  436 16 0 01 000002 
  3355	003302'02  260 17 0 00 003505'		CALL OUTRR		;GO FORCE OUT DATA
  3356	003303'02  263 17 0 00 000000 		 RETBAD()		;COULDN'T. WAIT A WHILE
  3357	003304'02  200 01 0 11 003270*		MOVE T1,FILLLB(JFN)	;RESTORE LL BLOCK ADDRESS
  3358
  3359					;ALL DATA OUT. WAIT FOR ACKS
  3360
  3361	003305'02  400 02 0 00 000000 	CLZCMS:	SETZ T2,		;SYNCHRONOUS DI
  3362	003306'02  200 16 0 01 000023 		JE LLQOU,(T1),CLZEMP	;IF ALL ACK'ED, READY TO GO
  3363	003307'02  606 16 0 00 000377 
  3364	003310'02  254 00 0 00 003313'
  3365	003311'02  201 02 0 00 000000#		MOVEI T2,CHKEMP		;WAIT FOR EMPTY
  3366	003312'02  254 00 0 00 003546'		JRST OUTWAT		;AND ARRANGE FOR THE WAIT
  3367
  3368	003313'02  137 02 0 00 007636'	CLZEMP:	STOR T2,LLRSN,(T1)	;SAVE REASON CODE
  3369	003314'02  402 00 0 00 000002 	CLZDIQ:	SETZM T2		;ASSUME SYNCHRONOUS CLOSE
  3370	003315'02  603 06 0 00 004000 		TXNE W2,CZ%ABT		;ABORT CLOSE ?
  3371	003316'02  476 00 0 00 000002 		SETOM T2		;YES, NOTE SO
  3372	003317'02  402 00 0 00 000003 		SETZM T3		;NO OPTIONAL DATA
  3373	003320'02  260 17 0 00 003353'		CALL CLZSDI		;GO SEND DI FOR CLOSE
  3374						 JRST [	TXNE W2,CZ%ABT	;ABORT?
  3375							JRST CLZABT	;YES. GO RELEASE BLOCK THEN
  3376							TQO <BLKF>	;COULD NOT SEND DI, MUST TRY AGAIN LATER
  3377	003321'02  254 00 0 00 007747'			JRST SQOBAD ]	;BLOCK AND TRY AGAIN
  3378	003322'02  603 06 0 00 004000 	CLZWDC:	TXNE W2,CZ%ABT		;ABORT CLOSE?
  3379						JRST [	SETONE LLSDE,(T1) ;YES. DISSOCIATE PROCESS AND LINK
  3380							CALL FLUSH	;GET RID OF ALL MESSAGES
  3381							CALL BLKULK	;UNLOCK THE LL BLOCK
  3382	003323'02  254 00 0 00 007753'			JRST CLZDN1]	;AND GO FINISH UP
  3383	003324'02  201 02 0 00 000000#		MOVEI T2,CHKDCR		;WAIT FOR DC TO COME BACK
  3384	003325'02  254 00 0 00 003546'		JRST OUTWAT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 77
NSPSRV	MAC	 6-Apr-82 10:58		Routines to CLose a Logical Link

  3385
  3386					;MORE CLOSE ROUTINES
  3387					;DC HAS ARRIVED. FIND OUT IF IT WHAT WE WANTED
  3388
  3389	003326'02			CLZDIR:				;CLOSE IN DI RECEIVED STATE
  3390	003326'02  135 02 0 00 007636'	CLZABT:	LOAD T2,LLRSN,(T1)	;GET REASON
  3391	003327'02  332 00 0 00 000002 		SKIPE T2		;NON-SPECIAL ERROR?
  3392	003330'02  306 02 0 00 000052 		CAIN T2,.DCX42		;OR REPLY TO DI?
  3393	003331'02  254 00 0 00 003334'		JRST CLZDON		;YES. GOOD CODE
  3394	003332'02  607 06 0 00 004000 		TXNN W2,CZ%ABT		;NOT. ARE WE ABORTING?
  3395						JRST [	CALL BLKULK	;NO. SYNCH DI DIDN'T WORK
  3396	003333'02  254 00 0 00 007760'			RETBAD (DCNX11)] ;SAY SO
  3397	003334'02  260 17 0 00 000000#	CLZDON:	CALL FLUSH		;CLEAN UP Q'S
  3398	003335'02  260 17 0 00 000000#		LLLOCK			;LOCK THE TREE
  3399	003336'02  260 17 0 00 001531'		CALL DELNOD		;GET RID OF NODE
  3400	003337'02  260 17 0 00 000000#		LLLULK
  3401	003340'02  256 00 0 00 001620*		OKINT			;MATCH BLKLOK THAT IS NEVER MATCHED
  3402	003341'02  370 00 0 00 002103*	CLZDN1:	DECR DCCUR		;GIVING BACK A LINK
  3403	003342'02  554 01 0 11 000464*		HLRZ T1,FILWND(JFN)	;GET OUTPUT WINDOW
  3404	003343'02  332 00 0 00 000001 		SKIPE T1
  3405	003344'02  260 17 0 00 000466*		CALL RELPAG		;RELEASE IT
  3406	003345'02  550 01 0 11 003342*		HRRZ T1,FILWND(JFN)	;GET INPUT WINDOW
  3407	003346'02  332 00 0 00 000001 		SKIPE T1
  3408	003347'02  260 17 0 00 003344*		CALL RELPAG		;RELEASE IT
  3409	003350'02  402 00 0 11 000545*		SETZM FILBFO(JFN)
  3410	003351'02  402 00 0 11 000561*		SETZM FILBFI(JFN)
  3411	003352'02  254 00 0 00 003251*		RETSKP			;AND DONE
  3412
  3413						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 78
NSPSRV	MAC	 6-Apr-82 10:58		Routines to CLose a Logical Link

  3414					;CLZSDI - ROUTINE TO SEND A DI FOR A CLOSE
  3415					;
  3416					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  3417					;	    T2/	0 IF SYNCHRONOUS CLOSE, -1 IF ABORT
  3418					;	    T3/	COUNT OF BYTES IN OPTIONAL DATA (0 IF NONE)
  3419					;	    T4/	ADDRESS OF OPTIONAL DATA BUFFER
  3420					;		CALL CLZSDI
  3421					;RETURNS: +1	 FAILED, COULD NOT SEND DI
  3422					;	  +2	SUCCESS, WITH DI SEND
  3423
  3424	003353'02  265 16 0 00 001735*	CLZSDI::ASUBR <CDILLB,CDIFLG,CDICNT,CDIBUF>
  3425	003354'02  265 16 0 00 003224*		STKVAR <<CDIOPT,4>>
  3426	003355'02  000004  000004
  3427
  3428	003356'02  200 01 0 15 000001 		MOVE T1,CDILLB		;GET LOGICAL LINK BLOCK ADDRESS
  3429	003357'02  201 02 0 00 000006 		MOVEI T2,LLSDIQ		;DI IS NOW QUEUED
  3430	003360'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;MARK STATE CHANGE
  3431	003361'02  402 00 0 00 000003 		SETZM T3		;START BY ASSUMING NO OPTIONAL DATA
  3432	003362'02  332 00 0 15 000003 		SKIPE CDICNT		;ANY OPTIONAL DATA ?
  3433						JRST [	MOVEI T3,CDIOPT	;YES, GET DESTINATION BUFFER ADDRESS
  3434							MOVE T2,CDICNT	;GET NUMBER OF BYTES IN OPTIONAL DATA
  3435							MOVE T4,CDIBUF	;GET SOURCE BUFFER ADDRESS
  3436							HRLI T4,(POINT 8,) ;AND FORM A POINTER TO OPTIONAL DATA
  3437							CALL NTMVOP	;CHECK OPTIONAL DATA, SETUP T3 WITH COUNT
  3438							 RETBAD ()	;FAILED, RETURN ERROR TO USER
  3439	003363'02  254 00 0 00 007762'			JRST .+1]	;T3 SET UP, CONTINUE WITH SETUP FOR DI MESSAGE
  3440	003364'02  135 02 0 00 007636'		LOAD T2,LLRSN,(T1)	;GET OUR REASON
  3441	003365'02  201 04 0 00 000070 		MOVEI T4,CNMRFL+CNMDI	;IS A DI
  3442	003366'02  260 17 0 00 003374'		CALL SNDDI		;GO SEND DI
  3443						 JRST [	SKIPN CDIFLG	;ABORT ?
  3444							RETBAD ()	;NO. BLOCK THEN
  3445							TQZ <BLKF>	;YES. UNDO BLOCK
  3446							BUG (CLZDIN)
  3447						  ;BUG type:    BUGINF, SOFT
  3448						  ;BUG message: CLZSDI - Could not send DI
  3449						       SALL
  3450							MOVE T1,CDILLB	;GET BACK LOGICAL LINK BLOCK ADDRESS
  3451	003367'02  254 00 0 00 007773'			RETBAD ()]	;AND DONE
  3452	003370'02  260 17 0 00 000000#		CALL SNDCTL		;SEND THE MESSAGE
  3453	003371'02  201 02 0 00 000005 	CLZDQ1:	MOVEI T2,LLSDIS		;SAY DI IS SENT
  3454	003372'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)
  3455	003373'02  254 00 0 00 003352*		RETSKP			;DONE, RETURN SUCCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 79
NSPSRV	MAC	 6-Apr-82 10:58		Routines to CLose a Logical Link

  3456					;ROUTINE TO SEND A DI OR A DC
  3457
  3458					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  3459					;		T2/ REASON
  3460					;		T3/ <COUNT>B5+PTR TO USER DATA
  3461					;		T4/ FLAGS
  3462					;RETURNS:	+1/ COULDN'T. TEST ROUTINE IN T1
  3463					;		+2/ ALL SENT
  3464
  3465	003374'02  265 16 0 00 003353*	SNDDI:	ASUBR <LLBLK,DISRSN,DIUDAT,DIFLGS>
  3466	003375'02  265 16 0 00 003354*		STKVAR <LLMSGB>
  3467	003376'02  000001  000001
  3468	003377'02  201 01 0 00 000021 		MOVX T1,DILEN+MSHDR	;GET A BLOCK FOR THE DI
  3469	003400'02  260 17 0 00 000000#		CALL GETRES		;GET IT
  3470	003401'02  254 00 0 00 000000#		 JRST TIMWAT		;FAILED
  3471	003402'02  202 01 0 17 777776 		MOVEM T1,LLMSGB		;SAVE BLOCK ADDRESS
  3472	003403'02  201 02 0 01 000007 		MOVEI T2,MSHDR(T1)	;GET TO START OF DATA PORTION
  3473	003404'02  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)
  3474	003405'02  200 01 0 15 000001 		MOVE T1,LLBLK		;GET BACK LL BLOCK ADDRESS
  3475	003406'02  202 02 0 01 000016 		MOVEM T2,LLBPTR(T1)	;SAVE POINTER
  3476	003407'02  402 00 0 01 000017 		SETZM LLBPCT(T1)	;INIT COUNT
  3477	003410'02  200 02 0 15 000004 		MOVE T2,DIFLGS		;GET FLAGS
  3478	003411'02  260 17 0 00 000000#		CALL RTHDCI		;PUT ON ROUTING HEADER AND FLAGS
  3479	003412'02  260 17 0 00 000000#		CALL PUTLLR		;PUT IN LL ADDRESSES
  3480	003413'02  200 02 0 15 000002 		MOVE T2,DISRSN		;GET REASON
  3481	003414'02  260 17 0 00 000000#		CALL TWOBYT		;PUT IT IN
  3482	003415'02  200 03 0 15 000004 		MOVE T3,DIFLGS		;SEE IF DI OR DC
  3483	003416'02  306 03 0 00 000110 		CAIN T3,CNMRFL+CNMDC	;DC?
  3484	003417'02  254 00 0 00 003424'		JRST SNDDI1		;YES. NO OPTDATA THEN
  3485	003420'02  200 03 0 15 000003 		MOVE T3,DIUDAT		;GET USER DATA
  3486	003421'02  135 02 0 00 010001'		LOAD T2,CNTFLD,T3 	;YES. GET COUNT
  3487	003422'02  621 03 0 00 770000 		SETZRO CNTFLD,T3 	;CLEAR THOSE BITS
  3488	003423'02  260 17 0 00 002372'		CALL MVBNRY		;PUT IN THE DATA
  3489	003424'02  200 02 0 17 777776 	SNDDI1:	MOVE T2,LLMSGB		;GET BACK BLOCK ADDRESS
  3490	003425'02  254 00 0 00 003373*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 80
NSPSRV	MAC	 6-Apr-82 10:58		Routines to CLose a Logical Link

  3491
  3492					;ROUTINES CALLED FROM FILE SYSTEM TO SWITCH THE SENSE OF THE
  3493					;JFN. FIRST, ROUTINE TO SWITCH JFN TO INPUT SENSE
  3494
  3495	003426'02  260 17 0 00 000533'	NETINP::CALL NETUOU		;GO UNDO OUTPUT IF NECESSARY
  3496	003427'02  260 17 0 00 000547'		CALL NETUIN		;UNDO INPUT
  3497	003430'02  200 01 0 11 003304*		MOVE T1,FILLLB(JFN)	;GET LL BLOCK
  3498	003431'02  260 17 0 00 000000#		CALL BLKLLK		;LOCK IT UP
  3499						 JRST [	MDISMS		;WAIT FOR LOCK
  3500	003432'02  254 00 0 00 010002'			JRST NETINP]	;AND TRY AGAIN
  3501	003433'02  660 10 0 00 020000 		TQO <FILINP>		;NOW WILL SWITCH TO INPUT
  3502	003434'02  135 03 0 00 007375'		LOAD T3,LLSTA,(T1)	;GET STATE
  3503	003435'02  306 03 0 00 000005 		CAIN T3,LLSDIS		;DID USER TERMINATE LINK ?
  3504						JRST [	CALL BLKULK	;YES, UNLOCK LOGICAL LINK BLOCK
  3505							SETZM T1	;NOTE NO MORE INPUT AVAILABLE
  3506	003436'02  254 00 0 00 010004'			RET ]		;AND DONE
  3507	003437'02  302 03 0 00 000004 		CAIE T3,LLSRUN		;RUNNING?
  3508	003440'02  306 03 0 00 000007 		CAIN T3,LLSDIR		;OR STILL AVAILBALE FOR INPUT?
  3509	003441'02  334 00 0 00 000000 		SKIPA			;YES
  3510	003442'02  254 00 0 00 003452'		JRST NETIN2		;NO. GO ON
  3511	003443'02  550 03 0 11 003271*		HRRZ T3,FILBCT(JFN)	;GET COUNT OF BYTES
  3512	003444'02  200 16 0 01 000010 		TMNE LLFLI,(T1)		;IS FLOW FROM NETWORK?
  3513	003445'02  603 16 0 00 040000 
  3514	003446'02  336 00 0 00 000003 		SKIPN T3		;NO. NEED BYTES?
  3515	003447'02  260 17 0 00 003773'		CALL NETSET		;YES. GO GET SOME BYTES
  3516	003450'02  200 01 0 11 003430*		 MOVE T1,FILLLB(JFN)	;GET BACK LL BLOCK ADDRESS
  3517	003451'02  621 10 0 00 000040 		TQZ <BLKF>		;IGNORE BLOCKING IF SET
  3518	003452'02  260 17 0 00 000000#	NETIN2:	CALL BLKULK		;FREE LOCK
  3519	003453'02  200 02 0 11 003351*		MOVE T2,FILBFI(JFN)	;GET INPUT BYTE POINTER
  3520	003454'02  550 01 0 11 003443*		HRRZ T1,FILBCT(JFN)	;GET COUNT
  3521	003455'02  200 03 0 11 003450*		MOVE T3,FILLLB(JFN)	;GET LL BLOCK
  3522	003456'02  200 16 0 03 000010 		TMNE LLFLI,(T3)		;IS INPUT FLOW TO THE F/S?
  3523	003457'02  603 16 0 00 040000 
  3524	003460'02  332 00 0 03 000006 		SKIPE LLMSI(T3)		;YES. FREE OF INT MESSAGES
  3525						CALL [	SETZB T1,FILLEN(JFN) ;NO. NO BYTES THEN
  3526							TQZ <FILINP>	;AND SAY NO GOOD DATA IN JFN BLOCK
  3527	003461'02  260 17 0 00 010007'			RET]		;DONE
  3528	003462'02  202 01 0 11 000571*	NETSCM:	MOVEM T1,FILCNT(JFN)	;TO THE JFN
  3529	003463'02  202 02 0 11 000574*		MOVEM T2,FILBYT(JFN)	;STORE NEW POINTER
  3530	003464'02  402 00 0 11 000000*		SETZM FILBYN(JFN)	;ZERO BYTE NUMBER
  3531	003465'02  322 01 0 00 002674*		JUMPE T1,R		;IF NO COUNT, RETURN NOW
  3532	003466'02  200 16 0 03 000002 		TMNN LLFIM,(T3)		;EOM IN THE INPUT BUFFER?
  3533	003467'02  607 16 0 00 000040 
  3534	003470'02  350 00 0 00 000001 		AOS T1			;NO. MAKE SINR COME BACK THEN
  3535	003471'02  202 01 0 11 000000*		MOVEM T1,FILLEN(JFN)	;AND MAKE COUNT THE LENGTH
  3536	003472'02  263 17 0 00 000000 		RET			;DONE
  3537
  3538					;ROUTINE TO SET UP FOR OUTPUT
  3539
  3540	003473'02  260 17 0 00 000547'	NETOUP::CALL NETUIN		;UNDO INPUT IF NECESSARY
  3541	003474'02  662 10 0 00 010000 		TQOE <FILOUP>		;NOW DOING OUTPUT?
  3542	003475'02  263 17 0 00 000000 		RET			;YES. ALL DONE
  3543	003476'02  200 02 0 11 003350*		MOVE T2,FILBFO(JFN)	;GET POINTER
  3544	003477'02  554 01 0 11 003454*		HLRZ T1,FILBCT(JFN)	;GET COUNT
  3545	003500'02  200 03 0 11 003455*		MOVE T3,FILLLB(JFN)	;GET LL BLOCK
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 80-1
NSPSRV	MAC	 6-Apr-82 10:58		Routines to CLose a Logical Link

  3546	003501'02  200 16 0 03 000010 		TMNN LLFLO,(T3)		;IS OUTPUT FLOW FROM THE F/S?
  3547	003502'02  607 16 0 00 020000 
  3548	003503'02  402 00 0 00 000001 		SETZM T1		;NO.
  3549	003504'02  254 00 0 00 003462'		JRST NETSCM		;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 81
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3550					SUBTTL	Sequential I/O JSYS's
  3551
  3552					;WORKER ROUTINE TO FORCE OUT ALL DATA.
  3553
  3554	003505'02  265 16 0 00 003375*	OUTRR::	STKVAR <MSIZE,MBLOCK,MLODR>
  3555	003506'02  000003  000003
  3556	003507'02  260 17 0 00 000000#		CALL MOVSEG		;PICK UP ACKS,ETC...
  3557	003510'02  254 00 0 00 003546'		 JRST OUTWAT		;ERROR OCCURRED
  3558	003511'02  260 17 0 00 000533'		CALL NETUOU		;UNDO OUTPUT
  3559	003512'02  200 01 0 11 003500*		MOVE T1,FILLLB(JFN)	;GET LL BLOCK
  3560	003513'02  260 17 0 00 001337'		CALL SKPFLO		;IS FLOW FROM THE FILE-SYSTEM
  3561	003514'02  254 00 0 00 003535'		 JRST OUTR0E		;NO. ALL SET TO GO THEN
  3562
  3563					;FLOW IS FROM THE FILE SYSTEM. COMPUTE BYTES NOW IN OUTPUT BUFFER
  3564					;AND SWITCH FLOW TO THE NETWORK
  3565
  3566	003515'02  260 17 0 00 001347'		CALL CLRFLO		;SWITCH FLOW TO THE NETWORK
  3567	003516'02  260 17 0 00 001355'		CALL GETBSZ		;GET BYTE SIZE FOR THIS LINK
  3568	003517'02  554 01 0 11 003345*		HLRZ T1,FILWND(JFN)	;GET WINDOW ADDRESS
  3569	003520'02  260 17 0 00 002437'		CALL MAKPTR		;GET MAX BYTES IN BUFFER
  3570	003521'02  202 01 0 11 003476*		MOVEM T1,FILBFO(JFN)	;PUT IN STARTING BYTE POINTER
  3571	003522'02  554 03 0 11 003477*		HLRZ T3,FILBCT(JFN)	;GET REMAINING COUNT
  3572	003523'02  275 02 0 03 000000 		SUBI T2,0(T3)		;COMPUTE BYTES IN THE BUFFER
  3573	003524'02  200 01 0 11 003512*		MOVE T1,FILLLB(JFN)	;get logical link block address
  3574	003525'02  260 17 0 00 001355'		CALL GETBSZ		;GO GET BYTE SIZE FOR THIS LINK
  3575	003526'02  306 03 0 00 000044 		CAIN T3,44		;WORD MODE?
  3576						JRST [	IMULI T2,44	;YES. COMPUTE TOTAL BITS
  3577							ADDI T2,7	;ROUND UP
  3578							LSH T2,-3	;AND NOW COMPUTE FULL BYTES
  3579	003527'02  254 00 0 00 010012'			JRST .+1]	;AND CONTINUE
  3580	003530'02  200 01 0 11 003524*		MOVE T1,FILLLB(JFN)	;GET LL BLOCK ADDRESS
  3581	003531'02  200 16 0 01 000002 		TMNN LLFEM,(T1)		;EOM?
  3582	003532'02  607 16 0 00 000002 
  3583	003533'02  322 02 0 00 003425*		JUMPE T2,RSKP		;NO, DONE
  3584	003534'02  506 02 0 11 003522*		HRLM T2,FILBCT(JFN)	;STORE COUNT TO SEND
  3585	003535'02  200 01 0 11 003530*	OUTR0E:	MOVE T1,FILLLB(JFN)	;GET LL BLOCK ADDRESS
  3586	003536'02  200 16 0 01 000002 		TMNN LLFEM,(T1)		;EOM?
  3587	003537'02  607 16 0 00 000002 
  3588	003540'02  254 00 0 00 003542'		JRST OUTR00		;NO, GO BACK FOR MORE
  3589	003541'02  254 00 0 00 003545'		JRST OUTRR3		;YES, CONTINUE OUTPUT PROCESSING
  3590						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 82
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3591
  3592					;OUTRR CONTINUED.... TRY TO MAKE A MESSAGE
  3593
  3594	003542'02  200 01 0 11 003535*	OUTR00:	MOVE T1,FILLLB(JFN)	;GET BACK LL BLOCK ADDRESS
  3595	003543'02  554 02 0 11 003534*	OUTRR1:	HLRZ T2,FILBCT(JFN)	;SEE IF ANY MORE BYTES
  3596						JUMPE T2,[CALL SETFLO	;NONE - SWITCH FLOW TO FILE-SYSTEM
  3597							CALL GETBSZ	;GET BYTE SIZE
  3598							HLRZ T1,FILWND(JFN) ;GET BUFFER PAGE
  3599							CALL MAKPTR	;MAKE OUTPUT POINTER
  3600							MOVEM T1,FILBFO(JFN) ;SET UP NEW POINTER
  3601							HRLM T2,FILBCT(JFN) ;AND COUNT
  3602	003544'02  322 02 0 00 010016'			RETSKP]		;AND DONE
  3603	003545'02  260 17 0 00 000000#	OUTRR3:	CALL SNDCHK		;GO SEE IF ANOTHER SEGMENT CAN BE SENT
  3604	003546'02			OUTWAT:	 JRST [	TQNE <ERRF>	;ERROR?
  3605							JRST SQOBAD	;YES. GO AWAY
  3606							CALL MAKTST	;MAKE A STANDARD TEST WORD
  3607							TQO <BLKF>	;REQUEST BLOCK
  3608	003546'02  254 00 0 00 010025'			CALLRET SQOBAD]	;AND FINISH UP
  3609
  3610					;CAN SEND SOME DATA
  3611
  3612	003547'02  554 03 0 11 003543*	OUTRR2:	HLRZ T3,FILBCT(JFN)	;GET # OF BYTES REMAINING
  3613	003550'02  260 17 0 00 001364'		CALL GETMXS		;GO GET MAX SEGMENT SIZE
  3614	003551'02  303 03 0 04 000000 		CAILE T3,0(T4)		;CAN WE SEND IT ALL?
  3615	003552'02  201 03 0 04 000000 		MOVEI T3,0(T4)		;NO. SO SEND MAX AMOUNT
  3616	003553'02  202 03 0 17 777776 		MOVEM T3,MSIZE		;SAVE # OF BYTES TO SEND
  3617	003554'02  201 01 0 03 000067 		MOVEI T1,<<MSHDR+DTMLEN>*4+3>(T3) ;COMPUTE BYTES REQUIRED
  3618	003555'02  242 01 0 00 777776 		LSH T1,-2		;CONVERT TO WORDS
  3619	003556'02  260 17 0 00 000000#		CALL GETRES		;GET ONE
  3620						 JRST [	CALL GENWAT	;GET A WAIT
  3621	003557'02  254 00 0 00 010032'			CALLRET SQOBAD]	;AND DONE
  3622						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 83
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3623
  3624					;OUTRR CONTINUED... ADJUST COUNTS IN JFN BLOCK
  3625
  3626	003560'02  202 01 0 17 777775 		MOVEM T1,MBLOCK		;SAVE BLOCK ADDRESS
  3627	003561'02  201 02 0 01 000007 		MOVEI T2,MSHDR(T1)	;GET BEGINNING OF DATA STORAGE
  3628	003562'02  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)	;FORM BYTE POINTER
  3629	003563'02  200 01 0 11 003542*		MOVE T1,FILLLB(JFN)	;GET BACK LL BLOCK
  3630	003564'02  202 02 0 01 000016 		MOVEM T2,LLBPTR(T1)	;SAVE WORK POINTER
  3631	003565'02  402 00 0 01 000017 		SETZM LLBPCT(T1)	;INIT COUNT
  3632	003566'02  200 03 0 17 777776 		MOVE T3,MSIZE		;GET # OF BYTES TO GO
  3633	003567'02  554 02 0 11 003547*		HLRZ T2,FILBCT(JFN)	;GET # NOW IN BUFFER
  3634	003570'02  275 02 0 03 000000 		SUBI T2,0(T3)		;COMPUTE # LEFT
  3635	003571'02  506 02 0 11 003567*		HRLM T2,FILBCT(JFN)	;SAVE FOR NEXT ROUND
  3636	003572'02  260 17 0 00 000000#		CALL MAKFLG		;GO MAKE FLAGS FOR THIS MESSAGE
  3637	003573'02  200 03 0 17 777775 		MOVE T3,MBLOCK		;GET MESSAGE BLOCK ADDRESS
  3638	003574'02  200 04 0 17 777776 		MOVE T4,MSIZE		;GET MESSAGE COUNT
  3639	003575'02  260 17 0 00 000000#		CALL MAKMSG		;GO ASSEMBLE NON-DATA PARTS OF MESSAGE
  3640	003576'02  135 02 0 00 007414'		LOAD T2,LLBSZ,(T1)	;GET BYTE SIZE
  3641	003577'02  306 02 0 00 000044 		CAIN T2,44		;WORD MODE?
  3642	003600'02  254 00 0 00 003617'		JRST OUTWRD		;YES. GO DO IT
  3643	003601'02  200 02 0 01 000016 	OUTRR5:	MOVE T2,LLBPTR(T1)	;GET DESTINATION
  3644	003602'02  200 01 0 11 003521*		MOVE T1,FILBFO(JFN)	;GET SOURCE
  3645	003603'02  200 03 0 00 000004 		MOVE T3,T4		;COUNT
  3646	003604'02  260 17 0 00 000000*		CALL NETMOV		;MOVE THE BYTES
  3647	003605'02  202 01 0 11 003602*		MOVEM T1,FILBFO(JFN)	;UPDATE SOURCE POINTER
  3648	003606'02  200 01 0 11 003563*		MOVE T1,FILLLB(JFN)	;RESTORE LL BLOCK POINTER
  3649	003607'02  200 02 0 17 777775 	OUTRR7:	MOVE T2,MBLOCK		;GET BACK BLOCK
  3650	003610'02  201 03 0 00 000002 		MOVEI T3,MSDAT		;GET TYPE OF THIS MESSAGE
  3651	003611'02  137 03 0 00 010034'		STOR T3,MSTOM,(T2)	;TO THE MESSAGE
  3652	003612'02  200 04 0 17 777776 		MOVE T4,MSIZE		;GET NO. OF DATA BYTES
  3653	003613'02  271 04 0 00 000002 		ADDI T4,2		;INCLUDE SEGNUM BYTES IN THE COUNT
  3654	003614'02  137 04 0 00 007703'		STOR T4,MSDTC,(T2);	;PUT NO. OF DATA BYTES IN THE MESSAGE
  3655	003615'02  260 17 0 00 000000#		CALL SNDSEG		;GO SEND A SEGMENT. ROUTINE
  3656									;PLUGS IN LL ADDRESS AND MESSAGE SIZE
  3657	003616'02  254 00 0 00 003542'		JRST OUTR00		;AND TRY FOR ANOTHER SEGMENT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 84
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3658
  3659					;CODE TO MOVE 36 BIT BYTES INTO A NETWORK MESSAGE.
  3660
  3661	003617'02  202 12 0 17 777774 	OUTWRD:	MOVEM P3,MLODR		;SAVE A WORK REG
  3662	003620'02  305 04 0 00 000011 	OUTWR0:	CAIGE T4,11		;HAVE AT LEAST 2 MORE WORDS?
  3663						JRST [	MOVE T2,@FILBFO(JFN) ;NO. GET LAST WORD
  3664							AOS FILBFO(JFN)
  3665							SETZ T3,	;TO GEN NULLS
  3666							MOVEI P3,5	;5 MORE BYTES TO MOVE
  3667	003621'02  254 00 0 00 010035'			JRST OUTWR1]	;GO DO IT
  3668	003622'02  120 02 1 11 003605*		DMOVE T2,@FILBFO(JFN)	;GET TWO MORE WORDS
  3669	003623'02  201 12 0 00 000002 		MOVEI P3,2		;THE INCREMENTER
  3670	003624'02  272 12 0 11 003622*		ADDM P3,FILBFO(JFN)
  3671	003625'02  201 12 0 00 000011 		MOVEI P3,11		;MOVE 9 BYTES
  3672	003626'02  275 04 0 00 000011 	OUTWR1:	SUBI T4,11		;TAKE SOME BYTES
  3673	003627'02  245 02 0 00 000010 	OUTWR2:	ROTC T2,10		;GET NEXT BYTE RIGHT JUSTIFIED
  3674	003630'02  136 03 0 01 000016 		IDPB T3,LLBPTR(T1)	;STORE IT
  3675	003631'02  367 12 0 00 003627'		SOJG P3,OUTWR2		;DO ALL BYTES
  3676	003632'02  327 04 0 00 003620'		JUMPG T4,OUTWR0		;GO DO MORE DATA
  3677	003633'02  200 12 0 17 777774 		MOVE P3,MLODR		;RESTORE REG
  3678	003634'02  254 00 0 00 003607'		JRST OUTRR7		;AND CONTINUE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 85
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3679
  3680					;MAKMSG - ROUTINE TO ASSEMBLE THE NON-DATA PORTIONS OF A MESSAGE
  3681					;
  3682					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  3683					;	    T2/	MESSAGE FLAGS BYTE
  3684					;	    T3/	MESSAGE BLOCK ADDRESS
  3685					;	    T4/	MESSAGE SIZE
  3686					;		CALL MAKMSG
  3687					;RETURNS: +1 ALWAYS, WITH NON-DATA PORTIONS OF MESSAGE ASSEMBLED
  3688					;
  3689					; PRESERVES LOGICAL LINK BLOCK ADDRESS IN T1
  3690
  3691						RESCD
  3692
  3693	000215'01  265 16 0 00 000171*	MAKMSG::STKVAR <MBLOCK>
  3694	000216'01  000001  000001
  3695	000217'01  202 03 0 17 777776 		MOVEM T3,MBLOCK		;LOCAL STORAGE FOR LL BLOCK ADDRESS
  3696	000220'01  137 02 0 00 002202'		STOR T2,MSMFL,(T3)	;SAVE MESSAGE FLAGS
  3697	000221'01  260 17 0 00 000147'		CALL RTHDCI		;PUT ON ROUTE HEADER AND FLAGS
  3698	000222'01  260 17 0 00 000134'		CALL PUTLLA		;PUT IN LL ADDRESSES
  3699	000223'01  200 03 0 17 777776 		MOVE T3,MBLOCK		;GET ADDRESS OF MESSAGE BLOCK
  3700	000224'01  200 02 0 01 000016 		MOVE T2,LLBPTR(T1)	;GET CURRENT BYTE POINTER
  3701	000225'01  202 02 0 03 000003 		MOVEM T2,MSBPTR(T3)	;SAVE IN MESSAGE BLOCK
  3702	000226'01  135 02 0 00 002203'		LOAD T2,LLDSN,(T1)	;GET SEG NUMBER
  3703	000227'01  350 00 0 00 000002 		AOS T2			;NEXT ONE
  3704	000230'01  137 02 0 00 002203'		STOR T2,LLDSN,(T1)	;PUT IT BACK
  3705	000231'01  405 02 0 00 007777 		ANDI T2,7777		;ONLY 12 BITS
  3706	000232'01  137 02 0 00 002204'		STOR T2,MSSEG,(T3)	;SAVE SEG # IN DATA BLOCK
  3707	000233'01  260 17 0 00 000212'		CALL TWOBYT		;PUT IN SEGNUM
  3708	000234'01  272 04 0 01 000017 		ADDM T4,LLBPCT(T1)	;AND COUNT UP MESSAGE SIZE
  3709	000235'01  263 17 0 00 000000 		RET			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 86
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3710					;MAKFLG - ROUTINE TO MAKE THE FLAGS BYTE FOR A MESSAGE
  3711					;
  3712					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  3713					;	    T2/	NUMBER OF BYTES LEFT TO SEND IN SUBSEQUENT MESSAGES
  3714					;		CALL MAKFLG
  3715					;RETURNS: +1 ALWAYS, WITH T2/ MESSAGE FLAGS BYTE
  3716					;
  3717					; PRESERVES LOGICAL LINK BLOCK ADDRESS IN T1
  3718
  3719	000236'01  201 04 0 00 000000 	MAKFLG::MOVEI T4,DATMFL		;GET BASIC MESSAGE FLAGS
  3720	000237'01  135 03 0 00 002205'		LOAD T3,LLMFC,(T1)	;GET TYPE OF FLOW CONTROL ON THIS LINK
  3721						JN LLBOM,(T1),[
  3722							SETZRO LLBOM,(T1) ;IS THIS START OF MESSAGE?
  3723							TXO T4,DATBOM     ;YES. SET BOM THEN
  3724	000240'01  200 16 0 01 000010 			JRST MKFL10]      ;KEEP BOM
  3725	000241'01  321 16 0 00 002206'
  3726	000242'01  200 16 0 01 000002 	MKFL10:	TMNE LLFEM,(T1)		;WANT EOM?
  3727	000243'01  603 16 0 00 000002 
  3728	000244'01  332 00 0 00 000002 		SKIPE T2		;IS THIS LAST SEGMENT OF MESSAGE?
  3729						JRST [	CAIN T3,2	;MESSAGE FLOW CONTROL?
  3730							JRST MKFL30	;YES. SKIP FLOW ADJUSTMENT
  3731	000245'01  254 00 0 00 002212'			JRST MKFL20]	;NO. ADJUST FLOW COUNTER
  3732	000246'01  205 16 0 00 000002 		SETZRO LLFEM,(T1)	;YES. TURN OFF EOM
  3733	000247'01  412 16 0 01 000002 
  3734	000250'01  205 16 0 00 400000 		SETONE LLBOM,(T1)	;AND NEXT ONE IS BOM
  3735	000251'01  436 16 0 01 000010 
  3736	000252'01  660 04 0 00 000100 		TXO T4,DATEOM		;AND SET EOM
  3737
  3738	000253'01  322 03 0 00 000256'	MKFL20:	JUMPE T3,MKFL30		;IF NO FLOW CONTROL, SKIP ADJUSTMENT
  3739	000254'01  561 16 0 00 777400 		DECR LLMSM,(T1)		;ADJUST FLOW CONTROL
  3740	000255'01  272 16 0 01 000007 
  3741	000256'01  200 02 0 00 000004 	MKFL30:	MOVE T2,T4		;COPY MESSAGE FLAGS
  3742	000257'01  263 17 0 00 000000 		RET
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 87
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3743					;SNDCHK - ROUTINE TO SEE IF ANOTHER SEGMENT CAN BE SENT ON A LOGICAL LINK
  3744					;
  3745					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS
  3746					;		CALL SNDCHK
  3747					;RETURNS: +1	 FAILED, WITH T2/ ADDRESS OF SCHEDULER TEST ROUTINE
  3748					;	  +2	SUCCESS, ANOTHER SEGMENT CAN BE SENT
  3749					;
  3750
  3751					SNDCHK::JN LLBRP,(T1),[MOVEI T2,CHKBRP ;IF FLOW CONTROL OFF, WAIT
  3752	000260'01  200 16 0 01 000007 	 NSBP01:	RET]		;FAIL
  3753	000261'01  321 16 0 00 002215'
  3754
  3755						JN LLQUN,(T1),[
  3756					 NSBP02:	MOVEI T2,CHKSWD ;IF ANY NAK'ED SEGS
  3757	000262'01  200 16 0 01 000023 			RET ]		;FAIL
  3758	000263'01  602 16 0 00 377000 
  3759	000264'01  254 00 0 00 002217'
  3760	000265'01  135 02 0 00 002221'		LOAD T2,LLQOU,(T1)	;GET SEGS NOW IN THE QUEUER
  3761	000266'01  135 03 0 00 002222'		LOAD T3,LLMQO,(T1)	;GET MAX OUTPUT QUEUE LENGTH
  3762	000267'01  313 02 0 00 000003 	NSBP10:	CAMLE T2,T3		;CAN WE PUT ANOTHER ONE IN?
  3763						JRST [	MOVEI T2,CHKQTA ;WAIT FOR QUEUER COUNT TO COME DOWN
  3764	000270'01  254 00 0 00 002223'	 NSBP03:	RET ]		;FAIL
  3765	000271'01  135 03 0 00 002205'		LOAD T3,LLMFC,(T1)	;GET TYPE OF FLOW CONTROL
  3766	000272'01  336 00 0 00 000003 		SKIPN T3		;IF NO FLOW CONTROL, ALL SET
  3767	000273'01  254 00 0 00 000132*	NSBP04:	RETSKP			;NO FLOW CONTROL
  3768	000274'01  135 04 0 00 002225'		LOAD T4,LLMSM,(T1)	;GET CURRENT FLOW COUNT
  3769						JUMPE T4,[
  3770					 NSBP05:	MOVEI T2,CHKSCT ;WAIT FOR SOME COUNT TO APPEAR
  3771	000275'01  322 04 0 00 002226'			RET ]		;FAIL
  3772	000276'01  302 03 0 00 000002 		CAIE T3,2		;MESSAGE FLOW CONTROL?
  3773	000277'01  606 04 0 00 000200 		TRNN T4,200		;NO. SEGMENT. IS COUNT POSITIVE?
  3774	000300'01  254 00 0 00 000273*	NSBP06:	RETSKP			;YES, CAN SEND A SEGMENT NOW.
  3775	000301'01  201 02 0 00 000352'	NSBP07:	MOVEI T2,CHKSCP		;WAIT FOR COUNT TO GO POSITIVE
  3776	000302'01  263 17 0 00 000000 		RET			;RETURN SCHED TEST
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 88
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3777
  3778					;ROUTINE TO MAKE A STANDARD TEST WORD
  3779
  3780	000303'01  550 01 0 01 000002 	MAKTST::LOAD T1,LLLNK,(T1)	;GET LL BLOCK ADDRESS
  3781	000304'01  507 00 0 00 000001 		HRLS T1			;TO THE LH
  3782	000305'01  541 01 0 02 000000 		HRRI T1,0(T2)		;TEST ROUTINE
  3783	000306'01  263 17 0 00 000000 		RET			;DONE
  3784
  3785					;ROUTINE TO ARRANGE FOR A TIMED WAIT OF 1/2 SEC. THIS IS USED
  3786					;WHEN FREE SPACE IS EXHAUSTED.
  3787
  3788	000307'01  661 10 0 00 000040 	GENWAT:	TQO <BLKF>		;NEED TO BLOCK
  3789	000310'01  200 02 0 00 000000*	TIMWAT::MOVE T2,TODCLK		;GET NOW
  3790	000311'01  405 02 0 00 377777 		ANDI T2,377777
  3791	000312'01  271 02 0 00 000764 		ADDI T2,^D500		;WAIT 1/2 SEC FOR FREE SPACE
  3792	000313'01  205 01 0 02 000000 		MOVSI T1,0(T2)		;TIME TO THE LH
  3793	000314'01  541 01 0 00 000000*		HRRI T1,BLOCKM		;WAIT THIS LONG
  3794	000315'01  263 17 0 00 000000 		RET			;AND GO BLOCK
  3795
  3796						SWAPCD
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 89
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3797
  3798					;ROUTINES OF NETSQO GOTTEN TO BY STATE TRANSITION TABLE
  3799
  3800					;SET UP BLOCK UNTIL LINK IS CONNECTED
  3801
  3802	003635'02  201 02 0 00 000000#	SQOLIS:	MOVEI T2,CHKCON		;WAIT UNTIL CONNECTED
  3803	003636'02  254 00 0 00 003546'		JRST OUTWAT		;AND GO ARRANGE FOR THE BLOCK
  3804
  3805					;IMPLICIT CONFIRM
  3806
  3807	003637'02  402 00 0 00 000003 	SQOCNF:	SETZM T3		;NO OPTDATA
  3808	003640'02  260 17 0 00 003707'		CALL CNFCOM		;GO CONFORM CONNECTION
  3809	003641'02  254 00 0 00 003677'		 JRST SQOBAD		;FAILED
  3810	003642'02  254 00 0 00 000571'		JRST NETSQ1		;AND COMPLETE OUTPUT REQUEST
  3811
  3812					;LINK HAS BEEN CLOSED BY PROCESS OR NSP. GIVE ERROR
  3813
  3814	003643'02  334 01 0 00 010042'	SQOABT:	SKIPA T1,[DCNX11]	;NSP ABORT
  3815	003644'02  201 01 0 00 602025 	SQODIS:	MOVEI T1,DCNX8		;ILLEGAL USER OPERATION
  3816	003645'02  661 10 0 00 000400 		TQO <ERRF>		;SAY HAVE AN ERROR
  3817	003646'02  254 00 0 00 003677'		JRST SQOBAD		;DONE
  3818
  3819					;FOREIGN HOST HAS DISCONNECTED
  3820
  3821	003647'02  661 10 0 00 000400 	SQODIR:	TQO <ERRF>		;USER ERROR
  3822	003650'02  201 01 0 00 602026 		MOVEI T1,DCNX11		;GIVE ERROR
  3823	003651'02  254 00 0 00 003677'		JRST SQOBAD		;AND DONE
  3824	003652'02  661 10 0 00 001000 	SQOEOF:	TQO <EOFF>		;NO. SAY EOF
  3825	003653'02  254 00 0 00 003677'		JRST SQOBAD		;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 90
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3826
  3827					;ROUTINE TO BUILD BASIC CC MESSAGE
  3828					;	T1/ LL BLOCK ADDRESS
  3829					;	T3/ <COUNT>B5+OPTDATA STRING
  3830					;RETURNS	+1 NO FREE SPACE. NEED TO BLOCK
  3831					;		+2 READY. T2/ BLOCK ADDRESS
  3832
  3833	003654'02  265 16 0 00 003374*	SNDCC:	ASUBR <SAVLL,SAVBLK,SAVOPT>
  3834	003655'02  201 01 0 00 000022 		MOVEI T1,MSHDR+CCLEN	;GET ENOUGH SPACE
  3835	003656'02  260 17 0 00 000000#		CALL GETRES		;GET IT
  3836	003657'02  263 17 0 00 000000 		 RET			;FAILED. WAIT FOR A WHILE
  3837	003660'02  202 01 0 15 000002 		MOVEM T1,SAVBLK
  3838	003661'02  201 02 0 01 000007 		MOVEI T2,MSHDR(T1)	;GET START OF DATA
  3839	003662'02  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)
  3840	003663'02  200 01 0 15 000001 		MOVE T1,SAVLL		;GET BACK LL BLOCK
  3841	003664'02  202 02 0 01 000016 		MOVEM T2,LLBPTR(T1)
  3842	003665'02  402 00 0 01 000017 		SETZM LLBPCT(T1)
  3843	003666'02  201 02 0 00 000050 		MOVEI T2,CNMRFL+CNMCF	;GET CC FLAGS
  3844	003667'02  260 17 0 00 000000#		CALL RTHDCI		;PUT IN ROUTE HEADER AND FLAGS
  3845	003670'02  260 17 0 00 002335'		CALL DOSRVS		;PUT IN LL ADDRESSES AND STANDARD SERVICES
  3846	003671'02  200 03 0 15 000003 		MOVE T3,SAVOPT		;GET OPTDATA ARG
  3847	003672'02  135 02 0 00 010001'		LOAD T2,CNTFLD,T3	;GET COUNT
  3848	003673'02  621 03 0 00 770000 		SETZRO CNTFLD,T3	;CLEAR OUT COUNT BITS
  3849	003674'02  260 17 0 00 002372'		CALL MVBNRY		;PUT IN THE DATA
  3850	003675'02  200 02 0 15 000002 		MOVE T2,SAVBLK		;GET BLOCK
  3851	003676'02  254 00 0 00 003533*		RETSKP			;AND DONE
  3852
  3853					;COMMON ERROR RETURN
  3854
  3855	003677'02  250 01 0 11 003606*	SQOBAD:	EXCH T1,FILLLB(JFN)	;SAVE ERROR. GET BLOCK ADDRESS
  3856	003700'02  260 17 0 00 000000#		CALL BLKULK		;FREE BLOCK
  3857	003701'02  250 01 0 11 003677*		EXCH T1,FILLLB(JFN)	;GET BACK ERROR
  3858	003702'02  263 17 0 00 000000 		RETBAD			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 91
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3859
  3860
  3861					;IMPLICIT CONFIRM FROM SOUTR
  3862
  3863	003703'02  402 00 0 00 000003 	SQOCN2:	SETZM T3		;NO OPTDATA
  3864	003704'02  260 17 0 00 003707'		CALL CNFCOM		;GO CONFIRM IT
  3865	003705'02  254 00 0 00 003677'		 JRST SQOBAD		;FAILED
  3866	003706'02  254 00 0 00 000603'		JRST NETSR1		;AND GO ON
  3867
  3868					;ROUTINE TO DO IMPLICIT CONFIRM
  3869
  3870	003707'02  265 16 0 00 003505*	CNFCOM:	STKVAR <CNFLNK>
  3871	003710'02  000001  000001
  3872	003711'02  202 01 0 17 777776 		MOVEM T1,CNFLNK		;SAVE LINK BLOCK ADDRESS
  3873	003712'02  200 16 0 01 000002 		JN LLTRN,(T1),SQOCN1	;IF ONLY NEED LS, GO DO IT
  3874	003713'02  603 16 0 00 000020 
  3875	003714'02  254 00 0 00 003720'
  3876	003715'02  260 17 0 00 003654'		CALL SNDCC		;GO BUILD CONNECT CONFIRM
  3877	003716'02  254 00 0 00 000000#		 JRST GENWAT		;BLOCK UNTIL FREE SPACE
  3878	003717'02  260 17 0 00 000000#		CALL SNDCTL		;SEND CONTROL MESSAGE
  3879	003720'02  260 17 0 00 006306'	SQOCN1:	CALL TURNON		;TRY TO SEND IT
  3880						 JRST [	EXCH T1,CNFLNK		;SAVE SCHED TEST, GET LINK BLOCK ADR
  3881							SETONE LLTRN,(T1) ;SAY STILL NEED LS
  3882							MOVE T1,CNFLNK	;RESTORE SCHED TEST
  3883	003721'02  254 00 0 00 010043'			JRST GENWAT]	;AND GO WAIT AWHILE
  3884	003722'02  205 16 0 00 000020 		SETZRO LLTRN,(T1)	;DON'T NEED LS ANYMORE
  3885	003723'02  412 16 0 01 000002 
  3886	003724'02  201 02 0 00 000004 		MOVEI T2,LLSRUN		;NOW IN RUN STATE
  3887	003725'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;SAY SO
  3888	003726'02  201 02 0 00 000001 		MOVEI T2,1		;INITIAL LS/INT REQ COUNT
  3889	003727'02  137 02 0 00 010050'		STOR T2,LLMIC,(T1)	;STORE IT
  3890	003730'02  254 00 0 00 003676*		RETSKP			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 92
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3891
  3892					;COLLECTION OF SCHEDULER TEST ROUTINES USED BY NETSQO AND OTHERS
  3893
  3894						RESCD			;MUST ALL BE RESIDENT
  3895					;BLOCK UNTIL CONNECTED
  3896
  3897	000316'01  476 00 0 00 000002 	CHKCON:	SETOM T2		;ANY MATCH
  3898	000317'01  260 17 0 00 000070'		CALL LLLKUP		;GO FIND LL BLOCK
  3899	000320'01  254 00 0 04 000001 		 JRST 1(4)		;THIS SHOULDN'T HAPPEN
  3900	000321'01  135 02 0 00 002200'		LOAD T2,LLSTA,(T1)	;GET CURRENT STATE
  3901	000322'01  302 02 0 00 000001 		CAIE T2,LLSLIS		;LISTENING?
  3902	000323'01  306 02 0 00 000002 		CAIN T2,LLSCIS		;OR CI SENT?
  3903	000324'01  254 00 0 04 000000 		JRST 0(4)		;YES. NOT CONNECTED THEN
  3904	000325'01  254 00 0 04 000001 		JRST 1(4)		;NO. CONNECTED
  3905
  3906					;WAIT UNTIL BLOCK LOCK IS FREE
  3907
  3908	000326'01  476 00 0 00 000002 	CHKLOK:	SETOM T2		;ANY MATCH
  3909	000327'01  260 17 0 00 000070'		CALL LLLKUP		;FIND LL BLOCK
  3910	000330'01  254 00 0 04 000001 		 JRST 1(4)		;CAN'T HAPPEN
  3911	000331'01  200 16 0 01 000001 		JN LLRCT,(T1),0(4)	;IF STILL NON-ZERO, MUST WAIT
  3912	000332'01  603 16 0 00 070000 
  3913	000333'01  254 00 0 04 000000 
  3914	000334'01  254 00 0 04 000001 		JRST 1(4)		;IS FREE
  3915
  3916					;WAIT UNITL QUEUER WILL TAKE SOME MORE MESSAGES
  3917
  3918	000335'01  260 17 0 00 000370'	CHKQTA:	CALL CHKSET		;GET LL BLOCK, MAKE SURE STILL RUNNING
  3919	000336'01  254 00 0 04 000001 		 JRST 1(4)		;SOMETHING WRONG WITH LINK
  3920	000337'01  135 02 0 00 002221'		LOAD T2,LLQOU,(T1)	;GET QUEUER COUNT
  3921	000340'01  135 03 0 00 002222'		LOAD T3,LLMQO,(T1)	;GET MAX QUEUE LENGTH
  3922	000341'01  313 02 0 00 000003 		CAMLE T2,T3		;CAN TAKE SOME MORE?
  3923	000342'01  254 00 0 04 000000 		JRST 0(4)		;NO. WAIT SOME MORE
  3924	000343'01  254 00 0 04 000001 		JRST 1(4)		;YES.
  3925
  3926					;WAIT UNTIL SOME ACKS COME IN
  3927
  3928	000344'01  260 17 0 00 000370'	CHKSCT:	CALL CHKSET		;VERIFY LINK STATE
  3929	000345'01  254 00 0 04 000001 		 JRST 1(4)		;LINK CHANGED STATED
  3930	000346'01  200 16 0 01 000007 		JN LLMSM,(T1),1(4)	;IF SOME ACKS, WAKE UP
  3931	000347'01  602 16 0 00 177400 
  3932	000350'01  254 00 0 04 000001 
  3933	000351'01  254 00 0 04 000000 		JRST 0(4)		;STILL NO ACKS. WAIT SOME MORE
  3934
  3935					;WAIT UNTIL SEG ACK COUNT IS POSITIVE
  3936
  3937	000352'01  260 17 0 00 000370'	CHKSCP:	CALL CHKSET		;VERIFY LINK STATE
  3938	000353'01  254 00 0 04 000001 		 JRST 1(4)		;LINK CHANGED STATE
  3939	000354'01  135 02 0 00 002225'		LOAD T2,LLMSM,(T1)	;GET SEG COUNT
  3940	000355'01  602 02 0 00 000177 		TRNE T2,177		;IS IT ZERO?
  3941	000356'01  602 02 0 00 000200 		TRNE T2,200		;NO. IS IT NEGATIVE?
  3942	000357'01  254 00 0 04 000000 		JRST 0(4)		;YES. MUST WAIT SOME MORE
  3943	000360'01  254 00 0 04 000001 		JRST 1(4)		;NO. CAN SEND SOME MORE DATA
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 93
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3944
  3945					;ROUTINE TO WAIT FOR MESSAGES TO ARRIVE
  3946
  3947	000361'01  260 17 0 00 000370'	CHKRAW:	CALL CHKSET		;FORCE WAKE?
  3948	000362'01  254 00 0 04 000001 		 JRST 1(4)		;YES.
  3949	000363'01  200 16 0 01 000010 		TMNN LLFLI,(T1)		;ANYTHING IN FILE SYSTEM BUFFER?
  3950	000364'01  607 16 0 00 040000 
  3951	000365'01  332 00 0 01 000012 		SKIPE LLOMSG(T1)	;ANYTHING ON ORDERED Q?
  3952	000366'01  254 00 0 04 000001 		JRST 1(4)		;YES. WAKE UP THEN
  3953	000367'01  254 00 0 04 000000 		JRST 0(4)		;NOTHING TO DO YET
  3954
  3955					;COMMON ROUTINE TO FIND LL BLOCK AND VERIFY THAT LL IS RUNNING
  3956
  3957	000370'01  476 00 0 00 000002 	CHKSET:	SETOM T2		;ANY LINK
  3958	000371'01  260 17 0 00 000070'		CALL LLLKUP		;GO FIND BLOCK
  3959	000372'01  263 17 0 00 000000 		 RET			;NOT THERE. SOMETHING TERRIBLE HAPPENED
  3960	000373'01  135 02 0 00 002200'		LOAD T2,LLSTA,(T1)	;GET STATE
  3961	000374'01  336 00 0 01 000005 		SKIPN LLMSG(T1)		;MESSAGES ON QUEUE?
  3962	000375'01  302 02 0 00 000004 		CAIE T2,LLSRUN		;IS IT RUNNING?
  3963	000376'01  263 17 0 00 000000 		RET			;WAKE UP
  3964	000377'01  254 00 0 00 000300*		RETSKP			;YES. ALL FINE
  3965
  3966					;CHECK IF RESENDS ARE ALL DONE
  3967
  3968	000400'01  260 17 0 00 000370'	CHKSWD:	CALL CHKSET		;GO VERIFY LINK STATE
  3969	000401'01  254 00 0 04 000001 		 JRST 1(4)		;CHANGED. WAKE UP
  3970	000402'01  200 16 0 01 000023 		JE LLQUN,(T1),1(4)	;ALL NAK'ED SEGS NOW SENT?
  3971	000403'01  606 16 0 00 377000 
  3972	000404'01  254 00 0 04 000001 
  3973	000405'01  254 00 0 04 000000 		JRST 0(4)		;STILL RESENDS. WAIT
  3974
  3975					;TESTS FOR CLOSF
  3976
  3977	000406'01  476 00 0 00 000002 	CHKDCR::SETOM T2		;ANY MATCH
  3978	000407'01  260 17 0 00 000070'		CALL LLLKUP		;FIND LL BLOCK
  3979	000410'01  254 00 0 04 000001 		 JRST 1(4)
  3980	000411'01  135 02 0 00 002200'		LOAD T2,LLSTA,(T1)	;GET STATE
  3981	000412'01  302 02 0 00 000011 		CAIE T2,LLSABT		;DC RECEIVED?
  3982	000413'01  254 00 0 04 000000 		JRST 0(4)		;NO. KEEP WAITING
  3983	000414'01  254 00 0 04 000001 		JRST 1(4)		;YES. AWAKE
  3984
  3985	000415'01  260 17 0 00 000370'	CHKEMP::CALL CHKSET		;MAKE SURE ALL IS SET
  3986	000416'01  254 00 0 04 000001 		 JRST 1(4)		;NOT. A STATE CHANGE OCCURRED
  3987	000417'01  200 16 0 01 000023 		JE LLQOU,(T1),1(4)	;HAVE ALL ACKS ARRIVED?
  3988	000420'01  606 16 0 00 000377 
  3989	000421'01  254 00 0 04 000001 
  3990	000422'01  254 00 0 04 000000 		JRST 0(4)		;NO
  3991
  3992					;WAIT FOR BACK-PRESSURE
  3993
  3994	000423'01  260 17 0 00 000370'	CHKBRP:	CALL CHKSET		;MAKE SURE ALL IS SET
  3995	000424'01  254 00 0 04 000001 		 JRST 1(4)		;NO. AWAKE
  3996	000425'01  200 16 0 01 000007 		JE LLBRP,(T1),1(4)	;IF NOW ON, AWAKE
  3997	000426'01  325 16 0 04 000001 
  3998	000427'01  254 00 0 04 000000 		JRST 0(4)		;NO YET ON
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 94
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  3999
  4000					;ROUTINES FOR SEQUENTIAL INPUT
  4001
  4002					;ROUTINE TO TAKE SEGMENTS OFF OF THE RAW DATA QUEUE AND
  4003					;PUT THEM ON THE ORDERED DATA QUEUE
  4004
  4005	000430'01  265 16 0 00 000167*	MOVSEG::ACVAR <W1,W2,W3>
  4006	000431'01  265 16 0 00 000215*		STKVAR <MSGLLB>
  4007	000432'01  000001  000001
  4008	000433'01  202 01 0 17 777776 		MOVEM T1,MSGLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  4009	000434'01  200 16 0 01 000002 		TMNE LLFNN,(T1)		;NEED A NACK?
  4010	000435'01  603 16 0 00 001000 
  4011	000436'01  260 17 0 00 000502'		CALL MOVNAK		;YES. SEND NACK
  4012	000437'01  336 02 0 01 000005 	MOVSE1:	SKIPN T2,LLMSG(T1)	;HAVE ANY?
  4013	000440'01  254 00 0 00 000377*		RETSKP			;NO. MUST BE DONE THEN
  4014	000441'01  265 16 0 00 000000*		NOSKD1			;PREVENT SCHEDULING
  4015	000442'01  200 02 0 01 000005 		MOVE T2,LLMSG(T1)	;GET HEADER AGAIN IN CASE IT CHANGED
  4016	000443'01  550 03 0 02 000000 		LOAD T3,MSLNK,(T2)	;GET LINK
  4017	000444'01  202 03 0 01 000005 		MOVEM T3,LLMSG(T1)	;NEW LINK
  4018	000445'01  265 16 0 00 000000*		OKSKD1			;AND ALLOW SCHEDULING
  4019	000446'01  135 03 0 00 002230'		LOAD T3,MSMFL,(T2)	;GET FLAGS
  4020	000447'01  602 03 0 00 000004 		TXNE T3,ACKFLM		;IS IT AN ACK?
  4021						JRST [	CALL MOVACK	;YES. GO DO THE ACK THEN
  4022							 RETBAD()	;ERROR OCCURRED
  4023	000450'01  254 00 0 00 002231'			JRST MOVSE1]	;AND DONE
  4024	000451'01  205 16 0 00 777400 		DECR LLDRW,(T1)		;ONE LESS DATA SEG ON Q
  4025	000452'01  272 16 0 01 000020 
  4026	000453'01  201 03 0 00 000002 		MOVEI T3,MSDAT		;IS A DATA SEGMENT
  4027	000454'01  260 17 0 00 000562'		CALL VERSEG		;GO VERIFY CORRECTNESS OF MESSAGE
  4028						 JRST [	MOVE W1,T3	;SAVE FLAG FROM VERSEG
  4029							DECR LLDMT,(T1)	;ONE LESS DATA SEGMENT
  4030							MOVE T1,T2	;GET SEGMENT ADDRESS
  4031							CALL RELRES	;FREE IT UP
  4032							MOVE T1,MSGLLB	;GET BACK LL BLOCK
  4033							JUMPE W1,BADSEG	;IF PROTOCOL ERROR, GO SHUT LINK
  4034							LOAD T2,LLIDN,(T1) ;GET LAST ACKED SEG
  4035							MOVEI T3,MSDAT	;ON THE DATA CHANNEL
  4036							CALL SNDACK	;ACK IT AGAIN
  4037							 NOP		; IGNORE ERROR
  4038							MOVE T1,MSGLLB	;RESTORE ADDRESS
  4039	000455'01  254 00 0 00 002235'			JRST MOVSE1]	;AND PROCEED
  4040						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 95
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4041
  4042						; ..
  4043
  4044					;MESSAGE IS GOOD. PUT IT ON THE ORDERED QUEUE
  4045
  4046	000456'01  135 04 0 00 002252'		LOAD T4,LLMQI,(T1)	;GET MAXIMUM INPUT QUEUE LENGTH
  4047	000457'01  313 03 0 00 000004 		CAMLE T3,T4		;SEE IF REASONABLE TO KEEP IT?
  4048						JRST [	DECR LLDMT,(T1)	;NO. REMOVE SEG
  4049							JE LLIMS,(T1),BADSEG ;IF NOT MESSAGE CONTROL, ERROR
  4050							MOVE T1,T2	;NO. IS BEYOND QUOTA
  4051							CALL RELRES	;FREE THE BLOCK
  4052							MOVE T1,MSGLLB	;GET BACK LL BLOCK
  4053							CALL MOVNAK	;AND SEND THE NACK
  4054	000460'01  254 00 0 00 002253'			JRST MOVSE1]	;DONE
  4055	000461'01  336 03 0 01 000012 		SKIPN T3,LLOMSG(T1)	;ANYTHING ON THE QUEUE?
  4056						JRST [	MOVEM T2,LLOMSG(T1) ;NO. MAKE THIS THE QUEUE
  4057							SETZRO MSLNK,(T2) ;TIE IT OFF
  4058	000462'01  254 00 0 00 002265'			JRST MOVSE1]	;AND DONE
  4059	000463'01  400 05 0 00 000000 		SETZ W1,		;AT THE TOP
  4060	000464'01  135 06 0 00 002270'		LOAD W2,MSSEG,(T2)	;GET SEG NUMBER
  4061						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 96
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4062
  4063					;MOVSEG CONTINUED...
  4064
  4065	000465'01  135 04 0 00 002204'	MOVSEL:	LOAD T4,MSSEG,(T3)	;GET THIS ONE'S NUMBER
  4066	000466'01  306 06 0 04 000000 		CAIN W2,0(T4)		;SAME?
  4067						JRST [	MOVE T1,T2	;YES
  4068							CALL RELRES	;THROW IT AWAY
  4069							MOVE T1,MSGLLB	;GET LL BLOCK ADDRESS
  4070	000467'01  254 00 0 00 002271'			JRST MOVSE1]	;AND GO AGAIN
  4071	000470'01  275 04 0 06 000000 		SUBI T4,0(W2)		;COMPUTE THE DIFFERENCE
  4072	000471'01  214 07 0 00 000004 		MOVM W3,T4		;GET MAGNITUDE OF DIFFERENCE
  4073	000472'01  303 07 0 00 000036 		CAILE W3,MAXDIF		;IS GREATER THAN MAX DIFFERENCE?
  4074	000473'01  641 04 0 00 400000 		TLC T4,(1B0)		;YES. FLIP SIGN THEN
  4075						JUMPL T4,[MOVE W1,T3	;IF LESS, INSERT AFTER
  4076							LOAD T3,MSLNK,(T3) ;GET LINK
  4077							JUMPN T3,MOVSEL	;AND GO LOOK SOME MORE
  4078	000474'01  321 04 0 00 002275'			JRST MOVSE2]	;AND GO INSERT IT
  4079						JUMPE W1,[MOVE T4,LLOMSG(T1) ;GET OLD HEAD
  4080							MOVEM T2,LLOMSG(T1) ;NEW HEAD
  4081							STOR T4,MSLNK,(T2) ;AND FINISH LINK
  4082	000475'01  322 05 0 00 002301'			JRST MOVSE1]	;DONE
  4083	000476'01  550 04 0 05 000000 	MOVSE2:	LOAD T4,MSLNK,(W1)	;GET OLD LINK
  4084	000477'01  542 02 0 05 000000 		STOR T2,MSLNK,(W1)	;INSERT IT
  4085	000500'01  542 04 0 02 000000 		STOR T4,MSLNK,(T2)	;FINISH UP
  4086	000501'01  254 00 0 00 000437'		JRST MOVSE1		;AND DONE
  4087
  4088					;ROUTINE TO SEND A NACK FOR THE LINK
  4089
  4090	000502'01  265 16 0 00 000431*	MOVNAK:	STKVAR <MVNLLB>
  4091	000503'01  000001  000001
  4092	000504'01  202 01 0 17 777776 		MOVEM T1,MVNLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  4093	000505'01  135 02 0 00 002234'		LOAD T2,LLIDN,(T1)	;GET SEG NUMBER
  4094	000506'01  660 02 0 00 010000 		TXO T2,ACKBIT		;MAKE IT A NACK
  4095	000507'01  201 03 0 00 000002 		MOVEI T3,MSDAT		;ON THE DATA CHANNEL
  4096	000510'01  260 17 0 00 001444'		CALL SNDACK		;SEND THE NACK
  4097						 JRST [	MOVE T1,MVNLLB	;GET BACK LL BLOCK ADDRESS
  4098	000511'01  254 00 0 00 002305'			CALLRET DATINR]	;BUT MAKE IT RETRY SOON
  4099	000512'01  205 16 0 00 001100 		SETZRO <LLFNN,LLFNA>,(T1) ;CLEAR FLAGS
  4100	000513'01  412 16 0 01 000002 
  4101	000514'01  263 17 0 00 000000 		RET			;AND DONE
  4102
  4103						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 97
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4104
  4105					;LOCAL ROUTINE TO HANDLE AN ACK FOUND ON LLMSG QUEUE
  4106					;	T1/ LL BLOCK ADDRESS
  4107					;	T2/ MESSAGE BLOCK ADDRESS
  4108
  4109	000515'01  265 16 0 00 000000*	MOVACK:	TRVAR <MSGCNT,MSGBYP,MSGBLK,MSGLL>
  4110	000516'01  000004  000004
  4111	000517'01  202 01 0 15 000004 		MOVEM T1,MSGLL		;SAVE LL BLOCK
  4112	000520'01  202 02 0 15 000003 		MOVEM T2,MSGBLK		;SAVE DATA BLOCK
  4113	000521'01  135 03 0 00 002307'		LOAD T3,MSDTC,(T2)	;GET DATA COUNT
  4114	000522'01  202 03 0 15 000001 		MOVEM T3,MSGCNT
  4115	000523'01  200 03 0 02 000003 		MOVE T3,MSBPTR(T2)	;GET POINTER TO DATA
  4116	000524'01  202 03 0 15 000002 		MOVEM T3,MSGBYP		;SET UP POINTER
  4117	000525'01  135 02 0 00 002230'		LOAD T2,MSMFL,(T2)	;GET FLAGS
  4118	000526'01  260 17 0 00 000534'		CALL ACKDO		;GO DO THA ACTUAL ACK
  4119	000527'01  254 00 0 00 000544'		 JRST BADSEG		;BADLY FORMED SEGMENT ENCOUNTERED
  4120	000530'01  200 01 0 15 000003 		MOVE T1,MSGBLK		;GET BLOCK ADDRESS
  4121	000531'01  260 17 0 00 000000*		CALL RELRES		;FREE IT UP
  4122	000532'01  200 01 0 15 000004 		MOVE T1,MSGLL		;GET LL ADDRESS
  4123	000533'01  254 00 0 00 000440*		RETSKP			;AND DONE
  4124
  4125					;WORKER ROUTINE TO DO ACK. CALLED FROM BOTH PROCESS CONTEXT AND FROM
  4126					;NSPTSK.
  4127					;	T1/ LL BLOCK ADDRESS
  4128					;	T2/ MESSAGE FLAGS
  4129
  4130	000534'01  200 04 0 00 000002 	ACKDO:	MOVE T4,T2		;SAVE FLAGS
  4131	000535'01  260 17 0 00 000706'		CALL GETTWO		;GET ACKNUM
  4132	000536'01  263 17 0 00 000000 		 RET			;BAD
  4133	000537'01  201 03 0 00 000002 		MOVEI T3,MSDAT		;IS A DATA ACK
  4134	000540'01  602 04 0 00 000020 		TRNE T4,ACKLSI		;ACKING DATA?
  4135	000541'01  201 03 0 00 000001 		MOVEI T3,MSLSI		;NO.
  4136	000542'01  260 17 0 00 001172'		CALL ACKCHN		;GO DO IT
  4137	000543'01  254 00 0 00 000533*		RETSKP			;AND DONE
  4138
  4139					;A BADLY FORMED SEGMENT WAS ENCOUNTERED
  4140
  4141	000544'01  201 02 0 00 000006 	BADSEG:	MOVEI T2,LLSDIQ		;CHANGE LINK STATE
  4142	000545'01  137 02 0 00 002200'		STOR T2,LLSTA,(T1)
  4143	000546'01  260 17 0 00 001404'		CALL FLUSH		;RELEASE ALL PENDING MESSAGES
  4144	000547'01  201 02 0 00 000050 		MOVEI T2,.DCX40		;DATA LOSE ERROR
  4145	000550'01  137 02 0 00 002310'		STOR T2,LLRSN,(T1)	;THE ABORT REASON
  4146	000551'01  260 17 0 00 001157'		CALL DATINR		;GIVE INT
  4147	000552'01  402 00 0 00 000003 		SETZM T3		;NO USER DATA
  4148	000553'01  201 04 0 00 000070 		MOVEI T4,CNMRFL+CNMDI	;A DI
  4149	000554'01  260 17 0 00 000000#		CALL SNDDI		;GO SEND IT
  4150	000555'01  254 00 0 00 000307'		 CALLRET GENWAT		;NO FREE SPACE
  4151	000556'01  260 17 0 00 001001'		CALL SNDCTL		;SEND CONTROL MESSAGE
  4152	000557'01  201 02 0 00 000005 		MOVEI T2,LLSDIS		;NEW STATE
  4153	000560'01  137 02 0 00 002200'		STOR T2,LLSTA,(T1)
  4154	000561'01  254 00 0 00 000000#		CALLRET SEGERR		;AND GIVE ERROR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 98
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4155
  4156					;ROUTINE TO VERIFY A SEGMENT
  4157					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  4158					;		T2/ SEGMENT ADDRESS
  4159					;		T3/ SEGMENT TYPE
  4160					;RETURNS:	+1 BAD SEGMENT.
  4161					;			T3=0 MEANS BADLY FORMED (PROTOCOL ERROR)
  4162					;			T3=/0 MEANS OLD SEGMENT. NEEDS TO BE IGNORED
  4163					;		+2 GOOD. T3/ "AGE"
  4164
  4165	000562'01  265 16 0 00 000515*	VERSEG:	TRVAR <MSGCNT,MSGBYP,MSGBLK,MSGSGT>
  4166	000563'01  000004  000004
  4167	000564'01  202 03 0 15 000004 		MOVEM T3,MSGSGT		;SAVE SEGMENT TYPE
  4168	000565'01  200 03 0 02 000003 		MOVE T3,MSBPTR(T2)	;GET POINTER TO DATA
  4169	000566'01  202 03 0 15 000002 		MOVEM T3,MSGBYP		;TO THE POINTER
  4170	000567'01  135 03 0 00 002307'		LOAD T3,MSDTC,(T2)	;GET COUNT
  4171	000570'01  202 03 0 15 000001 		MOVEM T3,MSGCNT		;SAVE COUNT
  4172	000571'01  202 02 0 15 000003 		MOVEM T2,MSGBLK		;SAVE MESSAGE BLOCK
  4173	000572'01  260 17 0 00 000706'		CALL GETTWO		;GET ACKNUM
  4174	000573'01  254 00 0 00 000615'		 JRST VERBDY		;BAD
  4175	000574'01  626 02 0 00 100000 		TRZN T2,ACKIND		;IS THIS AN ACKNUM?
  4176	000575'01  254 00 0 00 000602'		JRST GOTSEG
  4177	000576'01  200 03 0 15 000004 		MOVE T3,MSGSGT		;GET TYPE
  4178	000577'01  260 17 0 00 001172'		CALL ACKCHN		;AND GO HANDLE THE ACK
  4179	000600'01  260 17 0 00 000706'		CALL GETTWO		;GET SEGNUM
  4180	000601'01  254 00 0 00 000615'		 JRST VERBDY		;BAD
  4181	000602'01  200 03 0 00 000002 	GOTSEG:	MOVE T3,T2		;SAVE SEGMENT #
  4182	000603'01  200 02 0 15 000004 		MOVE T2,MSGSGT		;GET TYPE
  4183						XCT [	LOAD T4,LLIIN,(T1)
  4184	000604'01  256 00 0 02 002311'			LOAD T4,LLIDN,(T1)]-1(T2)
  4185	000605'01  200 02 0 15 000003 		MOVE T2,MSGBLK		;GET BLOCK
  4186	000606'01  137 03 0 00 002270'		STOR T3,MSSEG,(T2)	;SAVE SEGMENT #
  4187	000607'01  275 03 0 04 000000 		SUBI T3,0(T4)		;COMPUTE "AGE"
  4188	000610'01  405 03 0 00 007777 		ANDI T3,7777		;MOD 4096
  4189	000611'01  332 00 0 00 000003 		SKIPE T3		;IS IT CURRENT ONE?
  4190	000612'01  303 03 0 00 000036 		CAILE T3,MAXDIF		;NO. IS IT NEW?
  4191	000613'01  344 03 0 00 000000*		AOJA T3,R		;NO. IS OLD
  4192	000614'01  254 00 0 00 000543*		RETSKP			;YES. RETURN AGE IN T3
  4193
  4194	000615'01  200 02 0 15 000003 	VERBDY:	MOVE T2,MSGBLK		;GET BACK BLOCK ADDRESS
  4195	000616'01  402 00 0 00 000003 		SETZM T3		;SAY PROTOCOL ERROR
  4196	000617'01  263 17 0 00 000000 		RET			;AND DONE
  4197
  4198						SWAPCD
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 99
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4199
  4200					;ROUTINE TO DO SEQUENTIAL INPUT.
  4201
  4202	003731'02  200 01 0 11 003701*	NETSQI::MOVE T1,FILLLB(JFN)	;GET LL BLOCK ADDRESS
  4203	003732'02  260 17 0 00 000000#		CALL BLKLLK		;LOCK IT UP
  4204	003733'02  254 00 0 00 003756'		 JRST WATBLK		;GO WAIT FOR THE LOCK
  4205	003734'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET STATE
  4206	003735'02  254 00 1 02 004271'		JRST @SQISTA-1(T2)	;GO DO PROPER THING
  4207
  4208	003736'02  332 00 0 01 000006 	SQI1:	SKIPE LLMSI(T1)		;have pending interrupt message?
  4209						JRST [	MOVEI T1,DCNX2	;yes. illegal to do this input then
  4210							TQO <ERRF>	;make it a file sys error
  4211	003737'02  254 00 0 00 010051'			JRST SQOBAD]	;and tell the process
  4212	003740'02  371 00 0 11 003462*		SOSL FILCNT(JFN)	;ANY MORE BYTES?
  4213						JRST [	ILDB T2,FILBYT(JFN) ;YES. GET ONE
  4214							AOS FILBYN(JFN)	;INDICATE WE TOOK ONE
  4215							CALL BLKULK	;FREE THE BLOCK
  4216							MOVE T1,T2	;GET BYTE IN PROPER PLACE
  4217	003741'02  254 00 0 00 010054'			RET]		;AND DONE
  4218	003742'02  200 16 0 01 000010 		JE LLFLI,(T1),SQI11	;IF FLOW FROM NETWORK...
  4219	003743'02  607 16 0 00 040000 
  4220	003744'02  254 00 0 00 003747'
  4221	003745'02  205 16 0 00 000040 		SETZRO LLFIM,(T1)	;CLEAR FLAG
  4222	003746'02  412 16 0 01 000002 
  4223	003747'02  260 17 0 00 000547'	SQI11:	CALL NETUIN		;UNDO INPUT
  4224	003750'02  200 01 0 11 003731*		MOVE T1,FILLLB(JFN)	;GET BACK LL BLOCK POINTER
  4225	003751'02  260 17 0 00 003773'		CALL NETSET		;GO TRY TO GET SOME BYTES
  4226						 JRST [	TQO <BLKF>	;REQUEST BLOCK
  4227	003752'02  254 00 0 00 007751'			CALLRET SQOBAD]	;AND FINISH UP
  4228	003753'02  260 17 0 00 000000#		CALL BLKULK		;FOUND SOME. FREE THE LOCK
  4229	003754'02  260 17 0 00 003426'		CALL NETINP		;SET UP FOR INPUT
  4230	003755'02  254 00 0 00 003731'		JRST NETSQI		;AND TRY AGAIN
  4231
  4232					;ROUTINE TO SET BLKF AND RETURN
  4233
  4234	003756'02  661 10 0 00 000040 	WATBLK:	TQO <BLKF>
  4235	003757'02  263 17 0 00 000000 		RETBAD()
  4236
  4237					;STATE TRANSITION ROUTINES FOR SEQUENTIAL INPUT
  4238
  4239					;DI RECEIVED.
  4240
  4241					SQIDIR:	JN LLFDI,(T1),[
  4242							SKIPE FILCNT(JFN) ;SYNCHRONOUS?
  4243							JRST SQI1	;GO GET REMAINING BYTES
  4244							CALL NETSET	;SEE IF ANY MORE
  4245							 JRST SQOEOF	;NO. GIVE EOF THEN
  4246	003760'02  200 16 0 01 000002 			JRST SQI1]	;YES. GO GET THEM
  4247	003761'02  603 16 0 00 000010 
  4248	003762'02  254 00 0 00 010061'
  4249	003763'02  260 17 0 00 000000#		CALL FLUSH		;NO . GO FLUSH ALL QUEUES
  4250	003764'02  661 10 0 00 000400 		TQO <ERRF>		;AN ERROR
  4251	003765'02  201 01 0 00 602026 		MOVEI T1,DCNX11		;ABORT ERROR
  4252	003766'02  254 00 0 00 003677'		JRST SQOBAD		;AND GIVE ERROR TO USER
  4253
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 99-1
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4254					;NEED IMPLICIT CONFIRM
  4255
  4256	003767'02  402 00 0 00 000003 	SQICNF:	SETZM T3		;NO OPTDATA
  4257	003770'02  260 17 0 00 003707'		CALL CNFCOM		;GO DO CONFIRM
  4258	003771'02  254 00 0 00 003677'		 JRST SQOBAD		;NEED TO BLOCK
  4259	003772'02  254 00 0 00 003736'		JRST SQI1		;AND PROCEED
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 100
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4260
  4261					;ROUTINE TO SCAN INPUT QUEUES AND GET BYTES TO DELIVER TO PROGRAM
  4262
  4263	003773'02  265 16 0 00 003707*	NETSET:	STKVAR <SQICNT>
  4264	003774'02  000001  000001
  4265	003775'02  402 00 0 17 777776 		SETZM SQICNT		;NONE YET
  4266	003776'02  200 16 0 01 000010 		TMNN LLFLI,(T1)		;IS FLOW FROM THE NETWORK?
  4267	003777'02  607 16 0 00 040000 
  4268	004000'02  254 00 0 00 004013'		JRST SQI22		;YES. ALL SET TO GO THEN
  4269	004001'02  205 16 0 00 000040 		SETZRO LLFIM,(T1)	;NO LONGER EOM
  4270	004002'02  412 16 0 01 000002 
  4271	004003'02  205 16 0 00 040000 		SETZRO LLFLI,(T1)	;NO. SET FLOW FROM THE NETWORK
  4272	004004'02  412 16 0 01 000010 
  4273	004005'02  135 03 0 00 007414'		LOAD T3,LLBSZ,(T1)	;GET BYTE SIZE
  4274	004006'02  550 01 0 11 003517*		HRRZ T1,FILWND(JFN)	;GET WINDOW PAGE
  4275	004007'02  260 17 0 00 002446'		CALL MAKINP		;GO GET INPUT POINTER
  4276	004010'02  202 01 0 11 003453*		MOVEM T1,FILBFI(JFN)	;SAVE BYTE POINTER
  4277	004011'02  402 00 0 17 777776 		SETZM SQICNT		;SAVE CURRENT COUNT
  4278	004012'02  200 01 0 11 003750*	SQI23:	MOVE T1,FILLLB(JFN)	;RESTORE LL BLOCK
  4279	004013'02  260 17 0 00 000000#	SQI22:	CALL MOVSEG		;FIRST, PICK UP ACKS
  4280	004014'02  263 17 0 00 000000 		 RETBAD()		;OOPS. AN ERROR
  4281	004015'02  200 16 0 01 000002 		JN LLFNA,(T1),SQISNA	;IF NEED ACK ONLY, GO DO IT
  4282	004016'02  603 16 0 00 000100 
  4283	004017'02  254 00 0 00 004061'
  4284	004020'02  135 02 0 00 010066'		LOAD T2,LLLSC,(T1)	;GET NUMBER OF SEGS IN INPUT QUEUE
  4285	004021'02  303 02 0 00 000003 		CAILE T2,FLOHLD		;OVER THE THRESHOLD?
  4286	004022'02  254 00 0 00 004070'		JRST SQISN4		;YES, GO  SEND LS MESSAGE
  4287	004023'02  200 01 0 11 004012*	SQI2:	MOVE T1,FILLLB(JFN)	;GET ADDRESS OF JFN BLOCK
  4288	004024'02  200 02 0 11 004010*		MOVE T2,FILBFI(JFN)	;GET BUFFER ADDRESS
  4289	004025'02  201 03 0 00 004000 		MOVEI T3,4000		;MAX NUMBER OF BYTES IN JFN BUFFERS
  4290	004026'02  260 17 0 00 004102'		CALL MOVMSG		;GO REMOVE MESSAGES FROM QUEUE AND PUT IN BUFFER
  4291	004027'02  263 17 0 00 000000 		 RETBAD ()		;FAILED
  4292	004030'02  202 01 0 11 004024*		MOVEM T1,FILBFI(JFN)	;STORE NEW BUFFER POINTER
  4293	004031'02  202 02 0 17 777776 		MOVEM T2,SQICNT		;SAVE COUNT OF BYTES MOVED
  4294	004032'02  200 01 0 11 004023*		MOVE T1,FILLLB(JFN)	;RESTORE LOGICAL LINK BLOCK ADDRESS
  4295	004033'02  332 00 0 00 000002 		SKIPE T2		;ANY BYTES IN SEGMENT?
  4296	004034'02  254 00 0 00 004045'		JRST SQIEMP		;YES, ONWARD
  4297	004035'02  200 16 0 01 000002 		TMNE LLFIM,(T1)		;NO, EOM?
  4298	004036'02  603 16 0 00 000040 
  4299	004037'02  604 00 0 00 000000 		IFNSK.			;YES, A NULL MESSAGE
  4300	004040'02  254 00 0 00 004045'
  4301	004041'02  205 16 0 00 000040 		   SETZRO LLFIM,(T1)	;TURN OFF EOM
  4302	004042'02  412 16 0 01 000002 
  4303	004043'02  660 10 0 00 000020 		   TQO <NSPNUL>		;SET THE FILSTS WORD
  4304	004044'02  254 00 0 00 004047'		   JRST SQIEM1		;FINISH PROCESSING THE MESSAGE
  4305	004045'02				ENDIF.
  4306						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 101
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4307
  4308					;NETSQI CONTINUED....
  4309					;GOT ALL MESSAGES MOVED.
  4310
  4311	004045'02  337 00 0 17 777776 	SQIEMP:	SKIPG SQICNT		;GET ANY BYTES?
  4312	004046'02  254 00 0 00 004076'		JRST SQINOB		;NO. NOTHING TO DO
  4313	004047'02  135 03 0 00 007414'	SQIEM1:	LOAD T3,LLBSZ,(T1)	;GET BYTE SIZE
  4314	004050'02  550 01 0 11 004006*		HRRZ T1,FILWND(JFN)	;GET WINDOW ADDRESS
  4315	004051'02  260 17 0 00 002437'		CALL MAKPTR		;MAKE A POINTER
  4316	004052'02  202 01 0 11 004030*		MOVEM T1,FILBFI(JFN)	;TO THE BLOCK
  4317	004053'02  200 04 0 11 004032*		MOVE T4,FILLLB(JFN)
  4318	004054'02  135 03 0 00 010067'		LOAD T3,LLBSZ,(T4)	;GET BYTE SIZE
  4319	004055'02  200 02 0 17 777776 		MOVE T2,SQICNT		;GET COUNT WE FOUND
  4320	004056'02  306 03 0 00 000044 		CAIN T3,44		;WORD MODE?
  4321						JRST [	IDIVI T2,11	;YES. COMPUTE BYTES
  4322							LSH T2,1	;""
  4323							JUMPE T3,.+1	;AN ODD WORD ON THE END?
  4324	004057'02  254 00 0 00 010070'			AOJA T2,.+1]	;YES. COUNT IT
  4325	004060'02  542 02 0 11 003571*		HRRM T2,FILBCT(JFN)	;SAVE IT
  4326	004061'02  200 01 0 11 004053*	SQISNA:	MOVE T1,FILLLB(JFN)	;GET ADDRESS OF LOGICAL LINK BLOCK
  4327	004062'02  260 17 0 00 000000#		CALL SQIACK		;SEND ANY ACK'S REQUIRED
  4328	004063'02  254 00 0 00 004240'		 JRST CHKFRE		;FAILED, GO CHECK TYPE OF FAILURE
  4329	004064'02  200 01 0 11 004061*	SQISN2:	MOVE T1,FILLLB(JFN)	;GET ADDRESS OF LOGICAL LINK BLOCK
  4330	004065'02  135 02 0 00 010066'		LOAD T2,LLLSC,(T1)	;GET NUMBER OF SEGS IN INPUT QUEUE
  4331	004066'02  307 02 0 00 000003 		CAIG T2,FLOHLD		;OVER THE THRESHOLD?
  4332	004067'02  254 00 0 00 004073'		JRST SQISN3		;NO, DON'T SEND LS MESSAGE NOW
  4333	004070'02  260 17 0 00 000000#	SQISN4:	CALL SQILS		;SEND LS IF NEEDED
  4334						 JRST [	MOVE T2,FILLLB(JFN) ;GET BACK LL BLOCK
  4335							SKIPN LLMSG(T2)	;HAVE A MESSAGE NOW?
  4336							JRST CHKFRE	;NO. MUST BLOCK THEN
  4337	004071'02  254 00 0 00 010074'			JRST SQI23]	;AND GO TRY AGAIN
  4338	004072'02  200 01 0 11 004064*		MOVE T1,FILLLB(JFN)	;RESTORE LOGICAL LINK BLOCK ADDRESS
  4339	004073'02  205 16 0 00 040000 	SQISN3:	SETONE LLFLI,(T1)	;FLOW IS NOW TO F/S
  4340	004074'02  436 16 0 01 000010 
  4341	004075'02  254 00 0 00 003730*		RETSKP			;ALL DONE. WITH GOOD DATA
  4342
  4343					;COULDN'T FIND ANY BYTES
  4344
  4345	004076'02  332 00 0 01 000005 	SQINOB:	SKIPE LLMSG(T1)		;HAVE ANY NOW?
  4346	004077'02  254 00 0 00 004023'		JRST SQI2		;AND TRY AGAIN
  4347	004100'02  201 02 0 00 000000#		MOVEI T2,CHKRAW		;THE BLOCK ROUTINE
  4348	004101'02  254 00 0 00 000000#		CALLRET MAKTST		;GO ARRANGE FOR THE BLOCK
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 102
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4349					;MOVMSG - ROUTINE TO REMOVE SEGMENTS FROM LLOMSG QUEUE AND PLACE INTO
  4350					;	  THE DESTINATION BUFFER.
  4351					;
  4352					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  4353					;	    T2/	BUFFER POINTER
  4354					;	    T3/	MAX # OF BYTES TO PUT INTO BUFFER
  4355					;		CALL MOVMSG
  4356					;RETURNS: +1	 FAILED
  4357					;	  +2	SUCCESS, WITH T1/ UPDATE BUFFER POINTER
  4358					;			      T2/ COUNT OF BYTES MOVED
  4359					;			      T3/ -1 IF SOME DATA WOULD NOT FIT IN BUFFER
  4360					;
  4361					; NOTE:  TRVAR'S MSGCNT AND MSGBYP ARE USED BY ROUTINES TO EXTRACT FIELDS
  4362					;	 FROM MESSAGES (E.G. GETTWO).
  4363
  4364	004102'02  265 16 0 00 002012*	MOVMSG:	TRVAR <MSGCNT,MSGBYP>
  4365	004103'02  000002  000002
  4366	004104'02  265 16 0 00 003773*		STKVAR <MVMLLB,MVMBFI,MVMCNT,MVMMAX,MVMFLG>
  4367	004105'02  000005  000005
  4368	004106'02  202 01 0 17 777776 		MOVEM T1,MVMLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  4369	004107'02  202 02 0 17 777775 		MOVEM T2,MVMBFI		;SAVE BUFFER ADDRESS
  4370	004110'02  202 03 0 17 777773 		MOVEM T3,MVMMAX		;SAVE MAX # OF BYTES TO BE PUT INTO BUFFER
  4371	004111'02  402 00 0 17 777774 		SETZM MVMCNT		;INITIALIZE COUNT
  4372	004112'02  402 00 0 17 777772 		SETZM MVMFLG		;ASSUME ALL DATA WILL FIT
  4373	004113'02  260 17 0 00 000000#	MVM010:	CALL MOVSEG		;NO INPUT. GET ANY SEGS
  4374	004114'02  263 17 0 00 000000 		 RETBAD()		;ERROR
  4375	004115'02  336 02 0 01 000012 		SKIPN T2,LLOMSG(T1)	;GET TOPMOST SEGMENT
  4376	004116'02  254 00 0 00 004207'		JRST MVMX		;NONE
  4377	004117'02  135 03 0 00 010100'		LOAD T3,MSSEG,(T2)	;GET SEGMENT NUMBER
  4378	004120'02  135 04 0 00 010101'		LOAD T4,LLIDN,(T1)	;GET LAST ACKED DATA SEGMENT
  4379	004121'02  350 00 0 00 000004 		AOS T4			;THE ONE WE EXPECT
  4380	004122'02  405 04 0 00 007777 		ANDI T4,SEGMSK		;MOD 12
  4381	004123'02  302 03 0 04 000000 		CAIE T3,0(T4)		;IS THIS IT?
  4382	004124'02  254 00 0 00 004207'		JRST MVMX		;NO, NOT HERE YET
  4383	004125'02  135 03 0 00 007703'		LOAD T3,MSDTC,(T2)	;GET COUNT OF BYTES
  4384	004126'02  202 03 0 15 000001 		MOVEM T3,MSGCNT		;STASH IT
  4385	004127'02  200 03 0 02 000003 		MOVE T3,MSBPTR(T2)	;GET POINTER TO DATA
  4386	004130'02  202 03 0 15 000002 		MOVEM T3,MSGBYP		;SET UP POINTER
  4387	004131'02  260 17 0 00 000000#		CALL GETTWO		;GET NEXT FIELD
  4388	004132'02  255 00 0 00 000000 		 JFCL
  4389	004133'02  602 02 0 00 100000 		TXNE T2,ACKIND		;IS THIS ACKNUM?
  4390	004134'02  260 17 0 00 000000#		 CALL GETTWO		;YES. SO SKIP SEGNUM NOW
  4391	004135'02  255 00 0 00 000000 		 JFCL
  4392						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 103
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4393					;NOW POSITIONED TO DATA PORTION OF SEGMENT. MOVE DATA INTO
  4394					;DESTINATION BUFFER
  4395
  4396	004136'02  200 04 0 15 000001 		MOVE T4,MSGCNT		;GET REMAINING COUNT
  4397	004137'02  270 04 0 17 777774 		ADD T4,MVMCNT		;COMPUTE BYTES TO BE IN BUFFER
  4398	004140'02  313 04 0 17 777773 		CAMLE T4,MVMMAX		;WILL THEY FIT?
  4399						JRST [	SETOM T3	;NOTE NOT ALL DATA WOULD FIT
  4400	004141'02  254 00 0 00 010102'			JRST MVMY]	;EXIT
  4401	004142'02  202 04 0 17 777774 		MOVEM T4,MVMCNT		;YES. UPDATE COUNT
  4402	004143'02  200 02 0 01 000012 		MOVE T2,LLOMSG(T1)	;GET MESSAGE ADDRESS	
  4403	004144'02  135 02 0 00 010104'		LOAD T2,MSMFL,(T2)	;GET FLAGS
  4404	004145'02  606 02 0 00 000100 		TXNN T2,DATEOM		;IS THIS THE END-OF-MESSAGE?
  4405	004146'02  254 00 0 00 004151'		JRST SQI3		;NO
  4406	004147'02  205 16 0 00 000040 		SETONE LLFIM,(T1)	;YES
  4407	004150'02  436 16 0 01 000002 
  4408	004151'02  200 16 0 01 000010 	SQI3:	JE LLIMS,(T1),SQI4	;JUMP IF NOT MESSAGE INTERFACE
  4409	004152'02  607 16 0 00 010000 
  4410	004153'02  254 00 0 00 004156'
  4411	004154'02  200 16 0 01 000002 		TMNE LLFIM,(T1)		;SKIP IF NOT EOM
  4412	004155'02  603 16 0 00 000040 
  4413	004156'02  201 16 0 00 200000 	SQI4:	INCR LLLSC,(T1)		;NEED ANOTHER BUFFER SENT
  4414	004157'02  272 16 0 01 000020 
  4415	004160'02  200 04 0 15 000001 		MOVE T4,MSGCNT		;GET BACK THE COUNT
  4416	004161'02  135 02 0 00 007414'		LOAD T2,LLBSZ,(T1)	;GET BYTE SIZE
  4417	004162'02  306 02 0 00 000044 		CAIN T2,44		;WORD MODE?
  4418						JRST [	CALL SQIWRD	;YES, GO MOVE WORDS THEN
  4419	004163'02  254 00 0 00 010105'			JRST SQIMV1 ]	;AND DONE
  4420	004164'02  200 03 0 00 000004 	SQIMOV:	MOVE T3,T4		;GET COUNT
  4421	004165'02  200 01 0 15 000002 		MOVE T1,MSGBYP		;GET SOURCE POINTER
  4422	004166'02  200 02 0 17 777775 		MOVE T2,MVMBFI		;GET DESTINATION
  4423	004167'02  260 17 0 00 003604*		CALL NETMOV		;MOVE THE BYTES
  4424	004170'02  202 02 0 17 777775 		MOVEM T2,MVMBFI		;UPDATE DESTINATION POINTER
  4425	004171'02  200 01 0 17 777776 		MOVE T1,MVMLLB		;RESTORE LL BLOCK POINTER
  4426	004172'02  200 02 0 01 000012 	SQIMV1:	MOVE T2,LLOMSG(T1)	;GET EXPENDED MESSAGE
  4427	004173'02  135 03 0 00 010100'		LOAD T3,MSSEG,(T2)	;GET SEG #
  4428	004174'02  137 03 0 00 010101'		STOR T3,LLIDN,(T1)	;AND UPDATE LL BLOCK
  4429	004175'02  550 03 0 02 000000 		LOAD T3,MSLNK,(T2)	;GET NEXT
  4430	004176'02  202 03 0 01 000012 		MOVEM T3,LLOMSG(T1)	;NEW HEAD
  4431	004177'02  200 01 0 00 000002 		MOVE T1,T2		;MESSAGE BLOCK
  4432	004200'02  260 17 0 00 002712*		CALL RELRES		;FREE IT
  4433	004201'02  200 01 0 17 777776 		MOVE T1,MVMLLB		;GET BACK LL ADDRESS
  4434	004202'02  205 16 0 00 777770 		DECR LLDMT,(T1)		;ONE LESS DATA MESSAGE
  4435	004203'02  272 16 0 01 000020 
  4436	004204'02  200 16 0 01 000002 		JE LLFIM,(T1),MVM010	;HAVE EOM?
  4437	004205'02  607 16 0 00 000040 
  4438	004206'02  254 00 0 00 004113'
  4439	004207'02  402 00 0 00 000003 	MVMX:	SETZM T3		;NO PROBLEM FITTING ALL DATA IN BUFFER
  4440	004210'02  200 01 0 17 777775 	MVMY:	MOVE T1,MVMBFI		;NO, GET UPDATED POINTER
  4441	004211'02  200 02 0 17 777774 		MOVE T2,MVMCNT		;AND COUNT
  4442	004212'02  254 00 0 00 004075*		RETSKP			;DONE, RETURN SUCCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 104
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4443					;ROUTINE TO MOVE WORDS FROM THE NETWORK TO AN INPUT BUFFER
  4444
  4445	004213'02  265 16 0 00 004104*	SQIWRD:	STKVAR <<MDPTR,2>>
  4446	004214'02  000002  000002
  4447	004215'02  124 05 0 17 777775 		DMOVEM Q1,MDPTR		;SAVE WORK REGS
  4448	004216'02  403 05 0 00 000006 	SQIWR1:	SETZB Q1,Q2		;INIT WORDS
  4449	004217'02  201 03 0 00 000011 		MOVEI T3,11		;GET MAX BYTE COUNT
  4450	004220'02  305 04 0 00 000011 		CAIGE T4,11		;ENOUGH FOR FULL 2 WORDS?
  4451	004221'02  200 03 0 00 000004 		MOVE T3,T4		;NO. GET WHAT IS LEFT THEN
  4452	004222'02  275 04 0 00 000011 		SUBI T4,11		;TAKE SOME BYTES
  4453	004223'02  246 05 0 00 000010 	SQIWR2:	LSHC Q1,10		;SHIFT BYTES
  4454	004224'02  134 02 0 15 000002 		ILDB T2,MSGBYP		;GET NEXT BYTE FROM NET BUFFER
  4455	004225'02  137 02 0 00 010107'		DPB T2,[POINT 8,Q2,35]	;STASH IT
  4456	004226'02  367 03 0 00 004223'		SOJG T3,SQIWR2		;DO THEM ALL
  4457						JUMPL T4,[LSHC Q1,-4	;ALIGN ODD WORD
  4458							MOVEM Q2,@FILBFI(JFN) ;STORE ODD WORD
  4459							AOS FILBFI(JFN)	;MOVE TO NEXT WORD
  4460	004227'02  321 04 0 00 010110'			JRST SQIWR3]	;AND DONE
  4461	004230'02  124 05 1 11 004052*		DMOVEM Q1,@FILBFI(JFN)	;STORE BOTH WORDS
  4462	004231'02  201 05 0 00 000002 		MOVEI Q1,2		;INCREMENTER
  4463	004232'02  272 05 0 11 004230*		ADDM Q1,FILBFI(JFN)
  4464	004233'02  327 04 0 00 004216'		JUMPG T4,SQIWR1		;DO MORE
  4465	004234'02  120 05 0 17 777775 	SQIWR3:	DMOVE Q1,MDPTR		;RESTORE REGS
  4466	004235'02  263 17 0 00 000000 		RET			;ALL DONE
  4467
  4468					;ERROR ROUTINE FOR BADLY FORMED SEGMENT ENCOUNTERED
  4469
  4470	004236'02  661 10 0 00 000400 	SEGERR:	TQO <ERRF>		;SET FILE SYSTEM ERROR
  4471	004237'02  254 00 0 00 007416'		RETBAD (DCNX11)		;AND RETURN WITH ERROR INDICATOR
  4472
  4473					;ROUTINE TO ANALYZE FAILURE TO SEND ACK OR LS MESSAGE. IF IT IS
  4474					;A FREE SPACE FAILURE, THEN A DATA INT IS ISSUED TO INSURE THE PROCESS
  4475					;TRIES AGAIN SOON
  4476
  4477	004240'02  661 10 0 00 000040 	CHKFRE:	TQO <BLKF>		;NOTE BLOCK NEEDED
  4478	004241'02  550 03 0 00 000001 		HRRZ T3,T1		;GET TEST ROUTINE
  4479	004242'02  302 03 0 00 000000*		CAIE T3,BLOCKM		;A FREE SPACE FAILURE?
  4480	004243'02  263 17 0 00 000000 		RET			;NO. DONE THEN
  4481	004244'02  250 01 0 11 004072*		EXCH T1,FILLLB(JFN)	;YES. GET LL BLOCK
  4482	004245'02  260 17 0 00 000000#		CALL DATINR		;REQEUST DATA INT
  4483	004246'02  250 01 0 11 004244*		EXCH T1,FILLLB(JFN)	;RESTORE TEST ROUTINE
  4484	004247'02  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 105
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4485					;SQILS - ROUTINE TO SEND ANY LS MESSAGES NEEDED AFTER INPUT HAS BEEN PROCESSED
  4486					;
  4487					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  4488					;		CALL SQILS
  4489					;RETURNS: +1	 FAILED TO SEND LS
  4490					;	  +2	SUCCESS
  4491
  4492						RESCD
  4493
  4494	000620'01  265 16 0 00 000502*	SQILS::	STKVAR <SQLLLB>
  4495	000621'01  000001  000001
  4496	000622'01  202 01 0 17 777776 		MOVEM T1,SQLLLB		;SAVE BLOCK ADDRESS
  4497	000623'01  135 02 0 00 002314'		LOAD T2,LLLSC,(T1)	;GET SEGS TO REQUEST
  4498	000624'01  322 02 0 00 000614*		JUMPE T2,RSKP		;IF NONE, JUMP OFF
  4499	000625'01  201 03 0 00 000002 		MOVEI T3,MSDAT		;ON THE DATA CHANNEL
  4500	000626'01  205 16 0 00 000004 		SETONE LLLSA,(T1)	;TELL SCHED TRYING FOR LS SEND
  4501	000627'01  436 16 0 01 000020 
  4502	000630'01  260 17 0 00 001632'		CALL SNDLS		;SEND MESSAGE
  4503	000631'01  263 17 0 00 000000 		 RET			;FAILED, RETURN FAILURE
  4504	000632'01  200 01 0 17 777776 		MOVE T1,SQLLLB		;RESTORE LINK BLOCK ADDRESS
  4505	000633'01  200 16 0 00 002315'		SETZRO <LLLSC,LLLSA>,(T1) ;CLEAR ALL LS INDICATORS
  4506	000634'01  412 16 0 01 000020 
  4507	000635'01  254 00 0 00 000624*		RETSKP			;DONE, RETURN SUCCESS
  4508
  4509
  4510
  4511					;SQIACK - ROUTINE TO SEND ANY ACK'S NEEDED AFTER INPUT HAS BEEN PROCESSED
  4512					;
  4513					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  4514					;		CALL SQIACK
  4515					;RETURNS: +1	 FAILED, COULD NOT SEND THE ACK
  4516					;	  +2	SUCCESS
  4517
  4518	000636'01  265 16 0 00 000620*	SQIACK::STKVAR <SQALLB>
  4519	000637'01  000001  000001
  4520	000640'01  202 01 0 17 777776 		MOVEM T1,SQALLB		;SAVE ADDRESS OF LOGICAL LINK BLOCK
  4521	000641'01  135 02 0 00 002234'		LOAD T2,LLIDN,(T1)	;GET SEG # TO ACK
  4522	000642'01  201 03 0 00 000002 		MOVEI T3,MSDAT		;ON THE DATA CHANNEL
  4523	000643'01  200 16 0 01 000002 		TMNE LLFNN,(T1)		;NEED A NACK?
  4524	000644'01  603 16 0 00 001000 
  4525	000645'01  660 02 0 00 010000 	NSBP08:	TXO T2,ACKBIT		;YES.
  4526	000646'01  260 17 0 00 001444'		CALL SNDACK		;SEND IT
  4527						 JRST [	MOVE T2,SQALLB	;FAILED, GET ADDRESS OF LOGICAL LINK BLOCK
  4528							SETONE LLFNA,(T2) ;SAY NEED TO DO IT AGAIN
  4529	000647'01  254 00 0 00 002316'			RET ]		;RETURN FAILURE
  4530	000650'01  205 16 0 00 001100 		SETZRO <LLFNA,LLFNN>,(T1) ;CLEAR ACK FLAGS
  4531	000651'01  412 16 0 01 000002 
  4532	000652'01  254 00 0 00 000635*		RETSKP			;DONE, RETURN SUCCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 106
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4533
  4534					;NOW DEFINE STATE TRANSITION TABLES
  4535
  4536					;FOR SEQUENTIAL OUTPUT
  4537
  4538						SWAPCD			;ALL OF THESE ARE SWAPPABLE
  4539
  4540	004250'02  400000  003635'	SQOSTA::IFIW!SQOLIS		;LISTENING - BLOCK UNTIL CONNECTED
  4541	004251'02  400000  003635'		IFIW!SQOLIS		;CIS - SAME HERE
  4542	004252'02  400000  003637'		IFIW!SQOCNF		;CIR - GO CONFIRM CIR
  4543	004253'02  400000  000571'		IFIW!NETSQ1		;RUN - ALL SET TO GO
  4544	004254'02  400000  003644'		IFIW!SQODIS		;DIS - LINK IS CLOSED. GIVE ERROR
  4545	004255'02  400000  003644'		IFIW!SQODIS		;DIQ - SAME HERE
  4546	004256'02  400000  003647'		IFIW!SQODIR		;DIR - SEE IF ABORT OR CLOSE
  4547	004257'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4548	004260'02  400000  003643'		IFIW!SQOABT		;ABORTED - 
  4549
  4550					;FOR SOUTR CALL
  4551
  4552	004261'02  400000  003635'	SQOOTR::IFIW!SQOLIS		;LISTENING - BLOCK UNTIL CONNECTED
  4553	004262'02  400000  003635'		IFIW!SQOLIS		;CIS - BLOCK UNTIL CONNECTED
  4554	004263'02  400000  003703'		IFIW!SQOCN2		;CIR - GO CONFIRM
  4555	004264'02  400000  000603'		IFIW!NETSR1		;RUN - NORMAL STUFF
  4556	004265'02  400000  003644'		IFIW!SQODIS		;DIS - LINK IS CLOSED
  4557	004266'02  400000  003644'		IFIW!SQODIS		;DIQ - ""
  4558	004267'02  400000  003647'		IFIW!SQODIR		;DIR - 
  4559	004270'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4560	004271'02  400000  003643'		IFIW!SQOABT		;ABORTED -
  4561
  4562					;FOR SEQUENTIAL INPUT
  4563
  4564	004272'02  400000  003635'	SQISTA:	IFIW!SQOLIS		;LISTENING - WAIT FOR CONNECT
  4565	004273'02  400000  003635'		IFIW!SQOLIS		;CIS - WAIT FOR CONNECT
  4566	004274'02  400000  003767'		IFIW!SQICNF		;CIR - CONFIRM CONNECTION
  4567	004275'02  400000  003736'		IFIW!SQI1		;RUN - ALL SET
  4568	004276'02  400000  003644'		IFIW!SQODIS		;DIS - GIVE ERROR
  4569	004277'02  400000  003644'		IFIW!SQODIS		;DIQ - GIVE ERROR
  4570	004300'02  400000  003760'		IFIW!SQIDIR		;DIR -
  4571	004301'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4572	004302'02  400000  003643'		IFIW!SQOABT		;ABORTED -
  4573
  4574					;TABLE FOR CC RECEIVED
  4575
  4576	004303'02  400000  005432'	CCREC:	IFIW!CCJECT		;LISTENING - CAN'T CONFIRM A LISTENER
  4577	004304'02  400000  005402'		IFIW!CCGUD		;CIS - GOOD CC
  4578	004305'02  400000  005435'		IFIW!CCDON		;CIR - IGNORE IT
  4579	004306'02  400000  005435'		IFIW!CCDON		;RUN - IGNORE IT
  4580	004307'02  400000  005435'		IFIW!CCDON		;DIS - IGNORE IT
  4581	004310'02  400000  005435'		IFIW!CCDON		;DIQ - IGNORE IT
  4582	004311'02  400000  005435'		IFIW!CCDON		;DIR - IGNORE IT
  4583	004312'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4584	004313'02  400000  005432'		IFIW!CCJECT		;ABORTED -
  4585
  4586					;TABLE FOR DI RECEIVED
  4587
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 106-1
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4588	004314'02  400000  005432'	DIREC:	IFIW!CCJECT		;LISTENING - ILLEGAL ADDRESS
  4589	004315'02  400000  005606'		IFIW!CONREJ		;CIS - CONNECT BEING REJECTED
  4590	004316'02  400000  005435'		IFIW!CCDON		;CIR - IGNORE
  4591	004317'02  400000  005617'		IFIW!DIMSG2		;RUN - CLOSING DOWN THE LINK
  4592	004320'02  400000  005610'		IFIW!DIABT		;DIS - ABORT IT
  4593	004321'02  400000  005610'		IFIW!DIABT		;DIQ - ABORT IT
  4594	004322'02  400000  005610'		IFIW!DIABT		;DIR - ABORT IT
  4595	004323'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4596	004324'02  400000  005623'		IFIW!DCDCS		;ABORTED - SEND DC AND IGNORE IT
  4597
  4598					;TABLE FOR DC RECEIVED
  4599
  4600	004325'02  400000  005435'	DCREC:	IFIW!CCDON		;LISTENING - IGNORE FOR LISTENER
  4601	004326'02  400000  005725'		IFIW!CHKIDL		;CIS - CHECK FOR VALID DC
  4602	004327'02  400000  005435'		IFIW!CCDON		;CIR - IGNORE
  4603	004330'02  400000  005735'		IFIW!DCRUN		;RUN - SHUTTING DOWN
  4604	004331'02  400000  005730'		IFIW!DCABT		;DIS - VALID REPLY TO DI SENT
  4605	004332'02  400000  005730'		IFIW!DCABT		;DIQ - ABORT THE LINK
  4606	004333'02  400000  005730'		IFIW!DCABT		;DIR - ABORT THE LINK
  4607	004334'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4608	004335'02  400000  005435'		IFIW!CCDON		;ABORTED - IGNORE IT
  4609
  4610					;CLOSF
  4611
  4612	004336'02  400000  003334'	CLZSTA:	IFIW!CLZDON		;LISTENING - JUST GET RID OF A LISTENER
  4613	004337'02  400000  003334'		IFIW!CLZDON		;CIS - SAME FOR CIS
  4614	004340'02  400000  003265'		IFIW!CLZDI		;CIR - NEED TO REFUSE CONNECTION
  4615	004341'02  400000  003264'		IFIW!CLZRUN		;RUN - NORMAL STATE
  4616	004342'02  400000  003322'		IFIW!CLZWDC		;DIS - WAIT FOR DC
  4617	004343'02  400000  003314'		IFIW!CLZDIQ		;DIQ -
  4618	004344'02  400000  003326'		IFIW!CLZDIR		;DIR -
  4619	004345'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4620	004346'02  400000  003326'		IFIW!CLZABT		;ABORTED - 
  4621
  4622					;ACK RECEIVED
  4623
  4624	004347'02  400000  005432'	ACKSTA:	IFIW!CCJECT		;LISTENING - 
  4625	004350'02  400000  005527'		IFIW!ACKCIS		;CIS - 
  4626	004351'02  400000  005435'		IFIW!CCDON		;CIR - 
  4627	004352'02  400000  005545'		IFIW!ACKRUN		;RUN - 
  4628	004353'02  400000  005435'		IFIW!CCDON		;DIS - 
  4629	004354'02  400000  005435'		IFIW!CCDON		;DIQ - 
  4630	004355'02  400000  005435'		IFIW!CCDON		;DIR - 
  4631	004356'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4632	004357'02  400000  005435'		IFIW!CCDON		;ABORTED - 
  4633
  4634					;DATA,INT OR LS MESSAGE
  4635
  4636	004360'02  400000  005432'	DATSTA:	IFIW!CCJECT		;LISTENING - ERROR
  4637	004361'02  400000  005435'		IFIW!CCDON		;CIS - IGNORE
  4638	004362'02  400000  005435'		IFIW!CCDON		;CIR - IGNORE
  4639	004363'02  400000  005765'		IFIW!DATRUN		;RUN - GOOD MESSAGE
  4640					   REPEAT 3,<
  4641						IFIW!CCDON>		;DIS,DIQ,DIR - IGNORE
  4642	004364'02  400000  005435'
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 106-2
NSPSRV	MAC	 6-Apr-82 10:58		Sequential I/O JSYS's

  4643	004365'02  400000  005435'
  4644	004366'02  400000  005435'
  4645	004367'02  600 00 0 00 000000 		NOP			;CCS - NOT POSSIBLE IN PHASE II
  4646	004370'02  400000  005435'		IFIW!CCDON		;ABORTED
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 107
NSPSRV	MAC	 6-Apr-82 10:58		NSP Error Code to TOPS20 Error Code Translation

  4647					SUBTTL	NSP Error Code to TOPS20 Error Code Translation
  4648
  4649					;NSPERR - ROUTINE TO CONVERT AN NSP ERROR CODE INTO A TOPS20 ERROR CODE
  4650					;
  4651					;ACCEPTS IN T1/	NSP ERROR CODE
  4652					;		CALL NSPERR
  4653					;RETURNS: +1	 FAILED, NO SUCH NSP ERROR CODE
  4654					;	  +2	SUCCESS, WITH T1/ TOPS20 ERROR CODE
  4655
  4656	004371'02  205 04 0 00 777751 	NSPERR::MOVSI T4,-ERRLEN	;SET UP TO LOOP THRU ERROR TABLE
  4657
  4658	004372'02  554 02 0 04 004401'	NSPER1:	HLRZ T2,ERRTAB(T4)	;GET AN NSP ERROR CODE
  4659	004373'02  316 02 0 00 000001 		CAMN T2,T1		;FOUND NSP ERROR CODE TO BE TRANSLATED ?
  4660	004374'02  254 00 0 00 004377'		JRST NSPER2		;YES, GO GET CORRESPONDING TOPS20 CODE
  4661	004375'02  253 04 0 00 004372'		AOBJN T4,NSPER1		;NO, LOOP OVER ENTIRE TABLE
  4662	004376'02  254 00 0 00 010114'		RETBAD (MONX03)		;NO SUCH NSP ERROR CODE, RETURN FAILURE
  4663
  4664					; HERE HAVING FOUND THE NSP ERROR CODE
  4665
  4666	004377'02  550 01 0 04 004401'	NSPER2:	HRRZ T1,ERRTAB(T4)	;GET CORRESPONDING TOPS20 ERROR CODE
  4667	004400'02  254 00 0 00 004212*		RETSKP			;DONE, RETURN SUCCESS
  4668
  4669
  4670
  4671					; TABLE OF NSP/TOPS20 ERROR CODE CORRESPONDENCE
  4672
  4673	004401'02  000000  602353	ERRTAB:	.DCX0,,NSPX00
  4674	004402'02  000001  602354		.DCX1,,NSPX01
  4675	004403'02  000002  602355		.DCX2,,NSPX02
  4676	004404'02  000003  602356		.DCX3,,NSPX03
  4677	004405'02  000004  602357		.DCX4,,NSPX04
  4678	004406'02  000005  602360		.DCX5,,NSPX05
  4679	004407'02  000006  602361		.DCX6,,NSPX06
  4680	004410'02  000007  602362		.DCX7,,NSPX07
  4681	004411'02  000010  602363		.DCX8,,NSPX08
  4682	004412'02  000011  602364		.DCX9,,NSPX09
  4683	004413'02  000030  602365		.DCX24,,NSPX10
  4684	004414'02  000040  602366		.DCX32,,NSPX11
  4685	004415'02  000041  602367		.DCX33,,NSPX12
  4686	004416'02  000042  602370		.DCX34,,NSPX13
  4687	004417'02  000043  602371		.DCX35,,NSPX14
  4688	004420'02  000044  602372		.DCX36,,NSPX15
  4689	004421'02  000045  602373		.DCX37,,NSPX16
  4690	004422'02  000046  602374		.DCX38,,NSPX17
  4691	004423'02  000047  602375		.DCX39,,NSPX18
  4692	004424'02  000050  602376		.DCX40,,NSPX19
  4693	004425'02  000051  602377		.DCX41,,NSPX20
  4694	004426'02  000052  602400		.DCX42,,NSPX21
  4695	004427'02  000053  602401		.DCX43,,NSPX22
  4696		   	   000027	ERRLEN==.-ERRTAB
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 108
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - Main Dispatching Loop

  4697					SUBTTL	NSP Background Task - Main Dispatching Loop
  4698
  4699
  4700					;THIS CODE IS THE REQUEST QUEUER AND THE BACKGROUND NSP
  4701					;TASK. THE QUEUER IS RESPONSIBLE FOR "ROUTING" ALL MESSAGES
  4702					;TO EITHER THE NETWORK (VIA THE DTE OR WHATEVER ELSE CONNECTS
  4703					;US TO THE NETWORK) OR TO ANOTHER LOGICAL LINK ON THE SAME HOST.
  4704					;ALSO, IT IS RESPONSIBLE FOR RETRANSMITTING ANY NACK'ED MESSAGES.
  4705
  4706					;THE BACKGORUND PROCESS RUNS AS A FORK OF JOB 0 AND IS RESPONSIBLE
  4707					;FOR PARSING ALL CONTROL MESSAGE, COMPLETING ALL CONNECTS, PROCESSING
  4708					;ACK AND LINK SERVICE MESSAGES, ACTING AS A SERVICE OF NETSQI FOR
  4709					;ACTING ON ACKS THAT ARE PIGGY-BACKED ONTO DATA SEGMENTS, AND FOR
  4710					;GENERATING PROCESS INTERRUPTS. ALSO, THIS PROCESS WILL EVOLVE OVER
  4711					;TIME TO HANDLE ALL ROUTING STRATEGIES.
  4712
  4713						SWAPCD			;ALL OF THIS CODE IS SWAPPABLE
  4714
  4715	004430'02  205 01 0 00 010000 	TSKINI:	MOVX T1,UMODF
  4716	004431'02  202 01 0 00 000000*		MOVEM T1,FFL		;ESTABLISH USUAL JSYS CONTEXT
  4717	004432'02  402 00 0 00 000000*		SETZM FPC		;SET PC
  4718	004433'02  265 16 0 00 000000*		MCENTR			;GET INTO MONITOR CONTEXT
  4719	004434'02  260 17 0 00 000000*		SE1ENT			;MAKE IT RUN IN PROPER SECTION
  4720						TRVAR <MSGCNT,MSGBYP,MSGSRC,MSGDST,MSGBLK,MSGLLB,MSGOBJ,<MSGDDC,5>,<MSGHSN,2>,MSGW1,
  4721	004435'02  265 16 0 00 004102*	MSGW2,MSGSOB,<MSGSDC,5>,<MSGDML,LKSIZE>,MSGLCL>
  4722	004436'02  000062  000062
  4723	004437'02  201 01 0 00 000000*		MOVEI T1,MAXQ		;DON'T ALLOW THIS FORK TO BE "COMPUTE-BOUND"
  4724	004440'02  202 01 0 00 000000*		MOVEM T1,JOBBIT		;BY PREVENTING MAXQ SCHEDULING BEHAVIOR
  4725
  4726					;TOP OF LOOP
  4727
  4728	004441'02  332 00 0 00 000000*	NSPTSK:	SKIPE MSGQ		;ANYTHING ON THE QUEUE?
  4729						JRST [	CALL DOMSGQ	;YES, DO ONE
  4730	004442'02  254 00 0 00 010116'			JRST NSPTSK]	;TRY AGAIN UNTIL DONE
  4731	004443'02  332 00 0 00 000000*		SKIPE KDPFLG		;DOES KMC11 WANT SERVICE
  4732	004444'02  260 17 0 00 000000*		CALL KDPTSK		;YES SO CHECK IT
  4733	004445'02  260 17 0 00 000000#		CALL OUTCHK		;TIME TO SEND PREVOUSLY BLOCKED OUTPUT ?
  4734	004446'02  260 17 0 00 006340'		 CALL OUTSND		;YES, GO SEND REMAINING OUTPUT
  4735	004447'02  600 00 0 00 000000 		NOP			;NOOP FOR PERFORMANCE ANALYSIS
  4736	004450'02  260 17 0 00 000000*		CALL DOATSQ		;HANDLE THE ATS QUEUES IF THERE ARE ANY
  4737	004451'02  260 17 0 00 004460'		CALL MCBCQ		;CHECK ANY MCB LINKS TO CLEAN UP
  4738	004452'02  332 00 0 00 000000*		SKIPE NSPMCB		;ANY DEAD MCB'S TO CLEAN UP?
  4739	004453'02  260 17 0 00 004763'		CALL MCBDED		;YES - GO CLEAN THEM UP
  4740	004454'02  201 01 0 00 000000#		MOVEI T1,NSPTST		;REST UNTIL WORK TO DO
  4741	004455'02  201 02 0 00 002734 		HDISMS (^D1500)		;WAIT, BUT STAY IN BALSET
  4742	004456'02  265 16 0 00 000000*
  4743	004457'02  254 00 0 00 004441'		JRST NSPTSK		;AND TRY AGAIN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 109
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - Main Dispatching Loop

  4744					;SEE IF ANY LL BLOCKS LEFT BY TTY TO CLOSE AND CLEAN UP
  4745
  4746	004460'02  261 17 0 00 000011 	MCBCQ:	SAVEAC <JFN,STS,DEV>
  4747	004461'02  261 17 0 00 000010 
  4748	004462'02  261 17 0 00 000013 
  4749	004463'02  415 16 0 00 007264'
  4750	004464'02  261 17 0 00 000016 
  4751	004465'02  265 16 0 00 004213*		STKVAR <MCBCLL>
  4752	004466'02  000001  000001
  4753	004467'02  336 00 0 00 000000*	MCBCQ2:	SKIPN ULLCZQ		;ANYTHING ON THE QUEUE?
  4754	004470'02  263 17 0 00 000000 		RET			;NO
  4755	004471'02  350 00 0 00 001615*		NOINT
  4756	004472'02  265 16 0 00 001540*		NOSKED
  4757	004473'02  200 01 0 00 004467*		MOVE T1,ULLCZQ		;UNQUEUE ONE
  4758	004474'02  135 02 0 00 010120'		LOAD T2,LLTTY,(T1)
  4759	004475'02  202 02 0 00 004473*		MOVEM T2,ULLCZQ
  4760	004476'02  265 16 0 00 001547*		OKSKED
  4761	004477'02  202 01 0 17 777776 		MOVEM T1,MCBCLL
  4762	004500'02  201 02 0 00 000000#		MOVEI T2,MLJFN+1
  4763	004501'02  260 17 0 00 000000*		CALL ASGJFR		;ASSIGN DUMMY JFN BLOCK
  4764						 JRST [	MOVE T1,MCBCLL	;CAN'T NOW, PUT LL BACK ON QUEUE
  4765							NOSKED
  4766							MOVE T2,ULLCZQ
  4767							STOR T2,LLTTY,(T1)
  4768							MOVEM T1,ULLCZQ
  4769							OKSKED
  4770							OKINT
  4771	004502'02  254 00 0 00 010121'			RET]
  4772	004503'02  201 11 0 01 000000#		MOVEI JFN,-JFN0+1(T1)	;SETUP JFN, OFFSET SO FILXXX REFERENCES WORK
  4773	004504'02  250 01 0 17 777776 		EXCH T1,MCBCLL		;SAVE ACTUAL BLOCK, GET LL
  4774	004505'02  202 01 0 11 004246*		MOVEM T1,FILLLB(JFN)	;PUT LL IN JFN BLOCK
  4775	004506'02  400 10 0 00 000000 		SETZ STS,		;FAKE STATUS BITS
  4776	004507'02  201 13 0 00 000033'		MOVEI DEV,DCNDTB	;DITTO DEV
  4777	004510'02  402 00 0 11 004050*		SETZM FILWND(JFN)	;NO WINDOWS
  4778	004511'02  205 01 0 00 004000 	MCBCQ1:	MOVX T1,CZ%ABT		;ABORT CLOSE
  4779	004512'02  260 17 0 00 003252'		CALL NETCLZ
  4780	004513'02  600 00 0 00 000000 		 NOP			;ASSUME SUCCESS
  4781	004514'02  201 01 0 00 000000*		MOVEI T1,JSBFRE
  4782	004515'02  200 02 0 17 777776 		MOVE T2,MCBCLL		;DUMMY BLOCK
  4783	004516'02  260 17 0 00 000000*		CALL RELFRE		;RELEASE IT
  4784	004517'02  256 00 0 00 003340*		OKINT
  4785	004520'02  254 00 0 00 004467'		JRST MCBCQ2
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 110
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - Main Dispatching Loop

  4786
  4787					;TEST ROUTINE FOR NSPTSK
  4788
  4789						RESCD
  4790
  4791	000653'01  260 17 0 00 000000*	NSPTST:	CALL CKATSQ		;CHECK THE ATS QUEUES
  4792	000654'01  254 00 0 04 000001 		 JRST 1(T4)		;NEED TO DO SOMETHING
  4793	000655'01  332 00 0 00 000000*		SKIPE KDPFLG		;DOES KMC11 WANT SERVICE
  4794	000656'01  254 00 0 04 000001 		JRST 1(4)		;YES
  4795	000657'01  260 17 0 00 000670'		CALL OUTCHK		;CHECK "RETRY BLOCKED OUTPUT" TIMER
  4796	000660'01  254 00 0 04 000001 		 JRST 1(4)		;YES, WAKE UP
  4797	000661'01  332 00 0 00 000000*		SKIPE MSGQ		;ANY MESSAGES TO DO?
  4798	000662'01  254 00 0 04 000001 		JRST 1(4)		;YES, WAKE UP
  4799	000663'01  332 00 0 00 000000*		SKIPE NSPMCB		;ANY DEAD LINES TO CLEAN UP?
  4800	000664'01  254 00 0 04 000001 		JRST 1(4)		;YES, WAKE UP
  4801	000665'01  332 00 0 00 000000*		SKIPE ULLCZQ		;LL'S TO CLEAN UP?
  4802	000666'01  254 00 0 04 000001 		JRST 1(T4)		;YES
  4803	000667'01  254 00 0 04 000000 		JRST 0(4)		;NO, WAIT SOME MORE
  4804
  4805					;OUTCHK - ROUTINE TO DETERMINE IF PREVIOUSLY BLOCKED OUTPUT SHOULD BE
  4806					;	  RETRIED.
  4807					;
  4808					;CALL:		CALL OUTCHK
  4809					;RETURNS: +1	 TIME TO CHECK THE "OUTPUT REMAINING" QUEUE
  4810					;	  +2	NOT TIME TO RETRY YET
  4811
  4812	000670'01  336 00 0 00 000000*	OUTCHK:	SKIPN OUTTIM		;ANY TIMER SET ?
  4813	000671'01  254 00 0 00 000652*		RETSKP			;NO
  4814	000672'01  265 16 0 00 000000*		SAVET
  4815	000673'01  200 01 0 00 000670*		MOVE T1,OUTTIM		;GET NEXT TIME TO WAKE UP
  4816	000674'01  317 01 0 00 000310*		CAMG T1,TODCLK		;TIMER EXPIRE ?
  4817	000675'01  263 17 0 00 000000 		RET			;YES, INDICATE SO
  4818	000676'01  254 00 0 00 000671*		RETSKP			;NO, NOTE NOT TIME YET
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 111
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  4819					SUBTTL	NSP Background Task - MSGQ Processing
  4820
  4821						SWAPCD
  4822
  4823	004521'02  265 16 0 00 004472*	DOMSGQ:	NOSKD1			;GET SET TO PULL A MESSAGE OFF
  4824	004522'02  7 004 20 0 00 001002 	CHNOFF DLSCHN		;TURN OFF DTE
  4825	004523'02  550 01 0 00 004441*		HRRZ T1,MSGQ		;GET TOP MOST ENTRY
  4826	004524'02  550 02 0 01 000000 		LOAD T2,MSLNK,(T1)	;GET LINK
  4827	004525'02  542 02 0 00 004523*		HRRM T2,MSGQ		;STASH IT
  4828	004526'02  336 00 0 00 000002 		SKIPN T2		;WAS A MESSAGE THERE?
  4829	004527'02  402 00 0 00 004525*		SETZM MSGQ		;NO. CLEAR ENTIRE HEADER
  4830	004530'02  7 004 20 0 00 002002 	CHNON DLSCHN		;TURN ON DTE
  4831	004531'02  265 16 0 00 004476*		OKSKD1			;AND ALLOW SCHEDULING
  4832	004532'02  402 00 0 15 000062 		SETZM MSGLCL		;ASSUME LOCAL IN TRVAR
  4833	004533'02  200 16 0 01 000001 		TMNN MSLCL,(T1)		;DID IT COME FROM DRIVER?
  4834	004534'02  607 16 0 00 040000 
  4835						JRST [SKIPL T3,NSPLPB	;YES, IS THERE A LOOPBACK LINE RUNNING?
  4836						      JRST DOMSG1	;NO
  4837						      HRRZS T3		;GET RID OF LOOPBACK FLAGS
  4838						      LOAD T4,MSPRT,(T1);GET PORT OF MESSAGE
  4839						      CAME T3,T4	;IS IT THE LOOPER?
  4840						      JRST DOMSG1	;NO
  4841						      SETONE MSLCL,(T1)	;YES, SAY LOCAL IN THE MESSAGE BLOCK
  4842	004535'02  254 00 0 00 010132'		      JRST .+1]
  4843	004536'02  476 00 0 15 000062 		SETOM MSGLCL		;SAY LOCAL IN TRVAR
  4844	004537'02  202 01 0 15 000005 	DOMSG1:	MOVEM T1,MSGBLK		;SAVE BLOCK ADDRESS
  4845	004540'02  135 02 0 00 010143'		LOAD T2,MSCNT,(T1)	;GET BYTE COUNT OF THE MESSAGE
  4846	004541'02  202 02 0 15 000001 		MOVEM T2,MSGCNT		;SAVE IT
  4847	004542'02  271 01 0 00 000007 		ADDI T1,MSHDR		;GET TO START OF DATA
  4848	004543'02  505 01 0 00 441000 		HRLI T1,(<POINT 8,>)	;FORM BYTE POINTER
  4849	004544'02  202 01 0 15 000002 		MOVEM T1,MSGBYP		;AND SET UP BYTE POINTER
  4850						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 112
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  4851
  4852					;MESSAGE ALL SET UP. GET MESSAGE FLAGS
  4853
  4854					;HAVE A MESSAGE. SEE WHAT IT IS
  4855
  4856	004545'02  402 00 0 15 000015 		SETZM MSGHSN		;ASSUME NO HOST NAME
  4857	004546'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,BADMSG)		;GET BYTE. IF BADLY FORMED, REJECT MSG
  4858	004547'02  254 00 0 00 005242'
  4859	004550'02  134 02 0 15 000002 
  4860	004551'02  602 02 0 00 000001 		TRNE T2,1		;IS THIS A PHASE III TRANSPORT MSG?
  4861	004552'02  254 00 0 00 005242'		JRST BADMSG		;YES, IGNORE IT
  4862	004553'02  606 02 0 00 000002 		TRNN T2,2		;IS THIS A ROUTING HEADER?
  4863	004554'02  254 00 0 00 004571'		JRST DOMSG		;NO. GO HANDLE MESSAGE THEN
  4864	004555'02  602 02 0 00 000100 		TRNE T2,100		;MUST BE ASCII NAME
  4865	004556'02  602 02 0 00 000060 		TRNE T2,60		;VALID ROUTING HEADER?
  4866	004557'02  254 00 0 00 004613'		JRST INVHDR		;NO.
  4867	004560'02  260 17 0 00 000000#		CALL SKPFLD		;SKIP OUR NAME
  4868	004561'02  254 00 0 00 005242'		 JRST BADMSG		;BADLY FORMED
  4869	004562'02  201 03 0 15 000015 		MOVEI T3,MSGHSN
  4870	004563'02  201 04 0 00 000006 		MOVEI T4,MAXHST
  4871	004564'02  260 17 0 00 000000#		CALL GTASCI		;AND GET ASCII FIELD
  4872	004565'02  254 00 0 00 005242'		 JRST BADMSG		;BADLY FORMED MESSAGE
  4873	004566'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,BADMSG)		;BADLY FORMED
  4874	004567'02  254 00 0 00 005242'
  4875	004570'02  134 02 0 15 000002 
  4876	004571'02  200 03 0 15 000005 	DOMSG:	MOVE T3,MSGBLK		;GET MESSAGE BLOCK
  4877	004572'02  137 02 0 00 010144'		STOR T2,MSMFL,(T3)	;SAVE FLAGS
  4878	004573'02  135 04 0 00 010145'		LDB T4,[POINT 3,T2,31]	;EXTRACT SUBTYPE
  4879	004574'02  135 03 0 00 010146'		LDB T3,[POINT 2,T2,33]	;EXTRACT TYPE OF MESSAGE
  4880	004575'02  254 00 1 03 004576'		JRST @MSGTYP(T3)	;GO DO MESSAGE
  4881
  4882	004576'02  400000  005744'	MSGTYP:	IFIW!DATMSG		;DATA MESSAGE
  4883	004577'02  400000  005503'		IFIW!ACKMSG		;AN ACK MESSAGE
  4884	004600'02  400000  004602'		IFIW!CTLMSG		;A CONTROL MESSAGE
  4885	004601'02  400000  005242'		IFIW!BADMSG		;BADLY FORMED MESSAGE
  4886
  4887	004602'02  254 00 1 04 004603'	CTLMSG:	JRST @.+1(T4)		;GET TO PROPER TYPE OF MESSAGE
  4888	004603'02  400000  005242'		IFIW!CIDON		;A NOOP. IGNORE IT
  4889	004604'02  400000  005054'		IFIW!CIMSG		;CONNECT-INITIATE
  4890	004605'02  400000  005357'		IFIW!CCMSG		;CONNECT-CONFIRM
  4891	004606'02  400000  005560'		IFIW!DIMSG		;DI MESSAGE
  4892	004607'02  400000  005706'		IFIW!DCMSG		;DC MESSAGE
  4893	004610'02  400000  004620'		IFIW!STRMSG		;A STARTUP MESSAGE
  4894	004611'02  400000  005242'		IFIW!BADMSG		;BADLY FORMED MESSAGE
  4895	004612'02  400000  005242'		IFIW!BADMSG		;BADLY FORMED MESSAGE
  4896
  4897					;RECEIVED A MESSAGE WITH AN INVALID ROUTING HEADER.
  4898
  4899	004613'02  200 01 0 15 000005 	INVHDR:	MOVE T1,MSGBLK		;GET MESSAGE
  4900	004614'02  135 01 0 00 010131'		LOAD T1,MSPRT,(T1)	;GET PORT I.D.
  4901						BUG (NSPRTH,<<T1,LINE>,<T2,BADBYT>>)
  4902						  ;BUG type:    BUGCHK, SOFT
  4903						  ;BUG message: NSPTSK- INVALID ROUTING HEADER
  4904						       SALL
  4905	004615'02  256 00 0 00 010147'
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 112-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  4906	004616'02  260 17 0 00 004744'		CALL PROOFF		;TURN OFF THE INT THAT DID IT
  4907	004617'02  254 00 0 00 005242'		JRST CIDON		;AND GIVE UP
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 113
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  4908
  4909					;GOT A STARTUP MESSAGE
  4910
  4911					;GOT A STARTUP MESSAGE
  4912
  4913	004620'02  402 00 0 00 000006 	STRMSG:	SETZM Q2		;INITIALIZE "VERIFICATION REQUESTED" FLAG
  4914	004621'02  200 02 0 15 000005 		MOVE T2,MSGBLK		;POINT TO MSG BLOCK AGAIN
  4915	004622'02  135 05 0 00 010153'		LOAD Q1,MSPRT,(T2)	;GET PORT MESSAGE CAME FROM
  4916	004623'02  200 16 0 05 002275*		JN INIRCV,MCBDTE(Q1),BADSTR	;IF ALREADY RUNNING, ERROR
  4917	004624'02  321 16 0 00 004741'
  4918	004625'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,BADSTR)		;GET STARUP TYPE
  4919	004626'02  254 00 0 00 004741'
  4920	004627'02  134 02 0 15 000002 
  4921	004630'02  302 02 0 00 000001 		CAIE T2,STRTYP		;THE EXPECTED ONE?
  4922	004631'02  254 00 0 00 004741'		JRST BADSTR		;NO
  4923	004632'02  260 17 0 00 000000#		CALL GETEXT		;GET NODE NUMBER
  4924	004633'02  254 00 0 00 004741'		 JRST BADSTR
  4925	004634'02  202 02 0 05 000000*		MOVEM T2,ITSNUM(Q1)	;SAVE NODE NUMBER
  4926	004635'02  201 03 0 05 000000 		MOVEI T3,(Q1)		;GET PORT
  4927	004636'02  271 03 0 05 002306*		ADDI T3,ITSNAM(Q1)	;POINT TO NAME FOR NEIGHBOR(2 WDS / PORT)
  4928	004637'02  201 04 0 00 000006 		MOVEI T4,MAXHST
  4929	004640'02  260 17 0 00 000000#		CALL GTASCI		;GET IT
  4930	004641'02  254 00 0 00 004741'		 JRST BADSTR		;BAD
  4931	004642'02  137 02 0 00 010154'		STOR T2,NAMCN,MCBDTE(Q1) ;STORE COUNT OF BYTES IN NAME
  4932	004643'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,BADSTR)		;GET SUPPORTED FUNCTIONS
  4933	004644'02  254 00 0 00 004741'
  4934	004645'02  134 02 0 15 000002 
  4935	004646'02  640 02 0 00 000006 		TRC T2,OURNED
  4936	004647'02  205 01 0 00 040000 		MOVX T1,NOTMCB		;NEIGHBOR IS NOT AN MCB
  4937	004650'02  412 01 0 05 004623*		ANDCAM T1,MCBDTE(Q1)	;ASSUME NEIGHBOR IS AN MCB
  4938	004651'02  602 02 0 00 000006 		TRNE T2,OURNED		;DOES IT SUPPORT ALL REQUIRED FUNCTIONS?
  4939	004652'02  436 01 0 05 004650*		IORM T1,MCBDTE(Q1)	;REMEMBER NOT AN MCB
  4940	004653'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,BADSTR)		;GET ITS REQUIRED FUNCS
  4941	004654'02  254 00 0 00 004741'
  4942	004655'02  134 02 0 15 000002 
  4943	004656'02  602 02 0 00 000001 		TXNE T2,VERIF		;WANT SECURITY MESSAGE?
  4944	004657'02  476 00 0 00 000006 		SETOM Q2		;NOTE VERIFICATION REQUESTED
  4945	004660'02  260 17 0 00 000000#		CALL GETTWO		;GET MAX BLOCK SIZE
  4946	004661'02  254 00 0 00 004741'		 JRST BADSTR		;BAD
  4947	004662'02  202 02 0 15 000017 		MOVEM T2,MSGW1		;SAVE IT
  4948	004663'02  260 17 0 00 000000#		CALL GETTWO		;GET NSP MAX
  4949	004664'02  254 00 0 00 004741'		 JRST BADSTR
  4950	004665'02  313 02 0 15 000017 		CAMLE T2,MSGW1		;VALID?
  4951	004666'02  254 00 0 00 004741'		JRST BADSTR		;NO
  4952	004667'02  275 02 0 00 000030 		SUBI T2,NSPOVR		;YES. ACCOUNT FOR NSP OVERHEAD BYTES
  4953	004670'02  202 02 0 05 000000*		MOVEM T2,NSPMAX(Q1)	;SET UP NSPMAX (MAX USER BYTES IN A SEGMENT)
  4954	004671'02  201 04 0 00 000010 		MOVEI T4,10		;BYTES TO IGNORE
  4955	004672'02  375 00 0 15 000001 	STRMS1:	GETBYM (MSGCNT,MSGBYP,BADSTR)		;GET A BYTE
  4956	004673'02  254 00 0 00 004741'
  4957	004674'02  134 02 0 15 000002 
  4958	004675'02  367 04 0 00 004672'		SOJG T4,STRMS1		;SKIP BYTES
  4959	004676'02  200 03 0 00 000005 		MOVE T3,Q1		;GET PORT
  4960	004677'02  221 03 0 00 000011 		IMULI T3,^D9		;ITSID IS 9 WORDS/PORT
  4961	004700'02  271 03 0 00 000000*		ADDI T3,ITSID		;WHERE TO PUT IS ID
  4962	004701'02  201 04 0 00 000044 		MOVEI T4,^D36
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 113-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  4963	004702'02  260 17 0 00 000000#		CALL GTASCI		;GET IT
  4964	004703'02  254 00 0 00 004741'		 JRST BADSTR
  4965	004704'02  542 05 0 05 004652*		HRRM Q1,MCBDTE(Q1)	;SAVE PORT WE INITED ON
  4966	004705'02  135 01 0 00 010155'		LOAD T1,NAMCN,MCBDTE(Q1) ;GET LENGTH OF ITS NAME
  4967	004706'02  312 01 0 00 002257*		CAME T1,OURCNT		;SAME LENGTH AS OURS ?
  4968	004707'02  254 00 0 00 004723'		JRST STRMS6		;NAMES ARE NOT THE SAME
  4969	004710'02  201 01 0 05 000000 		MOVEI T1,(Q1)		;COPY PORT NUMBER
  4970	004711'02  271 01 0 05 004636*		ADDI T1,ITSNAM(Q1)	;POINT TO PORTS NAME
  4971	004712'02  201 02 0 00 002465*		MOVEI T2,OURNAM		;POINT TO OUR NAME
  4972	004713'02  260 17 0 00 002100*		CALL CMPSTR		;SEE IF SAME NAME
  4973	004714'02  254 00 0 00 004723'		JRST STRMS6		;NAMES ARE NOT THE SAME
  4974	004715'02  332 01 0 00 002267*		SKIPE T1,NSPLPB		;GET PORT FOR LOOPBACK
  4975	004716'02  302 05 0 01 000000 		CAIE Q1,(T1)		;IS THIS PORT INTENDED FOR LOOPBACK ?
  4976	004717'02  254 00 0 00 004741'		JRST BADSTR		;NOT SUPPOSED TO BE IN LOOPBACK
  4977	004720'02  205 16 0 00 400000 		SETONE ND%LPR,NSPLPB	;LOOPBACK NOW RUNNING
  4978	004721'02  436 16 0 00 004715*
  4979	004722'02  254 00 0 00 004727'		JRST STRMS7		;WE ARE NOW IN LOOPBACK MODE
  4980
  4981	004723'02  336 01 0 00 004721*	STRMS6:	SKIPN T1,NSPLPB		;GET PORT FOR LOOPBACK
  4982	004724'02  254 00 0 00 004727'		JRST STRMS7		;NO PORT SCHEDULED FOR LOOPBACK
  4983	004725'02  306 05 0 01 000000 		CAIN Q1,(T1)		;IS THIS PORT SCHEDULED FOR LOOPBACK ?
  4984	004726'02  254 00 0 00 004741'		JRST BADSTR		;FLUSH THE PORT
  4985	004727'02  205 16 0 00 400000 	STRMS7:	SETONE INIRCV,MCBDTE(Q1) ;NOTE INIT MSG RECEIVED
  4986	004730'02  436 16 0 05 004704*
  4987						JUMPN Q2,[
  4988							JE INISNT,MCBDTE(Q1),[
  4989								SETONE REQVER,MCBDTE(Q1)
  4990								JRST .+1]
  4991							MOVE T1,Q1	;VERIFICATION WANTED, GET PORT NUMBER
  4992							CALL NODVER	;SEND VERIFICATION MESSAGE
  4993	004731'02  326 06 0 00 010161'			JRST .+1 ]	;DONE, CONTINUE
  4994	004732'02  201 01 0 05 000000 		MOVEI T1,(Q1)		;GET PORT
  4995	004733'02  271 01 0 05 004711*		ADDI T1,ITSNAM(Q1)	;POINT TO NAME FOR NEIGHBOR(2 WDS / PORT)
  4996	004734'02  201 02 0 00 000000 		MOVX T2,.NDSON		;STATE IS ON
  4997	004735'02  400 03 0 00 000000 		SETZ T3,		;NO NEIGHBOR NODE
  4998	004736'02  260 17 0 00 000765'		CALL ADDINT		;ADD NODE TO TABLE OF KNOWN NODES
  4999						 BUG(NSPSTR)
  5000						  ;BUG type:    BUGINF, SOFT
  5001						  ;BUG message: STRMSG - Could not add node to known node table
  5002						       SALL
  5003	004737'02  256 00 0 00 010167'
  5004	004740'02  254 00 0 00 005242'		JRST CIDON		;AND GO TO IT
  5005
  5006	004741'02  260 17 0 00 004744'	BADSTR:	CALL PROOFF		;TURN OFF FE
  5007						BUG (ILLSTR,<<Q1,DTE>>)
  5008						  ;BUG type:    BUGINF, SOFT
  5009						  ;BUG message: NSPTSK-ILLEGAL INIT MESSAGE
  5010						       SALL
  5011	004742'02  256 00 0 00 010171'
  5012	004743'02  254 00 0 00 005242'		JRST BADMSG		;DON'T INIT
  5013
  5014
  5015
  5016
  5017
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 113-2
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5018					;ROUTINE USED BY STRMSG TO TURN OFF AN MCB IF NODE INIT
  5019					;FAILS
  5020
  5021	004744'02  200 01 0 15 000005 	PROOFF:	MOVE T1,MSGBLK		;GET MESSAGE
  5022	004745'02  135 03 0 00 010131'		LOAD T3,MSPRT,(T1)	;GET PORT I.D.
  5023	004746'02  201 02 0 00 000003 		MOVEI T2,T3		;POINT TO ARG BLOCK
  5024	004747'02  201 01 0 00 000005 		MOVEI T1,.BTTPR		;TURN OFF PROTOCOL
  5025	004750'02  104 00 0 00 000562 		BOOT			;DO IT
  5026	004751'02  320 16 0 00 004752'		 ERJMP .+1		;?
  5027	004752'02  263 17 0 00 000000 		RET			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 114
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5028
  5029					;ROUTINE USED TO SHUT ALL LINKS TO AN MCB THAT HAS DIED.
  5030					;ACCEPTS:	T1/ PORT NUMBER
  5031
  5032	004753'02  331 00 0 01 004730*	DEDMCB::SKIPL MCBDTE(T1)	;WAS THAT OURS
  5033	004754'02  263 17 0 00 000000 		RET			;NO
  5034	004755'02  331 00 0 00 000001 		SKIPL T1		;IS PORT NUMBER OUT OF RANGE
  5035	004756'02  301 01 0 00 002272*		CAIL T1,DCN
  5036						JRST [	BUG (NSPBPN,<<T1,BADDTE>>)
  5037						  ;BUG type:    BUGCHK, SOFT
  5038						  ;BUG message: BAD NSP PORT NUMBER
  5039						       SALL
  5040	004757'02  254 00 0 00 010177'			RET]
  5041	004760'02  200 01 0 01 001716*		MOVE T1,BITS(T1)	;GET THE PROPER BIT NUMBER
  5042	004761'02  436 01 0 00 004452*		IORM T1,NSPMCB		;AND SET IT. THIS WILL WAKE NSP BCKGRND TASK
  5043	004762'02  263 17 0 00 000000 		RET
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 115
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5044					;ROUTINE TO CLOSE ALL LINKS ON ALL DEAD MCB'S
  5045
  5046	004763'02  265 16 0 00 004435*	MCBDED:	TRVAR <WAITER,DEDPRT,<DEDDUM,14>,MSGW1>
  5047	004764'02  000017  000017
  5048	004765'02  332 01 0 00 004761*	MCBDE1:	SKIPE T1,NSPMCB		;GET VECTOR OF DEAD MCB'S
  5049	004766'02  243 01 0 00 004770'		JFFO T1,GOTMCB		;IS THERE ANY MORE WORK
  5050	004767'02  263 17 0 00 000000 		RET			;NO - ALL DONE
  5051	004770'02  200 01 0 02 004760*	GOTMCB:	MOVE T1,BITS(T2)	;CLEAR BIT WE'RE WORKING ON
  5052	004771'02  412 01 0 00 004765*		ANDCAM T1,NSPMCB	;AND SAVE
  5053	004772'02  202 02 0 15 000002 		MOVEM T2,DEDPRT		;SAVE PORT
  5054	004773'02  205 16 0 00 430000 		SETZRO <INISNT,INIRCV,REQVER>,MCBDTE(T2)
  5055	004774'02  412 16 0 02 004753*
  5056	004775'02  201 01 0 02 004733*		MOVEI T1,ITSNAM(T2)	;FORM ADDRESS OF NODE NAME OF
  5057	004776'02  270 01 0 15 000002 		ADD T1,DEDPRT		;  CRASHED DN20
  5058	004777'02  505 01 0 00 440700 		HRLI T1,(POINT 7,)	;FORM POINTER TO NAME
  5059	005000'02  201 02 0 00 000001 		MOVX T2,.NDSOF		;NODE STATE IS NOW OFF
  5060	005001'02  400 03 0 00 000000 		SETZ T3,		;SHOW NO NEIGHBOR NODE
  5061	005002'02  260 17 0 00 000765'		CALL ADDINT		;REMOVE NODE FROM KNOWN NODE TABLE
  5062	005003'02  255 00 0 00 000000 		 JFCL			;FAILED, NOT IMPORTANT.
  5063	005004'02  200 02 0 15 000002 		MOVE T2,DEDPRT		;GET PORT NUMBER
  5064	005005'02  402 00 0 02 004775*		SETZM ITSNAM(T2)	;CLEAR NAME
  5065	005006'02  402 00 0 02 000000#		SETZM ITSNAM+1(T2)	; ENTRY
  5066	005007'02  201 02 0 00 000047 		MOVEI T2,.DCX39		;GET ERROR
  5067	005010'02  202 02 0 15 000017 		MOVEM T2,MSGW1		;SAVE REASON
  5068	005011'02  260 17 0 00 000000#	DEDMC1:	LLLOCK			;LOCK TREE
  5069	005012'02  200 01 0 00 010201'		MOVE T1,[DEDCOR]	;COROUTINE
  5070	005013'02  476 00 0 00 000002 		SETOM T2		;ALL LINKS
  5071	005014'02  260 17 0 00 001176'		CALL OBJSRC
  5072						 JRST [	LLLULK		;UNLOCK THE TREE
  5073	005015'02  254 00 0 00 010202'			JRST  MCBDE1]	;SEE IF ANY MORE MCB'S
  5074	005016'02  336 01 0 15 000001 		SKIPN T1,WAITER		;IS WAIT TEST IS ZERO THEN WE AREN'T DONE
  5075	005017'02  254 00 0 00 005011'		JRST DEDMC1		;YES - START AT TOP OF TREE AGAIN
  5076	005020'02  265 16 0 00 000000*		MDISMS			;NO - WAIT FOR LINK
  5077	005021'02  254 00 0 00 005011'		JRST DEDMC1		;AND PROCEED
  5078
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 116
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5079					;COROUTINE TO DO THE WORK FOR MCBDED
  5080
  5081	005022'02  265 16 0 00 002675*	DEDCOR:	SAVET
  5082	005023'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET THE LINK'S STATE
  5083	005024'02  307 02 0 00 000001 		CAIG T2,LLSLIS		;IS IT LISTENING?
  5084	005025'02  263 17 0 00 000000 		RET			;YES, NO CLEANUP NEEDED
  5085	005026'02  200 16 0 01 000002 		JN LLLOC,(T1),R		;IF LOCAL, NOTHING TO DO
  5086	005027'02  603 16 0 00 200000 
  5087	005030'02  254 00 0 00 003465*
  5088	005031'02  200 16 0 01 000000 		JN LLDED,(T1),R		;IF ALREADY PROCESSED, NOTHING TO DO
  5089	005032'02  321 16 0 00 005030*
  5090	005033'02  135 02 0 00 007610'		LOAD T2,LLPRT,(T1)	;GET THE LNK'S PORT NUMBER
  5091	005034'02  312 02 0 15 000002 		CAME T2,DEDPRT		;THE DEAD ONE?
  5092	005035'02  263 17 0 00 000000 		RET			;NO, ALL DONE
  5093	005036'02  260 17 0 00 000000#		CALL BLKLOK		;YES. LOCK THE LL BLOCK
  5094						 JRST [	LLLULK		;CAN'T.  UNLOCK TREE
  5095							MOVEM T1,WAITER	;STORE WAIT
  5096	005037'02  254 00 0 00 010204'			RETSKP]		;AND STOP NOW
  5097	005040'02  260 17 0 00 000000#		LLLULK			;UNLOCK THE TREE
  5098	005041'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET STATE AGAIN
  5099	005042'02  205 16 0 00 400000 		SETONE LLDED,(T1)	;INDICATE THIS BLOCK PROCESSED FOR DEAD MCB
  5100	005043'02  436 16 0 01 000000 
  5101	005044'02  307 02 0 00 000007 		CAIG T2,LLSDIR		;NEED TO CHANGE STATE?
  5102						XCT [	CALL RJECT	;YES. FOR CIS
  5103							CALL RJECT1	;FOR CIR
  5104							CALL SHUTLK	;FOR RUNNING
  5105							CALL RJECT1	;FOR DI SENT
  5106							CALL RJECT1	;FOR QUEUED
  5107	005045'02  256 00 0 02 010205'			CALL RJECT1]-2(T2) ;AND, FINALLY, FOR DI REC
  5108	005046'02  402 00 0 15 000001 		SETZM WAITER		;FLAG INDICATES "CONTINUE AT TOP OF TREE"
  5109						JN LLSDE,(T1),[	OKINT	;IF DISASSOCIATED
  5110								CALL DELNOD ;RELEASE NODE
  5111	005047'02  200 16 0 01 000002 				RETSKP]	;NEED TO START AT TOP OF TREE
  5112	005050'02  603 16 0 00 002000 
  5113	005051'02  254 00 0 00 010215'
  5114	005052'02  260 17 0 00 000000#	DEDMC2:	CALL BLKULK		;RELEASE BLOCK AND RETURN
  5115	005053'02  254 00 0 00 004400*		RETSKP			;NEED TO START AT TOP OF TREE
  5116
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 117
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5117
  5118					;ROUTINES TO HANDLE CONTROL MESSAGES
  5119
  5120					;PROCESS A CONNECT-INITIATE
  5121
  5122	005054'02  260 17 0 00 000000#	CIMSG:	CALL GETLLA		;GET LL ADDRESSES
  5123	005055'02  254 00 0 00 005242'		 JRST BADMSG		;BADLY FORMED
  5124	005056'02  332 00 0 15 000004 		SKIPE MSGDST		;IS DEST ADDR 0?
  5125						JRST [	MOVEI T2,.DCX21	;ILLEGAL DEST ADDR
  5126	005057'02  254 00 0 00 010220'			JRST CIDC]	;AND GO BOMB IT OUT
  5127	005060'02  260 17 0 00 006317'		CALL CIPSRV		;GO DO OTHER FIELDS
  5128						 JRST [	MOVEI T2,.DCX35
  5129	005061'02  254 00 0 00 010222'			JRST CIDC]	;AND BOMB IT OUT
  5130	005062'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,INVPRC)		;GET FORMAT OF DEST OBJECT
  5131	005063'02  254 00 0 00 005066'
  5132	005064'02  134 02 0 15 000002 
  5133	005065'02  303 02 0 00 000002 		CAILE T2,OBJTWO		;IS IT A FORMAT WE UNDERSTAND?
  5134					INVPRC:	 JRST [	MOVEI T2,.DCX5
  5135	005066'02  254 00 0 00 010224'			JRST CIDC]	;AND ERROR
  5136	005067'02  200 04 0 00 000002 		MOVE T4,T2		;SAVE OBJECT TYPE
  5137	005070'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,INVPRC)		;GET OBJECT NUMBER
  5138	005071'02  254 00 0 00 005066'
  5139	005072'02  134 02 0 15 000002 
  5140	005073'02  202 02 0 15 000007 		MOVEM T2,MSGOBJ		;SAVE OBJECT #
  5141	005074'02  402 00 0 15 000010 		SETZM MSGDDC		;ASSUME NO DESCRIPTOR
  5142	005075'02  306 04 0 00 000000 		CAIN T4,OBJZRO		;ANY MORE?
  5143	005076'02  254 00 0 00 005105'		JRST DSCNO		;NO
  5144	005077'02  302 04 0 00 000001 		CAIE T4,OBJONE		;A GROUP CODE INCLUDED?
  5145						JRST [	CALL GETTWO	;YES. GET GOUP
  5146							 JRST INVPRC	;INVALID
  5147							CALL GETTWO	;GET USER CODE
  5148							 JRST INVPRC	;INVALID
  5149	005100'02  254 00 0 00 010226'			JRST .+1]	;ALL READY TO GO
  5150	005101'02  201 03 0 15 000010 		MOVEI T3,MSGDDC		;DESCRIPTOR BLOCK
  5151	005102'02  201 04 0 00 000020 		MOVEI T4,MAXDSC
  5152	005103'02  260 17 0 00 000000#		CALL GTASCI		;MOVE DESCRIPTOR STRING
  5153	005104'02  254 00 0 00 005066'		 JRST INVPRC
  5154	005105'02  375 00 0 15 000001 	DSCNO:	GETBYM (MSGCNT,MSGBYP,INVPRC)		;GET SOURCE OBJECT TYPE
  5155	005106'02  254 00 0 00 005066'
  5156	005107'02  134 02 0 15 000002 
  5157	005110'02  303 02 0 00 000002 		CAILE T2,OBJTWO		;VALID?
  5158	005111'02  254 00 0 00 005066'		 JRST INVPRC
  5159	005112'02  200 04 0 00 000002 		MOVE T4,T2		;SAVE IT
  5160	005113'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,INVPRC)		;GET OBJECT #
  5161	005114'02  254 00 0 00 005066'
  5162	005115'02  134 02 0 15 000002 
  5163	005116'02  202 02 0 15 000021 		MOVEM T2,MSGSOB		;SAVE SOURCE OBJECT #
  5164	005117'02  402 00 0 15 000022 		SETZM MSGSDC		;ASSUME NO DESCRIPTOR
  5165	005120'02  402 00 0 15 000027 		SETZM MSGDML		;ASSUME NO GROUP,USER
  5166	005121'02  306 04 0 00 000002 		CAIN T4,OBJTWO		;DOES IT INCLUDE A GROUP?
  5167						JRST [	CALL GETTWO	;YES. GET GROUP
  5168							 JRST INVPRC	;BAD
  5169							HRLM T2,MSGDML	;SAVE IT
  5170							CALL GETTWO	;GET USER
  5171							 JRST INVPRC
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 117-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5172							HRRM T2,MSGDML	;SAVE IT
  5173	005122'02  254 00 0 00 010233'			JRST .+1]	;AND PROCEED
  5174	005123'02  305 04 0 00 000001 		CAIGE T4,OBJONE		;HAVE A DESCRIPTOR?
  5175	005124'02  254 00 0 00 005131'		JRST DSCNO1		;NO. GO FIND MATCH
  5176	005125'02  201 03 0 15 000022 		MOVEI T3,MSGSDC		;MOVE DESCRIPTOR
  5177	005126'02  201 04 0 00 000020 		MOVEI T4,MAXDSC
  5178	005127'02  260 17 0 00 000000#		CALL GTASCI		;GET IT
  5179	005130'02  254 00 0 00 005066'		 JRST INVPRC
  5180						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 118
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5181
  5182					;CIMSG CONTINUED .....
  5183
  5184	005131'02  200 02 0 15 000005 	DSCNO1:	MOVE T2,MSGBLK		;POINT TO MSG BLOCK AGAIN
  5185	005132'02  135 02 0 00 010153'		LOAD T2,MSPRT,(T2)	;GET PORT MESSAGE CAME FROM
  5186	005133'02  200 16 0 02 004774*		TMNE NTSHUT,MCBDTE(T2)		;SHUTTING DOWN?
  5187	005134'02  603 16 0 00 100000 
  5188	005135'02  332 00 0 15 000062 		SKIPE MSGLCL		;YES. IS THIS A FOREIGN HOST?
  5189	005136'02  254 00 0 00 005141'		JRST DSCNO2		;NO. ALLOW IT.
  5190	005137'02  201 02 0 00 000003 		MOVEI T2,.DCX3		;"NODE SHUTTING DOWN"
  5191	005140'02  254 00 0 00 005437'		JRST CIDC		;AND REJECT THE CONNECT
  5192	005141'02  201 01 0 00 005245'	DSCNO2:	MOVEI T1,CICOR		;COROUTINE ADDRESS
  5193	005142'02  201 02 0 00 000001 		MOVEI T2,1		;LOOK FOR LISTENING OBJECT ONLY
  5194	005143'02  260 17 0 00 000000#		LLLOCK			;LOCK THE TREE
  5195	005144'02  260 17 0 00 001176'		CALL OBJSRC		;GO LOOK FOR IT
  5196						 JRST [	LLLULK		;RELEASE TREE
  5197	005145'02  254 00 0 00 010242'			JRST CIDC]
  5198	005146'02  260 17 0 00 000000#		CALL BLKLOK		;LOCK THE BLOCK
  5199						 JRST [	LLLULK		;COULDN'T.
  5200							MDISMS		;WAIT HERE
  5201	005147'02  254 00 0 00 010244'			JRST DSCNO2]	;AND TRY AGAIN
  5202	005150'02  260 17 0 00 000000#		LLLULK			;AND FREE THE TREE
  5203	005151'02  201 02 0 00 000003 		MOVEI T2,LLSCIR		;HAVE A CONNECT-INITIATE
  5204	005152'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;NOTE STATE CHANGE
  5205	005153'02  202 01 0 15 000006 		MOVEM T1,MSGLLB		;SAVE BLOCK
  5206	005154'02  200 02 0 15 000007 		MOVE T2,MSGOBJ		;GET OBJECT USED IN CONNECT
  5207	005155'02  542 02 0 01 000033 		STOR T2,LLSOB,(T1)	;SAVE IT
  5208	005156'02  200 02 0 15 000027 		MOVE T2,MSGDML		;GET GROUP,USER
  5209	005157'02  202 02 0 01 000040 		MOVEM T2,LLUSGP(T1)	;SAVE IN LL BLOCK
  5210	005160'02  332 00 0 15 000062 		SKIPE MSGLCL		;LOCAL CONNECTION?
  5211						JRST [SETONE LLLOC,(T1)	;YES, NOTE THIS IS A LOCAL LINK
  5212	005161'02  254 00 0 00 010247'		      JRST HOSTNL]	;LEAVE NULL HOST NAME
  5213	005162'02  201 02 0 15 000015 		MOVEI T2,MSGHSN		;GET POINTER TO HOST NAME
  5214	005163'02  200 01 0 01 000014 		LOAD T1,LLHST,(T1)	;GET OUT HOST STRING
  5215	005164'02  476 00 0 00 000003 		SETOM T3		;NO COUNT
  5216	005165'02  260 17 0 00 001260'		CALL MOVSTR		;MOVE THE STRING
  5217	005166'02  200 01 0 15 000006 		MOVE T1,MSGLLB		;GET BACK BLOCK ADDRESS
  5218	005167'02  200 02 0 15 000005 		MOVE T2,MSGBLK		;GET MESSAGE
  5219	005170'02  135 02 0 00 010153'		LOAD T2,MSPRT,(T2)	;GET PORT #
  5220	005171'02  137 02 0 00 007610'		STOR T2,LLPRT,(T1)	;SAVE IN LL BLOCK
  5221	005172'02  260 17 0 00 005260'	HOSTNL:	CALL FILLIN		;GO FILL IN COMMON QUANTITIES
  5222	005173'02  200 02 0 15 000021 		MOVE T2,MSGSOB		;GET SOURCE OBJECT
  5223	005174'02  137 02 0 00 007723'		STOR T2,LLFNM,(T1)	;SAVE IT
  5224	005175'02  135 01 0 00 007471'		LOAD T1,LLFDS,(T1)	;GET DESCRIPTOR STRING
  5225	005176'02  336 02 0 15 000022 		SKIPN T2,MSGSDC		;HAVE A DESCRIPTOR?
  5226						JRST [	CALL RELBLK	;FREE THE BLOCK
  5227							MOVE T1,MSGLLB	;GET BACK LL BLOCK
  5228							SETZRO LLFDS,(T1) ;CLEAR IT
  5229	005177'02  254 00 0 00 010252'			JRST DSCMOV]
  5230	005200'02  476 00 0 00 000003 		SETOM T3		;UNTIL A NULL
  5231	005201'02  201 02 0 15 000022 		MOVEI T2,MSGSDC		;GET POINTER TO STRING
  5232	005202'02  260 17 0 00 001260'		CALL MOVSTR		;MOVE IT
  5233	005203'02  200 01 0 15 000006 		MOVE T1,MSGLLB		;GET BACK BLOCK ADDRESS
  5234						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 119
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5235
  5236					;CIMSG CONTINUED. FOUND BLOCK. GET OPTIONAL ACCESS CONTROL STUFF
  5237
  5238	005204'02  375 00 0 15 000001 	DSCMOV:	GETBYM (MSGCNT,MSGBYP,NODATA)		;GET MENU BYTE
  5239	005205'02  254 00 0 00 005237'
  5240	005206'02  134 02 0 15 000002 
  5241	005207'02  202 02 0 15 000017 		MOVEM T2,MSGW1		;SAVE MENU
  5242	005210'02  606 02 0 00 000001 		TRNN T2,1		;HAVE ACCESS CONTROL?
  5243	005211'02  254 00 0 00 005227'		JRST NOUSER		;NO. CHECK FOR OPDATA
  5244	005212'02  200 03 0 01 000035 		LOAD T3,LLUSR,(T1)	;WHERE TO PUT USER DATA
  5245	005213'02  201 04 0 00 000020 		MOVEI T4,MAXDSC
  5246	005214'02  260 17 0 00 000000#		CALL GTASCI		;GET IT
  5247	005215'02  254 00 0 00 005455'		 JRST BADUDT		;BADLY FORMED
  5248	005216'02  135 03 0 00 007472'		LOAD T3,LLPSW,(T1)	;WHERE TO PUT PASSWORD
  5249	005217'02  201 04 0 00 000010 		MOVEI T4,^D8		;MAX SIZE OF PASSWORD
  5250	005220'02  260 17 0 00 000000#		CALL GTBNRY		;GET OCTETS
  5251	005221'02  254 00 0 00 005455'		 JRST BADUDT		;BADLY FORMED
  5252	005222'02  137 02 0 00 007652'		STOR T2,LLPCT,(T1)	;SAVE COUNT
  5253	005223'02  200 03 0 01 000036 		LOAD T3,LLACT,(T1)	;GET ACCOUNT DATA
  5254	005224'02  201 04 0 00 000020 		MOVEI T4,MAXDSC
  5255	005225'02  260 17 0 00 000000#		CALL GTASCI		;GET IT
  5256	005226'02  254 00 0 00 005455'		 JRST BADUDT		;BADLY FORMED
  5257	005227'02  200 02 0 15 000017 	NOUSER:	MOVE T2,MSGW1		;GET BACK MENU
  5258	005230'02  606 02 0 00 000002 		TRNN T2,2		;HAVE OPTDATA?
  5259	005231'02  254 00 0 00 005237'		JRST NODATA		;NO. ALL DONE
  5260	005232'02  135 03 0 00 007421'		LOAD T3,LLOPT,(T1)	;WHERE TO PUT IT
  5261	005233'02  201 04 0 00 000020 		MOVEI T4,MAXDSC
  5262	005234'02  260 17 0 00 000000#		CALL GTBNRY		;GET OCTETS
  5263	005235'02  254 00 0 00 005455'		 JRST BADUDT		;BADLY FORMED
  5264	005236'02  137 02 0 00 007655'		STOR T2,LLUCT,(T1)	;SAVE COUNT
  5265	005237'02  260 17 0 00 005331'	NODATA:	CALL INTTST		;GO SEE IF THIS IS CONNECTED TO AN INTERNAL LINK
  5266	005240'02  260 17 0 00 005300'	DSCMV1:	CALL CONINT		;GIVE INTERRUPT
  5267	005241'02  260 17 0 00 000000#		CALL BLKULK		;RELEASE THE BLOCK
  5268	005242'02			BADMSG:				;IGNORE THE MESSAGE
  5269	005242'02  200 01 0 15 000005 	CIDON:	MOVE T1,MSGBLK		;GET BACK MESSAGE BLOCK
  5270	005243'02  260 17 0 00 004200*		CALL RELRES		;FREE THE BLOCK
  5271	005244'02  263 17 0 00 000000 		RET			;RETURN TO BACKGROUND TASK DISPATCHER
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 120
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5272					;COROUTINE OF CIMSG TO FIND THE PROPER LISTENING OBJECT
  5273
  5274	005245'02  265 16 0 00 005022*	CICOR:	SAVET			;SAVE ALL TEMPS
  5275	005246'02  336 02 0 15 000007 		SKIPN T2,MSGOBJ		;WANT TASK NAME MATCH?
  5276						JRST [	LOAD T2,LLTSK,(T1) ;YES. PICK UP STRING
  5277	005247'02  254 00 0 00 010257'			JRST CICOR1]	;AND GO TRY
  5278	005250'02  554 16 0 01 000033 		OPSTR <CAME T2,>,LLNAM,(T1) ;IS THIS THE CORRECT OBJECT?
  5279	005251'02  312 02 0 00 000016 
  5280	005252'02  263 17 0 00 000000 		RET			;NO.
  5281	005253'02  200 02 0 01 000034 		LOAD T2,LLDSC,(T1)	;YES. CHECK DESCRIPTOR STRINGS
  5282	005254'02  201 01 0 15 000010 	CICOR1:	MOVEI T1,MSGDDC		;GET REQUESTED DESCRIPTOR
  5283	005255'02  260 17 0 00 004713*		CALL CMPSTR		;GO COMPARE STRINGS
  5284	005256'02  263 17 0 00 000000 		 RET			;NOT THE ONE
  5285	005257'02  254 00 0 00 005053*		RETSKP			;FOUND IT!!!!
  5286
  5287					;COMMON ROUTINE TO FETCH LL ADDRESSES FROM MESSAGES AND STORE IN
  5288					;PROPER TRVAR'S
  5289
  5290						RESCD			;USED BY INT LEVEL
  5291	000677'01  260 17 0 00 000706'	GETLLA:	CALL GETTWO		;GET DEST LL
  5292	000700'01  263 17 0 00 000000 		 RET			;BADLY FORMED
  5293	000701'01  202 02 0 15 000004 		MOVEM T2,MSGDST		;SAVE IT
  5294	000702'01  260 17 0 00 000706'		CALL GETTWO		;GET SOURCE
  5295	000703'01  263 17 0 00 000000 		 RET			;BADLY FORMED
  5296	000704'01  202 02 0 15 000003 		MOVEM T2,MSGSRC
  5297	000705'01  254 00 0 00 000676*		RETSKP			;GO THEM
  5298
  5299					;COMMON ROUTINE TO FILL IN LL BLOCK AFTER SUCCESSFUL CONNECTION
  5300
  5301						SWAPCD			;IS SWAPPABLE
  5302	005260'02  200 02 0 15 000017 	FILLIN:	MOVE T2,MSGW1		;GET FC OPTION
  5303	005261'02  137 02 0 00 010261'		STOR T2,LLMFC,(T1)	;STORE IT
  5304	005262'02  200 02 0 15 000020 		MOVE T2,MSGW2		;GET SEGSIZE
  5305	005263'02  200 03 0 15 000005 		MOVE T3,MSGBLK		;GET MESSAGE ADDRESS
  5306	005264'02  135 03 0 00 010144'		LOAD T3,MSMFL,(T3)	;GET MESSAGE FLAGS
  5307	005265'02  302 03 0 00 000030 		CAIE T3,CIMMFL		;A CI?
  5308						JRST [	LOAD T4,LLSWG,(T1)	;NO, A CC.  GET SEGSIZ OF CI
  5309							CAMLE T2,T4		;OUR'S LESS?
  5310							MOVE T2,T4		;NO, USE SEGSIZ OF CI
  5311							TMNE LLLOC,(T1)		;LOCAL CONNECTION?
  5312							JRST FILLI2		;YES, NO FURTHER CHECK NEEDED
  5313							LOAD T4,LLPRT,(T1)	;GET PORT NUMBER
  5314							CAMLE T2,NSPMAX(T4)	;OUR'S LESS THAN PORT'S?
  5315							MOVE T2,NSPMAX(T4)	;NO, USE PORT'S SEGSIZ
  5316	005266'02  254 00 0 00 010262'			JRST FILLI2]
  5317	005267'02  135 03 0 00 007414'	FILLI2:	LOAD T3,LLBSZ,(T1)	;GET BYTE SIZE
  5318	005270'02  302 03 0 00 000044 		CAIE T3,44		;WORD MODE?
  5319	005271'02  254 00 0 00 005274'		JRST FILLI1		;NO.
  5320	005272'02  231 02 0 00 000011 		IDIVI T2,11		;YES. MAKE IT EVEN # OF WORDS THEN
  5321	005273'02  221 02 0 00 000011 		IMULI T2,11		;""
  5322	005274'02  137 02 0 00 007415'	FILLI1:	STOR T2,LLSWG,(T1)	;SAVE IT
  5323	005275'02  200 02 0 15 000003 		MOVE T2,MSGSRC		;GET FOREIGN LINK I.D.
  5324	005276'02  137 02 0 00 010274'		STOR T2,LLHLK,(T1)	;SAVE IT
  5325	005277'02  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 121
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5326					;COMMON ROUTINE TO GEN CONNECT INTERRUPT
  5327
  5328	005300'02  265 16 0 00 005245*	CONINT:	SAVET			;SAVE TEMPS
  5329	005301'02  265 16 0 00 004465*		STKVAR <CNTLLB,CNTSTS>
  5330	005302'02  000002  000002
  5331	005303'02  202 01 0 17 777776 		MOVEM T1,CNTLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  5332	005304'02  200 16 0 01 000002 		JN LLINT,(T1),CONIN1	;IF INTERNAL LINK GO NOTIFY DRIVER OF CONNECT
  5333	005305'02  603 16 0 00 004000 
  5334	005306'02  254 00 0 00 005315'
  5335	005307'02  554 02 0 01 000003 		LOAD T2,LLFRK,(T1)	;GET OWNING FORK
  5336	005310'02  135 16 0 00 007656'		OPSTR <SKIPN T1,>,LLPIC,(T1) ;HAVE A CONNECT PI?
  5337	005311'02  336 01 0 00 000016 
  5338	005312'02  263 17 0 00 000000 		RET			;NONE TO DO
  5339	005313'02  370 00 0 00 000001 		SOS T1			;GET PROPER CHANNEL
  5340	005314'02  254 00 0 00 002671*		CALLRET PSIRQ		;GEN INTERRUPT
  5341
  5342					; HERE FOR INTERNAL LINKS
  5343
  5344	005315'02  260 17 0 00 002504'	CONIN1:	CALL RDSTS		;GO GET LINK STATUS
  5345	005316'02  202 03 0 17 777775 		MOVEM T3,CNTSTS		;SAVE STATUS
  5346	005317'02  550 01 0 17 777775 		HRRZ T1,CNTSTS		;GET NSP ERROR CODE
  5347	005320'02  260 17 0 00 004371'		CALL NSPERR		;CONVERT TO TOPS20 ERROR CODE
  5348	005321'02  255 00 0 00 000000 		 JFCL			;USE TRANSLATION ROUTINE'S ERROR CODE
  5349	005322'02  540 02 0 00 000001 		HRR T2,T1		;GET TOPS20 ERROR CODE
  5350	005323'02  500 02 0 17 777775 		HLL T2,CNTSTS		;GET STATUS FLAGS
  5351	005324'02  200 01 0 17 777776 		MOVE T1,CNTLLB		;RESTORE LOGICAL LINK BLOCK ADDRESS
  5352	005325'02  200 04 0 01 000034 		LOAD T4,LLVEC,(T1)	;GET ADDRESS OF DRIVER FUNCTION VECTOR
  5353	005326'02  200 01 0 01 000033 		LOAD T1,LLDRV,(T1)	;GET DRIVER CORRELATION CODE
  5354	005327'02  260 17 1 04 000001 		CALL @.NSCND(T4)	;NOTIFY DRIVER OF CONNECTION
  5355	005330'02  263 17 0 00 000000 		RET			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 122
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5356					;INTTST - ROUTINE TO DETERMINE IF CONNECTED TO AN INTERNAL LINK
  5357					;
  5358					;ACCEPTS IN TRVARS MSGLCL/ LOCAL-FOREIGN FLAG
  5359					;		   MSGSRC/ LINK ID OF SOURCE OF CI MESSAGE
  5360					;		   MSGLLB/ LOGICAL LINK BLOCK ADDRESS OF DESTINATION LINK
  5361					;		CALL INTTST
  5362					;RETURNS: +1 ALWAYS, WITH LLCIL SET IF CONNECTED TO AN INTERNAL LINK
  5363
  5364	005331'02  265 16 0 00 002777*	INTTST:	ACVAR <W1>
  5365
  5366	005332'02  265 16 0 00 005300*		SAVET			;PRESERVE LOCAL AC'S
  5367	005333'02  336 00 0 15 000062 		SKIPN MSGLCL		;LOCAL CONNECTION ?
  5368	005334'02  263 17 0 00 000000 		RET			;NO, DONE
  5369
  5370					; LOCK SOURCE LOGICAL LINK BLOCK AND SEE IF IT IS AN INTERNAL LINK
  5371
  5372	005335'02  260 17 0 00 000000#	INTT10:	LLLOCK			;LOCK LOGICAL LINK TREE
  5373	005336'02  200 01 0 15 000003 		MOVE T1,MSGSRC		;GET SOURCE LINK ID
  5374	005337'02  476 00 0 00 000002 		SETOM T2		;NO SPECIAL CRITERIA
  5375	005340'02  260 17 0 00 000000#		CALL LLLKUP		;FIND THE LINK ADDRESS
  5376						 JRST [	LLLULK		;FAILED, UNLOCK THE TREE
  5377	005341'02  254 00 0 00 010275'			RET ]		;RETURN, LINK MUST HAVE DISAPPEARED
  5378	005342'02  202 01 0 00 000005 		MOVEM T1,W1		;SAVE LOGICAL LINK BLOCK ADDRESS OF SOURCE
  5379	005343'02  260 17 0 00 000000#		CALL BLKLOK		;LOCK THE SOURCE LINK BLOCK
  5380						 JRST [	LLLULK		;CANNOT LOCK IT, UNLOCK THE TREE
  5381							MDISMS		;WAIT UNTIL AVAILABLE
  5382	005344'02  254 00 0 00 010277'			JRST INTT10 ]	;GO TRY TO LOCK BLOCK AGAIN
  5383	005345'02  260 17 0 00 000000#		LLLULK			;UNLOCK LOGICAL LINK TREE
  5384	005346'02  200 16 0 05 000002 		JE LLINT,(W1),INTT20	;IF SOURCE IS NOT AN INTERNAL LINK, WE ARE DONE
  5385	005347'02  607 16 0 00 004000 
  5386	005350'02  254 00 0 00 005354'
  5387	005351'02  200 04 0 15 000006 		MOVE T4,MSGLLB		;GET LOGICAL LINK BLOCK ADDRESS OF DESTINATION
  5388	005352'02  205 16 0 00 400000 		SETONE LLCIL,(T4)	;NOTE CONNECTED TO AN INTERNAL LINK
  5389	005353'02  436 16 0 04 000001 
  5390
  5391					; HERE WHEN DONE, UNLOCK BLOCK AND RETURN
  5392
  5393	005354'02  200 01 0 00 000005 	INTT20:	MOVE T1,W1		;RESTORE LOGICAL LINK BLOCK ADDRESS
  5394	005355'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK THE BLOCK
  5395	005356'02  263 17 0 00 000000 		RET			;DONE, RETURN
  5396
  5397						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 123
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5398					;PROCESS A CONNECT-CONFIRM
  5399
  5400	005357'02  260 17 0 00 000000#	CCMSG:	CALL GETLLA		;GET LINK ADDRESSES
  5401	005360'02  254 00 0 00 005242'		 JRST BADMSG		;BADLY FORMED
  5402	005361'02  402 00 0 15 000021 		SETZM MSGSOB		;ASSUME WE LIKE SERVICES
  5403	005362'02  260 17 0 00 006317'		CALL CIPSRV		;GET SERVICES INFO
  5404	005363'02  476 00 0 15 000021 		 SETOM MSGSOB		;DIDN'T LIKE IT. REMEMBER THIS
  5405	005364'02  200 01 0 15 000004 	CCMSG1:	MOVE T1,MSGDST		;GET OUR ALLEGED NAME
  5406	005365'02  476 00 0 00 000002 		SETOM T2		;ANY MATCH
  5407	005366'02  260 17 0 00 000000#		LLLOCK			;LOCK THE TREE
  5408	005367'02  260 17 0 00 000000#		CALL LLLKUP		;AND LOOK UP THE BLOCK
  5409						 JRST [	LLLULK		;FREE THE TREE
  5410							MOVEI T2,.DCX41	;NO MATCH
  5411	005370'02  254 00 0 00 010302'			JRST CIDC]	;GO DC THE LINK
  5412	005371'02  202 01 0 15 000006 		MOVEM T1,MSGLLB		;SAVE LINK BLOCK ADR
  5413	005372'02  260 17 0 00 000000#		CALL BLKLOK		;LOCK BLOCK LOCK
  5414						 JRST [	LLLULK		;FREE TREE LOCK
  5415							MDISMS		;WAIT HERE A WHILE
  5416	005373'02  254 00 0 00 010305'			JRST CCMSG1]	;AND TRY AGAIN
  5417	005374'02  260 17 0 00 000000#		LLLULK			;FREE THE TREE
  5418	005375'02  200 16 0 01 000002 		JN LLFOB,(T1),CCJECT	;CAN'T BE AN OBJECT
  5419	005376'02  603 16 0 00 000001 
  5420	005377'02  254 00 0 00 005432'
  5421	005400'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET STATE
  5422	005401'02  254 00 1 02 004302'		JRST @CCREC-1(T2)	;GO DO RIGHT THING
  5423
  5424					;EXPECTING A CC.
  5425
  5426	005402'02  336 00 0 15 000021 	CCGUD:	SKIPN MSGSOB		;DID WE LIKE SERVICES?
  5427	005403'02  254 00 0 00 005411'		JRST CCGUD1		;YES
  5428	005404'02  201 02 0 00 000011 		MOVEI T2,LLSABT		;NEED TO CLOSE LINK
  5429	005405'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;SAY LINK IS DEAD
  5430	005406'02  260 17 0 00 005300'		CALL CONINT		;GET AN INTERRUPT
  5431	005407'02  201 02 0 00 000043 		MOVEI T2,.DCX35		;SERVICES MISMATCH
  5432	005410'02  254 00 0 00 005433'		JRST CCJEC1		;AND SEND A DC
  5433	005411'02  337 00 0 15 000003 	CCGUD1:	SKIPG MSGSRC		;A VALID SOURCE I.D.?
  5434						JRST [	SETZM MSGW1	;NO.
  5435							CALL RJECT	;SHUT DOWN LINK
  5436	005412'02  254 00 0 00 010310'			JRST CCDON]	;AND GIVE UP
  5437	005413'02  260 17 0 00 005260'		CALL FILLIN		;FILL IN NECESSARY INFORMATION
  5438	005414'02  260 17 0 00 006306'		CALL TURNON		;GO SEND INTIAL LS MESSAGE
  5439						 JRST [	EXCH T1,MSGLLB	;SAVE SCHED TEST, GET LINK BLOCK ADR
  5440							CALL BLKULK	;FREE THIS BLOCK
  5441							MOVE T1,MSGLLB	;RESTORE SCHED TEST
  5442							CALL GENWAT	;WAIT HERE FOR A WHILE
  5443							MDISMS		;UNTIL FREE SPACE IS AVAILABLE
  5444	005415'02  254 00 0 00 010313'			JRST CCMSG1]	;AND DO IT AGAIN
  5445	005416'02  201 02 0 00 000004 		MOVEI T2,LLSRUN		;NOW WE ARE RUNNING
  5446	005417'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;SAY SO
  5447	005420'02  205 16 0 00 100000 		SETONE LLLWC,(T1)	;NOTE THAT A GOOD CC WAS RECEIVED
  5448	005421'02  436 16 0 01 000001 
  5449	005422'02  135 03 0 00 007421'		LOAD T3,LLOPT,(T1)	;SEE IF ANY OPTDATA
  5450	005423'02  201 04 0 00 000020 		MOVEI T4,MAXDSC
  5451	005424'02  260 17 0 00 000000#		CALL GTBNRY
  5452						 JRST [	JUMPE T2,CCGUD2	;IF NO OPTDATA, OK
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 123-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5453	005425'02  254 00 0 00 010321'			JRST BADUDT]	;BAD MESSAGE
  5454	005426'02  137 02 0 00 007655'		STOR T2,LLUCT,(T1)	;YES. SAVE COUNT
  5455	005427'02  201 02 0 00 000001 	CCGUD2:	MOVEI T2,1		;INITIAL COUNT FOR LS/INT
  5456	005430'02  137 02 0 00 010050'		STOR T2,LLMIC,(T1)	;STASH IT
  5457	005431'02  254 00 0 00 005240'		JRST DSCMV1		;AND GO INTERRUPT, ETC.
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 124
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5458
  5459					;CCMSG CONTINUED...
  5460					;DON'T LIKE IT
  5461
  5462	005432'02  201 02 0 00 000051 	CCJECT:	MOVEI T2,.DCX41		;ILLEGAL DEST ADDRESS
  5463	005433'02  260 17 0 00 000000#	CCJEC1:	CALL BLKULK		;FREE THE BLOCK
  5464	005434'02  254 00 0 00 005437'		JRST CIDC		;AND SEND DC
  5465
  5466	005435'02  260 17 0 00 000000#	CCDON:	CALL BLKULK		;FREE THE BLOCK
  5467	005436'02  254 00 0 00 005242'		JRST CIDON		;IGNORE THE MESSAGE
  5468
  5469					;ROUTINES TO SEND DC'S FOR CONNECT ERRORS
  5470
  5471	005437'02  332 00 0 15 000062 	CIDC:	SKIPE MSGLCL		;IS IT LOCAL?
  5472						JRST [SKIPL NSPLPB	;YES, IS THERE A RUNNING LOOPBACK LINE?
  5473						      JRST CIDCLC	;NO
  5474	005440'02  254 00 0 00 010323'		      JRST .+1]		;YES
  5475	005441'02  202 02 0 15 000017 		MOVEM T2,MSGW1		;SAVE CODE
  5476	005442'02  201 01 0 15 000027 	CIDCT:	MOVEI T1,MSGDML		;USE DUMMY LINK BLOCK
  5477	005443'02  201 03 0 00 000110 		MOVEI T3,CNMRFL+CNMDC	;FLAGS
  5478	005444'02  200 02 0 15 000017 		MOVE T2,MSGW1		;GET REASON
  5479	005445'02  260 17 0 00 005464'		CALL SNDDC		;BUILD THE DC MESSAGE
  5480						 JRST [	MDISMS		;WAIT A WHILE
  5481	005446'02  254 00 0 00 010326'			JRST CIDCT]	;AND TRY AGAIN
  5482	005447'02  260 17 0 00 000000#		CALL SNDCTL		;SEND IT
  5483	005450'02  254 00 0 00 005242'		JRST CIDON		;AND DONE
  5484
  5485	005451'02  200 01 0 15 000004 	CIDCLC:	MOVE T1,MSGDST
  5486	005452'02  250 01 0 15 000003 		EXCH T1,MSGSRC		;EXCHANGE SOURCE AND DEST
  5487	005453'02  202 01 0 15 000004 		MOVEM T1,MSGDST		;""
  5488	005454'02  254 00 0 00 005712'		JRST DCMSG4		;AND GO DO DC
  5489
  5490					;ROUTINE TO HANDLE ACCESS INFORMATION ERRORS
  5491
  5492	005455'02  260 17 0 00 005300'	BADUDT:	CALL CONINT		;INT PROCESS
  5493	005456'02  201 02 0 00 000053 		MOVEI T2,.DCX43		;SAY BAD OPTDATA
  5494	005457'02  137 02 0 00 007636'		STOR T2,LLRSN,(T1)	;AND STASH IT
  5495	005460'02  201 03 0 00 000011 		MOVEI T3,LLSABT		;NEW STATE
  5496	005461'02  137 03 0 00 007375'		STOR T3,LLSTA,(T1)
  5497	005462'02  260 17 0 00 000000#		CALL BLKULK		;FREE BLOCK
  5498	005463'02  254 00 0 00 005437'		JRST CIDC		;AND SEND DC
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 125
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5499
  5500					;ROUTINE TO BUILD A DI OR DC MESSAGE FOR NSPTSK
  5501					;ACCEPTS:	T1/ ADDRESS OF DUMMY LL BLOCK
  5502					;		T2/ REASON
  5503					;		T3/ FLAGS
  5504					;RETURNS:	+1 FAILED. NEED TO BLOCK
  5505					;		+2 ALL SENT
  5506
  5507	005464'02  332 04 0 15 000015 	SNDDC:	SKIPE T4,MSGHSN		;ANY HOST NAME ?
  5508	005465'02  201 04 0 15 000015 		MOVEI T4,MSGHSN		;YES, GET ADDRESS OF HOST NAME
  5509	005466'02  202 04 0 01 000014 		STOR T4,LLHST,(T1)	;STORE IT
  5510	005467'02  200 04 0 15 000003 		MOVE T4,MSGSRC		;GET SOURCE NAME
  5511	005470'02  137 04 0 00 010274'		STOR T4,LLHLK,(T1)	;SAVE AS REMOTE NAME
  5512	005471'02  200 04 0 15 000004 		MOVE T4,MSGDST		;GET OUR NAME
  5513	005472'02  542 04 0 01 000002 		STOR T4,LLLNK,(T1)	;SAVE IT
  5514	005473'02  200 04 0 00 000003 		MOVE T4,T3		;MOVE FLAGS
  5515	005474'02  200 03 0 15 000005 		MOVE T3,MSGBLK		;GET MESSAGE
  5516	005475'02  135 03 0 00 010330'		LOAD T3,MSPRT,(T3)	;GET PORT
  5517	005476'02  137 03 0 00 007610'		STOR T3,LLPRT,(T1)	;SAVE IN LL BLOCK
  5518	005477'02  402 00 0 00 000003 		SETZM T3		;NO USER DATA
  5519	005500'02  260 17 0 00 003374'		CALL SNDDI		;BUILD THE MESSAGE
  5520						 JRST [	TQO <BLKF>	;NOTE BLOCK NEEDED
  5521	005501'02  254 00 0 00 007251'			RET ]		;AND RETURN
  5522	005502'02  254 00 0 00 005257*		RETSKP			;DONE, RETURN SUCCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 126
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5523					;RECEIVED AN ACK
  5524
  5525	005503'02  301 04 0 00 000002 	ACKMSG:	CAIL T4,2		;VALID SUBTYPE?
  5526	005504'02  254 00 0 00 005242'		JRST BADMSG		;NO, IGNORE IT
  5527	005505'02  260 17 0 00 000000#		CALL GETLLA		;GET LINK ADDRESSES
  5528	005506'02  254 00 0 00 005242'		 JRST BADMSG		;BADLY FORMED
  5529	005507'02  200 01 0 15 000005 		MOVE T1,MSGBLK		;GET BLOCK ADDRESS
  5530	005510'02  200 03 0 15 000002 		MOVE T3,MSGBYP		;GET CURRENT POINTER
  5531	005511'02  202 03 0 01 000003 		MOVEM T3,MSBPTR(T1)	;SAVE POINTER
  5532	005512'02  200 03 0 15 000001 		MOVE T3,MSGCNT		;GET CURRENT COUNT
  5533	005513'02  137 03 0 00 010331'		STOR T3,MSDTC,(T1)	;SAVE IT
  5534	005514'02  260 17 0 00 000000#	ACKMS1:	LLLOCK			;LOCK THE TREE
  5535	005515'02  200 01 0 15 000004 		MOVE T1,MSGDST		;GET OUR NAME
  5536	005516'02  200 02 0 15 000003 		MOVE T2,MSGSRC
  5537	005517'02  260 17 0 00 000000#		CALL LLLKUP		;LOOK UP THE NAME
  5538						 JRST [	LLLULK		;NOT FOUND
  5539							MOVEI T2,.DCX41	;INVALID ADDRESS
  5540	005520'02  254 00 0 00 010332'			JRST CIDC]	;SEND A DC TO SHUT OFF THIS NOISE
  5541	005521'02  260 17 0 00 000000#		CALL BLKLOK		;FOUND IT. LOCK IT
  5542						 JRST [	LLLULK		;CAN'T
  5543							MDISMS		;WAIT A WHILE
  5544	005522'02  254 00 0 00 010335'			JRST ACKMS1]	;AND TRY AGAIN
  5545	005523'02  260 17 0 00 000000#		LLLULK
  5546	005524'02  202 01 0 15 000006 		MOVEM T1,MSGLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  5547	005525'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET CURRENT STATE
  5548	005526'02  254 00 1 02 004346'		JRST @ACKSTA-1(T2)	;GO HANDLE IT
  5549
  5550					;IN CIS STATE
  5551
  5552	005527'02  260 17 0 00 000000#	ACKCIS:	CALL GETTWO		;GET ACK VALUE
  5553	005530'02  254 00 0 00 005542'		 JRST ACKINV		;NOT VALID
  5554	005531'02  602 02 0 00 010000 		TXNE T2,ACKBIT		;ACK OR NACK?
  5555	005532'02  254 00 0 00 005435'		JRST CCDON		;A NACK. IGNORE IT
  5556	005533'02  326 02 0 00 005542'		JUMPN T2,ACKINV		;AN ACK. MUST BE FOR SEG # 0
  5557	005534'02  200 02 0 15 000005 		MOVE T2,MSGBLK		;GET FLAGS
  5558	005535'02  135 02 0 00 010104'		LOAD T2,MSMFL,(T2)	;""
  5559	005536'02  336 00 0 15 000003 		SKIPN MSGSRC		;MUST NOT HAVE A SOURCE NAME YET
  5560	005537'02  602 02 0 00 000020 		TXNE T2,ACKLSI		;AND MUST BE FOR DATA SUBCHANNEL
  5561	005540'02  254 00 0 00 005542'		JRST ACKINV		;NOT
  5562	005541'02  254 00 0 00 005435'		JRST CCDON		;A VALID ACK. IGNORE IT HOWEVER
  5563
  5564	005542'02  201 02 0 00 000051 	ACKINV:	MOVEI T2,.DCX41		;INVALID.
  5565	005543'02  202 02 0 15 000017 		MOVEM T2,MSGW1		;SET UP ERROR CODE
  5566	005544'02  254 00 0 00 005606'		JRST CONREJ		;AND FAKE A CI REJECT
  5567
  5568					;IN RUN STATE
  5569
  5570	005545'02  200 02 0 15 000005 	ACKRUN:	MOVE T2,MSGBLK		;GET MESSAGE
  5571	005546'02  135 02 0 00 010104'		LOAD T2,MSMFL,(T2)	;GET FLAGS
  5572	005547'02  260 17 0 00 000000#		CALL ACKDO		;GO DO THE ACTUAL ACK
  5573	005550'02  254 00 0 00 006266'		 JRST ABTMSG		;BADLY FORMED MESSAGE
  5574						JN LLINT,(T1),[
  5575							CALL SQILS	;INTERNAL LINK, TRY LS SEND AGAIN
  5576							MOVE T1,MSGLLB	;FAILED, RESTORE LINK BLOCK ADDRESS
  5577	005551'02  200 16 0 01 000002 			JRST CCDON]
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 126-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5578	005552'02  603 16 0 00 004000 
  5579	005553'02  254 00 0 00 010340'
  5580	005554'02  200 16 0 01 000020 		TMNE LLLSA,(T1)		;WANT TO RETRY A LS SEND?
  5581	005555'02  603 16 0 00 000004 
  5582	005556'02  260 17 0 00 000000#		CALL DATINR		;YES. MAKE PROCESS WAKE NOW THEN
  5583	005557'02  254 00 0 00 005435'		JRST CCDON		;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 127
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5584	005560'02  260 17 0 00 000000#	DIMSG:	CALL GETLLA		;GET LINK ADDRESSES
  5585	005561'02  254 00 0 00 005242'		 JRST BADMSG		;BAD MESSAGE
  5586	005562'02  260 17 0 00 000000#		CALL GETTWO		;GET REASON CODE
  5587	005563'02  476 00 0 00 000002 		 SETOM T2		;BADLY FORMED MESSAGE
  5588	005564'02  202 02 0 15 000017 		MOVEM T2,MSGW1		;SAVE REASON CODE
  5589	005565'02  200 01 0 15 000004 	DIMSG1:	MOVE T1,MSGDST		;GET OUR NAME
  5590	005566'02  476 00 0 00 000002 		SETOM T2		;MATCH ANY LINK
  5591	005567'02  201 03 0 15 000015 		MOVEI T3,MSGHSN		;GET HOST NAME
  5592	005570'02  260 17 0 00 000000#		LLLOCK			;LOCK THE TREE
  5593	005571'02  260 17 0 00 000000#		CALL LLLKUP		;FIND THE LINK
  5594						 JRST [	LLLULK		;FREE THE TREE
  5595							MOVEI T2,.DCX41	;INVALID LINK I.D.
  5596	005572'02  254 00 0 00 010343'			JRST CIDC]	;AND SEND A DC
  5597	005573'02  202 01 0 15 000006 		MOVEM T1,MSGLLB		;SAVE BLOCK ADDRESS
  5598	005574'02  260 17 0 00 000000#		CALL BLKLOK		;LOCK THE BLOCK
  5599						 JRST [	LLLULK		;FREE THE TREE
  5600							MDISMS		;WAIT HERE FOR A WHILE
  5601	005575'02  254 00 0 00 010346'			JRST DIMSG1]	;AND TRY AGAIN
  5602	005576'02  260 17 0 00 000000#		LLLULK			;FREE THE TREE
  5603	005577'02  135 03 0 00 007421'		LOAD T3,LLOPT,(T1)	;GET OPTDATA, IF ANY
  5604	005600'02  201 04 0 00 000020 		MOVEI T4,MAXDSC
  5605	005601'02  260 17 0 00 000000#		CALL GTBNRY		;GO GET IT
  5606	005602'02  402 00 0 00 000002 		 SETZM T2		;NONE THERE.
  5607	005603'02  137 02 0 00 007655'		STOR T2,LLUCT,(T1)	;SAVE COUNT OF DATA
  5608	005604'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET CURRENT STATE
  5609	005605'02  254 00 1 02 004313'		JRST @DIREC-1(T2)	;GO DO STATE ACTION
  5610
  5611					;DI RECIEVED WHEN IN CI SENT STATE
  5612
  5613	005606'02  260 17 0 00 005625'	CONREJ:	CALL RJECT		;SET STATE OF LINK
  5614	005607'02  254 00 0 00 005622'		JRST DIMSG3		;SEND DC
  5615
  5616					;HERE FOR DI RECEIVED WHEN IN NON-RUN STATE
  5617
  5618	005610'02  260 17 0 00 005655'	DIABT:	CALL CHKFRN		;SOURCE ADDR MUST MATCH
  5619	005611'02  254 00 0 00 005432'		 JRST CCJECT		;DOESN'T
  5620						JN LLSDE,(T1),[
  5621							CALL RELLNK	;IF DISASSOCIATED
  5622							MOVEI T2,.DCX9	;SAY A USER ABORT
  5623	005612'02  200 16 0 01 000002 			JRST CIDC]	;AND SEND DC
  5624	005613'02  603 16 0 00 002000 
  5625	005614'02  254 00 0 00 010351'
  5626	005615'02  260 17 0 00 005632'		CALL RJECT1		;GO CHANGE LINK STATE
  5627	005616'02  254 00 0 00 005622'		JRST DIMSG3		;SEND DC
  5628
  5629					;DI OR DC RECIEVED IN RUN STATE
  5630
  5631	005617'02  260 17 0 00 005655'	DIMSG2:	CALL CHKFRN		;SOURCE ADDR MUST MATCH
  5632	005620'02  254 00 0 00 005432'		 JRST CCJECT		;DOESN'T
  5633	005621'02  260 17 0 00 005642'		CALL SHUTLK		;SHUT DOWN LINK
  5634	005622'02  336 02 0 15 000017 	DIMSG3:	SKIPN T2,MSGW1		;HAVE A BAD REASON?
  5635
  5636					;COMMON POINT FOR DI OR DC IN RUN STATE OR DC IN ABT STATE
  5637
  5638	005623'02  201 02 0 00 000052 	DCDCS:	MOVEI T2,.DCX42		;NO. SAY REPLY TO DI THEN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 127-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5639	005624'02  254 00 0 00 005433'		JRST CCJEC1		;AND GO SEND DC
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 128
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5640
  5641					;ROUTINES TO CHANGE LINK STATE WHEN DI OR DC IS RECIEVED
  5642
  5643					;FOR DI OR DC RECEIVED IN CIS STATE
  5644
  5645	005625'02  201 02 0 00 000011 	RJECT:	MOVEI T2,LLSABT		;CONNECTION IS ABORTED
  5646	005626'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)	;SAY SO
  5647	005627'02  200 02 0 15 000017 		MOVE T2,MSGW1		;GET REASON CODE
  5648	005630'02  137 02 0 00 007636'		STOR T2,LLRSN,(T1)	;SAVE IN THE LL BLOCK
  5649	005631'02  254 00 0 00 005300'		CALLRET CONINT		;GIVE CONNECTION INTERRUPT
  5650
  5651					;FOR DI OR DC RECIEVED IN NON-RUN STATE
  5652
  5653	005632'02  201 02 0 00 000011 	RJECT1:	MOVEI T2,LLSABT		;SAY LINK NOW ABORTED
  5654	005633'02  137 02 0 00 007375'		STOR T2,LLSTA,(T1)
  5655	005634'02  200 02 0 15 000017 		MOVE T2,MSGW1		;GET REASON
  5656	005635'02  137 02 0 00 007636'		STOR T2,LLRSN,(T1)	;STORE IN BLOCK
  5657	005636'02  260 17 0 00 000000#		CALL FLUSH		;CLEAR OUT LINK'S QUEUES
  5658	005637'02  260 17 0 00 000000*		CALL CHKLLT		;CHECK FOR TTY ON THIS LINK
  5659	005640'02  254 00 0 00 005661'		CALLRET TELDIS		;NOTIFY DRIVER IF THIS IS AN INTERNAL LINK
  5660
  5661					;FOR DI OR DC RECEIVED IN RUN STATE
  5662
  5663	005641'02  334 03 0 00 010354'	SHTLK1:	SKIPA T3,[LLSDIS]	;NEW STATE
  5664	005642'02  201 03 0 00 000007 	SHUTLK:	MOVEI T3,LLSDIR		;NEW STATE
  5665	005643'02  200 02 0 15 000017 		MOVE T2,MSGW1		;GET REASON
  5666	005644'02  137 02 0 00 007636'		STOR T2,LLRSN,(T1)	;SAVE IT
  5667	005645'02  137 03 0 00 007375'		STOR T3,LLSTA,(T1)	;SAVE NEW STATE
  5668	005646'02  260 17 0 00 000000#		CALL DATINR		;GIVE INT IF NECESSARY
  5669	005647'02  332 00 0 15 000017 		SKIPE MSGW1		;SYNCHRONOUS DI?
  5670						JRST [	SETZRO LLFDI,(T1) ;NO. CLEAR THIS JUST IN CASE
  5671							CALL FLUSH	;AND CLEAN UP LINK
  5672	005650'02  254 00 0 00 010355'			JRST SHUT10]	;GO NOTIFY DRIVER IF INTERNAL LINK
  5673	005651'02  205 16 0 00 000010 		SETONE LLFDI,(T1)	;YES. SAY SO
  5674	005652'02  436 16 0 01 000002 
  5675	005653'02  260 17 0 00 005637*	SHUT10:	CALL CHKLLT		;CHECK FOR TTY ON THIS LL
  5676	005654'02  254 00 0 00 005661'		CALLRET TELDIS		;NOTIFY DRIVER IF AN INTERNAL LINK
  5677
  5678
  5679
  5680					;ROUTINE USED BY DIMSG TO VERIFY SOURCE ADDR
  5681					;	T1/ LINK ADDRESS
  5682					;RETURNS:	+1 NOT A MATCH
  5683					;		+2 A MATCH
  5684
  5685	005655'02  135 02 0 00 010274'	CHKFRN:	LOAD T2,LLHLK,(T1)	;GET FOREIGN HOST I.D.
  5686	005656'02  312 02 0 15 000003 		CAME T2,MSGSRC		;IS THIS WHO SENT IT?
  5687	005657'02  263 17 0 00 000000 		RET			;NO
  5688	005660'02  254 00 0 00 005502*		RETSKP			;YES
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 129
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5689					;TELDIS - ROUTINE TO NOTIFY A DRIVER OF A DISCONNECT ON AN INTERNAL LINK
  5690					;
  5691					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  5692					;		CALL TELDIS
  5693					;RETURNS: +1 ALWAYS, WITH DRIVER NOTIFIED
  5694
  5695	005661'02  265 16 0 00 005332*	TELDIS:	SAVET
  5696	005662'02  265 16 0 00 005301*		STKVAR <TDSLLB,TDSSTS>
  5697	005663'02  000002  000002
  5698	005664'02  202 01 0 17 777776 		MOVEM T1,TDSLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  5699	005665'02  200 16 0 01 000002 		JE LLINT,(T1),R		;DONE IF NOT AN INTERNAL LINK
  5700	005666'02  607 16 0 00 004000 
  5701	005667'02  254 00 0 00 005032*
  5702	005670'02  200 16 0 01 000002 		JN LLSDE,(T1),R		;DONE IF LINK DISSOCIATED FROM PROCESS
  5703	005671'02  603 16 0 00 002000 
  5704	005672'02  254 00 0 00 005667*
  5705	005673'02  260 17 0 00 002504'		CALL RDSTS		;GO GET LINK STATUS
  5706	005674'02  202 03 0 17 777775 		MOVEM T3,TDSSTS		;SAVE STATUS
  5707	005675'02  550 01 0 17 777775 		HRRZ T1,TDSSTS		;GET NSP ERROR CODE
  5708	005676'02  260 17 0 00 004371'		CALL NSPERR		;CONVERT TO TOPS20 ERROR CODE
  5709	005677'02  255 00 0 00 000000 		 JFCL			;FAILED, USE ERROR CODE FROM TRANSLATION ROUTINE
  5710	005700'02  540 02 0 00 000001 		HRR T2,T1		;GET TOPS20 ERROR CODE
  5711	005701'02  500 02 0 17 777775 		HLL T2,TDSSTS		;GET STATUS BITS
  5712	005702'02  200 01 0 17 777776 		MOVE T1,TDSLLB		;RESTORE LOGICAL LINK BLOCK ADDRESS
  5713	005703'02  200 04 0 01 000034 		LOAD T4,LLVEC,(T1)	;GET ADDRESS OF DRIVER FUNCTION VECTOR
  5714	005704'02  200 01 0 01 000033 		LOAD T1,LLDRV,(T1)	;GET DRIVER CORRELATION CODE
  5715	005705'02  254 00 1 04 000007 		CALLRET @.NSDIS(T4)	;NOTIFY DRIVER OF DISCONNECT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 130
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5716					;RECEIVED A DC MESSAGE
  5717
  5718	005706'02  260 17 0 00 000000#	DCMSG:	CALL GETLLA		;GET LINK ADDRESSES
  5719	005707'02  254 00 0 00 005242'		 JRST BADMSG		;BADLY FORMED
  5720	005710'02  260 17 0 00 000000#		CALL GETTWO		;GET REASON
  5721	005711'02  476 00 0 00 000002 		 SETOM T2		;NONE THERE
  5722	005712'02  202 02 0 15 000017 	DCMSG4:	MOVEM T2,MSGW1		;SAVE IT
  5723	005713'02  200 01 0 15 000004 	DCMSG1:	MOVE T1,MSGDST		;GET OUR NAME
  5724	005714'02  200 02 0 15 000003 		MOVE T2,MSGSRC		;GET SOURCE ADDRESS
  5725	005715'02  260 17 0 00 000000#		LLLOCK			;LOCK THE TREE
  5726	005716'02  260 17 0 00 000000#		CALL LLLKUP		;FIND THE LINK
  5727						 JRST [	LLLULK		;FREE THE TREE
  5728	005717'02  254 00 0 00 010361'			JRST CIDON]	;IGNORE THE MESSAGE
  5729	005720'02  260 17 0 00 000000#		CALL BLKLOK		;LOCK THE BLOCK
  5730						 JRST [	LLLULK		;CAN'T. FREE TREE
  5731							MDISMS		;WAIT HERE
  5732	005721'02  254 00 0 00 010363'			JRST DCMSG1]	;AND TRY AGAIN
  5733	005722'02  260 17 0 00 000000#		LLLULK			;FREE TREE
  5734	005723'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET STATE
  5735	005724'02  254 00 1 02 004324'		JRST @DCREC-1(T2)	;AND GO DO RIGHT THING
  5736
  5737	005725'02  336 00 0 15 000003 	CHKIDL:	SKIPN MSGSRC		;SOURCE NODE FIELD MBZ, IS IT?
  5738	005726'02  260 17 0 00 005625'		CALL RJECT		;YES, GO SET PROPER LINK STATE
  5739	005727'02  254 00 0 00 005435'		JRST CCDON		;AND DONE
  5740
  5741					;RECEIVED DC IN NON-RUN STATE
  5742
  5743					DCABT:	JN LLSDE,(T1),[
  5744							CALL RELLNK	;IF DISASSOCIATED
  5745	005730'02  200 16 0 01 000002 			JRST CIDON]	;JUST GIVE UP QUIETLY
  5746	005731'02  603 16 0 00 002000 
  5747	005732'02  254 00 0 00 010366'
  5748	005733'02  260 17 0 00 005632'		CALL RJECT1		;SET PROPER LINK STATE
  5749	005734'02  254 00 0 00 005435'		JRST CCDON		;AND DONE
  5750
  5751					;DC RECEIVED IN RUN STATE
  5752
  5753	005735'02  336 02 0 15 000017 	DCRUN:	SKIPN T2,MSGW1		;AN ABORT?
  5754	005736'02  201 02 0 00 000011 		MOVEI T2,.DCX9		;NO. MAKE IT ONE THEN
  5755	005737'02  202 02 0 15 000017 		MOVEM T2,MSGW1
  5756	005740'02  260 17 0 00 005642'		CALL SHUTLK		;BEGIN LINK SHUT DOWN
  5757	005741'02  254 00 0 00 005435'		JRST CCDON		;AND DONE
  5758
  5759
  5760
  5761					;UTILITY ROUTINE TO RELEASE A DISASSOCIATED NODE
  5762
  5763	005742'02  256 00 0 00 004517*	RELLNK:	OKINT			;DO THE OKINT TO MATCH THE LOCK
  5764	005743'02  254 00 0 00 001531'		CALLRET DELNOD		;FREE NODE AND RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 131
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5765
  5766					;DATA MESSAGE RECEIVED
  5767
  5768	005744'02  302 04 0 00 000005 	DATMSG:	CAIE T4,5		;VALID
  5769	005745'02  306 04 0 00 000007 		CAIN T4,7		; SUBTYPE?
  5770	005746'02  254 00 0 00 005242'		JRST BADMSG		;NO, IGNORE IT
  5771	005747'02  202 04 0 15 000017 		MOVEM T4,MSGW1		;SAVE SUBTYPE
  5772	005750'02  260 17 0 00 000000#		CALL GETLLA		;GET LINK ADDRESSES
  5773	005751'02  254 00 0 00 005242'		 JRST BADMSG		;BADLY FORMED
  5774	005752'02  260 17 0 00 000000#	DATMS1:	LLLOCK			;LOCK TREE
  5775	005753'02  200 01 0 15 000004 		MOVE T1,MSGDST		;GET OUR NAME
  5776	005754'02  200 02 0 15 000003 		MOVE T2,MSGSRC		;GET REMOTE'S NAME
  5777	005755'02  260 17 0 00 000000#		CALL LLLKUP		;LOOK IT UP
  5778						 JRST [	LLLULK		;FREE TREE
  5779							MOVEI T2,.DCX41	;INVALID ADDRESS
  5780	005756'02  254 00 0 00 010370'			JRST CIDC]	;SEND A DC
  5781	005757'02  260 17 0 00 000000#		CALL BLKLOK		;LOCK UP THE BLOCK
  5782						 JRST [	LLLULK		;FREE TREE
  5783							MDISMS		;WAIT FOR BLOCK
  5784	005760'02  254 00 0 00 010373'			JRST DATMS1]	;AND TRY AGAIN
  5785	005761'02  260 17 0 00 000000#		LLLULK			;HAVE THE BLOCK
  5786	005762'02  202 01 0 15 000006 		MOVEM T1,MSGLLB		;SAVE LL BLOCK
  5787	005763'02  135 02 0 00 007375'		LOAD T2,LLSTA,(T1)	;GET STATE
  5788	005764'02  254 00 1 02 004357'		JRST @DATSTA-1(T2)	;GO DO IT
  5789
  5790	005765'02  200 04 0 15 000017 	DATRUN:	MOVE T4,MSGW1		;GET BACK SUBTYPE
  5791	005766'02  602 04 0 00 000001 		TXNE T4,1		;DATA MESSAGE?
  5792	005767'02  254 00 0 00 006004'		JRST INTLS		;NO.
  5793	005770'02  260 17 0 00 006300'		CALL SETCNT		;SET COUNTS IN MESSAGE HEADER
  5794	005771'02  200 02 0 15 000005 		MOVE T2,MSGBLK		;GET MESSAGE BLOCK
  5795	005772'02  260 17 0 00 000000#		CALL ONRAWQ		;PUT IT ON THE Q
  5796	005773'02  200 16 0 01 000002 	DATDON:	JN LLINT,(T1),INTRUN	;IF THIS IS AN INTERNAL LINK, GO ASSEMBLE DATA
  5797	005774'02  603 16 0 00 004000 
  5798	005775'02  254 00 0 00 006000'
  5799	005776'02  260 17 0 00 000000#		CALL BLKULK		;NOT INTERNAL, FREE BLOCK
  5800	005777'02  263 17 0 00 000000 		RET			;RETURN TO BACKGROUND TASK DISPATCHER
  5801
  5802					; HERE FOR INTERNAL LINKS - ASSEMBLE DATA INTO DRIVER'S BUFFER
  5803
  5804	006000'02  260 17 0 00 006107'	INTRUN:	CALL INTSET		;GO DO INPUT FOR INTERNAL LINK
  5805	006001'02  255 00 0 00 000000 		 JFCL			;FAILED, IGNORE FAILURE FOR NOW
  5806	006002'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK THE LOGICAL LINK BLOCK
  5807	006003'02  263 17 0 00 000000 		RET			;AND RETURN TO BACKGROUND TASK'S DISPATCHER
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 132
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5808					; NOT A DATA MESSAGE - MUST BE INTERRUPT OR LINK SERVICES MESSAGE
  5809
  5810	006004'02  260 17 0 00 000000#	INTLS:	CALL GETTWO		;GET ACK NUMBER
  5811	006005'02  254 00 0 00 006266'		 JRST ABTMSG		;GO KILL LINK
  5812	006006'02  622 02 0 00 100000 		TXZE T2,ACKIND		;AN ACK?
  5813						JRST [	MOVEI T3,MSLSI	;GET PROPER CHANNEL
  5814							CALL ACKCHN	;DO ACK
  5815							CALL GETTWO	;GET SEGNUM
  5816							 JRST ABTMSG	;BADLY FORMED
  5817	006007'02  254 00 0 00 010376'			JRST .+1]
  5818	006010'02  200 03 0 15 000005 		MOVE T3,MSGBLK		;GET BLOCK ADDRESS
  5819	006011'02  137 02 0 00 010403'		STOR T2,MSSEG,(T3)	;SAVE SEG #
  5820	006012'02  135 03 0 00 010404'		LOAD T3,LLIIN,(T1)	;GET EXPECTED NUMBER
  5821	006013'02  350 00 0 00 000003 		AOS T3
  5822	006014'02  405 03 0 00 007777 		ANDI T3,7777		;COMPUTE IT
  5823	006015'02  275 03 0 02 000000 		SUBI T3,0(T2)		;COMPUTE DIFFERENCE
  5824	006016'02  405 03 0 00 007777 		ANDI T3,7777
  5825	006017'02  322 03 0 00 006025'		JUMPE T3,LSINT1		;HAVE IT
  5826	006020'02  303 03 0 00 000036 		CAILE T3,MAXDIF		;OLD OR NEW?
  5827	006021'02  254 00 0 00 006101'		JRST LSIDON		;TOO NEW. IGNORE IT FOR NOW
  5828	006022'02  260 17 0 00 000000#	INTLS1:	CALL ACKLI		;OLD SEG. GO REACK SUBCHANNEL
  5829						 JRST [	MDISMS		;NO FREE SPACE. WAIT AWHILE
  5830							MOVE T1,MSGLLB	;RESTORE BLOCK ADDRESS
  5831	006023'02  254 00 0 00 010405'			JRST INTLS1]	;AND TRY AGAIN
  5832	006024'02  254 00 0 00 006101'		JRST LSIDON		;AND DONE
  5833
  5834					;HAVE A GOOD INT OR LS MESSAGE
  5835
  5836	006025'02  137 02 0 00 010404'	LSINT1:	STOR T2,LLIIN,(T1)	;STORE SEG #
  5837	006026'02  200 04 0 15 000017 		MOVE T4,MSGW1		;GET BACK SUBTYPE
  5838	006027'02  606 04 0 00 000002 		TRNN T4,2		;INT OR LS MESSAGE?
  5839	006030'02  254 00 0 00 006044'		JRST LSMSG		;LS
  5840	006031'02  332 00 0 01 000006 		SKIPE LLMSI(T1)		;NOW HAVE AN INTERRUPT MESSAGE?
  5841	006032'02  254 00 0 00 006266'		 JRST ABTMSG		;KILL LINK
  5842	006033'02  260 17 0 00 006300'		CALL SETCNT		;GO SET COUNTS IN BLOCK
  5843	006034'02  200 02 0 15 000005 		MOVE T2,MSGBLK		;GET BLOCK
  5844	006035'02  513 00 0 02 000000 		SETZRO MSLNK,(T2)	;CLEAR LINK WORD
  5845	006036'02  202 02 0 01 000006 		MOVEM T2,LLMSI(T1)	;STORE IT
  5846	006037'02  260 17 0 00 002662'		CALL INTINT		;GO INTERRUPT PROCESS
  5847	006040'02  260 17 0 00 000000#		CALL ACKLI		;GO ACK IT
  5848	006041'02  255 00 0 00 000000 		 JFCL			;IGNORE BLOCK REQUEST
  5849	006042'02  200 01 0 15 000006 		MOVE T1,MSGLLB		;GET BACK LL BLOCK
  5850	006043'02  254 00 0 00 005773'		JRST DATDON		;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 133
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5851
  5852					;HAVE A LS MESSAGE
  5853
  5854	006044'02  260 17 0 00 000000#	LSMSG:	CALL ACKLI		;ACK THE LS MESSAGE NOW
  5855						 JRST [	MDISMS		;WAIT HERE UNTIL CAN DO IT
  5856							MOVE T1,MSGLLB	;GET BACK LL BLOCK
  5857	006045'02  254 00 0 00 010410'			JRST LSMSG]	;AND TRY AGAIN
  5858	006046'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,ABTMSG)		;GET LSFLAGS BYTE
  5859	006047'02  254 00 0 00 006266'
  5860	006050'02  134 02 0 15 000002 
  5861	006051'02  606 02 0 00 000003 		TXNN T2,3		;CHANGING BACK-PRESSURE?
  5862	006052'02  254 00 0 00 006057'		JRST LSMSG1		;NO
  5863	006053'02  602 02 0 00 000001 		TRNE T2,1		;STOPPING?
  5864						JRST [	SETONE LLBRP,(T1) ;YES. SAY SO
  5865	006054'02  254 00 0 00 010413'			JRST LSMSG1]	;AND PROCEED
  5866	006055'02  205 16 0 00 400000 		SETZRO LLBRP,(T1)	;NO. START IT UP
  5867	006056'02  412 16 0 01 000007 
  5868	006057'02  200 03 0 00 000002 	LSMSG1:	MOVE T3,T2		;SAVE FIELD
  5869	006060'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,ABTMSG)		;GET NEXT
  5870	006061'02  254 00 0 00 006266'
  5871	006062'02  134 02 0 15 000002 
  5872	006063'02  602 03 0 00 000004 		TXNE T3,4		;DATA COUNTS?
  5873						JRST [	OPSTR <ADD T2,>,LLMIC,(T1) ;NO. COMPUTE NEW VALUE
  5874							TXNE T2,200	;WITHIN RANGE?
  5875							JRST ABTMSG	;NO
  5876							STOR T2,LLMIC,(T1) ;YES. STORE IT
  5877	006064'02  254 00 0 00 010416'			JRST LSIDON]	;AND DONE
  5878	006065'02  135 03 0 00 010261'		LOAD T3,LLMFC,(T1)	;GET FLOW CONTROL TYPE
  5879	006066'02  322 03 0 00 006100'		JUMPE T3,LSIDN1		;IF NONE, GO ON
  5880	006067'02  602 02 0 00 000200 		TRNE T2,200		;IS THE COUNT NEGATIVE?
  5881	006070'02  302 03 0 00 000002 		CAIE T3,2		;YES. IS FLOW CONTROL MESSAGE TYPE?
  5882	006071'02  334 00 0 00 000000 		SKIPA			;NO. IS GOOD THEN
  5883	006072'02  254 00 0 00 006266'		JRST ABTMSG		;YES. LINK ERROR
  5884	006073'02  135 16 0 00 010424'		OPSTR <ADD T2,>,LLMSM,(T1) ;ADD IN THE NUMBER
  5885	006074'02  270 02 0 00 000016 
  5886	006075'02  137 02 0 00 010424'		STOR T2,LLMSM,(T1)	;SAVE NEW VALUE
  5887	006076'02  606 02 0 00 000200 		TXNN T2,200		;IS THE COUNT NEGATIVE?
  5888						JUMPN T2,[MOVEI T2,CHKSCT ;NO. HAVE SOME COUNT MORE
  5889							PUSH P,T1	;SAVE LL BLOCK
  5890							LOAD T1,LLFRK,(T1) ;GET FORK NUMBER
  5891							CALL NETWKF	;WAKE UP THE PROCESS
  5892							POP P,T1	;GET BACK LL BLOCK
  5893	006077'02  326 02 0 00 010425'			JRST .+1]	;AND PROCEED
  5894	006100'02  260 17 0 00 000000#	LSIDN1:	CALL RESEND		;SEE IF CAN RESEND ANYTHING
  5895	006101'02  260 17 0 00 005653*	LSIDON:	CALL CHKLLT		;CHECK FOR TTY ON THIS LL
  5896						JN LLINT,(T1),[
  5897							CALL INTOUT	;IF INTERNAL LINK SEND ANY OUTPUT STILL LEFT
  5898							 JFCL		;IGNORE FAILURE HERE
  5899	006102'02  200 16 0 01 000002 			JRST .+1]	;CONTINUE
  5900	006103'02  603 16 0 00 004000 
  5901	006104'02  254 00 0 00 010433'
  5902	006105'02  260 17 0 00 000000#		CALL BLKULK		;FREE THE BLOCK
  5903	006106'02  254 00 0 00 005242'		JRST CIDON		;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 134
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5904					;INTSET - ROUTINE TO DO INPUT ON INTERNAL LINKS
  5905					;
  5906					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  5907					;		CALL INTSET
  5908					;RETURNS: +1	 FAILED
  5909					;	  +2	SUCCESS
  5910
  5911	006107'02  265 16 0 00 005661*	INTSET::SAVET
  5912	006110'02  265 16 0 00 005662*		STKVAR <INSLLB,INSCNT,INSFLG>
  5913	006111'02  000003  000003
  5914	006112'02  202 01 0 17 777776 		MOVEM T1,INSLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  5915	006113'02  402 00 0 17 777774 		SETZM INSFLG		;INITIALIZE "ALL DATA FIT IN BUFFER" FLAG
  5916
  5917					; SET UP INPUT BUFFER IF NOT ALREADY SET UP, AND PUT SEGMENTS ON ORDERED QUEUE
  5918
  5919	006114'02  200 01 0 17 777776 	INS010:	MOVE T1,INSLLB		;GET LOGICAL LINK BLOCK ADDRESS
  5920	006115'02  205 16 0 00 000040 		SETZRO LLFIM,(T1)	;START BY ASSUMING NOT END OF MESSAGE
  5921	006116'02  412 16 0 01 000002 
  5922	006117'02  260 17 0 00 000000#		CALL MOVSEG		;PLACE SEGMENTS ON ORDERED MESSAGE QUEUE
  5923	006120'02  263 17 0 00 000000 		 RET			;FAILED, RETURN ERROR
  5924	006121'02  200 01 0 17 777776 		MOVE T1,INSLLB		;RESTORE LOGICAL LINK BLOCK
  5925	006122'02  336 00 0 01 000012 		SKIPN LLOMSG(T1)	;ANY MESSAGES TO PROCESS ?
  5926	006123'02  254 00 0 00 005660*		RETSKP			;NO, DONE.
  5927	006124'02  200 01 0 17 777776 		MOVE T1,INSLLB		;GET LOGICAL LINK BLOCK ADDRESS
  5928	006125'02  260 17 0 00 006243'		CALL SETIBF		;SET UP BUFFER IF REQUIRED
  5929	006126'02  254 00 0 00 006123*		 RETSKP			;FAILED, WAIT FOR BUFFER FROM DRIVER
  5930
  5931					; IF TRUNCATING CURRENT NSP MESSAGE, DISCARD THIS SEGMENT
  5932
  5933	006127'02  200 01 0 17 777776 		MOVE T1,INSLLB		;GET ADDRESS OF LOGICAL LINK BLOCK
  5934						JN LLTRM,(T1),[
  5935							CALL TRNMSG	;GO DISCARD THIS SEGMENT
  5936							 RET		;FAILED
  5937	006130'02  200 16 0 01 000037 			JRST INS030]	;GO SEND ANY ACK'S OR LS MESSAGES NEEDED
  5938	006131'02  603 16 0 00 100000 
  5939	006132'02  254 00 0 00 010436'
  5940
  5941					; COPY DATA IN RECEIVED SEGMENTS INTO DRIVER'S BUFFER
  5942
  5943	006133'02  200 01 0 17 777776 		MOVE T1,INSLLB		;GET LOGICAL LINK BLOCK ADDRESS
  5944	006134'02  200 02 0 01 000042 		LOAD T2,LLBPI,(T1)	;GET CURRENT BUFFER POINTER
  5945	006135'02  550 03 0 01 000043 		LOAD T3,LLICT,(T1)	;GET MAX NUMBER OF CHARACTERS IN INPUT BUFFER
  5946	006136'02  260 17 0 00 004102'		CALL MOVMSG		;GO COPY DATA INTO DRIVER'S BUFFER
  5947	006137'02  263 17 0 00 000000 		 RET			;FAILED, RETURN ERROR
  5948	006140'02  200 04 0 17 777776 		MOVE T4,INSLLB		;RESTORE LOGICAL LINK BLOCK ADDRESS
  5949	006141'02  202 02 0 17 777775 		MOVEM T2,INSCNT		;SAVE NUMBER OF BYTES THAT WERE INPUT
  5950	006142'02  202 03 0 17 777774 		MOVEM T3,INSFLG		;SAVE FLAG NOTING WHETHER ALL DATA FIT IN BUFFER
  5951	006143'02  202 01 0 04 000042 		STOR T1,LLBPI,(T4)	;STORE NEW BUFFER POINTER
  5952	006144'02  337 00 0 17 777775 		SKIPG INSCNT		;ANY BYTES INPUT ?
  5953	006145'02  254 00 0 00 006151'		JRST INS020		;NO, DO NOT UPDATE COUNT
  5954	006146'02  550 03 0 04 000043 		LOAD T3,LLICT,(T4)	;GET PREVIOUS COUNT
  5955	006147'02  274 03 0 00 000002 		SUB T3,T2		;COMPUTE NUMBER OF BYTES LEFT IN BUFFER
  5956	006150'02  542 03 0 04 000043 		STOR T3,LLICT,(T4)	;UPDATE NUMBER OF BYTES REMAINING
  5957						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 135
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5958						; ..
  5959
  5960					; IF SEGMENT DID NOT FIT IN BUFFER, SEE IF DRIVER WANTED TO TRUNCATE
  5961
  5962	006151'02  200 02 0 17 777774 	INS020:	MOVE T2,INSFLG		;GET FLAG INDICATING IF ALL DATA FIT IN BUFFER
  5963	006152'02  316 02 0 00 010441'		CAMN T2,[-1]		;DID LAST SEGMENT FIT IN THE BUFFER ?
  5964						JRST [	JE LLTRC,(T4),.+1 ;NO. JUST CONTINUE IF NOT TRUNCATING MESSAGES
  5965							SETONE LLTRM,(T4) ;REMAINDER OF THIS MESSAGE NOT NEEDED
  5966	006153'02  254 00 0 00 010442'			JRST .+1]	;AND CONTINUE
  5967
  5968					; CALL DRIVER IF EITHER BUFFER WAS FILLED OR A COMPLETE MESSAGE WAS RECEIVED
  5969
  5970	006154'02  200 01 0 17 777776 		MOVE T1,INSLLB		;GET ADDRESS OF LOGICAL LINK BLOCK
  5971	006155'02  200 02 0 17 777775 		MOVE T2,INSCNT		;GET NUMBER OF BYTES INPUT
  5972	006156'02  200 03 0 17 777774 		MOVE T3,INSFLG		;GET FLAG NOTING IF ALL DATA FIT IN BUFFER
  5973	006157'02  260 17 0 00 006171'		CALL TELDAT		;NOTIFY DRIVER THAT DATA HAS ARRIVED
  5974
  5975					; IF NO BYTES WERE INPUT, ALL DONE.  RETURN TO DISPATCHER
  5976
  5977	006160'02  336 00 0 17 777775 		SKIPN INSCNT		;WERE ANY BYTES INPUT ?
  5978	006161'02  254 00 0 00 006126*		RETSKP			;NO, ALL DONE THEN
  5979
  5980					; SEND ANY ACK MESSAGES OR LINK SERVICES MESSAGES NEEDED
  5981
  5982	006162'02  200 01 0 17 777776 	INS030:	MOVE T1,INSLLB		;GET ADDRESS OF LOGICAL LINK BLOCK
  5983	006163'02  260 17 0 00 000000#		CALL SQIACK		;SEND ANY ACK'S NEEDED
  5984	006164'02  263 17 0 00 000000 		 RET			;FAILED, RETURN ERROR
  5985	006165'02  200 01 0 17 777776 		MOVE T1,INSLLB		;GET ADDRESS OF LOGICAL LINK BLOCK AGAIN
  5986	006166'02  260 17 0 00 000000#		CALL SQILS		;SEND ANY LINK SERVICES MESSAGES NEEDED
  5987	006167'02  255 00 0 00 000000 		 JFCL			;IGNORE FAILURE, ACK'S WILL CAUSE RETRY
  5988	006170'02  254 00 0 00 006114'		JRST INS010		;GO SEE IF THERE ARE MORE MESSAGES TO PROCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 136
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  5989					;TELDAT - ROUTINE TO ADVISE THE DRIVER IF A COMPLETE MESSAGE HAS ARRIVED
  5990					;
  5991					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  5992					;	    T2/	NUMBER OF BYTES INPUT, -1 IF NOT ENOUGH ROOM IN BUFFER
  5993					;		CALL TELDAT
  5994					;RETURNS: +1 ALWAYS, WITH DRIVER NOTIFIED IF NEEDED
  5995
  5996	006171'02  265 16 0 00 006110*	TELDAT:	STKVAR <TLDLLB,TLDCNT,TLDFLG>
  5997	006172'02  000003  000003
  5998	006173'02  202 01 0 17 777776 		MOVEM T1,TLDLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  5999	006174'02  202 02 0 17 777775 		MOVEM T2,TLDCNT		;SAVE COUNT OF BYTES INPUT
  6000	006175'02  202 03 0 17 777774 		MOVEM T3,TLDFLG		;SAVE FLAG NOTING IF ALL DATA FIT IN BUFFER
  6001
  6002					; DETERMINE IF DRIVER MUST BE NOTIFIED
  6003
  6004	006176'02  200 04 0 17 777776 		MOVE T4,TLDLLB		;GET LOGICAL LINK BLOCK ADDRESS
  6005	006177'02  550 03 0 04 000043 		LOAD T3,LLICT,(T4)	;GET # OF BYTES LEFT IN BUFFER
  6006	006200'02  322 03 0 00 006204'		JUMPE T3,TLDT10		;IF NONE, BETTER TELL DRIVER !
  6007	006201'02  200 02 0 17 777774 		MOVE T2,TLDFLG		;GET FLAG
  6008	006202'02  312 02 0 00 010441'		CAME T2,[-1]		;INSUFFICIENT ROOM IN BUFFER FOR THIS MSG ?
  6009						JRST [	JE LLFIM,(T1),R	;NO, RETURN UNLESS A COMPLETE MESSAGE RECEIVED
  6010	006203'02  254 00 0 00 010447'			JRST TLDT10 ]	;...
  6011
  6012					; COMPUTE NUMBER OF BYTES IN BUFFER AND NOTIFY DRIVER OF DATA ARRIVAL
  6013
  6014	006204'02  200 04 0 01 000034 	TLDT10:	LOAD T4,LLVEC,(T1)	;GET ADDRESS OF DRIVER FUNCTION VECTOR
  6015	006205'02  554 03 0 01 000043 		LOAD T3,LLIIC,(T1)	;YES, GET INITIAL COUNT OF BYTES IN BUFFER
  6016	006206'02  550 02 0 01 000043 		LOAD T2,LLICT,(T1)	;GET CURRENT COUNT OF BYTES LEFT FOR INPUT
  6017	006207'02  274 03 0 00 000002 		SUB T3,T2		;COMPUTE NUMBER OF BYTES ALREADY INPUT
  6018						JN LLFIM,(T1),[TXO T3,NS%MSG ;BUFFER BEING RETURNED BECAUSE EOM SEEN
  6019	006210'02  200 16 0 01 000002 			       JRST .+1] ;...
  6020	006211'02  603 16 0 00 000040 
  6021	006212'02  254 00 0 00 010453'
  6022	006213'02  200 02 0 01 000041 		LOAD T2,LLBFI,(T1)	;GET ADDRESS OF DRIVER'S BUFFER
  6023	006214'02  200 01 0 01 000033 		LOAD T1,LLDRV,(T1)	;GET DRIVER CORRELATION CODE
  6024	006215'02  260 17 1 04 000003 		CALL @.NSDAT(T4)	;ADVISE DRIVER THAT INPUT HAS ARRIVED
  6025	006216'02  200 04 0 17 777776 		MOVE T4,TLDLLB		;RESTORE LOGICAL LINK BLOCK ADDRESS
  6026						JUMPN T1,[JN LLFIM,(T4),.+1	;ONLY SET TRUNCATE IF NOT FULL MSG
  6027							  SETONE LLTRM,(T4) ;NOTE TRUNCATION IF DRIVER REQUESTED IT
  6028	006217'02  326 01 0 00 010455'			  JRST .+1]	;...
  6029
  6030					; UPDATE APPROPRIATE COUNTS AND RETURN
  6031
  6032	006220'02  200 01 0 17 777776 		MOVE T1,TLDLLB		;RESTORE LOGICAL LINK BLOCK ADDRESS
  6033	006221'02  402 00 0 01 000043 		SETZRO <LLICT,LLIIC>,(T1) ;CLEAR BYTE COUNTS
  6034	006222'02  402 00 0 01 000041 		SETZRO LLBFI,(T1)	;NOTE WE NO LONGER HAVE AN INPUT BUFFER
  6035	006223'02  263 17 0 00 000000 		RET			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 137
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6036					;TRNMSG - ROUTINE TO DISCARD A SEGMENT BECAUSE MESSAGE IS BEING TRUNCATED
  6037					;
  6038					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  6039					;		CALL TRNMSG
  6040					;RETURNS: +1	 FAILED
  6041					;	  +2	SUCCESS, SEGMENT THROWN AWAY
  6042
  6043	006224'02  265 16 0 00 006171*	TRNMSG:	STKVAR <TMSLLB>
  6044	006225'02  000001  000001
  6045	006226'02  202 01 0 17 777776 		MOVEM T1,TMSLLB		;SAVE LOGICAL LINK BLOCK ADDRESS
  6046
  6047	006227'02  200 01 0 17 777776 	TRNM10:	MOVE T1,TMSLLB		;GET LOGICAL LINK BLOCK ADDRESS
  6048	006230'02  200 02 0 00 007167'		MOVE T2,[POINT 0,0,2]	;GET NUL POINTER (THROW BYTES AWAY)
  6049	006231'02  525 03 0 00 377777 		MOVX T3,.INFIN		;NO LIMIT ON NUMBER TO DISCARD
  6050	006232'02  260 17 0 00 004102'		CALL MOVMSG		;DISCARD THE DATA
  6051	006233'02  263 17 0 00 000000 		 RET			;FAILED
  6052	006234'02  200 01 0 17 777776 		MOVE T1,TMSLLB		;RESTORE LOGICAL LINK BLOCK ADDRESS
  6053	006235'02  200 16 0 01 000002 		JE LLFIM,(T1),RSKP	;IF STILL DON'T HAVE ENTIRE MESSAGE THEN DONE
  6054	006236'02  607 16 0 00 000040 
  6055	006237'02  254 00 0 00 006161*
  6056	006240'02  205 16 0 00 100000 		SETZRO LLTRM,(T1)	;MESSAGE ENTIRELY DISCARDED, STOP TRUNCATING
  6057	006241'02  412 16 0 01 000037 
  6058	006242'02  254 00 0 00 006237*		RETSKP			;DONE, RETURN SUCCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 138
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6059					;SETIBF - ROUTINE TO SET UP AN INPUT BUFFER FOR AN INTERNAL LINK
  6060					;
  6061					;ACCEPTS IN T1/	LOGICAL LINK BLOCK ADDRESS (LINK ASSUMED LOCKED)
  6062					;		CALL SETIBF
  6063					;RETURNS: +1	 FAILED, COULD NOT SET UP BUFFER NOW
  6064					;	  +2	SUCCESS, WITH BUFFER INFO STORED IN LINK BLOCK
  6065
  6066	006243'02  332 00 0 01 000041 	SETIBF:	JN LLBFI,(T1),RSKP	;IF ALREADY HAVE A BUFFER THEN DONE
  6067	006244'02  254 00 0 00 006242*
  6068	006245'02  200 16 0 01 000037 		JN LLDRB,(T1),R		;FAIL IFDRIVER ALREADY REFUSED TO PROVIDE BFR
  6069	006246'02  603 16 0 00 040000 
  6070	006247'02  254 00 0 00 005672*
  6071	006250'02  265 16 0 00 003654*		ASUBR <SBFLLB>
  6072	006251'02  200 04 0 01 000034 		LOAD T4,LLVEC,(T1)	;GET DRIVER FUNCTION VECTOR ADDRESS
  6073	006252'02  200 01 0 01 000033 		LOAD T1,LLDRV,(T1)	;GET DRIVER CORRELATION CODE FOR THIS LINK
  6074	006253'02  260 17 1 04 000002 		CALL @.NSBFR(T4)	;REQUEST DRIVER TO SUPPLY A BUFFER
  6075						 JRST [	MOVE T1,SBFLLB	;RESTORE LOGICAL LINK BLOCK ADDRESS
  6076							SETONE LLDRB,(T1) ;NOTE THAT DRIVER REFUSED TO PROVIDE BUFFER
  6077	006254'02  254 00 0 00 010463'			RET ]		;AND DONE
  6078	006255'02  200 04 0 15 000001 		MOVE T4,SBFLLB		;RESTORE LOGICAL LINK BLOCK ADDRESS
  6079	006256'02  202 01 0 04 000041 		STOR T1,LLBFI,(T4)	;STORE BUFFER ADDRESS
  6080	006257'02  542 02 0 04 000043 		STOR T2,LLICT,(T4)	;STORE COUNT OF BYTES CURRENTLY LEFT IN BUFFER
  6081	006260'02  506 02 0 04 000043 		STOR T2,LLIIC,(T4)	;ALSO STORE AS INITIAL COUNT OF BYTES IN BUFFER
  6082	006261'02  505 01 0 00 441000 		HRLI T1,(POINT 8,)	;FORM POINTER TO FIRST BYTE IN THIS BUFFER
  6083	006262'02  202 01 0 04 000042 		STOR T1,LLBPI,(T4)	;SAVE AS POINTER TO NEXT BYTE TO BE INPUT
  6084	006263'02  603 02 0 00 400000 		TXNE T2,NS%TRN		;DRIVER WANT MESSAGES TRUNCATED IF TOO LONG ?
  6085						JRST [	SETONE LLTRC,(T4) ;YES, NOTE TRUNCATION DESIRED
  6086	006264'02  254 00 0 00 010467'			JRST .+1 ]	;AND CONTINUE
  6087	006265'02  254 00 0 00 006244*		RETSKP			;DONE, RETURN WITH BUFFER INFO IN LINK BLOCK
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 139
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6088					;ROUTINES USED BY DATMSG.....
  6089
  6090					;KILL OFF LINK AFTER PROTOCOL ERROR.
  6091
  6092	006266'02  201 02 0 00 000050 	ABTMSG:	MOVEI T2,.DCX40		;DATA LOSS
  6093	006267'02  202 02 0 15 000017 		MOVEM T2,MSGW1		;SAVE CODE
  6094	006270'02  260 17 0 00 005641'		CALL SHTLK1		;SHUT IT OFF
  6095	006271'02  202 01 0 15 000006 		MOVEM T1,MSGLLB		;SAVE LL BLOCK
  6096	006272'02  201 04 0 00 000070 		MOVEI T4,CNMRFL+CNMDI	;SEND A DI
  6097	006273'02  402 00 0 00 000003 		SETZM T3		;NO OPTDATA
  6098	006274'02  260 17 0 00 003374'		CALL SNDDI		;GO DO IT
  6099						 JRST [	TQO <BLKF>		;NOTE BLOCK NEEDED
  6100							MOVE T1,MSGLLB	;RESTORE BLOCK ADDRESS
  6101							MOVEI T2,LLSDIQ	;NEW STATE
  6102							STOR T2,LLSTA,(T1)
  6103	006275'02  254 00 0 00 010472'			JRST LSIDON]	;AND DONE
  6104	006276'02  260 17 0 00 000000#		CALL SNDCTL		;SEND THE MESSAGE
  6105	006277'02  254 00 0 00 006101'		JRST LSIDON		;DONE
  6106
  6107					;ROUTINE TO FILL IN MESSAGE COUNTS IN MESSAGE BLOCK
  6108
  6109	006300'02  200 03 0 15 000005 	SETCNT:	MOVE T3,MSGBLK		;GET BLOCK ADDRESS
  6110	006301'02  200 04 0 15 000002 		MOVE T4,MSGBYP		;GET CURRENT BYTE POINTER
  6111	006302'02  202 04 0 03 000003 		MOVEM T4,MSBPTR(T3)	;SAVE IT
  6112	006303'02  200 04 0 15 000001 		MOVE T4,MSGCNT		;GET CURRENT COUNT
  6113	006304'02  137 04 0 00 010477'		STOR T4,MSDTC,(T3)	;SAVE IT
  6114	006305'02  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 140
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6115					;ROUTINE TO SEND INTIAL LS MESSAGE TO OTHER END OF THE LINK.
  6116					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  6117					;RETURNS:	+1 FAILED. MESSAGES NOT SENT
  6118					;			T1/ SCHEDULER TEST WORD
  6119					;		+2 SUCCESS. MESSAGES SENT
  6120					;			T1/ LL BLOCK ADDRESS (UNCHANGED)
  6121
  6122	006306'02  200 16 0 01 000002 	TURNON:	JE LLOPI,(T1),RSKP	;IF NOT OPEN FOR READ, DON'T SEND LS
  6123	006307'02  607 16 0 00 000400 
  6124	006310'02  254 00 0 00 006265*
  6125	006311'02  201 03 0 00 000002 		MOVEI T3,MSDAT		;ON THE DATA SUBCHANNEL
  6126	006312'02  135 02 0 00 007214'		LOAD T2,LLMQI,(T1)	;GET MAX QUEUE VALUE
  6127	006313'02  200 16 0 01 000010 		TMNE LLIMS,(T1)		;MESSAGE?
  6128	006314'02  603 16 0 00 010000 
  6129	006315'02  201 02 0 00 000001 		MOVEI T2,1		;YES. ONE MESSAGE THEN
  6130	006316'02  254 00 0 00 000000#		CALLRET SNDLS		;SEND IT OFF
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 141
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6131					;COLLECTION OF ROUTINES TO GET FIELDS FROM A MESSAGE
  6132					;MOST ARE RESIDENT BECAUSE THEY ARE USED BY THE CHANNEL 7 CODE
  6133
  6134						RESCD			;CALLED FROM SCHEDULER
  6135
  6136					;GET TWO BYTE FIELD
  6137					;CLOBBERS T3, PRESERVES T4
  6138
  6139	000706'01  375 00 0 15 000001 	GETTWO:	GETBYM (MSGCNT,MSGBYP,R)		;GET A BYTE, RETURN IF NONE
  6140	000707'01  254 00 0 00 000613*
  6141	000710'01  134 02 0 15 000002 
  6142	000711'01  246 02 0 00 777770 		LSHC T2,-10		;SAVE LOW ORDER BYTE
  6143	000712'01  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,R)		;GET NEXT ONE
  6144	000713'01  254 00 0 00 000707*
  6145	000714'01  134 02 0 15 000002 
  6146	000715'01  246 02 0 00 000010 		LSHC T2,10		;COMBINE BYTES
  6147	000716'01  254 00 0 00 000705*		RETSKP			;AND DONE
  6148
  6149					;COPY ASCII STRING
  6150					;	T3/ POINTER TO COPY TO
  6151					;	T4/ MAX COUNT OF STRING
  6152					;RETURNS:
  6153					;	+1 FAILURE. BAD MESSAGE
  6154					;	+2 SUCCESS. T2/ COUNT OF BYTES COPIED
  6155
  6156	000717'01  334 02 0 00 002322'	GTBNRY:	SKIPA T2,[POINT 8,0(T3)] ;ENTRY FOR OCTET COPY
  6157	000720'01  200 02 0 00 002201'	GTASCI:	MOVE T2,[POINT 7,0(T3)]	;ENTRY FOR ASCII COPY
  6158	000721'01  265 16 0 00 000000*	GTASC0:	ACVAR <W1,W2>		;ENTRY FOR SKPFLD
  6159	000722'01  200 05 0 00 000002 		MOVE W1,T2		;SAVE POINTER
  6160						GETBYM (MSGCNT,MSGBYP,[SETZM T2		;GET COUNT FIELD
  6161	000723'01  375 00 0 15 000001 				       RET])		;DONE
  6162	000724'01  254 00 0 00 002323'
  6163	000725'01  134 02 0 15 000002 
  6164	000726'01  313 02 0 00 000004 		CAMLE T2,T4		;WITHIN RANGE?
  6165	000727'01  263 17 0 00 000000 		RET			;NO.
  6166	000730'01  200 06 0 00 000002 		MOVE W2,T2		;SAVE COUNT
  6167	000731'01  336 04 0 00 000002 		SKIPN T4,T2		;SAVE COUNT
  6168	000732'01  254 00 0 00 000740'		JRST GTASCD		;NO COUNT
  6169	000733'01  375 00 0 15 000001 	GTASC1:	GETBYM (MSGCNT,MSGBYP,R)
  6170	000734'01  254 00 0 00 000713*
  6171	000735'01  134 02 0 15 000002 
  6172	000736'01  136 02 0 00 000005 		IDPB T2,W1		;SAVE IT
  6173	000737'01  367 04 0 00 000733'		SOJG T4,GTASC1		;DO ALLOF THEM
  6174	000740'01  400 02 0 00 000000 	GTASCD:	SETZ T2,		;GET A NULL
  6175	000741'01  136 02 0 00 000005 		IDPB T2,W1		;TIE OFF STRING
  6176	000742'01  200 02 0 00 000006 		MOVE T2,W2		;RETURN COUNT
  6177	000743'01  254 00 0 00 000716*		RETSKP			;AND DONE
  6178
  6179						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 142
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6180
  6181					;MORE BYTE MANIPULATION ROUTINES
  6182
  6183					;SKIP AN IMAGE FIELD
  6184
  6185	000744'01  375 00 0 15 000001 	SKPFLD:	GETBYM (MSGCNT,MSGBYP,R)		;GET IMAGE COUNT
  6186	000745'01  254 00 0 00 000734*
  6187	000746'01  134 02 0 15 000002 
  6188	000747'01  322 02 0 00 000743*		JUMPE T2,RSKP		;IF NO BYTES, DONE
  6189	000750'01  210 04 0 00 000002 		MOVN T4,T2		;GET NEG OF COUNT
  6190	000751'01  273 04 0 15 000001 		ADDB T4,MSGCNT		;COMPUTE RESIDUE
  6191	000752'01  321 04 0 00 000745*		JUMPL T4,R		;IF MESSAGE TOO SMALL, ERROR
  6192	000753'01  133 02 0 15 000002 		ADJBP T2,MSGBYP		;MODIFY BYTE POINTER
  6193	000754'01  202 02 0 15 000002 		MOVEM T2,MSGBYP		;AND UPDATE IT
  6194	000755'01  254 00 0 00 000747*		RETSKP			;DONE
  6195
  6196					;GET AN EXTENSIBLE FIELD
  6197
  6198	000756'01  403 03 0 00 000004 	GETEXT:	SETZB T3,T4		;INIT ACCUMULATOR AND COUNTER
  6199	000757'01  375 00 0 15 000001 	GETEX1:	GETBYM (MSGCNT,MSGBYP,R)		;GET NEXT BYTE
  6200	000760'01  254 00 0 00 000752*
  6201	000761'01  134 02 0 15 000002 
  6202	000762'01  350 00 0 00 000004 		AOS T4			;GOT ANOTHER ONE
  6203	000763'01  246 02 0 00 777771 		LSHC T2,-7		;PUT DATA PART IN ACCUMULATOR
  6204	000764'01  622 02 0 00 000001 		TXZE T2,1		;WAS IT EXTENDED?
  6205	000765'01  254 00 0 00 000757'		JRST GETEX1		;YES. GET NEXT THEN
  6206	000766'01  221 04 0 00 000007 		IMULI T4,7		;COMPUTE GOOD BITS IN ACCUMULATOR
  6207	000767'01  246 02 0 04 000000 		LSHC T2,0(T4)		;PUT FIELD IN T2
  6208	000770'01  254 00 0 00 000755*		RETSKP			;AND DONE
  6209
  6210
  6211					;MAKE AN EXTENSIBLE FIELD
  6212					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  6213					;		T3/ THE VALUE
  6214					;RETURNS:	+1
  6215					;PRESERVES T1
  6216
  6217	000771'01  201 02 0 00 000177 	MAKEXT:	MOVEI T2,177		;GET EXTENSIBLE FIELD MASK
  6218	000772'01  404 02 0 00 000003 		AND T2,T3		;GET A BYTE'S WORTH
  6219	000773'01  242 03 0 00 777771 		LSH T3,-7		;ADJUST THE REMAINING QUANTITY
  6220	000774'01  332 00 0 00 000003 		SKIPE T3		;MORE BYTES TO COME?
  6221	000775'01  660 02 0 00 000200 		TXO T2,NSPEXT		;YES, PUT IN EXTENSIBLE FLAG BIT
  6222	000776'01  260 17 0 00 000207'		CALL ONEBYT		;PUT BYTE IN MESSAGE
  6223	000777'01  326 03 0 00 000771'		JUMPN T3,MAKEXT		;IF MORE, GO DO IT
  6224	001000'01  263 17 0 00 000000 		RET			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 143
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6225
  6226					;ROUTINE USED BY CI AND CC TO PROCESS COMMON FIELDS
  6227
  6228						SWAPCD			;SWAPPABLE
  6229
  6230	006317'02  375 00 0 15 000001 	CIPSRV:	GETBYM (MSGCNT,MSGBYP,R)		;GET SERVICES
  6231	006320'02  254 00 0 00 006247*
  6232	006321'02  134 02 0 15 000002 
  6233	006322'02  640 02 0 00 000001 		TXC T2,1
  6234	006323'02  602 02 0 00 000363 		TRNE T2,363		;MUST BE NORMAL LINK AND NO MSG ACK
  6235	006324'02  263 17 0 00 000000 		RET			;NO. CAN'T HAVE IT
  6236	006325'02  242 02 0 00 777776 		LSH T2,-2		;GET FCOPT FIELD
  6237	006326'02  306 02 0 00 000003 		CAIN T2,3		;A VALID FLOW CONTROL?
  6238	006327'02  263 17 0 00 000000 		RET			;NO.
  6239	006330'02  202 02 0 15 000017 		MOVEM T2,MSGW1		;YES. SAVE IT
  6240	006331'02  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,R)		;GET LINK PRI
  6241	006332'02  254 00 0 00 006320*
  6242	006333'02  134 02 0 15 000002 
  6243	006334'02  260 17 0 00 000000#		CALL GETTWO		;GET SEGSIZE
  6244	006335'02  263 17 0 00 000000 		 RET			;BAD
  6245	006336'02  202 02 0 15 000020 		MOVEM T2,MSGW2		;SAVE IT
  6246	006337'02  254 00 0 00 006310*		RETSKP			;ALL GOOD
  6247
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 144
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6248
  6249					;REQUEST QUEUER ROUTINES
  6250					;SEND CONTROL MESSAGE
  6251					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  6252					;		T2/ MESSAGE BLOCK
  6253					;RETURNS:	+1 ALWAYS
  6254
  6255						RESCD
  6256
  6257	001001'01  265 16 0 00 000672*	SNDCTL:	SAVET			;SAVE ALL REGISTERS
  6258	001002'01  265 16 0 00 000000*		ASUBR <SAVLL,SAVMSG>	;SAVE ARGS
  6259	001003'01  200 03 0 01 000017 		MOVE T3,LLBPCT(T1)	;GET MESSAGE COUNT
  6260	001004'01  137 03 0 00 002325'		STOR T3,MSCNT,(T2)	;STORE IN THE BLOCK
  6261	001005'01  200 16 0 01 000002 		TMNE LLLOC,(T1)		;LOCAL?
  6262	001006'01  603 16 0 00 200000 
  6263	001007'01  254 00 0 00 001032'		 JRST CTLLCL		;YES. GO HANDLE IT
  6264	001010'01  135 01 0 00 002326'	SNDSG0:	LOAD T1,LLPRT,(T1)	;GET PORT I.D.
  6265					;	HRLI T1,MSGPST		;POSTING ADDRESS
  6266	001011'01  505 01 0 00 000531*		HRLI T1,RELRES		;MAKE DRIVER RELEASE THE BLOCK
  6267	001012'01  265 16 0 00 000636*	SNDMSG:	STKVAR <SAVPST,SAVFF>	;TEMP SAVE LOCATIONS
  6268	001013'01  000002  000002
  6269	001014'01  202 00 0 17 777775 		MOVEM F,SAVFF		;SAVE F
  6270	001015'01  200 00 0 00 000002 		MOVE F,T2		;UNIQUE CODE FOR POST
  6271	001016'01  200 16 0 02 000001 		TMNE MSMS1,(T2)		;SENT THIS MESSAGE ONCE YET?
  6272	001017'01  603 16 0 00 010000 
  6273	001020'01  661 03 0 00 400000 		TXO T3,1B0		;YES. TELL DRIVER OF THIS THEN
  6274	001021'01  205 16 0 00 010000 		SETONE MSMS1,(T2)	;SAY SENT IT ONCE
  6275	001022'01  436 16 0 02 000001 
  6276	001023'01  201 02 0 02 000007 		MOVEI T2,MSHDR(T2)	;GET DATA PORTION OF MESSAGE
  6277	001024'01  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)	;MAKE A BYTE POINTER
  6278	001025'01  556 01 0 17 777776 		HLRZM T1,SAVPST		;SAVE POSTING ADDRESS
  6279	001026'01  260 17 0 00 000000*		CALL DCNMSO		;SEND THE MESSAGE
  6280						 JRST [	MOVE T1,F	;FAILED. PORT MUST BE TURNED OFF.
  6281									;SET UP FOR POST IF ANY
  6282							SKIPE T2,SAVPST	;WANT A POST ON DONE?
  6283							CALL 0(T2)	;YES. DO IT THEN
  6284	001027'01  254 00 0 00 002327'			JRST .+1]	;AND GO FINISH UP
  6285	001030'01  200 00 0 17 777775 		MOVE F,SAVFF		;RESTORE F
  6286	001031'01  263 17 0 00 000000 		RET			;AND DONE
  6287
  6288					;CONNECTION IS TO A TASK ON THIS NODE
  6289
  6290	001032'01  205 16 0 00 040000 	CTLLCL:	SETONE MSLCL,(T2)	;REMEMBER IS LOCAL
  6291	001033'01  436 16 0 02 000001 
  6292	001034'01  335 04 0 00 000000*		SKIPGE T4,NSPLPB	;IS THERE A RUNNING LOOPBACK LINE?
  6293						JRST [STOR T4,LLPRT,(T1);YES, SAY WHICH PORT
  6294	001035'01  254 00 0 00 002333'		      JRST SNDSG0]	;GIVE "LOCAL MESSAGE" TO DRIVER FOR LOOPBACK
  6295	001036'01  254 00 0 00 001070'		CALLRET ONMSQ		;AND GO DO IT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 145
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6296
  6297					;VARIOUS QUEUENING ROUTINES USED BY INT, SCHED, AND PROCESS LEVELS
  6298
  6299					;ROUTINE TO PUT A MESSGE ON NSPTSK'S QUEUE
  6300
  6301	001037'01  201 03 0 00 000661*	ONMSGQ:	MOVEI T3,MSGQ		;GET QUEUE HEAD
  6302	001040'01  254 00 0 00 001331'		CALLRET PUTONQ		;PUT DATA ON
  6303
  6304					;ROUTINE TO QUEUE UP EXPENDED MESSAGE BLOCKS FROM DTESRV
  6305
  6306					   REPEAT 0,<			;NOT USED PRESETNLY
  6307					MSGPST:	MOVE T2,RMSGQ		;GET OLD HEAD
  6308						MOVEM T1,RMSGQ		;MAKE NEW HEAD
  6309						STOR T2,MSLNK,(T1)	;LINK IN
  6310						RET			;AND DONE
  6311					   >				;END OF REPEAT 0
  6312
  6313					;ROUTINE CALLED FROM INTERRUPT LEVEL TO PUT A MESSAGE ON THE SCHEDULER'S
  6314					;QUEUE
  6315					;		T2/ DATA ADDRESS
  6316
  6317	001041'01  201 02 0 02 777771 	NSPQ::	MOVEI T2,-MSHDR(T2)	;GET POINTER TO HEADER
  6318	001042'01  201 03 0 00 000000*		MOVEI T3,SMSGQ		;GET QUEUE HEAD
  6319	001043'01  254 00 0 00 001331'		CALLRET PUTONQ		;AND DO IT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 146
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6320
  6321					;ROUTINE TO SEND A DATA,LS, OR INT MESSAGE
  6322					;ACCEPTS:	T1/ LL BLOCK
  6323					;		T2/ MESSAGE BLOCK
  6324
  6325	001044'01  265 16 0 00 001002*	SNDSEG::ASUBR <SNLBLK,SNMSG>
  6326	001045'01  200 03 0 01 000017 		MOVE T3,LLBPCT(T1)	;GET BYTE COUNT
  6327	001046'01  137 03 0 00 002325'		STOR T3,MSCNT,(T2)	;TO THE MESSAGE
  6328	001047'01  550 03 0 01 000002 		LOAD T3,LLLNK,(T1)	;GET LINK I.D.
  6329	001050'01  137 03 0 00 002335'		STOR T3,MSLLA,(T2)	;TO THE MESSAGE
  6330	001051'01  200 16 0 01 000002 		TMNE LLLOC,(T1)		;LOCAL?
  6331	001052'01  603 16 0 00 200000 
  6332	001053'01  254 00 0 00 001076'		 JRST SNDLCL		;YES.
  6333	001054'01  260 17 0 00 001065'	LPBSEG:	CALL ONSEGQ		;PUT IT ON THE SEG QUEUE
  6334	001055'01  135 03 0 00 002325'	SNDSE2:	LOAD T3,MSCNT,(T2)	;GET COUNT
  6335	001056'01  135 01 0 00 002326'		LOAD T1,LLPRT,(T1)	;PORT I.D.
  6336	001057'01  505 01 0 00 001165'		HRLI T1,SEGPST		;POSTING ADDRESS
  6337	001060'01  205 16 0 00 200000 		SETONE MSPST,(T2)	;SAY WAITING FOR POST
  6338	001061'01  436 16 0 02 000000 
  6339	001062'01  260 17 0 00 001012'		CALL SNDMSG		;SEND IT
  6340	001063'01  200 01 0 15 000001 	SNDSE1:	MOVE T1,SNLBLK		;GET BLOCK ADDRESS
  6341	001064'01  263 17 0 00 000000 		RET			;AND DONE
  6342
  6343					;ROUTINE TO PUT A DATA,LS, OR INT SEGEMENT ON THE SEND Q
  6344					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  6345					;		T2/ MESSAGE BLOCK
  6346
  6347	001065'01  350 00 0 01 000023 	ONSEGQ:	INCR LLQOU,(T1)		;ONE MORE ON Q
  6348	001066'01  201 03 0 01 000021 	ONSGQ0:	MOVEI T3,LLSEGQ(T1)	;GET HEADER
  6349	001067'01  254 00 0 00 001331'		CALLRET PUTONQ		;PUT SEG ON THE Q
  6350
  6351					;LOCAL ROUTINE TO PUT MESSAGE ON INPUT QUEUE
  6352
  6353	001070'01  265 16 0 00 000441*	ONMSQ:	NOSKD1			;NO SCHEDULING
  6354	001071'01  260 17 0 00 001037'		CALL ONMSGQ		;PUT MESSAGE ON THE QUEUE
  6355	001072'01  265 16 0 00 000445*		OKSKD1			;AND SCHEDULING
  6356	001073'01  263 17 0 00 000000 		RET			;AND DONE
  6357
  6358					;ENTRY USED TO RESEND A NACKED MESSAGE
  6359
  6360	001074'01  265 16 0 00 001044*	SNDSE0:	ASUBR <SNLBLK,SNMSG>
  6361	001075'01  254 00 0 00 001055'		CALLRET SNDSE2		;SEND IT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 147
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6362
  6363					;SNDSEG CONTINUED...
  6364					;ROUTINE TO SEND SEGMENT TO A LOCAL CONNECTION
  6365
  6366	001076'01  205 16 0 00 040000 	SNDLCL:	SETONE MSLCL,(T2)	;SAY IS LOCAL
  6367	001077'01  436 16 0 02 000001 
  6368	001100'01  335 04 0 00 001034*		SKIPGE T4,NSPLPB	;IS THERE A RUNNING LOOPBACK LINE?
  6369						JRST [STOR T4,LLPRT,(T1);YES, SAY WHICH PORT
  6370	001101'01  254 00 0 00 002336'		      JRST LPBSEG]	;GIVE "LOCAL MESSAGE" TO DRIVER FOR LOOPING
  6371	001102'01  135 03 0 00 002230'		LOAD T3,MSMFL,(T2)	;GET FLAGS
  6372	001103'01  602 03 0 00 000020 		TXNE T3,DATFLI		;IS THIS AN INTERRUPT MESSAGE?
  6373	001104'01  254 00 0 00 001127'		JRST SNDBAD		;YES. GO HANDLE VIA NSPTSK
  6374	001105'01  550 02 0 01 000002 		LOAD T2,LLLNK,(T1)	;GET OUR I.D.
  6375	001106'01  135 01 0 00 002174'		LOAD T1,LLHLK,(T1)	;GET I.D. OF OTHER PROCESS
  6376	001107'01  260 17 0 00 000007'		LLLOCK			;LOCK UP THE TREE
  6377	001110'01  260 17 0 00 000070'		CALL LLLKUP		;GO FIND ENTRY
  6378						 JRST [	LLLULK		;RELEASE THE TREE
  6379	001111'01  254 00 0 00 002340'			JRST SNDBAD ]	;NOT THERE
  6380	001112'01  260 17 0 00 000014'		LLLULK			;RELEASE THE TREE
  6381	001113'01  200 02 0 15 000002 		MOVE T2,SNMSG		;GET MESSAGE BLOCK
  6382	001114'01  265 16 0 00 001070*		NOSKD1			;PROTECT LINK STATE
  6383	001115'01  200 16 0 01 000002 		JN LLINT,(T1),SNDBA1	;IF INTERNAL LINK, PUT ON BACKGOUND TASK'S QUEUE
  6384	001116'01  603 16 0 00 004000 
  6385	001117'01  254 00 0 00 001126'
  6386	001120'01  135 03 0 00 002200'		LOAD T3,LLSTA,(T1)	;GET STATE OF THE LINK
  6387	001121'01  302 03 0 00 000004 		CAIE T3,LLSRUN		;RUNNING?
  6388	001122'01  254 00 0 00 001126'		JRST SNDBA1		;NO.
  6389	001123'01  260 17 0 00 001132'		CALL ONRAWQ		;GO PUT ON THE QUEUE
  6390	001124'01  265 16 0 00 001072*		OKSKD1			;ALL DONE
  6391	001125'01  254 00 0 00 001063'		JRST SNDSE1		;GO Q IT UP ON SEG Q
  6392
  6393					;ERROR ROUTINES
  6394
  6395	001126'01  265 16 0 00 001124*	SNDBA1:	OKSKD1
  6396	001127'01  200 02 0 15 000002 	SNDBAD:	MOVE T2,SNMSG		;GET MESSAGE ADDRESS
  6397	001130'01  260 17 0 00 001070'		CALL ONMSQ		;PUT DATA MESSAGE ON NSPTSK'S Q
  6398	001131'01  254 00 0 00 001063'		JRST SNDSE1		;AND DONE FOR NOW
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 148
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6399
  6400					;ROUTINES USED BY INTERRUPT LEVEL TO QUEUE UP PACKETS
  6401
  6402					;PUT A DATA MESSAGE ON THE LINK'S QUEUE
  6403					;	T1/ LL BLOCK ADDRESS
  6404					;	T2/ MESSAGE BLOCK
  6405
  6406	001132'01  265 16 0 00 001114*	ONRAWQ:	NOSKD1			;HOLD OFF SCHEDULER
  6407	001133'01  135 03 0 00 002230'		LOAD T3,MSMFL,(T2)	;GET MESSAGE FLAGS
  6408	001134'01  602 03 0 00 000004 		TXNE T3,ACKFLM		;IS IT AN ACK?
  6409						 JRST [	JN LLLSA,(T1),ONRAW2 ;IN LS SEND WAIT?
  6410	001135'01  254 00 0 00 002342'			JRST ONRAW1]	;NO. GO ON
  6411	001136'01  135 03 0 00 002346'		LOAD T3,LLDMT,(T1)	;ACCOUNT FOR ONE MORE DATA MESSAGE
  6412	001137'01  350 00 0 00 000003 		AOS T3
  6413	001140'01  135 04 0 00 002252'		LOAD T4,LLMQI,(T1)	;GET MAXIMUM INPUT QUEUE LENGTH
  6414	001141'01  313 03 0 00 000004 		CAMLE T3,T4		;TOO MANY ON Q?
  6415						JRST [	SETONE LLFNN,(T1) ;YES.
  6416							PUSH P,T1	;SAVE LL BLOCK
  6417							MOVE T1,T2	;GET DATA BLOCK ADDRESS
  6418							CALL RELRES	;GET RID OF IT
  6419							POP P,T1
  6420							CALL DATINR	;REQUEST INT
  6421	001142'01  254 00 0 00 002347'			JRST ONRAW3]	;AND GO WRAP UP
  6422	001143'01  137 03 0 00 002346'		STOR T3,LLDMT,(T1)	;NO. SAVE NEW COUNT
  6423	001144'01  135 16 0 00 002357'		OPSTRM <AOS T3,>,LLDRW,(T1) ;INCREMENT DATA MESSAGE COUNT
  6424	001145'01  350 03 0 00 000016 
  6425	001146'01  137 16 0 00 002357'
  6426	001147'01  306 03 0 00 000001 		CAIN T3,1		;NO. IS THIS NOT THE FIRST ONE?
  6427	001150'01  260 17 0 00 001157'	ONRAW2:	CALL DATINR		;GIVE INT
  6428	001151'01  200 03 0 01 000005 	ONRAW1:	MOVE T3,LLMSG(T1)	;GET HEAD OF QUEUE
  6429	001152'01  202 02 0 01 000005 		MOVEM T2,LLMSG(T1)	;STORE NEW HEAD
  6430	001153'01  542 03 0 02 000000 		STOR T3,MSLNK,(T2)	;COMPLETE LINK
  6431	001154'01  260 17 0 00 000000*		CALL CHKLLT		;CHECK FOR TTY ON THIS LL
  6432	001155'01  265 16 0 00 001126*	ONRAW3:	OKSKD1
  6433	001156'01  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 149
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6434
  6435					;GIVE DATA INTERUPT
  6436
  6437	001157'01  265 16 0 00 000000*	DATINR:	SAVEAC <T1,T2>		;SAVE VOLATILE REGS
  6438	001160'01  554 02 0 01 000003 		LOAD T2,LLFRK,(T1)	;GET FORK I.D.
  6439	001161'01  135 16 0 00 002360'		OPSTR <SOSL T1,>,LLDRC,(T1) ;WANT DATA INT?
  6440	001162'01  371 01 0 00 000016 
  6441	001163'01  260 17 0 00 000000*		CALL PSIRQ		;YES. GIVE IT
  6442	001164'01  263 17 0 00 000000 		RET			;AND DONE
  6443
  6444					;POSTING ADDRESS FOR SEGMENTS. T1= MESSAGE ADDRESS
  6445
  6446	001165'01  200 16 0 01 000000 	SEGPST:	JN MSRLS,(T1),RELRES	;IF "RELEASED", GO DO IT
  6447	001166'01  321 16 0 00 001011*
  6448	001167'01  205 16 0 00 200000 		SETZRO MSPST,(T1)	;NOT. SAY POSTED
  6449	001170'01  412 16 0 01 000000 
  6450	001171'01  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 150
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6451
  6452					;ROUTINE TO HANDLE ACK OR NACK FOR A SUBCHANNEL.
  6453					;ACCEPTS:	T1/ LL BLOCK ADDRESS
  6454					;		T2/ ACK OR NACK #
  6455					;		T3/ SUBCHANNEL OF THE ACK/NACK
  6456					;RETURNS:	+1 ALWAYS. ALL REGS PRESERVED
  6457
  6458	001172'01  200 16 0 01 000002 	ACKCHN:	TMNE LLLOC,(T1)		;LOCAL?
  6459	001173'01  603 16 0 00 200000 
  6460						 JRST [SKIPL NSPLPB	;YES, IS THERE A RUNNING LOOPBACK LINE?
  6461						       JRST ACKDON	;NO
  6462	001174'01  254 00 0 00 002361'		       JRST .+1]	;YES, MESSAGE MUST BE QUEUED AS REMOTE
  6463	001175'01  265 16 0 00 001001*		SAVET			;SAVE ALL REGS
  6464	001176'01  265 16 0 00 000430*		ACVAR <W1,W2,W3>	;GET WORK REGS
  6465	001177'01  265 16 0 00 001012*		STKVAR <LLBLK,ACKNO,ACKCHL,LNKADR>
  6466	001200'01  000004  000004
  6467	001201'01  202 01 0 17 777776 		MOVEM T1,LLBLK		;SAVE LL BLOCK
  6468	001202'01  202 03 0 17 777774 		MOVEM T3,ACKCHL		;SAVE CHANNEL
  6469	001203'01  202 02 0 17 777775 		MOVEM T2,ACKNO
  6470	001204'01  622 02 0 00 010000 		TRZE T2,ACKBIT		;IS IT A NACK?
  6471						JRST [	CALL ACKCHN	;DO IT
  6472	001205'01  254 00 0 00 002364'			JRST DONACK]	;AND GO DO THE NACK
  6473	001206'01  405 02 0 00 007777 		ANDI T2,7777		;GET SEG NUMBER ONLY
  6474	001207'01  202 02 0 17 777775 		MOVEM T2,ACKNO		;SAVE ACK NUMBER
  6475	001210'01  336 05 0 01 000021 	ACKLP1:	SKIPN W1,LLSEGQ(T1)	;HAVE ANY SEGS?
  6476	001211'01  254 00 0 00 001243'		JRST ACKDON		;NO. ALL DONE THEN
  6477	001212'01  400 06 0 00 000000 		SETZ W2,		;NO PREVIOUS
  6478	001213'01  553 00 0 00 000005 		HRRZS W1		;GET TOP SEG
  6479					; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 151
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6480
  6481					;ACKCHN CONTINUED...
  6482					;LOOP TO PROCESS QUEUE
  6483
  6484	001214'01  135 03 0 00 002366'	ACKLOP:	LOAD T3,MSTOM,(W1)	;GET TYPE
  6485	001215'01  312 03 0 17 777774 		CAME T3,ACKCHL		;IS THIS THE PROPER SUBCHANLEL?
  6486	001216'01  254 00 0 00 001240'		JRST ACKNXT		;NO. GO ON
  6487	001217'01  135 03 0 00 002367'		LOAD T3,MSSEG,(W1)	;GET SEGMENT #
  6488	001220'01  274 03 0 17 777775 		SUB T3,ACKNO		;COMPUTE "AGE"
  6489	001221'01  405 03 0 00 007777 		ANDI T3,7777		;MOD 4096
  6490	001222'01  332 00 0 00 000003 		SKIPE T3		;IS IT THE VERY ONE WE ARE DOING?
  6491	001223'01  303 03 0 00 000036 		CAILE T3,MAXDIF		;NO. IS IT ACKABLE ANYWAY?
  6492	001224'01  334 00 0 00 000000 		SKIPA			;YES. ACK IT THEN
  6493	001225'01  254 00 0 00 001240'		JRST ACKNXT		;NO.
  6494	001226'01  201 04 0 01 000021 		MOVEI T4,LLSEGQ(T1)	;THE Q ADDRESS
  6495	001227'01  260 17 0 00 001250'		CALL UNQSEG		;REMOVE SEGEMENT
  6496	001230'01  370 00 0 01 000023 		DECR LLQOU,(T1)		;ONE LESS SEG IN QUEUER
  6497	001231'01  250 01 0 00 000005 		EXCH T1,W1		;GET BLOCK
  6498	001232'01  260 17 0 00 001166*		CALL RELRES		;FREE IT
  6499	001233'01  200 01 0 00 000005 		MOVE T1,W1
  6500	001234'01  322 06 0 00 001210'		JUMPE W2,ACKLP1		;IF AT THE HEAD, START OVER
  6501	001235'01  550 05 0 06 000000 		LOAD W1,MSLNK,(W2)	;GET THE ONE TO DO NEXT
  6502	001236'01  326 05 0 00 001214'		JUMPN W1,ACKLOP		;DO IT IF ONE THERE
  6503	001237'01  254 00 0 00 001243'		JRST ACKDON		;ALL DONE
  6504
  6505	001240'01  200 06 0 00 000005 	ACKNXT:	MOVE W2,W1		;SAVE PREVIOUS
  6506	001241'01  550 05 0 05 000000 		LOAD W1,MSLNK,(W1)	;GET NEXT
  6507	001242'01  326 05 0 00 001214'		JUMPN W1,ACKLOP		;DO ALL
  6508	001243'01  260 17 0 00 001154*	ACKDON:	CALL CHKLLT		;CHECK FOR TTY ON THIS LL
  6509						JN LLINT,(T1),[
  6510							CALL INTOUT	;IF INTERNAL LINK SEND ANY OUTPUT STILL LEFT
  6511							 JFCL		;IGNORE FAILURE HERE
  6512	001244'01  200 16 0 01 000002 			JRST .+1]	;CONTINUE
  6513	001245'01  603 16 0 00 004000 
  6514	001246'01  254 00 0 00 002370'
  6515	001247'01  263 17 0 00 000000 		RET			;AND DONE
  6516
  6517					;LOCAL ROUTINE TO TAKE A SEGMENT OFF OF A SEGMENT Q
  6518
  6519	001250'01			UNQSEG:	JUMPE W2,[LOAD T3,MSLNK,(W1) ;IS HEAD
  6520							HRRM T3,0(T4)	;MAKE NEW HEAD
  6521							SKIPN T3	;NOW EMPTY?
  6522							SETZM 0(T4)	;YES
  6523	001250'01  322 06 0 00 002373'			RET]		;AND DONE
  6524	001251'01  550 03 0 05 000000 		LOAD T3,MSLNK,(W1)	;GET LINK
  6525	001252'01  542 03 0 06 000000 		STOR T3,MSLNK,(W2)	;REMOVE FROM Q
  6526	001253'01  336 00 0 00 000003 		SKIPN T3		;REMOVING THE TAIL?
  6527	001254'01  506 06 0 04 000000 		HRLM W2,0(T4)		;YES. MAKE NEW TAIL THEN
  6528	001255'01  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 152
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6529
  6530					;ROUTINE TO PROCESS A NACK
  6531					;	T1/ BLOCK ADDRESS
  6532					;	NACK NUMBER IN THE STKVAR "ACKNO"
  6533
  6534	001256'01  350 02 0 17 777775 	DONACK:	AOS T2,ACKNO		;GET THE ACK #
  6535	001257'01  405 02 0 00 007777 		ANDI T2,7777		;AND GET MODULO 4096
  6536	001260'01  202 02 0 17 777775 		MOVEM T2,ACKNO		;SAVE IT
  6537	001261'01  400 06 0 00 000000 		SETZ W2,		;NO HEAD
  6538	001262'01  336 05 0 01 000021 	DONAC2:	SKIPN W1,LLSEGQ(T1)	;HAVE ANY SEGS?
  6539	001263'01  263 17 0 00 000000 		RET			;NO. ALL DONE
  6540	001264'01  553 00 0 00 000005 		HRRZS W1		;GET FIRST MESSAGE
  6541	001265'01  135 03 0 00 002366'	DONAC1:	LOAD T3,MSTOM,(W1)	;GET MESSAGE TYPE
  6542	001266'01  312 03 0 17 777774 		CAME T3,ACKCHL		;THE CORRECT CHANNEL?
  6543	001267'01  254 00 0 00 001320'		JRST DONNXT		;NO
  6544	001270'01  135 03 0 00 002367'		LOAD T3,MSSEG,(W1)	;GET SEG #
  6545	001271'01  274 03 0 17 777775 		SUB T3,ACKNO		;COMPUTE "AGE"
  6546	001272'01  405 03 0 00 007777 		ANDI T3,7777		;""
  6547	001273'01  303 03 0 00 000036 		CAILE T3,MAXDIF		;IS IT ONE BEING NACKED?
  6548	001274'01  254 00 0 00 001320'		JRST DONNXT		;NO
  6549	001275'01  350 00 0 00 000000*		AOS NAKCNT		;COUNT THIS SEGMENT
  6550	001276'01  200 03 0 17 777774 		MOVE T3,ACKCHL		;YES. GET CHANNEL
  6551	001277'01  302 03 0 00 000002 		CAIE T3,MSDAT		;DATA?
  6552	001300'01  254 00 0 00 001316'		JRST DONRES		;NO. RESEND NOW
  6553	001301'01  135 03 0 00 002205'		LOAD T3,LLMFC,(T1)	;GET FLOW CONTROL TYPE
  6554	001302'01  306 03 0 00 000001 		CAIN T3,1		;SEGMENT?
  6555						JRST [	INCR LLMSM,(T1)	;YES. ACCOUNT FOR THE MACK
  6556	001303'01  254 00 0 00 002400'			JRST .+1]
  6557						JN LLBRP,(T1),[
  6558							CAIE T3,2	;MESSAGE FLOW CONTROL?
  6559							JRST DONRQ	;NO. GO ARRANGE FOR REQUEUE
  6560							LOAD T3,MSMFL,(W1) ;YES. GET MESSAGE FLAGS
  6561							JXE T3,DATEOM,DONRQ ;IS THIS THE EOM?
  6562							INCR LLMSM,(T1)	;YES. INCREMENT REQUEST COUNT
  6563	001304'01  200 16 0 01 000007 			JRST DONRQ]	;AND REQUEUE IT
  6564	001305'01  321 16 0 00 002404'
  6565	001306'01  302 03 0 00 000001 		CAIE T3,1		;YES. SEGMENT?
  6566	001307'01  254 00 0 00 001316'		JRST DONRES		;NO. RESEND NOW
  6567	001310'01  135 03 0 00 002225'		LOAD T3,LLMSM,(T1)	;GET SEG COUNT TO SEND
  6568	001311'01  332 00 0 00 000003 		SKIPE T3		;ANY THERE?
  6569	001312'01  602 03 0 00 000200 		TXNE T3,200		;AND IS IT POSITIVE?
  6570	001313'01  254 00 0 00 001324'		JRST DONRQ		;NO.
  6571	001314'01  561 16 0 00 777400 		DECR LLMSM,(T1)		;YES. COUNT DOWN
  6572	001315'01  272 16 0 01 000007 
  6573	001316'01  200 02 0 00 000005 	DONRES:	MOVE T2,W1		;GET SEG
  6574	001317'01  260 17 0 00 001074'		CALL SNDSE0		;RESEND IT NOW
  6575	001320'01  200 06 0 00 000005 	DONNXT:	MOVE W2,W1		;NEW HEAD
  6576	001321'01  550 05 0 06 000000 		LOAD W1,MSLNK,(W2)	;GET NEXT
  6577	001322'01  326 05 0 00 001265'		JUMPN W1,DONAC1		;IF MORE, DO IT
  6578	001323'01  263 17 0 00 000000 		RET			;DONE
  6579
  6580	001324'01  205 16 0 00 020000 	DONRQ:	SETONE MSNAK,(W1)	;REMEMBER IS NAKED
  6581	001325'01  436 16 0 05 000001 
  6582	001326'01  201 16 0 00 001000 		INCR LLQUN,(T1)		;AND ACCOUNT FOR IT
  6583	001327'01  272 16 0 01 000023 
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 152-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6584	001330'01  254 00 0 00 001320'		JRST DONNXT		;AND CONTINUE DOWN Q
  6585
  6586						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 153
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6587
  6588					;ROUTINE TO PUT A DATA MESSAGE ON A SEGMENT Q
  6589					;	T2/ THE MESSAGE
  6590					;	T3/ THE QUEUE ADDRESS
  6591					;CLOBBERS T4
  6592
  6593	001331'01  336 04 0 03 000000 	PUTONQ:	SKIPN T4,0(T3)		;HAVE A QUEUE?
  6594						JRST [	HRRM T2,0(T3)	;NO MAKE ONE
  6595							HRLM T2,0(T3)
  6596	001332'01  254 00 0 00 002414'			JRST PUTOND]	;DONE
  6597	001333'01  557 00 0 00 000004 		HLRZS T4		;GET TAIL
  6598	001334'01  542 02 0 04 000000 		STOR T2,MSLNK,(T4)	;LINK THIS IN
  6599	001335'01  506 02 0 03 000000 		HRLM T2,0(T3)		;AND MAKE IT THE TAIL
  6600	001336'01  513 00 0 02 000000 	PUTOND:	SETZRO MSLNK,(T2)	;TIE IT OFF
  6601	001337'01  263 17 0 00 000000 		RET			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 154
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6602
  6603					;ROUTINE TO RESEND NACK'ED SEGMENTS
  6604					;ACCEPTS:	T1/ BLOCK ADDRESS
  6605					; BLOCK MUST BE LOCKED
  6606
  6607	001340'01  200 16 0 01 000023 	RESEND:	JE LLQUN,(T1),R		;ANY NAKED SEGS?
  6608	001341'01  606 16 0 00 377000 
  6609	001342'01  254 00 0 00 000760*
  6610	001343'01  200 16 0 01 000007 		JN LLBRP,(T1),R		;YES. IS FLOW ON?
  6611	001344'01  321 16 0 00 001342*
  6612	001345'01  200 16 0 01 000007 		JE LLMFC,(T1),RSEND0	;IF NO FLOW CONTROL, GO RESEND NOW
  6613	001346'01  607 16 0 00 140000 
  6614	001347'01  254 00 0 00 001354'
  6615	001350'01  135 03 0 00 002225'		LOAD T3,LLMSM,(T1)	;GET COUNT
  6616	001351'01  332 00 0 00 000003 		SKIPE T3		;IF ZERO
  6617	001352'01  602 03 0 00 000200 		TXNE T3,200		;OR IF NEG
  6618	001353'01  263 17 0 00 000000 		RET			;CAN'T RESEND
  6619	001354'01  550 02 0 01 000021 	RSEND0:	HRRZ T2,LLSEGQ(T1)	;GET HEAD OF Q
  6620	001355'01  336 00 0 00 000002 	RSEND1:	SKIPN T2		;ANYTHING THERE?
  6621	001356'01  604 00 0 00 000000 		IFNSK.			;NO, SHOULDN'T BE HERE
  6622	001357'01  254 00 0 00 001362'
  6623						   BUG (NSPRSN)		;TELL THE WORLD
  6624						  ;BUG type:    BUGCHK, SOFT
  6625						  ;BUG message: NSP - NUMBER OF ENTRIES COUNT AND ACTUAL QUEUE LENGTH DON'T AGREE
  6626						       SALL
  6627	001360'01  256 00 0 00 002417'
  6628	001361'01  263 17 0 00 000000 		   RET			;GO AWAY
  6629	001362'01				ENDIF.
  6630	001362'01  200 16 0 02 000001 		TMNN MSNAK,(T2)		;IS THIS A NAKED SEG?
  6631	001363'01  607 16 0 00 020000 
  6632						JRST [	LOAD T2,MSLNK,(T2) ;NO. GET NEXT
  6633	001364'01  254 00 0 00 002421'			JRST RSEND1]	;AND PROCEED
  6634	001365'01  561 16 0 00 777000 		DECR LLQUN,(T1)		;ONE LESS NAKED SEG
  6635	001366'01  272 16 0 01 000023 
  6636	001367'01  135 03 0 00 002205'		LOAD T3,LLMFC,(T1)	;GET TYPE OF FLOW CONTROL
  6637	001370'01  322 03 0 00 001400'		JUMPE T3,RSEND3		;IF NO FLOW CONTROL, SEND IT NOW
  6638	001371'01  302 03 0 00 000002 		CAIE T3,2		;MESSAGE FLOW CONTROL?
  6639	001372'01  254 00 0 00 001376'		JRST RSEND2		;NO. SEND IT NOW THEN
  6640	001373'01  135 03 0 00 002230'		LOAD T3,MSMFL,(T2)	;GET MESSAGE FLAGS
  6641	001374'01  606 03 0 00 000100 		JXE T3,DATEOM,RSEND3	;IS THIS EOM?
  6642	001375'01  254 00 0 00 001400'
  6643	001376'01  561 16 0 00 777400 	RSEND2:	DECR LLMSM,(T1)		;YES. DOWNCOUNT REQUEST COUNT
  6644	001377'01  272 16 0 01 000007 
  6645	001400'01  205 16 0 00 020000 	RSEND3:	SETZRO MSNAK,(T2)	;NO LONGER A NACKED SEG
  6646	001401'01  412 16 0 02 000001 
  6647	001402'01  260 17 0 00 001074'		CALL SNDSE0		;AND RESEND IT
  6648	001403'01  254 00 0 00 001340'		JRST RESEND		;AND DO IT AGAIN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 155
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6649
  6650					;ROUTINE TO FLUSH ALL QUEUES FOR A LL
  6651					;FLUSHES: SEGQ,RSEGQ,LLMSG,LLOMSG
  6652					;	T1/ LL BLOCK LL TREE MUST BE LOCKED
  6653					;RETURNS +1 ALWAYS
  6654
  6655	001404'01  201 16 0 00 377377 	FLUSH::	SETZRO <LLQUN,LLQOU>,(T1) ;CLEAR COUNTS
  6656	001405'01  412 16 0 01 000023 
  6657	001406'01  201 02 0 01 000012 		MOVEI T2,LLOMSG(T1)	;GET ORDERED QUEUE
  6658	001407'01  260 17 0 00 001416'		CALL PRUNE		;KILL IT
  6659	001410'01  201 02 0 01 000005 		MOVEI T2,LLMSG(T1)	;GET ORDERED Q
  6660	001411'01  260 17 0 00 001416'		CALL PRUNE		;KILL IT
  6661	001412'01  201 02 0 01 000006 		MOVEI T2,LLMSI(T1)	;INT MESSAGES
  6662	001413'01  260 17 0 00 001416'		CALL PRUNE		;KILL THIS AS WELL
  6663	001414'01  201 02 0 01 000021 		MOVEI T2,LLSEGQ(T1)	;GET SENT Q
  6664	001415'01  254 00 0 00 001416'		CALLRET PRUNE		;GET RID OF THEM
  6665
  6666					;WORKER ROUTINE TO FLUSH A LINK Q
  6667
  6668	001416'01  265 16 0 00 001175*	PRUNE:	SAVET			;SAVE ALL REGS
  6669	001417'01  550 01 0 02 000000 		HRRZ T1,0(T2)		;GET HEAD
  6670	001420'01  402 00 0 02 000000 		SETZM 0(T2)		;CLEAR Q
  6671	001421'01  322 01 0 00 001344*	PRUNE1:	JUMPE T1,R		;IF AT THE END, DONE
  6672	001422'01  550 02 0 01 000000 		LOAD T2,MSLNK,(T1)	;GET NEXT
  6673	001423'01  261 17 0 00 000002 		PUSH P,T2		;SAVE IT
  6674	001424'01  200 16 0 01 000000 		JN MSPST,(T1),CHKPST	;IF POSTING ON, GO CHECK OUT MESSAGE
  6675	001425'01  603 16 0 00 200000 
  6676	001426'01  254 00 0 00 001432'
  6677	001427'01  260 17 0 00 001232*	PRUNE2:	CALL RELRES		;RELEASE NODE
  6678	001430'01  262 17 0 00 000001 	PRUNE3:	POP P,T1		;GET BACK NEXT
  6679	001431'01  254 00 0 00 001421'		JRST PRUNE1		;AND DO IT
  6680
  6681					;MESSAGE NEEDS TO BE PRUNED BUT POSTING IS STILL OUTSTANDING.
  6682
  6683	001432'01  700 14 0 00 000400 	CHKPST:	PIOFF			;OWN MACHINE WHILE CHECKING MESSAGE
  6684	001433'01  200 16 0 01 000000 		JE MSPST,(T1),CHKPS1	;IF NO LONGER NEEDED, GO ON
  6685	001434'01  607 16 0 00 200000 
  6686	001435'01  254 00 0 00 001442'
  6687	001436'01  205 16 0 00 400000 		SETONE MSRLS,(T1)	;IS STILL NEEDED. REQUEST RELEASE WHENEVER
  6688	001437'01  436 16 0 01 000000 
  6689	001440'01  700 14 0 00 000200 		PION			;ALLOW INTS AGAIN
  6690	001441'01  254 00 0 00 001430'		JRST PRUNE3		;DON'T RELEASE IT
  6691	001442'01  700 14 0 00 000200 	CHKPS1:	PION			;ALLOW INTS
  6692	001443'01  254 00 0 00 001427'		JRST PRUNE2		;AND RELEASE IT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 156
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6693
  6694					;ROUTINE TO SEND AN ACK MESSAGE.
  6695					;	T1/ LL BLOCK
  6696					;	T2/ SEGMENT # TO ACK
  6697					;	T3/ SUBCHANNEL TO ACK
  6698					;RETURNS +1	ALL REGS PRESERVED
  6699
  6700	001444'01  265 16 0 00 001074*	SNDACK:	ASUBR <LLBLK,ACKNO,ACKTYP>
  6701	001445'01  200 16 0 01 000002 	NSBP09:	TMNE LLLOC,(T1)		;LOCAL?
  6702	001446'01  603 16 0 00 200000 
  6703						 JRST [	SKIPGE NSPLPB	;YES, IS THERE A RUNNING LOOPBACK LINE?
  6704						        JRST ACKRMT	;YES, GIVE MESSAGE TO DRIVER
  6705						        JE LLCIL,(T1),RSKP ;NO, DONE IF NOT CONNECTED TO INTERNAL LINK
  6706							CALL SKDOUT	;INTERNAL LINK, SCHEDULE OUTPUT
  6707	001447'01  254 00 0 00 002423'			RETSKP ]	;DONE, RETURN
  6708	001450'01  254 00 0 00 001454'		JRST ACKRMT		;NEED TO SEND A MESSAGE
  6709
  6710					;HANDLE LOCAL ACK
  6711					;THIS CODE HAS BEEN REMOVED AS IT IS NO LONGER NECESSARY.
  6712					;NOTE, THERE IS A BUG IN IT ANYWAY,AS A FAILURE TO LOCK THE
  6713					;OTHER BLOCK WILL CAUSE CONFUSION IN NETSET. IF THIS CODE
  6714					;IS EVER TURNED ON AGAIN, THEN CHKFRE MUST INCLUDE A CHECK
  6715					;FOR LOCK FAILURE AS WELL AS FREE SPACE FAILURE.   ASM
  6716
  6717					   REPEAT 0,<
  6718						LOAD T2,LLLNK,(T1)
  6719						LOAD T1,LLHLK,(T1)	;GET OTHER ONE'S ADDRESS
  6720						LLLOCK			;LOCK THE TREE
  6721						CALL LLLKUP		;GO LOOK UP MATCHER
  6722						 JRST ACKLO2		;NOT THERE. THIS WILL GET FIXED
  6723						LOAD T2,LLSTA,(T1)	;GET CURRENT STATE?
  6724						CAIE T2,LLSRUN		;RUNNING
  6725						CAIN T2,LLSDIQ		;OR DI QUEUED?
  6726						JRST ACKLO1		;IS GOOD
  6727					ACKLO2:	LLLULK			;FREE TREE
  6728					ACKLO3:	MOVE T1,LLBLK		;RETURN LL BLOCK ADDRESS
  6729						RETSKP			;AND RETURN
  6730					
  6731					ACKLO1:	CALL BLKLOK		;LOCK THE BLOCK
  6732						 JRST [	LLLULK		;FAILED
  6733							RET]		;TRY AGAIN LATER
  6734						LLLULK			;FREE TREE
  6735						MOVE T2,ACKNO		;GET NUMBER
  6736						MOVE T3,ACKTYP		;AND THE TYPE
  6737						CALL ACKCHN		;GO DO THE ACK
  6738						CALL BLKULK		;UNLOCK THE BLOCK
  6739						JRST ACKLO3		;AND GO WRAP UP
  6740					   >				;END OF REPEAT 0
  6741
  6742					;ROUTINE TO ACK THE LS/INT CHANNEL
  6743
  6744	001451'01  135 02 0 00 002311'	ACKLI:	LOAD T2,LLIIN,(T1)	;GET SEG TO ACK
  6745	001452'01  201 03 0 00 000001 		MOVEI T3,MSLSI		;THE CHANNEL I.D.
  6746	001453'01  254 00 0 00 001444'		CALLRET SNDACK		;SEND ACK
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 157
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6747
  6748					;SNDACK CONTINUED.....
  6749					;SEND ACK TO REMOTE NODE.
  6750
  6751	001454'01  265 16 0 00 001177*	ACKRMT:	STKVAR <MSGBL>		;PLACE TO SAVE MESSAGE BLOCK
  6752	001455'01  000001  000001
  6753	001456'01  201 01 0 00 000015 		MOVEI T1,ACKLEN+MSHDR	;LENGTH REQUIRED
  6754	001457'01  260 17 0 00 000124'		CALL GETRES		;GET IT
  6755	001460'01  254 00 0 00 000310'		 CALLRET TIMWAT		;FAILED
  6756	001461'01  202 01 0 17 777776 		MOVEM T1,MSGBL		;SAVE BLOCK ADDRESS
  6757	001462'01  200 02 0 00 000001 		MOVE T2,T1
  6758	001463'01  200 01 0 15 000001 		MOVE T1,LLBLK		;GET BACK LL BLOCK ADDRESS
  6759	001464'01  402 00 0 01 000017 		SETZM LLBPCT(T1)	;INIT MESSAGE COUNT
  6760	001465'01  271 02 0 00 000007 		ADDI T2,MSHDR		;GET TO DATA PART
  6761	001466'01  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)
  6762	001467'01  202 02 0 01 000016 		MOVEM T2,LLBPTR(T1)	;INIT POINTER
  6763	001470'01  201 02 0 00 000004 		MOVEI T2,ACKFLM		;BASIC ACK MESSAGE
  6764	001471'01  200 03 0 15 000003 		MOVE T3,ACKTYP		;GET SUBCHANNEL
  6765	001472'01  306 03 0 00 000001 		CAIN T3,MSLSI		;LS/INT SUBCHANNEL?
  6766	001473'01  271 02 0 00 000020 		ADDI T2,ACKLSI		;YES.
  6767	001474'01  260 17 0 00 000147'		CALL RTHDCI		;PUT ON ROUTING HEADER AND FLAGS
  6768	001475'01  260 17 0 00 000134'		CALL PUTLLA		;PUT IN LL ADDRESSES
  6769	001476'01  200 02 0 15 000002 		MOVE T2,ACKNO		;GET SEG TO ACK
  6770	001477'01  660 02 0 00 100000 		TXO T2,ACKIND		;SET ACK INDICATOR
  6771	001500'01  260 17 0 00 000212'		CALL TWOBYT		;PUT IT IN
  6772	001501'01  200 02 0 17 777776 		MOVE T2,MSGBL		;GET MESSAGE
  6773					;** TEMP **
  6774					;	HRRZ T3,LLBPTR(T1)	;GET BYTE PTR
  6775					;	CAIL T3,0(T2)		;WITHIN RANGE OF MSG BLOCK?
  6776					;	CAILE T3,ACKLEN+MSHDR(T2)
  6777					;	JSR BUGHLT		;NO, **** TEMP ****
  6778					;** TEMP **
  6779	001502'01  260 17 0 00 001001'		CALL SNDCTL		;SEND IT
  6780	001503'01  254 00 0 00 000770*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 158
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6781
  6782					;ROUTINE TO BUILD AND SEND A NODE INIT
  6783					;	T1/ PORT I.D.
  6784
  6785	001504'01  265 16 0 00 000562*	NODINI::TRVAR <<LLDUM,LKSIZE>,NODMSG,NODPRT>
  6786	001505'01  000035  000035
  6787	001506'01  202 01 0 15 000035 		MOVEM T1,NODPRT		;SAVE PORT I.D.
  6788	001507'01  201 01 0 00 000016 		MOVEI T1,NDISIZ+MSHDR	;REQUIRES BLOCK SIZE
  6789	001510'01  260 17 0 00 000124'		CALL GETRES		;GET A BLOCK
  6790	001511'01  263 17 0 00 000000 		 RETBAD			;COULDN'T
  6791	001512'01  202 01 0 15 000034 		MOVEM T1,NODMSG		;SAVE BLOCK
  6792	001513'01  201 02 0 01 000007 		MOVEI T2,MSHDR(T1)	;POINT TO DATA PART
  6793	001514'01  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)
  6794	001515'01  201 01 0 15 000001 		MOVEI T1,LLDUM		;DUMMY LL BLOCK
  6795	001516'01  402 00 0 01 000017 		SETZM LLBPCT(T1)	;INIT COUNT
  6796	001517'01  202 02 0 01 000016 		MOVEM T2,LLBPTR(T1)	;SET UP BYTE POINTER
  6797	001520'01  201 02 0 00 000130 		MOVEI T2,CNMRFL+NDIFLG	;MESSAGE FLAGS
  6798	001521'01  260 17 0 00 000207'		CALL ONEBYT
  6799	001522'01  201 02 0 00 000001 		MOVEI T2,STRTYP		;NOD INIT MESSAGE
  6800	001523'01  260 17 0 00 000207'		CALL ONEBYT
  6801	001524'01  200 03 0 00 000005*		MOVE T3,OURNUM		;GET LOCAL NUMBER
  6802	001525'01  260 17 0 00 000771'		CALL MAKEXT		;PUT IT IN MESSAGE
  6803	001526'01  201 03 0 00 000162*		MOVEI T3,OURNAM		;OUR NAME
  6804	001527'01  260 17 0 00 000166'		CALL ASCIIZ		;PUT IT IN
  6805	001530'01  201 02 0 00 000000 		MOVEI T2,OURCAP		;SUPPORTED CAPS
  6806	001531'01  260 17 0 00 000207'		CALL ONEBYT
  6807	001532'01  201 02 0 00 000006 		MOVEI T2,OURREQ		;REQUIRED CAPS
  6808	001533'01  260 17 0 00 000207'		CALL ONEBYT
  6809	001534'01  200 02 0 00 000000*		MOVE T2,SEGSZ		;OUR SEG SIZE
  6810	001535'01  260 17 0 00 000212'		CALL TWOBYT
  6811	001536'01  200 02 0 00 001534*		MOVE T2,SEGSZ		;OUR NSP SIZE
  6812	001537'01  260 17 0 00 000212'		CALL TWOBYT
  6813	001540'01  201 02 0 00 000000*		MOVEI T2,MAXLNK		;MAX LINKS
  6814	001541'01  260 17 0 00 000212'		CALL TWOBYT
  6815	001542'01  201 02 0 00 000003 		MOVEI T2,ROUVER		;ROUTING VERSION
  6816	001543'01  260 17 0 00 000207'		CALL ONEBYT
  6817	001544'01  201 02 0 00 000000 		MOVEI T2,ROUECO		;ROUTING ECO LEVEL
  6818	001545'01  260 17 0 00 000207'		CALL ONEBYT
  6819	001546'01  201 02 0 00 000000 		MOVEI T2,ROUCST		;CUSTOMER MODS
  6820	001547'01  260 17 0 00 000207'		CALL ONEBYT
  6821	001550'01  201 02 0 00 000003 		MOVEI T2,COMVER		;NSP VERSION
  6822	001551'01  260 17 0 00 000207'		CALL ONEBYT
  6823	001552'01  201 02 0 00 000001 		MOVEI T2,COMECO		;NSP ECO LEVEL
  6824	001553'01  260 17 0 00 000207'		CALL ONEBYT
  6825	001554'01  201 02 0 00 000000 		MOVEI T2,COMCST		;CUST MODS TO NSP
  6826	001555'01  260 17 0 00 000207'		CALL ONEBYT
  6827	001556'01  400 02 0 00 000000 		SETZ T2,		;NO TEXT YET
  6828	001557'01  260 17 0 00 000207'		CALL ONEBYT
  6829	001560'01  200 02 0 15 000034 		MOVE T2,NODMSG		;MESSAGE BLOCK
  6830	001561'01  200 03 0 15 000035 		MOVE T3,NODPRT		;GET PORT I.D.
  6831	001562'01  137 03 0 00 002326'		STOR T3,LLPRT,(T1)	;SAVE IN LL BLOCK
  6832	001563'01  200 03 0 01 000017 		MOVE T3,LLBPCT(T1)	;COUNT 
  6833	001564'01  260 17 0 00 001010'		CALL SNDSG0		;SEND IT
  6834	001565'01  200 01 0 15 000035 		MOVE T1,NODPRT		;GET PORT NUMBER
  6835	001566'01  205 16 0 00 010000 		SETONE INISNT,MCBDTE(T1) ;NOTE INIT MSG SENT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 158-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6836	001567'01  436 16 0 01 000000*
  6837	001570'01  200 16 0 01 001567*		JE REQVER,MCBDTE(T1),RSKP ;DONE IF NO VERIFICATION MSG NEEDED
  6838	001571'01  607 16 0 00 020000 
  6839	001572'01  254 00 0 00 001503*
  6840	001573'01  260 17 0 00 001600'		CALL NODVER		;SEND VERIFICATION MSG
  6841	001574'01  200 01 0 15 000035 		MOVE T1,NODPRT		;RESTORE PORT ID
  6842	001575'01  205 16 0 00 020000 		SETZRO REQVER,MCBDTE(T1) ;NOTE VERIFICATION NO LONGER NEEDED
  6843	001576'01  412 16 0 01 001570*
  6844	001577'01  254 00 0 00 001572*		RETSKP			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 159
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6845					;NODVER - ROUTINE TO ASSEMBLE AND SEND A NODE VERIFICATION MESSAGE
  6846					;
  6847					;ACCEPTS IN T1/	PORT ID
  6848					;		CALL NODVER
  6849					;RETURNS: +1 ALWAYS
  6850
  6851	001600'01  265 16 0 00 001504*	NODVER:	TRVAR <<LLDUM,LKSIZE>,NODMSG,NODPRT>
  6852	001601'01  000035  000035
  6853	001602'01  202 01 0 15 000035 		MOVEM T1,NODPRT		;SAVE PORT I.D.
  6854
  6855					; INITIALIZE MESSAGE BLOCK
  6856
  6857	001603'01  201 01 0 00 000016 		MOVEI T1,NDISIZ+MSHDR	;REQUIRES BLOCK SIZE
  6858	001604'01  260 17 0 00 000124'		CALL GETRES		;GET A BLOCK
  6859	001605'01  263 17 0 00 000000 		 RETBAD			;COULDN'T
  6860	001606'01  202 01 0 15 000034 		MOVEM T1,NODMSG		;SAVE BLOCK
  6861	001607'01  201 02 0 01 000007 		MOVEI T2,MSHDR(T1)	;POINT TO DATA PART
  6862	001610'01  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)
  6863	001611'01  201 01 0 15 000001 		MOVEI T1,LLDUM		;DUMMY LL BLOCK
  6864	001612'01  402 00 0 01 000017 		SETZM LLBPCT(T1)	;INIT COUNT
  6865	001613'01  202 02 0 01 000016 		MOVEM T2,LLBPTR(T1)	;SET UP BYTE POINTER
  6866
  6867					; ASSEMBLE MESSAGE FLAGS AND STARTTYPE FIELDS
  6868
  6869	001614'01  201 02 0 00 000130 		MOVEI T2,CNMRFL+NDIFLG	;MESSAGE FLAGS
  6870	001615'01  260 17 0 00 000207'		CALL ONEBYT
  6871	001616'01  201 02 0 00 000002 		MOVEI T2,VERTYP		;NOD VERIFICATION MESSAGE
  6872	001617'01  260 17 0 00 000207'		CALL ONEBYT
  6873
  6874					; ADD PASSWORD TO MESSAGE
  6875
  6876	001620'01  205 04 0 00 777770 		MOVSI T4,-10		;8 BYTES
  6877	001621'01  200 03 0 00 002433'		MOVE T3,[POINT 7,[ASCII/DECNET20/]]
  6878	001622'01  134 02 0 00 000003 	NDVER1:	ILDB T2,T3		;GET NEXT BYTE
  6879	001623'01  260 17 0 00 000207'		CALL ONEBYT		;ADD TO MESSAGE
  6880	001624'01  253 04 0 00 001622'		AOBJN T4,NDVER1		;DO ALL 8 BYTES
  6881
  6882					; SEND THE MESSAGE
  6883
  6884	001625'01  200 02 0 15 000034 		MOVE T2,NODMSG		;MESSAGE BLOCK
  6885	001626'01  200 03 0 15 000035 		MOVE T3,NODPRT		;GET PORT I.D.
  6886	001627'01  137 03 0 00 002326'		STOR T3,LLPRT,(T1)	;SAVE IN LL BLOCK
  6887	001630'01  200 03 0 01 000017 		MOVE T3,LLBPCT(T1)	;COUNT 
  6888	001631'01  254 00 0 00 001010'		CALLRET SNDSG0		;SEND IT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 160
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6889					;ROUTINE TO SEND AN LS MESSAGE
  6890
  6891					;ACCEPTS:
  6892					;	T1/ LL BLOCK ADDRESS
  6893					;	T2/ COUNT OF SEGS TO REQUEST
  6894					;	T3/ SUBCHANNEL
  6895
  6896					;	CALL SNDLS
  6897
  6898					;RETURNS +1: FAILURE
  6899					;		T1/ SCHEDULER TEST WORD
  6900					;	 +2: SUCCESS
  6901					;		T1/ LL BLOCK ADDRESS (UNCHANGED)
  6902
  6903	001632'01  265 16 0 00 001444*	SNDLS::	ASUBR <SNDLBL,SNDLCT,SNDLTP,SNDLMS>
  6904	001633'01  200 16 0 01 000002 		TMNE LLLOC,(T1)		;LOCAL?
  6905	001634'01  603 16 0 00 200000 
  6906						 JRST [SKIPL NSPLPB	;YES, IS THERE A RUNNING LOOPBACK LINE?
  6907						       JRST SNDLSL	;NO
  6908	001635'01  254 00 0 00 002434'		       JRST .+1]	;YES, MESSAGE MUST GO TO DRIVER
  6909	001636'01  135 02 0 00 002221'		LOAD T2,LLQOU,(T1)	;GET SEGS IN QUEUER
  6910	001637'01  135 03 0 00 002222'		LOAD T3,LLMQO,(T1)	;GET MAXIMUM OUTPUT QUEUE LENGTH
  6911	001640'01  303 02 0 03 000001 		CAILE T2,1(T3)		;ROOM FOR THIS ONE?
  6912						JRST [	MOVEI T2,CHKQTA	;NO. MUST WAIT UNTIL THERE IS
  6913	001641'01  254 00 0 00 002437'			CALLRET MAKTST]	;""
  6914	001642'01  201 01 0 00 000016 		MOVEI T1,MSHDR+LSLEN	;GET FREE SPACE
  6915	001643'01  260 17 0 00 000124'		CALL GETRES		;GET SOME
  6916	001644'01  254 00 0 00 000310'		 JRST TIMWAT		;NONE.
  6917	001645'01  202 01 0 15 000004 		MOVEM T1,SNDLMS		;SAVE BLOCK ADDRESS
  6918	001646'01  201 02 0 01 000007 		MOVEI T2,MSHDR(T1)	;POINT TO DATA PORTION
  6919	001647'01  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)
  6920	001650'01  200 01 0 15 000001 		MOVE T1,SNDLBL		;GET BACK LL BLOCK
  6921	001651'01  202 02 0 01 000016 		MOVEM T2,LLBPTR(T1)
  6922	001652'01  402 00 0 01 000017 		SETZM LLBPCT(T1)
  6923	001653'01  201 02 0 00 000020 		MOVEI T2,DATFLI		;GET FLAGS
  6924	001654'01  260 17 0 00 000147'		CALL RTHDCI		;PUT ON ROUTE HEADER AND FLAGS
  6925	001655'01  260 17 0 00 000134'		CALL PUTLLA		;PUT IN ADDRESSES
  6926	001656'01  135 02 0 00 002441'		LOAD T2,LLISN,(T1)	;GET SEG #
  6927	001657'01  350 00 0 00 000002 		AOS T2			;NEXT ONE
  6928	001660'01  405 02 0 00 007777 		ANDI T2,SEGMSK
  6929	001661'01  137 02 0 00 002441'		STOR T2,LLISN,(T1)
  6930	001662'01  200 04 0 15 000004 		MOVE T4,SNDLMS		;GET MESSAGE ADDRESS
  6931	001663'01  137 02 0 00 002442'		STOR T2,MSSEG,(T4)	;SAVE SEG #
  6932	001664'01  137 01 0 00 002443'		STOR T1,MSLLA,(T4)	;SAVE LINK ADDRESS
  6933	001665'01  201 03 0 00 000001 		MOVEI T3,MSLSI		;SAY THIS IS A LS MSG
  6934	001666'01  137 03 0 00 002444'		STOR T3,MSTOM,(T4)	;""
  6935	001667'01  260 17 0 00 000212'		CALL TWOBYT		;PUT IN SEG #
  6936	001670'01  402 00 0 00 000002 		SETZM T2		;ASSUME DATA CHANNEL
  6937	001671'01  200 03 0 15 000003 		MOVE T3,SNDLTP		;GET SUBCHANNEL
  6938	001672'01  302 03 0 00 000002 		CAIE T3,MSDAT		;DATA?
  6939	001673'01  201 02 0 00 000004 		MOVEI T2,4		;NO. LS/INT
  6940	001674'01  260 17 0 00 000207'		CALL ONEBYT
  6941	001675'01  200 02 0 15 000002 		MOVE T2,SNDLCT		;GET COUNT
  6942	001676'01  260 17 0 00 000207'		CALL ONEBYT
  6943	001677'01  200 02 0 15 000004 		MOVE T2,SNDLMS		;GET MESSAGE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 160-1
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6944	001700'01  260 17 0 00 001044'		CALL SNDSEG		;SEND THE DATA
  6945	001701'01  254 00 0 00 001577*		RETSKP			;AND DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 161
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6946
  6947					;SNDLS CONTINUED...
  6948					;SEND ON A LOCAL CONNECTION
  6949
  6950	001702'01  265 16 0 00 000000*	SNDLSL:	SAVEAC <T1>		;SAVE LL BLOCK
  6951	001703'01  476 00 0 00 000002 		SETOM T2		;ANY MATCH IS OKAY
  6952	001704'01  135 01 0 00 002174'		LOAD T1,LLHLK,(T1)	;GET OTHER ADDRESS
  6953	001705'01  260 17 0 00 000007'		LLLOCK
  6954	001706'01  260 17 0 00 000070'		CALL LLLKUP		;GET BLOCK ADDRESS
  6955						 JRST [	LLLULK		;?
  6956	001707'01  254 00 0 00 002445'			RETSKP]		;OTHER ONE WENT AWAY
  6957	001710'01  200 02 0 15 000002 		MOVE T2,SNDLCT		;GET COUNT
  6958	001711'01  200 03 0 15 000003 		MOVE T3,SNDLTP		;GET SUBCHANNEL
  6959	001712'01  265 16 0 00 001132*		NOSKD1
  6960	001713'01  302 03 0 00 000002 		CAIE T3,MSDAT		;DATA
  6961						JRST [	OPSTRM <ADDM T2,>,LLMIC,(T1) ;NO
  6962	001714'01  254 00 0 00 002450'			JRST SNDLS1]	;GO WRAP UP
  6963	001715'01  135 16 0 00 002225'		OPSTRM <ADDM T2,>,LLMSM,(T1) ;YES
  6964	001716'01  272 02 0 00 000016 
  6965	001717'01  137 16 0 00 002225'
  6966	001720'01  260 17 0 00 001243*	SNDLS1:	CALL CHKLLT		;CHECK FOR TTY ON THIS LL
  6967	001721'01  265 16 0 00 001155*		OKSKD1
  6968	001722'01  260 17 0 00 000014'		LLLULK			;FREE TREE
  6969	001723'01  200 16 0 01 000002 		JE LLINT,(T1),RSKP	;SENDER OF LS CONNECTED TO AN INTERNAL LINK ?
  6970	001724'01  607 16 0 00 004000 
  6971	001725'01  254 00 0 00 001701*
  6972	001726'01  260 17 0 00 001745'		CALL SKDOUT		;YES, NOTE CAN SEND MORE NOW
  6973	001727'01  254 00 0 00 001725*		RETSKP			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 162
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - MSGQ Processing

  6974					;ROUTINES CALLED FROM INT LEVEL TO GET AND QUEUE UP BUFFERS
  6975
  6976					;GET A BUFFER
  6977					;	T1/ PORT # (E.G. DTE#)
  6978					;	T2/ # OF BYTES REQUIRED
  6979					;RETURNS:
  6980					;	+1 COULDN'T GET BLOCK
  6981					;	+2 T1=BLOCK ADDRESS.
  6982
  6983	001730'01  265 16 0 00 001632*	NSPSPC::ASUBR <PRTNO,PRTCNT>
  6984	001731'01  201 01 0 02 000037 		MOVEI T1,MSHDR*4+3(T2)	;GET # OF BYTES
  6985	001732'01  242 01 0 00 777776 		LSH T1,-2		;CONVERT TO WORDS
  6986	001733'01  505 01 0 00 000000*		HRLI T1,.RESP1		;PRIORITY 1
  6987	001734'01  200 02 0 00 002454'		MOVE T2,[RS%SE0+.RESNP]	;FROM THE NET POOL
  6988	001735'01  260 17 0 00 000130*		CALL ASGRES		;GET THE SPACE
  6989	001736'01  263 17 0 00 000000 		 RETBAD			;COULDN'T
  6990	001737'01  200 02 0 15 000001 		MOVE T2,PRTNO		;GET PORT I.D.
  6991	001740'01  137 02 0 00 002455'		STOR T2,MSPRT,(T1)	;SAVE IT
  6992	001741'01  200 02 0 15 000002 		MOVE T2,PRTCNT		;GET COUNT OF BYTES IN MESSAGE
  6993	001742'01  137 02 0 00 002456'		STOR T2,MSCNT,(T1)	;SAVE IT
  6994	001743'01  271 01 0 00 000007 		ADDI T1,MSHDR		;POINT TO DATA PORTION
  6995	001744'01  254 00 0 00 001727*		RETSKP			;AND RETURN WITH BLOCK
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 163
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - Output on Internal Links

  6996					SUBTTL	NSP Background Task - Output on Internal Links
  6997
  6998					;OUTSND - ROUTINE TO CHECK "OUTPUT REMAINING" QUEUE AND SEND ANY REMAINING DATA
  6999					;
  7000					;	  CALLED PERIODICALLY FROM NSP BACKGROUND TASK DISPATCHER (NSPTSK)
  7001
  7002						SWAPCD
  7003
  7004	006340'02  265 16 0 00 000000*	OUTSND:	SAVEPQ
  7005	006341'02  402 00 0 00 000000*		SETZM OUTTIM		;RESET TIME AT WHICH TASK SHOULD AWAKEN
  7006	006342'02  352 00 0 00 001650*		LOCK OUTLOK		;LOCK THE QUEUE WHILE PROCESSING ENTRIES
  7007	006343'02  265 16 0 00 001625*
  7008	006344'02  550 05 0 00 001641*		HRRZ Q1,OUTQUE		;GET ADR OF FIRST LINK BLOCK TO PROCESS
  7009	006345'02  201 06 0 00 000000 		MOVEI Q2,0		;INITIALIZE "PREVIOUS BLOCK" ADDRESS
  7010
  7011					; LOCK THE LOGICAL LINK BLOCK AND SEND REMAINING OUTPUT
  7012
  7013					OUTCK0:	JUMPE Q1,[UNLOCK OUTLOK	;IF END OF QUEUE, UNLOCK THE QUEUE
  7014	006346'02  322 05 0 00 010500'			  RET]		; AND RETURN
  7015	006347'02  200 01 0 00 000005 		MOVE T1,Q1		;GET ADR OF CURRENT LOGICAL LINK BLOCK
  7016	006350'02  260 17 0 00 000000#		CALL BLKLLK		;GO LOCK THE LOGICAL LINK
  7017						 JRST [	CALL SKDOUT	;FAILED, SCHEDULE OUTPUT FOR LATER
  7018							MOVE Q2,Q1	;MAKE PREVIOUS BLOCK THE CURRENT
  7019							LOAD Q1,LLOUT,(Q1) ;MAKE CURRENT BLOCK THE NEXT ONE
  7020	006351'02  254 00 0 00 010502'			JRST OUTCK0 ]	;GO DO OUTPUT FOR NEXT LOGICAL LINK
  7021	006352'02  200 01 0 00 000005 		MOVE T1,Q1		;GET ADR OF CURRENT LOGICAL LINK BLOCK
  7022	006353'02  260 17 0 00 000000#		CALL INTOUT		;DO REMAINING OUTPUT FOR THIS LINK
  7023						 JRST [	CALL SKDOUT	;FAILED, SCHEDULE OUTPUT FOR LATER
  7024	006354'02  254 00 0 00 010506'			JRST OUTCK1 ]	;GO DO OUTPUT FOR NEXT LOGICAL LINK
  7025						JN LLOCT,(Q1),[	CALL SKDOUT  ;IF MORE OUTPUT, SCHEDULE FOR LATER
  7026	006355'02  550 16 0 05 000037 				JRST OUTCK1] ;GO HANDLE NEXT BLOCK ON QUEUE
  7027	006356'02  326 16 0 00 010510'
  7028
  7029					; ALL REMAINING OUTPUT SENT, REMOVE THE BLOCK FROM THE QUEUE
  7030
  7031	006357'02  205 16 0 00 400000 		SETZRO LLQUE,(Q1)	;NOTE BLOCK NO LONGER ON QUEUE
  7032	006360'02  412 16 0 05 000002 
  7033	006361'02  554 04 0 00 006344*		HLRZ T4,OUTQUE		;GET POINTER TO TAIL OF QUEUE
  7034	006362'02  316 04 0 00 000005 		CAMN T4,Q1		;PROCESSING TAIL OF QUEUE ?
  7035	006363'02  506 06 0 00 006361*		HRLM Q2,OUTQUE		;YES, SAVE PREVIOUS BLOCK AS NEW TAIL
  7036	006364'02  200 04 0 05 000040 		LOAD T4,LLOUT,(Q1)	;GET ADDRESS OF NEXT BLOCK ON QUEUE
  7037	006365'02  402 00 0 05 000040 		SETZRO LLOUT,(Q1)	;CLEAR ADR OF NEXT BLOCK ON QUEUE
  7038	006366'02  336 00 0 00 000006 		SKIPN Q2		;PROCESSING HEAD OF QUEUE ?
  7039						JRST [	HRRM T4,OUTQUE	;YES, SAVE NEXT BLOCK AS NEW HEAD
  7040	006367'02  254 00 0 00 010512'			JRST OUTCK1 ]	; AND GO DO OUTPUT FOR NEXT LOGICAL LINK
  7041	006370'02  202 04 0 06 000040 		STOR T4,LLOUT,(Q2)	;NO, SAVE ADR OF NEXT BLOCK IN PREVIOUS
  7042
  7043	006371'02  200 06 0 00 000005 	OUTCK1:	MOVE Q2,Q1		;MAKE CURRENT BLOCK THE PREVIOUS
  7044	006372'02  200 01 0 00 000005 		MOVE T1,Q1		;GET ADDRESS OF CURRENT LINK BLOCK
  7045	006373'02  200 05 0 01 000040 		LOAD Q1,LLOUT,(T1)	;GET ADDRESS OF NEXT BLOCK ON QUEUE
  7046	006374'02  260 17 0 00 000000#		CALL BLKULK		;UNLOCK THE CURRENT BLOCK
  7047	006375'02  254 00 0 00 006346'		JRST OUTCK0		;GO PROCESS NEXT BLOCK ON QUEUE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 164
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - Output on Internal Links

  7048
  7049					;SKDOUT - ROUTINE TO SCHEDULE OUTPUT FOR AN INTERNAL LINK
  7050					;
  7051					;CALL:		CALL SKDOUT
  7052					;RETURNS: +1 ALWAYS, WITH ALL AC'S PRESERVED
  7053
  7054						RESCD
  7055
  7056	001745'01  265 16 0 00 001416*	SKDOUT::SAVET
  7057	001746'01  200 04 0 00 000674*		MOVE T4,TODCLK		;GET CURRENT TIME
  7058	001747'01  270 04 0 00 000000*		ADD T4,OUTIVL		;GET TIME INTERVAL TO WAIT BEFORE TRYING AGAIN
  7059	001750'01  202 04 0 00 000673*		MOVEM T4,OUTTIM		;SCHEDULE WAKEUP AT LATER TIME
  7060	001751'01  263 17 0 00 000000 		RET			;DONE, RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 165
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - Output on Internal Links

  7061					;INTOUT - ROUTINE TO PERFORM OUTPUT FOR AN INTERNAL LINK
  7062					;
  7063					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  7064					;		CALL INTOUT
  7065					;RETURNS: +1	 FAILED, MORE OUTPUT WILL HAVE TO BE DONE LATER
  7066					;	  +2	SUCCESS, ALL REMAINING OUTPUT HAS BEEN SENT
  7067					;
  7068					; ASSUMES LOGICAL LINK BLOCK IS LOCKED. PRESERVES LINK BLOCK ADR IN T1
  7069
  7070	001752'01  265 16 0 00 001730*	INTOUT:	ASUBR <INOLLB>
  7071
  7072					; PROCESS ANY OUTSTANDING ACK'S FOR THIS LINK
  7073
  7074	001753'01  200 01 0 15 000001 		MOVE T1,INOLLB		;GET LOGICAL LINK BLOCK ADDRESS
  7075	001754'01  260 17 0 00 000430'		CALL MOVSEG		;PROCESS OUTSTANDING ACK'S
  7076	001755'01  263 17 0 00 000000 		 RET			;FAILED, TRY AGAIN LATER
  7077	001756'01  200 01 0 15 000001 		MOVE T1,INOLLB		;GET LOGICAL LINK BLOCK ADDRESS
  7078	001757'01  550 16 0 01 000037 		JE LLOCT,(T1),RSKP	;IF NO DATA LEFT, ALL DONE
  7079	001760'01  322 16 0 00 001744*
  7080
  7081					; CHECK TO SEE IF THERE IS ANY MORE OUTPUT TO SEND
  7082
  7083	001761'01  200 01 0 15 000001 	INO020:	MOVE T1,INOLLB		;GET ADDRESS OF LOGICAL LINK BLOCK
  7084	001762'01  550 16 0 01 000037 		JN LLOCT,(T1),INO025	;IF DATA LEFT, GO TRY TO SEND IT
  7085	001763'01  326 16 0 00 001772'
  7086	001764'01  200 01 0 15 000001 		MOVE T1,INOLLB		;GET LOGICAL LINK BLOCK ADDRESS
  7087	001765'01  260 17 0 00 002011'		CALL TELOBE		;GO TELL DRIVER THAT OUTPUT BUFFER NOW EMPTY
  7088	001766'01  200 01 0 15 000001 		MOVE T1,INOLLB		;GET ADDRESS OF LOGICAL LINK BLOCK
  7089	001767'01  260 17 0 00 002000'		CALL TELOOK		;GO ADVISE DRIVER OUTPUT CAN BE DONE
  7090	001770'01  200 01 0 15 000001 		MOVE T1,INOLLB		;RESTORE LOGICAL LINK BLOCK ADDRESS
  7091	001771'01  254 00 0 00 001760*		RETSKP			;DONE, RETURN
  7092
  7093					;CHECK TO SEE IF ANY SEGMENTS CAN BE SENT NOW
  7094
  7095	001772'01  200 01 0 15 000001 	INO025:	MOVE T1,INOLLB		;GET LOGICAL LINK BLOCK ADDRESS
  7096	001773'01  260 17 0 00 000260'		CALL SNDCHK		;CAN ANY SEGMENTS BE SENT ?
  7097	001774'01  263 17 0 00 000000 		 RET			;NO, TRY AGAIN LATER
  7098	001775'01  200 01 0 15 000001 		MOVE T1,INOLLB		;YES, GET LOGICAL LINK BLOCK ADDRESS
  7099					;	CALL OUTSEG		;SEND THE SEGMENT
  7100	001776'01  263 17 0 00 000000 		 RET			;FAILED, TRY AGAIN LATER
  7101	001777'01  254 00 0 00 001761'		JRST INO020		;CHECK TO SEE IF ANOTHER SEGMENT CAN BE SENT
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 166
NSPSRV	MAC	 6-Apr-82 10:58		NSP Background Task - Output on Internal Links

  7102					;TELOOK - ROUTINE TO CHECK TO SEE IF NECESSARY TO NOTIFY DRIVER THAT
  7103					;	  OUTPUT MAY NOW BE SENT
  7104					;
  7105					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  7106					;		CALL TELOOK
  7107					;RETURNS: +1 ALWAYS, DRIVER NOTIFIED THRU FUNCTION VECTOR IF NEEDED
  7108
  7109	002000'01  200 16 0 01 000037 	TELOOK:	JE LLNDO,(T1),R		;RETURN IF DRIVER DOES NOT NEED NOTIFICATION
  7110	002001'01  607 16 0 00 200000 
  7111	002002'01  254 00 0 00 001421*
  7112	002003'01  205 16 0 00 200000 		SETZRO LLNDO,(T1)	;NO LONGER NEED NOTIFICATION FLAG LIT
  7113	002004'01  412 16 0 01 000037 
  7114	002005'01  200 04 0 01 000034 		LOAD T4,LLVEC,(T1)	;GET DRIVER FUNCTION VECTOR ADDRESS
  7115	002006'01  201 02 0 00 000001 		MOVX T2,.NSOMO		;GET "OUTPUT CAN BE SENT" TYPE CODE
  7116	002007'01  200 01 0 01 000033 		LOAD T1,LLDRV,(T1)	;GET DRIVER'S CORRELATION CODE
  7117	002010'01  254 00 1 04 000004 		CALLRET @.NSOOK(T4)	;NOTIFY DRIVER AND RETURN
  7118
  7119
  7120
  7121					;TELOBE - ROUTINE TO NOTIFY THE DRIVER THAT AN OUTPUT BUFFER IS NOW EMPTY
  7122					;
  7123					;ACCEPTS IN T1/	ADDRESS OF LOGICAL LINK BLOCK
  7124					;		CALL TELOBE
  7125					;RETURNS: +1 ALWAYS, WITH DRIVER NOTIFIED THRU ITS FUNCTION VECTOR
  7126
  7127	002011'01  265 16 0 00 001752*	TELOBE::ASUBR <OBELLB>
  7128	002012'01  200 04 0 01 000034 		LOAD T4,LLVEC,(T1)	;DATA SENT, GET DRIVER FCN VECTOR ADR
  7129	002013'01  200 02 0 01 000035 		LOAD T2,LLBFO,(T1)	;GET DRIVER'S BUFFER ADDRESS
  7130	002014'01  200 01 0 01 000033 		LOAD T1,LLDRV,(T1)	;GET DRIVER CORRELATION CODE
  7131	002015'01  260 17 1 04 000006 		CALL @.NSOBE(T4)	;TELL DRIVER IT CAN HAVE BUFFER BACK
  7132	002016'01  200 01 0 15 000001 		MOVE T1,OBELLB		;GET LOGICAL LINK BLOCK ADDRESS
  7133	002017'01  402 00 0 01 000035 		SETZRO LLBFO,(T1)	;NOTE THAT BUFFER IS NOW GONE
  7134	002020'01  263 17 0 00 000000 		RET			;DONE, RETURN.
  7135
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 167
NSPSRV	MAC	 6-Apr-82 10:58		Routine Needed by TTYSRV

  7136					SUBTTL Routine Needed by TTYSRV
  7137
  7138					;GET THE NEXT SEGMENT ON THE INCOMING MESSAGE QUEUE
  7139					;ACCEPTS:	T1/ LL BLOCK
  7140					;RETURNS:	+1 - NO SEGMENT AVAILABLE
  7141					;		+2 - T2/ SEGMENT ADDRESS
  7142					;PRESERVES T1
  7143
  7144	002021'01  260 17 0 00 000430'	TTGETS::CALL MOVSEG		;MOVE ANY SEGMENTS TO ORDERED QUEUE
  7145	002022'01  600 00 0 00 000000 		 NOP			;NONE THERE
  7146	002023'01  336 02 0 01 000012 		SKIPN T2,LLOMSG(T1)	;ANY READY?
  7147	002024'01  263 17 0 00 000000 		RET			;NO
  7148	002025'01  135 03 0 00 002270'		LOAD T3,MSSEG,(T2)	;YES, SEE IF IT'S THE EXPECTED ONE
  7149	002026'01  135 04 0 00 002234'		LOAD T4,LLIDN,(T1)
  7150	002027'01  350 00 0 00 000004 		AOS T4
  7151	002030'01  405 04 0 00 007777 		ANDI T4,SEGMSK
  7152	002031'01  312 03 0 00 000004 		CAME T3,T4		;SEG NUMBERS MATCH?
  7153	002032'01  263 17 0 00 000000 		RET			;NO
  7154	002033'01  135 03 0 00 002307'		LOAD T3,MSDTC,(T2)	;YES, GET BYTE COUNT
  7155	002034'01  254 00 0 00 001771*		RETSKP
  7156
  7157
  7158					;REMOVE A SEGMENT FROM THE INCOMING MESSAGE QUEUE
  7159					;ACCEPTS:	T1/ LL BLOCK
  7160					;		T2/ SEGMENT ADDRESS
  7161					;RETURNS:	+1 ALWAYS
  7162
  7163	002035'01  135 03 0 00 002270'	TTREMS::LOAD T3,MSSEG,(T2)	;UPDATE SEG NUMBER
  7164	002036'01  137 03 0 00 002234'		STOR T3,LLIDN,(T1)
  7165	002037'01  550 03 0 02 000000 		LOAD T3,MSLNK,(T2)	;REMOVE MSG FROM QUEUE
  7166	002040'01  202 03 0 01 000012 		MOVEM T3,LLOMSG(T1)
  7167	002041'01  263 17 0 00 000000 		RET
  7168
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 168
NSPSRV	MAC	 6-Apr-82 10:58		Scheduler Interface

  7169					SUBTTL	Scheduler Interface
  7170
  7171					;ROUTINE TO QUEUE UP A RECEIVED MESSAGE.
  7172					;	T1/ BLOCK ADDRESS
  7173
  7174	002042'01  265 16 0 00 001600*	NSPMSG::TRVAR <MSGCNT,MSGBYP,MSGSRC,MSGDST,MSGBLK,NAKFLG>
  7175	002043'01  000006  000006
  7176	002044'01  201 02 0 01 000007 		MOVEI T2,MSHDR(T1)	;GET TO DATA PORTION
  7177	002045'01  202 01 0 15 000005 		MOVEM T1,MSGBLK		;SAVE BLOCK ADDRESS
  7178	002046'01  505 02 0 00 441000 		HRLI T2,(<POINT 8,>)
  7179	002047'01  202 02 0 15 000002 		MOVEM T2,MSGBYP		;SAVE BYTE POINTER
  7180	002050'01  135 01 0 00 002456'		LOAD T1,MSCNT,(T1)	;GET BYTE COUNT
  7181	002051'01  202 01 0 15 000001 		MOVEM T1,MSGCNT		;SET UP COUNT
  7182	002052'01  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,NSPMSE)		;GET FIRST BYTE
  7183	002053'01  254 00 0 00 002127'
  7184	002054'01  134 02 0 15 000002 
  7185	002055'01  602 02 0 00 000201 		TRNE T2,201		;A ROUTINE HEADER?
  7186	002056'01  254 00 0 00 002127'		JRST NSPMSE		;YES, BUT IN ERROR
  7187	002057'01  606 02 0 00 000002 		TRNN T2,2		;IS THIS FLAGS OR ROUTE HEADER?
  7188	002060'01  254 00 0 00 002073'		JRST NSPMS1		;FLAGS, GO DO MESSAGE
  7189	002061'01  602 02 0 00 000100 		TRNE T2,100
  7190	002062'01  602 02 0 00 000060 		TRNE T2,60		;VALID HEADER?
  7191	002063'01  254 00 0 00 002127'		JRST NSPMSE		;NO
  7192	002064'01  260 17 0 00 000744'		CALL SKPFLD		;SKIP HOST NAME
  7193	002065'01  254 00 0 00 002127'		 JRST NSPMSE		;SOMETHING WRONG
  7194	002066'01  260 17 0 00 000744'		CALL SKPFLD		;SKIP OTHER HOST NAME
  7195	002067'01  254 00 0 00 002127'		 JRST NSPMSE		;SOMETHING WRONG
  7196	002070'01  375 00 0 15 000001 		GETBYM (MSGCNT,MSGBYP,NSPMSE)		;GET FLAGS
  7197	002071'01  254 00 0 00 002127'
  7198	002072'01  134 02 0 15 000002 
  7199	002073'01  200 01 0 15 000005 	NSPMS1:	MOVE T1,MSGBLK		;GET BLOCK
  7200	002074'01  137 02 0 00 002457'		STOR T2,MSMFL,(T1)	;SAVE FLAGS
  7201	002075'01  402 00 0 15 000006 		SETZM NAKFLG		;ASSUME NOT AN ACK OR NACK
  7202	002076'01  606 02 0 00 000034 		TRNN T2,ACKFLM!CNMRFL!ACKLSI ;IS IT A DATA SEGMENT?
  7203	002077'01  254 00 0 00 002103'		JRST NSPMS2		;YES. KEEP IT THEN
  7204	002100'01  606 02 0 00 000004 		TRNN T2,ACKFLM		;NO. IS IT AN ACK OR NACK?
  7205	002101'01  254 00 0 00 002127'		JRST NSPMSE		;NO. IS CONTROL, LS, OR INT MESSAGE
  7206	002102'01  350 00 0 15 000006 		AOS NAKFLG		;YES. NOTE THAT
  7207	002103'01  260 17 0 00 000677'	NSPMS2:	CALL GETLLA		;YES. GET LINK NUMBERS
  7208	002104'01  254 00 0 00 002127'		 JRST NSPMSE		;BAD MESSAGE
  7209						; ..
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 169
NSPSRV	MAC	 6-Apr-82 10:58		Scheduler Interface

  7210						; ..
  7211
  7212					; MESSAGE PARSED - PLACE MESSAGE ON APPROPRIATE QUEUE FOR LATER HANDLING
  7213
  7214	002105'01  200 01 0 15 000004 		MOVE T1,MSGDST		;GET OUR NAME
  7215	002106'01  200 02 0 15 000003 		MOVE T2,MSGSRC		;GET ITS NAME
  7216	002107'01  260 17 0 00 000070'		CALL LLLKUP		;FIND THE LINK
  7217	002110'01  254 00 0 00 002127'		 JRST NSPMSE		;COULDN'T.
  7218	002111'01  200 16 0 01 000002 		JN LLINT,(T1),NSPMSE	;IF INTERNAL LINK, PUT MESSAGE ON TASKS'S QUEUE
  7219	002112'01  603 16 0 00 004000 
  7220	002113'01  254 00 0 00 002127'
  7221	002114'01  135 02 0 00 002200'		LOAD T2,LLSTA,(T1)	;GOT IT. GET STATE
  7222	002115'01  302 02 0 00 000004 		CAIE T2,LLSRUN		;RUNNING?
  7223	002116'01  254 00 0 00 002127'		JRST NSPMSE		;NO
  7224	002117'01  200 02 0 15 000005 		MOVE T2,MSGBLK		;YES.
  7225	002120'01  200 03 0 15 000001 		MOVE T3,MSGCNT		;GET REMAINING COUNT
  7226	002121'01  137 03 0 00 002307'		STOR T3,MSDTC,(T2)	;SAVE RESIDUAL COUNT
  7227	002122'01  200 03 0 15 000002 		MOVE T3,MSGBYP
  7228	002123'01  202 03 0 02 000003 		MOVEM T3,MSBPTR(T2)	;SAVE RESIDUAL BYTE POINTER
  7229	002124'01  332 00 0 15 000006 		SKIPE NAKFLG		;IS THIS AN ACK OR NACK?
  7230						JRST [	CALL GETTWO	;YES. GET ACKNUM FIELD
  7231							 JRST NSPMSE	;BAD MESSAGE
  7232							TRNE T2,ACKBIT	;A NACK?
  7233							JRST NSPMSE	;YES. GIVE IT TO NSPTSK
  7234							MOVE T2,MSGBLK	;NO, MUST RESTORE MESSAGE BLOCK ADDRESS
  7235	002125'01  254 00 0 00 002460'			JRST .+1]	;GO ON
  7236	002126'01  254 00 0 00 001132'		CALLRET ONRAWQ		;AND PUT IT ON LINK'S Q
  7237
  7238	002127'01  200 02 0 15 000005 	NSPMSE:	MOVE T2,MSGBLK		;GET BLOCK ADDRESS
  7239	002130'01  254 00 0 00 001037'		CALLRET ONMSGQ		;PUT IN ON THE TASK'S Q
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 170
NSPSRV	MAC	 6-Apr-82 10:58		Scheduler Interface

  7240
  7241					;ROUTINE CALLED BY THE SCHEDULER EVERY 20 MS TO PROCESS MESSAGES
  7242					;ARRIVED FROM THE NETWORK
  7243
  7244	002131'01  265 16 0 00 000135*	NSPCH7::ACVAR <W1>		;GET A WORK REG
  7245	002132'01  201 05 0 00 000012 		MOVEI W1,12		;DO A LIMITED # PER PASS
  7246	002133'01  336 01 0 00 001042*	NSPCH0:	SKIPN T1,SMSGQ		;ANY MESSAGE TO DO?
  7247	002134'01  263 17 0 00 000000 		RET			;NO. ALL DONE
  7248	002135'01  7 004 20 0 00 001002 	CHNOFF DLSCHN		;TURN OFF NETWORK
  7249	002136'01  553 00 0 00 000001 		HRRZS T1		;GET HEAD POINTER
  7250	002137'01  550 02 0 01 000000 		LOAD T2,MSLNK,(T1)	;GET POINTER
  7251	002140'01  542 02 0 00 002133*		HRRM T2,SMSGQ		;NEW HEAD
  7252	002141'01  336 00 0 00 000002 		SKIPN T2		;ANY MORE IN THE Q?
  7253	002142'01  402 00 0 00 002140*		SETZM SMSGQ		;NO
  7254	002143'01  7 004 20 0 00 002002 	CHNON DLSCHN		;TURN ON NET
  7255	002144'01  260 17 0 00 002042'		CALL NSPMSG		;GO PROCESS THE MESSAGE
  7256	002145'01  365 05 0 00 002133'		SOJGE W1,NSPCH0		;GO DO MORE
  7257	002146'01  263 17 0 00 000000 		RET			;ALL DONE
  7258
  7259						ENDAV.			;END ACVAR
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 171
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7260					SUBTTL	The NODE JSYS
  7261
  7262						SWAPCD			;IS SWAPPABLE
  7263	006376'02			.NODE::	MCENT			;MONITOR CONTEXT ENTRY
  7264
  7265					; VALIDATE FUNCTION CODE AND DISPATCH TO PROCESSING ROUTINE
  7266
  7267	006376'02  256 04 0 00 010514'		UMOVE T1,1		;GET FUNCTION CODE FROM USER
  7268	006377'02  301 01 0 00 000000 		CAIL T1,0		;FUNCTION CODE WITHIN
  7269	006400'02  301 01 0 00 000016 		CAIL T1,NDTLEN		; VALID RANGE ?
  7270	006401'02  254 00 0 00 010515'		ITERR (ARGX02)		;NO, RETURN "INVALID FUNCTION" ERROR
  7271	006402'02  200 04 0 01 006406'		MOVE T4,NODTAB(T1)	;GET ADDRESS OF PROCESSING ROUTINE
  7272	006403'02  260 17 0 04 000000 		CALL (T4)		;DISPATCH TO PROPER ROUTINE
  7273	006404'02  265 02 0 00 000000*		 ITERR ()		;FAILED, RETURN ERROR CODE
  7274	006405'02  254 00 0 00 000000*		MRETNG			;SUCCESS, DONE.
  7275
  7276					; TABLE OF NODE JSYS FUNCTIONS
  7277
  7278	006406'02  000000  006424'	NODTAB:	EXP NDSLN		;(0) SET LOCAL NODE NAME
  7279	006407'02  000000  006442'		EXP NDGLN		;(1) GET LOCAL NODE NAME
  7280	006410'02  000000  006450'		EXP NDSNM		;(2) SET LOCAL NODE NUMBER
  7281	006411'02  000000  006457'		EXP NDGNM		;(3) GET LOCAL NODE NUMBER
  7282	006412'02  000000  006463'		EXP NDSLP		;(4) SET LOOPBACK PORT
  7283	006413'02  000000  006503'		EXP NDCLP		;(5) CLEAR LOOPBACK PORT
  7284	006414'02  000000  006522'		EXP NDFLP		;(6) FIND LOOPBACK PORT
  7285	006415'02  000000  006526'		EXP NDSNT		;(7) SET NETWORK TOPOLOGY INFO
  7286	006416'02  000000  006722'		EXP NDGNT		;(10) GET NETWORK TOPOLOGY INFO
  7287	006417'02  000000  006561'		EXP NDSIC		;(11) SET ITERRUPT CHANNEL FOR TOPOLOGY CHANGE
  7288	006420'02  000000  006615'		EXP NDCIC		;(12) CLEAR ITERRUPT CHANNEL FOR TOPOLOGY CHANGE
  7289	006421'02  000000  006624'		EXP NDGVR		;(13) GET NSP VERSION INFORMATION
  7290	006422'02  000000  007001'		EXP NDGLI		;(14) GET LINE INFORMATION
  7291	006423'02  000000  007075'		EXP NDVFY		;(15) VERIFY NODE NAME
  7292
  7293
  7294		   	   000016	NDTLEN==.-NODTAB
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 172
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7295					;NDSLN - ROUTINE TO SET THE LOCAL NODE NAME
  7296
  7297	006424'02  265 16 0 00 006224*	NDSLN:	STKVAR <<NODNAM,WPN>>
  7298	006425'02  000002  000002
  7299	006426'02  200 01 0 00 000000*		MOVE T1,CAPENB		;GET CURRENTLY ENABLED CAPABILITIES
  7300	006427'02  606 01 0 00 600000 		TXNN T1,SC%WHL!SC%OPR	;WHEEL OR OPERATOR CAPABILITY REQUIRED
  7301	006430'02  254 00 0 00 010517'		RETBAD (CAPX1)		;NOT ENOUGH CAPABILITY, RETURN ERROR
  7302
  7303					; COPY THE NODE NAME STRING FROM THE USER ADDRESS SPACE
  7304
  7305	006431'02  256 04 0 00 007730'		UMOVE T2,2		;GET ADDRESS OF USER'S ARGUMENT BLOCK
  7306	006432'02  256 04 0 00 010521'		UMOVE T1,.NDNOD(T2)	;GET POINTER TO STRING IN USER SPACE
  7307	006433'02  201 02 0 17 777775 		MOVEI T2,NODNAM		;WE'LL WRITE PARSED NAME TO "NODNAM"
  7308	006434'02  260 17 0 00 000000*		CALL PARNDU		;MAKE SURE NODE NAME IS KOSHER
  7309	006435'02  263 17 0 00 000000 		 RETBAD			;FAILED, TELL CALLER WHY
  7310	006436'02  202 02 0 00 004706*		MOVEM B,OURCNT		;REMEMBER LENGTH OF NAME
  7311						DMOVE T1,NODNAM		;GET NODE NAME *** DMOVE IS CHEATING BECAUSE IT ASSUMES WPN=
  7312	006437'02  120 01 0 17 777775 	2!
  7313	006440'02  124 01 0 00 004712*		DMOVEM T1,OURNAM	;STORE FOR NSP
  7314	006441'02  254 00 0 00 006337*		RETSKP			;SUCCESS RETURN
  7315
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 173
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7316					;NDGLN - RETURN LOCAL NODE NAME
  7317
  7318	006442'02  256 04 0 00 007730'	NDGLN:	UMOVE T2,2		;GET ADDRESS OF USER'S ARGUMENT BLOCK
  7319	006443'02  256 04 0 00 010521'		UMOVE T1,.NDNOD(T2)	;GET BYTE POINTER TO DEPOSIT NODE NAME
  7320	006444'02  200 03 0 00 000002 		MOVE T3,T2		;KEEP 30-BIT ADDRESS IN T3 FOR RETURNING
  7321									; UPDATED BYTE POINTER TO USER
  7322	006445'02  561 02 0 00 000000#		HRROI T2,OURNAM-1	;GET POINTER TO SOURCE STRING
  7323	006446'02  260 17 0 00 000000*		CALL CPYTU1		;COPY STRING TO USER SPACE, RETURN POINTER
  7324	006447'02  254 00 0 00 006441*		RETSKP			;DONE, RETURN SUCCESS
  7325
  7326					;SET LOCAL NODE NUMBER
  7327
  7328	006450'02  256 04 0 00 007730'	NDSNM:	UMOVE T2,2
  7329	006451'02  256 04 0 00 010522'		UMOVE T2,0(T2)		;GET NUMBER
  7330	006452'02  301 02 0 00 000002 		CAIL T2,2
  7331	006453'02  303 02 0 00 000177 		CAILE T2,177		;WITHIN RANGE?
  7332	006454'02  263 17 0 00 000000 		RETBAD()		;NO
  7333	006455'02  202 02 0 00 000000*		MOVEM T2,OURNUM		;SET IT
  7334	006456'02  254 00 0 00 006447*		RETSKP			;DONE
  7335
  7336					;GET LOCAL NODE NUMBER
  7337
  7338	006457'02  256 04 0 00 007730'	NDGNM:	UMOVE T2,2
  7339	006460'02  200 03 0 00 006455*		MOVE T3,OURNUM
  7340	006461'02  256 04 0 00 010523'		UMOVEM T3,0(T2)		;STORE NUMBER
  7341	006462'02  254 00 0 00 006456*		RETSKP			;DONE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 174
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7342					;SET LOOPBACK PORT
  7343
  7344	006463'02  200 01 0 00 006426*	NDSLP:	MOVE T1,CAPENB		;GET CURRENTLY ENABLED CAPABILITIES
  7345	006464'02  606 01 0 00 640000 		TXNN T1,SC%WHL!SC%OPR!SC%MNT ;WHEEL OPERATOR OR MAINTENANCE CAPABILITY REQUIRED
  7346	006465'02  254 00 0 00 010524'		RETBAD (CAPX2)		;WHEEL, OPERATOR, or MAINTENANCE capability required
  7347	006466'02  256 04 0 00 007730'		UMOVE T2,2		;GET ADDRESS OF USERS ARGUMENT BLOCK
  7348	006467'02  256 04 0 00 010526'		UMOVE T3,.NDPRT(T2)	;GET PORT WANTS TO SET IN LOOPBACK
  7349	006470'02  332 02 0 00 004723*		SKIPE T2,NSPLPB		;IS ANOTHER PORT ALREADY ASSIGNED ?
  7350						JRST [	CAIE T3,(T2)	;IS IT SAME PORT ?
  7351							RETBAD (NODX03)	;Another line already looped
  7352	006471'02  254 00 0 00 010531'			RETSKP	]	;ALL DONE
  7353	006472'02  201 01 0 00 000006 		MOVEI T1,.BTSTS		;WANT TO GET PORT STATUS
  7354	006473'02  201 02 0 00 000003 		MOVEI T2,T3		;ADDRESS OF ARGUMENT BLOCK
  7355	006474'02  104 00 0 00 000562 		BOOT			;GET ARGUMENT STATUS
  7356	006475'02  320 16 0 00 010536'		ERJMP [RETBAD (ARGX19)]	;Invalid unit number
  7357	006476'02  312 04 0 00 010441'		CAME T4,[EXP -1]	;IS PORT TURNED OFF
  7358	006477'02  254 00 0 00 010537'		RETBAD (NODX02)		;Line not turned off
  7359	006500'02  505 03 0 00 200000 		HRLI T3,(ND%LPA)	;HAVE A PORT FOR LOOPBACK NOW
  7360	006501'02  202 03 0 00 006470*		MOVEM T3,NSPLPB		;REMEMBER WHICH PORT WILL BE LOOPED
  7361	006502'02  254 00 0 00 006462*		RETSKP
  7362
  7363					;CLEAR LOOPBACK PORT
  7364
  7365	006503'02  200 01 0 00 006463*	NDCLP:	MOVE T1,CAPENB		;GET CURRENTLY ENABLED CAPABILITIES
  7366	006504'02  606 01 0 00 640000 		TXNN T1,SC%WHL!SC%OPR!SC%MNT ;WHEEL OPERATOR OR MAINTENANCE CAPABILITY REQUIRED
  7367	006505'02  254 00 0 00 010524'		RETBAD (CAPX2)		;WHEEL, OPERATOR, or MAINTENANCE capability required
  7368	006506'02  336 01 0 00 006501*		SKIPN T1,NSPLPB		;GET LOOPBACK PORT NUMBER
  7369	006507'02  254 00 0 00 006502*		RETSKP			;NONE SO DONE
  7370	006510'02  256 04 0 00 007730'		UMOVE T2,2		;GET ADDRESS OF USERS ARGUMENT BLOCK
  7371	006511'02  256 04 0 00 010526'		UMOVE T3,.NDPRT(T2)	;GET PORT TO CLEAR LOOPBACK
  7372	006512'02  302 03 0 01 000000 		CAIE T3,(T1)		;SAME PORT AS IS LOOPED BACK ?
  7373	006513'02  254 00 0 00 010534'		RETBAD (ARGX19)		;Invalid unit number
  7374	006514'02  201 01 0 00 000005 		MOVEI T1,.BTTPR		;TERMINATE PROTOCOL
  7375	006515'02  201 02 0 00 000003 		MOVEI T2,T3		;ADDRESS OF ARGUMENT BLOCK
  7376	006516'02  104 00 0 00 000562 		BOOT			;DISABLE LINE
  7377	006517'02  320 16 0 00 006520'		ERJMP .+1		;CAN'T TURN OFF ?
  7378	006520'02  402 00 0 00 006506*		SETZM NSPLPB		;NOTHING IS LOOPED BACK NOW
  7379	006521'02  254 00 0 00 006507*		RETSKP
  7380
  7381					;FIND LOOPBACK PORT
  7382
  7383	006522'02  256 04 0 00 007730'	NDFLP:	UMOVE T2,2		;GET ADR OF USERS ARGUMENT BLOCK
  7384	006523'02  200 01 0 00 006520*		MOVE T1,NSPLPB		;GET LOOPED BACK LINE
  7385	006524'02  256 04 0 00 010541'		UMOVEM T1,.NDPRT(T2)	;GIVE ANSWER TO USER
  7386	006525'02  254 00 0 00 006521*		RETSKP
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 175
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7387					; SET NETWORK TOPOLOGY INFO
  7388
  7389	006526'02  265 16 0 00 006424*	NDSNT:	STKVAR <<SNTBLK,MAXNOD>,SNTCNT>
  7390	006527'02  000025  000025
  7391
  7392					; CHECK CAPABILITIES
  7393
  7394	006530'02  200 01 0 00 006503*		MOVE T1,CAPENB		;GET CURRENTLY ENABLED CAPABILITIES
  7395	006531'02  606 01 0 00 600000 		TXNN T1,SC%WHL!SC%OPR	;WHEEL, OPERATOR CAPABILITY REQUIRED
  7396	006532'02  254 00 0 00 010517'		RETBAD (CAPX1)		;WHEEL OR OPERATOR capability required
  7397
  7398					; CHECK NUMBER OF ITEMS TO BE ENTERED AND COPY POINTERS TO NODE BLOCKS
  7399
  7400	006533'02  256 04 0 00 007730'		UMOVE T2,2		;GET ADDRESS OF USER'S ARGUMENT BLOCK
  7401	006534'02  256 04 0 00 010542'		UMOVE T1,.NDCNT(T2)	;GET NUMBER OF ITEMS SUPPLIED IN NODE BLOCKS
  7402	006535'02  305 01 0 00 000003 		CAIGE T1,.NDNXT+1	;AT LEAST NAME, STATE, AND NEIGHBOR REQUIRED
  7403	006536'02  254 00 0 00 010543'		RETBAD (ARGX17)		;FAIL, NODE BLOCKS TOO SMALL
  7404	006537'02  256 04 0 00 010521'		UMOVE T1,.NDNND(T2)	;GET NUMBER OF NODES TO BE ENTERED
  7405	006540'02  301 01 0 00 000000 		CAIL T1,0		;WITHIN VALID
  7406	006541'02  303 01 0 00 000024 		CAILE T1,MAXNOD		; RANGE ?
  7407	006542'02  254 00 0 00 010543'		RETBAD (ARGX17)		;NO, INVALID ARGUMENT BLOCK LENGTH
  7408	006543'02  202 01 0 17 777752 		MOVEM T1,SNTCNT		;SAVE NUMBER OF NODES TO BE ADDED
  7409	006544'02  271 02 0 00 000002 		ADDI T2,.NDBK1		;POINT TO FIRST WORD TO BE MOVED
  7410	006545'02  201 03 0 17 777753 		MOVEI T3,SNTBLK		;GET ADDRESS OF BLOCK TO HOLD POINTERS
  7411	006546'02  260 17 0 00 000000*		CALL BLTUM1		;COPY POINTERS TO NODE BLOCKS
  7412
  7413					; LOOP, ADDING EACH NODE TO THE TABLE OF KNOWN NODES
  7414
  7415	006547'02  415 05 0 17 777753 		XMOVEI Q1,SNTBLK	;GET ADDRESS OF BLOCK OF POINTERS
  7416	006550'02  200 06 0 00 000005 		MOVE Q2,Q1		;COPY STARTING ADDRESS  OF BLOCK
  7417	006551'02  270 05 0 17 777752 		ADD Q1,SNTCNT		;COMPUTE FIRST ADR PAST END OF BLOCK
  7418	006552'02  311 06 0 00 000005 	NDSN10:	CAML Q2,Q1		;ANOTHER NODE TO ADD ?
  7419	006553'02  254 00 0 00 006525*		RETSKP			;NO, DONE
  7420	006554'02  200 01 0 06 000000 		MOVE T1,(Q2)		;GET POINTER TO NODE BLOCK IN USER SPACE
  7421	006555'02  260 17 0 00 006646'		CALL INSNOD		;INSERT NODE IN TABLE OF KNOWN NODES
  7422	006556'02  263 17 0 00 000000 		 RETBAD ()		;FAILED
  7423	006557'02  271 06 0 00 000001 		ADDI Q2,1		;POINT TO NEXT ITEM IN ARG BLOCK
  7424	006560'02  254 00 0 00 006552'		JRST NDSN10		;LOOP OVER ALL ENTRIES IN TABLE
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 176
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7425					; SET INTERRUPT CHANNEL FOR NETWORK TOPOLOGY CHANGE
  7426	006561'02  256 04 0 00 010545'	NDSIC:	UMOVE T3,T2		;GET USER BLOCK ADDRESS
  7427	006562'02  256 04 0 00 010546'		XCTU [ MOVEI T1,.NDCHN(T3)]	;POINT TO CHANNEL NUMBER WORD
  7428	006563'02  256 04 0 00 010547'		UMOVE T1,(T1)		;GET THE CHANNEL NUMBER
  7429	006564'02  335 00 0 00 000001 		SKIPGE T1		;VALIDATE CHANNEL NUMBER
  7430	006565'02  254 00 0 00 007665'		RETBAD (ARGX13)		;NEGATIVE CHANNEL NUMBERS ARE ILLEGAL
  7431	006566'02  303 01 0 00 000043 		CAILE T1,^D35		;CHANNEL NUMBER TOO HIGH
  7432	006567'02  254 00 0 00 007665'		RETBAD (ARGX13)		;NEGATIVE CHANNEL NUMBERS ARE ILLEGAL
  7433	006570'02  301 01 0 00 000006 		CAIL T1,.ICAOV		;SKIP IF GOOD NUMBER
  7434	006571'02  303 01 0 00 000026 		CAILE T1,.ICNXP		;SKIP IF BAD NUMBER
  7435	006572'02  254 00 0 00 006574'		JRST CHANOK		;CHANNEL NUMBER OK.
  7436	006573'02  254 00 0 00 007665'		RETBAD (ARGX13)		;BAD CHANNEL NUMBER
  7437
  7438	006574'02  400 04 0 00 000000 	CHANOK:	SETZ T4,		;T4 WILL HOLD ADDRESS OF FREE ENTRY
  7439	006575'02  201 02 0 00 000726*		MOVEI T2,NTCTAB		;POINT TO TOP OF TABLE OF WAITING FORKS
  7440
  7441					;HERE TO DETERMINE IF FORK ALREADY HAS SET THE INTERRUPT ONCE
  7442
  7443	006576'02  336 00 0 02 000000 	CHNOK1:	SKIPN (T2)		;SKIP IF ENTRY IS BEING USED
  7444						 JRST [	MOVE T4,T2	;SAVE FOR FORK NOT CURRENTLY ACTIVATED
  7445	006577'02  254 00 0 00 010550'			JRST CHNOK2]	;TRY NEXT ENTRY
  7446	006600'02  554 03 0 02 000000 		LOAD T3,NTCFRK,(T2)	;GET THE FORK NUMBER
  7447	006601'02  316 03 0 00 001731*		CAMN T3,FORKX		;DOES THIS ENTRY BELONG TO THIS FORK
  7448						JRST [	STOR T1,NTCCHN,(T2)	;YES. PUT NEW CHANNEL NUMBER IN
  7449	006602'02  254 00 0 00 010552'			RETSKP]
  7450	006603'02  302 02 0 00 000000#	CHNOK2:	CAIE T2,NTCTAB+<NTCMAX-1>	;HAVE WE LOOKED AT WHOLE TABLE
  7451	006604'02  344 02 0 00 006576'		AOJA T2,CHNOK1		;NO - KEEP LOOKING
  7452	006605'02  336 00 0 00 000004 		SKIPN T4		;DID WE FIND AN ENTRY?
  7453	006606'02  254 00 0 00 010554'		RETBAD (NSPX26)		;ERROR - TABLE OF TOPOLOGY WATCHERS IS FULL
  7454	006607'02  542 01 0 04 000000 		STOR T1,NTCCHN,(T4)	;SAVE THE CHANNEL NUMBER
  7455	006610'02  200 01 0 00 006601*		MOVE T1,FORKX		;NOW GET THE FORK NUMBER
  7456	006611'02  506 01 0 04 000000 		STOR T1,NTCFRK,(T4)	;AND SAVE
  7457	006612'02  205 16 0 00 400000 		SETONE FKNTC,(T1)	;FLAG IN FORK DATA BASE
  7458	006613'02  436 16 0 01 000000*
  7459	006614'02  254 00 0 00 006553*		RETSKP
  7460
  7461					;NDCIC - CLEAR INTERRUPT CHANNEL FOR NETWORK TOPOLOGY CHANGE
  7462
  7463	006615'02			NDCIC:
  7464	006615'02  201 01 0 00 006575*	NTCOFF::MOVEI T1,NTCTAB		;FIND THE FORK'S ENTRY
  7465	006616'02  554 02 0 01 000000 	NDCIC1:	LOAD T2,NTCFRK,(T1)	;GET THE FORK NUMBER FOR THIS ENTRY
  7466	006617'02  316 02 0 00 006610*		CAMN T2,FORKX		;THIS FORKS ENTRY
  7467						JRST [	SETZM (T1)	;CLEAR ENTRY
  7468							MOVE T1,FORKX	;GET FORK INDEX
  7469							SETZRO FKNTC,(T1)	;CLEAR THE ITEM IN FORK DATA BASE
  7470	006620'02  254 00 0 00 010556'			RETSKP]
  7471	006621'02  302 01 0 00 000000#		CAIE T1,NTCTAB+<NTCMAX-1>	;AT END OF TABLE
  7472	006622'02  344 01 0 00 006616'		AOJA T1,NDCIC1		;NO - KEEP LOOKING
  7473	006623'02  254 00 0 00 006614*		RETSKP			;INDICATE SUCCESS EVEN WHEN NEVER SET
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 177
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7474					;NDGVR - GET NSP VERSION INVORMATION
  7475
  7476	006624'02  256 04 0 00 010545'	NDGVR:	UMOVE T3,T2		;GET THE USER BLOCK POINTER
  7477	006625'02  201 02 0 00 000002 		MOVX T2,2		;GET NUMBER OF VERSIONS TO RETURN
  7478	006626'02  256 04 0 00 010563'		UMOVEM T2,.NDNVR(T3)	;STORE IN USER ARGUMENT BLOCK
  7479	006627'02  256 04 0 00 010564'		UMOVE T1,.NDCVR(T3)	;GET THE ADDRESS OF THE COMMUNICATION BLOCK
  7480	006630'02  201 02 0 00 000003 		MOVEI T2,COMVER		;COMMUNICATION VERSION NUMBER
  7481	006631'02  256 04 0 00 010565'		UMOVEM T2,.NDVER(T1)	;SAVE IN USER SPACE
  7482	006632'02  201 02 0 00 000001 		MOVEI T2,COMECO		;COMMUNICATION ECO
  7483	006633'02  256 04 0 00 010566'		UMOVEM T2,.NDECO(T1)	;SAVE IN USER SPACE
  7484	006634'02  201 02 0 00 000000 		MOVEI T2,COMCST		;GET THE CUSTOMER CHANGE NUMBER
  7485	006635'02  256 04 0 00 010567'		UMOVEM T2,.NDCST(T1)	;SAVE IN USER SPACE
  7486
  7487					;NOW GIVE USER THE ROUTING VERSION INFORMATION
  7488
  7489	006636'02  256 04 0 00 010570'		UMOVE T1,.NDRVR(T3)	;GET THE ADDRESS OF THE ROUTING BLOCK
  7490	006637'02  201 02 0 00 000003 		MOVEI T2,ROUVER		;ROUTING VERSION NUMBER
  7491	006640'02  256 04 0 00 010565'		UMOVEM T2,.NDVER(T1)	;SAVE IN USER SPACE
  7492	006641'02  201 02 0 00 000000 		MOVEI T2,ROUECO		;ROUTING ECO
  7493	006642'02  256 04 0 00 010566'		UMOVEM T2,.NDECO(T1)	;SAVE IN USER SPACE
  7494	006643'02  201 02 0 00 000000 		MOVEI T2,ROUCST		;GET THE CUSTOMER CHANGE NUMBER
  7495	006644'02  256 04 0 00 010567'		UMOVEM T2,.NDCST(T1)	;SAVE IN USER SPACE
  7496	006645'02  254 00 0 00 006623*		RETSKP			;RETURN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 178
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7497					;INSNOD - ROUTINE TO INSERT NODE INTO TABLE OF KNOWN NODES
  7498					;
  7499					;ACCEPTS IN T1/	ADDRESS OF NODE BLOCK IN USER SPACE
  7500					;		CALL INSNOD
  7501					;RETURNS: +1	 FAILED
  7502					;	  +2	SUCCESS, NODE ADDED IF NOT ALREADY IN TABLE
  7503
  7504	006646'02  265 16 0 00 006250*	INSNOD:	ASUBR <INDBLK,INDSTA,INDADR,INDERR>
  7505	006647'02  200 04 0 15 000001 		MOVE T4,INDBLK		;GET ADDRESS OF NODE BLOCK
  7506	006650'02  256 04 0 00 010571'		UMOVE T2,.NDNAM(T4)	;GET ADDRESS OF NODE NAME STRING
  7507	006651'02  320 16 0 00 006332*		 ERJMP R		;FAILED
  7508	006652'02  322 02 0 00 006651*		JUMPE T2,R		;FAIL IF NO NAME SPECIFIED
  7509	006653'02  256 04 0 00 010572'		UMOVE T1,.NDSTA(T4)	;GET NODE STATE
  7510	006654'02  320 16 0 00 006652*		 ERJMP R		;FAIL IF NON-EX USER PAGE
  7511	006655'02  202 01 0 15 000002 		MOVEM T1,INDSTA		;SAVE STATE
  7512	006656'02  201 01 0 00 000006 		MOVX T1,2*<<NODMAX+12>/5> ;ASSIGN SPACE FOR NODE NAME
  7513	006657'02  350 00 0 00 004471*		NOINT
  7514	006660'02  260 17 0 00 001305*		CALL ASGSWP		;GET SOME SPACE
  7515	006661'02  263 17 0 00 000000 		 RETBAD ()		;FAILED
  7516	006662'02  202 01 0 15 000003 		MOVEM T1,INDADR		;SAVE ADDRESS OF BLOCK
  7517	006663'02  200 02 0 15 000001 		MOVE T2,INDBLK		;GET BACK ADDRESS OF NODE BLOCK
  7518	006664'02  256 04 0 00 010522'		UMOVE T2,.NDNAM(T2)	;GET ADDRESS OF NODE NAME STRING
  7519	006665'02  320 16 0 00 006714'		 ERJMP INSERR		;FAIL IF NON-EX USER PAGE
  7520	006666'02  201 03 0 00 000006 		MOVX T3,NODMAX		;MAX # OF CHARS IN NODE NAME
  7521	006667'02  260 17 0 00 000000*		CALL CPYFU2		;GET STRING FROM USER
  7522	006670'02  254 00 0 00 006714'		 JRST INSERR		;ERROR - HANDLE
  7523	006671'02  200 01 0 15 000003 		MOVE T1,INDADR		;GET ADDRESS OF BUFFER
  7524	006672'02  271 01 0 00 000003 		ADDI T1,<NODMAX+12>/5	;POINT TO SECOND SLOT
  7525	006673'02  200 02 0 15 000001 		MOVE T2,INDBLK		;GET ADDRESS OF BLOCK
  7526	006674'02  256 04 0 00 010573'		UMOVE T2,.NDNXT(T2)	;GET ADDRESS OF NEIGHBOR NODE NAME STRING
  7527	006675'02  320 16 0 00 006714'		 ERJMP INSERR		;FAIL IF NON-EX USER PAGE
  7528	006676'02  322 02 0 00 006703'		JUMPE T2,INSND1		;NO NEIGHBOR - NO NEED TO COPY
  7529	006677'02  201 03 0 00 000006 		MOVX T3,NODMAX		;MAX # OF CHARS IN NODE NAME
  7530	006700'02  260 17 0 00 006667*		CALL CPYFU2		;GET STRING FROM USER
  7531	006701'02  254 00 0 00 006714'		 JRST INSERR		;ERROR - HANDLE
  7532	006702'02  476 00 0 00 000002 		SETOM T2		;SHOW THERE EXISTS A NEIGHBOR
  7533	006703'02  200 01 0 15 000003 	INSND1:	MOVE T1,INDADR		;GET ADDRESS OF BUFFER
  7534	006704'02  350 00 0 00 000001 		AOS T1			;POINT TO START OF MESSAGE
  7535	006705'02  332 03 0 00 000002 		SKIPE T3,T2		;MAKE T3 ZERO IF NO NEIGHBOR
  7536	006706'02  201 03 0 01 000003 		MOVEI T3,<<NODMAX+12>/5>(T1)	;POINT TO NEIGHBOR NAME
  7537	006707'02  200 02 0 15 000002 		MOVE T2,INDSTA		;RESTORE STATE
  7538	006710'02  260 17 0 00 000655'		CALL ADDNOD		;ADD NODE TO TABLE OF KNOWN NODES
  7539	006711'02  254 00 0 00 006714'		 JRST INSERR		;ERROR - HANDLE
  7540	006712'02  256 00 0 00 005742*		OKINT
  7541	006713'02  254 00 0 00 006645*		RETSKP			;DONE, RETURN
  7542
  7543	006714'02  202 01 0 15 000004 	INSERR:	MOVEM T1,INDERR		;SAVE ERROR CODE
  7544	006715'02  200 01 0 15 000003 		MOVE T1,INDADR 	;ADDRESS OF BLOCK
  7545	006716'02  260 17 0 00 001062*		CALL RELMES		;RELEASE THE BLOCK
  7546	006717'02  200 01 0 15 000004 	INSER1:	MOVE T1,INDERR		;RESTORE ERROR CODE
  7547	006720'02  256 00 0 00 006712*		OKINT
  7548	006721'02  263 17 0 00 000000 		RETBAD () 		;FAIL
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 179
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7549					; GET NETWORK TOPOPLOGY INFORMATION
  7550
  7551	006722'02  265 16 0 00 006526*	NDGNT:	STKVAR <GNTCNT>
  7552	006723'02  000001  000001
  7553
  7554					; SET UP TO LOOP OVER EACH NODE
  7555
  7556	006724'02  256 04 0 00 010550'		UMOVE T4,2		;GET ADDRESS OF USER'S ARGUMENT BLOCK
  7557	006725'02  256 04 0 00 010574'		UMOVE T1,.NDNND(T4)	;GET NUMBER OF WORDS IN BLOCK
  7558	006726'02  270 01 0 00 000004 		ADD T1,T4		;COMPUTE LAST ADDRESS TO USE
  7559	006727'02  202 01 0 17 777776 		MOVEM T1,GNTCNT		;SAVE LAST ADDRESS IN USER SPACE TO STORE INTO
  7560	006730'02  201 05 0 04 000002 		MOVEI Q1,.NDBK1(T4)	;SET UP ADDRESS OF NEXT POINTER TO USE
  7561	006731'02  200 02 0 00 001065*		MOVE T2,NODTBL		;GET ADDRESS OF KNOWN NODE TABLE
  7562	006732'02  322 02 0 00 006713*		JUMPE T2,RSKP		;IF NO NODE LIST, THEN DONE
  7563	006733'02  554 03 0 02 000000 		HLRZ T3,(T2)		;GET NUMBER OF ITEMS IN KNOWN NODE TABLE
  7564	006734'02  322 03 0 00 006732*		JUMPE T3,RSKP		;IF NONE, THEN ALL DONE
  7565	006735'02  200 06 0 00 000005 		MOVE Q2,Q1		;COPY STARTING ADDRESS OF NODE BLOCK POINTERS
  7566	006736'02  270 06 0 00 000003 		ADD Q2,T3		;COMPUTE STARTING ADDRESS OF NODE BLOCK AREA
  7567	006737'02  313 06 0 17 777776 		CAMLE Q2,GNTCNT		;ENOUGH ROOM FOR ALL THE NODE BLOCK POINTERS ?
  7568	006740'02  254 00 0 00 010575'		RETBAD (ARGX04)		;NO, FAIL
  7569	006741'02  256 04 0 00 010577'		XCTU [HRLM T3,.NDNND(T4)] ;YES, STORE COUNT OF ITEMS RETURNED
  7570	006742'02  210 07 0 00 000003 		MOVN Q3,T3		;COMPUTE -NUMBER OF NODES
  7571	006743'02  514 07 0 00 000007 		HRLZ Q3,Q3		;FORM AOBJN POINTER TO NODE TABLE
  7572	006744'02  541 07 0 02 000001 		HRRI Q3,1(T2)		;FORM AOBJN POINTER TO FIRST ENTRY
  7573	006745'02  201 01 0 00 000003 		MOVX T1,.NDNBS		;GET SIZE OF A NODE BLOCK
  7574	006746'02  256 04 0 00 010600'		UMOVEM T1,.NDCNT(T4)	;STORE IN USER ARG BLOCK
  7575
  7576					; LOOP OVER EACH KNOWN NODE
  7577
  7578	006747'02  350 00 0 00 006657*		NOINT			;DO NOT PERMIT INTERRUPTS WITH LOCK LOCKED
  7579	006750'02  352 00 0 00 000762*		LOCK NODLOK		;LOCK THE TABLE
  7580	006751'02  265 16 0 00 006343*
  7581	006752'02  256 04 0 00 010601'	NDGN10:	UMOVEM Q2,(Q1)		;STORE POINTER TO NODE BLOCK
  7582	006753'02  320 16 0 00 006776'		 ERJMP NDGNX		;FAILED, CLEAN UP AND RETURN ERROR
  7583	006754'02  201 01 0 06 000003 		MOVEI T1,.NDNBS(Q2)	;COMPUTE ADDRESS AFTER THIS NODE BLOCK
  7584	006755'02  311 01 0 17 777776 		CAML T1,GNTCNT		;ENOUGH ROOM FOR THIS NODE BLOCK AND NAME ?
  7585						JRST [	MOVX T1,ARGX04	;NO, GET "ARG BLOCK TOO SMALL" CODE
  7586	006756'02  254 00 0 00 010602'			JRST NDGNX ]	;RETURN ERROR TO USER
  7587	006757'02  201 01 0 00 000000 		MOVX T1,.NDSON		;GET NODE STATE ("ON" IF IN KNOWN NODE TABLE)
  7588	006760'02  256 04 0 00 010604'		UMOVEM T1,.NDSTA(Q2)	;STORE STATE IN NODE BLOCK IN USER SPACE
  7589	006761'02  541 03 0 06 000003 		HRRI T3,.NDNBS(Q2)	;GET ADDRESS WHERE NAME WILL GO
  7590	006762'02  505 03 0 00 440700 		HRLI T3,(POINT 7,)	;FORM POINTER TO NODE NAME DESTINATION
  7591	006763'02  256 04 0 00 010605'		UMOVEM T3,.NDNAM(Q2)	;STORE POINTER TO NODE NAME IN USER SPACE
  7592	006764'02  554 01 0 07 000000 		HLRZ T1,(Q3)		;GET ADDRESS OF NODE NAME STRING
  7593	006765'02  505 01 0 00 440700 		HRLI T1,(POINT 7,)	;FORM POINTER TO NODE NAME
  7594	006766'02  260 17 0 00 007065'		CALL STONOD		;STORE NODE NAME STRING IN USER SPACE
  7595	006767'02  254 00 0 00 006776'		 JRST NDGNX		;FAILED
  7596	006770'02  271 05 0 00 000001 		ADDI Q1,1		;INCREMENT ADDRESS OF NEXT NODE BLOCK POINTER
  7597	006771'02  541 06 0 03 000001 		HRRI Q2,1(T3)		;GET ADDRESS OF NEXT NODE BLOCK
  7598	006772'02  253 07 0 00 006752'		AOBJN Q3,NDGN10		;LOOP OVER EACH NODE NAME TO BE RETURNED
  7599
  7600					; HERE WHEN ALL INFO RETURNED TO USER - STORE COUNT OF ITEMS RETURNED
  7601
  7602	006773'02  476 00 0 00 006750*	NDGN30:	UNLOCK NODLOK		;UNLOCK THE NODE TABLE
  7603	006774'02  256 00 0 00 006720*		OKINT			;PERMIT INTERRUPTS AGAIN
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 179-1
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7604
  7605	006775'02  254 00 0 00 006734*	NDGN40:	RETSKP			;DONE, RETURN SUCCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 180
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7606					; HERE ON AN ERROR
  7607
  7608	006776'02  476 00 0 00 006773*	NDGNX:	UNLOCK NODLOK		;UNLOCK NODE TABLE
  7609	006777'02  256 00 0 00 006774*		OKINT			;PERMIT INTERRUPTS AGAIN
  7610	007000'02  263 17 0 00 000000 		RET			;FAIL
  7611
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 181
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7612					; GET LINE INFORMATION INFORMATION
  7613
  7614	007001'02  265 16 0 00 006722*	NDGLI:	STKVAR <LITCNT>
  7615	007002'02  000001  000001
  7616
  7617					; SET UP TO LOOP OVER EACH NODE
  7618
  7619	007003'02  256 04 0 00 007253'		XCTU [HRRZ T2,2]	;GET ADDRESS OF USER'S ARGUMENT BLOCK
  7620	007004'02  256 04 0 00 010606'		XCTU [HRRZ T1,.NDNLN(T2)]	;GET NUMBER OF WORDS IN BLOCK
  7621	007005'02  270 01 0 00 000002 		ADD T1,T2		;COMPUTE LAST ADDRESS TO USE
  7622	007006'02  202 01 0 17 777776 		MOVEM T1,LITCNT		;SAVE LAST ADDRESS IN USER SPACE TO STORE INTO
  7623	007007'02  201 05 0 02 000001 		MOVEI Q1,.NDNLN+1(T2)	;SET UP ADDRESS OF NEXT POINTER TO USE
  7624	007010'02  201 03 0 00 004756*		MOVEI T3,DCN		;GET MAXIMUM NUMBER OF POSSIBLE LINES
  7625						JUMPE T3,[SETZM T4	;IF NO INFO, RETURN 0
  7626	007011'02  322 03 0 00 010607'			  JRST NDLI40 ]	; IN THE USER ARGUMENT BLOCK
  7627	007012'02  256 04 0 00 010550'		UMOVE T4,2		;GET ADDRESS OF USER'S ARGUMENT BLOCK
  7628	007013'02  256 04 0 00 010577'		XCTU [HRLM T3,.NDNLN(T4)] ;STORE COUNT OF ITEMS RETURNED
  7629	007014'02  200 06 0 00 000005 		MOVE Q2,Q1		;COPY STARTING ADDRESS OF LINE BLOCK POINTERS
  7630	007015'02  270 06 0 00 000003 		ADD Q2,T3		;COMPUTE STARTING ADDRESS OF LINE BLOCK AREA
  7631	007016'02  313 06 0 17 777776 		CAMLE Q2,LITCNT		;ENOUGH ROOM FOR ALL THE LINE BLOCK POINTERS ?
  7632	007017'02  254 00 0 00 010575'		RETBAD (ARGX04)		;NO, FAIL
  7633	007020'02  210 07 0 00 000003 		MOVN Q3,T3		;COMPUTE -NUMBER OF LINES
  7634	007021'02  514 07 0 00 000007 		HRLZ Q3,Q3		;FORM AOBJN POINTER TO LINE TABLE
  7635
  7636					; LOOP OVER EACH KNOWN LINE
  7637
  7638	007022'02  256 04 0 00 010601'	NDLI10:	UMOVEM Q2,(Q1)		;STORE POINTER TO LINE BLOCK
  7639	007023'02  201 01 0 06 000005 		MOVEI T1,.NDLSZ+2(Q2)	;COMPUTE ADDRESS AFTER THIS LINE BLOCK
  7640	007024'02  313 01 0 17 777776 		CAMLE T1,LITCNT		;ENOUGH ROOM FOR THIS LINE BLOCK AND NAME ?
  7641	007025'02  254 00 0 00 010575'		RETBAD(ARGX04)		;NO, FAIL
  7642	007026'02  201 01 0 00 000006 		MOVEI T1,.BTSTS		;USE BOOT JSYS TO GET STATUS OF LINE
  7643	007027'02  201 02 0 00 000003 		MOVEI T2,3		;HAVE IT PUT DATA IN AC'S
  7644	007030'02  550 03 0 00 000007 		HRRZ T3,Q3		;GET LINE NUMBER
  7645	007031'02  256 04 0 00 010605'		UMOVEM T3,.NDLNM(Q2)	;SAVE THE PORT NUMBER
  7646	007032'02  104 00 0 00 000562 		BOOT
  7647						 ERJMP [ MOVE T1,LSTERR	;GET THE LAST ERROR MESSAGE
  7648	007033'02  320 16 0 00 010611'			 RETBAD()]
  7649	007034'02  201 03 0 00 000001 		MOVEI T3,.NDLON		;TRANSLATE BOOT CODE TO NODE JSYS CODE
  7650	007035'02  302 04 0 00 000001 		CAIE T4,.VNMCB		;IS IT RUNNING MCB
  7651	007036'02  306 04 0 00 000002 		CAIN T4,.VNDDC		;NO - IS IT RUNNING DDCMP
  7652	007037'02  254 00 0 00 007047'		JRST NDLI11		;YES - THEN IT IS ON
  7653	007040'02  201 03 0 00 000003 		MOVEI T3,.NDLCN		;IS IT CONTROLLER LOOPBACK?
  7654	007041'02  306 04 0 00 000004 		CAIN T4,.VNCNL		;???
  7655	007042'02  254 00 0 00 007047'		JRST NDLI11		;YES
  7656	007043'02  201 03 0 00 000004 		MOVEI T3,.NDLCB		;CABLE LOOPBACK?
  7657	007044'02  306 04 0 00 000005 		CAIN T4,.VNCBL		;??
  7658	007045'02  254 00 0 00 007047'		JRST NDLI11		;YES
  7659	007046'02  201 03 0 00 000002 		MOVEI T3,.NDLOF		;SEE IF IT'S OFF
  7660	007047'02  256 04 0 00 010613'	NDLI11:	UMOVEM T3,.NDLST(Q2)	;STORE STATE IN LINE BLOCK IN USER SPACE
  7661	007050'02  541 03 0 06 000003 		HRRI T3,.NDLSZ(Q2)	;GET ADDRESS WHERE NAME WILL GO
  7662	007051'02  505 03 0 00 440700 		HRLI T3,(POINT 7,)	;FORM POINTER TO LINE NAME DESTINATION
  7663	007052'02  256 04 0 00 010614'		UMOVEM T3,.NDLND(Q2)	;STORE POINTER TO LINE NAME IN USER SPACE
  7664	007053'02  550 01 0 00 000007 		HRRZ T1,Q3		;ITSNAM INDEX IS TWICE THE LINE NUMBER
  7665	007054'02  242 01 0 00 000001 		LSH T1,1
  7666	007055'02  541 01 0 01 005005*		HRRI T1,ITSNAM(T1)	;GET ADDRESS OF LINE NAME STRING
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 181-1
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7667	007056'02  505 01 0 00 440700 		HRLI T1,(POINT 7,)	;FORM POINTER TO LINE NAME
  7668	007057'02  260 17 0 00 007065'		CALL STONOD		;STORE LINE NAME STRING IN USER SPACE
  7669	007060'02  254 00 0 00 007064'		 JRST NDLI40		;FAILED
  7670	007061'02  271 05 0 00 000001 		ADDI Q1,1		;INCREMENT ADDRESS OF NEXT LINE BLOCK POINTER
  7671	007062'02  541 06 0 03 000001 		HRRI Q2,1(T3)		;GET ADDRESS OF NEXT LINE BLOCK
  7672	007063'02  253 07 0 00 007022'		AOBJN Q3,NDLI10		;LOOP OVER EACH LINE NAME TO BE RETURNED
  7673
  7674					; HERE WHEN ALL INFO RETURNED TO USER
  7675
  7676	007064'02  254 00 0 00 006775*	NDLI40:	RETSKP			;DONE, RETURN SUCCESS
  7677
  7678
  7679
  7680
  7681					;STONOD - ROUTINE TO STORE NODE NAME STRING IN USER SPACE
  7682					;
  7683					;ACCEPTS IN T1/	POINTER TO SOURCE STRING
  7684					;	    T3/	POINTER TO DESTINATION IN USER SPACE
  7685					;		CALL STONOD
  7686					;RETURNS: +1	 FAILED
  7687					;	  +2	SUCCESS
  7688
  7689	007065'02			STONOD:
  7690
  7691					; LOOP OVER EACH CHARACTER IN NODE NAME
  7692
  7693	007065'02  134 02 0 00 000001 	NDGN20:	ILDB T2,T1		;GET A BYTE
  7694	007066'02  322 02 0 00 007072'		JUMPE T2,NDGN25		;IF NULL, ALL DONE
  7695	007067'02  256 03 0 00 007667'		XCTBU [IDPB T2,T3]	;STORE BYTE
  7696	007070'02  320 16 0 00 006654*		 ERJMP R		;FAILED, RETURN ERROR
  7697	007071'02  254 00 0 00 007065'		JRST NDGN20		;DO THEM ALL
  7698	007072'02  256 03 0 00 007667'	NDGN25:	XCTBU [IDPB T2,T3]	;APPEND A NULL
  7699	007073'02  320 16 0 00 007070*		 ERJMP R		;FAILED, RETURN ERROR
  7700	007074'02  254 00 0 00 007064*		RETSKP			;DONE, RETURN SUCCESS
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 182
NSPSRV	MAC	 6-Apr-82 10:58		The NODE JSYS

  7701
  7702					; NDVFY - VERIFY NODE NAME IS IN MONITOR'S DATABASE OF KNOWN NODES
  7703
  7704	007075'02  265 16 0 00 005331*	NDVFY:	SAVEAC <Q1>
  7705	007076'02  265 16 0 00 007001*		STKVAR <<NDVNOD,WPN>>
  7706	007077'02  000002  000002
  7707
  7708					; GET NODE NAME FROM USER SPACE
  7709
  7710	007100'02  256 04 0 00 010615'		UMOVE Q1,T2		;GET ADDRESS OF USER ARGUMENT BLOCK
  7711	007101'02  256 04 0 00 010616'		UMOVE T1,.NDNAM(Q1)	;GET POINTER TO NODE NAME IN USER SPACE
  7712	007102'02  201 02 0 17 777775 		MOVEI T2,NDVNOD		;GET ADDRESS OF DESTINATION FOR NAME
  7713	007103'02  260 17 0 00 006434*		CALL PARNDU		;GET THE NODE NAME FROM USER SPACE
  7714	007104'02  263 17 0 00 000000 		 RETBAD ()		;FAILED
  7715
  7716					; VERIFY THAT THE NODE IS KNOWN TO THE MONITOR
  7717
  7718	007105'02  541 01 0 17 777775 		HRRI T1,NDVNOD		;GET ADDRESS OF NODE NAME
  7719	007106'02  505 01 0 00 440700 		HRLI T1,(POINT 7,)	;FORM POINTER TO NODE NAME
  7720	007107'02  260 17 0 00 007114'		CALL VFYNOD		;VERIFY NODE NAME
  7721	007110'02  634 01 0 00 000001 		 TDZA T1,T1		;FAILED, NOT A KNOWN NODE
  7722	007111'02  205 01 0 00 400000 		MOVX T1,ND%EXM		;SUCCESS, NODE IS KNOWN
  7723	007112'02  256 04 0 00 010617'		UMOVEM T1,.NDFLG(Q1)	;STORE RESULT IN USER SPACE
  7724	007113'02  254 00 0 00 007074*		RETSKP			;DONE, RETURN SUCCESS
  7725
  7726
  7727
  7728					;VFYNOD - ROUTINE TO VERIFY THAT A NODE IS KNOWN TO THE MONITOR
  7729					;
  7730					;ACCEPTS IN T1/	POINTER TO NODE NAME
  7731					;		CALL VFYNOD
  7732					;RETURNS: +1	 FAILED, NODE IS NOT KNOWN TO THE MONITOR
  7733					;	  +2	SUCCESS, NODE IS IN MONITOR'S DATABASE
  7734
  7735	007114'02  352 00 0 00 006776*	VFYNOD:	LOCK NODLOK		;LOCK THE KNOWN NODE TABLE
  7736	007115'02  265 16 0 00 006751*
  7737	007116'02  200 02 0 00 000001 		MOVE T2,T1		;COPY POINTER TO NODE NAME
  7738	007117'02  200 01 0 00 006731*		MOVE T1,NODTBL		;GET ADDRESS OF KNOWN NODE TABLE
  7739	007120'02  104 00 0 00 000537 		TBLUK			;LOOK UP THE NODE NAME
  7740						 ERJMP [UNLOCK NODLOK	;FAILED, UNLOCK THE TABLE
  7741	007121'02  320 16 0 00 010620'			RET ]		;RETURN "NOT KNOWN"
  7742	007122'02  476 00 0 00 007114*		UNLOCK NODLOK		;UNLOCK THE TABLE
  7743	007123'02  607 02 0 00 040000 		TXNN T2,TL%EXM		;EXACT MATCH ?
  7744	007124'02  263 17 0 00 000000 		RET			;NO, RETURN "NOT KNOWN"
  7745	007125'02  254 00 0 00 007113*		RETSKP			;YES, RETURN "KNOWN NODE"
  7746
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page 183
NSPSRV	MAC	 6-Apr-82 10:58		NTMAN% JSYS Functions

  7747						SUBTTL NTMAN% JSYS Functions
  7748
  7749					;Network Management's interface to the lower layers of DECnet architecture.
  7750
  7751						SWAPCD
  7752	007126'02			.NTMAN::MCENT
  7753	007126'02  254 00 0 00 010622'		ITERR (ILINS2)		;Can't do this in this release
  7754
  7755						TNXEND
  7756						END

NO ERRORS DETECTED

PROGRAM BREAK IS 000000
PSECT 1 BREAK IS 002466 FOR  RSCOD 
PSECT 2 BREAK IS 010673 FOR  NRCOD 
PSECT 3 BREAK IS 000142 FOR  BGSTR 
PSECT 4 BREAK IS 000016 FOR  BGPTR 
CPU TIME USED 03:03.149

201P CORE USED
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-1
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE

ACKBIT		010000	spd	DCNX3		602022	sin	LLDRB	040000	000000	spd	LLQUN		377000	spd	
ACKFLM		000004	spd	DCNX4		602023	sin	LLDRC		770000	spd	LLRCT	070000	000000	spd	
ACKIND		100000	spd	DCNX5		602021	sin	LLDRV	777777	777777	spd	LLRFK		777777	spd	
ACKLEN		000006	spd	DCNX8		602025	sin	LLDRW	007400	000000	spd	LLRSN		177777	spd	
ACKLSI		000020	spd	DCNX9		602024	sin	LLDSC	777777	777777	spd	LLSABT		000011	spd	
ADJBP	133000	000000	sin	DESX9		601340	sin	LLDSN	777700	000000	spd	LLSCIR		000003	spd	
APRCHN		000003	sin	DILEN		000012	spd	LLDWN	007777	777777	spd	LLSCIS		000002	spd	
ARGX02		601713	sin	DLSCHN		000006	sin	LLFDI	000010	000000	spd	LLSDE	002000	000000	spd	
ARGX04		601715	sin	DTBYTM		400000	sin	LLFDS	007777	777777	spd	LLSDIQ		000006	spd	
ARGX13		601726	sin	DTMLEN		000006	spd	LLFEM	000002	000000	spd	LLSDIR		000007	spd	
ARGX17		601742	sin	EOFF	001000	000000	sin	LLFIM	000040	000000	spd	LLSDIS		000005	spd	
ARGX19		602033	sin	ERJMP	320700	000000	int	LLFLI	040000	000000	spd	LLSEGQ		000021	spd	
B		000002	sin	ERRF	000400	000000	sin	LLFLO	020000	000000	spd	LLSLIS		000001	spd	
BLKF	000040	000000	sin	F		000000	int	LLFNA	000100	000000	spd	LLSOB		777777	spd	
BOOT	104000	000562	int	FILATL		777777	spd	LLFNM	000077	600000	spd	LLSRUN		000004	spd	
BUGMXR		000004	sin	FILINP		020000	sin	LLFNN	001000	000000	spd	LLSTA	170000	000000	spd	
CALL	260740	000000	int	FILOUP		010000	sin	LLFOB	000001	000000	spd	LLSWG	037777	600000	spd	
CALLRE	254000	000000	sin	FKNTC	400000	000000	spd	LLFRK	777777	000000	spd	LLTRC	400000	000000	spd	
CAPX1		600615	sin	FLOHLD		000003	spd	LLHLK		177777	spd	LLTRM	100000	000000	spd	
CAPX2		601231	sin	FRKRUN	200000	000000	spd	LLHNM1		000025	spd	LLTRN	000020	000000	spd	
CCLEN		000013	spd	GJFX17		600075	sin	LLHST	777777	777777	spd	LLTSK	007777	777777	spd	
CFORK	104000	000152	int	GJFX18		600076	sin	LLICT		777777	spd	LLTTY	000037	777777	spd	
CIMCNT		000010	spd	GJFX45		602060	sin	LLIDN		007777	spd	LLUCT	770000	000000	spd	
CIMMFL		000030	spd	GJFX49		602065	sin	LLIIC	777777	000000	spd	LLUPL	007777	777777	spd	
CIMSCT		000004	spd	GJFX50		602205	sin	LLIIN	777700	000000	spd	LLUSGP		000040	spd	
CISRVS		000001	spd	GOKER2		602221	sin	LLIMS	010000	000000	spd	LLUSR	777777	777777	spd	
CKPSIZ		000100	sin	HB%1OK	200000	000000	sin	LLINT	004000	000000	spd	LLVEC	777777	777777	spd	
CLSX1		600160	sin	HB%2OK	100000	000000	sin	LLISN	000077	770000	spd	LNKPRI		000001	spd	
CNMCF		000040	spd	HB%HBM	040000	000000	sin	LLLNK		777777	spd	LSLEN		000007	spd	
CNMCI		000020	spd	HB%MUN	020000	000000	sin	LLLOC	200000	000000	spd	MAXDIF		000036	spd	
CNMDC		000100	spd	HB%PUB	400000	000000	sin	LLLSA	000004	000000	spd	MAXLC		000047	sin	
CNMDI		000060	spd	HB%WLK	010000	000000	sin	LLLSC	000003	600000	spd	MAXLW		000010	sin	
CNMRFL		000010	spd	IFIW	400000	000000	sin	LLLWC	100000	000000	spd	MAXNOD		000024	spd	
CNTFLD	770000	000000	spd	ILINS2		600771	sin	LLMFC	140000	000000	spd	MAXSEG		000011	spd	
COMCST		000000	spd	INIRCV	400000	000000	spd	LLMIC	770000	000000	spd	MAXSG1		000010	spd	
COMECO		000001	spd	INISNT	010000	000000	spd	LLMQI	777000	000000	spd	MAXSGQ		000010	spd	
COMVER		000003	spd	INTLEN		000012	spd	LLMQO	000777	000000	spd	MO%ABT	010000	000000	sin	
COMX19		602135	sin	IOMODE		000017	spd	LLMSG		000005	spd	MO%CDN	777000	000000	sin	
CONLEN		000033	spd	ISEGSZ		000403	sin	LLMSI		000006	spd	MO%CON	400000	000000	sin	
CX		000016	int	JSFRST		777777	sin	LLMSM		177400	spd	MO%DAV		777000	sin	
CZ%ABT	004000	000000	sin	LKISIZ		000011	spd	LLNAM	777777	000000	spd	MO%EOM	020000	000000	sin	
DATBOM		000040	spd	LKOBJS		000006	spd	LLNDO	200000	000000	spd	MO%INA	000777	000000	sin	
DATEOM		000100	spd	LKSIZE		000033	spd	LLOCT		777777	spd	MO%INT	002000	000000	sin	
DATFLI		000020	spd	LLACT	777777	777777	spd	LLOMSG		000012	spd	MO%LWC	001000	000000	sin	
DATINT		000040	spd	LLBFI	777777	777777	spd	LLOPI	000400	000000	spd	MO%SRV	200000	000000	sin	
DATMFL		000000	spd	LLBFO	777777	777777	spd	LLOPT	007777	777777	spd	MO%SYN	004000	000000	sin	
DCCUR		777777	spd	LLBOM	400000	000000	spd	LLOPW	000200	000000	spd	MO%WCC	040000	000000	sin	
DCMAX	777777	000000	spd	LLBPCT		000017	spd	LLOUT	777777	777777	spd	MO%WFC	100000	000000	sin	
DCNX1		602020	sin	LLBPI	777777	777777	spd	LLPCT	770000	000000	spd	MONX02		601730	sin	
DCNX11		602026	sin	LLBPTR		000016	spd	LLPIC		000077	spd	MONX03		601731	sin	
DCNX12		602027	sin	LLBRP	400000	000000	spd	LLPII		007700	spd	MONX06		602433	sin	
DCNX13		602202	sin	LLBSZ	770000	000000	spd	LLPRT	300000	000000	spd	MSBPTR		000003	spd	
DCNX14		602203	sin	LLCIL	400000	000000	spd	LLPSW	007777	777777	spd	MSCNT		007777	spd	
DCNX15		602204	sin	LLDED	400000	000000	spd	LLQOU		000377	spd	MSDAT		000002	spd	
DCNX2		602122	sin	LLDMT	000370	000000	spd	LLQUE	400000	000000	spd	MSDTC	000077	770000	spd	
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-2
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE

MSFRK	104000	000312	int	NSPX20		602377	sin	SEGSIZ		000400	sin	.DCX8		000010	sin	
MSHDR		000007	spd	NSPX21		602400	sin	SF%DOK	200000	000000	sin	.DCX9		000011	sin	
MSLCL	040000	000000	spd	NSPX22		602401	sin	SFBSX2		600211	sin	.ENTER		000000	ext	
MSLLA		777774	spd	NSPX26		602460	sin	SIN	104000	000052	int	.FP		000015	spd	
MSLNK		777777	spd	NTCCHN		777777	spd	SMLSEG		000100	sin	.FPAC		000005	spd	
MSLSI		000001	spd	NTCFRK	777777	000000	spd	SPTDSW		000000	sin	.GODNA		000021	sin	
MSMFL	777700	000000	spd	NTSHUT	100000	000000	spd	STEPF	000001	000000	sin	.GSSMB		000001	sin	
MSMS1	010000	000000	spd	NUMVAL		000005	sin	STRTYP		000001	spd	.ICAOV		000006	sin	
MSNAK	020000	000000	spd	OBJONE		000001	spd	SWPERR	200000	000000	sin	.ICNXP		000026	sin	
MSPRT	300000	000000	spd	OBJTSK		000000	spd	T1		000001	int	.INFIN	377777	777777	sin	
MSPST	200000	000000	spd	OBJTWO		000002	spd	T2		000002	int	.JBHSO		000075	sin	
MSRLS	400000	000000	spd	OBJZRO		000000	spd	T3		000003	int	.MOACN		000024	sin	
MSSEG	007777	000000	spd	OPNF	400000	000000	sin	T4		000004	int	.MOANT		000043	sin	
MSTOM		000003	spd	OPNX14		600135	sin	TBADD	104000	000536	int	.MOCC		000041	sin	
MTOX1		601210	sin	OPTSIZ		000005	spd	TBDEL	104000	000535	int	.MOCIA		000776	sin	
NAMCN	000007	000000	spd	OURCAP		000000	spd	TBLUK	104000	000537	int	.MOCLZ		000040	sin	
ND%EXM	400000	000000	sin	OURNED		000006	spd	TL%EXM	040000	000000	sin	.MONCI		000777	sin	
ND%LPA	200000	000000	spd	OURREQ		000006	spd	UMODF	010000	000000	sin	.MORAC		000032	sin	
ND%LPR	400000	000000	spd	OURTTL	566360	636266	spd	UNLKF		020000	sin	.MORCN		000034	sin	
NDIFLG		000120	spd	P		000017	int	VERIF		000001	spd	.MORDA		000033	sin	
NDISIZ		000007	spd	P3		000012	int	VERTYP		000002	spd	.MORHN		000026	sin	
NODMAX		000006	spd	PGSFT		000011	sin	WPN		000002	spd	.MORIM		000035	sin	
NODX02		602207	sin	PI		000004	sin	WRTF	100000	000000	sin	.MORLS		000025	sin	
NODX03		602210	sin	PICHOF		001000	sin	WSEGSZ		000374	spd	.MOROD		000037	sin	
NOP	600000	000000	sin	PICHON		002000	sin	XCTBU	256140	000000	int	.MORPW		000031	sin	
NOSTR		777777	spd	PIOFF	700600	000400	int	XCTBUU	256340	000000	int	.MORSS		000042	sin	
NOTMCB	040000	000000	spd	PION	700600	000200	int	XCTU	256200	000000	int	.MORTN		000027	sin	
NOUT	104000	000224	int	PRFXL	777777	000000	spd	XMOVEI	415000	000000	int	.MORUS		000030	sin	
NRCOD		000000	ext	PRFXV		777000	spd	$NSPSR		000000	sen	.MOSIM		000036	sin	
NS%MSG	200000	000000	sin	PSASN		000010	sin	.A16		000016	spd	.MOSNH		000044	sin	
NS%TRN	400000	000000	sin	PSDEL		000001	sin	.ASSET		000000	ext	.NDBK1		000002	spd	
NSPEXT		000200	spd	PSRDN		000002	sin	.BTSTS		000006	sin	.NDCHN		000000	sin	
NSPNUL		000020	sin	PSRIP		000006	sin	.BTTPR		000005	sin	.NDCNT		000001	sin	
NSPOVR		000030	sin	PSRPQ		000000	sin	.DCX0		000000	sin	.NDCST		000002	sin	
NSPX00		602353	sin	PSWIP		000004	sin	.DCX1		000001	sin	.NDCVR		000001	sin	
NSPX01		602354	sin	Q1		000005	int	.DCX2		000002	sin	.NDECO		000001	sin	
NSPX02		602355	sin	Q2		000006	int	.DCX21		000025	sin	.NDFLG		000001	sin	
NSPX03		602356	sin	Q3		000007	int	.DCX24		000030	sin	.NDLCB		000004	sin	
NSPX04		602357	sin	R		000000	ext	.DCX3		000003	sin	.NDLCN		000003	sin	
NSPX05		602360	sin	READF	200000	000000	sin	.DCX32		000040	sin	.NDLND		000002	sin	
NSPX06		602361	sin	REQVER	020000	000000	spd	.DCX33		000041	sin	.NDLNM		000000	sin	
NSPX07		602362	sin	RET	263740	000000	int	.DCX34		000042	sin	.NDLOF		000002	sin	
NSPX08		602363	sin	RNDF	020000	000000	sin	.DCX35		000043	sin	.NDLON		000001	sin	
NSPX09		602364	sin	ROUCST		000000	spd	.DCX36		000044	sin	.NDLST		000001	sin	
NSPX10		602365	sin	ROUECO		000000	spd	.DCX37		000045	sin	.NDLSZ		000003	sin	
NSPX11		602366	sin	ROUVER		000003	spd	.DCX38		000046	sin	.NDNAM		000000	sin	
NSPX12		602367	sin	RS%SE0	400000	000000	sin	.DCX39		000047	sin	.NDNBS		000003	sin	
NSPX13		602370	sin	RSCOD		000000	ext	.DCX4		000004	sin	.NDNLN		000000	sin	
NSPX14		602371	sin	RSKP		000000	ext	.DCX40		000050	sin	.NDNND		000000	sin	
NSPX15		602372	sin	RTFLG		000106	spd	.DCX41		000051	sin	.NDNOD		000000	sin	
NSPX16		602373	sin	RTHLEN		000004	spd	.DCX42		000052	sin	.NDNVR		000000	sin	
NSPX17		602374	sin	SC%MNT		040000	sin	.DCX43		000053	sin	.NDNXT		000002	sin	
NSPX18		602375	sin	SC%OPR		200000	sin	.DCX5		000005	sin	.NDPRT		000000	sin	
NSPX19		602376	sin	SC%WHL		400000	sin	.DCX6		000006	sin	.NDRVR		000002	sin	
NSPX2		000002	sin	SEGMSK		007777	spd	.DCX7		000007	sin	.NDSOF		000001	sin	
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-3
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE

.NDSON		000000	sin	
.NDSTA		000001	sin	
.NDVER		000000	sin	
.NPAC		000010	spd	
.NSBFR		000002	sin	
.NSCND		000001	sin	
.NSDAT		000003	sin	
.NSDIS		000007	sin	
.NSINT		000005	sin	
.NSOBE		000006	sin	
.NSOMO		000001	sin	
.NSOOK		000004	sin	
.SAC		000016	sin	
.SAV1		000000	ext	
.SAV2		000000	ext	
.SAV3		000000	ext	
.SHESC		000002	sin	
.SHTTY		000001	sin	
.STKST		000000	ext	
.TRSET		000000	ext	
.VNCBL		000005	sin	
.VNCNL		000004	sin	
.VNDDC		000002	sin	
.VNMCB		000001	sin	
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-4
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE FOR PSECT   RSCOD 

ACKCHN		001172'		CTLLCL		001032'		INTOUT		001752'		NDVER1		001622'		
ACKDO		000534'		DATINR		001157'		ITRAP1		000000	ext	NETMOV		000000	ext	
ACKDON		001243'		DCN		000000	ext	ITSID		000000	ext	NETWKF		000000	ext	
ACKLI		001451'		DCNCNT		000000	ext	ITSNAM		000000	ext	NMAPLK		000000	ext	
ACKLOP		001214'		DCNMSO		001026'	ext	ITSNUM		000000	ext	NODINI		001504'	int	
ACKLP1		001210'		DECOBJ		000000	ext	JFN		000011		NODLOK		000000	ext	
ACKNXT		001240'		DEV		000013		JFN0		000000	ext	NODNUM		000004'	ext	
ACKRMT		001454'		DOATSQ		000000	ext	JOBBIT		000000	ext	NODTBL		000000	ext	
ASCII1		000205'		DONAC1		001265'		JOBNO		000000	ext	NODVER		001600'		
ASCIIC		000167'		DONAC2		001262'		JSBFRE		000000	ext	NOSK11		001712'	ext	
ASCIID		000203'		DONACK		001256'		KDPFLG		000655'	ext	NRCOD		000000	ext	
ASCIIL		000177'		DONNXT		001320'		KDPTSK		000000	ext	NSBP01		002216'		
ASCIIZ		000166'		DONRES		001316'		LASTSK		000000	ext	NSBP02		002217'		
ASGJFR		000000	ext	DONRQ		001324'		LCKTST		000012'	ext	NSBP03		002224'		
ASGPAG		000000	ext	EDMS0		000000	ext	LLBIT		000000	ext	NSBP04		000273'		
ASGRES		001735'	ext	EDMSH		000000	ext	LLBITS		000000	ext	NSBP05		002226'		
ASGSWP		000000	ext	F1		000014		LLFAIL		000122'		NSBP06		000300'		
ASMCB		000000	ext	FFL		000000	ext	LLHEAD		000077'	ext	NSBP07		000301'		
BADSEG		000544'		FILBCT		000000	ext	LLLCKT		000065'		NSBP08		000645'		
BGCCHK		002417'	ext	FILBFI		000000	ext	LLLKBD		002151'	int	NSBP09		001445'		
BGCINF		000000	ext	FILBFO		000000	ext	LLLKU1		000100'		NSBP10		000267'		
BGPTR		000000	ext	FILBYN		000000	ext	LLLKU2		000110'		NSPCH0		002133'		
BGSTR		000000	ext	FILBYT		000000	ext	LLLKUH		000071'		NSPCH7		002131'	int	
BITS		000000	ext	FILCNT		000000	ext	LLLKUP		000070'	int	NSPLPB		002434'	ext	
BLKASG		000000	ext	FILDNM		000000	ext	LLLLCK		000065'	ext	NSPMAX		000000	ext	
BLKLK0		000040'		FILLEN		000000	ext	LOKLL		000007'	int	NSPMCB		000663'	ext	
BLKLK1		000047'		FILLLB		000000	ext	LPBSEG		001054'		NSPMS1		002073'		
BLKLLK		000022'	int	FILNEN		000000	ext	LSTERR		000000	ext	NSPMS2		002103'		
BLKLOK		000031'	int	FILWND		000000	ext	MAKEXT		000771'		NSPMSE		002127'		
BLKUK1		000062'		FKJOB		000000	ext	MAKFLG		000236'	int	NSPMSG		002042'	int	
BLKULK		000053'	int	FKQ2		000000	ext	MAKMSG		000215'	int	NSPQ		001041'	int	
BLOCK1		000000	ext	FLUSH		001404'	int	MAKTST		000303'	int	NSPRSN		002417'	int	
BLOCKM		000314'	ext	FORKX		000042'	ext	MAXBLK		000000	ext	NSPSPC		001730'	int	
BLTUM1		000000	ext	FPC		000000	ext	MAXDSC		000020	spd	NSPTST		000653'		
BUGHLT		000000	ext	GENWAT		000307'		MAXEXP		000000	ext	NTATB	400000	000000	spd	
CAPENB		000000	ext	GETEX1		000757'		MAXHST		000006	sin	NTATC	000077	000000	spd	
CHKBRP		000423'		GETEXT		000756'		MAXLNK		001540'	ext	NTATE		777000	spd	
CHKCON		000316'		GETLLA		000677'		MAXQ		000000	ext	NTATR		000777	spd	
CHKDCR		000406'	int	GETOKM		000000	ext	MCBDTE		001576'	ext	NTCMAX		000000	ext	
CHKEMP		000415'	int	GETRES		000124'	int	MENT0		000000	ext	NTCTAB		000000	ext	
CHKLLT		001720'	ext	GETTWO		000706'		MKFL10		000242'		OBJMAX		000000	ext	
CHKLOK		000326'		GOTSEG		000602'		MKFL20		000253'		OBJTBL		000000	ext	
CHKPS1		001442'		GTASC0		000721'		MKFL30		000256'		OKSK11		001721'	ext	
CHKPST		001432'		GTASC1		000733'		MLJFN		000000	ext	ONEBYT		000207'		
CHKQTA		000335'		GTASCD		000740'		MOVACK		000515'		ONMSGQ		001037'		
CHKRAW		000361'		GTASCI		000720'		MOVNAK		000502'		ONMSQ		001070'		
CHKSCP		000352'		GTBNRY		000717'		MOVSE1		000437'		ONRAW1		001151'		
CHKSCT		000344'		GTOKPR		000000	ext	MOVSE2		000476'		ONRAW2		001150'		
CHKSET		000370'		GUDOBJ		000000	ext	MOVSEG		000430'	int	ONRAW3		001155'		
CHKSWD		000400'		INIWAT		000000	ext	MOVSEL		000465'		ONRAWQ		001132'		
CHKTTM		000000	ext	INO020		001761'		MRETN		000000	ext	ONSEGQ		001065'		
CKATSQ		000653'	ext	INO025		001772'		MRETNE		000000	ext	ONSGQ0		001066'		
CMPSTR		000115'	ext	INSKED		000125'	ext	MSGQ		001037'	ext	OURCNT		000003'	ext	
CPYFU2		000000	ext	INTDF		000045'	ext	NAKCNT		001275'	ext	OURNAM		001526'	ext	
CPYTU1		000000	ext	INTDFF		000063'	ext	NAMINI		000000'	int	OURNUM		001524'	ext	
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-5
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE FOR PSECT   RSCOD 

OUTCHK		000670'		SNDSE0		001074'		$LLMQI		000023	spd	$W2		000006	spd	
OUTIVL		001747'	ext	SNDSE1		001063'		$LLMQO		000023	spd	$W3		000007	spd	
OUTLOK		000000	ext	SNDSE2		001055'		$LLMSM		000007	spd	..0030		001362'	spd	
OUTQUE		000000	ext	SNDSEG		001044'	int	$LLNDO		000037	spd	..JX1	004000	000000	spd	
OUTTIM		001750'	ext	SNDSG0		001010'		$LLOCT		000037	spd	..MSK		000000	spd	
PARNDU		000000	ext	SQIACK		000636'	int	$LLPRT		000010	spd	..NAC		000001	spd	
PARNO1		000000	ext	SQILS		000620'	int	$LLQOU		000023	spd	..NRGS		000000	spd	
PBYTSZ		000000	ext	STS		000010		$LLQUN		000023	spd	.ASSET		002011'	ext	
PRUNE		001416'		TELOBE		002011'	int	$LLRCT		000001	spd	.PFACN		000000	ext	
PRUNE1		001421'		TELOOK		002000'		$LLRFK		000022	spd	.PFBOP		000000	ext	
PRUNE2		001427'		TIMWAT		000310'	int	$LLSTA		000002	spd	.PFBPW		000000	ext	
PRUNE3		001430'		TODCLK		001746'	ext	$LLVEC		000034	spd	.PFOPT		000000	ext	
PSIRQ		001163'	ext	TSKMAX		000020	spd	$LNKAD	000017	777773	spd	.PFPWD		000000	ext	
PUTLL1		000146'		TTGETS		002021'	int	$LNKID	000017	777775	spd	.PFUDT		000000	ext	
PUTLLA		000134'		TTREMS		002035'	int	$MBLOC	000017	777776	spd	.RESNP		000000	ext	
PUTLLR		000133'		TTSETH		000000	ext	$MSCNT		000002	spd	.RESP1		001733'	ext	
PUTOND		001336'		TWOBYT		000212'		$MSDTC		000002	spd	.RESP2		000126'	ext	
PUTONQ		001331'		ULLCZQ		000665'	ext	$MSGBL	000015	000005	spd	.RESP3		000124'	ext	
R		002002'	ext	ULOKLL		000014'	int	$MSGBY	000015	000002	spd	.SAV1		002131'	ext	
RELFRE		000000	ext	UNQSEG		001250'		$MSGCN	000015	000001	spd	.SAV11		001702'	ext	
RELJFN		000000	ext	VERBDY		000615'		$MSGDS	000015	000004	spd	.SAV12		001157'	ext	
RELMES		000000	ext	VERSEG		000562'		$MSGFL	000017	777776	spd	.SAV2		000721'	ext	
RELPAG		000000	ext	$ACKCH	000017	777774	spd	$MSGSG	000015	000004	spd	.SAV22		000147'	ext	
RELRES		002353'	ext	$ACKNO	000015	000002	spd	$MSGSR	000015	000003	spd	.SAV3		001176'	ext	
RELSWP		000000	ext	$ACKTY	000015	000003	spd	$MSLCL		000001	spd	.SAV44		000071'	ext	
RESEND		001340'		$ASCCN	000017	777776	spd	$MSLLA		000001	spd	.STKST		001454'	ext	
RFTADN		000000	ext	$INOLL	000015	000001	spd	$MSLNK		000000	spd	.TRSET		002042'	ext	
RSCOD		000000	ext	$LASTM	000017	777776	spd	$MSMFL		000002	spd	
RSEND0		001354'		$LLBFO		000035	spd	$MSMS1		000001	spd	
RSEND1		001355'		$LLBLK	000015	000001	spd	$MSNAK		000001	spd	
RSEND2		001376'		$LLBOM		000010	spd	$MSPRT		000001	spd	
RSEND3		001400'		$LLBRP		000007	spd	$MSPST		000000	spd	
RSKP		002446'	ext	$LLCIL		000001	spd	$MSRLS		000000	spd	
RTHDC1		000164'		$LLDMT		000020	spd	$MSSEG		000001	spd	
RTHDCI		000147'		$LLDRC		000003	spd	$MSTOM		000001	spd	
SAVPQ		000000	ext	$LLDRV		000033	spd	$MVNLL	000017	777776	spd	
SAVT		001745'	ext	$LLDRW		000020	spd	$NAKFL	000015	000006	spd	
SECALL		000000	ext	$LLDSN		000011	spd	$NODMS	000015	000034	spd	
SEGPST		001165'		$LLDUM	000015	000001	spd	$NODPR	000015	000035	spd	
SEGSZ		001536'	ext	$LLFEM		000002	spd	$OBELL	000015	000001	spd	
SFTADN		000000	ext	$LLFNA		000002	spd	$PRTCN	000015	000002	spd	
SK2RET		000000	ext	$LLFNN		000002	spd	$PRTNO	000015	000001	spd	
SKDOUT		001745'	int	$LLFRK		000003	spd	$SAVFF	000017	777775	spd	
SKPFLD		000744'		$LLHLK		000004	spd	$SAVLL	000015	000001	spd	
SMSGQ		002142'	ext	$LLHO	000017	777774	spd	$SAVMS	000015	000002	spd	
SNDACK		001444'		$LLIDN		000011	spd	$SAVPS	000017	777776	spd	
SNDBA1		001126'		$LLIIN		000004	spd	$SNDLB	000015	000001	spd	
SNDBAD		001127'		$LLINT		000002	spd	$SNDLC	000015	000002	spd	
SNDCHK		000260'	int	$LLISN		000011	spd	$SNDLM	000015	000004	spd	
SNDCTL		001001'		$LLLNK		000002	spd	$SNDLT	000015	000003	spd	
SNDLCL		001076'		$LLLOC		000002	spd	$SNLBL	000015	000001	spd	
SNDLS		001632'	int	$LLLSA		000020	spd	$SNMSG	000015	000002	spd	
SNDLS1		001720'		$LLLSC		000020	spd	$SQALL	000017	777776	spd	
SNDLSL		001702'		$LLMFC		000007	spd	$SQLLL	000017	777776	spd	
SNDMSG		001012'		$LLMIC		000015	spd	$W1		000005	spd	
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-6
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE FOR PSECT   NRCOD 

ABTMSG		006266'		CHKCHL		002646'		DCDCS		005623'		ERRLEN		000027	spd	
ACKCIS		005527'		CHKFRE		004240'		DCMSG		005706'		ERRTAB		004401'		
ACKINV		005542'		CHKFRN		005655'		DCMSG1		005713'		EXTSET		000101'	int	
ACKMS1		005514'		CHKIDL		005725'		DCMSG4		005712'		FFL		004431'	ext	
ACKMSG		005503'		CHKILL		002661'		DCN		007010'	ext	FILBCT		010023'	ext	
ACKRUN		005545'		CHKLLT		006101'	ext	DCNCNT		007454'	ext	FILBFI		010112'	ext	
ACKSTA		004347'		CHKPIP		001120'		DCNDTB		000033'	int	FILBFO		010036'	ext	
ADDINT		000765'		CHKTTM		007300'	ext	DCNNAM		000226'	int	FILBYN		010055'	ext	
ADDIT		000711'		CHNOK1		006576'		DCNOBJ		000247'		FILBYT		010054'	ext	
ADDIT1		000716'		CHNOK2		006603'		DCNOP0		002272'		FILCNT		010061'	ext	
ADDLNK		001735'		CICOR		005245'		DCNOP2		002274'		FILDNM		002427'	ext	
ADDND1		000702'		CICOR1		005254'		DCNOP3		002313'		FILLEN		010007'	ext	
ADDNOD		000655'		CIDC		005437'		DCNOP7		002314'		FILLI1		005274'		
ADDONF		007505'	int	CIDCLC		005451'		DCNOP8		002316'		FILLI2		005267'		
ADDTEL		000725'		CIDCT		005442'		DCNOPN		000332'	int	FILLIN		005260'		
ADIN10		001014'		CIDON		005242'		DCNSET		000075'	int	FILLLB		010074'	ext	
ASGJFR		004501'	ext	CIMSG		005054'		DCREC		004325'		FILNEN		002014'	ext	
ASGPAG		000131'	ext	CIPSRV		006317'		DCRUN		005735'		FILWND		010020'	ext	
ASGRES		001406'	ext	CLENUP		000370'		DECOBJ		000206'	ext	FKJOB		002044'	ext	
ASGSWP		006660'	ext	CLRBLK		001652'		DEDCOR		005022'		FKQ2		010561'	ext	
ASGWDW		000115'	int	CLRFLO		001347'	int	DEDMC1		005011'		FNDATR		002427'		
ASGWRT		000127'		CLZABT		003326'		DEDMC2		005052'		FORKX		010557'	ext	
ASMCB		000451'	ext	CLZCMS		003305'		DEDMCB		004753'	int	FPC		004432'	ext	
ATTRTB		002003'		CLZDI		003265'		DELBLK		001612'		FRELNK		001272'		
BADMSG		005242'		CLZDIN		007771'	int	DELDNE		001565'		GETATR		002431'		
BADSTR		004741'		CLZDIQ		003314'		DELDWN		001560'		GETBLK		001300'		
BADUDT		005455'		CLZDIR		003326'		DELINS		001546'		GETBSZ		001355'	int	
BGCCHK		010174'	ext	CLZDN1		003341'		DELNO1		001550'		GETMXS		001364'	int	
BGCINF		010171'	ext	CLZDON		003334'		DELNOD		001531'	int	GETOKM		007236'	ext	
BGPTR		000000	ext	CLZDQ1		003371'		DELREL		001614'		GETSTA		001357'	int	
BGSTR		000000	ext	CLZEMP		003313'		DIABT		005610'		GETTS1		001240'		
BININ		002401'		CLZRUN		003264'		DIMSG		005560'		GETTSK		001231'		
BININ1		002406'		CLZSDI		003353'	int	DIMSG1		005565'		GOTMCB		004770'		
BININ2		002410'		CLZSTA		004336'		DIMSG2		005617'		GTOKPR		000000	ext	
BININ3		002415'		CLZWDC		003322'		DIMSG3		005622'		GTSBLK		002111'		
BININ4		002422'		CMPLEN		000146'	int	DIREC		004314'		GUDOBJ		007371'	ext	
BINXT		002424'		CMPRLP		002326'		DOACT		002225'		HOSTNL		005172'		
BITS		004770'	ext	CMPSTR		005255'	ext	DOATSQ		004450'	ext	ILLSTR		010171'	int	
BLKASG		001316'	ext	CNFCOM		003707'		DOMSG		004571'		ININOD		000636'		
BLOCK1		007115'	ext	CNTLOP		001765'		DOMSG1		004537'		INIWAT		000000	ext	
BLOCKM		004242'	ext	COMPAR		002322'		DOMSGQ		004521'		INMENU		002242'		
BLTUM1		006546'	ext	COMPUT		000135'		DOOPT		002237'		INS010		006114'		
BUGHLT		007505'	ext	CONIN1		005315'		DOPSWD		002224'		INS020		006151'		
BYTGUD		000304'		CONINT		005300'		DOSPW1		002217'		INS030		006162'		
CAPENB		007430'	ext	CONREJ		005606'		DOSRV1		002360'		INSATR		002177'		
CCDON		005435'		CPYFU2		006700'	ext	DOSRVS		002335'		INSER1		006717'		
CCGUD		005402'		CPYTU1		006446'	ext	DSCDON		002160'		INSERR		006714'		
CCGUD1		005411'		CRTLNK		002115'	int	DSCMOV		005204'		INSND1		006703'		
CCGUD2		005427'		CTLMSG		004602'		DSCMV1		005240'		INSNOD		006646'		
CCJEC1		005433'		DATDON		005773'		DSCNO		005105'		INTDF		006747'	ext	
CCJECT		005432'		DATMS1		005752'		DSCNO1		005131'		INTDFF		010215'	ext	
CCMSG		005357'		DATMSG		005744'		DSCNO2		005141'		INTINT		002662'		
CCMSG1		005364'		DATRUN		005765'		DSCNUL		002134'		INTLS		006004'		
CCREC		004303'		DATSTA		004360'		EDMS0		010410'	ext	INTLS1		006022'		
CHANOK		006574'		DCABT		005730'		EDMSH		004456'	ext	INTRUN		006000'		
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-7
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE FOR PSECT   NRCOD 

INTSET		006107'	int	MSGQ		004527'	ext	NETCL1		003255'		NTCP11		002607'		
INTT10		005335'		MSGTYP		004576'		NETCLZ		003252'	int	NTCPY		002455'		
INTT20		005354'		MSTSN1		003051'		NETDIR		000105'	int	NTCPY1		002475'		
INTTST		005331'		MSTSN2		003053'		NETDSH		000160'		NTCPY2		002501'		
INVHDR		004613'		MTASGN		000506'		NETEXT		000263'		NTCPYB		002574'		
INVPRC		005066'		MTDON		002544'		NETIN2		003452'		NTCTAB		006615'	ext	
ITRAP1		010623'	ext	MTGSS		003201'	int	NETINP		003426'	int	NTMCZ0		003155'		
ITSID		004700'	ext	MTOBJ		002556'		NETMOV		004167'	ext	NTMERR		000523'		
ITSNAM		007055'	ext	MTOBJ1		002567'		NETOUP		003473'	int	NTMTCT		000021	spd	
ITSNUM		004634'	ext	MTRDCK		002561'		NETSCM		003462'		NTMTCZ		003133'	int	
JFN0		000000	ext	MTRDI1		002752'		NETSET		003773'		NTMTGD		002611'		
JOBBIT		004440'	ext	MTRDI2		002754'		NETSQ1		000571'	int	NTMTO1		000420'		
JOBNO		002046'	ext	MTRDIN		002701'	int	NETSQI		003731'	int	NTMTOP		000410'		
JSBFRE		004514'	ext	MTRNCK		002564'	int	NETSQO		000563'		NTMTTB		000427'		
KDPFLG		004443'	ext	MTSETC		002616'	int	NETSQR		000576'		NTMVO1		003245'		
KDPTSK		004444'	ext	MTSETD		002635'	int	NETSR1		000603'	int	NTMVOP		003223'	int	
LASTSK		001241'	ext	MTSETI		002626'	int	NETUIN		000547'	int	NTRAC		002552'	int	
LLBIT		000000	ext	MTSNIN		002765'	int	NETUOU		000533'	int	NTRCB1		003073'		
LLBITS		000000	ext	MVBNR1		002375'		NETWKF		010430'	ext	NTRCB2		003100'		
LLHEAD		007507'	ext	MVBNRY		002372'		NMAPLK		000614'	ext	NTRCB3		003114'		
LLINI1		001076'		MVM010		004113'		NODATA		005237'		NTRCN		002534'	int	
LLINIT		001073'		MVMX		004207'		NODDEL		001023'		NTRCOB		003064'	int	
LLLLCK		000611'	ext	MVMY		004210'		NODDL1		001033'		NTRDA		002613'	int	
LNSPSR		007127'		NABROK		001064'		NODDL2		001045'		NTRFCI		003206'		
LOKPIP		001102'	int	NDBDEL		007340'	int	NODDL3		001053'		NTRHN		002460'	int	
LSIDN1		006100'		NDCIC		006615'		NODESC		002050'		NTRJCT		003124'		
LSIDON		006101'		NDCIC1		006616'		NODLOK		010620'	ext	NTRPW		002570'	int	
LSINT1		006025'		NDCLP		006503'		NODTAB		006406'		NTRTN		002454'	int	
LSMSG		006044'		NDFLP		006522'		NODTBL		007336'	ext	NTRUS		002546'	int	
LSMSG1		006057'		NDGLI		007001'		NOOOBJ		002025'		NTSNH		000473'		
LSTERR		010611'	ext	NDGLN		006442'		NOSK11		010122'	ext	NTSTS		000527'		
MAKINP		002446'	int	NDGN10		006752'		NOUSER		005227'		OBJENT		000005	spd	
MAKLN1		001713'		NDGN20		007065'		NSPBPN		010174'	int	OBJINI		001142'		
MAKLNK		001710'		NDGN25		007072'		NSPER1		004372'		OBJLO1		001163'		
MAKPTR		002437'		NDGN30		006773'		NSPER2		004377'		OBJLO2		001164'		
MAXBLK		001302'	ext	NDGN40		006775'		NSPERR		004371'	int	OBJLOK		001153'	int	
MAXEXP		001724'	ext	NDGNM		006457'		NSPFRK		007314'	int	OBJMAX		001173'	ext	
MAXLNK		001272'	ext	NDGNT		006722'		NSPINI		000611'	int	OBJPRO		001145'		
MAXNTA		000006	spd	NDGNX		006776'		NSPLNQ		007473'	int	OBJSFD		001223'		
MAXQ		004437'	ext	NDGVR		006624'		NSPLPB		010323'	ext	OBJSN1		001216'		
MCBCQ		004460'		NDINIT		007317'	int	NSPMAX		010272'	ext	OBJSN2		001210'		
MCBCQ1		004511'		NDLI10		007022'		NSPMCB		004771'	ext	OBJSND		001203'		
MCBCQ2		004467'		NDLI11		007047'		NSPPHV		007351'	int	OBJSNO		001214'		
MCBDE1		004765'		NDLI40		007064'		NSPPWA		007342'	int	OBJSRC		001176'	int	
MCBDED		004763'		NDSIC		006561'		NSPRTH		010147'	int	OBJTBL		007356'	ext	
MCBDTE		010161'	ext	NDSLN		006424'		NSPSTR		010167'	int	OKRET		000071'		
MENT0		004433'	ext	NDSLP		006463'		NSPTSK		004441'		OKSK11		010126'	ext	
MLJFN		000000	ext	NDSN10		006552'		NTACPT		003164'	int	OPENX1		001502'		
MOVMSG		004102'		NDSNM		006450'		NTACPY		002467'		OPNDFT		001510'		
MOVST0		001264'		NDSNT		006526'		NTANT		000450'		OPNDNC		000270'	int	
MOVST1		001321'	int	NDTLEN		000016	spd	NTCIN1		000727'		OPNDWK		001366'	int	
MOVST2		001325'		NDVFY		007075'		NTCIN2		000734'		OPNEXT		001472'		
MOVSTR		001260'	int	NETAT1		001776'		NTCMAX		000000	ext	OPNFAI		001454'		
MRETN		006405'	ext	NETAT2		001755'		NTCOFF		006615'	int	OPNIWK		001372'	int	
MRETNE		007244'	ext	NETATR		001753'	int	NTCP1		002605'		OPNSRC		000271'	int	
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-8
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE FOR PSECT   NRCOD 

OPNSWK		001370'	int	RMQ020		001637'		SQODIR		003647'		$CNTST	000017	777775	spd	
OPNUNQ		002071'		RMQ030		001646'		SQODIS		003644'		$CPLCN	000017	777776	spd	
OPNWRK		001374'		RSKP		010562'	ext	SQOEOF		003652'		$CRLAT	000017	777776	spd	
OURCNT		007574'	ext	SAVLLB		000313'		SQOLIS		003635'		$CRLCI	000017	777775	spd	
OURNAM		007566'	ext	SAVPQ		006340'	ext	SQOOTR		004261'	int	$CRLCN	000017	777774	spd	
OURNUM		006460'	ext	SAVT		006107'	ext	SQOSTA		004250'	int	$CRLDS	000017	777767	spd	
OUTCK0		006346'		SECALL		004434'	ext	SRCFAL		002103'		$CRLHS	000017	777771	spd	
OUTCK1		006371'		SEGERR		004236'		SRCNAM		000171'	int	$CRLOB	000017	777773	spd	
OUTIVL		000616'	ext	SEGSZ		002353'	ext	SRCNOB		000212'		$DCCUR		000000*	spd	
OUTLOK		010500'	ext	SETCNT		006300'		SRCOPN		002011'	int	$DCMAX		000000*	spd	
OUTQUE		010512'	ext	SETEOM		001361'	int	SRNSET		000066'	int	$DEDDU	000015	000003	spd	
OUTR00		003542'		SETFLO		001352'	int	SRVDTB		000000'	int	$DEDPR	000015	000002	spd	
OUTR0E		003535'		SETIBF		006243'		STMXDF		000322'	int	$DELHL	000017	777776	spd	
OUTRR		003505'	int	SETOPI		001331'	int	STONOD		007065'		$DIFLG	000015	000004	spd	
OUTRR1		003543'		SETOPW		001334'	int	STRMS1		004672'		$DISRS	000015	000002	spd	
OUTRR2		003547'		SFTADN		000000	ext	STRMS6		004723'		$DIUDA	000015	000003	spd	
OUTRR3		003545'		SHTLK1		005641'		STRMS7		004727'		$EOFF		000010	spd	
OUTRR5		003601'		SHUT10		005653'		STRMSG		004620'		$ERRF		000010	spd	
OUTRR7		003607'		SHUTLK		005642'		STRSAV		002245'	int	$FILAT		000000*	spd	
OUTSND		006340'		SK2RET		000110'	ext	TELDAT		006171'		$FILIN		000010	spd	
OUTTIM		006341'	ext	SKPFLI		001343'	int	TELDIS		005661'		$FILOU		000010	spd	
OUTWAT		003546'		SKPFLO		001337'	int	TELINT		002672'		$FKNTC		000000*	spd	
OUTWR0		003620'		SNDCC		003654'		TLDT10		006204'		$GNTCN	000017	777776	spd	
OUTWR1		003626'		SNDDC		005464'		TODCLK		001723'	ext	$INAAT	000017	777775	spd	
OUTWR2		003627'		SNDDI		003374'		TRNM10		006227'		$INACN	000017	777773	spd	
OUTWRD		003617'		SNDDI1		003424'		TRNMSG		006224'		$INALL	000017	777776	spd	
PARNDU		007103'	ext	SNINT		002777'	int	TSKCHK		001516'		$INAPN	000017	777774	spd	
PARNO1		000245'	ext	SQI1		003736'		TSKINI		004430'		$INDAD	000015	000003	spd	
PBYTSZ		000306'	ext	SQI11		003747'		TSKLOK		001253'		$INDBL	000015	000001	spd	
PROOFF		004744'		SQI2		004023'		TTSETH		000503'	ext	$INDER	000015	000004	spd	
PRSNAM		000230'	int	SQI22		004013'		TURNON		006306'		$INDST	000015	000002	spd	
PSIRQ		005314'	ext	SQI23		004012'		ULKPIP		001130'	int	$INSCN	000017	777775	spd	
R		010451'	ext	SQI3		004151'		ULKRET		002714'		$INSFL	000017	777774	spd	
RDINB		002763'		SQI4		004156'		ULLCZQ		010125'	ext	$INSLL	000017	777776	spd	
RDINT		002721'	int	SQICNF		003767'		VERSET		000111'	int	$IOMOD		000010	spd	
RDINT1		002727'		SQIDIR		003760'		VFYNOD		007114'		$LITCN	000017	777776	spd	
RDINX		002762'		SQIEM1		004047'		WATBLK		003756'		$LKPCO	000015	000001	spd	
RDSTS		002504'	int	SQIEMP		004045'		$ADHLD	000015	000004	spd	$LKPLL	000015	000002	spd	
RELBLK		001313'		SQIMOV		004164'		$ADIBL	000015	000004	spd	$LLACT		000036	spd	
RELFRE		004516'	ext	SQIMV1		004172'		$ADINB	000015	000003	spd	$LLADD	000015	000001	spd	
RELJFN		000471'	ext	SQINOB		004076'		$ADIPT	000015	000001	spd	$LLBFI		000041	spd	
RELLNK		005742'		SQISN2		004064'		$ADIST	000015	000002	spd	$LLBPI		000042	spd	
RELMES		006716'	ext	SQISN3		004073'		$ADNAB	000015	000003	spd	$LLBSZ		000020	spd	
RELPAG		007163'	ext	SQISN4		004070'		$ADNAD	000015	000001	spd	$LLDED		000000	spd	
RELRES		005243'	ext	SQISNA		004061'		$ADNST	000015	000002	spd	$LLDRB		000037	spd	
RELSWP		001320'	ext	SQISTA		004272'		$BLKF		000010	spd	$LLDSC		000034	spd	
REMNDX		000762'		SQIWR1		004216'		$CDIBU	000015	000004	spd	$LLDWN		000001	spd	
REMNOD		000740'		SQIWR2		004223'		$CDICN	000015	000003	spd	$LLFDI		000002	spd	
REMQUE		001622'		SQIWR3		004234'		$CDIFL	000015	000002	spd	$LLFDS		000015	spd	
RFTADN		000000	ext	SQIWRD		004213'		$CDILL	000015	000001	spd	$LLFIM		000002	spd	
RJECT		005625'		SQOABT		003643'		$CDIOP	000017	777773	spd	$LLFLI		000010	spd	
RJECT1		005632'		SQOBAD		003677'		$CLNER	000017	777776	spd	$LLFLO		000010	spd	
RLBLK		001503'		SQOCN1		003720'		$CLRLL	000015	000001	spd	$LLFNM		000004	spd	
RLBLK1		001504'		SQOCN2		003703'		$CNFLN	000017	777776	spd	$LLFOB		000002	spd	
RMQ010		001630'		SQOCNF		003637'		$CNTLL	000017	777776	spd	$LLHST		000014	spd	
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-9
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE FOR PSECT   NRCOD 

$LLICT		000043	spd	$NTATC		000000	spd	..CSC		000004	spd	
$LLIIC		000043	spd	$NTATE		000000	spd	..CSN		000003	spd	
$LLIMS		000010	spd	$NTATR		000000	spd	..GOKN		000001	spd	
$LLLWC		000001	spd	$NTCCH		000000	spd	..IFT		000000	spd	
$LLMSG	000017	777776	spd	$NTCFR		000000	spd	..MX1	400000	000000	spd	
$LLNAM		000033	spd	$NTCIB	000015	000010	spd	..MX2		000001	spd	
$LLOPI		000002	spd	$NTCNT	000015	000001	spd	..NS		000001	spd	
$LLOPT		000010	spd	$NTDDS	000015	000004	spd	..NV		000005	spd	
$LLOPW		000002	spd	$NTDSC	000015	000004	spd	..PST		000003	spd	
$LLOUT		000040	spd	$NTDSS	000015	000005	spd	..STKN		000002	spd	
$LLPCT		000037	spd	$NTHSC	000015	000007	spd	..STKQ		000003	spd	
$LLPIC		000003	spd	$NTHST	000015	000006	spd	..STKR		000010	spd	
$LLPII		000003	spd	$NTOBJ	000015	000003	spd	..TRR		000010	spd	
$LLPSW		000037	spd	$NTPNT	000015	000002	spd	..TSA1	000000000000#	pol	
$LLQUE		000002	spd	$NTRCB	000017	777776	spd	..TX1	040000	000000	spd	
$LLRSN		000020	spd	$OBJPT	000015	000001	spd	..TX2		000001	spd	
$LLSDE		000002	spd	$OPNF		000010	spd	.AF		000001	spd	
$LLSOB		000033	spd	$OPTDA	000017	777773	spd	.AM	010000	000000	spd	
$LLSWG		000007	spd	$PRFXL		000000	spd	.ASSET		006646'	ext	
$LLTRC		000037	spd	$PRFXV		000000	spd	.N1		000000	spd	
$LLTRM		000037	spd	$RDICN	000017	777776	spd	.NAC		000003	spd	
$LLTRN		000002	spd	$RDIPT	000017	777775	spd	.NODE		006376'	int	
$LLTSK		000013	spd	$RDIRT	000017	777774	spd	.NTMAN		007126'	int	
$LLTTY		000024	spd	$READF		000010	spd	.PFACN		002225'	ext	
$LLUCT		000013	spd	$RMNNA	000015	000001	spd	.PFBOP		007560'	ext	
$LLUPL		000000	spd	$RNDF		000010	spd	.PFBPW		007552'	ext	
$LLUSR		000035	spd	$SAVAD	000015	000001	spd	.PFOPT		002232'	ext	
$MCBCL	000017	777776	spd	$SAVBL	000015	000002	spd	.PFPWD		002217'	ext	
$MDPTR	000017	777775	spd	$SAVBS	000015	000004	spd	.PFUDT		002212'	ext	
$MLODR	000017	777774	spd	$SAVER	000015	000002	spd	.RESNP		001405'	ext	
$MSGDD	000015	000010	spd	$SAVOP	000015	000003	spd	.RESP3		001404'	ext	
$MSGDM	000015	000027	spd	$SAVST	000015	000003	spd	.SAV1		007075'	ext	
$MSGHS	000015	000015	spd	$SBFLL	000015	000001	spd	.SAV2		003252'	ext	
$MSGLC	000015	000062	spd	$SIMCN	000017	777773	spd	.SAV3		003223'	ext	
$MSGLL	000015	000006	spd	$SIMLL	000017	777776	spd	.STKST		007076'	ext	
$MSGOB	000015	000007	spd	$SIMPT	000017	777774	spd	.TRSET		007151'	ext	
$MSGSD	000015	000022	spd	$SIMRT	000017	777775	spd	
$MSGSO	000015	000021	spd	$SNTBL	000017	777753	spd	
$MSGW1	000015	000017	spd	$SNTCN	000017	777752	spd	
$MSGW2	000015	000020	spd	$SQICN	000017	777776	spd	
$MSIZE	000017	777776	spd	$SSVDS	000017	777773	spd	
$MVMBF	000017	777775	spd	$SSVHS	000017	777775	spd	
$MVMCN	000017	777774	spd	$STEPF		000014	spd	
$MVMFL	000017	777772	spd	$TDSLL	000017	777776	spd	
$MVMLL	000017	777776	spd	$TDSST	000017	777775	spd	
$MVMMA	000017	777773	spd	$TLDCN	000017	777775	spd	
$MVSPT	000017	777776	spd	$TLDFL	000017	777774	spd	
$NAMCN		000000	spd	$TLDLL	000017	777776	spd	
$NDVNO	000017	777775	spd	$TMSLL	000017	777776	spd	
$NETCH	000015	000001	spd	$TSKBL	000015	000002	spd	
$NMVCN	000017	777776	spd	$UNLKF		000014	spd	
$NMVPT	000017	777775	spd	$WAITE	000015	000001	spd	
$NODNA	000017	777775	spd	$WRTF		000010	spd	
$NSPNU		000010	spd	..0016		004045'	spd	
$NTATB		000000	spd	..ACT		000000	spd	
NSPSRV - Network Services Protocol Interface to TOPS20		MACRO %53B(1215) 16:43 15-Jun-82 Page S-10
NSPSRV	MAC	 6-Apr-82 10:58		SYMBOL TABLE FOR PSECT   BGSTR 

..0001		000000'	spd	
..0002		000004'	spd	
..0003		000016'	spd	
..0004		000027'	spd	
..0005		000036'	spd	
..0006		000043'	spd	
..0007		000051'	spd	
..0010		000056'	spd	
..0011		000063'	spd	
..0020		000071'	spd	
..0021		000100'	spd	
..0022		000112'	spd	
..0023		000120'	spd	
..0032		000124'	spd	
ABTMSG	  5573	  5811	  5816	  5841	  5859	  5870	  5875	  5883	  6092#
ACKBIT	  4094	  4525	  5554	  6470	  7232
ACKCHL	  6465
ACKCHN	  4136	  4178	  5814	  6458#	  6471
ACKCIS	  4625	  5552#
ACKDO	  4118	  4130#	  5572
ACKDON	  6461	  6476	  6503	  6508#
ACKFLM	  4020	  6408	  6763	  7202	  7204
ACKIND	  4175	  4389	  5812	  6770
ACKINV	  5553	  5556	  5561	  5564#
ACKLEN	  6753
ACKLI	  5828	  5847	  5854	  6744#
ACKLOP	  6484#	  6502	  6507
ACKLP1	  6475#	  6500
ACKLSI	  4134	  5560	  6766	  7202
ACKMS1	  5534#	  5544
ACKMSG	  4883	  5525#
ACKNO	  6465	  6700
ACKNXT	  6486	  6493	  6505#
ACKRMT	  6704	  6708	  6751#
ACKRUN	  4627	  5570#
ACKSTA	  4624#	  5548
ACKTYP	  6700
ADDINT	   953	  1091#	  4998	  5061
ADDIT	   992	  1018#
ADDIT1	  1019	  1025#
ADDLNK	  1971	  1976	  2122	  2130#
ADDND1	   998	  1005#
ADDNOD	   969#	  1116	  7538
ADDONF	  2139#	  2139	  2140
ADDTEL	   977	  1037#
ADHLD	   969
ADIBLK	  1091
ADIN10	  1117	  1123#
ADINBR	  1091
ADIPTR	  1091
ADISTA	  1091
ADNABR	   969
ADNADR	   969
ADNSTA	   969
ARGX02	  7270
ARGX04	  7568	  7585	  7632	  7641
ARGX13	  2954	  7430	  7432	  7436
ARGX17	  7403	  7407
ARGX19	  7356	  7373
ASCCNT	  2616
ASCII1	  2625	  2629#
ASCIIC	  2614#
ASCIID	  2623	  2626#
ASCIIL	  2622#	  2630
ASCIIZ	  2347	  2356	  2397	  2409	  2415	  2428	  2603	  2605	  2613#	  6804
ASGJFR	  4763
ASGPAG	   416	   424
ASGRES	  1667	  1814	  6988
ASGSWP	   943	  1097	  1640	  7514
ASGWDW	   412#	   665	  2241
ASGWRT	   415	   422#
ASMCB	   751
ATTRTB	  2160	  2164	  2165	  2178	  2188#	  2194
B	  7310
BADMSG	  4858	  4861	  4868	  4872	  4874	  4885	  4894	  4895	  5012	  5123	  5268#	  5401	  5526	  5528
	  5585	  5719	  5770	  5773
BADSEG	  4033	  4049	  4119	  4141#
BADSTR	  4917	  4919	  4922	  4924	  4930	  4933	  4941	  4946	  4949	  4951	  4956	  4964	  4976	  4984
	  5006#
BADUDT	  5247	  5251	  5256	  5263	  5453	  5492#
BGCCHK	  1184	  1230	  1342	  1390	  2038	  4905	  5040	  6627
BGCINF	   936	  3450	  5003	  5011
BININ	  2407	  2426	  2653#
BININ1	  2658#	  2669
BININ2	  2660#	  2664
BININ3	  2661	  2665#
BININ4	  2666	  2670#
BINXT	  2660	  2673#
BITS	  1624	  2109	  5041	  5051
BLKASG	  1636	  1643	  1653	  1654
BLKF	   713	   858	   877	  3010	  3282	  3376	  3445	  3517	  3607	  3788	  4226	  4234	  4477	  5520
	  6099
BLKLK0	  1266	  1270#
BLKLK1	  1269	  1280#
BLKLLK	   712	   857	   876	  1245#	  3327	  3498	  4203	  7016
BLKLOK	  1250	  1257#	  1348	  5093	  5198	  5379	  5413	  5541	  5598	  5729	  5781
BLKUK1	  1293	  1297#
BLKULK	   723	   758	   785	   804	   810	   819	   871	   886	  1289#	  1392	  2758	  2833	  2840	  2892
	  2996	  3012	  3085	  3169	  3381	  3395	  3504	  3518	  3856	  4215	  4228	  5114	  5267	  5394
	  5440	  5463	  5466	  5497	  5799	  5806	  5902	  7046
BLOCK1	   983	  1059	  2023	  7007	  7580	  7736
BLOCKM	  3793	  4479
BLTUM1	  7411
BUGHLT	   926	  2139
BUGMXR	   926	  4905	  5011	  5040
BYTGUD	   612	   615#
CAPENB	   520	  1840	  7299	  7344	  7365	  7394
CAPX1	  7301	  7396
CAPX2	  7346	  7367
CCDON	  4578	  4579	  4580	  4581	  4582	  4590	  4600	  4602	  4608	  4626	  4628	  4629	  4630	  4632
	  4637	  4638	  4642	  4643	  4644	  4646	  5436	  5466#	  5555	  5562	  5579	  5583	  5739	  5749
	  5757
CCGUD	  4577	  5426#
CCGUD1	  5427	  5433#
CCGUD2	  5452	  5455#
CCJEC1	  5432	  5463#	  5639
CCJECT	  4576	  4584	  4588	  4624	  4636	  5420	  5462#	  5619	  5632
CCLEN	  3834
CCMSG	  4890	  5400#
CCMSG1	  5405#	  5416	  5444
CCREC	  4576#	  5422
CDIBUF	  3424
CDICNT	  3424
CDIFLG	  3424
CDILLB	  3424
CDIOPT	  3425
CHANOK	  7435	  7438#
CHKBRP	  3753	  3994#
CHKCHL	  2905	  2916	  2926	  2941#
CHKCON	  3802	  3897#
CHKDCR	  3383	  3977#
CHKEMP	  3232	  3365	  3985#
CHKFRE	  4328	  4336	  4477#
CHKFRN	  5618	  5631	  5685#
CHKIDL	  4601	  5737#
CHKILL	  2948	  2952	  2954#
CHKLLT	  5658	  5675	  5895	  6431	  6508	  6966
CHKLOK	  1282	  3908#
CHKPIP	  1334	  1364#	  1382
CHKPS1	  6686	  6691#
CHKPST	  6676	  6683#
CHKQTA	  3763	  3918#	  6912
CHKRAW	  3947#	  4347
CHKSCP	  3775	  3937#
CHKSCT	  3770	  3928#	  5888
CHKSET	  3918	  3928	  3937	  3947	  3957#	  3968	  3985	  3994
CHKSWD	  3759	  3968#
CHKTTM	   782
CHNOK1	  7443#	  7451
CHNOK2	  7445	  7450#
CICOR	  5192	  5274#
CICOR1	  5277	  5282#
CIDC	  5126	  5129	  5135	  5191	  5197	  5411	  5464	  5471#	  5498	  5540	  5596	  5625	  5780
CIDCLC	  5473	  5485#
CIDCT	  5476#	  5481
CIDON	  4888	  4907	  5004	  5269#	  5467	  5483	  5728	  5747	  5903
CIMCNT	  2555
CIMMFL	  2564	  5307
CIMSCT	  2552
CIMSG	  4889	  5122#
CIPSRV	  5127	  5403	  6230#
CISRVS	  2552	  2555
CKATSQ	  4791
CLENUP	   666	   673	   680	   690#
CLNERR	   690
CLRBLK	  2061#	  3208
CLRFLO	  1723#	  3566
CLRLLB	  2061
CLSX1	   709
CLZABT	  3375	  3390#	  4620
CLZCMS	  3352	  3361#
CLZDI	  3341#	  4614
CLZDIN	  3450#	  3450
CLZDIQ	  3369#	  4617
CLZDIR	  3389#	  4618
CLZDN1	  3382	  3402#
CLZDON	  3393	  3397#	  4612	  4613
CLZDQ1	  3453#
CLZEMP	  3342	  3364	  3368#
CLZRUN	  3340#	  4615
CLZSDI	  3373	  3424#
CLZSTA	  3335	  4612#
CLZWDC	  3378#	  4616
CMPLEN	   444	   456#	  1863
CMPRLP	  2512#	  2517
CMPSTR	  1432	  1593	  1942	  2259	  4972	  5283
CNFCOM	  3257	  3808	  3864	  3870#	  4257
CNFLNK	  3870
CNMCF	  3843
CNMCI	  2323
CNMDC	  3483	  5477
CNMDI	  3280	  3441	  4148	  6096
CNMRFL	  2323	  3280	  3441	  3483	  3843	  4148	  5477	  6096	  6797	  6869	  7202
CNTFLD	  3310	  3486	  3487	  3847	  3848
CNTLLB	  5329
CNTLOP	  2169#	  2172	  2176
CNTSTS	  5329
COMCST	  6825	  7484
COMECO	  6823	  7482
COMPAR	  2465	  2488	  2508#
COMPUT	   438#	   505	   545	   589
COMVER	  6821	  7480
COMX19	   566
CONIN1	  5334	  5344#
CONINT	  2911	  5266	  5328#	  5430	  5492	  5649
CONLEN	  2314
CONREJ	  4589	  5566	  5613#
CPLCNT	   456
CPYFU2	  7521	  7530
CPYTU1	  7323
CRLATR	  2293
CRLCIB	  2293
CRLCNT	  2293
CRLDSC	  2293
CRLDSS	  2293
CRLHSC	  2293
CRLHST	  2293
CRLOBJ	  2293
CRTLNK	   679	  2292#
CTLLCL	  6263	  6290#
CTLMSG	  4884	  4887#
CX	   654	   656	   657	   778	   983	  1059	  1144	  1257	  1289	  1364	  1407	  1589	  1604	  1932
	  1956	  1964	  2005	  2023	  2252	  2593	  2958	  2979	  3042	  3330	  3499	  4014	  4018	  4718
	  4742	  4756	  4760	  4765	  4769	  4814	  4823	  4831	  5076	  5081	  5200	  5274	  5328	  5366
	  5381	  5415	  5443	  5480	  5543	  5600	  5695	  5731	  5783	  5829	  5855	  5911	  6257	  6353
	  6355	  6382	  6390	  6395	  6406	  6432	  6437	  6463	  6668	  6950	  6959	  6967	  7004	  7007
	  7056	  7580	  7704	  7736
CZ%ABT	  3328	  3340	  3370	  3374	  3378	  3394	  4778
DATBOM	  3725
DATDON	  5796#	  5850
DATEOM	  3736	  4404	  6564	  6641
DATFLI	  3125	  6372	  6923
DATINR	  2933	  4098	  4146	  4482	  5582	  5668	  6420	  6427	  6437#
DATINT	  3125
DATMFL	  3125	  3719
DATMS1	  5774#	  5784
DATMSG	  4882	  5768#
DATRUN	  4639	  5790#
DATSTA	  4636#	  5788
DCABT	  4604	  4605	  4606	  5743#
DCCUR	   693	  1836	  1837	  1874	  1891	  2265	  3402
DCDCS	  4596	  5638#
DCMAX	  1838
DCMSG	  4892	  5718#
DCMSG1	  5723#	  5732
DCMSG4	  5488	  5722#
DCN	  2472	  5035	  7624
DCNCNT	   693	  1836	  1837	  1838	  1874	  1891	  2265	  3402
DCNDTB	   321#	  4776
DCNMSO	  6279
DCNNAM	   377	   545#	   661
DCNOBJ	   564	   574#
DCNOP0	  2462	  2466	  2472#
DCNOP2	  2474#	  2489
DCNOP3	  2477	  2483	  2489#
DCNOP7	  2471	  2493#
DCNOP8	  2460	  2495#
DCNOPN	   331	   652#
DCNSET	   322	   375#
DCNX1	   561
DCNX11	  1810	  2764	  2836	  2871	  3396	  3814	  3822	  4251	  4471
DCNX12	   533	   592	  3110	  3309
DCNX13	  2491
DCNX14	  3115
DCNX15	  3037
DCNX2	  4209
DCNX3	   515	   517	   522	   531	   576	   582
DCNX4	  1890
DCNX5	  1843	  2106
DCNX8	  3815
DCNX9	  2229
DCREC	  4600#	  5735
DCRUN	  4603	  5753#
DECOBJ	   518
DEDCOR	  5069	  5081#
DEDDUM	  5046
DEDMC1	  5068#	  5075	  5077
DEDMC2	  5114#
DEDMCB	  5032#
DEDPRT	  5046
DELBLK	  1989	  2002#
DELDNE	  1974	  1978#
DELDWN	  1969	  1973#
DELHLD	  1145
DELINS	  1960	  1963#
DELNO1	  1954	  1965#
DELNOD	   695	  1871	  1888	  1922	  1948#	  2267	  3399	  5113	  5764
DELREL	  1980	  1983	  1986	  1991	  1996	  1998	  2001	  2005#
DESX9	   290	   291	   292	   299	   300	   301	   302	   303	   304	   305	   309	   310	   327	   328
	   329	   337	   338	   339	   340	   341	   342	   343	   347	   348	  2833
DEV	   781	  4746	  4748	  4749	  4776
DIABT	  4592	  4593	  4594	  5618#
DIFLGS	  3465
DILEN	  3468
DIMSG	  4891	  5584#
DIMSG1	  5589#	  5601
DIMSG2	  4591	  5631#
DIMSG3	  5614	  5627	  5634#
DIREC	  4588#	  5609
DISRSN	  3465
DIUDAT	  3465
DLSCHN	  1957	  1963	  4824	  4830	  7248	  7254
DOACT	  2406	  2411#
DOATSQ	  4736
DOMSG	  4863	  4876#
DOMSG1	  4836	  4840	  4844#
DOMSGQ	  4729	  4823#
DONAC1	  6541#	  6577
DONAC2	  6538#
DONACK	  6472	  6534#
DONNXT	  6543	  6548	  6575#	  6584
DONRES	  6552	  6566	  6573#
DONRQ	  6564	  6570	  6580#
DOOPT	  2427	  2429#
DOPSWD	  2408	  2410#
DOSPW1	  2396	  2398#
DOSRV1	  2569	  2573	  2575#
DOSRVS	  2325	  2548#	  3845
DSCDON	  2341	  2351#
DSCMOV	  5229	  5238#
DSCMV1	  5266#	  5457
DSCNO	  5143	  5154#
DSCNO1	  5175	  5184#
DSCNO2	  5189	  5192#	  5201
DSCNUL	  2307	  2314#
DTMLEN	  3617
EDMS0	  3042	  3330	  3499	  5076	  5200	  5381	  5415	  5443	  5480	  5543	  5600	  5731	  5783	  5829
	  5855
EDMSH	  4742
EOFF	  3824
ERRF	  3604	  3816	  3821	  4210	  4250	  4470
ERRLEN	  4656	  4696#
ERRTAB	  4658	  4666	  4673#	  4696
EXTSET	   288	   323	   385#
F	  6269	  6270	  6280	  6285
F1	   368	   395	   402
FFL	  4716
FILATL	   675	  2706
FILBCT	   413	   832	   847	  3346	  3511	  3520	  3544	  3571	  3584	  3595	  3601	  3612	  3633	  3635
	  4325
FILBFI	   421	   428	   702	   766	   849	  3410	  3519	  4276	  4288	  4292	  4316	  4458	  4459	  4461
	  4463
FILBFO	   765	   834	  3409	  3543	  3570	  3600	  3644	  3647	  3663	  3664	  3668	  3670
FILBYN	  3530	  4214
FILBYT	   833	   848	   870	  3529	  4213
FILCNT	   829	   844	   863	  3528	  4212	  4248
FILDNM	   675	  2706
FILINP	   839	  3501	  3526
FILLEN	  3525	  3535
FILLI1	  5319	  5322#
FILLI2	  5312	  5316	  5317#
FILLIN	  5221	  5302#	  5437
FILLLB	   626	   667	   674	   694	   711	   722	   750	   755	   784	   809	   811	   826	   841	   856
	   867	   875	   885	  3011	  3013	  3084	  3122	  3186	  3326	  3333	  3345	  3357	  3497	  3516
	  3521	  3545	  3559	  3573	  3580	  3585	  3594	  3629	  3648	  3855	  3857	  4202	  4224	  4278
	  4287	  4294	  4317	  4326	  4329	  4334	  4338	  4481	  4483	  4774
FILNEN	   615	   660	  2204
FILOUP	   824	  3541
FILWND	   412	   418	   425	   427	   430	   696	   699	   759	   762	  3403	  3406	  3568	  3598	  4274
	  4314	  4777
FKJOB	  1934	  1936	  2228
FKNTC	  7457	  7469
FKQ2	  7457	  7458	  7469
FLOHLD	  4285	  4331
FLUSH	  2062	  3207	  3225	  3380	  3397	  4143	  4249	  5657	  5671	  6655#
FNDATR	  2180	  2706#
FORKX	  1268	  1272	  1935	  2120	  7447	  7455	  7466	  7468
FPC	  4717
FRELNK	  1315	  1621#	  1966
FRKRUN	   929	  1808
GENWAT	  3620	  3788#	  3877	  3883	  4150	  5442
GETATR	  2393	  2400	  2403	  2413	  2421	  2424	  2707	  2718#	  2722
GETBLK	  1569	  1635#	  1818	  1849	  1868	  2072	  2217	  2275
GETBSZ	  1740#	  3567	  3574	  3597
GETEX1	  6199#	  6205
GETEXT	  4923	  6198#
GETLLA	  5122	  5291#	  5400	  5527	  5584	  5718	  5772	  7207
GETMXS	  1773#	  3613
GETOKM	   657
GETRES	  1663#	  2315	  3117	  3469	  3619	  3835	  6754	  6789	  6858	  6915
GETSTA	   860	   879	  1752#
GETTS1	  1572#	  1585
GETTSK	  1565#	  1920
GETTWO	  4131	  4173	  4179	  4387	  4390	  4945	  4948	  5145	  5147	  5167	  5170	  5291	  5294	  5552
	  5586	  5720	  5810	  5815	  6139#	  6243	  7230
GJFX17	   396
GJFX18	   362	   375	   385	   405
GJFX45	  2182
GJFX49	   317	  2163
GJFX50	  2171	  2177
GNTCNT	  7551
GOKER2	   657
GOTMCB	  5049	  5051#
GOTSEG	  4176	  4181#
GTASC0	  6158#
GTASC1	  6169#	  6173
GTASCD	  6168	  6174#
GTASCI	  4871	  4929	  4963	  5152	  5178	  5246	  5255	  6157#
GTBNRY	  5250	  5262	  5451	  5605	  6156#
GTOKPR	   654
GTSBLK	  2232	  2235	  2238	  2274#
GUDOBJ	  1520	  1539	  1548
HOSTNL	  5212	  5221#
IFIW	   286	   287	   288	   289	   290	   291	   292	   293	   294	   295	   296	   299	   300	   301
	   302	   303	   304	   305	   307	   309	   310	   312	   313	   314	   315	   316	   317	   321
	   322	   323	   324	   327	   328	   329	   331	   332	   333	   334	   337	   338	   339	   340
	   341	   342	   343	   345	   347	   348	   350	   351	   352	   353	   354	   355	  2987	  3079
	  4540	  4541	  4542	  4543	  4544	  4545	  4546	  4548	  4552	  4553	  4554	  4555	  4556	  4557
	  4558	  4560	  4564	  4565	  4566	  4567	  4568	  4569	  4570	  4572	  4576	  4577	  4578	  4579
	  4580	  4581	  4582	  4584	  4588	  4589	  4590	  4591	  4592	  4593	  4594	  4596	  4600	  4601
	  4602	  4603	  4604	  4605	  4606	  4608	  4612	  4613	  4614	  4615	  4616	  4617	  4618	  4620
	  4624	  4625	  4626	  4627	  4628	  4629	  4630	  4632	  4636	  4637	  4638	  4639	  4642	  4643
	  4644	  4646	  4882	  4883	  4884	  4885	  4888	  4889	  4890	  4891	  4892	  4893	  4894	  4895
ILINS2	  7753
ILLSTR	  5011#	  5011	  5012
INAATR	  2379
INACNT	  2379
INALLB	  2379
INAPNT	  2379
INDADR	  7504
INDBLK	  7504
INDERR	  7504
INDSTA	  7504
ININOD	   931	   940#
INIRCV	  4916	  4917	  4985	  5054
INISNT	  4990	  5054	  6835
INIWAT	   913
INMENU	  2425	  2432#
INO020	  7083#	  7101
INO025	  7085	  7095#
INOLLB	  7070
INS010	  5919#	  5988
INS020	  5953	  5962#
INS030	  5939	  5982#
INSATR	  2362	  2379#
INSCNT	  5912
INSER1	  7546#
INSERR	  7519	  7522	  7527	  7531	  7539	  7543#
INSFLG	  5912
INSKED	  1219	  1232	  1274	  1297	  1664
INSLLB	  5912
INSND1	  7528	  7533#
INSNOD	  7421	  7504#
INTDF	   397	   940	   981	  1057	  1095	  1220	  1245	  1275	  2006	  4755	  7513	  7578
INTDFF	   362	   370	   375	   385	   405	   944	   945	   989	  1001	  1013	  1022	  1030	  1033	  1072
	  1079	  1098	  1118	  1127	  1233	  1298	  2009	  3401	  4770	  4784	  5113	  5763	  7540	  7547
	  7603	  7609
INTINT	  2921	  2958#	  5846
INTLEN	  3116
INTLS	  5792	  5810#
INTLS1	  5828#	  5831
INTOUT	  5901	  6514	  7022	  7070#
INTRUN	  5798	  5804#
INTSET	  5804	  5911#
INTT10	  5372#	  5382
INTT20	  5386	  5393#
INTTST	  5265	  5364#
INVHDR	  4866	  4899#
INVPRC	  5131	  5134#	  5138	  5146	  5148	  5153	  5155	  5158	  5161	  5168	  5171	  5179
IOMODE	  2559
ISEGSZ	  2582
ITRAP1	  7270	  7273	  7753
ITSID	  4961
ITSNAM	  2484	  4927	  4970	  4995	  5056	  5064	  5065	  7666
ITSNUM	  4925
JFN	   412	   413	   418	   421	   425	   427	   428	   430	   615	   626	   660	   667	   674	   675
	   694	   696	   699	   702	   711	   722	   750	   755	   759	   762	   765	   766	   781	   784
	   809	   811	   826	   829	   832	   833	   834	   841	   844	   847	   848	   849	   856	   863
	   867	   870	   875	   885	  2204	  2706	  3011	  3013	  3084	  3122	  3186	  3326	  3333	  3345
	  3346	  3357	  3403	  3406	  3409	  3410	  3497	  3511	  3516	  3519	  3520	  3521	  3525	  3528
	  3529	  3530	  3535	  3543	  3544	  3545	  3559	  3568	  3570	  3571	  3573	  3580	  3584	  3585
	  3594	  3595	  3598	  3600	  3601	  3612	  3629	  3633	  3635	  3644	  3647	  3648	  3663	  3664
	  3668	  3670	  3855	  3857	  4202	  4212	  4213	  4214	  4224	  4248	  4274	  4276	  4278	  4287
	  4288	  4292	  4294	  4314	  4316	  4317	  4325	  4326	  4329	  4334	  4338	  4458	  4459	  4461
	  4463	  4481	  4483	  4746	  4749	  4772	  4774	  4777
JFN0	  4772
JOBBIT	  4724
JOBNO	  2230
JSBFRE	  4781
KDPFLG	  4731	  4793
KDPTSK	  4732
LASTM	  1408
LASTSK	  1573
LCKTST	  1222
LITCNT	  7614
LKISIZ	  1791
LKOBJS	  1789
LKPCOD	  1327	  1378
LKPLLB	  1327
LKSIZE	  1368	  1787	  1789	  1791	  1990	  1995	  1997	  1999	  2032	  2046	  2050	  2083	  2084	  2086
	  2088	  2089	  2212	  2219	  2234	  2237	  2240	  2253	  2254	  2257	  2258	  2838	  2849	  2856
	  2877	  2878	  2980	  2981	  4721	  5207	  5244	  5248	  5252	  5253	  5278	  5281	  5352	  5353
	  5713	  5714	  5937	  5944	  5945	  5951	  5954	  5956	  5964	  5965	  6005	  6014	  6015	  6016
	  6022	  6023	  6027	  6033	  6034	  6056	  6057	  6066	  6068	  6072	  6073	  6076	  6079	  6080
	  6081	  6083	  6085	  6785	  6851	  7019	  7026	  7036	  7037	  7041	  7045	  7078	  7084	  7109
	  7112	  7113	  7114	  7116	  7128	  7129	  7130	  7133
LLACT	  1997	  2086	  2237	  2856	  5253
LLADDR	  1565
LLBFI	  6022	  6034	  6066	  6079
LLBFO	  7129	  7133
LLBIT	  2101
LLBITS	  1623	  2102
LLBLK	  3465	  6465	  6700
LLBOM	  1896	  3724	  3725	  3734
LLBPCT	  2321	  2687	  3124	  3476	  3631	  3708	  3842	  6259	  6326	  6759	  6795	  6832	  6864	  6887
	  6922
LLBPI	  5944	  5951	  6083
LLBPTR	  2320	  2387	  2621	  2657	  2686	  3123	  3475	  3630	  3643	  3674	  3700	  3841	  6762	  6796
	  6865	  6921
LLBRP	  3752	  3753	  3996	  3997	  5864	  5866	  6563	  6564	  6610	  6611
LLBSZ	  1740	  1899	  3343	  3640	  4273	  4313	  4318	  4416	  5317
LLCIL	  5388	  6705
LLDED	  5088	  5089	  5099
LLDMT	  4029	  4048	  4434	  6411	  6422
LLDRB	  6068	  6069	  6076
LLDRC	   757	  2929	  6439
LLDRV	  1368	  2981	  5353	  5714	  6023	  6073	  7116	  7130
LLDRW	  2930	  2931	  4024	  6423	  6425
LLDSC	  1990	  2219	  2257	  2258	  5281
LLDSN	  3702	  3704
LLDUM	  6785	  6851
LLDWN	  1421	  1542	  1961	  1973	  2148
LLFAIL	  1414	  1440#
LLFDI	  1902	  2576	  2577	  2583	  2814	  4246	  4247	  5670	  5673
LLFDS	  1852	  1984	  2076	  2308	  2337	  2338	  2346	  3189	  3194	  5224	  5228
LLFEM	  1763	  3353	  3581	  3582	  3586	  3587	  3726	  3727	  3732
LLFIM	  2817	  2818	  3532	  3533	  4221	  4269	  4297	  4298	  4301	  4406	  4411	  4412	  4436	  4437
	  5920	  6009	  6019	  6020	  6026	  6053	  6054
LLFLI	  1715	  1716	  3512	  3513	  3522	  3523	  3949	  3950	  4218	  4219	  4266	  4267	  4271	  4339
LLFLO	  1709	  1710	  1723	  1727	  3348	  3349	  3546	  3547
LLFNA	  4099	  4281	  4282	  4528	  4530
LLFNM	  2063	  2305	  3173	  5223
LLFNN	  4009	  4010	  4099	  4523	  4524	  4530	  6415
LLFOB	  1528	  1529	  1987	  1988	  2079	  2080	  2245	  2800	  2801	  2831	  2832	  2862	  2863	  3162
	  3163	  5418	  5419
LLFRK	   756	  1933	  2121	  2227	  2960	  5335	  5890	  6438
LLHEAD	  1413	  1522	  1953	  2141
LLHLK	  1424	  2065	  2531	  5324	  5511	  5685	  6375	  6952
LLHNM1	  1846
LLHO	  1408
LLHST	  1430	  1847	  2069	  2496	  2602	  2766	  5214	  5509
LLICT	  5945	  5954	  5956	  6005	  6016	  6033	  6080
LLIDN	  4034	  4093	  4184	  4378	  4428	  4521	  7149	  7164
LLIIC	  6015	  6033	  6081
LLIIN	  4183	  5820	  5836	  6744
LLIMS	  2553	  2554	  4049	  4408	  4409	  6127	  6128
LLINI1	  1314#	  1316
LLINIT	   916	  1311#
LLINT	  1365	  1366	  2580	  2581	  2976	  2977	  5332	  5333	  5384	  5385	  5577	  5578	  5699	  5700
	  5796	  5797	  5899	  5900	  6383	  6384	  6512	  6513	  6969	  6970	  7218	  7219
LLISN	  3129	  3133	  6926	  6929
LLLCKT	  1249	  1303#
LLLKBD	  1230#	  1230
LLLKU1	  1414#	  1420	  1422
LLLKU2	  1423	  1427#
LLLKUH	  1407#
LLLKUP	  1406#	  1951	  2133	  3898	  3909	  3958	  3978	  5375	  5408	  5537	  5593	  5726	  5777	  6377
	  6954	  7216
LLLLCK	   909	  1221	  1225	  1231	  1248	  1303
LLLNK	  1280	  1415	  1555	  1949	  1965	  2119	  2131	  2143	  2144	  2533	  3147	  3780	  5513	  6328
	  6374
LLLOC	  2455	  2467	  2568	  2597	  2598	  2767	  2768	  5085	  5086	  5211	  5311	  6261	  6262	  6330
	  6331	  6458	  6459	  6701	  6702	  6904	  6905
LLLSA	  4500	  4505	  5580	  5581	  6409
LLLSC	  4284	  4330	  4413	  4497	  4505
LLLWC	  2823	  2824	  5447
LLMFC	  3720	  3765	  5303	  5878	  6553	  6612	  6613	  6636
LLMIC	  3113	  3114	  3135	  3889	  5456	  5873	  5876	  6961
LLMQI	   646	  4046	  6126	  6413
LLMQO	   648	  3761	  3921	  6910
LLMSG	  3961	  4012	  4015	  4017	  4335	  4345	  6428	  6429	  6659
LLMSGB	  3466
LLMSI	  2820	  2920	  3036	  3045	  3060	  3061	  3524	  4208	  5840	  5845	  6661
LLMSM	  3739	  3768	  3930	  3931	  3939	  5884	  5886	  6555	  6564	  6567	  6571	  6615	  6643	  6963
	  6965
LLNAM	  2212	  2253	  2254	  5278
LLNDO	  7109	  7110	  7112
LLOCT	  7026	  7078	  7084
LLOMSG	  2932	  3951	  4055	  4056	  4079	  4080	  4375	  4402	  4426	  4430	  5925	  6657	  7146	  7166
LLOPI	  1695	  6122	  6123
LLOPT	  1821	  1828	  1978	  2899	  5260	  5449	  5603
LLOPW	   643	  1700
LLOUT	  2032	  2046	  2050	  7019	  7036	  7037	  7041	  7045
LLPCT	  2088	  2878	  5252
LLPIC	   757	  2908	  5336
LLPII	   757	  2919	  2961
LLPRT	  2495	  2570	  5090	  5220	  5313	  5517	  6264	  6293	  6335	  6369	  6831	  6886
LLPSW	  1999	  2240	  2877	  5248
LLQOU	  3227	  3228	  3362	  3363	  3760	  3920	  3987	  3988	  6347	  6496	  6655	  6909
LLQUE	  2017	  2018	  2054	  7031
LLQUN	  3757	  3758	  3970	  3971	  6582	  6607	  6608	  6634	  6655
LLRCT	  1264	  1265	  1270	  1290	  1292	  1295	  3911	  3912
LLRFK	  1267	  1273	  1294
LLRSN	  2077	  2799	  3368	  3390	  3440	  4145	  5494	  5648	  5656	  5666
LLSABT	  2812	  3981	  5428	  5495	  5645	  5653
LLSCIR	  2536	  2809	  2866	  2910	  3166	  3216	  3250	  5203
LLSCIS	  2364	  2808	  3902
LLSDE	  3379	  5111	  5112	  5623	  5624	  5702	  5703	  5745	  5746
LLSDIQ	  3218	  3237	  3429	  4141	  6101
LLSDIR	  2811	  3508	  5101	  5664
LLSDIS	  3241	  3453	  3503	  4152	  5663
LLSEGQ	  6348	  6475	  6494	  6538	  6619	  6663
LLSLIS	  1550	  2243	  2806	  2835	  3209	  3901	  5083
LLSOB	  2083	  2838	  5207
LLSRUN	  2804	  2869	  3167	  3220	  3507	  3886	  3962	  5445	  6387	  7222
LLSTA	  1549	  1752	  2244	  2365	  2535	  2803	  2834	  2865	  2868	  2909	  3165	  3210	  3215	  3238
	  3242	  3249	  3334	  3430	  3454	  3502	  3887	  3900	  3960	  3980	  4142	  4153	  4205	  5082
	  5098	  5204	  5421	  5429	  5446	  5496	  5547	  5608	  5646	  5654	  5667	  5734	  5787	  6102
	  6386	  7221
LLSWG	  1773	  2565	  2575	  3265	  5308	  5322
LLTRC	  5964	  6085
LLTRM	  5937	  5938	  5965	  6027	  6056
LLTRN	  3873	  3874	  3881	  3884
LLTSK	  1582	  1590	  1895	  1939	  1981	  2355	  2756	  5276
LLTTY	  4758	  4767
LLUCT	  2067	  2900	  5264	  5454	  5607
LLUPL	  1419	  1535	  1955	  1959	  1968	  2146
LLUSGP	  2082	  3171	  5209
LLUSR	  1995	  2084	  2234	  2849	  5244
LLVEC	  2980	  5352	  5713	  6014	  6072	  7114	  7128
LNKADR	  6465
LNKID	  1408
LNKPRI	  2557
LNSPSR	  7756#
LOKLL	  1218#	  1333	  1381	  1823	  1869	  1882	  1918	  3398	  5068	  5194	  5372	  5407	  5534	  5592
	  5725	  5774	  6376	  6953
LOKPIP	  1327#
LPBSEG	  6333#	  6370
LSIDN1	  5879	  5894#
LSIDON	  5827	  5832	  5877	  5895#	  6103	  6105
LSINT1	  5825	  5836#
LSLEN	  6914
LSMSG	  5839	  5854#	  5857
LSMSG1	  5862	  5865	  5868#
LSTERR	  7647
MAKEXT	  6217#	  6223	  6802
MAKFLG	  3636	  3719#
MAKINP	   420	  2745#	  4275
MAKLN1	  2103#	  2105
MAKLNK	  1824	  2100#
MAKMSG	  3639	  3693#
MAKPTR	  2735#	  2746	  3344	  3569	  3599	  4315
MAKTST	  3606	  3780#	  4348	  6913
MAXBLK	  1637
MAXDIF	  4073	  4190	  5826	  6491	  6547
MAXDSC	   275#	   532	  1848	  2071	  3109	  3308	  5151	  5177	  5245	  5254	  5261	  5450	  5604
MAXEXP	  2115
MAXHST	   277#	   565	  4870	  4928
MAXLC	  1862
MAXLNK	  1312	  1621	  6813
MAXNOD	   941	   948	  7389	  7406
MAXNTA	  2159	  2194#
MAXQ	  4723
MAXSEG	   642
MAXSG1	   645
MAXSGQ	   647
MBLOCK	  3554	  3693
MCBCLL	  4751
MCBCQ	  4737	  4746#
MCBCQ1	  4778#
MCBCQ2	  4753#	  4785
MCBDE1	  5048#	  5073
MCBDED	  4739	  5046#
MCBDTE	   930	  1809	  2475	  2481	  4916	  4931	  4937	  4939	  4965	  4966	  4985	  4986	  4990	  5032
	  5054	  5055	  5186	  6835	  6836	  6837	  6842	  6843
MDPTR	  4445
MENT0	  4718
MKFL10	  3725	  3726#
MKFL20	  3731	  3738#
MKFL30	  3730	  3738	  3741#
MLJFN	  4762
MLODR	  3554
MO%ABT	  2813	  2815
MO%CDN	   795
MO%CON	  2805
MO%DAV	   801
MO%EOM	  2819
MO%INA	   798
MO%INT	  2821
MO%LWC	  2825
MO%SRV	  2802
MO%SYN	  2815
MO%WCC	  2810
MO%WFC	  2807
MONX02	   417	   429
MONX03	  4662
MONX06	  1638	  1924
MOVACK	  4021	  4109#
MOVMSG	  4290	  4364#	  5946	  6050
MOVNAK	  4011	  4053	  4090#
MOVSE1	  4012#	  4023	  4039	  4054	  4058	  4070	  4082	  4086
MOVSE2	  4078	  4083#
MOVSEG	  3230	  3332	  3556	  4005#	  4279	  4373	  5922	  7075	  7144
MOVSEL	  4065#	  4077
MOVST0	  1608#	  1611	  1612
MOVST1	  1679#	  2222	  2310	  2497
MOVST2	  1683#	  1685
MOVSTR	  1103	  1108	  1604#	  1879	  5216	  5232
MRETN	  7274
MRETNE	   659
MSBPTR	  3054	  3701	  4115	  4168	  4385	  5531	  6111	  7228
MSCNT	  4845	  6260	  6327	  6334	  6993	  7180
MSDAT	  3650	  4026	  4035	  4095	  4133	  4499	  4522	  6125	  6551	  6938	  6960
MSDTC	  3046	  3654	  4113	  4170	  4383	  5533	  6113	  7154	  7226
MSGBL	  6751
MSGBLK	  4109	  4165	  4721	  7174
MSGBYP	  4109	  4165	  4364	  4721	  7174
MSGCNT	  4109	  4165	  4364	  4721	  7174
MSGDDC	  4721
MSGDML	  4721
MSGDST	  4721	  7174
MSGFLG	  2548	  2594
MSGHSN	  4721
MSGLCL	  4721
MSGLL	  4109
MSGLLB	  4006	  4721
MSGOBJ	  4721
MSGQ	  4728	  4797	  4825	  4827	  4829	  6301
MSGSDC	  4721
MSGSGT	  4165
MSGSOB	  4721
MSGSRC	  4721	  7174
MSGTYP	  4880	  4882#
MSGW1	  4721	  5046
MSGW2	  4721
MSHDR	  2314	  2319	  3116	  3120	  3468	  3472	  3617	  3627	  3834	  3838	  4847	  6276	  6317	  6753
	  6760	  6788	  6792	  6857	  6861	  6914	  6918	  6984	  6994	  7176
MSIZE	  3554
MSLCL	  4833	  4834	  4841	  6290	  6366
MSLLA	  3148	  6329	  6932
MSLNK	  4016	  4057	  4076	  4081	  4083	  4084	  4085	  4429	  4826	  5844	  6430	  6501	  6506	  6519
	  6524	  6525	  6576	  6598	  6600	  6632	  6672	  7165	  7250
MSLSI	  3040	  3149	  4135	  5813	  6745	  6765	  6933
MSMFL	  3126	  3696	  4019	  4117	  4403	  4877	  5306	  5558	  5571	  6371	  6407	  6564	  6640	  7200
MSMS1	  6271	  6272	  6274
MSNAK	  6580	  6630	  6631	  6645
MSPRT	  4838	  4900	  4915	  5022	  5185	  5219	  5516	  6991
MSPST	  6337	  6448	  6674	  6675	  6684	  6685
MSRLS	  6446	  6447	  6687
MSSEG	  3132	  3706	  4060	  4065	  4186	  4377	  4427	  5819	  6487	  6544	  6931	  7148	  7163
MSTOM	  3150	  3651	  6484	  6541	  6934
MSTSN1	  3144#	  3146
MSTSN2	  3143	  3146#
MTASGN	   726	   793#
MTDON	  2840#	  3191
MTGSS	   740	  3263#
MTOBJ	  2847	  2854	  2862#	  2875
MTOBJ1	  2864	  2871#	  3170
MTOX1	   724
MTRDCK	  2763	  2865#
MTRDI1	  3057#	  3059
MTRDI2	  3055	  3059#
MTRDIN	   734	  2987#
MTRNCK	  2868#	  3034	  3106	  3263
MTSETC	   796	  2905#
MTSETD	   802	  2926#
MTSETI	   799	  2916#
MTSNIN	   735	  3076#
MVBNR1	  2641#	  2644
MVBNRY	  2638#	  3488	  3849
MVM010	  4373#	  4438
MVMBFI	  4366
MVMCNT	  4366
MVMFLG	  4366
MVMLLB	  4366
MVMMAX	  4366
MVMX	  4376	  4382	  4439#
MVMY	  4400	  4440#
MVNLLB	  4090
MVSPTR	  1679
NABROK	   999	  1020	  1204#
NAKCNT	  6549
NAKFLG	  7174
NAMCN	  2481	  4931	  4966
NAMINI	   895#
ND%EXM	  7722
ND%LPA	  7359
ND%LPR	  4977
NDBDEL	  1184#	  1184	  1185
NDCIC	  7288	  7463#
NDCIC1	  7465#	  7472
NDCLP	  7283	  7365#
NDFLP	  7284	  7383#
NDGLI	  7290	  7614#
NDGLN	  7279	  7318#
NDGN10	  7581#	  7598
NDGN20	  7693#	  7697
NDGN25	  7694	  7698#
NDGN30	  7602#
NDGN40	  7605#
NDGNM	  7281	  7338#
NDGNT	  7286	  7551#
NDGNX	  7582	  7586	  7595	  7608#
NDGVR	  7289	  7476#
NDIFLG	  6797	  6869
NDINIT	   936#	   936	   937
NDISIZ	  6788	  6857
NDLI10	  7638#	  7672
NDLI11	  7652	  7655	  7658	  7660#
NDLI40	  7626	  7669	  7676#
NDSIC	  7287	  7426#
NDSLN	  7278	  7297#
NDSLP	  7282	  7344#
NDSN10	  7418#	  7424
NDSNM	  7280	  7328#
NDSNT	  7285	  7389#
NDTLEN	  7269	  7294#
NDVER1	  6878#	  6880
NDVFY	  7291	  7704#
NDVNOD	  7705
NETAT1	  2170	  2178#
NETAT2	  2160#	  2162
NETATR	   355	  2158#
NETCHR	   855
NETCL1	  3326#	  3331
NETCLZ	   296	   334	  3323#	  4779
NETDIR	   286	   321	   395#
NETDSH	   479#	   507	   559	   574
NETEXT	   387	   589#
NETIN2	  3510	  3518#
NETINP	   315	   353	   710	  3495#	  3500	  4229
NETMOV	  3646	  4423
NETOUP	   316	   354	   866	  3540#
NETSCM	  3528#	  3549
NETSET	  3515	  4225	  4248	  4263#
NETSQ1	   863#	   868	  3810	  4543
NETSQI	   294	   332	  4202#	  4230
NETSQO	   295	   333	   855#
NETSQR	   312	   350	   875#
NETSR1	   882#	  3866	  4555
NETUIN	   839#	  3496	  3540	  4223
NETUOU	   824#	  3325	  3495	  3558
NETWKF	  5891
NMAPLK	   912
NMVCNT	  3296
NMVPTR	  3296
NODATA	  5239	  5259	  5265#
NODDEL	  1066	  1144#	  1161
NODDL1	  1155#	  1164	  1168
NODDL2	  1176#	  1179
NODDL3	  1178	  1186#
NODESC	  2214	  2226	  2232#
NODINI	  6785#
NODLOK	   911	   982	   988	  1000	  1012	  1021	  1029	  1032	  1058	  1071	  1078	  7579	  7602	  7608
	  7735	  7740	  7742
NODMAX	  1096	  1102	  1105	  1106	  1115	  7512	  7520	  7524	  7529	  7536
NODMSG	  6785	  6851
NODNAM	  7297
NODNUM	   901
NODPRT	  6785	  6851
NODTAB	  7271	  7278#	  7294
NODTBL	   947	   986	  1027	  1060	  1150	  1151	  1163	  1188	  1205	  7561	  7738
NODVER	  4992	  6840	  6851#
NODX02	  7358
NODX03	  7351
NOOOBJ	  2211	  2213#
NOSK11	  1956	  4014	  4756	  4765	  4823	  6353	  6382	  6406	  6959
NOTMCB	  2478	  4936
NOUSER	  5243	  5257#
NS%MSG	  6021
NS%TRN	  6084
NSBP01	  3753#	  3753
NSBP02	  3759#	  3759
NSBP03	  3764#	  3764
NSBP04	  3767#
NSBP05	  3770#	  3771
NSBP06	  3774#
NSBP07	  3775#
NSBP08	  4525#
NSBP09	  6701#
NSBP10	  3762#
NSPBPN	  5040#	  5040
NSPCH0	  7246#	  7256
NSPCH7	  7244#
NSPER1	  4658#	  4661
NSPER2	  4660	  4666#
NSPERR	  4656#	  5347	  5708
NSPEXT	  6221
NSPFRK	   926#	   926	   927
NSPINI	   909#
NSPLNQ	  2038#	  2038	  2039
NSPLPB	  2456	  2469	  4835	  4974	  4977	  4978	  4981	  5472	  6292	  6368	  6460	  6703	  6906	  7349
	  7360	  7368	  7378	  7384
NSPMAX	  2571	  2572	  4953	  5314	  5315
NSPMCB	  4738	  4799	  5042	  5048	  5052
NSPMS1	  7188	  7199#
NSPMS2	  7203	  7207#
NSPMSE	  7183	  7186	  7191	  7193	  7195	  7197	  7205	  7208	  7217	  7220	  7223	  7231	  7233	  7238#
NSPMSG	  7174#	  7255
NSPNUL	  4303
NSPOVR	  4952
NSPPHV	  1390#	  1390
NSPPWA	  1342#	  1342
NSPQ	  6317#
NSPRSN	  6627#	  6627	  6628
NSPRTH	  4905#	  4905	  4906
NSPSPC	  6983#
NSPSTR	  5003#	  5003	  5004
NSPTSK	  4728#	  4730	  4743
NSPTST	  4740	  4791#
NSPX00	  4673
NSPX01	  4674
NSPX02	  4675
NSPX03	  4676
NSPX04	  4677
NSPX05	  4678
NSPX06	  4679
NSPX07	  4680
NSPX08	  4681
NSPX09	  4682
NSPX10	  4683
NSPX11	  4684
NSPX12	  4685
NSPX13	  4686
NSPX14	  4687
NSPX15	  4688
NSPX16	  4689
NSPX17	  4690
NSPX18	  4691
NSPX19	  4692
NSPX2	  1426	  1433
NSPX20	  4693
NSPX21	  4694
NSPX22	  4695
NSPX26	  7453
NTACPT	   738	  3247#
NTACPY	  2757	  2775#	  3188	  3193
NTANT	   741	   750#
NTATB	   266#	  2164
NTATC	   264#	  2165
NTATE	   265#	  2178
NTATR	   263#	  2160
NTCCHN	  1042	  7448	  7454
NTCFRK	  1041	  7446	  7456	  7465
NTCIB	   652
NTCIN1	  1039#	  1045
NTCIN2	  1040	  1044#
NTCMAX	  1044	  7450	  7471
NTCNT	   363	   376	   386	   652	  2202
NTCOFF	  7464#
NTCP1	  2888#	  2890
NTCP11	  2887	  2890#
NTCPY	  2757#	  2770	  2850	  2857	  3195
NTCPY1	  2781#	  2784
NTCPY2	  2782	  2785#
NTCPYB	  2879#	  2901
NTCTAB	  1038	  1044	  7439	  7450	  7464	  7471
NTDDSC	   363
NTDSC	   376	   652	  2202
NTDSS	   363	   376	   652	  2202
NTHSC	   376	   652
NTHST	   376	   652
NTMCZ0	  3219	  3226	  3229	  3237#
NTMERR	   797	   800	   803	   809#
NTMTCT	   716	   743#
NTMTCZ	   737	  3215#
NTMTGD	  2892#	  3211	  3243	  3259	  3267
NTMTO1	   717#	   721
NTMTOP	   307	   345	   708#
NTMTTB	   717	   719	   726#	   743
NTMVO1	  3313#	  3315
NTMVOP	  3255	  3277	  3295#	  3437
NTOBJ	   363	   376	   652	  2202
NTPNT	   363	   376	   386	   652	  2202
NTRAC	   732	  2854#
NTRCB1	  3164	  3169#	  3221	  3251
NTRCB2	  3175#	  3179
NTRCB3	  3178	  3188#
NTRCBN	  3180
NTRCN	   739	  2830#
NTRCOB	   736	  3162#
NTRDA	   733	  2899#
NTRFCI	  3205	  3239	  3272#
NTRHN	   728	  2763#
NTRJCT	  3205#	  3217
NTRPW	   731	  2875#
NTRTN	   729	  2756#
NTRUS	   730	  2847#
NTSHUT	  2476	  5186	  5187
NTSNH	   742	   778#
NTSTS	   727	   817#
OBELLB	  7127
OBJENT	  1455	  1461	  1467#	  3174
OBJINI	   915	  1454#
OBJLO1	  1480	  1486#
OBJLO2	  1487#	  1496
OBJLOK	   514	   581	  1475#
OBJMAX	  1461	  1494
OBJONE	  2342	  2351	  5144	  5174
OBJPRO	  1454	  1461#	  1467	  3174
OBJPTR	  1475
OBJSFD	  1531	  1534	  1548#
OBJSN1	  1537#	  1544
OBJSN2	  1527	  1531#
OBJSND	  1526#	  1536	  1543
OBJSNO	  1530	  1535#	  1551
OBJSRC	  1336	  1384	  1520#	  1579	  1883	  2225	  5071	  5195
OBJTBL	  1454	  1455	  1477
OBJTSK	  2353
OBJTWO	  5133	  5157	  5166
OBJZRO	  2333	  5142
OKRET	   368#	   381	   391	   403	   404
OKSK11	  1964	  4018	  4760	  4769	  4831	  6355	  6390	  6395	  6432	  6967
ONEBYT	  2334	  2336	  2343	  2345	  2352	  2354	  2386	  2395	  2405	  2556	  2558	  2601	  2607	  2620
	  2629	  2641	  2656	  2667	  2686#	  2695	  2697	  3145	  6222	  6798	  6800	  6806	  6808	  6816
	  6818	  6820	  6822	  6824	  6826	  6828	  6870	  6872	  6879	  6940	  6942
ONMSGQ	  6301#	  6354	  7239
ONMSQ	  6295	  6353#	  6397
ONRAW1	  6410	  6428#
ONRAW2	  6409	  6427#
ONRAW3	  6421	  6432#
ONRAWQ	  5795	  6389	  6406#	  7236
ONSEGQ	  6333	  6347#
ONSGQ0	  6348#
OPENX1	  1901	  1904#
OPNDFT	  1854	  1856	  1918#
OPNDNC	   603#	   663
OPNDWK	   622	  1787#
OPNEXT	  1896#	  1927
OPNF	   708
OPNFAI	  1844	  1850	  1869#
OPNIWK	  1791#
OPNSRC	   604#	  2207
OPNSWK	   619	  1789#
OPNUNQ	  2223	  2252#
OPNWRK	  1788	  1790	  1792	  1802#
OPNX14	   608
OPTDAT	  3247	  3272
OPTSIZ	  1817	  2274
OURCAP	  6805
OURCNT	   898	  2459	  2461	  4967	  7310
OURNAM	   896	   950	  2458	  2464	  2604	  2769	  4971	  6803	  7313	  7322
OURNED	  4935	  4938
OURNUM	   902	  6801	  7333	  7339
OURREQ	  6807
OURTTL	   197#
OUTCHK	  4733	  4795	  4812#
OUTCK0	  7013#	  7020	  7047
OUTCK1	  7024	  7027	  7040	  7043#
OUTIVL	   914	  7058
OUTLOK	   910	  2022	  2056	  7006	  7013
OUTQUE	  2025	  2043	  2045	  2048	  7008	  7033	  7035	  7039
OUTR00	  3588	  3594#	  3657
OUTR0E	  3561	  3585#
OUTRR	   864	   883	  3355	  3554#
OUTRR1	  3595#
OUTRR2	  3612#
OUTRR3	  3589	  3603#
OUTRR5	  3643#
OUTRR7	  3649#	  3678
OUTSND	  4734	  7004#
OUTTIM	  4812	  4815	  7005	  7059
OUTWAT	  3231	  3233	  3366	  3384	  3557	  3604#	  3803
OUTWR0	  3662#	  3676
OUTWR1	  3667	  3672#
OUTWR2	  3673#	  3675
OUTWRD	  3642	  3661#
P	   456	   458	   463	   657	   690	   692	   704	   781	   936	  1145	  1148	  1175	  1184	  1230
	  1342	  1390	  1408	  1410	  1411	  1412	  1416	  1417	  1418	  1427	  1428	  1431	  1434	  1435
	  1440	  1525	  1526	  1537	  1553	  1679	  1682	  1684	  2038	  2293	  2299	  2300	  2301	  2302
	  2304	  2306	  2309	  2317	  2332	  2335	  2344	  2361	  2367	  2379	  2381	  2382	  2384	  2388
	  2390	  2392	  2399	  2402	  2412	  2420	  2423	  2430	  2432	  2433	  2447	  2449	  2450	  2451
	  2452	  2454	  2463	  2480	  2487	  2493	  2494	  2548	  2550	  2563	  2594	  2596	  2606	  2616
	  2618	  2622	  2745	  2747	  2995	  2997	  3029	  3032	  3033	  3047	  3049	  3053	  3058	  3062
	  3063	  3101	  3103	  3104	  3105	  3108	  3137	  3138	  3142	  3144	  3153	  3180	  3183	  3187
	  3247	  3252	  3272	  3274	  3296	  3301	  3302	  3305	  3312	  3425	  3433	  3450	  3466	  3471
	  3489	  3554	  3616	  3626	  3632	  3637	  3638	  3649	  3652	  3661	  3677	  3693	  3695	  3699
	  3870	  3872	  3880	  3882	  4006	  4008	  4032	  4038	  4052	  4069	  4090	  4092	  4097	  4263
	  4265	  4277	  4293	  4311	  4319	  4366	  4368	  4369	  4370	  4371	  4372	  4397	  4398	  4401
	  4422	  4424	  4425	  4433	  4440	  4441	  4445	  4447	  4465	  4494	  4496	  4504	  4518	  4520
	  4527	  4746	  4747	  4748	  4749	  4750	  4751	  4761	  4764	  4773	  4782	  4905	  5003	  5011
	  5040	  5329	  5331	  5345	  5346	  5350	  5351	  5696	  5698	  5706	  5707	  5711	  5712	  5889
	  5892	  5912	  5914	  5915	  5919	  5924	  5927	  5933	  5943	  5948	  5949	  5950	  5952	  5962
	  5970	  5971	  5972	  5977	  5982	  5985	  5996	  5998	  5999	  6000	  6004	  6007	  6025	  6032
	  6043	  6045	  6047	  6052	  6267	  6269	  6278	  6282	  6285	  6416	  6419	  6465	  6467	  6468
	  6469	  6474	  6485	  6488	  6534	  6536	  6542	  6545	  6550	  6627	  6673	  6678	  6751	  6756
	  6772	  7297	  7307	  7312	  7389	  7408	  7410	  7415	  7417	  7551	  7559	  7567	  7584	  7614
	  7622	  7631	  7640	  7705	  7712	  7718
P3	  3661	  3666	  3669	  3670	  3671	  3675	  3677
PARNDU	  7308	  7713
PARNO1	   572
PBYTSZ	   419	   609	   617
PGSFT	  2740
PI	  1957	  1963	  4824	  4830	  7248	  7254
PICHOF	  1957	  4824	  7248
PICHON	  1963	  4830	  7254
PRFXL	  2721
PRFXV	  2719
PROOFF	  4906	  5006	  5021#
PRSNAM	   546	   559#
PRTCNT	  6983
PRTNO	  6983
PRUNE	  6658	  6660	  6662	  6664	  6668#
PRUNE1	  6671#	  6679
PRUNE2	  6677#	  6692
PRUNE3	  6678#	  6690
PSIRQ	  1043	  2965	  5340	  6441
PUTLL1	  2534	  2538#
PUTLLA	  2528#	  2551	  3128	  3698	  6768	  6925
PUTLLR	  2527#	  3479
PUTOND	  6596	  6600#
PUTONQ	  6302	  6319	  6349	  6593#
Q1	   778	   779	   780	   786	  1037	  1038	  1039	  1041	  1042	  1044	  1045	  1046	  4447	  4448
	  4453	  4457	  4461	  4462	  4463	  4465	  4915	  4916	  4925	  4926	  4927	  4931	  4937	  4939
	  4953	  4959	  4965	  4966	  4969	  4970	  4975	  4983	  4985	  4986	  4990	  4991	  4994	  4995
	  5011	  7008	  7013	  7015	  7018	  7019	  7021	  7026	  7031	  7032	  7034	  7036	  7037	  7043
	  7044	  7045	  7415	  7416	  7417	  7418	  7560	  7565	  7581	  7596	  7623	  7629	  7638	  7670
	  7704	  7710	  7711	  7723
Q2	  4448	  4455	  4458	  4913	  4944	  4987	  7009	  7018	  7035	  7038	  7041	  7043	  7416	  7418
	  7420	  7423	  7565	  7566	  7567	  7581	  7583	  7588	  7589	  7591	  7597	  7629	  7630	  7631
	  7638	  7639	  7645	  7660	  7661	  7663	  7671
Q3	  7570	  7571	  7572	  7592	  7598	  7633	  7634	  7644	  7664	  7672
R	   462	  1367	  1591	  1610	  1711	  1717	  1940	  2018	  2081	  2642	  2674	  2718	  2978	  3531
	  4191	  5087	  5089	  5701	  5704	  6009	  6070	  6140	  6144	  6170	  6186	  6191	  6200	  6231
	  6241	  6609	  6611	  6671	  7111	  7507	  7508	  7510	  7696	  7699
RDICNT	  3029
RDINB	  3069#
RDINT	  2990	  3028#
RDINT1	  3034#	  3044
RDINX	  3035	  3038	  3068#
RDIPTR	  3029
RDIRTN	  3029
RDSTS	   817	  2799#	  5344	  5705
READF	   414	   607	   627
RELBLK	  1651#	  1829	  1886	  2008	  2339	  5226
RELFRE	  4783
RELJFN	   767
RELLNK	  5625	  5747	  5763#
RELMES	  1011	  1070	  1126	  1193	  7545
RELPAG	   426	   698	   701	   761	   764	  3405	  3408
RELRES	  1912	  2003	  2998	  4031	  4051	  4068	  4121	  4432	  5270	  6266	  6418	  6447	  6498	  6677
RELSWP	  1656
REMNDX	  1063	  1065	  1067	  1078#
REMNOD	   975	  1055#
REMQUE	  2002	  2017#
REQVER	  4990	  5054	  6837	  6838	  6842
RESEND	  5894	  6607#	  6648
RFTADN	   313	   314	   351
RJECT	  5102	  5435	  5613	  5645#	  5738
RJECT1	  5103	  5105	  5106	  5107	  5626	  5653#	  5748
RLBLK	  1819	  1910#
RLBLK1	  1830	  1911#
RMNNAM	  1055
RMQ010	  2029#	  2033
RMQ020	  2030	  2043#
RMQ030	  2049	  2054#
RNDF	   605
ROUCST	  6819	  7494
ROUECO	  6817	  7492
ROUVER	  6815	  7490
RS%SE0	  1666	  6987
RSEND0	  6614	  6619#
RSEND1	  6620#	  6633
RSEND2	  6639	  6643#
RSEND3	  6637	  6642	  6645#
RSKP	   366	   379	   389	   423	   431	   528	   536	   593	   632	   657	   681	   768	   789	   805
	   820	   887	   955	  1014	  1047	  1073	  1119	  1194	  1210	  1253	  1276	  1352	  1371	  1429
	  1436	  1482	  1488	  1556	  1583	  1645	  1669	  1712	  1718	  1904	  2123	  2181	  2248	  2261
	  2277	  2369	  2457	  2470	  2498	  2518	  2675	  2724	  2759	  2841	  2867	  2870	  2893	  2907
	  2912	  2918	  2922	  2928	  2934	  2943	  2946	  2953	  2999	  3064	  3086	  3154	  3285	  3306
	  3317	  3411	  3455	  3490	  3583	  3602	  3767	  3774	  3851	  3890	  3964	  4013	  4123	  4137
	  4192	  4341	  4442	  4498	  4507	  4532	  4667	  4813	  4818	  5096	  5113	  5115	  5285	  5297
	  5522	  5688	  5926	  5929	  5978	  6055	  6058	  6067	  6087	  6124	  6147	  6177	  6188	  6194
	  6208	  6246	  6705	  6707	  6780	  6839	  6844	  6945	  6956	  6971	  6973	  6995	  7079	  7091
	  7155	  7314	  7324	  7334	  7341	  7352	  7361	  7369	  7379	  7386	  7419	  7449	  7459	  7470
	  7473	  7496	  7541	  7562	  7564	  7605	  7676	  7700	  7724	  7745
RTFLG	  2600
RTHDC1	  2599	  2606#
RTHDCI	  2324	  2593#	  3127	  3478	  3697	  3844	  6767	  6924
RTHLEN	  2314
SAVADR	  2100
SAVBLK	  1802	  1948	  2130	  3833
SAVBSZ	  1802
SAVERR	  1802
SAVFF	  6267
SAVLL	  3833	  6258
SAVLLB	   621	   626#
SAVMSG	  6258
SAVOPT	  3833
SAVPQ	  7004
SAVPST	  6267
SAVSTR	  1802
SAVT	  1144	  1364	  1589	  1604	  1932	  2005	  2252	  2958	  2979	  4814	  5081	  5274	  5328	  5366
	  5695	  5911	  6257	  6463	  6668	  7056
SBFLLB	  6071
SC%MNT	  7345	  7366
SC%OPR	   519	  1841	  7300	  7345	  7366	  7395
SC%WHL	   519	  1841	  7300	  7345	  7366	  7395
SECALL	  4719
SEGERR	  4154	  4470#
SEGMSK	  4380	  6928	  7151
SEGPST	  6336	  6446#
SEGSIZ	   917
SEGSZ	   918	  2562	  6809	  6811
SETCNT	  5793	  5842	  6109#
SETEOM	   882	  1763#
SETFLO	  1727#	  3596
SETIBF	  5928	  6066#
SETOPI	   628	  1695#
SETOPW	   630	  1700#
SF%DOK	   656
SFBSX2	   614
SFTADN	   352
SHTLK1	  5663#	  6094
SHUT10	  5672	  5675#
SHUTLK	  5104	  5633	  5664#	  5756
SIMCNT	  3101
SIMLLB	  3101
SIMPTR	  3101
SIMRTN	  3101
SK2RET	   369	   371	   398
SKDOUT	  6706	  6972	  7017	  7023	  7027	  7056#
SKPFLD	  4867	  6185#	  7192	  7194
SKPFLI	   842	  1715#
SKPFLO	   827	  1709#	  3560
SMLSEG	  2561
SMSGQ	  6318	  7246	  7251	  7253
SNDACK	  4036	  4096	  4526	  6700#	  6746
SNDBA1	  6385	  6388	  6395#
SNDBAD	  6373	  6379	  6396#
SNDCC	  3833#	  3876
SNDCHK	  3603	  3751#	  7096
SNDCTL	  2368	  3284	  3452	  3878	  4151	  5482	  6104	  6257#	  6779
SNDDC	  5479	  5507#
SNDDI	  3281	  3442	  3465#	  4149	  5519	  6098
SNDDI1	  3484	  3489#
SNDLBL	  6903
SNDLCL	  6332	  6366#
SNDLCT	  6903
SNDLMS	  6903
SNDLS	  3041	  4502	  6130	  6903#
SNDLS1	  6962	  6966#
SNDLSL	  6907	  6950#
SNDLTP	  6903
SNDMSG	  6267#	  6339
SNDSE0	  6360#	  6574	  6647
SNDSE1	  6340#	  6391	  6398
SNDSE2	  6334#	  6361
SNDSEG	  3152	  3655	  6325#	  6944
SNDSG0	  6264#	  6294	  6833	  6888
SNINT	  3081	  3100#
SNLBLK	  6325	  6360
SNMSG	  6325	  6360
SNTBLK	  7389
SNTCNT	  7389
SQALLB	  4518
SQI1	  4208#	  4248	  4259	  4567
SQI11	  4220	  4223#
SQI2	  4287#	  4346
SQI22	  4268	  4279#
SQI23	  4278#	  4337
SQI3	  4405	  4408#
SQI4	  4410	  4413#
SQIACK	  4327	  4518#	  5983
SQICNF	  4256#	  4566
SQICNT	  4263
SQIDIR	  4241#	  4570
SQIEM1	  4304	  4313#
SQIEMP	  4296	  4311#
SQILS	  4333	  4494#	  5579	  5986
SQIMOV	  4420#
SQIMV1	  4419	  4426#
SQINOB	  4312	  4345#
SQISN2	  4329#
SQISN3	  4332	  4339#
SQISN4	  4286	  4333#
SQISNA	  4283	  4326#
SQISTA	  4206	  4564#
SQIWR1	  4448#	  4464
SQIWR2	  4453#	  4456
SQIWR3	  4460	  4465#
SQIWRD	  4418	  4445#
SQLLLB	  4494
SQOABT	  3814#	  4548	  4560	  4572
SQOBAD	  2765	  2837	  2848	  2855	  2876	  2991	  3082	  3206	  3240	  3256	  3258	  3264	  3377	  3605
	  3608	  3621	  3809	  3817	  3823	  3825	  3855#	  3865	  4211	  4227	  4252	  4258
SQOCN1	  3875	  3879#
SQOCN2	  3863#	  4554
SQOCNF	  3807#	  4542
SQODIR	  3821#	  4546	  4558
SQODIS	  3815#	  4544	  4545	  4556	  4557	  4568	  4569
SQOEOF	  3824#	  4248
SQOLIS	  3802#	  4540	  4541	  4552	  4553	  4564	  4565
SQOOTR	   880	  4552#
SQOSTA	   861	  4540#
SRCFAL	  2231	  2233	  2236	  2239	  2242	  2265#
SRCNAM	   364	   505#	  2205
SRCNOB	   509	   525#	   585
SRCOPN	   293	  2201#
SRNSET	   287	   362#
SRVDTB	   286#
SSVDSC	  2447
SSVDSS	  2447
SSVHSC	  2447
SSVHST	  2447
STEPF	   395	   402
STMXDF	   631	   642#
STONOD	  7594	  7668	  7689#
STRMS1	  4955#	  4958
STRMS6	  4968	  4973	  4981#
STRMS7	  4979	  4982	  4985#
STRMSG	  4893	  4913#
STRSAV	   672	  2446#
STRTYP	  4921	  6799
STS	   414	   422	   605	   606	   607	   627	   629	   708	   713	   781	   824	   839	   858	   877
	  2559	  3010	  3282	  3376	  3445	  3501	  3517	  3526	  3541	  3604	  3607	  3788	  3816	  3821
	  3824	  4210	  4226	  4234	  4250	  4303	  4470	  4477	  4746	  4747	  4749	  4775	  5520	  6099
T1	   290	   291	   292	   299	   300	   301	   302	   303	   304	   305	   309	   310	   317	   327
	   328	   329	   337	   338	   339	   340	   341	   342	   343	   347	   348	   362	   375	   385
	   404	   418	   421	   425	   430	   438	   442	   443	   479	   484	   516	   518	   523	   524
	   534	   535	   567	   569	   570	   583	   584	   590	   591	   615	   616	   626	   643	   646
	   648	   657	   660	   667	   674	   692	   694	   696	   697	   699	   700	   704	   711	   722
	   750	   753	   754	   755	   756	   757	   759	   760	   762	   763	   780	   784	   809	   811
	   826	   829	   830	   831	   832	   833	   834	   841	   844	   845	   846	   847	   848	   849
	   856	   867	   875	   885	   895	   896	   897	   898	   901	   902	   913	   914	   917	   918
	   919	   926	   941	   946	   947	   949	   950	   986	   996	   997	   998	  1004	  1005	  1009
	  1010	  1018	  1019	  1024	  1026	  1027	  1042	  1060	  1068	  1069	  1096	  1099	  1100	  1104
	  1105	  1112	  1115	  1123	  1124	  1125	  1128	  1147	  1149	  1150	  1155	  1156	  1158	  1163
	  1167	  1174	  1179	  1188	  1191	  1192	  1204	  1205	  1249	  1264	  1267	  1271	  1273	  1280
	  1281	  1282	  1290	  1292	  1294	  1295	  1296	  1314	  1334	  1343	  1347	  1365	  1368	  1382
	  1412	  1413	  1414	  1415	  1417	  1419	  1421	  1424	  1430	  1431	  1434	  1440	  1454	  1455
	  1476	  1477	  1481	  1486	  1492	  1493	  1494	  1521	  1522	  1526	  1528	  1535	  1536	  1537
	  1538	  1542	  1543	  1549	  1555	  1567	  1568	  1571	  1572	  1577	  1580	  1582	  1584	  1590
	  1592	  1606	  1621	  1622	  1623	  1625	  1635	  1639	  1642	  1644	  1651	  1652	  1655	  1663
	  1665	  1681	  1695	  1696	  1700	  1701	  1709	  1715	  1723	  1724	  1727	  1728	  1740	  1752
	  1763	  1764	  1773	  1806	  1811	  1812	  1816	  1817	  1821	  1822	  1825	  1827	  1828	  1843
	  1848	  1852	  1853	  1854	  1855	  1861	  1867	  1870	  1873	  1876	  1880	  1885	  1887	  1890
	  1894	  1895	  1896	  1897	  1899	  1902	  1903	  1910	  1911	  1913	  1919	  1921	  1924	  1926
	  1933	  1939	  1941	  1949	  1958	  1965	  1967	  1968	  1970	  1972	  1973	  1975	  1977	  1978
	  1981	  1984	  1987	  1990	  1995	  1997	  1999	  2007	  2017	  2029	  2054	  2055	  2063	  2064
	  2065	  2066	  2067	  2068	  2069	  2071	  2074	  2075	  2076	  2077	  2078	  2079	  2082	  2083
	  2084	  2086	  2088	  2089	  2101	  2105	  2106	  2111	  2112	  2113	  2117	  2118	  2119	  2121
	  2131	  2141	  2144	  2146	  2148	  2168	  2169	  2204	  2209	  2213	  2215	  2216	  2219	  2223
	  2227	  2229	  2234	  2237	  2240	  2243	  2244	  2253	  2257	  2266	  2269	  2274	  2298	  2304
	  2305	  2308	  2314	  2317	  2318	  2319	  2320	  2322	  2337	  2340	  2346	  2355	  2360	  2365
	  2381	  2384	  2387	  2453	  2463	  2487	  2496	  2509	  2531	  2533	  2535	  2553	  2565	  2568
	  2570	  2575	  2576	  2580	  2583	  2584	  2597	  2602	  2621	  2657	  2686	  2687	  2737	  2749
	  2756	  2764	  2766	  2767	  2799	  2800	  2803	  2814	  2817	  2820	  2823	  2831	  2834	  2836
	  2838	  2849	  2856	  2862	  2865	  2868	  2877	  2878	  2899	  2900	  2908	  2909	  2919	  2920
	  2929	  2930	  2932	  2960	  2961	  2962	  2964	  2976	  2980	  2981	  2997	  3011	  3013	  3031
	  3036	  3037	  3043	  3045	  3060	  3061	  3084	  3110	  3113	  3115	  3116	  3119	  3120	  3122
	  3123	  3124	  3129	  3133	  3136	  3147	  3162	  3165	  3171	  3173	  3183	  3186	  3189	  3194
	  3210	  3215	  3227	  3238	  3242	  3249	  3265	  3324	  3326	  3333	  3334	  3343	  3345	  3348
	  3353	  3354	  3357	  3362	  3368	  3379	  3390	  3403	  3404	  3406	  3407	  3428	  3430	  3440
	  3450	  3454	  3468	  3471	  3472	  3474	  3475	  3476	  3497	  3502	  3505	  3512	  3516	  3520
	  3525	  3528	  3531	  3534	  3535	  3544	  3548	  3559	  3568	  3570	  3573	  3580	  3581	  3585
	  3586	  3594	  3598	  3600	  3617	  3618	  3626	  3627	  3629	  3630	  3631	  3640	  3643	  3644
	  3647	  3648	  3674	  3700	  3702	  3704	  3708	  3720	  3724	  3725	  3726	  3732	  3733	  3734
	  3735	  3740	  3752	  3757	  3760	  3761	  3765	  3768	  3780	  3781	  3782	  3792	  3793	  3814
	  3815	  3822	  3834	  3837	  3838	  3840	  3841	  3842	  3855	  3857	  3872	  3873	  3880	  3881
	  3882	  3884	  3885	  3887	  3889	  3900	  3911	  3920	  3921	  3930	  3939	  3949	  3951	  3960
	  3961	  3970	  3980	  3987	  3996	  4008	  4009	  4012	  4015	  4017	  4025	  4029	  4030	  4032
	  4034	  4038	  4046	  4048	  4049	  4050	  4052	  4055	  4056	  4067	  4069	  4079	  4080	  4092
	  4093	  4097	  4099	  4100	  4111	  4120	  4122	  4142	  4145	  4153	  4183	  4184	  4202	  4205
	  4208	  4209	  4216	  4218	  4221	  4222	  4224	  4246	  4251	  4266	  4269	  4270	  4271	  4272
	  4273	  4274	  4276	  4278	  4281	  4284	  4287	  4292	  4294	  4297	  4301	  4302	  4313	  4314
	  4316	  4326	  4329	  4330	  4338	  4339	  4340	  4345	  4368	  4375	  4378	  4402	  4406	  4407
	  4408	  4411	  4414	  4416	  4421	  4425	  4426	  4428	  4430	  4431	  4433	  4435	  4436	  4440
	  4478	  4481	  4483	  4496	  4497	  4500	  4501	  4504	  4505	  4506	  4520	  4521	  4523	  4530
	  4531	  4659	  4666	  4715	  4716	  4723	  4724	  4740	  4757	  4758	  4761	  4764	  4767	  4768
	  4772	  4773	  4774	  4778	  4781	  4815	  4816	  4825	  4826	  4833	  4838	  4841	  4844	  4845
	  4847	  4848	  4849	  4899	  4900	  4905	  4936	  4937	  4939	  4966	  4967	  4969	  4970	  4974
	  4975	  4981	  4983	  4991	  4994	  4995	  5021	  5022	  5024	  5032	  5034	  5035	  5040	  5041
	  5042	  5048	  5049	  5051	  5052	  5056	  5057	  5058	  5069	  5074	  5082	  5085	  5088	  5090
	  5095	  5098	  5099	  5100	  5111	  5192	  5204	  5205	  5207	  5209	  5211	  5214	  5217	  5220
	  5223	  5224	  5227	  5228	  5233	  5244	  5248	  5252	  5253	  5260	  5264	  5269	  5276	  5278
	  5281	  5282	  5303	  5308	  5311	  5313	  5317	  5322	  5324	  5331	  5332	  5335	  5336	  5337
	  5339	  5346	  5349	  5351	  5352	  5353	  5373	  5378	  5393	  5405	  5412	  5418	  5421	  5429
	  5439	  5441	  5446	  5447	  5448	  5449	  5454	  5456	  5476	  5485	  5486	  5487	  5494	  5496
	  5509	  5511	  5513	  5517	  5529	  5531	  5533	  5535	  5546	  5547	  5577	  5579	  5580	  5589
	  5597	  5603	  5607	  5608	  5623	  5646	  5648	  5654	  5656	  5666	  5667	  5670	  5673	  5674
	  5685	  5698	  5699	  5702	  5707	  5710	  5712	  5713	  5714	  5723	  5734	  5745	  5775	  5786
	  5787	  5796	  5820	  5830	  5836	  5840	  5845	  5849	  5856	  5864	  5866	  5867	  5873	  5876
	  5878	  5884	  5886	  5889	  5890	  5892	  5899	  5914	  5919	  5920	  5921	  5924	  5925	  5927
	  5933	  5937	  5943	  5944	  5945	  5951	  5970	  5982	  5985	  5998	  6009	  6014	  6015	  6016
	  6019	  6022	  6023	  6026	  6032	  6033	  6034	  6045	  6047	  6052	  6053	  6056	  6057	  6066
	  6068	  6072	  6073	  6075	  6076	  6079	  6082	  6083	  6095	  6100	  6102	  6122	  6126	  6127
	  6259	  6261	  6264	  6266	  6278	  6280	  6293	  6326	  6328	  6330	  6335	  6336	  6340	  6347
	  6348	  6369	  6374	  6375	  6383	  6386	  6409	  6411	  6413	  6415	  6416	  6417	  6419	  6422
	  6423	  6425	  6428	  6429	  6437	  6438	  6439	  6440	  6446	  6448	  6449	  6458	  6467	  6475
	  6494	  6496	  6497	  6499	  6512	  6538	  6553	  6555	  6563	  6564	  6567	  6572	  6583	  6607
	  6610	  6612	  6615	  6619	  6635	  6636	  6644	  6655	  6656	  6657	  6659	  6661	  6663	  6669
	  6671	  6672	  6674	  6678	  6684	  6687	  6688	  6701	  6705	  6744	  6753	  6756	  6757	  6758
	  6759	  6762	  6787	  6788	  6791	  6792	  6794	  6795	  6796	  6831	  6832	  6834	  6835	  6836
	  6837	  6841	  6842	  6843	  6853	  6857	  6860	  6861	  6863	  6864	  6865	  6886	  6887	  6904
	  6909	  6910	  6914	  6917	  6918	  6920	  6921	  6922	  6926	  6929	  6932	  6950	  6952	  6961
	  6963	  6965	  6969	  6984	  6985	  6986	  6991	  6993	  6994	  7015	  7021	  7044	  7045	  7074
	  7077	  7078	  7083	  7084	  7086	  7088	  7090	  7095	  7098	  7109	  7112	  7113	  7114	  7116
	  7128	  7129	  7130	  7132	  7133	  7146	  7149	  7164	  7166	  7176	  7177	  7180	  7181	  7199
	  7200	  7214	  7218	  7221	  7246	  7249	  7250	  7267	  7268	  7269	  7271	  7299	  7300	  7306
	  7311	  7313	  7319	  7344	  7345	  7353	  7365	  7366	  7368	  7372	  7374	  7384	  7385	  7394
	  7395	  7401	  7402	  7404	  7405	  7406	  7408	  7420	  7427	  7428	  7429	  7431	  7433	  7434
	  7448	  7454	  7455	  7456	  7457	  7458	  7464	  7465	  7467	  7468	  7469	  7471	  7472	  7479
	  7481	  7483	  7485	  7489	  7491	  7493	  7495	  7509	  7511	  7512	  7516	  7523	  7524	  7533
	  7534	  7536	  7543	  7544	  7546	  7557	  7558	  7559	  7573	  7574	  7583	  7584	  7585	  7587
	  7588	  7592	  7593	  7620	  7621	  7622	  7639	  7640	  7642	  7647	  7664	  7665	  7666	  7667
	  7693	  7711	  7718	  7719	  7721	  7722	  7723	  7737	  7738
T2	   459	   480	   571	   609	   610	   611	   613	   617	   642	   645	   646	   647	   648	   657
	   668	   669	   675	   715	   718	   719	   720	   753	   795	   798	   801	   861	   869	   870
	   880	   920	   927	   929	   930	   951	   984	   985	   991	  1003	  1005	  1025	  1026	  1041
	  1061	  1064	  1101	  1107	  1113	  1156	  1157	  1158	  1159	  1165	  1166	  1167	  1175	  1177
	  1186	  1187	  1204	  1208	  1289	  1290	  1291	  1335	  1368	  1369	  1383	  1423	  1425	  1427
	  1430	  1435	  1476	  1479	  1487	  1488	  1489	  1490	  1493	  1523	  1538	  1540	  1549	  1550
	  1553	  1554	  1555	  1573	  1578	  1581	  1582	  1590	  1591	  1607	  1624	  1625	  1635	  1636
	  1637	  1642	  1643	  1652	  1653	  1654	  1655	  1666	  1683	  1752	  1807	  1808	  1809	  1813
	  1820	  1821	  1822	  1837	  1839	  1845	  1846	  1847	  1851	  1852	  1855	  1856	  1877	  1881
	  1893	  1895	  1933	  1934	  1937	  1939	  1940	  1950	  1953	  1955	  1959	  1961	  1962	  1968
	  1969	  1970	  1973	  1974	  1975	  1979	  1982	  1985	  1990	  1995	  1997	  2000	  2007	  2043
	  2044	  2046	  2047	  2048	  2050	  2069	  2070	  2074	  2076	  2084	  2085	  2086	  2087	  2102
	  2103	  2104	  2110	  2114	  2115	  2116	  2117	  2119	  2120	  2121	  2132	  2140	  2141	  2143
	  2146	  2148	  2161	  2165	  2167	  2171	  2178	  2179	  2210	  2212	  2220	  2224	  2227	  2228
	  2230	  2253	  2255	  2258	  2299	  2309	  2323	  2333	  2335	  2342	  2344	  2351	  2353	  2361
	  2364	  2365	  2367	  2382	  2385	  2389	  2390	  2391	  2394	  2398	  2401	  2404	  2411	  2419
	  2422	  2429	  2430	  2432	  2433	  2449	  2450	  2458	  2464	  2475	  2476	  2478	  2484	  2485
	  2486	  2493	  2510	  2527	  2528	  2530	  2531	  2533	  2537	  2550	  2552	  2555	  2557	  2563
	  2564	  2565	  2566	  2567	  2571	  2572	  2574	  2575	  2578	  2582	  2593	  2596	  2600	  2606
	  2613	  2618	  2619	  2624	  2625	  2640	  2643	  2654	  2659	  2662	  2663	  2686	  2696	  2720
	  2738	  2739	  2740	  2756	  2766	  2769	  2780	  2803	  2804	  2806	  2808	  2809	  2811	  2812
	  2834	  2835	  2838	  2839	  2849	  2856	  2865	  2866	  2868	  2869	  2877	  2882	  2899	  2907
	  2908	  2918	  2919	  2928	  2929	  2941	  2942	  2944	  2945	  2947	  2949	  2950	  2951	  2960
	  2987	  2991	  2995	  3032	  3036	  3039	  3045	  3046	  3054	  3057	  3060	  3068	  3069	  3079
	  3103	  3120	  3121	  3123	  3125	  3126	  3129	  3130	  3131	  3132	  3133	  3147	  3148	  3149
	  3150	  3151	  3165	  3166	  3167	  3171	  3172	  3173	  3176	  3177	  3187	  3192	  3194	  3209
	  3210	  3215	  3216	  3218	  3220	  3222	  3223	  3224	  3232	  3237	  3238	  3241	  3242	  3249
	  3250	  3253	  3265	  3266	  3275	  3279	  3302	  3334	  3335	  3341	  3347	  3350	  3361	  3365
	  3368	  3369	  3371	  3383	  3390	  3391	  3392	  3429	  3430	  3434	  3440	  3453	  3454	  3472
	  3473	  3475	  3477	  3480	  3486	  3489	  3519	  3529	  3543	  3572	  3576	  3577	  3578	  3583
	  3584	  3595	  3596	  3601	  3627	  3628	  3630	  3633	  3634	  3635	  3640	  3641	  3643	  3649
	  3651	  3654	  3663	  3668	  3673	  3696	  3700	  3701	  3702	  3703	  3704	  3705	  3706	  3728
	  3741	  3753	  3759	  3760	  3762	  3763	  3770	  3775	  3782	  3789	  3790	  3791	  3792	  3802
	  3838	  3839	  3841	  3843	  3847	  3850	  3886	  3887	  3888	  3889	  3897	  3900	  3901	  3902
	  3908	  3920	  3922	  3939	  3940	  3941	  3957	  3960	  3962	  3977	  3980	  3981	  4012	  4015
	  4016	  4019	  4030	  4034	  4050	  4056	  4057	  4060	  4067	  4080	  4081	  4084	  4085	  4093
	  4094	  4112	  4113	  4115	  4117	  4130	  4141	  4142	  4144	  4145	  4152	  4153	  4168	  4170
	  4172	  4175	  4181	  4182	  4184	  4185	  4186	  4194	  4205	  4206	  4213	  4216	  4284	  4285
	  4288	  4293	  4295	  4319	  4321	  4322	  4324	  4325	  4330	  4331	  4334	  4335	  4347	  4369
	  4375	  4377	  4383	  4385	  4389	  4402	  4403	  4404	  4416	  4417	  4422	  4424	  4426	  4427
	  4429	  4431	  4441	  4454	  4455	  4497	  4498	  4521	  4525	  4527	  4528	  4658	  4659	  4758
	  4759	  4762	  4766	  4767	  4782	  4826	  4827	  4828	  4845	  4846	  4859	  4860	  4862	  4864
	  4865	  4875	  4877	  4878	  4879	  4905	  4914	  4915	  4920	  4921	  4925	  4931	  4934	  4935
	  4938	  4942	  4943	  4947	  4950	  4952	  4953	  4957	  4971	  4996	  5023	  5051	  5053	  5054
	  5055	  5056	  5059	  5063	  5064	  5065	  5066	  5067	  5070	  5082	  5083	  5090	  5091	  5098
	  5101	  5107	  5125	  5128	  5132	  5133	  5134	  5136	  5139	  5140	  5156	  5157	  5159	  5162
	  5163	  5169	  5172	  5184	  5185	  5186	  5190	  5193	  5203	  5204	  5206	  5207	  5208	  5209
	  5213	  5218	  5219	  5220	  5222	  5223	  5225	  5231	  5240	  5241	  5242	  5252	  5257	  5258
	  5264	  5275	  5276	  5279	  5281	  5293	  5296	  5302	  5303	  5304	  5309	  5310	  5314	  5315
	  5320	  5321	  5322	  5323	  5324	  5335	  5349	  5350	  5374	  5406	  5410	  5421	  5422	  5428
	  5429	  5431	  5445	  5446	  5452	  5454	  5455	  5456	  5462	  5475	  5478	  5493	  5494	  5536
	  5539	  5547	  5548	  5554	  5556	  5557	  5558	  5560	  5564	  5565	  5570	  5571	  5587	  5588
	  5590	  5595	  5606	  5607	  5608	  5609	  5625	  5634	  5638	  5645	  5646	  5647	  5648	  5653
	  5654	  5655	  5656	  5665	  5666	  5685	  5686	  5710	  5711	  5721	  5722	  5724	  5734	  5735
	  5753	  5754	  5755	  5776	  5779	  5787	  5788	  5794	  5812	  5819	  5823	  5836	  5843	  5844
	  5845	  5860	  5861	  5863	  5868	  5871	  5873	  5874	  5876	  5880	  5885	  5886	  5887	  5888
	  5944	  5949	  5955	  5962	  5963	  5971	  5999	  6007	  6008	  6016	  6017	  6022	  6048	  6080
	  6081	  6084	  6092	  6093	  6101	  6102	  6126	  6129	  6141	  6142	  6145	  6146	  6156	  6157
	  6159	  6162	  6163	  6164	  6166	  6167	  6171	  6172	  6174	  6175	  6176	  6187	  6188	  6189
	  6192	  6193	  6201	  6203	  6204	  6207	  6217	  6218	  6221	  6232	  6233	  6234	  6236	  6237
	  6239	  6242	  6245	  6260	  6270	  6271	  6274	  6275	  6276	  6277	  6282	  6283	  6290	  6291
	  6317	  6327	  6329	  6334	  6337	  6338	  6366	  6367	  6371	  6374	  6381	  6396	  6407	  6417
	  6429	  6430	  6437	  6438	  6469	  6470	  6473	  6474	  6534	  6535	  6536	  6573	  6594	  6595
	  6598	  6599	  6600	  6619	  6620	  6630	  6632	  6640	  6645	  6646	  6657	  6659	  6661	  6663
	  6669	  6670	  6672	  6673	  6744	  6757	  6760	  6761	  6762	  6763	  6766	  6769	  6770	  6772
	  6792	  6793	  6796	  6797	  6799	  6805	  6807	  6809	  6811	  6813	  6815	  6817	  6819	  6821
	  6823	  6825	  6827	  6829	  6861	  6862	  6865	  6869	  6871	  6878	  6884	  6909	  6911	  6912
	  6918	  6919	  6921	  6923	  6926	  6927	  6928	  6929	  6931	  6936	  6939	  6941	  6943	  6951
	  6957	  6961	  6964	  6984	  6987	  6990	  6991	  6992	  6993	  7115	  7129	  7146	  7148	  7154
	  7163	  7165	  7176	  7178	  7179	  7184	  7185	  7187	  7189	  7190	  7198	  7200	  7202	  7204
	  7215	  7221	  7222	  7224	  7226	  7228	  7232	  7234	  7238	  7250	  7251	  7252	  7305	  7306
	  7307	  7318	  7319	  7320	  7322	  7328	  7329	  7330	  7331	  7333	  7338	  7340	  7347	  7348
	  7349	  7350	  7354	  7370	  7371	  7375	  7383	  7385	  7400	  7401	  7404	  7409	  7426	  7439
	  7443	  7444	  7446	  7448	  7450	  7451	  7465	  7466	  7476	  7477	  7478	  7480	  7481	  7482
	  7483	  7484	  7485	  7490	  7491	  7492	  7493	  7494	  7495	  7506	  7508	  7517	  7518	  7525
	  7526	  7528	  7532	  7535	  7537	  7561	  7562	  7563	  7572	  7619	  7620	  7621	  7623	  7643
	  7693	  7694	  7695	  7698	  7710	  7712	  7737	  7743
T3	   419	   438	   439	   440	   441	   445	   458	   462	   463	   464	   481	   485	   486	   508
	   519	   520	   526	   527	   529	   532	   563	   565	   568	   571	   575	   657	   670	   676
	   677	   716	   717	   719	   721	   779	   786	   818	   952	   973	   974	  1102	  1106	  1114
	  1115	  1147	  1148	  1149	  1157	  1159	  1329	  1380	  1406	  1410	  1415	  1416	  1418	  1521
	  1531	  1532	  1574	  1611	  1612	  1685	  1740	  1787	  1789	  1791	  1811	  1840	  1841	  1846
	  1847	  1862	  1864	  1866	  1867	  1878	  1898	  1899	  1900	  1955	  1958	  2025	  2029	  2031
	  2032	  2033	  2044	  2046	  2103	  2108	  2109	  2110	  2143	  2145	  2159	  2160	  2162	  2164
	  2165	  2178	  2221	  2300	  2301	  2306	  2346	  2355	  2387	  2388	  2392	  2399	  2402	  2412
	  2414	  2420	  2423	  2451	  2454	  2459	  2461	  2480	  2482	  2494	  2511	  2512	  2514	  2517
	  2559	  2560	  2561	  2562	  2566	  2567	  2574	  2602	  2604	  2615	  2639	  2655	  2673	  2706
	  2718	  2719	  2721	  2723	  2735	  2736	  2737	  2745	  2747	  2748	  2775	  2776	  2777	  2778
	  2783	  2785	  2786	  2799	  2802	  2805	  2807	  2810	  2813	  2815	  2819	  2821	  2825	  2878
	  2879	  2881	  2883	  2884	  2885	  2886	  2889	  2891	  2900	  2909	  2910	  2989	  2993	  3033
	  3040	  3049	  3050	  3051	  3052	  3053	  3062	  3077	  3083	  3104	  3138	  3139	  3140	  3141
	  3142	  3153	  3174	  3175	  3177	  3179	  3182	  3189	  3190	  3252	  3274	  3303	  3304	  3312
	  3313	  3316	  3343	  3346	  3347	  3372	  3431	  3433	  3482	  3483	  3485	  3486	  3487	  3502
	  3503	  3507	  3508	  3511	  3514	  3521	  3522	  3524	  3532	  3545	  3546	  3571	  3572	  3575
	  3612	  3614	  3615	  3616	  3617	  3632	  3634	  3637	  3645	  3650	  3651	  3665	  3674	  3695
	  3696	  3699	  3701	  3706	  3720	  3729	  3738	  3761	  3762	  3765	  3766	  3772	  3807	  3846
	  3847	  3848	  3863	  3921	  3922	  4016	  4017	  4019	  4020	  4026	  4028	  4035	  4047	  4055
	  4065	  4075	  4076	  4077	  4095	  4113	  4114	  4115	  4116	  4133	  4135	  4147	  4167	  4168
	  4169	  4170	  4171	  4177	  4181	  4186	  4187	  4188	  4189	  4190	  4191	  4195	  4256	  4273
	  4289	  4313	  4318	  4320	  4323	  4370	  4377	  4381	  4383	  4384	  4385	  4386	  4399	  4420
	  4427	  4428	  4429	  4430	  4439	  4449	  4451	  4456	  4478	  4479	  4499	  4522	  4835	  4837
	  4839	  4869	  4876	  4877	  4879	  4880	  4926	  4927	  4959	  4960	  4961	  4997	  5022	  5023
	  5060	  5150	  5176	  5215	  5230	  5244	  5248	  5253	  5260	  5305	  5306	  5307	  5317	  5318
	  5345	  5449	  5477	  5495	  5496	  5514	  5515	  5516	  5517	  5518	  5530	  5531	  5532	  5533
	  5591	  5603	  5663	  5664	  5667	  5706	  5813	  5818	  5819	  5820	  5821	  5822	  5823	  5824
	  5825	  5826	  5868	  5872	  5878	  5879	  5881	  5945	  5950	  5954	  5955	  5956	  5972	  6000
	  6005	  6006	  6015	  6017	  6021	  6049	  6097	  6109	  6111	  6113	  6125	  6156	  6157	  6198
	  6218	  6219	  6220	  6223	  6259	  6260	  6273	  6301	  6318	  6326	  6327	  6328	  6329	  6334
	  6348	  6371	  6372	  6386	  6387	  6407	  6408	  6411	  6412	  6414	  6422	  6424	  6426	  6428
	  6430	  6468	  6484	  6485	  6487	  6488	  6489	  6490	  6491	  6519	  6520	  6521	  6524	  6525
	  6526	  6541	  6542	  6544	  6545	  6546	  6547	  6550	  6551	  6553	  6554	  6564	  6565	  6567
	  6568	  6569	  6593	  6594	  6595	  6599	  6615	  6616	  6617	  6636	  6637	  6638	  6640	  6641
	  6745	  6764	  6765	  6801	  6803	  6830	  6831	  6832	  6877	  6878	  6885	  6886	  6887	  6910
	  6911	  6933	  6934	  6937	  6938	  6958	  6960	  7148	  7152	  7154	  7163	  7164	  7165	  7166
	  7225	  7226	  7227	  7228	  7320	  7339	  7340	  7348	  7350	  7354	  7359	  7360	  7371	  7372
	  7375	  7410	  7426	  7427	  7446	  7447	  7476	  7478	  7479	  7489	  7520	  7529	  7535	  7536
	  7563	  7564	  7566	  7569	  7570	  7589	  7590	  7591	  7597	  7624	  7625	  7628	  7630	  7633
	  7644	  7645	  7649	  7653	  7656	  7659	  7660	  7661	  7662	  7663	  7671	  7695	  7698
T4	   460	   482	   510	   511	   512	   513	   577	   578	   579	   580	   603	   604	   618	   657
	   671	   678	   717	   718	   948	   949	  1151	  1165	  1166	  1174	  1176	  1177	  1186	  1187
	  1191	  1257	  1267	  1268	  1272	  1273	  1304	  1305	  1407	  1527	  1549	  1608	  1609	  1610
	  1681	  1682	  1683	  1684	  1773	  1838	  1839	  1865	  1935	  1936	  1937	  2024	  2031	  2045
	  2050	  2109	  2113	  2144	  2145	  2169	  2170	  2173	  2174	  2302	  2407	  2409	  2410	  2426
	  2428	  2431	  2452	  2513	  2514	  2570	  2571	  2572	  2663	  2673	  2674	  2735	  2739	  2781
	  2782	  2783	  2786	  2888	  2889	  2980	  2982	  2994	  3046	  3047	  3048	  3054	  3057	  3063
	  3076	  3078	  3105	  3108	  3109	  3137	  3146	  3175	  3176	  3254	  3276	  3280	  3298	  3299
	  3300	  3301	  3305	  3306	  3307	  3308	  3310	  3315	  3435	  3436	  3441	  3614	  3615	  3638
	  3645	  3652	  3653	  3654	  3662	  3672	  3676	  3708	  3719	  3725	  3736	  3741	  3768	  3769
	  3773	  4046	  4047	  4065	  4066	  4071	  4072	  4074	  4075	  4079	  4081	  4083	  4085	  4130
	  4134	  4148	  4183	  4184	  4187	  4317	  4318	  4378	  4379	  4380	  4381	  4396	  4397	  4398
	  4401	  4415	  4420	  4450	  4451	  4452	  4457	  4464	  4656	  4658	  4661	  4666	  4792	  4802
	  4838	  4839	  4870	  4878	  4887	  4928	  4954	  4958	  4962	  5136	  5142	  5144	  5151	  5159
	  5166	  5174	  5177	  5245	  5249	  5254	  5261	  5308	  5309	  5310	  5313	  5314	  5315	  5352
	  5354	  5387	  5388	  5389	  5450	  5507	  5508	  5509	  5510	  5511	  5512	  5513	  5514	  5525
	  5604	  5713	  5715	  5768	  5769	  5771	  5790	  5791	  5837	  5838	  5948	  5951	  5954	  5956
	  5964	  5965	  6004	  6005	  6014	  6024	  6025	  6026	  6027	  6072	  6074	  6078	  6079	  6080
	  6081	  6083	  6085	  6096	  6110	  6111	  6112	  6113	  6164	  6167	  6173	  6189	  6190	  6191
	  6198	  6202	  6206	  6207	  6292	  6293	  6368	  6369	  6413	  6414	  6494	  6520	  6522	  6527
	  6593	  6597	  6598	  6876	  6880	  6930	  6931	  6932	  6934	  7033	  7034	  7036	  7039	  7041
	  7057	  7058	  7059	  7114	  7117	  7128	  7131	  7149	  7150	  7151	  7152	  7271	  7272	  7357
	  7438	  7444	  7452	  7454	  7456	  7505	  7506	  7509	  7556	  7557	  7558	  7560	  7569	  7574
	  7625	  7627	  7628	  7650	  7651	  7654	  7657
TDSLLB	  5696
TDSSTS	  5696
TELDAT	  5973	  5996#
TELDIS	  5659	  5676	  5695#
TELINT	  2959	  2976#
TELOBE	  7087	  7127#
TELOOK	  7089	  7109#
TIMWAT	  3470	  3789#	  6755	  6916
TL%EXM	   991	  1064	  1208	  1479	  7743
TLDCNT	  5996
TLDFLG	  5996
TLDLLB	  5996
TLDT10	  6006	  6010	  6014#
TMSLLB	  6043
TODCLK	  2114	  3789	  4816	  7057
TRNM10	  6047#
TRNMSG	  5939	  6043#
TSKBLK	  1565
TSKCHK	  1880	  1932#
TSKINI	   927	  4715#
TSKLOK	  1577	  1589#
TSKMAX	   276#	   591
TTGETS	  7144#
TTREMS	  7163#
TTSETH	   787
TURNON	  3879	  5438	  6122#
TWOBYT	  2532	  2538	  2585	  2695#	  3134	  3481	  3707	  6771	  6810	  6812	  6814	  6935
ULKPIP	  1378#
ULKRET	  2992	  3010#
ULLCZQ	  4753	  4757	  4759	  4766	  4768	  4801
ULOKLL	   703	  1225#	  1251	  1252	  1337	  1349	  1351	  1385	  1391	  1826	  1831	  1872	  1889	  1923
	  2247	  2268	  2366	  3400	  5072	  5094	  5097	  5196	  5199	  5202	  5376	  5380	  5383	  5409
	  5414	  5417	  5538	  5542	  5545	  5594	  5599	  5602	  5727	  5730	  5733	  5778	  5782	  5785
	  6378	  6380	  6955	  6968
UMODF	  4715
UNLKF	   368
UNQSEG	  6495	  6519#
VERBDY	  4174	  4180	  4194#
VERIF	  4943
VERSEG	  4027	  4165#
VERSET	   289	   324	   402#
VERTYP	  6871
VFYNOD	  7720	  7735#
W1	   793	   793#	   794	   795	   798	   801	   814	  1311	  1311#	  1312	  1313	  1314	  1316	  1319
	  1605	  1605#	  1606	  1609	  1615	  2158	  2158#	  2164	  2166	  2172	  2184	  2201	  2201#	  2209
	  2212	  2219	  2234	  2237	  2240	  2244	  2245	  2246	  2254	  2258	  2266	  2269	  2279	  2292
	  2292#	  2298	  2305	  2308	  2320	  2321	  2322	  2337	  2338	  2340	  2360	  2371	  2446	  2446#
	  2453	  2455	  2467	  2468	  2495	  2496	  2500	  2508	  2508#	  2509	  2512	  2520	  2529	  2529#
	  2530	  2534	  2535	  2536	  2541	  2614	  2614#	  2615	  2624	  2633	  2638	  2638#	  2639	  2643
	  2646	  2653	  2653#	  2658	  2664	  2665	  2669	  2677	  2779	  2779#	  2780	  2781	  2789	  2880
	  2880#	  2882	  2888	  2895	  3028	  3028#	  3031	  3043	  3048	  3059	  3072	  3100	  3100#	  3119
	  3126	  3132	  3148	  3150	  3151	  3156	  3295	  3295#	  3313	  3314	  3319	  3323	  3323#	  3413
	  4005	  4005#	  4028	  4033	  4059	  4075	  4079	  4083	  4084	  4103	  5364	  5364#	  5378	  5384
	  5393	  5397	  6158	  6158#	  6159	  6172	  6175	  6179	  6464	  6464#	  6475	  6478	  6484	  6487
	  6497	  6499	  6501	  6502	  6505	  6506	  6507	  6519	  6524	  6538	  6540	  6541	  6544	  6564
	  6573	  6575	  6576	  6577	  6580	  6581	  6586	  7244	  7244#	  7245	  7256	  7259
W2	  1605	  1605#	  1607	  1608	  1615	  2292	  2292#	  2371	  2446	  2446#	  2456	  2469	  2472	  2474
	  2475	  2479	  2481	  2484	  2485	  2489	  2490	  2495	  2500	  2508	  2508#	  2510	  2513	  2520
	  2614	  2614#	  2621	  2626	  2633	  2638	  2638#	  2640	  2642	  2646	  2653	  2653#	  2654	  2668
	  2670	  2677	  2880	  2880#	  2881	  2890	  2895	  3295	  3295#	  3311	  3314	  3319	  3323	  3323#
	  3324	  3328	  3340	  3370	  3374	  3378	  3394	  3413	  4005	  4005#	  4060	  4066	  4071	  4103
	  6158	  6158#	  6166	  6176	  6179	  6464	  6464#	  6477	  6500	  6501	  6505	  6519	  6525	  6527
	  6537	  6575	  6576	  6586
W3	  2292	  2292#	  2371	  2446	  2446#	  2473	  2479	  2490	  2500	  2508	  2508#	  2511	  2516	  2520
	  2614	  2614#	  2619	  2626	  2630	  2633	  2653	  2653#	  2657	  2670	  2677	  3295	  3295#	  3303
	  3310	  3311	  3316	  3319	  4005	  4005#	  4072	  4073	  4103	  6464	  6464#	  6586
WAITER	  5046
WATBLK	  3329	  4204	  4234#
WPN	  7297	  7705
WRTF	   422	   606	   607	   629
WSEGSZ	  2578
$ACKCH	  6465#
$ACKNO	  6465#	  6700#
$ACKTY	  6700#
$ADHLD	   969#
$ADIBL	  1091#
$ADINB	  1091#
$ADIPT	  1091#
$ADIST	  1091#
$ADNAB	   969#
$ADNAD	   969#
$ADNST	   969#
$ASCCN	  2616#
$BLKF	   713#	   858#	   877#	  3010#	  3282#	  3376#	  3445#	  3517#	  3607#	  3788#	  4226#	  4234#	  4477#	  5520#
	  6099#
$CDIBU	  3424#
$CDICN	  3424#
$CDIFL	  3424#
$CDILL	  3424#
$CDIOP	  3425#
$CLNER	   690#
$CLRLL	  2061#
$CNFLN	  3870#
$CNTLL	  5329#
$CNTST	  5329#
$CPLCN	   456#
$CRLAT	  2293#
$CRLCI	  2293#
$CRLCN	  2293#
$CRLDS	  2293#
$CRLHS	  2293#
$CRLOB	  2293#
$DCCUR	   693#	  1836#	  1837#	  1874#	  1891#	  2265#	  3402#
$DCMAX	  1838#
$DEDDU	  5046#
$DEDPR	  5046#
$DELHL	  1145#
$DIFLG	  3465#
$DISRS	  3465#
$DIUDA	  3465#
$EOFF	  3824#
$ERRF	  3604#	  3816#	  3821#	  4210#	  4250#	  4470#
$FILAT	   675#	  2706#
$FILIN	   839#	  3501#	  3526#
$FILOU	   824#	  3541#
$FKNTC	  7457#	  7469#
$GNTCN	  7551#
$INAAT	  2379#
$INACN	  2379#
$INALL	  2379#
$INAPN	  2379#
$INDAD	  7504#
$INDBL	  7504#
$INDER	  7504#
$INDST	  7504#
$INOLL	  7070#
$INSCN	  5912#
$INSFL	  5912#
$INSLL	  5912#
$IOMOD	  2559#
$LASTM	  1408#
$LITCN	  7614#
$LKPCO	  1327#	  1378#
$LKPLL	  1327#
$LLACT	  1997#	  2086#	  2237#	  2856#	  5253#
$LLADD	  1565#
$LLBFI	  6022#	  6034#	  6066#	  6079#
$LLBFO	  7129#	  7133#
$LLBLK	  3465#	  6465#	  6700#
$LLBOM	  1896#	  3724#	  3725#	  3734#
$LLBPI	  5944#	  5951#	  6083#
$LLBRP	  3752#	  3996#	  5864#	  5866#	  6563#	  6610#
$LLBSZ	  1740#	  1899#	  3343#	  3640#	  4273#	  4313#	  4318#	  4416#	  5317#
$LLCIL	  5388#	  6705#
$LLDED	  5088#	  5099#
$LLDMT	  4029#	  4048#	  4434#	  6411#	  6422#
$LLDRB	  6068#	  6076#
$LLDRC	   757#	  2929#	  6439#
$LLDRV	  1368#	  2981#	  5353#	  5714#	  6023#	  6073#	  7116#	  7130#
$LLDRW	  2930#	  4024#	  6423#
$LLDSC	  1990#	  2219#	  2257#	  2258#	  5281#
$LLDSN	  3702#	  3704#
$LLDUM	  6785#	  6851#
$LLDWN	  1421#	  1542#	  1961#	  1973#	  2148#
$LLFDI	  1902#	  2576#	  2583#	  2814#	  4246#	  5670#	  5673#
$LLFDS	  1852#	  1984#	  2076#	  2308#	  2337#	  2338#	  2346#	  3189#	  3194#	  5224#	  5228#
$LLFEM	  1763#	  3353#	  3581#	  3586#	  3726#	  3732#
$LLFIM	  2817#	  3532#	  4221#	  4269#	  4297#	  4301#	  4406#	  4411#	  4436#	  5920#	  6009#	  6019#	  6026#	  6053#
$LLFLI	  1715#	  3512#	  3522#	  3949#	  4218#	  4266#	  4271#	  4339#
$LLFLO	  1709#	  1723#	  1727#	  3348#	  3546#
$LLFNA	  4099#	  4281#	  4528#	  4530#
$LLFNM	  2063#	  2305#	  3173#	  5223#
$LLFNN	  4009#	  4099#	  4523#	  4530#	  6415#
$LLFOB	  1528#	  1987#	  2079#	  2245#	  2800#	  2831#	  2862#	  3162#	  5418#
$LLFRK	   756#	  1933#	  2121#	  2227#	  2960#	  5335#	  5890#	  6438#
$LLHLK	  1424#	  2065#	  2531#	  5324#	  5511#	  5685#	  6375#	  6952#
$LLHO	  1408#
$LLHST	  1430#	  1847#	  2069#	  2496#	  2602#	  2766#	  5214#	  5509#
$LLICT	  5945#	  5954#	  5956#	  6005#	  6016#	  6033#	  6080#
$LLIDN	  4034#	  4093#	  4184#	  4378#	  4428#	  4521#	  7149#	  7164#
$LLIIC	  6015#	  6033#	  6081#
$LLIIN	  4183#	  5820#	  5836#	  6744#
$LLIMS	  2553#	  4049#	  4408#	  6127#
$LLINT	  1365#	  2580#	  2976#	  5332#	  5384#	  5577#	  5699#	  5796#	  5899#	  6383#	  6512#	  6969#	  7218#
$LLISN	  3129#	  3133#	  6926#	  6929#
$LLLNK	  1280#	  1415#	  1555#	  1949#	  1965#	  2119#	  2131#	  2143#	  2144#	  2533#	  3147#	  3780#	  5513#	  6328#
	  6374#
$LLLOC	  2455#	  2467#	  2568#	  2597#	  2767#	  5085#	  5211#	  5311#	  6261#	  6330#	  6458#	  6701#	  6904#
$LLLSA	  4500#	  4505#	  5580#	  6409#
$LLLSC	  4284#	  4330#	  4413#	  4497#	  4505#
$LLLWC	  2823#	  5447#
$LLMFC	  3720#	  3765#	  5303#	  5878#	  6553#	  6612#	  6636#
$LLMIC	  3113#	  3135#	  3889#	  5456#	  5873#	  5876#	  6961#
$LLMQI	   646#	  4046#	  6126#	  6413#
$LLMQO	   648#	  3761#	  3921#	  6910#
$LLMSG	  3466#
$LLMSM	  3739#	  3768#	  3930#	  3939#	  5884#	  5886#	  6555#	  6564#	  6567#	  6571#	  6615#	  6643#	  6963#
$LLNAM	  2212#	  2253#	  2254#	  5278#
$LLNDO	  7109#	  7112#
$LLOCT	  7026#	  7078#	  7084#
$LLOPI	  1695#	  6122#
$LLOPT	  1821#	  1828#	  1978#	  2899#	  5260#	  5449#	  5603#
$LLOPW	   643#	  1700#
$LLOUT	  2032#	  2046#	  2050#	  7019#	  7036#	  7037#	  7041#	  7045#
$LLPCT	  2088#	  2878#	  5252#
$LLPIC	   757#	  2908#	  5336#
$LLPII	   757#	  2919#	  2961#
$LLPRT	  2495#	  2570#	  5090#	  5220#	  5313#	  5517#	  6264#	  6293#	  6335#	  6369#	  6831#	  6886#
$LLPSW	  1999#	  2240#	  2877#	  5248#
$LLQOU	  3227#	  3362#	  3760#	  3920#	  3987#	  6347#	  6496#	  6655#	  6909#
$LLQUE	  2017#	  2054#	  7031#
$LLQUN	  3757#	  3970#	  6582#	  6607#	  6634#	  6655#
$LLRCT	  1264#	  1270#	  1290#	  1292#	  1295#	  3911#
$LLRFK	  1267#	  1273#	  1294#
$LLRSN	  2077#	  2799#	  3368#	  3390#	  3440#	  4145#	  5494#	  5648#	  5656#	  5666#
$LLSDE	  3379#	  5111#	  5623#	  5702#	  5745#
$LLSOB	  2083#	  2838#	  5207#
$LLSTA	  1549#	  1752#	  2244#	  2365#	  2535#	  2803#	  2834#	  2865#	  2868#	  2909#	  3165#	  3210#	  3215#	  3238#
	  3242#	  3249#	  3334#	  3430#	  3454#	  3502#	  3887#	  3900#	  3960#	  3980#	  4142#	  4153#	  4205#	  5082#
	  5098#	  5204#	  5421#	  5429#	  5446#	  5496#	  5547#	  5608#	  5646#	  5654#	  5667#	  5734#	  5787#	  6102#
	  6386#	  7221#
$LLSWG	  1773#	  2565#	  2575#	  3265#	  5308#	  5322#
$LLTRC	  5964#	  6085#
$LLTRM	  5937#	  5965#	  6027#	  6056#
$LLTRN	  3873#	  3881#	  3884#
$LLTSK	  1582#	  1590#	  1895#	  1939#	  1981#	  2355#	  2756#	  5276#
$LLTTY	  4758#	  4767#
$LLUCT	  2067#	  2900#	  5264#	  5454#	  5607#
$LLUPL	  1419#	  1535#	  1955#	  1959#	  1968#	  2146#
$LLUSR	  1995#	  2084#	  2234#	  2849#	  5244#
$LLVEC	  2980#	  5352#	  5713#	  6014#	  6072#	  7114#	  7128#
$LNKAD	  6465#
$LNKID	  1408#
$MBLOC	  3554#	  3693#
$MCBCL	  4751#
$MDPTR	  4445#
$MLODR	  3554#
$MSCNT	  4845#	  6260#	  6327#	  6334#	  6993#	  7180#
$MSDTC	  3046#	  3654#	  4113#	  4170#	  4383#	  5533#	  6113#	  7154#	  7226#
$MSGBL	  4109#	  4165#	  4721#	  6751#	  7174#
$MSGBY	  4109#	  4165#	  4364#	  4721#	  7174#
$MSGCN	  4109#	  4165#	  4364#	  4721#	  7174#
$MSGDD	  4721#
$MSGDM	  4721#
$MSGDS	  4721#	  7174#
$MSGFL	  2548#	  2594#
$MSGHS	  4721#
$MSGLC	  4721#
$MSGLL	  4006#	  4109#	  4721#
$MSGOB	  4721#
$MSGSD	  4721#
$MSGSG	  4165#
$MSGSO	  4721#
$MSGSR	  4721#	  7174#
$MSGW1	  4721#	  5046#
$MSGW2	  4721#
$MSIZE	  3554#
$MSLCL	  4833#	  4841#	  6290#	  6366#
$MSLLA	  3148#	  6329#	  6932#
$MSLNK	  4016#	  4057#	  4076#	  4081#	  4083#	  4084#	  4085#	  4429#	  4826#	  5844#	  6430#	  6501#	  6506#	  6519#
	  6524#	  6525#	  6576#	  6598#	  6600#	  6632#	  6672#	  7165#	  7250#
$MSMFL	  3126#	  3696#	  4019#	  4117#	  4403#	  4877#	  5306#	  5558#	  5571#	  6371#	  6407#	  6564#	  6640#	  7200#
$MSMS1	  6271#	  6274#
$MSNAK	  6580#	  6630#	  6645#
$MSPRT	  4838#	  4900#	  4915#	  5022#	  5185#	  5219#	  5516#	  6991#
$MSPST	  6337#	  6448#	  6674#	  6684#
$MSRLS	  6446#	  6687#
$MSSEG	  3132#	  3706#	  4060#	  4065#	  4186#	  4377#	  4427#	  5819#	  6487#	  6544#	  6931#	  7148#	  7163#
$MSTOM	  3150#	  3651#	  6484#	  6541#	  6934#
$MVMBF	  4366#
$MVMCN	  4366#
$MVMFL	  4366#
$MVMLL	  4366#
$MVMMA	  4366#
$MVNLL	  4090#
$MVSPT	  1679#
$NAKFL	  7174#
$NAMCN	  2481#	  4931#	  4966#
$NDVNO	  7705#
$NETCH	   855#
$NMVCN	  3296#
$NMVPT	  3296#
$NODMS	  6785#	  6851#
$NODNA	  7297#
$NODPR	  6785#	  6851#
$NSPNU	  4303#
$NSPSR	   197	   197#
$NTATB	  2164#
$NTATC	  2165#
$NTATE	  2178#
$NTATR	  2160#
$NTCCH	  1042#	  7448#	  7454#
$NTCFR	  1041#	  7446#	  7456#	  7465#
$NTCIB	   652#
$NTCNT	   363#	   376#	   386#	   652#	  2202#
$NTDDS	   363#
$NTDSC	   376#	   652#	  2202#
$NTDSS	   363#	   376#	   652#	  2202#
$NTHSC	   376#	   652#
$NTHST	   376#	   652#
$NTOBJ	   363#	   376#	   652#	  2202#
$NTPNT	   363#	   376#	   386#	   652#	  2202#
$NTRCB	  3180#
$OBELL	  7127#
$OBJPT	  1475#
$OPNF	   708#
$OPTDA	  3247#	  3272#
$PRFXL	  2721#
$PRFXV	  2719#
$PRTCN	  6983#
$PRTNO	  6983#
$RDICN	  3029#
$RDIPT	  3029#
$RDIRT	  3029#
$READF	   414#	   607#	   627#
$RMNNA	  1055#
$RNDF	   605#
$SAVAD	  2100#
$SAVBL	  1802#	  1948#	  2130#	  3833#
$SAVBS	  1802#
$SAVER	  1802#
$SAVFF	  6267#
$SAVLL	  3833#	  6258#
$SAVMS	  6258#
$SAVOP	  3833#
$SAVPS	  6267#
$SAVST	  1802#
$SBFLL	  6071#
$SIMCN	  3101#
$SIMLL	  3101#
$SIMPT	  3101#
$SIMRT	  3101#
$SNDLB	  6903#
$SNDLC	  6903#
$SNDLM	  6903#
$SNDLT	  6903#
$SNLBL	  6325#	  6360#
$SNMSG	  6325#	  6360#
$SNTBL	  7389#
$SNTCN	  7389#
$SQALL	  4518#
$SQICN	  4263#
$SQLLL	  4494#
$SSVDS	  2447#
$SSVHS	  2447#
$STEPF	   395#	   402#
$TDSLL	  5696#
$TDSST	  5696#
$TLDCN	  5996#
$TLDFL	  5996#
$TLDLL	  5996#
$TMSLL	  6043#
$TSKBL	  1565#
$UNLKF	   368#
$W1	   793#	  1311#	  1605#	  2158#	  2201#	  2292#	  2446#	  2508#	  2529#	  2614#	  2638#	  2653#	  2779#	  2880#
	  3028#	  3100#	  3295#	  3323#	  4005#	  5364#	  6158#	  6464#	  7244#
$W2	  1605#	  2292#	  2446#	  2508#	  2614#	  2638#	  2653#	  2880#	  3295#	  3323#	  4005#	  6158#	  6464#
$W3	  2292#	  2446#	  2508#	  2614#	  2653#	  3295#	  4005#	  6464#
$WAITE	  5046#
$WRTF	   422#	   606#	   607#	   629#
%BLKF	   713	   858	   877	  3010	  3282	  3376	  3445	  3517	  3607	  3788	  4226	  4234	  4477	  5520
	  6099
%CNTFL	  3310	  3311	  3486	  3487	  3488	  3847	  3848	  3849
%DCCUR	   693	  1836	  1837	  1874	  1891	  2265	  3402
%DCMAX	  1838
%EOFF	  3824
%ERRF	  3604	  3816	  3821	  4210	  4250	  4470
%FILAT	   675	  2706
%FILIN	   839	  3501	  3526
%FILOU	   824	  3541
%FKNTC	  7457	  7469
%INIRC	  4916	  4918	  4985	  4987	  5054
%INISN	  4990	  5054	  6835	  6837
%IOMOD	  2559
%LLACT	  1997	  2086	  2237	  2856	  5253
%LLBFI	  6022	  6034	  6066	  6079
%LLBFO	  7129	  7133
%LLBOM	  1896	  3724	  3725	  3734
%LLBPI	  5944	  5951	  6083
%LLBRP	  3752	  3996	  5864	  5866	  6563	  6610
%LLBSZ	  1740	  1899	  3343	  3640	  4273	  4313	  4318	  4416	  5317
%LLCIL	  5388	  6705
%LLDED	  5088	  5099
%LLDMT	  4029	  4048	  4434	  6411	  6422
%LLDRB	  6068	  6076
%LLDRC	   757	  2929	  6439
%LLDRV	  1368	  2981	  5353	  5714	  6023	  6073	  7116	  7130
%LLDRW	  2930	  4024	  6423
%LLDSC	  1990	  2219	  2257	  2258	  5281
%LLDSN	  3702	  3704
%LLDWN	  1421	  1542	  1961	  1973	  2148
%LLFDI	  1902	  2576	  2583	  2814	  4246	  5670	  5673
%LLFDS	  1852	  1984	  2076	  2308	  2337	  2338	  2346	  3189	  3194	  5224	  5228
%LLFEM	  1763	  3353	  3581	  3586	  3726	  3732
%LLFIM	  2817	  3532	  4221	  4269	  4297	  4301	  4406	  4411	  4436	  5920	  6009	  6019	  6026	  6053
%LLFLI	  1715	  3512	  3522	  3949	  4218	  4266	  4271	  4339
%LLFLO	  1709	  1723	  1727	  3348	  3546
%LLFNA	  4099	  4281	  4528	  4530
%LLFNM	  2063	  2305	  3173	  5223
%LLFNN	  4009	  4099	  4523	  4530	  6415
%LLFOB	  1528	  1987	  2079	  2245	  2800	  2831	  2862	  3162	  5418
%LLFRK	   756	  1933	  2121	  2227	  2960	  5335	  5890	  6438
%LLHLK	  1424	  2065	  2531	  5324	  5511	  5685	  6375	  6952
%LLHST	  1430	  1847	  2069	  2496	  2602	  2766	  5214	  5509
%LLICT	  5945	  5954	  5956	  6005	  6016	  6033	  6080
%LLIDN	  4034	  4093	  4184	  4378	  4428	  4521	  7149	  7164
%LLIIC	  6015	  6033	  6081
%LLIIN	  4183	  5820	  5836	  6744
%LLIMS	  2553	  4049	  4408	  6127
%LLINT	  1365	  2580	  2976	  5332	  5384	  5577	  5699	  5796	  5899	  6383	  6512	  6969	  7218
%LLISN	  3129	  3133	  6926	  6929
%LLLNK	  1280	  1415	  1555	  1949	  1965	  2119	  2131	  2143	  2144	  2533	  3147	  3780	  5513	  6328
	  6374
%LLLOC	  2455	  2467	  2568	  2597	  2767	  5085	  5211	  5311	  6261	  6330	  6458	  6701	  6904
%LLLSA	  4500	  4505	  5580	  6409
%LLLSC	  4284	  4330	  4413	  4497	  4505
%LLLWC	  2823	  5447
%LLMFC	  3720	  3765	  5303	  5878	  6553	  6612	  6636
%LLMIC	  3113	  3135	  3889	  5456	  5873	  5876	  6961
%LLMQI	   646	  4046	  6126	  6413
%LLMQO	   648	  3761	  3921	  6910
%LLMSM	  3739	  3768	  3930	  3939	  5884	  5886	  6555	  6564	  6567	  6571	  6615	  6643	  6963
%LLNAM	  2212	  2253	  2254	  5278
%LLNDO	  7109	  7112
%LLOCT	  7026	  7078	  7084
%LLOPI	  1695	  6122
%LLOPT	  1821	  1828	  1978	  2899	  5260	  5449	  5603
%LLOPW	   643	  1700
%LLOUT	  2032	  2046	  2050	  7019	  7036	  7037	  7041	  7045
%LLPCT	  2088	  2878	  5252
%LLPIC	   757	  2908	  5336
%LLPII	   757	  2919	  2961
%LLPRT	  2495	  2570	  5090	  5220	  5313	  5517	  6264	  6293	  6335	  6369	  6831	  6886
%LLPSW	  1999	  2240	  2877	  5248
%LLQOU	  3227	  3362	  3760	  3920	  3987	  6347	  6496	  6655	  6909
%LLQUE	  2017	  2054	  7031
%LLQUN	  3757	  3970	  6582	  6607	  6634	  6655
%LLRCT	  1264	  1270	  1290	  1292	  1295	  3911
%LLRFK	  1267	  1273	  1294
%LLRSN	  2077	  2799	  3368	  3390	  3440	  4145	  5494	  5648	  5656	  5666
%LLSDE	  3379	  5111	  5623	  5702	  5745
%LLSOB	  2083	  2838	  5207
%LLSTA	  1549	  1752	  2244	  2365	  2535	  2803	  2834	  2865	  2868	  2909	  3165	  3210	  3215	  3238
	  3242	  3249	  3334	  3430	  3454	  3502	  3887	  3900	  3960	  3980	  4142	  4153	  4205	  5082
	  5098	  5204	  5421	  5429	  5446	  5496	  5547	  5608	  5646	  5654	  5667	  5734	  5787	  6102
	  6386	  7221
%LLSWG	  1773	  2565	  2575	  3265	  5308	  5322
%LLTRC	  5964	  6085
%LLTRM	  5937	  5965	  6027	  6056
%LLTRN	  3873	  3881	  3884
%LLTSK	  1582	  1590	  1895	  1939	  1981	  2355	  2756	  5276
%LLTTY	  4758	  4767
%LLUCT	  2067	  2900	  5264	  5454	  5607
%LLUPL	  1419	  1535	  1955	  1959	  1968	  2146
%LLUSR	  1995	  2084	  2234	  2849	  5244
%LLVEC	  2980	  5352	  5713	  6014	  6072	  7114	  7128
%MO%CD	   795	   796
%MO%DA	   801	   802
%MO%IN	   798	   799
%MSCNT	  4845	  6260	  6327	  6334	  6993	  7180
%MSDTC	  3046	  3654	  4113	  4170	  4383	  5533	  6113	  7154	  7226
%MSLCL	  4833	  4841	  6290	  6366
%MSLLA	  3148	  6329	  6932
%MSLNK	  4016	  4057	  4076	  4081	  4083	  4084	  4085	  4429	  4826	  5844	  6430	  6501	  6506	  6519
	  6524	  6525	  6576	  6598	  6600	  6632	  6672	  7165	  7250
%MSMFL	  3126	  3696	  4019	  4117	  4403	  4877	  5306	  5558	  5571	  6371	  6407	  6564	  6640	  7200
%MSMS1	  6271	  6274
%MSNAK	  6580	  6630	  6645
%MSPRT	  4838	  4900	  4915	  5022	  5185	  5219	  5516	  6991
%MSPST	  6337	  6448	  6674	  6684
%MSRLS	  6446	  6687
%MSSEG	  3132	  3706	  4060	  4065	  4186	  4377	  4427	  5819	  6487	  6544	  6931	  7148	  7163
%MSTOM	  3150	  3651	  6484	  6541	  6934
%NAMCN	  2481	  4931	  4966
%ND%LP	  4977	  4979
%NSPNU	  4303
%NTATB	  2164
%NTATC	  2165
%NTATE	  2178
%NTATR	  2160
%NTCCH	  1042	  7448	  7454
%NTCFR	  1041	  7446	  7456	  7465
%NTSHU	  5186	  5188
%OPNF	   708
%PRFXL	  2721
%PRFXV	  2719
%READF	   414	   607	   627
%REQVE	  4990	  5054	  6837	  6840	  6842	  6844
%RNDF	   605
%STEPF	   395	   402
%UNLKF	   368
%WRTF	   422	   606	   607	   629
..0001	   927#	   927
..0002	   937#	   937
..0003	  1185#	  1185
..0004	  1230#	  1230
..0005	  1342#	  1342
..0006	  1390#	  1390
..0007	  2039#	  2039
..0010	  2140#	  2140
..0011	  3450#	  3450
..0016	  4300	  4305#
..0020	  4906#	  4906
..0021	  5004#	  5004
..0022	  5012#	  5012
..0023	  5040#	  5040
..0030	  6622	  6629#
..0032	  6628#	  6628
..GOKN	   657#	   657
..TSA1	   368#	   368	   395#	   395	   402#	   402	   414#	   414	   422#	   422	   605#	   605	   606#	   606
	   607#	   607	   627#	   627	   629#	   629	   708#	   708	   713#	   713	   824#	   824	   839#	   839
	   858#	   858	   877#	   877	  1264#	  1264	  1295#	  1295	  1365#	  1365	  1528#	  1528	  1695#	  1695
	  1700#	  1700	  1709#	  1709	  1715#	  1715	  1723#	  1723	  1727#	  1727	  1763#	  1763	  1896#	  1896
	  1902#	  1902	  1959#	  1959	  1961#	  1961	  1987#	  1987	  2017#	  2017	  2054#	  2054	  2063#	  2063
	  2065#	  2065	  2067#	  2067	  2077#	  2077	  2079#	  2079	  2088#	  2088	  2245#	  2245	  2338#	  2338
	  2455#	  2455	  2467#	  2467	  2553#	  2553	  2568#	  2568	  2576#	  2576	  2580#	  2580	  2583#	  2583
	  2597#	  2597	  2767#	  2767	  2800#	  2800	  2814#	  2814	  2817#	  2817	  2823#	  2823	  2831#	  2831
	  2862#	  2862	  2930#	  2930	  2976#	  2976	  3010#	  3010	  3113#	  3113	  3162#	  3162	  3227#	  3227
	  3282#	  3282	  3348#	  3348	  3353#	  3353	  3362#	  3362	  3376#	  3376	  3379#	  3379	  3445#	  3445
	  3487#	  3487	  3501#	  3501	  3512#	  3512	  3517#	  3517	  3522#	  3522	  3526#	  3526	  3532#	  3532
	  3541#	  3541	  3546#	  3546	  3581#	  3581	  3586#	  3586	  3604#	  3604	  3607#	  3607	  3724#	  3724
	  3725#	  3725	  3726#	  3726	  3732#	  3732	  3734#	  3734	  3752#	  3752	  3757#	  3757	  3788#	  3788
	  3816#	  3816	  3821#	  3821	  3824#	  3824	  3848#	  3848	  3873#	  3873	  3881#	  3881	  3884#	  3884
	  3911#	  3911	  3930#	  3930	  3949#	  3949	  3970#	  3970	  3987#	  3987	  3996#	  3996	  4009#	  4009
	  4049#	  4049	  4099#	  4099	  4210#	  4210	  4218#	  4218	  4221#	  4221	  4226#	  4226	  4234#	  4234
	  4246#	  4246	  4250#	  4250	  4266#	  4266	  4269#	  4269	  4271#	  4271	  4281#	  4281	  4297#	  4297
	  4301#	  4301	  4303#	  4303	  4339#	  4339	  4406#	  4406	  4408#	  4408	  4411#	  4411	  4436#	  4436
	  4470#	  4470	  4477#	  4477	  4500#	  4500	  4505#	  4505	  4523#	  4523	  4528#	  4528	  4530#	  4530
	  4833#	  4833	  4841#	  4841	  4916#	  4977#	  4985#	  4990#	  5054#	  5085#	  5085	  5088#	  5088	  5099#
	  5099	  5111#	  5111	  5186#	  5211#	  5211	  5228#	  5228	  5311#	  5311	  5332#	  5332	  5384#	  5384
	  5388#	  5388	  5418#	  5418	  5447#	  5447	  5520#	  5520	  5577#	  5577	  5580#	  5580	  5623#	  5623
	  5670#	  5670	  5673#	  5673	  5699#	  5699	  5702#	  5702	  5745#	  5745	  5796#	  5796	  5864#	  5864
	  5866#	  5866	  5899#	  5899	  5920#	  5920	  5937#	  5937	  5964#	  5964	  5965#	  5965	  6009#	  6009
	  6019#	  6019	  6026#	  6026	  6027#	  6027	  6053#	  6053	  6056#	  6056	  6066#	  6066	  6068#	  6068
	  6076#	  6076	  6085#	  6085	  6099#	  6099	  6122#	  6122	  6127#	  6127	  6261#	  6261	  6271#	  6271
	  6274#	  6274	  6290#	  6290	  6330#	  6330	  6337#	  6337	  6366#	  6366	  6383#	  6383	  6409#	  6409
	  6415#	  6415	  6446#	  6446	  6448#	  6448	  6458#	  6458	  6512#	  6512	  6563#	  6563	  6580#	  6580
	  6607#	  6607	  6610#	  6610	  6612#	  6612	  6630#	  6630	  6645#	  6645	  6655#	  6655	  6674#	  6674
	  6684#	  6684	  6687#	  6687	  6701#	  6701	  6705#	  6705	  6835#	  6837#	  6842#	  6904#	  6904	  6969#
	  6969	  7026#	  7026	  7031#	  7031	  7078#	  7078	  7084#	  7084	  7109#	  7109	  7112#	  7112	  7218#
	  7218	  7457#	  7469#
.A16	   363	   376	   386	   456	   652	   690	   781	   793	   855	   969	  1055	  1091	  1145	  1311
	  1327	  1378	  1408	  1475	  1565	  1605	  1679	  1802	  1948	  2061	  2100	  2130	  2158	  2201
	  2202	  2292	  2293	  2379	  2446	  2447	  2508	  2529	  2548	  2594	  2614	  2616	  2638	  2653
	  2779	  2880	  3028	  3029	  3100	  3101	  3180	  3247	  3272	  3295	  3296	  3323	  3424	  3425
	  3465	  3466	  3554	  3693	  3833	  3870	  4005	  4006	  4090	  4109	  4165	  4263	  4364	  4366
	  4445	  4494	  4518	  4721	  4749	  4750	  4751	  5046	  5329	  5364	  5696	  5912	  5996	  6043
	  6071	  6158	  6258	  6267	  6325	  6360	  6464	  6465	  6700	  6751	  6785	  6851	  6903	  6983
	  7070	  7127	  7174	  7244	  7297	  7389	  7504	  7551	  7614	  7705
.AF	   778#	   779#	   779	   781#	   781	  1257#	  1258#	  1258	  1289#	  1290#	  1290	  1407#	  1408#	  1408
	  2593#	  2594#	  2594	  4746#	  4746	  6437#	  6438#	  6438	  6950#	  6951#	  6951	  7704#	  7705#	  7705
.AM	   778#	   778	   779	   781#	   781	  1257#	  1257	  1258	  1289#	  1289	  1290	  1407#	  1407	  1408
	  2593#	  2593	  2594	  4746#	  4746	  6437#	  6437	  6438	  6950#	  6950	  6951	  7704#	  7704	  7705
.ASSET	   855	   969	  1055	  1091	  1475	  1948	  2061	  2100	  2130	  3424	  3465	  3833	  6071	  6258
	  6325	  6360	  6700	  6903	  6983	  7070	  7127	  7504
.BTSTS	  7353	  7642
.BTTPR	  5024	  7374
.DCX0	  4673
.DCX1	  4674
.DCX2	  4675
.DCX21	  5125
.DCX24	  4683
.DCX3	  4676	  5190
.DCX32	  4684
.DCX33	  1540	  4685
.DCX34	  4686
.DCX35	  4687	  5128	  5431
.DCX36	  4688
.DCX37	  4689
.DCX38	  4690
.DCX39	  4691	  5066
.DCX4	  1523	  1538	  4677
.DCX40	  4144	  4692	  6092
.DCX41	  4693	  5410	  5462	  5539	  5564	  5595	  5779
.DCX42	  3392	  4694	  5638
.DCX43	  4695	  5493
.DCX5	  4678	  5134
.DCX6	  4679
.DCX7	  4680
.DCX8	  4681
.DCX9	  3341	  4682	  5625	  5754
.GODNA	   654	   657
.GSSMB	  2560
.ICAOV	  7433
.ICNXP	  7434
.INFIN	  6049
.MOACN	   726
.MOANT	   741
.MOCC	   738
.MOCIA	  2941
.MOCLZ	   737
.MONCI	  2944
.MORAC	   732
.MORCN	   739
.MORDA	   733
.MORHN	   728
.MORIM	   734
.MORLS	   727
.MOROD	   736
.MORPW	   731
.MORSS	   740
.MORTN	   729
.MORUS	   730
.MOSIM	   735
.MOSNH	   742
.N1	   781#	   781	  4749#	  4749
.NDBK1	  7409	  7560
.NDCHN	  7427
.NDCNT	  7401	  7574
.NDCST	  7485	  7495
.NDCVR	  7479
.NDECO	  7483	  7493
.NDFLG	  7723
.NDLCB	  7656
.NDLCN	  7653
.NDLND	  7663
.NDLNM	  7645
.NDLOF	  7659
.NDLON	  7649
.NDLST	  7660
.NDLSZ	  7639	  7661
.NDNAM	  7506	  7518	  7591	  7711
.NDNBS	  7573	  7583	  7589
.NDNLN	  7620	  7623	  7628
.NDNND	  7404	  7557	  7569
.NDNOD	  7306	  7319
.NDNVR	  7478
.NDNXT	  7402	  7526
.NDPRT	  7348	  7371	  7385
.NDRVR	  7489
.NDSOF	   974	  5059
.NDSON	   951	  4996	  7587
.NDSTA	  7509	  7588
.NDVER	  7481	  7491
.NODE	  7263#
.NPAC	   793	  1311	  1605	  2158	  2201	  2292	  2446	  2508	  2529	  2614	  2638	  2653	  2779	  2880
	  3028	  3100	  3295	  3323	  4005	  5364	  6158	  6464	  7244
.NSBFR	  6074
.NSCND	  5354
.NSDAT	  6024
.NSDIS	  5715
.NSINT	  2982
.NSOBE	  7131
.NSOMO	  7115
.NSOOK	  7117
.NTMAN	  7752#
.PFACN	  2191	  2411
.PFBOP	  2192	  2193	  2422
.PFBPW	  2189	  2190	  2401
.PFOPT	  2192	  2193	  2419
.PFPWD	  2189	  2190	  2398
.PFUDT	  2188	  2391
.RESNP	  1666	  1813	  6987
.RESP1	  6986
.RESP2	  1665
.RESP3	  1663	  1812
.SAV11	  6950
.SAV12	  6437
.SAV22	  1289	  2593
.SAV44	  1257	  1407
.SHESC	   786
.SHTTY	   780
.STKST	   456	   690	  1145	  1408	  1679	  2293	  2379	  2447	  2548	  2594	  2616	  3029	  3101	  3180
	  3247	  3272	  3296	  3425	  3466	  3554	  3693	  3870	  4006	  4090	  4263	  4366	  4445	  4494
	  4518	  4751	  5329	  5696	  5912	  5996	  6043	  6267	  6465	  6751	  7297	  7389	  7551	  7614
	  7705
.TRSET	   363	   376	   386	   652	  1327	  1378	  1565	  1802	  2202	  4109	  4165	  4364	  4721	  5046
	  6785	  6851	  7174
.VNCBL	  7657
.VNCNL	  7654
.VNDDC	  7651
.VNMCB	  7650
ACKCHL	  6465#	  6465	  6468	  6485	  6542	  6550
ACKNO	  6465#	  6465	  6469	  6474	  6488	  6534	  6536	  6545	  6700#	  6700	  6769
ACKTYP	  6700#	  6700	  6764
ACVAR	   793	  1311	  1605	  2158	  2201	  2292	  2446	  2508	  2529	  2614	  2638	  2653	  2779	  2880
	  3028	  3100	  3295	  3323	  4005	  5364	  6158	  6464	  7244
ADDONF	  2135	  2140
ADHLD	   969#	   969	   996	  1003
ADIBLK	  1091#	  1091	  1100	  1104	  1112	  1124
ADINBR	  1091#	  1091	  1107	  1114
ADIPTR	  1091#	  1091	  1101
ADISTA	  1091#	  1091	  1113	  1123	  1128
ADJBP	  6192
ADNABR	   969#	   969	   997	  1018
ADNADR	   969#	   969	   984	  1009	  1025	  1037	  1046
ADNSTA	   969#	   969	   973
ASCCNT	  2616#	  2616	  2618	  2622
ASUBR	   855	   969	  1055	  1091	  1475	  1948	  2061	  2100	  2130	  3424	  3465	  3833	  6071	  6258
	  6325	  6360	  6700	  6903	  6983	  7070	  7127	  7504
ATTENT	   260#	  2188	  2189	  2190	  2191	  2192	  2193
BOOT	  5025	  7355	  7376	  7646
BUG	   922	   932	  1180	  1226	  1338	  1386	  2034	  2135	  3446	  4901	  4999	  5007	  5036	  6623
CALL	   363	   364	   376	   377	   386	   387	   416	   420	   424	   426	   444	   505	   507	   514
	   545	   559	   572	   574	   581	   589	   619	   622	   628	   630	   631	   657	   661	   663
	   665	   666	   672	   673	   679	   680	   695	   698	   701	   703	   710	   712	   723	   751
	   758	   761	   764	   767	   781	   785	   787	   796	   799	   802	   804	   810	   817	   819
	   827	   842	   857	   860	   864	   866	   876	   879	   882	   883	   886	   915	   916	   931
	   943	   953	   975	   999	  1011	  1020	  1043	  1066	  1070	  1097	  1103	  1108	  1116	  1126
	  1161	  1193	  1222	  1250	  1252	  1315	  1333	  1336	  1337	  1348	  1349	  1351	  1381	  1384
	  1385	  1391	  1432	  1532	  1569	  1579	  1640	  1667	  1814	  1818	  1823	  1824	  1826	  1829
	  1831	  1849	  1863	  1868	  1869	  1871	  1872	  1879	  1882	  1883	  1886	  1888	  1889	  1912
	  1918	  1920	  1922	  1923	  1951	  1966	  1971	  1976	  1980	  1983	  1986	  1991	  1996	  1998
	  2001	  2002	  2008	  2062	  2072	  2122	  2133	  2180	  2205	  2207	  2217	  2222	  2225	  2232
	  2235	  2238	  2241	  2247	  2259	  2267	  2268	  2275	  2310	  2315	  2324	  2325	  2334	  2336
	  2339	  2343	  2345	  2347	  2352	  2354	  2356	  2362	  2366	  2368	  2386	  2393	  2395	  2397
	  2400	  2403	  2405	  2410	  2413	  2415	  2421	  2424	  2431	  2465	  2488	  2497	  2532	  2551
	  2556	  2558	  2601	  2603	  2605	  2620	  2629	  2641	  2656	  2660	  2667	  2695	  2746	  2757
	  2758	  2763	  2833	  2840	  2847	  2854	  2875	  2892	  2905	  2911	  2916	  2921	  2926	  2933
	  2959	  2990	  2996	  2998	  3012	  3034	  3041	  3058	  3081	  3085	  3106	  3117	  3127	  3128
	  3134	  3144	  3145	  3152	  3169	  3188	  3193	  3205	  3207	  3208	  3225	  3230	  3239	  3255
	  3257	  3263	  3277	  3281	  3284	  3325	  3327	  3332	  3344	  3355	  3373	  3380	  3381	  3395
	  3397	  3398	  3399	  3400	  3405	  3408	  3437	  3442	  3452	  3469	  3478	  3479	  3481	  3488
	  3495	  3496	  3498	  3504	  3515	  3518	  3525	  3540	  3556	  3558	  3560	  3566	  3567	  3569
	  3574	  3596	  3597	  3599	  3603	  3606	  3613	  3619	  3620	  3636	  3639	  3646	  3655	  3697
	  3698	  3707	  3808	  3835	  3844	  3845	  3849	  3856	  3864	  3876	  3878	  3879	  3898	  3909
	  3918	  3928	  3937	  3947	  3958	  3968	  3978	  3985	  3994	  4011	  4021	  4027	  4031	  4036
	  4051	  4053	  4068	  4096	  4118	  4121	  4131	  4136	  4143	  4146	  4149	  4151	  4173	  4178
	  4179	  4203	  4215	  4223	  4225	  4228	  4229	  4248	  4249	  4257	  4275	  4279	  4290	  4315
	  4327	  4333	  4373	  4387	  4390	  4418	  4423	  4432	  4482	  4502	  4526	  4719	  4729	  4732
	  4733	  4734	  4736	  4737	  4739	  4763	  4779	  4783	  4791	  4795	  4867	  4871	  4906	  4923
	  4929	  4945	  4948	  4963	  4972	  4992	  4998	  5006	  5061	  5068	  5071	  5072	  5093	  5094
	  5097	  5102	  5103	  5104	  5105	  5106	  5107	  5113	  5114	  5122	  5127	  5145	  5147	  5152
	  5167	  5170	  5178	  5194	  5195	  5196	  5198	  5199	  5202	  5216	  5221	  5226	  5232	  5246
	  5250	  5255	  5262	  5265	  5266	  5267	  5270	  5283	  5291	  5294	  5344	  5347	  5354	  5372
	  5375	  5376	  5379	  5380	  5383	  5394	  5400	  5403	  5407	  5408	  5409	  5413	  5414	  5417
	  5430	  5435	  5437	  5438	  5440	  5442	  5451	  5463	  5466	  5479	  5482	  5492	  5497	  5519
	  5527	  5534	  5537	  5538	  5541	  5542	  5545	  5552	  5572	  5579	  5582	  5584	  5586	  5592
	  5593	  5594	  5598	  5599	  5602	  5605	  5613	  5618	  5625	  5626	  5631	  5633	  5657	  5658
	  5668	  5671	  5675	  5705	  5708	  5718	  5720	  5725	  5726	  5727	  5729	  5730	  5733	  5738
	  5747	  5748	  5756	  5772	  5774	  5777	  5778	  5781	  5782	  5785	  5793	  5795	  5799	  5804
	  5806	  5810	  5814	  5815	  5828	  5842	  5846	  5847	  5854	  5891	  5894	  5895	  5901	  5902
	  5922	  5928	  5939	  5946	  5973	  5983	  5986	  6024	  6050	  6074	  6094	  6098	  6104	  6222
	  6243	  6279	  6283	  6333	  6339	  6354	  6376	  6377	  6378	  6380	  6389	  6397	  6418	  6420
	  6427	  6431	  6441	  6471	  6495	  6498	  6508	  6514	  6574	  6647	  6658	  6660	  6662	  6677
	  6706	  6754	  6767	  6768	  6771	  6779	  6789	  6798	  6800	  6802	  6804	  6806	  6808	  6810
	  6812	  6814	  6816	  6818	  6820	  6822	  6824	  6826	  6828	  6833	  6840	  6858	  6870	  6872
	  6879	  6915	  6924	  6925	  6935	  6940	  6942	  6944	  6953	  6954	  6955	  6966	  6968	  6972
	  6988	  7016	  7017	  7022	  7023	  7027	  7046	  7075	  7087	  7089	  7096	  7131	  7144	  7192
	  7194	  7207	  7216	  7230	  7255	  7272	  7308	  7323	  7411	  7421	  7514	  7521	  7530	  7538
	  7545	  7594	  7668	  7713	  7720
CALLRE	   546	   782	   871	  1251	  1392	  1593	  1656	  1942	  2003	  2538	  2585	  2607	  2697	  2707
	  2770	  2850	  2857	  2901	  2965	  2982	  3195	  3211	  3217	  3243	  3259	  3267	  3608	  3621
	  4098	  4150	  4154	  4227	  4348	  5340	  5649	  5659	  5676	  5715	  5764	  6130	  6295	  6302
	  6319	  6349	  6361	  6664	  6746	  6755	  6888	  6913	  7117	  7236	  7239
CBLK1	   983	  1059	  2023	  7007	  7580	  7736
CDIBUF	  3424#	  3424	  3435
CDICNT	  3424#	  3424	  3432	  3434
CDIFLG	  3424#	  3424	  3443
CDILLB	  3424#	  3424	  3428	  3450
CDIOPT	  3425#	  3425	  3433
CFORK	   921
CHNOFF	  1957	  4824	  7248
CHNON	  1963	  4830	  7254
CLNERR	   690#	   690	   692	   704
CLRLLB	  2061#	  2061	  2075	  2092#
CLZDIN	  3446	  3450
CNFLNK	  3870#	  3870	  3872	  3880	  3882
CNTLLB	  5329#	  5329	  5331	  5351
CNTSTS	  5329#	  5329	  5345	  5346	  5350
CONCHK	   922	   932	  1180	  1226	  1338	  1386	  2034	  2135	  3446	  4901	  4999	  5007	  5036	  6623
CPLCNT	   456#	   456	   458	   463
CRLATR	  2293#	  2293	  2299	  2361
CRLCIB	  2293#	  2293	  2317	  2367
CRLCNT	  2293#	  2293
CRLDSC	  2293#	  2293	  2301	  2306	  2332
CRLDSS	  2293#	  2293	  2302	  2309
CRLHSC	  2293#	  2293
CRLHST	  2293#	  2293
CRLOBJ	  2293#	  2293	  2300	  2304	  2335	  2344
DECR	   693	  1292	  1874	  1891	  2265	  3135	  3402	  3739	  4024	  4029	  4048	  4434	  6496	  6571
	  6634	  6643
DEDDUM	  5046#	  5046
DEDPRT	  5046#	  5046	  5053	  5057	  5063	  5091
DEFAC	   268	   269	   270	   271
DEFSTR	   263	   264	   265	   266
DELHLD	  1145#	  1145	  1148	  1175
DIFLGS	  3465#	  3465	  3477	  3482
DISRSN	  3465#	  3465	  3480
DIUDAT	  3465#	  3465	  3485
DOLOC1	   926	  4905	  5011	  5040
DOLOC2	   926	  4905	  5011	  5040
DOLOCS	   926	   936	  1184	  1230	  1342	  1390	  2038	  2139	  3450	  4905	  5003	  5011	  5040	  6627
DTBBAD	   290	   291	   292	   299	   300	   301	   302	   303	   304	   305	   309	   310	   317	   327
	   328	   329	   337	   338	   339	   340	   341	   342	   343	   347	   348
DTBDSP	   286	   287	   288	   289	   293	   294	   295	   296	   307	   312	   313	   314	   315	   316
	   321	   322	   323	   324	   331	   332	   333	   334	   345	   350	   351	   352	   353	   354
	   355
ELSE.	  4299	  4299#	  4305#	  6621	  6621#	  6629#
ENDAS.	   856#	   970#	  1056#	  1092#	  1476#	  1949#	  2062#	  2092	  2101#	  2131#	  3425#	  3466#	  3834#	  6072#
	  6259#	  6326#	  6361#	  6701#	  6904#	  6984#	  7071#	  7128#	  7505#
ENDAV.	   794#	   814	  1312#	  1319	  1606#	  1615	  2159#	  2184	  2202#	  2279	  2293#	  2371	  2447#	  2500
	  2509#	  2520	  2530#	  2541	  2615#	  2633	  2639#	  2646	  2654#	  2677	  2780#	  2789	  2881#	  2895
	  3029#	  3072	  3101#	  3156	  3296#	  3319	  3324#	  3413	  4006#	  4103	  5365#	  5397	  6159#	  6179
	  6465#	  6586	  7245#	  7259
ENDIF.	  4299	  4299#	  4305	  4305#	  6621	  6621#	  6629	  6629#
ENDSV.	   458#	   692#	  1147#	  1410#	  1681#	  2295#	  2381#	  2449#	  2550#	  2596#	  2618#	  3031#	  3103#	  3182#
	  3249#	  3274#	  3298#	  3427#	  3468#	  3556#	  3695#	  3872#	  4008#	  4092#	  4265#	  4368#	  4447#	  4496#
	  4520#	  4753#	  5331#	  5698#	  5914#	  5998#	  6045#	  6269#	  6467#	  6753#	  7299#	  7391#	  7553#	  7616#
	  7707#
ENDTV.	   363#	   376#	   386#	   654#	  1329#	  1380#	  1567#	  1804#	  2204#	  4111#	  4167#	  4366#	  4723#	  5048#
	  6787#	  6853#	  7176#
ERJMP	   988	  1029	  1063	  1190	  1207	  5026	  7356	  7377	  7507	  7510	  7519	  7527	  7582	  7647
	  7696	  7699	  7740
GETBYM	  4857	  4873	  4918	  4932	  4940	  4955	  5130	  5137	  5154	  5160	  5238	  5858	  5869	  6139
	  6143	  6160	  6169	  6185	  6199	  6230	  6240	  7182	  7196
GGLOBS	   197
GNTCNT	  7551#	  7551	  7559	  7567	  7584
GTOKM	   654
HDISMS	  4741
IFNSK.	  4299	  6621
ILLSTR	  5007	  5012
INAATR	  2379#	  2379	  2382	  2392	  2399	  2402	  2412	  2420	  2423
INACNT	  2379#	  2379	  2390	  2430	  2432
INALLB	  2379#	  2379	  2381	  2384
INAPNT	  2379#	  2379	  2388	  2433
INCR	  1270	  1836	  4413	  6347	  6555	  6564	  6582
INDADR	  7504#	  7504	  7516	  7523	  7533	  7544
INDBLK	  7504#	  7504	  7505	  7517	  7525
INDERR	  7504#	  7504	  7543	  7546
INDSTA	  7504#	  7504	  7511	  7537
INOLLB	  7070#	  7070	  7074	  7077	  7083	  7086	  7088	  7090	  7095	  7098
INSCNT	  5912#	  5912	  5949	  5952	  5971	  5977
INSFLG	  5912#	  5912	  5915	  5950	  5962	  5972
INSLLB	  5912#	  5912	  5914	  5919	  5924	  5927	  5933	  5943	  5948	  5970	  5982	  5985
ITERR	  7270	  7273	  7753
JE	  1264	  1365	  1528	  1709	  1715	  1987	  2017	  2079	  2814	  2830	  2862	  2976	  3112	  3162
	  3227	  3362	  3970	  3987	  3996	  4049	  4218	  4408	  4436	  4988	  5384	  5699	  5964	  6009
	  6053	  6122	  6607	  6612	  6684	  6705	  6837	  6969	  7078	  7109
JN	  2579	  2597	  2822	  3721	  3751	  3755	  3873	  3911	  3930	  4241	  4281	  4916	  5085	  5088
	  5109	  5332	  5418	  5574	  5620	  5702	  5743	  5796	  5896	  5934	  6018	  6026	  6066	  6068
	  6383	  6409	  6446	  6509	  6557	  6610	  6674	  7025	  7084	  7218
JXE	  1265	  1366	  1529	  1710	  1716	  1988	  2018	  2080	  2814	  2832	  2863	  2977	  3114	  3163
	  3228	  3363	  3971	  3988	  3997	  4049	  4219	  4409	  4437	  4990	  5385	  5700	  5964	  6009
	  6054	  6123	  6564	  6608	  6613	  6641	  6685	  6705	  6838	  6970	  7110
JXN	  2581	  2598	  2824	  3725	  3753	  3758	  3874	  3912	  3931	  4247	  4282	  4917	  5086	  5089
	  5112	  5333	  5419	  5578	  5624	  5703	  5746	  5797	  5900	  5938	  6020	  6026	  6069	  6384
	  6409	  6447	  6513	  6564	  6611	  6675	  7219
LASTM	  1408#	  1408	  1411	  1417	  1427	  1435	  1440
LITCNT	  7614#	  7614	  7622	  7631	  7640
LKPCOD	  1327#	  1327	  1329	  1369	  1378#	  1378	  1380
LKPLLB	  1327#	  1327	  1343	  1347
LLADDR	  1565#	  1565	  1567	  1580
LLBLK	  3465#	  3465	  3474	  6465#	  6465	  6467	  6700#	  6700	  6758
LLDUM	  6785#	  6785	  6794	  6851#	  6851	  6863
LLHO	  1408#	  1408	  1410	  1428	  1431	  1434
LLLKBD	  1226	  1230
LLLOCK	   254#	  1333	  1381	  1823	  1869	  1882	  1918	  3398	  5068	  5194	  5372	  5407	  5534	  5592
	  5725	  5774	  6376	  6953
LLLULK	   257#	  1337	  1349	  1351	  1385	  1391	  1826	  1831	  1872	  1889	  1923	  2247	  2268	  2366
	  3400	  5072	  5094	  5097	  5196	  5199	  5202	  5376	  5380	  5383	  5409	  5414	  5417	  5538
	  5542	  5545	  5594	  5599	  5602	  5727	  5730	  5733	  5778	  5782	  5785	  6378	  6380	  6955
	  6968
LLMSGB	  3466#	  3466	  3471	  3489
LNKADR	  6465#	  6465
LNKID	  1408#	  1408	  1412	  1416	  1418
LOAD	   675	   795	   798	   801	  1041	  1042	  1267	  1280	  1290	  1368	  1415	  1419	  1421	  1430
	  1535	  1542	  1549	  1555	  1590	  1740	  1752	  1773	  1828	  1837	  1838	  1933	  1939	  1949
	  1955	  1965	  1968	  1973	  2032	  2046	  2069	  2084	  2086	  2131	  2143	  2144	  2164	  2165
	  2178	  2227	  2253	  2257	  2258	  2308	  2337	  2346	  2355	  2496	  2531	  2533	  2535	  2559
	  2565	  2570	  2602	  2706	  2721	  2756	  2766	  2799	  2803	  2834	  2838	  2849	  2856	  2865
	  2868	  2877	  2878	  2899	  2900	  2909	  2960	  2980	  2981	  3046	  3129	  3147	  3165	  3173
	  3189	  3194	  3215	  3249	  3265	  3334	  3343	  3390	  3440	  3486	  3502	  3640	  3702	  3720
	  3760	  3761	  3765	  3768	  3780	  3847	  3900	  3920	  3921	  3939	  3960	  3980	  4016	  4019
	  4034	  4046	  4060	  4065	  4076	  4083	  4093	  4113	  4117	  4170	  4183	  4184	  4205	  4273
	  4284	  4313	  4318	  4330	  4377	  4378	  4383	  4403	  4416	  4427	  4429	  4497	  4521	  4758
	  4826	  4838	  4845	  4900	  4915	  4966	  5022	  5082	  5090	  5098	  5185	  5214	  5219	  5224
	  5244	  5248	  5253	  5260	  5276	  5281	  5306	  5308	  5313	  5317	  5335	  5352	  5353	  5421
	  5449	  5516	  5547	  5558	  5571	  5603	  5608	  5685	  5713	  5714	  5734	  5787	  5820	  5878
	  5890	  5944	  5945	  5954	  6005	  6014	  6015	  6016	  6022	  6023	  6072	  6073	  6126	  6264
	  6328	  6334	  6335	  6371	  6374	  6375	  6386	  6407	  6411	  6413	  6438	  6484	  6487	  6501
	  6506	  6519	  6524	  6541	  6544	  6553	  6564	  6567	  6576	  6615	  6632	  6636	  6640	  6672
	  6744	  6909	  6910	  6926	  6952	  7019	  7036	  7045	  7114	  7116	  7128	  7129	  7130	  7148
	  7149	  7154	  7163	  7165	  7180	  7221	  7250	  7446	  7465
LOCK	   982	  1058	  1221	  1246	  2022	  7006	  7579	  7735
MBLOCK	  3554#	  3554	  3626	  3637	  3649	  3693#	  3693	  3695	  3699
MCBCLL	  4751#	  4751	  4761	  4764	  4773	  4782
MCENT	  7263	  7752
MCENTR	  4718
MDISMS	  3042	  3330	  3499	  5076	  5200	  5381	  5415	  5443	  5480	  5543	  5600	  5731	  5783	  5829
	  5855
MDPTR	  4445#	  4445	  4447	  4465
MLODR	  3554#	  3554	  3661	  3677
MOVX	   519	   913	   919	   929	   941	   948	   951	  1096	  1102	  1106	  1270	  1292	  1295	  1695
	  1700	  1723	  1727	  1763	  1808	  1862	  1896	  1902	  1959	  1961	  2054	  2063	  2065	  2067
	  2077	  2088	  2245	  2338	  2455	  2467	  2583	  2613	  3037	  3135	  3353	  3379	  3468	  3725
	  3732	  3734	  3739	  3881	  3884	  4024	  4029	  4048	  4099	  4221	  4269	  4271	  4301	  4339
	  4406	  4413	  4434	  4500	  4505	  4528	  4530	  4715	  4778	  4841	  4936	  4977	  4985	  4990
	  4996	  5054	  5059	  5099	  5211	  5228	  5388	  5447	  5670	  5673	  5864	  5866	  5920	  5965
	  6027	  6049	  6056	  6076	  6085	  6274	  6290	  6337	  6366	  6415	  6448	  6555	  6564	  6571
	  6580	  6582	  6634	  6643	  6645	  6655	  6687	  6835	  6842	  7031	  7112	  7115	  7457	  7469
	  7477	  7512	  7520	  7529	  7573	  7585	  7587	  7722
MRETNG	  7274
MSFRK	   928
MSGBL	  6751#	  6751	  6756	  6772
MSGBLK	  4109#	  4109	  4112	  4120	  4165#	  4165	  4172	  4185	  4194	  4721#	  4721	  4844	  4876	  4899
	  4914	  5021	  5184	  5218	  5269	  5305	  5515	  5529	  5557	  5570	  5794	  5818	  5843	  6109
	  7174#	  7174	  7177	  7199	  7224	  7234	  7238
MSGBYP	  4109#	  4109	  4116	  4165#	  4165	  4169	  4364#	  4364	  4386	  4421	  4454	  4721#	  4721	  4849
	  4859	  4875	  4920	  4934	  4942	  4957	  5132	  5139	  5156	  5162	  5240	  5530	  5860	  5871
	  6110	  6141	  6145	  6163	  6171	  6187	  6192	  6193	  6201	  6232	  6242	  7174#	  7174	  7179
	  7184	  7198	  7227
MSGCNT	  4109#	  4109	  4114	  4165#	  4165	  4171	  4364#	  4364	  4384	  4396	  4415	  4721#	  4721	  4846
	  4857	  4873	  4918	  4932	  4940	  4955	  5130	  5137	  5154	  5160	  5238	  5532	  5858	  5869
	  6112	  6139	  6143	  6161	  6169	  6185	  6190	  6199	  6230	  6240	  7174#	  7174	  7181	  7182
	  7196	  7225
MSGDDC	  4721#	  4721	  5141	  5150	  5282
MSGDML	  4721#	  4721	  5165	  5169	  5172	  5208	  5476
MSGDST	  4721#	  4721	  5124	  5293	  5405	  5485	  5487	  5512	  5535	  5589	  5723	  5775	  7174#	  7174
	  7214
MSGFLG	  2548#	  2548	  2550	  2563	  2594#	  2594	  2596	  2606
MSGHSN	  4721#	  4721	  4856	  4869	  5213	  5507	  5508	  5591
MSGLCL	  4721#	  4721	  4832	  4843	  5188	  5210	  5367	  5471
MSGLL	  4109#	  4109	  4111	  4122
MSGLLB	  4006#	  4006	  4008	  4032	  4038	  4052	  4069	  4721#	  4721	  5205	  5217	  5227	  5233	  5387
	  5412	  5439	  5441	  5546	  5579	  5597	  5786	  5830	  5849	  5856	  6095	  6100
MSGOBJ	  4721#	  4721	  5140	  5206	  5275
MSGSDC	  4721#	  4721	  5164	  5176	  5225	  5231
MSGSGT	  4165#	  4165	  4167	  4177	  4182
MSGSOB	  4721#	  4721	  5163	  5222	  5402	  5404	  5426
MSGSRC	  4721#	  4721	  5296	  5323	  5373	  5433	  5486	  5510	  5536	  5559	  5686	  5724	  5737	  5776
	  7174#	  7174	  7215
MSGW1	  4721#	  4721	  4947	  4950	  5046#	  5046	  5067	  5241	  5257	  5302	  5434	  5475	  5478	  5565
	  5588	  5634	  5647	  5655	  5665	  5669	  5722	  5753	  5755	  5771	  5790	  5837	  6093	  6239
MSGW2	  4721#	  4721	  5304	  6245
MSIZE	  3554#	  3554	  3616	  3632	  3638	  3652
MVMBFI	  4366#	  4366	  4369	  4422	  4424	  4440
MVMCNT	  4366#	  4366	  4371	  4397	  4401	  4441
MVMFLG	  4366#	  4366	  4372
MVMLLB	  4366#	  4366	  4368	  4425	  4433
MVMMAX	  4366#	  4366	  4370	  4398
MVNLLB	  4090#	  4090	  4092	  4097
MVSPTR	  1679#	  1679	  1682	  1684
NAKFLG	  7174#	  7174	  7201	  7206	  7229
NDBDEL	  1180	  1185
NDINIT	   932	   937
NDVNOD	  7705#	  7705	  7712	  7718
NETCHR	   855#	   855	   869
NMVCNT	  3296#	  3296	  3302	  3305
NMVPTR	  3296#	  3296	  3301	  3312
NODMSG	  6785#	  6785	  6791	  6829	  6851#	  6851	  6860	  6884
NODNAM	  7297#	  7297	  7307	  7311
NODPRT	  6785#	  6785	  6787	  6830	  6834	  6841	  6851#	  6851	  6853	  6885
NOINT	   397	   940	   981	  1057	  1095	  1220	  1245	  1275	  2006	  4755	  7513	  7578
NOP	  4037	  4547	  4559	  4571	  4583	  4595	  4607	  4619	  4631	  4645	  4735	  4780	  7145
NOSKD1	  1956	  4014	  4823	  6353	  6382	  6406	  6959
NOSKED	  4756	  4765
NOUT	  1575	  3184
NSPBPN	  5036	  5040
NSPFRK	   922	   927
NSPLNQ	  2034	  2039
NSPPHV	  1386	  1390
NSPPWA	  1338	  1342
NSPRSN	  6623	  6628
NSPRTH	  4901	  4906
NSPSTR	  4999	  5004
NTCIB	   652#	   652
NTCNT	   363#	   363	   376#	   376	   386#	   386	   445	   481	   485	   486	   526	   560	   590	   652#
	   652	  2202#	  2202
NTDDSC	   363#	   363
NTDSC	   376#	   376	   525	   529	   652#	   652	   669	   677	  2202#	  2202	  2213	  2221
NTDSS	   363#	   363	   376#	   376	   535	   652#	   652	   671	   678	  2202#	  2202	  2220
NTHSC	   376#	   376	   562	   568	   652#	   652	   668
NTHST	   376#	   376	   567	   652#	   652	   670
NTOBJ	   363#	   363	   376#	   376	   506	   511	   523	   530	   578	   583	   652#	   652	   676	  2202#
	  2202	  2210
NTPNT	   363#	   363	   376#	   376	   386#	   386	   443	   479	   484	   510	   513	   524	   534	   577
	   580	   584	   652#	   652	  2202#	  2202
NTRCBN	  3180#	  3180	  3183	  3187
OBELLB	  7127#	  7127	  7132
OBJPTR	  1475#	  1475	  1487
OKINT	   362	   370	   375	   385	   405	   944	   945	   989	  1001	  1013	  1022	  1030	  1033	  1072
	  1079	  1098	  1118	  1127	  1233	  1298	  2009	  3401	  4770	  4784	  5113	  5763	  7540	  7547
	  7603	  7609
OKSKD1	  1964	  4018	  4831	  6355	  6390	  6395	  6432	  6967
OKSKED	  4760	  4769
OPSTR	   643	  1424	  1978	  1981	  1984	  1990	  1995	  1997	  1999	  2160	  2254	  2481	  2719	  2961
	  5278	  5336	  5873	  5884	  6439
OPSTRM	  6423	  6961	  6963
OPTDAT	  3247#	  3247	  3252	  3272#	  3272	  3274
PIOFF	  6683
PION	  6689	  6691
PRTCNT	  6983#	  6983	  6992
PRTNO	  6983#	  6983	  6990
RDICNT	  3029#	  3029	  3047	  3062
RDIPTR	  3029#	  3029	  3033	  3049	  3053	  3063
RDIRTN	  3029#	  3029	  3032	  3058
RESCD	   893	  1214	  1404	  1661	  2525	  2591	  2685	  3691	  3894	  4492	  4789	  5290	  6134	  6255
	  7054
RET	   290	   291	   292	   299	   300	   301	   302	   303	   304	   305	   309	   310	   317	   327
	   328	   329	   337	   338	   339	   340	   341	   342	   343	   347	   348	   362	   365	   367
	   375	   378	   380	   385	   388	   390	   396	   405	   417	   429	   446	   465	   487	   515
	   517	   522	   531	   533	   561	   566	   573	   576	   582	   592	   608	   614	   620	   623
	   649	   657	   662	   664	   666	   673	   680	   705	   709	   714	   724	   752	   783	   788
	   812	   825	   828	   835	   840	   843	   850	   859	   865	   878	   884	   903	   937	   944
	   954	   976	   990	  1002	  1023	  1031	  1080	  1098	  1129	  1162	  1185	  1190	  1207	  1209
	  1223	  1230	  1234	  1249	  1283	  1299	  1317	  1342	  1350	  1370	  1390	  1426	  1433	  1441
	  1456	  1491	  1495	  1524	  1541	  1570	  1613	  1626	  1638	  1641	  1668	  1686	  1697	  1702
	  1725	  1729	  1741	  1753	  1765	  1774	  1810	  1815	  1875	  1892	  1914	  1925	  1938	  1952
	  2010	  2039	  2057	  2073	  2090	  2107	  2142	  2147	  2149	  2163	  2171	  2177	  2182	  2206
	  2208	  2218	  2256	  2260	  2270	  2276	  2316	  2434	  2491	  2515	  2627	  2671	  2688	  2741
	  2750	  2787	  2826	  2833	  2871	  2906	  2917	  2927	  2954	  2963	  2988	  3014	  3070	  3080
	  3107	  3111	  3115	  3118	  3278	  3283	  3309	  3356	  3396	  3438	  3444	  3451	  3506	  3527
	  3536	  3542	  3709	  3742	  3753	  3759	  3764	  3771	  3776	  3783	  3794	  3836	  3858	  3959
	  3963	  4022	  4101	  4132	  4196	  4217	  4235	  4280	  4291	  4374	  4466	  4471	  4480	  4484
	  4503	  4529	  4662	  4754	  4771	  4817	  5027	  5033	  5040	  5043	  5050	  5084	  5092	  5271
	  5280	  5284	  5292	  5295	  5325	  5338	  5355	  5368	  5377	  5395	  5521	  5687	  5800	  5807
	  5923	  5939	  5947	  5984	  6035	  6051	  6077	  6114	  6162	  6165	  6224	  6235	  6238	  6244
	  6286	  6341	  6356	  6433	  6442	  6450	  6515	  6523	  6528	  6539	  6578	  6601	  6618	  6628
	  6790	  6859	  6989	  7014	  7060	  7076	  7097	  7100	  7134	  7147	  7153	  7167	  7247	  7257
	  7301	  7309	  7332	  7346	  7351	  7356	  7358	  7367	  7373	  7396	  7403	  7407	  7422	  7430
	  7432	  7436	  7453	  7515	  7548	  7568	  7610	  7632	  7641	  7648	  7714	  7741	  7744
RETBAD	   362	   365	   367	   375	   378	   380	   385	   388	   390	   396	   405	   417	   429	   515
	   517	   522	   531	   533	   561	   566	   573	   576	   582	   592	   608	   614	   620	   623
	   662	   664	   666	   673	   680	   709	   724	   752	   783	   788	   812	   859	   865	   878
	   884	   944	   954	  1098	  1129	  1162	  1185	  1190	  1426	  1433	  1638	  1641	  1668	  1810
	  2073	  2163	  2171	  2177	  2182	  2206	  2208	  2218	  2316	  2491	  2833	  2871	  2954	  3014
	  3278	  3309	  3356	  3396	  3438	  3444	  3451	  3858	  4022	  4235	  4280	  4291	  4374	  4471
	  4662	  6790	  6859	  6989	  7301	  7309	  7332	  7346	  7351	  7356	  7358	  7367	  7373	  7396
	  7403	  7407	  7422	  7430	  7432	  7436	  7453	  7515	  7548	  7568	  7632	  7641	  7648	  7714
RETERR	   659
RETSKP	   366	   379	   389	   423	   431	   528	   536	   593	   632	   657	   681	   768	   789	   805
	   820	   887	   955	  1014	  1047	  1073	  1119	  1194	  1210	  1253	  1276	  1352	  1371	  1429
	  1436	  1482	  1556	  1583	  1645	  1669	  1712	  1718	  1904	  2123	  2181	  2248	  2261	  2277
	  2369	  2457	  2470	  2498	  2518	  2675	  2724	  2759	  2841	  2867	  2870	  2893	  2912	  2922
	  2934	  2943	  2946	  2953	  2999	  3064	  3086	  3154	  3285	  3317	  3411	  3455	  3490	  3602
	  3767	  3774	  3851	  3890	  3964	  4013	  4123	  4137	  4192	  4341	  4442	  4507	  4532	  4667
	  4813	  4818	  5096	  5113	  5115	  5285	  5297	  5522	  5688	  5926	  5929	  5978	  6058	  6087
	  6147	  6177	  6194	  6208	  6246	  6707	  6780	  6844	  6945	  6956	  6973	  6995	  7091	  7155
	  7314	  7324	  7334	  7341	  7352	  7361	  7369	  7379	  7386	  7419	  7449	  7459	  7470	  7473
	  7496	  7541	  7605	  7676	  7700	  7724	  7745
RMNNAM	  1055#	  1055	  1061	  1068
SAVADR	  2100#	  2100	  2118
SAVBLK	  1802#	  1802	  1816	  1820	  1827	  1845	  1851	  1870	  1873	  1887	  1894	  1911	  1919	  1921
	  1926	  1948#	  1948	  1967	  1972	  1977	  2130#	  2130	  2140	  3833#	  3833	  3837	  3850
SAVBSZ	  1802#	  1802	  1807	  1898
SAVEAC	   778	   781	  1257	  1289	  1407	  2593	  4746	  6437	  6950	  7704
SAVEPQ	  7004
SAVERR	  1802#	  1802	  1825	  1876	  1885	  1893	  1910	  1913	  1941
SAVET	  1144	  1364	  1589	  1604	  1932	  2005	  2252	  2958	  2979	  4814	  5081	  5274	  5328	  5366
	  5695	  5911	  6257	  6463	  6668	  7056
SAVFF	  6267#	  6267	  6269	  6285
SAVLL	  3833#	  3833	  3840	  6258#	  6258
SAVMSG	  6258#	  6258
SAVOPT	  3833#	  3833	  3846
SAVPST	  6267#	  6267	  6278	  6282
SAVSTR	  1802#	  1802	  1806	  1853	  1877
SBFLLB	  6071#	  6071	  6075	  6078
SE1ENT	  4719
SETONE	   756	  1695	  1700	  1727	  1763	  1896	  1902	  2245	  2455	  2467	  3353	  3379	  3734	  3881
	  4339	  4406	  4500	  4528	  4841	  4977	  4985	  4990	  5099	  5211	  5388	  5447	  5673	  5864
	  5965	  6027	  6076	  6085	  6274	  6290	  6337	  6366	  6415	  6580	  6687	  6835	  7457
SETZRO	   757	  1294	  1295	  1723	  1959	  1961	  2054	  2063	  2065	  2067	  2077	  2083	  2088	  2338
	  2583	  3487	  3725	  3732	  3848	  3884	  4057	  4099	  4221	  4269	  4271	  4301	  4505	  4530
	  5054	  5228	  5670	  5844	  5866	  5920	  6033	  6034	  6056	  6448	  6600	  6645	  6655	  6842
	  7031	  7037	  7112	  7133	  7469
SIMCNT	  3101#	  3101	  3105	  3108	  3137
SIMLLB	  3101#	  3101
SIMPTR	  3101#	  3101	  3104	  3138	  3142	  3153
SIMRTN	  3101#	  3101	  3103	  3144
SIN	   461	   483
SNDLBL	  6903#	  6903	  6920
SNDLCT	  6903#	  6903	  6941	  6957
SNDLMS	  6903#	  6903	  6917	  6930	  6943
SNDLTP	  6903#	  6903	  6937	  6958
SNLBLK	  6325#	  6325	  6340	  6360#	  6360
SNMSG	  6325#	  6325	  6360#	  6360	  6381	  6396
SNTBLK	  7389#	  7389	  7410	  7415
SNTCNT	  7389#	  7389	  7408	  7417
SQALLB	  4518#	  4518	  4520	  4527
SQICNT	  4263#	  4263	  4265	  4277	  4293	  4311	  4319
SQLLLB	  4494#	  4494	  4496	  4504
SSVDSC	  2447#	  2447	  2450
SSVDSS	  2447#	  2447	  2452
SSVHSC	  2447#	  2447	  2449	  2454	  2480	  2494
SSVHST	  2447#	  2447	  2451	  2463	  2487	  2493
STKVAR	   456	   690	  1145	  1408	  1679	  2293	  2379	  2447	  2548	  2594	  2616	  3029	  3101	  3180
	  3247	  3272	  3296	  3425	  3466	  3554	  3693	  3870	  4006	  4090	  4263	  4366	  4445	  4494
	  4518	  4751	  5329	  5696	  5912	  5996	  6043	  6267	  6465	  6751	  7297	  7389	  7551	  7614
	  7705
STOR	   646	   648	  1273	  1582	  1821	  1847	  1852	  1895	  1899	  2050	  2076	  2119	  2121	  2146
	  2148	  2212	  2219	  2234	  2237	  2240	  2244	  2305	  2365	  2495	  2575	  2908	  2919	  2929
	  3126	  3132	  3133	  3148	  3150	  3210	  3238	  3242	  3310	  3368	  3430	  3454	  3651	  3654
	  3696	  3704	  3706	  3887	  3889	  4081	  4084	  4085	  4142	  4145	  4153	  4186	  4428	  4767
	  4877	  4931	  5204	  5207	  5220	  5223	  5252	  5264	  5303	  5322	  5324	  5429	  5446	  5454
	  5456	  5494	  5496	  5509	  5511	  5513	  5517	  5533	  5607	  5646	  5648	  5654	  5656	  5666
	  5667	  5819	  5836	  5876	  5886	  5951	  5956	  6079	  6080	  6081	  6083	  6102	  6113	  6260
	  6293	  6327	  6329	  6369	  6422	  6430	  6525	  6598	  6831	  6886	  6929	  6931	  6932	  6934
	  6991	  6993	  7041	  7164	  7200	  7226	  7448	  7454	  7456
SWAPCD	   284	   907	  1307	  1452	  1671	  2542	  2634	  2698	  3796	  4198	  4538	  4713	  4821	  5301
	  6228	  7002	  7262	  7751
TBADD	  1028
TBDEL	  1189
TBLUK	   987	  1062	  1206	  1478	  7739
TDSLLB	  5696#	  5696	  5698	  5712
TDSSTS	  5696#	  5696	  5706	  5707	  5711
TLDCNT	  5996#	  5996	  5999
TLDFLG	  5996#	  5996	  6000	  6007
TLDLLB	  5996#	  5996	  5998	  6004	  6025	  6032
TMNE	  2553	  2568	  2576	  2767	  2800	  2817	  3348	  3512	  3522	  3726	  4009	  4297	  4411	  4523
	  5186	  5311	  5580	  6127	  6261	  6271	  6330	  6458	  6701	  6904
TMNN	  2930	  3532	  3546	  3581	  3586	  3949	  4266	  4833	  6630
TMSLLB	  6043#	  6043	  6045	  6047	  6052
TNXEND	   197#	  7755
TQNE	   368	   395	   627	   629	  3604
TQNN	   402	   414	   422	   607	   708
TQO	   606	   713	   858	   877	  3010	  3282	  3376	  3501	  3607	  3788	  3816	  3821	  3824	  4210
	  4226	  4234	  4250	  4303	  4470	  4477	  5520	  6099
TQOE	  3541
TQZ	  3445	  3517	  3526
TQZE	   605
TQZN	   824	   839
TRVAR	   363	   376	   386	   652	  1327	  1378	  1565	  1802	  2202	  4109	  4165	  4364	  4720	  5046
	  6785	  6851	  7174
TSKBLK	  1565#	  1565	  1571	  1581	  1584	  1592
TTITLE	   196
TXC	  2815	  6233
TXNE	   368	   395	   627	   629	  1841	  2476	  2554	  2568	  2577	  2581	  2598	  2768	  2801	  2818
	  2824	  3340	  3349	  3370	  3374	  3378	  3513	  3523	  3604	  3727	  3758	  3874	  3912	  3931
	  4010	  4020	  4247	  4282	  4298	  4389	  4412	  4524	  4943	  5086	  5112	  5187	  5311	  5333
	  5419	  5554	  5560	  5578	  5581	  5624	  5703	  5746	  5791	  5797	  5872	  5874	  5900	  5938
	  6020	  6026	  6069	  6084	  6128	  6262	  6272	  6331	  6372	  6384	  6408	  6409	  6459	  6513
	  6569	  6617	  6675	  6702	  6905	  7219
TXNN	   402	   414	   422	   607	   656	   708	   991	  1064	  1208	  1265	  1366	  1479	  1529	  1710
	  1716	  1988	  2080	  2478	  2814	  2832	  2863	  2931	  2977	  3114	  3163	  3228	  3328	  3363
	  3394	  3533	  3547	  3582	  3587	  3950	  3971	  3988	  4049	  4219	  4267	  4404	  4409	  4437
	  4834	  4990	  5385	  5700	  5861	  5887	  6009	  6054	  6123	  6564	  6608	  6613	  6631	  6641
	  6685	  6838	  6970	  7110	  7300	  7345	  7366	  7395	  7743
TXO	   606	   713	   858	   877	  2802	  2805	  2807	  2810	  2813	  2819	  2821	  2825	  3010	  3282
	  3376	  3501	  3607	  3725	  3736	  3788	  3816	  3821	  3824	  4094	  4210	  4226	  4234	  4250
	  4303	  4470	  4477	  4525	  5520	  6021	  6099	  6221	  6273	  6770
TXOE	  3541
TXZ	  3445	  3517	  3526
TXZE	   605	  5812	  6204
TXZN	   824	   839
UMOVE	   779	   780	   786	   794	  2775	  2883	  2989	  3076	  3077	  3078	  3222	  3253	  3254	  3275
	  3276	  7267	  7305	  7306	  7318	  7319	  7328	  7329	  7338	  7347	  7348	  7370	  7371	  7383
	  7400	  7401	  7404	  7426	  7428	  7476	  7479	  7489	  7506	  7509	  7518	  7526	  7556	  7557
	  7627	  7710	  7711
UMOVEM	   753	   818	  2785	  2839	  2879	  2891	  2993	  2994	  3083	  3172	  3266	  7340	  7385	  7478
	  7481	  7483	  7485	  7491	  7493	  7495	  7574	  7581	  7588	  7591	  7638	  7645	  7660	  7663
	  7723
UNLOCK	   909	   910	   911	   912	   988	  1000	  1012	  1021	  1029	  1032	  1071	  1078	  1231	  2056
	  7013	  7602	  7608	  7740	  7742
WAITER	  5046#	  5046	  5074	  5095	  5108
XCTBU	  2783	  2786	  2889	  3313	  7695	  7698
XCTBUU	  2987	  3079
XCTU	   715	   753	   779	   780	   786	   794	   818	  2775	  2785	  2839	  2879	  2883	  2891	  2989
	  2993	  2994	  3076	  3077	  3078	  3083	  3172	  3222	  3253	  3254	  3266	  3275	  3276	  3279
	  7267	  7305	  7306	  7318	  7319	  7328	  7329	  7338	  7340	  7347	  7348	  7370	  7371	  7383
	  7385	  7400	  7401	  7404	  7426	  7427	  7428	  7476	  7478	  7479	  7481	  7483	  7485	  7489
	  7491	  7493	  7495	  7506	  7509	  7518	  7526	  7556	  7557	  7569	  7574	  7581	  7588	  7591
	  7619	  7620	  7627	  7628	  7638	  7645	  7660	  7663	  7710	  7711	  7723
XGLOBS	   197
XMOVEI	  1577	  7415
%BLKF	   713	   858	   877	  3010	  3282	  3376	  3445	  3517	  3607	  3788	  4226	  4234	  4477	  5520
	  6099
%DCCUR	   693	  1836	  1837	  1874	  1891	  2265	  3402
%DCMAX	  1838
%EOFF	  3824
%ERRF	  3604	  3816	  3821	  4210	  4250	  4470
%FILAT	   675	  2706
%FILIN	   839	  3501	  3526
%FILOU	   824	  3541
%FKNTC	  7457	  7469
%IOMOD	  2559
%LLACT	  1997	  2086	  2237	  2856	  5253
%LLBFI	  6022	  6034	  6066	  6079
%LLBFO	  7129	  7133
%LLBOM	  1896	  3724	  3725	  3734
%LLBPI	  5944	  5951	  6083
%LLBRP	  3752	  3996	  5864	  5866	  6563	  6610
%LLBSZ	  1740	  1899	  3343	  3640	  4273	  4313	  4318	  4416	  5317
%LLCIL	  5388	  6705
%LLDED	  5088	  5099
%LLDMT	  4029	  4048	  4434	  6411	  6422
%LLDRB	  6068	  6076
%LLDRC	   757	  2929	  6439
%LLDRV	  1368	  2981	  5353	  5714	  6023	  6073	  7116	  7130
%LLDRW	  2930	  4024	  6423
%LLDSC	  1990	  2219	  2257	  2258	  5281
%LLDSN	  3702	  3704
%LLDWN	  1421	  1542	  1961	  1973	  2148
%LLFDI	  1902	  2576	  2583	  2814	  4246	  5670	  5673
%LLFDS	  1852	  1984	  2076	  2308	  2337	  2338	  2346	  3189	  3194	  5224	  5228
%LLFEM	  1763	  3353	  3581	  3586	  3726	  3732
%LLFIM	  2817	  3532	  4221	  4269	  4297	  4301	  4406	  4411	  4436	  5920	  6009	  6019	  6026	  6053
%LLFLI	  1715	  3512	  3522	  3949	  4218	  4266	  4271	  4339
%LLFLO	  1709	  1723	  1727	  3348	  3546
%LLFNA	  4099	  4281	  4528	  4530
%LLFNM	  2063	  2305	  3173	  5223
%LLFNN	  4009	  4099	  4523	  4530	  6415
%LLFOB	  1528	  1987	  2079	  2245	  2800	  2831	  2862	  3162	  5418
%LLFRK	   756	  1933	  2121	  2227	  2960	  5335	  5890	  6438
%LLHLK	  1424	  2065	  2531	  5324	  5511	  5685	  6375	  6952
%LLHST	  1430	  1847	  2069	  2496	  2602	  2766	  5214	  5509
%LLICT	  5945	  5954	  5956	  6005	  6016	  6033	  6080
%LLIDN	  4034	  4093	  4184	  4378	  4428	  4521	  7149	  7164
%LLIIC	  6015	  6033	  6081
%LLIIN	  4183	  5820	  5836	  6744
%LLIMS	  2553	  4049	  4408	  6127
%LLINT	  1365	  2580	  2976	  5332	  5384	  5577	  5699	  5796	  5899	  6383	  6512	  6969	  7218
%LLISN	  3129	  3133	  6926	  6929
%LLLNK	  1280	  1415	  1555	  1949	  1965	  2119	  2131	  2143	  2144	  2533	  3147	  3780	  5513	  6328
	  6374
%LLLOC	  2455	  2467	  2568	  2597	  2767	  5085	  5211	  5311	  6261	  6330	  6458	  6701	  6904
%LLLSA	  4500	  4505	  5580	  6409
%LLLSC	  4284	  4330	  4413	  4497	  4505
%LLLWC	  2823	  5447
%LLMFC	  3720	  3765	  5303	  5878	  6553	  6612	  6636
%LLMIC	  3113	  3135	  3889	  5456	  5873	  5876	  6961
%LLMQI	   646	  4046	  6126	  6413
%LLMQO	   648	  3761	  3921	  6910
%LLMSM	  3739	  3768	  3930	  3939	  5884	  5886	  6555	  6564	  6567	  6571	  6615	  6643	  6963
%LLNAM	  2212	  2253	  2254	  5278
%LLNDO	  7109	  7112
%LLOCT	  7026	  7078	  7084
%LLOPI	  1695	  6122
%LLOPT	  1821	  1828	  1978	  2899	  5260	  5449	  5603
%LLOPW	   643	  1700
%LLOUT	  2032	  2046	  2050	  7019	  7036	  7037	  7041	  7045
%LLPCT	  2088	  2878	  5252
%LLPIC	   757	  2908	  5336
%LLPII	   757	  2919	  2961
%LLPRT	  2495	  2570	  5090	  5220	  5313	  5517	  6264	  6293	  6335	  6369	  6831	  6886
%LLPSW	  1999	  2240	  2877	  5248
%LLQOU	  3227	  3362	  3760	  3920	  3987	  6347	  6496	  6655	  6909
%LLQUE	  2017	  2054	  7031
%LLQUN	  3757	  3970	  6582	  6607	  6634	  6655
%LLRCT	  1264	  1270	  1290	  1292	  1295	  3911
%LLRFK	  1267	  1273	  1294
%LLRSN	  2077	  2799	  3368	  3390	  3440	  4145	  5494	  5648	  5656	  5666
%LLSDE	  3379	  5111	  5623	  5702	  5745
%LLSOB	  2083	  2838	  5207
%LLSTA	  1549	  1752	  2244	  2365	  2535	  2803	  2834	  2865	  2868	  2909	  3165	  3210	  3215	  3238
	  3242	  3249	  3334	  3430	  3454	  3502	  3887	  3900	  3960	  3980	  4142	  4153	  4205	  5082
	  5098	  5204	  5421	  5429	  5446	  5496	  5547	  5608	  5646	  5654	  5667	  5734	  5787	  6102
	  6386	  7221
%LLSWG	  1773	  2565	  2575	  3265	  5308	  5322
%LLTRC	  5964	  6085
%LLTRM	  5937	  5965	  6027	  6056
%LLTRN	  3873	  3881	  3884
%LLTSK	  1582	  1590	  1895	  1939	  1981	  2355	  2756	  5276
%LLTTY	  4758	  4767
%LLUCT	  2067	  2900	  5264	  5454	  5607
%LLUPL	  1419	  1535	  1955	  1959	  1968	  2146
%LLUSR	  1995	  2084	  2234	  2849	  5244
%LLVEC	  2980	  5352	  5713	  6014	  6072	  7114	  7128
%MSCNT	  4845	  6260	  6327	  6334	  6993	  7180
%MSDTC	  3046	  3654	  4113	  4170	  4383	  5533	  6113	  7154	  7226
%MSLCL	  4833	  4841	  6290	  6366
%MSLLA	  3148	  6329	  6932
%MSLNK	  4016	  4057	  4076	  4081	  4083	  4084	  4085	  4429	  4826	  5844	  6430	  6501	  6506	  6519
	  6524	  6525	  6576	  6598	  6600	  6632	  6672	  7165	  7250
%MSMFL	  3126	  3696	  4019	  4117	  4403	  4877	  5306	  5558	  5571	  6371	  6407	  6564	  6640	  7200
%MSMS1	  6271	  6274
%MSNAK	  6580	  6630	  6645
%MSPRT	  4838	  4900	  4915	  5022	  5185	  5219	  5516	  6991
%MSPST	  6337	  6448	  6674	  6684
%MSRLS	  6446	  6687
%MSSEG	  3132	  3706	  4060	  4065	  4186	  4377	  4427	  5819	  6487	  6544	  6931	  7148	  7163
%MSTOM	  3150	  3651	  6484	  6541	  6934
%NAMCN	  2481	  4931	  4966
%NSPNU	  4303
%NTATB	   266#	  2164
%NTATC	   264#	  2165
%NTATE	   265#	  2178
%NTATR	   263#	  2160
%NTCCH	  1042	  7448	  7454
%NTCFR	  1041	  7446	  7456	  7465
%OPNF	   708
%PRFXL	  2721
%PRFXV	  2719
%READF	   414	   607	   627
%RNDF	   605
%STEPF	   395	   402
%UNLKF	   368
%WRTF	   422	   606	   607	   629
..0012	  4299#	  4305
..0013	  4299#	  4305
..0014	  4299#	  4305
..0015	  4299#	  4305
..0024	  6621#	  6629
..0025	  6621#	  6629
..0026	  6621#	  6629
..0027	  6621#	  6629
..CNS	   607	   607#	   757#	   757	  4099#	  4099	  4505#	  4505	  4530#	  4530	  5054#	  5054	  6033#	  6033
	  6655#	  6655
..CNS2	   607	   607#	   757#	   757	  4099#	  4099	  4505#	  4505	  4530#	  4530	  5054#	  5054	  6033#	  6033
	  6655#	  6655
..GCNS	   607	   757	  4099	  4505	  4530	  5054	  6033	  6655
..INDF	  4299	  6621
..JN	  2580	  2597	  2823	  3724	  3752	  3757	  3873	  3911	  3930	  4246	  4281	  4916	  5085	  5088
	  5111	  5332	  5418	  5577	  5623	  5702	  5745	  5796	  5899	  5937	  6019	  6026	  6066	  6068
	  6383	  6409	  6446	  6512	  6563	  6610	  6674	  7026	  7084	  7218
..RSDF	  4305	  6629
..STR3	   607
..SVDF	  4299	  6621
..TAGE	  4299	  4301#	  4305#	  6621	  6623#	  6629#
..TAGF	  4299	  4301#	  4305	  4305#	  6621	  6623#	  6629	  6629#
..TYNE	  2553	  2568	  2576	  2767	  2800	  2817	  3348	  3512	  3522	  3726	  4009	  4297	  4411	  4523
	  5186	  5311	  5580	  6127	  6261	  6271	  6330	  6458	  6701	  6904
..TYNN	  2930	  3532	  3546	  3581	  3586	  3949	  4266	  4833	  6630
.ENAV1	   814	  1319	  1615	  2184	  2279	  2371	  2500	  2520	  2541	  2633	  2646	  2677	  2789	  2895
	  3072	  3156	  3319	  3413	  4103	  5397	  6179	  6586	  7259
.ENAV2	   814	  1319	  1615	  2184	  2279	  2371	  2500	  2520	  2541	  2633	  2646	  2677	  2789	  2895
	  3072	  3156	  3319	  3413	  4103	  5397	  6179	  6586	  7259
.ENAV3	   814	  1319	  1615	  2184	  2279	  2371	  2500	  2520	  2541	  2633	  2646	  2677	  2789	  2895
	  3072	  3156	  3319	  3413	  4103	  5397	  6179	  6586	  7259
.ENSV1	  2092
.ENSV2	  2092
.ENSV3	  2092
.POPX	  4305	  6629
.POPX2	  4305	  6629
.POPX3	  4305	  6629
.POPX4	  4305	  6629
.PSHX	  4299	  6621
.PSHX1	  4299	  4299#	  4305	  4305#	  6621	  6621#	  6629	  6629#
.PSHX2	  4299	  6621
.XCMSY	   197