Trailing-Edge
-
PDP-10 Archives
-
BB-H348C-RM_1982
-
swskit-v21/listings/mcb/nspif.list
There are no other files named nspif.list in the archive.
NSPIF MACRO M1110 13-OCT-79 10:00
TABLE OF CONTENTS
4- 53 RINCPT
5- 108 XINCPT
6- 143 RINACK
7- 209 RINDAT
8- 295 XINACK
9- 355 XINDAT
10- 440 SENDIT
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 3
1 .TITLE NSPIF
2 .IDENT /V01.05/
3
4 ;
5 ; COPYRIGHT (C) 1976
6 ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS.
7 ;
8 ;
9 ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE FOR USE ONLY ON A
10 ; SINGLE COMPUTER SYSTEM AND MAY BE COPIED ONLY WITH THE
11 ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE, OR ANY
12 ; OTHER COPIES THEREOF, MAY NOT BE PROVIDED OR OTHERWISE MADE
13 ; AVAILABLE TO ANY OTHER PERSON EXECPT FOR USE ON SUCH SYSTEM AND
14 ; TO ONE WHO AGREES TO THESE LICENSE TERMS. TITLE TO AND
15 ; OWNERSHIP OF THE SOFTWARE SHALL AT ALL TIMES REMAIN IN DEC.
16 ;
17 ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT
18 ; NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL
19 ; EQUIPMENT CORPORATION.
20 ;
21 ; DEC ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY
22 ; OF ITS SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DEC.
23 ;
24 ;
25 ; NSP INTERCEPT ROUTINES
26 ;
27 ; VERSION X01
28 ;
29 ; MODIFICATIONS:
30 ; LW0001 25-JAN-78 LEE WEBBER
31 ; CORRECT TYPO ERROR
32 ; LW0002 5-MAY-78 LEE WEBBER
33 ; 15-MAY-78 CHANGE CALLS TO MESSAGE SEND ROUTINES TO
34 ; CONFORM TO NEW MESSAGE SEND INTERFACE
35 ; LW0003 15-MAY-78 LEE WEBBER
36 ; CORRECT TYPO
37 ; LW0004 11-SEP-78 LEE WEBBER
38 ; TAKE OUT SOFT DIAGNOSTIC CRASHES
39 ; AP0005 16-AUG-79 ALAN D. PECKHAM
40 ; CALL DODCR INSTEAD OF DODCI TO RELEASE TEMPORARY NODE ENTRIES
41 ;
42 ;
43 ; EXTERNAL MACRO DEFINITIONS
44 ;
45
46 .MCALL SAVRG,RESRG,MAP
47 .MCALL CCBDF$,NSPSY$
48 000000 CCBDF$ ;DEFINE THE CCB OFFSETS
49 000000 NSPSY$ ;DEFINE THE NSP SYMBOLS
50
51 000000 .PSECT NSPIF
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 4
RINCPT
53 .SBTTL RINCPT
54 ;+
55 ; **-RINCPT-INTERCEPT RECEIVE MESSAGE PROCESSING
56 ;
57 ; THIS ROUTINE WILL TAKE A INCOMING MESSAGE FOR INTERCEEPT
58 ; PROCESSING, AND DISPATCH TO THE APPROPRIATE ROUTINE.
59 ;
60 ; INPUTS:
61 ;
62 ; R0 = POINTER TO DESTINATION NODE NAME ENTRY
63 ; R3 = POINTER TO SOURCE NODE NAME ENTRY
64 ; R4 = POINTER TO MESSAGE FLAGS
65 ; R5 = ADDRESS OF MESSAGE CCB
66 ;
67 ; OUTPUTS:
68 ;
69 ; THE POINTER TO THE START OF THE MESSAGE IS SAVED IN THE STATUS
70 ; WORD OF THE CCB SO THAT A DC CAN BE CONSTRUCTED OR THE
71 ; DESTINATION NODE NAME CAN BE EXAMINED.
72 ; THE POINTER TO MESSAGE FLAGS IS STORED AS THE CURRENT BUFFER
73 ; POINTER AND THE LENGTH OF THE MESSAGE IS REDUCED BY AN AMOUNT
74 ; EQUAL TO THE LENGTH OF THE ROUTE HEADER, SINCE A NEW ROUTE HEADER
75 ; WILL BE BUILT IN ORDER TO FORWARD THE MESSAGE.
76 ;
77 ; NOTE: THE USE OF THE CCB CELLS HERE DIFFERS FROM THE USAGE IN
78 ; NORMAL END NODE PROCESSING.
79 ;
80 ;-
81
82 000000 016501 000016 RINCPT::MOV C.BUF+2(R5),R1 ;GET THE POINTER TO THE START OF THE MESSAGE
83 000004 010165 000012 MOV R1,C.STS(R5) ;...AND SAVE IT
84 000010 010465 000016 MOV R4,C.BUF+2(R5) ;STORE THE POINTER TO THE MESSAGE FLAGS
85 000014 160401 SUB R4,R1 ;COMPUTE THE NEGATIVE LENGTH OF THE ROUTE HEADER
86 000016 060165 000020 ADD R1,C.CNT(R5) ;REDUCE THE LENGTH OF THE MESSAGE APPROPRIATELY
87 000022 CALL GETEX1 ;GET MSGFLGS
88 000026 103422 BCS TOSS ;IF CS, FIELD FORMAT ERROR - TOSS MESSAGE
89 000030 032701 000003 BIT #3,R1 ;MAKE SURE THIS IS MSGFLGS
90 000034 001017 BNE TOSS ;IF NE, FIELD FORMAT ERROR - TOSS MESSAGE
91 000036 010102 MOV R1,R2 ;SAVE MSGFLGS FOR RINCTL
92 000040 006201 ASR R1 ;GET MSGID OFF & LEAVE AS WORD INDEX
93 000042 042701 177771 BIC #^C<6>,R1 ;ISOLATE TYPE BITS <1,2>
94 000046 SAVRG <R0,R3> ;SAVE POINTERS TO NODE NAME ENTRIES
95 000052 CALL @RINTBL(R1) ;DISPATCH
96 000056 RESRG <R3,R0> ;RESTORE NODE NAME POINTERS
97 000062 RETURN ;RETURN TO CALLER
98
99
100 000064 000356' RINTBL: .WORD RINDAT ;PROCESS RECEIVED DATA MESSAGE
101 000066 000144' .WORD RINACK ;PROCESS RECEIVED CONTROL MESSAGE
102 000070 000000G .WORD RCVICT ;PROCESS RECEIVED CONTROL MESSAGE IN THE ACP
103 000072 000074' .WORD TOSS ;RESERVED MESSAGE TYPE
104
105 000074 000261 TOSS: SEC ;INDICATE ERROR CONDITION
106 000076 RETURN ;RETURN TO CALLER
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 5
XINCPT
108 .SBTTL XINCPT
109 ;+
110 ; **-XINCPT-FORWARD A MESSAGE TO AN INTERCEPTED NODE
111 ;
112 ; THIS ROUTINE IS ENTERED FROM THE MAIN PROCESSING ROUTINE TO FORWARD
113 ; A RECEIVED MESSAGE TO AN INTERCEPTED NODE.
114 ;
115 ; INPUTS:
116 ;
117 ; R0 = POINTER TO THE DESTINATION NODE NAME ENTRY
118 ; R3 = POINTER TO THE SOURCE NODE NAME ENTRY
119 ; R5 = ADDRESS OF MESSAGE CCB
120 ;
121 ; OUTPUTS:
122 ;
123 ; XXX
124 ;
125 ;-
126
127 000100 016504 000016 XINCPT::MOV C.BUF+2(R5),R4 ;GET POINTER TO THE MESSAGE
128 000104 CALL GETEX1 ;GET MSGFLGS
129 000110 103771 BCS TOSS ;IF CS, FIELD FORMAT ERROR - TOSS MESSAGE
130 000112 032701 000003 BIT #3,R1 ;MAKE SURE WE'VE GOT MSGFLGS
131 000116 001366 BNE TOSS ;IF NE, FIELD FORMAT ERROR - TOSS MESSAGE
132 000120 010102 MOV R1,R2 ;SAVE MSGFLGS FOR XINCTL
133 000122 006201 ASR R1 ;GET MSGID OFF AND LEAVE FOR WORD INDEX
134 000124 042701 177771 BIC #^C<6>,R1 ;ISOLATE TYPE BITS <1,2>
135 000130 CALLR @XINTBL(R1) ;DISPATCH
136
137
138 000134 001026' XINTBL: .WORD XINDAT ;FORWARD A DATA MESSAGE
139 000136 000656' .WORD XINACK ;FORWARD AN ACK MESSAGE
140 000140 000074' .WORD TOSS ;CONTROL MESSAGES ARE FORWARDED FORM THE ACP
141 000142 000074' .WORD TOSS ;RESERVED MESSAGE TYPE
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 6
RINACK
143 .SBTTL RINACK
144
145 ;++
146 ;RINACK
147
148 ;INPUTS:
149 ; R5=CCB ADDRESS
150 ; R4=MESSAGE POINTER [DESTADDR]
151 ; R3=SOURCE NODE INDEX
152 ; R2=MSGFLGS
153 ;OUTPUTS:
154 ; THIS ROUTINE PROCESSES ACKS OF DATA MESSAGES RECEIVED FROM THE
155 ;INTERCEPTED NODE. IF THE ACK IS VALID THEN THE DATA BASE WILL BE UPDATED TO THE
156 ;HIGHEST DATA SEGMENT ACK'D AND THE MESSAGE WILL BE FORWARDED.
157 ;OTHERWISE A DC WILL BE SENT TO THE INTERCEPTED NODE.
158
159 ;--
160
161 000144 RINACK:
162 000144 010246 MOV R2,-(SP) ;TEMP SAVE FOR MSGFLGS
163 000146 010602 MOV SP,R2 ;MESSAGE IS FROM INTERCEPTED NODE
164 000150 CALL PRODS ;GET SRC AND DEST ADDRS, VERIFY LINK
165 000154 012602 MOV (SP)+,R2 ;RECOVER MSGFLGS
166 000156 103474 BCS 70$ ;LINK DOESN'T EXIST..CAN'T BUILD RTHDR TOSS MSG
167 000160 032710 000400 BIT #LF.INT,(R0) ;INTERCEPT LINK?
168 000164 001471 BEQ 70$ ;NO..MSG IS FOR IDLE LINK
169 000166 122710 000003 CMPB #ST$CIR,(R0) ;STILL PROCESSING OR WAITING FOR A CONNECT CONFIRM ?
170 000172 001457 BEQ 30$ ;IF EQ, YES - MARK TO SEND A NAK LATER ;LW0003
171 000174 020160 000040 CMP R1,I.ILA(R0) ;MSG FOR CORRECT LINK? ;**-1
172 000200 001063 BNE 70$ ;NO..TREAT AS IDLE LINK
173 000202 CALL SENDIT ;IS PATH TO DESTINATION AVAILABLE?
174 000206 103454 BCS 40$ ;IF CS, NO PATH - TOSS THE MESSAGE
175 000210 122710 000005 CMPB #ST$DAT,(R0) ;IS LINK ESTABLISHED?
176 000214 001051 BNE 40$ ;IF NE, NO - JUST IGNORE THE MESSAGE
177 000216 162704 000004 SUB #4,R4 ;ADJUST MSG PTR TO DESTADDR
178 000222 016001 000010 MOV I.RLA(R0),R1 ;NEW DESTINATION
179 000226 CALL PUTBIN ;MODIFY DESTADDR
180 000232 016001 000002 MOV I.LLA(R0),R1 ;WE ARE SOURCE FOR THIS PART OF LINK
181 000236 CALL PUTBIN ;MODIFY SRCADDR
182 000242 CALL GETBIN ;GET ACKNUM
183 000246 042701 100000 BIC #100000,R1 ;CLEAR ACK FLAG
184 000252 032701 010000 BIT #A.NAK,R1 ;HAS INTERCEPTED NODE SENT A NAK?
185 000256 001414 BEQ 10$ ;NO
186 000260 052760 000400 000012 BIS #IF.NKS,I.FLG(R0) ;INDICATE NAK SENT..USED TO FORWARD NEXT SEQUENTIAL SE
187 000266 042701 010000 BIC #A.NAK,R1 ;DON'T CARE IF ITS A NAK
188 000272 010160 000020 MOV R1,L.RNO(R0) ;RE-ADJUST NEXT SEG TO BE RECEIVED
189 000276 005260 000020 INC L.RNO(R0) ;DUE TO NAK
190 000302 042760 170000 000020 BIC #ACKMASK,L.RNO(R0) ;WRAPAROUND
191 000310 032702 000020 10$: BIT #MD.IM,R2 ;INTERRUPT/LS MSG?
192 000314 001003 BNE 20$ ;YES
193 000316 010160 000030 MOV R1,I.USA(R0) ;HIGHEST DATA SEGMENT ACKD BY INTERCEPTED NODE
194 000322 000410 BR 50$ ;FORWARD MSG
195
196 000324 010160 000032 20$: MOV R1,I.LSA(R0) ;HIGHEST I/LS SEGMENT ACKD BY INTERCEPTED NODE
197 000330 000405 BR 50$ ;FORWARD MSG
198
199 000332 052760 002000 000012 30$: BIS #IF.NTS,I.FLG(R0) ;MARK A NAK TO BE SENT WHEN ENTERING DATA STATE
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 6-1
RINACK
200 000340 000261 40$: SEC ;TOSS MSG
201 000342 000401 BR 60$
202
203 000344 000241 50$: CLC ;FORWARD MSG
204 000346 60$: RETURN
205
206 000350 000240 70$: NOP ;SPACE FOR DIAGNOSTIC CRASH ;LW0004
207 000352 CALLR DODCR ;SEND DC AND RELEASE ANY TEMPORARY NODE ENTRIES ;AP0005
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 7
RINDAT
209 .SBTTL RINDAT
210
211 ;++
212 ;RINDAT
213
214 ;INPUTS:
215 ; R5=CCB ADDRESS
216 ; R4=MESSAGE POINTER [DESTADDR]
217 ; R3=SOURCE NODE INDEX
218 ; R2=MSGFLGS
219 ; THIS ROUTINE WILL PROCESS A DATA MESSAGE RECEIVED FROM THE
220 ;INTERCEPTED NODE. IF THE STATE IS CC THEN THE DATA MESSAGE WILL BE
221 ;TOSSED BUT WHEN THE LINK IS ESTABLISHED A NAK WILL BE SENT TO THE
222 ;INTERCEPTED NODE. A PIGGYBACKED ACK WILL BE CHECKED FOR. IF FOUND,
223 ;WHETHER ACK OR NAK, THE HIGHEST ACK BY USER WILL BE UPDATED PLUS
224 ;SETTING THE NAK BIT. IF THERE WAS A NAK IN PROGRESS, THE SEGNUM WILL
225 ;BE CHECKED TO SEE IF ITS THE ONE EXPECTED. NO, IT WILL BE TOSSED.
226 ;YES, NAK PROCESSING IS DONE AND THE MESSAGE WILL BE FORWARDED.
227
228 ;--
229
230 000356 RINDAT:
231 000356 SAVRG <R2>
232 000360 010602 MOV SP,R2 ;MESSAGE CAME FROM INTERCEPTED NODE
233 000362 CALL PRODS ;GET SRC DEST ADDRS, VERIFY LINK
234 000366 RESRG <R2>
235 000370 103527 BCS 110$ ;LINK DOESN'T EXIST..CAN'T BUILD RTHDR TOSS MSG
236 000372 032710 000400 BIT #LF.INT,(R0) ;INTERCEPT LINK?
237 000376 001524 BEQ 110$ ;NO..MSG IS FOR IDLE LINK
238 000400 122710 000003 CMPB #ST$CIR,(R0) ;STILL PROCESSING OR WAITING FOR CONNECT CONFIRM ?
239 000404 001512 BEQ 70$ ;IF EQ, YES - MARK TO SEND A NAK LATER
240 000406 020160 000040 CMP R1,I.ILA(R0) ;MSG FOR CORRECT LINK?
241 000412 001116 BNE 110$ ;IF NE, NO - SEND AN IDLE DC
242 000414 CALL SENDIT ;IS PATH TO DESTINATION AVAILABLE?
243 000420 103507 BCS 80$ ;IF CS, NO PATH - IGNORE THE MESSAGE
244 000422 122710 000005 CMPB #ST$DAT,(R0) ;IS LINK ESTABLISHED?
245 000426 001104 BNE 80$ ;NO..TOSS MSG
246 000430 162704 000004 SUB #4,R4 ;ADJUST MSG PTR TO DESTADDR
247 000434 016001 000010 MOV I.RLA(R0),R1 ;NEW DEST..2ND PART OF LINK
248 000440 CALL PUTBIN ;MODIFY DESTADDR
249 000444 016001 000002 MOV I.LLA(R0),R1 ;WE ARE SRC
250 000450 CALL PUTBIN ;MODIFY SRCADDR
251 000454 CALL GETBIN ;EITHER PIGGYBACKED ACK/SEGNUM
252 000460 032702 000020 BIT #MD.IM,R2 ;I/LS MSG?
253 000464 001031 BNE 40$ ;YES
254 000466 005701 TST R1 ;ACK?
255 000470 100016 BPL 30$ ;NO..SEGNUM
256 000472 032701 010000 BIT #A.NAK,R1 ;NAK?
257 000476 001403 BEQ 10$ ;NO..ACK
258 000500 052760 000400 000012 BIS #IF.NKS,I.FLG(R0) ;DATA MSG WAS NAK'D
259 000506 042701 100000 10$: BIC #100000,R1 ;CLEAR ACK BIT
260 000512 042701 010000 BIC #A.NAK,R1 ;CLEAR NAK INDICATOR
261 000516 010160 000030 MOV R1,I.USA(R0) ;HIGHEST ACK BY INTERCEPTED LINK
262 000522 CALL GETBIN ;GET SEGNUM
263 000526 020160 000014 30$: CMP R1,I.NXN(R0) ;NEXT DATA SEGMENT TO BE XMITED?
264 000532 001042 BNE 80$ ;NO..GUARANTEE SEQUENTIALITY
265 000534 005260 000014 INC I.NXN(R0) ;NEXT DATA SEGMENT TO BE SENT
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 7-1
RINDAT
266 000540 042760 170000 000014 BIC #ACKMASK,I.NXN(R0) ;WRAPAROUND
267 000546 000436 BR 90$ ;FORWARD MSG
268
269 000550 005701 40$: TST R1 ;PIGGYBACK ACK?
270 000552 100016 BPL 60$ ;NO..SEGNUM
271 000554 032701 010000 BIT #A.NAK,R1 ;NAK?
272 000560 001403 BEQ 50$ ;NO..ACK
273 000562 052760 040000 000012 BIS #IF.INS,I.FLG(R0) ;I/LS NAK SENT
274 000570 042701 100000 50$: BIC #100000,R1 ;ACK PRESENT BIT
275 000574 042701 010000 BIC #A.NAK,R1 ;CLEAR NAK INDICATOR
276 000600 010160 000032 MOV R1,I.LSA(R0) ;HIGHEST I/LS MSG ACKD BY INTERCEPTED LINK
277 000604 CALL GETBIN ;GET SEGNUM
278 000610 020160 000016 60$: CMP R1,I.NIN(R0) ;IS THIS NEXT I/LS SEG TO BE SENT?
279 000614 001011 BNE 80$ ;NO..GUARANTEE SEQUENTIALITY
280 000616 005260 000016 INC I.NIN(R0) ;NEXT I/LS SEG TO BE SENT
281 000622 042760 170000 000016 BIC #ACKMASK,I.NIN(R0) ;WRAPAROUND
282 000630 000405 BR 90$ ;FORWARD MSG
283
284 000632 052760 002000 000012 70$: BIS #IF.NTS,I.FLG(R0) ;MARK A NAK TO BE SENT ON ENTERING DATA STATE
285
286 000640 000261 80$: SEC ;TOSS MSG
287 000642 000401 BR 100$
288
289 000644 000241 90$: CLC
290 000646 100$: RETURN
291
292 000650 000240 110$: NOP ;SPACE FOR DIAGNOSTIC CRASH ;LW0004
293 000652 CALLR DODCR ;SEND DC AND RELEASE ANY TEMPORARY NODE ENTRIES ;AP0005
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 8
XINACK
295 .SBTTL XINACK
296
297 ;++
298 ;XINACK
299
300 ;INPUTS:
301 ; R5=CCB ADDRESS
302 ; R4=MESSAGE POINTER [DESTADDR]
303 ; R3=SOURCE NODE INDEX
304 ; R2=MSGFLGS
305 ; THIS ROUTINE PROCESSES ACKS RECEIVED FROMT HE NET.
306 ;ONCE IT IS FOUND WE ARE IN THE CORRECT STATE THEN AN NSP ROUTINE,
307 ;RCDAK, WILL PROCESS THE ACK CORRECTLY FOR US.
308
309 ;--
310
311 000656 XINACK:
312 ;
313 ; SINCE THIS INTERCEPT ONLY INTERCEPTS FOR ADJACENT NODES (STAR CONFIGURATION)
314 ; THERE CAN NEVER BE ANY ERROR DETECTED BY THE FORWARDING ROUTINES. ALL
315 ; THE ERROR TESTS ARE STRICTLY DEBUGGING AIDS.
316 ;
317 000656 SAVRG <R2>
318 000660 005002 CLR R2 ;MESSAGE IS FROM NET
319 000662 CALL PRODS ;GET SRC AND DEST ADDRS, VERIFY LINK
320 000666 RESRG <R2>
321 000670 103455 BCS 80$ ;LINK DOESN'T EXIST
322 000672 032710 000400 BIT #LF.INT,(R0) ;INTERCEPT LINK?
323 000676 001452 BEQ 80$ ;NO..MSG IS FOR IDLE LINK
324 000700 020160 000010 CMP R1,I.RLA(R0) ;MSG FOR CORRECT LINK?
325 000704 001047 BNE 80$ ;NO..TREAT AS IDLE LINK
326
327 000706 122710 000005 CMPB #ST$DAT,(R0) ;LINK ESTABLISHED?
328 000712 001042 BNE 30$ ;NO.TOSS ACK
329 000714 162704 000004 SUB #4,R4 ;ADJUST MSG PTR TO DESTADDR
330 000720 016001 000040 MOV I.ILA(R0),R1 ;MSG IS DESTINED FOR INTERCEPTED NODE
331 000724 CALL PUTBIN ;MODIFY DESTADDR
332 000730 016001 000002 MOV I.LLA(R0),R1 ;WE ARE SRC FOR THIS PART OF THE LINK
333 000734 CALL PUTBIN ;MODIFY SRCADDR
334 000740 CALL RCDAK ;PROCESS THE ACK/NAK DATA/LS
335 000744 016003 000042 MOV I.IREM(R0),R3 ;DESTINATION NODE INDEX
336 000750 132702 000020 BITB #MD.IM,R2 ;IS THIS DATA MSG?
337 000754 001010 BNE 10$ ;NO..I/LS
338 000756 112765 000024 000011 MOVB #NT$IND,C.MOD(R5) ;FOR XCMPLT..MSG ON DATA CHANNEL
339 000764 105260 000005 INCB I.TIPD(R0) ;INCREMENT THE SEND COUNT ;LW0002
340 000770 CALL SNDICF ; AND SEND THE MESSAGE ;LW0002
341 000774 000407 BR 20$ ;LW0001
342 ;**-2
343 000776 112765 000026 000011 10$: MOVB #NT$INL,C.MOD(R5) ;FOR XCMPLT..MSG ON I/LS CHANNEL
344 001004 105260 000004 INCB I.TIPI(R0) ;INCREMENT THE SEND COUNT ;LW0002
345 001010 CALL SNDICF ; AND SEND THE MESSAGE ;LW0002
346 001014 000241 20$: CLC ;**-1
347 001016 RETURN
348
349 001020 000261 30$: SEC ;INDICATE AN ERROR - TOSS THE MESSAGE
350 001022 RETURN ;RETURN TO CALLER
351
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 8-1
XINACK
352 001024 60$:
353 001024 80$: CRASH ;DEBUG AID
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 9
XINDAT
355 .SBTTL XINDAT
356
357 ;++
358 ;XINDAT
359
360 ;INPUTS:
361 ; R5=CCB ADDRESS
362 ; R4=MESSAGE POINTER
363 ; R3=SOURCE NODE INDEX
364 ; R2=MSGFLGS
365 ; THIS ROUTINE WILL PROCESS A DATA/LS MSG RECEIVED FROM THE
366 ;NET. ONCE THE MESSAGE IS VALIDATED AND WE ARE IN THE PROPER STATE,
367 ;RCDAK WILL HANDLE THE PIGGYBACKED ACK AND RECSEG WILL PROCESS
368 ;THE SEGNUM.
369
370 ;--
371 ;
372 ; SEE NOTE FOR XINACK
373 ;
374
375 001026 XINDAT:
376 001026 SAVRG <R2>
377 001030 005002 CLR R2 ;MESSAGE IS FROM NET
378 001032 CALL PRODS ;GET SRC AND DEST ADDRS, VERFIY LINK
379 001036 RESRG <R2>
380 001040 103461 BCS 70$ ;LINK DOESN'T EXIST
381 001042 032710 000400 BIT #LF.INT,(R0) ;INTERCEPT LINK?
382 001046 001456 BEQ 70$ ;NO..MSG IS FOR IDLE LINK
383 001050 020160 000010 CMP R1,I.RLA(R0) ;MSG FOR CORRECT LINK?
384 001054 001053 BNE 70$ ;NO..TREAT AS IDLE LINK
385 001056 122710 000005 CMPB #ST$DAT,(R0) ;LINK ESTABLISHED?
386 001062 001046 BNE 50$ ;NO..TOSS MSG
387
388 ;
389 ; IN ORDER TO LIMIT THE NUMBER OF RECEIVE DATA BUFFERS THAT ARE USED FOR
390 ; THE STORE AND FORWARD PROCESS, NSP'S UTILIZATION OF THESE BUFFERS IS
391 ; MONITORED. IF THE NUMBER IN USE DROPS BELOW A SET TRESHHOLD, THE
392 ; RECEIVED SEGEMNEMT IS NOT FORWARDED AND A NAK IS SENT AT A LATER TIME
393 ;
394 .IF DF N$$CNC
395
396 MOV $NSDDB,R1 ;GET THE ADDRESS OF THE DATA DESCRIPTOR BLOCK
397 CMPB N$POL(R1),N$LBN(R1) ;IS THE POOL LEVEL ABOVE THE THRESHOLD ?
398 BHI 20$ ;IF HI, YES - FORWARD THE SEGMENT
399 ;GOING TO TOSS MSG DUE TO LDB POOL BEING LOW
400 ;MUST REMEMBER, LATER ON, TO NAK SO THAT
401 ;DATA WILL FLOW AGAIN
402 BIT #MD.IM,R2 ;I/LS MSG?
403 BNE 10$ ;YES
404 BIS #IF.SND,I.FLG(R0) ;NEED TO SEND NAK ON DATA CHANNEL
405 BR 30$
406
407 10$: BIS #IF.SNL,I.FLG(R0) ;NEED TO SEND NAK ON I/LS CHANNEL
408 BR 30$
409
410 .ENDC
411
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 9-1
XINDAT
412 001064 162704 000004 20$: SUB #4,R4 ;ADJUST MSG PTR TO DESTADDR
413 001070 016001 000040 MOV I.ILA(R0),R1 ;INTERCEPTED NODE IS FINAL DESTINATION
414 001074 CALL PUTBIN ;MODIFY DESTADDR
415 001100 016001 000002 MOV I.LLA(R0),R1 ;WE ARE SRC OF LAST PART OF LINK
416 001104 CALL PUTBIN ;MODIFY SRCADDR
417 001110 CALL RCDAK ;PROCESS PIGGYBACK ACK
418 001114 CALL RCVSEG ;PROCESS SEGNUM
419 001120 005701 TST R1 ;SEGNUM LOW/DO NOT PROCESS
420 001122 100426 BMI 50$ ;YES TOSS SMG
421 001124 016003 000042 MOV I.IREM(R0),R3 ;DESTINATION NODE INDEX
422 001130 032702 000020 BIT #MD.IM,R2 ;IS THIS A DATA MESSAGE?
423 001134 001010 BNE 30$ ;NO..I/LS
424 001136 112765 000024 000011 MOVB #NT$IND,C.MOD(R5) ;FOR XCMPLT..MSG ON DATA CHANNEL
425 001144 105260 000005 INCB I.TIPD(R0) ;INCREMENT THE SEND COUNT ;LW0002
426 001150 CALL SNDICF ;SEND THE DATA MESSAGE ;LW0002
427 001154 000407 BR 40$ ;**-1
428
429 001156 112765 000026 000011 30$: MOVB #NT$INL,C.MOD(R5) ;FOR XCMPLT..MSG ON I/LS CHANNEL
430 001164 105260 000004 INCB I.TIPI(R0) ;INCREMENT THE SEND COUNT ;LW0002
431 001170 CALL SNDICF ;SEND THE I/LS MESSAGE ;LW0002
432 001174 000241 40$: CLC ;**-1
433 001176 000401 BR 60$
434
435 001200 000261 50$: SEC ;TOSS MSG
436 001202 60$: RETURN
437
438 001204 70$: CRASH ;DEBUG AID
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 10
SENDIT
440 .SBTTL SENDIT
441
442 ;++
443 ;SENDIT
444
445 ;INPUTS:
446 ; R0=ILT
447 ;OUTPUTS:
448 ; C-BIT SET IF WE CAN'T GET TO DESTINATION
449
450
451 ; THIS ROUTINE WILL FIND OUT IF THERE IS A WAY OF GETTING TO THE
452 ;DESTINATION SPECIFIED. IF NOT THE LINK WILL BE REMOVED AND ON
453 ;RETURNING A DC WILL BE SENT TO THE APPROPRIATE NODE.
454
455 ;--
456
457 001206 016001 000006 SENDIT::MOV I.REM(R0),R1 ;POINTER TO DESTINATION NODE NAME
458 001212 122771 000005 000002 CMPB #PS$UP,@D$CHN(R1) ;IS THE PATH AVAILABLE ?
459 001220 001401 BEQ 10$ ;IF EQ, YES (C-BIT CLEAR)
460 001222 000261 SEC ;RETURN ERROR INDICATION
461 001224 10$: RETURN ;RETURN TO CALLER
462
463
464 000000 .PSECT
465
466 000001 .END
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 10-1
SYMBOL TABLE
ACKMAS= 170000 C.CNT1 000020 FC.CCP= 000020 I.NIN = 000016 L.LLA 000002
ACKPRE= 100000 C.CNT2 000030 FC.CTL= 000006 I.NLA = 000036 L.LNG1 000054
ACKRES= 060000 C.FLG 000022 FC.KCP= 000016 I.NSTA= 000025 L.LNO 000022
ACKWRA= 010000 C.FLG1 000022 FC.KIL= 000004 I.NXN = 000014 L.LSA 000032
A$$CHK= 000000 C.FLG2 000032 FC.RCE= 000002 I.REM = 000006 L.LSF 000044
A$$CPS= 000000 C.FNC 000010 FC.RCP= 000014 I.RLA = 000010 L.LVL 000001
A$$PRI= 000000 C.LIN 000006 FC.TIM= 000010 I.RNO = 000020 L.NDA 000034
A$$TRP= 000000 C.LNK 000000 FC.XCP= 000012 I.STA = 000000 L.NIN 000016
A.NAK = 010000 C.MOD 000011 FC.XME= 000000 I.TIPD= 000005 L.NLA 000036
CB.CCB= 000002 C.NSP 000004 FS.AST= 000000 I.TIPI= 000004 L.NSTA 000025
CB.RDB= 000004 C.RSV 000002 FS.CIB= 002000 I.USA = 000030 L.NXN 000014
CE.ABO= 100362 C.STA 000007 FS.CRA= 001000 I.USTA= 000024 L.PDV 000041
CE.DIS= 100366 C.STS 000012 FS.DIS= 013000 K$$CNT= 177546 L.REM 000006
CE.ERR= 100370 DF$ADJ= 020000 FS.DVC= 001000 K$$CSR= 177546 L.RLA 000010
CE.MOP= 100372 DF$DWN= 001000 FS.ENB= 012000 K$$LDC= 000000 L.RNO 000020
CE.NTE= 100361 DF$FRE= 070000 FS.GET= 006000 K$$TPS= 000074 L.STA 000000
CE.RTE= 100376 DF$LCL= 040000 FS.INI= 000000 LA.ACK= 100000 L.TC 000042
CE.SRC= 100364 DF$LNK= 004000 FS.KIL= 000000 LA.MSK= 170000 L.TIC 000043
CE.TMO= 100374 DF$REM= 010000 FS.LTM= 001000 LA.NAK= 110000 L.TIPD 000005
CF.EOM= 000004 DF$RES= 002000 FS.MNT= 004000 LA.NMS= 010000 L.TIPI 000004
CF.HDR= 000020 DF$TMP= 100000 FS.MSN= 014000 LA.RES= 060000 L.UDQ 000034
CF.LB = 100000 DODCR = ****** GX FS.RNG= 011000 LD$LP = 000000 L.ULA 000040
CF.SOM= 000010 D$CHN 000002 FS.RTN= 001000 LF.DFL= 000060 L.USA 000030
CF.SYN= 000040 D$FLG 000000 FS.SET= 005000 LF.DSP= 000040 L.USTA 000024
CF.TRN= 000100 D$LEN 000014 FS.STM= 000000 LF.DST= 000020 L.XQ1 000046
CL$ACK= 000040 D$LNG 000005 FS.STP= 002000 LF.FPN= 000010 L.XQ2 000050
CL$MFL= 000010 D$NAM 000006 FS.STR= 001000 LF.HF0= 001000 L.XQ3 000052
CL$NRM= 000020 D$USE 000004 FS.TRM= 003000 LF.HMF= 020000 MA.DA = 000000
CL$SFL= 000004 D$$BUG= 177514 FS.XKL= 002000 LF.HSF= 010000 MA.IL = 000020
CL$TYP= 000001 D$$ISK= 000000 FS.XOF= 010000 LF.INR= 000100 MC.CC = 000040
CL.MU1= 000001 D$$L11= 000001 FS.XON= 007000 LF.INT= 000400 MC.CI = 000020
CL.MU2= 000002 D$$YNC= 000000 F$$LVL= 000001 LF.LCL= 040000 MC.DC = 000100
CL.RES= 177774 D$$YNM= 000000 GETBIN= ****** GX LF.MMF= 100000 MC.DI = 000060
CS.ABO= 000100 ER$ABO= 000046 GETEX1= ****** GX LF.MSF= 040000 MC.NO = 000000
CS.BUF= 000200 ER$ABT= 000011 G$$TPP= 000000 LF.NKR= 000200 MC.ST = 000120
CS.DCR= 000400 ER$ACC= 000042 G$$TSS= 000000 LF.NKS= 000400 MD.BM = 000040
CS.DEV= 000002 ER$ACT= 000044 G$$TTK= 000000 LF.NPN= 000001 MD.EM = 000100
CS.DIS= 000040 ER$CDI= 000052 G$$WRD= 000000 LF.NTS= 002000 MD.ILS= 000040
CS.ENB= 000020 ER$COM= 000047 IF.INS= 040000 LF.RSU= 100000 MD.IM = 000020
CS.EOF= 000001 ER$FCF= 000050 IF.NKS= 000400 LS.DLS= 000200 MF.ACK= 000004
CS.ERR= 100000 ER$FMT= 000005 IF.NRD= 000200 LS.FCC= 000004 MF.CTL= 000010
CS.HFE= 002000 ER$GEN= 000007 IF.NRI= 100000 LS.FC0= 000001 MF.DAT= 000000
CS.LST= 040000 ER$IFC= 000030 IF.NTS= 002000 LS.FC1= 000002 MSGHDR= 000007
CS.MTL= 004000 ER$ILS= 000043 IF.SND= 000004 LS.ILS= 000200 M$$CRB= 000124
CS.RNG= 000010 ER$IMG= 000053 IF.SNL= 000002 LS.MAK= 000020 M$$CRX= 000000
CS.ROV= 000004 ER$MLB= 000006 I$$RAR= 000000 LS.MNK= 000040 M$$FCS= 000000
CS.RSN= 010000 ER$NOD= 000002 I$$RDN= 000000 LS.RES= 000360 M$$MGE= 000000
CS.SUC= 000001 ER$NSD= 000003 I.FLG = 000012 LS.RSV= 000300 M$$OVR= 000000
CS.TMO= 020000 ER$RES= 000001 I.ILA = 000040 L$$ASG= 000000 NC.FM0= 000000
C$$CKP= 000000 ER$SSR= 000000 I.IREM= 000042 L$$DRV= 000000 NC.FM1= 000001
C$$ORE= 000400 ER$SSS= 000045 I.LDA = 000024 L$$P11= 000001 NC.FM2= 000002
C$$RSH= 177564 ER$STA= 000051 I.LIA = 000026 L$$11R= 000000 NETTIM= 000005
C.BID 000003 ER$TCN= 000040 I.LLA = 000002 L.CIQ 000026 NE.ABO= 177776
C.BUF 000014 ER$TCO= 000041 I.LNO = 000022 L.DCR 000036 NE.ACT= 177771
C.BUF1 000014 ER$TPA= 000010 I.LSA = 000032 L.FLG 000012 NE.CLS= 177767
C.BUF2 000024 ER$UOB= 000004 I.LVL = 000001 L.LDA 000024 NE.DIS= 177777
C.CNT 000020 E$$XPR= 000000 I.NDA = 000034 L.LIA 000026 NE.FMT= 177770
NSPIF MACRO M1110 13-OCT-79 10:00 PAGE 10-2
SYMBOL TABLE
NE.NDT= 177766 NT$ON = 000002 N$$USR= 000001 PS$NTI= 000003 R$$11M= 000000
NE.NOD= 177774 NT$QRY= 000014 N.ACNT 000116 PS$OFF= 000000 SENDIT 001206RG 002
NE.REJ= 177775 NT$REJ= 000004 N.ACTL 000114 PS$STR= 000001 SNDICF= ****** GX
NE.RES= 177773 NT$ROU= 000022 N.DDL1 000012 PS$UP = 000005 ST$CC = 000002
NE.TIM= 177772 NT$RTI= 000010 N.DDL2 000016 PS$VER= 000004 ST$CIR= 000003
NI.FLI= 000002 NT$RTN= 000000 N.DDS1 000014 PS$WT = 000002 ST$CIS= 000001
NI.FRI= 000004 NT$SNG= 000006 N.DDS2 000020 PUTBIN= ****** GX ST$DAT= 000005
NI.FRT= 000001 NT$STP= 000004 N.DFMT 000010 P$CHN 000004 ST$DID= 000015
NI.FUB= 000010 NT$XOF= 000020 N.DGRP 000012 P$CNT 000005 ST$DIP= 000006
NI.INI= 000001 NT$XON= 000016 N.DOBJ 000011 P$FRQ 000012 ST$DIR= 000012
NI.RLI= 000002 NT.ACK= 000001 N.DUSR 000014 P$FSP 000013 ST$DIS= 000014
NI.RRI= 000004 NT.BOM= 000040 N.LGTH= 000160 P$LCD 000002 ST$UDI= 000013
NI.RVE= 000001 NT.EOM= 000100 N.NODE 000000 P$LEN 000014 ST$UNR= 000011
NI.VER= 000002 NT.FCN= 037400 N.OPDL 000136 P$LST 000000 S$EMR 000006
NP$RTR= 000003 NT.MD1= 000420 N.OPTD 000140 P$NOD 000010 S$FMT 000012
NS.BOM= 000040 NT.MFL= 000002 N.PASL 000102 P$PFQ 000006 S$LEN 000040
NS.EOM= 000100 NT.MOD= 000020 N.PASS 000104 P$TIM 000003 S$LNK 000022
NS.MFL= 000003 NT.MOM= 000000 N.RQDL 000060 P$$P45= 000000 S$MLK 000024
NS.MOM= 000000 NT.NAK= 000002 N.RQID 000062 P$$WRD= 000000 S$NKS 000010
NS.NFL= 000001 NT.NFL= 000000 N.RSRV= 000030 Q$$OPT= 000010 S$RES 000014
NS.SET= 000002 NT.SFL= 000001 N.SDL1 000036 RCDAK = ****** GX S$SEC 000000
NS.SFL= 000002 NT.SOL= 000140 N.SDL2 000042 RCVICT= ****** GX S$SNI 000016
NS.SOL= 000140 NT.XOF= 000004 N.SDS1 000040 RCVSEG= ****** GX S$UMR 000004
NS.SUC= 000001 NT.XON= 000010 N.SDS2 000056 RF.CLN= 000000 S$UMS 000002
NT$ABO= 000022 N$ACQ 000000 N.SEG 000006 RF.CTL= 000003 S$UNI 000020
NT$ACC= 000002 N$ICF 000006 N.SFMT 000034 RF.TIM= 177400 S$$WRG= 000000
NT$ADS= 000000 N$LNI 000010 N.SGRP 000036 RF.TM0= 000400 S$$YSZ= 007600
NT$AKD= 000016 N$LVC 000022 N.SOBJ 000035 RF.WTD= 000020 TOSS 000074R 002
NT$AKI= 000020 N$NOD 000032 N.SUSR 000040 RF.WTM= 000030 T$$KMG= 000000
NT$CC = 000012 N$PLD 000026 PF$EIP= 000100 RF.WTS= 000010 T$$MIN= 000000
NT$CON= 000000 N$STS 000042 PF$ENB= 000200 RH.CNT= 000001 VF$RCV= 100000
NT$DAT= 000002 N$TCB 000004 PF$OFF= 000000 RH.EFM= 000020 VF$XMT= 040000
NT$DIS= 000010 N$TMP 000012 PF$RLI= 000002 RH.HDR= 000002 V$FLG 000000
NT$IDC= 000034 N$VER 000036 PF$RRI= 000004 RH.PRI= 000014 V$LEN 000022
NT$IDN= 000030 N$$DAT= 000030 PF$RVE= 000001 RH.PR1= 000004 V$RCV 000002
NT$ILN= 000032 N$$DIS= 000020 PF$RVR= 000040 RH.RFM= 000100 V$XMT 000012
NT$IND= 000024 N$$ICF= 000001 PF$SLI= 000002 RINACK 000144R 002 V$$CTR= 001000
NT$INL= 000026 N$$INT= 000020 PF$SRI= 000004 RINCPT 000000RG 002 WINDOW= 004000
NT$INT= 000004 N$$LDV= 000001 PF$SRT= 000001 RINDAT 000356R 002 XINACK 000656R 002
NT$LS = 000014 N$$MOV= 000010 PF$STA= 000003 RINTBL 000064R 002 XINCPT 000100RG 002
NT$MOD= 000012 N$$OPT= 000020 PF$SUB= 000010 R$$DER= 000000 XINDAT 001026R 002
NT$NAK= 000022 N$$OVR= 000042 PF$UP = 000001 R$$K11= 000001 XINTBL 000134R 002
NT$OFF= 000026 N$$SYS= 000001 PRODS = ****** GX R$$SND= 000000 X$$DBT= 000000
. ABS. 000160 000
000000 001
NSPIF 001226 002
ERRORS DETECTED: 0
VIRTUAL MEMORY USED: 17945 WORDS ( 71 PAGES)
DYNAMIC MEMORY: 19564 WORDS ( 75 PAGES)
ELAPSED TIME: 00:00:48
NSPIF,[131,34]NSPIF/CR/-SP=[130,10]NETLIB/ML,RSXMCI/PA:1,[131,10]NSPIF
NSPIF CREATED BY MACRO ON 13-OCT-79 AT 10:00 PAGE 1
SYMBOL CROSS REFERENCE CREF
SYMBOL VALUE REFERENCES
ACKMAS = 170000 6-190 7-266 7-281
A.NAK = 010000 6-184 6-187 7-256 7-260 7-271 7-275
C.BUF 000014 4-82 *4-84 5-127
C.CNT 000020 *4-86
C.MOD 000011 *8-338 *8-343 *9-424 *9-429
C.STS 000012 *4-83
DODCR = ****** GX 6-207 7-293
D$CHN 000002 10-458
GETBIN = ****** GX 6-182 7-251 7-262 7-277
GETEX1 = ****** GX 4-87 5-128
IF.INS = 040000 7-273
IF.NKS = 000400 6-186 7-258
IF.NTS = 002000 6-199 7-284
I.FLG = 000012 *6-186 *6-199 *7-258 *7-273 *7-284
I.ILA = 000040 6-171 7-240 8-330 9-413
I.IREM = 000042 8-335 9-421
I.LLA = 000002 6-180 7-249 8-332 9-415
I.LSA = 000032 *6-196 *7-276
I.NIN = 000016 7-278 *7-280 *7-281
I.NXN = 000014 7-263 *7-265 *7-266
I.REM = 000006 10-457
I.RLA = 000010 6-178 7-247 8-324 9-383
I.TIPD = 000005 *8-339 *9-425
I.TIPI = 000004 *8-344 *9-430
I.USA = 000030 *6-193 *7-261
LF.INT = 000400 6-167 7-236 8-322 9-381
L.RNO 000020 *6-188 *6-189 *6-190
MD.IM = 000020 6-191 7-252 8-336 9-422
NT$IND = 000024 8-338 9-424
NT$INL = 000026 8-343 9-429
N$$CNC = ****** 9-394
PRODS = ****** GX 6-164 7-233 8-319 9-378
PS$UP = 000005 10-458
PUTBIN = ****** GX 6-179 6-181 7-248 7-250 8-331 8-333 9-414 9-416
RCDAK = ****** GX 8-334 9-417
RCVICT = ****** GX 4-102
RCVSEG = ****** GX 9-418
RINACK 000144 R 4-101 #6-161
RINCPT 000000 RG #4-82
RINDAT 000356 R 4-100 #7-230
RINTBL 000064 R 4-95 #4-100
SENDIT 001206 RG 6-173 7-242 #10-457
SNDICF = ****** GX 8-340 8-345 9-426 9-431
ST$CIR = 000003 6-169 7-238
ST$DAT = 000005 6-175 7-244 8-327 9-385
TOSS 000074 R 4-88 4-90 4-103 #4-105 5-129 5-131 5-140 5-141
XINACK 000656 R 5-139 #8-311
XINCPT 000100 RG #5-127
XINDAT 001026 R 5-138 #9-375
XINTBL 000134 R 5-135 #5-138
NSPIF CREATED BY MACRO ON 13-OCT-79 AT 10:00 PAGE 2
MACRO CROSS REFERENCE CREF
MACRO NAME REFERENCES
CALL 4-87 4-95 5-128 6-164 6-173 6-179 6-181 6-182 7-233 7-242
7-248 7-250 7-251 7-262 7-277 8-319 8-331 8-333 8-334 8-340
8-345 9-378 9-414 9-416 9-417 9-418 9-426 9-431
CALLR #5-135 #6-207 #7-293
CCBDF$ #3-47 3-48
CRASH #8-353 #9-438
MAP #3-46
NSPSY$ #3-47 3-49
RESRG #3-46 4-96 7-234 8-320 9-379
RETURN #4-97 #4-106 #6-204 #7-290 #8-347 #8-350 #9-436 #10-461
SAVRG #3-46 4-94 7-231 8-317 9-376