

; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 1

; Digital Equipment Corporation

;

;	0001	MODULE NCMAIN

;	0002			(MAIN = NIC$MAIN,

;	0003			 IDENT = 'X12'

;	0004			) =

;	0005	BEGIN

;	0006	

;	0007	

;	0008	;

;	0009	! COPYRIGHT (C) 1977

;	0010		

;	0011	! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

;	0012	! 

;	0013	! THIS SOFTWARE IS FURNISHED  UNDER A LICENSE FOR USE ONLY ON A SINGLE

;	0014	! COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH THE  INCLUSION OF THE

;	0015	! ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

;	0016	! MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

;	0017	! EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

;	0018	! TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

;	0019	! REMAIN IN DEC.

;	0020	!

;	0021	! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE

;	0022	! AND SHOULD  NOT BE CONSTRUED  AS A COMMITMENT  BY DIGITAL  EQUIPMENT

;	0023	! CORPORATION.

;	0024	!

;	0025	! DEC ASSUMES  NO  RESPONSIBILITY  FOR  THE  USE OR RELIABILITY OF ITS

;	0026	! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.

;	0027	!

;	0028	!++

;	0029	! FACILITY:

;	0030	!

;	0031	!	NICE -  Network object to control and monitor the network.

;	0032	!

;	0033	! ABSTRACT:

;	0034	!

;	0035	!	This module contains the mainline routine (NIC$MAIN), the error

;	0036	!	handler (CK_ERR), and routines to handle the 'test', 'loop',

;	0037	!	'set parameter', 'read information', and 'zero counters' NICE

;	0038	!	functions.

;	0039	!

;	0040	! ENVIRONMENT:

;	0041	!

;	0042	! AUTHOR:

;	0043	!

;	0044	!	Al Eldridge	30-JULY-78

;	0045	!

;	0046	! MODIFICATIONS:

;	0047	!

;	0048	! MODIFIED BY:

;	0049	!

;	0050	!		, : VERSION

;	0051	! 01	-

;	0052	!

;	0053	!--

;	0054	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 2

; Digital Equipment Corporation

;

;	0055	!

;	0056	! INCLUDE FILES:

;	0057	!

;	0058	

;	0059	

;	0060	  SWITCHES  LIST (REQUIRE) ;

;	0061	

;	0062	  REQUIRE 'SRC$:NICDEF.B32';

;      R0063	!FILE  NICDEF.B32

;      R0064	

;      R0065	

;      R0066	! COPYRIGHT (C) 1977

;      R0067		

;      R0068	! DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASSACHUSETTS 01754

;      R0069	! 

;      R0070	! THIS SOFTWARE IS FURNISHED  UNDER A LICENSE FOR USE ONLY ON A SINGLE

;      R0071	! COMPUTER  SYSTEM AND  MAY BE  COPIED ONLY WITH THE  INCLUSION OF THE

;      R0072	! ABOVE COPYRIGHT NOTICE.  THIS SOFTWARE, OR ANY OTHER COPIES THEREOF,

;      R0073	! MAY NOT BE PROVIDED OR  OTHERWISE MADE AVAILABLE TO ANY OTHER PERSON

;      R0074	! EXCEPT FOR USE ON SUCH SYSTEM AND TO ONE WHO AGREES TO THESE LICENSE

;      R0075	! TERMS.  TITLE TO AND  OWNERSHIP OF THE  SOFTWARE  SHALL AT ALL TIMES

;      R0076	! REMAIN IN DEC.

;      R0077	!

;      R0078	! THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE

;      R0079	! AND SHOULD  NOT BE CONSTRUED  AS A COMMITMENT  BY DIGITAL  EQUIPMENT

;      R0080	! CORPORATION.

;      R0081	!

;      R0082	! DEC ASSUMES  NO  RESPONSIBILITY  FOR  THE  USE OR RELIABILITY OF ITS

;      R0083	! SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.

;      R0084	!

;      R0085	!++

;      R0086	! FACILITY:

;      R0087	!

;      R0088	!	NICE -  Network object to control and monitor the network.

;      R0089	!

;      R0090	! ABSTRACT:

;      R0091	!

;      R0092	!	This module is used as a 'require file' for all of the modules

;      R0093	!	of the NICE facility.  It provides definitions for literals,

;      R0094	!	data structures, and macros.

;      R0095	!

;      R0096	! ENVIRONMENT:

;      R0097	!

;      R0098	! AUTHOR:

;      R0099	!

;      R0100	!	Al Eldridge	31-JULY-78

;      R0101	!

;      R0102	! MODIFICATIONS:

;      R0103	!

;      R0104	! MODIFIED BY:

;      R0105	!

;      R0106	!		, : VERSION

;      R0107	! 01	-

;      R0108	!

;      R0109	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 2-1

; Digital Equipment Corporation

;

;      R0110	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 3

; Digital Equipment Corporation

;

;      R0111	  ! A general purpose null field indicater useful in run-time

;      R0112	  ! binding applications

;      R0113	

;      R0114	MACRO	Z4	= 0,0,0,0 % ;

;      R0115	

;      R0116	

;      R0117	  ! Double Descriptor Block Definition

;      R0118	  !		and

;      R0119	  ! Normal Descriptor Block Defintion

;      R0120	

;      R0121	  LITERAL

;      R0122		NDSC_SIZE	= 2,	! Size of normal block

;      R0123					! in longwords

;      R0124	

;      R0125		DDSC_SIZE	= 4 ;	! Size of double block

;      R0126					! in longwords

;      R0127	

;      R0128	  FIELD

;      R0129	    NDSC_FIELDS =

;      R0130	       SET

;      R0131		DSC_LNG = [0,0,32,0],	! Length of described string

;      R0132		DSC_PTR = [1,0,32,0]	! Pointer to   "         "

;      R0133	       TES,

;      R0134	

;      R0135	    DDSC_FIELDS =

;      R0136	       SET

;      R0137		STR_DSC = [0,0,32,0],	! String subblock offset

;      R0138		BUF_DSC = [2,0,32,0],	! Buffer subblock offset

;      R0139		STR_LNG	= [0,0,32,0],	! String length field

;      R0140		STR_PTR	= [1,0,32,0],	! String address

;      R0141		BUF_LNG	= [2,0,32,0],	! Buffer length

;      R0142		BUF_PTR	= [3,0,32,0]	! Buffer address

;      R0143	       TES ;

;      R0144	

;      R0145	

;      R0146	

;      R0147	  MACRO		! Define macros for declaring these data structures

;      R0148	

;      R0149		DDSC	= BLOCK [DDSC_SIZE]  FIELD (DDSC_FIELDS) %,

;      R0150	

;      R0151		NDSC	= BLOCK [NDSC_SIZE]  FIELD (NDSC_FIELDS) % ;

;      R0152	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 4

; Digital Equipment Corporation

;

;      R0153	  ! I/O Status Block definition

;      R0154	

;      R0155	  LITERAL	IOSB_SIZE = 2 ;	! Block size in longwords

;      R0156	

;      R0157	  FIELD

;      R0158	    IOSB_FIELDS =

;      R0159		SET

;      R0160		IO_STAT	= [0,0,16,0],	! Status field

;      R0161		IO_CNT	= [0,16,16,0],	! Byte count field

;      R0162		IO_INFO	= [1,0,32,0]	! Device dependent info.

;      R0163		TES ;

;      R0164	

;      R0165	  MACRO

;      R0166		IO_SB	= BLOCK [IOSB_SIZE]  FIELD (IOSB_FIELDS) % ;

;      R0167	

;      R0168	

;      R0169	

;      R0170	  ! QIOW Function Block for ACP control functions.

;      R0171	

;      R0172	  LITERAL	FBLK_SIZE = 5 ;	! Block size in bytes

;      R0173	

;      R0174	  FIELD

;      R0175	    FBLK_FIELDS =

;      R0176		SET

;      R0177		FCT	= [0,0,8,0],

;      R0178		PARM	= [1,0,32,0] 

;      R0179		TES ;

;      R0180	

;      R0181	  MACRO

;      R0182		FBLK	= BLOCK [FBLK_SIZE,BYTE]  FIELD (FBLK_FIELDS) % ;

;      R0183	

;      R0184	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 5

; Digital Equipment Corporation

;

;      R0185	  ! Definition of LINE_NAME Structure

;      R0186	

;      R0187	  LITERAL	LN_NAME_SIZE	= 4 ;	! 4 bytes long

;      R0188	

;      R0189	  FIELD

;      R0190	    LN_NAME_FIELDS	=

;      R0191		SET

;      R0192		LNTYPE	= [0,0,16,0],		! Indentifies dm11,etc

;      R0193		LNCONT	= [2,0,8,0],		! Line controller field

;      R0194		LNNUMB	= [3,0,8,0]		! Line number

;      R0195		TES ;

;      R0196	

;      R0197	  MACRO

;      R0198		LINE_NAME	= BLOCK [LN_NAME_SIZE,BYTE]  

;     MR0199				  FIELD (LN_NAME_FIELDS) % ;

;      R0200	

;      R0201	STRUCTURE		! This structure is intended only

;      R0202				! to be a source for address binding --

;      R0203				!  - note the <0,0,0> attribute

;      R0204	

;      R0205		LINE_NAME_VEC [O; N, UNIT=LN_NAME_SIZE] =

;      R0206				[N*UNIT]

;      R0207				(LINE_NAME_VEC + O*UNIT)<0,0,0> ;

;      R0208	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 6

; Digital Equipment Corporation

;

;      R0209	!+

;      R0210	! Define the fields and structure declaration macro for the

;      R0211	! Message Control Block (MCB).  This block is used to pass status

;      R0212	! and control information between modules.

;      R0213	!-

;      R0214	

;      R0215	  LITERAL   MCB$K_SIZE  = 72,	! Size in bytes of the

;      R0216					! structure

;      R0217	

;      R0218			! The following are the sizes, in bytes, of

;      R0219			! fields which are greater than 32 bits, and

;      R0220			! therefore not supported directly by BLIS32

;      R0221	

;      R0222		    MCB$S_ACP_FBLK	= 5,	! Size of MCB$Z_ACP_FBLK

;      R0223		    MCB$S_ACP_IOSB	= 8,	!  "   "  MCB$Z_ACP_IOSB

;      R0224		    MCB$S_MSG_ISB	= 8,	!  "   "  MCB$Z_MSG_ISB

;      R0225		    MCB$S_MSG_OSB	= 8 ;	!  "   "  MCB$Z_MSG_OSB

;      R0226	

;      R0227	FIELD

;      R0228	     MCB_FIELDS	=

;      R0229		SET

;      R0230		MCB$L_REPLYCODE	= [0,0,32,1],	! The standard internal NICE 

;      R0231						! status code, all failure codes

;      R0232						! are double their values as

;      R0233						! defined in the NICE protocol 

;      R0234						! that the low bit is clear.

;      R0235		MCB$A_EXIT_RT	= [4,0,32,0],	! The address of a routine thru

;      R0236						! which any routine may exit.

;      R0237						! This routine serves as a NOP

;      R0238						! unless MCB$_ERROR_ON is set,

;      R0239						! in which case if the low bit

;      R0240						! of MCB$L_REPLYCODE is clear

;      R0241						! then a fatal error exits, and

;      R0242						! control is not returned to 

;      R0243						! the calling routine.

;      R0244		MCB$W_ACP_STAT	= [8,0,16,0],	! Stores the status of the last

;      R0245						! NETACP control qio.

;      R0246		MCB$W_ACP_CHAN	= [10,0,16,0],	! The channel to be used by all

;      R0247						! NETACP control qio's.

;      R0248		MCB$Z_ACP_IOSB	= [12,0,0,0],	! The i/o status block used by

;      R0249						! the NETACP control qio's.

;      R0250		MCB$Z_ACP_FBLK	= [20,0,0,0],	! The function block to be used

;      R0251						! by all NETACP control qio's.

;      R0252		MCB$W_DB_STAT	= [25,0,16,0],	! Used to store the status of a

;      R0253						! Configuration Data Base access

;      R0254		MCB$B_RESERVED	= [27,0,8,0],

;      R0255		MCB$W_MSG_STAT	= [28,0,16,0],	! Stores the status of the last

;      R0256						! routine MESSAGE (module NICMSG)

;      R0257						! operation.

;      R0258		MCB$W_MSG_CHAN	= [30,0,16,0],	! The channel (logical link) used

;      R0259						! by routine MESSAGE to talk to

;      R0260						! the command node.

;      R0261		MCB$Z_MSG_ISB	= [32,0,0,0],	! The i/o status block used by

;      R0262						! MESSAGE on reads.

;      R0263		MCB$Z_MSG_OSB	= [40,0,0,0],	! The i/o status block used by



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 6-1

; Digital Equipment Corporation

;

;      R0264						! MESSAGE on writes.

;      R0265		MCB$A_IMSG_DDSC	= [48,0,32,0],	! Stores the address of the DDSC

;      R0266						! of the opened input message.

;      R0267		MCB$A_OMSG_DDSC = [52,0,32,0],	! Stores the address of the DDSC

;      R0268						! of a buffer in which an ouput

;      R0269						! message is being built.

;      R0270		MCB$A_IMSGBOUND	= [56,0,32,0],	! The address of the last byte

;      R0271						! of the input message.

;      R0272		MCB$A_OMSGBOUND	= [60,0,32,0],	! The address of the last byte

;      R0273						! of the buffer in which the 

;      R0274						! output buffer is being built.

;      R0275	

;      R0276		MCB$B_REQDISCON	= [64,0,8,0],	! When set indicates that the 

;      R0277						! logical link to the command

;      R0278						! is to be broken.

;      R0279		MCB$B_ERROR_ON	= [65,0,8,0],	! When the low bit is set the

;      R0280						! error handling capabilities of

;      R0281						! the routine named by MCB$A_EXIT_RT

;      R0282						! are enabled.

;      R0283		MCB$W_REPLIES	= [66,0,16,0],	! The number of replies to the

;      R0284						! command node since the last 

;      R0285						! message received.

;      R0286		MCB$W_RECEIVES	= [68,0,16,0],	! The number of messages received

;      R0287						! from the command node.

;      R0288		MCB$W_RESERVED	= [70,0,16,0]

;      R0289	

;      R0290		TES ;

;      R0291	

;      R0292	  MACRO

;      R0293		MCB	= BLOCK [MCB$K_SIZE, BYTE]    FIELD (MCB_FIELDS) % ;

;      R0294	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 7

; Digital Equipment Corporation

;

;      R0295	!+

;      R0296	! Define the fields and structure declaration macro for the

;      R0297	! Target Control Block (TCB).  This block is used to pass status and

;      R0298	! control information between the routines in module NICTRG.B32 and

;      R0299	! the routines which call them.

;      R0300	!-

;      R0301	

;      R0302	  LITERAL   TCB$K_SIZE  = 36 ;	! Size in bytes of the

;      R0303					! structure

;      R0304	

;      R0305			! The following are the sizes, in bytes, of

;      R0306			! fields which are greater than 32 bits, and

;      R0307			! therefore not supported directly by BLIS32

;      R0308	

;      R0309	  LITERAL	    TCB$S_IOSB	  = 8 ;	!  "   "  TCB$Z_IOSB

;      R0310	

;      R0311	FIELD

;      R0312	     TCB_FIELDS	=

;      R0313		SET

;      R0314		TCB$B_STATUS	= [0,0,8,1],	! The status of the last

;      R0315						! operation, valid only when

;      R0316						! the event flag is set.

;      R0317		TCB$B_RCVMOPTYP	= [1,0,8,0],	! A copy of the first byte of a

;      R0318						! received MOP message.

;      R0319		TCB$B_RETRIES	= [2,0,8,0],	! The number of remaining xmit

;      R0320						! retries before assuming a 

;      R0321						! fatal error.

;      R0322		TCB$B_IMPLDRCV	= [3,0,8,0],	! True/false flag to indicate

;      R0323						! whether a receive is to auto-

;      R0324						! follow a successfull transmit.

;      R0325		TCB$B_MOPTIMOUT	= [4,0,8,0],	! MOP timeout constant in

;      R0326						! seconds.

;      R0327		TCB$B_PGM	= [5,0,8,0],	! The standard NICE code of

;      R0328						! the program being loaded.

;      R0329		TCB$W_RECEIVES	= [6,0,16,0],	! The number of messages

;      R0330						! received from the target.

;      R0331		TCB$W_CHAN	= [8,0,16,0],	! The channel to be used for

;      R0332						! rcv's and xmit's.

;      R0333		TCB$W_XMITS	= [10,0,16,0],	! The number of successful

;      R0334						! messages transmitted.

;      R0335		TCB$A_XMTDDSC	= [12,0,32,0],	! Addr. of double descriptor of

;      R0336						! xmit buffer and message

;      R0337		TCB$A_RCVDDSC	= [16,0,32,0],	! Addr. of double descriptor of

;      R0338						! receive buffer and message

;      R0339		TCB$A_INTDDSC	= [20,0,32,0],	! Addr. of double descriptor of

;      R0340						! intermediate buffer used for

;      R0341						! receives.

;      R0342		TCB$Z_IOSB	= [24,0,0,0],	! Quadword IO status block

;      R0343						! used for both xmt's and rcv's

;      R0344		TCB$L_EFN	= [32,0,32,0]	! The number of the event flag

;      R0345						! to be set when there are no

;      R0346						! longer any AST's pending.

;      R0347		TES ;

;      R0348	

;      R0349	  MACRO



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 7-1

; Digital Equipment Corporation

;

;      R0350		TCB	= BLOCK [TCB$K_SIZE, BYTE]    FIELD (TCB_FIELDS) % ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 8

; Digital Equipment Corporation

;

;      R0351	!+

;      R0352	! Define the fields and structure declaration macro for the

;      R0353	! Line Table Entry (LTE).  This table is used to supply partial file

;      R0354	! names by device type for constructing the names of the secondary and

;      R0355	! tertiary loader files used during downline loads.

;      R0356	!-

;      R0357	

;      R0358	  LITERAL   LTE$K_SIZE  = 8 ;	! Size in bytes of the

;      R0359					! structure

;      R0360	

;      R0361	FIELD

;      R0362	     LTE_FIELDS	=

;      R0363		SET

;      R0364		LTE$W_INTNAME	  = [0,0,16,0],	! Internal linename type, e.g.,

;      R0365						! 'XM' for the DMC11.

;      R0366		LTE$B_UNUSED	  = [2,0,8,0],

;      R0367		LTE$B_LDRNAMSIZ	  = [3,0,8,0],	! Length of the external name

;      R0368		LTE$A_LDRNAME	  = [4,0,32,0]	! The external name, e.g., DMC

;      R0369						! for the DMC11.

;      R0370		TES ;

;      R0371	

;      R0372	  MACRO

;      R0373		LTE	= BLOCK [LTE$K_SIZE, BYTE]  

;     MR0374			  FIELD (LTE_FIELDS) % ;

;      R0375	

;      R0376	

;      R0377	

;      R0378	

;      R0379	!+

;      R0380	! The following linkage definition is used when calling routines needing

;      R0381	! efficient and easy access to the input message pointer (P_IM), the

;      R0382	! output message pointer (P_OM), and the pointer to the Message Control

;      R0383	! Block (MCB_PTR).

;      R0384	!-

;      R0385	

;      R0386	LINKAGE

;      R0387		LNKMSG = CALL : GLOBAL (P_IM = 11, P_OM = 10, MCB_PTR = 9 ) ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 9

; Digital Equipment Corporation

;

;      R0388		!+

;      R0389		! The following are used as status codes for routine MESSAGE

;      R0390		! (module NICMSG).  They are returned in field MSG$W_MSG_STAT

;      R0391		! of the Message Control Block, and are used to indicate why

;      R0392		! an error code stored in field MCB$L_REPLYCODE occured.

;      R0393		!-

;      R0394	LITERAL

;      R0395		MSG$_NOTOPEN    = 2,	! An operation on an input or output 

;      R0396					! message was requested which could not

;      R0397					! be performed because the message was

;      R0398					! not open.

;      R0399		MSG$_NOTALIGNED = 4,	! The input message was checked to see 

;      R0400					! if it was completely parsed, but the

;      R0401					! input message pointer did not point

;      R0402					! to the first byte following the end of

;      R0403					! the message.

;      R0404		MSG$_ILL_FCTSEQ	= 6,	! A function was called which could not

;      R0405					! be completed due to an earlier function.

;      R0406					! For instance, the request to open an

;      R0407					! input message when one is already open

;      R0408		MSG$_ILL_FCT	= 8,	! The function code was unrecognized.

;      R0409		MSG$_RCV_ERR	= 10,	! An error trying to receive a message

;      R0410					! from the command node.

;      R0411		MSG$_SEND_ERR	= 12 ;	! An error trying to transmit to the

;      R0412					! command node.

;      R0413	

;      R0414	

;      R0415		!+

;      R0416		! The following are used to control the nature of a parse a line

;      R0417		! or a node name when a zero is the first byte encountered in .

;      R0418		! that name.

;      R0419		!-

;      R0420	LITERAL

;      R0421		Z_ALL    = 0,	! Zero means all known nodes or lines.

;      R0422		Z_LOCAL  = 1,	! Zero means use the name of the local node.

;      R0423		Z_ERROR  = 2,	! Zero indicates the name is illegal.

;      R0424		NO_VERIFY = 3 ;	! The same as Z_ERROR, but it also implies that

;      R0425				! the step which verifies whether or not the 

;      R0426				! node or line name is known to the system 

;      R0427				! should be bypassed.

;      R0428	

;      R0429	

;      R0430		!+

;      R0431		! The following are function codes used by routine CVT_LN (in

;      R0432		! module NICMSG).

;      R0433		!-

;      R0434	LITERAL

;      R0435		TO_ASCII	= 0,	! Convert from standard NICE format to

;      R0436					! the internal (e.g., XMA0) line format.

;      R0437		APP_TO_ASCII	= 1,	! Same as above, except that the line 

;      R0438					! name should be appended to the string

;      R0439					! found in the destination buffer, as

;      R0440					! opposed to replacing it.

;      R0441		TO_NICE_FMT	= 2 ;	! Convert rom internal format to the 

;      R0442					! format specified by the NICE protocol.



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 9-1

; Digital Equipment Corporation

;

;      R0443	

;      R0444	

;      R0445	

;      R0446	!

;      R0447	! INCLUDE FILES:

;      R0448	!

;      R0449	

;      R0450	  LIBRARY 'SYS$LIBRARY:STARLET.L32' ;

;      R0451	  REQUIRE 'LIBD$:[NCP.OBJ]NCPDEF.B32' ;	! Defines Configuration Data Base

;      R0452	 !...$DEFDEF		!RELEVANT KEYWORDS ENCOUNTERED DURING PARSE 

;      R0453	 			 

;      R0454	 MACRO		DEF$V_NODE	= 0,0,1,0%;  

;      R0455	 LITERAL	DEF$M_NODE	= 1^1 - 1^0; 

;      R0456	 MACRO		DEF$V_LINE	= 0,1,1,0%;  

;      R0457	 LITERAL	DEF$M_LINE	= 1^2 - 1^1; 

;      R0458	 MACRO		DEF$V_OBJECT	= 0,2,1,0%;  

;      R0459	 LITERAL	DEF$M_OBJECT	= 1^3 - 1^2; 

;      R0460	 MACRO		DEF$V_LOCAL	= 0,3,1,0%;  

;      R0461	 LITERAL	DEF$M_LOCAL	= 1^4 - 1^3; 

;      R0462	 MACRO		DEF$V_KNOWN	= 0,4,1,0%;  

;      R0463	 LITERAL	DEF$M_KNOWN	= 1^5 - 1^4; 

;      R0464	 MACRO		DEF$V_COUNT	= 0,5,1,0%;  

;      R0465	 LITERAL	DEF$M_COUNT	= 1^6 - 1^5; 

;      R0466	 MACRO		DEF$V_WITH	= 0,6,1,0%;  

;      R0467	 LITERAL	DEF$M_WITH	= 1^7 - 1^6; 

;      R0468	 MACRO		DEF$V_LENGTH	= 0,7,1,0%;  

;      R0469	 LITERAL	DEF$M_LENGTH	= 1^8 - 1^7; 

;      R0470	 MACRO		DEF$V_OFF	= 0,8,1,0%;  

;      R0471	 LITERAL	DEF$M_OFF	= 1^9 - 1^8; 

;      R0472	 MACRO		DEF$V_ON	= 0,9,1,0%;  

;      R0473	 LITERAL	DEF$M_ON	= 1^10 - 1^9; 

;      R0474	 MACRO		DEF$V_SHUT	= 0,10,1,0%;  

;      R0475	 LITERAL	DEF$M_SHUT	= 1^11 - 1^10; 

;      R0476	 MACRO		DEF$V_FROM	= 0,11,1,0%;  

;      R0477	 LITERAL	DEF$M_FROM	= 1^12 - 1^11; 

;      R0478	 MACRO		DEF$V_LINKS	= 0,12,1,0%;  

;      R0479	 LITERAL	DEF$M_LINKS	= 1^13 - 1^12; 

;      R0480	 MACRO		DEF$V_PATHS	= 0,13,1,0%;  

;      R0481	 LITERAL	DEF$M_PATHS	= 1^14 - 1^13; 

;      R0482	 MACRO		DEF$V_COUNTS	= 0,14,1,0%;  

;      R0483	 LITERAL	DEF$M_COUNTS	= 1^15 - 1^14; 

;      R0484	 MACRO		DEF$V_STATUS	= 0,15,1,0%;  

;      R0485	 LITERAL	DEF$M_STATUS	= 1^16 - 1^15; 

;      R0486	 MACRO		DEF$V_LOOPBACK	= 0,16,1,0%;  

;      R0487	 LITERAL	DEF$M_LOOPBACK	= 1^17 - 1^16; 

;      R0488	 MACRO		DEF$V_MAINTEN	= 0,17,1,0%;  

;      R0489	 LITERAL	DEF$M_MAINTEN	= 1^18 - 1^17; 

;      R0490	 MACRO		DEF$V_CTRLLOOP	= 0,18,1,0%;  

;      R0491	 LITERAL	DEF$M_CTRLLOOP	= 1^19 - 1^18; 

;      R0492	 	 

;      R0493	 			

;      R0494	  

;      R0495	 ! 

;      R0496	 !****ALL "T" FIELDS AND THEIR PRECEDING COUNTS MUST BE KEPT 

;      R0497	 !***CONTINUOUS 



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBA4:[NCP.OBJ]NCPDEF.B32;1					Page 9-2

; Digital Equipment Corporation

;

;      R0498	 !****IN ADDITION THE FIRST BYTE OF EACH RECORD MUST BE THE USE 

;      R0499	 !****BYTE AND THE IDENT BYTE MUST BE THE LAST 

;      R0500	 ! 

;      R0501	 !...$LNDDEF		!LOCAL NODE DATABLOCK 

;      R0502	 LITERAL	LND$C_FILE	= 0; 			!AN INDEX TO THIS TYPE OF RECORD 

;      R0503	 MACRO		LND$B_USE	= 0,0,8,0%; 		!RECORD IN USE BYTE 

;      R0504	 MACRO		LND$B_NAME	= 1,0,8,0%; 		!COUNT FOR NEXT FIELD 

;      R0505	 MACRO		LND$T_NAME	= 2,0,0,0%; 		!NAME OF LOCAL NODE 

;      R0506	 LITERAL	LND$S_NAME	= 6; 

;      R0507	 MACRO		LND$W_NUMBER	= 8,0,16,0%; 		!NODE NUMBER OF LOCAL NODE 

;      R0508	 MACRO		LND$B_MAXLINKS	= 10,0,8,0%; 	!MAX NUMBER OF LOGICAL LINKS ALLOWED 

;      R0509	 MACRO		LND$B_MAXNODES	= 11,0,8,0%; 	!MAX NODES ACTIVE TO LOCAL NODE 

;      R0510	 MACRO		LND$B_IDENT	= 12,0,8,0%; 		!HOLDS RECORD TYPE  FOR THIS RECORD 

;      R0511	 LITERAL	LND$C_SIZE	= 13; 

;      R0512	 LITERAL	LND$K_SIZE	= 13; 	 

;      R0513	 !...$RNDDEF		!REMOTE NODE DATABLOCK 

;      R0514	 LITERAL	RND$C_FILE	= 1; 			!INDEX FOR THIS KIND OF FILE 

;      R0515	 MACRO		RND$B_USE	= 0,0,8,0%; 		!RECORD ACTIVE FIELD 

;      R0516	 MACRO		RND$B_NAME	= 1,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0517	 MACRO		RND$T_NAME	= 2,0,0,0%; 		!NAME OF REMOTE NODE 

;      R0518	 LITERAL	RND$S_NAME	= 6; 

;      R0519	 MACRO		RND$W_NUMBER	= 8,0,16,0%; 		!NUMBER OF REMOTE NODE 

;      R0520	 MACRO		RND$B_SECLDR	= 10,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0521	 MACRO		RND$T_SECLDR	= 11,0,0,0%; 	!NAME OF SECONDARY LOADER FILE 

;      R0522	 LITERAL	RND$S_SECLDR	= 13; 

;      R0523	 MACRO		RND$B_TERLDR	= 24,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0524	 MACRO		RND$T_TERLDR	= 25,0,0,0%; 	!NAME OF TERTIARY LOADER FILE 

;      R0525	 LITERAL	RND$S_TERLDR	= 13; 

;      R0526	 MACRO		RND$B_DLLFILE	= 38,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0527	 MACRO		RND$T_DLLFILE	= 39,0,0,0%; 	!DOWNLINE LOAD FILE 

;      R0528	 LITERAL	RND$S_DLLFILE	= 13; 

;      R0529	 MACRO		RND$B_ULDFILE	= 52,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0530	 MACRO		RND$T_ULDFILE	= 53,0,0,0%; 	!UPLINE DUMP FILENAME 

;      R0531	 LITERAL	RND$S_ULDFILE	= 13; 

;      R0532	 MACRO		RND$B_BOOTPW	= 66,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0533	 MACRO		RND$T_BOOTPW	= 67,0,32,0%; 	!BOOTSTRAP PASSWORD 

;      R0534	 LITERAL	RND$C_BOOTPW	= 4; 			!*****THIS MUST BE THE LENGTH OF THE 

;      R0535	 			!******PREVIOUS FIELD 

;      R0536	 MACRO		RND$B_XMTPW	= 71,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0537	 MACRO		RND$T_XMTPW	= 72,0,0,0%; 		!PASSWORD TO SEND TO REMOTE DURING INIT 

;      R0538	 LITERAL	RND$S_XMTPW	= 8; 

;      R0539	 MACRO		RND$B_RCVPW	= 80,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0540	 MACRO		RND$T_RCVPW	= 81,0,0,0%; 		!PASSWORD RECEIVED FORM REMOTE DURING INIT 

;      R0541	 LITERAL	RND$S_RCVPW	= 8; 

;      R0542	 MACRO		RND$B_NONPRVID	= 89,0,8,0%; 	!SIZE OF NEXT FIELD 

;      R0543	 MACRO		RND$T_NONPRVID	= 90,0,0,0%; 	!NON-PRIVILEGED DEFAULT REQUESTOR ID 

;      R0544	 LITERAL	RND$S_NONPRVID	= 16; 

