Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/mcb/nspsbi.list
There are no other files named nspsbi.list in the archive.
NSPSBI MACRO M1110 13-OCT-79 10:12
TABLE OF CONTENTS
4- 90 ADDLNK - ADD A LOGICAL LINK TABLE
5- 163 CHKULA
6- 209 CHKFLG
7- 247 GETNNO - FIND DESTINATION NODE FOR A USER CONNECT
7- 326 NDLNG - FIND THE LENGTH OF A NODE NAME
8- 358 CFRNOD - COUNT THE SPACES IN THE NODE NAME TABLE ;JS0001
9- 390 NWNOD - ADD A NODE FOR A CONNECT INITIATE ;JS0001
9- 419 ADNOD - ADD A NODE NAME TO THE DATA BASE
10- 458 LINE PARAMETER SET UP
11- 504 STLVC - COMPUTE ADDRESS OF LOGICAL LINK VECTOR
12- 530 CONSM2
14- 670 GETDBK,RLSDBK
15- 726 GETLDB - ALLOCATE A LARGE DATA BUFFER
15- 755 GTCCB - ALLOCATE A CCB
16- 784 PROCI
17- 935 SETFLG
18- 983 UCRDAT
19- 1021 GETEXB
20- 1072 VERASC
21- 1121 DISCONNECT PROCESSING SUBROUTINES
21- 1122 HNGUSR
21- 1149 DISUSR
22- 1190 DISUS0,DISUS0
23- 1268 DISUS2
23- 1303 DISUS3
24- 1319 ENTDIP
25- 1344 CLNLNK
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 3
1 .IIF DF N$$ICF, .TITLE NSPSBI
2 .IIF NDF N$$ICF, .TITLE NSPSBA
3 .IDENT /V01.10/
4
5 ;
6 ; COPYRIGHT (C) 1978 BY
7 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
8 ;
9 ;
10 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED
11 ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE
12 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER
13 ; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY
14 ; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY
15 ; TRANSFERRED.
16 ;
17 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE
18 ; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT
19 ; CORPORATION.
20 ;
21 ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS
22 ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL.
23 ;
24 ;
25 ; MODULE DESCRIPTION
26 ;
27 ; NETWORK ACP SUBROUTINES
28 ;
29 ;
30 ; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
31 ;
32 ; IDENT HISTORY:
33 ;
34 ; 1.00 10-FEB-78
35 ; VERSION 2.0 RELEASE
36 ;
37 ; MODIFICATIONS:
38 ; JS0001 12-APR-78 JOHN SAUTER
39 ; ADD A SUBROUTINE WHICH COUNTS THE AMOUNT
40 ; OF FREE SPACE IN THE NODE NAME TABLE, AND
41 ; ADD A CALL TO IT FROM GETNNO SO THAT WE CANNOT
42 ; USE UP ALL OF THE NODE NAME TABLE ISSUING
43 ; CONNECTS TO REMOTE NODES.
44 ; LW0002 3-MAY-78 LEE WEBBER
45 ; CHANGE "CHKULA" TO DETECT SEARCH FAILURE.
46 ; LW0003 19-MAY-78 LEE WEBBER
47 ; ENHANCE SYSTEM INTERFACE SUPPORT.
48 ; AP0004 25-OCT-78 ALAN D. PECKHAM
49 ; CORRECT CALL TO RETUSR IN CLNLNK.
50 ; MERGE REMXQ* CALLS TO REMSYS.
51 ; ATTEMPT TO FLUSH TRANSMIT QUEUES IN DISUS1.
52 ; AP0005 20-NOV-78 ALAN D. PECKHAM
53 ; CONDITIONALIZE JS0001 ADDITIONS
54 ; AP0006 24-JAN-79 ALAN D. PECKHAM
55 ; HANDLE SUBSTITUTIONS FOR A BLANK NODE NAME
56 ; USE $HOST IF NOT BLANK, OTHERWISE $NTNAM.
57 ; LW0007 30-APR-79 L. WEBBER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 3-1
58 ; VERIFY FOR ILT BEING FREED BY "CLNLNK" THAT 1) THE
59 ; LINK IS DISCONNECTING OR 2) THE OTHER HALF OF THE
60 ; ILT PAIR IS PRESENT
61 ; AP0008 18-MAY-79 ALAN D. PECKHAM
62 ; CONDITIONALIZE INTERCEPT CODE FOR LW0007
63 ; AND LIMIT THE CHECKING SOMEWHAT TO AVOID VALID CONDITION.
64 ; LW0009 5-JUL-79 LEE WEBBER
65 ; REMOVE CHECK "LW0007"
66 ; AP0010 28-AUG-79 ALAN D. PECKHAM
67 ; SET INPUT CONDITIONS FOR SRNOD IN ROUTINE GETNNO.
68 ;
69
70 ; EXTERNAL MACRO DEFINTIONS
71 ;
72
73 .MCALL SAVMAP,MAP,RESMAP,RECMAP
74 .MCALL SAVRG,RESRG
75 .MCALL CALLC,CALLX
76 .MCALL $QDLC,$QLLC
77 .MCALL $MVTBF,$MVFBF
78 .MCALL CCBDF$,NSPSY$
79 000000 CCBDF$ ; DEFINE THE CCB OFFSETS
80 000000 NSPSY$ ; DEFINE THE NSP SYMBOLS
81
82
83 .IF NDF N$$SYS&N$$USR
84 N$$SYS=1 ;IF NEITHER INTERFACE IS SPECIFIED
85 ;THEN DEFAULT TO SYSTEM INTERFACE
86 .ENDC
87
88 000000 .PSECT NSPSBA
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 4
ADDLNK - ADD A LOGICAL LINK TABLE
90 .SBTTL ADDLNK - ADD A LOGICAL LINK TABLE
91 ;+
92 ; **-ADDLNK-ADD A LOGICAL LINK
93 ;
94 ; THIS SUBROUTINE IS CALLED TO ADD ANOTHER LOGICAL LINK TABLE.
95 ;
96 ; INPUTS:
97 ;
98 ; NONE
99 ;
100 ; OUTPUTS:
101 ;
102 ; C-BIT CLEAR:
103 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
104 ;
105 ; C-BIT SET:
106 ; R0 IS UNDEFINED, UNABLE TO ADD ANOTHER LOGICAL LINK TABLE
107 ; R1 = ERROR CODE (ER$RES)
108 ;
109 ; REGISTERS MODIFIED:
110 ;
111 ; R1, R2
112 ;
113 ;-
114
115 000000 004567 000000G ADDLNK::JSR R5,$SAVRG ; SAVE REGISTERS
116 000004 CALL STLVC ; COMPUTE ADDRESS OF THE LOGICAL LINK DESCRIPTOR
117 000010 010305 MOV R3,R5 ; SAVE THE MAXIMUM NUMBER OF LINKS
118
119 000012 005724 10$: TST (R4)+ ; SEARCH THE ADDRESS TABLE FOR A FREE SLOT
120 000014 001403 BEQ 20$ ; IF EQ, FOUND A FREE SLOT
121 000016 SOB R5,10$ ; KEEP LOOKING
122 000022 000452 BR 40$ ; NO ROOM TO ADD ANOTHER LLT - ERROR
123
124 000024 20$: ;
125 .IF DF N$$LV2
126 MOV #L.LNG2,R1 ; SET LENGTH OF A LEVEL 2 LLT
127 .IFF
128 000024 012701 000054 MOV #L.LNG1,R1 ; SET LENGTH OF A LEVEL 1 LLT
129 .ENDC
130
131 000030 CALL $ALOCB ; ALLOCATE THE LLT FROM THE SYSTEM
132 000034 103445 BCS 40$ ; IF CS, ALLOCATION FAILURE - ERROR
133 000036 010002 MOV R0,R2 ; COPY THE LLT ADDRESS
134 000040 060102 ADD R1,R2 ; POINT TO THE END OF THE LLT
135 000042 005042 30$: CLR -(R2) ; INITIALIZE THE LLT TO ALL ZEROS
136 000044 020002 CMP R0,R2 ; DONE YET ?
137 000046 001375 BNE 30$ ; IF NE, NO - KEEP AT IT
138
139 000050 010044 MOV R0,-(R4) ; STORE THE LLT ADDRESS IN THE TABLE
140 000052 160503 SUB R5,R3 ; COMPUTE THE LOCAL LINK ADDRESS
141 000054 005203 INC R3 ; ...
142 000056 056703 000000G BIS $ENCOD,R3 ; RANDOMIZE THE HIGH BYTE OF THE LINK ADDRESS
143 000062 105267 000001G INCB $ENCOD+1 ; ...
144 000066 010360 000002 MOV R3,L.LLA(R0) ; STORE LOCAL LINK ADDRESS IN THE LLT
145 000072 005260 000014 INC L.NXN(R0) ; INITIALIZE SEGNUM=1 FOR DATA
146 000076 005260 000016 INC L.NIN(R0) ; INITIALIZE SEGNUM=1 FOR I/LS
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 4-1
ADDLNK - ADD A LOGICAL LINK TABLE
147 000102 005260 000020 INC L.RNO(R0) ; INITIALIZE NEXT NO. TO RCV.=1 FOR DATA
148 000106 005260 000022 INC L.LNO(R0) ; INITIALIZE NEXT NO. TO RCV.=1 FOR I/LS
149
150 000112 016705 000000G MOV $NSADB,R5 ; GET THE ADDRESS OF THE DATA DESCRIPTOR BLOCK
151 000116 016505 000044 MOV N$STS+2(R5),R5 ; GET THE ADDRESS OF THE STATISTICS BLOCK
152 000122 005265 000022 INC S$LNK(R5) ; COUNT ANOTHER ACTIVE LOGICAL LINK
153 000126 026565 000022 000024 CMP S$LNK(R5),S$MLK(R5) ; IS THIS A NEW HIGH WATER MARK ?
154 000134 101403 BLOS 45$ ; IF LOS, NO
155 000136 016565 000022 000024 MOV S$LNK(R5),S$MLK(R5) ; OTHERWISE SET NEW HIGH WATER MARK
156 000144 000241 45$: CLC ; MAKE SURE NO ERROR IS REPORTED
157 000146 000403 BR 50$ ;
158
159 000150 012701 000001 40$: MOV #ER$RES,R1 ; SET RESOURCE FAILURE ERROR CODE
160 000154 000261 SEC ; MARK THE ERROR
161 000156 50$: RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 5
CHKULA
163 .SBTTL CHKULA
164 ;+
165 ; **-CHKULA-FIND A LOGICAL LINK BY THE ULA
166 ;
167 ; THIS SUBROUTINE IS CALLED TO FIND A LOGICAL LINK BY USER LINK
168 ; ADDRESS. NO ERROR CHECKING IF PERFORMED AS THE LINK MUST
169 ; ALWAYS EXIST.
170 ;
171 ; INPUTS:
172 ;
173 ; R5 = ADDRESS OF A CCB WITH A VALID ULA IN 'C.NSP'
174 ;
175 ; OUTPUTS:
176 ;
177 ; R0 = ADDRESS OF THE CORRESPONDING LLT
178 ;
179 ; REGISTERS MODIFIED:
180 ;
181 ; R3, R4
182 ;
183 ;-
184 000000 .PSECT $NSACP
185
186 000000 CHKULA::CALL STLVC ; COMPUTE ADDRESS OF THE LOGICAL LINK DESCRIPTOR
187 000004 010346 MOV R3,-(SP) ; SAVE R3 ;LW0002
188 000006 012400 10$: MOV (R4)+,R0 ; GET AN LLT
189 000010 001411 BEQ 20$ ; IF EQ, NO LLT - TRY NEXT ENTRY ;LW0002
190 ;**-1
191 .IF DF N$$ICF
192
193 000012 032710 000400 BIT #LF.INT,(R0) ; INTERCEPT LINK ?
194 000016 001006 BNE 20$ ; IF NE, YES - TRY NEXT ENTRY ;LW0002
195 ;**-1
196 .ENDC
197
198 000020 026560 000004 000040 CMP C.NSP(R5),L.ULA(R0) ; IS THIS THE LINK WE WANT ?
199 000026 001002 BNE 20$ ; IF NE, NO - TRY NEXT ENTRY ;LW0002
200 000030 000241 CLC ; GOT IT.. ;LW0002
201 000032 000403 BR 100$ ; GO HOME ;LW0002
202 000034 20$: SOB R3,10$ ; TRY NEXT ENTRY IF THERE IS ONE ;LW0002
203 000040 000261 SEC ; (NOT) ;LW0002
204 000042 012603 100$: MOV (SP)+,R3 ; RECOVER R3 AND ;LW0002
205 000044 RETURN ; RETURN TO CALLER ;**-1
206
207 000160 .PSECT NSPSBA
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 6
CHKFLG
209 .SBTTL CHKFLG
210 ;+
211 ; **-CHKFLG-SET UP LOGICAL LINK TYPE AND FLOW CONTROL OPTIONS
212 ;
213 ; INPUTS:
214 ;
215 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
216 ;
217 ;
218 ; OUTPUTS:
219 ;
220 ; R3 = MESSAGE FLAGS FOR LOGICAL LINK TYPE
221 ;
222 ; REGISTERS MODIFIED:
223 ;
224 ; NONE
225 ;
226 ;-
227
228 000160 CHKFLG:: ;LW0003
229 000160 012703 000001 MOV #CL$TYP,R3 ; ASSUME NO FLOW CONTROL. ;LW0003
230 .IF DF N$$SYS&N$$USR ;LW0003
231 000164 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE? ;LW0003
232 000170 001416 BEQ 20$ ; USER (ALWAYS MSG FLOW) ;LW0003
233 .ENDC ;LW0003
234 .IF DF N$$SYS ;LW0003
235 000172 032762 000001 000012 BIT #NT.SFL,C.STS(R2) ; IF SEGMENT FLOW CONTROL REQUESTED, ;LW0003
236 000200 001406 BEQ 10$ ; (AND NOT OTHERWISE) ;LW0003
237 000202 052760 040000 000012 BIS #LF.MSF,L.FLG(R0) ; SAY SO IN THE LLT ;LW0003
238 000210 052703 000004 BIS #CL$SFL,R3 ; AND THE MESSAGE FLAGS ;LW0003
239 000214 000411 BR 30$ ;LW0003
240 000216 032762 000002 000012 10$: BIT #NT.MFL,C.STS(R2) ; IF, ON THE OTHER HAND, ;LW0003
241 000224 001405 BEQ 30$ ; MESSAGE FLOW CONTROL IS REQUESTED, ;LW0003
242 .ENDC ;LW0003
243 000226 052760 100000 000012 20$: BIS #LF.MMF,L.FLG(R0) ; SAY THAT IN THE LLT ;LW0003
244 000234 052703 000010 BIS #CL$MFL,R3 ; AND THE MESSAGE FLAGS ;LW0003
245 000240 30$: RETURN ;LW0003
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 7
GETNNO - FIND DESTINATION NODE FOR A USER CONNECT
247 .SBTTL GETNNO - FIND DESTINATION NODE FOR A USER CONNECT
248 ;+
249 ; **-GETNNO-FIND DESTINATION NODE FOR A USER REQUEST
250 ;
251 ; THIS SUBROUTINE IS CALLED TO RESOLVE A NODE NAME FOR A USER CONNECT
252 ; REQUEST. THE DESTINATION NODE MUST EITHER EXIST AS AN ADJACENT NODE
253 ; OR THIS NODE MUST BE INTERCEPTED AND SUFFICIENT SPACE AVAILABLE TO
254 ; ADD THE NODE NAME TO THE DATA BASE.
255 ;
256 ; INPUTS:
257 ;
258 ; R5 = ADDRESS OF USER CONNECT CCB
259 ; THE USER CONNECT BLOCK IS ASSUMED TO BE MAPPED
260 ;
261 ; OUTPUTS:
262 ;
263 ; C-BIT CLEAR:
264 ; R3 = POINTER TO DESTINATION NODE IN NODE DATA BASE
265 ; R4 = LOGICAL LINK TYPE FLAGS
266 ;
267 ; C-BIT SET:
268 ; R1 = NSP ERROR CODE (ER$NOD)
269 ; R3 = UNDEFINED
270 ;
271 ; REGISTERS MODIFIED:
272 ;
273 ; R0, R1, AND R2
274 ;
275 ;-
276
277 000242 GETNNO::SAVRG <R5> ; SAVE CCB ADDRESS
278 000244 016500 000016 MOV C.BUF+2(R5),R0 ; GET ADDRESS OF USER CONNECT BLOCK
279 000250 005004 CLR R4 ; INITIALIZE LINK TYPE FLAGS WORD
280 000252 016705 000000G MOV $NSADB,R5 ; GET THE ADDRESS OF THE DATA DESCRIPTOR BLOCK
281 000256 CALL NDLNG ; GET THE LENGTH OF THE NODE NAME STRING
282 000262 001011 BNE 10$ ; IF NULL, ;AP0006
283 000264 012700 000000G MOV #$HOST,R0 ; THEN TRY DEFAULT HOST. ;AP0006
284 000270 CALL NDLNG ; CHECK ITS LENGTH ;AP0006
285 000274 001004 BNE 10$ ; AND IF THAT IS NULL ;AP0006
286 000276 012700 000000G MOV #$NTNAM,R0 ; THEN USE LOCAL NODE NAME. ;AP0006
287 000302 CALL NDLNG ; GET ITS LENGTH. ;AP0006
288 000306 005003 10$: CLR R3 ; LET SRNOD KNOW NOT TO RESERVE NODE ENTRY ;AP0010
289 000310 CALLC SRNOD ; SEARCH FOR THE NODE NAME IN THE DATA BASE
290 000320 103022 BCC 30$ ; IF CC, FOUND IT - EXIT
291 000322 005713 TST (R3) ; IS THE FREE ENTRY THE SCRATCH ENTRY ?
292 000324 100444 BMI 60$ ; IF MI, YES - CANNOT REACH DESTINATION
293 .IF DF N$$ICF ;AP0005
294 000326 CALL CFRNOD ; COUNT THE FREE SPACES IN THE NODE NAME TABLE ;JS0001
295 000332 020227 000003 CMP R2,#3 ; IS THERE PLENTY OF SPACE? ;JS0001
296 000336 003437 BLE 60$ ; IF LE, NO: DONT PERMIT THIS CONNECT ;JS0001
297 .ENDC ;AP0005
298 000340 016505 000006 MOV N$ICF(R5),R5 ; DOES ANY PHYSICAL LINK INTERCEPT FOR THIS NODE ?
299 000344 001434 BEQ 60$ ; IF EQ, NO - CANNOT REACH DESTINATION
300 000346 122715 000005 CMPB #PS$UP,(R5) ; LINK TO INTERCEPT AVAILABLE ?
301 000352 001031 BNE 60$ ; IF NE, NO - CANNOT REACH DESTINATION
302 000354 012702 010000 MOV #DF$REM,R2 ; SET FLAGS TO ADD A NEW NODE NAME
303 000360 CALL ADNOD ; ADD A NEW NODE TO THE DATA BASE
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 7-1
GETNNO - FIND DESTINATION NODE FOR A USER CONNECT
304 000364 000416 BR 45$ ; EXIT
305
306 000366 032713 040000 30$: BIT #DF$LCL,(R3) ; IS THE TARGET NODE THE LOCAL NODE ?
307 000372 001415 BEQ 50$ ; IF EQ, NO - CHECK IF PHYSICAL LINK IS AVAILABLE
308 000374 005765 000010 TST N$LNI(R5) ; IS LOOPBACK ENABLED FOR ANY PHYSICAL LINK ?
309 000400 001406 BEQ 40$ ; IF EQ, NO - DON'T BOTHER TO CHECK IF LINK IS UP
310 000402 016305 000002 MOV D$CHN(R3),R5 ; IS THERE ANY PHYSICAL LINK ?
311 000406 001403 BEQ 40$ ; IF EQ, NO - CHECK IF THIS IS THE LOCAL NODE
312 000410 122715 000005 CMPB #PS$UP,(R5) ; IS THE PHYSICAL LINK AVAILABLE ?
313 000414 001413 BEQ 70$ ; IF EQ, YES - USE IT (C-BIT CLEAR)
314 000416 052704 040000 40$: BIS #LF.LCL,R4 ; BUILD THE LINK INTERNALLY
315 000422 000241 45$: CLC ; INDICATE SUCCESS
316 000424 000407 BR 70$ ;
317
318 000426 122773 000005 000002 50$: CMPB #PS$UP,@D$CHN(R3) ; IS THE DESTINATION NODE REACHABLE ?
319 000434 001403 BEQ 70$ ; IF EQ, YES - USE THE PHYSICAL LINK
320 000436 000261 60$: SEC ; SET DESTINATION NODE CANNOT BE REACHED
321 000440 012701 000002 MOV #ER$NOD,R1 ; ...ERROR CODE
322 000444 70$: RESRG <R5> ; RESTORE R5
323 000446 RETURN ; RETURN TO CALLER
324
325
326 .SBTTL NDLNG - FIND THE LENGTH OF A NODE NAME
327 ;+
328 ; **-NDLNG-FIND THE LENGTH OF A NODE NAME
329 ;
330 ; THIS SUBROUTINE IS CALLED TO COMPUTE THE LENGTH OF A NODE NAME STRING
331 ; PROVIDED BY A USER. THE MAXIMUM LENGTH OF THE STRING IS SIX CHARACTERS,
332 ; BUT A SPACE CODE MAY SHORT TERMINATE THE STRING.
333 ;
334 ; INPUTS:
335 ;
336 ; R0 = ADDDRESS OF THE NODE NAME STRING
337 ;
338 ; OUTPUTS:
339 ;
340 ; R1 = LENGTH OF THE STRING
341 ;
342 ; REGISTERS MODIFIED:
343 ;
344 ; R3
345 ;
346 ;-
347
348 000450 012703 000006 NDLNG:: MOV #6,R3 ; SET MAXIMUM LENGTH OF NODE NAME
349 000454 010001 MOV R0,R1 ; COPY THE POINTER TO THE NODE NAME
350 000456 122721 000040 10$: CMPB #' ,(R1)+ ; SCAN THE STRING FOR A SPACE CODE
351 000462 001403 BEQ 20$ ; IF EQ, FOUND THE END OF THE STRING
352 000464 SOB R3,10$ ; LOOP UNTIL DONE
353 000470 005201 INC R1 ; NEED AN EXTRA IF STRING IS SIX CHARACTERS
354 000472 160001 20$: SUB R0,R1 ; COMPUTE THE LENGTH OF THE NODE NAME
355 000474 005301 DEC R1 ; ...
356 000476 RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 8
CFRNOD - COUNT THE SPACES IN THE NODE NAME TABLE
358 .SBTTL CFRNOD - COUNT THE SPACES IN THE NODE NAME TABLE ;JS0001
359 ;+ ;JS0001
360 ; **-CFRNOD-COUNT THE EMPTY SPACES IN THE NODE NAME TABLE ;JS0001
361 ; ;JS0001
362 ; INPUTS: ;JS0001
363 ; ;JS0001
364 ; NONE ;JS0001
365 ; ;JS0001
366 ; OUTPUTS: ;JS0001
367 ; ;JS0001
368 ; R2 CONTAINS THE NUMBER OF FREE SPACES IN THE NODE NAME TBALE ;JS0001
369 ; ;JS0001
370 ;- ;JS0001
371 ; ;JS0001
372 .IF DF N$$ICF ;AP0005
373 ;JS0001
374 000500 CFRNOD::SAVRG <R3,R4> ;JS0001
375 000504 005002 CLR R2 ;INITIALIZE COUNT CELL ;JS0001
376 000506 016703 000000G MOV $NSADB,R3 ;POINT TO NSP DATA BASE ;JS0001
377 000512 062703 000032 ADD #N$NOD,R3 ;POINT TO NODE NAME TABLE DESCRIPTOR ;JS0001
378 000516 012304 MOV (R3)+,R4 ;NUMBER OF NODE NAME ENTRIES IN THE TABLE ;JS0001
379 000520 011303 MOV (R3),R3 ;ADDRESS OF TABLE ;JS0001
380 000522 032713 070000 10$: BIT #DF$FRE,(R3) ;IS THIS ENTRY FREE? ;JS0001
381 000526 001001 BNE 20$ ;IF NE, NO. ;JS0001
382 000530 005202 INC R2 ;YES, COUNT ANOTHER FREE ENTRY ;JS0001
383 000532 062703 000014 20$: ADD #D$LEN,R3 ;ADVANCE TO NEXT TABLE ENTRY ;JS0001
384 000536 SOB R4,10$ ;CHECK EACH ENTRY ;JS0001
385 000542 RESRG <R4,R3> ;JS0001
386 000546 RETURN ;JS0001
387 .ENDC ;AP0005
388 ; ;JS0001
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 9
NWNOD - ADD A NODE FOR A CONNECT INITIATE
390 .SBTTL NWNOD - ADD A NODE FOR A CONNECT INITIATE ;JS0001
391 ;+ ;**-1
392 ; **-NWNOD-ADD A NEW NODE FOR A CONNECT INITIATE
393 ;
394 ; INPUTS:
395 ;
396 ; R4 = POINTER TO AN IMAGE FIELD NODE NAME
397 ; R5 = ADDRESS OF MESSAGE CCB WHICH CONTAINS A VALID 'C.LIN'
398 ;
399 ; OUTPUTS:
400 ;
401 ; THE NODE NAME RECEIVED IN THE MESSAGE IS ADDED TO THE NODE DATA
402 ; BASE
403 ;
404 ; REGISTERS MODIFIED:
405 ;
406 ; NONE
407 ;
408 ;-
409 .ENABL LSB
410
411 000550 004567 000000G NWNOD:: JSR R5,$SAVRG ; SAVE R5, R4, AND R3
412 000554 CALL STPLD ; COMPUTE PHYSICAL LINK DATA BASE ADDRESS
413 000560 112401 MOVB (R4)+,R1 ; GET THE LENGTH OF THE SOURCE NODE NAME
414 000562 010400 MOV R4,R0 ; SET THE POINTER TO THE NAME
415 000564 012702 010000 MOV #DF$REM,R2 ; SET THE FLAGS FOR A REMOTE NODE
416 000570 000402 BR 10$ ; CONTINUE
417
418
419 .SBTTL ADNOD - ADD A NODE NAME TO THE DATA BASE
420 ;+
421 ; **-ADNOD-ADD A NODE NAME TO THE DATA BASE
422 ;
423 ; INPUTS:
424 ;
425 ; R0 = ADDRESS OF THE NEW NODE NAME STRING
426 ; R1 = LENGTH OF THE NODE NAME STRING
427 ; R2 = NODE NAME ENTRY FLAGS
428 ; R3 = POINTER TO A FREE ENTRY IN THE NODE DATA BASE
429 ; R5 = ADDRESS OF THE PHYSICAL LINK BLOCK TO USE
430 ;
431 ; OUTPUTS:
432 ;
433 ; C-BIT CLEAR:
434 ; THE NODE NAME IS ADDED TO THE DATA BASE
435 ;
436 ; REGISTERS MODIFIED:
437 ;
438 ; R0, R1, AND R2
439 ;
440 ;-
441
442 000572 004567 000000G ADNOD:: JSR R5,$SAVRG ; SAVE R5, R4, AND R3
443 000576 050223 10$: BIS R2,(R3)+ ; STORE THE NODE ENTRY FLAGS
444 000600 010523 MOV R5,(R3)+ ; STORE THE LINK BLOCK ADDRESS
445 000602 105723 TSTB (R3)+ ; SKIP OVER THE USE COUNT (CLEAR C-BIT)
446 000604 110123 MOVB R1,(R3)+ ; STORE THE NODE NAME LENGTH
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 9-1
ADNOD - ADD A NODE NAME TO THE DATA BASE
447 000606 010304 MOV R3,R4 ; COPY THE ADDRESS
448 000610 012724 020040 MOV #" ,(R4)+ ; INITIALIZE THE NODE NAME TO SPACES
449 000614 012724 020040 MOV #" ,(R4)+ ; ...
450 000620 012724 020040 MOV #" ,(R4)+ ; ...
451 000624 112023 20$: MOVB (R0)+,(R3)+ ; NOW MOVE IN THE NODE NAME
452 000626 SOB R1,20$ ; ...
453 000632 RETURN ; RETURN TO CALLER
454
455 .DSABL LSB
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 10
ADNOD - ADD A NODE NAME TO THE DATA BASE
457
458 .SBTTL LINE PARAMETER SET UP
459 ;+
460 ; **-STLN0-SETUP PHYSICAL LINK PARAMETERS FROM A CCB
461 ; **-STPLD-ALTERNATE ENTRY
462 ;
463 ; INPUTS:
464 ;
465 ; R4 = ADDRESS OF CCB (ENTRY AT STLN0 ONLY)
466 ; R5 = ADDRESS OF CCB (ENTRY AT STPLD ONLY)
467 ;
468 ; OUTPUTS:
469 ;
470 ; R2 = ADDRESS OF LINE CLEAN UP WORD
471 ; R4 = UNMODIFIED
472 ; R5 = ADDRESS OF LINE FLAGS & STATE WORD
473 ;
474 ; REGISTERS MODIFIED:
475 ;
476 ; R0 AND R1
477 ;
478 ;-
479 .ENABL LSB
480
481 000634 005000 STPLD:: CLR R0 ; EXTRACT CHANNEL NUMBER FOR THE CCB
482 000636 156500 000006 BISB C.LIN(R5),R0 ; ...
483 000642 000403 BR 10$ ;
484
485 000644 005000 STLN0:: CLR R0 ; EXTRACT CHANNEL NUMBER FROM THE CCB
486 000646 156400 000006 BISB C.LIN(R4),R0 ; ...
487 000652 012701 000014 10$: MOV #P$LEN,R1 ; SET LENGTH OF THE LINK BLOCK
488
489 .IF DF R$$EIS
490 MUL R0,R1 ; COMPUTE OFFSET INTO DATA BASE
491 .IFF
492 000656 CALL $MUL ; COMPUTE THE OFFSET INTO THE DATA BASE
493 .ENDC
494
495 000662 016705 000000G MOV $NSADB,R5 ; GET THE ADDRESS OF THE PHYSICAL LINK
496 000666 016505 000030 MOV N$PLD+2(R5),R5 ; ...DESCRIPTOR
497 000672 060105 ADD R1,R5 ; COMPUTE THE ADDRESS OF THE PHYSICAL LINK BLOCK
498 000674 010502 MOV R5,R2 ; COMPUTE THE ADDRESS OF THE RECOVERY CELL
499 000676 005722 TST (R2)+ ; ...
500 000700 RETURN ; RETURN TO CALLER
501
502 .DSABL LSB
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 11
STLVC - COMPUTE ADDRESS OF LOGICAL LINK VECTOR
504 .SBTTL STLVC - COMPUTE ADDRESS OF LOGICAL LINK VECTOR
505 ;+
506 ; **-STLVC-COMPUTE ADDRESS OF LOGICAL LINK VECTOR
507 ;
508 ; INPUTS:
509 ;
510 ; NONE
511 ;
512 ; OUTPUTS:
513 ;
514 ; R3 = MAXIMUM NUMBER OF LOGICAL LINKS
515 ; R4 = ADDRESS OF FIRST ENTRY OF THE LOGICAL LINK VECTOR
516 ;
517 ; REGISTERS MODIFIED:
518 ;
519 ; NONE
520 ;
521 ;-
522
523 000702 016704 000000G STLVC:: MOV $NSADB,R4 ; COMPUTE ADDRESS OF THE LOGICAL LINK DESCRIPTOR
524 000706 062704 000022 ADD #N$LVC,R4 ; ...
525 000712 012403 MOV (R4)+,R3 ; GET THE MAXIMUM NUMBER OF LINKS
526 000714 011404 MOV (R4),R4 ; GET THE ADDRESS OF THE LLT ADDRESS TABLE
527 000716 005724 TST (R4)+ ; SKIP OVER THE (UNUSED) FIRST ENTRY
528 000720 RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 12
CONSM2
530 .SBTTL CONSM2
531 ;+
532 ; **-CONSM2-BUILD PROCESS NAMES, ACCESS CONTROL AND USER DATA FIELDS
533 ;
534 ; THIS ROUTINE IS CALLED TO BUILD THE DESTINATION DESCRIPTOR NAME,
535 ; THE SOURCE DESCRIPTOR NAME, THE ACCESS CONTROL AND USER DATA FIELDS
536 ; OF THE CONNECT MESSAGE.
537 ;
538 ; INPUTS:
539 ;
540 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
541 ; R4 = MESSAGE POINTER (MUST ALSO BE MAPPED TO THE MESSAGE BUFFER)
542 ; R5 = CCB ADDRESS FROM USERS CONNECT REQUEST
543 ;
544 ; OUTPUTS:
545 ;
546 ; C-BIT CLEAR:
547 ; CONNECT BLOCK FORMATTED AND BUILT SUCCESSFULLY
548 ;
549 ; C-BIT SET:
550 ; ERROR IN FORMATTING THE CONNECT BLOCK
551 ; R1 = NSP ERROR CODE (ER$FMT)
552 ;
553 ;-
554
555 000722 CONSM2::SAVRG <R0,R5> ; SAVE REGISTERS REQUIRED
556 000726 016500 000016 MOV C.BUF+2(R5),R0 ; GET THE ADDRESS OF THE DESCRIPTOR BLOCK
557
558 ; BUILD THE CORRECT SEGMENT SIZE
559 000732 016703 000000G MOV $RDBSZ,R3 ; COMPUTE OUR MAXIMUM SEGMENT SIZE
560 000736 162703 000042 SUB #N$$OVR,R3 ; ...
561 000742 016001 000006 MOV N.SEG(R0),R1 ; GET USER REQUESTED SIZE
562 000746 001402 BEQ 10$ ; IF EQ, USE OUR SEGMENT SISE
563 000750 020103 CMP R1,R3 ; DOES THE USER WANT LESS THAN THE MAXIMUM ?
564 000752 103401 BLO 20$ ; IF LO, YES - LET HIM HAVE IT
565 000754 010301 10$: MOV R3,R1 ; OTHERWISE USER OUR MAXIMUM SIZE
566 000756 20$: CALLC PUTBIN ; PUT SEGMENT SIZE IN THE MESSAGE
567
568 ; BUILD THE DESTINATION AND SOURCE DESRCIPTOR NAMES
569 000766 012705 010010 MOV #16.*400!N.DFMT,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
570 000772 CALL CONSM3 ; BUILD THE DESTINATION DESCIPTOR NAME
571 000776 103432 BCS 30$ ; IF CS, FIELD FORMAT ERROR
572 001000 012705 010034 MOV #16.*400!N.SFMT,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
573 001004 CALL CONSM3 ; BUILD THE SOURCE DESCRIPTOR NAME
574 001010 103425 BCS 30$ ; IF CS, FIELD FORMAT ERROR
575
576 ; BUILD THE ACCESS CONTROL FIELDS
577 001012 112724 000003 MOVB #CL.MU1!CL.MU2,(R4)+ ; SET ACCESS CONTROL AND USER DATA FIELDS
578 ; ARE PRESENT IN THE MESSAGE
579 001016 012705 010060 MOV #16.*400!N.RQDL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
580 001022 CALL BLDIMG ; BUILD THE REQUESTOR ID FIELD
581 001026 103416 BCS 30$ ; IF CS, FIELD FORMAT ERROR
582 001030 012705 004102 MOV #8.*400!N.PASL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
583 001034 CALL BLDIMG ; BUILD THE PASSWORD FIELD
584 001040 103411 BCS 30$ ; IF CS, FIELD FORMAT ERROR
585 001042 012705 010114 MOV #16.*400!N.ACTL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
586 001046 CALL BLDIMG ; BUILD THE ACCOUNT DATA FIELD
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 12-1
CONSM2
587 001052 103404 BCS 30$ ; IF CS, FIELD FORMAT ERROR
588 001054 012705 010136 MOV #16.*400!N.OPDL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
589 001060 CALL BLDIMG ; BUILD THE USER DATA FIELD
590 001064 012701 000005 30$: MOV #ER$FMT,R1 ; ASSUME A FIELD FORMAT ERROR
591 001070 RESRG <R5,R0> ; RESTORE THE REGISTERS
592 001074 RETURN ; RETURN TO CALLER
593
594 ;+
595 ; **-CONSM3-BUILD A DESCRIPTOR NAME INTO THE MESSAGE
596 ;
597 ; INPUTS:
598 ;
599 ; R0 = ADDRESS OF THE DESCRIPTOR BLOCK
600 ; R4 = MESSAGE POINTER TO NEXT FIELD
601 ; R5 = MAXIMUM FIELD LENGTH (HIGH BYTE)
602 ; OFFSET IN THE BLOCK (LOW BYTE)
603 ;
604 ; OUTPUTS:
605 ;
606 ; C-BIT CLEAR:
607 ; DESCRIPTOR FORMATTED CORRECTLY
608 ;
609 ; C-BIT SET:
610 ; INVALID DESCRIPTOR FORMAT
611 ;-
612
613 001076 110502 CONSM3: MOVB R5,R2 ; COMPUTE THE ADDERSS IN DESCRIPTOR BLOCK
614 001100 060002 ADD R0,R2 ; ...
615 001102 112201 MOVB (R2)+,R1 ; GET THE FORMAT TYPE CODE
616 001104 110124 MOVB R1,(R4)+ ; STORE IN THE MESSAGE
617 001106 112224 MOVB (R2)+,(R4)+ ; STORE THE OBJECT TYPE CODE
618 001110 022701 000002 CMP #NC.FM2,R1 ; IS THE FORMAT TYPE WITHIN RANGE ?
619 001114 103421 BLO 20$ ; IF LO, NO - ERROR (C-BIT SET)
620 001116 005301 DEC R1 ; WHICH FORMAT IS IT ?
621 001120 100417 BMI 20$ ; IF MI, FORMAT TYPE 0 - ALL DONE
622 001122 001414 BEQ 10$ ; IF EQ, FORMAT TYPE 1 - JUST MOVE THE DATA
623 001124 012201 MOV (R2)+,R1 ; OTHERWISE, FORMAT TYPE 2 - GET GROUP CODE
624 001126 CALLC PUTBIN ; STORE IN THE MESSAGE
625 001136 012201 MOV (R2)+,R1 ; GET THE USER CODE
626 001140 CALLC PUTBIN ; STORE IN THE MESSAGE
627 001150 162705 002000 SUB #4*400,R5 ; REDUCE THE FIELD SIZE APPROPRIATELY
628 001154 10$: CALL BLDIMA ; BUILD THE REST OF THE DESCRIPTOR NAME FIELD
629 001160 20$: RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 13
CONSM2
631 ;+
632 ; **-BLDIMG-BUILD AN IMMAGE FIELD FROM THE USER DESCRIPTOR BLOCK
633 ; **-BLDIMA-ALTERNATE ENTRY
634 ;
635 ; INPUTS:
636 ;
637 ; R0 = ADDRESS OF THE DESCRIPTOR BLOCK
638 ; R4 = MESSAGE POINTER TO NEXT FIELD
639 ; R5 = MAXIMUM FIELD LENGTH (HIGH BYTE)
640 ; OFFSET IN THE BLOCK (LOW BYTE)
641 ;
642 ; OUTPUTS:
643 ;
644 ; THE FIELD IS BUILT IN THE MESASGE ACCORDING TO THE PARAMETERS
645 ; IN THE DESCRIPTOR BLOCK.
646 ;
647 ; NOTE: THIS ROUTINE EXPECTS THAT THE LENGTH OF THE FIELD IN THE
648 ; DESCRIPTOR BLOCK IS WORD ALIGNED AND TWO BYTES IN LENGTH. THIS
649 ; ROUTINE ALSO EXPECTS THAT ONLY THE LOW BYTE OF THE FIELD LENGTH
650 ; IS SIGNIFICANT.
651 ;
652 ; REGISTERS MODIFIED:
653 ;
654 ; R1, R2, R3, AND R5
655 ;-
656
657 001162 110502 BLDIMG: MOVB R5,R2 ; COMPUTE THE ADDRESS IN THE DESCRIPTOR BLOCK
658 001164 060002 ADD R0,R2 ; ...
659
660 001166 000305 BLDIMA: SWAB R5 ; GET MAXIMUM FIELD LENGTH IN THE LOW BYTE
661 001170 120512 CMPB R5,(R2) ; IS THE LENGTH WITHIN RANGE ?
662 001172 103406 BLO 20$ ; IF LO, NO - ERROR (C-BIT SET)
663 001174 111224 MOVB (R2),(R4)+ ; STORE THE IMAGE FIELD LENGTH IN THE MESSAGE
664 001176 012203 MOV (R2)+,R3 ; GET THE FIELD LENGTH
665 001200 001403 BEQ 20$ ; IF EQ, ALL DONE WITH THIS FIELD
666 001202 112224 10$: MOVB (R2)+,(R4)+ ; MOVE THE DATA
667 001204 SOB R3,10$ ; LOOP UNTIL DONE
668 001210 20$: RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 14
GETDBK,RLSDBK
670 .SBTTL GETDBK,RLSDBK
671 ;+
672 ; **-GETDBK-GET A DESRCIPTOR BLOCK FOR AN INCOMING CONNECT
673 ;
674 ; INPUTS:
675 ;
676 ; NONE
677 ;
678 ; OUTPUTS:
679 ;
680 ; C-BIT CLEAR:
681 ; R5 = ADDRESS OF A CCB WHICH HAS THE FIRST BUFFER DESCRIPTOR
682 ; POINTING TO THE DESCRIPTOR BLOCK
683 ;
684 ; C-BIT SET:
685 ; CCB OR POOL ALLOCATION FAILURE
686 ; R1 = ERROR CODE (ER$RES)
687 ;
688 ;-
689 .ENABL LSB
690
691 001212 GETDBK::SAVRG <R0,#ER$RES,R4> ; SAVE REGISTERS AND ASSUME A RESOURCE ERROR
692 001222 CALL CCBGT ; ALLOCATE A CCB
693 001226 103433 BCS 30$ ; IF CS, ALLOCATION FAILURE
694 001230 010405 MOV R4,R5 ; COPY CCB ADDRESS
695 001232 012701 000160 MOV #N.LGTH,R1 ; SET LENGTH OF DESRCIPTOR BLOCK TO ALLOCATE
696 001236 CALL $ALOCB ; ALLOCATE THE BLOCK
697 001242 103423 BCS 20$ ; IF CS, ALLOCATION ERROR
698 001244 005065 000014 CLR C.BUF(R5) ; ZERO RELOCATION BIAS
699 001250 010065 000016 MOV R0,C.BUF+2(R5) ; STORE DESCRIPTOR BLOCK ADDRESS
700 001254 060001 ADD R0,R1 ; POINT TO ADDRESS BEYOND LAST CELL
701 001256 005041 10$: CLR -(R1) ; CLEAR ALL CELLS
702 001260 020001 CMP R0,R1 ; BACK TO THE BEGINNING YET ?
703 001262 001375 BNE 10$ ; IF NE, NO - KEEP GOING
704 001264 000414 BR 30$ ; RETURN
705
706 ;+
707 ; **-RLSDBK-RELEASE A DESCRIPTOR BLOCK
708 ;
709 ; INPUTS:
710 ;
711 ; R5 = ADDRESS OF THE CCB AND BUFFER PAIR
712 ;
713 ;-
714
715 001266 RLSDBK::SAVRG <R0,R1,R4> ; SAVE THE REGISTERS
716 001274 010504 MOV R5,R4 ; SWAP REGISTERS
717 001276 016500 000016 MOV C.BUF+2(R5),R0 ; GET ADDRESS OF DESCRIPTOR BLOCK
718 001302 012701 000160 MOV #N.LGTH,R1 ; SET LENGTH OF THE DESCRIPTOR BLOCK
719 001306 CALL $DEACB ; DEALLOCATE THE BLOCK
720 001312 20$: CALL $CCBRT ; DEALLOCATE THE CCB
721 001316 30$: RESRG <R4,R1,R0> ; RESTORE REGISTERS
722 001324 RETURN ; RETURN TO CALLER
723
724 .DSABL LSB
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 15
GETLDB - ALLOCATE A LARGE DATA BUFFER
726 .SBTTL GETLDB - ALLOCATE A LARGE DATA BUFFER
727 ;+
728 ; **-GETLDB-ALLOCATE A LARGE DATA BUFFER
729 ;
730 ; INPUTS:
731 ;
732 ; NONE
733 ;
734 ; OUTPUTS:
735 ;
736 ; C-BIT CLEAR:
737 ; R5 = ADDRESS OF CCB WITH LARGE DATA BUFFER
738 ; THE USER IS MAPPED TO THE DATA BUFFER
739 ;
740 ; C-BIT SET:
741 ; NO CCB ALLOCATED, RESOURCE ERROR COUNT IS INCREMENTED
742 ; R5 IS UNDEFINED
743 ;-
744 .ENABL LSB
745
746 001326 GETLDB::CALL $LDBGT ; ALLOCATE A LARGE DATA BUFFER
747 001332 103415 BCS 10$ ; IF CS, ALLOCATION ERROR
748 001334 010405 MOV R4,R5 ; COPY ADDRESS OF CCB
749 001336 MAP C.BUF(R5) ; MAP TO THE DATA AREA
750 001344 062765 000020 000016 ADD #16.,C.BUF+2(R5) ; LEAVE ENOUGH ROOM FOR A ROUTE HEADER
751 001352 016504 000016 MOV C.BUF+2(R5),R4 ; GET THE VIRTUAL ADDRESS OF THE DATA AREA
752 001356 RETURN ; RETURN TO CALLER
753
754
755 .SBTTL GTCCB - ALLOCATE A CCB
756 ;+
757 ; **-GTCCB - ALLCATE A CCB
758 ;
759 ; INPUTS:
760 ;
761 ; NONE
762 ;
763 ; OUTPUTS:
764 ;
765 ; C-BIT CLEAR:
766 ; R4 = ADDRESS OF THE CCB
767 ;
768 ; C-BIT SET:
769 ; NO CCB ALLOCATED, RESOURCE ERROR COUNT IS INCREMENTED
770 ; R4 IS UNDEFINED
771 ;
772 ; REGISTERS MODIFIED:
773 ;
774 ; R1
775 ;-
776
777 001360 CCBGT:: CALL $CCBGT ; ALLOCATE A CCB FROM THE COMM EXEC
778 001364 103004 BCC 20$ ; IF CC, NO ERROR - JUST RETURN
779 001366 10$: CALLC CTRES ; COUNT THE RESOURCE ERROR (SETS C-BIT)
780 001376 20$: RETURN ; RETURN TO CALLER
781
782 .DSABL LSB
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 16
PROCI
784 .SBTTL PROCI
785 ;+
786 ; **-PROCI-PROCESS DESCRIPTOR NAME AND ACCESS CONTROL FIELDS
787 ;
788 ; THIS ROUTINE PROCESSES THE DESTINATION DESCRIPTOR NAME, SOURCE
789 ; DESCRIPTOR NAME, ACCESS CONTROL AND USER DATA FIELDS OF A RECEIVED
790 ; CONNECT INITIATE MESSAGE.
791 ;
792 ; INPUTS:
793 ;
794 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
795 ; R3 = REMOTE NODE INDEX
796 ; R4 = MESSAGE POINTER (SEGMENT SIZE)
797 ; R5 = ADDRESS OF A CCB WITH A DESCRIPTOR BLOCK
798 ;
799 ; OUTPUTS:
800 ;
801 ; C-BIT CLEAR:
802 ; R1 = PDV INDEX OF DESTINATION PROCESS
803 ;
804 ; C-BIT SET:
805 ; R1 CONTAINS ERROR CODE (ER$FMT, ER$UOB)
806 ;
807 ; REGISTERS MODIFIED:
808 ;
809 ; R2, R3
810 ;-
811
812 001400 PROCI:: SAVRG <R0,R5> ; SAVE R0 AND R5
813 001404 016500 000016 MOV C.BUF+2(R5),R0 ; GET ADDRESS OF DESCRIPTOR BLOCK
814
815 ; SET UP SOURCE NODE NAME
816 001410 010002 MOV R0,R2 ; SET OUTPUT ADDRESS
817 001412 062703 000006 ADD #D$NAM,R3 ; POINT TO THE NODE NAME
818 001416 012322 MOV (R3)+,(R2)+ ; THE NODE NAME IS STORED PADDED WITH
819 001420 012322 MOV (R3)+,(R2)+ ; ...SPACES, AND IS WORD ALIGNED
820 001422 012322 MOV (R3)+,(R2)+ ; ...
821
822 ; SET UP CORRECT SEGMENT SIZE
823 001424 CALLC GETBIN ; GET THE SEGMENT SIZE
824 001434 016746 000000G MOV $RDBSZ,-(SP) ; COMPUTE OUR MAXIMUM SEGMENT SIZE
825 001440 162716 000042 SUB #N$$OVR,(SP) ; ...
826 001444 020116 CMP R1,(SP) ; SELECT THE SMALLER OF THE TWO VALUES
827 001446 101001 BHI 20$ ; IF HI, USE OUR SEGMENT SIZE
828 001450 010116 MOV R1,(SP) ; OTHERWISE USE THE ONE RECEIVED
829 001452 012660 000006 20$: MOV (SP)+,N.SEG(R0) ; STORE RESULTS IN THE DESCRIPTOR BLOCK
830
831 ; SET UP DESTINATION AND SOURCE PROCESS NAMES
832 001456 012705 010010 MOV #16.*400!N.DFMT,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
833 001462 CALL PRONAM ; CONVERT AND STORE THE DESTINATION PROCESS NAME
834 001466 103457 BCS 50$ ; IF CS, FIELD FORMAT ERROR
835 001470 012705 010034 MOV #16.*400!N.SFMT,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
836 001474 CALL PRONAM ; CONVERT AND STORE TO SOURCE PROCESS NAME
837 001500 103452 BCS 50$ ; IF CS, FIELD FORMAT ERROR
838
839 ; PROCESS ACCESS CONTROL AND USER DATA FIELDS
840 001502 CALLC GETEX1 ; GET THE MENU FIELD FLAGS
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 16-1
PROCI
841 001512 103445 BCS 50$ ; IF CS, FIELD FORMAT ERROR
842 001514 032701 177774 BIT #CL.RES,R1 ; ARE ANY OF THE RESERVED BITS SET ?
843 001520 001042 BNE 50$ ; IF NE, YES - FIELD FORMAT ERROR
844 001522 032701 000001 BIT #CL.MU1,R1 ; ARE RQSTID, PASSWD, ACCNT FIELDS PRESENT ?
845 001526 001417 BEQ 30$ ; IF EQ, NO - DON'T ATTEMPT TO PROCESS IMAGE FIELDS
846 001530 012705 010060 MOV #16.*400!N.RQDL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
847 001534 CALL CNVIMG ; CONVERT AND STORE REQUESTOR ID FIELD
848 001540 103432 BCS 50$ ; IF CS, FIELD FORMAT ERROR
849 001542 012705 004102 MOV #8.*400!N.PASL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
850 001546 CALL CNVIMG ; CONVERT AND STORE THE PASSWORD
851 001552 103425 BCS 50$ ; IF CS, FIELD FORMAT ERROR
852 001554 012705 010114 MOV #16.*400!N.ACTL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
853 001560 CALL CNVIMG ; CONVERT AND STORE THE ACCOUNT DATA
854 001564 103420 BCS 50$ ; IF CS, FIELD FORMAT ERROR
855 001566 032701 000002 30$: BIT #CL.MU2,R1 ; IS THERE A USER DATA FIELD ?
856 001572 001405 BEQ 40$ ; IF EQ, NO - DON'T ATTEMPT TO PROCESS THE IMAGE FIELD
857 001574 012705 010136 MOV #16.*400!N.OPDL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
858 001600 CALL CNVIMG ; CONVERT AND STORE THE USER DATA
859 001604 103410 BCS 50$ ; IF CS, FIELD FORMAT ERROR
860
861 ; GET THE PDV INDEX OF THE DESTINATION PROCESS
862 001606 116001 000011 40$: MOVB N.DOBJ(R0),R1 ; GET THE DESTINATION OBJSET TYPE
863 001612 CALL $MPOBJ ; MAP OBJECT TO A PDV INDEX
864 001616 103005 BCC 60$ ; IF CC, OBJECT TYPE EXISTS
865 001620 012701 000004 MOV #ER$UOB,R1 ; OTHERWISE SET THE ERROR CODE
866 001624 000402 BR 60$ ;
867
868 001626 012701 000005 50$: MOV #ER$FMT,R1 ; SET THE FIELD FORMAT ERROR CODE
869 001632 60$: RESRG <R5,R0> ; RESTORE THE REGISTERS
870 001636 RETURN ; RETURN TO THE CALLER
871
872 ;+
873 ; **-PRONAM-PROCESS DESCRIPTOR NAMES
874 ;
875 ; INPUTS:
876 ;
877 ; R0 = ADDRESS OF THE CONNECT BLOCK
878 ; R4 = MESSAGE POINTER TO NEXT FIELD
879 ; R5 = MAXIMUM FIELD LENGTH (HIGH BYTE)
880 ; OFFSET IN THE BLOCK (LOW BYTE)
881 ;
882 ;-
883
884 001640 110502 PRONAM: MOVB R5,R2 ; COMPUTE ADDRESS IN DESCRIPTOR BLOCK
885 001642 060002 ADD R0,R2 ; ...
886 001644 112401 MOVB (R4)+,R1 ; GET THE FORMAT TYPE CODE
887 001646 110122 MOVB R1,(R2)+ ; STORE IT IN THE DESCIPTOR BLOCK
888 001650 112422 MOVB (R4)+,(R2)+ ; STORE THE OBJECT TYPE IN THE DESCIPTOR BLOCK
889 001652 022701 000002 CMP #2,R1 ; CHECK IF THE TYPE CODE IS IN RANGE
890 001656 103421 BLO 20$ ; IF LO, NO - FIELD FORMAT ERROR (C-BIT SET)
891 001660 005301 DEC R1 ; DECIDE WHICH FORMAT
892 001662 100417 BMI 20$ ; IF MI, FORMAT TYPE 0 - ALL DONE
893 001664 001414 BEQ 10$ ; IF EQ, FORMAT TYPE 1 - JUST MOVE THE DATA
894 001666 CALLC GETBIN ; OTHERWISE, FORMAT TYPE 2 - GET GROUP CODE
895 001676 010122 MOV R1,(R2)+ ; AND STORE IN THE DESCIPTOR BLOCK
896 001700 CALLC GETBIN ; GET THE USER CODE
897 001710 010122 MOV R1,(R2)+ ; AND STORE IT ALSO
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 16-2
PROCI
898 001712 162705 002000 SUB #4.*400,R5 ; REDUCE THE MAXIMUM FIELD SIZE APPROPRIATELY
899 001716 10$: CALL CNVIMA ; CONVERT AND STORE PROCESS NAME
900 001722 20$: RETURN ; RETURN TO CALLER
901
902 ;+
903 ; **-CNVIMG-CONVERT MESSAGE IMAGE TO DESCRIPTOR IMAGE FORMAT
904 ; **-CNVIMA-ALTERNATE ENTRY
905 ;
906 ; INPUTS:
907 ;
908 ; R0 = ADDRESS OF THE CONNECT BLOCK
909 ; R4 = MESSAGE POINTER TO NEXT FIELD
910 ; R5 = MAXIMUM FIELD LENGTH (HIGH BYTE)
911 ; OFFSET IN THE BLOCK (LOW BYTE)
912 ;
913 ; OUTPUTS:
914 ;
915 ; C-BIT CLEAR:
916 ; DATA IS MOVED AS REQUIRED
917 ;
918 ; C-BIT SET:
919 ; FIELD FORMAT ERROR
920 ;-
921
922 001724 110502 CNVIMG: MOVB R5,R2 ; COMPUTE THE ADDRESS IN THE DECRIPTOR BLOCK
923 001726 060002 ADD R0,R2 ; ...
924
925 001730 112403 CNVIMA: MOVB (R4)+,R3 ; GET THE LENGTH OF THE IMAGE FIELD
926 001732 000305 SWAB R5 ; GET THE MAXIMUM FIELD LENGTH
927 001734 120503 CMPB R5,R3 ; IS THE FIELD TOO LONG ?
928 001736 103405 BLO 20$ ; IF LO, YES - ERROR (C-BIT SET)
929 001740 010322 MOV R3,(R2)+ ; STORE OUTPUT FIELD LENGTH AS A WORD
930 001742 001403 BEQ 20$ ; IF EQ, END OF THE FIELD (C-BIT CLEAR)
931 001744 112422 10$: MOVB (R4)+,(R2)+ ; MOVE THE DATA FROM THE MESSAGE TO THE DESCIPTOR BLOCK
932 001746 SOB R3,10$ ; LOOP UNTIL DONE
933 001752 20$: RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 17
SETFLG
935 .SBTTL SETFLG
936 ;+
937 ; **-SETFLG-VALIDATE CONNECT MESSAGE SERVICES FIELD
938 ;
939 ; THIS SUBROUTINE IS CALLED TO VALIDATE THE SERVICES FIELD IN A RECEIVED
940 ; CONNECT MESSAGE AND SET UP THE FLOW CONTROL OPTIONS IN THE LOGICAL
941 ; LINK TABLE.
942 ;
943 ; INPUTS:
944 ;
945 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
946 ; R1 = SERVICES
947 ;
948 ; OUTPUTS:
949 ;
950 ; C-BIT CLEAR:
951 ; FLOW CONTROL OPTIONS (NONE, SEGMENT, OR MESSGAGE) SET IN THE LLT
952 ;
953 ; C-BIT SET:
954 ; INVALID SERVICES REQUEST
955 ; R0 = ERROR CODE (ER$ILS)
956 ;
957 ; REGISTERS MODIFIED:
958 ;
959 ; NONE
960 ;
961 ;-
962
963 001754 032701 000001 SETFLG::BIT #CL$TYP,R1 ; IS THIS A SINGLE MESSAGE?
964 001760 001424 BEQ 20$ ; YES..WE DON'T SUPPORT THIS SERVICE
965 001762 032701 000040 BIT #CL$ACK,R1 ; REMOTE USER WANT MESSAGE ACKING?
966 001766 001021 BNE 20$ ; YES..WE DON'T SUPPORT THAT SERVICE
967 001770 032701 000004 BIT #CL$SFL,R1 ; REMOTE USER WANT SEGMENT FLOW CONTROL?
968 001774 001407 BEQ 10$ ; NO
969 001776 052760 010000 000012 BIS #LF.HSF,L.FLG(R0) ; REMOTE USER IS SEGMENT FLOW CONTROLLED
970 002004 032701 000010 BIT #CL$MFL,R1 ; IS HE ALSO ASKING TO BE MESSAGE FLOW CONTROLLED?
971 002010 001010 BNE 20$ ; YES..CANNOT REQUEST BOTH FUNCTIONS
972 002012 000412 BR 30$
973
974 002014 032701 000010 10$: BIT #CL$MFL,R1 ; REMOTE USER WANT TO BE MESSAGE FLOW CONTROLLED?
975 002020 001407 BEQ 30$ ; NO..THIS LINK IS NON-FLOW CONTROLLED
976 002022 052760 020000 000012 BIS #LF.HMF,L.FLG(R0) ; REMOTE USER IS MESSAGE FLOW CONTROLLED
977 002030 000403 BR 30$
978
979 002032 012701 000043 20$: MOV #ER$ILS,R1 ; INVALID SERVICES REQUEST
980 002036 000261 SEC ;
981 002040 30$: RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 18
UCRDAT
983 .SBTTL UCRDAT
984 ;+
985 ; **-UCRDAT-DEQUEUE CONNECT REQUEST AND MOVE USER DATA
986 ;
987 ; THIS SUBROUTINE IS CALLED TO DEQUEUE A USER CONNECT REQUEST FROM THE
988 ; LOGICAL LINK TABLE AND MOVE ANY RECEIVED USER DATA.
989 ;
990 ; INPUTS:
991 ;
992 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
993 ; R4 = ADDRESS OF COUNT FIELD IN THE MESSAGE OR ZERO
994 ;
995 ; OUTPUTS:
996 ;
997 ; R5 = ADDRESS OF CONNECT REQUEST CCB
998 ;
999 ; REGISTERS MODIFIED:
1000 ;
1001 ; R2
1002 ;
1003 ;-
1004
1005 002042 016005 000046 UCRDAT::MOV L.XQ1(R0),R5 ; DEQUEUE CONNECT REQUEST CCB
1006 002046 005060 000046 CLR L.XQ1(R0) ; ...
1007 002052 010403 MOV R4,R3 ; IS THERE A POINTER TO A COUNT FIELD ?
1008 002054 001406 BEQ 10$ ; IF EQ, NO USER DATA - CLEAR C.CNT2 AND EXIT
1009 002056 112403 MOVB (R4)+,R3 ; GET LENGTH OF THE USER DATA
1010 002060 026503 000030 CMP C.CNT2(R5),R3 ; IS THE USER BUFFER LARGE ENOUGH ?
1011 002064 103002 BHIS 10$ ; IF HIS, YES - USE RECEIVED LENGTH
1012 002066 016503 000030 MOV C.CNT2(R5),R3 ; OTHERWISE TRUNCATE TO USER BUFFER SIZE
1013 002072 010365 000030 10$: MOV R3,C.CNT2(R5) ; ...AND STORE IT IN THE CCB
1014 002076 001405 BEQ 30$ ; IF EQ, NO USER DATA - JUST EXIT
1015 002100 016502 000026 MOV C.BUF2+2(R5),R2 ; GET THE ADDRESS OF THE USER BUFFER
1016 002104 112422 20$: MOVB (R4)+,(R2)+ ; ...AND MOVE THE DATA
1017 002106 SOB R3,20$ ; ...
1018 002112 30$: RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 19
UCRDAT
1020
1021 .SBTTL GETEXB
1022 ;++
1023 ; GETEXB
1024
1025 ; INPUTS:
1026 ; R4=MSG PTR TO EXTENSIBLE BINARY FIELD
1027
1028 ; OUTPUTS:
1029 ; C=0:
1030 ; R4=PTR TO FIELD FOLLOWING EXT BIN FIELD
1031 ; R1=BINARY VALUE
1032 ; C=1:
1033
1034 ; THIS ROUTINE CONVERTS UP TO TWO EXTENSIBLE BINARY FIELDS
1035 ; INTO A SINGLE 14-BIT VALUE IN A REGISTER. FAILS IF FIELD
1036 ; IS LONGER THAN TWO BYTES.
1037 ;--
1038
1039 002114 GETEXB::
1040 002114 GETEX2::
1041 002114 005001 CLR R1 ;CLEAR RESULT AND SCRATCH LOC
1042 002116 005046 CLR -(SP)
1043 002120 152401 BISB (R4)+,R1 ;DATA <0:6>-> LOW BYTE R1
1044 002122 100026 BPL 10$ ;DONE IF POSITIVE
1045 002124 106101 ROLB R1 ;DATA IN R1 <1:7>
1046 002126 000301 SWAB R1 ;DATA IN R1 <9:15>
1047 002130 152401 BISB (R4)+,R1 ;DATA <7:13> INTO R1 <0:6>
1048 002132 000301 SWAB R1 ;DATA IN R1 <1:7> AND <8:14>
1049 002134 006201 ASR R1 ;DATA IN R1 <0:7> AND <8:13>
1050 002136 100020 BPL 10$ ;DONE IN NO EXTENSION WAS ON
1051 002140 042701 140000 BIC #140000,R1 ;2 MORE BITS CLEAR THEIR POSITON
1052 002144 152416 BISB (R4)+,(SP) ;BITS (14,15) TO (SP)
1053 002146 100006 BPL 5$ ;MORE?
1054 002150 CALL SKPEXB ;YES, CANT HANDLE THAT
1055 002154 012701 000005 MOV #ER$FMT,R1 ;SET FORMAT ERROR CODE
1056 002160 005126 COM (SP)+ ;SET C, POP STACK
1057 002162 000407 BR 15$ ;DONE
1058
1059 002164 000003 5$: .REPT 3 ;PUT (14,15) INTO THAT POSITION
1060 ROR (SP)
1061 .ENDR
1062 002172 042716 037777 BIC #^C<140000>,(SP) ;MASK OUT ALL BUT (14,15)
1063 002176 051601 BIS (SP),R1 ;AND PUT IT INTO R1
1064 002200 005726 10$: TST (SP)+ ;CLEAR STACK AND C-BIT
1065 002202 15$: RETURN ;RETURN
1066
1067 002204 SKPEXB::
1068 002204 105724 TSTB (R4)+ ;SKIP TO 1 PAST FIRST NON-
1069 002206 100776 BMI SKPEXB ;EXTENSIBLE FIELD
1070 002210 RETURN ;RETURN C-BIT CLEAR
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 20
VERASC
1072 .SBTTL VERASC
1073 ;+
1074 ; **-VERASC-VALIDATE THE CHARATERS IN A NODE NAME
1075 ;
1076 ; THIS SUBROUTINE IS CALLED TO VERIFY THE CHARACTERS IN A NODE NAME
1077 ; ARE UPPER CASE ALPHABETIC (101-132) OR NUMERIC (060-072).
1078 ;
1079 ; INPUTS:
1080 ;
1081 ; R4 = MESSAGE POINTER TO LENGTH OF NODE NAME
1082 ;
1083 ; OUTPUTS:
1084 ;
1085 ; C-BIT CLEAR:
1086 ; NODE NAME IS VALID ASCII
1087 ;
1088 ; C-BIT SET:
1089 ; NODE NAME IS INVALID
1090 ;
1091 ; REGISTERS MODIFIED:
1092 ;
1093 ; NONE
1094 ;
1095 ;-
1096
1097 ;
1098 ; LOCAL DATA
1099 ;
1100 000060 LNUM= 60
1101 000071 HNUM= 71
1102 000101 LALP= 101
1103 000132 HALP= 132
1104
1105 002212 004567 000000G VERASC::JSR R5,$SAVRG ; SAVE R5, R4, AND R3
1106 002216 112403 MOVB (R4)+,R3 ; GET THE LENGTH OF THE NODE NAME
1107 002220 122703 000006 CMPB #6,R3 ; IS THE LENGTH WITHIN RANGE ?
1108 002224 103417 BLO 30$ ; IF LO, NO - ERROR
1109 002226 121427 000060 10$: CMPB (R4),#LNUM ; CHAR LESS THAN ZERO ?
1110 002232 103414 BLO 30$ ; YES..INVALID CHAR
1111 002234 122714 000071 CMPB #HNUM,(R4) ; CHAR PART OF NUMERIC SET ?
1112 002240 103006 BHIS 20$ ; YES..VALID ASCII NUMERIC
1113 002242 121427 000101 CMPB (R4),#LALP ; CHAR FALL BELOW ALPHA RANGE ?
1114 002246 103406 BLO 30$ ; YES..INVALID CHAR
1115 002250 122714 000132 CMPB #HALP,(R4) ; CHAR FIT IN ALPHA SET ?
1116 002254 103403 BLO 30$ ; NO..INVALID CHAR
1117 002256 105724 20$: TSTB (R4)+ ; UPDATE MESSAGE PTR TO NEXT CHAR (CLEAR C-BIT)
1118 002260 SOB R3,10$ ; TEST ALL CHARACTERS
1119 002264 30$: RETURN ; RETURN WITH C-BIT
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 21
DISCONNECT PROCESSING SUBROUTINES
1121 .SBTTL DISCONNECT PROCESSING SUBROUTINES
1122 .SBTTL HNGUSR
1123 ;+
1124 ; **-HNGUSR-INITIATE LOGICAL LINK DESTRUCTION ON A PHYSICAL LINK FAILURE
1125 ;
1126 ; INPUTS:
1127 ;
1128 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
1129 ;
1130 ; OUTPUTS:
1131 ;
1132 ; THE LOGICAL LINK IS SET INTO THE DISCONNECT STATE WITH NO FURTHER
1133 ; REQUIRED WITH THE NETWORK AND THE USER IS NOTIFIED OF THE ERROR.
1134 ;
1135 ; REGISTERS MODIFIED:
1136 ;
1137 ; R1, R2
1138 ;
1139 ;-
1140 .ENABL LSB
1141
1142 002266 004567 000000G HNGUSR::JSR R5,$SAVRG ; SAVE R5, R4, AND R3
1143 002272 005004 CLR R4 ; INDICATE THAT THERE IS NO USER DATA
1144 002274 112760 000015 000025 MOVB #ST$DID,L.NSTA(R0) ; NO MORE ACTIVITY WITH THE NETWORK
1145 002302 012703 000047 MOV #ER$COM,R3 ; ERROR CODE FOR COMMUNICATIONS FAILURE
1146 002306 000402 BR 10$ ; CONTINUE IN COMMON CODE
1147
1148
1149 .SBTTL DISUSR
1150 ;+
1151 ; **-DISUSR-INITIATE LOGICAL LINK DISCONNECTION
1152 ;
1153 ; THIS ROUTINE IS CALLED TO INITIATE THE DISCONNECTION OF A LOGICAL LINK
1154 ; IN ANY STATE. THE DISCONNECT REASON CODE IS STORED IN THE LOGICAL LINK
1155 ; TABLE AND THE MAJOR DISCONNECT STATE (ST$DIP) IS ESTABLISHED. SERVICE
1156 ; ROUTINES DISPATCHED BASED ON THE CURRENT LINK STATE.
1157 ;
1158 ; INPUTS:
1159 ;
1160 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
1161 ; R3 = DISCONNECT REASON CODE
1162 ; R4 = ADDRESS OF USER DATA COUNT OR ZERO
1163 ;
1164 ; OUTPUTS TO SERVICE ROUTINES:
1165 ;
1166 ; SAME AS INPUTS
1167 ;
1168 ; REGISTERS MODIFIED ON SERVICE ROUTINE EXIT:
1169 ;
1170 ; R1, R2
1171 ;
1172 ;-
1173
1174 002310 004567 000000G DISUSR::JSR R5,$SAVRG ; SAVE R5, R4, AND R3
1175 002314 010360 000036 10$: MOV R3,L.DCR(R0) ; SAVE DISCONNECT REASON CODE IN THE LINK TABLE
1176 002320 111001 MOVB (R0),R1 ; GET THE CURRENT LINK STATE (ENTDIP MODIFIES IT)
1177 002322 CALL ENTDIP ; SET MAJOR DISCONNECT STATE FOR LINK (ST$DIP)
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 21-1
DISUSR
1178 002326 006301 ASL R1 ; MAKE STATE A WORD INDEX
1179 002330 CALLR @20$-2(R1) ; ...AND DISPATCH ON IT
1180
1181 002334 002624' 20$: .WORD DISUS2 ; SERVICE ROUTINE FOR STATE ST$CIS
1182 002336 002356' .WORD DISUS1 ; ST$CC
1183 002340 002730' .WORD DISUS3 ; ST$CIR
1184 002342 177777 .WORD -1 ; UNUSED STATE
1185 002344 002356' .WORD DISUS1 ; ST$DAT
1186 002346 002752' .WORD CLNLNK ; ST$DIP
1187
1188 .DSABL LSB
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 22
DISUS0,DISUS0
1190 .SBTTL DISUS0,DISUS0
1191 ;+
1192 ; **-DISUS1-DISCONNECT SERVICE WHEN A RESOURCE IS NEEDED
1193 ; **-DISUS0-ENTRY FOR RECOVERY ON A TIMEOUT
1194 ;
1195 ; THIS SERVICE ROUTINE IS USED WHEN A RESOURCE IS REQUIRED IN ORDER TO
1196 ; NOTIFY THE USER OF A LOGICAL LINK DISCONNECTION. TYPICALLY, THIS
1197 ; OCCURS IF THE LINK STATE IS DATA OR CONNECT CONFIRM, BUT INCLUDES THE
1198 ; CASE OF A USER ACCEPT WITH A LINK STATE OF DISCONNECT. IF THE RESOURCES
1199 ; CAN BE ALLOCATED, ANY RECEIVED USER DATA IS COPIED, THE COMPLETION STATUS
1200 ; IS SET AND THE USER INTRFACE IS NOTIFIED. IF THE RESOURCES CANNOT BE
1201 ; ALLOCATED, THE DISCONNECT REASON IS CHANGED TO INDICATE AN ABORT DUE TO
1202 ; DATA LOSS AND THE USER NOTIFICATION REQUIRED STATE IS SET. THE LINK
1203 ; WILL BE SCANNED AND THE OPERATION RETRIED.
1204 ;
1205 ;-
1206
1207 002350 004567 000000G DISUS0::JSR R5,$SAVRG ; SAVE REGISTERS (R5, R4, & R3)
1208 002354 005004 CLR R4 ; INDICATE NO USER DATA POSSIBLE
1209
1210 002356 010402 DISUS1::MOV R4,R2 ; COPY MESSAGE POINTER
1211 002360 CALL CCBGT ; ALLOCATE A CCB
1212 002364 103502 BCS 60$ ; IF CS, ALLOCATION FAILURE - SET UP RECOVERY
1213 002366 005064 000016 CLR C.BUF+2(R4) ; INITIALIZE THE BUFFER POINTER AND THE
1214 002372 005064 000020 CLR C.CNT(R4) ; ...COUNT FIELDS
1215 002376 005702 TST R2 ; IS THERE A POINTER TO A DATA COUNT ?
1216 002400 001427 BEQ 40$ ; IF EQ, NO - NO USER DATA
1217 002402 112203 MOVB (R2)+,R3 ; GET THE COUNT OF THE USER DATA
1218 002404 001425 BEQ 40$ ; IF EQ, NO USER DATA
1219 002406 010401 MOV R4,R1 ; COPY THE ADDRESS OF THE CCB
1220 002410 CALL CCBGT ; ALLOCATE ANOTHER CCB
1221 002414 103415 BCS 30$ ; IF CS, ALLOCATION FAILURE - NO DATA WILL BE MOVED
1222 002416 010164 000016 MOV R1,C.BUF+2(R4) ; STORE THE ADDRESS OF THE FIRST CCB IN THE SECOND
1223 002422 022703 000020 CMP #N$$DIS,R3 ; IS THE RECEIVED DATA LENGTH WITHIN RANGE ?
1224 002426 103002 BHIS 10$ ; IF HIS, YES - USE THE RECEIVED LENGTH
1225 002430 012703 000020 MOV #N$$DIS,R3 ; SET THE MAXIMUM LENGTH AS THE COUNT
1226 002434 010364 000020 10$: MOV R3,C.CNT(R4) ; STORE THE COUNT IN THE CCB
1227 002440 112221 20$: MOVB (R2)+,(R1)+ ; MOVE THE USER DATA
1228 002442 SOB R3,20$ ; ...
1229 002446 000404 BR 40$ ;
1230
1231 002450 010104 30$: MOV R1,R4 ; RECOVER THE ADDRESS OF THE FIRST CCB
1232 002452 012760 000001 000036 MOV #ER$RES,L.DCR(R0) ; CHANGE THE REASON TO RESOURCE ERROR
1233 002460 010405 40$: MOV R4,R5 ; COPY ADDRESS OF CCB
1234 002462 112760 000012 000024 MOVB #ST$DIR,L.USTA(R0) ; SET LINK SUBSTATE TO USER NOTIFIED
1235 002470 012704 177777 MOV #NE.DIS,R4 ; ASSUME SYNCHRONOUS DISCONNECT
1236 002474 016065 000036 000004 MOV L.DCR(R0),C.NSP(R5) ; STORE DISCONNECT REASON CODE
1237 002502 001402 BEQ 50$ ; IF EQ, ASSUMPTION IS CORRECT
1238 002504 012704 177776 MOV #NE.ABO,R4 ; OTHERWISE SET ABORT COMPLETION STATUS
1239 002510 50$: ;LW0003
1240 .IF DF N$$SYS&N$$USR ;LW0003
1241 002510 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE? ;LW0003
1242 002514 001012 BNE 55$ ; SYSTEM ;LW0003
1243 .ENDC ;LW0003
1244 ;LW0003
1245 002516 010465 000012 MOV R4,C.STS(R5) ; STORE STATUS IN THE CCB ;LW0003
1246 002522 016065 000040 000006 MOV L.ULA(R0),C.LIN(R5) ; STORE USER LINK ADDRESS ;**-1
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 22-1
DISUS0,DISUS0
1247 002530 RECMAP ; RESTORE PROPER ACP MAPPING
1248 002536 CALLR $QDIR ; NOTIFY THE USER FO THE DISCONNECT
1249 ;LW0003
1250 .IF DF N$$SYS ;LW0003
1251 002542 112765 000010 000011 55$: MOVB #NT$DIS,C.MOD(R5) ; SET SUBFUNCTION CODE ;LW0003
1252 002550 CALLC PSTUSR ; NOTIFY THE SYSTEM USER OF THE DISCONNECT ;LW0003
1253 002560 CALLC REMSYS ; AND TRY TO FLUSH THE TRANSMIT QUEUES. ;AP0004
1254 002570 RETURN ;LW0003
1255 .ENDC ;LW0003
1256 ;
1257 ; ALLOCATION FAILURE PREVENTS NOTIFICATION OF THE DISCONNECT
1258 ;
1259 002572 112760 000011 000024 60$: MOVB #ST$UNR,L.USTA(R0) ; SETUP THE RECOVERY SUBSTATE
1260 002600 052710 100000 BIS #LF.RSU,(R0) ; SET RECOVERY STATUS REQUIRED
1261 002604 005702 TST R2 ; THERE IS NO NEED TO CHANGE THE DISCONNECT
1262 002606 001405 BEQ 70$ ; ...REASON CODE UNLESS THERE IS USER DATA
1263 002610 105722 TSTB (R2)+ ; ...IN THE MESSAGE
1264 002612 001403 BEQ 70$ ; IF EQ, NO - JUST EXIT ADN WAIT FOR RECOVERY
1265 002614 012760 000001 000036 MOV #ER$RES,L.DCR(R0) ; OTHERWISE SET ABORT DUE TO RESOURCE ERROR
1266 002622 70$: RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 23
DISUS2
1268 .SBTTL DISUS2
1269 ;+
1270 ; **-DISUS2-DISCONNECT SERVICE FOR CONNECT REJECT
1271 ;
1272 ; THIS SERVICE ROUTINE IS USED TO TERMINATE A CONNECT REQUEST WITH
1273 ; A REJECT. THIS OCCURS IF THE USER OR SYSTEM ABORTS CONNECTION THAT
1274 ; IS STILL OUTSTANDING OR IF A DISCONNECT MESSAGE IS RECEIVED AND THE
1275 ; LINK STATE IS CONNECT INITIATE.
1276 ;
1277 ;-
1278
1279 002624 DISUS2: CALL UCRDAT ; DEQUEUE CONNECT REQUEST AND COPY USER DATA
1280 002630 112760 000013 000024 MOVB #ST$UDI,L.USTA(R0) ; SET SUBSTATE TO DONE WITH THE USER
1281 002636 012704 177775 MOV #NE.REJ,R4 ; ASSUME CONNECT REJECT BY THE OTHER USER
1282 002642 016065 000036 000004 MOV L.DCR(R0),C.NSP(R5) ; STORE DISCONNECT REASON CODE
1283 002650 001402 BEQ 10$ ; IF EQ, ASSUMPTION IS CORRECT
1284 002652 012704 177776 MOV #NE.ABO,R4 ; OTHERWISE SET ABORT STATUS
1285 002656 10$: ;LW0003
1286 .IF DF N$$SYS&N$$USR ;LW0003
1287 002656 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE? ;LW0003
1288 002662 001014 BNE 20$ ; SYSTEM ;LW0003
1289 .ENDC ;LW0003
1290 ;LW0003
1291 002664 010465 000012 MOV R4,C.STS(R5) ; STORE ABORT STATUS IN THE CONNECT CCB ;LW0003
1292 002670 016065 000040 000006 MOV L.ULA(R0),C.LIN(R5) ; SETUP THE USER LINK ADDRESS ;**-1
1293 002676 RECMAP ; RESTORE PROPER ACP MAPPING
1294 002704 CALL $QCRR ; CALL USER INTERFACE FOR CONNECT REJECT
1295 002710 CALLR CLNLNK ; ATTEMPT TO REMOVE THE LOGICAL LINK
1296 ;LW0003
1297 .IF DF N$$SYS ;LW0003
1298 002714 20$: CALLC RETUSR ; SEND CONNECT CCB TO USER ;LW0003
1299 002724 CALLR CLNLNK ; ATTEMPT TO REMOVE THE LOGICAL LINK ;LW0003
1300 .ENDC ;LW0003
1301
1302
1303 .SBTTL DISUS3
1304 ;+
1305 ; **-DISUS3-DISCONNECT SERVICE FOR CONNECT INITIATE RECEIVED
1306 ;
1307 ; THIS SERVICE ROUTINE IS USED TO INITIATE LOGICAL LINK DISCONNECTION
1308 ; WHEN THE STATE IS CONNECT INITIATE RECEIVED. THIS OCCURS ONLY AS THE
1309 ; RESULT OF A COMMUNICATIONS FAULT WITH THE SOURCE NODE, SINCE DISCONNECT
1310 ; MESSAGES RECEIVED IN THIS STATE ARE IGNORED. SINCE IT IS POSSIBLE FOR
1311 ; THE USER TO ACCEPT OR REJECT THE CONNECT REQUEST, AND NOTIFICATION
1312 ; MUST ONLY BE DONE ON AN ACCEPT, THE LOGICAL LINK MUST WAIT.
1313 ;
1314 ;-
1315
1316 002730 112760 000012 000024 DISUS3: MOVB #ST$DIR,L.USTA(R0) ; SET SUBSTATE TO USER DISCONNECT STARTED
1317 002736 RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 24
ENTDIP
1319 .SBTTL ENTDIP
1320 ;+
1321 ; **-ENTDIP-SET MAJOR DISCONNECT STATE
1322 ;
1323 ; INPUTS:
1324 ;
1325 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
1326 ;
1327 ; OUTPUTS:
1328 ;
1329 ;
1330 ;-
1331
1332 002740 112710 000006 ENTDIP::MOVB #ST$DIP,(R0) ; LINK IS BEING DISCONNECTED
1333 002744 052710 100000 BIS #LF.RSU,(R0) ; MAKE SURE LINK IS SCANNED TO COMPLETE DISCONNECT
1334
1335 .IF DF N$$LV2
1336
1337 CLR L.TIMD(R0) ;DISABLE DATA TIMER AND RETRY COUNT
1338 CLR L.TIML(R0) ;DISABLE LINK SERVICE TIMER AND RETRY COUNT
1339
1340 .ENDC
1341
1342 002750 RETURN ; RETURN TO CALLER
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 25
CLNLNK
1344 .SBTTL CLNLNK
1345 ;+
1346 ; **-CLNLNK-ATTEMPT TO REMOVE THE LOGICAL LINK
1347 ;
1348 ; THIS SUBROUTINE IS CALLED WHENEVER IT MAY BE POSSIBLE FOR A LOGICAL
1349 ; TO BE REMOVED. IF THE MAJOR STATE IS DISCONNECT AND THE SUBSTATES
1350 ; ARE COMPLETE AND ALL TRANSMITS HAVE COMPLETED, ANY PENDING DISCONNECT
1351 ; REQUEST IS COMPLETED AND THE LOGICAL LINK IS REMOVED.
1352 ;
1353 ; INPUTS:
1354 ;
1355 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
1356 ;
1357 ; OUTPUTS:
1358 ;
1359 ; AS DESCRIBED
1360 ;
1361 ; REGISTERS MODIFIED:
1362 ;
1363 ; R1 AND R2
1364 ;
1365 ;-
1366
1367 002752 004567 000000G CLNLNK::JSR R5,$SAVRG ; SAVE R5, R4, AND R3
1368 002756 122710 000006 CMPB #ST$DIP,(R0) ; ARE WE BEING DISCONNECTED?
1369 002762 001057 BNE 20$ ; NO
1370 002764 022760 006413 000024 CMP #ST$DID*400!ST$UDI,L.USTA(R0) ; ARE WE DONE WITH SUBSTATE PROCESSING
1371 002772 001053 BNE 20$ ; NO
1372 002774 005760 000004 TST L.TIPI(R0) ; ARE THERE ANY DATA OR INT/LS TRANSMITS IN PROGRESS ?
1373 003000 001050 BNE 20$ ; YES
1374
1375 .IF DF N$$ICF
1376
1377 003002 032710 000400 BIT #LF.INT,(R0) ; INTERCEPT LINK ?
1378 003006 001041 BNE 10$ ; YES
1379
1380 .ENDC
1381 ;AP0003
1382 .IF DF N$$SYS&N$$USR ;AP0003
1383 003010 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE ? ;AP0003
1384 003014 001405 BEQ 2$ ; USER ;AP0003
1385 .ENDC ;AP0003
1386
1387 .IF DF N$$SYS
1388 003016 CALLC REMSYS ; CLEAR THE SYSTEM TRANSMIT QUEUES ;AP0004
1389 003026 000404 BR 3$ ;AP0003
1390 .ENDC ;**-4
1391
1392 .IF DF N$$USR
1393 003030 2$: ;AP0003
1394 003030 CALLC REMUSR ; REMOVE CCBS FROM XQ1 AND XQ3 FOR USER
1395 .ENDC
1396 003040 3$: ;AP0003
1397
1398 003040 016005 000034 MOV L.UDQ(R0),R5 ; GET USER DISCONNECT REQUEST
1399 003044 001422 BEQ 10$ ; IF EQ, NONE - JUST REMOVE THE LINK
1400
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 25-1
CLNLNK
1401 .IF DF N$$SYS&N$$USR
1402 003046 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE? ;LW0003
1403 003052 001011 BNE 5$ ; SYSTEM ;**-1
1404
1405 .ENDC
1406
1407 .IF DF N$$USR
1408 003054 016065 000040 000006 MOV L.ULA(R0),C.LIN(R5) ; GET ULA
1409 003062 RECMAP ; RESTORE PROPER ACP MAPPING
1410 003070 CALL $QDIC ; CALL QIO ROUTINE TO PROCESS DISCONNECT COMPLETE
1411 003074 000406 BR 10$ ; JOIN COMMON CODE ;LW0003
1412 .ENDC
1413 003076 5$:
1414 .IF DF N$$SYS
1415 003076 012704 000001 MOV #NS.SUC,R4 ; SET COMPLETION STATUS ;AP0004
1416 003102 CALLC RETUSR ; GIVE TO USER ;**-1
1417 .ENDC
1418
1419 003112 10$: CALLC REMLNK ; REMOVE LINK
1420 003122 20$: RETURN ; RESTORE REGISTERS AND RETURN
1421
1422
1423
1424 000001 .END
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 25-2
SYMBOL TABLE
ACKMAS= 170000 CS.MTL= 004000 ER$CDI= 000052 FS.STR= 001000 KISDR0= 172300
ACKPRE= 100000 CS.RNG= 000010 ER$COM= 000047 FS.TRM= 003000 KISDR6= 172314
ACKRES= 060000 CS.ROV= 000004 ER$FCF= 000050 FS.XKL= 002000 KISDR7= 172316
ACKWRA= 010000 CS.RSN= 010000 ER$FMT= 000005 FS.XOF= 010000 K$$CNT= 177546
ADDLNK 000000RG 002 CS.SUC= 000001 ER$GEN= 000007 FS.XON= 007000 K$$CSR= 177546
ADNOD 000572RG 002 CS.TMO= 020000 ER$IFC= 000030 F$$LVL= 000001 K$$LDC= 000000
A$$CHK= 000000 CTRES = ****** GX ER$ILS= 000043 GETBIN= ****** GX K$$TPS= 000074
A$$CPS= 000000 C$$CKP= 000000 ER$IMG= 000053 GETDBK 001212RG 002 LALP = 000101
A$$PRI= 000000 C$$ORE= 000400 ER$MLB= 000006 GETEXB 002114RG 002 LA.ACK= 100000
A$$TRP= 000000 C$$RSH= 177564 ER$NOD= 000002 GETEX1= ****** GX LA.MSK= 170000
A.NAK = 010000 C.BID 000003 ER$NSD= 000003 GETEX2 002114RG 002 LA.NAK= 110000
BLDIMA 001166R 002 C.BUF 000014 ER$RES= 000001 GETLDB 001326RG 002 LA.NMS= 010000
BLDIMG 001162R 002 C.BUF1 000014 ER$SSR= 000000 GETNNO 000242RG 002 LA.RES= 060000
CB.CCB= 000002 C.BUF2 000024 ER$SSS= 000045 G$$TPP= 000000 LD$LP = 000000
CB.RDB= 000004 C.CNT 000020 ER$STA= 000051 G$$TSS= 000000 LF.DFL= 000060
CCBGT 001360RG 002 C.CNT1 000020 ER$TCN= 000040 G$$TTK= 000000 LF.DSP= 000040
CE.ABO= 100362 C.CNT2 000030 ER$TCO= 000041 G$$WRD= 000000 LF.DST= 000020
CE.DIS= 100366 C.FLG 000022 ER$TPA= 000010 HALP = 000132 LF.FPN= 000010
CE.ERR= 100370 C.FLG1 000022 ER$UOB= 000004 HNGUSR 002266RG 002 LF.HF0= 001000
CE.MOP= 100372 C.FLG2 000032 E$$XPR= 000000 HNUM = 000071 LF.HMF= 020000
CE.NTE= 100361 C.FNC 000010 FC.CCP= 000020 IF.INS= 040000 LF.HSF= 010000
CE.RTE= 100376 C.LIN 000006 FC.CTL= 000006 IF.NKS= 000400 LF.INR= 000100
CE.SRC= 100364 C.LNK 000000 FC.KCP= 000016 IF.NRD= 000200 LF.INT= 000400
CE.TMO= 100374 C.MOD 000011 FC.KIL= 000004 IF.NRI= 100000 LF.LCL= 040000
CFRNOD 000500RG 002 C.NSP 000004 FC.RCE= 000002 IF.NTS= 002000 LF.MMF= 100000
CF.EOM= 000004 C.RSV 000002 FC.RCP= 000014 IF.SND= 000004 LF.MSF= 040000
CF.HDR= 000020 C.STA 000007 FC.TIM= 000010 IF.SNL= 000002 LF.NKR= 000200
CF.LB = 100000 C.STS 000012 FC.XCP= 000012 I$$RAR= 000000 LF.NKS= 000400
CF.SOM= 000010 DF$ADJ= 020000 FC.XME= 000000 I$$RDN= 000000 LF.NPN= 000001
CF.SYN= 000040 DF$DWN= 001000 FE.CAL= 000040 I.FLG = 000012 LF.NTS= 002000
CF.TRN= 000100 DF$FRE= 070000 FE.DRV= 000010 I.ILA = 000040 LF.RSU= 100000
CHKFLG 000160RG 002 DF$LCL= 040000 FE.EXP= 000200 I.IREM= 000042 LNUM = 000060
CHKULA 000000RG 003 DF$LNK= 004000 FE.EXT= 000001 I.LDA = 000024 LS.DLS= 000200
CLNLNK 002752RG 002 DF$REM= 010000 FE.EXV= 000004 I.LIA = 000026 LS.FCC= 000004
CL$ACK= 000040 DF$RES= 002000 FE.LSI= 000400 I.LLA = 000002 LS.FC0= 000001
CL$MFL= 000010 DF$TMP= 100000 FE.MUP= 000002 I.LNO = 000022 LS.FC1= 000002
CL$NRM= 000020 DISUSR 002310RG 002 FE.MXT= 040000 I.LSA = 000032 LS.ILS= 000200
CL$SFL= 000004 DISUS0 002350RG 002 FE.NLG= 100000 I.LVL = 000001 LS.MAK= 000020
CL$TYP= 000001 DISUS1 002356RG 002 FE.PKT= 000100 I.NDA = 000034 LS.MNK= 000040
CL.MU1= 000001 DISUS2 002624R 002 FE.PLA= 000020 I.NIN = 000016 LS.RES= 000360
CL.MU2= 000002 DISUS3 002730R 002 FS.AST= 000000 I.NLA = 000036 LS.RSV= 000300
CL.RES= 177774 D$CHN 000002 FS.CIB= 002000 I.NSTA= 000025 L$$ASG= 000000
CMODE = 140000 D$FLG 000000 FS.CRA= 001000 I.NXN = 000014 L$$DRV= 000000
CNVIMA 001730R 002 D$LEN 000014 FS.DIS= 013000 I.REM = 000006 L$$P11= 000001
CNVIMG 001724R 002 D$LNG 000005 FS.DVC= 001000 I.RLA = 000010 L$$11R= 000000
CONSM2 000722RG 002 D$NAM 000006 FS.ENB= 012000 I.RNO = 000020 L.CIQ 000026
CONSM3 001076R 002 D$USE 000004 FS.GET= 006000 I.STA = 000000 L.DCR 000036
CS.ABO= 000100 D$$BUG= 177514 FS.INI= 000000 I.TIPD= 000005 L.FLG 000012
CS.BUF= 000200 D$$ISK= 000000 FS.KIL= 000000 I.TIPI= 000004 L.LDA 000024
CS.DCR= 000400 D$$L11= 000001 FS.LTM= 001000 I.USA = 000030 L.LIA 000026
CS.DEV= 000002 D$$YNC= 000000 FS.MNT= 004000 I.USTA= 000024 L.LLA 000002
CS.DIS= 000040 D$$YNM= 000000 FS.MSN= 014000 KDSAR0= 172360 L.LNG1 000054
CS.ENB= 000020 ENTDIP 002740RG 002 FS.RNG= 011000 KDSDR0= 172320 L.LNO 000022
CS.EOF= 000001 ER$ABO= 000046 FS.RTN= 001000 KISAR0= 172340 L.LSA 000032
CS.ERR= 100000 ER$ABT= 000011 FS.SET= 005000 KISAR5= 172352 L.LSF 000044
CS.HFE= 002000 ER$ACC= 000042 FS.STM= 000000 KISAR6= 172354 L.LVL 000001
CS.LST= 040000 ER$ACT= 000044 FS.STP= 002000 KISAR7= 172356 L.NDA 000034
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 25-3
SYMBOL TABLE
L.NIN 000016 NE.TIM= 177772 NT.NAK= 000002 PF$ENB= 000200 RH.HDR= 000002
L.NLA 000036 NI.FLI= 000002 NT.NFL= 000000 PF$OFF= 000000 RH.PRI= 000014
L.NSTA 000025 NI.FRI= 000004 NT.SFL= 000001 PF$RLI= 000002 RH.PR1= 000004
L.NXN 000014 NI.FRT= 000001 NT.SOL= 000140 PF$RRI= 000004 RH.RFM= 000100
L.PDV 000041 NI.FUB= 000010 NT.XOF= 000004 PF$RVE= 000001 RLSDBK 001266RG 002
L.REM 000006 NI.INI= 000001 NT.XON= 000010 PF$RVR= 000040 R$$DER= 000000
L.RLA 000010 NI.RLI= 000002 NWNOD 000550RG 002 PF$SLI= 000002 R$$K11= 000001
L.RNO 000020 NI.RRI= 000004 N$ACQ 000000 PF$SRI= 000004 R$$SND= 000000
L.STA 000000 NI.RVE= 000001 N$ICF 000006 PF$SRT= 000001 R$$11M= 000000
L.TC 000042 NI.VER= 000002 N$LNI 000010 PF$STA= 000003 SETFLG 001754RG 002
L.TIC 000043 NP$RTR= 000003 N$LVC 000022 PF$SUB= 000010 SISDR0= 172200
L.TIPD 000005 NS.BOM= 000040 N$NOD 000032 PF$UP = 000001 SKPEXB 002204RG 002
L.TIPI 000004 NS.EOM= 000100 N$PLD 000026 PIRQ = 177772 SRNOD = ****** GX
L.UDQ 000034 NS.MFL= 000003 N$STS 000042 PMODE = 030000 SR0 = 177572
L.ULA 000040 NS.MOM= 000000 N$TCB 000004 PROCI 001400RG 002 SR3 = 172516
L.USA 000030 NS.NFL= 000001 N$TMP 000012 PRONAM 001640R 002 STLN0 000644RG 002
L.USTA 000024 NS.SET= 000002 N$VER 000036 PR0 = 000000 STLVC 000702RG 002
L.XQ1 000046 NS.SFL= 000002 N$$DAT= 000030 PR1 = 000040 STPLD 000634RG 002
L.XQ2 000050 NS.SOL= 000140 N$$DIS= 000020 PR4 = 000200 ST$CC = 000002
L.XQ3 000052 NS.SUC= 000001 N$$ICF= 000001 PR5 = 000240 ST$CIR= 000003
MA.DA = 000000 NT$ABO= 000022 N$$INT= 000020 PR6 = 000300 ST$CIS= 000001
MA.IL = 000020 NT$ACC= 000002 N$$LDV= 000001 PR7 = 000340 ST$DAT= 000005
MC.CC = 000040 NT$ADS= 000000 N$$MOV= 000010 PS = 177776 ST$DID= 000015
MC.CI = 000020 NT$AKD= 000016 N$$OPT= 000020 PSTUSR= ****** GX ST$DIP= 000006
MC.DC = 000100 NT$AKI= 000020 N$$OVR= 000042 PS$NTI= 000003 ST$DIR= 000012
MC.DI = 000060 NT$CC = 000012 N$$SYS= 000001 PS$OFF= 000000 ST$DIS= 000014
MC.NO = 000000 NT$CON= 000000 N$$USR= 000001 PS$STR= 000001 ST$UDI= 000013
MC.ST = 000120 NT$DAT= 000002 N.ACNT 000116 PS$UP = 000005 ST$UNR= 000011
MD.BM = 000040 NT$DIS= 000010 N.ACTL 000114 PS$VER= 000004 SWR = 177570
MD.EM = 000100 NT$IDC= 000034 N.DDL1 000012 PS$WT = 000002 S$EMR 000006
MD.ILS= 000040 NT$IDN= 000030 N.DDL2 000016 PUTBIN= ****** GX S$FMT 000012
MD.IM = 000020 NT$ILN= 000032 N.DDS1 000014 P$CHN 000004 S$LEN 000040
MF.ACK= 000004 NT$IND= 000024 N.DDS2 000020 P$CNT 000005 S$LNK 000022
MF.CTL= 000010 NT$INL= 000026 N.DFMT 000010 P$FRQ 000012 S$MLK 000024
MF.DAT= 000000 NT$INT= 000004 N.DGRP 000012 P$FSP 000013 S$NKS 000010
MPAR = 172100 NT$LS = 000014 N.DOBJ 000011 P$LCD 000002 S$RES 000014
MPCSR = 177746 NT$MOD= 000012 N.DUSR 000014 P$LEN 000014 S$SEC 000000
MSGHDR= 000007 NT$NAK= 000022 N.LGTH= 000160 P$LST 000000 S$SNI 000016
M$$CRB= 000124 NT$OFF= 000026 N.NODE 000000 P$NOD 000010 S$UMR 000004
M$$CRX= 000000 NT$ON = 000002 N.OPDL 000136 P$PFQ 000006 S$UMS 000002
M$$FCS= 000000 NT$QRY= 000014 N.OPTD 000140 P$TIM 000003 S$UNI 000020
M$$MGE= 000000 NT$REJ= 000004 N.PASL 000102 P$$P45= 000000 S$$WRG= 000000
M$$OVR= 000000 NT$ROU= 000022 N.PASS 000104 P$$WRD= 000000 S$$YSZ= 007600
NC.FM0= 000000 NT$RTI= 000010 N.RQDL 000060 Q$$OPT= 000010 TPS = 177564
NC.FM1= 000001 NT$RTN= 000000 N.RQID 000062 REMLNK= ****** GX T$$KMG= 000000
NC.FM2= 000002 NT$SNG= 000006 N.RSRV= 000030 REMSYS= ****** GX T$$MIN= 000000
NDLNG 000450RG 002 NT$STP= 000004 N.SDL1 000036 REMUSR= ****** GX UBMPR = 170200
NETTIM= 000005 NT$XOF= 000020 N.SDL2 000042 RETUSR= ****** GX UCRDAT 002042RG 002
NE.ABO= 177776 NT$XON= 000016 N.SDS1 000040 RF.CLN= 000000 UDSAR0= 177660
NE.ACT= 177771 NT.ACK= 000001 N.SDS2 000056 RF.CTL= 000003 UDSDR0= 177620
NE.CLS= 177767 NT.BOM= 000040 N.SEG 000006 RF.TIM= 177400 UISAR0= 177640
NE.DIS= 177777 NT.EOM= 000100 N.SFMT 000034 RF.TM0= 000400 UISAR4= 177650
NE.FMT= 177770 NT.FCN= 037400 N.SGRP 000036 RF.WTD= 000020 UISAR5= 177652
NE.NDT= 177766 NT.MD1= 000420 N.SOBJ 000035 RF.WTM= 000030 UISAR6= 177654
NE.NOD= 177774 NT.MFL= 000002 N.SUSR 000040 RF.WTS= 000010 UISAR7= 177656
NE.REJ= 177775 NT.MOD= 000020 PD$NSP= ****** GX RH.CNT= 000001 UISDR0= 177600
NE.RES= 177773 NT.MOM= 000000 PF$EIP= 000100 RH.EFM= 000020 UISDR4= 177610
NSPSBI MACRO M1110 13-OCT-79 10:12 PAGE 25-4
SYMBOL TABLE
UISDR5= 177612 V$FLG 000000 X$$DBT= 000000 $ENCOD= ****** GX $NTNAM= ****** GX
UISDR6= 177614 V$LEN 000022 $ALOCB= ****** GX $HOST = ****** GX $QCRR = ****** GX
UISDR7= 177616 V$RCV 000002 $CALLX= ****** GX $LDBGT= ****** GX $QDIC = ****** GX
VERASC 002212RG 002 V$XMT 000012 $CCBGT= ****** GX $MPOBJ= ****** GX $QDIR = ****** GX
VF$RCV= 100000 V$$CTR= 001000 $CCBRT= ****** GX $MUL = ****** GX $RDBSZ= ****** GX
VF$XMT= 040000 WINDOW= 004000 $DEACB= ****** GX $NSADB= ****** GX $SAVRG= ****** GX
. ABS. 000160 000
000000 001
NSPSBA 003124 002
$NSACP 000046 003
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 19666 WORDS ( 77 PAGES)
DYNAMIC MEMORY: 20620 WORDS ( 79 PAGES)
ELAPSED TIME: 00:01:19
NSPSBI,[131,34]NSPSBI/CR/-SP=[130,10]NETLIB/ML,RSXMCI/PA:1,[131,10]NSPSBA
NSPSBI CREATED BY MACRO ON 13-OCT-79 AT 10:12 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ADDLNK 000000 RG #4-115
ADNOD 000572 RG 7-303 #9-442
BLDIMA 001166 R 12-628 #13-660
BLDIMG 001162 R 12-580 12-583 12-586 12-589 #13-657
CCBGT 001360 RG 14-692 #15-777 22-1211 22-1220
CFRNOD 000500 RG 7-294 #8-374
CHKFLG 000160 RG #6-228
CHKULA 000000 RG #5-186
CLNLNK 002752 RG 21-1186 23-1295 23-1299 #25-1367
CL$ACK = 000040 17-965
CL$MFL = 000010 6-244 17-970 17-974
CL$SFL = 000004 6-238 17-967
CL$TYP = 000001 6-229 17-963
CL.MU1 = 000001 12-577 16-844
CL.MU2 = 000002 12-577 16-855
CL.RES = 177774 16-842
CNVIMA 001730 R 16-899 #16-925
CNVIMG 001724 R 16-847 16-850 16-853 16-858 #16-922
CONSM2 000722 RG #12-555
CONSM3 001076 R 12-570 12-573 #12-613
CTRES = ****** GX 15-779
C.BUF 000014 7-278 12-556 *14-698 *14-699 14-717 15-749 *15-750 15-751 16-813
*22-1213 *22-1222
C.BUF2 000024 18-1015
C.CNT 000020 *22-1214 *22-1226
C.CNT2 000030 18-1010 18-1012 *18-1013
C.LIN 000006 10-482 10-486 *22-1246 *23-1292 *25-1408
C.MOD 000011 *22-1251
C.NSP 000004 5-198 *22-1236 *23-1282
C.STS 000012 6-235 6-240 *22-1245 *23-1291
DF$FRE = 070000 8-380
DF$LCL = 040000 7-306
DF$REM = 010000 7-302 9-415
DISUSR 002310 RG #21-1174
DISUS0 002350 RG #22-1207
DISUS1 002356 RG 21-1182 21-1185 #22-1210
DISUS2 002624 R 21-1181 #23-1279
DISUS3 002730 R 21-1183 #23-1316
D$CHN 000002 7-310 7-318
D$LEN 000014 8-383
D$NAM 000006 16-817
ENTDIP 002740 RG 21-1177 #24-1332
ER$COM = 000047 21-1145
ER$FMT = 000005 12-590 16-868 19-1055
ER$ILS = 000043 17-979
ER$NOD = 000002 7-321
ER$RES = 000001 4-159 14-691 22-1232 22-1265
ER$UOB = 000004 16-865
GETBIN = ****** GX 16-823 16-894 16-896
GETDBK 001212 RG #14-691
GETEXB 002114 RG #19-1039
GETEX1 = ****** GX 16-840
NSPSBI CREATED BY MACRO ON 13-OCT-79 AT 10:12 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
GETEX2 002114 RG #19-1040
GETLDB 001326 RG #15-746
GETNNO 000242 RG #7-277
HALP = 000132 #20-1103 20-1115
HNGUSR 002266 RG #21-1142
HNUM = 000071 #20-1101 20-1111
KISAR6 = 172354 *15-749 *22-1247 *23-1293 *25-1409
LALP = 000101 #20-1102 20-1113
LF.HMF = 020000 17-976
LF.HSF = 010000 17-969
LF.INT = 000400 5-193 25-1377
LF.LCL = 040000 7-314
LF.MMF = 100000 6-243
LF.MSF = 040000 6-237
LF.RSU = 100000 22-1260 24-1333
LNUM = 000060 #20-1100 20-1109
L.DCR 000036 *21-1175 *22-1232 22-1236 *22-1265 23-1282
L.FLG 000012 *6-237 *6-243 *17-969 *17-976
L.LLA 000002 *4-144
L.LNG1 000054 4-128
L.LNO 000022 *4-148
L.NIN 000016 *4-146
L.NSTA 000025 *21-1144
L.NXN 000014 *4-145
L.PDV 000041 6-231 22-1241 23-1287 25-1383 25-1402
L.RNO 000020 *4-147
L.TIPI 000004 25-1372
L.UDQ 000034 25-1398
L.ULA 000040 5-198 22-1246 23-1292 25-1408
L.USTA 000024 *22-1234 *22-1259 *23-1280 *23-1316 25-1370
L.XQ1 000046 18-1005 *18-1006
M$$MGE = 000000 7-289 7-289 12-566 12-566 12-624 12-624 12-626 12-626 15-749
15-779 15-779 16-823 16-823 16-840 16-840 16-894 16-894 16-896
16-896 22-1247 22-1252 22-1252 22-1253 22-1253 23-1293 23-1298 23-1298
25-1388 25-1388 25-1394 25-1394 25-1409 25-1416 25-1416 25-1419 25-1419
NC.FM2 = 000002 12-618
NDLNG 000450 RG 7-281 7-284 7-287 #7-348
NE.ABO = 177776 22-1238 23-1284
NE.DIS = 177777 22-1235
NE.REJ = 177775 23-1281
NS.SUC = 000001 25-1415
NT$DIS = 000010 22-1251
NT.MFL = 000002 6-240
NT.SFL = 000001 6-235
NWNOD 000550 RG #9-411
N$ICF 000006 7-298
N$LNI 000010 7-308
N$LVC 000022 11-524
N$NOD 000032 8-377
N$PLD 000026 10-496
N$STS 000042 4-151
N$$DIS = 000020 22-1223 22-1225
NSPSBI CREATED BY MACRO ON 13-OCT-79 AT 10:12 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
N$$ICF = 000001 3-1 3-2 5-191 7-293 8-372 25-1375
N$$LV2 = ****** 4-125 24-1335
N$$OVR = 000042 12-560 16-825
N$$SYS = 000001 3-83 6-230 6-234 22-1240 22-1250 23-1286 23-1297 25-1382 25-1387
25-1401 25-1414
N$$USR = 000001 3-83 6-230 22-1240 23-1286 25-1382 25-1392 25-1401 25-1407
N.ACTL 000114 12-585 16-852
N.DFMT 000010 12-569 16-832
N.DOBJ 000011 16-862
N.LGTH = 000160 14-695 14-718
N.OPDL 000136 12-588 16-857
N.PASL 000102 12-582 16-849
N.RQDL 000060 12-579 16-846
N.SEG 000006 12-561 *16-829
N.SFMT 000034 12-572 16-835
PD$NSP = ****** GX 7-289 12-566 12-624 12-626 15-779 16-823 16-840 16-894 16-896
22-1252 22-1253 23-1298 25-1388 25-1394 25-1416 25-1419
PROCI 001400 RG #16-812
PRONAM 001640 R 16-833 16-836 #16-884
PSTUSR = ****** GX 22-1252
PS$UP = 000005 7-300 7-312 7-318
PUTBIN = ****** GX 12-566 12-624 12-626
P$LEN 000014 10-487
REMLNK = ****** GX 25-1419
REMSYS = ****** GX 22-1253 25-1388
REMUSR = ****** GX 25-1394
RETUSR = ****** GX 23-1298 25-1416
RLSDBK 001266 RG #14-715
RSX11D = ****** 7-289 7-289 12-566 12-566 12-624 12-624 12-626 12-626 15-779
15-779 16-823 16-823 16-840 16-840 16-894 16-894 16-896 16-896
22-1252 22-1252 22-1253 22-1253 23-1298 23-1298 25-1388 25-1388 25-1394
25-1394 25-1416 25-1416 25-1419 25-1419
R$$EIS = ****** 10-489
SETFLG 001754 RG #17-963
SKPEXB 002204 RG 19-1054 #19-1067 19-1069
SRNOD = ****** GX 7-289
STLN0 000644 RG #10-485
STLVC 000702 RG 4-116 5-186 #11-523
STPLD 000634 RG 9-412 #10-481
ST$DID = 000015 21-1144 25-1370
ST$DIP = 000006 24-1332 25-1368
ST$DIR = 000012 22-1234 23-1316
ST$UDI = 000013 23-1280 25-1370
ST$UNR = 000011 22-1259
S$LNK 000022 *4-152 4-153 4-155
S$MLK 000024 4-153 *4-155
UCRDAT 002042 RG #18-1005 23-1279
UISAR6 = 177654 22-1247 23-1293 25-1409
VERASC 002212 RG #20-1105
$ALOCB = ****** GX 4-131 14-696
$CALLX = ****** GX 7-289 12-566 12-624 12-626 15-779 16-823 16-840 16-894 16-896
22-1252 22-1253 23-1298 25-1388 25-1394 25-1416 25-1419
NSPSBI CREATED BY MACRO ON 13-OCT-79 AT 10:12 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
$CCBGT = ****** GX 15-777
$CCBRT = ****** GX 14-720
$DEACB = ****** GX 14-719
$ENCOD = ****** GX 4-142 *4-143
$HOST = ****** GX 7-283
$LDBGT = ****** GX 15-746
$MPOBJ = ****** GX 16-863
$MUL = ****** GX 10-492
$NSADB = ****** GX 4-150 7-280 8-376 10-495 11-523
$NTNAM = ****** GX 7-286
$QCRR = ****** GX 23-1294
$QDIC = ****** GX 25-1410
$QDIR = ****** GX 22-1248
$RDBSZ = ****** GX 12-559 16-824
$SAVRG = ****** GX 4-115 9-411 9-442 20-1105 21-1142 21-1174 22-1207 25-1367
NSPSBI CREATED BY MACRO ON 13-OCT-79 AT 10:12 PAGE 5
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
CALL 4-116 4-131 5-186 7-281 7-284 7-287 7-294 7-303 9-412 10-492
12-570 12-573 12-580 12-583 12-586 12-589 12-628 14-692 14-696 14-719
14-720 15-746 15-777 16-833 16-836 16-847 16-850 16-853 16-858 16-863
16-899 19-1054 21-1177 22-1211 22-1220 23-1279 23-1294 25-1410
CALLC #3-75 #7-289 #12-566 #12-624 #12-626 #15-779 #16-823 #16-840 #16-894 #16-896
#22-1252 #22-1253 #23-1298 #25-1388 #25-1394 #25-1416 #25-1419
CALLR #21-1179 #22-1248 #23-1295 #23-1299
CALLX #3-75 7-289 12-566 12-624 12-626 15-779 16-823 16-840 16-894 16-896
22-1252 22-1253 23-1298 25-1388 25-1394 25-1416 25-1419
CCBDF$ #3-78 3-79
HWDDF$ #15-749 15-749 #22-1247 22-1247 #23-1293 23-1293 #25-1409 25-1409
MAP #3-73 #15-749
NSPSY$ #3-78 #3-80
RECMAP #3-73 22-1247 23-1293 25-1409
RESMAP #3-73
RESRG #3-74 #7-322 #8-385 #12-591 #14-721 #16-869
RETURN #4-161 #5-205 #6-245 #7-323 #7-356 #8-386 #9-453 #10-500 #11-528 #12-592
#12-629 #13-668 #14-722 #15-752 #15-780 #16-870 #16-900 #16-933 #17-981 #18-1018
#19-1065 #19-1070 #20-1119 #22-1254 #22-1266 #23-1317 #24-1342 #25-1420
SAVMAP #3-73
SAVRG #3-74 #7-277 #8-374 #12-555 #14-691 #14-715 #16-812
SOB #4-121 #5-202 #7-352 #8-384 #9-452 #13-667 #16-932 #18-1017 #20-1118 #22-1228
$MVFBF #3-77
$MVTBF #3-77
$QDLC #3-76
$QLLC #3-76