*COMDECK PILININIT
_$J+?                                                                        0
_$R-,G-,I-? 
_ 
************************************************************************
*                                                                      *
*              * *   P I L I N I N I T   * *                           *
*                                                                      *
*              INITIALIZATION OF SUBLINE AND LINE CONTROL BLOCKS       *
*                                                                      *
************************************************************************
*                                                                      *
** OVERVIEW -  THIS ROUTINE ADDS THE MLIA AND COUPLER SUB LINE CONTROL *
*              BLOCKS TO THE ACTIVE LCB LIST TO PROVIDE TIMING SERVICE *
*              FOR THESE PROGRAMS.                                     *
*              THE COUPLER LINE (S) ARE ALSO SET UP WITH THE DATA BUFF *
*              SIZE.  FOR THE 3000 SYSTEM (CCM) A COUPLER IDLE IS SENT.*
*                                                                      *
** INPUT -     ARRAY OF SUB LINE CONTROL BLOCKS (CHSUBLCBS).           *
*                                                                      *
** OUTPUT -    ENTERIES IN THE ACTIVE LCB LIST (CELCBACT).             *
*              COMMANDS TO THE COUPLER (BUFFER LENGTH, IDLE STATUS).   *
*                                                                      *
** EXTERNAL SUBROUTINES USED                                           *
*              PBLLENTRY  ADD A LINE TO ACTIVE LCB LIST                *
*                                                                      *
************************************************************************
? 
PROCEDURE PILININIT;
CONST 
    LIPINIT = A0WK7;                        _ LIP INITIALIZATION WK CD ?
    RC      = 5;                            _ NO-TIP PRESENT           ?
VAR 
    LPTR    : B0BUFPTR;                     _ LINE POINTER             ?
    I      : INTEGER;                       _ GENERAL INDEX            ?
    HPCMD  : INTEGER;                       _ COUPLER COMMAND WORD     ?
    HPPARM : INTEGER;                       _ COUPLER PARAMETER        ?
    STATUS    : SETWORD;                    _ RECEIVE COUPLER STATUS   ?
    ICOUNT : INTEGER;                       _ COUNT CALLS TO *PNUSSM*  ?
BEGIN 
_ 
*              ---- INITIATE SUB LCBS ----
? 
  FOR I := 1 TO CGLCBP'[0].BZNUMSUBS DO     _ LOOP ON ALL SUBPORT      ?
  WITH CSUBLCBP'[I] DO                      _SUB LCB                   ?
  CASE BZTIPTYPE OF 
  
    N0CONSOLE,                              _ ENTER CONSOLE AS ACTIVE  ?
    N0MLIA : PBLLENTR (BZLINO);             _ ENTER MLIA AS ACTIVE     ?
  
    N0COUPLER :                             _ HIP TERMINAL TYPE        ?
    WITH BZTCBPTR'.BHCCB DO                 _ CPLR CB ADDRESS          ?
      BEGIN 
      IF BYWLCB[B0COWL].BYPRADDR " 0        _ IF HIP CODE IN SYSTEM    ?
      THEN
        BEGIN 
        PBLLENTR (BZLINO);                  _ ENTER HIP LIN AS ACTIVE  ?
        BLSTIMTBL[BZLINO.BDSUBPORT] 
                        .BLTIME := 1;       _ SET-UP TIME-OUT INTERVAL ?
        BHCPDEAD := TRUE;                   _ SET COUPLER DOWN         ?
_ 
*              ---- SET UP BUFFER SIZE FOR COUPLER ---
? 
        HPCMD := BHCPCONN + ACPOBL;         _ OUTPUT BUFFER SIZE       ?
        HPPARM := BEDBSIZE'.BEMSK.BAINT;
        INST ($E400,                        _ LDQ                      ?
               HPCMD,                       _ WITH COMMAND             ?
              $C400,                        _ LDA                      ?
               HPPARM,                      _ WITH BUFFER SIZE         ?
              $0B04);                       _ SIO                      ?
        HPBUFCHAR := BUFLCD [B0S3]          _ NUMBER OF CHARS IN BUFFER?
                     - BLOCK + 1; 
        END _ BYPRADDR " 0 ?
      ELSE
        BEGIN                               _ HIP CODE NOT PRESENT     ?
        BZCNFST := C7NOTCNF;                _ SUB-LCB NOT CONFIG.      ?
        BHCNFST := C7NOTCNF;                _ COUPLER CB NOT CONFIG.   ?
        PNUSSM (C7NOTCNF,RC,                _ UNSOLICIATED STATUS      ?
                D9CP,BZTCBPTR); 
        END; _ ELSE BYPRADDR = 0 ?
      END; _ WITH BHCCB ? 
  
  END;    _ CASE      ? 
  
_ 
*              ---- INITIATE TRUNKS AND LINES ----
? 
  ICOUNT := 0;                              _ INITIALIZE COUNTER       ?
  FOR I := 1 TO C0NPBL DO                   _ INITIATE TRUNKS AND LINES?
    BEGIN 
    ADDR(CGLCBP'[I],LPTR);
    IF BYWLCB[B0HDLC].BYPRADDR " 0          _ IF LIP PRESENT           ?
    THEN
      BEGIN 
_  ******  CAUTION - HIDDEN *IF DEF,HLIP  ******  ? 
*IF DEF,HLIP
      BWWLENTRY[OPS].BWLIPPARAMS
        .IEWKCODE := A0SMEN;                _ ENABLE WORKCODE          ?
      BWWLENTRY[OPS].BWLIPPARAMS
        .IELINO.BDPORT := I;                _ PORT NUMBER              ?
      IF CGLCBP'[I].BZCNFST = C7ENABLED     _ IF TRUNK ENABLED         ?
      THEN
        PBLSPUT (BWWLENTRY[OPS],            _ NOTIFY LIP               ?
                 BYWLCB[B0HDLC]); 
*ENDIF
_  ******  CAUTION - HIDDEN *ENDIF FOR LIP CODE  ******  ?
      END  _ BYPRADDR " NIL ? 
    ELSE
      BEGIN 
_  ******  CAUTION - HIDDEN *IF DEF,HLIP  ******  ? 
*IF DEF,HLIP
      CGLCBP'[I].BZCNFST := C7NOTCNF;       _ LIP NOT CONFIGURED       ?
      CGLCBP'[I].BZTCBPTR'.TRKCB.TRCNFST
                          := C7NOTCNF;
      ICOUNT := ICOUNT + 1;                 _ BUMP COUNTER             ?
      IF ICOUNT < 10                        _ IF LESS THAN MAX. ALLOWED?
      THEN
        PNUSSM (C7NOTCNF,RC,D9TR,LPTR);     _ REQUEST STATUS MESSAGE   ?
*ENDIF
_  ******  CAUTION - HIDDEN *ENDIF FOR LIP CODE  ******  ?
      END;
    END; _ FOR ?
  FOR I := C0NPBL+1 TO C4LCBS DO            _ CHECK ALL LINES          ?
    BEGIN 
    IF CGLCBP'[I].BZCNFST = C7NOTCNF        _ IF TIP NOT PRESENT       ?
    THEN
      BEGIN 
      ADDR (CGLCBP'[I],LPTR); 
      ICOUNT := ICOUNT + 1;                 _ BUMP COUNTER             ?
      IF ICOUNT < 10
      THEN
        PNUSSM (C7NOTCNF,RC,D9LI,LPTR);     _ GENERATE STATUS MESSAGE  ?
      END;
    END; _ FOR I... ? 
END;      _ PILININIT ? 