;      R0545	 MACRO		RND$B_NONPRVPSW	= 106,0,8,0%; 	 

;      R0546	 MACRO		RND$T_NONPRVPSW	= 107,0,0,0%; 	!DEFAULT NON-PRIVILEGED PASSWORD 

;      R0547	 LITERAL	RND$S_NONPRVPSW	= 8; 

;      R0548	 MACRO		RND$B_NONPRVACC	= 115,0,8,0%;  

;      R0549	 MACRO		RND$T_NONPRVACC	= 116,0,0,0%; 	!DEFAULT NON-PRIVILEGED ACCOUNT NAME 

;      R0550	 LITERAL	RND$S_NONPRVACC	= 16; 

;      R0551	 MACRO		RND$B_PRVID	= 132,0,8,0%; 	 

;      R0552	 MACRO		RND$T_PRVID	= 133,0,0,0%; 		!DEFAULT PRIVILEGED REQUESTOR ID 



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBA4:[NCP.OBJ]NCPDEF.B32;1					Page 9-3

; Digital Equipment Corporation

;

;      R0553	 LITERAL	RND$S_PRVID	= 16; 

;      R0554	 MACRO		RND$B_PRVPSW	= 149,0,8,0%;  

;      R0555	 MACRO		RND$T_PRVPSW	= 150,0,0,0%; 	!DEFAULT PRIVILEGED PRVPSW 

;      R0556	 LITERAL	RND$S_PRVPSW	= 8; 

;      R0557	 MACRO		RND$B_PRVACC	= 158,0,8,0%;  

;      R0558	 MACRO		RND$T_PRVACC	= 159,0,0,0%; 		!DEFAULT PRIVILEGED PRVACC NAME 

;      R0559	 LITERAL	RND$S_PRVACC	= 16; 

;      R0560	 MACRO		RND$B_CONNECT	= 175,0,8,0%; 		!TIMEOUT CONSTANT FOR NSP CONNECT SEQUENCES 

;      R0561	 MACRO		RND$B_SERVER	= 176,0,8,0%;  

;      R0562	 MACRO		RND$T_SERVER	= 177,0,0,0%; 	!NAME OF REMOTES SERVER NODE 

;      R0563	 LITERAL	RND$S_SERVER	= 6; 

;      R0564	 MACRO		RND$L_LINE	= 183,0,32,0%; 		!DOWNLINE LOAD SERVICE LINE 

;      R0565	 MACRO		RND$B_HOST	= 187,0,8,0%; 		!COUNT OF HOST NODE NAME 

;      R0566	 MACRO		RND$T_HOST	= 188,0,0,0%; 		!HOST NODE NAME 

;      R0567	 LITERAL	RND$S_HOST	= 6; 

;      R0568	 MACRO		RND$B_IDENT	= 194,0,8,0%; 		!RECORD TYPE FOR THIS RECORD 

;      R0569	 LITERAL	RND$C_SIZE	= 195; 

;      R0570	 LITERAL	RND$K_SIZE	= 195; 	 

;      R0571	 !...$ODBDEF		!DEFINE RECORD OF AN OBJECT DATA BLOCK 

;      R0572	 LITERAL	ODB$C_FILE	= 3; 			!INDEX TO FILE TYPE 

;      R0573	 MACRO		ODB$B_USE	= 0,0,8,0%; 		!RECORD IN USE FIELD 

;      R0574	 MACRO		ODB$B_NAME	= 1,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0575	 MACRO		ODB$T_NAME	= 2,0,0,0%; 		!NAME OF OBJECT 

;      R0576	 LITERAL	ODB$S_NAME	= 8; 

;      R0577	 MACRO		ODB$B_NUMBER	= 10,0,8,0%; 		!GLOBAL OBJECT NUMBER 

;      R0578	 MACRO		ODB$B_FILE	= 11,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0579	 MACRO		ODB$T_FILE	= 12,0,0,0%; 		!EXECUTABLE IMAGE FILE 

;      R0580	 LITERAL	ODB$S_FILE	= 13; 

;      R0581	 MACRO		ODB$L_PRIVLOW	= 25,0,32,0%; 		!LOW ORDER PRIVILEGE LONGWORD 

;      R0582	 MACRO		ODB$L_PRIVHIGH	= 29,0,32,0%; 	!HIGHER ORDER PRIVILEGE LONGWORD 

;      R0583	 MACRO		ODB$B_IDENT	= 33,0,8,0%; 		!IDENTIFIER FOR THIS RECORD 

;      R0584	 LITERAL	ODB$C_SIZE	= 34; 

;      R0585	 LITERAL	ODB$K_SIZE	= 34; 	 

;      R0586	 !...$LIDDEF		!LINE  DATA BLOCK 

;      R0587	 LITERAL	LID$C_FILE	= 2; 			!INDEX TO TYPE OF FILE 

;      R0588	 MACRO		LID$B_USE	= 0,0,8,0%; 		!RECORD IN USE FIELD 

;      R0589	 MACRO		LID$B_NAME	= 1,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0590	 MACRO		LID$T_NAME	= 2,0,0,0%; 		!LOCAL NAME OF LINE 

;      R0591	 LITERAL	LID$S_NAME	= 16; 

;      R0592	 MACRO		LID$B_TYPE	= 18,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0593	 MACRO		LID$T_TYPE	= 19,0,0,0%; 		!MNEUMONIC FOR DEVICE TYPE 

;      R0594	 LITERAL	LID$S_TYPE	= 5; 

;      R0595	     ! 

;      R0596	     !THESE 4 BYTES MUST REMAIN CONTINUOUS 

;      R0597	     ! 

;      R0598	 MACRO		LID$B_CODE	= 24,0,8,0%; 		!NICE CODE FOR DEVICE TYPE 

;      R0599	 MACRO		LID$B_CNTRL	= 25,0,8,0%; 		!CONTROLLER NUMBER 

;      R0600	 MACRO		LID$B_LINE	= 26,0,8,0%; 		!LINE NUMBER ON CONTROLLER 

;      R0601	 MACRO		LID$B_ADDRESS	= 27,0,8,0%; 		!ADDRESS OF MULTIDROP 

;      R0602	 MACRO		LID$W_CHAR	= 28,0,16,0%; 		!CHARACTERISTICS OF DEVICE 

;      R0603	 			 

;      R0604	 				 

;      R0605	 MACRO		LID$V_LOOP	= 28,1,1,0%;  

;      R0606	 LITERAL	LID$M_LOOP	= 1^2 - 1^1; 

;      R0607	 MACRO		LID$V_HDX	= 28,2,1,0%;  



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBA4:[NCP.OBJ]NCPDEF.B32;1					Page 9-4

; Digital Equipment Corporation

;

;      R0608	 LITERAL	LID$M_HDX	= 1^3 - 1^2; 

;      R0609	 MACRO		LID$V_SLAVE	= 28,3,1,0%;  

;      R0610	 LITERAL	LID$M_SLAVE	= 1^4 - 1^3; 

;      R0611	 			

;      R0612	 MACRO		LID$B_NODE	= 30,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0613	 MACRO		LID$T_NODE	= 31,0,0,0%; 		!ASSOCIATED NODE NAME 

;      R0614	 LITERAL	LID$S_NODE	= 6; 

;      R0615	 MACRO		LID$W_BUFSIZE	= 37,0,16,0%; 		!SIZE OF NSP RECEIVE BUFFERS 

;      R0616	 MACRO		LID$B_NUMBUF	= 39,0,8,0%; 		!NUMBER OF BUFFERS TO ALLOCATE 

;      R0617	 MACRO		LID$B_TIMEOUT	= 40,0,8,0%; 		!MOP TIMEOUT CONSTANT IN SECS 

;      R0618	 MACRO		LID$B_IDENT	= 41,0,8,0%; 		!IDENTIFIER FOR THIS RECORD 

;      R0619	 LITERAL	LID$C_SIZE	= 42; 

;      R0620	 LITERAL	LID$K_SIZE	= 42; 	 

;      R0621						! record formats.

;      R0622	  REQUIRE 'LIBD$:[NCP.OBJ]NCBDEF.B32' ;	! Defines the modified Configuration

;      R0623	 ! 

;      R0624	 !FIELDS DEFINED IN NCB STRUCTURE POINT TO REMAINDER 

;      R0625	 !OF DATABASE 

;      R0626	  

;      R0627	 !...$NCBDEF	

;      R0628	 MACRO		NCB$W_OBJLEN	= 0,0,16,0%; 	!LENGTH OF ALL OBJ RECORDS 

;      R0629	 MACRO		NCB$W_RMTLEN	= 2,0,16,0%; 	!LENGTH OF ALL RMT RECORDS 

;      R0630	  

;      R0631	 !DATA FOLLOWS IN THE NCB IN THE FOLLOWING FORMAT 

;      R0632	 !	ONE $LOCDEF RECORD 

;      R0633	 !	SEVERAL $OBJDEF RECORDS 

;      R0634	 !	SEVERAL $RMTDEF RECORDS 

;      R0635	 ! 

;      R0636	 !****ALL "T" FIELDS AND THEIR PRECEDING COUNTS MUST BE KEPT 

;      R0637	 !***CONTINUOUS 

;      R0638	 ! 

;      R0639	 !...$LOCDEF		!LOCAL NODE DATABLOCK 

;      R0640	 MACRO		LOC$B_NAME	= 0,0,8,0%; 		!COUNT FOR NEXT FIELD 

;      R0641	 MACRO		LOC$T_NAME	= 1,0,0,0%; 		!NAME OF LOCAL NODE 

;      R0642	 LITERAL	LOC$S_NAME	= 6; 

;      R0643	 MACRO		LOC$W_ADDRESS	= 7,0,16,0%; 		!NODE ADDRESS OF LOCAL NODE 

;      R0644	 MACRO		LOC$B_MAXLINKS	= 9,0,8,0%; 	!MAX NUMBER OF LOGICAL LINKS ALLOWED 

;      R0645	 MACRO		LOC$B_MAXNODES	= 10,0,8,0%; 	!MAX NODES ACTIVE TO LOCAL NODE 

;      R0646	 LITERAL	LOC$C_SIZE	= 11; 

;      R0647	 LITERAL	LOC$K_SIZE	= 11; 	 

;      R0648	 !...$RMTDEF		!REMOTE NODE DATABLOCK 

;      R0649	 LITERAL	RMT$C_FILE	= 1; 			!INDEX FOR THIS KIND OF FILE 

;      R0650	 MACRO		RMT$B_NAME	= 0,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0651	 MACRO		RMT$T_NAME	= 1,0,0,0%; 		!NAME OF REMOTE NODE 

;      R0652	 LITERAL	RMT$S_NAME	= 6; 

;      R0653	 MACRO		RMT$W_NUMBER	= 7,0,16,0%; 		!NODE NUMBER IN EX-2 FORMAT 

;      R0654	 MACRO		RMT$Q_XMTPW	= 9,0,0,0%; 		!PASSWORD TO SEND TO REMOTE DURING INIT 

;      R0655	 LITERAL	RMT$S_XMTPW	= 8; 

;      R0656	 MACRO		RMT$Q_RCVPW	= 17,0,0,0%; 		!PASSWORD RECEIVED FORM REMOTE DURING INIT 

;      R0657	 LITERAL	RMT$S_RCVPW	= 8; 

;      R0658	 MACRO		RMT$B_CONNECT	= 25,0,8,0%; 		!TIMEOUT CONSTANT FOR NSP CONNECT SEQUENCES 

;      R0659	 MACRO		RMT$B_NONPRVACC	= 26,0,8,0%; 	!SIZE OF NON-PRIVILEGED ACCESS STRING 

;      R0660	 MACRO		RMT$T_NONPRVACC	= 27,0,0,0%; 	!ACCESS TEXT 

;      R0661	 LITERAL	RMT$S_NONPRVACC	= 43; 

;      R0662	 			!17 BYTES COUNTED REQUESTOR ID 



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBA4:[NCP.OBJ]NCBDEF.B32;1					Page 9-5

; Digital Equipment Corporation

;

;      R0663	 			!9 BYTES COUNTED PASSWORD 

;      R0664	 			!17 BYTES COUNTED ACCOUNT NAME 

;      R0665	 MACRO		RMT$B_PRVACC	= 70,0,8,0%; 		!SIZE OF PRIVILEGED ACCESS STRING 

;      R0666	 MACRO		RMT$T_PRVACC	= 71,0,0,0%; 	!ACCESS TEXT 

;      R0667	 LITERAL	RMT$S_PRVACC	= 43; 

;      R0668	 			!17 BYTES COUNTED REQUESTOR ID 

;      R0669	 			!9 BYTES COUNTED PASSWORD 

;      R0670	 			!17 BYTES COUNTED ACCOUNT NAME 

;      R0671	 LITERAL	RMT$C_SIZE	= 114; 

;      R0672	 LITERAL	RMT$K_SIZE	= 114; 	 

;      R0673	 !...$OBJDEF		!DEFINE RECORD OF AN OBJECT DATA BLOCK 

;      R0674	 LITERAL	OBJ$C_FILE	= 0; 			!INDEX TO FILE TYPE 

;      R0675	 MACRO		OBJ$B_NAME	= 0,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0676	 MACRO		OBJ$T_NAME	= 1,0,0,0%; 		!NAME OF OBJECT 

;      R0677	 LITERAL	OBJ$S_NAME	= 8; 

;      R0678	 MACRO		OBJ$B_NUMBER	= 9,0,8,0%; 		!GLOBAL OBJECT NUMBER 

;      R0679	 MACRO		OBJ$B_FILE	= 10,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0680	 MACRO		OBJ$T_FILE	= 11,0,0,0%; 		!COMMAND FILE USED TO START OBJECT 

;      R0681	 LITERAL	OBJ$S_FILE	= 13; 

;      R0682	 MACRO		OBJ$Q_PRIV	= 24,0,0,0%; 		!PRIVILEGES REQUIRED TO ACCESS OBJECT 

;      R0683	 LITERAL	OBJ$S_PRIV	= 8; 

;      R0684	 LITERAL	OBJ$C_SIZE	= 32; 

;      R0685	 LITERAL	OBJ$K_SIZE	= 32; 	 

;      R0686	 !...$LINDEF		!DEFINE DATA BLOCK STRUCTURE USED TO 

;      R0687	 			! PASS A LINE DESCRIPTION TO THE NETACP 

;      R0688	 MACRO		LIN$L_NAME	= 0,0,32,0%; 		!LINE NAME OF THE FORM 'XMA0' 

;      R0689	 MACRO		LIN$B_CNTRL	= 4,0,8,0%; 		!ASCII CONTROLLER ID 

;      R0690	 MACRO		LIN$B_LINE	= 5,0,8,0%; 		!BINARY LINE NUMBER ON CONTROLLER 

;      R0691	 MACRO		LIN$B_ADDRESS	= 6,0,8,0%; 		!ADDRESS OF MULTIDROP 

;      R0692	 MACRO		LIN$W_CHAR	= 7,0,16,0%; 		!CHARACTERISTICS OF DEVICE 

;      R0693	 			 

;      R0694	 				 

;      R0695	 MACRO		LIN$V_LOOP	= 7,1,1,0%;  

;      R0696	 LITERAL	LIN$M_LOOP	= 1^2 - 1^1; 

;      R0697	 MACRO		LIN$V_HDX	= 7,2,1,0%;  

;      R0698	 LITERAL	LIN$M_HDX	= 1^3 - 1^2; 

;      R0699	 MACRO		LIN$V_SLAVE	= 7,3,1,0%;  

;      R0700	 LITERAL	LIN$M_SLAVE	= 1^4 - 1^3; 

;      R0701	 			

;      R0702	 MACRO		LIN$B_NODE	= 9,0,8,0%; 		!COUNT OF NEXT FIELD 

;      R0703	 MACRO		LIN$T_NODE	= 10,0,0,0%; 		!ASSOCIATED NODE NAME 

;      R0704	 LITERAL	LIN$S_NODE	= 6; 

;      R0705	 MACRO		LIN$W_BUFSIZE	= 16,0,16,0%; 		!SIZE OF NSP RECEIVE BUFFERS 

;      R0706	 MACRO		LIN$B_NUMBUF	= 18,0,8,0%; 		!NUMBER OF BUFFERS TO ALLOCATE 

;      R0707	 LITERAL	LIN$C_SIZE	= 19; 

;      R0708	 LITERAL	LIN$K_SIZE	= 19; 	 

;      R0709						! Data Base record formats used

;      R0710						! by the NETACP.

;      R0711	

;      R0712	

;      R0713	

;      R0714	

;      R0715		!+

;      R0716		! Define the largest size, in bytes, of all Configuration Data 

;      R0717		! Base records.



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 9-6

; Digital Equipment Corporation

;

;      R0718		!-

;      R0719	  LITERAL

;      R0720			MAX_CDB_SIZE = MAXU (LND$C_SIZE, RND$C_SIZE,

;      R0721					     ODB$C_SIZE, LID$C_SIZE ) ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 10

; Digital Equipment Corporation

;

;      R0722		!+

;      R0723		! Define the NICE return status codes.  Note that all of the

;      R0724		! error codes have been doubled so that they can be used for 

;      R0725		! true/false testing by checking the low order bit.

;      R0726		!-

;      R0727	LITERAL

;      R0728		NIC$_SUCCESS	=   1,

;      R0729		NIC$_ILL_FCT	=  -1  * 2,	! Illegal function code

;      R0730		NIC$_ILL_OPT	=  -1  * 2,	! Illegal option code

;      R0731		NIC$_ILLMSGFMT	=  -2  * 2,	! Illegal message format

;      R0732		NIC$_INSUFSTAT	=  -3  * 2,	! The process lacks the privilege

;      R0733						! to perform the specified fct.

;      R0734		NIC$_ILLMSGSEQ	=  -4  * 2,	! NICE protocol violation between

;      R0735						! the HOST and SERVER nodes 

;      R0736						! during a downline load.

;      R0737		NIC$_PGM_ERR	=  -5  * 2,	! A runtime bug was encountered.

;      R0738		NIC$_ILL_LN_ID	=  -8  * 2,	! Illegal line name

;      R0739		NIC$_LN_WNGSTA	=  -9  * 2,	! The line is in the wrong state

;      R0740						! for the specified operation.

;      R0741		NIC$_LN_COMERR	=  -10 * 2,	! A hardware error was encountered

;      R0742						! while talking directly over a

;      R0743						! line (as in downline load).

;      R0744		NIC$_ILL_ND_ID	=  -11 * 2,	! Illegal node name

;      R0745		NIC$_ILLSRVID	=  -12 * 2,	! The name of either the server

;      R0746						! node or the server's line to

;      R0747						! the target was in error.

;      R0748		NIC$_ILL_FILE	=  -13 * 2,	! A loader, downline load, or

;      R0749						! upline dump file could not be

;      R0750						! opened.

;      R0751		NIC$_DATBASERR	=  -14 * 2,	! An error was encountered trying

;      R0752						! to access the Configuration

;      R0753						! Data Base, or the contents of

;      R0754						! the C.D.B. was not what was

;      R0755						! expected.

;      R0756		NIC$_RESRCERR	=  -15 * 2,	! Resource error, such as a

;      R0757						! QIO failure.

;      R0758		NIC$_ILLPARVAL	=  -16 * 2,	! One of the parameters in the 

;      R0759						! input message had an illegal

;      R0760						! value.

;      R0761		NIC$_LNPROTERR	=  -17 * 2,	! The content of a MOP message

;      R0762						! received over a line being

;      R0763						! booted, loaded, or dumped 

;      R0764						! violated the MOP protocol.

;      R0765		NIC$_FILEIOERR	=  -18 * 2,	! An error was encountered trying

;      R0766						! to read or write to a downline

;      R0767						! load or dump file.

;      R0768		NIC$_NETCOMERR	= -19 * 2,	! A problem was encountered

;      R0769						! trying to talk over a logical

;      R0770						! link to another NICE object.

;      R0771		NIC$_NOROOM	= -20 * 2,	! No room for new entry.

;      R0772		NIC$_NOREMNICE	= -21 * 2 ;	! No remote NICE object.  An 

;      R0773						! attempt to connect to another

;      R0774						! NICE object failed.



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 11

; Digital Equipment Corporation

;

;      R0775		! Define the NICE function codes

;      R0776	LITERAL

;      R0777		NIC$K_DLL 	= 2,	! Downline load.

;      R0778		NIC$K_ULD	= 3,	! Upline dump

;      R0779		NIC$K_TRIGBOOT	= 4,	! Trigger remote bootstrap

;      R0780		NIC$K_LOOPBACK	= 5,	! Loopback

;      R0781		NIC$K_TEST	= 6,	! Send test message to be looped

;      R0782		NIC$K_SETPARAM	= 7,	! Set parameter (state, etc.)

;      R0783		NIC$K_READINFO	= 8,	! Read information (status, etc.)

;      R0784		NIC$K_ZEROCTRS	= 9,	! Zero counters

;      R0785		NIC$K_LNSRV	= 14 ;	! Line service

;      R0786	

;      R0787	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 12

; Digital Equipment Corporation

;

;      R0788		!+

;      R0789		! Define the size, in bytes, of all buffers used for sending

;      R0790		! of receiving messages.

;      R0791		!-

;      R0792	LITERAL

;      R0793		NIC$K_IOBFSIZE  =  600 ;

;      R0794	

;      R0795	

;      R0796		!+

;      R0797		! Define the size of the vector of global DDSC's, and the size,

;      R0798		! in bytes, of the area from which they get their buffer space.

;      R0799		! The vector and common buffer area are defined in module

;      R0800		! NICDAT.B32.

;      R0801		!-

;      R0802	LITERAL

;      R0803		NUM_DDSC = 18,

;      R0804		SUM = 16*2 + 7*5 + 9 + 17*2 + NIC$K_IOBFSIZE*4 + 512*2 + 4096 + 20 ;

;      R0805	

;      R0806		!+

;      R0807		! Define literals for the standard NICE program types used

;      R0808		! during downline loads.

;      R0809		!-

;      R0810	LITERAL

;      R0811		NIC$K_OPSYS = 2,	! Operating system (downline load) file.

;      R0812		NIC$K_TERLDR = 1,	! Tertiary loader file.

;      R0813		NIC$K_SECLDR = 0,	! Secondary loader file.

;      R0814	

;      R0815		NIC$K_MAXFILE = 4 * 1024 * 1024 + 4096 ; ! Maximum allowable size

;      R0816							! of file to be downline

;      R0817							! loaded. (size in bytes)

;      R0818	

;      R0819		!+

;      R0820		! Define literals for the cpu types used in the NICE protocol.

;      R0821		!-

;      R0822	LITERAL

;      R0823		NIC$K_TYPE8 = 0,	! PDP 8

;      R0824		NIC$K_TYPE11 = 1,	! PDP 11

;      R0825		NIC$K_TYPE36 = 2,	! PDP 10  or  PDP 20

;      R0826		NIC$K_TYPEVAX = 3 ;	! VAX 11

;      R0827	

;      R0828	

;      R0829		!+

;      R0830		! Define the option codes used to qualify the LINE SERVICE

;      R0831		! function of the NICE protocol.

;      R0832		!-

;      R0833	LITERAL

;      R0834		NIC$K_LDGETREQ = 0,	! Load program, get program request

;      R0835		NIC$K_LDNOREQ = 1,	! Load program, don't get program request

;      R0836		NIC$K_BTGETREQ = 2,	! Trigger remote bootstrap, get program

;      R0837					! request.

;      R0838		NIC$K_BTNOREQ = 3 ;	! Trigger remote bootstrap, don't get

;      R0839					! the program request.

;      R0840	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 13

; Digital Equipment Corporation

;

;      R0841		! Define the dialogue message types which occur during DUMP

;      R0842		! and Downline Load dialogues between the host and server NICE

;      R0843		! objects.

;      R0844		!-

;      R0845	LITERAL

;      R0846		NIC$K_EOD = 0,		NIC$K_SETBASE = 1,

;      R0847		NIC$K_MEMIMAGE = 2,	NIC$K_SYSPAR = 3 ;

;      R0848	

;      R0849	

;      R0850		! Define the !&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&

;      R0851	LITERAL

;      R0852		NIC$K_MAXLNTYPE = 30,

;      R0853	

;      R0854	

;      R0855		 LN$K_ENTRIES = NIC$K_MAXLNTYPE/2 + 1,

;      R0856		 LN$K_ENTSIZE = LTE$K_SIZE,

;      R0857		 LN$K_LDRNAMSIZ = 0,

;      R0858		 LN$K_LDRNAME = 1,

;      R0859		 LN$K_INTNAME = 2 ;

;      R0860	

;      R0861	

;      R0862	LITERAL

;      R0863		NIC$K_EFNDLLRCV = 2,

;      R0864		NIC$K_TRGEFN	= 3,

;      R0865	

;      R0866		NIC$K_MOPRETRY	= 3 ;	! Retry counter initial value for 

;      R0867					! MOP messages.

;      R0868	

;      R0869	LITERAL

;      R0870		L$BSA = 8,	L$BXFR = 232,

;      R0871		L$BBLK = 240 ;

;      R0872	

;      R0873	

;      R0874	

;      R0875	! Define MOP message codes

;      R0876	LITERAL

;      R0877	  MOP$K_MEMLOADX = 0,	MOP$K_MEMLOAD = 2,	MOP$K_MEMDUMP = 4,

;      R0878	  MOP$K_ENTERMOP = 6,	MOP$K_PGMREQ = 8,	MOP$K_REQLOAD = 10,

;      R0879	  MOP$K_RUNNING = 12,	MOP$K_DUMPDATA = 14,	MOP$K_PARAMS = 20,

;      R0880	

;      R0881	

;      R0882	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 14

; Digital Equipment Corporation

;

;      R0883	  ! DEFINE ACP FCT CODES FOR THE IO$_ACPCONTROL FUNCTION

;      R0884	

;      R0885		SET_LINE_STATE	=  1,

;      R0886		GET_LINE_STATE	=  2,

;      R0887		GET_LINE_CTRS	=  3,

;      R0888		CLR_LINE_CTRS	=  4,

;      R0889	

;      R0890		SET_OBJ_DATA	=  5,

;      R0891		SET_RMT_DATA	=  6,

;      R0892	

;      R0893		GET_LOCAL_NAME	=  7,

;      R0894	

;      R0895		GET_LN_BY_ND	=  8,	!&& REMEMBER ZERO LENGTH RETURNED STR

;      R0896					!&& INDICATES LOCAL NODE

;      R0897		GET_LOG_LINKS	=  9,

;      R0898	

;      R0899		SET_LOCAL_STATE	= 10,

;      R0900		GET_LOCAL_STATE	= 11,

;      R0901		GET_LOCAL_CTRS	= 12,

;      R0902		CLR_LOCAL_CTRS	= 13,

;      R0903		

;      R0904		GET_NODE_NAMES	= 14,

;      R0905		GET_LINE_NAMES	= 15,

;      R0906	

;      R0907		DISCONNECT_LINK	= 16,

;      R0908	

;      R0909		GET_NAME_BY_NUM	= 17,

;      R0910		GET_NUM_BY_NAME	= 18,

;      R0911		GET_VERSION	= 19,

;      R0912		GET_ND_BY_LN	= 20,



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 15

; Digital Equipment Corporation

;

;      R0913	  ! BOOLEAN CONSTANTS

;      R0914	

;      R0915	  TRUE  = 1,

;      R0916	  FALSE = 0,

;      R0917	

;      R0918	

;      R0919	! Define subfunction codes for routine INS_CTRS (module NICMSG.B32).

;      R0920	

;      R0921	  NODE_CTRS = 0,	! Insert node counters.

;      R0922	  LINE_CTRS = 1,	! Insert line counters.

;      R0923	

;      R0924	

;      R0925	  ! Define line and node state symbols

;      R0926	

;      R0927	  ON = 0, OFF = 1,  SHUT = 2, LOOPBACK = 3, CTL_LPBK = 5,

;      R0928	

;      R0929	

;      R0930	

;      R0931	! Define function codes for routine MESSAGE (module NICMSG)

;      R0932	

;      R0933	  RCV_I    = 0,	OPEN_I = 1,	CLOSE_I = 2,	CHECK_I = 3,

;      R0934	  APPEND_O = 4,	OPEN_O = 5,	CLOSE_O = 6,	SEND_O  = 7,

;      R0935	

;      R0936	  SEND_REPLY = 8,	SEND_DDSC = 9,  	CLEAR_ALL = 10,

;      R0937	

;      R0938	  INITIALIZE = 11,	RCV_CLOSED = 12,	MAX_MSGFCT = 12  ;

;      R0939	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICDEF.B32;35					Page 16

; Digital Equipment Corporation

;

;      R0940	KEYWORDMACRO

;      R0941	

;      R0942		!+

;      R0943		! Define macros to pass parameters to routines GET_REC and

;      R0944		! MOV_FIELD (both from module NICMSG.B32).

;      R0945		!-

;      R0946	

;      R0947	  _GET_REC (FILE=0,BUFF=0,STRT=0,KEY=0)	=

;     MR0948		 GET_REC (FILE,BUFF,STRT,KEY) %,

;      R0949	

;      R0950	  _MOV_FIELD (BUFF=0,STRT=0,SIZE=0,DEST=0)  =

;     MR0951		 MOV_FIELD (BUFF,STRT,SIZE,DEST) % ;

;      R0952	

;      R0953	

;	0954	

;	0955	  SWITCHES LIST (NOREQUIRE) ;

;	0956	

;	0957	

;	0958	

;	0959	!

;	0960	! TABLE OF CONTENTS:

;	0961	!

;	0962	

;	0963	FORWARD ROUTINE

;	0964	

;	0965	  RESET_ALL	: NOVALUE	LNKMSG,

;	0966	  LOG_ERRORS	: NOVALUE	LNKMSG,

;	0967	  READ_INFO	: NOVALUE	LNKMSG,

;	0968	  SET_PARAM	: NOVALUE	LNKMSG,

;	0969	  READ_INFO_ERR	: NOVALUE	LNKMSG,

;	0970	  ZERO_CTRS	: NOVALUE	LNKMSG,

;	0971	  TEST		: NOVALUE	LNKMSG,

;	0972	  END_TEST	: NOVALUE	LNKMSG,

;	0973	  LOOP_BACK	: NOVALUE	LNKMSG,

;	0974	

;	0975	  GET_CONFIG,

;	0976	  APP_MP_REC,

;	0977	

;	0978	  CK_ERR	: 		LNKMSG,

;	0979	  COND_HANDLER	: NOVALUE,

;	0980	

;	0981	  LOOP_MSG 	:		LNKMSG ;

;	0982	

;	0983	

;	0984	EXTERNAL ROUTINE

;	0985	

;	0986	  LINSRV	: LNKMSG NOVALUE,

;	0987	  ENDLINSRV	: LNKMSG NOVALUE,

;	0988	  DOWNLINE	: LNKMSG NOVALUE,

;	0989	  END_DOWNLINE	: LNKMSG NOVALUE,

;	0990	

;	0991	

;	0992	  ACP		: LNKMSG,

;	0993	  GET_REC	: LNKMSG,

;	0994	  MOV_FIELD	: LNKMSG,



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 16-1

; Digital Equipment Corporation

;

;	0995	  VERIFY_LN	: LNKMSG,

