.TITLE RMFNSP - GET NSP DATA FOR RM DISPLAY .IDENT /V01.01/ ; ; COPYRIGHT (C) 1979, 1980 BY ; DIGITAL EQUIPMENT CORPORATION, MAYNARD, MASS. ; ; ; THIS SOFTWARE IS FURNISHED UNDER A LICENSE AND MAY BE USED AND COPIED ; ONLY IN ACCORDANCE WITH THE TERMS OF SUCH LICENSE AND WITH THE ; INCLUSION OF THE ABOVE COPYRIGHT NOTICE. THIS SOFTWARE OR ANY OTHER ; COPIES THEREOF MAY NOT BE PROVIDED OR OTHERWISE MADE AVAILABLE TO ANY ; OTHER PERSON. NO TITLE TO AND OWNERSHIP OF THE SOFTWARE IS HEREBY ; TRANSFERRED. ; ; THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT NOTICE ; AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL EQUIPMENT ; CORPORATION. ; ; DIGITAL ASSUMES NO RESPONSIBILITY FOR THE USE OR RELIABILITY OF ITS ; SOFTWARE ON EQUIPMENT WHICH IS NOT SUPPLIED BY DIGITAL. ; ; ; MODULE DESCRIPTION: ; ; GET NSP DATA FOR SPECIFIED NODE FOR REMOTE (RM) NODE DISPLAY ; ; ; ; DISTRIBUTED SYSTEMS SOFTWARE ENGINEERING ; ; IDENT HISTORY: ; ; 1.00 01-APR-80 ; DECNET-11M/S V3.0 ; DECNET-11M-PLUS V1.0 ; ; 1.01 09-APR-81 ; USE CORRECT GLOBAL SYMBOLS FOR DISPLAYED TEXT ; .SBTTL MACROS .MCALL SLTDF$,PDVDF$,NSDDB$ NSDDB$ ; DEFINE NSP'S DDB OFFSETS AND SYMBOLS PDVDF$ ; DEFINE PDV OFFSETS AND SYMBOLS SLTDF$ ; DEFINE SLT OFFSETS AND SYMBOLS .SBTTL RMFNSP - FIND NODE INFORMATION ;+ ; ; RMFNSP - GET NODE INFORMATION FOR SPECIFIED NODE ; ; INPUTS: ; $RMNNN - NODE ADDRESS FOR SPECIFIED NODE ; ; OUPUTS: ; $RMTYS - ADDRESS OF STRING FOR NODE TYPE ; $RMSTS - ADDRESS OF STRING FOR NODE STATE ; $RMMHC - MAXIMUM HOPS, MAXIMUM COST ; $RMDEV - DEVICE NAME ; $RMCTL - CONTROLLER NUMBER ; $RMUNT - UNIT NUMBER (-1 IF NOT MUX DEVICE) ; $RMTRI - STATION NUMBER (-1 IF NOT MULTIPOINT DEVICE) ; $RMPDI - NSP'S PDV INDEX ; $RMPDV - NSP'S PDV ADDRESS ; $RMDDB - ADDRESS OF NSP'S DDB ; ;- .PSECT PAGE1 ; FORCE ALLOCATION TO FOLLOW PAGE CODE RMFNSP::CLR $RMFLG ; CLEAR FLAGS WORD CALL $SWSTK,20$ ;; ENTER SYSTEM STATE MOV #^RNSP,R2 ;; GET NSP'S PROCESS NAME CALL $PDVID ;; LOCATE NSP'S PDV BCC 2$ ;; BR IF FOUND JMP 20$ ;; BR IF NOT THERE 2$: MOV R2,$RMPDI ;; SAVE NSP'S PDV INDEX ADD $PDVTA,R2 ;; POINT TO NSP'S PDV MOV (R2),$RMPDV ;; SAVE NSP'S PDV ADDRESS MOV (R2),R1 ;; GET NSP'S PDV ADDRESS MOV Z.DAT(R1),R1 ;; GET NSP'S DDB ADDRESS MOV R1,$RMDDB ;; SAVE NSP'S DDB ADDRESS BEQ 20$ ;; BR IF NONE ; ; CHECK FOR REACHABILITY ; MOV #$RMUNR,$RMSTS ;; ASSUME UNREACHABLE MOV $RMNNN,R0 ;; GET SPECIFIED NODE ADDRESS CMP R0,N$NOD(R1) ;; NOT IN REACHABILITY LIST? BHIS 20$ ;; BR IF NO ASL R0 ;; MAKE IT AN INDEX ADD N$NOD+2(R1),R0 ;; POINT TO CORRECT ROL .IF DF,M$$MGE MOV KISAR5,-(SP) ;; SAVE CURRENT MAPPING MOV $RMPDV,R1 ;; POINT AT NSP'S PDV MOV Z.DSP(R1),KISAR5 ;; MAP TO NSP SPACE .IFTF MOV (R0),R2 ;; GET PLB ADDRESS .IFT MOV (SP)+,KISAR5 ;; RESTORE MAPPING TST R2 ;; IS NODE REACHABLE? .ENDC BEQ 20$ ;; BR IF UNREACHABLE MOV #$RMRCH,$RMSTS ;; INDICATE NODE IS REACHABLE ; ; GET LINE-ID ; MOVB #-1,$RMUNT ;; ASSUME NOT MULTIPLEXOR DEVICE MOVB #-1,$RMTRI ;; ASSUME NOT MULTIPOINT DEVICE CLR R0 ;; BISB P$CHN(R2),R0 ;; GET CHANNEL NUMBER MOV R0,$RMCHN ;; SAVE IT ASL R0 ;; CREATE AN INDEX MOV $RMPDV,R1 ;; GET NSP'S PDV ADD #Z.MAP,R1 ;; POINT TO LLC MAPPING TABLE ADD R0,R1 ;; INDEX INTO TABLE USING CHANNEL NUMBER CLR R5 ;; BISB 1(R1),R5 ;; GET STATION NUMBER CLR R0 ;; BISB (R1),R0 ;; GET SLN ASL R0 ;; MAKE IT AN INDEX ADD $SLTMA,R0 ;; INDEX INTO SLT VECTOR MOV (R0),R0 ;; GET SLT ADDRESS CLR R1 ;; BISB L.DDM(R0),R1 ;; GET DDM PDV INDEX ADD $PDVTA,R1 ;; INDEX INTO PDV VECTOR MOV (R1),R1 ;; GET PDV ADDRESS MOV Z.NAM(R1),$RMDEV ;; SAVE DEVICE NAME MOVB L.CTL(R0),$RMCTL ;; SAVE CONTROLLER NUMBER BIT #ZF.MUX,Z.FLG(R1) ;; MUX DEVICE? BEQ 5$ ;; BR IF NO MOVB L.UNT(R0),$RMUNT ;; SAVE UNIT NUMBER IF MUX DEVICE 5$: TSTB L.NSTA(R0) ;; MULTIPOINT DEVICE? BEQ 7$ ;; BR IF NO MOVB R5,$RMTRI ;; SAVE STATION NUMBER ; ; CHECK NODE TYPE ; 7$: MOV #$RMPH2,$RMTYS ;; ASSUME PHASE 2 NODE BIS #RM$PH2,$RMFLG ;; ... BIT #PF$PH2,P$LST(R2) ;; IS IT A PHASE 2 NODE? BNE 10$ ;; BR IF YES BIC #RM$PH2,$RMFLG ;; NOT PHASE 2 NODE MOV #$RMEND,$RMTYS ;; ASSUME END NODE BIT #PF$END,P$LST(R2) ;; IS IT AN END NODE? BNE 10$ ;; BR IF YES MOV #$RMROU,$RMTYS ;; MUST BE ROUTING NODE ; ; GET MAXIMUM HOPS, MAXIMUM COST ; 10$: MOV $RMDDB,R1 ;; GET NSP'S DDB ADDRESS MOV $RMNNN,R0 ;; GET NODE ADDRESS DEC R0 ;; NO ZERO ENTRY IN TABLE ASL R0 ;; MAKE IT AN INDEX ADD N$MHMC+2(R1),R0 ;; POINT TO CORRECT WORD IN TABLE .IF DF,M$$MGE CMP #140000,R0 ;; IS ADDRESS IN POOL? BHI 15$ ;; BR IF YES BIC #140000,R0 ;; MUST BE MAPPED TO APR5 BIS #120000,R0 ;; 15$: MOV KISAR5,-(SP) ;; SAVE CURRENT MAPPING MOV $RMPDV,R1 ;; POINT AT NSP'S PDV MOV Z.DSP(R1),KISAR5 ;; MAP TO NSP SPACE MOV (R0),R1 ;; SAVE MINIMUM HOPS, MINIMUM COST MOV (SP)+,KISAR5 ;; RESTORE MAPPING MOV R1,$RMMHC ;; SAVE MINIMUM HOPS, MINIMUM COST .IFF MOV (R0),$RMMHC ;; SAVE MINIMUM HOPS, MINIMUM COST .ENDC 20$: RETURN .END