Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/mcb/nspsba.lst
There are no other files named nspsba.lst in the archive.
NSPSBA MACRO M1110 13-OCT-79 10:17
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
NSPSBA MACRO M1110 13-OCT-79 10:17 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
NSPSBA MACRO M1110 13-OCT-79 10:17 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
NSPSBA MACRO M1110 13-OCT-79 10:17 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
NSPSBA MACRO M1110 13-OCT-79 10:17 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
NSPSBA MACRO M1110 13-OCT-79 10:17 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 001406 BEQ 20$ ; IF EQ, NO LLT - TRY NEXT ENTRY ;LW0002
190 ;**-1
191 .IF DF N$$ICF
192
193 BIT #LF.INT,(R0) ; INTERCEPT LINK ?
194 BNE 20$ ; IF NE, YES - TRY NEXT ENTRY ;LW0002
195 ;**-1
196 .ENDC
197
198 000012 026560 000004 000040 CMP C.NSP(R5),L.ULA(R0) ; IS THIS THE LINK WE WANT ?
199 000020 001002 BNE 20$ ; IF NE, NO - TRY NEXT ENTRY ;LW0002
200 000022 000241 CLC ; GOT IT.. ;LW0002
201 000024 000403 BR 100$ ; GO HOME ;LW0002
202 000026 20$: SOB R3,10$ ; TRY NEXT ENTRY IF THERE IS ONE ;LW0002
203 000032 000261 SEC ; (NOT) ;LW0002
204 000034 012603 100$: MOV (SP)+,R3 ; RECOVER R3 AND ;LW0002
205 000036 RETURN ; RETURN TO CALLER ;**-1
206
207 000160 .PSECT NSPSBA
NSPSBA MACRO M1110 13-OCT-79 10:17 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
NSPSBA MACRO M1110 13-OCT-79 10:17 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 103015 BCC 30$ ; IF CC, FOUND IT - EXIT
291 000322 005713 TST (R3) ; IS THE FREE ENTRY THE SCRATCH ENTRY ?
292 000324 100437 BMI 60$ ; IF MI, YES - CANNOT REACH DESTINATION
293 .IF DF N$$ICF ;AP0005
294 CALL CFRNOD ; COUNT THE FREE SPACES IN THE NODE NAME TABLE ;JS0001
295 CMP R2,#3 ; IS THERE PLENTY OF SPACE? ;JS0001
296 BLE 60$ ; IF LE, NO: DONT PERMIT THIS CONNECT ;JS0001
297 .ENDC ;AP0005
298 000326 016505 000006 MOV N$ICF(R5),R5 ; DOES ANY PHYSICAL LINK INTERCEPT FOR THIS NODE ?
299 000332 001434 BEQ 60$ ; IF EQ, NO - CANNOT REACH DESTINATION
300 000334 122715 000005 CMPB #PS$UP,(R5) ; LINK TO INTERCEPT AVAILABLE ?
301 000340 001031 BNE 60$ ; IF NE, NO - CANNOT REACH DESTINATION
302 000342 012702 010000 MOV #DF$REM,R2 ; SET FLAGS TO ADD A NEW NODE NAME
303 000346 CALL ADNOD ; ADD A NEW NODE TO THE DATA BASE
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 7-1
GETNNO - FIND DESTINATION NODE FOR A USER CONNECT
304 000352 000416 BR 45$ ; EXIT
305
306 000354 032713 040000 30$: BIT #DF$LCL,(R3) ; IS THE TARGET NODE THE LOCAL NODE ?
307 000360 001415 BEQ 50$ ; IF EQ, NO - CHECK IF PHYSICAL LINK IS AVAILABLE
308 000362 005765 000010 TST N$LNI(R5) ; IS LOOPBACK ENABLED FOR ANY PHYSICAL LINK ?
309 000366 001406 BEQ 40$ ; IF EQ, NO - DON'T BOTHER TO CHECK IF LINK IS UP
310 000370 016305 000002 MOV D$CHN(R3),R5 ; IS THERE ANY PHYSICAL LINK ?
311 000374 001403 BEQ 40$ ; IF EQ, NO - CHECK IF THIS IS THE LOCAL NODE
312 000376 122715 000005 CMPB #PS$UP,(R5) ; IS THE PHYSICAL LINK AVAILABLE ?
313 000402 001413 BEQ 70$ ; IF EQ, YES - USE IT (C-BIT CLEAR)
314 000404 052704 040000 40$: BIS #LF.LCL,R4 ; BUILD THE LINK INTERNALLY
315 000410 000241 45$: CLC ; INDICATE SUCCESS
316 000412 000407 BR 70$ ;
317
318 000414 122773 000005 000002 50$: CMPB #PS$UP,@D$CHN(R3) ; IS THE DESTINATION NODE REACHABLE ?
319 000422 001403 BEQ 70$ ; IF EQ, YES - USE THE PHYSICAL LINK
320 000424 000261 60$: SEC ; SET DESTINATION NODE CANNOT BE REACHED
321 000426 012701 000002 MOV #ER$NOD,R1 ; ...ERROR CODE
322 000432 70$: RESRG <R5> ; RESTORE R5
323 000434 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 000436 012703 000006 NDLNG:: MOV #6,R3 ; SET MAXIMUM LENGTH OF NODE NAME
349 000442 010001 MOV R0,R1 ; COPY THE POINTER TO THE NODE NAME
350 000444 122721 000040 10$: CMPB #' ,(R1)+ ; SCAN THE STRING FOR A SPACE CODE
351 000450 001403 BEQ 20$ ; IF EQ, FOUND THE END OF THE STRING
352 000452 SOB R3,10$ ; LOOP UNTIL DONE
353 000456 005201 INC R1 ; NEED AN EXTRA IF STRING IS SIX CHARACTERS
354 000460 160001 20$: SUB R0,R1 ; COMPUTE THE LENGTH OF THE NODE NAME
355 000462 005301 DEC R1 ; ...
356 000464 RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 CFRNOD::SAVRG <R3,R4> ;JS0001
375 CLR R2 ;INITIALIZE COUNT CELL ;JS0001
376 MOV $NSADB,R3 ;POINT TO NSP DATA BASE ;JS0001
377 ADD #N$NOD,R3 ;POINT TO NODE NAME TABLE DESCRIPTOR ;JS0001
378 MOV (R3)+,R4 ;NUMBER OF NODE NAME ENTRIES IN THE TABLE ;JS0001
379 MOV (R3),R3 ;ADDRESS OF TABLE ;JS0001
380 10$: BIT #DF$FRE,(R3) ;IS THIS ENTRY FREE? ;JS0001
381 BNE 20$ ;IF NE, NO. ;JS0001
382 INC R2 ;YES, COUNT ANOTHER FREE ENTRY ;JS0001
383 20$: ADD #D$LEN,R3 ;ADVANCE TO NEXT TABLE ENTRY ;JS0001
384 SOB R4,10$ ;CHECK EACH ENTRY ;JS0001
385 RESRG <R4,R3> ;JS0001
386 RETURN ;JS0001
387 .ENDC ;AP0005
388 ; ;JS0001
NSPSBA MACRO M1110 13-OCT-79 10:17 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 000466 004567 000000G NWNOD:: JSR R5,$SAVRG ; SAVE R5, R4, AND R3
412 000472 CALL STPLD ; COMPUTE PHYSICAL LINK DATA BASE ADDRESS
413 000476 112401 MOVB (R4)+,R1 ; GET THE LENGTH OF THE SOURCE NODE NAME
414 000500 010400 MOV R4,R0 ; SET THE POINTER TO THE NAME
415 000502 012702 010000 MOV #DF$REM,R2 ; SET THE FLAGS FOR A REMOTE NODE
416 000506 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 000510 004567 000000G ADNOD:: JSR R5,$SAVRG ; SAVE R5, R4, AND R3
443 000514 050223 10$: BIS R2,(R3)+ ; STORE THE NODE ENTRY FLAGS
444 000516 010523 MOV R5,(R3)+ ; STORE THE LINK BLOCK ADDRESS
445 000520 105723 TSTB (R3)+ ; SKIP OVER THE USE COUNT (CLEAR C-BIT)
446 000522 110123 MOVB R1,(R3)+ ; STORE THE NODE NAME LENGTH
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 9-1
ADNOD - ADD A NODE NAME TO THE DATA BASE
447 000524 010304 MOV R3,R4 ; COPY THE ADDRESS
448 000526 012724 020040 MOV #" ,(R4)+ ; INITIALIZE THE NODE NAME TO SPACES
449 000532 012724 020040 MOV #" ,(R4)+ ; ...
450 000536 012724 020040 MOV #" ,(R4)+ ; ...
451 000542 112023 20$: MOVB (R0)+,(R3)+ ; NOW MOVE IN THE NODE NAME
452 000544 SOB R1,20$ ; ...
453 000550 RETURN ; RETURN TO CALLER
454
455 .DSABL LSB
NSPSBA MACRO M1110 13-OCT-79 10:17 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 000552 005000 STPLD:: CLR R0 ; EXTRACT CHANNEL NUMBER FOR THE CCB
482 000554 156500 000006 BISB C.LIN(R5),R0 ; ...
483 000560 000403 BR 10$ ;
484
485 000562 005000 STLN0:: CLR R0 ; EXTRACT CHANNEL NUMBER FROM THE CCB
486 000564 156400 000006 BISB C.LIN(R4),R0 ; ...
487 000570 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 000574 CALL $MUL ; COMPUTE THE OFFSET INTO THE DATA BASE
493 .ENDC
494
495 000600 016705 000000G MOV $NSADB,R5 ; GET THE ADDRESS OF THE PHYSICAL LINK
496 000604 016505 000030 MOV N$PLD+2(R5),R5 ; ...DESCRIPTOR
497 000610 060105 ADD R1,R5 ; COMPUTE THE ADDRESS OF THE PHYSICAL LINK BLOCK
498 000612 010502 MOV R5,R2 ; COMPUTE THE ADDRESS OF THE RECOVERY CELL
499 000614 005722 TST (R2)+ ; ...
500 000616 RETURN ; RETURN TO CALLER
501
502 .DSABL LSB
NSPSBA MACRO M1110 13-OCT-79 10:17 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 000620 016704 000000G STLVC:: MOV $NSADB,R4 ; COMPUTE ADDRESS OF THE LOGICAL LINK DESCRIPTOR
524 000624 062704 000022 ADD #N$LVC,R4 ; ...
525 000630 012403 MOV (R4)+,R3 ; GET THE MAXIMUM NUMBER OF LINKS
526 000632 011404 MOV (R4),R4 ; GET THE ADDRESS OF THE LLT ADDRESS TABLE
527 000634 005724 TST (R4)+ ; SKIP OVER THE (UNUSED) FIRST ENTRY
528 000636 RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 000640 CONSM2::SAVRG <R0,R5> ; SAVE REGISTERS REQUIRED
556 000644 016500 000016 MOV C.BUF+2(R5),R0 ; GET THE ADDRESS OF THE DESCRIPTOR BLOCK
557
558 ; BUILD THE CORRECT SEGMENT SIZE
559 000650 016703 000000G MOV $RDBSZ,R3 ; COMPUTE OUR MAXIMUM SEGMENT SIZE
560 000654 162703 000042 SUB #N$$OVR,R3 ; ...
561 000660 016001 000006 MOV N.SEG(R0),R1 ; GET USER REQUESTED SIZE
562 000664 001402 BEQ 10$ ; IF EQ, USE OUR SEGMENT SISE
563 000666 020103 CMP R1,R3 ; DOES THE USER WANT LESS THAN THE MAXIMUM ?
564 000670 103401 BLO 20$ ; IF LO, YES - LET HIM HAVE IT
565 000672 010301 10$: MOV R3,R1 ; OTHERWISE USER OUR MAXIMUM SIZE
566 000674 20$: CALLC PUTBIN ; PUT SEGMENT SIZE IN THE MESSAGE
567
568 ; BUILD THE DESTINATION AND SOURCE DESRCIPTOR NAMES
569 000704 012705 010010 MOV #16.*400!N.DFMT,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
570 000710 CALL CONSM3 ; BUILD THE DESTINATION DESCIPTOR NAME
571 000714 103432 BCS 30$ ; IF CS, FIELD FORMAT ERROR
572 000716 012705 010034 MOV #16.*400!N.SFMT,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
573 000722 CALL CONSM3 ; BUILD THE SOURCE DESCRIPTOR NAME
574 000726 103425 BCS 30$ ; IF CS, FIELD FORMAT ERROR
575
576 ; BUILD THE ACCESS CONTROL FIELDS
577 000730 112724 000003 MOVB #CL.MU1!CL.MU2,(R4)+ ; SET ACCESS CONTROL AND USER DATA FIELDS
578 ; ARE PRESENT IN THE MESSAGE
579 000734 012705 010060 MOV #16.*400!N.RQDL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
580 000740 CALL BLDIMG ; BUILD THE REQUESTOR ID FIELD
581 000744 103416 BCS 30$ ; IF CS, FIELD FORMAT ERROR
582 000746 012705 004102 MOV #8.*400!N.PASL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
583 000752 CALL BLDIMG ; BUILD THE PASSWORD FIELD
584 000756 103411 BCS 30$ ; IF CS, FIELD FORMAT ERROR
585 000760 012705 010114 MOV #16.*400!N.ACTL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
586 000764 CALL BLDIMG ; BUILD THE ACCOUNT DATA FIELD
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 12-1
CONSM2
587 000770 103404 BCS 30$ ; IF CS, FIELD FORMAT ERROR
588 000772 012705 010136 MOV #16.*400!N.OPDL,R5 ; SET FIELD LENGTH AND OFFSET IN THE BLOCK
589 000776 CALL BLDIMG ; BUILD THE USER DATA FIELD
590 001002 012701 000005 30$: MOV #ER$FMT,R1 ; ASSUME A FIELD FORMAT ERROR
591 001006 RESRG <R5,R0> ; RESTORE THE REGISTERS
592 001012 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 001014 110502 CONSM3: MOVB R5,R2 ; COMPUTE THE ADDERSS IN DESCRIPTOR BLOCK
614 001016 060002 ADD R0,R2 ; ...
615 001020 112201 MOVB (R2)+,R1 ; GET THE FORMAT TYPE CODE
616 001022 110124 MOVB R1,(R4)+ ; STORE IN THE MESSAGE
617 001024 112224 MOVB (R2)+,(R4)+ ; STORE THE OBJECT TYPE CODE
618 001026 022701 000002 CMP #NC.FM2,R1 ; IS THE FORMAT TYPE WITHIN RANGE ?
619 001032 103421 BLO 20$ ; IF LO, NO - ERROR (C-BIT SET)
620 001034 005301 DEC R1 ; WHICH FORMAT IS IT ?
621 001036 100417 BMI 20$ ; IF MI, FORMAT TYPE 0 - ALL DONE
622 001040 001414 BEQ 10$ ; IF EQ, FORMAT TYPE 1 - JUST MOVE THE DATA
623 001042 012201 MOV (R2)+,R1 ; OTHERWISE, FORMAT TYPE 2 - GET GROUP CODE
624 001044 CALLC PUTBIN ; STORE IN THE MESSAGE
625 001054 012201 MOV (R2)+,R1 ; GET THE USER CODE
626 001056 CALLC PUTBIN ; STORE IN THE MESSAGE
627 001066 162705 002000 SUB #4*400,R5 ; REDUCE THE FIELD SIZE APPROPRIATELY
628 001072 10$: CALL BLDIMA ; BUILD THE REST OF THE DESCRIPTOR NAME FIELD
629 001076 20$: RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 001100 110502 BLDIMG: MOVB R5,R2 ; COMPUTE THE ADDRESS IN THE DESCRIPTOR BLOCK
658 001102 060002 ADD R0,R2 ; ...
659
660 001104 000305 BLDIMA: SWAB R5 ; GET MAXIMUM FIELD LENGTH IN THE LOW BYTE
661 001106 120512 CMPB R5,(R2) ; IS THE LENGTH WITHIN RANGE ?
662 001110 103406 BLO 20$ ; IF LO, NO - ERROR (C-BIT SET)
663 001112 111224 MOVB (R2),(R4)+ ; STORE THE IMAGE FIELD LENGTH IN THE MESSAGE
664 001114 012203 MOV (R2)+,R3 ; GET THE FIELD LENGTH
665 001116 001403 BEQ 20$ ; IF EQ, ALL DONE WITH THIS FIELD
666 001120 112224 10$: MOVB (R2)+,(R4)+ ; MOVE THE DATA
667 001122 SOB R3,10$ ; LOOP UNTIL DONE
668 001126 20$: RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 001130 GETDBK::SAVRG <R0,#ER$RES,R4> ; SAVE REGISTERS AND ASSUME A RESOURCE ERROR
692 001140 CALL CCBGT ; ALLOCATE A CCB
693 001144 103433 BCS 30$ ; IF CS, ALLOCATION FAILURE
694 001146 010405 MOV R4,R5 ; COPY CCB ADDRESS
695 001150 012701 000160 MOV #N.LGTH,R1 ; SET LENGTH OF DESRCIPTOR BLOCK TO ALLOCATE
696 001154 CALL $ALOCB ; ALLOCATE THE BLOCK
697 001160 103423 BCS 20$ ; IF CS, ALLOCATION ERROR
698 001162 005065 000014 CLR C.BUF(R5) ; ZERO RELOCATION BIAS
699 001166 010065 000016 MOV R0,C.BUF+2(R5) ; STORE DESCRIPTOR BLOCK ADDRESS
700 001172 060001 ADD R0,R1 ; POINT TO ADDRESS BEYOND LAST CELL
701 001174 005041 10$: CLR -(R1) ; CLEAR ALL CELLS
702 001176 020001 CMP R0,R1 ; BACK TO THE BEGINNING YET ?
703 001200 001375 BNE 10$ ; IF NE, NO - KEEP GOING
704 001202 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 001204 RLSDBK::SAVRG <R0,R1,R4> ; SAVE THE REGISTERS
716 001212 010504 MOV R5,R4 ; SWAP REGISTERS
717 001214 016500 000016 MOV C.BUF+2(R5),R0 ; GET ADDRESS OF DESCRIPTOR BLOCK
718 001220 012701 000160 MOV #N.LGTH,R1 ; SET LENGTH OF THE DESCRIPTOR BLOCK
719 001224 CALL $DEACB ; DEALLOCATE THE BLOCK
720 001230 20$: CALL $CCBRT ; DEALLOCATE THE CCB
721 001234 30$: RESRG <R4,R1,R0> ; RESTORE REGISTERS
722 001242 RETURN ; RETURN TO CALLER
723
724 .DSABL LSB
NSPSBA MACRO M1110 13-OCT-79 10:17 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 001244 GETLDB::CALL $LDBGT ; ALLOCATE A LARGE DATA BUFFER
747 001250 103415 BCS 10$ ; IF CS, ALLOCATION ERROR
748 001252 010405 MOV R4,R5 ; COPY ADDRESS OF CCB
749 001254 MAP C.BUF(R5) ; MAP TO THE DATA AREA
750 001262 062765 000020 000016 ADD #16.,C.BUF+2(R5) ; LEAVE ENOUGH ROOM FOR A ROUTE HEADER
751 001270 016504 000016 MOV C.BUF+2(R5),R4 ; GET THE VIRTUAL ADDRESS OF THE DATA AREA
752 001274 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 001276 CCBGT:: CALL $CCBGT ; ALLOCATE A CCB FROM THE COMM EXEC
778 001302 103004 BCC 20$ ; IF CC, NO ERROR - JUST RETURN
779 001304 10$: CALLC CTRES ; COUNT THE RESOURCE ERROR (SETS C-BIT)
780 001314 20$: RETURN ; RETURN TO CALLER
781
782 .DSABL LSB
NSPSBA MACRO M1110 13-OCT-79 10:17 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 001316 PROCI:: SAVRG <R0,R5> ; SAVE R0 AND R5
813 001322 016500 000016 MOV C.BUF+2(R5),R0 ; GET ADDRESS OF DESCRIPTOR BLOCK
814
815 ; SET UP SOURCE NODE NAME
816 001326 010002 MOV R0,R2 ; SET OUTPUT ADDRESS
817 001330 062703 000006 ADD #D$NAM,R3 ; POINT TO THE NODE NAME
818 001334 012322 MOV (R3)+,(R2)+ ; THE NODE NAME IS STORED PADDED WITH
819 001336 012322 MOV (R3)+,(R2)+ ; ...SPACES, AND IS WORD ALIGNED
820 001340 012322 MOV (R3)+,(R2)+ ; ...
821
822 ; SET UP CORRECT SEGMENT SIZE
823 001342 CALLC GETBIN ; GET THE SEGMENT SIZE
824 001352 016746 000000G MOV $RDBSZ,-(SP) ; COMPUTE OUR MAXIMUM SEGMENT SIZE
825 001356 162716 000042 SUB #N$$OVR,(SP) ; ...
826 001362 020116 CMP R1,(SP) ; SELECT THE SMALLER OF THE TWO VALUES
827 001364 101001 BHI 20$ ; IF HI, USE OUR SEGMENT SIZE
828 001366 010116 MOV R1,(SP) ; OTHERWISE USE THE ONE RECEIVED
829 001370 012660 000006 20$: MOV (SP)+,N.SEG(R0) ; STORE RESULTS IN THE DESCRIPTOR BLOCK
830
831 ; SET UP DESTINATION AND SOURCE PROCESS NAMES
832 001374 012705 010010 MOV #16.*400!N.DFMT,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
833 001400 CALL PRONAM ; CONVERT AND STORE THE DESTINATION PROCESS NAME
834 001404 103457 BCS 50$ ; IF CS, FIELD FORMAT ERROR
835 001406 012705 010034 MOV #16.*400!N.SFMT,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
836 001412 CALL PRONAM ; CONVERT AND STORE TO SOURCE PROCESS NAME
837 001416 103452 BCS 50$ ; IF CS, FIELD FORMAT ERROR
838
839 ; PROCESS ACCESS CONTROL AND USER DATA FIELDS
840 001420 CALLC GETEX1 ; GET THE MENU FIELD FLAGS
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 16-1
PROCI
841 001430 103445 BCS 50$ ; IF CS, FIELD FORMAT ERROR
842 001432 032701 177774 BIT #CL.RES,R1 ; ARE ANY OF THE RESERVED BITS SET ?
843 001436 001042 BNE 50$ ; IF NE, YES - FIELD FORMAT ERROR
844 001440 032701 000001 BIT #CL.MU1,R1 ; ARE RQSTID, PASSWD, ACCNT FIELDS PRESENT ?
845 001444 001417 BEQ 30$ ; IF EQ, NO - DON'T ATTEMPT TO PROCESS IMAGE FIELDS
846 001446 012705 010060 MOV #16.*400!N.RQDL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
847 001452 CALL CNVIMG ; CONVERT AND STORE REQUESTOR ID FIELD
848 001456 103432 BCS 50$ ; IF CS, FIELD FORMAT ERROR
849 001460 012705 004102 MOV #8.*400!N.PASL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
850 001464 CALL CNVIMG ; CONVERT AND STORE THE PASSWORD
851 001470 103425 BCS 50$ ; IF CS, FIELD FORMAT ERROR
852 001472 012705 010114 MOV #16.*400!N.ACTL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
853 001476 CALL CNVIMG ; CONVERT AND STORE THE ACCOUNT DATA
854 001502 103420 BCS 50$ ; IF CS, FIELD FORMAT ERROR
855 001504 032701 000002 30$: BIT #CL.MU2,R1 ; IS THERE A USER DATA FIELD ?
856 001510 001405 BEQ 40$ ; IF EQ, NO - DON'T ATTEMPT TO PROCESS THE IMAGE FIELD
857 001512 012705 010136 MOV #16.*400!N.OPDL,R5 ; SET FIELD LENGTH AND OFFSET IN BLOCK
858 001516 CALL CNVIMG ; CONVERT AND STORE THE USER DATA
859 001522 103410 BCS 50$ ; IF CS, FIELD FORMAT ERROR
860
861 ; GET THE PDV INDEX OF THE DESTINATION PROCESS
862 001524 116001 000011 40$: MOVB N.DOBJ(R0),R1 ; GET THE DESTINATION OBJSET TYPE
863 001530 CALL $MPOBJ ; MAP OBJECT TO A PDV INDEX
864 001534 103005 BCC 60$ ; IF CC, OBJECT TYPE EXISTS
865 001536 012701 000004 MOV #ER$UOB,R1 ; OTHERWISE SET THE ERROR CODE
866 001542 000402 BR 60$ ;
867
868 001544 012701 000005 50$: MOV #ER$FMT,R1 ; SET THE FIELD FORMAT ERROR CODE
869 001550 60$: RESRG <R5,R0> ; RESTORE THE REGISTERS
870 001554 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 001556 110502 PRONAM: MOVB R5,R2 ; COMPUTE ADDRESS IN DESCRIPTOR BLOCK
885 001560 060002 ADD R0,R2 ; ...
886 001562 112401 MOVB (R4)+,R1 ; GET THE FORMAT TYPE CODE
887 001564 110122 MOVB R1,(R2)+ ; STORE IT IN THE DESCIPTOR BLOCK
888 001566 112422 MOVB (R4)+,(R2)+ ; STORE THE OBJECT TYPE IN THE DESCIPTOR BLOCK
889 001570 022701 000002 CMP #2,R1 ; CHECK IF THE TYPE CODE IS IN RANGE
890 001574 103421 BLO 20$ ; IF LO, NO - FIELD FORMAT ERROR (C-BIT SET)
891 001576 005301 DEC R1 ; DECIDE WHICH FORMAT
892 001600 100417 BMI 20$ ; IF MI, FORMAT TYPE 0 - ALL DONE
893 001602 001414 BEQ 10$ ; IF EQ, FORMAT TYPE 1 - JUST MOVE THE DATA
894 001604 CALLC GETBIN ; OTHERWISE, FORMAT TYPE 2 - GET GROUP CODE
895 001614 010122 MOV R1,(R2)+ ; AND STORE IN THE DESCIPTOR BLOCK
896 001616 CALLC GETBIN ; GET THE USER CODE
897 001626 010122 MOV R1,(R2)+ ; AND STORE IT ALSO
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 16-2
PROCI
898 001630 162705 002000 SUB #4.*400,R5 ; REDUCE THE MAXIMUM FIELD SIZE APPROPRIATELY
899 001634 10$: CALL CNVIMA ; CONVERT AND STORE PROCESS NAME
900 001640 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 001642 110502 CNVIMG: MOVB R5,R2 ; COMPUTE THE ADDRESS IN THE DECRIPTOR BLOCK
923 001644 060002 ADD R0,R2 ; ...
924
925 001646 112403 CNVIMA: MOVB (R4)+,R3 ; GET THE LENGTH OF THE IMAGE FIELD
926 001650 000305 SWAB R5 ; GET THE MAXIMUM FIELD LENGTH
927 001652 120503 CMPB R5,R3 ; IS THE FIELD TOO LONG ?
928 001654 103405 BLO 20$ ; IF LO, YES - ERROR (C-BIT SET)
929 001656 010322 MOV R3,(R2)+ ; STORE OUTPUT FIELD LENGTH AS A WORD
930 001660 001403 BEQ 20$ ; IF EQ, END OF THE FIELD (C-BIT CLEAR)
931 001662 112422 10$: MOVB (R4)+,(R2)+ ; MOVE THE DATA FROM THE MESSAGE TO THE DESCIPTOR BLOCK
932 001664 SOB R3,10$ ; LOOP UNTIL DONE
933 001670 20$: RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 001672 032701 000001 SETFLG::BIT #CL$TYP,R1 ; IS THIS A SINGLE MESSAGE?
964 001676 001424 BEQ 20$ ; YES..WE DON'T SUPPORT THIS SERVICE
965 001700 032701 000040 BIT #CL$ACK,R1 ; REMOTE USER WANT MESSAGE ACKING?
966 001704 001021 BNE 20$ ; YES..WE DON'T SUPPORT THAT SERVICE
967 001706 032701 000004 BIT #CL$SFL,R1 ; REMOTE USER WANT SEGMENT FLOW CONTROL?
968 001712 001407 BEQ 10$ ; NO
969 001714 052760 010000 000012 BIS #LF.HSF,L.FLG(R0) ; REMOTE USER IS SEGMENT FLOW CONTROLLED
970 001722 032701 000010 BIT #CL$MFL,R1 ; IS HE ALSO ASKING TO BE MESSAGE FLOW CONTROLLED?
971 001726 001010 BNE 20$ ; YES..CANNOT REQUEST BOTH FUNCTIONS
972 001730 000412 BR 30$
973
974 001732 032701 000010 10$: BIT #CL$MFL,R1 ; REMOTE USER WANT TO BE MESSAGE FLOW CONTROLLED?
975 001736 001407 BEQ 30$ ; NO..THIS LINK IS NON-FLOW CONTROLLED
976 001740 052760 020000 000012 BIS #LF.HMF,L.FLG(R0) ; REMOTE USER IS MESSAGE FLOW CONTROLLED
977 001746 000403 BR 30$
978
979 001750 012701 000043 20$: MOV #ER$ILS,R1 ; INVALID SERVICES REQUEST
980 001754 000261 SEC ;
981 001756 30$: RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 001760 016005 000046 UCRDAT::MOV L.XQ1(R0),R5 ; DEQUEUE CONNECT REQUEST CCB
1006 001764 005060 000046 CLR L.XQ1(R0) ; ...
1007 001770 010403 MOV R4,R3 ; IS THERE A POINTER TO A COUNT FIELD ?
1008 001772 001406 BEQ 10$ ; IF EQ, NO USER DATA - CLEAR C.CNT2 AND EXIT
1009 001774 112403 MOVB (R4)+,R3 ; GET LENGTH OF THE USER DATA
1010 001776 026503 000030 CMP C.CNT2(R5),R3 ; IS THE USER BUFFER LARGE ENOUGH ?
1011 002002 103002 BHIS 10$ ; IF HIS, YES - USE RECEIVED LENGTH
1012 002004 016503 000030 MOV C.CNT2(R5),R3 ; OTHERWISE TRUNCATE TO USER BUFFER SIZE
1013 002010 010365 000030 10$: MOV R3,C.CNT2(R5) ; ...AND STORE IT IN THE CCB
1014 002014 001405 BEQ 30$ ; IF EQ, NO USER DATA - JUST EXIT
1015 002016 016502 000026 MOV C.BUF2+2(R5),R2 ; GET THE ADDRESS OF THE USER BUFFER
1016 002022 112422 20$: MOVB (R4)+,(R2)+ ; ...AND MOVE THE DATA
1017 002024 SOB R3,20$ ; ...
1018 002030 30$: RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 002032 GETEXB::
1040 002032 GETEX2::
1041 002032 005001 CLR R1 ;CLEAR RESULT AND SCRATCH LOC
1042 002034 005046 CLR -(SP)
1043 002036 152401 BISB (R4)+,R1 ;DATA <0:6>-> LOW BYTE R1
1044 002040 100026 BPL 10$ ;DONE IF POSITIVE
1045 002042 106101 ROLB R1 ;DATA IN R1 <1:7>
1046 002044 000301 SWAB R1 ;DATA IN R1 <9:15>
1047 002046 152401 BISB (R4)+,R1 ;DATA <7:13> INTO R1 <0:6>
1048 002050 000301 SWAB R1 ;DATA IN R1 <1:7> AND <8:14>
1049 002052 006201 ASR R1 ;DATA IN R1 <0:7> AND <8:13>
1050 002054 100020 BPL 10$ ;DONE IN NO EXTENSION WAS ON
1051 002056 042701 140000 BIC #140000,R1 ;2 MORE BITS CLEAR THEIR POSITON
1052 002062 152416 BISB (R4)+,(SP) ;BITS (14,15) TO (SP)
1053 002064 100006 BPL 5$ ;MORE?
1054 002066 CALL SKPEXB ;YES, CANT HANDLE THAT
1055 002072 012701 000005 MOV #ER$FMT,R1 ;SET FORMAT ERROR CODE
1056 002076 005126 COM (SP)+ ;SET C, POP STACK
1057 002100 000407 BR 15$ ;DONE
1058
1059 002102 000003 5$: .REPT 3 ;PUT (14,15) INTO THAT POSITION
1060 ROR (SP)
1061 .ENDR
1062 002110 042716 037777 BIC #^C<140000>,(SP) ;MASK OUT ALL BUT (14,15)
1063 002114 051601 BIS (SP),R1 ;AND PUT IT INTO R1
1064 002116 005726 10$: TST (SP)+ ;CLEAR STACK AND C-BIT
1065 002120 15$: RETURN ;RETURN
1066
1067 002122 SKPEXB::
1068 002122 105724 TSTB (R4)+ ;SKIP TO 1 PAST FIRST NON-
1069 002124 100776 BMI SKPEXB ;EXTENSIBLE FIELD
1070 002126 RETURN ;RETURN C-BIT CLEAR
NSPSBA MACRO M1110 13-OCT-79 10:17 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 002130 004567 000000G VERASC::JSR R5,$SAVRG ; SAVE R5, R4, AND R3
1106 002134 112403 MOVB (R4)+,R3 ; GET THE LENGTH OF THE NODE NAME
1107 002136 122703 000006 CMPB #6,R3 ; IS THE LENGTH WITHIN RANGE ?
1108 002142 103417 BLO 30$ ; IF LO, NO - ERROR
1109 002144 121427 000060 10$: CMPB (R4),#LNUM ; CHAR LESS THAN ZERO ?
1110 002150 103414 BLO 30$ ; YES..INVALID CHAR
1111 002152 122714 000071 CMPB #HNUM,(R4) ; CHAR PART OF NUMERIC SET ?
1112 002156 103006 BHIS 20$ ; YES..VALID ASCII NUMERIC
1113 002160 121427 000101 CMPB (R4),#LALP ; CHAR FALL BELOW ALPHA RANGE ?
1114 002164 103406 BLO 30$ ; YES..INVALID CHAR
1115 002166 122714 000132 CMPB #HALP,(R4) ; CHAR FIT IN ALPHA SET ?
1116 002172 103403 BLO 30$ ; NO..INVALID CHAR
1117 002174 105724 20$: TSTB (R4)+ ; UPDATE MESSAGE PTR TO NEXT CHAR (CLEAR C-BIT)
1118 002176 SOB R3,10$ ; TEST ALL CHARACTERS
1119 002202 30$: RETURN ; RETURN WITH C-BIT
NSPSBA MACRO M1110 13-OCT-79 10:17 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 002204 004567 000000G HNGUSR::JSR R5,$SAVRG ; SAVE R5, R4, AND R3
1143 002210 005004 CLR R4 ; INDICATE THAT THERE IS NO USER DATA
1144 002212 112760 000015 000025 MOVB #ST$DID,L.NSTA(R0) ; NO MORE ACTIVITY WITH THE NETWORK
1145 002220 012703 000047 MOV #ER$COM,R3 ; ERROR CODE FOR COMMUNICATIONS FAILURE
1146 002224 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 002226 004567 000000G DISUSR::JSR R5,$SAVRG ; SAVE R5, R4, AND R3
1175 002232 010360 000036 10$: MOV R3,L.DCR(R0) ; SAVE DISCONNECT REASON CODE IN THE LINK TABLE
1176 002236 111001 MOVB (R0),R1 ; GET THE CURRENT LINK STATE (ENTDIP MODIFIES IT)
1177 002240 CALL ENTDIP ; SET MAJOR DISCONNECT STATE FOR LINK (ST$DIP)
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 21-1
DISUSR
1178 002244 006301 ASL R1 ; MAKE STATE A WORD INDEX
1179 002246 CALLR @20$-2(R1) ; ...AND DISPATCH ON IT
1180
1181 002252 002542' 20$: .WORD DISUS2 ; SERVICE ROUTINE FOR STATE ST$CIS
1182 002254 002274' .WORD DISUS1 ; ST$CC
1183 002256 002646' .WORD DISUS3 ; ST$CIR
1184 002260 177777 .WORD -1 ; UNUSED STATE
1185 002262 002274' .WORD DISUS1 ; ST$DAT
1186 002264 002670' .WORD CLNLNK ; ST$DIP
1187
1188 .DSABL LSB
NSPSBA MACRO M1110 13-OCT-79 10:17 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 002266 004567 000000G DISUS0::JSR R5,$SAVRG ; SAVE REGISTERS (R5, R4, & R3)
1208 002272 005004 CLR R4 ; INDICATE NO USER DATA POSSIBLE
1209
1210 002274 010402 DISUS1::MOV R4,R2 ; COPY MESSAGE POINTER
1211 002276 CALL CCBGT ; ALLOCATE A CCB
1212 002302 103502 BCS 60$ ; IF CS, ALLOCATION FAILURE - SET UP RECOVERY
1213 002304 005064 000016 CLR C.BUF+2(R4) ; INITIALIZE THE BUFFER POINTER AND THE
1214 002310 005064 000020 CLR C.CNT(R4) ; ...COUNT FIELDS
1215 002314 005702 TST R2 ; IS THERE A POINTER TO A DATA COUNT ?
1216 002316 001427 BEQ 40$ ; IF EQ, NO - NO USER DATA
1217 002320 112203 MOVB (R2)+,R3 ; GET THE COUNT OF THE USER DATA
1218 002322 001425 BEQ 40$ ; IF EQ, NO USER DATA
1219 002324 010401 MOV R4,R1 ; COPY THE ADDRESS OF THE CCB
1220 002326 CALL CCBGT ; ALLOCATE ANOTHER CCB
1221 002332 103415 BCS 30$ ; IF CS, ALLOCATION FAILURE - NO DATA WILL BE MOVED
1222 002334 010164 000016 MOV R1,C.BUF+2(R4) ; STORE THE ADDRESS OF THE FIRST CCB IN THE SECOND
1223 002340 022703 000020 CMP #N$$DIS,R3 ; IS THE RECEIVED DATA LENGTH WITHIN RANGE ?
1224 002344 103002 BHIS 10$ ; IF HIS, YES - USE THE RECEIVED LENGTH
1225 002346 012703 000020 MOV #N$$DIS,R3 ; SET THE MAXIMUM LENGTH AS THE COUNT
1226 002352 010364 000020 10$: MOV R3,C.CNT(R4) ; STORE THE COUNT IN THE CCB
1227 002356 112221 20$: MOVB (R2)+,(R1)+ ; MOVE THE USER DATA
1228 002360 SOB R3,20$ ; ...
1229 002364 000404 BR 40$ ;
1230
1231 002366 010104 30$: MOV R1,R4 ; RECOVER THE ADDRESS OF THE FIRST CCB
1232 002370 012760 000001 000036 MOV #ER$RES,L.DCR(R0) ; CHANGE THE REASON TO RESOURCE ERROR
1233 002376 010405 40$: MOV R4,R5 ; COPY ADDRESS OF CCB
1234 002400 112760 000012 000024 MOVB #ST$DIR,L.USTA(R0) ; SET LINK SUBSTATE TO USER NOTIFIED
1235 002406 012704 177777 MOV #NE.DIS,R4 ; ASSUME SYNCHRONOUS DISCONNECT
1236 002412 016065 000036 000004 MOV L.DCR(R0),C.NSP(R5) ; STORE DISCONNECT REASON CODE
1237 002420 001402 BEQ 50$ ; IF EQ, ASSUMPTION IS CORRECT
1238 002422 012704 177776 MOV #NE.ABO,R4 ; OTHERWISE SET ABORT COMPLETION STATUS
1239 002426 50$: ;LW0003
1240 .IF DF N$$SYS&N$$USR ;LW0003
1241 002426 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE? ;LW0003
1242 002432 001012 BNE 55$ ; SYSTEM ;LW0003
1243 .ENDC ;LW0003
1244 ;LW0003
1245 002434 010465 000012 MOV R4,C.STS(R5) ; STORE STATUS IN THE CCB ;LW0003
1246 002440 016065 000040 000006 MOV L.ULA(R0),C.LIN(R5) ; STORE USER LINK ADDRESS ;**-1
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 22-1
DISUS0,DISUS0
1247 002446 RECMAP ; RESTORE PROPER ACP MAPPING
1248 002454 CALLR $QDIR ; NOTIFY THE USER FO THE DISCONNECT
1249 ;LW0003
1250 .IF DF N$$SYS ;LW0003
1251 002460 112765 000010 000011 55$: MOVB #NT$DIS,C.MOD(R5) ; SET SUBFUNCTION CODE ;LW0003
1252 002466 CALLC PSTUSR ; NOTIFY THE SYSTEM USER OF THE DISCONNECT ;LW0003
1253 002476 CALLC REMSYS ; AND TRY TO FLUSH THE TRANSMIT QUEUES. ;AP0004
1254 002506 RETURN ;LW0003
1255 .ENDC ;LW0003
1256 ;
1257 ; ALLOCATION FAILURE PREVENTS NOTIFICATION OF THE DISCONNECT
1258 ;
1259 002510 112760 000011 000024 60$: MOVB #ST$UNR,L.USTA(R0) ; SETUP THE RECOVERY SUBSTATE
1260 002516 052710 100000 BIS #LF.RSU,(R0) ; SET RECOVERY STATUS REQUIRED
1261 002522 005702 TST R2 ; THERE IS NO NEED TO CHANGE THE DISCONNECT
1262 002524 001405 BEQ 70$ ; ...REASON CODE UNLESS THERE IS USER DATA
1263 002526 105722 TSTB (R2)+ ; ...IN THE MESSAGE
1264 002530 001403 BEQ 70$ ; IF EQ, NO - JUST EXIT ADN WAIT FOR RECOVERY
1265 002532 012760 000001 000036 MOV #ER$RES,L.DCR(R0) ; OTHERWISE SET ABORT DUE TO RESOURCE ERROR
1266 002540 70$: RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 002542 DISUS2: CALL UCRDAT ; DEQUEUE CONNECT REQUEST AND COPY USER DATA
1280 002546 112760 000013 000024 MOVB #ST$UDI,L.USTA(R0) ; SET SUBSTATE TO DONE WITH THE USER
1281 002554 012704 177775 MOV #NE.REJ,R4 ; ASSUME CONNECT REJECT BY THE OTHER USER
1282 002560 016065 000036 000004 MOV L.DCR(R0),C.NSP(R5) ; STORE DISCONNECT REASON CODE
1283 002566 001402 BEQ 10$ ; IF EQ, ASSUMPTION IS CORRECT
1284 002570 012704 177776 MOV #NE.ABO,R4 ; OTHERWISE SET ABORT STATUS
1285 002574 10$: ;LW0003
1286 .IF DF N$$SYS&N$$USR ;LW0003
1287 002574 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE? ;LW0003
1288 002600 001014 BNE 20$ ; SYSTEM ;LW0003
1289 .ENDC ;LW0003
1290 ;LW0003
1291 002602 010465 000012 MOV R4,C.STS(R5) ; STORE ABORT STATUS IN THE CONNECT CCB ;LW0003
1292 002606 016065 000040 000006 MOV L.ULA(R0),C.LIN(R5) ; SETUP THE USER LINK ADDRESS ;**-1
1293 002614 RECMAP ; RESTORE PROPER ACP MAPPING
1294 002622 CALL $QCRR ; CALL USER INTERFACE FOR CONNECT REJECT
1295 002626 CALLR CLNLNK ; ATTEMPT TO REMOVE THE LOGICAL LINK
1296 ;LW0003
1297 .IF DF N$$SYS ;LW0003
1298 002632 20$: CALLC RETUSR ; SEND CONNECT CCB TO USER ;LW0003
1299 002642 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 002646 112760 000012 000024 DISUS3: MOVB #ST$DIR,L.USTA(R0) ; SET SUBSTATE TO USER DISCONNECT STARTED
1317 002654 RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 002656 112710 000006 ENTDIP::MOVB #ST$DIP,(R0) ; LINK IS BEING DISCONNECTED
1333 002662 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 002666 RETURN ; RETURN TO CALLER
NSPSBA MACRO M1110 13-OCT-79 10:17 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 002670 004567 000000G CLNLNK::JSR R5,$SAVRG ; SAVE R5, R4, AND R3
1368 002674 122710 000006 CMPB #ST$DIP,(R0) ; ARE WE BEING DISCONNECTED?
1369 002700 001054 BNE 20$ ; NO
1370 002702 022760 006413 000024 CMP #ST$DID*400!ST$UDI,L.USTA(R0) ; ARE WE DONE WITH SUBSTATE PROCESSING
1371 002710 001050 BNE 20$ ; NO
1372 002712 005760 000004 TST L.TIPI(R0) ; ARE THERE ANY DATA OR INT/LS TRANSMITS IN PROGRESS ?
1373 002716 001045 BNE 20$ ; YES
1374
1375 .IF DF N$$ICF
1376
1377 BIT #LF.INT,(R0) ; INTERCEPT LINK ?
1378 BNE 10$ ; YES
1379
1380 .ENDC
1381 ;AP0003
1382 .IF DF N$$SYS&N$$USR ;AP0003
1383 002720 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE ? ;AP0003
1384 002724 001405 BEQ 2$ ; USER ;AP0003
1385 .ENDC ;AP0003
1386
1387 .IF DF N$$SYS
1388 002726 CALLC REMSYS ; CLEAR THE SYSTEM TRANSMIT QUEUES ;AP0004
1389 002736 000404 BR 3$ ;AP0003
1390 .ENDC ;**-4
1391
1392 .IF DF N$$USR
1393 002740 2$: ;AP0003
1394 002740 CALLC REMUSR ; REMOVE CCBS FROM XQ1 AND XQ3 FOR USER
1395 .ENDC
1396 002750 3$: ;AP0003
1397
1398 002750 016005 000034 MOV L.UDQ(R0),R5 ; GET USER DISCONNECT REQUEST
1399 002754 001422 BEQ 10$ ; IF EQ, NONE - JUST REMOVE THE LINK
1400
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 25-1
CLNLNK
1401 .IF DF N$$SYS&N$$USR
1402 002756 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE? ;LW0003
1403 002762 001011 BNE 5$ ; SYSTEM ;**-1
1404
1405 .ENDC
1406
1407 .IF DF N$$USR
1408 002764 016065 000040 000006 MOV L.ULA(R0),C.LIN(R5) ; GET ULA
1409 002772 RECMAP ; RESTORE PROPER ACP MAPPING
1410 003000 CALL $QDIC ; CALL QIO ROUTINE TO PROCESS DISCONNECT COMPLETE
1411 003004 000406 BR 10$ ; JOIN COMMON CODE ;LW0003
1412 .ENDC
1413 003006 5$:
1414 .IF DF N$$SYS
1415 003006 012704 000001 MOV #NS.SUC,R4 ; SET COMPLETION STATUS ;AP0004
1416 003012 CALLC RETUSR ; GIVE TO USER ;**-1
1417 .ENDC
1418
1419 003022 10$: CALLC REMLNK ; REMOVE LINK
1420 003032 20$: RETURN ; RESTORE REGISTERS AND RETURN
1421
1422
1423
1424 000001 .END
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 25-2
SYMBOL TABLE
ACKMAS= 170000 CS.RNG= 000010 ER$COM= 000047 FS.TRM= 003000 LF.RSU= 100000
ACKPRE= 100000 CS.ROV= 000004 ER$FCF= 000050 FS.XKL= 002000 LNUM = 000060
ACKRES= 060000 CS.RSN= 010000 ER$FMT= 000005 FS.XOF= 010000 LS.DLS= 000200
ACKWRA= 010000 CS.SUC= 000001 ER$GEN= 000007 FS.XON= 007000 LS.FCC= 000004
ADDLNK 000000RG 002 CS.TMO= 020000 ER$IFC= 000030 F$$LVL= 000001 LS.FC0= 000001
ADNOD 000510RG 002 CTRES = ****** GX ER$ILS= 000043 GETBIN= ****** GX LS.FC1= 000002
A$$CHK= 000000 C$$CKP= 000000 ER$IMG= 000053 GETDBK 001130RG 002 LS.ILS= 000200
A$$CPS= 000000 C$$ORE= 000400 ER$MLB= 000006 GETEXB 002032RG 002 LS.MAK= 000020
A$$PRI= 000000 C$$RSH= 177564 ER$NOD= 000002 GETEX1= ****** GX LS.MNK= 000040
A$$TRP= 000000 C.BID 000003 ER$NSD= 000003 GETEX2 002032RG 002 LS.RES= 000360
A.NAK = 010000 C.BUF 000014 ER$RES= 000001 GETLDB 001244RG 002 LS.RSV= 000300
BLDIMA 001104R 002 C.BUF1 000014 ER$SSR= 000000 GETNNO 000242RG 002 L$$ASG= 000000
BLDIMG 001100R 002 C.BUF2 000024 ER$SSS= 000045 G$$TPP= 000000 L$$DRV= 000000
CB.CCB= 000002 C.CNT 000020 ER$STA= 000051 G$$TSS= 000000 L$$P11= 000001
CB.RDB= 000004 C.CNT1 000020 ER$TCN= 000040 G$$TTK= 000000 L$$11R= 000000
CCBGT 001276RG 002 C.CNT2 000030 ER$TCO= 000041 G$$WRD= 000000 L.CIQ 000026
CE.ABO= 100362 C.FLG 000022 ER$TPA= 000010 HALP = 000132 L.DCR 000036
CE.DIS= 100366 C.FLG1 000022 ER$UOB= 000004 HNGUSR 002204RG 002 L.FLG 000012
CE.ERR= 100370 C.FLG2 000032 E$$XPR= 000000 HNUM = 000071 L.LDA 000024
CE.MOP= 100372 C.FNC 000010 FC.CCP= 000020 I$$RAR= 000000 L.LIA 000026
CE.NTE= 100361 C.LIN 000006 FC.CTL= 000006 I$$RDN= 000000 L.LLA 000002
CE.RTE= 100376 C.LNK 000000 FC.KCP= 000016 KDSAR0= 172360 L.LNG1 000054
CE.SRC= 100364 C.MOD 000011 FC.KIL= 000004 KDSDR0= 172320 L.LNO 000022
CE.TMO= 100374 C.NSP 000004 FC.RCE= 000002 KISAR0= 172340 L.LSA 000032
CF.EOM= 000004 C.RSV 000002 FC.RCP= 000014 KISAR5= 172352 L.LSF 000044
CF.HDR= 000020 C.STA 000007 FC.TIM= 000010 KISAR6= 172354 L.LVL 000001
CF.LB = 100000 C.STS 000012 FC.XCP= 000012 KISAR7= 172356 L.NDA 000034
CF.SOM= 000010 DF$ADJ= 020000 FC.XME= 000000 KISDR0= 172300 L.NIN 000016
CF.SYN= 000040 DF$DWN= 001000 FE.CAL= 000040 KISDR6= 172314 L.NLA 000036
CF.TRN= 000100 DF$FRE= 070000 FE.DRV= 000010 KISDR7= 172316 L.NSTA 000025
CHKFLG 000160RG 002 DF$LCL= 040000 FE.EXP= 000200 K$$CNT= 177546 L.NXN 000014
CHKULA 000000RG 003 DF$LNK= 004000 FE.EXT= 000001 K$$CSR= 177546 L.PDV 000041
CLNLNK 002670RG 002 DF$REM= 010000 FE.EXV= 000004 K$$LDC= 000000 L.REM 000006
CL$ACK= 000040 DF$RES= 002000 FE.LSI= 000400 K$$TPS= 000074 L.RLA 000010
CL$MFL= 000010 DF$TMP= 100000 FE.MUP= 000002 LALP = 000101 L.RNO 000020
CL$NRM= 000020 DISUSR 002226RG 002 FE.MXT= 040000 LA.ACK= 100000 L.STA 000000
CL$SFL= 000004 DISUS0 002266RG 002 FE.NLG= 100000 LA.MSK= 170000 L.TC 000042
CL$TYP= 000001 DISUS1 002274RG 002 FE.PKT= 000100 LA.NAK= 110000 L.TIC 000043
CL.MU1= 000001 DISUS2 002542R 002 FE.PLA= 000020 LA.NMS= 010000 L.TIPD 000005
CL.MU2= 000002 DISUS3 002646R 002 FS.AST= 000000 LA.RES= 060000 L.TIPI 000004
CL.RES= 177774 D$CHN 000002 FS.CIB= 002000 LD$LP = 000000 L.UDQ 000034
CMODE = 140000 D$FLG 000000 FS.CRA= 001000 LF.DFL= 000060 L.ULA 000040
CNVIMA 001646R 002 D$LEN 000014 FS.DIS= 013000 LF.DSP= 000040 L.USA 000030
CNVIMG 001642R 002 D$LNG 000005 FS.DVC= 001000 LF.DST= 000020 L.USTA 000024
CONSM2 000640RG 002 D$NAM 000006 FS.ENB= 012000 LF.FPN= 000010 L.XQ1 000046
CONSM3 001014R 002 D$USE 000004 FS.GET= 006000 LF.HF0= 001000 L.XQ2 000050
CS.ABO= 000100 D$$BUG= 177514 FS.INI= 000000 LF.HMF= 020000 L.XQ3 000052
CS.BUF= 000200 D$$ISK= 000000 FS.KIL= 000000 LF.HSF= 010000 MA.DA = 000000
CS.DCR= 000400 D$$L11= 000001 FS.LTM= 001000 LF.INR= 000100 MA.IL = 000020
CS.DEV= 000002 D$$YNC= 000000 FS.MNT= 004000 LF.INT= 000400 MC.CC = 000040
CS.DIS= 000040 D$$YNM= 000000 FS.MSN= 014000 LF.LCL= 040000 MC.CI = 000020
CS.ENB= 000020 ENTDIP 002656RG 002 FS.RNG= 011000 LF.MMF= 100000 MC.DC = 000100
CS.EOF= 000001 ER$ABO= 000046 FS.RTN= 001000 LF.MSF= 040000 MC.DI = 000060
CS.ERR= 100000 ER$ABT= 000011 FS.SET= 005000 LF.NKR= 000200 MC.NO = 000000
CS.HFE= 002000 ER$ACC= 000042 FS.STM= 000000 LF.NKS= 000400 MC.ST = 000120
CS.LST= 040000 ER$ACT= 000044 FS.STP= 002000 LF.NPN= 000001 MD.BM = 000040
CS.MTL= 004000 ER$CDI= 000052 FS.STR= 001000 LF.NTS= 002000 MD.EM = 000100
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 25-3
SYMBOL TABLE
MD.ILS= 000040 NT$IDN= 000030 N.DDS1 000014 P$CHN 000004 S$LEN 000040
MD.IM = 000020 NT$ILN= 000032 N.DDS2 000020 P$CNT 000005 S$LNK 000022
MF.ACK= 000004 NT$IND= 000024 N.DFMT 000010 P$FRQ 000012 S$MLK 000024
MF.CTL= 000010 NT$INL= 000026 N.DGRP 000012 P$FSP 000013 S$NKS 000010
MF.DAT= 000000 NT$INT= 000004 N.DOBJ 000011 P$LCD 000002 S$RES 000014
MPAR = 172100 NT$LS = 000014 N.DUSR 000014 P$LEN 000014 S$SEC 000000
MPCSR = 177746 NT$MOD= 000012 N.LGTH= 000160 P$LST 000000 S$SNI 000016
MSGHDR= 000007 NT$NAK= 000022 N.NODE 000000 P$NOD 000010 S$UMR 000004
M$$CRB= 000124 NT$OFF= 000026 N.OPDL 000136 P$PFQ 000006 S$UMS 000002
M$$CRX= 000000 NT$ON = 000002 N.OPTD 000140 P$TIM 000003 S$UNI 000020
M$$FCS= 000000 NT$QRY= 000014 N.PASL 000102 P$$P45= 000000 S$$WRG= 000000
M$$MGE= 000000 NT$REJ= 000004 N.PASS 000104 P$$WRD= 000000 S$$YSZ= 007600
M$$OVR= 000000 NT$ROU= 000022 N.RQDL 000060 Q$$OPT= 000010 TPS = 177564
NC.FM0= 000000 NT$RTI= 000010 N.RQID 000062 REMLNK= ****** GX T$$KMG= 000000
NC.FM1= 000001 NT$RTN= 000000 N.RSRV= 000030 REMSYS= ****** GX T$$MIN= 000000
NC.FM2= 000002 NT$SNG= 000006 N.SDL1 000036 REMUSR= ****** GX UBMPR = 170200
NDLNG 000436RG 002 NT$STP= 000004 N.SDL2 000042 RETUSR= ****** GX UCRDAT 001760RG 002
NETTIM= 000005 NT$XOF= 000020 N.SDS1 000040 RF.CLN= 000000 UDSAR0= 177660
NE.ABO= 177776 NT$XON= 000016 N.SDS2 000056 RF.CTL= 000003 UDSDR0= 177620
NE.ACT= 177771 NT.ACK= 000001 N.SEG 000006 RF.TIM= 177400 UISAR0= 177640
NE.CLS= 177767 NT.BOM= 000040 N.SFMT 000034 RF.TM0= 000400 UISAR4= 177650
NE.DIS= 177777 NT.EOM= 000100 N.SGRP 000036 RF.WTD= 000020 UISAR5= 177652
NE.FMT= 177770 NT.FCN= 037400 N.SOBJ 000035 RF.WTM= 000030 UISAR6= 177654
NE.NDT= 177766 NT.MD1= 000420 N.SUSR 000040 RF.WTS= 000010 UISAR7= 177656
NE.NOD= 177774 NT.MFL= 000002 PD$NSP= ****** GX RH.CNT= 000001 UISDR0= 177600
NE.REJ= 177775 NT.MOD= 000020 PF$EIP= 000100 RH.EFM= 000020 UISDR4= 177610
NE.RES= 177773 NT.MOM= 000000 PF$ENB= 000200 RH.HDR= 000002 UISDR5= 177612
NE.TIM= 177772 NT.NAK= 000002 PF$OFF= 000000 RH.PRI= 000014 UISDR6= 177614
NI.FLI= 000002 NT.NFL= 000000 PF$RLI= 000002 RH.PR1= 000004 UISDR7= 177616
NI.FRI= 000004 NT.SFL= 000001 PF$RRI= 000004 RH.RFM= 000100 VERASC 002130RG 002
NI.FRT= 000001 NT.SOL= 000140 PF$RVE= 000001 RLSDBK 001204RG 002 VF$RCV= 100000
NI.FUB= 000010 NT.XOF= 000004 PF$RVR= 000040 R$$DER= 000000 VF$XMT= 040000
NI.INI= 000001 NT.XON= 000010 PF$SLI= 000002 R$$K11= 000001 V$FLG 000000
NI.RLI= 000002 NWNOD 000466RG 002 PF$SRI= 000004 R$$SND= 000000 V$LEN 000022
NI.RRI= 000004 N$ACQ 000000 PF$SRT= 000001 R$$11M= 000000 V$RCV 000002
NI.RVE= 000001 N$ICF 000006 PF$STA= 000003 SETFLG 001672RG 002 V$XMT 000012
NI.VER= 000002 N$LNI 000010 PF$SUB= 000010 SISDR0= 172200 V$$CTR= 001000
NP$RTR= 000003 N$LVC 000022 PF$UP = 000001 SKPEXB 002122RG 002 WINDOW= 004000
NS.BOM= 000040 N$NOD 000032 PIRQ = 177772 SRNOD = ****** GX X$$DBT= 000000
NS.EOM= 000100 N$PLD 000026 PMODE = 030000 SR0 = 177572 $ALOCB= ****** GX
NS.MFL= 000003 N$STS 000042 PROCI 001316RG 002 SR3 = 172516 $CALLX= ****** GX
NS.MOM= 000000 N$TCB 000004 PRONAM 001556R 002 STLN0 000562RG 002 $CCBGT= ****** GX
NS.NFL= 000001 N$TMP 000012 PR0 = 000000 STLVC 000620RG 002 $CCBRT= ****** GX
NS.SET= 000002 N$VER 000036 PR1 = 000040 STPLD 000552RG 002 $DEACB= ****** GX
NS.SFL= 000002 N$$DAT= 000030 PR4 = 000200 ST$CC = 000002 $ENCOD= ****** GX
NS.SOL= 000140 N$$DIS= 000020 PR5 = 000240 ST$CIR= 000003 $HOST = ****** GX
NS.SUC= 000001 N$$INT= 000020 PR6 = 000300 ST$CIS= 000001 $LDBGT= ****** GX
NT$ABO= 000022 N$$LDV= 000001 PR7 = 000340 ST$DAT= 000005 $MPOBJ= ****** GX
NT$ACC= 000002 N$$MOV= 000010 PS = 177776 ST$DID= 000015 $MUL = ****** GX
NT$ADS= 000000 N$$OPT= 000020 PSTUSR= ****** GX ST$DIP= 000006 $NSADB= ****** GX
NT$AKD= 000016 N$$OVR= 000042 PS$NTI= 000003 ST$DIR= 000012 $NTNAM= ****** GX
NT$AKI= 000020 N$$SYS= 000001 PS$OFF= 000000 ST$DIS= 000014 $QCRR = ****** GX
NT$CC = 000012 N$$USR= 000001 PS$STR= 000001 ST$UDI= 000013 $QDIC = ****** GX
NT$CON= 000000 N.ACNT 000116 PS$UP = 000005 ST$UNR= 000011 $QDIR = ****** GX
NT$DAT= 000002 N.ACTL 000114 PS$VER= 000004 SWR = 177570 $RDBSZ= ****** GX
NT$DIS= 000010 N.DDL1 000012 PS$WT = 000002 S$EMR 000006 $SAVRG= ****** GX
NT$IDC= 000034 N.DDL2 000016 PUTBIN= ****** GX S$FMT 000012
NSPSBA MACRO M1110 13-OCT-79 10:17 PAGE 25-4
SYMBOL TABLE
. ABS. 000160 000
000000 001
NSPSBA 003034 002
$NSACP 000040 003
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 19501 WORDS ( 77 PAGES)
DYNAMIC MEMORY: 20620 WORDS ( 79 PAGES)
ELAPSED TIME: 00:01:16
NSPSBA,[131,34]NSPSBA/CR/-SP=[130,10]NETLIB/ML,RSXMC4/PA:1,[131,10]NSPSBA
NSPSBA CREATED BY MACRO ON 13-OCT-79 AT 10:17 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ADDLNK 000000 RG #4-115
ADNOD 000510 RG 7-303 #9-442
BLDIMA 001104 R 12-628 #13-660
BLDIMG 001100 R 12-580 12-583 12-586 12-589 #13-657
CCBGT 001276 RG 14-692 #15-777 22-1211 22-1220
CHKFLG 000160 RG #6-228
CHKULA 000000 RG #5-186
CLNLNK 002670 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 001646 R 16-899 #16-925
CNVIMG 001642 R 16-847 16-850 16-853 16-858 #16-922
CONSM2 000640 RG #12-555
CONSM3 001014 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$LCL = 040000 7-306
DF$REM = 010000 7-302 9-415
DISUSR 002226 RG #21-1174
DISUS0 002266 RG #22-1207
DISUS1 002274 RG 21-1182 21-1185 #22-1210
DISUS2 002542 R 21-1181 #23-1279
DISUS3 002646 R 21-1183 #23-1316
D$CHN 000002 7-310 7-318
D$NAM 000006 16-817
ENTDIP 002656 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 001130 RG #14-691
GETEXB 002032 RG #19-1039
GETEX1 = ****** GX 16-840
GETEX2 002032 RG #19-1040
GETLDB 001244 RG #15-746
GETNNO 000242 RG #7-277
NSPSBA CREATED BY MACRO ON 13-OCT-79 AT 10:17 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
HALP = 000132 #20-1103 20-1115
HNGUSR 002204 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.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 000436 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 000466 RG #9-411
N$ICF 000006 7-298
N$LNI 000010 7-308
N$LVC 000022 11-524
N$PLD 000026 10-496
N$STS 000042 4-151
N$$DIS = 000020 22-1223 22-1225
N$$ICF = ****** 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
NSPSBA CREATED BY MACRO ON 13-OCT-79 AT 10:17 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
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 001316 RG #16-812
PRONAM 001556 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 001204 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 001672 RG #17-963
SKPEXB 002122 RG 19-1054 #19-1067 19-1069
SRNOD = ****** GX 7-289
STLN0 000562 RG #10-485
STLVC 000620 RG 4-116 5-186 #11-523
STPLD 000552 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 001760 RG #18-1005 23-1279
UISAR6 = 177654 22-1247 23-1293 25-1409
VERASC 002130 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
$CCBGT = ****** GX 15-777
$CCBRT = ****** GX 14-720
$DEACB = ****** GX 14-719
$ENCOD = ****** GX 4-142 *4-143
$HOST = ****** GX 7-283
NSPSBA CREATED BY MACRO ON 13-OCT-79 AT 10:17 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
$LDBGT = ****** GX 15-746
$MPOBJ = ****** GX 16-863
$MUL = ****** GX 10-492
$NSADB = ****** GX 4-150 7-280 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
NSPSBA CREATED BY MACRO ON 13-OCT-79 AT 10:17 PAGE 5
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
CALL 4-116 4-131 5-186 7-281 7-284 7-287 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 12-591 14-721 16-869
RETURN 4-161 5-205 6-245 7-323 7-356 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 #12-555 #14-691 #14-715 #16-812
SOB #4-121 #5-202 #7-352 #9-452 #13-667 #16-932 #18-1017 #20-1118 #22-1228
$MVFBF #3-77
$MVTBF #3-77
$QDLC #3-76
$QLLC #3-76