;	0996	  CVTLN		: LNKMSG,

;	0997	  LINK		: LNKMSG,

;	0998	  MESSAGE	: LNKMSG,

;	0999	

;	1000	  EXTSTR	: LNKMSG,

;	1001	  EXT_USTR	: LNKMSG,

;	1002	  EXTLN		: LNKMSG,

;	1003	  EXTND		: LNKMSG,

;	1004	  EXTB		: LNKMSG,

;	1005	  EXTW		: LNKMSG,

;	1006	  EXTL		: LNKMSG,

;	1007	

;	1008	  INSSTR	: LNKMSG,

;	1009	  INSLN		: LNKMSG,

;	1010	  INSB		: LNKMSG,

;	1011	  INSW		: LNKMSG,

;	1012	  INSL		: LNKMSG,

;	1013	  INS_CTRS	: LNKMSG,

;	1014	  INSFILL	: LNKMSG,

;	1015	  INS_REST	: LNKMSG ;

;	1016	

;	1017	

;	1018	EXTERNAL ROUTINE 

;	1019	  OPEN_FILE,

;	1020	  CLOSE_FILE,

;	1021	  MATCHKEY ;

;	1022	

;	1023	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 17

; Digital Equipment Corporation

;

;	1024	!

;	1025	! EXTERNAL STORAGE:

;	1026	!

;	1027	

;	1028	EXTERNAL

;	1029	

;	1030	  FCT_CODE : BYTE,	! The function code obtained from the

;	1031				! first byte of a NICE command message.

;	1032	  OPTION   : BYTE,	! The option code obtained from the 

;	1033				! second byte of a NICE command message.

;	1034	

;	1035	  NAMES_IN_LIST,	! Used to store the number of nodes or

;	1036				! lines in a list

;	1037	

;	1038	  CNT_2   : WORD,	! The number of times to loop a message.

;	1039	  CHANNEL : WORD,	! Channel number for communication

;	1040				! with another NICE process.

;	1041	  DATA_TYPE : BYTE,	! Indicates what type of data is to be

;	1042				! stored in a loopback message, i.e, 

;	1043				! ones, zeroes, or mixed.

;	1044	  DATA_SIZE : WORD,	! Size in bytes of the data field of a

;	1045				! loopback message.

;	1046	

;	1047	  CPU_TYPE : BYTE,	! NICE code for the processor type of a

;	1048				! target node when doing downline loads.

;	1049	  PGM_TYPE : BYTE,	! NICE code for type of program, i.e.,

;	1050				! secondary or tertiary loader or

;	1051				! operating system, to be loaded next in

;	1052				! the downline load sequence.

;	1053	  DEV_TYPE : BYTE,	! The line device type at the target end

;	1054				! during boots and downline loads

;	1055	

;	1056	

;	1057	  XFER_ADDR,		! Transfer address of program being

;	1058				! downline loaded,

;	1059	  BASE_ADDR,		!   and its base address.

;	1060	

;	1061	  EXP_ADDR,		! Always indicates the highest virtual

;	1062				! address of the NICE process before

;	1063				! any virtual address expansion has

;	1064				! occured.

;	1065	  FILE_MAPPED,		! A true false flag indicating whether

;	1066				! or not a task image is currently 

;	1067				! mapped into the current process'

;	1068				! address space.

;	1069	

;	1070	  FILE_VADDR_Q	: BLOCK [2, LONG],

;	1071	

;	1072				! Two long words describing the begining

;	1073				! and ending virtual addresses of a

;	1074				! entire mapped file, not just its image

;	1075				! portion.

;	1076	  IMAGE_LB,		! The lower bound virtual address in the

;	1077				! current process space of the task 

;	1078				! image being downline loaded.



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 17-1

; Digital Equipment Corporation

;

;	1079	  IMAGE_UB,		! Its upper bound virtual address.

;	1080	

;	1081	  MSG_CTL_BLK : MCB,	! This 'message control block' is used

;	1082				! to pass control and status between the

;	1083				! NICMSG module routines in this module

;	1084				! and the routines which call them.

;	1085	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 18

; Digital Equipment Corporation

;

;	1086	  !+

;	1087	  ! LN_DDSC is used to describe line names in internal format,

;	1088	  ! i.e., an uncounted string of the form XMA0.  CDB_LN_DDSC

;	1089	  ! is used to describe a line name in the form expected by 

;	1090	  ! the configuration data base.

;	1091	  !-

;	1092	     LN_DDSC	   : DDSC,

;	1093	     CDB_LN_DDSC   : DDSC,

;	1094	

;	1095	  !+

;	1096	  ! The following are used to describe node names consisting

;	1097	  ! of a counted string whose text portion is at most 6 bytes

;	1098	  ! and whose count field is a single byte.

;	1099	  !-

;	1100	     ND_DDSC	  : DDSC,	! general use

;	1101	     LND_DDSC	  : DDSC,	! local name

;	1102	     SND_DDSC	  : DDSC,	! server name

;	1103	     HND_DDSC	  : DDSC,	! host name

;	1104	     TND_DDSC	  : DDSC,	! target name

;	1105	

;	1106	  !+

;	1107	  ! The following are used during downline loads.

;	1108	  !-

;	1109	     BTPW_DDSC	  : DDSC,   ! Counted string boot password

;	1110	     OPSYS_DDSC	  : DDSC,   ! Uncounted operating system filename

;	1111	     PGM_DDSC	  : DDSC,   ! Uncounted filename of program to 

;	1112				    ! be loaded next in the downline

;	1113				    ! sequence.

;	1114	  !+

;	1115	  ! The following are used to describe messages and buffers

;	1116	  ! used to communicate with a remote object.

;	1117	  !-

;	1118	     IMSG_DDSC	  : DDSC,

;	1119	     OMSG_DDSC	  : DDSC,

;	1120	

;	1121	  !+

;	1122	  ! The following are use to describe messages and buffers

;	1123	  ! used to communicate with the command node.

;	1124	  !-

;	1125	    CMD_IMSG_DDSC   : DDSC,

;	1126	    CMD_OMSG_DDSC   : DDSC,

;	1127	

;	1128	  !+

;	1129	  ! The following are used for miscellaneous purposes

;	1130	  !-

;	1131	     AUX0_DDSC	  : DDSC,

;	1132	     AUX1_DDSC	  : DDSC,

;	1133	     LARGE_DDSC	  : DDSC ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 19

; Digital Equipment Corporation

;

;	1134	!+

;	1135	! DD_VEC is a vector of all the DDSC's commonly used by the

;	1136	! NICE function handlers.  INIT_DD_VEC is a vector of size

;	1137	! values for every buffer described by its DDSC.  It is used to

;	1138	! initialize the DDSC's and assumes that buffer space will be

;	1139	! allocated from COMMON_BF_SPACE.  See the RESET_ALL routine

;	1140	! below.

;	1141	!-

;	1142	

;	1143	EXTERNAL  INIT_DD_VEC	  : VECTOR [NUM_DDSC, WORD],

;	1144	

;	1145		  COMMON_BF_SPACE : VECTOR [SUM, BYTE],

;	1146	

;	1147		  DD_VEC 	  : BLOCKVECTOR [NUM_DDSC, DDSC_SIZE] ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 20

; Digital Equipment Corporation

;

;	1148	GLOBAL ROUTINE NIC$MAIN  : NOVALUE =	! MAIN ROUTINE

;	1149	

;	1150	!++

;	1151	! FUNCTIONAL DESCRIPTION:

;	1152	!

;	1153	!	MAIN ROUTINE IS RESPONSIBLE FOR CONFIRMING THE CONNECT

;	1154	!	TO THE COMMAND NODE, THEN ITERATIVELY READING A COMMAND

;	1155	!	MESSAGE AND DISPATCHING ACCORDING TO THE FCT CODE FOUND 

;	1156	!	IN THE FIRST BYTE OF THE MESSAGE.

;	1157	!

;	1158	! CALLING SEQUENCE:

;	1159	!

;	1160	!	RUN NICE

;	1161	!

;	1162	! FORMAL PARAMETERS:

;	1163	!

;	1164	!	NONE

;	1165	!

;	1166	! IMPLICIT INPUTS:

;	1167	!

;	1168	!	NONE

;	1169	!

;	1170	! IMPLICIT OUTPUTS:

;	1171	!

;	1172	!	NONE

;	1173	!

;	1174	! ROUTINE VALUE:

;	1175	! COMPLETION CODES:

;	1176	!

;	1177	!	NONE

;	1178	!

;	1179	! SIDE EFFECTS:

;	1180	!

;	1181	!	DIALOGUE WITH THE COMMAND NODE AND THE EXECUTION OF 

;	1182	!	LEAGAL NICE MESSAGES.

;	1183	!

;	1184	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 21

; Digital Equipment Corporation

;

;	1185	BEGIN

;	1186	LOCAL	ITEMLIST : BLOCK [16,BYTE] ;

;	1187	

;	1188	GLOBAL REGISTER	   P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	1189	

;	1190	ENABLE COND_HANDLER ;			! Establish the condition

;	1191						! handler.

;	1192	

;	1193	!+

;	1194	! Determine the value of the first unused virtual address

;	1195	!-

;	1196	   ITEMLIST [0,0,16,0]  = 4 ;

;	1197	   ITEMLIST [2,0,16,0]  = JPI$_FREP0VA ;

;	1198	   ITEMLIST [4,0,32,0]  = EXP_ADDR ;

;	1199	   ITEMLIST [8,0,32,0]  = 0 ;		! Addr of word to rec. length

;	1200	   ITEMLIST [12,0,32,0] = 0 ;		! Terminate list.

;	1201	

;	1202	   IF NOT $GETJPI (ITMLST = ITEMLIST) THEN $EXIT (CODE=1) ;

;	1203	

;	1204	!+

;	1205	! Initialize the message handling facility.  This involves

;	1206	! issueing a connect-confirm over SYS$NET, assigning a channel

;	1207	! to NETACP for control QIO's.  The second parameter is the

;	1208	! address of the routine through which all MESSAGE routines

;	1209	! (e.g., MESSAGE,INSB,EXTND, etc.) exit.  This address is stored

;	1210	! in the MCB$A_EXIT_RT field of the message control block.  If

;	1211	! it is specified as zero, then the address of the default null

;	1212	! routine is entered into this field.  The value of the exit

;	1213	! routine field may be changed at any time merely by entering 

;	1214	! the address of the new exit routine in MCB$A_EXIT_RT.

;	1215	!-

;	1216	

;	1217	MCB_PTR = MSG_CTL_BLK ;		! Setup the pointer to the 

;	1218					! 'message control block'

;	1219	

;	1220	MCB_PTR [MCB$L_REPLYCODE]   = NIC$_SUCCESS ;

;	1221	MCB_PTR [MCB$B_REQDISCON]  = FALSE ;

;	1222	MCB_PTR [MCB$B_ERROR_ON]   = FALSE ;  ! Disable the error handling

;	1223					    ! capability of 'CK_ERR'.

;	1224	IF MESSAGE (INITIALIZE, CK_ERR)

;	1225	THEN

;	1226	   UNTIL .MCB_PTR [MCB$B_REQDISCON]

;	1227	   DO

;	1228	     BEGIN

;	1229	     RESET_ALL () ;

;	1230	

;	1231	     MESSAGE (RCV_I,  CMD_IMSG_DDSC) ;

;	1232	     MESSAGE (OPEN_O, CMD_OMSG_DDSC) ;

;	1233	

;	1234	     MCB_PTR [MCB$B_ERROR_ON] = TRUE ;	! enable the error handler

;	1235	     EXTB (FCT_CODE) ;

;	1236	     EXTB (OPTION) ;

;	1237	     MCB_PTR [MCB$B_ERROR_ON] = FALSE ;

;	1238	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 22

; Digital Equipment Corporation

;

;	1239	    SELECTONE  .FCT_CODE  OF

;	1240	      SET

;	1241	      [NIC$K_DLL]	: DOWNLINE () ;

;	1242	      [NIC$K_LOOPBACK]	: LOOP_BACK () ;

;	1243	      [NIC$K_TEST]	: TEST () ;

;	1244	      [NIC$K_SETPARAM]	: SET_PARAM () ;

;	1245	      [NIC$K_READINFO]  : READ_INFO () ;

;	1246	      [NIC$K_ZEROCTRS]  : ZERO_CTRS () ;

;	1247	      [NIC$K_LNSRV]	: LINSRV () ;

;	1248	      [OTHERWISE]	: MCB_PTR[MCB$L_REPLYCODE] = NIC$_ILL_FCT ;

;	1249	      TES ;

;	1250	

;	1251	    !+

;	1252	    ! 'MCB_PTR [MCB$B_REQDISCON]' is set by one of the function 

;	1253	    ! handlers if it has made dialogue commitments which it can

;	1254	    ! not meet.  an example would be a promise to send 'n'

;	1255	    ! messages, but before all of the messages have been sent an

;	1256	    ! unrecoverable error (such as acp failure) occurs.  the 

;	1257	    ! 'NICE' protocol does not provide any means of reporting

;	1258	    ! this and therefore the link must be broken.

;	1259	

;	1260	    IF  NOT .MCB_PTR [MCB$B_REQDISCON]

;	1261	    THEN

;	1262	

;	1263		! reply if the dispatched routine did not

;	1264	

;	1265		IF  .MCB_PTR [MCB$W_REPLIES] EQL 0

;	1266		THEN

;	1267		    MESSAGE (SEND_REPLY, 0) ;

;	1268	

;	1269	    END ;

;	1270	$EXIT (CODE=1) ;

;	1271	END ;





							    .TITLE  NCMAIN

							    .IDENT  \X12\



							    .GLOBL  LINSRV, ENDLINSRV, DOWNLINE, END_DOWNLINE, ACP

							    .GLOBL  GET_REC, MOV_FIELD, VERIFY_LN, CVTLN, LINK, MESSAGE

							    .GLOBL  EXTSTR, EXT_USTR, EXTLN, EXTND, EXTB, EXTW, EXTL

							    .GLOBL  INSSTR, INSLN, INSB, INSW, INSL, INS_CTRS, INSFILL

							    .GLOBL  INS_REST, OPEN_FILE, CLOSE_FILE, MATCHKEY, FCT_CODE

							    .GLOBL  OPTION, NAMES_IN_LIST, CNT_2, CHANNEL, DATA_TYPE

							    .GLOBL  DATA_SIZE, CPU_TYPE, PGM_TYPE, DEV_TYPE, XFER_ADDR

							    .GLOBL  BASE_ADDR, EXP_ADDR, FILE_MAPPED, FILE_VADDR_Q

							    .GLOBL  IMAGE_LB, IMAGE_UB, MSG_CTL_BLK, LN_DDSC, CDB_LN_DDSC

							    .GLOBL  ND_DDSC, LND_DDSC, SND_DDSC, HND_DDSC, TND_DDSC

							    .GLOBL  BTPW_DDSC, OPSYS_DDSC, PGM_DDSC, IMSG_DDSC, OMSG_DDSC

							    .GLOBL  CMD_IMSG_DDSC, CMD_OMSG_DDSC, AUX0_DDSC, AUX1_DDSC

							    .GLOBL  LARGE_DDSC, INIT_DD_VEC, COMMON_BF_SPACE, DD_VEC

							    .GLOBL  SYS$GETJPI, SYS$EXIT



							    .PSECT  $CODE$,NOWRT,2





; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 22-1

; Digital Equipment Corporation

;

					 0F84 00000 	    .ENTRY  NIC$MAIN, Save R2,R7,R8,R9,R10,R11			      ; 1148

		         57	0000G  CF  9E 00002 	    MOVAB   MESSAGE, R7						      ;

		         58 00000000G  9F  9E 00007 	    MOVAB   @#SYS$EXIT, R8					      ;

		         5E	       0C  C2 0000E 	    SUBL2   #12, SP						      ;

		         6D 000000EC   EF  DE 00011 	    MOVAL   14$, (FP)						      ; 1185

			    04040004   8F  DD 00018 	    PUSHL   #67371012						      ; 1196

		    04   AE	0000G  CF  9E 0001E 	    MOVAB   EXP_ADDR, ITEMLIST+4				      ; 1198

				  08   AE  7C 00024 	    CLRQ    ITEMLIST+8						      ; 1199

				       7E  7C 00027 	    CLRQ    -(SP)						      ; 1202

				       7E  D4 00029 	    CLRL    -(SP)						      ;

				  0C   AE  9F 0002B 	    PUSHAB  ITEMLIST						      ;

				       7E  7C 0002E 	    CLRQ    -(SP)						      ;

				       7E  D4 00030 	    CLRL    -(SP)						      ;

	      00000000G  9F	       07  FB 00032 	    CALLS   #7, @#SYS$GETJPI					      ;

		         05	       50  E8 00039 	    BLBS    R0, 1$						      ;

				       01  DD 0003C 	    PUSHL   #1							      ;

		         68	       01  FB 0003E 	    CALLS   #1, SYS$EXIT					      ;

		         59	0000G  CF  9E 00041 1$:     MOVAB   MSG_CTL_BLK, MCB_PTR				      ; 1217

		         69	       01  D0 00046 	    MOVL    #1, (MCB_PTR)					      ; 1220

				  40   A9  B4 00049 	    CLRW    64(MCB_PTR)						      ; 1221

				0000V  CF  9F 0004C 	    PUSHAB  CK_ERR						      ; 1224

				       0B  DD 00050 	    PUSHL   #11							      ;

		         67	       02  FB 00052 	    CALLS   #2, MESSAGE						      ;

		         03	       50  E8 00055 	    BLBS    R0, 3$						      ;

				     00A2  31 00058 2$:     BRW     13$							      ;

		         F9	  40   A9  E8 0005B 3$:     BLBS    64(MCB_PTR), 2$					      ; 1226

		  0000V  CF	       00  FB 0005F 	    CALLS   #0, RESET_ALL					      ; 1229

				0000G  CF  9F 00064 	    PUSHAB  CMD_IMSG_DDSC					      ; 1231

				       7E  D4 00068 	    CLRL    -(SP)						      ;

		         67	       02  FB 0006A 	    CALLS   #2, MESSAGE						      ;

				0000G  CF  9F 0006D 	    PUSHAB  CMD_OMSG_DDSC					      ; 1232

				       05  DD 00071 	    PUSHL   #5							      ;

		         67	       02  FB 00073 	    CALLS   #2, MESSAGE						      ;

		    41   A9	       01  90 00076 	    MOVB    #1, 65(MCB_PTR)					      ; 1234

				0000G  CF  9F 0007A 	    PUSHAB  FCT_CODE						      ; 1235

		  0000G  CF	       01  FB 0007E 	    CALLS   #1, EXTB						      ;

				0000G  CF  9F 00083 	    PUSHAB  OPTION						      ; 1236

		  0000G  CF	       01  FB 00087 	    CALLS   #1, EXTB						      ;

				  41   A9  94 0008C 	    CLRB    65(MCB_PTR)						      ; 1237

		         52	0000G  CF  9A 0008F 	    MOVZBL  FCT_CODE, R2					      ; 1239

		         02	       52  91 00094 	    CMPB    R2, #2						      ;

				       07  12 00097 	    BNEQ    4$							      ;

		  0000G  CF	       00  FB 00099 	    CALLS   #0, DOWNLINE					      ; 1241

				       4B  11 0009E 	    BRB     11$							      ; 1239

		         05	       52  91 000A0 4$:     CMPB    R2, #5						      ;

				       07  12 000A3 	    BNEQ    5$							      ;

		  0000V  CF	       00  FB 000A5 	    CALLS   #0, LOOP_BACK					      ; 1242

				       3F  11 000AA 	    BRB     11$							      ; 1239

		         06	       52  91 000AC 5$:     CMPB    R2, #6						      ;

				       07  12 000AF 	    BNEQ    6$							      ;

		  0000V  CF	       00  FB 000B1 	    CALLS   #0, TEST						      ; 1243

				       33  11 000B6 	    BRB     11$							      ; 1239

		         07	       52  91 000B8 6$:     CMPB    R2, #7						      ;

				       07  12 000BB 	    BNEQ    7$							      ;

		  0000V  CF	       00  FB 000BD 	    CALLS   #0, SET_PARAM					      ; 1244



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 22-2

; Digital Equipment Corporation

;

				       27  11 000C2 	    BRB     11$							      ; 1239

		         08	       52  91 000C4 7$:     CMPB    R2, #8						      ;

				       07  12 000C7 	    BNEQ    8$							      ;

		  0000V  CF	       00  FB 000C9 	    CALLS   #0, READ_INFO					      ; 1245

				       1B  11 000CE 	    BRB     11$							      ; 1239

		         09	       52  91 000D0 8$:     CMPB    R2, #9						      ;

				       07  12 000D3 	    BNEQ    9$							      ;

		  0000V  CF	       00  FB 000D5 	    CALLS   #0, ZERO_CTRS					      ; 1246

				       0F  11 000DA 	    BRB     11$							      ; 1239

		         0E	       52  91 000DC 9$:     CMPB    R2, #14						      ;

				       07  12 000DF 	    BNEQ    10$							      ;

		  0000G  CF	       00  FB 000E1 	    CALLS   #0, LINSRV						      ; 1247

				       03  11 000E6 	    BRB     11$							      ; 1239

		         69	       02  CE 000E8 10$:    MNEGL   #2, (MCB_PTR)					      ; 1248

		         0E	  40   A9  E8 000EB 11$:    BLBS    64(MCB_PTR), 13$					      ; 1260

				  42   A9  B5 000EF 	    TSTW    66(MCB_PTR)						      ; 1265

				       06  12 000F2 	    BNEQ    12$							      ;

		         7E	       08  7D 000F4 	    MOVQ    #8, -(SP)						      ; 1267

		         67	       02  FB 000F7 	    CALLS   #2, MESSAGE						      ;

				     FF5E  31 000FA 12$:    BRW     3$							      ; 1226

				       01  DD 000FD 13$:    PUSHL   #1							      ; 1270

		         68	       01  FB 000FF 	    CALLS   #1, SYS$EXIT					      ;

					   04 00102 	    RET     							      ; 1148

					 0000 00103 14$:    .WORD   Save nothing					      ; 1185

				       7E  D4 00105 	    CLRL    -(SP)						      ;

				       5E  DD 00107 	    PUSHL   SP							      ;

		         7E	  04   AC  7D 00109 	    MOVQ    4(AP), -(SP)					      ;

		  0000V  CF	       03  FB 0010D 	    CALLS   #3, COND_HANDLER					      ;

					   04 00112 	    RET     							      ;



; Routine Size:  275 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 23

; Digital Equipment Corporation

;

;	1272	GLOBAL ROUTINE CK_ERR  : LNKMSG =

;	1273	

;	1274	!++

;	1275	! FUNCTIONAL DESCRIPTION:

;	1276	!

;	1277	!	Checks for errors by examining the value of REPLY_CODE.

;	1278	!	If it indicates an error, and if the MCB$B_ERROR_ON switch is

;	1279	!	enabled, then an appropriate response message is sent to

;	1280	!	the command node.  This message is determined from the 

;	1281	!	command function named by FCT_CODE and by the value of

;	1282	!	reply code.

;	1283	!

;	1284	!	The return is not to the calling routine if the MCB$B_ERROR_ON

;	1285	!	switch is enabled and an error condition is detected, but 

;	1286	!	the condition handler is signalled to unwind to the main

;	1287	!	routine.

;	1288	!

;	1289	! FORMAL PARAMETERS:

;	1290	!

;	1291	!	NONE

;	1292	!

;	1293	! IMPLICIT INPUTS:

;	1294	!

;	1295	!	R9	- Contains the address of the MCB.

;	1296	!	R10	- Used as a pointer to the message being built as a

;	1297	!		  reply to the command node.

;	1298	!	R11	- Used as a pointer to parse the input message from the

;	1299	!		  command node.

;	1300	!

;	1301	! IMPLICIT OUTPUTS:

;	1302	!

;	1303	!	same as the implicit inputs

;	1304	!

;	1305	! ROUTINE VALUE:

;	1306	! COMPLETION CODES:

;	1307	!

;	1308	!	both R0 and REPLY_CODE (i.e., R9) return the standard

;	1309	!	NICE mapped status codes defined in NICDAT.B32.

;	1310	!

;	1311	! SIDE EFFECTS:

;	1312	!

;	1313	!	NONE

;	1314	!

;	1315	!--

;	1316	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 24

; Digital Equipment Corporation

;

;	1317	BEGIN

;	1318	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	1319	

;	1320	OWN	SIGNAL_ARGS	: VECTOR [4],

;	1321		MECHANISM_ARGS	: VECTOR [5] ;

;	1322	

;	1323	

;	1324	IF NOT .MCB_PTR [MCB$L_REPLYCODE]	! If error is indicated

;	1325	   AND .MCB_PTR [MCB$B_ERROR_ON]	!  and the error handler is

;	1326	THEN					!  enabled

;	1327	    BEGIN

;	1328	

;	1329	    MCB_PTR [MCB$B_ERROR_ON] = FALSE ;	! Temporarily disable error

;	1330						!  handler to prevent recursion.

;	1331	    !+

;	1332	    ! Dispatch to cleanup routines if necessary

;	1333	    !-

;	1334	    SELECTONE  .FCT_CODE  OF

;	1335	     SET

;	1336	     [NIC$K_DLL]	: END_DOWNLINE () ;

;	1337	     [NIC$K_TEST]	: END_TEST () ;

;	1338	     [NIC$K_READINFO]	: READ_INFO_ERR () ;

;	1339	     [NIC$K_LNSRV]	: ENDLINSRV () ;

;	1340	     [OTHERWISE] :

;	1341	

;	1342			IF  .MCB_PTR [MCB$W_REPLIES] EQL 0	! Send reply unless

;	1343			THEN					! one was already sent

;	1344			    MESSAGE (SEND_REPLY, 0) ;

;	1345	

;	1346	     TES ;

;	1347	

;	1348	    MCB_PTR [MCB$B_ERROR_ON] = TRUE ;		! restore this

;	1349	

;	1350	      !+

;	1351	      ! Pass control to the condition handler which will unwind to

;	1352	      ! the main routine.

;	1353	      !-

;	1354	

;	1355	    IF NOT SIGNAL (STS$M_INHIB_MSG, SIGNAL_ARGS, MECHANISM_ARGS) 	

;	1356	    THEN

;	1357		$EXIT (CODE=1) ;	! no other recovery is possible

;	1358	    END ;

;	1359	

;	1360	RETURN (.MCB_PTR [MCB$L_REPLYCODE]) ;

;	1361	

;	1362	END ;







							    .PSECT  $OWN$,NOEXE,2



					      00000 SIGNAL_ARGS:

							    .BLKB   16

					      00010 MECHANISM_ARGS:

							    .BLKB   20



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 24-1

; Digital Equipment Corporation

;







							    .PSECT  $CODE$,NOWRT,2



					 0004 00113 	    .ENTRY  CK_ERR, Save R2					      ; 1272

		         6E	       69  E8 00115 	    BLBS    (MCB_PTR), 6$					      ; 1324

		         6A	  41   A9  E9 00118 	    BLBC    65(MCB_PTR), 6$					      ; 1325

				  41   A9  94 0011C 	    CLRB    65(MCB_PTR)						      ; 1329

		         52	0000G  CF  9A 0011F 	    MOVZBL  FCT_CODE, R2					      ; 1334

		         02	       52  91 00124 	    CMPB    R2, #2						      ;

				       07  12 00127 	    BNEQ    1$							      ;

		  0000G  CF	       00  FB 00129 	    CALLS   #0, END_DOWNLINE					      ; 1336

				       31  11 0012E 	    BRB     5$							      ; 1334

		         06	       52  91 00130 1$:     CMPB    R2, #6						      ;

				       07  12 00133 	    BNEQ    2$							      ;

		  0000V  CF	       00  FB 00135 	    CALLS   #0, END_TEST					      ; 1337

				       25  11 0013A 	    BRB     5$							      ; 1334

		         08	       52  91 0013C 2$:     CMPB    R2, #8						      ;

				       07  12 0013F 	    BNEQ    3$							      ;

		  0000V  CF	       00  FB 00141 	    CALLS   #0, READ_INFO_ERR					      ; 1338

				       19  11 00146 	    BRB     5$							      ; 1334

		         0E	       52  91 00148 3$:     CMPB    R2, #14						      ;

				       07  12 0014B 	    BNEQ    4$							      ;

		  0000G  CF	       00  FB 0014D 	    CALLS   #0, ENDLINSRV					      ; 1339

				       0D  11 00152 	    BRB     5$							      ; 1334

				  42   A9  B5 00154 4$:     TSTW    66(MCB_PTR)						      ; 1342

				       08  12 00157 	    BNEQ    5$							      ;

		         7E	       08  7D 00159 	    MOVQ    #8, -(SP)						      ; 1344

		  0000G  CF	       02  FB 0015C 	    CALLS   #2, MESSAGE						      ;

		    41   A9	       01  90 00161 5$:     MOVB    #1, 65(MCB_PTR)					      ; 1348

				0000'  CF  9F 00165 	    PUSHAB  MECHANISM_ARGS					      ; 1355

				0000'  CF  9F 00169 	    PUSHAB  SIGNAL_ARGS						      ;

			    10000000   8F  DD 0016D 	    PUSHL   #268435456						      ;

	      00000000G  00	       03  FB 00173 	    CALLS   #3, LIB$SIGNAL					      ;

		         09	       50  E8 0017A 	    BLBS    R0, 6$						      ;

				       01  DD 0017D 	    PUSHL   #1							      ; 1357

	      00000000G  9F	       01  FB 0017F 	    CALLS   #1, @#SYS$EXIT					      ;

		         50	       69  D0 00186 6$:     MOVL    (MCB_PTR), R0					      ; 1360

					   04 00189 	    RET     							      ; 1272



; Routine Size:  119 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 25

; Digital Equipment Corporation

;

;	1363	ROUTINE COND_HANDLER (SIGNAL_AD, MECHANISM_AD) : NOVALUE =

;	1364	

;	1365	!++

;	1366	! FUNCTIONAL DESCRIPTION:

;	1367	!

;	1368	!	This is the condition handler enabled in the main routine

;	1369	!	and signalled by CK_ERR.  Its sole purpose is to unwind to

;	1370	!	the main routine level.

;	1371	!

;	1372	! FORMAL PARAMETERS:

;	1373	!

;	1374	!	SIGNAL_AD	- the address of the signal argument list.

;	1375	!	MECHANISM_AD	- the address of the mechanism argument list.

;	1376	!

;	1377	! IMPLICIT INPUTS:

;	1378	!

;	1379	!	NONE

;	1380	!

;	1381	! IMPLICIT OUTPUTS:

;	1382	!

;	1383	!	NONE

;	1384	!

;	1385	! ROUTINE VALUE:

;	1386	! COMPLETION CODES:

;	1387	!

;	1388	!	NONE

;	1389	!

;	1390	! SIDE EFFECTS:

;	1391	!

;	1392	!	The stack is unwound to the main routine.

;	1393	!

;	1394	!--

;	1395	

;	1396	BEGIN

;	1397	BIND	MECH_LIST = .MECHANISM_AD : VECTOR [5] ;

;	1398	

;	1399	SETUNWIND (MECH_LIST [2], 0) ;	! Unwind to frame which established

;	1400					! the handler.

