Trailing-Edge
-
PDP-10 Archives
-
BB-P363B-SM_1985
-
mcb/nml/nmunet.lst
There are no other files named nmunet.lst in the archive.
24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 1
3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (1)
; 0001 ! <BRANDT.DEVELOPMENT>NMUNET.B16.1 21-Oct-82 14:39:37, Edit by BRANDT
; 0002 !
; 0003 ! Ident 09.
; 0004 ! Rework code in ASSIGN_A_LUN to compress code size.
; 0005 !
; 0006 ! <BRANDT.DEVELOPMENT>NMUNET.B16.1 21-Oct-82 9:00:17, Edit by BRANDT
; 0007 !
; 0008 ! Ident 08.
; 0009 ! In NMU$NETWORK_OPEN, for source_links having no node name, convert
; 0010 ! the node number to an ASCII string and use that for the name.
; 0011 ! Remove code from ident 5.
; 0012 ! And finally some simple code compression so we can task build.
; 0013 !
; 0014 ! <BRANDT.DEVELOPMENT>NMUNET.B16.1 14-Sep-82 14:22:34, Edit by BRANDT
; 0015 !
; 0016 ! Ident 07.
; 0017 ! In NMU$NETWORK_OPEN set the error detail field of a response
; 0018 ! message for RSX error codes other than IE$NRJ. Thus "rejected
; 0019 ! by object" will no longer be a catch all error.
; 0020 !
; 0021 ! <BRANDT.DEVELOPMENT>NMUNET.B16.1 9-Sep-82 17:00:17, Edit by BRANDT
; 0022 !
; 0023 ! Ident 06.
; 0024 ! Change FAIL_TYPE mappings for reject codes 0 and 5.
; 0025 !
; 0026 ! <BRANDT.DEVELOPMENT>NMUNET.B16.1 9-Sep-82 15:30:17, Edit by BRANDT
; 0027 !
; 0028 ! Ident 05.
; 0029 ! In NMU$NETWORK_OPEN make a check for source_links to verify that
; 0030 ! a node name is supplied.
; 0031 !
; 0032 !NET:<PECKHAM.DEVELOPMENT>NMUNET.B16.3 25-Jun-82 19:39:37, Edit by PECKHAM
; 0033 !
; 0034 ! Ident 04.
; 0035 ! Add global symbols UN$USER, UN$PASSWORD, UN$ACCOUNT for access control
; 0036 ! (they are filled in by NMLEVT with data from NMX).
; 0037 ! In NMU$NETWORK_VALIDATE, check the connect accounting data
; 0038 ! against the strings supplied in the above.
; 0039 !
; 0040 !NET:<PECKHAM.DEVELOPMENT>NMUNET.B16.3 23-Mar-82 08:25:40, Edit by PECKHAM
; 0041 !
; 0042 ! Ident 03.
; 0043 ! Make response pointers optional in NMU$NETWORK_OPEN.
; 0044 !
; 0045 !NET:<PECKHAM.DEVELOPMENT>NMUNET.B16.3 3-Mar-82 08:37:38, Edit by PECKHAM
; 0046 !
; 0047 ! Ident 02.
; 0048 ! Revise to accomodate fix in SCX X1(42).
; 0049 ! After receiving NT$DSC/ABO/ABT, insure that an ABO is done.
; 0050 !
; 0051 !NET:<PECKHAM.DEVELOPMENT>NMUNET.B16.2 23-Jan-82 20:47:26, Edit by PECKHAM
; 0052 !
24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 2
3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (1)
; 0053 ! Ident 01.
; 0054 ! Fix call to NMU$SCHED_WAIT to include timeout value.
; 0055 !
; 0056 module NMUNET ( ! Task to task network communications
; 0057 ident = 'X01.09'
; 0058 ) =
; 0059 begin
; 0060 !
; 0061 ! COPYRIGHT (c) 1980, 1981, 1982
; 0062 ! DIGITAL EQUIPMENT CORPORATION
; 0063 ! Maynard, Massachusetts
; 0064 !
; 0065 ! This software is furnished under a license and may be used
; 0066 ! and copied only in accordance with the terms of such license
; 0067 ! and with the inclusion of the above copyright notice. This
; 0068 ! software or any other copies thereof may not be provided or
; 0069 ! otherwise made available to any other person. No title to
; 0070 ! and ownership of the software is hereby transferred.
; 0071 !
; 0072 ! The information in this software is subject to change
; 0073 ! without notice and should not be construed as a commitment
; 0074 ! by DIGITAL EQUIPMENT CORPORATION.
; 0075 !
; 0076 ! DIGITAL assumes no responsibility for the use or reliability
; 0077 ! of its software on equipment which is not supplied by
; 0078 ! DIGITAL.
; 0079 !
; 0080
; 0081 !++
; 0082 ! Facility: LSG DECnet Network Management
; 0083 !
; 0084 ! Abstract: This module provides a "generic" interface to DECnet
; 0085 ! task to task communications.
; 0086 !
; 0087 ! As perceived by the user of these interfaces, there are
; 0088 ! two types of link ends: TARGET and SOURCE. A TARGET task
; 0089 ! (sometimes known as a SERVER) waits for another task to
; 0090 ! issue a connect to it. A SOURCE task issues a connect to
; 0091 ! the task it wishes to communicate with. Thus the major
; 0092 ! difference between the ends of a link is the link
; 0093 ! connection operation.
; 0094 !
; 0095 ! Environment: TOPS10/TOPS20 user mode, MCB RSX task level
; 0096 !
; 0097 ! Author: Scott G. Robinson, Creation Date: 26-JAN-81
; 0098 !
; 0099 ! From NMUNET.B36 by Steven M. Jenness
; 0100 !
; 0101 ! Modified by:
; 0102 !
; 0103 ! 02 - Fix Maximum Logical Links and Error Detail on Server Rejects
; 0104 ! 03 - Install Limit Protection code on ch$copy and ch$moves
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 3
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (1)
; 0105 ! 04 - Remove Synchronization Race Condition on LSB_CONNECTED
; 0106 ! 05 - Ensure no conflicts on simultaneous Transmits and Receives
; 0107 ! 06 - Prevent Queue Interlocks from deadlocking non-Interrupt processing
; 0108 ! 07 - Conform to Node_ID format in CONN_BLK
; 0109 ! 08 - Support Assignment of DLX Luns
; 0110 ! 09 - Have NETWORK_OPEN build a response message on error.
; 0111 ! 10 - Add a response code -2 to NETWORK_OPEN, to mean "don't retry".
; 0112 !
; 0113 !--
; 0114
; 0115 !<BLF/SYNONYM $FIELD=FIELD>
; 0116 !<BLF/SYNONYM %unquote =>
; 0117 !<BLF/PAGE>
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 4
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (2)
; 0118 !
; 0119 ! Include files
; 0120 !
; 0121
; 0122 library 'NMULIB'; ! All required definitions
; 0123
; 0124 !
; 0125 ! Global routines
; 0126 !
; 0127
; 0128 forward routine
; 0129 NMU$NETWORK_UTILITIES; ! Define global entry points
; 0130
; 0131 !
; 0132 ! Local routines
; 0133 !
; 0134
; 0135 forward routine
; 0136 DECLARE_NETWORK_EVENT : novalue, ! Declare a Network Event
; 0137 GND_AST : VANILLA_INTERRUPT_LINKAGE, ! Network Mailbox Interrupt Service
; 0138 PROCESS_MAILBOX_ENTRY : novalue, ! Process a Mailbox Entry
; 0139 IQ_SCAN, ! Scanning routine for info queue
; 0140 ASSIGN_A_LUN; ! Assign a LUN for Network Usage
; 0141
; 0142 !
; 0143 ! Global Items
; 0144 !
; 0145
; 0146 global literal !These are used in the NML
; 0147 LUN$NM = NMU$_NM_DEVICE_LUN,
; 0148 EFN$NM = NMU$_NM_DEVICE_FLAG,
; 0149 LUN$NS = NMU$_NETWORK_LUN,
; 0150 EFN$NS = NMU$_NETWORK_FLAG;
; 0151
; 0152 !
; 0153 ! Own variables
; 0154 !
; 0155
; 0156 literal
; 0157 NODE_ID_LENGTH = 9;
; 0158
; 0159 bind
; 0160 FAIL_TYPE = uplit
; 0161
; 0162 ! Failure code Reject/object code
; 0163 ! ------------ ------------------
; 0164
; 0165 ( 10, ! 0
; 0166 4, ! 1
; 0167 2, ! 2
; 0168 11, ! 3
; 0169 7, ! 4
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 5
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (2)
; 0170 6, ! 5
; 0171 9, ! 6
; 0172 12, ! 7
; 0173 15, ! 8
; 0174 14, ! 9
; 0175 rep 22 of (15), ! 10-31
; 0176 4, ! 32
; 0177 9, ! 33
; 0178 8, ! 34
; 0179 15, ! 35
; 0180 8, ! 36
; 0181 15, ! 37
; 0182 10, ! 38
; 0183 3, ! 39
; 0184 15, ! 40
; 0185 15, ! 41
; 0186 15, ! 42
; 0187 8): vector; ! 43
; 0188
; 0189 bind
; 0190 RETRY_CODE = uplit
; 0191
; 0192 ! Return code Reject/object code
; 0193 ! ----------- ------------------
; 0194
; 0195 ( -2, ! 0
; 0196 -1, ! 1
; 0197 -2, ! 2
; 0198 -2, ! 3
; 0199 -2, ! 4
; 0200 -2, ! 5
; 0201 -1, ! 6
; 0202 -2, ! 7
; 0203 -1, ! 8
; 0204 -2, ! 9
; 0205 rep 22 of (-2), ! 10-31
; 0206 -1, ! 32
; 0207 -1, ! 33
; 0208 -2, ! 34
; 0209 -2, ! 35
; 0210 -2, ! 36
; 0211 -2, ! 37
; 0212 -1, ! 38
; 0213 -2, ! 39
; 0214 -2, ! 40
; 0215 -2, ! 41
; 0216 -2, ! 42
; 0217 -2): vector; ! 43
; 0218 own
; 0219 LOCAL_NODE : block [ch$allocation (NODE_ID_LENGTH, 8)], ! Local node id
; 0220 NEXT_LINK_ID, ! Link identification sequence
; 0221 INFO_QUEUE : Q_HEADER, ! Queue of all link info blocks
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 6
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (2)
; 0222 NETWORK_LUNS : VECTOR [NMU$_NETWORK_MAX_LUNS]; ! LUN Assignment Vector
; 0223
; 0224 global
; 0225 UN$USER : block [ch$allocation (1 + 16, 8)],
; 0226 UN$PASSWORD : block [ch$allocation (1 + 8, 8)],
; 0227 UN$ACCOUNT : block [ch$allocation (1 + 16, 8)];
; 0228
; 0229 !
; 0230 ! Structures
; 0231 !
; 0232 ! All contained in NMUNTS
; 0233 !
; 0234 ! Local Macros
; 0235 !
; 0236
; 0237 macro
; M 0238 WAIT_FOR_NETWORK (LNKINFO, WHILE_COND) =
; M 0239 begin
; M 0240
; M 0241 bind
; M 0242 LNKSTS = LNKINFO[LINK_STATUS] : LINK_STATUS_BLOCK;
; M 0243
; M 0244 while (WHILE_COND) do
; M 0245 NMU$SCHED_WAIT(LNKINFO[LINK_EVENT], 0)
; 0246 end %;
; 0247
; 0248 !
; 0249 ! External routines
; 0250 !
; 0251
; 0252 external routine
; 0253 NMU$QUEUE_MANAGER, ! Queue management routines
; 0254 NMU$MEMORY_MANAGER, ! Memory management routines
; 0255 NMU$SCHED_MANAGER; ! Scheduler interface
; 0256
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 7
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (3)
; 0257 global routine %unquote NMU$NETWORK_INITIALIZE : novalue =
; 0258
; 0259 !++
; 0260 ! Functional description:
; 0261 !
; 0262 ! This routine initializes the network system interface.
; 0263 !
; 0264 ! Formal parameters: none
; 0265 !
; 0266 ! Routine value: none
; 0267 ! Side effects:
; 0268 !
; 0269 ! The local node id is retrieved for NMU$NETWORK_LOCAL.
; 0270 !
; 0271 !--
; 0272
; 0273 begin
; 0274
; 0275 own
; 0276 NETWORK_STATUS : $NETWORK_STATUS_BLOCK,
; 0277 OPN_DIR : OPNW$ (NMU$_NETWORK_LUN, NMU$_NETWORK_FLAG, NETWORK_STATUS,, <NMU$_NETWORK_MAX_LUNS>),
; P 0278 GLN_DIR : GLNW$ (NMU$_NETWORK_LUN, NMU$_NETWORK_FLAG, NETWORK_STATUS,,
; 0279 <LOCAL_NODE, NODE_ID_LENGTH, 1>);
; 0280
; 0281 !
; 0282 ! Interrupt Service Routine for SPA$ Initialization
; 0283 !
; 0284 routine SPA_AST NETWORK_INTERRUPT_ROUTINE =
; 0285 begin
; 0286
; 0287 map
; 0288 NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
; 0289
; 0290 bind
; 0291 NUMBER_OF_ENTRIES = NETWORK_STATUS_BLOCK [NETSB$IO_COUNT];
; 0292
; 0293 !
; 0294 ! See if we were successful and if so process a few entries
; 0295 ! from the mailbox.
; 0296 !
; 0297
; 0298 if .NETWORK_STATUS_BLOCK [NETSB$ERR] eql IS$SUC
; 0299 then
; 0300
; 0301 until .NUMBER_OF_ENTRIES eql 0 do
; 0302 begin
; 0303 PROCESS_MAILBOX_ENTRY ();
; 0304 NUMBER_OF_ENTRIES = .NUMBER_OF_ENTRIES - 1;
; 0305 end;
; 0306
; 0307 !
; 0308 end; !of SPA_AST
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 8
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (3)
.TITLE NMUNET
.IDENT /X01.09/
000000 .PSECT $PLIT$, RO , D
000000 000012 P.AAA: .WORD 12
000002 000004 .WORD 4
000004 000002 .WORD 2
000006 000013 .WORD 13
000010 000007 .WORD 7
000012 000006 .WORD 6
000014 000011 .WORD 11
000016 000014 .WORD 14
000020 000017 .WORD 17
000022 000016 .WORD 16
000024 000017 .WORD 17
000026 000017 .WORD 17
000030 000017 .WORD 17
000032 000017 .WORD 17
000034 000017 .WORD 17
000036 000017 .WORD 17
000040 000017 .WORD 17
000042 000017 .WORD 17
000044 000017 .WORD 17
000046 000017 .WORD 17
000050 000017 .WORD 17
000052 000017 .WORD 17
000054 000017 .WORD 17
000056 000017 .WORD 17
000060 000017 .WORD 17
000062 000017 .WORD 17
000064 000017 .WORD 17
000066 000017 .WORD 17
000070 000017 .WORD 17
000072 000017 .WORD 17
000074 000017 .WORD 17
000076 000017 .WORD 17
000100 000004 .WORD 4
000102 000011 .WORD 11
000104 000010 .WORD 10
000106 000017 .WORD 17
000110 000010 .WORD 10
000112 000017 .WORD 17
000114 000012 .WORD 12
000116 000003 .WORD 3
000120 000017 .WORD 17
000122 000017 .WORD 17
000124 000017 .WORD 17
000126 000010 .WORD 10
000130 177776 P.AAB: .WORD -2
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 9
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (3)
000132 177777 .WORD -1
000134 177776 .WORD -2
000136 177776 .WORD -2
000140 177776 .WORD -2
000142 177776 .WORD -2
000144 177777 .WORD -1
000146 177776 .WORD -2
000150 177777 .WORD -1
000152 177776 .WORD -2
000154 177776 .WORD -2
000156 177776 .WORD -2
000160 177776 .WORD -2
000162 177776 .WORD -2
000164 177776 .WORD -2
000166 177776 .WORD -2
000170 177776 .WORD -2
000172 177776 .WORD -2
000174 177776 .WORD -2
000176 177776 .WORD -2
000200 177776 .WORD -2
000202 177776 .WORD -2
000204 177776 .WORD -2
000206 177776 .WORD -2
000210 177776 .WORD -2
000212 177776 .WORD -2
000214 177776 .WORD -2
000216 177776 .WORD -2
000220 177776 .WORD -2
000222 177776 .WORD -2
000224 177776 .WORD -2
000226 177776 .WORD -2
000230 177777 .WORD -1
000232 177777 .WORD -1
000234 177776 .WORD -2
000236 177776 .WORD -2
000240 177776 .WORD -2
000242 177776 .WORD -2
000244 177777 .WORD -1
000246 177776 .WORD -2
000250 177776 .WORD -2
000252 177776 .WORD -2
000254 177776 .WORD -2
000256 177776 .WORD -2
000000 .PSECT $OWN$, D
000000 LOCAL.NODE:
.BLKW 5
000012 NEXT.LINK.ID:
.BLKW 1
000014 INFO.QUEUE:
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 10
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (3)
.BLKW 3
000022 NETWORK.LUNS:
.BLKW 10
000042 NETWORK.STATUS:
.BLKW 3
000050 006003 OPN.DIR:.WORD 6003
000052 016400 .WORD 16400
000054 000005 .WORD 5
000056 000005 .WORD 5
000060 000042' .WORD NETWORK.STATUS
000062 000000 .WORD 0
000064 000010 .WORD 10
000066 000000 .WORD 0
000070 000000 .WORD 0
000072 000000 .WORD 0
000074 000000 .WORD 0
000076 000000 .WORD 0
000100 006003 GLN.DIR:.WORD 6003
000102 016670 .WORD 16670
000104 000005 .WORD 5
000106 000005 .WORD 5
000110 000042' .WORD NETWORK.STATUS
000112 000000 .WORD 0
000114 000000' .WORD LOCAL.NODE
000116 000011 .WORD 11
000120 000001 .WORD 1
000122 000000 .WORD 0
000124 000000 .WORD 0
000126 000000 .WORD 0
000000 .PSECT $GLOB$, D
000000 UN$USER::
.BLKW 11
000022 UN$PASSWORD::
.BLKW 5
000034 UN$ACCOUNT::
.BLKW 11
.GLOBL UQ.RESET, UQ.INSERT, UQ.REMOVE
.GLOBL UQ.EXTRACT, UQ.LENGTH, UQ.SCAN
.GLOBL UQ.SEXTRACT, UM.RESET, UM.INITIALIZE
.GLOBL UM.GET, UM.RELEASE, US.CREATE
.GLOBL 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
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 11
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (3)
000002 LUN$NM== 2
000002 EFN$NM== 2
000005 LUN$NS== 5
000005 EFN$NS== 5
000000' FAIL.TYPE= P.AAA
000130' RETRY.CODE= P.AAB
.SBTTL SPA.AST
000000 .PSECT $CODE$, RO
000000 010046 SPA.AST:MOV R0,-(SP) ; 0284
000002 010146 MOV R1,-(SP)
000004 016601 000004 MOV 4(SP),R1 ; NETWORK.STATUS.,* 0291
000010 062701 000002 ADD #2,R1
000014 127627 000004 000001 CMPB @4(SP),#1 ; NETWORK.STATUS.,* 0298
000022 001006 BNE 2$
000024 005711 TST (R1) ; 0301
000026 001404 1$: BEQ 2$
000030 004767 000000V JSR PC,PROCESS.MAILBOX.ENTRY ; 0303
000034 005311 DEC (R1) ; 0304
000036 000773 BR 1$ ; 0301
000040 012601 2$: MOV (SP)+,R1 ; 0284
000042 012600 MOV (SP)+,R0
;+
; RSX AST Service Routine Exit
;-
000044 012716 000563 MOV #563,(SP)
000050 104377 EMT 377
; Routine Size: 21 words, Routine Base: $CODE$ + 0000
; Maximum stack depth per invocation: 5 words
; 0309 !
; 0310 ! Reset Network queues
; 0311 !
; 0312 NMU$QUEUE_RESET (INFO_QUEUE);
; 0313 !
; 0314 ! Reset Internal Link IDs
; 0315 !
; 0316 NEXT_LINK_ID = 1;
; 0317 !
; 0318 ! Assign the network LUNS and make them available for assignment
; 0319 !
; 0320
; 0321 INCR LUN_NUMBER from NMU$_NETWORK_LUN to NMU$_NETWORK_LUN + NMU$_NETWORK_MAX_LUNS do
; 0322 begin
; 0323 ALUN$S (.LUN_NUMBER, %ASCII'NS', 0);
; 0324 NETWORK_LUNS [.LUN_NUMBER - NMU$_NETWORK_LUN] = 0;
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 12
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (3)
; 0325 end;
; 0326
; 0327 !
; 0328 ! Assign the NM: device to its' LUN
; 0329 !
; 0330 ALUN$S (NMU$_NM_DEVICE_LUN, %ASCII'NM', 0);
; 0331 !
; 0332 ! Assign the NM: DLX device to its' LUNS
; 0333 !
; 0334 ALUN$S (NMU$_DL0_DEVICE_LUN, %ASCII'NM', 0);
; 0335 ALUN$S (NMU$_DL1_DEVICE_LUN, %ASCII'NM', 0);
; 0336 !
; 0337 ! Identify us to the network
; 0338 !
; 0339 dir$ (OPN_DIR);
; 0340 !
; 0341 ! We are now known to the network; Get local node information and
; 0342 ! construct local node information.
; 0343 !
; 0344 dir$ (GLN_DIR);
; 0345 !
; 0346 ! Startup Mailbox Interrupt Service
; 0347 !
; 0348 SPA$S (NMU$_NETWORK_LUN,, NETWORK_STATUS, SPA_AST, <GND_AST>);
; 0349 !
; 0350 end; ! End of NMU$NETWORK_INITIALIZE
.SBTTL UN.INIT
000000 010146 UN.INIT::
MOV R1,-(SP) ; 0257
000002 012746 000014' MOV #INFO.QUEUE,-(SP) ; 0312
000006 004767 000000G JSR PC,UQ.RESET
000012 012767 000001 000012' MOV #1,NEXT.LINK.ID ; 0316
000020 012701 000005 MOV #5,R1 ; *,LUN.NUMBER 0321
000024 005046 1$: CLR -(SP) ; 0323
000026 012746 051516 MOV #51516,-(SP)
000032 010146 MOV R1,-(SP) ; LUN.NUMBER,*
000034 012746 002007 MOV #2007,-(SP)
000040 104377 EMT 377
000042 010100 MOV R1,R0 ; LUN.NUMBER,* 0324
000044 006300 ASL R0
000046 005060 000010' CLR NETWORK.LUNS-12(R0)
000052 005201 INC R1 ; LUN.NUMBER 0321
000054 020127 000015 CMP R1,#15 ; LUN.NUMBER,*
000060 003761 BLE 1$
000062 005046 CLR -(SP) ; 0330
000064 012746 046516 MOV #46516,-(SP)
000070 012746 000002 MOV #2,-(SP)
000074 012746 002007 MOV #2007,-(SP)
000100 104377 EMT 377
000102 005016 CLR (SP) ; 0334
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 13
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (3)
000104 012746 046516 MOV #46516,-(SP)
000110 012746 000003 MOV #3,-(SP)
000114 012746 002007 MOV #2007,-(SP)
000120 104377 EMT 377
000122 005046 CLR -(SP) ; 0335
000124 012746 046516 MOV #46516,-(SP)
000130 012746 000004 MOV #4,-(SP)
000134 012746 002007 MOV #2007,-(SP)
000140 104377 EMT 377
000142 012746 000050' MOV #OPN.DIR,-(SP) ; 0339
000146 104377 EMT 377
000150 012746 000100' MOV #GLN.DIR,-(SP) ; 0344
000154 104377 EMT 377
000156 005046 CLR -(SP) ; 0348
000160 005046 CLR -(SP)
000162 005046 CLR -(SP)
000164 005046 CLR -(SP)
000166 005046 CLR -(SP)
000170 012746 000000V MOV #GND.AST,-(SP)
000174 012746 000000' MOV #SPA.AST,-(SP)
000200 012746 000042' MOV #NETWORK.STATUS,-(SP)
000204 005046 CLR -(SP)
000206 012746 000005 MOV #5,-(SP)
000212 012746 016420 MOV #16420,-(SP)
000216 012746 006001 MOV #6001,-(SP)
000222 104377 EMT 377
000224 012601 MOV (SP)+,R1 ; 0257
000226 000207 RTS PC
; Routine Size: 76 words, Routine Base: $CODE$ + 0052
; Maximum stack depth per invocation: 15 words
; 0351
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 14
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
; 0352 global routine %unquote NMU$NETWORK_OPEN (TYPE, CONN_BLK, RESPONSE_PTR,
; 0353 RESPONSE_LEN, RESPONSE_CODE) =
; 0354
; 0355 !++
; 0356 ! Functional description:
; 0357 !
; 0358 ! This routine opens a logical link. It blocks the running
; 0359 ! task until a successful connect is made or the link connection
; 0360 ! is aborted for some explicit reason.
; 0361 !
; 0362 ! TARGET_LINK: When this routine returns it will have filled
; 0363 ! in the connect block fields: OPTIONAL_DATA,
; 0364 ! USER, ACCOUNT and PASSWORD. The link must
; 0365 ! still be accepted or rejected.
; 0366 !
; 0367 ! SOURCE_LINK: When this routine returns it will have filled
; 0368 ! in the connect block fields: OPTIONAL_DATA,
; 0369 ! REJECT_REASON.
; 0370 !
; 0371 ! Formal parameters:
; 0372 !
; 0373 ! .TYPE Link type to open (SOURCE_LINK, TARGET_LINK).
; 0374 ! .CONN_BLK Address of a link connect block.
; 0375 ! .RESPONSE_PTR Pointer to a response buffer
; 0376 ! if 0, no response is built.
; 0377 ! .RESPONSE_LEN Address of a value which on input contains the
; 0378 ! maximum length of the response buffer, and on
; 0379 ! output contains the actual length (if any).
; 0380 ! .RESPONSE_CODE NICE error code to put into response message
; 0381 ! (usually LCF or MCF).
; 0382 !
; 0383 ! Routine value:
; 0384 !
; 0385 ! gtr 0 Link id to be used in all future link references.
; 0386 ! lss 0 DECnet link failure indication.
; 0387 !
; 0388 ! Side effects: none
; 0389 !
; 0390 !--
; 0391
; 0392 begin
; 0393
; 0394 map
; 0395 CONN_BLK : ref CONNECT_BLOCK;
; 0396
; 0397 local
; 0398 LINK_INFO : ref LINK_INFO_BLOCK,
; 0399 TEMP_PTR;
; 0400
; 0401 !
; 0402 ! The interrupt service routine for SOURCE_LINK connects.
; 0403 !
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 15
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
; 0404 routine CON_AST NETWORK_INTERRUPT_ROUTINE =
; 0405 begin
; 0406
; 0407 map
; 0408 NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
; 0409
; 0410 local
; 0411 LINK_INFO : ref LINK_INFO_BLOCK;
; 0412
; 0413 !
; 0414 ! Find our LINK_INFO block
; 0415 !
; 0416
; 0417 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
; 0418 then
; 0419 !
; 0420 ! Update status to reflect connect complete
; 0421 !
; 0422 begin
; 0423
; 0424 bind
; 0425 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 0426
; 0427 if .NETWORK_STATUS_BLOCK [NETSB$ERR] eql IS$SUC
; 0428 then
; 0429 begin
; 0430 LNKSTS [LSB_CONNECTED] = 1;
; 0431 LNKSTS [LSB_CLOSED] = 0;
; 0432 end;
; 0433
; 0434 LNKSTS [LSB_CCWAIT] = 0;
; 0435 !
; 0436 ! Startup waiting process
; 0437 !
; 0438 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 0439 end;
; 0440
; 0441 end; ! of CON_AST
.SBTTL CON.AST
000000 010046 CON.AST:MOV R0,-(SP) ; 0404
000002 010146 MOV R1,-(SP)
000004 012746 000014' MOV #INFO.QUEUE,-(SP) ; 0417
000010 016600 000006 MOV 6(SP),R0 ; NETWORK.STATUS.,*
000014 016046 000004 MOV 4(R0),-(SP)
000020 012746 000000V MOV #IQ.SCAN,-(SP)
000024 004767 000000G JSR PC,UQ.SCAN
000030 062706 000006 ADD #6,SP
000034 005700 TST R0 ; LINK.INFO
000036 001421 BEQ 2$
000040 012701 000050 MOV #50,R1 ; 0422
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 16
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
000044 060001 ADD R0,R1 ; LINK.INFO,*
000046 127627 000004 000001 CMPB @4(SP),#1 ; NETWORK.STATUS.,* 0427
000054 001004 BNE 1$
000056 052711 000400 BIS #400,(R1) ; 0430
000062 142711 000004 BICB #4,(R1) ; 0431
000066 142711 000040 1$: BICB #40,(R1) ; 0434
000072 010046 MOV R0,-(SP) ; LINK.INFO,* 0438
000074 004767 000000V JSR PC,DECLARE.NETWORK.EVENT
000100 005726 TST (SP)+ ; 0422
000102 012601 2$: MOV (SP)+,R1 ; 0404
000104 012600 MOV (SP)+,R0
;+
; RSX AST Service Routine Exit
;-
000106 012716 000563 MOV #563,(SP)
000112 104377 EMT 377
; Routine Size: 38 words, Routine Base: $CODE$ + 0302
; Maximum stack depth per invocation: 6 words
; 0442 !
; 0443 ! Main OPEN Processing
; 0444 !
; 0445 LINK_INFO = NMU$MEMORY_GET (LINK_INFO_BLOCK_ALLOCATION);
; 0446 LINK_INFO [LINK_ID] = (NEXT_LINK_ID = .NEXT_LINK_ID + 1);
; 0447
; 0448 if .NEXT_LINK_ID lss 0 then NEXT_LINK_ID = 1;
; 0449
; 0450 NMU$SCHED_EVENT (LINK_INFO [LINK_EVENT], $true);
; 0451 LINK_INFO [LINK_TYPE] = .TYPE;
; 0452 !
; 0453 ! All LINK_INFO_BLOCKs go into the INFO_QUEUE.
; 0454 !
; 0455 NMU$QUEUE_INSERT (INFO_QUEUE, LINK_INFO [LINK_QUEUE]);
; 0456 begin
; 0457
; 0458 bind
; 0459 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK,
; 0460 CONB = LINK_INFO [LINK_CONB] : RSX$_CONB_BLOCK,
; 0461 GNDB = LINK_INFO [LINK_GNDB] : RSX$_GNDB_BLOCK,
; 0462 LNKSB = LINK_INFO [LINK_LINK_SB] : $NETWORK_STATUS_BLOCK,
; 0463 INSB = LINK_INFO [LINK_IN_SB] : $NETWORK_STATUS_BLOCK,
; 0464 OUTSB = LINK_INFO [LINK_OUT_SB] : $NETWORK_STATUS_BLOCK;
; 0465
; 0466 !
; 0467 ! Setup other LINK_IDs for AST Routines
; 0468 !
; 0469 LNKSB [NETSB$LINK_ID] = .LINK_INFO [LINK_ID];
; 0470 INSB [NETSB$LINK_ID] = .LINK_INFO [LINK_ID];
; 0471 OUTSB [NETSB$LINK_ID] = .LINK_INFO [LINK_ID];
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 17
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
; 0472 !
; 0473 ! Format appropriate blocks for SOURCE and TARGET Links.
; 0474 !
; 0475 LNKSTS [LSB_CONNECTED] = 0;
; 0476
; 0477 if .TYPE eql TARGET_LINK
; 0478 then
; 0479 begin ! TARGET_LINK Open
; 0480 !
; 0481 ! Construct GNDB from CONN_BLK information. The GNDB is used to
; 0482 ! match incoming connects in PROCESS_MAILBOX_ENTRY.
; 0483 !
; 0484 GNDB [GNDB_DEST_OBJECT] = .CONN_BLK [CB_OBJECT];
; 0485 GNDB [GNDB_DEST_FORMAT] = 0; !Format 0 Descriptor
; 0486
; 0487 if .CONN_BLK [CB_DESCRIPTOR_LENGTH] GTR 0
; 0488 then
; 0489 begin !Format 1 Descriptor
; 0490 GNDB [GNDB_DEST_FORMAT] = 1;
; 0491 GNDB [GNDB_D1_LENGTH] = .CONN_BLK [CB_DESCRIPTOR_LENGTH];
; 0492 ch$move (.CONN_BLK [CB_DESCRIPTOR_LENGTH], .CONN_BLK [CB_DESCRIPTOR],
; 0493 ch$ptr (GNDB [GNDB_D1_TASK_NAME]));
; 0494 end;
; 0495
; 0496 !
; 0497 ! Flag we are waiting for a connect and that we are a server.
; 0498 ! We then wait for the incoming connect to happen.
; 0499 !
; 0500 LNKSTS [LSB_SERVER] = 1;
; 0501 LNKSTS [LSB_CIWAIT] = 1;
; 0502 LNKSTS [LSB_CCWAIT] = 0;
; 0503 end
; 0504 else
; 0505 begin ! SOURCE Open
; 0506 ch$copy (minu (ch$rchar (ch$plus (.CONN_BLK [CB_HOST], 2)), 6), ch$plus (.CONN_BLK [CB_HOST], 3),
; 0507 %C' ', 6, ch$ptr (CONB [CONB_NODE_NAME]));
; 0508 if (ch$rchar (ch$plus (.CONN_BLK [CB_HOST], 2)) eql 0)
; 0509 then ! If no node name,
; 0510 begin ! use node number as name
; 0511 linkage CBDSG = JSR (register=0,register=1,register=2;
; 0512 register=0) : nopreserve (1,2);
; 0513 external routine $CBDSG : CBDSG novalue;
; 0514 local TEMP_PTR;
; 0515
; 0516 TEMP_PTR = .CONN_BLK [CB_HOST]; ! Pointer to node number
; 0517 $CBDSG (CONB [CONB_NODE_NAME], ! ASCII output to here
; 0518 GETW(TEMP_PTR), ! Value to convert
; 0519 0; ! Zero suppress
; 0520 TEMP_PTR); ! For updated pointer
; 0521 end;
; 0522 CONB [CONB_FORMAT] = 0;
; 0523 CONB [CONB_OBJECT] = .CONN_BLK [CB_OBJECT];
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 18
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
; 0524
; 0525 if .CONN_BLK [CB_DESCRIPTOR_LENGTH] gtr 0
; 0526 then
; 0527 begin !Descriptor Format 1
; 0528 CONB [CONB_FORMAT] = 1;
; 0529 CONB [CONB_1_LENGTH] = .CONN_BLK [CB_DESCRIPTOR_LENGTH];
; 0530 ch$move (.CONB [CONB_1_LENGTH], .CONN_BLK [CB_DESCRIPTOR], ch$ptr (CONB [CONB_1_TASK_NAME]));
; 0531 end;
; 0532
; 0533 CONB [CONB_USER_LENGTH] = .CONN_BLK [CB_USERID_LENGTH];
; 0534 ch$move (.CONB [CONB_USER_LENGTH], .CONN_BLK [CB_USERID], ch$ptr (CONB [CONB_USER_ID]));
; 0535 CONB [CONB_PASSWORD_LENGTH] = .CONN_BLK [CB_PASSWORD_LENGTH];
; 0536 ch$move (.CONB [CONB_PASSWORD_LENGTH], .CONN_BLK [CB_PASSWORD], ch$ptr (CONB [CONB_PASSWORD]));
; 0537 CONB [CONB_ACCOUNT_LENGTH] = .CONN_BLK [CB_ACCOUNT_LENGTH];
; 0538 ch$move (.CONB [CONB_ACCOUNT_LENGTH], .CONN_BLK [CB_ACCOUNT], ch$ptr (CONB [CONB_ACCOUNT]));
; 0539
; 0540 if ASSIGN_A_LUN (.LINK_INFO) lss 0
; 0541 then
; 0542 return $false
; 0543 else
; 0544 begin
; 0545 LNKSTS [LSB_CCWAIT] = 1;
; 0546 LNKSTS [LSB_CIWAIT] = 0;
; 0547 LNKSTS [LSB_SERVER] = 0;
; 0548 TEMP_PTR = .CONN_BLK [CB_DATA];
; 0549 CONN_BLK [CB_DATA] = ch$ptr (CONN_BLK [CB_DATA_BUFFER]);
; P 0550 CON$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_LINK_SB], CON_AST,
; P 0551 <LINK_INFO [LINK_CONB],
; P 0552 RSX$_CONB_ALLOCATION, (if .CONN_BLK [CB_DATA_LENGTH] eql 0 then 0 else .TEMP_PTR),
; 0553 .CONN_BLK [CB_DATA_LENGTH], .CONN_BLK [CB_DATA], 16>);
; 0554 end;
; 0555
; 0556 end;
; 0557
; 0558 !
; 0559 ! Wait for the link to become valid or an error is detected
; 0560 !
; 0561 WAIT_FOR_NETWORK (LINK_INFO, (.LNKSTS [LSB_CIWAIT] or .LNKSTS [LSB_CCWAIT]));
; 0562 !
; 0563 ! We have had some activity on the logical link which has removed us from
; 0564 ! waiting.
; 0565 !
; 0566 begin
; 0567
; 0568 bind
; 0569 NETSTS = LINK_INFO [LINK_LINK_SB] : $NETWORK_STATUS_BLOCK;
; 0570
; 0571 if .NETSTS [NETSB$ERR] eql IS$SUC
; 0572 then
; 0573 begin
; 0574 CONN_BLK [CB_DATA_LENGTH] = .NETSTS [NETSB$CNT]; !SOURCE_LINK
; 0575 if .LINK_INFO [LINK_TYPE] eql TARGET_LINK
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 19
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
; 0576 then
; 0577 begin !TARGET_LINK Processing
; 0578
; 0579 bind
; 0580 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK,
; 0581 GNDB = LINK_INFO [LINK_GNDB] : RSX$_GNDB_BLOCK;
; 0582
; 0583 local
; 0584 TEMP_PTR,
; 0585 TEMP_PTR1,
; 0586 TEMP_LEN;
; 0587
; 0588 LNKSTS [LSB_CCWAIT] = 1;
; 0589 CONN_BLK [CB_HOST] = ch$ptr (CONN_BLK [CB_HOST_BUFFER]);
; 0590 TEMP_PTR1 = .CONN_BLK [CB_HOST];
; 0591 PUTB (0, TEMP_PTR1);
; 0592 PUTB (0, TEMP_PTR1);
; 0593 TEMP_PTR = ch$find_ch (6, ch$ptr (GNDB [GNDB_SOURCE_NODE_NAME]), %c' ');
; 0594 TEMP_LEN = (if ch$fail (.TEMP_PTR) then 6 else ch$diff (.TEMP_PTR,
; 0595 ch$ptr (GNDB [GNDB_SOURCE_NODE_NAME])));
; 0596 CONN_BLK [CB_HOST_LENGTH] = minu (.TEMP_LEN, 6) + 3;
; 0597 PUTB (.TEMP_LEN, TEMP_PTR1);
; 0598 ch$copy (minu (.TEMP_LEN, 6), ch$ptr (GNDB [GNDB_SOURCE_NODE_NAME]), 0, 6, .TEMP_PTR1);
; 0599 CONN_BLK [CB_TASK] = ch$ptr (CONN_BLK [CB_TASK_BUFFER]);
; 0600
; 0601 case .GNDB [GNDB_SOURCE_FORMAT] from 0 to 2 of
; 0602 set
; 0603
; 0604 [0] : !Format 0 Descriptor
; 0605 begin
; 0606 CONN_BLK [CB_TASK_LENGTH] = 0;
; 0607 end;
; 0608
; 0609 [1] : !Format 1 Descriptor
; 0610 begin
; 0611 CONN_BLK [CB_TASK_LENGTH] = .GNDB [GNDB_S1_LENGTH];
; 0612 ch$copy (minu (.GNDB [GNDB_S1_LENGTH], 16), ch$ptr (GNDB [GNDB_S1_TASK_NAME]), 0, 17,
; 0613 .CONN_BLK [CB_TASK]);
; 0614 end;
; 0615
; 0616 [2] : !Format 2 Descriptor
; 0617 begin
; 0618 CONN_BLK [CB_TASK_LENGTH] = .GNDB [GNDB_S2_LENGTH];
; 0619 ch$copy (minu (.GNDB [GNDB_S2_LENGTH], 16), ch$ptr (GNDB [GNDB_S2_TASK_NAME]), 0, 17,
; 0620 .CONN_BLK [CB_TASK]);
; 0621 end;
; 0622 tes;
; 0623
; 0624 CONN_BLK [CB_USERID] = ch$ptr (CONN_BLK [CB_USERID_BUFFER]);
; 0625 CONN_BLK [CB_USERID_LENGTH] = .GNDB [GNDB_SOURCE_TASK_LENGTH];
; 0626 ch$copy (minu (.GNDB [GNDB_SOURCE_TASK_LENGTH], 16), ch$ptr (GNDB [GNDB_SOURCE_TASK_ID]), 0, 17,
; 0627 .CONN_BLK [CB_USERID]);
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 20
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
; 0628 CONN_BLK [CB_PASSWORD] = ch$ptr (CONN_BLK [CB_PASSWORD_BUFFER]);
; 0629 CONN_BLK [CB_PASSWORD_LENGTH] = .GNDB [GNDB_SOURCE_PASSWORD_LENGTH];
; 0630 ch$copy (minu (.GNDB [GNDB_SOURCE_PASSWORD_LENGTH], 8), ch$ptr (GNDB [GNDB_SOURCE_PASSWORD]), 0,
; 0631 9, .CONN_BLK [CB_PASSWORD]);
; 0632 CONN_BLK [CB_ACCOUNT] = ch$ptr (CONN_BLK [CB_ACCOUNT_BUFFER]);
; 0633 CONN_BLK [CB_ACCOUNT_LENGTH] = .GNDB [GNDB_SOURCE_ACCOUNT_LENGTH];
; 0634 ch$copy (minu (.GNDB [GNDB_SOURCE_ACCOUNT_LENGTH], 16), ch$ptr (GNDB [GNDB_SOURCE_ACCOUNT]), 0,
; 0635 17, .CONN_BLK [CB_ACCOUNT]);
; 0636 CONN_BLK [CB_DATA] = ch$ptr (CONN_BLK [CB_DATA_BUFFER]);
; 0637 CONN_BLK [CB_DATA_LENGTH] = .GNDB [GNDB_OPTIONAL_LENGTH];
; 0638 ch$copy (minu (.GNDB [GNDB_OPTIONAL_LENGTH], 16), ch$ptr (GNDB [GNDB_OPTIONAL_DATA]), 0, 17,
; 0639 .CONN_BLK [CB_DATA]);
; 0640 end;
; 0641
; 0642 .LINK_INFO [LINK_ID]
; 0643 end
; 0644 else
; 0645 begin !Link Connect Unsuccessful
; 0646 !
; 0647 ! Source links can still return optional data so ensure count is correct.
; 0648 !
; 0649
; 0650 CONN_BLK [CB_REJECT_CODE] = 0;
; 0651 if .LINK_INFO [LINK_TYPE] eql SOURCE_LINK
; 0652 then
; 0653 begin
; 0654 CONN_BLK [CB_DATA_LENGTH] = .NETSTS [NETSB$CNT];
; 0655 if .NETSTS [NETSB$ERR] eql IE$NRJ
; 0656 then
; 0657 begin
; 0658 CONN_BLK [CB_REJECT_CODE] = .NETSTS [NETSB$CNT];
; 0659 CONN_BLK [CB_DATA_LENGTH] = 0;
; 0660 end
; 0661 end;
; 0662
; 0663 !
; 0664 ! Build a response message
; 0665 !
; 0666
; 0667 if .RESPONSE_PTR neq 0
; 0668 then
; P 0669 .RESPONSE_LEN = $RESPONSE (.RESPONSE_PTR, .RESPONSE_CODE,
; P 0670 (selectone .NETSTS [NETSB$ERR] of ! Error detail
; P 0671 set
; P 0672 [IE$ABO]: 15; ! Abort by management
; P 0673 [IE$URJ]: 5; ! Rejected by object
; P 0674 [IE$BAD]: 8; ! Access Control Rejected
; P 0675 [IE$SPC,
; P 0676 IE$RSU]: 4; ! Network resources
; P 0677 [IE$NNT]: 3; ! Node unreachable
; P 0678 [IS$DAO]: 9; ! Object too busy
; P 0679 [IE$NRJ]: .FAIL_TYPE [.CONN_BLK[CB_REJECT_CODE]];
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 21
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
; P 0680 [otherwise]: 10; ! No response from object
; 0681 tes));
; 0682
; 0683 !
; 0684 ! Return LINK_INFO Resources
; 0685 !
; 0686 NETWORK_LUNS [.LINK_INFO [LINK_LUN] - NMU$_NETWORK_LUN] = 0;
; 0687 NMU$QUEUE_EXTRACT (INFO_QUEUE, .LINK_INFO);
; 0688 NMU$MEMORY_RELEASE (.LINK_INFO, LINK_INFO_BLOCK_ALLOCATION);
; 0689 -1
; 0690 end
; 0691
; 0692 end
; 0693 end
; 0694 end; ! End of NMU$NETWORK_OPEN
.GLOBL $CBDSG
.SBTTL UN.OPEN
000000 004167 000000G UN.OPEN::
JSR R1,$SAVE5 ; 0352
000004 162706 000022 SUB #22,SP
000010 012746 000236 MOV #236,-(SP) ; 0445
000014 004767 000000G JSR PC,UM.GET
000020 010066 000010 MOV R0,10(SP) ; *,LINK.INFO
000024 012700 000006 MOV #6,R0 ; 0446
000030 066600 000010 ADD 10(SP),R0 ; LINK.INFO,*
000034 010066 000020 MOV R0,20(SP)
000040 016700 000012' MOV NEXT.LINK.ID,R0
000044 005200 INC R0
000046 010067 000012' MOV R0,NEXT.LINK.ID
000052 010076 000020 MOV R0,@20(SP)
000056 002003 BGE 1$ ; 0448
000060 012767 000001 000012' MOV #1,NEXT.LINK.ID
000066 016666 000010 000016 1$: MOV 10(SP),16(SP) ; LINK.INFO,* 0450
000074 062766 000036 000016 ADD #36,16(SP)
000102 016616 000016 MOV 16(SP),(SP)
000106 012746 000001 MOV #1,-(SP)
000112 004767 000000G JSR PC,US.EVENT
000116 012700 000044 MOV #44,R0 ; 0451
000122 066600 000012 ADD 12(SP),R0 ; LINK.INFO,*
000126 010066 000016 MOV R0,16(SP)
000132 016610 000054 MOV 54(SP),(R0) ; TYPE,*
000136 012716 000014' MOV #INFO.QUEUE,(SP) ; 0455
000142 016646 000012 MOV 12(SP),-(SP) ; LINK.INFO,*
000146 004767 000000G JSR PC,UQ.INSERT
000152 012700 000050 MOV #50,R0 ; 0459
000156 066600 000014 ADD 14(SP),R0 ; LINK.INFO,*
000162 010066 000016 MOV R0,16(SP)
000166 012700 000104 MOV #104,R0 ; 0460
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 22
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
000172 066600 000014 ADD 14(SP),R0 ; LINK.INFO,*
000176 010005 MOV R0,R5
000200 012700 000054 MOV #54,R0 ; 0461
000204 066600 000014 ADD 14(SP),R0 ; LINK.INFO,*
000210 010066 000012 MOV R0,12(SP)
000214 012700 000014 MOV #14,R0 ; 0462
000220 066600 000014 ADD 14(SP),R0 ; LINK.INFO,*
000224 010004 MOV R0,R4
000226 017664 000024 000004 MOV @24(SP),4(R4) ; 0469
000234 016600 000014 MOV 14(SP),R0 ; LINK.INFO,* 0470
000240 016460 000004 000026 MOV 4(R4),26(R0) ; *,*(LINK.INFO)
000246 016460 000004 000034 MOV 4(R4),34(R0) ; *,*(LINK.INFO) 0471
000254 042776 000400 000016 BIC #400,@16(SP) ; 0475
000262 016666 000054 000010 MOV 54(SP),10(SP) ; CONN.BLK,* 0484
000270 012700 000034 MOV #34,R0 ; 0487
000274 066600 000010 ADD 10(SP),R0
000300 010066 000006 MOV R0,6(SP)
000304 026627 000056 000001 CMP 56(SP),#1 ; TYPE,* 0477
000312 001056 BNE 3$
000314 012701 000004 MOV #4,R1 ; 0484
000320 066601 000012 ADD 12(SP),R1
000324 010100 MOV R1,R0
000326 016601 000010 MOV 10(SP),R1
000332 116160 000004 000001 MOVB 4(R1),1(R0)
000340 105010 CLRB (R0) ; 0485
000342 005776 000006 TST @6(SP) ; 0487
000346 003423 BLE 2$
000350 112710 000001 MOVB #1,(R0) ; 0490
000354 016600 000012 MOV 12(SP),R0 ; 0491
000360 017660 000006 000006 MOV @6(SP),6(R0)
000366 016016 000006 MOV 6(R0),(SP) ; 0493
000372 010100 MOV R1,R0
000374 016046 000032 MOV 32(R0),-(SP)
000400 016646 000014 MOV 14(SP),-(SP)
000404 062716 000010 ADD #10,(SP)
000410 004767 000000G JSR PC,BL$MOV
000414 022626 CMP (SP)+,(SP)+ ; 0489
000416 152776 000200 000016 2$: BISB #200,@16(SP) ; 0500
000424 152776 000100 000016 BISB #100,@16(SP) ; 0501
000432 142776 000040 000016 BICB #40,@16(SP) ; 0502
000440 062706 000006 ADD #6,SP ; 0479
000444 000167 000524 JMP 10$ ; 0477
000450 017601 000010 3$: MOV @10(SP),R1 ; 0506
000454 005016 CLR (SP)
000456 116116 000002 MOVB 2(R1),(SP)
000462 021627 000006 CMP (SP),#6
000466 101402 BLOS 4$
000470 012716 000006 MOV #6,(SP)
000474 017646 000010 4$: MOV @10(SP),-(SP)
000500 062716 000003 ADD #3,(SP)
000504 012746 000040 MOV #40,-(SP) ; 0507
000510 012746 000006 MOV #6,-(SP)
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 23
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
000514 010546 MOV R5,-(SP)
000516 012746 177773 MOV #-5,-(SP)
000522 004767 000000G JSR PC,BL$CPY
000526 105761 000002 TSTB 2(R1) ; 0508
000532 001015 BNE 5$
000534 017603 000022 MOV @22(SP),R3 ; *,TEMP.PTR 0516
000540 112366 000040 MOVB (R3)+,40(SP) ; TEMP.PTR,$$GETB.X 0518
000544 112366 000041 MOVB (R3)+,41(SP) ; TEMP.PTR,$$GETB.X
000550 016601 000040 MOV 40(SP),R1 ; $$GETB.X,*
000554 010500 MOV R5,R0 ; 0517
000556 005002 CLR R2
000560 004767 000000G JSR PC,$CBDSG
000564 010003 MOV R0,R3
000566 012700 000006 5$: MOV #6,R0 ; 0522
000572 060500 ADD R5,R0
000574 105010 CLRB (R0)
000576 016601 000022 MOV 22(SP),R1 ; 0523
000602 116160 000004 000001 MOVB 4(R1),1(R0)
000610 005776 000020 TST @20(SP) ; 0525
000614 003420 BLE 6$
000616 112710 000001 MOVB #1,(R0) ; 0528
000622 017665 000020 000010 MOV @20(SP),10(R5) ; 0529
000630 016516 000010 MOV 10(R5),(SP) ; 0530
000634 010100 MOV R1,R0
000636 016046 000032 MOV 32(R0),-(SP)
000642 010546 MOV R5,-(SP)
000644 062716 000012 ADD #12,(SP)
000650 004767 000000G JSR PC,BL$MOV
000654 022626 CMP (SP)+,(SP)+ ; 0527
000656 016600 000022 6$: MOV 22(SP),R0 ; 0533
000662 016065 000014 000032 MOV 14(R0),32(R5)
000670 016516 000032 MOV 32(R5),(SP) ; 0534
000674 016046 000012 MOV 12(R0),-(SP)
000700 010546 MOV R5,-(SP)
000702 062716 000034 ADD #34,(SP)
000706 004767 000000G JSR PC,BL$MOV
000712 016600 000026 MOV 26(SP),R0 ; 0535
000716 016065 000030 000054 MOV 30(R0),54(R5)
000724 016516 000054 MOV 54(R5),(SP) ; 0536
000730 016046 000026 MOV 26(R0),-(SP)
000734 010546 MOV R5,-(SP)
000736 062716 000056 ADD #56,(SP)
000742 004767 000000G JSR PC,BL$MOV
000746 016600 000032 MOV 32(SP),R0 ; 0537
000752 016065 000024 000066 MOV 24(R0),66(R5)
000760 016516 000066 MOV 66(R5),(SP) ; 0538
000764 016046 000022 MOV 22(R0),-(SP)
000770 010546 MOV R5,-(SP)
000772 062716 000070 ADD #70,(SP)
000776 004767 000000G JSR PC,BL$MOV
001002 016616 000042 MOV 42(SP),(SP) ; LINK.INFO,* 0540
001006 004767 000000V JSR PC,ASSIGN.A.LUN
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 24
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
001012 005700 TST R0
001014 002005 BGE 7$
001016 062706 000034 ADD #34,SP ; 0542
001022 005000 CLR R0
001024 000167 001562 JMP 39$
001030 152776 000040 000044 7$: BISB #40,@44(SP) ; 0545
001036 142776 000100 000044 BICB #100,@44(SP) ; 0546
001044 142776 000200 000044 BICB #200,@44(SP) ; 0547
001052 012701 000016 MOV #16,R1 ; 0548
001056 066601 000036 ADD 36(SP),R1
001062 010100 MOV R1,R0
001064 011001 MOV (R0),R1 ; *,TEMP.PTR
001066 012702 000204 MOV #204,R2 ; 0549
001072 066602 000036 ADD 36(SP),R2
001076 010210 MOV R2,(R0)
001100 012746 000020 MOV #20,-(SP) ; 0553
001104 010246 MOV R2,-(SP)
001106 016600 000042 MOV 42(SP),R0
001112 016046 000020 MOV 20(R0),-(SP)
001116 005716 TST (SP)
001120 001002 BNE 8$
001122 005046 CLR -(SP)
001124 000401 BR 9$
001126 010146 8$: MOV R1,-(SP) ; TEMP.PTR,*
001130 012746 000110 9$: MOV #110,-(SP)
001134 010546 MOV R5,-(SP)
001136 012746 000302' MOV #CON.AST,-(SP)
001142 010446 MOV R4,-(SP)
001144 005046 CLR -(SP)
001146 016600 000064 MOV 64(SP),R0 ; LINK.INFO,*
001152 016046 000010 MOV 10(R0),-(SP) ; *(LINK.INFO),*
001156 012746 015400 MOV #15400,-(SP)
001162 012746 006001 MOV #6001,-(SP)
001166 104377 EMT 377
001170 062706 000034 ADD #34,SP
001174 132776 000100 000010 10$: BITB #100,@10(SP) ; 0561
001202 001004 BNE 11$
001204 132776 000040 000010 BITB #40,@10(SP)
001212 001407 BEQ 12$
001214 016646 000014 11$: MOV 14(SP),-(SP)
001220 005046 CLR -(SP)
001222 004767 000000G JSR PC,US.WAIT
001226 022626 CMP (SP)+,(SP)+
001230 000761 BR 10$
001232 121427 000001 12$: CMPB (R4),#1 ; 0571
001236 001402 BEQ 13$
001240 000167 001100 JMP 30$
001244 016600 000002 13$: MOV 2(SP),R0 ; 0574
001250 116460 000002 000020 MOVB 2(R4),20(R0)
001256 105060 000021 CLRB 21(R0)
001262 027627 000012 000001 CMP @12(SP),#1 ; 0575
001270 001402 BEQ 14$
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 25
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
001272 000167 001040 JMP 29$
001276 152776 000040 000010 14$: BISB #40,@10(SP) ; 0588
001304 012700 000040 MOV #40,R0 ; 0589
001310 066600 000002 ADD 2(SP),R0
001314 010076 000002 MOV R0,@2(SP)
001320 010003 MOV R0,R3 ; *,TEMP.PTR1 0590
001322 105023 CLRB (R3)+ ; TEMP.PTR1 0591
001324 105023 CLRB (R3)+ ; TEMP.PTR1 0592
001326 012746 000006 MOV #6,-(SP) ; 0593
001332 016602 000006 MOV 6(SP),R2
001336 062702 000030 ADD #30,R2
001342 010246 MOV R2,-(SP)
001344 012746 000040 MOV #40,-(SP)
001350 004767 000000G JSR PC,BL$FCH
001354 005700 TST R0 ; TEMP.PTR 0594
001356 001003 BNE 15$
001360 012701 000006 MOV #6,R1 ; *,TEMP.LEN
001364 000402 BR 16$
001366 010001 15$: MOV R0,R1 ; TEMP.PTR,TEMP.LEN 0595
001370 160201 SUB R2,R1 ; *,TEMP.LEN
001372 010100 16$: MOV R1,R0 ; TEMP.LEN,* 0596
001374 020027 000006 CMP R0,#6
001400 101402 BLOS 17$
001402 012700 000006 MOV #6,R0
001406 016604 000010 17$: MOV 10(SP),R4
001412 010064 000002 MOV R0,2(R4)
001416 062764 000003 000002 ADD #3,2(R4)
001424 110123 MOVB R1,(R3)+ ; TEMP.LEN,TEMP.PTR1 0597
001426 010016 MOV R0,(SP) ; 0598
001430 010246 MOV R2,-(SP)
001432 005046 CLR -(SP)
001434 012746 000006 MOV #6,-(SP)
001440 010346 MOV R3,-(SP) ; TEMP.PTR1,*
001442 012746 177773 MOV #-5,-(SP)
001446 004767 000000G JSR PC,BL$CPY
001452 012700 000006 MOV #6,R0 ; 0599
001456 066600 000022 ADD 22(SP),R0
001462 010001 MOV R0,R1
001464 012700 000052 MOV #52,R0
001470 066600 000022 ADD 22(SP),R0
001474 010011 MOV R0,(R1)
001476 012702 000010 MOV #10,R2 ; 0606
001502 066602 000022 ADD 22(SP),R2
001506 010200 MOV R2,R0
001510 005002 CLR R2 ; 0601
001512 016603 000024 MOV 24(SP),R3
001516 156302 000036 BISB 36(R3),R2
001522 006302 ASL R2
001524 066207 000260' ADD P.AAC(R2),PC ; Case dispatch
001530 005010 18$: CLR (R0) ; 0606
001532 000453 BR 24$ ; 0601
001534 016602 000024 19$: MOV 24(SP),R2 ; 0611
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 26
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
001540 016210 000040 MOV 40(R2),(R0)
001544 010200 MOV R2,R0 ; 0612
001546 016016 000040 MOV 40(R0),(SP)
001552 021627 000020 CMP (SP),#20
001556 101402 BLOS 20$
001560 012716 000020 MOV #20,(SP)
001564 016646 000024 20$: MOV 24(SP),-(SP)
001570 062716 000042 ADD #42,(SP)
001574 000420 BR 23$ ; 0613
001576 016602 000024 21$: MOV 24(SP),R2 ; 0618
001602 016210 000044 MOV 44(R2),(R0)
001606 010200 MOV R2,R0 ; 0619
001610 016016 000044 MOV 44(R0),(SP)
001614 021627 000020 CMP (SP),#20
001620 101402 BLOS 22$
001622 012716 000020 MOV #20,(SP)
001626 016646 000024 22$: MOV 24(SP),-(SP)
001632 062716 000046 ADD #46,(SP)
001636 005046 23$: CLR -(SP) ; 0620
001640 012746 000021 MOV #21,-(SP)
001644 011146 MOV (R1),-(SP)
001646 012746 177773 MOV #-5,-(SP)
001652 004767 000000G JSR PC,BL$CPY
001656 062706 000012 ADD #12,SP ; 0617
001662 012700 000074 24$: MOV #74,R0 ; 0624
001666 066600 000022 ADD 22(SP),R0
001672 016601 000022 MOV 22(SP),R1
001676 010061 000012 MOV R0,12(R1)
001702 010100 MOV R1,R0 ; 0625
001704 016601 000024 MOV 24(SP),R1
001710 016160 000062 000014 MOV 62(R1),14(R0)
001716 010100 MOV R1,R0 ; 0626
001720 016016 000062 MOV 62(R0),(SP)
001724 021627 000020 CMP (SP),#20
001730 101402 BLOS 25$
001732 012716 000020 MOV #20,(SP)
001736 016646 000024 25$: MOV 24(SP),-(SP)
001742 062716 000064 ADD #64,(SP)
001746 005046 CLR -(SP) ; 0627
001750 012746 000021 MOV #21,-(SP)
001754 016600 000030 MOV 30(SP),R0
001760 016046 000012 MOV 12(R0),-(SP)
001764 012746 177773 MOV #-5,-(SP)
001770 004767 000000G JSR PC,BL$CPY
001774 012700 000116 MOV #116,R0 ; 0628
002000 066600 000034 ADD 34(SP),R0
002004 016601 000034 MOV 34(SP),R1
002010 010061 000026 MOV R0,26(R1)
002014 010100 MOV R1,R0 ; 0629
002016 016601 000036 MOV 36(SP),R1
002022 016160 000104 000030 MOV 104(R1),30(R0)
002030 010100 MOV R1,R0 ; 0630
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 27
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
002032 016016 000104 MOV 104(R0),(SP)
002036 021627 000010 CMP (SP),#10
002042 101402 BLOS 26$
002044 012716 000010 MOV #10,(SP)
002050 016646 000036 26$: MOV 36(SP),-(SP)
002054 062716 000106 ADD #106,(SP)
002060 005046 CLR -(SP) ; 0631
002062 012746 000011 MOV #11,-(SP)
002066 016600 000042 MOV 42(SP),R0
002072 016046 000026 MOV 26(R0),-(SP)
002076 012746 177773 MOV #-5,-(SP)
002102 004767 000000G JSR PC,BL$CPY
002106 012700 000140 MOV #140,R0 ; 0632
002112 066600 000046 ADD 46(SP),R0
002116 016601 000046 MOV 46(SP),R1
002122 010061 000022 MOV R0,22(R1)
002126 010100 MOV R1,R0 ; 0633
002130 016601 000050 MOV 50(SP),R1
002134 016160 000116 000024 MOV 116(R1),24(R0)
002142 010100 MOV R1,R0 ; 0634
002144 016016 000116 MOV 116(R0),(SP)
002150 021627 000020 CMP (SP),#20
002154 101402 BLOS 27$
002156 012716 000020 MOV #20,(SP)
002162 016646 000050 27$: MOV 50(SP),-(SP)
002166 062716 000120 ADD #120,(SP)
002172 005046 CLR -(SP) ; 0635
002174 012746 000021 MOV #21,-(SP)
002200 016600 000054 MOV 54(SP),R0
002204 016046 000022 MOV 22(R0),-(SP)
002210 012746 177773 MOV #-5,-(SP)
002214 004767 000000G JSR PC,BL$CPY
002220 012700 000204 MOV #204,R0 ; 0636
002224 066600 000060 ADD 60(SP),R0
002230 016601 000060 MOV 60(SP),R1
002234 010061 000016 MOV R0,16(R1)
002240 010100 MOV R1,R0 ; 0637
002242 016601 000062 MOV 62(SP),R1
002246 016160 000140 000020 MOV 140(R1),20(R0)
002254 010100 MOV R1,R0 ; 0638
002256 016016 000140 MOV 140(R0),(SP)
002262 021627 000020 CMP (SP),#20
002266 101402 BLOS 28$
002270 012716 000020 MOV #20,(SP)
002274 016646 000062 28$: MOV 62(SP),-(SP)
002300 062716 000142 ADD #142,(SP)
002304 005046 CLR -(SP) ; 0639
002306 012746 000021 MOV #21,-(SP)
002312 016600 000066 MOV 66(SP),R0
002316 016046 000016 MOV 16(R0),-(SP)
002322 012746 177773 MOV #-5,-(SP)
002326 004767 000000G JSR PC,BL$CPY
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 28
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
002332 062706 000070 ADD #70,SP ; 0577
002336 017600 000016 29$: MOV @16(SP),R0 ; 0571
002342 000523 BR 39$
002344 012701 000036 30$: MOV #36,R1 ; 0650
002350 066601 000002 ADD 2(SP),R1
002354 010100 MOV R1,R0
002356 005010 CLR (R0)
002360 027627 000012 000002 CMP @12(SP),#2 ; 0651
002366 001007 BNE 31$
002370 016601 000002 MOV 2(SP),R1 ; 0654
002374 116461 000002 000020 MOVB 2(R4),20(R1)
002402 105061 000021 CLRB 21(R1)
002406 016601 000044 31$: MOV 44(SP),R1 ; RESPONSE.PTR,* 0667
002412 001451 BEQ 38$
002414 010102 MOV R1,R2 ; *,STRPTR 0681
002416 116622 000040 MOVB 40(SP),(R2)+ ; RESPONSE.CODE,STRPTR
002422 121427 177761 CMPB (R4),#-17
002426 001003 BNE 32$
002430 012700 000017 MOV #17,R0 ; *,DETAIL
002434 000427 BR 37$
002436 121427 177777 32$: CMPB (R4),#-1
002442 001003 BNE 33$
002444 012700 000010 MOV #10,R0 ; *,DETAIL
002450 000421 BR 37$
002452 121427 177757 33$: CMPB (R4),#-21
002456 001403 BEQ 34$
002460 121427 177772 CMPB (R4),#-6
002464 001003 BNE 35$
002466 012700 000004 34$: MOV #4,R0 ; *,DETAIL
002472 000410 BR 37$
002474 121427 000002 35$: CMPB (R4),#2
002500 001003 BNE 36$
002502 012700 000011 MOV #11,R0 ; *,DETAIL
002506 000402 BR 37$
002510 012700 000012 36$: MOV #12,R0 ; *,DETAIL
002514 110022 37$: MOVB R0,(R2)+ ; DETAIL,STRPTR
002516 010003 MOV R0,R3 ; DETAIL,*
002520 000303 SWAB R3
002522 110322 MOVB R3,(R2)+ ; *,STRPTR
002524 105022 CLRB (R2)+ ; STRPTR
002526 010276 000042 MOV R2,@42(SP) ; STRPTR,RESPONSE.LEN
002532 160176 000042 SUB R1,@42(SP) ; *,RESPONSE.LEN
002536 016601 000006 38$: MOV 6(SP),R1 ; LINK.INFO,* 0686
002542 016100 000010 MOV 10(R1),R0 ; *(LINK.INFO),*
002546 006300 ASL R0
002550 005060 000010' CLR NETWORK.LUNS-12(R0)
002554 012746 000014' MOV #INFO.QUEUE,-(SP) ; 0687
002560 010146 MOV R1,-(SP) ; LINK.INFO,*
002562 004767 000000G JSR PC,UQ.EXTRACT
002566 016616 000012 MOV 12(SP),(SP) ; LINK.INFO,* 0688
002572 012746 000236 MOV #236,-(SP)
002576 004767 000000G JSR PC,UM.RELEASE
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 29
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (4)
002602 062706 000006 ADD #6,SP ; 0645
002606 012700 177777 MOV #-1,R0 ; 0571
002612 062706 000022 39$: ADD #22,SP ; 0352
002616 000207 RTS PC
; Routine Size: 712 words, Routine Base: $CODE$ + 0416
; Maximum stack depth per invocation: 44 words
000260 .PSECT $PLIT$, RO , D
P.AAC: ; CASE Table for UN.OPEN+1524 0601
000260 000000 .WORD 0 ; [18$]
000262 000004 .WORD 4 ; [19$]
000264 000046 .WORD 46 ; [21$]
; 0695
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 30
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (5)
; 0696 global routine %unquote NMU$NETWORK_ACCEPT (LINK_IDENTIFIER, DATA_LEN, DATA_PTR) =
; 0697
; 0698 !++
; 0699 ! Functional description:
; 0700 !
; 0701 ! This routine accepts the connection to a TARGET link
; 0702 ! end. The link was initially opened by a call to the
; 0703 ! NMU$NETWORK_TARGET routine.
; 0704 !
; 0705 ! Formal parameters: none
; 0706 !
; 0707 ! .LINK_IDENTIFIER Link id for the target link end.
; 0708 ! .DATA_LEN Length of optional accept data
; 0709 ! .DATA_PTR Pointer to optional accept data
; 0710 !
; 0711 ! Routine value:
; 0712 !
; 0713 ! $true - Accept Done
; 0714 ! $false - Accept Not Done
; 0715 !
; 0716 ! Side effects: none
; 0717 !
; 0718 !--
; 0719
; 0720 begin
; 0721
; 0722 local
; 0723 LINK_INFO : ref LINK_INFO_BLOCK;
; 0724
; 0725 !
; 0726 ! Routine to process ACC$ ASTs
; 0727 !
; 0728 routine ACC_AST NETWORK_INTERRUPT_ROUTINE =
; 0729 begin
; 0730
; 0731 map
; 0732 NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
; 0733
; 0734 local
; 0735 LINK_INFO : ref LINK_INFO_BLOCK;
; 0736
; 0737 !
; 0738 ! Find our LINK_INFO block
; 0739 !
; 0740
; 0741 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
; 0742 then
; 0743 !
; 0744 ! Update status to reflect connect complete
; 0745 !
; 0746 begin
; 0747
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 31
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (5)
; 0748 bind
; 0749 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 0750
; 0751 if .NETWORK_STATUS_BLOCK [NETSB$ERR] eql IS$SUC
; 0752 then
; 0753 begin
; 0754 LNKSTS [LSB_CONNECTED] = 1;
; 0755 LNKSTS [LSB_CLOSED] = 0;
; 0756 end;
; 0757
; 0758 LNKSTS [LSB_CCWAIT] = 0;
; 0759 !
; 0760 ! Startup waiting process
; 0761 !
; 0762 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 0763 end;
; 0764
; 0765 end; ! of ACC_AST
.SBTTL ACC.AST
003236 .PSECT $CODE$, RO
000000 010046 ACC.AST:MOV R0,-(SP) ; 0728
000002 010146 MOV R1,-(SP)
000004 012746 000014' MOV #INFO.QUEUE,-(SP) ; 0741
000010 016600 000006 MOV 6(SP),R0 ; NETWORK.STATUS.,*
000014 016046 000004 MOV 4(R0),-(SP)
000020 012746 000000V MOV #IQ.SCAN,-(SP)
000024 004767 000000G JSR PC,UQ.SCAN
000030 062706 000006 ADD #6,SP
000034 005700 TST R0 ; LINK.INFO
000036 001421 BEQ 2$
000040 012701 000050 MOV #50,R1 ; 0746
000044 060001 ADD R0,R1 ; LINK.INFO,*
000046 127627 000004 000001 CMPB @4(SP),#1 ; NETWORK.STATUS.,* 0751
000054 001004 BNE 1$
000056 052711 000400 BIS #400,(R1) ; 0754
000062 142711 000004 BICB #4,(R1) ; 0755
000066 142711 000040 1$: BICB #40,(R1) ; 0758
000072 010046 MOV R0,-(SP) ; LINK.INFO,* 0762
000074 004767 000000V JSR PC,DECLARE.NETWORK.EVENT
000100 005726 TST (SP)+ ; 0746
000102 012601 2$: MOV (SP)+,R1 ; 0728
000104 012600 MOV (SP)+,R0
;+
; RSX AST Service Routine Exit
;-
000106 012716 000563 MOV #563,(SP)
000112 104377 EMT 377
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 32
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (5)
; Routine Size: 38 words, Routine Base: $CODE$ + 3236
; Maximum stack depth per invocation: 6 words
; 0766 !
; 0767 ! Main Accept Processing
; 0768 !
; 0769
; 0770 if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
; 0771 .LINK_INFO) neq 0
; 0772 then
; 0773 begin
; 0774
; 0775 bind
; 0776 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK,
; 0777 NETSTS = LINK_INFO [LINK_LINK_SB] : $NETWORK_STATUS_BLOCK;
; 0778
; P 0779 ACC$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_LINK_SB], ACC_AST,
; P 0780 <LINK_INFO [LINK_GNDB],
; 0781 RSX$_GNDB_ALLOCATION, (if .DATA_LEN eql 0 then 0 else .DATA_PTR), .DATA_LEN>);
; 0782 WAIT_FOR_NETWORK (LINK_INFO, (.LNKSTS [LSB_CCWAIT]));
; 0783
; 0784 if (.LNKSTS [LSB_CONNECTED])
; 0785 then
; 0786 $true
; 0787 else
; 0788 begin
; 0789
; 0790 if .NETSTS [NETSB$ERR] neq IS$SUC then NMU$NETWORK_REJECT (.LINK_IDENTIFIER, 0, 0);
; 0791
; 0792 $false
; 0793 end
; 0794
; 0795 end
; 0796 else
; 0797 $false
; 0798 !
; 0799 end; ! End of NMU$NETWORK_ACCEPT
.GLOBL INTNST
.SBTTL UN.ACCEPT
000000 004167 000000G UN.ACCEPT::
JSR R1,$SAVE2 ; 0696
000004 012746 000543 MOV #543,-(SP) ; 0770
000010 104377 EMT 377
000012 005267 000000G INC INTNST
000016 012746 000014' MOV #INFO.QUEUE,-(SP)
000022 016646 000016 MOV 16(SP),-(SP) ; LINK.IDENTIFIER,*
000026 012746 000000V MOV #IQ.SCAN,-(SP)
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 33
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (5)
000032 004767 000000G JSR PC,UQ.SCAN
000036 022626 CMP (SP)+,(SP)+
000040 010001 MOV R0,R1 ; *,LINK.INFO
000042 012716 000543 MOV #543,(SP)
000046 104377 EMT 377
000050 005367 000000G DEC INTNST
000054 000243 .WORD CLV!CLC
000056 003005 BGT 1$
000060 005067 000000G CLR INTNST
000064 012746 000545 MOV #545,-(SP)
000070 104377 EMT 377
000072 005701 1$: TST R1 ; LINK.INFO 0771
000074 001474 BEQ 7$
000076 005046 CLR -(SP) ; 0781
000100 005046 CLR -(SP)
000102 016646 000016 MOV 16(SP),-(SP) ; DATA.LEN,*
000106 005716 TST (SP) ; DATA.LEN
000110 001002 BNE 2$
000112 005046 CLR -(SP)
000114 000402 BR 3$
000116 016646 000016 2$: MOV 16(SP),-(SP) ; DATA.PTR,*
000122 012746 000162 3$: MOV #162,-(SP)
000126 010146 MOV R1,-(SP) ; LINK.INFO,*
000130 062716 000054 ADD #54,(SP)
000134 012746 003236' MOV #ACC.AST,-(SP)
000140 012746 000014 MOV #14,-(SP)
000144 060116 ADD R1,(SP) ; LINK.INFO,*
000146 005046 CLR -(SP)
000150 016146 000010 MOV 10(R1),-(SP) ; *(LINK.INFO),*
000154 012746 015410 MOV #15410,-(SP)
000160 012746 006001 MOV #6001,-(SP)
000164 104377 EMT 377
000166 010102 MOV R1,R2 ; LINK.INFO,* 0782
000170 062702 000036 ADD #36,R2
000174 132761 000040 000050 4$: BITB #40,50(R1) ; *,*(LINK.INFO)
000202 001406 BEQ 5$
000204 010246 MOV R2,-(SP)
000206 005046 CLR -(SP)
000210 004767 000000G JSR PC,US.WAIT
000214 022626 CMP (SP)+,(SP)+
000216 000766 BR 4$
000220 032761 000400 000050 5$: BIT #400,50(R1) ; *,*(LINK.INFO) 0784
000226 001403 BEQ 6$
000230 012700 000001 MOV #1,R0
000234 000207 RTS PC
000236 126127 000014 000001 6$: CMPB 14(R1),#1 ; *(LINK.INFO),* 0790
000244 001410 BEQ 7$
000246 016646 000014 MOV 14(SP),-(SP) ; LINK.IDENTIFIER,*
000252 005046 CLR -(SP)
000254 005046 CLR -(SP)
000256 004767 000000V JSR PC,UN.REJECT
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 34
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (5)
000262 062706 000006 ADD #6,SP
000266 005000 7$: CLR R0 ; 0770
000270 000207 RTS PC ; 0696
; Routine Size: 93 words, Routine Base: $CODE$ + 3352
; Maximum stack depth per invocation: 17 words
; 0800
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 35
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (6)
; 0801 global routine %unquote NMU$NETWORK_REJECT (LINK_IDENTIFIER, REASON, DATA_LEN, DATA_PTR) =
; 0802
; 0803 !++
; 0804 ! Functional description:
; 0805 !
; 0806 ! This routine rejects the connection to a TARGET link
; 0807 ! end. The link was initially opened by a call to the
; 0808 ! NMU$NETWORK_TARGET routine.
; 0809 !
; 0810 ! Formal parameters: none
; 0811 !
; 0812 ! .LINK_IDENTIFIER Link id for the target link end.
; 0813 ! .REASON Reason code for rejection
; 0814 ! .DATA_LEN Length of optional reject data
; 0815 ! .DATA_PTR Pointer to optional reject data
; 0816 !
; 0817 ! Routine value:
; 0818 !
; 0819 ! $true - Reject Done
; 0820 ! $false - Reject Not Done
; 0821 !
; 0822 ! Side effects: none
; 0823 !
; 0824 !--
; 0825
; 0826 begin
; 0827
; 0828 local
; 0829 LINK_INFO : ref LINK_INFO_BLOCK;
; 0830
; 0831 !
; 0832 ! Routine to process REJ$ ASTs
; 0833 !
; 0834 routine REJ_AST NETWORK_INTERRUPT_ROUTINE =
; 0835 begin
; 0836
; 0837 map
; 0838 NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
; 0839
; 0840 local
; 0841 LINK_INFO : ref LINK_INFO_BLOCK;
; 0842
; 0843 !
; 0844 ! Find our LINK_INFO block
; 0845 !
; 0846
; 0847 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
; 0848 then
; 0849 !
; 0850 ! Update status to reflect connect complete
; 0851 !
; 0852 begin
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 36
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (6)
; 0853
; 0854 bind
; 0855 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 0856
; 0857 LNKSTS [LSB_CLOSED] = 1;
; 0858 LNKSTS [LSB_CONNECTED] = 0;
; 0859 LNKSTS [LSB_CCWAIT] = 0;
; 0860 !
; 0861 ! Startup waiting process
; 0862 !
; 0863 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 0864 end;
; 0865
; 0866 end; ! of REJ_AST
.SBTTL REJ.AST
000000 010046 REJ.AST:MOV R0,-(SP) ; 0834
000002 010146 MOV R1,-(SP)
000004 012746 000014' MOV #INFO.QUEUE,-(SP) ; 0847
000010 016600 000006 MOV 6(SP),R0 ; NETWORK.STATUS.,*
000014 016046 000004 MOV 4(R0),-(SP)
000020 012746 000000V MOV #IQ.SCAN,-(SP)
000024 004767 000000G JSR PC,UQ.SCAN
000030 062706 000006 ADD #6,SP
000034 005700 TST R0 ; LINK.INFO
000036 001413 BEQ 1$
000040 012701 000050 MOV #50,R1 ; 0852
000044 060001 ADD R0,R1 ; LINK.INFO,*
000046 152711 000004 BISB #4,(R1) ; 0857
000052 042711 000440 BIC #440,(R1) ; 0859
000056 010046 MOV R0,-(SP) ; LINK.INFO,* 0863
000060 004767 000000V JSR PC,DECLARE.NETWORK.EVENT
000064 005726 TST (SP)+ ; 0852
000066 012601 1$: MOV (SP)+,R1 ; 0834
000070 012600 MOV (SP)+,R0
;+
; RSX AST Service Routine Exit
;-
000072 012716 000563 MOV #563,(SP)
000076 104377 EMT 377
; Routine Size: 32 words, Routine Base: $CODE$ + 3644
; Maximum stack depth per invocation: 6 words
; 0867 !
; 0868 ! Main Reject Processing
; 0869 !
; 0870
; 0871 if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 37
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (6)
; 0872 .LINK_INFO) neq 0
; 0873 then
; 0874 begin
; P 0875 REJ$S (NMU$_NETWORK_LUN,, LINK_INFO [LINK_LINK_SB], REJ_AST,
; P 0876 <LINK_INFO [LINK_GNDB],
; 0877 RSX$_GNDB_ALLOCATION, (if .DATA_LEN eql 0 then 0 else .DATA_PTR), .DATA_LEN>);
; 0878 WAIT_FOR_NETWORK (LINK_INFO, (.LNKSTS [LSB_CCWAIT]));
; 0879 $true
; 0880 end
; 0881 else
; 0882 $false
; 0883 !
; 0884 end; ! End of NMU$NETWORK_REJECT
.SBTTL UN.REJECT
000000 004167 000000G UN.REJECT::
JSR R1,$SAVE2 ; 0801
000004 012746 000543 MOV #543,-(SP) ; 0871
000010 104377 EMT 377
000012 005267 000000G INC INTNST
000016 012746 000014' MOV #INFO.QUEUE,-(SP)
000022 016646 000020 MOV 20(SP),-(SP) ; LINK.IDENTIFIER,*
000026 012746 000000V MOV #IQ.SCAN,-(SP)
000032 004767 000000G JSR PC,UQ.SCAN
000036 022626 CMP (SP)+,(SP)+
000040 010001 MOV R0,R1 ; *,LINK.INFO
000042 012716 000543 MOV #543,(SP)
000046 104377 EMT 377
000050 005367 000000G DEC INTNST
000054 000243 .WORD CLV!CLC
000056 003005 BGT 1$
000060 005067 000000G CLR INTNST
000064 012746 000545 MOV #545,-(SP)
000070 104377 EMT 377
000072 005701 1$: TST R1 ; LINK.INFO 0872
000074 001454 BEQ 6$
000076 005046 CLR -(SP) ; 0877
000100 005046 CLR -(SP)
000102 016646 000016 MOV 16(SP),-(SP) ; DATA.LEN,*
000106 005716 TST (SP) ; DATA.LEN
000110 001002 BNE 2$
000112 005046 CLR -(SP)
000114 000402 BR 3$
000116 016646 000016 2$: MOV 16(SP),-(SP) ; DATA.PTR,*
000122 012746 000162 3$: MOV #162,-(SP)
000126 010146 MOV R1,-(SP) ; LINK.INFO,*
000130 062716 000054 ADD #54,(SP)
000134 012746 003644' MOV #REJ.AST,-(SP)
000140 010146 MOV R1,-(SP) ; LINK.INFO,*
000142 062716 000014 ADD #14,(SP)
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 38
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (6)
000146 005046 CLR -(SP)
000150 012746 000005 MOV #5,-(SP)
000154 012746 016020 MOV #16020,-(SP)
000160 012746 006001 MOV #6001,-(SP)
000164 104377 EMT 377
000166 010102 MOV R1,R2 ; LINK.INFO,* 0878
000170 062702 000036 ADD #36,R2
000174 132761 000040 000050 4$: BITB #40,50(R1) ; *,*(LINK.INFO)
000202 001406 BEQ 5$
000204 010246 MOV R2,-(SP)
000206 005046 CLR -(SP)
000210 004767 000000G JSR PC,US.WAIT
000214 022626 CMP (SP)+,(SP)+
000216 000766 BR 4$
000220 012700 000001 5$: MOV #1,R0 ; 0871
000224 000207 RTS PC
000226 005000 6$: CLR R0
000230 000207 RTS PC ; 0801
; Routine Size: 77 words, Routine Base: $CODE$ + 3744
; Maximum stack depth per invocation: 17 words
; 0885
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 39
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (7)
; 0886 global routine %unquote NMU$NETWORK_READ (LINK_IDENTIFIER, BUFFER_SIZE, BUFFER) =
; 0887
; 0888 !++
; 0889 ! Functional description:
; 0890 !
; 0891 ! This routine reads data from the specified logical link into
; 0892 ! the supplied buffer. This calls blocks until either data is
; 0893 ! available or the link is disco<<nnected.
; 0894 !
; 0895 ! Formal parameters:
; 0896 !
; 0897 ! .LINK_IDENTIFIER Link identifier.
; 0898 ! .BUFFER Address of buffer to read data into.
; 0899 ! .BUFFER_SIZE Number of 8 bit bytes available in buffer.
; 0900 !
; 0901 ! Routine value:
; 0902 !
; 0903 ! Number of bytes read in (0 = link error)
; 0904 !
; 0905 ! Side effects: none
; 0906 !
; 0907 !--
; 0908
; 0909 begin
; 0910
; 0911 local
; 0912 LINK_INFO : ref LINK_INFO_BLOCK;
; 0913
; 0914 !
; 0915 ! Interrupt Service Routine for Receives
; 0916 !
; 0917 routine REC_AST NETWORK_INTERRUPT_ROUTINE =
; 0918 begin
; 0919
; 0920 map
; 0921 NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
; 0922
; 0923 local
; 0924 LINK_INFO : ref LINK_INFO_BLOCK;
; 0925
; 0926 !
; 0927 ! Find our LINK_INFO block
; 0928 !
; 0929
; 0930 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
; 0931 then
; 0932 !
; 0933 ! Update status to reflect receive complete
; 0934 !
; 0935 begin
; 0936 LINK_INFO [LINK_INPUT_IN_PROGRESS] = 0;
; 0937 !
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 40
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (7)
; 0938 ! Startup waiting process
; 0939 !
; 0940 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 0941 end;
; 0942
; 0943 end; ! of REC_AST
.SBTTL REC.AST
000000 010046 REC.AST:MOV R0,-(SP) ; 0917
000002 012746 000014' MOV #INFO.QUEUE,-(SP) ; 0930
000006 016600 000004 MOV 4(SP),R0 ; NETWORK.STATUS.,*
000012 016046 000004 MOV 4(R0),-(SP)
000016 012746 000000V MOV #IQ.SCAN,-(SP)
000022 004767 000000G JSR PC,UQ.SCAN
000026 062706 000006 ADD #6,SP
000032 005700 TST R0 ; LINK.INFO
000034 001407 BEQ 1$
000036 142760 000002 000046 BICB #2,46(R0) ; *,*(LINK.INFO) 0936
000044 010046 MOV R0,-(SP) ; LINK.INFO,* 0940
000046 004767 000000V JSR PC,DECLARE.NETWORK.EVENT
000052 005726 TST (SP)+ ; 0935
000054 012600 1$: MOV (SP)+,R0 ; 0917
;+
; RSX AST Service Routine Exit
;-
000056 012716 000563 MOV #563,(SP)
000062 104377 EMT 377
; Routine Size: 26 words, Routine Base: $CODE$ + 4176
; Maximum stack depth per invocation: 5 words
; 0944 !
; 0945 ! Main Receive Processing
; 0946 !
; 0947
; 0948 if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
; 0949 .LINK_INFO) neq 0
; 0950 then
; 0951 begin
; 0952
; 0953 bind
; 0954 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 0955
; 0956 if not .LNKSTS [LSB_CONNECTED]
; 0957 then
; 0958 0
; 0959 else
; 0960 begin
; 0961 LINK_INFO [LINK_INPUT_IN_PROGRESS] = 1;
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 41
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (7)
; 0962 REC$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_IN_SB], REC_AST, <.BUFFER, .BUFFER_SIZE>);
; 0963 !
; 0964 ! Wait for data buffer to be received
; 0965 !
; 0966 WAIT_FOR_NETWORK (LINK_INFO, (.LINK_INFO [LINK_INPUT_IN_PROGRESS]));
; 0967 !
; 0968 ! Return Error Indication if any
; 0969 !
; 0970 begin
; 0971
; 0972 bind
; 0973 LNKIOSB = LINK_INFO [LINK_IN_SB] : $NETWORK_STATUS_BLOCK;
; 0974
; 0975 if .LNKIOSB [NETSB$ERR] neq IS$SUC then 0 else .LNKIOSB [NETSB$IO_COUNT]
; 0976
; 0977 end
; 0978 end
; 0979
; 0980 end
; 0981 else
; 0982 0
; 0983
; 0984 end; ! End of NMU$NETWORK_READ
.SBTTL UN.READ
000000 004167 000000G UN.READ::
JSR R1,$SAVE3 ; 0886
000004 012746 000543 MOV #543,-(SP) ; 0948
000010 104377 EMT 377
000012 005267 000000G INC INTNST
000016 012746 000014' MOV #INFO.QUEUE,-(SP)
000022 016646 000020 MOV 20(SP),-(SP) ; LINK.IDENTIFIER,*
000026 012746 000000V MOV #IQ.SCAN,-(SP)
000032 004767 000000G JSR PC,UQ.SCAN
000036 022626 CMP (SP)+,(SP)+
000040 010001 MOV R0,R1 ; *,LINK.INFO
000042 012716 000543 MOV #543,(SP)
000046 104377 EMT 377
000050 005367 000000G DEC INTNST
000054 000243 .WORD CLV!CLC
000056 003005 BGT 1$
000060 005067 000000G CLR INTNST
000064 012746 000545 MOV #545,-(SP)
000070 104377 EMT 377
000072 005701 1$: TST R1 ; LINK.INFO 0949
000074 001460 BEQ 4$
000076 032761 000400 000050 BIT #400,50(R1) ; *,*(LINK.INFO) 0956
000104 001454 BEQ 4$
000106 152761 000002 000046 BISB #2,46(R1) ; *,*(LINK.INFO) 0961
000114 005046 CLR -(SP) ; 0962
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 42
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (7)
000116 005046 CLR -(SP)
000120 005046 CLR -(SP)
000122 005046 CLR -(SP)
000124 016646 000024 MOV 24(SP),-(SP) ; BUFFER.SIZE,*
000130 016646 000024 MOV 24(SP),-(SP) ; BUFFER,*
000134 012746 004176' MOV #REC.AST,-(SP)
000140 010103 MOV R1,R3 ; LINK.INFO,*
000142 062703 000022 ADD #22,R3
000146 010346 MOV R3,-(SP)
000150 005046 CLR -(SP)
000152 016146 000010 MOV 10(R1),-(SP) ; *(LINK.INFO),*
000156 012746 015000 MOV #15000,-(SP)
000162 012746 006001 MOV #6001,-(SP)
000166 104377 EMT 377
000170 010102 MOV R1,R2 ; LINK.INFO,* 0966
000172 062702 000036 ADD #36,R2
000176 132761 000002 000046 2$: BITB #2,46(R1) ; *,*(LINK.INFO)
000204 001406 BEQ 3$
000206 010246 MOV R2,-(SP)
000210 005046 CLR -(SP)
000212 004767 000000G JSR PC,US.WAIT
000216 022626 CMP (SP)+,(SP)+
000220 000766 BR 2$
000222 121327 000001 3$: CMPB (R3),#1 ; 0975
000226 001003 BNE 4$
000230 016300 000002 MOV 2(R3),R0
000234 000207 RTS PC ; 0948
000236 005000 4$: CLR R0
000240 000207 RTS PC ; 0886
; Routine Size: 81 words, Routine Base: $CODE$ + 4262
; Maximum stack depth per invocation: 18 words
; 0985
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 43
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (8)
; 0986 global routine %unquote NMU$NETWORK_WRITE (LINK_IDENTIFIER, EOM_FLAG, BUFFER_SIZE, BUFFER) =
; 0987
; 0988 !++
; 0989 ! Functional description:
; 0990 !
; 0991 ! This routine writes data to the specified logical link from
; 0992 ! the supplied buffer.
; 0993 !
; 0994 ! Formal parameters:
; 0995 !
; 0996 ! .LINK_IDENTIFIER Link identifier.
; 0997 ! .EOM_FLAG Flag to indicate end of message.
; 0998 ! .BUFFER Address of buffer to write data from.
; 0999 ! .BUFFER_SIZE Number of 8 bit bytes of data in buffer.
; 1000 !
; 1001 ! Routine value:
; 1002 !
; 1003 ! $true Write succeeded
; 1004 ! $false Write failed, link disconnected.
; 1005 !
; 1006 ! Side effects: none
; 1007 !
; 1008 !--
; 1009
; 1010 begin
; 1011
; 1012 local
; 1013 LINK_INFO : ref LINK_INFO_BLOCK;
; 1014
; 1015 !
; 1016 ! Interrupt Service Routine for Transmits
; 1017 !
; 1018 routine SND_AST NETWORK_INTERRUPT_ROUTINE =
; 1019 begin
; 1020
; 1021 map
; 1022 NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
; 1023
; 1024 local
; 1025 LINK_INFO : ref LINK_INFO_BLOCK;
; 1026
; 1027 !
; 1028 ! Find our LINK_INFO block
; 1029 !
; 1030
; 1031 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
; 1032 then
; 1033 !
; 1034 ! Update status to reflect transmit complete
; 1035 !
; 1036 begin
; 1037 LINK_INFO [LINK_OUTPUT_IN_PROGRESS] = 0;
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 44
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (8)
; 1038 !
; 1039 ! Startup waiting process
; 1040 !
; 1041 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 1042 end;
; 1043
; 1044 end; ! of SND_AST
.SBTTL SND.AST
000000 010046 SND.AST:MOV R0,-(SP) ; 1018
000002 012746 000014' MOV #INFO.QUEUE,-(SP) ; 1031
000006 016600 000004 MOV 4(SP),R0 ; NETWORK.STATUS.,*
000012 016046 000004 MOV 4(R0),-(SP)
000016 012746 000000V MOV #IQ.SCAN,-(SP)
000022 004767 000000G JSR PC,UQ.SCAN
000026 062706 000006 ADD #6,SP
000032 005700 TST R0 ; LINK.INFO
000034 001407 BEQ 1$
000036 142760 000001 000046 BICB #1,46(R0) ; *,*(LINK.INFO) 1037
000044 010046 MOV R0,-(SP) ; LINK.INFO,* 1041
000046 004767 000000V JSR PC,DECLARE.NETWORK.EVENT
000052 005726 TST (SP)+ ; 1036
000054 012600 1$: MOV (SP)+,R0 ; 1018
;+
; RSX AST Service Routine Exit
;-
000056 012716 000563 MOV #563,(SP)
000062 104377 EMT 377
; Routine Size: 26 words, Routine Base: $CODE$ + 4524
; Maximum stack depth per invocation: 5 words
; 1045 !
; 1046 ! Main Send Processing
; 1047 !
; 1048
; 1049 if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
; 1050 .LINK_INFO) neq 0
; 1051 then
; 1052 begin
; 1053
; 1054 bind
; 1055 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 1056
; 1057 if not .LNKSTS [LSB_CONNECTED]
; 1058 then
; 1059 $false
; 1060 else
; 1061 begin
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 45
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (8)
; 1062
; 1063 if not .EOM_FLAG
; 1064 then
; 1065 return $false
; 1066 else
; 1067 begin
; 1068
; 1069 bind
; 1070 NETSTS = LINK_INFO [LINK_OUT_SB] : $NETWORK_STATUS_BLOCK;
; 1071
; 1072 LINK_INFO [LINK_OUTPUT_IN_PROGRESS] = 1;
; 1073 SND$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_OUT_SB], SND_AST, <.BUFFER, .BUFFER_SIZE>);
; 1074 !
; 1075 ! Wait for data buffer to be transmitted
; 1076 !
; 1077 WAIT_FOR_NETWORK (LINK_INFO, (.LINK_INFO [LINK_OUTPUT_IN_PROGRESS]));
; 1078
; 1079 if .NETSTS [NETSB$ERR] neq IS$SUC then $false else $true
; 1080
; 1081 end
; 1082
; 1083 end
; 1084
; 1085 end
; 1086 else
; 1087 $false
; 1088
; 1089 end; ! End of NMU$NETWORK_WRITE
.SBTTL UN.WRITE
000000 004167 000000G UN.WRITE::
JSR R1,$SAVE2 ; 0986
000004 012746 000543 MOV #543,-(SP) ; 1049
000010 104377 EMT 377
000012 005267 000000G INC INTNST
000016 012746 000014' MOV #INFO.QUEUE,-(SP)
000022 016646 000020 MOV 20(SP),-(SP) ; LINK.IDENTIFIER,*
000026 012746 000000V MOV #IQ.SCAN,-(SP)
000032 004767 000000G JSR PC,UQ.SCAN
000036 022626 CMP (SP)+,(SP)+
000040 010001 MOV R0,R1 ; *,LINK.INFO
000042 012716 000543 MOV #543,(SP)
000046 104377 EMT 377
000050 005367 000000G DEC INTNST
000054 000243 .WORD CLV!CLC
000056 003005 BGT 1$
000060 005067 000000G CLR INTNST
000064 012746 000545 MOV #545,-(SP)
000070 104377 EMT 377
000072 005701 1$: TST R1 ; LINK.INFO 1050
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 46
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (8)
000074 001464 BEQ 4$
000076 032761 000400 000050 BIT #400,50(R1) ; *,*(LINK.INFO) 1057
000104 001460 BEQ 4$
000106 032766 000001 000014 BIT #1,14(SP) ; *,EOM.FLAG 1063
000114 001454 BEQ 4$ ; 1065
000116 152761 000001 000046 BISB #1,46(R1) ; *,*(LINK.INFO) 1072
000124 005046 CLR -(SP) ; 1073
000126 005046 CLR -(SP)
000130 005046 CLR -(SP)
000132 005046 CLR -(SP)
000134 016646 000022 MOV 22(SP),-(SP) ; BUFFER.SIZE,*
000140 016646 000022 MOV 22(SP),-(SP) ; BUFFER,*
000144 012746 004524' MOV #SND.AST,-(SP)
000150 012746 000030 MOV #30,-(SP)
000154 060116 ADD R1,(SP) ; LINK.INFO,*
000156 005046 CLR -(SP)
000160 016146 000010 MOV 10(R1),-(SP) ; *(LINK.INFO),*
000164 012746 014400 MOV #14400,-(SP)
000170 012746 006001 MOV #6001,-(SP)
000174 104377 EMT 377
000176 010102 MOV R1,R2 ; LINK.INFO,* 1077
000200 062702 000036 ADD #36,R2
000204 132761 000001 000046 2$: BITB #1,46(R1) ; *,*(LINK.INFO)
000212 001406 BEQ 3$
000214 010246 MOV R2,-(SP)
000216 005046 CLR -(SP)
000220 004767 000000G JSR PC,US.WAIT
000224 022626 CMP (SP)+,(SP)+
000226 000766 BR 2$
000230 126127 000030 000001 3$: CMPB 30(R1),#1 ; *(LINK.INFO),* 1079
000236 001003 BNE 4$
000240 012700 000001 MOV #1,R0
000244 000207 RTS PC ; 1049
000246 005000 4$: CLR R0
000250 000207 RTS PC ; 0986
; Routine Size: 85 words, Routine Base: $CODE$ + 4610
; Maximum stack depth per invocation: 17 words
; 1090
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 47
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (9)
; 1091 global routine %unquote NMU$NETWORK_ABORT (LINK_IDENTIFIER, REASON, DATA_LEN, DATA_PTR) =
; 1092
; 1093 !++
; 1094 ! Functional description:
; 1095 !
; 1096 !
; 1097 ! Formal parameters:
; 1098 !
; 1099 ! .LINK_IDENTIFIER Identifier of link to abort
; 1100 ! .REASON Reason code to aborting link
; 1101 ! .DATA_LEN Length of optional abort data
; 1102 ! .DATA_PTR Pointer to optional abort data
; 1103 !
; 1104 ! Routine value:
; 1105 !
; 1106 ! $true - Abort has been done
; 1107 ! $false - Abort could not be done
; 1108 !
; 1109 ! Side effects: none
; 1110 !
; 1111 !--
; 1112
; 1113 begin
; 1114
; 1115 local
; 1116 LINK_INFO : ref LINK_INFO_BLOCK;
; 1117
; 1118 !
; 1119 ! Interrupt Service Routine for Aborts
; 1120 !
; 1121 routine ABT_AST NETWORK_INTERRUPT_ROUTINE =
; 1122 begin
; 1123
; 1124 map
; 1125 NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
; 1126
; 1127 local
; 1128 LINK_INFO : ref LINK_INFO_BLOCK;
; 1129
; 1130 !
; 1131 ! Find our LINK_INFO block
; 1132 !
; 1133
; 1134 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
; 1135 then
; 1136 !
; 1137 ! Update status to reflect disconnect complete
; 1138 !
; 1139 begin
; 1140
; 1141 bind
; 1142 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 48
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (9)
; 1143
; 1144 LNKSTS [LSB_ABORTED] = 1;
; 1145 LNKSTS [LSB_CLOSED] = 1;
; 1146 LNKSTS [LSB_CCWAIT] = 0;
; 1147 LNKSTS [LSB_CIWAIT] = 0;
; 1148 LNKSTS [LSB_CONNECTED] = 0;
; 1149 !
; 1150 ! Startup waiting process
; 1151 !
; 1152 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 1153 end;
; 1154
; 1155 end; ! of ABT_AST
.SBTTL ABT.AST
000000 010046 ABT.AST:MOV R0,-(SP) ; 1121
000002 010146 MOV R1,-(SP)
000004 012746 000014' MOV #INFO.QUEUE,-(SP) ; 1134
000010 016600 000006 MOV 6(SP),R0 ; NETWORK.STATUS.,*
000014 016046 000004 MOV 4(R0),-(SP)
000020 012746 000000V MOV #IQ.SCAN,-(SP)
000024 004767 000000G JSR PC,UQ.SCAN
000030 062706 000006 ADD #6,SP
000034 005700 TST R0 ; LINK.INFO
000036 001413 BEQ 1$
000040 012701 000050 MOV #50,R1 ; 1139
000044 060001 ADD R0,R1 ; LINK.INFO,*
000046 152711 000014 BISB #14,(R1) ; 1145
000052 042711 000540 BIC #540,(R1) ; 1148
000056 010046 MOV R0,-(SP) ; LINK.INFO,* 1152
000060 004767 000000V JSR PC,DECLARE.NETWORK.EVENT
000064 005726 TST (SP)+ ; 1139
000066 012601 1$: MOV (SP)+,R1 ; 1121
000070 012600 MOV (SP)+,R0
;+
; RSX AST Service Routine Exit
;-
000072 012716 000563 MOV #563,(SP)
000076 104377 EMT 377
; Routine Size: 32 words, Routine Base: $CODE$ + 5062
; Maximum stack depth per invocation: 6 words
; 1156 !
; 1157 ! Main Processing for Aborts
; 1158 !
; 1159
; 1160 if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
; 1161 .LINK_INFO) neq 0
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 49
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (9)
; 1162 then
; 1163 begin
; 1164
; 1165 bind
; 1166 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 1167
; 1168 if not .LNKSTS [LSB_CLOSED]
; 1169 then
; 1170 begin
; P 1171 ABT$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_LINK_SB], ABT_AST,
; 1172 <(if .DATA_LEN eql 0 then 0 else .DATA_PTR), .DATA_LEN>);
; 1173 WAIT_FOR_NETWORK (LINK_INFO, ( not .LNKSTS [LSB_ABORTED]));
; 1174 end;
; 1175
; 1176 NETWORK_LUNS [.LINK_INFO [LINK_LUN] - NMU$_NETWORK_LUN] = 0;
; 1177 NMU$QUEUE_EXTRACT (INFO_QUEUE, .LINK_INFO);
; 1178 NMU$MEMORY_RELEASE (.LINK_INFO, LINK_INFO_BLOCK_ALLOCATION);
; 1179 $true
; 1180 end
; 1181 else
; 1182 $false
; 1183
; 1184 end; ! End of NMU$NETWORK_ABORT
.SBTTL UN.ABORT
000000 004167 000000G UN.ABORT::
JSR R1,$SAVE2 ; 1091
000004 012746 000543 MOV #543,-(SP) ; 1160
000010 104377 EMT 377
000012 005267 000000G INC INTNST
000016 012746 000014' MOV #INFO.QUEUE,-(SP)
000022 016646 000020 MOV 20(SP),-(SP) ; LINK.IDENTIFIER,*
000026 012746 000000V MOV #IQ.SCAN,-(SP)
000032 004767 000000G JSR PC,UQ.SCAN
000036 022626 CMP (SP)+,(SP)+
000040 010001 MOV R0,R1 ; *,LINK.INFO
000042 012716 000543 MOV #543,(SP)
000046 104377 EMT 377
000050 005367 000000G DEC INTNST
000054 000243 .WORD CLV!CLC
000056 003005 BGT 1$
000060 005067 000000G CLR INTNST
000064 012746 000545 MOV #545,-(SP)
000070 104377 EMT 377
000072 005701 1$: TST R1 ; LINK.INFO 1161
000074 001476 BEQ 6$
000076 132761 000004 000050 BITB #4,50(R1) ; *,*(LINK.INFO) 1168
000104 001046 BNE 5$
000106 005046 CLR -(SP) ; 1172
000110 005046 CLR -(SP)
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 50
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (9)
000112 005046 CLR -(SP)
000114 005046 CLR -(SP)
000116 016646 000022 MOV 22(SP),-(SP) ; DATA.LEN,*
000122 005716 TST (SP) ; DATA.LEN
000124 001002 BNE 2$
000126 005046 CLR -(SP)
000130 000402 BR 3$
000132 016646 000022 2$: MOV 22(SP),-(SP) ; DATA.PTR,*
000136 012746 005062' 3$: MOV #ABT.AST,-(SP)
000142 010146 MOV R1,-(SP) ; LINK.INFO,*
000144 062716 000014 ADD #14,(SP)
000150 005046 CLR -(SP)
000152 016146 000010 MOV 10(R1),-(SP) ; *(LINK.INFO),*
000156 012746 016010 MOV #16010,-(SP)
000162 012746 006001 MOV #6001,-(SP)
000166 104377 EMT 377
000170 010102 MOV R1,R2 ; LINK.INFO,* 1173
000172 062702 000036 ADD #36,R2
000176 132761 000010 000050 4$: BITB #10,50(R1) ; *,*(LINK.INFO)
000204 001006 BNE 5$
000206 010246 MOV R2,-(SP)
000210 005046 CLR -(SP)
000212 004767 000000G JSR PC,US.WAIT
000216 022626 CMP (SP)+,(SP)+
000220 000766 BR 4$
000222 016100 000010 5$: MOV 10(R1),R0 ; *(LINK.INFO),* 1176
000226 006300 ASL R0
000230 005060 000010' CLR NETWORK.LUNS-12(R0)
000234 012746 000014' MOV #INFO.QUEUE,-(SP) ; 1177
000240 010146 MOV R1,-(SP) ; LINK.INFO,*
000242 004767 000000G JSR PC,UQ.EXTRACT
000246 010116 MOV R1,(SP) ; LINK.INFO,* 1178
000250 012746 000236 MOV #236,-(SP)
000254 004767 000000G JSR PC,UM.RELEASE
000260 062706 000006 ADD #6,SP ; 1163
000264 012700 000001 MOV #1,R0 ; 1160
000270 000207 RTS PC
000272 005000 6$: CLR R0
000274 000207 RTS PC ; 1091
; Routine Size: 95 words, Routine Base: $CODE$ + 5162
; Maximum stack depth per invocation: 17 words
; 1185
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 51
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (10)
; 1186 global routine %unquote NMU$NETWORK_CLOSE (LINK_IDENTIFIER, DATA_LEN, DATA_PTR) =
; 1187
; 1188 !++
; 1189 ! Functional description:
; 1190 !
; 1191 !
; 1192 ! Formal parameters:
; 1193 !
; 1194 ! .LINK_IDENTIFIER Identifier of link to close
; 1195 ! .DATA_LEN Length of optional close data
; 1196 ! .DATA_PTR Pointer to optional close data
; 1197 !
; 1198 ! Routine value:
; 1199 !
; 1200 ! $true - Close Completed
; 1201 ! $false - Close could not be done
; 1202 !
; 1203 ! Side effects: none
; 1204 !
; 1205 !--
; 1206
; 1207 begin
; 1208
; 1209 local
; 1210 LINK_INFO : ref LINK_INFO_BLOCK;
; 1211
; 1212 !
; 1213 ! Interrupt Service Routine for Disconnects
; 1214 !
; 1215 routine DSC_AST NETWORK_INTERRUPT_ROUTINE =
; 1216 begin
; 1217
; 1218 map
; 1219 NETWORK_STATUS_BLOCK : ref $NETWORK_STATUS_BLOCK;
; 1220
; 1221 local
; 1222 LINK_INFO : ref LINK_INFO_BLOCK;
; 1223
; 1224 !
; 1225 ! Find our LINK_INFO block
; 1226 !
; 1227
; 1228 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .NETWORK_STATUS_BLOCK [NETSB$LINK_ID], IQ_SCAN)) neq 0
; 1229 then
; 1230 !
; 1231 ! Update status to reflect disconnect complete
; 1232 !
; 1233 begin
; 1234
; 1235 bind
; 1236 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 1237
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 52
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (10)
; 1238 LNKSTS [LSB_CLOSED] = 1;
; 1239 LNKSTS [LSB_CCWAIT] = 0;
; 1240 LNKSTS [LSB_CIWAIT] = 0;
; 1241 LNKSTS [LSB_CONNECTED] = 0;
; 1242 !
; 1243 ! Startup waiting process
; 1244 !
; 1245 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 1246 end;
; 1247
; 1248 end; ! of DSC_AST
.SBTTL DSC.AST
000000 010046 DSC.AST:MOV R0,-(SP) ; 1215
000002 010146 MOV R1,-(SP)
000004 012746 000014' MOV #INFO.QUEUE,-(SP) ; 1228
000010 016600 000006 MOV 6(SP),R0 ; NETWORK.STATUS.,*
000014 016046 000004 MOV 4(R0),-(SP)
000020 012746 000000V MOV #IQ.SCAN,-(SP)
000024 004767 000000G JSR PC,UQ.SCAN
000030 062706 000006 ADD #6,SP
000034 005700 TST R0 ; LINK.INFO
000036 001413 BEQ 1$
000040 012701 000050 MOV #50,R1 ; 1233
000044 060001 ADD R0,R1 ; LINK.INFO,*
000046 152711 000004 BISB #4,(R1) ; 1238
000052 042711 000540 BIC #540,(R1) ; 1241
000056 010046 MOV R0,-(SP) ; LINK.INFO,* 1245
000060 004767 000000V JSR PC,DECLARE.NETWORK.EVENT
000064 005726 TST (SP)+ ; 1233
000066 012601 1$: MOV (SP)+,R1 ; 1215
000070 012600 MOV (SP)+,R0
;+
; RSX AST Service Routine Exit
;-
000072 012716 000563 MOV #563,(SP)
000076 104377 EMT 377
; Routine Size: 32 words, Routine Base: $CODE$ + 5460
; Maximum stack depth per invocation: 6 words
; 1249 !
; 1250 ! Main Processing for Disconnects
; 1251 !
; 1252
; 1253 if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
; 1254 .LINK_INFO) neq 0
; 1255 then
; 1256 begin
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 53
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (10)
; 1257
; 1258 bind
; 1259 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 1260
; 1261 if not .LNKSTS [LSB_CLOSED]
; 1262 then
; 1263 begin
; P 1264 DSC$S (.LINK_INFO [LINK_LUN],, LINK_INFO [LINK_LINK_SB], DSC_AST,
; 1265 <(if .DATA_LEN eql 0 then 0 else .DATA_PTR), .DATA_LEN>);
; 1266 WAIT_FOR_NETWORK (LINK_INFO, ( not .LNKSTS [LSB_CLOSED]));
; 1267 end;
; 1268
; 1269 NETWORK_LUNS [.LINK_INFO [LINK_LUN] - NMU$_NETWORK_LUN] = 0;
; 1270 NMU$QUEUE_EXTRACT (INFO_QUEUE, .LINK_INFO);
; 1271 NMU$MEMORY_RELEASE (.LINK_INFO, LINK_INFO_BLOCK_ALLOCATION);
; 1272 $true
; 1273 end
; 1274 else
; 1275 $false
; 1276
; 1277 end; ! End of NMU$NETWORK_CLOSE
.SBTTL UN.CLOSE
000000 004167 000000G UN.CLOSE::
JSR R1,$SAVE2 ; 1186
000004 012746 000543 MOV #543,-(SP) ; 1253
000010 104377 EMT 377
000012 005267 000000G INC INTNST
000016 012746 000014' MOV #INFO.QUEUE,-(SP)
000022 016646 000016 MOV 16(SP),-(SP) ; LINK.IDENTIFIER,*
000026 012746 000000V MOV #IQ.SCAN,-(SP)
000032 004767 000000G JSR PC,UQ.SCAN
000036 022626 CMP (SP)+,(SP)+
000040 010001 MOV R0,R1 ; *,LINK.INFO
000042 012716 000543 MOV #543,(SP)
000046 104377 EMT 377
000050 005367 000000G DEC INTNST
000054 000243 .WORD CLV!CLC
000056 003005 BGT 1$
000060 005067 000000G CLR INTNST
000064 012746 000545 MOV #545,-(SP)
000070 104377 EMT 377
000072 005701 1$: TST R1 ; LINK.INFO 1254
000074 001476 BEQ 6$
000076 132761 000004 000050 BITB #4,50(R1) ; *,*(LINK.INFO) 1261
000104 001046 BNE 5$
000106 005046 CLR -(SP) ; 1265
000110 005046 CLR -(SP)
000112 005046 CLR -(SP)
000114 005046 CLR -(SP)
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 54
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (10)
000116 016646 000022 MOV 22(SP),-(SP) ; DATA.LEN,*
000122 005716 TST (SP) ; DATA.LEN
000124 001002 BNE 2$
000126 005046 CLR -(SP)
000130 000402 BR 3$
000132 016646 000022 2$: MOV 22(SP),-(SP) ; DATA.PTR,*
000136 012746 005460' 3$: MOV #DSC.AST,-(SP)
000142 010146 MOV R1,-(SP) ; LINK.INFO,*
000144 062716 000014 ADD #14,(SP)
000150 005046 CLR -(SP)
000152 016146 000010 MOV 10(R1),-(SP) ; *(LINK.INFO),*
000156 012746 016000 MOV #16000,-(SP)
000162 012746 006001 MOV #6001,-(SP)
000166 104377 EMT 377
000170 010102 MOV R1,R2 ; LINK.INFO,* 1266
000172 062702 000036 ADD #36,R2
000176 132761 000004 000050 4$: BITB #4,50(R1) ; *,*(LINK.INFO)
000204 001006 BNE 5$
000206 010246 MOV R2,-(SP)
000210 005046 CLR -(SP)
000212 004767 000000G JSR PC,US.WAIT
000216 022626 CMP (SP)+,(SP)+
000220 000766 BR 4$
000222 016100 000010 5$: MOV 10(R1),R0 ; *(LINK.INFO),* 1269
000226 006300 ASL R0
000230 005060 000010' CLR NETWORK.LUNS-12(R0)
000234 012746 000014' MOV #INFO.QUEUE,-(SP) ; 1270
000240 010146 MOV R1,-(SP) ; LINK.INFO,*
000242 004767 000000G JSR PC,UQ.EXTRACT
000246 010116 MOV R1,(SP) ; LINK.INFO,* 1271
000250 012746 000236 MOV #236,-(SP)
000254 004767 000000G JSR PC,UM.RELEASE
000260 062706 000006 ADD #6,SP ; 1256
000264 012700 000001 MOV #1,R0 ; 1253
000270 000207 RTS PC
000272 005000 6$: CLR R0
000274 000207 RTS PC ; 1186
; Routine Size: 95 words, Routine Base: $CODE$ + 5560
; Maximum stack depth per invocation: 17 words
; 1278
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 55
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (11)
; 1279 global routine %unquote NMU$NETWORK_STATUS (LINK_IDENTIFIER, STS_BLK) =
; 1280
; 1281 !++
; 1282 ! Functional description:
; 1283 !
; 1284 ! This routine supplies the status of a logical link.
; 1285 !
; 1286 ! Formal parameters:
; 1287 !
; 1288 ! .LINK_IDENTIFIER Link identifier.
; 1289 ! .STS_BLK Address of status block.
; 1290 !
; 1291 ! Routine value:
; 1292 !
; 1293 ! $true - Link Status Available
; 1294 ! $false - Link Status Unavailable
; 1295 !
; 1296 ! Side effects: none
; 1297 !
; 1298 !--
; 1299
; 1300 begin
; 1301
; 1302 local
; 1303 LINK_INFO : ref LINK_INFO_BLOCK;
; 1304
; 1305 if (INTERRUPT_OFF; LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .LINK_IDENTIFIER, IQ_SCAN); INTERRUPT_ON;
; 1306 .LINK_INFO) neq 0
; 1307 then
; 1308 begin
; 1309
; 1310 bind
; 1311 LNKSTS = LINK_INFO [LINK_STATUS] : vector [1];
; 1312
; 1313 .STS_BLK = .LNKSTS [0];
; 1314 $true
; 1315 end
; 1316 else
; 1317 $false
; 1318
; 1319 end; ! End of NMU$NETWORK_STATUS
.SBTTL UN.STATUS
000000 010146 UN.STATUS::
MOV R1,-(SP) ; 1279
000002 012746 000543 MOV #543,-(SP) ; 1305
000006 104377 EMT 377
000010 005267 000000G INC INTNST
000014 012746 000014' MOV #INFO.QUEUE,-(SP)
000020 016646 000010 MOV 10(SP),-(SP) ; LINK.IDENTIFIER,*
000024 012746 000000V MOV #IQ.SCAN,-(SP)
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 56
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (11)
000030 004767 000000G JSR PC,UQ.SCAN
000034 022626 CMP (SP)+,(SP)+
000036 010001 MOV R0,R1 ; *,LINK.INFO
000040 012716 000543 MOV #543,(SP)
000044 104377 EMT 377
000046 005367 000000G DEC INTNST
000052 000243 .WORD CLV!CLC
000054 003005 BGT 1$
000056 005067 000000G CLR INTNST
000062 012746 000545 MOV #545,-(SP)
000066 104377 EMT 377
000070 005701 1$: TST R1 ; LINK.INFO 1306
000072 001406 BEQ 2$
000074 016176 000050 000004 MOV 50(R1),@4(SP) ; *(LINK.INFO),STS.BLK 1313
000102 012700 000001 MOV #1,R0 ; 1305
000106 000401 BR 3$
000110 005000 2$: CLR R0
000112 012601 3$: MOV (SP)+,R1 ; 1279
000114 000207 RTS PC
; Routine Size: 39 words, Routine Base: $CODE$ + 6056
; Maximum stack depth per invocation: 5 words
; 1320
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 57
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (12)
; 1321 global routine %unquote NMU$NETWORK_VALIDATE (CONN_BLK) =
; 1322
; 1323 !++
; 1324 ! Functional description:
; 1325 !
; 1326 !
; 1327 ! Formal parameters:
; 1328 !
; 1329 ! .CONN_BLK Address of a link connect block.
; 1330 !
; 1331 ! Routine value:
; 1332 !
; 1333 ! 0 - Unprivledged user
; 1334 ! 1 - Privledged user
; 1335 !
; 1336 ! Side effects: none
; 1337 !
; 1338 !--
; 1339
; 1340 begin
; 1341
; 1342 map
; 1343 CONN_BLK : ref CONNECT_BLOCK;
; 1344
; 1345 local
; 1346 CNT,
; 1347 PTR;
; 1348
; 1349 PTR = ch$ptr (UN$USER,, 8);
; 1350
; 1351 if (CNT = ch$rchar_a (PTR)) neq 0
; 1352 then
; 1353 begin
; 1354
; 1355 if .CONN_BLK [CB_USERID_LENGTH] neq .CNT then return 0;
; 1356
; 1357 if ch$neq (.CNT, .CONN_BLK [CB_USERID], .CNT, .PTR, 0) then return 0;
; 1358
; 1359 end;
; 1360
; 1361 PTR = ch$ptr (UN$PASSWORD,, 8);
; 1362
; 1363 if (CNT = ch$rchar_a (PTR)) neq 0
; 1364 then
; 1365 begin
; 1366
; 1367 if .CONN_BLK [CB_PASSWORD_LENGTH] neq .CNT then return 0;
; 1368
; 1369 if ch$neq (.CNT, .CONN_BLK [CB_PASSWORD], .CNT, .PTR, 0) then return 0;
; 1370
; 1371 end;
; 1372
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 58
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (12)
; 1373 PTR = ch$ptr (UN$ACCOUNT,, 8);
; 1374
; 1375 if (CNT = ch$rchar_a (PTR)) neq 0
; 1376 then
; 1377 begin
; 1378
; 1379 if .CONN_BLK [CB_ACCOUNT_LENGTH] neq .CNT then return 0;
; 1380
; 1381 if ch$neq (.CNT, .CONN_BLK [CB_ACCOUNT], .CNT, .PTR, 0) then return 0;
; 1382
; 1383 end;
; 1384
; 1385 1
; 1386 end; ! End of NMU$NETWORK_VALIDATE
.SBTTL UN.VALIDATE
000000 004167 000000G UN.VALIDATE::
JSR R1,$SAVE2 ; 1321
000004 012702 000000' MOV #UN$USER,R2 ; *,PTR 1349
000010 005001 CLR R1 ; CNT 1351
000012 152201 BISB (R2)+,R1 ; PTR,CNT
000014 005701 TST R1 ; CNT
000016 001421 BEQ 1$
000020 016600 000010 MOV 10(SP),R0 ; CONN.BLK,* 1355
000024 026001 000014 CMP 14(R0),R1 ; *,CNT
000030 001072 BNE 3$
000032 010146 MOV R1,-(SP) ; CNT,* 1357
000034 016046 000012 MOV 12(R0),-(SP)
000040 010146 MOV R1,-(SP) ; CNT,*
000042 010246 MOV R2,-(SP) ; PTR,*
000044 005046 CLR -(SP)
000046 004767 000000G JSR PC,BL$NEQ
000052 062706 000012 ADD #12,SP
000056 006000 ROR R0
000060 103456 BLO 3$
000062 012702 000022' 1$: MOV #UN$PASSWORD,R2 ; *,PTR 1361
000066 005001 CLR R1 ; CNT 1363
000070 152201 BISB (R2)+,R1 ; PTR,CNT
000072 005701 TST R1 ; CNT
000074 001421 BEQ 2$
000076 016600 000010 MOV 10(SP),R0 ; CONN.BLK,* 1367
000102 026001 000030 CMP 30(R0),R1 ; *,CNT
000106 001043 BNE 3$
000110 010146 MOV R1,-(SP) ; CNT,* 1369
000112 016046 000026 MOV 26(R0),-(SP)
000116 010146 MOV R1,-(SP) ; CNT,*
000120 010246 MOV R2,-(SP) ; PTR,*
000122 005046 CLR -(SP)
000124 004767 000000G JSR PC,BL$NEQ
000130 062706 000012 ADD #12,SP
000134 006000 ROR R0
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 59
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (12)
000136 103427 BLO 3$
000140 012702 000034' 2$: MOV #UN$ACCOUNT,R2 ; *,PTR 1373
000144 005001 CLR R1 ; CNT 1375
000146 152201 BISB (R2)+,R1 ; PTR,CNT
000150 005701 TST R1 ; CNT
000152 001423 BEQ 4$
000154 016600 000010 MOV 10(SP),R0 ; CONN.BLK,* 1379
000160 026001 000024 CMP 24(R0),R1 ; *,CNT
000164 001014 BNE 3$
000166 010146 MOV R1,-(SP) ; CNT,* 1381
000170 016046 000022 MOV 22(R0),-(SP)
000174 010146 MOV R1,-(SP) ; CNT,*
000176 010246 MOV R2,-(SP) ; PTR,*
000200 005046 CLR -(SP)
000202 004767 000000G JSR PC,BL$NEQ
000206 062706 000012 ADD #12,SP
000212 006000 ROR R0
000214 103002 BCC 4$
000216 005000 3$: CLR R0
000220 000207 RTS PC
000222 012700 000001 4$: MOV #1,R0 ; 1321
000226 000207 RTS PC
; Routine Size: 76 words, Routine Base: $CODE$ + 6174
; Maximum stack depth per invocation: 9 words
; 1387
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 60
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (13)
; 1388 global routine %unquote NMU$NETWORK_LOCAL =
; 1389
; 1390 !++
; 1391 ! Functional description:
; 1392 !
; 1393 ! This routine returns a pointer to the local node
; 1394 ! name string.
; 1395 !
; 1396 ! Formal parameters: none
; 1397 !
; 1398 ! Routine value:
; 1399 !
; 1400 ! Byte pointer to node name string.
; 1401 !
; 1402 ! Side effects: none
; 1403 !
; 1404 !--
; 1405
; 1406 begin
; 1407 ch$ptr (LOCAL_NODE,, 8)
; 1408 end; ! End of NMU$NETWORK_LOCAL
.SBTTL UN.LOCAL
000000 012700 000000' UN.LOCAL::
MOV #LOCAL.NODE,R0 ; 1388
000004 000207 RTS PC
; Routine Size: 3 words, Routine Base: $CODE$ + 6424
; Maximum stack depth per invocation: 0 words
; 1409
; 1410 !<BLF/PAGE>
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 61
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (14)
; 1411 routine DECLARE_NETWORK_EVENT (LINK_INFO) : novalue =
; 1412
; 1413 !++
; 1414 ! Functional description:
; 1415 !
; 1416 ! This routine flags a network event and wakes up the scheduler.
; 1417 !
; 1418 ! Formal parameters:
; 1419 !
; 1420 ! .LINK_INFO is the LINK_INFO_BLOCK for this event
; 1421 !
; 1422 ! Routine value: none
; 1423 !
; 1424 ! Side effects: none
; 1425 !
; 1426 !--
; 1427
; 1428 begin
; 1429
; 1430 map
; 1431 LINK_INFO : ref LINK_INFO_BLOCK;
; 1432
; 1433 NMU$SCHED_FLAG (LINK_INFO [LINK_EVENT]);
; 1434 PROCESS_WAKE;
; 1435 end; ! of DECLARE_NETWORK_EVENT
.SBTTL DECLARE.NETWORK.EVENT
000000 016646 000002 DECLARE.NETWORK.EVENT:
MOV 2(SP),-(SP) ; LINK.INFO,* 1433
000004 062716 000036 ADD #36,(SP)
000010 004767 000000G JSR PC,US.FLAG
000014 012746 000040 MOV #40,-(SP)
000020 012746 001041 MOV #1041,-(SP)
000024 104377 EMT 377
000026 005726 TST (SP)+
000030 000207 RTS PC ; 1411
; Routine Size: 13 words, Routine Base: $CODE$ + 6432
; Maximum stack depth per invocation: 5 words
; 1436 !<BLF/PAGE>
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 62
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (15)
; 1437
; 1438 !++
; 1439 ! routine GND_AST VANILLA_INTERRUPT_ROUTINE
; 1440 ! routine PROCESS_MAILBOX_ENTRY
; 1441 !
; 1442 ! Functional description:
; 1443 !
; 1444 ! These routines process various asynchronous network events signaled
; 1445 ! via the "Network Mailbox".
; 1446 ! GND_AST is entered when asynchronous events are available.
; 1447 ! PROCESS_MAILBOX_ENTRY is the main processing code for the events.
; 1448 !
; 1449 ! Formal parameters:
; 1450 !
; 1451 ! $RSX_AST_PARAMETERS - Not Touched
; 1452 !
; 1453 ! Routine value: none
; 1454 !
; 1455 ! Side effects: none
; 1456 !
; 1457 !--
; 1458
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 63
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (16)
; 1459 routine GND_AST VANILLA_INTERRUPT_ROUTINE =
; 1460 begin
; 1461 PROCESS_MAILBOX_ENTRY ();
; 1462 end; !of GND_AST
.SBTTL GND.AST
000000 010046 GND.AST:MOV R0,-(SP) ; 1459
000002 004767 000000V JSR PC,PROCESS.MAILBOX.ENTRY ; 1461
000006 012600 MOV (SP)+,R0 ; 1459
;+
; RSX AST Service Routine Exit
;-
000010 012746 000563 MOV #563,-(SP)
000014 104377 EMT 377
; Routine Size: 7 words, Routine Base: $CODE$ + 6464
; Maximum stack depth per invocation: 4 words
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 64
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (17)
; 1463 routine PROCESS_MAILBOX_ENTRY : novalue =
; 1464
; 1465 !++
; 1466 ! Functional description:
; 1467 !
; 1468 !
; 1469 ! Formal parameters:
; 1470 !
; 1471 !
; 1472 ! Routine value: none
; 1473 !
; 1474 ! Side effects: none
; 1475 !
; 1476 !--
; 1477
; 1478 begin
; 1479
; 1480 own
; 1481 GND_SB : $NETWORK_STATUS_BLOCK,
; 1482 REJ_BUF : vector [3, byte] initial (byte (-21, 9, 0)),
; 1483 GND_BUF : RSX$_GNDB_BLOCK,
; 1484 GND_DIR : GNDW$ (NMU$_NETWORK_LUN, NMU$_NETWORK_FLAG, GND_SB,, <GND_BUF, RSX$_GNDB_ALLOCATION>),
; P 1485 REJ_DIR : REJW$ (NMU$_NETWORK_LUN, NMU$_NETWORK_FLAG, GND_SB,,
; P 1486 <GND_BUF, RSX$_GNDB_ALLOCATION,
; 1487 REJ_BUF, 3>);
; 1488
; 1489 local
; 1490 LINK_INFO : ref LINK_INFO_BLOCK;
; 1491
; 1492 !
; 1493 ! Routine to find Target Links which match connections
; 1494 !
; 1495 routine TQ_SCAN (LINK_INFO, CURRENT_GNDB) =
; 1496 begin
; 1497
; 1498 map
; 1499 CURRENT_GNDB : ref RSX$_GNDB_BLOCK,
; 1500 LINK_INFO : ref LINK_INFO_BLOCK;
; 1501
; 1502 bind
; 1503 GNDB = LINK_INFO [LINK_GNDB] : RSX$_GNDB_BLOCK,
; 1504 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 1505
; 1506 !
; 1507 ! Ensure this link is a waiting target.
; 1508 !
; 1509
; 1510 if (.LNKSTS [LSB_SERVER] and .LNKSTS [LSB_CIWAIT])
; 1511 then
; 1512 !
; 1513 ! Compare objects and determine matching characteristics
; 1514 !
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 65
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (17)
; 1515
; 1516 case .GNDB [GNDB_DEST_FORMAT] from 0 to 2 of
; 1517 set
; 1518
; 1519 [0] : ! Format 0 Descriptor
; 1520 begin
; 1521
; 1522 if .CURRENT_GNDB [GNDB_DEST_FORMAT] neq 0 then return 0;
; 1523
; 1524 if .CURRENT_GNDB [GNDB_DEST_OBJECT] eql .GNDB [GNDB_DEST_OBJECT]
; 1525 then
; 1526 return .LINK_INFO
; 1527 else
; 1528 return 0;
; 1529
; 1530 end;
; 1531
; 1532 [1] : ! Format 1 Descriptor
; 1533 begin
; 1534
; 1535 if .CURRENT_GNDB [GNDB_DEST_FORMAT] neq 1 then return 0;
; 1536
; 1537 if .CURRENT_GNDB [GNDB_DEST_OBJECT] neq .GNDB [GNDB_DEST_OBJECT] then return 0;
; 1538
; 1539 if ch$eql (.CURRENT_GNDB [GNDB_D1_LENGTH], ch$ptr (CURRENT_GNDB [GNDB_D1_TASK_NAME]),
; 1540 .GNDB [GNDB_D1_LENGTH], ch$ptr (GNDB [GNDB_D1_TASK_NAME]), 0)
; 1541 then
; 1542 return .LINK_INFO
; 1543 else
; 1544 return 0;
; 1545
; 1546 end;
; 1547
; 1548 [2] : ! Format 2 Descriptor
; 1549 return 0;
; 1550 tes
; 1551
; 1552 else
; 1553 0
; 1554
; 1555 end; ! of TQ_SCAN
000130 .PSECT $OWN$, D
000130 GND.SB: .BLKW 3
000136 REJ.BUF:
000136 353 .BYTE -25
000137 011 .BYTE 11
000140 000 .BYTE 0
.EVEN
000142 GND.BUF:.BLKW 71
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 66
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (17)
000324 006003 GND.DIR:.WORD 6003
000326 016630 .WORD 16630
000330 000005 .WORD 5
000332 000005 .WORD 5
000334 000130' .WORD GND.SB
000336 000000 .WORD 0
000340 000142' .WORD GND.BUF
000342 000162 .WORD 162
000344 000000 .WORD 0
000346 000000 .WORD 0
000350 000000 .WORD 0
000352 000000 .WORD 0
000354 006003 REJ.DIR:.WORD 6003
000356 016020 .WORD 16020
000360 000005 .WORD 5
000362 000005 .WORD 5
000364 000130' .WORD GND.SB
000366 000000 .WORD 0
000370 000142' .WORD GND.BUF
000372 000162 .WORD 162
000374 000136' .WORD REJ.BUF
000376 000003 .WORD 3
000400 000000 .WORD 0
000402 000000 .WORD 0
.SBTTL TQ.SCAN
006502 .PSECT $CODE$, RO
000000 004167 000000G TQ.SCAN:JSR R1,$SAVE3 ; 1495
000004 016603 000014 MOV 14(SP),R3 ; LINK.INFO,* 1503
000010 012701 000054 MOV #54,R1 ; 1496
000014 060301 ADD R3,R1
000016 105763 000050 TSTB 50(R3) ; 1510
000022 100064 BPL 4$
000024 132763 000100 000050 BITB #100,50(R3)
000032 001460 BEQ 4$
000034 012702 000004 MOV #4,R2 ; 1516
000040 060102 ADD R1,R2
000042 005000 CLR R0 ; 1510
000044 151200 BISB (R2),R0
000046 006300 ASL R0
000050 066007 000266' ADD P.AAD(R0),PC ; Case dispatch
000054 016600 000012 1$: MOV 12(SP),R0 ; CURRENT.GNDB,* 1522
000060 062700 000004 ADD #4,R0
000064 105710 TSTB (R0)
000066 001042 BNE 4$
000070 126062 000001 000001 CMPB 1(R0),1(R2) ; 1524
000076 001036 BNE 4$
000100 000433 BR 3$
000102 016600 000012 2$: MOV 12(SP),R0 ; CURRENT.GNDB,* 1535
000106 126027 000004 000001 CMPB 4(R0),#1
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 67
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (17)
000114 001027 BNE 4$
000116 126062 000005 000001 CMPB 5(R0),1(R2) ; 1537
000124 001023 BNE 4$
000126 016046 000006 MOV 6(R0),-(SP) ; 1540
000132 012746 000010 MOV #10,-(SP) ; 1539
000136 060016 ADD R0,(SP)
000140 016146 000006 MOV 6(R1),-(SP) ; 1540
000144 010146 MOV R1,-(SP)
000146 062716 000010 ADD #10,(SP)
000152 005046 CLR -(SP)
000154 004767 000000G JSR PC,BL$EQL
000160 062706 000012 ADD #12,SP
000164 006000 ROR R0
000166 103002 BCC 4$
000170 010300 3$: MOV R3,R0 ; 1539
000172 000207 RTS PC
000174 005000 4$: CLR R0 ; 1510
000176 000207 RTS PC ; 1495
; Routine Size: 64 words, Routine Base: $CODE$ + 6502
; Maximum stack depth per invocation: 10 words
000266 .PSECT $PLIT$, RO , D
P.AAD: ; CASE Table for TQ.SCAN+0050 1510
000266 000000 .WORD 0 ; [1$]
000270 000026 .WORD 26 ; [2$]
000272 000120 .WORD 120 ; [4$]
; 1556 !
; 1557 ! Routine to find LINK_INFO block via LUN
; 1558 !
; 1559 routine IQ_LUN_SCAN (LINK_INFO, LUN) =
; 1560 begin
; 1561
; 1562 map
; 1563 LINK_INFO : ref LINK_INFO_BLOCK;
; 1564
; 1565 if .LINK_INFO [LINK_LUN] eql .LUN then .LINK_INFO else 0
; 1566
; 1567 end; ! of IQ_LUN_SCAN
.SBTTL IQ.LUN.SCAN
006702 .PSECT $CODE$, RO
000000 016600 000004 IQ.LUN.SCAN:
MOV 4(SP),R0 ; LINK.INFO,* 1565
000004 026066 000010 000002 CMP 10(R0),2(SP) ; *,LUN
000012 001401 BEQ 1$
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 68
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (17)
000014 005000 CLR R0
000016 000207 1$: RTS PC ; 1559
; Routine Size: 8 words, Routine Base: $CODE$ + 6702
; Maximum stack depth per invocation: 0 words
; 1568 !
; 1569 ! Main processing of Mailbox Entries
; 1570 ! Get the mailbox entry
; 1571 !
; 1572 dir$ (GND_DIR);
; 1573
; 1574 if .GND_SB [NETSB$ERR] neq IS$SUC then return;
; 1575
; 1576 !
; 1577 ! Classify request into Connects, Disconnects, and Interrupt Messages. Then
; 1578 ! process accordingly.
; 1579 !
; 1580
; 1581 case .GND_SB [NETSB$ERR1] from NT$CON to NT$ABO of
; 1582 set
; 1583
; 1584 [NT$CON] : !Connect Received
; 1585 begin
; 1586
; 1587 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, GND_BUF, TQ_SCAN)) eql 0
; 1588 then
; 1589 begin ! No waiting TARGET found, Reject Connection
; 1590 dir$ (REJ_DIR);
; 1591 end
; 1592 else
; 1593 begin ! We have a waiting TARGET
; 1594
; 1595 if ASSIGN_A_LUN (.LINK_INFO) lss 0
; 1596 then
; 1597 dir$ (REJ_DIR)
; 1598 else
; 1599 begin
; 1600
; 1601 bind
; 1602 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK,
; 1603 NETSTS = LINK_INFO [LINK_LINK_SB] : $NETWORK_STATUS_BLOCK;
; 1604
; 1605 NETSTS [NETSB$ERROR] = IS$SUC;
; 1606 ch$copy (minu (.GND_SB [NETSB$CNT], RSX$_GNDB_ALLOCATION), ch$ptr (GND_BUF), 0,
; 1607 RSX$_GNDB_ALLOCATION, ch$ptr (LINK_INFO [LINK_GNDB]));
; 1608 LNKSTS [LSB_CIWAIT] = 0;
; 1609 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 1610 end;
; 1611
; 1612 end;
; 1613
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 69
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (17)
; 1614 end;
; 1615
; 1616 [NT$INT] : !Interrupt Message Received
; 1617 return; !Ignore for now
; 1618
; 1619 [NT$DSC, NT$ABT] : !Disconnect or Abort Received
; 1620 begin
; 1621
; 1622 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .GND_SB [NETSB$CNT1], IQ_LUN_SCAN)) eql 0
; 1623 then
; 1624 return
; 1625 else
; 1626 begin
; 1627
; 1628 bind
; 1629 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 1630
; 1631 LINK_INFO [LINK_OPTI_LENGTH] = .GND_SB [NETSB$CNT];
; 1632 ch$copy (minu (.GND_SB [NETSB$CNT], 16), ch$ptr (GND_BUF), 0, 16,
; 1633 ch$ptr (LINK_INFO [LINK_OPTI_DATA]));
; 1634 LNKSTS [LSB_CONNECTED] = 0;
; 1635 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 1636 end;
; 1637
; 1638 end;
; 1639
; 1640 [NT$ABO] :
; 1641 begin
; 1642
; 1643 if (LINK_INFO = NMU$QUEUE_SCAN (INFO_QUEUE, .GND_SB [NETSB$CNT1], IQ_LUN_SCAN)) eql 0
; 1644 then
; 1645 return
; 1646 else
; 1647 begin
; 1648
; 1649 bind
; 1650 LNKSTS = LINK_INFO [LINK_STATUS] : LINK_STATUS_BLOCK;
; 1651
; 1652 LNKSTS [LSB_REASON] = .GND_SB [NETSB$CNT];
; 1653 LINK_INFO [LINK_OPTI_LENGTH] = 0;
; 1654 LNKSTS [LSB_CONNECTED] = 0;
; 1655 DECLARE_NETWORK_EVENT (.LINK_INFO);
; 1656 end;
; 1657
; 1658 end;
; 1659
; 1660 [INRANGE, OUTRANGE] : !Erroneous code
; 1661 return;
; 1662 tes;
; 1663
; 1664 !
; 1665 end; ! of PROCESS_MAILBOX_ENTRY
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 70
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (17)
.SBTTL PROCESS.MAILBOX.ENTRY
000000 010146 PROCESS.MAILBOX.ENTRY:
MOV R1,-(SP) ; 1463
000002 012746 000324' MOV #GND.DIR,-(SP) ; 1572
000006 104377 EMT 377
000010 126727 000130' 000001 CMPB GND.SB,#1 ; 1574
000016 001151 BNE 9$
000020 116700 000131' MOVB GND.SB+1,R0 ; 1581
000024 005300 DEC R0
000026 020027 000004 CMP R0,#4
000032 101175 BHI 11$
000034 006300 ASL R0
000036 066007 000274' ADD P.AAE(R0),PC ; Case dispatch
000042 000571 1$: BR 11$ ; 1661
000044 012746 000014' 2$: MOV #INFO.QUEUE,-(SP) ; 1587
000050 012746 000142' MOV #GND.BUF,-(SP)
000054 012746 006502' MOV #TQ.SCAN,-(SP)
000060 004767 000000G JSR PC,UQ.SCAN
000064 062706 000006 ADD #6,SP
000070 010001 MOV R0,R1 ; *,LINK.INFO
000072 001406 BEQ 3$ ; 1590
000074 010146 MOV R1,-(SP) ; LINK.INFO,* 1595
000076 004767 000000V JSR PC,ASSIGN.A.LUN
000102 005726 TST (SP)+
000104 005700 TST R0
000106 002004 BGE 4$
000110 012746 000354' 3$: MOV #REJ.DIR,-(SP) ; 1597
000114 104377 EMT 377
000116 000543 BR 11$ ; 1595
000120 012761 000001 000014 4$: MOV #1,14(R1) ; *,*(LINK.INFO) 1605
000126 005046 CLR -(SP) ; 1606
000130 116716 000132' MOVB GND.SB+2,(SP)
000134 021627 000162 CMP (SP),#162
000140 101402 BLOS 5$
000142 012716 000162 MOV #162,(SP)
000146 012746 000142' 5$: MOV #GND.BUF,-(SP) ; 1607
000152 005046 CLR -(SP)
000154 012746 000162 MOV #162,-(SP)
000160 010146 MOV R1,-(SP) ; LINK.INFO,*
000162 062716 000054 ADD #54,(SP)
000166 012746 177773 MOV #-5,-(SP)
000172 004767 000000G JSR PC,BL$CPY
000176 142761 000100 000050 BICB #100,50(R1) ; *,*(LINK.INFO) 1608
000204 000451 BR 8$ ; 1609
000206 012746 000014' 6$: MOV #INFO.QUEUE,-(SP) ; 1622
000212 005046 CLR -(SP)
000214 116716 000133' MOVB GND.SB+3,(SP)
000220 012746 006702' MOV #IQ.LUN.SCAN,-(SP)
000224 004767 000000G JSR PC,UQ.SCAN
000230 062706 000006 ADD #6,SP
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 71
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (17)
000234 010001 MOV R0,R1 ; *,LINK.INFO
000236 001473 BEQ 11$ ; 1624
000240 016761 000132' 000214 MOV GND.SB+2,214(R1) ; *,*(LINK.INFO) 1631
000246 105061 000215 CLRB 215(R1) ; *(LINK.INFO)
000252 005046 CLR -(SP) ; 1632
000254 116716 000132' MOVB GND.SB+2,(SP)
000260 021627 000020 CMP (SP),#20
000264 101402 BLOS 7$
000266 012716 000020 MOV #20,(SP)
000272 012746 000142' 7$: MOV #GND.BUF,-(SP) ; 1633
000276 005046 CLR -(SP)
000300 012746 000020 MOV #20,-(SP)
000304 010146 MOV R1,-(SP) ; LINK.INFO,*
000306 062716 000216 ADD #216,(SP)
000312 012746 177773 MOV #-5,-(SP)
000316 004767 000000G JSR PC,BL$CPY
000322 042761 000400 000050 BIC #400,50(R1) ; *,*(LINK.INFO) 1634
000330 010116 8$: MOV R1,(SP) ; LINK.INFO,* 1635
000332 004767 177152 JSR PC,DECLARE.NETWORK.EVENT
000336 062706 000014 ADD #14,SP ; 1626
000342 000431 9$: BR 11$ ; 1581
000344 012746 000014' 10$: MOV #INFO.QUEUE,-(SP) ; 1643
000350 005046 CLR -(SP)
000352 116716 000133' MOVB GND.SB+3,(SP)
000356 012746 006702' MOV #IQ.LUN.SCAN,-(SP)
000362 004767 000000G JSR PC,UQ.SCAN
000366 062706 000006 ADD #6,SP
000372 010001 MOV R0,R1 ; *,LINK.INFO
000374 001414 BEQ 11$ ; 1645
000376 116761 000132' 000052 MOVB GND.SB+2,52(R1) ; *,*(LINK.INFO) 1652
000404 005061 000214 CLR 214(R1) ; *(LINK.INFO) 1653
000410 042761 000400 000050 BIC #400,50(R1) ; *,*(LINK.INFO) 1654
000416 010146 MOV R1,-(SP) ; LINK.INFO,* 1655
000420 004767 177064 JSR PC,DECLARE.NETWORK.EVENT
000424 005726 TST (SP)+ ; 1647
000426 012601 11$: MOV (SP)+,R1 ; 1463
000430 000207 RTS PC
; Routine Size: 141 words, Routine Base: $CODE$ + 6722
; Maximum stack depth per invocation: 8 words
000274 .PSECT $PLIT$, RO , D
P.AAE: ; CASE Table for PROCESS.MAILBOX+0036 1581
000274 000002 .WORD 2 ; [2$]
000276 000364 .WORD 364 ; [11$]
000300 000144 .WORD 144 ; [6$]
000302 000144 .WORD 144 ; [6$]
000304 000302 .WORD 302 ; [10$]
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 72
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (18)
; 1666 routine IQ_SCAN (LINK_INFO, LINK_IDENTIFIER) =
; 1667
; 1668 !++
; 1669 ! Functional description:
; 1670 !
; 1671 ! This routine is called when scanning the INFO_QUEUE by
; 1672 ! NMU$QUEUE_SCAN to find the entry associated with a
; 1673 ! particular link identifier.
; 1674 !
; 1675 ! Formal parameters:
; 1676 !
; 1677 ! .LINK_INFO address of current entry on the info queue.
; 1678 ! .LINK_IDENTIFIER identifier of link to find data base for.
; 1679 !
; 1680 ! Routine value:
; 1681 !
; 1682 ! Address of link info block if matched (0 otherwise).
; 1683 !
; 1684 ! Side effects: none
; 1685 !
; 1686 !--
; 1687
; 1688 begin
; 1689
; 1690 map
; 1691 LINK_INFO : ref LINK_INFO_BLOCK;
; 1692
; 1693 if .LINK_INFO [LINK_ID] eql .LINK_IDENTIFIER then .LINK_INFO else 0
; 1694
; 1695 end; ! End of IQ_SCAN
.SBTTL IQ.SCAN
007354 .PSECT $CODE$, RO
000000 016600 000004 IQ.SCAN:MOV 4(SP),R0 ; LINK.INFO,* 1693
000004 026066 000006 000002 CMP 6(R0),2(SP) ; *,LINK.IDENTIFIER
000012 001401 BEQ 1$
000014 005000 CLR R0
000016 000207 1$: RTS PC ; 1666
; Routine Size: 8 words, Routine Base: $CODE$ + 7354
; Maximum stack depth per invocation: 0 words
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 73
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (19)
; 1696 routine ASSIGN_A_LUN (LINK_INFO) =
; 1697
; 1698 !++
; 1699 ! Functional description:
; 1700 !
; 1701 ! This routine assigns a LUN for usage by a link. It assigns the
; 1702 ! LUN based upon the TYPE or LINK (e.g. SOURCE_LINK or TARGET_LINK).
; 1703 !
; 1704 ! Formal parameters:
; 1705 !
; 1706 ! LINK_INFO = LINK_INFO_BLOCK for this link
; 1707 !
; 1708 ! Routine value:
; 1709 !
; 1710 ! gtr 0 - the LUN number assigned
; 1711 ! lss 0 - No LUN available
; 1712 !
; 1713 ! Side effects:
; 1714 !
; 1715 ! *******Warning*******
; 1716 ! SOURCE_LINK LUNs are assigned at non-interrupt level
; 1717 ! TARGET_LINK LUNs are assigned at interrupt level
; 1718 !
; 1719 !--
; 1720
; 1721 begin
; 1722
; 1723 map
; 1724 LINK_INFO : ref LINK_INFO_BLOCK;
; 1725
; 1726 local
; 1727 LUN_ADR : ref vector,
; 1728 LUN_CNT,
; 1729 LUN_NUMBER;
; 1730
; 1731 !
; 1732 ! Determine search algorithm based upon type
; 1733 !
; 1734
; 1735 LUN_NUMBER = NMU$_NETWORK_LUN + 1;
; 1736 LUN_CNT = NMU$_NETWORK_MAX_INCOMING;
; 1737 LUN_ADR = NETWORK_LUNS [1];
; 1738
; 1739 if .LINK_INFO [LINK_TYPE] eql SOURCE_LINK
; 1740 then
; 1741 begin
; 1742 LUN_NUMBER = NMU$_NETWORK_LUN + NMU$_NETWORK_MAX_INCOMING + 1;
; 1743 LUN_CNT = NMU$_NETWORK_MAX_LUNS - NMU$_NETWORK_MAX_INCOMING;
; 1744 LUN_ADR = NETWORK_LUNS [NMU$_NETWORK_MAX_INCOMING + 1];
; 1745 end;
; 1746
; 1747 do
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 74
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (19)
; 1748 begin
; 1749
; 1750 if
; 1751 begin
; 1752 local VAL;
; 1753 VAL = .LUN_ADR [0];
; 1754 LUN_ADR = LUN_ADR [1]; %(force auto-increment)%
; 1755 .VAL
; 1756 end eql 0
; 1757 then
; 1758 begin
; 1759 LUN_ADR = LUN_ADR [-1]; %(force auto-decrement)%
; 1760 LUN_ADR [0] = .LINK_INFO;
; 1761 LINK_INFO [LINK_LUN] = .LUN_NUMBER;
; 1762 LINK_INFO [LINK_FLAG] = .LUN_NUMBER;
; 1763 return .LUN_NUMBER;
; 1764 end;
; 1765
; 1766 LUN_NUMBER = .LUN_NUMBER + 1;
; 1767 end
; 1768 while (LUN_CNT = .LUN_CNT - 1) neq 0;
; 1769
; 1770 LUN_NUMBER = -1;
; 1771 return .LUN_NUMBER
; 1772 end; ! of ASSIGN_A_LUN
.SBTTL ASSIGN.A.LUN
000000 004167 000000G ASSIGN.A.LUN:
JSR R1,$SAVE4 ; 1696
000004 012701 000006 MOV #6,R1 ; *,LUN.NUMBER 1735
000010 012703 000003 MOV #3,R3 ; *,LUN.CNT 1736
000014 012704 000024' MOV #NETWORK.LUNS+2,R4 ; *,LUN.ADR 1737
000020 016602 000014 MOV 14(SP),R2 ; LINK.INFO,* 1739
000024 026227 000044 000002 CMP 44(R2),#2
000032 001006 BNE 1$
000034 012701 000011 MOV #11,R1 ; *,LUN.NUMBER 1742
000040 012703 000005 MOV #5,R3 ; *,LUN.CNT 1743
000044 012704 000032' MOV #NETWORK.LUNS+10,R4 ; *,LUN.ADR 1744
000050 012400 1$: MOV (R4)+,R0 ; LUN.ADR,VAL 1753
000052 001006 BNE 2$ ; 1756
000054 010244 MOV R2,-(R4) ; *,LUN.ADR 1760
000056 010162 000010 MOV R1,10(R2) ; LUN.NUMBER,* 1761
000062 010162 000012 MOV R1,12(R2) ; LUN.NUMBER,* 1762
000066 000404 BR 3$ ; 1758
000070 005201 2$: INC R1 ; LUN.NUMBER 1766
000072 077312 SOB R3,1$ ; LUN.CNT,* 1768
000074 012701 177777 MOV #-1,R1 ; *,LUN.NUMBER 1770
000100 010100 3$: MOV R1,R0 ; LUN.NUMBER,* 1721
000102 000207 RTS PC ; 1696
; Routine Size: 34 words, Routine Base: $CODE$ + 7374
; Maximum stack depth per invocation: 6 words
NMUNET 24-May-1985 13:29:47 TOPS-20 Bliss-16 2A(530) Page 75
X01.09 3-Jan-1983 17:12:34 DNET61:<MCB.NML>NMUNET.B16.1 (19)
; 1773 end ! End of module NMUNET
; 1774
; 1775 eludom
; OTS external references
.GLOBL $SAVE5, $SAVE4, $SAVE3, $SAVE2
.GLOBL BL$FCH, BL$NEQ, BL$EQL, BL$CPY
.GLOBL BL$MOV
; PSECT SUMMARY
;
; Psect Name Words Attributes
; $PLIT$ 99 RO , D , LCL, REL, CON
; $OWN$ 130 RW , D , LCL, REL, CON
; $GLOB$ 23 RW , D , LCL, REL, CON
; $CODE$ 1952 RO , I , LCL, REL, CON
; LIBRARY STATISTICS
;
; -------- Symbols -------- Blocks
; File Total Loaded Percent Read
;
; DNET61:<MCB.NML>NMULIB.L16.1 2716 268 9 0
; 1776 ! Local Modes:
; 1777 ! Mode:Fundamental
; 1778 ! Comment Start:!
; 1779 ! Comment Column:40
; 1780 ! Comment Rounding:+1
; 1781 ! Auto Save Mode:2
; 1782 ! End:
; Size: 1952 code + 252 data words
; Run Time: 00:28.6
; Elapsed Time: 00:35.8
; Memory Used: 109 pages
; Compilation Complete
ABT$S 1171
ABT_AST 1121* 1171
ACC$S 779
ACC_AST 728* 779
ALUN$S 323 330 334 335
ASSIGN_A_LUN 140 540 1595 1696*
BUFFER 886 962 986 1073
BUFFER_SIZE 886 962 986 1073
CBDSG 511# 513
CB_ACCOUNT_BUFFER 632
CB_ACCOUNT_LENGTH 537 633 1379
CB_ACCOUNT 538 632 635 1381
CB_DATA 548 549 553 636 639
CB_DATA_BUFFER 549 636
CB_DATA_LENGTH 552 553 574 637 654 659
CB_DESCRIPTOR 492 530
CB_DESCRIPTOR_LENGTH 487 491 492 525 529
CB_HOST 506 508 516 589 590
CB_HOST_BUFFER 589
CB_HOST_LENGTH 596
CB_OBJECT 484 523
CB_PASSWORD 536 628 631 1369
CB_PASSWORD_BUFFER 628
CB_PASSWORD_LENGTH 535 629 1367
CB_REJECT_CODE 650 658 679
CB_TASK 599 613 620
CB_TASK_BUFFER 599
CB_TASK_LENGTH 606 611 618
CB_USERID 534 624 627 1357
CB_USERID_BUFFER 624
CB_USERID_LENGTH 533 625 1355
CNT 1346 1351# 1355 1357 1363# 1367 1369 1375# 1379 1381
CON$S 550
CONB 460# 507 517 522# 523# 528# 529# 530 533# 534 535# 536
537# 538
CONB_ACCOUNT 538
CONB_ACCOUNT_LENGTH 537 538
CONB_FORMAT 522 528
CONB_NODE_NAME 507 517
CONB_OBJECT 523
CONB_PASSWORD 536
CONB_PASSWORD_LENGTH 535 536
CONB_USER_ID 534
CONB_USER_LENGTH 533 534
CONB_1_LENGTH 529 530
CONB_1_TASK_NAME 530
CONNECT_BLOCK 395 1343
CONN_BLK 352 395 484 487 491 492 506 508 516 523 525 529
530 533 534 535 536 537 538 548 549# 552 553 574#
589# 590 596# 599# 606# 611# 613 618# 620 624# 625# 627
628# 629# 631 632# 633# 635 636# 637# 639 650# 654# 658#
659# 679 1321 1343 1355 1357 1367 1369 1379 1381
CON_AST 404* 550
CURRENT_GNDB 1495 1499 1522 1524 1535 1537 1539
DATA_LEN 696 781 801 877 1091 1172 1186 1265
DATA_PTR 696 781 801 877 1091 1172 1186 1265
DECLARE_NETWORK_EVENT 136 438 762 863 940 1041 1152 1245 1411* 1609 1635 1655
DIR$ 339 344 1572 1590 1597
DSC$S 1264
DSC_AST 1215* 1264
EFN$NM 148#
EFN$NS 150#
EOM_FLAG 986 1063
FAIL_TYPE 160# 679
GETW 518
GLNW$ 278
GLN_DIR 278 344
GNDB 461# 484# 485# 490# 491# 493 581# 593 595 598 601 611
612 618 619 625 626 629 630 633 634 637 638 1503#
1516 1524 1537 1540
GNDB_D1_LENGTH 491 1539 1540
GNDB_D1_TASK_NAME 493 1539 1540
GNDB_DEST_FORMAT 485 490 1516 1522 1535
GNDB_DEST_OBJECT 484 1524 1537
GNDB_OPTIONAL_DATA 638
GNDB_OPTIONAL_LENGTH 637 638
GNDB_S1_LENGTH 611 612
GNDB_S1_TASK_NAME 612
GNDB_S2_LENGTH 618 619
GNDB_S2_TASK_NAME 619
GNDB_SOURCE_ACCOUNT 634
GNDB_SOURCE_ACCOUNT_LENGTH 633 634
GNDB_SOURCE_FORMAT 601
GNDB_SOURCE_NODE_NAME 593 595 598
GNDB_SOURCE_PASSWORD_LENGTH 629 630
GNDB_SOURCE_PASSWORD 630
GNDB_SOURCE_TASK_ID 626
GNDB_SOURCE_TASK_LENGTH 625 626
GNDW$ 1484
GND_AST 137 348 1459*
GND_BUF 1483 1484 1486 1587 1606 1632
GND_DIR 1484 1572
GND_SB 1481 1484 1485 1574 1581 1606 1622 1631 1632 1643 1652
IE$ABO 672
IE$BAD 674
IE$NNT 677
IE$NRJ 655 679
IE$RSU 676
IE$SPC 675
IE$URJ 673
INFO_QUEUE 221 312 417 455 687 741 770 847 871 930 948 1031
1049 1134 1160 1177 1228 1253 1270 1305 1587 1622 1643
INSB 463# 470#
INTERRUPT_OFF 770 871 948 1049 1160 1253 1305
INTERRUPT_ON 770 871 948 1049 1160 1253 1305
IQ_LUN_SCAN 1559* 1622 1643
IQ_SCAN 139 417 741 770 847 871 930 948 1031 1049 1134 1160
1228 1253 1305 1666*
IS$DAO 678
IS$SUC 298 427 571 751 790 975 1079 1574 1605
LINK_CONB 460 551
LINK_EVENT 245 450 1433
LINK_FLAG 1762
LINK_GNDB 461 581 780 876 1503 1607
LINK_ID 446 469 470 471 642 1693
LINK_IDENTIFIER 696 770 790 801 871 886 948 986 1049 1091 1160 1186
1253 1279 1305 1666 1693
LINK_INFO 398 411 417# 425 438 445# 446# 450 451# 455 459 460
461 462 463 464 469 470 471 540 550 551 561 569
575 580 581 642 651 686 687 688 723 735 741# 749
762 770# 771 776 777 779 780 782 829 841 847# 855
863 871# 872 875 876 878 912 924 930# 936# 940 948#
949 954 961# 962 966 973 1013 1025 1031# 1037# 1041 1049#
1050 1055 1070 1072# 1073 1077 1116 1128 1134# 1142 1152 1160#
1161 1166 1171 1173 1176 1177 1178 1210 1222 1228# 1236 1245
1253# 1254 1259 1264 1266 1269 1270 1271 1303 1305# 1306 1311
1411 1431 1433 1490 1495 1500 1503 1504 1526 1542 1559 1563
1565 1587# 1595 1602 1603 1607 1609 1622# 1629 1631# 1633 1635
1643# 1650 1653# 1655 1666 1691 1693 1696 1724 1739 1760 1761#
1762#
LINK_INFO_BLOCK_ALLOCATION 445 688 1178 1271
LINK_INFO_BLOCK 398 411 723 735 829 841 912 924 1013 1025 1116 1128
1210 1222 1303 1431 1490 1500 1563 1691 1724
LINK_INPUT_IN_PROGRESS 936 961 966
LINK_IN_SB 463 962 973
LINK_LINK_SB 462 550 569 777 779 875 1171 1264 1603
LINK_LUN 550 686 779 962 1073 1171 1176 1264 1269 1565 1761
LINK_OPTI_DATA 1633
LINK_OPTI_LENGTH 1631 1653
LINK_OUTPUT_IN_PROGRESS 1037 1072 1077
LINK_OUT_SB 464 1070 1073
LINK_QUEUE 455
LINK_STATUS 242 425 459 580 749 776 855 954 1055 1142 1166 1236
1259 1311 1504 1602 1629 1650
LINK_STATUS_BLOCK 242 425 459 580 749 776 855 954 1055 1142 1166 1236
1259 1504 1602 1629 1650
LINK_TYPE 451 575 651 1739
LNKINFO 238 242 245
LNKIOSB 973# 975
LNKSB 462# 469#
LNKSTS 242# 425# 430# 431# 434# 459# 475# 500# 501# 502# 545# 546#
547# 561 580# 588# 749# 754# 755# 758# 776# 782 784 855#
857# 858# 859# 878 954# 956 1055# 1057 1142# 1144# 1145# 1146#
1147# 1148# 1166# 1168 1173 1236# 1238# 1239# 1240# 1241# 1259# 1261
1266 1311# 1313 1504# 1510 1602# 1608# 1629# 1634# 1650# 1652# 1654#
LOCAL_NODE 219 279 1407
LSB_ABORTED 1144 1173
LSB_CCWAIT 434 502 545 561 588 758 782 859 878 1146 1239
LSB_CIWAIT 501 546 561 1147 1240 1510 1608
LSB_CLOSED 431 755 857 1145 1168 1238 1261 1266
LSB_CONNECTED 430 475 754 784 858 956 1057 1148 1241 1634 1654
LSB_REASON 1652
LSB_SERVER 500 547 1510
LUN 1559 1565
LUN$NM 147#
LUN$NS 149#
LUN_ADR 1727 1737# 1744# 1753 1754# 1759# 1760#
LUN_CNT 1728 1736# 1743# 1768#
LUN_NUMBER 321 323 324 1729 1735# 1742# 1761 1762 1763 1766# 1770# 1771
NETSB$CNT 574 654 658 1606 1631 1632 1652
NETSB$CNT1 1622 1643
NETSB$ERR 298 427 571 655 670 751 790 975 1079 1574
NETSB$ERR1 1581
NETSB$ERROR 1605
NETSB$IO_COUNT 291 975
NETSB$LINK_ID 417 469 470 471 741 847 930 1031 1134 1228
NETSTS 569# 571 574 654 655 658 670 777# 790 1070# 1079 1603#
1605#
NETWORK_INTERRUPT_ROUTINE 284# 404# 728# 834# 917# 1018# 1121# 1215#
NETWORK_LUNS 222 324# 686# 1176# 1269# 1737 1744
NETWORK_STATUS 276 277 278 348
NETWORK_STATUS_BLOCK 288 291 298 408 417 427 732 741 751 838 847 921
930 1022 1031 1125 1134 1219 1228
NEXT_LINK_ID 220 316# 446# 448#
NMU$MEMORY_GET 445
NMU$MEMORY_MANAGER 254
NMU$MEMORY_RELEASE 688 1178 1271
NMU$NETWORK_ABORT 1091#
NMU$NETWORK_ACCEPT 696#
NMU$NETWORK_CLOSE 1186#
NMU$NETWORK_INITIALIZE 257#
NMU$NETWORK_LOCAL 1388#
NMU$NETWORK_OPEN 352#
NMU$NETWORK_READ 886#
NMU$NETWORK_REJECT 790 801#
NMU$NETWORK_STATUS 1279#
NMU$NETWORK_UTILITIES 129
NMU$NETWORK_VALIDATE 1321#
NMU$NETWORK_WRITE 986#
NMU$QUEUE_EXTRACT 687 1177 1270
NMU$QUEUE_INSERT 455
NMU$QUEUE_MANAGER 253*
NMU$QUEUE_RESET 312
NMU$QUEUE_SCAN 417 741 770 847 871 930 948 1031 1049 1134 1160 1228
1253 1305 1587 1622 1643
NMU$SCHED_EVENT 450
NMU$SCHED_FLAG 1433
NMU$SCHED_MANAGER 255
NMU$SCHED_WAIT 245
NMU$_DL0_DEVICE_LUN 334
NMU$_DL1_DEVICE_LUN 335
NMU$_NETWORK_FLAG 150 277 278 1484 1485
NMU$_NETWORK_LUN 149 277 278 321 324 348 686 875 1176 1269 1484 1485
1735 1742
NMU$_NETWORK_MAX_INCOMING 1736 1742 1743 1744
NMU$_NETWORK_MAX_LUNS 222 277 321 1743
NMU$_NM_DEVICE_FLAG 148
NMU$_NM_DEVICE_LUN 147 330
NMUNET 56#
NODE_ID_LENGTH 157# 219 279
NT$ABO 1581 1640
NT$ABT 1619
NT$CON 1581 1584
NT$DSC 1619
NT$INT 1616
NUMBER_OF_ENTRIES 291# 301 304#
OPNW$ 277
OPN_DIR 277 339
OUTSB 464# 471#
PROCESS_MAILBOX_ENTRY 138 303 1461 1463*
PROCESS_WAKE 1434
PTR 1347 1349# 1351 1357 1361# 1363 1369 1373# 1375 1381
PUTB 591 592 597
Q_HEADER 221
REASON 801 1091
REC$S 962
REC_AST 917* 962
REJ$S 875
REJW$ 1485
REJ_AST 834* 875
REJ_BUF 1482 1487
REJ_DIR 1485 1590 1597
RESPONSE_CODE 353 669
RESPONSE_LEN 353 669#
RESPONSE_PTR 352 667 669
RETRY_CODE 190#
RSX$_CONB_ALLOCATION 552
RSX$_CONB_BLOCK 460
RSX$_GNDB_ALLOCATION 781 877 1484 1486 1606 1607
RSX$_GNDB_BLOCK 461 581 1483 1499 1503
SND$S 1073
SND_AST 1018* 1073
SOURCE_LINK 651 1739
SPA$S 348
SPA_AST 284* 348
STS_BLK 1279 1313#
TARGET_LINK 477 575
TEMP_LEN 586 594# 596 597 598
TEMP_PTR 399 514 516# 518 520 548# 552 584 593# 594
TEMP_PTR1 585 590# 591 592 597 598
TQ_SCAN 1495* 1587
TYPE 352 451 477
UN$ACCOUNT 227 1373
UN$PASSWORD 226 1361
UN$USER 225 1349
VAL 1752 1753# 1755
VANILLA_INTERRUPT_LINKAGE 137
VANILLA_INTERRUPT_ROUTINE 1459#
WAIT_FOR_NETWORK 238# 561 782 878 966 1077 1173 1266
WHILE_COND 238 244
$CBDSG 513* 517
$FALSE 542 792 797 882 1059 1065 1079 1087 1182 1275 1317
$NETWORK_STATUS_BLOCK 276 288 408 462 463 464 569 732 777 838 921 973
1022 1070 1125 1219 1481 1603
$RESPONSE 669
$TRUE 450 786 879 1079 1179 1272 1314