Google
 

Trailing-Edge - PDP-10 Archives - BB-P363B-SM_1985 - mcb/nml/nmudlx.lst
There are no other files named nmudlx.lst in the archive.
								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   1
								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (1)

;	  0001	!NET:<PECKHAM.DEVELOPMENT>NMUDLX.B16.3 28-Apr-82 13:42:00, Edit by PECKHAM
;	  0002	!
;	  0003	! Ident 26.
;	  0004	! Change NMU$DLX_READ into NMU$DLX_TIMED_READ to allow for
;	  0005	! timeout interval specification.
;	  0006	!
;	  0007	!NET:<PECKHAM.DEVELOPMENT>NMUDLX.B16.3  2-Mar-82 11:43:34, Edit by PECKHAM
;	  0008	!
;	  0009	! Ident 25.
;	  0010	! Initialize I/O status blocks for events.
;	  0011	!
;	  0012	!NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMUDLX.B16.14  1-Mar-82 16:10:02, Edit by WEBBER
;	  0013	!
;	  0014	! Ident 24.
;	  0015	! Add an extra return code from NMU$DLX_READ for "timeout".
;	  0016	!
;	  0017	!NET:<DECNET20-V3P1.BASELEVEL-2.SOURCES>NMUDLX.B16.13  4-Feb-82 11:37:14, Edit by WEBBER
;	  0018	!
;	  0019	! Ident 23.
;	  0020	! Increase read timeout interval to allow CHK11 to work (Note: at some point,
;	  0021	! NMLDTL will have to distinguish CHK11 and pass a special timeout value
;	  0022	! down when it's operating.)
;	  0023	!
;	  0024	!NET:<DECNET20-V3P1.NMLLIB>NMUDLX.B16 4-Dec-81 16:53:19, Edit by THIGPEN
;	  0025	!
;	  0026	! Ident 22.
;	  0027	! Add timeout arg to NMU$SCHED_WAIT call
;	  0028	!
;	  0029	!NET:<DECNET20-V3P1.NMU>NMUDLX.B16.2  1-Oct-81 16:53:19, Edit by GUNN
;	  0030	!
;	  0031	! Ident 21.
;	  0032	! Add IE$SRE to list of I/O error codes defined in $NM$DLX_ERRORS.
;	  0033	!
								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   2
								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (2)

;	  0034	
;	  0035	module NMUDLX (ident = 'X00.26'
;	  0036			) = 				! Direct Line Access
;	  0037	begin
;	  0038	!
;	  0039	!                    COPYRIGHT (c) 1980, 1981, 1982
;	  0040	!                    DIGITAL EQUIPMENT CORPORATION
;	  0041	!                        Maynard, Massachusetts
;	  0042	!
;	  0043	!     This software is furnished under a license and may  be  used
;	  0044	!     and copied only in accordance with the terms of such license
;	  0045	!     and with the inclusion of the above copyright notice.   This
;	  0046	!     software  or any other copies thereof may not be provided or
;	  0047	!     otherwise made available to any other person.  No  title  to
;	  0048	!     and ownership of the software is hereby transferred.
;	  0049	!
;	  0050	!     The information  in  this  software  is  subject  to  change
;	  0051	!     without  notice  and should not be construed as a commitment
;	  0052	!     by DIGITAL EQUIPMENT CORPORATION.
;	  0053	!
;	  0054	!     DIGITAL assumes no responsibility for the use or reliability
;	  0055	!     of  its  software  on  equipment  which  is  not supplied by
;	  0056	!     DIGITAL.
;	  0057	!
;	  0058	
;	  0059	!++
;	  0060	!
;	  0061	! Facility: LSG DECnet Management
;	  0062	!
;	  0063	! Abstract: This module provides direct line access for
;	  0064	!	    Direct Line Access in MCB Environments.
;	  0065	!
;	  0066	! Environment: MCB V3.2 RSX User Mode
;	  0067	!
;	  0068	! Author: Scott G. Robinson	Creation date: 27-May-81
;	  0069	!
;	  0070	! Modified by:
;	  0071	!
;	  0072	!--
;	  0073	
;	  0074	!
;	  0075	! Include files
;	  0076	!
;	  0077	
;	  0078	library 'NMULIB';				! Get all required definitions
;	  0079	
;	  0080	!
;	  0081	! Global routines
;	  0082	!
;	  0083	
;	  0084	forward routine
;	  0085	         NMU$DLX_OPEN,                  ! Open link
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   3
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (2)

;	  0086	         NMU$DLX_TIMED_READ,            ! Read MOP message on link
;	  0087	         NMU$DLX_WRITE,                 ! Write MOP message on link
;	  0088	         NMU$DLX_TYPE,                  ! Returns circuit MOP device type
;	  0089	         NMU$DLX_INITIALIZE,            ! Initialize protocol on link
;	  0090	         NMU$DLX_CLOSE;                 ! Close link
;	  0091	
;	  0092	!
;	  0093	! Local routines
;	  0094	!
;	  0095	
;	  0096	forward routine
;	  0097	    $DLX_AST : IO_INTERRUPT_LINKAGE,
;	  0098	    MAP_TO_RESPONSE;
;	  0099	
;	  0100	!
;	  0101	! Macros
;	  0102	!
;	  0103	
;	  0104	macro
;	M 0105	    $NM$DLX_ERRORS =
;	M 0106		IE$SPC,$NICE$ERR_MPE,'Internal Buffer Length Confusion',
;	M 0107		IE$BDV,$NICE$ERR_IID,'Unknown Entity',
;	M 0108		IE$BBE,$NICE$ERR_HWF,'Entity Device Failure',
;	M 0109		IE$DNR,$NICE$ERR_REE,'No Dynamic Resources',
;	M 0110		IE$ALN,$NICE$ERR_REE,'No I/O Resources',
;	M 0111		IE$DAA,$NICE$ERR_CWS,'Entity Already In Use',
;	M 0112		IE$NLN,$NICE$ERR_CWS,'Entity Not Open',
;	M 0113		IE$ABO,$NICE$ERR_OPF,'Operation Aborted',
;	M 0114		IE$CNR,$NICE$ERR_OPF,'Entity Open Request Failed',
;	M 0115		IE$ISQ,$NICE$ERR_OPF,'Maintenance Mode Unsupported By Entity',
;	M 0116		IE$SRE,$NICE$ERR_LCE,'Send/Receive Failure',
;	M 0117	        IE$TMO,$NICE$ERR_LCE,'Response Timeout',
;	  0118		IE$EOT,$NICE$ERR_LCE,'START Received In Maintenance Mode' %,
;	M 0119	    GENERATE_RESPONSE_TEST [RSX_ERROR,NML_ERROR,STRING] =
;	M 0120		[RSX_ERROR]:(MESSAGE_PTR = CH$ASCIC(STRING);
;	  0121			     NICE_CODE = NML_ERROR) %;
;	  0122	
;	  0123	macro
;	M 0124	    $$DLX_INTERFACE_EXPAND (FUNCTION, TYPE, ENTITY, BUFFER, LENGTH) =
;	M 0125	 
;	M 0126	
;	M 0127	    begin
;	M 0128	
;	M 0129	           %if not %declared(IOSB) %then
;	M 0130	           stacklocal
;	M 0131	              IOSB: $IO_STATUS_BLOCK ;         ! I/O Status block
;	M 0132	
;	M 0133	           %fi
;	M 0134	
;	M 0135		   $IO_STATUS_BLOCK_INITIALIZE (IOSB);
;	M 0136		   NMU$SCHED_EVENT (IOSB [IOSB$_EVENT], $true);
;	M 0137	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   4
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (2)

;	M 0138	           qio$s (FUNCTION,.LUN$DL,,,IOSB,$DLX_AST,<
;	M 0139	                   %if not %null (LENGTH) %then
;	M 0140	                       %if not %null(BUFFER) %then
;	M 0141	                          (if .LENGTH eql 0 then 0 else BUFFER)
;	M 0142	                       %fi
;	M 0143	                   %fi,
;	M 0144	                   %if not %null(BUFFER) %then
;	M 0145	                       %if not %null(LENGTH) %then .LENGTH
;	M 0146	                       %fi
;	M 0147	                   %fi,
;	M 0148			   %if not %null(TYPE) %then
;	M 0149				((TYPE+1) ^ 8)
;	M 0150			   %fi,
;	M 0151			   %if not %null(ENTITY) %then
;	M 0152				ENTITY
;	M 0153			   %fi>);
;	M 0154		   while .IOSB [IOSB$ERROR] eql 0 do
;	M 0155			NMU$SCHED_WAIT (IOSB [IOSB$_EVENT],0);
;	M 0156	
;	M 0157	            %if not %null(LENGTH) %then LENGTH = .IOSB[IOSB$_COUNT]; %fi
;	M 0158	            .IOSB[IOSB$ERR]
;	  0159	    end %;
;	  0160	
;	  0161	macro
;	M 0162	    $DLX$OPEN (TYPE, ENTITY) =
;	  0163		$$DLX_INTERFACE_EXPAND(DLX$_OPEN,TYPE,ENTITY,,) %,
;	M 0164	    $DLX$CLOSE =
;	  0165	        $$DLX_INTERFACE_EXPAND(DLX$_CLOSE,,,,) %,
;	M 0166	    $DLX$READ (BUFFER, LENGTH, TIMEOUT) =
;	  0167		$$DLX_INTERFACE_EXPAND(DLX$_READ,,TIMEOUT,BUFFER,LENGTH) %,
;	M 0168	    $DLX$WRITE (BUFFER, LENGTH) =
;	  0169		$$DLX_INTERFACE_EXPAND(DLX$_WRITE,,,BUFFER,LENGTH) %;
;	  0170	
;	  0171	!
;	  0172	! Equated symbols
;	  0173	!
;	  0174	
;	  0175	literal
;	  0176	    DLX$_OPEN = IO$CON,
;	  0177	    DLX$_CLOSE = IO$DIS,
;	  0178	    DLX$_READ = IO$RCV,
;	  0179	    DLX$_WRITE = IO$XMT;
;	  0180	
;	  0181	!<BLF/NOFORMAT>
;	  0182	!<BLF/NOERROR>
;	  0183	
;	  0184	      $field
;	  0185		MCB$IOSB$fields =		!  QIO Status Block
;	  0186		  set
;	  0187		  IOSB$ERROR	= [$integer],	! Composite error code:
;	  0188			$overlay(IOSB$ERROR)
;	  0189		  	IOSB$ERR = [$tiny_integer],     ! error code
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   5
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (2)

;	  0190		  	IOSB$ERR1= [$tiny_integer],     ! 0 = I/O error, -1 = directive error
;	  0191			$continue
;	  0192		  IOSB$_COUNT= [$integer],	! I/O count (bytes)
;	  0193		  IOSB$_EVENT = [$sub_block(EVENT_BLOCK_SIZE)]  ! IO Event Block
;	  0194		  tes;
;	  0195	
;	  0196	literal
;	  0197	    MCB$_IOSB_SIZE = $field_set_size,
;	  0198	    MCB$_IOSB_ALLOCATION = $field_set_units;
;	  0199	
;	  0200	macro
;	M 0201	    $IO_STATUS_BLOCK =
;	  0202		    BLOCK[MCB$_IOSB_SIZE]  FIELD( MCB$IOSB$fields ) %;
;	  0203	
;	  0204	macro
;	M 0205	    $IO_STATUS_BLOCK_INITIALIZE (IOSB) =
;	M 0206		begin
;	M 0207		bind $DLX$IOSB = IOSB : $IO_STATUS_BLOCK;
;	M 0208		local ADR : ref vector;
;	M 0209		ADR = $DLX$IOSB [IOSB$_EVENT];
;	M 0210		decru $DLX$CNT from EVENT_BLOCK_SIZE to 1 do
;	M 0211		    (ADR [0] = 0; ADR = ADR [1];);
;	  0212		end %;
;	  0213	
;	  0214	$field
;	  0215	    DLX$LUN$FIELDS =
;	  0216		set
;	  0217		LUN$_LUN = [$integer],          ! The LUN for this DLX Access
;	  0218	        LUN$_TYPE = [$byte],            ! Type of Access for this LUN
;	  0219	        LUN$_ID = [$byte]               ! The ID of this LUN
;	  0220		tes;
;	  0221	
;	  0222	literal
;	  0223	    DLX$_LUN_SIZE = $field_set_size,
;	  0224	    DLX$_LUN_ALLOCATION = $field_set_units;
;	  0225	
;	  0226	macro
;	M 0227	    $DLX_LUN_BLOCK =
;	  0228		    BLOCK[DLX$_LUN_SIZE]  FIELD( DLX$LUN$fields ) %;
;	  0229	
;	  0230	
;	  0231	
;	  0232	!<BLF/ERROR>
;	  0233	!<BLF/FORMAT>
;	  0234	!
;	  0235	! Own Storage
;	  0236	!
;	  0237	
;	  0238	own
;	  0239	    DLUN0 : $DLX_LUN_BLOCK initial (NMU$_DL0_DEVICE_LUN, 1^8),
;	  0240	    DLUN1 : $DLX_LUN_BLOCK initial (NMU$_DL1_DEVICE_LUN, 2^8),
;	  0241	    DLX_NEXT : initial (0);
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   6
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (2)

;	  0242	
;	  0243	!
;	  0244	! External references
;	  0245	!
;	  0246	
;	  0247	external routine
;	  0248	    NMU$SCHED_MANAGER;
;	  0249	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   7
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (3)

;	  0250	global routine NMU$DLX_OPEN (USAGE, CIRCUIT_ID, RESPONSE_POINTER) =
;	  0251	
;	  0252	!++
;	  0253	! Functional description:
;	  0254	!
;	  0255	!        This routine opens a link in MOP mode.  The link is
;	  0256	!        conditioned to operate properly depending on the
;	  0257	!        use that the link will be put to.
;	  0258	!
;	  0259	! Formal parameters:
;	  0260	!
;	  0261	!	.USAGE		  Type of usage for the link.
;	  0262	!			  - DLX_LOAD
;	  0263	!			  - DLX_DUMP
;	  0264	!			  - DLX_LOOP
;	  0265	!			  - DLX_OTHER
;	  0266	!	.CIRCUIT_ID	  Pointer to counted ASCII identifier string
;	  0267	!	.RESPONSE_POINTER Pointer to NICE response buffer
;	  0268	!
;	  0269	! Implicit inputs: none
;	  0270	! Implicit outputs: none
;	  0271	!
;	  0272	! Routine value:
;	  0273	!
;	  0274	!	<0	Error occured while opening link
;	  0275	!	>=0	Link identifier (for any future reference)
;	  0276	!
;	  0277	! Side effects: none
;	  0278	!
;	  0279	!--
;	  0280	
;	  0281	    begin
;	  0282	
;	  0283	    local
;	  0284		DLX_ID,
;	  0285		DLXLUN : ref $DLX_LUN_BLOCK;
;	  0286	
;	  0287	    stacklocal
;	  0288		IOSB : $IO_STATUS_BLOCK;
;	  0289	
;	  0290	    $IO_STATUS_BLOCK_INITIALIZE (IOSB);
;	  0291	!
;	  0292	! Assign a DLX_ID and DLX_CONTROL_BLOCK with LUN if available
;	  0293	!
;	  0294	
;	  0295	    if (DLXLUN =
;	  0296		(case .USAGE from DLX_LOAD to DLX_OTHER of
;	  0297		set
;	  0298		[DLX_LOAD, DLX_DUMP] : (if .DLUN0 [LUN$_TYPE] neq 0 then 0 else DLUN0);
;	  0299		[Inrange] : (if .DLUN1 [LUN$_TYPE] neq 0 then 0 else DLUN1);
;	  0300		tes)
;	  0301		) eqlu 0
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   8
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (3)

;	  0302	    then
;	  0303		IOSB [IOSB$ERROR] = IE$NDR		! Flag No Dynamic Resources
;	  0304	    else
;	  0305		begin
;	  0306	!
;	  0307	! Try to OPEN the Entity; error return kept in IOSB
;	  0308	!
;	  0309	
;	  0310		bind
;	  0311		    LUN$DL = DLXLUN [LUN$_LUN];
;	  0312	
;	  0313		$DLX$OPEN (CIRCUIT_, .CIRCUIT_ID)
;	  0314		end;
;	  0315	
;	  0316	!
;	  0317	! If no error then assign the DLX_LUN_BLOCK and return its' ID
;	  0318	! otherwise map the error response and fail the request.
;	  0319	!
;	  0320	
;	  0321	    if .IOSB [IOSB$ERR] lss 0
;	  0322	    then
;	  0323		MAP_TO_RESPONSE (.IOSB [IOSB$ERR], .RESPONSE_POINTER)
;	  0324	    else
;	  0325		begin
;	  0326		DLXLUN [LUN$_TYPE] = .USAGE;
;	  0327		.DLXLUN [LUN$_ID]
;	  0328		end
;	  0329	
;	  0330	    end;					! End of DLX_OPEN


						.TITLE	NMUDLX
						.IDENT	/X00.26/


000000						.PSECT	$OWN$,  D  
000000	000003 				DLUN0:	.WORD	3
000002	000400 					.WORD	400
000004	000004 				DLUN1:	.WORD	4
000006	001000 					.WORD	1000
000010	000000 				DLX.NEXT:
						.WORD	0


						.GLOBL	US.CREATE, US.ABORT, US.FINI, US.COMPLETE
						.GLOBL	US.ERROR, US.INSERT, US.REMOVE
						.GLOBL	US.QRESET, US.QQINS, US.QQREM
						.GLOBL	US.QQSET, US.QQEXT, US.EVENT, US.WAIT
						.GLOBL	US.FLAG, US.SLEEP, US.CURRENT
						.GLOBL	US.DESCHEDULE
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page   9
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (3)

						.SBTTL	UD.OPEN
000000						.PSECT	$CODE$,  RO 

000000	004167  000000G			UD.OPEN::
						JSR	R1,$SAVE2			;					0250
000004	162706  000012 				SUB	#12,SP
000010	012701  000004 				MOV	#4,R1				; *,ADR					0290
000014	060601 					ADD	SP,R1				; $DLX$IOSB+4,ADR
000016	012700  000003 				MOV	#3,R0				; *,$DLX$CNT
000022	005021 				1$:	CLR	(R1)+				; ADR
000024	077002 					SOB	R0,1$				; $DLX$CNT,*				0000
000026	016600  000026 				MOV	26(SP),R0			; USAGE,*				0296
000032	005300 					DEC	R0
000034	006300 					ASL	R0
000036	066007  000000'				ADD	P.AAA(R0),PC			; Case dispatch
000042	105767  000002'			2$:	TSTB	DLUN0+2				;					0298
000046	001006 					BNE	4$
000050	012701  000000'				MOV	#DLUN0,R1			; *,DLXLUN
000054	000407 					BR	6$				;					0296
000056	105767  000006'			3$:	TSTB	DLUN1+2				;					0299
000062	001402 					BEQ	5$
000064	005001 				4$:	CLR	R1				; DLXLUN
000066	000402 					BR	6$
000070	012701  000004'			5$:	MOV	#DLUN1,R1			; *,DLXLUN
000074	001003 				6$:	BNE	7$				;					0301
000076	012716  177670 				MOV	#-110,(SP)			; *,IOSB				0303
000102	000454 					BR	10$				;					0295
000104	012702  000004 			7$:	MOV	#4,R2				; *,ADR					0313
000110	060602 					ADD	SP,R2				; $DLX$IOSB+4,ADR
000112	012700  000003 				MOV	#3,R0				; *,$DLX$CNT
000116	005022 				8$:	CLR	(R2)+				; ADR
000120	077002 					SOB	R0,8$				; $DLX$CNT,*				0000
000122	012746  000006 				MOV	#6,-(SP)			;					0313
000126	060616 					ADD	SP,(SP)				; IOSB+4,*
000130	012746  000001 				MOV	#1,-(SP)
000134	004767  000000G				JSR	PC,US.EVENT
000140	005046 					CLR	-(SP)
000142	005046 					CLR	-(SP)
000144	016646  000034 				MOV	34(SP),-(SP)			; CIRCUIT.ID,*
000150	012746  002000 				MOV	#2000,-(SP)
000154	005046 					CLR	-(SP)
000156	005046 					CLR	-(SP)
000160	012746  000000V				MOV	#$DLX.AST,-(SP)
000164	012746  000024 				MOV	#24,-(SP)
000170	060616 					ADD	SP,(SP)				; IOSB,*
000172	005046 					CLR	-(SP)
000174	011146 					MOV	(R1),-(SP)			; DLXLUN,*
000176	012746  015400 				MOV	#15400,-(SP)
000202	012746  006001 				MOV	#6001,-(SP)
000206	104377 					EMT	377
000210	022626 				9$:	CMP	(SP)+,(SP)+
000212	005716 					TST	(SP)				; IOSB
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  10
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (3)

000214	001007 					BNE	10$
000216	012746  000006 				MOV	#6,-(SP)
000222	060616 					ADD	SP,(SP)				; IOSB+4,*
000224	005046 					CLR	-(SP)
000226	004767  000000G				JSR	PC,US.WAIT
000232	000766 					BR	9$
000234	111600 				10$:	MOVB	(SP),R0				; IOSB,*				0321
000236	002007 					BGE	11$
000240	010046 					MOV	R0,-(SP)			;					0323
000242	016646  000024 				MOV	24(SP),-(SP)			; RESPONSE.POINTE,*
000246	004767  000000V				JSR	PC,MAP.TO.RESPONSE
000252	022626 					CMP	(SP)+,(SP)+
000254	000406 					BR	12$				;					0321
000256	116661  000026  000002 		11$:	MOVB	26(SP),2(R1)			; USAGE,*(DLXLUN)			0326
000264	005000 					CLR	R0				;					0321
000266	156100  000003 				BISB	3(R1),R0			; *(DLXLUN),*
000272	062706  000012 			12$:	ADD	#12,SP				;					0250
000276	000207 					RTS	PC
; Routine Size:  96 words,	Routine Base:  $CODE$ + 0000
; Maximum stack depth per invocation:  24 words


000000						.PSECT	$PLIT$,  RO ,  D  

					P.AAA:						; CASE Table for UD.OPEN+0036		0296
000000	000000 					.WORD	0				; [2$]
000002	000000 					.WORD	0				; [2$]
000004	000014 					.WORD	14				; [3$]
000006	000014 					.WORD	14				; [3$]



;	  0331	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  11
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (4)

;	  0332	global routine NMU$DLX_TIMED_READ (ID, USAGE, PTR, LENGTH, TIMEOUT, RESPONSE_POINTER) =
;	  0333	
;	  0334	!++
;	  0335	! Functional description:
;	  0336	!
;	  0337	!        This routine reads a maintenance message from the specified
;	  0338	!        circuit.
;	  0339	!
;	  0340	! Formal parameters:
;	  0341	!
;	  0342	!        .ID                Identifier for circuit
;	  0343	!        .USAGE             What type of read is being done
;	  0344	!                           - DLX_SECONDARY, DLX_DATA, DLX_OTHER
;	  0345	!        .PTR               Pointer to message buffer
;	  0346	!        .LENGTH            Number of bytes in message buffer to write
;	  0347	!	 .TIMEOUT	    If not zero, number of seconds to wait for response
;	  0348	!        .RESPONSE_POINTER  Pointer to NICE response buffer
;	  0349	!
;	  0350	! Implicit inputs: none
;	  0351	! Implicit outputs: none
;	  0352	!
;	  0353	! Routine value:
;	  0354	!
;	  0355	!        Number of bytes read on circuit
;	  0356	!
;	  0357	!		or
;	  0358	!
;	  0359	!	-2 for read timeout
;	  0360	!	-1 for any other error
;	  0361	!
;	  0362	! Side effects: none
;	  0363	!
;	  0364	!--
;	  0365	
;	  0366	    begin
;	  0367	
;	  0368	    local
;	  0369	      AMOUNT,
;	  0370	      DLXLUN : ref $DLX_LUN_BLOCK;
;	  0371	
;	  0372	    stacklocal
;	  0373	      IOSB : $IO_STATUS_BLOCK;
;	  0374	
;	  0375	    $IO_STATUS_BLOCK_INITIALIZE (IOSB);
;	  0376	!
;	  0377	! Find DLX_LUN_BLOCK for this request
;	  0378	!
;	  0379	
;	  0380	    if (DLXLUN = (selectone .ID of
;	  0381		    set
;	  0382		    [1] : DLUN0;
;	  0383		    [2] : DLUN1;
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  12
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (4)

;	  0384		    [otherwise] : 0;
;	  0385		    tes)) nequ 0
;	  0386	    then
;	  0387		begin
;	  0388		bind
;	  0389		    LUN$DL = DLXLUN [LUN$_LUN];
;	  0390	
;	  0391	        AMOUNT = .LENGTH;
;	  0392		$DLX$READ((.PTR),AMOUNT,.TIMEOUT);
;	  0393		end
;	  0394	    else
;	  0395	       IOSB[IOSB$ERROR] = IE$BDV;
;	  0396	!
;	  0397	! Handle Error Mapping
;	  0398	!
;	  0399	    if .IOSB[IOSB$ERR] lss 0
;	  0400	    then
;	  0401	       begin
;	  0402	       MAP_TO_RESPONSE(.IOSB[IOSB$ERR],.RESPONSE_POINTER);
;	  0403	       if .IOSB[IOSB$ERR] eql IE$TMO
;	  0404	           then -2
;	  0405		   else -1
;	  0406	       end
;	  0407	    else
;	  0408	       .AMOUNT
;	  0409	!
;	  0410	    end;					! End of NMU$DLX_TIMED_READ


						.SBTTL	UD.TREAD
000300						.PSECT	$CODE$,  RO 

000000	004167  000000G			UD.TREAD::
						JSR	R1,$SAVE3			;					0332
000004	162706  000012 				SUB	#12,SP
000010	012701  000004 				MOV	#4,R1				; *,ADR					0375
000014	060601 					ADD	SP,R1				; $DLX$IOSB+4,ADR
000016	012700  000003 				MOV	#3,R0				; *,$DLX$CNT
000022	005021 				1$:	CLR	(R1)+				; ADR
000024	077002 					SOB	R0,1$				; $DLX$CNT,*				0000
000026	016600  000036 				MOV	36(SP),R0			; ID,*					0380
000032	020027  000001 				CMP	R0,#1
000036	001003 					BNE	2$
000040	012702  000000'				MOV	#DLUN0,R2			; *,DLXLUN
000044	000410 					BR	4$
000046	020027  000002 			2$:	CMP	R0,#2
000052	001003 					BNE	3$
000054	012702  000004'				MOV	#DLUN1,R2			; *,DLXLUN
000060	000402 					BR	4$
000062	005002 				3$:	CLR	R2				; DLXLUN
000064	020707 					CMP	PC,PC				;					0385
000066	001464 				4$:	BEQ	10$
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  13
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (4)

000070	016603  000030 				MOV	30(SP),R3			; LENGTH,AMOUNT				0391
000074	012701  000004 				MOV	#4,R1				; *,ADR					0392
000100	060601 					ADD	SP,R1				; $DLX$IOSB+4,ADR
000102	012700  000003 				MOV	#3,R0				; *,$DLX$CNT
000106	005021 				5$:	CLR	(R1)+				; ADR
000110	077002 					SOB	R0,5$				; $DLX$CNT,*				0000
000112	012746  000006 				MOV	#6,-(SP)			;					0392
000116	060616 					ADD	SP,(SP)				; IOSB+4,*
000120	012746  000001 				MOV	#1,-(SP)
000124	004767  000000G				JSR	PC,US.EVENT
000130	005046 					CLR	-(SP)
000132	005046 					CLR	-(SP)
000134	016646  000036 				MOV	36(SP),-(SP)			; TIMEOUT,*
000140	005046 					CLR	-(SP)
000142	010346 					MOV	R3,-(SP)			; AMOUNT,*
000144	001002 					BNE	6$
000146	005046 					CLR	-(SP)
000150	000402 					BR	7$
000152	016646  000050 			6$:	MOV	50(SP),-(SP)			; PTR,*
000156	012746  000000V			7$:	MOV	#$DLX.AST,-(SP)
000162	012746  000024 				MOV	#24,-(SP)
000166	060616 					ADD	SP,(SP)				; IOSB,*
000170	005046 					CLR	-(SP)
000172	011246 					MOV	(R2),-(SP)			; DLXLUN,*
000174	012746  015000 				MOV	#15000,-(SP)
000200	012746  006001 				MOV	#6001,-(SP)
000204	104377 					EMT	377
000206	022626 				8$:	CMP	(SP)+,(SP)+
000210	005716 					TST	(SP)				; IOSB
000212	001007 					BNE	9$
000214	012746  000006 				MOV	#6,-(SP)
000220	060616 					ADD	SP,(SP)				; IOSB+4,*
000222	005046 					CLR	-(SP)
000224	004767  000000G				JSR	PC,US.WAIT
000230	000766 					BR	8$
000232	016603  000002 			9$:	MOV	2(SP),R3			; IOSB+2,AMOUNT
000236	000402 					BR	11$				;					0380
000240	012716  177711 			10$:	MOV	#-67,(SP)			; *,IOSB				0395
000244	111602 				11$:	MOVB	(SP),R2				; IOSB,*				0399
000246	002017 					BGE	14$
000250	010246 					MOV	R2,-(SP)			;					0402
000252	016646  000026 				MOV	26(SP),-(SP)			; RESPONSE.POINTE,*
000256	004767  000000V				JSR	PC,MAP.TO.RESPONSE
000262	020227  177666 				CMP	R2,#-112			;					0403
000266	001003 					BNE	12$
000270	012700  177776 				MOV	#-2,R0
000274	000402 					BR	13$
000276	012700  177777 			12$:	MOV	#-1,R0
000302	022626 				13$:	CMP	(SP)+,(SP)+			;					0401
000304	000401 					BR	15$				;					0399
000306	010300 				14$:	MOV	R3,R0				; AMOUNT,*
000310	062706  000012 			15$:	ADD	#12,SP				;					0332
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  14
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (4)

000314	000207 					RTS	PC
; Routine Size:  103 words,	Routine Base:  $CODE$ + 0300
; Maximum stack depth per invocation:  25 words


;	  0411	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  15
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (5)

;	  0412	global routine NMU$DLX_WRITE (ID, USAGE, PTR, LENGTH, RESPONSE_POINTER) =
;	  0413	
;	  0414	!++
;	  0415	! Functional description:
;	  0416	!
;	  0417	!        This routine sends a maintenance message across the specified
;	  0418	!        circuit.
;	  0419	!
;	  0420	! Formal parameters:
;	  0421	!
;	  0422	!        .ID                Identifier for circuit
;	  0423	!        .USAGE             What type of write is being done
;	  0424	!                           - DLX_SECONDARY, DLX_TERTIARY, DLX_SYSTEM_IMAGE,
;	  0425	!                           - DLX_OTHER
;	  0426	!        .PTR               Pointer to message buffer
;	  0427	!        .LENGTH            Number of bytes in message buffer to write
;	  0428	!        .RESPONSE_POINTER  Pointer to NICE response buffer
;	  0429	!
;	  0430	! Implicit inputs: none
;	  0431	! Implicit outputs: none
;	  0432	!
;	  0433	! Routine value:
;	  0434	!
;	  0435	!        $false    Failure during write
;	  0436	!        $true     Write succeeded
;	  0437	!
;	  0438	! Side effects: none
;	  0439	!
;	  0440	!--
;	  0441	
;	  0442	    begin
;	  0443	
;	  0444	    local
;	  0445	      DLXLUN : ref $DLX_LUN_BLOCK;
;	  0446	
;	  0447	    stacklocal
;	  0448	      IOSB : $IO_STATUS_BLOCK;
;	  0449	
;	  0450	    $IO_STATUS_BLOCK_INITIALIZE (IOSB);
;	  0451	!
;	  0452	! Find DLX_LUN_BLOCK for this request
;	  0453	!
;	  0454	
;	  0455	    if (DLXLUN = (selectone .ID of
;	  0456		    set
;	  0457		    [1] : DLUN0;
;	  0458		    [2] : DLUN1;
;	  0459		    [otherwise] : 0;
;	  0460		    tes)) nequ 0
;	  0461	    then
;	  0462		begin
;	  0463	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  16
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (5)

;	  0464	        local
;	  0465	          AMOUNT;
;	  0466	
;	  0467		bind
;	  0468		    LUN$DL = DLXLUN [LUN$_LUN];
;	  0469	
;	  0470	        AMOUNT = .LENGTH;
;	  0471		$DLX$WRITE((.PTR),AMOUNT);
;	  0472		end
;	  0473	    else
;	  0474	       IOSB[IOSB$ERROR] = IE$BDV;
;	  0475	!
;	  0476	! Handle Error Mapping
;	  0477	!
;	  0478	    if .IOSB[IOSB$ERR] lss 0
;	  0479	    then
;	  0480	       begin
;	  0481	       MAP_TO_RESPONSE(.IOSB[IOSB$ERR],.RESPONSE_POINTER);
;	  0482	       $false
;	  0483	       end
;	  0484	    else
;	  0485	       $true
;	  0486	!
;	  0487	    end;					! End of NMU$DLX_WRITE


						.SBTTL	UD.WRITE
000000	004167  000000G			UD.WRITE::
						JSR	R1,$SAVE3			;					0412
000004	162706  000012 				SUB	#12,SP
000010	012701  000004 				MOV	#4,R1				; *,ADR					0450
000014	060601 					ADD	SP,R1				; $DLX$IOSB+4,ADR
000016	012700  000003 				MOV	#3,R0				; *,$DLX$CNT
000022	005021 				1$:	CLR	(R1)+				; ADR
000024	077002 					SOB	R0,1$				; $DLX$CNT,*				0000
000026	016600  000034 				MOV	34(SP),R0			; ID,*					0455
000032	020027  000001 				CMP	R0,#1
000036	001003 					BNE	2$
000040	012702  000000'				MOV	#DLUN0,R2			; *,DLXLUN
000044	000410 					BR	4$
000046	020027  000002 			2$:	CMP	R0,#2
000052	001003 					BNE	3$
000054	012702  000004'				MOV	#DLUN1,R2			; *,DLXLUN
000060	000402 					BR	4$
000062	005002 				3$:	CLR	R2				; DLXLUN
000064	020707 					CMP	PC,PC				;					0460
000066	001463 				4$:	BEQ	10$
000070	016603  000026 				MOV	26(SP),R3			; LENGTH,AMOUNT				0470
000074	012701  000004 				MOV	#4,R1				; *,ADR					0471
000100	060601 					ADD	SP,R1				; $DLX$IOSB+4,ADR
000102	012700  000003 				MOV	#3,R0				; *,$DLX$CNT
000106	005021 				5$:	CLR	(R1)+				; ADR
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  17
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (5)

000110	077002 					SOB	R0,5$				; $DLX$CNT,*				0000
000112	012746  000006 				MOV	#6,-(SP)			;					0471
000116	060616 					ADD	SP,(SP)				; IOSB+4,*
000120	012746  000001 				MOV	#1,-(SP)
000124	004767  000000G				JSR	PC,US.EVENT
000130	005046 					CLR	-(SP)
000132	005046 					CLR	-(SP)
000134	005046 					CLR	-(SP)
000136	005046 					CLR	-(SP)
000140	010346 					MOV	R3,-(SP)			; AMOUNT,*
000142	001002 					BNE	6$
000144	005046 					CLR	-(SP)
000146	000402 					BR	7$
000150	016646  000046 			6$:	MOV	46(SP),-(SP)			; PTR,*
000154	012746  000000V			7$:	MOV	#$DLX.AST,-(SP)
000160	012746  000024 				MOV	#24,-(SP)
000164	060616 					ADD	SP,(SP)				; IOSB,*
000166	005046 					CLR	-(SP)
000170	011246 					MOV	(R2),-(SP)			; DLXLUN,*
000172	012746  014400 				MOV	#14400,-(SP)
000176	012746  006001 				MOV	#6001,-(SP)
000202	104377 					EMT	377
000204	022626 				8$:	CMP	(SP)+,(SP)+
000206	005716 					TST	(SP)				; IOSB
000210	001007 					BNE	9$
000212	012746  000006 				MOV	#6,-(SP)
000216	060616 					ADD	SP,(SP)				; IOSB+4,*
000220	005046 					CLR	-(SP)
000222	004767  000000G				JSR	PC,US.WAIT
000226	000766 					BR	8$
000230	016603  000002 			9$:	MOV	2(SP),R3			; IOSB+2,AMOUNT
000234	000402 					BR	11$				;					0455
000236	012716  177711 			10$:	MOV	#-67,(SP)			; *,IOSB				0474
000242	111600 				11$:	MOVB	(SP),R0				; IOSB,*				0478
000244	002010 					BGE	12$
000246	010046 					MOV	R0,-(SP)			;					0481
000250	016646  000026 				MOV	26(SP),-(SP)			; RESPONSE.POINTE,*
000254	004767  000000V				JSR	PC,MAP.TO.RESPONSE
000260	022626 					CMP	(SP)+,(SP)+			;					0480
000262	005000 					CLR	R0				;					0478
000264	000402 					BR	13$
000266	012700  000001 			12$:	MOV	#1,R0
000272	062706  000012 			13$:	ADD	#12,SP				;					0412
000276	000207 					RTS	PC
; Routine Size:  96 words,	Routine Base:  $CODE$ + 0616
; Maximum stack depth per invocation:  25 words


;	  0488	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  18
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (6)

;	  0489	global routine NMU$DLX_TYPE (ID) =
;	  0490	
;	  0491	!++
;	  0492	! Functional description:
;	  0493	!
;	  0494	!        This routine returns the device type code for the
;	  0495	!        specified circuit.
;	  0496	!
;	  0497	! Formal parameters:
;	  0498	!
;	  0499	!        .ID    Identifier for circuit
;	  0500	!
;	  0501	! Implicit inputs: none
;	  0502	! Implicit outputs: none
;	  0503	!
;	  0504	! Routine value:
;	  0505	!
;	  0506	!        Circuit device type code
;	  0507	!
;	  0508	! Side effects: none
;	  0509	!
;	  0510	!--
;	  0511	
;	  0512	    begin
;	  0513	    28						!Type is always a KDP in MCB
;	  0514	    end;					! End of NMU$DLX_TYPE


						.SBTTL	UD.TYPE
000000	012700  000034 			UD.TYPE::
						MOV	#34,R0				;					0489
000004	000207 					RTS	PC
; Routine Size:  3 words,	Routine Base:  $CODE$ + 1116
; Maximum stack depth per invocation:  0 words


;	  0515	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  19
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (7)

;	  0516	global routine NMU$DLX_INITIALIZE (ID, RESPONSE_POINTER) =
;	  0517	
;	  0518	!++
;	  0519	! Functional description:
;	  0520	!
;	  0521	!        This routine intializes protocol on links that need
;	  0522	!        such a service.
;	  0523	!
;	  0524	! Formal parameters:
;	  0525	!
;	  0526	!        .ID    Identifier for circuit
;	  0527	!
;	  0528	! Implicit inputs: none
;	  0529	! Implicit outputs: none
;	  0530	!
;	  0531	! Routine value: none
;	  0532	! Side effects: none
;	  0533	!
;	  0534	!--
;	  0535	
;	  0536	    begin
;	  0537	    $true
;	  0538	    end;					! End of NMU$DLX_INITIALIZE


						.SBTTL	UD.INIT
000000	012700  000001 			UD.INIT::
						MOV	#1,R0				;					0516
000004	000207 					RTS	PC
; Routine Size:  3 words,	Routine Base:  $CODE$ + 1124
; Maximum stack depth per invocation:  0 words


;	  0539	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  20
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (8)

;	  0540	global routine NMU$DLX_CLOSE (ID) =
;	  0541	
;	  0542	!++
;	  0543	! Functional description:
;	  0544	!
;	  0545	!        This routine releases the specified circuit from
;	  0546	!        use by Network Management.
;	  0547	!
;	  0548	! Formal parameters:
;	  0549	!
;	  0550	!        .ID    Identifier for circuit
;	  0551	!
;	  0552	! Implicit inputs: none
;	  0553	! Implicit outputs: none
;	  0554	!
;	  0555	! Routine value: none
;	  0556	! Side effects: none
;	  0557	!
;	  0558	!--
;	  0559	
;	  0560	    begin
;	  0561	
;	  0562	    local
;	  0563		DLXLUN : ref $DLX_LUN_BLOCK;
;	  0564	
;	  0565	!
;	  0566	! Find DLX_LUN_BLOCK for this request
;	  0567	!
;	  0568	
;	  0569	    if (DLXLUN = (selectone .ID of
;	  0570		    set
;	  0571		    [1] : DLUN0;
;	  0572		    [2] : DLUN1;
;	  0573		    [otherwise] : 0;
;	  0574		    tes)) nequ 0
;	  0575	    then
;	  0576		begin
;	  0577	
;	  0578		bind
;	  0579		    LUN$DL = DLXLUN [LUN$_LUN];
;	  0580	
;	  0581		$DLX$CLOSE;
;	  0582		DLXLUN [LUN$_TYPE] = 0;
;	  0583		$true
;	  0584		end
;	  0585	    else
;	  0586		$false
;	  0587	
;	  0588	!
;	  0589	    end;					! End of NMU$DLX_CLOSE
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  21
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (8)

						.SBTTL	UD.CLOSE
000000	004167  000000G			UD.CLOSE::
						JSR	R1,$SAVE2			;					0540
000004	162706  000012 				SUB	#12,SP
000010	016600  000022 				MOV	22(SP),R0			; ID,*					0569
000014	020027  000001 				CMP	R0,#1
000020	001003 					BNE	1$
000022	012701  000000'				MOV	#DLUN0,R1			; *,DLXLUN
000026	000410 					BR	3$
000030	020027  000002 			1$:	CMP	R0,#2
000034	001003 					BNE	2$
000036	012701  000004'				MOV	#DLUN1,R1			; *,DLXLUN
000042	000402 					BR	3$
000044	005001 				2$:	CLR	R1				; DLXLUN
000046	020707 					CMP	PC,PC				;					0574
000050	001457 				3$:	BEQ	7$
000052	012702  000004 				MOV	#4,R2				; *,ADR					0579
000056	060602 					ADD	SP,R2				; $DLX$IOSB+4,ADR
000060	012700  000003 				MOV	#3,R0				; *,$DLX$CNT
000064	005022 				4$:	CLR	(R2)+				; ADR
000066	077002 					SOB	R0,4$				; $DLX$CNT,*				0000
000070	012746  000006 				MOV	#6,-(SP)			;					0579
000074	060616 					ADD	SP,(SP)				; IOSB+4,*
000076	012746  000001 				MOV	#1,-(SP)
000102	004767  000000G				JSR	PC,US.EVENT
000106	005046 					CLR	-(SP)
000110	005046 					CLR	-(SP)
000112	005046 					CLR	-(SP)
000114	005046 					CLR	-(SP)
000116	005046 					CLR	-(SP)
000120	005046 					CLR	-(SP)
000122	012746  000000V				MOV	#$DLX.AST,-(SP)
000126	012746  000024 				MOV	#24,-(SP)
000132	060616 					ADD	SP,(SP)				; IOSB,*
000134	005046 					CLR	-(SP)
000136	011146 					MOV	(R1),-(SP)			; DLXLUN,*
000140	012746  016000 				MOV	#16000,-(SP)
000144	012746  006001 				MOV	#6001,-(SP)
000150	104377 					EMT	377
000152	022626 				5$:	CMP	(SP)+,(SP)+
000154	005716 					TST	(SP)				; IOSB
000156	001007 					BNE	6$
000160	012746  000006 				MOV	#6,-(SP)
000164	060616 					ADD	SP,(SP)				; IOSB+4,*
000166	005046 					CLR	-(SP)
000170	004767  000000G				JSR	PC,US.WAIT
000174	000766 					BR	5$
000176	105061  000002 			6$:	CLRB	2(R1)				; *(DLXLUN)				0582
000202	012700  000001 				MOV	#1,R0				;					0569
000206	000401 					BR	8$
000210	005000 				7$:	CLR	R0
000212	062706  000012 			8$:	ADD	#12,SP				;					0540
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  22
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (8)

000216	000207 					RTS	PC
; Routine Size:  72 words,	Routine Base:  $CODE$ + 1132
; Maximum stack depth per invocation:  24 words


;	  0590	
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  23
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (9)

;	  0591	routine $DLX_AST IO_INTERRUPT_ROUTINE =
;	  0592	
;	  0593	!++
;	  0594	! Functional description:
;	  0595	!
;	  0596	!
;	  0597	! Interrupt Service Routine for DLX Operation Complete
;	  0598	!
;	  0599	!
;	  0600	! Formal parameters:
;	  0601	!
;	  0602	!  .IO_STATUS_BLOCK - points at IOSB for this operation
;	  0603	!
;	  0604	! Implicit inputs: none
;	  0605	! Implicit outputs: none
;	  0606	!
;	  0607	! Routine value: none
;	  0608	! Side effects: none
;	  0609	!
;	  0610	!--
;	  0611	
;	  0612	    begin
;	  0613	
;	  0614	    map
;	  0615		IO_STATUS_BLOCK : ref $IO_STATUS_BLOCK;
;	  0616	
;	  0617	    NMU$SCHED_FLAG (IO_STATUS_BLOCK [IOSB$_EVENT]);
;	  0618	    PROCESS_WAKE;
;	  0619	    end;					! of $DLX_AST


						.SBTTL	$DLX.AST
000000	010046 				$DLX.AST:
						MOV	R0,-(SP)			;					0591
000002	016646  000002 				MOV	2(SP),-(SP)			; IO.STATUS.BLOCK,*			0617
000006	062716  000004 				ADD	#4,(SP)
000012	004767  000000G				JSR	PC,US.FLAG
000016	012746  000040 				MOV	#40,-(SP)
000022	012746  001041 				MOV	#1041,-(SP)
000026	104377 					EMT	377
000030	005726 					TST	(SP)+
000032	012600 					MOV	(SP)+,R0			;					0591

					;+
					;	RSX AST Service Routine Exit
					;-

000034	012716  000563 				MOV	#563,(SP)
000040	104377 					EMT	377
; Routine Size:  17 words,	Routine Base:  $CODE$ + 1352
; Maximum stack depth per invocation:  6 words
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  24
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (10)

;	  0620	routine MAP_TO_RESPONSE(ERROR_CODE,RESPONSE_POINTER) =
;	  0621	
;	  0622	!++
;	  0623	! Functional description:
;	  0624	!
;	  0625	!    Convert an ERROR_CODE into the appropriate RESPONSE_MESSAGE.
;	  0626	!
;	  0627	! Formal parameters:
;	  0628	!
;	  0629	!  .ERROR_CODE - the DLX Error Code Returned
;	  0630	!  .RESPONSE_POINTER - points at the RESPONSE buffer
;	  0631	!
;	  0632	! Implicit inputs: none
;	  0633	! Implicit outputs: none
;	  0634	!
;	  0635	! Routine value: none
;	  0636	! Side effects: none
;	  0637	!
;	  0638	!--
;	  0639	
;	  0640	    begin
;	  0641	
;	  0642	    local
;	  0643		RESPONSE_PTR,
;	  0644		NICE_CODE,
;	  0645		MESSAGE_PTR;
;	  0646	!
;	  0647	! Generate Correct Code and Error Message
;	  0648	!
;	  0649	    selectone .ERROR_CODE of
;	  0650	        set
;	L 0651	        GENERATE_RESPONSE_TEST($NM$DLX_ERRORS);
; %PRINT:	Management program error
; %PRINT:	Invalid identification
; %PRINT:	Hardware failure
; %PRINT:	Resource error
; %PRINT:	Resource error
; %PRINT:	Component in wrong state
; %PRINT:	Component in wrong state
; %PRINT:	Operation failure
; %PRINT:	Operation failure
; %PRINT:	Operation failure
; %PRINT:	Line communication error
; %PRINT:	Line communication error
; %PRINT:	Line communication error
;	  0652	
;	L 0653		[otherwise]:(NICE_CODE=$NICE$ERR_MPE;
; %PRINT:	Management program error
;	  0654			     MESSAGE_PTR = CH$ASCIC('Unknown Reason Code'));
;	  0655	        tes;
;	  0656	!
;	  0657	! Format Response Buffer
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  25
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (10)

;	  0658	!
;	  0659	    RESPONSE_PTR = .RESPONSE_POINTER;
;	  0660	    MESSAGE_PTR = ch$plus(.MESSAGE_PTR,-1);
;	  0661	    putb((.NICE_CODE),RESPONSE_PTR);
;	  0662	    putw(ERROR_CODE,RESPONSE_PTR);
;	  0663	    begin
;	  0664	    local
;	  0665		LENGTH;
;	  0666	    putb((LENGTH = minu(ch$rchar_a(MESSAGE_PTR),72)),RESPONSE_PTR);
;	  0667	    ch$move(.LENGTH,.MESSAGE_PTR,.RESPONSE_PTR);
;	  0668	    end;
;	  0669	    .ERROR_CODE
;	  0670	    end;					! of MAP_TO_RESPONSE



000010						.PSECT	$PLIT$,  RO ,  D  
000010	   040     111     156 		P.AAB:	.ASCII	/ In/
000013	   164     145     162 			.ASCII	/ter/
000016	   156     141     154 			.ASCII	/nal/
000021	   040     102     165 			.ASCII	/ Bu/
000024	   146     146     145 			.ASCII	/ffe/
000027	   162     040     114 			.ASCII	/r L/
000032	   145     156     147 			.ASCII	/eng/
000035	   164     150     040 			.ASCII	/th /
000040	   103     157     156 			.ASCII	/Con/
000043	   146     165     163 			.ASCII	/fus/
000046	   151     157     156 			.ASCII	/ion/
000051	   000 					.ASCII	<00>
000052	   016     125     156 		P.AAC:	.ASCII	<16>/Un/
000055	   153     156     157 			.ASCII	/kno/
000060	   167     156     040 			.ASCII	/wn /
000063	   105     156     164 			.ASCII	/Ent/
000066	   151     164     171 			.ASCII	/ity/
000071	   000 					.ASCII	<00>
000072	   025     105     156 		P.AAD:	.ASCII	<25>/En/
000075	   164     151     164 			.ASCII	/tit/
000100	   171     040     104 			.ASCII	/y D/
000103	   145     166     151 			.ASCII	/evi/
000106	   143     145     040 			.ASCII	/ce /
000111	   106     141     151 			.ASCII	/Fai/
000114	   154     165     162 			.ASCII	/lur/
000117	   145 					.ASCII	/e/
000120	   024     116     157 		P.AAE:	.ASCII	<24>/No/
000123	   040     104     171 			.ASCII	/ Dy/
000126	   156     141     155 			.ASCII	/nam/
000131	   151     143     040 			.ASCII	/ic /
000134	   122     145     163 			.ASCII	/Res/
000137	   157     165     162 			.ASCII	/our/
000142	   143     145     163 			.ASCII	/ces/
000145	   000 					.ASCII	<00>
000146	   020     116     157 		P.AAF:	.ASCII	<20>/No/
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  26
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (10)

000151	   040     111     057 			.ASCII	/ I/<57>
000154	   117     040     122 			.ASCII	/O R/
000157	   145     163     157 			.ASCII	/eso/
000162	   165     162     143 			.ASCII	/urc/
000165	   145     163     000 			.ASCII	/es/<00>
000170	   025     105     156 		P.AAG:	.ASCII	<25>/En/
000173	   164     151     164 			.ASCII	/tit/
000176	   171     040     101 			.ASCII	/y A/
000201	   154     162     145 			.ASCII	/lre/
000204	   141     144     171 			.ASCII	/ady/
000207	   040     111     156 			.ASCII	/ In/
000212	   040     125     163 			.ASCII	/ Us/
000215	   145 					.ASCII	/e/
000216	   017     105     156 		P.AAH:	.ASCII	<17>/En/
000221	   164     151     164 			.ASCII	/tit/
000224	   171     040     116 			.ASCII	/y N/
000227	   157     164     040 			.ASCII	/ot /
000232	   117     160     145 			.ASCII	/Ope/
000235	   156 					.ASCII	/n/
000236	   021     117     160 		P.AAI:	.ASCII	<21>/Op/
000241	   145     162     141 			.ASCII	/era/
000244	   164     151     157 			.ASCII	/tio/
000247	   156     040     101 			.ASCII	/n A/
000252	   142     157     162 			.ASCII	/bor/
000255	   164     145     144 			.ASCII	/ted/
000260	   032     105     156 		P.AAJ:	.ASCII	<32>/En/
000263	   164     151     164 			.ASCII	/tit/
000266	   171     040     117 			.ASCII	/y O/
000271	   160     145     156 			.ASCII	/pen/
000274	   040     122     145 			.ASCII	/ Re/
000277	   161     165     145 			.ASCII	/que/
000302	   163     164     040 			.ASCII	/st /
000305	   106     141     151 			.ASCII	/Fai/
000310	   154     145     144 			.ASCII	/led/
000313	   000 					.ASCII	<00>
000314	   046     115     141 		P.AAK:	.ASCII	/&Ma/
000317	   151     156     164 			.ASCII	/int/
000322	   145     156     141 			.ASCII	/ena/
000325	   156     143     145 			.ASCII	/nce/
000330	   040     115     157 			.ASCII	/ Mo/
000333	   144     145     040 			.ASCII	/de /
000336	   125     156     163 			.ASCII	/Uns/
000341	   165     160     160 			.ASCII	/upp/
000344	   157     162     164 			.ASCII	/ort/
000347	   145     144     040 			.ASCII	/ed /
000352	   102     171     040 			.ASCII	/By /
000355	   105     156     164 			.ASCII	/Ent/
000360	   151     164     171 			.ASCII	/ity/
000363	   000 					.ASCII	<00>
000364	   024     123     145 		P.AAL:	.ASCII	<24>/Se/
000367	   156     144     057 			.ASCII	/nd/<57>
000372	   122     145     143 			.ASCII	/Rec/
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  27
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (10)

000375	   145     151     166 			.ASCII	/eiv/
000400	   145     040     106 			.ASCII	/e F/
000403	   141     151     154 			.ASCII	/ail/
000406	   165     162     145 			.ASCII	/ure/
000411	   000 					.ASCII	<00>
000412	   020     122     145 		P.AAM:	.ASCII	<20>/Re/
000415	   163     160     157 			.ASCII	/spo/
000420	   156     163     145 			.ASCII	/nse/
000423	   040     124     151 			.ASCII	/ Ti/
000426	   155     145     157 			.ASCII	/meo/
000431	   165     164     000 			.ASCII	/ut/<00>
000434	   042     123     124 		P.AAN:	.ASCII	/"ST/
000437	   101     122     124 			.ASCII	/ART/
000442	   040     122     145 			.ASCII	/ Re/
000445	   143     145     151 			.ASCII	/cei/
000450	   166     145     144 			.ASCII	/ved/
000453	   040     111     156 			.ASCII	/ In/
000456	   040     115     141 			.ASCII	/ Ma/
000461	   151     156     164 			.ASCII	/int/
000464	   145     156     141 			.ASCII	/ena/
000467	   156     143     145 			.ASCII	/nce/
000472	   040     115     157 			.ASCII	/ Mo/
000475	   144     145     000 			.ASCII	/de/<00>
000500	   023     125     156 		P.AAO:	.ASCII	<23>/Un/
000503	   153     156     157 			.ASCII	/kno/
000506	   167     156     040 			.ASCII	/wn /
000511	   122     145     141 			.ASCII	/Rea/
000514	   163     157     156 			.ASCII	/son/
000517	   040     103     157 			.ASCII	/ Co/
000522	   144     145 				.ASCII	/de/


						.SBTTL	MAP.TO.RESPONSE
001414						.PSECT	$CODE$,  RO 

000000	004167  000000G			MAP.TO.RESPONSE:
						JSR	R1,$SAVE4			;					0620
000004	016602  000016 				MOV	16(SP),R2			; ERROR.CODE,*				0649
000010	020227  177772 				CMP	R2,#-6
000014	001005 					BNE	1$
000016	012701  000011'				MOV	#P.AAB+1,R1			; *,MESSAGE.PTR				0651
000022	012700  177773 				MOV	#-5,R0				; *,NICE.CODE
000026	000530 					BR	18$				;					0649
000030	020227  177711 			1$:	CMP	R2,#-67
000034	001005 					BNE	2$
000036	012701  000053'				MOV	#P.AAC+1,R1			; *,MESSAGE.PTR				0651
000042	012700  177767 				MOV	#-11,R0				; *,NICE.CODE
000046	000520 					BR	18$				;					0649
000050	020227  177710 			2$:	CMP	R2,#-70
000054	001005 					BNE	3$
000056	012701  000073'				MOV	#P.AAD+1,R1			; *,MESSAGE.PTR				0651
000062	012700  177750 				MOV	#-30,R0				; *,NICE.CODE
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  28
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (10)

000066	000510 					BR	18$				;					0649
000070	020227  177775 			3$:	CMP	R2,#-3
000074	001003 					BNE	4$
000076	012701  000121'				MOV	#P.AAE+1,R1			; *,MESSAGE.PTR				0651
000102	000405 					BR	5$
000104	020227  177736 			4$:	CMP	R2,#-42				;					0649
000110	001005 					BNE	6$
000112	012701  000147'				MOV	#P.AAF+1,R1			; *,MESSAGE.PTR				0651
000116	012700  177761 			5$:	MOV	#-17,R0				; *,NICE.CODE
000122	000472 					BR	18$				;					0649
000124	020227  177770 			6$:	CMP	R2,#-10
000130	001003 					BNE	7$
000132	012701  000171'				MOV	#P.AAG+1,R1			; *,MESSAGE.PTR				0651
000136	000405 					BR	8$
000140	020227  177733 			7$:	CMP	R2,#-45				;					0649
000144	001005 					BNE	9$
000146	012701  000217'				MOV	#P.AAH+1,R1			; *,MESSAGE.PTR				0651
000152	012700  177765 			8$:	MOV	#-13,R0				; *,NICE.CODE
000156	000454 					BR	18$				;					0649
000160	020227  177761 			9$:	CMP	R2,#-17
000164	001003 					BNE	10$
000166	012701  000237'				MOV	#P.AAI+1,R1			; *,MESSAGE.PTR				0651
000172	000413 					BR	12$
000174	020227  177667 			10$:	CMP	R2,#-111			;					0649
000200	001003 					BNE	11$
000202	012701  000261'				MOV	#P.AAJ+1,R1			; *,MESSAGE.PTR				0651
000206	000405 					BR	12$
000210	020227  177703 			11$:	CMP	R2,#-75				;					0649
000214	001005 					BNE	13$
000216	012701  000315'				MOV	#P.AAK+1,R1			; *,MESSAGE.PTR				0651
000222	012700  177747 			12$:	MOV	#-31,R0				; *,NICE.CODE
000226	000430 					BR	18$				;					0649
000230	020227  177762 			13$:	CMP	R2,#-16
000234	001003 					BNE	14$
000236	012701  000365'				MOV	#P.AAL+1,R1			; *,MESSAGE.PTR				0651
000242	000413 					BR	16$
000244	020227  177666 			14$:	CMP	R2,#-112			;					0649
000250	001003 					BNE	15$
000252	012701  000413'				MOV	#P.AAM+1,R1			; *,MESSAGE.PTR				0651
000256	000405 					BR	16$
000260	020227  177702 			15$:	CMP	R2,#-76				;					0649
000264	001005 					BNE	17$
000266	012701  000435'				MOV	#P.AAN+1,R1			; *,MESSAGE.PTR				0651
000272	012700  177766 			16$:	MOV	#-12,R0				; *,NICE.CODE
000276	000404 					BR	18$				;					0649
000300	012700  177773 			17$:	MOV	#-5,R0				; *,NICE.CODE				0653
000304	012701  000501'				MOV	#P.AAO+1,R1			; *,MESSAGE.PTR				0654
000310	016604  000014 			18$:	MOV	14(SP),R4			; RESPONSE.POINTE,RESPONSE.PTR		0659
000314	110024 					MOVB	R0,(R4)+			; NICE.CODE,RESPONSE.PTR		0661
000316	116624  000016 				MOVB	16(SP),(R4)+			; ERROR.CODE,RESPONSE.PTR		0662
000322	116624  000017 				MOVB	17(SP),(R4)+			; ERROR.CODE,RESPONSE.PTR
000326	005000 					CLR	R0				;					0666
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  29
X00.26								 3-Jan-1983 03:14:30	DNET61:<MCB.NML>NMUDLX.B16.1 (10)

000330	156100  177777 				BISB	-1(R1),R0			; *(MESSAGE.PTR),*
000334	020027  000110 				CMP	R0,#110
000340	101402 					BLOS	19$
000342	012700  000110 				MOV	#110,R0
000346	010003 				19$:	MOV	R0,R3				; *,LENGTH
000350	110024 					MOVB	R0,(R4)+			; *,RESPONSE.PTR
000352	010346 					MOV	R3,-(SP)			; LENGTH,*				0667
000354	010146 					MOV	R1,-(SP)			; MESSAGE.PTR,*
000356	010446 					MOV	R4,-(SP)			; RESPONSE.PTR,*
000360	004767  000000G				JSR	PC,BL$MOV
000364	062706  000006 				ADD	#6,SP				;					0640
000370	010200 					MOV	R2,R0				;					0620
000372	000207 					RTS	PC
; Routine Size:  126 words,	Routine Base:  $CODE$ + 1414
; Maximum stack depth per invocation:  9 words


;	  0671	end						! End of NMUDLX
;	  0672	
;	  0673	eludom



;					OTS external references
						.GLOBL	$SAVE4, $SAVE3, $SAVE2, BL$MOV


;					PSECT SUMMARY
;
;	Psect Name			Words	  Attributes
;	 $OWN$				    5	    RW ,  D  ,  LCL,  REL,  CON
;	 $PLIT$				  170	    RO ,  D  ,  LCL,  REL,  CON
;	 $CODE$				  516	    RO ,  I  ,  LCL,  REL,  CON




;				LIBRARY STATISTICS
;
;					     -------- Symbols --------    Blocks
;	File				     Total    Loaded   Percent      Read
;
;  DNET61:<MCB.NML>NMULIB.L16.1		      2716       101         3         0





; Size:		516 code + 175 data words
; Run Time:	00:09.8
; Elapsed Time:	00:14.5
; Memory Used:	44 pages
NMUDLX								24-May-1985 13:30:25	TOPS-20 Bliss-16 2A(530)	    Page  30
X00.26											

; Compilation Complete
ADR				 208	 209#	 211#
AMOUNT				 369	 391#	 392	 408	 465	 470#	 471
BUFFER				 124	 140	 141	 144	 166	 167	 168	 169
CH$ASCIC			 120	 654
CIRCUIT_			 313
CIRCUIT_ID			 250	 313
DLUN0				 239	 298	 382	 457	 571
DLUN1				 240	 299	 383	 458	 572
DLX$LUN$FIELDS			 215#	 228
DLX$_CLOSE			 165	 177#
DLX$_LUN_ALLOCATION		 224#
DLX$_LUN_SIZE			 223#	 228
DLX$_OPEN			 163	 176#
DLX$_READ			 167	 178#
DLX$_WRITE			 169	 179#
DLXLUN				 285	 295#	 311	 326#	 327	 370	 380#	 389	 445	 455#	 468	 563
				 569#	 579	 582#
DLX_DUMP			 298
DLX_ID				 284
DLX_LOAD			 296	 298
DLX_NEXT			 241
DLX_OTHER			 296
ENTITY				 124	 151	 152	 162	 163
EQLU				 301
ERROR_CODE			 620	 649	 662	 669
EVENT_BLOCK_SIZE		 193	 210
FUNCTION			 124	 138
GENERATE_RESPONSE_TEST		 119#	 651
ID				 332	 380	 412	 455	 489	 516	 540	 569
IE$ABO				 113
IE$ALN				 110
IE$BBE				 108
IE$BDV				 107	 395	 474
IE$CNR				 114
IE$DAA				 111
IE$DNR				 109
IE$EOT				 118
IE$ISQ				 115
IE$NDR				 303
IE$NLN				 112
IE$SPC				 106
IE$SRE				 116
IE$TMO				 117	 403
IO$CON				 176
IO$DIS				 177
IO$RCV				 178
IO$XMT				 179
IOSB				 129	 131	 135	 136	 138	 154	 155	 157	 158	 205	 207	 288
				 290	 303#	 321	 323	 373	 375	 395#	 399	 402	 403	 448	 450
				 474#	 478	 481
IOSB$ERR			 158	 189#	 321	 323	 399	 402	 403	 478	 481
IOSB$ERR1			 190#
IOSB$ERROR			 154	 187#	 188	 303	 395	 474
IOSB$_COUNT			 157	 192#
IOSB$_EVENT			 136	 155	 193#	 209	 617
IO_INTERRUPT_LINKAGE		  97
IO_INTERRUPT_ROUTINE		 591#
IO_STATUS_BLOCK			 615	 617
LUN$DL				 138	 311#	 389#	 468#	 579#
LUN$_ID				 219#	 327
LUN$_LUN			 217#	 311	 389	 468	 579
LUN$_TYPE			 218#	 298	 299	 326	 582
MAP_TO_RESPONSE			  98	 323	 402	 481	 620*
MCB$IOSB$FIELDS			 185#	 202
MCB$_IOSB_ALLOCATION		 198#
MCB$_IOSB_SIZE			 197#	 202
MESSAGE_PTR			 120#	 645	 654#	 660#	 666	 667
NICE_CODE			 121#	 644	 653#	 661
NML_ERROR			 119	 121
NMU$DLX_CLOSE			  90	 540*
NMU$DLX_INITIALIZE		  89	 516*
NMU$DLX_OPEN			  85	 250*
NMU$DLX_TIMED_READ		  86	 332*
NMU$DLX_TYPE			  88	 489*
NMU$DLX_WRITE			  87	 412*
NMU$SCHED_EVENT			 136
NMU$SCHED_FLAG			 617
NMU$SCHED_MANAGER		 248*
NMU$SCHED_WAIT			 155#
NMU$_DL0_DEVICE_LUN		 239
NMU$_DL1_DEVICE_LUN		 240
NMUDLX				  35#
PROCESS_WAKE			 618
PTR				 332	 392	 412	 471
PUTB				 661	 666
PUTW				 662
QIO$S				 138
RESPONSE_POINTER		 250	 323	 332	 402	 412	 481	 516	 620	 659
RESPONSE_PTR			 643	 659#	 661	 662	 666	 667
RSX_ERROR			 119	 120
STRING				 119	 120
TIMEOUT				 166	 167	 332	 392
TYPE				 124	 148	 149	 162	 163
USAGE				 250	 296	 326	 332	 412
$$DLX_INTERFACE_EXPAND		 124#	 163	 165	 167	 169
$BYTE				 218	 219
$CONTINUE			 191
$DLX$CLOSE			 164#	 581
$DLX$CNT			 210
$DLX$IOSB			 207#	 209
$DLX$OPEN			 162#	 313
$DLX$READ			 166#	 392
$DLX$WRITE			 168#	 471
$DLX_AST			  97	 138	 591*
$DLX_LUN_BLOCK			 227#	 239	 240	 285	 370	 445	 563
$FALSE				 482	 586
$FIELD				 184	 214
$FIELD_SET_SIZE			 197	 223
$FIELD_SET_UNITS		 198	 224
$INTEGER			 187	 192	 217
$IO_STATUS_BLOCK		 131	 201#	 207	 288	 373	 448	 615
$IO_STATUS_BLOCK_INITIALIZE	 135	 205#	 290	 375	 450
$NICE$ERR_CWS			 111	 112
$NICE$ERR_HWF			 108
$NICE$ERR_IID			 107
$NICE$ERR_LCE			 116	 117	 118
$NICE$ERR_MPE			 106	 653
$NICE$ERR_OPF			 113	 114	 115
$NICE$ERR_REE			 109	 110
$NM$DLX_ERRORS			 105#	 651
$OVERLAY			 188
$SUB_BLOCK			 193
$TINY_INTEGER			 189	 190
$TRUE				 136	 485	 537	 583