;	1401	END ;











					 0000 0018A COND_HANDLER:

							    .WORD   Save nothing					      ; 1363

		         50	  08   AC  D0 0018C 	    MOVL    MECHANISM_AD, R0					      ; 1396

				       7E  D4 00190 	    CLRL    -(SP)						      ; 1399

				  08   A0  9F 00192 	    PUSHAB  8(R0)						      ;

	      00000000G  00	       02  FB 00195 	    CALLS   #2, SYS$UNWIND					      ;

					   04 0019C 	    RET     							      ; 1363



; Routine Size:  19 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 25-1

; Digital Equipment Corporation

;

;	1402	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 26

; Digital Equipment Corporation

;

;	1403	ROUTINE  RESET_ALL : NOVALUE LNKMSG =

;	1404	

;	1405	!++

;	1406	! FUNCTIONAL DESCRIPTION:

;	1407	!

;	1408	!	Resets all state flags and initializes all global

;	1409	!	double-descriptors including the input and output

;	1410	!	command buffer descriptors.

;	1411	!

;	1412	! FORMAL PARAMETERS:

;	1413	!

;	1414	!	NONE

;	1415	!

;	1416	! IMPLICIT INPUTS:

;	1417	!

;	1418	!	R9	- Contains the MCB address.

;	1419	!

;	1420	! IMPLICIT OUTPUTS:

;	1421	!

;	1422	!	same as the implicit inputs

;	1423	!

;	1424	! ROUTINE VALUE:

;	1425	! COMPLETION CODES:

;	1426	!

;	1427	!	REPLY_CODE (i.e., R9) returns the standard

;	1428	!	NICE mapped status codes defined in NICDAT.B32.

;	1429	!

;	1430	!	The routine itself returns no value.

;	1431	!

;	1432	! SIDE EFFECTS:

;	1433	!

;	1434	!	NONE

;	1435	!

;	1436	!--

;	1437	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 27

; Digital Equipment Corporation

;

;	1438	BEGIN

;	1439	LOCAL	POINTER, BUFFER_SIZE ;

;	1440	

;	1441	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	1442	

;	1443	

;	1444	MCB_PTR [MCB$L_REPLYCODE] = NIC$_SUCCESS ;

;	1445	MCB_PTR [MCB$W_ACP_STAT]  = NIC$_SUCCESS ;

;	1446	MCB_PTR [MCB$W_DB_STAT]   = NIC$_SUCCESS ;

;	1447	MCB_PTR [MCB$W_MSG_STAT]  = NIC$_SUCCESS ;

;	1448	

;	1449	MCB_PTR [MCB$B_REQDISCON] = FALSE ;

;	1450	MCB_PTR [MCB$W_REPLIES]	  = 0 ;

;	1451	MCB_PTR [MCB$W_RECEIVES]  = 0 ;

;	1452	

;	1453	POINTER = COMMON_BF_SPACE ;		! SETUP PTR TO COMMON

;	1454						! BUFFER AREA

;	1455	INCR I FROM 0 TO  (NUM_DDSC - 1)	! INITIALIZE ALL

;	1456	DO					! DESCRIPTORS

;	1457	  BEGIN

;	1458	  BIND  DBLK   = DD_VEC [.I,Z4] : DDSC,

;	1459		LENGTH = INIT_DD_VEC [.I] : WORD ;

;	1460	

;	1461	  DBLK [BUF_PTR] = .POINTER ;

;	1462	  DBLK [STR_PTR] = .POINTER ;

;	1463	  DBLK [BUF_LNG] = .LENGTH ;

;	1464	  DBLK [STR_LNG] = 0 ;

;	1465	  

;	1466	  POINTER = .POINTER + .LENGTH ;

;	1467	

;	1468	  END ;

;	1469	

;	1470	MESSAGE (CLEAR_ALL,0) ;

;	1471	

;	1472	END ;











					 000C 0019D RESET_ALL:

							    .WORD   Save R2,R3						      ; 1403

		         69	       01  D0 0019F 	    MOVL    #1, (MCB_PTR)					      ; 1444

		    08   A9	       01  B0 001A2 	    MOVW    #1, 8(MCB_PTR)					      ; 1445

		    19   A9	       01  B0 001A6 	    MOVW    #1, 25(MCB_PTR)					      ; 1446

		    1C   A9	       01  B0 001AA 	    MOVW    #1, 28(MCB_PTR)					      ; 1447

				  40   A9  94 001AE 	    CLRB    64(MCB_PTR)						      ; 1449

				  42   A9  D4 001B1 	    CLRL    66(MCB_PTR)						      ; 1450

		         53	0000G  CF  9E 001B4 	    MOVAB   COMMON_BF_SPACE, POINTER				      ; 1453

				       51  D4 001B9 	    CLRL    I							      ; 1455

	   50	         51	       02  78 001BB 1$:     ASHL    #2, I, R0						      ; 1458

		         50	0000GCF40  DE 001BF 	    MOVAL   DD_VEC[R0], R0					      ;

		         52	0000GCF41  3E 001C5 	    MOVAW   INIT_DD_VEC[I], R2					      ; 1459

		    0C   A0	       53  D0 001CB 	    MOVL    POINTER, 12(R0)					      ; 1461

		    04   A0	       53  D0 001CF 	    MOVL    POINTER, 4(R0)					      ; 1462



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 27-1

; Digital Equipment Corporation

;

		    08   A0	       62  3C 001D3 	    MOVZWL  (R2), 8(R0)						      ; 1463

				       60  D4 001D7 	    CLRL    (R0)						      ; 1464

		         50	       62  3C 001D9 	    MOVZWL  (R2), R0						      ; 1466

		         53	       50  C0 001DC 	    ADDL2   R0, POINTER						      ;

	   D8	         51	       11  F3 001DF 	    AOBLEQ  #17, I, 1$						      ; 1455

		         7E	       0A  7D 001E3 	    MOVQ    #10, -(SP)						      ; 1470

		  0000G  CF	       02  FB 001E6 	    CALLS   #2, MESSAGE						      ;

					   04 001EB 	    RET     							      ; 1403



; Routine Size:  79 bytes





;	1473	

;	1474	

;	1475	ROUTINE  LOG_ERRORS  :  NOVALUE LNKMSG =

;	1476	BEGIN

;	1477	END ;











					 0000 001EC LOG_ERRORS:

							    .WORD   Save nothing					      ; 1475

					   04 001EE 	    RET     							      ;



; Routine Size:  3 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 28

; Digital Equipment Corporation

;

;	1478	ROUTINE  SET_PARAM   : NOVALUE LNKMSG =

;	1479	

;	1480	!++

;	1481	! FUNCTIONAL DESCRIPTION:

;	1482	!

;	1483	!	Processes the NICE 'set parameter' command messages

;	1484	!	according to the option code stored in OPTION.

;	1485	!

;	1486	! FORMAL PARAMETERS:

;	1487	!

;	1488	!	NONE

;	1489	!

;	1490	! IMPLICIT INPUTS:

;	1491	!

;	1492	!	R9	- Contains the address of the MCB

;	1493	!	R10	- Output message pointer used by the routines in

;	1494	!		  module NICMSG.

;	1495	!	R11	- Input message pointer used by the routines in

;	1496	!		  module NICMSG.

;	1497	!

;	1498	!	Both an input and output message are assumed to be open

;	1499	!	and ready for processing by the routines in NICMSG.B32.

;	1500	!

;	1501	!	The FUNCTION and OPTION fields of the input message are assumed

;	1502	!	to have been already parsed.

;	1503	!

;	1504	!	OPTION is assumed to contain the appropriate option code.

;	1505	!

;	1506	!	It is assumed that the MCB contains pointer to an error handler.

;	1507	!

;	1508	! IMPLICIT OUTPUTS:

;	1509	!

;	1510	!	R10 and R11 are updated.

;	1511	!

;	1512	! ROUTINE VALUE:

;	1513	! COMPLETION CODES:

;	1514	!

;	1515	!	REPLY_CODE (i.e., R9) returns the standard

;	1516	!	NICE mapped status codes defined in NICDAT.B32.

;	1517	!

;	1518	!	The routine itself returns no value.

;	1519	!

;	1520	! SIDE EFFECTS:

;	1521	!

;	1522	!	NONE

;	1523	!

;	1524	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 29

; Digital Equipment Corporation

;

;	1525	BEGIN

;	1526	

;	1527	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	1528	

;	1529	MACRO	REPLY_CODE = MCB_PTR [MCB$L_REPLYCODE] % ;

;	1530	

;	1531	LOCAL	STATE : BYTE ;

;	1532	LABEL	ALPHA ;

;	1533	

;	1534	MCB_PTR [MCB$B_ERROR_ON] = TRUE ;   ! Enable the error handler

;	1535	

;	1536	ALPHA :

;	1537	 BEGIN

;	1538	

;	1539	 SELECTONE .OPTION OF 	! Dispatch according to option

;	1540	  SET

;	1541	

;	1542	   [0, 	  ! Set default host node

;	1543	    1, 	  ! Set host node for spec. line

;	1544	    2, 	  ! Set receive access password

;	1545		  !  For specified remote node

;	1546	    2, 	  ! Set receive access password

;	1547		  !  for specified remote node

;	1548	    3, 	  ! Set transmit access password

;	1549		  !  for specified remote node

;	1550	    4, 	  ! Set local node loopback 

;	1551	    6, 	  ! Set node operator logging state

;	1552	    7, 	  ! Set node maintenance logging state

;	1553	    9, 	  ! Set line operator logging state

;	1554	    10] : ! Set line maintenance logging state

;	1555	

;	1556		REPLY_CODE = NIC$_ILL_OPT ;

;	1557	

;	1558	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 30

; Digital Equipment Corporation

;

;	1559			!***********************************************

;	1560			!

;	1561	   [5] : 	! 	SET NODE OPERATIONAL STATE

;	1562			!

;	1563			!**********************************************

;	1564	     BEGIN

;	1565	     EXTB  (STATE) ;		! Get state code

;	1566	     MESSAGE (CHECK_I,0) ;	! This should be the end of msg

;	1567	

;	1568	     !+

;	1569	     ! If we are turning the state of the node 'on', then

;	1570	     ! pass the acp a snapshot of the data base.

;	1571	     !-

;	1572	

;	1573	     SELECT  .STATE  OF

;	1574	     SET

;	1575	     [ON] :

;	1576	

;	1577		  !+

;	1578		  ! Get a snapshot of the configuration data base to be

;	1579		  ! passed to Netacp.

;	1580		  !-

;	1581	

;	1582		IF NOT  GET_CONFIG (LARGE_DDSC)

;	1583		THEN

;	1584		    REPLY_CODE = NIC$_DATBASERR

;	1585		ELSE

;	1586		    BEGIN

;	1587		    BIND  NCB = .LARGE_DDSC [STR_PTR] : BLOCK [4,BYTE] ;

;	1588		    LOCAL NUM_RMT, NUM_OBJ ;

;	1589	

;	1590		    !+

;	1591		    ! Open the configuration data block just built so

;	1592		    ! that EXT_USTR may be used.  First determine the 

;	1593		    ! number of object and remote-node entries.  Then

;	1594		    ! pass to NETACP the local node data prefixed by the

;	1595		    ! object and remote-node length fields.

;	1596		    !-

;	1597	

;	1598		    MESSAGE (OPEN_I, LARGE_DDSC) ;

;	1599		    EXT_USTR (LOC$K_SIZE+4, AUX0_DDSC) ;

;	1600		    NUM_OBJ = .NCB [NCB$W_OBJLEN] / OBJ$K_SIZE ;

;	1601		    NUM_RMT = .NCB [NCB$W_RMTLEN] / RMT$K_SIZE ;

;	1602	

;	1603		    ACP (SET_LOCAL_STATE, STATE, AUX0_DDSC, 0) ;

;	1604		



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 31

; Digital Equipment Corporation

;

;	1605		    !+

;	1606		    ! Pass the object data entries one at a time

;	1607		    !-

;	1608	

;	1609		    INCR I FROM 1 TO .NUM_OBJ

;	1610		    DO

;	1611			BEGIN

;	1612			EXT_USTR (OBJ$K_SIZE, AUX0_DDSC) ;

;	1613			ACP (SET_OBJ_DATA, STATE, AUX0_DDSC, 0) ;

;	1614			END ;

;	1615	

;	1616		    !+

;	1617		    ! Pass the remote node data entries one at a time

;	1618		    !-

;	1619	

;	1620		    INCR I FROM 1 TO .NUM_RMT

;	1621		    DO

;	1622			BEGIN

;	1623			EXT_USTR (RMT$K_SIZE, AUX0_DDSC) ;

;	1624			ACP (SET_RMT_DATA, STATE, AUX0_DDSC, 0) ;

;	1625			END ;

;	1626	

;	1627		    MESSAGE (CLOSE_I, 0) ;

;	1628	

;	1629		    END ;

;	1630	

;	1631	     [OFF, SHUT] :

;	1632	

;	1633		    ACP  (SET_LOCAL_STATE, STATE, 0, 0) ;

;	1634	

;	1635	     [OTHERWISE] :

;	1636	

;	1637		    REPLY_CODE = NIC$_ILLPARVAL ;

;	1638	

;	1639	     TES ;

;	1640	     END ;

;	1641	

;	1642	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 32

; Digital Equipment Corporation

;

;	1643			!***********************************************

;	1644			!

;	1645	   [8] : 	! 	SET LINE OPERATIONAL STATE

;	1646			!

;	1647			!***********************************************

;	1648	     BEGIN

;	1649	     LOCAL	STATE_LNG ;	! This is needed since STATE is a byte

;	1650					! and the addr. of a longword is needed

;	1651					! as the parameter in the call to ACP

;	1652					! parameter 

;	1653	

;	1654	     BIND   AX0_BF = .AUX0_DDSC [BUF_PTR]

;	1655				 : BLOCK [LIN$C_SIZE,BYTE],

;	1656	

;	1657		    AX1_BF = .AUX1_DDSC [BUF_PTR]

;	1658				 : BLOCK [LID$C_SIZE,BYTE] ;

;	1659	

;	1660	     EXTLN  (Z_ERROR,		! Get name of line

;	1661		     LN_DDSC, 0) ;	! - all known is not allowed

;	1662	     EXTB  (STATE) ;		! Get state code

;	1663	

;	1664	     STATE_LNG = .STATE ;

;	1665	     SELECT  .STATE OF

;	1666	      SET

;	1667	

;	1668	

;	1669	      [LOOPBACK, CTL_LPBK] :

;	1670	

;	1671		! Extract node name alias - used for special case (loopback)

;	1672		! node initialization.  Since the node name is a dummy name no

;	1673		! node name verification is possible.

;	1674	

;	1675		EXTND  (NO_VERIFY, ND_DDSC, 0) ;

;	1676	

;	1677	

;	1678	      [ON, OFF, LOOPBACK, CTL_LPBK] : ! test for end of msg

;	1679	

;	1680		MESSAGE (CHECK_I,0) ;

;	1681	

;	1682	

;	1683	      [LOOPBACK, CTL_LPBK, ON] :

;	1684	

;	1685		BEGIN

;	1686		CVTLN  (TO_NICE_FMT,	    ! Convert name into format

;	1687			.LN_DDSC [STR_PTR], ! needed by data base file

;	1688			CDB_LN_DDSC 

;	1689		      ) ;

;	1690	        _GET_REC

;     P 1691		    (FILE = LID$C_FILE,	    ! Search line id file

;     P 1692		     BUFF = AUX1_DDSC ,

;     P 1693		     STRT =  AX1_BF	    ! Addr. wiithin buffer at

;     P 1694			      [LID$B_CODE], ! which to start comparison

;     P 1695		     KEY  = CDB_LN_DDSC	    ! string to match on

;     P 1696			      [STR_DSC]

;     P 1697		    ) ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 32-1

; Digital Equipment Corporation

;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 33

; Digital Equipment Corporation

;

;	1698		!+

;	1699		! enter the line name into the record buffer

;	1700		!-

;	1701	

;	1702		_MOV_FIELD (BUFF = LN_DDSC,		! source buffer ddsc

;     P 1703			    STRT = .LN_DDSC [STR_PTR],	! move whole string

;     P 1704			    SIZE = .LN_DDSC [STR_LNG],

;     P 1705			    DEST =  AUX0_DDSC 		! dest. ddsc

;     P 1706			   ) ;

;	1707		!+

;	1708		! append the record, mapped in to the format expected by

;	1709		! the NETACP, to the line record buffer.

;	1710		!-

;	1711	

;	1712		IF NOT (REPLY_CODE = APP_MP_REC (LID$C_FILE,

;	1713						 .AUX1_DDSC [STR_PTR],

;	1714						  AUX0_DDSC

;	1715						)

;	1716			)

;	1717		THEN

;	1718			LEAVE ALPHA ;

;	1719		END ;

;	1720	

;	1721	

;	1722	      [LOOPBACK, CTL_LPBK] :	! overlay line's node name for 

;	1723					! special case node init.

;	1724		CH$MOVE (.ND_DDSC [STR_LNG],

;	1725			  CH$PTR (.ND_DDSC [STR_PTR]),

;	1726			  CH$PTR (AX0_BF [LIN$B_NODE])

;	1727			) ;

;	1728	

;	1729	

;	1730		

;	1731	      [CTL_LPBK] :  ! turn on the controller loopback bit

;	1732	

;	1733		AX0_BF [LIN$V_LOOP] = TRUE ;

;	1734	

;	1735	

;	1736	      [LOOPBACK, CTL_LPBK, ON] :

;	1737	

;	1738		ACP  (SET_LINE_STATE, STATE_LNG, AUX0_DDSC, 0) ;

;	1739	

;	1740	

;	1741	      [OFF] :

;	1742	

;	1743		ACP  (SET_LINE_STATE, STATE_LNG, LN_DDSC, 0) ;

;	1744	

;	1745	

;	1746	      [OTHERWISE] :  REPLY_CODE = NIC$_ILLPARVAL ;

;	1747	

;	1748	      TES ;

;	1749	    END ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 34

; Digital Equipment Corporation

;

;	1750			!***********************************************

;	1751			!

;	1752	   [OTHERWISE] :!  	UNSUPPORTED OPTION

;	1753			!

;	1754			!***********************************************

;	1755	

;	1756			  REPLY_CODE = NIC$_ILL_OPT ;

;	1757	

;	1758	  TES ;

;	1759	

;	1760	 END ;	! END ALPHA

;	1761	END ;











					 01FC 001EF SET_PARAM:

							    .WORD   Save R2,R3,R4,R5,R6,R7,R8				      ; 1478

		         5E	       08  C2 001F1 	    SUBL2   #8, SP						      ;

		    41   A9	       01  90 001F4 	    MOVB    #1, 65(MCB_PTR)					      ; 1534

		         7E	0000G  CF  9A 001F8 	    MOVZBL  OPTION, -(SP)					      ; 1539

		         04	       6E  91 001FD 	    CMPB    (SP), #4						      ;

				       12  1B 00200 	    BLEQU   2$							      ;

		         06	       6E  91 00202 	    CMPB    (SP), #6						      ;

				       05  1F 00205 	    BLSSU   1$							      ;

		         07	       6E  91 00207 	    CMPB    (SP), #7						      ;

				       08  1B 0020A 	    BLEQU   2$							      ;

		         09	       6E  91 0020C 1$:     CMPB    (SP), #9						      ;

				       08  1F 0020F 	    BLSSU   3$							      ;

		         0A	       6E  91 00211 	    CMPB    (SP), #10						      ;

				       03  1A 00214 2$:     BGTRU   3$							      ;

				     0200  31 00216 	    BRW     29$							      ;

		         05	       6E  91 00219 3$:     CMPB    (SP), #5						      ;

				       03  13 0021C 	    BEQL    4$							      ;

				     00DA  31 0021E 	    BRW     14$							      ;

				  08   AE  9F 00221 4$:     PUSHAB  STATE						      ; 1565

		  0000G  CF	       01  FB 00224 	    CALLS   #1, EXTB						      ;

		         7E	       03  7D 00229 	    MOVQ    #3, -(SP)						      ; 1566

		  0000G  CF	       02  FB 0022C 	    CALLS   #2, MESSAGE						      ;

		         54	  08   AE  9A 00231 	    MOVZBL  STATE, R4						      ; 1573

		         53	       01  D0 00235 	    MOVL    #1, R3						      ;

				       54  D5 00238 	    TSTL    R4							      ;

				       11  12 0023A 	    BNEQ    5$							      ;

				       53  D4 0023C 	    CLRL    R3							      ;

				0000G  CF  9F 0023E 	    PUSHAB  LARGE_DDSC						      ; 1582

		  0000V  CF	       01  FB 00242 	    CALLS   #1, GET_CONFIG					      ;

		         06	       50  E8 00247 	    BLBS    R0, 6$						      ;

		         69	       1C  CE 0024A 	    MNEGL   #28, (MCB_PTR)					      ; 1584

				     008C  31 0024D 5$:     BRW     11$							      ; 1582

		         52	0000G  CF  D0 00250 6$:     MOVL    LARGE_DDSC+4, R2					      ; 1586

				0000G  CF  9F 00255 	    PUSHAB  LARGE_DDSC						      ; 1598

				       01  DD 00259 	    PUSHL   #1							      ;

		  0000G  CF	       02  FB 0025B 	    CALLS   #2, MESSAGE						      ;

				0000G  CF  9F 00260 	    PUSHAB  AUX0_DDSC						      ; 1599



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 34-1

; Digital Equipment Corporation

;

				       0F  DD 00264 	    PUSHL   #15							      ;

		  0000G  CF	       02  FB 00266 	    CALLS   #2, EXT_USTR					      ;

		         56	       62  3C 0026B 	    MOVZWL  (R2), NUM_OBJ					      ; 1600

		         56	       20  C6 0026E 	    DIVL2   #32, NUM_OBJ					      ;

		         55	  02   A2  3C 00271 	    MOVZWL  2(R2), NUM_RMT					      ; 1601

		         55 00000072   8F  C6 00275 	    DIVL2   #114, NUM_RMT					      ;

				       7E  D4 0027C 	    CLRL    -(SP)						      ; 1603

				0000G  CF  9F 0027E 	    PUSHAB  AUX0_DDSC						      ;

				  10   AE  9F 00282 	    PUSHAB  STATE						      ;

				       0A  DD 00285 	    PUSHL   #10							      ;

		  0000G  CF	       04  FB 00287 	    CALLS   #4, ACP						      ;

				       52  D4 0028C 	    CLRL    I							      ; 1609

				       1B  11 0028E 	    BRB     8$							      ;

				0000G  CF  9F 00290 7$:     PUSHAB  AUX0_DDSC						      ; 1612

				       20  DD 00294 	    PUSHL   #32							      ;

		  0000G  CF	       02  FB 00296 	    CALLS   #2, EXT_USTR					      ;

				       7E  D4 0029B 	    CLRL    -(SP)						      ; 1613

				0000G  CF  9F 0029D 	    PUSHAB  AUX0_DDSC						      ;

				  10   AE  9F 002A1 	    PUSHAB  STATE						      ;

				       05  DD 002A4 	    PUSHL   #5							      ;

		  0000G  CF	       04  FB 002A6 	    CALLS   #4, ACP						      ;

	   E1	         52	       56  F3 002AB 8$:     AOBLEQ  NUM_OBJ, I, 7$					      ; 1609

				       52  D4 002AF 	    CLRL    I							      ; 1620

				       1D  11 002B1 	    BRB     10$							      ;

				0000G  CF  9F 002B3 9$:     PUSHAB  AUX0_DDSC						      ; 1623

		         7E	  72   8F  9A 002B7 	    MOVZBL  #114, -(SP)						      ;

		  0000G  CF	       02  FB 002BB 	    CALLS   #2, EXT_USTR					      ;

				       7E  D4 002C0 	    CLRL    -(SP)						      ; 1624

				0000G  CF  9F 002C2 	    PUSHAB  AUX0_DDSC						      ;

				  10   AE  9F 002C6 	    PUSHAB  STATE						      ;

				       06  DD 002C9 	    PUSHL   #6							      ;

		  0000G  CF	       04  FB 002CB 	    CALLS   #4, ACP						      ;

	   DF	         52	       55  F3 002D0 10$:    AOBLEQ  NUM_RMT, I, 9$					      ; 1620

		         7E	       02  7D 002D4 	    MOVQ    #2, -(SP)						      ; 1627

		  0000G  CF	       02  FB 002D7 	    CALLS   #2, MESSAGE						      ;

		         01	       54  91 002DC 11$:    CMPB    R4, #1						      ; 1573

				       13  1F 002DF 	    BLSSU   12$							      ;

		         02	       54  91 002E1 	    CMPB    R4, #2						      ;

				       0E  1A 002E4 	    BGTRU   12$							      ;

				       53  D4 002E6 	    CLRL    R3							      ;

				       7E  7C 002E8 	    CLRQ    -(SP)						      ; 1633

				  10   AE  9F 002EA 	    PUSHAB  STATE						      ;

				       0A  DD 002ED 	    PUSHL   #10							      ;

		  0000G  CF	       04  FB 002EF 	    CALLS   #4, ACP						      ;

		         03	       53  E9 002F4 12$:    BLBC    R3, 13$						      ; 1573

				     011B  31 002F7 	    BRW     28$							      ;

					   04 002FA 13$:    RET     							      ;

		         08	       6E  91 002FB 14$:    CMPB    (SP), #8						      ; 1539

				       03  13 002FE 	    BEQL    15$							      ;

				     0116  31 00300 	    BRW     29$							      ;

		         57	0000G  CF  D0 00303 15$:    MOVL    AUX0_DDSC+12, R7					      ; 1648

		         52	0000G  CF  D0 00308 	    MOVL    AUX1_DDSC+12, R2					      ;

				       7E  D4 0030D 	    CLRL    -(SP)						      ; 1660

				0000G  CF  9F 0030F 	    PUSHAB  LN_DDSC						      ;

				       02  DD 00313 	    PUSHL   #2							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 34-2

; Digital Equipment Corporation

;

		  0000G  CF	       03  FB 00315 	    CALLS   #3, EXTLN						      ;

				  08   AE  9F 0031A 	    PUSHAB  STATE						      ; 1662

		  0000G  CF	       01  FB 0031D 	    CALLS   #1, EXTB						      ;

		    04   AE	  08   AE  9A 00322 	    MOVZBL  STATE, STATE_LNG					      ; 1664

		         56	  08   AE  9A 00327 	    MOVZBL  STATE, R6						      ; 1665

		         58	       01  D0 0032B 	    MOVL    #1, R8						      ;

		         03	       56  91 0032E 	    CMPB    R6, #3						      ;

				       05  13 00331 	    BEQL    16$							      ;

		         05	       56  91 00333 	    CMPB    R6, #5						      ;

				       0F  12 00336 	    BNEQ    17$							      ;

				       58  D4 00338 16$:    CLRL    R8							      ;

				       7E  D4 0033A 	    CLRL    -(SP)						      ; 1675

				0000G  CF  9F 0033C 	    PUSHAB  ND_DDSC						      ;

				       03  DD 00340 	    PUSHL   #3							      ;

		  0000G  CF	       03  FB 00342 	    CALLS   #3, EXTND						      ;

		         01	       56  91 00347 17$:    CMPB    R6, #1						      ; 1665

				       0A  1B 0034A 	    BLEQU   18$							      ;

		         03	       56  91 0034C 	    CMPB    R6, #3						      ;

				       05  13 0034F 	    BEQL    18$							      ;

		         05	       56  91 00351 	    CMPB    R6, #5						      ;

				       0A  12 00354 	    BNEQ    19$							      ;

				       58  D4 00356 18$:    CLRL    R8							      ;

		         7E	       03  7D 00358 	    MOVQ    #3, -(SP)						      ; 1680

		  0000G  CF	       02  FB 0035B 	    CALLS   #2, MESSAGE						      ;

				       56  D5 00360 19$:    TSTL    R6							      ; 1665

				       0A  13 00362 	    BEQL    20$							      ;

		         03	       56  91 00364 	    CMPB    R6, #3						      ;

				       05  13 00367 	    BEQL    20$							      ;

		         05	       56  91 00369 	    CMPB    R6, #5						      ;

				       4D  12 0036C 	    BNEQ    21$							      ;

				       58  D4 0036E 20$:    CLRL    R8							      ;

				0000G  CF  9F 00370 	    PUSHAB  CDB_LN_DDSC						      ; 1686

				0000G  CF  DD 00374 	    PUSHL   LN_DDSC+4						      ;

				       02  DD 00378 	    PUSHL   #2							      ;

		  0000G  CF	       03  FB 0037A 	    CALLS   #3, CVTLN						      ;

				0000G  CF  9F 0037F 	    PUSHAB  CDB_LN_DDSC						      ; 1697

				  18   A2  9F 00383 	    PUSHAB  24(R2)						      ;

				0000G  CF  9F 00386 	    PUSHAB  AUX1_DDSC						      ;

				       02  DD 0038A 	    PUSHL   #2							      ;

		  0000G  CF	       04  FB 0038C 	    CALLS   #4, GET_REC						      ;

				0000G  CF  9F 00391 	    PUSHAB  AUX0_DDSC						      ; 1706

				0000G  CF  DD 00395 	    PUSHL   LN_DDSC						      ;

				0000G  CF  DD 00399 	    PUSHL   LN_DDSC+4						      ;

				0000G  CF  9F 0039D 	    PUSHAB  LN_DDSC						      ;

		  0000G  CF	       04  FB 003A1 	    CALLS   #4, MOV_FIELD					      ;

				0000G  CF  9F 003A6 	    PUSHAB  AUX0_DDSC						      ; 1712

				0000G  CF  DD 003AA 	    PUSHL   AUX1_DDSC+4						      ;

				       02  DD 003AE 	    PUSHL   #2							      ;

		  0000V  CF	       03  FB 003B0 	    CALLS   #3, APP_MP_REC					      ;

		         69	       50  D0 003B5 	    MOVL    R0, (MCB_PTR)					      ;

		         61	       50  E9 003B8 	    BLBC    R0, 30$						      ;

		         03	       56  91 003BB 21$:    CMPB    R6, #3						      ; 1665

				       05  13 003BE 	    BEQL    22$							      ;

		         05	       56  91 003C0 	    CMPB    R6, #5						      ;

				       0B  12 003C3 	    BNEQ    23$							      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 34-3

; Digital Equipment Corporation

