Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/mcb/nspsbc.lst
There are no other files named nspsbc.lst in the archive.
NSPSBC MACRO M1110 13-OCT-79 10:06
TABLE OF CONTENTS
4- 130 GENERAL QUEUE MANIPULATION ROUTINES
4- 131 ADDQUE - ADD AN ELEMENT TO A LIST
4- 161 POPQUE - REMOVE AN ELEMENT FROM A LIST
6- 194 CHKUSR - GET AN LLT ADDRESS FROM A USER REQUEST
6- 210 GETLNK - GET AN LLT ADDRESS FROM AN LLA
7- 241 BINPUT - STORE BINARY BACKWARDS
7- 271 GETBIN - GET BINARY
8- 298 SKPIMG - SKIP OVER AN IMAGE FIELD
9- 317 GETEX1 - GET AN EXTENSIBLE DATA BYTE
10- 353 GIVUSR,PSTUSR,RETUSR
11- 399 PRODS - PROCESS DESTINATION AND SOURCE LINK ADDRESSES
12- 473 BLDMSG - BUILD DESTINATION & SOURCE LINK ADDRESSES
12- 505 PUTBIN - STORE BINARY VALUE IN A MESSAGE
13- 529 LOGICAL LINK TABLE DEALLOCATION ROUTINES
13- 530 REMLNK - REMOVE AN LLT WITH A NODE ASSIGNMENT
13- 531 REMLKA - REMOVE AN LLT
14- 588 NODE DESCRIPTOR MANIPULATION ROUTINES
14- 589 GTNOD - FIND A NODE NAME WHICH MATCHES A MESSAGE NODE NAME
14- 628 SRNOD - SEARCH FOR A NODE NAME
15- 717 RMUSE - REMOVE A LOGICAL LINK FROM A NODE
15- 754 RMNOD - CONDITIONALLY REMOVE A NODE NAME
16- 779 REMSYS
17- 835 REMUSR - RETURN UNACKNOWLEDGED I/LS MESSAGES
18- 872 COMMON PROTOCOL MESSAGE BUILDING ROUTINES
18- 873 DODC - SEND A DISCONNECT CONFIRM
19- 934 SNDDI - SEND A DISCONNECT INITIATE
20- 974 RECOVR - RESOURCE RECOVERY ENTRY FOR DATA STATE
20- 1015 RECOV1 - ACK/NAK REQUIRED FOR DATA & I/LS SUBCHANNELS
21- 1050 SNDLS - SEND A LINK SERVICE FOR DATA
21- 1051 SNILS - SEND A LINK SERVICE FOR INTERRUPT
22- 1126 SNDAKD - SEND AN ACK/NAK FOR DATA
22- 1127 SNDAKI - SEND AN ACK/NAK FOR I/LS
24- 1220 NAKICF - SPECIAL INTERCEPT NAK ROUTINE
25- 1272 MESSAGE TRANSMISSION ROUTINES
25- 1273 SNDMDC - SEND MESSAGE NOT ASSOCIATED WITH AN LLT
25- 1274 SNDMSI - SEND MESSAGE FOR I/LS SUBCHANNEL
25- 1275 SNDMSG - SEND MESSAGE FOR DATA SUBCHANNEL
25- 1276 SNDALT - SEND MESSAGE COMMON PROCESSING
26- 1349 RTHDR - BUILD A ROUTE HEADER
27- 1413 SETPLD - MAP TO THE PLD ENTRY FOR A LINE
28- 1439 SNDLOW - FORWARD A MESSAGE TO THE DLC
29- 1470 BUFFER ALLOCATION AND DEALLOCATION ROUTINES
29- 1471 GETSMR - ALLOCATE A MESSAGE BUFFER
29- 1472 GETSM1 - ALLOCATE A MESSAGE BUFFER SUBJECT TO THRESHOLD
30- 1531 GETSMS - ALLOCATE A SMALL DATA BUFFER
30- 1562 CTRES - COUNT RESOURCE ALLOCATION FAILURES
31- 1588 FRBDAT - DECREMENT DATA COUNT AND FREE BUFFER
31- 1589 FRBILS - DECREMENT ILS COUNT AND FREE MESSAGE BUFFER
31- 1617 RLSBUF - RELEASE A MESSAGE BUFFER ON BUFFER ID
31- 1641 UNSPWN - RETURN A MESSAGE BUFFER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 3
1 .IIF DF N$$ICF, .TITLE NSPSCI
2 .IIF NDF N$$ICF, .TITLE NSPSBC
3 .IDENT /X01.26/
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 ;
26 ; MODULE DESCRIPTION:
27 ;
28 ; NSP COMMON SUBROUTINES (DRIVER)
29 ;
30 ;
31 ; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING
32 ;
33 ; IDENT HISTORY:
34 ;
35 ; 1.00 10-FEB-78
36 ; VERSION 2.0 RELEASE
37 ;
38 ; MODIFICATIONS:
39 ;
40 ; LW0001 2-MAY-78 LEE WEBBER
41 ; ADD INTERCEPT CODE TO THE TWO "SEND ACK" ROUTINES
42 ; LW0002 7-MAY-78 LEE WEBBER
43 ; ELIMINATE NODE NAME CHECKING IN "PRODS" FOR LINKS
44 ; WITHOUT ROUTING HEADERS
45 ; LW0003 10-MAY-78 LEE WEBBER
46 ; ADD ROUTINE TO NAK SEGMENT 0 ON AN INTERCEPT LINK
47 ; (FOR DATA RECEIVED BEFORE CONNECT DONE)
48 ; LW0004 10-MAY-78 LEE WEBBER
49 ; DOCUMENTATION CORRECTION
50 ; LW0005 12-MAY-78 LEE WEBBER
51 ; ADDITION OF INTERCEPT CODE TO THE RESOURCE
52 ; RECOVERY ROUTINE
53 ; LW0006 19-MAY-78 LEE WEBBER
54 ; ENHANCE SYSTEM INTERFACE CODE
55 ; AP0007 21-DEC-77 ALAN D. PECKHAM
56 ; CHANGE $LLCMP CALL TO $LLCRS.
57 ; AP0008 1-MAY-78 ALAN D. PECKHAM
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 3-1
58 ; ALTER INPUT PARAMETERS TO SNDLS.
59 ; MN0009 6-JUN-78 MAYNARD
60 ; FIX INTERCEPT PROBLEM IN SDC
61 ; AP0010 9-JUN-78 ALAN D. PECKHAM
62 ; ADD RESOURCE RECOVERY TO NOTUSR.
63 ; AP0011 24-OCT-78 ALAN D. PECKHAM
64 ; CORRECT BUFFER RESET ROUTINES.
65 ; MERGE REMXQ* ROUTINES TO REMSYS
66 ; AND FIX TO RETURN LS MESSAGES TO SYSTEM.
67 ; LW0012 09-JAN-79 LEE WEBBER
68 ; FALSE NODE INIT MODIFICATIONS
69 ; LW0013 12-FEB-79 LEE WEBBER
70 ; PUT IN CRASH ON NEGATIVE USE COUNT FOR NODE
71 ; AP0014 13-FEB-79 ALAN D. PECKHAM
72 ; PUT IN COUNTER FOR NAKS SENT
73 ; AND CORRECT INTERCEPT NAK TESTS
74 ; LW0015 14-FEB-79 LEE WEBBER
75 ; ADD CODE TO DODC TO SUPPORT "DCICF" CASE (TRAUMATIC
76 ; DC FOR AN INTERCEPT LINK)
77 ; AP0016 20-FEB-79 ALAN D. PECKHAM
78 ; FIX BUG IN COUNTER CODE
79 ; LW0017 26-FEB-79 LEE WEBBER
80 ; DON'T TRY TO KILL LLT FOR DC WHICH DOESN'T HAVE AN
81 ; ASSOCIATED LINK
82 ; LW0018 8-MAR-79 LEE WEBBER
83 ; ADD CODE TO SEND A DC TO A MESSAGE WITHOUT A ROUTING
84 ; HEADER; SEND IT OVER THE SAME LINE IT CAME IN ON
85 ; LW0019 9-MAR-79 LEE WEBBER
86 ; MODIFY INTERFACE TO "GTNOD" AND "RMNOD"
87 ; LW0020 11-APR-79 LEE WEBBER
88 ; ADDITION TO #19
89 ; LW0021 11-APR-79 LEE WEBBER
90 ; FIX IN "SRNOD" SO THAT THE SAME ENTRY ISN'T PICKED UP
91 ; FIRST AS A FREE ENTRY AND THEN AS A MATCH
92 ; AP0022 22-MAY-79 ALAN D. PECKHAM
93 ; SNDAKD AND SNDAKI CAN NOT BE CALLED FOR INTERCEPT LINKS.
94 ; REWRITE NAKICF ROUTINE.
95 ; AP0023 28-MAY-79 ALAN D. PECKHAM
96 ; FIX BUG INTRODUCED IN NAKICF AND COVER OTHER SNDAK(D!I) CASE.
97 ; LW0024 11-JUL-79 LEE WEBBER
98 ; FIX "SNDMSG" SO LOCAL DESTINATION LINKS DON'T HAVE TO
99 ; HAVE A PHYSICAL LINE; MAKE "SETPLD" GLOBAL
100 ; AP0025 7-AUG-79 ALAN D. PECKHAM
101 ; FIX SRNOD TO PICK UP THE TEMPORARY NODE ENTRY CORRECTLY
102 ; AP0026 16-AUG-79 ALAN D. PECKHAM
103 ; FIX SRNOD TO ENTER THE GIVEN NODE NAME IN A NEW RESERVED
104 ; NODE ENTRY. THUS IF DODC GETS IT IT WILL BE ABLE TO USE
105 ; IT TO CONSTRUCT THE ROUTING HEADER PROPERLY.
106 ; ADD ROUTINE "DODCR" FOR INTERCEPT USE WHICH DOES A DODCI
107 ; FOLLOWED BY ATTEMPTS TO REMOVE THE SRC AND DST NODES.
108 ;
109
110 ; EXTERNAL MACRO DEFINTIONS
111 ;
112
113 .MCALL SAVMAP,MAP,RESMAP
114 .MCALL SAVRG,RESRG
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 3-2
115 .MCALL STOPDV,STOULA ;AP0007
116 .MCALL $QDLC,$QLLC
117 .MCALL $MVTBF,$MVFBF
118 .MCALL CCBDF$,NSPSY$
119 000000 CCBDF$ ; DEFINE THE CCB OFFSETS
120 000000 NSPSY$ ; DEFINE THE NSP SYMBOLS
121
122
123 .IF NDF N$$SYS&N$$USR
124 N$$SYS=1 ;IF NEITHER INTERFACE IS SPECIFIED
125 ;THEN DEFAULT TO SYSTEM INTERFACE
126 .ENDC
127
128 000000 .PSECT NSPSBC
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 4
GENERAL QUEUE MANIPULATION ROUTINES
130 .SBTTL GENERAL QUEUE MANIPULATION ROUTINES
131 .SBTTL ADDQUE - ADD AN ELEMENT TO A LIST
132 ;+
133 ; **-ADDQUE-ADD AN ELEMENT TO A LIST
134 ;
135 ; THIS SUBROUTINE IS CALLED TO ADD A CCB TO A SINGLELY LINKED LIST.
136 ;
137 ; INPUTS:
138 ; R3 = ADDRESS OF QUEUE HEADER
139 ; R5 = ADDRESS OF CCB
140 ;
141 ; OUTPUTS:
142 ;
143 ; AS DESCRIBED ABOVE
144 ;
145 ; REGISTERS MODIFIED:
146 ;
147 ; NONE
148 ;
149 ;-
150
151 000000 ADDQUE::SAVRG <R3,R4> ; SAVE REGISTERS
152 000004 010304 10$: MOV R3,R4 ; SEARCH FOR END OF
153 000006 011303 MOV (R3),R3 ; THE CCB LIST
154 000010 001375 BNE 10$ ; THEN ADD THE
155 000012 010514 MOV R5,(R4) ; CCB TO IT
156 000014 005015 CLR (R5) ; CLEAR POINTER TO NEXT CCB
157 000016 RESRG <R4,R3> ; RESTORE REGISTERS
158 000022 RETURN ; RETURN
159
160
161 .SBTTL POPQUE - REMOVE AN ELEMENT FROM A LIST
162 ;+
163 ; **-POPQUE-REMOVE AN ELEMENT FROM A LIST
164 ;
165 ; THIS SUBROUTINE IS CALLED TO REMOVE A CCB FROM A SINGLELY LINKED LIST.
166 ;
167 ; INPUTS:
168 ;
169 ; R3 = ADDRESS OF THE QUEUE LISTHEAD
170 ;
171 ; OUTPUTS:
172 ;
173 ; C-BIT CLEAR:
174 ; R5 = ADDRESS OF THE CCB DEQUEUED
175 ;
176 ; C-BIT SET:
177 ; NO ELEMENTS TO DEQUEUE
178 ;
179 ; REGISTERS MODIFIED:
180 ;
181 ; NONE
182 ;
183 ;-
184 000024 011305 POPQUE::MOV (R3),R5 ; R5=TOP ELEMENT FROM QUE
185 000026 001403 BEQ 10$ ; YES GIVE RESOURCE ERROR
186 000030 011513 MOV (R5),(R3) ; SET NEW FIRST POINTER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 4-1
POPQUE - REMOVE AN ELEMENT FROM A LIST
187 000032 005015 CLR (R5) ; CLEAR POINTER TO NEXT CCB (CLEARS C-BIT)
188 000034 RETURN ; RETURN TO CALLER
189
190 000036 000261 10$: SEC ; SET C-BIT
191 000040 RETURN ; RETURN
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 6
CHKUSR - GET AN LLT ADDRESS FROM A USER REQUEST
194 .SBTTL CHKUSR - GET AN LLT ADDRESS FROM A USER REQUEST
195 ;+
196 ; **-CHKUSR-GET THE LOGICAL LINK TABLE ADDRESS FROM A USER REQUEST
197 ;
198 ; INPUTS:
199 ;
200 ; R5 = ADDRESS OF A CCB WHICH CONTAINS THE LLA IN 'C.LIN'.
201 ;
202 ; OUTPUTS:
203 ;
204 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
205 ;-
206
207 000042 116500 000006 CHKUSR::MOVB C.LIN(R5),R0 ; GET THE LLA
208
209
210 .SBTTL GETLNK - GET AN LLT ADDRESS FROM AN LLA
211 ;+
212 ; **-GETLNK-GET THE LOGICAL LINK TABLE ADDRESS
213 ;
214 ; INPUTS:
215 ;
216 ; R0 = LOGICAL LINK ADDRESS
217 ;
218 ; OUTPUTS:
219 ;
220 ; C-BIT CLEAR:
221 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
222 ;
223 ; C-BIT SET:
224 ; R0 = UNDEFINED
225 ;-
226
227 000046 GETLNK::SAVRG <R1> ; SAVE R1
228 000050 042700 177400 BIC #177400,R0 ; REMOVE ANY TRASH FROM THE HIGH BYTE
229 000054 016701 000000G MOV $NSDDB,R1 ; COMPUTE THE ADDRESS OF THE LLT DESCRIPTOR
230 000060 062701 000022 ADD #N$LVC,R1 ; ...
231 000064 022100 CMP (R1)+,R0 ; IS THE LLA WITHIN REASON ?
232 000066 103404 BLO 10$ ; IF LO, NO - ERROR
233 000070 006300 ASL R0 ; MAKE THE LLA A WORD INDEX (CLEAR C-BIT)
234 000072 061100 ADD (R1),R0 ; COMPUTE THE OFFSET INTO THE LLT ADDRESS TABLE
235 000074 011000 MOV (R0),R0 ; GET THE LLT ADDRESS
236 000076 001001 BNE 20$ ; IF NE, THE LLT EXISTS - R0 HAS THE ADDRESS
237 000100 000261 10$: SEC ; LLT DOESN'T EXIST - INDICATE THE ERROR
238 000102 20$: RESRG <R1> ; RESTORE R1
239 000104 RETURN ; RETURN TO THE CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 7
BINPUT - STORE BINARY BACKWARDS
241 .SBTTL BINPUT - STORE BINARY BACKWARDS
242 ;+
243 ; **-BINPUT-STORE A BINARY VALUE IN A MESSAGE BACKWARDS
244 ;
245 ; NOTE THAT THIS ROUTINE USES THE FACT THAT CALLING THE NEXT INSTRUCTION
246 ; CAUSES THE ALL THE INSTRUCTIONS UP TO AND INCLUDING THE NEXT RETURN
247 ; INSTRUCTION TO BE EXECUTED TWICE. IN ALL THE PROTOCOL MESSAGES, THE
248 ; HIGH BYTE OF A 16 BIT BINARY VALUE FOLLOWS THE LOW BYTE.
249 ;
250 ; INPUTS:
251 ;
252 ; R1 = BINARY VALUE
253 ; R4 = MESSAGE POINTER (ONE AFTER LOCATION WHERE THE BINARY VALUE
254 ; WILL BE STORED).
255 ;
256 ; OUTPUTS:
257 ;
258 ; R4 = MESSAGE POINTER MINUS 2
259 ;
260 ; REGISTERS MODIFIED:
261 ;
262 ; NONE
263 ;-
264
265 000106 BINPUT::CALL (PC) ; EXECUTE THE NEXT INSTRUCTION SEQUENCE TWICE
266 000110 000301 SWAB R1 ; GET THE HIGH BYTE WHICH IS STORED FIRST
267 000112 110144 MOVB R1,-(R4) ; STORE IT IN THE MESSAGE
268 000114 RETURN ; DO IT AGAIN FOR THE LOW BYTE, THEN RETURNS
269
270
271 .SBTTL GETBIN - GET BINARY
272 ;+
273 ; **-GETBIN-GET A BINARY VALUE FROM A MESSAGE
274 ;
275 ; THIS ROUTINE USES THE SAME TECHNIQUE AS DESRIBED FOR BINPUT
276 ;
277 ; INPUTS:
278 ;
279 ; R4 = MESSAGE POINTER
280 ;
281 ; OUTPUTS:
282 ;
283 ; R1 = BINARY VALUE FROM THE NEXT TWO BYTES OF THE MESSAGE
284 ; R4 = MESSAGE POINTER PLUS 2
285 ;
286 ; REGISTERS MODIFIED:
287 ;
288 ; NONE
289 ;-
290
291 000116 005001 GETBIN::CLR R1 ; INITIALLY A ZERO (WANT TO AVOID SIGN EXTENTION)
292 000120 CALL (PC) ; EXECUTE THE NEXT SEQUENCE OF INSTRUCTIONS TWICE
293 000122 152401 BISB (R4)+,R1 ; GET THE FIRST BYTE
294 000124 000301 SWAB R1 ; SAVE IT IN THE HIGH BYTE
295 000126 RETURN ; DO IT AGAIN TO GET THE HIGH BYTE AND RETURN
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 8
GETBIN - GET BINARY
297
298 .SBTTL SKPIMG - SKIP OVER AN IMAGE FIELD
299 ;+
300 ; **-SKPIMG-SKIP AN IMAGE FIELD
301 ;
302 ; INPUTS:
303 ;
304 ; R4 = POINTER TO LENGTH OF IMAGE FIELD
305 ;
306 ; OUTPUTS:
307 ;
308 ; R4 = POINTS PAST IMAGE FIELD
309 ;-
310
311 000130 005046 SKPIMG::CLR -(SP) ; CLEAR A TEMPORARY WORD
312 000132 112416 MOVB (R4)+,(SP) ; GET THE LENGTH OF THE FIELD
313 000134 062604 ADD (SP)+,R4 ; POINT BEYOND THE LAST BYTE
314 000136 RETURN ; RETURN TO CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 9
SKPIMG - SKIP OVER AN IMAGE FIELD
316
317 .SBTTL GETEX1 - GET AN EXTENSIBLE DATA BYTE
318 ;+
319 ; **-GETEX1-GET AN EXTENSIBLE DATA BYTE
320 ;
321 ; THIS SUBROUTINE IS CALLED TO GET AN EXTENSIBLE DATA BYTE FROM A
322 ; MESSAGE AND RETURN AN ERROR CONDITION IF THE EXTENSIBLE FIELD IS
323 ; LONGER THAN ONE BYTE.
324 ;
325 ; INPUTS:
326 ;
327 ; R4 = POINTER TO THE MESSAGE
328 ;
329 ; OUTPUTS:
330 ;
331 ; R4 = INPUT MESSAGE POINTER + 1
332 ;
333 ; C-BIT CLEAR:
334 ; R1 = DATA BYTE
335 ;
336 ; C-BIT SET:
337 ; R1 IS UNDEFINED, FIELD EXTENSION ERROR
338 ;
339 ;
340 ; REGISTERS MODIFIED:
341 ;
342 ; NONE
343 ;
344 ;-
345
346 000140 112401 GETEX1::MOVB (R4)+,R1 ; GET A BYTE OF DATA FROM THE MESSAGE
347 000142 000241 CLC ; ASSUME THAT IT'S NOT EXTENDED
348 000144 100001 BPL 10$ ; IF PL, EXTENSION BIT IS NOT SET - EXIT
349 000146 000261 SEC ; OTHERWISE INDICATE ERROR
350 000150 10$: RETURN ; RETURN TO CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 10
GETEX1 - GET AN EXTENSIBLE DATA BYTE
352 .IF DF N$$SYS
353 .SBTTL GIVUSR,PSTUSR,RETUSR
354 ;++
355 ; GIVUSR
356
357 ; INPUTS:
358 ; R5=CCB ADDRESS
359 ; R4=COMPLETION STATUS
360 ; R0=LLT/0
361
362 ; OUTPUTS:
363 ; R5=0
364
365 ; THIS ROUTINE GIVES A CCB TO A USER WITH A FUNCTION
366 ; OF RECEIVE COMPLETE.
367 ;--
368 .ENABL LSB
369 000152 GIVUSR::
370 000152 SAVRG <R1>
371 000154 012701 000014 MOV #FC.RCP,R1 ;RECV CMPLT CODE
372 000160 000411 BR 6$
373 000162 PSTUSR::
374 000162 SAVRG <R1>
375 000164 012701 000020 MOV #FC.CCP,R1 ;CTL COMPLETE
376 000170 000403 BR 5$
377 000172 RETUSR::
378 000172 SAVRG <R1>
379 000174 012701 000012 MOV #FC.XCP,R1 ;XMIT CMPLT CODE
380 000200 010465 000012 5$: MOV R4,C.STS(R5) ;SET COMPLETION STATUS
381 000204 005700 6$: TST R0 ;DOES AN LLT EXIST ?
382 000206 001411 BEQ 10$ ;IF EQ, NO - DON'T SET UP A PDV AND CHANNEL
383 000210 STOPDV L.PDV(R0) ;PUT PDV IN CCB
384 000224 STOULA L.ULA(R0) ;PUT ULA OR 0 IN CCB
385 000232 10$: SAVRG <R4>
386 000234 010504 MOV R5,R4 ;COMM EXEC REG CONVENTION
387 000236 110164 000010 MOVB R1,C.FNC(R4) ;STORE FUNCTION CODE
388 000242 CALL $LLCRS ;POST COMPLETION TO SYSTEM USER ;AP0007
389 000246 005005 CLR R5 ;CLEAR R5 & C-BIT CLEAR ;**-1
390 000250 RESRG <R4>
391 000252 RESRG <R1>
392 000254 RETURN
393
394 .DSABL LSB
395
396 .ENDC
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 11
GIVUSR,PSTUSR,RETUSR
398
399 .SBTTL PRODS - PROCESS DESTINATION AND SOURCE LINK ADDRESSES
400 ;+
401 ; **-PRODS-GET SOURCE AND DESTINATION LINK ADDRESSES
402 ;
403 ; THIS ROUTINE EXTRACTS THE SOURCE AND DESTINATION LOGICAL LINK
404 ; ADDRESSES FROM THE MESSAGE. IT LOOKS FOR THE LOGICAL LINK
405 ; ADDRESSED BY THE DESTINATION LINK ADDRESS AND IF THE LINK EXISTS,
406 ; VERIFIES THAT THE REMOTE NODE IS THE EXPECTED ONE.
407 ;
408 ; INPUTS:
409 ;
410 ; R4 = MSG PTR [DESTADDR]
411 ; R3 = POINTER TO SOURCE NODE NAME
412 ; R2 = SWITCH FOR SOURCE NODE (INTERCEPT ONLY)
413 ;
414 ; OUTPUTS:
415 ;
416 ; R4 = MSG PTR [FIELD AFTER SRCADDR]
417 ; C-BIT CLEAR:
418 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
419 ; R1 = REMOTE LINK ADDRESS
420 ;
421 ; C-BIT SET:
422 ; R0 IS UNDEFINED, NO LOGICAL LINK TABLE
423 ;
424 ; THE ARGBLK IS FORMATTED AS FOLLOWS (C-CLEAR OR C-SET):
425 ;
426 ; WD0 - REMOTE NODE INDEX (INPUT IN R3)
427 ; WD1 - SOURCE LINK ADDRESS
428 ; WD2 - DESTINATION LINK ADDRESS
429 ; WD3 - ERROR CODE FOR A STATE ERROR (ER$STA)
430 ;
431 ;
432 ; REGISTERS MODIFIED:
433 ;
434 ; NONE
435 ;-
436
437 000256 PRODS:: SAVRG <R5> ; SAVE R5
438 000260 016705 000000G MOV $NSDDB,R5 ; COMPUTE THE ADDRESS OF THE SCRATCH STORAGE
439 000264 062705 000012 ADD #N$TMP,R5 ; ...AREA
440 000270 010325 MOV R3,(R5)+ ; STORE THE POINTER TO THE SOURCE NODE NAME
441 000272 CALL GETBIN ; GET THE DESTINATION LINK ADDRESS
442 000276 010100 MOV R1,R0 ; COPY IT FOR GETLNK
443 000300 CALL GETBIN ; GET SOURCE LINK ADDRESS
444 000304 010125 MOV R1,(R5)+ ; STORE SOURCE ADDRESS FOR A POSIBLE DC
445 000306 010025 MOV R0,(R5)+ ; STORE DESTINATION ADDRESS
446 000310 CALL GETLNK ; FIND THE LOGICAL LINK TABLE
447 000314 103405 BCS 40$ ; IF CS, ERROR
448 000316 026065 000002 177776 CMP L.LLA(R0),-2(R5) ; DOES THE DESTINATION LINK ADDRESS MATCH ?
449 000324 001001 BNE 40$ ; IF NE, NO - MESSAGE IS FOR AN IDLE LINK
450
451 .IF DF N$$ICF
452
453 TST R3 ; SOURCE NODE NAME GIVEN? ;LW0002
454 BEQ 50$ ; NO - MESSAGE HAS NO ROUTING HEADER ;LW0002
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 11-1
PRODS - PROCESS DESTINATION AND SOURCE LINK ADDRESSES
455 BIT #LF.INT,(R0) ; IS THIS AN INTERCEPT LINK ?
456 BEQ 20$ ; IF EQ, NO - DO NORMAL SOURCE NAME CHECK
457 CMPB #ST$CIR,(R0) ; WAITING FOR CC ?
458 BEQ 10$ ; YES
459 TST R2 ; LINK TO INTERCEPTED NODE ?
460 BEQ 20$ ; IF EQ, NO - DO THE NORMAL CHECK
461 10$: CMP R3,I.IREM(R0) ; MSG ON CORRECT LINK ?
462 BR 30$ ; CHECK THE RESULTS
463
464 20$: CMP L.REM(R0),R3 ; MESSAGE FROM CORRECT NODE ? ;MN0009
465 .ENDC ;MN0009
466 ;MN0009
467 000326 001401 30$: BEQ 50$ ; IF EQ, YES - (C-BIT IS CLEAR) ;**-3
468 000330 000261 40$: SEC ; SET ERROR EXIT CONDITION CODE
469 000332 012725 000051 50$: MOV #ER$STA,(R5)+ ; ASSUME A STATE ERROR
470 000336 RESRG <R5> ; RESTORE R5
471 000340 RETURN ; RETURN TO CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 12
BLDMSG - BUILD DESTINATION & SOURCE LINK ADDRESSES
473 .SBTTL BLDMSG - BUILD DESTINATION & SOURCE LINK ADDRESSES
474 ;+
475 ; **-BLDMSG-BUILD LINK ADDRESSES IN THE MESSAGE
476 ;
477 ; THIS SUBROUTINE IS CALLED TO BUILD THE DESTINATION AND SOURCE
478 ; LINK ADDRESSES IN A MESSAGE FROM THE LOGICAL LINK TABLE. IN
479 ; ADDITION, THE CONTENTS OF R3 ARE STORED IN BINARY FORMAT FOLLOWING
480 ; THE LINK ADDRESSES.
481 ;
482 ; INPUTS:
483 ;
484 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
485 ; R3 = BINARY VALUE TO BE STUFFED INTO THE MESSAGE
486 ; R4 = POINTER TO THE MESSAGE
487 ;
488 ; OUTPUTS:
489 ;
490 ; R4 = MESSAGE ADDRESS + 6
491 ;
492 ; REGISTERS MODIFIED:
493 ;
494 ; R1
495 ;
496 ;-
497
498 000342 016001 000010 BLDMSG::MOV L.RLA(R0),R1 ; GET DESTINATION LINK ADDRESS
499 000346 CALL PUTBIN ; STORE IT IN THE MESSAGE
500 000352 016001 000002 MOV L.LLA(R0),R1 ; GET THE SOURCE LINK ADDRESS
501 000356 CALL PUTBIN ; STORE IT IN THE MESSAGE
502 000362 010301 MOV R3,R1 ; COPY THE ADDITIONAL BINARY VALUE
503 ; STORE IT IN THE MESSAGE AND RETURN
504
505 .SBTTL PUTBIN - STORE BINARY VALUE IN A MESSAGE
506 ;+
507 ; **-PUTBIN-STORE BINARY VALUE IN A MESSAGE
508 ;
509 ; INPUTS:
510 ;
511 ; R1 = BINARY VALUE
512 ; R4 = MESSAGE POINTER
513 ;
514 ; OUTPUTS:
515 ;
516 ; THE BINARY VALUE IS MOVED INTO THE MESSAGE
517 ; R4 = MESSAGE POINTER PLUS 2
518 ;
519 ; REGISTERS MODIFIED:
520 ;
521 ; R1
522 ;-
523
524 000364 110124 PUTBIN::MOVB R1,(R4)+ ; STORE LOW BYTE IN MESSAGE FIRST
525 000366 000301 SWAB R1 ; GET HIGH BYTE
526 000370 110124 MOVB R1,(R4)+ ; STORE IT IN THE MESSAGE NEXT
527 000372 RETURN ; RETURN TO CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 13
LOGICAL LINK TABLE DEALLOCATION ROUTINES
529 .SBTTL LOGICAL LINK TABLE DEALLOCATION ROUTINES
530 .SBTTL REMLNK - REMOVE AN LLT WITH A NODE ASSIGNMENT
531 .SBTTL REMLKA - REMOVE AN LLT
532 ;+
533 ; **-REMLNK-REMOVE AN LLT AND ITS NODE USE COUNT
534 ; **-REMLKA-REMOVE AN LLT
535 ;
536 ; THIS SUBROUTINE IS CALLED TO DEALLOCATE A LOGICAL LINK TABLE AND
537 ; CONDITIONALLY REMOVE THE NODE NAME TABLE ENTRY WHEN THE USE COUNT
538 ; BECOMES ZERO.
539 ;
540 ; INPUTS:
541 ;
542 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
543 ;
544 ; OUTPUTS:
545 ;
546 ; THE LOGICAL LINK TABLE IS DEALLOCATED, THE POINTER TO IT IN THE
547 ; LLT ADDRESS TABLE IS CLEARED, THE USE COUNT TO THE DESTINATION
548 ; NODE IS DECREMENTED, AND IF ZERO AND THE THE NODE IS REMOTE OR
549 ; MARKED FOR REMOVE THE NODE NAME TABLE ENTRY IS RELEASED.
550 ;
551 ; REGISTERS MODIFIED:
552 ;
553 ; NONE
554 ;
555 ;-
556 .ENABL LSB
557
558 000374 005700 REMLNK::TST R0 ; IF THERE IS NO LLT ADDRESS, ;LW0017
559 000376 001436 BEQ 100$ ; THERE IS NO LINK TO KILL ;LW0017
560 000400 SAVRG <R1,R2,R3> ; SAVE NEEDED REGISTERS ;LW0017
561 000406 CALL RMUSE ; DECREMENT USE COUNT AND CONDITIONALLY REMOVE N;**-1
562 000412 000403 BR 10$ ;
563
564 000414 REMLKA::SAVRG <R1,R2,R3> ; SAVE NEEDED REGISTERS
565
566 000422 016002 000002 10$: MOV L.LLA(R0),R2 ; GET THE LOCAL LINK ADDRESS
567 000426 042702 177400 BIC #177400,R2 ; REMOVE ENCODING FROM THE HIGH BYTE
568 000432 006302 ASL R2 ; MAKE IT A WORD INDEX
569 000434 016701 000000G MOV $NSDDB,R1 ; COMPUTE THE ADDRESS INTO THE LLT ADDRESS
570 000440 066102 000024 ADD N$LVC+2(R1),R2 ; ...TABLE
571 000444 005012 CLR (R2) ; REMOVE THE POINTER TO THE LLT
572
573 000446 016101 000044 MOV N$STS+2(R1),R1 ; REDUCE THE CURRENT NUMBER OF LOGICAL LINKS
574 000452 005361 000022 DEC S$LNK(R1) ; ...
575
576 .IF DF N$$LV2
577 MOV #L.LNG2,R1 ; LENGTH OF LLT FOR LEVEL 2
578 .IFF
579 000456 012701 000054 MOV #L.LNG1,R1 ; LENGTH OF LLT FOR LEVEL 1
580 .ENDC
581
582 000462 CALL $DEACB ; RELEASE LLT
583 000466 RESRG <R3,R2,R1> ; RESTORE REGISTERS
584 000474 100$: RETURN ; RETURN TO CALLER ;LW0017
585 ;**-1
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 13-1
REMLKA - REMOVE AN LLT
586 .DSABL LSB
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 14
NODE DESCRIPTOR MANIPULATION ROUTINES
588 .SBTTL NODE DESCRIPTOR MANIPULATION ROUTINES
589 .SBTTL GTNOD - FIND A NODE NAME WHICH MATCHES A MESSAGE NODE NAME
590 ;+
591 ; **-GTNOD-FIND A NODE NAME
592 ;
593 ; THIS SUBROUTINE IS CALLED TO FIND A MATCH ON A NODE NAME RECEIVED IN
594 ; A MESSAGE WITH A NODE NAME IN THE NODE DATA BASE.
595 ;
596 ; INPUTS:
597 ;
598 ; R3 = SEARCH TYPE ;LW0019
599 ; 0 - DO NOT RESERVE ANY FREE ENTRY RETURNED, AND RECOGNIZE ;LW0019
600 ; NODE ENTRIES WHICH HAVE THE "DF$DWN" FLAG ON ;LW0019
601 ; NOT 0 - RESERVE ANY FREE ENTRY RETURNED, AND SKIP NODE ENTRIES ;LW0019
602 ; WITH "DF$DWN" ON ;LW0019
603 ; R4 = POINTER TO NODE NAME LENGTH
604 ;
605 ; OUTPUTS:
606 ;
607 ; R4 = POINTER TO MESSAGE BEYOND NODE NAME
608 ;
609 ; C-BIT CLEAR:
610 ; R3 = POINTER TO NODE NAME ENTRY
611 ;
612 ; C-BIT SET:
613 ; R3 = POINTER TO FREE NODE NAME ENTRY
614 ; THE FLAG 'DF$TMP' MAY BE TESTED TO DETERMINE IF THIS FREE ENTRY
615 ; IS THE LAST FREE ENTRY.
616 ;
617 ; REGISTERS MODIFIED:
618 ;
619 ; R0, R1 ;LW0019
620 ; ;**-1
621 ;-
622
623 000476 112401 GTNOD:: MOVB (R4)+,R1 ; GET THE LENGTH OF THE NODE NAME
624 000500 010400 MOV R4,R0 ; COPY THE POINTER TO THE NAME
625 000502 060104 ADD R1,R4 ; UPDATE THE MESSAGE POINTER
626
627
628 .SBTTL SRNOD - SEARCH FOR A NODE NAME
629 ;+
630 ; **-SRNOD-SEARCH FOR A NODE NAME
631 ;
632 ; THIS SUBROUTINE IS CALLED TO SEARCH THE NODE NAME DATA BASE FOR
633 ; A PARTICULAR NODE NAME.
634 ;
635 ; INPUTS:
636 ;
637 ; R0 = ADDRESS OF THE NODE NAME STRING TO FIND
638 ; R1 = LENGTH OF THE NODE NAME STRING
639 ; R3 = SEARCH TYPE ;LW0019
640 ; 0 - DO NOT RESERVE ANY FREE ENTRY RETURNED, AND RECOGNIZE ;LW0019
641 ; NODE ENTRIES WHICH HAVE THE "DF$DWN" FLAG ON ;LW0019
642 ; NOT 0 - RESERVE ANY FREE ENTRY RETURNED, AND SKIP NODE ENTRIES ;LW0019
643 ; WITH "DF$DWN" ON ;LW0019
644 ;
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 14-1
SRNOD - SEARCH FOR A NODE NAME
645 ; OUTPUTS:
646 ;
647 ; C-BIT CLEAR:
648 ; R3 = POINTER TO THE NODE NAME IN THE NODE DATA BASE
649 ;
650 ; C-BIT SET:
651 ; R3 = POINTER TO A FREE ENTRY IN THE NODE NAME DATA BASE
652 ; THE FLAG 'DF$TMP' MAY BE TESTED TO DETERMINE IF THIS IS
653 ; THE LAST FREE ENTRY.
654 ;
655 ; REGISTERS MODIFIED:
656 ;
657 ; NONE
658 ;
659 ;-
660
661 000504 SRNOD:: SAVRG <R2,R1,R0,R3> ; SAVE THE REGISTERS TO BE USED ;LW0019
662 000514 016703 000000G MOV $NSDDB,R3 ; COMPUTE THE ADDRESS OF THE NODE NAME ;**-1
663 000520 062703 000032 ADD #N$NOD,R3 ; ...DATA BASE
664 000524 012302 MOV (R3)+,R2 ; GET THE NUMBER OF NODE NAME ENTRIES
665 000526 011303 MOV (R3),R3 ; GET THE ADDRESS OF THE NODE NAME DATA BASE
666 000530 005046 CLR -(SP) ; RESERVE STORAGE FOR THE FREE POINTER
667 000532 005766 000002 10$: TST 2(SP) ; IF REQUESTED ;LW0019
668 000536 001403 BEQ 12$ ; TO DO SO, ;LW0019
669 000540 032713 005000 BIT #<DF$DWN!DF$LNK>,(R3) ;SKIP THIS ENTRY ;LW0019
670 000544 001033 BNE 60$ ; IF ITS LINE IS DOWN ;LW0019
671 000546 032713 072000 12$: BIT #<DF$FRE!DF$RES>,(R3) ; IS THIS A FREE ENTRY? ;LW0019
672 000552 001425 BEQ 50$ ; IF EQ, YES - SAVE THIS ADDRESS ;**-1
673 000554 032713 070000 BIT #<DF$FRE>,(R3) ; IS THIS A RESERVED BLANK ENTRY? ;LW0021
674 000560 001425 BEQ 60$ ; YES - IT CAN'T COUNT AS A MATCH ;LW0021
675 000562 010346 MOV R3,-(SP) ; SAVE THE ADDRESS IN THE TABLE
676 000564 062703 000005 ADD #D$LNG,R3 ; POINT TO THE NODE NAME LENGTH
677 000570 122301 CMPB (R3)+,R1 ; IS THERE A CHANCE THAT THE NAMES MATCH ?
678 000572 001013 BNE 40$ ; IF NE, LENGTHS ARE DIFFERRENT - SO NO
679 000574 122320 20$: CMPB (R3)+,(R0)+ ; DO THESE CHARACTERS MATCH ?
680 000576 001005 BNE 30$ ; IF NE, NO - THE STRINGS DON'T EITHER
681 000600 SOB R1,20$ ; CHECK EACH CHARACTER IN THE STRING
682 000604 012616 MOV (SP)+,(SP) ; SET THE ADDRESS WHERE THE MATCH OCCURRED
683 000606 000241 CLC ; INDICATE SUCCESS
684 000610 000437 BR 70$ ; EXIT
685
686 000612 016600 000006 30$: MOV 6(SP),R0 ; RECOVER THE POINTER TO THE STRING ;LW0020
687 000616 016601 000010 MOV 8.(SP),R1 ; RECOVER THE STRING LENGTH ;LW0020
688 000622 012603 40$: MOV (SP)+,R3 ; RECOVER THE POINTER TO THE TABLE ;**-2
689 000624 000403 BR 60$ ;
690
691 000626 005716 50$: TST (SP) ; HAS A FREE ENTRY ALREADY BEEN FOUND ?
692 000630 001001 BNE 60$ ; IF NE, YES - DON'T SAVE ANOTHER ONE
693 000632 010316 MOV R3,(SP) ; OTHERWISE SAVE THIS ADDRESS AS A FREE ENTRY
694 000634 062703 000014 60$: ADD #D$LEN,R3 ; POINT TO THE NEXT TABLE ENTRY
695 000640 SOB R2,10$ ; LOOP THROUGH ALL THE ENTRIES
696 000644 005716 TST (SP) ; IF AN ENTRY WAS NOT FOUND ;AP0025
697 000646 001003 BNE 65$ ; THEN ;AP0025
698 000650 052713 100000 BIS #DF$TMP,(R3) ; THERE IS ONE MORE ENTRY THAN THE COUNT
699 000654 010316 MOV R3,(SP) ; MAKE IT THIS ENTRY ;AP0025
700 000656 011602 65$: MOV (SP),R2 ; GET POINTER ;AP0026
701 000660 062702 000012 ADD #D$NAM+4,R2 ; TO NODE NAME ;AP0026
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 14-2
SRNOD - SEARCH FOR A NODE NAME
702 000664 012712 020040 MOV #" ,(R2) ; AND CLEAR IT TO BLANKS ;AP0026
703 000670 011242 MOV (R2),-(R2) ;AP0026
704 000672 011242 MOV (R2),-(R2) ;AP0026
705 000674 110162 177777 MOVB R1,-1(R2) ; SET THE NAME LENGTH ;AP0026
706 000700 112022 68$: MOVB (R0)+,(R2)+ ; AND COPY THE NAME IN. ;AP0026
707 000702 SOB R1,68$ ;AP0026
708 000706 000261 SEC ; NODE NOT FOUND. ;AP0026
709 000710 012603 70$: MOV (SP)+,R3 ; GET THE MATCH ADDRESS OR THE FREE ENTRY ;**-1
710 000712 011626 MOV (SP),(SP)+ ; IF REQUESTED ;LW0019
711 000714 001402 BEQ 100$ ; TO DO SO, ;LW0019
712 000716 052713 002000 BIS #DF$RES,(R3) ; RESERVE THE ENTRY ;LW0019
713 000722 100$: ;LW0019
714 000722 RESRG <R0,R1,R2> ; RESTORE THE REGISTERS
715 000730 RETURN ; RETURN TO THE CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 15
RMUSE - REMOVE A LOGICAL LINK FROM A NODE
717 .SBTTL RMUSE - REMOVE A LOGICAL LINK FROM A NODE
718 ;+
719 ; **-RMUSE-REMOVE A LOGICAL LINK FROM A NODE
720 ;
721 ; THIS SUBROUTINE IS CALLED TO DECREMENT THE LOGICAL LINK USE COUNT
722 ; FOR A DESTINATION NODE.
723 ;
724 ; INPUTS:
725 ;
726 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
727 ;
728 ; OUTPUTS:
729 ;
730 ; AS DESCIBED ABOVE
731 ;
732 ; REGISTERS MODIFIED:
733 ;
734 ; R3
735 ;
736 ;-
737 .ENABL LSB
738
739 000732 016003 000006 RMUSE: MOV L.REM(R0),R3 ; GET POINTER TO REMOTE NODE NAME
740
741 .IF DF N$$ICF
742
743 BIT #LF.INT,(R0) ; INTERCEPT LINK ?
744 BEQ 10$ ; NO
745 MOV I.IREM(R0),R3 ; LINK IS ASSIGNED TO THIS NODE
746 10$:
747 .ENDC
748
749 000736 105363 000004 DECB D$USE(R3) ; REDUCE THE USE COUNT TO THE NODE
750 000742 100001 BPL RMNOD ; CONTINUE IF WE DIDN'T GO PAST ZERO ;LW0013
751 000744 CRASH ; WENT TOO FAR - BOMB ;LW0013
752
753
754 .SBTTL RMNOD - CONDITIONALLY REMOVE A NODE NAME
755 ;+
756 ; **-RMNOD-CONDITIONALLY REMOVE A NODE NAME FOR THE DATA BASE
757 ;
758 ; THIS SUBROUTINE IS CALLED TO REMOVE THE NODE NAME ENTRY WHEN THE
759 ; COUNT BECOMES ZERO AND THE NODE IS REMOTE OR MARKED TO BE REMOVED.
760 ;
761 ; INPUTS:
762 ;
763 ; R3 = POINTER TO THE NODE NAME IN THE DATA BASE
764 ;
765 ;-
766
767 000746 105763 000004 RMNOD:: TSTB D$USE(R3) ; HAVE ALL LINKS GONE AWAY ?
768 000752 001010 BNE 20$ ; IF NE, LOGICAL LINKS STILL EXIST
769 000754 032713 070000 BIT #DF$FRE,(R3) ; IF THIS LINK IS NOT IN USE, ;LW0019
770 000760 001403 BEQ 15$ ; IGNORE ALL THE OTHER FLAGS ;LW0019
771 000762 032713 014000 BIT #DF$REM!DF$LNK,(R3) ; IS IT OK TO REMOVE THE NODE NAME ENTRY ?
772 000766 001402 BEQ 20$ ; IF EQ, NO - LEAVE IT ALONE
773 000770 042713 037777 15$: BIC #^C<DF$TMP!DF$LCL>,(R3) ; FREE THE NODE NAME ENTRY ;LW0019
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 15-1
RMNOD - CONDITIONALLY REMOVE A NODE NAME
774 000774 20$: RETURN ; RETURN TO CALLER ;**-1
775
776 .DSABL LSB
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 16
RMNOD - CONDITIONALLY REMOVE A NODE NAME
778 .IF DF N$$SYS
779 .SBTTL REMSYS
780 ;+ ;AP0011
781 ; **-REMSYS- REMOVE TRANSMIT CCBS FROM SYSTEM QUEUES ;AP0011
782 ; ;AP0011
783 ; THIS ROUTINE IS CALLED TO TRY TO FLUSH THE SYSTEM QUEUES. IT WILL ;AP0011
784 ; RETURN UNSUCCESSFUL IF THERE ARE ANY TRANSMITS OUTSTANDING BECAUSE ;AP0011
785 ; OTHERWISE THE CCBS WILL BE RETURNED OUT OF SEQUENCE. ;AP0011
786 ; ;AP0011
787 ; INPUTS: ;AP0011
788 ; R0=LLT ;AP0011
789 ; ;AP0011
790 ; OUTPUTS: ;AP0011
791 ; CARRY SET IF TRANSMITS STILL OUTSTANDING ;AP0011
792 ;- ;AP0011
793 ;AP0011
794 000776 005760 000004 REMSYS::TST L.TIPI(R0) ; IF TRANSMITS STILL OUTSTANDING ;AP0011
795 001002 001025 BNE 10$ ; THEN DON'T ALLOW. ;AP0011
796 001004 SAVRG <R5,R4,R3> ; MAKE SOME ROOM TO WORK ;AP0011
797 001012 012704 177776 MOV #NE.ABO,R4 ; AND SET ABORT CODE. ;AP0011
798 001016 012703 000052 MOV #L.XQ3,R3 ; I/LS WAITING-TO-BE-ACKED QUEUE ;AP0011
799 001022 CALL REMXQ ;AP0011
800 001026 012703 000050 MOV #L.XQ2,R3 ; DATA WAITING-TO-BE-ACKED QUEUE ;AP0011
801 001032 CALL REMXQ ;AP0011
802 001036 012703 000046 MOV #L.XQ1,R3 ; WAITING-TO-BE-TRANSMITTED QUEUE ;AP0011
803 001042 CALL REMXQ ;AP0011
804 001046 RESRG <R3,R4,R5> ; GET REGISTERS BACK. ;AP0011
805 001054 005727 TST (PC)+ ; SET SUCCESSFUL ;AP0011
806 001056 000261 10$: SEC ; OR NOT. ;AP0011
807 001060 RETURN ;AP0011
808 ;AP0011
809 001062 060003 REMXQ: ADD R0,R3 ; GET QUEUE ADDRESS IN LLT. ;AP0011
810 001064 20$: CALL POPQUE ; GET NEXT CCB ;AP0011
811 001070 103420 BCS 50$ ; IF THERE IS ONE... ;AP0011
812 001072 122765 000002 000011 CMPB #NT$DAT,C.MOD(R5) ; IF IT IS A DATA ;AP0011
813 001100 001404 BEQ 30$ ; OR ;AP0011
814 001102 122765 000004 000011 CMPB #NT$INT,C.MOD(R5) ; INTERRUPT MESSAGE ;AP0011
815 001110 001005 BNE 40$ ; THEN ;AP0011
816 001112 30$: CALL REMHDR ; CLEAN UP BUFFER ADDRESS ;AP0011
817 001116 CALL RETUSR ; RETURN TO SENDER ;AP0011
818 001122 000760 BR 20$ ; AND TRY FOR MORE. ;AP0011
819 ;AP0011
820 001124 40$: CALL RLSSMS ; RETURN LS BUFFER ;AP0011
821 001130 000755 BR 20$ ; AND LOOK FOR MORE. ;AP0011
822 ;AP0011
823 001132 50$: RETURN ;AP0011
824 ;AP0011
825 ;+ ;AP0011
826 ; RESET USER BUFFER ADDRESS BY REMOVING MESSAGE HEADER ;AP0011
827 ;- ;AP0011
828 ;AP0011
829 001134 166565 000024 000016 REMHDR::SUB C.BUF2(R5),C.BUF+2(R5) ; GET HEADER LENGTH (NEGATIVE) ;AP0011
830 001142 066565 000016 000020 ADD C.BUF+2(R5),C.CNT(R5) ; ADJUST COUNT ;AP0011
831 001150 016565 000024 000016 MOV C.BUF2(R5),C.BUF+2(R5) ; AND RESET BUFFER ADDRESS. ;AP0011
832 001156 RETURN ;AP0011
833 .ENDC ;**-27
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 17
REMUSR - RETURN UNACKNOWLEDGED I/LS MESSAGES
835 .SBTTL REMUSR - RETURN UNACKNOWLEDGED I/LS MESSAGES
836 ;+
837 ; **-REMUSR-RETURN UNACKNOWLEDGED I/LS MESSAGES
838 ;
839 ; THIS SUBROUTINE IS CALLED TO FLUSH UNACKNOWLEDGED INTERRUPT AND
840 ; LINK SERVICE MESSAGES TO THE SYSTEM BUFFER POOL DURING LOGICAL
841 ; LINK ABORT SEQUENCES.
842 ;
843 ; INPUTS:
844 ;
845 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
846 ;
847 ; OUTPUTS:
848 ;
849 ; AS DESCRIBED ABOVE
850 ;
851 ; REGISTERS MODIFIED:
852 ;
853 ; NONE
854 ;
855 ;-
856 .IF DF N$$USR
857
858 001160 REMUSR::SAVRG <R3,R5> ; SAVE REGISTERS
859 001164 010003 MOV R0,R3 ; POINT TO WAITING TO XMITED QUE ..I/LS
860 001166 062703 000052 ADD #L.XQ3,R3
861 001172 10$: CALL POPQUE ; GET SMALL DATA BUFFER TO BE RETURNED
862 001176 103403 BCS 20$ ; QUE EMTPY
863 001200 CALL RLSSMS
864 001204 000772 BR 10$ ; FLUSH QUE
865
866 001206 20$: RESRG <R5,R3>
867 001212 000241 CLC
868 001214 RETURN
869
870 .ENDC
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 18
COMMON PROTOCOL MESSAGE BUILDING ROUTINES
872 .SBTTL COMMON PROTOCOL MESSAGE BUILDING ROUTINES
873 .SBTTL DODC - SEND A DISCONNECT CONFIRM
874 ;+
875 ; **-DODC-SEND A DISCONNECT CONFIRM
876 ; **-DODCI-ALTERNATE ENTRY
877 ; **-DODCR-DO DODCI FOLLOWED BY RMNOD ON SRC AND DST NODES ;AP0026
878 ;
879 ; THIS ROUTINE IS CALLED TO SEND A DISCONNECT CONFIRM MESSAGE. THE
880 ; BUFFER WHICH RECEIVED THE MESSAGE IS USED FOR TRANSMISSION.
881 ;
882 ; INPUTS:
883 ;
884 ; R2 = POINTER TO SOURCE NODE NAME (ENTRY AT DODCI ONLY)
885 ; R5 = ADDRESS OF MESSAGE CCB TO BE USED FOR DC
886 ;
887 ; THE ARGBLK IS FORMATTED AS FOLLOWS:
888 ;
889 ; WD0 - POINTER TO REMOTE NODE NAME
890 ; WD1 - SOURCE LINK ADDRESS
891 ; WD2 - REMOTE LINK ADDRESS
892 ; WD3 - ERROR CODE
893 ;
894 ; OUTPUTS:
895 ;
896 ; THE MESSAGE IS BUILT IN THE BUFFER AND QUEUED FOR TRANSMISSION
897 ; THE RESOURCE WILL BE RELEASED WHEN TRANSMISSION COMPLETES.
898 ;
899 ;-
900 ;**-1
901 001216 016702 000000G DODC:: MOV $NSDDB,R2 ; COMPUTE THE ADDRESS OF THE LOCAL NODE
902 001222 016202 000034 MOV N$NOD+2(R2),R2 ; ...NAME BLOCK
903
904 001226 016700 000000G DODCI:: MOV $NSDDB,R0 ; COMPUTE THE ADDRESS OF THE SCRATCH
905 001232 062700 000012 ADD #N$TMP,R0 ; ...STORAGE AREA
906 001236 MAP C.BUF(R5) ; MAKE SURE THAT BUFFER IS MAPPED
907 001244 016504 000026 MOV C.BUF2+2(R5),R4 ; GET THE STARTING ADDRESS OF THE BUFFER
908 001250 062704 000020 ADD #16.,R4 ; LEAVE ENOUGH ROOM FOR A ROUTE HEADER
909 001254 010465 000016 MOV R4,C.BUF+2(R5) ; SET MESSSAGE STARTING ADDRESS
910 001260 122765 000034 000011 CMPB #NT$IDC,C.MOD(R5) ; IF WE AREN'T IN ;LW0015
911 001266 001403 BEQ 10$ ; THE INTERCEPT SPECIAL CASE, ;LW0015
912 001270 112765 000022 000011 MOVB #NT$ROU,C.MOD(R5) ; PUT MODIFIER IN CCB ;LW0015
913 001276 112724 000110 10$: MOVB #MF.CTL!MC.DC,(R4)+ ; FILL IN FLAGS ;LW0015
914 001302 012003 MOV (R0)+,R3 ; GET THE POINTER TO THE NODE NAME ;**-2
915 001304 012001 MOV (R0)+,R1 ; GET NEW DESTINATION LINK ADDRESS
916 001306 CALL PUTBIN ; PUT IT IN THE MESSAGE
917 001312 012001 MOV (R0)+,R1 ; GET NEW SOURCE LINK ADDRESS
918 001314 CALL PUTBIN ; PUT IT IN THE MESSAGE
919 001320 012001 MOV (R0)+,R1 ; GET THE DISCONNECT REASON CODE
920 001322 CALL PUTBIN ; PUT IT IN THE MESSAGE
921 001326 166504 000016 SUB C.BUF+2(R5),R4 ; LENGTH OF MSG
922 001332 010465 000020 MOV R4,C.CNT(R5) ; STORE COUNT IN 1ST DESC
923 001336 005000 CLR R0 ; INDICATE THAT THERE IS NO LLT
924 001340 CALLR SNDMDC ; SEND THE MSG
925
926 001344 010246 DODCR:: MOV R2,-(SP) ; SAVE SOURCE NODE ADDRESS ;AP0026
927 001346 CALL DODCI ; AND DO THE DISCONNECT. ;AP0026
928 001352 012603 MOV (SP)+,R3 ; GET SOURCE NODE BACK ;AP0026
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 18-1
DODC - SEND A DISCONNECT CONFIRM
929 001354 CALL RMNOD ; AND TRY TO LET IT GO. ;AP0026
930 001360 016703 000000G MOV $NSDDB,R3 ; THROUGH DATA BASE ;AP0026
931 001364 016303 000012 MOV N$TMP(R3),R3 ; GET THE DESTINATION NODE ;AP0026
932 001370 CALLR RMNOD ; AND TRY THAT ONE TOO. ;AP0026
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 19
SNDDI - SEND A DISCONNECT INITIATE
934 .SBTTL SNDDI - SEND A DISCONNECT INITIATE
935 ;+
936 ; **-SNDDI-SEND A DISCONNECT INITIATE MESSAGE
937 ;
938 ; INPUTS:
939 ;
940 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
941 ; R3 = DISCONNECT REASON CODE
942 ; R5 = ADDRESS OF CCB WITH USER DATA
943 ;
944 ; OUTPUTS:
945 ;
946 ; C-BIT CLEAR:
947 ; THE DISCONNECT MESSAGE IS SENT FOR THE LOGICAL LINK
948 ;
949 ; C-BIT SET:
950 ; ALLOCATION FAILURE ON MESSAGE BUFFER
951 ;
952 ; REGISTERS MODIFIED:
953 ;
954 ; NONE
955 ;
956 ;-
957
958 001374 004567 000000G SNDDI:: JSR R5,$REGSV ; SAVE THE REGISTERS (CO-ROUTINE)
959 001400 010502 MOV R5,R2 ; SAVE USER'S CCB ADDR
960 001402 CALL GETSMR ; ALLOCATE A MESSAGE BUFFER WITH RECOVERY
961 001406 112765 000010 000011 MOVB #NT$DIS,C.MOD(R5) ; SET SUBFUNCTION CODE FOR DISCONNECT INITIATE
962 001414 112760 000014 000025 MOVB #ST$DIS,L.NSTA(R0) ; STARTING TO DISCONNECT LINK
963 001422 112724 000070 MOVB #MF.CTL!MC.DI,(R4)+ ; MSGFLG FOR DISCONNECT INITIATE
964 001426 CALL BLDMSG ; BUILD DESTINATION & SOURCE LINK ADDRESSES
965 001432 016203 000020 MOV C.CNT(R2),R3 ; GET LENGTH OF USER DATA
966 001436 110324 MOVB R3,(R4)+ ; STORE LENGTH IN THE MESSAGE BUFFER
967 001440 001411 BEQ 10$ ; IF EQ, NO USER DATA
968 001442 010201 MOV R2,R1 ; COPY ADDRESS OF CCB
969 001444 010402 MOV R4,R2 ; COPY VIRTUAL ADDRESS OF MAPPED BUFFER
970 001446 $MVFBF R1,C.BUF ; MOVE THE DATA
971 001462 010204 MOV R2,R4 ; RESTORE THE BUFFER ADDRESS
972 001464 10$: CALLR SNDMSG ; COMPUTE MESSAGE LENGTH AND SEND IT AND RETURN
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 20
RECOVR - RESOURCE RECOVERY ENTRY FOR DATA STATE
974 .SBTTL RECOVR - RESOURCE RECOVERY ENTRY FOR DATA STATE
975 ;+
976 ; **-RECOVR-RESOURCE RECOVERY FOR DATA STATE
977 ;
978 ; THIS SUBROUTINE IS CALLED WHEN A RESOURCE ALLOCATION ERROR HAS BEEN
979 ; DETECTED FOR A LOGICAL LINK IN DATA STATE. LINK SERVICE MESSAGES AND
980 ; ACK/NAK MESSAGES FOR BOTH SUBCHANNELS ARE SENT IF REQUIRED. ALLOCATION
981 ; FAILURE ON ANY MESSAGE BUFFER RESULTS IN THE LINK RESOURCE FAILURE STATUS.
982 ;
983 ; INPUTS:
984 ;
985 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
986 ;
987 ; OUTPUTS:
988 ;
989 ; AS DESCRIBED
990 ;
991 ; REGISTERS MODIFIED:
992 ;
993 ; NONE
994 ;
995 ;-
996
997 001470 RECOVR::CALL SNDLS ; ATTEMPT TO SEND A LINK SERVICE FOR DATA
998 001474 CALL SNILS ; ATTEMPT TO SEND A LINK SERVICE FOR I/LS
999 ;AP0010
1000 .IF DF N$$SYS&N$$USR ;AP0010
1001 001500 105760 000041 TSTB L.PDV(R0) ; SYSTEM OR USER INTERFACE ? ;AP0010
1002 001504 001414 BEQ RECOV1 ; USER ;AP0010
1003 .ENDC ;AP0010
1004 ;AP0010
1005 .IF DF N$$SYS ;AP0010
1006 001506 032760 000010 000012 BIT #LF.FPN,L.FLG(R0) ; IF FLOW NOTIFICATION PENDING ;AP0010
1007 001514 001402 BEQ 10$ ; THEN ;AP0010
1008 001516 CALL NOTUSR ; TRY AGAIN. ;AP0010
1009 001522 032760 000010 000012 10$: BIT #LF.FPN,L.FLG(R0) ; IF NAK COMPLETE PENDING ;AP0010
1010 001530 001402 BEQ RECOV1 ; THEN ;AP0010
1011 001532 CALL NAKUSR ; TRY IT ALSO. ;AP0010
1012 .ENDC ;AP0010
1013
1014
1015 .SBTTL RECOV1 - ACK/NAK REQUIRED FOR DATA & I/LS SUBCHANNELS
1016 ;+
1017 ; **-RECOV1 - ACK/NAK REQUIRED FOR DATA & I/LS SUBCHANNELS
1018 ;
1019 ; THIS ROUTINE IS CALLED TO SEND AN ACK/NAK FOR THE DATA & I/LS SUBCHANNELS
1020 ; BASED ON THE CONTROL FLAGS IN THE LOGICAL LINK CELLS 'L.USA' & 'L.LSA' ;LW0005
1021 ; RESPECTIVELY. ;**-1
1022 ;
1023 ; INPUTS:
1024 ;
1025 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
1026 ;
1027 ;
1028 ; OUTPUTS:
1029 ;
1030 ; AS DESCRIBED
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 20-1
RECOV1 - ACK/NAK REQUIRED FOR DATA & I/LS SUBCHANNELS
1031 ;
1032 ; REGISTERS MODIFIED:
1033 ;
1034 ; NONE
1035 ;
1036 ;-
1037
1038 001536 RECOV1:: ;LW0005
1039 .IF DF N$$ICF ;LW0005
1040 BIT #LF.INT,(R0) ; IF THIS IS AN INTERCEPT LINK, ;LW0005
1041 BEQ 10$ ; (NOT) ;LW0005
1042 BIT #IF.NTS,I.FLG(R0);AND WE WERE SENDING A PAIR ;LW0005
1043 BEQ 5$ ; OF NAKS WHEN INTERRUPTED, ;AP0023
1044 CALLR NAKICF ; SEND 'EM AGAIN ;AP0023
1045 5$: RETURN ; AND GO AWAY. ;AP0023
1046 .ENDC ;LW0005
1047 001536 10$: CALL SNDAKD ; ATTEMPT TO SEND AN ACK/NAK FOR DATA ;LW0005
1048 001542 CALLR SNDAKI ; ATTEMPT TO SEND AN ACK/NAK FOR I/LS AND RETURN;**-1
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 21
SNDLS - SEND A LINK SERVICE FOR DATA
1050 .SBTTL SNDLS - SEND A LINK SERVICE FOR DATA
1051 .SBTTL SNILS - SEND A LINK SERVICE FOR INTERRUPT
1052 ;+
1053 ; **-SNDLS-SEND A LINK SERVICE FOR DATA
1054 ; **-SNILS-SEND A LINK SERVICE FOR INTERRUPT
1055 ;
1056 ; THIS ROUTINE IS CALLED WHEN A REQUEST TO MODIFY THE DATA REQUEST COUNT
1057 ; IS ISSUED BY THE USER AND WHEN A LINK SERVICE MESSAGE FOR DATA IS
1058 ; ACKNOWLEDGED. A LINK SERVICE MESSAGE IS TRANSMITTED IF THERE IS A
1059 ; NON ZERO ACCUMULATION OF REQUEST COUNTS AND NO PREVIOUS LINK SERVICE
1060 ; FOR DATA OUTSTANDING.
1061 ;
1062 ; INPUTS:
1063 ;
1064 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
1065 ;
1066 ;-
1067 .ENABL LSB
1068
1069 001546 004567 000000G SNILS:: JSR R5,$REGSV ; SAVE THE REGISTERS (CO-ROUTINE)
1070 001552 122710 000005 CMPB #ST$DAT,(R0) ; IS THE LINK IN DATA STATE ?
1071 001556 001132 BNE 30$ ; IF NE, NO - EXIT
1072 001560 116003 000044 MOVB L.LSF(R0),R3 ; GET REQUEST COUNT AND TEST CONTROL FLAG
1073 001564 100527 BMI 30$ ; IF MI, A LINK SERVICE ALREADY OUTSTANDING - EXIT
1074 001566 001526 BEQ 30$ ; IF EQ, NO REQUEST TO SEND - EXIT
1075 001570 CALL GETSM1 ; ALLOCATE A MESSAGE BUFFER WITH RECOVERY
1076 001574 112760 000200 000044 MOVB #LS.ILS,L.LSF(R0) ; CLEAR REQUEST COUNT AND SET CONTROL FLAG
1077 001602 052703 002000 BIS #LS.FCC*400,R3 ; SET LSTYPE (INTERRUPT)
1078 001606 112765 000002 000002 MOVB #2,C.RSV(R5) ; SET TYPE CODE IN CCB (LINK SERVICE FOR INTERRUPT)
1079 001614 000442 BR 10$ ; COMPLETE MESSAGE IN COMMON CODE
1080
1081 001616 004567 000000G SNDLS:: JSR R5,$REGSV ; SAVE THE REGISTERS (CO-ROUTINE)
1082 001622 122710 000005 CMPB #ST$DAT,(R0) ; IS THE LINK IN DATA STATE ?
1083 001626 001106 BNE 30$ ; IF NE, NO - EXIT
1084 001630 116003 000045 MOVB L.LSF+1(R0),R3 ; GET DATA REQUEST COUNT AND TEST CONTROL FLAG
1085 001634 100503 BMI 30$ ; IF MI, LINK SERVICE ALREADY OUTSTANDING - EXIT
1086 001636 032760 000060 000012 BIT #LF.DFL,L.FLG(R0) ; IF FLOW BEING MODIFIED ;AP0008
1087 001644 001411 BEQ 8$ ; THEN ;AP0008
1088 001646 032760 000040 000012 BIT #LF.DSP,L.FLG(R0) ; CHECK STOP FLOW FLAG. ;AP0008
1089 001654 001003 BNE 6$ ; IF NOT SET ;AP0008
1090 001656 052703 001000 BIS #LS.FC1*400,R3 ; START THE FLOW. ;AP0008
1091 001662 000402 BR 8$ ; OTHERWISE ;AP0008
1092 001664 052703 000400 6$: BIS #LS.FC0*400,R3 ; STOP THE FLOW. ;AP0008
1093 001670 005703 8$: TST R3 ; IF NO FLOW COUNT MODIFICATION ;AP0008
1094 001672 001464 BEQ 30$ ; THEN NOTHING TO DO. ;AP0008
1095 001674 CALL GETSM1 ; ALLOCATE A MESSAGE BUFFER WITH RECOVERY ;AP0008
1096 001700 042760 000060 000012 BIC #LF.DFL,L.FLG(R0) ; CLEAN UP FLOW REQUEST. ;AP0008
1097 001706 112760 000200 000045 MOVB #LS.DLS,L.LSF+1(R0) ; CLEAR DATA REQUEST COUNT AND SET CONTROL F;**-2
1098 001714 112765 000001 000002 MOVB #1,C.RSV(R5) ; SET TYPE CODE IN CCB (LINK SERVICE FOR DATA)
1099 ; LSTYPE FOR DATA (ZERO) ALREADY IN R3
1100
1101 001722 112765 000014 000011 10$: MOVB #NT$LS,C.MOD(R5) ; SET THE LINK SERVICE SUBFUNCTION CODE
1102 001730 112724 000020 MOVB #MF.DAT!MD.IM,(R4)+ ; STORE MESSAGE FLAGS
1103 001734 016001 000010 MOV L.RLA(R0),R1 ; DESTINATION ADDRESS
1104 001740 CALL PUTBIN ; PUT INTO MESSAGE
1105 001744 016001 000002 MOV L.LLA(R0),R1 ; SOURCE ADDRESS
1106 001750 CALL PUTBIN ; PUT INTO MESSAGE
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 21-1
SNILS - SEND A LINK SERVICE FOR INTERRUPT
1107 001754 016001 000032 MOV L.LSA(R0),R1 ; GET HIGHEST I/LS SEGNUM ACK'D BY THIS NODE
1108 001760 100012 BPL 20$ ; IF PL, NO ACK/NAK NEED TO BE SENT
1109 001762 032701 010000 BIT #LA.NMS,R1 ; IF IT IS A NAK ;AP0014
1110 001766 001402 BEQ 12$ ; THEN ;AP0014
1111 001770 CALL NKSCTR ; RECORD IT IN THE STATISTICS COUNTERS. ;AP0014
1112 001774 12$: ;AP0014
1113 001774 042760 170000 000032 BIC #LA.MSK,L.LSA(R0) ; CLEAR ACK REQUIRED FLAGS
1114 002002 CALL PUTBIN ; PUT ACKNUM INTO MESSAGE
1115 002006 016001 000016 20$: MOV L.NIN(R0),R1 ; SEGNUM FOR LINK SERVICE MESSAGE
1116 002012 005260 000016 INC L.NIN(R0) ; NEXT SEGNUM TO BE ASSIGNED
1117 002016 042760 170000 000016 BIC #LA.MSK,L.NIN(R0) ; CLEAR WRAPAROUND
1118 002024 CALL PUTBIN ; PUT SEGNUM INTO MESSAGE
1119 002030 010301 MOV R3,R1 ; COPY REQUEST COUNT AND LSTYPE
1120 002032 000301 SWAB R1 ; LSTYPE IS FIRST, LSVAL IS SECOND IN MESSAGE
1121 002034 CALL PUTBIN ; PUT REQUEST COUNT AND LSTYPE INTO MESSAGE
1122 002040 CALLR SNDMSI ; COMPUTE LENGTH, SEND THE MESSAGE AND RETURN
1123
1124 002044 30$: RETURN ; RETURN TO CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 22
SNDAKD - SEND AN ACK/NAK FOR DATA
1126 .SBTTL SNDAKD - SEND AN ACK/NAK FOR DATA
1127 .SBTTL SNDAKI - SEND AN ACK/NAK FOR I/LS
1128 ;+
1129 ; **-SNDAKD-SEND AN ACK/NAK FOR DATA
1130 ; **-SNDAKI-SEND AN ACK/NAK FOR I/LS
1131 ;
1132 ; THESE SUBROUTINES ARE CALLED TO SEND AN ACK/NAK MESSAGE FOR THE DATA OR I/LS
1133 ; SUBCHANNELS OF A LOGICAL LINK. THE LOGICAL LINK TABLE CONTAINS ALL
1134 ; THE CONTEXT REQUIRED TO SEND THE MESSAGE IN THE CELLS 'L.USA' AND 'L.LSA'
1135 ; RESPECTIVELY.
1136 ;
1137 ; INPUTS:
1138 ;
1139 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
1140 ;
1141 ; OUTPUTS:
1142 ;
1143 ; IF AN ACK/NAK IS REQUIRED, AND A MESSAGE BUFFER CAN BE ALLOCATED,
1144 ; THE ACK/NAK MESSAGE IS TRANSMITTED AND THE ACK/NAK REQUIRED FLAGS
1145 ; ARE CLEARED.
1146 ; IF A MESSAGE BUFFER CANNOT BE ALLOCATED, THE RESOURCE RECOVERY
1147 ; FLAG IS SET IN THE LOGICAL LINK TABLE.
1148 ; IF NO ACK/NAK IS REQUIRED, OR THERE ARE OUTSTANDING TRANSMITS ON
1149 ; THE LOGICAL LINK SUBCHANNEL, NO ACTION IS TAKEN.
1150 ;
1151 ; REGISTERS MODIFIED:
1152 ;
1153 ; NONE
1154 ;
1155 ;-
1156
1157 002046 004567 000000G SNDAKD::JSR R5,$REGSV ; SAVE REGISTERS (CO-ROUTINE)
1158 002052 016003 000030 MOV L.USA(R0),R3 ; GET THE ACKNUM AND TEST THE CONTROL FLAGS
1159 002056 100372 BPL 30$ ; IF PL, NO ACK/NAK NEEDS TO BE SENT - EXIT
1160 002060 105760 000005 TSTB L.TIPD(R0) ; ANY DATA SUBCHANNEL TRANSMITS IN PROGRESS ?
1161 002064 001367 BNE 30$ ; IF NE, YES - DON'T SEND THE ACK NOW
1162 002066 122710 000006 CMPB #ST$DIP,(R0) ; IS THE LINK DISCONNECTING ?
1163 002072 001764 BEQ 30$ ; IF EQ, YES - DON'T TRY TO SEND AN ACK
1164 002074 CALL GETSMR ; ALLOCATE A MESSAGE BUFFER WITH RECOVERY
1165 002100 112765 000016 000011 MOVB #NT$AKD,C.MOD(R5) ; SET SUBFUNCTION CODE FOR A DATA ACK/NAK
1166 002106 032703 010000 BIT #LA.NMS,R3 ; IF WE ARE SENDING A NAK ;AP0014
1167 002112 001402 BEQ 40$ ; THEN ;AP0014
1168 002114 CALL NKSCTR ; RECORD IT IN THE STATISTICS COUNTERS. ;AP0014
1169 002120 40$: ;AP0014
1170 002120 042760 170000 000030 BIC #LA.MSK,L.USA(R0) ; CLEAR ACK/NAK CONTROL FLAGS (MESSAGE WILL BE SENT)
1171 002126 112724 000004 MOVB #MF.ACK!MA.DA,(R4)+ ; STORE MESSAGE FLAGS FOR A DATA SUBCHANNEL ACK
1172 002132 CALL BLDMSG ; BUILD LINK ADDRESSES AND STORE ACKNUM IN MESSAGE
1173 002136 CALLR SNDMSG ; COMPUTE LENGTH, SEND THE MESSAGE AND RETURN
1174
1175
1176 002142 004567 000000G SNDAKI::JSR R5,$REGSV ; SAVE THE REGISTERS (CO-ROUTINE)
1177 002146 016003 000032 MOV L.LSA(R0),R3 ; GET THE ACKNUM AND TEST THE CONTROL FLAGS
1178 002152 100334 BPL 30$ ; IF PL, NO ACK/NAK NEEDS TO BE SENT - EXIT
1179 002154 122710 000006 CMPB #ST$DIP,(R0) ; IS THE LINK DISCONNECTING ?
1180 002160 001731 BEQ 30$ ; IF EQ, YES - DON'T TRY TO SEND AN ACK
1181 002162 032710 040000 BIT #LF.LCL,(R0) ; IS THIS AN LOCAL LOGICAL LINK ?
1182 002166 001003 BNE 5$ ; IF NE, YES - DON'T DELAY THE ACK/NAK
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 22-1
SNDAKI - SEND AN ACK/NAK FOR I/LS
1183 002170 105760 000004 TSTB L.TIPI(R0) ; ANY I/LS SUBCHANNEL TRANSMITS IN PROGRESS ?
1184 002174 001323 BNE 30$ ; IF NE, YES - DON'T SEND THE ACK NOW
1185 002176 5$: CALL GETSMR ; ALLOCATE A MESSAGE BUFFER WITH RECOVERY
1186 002202 112765 000020 000011 MOVB #NT$AKI,C.MOD(R5) ; SET SUBFUNCTION CODE FOR A I/LS ACK/NAK
1187 002210 032703 010000 BIT #LA.NMS,R3 ; IF WE ARE SENDING A NAK ;AP0014
1188 002214 001402 BEQ 50$ ; THEN ;AP0014
1189 002216 CALL NKSCTR ; RECORD IT IN THE STATISTICS COUNTERS. ;AP0014
1190 002222 50$: ;AP0014
1191 002222 042760 170000 000032 BIC #LA.MSK,L.LSA(R0) ; CLEAR ACK/NAK CONTROL FLAGS (MESSAGE WILL BE SENT)
1192 002230 112724 000024 MOVB #MF.ACK!MA.IL,(R4)+ ; STORE MESSAGE FLAGS FOR A I/LS SUBCHANNEL ACK
1193 002234 CALL BLDMSG ; BUILD LINK ADDRESSES AND STORE ACKNUM IN MESSAGE
1194 002240 CALLR SNDMSI ; COMPUTE LENGTH, SEND THE MESSAGE AND RETURN
1195
1196 .DSABL LSB
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 23
SNDAKI - SEND AN ACK/NAK FOR I/LS
1198 ;+ ;AP0014
1199 ; STATISTICS COUNTER LOGGING ;AP0014
1200 ; ;AP0014
1201 ; NO REGISTERS MODIFIED ;AP0014
1202 ;- ;AP0014
1203 ;AP0014
1204 002244 004267 000010 NKSCTR::JSR R2,LOGCTR ; DO LOGGING ;AP0014
1205 002250 000010 S$NKS ; FOR NAKS SENT COUNTER. ;AP0014
1206 ;AP0014
1207 002252 004267 000002 EMRCTR::JSR R2,LOGCTR ; DO LOGGING ;AP0014
1208 002256 000006 S$EMR ; FOR EXTRANEOUS MESSAGES RECEIVED COUNTER. ;AP0014
1209 ;AP0014
1210 002260 011246 LOGCTR: MOV (R2),-(SP) ; SAVE THE COUNTER OFFSET. ;AP0014
1211 002262 016702 000000G MOV $NSDDB,R2 ; GET THE ;AP0014
1212 002266 016202 000044 MOV N$STS+2(R2),R2 ; STATISTICS DATA BLOCK ;AP0014
1213 002272 062602 ADD (SP)+,R2 ; AND ADD THE OFFSET TO THE COUNTER. ;AP0014
1214 002274 005212 INC (R2) ; BUMP THE COUNTER ;AP0014
1215 002276 001001 BNE 10$ ; AND IF OVERFLOW ;AP0014
1216 002300 005312 DEC (R2) ; THEN BACK IT UP. ;AP0014
1217 002302 012602 10$: MOV (SP)+,R2 ; RESTORE R2. ;AP0016
1218 002304 RETURN ;AP0016
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 24
NAKICF - SPECIAL INTERCEPT NAK ROUTINE
1220 .SBTTL NAKICF - SPECIAL INTERCEPT NAK ROUTINE
1221 ;LW0003
1222 ;+ ;LW0003
1223 ; **-NAKICF-SPECIAL INTERCEPT NAK ROUTINE ;LW0003
1224 ; ;LW0003
1225 ; THIS ROUTINE SENDS A NAK OF SEGMENT/MESSAGE 0 ON THE DATA AND I/LS ;LW0003
1226 ; SUBCHANNELS OF AN INTERCEPT LINK. THE ROUTINE DIFFERS FROM THE ;LW0003
1227 ; STANDARD ACK/NAK ROUTINES IN THAT IT SENDS THE MESSAGES TO THE SOURCE ;LW0003
1228 ; NODE RATHER THAN THE DESTINATION ONE. ;LW0003
1229 ; ;LW0003
1230 ; INPUTS: ;LW0003
1231 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE ;LW0003
1232 ; ;LW0003
1233 ; REGISTERS MODIFIED: NONE ;LW0003
1234 ; ;LW0003
1235 ;- ;LW0003
1236 ;LW0003
1237 .IF DF N$$ICF ;LW0003
1238 NAKICF::JSR R5,$REGSV ; SAVE REGISTERS (CO-ROUTINE) ;LW0003
1239 SAVMAP ; SAVE CURRENT MAPPING ;LW0003
1240 CALL GETSMS ; ALLOCATE A MESSAGE BUFFER ;AP0022
1241 BCS 60$ ; IF WE CAN ;AP0022
1242 MOV #<<NT$IDN*400>!<MF.ACK!MA.DA>>,R1 ;MSGFLGS AND FNC MODIFIER ;AP0022
1243 CALL 80$ ; CONSTRUCT AND SEND THE NAK ;AP0022
1244 INCB I.TIPD(R0) ; INCREMENT DATA TRANSMIT COUNT. ;AP0022
1245 CALL GETSMS ; ALLOCATE A MESSAGE BUFFER ;AP0022
1246 BCS 60$ ; IF WE CAN ;AP0022
1247 MOV #<<NT$ILN*400>!<MF.ACK!MA.IL>>,R1 ;MSGFLGS/MODIFIER FOR I/LS ;AP0022
1248 CALL 80$ ; CONSTRUCT AND SEND THE NAK ;AP0022
1249 INCB I.TIPI(R0) ; INCREMENT I/LS TRANSMIT COUNT. ;AP0022
1250 BIC #IF.NTS,I.FLG(R0);UNFLAG ;LW0003
1251 CLC ;LW0003
1252 40$: RESMAP ; RESTORE ORIGINAL MAPPING ;LW0003
1253 RETURN ; DONE ;LW0003
1254 ;LW0003
1255 60$: BIS #LF.RSU,(R0) ; SET TO TRY AGAIN ;LW0003
1256 BR 40$ ; AND QUIT FOR NOW. ;LW0003
1257 ;LW0003
1258 80$: MOVB R1,(R4)+ ; SET MSGFLGS FOR MESSAGE ;LW0003
1259 SWAB R1 ;LW0003
1260 MOVB R1,C.MOD(R5) ; MODIFIER FOR MESSAGE ;LW0003
1261 MOV #7,C.CNT(R5) ; MESSAGE LENGTH ;LW0003
1262 MOV I.ILA(R0),R1 ; DESTINATION LINK ADDRESS ;LW0003
1263 CALL PUTBIN ;LW0003
1264 MOV I.LLA(R0),R1 ; SOURCE LINK ADDRESS ;LW0003
1265 CALL PUTBIN ;LW0003
1266 MOV #110000,R1 ; CODE FOR NAK OF 0 ;LW0003
1267 CALL PUTBIN ;LW0003
1268 MOV I.IREM(R0),R3 ; GET ADJACENT NODE ENTRY ;AP0023
1269 CALLR SNDICF ; SEND THE MESSAGE ;LW0003
1270 .ENDC ;LW0003
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 25
MESSAGE TRANSMISSION ROUTINES
1272 .SBTTL MESSAGE TRANSMISSION ROUTINES
1273 .SBTTL SNDMDC - SEND MESSAGE NOT ASSOCIATED WITH AN LLT
1274 .SBTTL SNDMSI - SEND MESSAGE FOR I/LS SUBCHANNEL
1275 .SBTTL SNDMSG - SEND MESSAGE FOR DATA SUBCHANNEL
1276 .SBTTL SNDALT - SEND MESSAGE COMMON PROCESSING
1277 ;+
1278 ; **-SNDMDC-SEND MESSAGE NOT ASSOCIATED WITH AN LLT
1279 ;
1280 ; **-SNDMSI-SEND MESSAGE FOR I/LS SUBCHANNEL
1281 ; **-SNDMSG-SEND MESSAGE FOR DATA SUBCHANNEL
1282 ; **-SNDALT-COMMON SEND MESSAGE PROCESSING
1283 ;
1284 ; INPUTS:
1285 ;
1286 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE (NOT FOR SNDMDC)
1287 ; R3 = POINTER TO DESTINATION NODE NAME (SNDICF ENTRY ONLY) ;LW0004
1288 ; R4 = MESSAGE POINTER (FOR MESSAGE LENGTH CALCULATION) ;**-1
1289 ; R5 = ADDRESS OF MESSAGE CCB
1290 ;
1291 ; OUTPUTS:
1292 ;
1293 ; R5 = 0 (MESSAGE HAS BEEN TRANSMITTED)
1294 ;
1295 ; REGISTERS MODIFIED:
1296 ;
1297 ; R1, R2, R3, AND R4
1298 ;
1299 ;-
1300 .ENABL LSB
1301
1302 002306 010065 000004 SNDMDC::MOV R0,C.NSP(R5) ; INDICATE NO LLT EXISTS
1303 002312 105765 000006 TSTB C.LIN(R5) ; MESSAGE RECEIVED FROM INTERNAL LOOP ?
1304 002316 001427 BEQ 20$ ; IF EQ, INTERNAL LOOP - KEEP IT THAT WAY
1305 002320 005703 TST R3 ; IF THERE IS NO ;LW0018
1306 002322 001043 BNE 30$ ; DESTINATION NODE NAME, ;LW0018
1307 002324 CALL SETPLD ; GET THE ADDRESS OF THE SOURCE LINE ;LW0018
1308 002330 016303 000010 MOV P$NOD(R3),R3 ; AND THE ADDRESS IF ITS ADJACENT NODE ;LW0018
1309 002334 000436 BR 30$ ; OTHERWISE ROUTE THE MESSAGE
1310
1311 002336 105260 000004 SNDMSI::INCB L.TIPI(R0) ;XMTTD AN I/LS MESSAGE
1312 002342 000402 BR 10$
1313
1314 002344 105260 000005 SNDMSG::INCB L.TIPD(R0) ; XMMTD DATA MESSAGES
1315 002350 166504 000016 10$: SUB C.BUF+2(R5),R4 ; COMPUTE THE LENGTH OF THE MESSAGE
1316 002354 010465 000020 MOV R4,C.CNT(R5) ; AND STORE IT IN THE CCB
1317 002360 016003 000006 SNDALT::MOV L.REM(R0),R3 ; GET THE POINTER TO THE DESTINATION NODE
1318
1319 002364 010065 000004 SNDICF::MOV R0,C.NSP(R5) ; SAVE THE ADDRESS OF THE LLT
1320 002370 032710 040000 BIT #LF.LCL,(R0) ; IS THIS AN INTERNAL LINK ?
1321 002374 001416 BEQ 30$ ; IF EQ, NO - ROUTE THE MESSAGE
1322
1323 002376 010504 20$: MOV R5,R4 ;COPY THE ADDRESS OF THE CCB
1324 002400 012764 000000C 000006 MOV #PD$NSP*400,C.LIN(R4) ;SET PDV AND CHANNEL
1325 002406 112764 000014 000010 MOVB #FC.RCP,C.FNC(R4) ;SET FUNCTION CODE
1326 002414 012764 000001 000012 MOV #CS.SUC,C.STS(R4) ;SET SUCCESS STATUS (DEFAULT) ;LW0006
1327 002422 $QLLC ; QUEUE TO SELF
1328 002426 005005 CLR R5 ; INDICATE THAT CCB WAS PASSED ON
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 25-1
SNDALT - SEND MESSAGE COMMON PROCESSING
1329 002430 RETURN ; RETURN TO CALLER
1330
1331 002432 016301 000002 30$: MOV D$CHN(R3),R1 ; GET THE POINTER TO THE PHYSICAL LINK BLOCK
1332 002436 001757 BEQ 20$ ; NONE - LOCAL DESTINATION ;LW0024
1333 002440 122711 000005 CMPB #PS$UP,(R1) ; IS THIS LINK UP ?
1334 002444 001015 BNE 100$ ; IF NE, ERROR
1335 002446 005065 000006 CLR C.LIN(R5) ; SET UP THE NEW CHANNEL NUMBER
1336 002452 116165 000004 000006 MOVB P$CHN(R1),C.LIN(R5) ; ...
1337 002460 132775 000010 000016 BITB #MF.CTL,@C.BUF+2(R5) ; IF THIS IS A CNTL MSG THEN WE NEED RTHDR
1338 002466 001402 BEQ 40$ ; NO..DATA OR I/LS NO RTHDR
1339 002470 CALL RTHDR ; BUILD THE ROUTE HEADER
1340 002474 40$: CALLR SNDLOW ; FOWARD THE MESSAGE TO THE DLC
1341
1342 ;
1343 ; TEMPORARY DEBUGGING AID
1344 ;
1345 002500 100$: CRASH
1346
1347 .DSABL LSB
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 26
RTHDR - BUILD A ROUTE HEADER
1349 .SBTTL RTHDR - BUILD A ROUTE HEADER
1350 ;+
1351 ; **-RTHDR-BUILD AN ASCII ROUTE HEADER
1352 ;
1353 ; THIS ROUTINE IS CALLED TO BUILD AN ASCII ROUTE HEADER IN FRONT OF
1354 ; AN NSP MESSAGE.
1355 ;
1356 ; INPUTS:
1357 ;
1358 ; R0 = ADDRESS OF AN LLT OR ZERO
1359 ; R2 = POINTER TO SOURCE NODE NAME (DC AND INTERCEPT)
1360 ; R3 = POINTER TO DESTINATION NODE NAME
1361 ; R5 = ADDRESS OF THE MESSAGE CCB
1362 ; C.BUF+2 VIRTUAL ADDRESS OF THE MESSAGE
1363 ; C.CNT LENGTH OF THE MESSAGE
1364 ;
1365 ; OUTPUTS:
1366 ;
1367 ; IF THERE IS NO LOGICAL LINK TABLE ADDRESS (R0 EQUAL TO ZERO),
1368 ; OR THE LINK IS AN INTERCEPT LINK, THE ROUTE HEADER IS BUILT
1369 ; USING THE SOURCE AND DESTINATION NODE NAME POINTERS IN R2 AND
1370 ; R3, RESPECTIVELY. OTHERWISE, THE SOURCE NODE NAME IS ASSUMED
1371 ; TO BE THE LOCAL NODE.
1372 ; THE MESSAGE POINTER AND THE COUNT IN THE CCB ARE UPDATED TO
1373 ; REFLECT THE LENGTH OF THE ROUTE HEADER.
1374 ;
1375 ; REGISTERS MODIFIED:
1376 ;
1377 ; R1, R2, R3, AND R4
1378 ;
1379 ;-
1380
1381 002502 016504 000016 RTHDR:: MOV C.BUF+2(R5),R4 ; START BUILDING ROUTE HEADER HERE ;LW0012
1382 002506 010446 MOV R4,-(SP) ; SAVE START OF RTHDR ;**-1
1383
1384 .IF DF N$$ICF
1385
1386 TST R0 ; IS THERE AN LOGICAL LINK ?
1387 BEQ 10$ ; IF EQ, NO - USE R2 FOR SOURCE NODE NAME
1388 BIT #LF.INT,(R0) ; IS THIS AN INTERCEPT LINK ?
1389 BNE 10$ ; IF NE, YES - USE R2 FOR SOURCE NODE NAME
1390
1391 .ENDC
1392
1393 002510 016702 000000G MOV $NSDDB,R2 ; COMPUTE THE ADDRESS OF THE LOCAL NODE
1394 002514 016202 000034 MOV N$NOD+2(R2),R2 ; ...NAME BLOCK
1395 002520 062702 000005 10$: ADD #D$LNG,R2 ; POINT TO THE LENGTH OF THE NODE NAME
1396 002524 112201 MOVB (R2)+,R1 ; GET THE LENGTH
1397 002526 060201 ADD R2,R1 ; POINT JUST BEYOND THE NODE NAME
1398 002530 114144 20$: MOVB -(R1),-(R4) ; COPY THE SOURCE NODE NAME AND THE LENGTH
1399 002532 020201 CMP R2,R1 ; HAVE WE MOVED THE NAME AND THE LENGTH ?
1400 002534 101775 BLOS 20$ ; IF LOS, NOT YET - THE LAST PASS COPIES THE LENGTH
1401 002536 062703 000005 ADD #D$LNG,R3 ; POINT TO THE LENGTH OF THE DESTINATION NAME
1402 002542 112301 MOVB (R3)+,R1 ; GET THE LENGTH
1403 002544 060301 ADD R3,R1 ; POINT JUST BEYOND THE NODE NAME
1404 002546 114144 30$: MOVB -(R1),-(R4) ; COPY THE DESTINATION NODE NAME AND THE LENGTH
1405 002550 020301 CMP R3,R1 ; HAVE WE MOVED THE NAME AND THE LENGTH ?
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 26-1
RTHDR - BUILD A ROUTE HEADER
1406 002552 101775 BLOS 30$ ; IF LOS, NOT YET - THE LAST PASS COPIES THE LENGTH
1407 002554 112744 000106 MOVB #RH.HDR!RH.RFM!RH.PR1,-(R4) ; BUILD THE ROUTE FLAGS
1408 002560 010465 000016 MOV R4,C.BUF+2(R5) ; NEW START OF MESSAGE
1409 002564 160416 SUB R4,(SP) ; LENGTH OF HEADER JUST BUILT
1410 002566 062665 000020 ADD (SP)+,C.CNT(R5) ; ADJUST COUNT TO REFLECT HEADER
1411 002572 RETURN ; RETURN TO CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 27
SETPLD - MAP TO THE PLD ENTRY FOR A LINE
1413 .SBTTL SETPLD - MAP TO THE PLD ENTRY FOR A LINE
1414 ;+ ;LW0018
1415 ; **-SETPLD - MAP TO THE PLD ENTRY FOR A LINE ;LW0018
1416 ; ;LW0018
1417 ; INPUTS: ;LW0018
1418 ; ;LW0018
1419 ; R5 = ADDRESS OF MESSAGE CCB ;LW0018
1420 ; C.LIN = CHANNEL NUMBER FOR LINE ;LW0018
1421 ; ;LW0018
1422 ; OUTPUTS: ;LW0018
1423 ; ;LW0018
1424 ; R3 = ADDRESS OF PLD ENTRY FOR GIVEN CHANNEL ;LW0018
1425 ; ;LW0018
1426 ;- ;LW0018
1427 ;LW0018
1428 002574 SETPLD::SAVRG <R0,R1> ;LW0024
1429 002600 005000 CLR R0 ; PICK UP ;LW0018
1430 002602 156500 000006 BISB C.LIN(R5),R0 ; CHANNEL NUMBER ;LW0018
1431 002606 012701 000014 MOV #P$LEN,R1 ; CALCULATE OFFSET ;LW0018
1432 002612 CALL $MUL ; OF PLD ENTRY IN TABLE ;LW0018
1433 002616 016703 000000G MOV $NSDDB,R3 ; ADDRESS THE ;LW0018
1434 002622 016303 000030 MOV N$PLD+2(R3),R3 ; PHYSICAL LINE DATA BASE ;LW0018
1435 002626 060103 ADD R1,R3 ; ADDRESS THE RIGHT ENTRY ;LW0018
1436 002630 RESRG <R1,R0> ;LW0018
1437 002634 RETURN ;LW0018
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 28
SNDLOW - FORWARD A MESSAGE TO THE DLC
1439 .SBTTL SNDLOW - FORWARD A MESSAGE TO THE DLC
1440 ;+
1441 ; **-SNDLOW-SEND A MESSAGE TO A DLC
1442 ;
1443 ; INPUTS:
1444 ;
1445 ; R5 = ADDRESS OF A MESSAGE CCB
1446 ; C.LIN PROCESS CHANNEL NUMBER
1447 ;
1448 ; OUTPUTS:
1449 ;
1450 ; THE CCB IS FORWARDED TO A DLC PROCESS WITH A TRANSMIT ENABLE
1451 ; FUNCTION CODE.
1452 ; R5 = 0 (TO INDICATE MESSAGE IS TRANSMITTED)
1453 ;
1454 ; REGISTERS MODIFIED:
1455 ;
1456 ; NONE
1457 ;
1458 ;-
1459
1460 002636 SNDLOW::SAVRG <R4> ; SAVE R4
1461 002640 010504 MOV R5,R4 ; COPY ADDRESS OF THE MESSAGE CCB
1462 002642 012764 100014 000022 MOV #CF.LB!CF.EOM!CF.SOM,C.FLG(R4) ; SET EOM AND SOMAND LAST BUFFER
1463 002650 112764 000000 000010 MOVB #FC.XME,C.FNC(R4) ; SET FUNCTION CODE
1464 002656 $QDLC ; QUEUE REQUEST TO THE DLC
1465 002662 RESRG <R4> ; RESTORE R4
1466 002664 005005 CLR R5 ; ALSO CLEARS C-BIT
1467 002666 RETURN ; RETURN TO CALLER
1468
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 29
BUFFER ALLOCATION AND DEALLOCATION ROUTINES
1470 .SBTTL BUFFER ALLOCATION AND DEALLOCATION ROUTINES
1471 .SBTTL GETSMR - ALLOCATE A MESSAGE BUFFER
1472 .SBTTL GETSM1 - ALLOCATE A MESSAGE BUFFER SUBJECT TO THRESHOLD
1473 ;+
1474 ; **-GETSMR-ALLOCATE A MESSAGE BUFFER WITH RECOVERY
1475 ; **-GETSM1-CONDITIONALLY ALLOCATE A MESSAGE BUFFER
1476 ;
1477 ; THIS SUBROUTINE IS CALLED BY MESSAGE BUILDING ROUTINES WHICH
1478 ; NEED A MESSAGE BUFFER AND RECOVERY PROCESSING ON AN ALLOCATION
1479 ; FAILURE. THE ALTERNATE ENTRY POINT WILL FAIL TO ALLOCATE A BUFFER
1480 ; IF THE CURRENT SMALL DATA BUFFER COUNT IS BELOW A SET THRESHOLD.
1481 ;
1482 ; INPUTS:
1483 ;
1484 ; 0(SP) = RETURN ADDRESS TO CALLER
1485 ; 2(SP) = RETURN ADDRESS TO CALLER'S CALLER
1486 ; R0 = ADDRESS OF A LOGICAL LINK TABLE
1487 ;
1488 ; OUTPUTS:
1489 ;
1490 ; ON CO-ROUTINE RETURN TO CALLER:
1491 ; 0(SP) = RETURN ADDRESS TO CO-ROUTINE
1492 ; R0 = ADDRESS OF LLT
1493 ; R4 = VIRTUAL ADDRESS OF MESSAGE BUFFER (MAPPED)
1494 ; R5 = ADDRESS OF MESSAGE CCB
1495 ;
1496 ; RETURN TO CALLER'S CALLER AND C-BIT CLEAR:
1497 ; BUFFER MAPPING AND REGISTERS PRESERVED, ALL WENT WELL
1498 ;
1499 ; C-BIT SET:
1500 ; ALLOCATION FAILURE ON THE MESSAGE CCB OCCURRED
1501 ; THE RESOURCE RECOVERY REQUIRED FLAG IS SET IN THE LOGICAL LINK TABLE
1502 ;
1503 ; REGISTERS MODIFIED:
1504 ;
1505 ; R1
1506 ;
1507 ;-
1508 .ENABL LSB
1509
1510 002670 012601 GETSM1: MOV (SP)+,R1 ; GET RETURN ADDRESS TO CALLER
1511 002672 022767 000001 000000G CMP #1,$SDBCT ; IS CURRENT LEVEL ABOVE OUR THRESHOLD ?
1512 002700 103404 BLO 10$ ; IF LO, YES - CONTINUE
1513 002702 CALL CTRES ; COUNT THIS AS AN ALLOCATION FAILURE (SETS C-BIT)
1514 002706 000410 BR 20$ ; SET RESOURCE RECOVERY REQUIRED AND EXIT
1515
1516 002710 012601 GETSMR: MOV (SP)+,R1 ; GET RETURN ADDRESS TO CALLER
1517 002712 10$: SAVMAP ; SAVE CURRENT BUFFER MAPPING
1518 002716 CALL GETSMS ; ALLOCATE A SMALL DATA BUFFER AND CCB
1519 002722 103005 BCC 30$ ; IF CC, NO ALLOCATION FAILURE - CONTINUE
1520 002724 RESMAP ; RESTORE PREVIOUS BUFFER MAPPING
1521 002730 052710 100000 20$: BIS #LF.RSU,(R0) ; MARK RESOURCE RECOVERY REQUIRED IN THE LLT
1522 002734 000404 BR 40$ ; ...AND RETURN TO CALLER'S CALLER WITH C-BIT SET
1523
1524 002736 30$: CALL (R1) ; CALL THE CALLER BACK WITH THE BUFFER
1525 002740 RESMAP ; RESTORE PREVIOUS BUFFER MAPPING
1526 002744 000241 CLC ; INDICATE SUCCESS
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 29-1
GETSM1 - ALLOCATE A MESSAGE BUFFER SUBJECT TO THRESHOLD
1527 002746 40$: RETURN ; RETURN TO CALLER'S CALLER
1528
1529 .DSABL LSB
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 30
GETSMS - ALLOCATE A SMALL DATA BUFFER
1531 .SBTTL GETSMS - ALLOCATE A SMALL DATA BUFFER
1532 ;+
1533 ; **-GETSMS-ALLOCATE A SMALL DATA BUFFER AND CCB
1534 ;
1535 ; INPUTS:
1536 ;
1537 ; NONE
1538 ;
1539 ; OUTPUTS:
1540 ;
1541 ; C-BIT CLEAR:
1542 ; R4 = POINTER TO MESSAGE AREA
1543 ; R5 = ADDRESS OF CCB
1544 ;
1545 ; C-BIT SET:
1546 ; ALLOCATION FAILURE, RESOURCE ERROR COUNTER IS INCREMENTED
1547 ; R4 AND R5 ARE UNDEFINED
1548 ;
1549 ; NOTE: THIS ROUTINE MAPS TO THE MESSAGE AREA
1550 ;-
1551
1552 002750 GETSMS::CALL $CSBGT ; ALLOCATE A SMALL DATA BUFFER
1553 002754 103412 BCS CTRES ; IF CS, ALLOCATION FAILURE - RECORD IT
1554 002756 010405 MOV R4,R5 ; COPY ADDRESS OF CCB
1555 002760 016504 000016 MOV C.BUF+2(R5),R4 ; GET VIRTUAL ADDRESS OF DATA BUFFER
1556 002764 010465 000026 MOV R4,C.BUF2+2(R5) ; SAVE START OF BUFFER
1557 002770 062704 000020 ADD #16.,R4 ; LEAVE ENOUGH ROOM FOR A ROUTE HEADER
1558 002774 010465 000016 MOV R4,C.BUF+2(R5) ; SAVE VIRTUAL ADDRESS
1559 003000 RETURN ; RETURN TO CALLER
1560
1561
1562 .SBTTL CTRES - COUNT RESOURCE ALLOCATION FAILURES
1563 ;+
1564 ; **-CTRES-COUNT RESOURCE ALLOCATION FAILURES
1565 ;
1566 ; INPUTS:
1567 ;
1568 ; NONE
1569 ;
1570 ; OUTPUTS:
1571 ;
1572 ; C-BIT SET:
1573 ; THE RESOURCE ALLOCATION COUNTER IN THE NSP STATITICS BLOCK IS
1574 ; INCREMENTED BY ONE.
1575 ;
1576 ;-
1577
1578 003002 CTRES:: SAVRG <R1> ; SAVE CALLER'S R1
1579 003004 016701 000000G MOV $NSDDB,R1 ; RECORD THE ALLOCATION FAILURE EVENT
1580 003010 016101 000044 MOV N$STS+2(R1),R1 ; GET THE ADDRESS OF HE STATISTICS BLOCK
1581 003014 005761 000014 TST S$RES(R1) ; CHECK FOR COUNTER OVERFLOW
1582 003020 100402 BMI 10$ ; IF MI, OVERFLOW - DON'T TOUCH COUNTER
1583 003022 005261 000014 INC S$RES(R1) ; OTHERWISE BUMP THE COUNT OF RESOURCE ERRORS
1584 003026 10$: RESRG <R1> ; RESTORE CALLER'S R1
1585 003030 000261 SEC ; INDICATE ALLOCATION FAILURE
1586 003032 RETURN ; RETURN TO CALLER
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 31
FRBDAT - DECREMENT DATA COUNT AND FREE BUFFER
1588 .SBTTL FRBDAT - DECREMENT DATA COUNT AND FREE BUFFER
1589 .SBTTL FRBILS - DECREMENT ILS COUNT AND FREE MESSAGE BUFFER
1590 ;+
1591 ; **-FRBDAT-DECREMENT DATA COUNT AND FREE THE MESSAGE BUFFER
1592 ; **-FRBILS-DECREMENT ILS COUNT AND FREE MESSAGE BUFFER
1593 ;
1594 ; THESE SUBROUTINES ARE CALLED TO DECREMENT THE TRANSMIT IN PROGRESS
1595 ; COUNTS IN THE LOGICAL LINK TABLE AND DEALLOCATE THE MESSAGE BUFFER
1596 ; BASED ON THE BUFFER ID VALUE.
1597 ;
1598 ; INPUTS:
1599 ;
1600 ; R0 = ADDRESS OF THE LOGICAL LINK TABLE
1601 ; R5 = ADDRESS OF THE MESSAGE BUFFER CCB
1602 ;
1603 ; OUTPUTS:
1604 ;
1605 ; AS DESCRIBED
1606 ;-
1607 .ENABL LSB
1608
1609 003034 105360 000005 FRBDAT::DECB L.TIPD(R0) ; REDUCE THE DATA TRANSMIT IN PROGRESS COUNT
1610 003040 000402 BR 5$ ;
1611
1612 003042 105360 000004 FRBILS::DECB L.TIPI(R0) ; REDUCE THE INTERRUPT/LINK SERVICE TRANSMIT IN
1613 ; ...COUNT
1614 003046 5$: ; REFERENCE LABEL
1615
1616
1617 .SBTTL RLSBUF - RELEASE A MESSAGE BUFFER ON BUFFER ID
1618 ;+
1619 ; **-RLSBUF-RELEASE A MESSAGE BUFFER ON BUFFER ID
1620 ;
1621 ; INPUTS:
1622 ;
1623 ; R5 = ADDRESS OF THE DATA BUFFER
1624 ; C.BID EQUAL TO CB.RDB IMPLIES A RECEIVE (LARGE) DATA BUFFER
1625 ; OTHERWISE A COMBINATION DATA BUFFER IS ASSUMED.
1626 ;
1627 ; C.BUF MUST CONTAIN THE RELOCATION BIAS OF THE BUFFER
1628 ; C.BUF2+2 MUST CONTAIN THE BASE VIRTUAL ADDRESS OF THE BUFFER
1629 ;-
1630
1631 003046 RLSSMS:: ; REFERENCE LABEL
1632 003046 RLSBUF::SAVRG <R4> ; SAVE R4
1633 003050 010504 MOV R5,R4 ; COPY ADDRESS OF THE DATA BUFFER CCB
1634 003052 122764 000004 000003 CMPB #CB.RDB,C.BID(R4) ; IS THIS A LARGE DATA BUFFER ?
1635 003060 001413 BEQ 10$ ; IF EQ, YES - DEALLOCATE THE LDB
1636 003062 016464 000026 000016 MOV C.BUF2+2(R4),C.BUF+2(R4) ; RESTORE BEGINNING ADDRESS OF THE BUFFER
1637 003070 CALL $CSBRT ; RETURN THE SMALL DATA BUFFER
1638 003074 000423 BR 30$ ; RESTORE REGISTERS AND RETURN
1639
1640
1641 .SBTTL UNSPWN - RETURN A MESSAGE BUFFER
1642 ;+
1643 ; **-UNSPWN-RETURN A RECEIVED MESSAGE BUFFER
1644 ;
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 31-1
UNSPWN - RETURN A MESSAGE BUFFER
1645 ; INPUTS:
1646 ;
1647 ; R5 = ADDRESS OF RECEIVED MESSAGE CCB
1648 ; C.LIN = 0 INTERNAL LINK OTHERWISE EXTERNAL LINK
1649 ;
1650 ; OUTPUTS:
1651 ;
1652 ; IF THE MESSAGE WAS RECEIVED FOR AN INTERNAL LINK, THE CCB
1653 ; IS QUEUED BACK TO THE NSP PROCESS WITH A TRANSMIT COMPLETE
1654 ; FUNCTION CODE, OTHERWISE IT IS RETURNED TO THE SYSTEM BUFFER
1655 ; POOL.
1656 ;
1657 ; REGISTERS MODIFIED:
1658 ;
1659 ; NONE
1660 ;-
1661
1662 003076 UNSPWN::SAVRG <R4> ;SAVE CALLERS R4
1663 003100 010504 MOV R5,R4 ;COPY ADDRESS OF CCB (DATA BUFFER)
1664 003102 105764 000006 TSTB C.LIN(R4) ;WAS CCB FROM SELF?
1665 003106 001403 BEQ 20$ ;YES..LOOPBACK
1666 003110 10$: CALL $RDBRT ;RETURN IT TO THE POOL
1667 003114 000413 BR 30$ ;
1668
1669 003116 112764 000000G 000007 20$: MOVB #PD$NSP,C.STA(R4) ;STORE TARGET LLC (NSP)
1670 003124 112764 000012 000010 MOVB #FC.XCP,C.FNC(R4) ;SET FUNCTION CODE
1671 003132 012764 000001 000012 MOV #CS.SUC,C.STS(R4) ;SET SUCCESS STATUS (DEFAULT) ;LW0006
1672 003140 $QLLC ;QUE CCB TO SELF WITH XMIT CMPLT
1673 003144 30$: RESRG <R4> ;RESTORE R4
1674 003146 005005 CLR R5 ;INDICATE THAT BUFFER WAS QUEUED
1675 003150 RETURN ;RETURN TO CALLER
1676
1677 .DSABL LSB
1678
1679 000001 .END
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 31-2
SYMBOL TABLE
ACKMAS= 170000 C$$RSH= 177564 ER$RES= 000001 GETSMR 002710R 002 L$$ASG= 000000
ACKPRE= 100000 C.BID 000003 ER$SSR= 000000 GETSMS 002750RG 002 L$$DRV= 000000
ACKRES= 060000 C.BUF 000014 ER$SSS= 000045 GETSM1 002670R 002 L$$P11= 000001
ACKWRA= 010000 C.BUF1 000014 ER$STA= 000051 GIVUSR 000152RG 002 L$$11R= 000000
ADDQUE 000000RG 002 C.BUF2 000024 ER$TCN= 000040 GTNOD 000476RG 002 L.CIQ 000026
A$$CHK= 000000 C.CNT 000020 ER$TCO= 000041 G$$TPP= 000000 L.DCR 000036
A$$CPS= 000000 C.CNT1 000020 ER$TPA= 000010 G$$TSS= 000000 L.FLG 000012
A$$PRI= 000000 C.CNT2 000030 ER$UOB= 000004 G$$TTK= 000000 L.LDA 000024
A$$TRP= 000000 C.FLG 000022 E$$XPR= 000000 G$$WRD= 000000 L.LIA 000026
A.NAK = 010000 C.FLG1 000022 FC.CCP= 000020 I$$RAR= 000000 L.LLA 000002
BINPUT 000106RG 002 C.FLG2 000032 FC.CTL= 000006 I$$RDN= 000000 L.LNG1 000054
BLDMSG 000342RG 002 C.FNC 000010 FC.KCP= 000016 KDSAR0= 172360 L.LNO 000022
CB.CCB= 000002 C.LIN 000006 FC.KIL= 000004 KDSDR0= 172320 L.LSA 000032
CB.RDB= 000004 C.LNK 000000 FC.RCE= 000002 KISAR0= 172340 L.LSF 000044
CE.ABO= 100362 C.MOD 000011 FC.RCP= 000014 KISAR5= 172352 L.LVL 000001
CE.DIS= 100366 C.NSP 000004 FC.TIM= 000010 KISAR6= 172354 L.NDA 000034
CE.ERR= 100370 C.RSV 000002 FC.XCP= 000012 KISAR7= 172356 L.NIN 000016
CE.MOP= 100372 C.STA 000007 FC.XME= 000000 KISDR0= 172300 L.NLA 000036
CE.NTE= 100361 C.STS 000012 FE.CAL= 000040 KISDR6= 172314 L.NSTA 000025
CE.RTE= 100376 DF$ADJ= 020000 FE.DRV= 000010 KISDR7= 172316 L.NXN 000014
CE.SRC= 100364 DF$DWN= 001000 FE.EXP= 000200 K$$CNT= 177546 L.PDV 000041
CE.TMO= 100374 DF$FRE= 070000 FE.EXT= 000001 K$$CSR= 177546 L.REM 000006
CF.EOM= 000004 DF$LCL= 040000 FE.EXV= 000004 K$$LDC= 000000 L.RLA 000010
CF.HDR= 000020 DF$LNK= 004000 FE.LSI= 000400 K$$TPS= 000074 L.RNO 000020
CF.LB = 100000 DF$REM= 010000 FE.MUP= 000002 LA.ACK= 100000 L.STA 000000
CF.SOM= 000010 DF$RES= 002000 FE.MXT= 040000 LA.MSK= 170000 L.TC 000042
CF.SYN= 000040 DF$TMP= 100000 FE.NLG= 100000 LA.NAK= 110000 L.TIC 000043
CF.TRN= 000100 DODC 001216RG 002 FE.PKT= 000100 LA.NMS= 010000 L.TIPD 000005
CHKUSR 000042RG 002 DODCI 001226RG 002 FE.PLA= 000020 LA.RES= 060000 L.TIPI 000004
CL$ACK= 000040 DODCR 001344RG 002 FRBDAT 003034RG 002 LD$LP = 000000 L.UDQ 000034
CL$MFL= 000010 D$CHN 000002 FRBILS 003042RG 002 LF.DFL= 000060 L.ULA 000040
CL$NRM= 000020 D$FLG 000000 FS.AST= 000000 LF.DSP= 000040 L.USA 000030
CL$SFL= 000004 D$LEN 000014 FS.CIB= 002000 LF.DST= 000020 L.USTA 000024
CL$TYP= 000001 D$LNG 000005 FS.CRA= 001000 LF.FPN= 000010 L.XQ1 000046
CL.MU1= 000001 D$NAM 000006 FS.DIS= 013000 LF.HF0= 001000 L.XQ2 000050
CL.MU2= 000002 D$USE 000004 FS.DVC= 001000 LF.HMF= 020000 L.XQ3 000052
CL.RES= 177774 D$$BUG= 177514 FS.ENB= 012000 LF.HSF= 010000 MA.DA = 000000
CMODE = 140000 D$$ISK= 000000 FS.GET= 006000 LF.INR= 000100 MA.IL = 000020
CS.ABO= 000100 D$$L11= 000001 FS.INI= 000000 LF.INT= 000400 MC.CC = 000040
CS.BUF= 000200 D$$YNC= 000000 FS.KIL= 000000 LF.LCL= 040000 MC.CI = 000020
CS.DCR= 000400 D$$YNM= 000000 FS.LTM= 001000 LF.MMF= 100000 MC.DC = 000100
CS.DEV= 000002 EMRCTR 002252RG 002 FS.MNT= 004000 LF.MSF= 040000 MC.DI = 000060
CS.DIS= 000040 ER$ABO= 000046 FS.MSN= 014000 LF.NKR= 000200 MC.NO = 000000
CS.ENB= 000020 ER$ABT= 000011 FS.RNG= 011000 LF.NKS= 000400 MC.ST = 000120
CS.EOF= 000001 ER$ACC= 000042 FS.RTN= 001000 LF.NPN= 000001 MD.BM = 000040
CS.ERR= 100000 ER$ACT= 000044 FS.SET= 005000 LF.NTS= 002000 MD.EM = 000100
CS.HFE= 002000 ER$CDI= 000052 FS.STM= 000000 LF.RSU= 100000 MD.ILS= 000040
CS.LST= 040000 ER$COM= 000047 FS.STP= 002000 LOGCTR 002260R 002 MD.IM = 000020
CS.MTL= 004000 ER$FCF= 000050 FS.STR= 001000 LS.DLS= 000200 MF.ACK= 000004
CS.RNG= 000010 ER$FMT= 000005 FS.TRM= 003000 LS.FCC= 000004 MF.CTL= 000010
CS.ROV= 000004 ER$GEN= 000007 FS.XKL= 002000 LS.FC0= 000001 MF.DAT= 000000
CS.RSN= 010000 ER$IFC= 000030 FS.XOF= 010000 LS.FC1= 000002 MPAR = 172100
CS.SUC= 000001 ER$ILS= 000043 FS.XON= 007000 LS.ILS= 000200 MPCSR = 177746
CS.TMO= 020000 ER$IMG= 000053 F$$LVL= 000001 LS.MAK= 000020 MSGHDR= 000007
CTRES 003002RG 002 ER$MLB= 000006 GETBIN 000116RG 002 LS.MNK= 000040 M$$CRB= 000124
C$$CKP= 000000 ER$NOD= 000002 GETEX1 000140RG 002 LS.RES= 000360 M$$CRX= 000000
C$$ORE= 000400 ER$NSD= 000003 GETLNK 000046RG 002 LS.RSV= 000300 M$$FCS= 000000
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 31-3
SYMBOL TABLE
M$$MGE= 000000 NT$ON = 000002 N.PASL 000102 P$$P45= 000000 ST$DIR= 000012
M$$OVR= 000000 NT$QRY= 000014 N.PASS 000104 P$$WRD= 000000 ST$DIS= 000014
NAKUSR= ****** GX NT$REJ= 000004 N.RQDL 000060 Q$$OPT= 000010 ST$UDI= 000013
NC.FM0= 000000 NT$ROU= 000022 N.RQID 000062 RECOVR 001470RG 002 ST$UNR= 000011
NC.FM1= 000001 NT$RTI= 000010 N.RSRV= 000030 RECOV1 001536RG 002 SWR = 177570
NC.FM2= 000002 NT$RTN= 000000 N.SDL1 000036 REMHDR 001134RG 002 S$EMR 000006
NETTIM= 000005 NT$SNG= 000006 N.SDL2 000042 REMLKA 000414RG 002 S$FMT 000012
NE.ABO= 177776 NT$STP= 000004 N.SDS1 000040 REMLNK 000374RG 002 S$LEN 000040
NE.ACT= 177771 NT$XOF= 000020 N.SDS2 000056 REMSYS 000776RG 002 S$LNK 000022
NE.CLS= 177767 NT$XON= 000016 N.SEG 000006 REMUSR 001160RG 002 S$MLK 000024
NE.DIS= 177777 NT.ACK= 000001 N.SFMT 000034 REMXQ 001062R 002 S$NKS 000010
NE.FMT= 177770 NT.BOM= 000040 N.SGRP 000036 RETUSR 000172RG 002 S$RES 000014
NE.NDT= 177766 NT.EOM= 000100 N.SOBJ 000035 RF.CLN= 000000 S$SEC 000000
NE.NOD= 177774 NT.FCN= 037400 N.SUSR 000040 RF.CTL= 000003 S$SNI 000016
NE.REJ= 177775 NT.MD1= 000420 PD$NSP= ****** GX RF.TIM= 177400 S$UMR 000004
NE.RES= 177773 NT.MFL= 000002 PF$EIP= 000100 RF.TM0= 000400 S$UMS 000002
NE.TIM= 177772 NT.MOD= 000020 PF$ENB= 000200 RF.WTD= 000020 S$UNI 000020
NI.FLI= 000002 NT.MOM= 000000 PF$OFF= 000000 RF.WTM= 000030 S$$WRG= 000000
NI.FRI= 000004 NT.NAK= 000002 PF$RLI= 000002 RF.WTS= 000010 S$$YSZ= 007600
NI.FRT= 000001 NT.NFL= 000000 PF$RRI= 000004 RH.CNT= 000001 TPS = 177564
NI.FUB= 000010 NT.SFL= 000001 PF$RVE= 000001 RH.EFM= 000020 T$$KMG= 000000
NI.INI= 000001 NT.SOL= 000140 PF$RVR= 000040 RH.HDR= 000002 T$$MIN= 000000
NI.RLI= 000002 NT.XOF= 000004 PF$SLI= 000002 RH.PRI= 000014 UBMPR = 170200
NI.RRI= 000004 NT.XON= 000010 PF$SRI= 000004 RH.PR1= 000004 UDSAR0= 177660
NI.RVE= 000001 N$ACQ 000000 PF$SRT= 000001 RH.RFM= 000100 UDSDR0= 177620
NI.VER= 000002 N$ICF 000006 PF$STA= 000003 RLSBUF 003046RG 002 UISAR0= 177640
NKSCTR 002244RG 002 N$LNI 000010 PF$SUB= 000010 RLSSMS 003046RG 002 UISAR4= 177650
NOTUSR= ****** GX N$LVC 000022 PF$UP = 000001 RMNOD 000746RG 002 UISAR5= 177652
NP$RTR= 000003 N$NOD 000032 PIRQ = 177772 RMUSE 000732R 002 UISAR6= 177654
NS.BOM= 000040 N$PLD 000026 PMODE = 030000 RTHDR 002502RG 002 UISAR7= 177656
NS.EOM= 000100 N$STS 000042 POPQUE 000024RG 002 R$$DER= 000000 UISDR0= 177600
NS.MFL= 000003 N$TCB 000004 PRODS 000256RG 002 R$$K11= 000001 UISDR4= 177610
NS.MOM= 000000 N$TMP 000012 PR0 = 000000 R$$SND= 000000 UISDR5= 177612
NS.NFL= 000001 N$VER 000036 PR1 = 000040 R$$11M= 000000 UISDR6= 177614
NS.SET= 000002 N$$DAT= 000030 PR4 = 000200 SETPLD 002574RG 002 UISDR7= 177616
NS.SFL= 000002 N$$DIS= 000020 PR5 = 000240 SISDR0= 172200 UNSPWN 003076RG 002
NS.SOL= 000140 N$$INT= 000020 PR6 = 000300 SKPIMG 000130RG 002 VF$RCV= 100000
NS.SUC= 000001 N$$LDV= 000001 PR7 = 000340 SNDAKD 002046RG 002 VF$XMT= 040000
NT$ABO= 000022 N$$MOV= 000010 PS = 177776 SNDAKI 002142RG 002 V$FLG 000000
NT$ACC= 000002 N$$OPT= 000020 PSTUSR 000162RG 002 SNDALT 002360RG 002 V$LEN 000022
NT$ADS= 000000 N$$OVR= 000042 PS$NTI= 000003 SNDDI 001374RG 002 V$RCV 000002
NT$AKD= 000016 N$$SYS= 000001 PS$OFF= 000000 SNDICF 002364RG 002 V$XMT 000012
NT$AKI= 000020 N$$USR= 000001 PS$STR= 000001 SNDLOW 002636RG 002 V$$CTR= 001000
NT$CC = 000012 N.ACNT 000116 PS$UP = 000005 SNDLS 001616RG 002 WINDOW= 004000
NT$CON= 000000 N.ACTL 000114 PS$VER= 000004 SNDMDC 002306RG 002 X$$DBT= 000000
NT$DAT= 000002 N.DDL1 000012 PS$WT = 000002 SNDMSG 002344RG 002 $CSBGT= ****** GX
NT$DIS= 000010 N.DDL2 000016 PUTBIN 000364RG 002 SNDMSI 002336RG 002 $CSBRT= ****** GX
NT$IDC= 000034 N.DDS1 000014 P$CHN 000004 SNILS 001546RG 002 $DEACB= ****** GX
NT$IDN= 000030 N.DDS2 000020 P$CNT 000005 SRNOD 000504RG 002 $LLCRQ= ****** GX
NT$ILN= 000032 N.DFMT 000010 P$FRQ 000012 SR0 = 177572 $LLCRS= ****** GX
NT$IND= 000024 N.DGRP 000012 P$FSP 000013 SR3 = 172516 $MUL = ****** GX
NT$INL= 000026 N.DOBJ 000011 P$LCD 000002 ST$CC = 000002 $MVFBF= ****** GX
NT$INT= 000004 N.DUSR 000014 P$LEN 000014 ST$CIR= 000003 $NSDDB= ****** GX
NT$LS = 000014 N.LGTH= 000160 P$LST 000000 ST$CIS= 000001 $RDBRT= ****** GX
NT$MOD= 000012 N.NODE 000000 P$NOD 000010 ST$DAT= 000005 $REGSV= ****** GX
NT$NAK= 000022 N.OPDL 000136 P$PFQ 000006 ST$DID= 000015 $SDBCT= ****** GX
NT$OFF= 000026 N.OPTD 000140 P$TIM 000003 ST$DIP= 000006
NSPSBC MACRO M1110 13-OCT-79 10:06 PAGE 31-4
SYMBOL TABLE
. ABS. 000160 000
000000 001
NSPSBC 003152 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 19280 WORDS ( 76 PAGES)
DYNAMIC MEMORY: 20620 WORDS ( 79 PAGES)
ELAPSED TIME: 00:01:32
NSPSBC,[131,34]NSPSBC/CR/-SP=[130,10]NETLIB/ML,RSXMC4/PA:1,[131,10]NSPSBC
NSPSBC CREATED BY MACRO ON 13-OCT-79 AT 10:07 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ADDQUE 000000 RG #4-151
BINPUT 000106 RG #7-265
BLDMSG 000342 RG #12-498 19-964 22-1172 22-1193
CB.RDB = 000004 31-1634
CF.EOM = 000004 28-1462
CF.LB = 100000 28-1462
CF.SOM = 000010 28-1462
CHKUSR 000042 RG #6-207
CS.SUC = 000001 25-1326 31-1671
CTRES 003002 RG 29-1513 30-1553 #30-1578
C.BID 000003 31-1634
C.BUF 000014 *16-829 16-830 *16-831 18-906 *18-909 18-921 19-970 19-970 25-1315
25-1337 26-1381 *26-1408 30-1555 *30-1558 *31-1636
C.BUF2 000024 16-829 16-831 18-907 *30-1556 31-1636
C.CNT 000020 *16-830 *18-922 19-965 *25-1316 *26-1410
C.FLG 000022 *28-1462
C.FNC 000010 *10-387 *25-1325 *28-1463 *31-1670
C.LIN 000006 6-207 *10-384 25-1303 *25-1324 *25-1335 *25-1336 27-1430 31-1664
C.MOD 000011 16-812 16-814 18-910 *18-912 *19-961 *21-1101 *22-1165 *22-1186
C.NSP 000004 *25-1302 *25-1319
C.RSV 000002 *21-1078 *21-1098
C.STA 000007 *10-383 *10-383 *31-1669
C.STS 000012 *10-380 *25-1326 *31-1671
DF$DWN = 001000 14-669
DF$FRE = 070000 14-671 14-673 15-769
DF$LCL = 040000 15-773
DF$LNK = 004000 14-669 15-771
DF$REM = 010000 15-771
DF$RES = 002000 14-671 14-712
DF$TMP = 100000 14-698 15-773
DODC 001216 RG #18-901
DODCI 001226 RG #18-904 18-927
DODCR 001344 RG #18-926
D$CHN 000002 25-1331
D$LEN 000014 14-694
D$LNG 000005 14-676 26-1395 26-1401
D$NAM 000006 14-701
D$USE 000004 *15-749 15-767
EMRCTR 002252 RG #23-1207
ER$STA = 000051 11-469
FC.CCP = 000020 10-375
FC.RCP = 000014 10-371 25-1325
FC.XCP = 000012 10-379 31-1670
FC.XME = 000000 28-1463
FRBDAT 003034 RG #31-1609
FRBILS 003042 RG #31-1612
GETBIN 000116 RG #7-291 11-441 11-443
GETEX1 000140 RG #9-346
GETLNK 000046 RG #6-227 11-446
GETSMR 002710 R 19-960 22-1164 22-1185 #29-1516
GETSMS 002750 RG 29-1518 #30-1552
GETSM1 002670 R 21-1075 21-1095 #29-1510
NSPSBC CREATED BY MACRO ON 13-OCT-79 AT 10:07 PAGE 2
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
GIVUSR 000152 RG #10-369
GTNOD 000476 RG #14-623
KISAR6 = 172354 *18-906 29-1517 *29-1520 *29-1525
LA.MSK = 170000 21-1113 21-1117 22-1170 22-1191
LA.NMS = 010000 21-1109 22-1166 22-1187
LF.DFL = 000060 21-1086 21-1096
LF.DSP = 000040 21-1088
LF.FPN = 000010 20-1006 20-1009
LF.LCL = 040000 22-1181 25-1320
LF.RSU = 100000 29-1521
LOGCTR 002260 R 23-1204 23-1207 #23-1210
LS.DLS = 000200 21-1097
LS.FCC = 000004 21-1077
LS.FC0 = 000001 21-1092
LS.FC1 = 000002 21-1090
LS.ILS = 000200 21-1076
L.FLG 000012 20-1006 20-1009 21-1086 21-1088 *21-1096
L.LLA 000002 11-448 12-500 13-566 21-1105
L.LNG1 000054 13-579
L.LSA 000032 21-1107 *21-1113 22-1177 *22-1191
L.LSF 000044 21-1072 *21-1076 21-1084 *21-1097
L.NIN 000016 21-1115 *21-1116 *21-1117
L.NSTA 000025 *19-962
L.PDV 000041 10-383 20-1001
L.REM 000006 15-739 25-1317
L.RLA 000010 12-498 21-1103
L.TIPD 000005 22-1160 *25-1314 *31-1609
L.TIPI 000004 16-794 22-1183 *25-1311 *31-1612
L.ULA 000040 10-384
L.USA 000030 22-1158 *22-1170
L.XQ1 000046 16-802
L.XQ2 000050 16-800
L.XQ3 000052 16-798 17-860
MA.DA = 000000 22-1171
MA.IL = 000020 22-1192
MC.DC = 000100 18-913
MC.DI = 000060 19-963
MD.IM = 000020 21-1102
MF.ACK = 000004 22-1171 22-1192
MF.CTL = 000010 18-913 19-963 25-1337
MF.DAT = 000000 21-1102
M$$MGE = 000000 18-906 19-970 29-1517 29-1520 29-1525
NAKUSR = ****** GX 20-1011
NE.ABO = 177776 16-797
NKSCTR 002244 RG 21-1111 22-1168 22-1189 #23-1204
NOTUSR = ****** GX 20-1008
NT$AKD = 000016 22-1165
NT$AKI = 000020 22-1186
NT$DAT = 000002 16-812
NT$DIS = 000010 19-961
NT$IDC = 000034 18-910
NT$INT = 000004 16-814
NSPSBC CREATED BY MACRO ON 13-OCT-79 AT 10:07 PAGE 3
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
NT$LS = 000014 21-1101
NT$ROU = 000022 18-912
N$LVC 000022 6-230 13-570
N$NOD 000032 14-663 18-902 26-1394
N$PLD 000026 27-1434
N$STS 000042 13-573 23-1212 30-1580
N$TMP 000012 11-439 18-905 18-931
N$$ICF = ****** 3-1 3-2 11-451 15-741 20-1039 24-1237 26-1384
N$$LV2 = ****** 13-576
N$$SYS = 000001 3-123 10-352 16-778 20-1000 20-1005
N$$USR = 000001 3-123 17-856 20-1000
PD$NSP = ****** GX 25-1324 31-1669
POPQUE 000024 RG #4-184 16-810 17-861
PRODS 000256 RG #11-437
PSTUSR 000162 RG #10-373
PS$UP = 000005 25-1333
PUTBIN 000364 RG 12-499 12-501 #12-524 18-916 18-918 18-920 21-1104 21-1106 21-1114
21-1118 21-1121
P$CHN 000004 25-1336
P$LEN 000014 27-1431
P$NOD 000010 25-1308
RECOVR 001470 RG #20-997
RECOV1 001536 RG 20-1002 20-1010 #20-1038
REMHDR 001134 RG 16-816 #16-829
REMLKA 000414 RG #13-564
REMLNK 000374 RG #13-558
REMSYS 000776 RG #16-794
REMUSR 001160 RG #17-858
REMXQ 001062 R 16-799 16-801 16-803 #16-809
RETUSR 000172 RG #10-377 16-817
RH.HDR = 000002 26-1407
RH.PR1 = 000004 26-1407
RH.RFM = 000100 26-1407
RLSBUF 003046 RG #31-1632
RLSSMS 003046 RG 16-820 17-863 #31-1631
RMNOD 000746 RG 15-750 #15-767 18-929 18-932
RMUSE 000732 R 13-561 #15-739
RTHDR 002502 RG 25-1339 #26-1381
SETPLD 002574 RG 25-1307 #27-1428
SKPIMG 000130 RG #8-311
SNDAKD 002046 RG 20-1047 #22-1157
SNDAKI 002142 RG 20-1048 #22-1176
SNDALT 002360 RG #25-1317
SNDDI 001374 RG #19-958
SNDICF 002364 RG #25-1319
SNDLOW 002636 RG 25-1340 #28-1460
SNDLS 001616 RG 20-997 #21-1081
SNDMDC 002306 RG 18-924 #25-1302
SNDMSG 002344 RG 19-972 22-1173 #25-1314
SNDMSI 002336 RG 21-1122 22-1194 #25-1311
SNILS 001546 RG 20-998 #21-1069
SRNOD 000504 RG #14-661
NSPSBC CREATED BY MACRO ON 13-OCT-79 AT 10:07 PAGE 4
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ST$DAT = 000005 21-1070 21-1082
ST$DIP = 000006 22-1162 22-1179
ST$DIS = 000014 19-962
S$EMR 000006 23-1208
S$LNK 000022 *13-574
S$NKS 000010 23-1205
S$RES 000014 30-1581 *30-1583
UNSPWN 003076 RG #31-1662
$CSBGT = ****** GX 30-1552
$CSBRT = ****** GX 31-1637
$DEACB = ****** GX 13-582
$LLCRQ = ****** GX 28-1464
$LLCRS = ****** GX 10-388 25-1327 31-1672
$MUL = ****** GX 27-1432
$MVFBF = ****** GX 19-970
$NSDDB = ****** GX 6-229 11-438 13-569 14-662 18-901 18-904 18-930 23-1211 26-1393
27-1433 30-1579
$RDBRT = ****** GX 31-1666
$REGSV = ****** GX 19-958 21-1069 21-1081 22-1157 22-1176
$SDBCT = ****** GX 29-1511
NSPSBC CREATED BY MACRO ON 13-OCT-79 AT 10:07 PAGE 5
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
CALL 7-265 7-292 10-388 11-441 11-443 11-446 12-499 12-501 13-561 13-582
16-799 16-801 16-803 16-810 16-816 16-817 16-820 17-861 17-863 18-916
18-918 18-920 18-927 18-929 19-960 19-964 20-997 20-998 20-1008 20-1011
20-1047 21-1075 21-1095 21-1104 21-1106 21-1111 21-1114 21-1118 21-1121 22-1164
22-1168 22-1172 22-1185 22-1189 22-1193 25-1307 25-1339 27-1432 29-1513 29-1518
29-1524 30-1552 31-1637 31-1666
CALLR #18-924 #18-932 #19-972 #20-1048 #21-1122 #22-1173 #22-1194 #25-1340
CCBDF$ #3-118 #3-119
CRASH #15-751 #25-1345
HWDDF$ #18-906 #18-906 #29-1517 #29-1517 #29-1520 #29-1520 #29-1525 #29-1525
MAP #3-113 #18-906
NSPSY$ #3-118 #3-120
RESMAP #3-113 #29-1520 #29-1525
RESRG #3-114 4-157 6-238 10-390 10-391 11-470 13-583 14-714 16-804 17-866
27-1436 28-1465 30-1584 31-1673
RETURN 4-158 4-188 4-191 6-239 7-268 7-295 8-314 9-350 10-392 11-471
12-527 13-584 14-715 15-774 16-807 16-823 16-832 17-868 21-1124 23-1218
25-1329 26-1411 27-1437 28-1467 29-1527 30-1559 30-1586 31-1675
SAVMAP #3-113 29-1517
SAVRG #3-114 4-151 6-227 10-370 10-374 10-378 10-385 11-437 13-560 13-564
14-661 16-796 17-858 27-1428 28-1460 30-1578 31-1632 31-1662
SOB #14-681 #14-695 #14-707
STOPDV #3-115 #10-383
STOULA #3-115 #10-384
$MVFBF #3-117 19-970
$MVTBF #3-117
$QDLC #3-116 #28-1464
$QLLC #3-116 25-1327 31-1672