*DECK  PATHDSPL 
USETEXT COMCBEG 
USETEXT COMRDSD 
USETEXT COMRNET 
PROC PATHDSPL;
# TITLE PATHDSPL - FORMAT PATH DISPLAY #
  
      BEGIN  # PATHDSPL # 
  
# 
**    PATHDSPL - FORMAT PATH DISPLAY
* 
*     FORMAT PATH DISPLAY IN THE DSD L DISPLAY BUFFER 
* 
*     PROC PATHDSPL.
* 
*     ENTRY      - NONE 
* 
*     EXIT       - DSDLBUF UPDATED WITH THE PATH DISPLAY
* 
*     PROCESSING -
*         STARTING WITH THE CURRENT INDEX GENERATE THE PATH DISPLAY 
*         RETURN
# 
  
# 
****  PROC PATHDSPL - XREF LIST BEGIN.
# 
      XREF
        BEGIN 
        FUNC BINTODD C(10); 
        FUNC BINTOHD C(10); 
        ITEM NADTBL  I;              # LOCAL NAD TABLE ADDRESS #
        ITEM NDTADDR  I;             # NETWORK DEFINITION TABLE ADDR #
        END 
# 
****  PROC PATHDSPL - XREF LIST END.
# 
  
  
      BASED ARRAY PTHDR[0:0] S(1);  # PATH DISPLAY HEADER # 
        BEGIN 
        ITEM PTHD$TWC   U(00,00,06); # TITLE WORD COUNT # 
        ITEM PTHD$TSZ   U(00,06,06); # SIZE AND INTENSITY # 
        ITEM PTHD$TYCD  U(00,12,12); # TITLE Y COORDINATE # 
        ITEM PTHD$TXCD  U(00,24,12); # TITLE X COORDINATE # 
        ITEM PTHD$TC    C(00,36,14); # TITLE #
        ITEM PTHD$WC    U(02,00,06); # HEADER WORD COUNT #
        ITEM PTHD$SZ    U(02,06,06); # SIZE AND INTENSITY # 
        ITEM PTHD$Y1    U(02,12,12); # LINE 1 Y COORDINATE #
        ITEM PTHD$X1    U(02,24,12); # LINE 1 X COORDINATE #
        ITEM PTHD$L1    C(02,36,22); # LINE 1 # 
        ITEM PTHD$Y2    U(04,48,12); # LINE 2 Y COORDINATE #
        ITEM PTHD$X2    U(05,00,12); # LINE 2 X COORDINATE #
        ITEM PTHD$L2    C(05,12,50); # LINE 2 # 
        ITEM PTHD$Y3    U(10,12,12); # LINE 3 Y COORDINATE #
        ITEM PTHD$X3    U(10,24,12); # LINE 3 X COORDINATE #
        ITEM PTHD$L3    C(10,36,64); # LINE 3 # 
        ITEM PTHD$END   U(17,00,60); # PATH HEADER END #
        END 
  
      BASED ARRAY PTDSP[0:0] S(1);  # PATH LINE DISPLAY # 
        BEGIN 
        ITEM PTDS$WD0   U(00,00,60); # REFERENCE WORD ZERO #
        ITEM PTDS$WC    U(00,00,06); # PATH DISPLAY WORD COUNT #
        ITEM PTDS$SZ    U(00,06,06); # SIZE AND INTENSITY # 
        ITEM PTDS$PAD   U(00,00,12); # USED ON NOS TO PAD OUT HEADER #
        ITEM PTDS$YCD   U(00,12,12); # Y COORDINATE # 
        ITEM PTDS$ORDX  U(00,24,12); # ORD X COORDINATE # 
        ITEM PTDS$ORDC  C(00,36,02); # ORDINAL #
        ITEM PTDS$PIDX  U(00,48,12); # PID X COORDINATE # 
        ITEM PTDS$PID   C(01,00,04); # PID #
        ITEM PTDS$EST   U(01,24,18); # EST #
        ITEM PTDS$BLK   C(01,42,01); # BLANK #
        ITEM PTDS$ENAX  U(01,48,12); # ENABLE X COORDINATE #
        ITEM PTDS$ENAC  C(02,00,04); # ENABLE # 
        ITEM PTDS$LTEX  U(02,24,12); # LTE X COORDINATE # 
        ITEM PTDS$LTEC  C(02,36,04); # LOCAL TRUNK ENABLES #
        ITEM PTDS$RTEX  U(03,00,12); # RTE X COORDINATE # 
        ITEM PTDS$RTEC  C(03,12,04); # REMOTE TRUNK ENABLES # 
        ITEM PTDS$RNAX  U(03,36,12); # RNA X COORDINAGE # 
        ITEM PTDS$RNAC  C(03,48,02); # REMOTE NAD ADDRESS # 
        ITEM PTDS$DESX  U(04,00,12); # DESTIN X COORDINATE #
        ITEM PTDS$DESC  C(04,12,02); # DESTIN # 
        ITEM PTDS$ACCX  U(04,24,12); # ACCESS CODE X COORDINATE # 
        ITEM PTDS$ACCC  C(04,36,04); # ACCESS CODE #
        ITEM PTDS$CONX  U(05,00,12); # CON X COORDINATE # 
        ITEM PTDS$CONC  C(05,12,02); # CONNECTION COUNT # 
        ITEM PTDS$CHX   U(05,24,12); # CH X COORDINATE #
        ITEM PTDS$CH    U(05,36,12); # CH # 
        ITEM PTDS$LOGX  U(05,48,12); # LOG X COORDINATE # 
        ITEM PTDS$LOG   C(06,00,03); # LOG #
        ITEM PTDS$FILL  U(06,18,42); # LINE FILL #
        ITEM PTDS$END   U(07,00,60); # PATH LINE DISPLAY END #
        END 
  
      ITEM CURPID C(3) ;      # CURRENT PID # 
      ITEM I I; 
      ITEM J I; 
      ITEM PTHL I;