;

				       58  D4 003C5 22$:    CLRL    R8							      ;

      09   A7	  0000G  DF	0000G  CF  28 003C7 	    MOVC3   ND_DDSC, @ND_DDSC+4, 9(R7)				      ; 1724

		         05	       56  91 003D0 23$:    CMPB    R6, #5						      ; 1665

				       06  12 003D3 	    BNEQ    24$							      ;

				       58  D4 003D5 	    CLRL    R8							      ;

		    07   A7	       02  88 003D7 	    BISB2   #2, 7(R7)						      ; 1733

				       56  D5 003DB 24$:    TSTL    R6							      ; 1665

				       0A  13 003DD 	    BEQL    25$							      ;

		         03	       56  91 003DF 	    CMPB    R6, #3						      ;

				       05  13 003E2 	    BEQL    25$							      ;

		         05	       56  91 003E4 	    CMPB    R6, #5						      ;

				       12  12 003E7 	    BNEQ    26$							      ;

				       58  D4 003E9 25$:    CLRL    R8							      ;

				       7E  D4 003EB 	    CLRL    -(SP)						      ; 1738

				0000G  CF  9F 003ED 	    PUSHAB  AUX0_DDSC						      ;

				  0C   AE  9F 003F1 	    PUSHAB  STATE_LNG						      ;

				       01  DD 003F4 	    PUSHL   #1							      ;

		  0000G  CF	       04  FB 003F6 	    CALLS   #4, ACP						      ;

		         01	       56  91 003FB 26$:    CMPB    R6, #1						      ; 1665

				       12  12 003FE 	    BNEQ    27$							      ;

				       58  D4 00400 	    CLRL    R8							      ;

				       7E  D4 00402 	    CLRL    -(SP)						      ; 1743

				0000G  CF  9F 00404 	    PUSHAB  LN_DDSC						      ;

				  0C   AE  9F 00408 	    PUSHAB  STATE_LNG						      ;

				       01  DD 0040B 	    PUSHL   #1							      ;

		  0000G  CF	       04  FB 0040D 	    CALLS   #4, ACP						      ;

		         07	       58  E9 00412 27$:    BLBC    R8, 30$						      ; 1665

		         69	       20  CE 00415 28$:    MNEGL   #32, (MCB_PTR)					      ; 1746

					   04 00418 	    RET     							      ; 1539

		         69	       02  CE 00419 29$:    MNEGL   #2, (MCB_PTR)					      ; 1756

					   04 0041C 30$:    RET     							      ; 1478



; Routine Size:  558 bytes





;	1762	

;	1763	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 35

; Digital Equipment Corporation

;

;	1764	ROUTINE APP_MP_REC (FILE_INDEX, SRC_AD, DEST_DDSC_AD) : =

;	1765	

;	1766	!++

;	1767	! FUNCTIONAL DESCRIPTION:

;	1768	!

;	1769	!	Reads the Configuration Data Base record pointed to by .SRC_AD,

;	1770	!	(record format defined in NCPDEF.B32), maps it into a format

;	1771	!	expected by NETACP (defined in NCBDEF.B32), and appends it to

;	1772	!	the string being built in the .DEST_DDSC_AD buffer.

;	1773	!

;	1774	! FORMAL PARAMETERS:

;	1775	!

;	1776	!	FILE_INDEX    -	Specifies the Configuration Data Base file

;	1777	!			being read as follows :

;	1778	!			code		src. format	dest. format

;	1779	!			LND$C_FILE	LND		LOC

;	1780	!			RND$C_FILE	RND		RMT

;	1781	!			ODB$C_FILE	ODB		OBJ

;	1782	!

;	1783	!	SRC_AD        -	The address of the first byte of the source 

;	1784	!			record.

;	1785	!	DEST_DDSC_AD  -	The address of the double descriptor of the 

;	1786	!			destination buffer.  The string descriptor

;	1787	!			portion of this DDSC is assumed valid.  The new

;	1788	!			record is appended to the end of this string and

;	1789	!			the string descriptor is updated.

;	1790	!

;	1791	! IMPLICIT INPUTS:

;	1792	!

;	1793	!	The literals and fields defined in NCPDEF.B32 and NCBDEF.B32.

;	1794	!

;	1795	! IMPLICIT OUTPUTS:

;	1796	!

;	1797	!	NONE

;	1798	!

;	1799	! ROUTINE VALUE:

;	1800	! COMPLETION CODES:

;	1801	!

;	1802	!	NIC$_PGM_ERR	- if the new record cannot be appended to its

;	1803	!			  string without overflowing its buffer.

;	1804	!	NIC$_SUCCESS	- otherwise.

;	1805	!

;	1806	! SIDE EFFECTS:

;	1807	!

;	1808	!	NONE

;	1809	!

;	1810	!--

;	1811	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 36

; Digital Equipment Corporation

;

;	1812	BEGIN

;	1813	BIND	    SRC = .SRC_AD  : BLOCK [MAX_CDB_SIZE,BYTE] ;

;	1814	BIND	    DEST_DDSC = .DEST_DDSC_AD : DDSC ;

;	1815	REGISTER    P_D ;

;	1816	

;	1817	

;	1818	! Setup a pointer to the first unused byte in the buffer

;	1819	

;	1820	P_D = CH$PTR (.DEST_DDSC [STR_LNG] + .DEST_DDSC [STR_PTR]) ; 

;	1821	

;	1822	SELECT .FILE_INDEX OF

;	1823	 SET

;	1824	

;	1825	  [LND$C_FILE] :

;	1826	

;	1827	     ! check for adequate space in buffer before moving the record

;	1828	

;	1829	    IF	CH$PTR (.DEST_DDSC [BUF_LNG] + .DEST_DDSC [BUF_PTR])

;	1830		- .P_D    LSSU   LOC$C_SIZE

;	1831	    THEN  

;	1832		RETURN (NIC$_PGM_ERR)

;	1833	    ELSE

;	1834		P_D = CH$COPY

;	1835			(LND$S_NAME + 1,	    ! copy sources

;	1836			    SRC [LND$B_NAME],

;	1837			 2, SRC [LND$W_NUMBER],

;	1838			 1, SRC [LND$B_MAXLINKS],

;	1839			 1, SRC [LND$B_MAXNODES],

;	1840			 0,			    ! fill character -

;	1841						    ! should'nt be needed

;	1842			 LOC$C_SIZE, .P_D	    ! copy destination

;	1843			) ;

;	1844	

;	1845	

;	1846	  [ODB$C_FILE] :

;	1847	

;	1848	    ! check for adequate buffer space before moving record

;	1849	

;	1850	    IF	CH$PTR (.DEST_DDSC [BUF_LNG] + .DEST_DDSC [BUF_PTR])

;	1851		- .P_D    LSSU   OBJ$C_SIZE

;	1852	    THEN  

;	1853		RETURN (NIC$_PGM_ERR)

;	1854	    ELSE

;	1855		P_D = CH$COPY

;	1856			(ODB$S_NAME + 1,	    ! copy sources

;	1857			     SRC [ODB$B_NAME],

;	1858			 1,  SRC [ODB$B_NUMBER],

;	1859			 ODB$S_FILE + 1,

;	1860			     SRC [ODB$B_FILE],

;	1861			 4,  SRC [ODB$L_PRIVLOW],

;	1862			 4,  SRC [ODB$L_PRIVHIGH],

;	1863			 0,			    ! fill character -

;	1864						    ! should'nt be needed

;	1865			 OBJ$C_SIZE, .P_D	    ! copy destination

;	1866			) ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 36-1

; Digital Equipment Corporation

;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 37

; Digital Equipment Corporation

;

;	1867	  [RND$C_FILE] :

;	1868	

;	1869	    BEGIN

;	1870	    LOCAL	DEST_BOUND ;

;	1871	

;	1872	    DEST_BOUND

;	1873		 = CH$PTR (.DEST_DDSC [BUF_LNG] + .DEST_DDSC [BUF_PTR]) ;

;	1874	

;	1875	    ! Check for adequate buffer space before moving record

;	1876	

;	1877	    IF .DEST_BOUND - .P_D    LSSU   RMT$C_SIZE

;	1878	    THEN  

;	1879		RETURN (NIC$_PGM_ERR)

;	1880	    ELSE

;	1881		BEGIN

;	1882		LOCAL  TMP ;

;	1883	

;	1884		! determine the size of the following fields to avoid

;	1885		! padding

;	1886	

;	1887		TMP = RND$S_NAME + 1 + 2 + RND$S_XMTPW + RND$S_RCVPW + 1 ;

;	1888	

;	1889		P_D = CH$COPY				! Copy sources.

;	1890			(RND$S_NAME + 1,		! Counted nodename fits

;	1891			    SRC [RND$B_NAME],		! in fixed field.

;	1892			 2, SRC [RND$W_NUMBER],		! Node number in 

;	1893							! expanded EX-2 format.

;	1894			 RND$S_XMTPW,			! Transmit password.

;	1895			    SRC [RND$T_XMTPW],

;	1896			 RND$S_RCVPW,			! Recieve password

;	1897			    SRC [RND$T_RCVPW],

;	1898			 1, SRC [RND$B_CONNECT],	! Connect timeout

;	1899			 0,				! fill character -

;	1900							! should'nt be needed

;	1901			 .TMP, .P_D			! copy destination

;	1902			) ;

;	1903	

;	1904		! Determine the total size of the three counted strings,

;	1905		! including their count fields.

;	1906	

;	1907		TMP = .SRC [RND$B_NONPRVID] + .SRC [RND$B_NONPRVPSW]

;	1908			+ .SRC [RND$B_NONPRVACC] + 3 ;

;	1909	

;	1910		! Enter the three counted strings contiguously and pad

;	1911		! with zero's

;	1912	

;	1913		P_D = CH$COPY  

;	1914			(1, TMP,

;	1915			 .SRC[RND$B_NONPRVID]+1, SRC[RND$B_NONPRVID],

;	1916			 .SRC[RND$B_NONPRVPSW]+1, SRC[RND$B_NONPRVPSW],

;	1917			 .SRC[RND$B_NONPRVACC]+1, SRC[RND$B_NONPRVACC],

;	1918			 0,

;	1919			 RMT$S_NONPRVACC + 1,  .P_D

;	1920			) ;

;	1921	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 37-1

; Digital Equipment Corporation

;

;	1922	

;	1923		! Determine the total size of the three counted strings,

;	1924		! including their count fields.

;	1925	

;	1926		TMP = .SRC [RND$B_PRVID] + .SRC [RND$B_PRVPSW]

;	1927			+ .SRC [RND$B_PRVACC] + 3 ;

;	1928	

;	1929		! Enter the three counted strings contiguously

;	1930		! and pad with zero's

;	1931	

;	1932		P_D = CH$COPY  

;	1933			(1, TMP,

;	1934			 .SRC[RND$B_PRVID]+1, SRC[RND$B_PRVID],

;	1935			 .SRC[RND$B_PRVPSW]+1, SRC[RND$B_PRVPSW],

;	1936			 .SRC[RND$B_PRVACC]+1, SRC[RND$B_PRVACC],

;	1937			 0,

;	1938			 RMT$S_PRVACC + 1,  .P_D

;	1939			) ;

;	1940	

;	1941		END ;

;	1942	    END ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 38

; Digital Equipment Corporation

;

;	1943	  [LID$C_FILE] :

;	1944	

;	1945	     ! check for adequate space in buffer before moving the record

;	1946	

;	1947	    IF	CH$PTR (.DEST_DDSC [BUF_LNG] + .DEST_DDSC [BUF_PTR])

;	1948		- .P_D    LSSU   LIN$C_SIZE

;	1949	    THEN  

;	1950		RETURN (NIC$_PGM_ERR)

;	1951	    ELSE

;	1952		BEGIN

;	1953		LOCAL  TMP ;

;	1954		TMP = .SRC [LID$B_CNTRL] + 'A' ;    ! cvt to ascii

;	1955		P_D = CH$COPY

;	1956			(1, TMP,		    ! copy sources

;	1957			 1, SRC [LID$B_LINE],

;	1958			 1, SRC [LID$B_ADDRESS],

;	1959			 2, SRC [LID$W_CHAR],

;	1960			 LID$S_NODE + 1,

;	1961			    SRC [LID$B_NODE],

;	1962			 2, SRC [LID$W_BUFSIZE],

;	1963			 1, SRC [LID$B_NUMBUF],

;	1964			 0,			    ! fill character

;	1965						    ! should'nt be needed

;	1966			 LIN$K_SIZE 

;	1967			  - .DEST_DDSC [STR_LNG], .P_D    ! copy destination

;	1968			) ;

;	1969		END ;

;	1970	

;	1971	  [OTHERWISE] :  RETURN (NIC$_PGM_ERR) ;

;	1972	

;	1973	 TES ;

;	1974	

;	1975	! adjust the destination double descriptor to account for

;	1976	! the fields just entered.

;	1977	

;	1978	DEST_DDSC [STR_LNG] = .P_D - .DEST_DDSC [STR_PTR] ;

;	1979	

;	1980	RETURN (NIC$_SUCCESS) ;

;	1981	

;	1982	END ;











					 0FFC 0041D APP_MP_REC:

							    .WORD   Save R2,R3,R4,R5,R6,R7,R8,R9,R10,R11		      ; 1764

		         5E	       18  C2 0041F 	    SUBL2   #24, SP						      ;

		         57	  08   AC  7D 00422 	    MOVQ    SRC_AD, R7						      ; 1812

	   56	         68	  04   A8  C1 00426 	    ADDL3   4(R8), (R8), P_D					      ; 1820

		    0C   AE	  04   AC  D0 0042B 	    MOVL    FILE_INDEX, 12(SP)					      ; 1822

		    08   AE	       01  D0 00430 	    MOVL    #1, 8(SP)						      ;

				  0C   AE  D5 00434 	    TSTL    12(SP)						      ;

				       28  12 00437 	    BNEQ    1$							      ;

				  08   AE  D4 00439 	    CLRL    8(SP)						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 38-1

; Digital Equipment Corporation

;

	   50	    08   A8	  0C   A8  C1 0043C 	    ADDL3   12(R8), 8(R8), R0					      ; 1829

		         50	       56  C2 00442 	    SUBL2   P_D, R0						      ; 1830

		         0B	       50  D1 00445 	    CMPL    R0, #11						      ;

				       66  1F 00448 	    BLSSU   4$							      ;

	   66	    01   A7	       07  28 0044A 	    MOVC3   #7, 1(R7), (P_D)					      ; 1835

	   63	    08   A7	       02  28 0044F 	    MOVC3   #2, 8(R7), (R3)					      ;

	   63	    0A   A7	       01  28 00454 	    MOVC3   #1, 10(R7), (R3)					      ;

	   63	    0B   A7	       01  28 00459 	    MOVC3   #1, 11(R7), (R3)					      ;

		         56	       53  D0 0045E 	    MOVL    R3, P_D						      ;

		         03	  0C   AE  D1 00461 1$:     CMPL    12(SP), #3						      ; 1822

				       2D  12 00465 	    BNEQ    2$							      ;

				  08   AE  D4 00467 	    CLRL    8(SP)						      ;

	   50	    08   A8	  0C   A8  C1 0046A 	    ADDL3   12(R8), 8(R8), R0					      ; 1850

		         50	       56  C2 00470 	    SUBL2   P_D, R0						      ; 1851

		         20	       50  D1 00473 	    CMPL    R0, #32						      ;

				       38  1F 00476 	    BLSSU   4$							      ;

	   66	    01   A7	       09  28 00478 	    MOVC3   #9, 1(R7), (P_D)					      ; 1856

	   63	    0A   A7	       01  28 0047D 	    MOVC3   #1, 10(R7), (R3)					      ;

	   63	    0B   A7	       0E  28 00482 	    MOVC3   #14, 11(R7), (R3)					      ;

	   63	    19   A7	       04  28 00487 	    MOVC3   #4, 25(R7), (R3)					      ;

	   63	    1D   A7	       04  28 0048C 	    MOVC3   #4, 29(R7), (R3)					      ;

		         56	       53  D0 00491 	    MOVL    R3, P_D						      ;

		         01	  0C   AE  D1 00494 2$:     CMPL    12(SP), #1						      ; 1822

				       03  13 00498 	    BEQL    3$							      ;

				     0145  31 0049A 	    BRW     9$							      ;

				  08   AE  D4 0049D 3$:     CLRL    8(SP)						      ;

	   50	    08   A8	  0C   A8  C1 004A0 	    ADDL3   12(R8), 8(R8), DEST_BOUND				      ; 1873

		         50	       56  C2 004A6 	    SUBL2   P_D, R0						      ; 1877

	      00000072   8F	       50  D1 004A9 	    CMPL    R0, #114						      ;

				       03  1E 004B0 4$:     BGEQU   5$							      ;

				     01BD  31 004B2 	    BRW     13$							      ;

		    14   AE	       1A  D0 004B5 5$:     MOVL    #26, TMP						      ; 1887

		         5A	  14   AE  D0 004B9 	    MOVL    TMP, R10						      ; 1901

		         59	       56  D0 004BD 	    MOVL    P_D, R9						      ;

	   00	    01   A7	       07  2C 004C0 	    MOVC5   #7, 1(R7), #0, R10, (R9)				      ; 1890

		         69	       5A     004C5									      ;

				       3B  18 004C7 	    BGEQ    6$							      ;

		         59	       07  C0 004C9 	    ADDL2   #7, R9						      ;

		         5A	       07  C2 004CC 	    SUBL2   #7, R10						      ;

	   00	    08   A7	       02  2C 004CF 	    MOVC5   #2, 8(R7), #0, R10, (R9)				      ;

		         69	       5A     004D4									      ;

				       2C  18 004D6 	    BGEQ    6$							      ;

		         59	       02  C0 004D8 	    ADDL2   #2, R9						      ;

		         5A	       02  C2 004DB 	    SUBL2   #2, R10						      ;

	   00	    48   A7	       08  2C 004DE 	    MOVC5   #8, 72(R7), #0, R10, (R9)				      ;

		         69	       5A     004E3									      ;

				       1D  18 004E5 	    BGEQ    6$							      ;

		         59	       08  C0 004E7 	    ADDL2   #8, R9						      ;

		         5A	       08  C2 004EA 	    SUBL2   #8, R10						      ;

	   00	    51   A7	       08  2C 004ED 	    MOVC5   #8, 81(R7), #0, R10, (R9)				      ;

		         69	       5A     004F2									      ;

				       0E  18 004F4 	    BGEQ    6$							      ;

		         59	       08  C0 004F6 	    ADDL2   #8, R9						      ;

		         5A	       08  C2 004F9 	    SUBL2   #8, R10						      ;

	   00	  00AF   C7	       01  2C 004FC 	    MOVC5   #1, 175(R7), #0, R10, (R9)				      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 38-2

; Digital Equipment Corporation

;

		         69	       5A     00502									      ;

		         56	       53  D0 00504 6$:     MOVL    R3, P_D						      ;

		         50	  59   A7  9A 00507 	    MOVZBL  89(R7), R0						      ; 1907

		         51	  6A   A7  9A 0050B 	    MOVZBL  106(R7), R1						      ;

		         50	       51  C0 0050F 	    ADDL2   R1, R0						      ;

		         52	  73   A7  9A 00512 	    MOVZBL  115(R7), R2						      ; 1908

		         50	       52  C0 00516 	    ADDL2   R2, R0						      ;

      14   AE	         50	       03  C1 00519 	    ADDL3   #3, R0, TMP						      ;

		    04   AE	  59   A7  9A 0051E 	    MOVZBL  89(R7), 4(SP)					      ; 1915

				  04   AE  D6 00523 	    INCL    4(SP)						      ;

		         6E	  6A   A7  9A 00526 	    MOVZBL  106(R7), (SP)					      ; 1916

				       6E  D6 0052A 	    INCL    (SP)						      ;

		         5A	  73   A7  9A 0052C 	    MOVZBL  115(R7), R10					      ; 1917

				       5A  D6 00530 	    INCL    R10							      ;

		         5B	       2C  D0 00532 	    MOVL    #44, R11						      ; 1919

		         59	       56  D0 00535 	    MOVL    P_D, R9						      ;

	   00	    14   AE	       01  2C 00538 	    MOVC5   #1, TMP, #0, R11, (R9)				      ; 1914

		         69	       5B     0053D									      ;

				       2C  18 0053F 	    BGEQ    7$							      ;

				       59  D6 00541 	    INCL    R9							      ;

				       5B  D7 00543 	    DECL    R11							      ;

	   00	    59   A7	  04   AE  2C 00545 	    MOVC5   4(SP), 89(R7), #0, R11, (R9)			      ;

		         69	       5B     0054B									      ;

				       1E  18 0054D 	    BGEQ    7$							      ;

		         59	  04   AE  C0 0054F 	    ADDL2   4(SP), R9						      ;

		         5B	  04   AE  C2 00553 	    SUBL2   4(SP), R11						      ;

	   00	    6A   A7	       6E  2C 00557 	    MOVC5   (SP), 106(R7), #0, R11, (R9)			      ;

		         69	       5B     0055C									      ;

				       0D  18 0055E 	    BGEQ    7$							      ;

		         59	       6E  C0 00560 	    ADDL2   (SP), R9						      ;

		         5B	       6E  C2 00563 	    SUBL2   (SP), R11						      ;

	   00	    73   A7	       5A  2C 00566 	    MOVC5   R10, 115(R7), #0, R11, (R9)				      ;

		         69	       5B     0056B									      ;

		         56	       53  D0 0056D 7$:     MOVL    R3, P_D						      ;

		         50	0084   C7  9A 00570 	    MOVZBL  132(R7), R0						      ; 1926

		         51	0095   C7  9A 00575 	    MOVZBL  149(R7), R1						      ;

		         50	       51  C0 0057A 	    ADDL2   R1, R0						      ;

		         52	009E   C7  9A 0057D 	    MOVZBL  158(R7), R2						      ; 1927

		         50	       52  C0 00582 	    ADDL2   R2, R0						      ;

      14   AE	         50	       03  C1 00585 	    ADDL3   #3, R0, TMP						      ;

		    04   AE	0084   C7  9A 0058A 	    MOVZBL  132(R7), 4(SP)					      ; 1934

				  04   AE  D6 00590 	    INCL    4(SP)						      ;

		         6E	0095   C7  9A 00593 	    MOVZBL  149(R7), (SP)					      ; 1935

				       6E  D6 00598 	    INCL    (SP)						      ;

		         5A	009E   C7  9A 0059A 	    MOVZBL  158(R7), R10					      ; 1936

				       5A  D6 0059F 	    INCL    R10							      ;

		         5B	       2C  D0 005A1 	    MOVL    #44, R11						      ; 1938

		         59	       56  D0 005A4 	    MOVL    P_D, R9						      ;

	   00	    14   AE	       01  2C 005A7 	    MOVC5   #1, TMP, #0, R11, (R9)				      ; 1933

		         69	       5B     005AC									      ;

				       2F  18 005AE 	    BGEQ    8$							      ;

				       59  D6 005B0 	    INCL    R9							      ;

				       5B  D7 005B2 	    DECL    R11							      ;

	   00	  0084   C7	  04   AE  2C 005B4 	    MOVC5   4(SP), 132(R7), #0, R11, (R9)			      ;

		         69	       5B     005BB									      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 38-3

; Digital Equipment Corporation

;

				       20  18 005BD 	    BGEQ    8$							      ;

		         59	  04   AE  C0 005BF 	    ADDL2   4(SP), R9						      ;

		         5B	  04   AE  C2 005C3 	    SUBL2   4(SP), R11						      ;

	   00	  0095   C7	       6E  2C 005C7 	    MOVC5   (SP), 149(R7), #0, R11, (R9)			      ;

		         69	       5B     005CD									      ;

				       0E  18 005CF 	    BGEQ    8$							      ;

		         59	       6E  C0 005D1 	    ADDL2   (SP), R9						      ;

		         5B	       6E  C2 005D4 	    SUBL2   (SP), R11						      ;

	   00	  009E   C7	       5A  2C 005D7 	    MOVC5   R10, 158(R7), #0, R11, (R9)				      ;

		         69	       5B     005DD									      ;

		         56	       53  D0 005DF 8$:     MOVL    R3, P_D						      ;

		         02	  0C   AE  D1 005E2 9$:     CMPL    12(SP), #2						      ; 1822

				       03  13 005E6 	    BEQL    10$							      ;

				     0083  31 005E8 	    BRW     12$							      ;

				  08   AE  D4 005EB 10$:    CLRL    8(SP)						      ;

	   50	    08   A8	  0C   A8  C1 005EE 	    ADDL3   12(R8), 8(R8), R0					      ; 1947

		         50	       56  C2 005F4 	    SUBL2   P_D, R0						      ; 1948

		         13	       50  D1 005F7 	    CMPL    R0, #19						      ;

				       76  1F 005FA 	    BLSSU   13$							      ;

		    10   AE	  19   A7  9A 005FC 	    MOVZBL  25(R7), TMP						      ; 1954

		    10   AE 00000041   8F  C0 00601 	    ADDL2   #65, TMP						      ;

	   59	         13	       68  C3 00609 	    SUBL3   (R8), #19, R9					      ; 1967

		         5A	       56  D0 0060D 	    MOVL    P_D, R10						      ;

	   00	    10   AE	       01  2C 00610 	    MOVC5   #1, TMP, #0, R9, (R10)				      ; 1956

		         6A	       59     00615									      ;

				       52  18 00617 	    BGEQ    11$							      ;

				       5A  D6 00619 	    INCL    R10							      ;

				       59  D7 0061B 	    DECL    R9							      ;

	   00	    1A   A7	       01  2C 0061D 	    MOVC5   #1, 26(R7), #0, R9, (R10)				      ;

		         6A	       59     00622									      ;

				       45  18 00624 	    BGEQ    11$							      ;

				       5A  D6 00626 	    INCL    R10							      ;

				       59  D7 00628 	    DECL    R9							      ;

	   00	    1B   A7	       01  2C 0062A 	    MOVC5   #1, 27(R7), #0, R9, (R10)				      ;

		         6A	       59     0062F									      ;

				       38  18 00631 	    BGEQ    11$							      ;

				       5A  D6 00633 	    INCL    R10							      ;

				       59  D7 00635 	    DECL    R9							      ;

	   00	    1C   A7	       02  2C 00637 	    MOVC5   #2, 28(R7), #0, R9, (R10)				      ;

		         6A	       59     0063C									      ;

				       2B  18 0063E 	    BGEQ    11$							      ;

		         5A	       02  C0 00640 	    ADDL2   #2, R10						      ;

		         59	       02  C2 00643 	    SUBL2   #2, R9						      ;

	   00	    1E   A7	       07  2C 00646 	    MOVC5   #7, 30(R7), #0, R9, (R10)				      ;

		         6A	       59     0064B									      ;

				       1C  18 0064D 	    BGEQ    11$							      ;

		         5A	       07  C0 0064F 	    ADDL2   #7, R10						      ;

		         59	       07  C2 00652 	    SUBL2   #7, R9						      ;

	   00	    25   A7	       02  2C 00655 	    MOVC5   #2, 37(R7), #0, R9, (R10)				      ;

		         6A	       59     0065A									      ;

				       0D  18 0065C 	    BGEQ    11$							      ;

		         5A	       02  C0 0065E 	    ADDL2   #2, R10						      ;

		         59	       02  C2 00661 	    SUBL2   #2, R9						      ;

	   00	    27   A7	       01  2C 00664 	    MOVC5   #1, 39(R7), #0, R9, (R10)				      ;

		         6A	       59     00669									      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 38-4

; Digital Equipment Corporation

;

		         56	       53  D0 0066B 11$:    MOVL    R3, P_D						      ;

		         04	  08   AE  E9 0066E 12$:    BLBC    8(SP), 14$						      ; 1822

		         50	       0A  CE 00672 13$:    MNEGL   #10, R0						      ; 1971

					   04 00675 	    RET     							      ;

	   68	         56	  04   A8  C3 00676 14$:    SUBL3   4(R8), P_D, (R8)					      ; 1978

		         50	       01  D0 0067B 	    MOVL    #1, R0						      ; 1980

					   04 0067E 	    RET     							      ; 1764



; Routine Size:  610 bytes





;	1983	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 39

; Digital Equipment Corporation

;

;	1984	ROUTINE CVT_FILE (FILE_INDEX, DEST_DDSC_AD) : =

;	1985	

;	1986	!++

;	1987	! FUNCTIONAL DESCRIPTION:

;	1988	!

;	1989	!	Opens the Configuration Data Base file specified by .FILE_INDEX,

;	1990	!	appends a concatenated list of the file's records to the string 

;	1991	!	found in the destination buffer, and closes the file.  The

;	1992	!	formats of the source records are defined in NCPDEF.B32.  The

;	1993	!	formats of records as they are stored in the destination buffer

;	1994	!	are defined in NCBDEF.B32.

;	1995	!

;	1996	! FORMAL PARAMETERS:

;	1997	!

;	1998	!	FILE_INDEX	Specifies the Configuration file to be converted

;	1999	!			as follows :

;	2000	!				LND$C_FILE	Local node file

;	2001	!				RND$C_FILE	Remote node file

;	2002	!				ODB$C_FILE	Network object file

;	2003	!

;	2004	!	DEST_DDSC_AD  -	The address of the double descriptor of the

;	2005	!			destination buffer.  The converted file is 

;	2006	!			appended to whatever string is currently in this

;	2007	!			buffer, and the string descriptor is updated

;	2008	!			accordingly.

;	2009	!

;	2010	! IMPLICIT INPUTS:

;	2011	!

;	2012	!	It is assumed that routine MATCHKEY, found in file NCPSUB.b32,

;	2013	!	returns the value '1' if a record is found and '2' if the end

;	2014	!	of file was encountered.  All other return codes are assumed

;	2015	!	to be error indications.

;	2016	!

;	2017	! IMPLICIT OUTPUTS:

;	2018	!

;	2019	!	NONE

;	2020	!

;	2021	! ROUTINE VALUE:

;	2022	! COMPLETION CODES:

;	2023	!

;	2024	!	TRUE	if the routine is successful.

;	2025	!	FALSE	otherwise.

;	2026	!

;	2027	! SIDE EFFECTS:

;	2028	!

;	2029	!	NONE

;	2030	!

;	2031	!--

;	2032	

;	2033	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 40

; Digital Equipment Corporation

;

;	2034	BEGIN

;	2035	EXTERNAL LITERAL	RMS$_NORMAL, RMS$_FNF,  RMS$_EOF ;

;	2036	LITERAL			MKY_EOF = 2, MKY_FOUND = 1 ;

;	2037	

;	2038	LOCAL	CONTINUE, COUNT, STAT,

;	2039		LOC_BF : VECTOR [MAX_CDB_SIZE,BYTE],

;	2040		LOC_BF_DSC : NDSC ;

;	2041	

;	2042	LOC_BF_DSC [DSC_LNG] = MAX_CDB_SIZE ;

;	2043	LOC_BF_DSC [DSC_PTR] = LOC_BF ;

;	2044	

;	2045	CONTINUE = TRUE ;  STAT = TRUE ;  COUNT = 0 ;

;	2046	

;	2047	!+

;	2048	! Open the indicated file and append all of its valid records,

;	2049	! transformed to the structure needed by the NETACP, to the 

;	2050	! end of the destination string

;	2051	

;	2052	SELECTONE  OPEN_FILE (.FILE_INDEX) OF

;	2053	 SET

;	2054	

;	2055	 [RMS$_NORMAL] :

;	2056	  WHILE .CONTINUE

;	2057	  DO BEGIN	    ! No key to match, read record sequentually.

;	2058	

;	2059	     SELECTONE MATCHKEY (LOC_BF_DSC, 0, 0, 0) OF

;	2060		SET

;	2061		[MKY_FOUND] :

;	2062		  IF APP_MP_REC (.FILE_INDEX, LOC_BF, .DEST_DDSC_AD)

;	2063		  THEN

;	2064			COUNT = .COUNT + 1	! inc the record counter

;	2065		  ELSE

;	2066			CONTINUE = (STAT = FALSE) ;

;	2067	

;	2068		[MKY_EOF] :	CONTINUE = FALSE ;

