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