CONTROL EJECT;
  
      P<PTHDR> = LOC(DSD$DSPST[0]); 
    CONTROL IFEQ OS$NOSBE;
      PTHD$TWC[0] = 2;
      PTHD$TSZ[0] = 0;
    CONTROL ENDIF;
    CONTROL IFEQ OS$NOS;
      PTHD$TWC[0] = O"55";
      PTHD$TSZ[0] = O"55";
    CONTROL ENDIF;
      PTHD$TYCD[0] = O"7000" + (45 * 10); 
      PTHD$TXCD[0] = O"6000"; 
      PTHD$TC[0] = "PATH DISPLAY";
    CONTROL IFEQ OS$NOSBE;
      PTHD$WC[0] = 15;
      PTHD$SZ[0] = 0; 
    CONTROL ENDIF;
    CONTROL IFEQ OS$NOS;
      PTHD$WC[0] = O"55"; 
      PTHD$SZ[0] = O"55"; 
    CONTROL ENDIF;
      PTHD$Y1[0] = O"7000" + (44 * 10); 
      PTHD$X1[0] = O"6000" + O"300";
      PTHD$L1[0] = HDRPTDSP1; 
      PTHD$Y2[0] = O"7000" + (43 * 10); 
      PTHD$X2[0] = O"6000" + O"300";
      PTHD$L2[0] = HDRPTDSP2; 
      PTHD$Y3[0] = O"7000" + (42 * 10); 
      PTHD$X3[0] = O"6000"; 
      PTHD$L3[0] = HDRPTDSP3; 
      I = 0;
      P<NET$HEADER> = NDTADDR;
      ASLONGAS (I LE DISP$INDX[DISORDPT] AND P<NET$HEADER> NE 0) DO 
        BEGIN 
        IF DISP$INDX[DISORDPT] GR (I + NET$NMPATH[0]) 
        THEN
          BEGIN 
          I = I + NET$NMPATH[0];
          P<NET$HEADER> = NET$NXTPID[0];
          END 
        ELSE
          BEGIN 
          PTHL = NET$NMPATH[0] - (DISP$INDX[DISORDPT]-I) + 1; 
          P<PTH$ENTRY> = NET$PATHAD[0] +
                         ((DISP$INDX[DISORDPT]-I-1)*PTH$LENGTH);
          I = DISP$INDX[DISORDPT] + 1;
          END 
        END 
      P<PTDSP> = LOC(PTHD$END[0]);
      CURPID = "   " ;
      FOR I=0 STEP 1 WHILE (I LE DISPLPATHMX AND P<NET$HEADER> NE 0) DO 
        BEGIN 
      CONTROL IFEQ OS$NOSBE;
        PTDS$WC[0] = 7; 
        PTDS$SZ[0] = 0; 
      CONTROL ENDIF;
      CONTROL IFEQ OS$NOS;
        PTDS$PAD[0] = O"6000";
        # FOR THE 721 CONSOLE, A PADDING OF BLANKS (O"55") CAUSES THE # 
        # HEADER (WHICH IS A FULL 64 CHARACTERS) TO BE OVER WRITTEN. #
        # THEREFORE PAD THE NOS/BE WORD COUNT AND SIZE FIELDS ON NOS #
        # WITH A HARMLESS VALUE OF 0"6000" #
      CONTROL ENDIF;
        PTDS$YCD[0] = O"7000" + YSTART - (I * 10);
        PTDS$ORDX[0] = O"6000"; 
        PTDS$ORDC[0] = BINTODD(DISP$INDX[DISORDPT] + I,2);
        PTDS$PIDX[0] = O"6000" + O"40"; 
        IF NET$PID[0] EQ CURPID 
        THEN
          BEGIN 
          PTDS$PID[0] = "   " ; 
          END 
        ELSE
          BEGIN 
          CURPID = NET$PID[0] ; 
          PTDS$PID[0] = NET$PID[0] ;
          END 
        P<NAD$ENTRY> = NADTBL + (PTH$NADORD[0] * NAD$LENGTH); 
        PTDS$EST[0] = (B<0,3>NAD$ESTORD[0] + O"33") * O"10000"
                    + (B<3,3>NAD$ESTORD[0] + O"33") * O"100"
                    + (B<6,3>NAD$ESTORD[0] + O"33");
        PTDS$BLK = BLANK; 
        PTDS$CHX[0] = O"6000" + O"140"; 
        PTDS$CH[0] = (B<0,3>NAD$CHAN[0] + O"33") * O"100" 
                   + (B<3,3>NAD$CHAN[0] + O"33"); 
        PTDS$ENAX[0] = O"6000" + O"210";
        IF PTH$ENABLE[0]
        THEN
          BEGIN 
          PTDS$ENAC[0] = "YES"; 
          END 
        ELSE
          BEGIN 
          PTDS$ENAC[0] = "NO";
          END 
        PTDS$LTEX[0] = O"6000" + O"300";
        PTDS$RTEX[0] = O"6000" + O"400";
        FOR J = 0 STEP 1 UNTIL 3 DO 
          BEGIN 
          C<J,1>PTDS$LTEC[0] = B<J,1>PTH$LTE[0] + O"33";
          C<J,1>PTDS$RTEC[0] = B<J,1>PTH$RTE[0] + O"33";
          END 
        P<RMT$ENTRY> = PTH$RMTNAD[0]; 
        PTDS$RNAX[0] = O"6000" + O"500";
        PTDS$RNAC[0] = BINTOHD(RMT$NAD[0],2); 
        PTDS$DESX[0] = O"6000" + O"550";
        PTDS$DESC[0] = BINTOHD(RMT$DEST[0],1);
        PTDS$ACCX[0] = O"6000" + O"610";
        PTDS$ACCC[0] = BINTOHD(PTH$ACCESS[0],4);
        PTDS$CONX[0] = O"6000" + O"670";
        PTDS$CONC[0] = BINTODD(RMT$CCOUNT[0],2);
        PTDS$LOGX[0] = O"6000" + O"750";
        P<NST$ENTRY> = LOC(RMT$NSTWD0); 
        IF NST$LOG
        THEN
          BEGIN 
          PTDS$LOG[0] = "YES";
          END 
        ELSE
          BEGIN 
          PTDS$LOG[0] = "NO"; 
          END 
        PTHL = PTHL - 1;
        IF PTHL EQ 0
        THEN
          BEGIN 
          P<NET$HEADER> = NET$NXTPID[0];
          PTHL = NET$NMPATH[0]; 
          P<PTH$ENTRY> = NET$PATHAD[0]; 
          END 
        ELSE
          BEGIN 
          P<PTH$ENTRY> = P<PTH$ENTRY> + PTH$LENGTH; 
          END 
        PTDS$FILL[0] = 0; 
        P<PTDSP> = LOC(PTDS$END[0]);
        END 
      PTDS$WD0[0] = 0;
      RETURN; 
      END 
  
      TERM