;	2069		[OTHERWISE] :	CONTINUE = (STAT = FALSE) ;

;	2070		TES ;

;	2071	     END ;

;	2072	

;	2073	 [RMS$_FNF] :	STAT = .STAT ;		! file not found is legal

;	2074	 [OTHERWISE] : 	STAT = FALSE ;

;	2075	 TES ;

;	2076	

;	2077	! No file is allowed to be null.

;	2078	

;	2079	IF  .COUNT EQL 0  THEN   STAT = FALSE ;

;	2080	

;	2081	CLOSE_FILE (.FILE_INDEX) ;

;	2082	RETURN (.STAT) ;

;	2083	END ;







							    .GLOBL  RMS$_NORMAL, RMS$_FNF, RMS$_EOF





; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 40-1

; Digital Equipment Corporation

;

					 007C 0067F CVT_FILE:

							    .WORD   Save R2,R3,R4,R5,R6					      ; 1984

		         5E	FF38   CE  9E 00681 	    MOVAB   -200(SP), SP					      ;

		         7E	  C3   8F  9A 00686 	    MOVZBL  #195, LOC_BF_DSC					      ; 2042

		    04   AE	  08   AE  9E 0068A 	    MOVAB   LOC_BF, LOC_BF_DSC+4				      ; 2043

		         54	       01  D0 0068F 	    MOVL    #1, CONTINUE					      ; 2045

		         52	       01  D0 00692 	    MOVL    #1, STAT						      ;

				       55  D4 00695 	    CLRL    COUNT						      ;

				  04   AC  DD 00697 	    PUSHL   FILE_INDEX						      ; 2052

		  0000G  CF	       01  FB 0069A 	    CALLS   #1, OPEN_FILE					      ;

		         56	       50  D0 0069F 	    MOVL    R0, R6						      ;

	      00000000G  8F	       56  D1 006A2 	    CMPL    R6, #RMS$_NORMAL					      ;

				       37  12 006A9 	    BNEQ    5$							      ;

		         3F	       54  E9 006AB 1$:     BLBC    CONTINUE, 6$					      ; 2056

				       7E  7C 006AE 	    CLRQ    -(SP)						      ; 2059

				       7E  D4 006B0 	    CLRL    -(SP)						      ;

				  0C   AE  9F 006B2 	    PUSHAB  LOC_BF_DSC						      ;

		  0000G  CF	       04  FB 006B5 	    CALLS   #4, MATCHKEY					      ;

		         53	       50  D0 006BA 	    MOVL    R0, R3						      ;

		         01	       53  D1 006BD 	    CMPL    R3, #1						      ;

				       15  12 006C0 	    BNEQ    2$							      ;

				  08   AC  DD 006C2 	    PUSHL   DEST_DDSC_AD					      ; 2062

				  0C   AE  9F 006C5 	    PUSHAB  LOC_BF						      ;

				  04   AC  DD 006C8 	    PUSHL   FILE_INDEX						      ;

		  FD4D   CF	       03  FB 006CB 	    CALLS   #3, APP_MP_REC					      ;

		         09	       50  E9 006D0 	    BLBC    R0, 3$						      ;

				       55  D6 006D3 	    INCL    COUNT						      ; 2064

				       D4  11 006D5 	    BRB     1$							      ; 2062

		         02	       53  D1 006D7 2$:     CMPL    R3, #2						      ; 2059

				       02  13 006DA 	    BEQL    4$							      ;

				       52  D4 006DC 3$:     CLRL    STAT						      ; 2069

				       54  D4 006DE 4$:     CLRL    CONTINUE						      ;

				       C9  11 006E0 	    BRB     1$							      ; 2056

	      00000000G  8F	       56  D1 006E2 5$:     CMPL    R6, #RMS$_FNF					      ; 2052

				       02  13 006E9 	    BEQL    6$							      ;

				       52  D4 006EB 	    CLRL    STAT						      ; 2074

				       55  D5 006ED 6$:     TSTL    COUNT						      ; 2079

				       02  12 006EF 	    BNEQ    7$							      ;

				       52  D4 006F1 	    CLRL    STAT						      ;

				  04   AC  DD 006F3 7$:     PUSHL   FILE_INDEX						      ; 2081

		  0000G  CF	       01  FB 006F6 	    CALLS   #1, CLOSE_FILE					      ;

		         50	       52  D0 006FB 	    MOVL    STAT, R0						      ; 2082

					   04 006FE 	    RET     							      ; 1984



; Routine Size:  128 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 41

; Digital Equipment Corporation

;

;	2084	ROUTINE GET_CONFIG (DEST_DDSC_AD) : =

;	2085	

;	2086	!++

;	2087	! FUNCTIONAL DESCRIPTION:

;	2088	!

;	2089	!	Takes a "snapshot" of the local node, remote node, and object

;	2090	!	records of the Configuration Data Base and stores a modified

;	2091	!	and concatenated copy of them in the destination buffer.  The

;	2092	!	formats of the source records are found in NCPDEF.B32.  The

;	2093	!	formats of the records after they have been modified are found

;	2094	!	in NCBDEF.B32.

;	2095	!

;	2096	! FORMAL PARAMETERS:

;	2097	!

;	2098	!	DEST_DDSC_AD	The address of the double descriptor of the

;	2099	!			destination buffer.  The string descriptor 

;	2100	!			portion is initialized before use and returns

;	2101	!			with the descriptor of the mapped Configuration

;	2102	!			Data base snapshot.  The buffer descriptor is

;	2103	!			assumed to be valid on input.

;	2104	!

;	2105	! IMPLICIT INPUTS:

;	2106	!

;	2107	!	NONE

;	2108	!

;	2109	! IMPLICIT OUTPUTS:

;	2110	!

;	2111	!	NONE

;	2112	!

;	2113	! ROUTINE VALUE:

;	2114	! COMPLETION CODES:

;	2115	!

;	2116	!	TRUE	if the routine is successful.

;	2117	!	FALSE	otherwise.

;	2118	!

;	2119	! SIDE EFFECTS:

;	2120	!

;	2121	!	NONE

;	2122	!

;	2123	!--

;	2124	

;	2125	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 42

; Digital Equipment Corporation

;

;	2126	BEGIN

;	2127	BIND	DEST_DDSC = .DEST_DDSC_AD : DDSC ;

;	2128	LOCAL	TMP ;

;	2129	

;	2130	!+

;	2131	! Define an index structure at the begining of the buffer,

;	2132	! initialize it to zero, and account for it by updating the

;	2133	! string descriptor.

;	2134	!-

;	2135	

;	2136	BIND	NCB = .DEST_DDSC [BUF_PTR] : BLOCK [4,BYTE] ;

;	2137	

;	2138	DEST_DDSC [STR_PTR] = .DEST_DDSC [BUF_PTR] ;

;	2139	DEST_DDSC [STR_LNG] = 4 ;

;	2140	

;	2141	.DEST_DDSC [BUF_PTR] = 0 ;

;	2142	

;	2143	! Enter the mapped 'LND' records

;	2144	

;	2145	IF  NOT  CVT_FILE (LND$C_FILE, .DEST_DDSC_AD)

;	2146	THEN

;	2147	    RETURN (FALSE) ;

;	2148	

;	2149	!+

;	2150	! The size of the single mapped 'LND' record is fixed, so there

;	2151	! is no need to store its length in the structure. The following

;	2152	! two sets of records, 'RMT' and 'OBJ', have variable lengths.

;	2153	!

;	2154	! Save the current string length, append the mapped 'OBD'

;	2155	! records, and store the length of the records.

;	2156	

;	2157	TMP = .DEST_DDSC [STR_LNG] ;

;	2158	

;	2159	IF  NOT  CVT_FILE (ODB$C_FILE, .DEST_DDSC_AD)

;	2160	THEN

;	2161	    RETURN (FALSE) ;

;	2162	

;	2163	NCB [NCB$W_OBJLEN] = .DEST_DDSC [STR_LNG] - .TMP ;

;	2164	

;	2165	! Save the current string length, append the mapped 'RMT'

;	2166	! records, and then store the length of records.

;	2167	!-

;	2168	

;	2169	TMP = .DEST_DDSC [STR_LNG] ;

;	2170	

;	2171	IF  NOT  CVT_FILE (RND$C_FILE, .DEST_DDSC_AD)

;	2172	THEN

;	2173	    RETURN (FALSE) ;

;	2174	

;	2175	NCB [NCB$W_RMTLEN] = .DEST_DDSC [STR_LNG] - .TMP ;

;	2176	

;	2177	RETURN (TRUE) ;

;	2178	END ;







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 42-1

; Digital Equipment Corporation

;







					 081C 006FF GET_CONFIG:

							    .WORD   Save R2,R3,R4,R11					      ; 2084

		         5B	FF7A   CF  9E 00701 	    MOVAB   CVT_FILE, R11					      ;

		         52	  04   AC  D0 00706 	    MOVL    DEST_DDSC_AD, R2					      ; 2126

		         53	  0C   A2  D0 0070A 	    MOVL    12(R2), R3						      ;

		    04   A2	  0C   A2  D0 0070E 	    MOVL    12(R2), 4(R2)					      ; 2138

		         62	       04  D0 00713 	    MOVL    #4, (R2)						      ; 2139

				  0C   B2  D4 00716 	    CLRL    @12(R2)						      ; 2141

				  04   AC  DD 00719 	    PUSHL   DEST_DDSC_AD					      ; 2145

				       7E  D4 0071C 	    CLRL    -(SP)						      ;

		         6B	       02  FB 0071E 	    CALLS   #2, CVT_FILE					      ;

		         29	       50  E9 00721 	    BLBC    R0, 1$						      ;

		         54	       62  D0 00724 	    MOVL    (R2), TMP						      ; 2157

				  04   AC  DD 00727 	    PUSHL   DEST_DDSC_AD					      ; 2159

				       03  DD 0072A 	    PUSHL   #3							      ;

		         6B	       02  FB 0072C 	    CALLS   #2, CVT_FILE					      ;

		         1B	       50  E9 0072F 	    BLBC    R0, 1$						      ;

	   63	         62	       54  A3 00732 	    SUBW3   TMP, (R2), (R3)					      ; 2163

		         54	       62  D0 00736 	    MOVL    (R2), TMP						      ; 2169

				  04   AC  DD 00739 	    PUSHL   DEST_DDSC_AD					      ; 2171

				       01  DD 0073C 	    PUSHL   #1							      ;

		         6B	       02  FB 0073E 	    CALLS   #2, CVT_FILE					      ;

		         09	       50  E9 00741 	    BLBC    R0, 1$						      ;

      02   A3	         62	       54  A3 00744 	    SUBW3   TMP, (R2), 2(R3)					      ; 2175

		         50	       01  D0 00749 	    MOVL    #1, R0						      ; 2177

					   04 0074C 	    RET     							      ;

				       50  D4 0074D 1$:     CLRL    R0							      ; 2084

					   04 0074F 	    RET     							      ;



; Routine Size:  81 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 43

; Digital Equipment Corporation

;

;	2179	ROUTINE   READ_INFO  : NOVALUE LNKMSG =	

;	2180	

;	2181	!++

;	2182	! FUNCTIONAL DESCRIPTION:

;	2183	!

;	2184	!	The NICE 'read information' messages are processed 

;	2185	!	according to the value found in OPTION.  If there are

;	2186	!	no errors then a response message and a series of data

;	2187	!	block messages are sent back to the HOST.

;	2188	!

;	2189	! FORMAL PARAMETERS:

;	2190	!

;	2191	!	NONE

;	2192	!

;	2193	! IMPLICIT INPUTS:

;	2194	!

;	2195	!	R9	- Contains the address of the MCB

;	2196	!	R10	- Output message pointer used by the routines in

;	2197	!		  module NICMSG.

;	2198	!	R11	- Input message pointer used by the routines in

;	2199	!		  module NICMSG.

;	2200	!

;	2201	!	Both an input and output message are assumed to be open

;	2202	!	and ready for processing by the routines in NICMSG.B32.

;	2203	!

;	2204	!	The FUNCTION and OPTION fields of the input message are assumed

;	2205	!	to have been already parsed.

;	2206	!

;	2207	!	OPTION is assumed to contain the appropriate option code.

;	2208	!

;	2209	!	It is assumed that the MCB contains pointer to an error handler.

;	2210	!

;	2211	! IMPLICIT OUTPUTS:

;	2212	!

;	2213	!	R10, and R11 are updated.

;	2214	!

;	2215	! ROUTINE VALUE:

;	2216	! COMPLETION CODES:

;	2217	!

;	2218	!	REPLY_CODE (i.e., R9) returns the standard

;	2219	!	NICE mapped status codes defined in NICDAT.B32.

;	2220	!

;	2221	!	The routine itself returns no value.

;	2222	!

;	2223	! SIDE EFFECTS:

;	2224	!

;	2225	!	NONE

;	2226	!

;	2227	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 44

; Digital Equipment Corporation

;

;	2228	BEGIN

;	2229	OWN	MSG_OWED : INITIAL (0) ;

;	2230	

;	2231	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	2232	LOCAL	STATE ;

;	2233	MACRO	REPLY_CODE = MCB_PTR [MCB$L_REPLYCODE] % ;

;	2234	

;	2235	!+

;	2236	! This function requires multiple response messages to be sent

;	2237	! to the command node.  Because the only recovery possible from 

;	2238	! errors which occur after the first message is sent is to break

;	2239	! the link to the command node, all of the desired information

;	2240	! is first collected and formatted into the messages before the

;	2241	! first message has been sent.  Since most of the error prone

;	2242	! work (i.e., QIO's to the NETACP) is done before the first

;	2243	! message is sent, the chance of having to break the link is

;	2244	! minimized.

;	2245	!

;	2246	! The output messages are built and stored contiguosly in the

;	2247	! LARGE_DDSC buffer.  Once the last message is built this buffer

;	2248	! is closed and sent piecewise, one message at a time, to the 

;	2249	! command node.  The size of each message is determined by the

;	2250	! MSG_SIZE table entry which was established at the time each

;	2251	! message was constructed.

;	2252	!-

;	2253	

;	2254	LOCAL	MSG_SIZE : VECTOR [64, WORD] ;

;	2255	LOCAL	MSG_INDEX, SAVED_P_OM ;

;	2256	

;	2257	

;	2258	!+

;	2259	! The following macro is used to mark the individual messages

;	2260	! which are stored contiguously within the large buffer.

;	2261	!-

;	2262	

;	2263	MACRO  MARK_MSG =

;     M 2264		MSG_SIZE [.MSG_INDEX] = .P_OM - .SAVED_P_OM ;

;     M 2265		MSG_INDEX = .MSG_INDEX + 1 ;

;     M 2266		SAVED_P_OM = .P_OM ;

;     M 2267	% ;

;	2268	

;	2269	MCB_PTR [MCB$B_ERROR_ON] = TRUE ;  ! Enable the error handler.

;	2270	

;	2271	!+

;	2272	! Close the default output buffer and open up the large buffer

;	2273	! which will serve to hold the concatenated output messages.

;	2274	! Initialize the message index and the saved output pointer.

;	2275	!-

;	2276	   MESSAGE (CLOSE_O, 0) ;	MESSAGE (OPEN_O, LARGE_DDSC) ;

;	2277	

;	2278	   MSG_INDEX = 0 ;		SAVED_P_OM = .P_OM ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 45

; Digital Equipment Corporation

;

;	2279	!+

;	2280	! Now dispatch by the option code to build the appropriate

;	2281	! messages.  Upon return from the 'case' block the individual

;	2282	! output messages will be sent one at a time using the 

;	2283	! information stored in LARGE_DDSC, MSG_INDEX, and MSG_SIZE.

;	2284	!-

;	2285	

;	2286	

;	2287	CASE .OPTION  FROM 0 TO 7 OF	! Dispacth by option

;	2288	  SET

;	2289	

;	2290	

;	2291			!*****************************(*****************

;	2292			!

;	2293	   [0] :	!	LOCAL NODE COUNTERS

;	2294			!

;	2295			!*************************************jj********

;	2296	    BEGIN

;	2297	    MESSAGE  (CHECK_I, 0) ;	! Check to see if the input msg

;	2298					! has been comletely parsed

;	2299	    ACP	(GET_LOCAL_CTRS, 0,	! Get local counters

;	2300			0, AUX1_DDSC) ;

;	2301	

;	2302	    ACP	(GET_LOCAL_NAME, 0, 	! Get local node name

;	2303			0, ND_DDSC) ;

;	2304	

;	2305	    INSB  (NIC$_SUCCESS) ;

;	2306	    INSW  (1) ;			! Insert count of number of data

;	2307					! messages to follow this one

;	2308	

;	2309	     MARK_MSG ;			! Mark the end of this message

;	2310	

;	2311		!+

;	2312		! now build the data message consisting of the OPTION

;	2313		! code, the local node name, and the counter block.

;	2314		!-

;	2315	

;	2316		INSB    (.OPTION) ;

;	2317		INSSTR   (ND_DDSC) ;

;	2318		INS_CTRS  (NODE_CTRS, AUX1_DDSC) ;

;	2319	

;	2320		MARK_MSG ;		! mark the end of this message

;	2321	

;	2322	    END ;

;	2323	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 46

; Digital Equipment Corporation

;

;	2324			!***********************************************

;	2325			!

;	2326	   [1] :	!	 LOCAL NODE STATUS

;	2327			!

;	2328			!***********************************************

;	2329	    BEGIN

;	2330	    LOCAL  TMP ;

;	2331	    MESSAGE (CHECK_I, 0) ;	! Check to see if the input msg

;	2332					! has been comletely parsed

;	2333	    ACP	(GET_LOCAL_NAME, 0,	! Get local node name

;	2334		   0, ND_DDSC) ;

;	2335	    INSB (NIC$_SUCCESS) ;	!	

;	2336	    INSW  (1) ;			! Insert number of messages to 

;	2337					! follow this one

;	2338	

;	2339	     MARK_MSG ;			! mark the end of this message

;	2340	

;	2341		! now enter the local node status block message

;	2342	

;	2343		INSB (.OPTION) ;

;	2344		INSSTR   (ND_DDSC) ;		! Insert local node name

;	2345	

;	2346		ACP    (GET_NUM_BY_NAME,	! Get node's number and

;	2347			TMP, ND_DDSC, 0) ;

;	2348		INSW  (.TMP) ;			! Insert ex-2 field

;	2349						! (NETACP maintains this

;	2350						!   as an EX_2 field)

;	2351		ACP    (GET_LOCAL_STATE,	! Get node state

;	2352			    STATE, 0, 0) ;

;	2353		INSB  (.STATE) ;		! and insert into msg

;	2354		INSB   (0) ;			! Operator logging state

;	2355						! - not supported

;	2356		INSB   (0) ;			! Maintenance logging

;	2357						! state - not supported

;	2358		INSSTR  (ND_DDSC) ;		! Insert default host

;	2359		ACP    (GET_VERSION, 0,		! Get routing, commun.

;	2360			ND_DDSC, AUX1_DDSC) ; 	! and system versions

;	2361		INSSTR  (AUX1_DDSC) ;		! and insert them

;	2362	

;	2363		MARK_MSG ;			! mark the end of this 

;	2364						! message.

;	2365	    END ;

;	2366	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 47

; Digital Equipment Corporation

;

;	2367			!***********************************************

;	2368			!

;	2369	   [2] :	!		 NOT SUPPORTED

;	2370			!

;	2371			!***********************************************

;	2372	

;	2373	        REPLY_CODE = NIC$_ILL_OPT ;

;	2374	

;	2375			!***********************************************

;	2376			!

;	2377	   [3] :	!		 NOT SUPPORTED

;	2378			!

;	2379			!***********************************************

;	2380	

;	2381		REPLY_CODE = NIC$_ILL_OPT ;

;	2382	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 48

; Digital Equipment Corporation

;

;	2383			!***********************************************

;	2384			!

;	2385	   [4] :	!	 	LINE COUNTERS

;	2386			!

;	2387			!***********************************************

;	2388	    BEGIN

;	2389	    EXTLN  (Z_ALL, AUX0_DDSC,   ! Extract line name(s)

;	2390		       NAMES_IN_LIST) ;	! Rec. list size to be 

;	2391					! used as loop counter 

;	2392					! for next phase

;	2393	    MESSAGE (CHECK_I, 0) ;	! Check to see if the input

;	2394					! msg has been comletely

;	2395					! parsed

;	2396	    INSB (NIC$_SUCCESS) ;	! Build reply message

;	2397	    INSW  (.NAMES_IN_LIST) ;    !

;	2398	

;	2399	    MARK_MSG ;			! Mark the end of this message.

;	2400	

;	2401	    MSG_OWED = .NAMES_IN_LIST ;	! Set promised msg counter

;	2402	

;	2403	    MESSAGE (OPEN_I, AUX0_DDSC) ; ! Open the msg just built for

;	2404					  ! parsing in the loop below

;	2405	

;	2406		!+

;	2407		! Now build and enter the data block messages.

;	2408		!-

;	2409	

;	2410	    WHILE .MSG_OWED GTRU 0	! Loop for each name in the list

;	2411	    DO

;	2412		BEGIN

;	2413		EXT_USTR  (4, LN_DDSC) ;	! Get line's name

;	2414		ACP	(GET_LINE_CTRS, 0,	! Get its counters

;	2415			LN_DDSC, AUX1_DDSC) ;

;	2416		INSB	(.OPTION) ;		! Insert msg type

;	2417		INSLN	(LN_DDSC) ;		! Insert line name

;	2418		INS_CTRS  (LINE_CTRS,		! Insert counters

;	2419			   AUX1_DDSC) ;		! into message

;	2420	

;	2421		MARK_MSG ;			! Mark the end of this

;	2422						! message

;	2423		MSG_OWED = .MSG_OWED - 1 ;

;	2424		END ;

;	2425	    END ;

;	2426	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 49

; Digital Equipment Corporation

;

;	2427			!***********************************************

;	2428			!

;	2429	   [5] :	!	 	LINE STATUS

;	2430			!

;	2431			!***********************************************

;	2432	     BEGIN

;	2433	     EXTLN  (Z_ALL, AUX0_DDSC,	! "ALL -LINES" is permitted

;	2434			NAMES_IN_LIST) ; ! Get line name(s)

;	2435	

;	2436	    MESSAGE (CHECK_I, 0) ;	! Check to see if the input msg

;	2437					! has been comletely parsed

;	2438	    INSB  (NIC$_SUCCESS) ;	! Build reply

;	2439	    INSW  (.NAMES_IN_LIST) ;

;	2440	

;	2441	     MARK_MSG ;			! Mark the end of this message

;	2442	

;	2443	    MSG_OWED = .NAMES_IN_LIST ;	! Set promised msg counter

;	2444	

;	2445	    MESSAGE (OPEN_I, AUX0_DDSC) ; ! Open the msg just built for

;	2446					  ! parsing in the loop below

;	2447	

;	2448	     !+

;	2449	     ! Now enter the data block messages.

;	2450	     !-

;	2451	

;	2452	

;	2453	    WHILE .MSG_OWED GTRU 0	! Loop for each name in the list

;	2454	    DO

;	2455		BEGIN

;	2456		EXT_USTR  (4, LN_DDSC) ;	! Get next line name

;	2457		ACP	(GET_LINE_STATE, STATE,	! Get line's state

;	2458				LN_DDSC, 0) ;

;	2459		ACP	(GET_ND_BY_LN, 0,	! Get name of node at

;	2460			 LN_DDSC, ND_DDSC ) ;	! opposite end of line

;	2461		INSB	(.OPTION) ;

;	2462		INSLN	(LN_DDSC) ;		! Insert line id

;	2463		INSB	(.STATE) ;		! and insert it into msg

;	2464		INSB	(0) ;			! Operator logging state

;	2465						! - not supported

;	2466		INSB	(0) ;			! Maintenance logging

;	2467						! state - not supported

;	2468		INSSTR	(ND_DDSC) ;		! Insert name of node at

;	2469						! opposite end of line

;	2470	

;	2471		MARK_MSG ;			! Mark the end of this

;	2472						! message.

;	2473		MSG_OWED = .MSG_OWED - 1 ;

;	2474		END ;

;	2475	     END ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 50

; Digital Equipment Corporation

;

;	2476			!***********************************************

;	2477			!

;	2478	   [6] :	!		GET ROUTING PATHS

;	2479			!

;	2480			!***********************************************

;	2481	

;	2482			REPLY_CODE = NIC$_ILL_OPT ;

;	2483	

;	2484	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 51

; Digital Equipment Corporation

;

;	2485			!***********************************************

;	2486			!

;	2487	   [7] :	! 	GET LOGICAL LINKS TO ALL NODES

;	2488			!

;	2489			!***********************************************

;	2490	    BEGIN

;	2491	    LOCAL    LINKS ;

;	2492	    MESSAGE (CHECK_I, 0) ;	! Check to see if the input msg

;	2493					! has been comletely parsed

;	2494	    ACP	 (GET_NODE_NAMES,	! Get all node names

;	2495		  NAMES_IN_LIST,	!  returns no. of nodes

;	2496		  0, AUX0_DDSC) ;	!  returns list of nodes

;	2497	    INSB  (NIC$_SUCCESS) ;	! Build initial reply msg

;	2498	    INSW  (.NAMES_IN_LIST) ;	!  one 'data msg' per node

;	2499					!  to follow

;	2500	

;	2501	    MARK_MSG ;			! Mark the end of this message.

;	2502	

;	2503	    MSG_OWED = .NAMES_IN_LIST ;	! Set promised msg counter

;	2504	

;	2505	    MESSAGE (OPEN_I, AUX0_DDSC) ; ! Open the msg just built for

;	2506					  ! parsing in the loop below

;	2507	

;	2508	    !+

;	2509	    ! Now enter the individual data block messages.

;	2510	    !-

;	2511	

;	2512	    WHILE .MSG_OWED GTRU 0	! Loop for each name in the list

;	2513	    DO

;	2514		BEGIN

;	2515		INSB  (.OPTION) ;

;	2516		EXTND  (Z_ERROR,

;	2517			 ND_DDSC,	! Get next node name

;	2518			    0) ;	! Disregard list length

;	2519		ACP	(GET_LOG_LINKS,	! Get all logical links to node

;	2520			 LINKS,		!  returns no. of logical links

;	2521			 ND_DDSC,	!  input node name

;	2522			 AUX1_DDSC) ;	!  Output logical link list

;	2523		INSSTR	(ND_DDSC) ;	! Insert node name into msg

;	2524	        INSB  (1) ;		! Insert code for VAX/VMS

;	2525		INSW  (.LINKS) ;	! Insert no. of logical links

;	2526		INSSTR	(AUX1_DDSC) ;	! Insert list of logical links

;	2527	

;	2528		MARK_MSG ;		! Mark the end of this message.

;	2529	

;	2530		MSG_OWED = .MSG_OWED - 1 ;

;	2531		END ;

;	2532	    END ;

;	2533	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 52

; Digital Equipment Corporation

;

;	2534			!**********************************************

;	2535			!

;	2536	  [OUTRANGE] :	!		REMAINING OPTIONS

;	2537			!

;	2538			!***********************************************

;	2539	

;	2540			REPLY_CODE = NIC$_ILL_OPT ;

;	2541	

;	2542	

;	2543	  TES ;

;	2544	 

;	2545	!+

;	2546	! Close the buffer which holds the output messages, and transmit

;	2547	! these messages one at a time to the command node.  Each

;	2548	! message is described by modifying the string descriptor

;	2549	! component of LARGE_DDSC to slide down the multiple message

;	2550	! buffer one message at a time.

;	2551	!-

;	2552	

;	2553	MESSAGE (CLOSE_O, 0) ;

;	2554	

;	2555	INCR  I FROM  0  TO  .MSG_INDEX - 1

;	2556	DO

;	2557	    BEGIN

;	2558		

;	2559	    LARGE_DDSC [STR_LNG] = .MSG_SIZE [.I] ;

;	2560	    MESSAGE (SEND_DDSC, LARGE_DDSC) ;

;	2561	    LARGE_DDSC [STR_PTR] 

;	2562			    = .LARGE_DDSC [STR_PTR] + .MSG_SIZE [.I] ;

;	2563	    END ;

;	2564	

;	2565	END ;







							    .PSECT  $OWN$,NOEXE,2



					      00024 MSG_OWED:

							    .LONG   0							      ;







							    .PSECT  $CODE$,NOWRT,2



					 01FC 00750 READ_INFO:

							    .WORD   Save R2,R3,R4,R5,R6,R7,R8				      ; 2179

		         54	0000G  CF  9E 00752 	    MOVAB   NAMES_IN_LIST, R4					      ;

		         55	0000G  CF  9E 00757 	    MOVAB   ACP, R5						      ;

		         56	0000G  CF  9E 0075C 	    MOVAB   MESSAGE, R6						      ;

		         57	0000G  CF  9E 00761 	    MOVAB   ND_DDSC, R7						      ;

		         58	0000G  CF  9E 00766 	    MOVAB   INSB, R8						      ;

		         5E	FF74   CE  9E 0076B 	    MOVAB   -140(SP), SP					      ;

		    41   A9	       01  90 00770 	    MOVB    #1, 65(MCB_PTR)					      ; 2269

		         7E	       06  7D 00774 	    MOVQ    #6, -(SP)						      ; 2276

		         66	       02  FB 00777 	    CALLS   #2, MESSAGE						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 52-1

; Digital Equipment Corporation

;

				0000G  CF  9F 0077A 	    PUSHAB  LARGE_DDSC						      ;

				       05  DD 0077E 	    PUSHL   #5							      ;

		         66	       02  FB 00780 	    CALLS   #2, MESSAGE						      ;

				       52  D4 00783 	    CLRL    MSG_INDEX						      ; 2278

		         53	       5A  D0 00785 	    MOVL    P_OM, SAVED_P_OM					      ;

	   07	         00	0000G  CF  8F 00788 	    CASEB   OPTION, #0, #7					      ; 2287

	 020D	       0060	     0013     0078E 1$:     .WORD   2$-1$,-						      ;

	 0171	       00ED	     020D     00794		    3$-1$,-						      ;

		       0213	     020D     0079A		    10$-1$,-						      ;

								    10$-1$,-						      ;

								    6$-1$,-						      ;

								    8$-1$,-						      ;

								    10$-1$,-						      ;

								    12$-1$						      ;

				     01FA  31 0079E 	    BRW     10$							      ; 2540

		         7E	       03  7D 007A1 2$:     MOVQ    #3, -(SP)						      ; 2297

		         66	       02  FB 007A4 	    CALLS   #2, MESSAGE						      ;

				0000G  CF  9F 007A7 	    PUSHAB  AUX1_DDSC						      ; 2299

				       7E  7C 007AB 	    CLRQ    -(SP)						      ;

				       0C  DD 007AD 	    PUSHL   #12							      ;

		         65	       04  FB 007AF 	    CALLS   #4, ACP						      ;

				       57  DD 007B2 	    PUSHL   R7							      ; 2302

				       7E  7C 007B4 	    CLRQ    -(SP)						      ;

				       07  DD 007B6 	    PUSHL   #7							      ;

		         65	       04  FB 007B8 	    CALLS   #4, ACP						      ;

				       01  DD 007BB 	    PUSHL   #1							      ; 2305

		         68	       01  FB 007BD 	    CALLS   #1, INSB						      ;

				       01  DD 007C0 	    PUSHL   #1							      ; 2306

		  0000G  CF	       01  FB 007C2 	    CALLS   #1, INSW						      ;

      0C AE42	         5A	       53  A3 007C7 	    SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ;

				       52  D6 007CD 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 007CF 	    MOVL    P_OM, SAVED_P_OM					      ;

		         7E	0000G  CF  9A 007D2 	    MOVZBL  OPTION, -(SP)					      ; 2316

		         68	       01  FB 007D7 	    CALLS   #1, INSB						      ;

				       57  DD 007DA 	    PUSHL   R7							      ; 2317

		  0000G  CF	       01  FB 007DC 	    CALLS   #1, INSSTR						      ;

				0000G  CF  9F 007E1 	    PUSHAB  AUX1_DDSC						      ; 2318

				       7E  D4 007E5 	    CLRL    -(SP)						      ;

		  0000G  CF	       02  FB 007E7 	    CALLS   #2, INS_CTRS					      ;

				       7F  11 007EC 	    BRB     4$							      ;

		         7E	       03  7D 007EE 3$:     MOVQ    #3, -(SP)						      ; 2331

		         66	       02  FB 007F1 	    CALLS   #2, MESSAGE						      ;

				       57  DD 007F4 	    PUSHL   R7							      ; 2333

				       7E  7C 007F6 	    CLRQ    -(SP)						      ;

				       07  DD 007F8 	    PUSHL   #7							      ;

		         65	       04  FB 007FA 	    CALLS   #4, ACP						      ;

				       01  DD 007FD 	    PUSHL   #1							      ; 2335

		         68	       01  FB 007FF 	    CALLS   #1, INSB						      ;

				       01  DD 00802 	    PUSHL   #1							      ; 2336

		  0000G  CF	       01  FB 00804 	    CALLS   #1, INSW						      ;

      0C AE42	         5A	       53  A3 00809 	    SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ;

				       52  D6 0080F 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 00811 	    MOVL    P_OM, SAVED_P_OM					      ;

		         7E	0000G  CF  9A 00814 	    MOVZBL  OPTION, -(SP)					      ; 2343

		         68	       01  FB 00819 	    CALLS   #1, INSB						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 52-2

; Digital Equipment Corporation

;

				       57  DD 0081C 	    PUSHL   R7							      ; 2344

		  0000G  CF	       01  FB 0081E 	    CALLS   #1, INSSTR						      ;

				       7E  D4 00823 	    CLRL    -(SP)						      ; 2346

				       57  DD 00825 	    PUSHL   R7							      ;

				  10   AE  9F 00827 	    PUSHAB  TMP							      ;

				       12  DD 0082A 	    PUSHL   #18							      ;

		         65	       04  FB 0082C 	    CALLS   #4, ACP						      ;

				  08   AE  DD 0082F 	    PUSHL   TMP							      ; 2348

		  0000G  CF	       01  FB 00832 	    CALLS   #1, INSW						      ;

				       7E  7C 00837 	    CLRQ    -(SP)						      ; 2351

				  0C   AE  9F 00839 	    PUSHAB  STATE						      ;

				       0B  DD 0083C 	    PUSHL   #11							      ;

		         65	       04  FB 0083E 	    CALLS   #4, ACP						      ;

				  04   AE  DD 00841 	    PUSHL   STATE						      ; 2353

		         68	       01  FB 00844 	    CALLS   #1, INSB						      ;

				       7E  D4 00847 	    CLRL    -(SP)						      ; 2354

		         68	       01  FB 00849 	    CALLS   #1, INSB						      ;

				       7E  D4 0084C 	    CLRL    -(SP)						      ; 2356

		         68	       01  FB 0084E 	    CALLS   #1, INSB						      ;

				       57  DD 00851 	    PUSHL   R7							      ; 2358

		  0000G  CF	       01  FB 00853 	    CALLS   #1, INSSTR						      ;

				0000G  CF  9F 00858 	    PUSHAB  AUX1_DDSC						      ; 2359

				       57  DD 0085C 	    PUSHL   R7							      ;

		         7E	       13  7D 0085E 	    MOVQ    #19, -(SP)						      ;

		         65	       04  FB 00861 	    CALLS   #4, ACP						      ;

				0000G  CF  9F 00864 	    PUSHAB  AUX1_DDSC						      ; 2361

		  0000G  CF	       01  FB 00868 	    CALLS   #1, INSSTR						      ;

      0C AE42	         5A	       53  A3 0086D 4$:     SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ;

				       52  D6 00873 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 00875 	    MOVL    P_OM, SAVED_P_OM					      ;

				     01B2  31 00878 5$:     BRW     14$							      ; 2287

				       54  DD 0087B 6$:     PUSHL   R4							      ; 2389

				0000G  CF  9F 0087D 	    PUSHAB  AUX0_DDSC						      ;

				       7E  D4 00881 	    CLRL    -(SP)						      ;

		  0000G  CF	       03  FB 00883 	    CALLS   #3, EXTLN						      ;

		         7E	       03  7D 00888 	    MOVQ    #3, -(SP)						      ; 2393

		         66	       02  FB 0088B 	    CALLS   #2, MESSAGE						      ;

				       01  DD 0088E 	    PUSHL   #1							      ; 2396

		         68	       01  FB 00890 	    CALLS   #1, INSB						      ;

				       64  DD 00893 	    PUSHL   NAMES_IN_LIST					      ; 2397

		  0000G  CF	       01  FB 00895 	    CALLS   #1, INSW						      ;

      0C AE42	         5A	       53  A3 0089A 	    SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ;

				       52  D6 008A0 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 008A2 	    MOVL    P_OM, SAVED_P_OM					      ;

		  0000'  CF	       64  D0 008A5 	    MOVL    NAMES_IN_LIST, MSG_OWED				      ; 2401

				0000G  CF  9F 008AA 	    PUSHAB  AUX0_DDSC						      ; 2403

				       01  DD 008AE 	    PUSHL   #1							      ;

		         66	       02  FB 008B0 	    CALLS   #2, MESSAGE						      ;

				0000'  CF  D5 008B3 7$:     TSTL    MSG_OWED						      ; 2410

				       BF  1B 008B7 	    BLEQU   5$							      ;

				0000G  CF  9F 008B9 	    PUSHAB  LN_DDSC						      ; 2413

				       04  DD 008BD 	    PUSHL   #4							      ;

		  0000G  CF	       02  FB 008BF 	    CALLS   #2, EXT_USTR					      ;

				0000G  CF  9F 008C4 	    PUSHAB  AUX1_DDSC						      ; 2414

				0000G  CF  9F 008C8 	    PUSHAB  LN_DDSC						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 52-3

; Digital Equipment Corporation

;

		         7E	       03  7D 008CC 	    MOVQ    #3, -(SP)						      ;

		         65	       04  FB 008CF 	    CALLS   #4, ACP						      ;

		         7E	0000G  CF  9A 008D2 	    MOVZBL  OPTION, -(SP)					      ; 2416

		         68	       01  FB 008D7 	    CALLS   #1, INSB						      ;

				0000G  CF  9F 008DA 	    PUSHAB  LN_DDSC						      ; 2417

		  0000G  CF	       01  FB 008DE 	    CALLS   #1, INSLN						      ;

				0000G  CF  9F 008E3 	    PUSHAB  AUX1_DDSC						      ; 2418

				       01  DD 008E7 	    PUSHL   #1							      ;

		  0000G  CF	       02  FB 008E9 	    CALLS   #2, INS_CTRS					      ;

      0C AE42	         5A	       53  A3 008EE 	    SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ; 2419

				       52  D6 008F4 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 008F6 	    MOVL    P_OM, SAVED_P_OM					      ;

				0000'  CF  D7 008F9 	    DECL    MSG_OWED						      ; 2423

				       B4  11 008FD 	    BRB     7$							      ; 2410

				       54  DD 008FF 8$:     PUSHL   R4							      ; 2433

				0000G  CF  9F 00901 	    PUSHAB  AUX0_DDSC						      ;

				       7E  D4 00905 	    CLRL    -(SP)						      ;

		  0000G  CF	       03  FB 00907 	    CALLS   #3, EXTLN						      ;

		         7E	       03  7D 0090C 	    MOVQ    #3, -(SP)						      ; 2436

		         66	       02  FB 0090F 	    CALLS   #2, MESSAGE						      ;

				       01  DD 00912 	    PUSHL   #1							      ; 2438

		         68	       01  FB 00914 	    CALLS   #1, INSB						      ;

				       64  DD 00917 	    PUSHL   NAMES_IN_LIST					      ; 2439

		  0000G  CF	       01  FB 00919 	    CALLS   #1, INSW						      ;

      0C AE42	         5A	       53  A3 0091E 	    SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ;

				       52  D6 00924 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 00926 	    MOVL    P_OM, SAVED_P_OM					      ;

		  0000'  CF	       64  D0 00929 	    MOVL    NAMES_IN_LIST, MSG_OWED				      ; 2443

				0000G  CF  9F 0092E 	    PUSHAB  AUX0_DDSC						      ; 2445

				       01  DD 00932 	    PUSHL   #1							      ;

		         66	       02  FB 00934 	    CALLS   #2, MESSAGE						      ;

				0000'  CF  D5 00937 9$:     TSTL    MSG_OWED						      ; 2453

				       61  1B 0093B 	    BLEQU   11$							      ;

				0000G  CF  9F 0093D 	    PUSHAB  LN_DDSC						      ; 2456

				       04  DD 00941 	    PUSHL   #4							      ;

		  0000G  CF	       02  FB 00943 	    CALLS   #2, EXT_USTR					      ;

				       7E  D4 00948 	    CLRL    -(SP)						      ; 2457

				0000G  CF  9F 0094A 	    PUSHAB  LN_DDSC						      ;

				  0C   AE  9F 0094E 	    PUSHAB  STATE						      ;

				       02  DD 00951 	    PUSHL   #2							      ;

		         65	       04  FB 00953 	    CALLS   #4, ACP						      ;

				       57  DD 00956 	    PUSHL   R7							      ; 2459

				0000G  CF  9F 00958 	    PUSHAB  LN_DDSC						      ;

		         7E	       14  7D 0095C 	    MOVQ    #20, -(SP)						      ;

		         65	       04  FB 0095F 	    CALLS   #4, ACP						      ;

		         7E	0000G  CF  9A 00962 	    MOVZBL  OPTION, -(SP)					      ; 2461

		         68	       01  FB 00967 	    CALLS   #1, INSB						      ;

				0000G  CF  9F 0096A 	    PUSHAB  LN_DDSC						      ; 2462

		  0000G  CF	       01  FB 0096E 	    CALLS   #1, INSLN						      ;

				  04   AE  DD 00973 	    PUSHL   STATE						      ; 2463

		         68	       01  FB 00976 	    CALLS   #1, INSB						      ;

				       7E  D4 00979 	    CLRL    -(SP)						      ; 2464

		         68	       01  FB 0097B 	    CALLS   #1, INSB						      ;

				       7E  D4 0097E 	    CLRL    -(SP)						      ; 2466

		         68	       01  FB 00980 	    CALLS   #1, INSB						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 52-4

; Digital Equipment Corporation

;

				       57  DD 00983 	    PUSHL   R7							      ; 2468

		  0000G  CF	       01  FB 00985 	    CALLS   #1, INSSTR						      ;

      0C AE42	         5A	       53  A3 0098A 	    SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ;

				       52  D6 00990 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 00992 	    MOVL    P_OM, SAVED_P_OM					      ;

				0000'  CF  D7 00995 	    DECL    MSG_OWED						      ; 2473

				       9C  11 00999 	    BRB     9$							      ; 2453

		         69	       02  CE 0099B 10$:    MNEGL   #2, (MCB_PTR)					      ; 2482

				     008C  31 0099E 11$:    BRW     14$							      ; 2287

		         7E	       03  7D 009A1 12$:    MOVQ    #3, -(SP)						      ; 2492

		         66	       02  FB 009A4 	    CALLS   #2, MESSAGE						      ;

				0000G  CF  9F 009A7 	    PUSHAB  AUX0_DDSC						      ; 2494

				       7E  D4 009AB 	    CLRL    -(SP)						      ;

				       54  DD 009AD 	    PUSHL   R4							      ;

				       0E  DD 009AF 	    PUSHL   #14							      ;

		         65	       04  FB 009B1 	    CALLS   #4, ACP						      ;

				       01  DD 009B4 	    PUSHL   #1							      ; 2497

		         68	       01  FB 009B6 	    CALLS   #1, INSB						      ;

				       64  DD 009B9 	    PUSHL   NAMES_IN_LIST					      ; 2498

		  0000G  CF	       01  FB 009BB 	    CALLS   #1, INSW						      ;

      0C AE42	         5A	       53  A3 009C0 	    SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ;

				       52  D6 009C6 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 009C8 	    MOVL    P_OM, SAVED_P_OM					      ;

		  0000'  CF	       64  D0 009CB 	    MOVL    NAMES_IN_LIST, MSG_OWED				      ; 2503

				0000G  CF  9F 009D0 	    PUSHAB  AUX0_DDSC						      ; 2505

				       01  DD 009D4 	    PUSHL   #1							      ;

		         66	       02  FB 009D6 	    CALLS   #2, MESSAGE						      ;

				0000'  CF  D5 009D9 13$:    TSTL    MSG_OWED						      ; 2512

				       4E  1B 009DD 	    BLEQU   14$							      ;

		         7E	0000G  CF  9A 009DF 	    MOVZBL  OPTION, -(SP)					      ; 2515

		         68	       01  FB 009E4 	    CALLS   #1, INSB						      ;

				       7E  D4 009E7 	    CLRL    -(SP)						      ; 2516

				       57  DD 009E9 	    PUSHL   R7							      ;

				       02  DD 009EB 	    PUSHL   #2							      ;

		  0000G  CF	       03  FB 009ED 	    CALLS   #3, EXTND						      ;

				0000G  CF  9F 009F2 	    PUSHAB  AUX1_DDSC						      ; 2519

				       57  DD 009F6 	    PUSHL   R7							      ;

				  08   AE  9F 009F8 	    PUSHAB  LINKS						      ;

				       09  DD 009FB 	    PUSHL   #9							      ;

		         65	       04  FB 009FD 	    CALLS   #4, ACP						      ;

				       57  DD 00A00 	    PUSHL   R7							      ; 2523

		  0000G  CF	       01  FB 00A02 	    CALLS   #1, INSSTR						      ;

				       01  DD 00A07 	    PUSHL   #1							      ; 2524

		         68	       01  FB 00A09 	    CALLS   #1, INSB						      ;

				       6E  DD 00A0C 	    PUSHL   LINKS						      ; 2525

		  0000G  CF	       01  FB 00A0E 	    CALLS   #1, INSW						      ;

				0000G  CF  9F 00A13 	    PUSHAB  AUX1_DDSC						      ; 2526

		  0000G  CF	       01  FB 00A17 	    CALLS   #1, INSSTR						      ;

      0C AE42	         5A	       53  A3 00A1C 	    SUBW3   SAVED_P_OM, P_OM, MSG_SIZE[MSG_INDEX]		      ;

				       52  D6 00A22 	    INCL    MSG_INDEX						      ;

		         53	       5A  D0 00A24 	    MOVL    P_OM, SAVED_P_OM					      ;

				0000'  CF  D7 00A27 	    DECL    MSG_OWED						      ; 2530

				       AC  11 00A2B 	    BRB     13$							      ; 2512

		         7E	       06  7D 00A2D 14$:    MOVQ    #6, -(SP)						      ; 2553

		         66	       02  FB 00A30 	    CALLS   #2, MESSAGE						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 52-5

; Digital Equipment Corporation

;

		         53	       01  CE 00A33 	    MNEGL   #1, I						      ; 2555

				       1A  11 00A36 	    BRB     16$							      ;

		  0000G  CF	  0C AE43  3C 00A38 15$:    MOVZWL  MSG_SIZE[I], LARGE_DDSC				      ; 2559

				0000G  CF  9F 00A3F 	    PUSHAB  LARGE_DDSC						      ; 2560

				       09  DD 00A43 	    PUSHL   #9							      ;

		         66	       02  FB 00A45 	    CALLS   #2, MESSAGE						      ;

		         50	  0C AE43  3C 00A48 	    MOVZWL  MSG_SIZE[I], R0					      ; 2562

		  0000G  CF	       50  C0 00A4D 	    ADDL2   R0, LARGE_DDSC+4					      ;

	   E2	         53	       52  F2 00A52 16$:    AOBLSS  MSG_INDEX, I, 15$					      ; 2555

					   04 00A56 	    RET     							      ; 2179



; Routine Size:  775 bytes





;	2566	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 53

; Digital Equipment Corporation

;

;	2567	GLOBAL ROUTINE READ_INFO_ERR : NOVALUE LNKMSG =

;	2568	

;	2569	!++

;	2570	! FUNCTIONAL DESCRIPTION:

;	2571	!

;	2572	!	This routine receives control whenever an error condition 

;	2573	!	occurs in the READ_INFO_ERR routine.  If no reply has yet been

;	2574	!	made to the command node, then a response message indicating

;	2575	!	the error condition is constructed and sent to the host.  This

;	2576	!	message must contain a zero in its second and third bytes to

;	2577	!	indicate that no data messages are to follow.  If a reply has

;	2578	!	already been sent, then there has been a commitment to send a

;	2579	!	number of data messages.  Since this will no longer be possible,

;	2580	!	and since the NICE protocol provides no escape, a flag is set to

;	2581	!	request that the link to the command node be broken.

;	2582	!

;	2583	! FORMAL PARAMETERS:

;	2584	!

;	2585	!	NONE

;	2586	!

;	2587	! IMPLICIT INPUTS:

;	2588	!

;	2589	!	R9, R10, R11  used as linkage describing the Message Control

;	2590	!		    Block, the input msg pointer, and output msg pointer

;	2591	!

;	2592	! IMPLICIT OUTPUTS:

;	2593	!

;	2594	!	same as the implicit inputs

;	2595	!

;	2596	! ROUTINE VALUE:

;	2597	! COMPLETION CODES:

;	2598	!

;	2599	!	REPLY_CODE (i.e., R9) returns the standard

;	2600	!	NICE mapped status codes defined in NICDAT.B32.

;	2601	!

;	2602	!	The routine itself returns no value.

;	2603	!

;	2604	! SIDE EFFECTS:

;	2605	!

;	2606	!	NONE

;	2607	!

;	2608	!--

;	2609	

;	2610	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 54

; Digital Equipment Corporation

;

;	2611	BEGIN

;	2612	LOCAL	TMP1, TMP2 ;

;	2613	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	2614	

;	2615	MACRO	REPLY_CODE = MCB_PTR [MCB$L_REPLYCODE] %,

;	2616		ERROR_ON   = MCB_PTR [MCB$B_ERROR_ON]  % ;

;	2617	

;	2618	!+

;	2619	! The error codes stored in REPLY_CODE are double their NICE

;	2620	! values so that the low bit is zero for error conditions.

;	2621	! Since this routine is only called to handle error conditions,

;	2622	! the value of REPLY_CODE should be halved.  This value is saved

;	2623	! locally and the value of 'REPLY_CODE' is set to 'success' to

;	2624	! avoid false alarm error conditions to be detected by the 

;	2625	! called subroutines.  Also the error handler should be disabled

;	2626	! so that it will not be called again if another error condition

;	2627	! occurs.

;	2628	!

;	2629	! The value of REPLY_CODE does not need to be restored since

;	2630	! its value will have already been reported to the command node,

;	2631	! and because restoring it may trigger the error handler upon

;	2632	! routine exit.  The state of the error handler should be

;	2633	! restored, however, to avoid side effects.

;	2634	!-

;	2635	   TMP1 =  ERROR_ON ;	    ERROR_ON =	 FALSE ;

;	2636	   TMP2 = .REPLY_CODE/2 ;   REPLY_CODE = NIC$_SUCCESS ;

;	2637	

;	2638	   MCB_PTR [MCB$B_REQDISCON] = TRUE ;	! this will be cleared

;	2639						! if all is ok

;	2640	!+

;	2641	! Build and send the reply message only if no reply message has

;	2642	! already been sent.  If there has not yet been a reply to the

;	2643	! command node, then no data messages were promised.  Otherwise,

;	2644	! there is no error reporting possible and the link must be 

;	2645	! disconnected.

;	2646	!-

;	2647	   IF  .MCB_PTR [MCB$W_REPLIES] EQL 0

;	2648	   THEN

;	2649	      BEGIN

;	2650	      MESSAGE (CLEAR_ALL, 0) ;		! close any messages 

;	2651						! currently open

;	2652	      IF MESSAGE (OPEN_O, CMD_OMSG_DDSC)! open output message

;	2653	      THEN

;	2654		  BEGIN

;	2655		  INSB (.TMP2) ;		! insert status byte

;	2656		  INSW  (0) ;			! Insert count of data

;	2657						! messages to follow.

;	2658		  IF MESSAGE  (SEND_O, 0)	! send the reponse msg

;	2659		  THEN

;	2660		      MCB_PTR [MCB$B_REQDISCON] = FALSE ;

;	2661		  END ;

;	2662	      END ;

;	2663	

;	2664	ERROR_ON = .TMP1 ;

;	2665	END ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 54-1

; Digital Equipment Corporation

;











					 010C 00A57 	    .ENTRY  READ_INFO_ERR, Save R2,R3,R8			      ; 2567

		         58	0000G  CF  9E 00A59 	    MOVAB   MESSAGE, R8						      ;

		         50	  41   A9  9E 00A5E 	    MOVAB   65(R9), R0						      ; 2635

		         53	       50  D0 00A62 	    MOVL    R0, TMP1						      ;

				       60  94 00A65 	    CLRB    (R0)						      ;

	   52	         69	       02  C7 00A67 	    DIVL3   #2, (MCB_PTR), TMP2					      ; 2636

		         69	       01  D0 00A6B 	    MOVL    #1, (MCB_PTR)					      ;

		    40   A9	       01  90 00A6E 	    MOVB    #1, 64(MCB_PTR)					      ; 2638

				  42   A9  B5 00A72 	    TSTW    66(MCB_PTR)						      ; 2647

				       2C  12 00A75 	    BNEQ    1$							      ;

		         7E	       0A  7D 00A77 	    MOVQ    #10, -(SP)						      ; 2650

		         68	       02  FB 00A7A 	    CALLS   #2, MESSAGE						      ;

				0000G  CF  9F 00A7D 	    PUSHAB  CMD_OMSG_DDSC					      ; 2652

				       05  DD 00A81 	    PUSHL   #5							      ;

		         68	       02  FB 00A83 	    CALLS   #2, MESSAGE						      ;

		         1A	       50  E9 00A86 	    BLBC    R0, 1$						      ;

				       52  DD 00A89 	    PUSHL   TMP2						      ; 2655

		  0000G  CF	       01  FB 00A8B 	    CALLS   #1, INSB						      ;

				       7E  D4 00A90 	    CLRL    -(SP)						      ; 2656

		  0000G  CF	       01  FB 00A92 	    CALLS   #1, INSW						      ;

		         7E	       07  7D 00A97 	    MOVQ    #7, -(SP)						      ; 2658

		         68	       02  FB 00A9A 	    CALLS   #2, MESSAGE						      ;

		         03	       50  E9 00A9D 	    BLBC    R0, 1$						      ;

				  40   A9  94 00AA0 	    CLRB    64(MCB_PTR)						      ; 2660

		    41   A9	       53  90 00AA3 1$:     MOVB    TMP1, 65(MCB_PTR)					      ; 2664

					   04 00AA7 	    RET     							      ; 2567



; Routine Size:  81 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 55

; Digital Equipment Corporation

;

;	2666	ROUTINE  ZERO_CTRS  : NOVALUE LNKMSG =

;	2667	

;	2668	!++

;	2669	! FUNCTIONAL DESCRIPTION:

;	2670	!

;	2671	!

;	2672	! FORMAL PARAMETERS:

;	2673	!

;	2674	!	NONE

;	2675	!

;	2676	! IMPLICIT INPUTS:

;	2677	!

;	2678	!	R9	- Contains the address of the MCB

;	2679	!	R10	- Output message pointer used by the routines in

;	2680	!		  module NICMSG.

;	2681	!	R11	- Input message pointer used by the routines in

;	2682	!		  module NICMSG.

;	2683	!

;	2684	!	Both an input and output message are assumed to be open

;	2685	!	and ready for processing by the routines in NICMSG.B32.

;	2686	!

;	2687	!	The FUNCTION and OPTION fields of the input message are assumed

;	2688	!	to have been already parsed.

;	2689	!

;	2690	!	OPTION is assumed to contain the appropriate option code.

;	2691	!

;	2692	!	It is assumed that the MCB contains pointer to an error handler.

;	2693	!

;	2694	! IMPLICIT OUTPUTS:

;	2695	!

;	2696	!	R10, and R11 are updated.

;	2697	!

;	2698	! ROUTINE VALUE:

;	2699	! COMPLETION CODES:

;	2700	!

;	2701	!	REPLY_CODE (i.e., R9) returns the standard

;	2702	!	NICE mapped status codes defined in NICDAT.B32.

;	2703	!

;	2704	!	The routine itself returns no value.

;	2705	!

;	2706	! SIDE EFFECTS:

;	2707	!

;	2708	!	NONE

;	2709	!

;	2710	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 56

; Digital Equipment Corporation

;

;	2711	BEGIN

;	2712	

;	2713	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	2714	

;	2715	MACRO	REPLY_CODE = MCB_PTR [MCB$L_REPLYCODE] % ;

;	2716	

;	2717	MCB_PTR [MCB$B_ERROR_ON] = TRUE ;  ! ENABLE THE ERROR HANDLER

;	2718	

;	2719	SELECTONE .OPTION OF		! Dispatch according to option

;	2720	  SET

;	2721	

;	2722			!***********************************************

;	2723			!

;	2724	   [0] :	! 	ZERO LOCAL NODE COUNTERS

;	2725			!

;	2726			!***********************************************

;	2727	    BEGIN

;	2728	    MESSAGE (CHECK_I, 0) ;		! Check to see if the

;	2729						! input msg has been

;	2730						! comletely parsed

;	2731	    ACP	  (CLR_LOCAL_CTRS,0,0,0) ;	! Zero the local node ctrs

;	2732	    END ;				! success msg will be built

;	2733						! and sent by main routine

;	2734	

;	2735	

;	2736			!***********************************************

;	2737			!

;	2738	   [1] :	! 	REMOTE NODE COUNTERS 

;	2739			!

;	2740			!***********************************************

;	2741	

;	2742	    REPLY_CODE = NIC$_ILL_OPT ;

;	2743	

;	2744	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 57

; Digital Equipment Corporation

;

;	2745			!***********************************************

;	2746			!

;	2747	  [2] :		!	 ZERO LINE COUNTERS

;	2748			!

;	2749			!***********************************************

;	2750	

;	2751	    BEGIN

;	2752	    EXTLN  (Z_ERROR, LN_DDSC,	! Get line name, 'all_known' is

;	2753			        0 ) ;	! not allowed

;	2754	    MESSAGE (CHECK_I, 0) ;	! Check to see if the input msg

;	2755					! has been comletely parsed

;	2756	    ACP  (CLR_LINE_CTRS, 0,	! Clear counters for 

;	2757	    	     LN_DDSC, 0) ;	!  the line

;	2758					! The main routine is responsible 

;	2759	    END ;			! for sending the reply message

;	2760	

;	2761			!**********************************************

;	2762			!

;	2763	   [OTHERWISE] :! 	OTHER OPTIONS

;	2764			!

;	2765			!***********************************************

;	2766	

;	2767			 REPLY_CODE = NIC$_ILL_OPT ;

;	2768	

;	2769	  TES ;

;	2770	END ;











					 0004 00AA8 ZERO_CTRS:

							    .WORD   Save R2						      ; 2666

		    41   A9	       01  90 00AAA 	    MOVB    #1, 65(MCB_PTR)					      ; 2717

		         52	0000G  CF  9A 00AAE 	    MOVZBL  OPTION, R2						      ; 2719

				       0F  12 00AB3 	    BNEQ    1$							      ;

		         7E	       03  7D 00AB5 	    MOVQ    #3, -(SP)						      ; 2728

		  0000G  CF	       02  FB 00AB8 	    CALLS   #2, MESSAGE						      ;

				       7E  7C 00ABD 	    CLRQ    -(SP)						      ; 2731

		         7E	       0D  7D 00ABF 	    MOVQ    #13, -(SP)						      ;

				       28  11 00AC2 	    BRB     2$							      ;

		         01	       52  91 00AC4 1$:     CMPB    R2, #1						      ; 2719

				       29  13 00AC7 	    BEQL    3$							      ;

		         02	       52  91 00AC9 	    CMPB    R2, #2						      ;

				       24  12 00ACC 	    BNEQ    3$							      ;

				       7E  D4 00ACE 	    CLRL    -(SP)						      ; 2752

				0000G  CF  9F 00AD0 	    PUSHAB  LN_DDSC						      ;

				       02  DD 00AD4 	    PUSHL   #2							      ;

		  0000G  CF	       03  FB 00AD6 	    CALLS   #3, EXTLN						      ;

		         7E	       03  7D 00ADB 	    MOVQ    #3, -(SP)						      ; 2754

		  0000G  CF	       02  FB 00ADE 	    CALLS   #2, MESSAGE						      ;

				       7E  D4 00AE3 	    CLRL    -(SP)						      ; 2756

				0000G  CF  9F 00AE5 	    PUSHAB  LN_DDSC						      ;

		         7E	       04  7D 00AE9 	    MOVQ    #4, -(SP)						      ;

		  0000G  CF	       04  FB 00AEC 2$:     CALLS   #4, ACP						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 57-1

; Digital Equipment Corporation

;

					   04 00AF1 	    RET     							      ; 2719

		         69	       02  CE 00AF2 3$:     MNEGL   #2, (MCB_PTR)					      ; 2767

					   04 00AF5 	    RET     							      ; 2666



; Routine Size:  78 bytes





;	2771	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 58

; Digital Equipment Corporation

;

;	2772	GLOBAL

;	2773	ROUTINE  LOOP_BACK  : NOVALUE LNKMSG =

;	2774	

;	2775	!++

;	2776	! FUNCTIONAL DESCRIPTION:

;	2777	!

;	2778	!

;	2779	! FORMAL PARAMETERS

;	2780	!

;	2781	! 	NONE

;	2782	!

;	2783	! IMPLICIT INPUTS:

;	2784	!

;	2785	!	R9	- Contains the address of the MCB

;	2786	!	R10	- Output message pointer used by the routines in

;	2787	!		  module NICMSG.

;	2788	!	R11	- Input message pointer used by the routines in

;	2789	!		  module NICMSG.

;	2790	!

;	2791	!	Both an input and output message are assumed to be open

;	2792	!	and ready for processing by the routines in NICMSG.B32.

;	2793	!

;	2794	!	The FUNCTION and OPTION fields of the input message are assumed

;	2795	!	to have been already parsed.

;	2796	!

;	2797	!	OPTION is assumed to contain the appropriate option code.

;	2798	!

;	2799	!	It is assumed that the MCB contains pointer to an error handler.

;	2800	!

;	2801	! IMPLICIT OUTPUTS:

;	2802	!

;	2803	!	R10, and R11 are updated.

;	2804	!

;	2805	! ROUTINE VALUE:

;	2806	! COMPLETION CODES:

;	2807	!

;	2808	!	REPLY_CODE (i.e., R9) returns the standard

;	2809	!	NICE mapped status codes defined in NICDAT.B32.

;	2810	!

;	2811	!	The routine itself returns no value.

;	2812	!

;	2813	! SIDE EFFECTS:

;	2814	!

;	2815	!	NONE

;	2816	!

;	2817	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 59

; Digital Equipment Corporation

;

;	2818	BEGIN

;	2819	

;	2820	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	2821	

;	2822	MACRO	REPLY_CODE = MCB_PTR [MCB$L_REPLYCODE] % ;

;	2823	

;	2824	MCB_PTR [MCB$B_ERROR_ON] = TRUE ;  ! Enable the error handler

;	2825	

;	2826	

;	2827	IF .OPTION  EQL  0		! Zero is the only legal option

;	2828	THEN BEGIN

;	2829	     INSB  (NIC$_SUCCESS) ;	! Insert 'success'

;	2830	     INS_REST () ;		! followed by remainder

;	2831	

;	2832		! Now close the output message, send it to the 

;	2833		! command node

;	2834	

;	2835	      MESSAGE (SEND_O, 0) ;

;	2836	

;	2837	     END

;	2838	

;	2839	ELSE REPLY_CODE = NIC$_ILL_OPT ;

;	2840	

;	2841	RETURN ;		! If par_rsp failed, or if no message

;	2842	END ;			! was sent due to an illegal option,











					 0000 00AF6 	    .ENTRY  LOOP_BACK, Save nothing				      ; 2773

		    41   A9	       01  90 00AF8 	    MOVB    #1, 65(MCB_PTR)					      ; 2824

				0000G  CF  95 00AFC 	    TSTB    OPTION						      ; 2827

				       15  12 00B00 	    BNEQ    1$							      ;

				       01  DD 00B02 	    PUSHL   #1							      ; 2829

		  0000G  CF	       01  FB 00B04 	    CALLS   #1, INSB						      ;

		  0000G  CF	       00  FB 00B09 	    CALLS   #0, INS_REST					      ; 2830

		         7E	       07  7D 00B0E 	    MOVQ    #7, -(SP)						      ; 2835

		  0000G  CF	       02  FB 00B11 	    CALLS   #2, MESSAGE						      ;

					   04 00B16 	    RET     							      ; 2827

		         69	       02  CE 00B17 1$:     MNEGL   #2, (MCB_PTR)					      ; 2839

					   04 00B1A 	    RET     							      ; 2773



; Routine Size:  37 bytes





;	2843				! Then the main routine will build and

;	2844				! send the appropriate message from the 

;	2845				! infomation found in 'reply_code'.

;	2846	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 60

; Digital Equipment Corporation

;

;	2847	GLOBAL

;	2848	ROUTINE  TEST  : NOVALUE LNKMSG =

;	2849	

;	2850	!++

;	2851	! FUNCTIONAL DESCRIPTION:

;	2852	!

;	2853	!

;	2854	! FORMAL PARAMETERS:

;	2855	!

;	2856	!	NONE

;	2857	!

;	2858	! IMPLICIT INPUTS:

;	2859	!

;	2860	!	R9	- Contains the address of the MCB

;	2861	!	R10	- Output message pointer used by the routines in

;	2862	!		  module NICMSG.

;	2863	!	R11	- Input message pointer used by the routines in

;	2864	!		  module NICMSG.

;	2865	!

;	2866	!	Both an input and output message are assumed to be open

;	2867	!	and ready for processing by the routines in NICMSG.B32.

;	2868	!

;	2869	!	The FUNCTION and OPTION fields of the input message are assumed

;	2870	!	to have been already parsed.

;	2871	!

;	2872	!	OPTION is assumed to contain the appropriate option code.

;	2873	!

;	2874	!	It is assumed that the MCB contains pointer to an error handler.

;	2875	!

;	2876	! IMPLICIT OUTPUTS:

;	2877	!

;	2878	!	R10, and R11 are updated.

;	2879	!

;	2880	! ROUTINE VALUE:

;	2881	! COMPLETION CODES:

;	2882	!

;	2883	!	REPLY_CODE (i.e., R9) returns the standard

;	2884	!	NICE mapped status codes defined in NICDAT.B32.

;	2885	!

;	2886	!	The routine itself returns no value.

;	2887	!

;	2888	! SIDE EFFECTS:

;	2889	!

;	2890	!	NONE

;	2891	!

;	2892	!--



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 61

; Digital Equipment Corporation

;

;	2893	BEGIN

;	2894	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	2895	

;	2896	MACRO	REPLY_CODE = MCB_PTR [MCB$L_REPLYCODE] % ;

;	2897	

;	2898	LOCAL	TMP ;

;	2899	LABEL	ALPHA ;

;	2900	

;	2901	MCB_PTR [MCB$B_ERROR_ON] = TRUE ; ! Enable the error handler

;	2902	

;	2903	ALPHA : BEGIN

;	2904	  SELECTONE  .OPTION OF		! Dispatch by option

;	2905	  SET

;	2906			!***********************************************

;	2907			!

;	2908	   [0] :	!		NODE LOOPBACK

;	2909			!

;	2910			!***********************************************

;	2911	

;	2912	    BEGIN

;	2913	    CNT_2 = 0 ;				! Preset to zero in case the

;	2914						! parse fails.

;	2915	    EXTND	(Z_ERROR, ND_DDSC, 0) ;	! Get node name

;	2916	    EXTW	(CNT_2) ;		! Number of times to loop.

;	2917	    EXTB	(DATA_TYPE) ;		! 1'S, 0'S, or mixed

;	2918	    EXTW	(DATA_SIZE) ;		! No. of bytes in block

;	2919	

;	2920	    IF .DATA_SIZE EQL 0  OR  .DATA_SIZE GTRU 255

;	2921	    THEN

;	2922		LEAVE ALPHA WITH (REPLY_CODE = NIC$_ILLPARVAL) ;

;	2923	

;	2924	    MESSAGE	(CHECK_I, 0) ;		! Check to see if the

;	2925						! input msg has been

;	2926						! completely parsed

;	2927	    LINK	(CHANNEL, ND_DDSC) ;	! Link to nd_ddsc node,

;	2928				 		! Image = 'NICE'

;	2929	    MESSAGE	(CLOSE_O, 0) ;		! Close current

;	2930						! output message

;	2931	    MESSAGE	(OPEN_O, AUX0_DDSC) ;	! Open buffer in which

;	2932						! to build loopback msg

;	2933	    INSB	(5) ;			! Loopback fct code

;	2934	    INSB	(0) ;			! Option must be zero

;	2935	    INSFILL	(.DATA_TYPE, .DATA_SIZE) ; ! Insert data to loop

;	2936	    MESSAGE	(CLOSE_O, 0) ;		! Close loop msg

;	2937	

;	2938	    LOOP_MSG	() ;			! Loop the message

;	2939						! .CNT_2 times, checking

;	2940						!  for a proper reply.

;	2941	    END ;

;	2942	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 62

; Digital Equipment Corporation

;

;	2943	

;	2944			!***********************************************

;	2945			!

;	2946	    [OTHERWISE]:!		UNSUPPORTED OPTIONS

;	2947			!

;	2948			!***********************************************

;	2949	

;	2950			    REPLY_CODE = NIC$_ILL_OPT ;

;	2951	  TES ;

;	2952	

;	2953	 END ;	! end ALPHA

;	2954	

;	2955	END_TEST () ;		! Deassign channel, send reply message

;	2956	

;	2957	RETURN (.REPLY_CODE) ;

;	2958	END ;











					 0184 00B1B 	    .ENTRY  TEST, Save R2,R7,R8					      ; 2848

		         57	0000G  CF  9E 00B1D 	    MOVAB   DATA_SIZE, R7					      ;

		         58	0000G  CF  9E 00B22 	    MOVAB   MESSAGE, R8						      ;

		    41   A9	       01  90 00B27 	    MOVB    #1, 65(MCB_PTR)					      ; 2901

		         52	0000G  CF  9A 00B2B 	    MOVZBL  OPTION, R2						      ; 2904

				       03  13 00B30 	    BEQL    1$							      ;

				     0087  31 00B32 	    BRW     4$							      ;

				0000G  CF  B4 00B35 1$:     CLRW    CNT_2						      ; 2913

				       7E  D4 00B39 	    CLRL    -(SP)						      ; 2915

				0000G  CF  9F 00B3B 	    PUSHAB  ND_DDSC						      ;

				       02  DD 00B3F 	    PUSHL   #2							      ;

		  0000G  CF	       03  FB 00B41 	    CALLS   #3, EXTND						      ;

				0000G  CF  9F 00B46 	    PUSHAB  CNT_2						      ; 2916

		  0000G  CF	       01  FB 00B4A 	    CALLS   #1, EXTW						      ;

				0000G  CF  9F 00B4F 	    PUSHAB  DATA_TYPE						      ; 2917

		  0000G  CF	       01  FB 00B53 	    CALLS   #1, EXTB						      ;

				       57  DD 00B58 	    PUSHL   R7							      ; 2918

		  0000G  CF	       01  FB 00B5A 	    CALLS   #1, EXTW						      ;

		         50	       67  3C 00B5F 	    MOVZWL  DATA_SIZE, R0					      ; 2920

				       09  13 00B62 	    BEQL    2$							      ;

	      000000FF   8F	       50  D1 00B64 	    CMPL    R0, #255						      ;

				       05  1B 00B6B 	    BLEQU   3$							      ;

		         69	       20  CE 00B6D 2$:     MNEGL   #32, (MCB_PTR)					      ; 2922

				       4D  11 00B70 	    BRB     5$							      ;

		         7E	       03  7D 00B72 3$:     MOVQ    #3, -(SP)						      ; 2924

		         68	       02  FB 00B75 	    CALLS   #2, MESSAGE						      ;

				0000G  CF  9F 00B78 	    PUSHAB  ND_DDSC						      ; 2927

				0000G  CF  9F 00B7C 	    PUSHAB  CHANNEL						      ;

		  0000G  CF	       02  FB 00B80 	    CALLS   #2, LINK						      ;

		         7E	       06  7D 00B85 	    MOVQ    #6, -(SP)						      ; 2929

		         68	       02  FB 00B88 	    CALLS   #2, MESSAGE						      ;

				0000G  CF  9F 00B8B 	    PUSHAB  AUX0_DDSC						      ; 2931

				       05  DD 00B8F 	    PUSHL   #5							      ;

		         68	       02  FB 00B91 	    CALLS   #2, MESSAGE						      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 62-1

; Digital Equipment Corporation

;

				       05  DD 00B94 	    PUSHL   #5							      ; 2933

		  0000G  CF	       01  FB 00B96 	    CALLS   #1, INSB						      ;

				       7E  D4 00B9B 	    CLRL    -(SP)						      ; 2934

		  0000G  CF	       01  FB 00B9D 	    CALLS   #1, INSB						      ;

		         7E	       67  3C 00BA2 	    MOVZWL  DATA_SIZE, -(SP)					      ; 2935

		         7E	0000G  CF  9A 00BA5 	    MOVZBL  DATA_TYPE, -(SP)					      ;

		  0000G  CF	       02  FB 00BAA 	    CALLS   #2, INSFILL						      ;

		         7E	       06  7D 00BAF 	    MOVQ    #6, -(SP)						      ; 2936

		         68	       02  FB 00BB2 	    CALLS   #2, MESSAGE						      ;

		  0000V  CF	       00  FB 00BB5 	    CALLS   #0, LOOP_MSG					      ; 2938

				       03  11 00BBA 	    BRB     5$							      ; 2904

		         69	       02  CE 00BBC 4$:     MNEGL   #2, (MCB_PTR)					      ; 2950

		  0000V  CF	       00  FB 00BBF 5$:     CALLS   #0, END_TEST					      ; 2955

					   04 00BC4 	    RET     							      ; 2848



; Routine Size:  170 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 63

; Digital Equipment Corporation

;

;	2959	GLOBAL ROUTINE END_TEST : NOVALUE LNKMSG =

;	2960	

;	2961	!++

;	2962	! FUNCTIONAL DESCRIPTION:

;	2963	!

;	2964	!

;	2965	! FORMAL PARAMETERS:

;	2966	!

;	2967	!	NONE

;	2968	!

;	2969	! IMPLICIT INPUTS:

;	2970	!

;	2971	!	R9, R10, R11  used as linkage describing the REPLY_CODE,

;	2972	!		input msg pointer, and output msg pointer

;	2973	!

;	2974	! IMPLICIT OUTPUTS:

;	2975	!

;	2976	!	same as the implicit inputs

;	2977	!

;	2978	! ROUTINE VALUE:

;	2979	! COMPLETION CODES:

;	2980	!

;	2981	!	REPLY_CODE (i.e., R9) returns the standard

;	2982	!	NICE mapped status codes defined in NICDAT.B32.

;	2983	!

;	2984	!	The routine itself returns no value.

;	2985	!

;	2986	! SIDE EFFECTS:

;	2987	!

;	2988	!	NONE

;	2989	!

;	2990	!--

;	2991	

;	2992	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 64

; Digital Equipment Corporation

;

;	2993	BEGIN

;	2994	LOCAL	TMP1, TMP2 ;

;	2995	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	2996	

;	2997	MACRO	REPLY_CODE = MCB_PTR [MCB$L_REPLYCODE] %,

;	2998		ERROR_ON   = MCB_PTR [MCB$B_ERROR_ON]  % ;

;	2999	

;	3000	$DASSGN	(CHAN = .CHANNEL) ;	! kill channel to looped node

;	3001					! everything here should succeed

;	3002	!+

;	3003	! The "test" function requires a special format message to be

;	3004	! returned to the command node and this routine is used to 

;	3005	! return the reply message whether or not the loop test was

;	3006	! successful.

;	3007	!

;	3008	! The value of REPLY_CODE does not need to be restored since

;	3009	! its value will have already been reported to the command node,

;	3010	! and because restoring it may trigger the error handler upon

;	3011	! routine exit.  The state of the error handler should be

;	3012	! restored, however, to avoid side effects.

;	3013	!-

;	3014	   TMP1 =  ERROR_ON ;	    ERROR_ON =	 FALSE ;

;	3015	

;	3016	   IF  .REPLY_CODE			! The internal values of all

;	3017	   THEN					!  non-success "reply_codes"

;	3018		 TMP2 = NIC$_SUCCESS		!  are double their NICE 

;	3019	   ELSE 				!  protocol counterparts.

;	3020		TMP2 = .REPLY_CODE/2 ;

;	3021	

;	3022	   REPLY_CODE = NIC$_SUCCESS ;

;	3023	

;	3024	   MCB_PTR [MCB$B_REQDISCON] = TRUE ;	! this will be cleared

;	3025						! if all is ok

;	3026	!+

;	3027	! Build and send the reply message

;	3028	!-

;	3029	      MESSAGE (CLEAR_ALL, 0) ;		! close any messages 

;	3030						! currently open

;	3031	      IF MESSAGE (OPEN_O, CMD_OMSG_DDSC)! open output message

;	3032	      THEN

;	3033		  BEGIN

;	3034		  INSB  (.TMP2) ;		! insert status byte

;	3035		  INSW  (.CNT_2) ;		! Insert count of 

;	3036						! messages not looped

;	3037		  IF MESSAGE  (SEND_O, 0)	! send the reponse msg

;	3038		  THEN

;	3039		      MCB_PTR [MCB$B_REQDISCON] = FALSE ;

;	3040		  END ;

;	3041	

;	3042	ERROR_ON = .TMP1 ;

;	3043	END ;







							    .GLOBL  SYS$DASSGN



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 64-1

; Digital Equipment Corporation

;



					 010C 00BC5 	    .ENTRY  END_TEST, Save R2,R3,R8				      ; 2959

		         58	0000G  CF  9E 00BC7 	    MOVAB   MESSAGE, R8						      ;

		         7E	0000G  CF  3C 00BCC 	    MOVZWL  CHANNEL, -(SP)					      ; 3000

	      00000000G  9F	       01  FB 00BD1 	    CALLS   #1, @#SYS$DASSGN					      ;

		         50	  41   A9  9E 00BD8 	    MOVAB   65(R9), R0						      ; 3014

		         53	       50  D0 00BDC 	    MOVL    R0, TMP1						      ;

				       60  94 00BDF 	    CLRB    (R0)						      ;

		         05	       69  E9 00BE1 	    BLBC    (MCB_PTR), 1$					      ; 3016

		         52	       01  D0 00BE4 	    MOVL    #1, TMP2						      ; 3018

				       04  11 00BE7 	    BRB     2$							      ; 3016

	   52	         69	       02  C7 00BE9 1$:     DIVL3   #2, (MCB_PTR), TMP2					      ; 3020

		         69	       01  D0 00BED 2$:     MOVL    #1, (MCB_PTR)					      ; 3022

		    40   A9	       01  90 00BF0 	    MOVB    #1, 64(MCB_PTR)					      ; 3024

		         7E	       0A  7D 00BF4 	    MOVQ    #10, -(SP)						      ; 3029

		         68	       02  FB 00BF7 	    CALLS   #2, MESSAGE						      ;

				0000G  CF  9F 00BFA 	    PUSHAB  CMD_OMSG_DDSC					      ; 3031

				       05  DD 00BFE 	    PUSHL   #5							      ;

		         68	       02  FB 00C00 	    CALLS   #2, MESSAGE						      ;

		         1D	       50  E9 00C03 	    BLBC    R0, 3$						      ;

				       52  DD 00C06 	    PUSHL   TMP2						      ; 3034

		  0000G  CF	       01  FB 00C08 	    CALLS   #1, INSB						      ;

		         7E	0000G  CF  3C 00C0D 	    MOVZWL  CNT_2, -(SP)					      ; 3035

		  0000G  CF	       01  FB 00C12 	    CALLS   #1, INSW						      ;

		         7E	       07  7D 00C17 	    MOVQ    #7, -(SP)						      ; 3037

		         68	       02  FB 00C1A 	    CALLS   #2, MESSAGE						      ;

		         03	       50  E9 00C1D 	    BLBC    R0, 3$						      ;

				  40   A9  94 00C20 	    CLRB    64(MCB_PTR)						      ; 3039

		    41   A9	       53  90 00C23 3$:     MOVB    TMP1, 65(MCB_PTR)					      ; 3042

					   04 00C27 	    RET     							      ; 2959



; Routine Size:  99 bytes







; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 65

; Digital Equipment Corporation

;

;	3044	GLOBAL ROUTINE  LOOP_MSG : LNKMSG =

;	3045	

;	3046	!++

;	3047	! FUNCTIONAL DESCRIPTION:

;	3048	!

;	3049	!

;	3050	! FORMAL PARAMETERS:

;	3051	!

;	3052	!	NONE

;	3053	!

;	3054	! IMPLICIT INPUTS:

;	3055	!

;	3056	!	R9, R10, R11  used as linkage describing the REPLY_CODE,

;	3057	!		input msg pointer, and output msg pointer

;	3058	!

;	3059	! IMPLICIT OUTPUTS:

;	3060	!

;	3061	!	same as the implicit inputs

;	3062	!

;	3063	! ROUTINE VALUE:

;	3064	! COMPLETION CODES:

;	3065	!

;	3066	!	both R0 and REPLY_CODE (i.e., R9) return the standard

;	3067	!	NICE mapped status codes defined in NICDAT.B32.

;	3068	!

;	3069	! SIDE EFFECTS:

;	3070	!

;	3071	!	NONE

;	3072	!

;	3073	!--

;	3074	

;	3075	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 66

; Digital Equipment Corporation

;

;	3076	BEGIN

;	3077	EXTERNAL REGISTER  P_IM = 11, P_OM = 10, MCB_PTR = 9 : REF MCB ;

;	3078	

;	3079	MACRO	REPLY_CODE = MCB_PTR [MCB$L_REPLYCODE] % ;

;	3080	

;	3081	OWN

;	3082		LOOP_ISB	: IO_SB,

;	3083		LOOP_OSB	: IO_SB ;

;	3084	LOCAL

;	3085		PV,

;	3086		CONTINUE,

;	3087		QIO_STAT ;

;	3088	

;	3089	BIND  PF = UPLIT BYTE (1,3,2,3,4,0) ;	! Controls the loopback

;	3090						! process via the case

;	3091						! statement below.

;	3092	CONTINUE = TRUE ;

;	3093	PV = CH$PTR (PF) ;

;	3094	

;	3095	WHILE .CONTINUE AND .CNT_2 GTRU 0

;	3096	DO CASE CH$RCHAR_A (PV)			! This control structure

;	3097	      FROM 0 TO 4 OF			! Replaces an overly

;	3098		SET				! complex nested if

;	3099		[0] : BEGIN

;	3100		      CNT_2 = .CNT_2 - 1 ;	! Decremtent the loop

;	3101						! count.

;	3102		      PV = CH$PTR (PF) ;	! Reset control vector

;	3103		      END ;

;	3104	

;	3105		[1] : IF (QIO_STAT =		! Xmit loopback data

;	3106			  $QIOW	(FUNC = IO$_WRITEVBLK,

;     P 3107				 CHAN = .CHANNEL,

;     P 3108				 IOSB = LOOP_OSB,

;     P 3109				 P1   = .AUX0_DDSC [STR_PTR],

;     P 3110				 P2   = .AUX0_DDSC [STR_LNG]

;     P 3111				)

;	3112			  )			! If successfully queued

;	3113		      THEN QIO_STAT = 		! then the status is the

;	3114			  .LOOP_OSB [IO_STAT]	! QIO completion status

;	3115		      ELSE

;	3116			  REPLY_CODE = NIC$_NETCOMERR ;

;	3117	

;	3118		[2] : IF (QIO_STAT =		! Receive the loop data

;	3119			  $QIOW	(FUNC = IO$_READVBLK,

;     P 3120				 CHAN = .CHANNEL,

;     P 3121				 IOSB = LOOP_ISB,

;     P 3122				 P1   = .AUX1_DDSC [BUF_PTR],

;     P 3123				 P2   = .AUX1_DDSC [BUF_LNG]

;     P 3124				)

;	3125			  )				! If successfully queued

;	3126		      THEN QIO_STAT =			! then the status is the

;	3127				  .LOOP_ISB [IO_STAT]	! QIO completion status

;	3128		      ELSE

;	3129			  REPLY_CODE = NIC$_NETCOMERR ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 67

; Digital Equipment Corporation

;

;	3130		[3] : IF NOT .QIO_STAT		! Check for qio problems

;	3131		      THEN 

;	3132			  BEGIN

;	3133			  REPLY_CODE = NIC$_NETCOMERR ;

;	3134			  CONTINUE = FALSE ;		! Force completion

;	3135			  END ;

;	3136	

;	3137		[4] : ! Check to see if the data received is the same as the

;	3138		      ! data sent.  The data block starts at the third byte of

;	3139		      ! transmitted message, and at the second byte of the

;	3140		      ! received message.  First compare the size of the data

;	3141		      ! blocks and then compare their content.

;	3142	

;	3143		      IF .DATA_SIZE			! Size of data blk sent

;	3144			 NEQ .LOOP_ISB [IO_CNT] - 1	! Size of 'data' rec.

;	3145	

;	3146			 OR

;	3147	

;	3148			 CH$NEQ (.DATA_SIZE,		! Compare data content

;	3149				 CH$PTR (.AUX0_DDSC [STR_PTR], 2),

;	3150				 .DATA_SIZE,

;	3151				 CH$PTR (.AUX1_DDSC [BUF_PTR], 1)

;	3152				)

;	3153		      THEN 

;	3154			  BEGIN

;	3155			  CONTINUE = FALSE ;		! Force completion

;	3156			  REPLY_CODE = NIC$_NETCOMERR ;

;	3157			  END ;

;	3158	

;	3159		TES ;

;	3160	

;	3161	RETURN (.REPLY_CODE) ;

;	3162	END ;







							    .PSECT  $PLIT$,NOWRT,NOEXE,2



					      00000 P.AAA:  .BYTE   1, 3, 2, 3, 4, 0					      ;

					      00006	    .BLKB   2



							    .PSECT  $OWN$,NOEXE,2



					      00028 LOOP_ISB:

							    .BLKB   8

					      00030 LOOP_OSB:

							    .BLKB   8



						    PF=			P.AAA

							    .GLOBL  SYS$QIOW



							    .PSECT  $CODE$,NOWRT,2



					 01FC 00C28 	    .ENTRY  LOOP_MSG, Save R2,R3,R4,R5,R6,R7,R8			      ; 3044

		         57 00000000G  9F  9E 00C2A 	    MOVAB   @#SYS$QIOW, R7					      ;



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 67-1

; Digital Equipment Corporation

;

		         58	0000'  CF  9E 00C31 	    MOVAB   LOOP_ISB, R8					      ;

		         55	       01  D0 00C36 	    MOVL    #1, CONTINUE					      ; 3092

		         56	0000'  CF  9E 00C39 1$:     MOVAB   PF, PV						      ; 3093

		         03	       55  E8 00C3E 2$:     BLBS    CONTINUE, 4$					      ; 3095

				     00A0  31 00C41 3$:     BRW     14$							      ;

				0000G  CF  B5 00C44 4$:     TSTW    CNT_2						      ;

				       F7  1B 00C48 	    BLEQU   3$							      ;

		         50	       86  9A 00C4A 	    MOVZBL  (PV)+, R0						      ; 3096

	   04	         00	       50  CF 00C4D 	    CASEL   R0, #0, #4						      ;

	 0039	       0010	     000A     00C51 5$:     .WORD   6$-5$,-						      ;

		       006A	     0060     00C57		    7$-5$,-						      ;

								    9$-5$,-						      ;

								    10$-5$,-						      ;

								    11$-5$						      ;

				0000G  CF  B7 00C5B 6$:     DECW    CNT_2						      ; 3100

				       D8  11 00C5F 	    BRB     1$							      ; 3102

				       7E  7C 00C61 7$:     CLRQ    -(SP)						      ; 3111

				       7E  7C 00C63 	    CLRQ    -(SP)						      ;

				0000G  CF  DD 00C65 	    PUSHL   AUX0_DDSC						      ;

				0000G  CF  DD 00C69 	    PUSHL   AUX0_DDSC+4						      ;

				       7E  7C 00C6D 	    CLRQ    -(SP)						      ;

				  08   A8  9F 00C6F 	    PUSHAB  LOOP_OSB						      ;

				       30  DD 00C72 	    PUSHL   #48							      ;

		         7E	0000G  CF  3C 00C74 	    MOVZWL  CHANNEL, -(SP)					      ;

				       7E  D4 00C79 	    CLRL    -(SP)						      ;

		         67	       0C  FB 00C7B 	    CALLS   #12, SYS$QIOW					      ;

		         54	       50  D0 00C7E 	    MOVL    R0, QIO_STAT					      ;

		         5B	       54  E9 00C81 	    BLBC    QIO_STAT, 13$					      ; 3105

		         54	  08   A8  3C 00C84 	    MOVZWL  LOOP_OSB, QIO_STAT					      ; 3113

				       B4  11 00C88 8$:     BRB     2$							      ; 3105

				       7E  7C 00C8A 9$:     CLRQ    -(SP)						      ; 3124

				       7E  7C 00C8C 	    CLRQ    -(SP)						      ;

				0000G  CF  DD 00C8E 	    PUSHL   AUX1_DDSC+8						      ;

				0000G  CF  DD 00C92 	    PUSHL   AUX1_DDSC+12					      ;

				       7E  7C 00C96 	    CLRQ    -(SP)						      ;

				       58  DD 00C98 	    PUSHL   R8							      ;

				       31  DD 00C9A 	    PUSHL   #49							      ;

		         7E	0000G  CF  3C 00C9C 	    MOVZWL  CHANNEL, -(SP)					      ;

				       7E  D4 00CA1 	    CLRL    -(SP)						      ;

		         67	       0C  FB 00CA3 	    CALLS   #12, SYS$QIOW					      ;

		         54	       50  D0 00CA6 	    MOVL    R0, QIO_STAT					      ;

		         33	       54  E9 00CA9 	    BLBC    QIO_STAT, 13$					      ; 3118

		         54	       68  3C 00CAC 	    MOVZWL  LOOP_ISB, QIO_STAT					      ; 3126

				       8D  11 00CAF 	    BRB     2$							      ; 3118

		         8A	       54  E8 00CB1 10$:    BLBS    QIO_STAT, 2$					      ; 3130

		         69	       26  CE 00CB4 	    MNEGL   #38, (MCB_PTR)					      ; 3133

				       55  D4 00CB7 	    CLRL    CONTINUE						      ; 3134

				       83  11 00CB9 	    BRB     2$							      ; 3096

		         52	0000G  CF  3C 00CBB 11$:    MOVZWL  DATA_SIZE, R2					      ; 3143

		         50	  02   A8  3C 00CC0 	    MOVZWL  LOOP_ISB+2, R0					      ; 3144

				       50  D7 00CC4 	    DECL    R0							      ;

		         50	       52  D1 00CC6 	    CMPL    R2, R0						      ;

				       12  12 00CC9 	    BNEQ    12$							      ;

		         51	0000G  CF  D0 00CCB 	    MOVL    AUX0_DDSC+4, R1					      ; 3149

		         50	0000G  CF  D0 00CD0 	    MOVL    AUX1_DDSC+12, R0					      ; 3151



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 67-2

; Digital Equipment Corporation

;

      01   A0	    02   A1	       52  29 00CD5 	    CMPC3   R2, 2(R1), 1(R0)					      ; 3148

				       AB  13 00CDB 	    BEQL    8$							      ;

				       55  D4 00CDD 12$:    CLRL    CONTINUE						      ; 3155

		         69	       26  CE 00CDF 13$:    MNEGL   #38, (MCB_PTR)					      ; 3156

				       A4  11 00CE2 	    BRB     8$							      ; 3095

		         50	       69  D0 00CE4 14$:    MOVL    (MCB_PTR), R0					      ; 3161

					   04 00CE7 	    RET     							      ; 3044



; Routine Size:  192 bytes





;	3163	



; Bliss-32 7.352	Saturday 22-AUG-1978 02:42:25	DBB3:[NICE.SRC]NICE.B32;54					Page 68

; Digital Equipment Corporation

;

;	3164	END

;	3165	ELUDOM









							    .GLOBL  LIB$SIGNAL, SYS$UNWIND



;				       PSECT SUMMARY

;

;	Name		 Bytes			       Attributes

;

;  $CODE$         	  3304  NOWRT,  RD ,  EXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $OWN$          	    56    WRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)

;  $PLIT$         	     8  NOWRT,  RD ,NOEXE,NOSHR,  LCL,  REL,  CON,NOPIC,ALIGN(2)









;				LIBRARY STATISTICS

;

;					     -------- Symbols --------    Blocks

;	File				     Total    Loaded   Percent      Read

;

;  DBA4:[SYSLIB]STARLET.L32;1		      2688        11         0       115











;	3166	

; Size:		3304 code + 64 data bytes

; Run Time:	01:34.6

; Elapsed Time:	02:17.5

; Memory Used:	389 pages

; Compilation Complete

