*COMDECK X25MUX 
_$J+? 
_ 
  
  
  
                 XX      XX        222222    5555555555 
                  XX    XX        22222222   5555555555 
                   XX  XX        22      22  55 
                    XXXX                 22  55 
                     XX            2222222    5555555 
                     XX           2222222      5555555
                    XXXX         22                  55 
                   XX  XX        22          55      55 
                  XX    XX   ..  2222222222   55555555
                 XX      XX  ..  2222222222    555555 
  
  
  
                   MM      MM  UU      UU  XX      XX 
                   MMM    MMM  UU      UU   XX    XX
                   MMMM  MMMM  UU      UU    XX  XX 
                   MM MMMM MM  UU      UU     XXXX
                   MM  MM  MM  UU      UU      XX 
                   MM      MM  UU      UU      XX 
                   MM      MM  UU      UU     XXXX
                   MM      MM  UU      UU    XX  XX 
                   MM      MM   UUUUUUUU    XX    XX
                   MM      MM    UUUUUU    XX      XX 
  
  
  
       LL          EEEEEEEEEE  VV      VV  EEEEEEEEEE  LL 
       LL          EEEEEEEEEE  VV      VV  EEEEEEEEEE  LL 
       LL          EE           VV    VV   EE          LL 
       LL          EE           VV    VV   EE          LL 
       LL          EEEEEEEE      VV  VV    EEEEEEEE    LL 
       LL          EEEEEEEE      VV  VV    EEEEEEEE    LL 
       LL          EE             VVVV     EE          LL 
       LL          EE             VVVV     EE          LL 
       LLLLLLLLLL  EEEEEEEEEE      VV      EEEEEEEEEE  LLLLLLLLLL 
       LLLLLLLLLL  EEEEEEEEEE      VV      EEEEEEEEEE  LLLLLLLLLL 
  
  
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
*                              PX25MUX                                * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
_$R-,G-,I-    NON-RECURSIVE 
              INTERRUPTABLE?
_$J+? 
_ 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
*                                                                     * 
** OVERVIEW:                                                          * 
*              LEVEL 2 MUX LEVEL ENTRY POINT.                         * 
*              FOR THE RECEIPT OF AN OUTPUT BUFFER TRANSMITTED        * 
*              WORKLIST, THIS MODULE RELEASES NON I-FRAME AND         * 
*              TRIES TO OUTPUT ANOTHER FRAME IF THE PX25TRANS         * 
*              IS NOT USING THE OUTPUT FRAME QUEUE POINTER            * 
*              WHICH IS DETECTED BY CHECKING BZLOCK.                  * 
*                                                                     * 
** INPUT:                                                             * 
*              OBT WORKLIST                                           * 
*                (BWWLENTRY [MUX])                                    * 
*                                                                     * 
** EXTERNAL SUBROUTINES:                                              * 
*                                                                     * 
*              PBLCBP    - FINDS ADDRESS OF LCB BY LINE NUMBER.       * 
*              PBRELZRO  - RELEASE CHAIN OF BUFFERS CHECK NIL FIRST.  * 
*              PX25XMIT  - TRANSMITS A FRAME.                         * 
*                                                                     * 
** NOTES:                                                             * 
*                                                                     * 
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * 
? 
PROCEDURE PX25MUX;
  
CONST 
  
*CALL X25CON01
  
TYPE
  
      X25BUFFER = PACKED RECORD 
  
                    XBSP1   : INTEGER;      _FCD/LCD                   ?
                    XBSP2   : INTEGER;      _BUFFER FLAGS              ?
                    XBSP3   : INTEGER;      _QCHAIN                    ?
                    XBSP4   : INTEGER;      _SPARE                     ?
                    XBSP5   : B015BITS;     _SPARE                     ?
                    XFSUI   : BOOLEAN;      _T : S/U FRAME  F : I-FRAME?
                  END; _X25BUFFER?
  
      X5BUFPTR = 'X25BUFFER;                _X25 BUFFER POINTER        ?
  
      X0BUFPTR = PACKED RECORD              _X25 BUFPTRS DEFINITION    ?
  
                CASE X9TAG6 : INTEGER OF
  
                  1 : (X1BFPTR : B0BUFPTR); _ACCESS GLOBAL VARIANTS    ?
                  2 : (X2BFPTR : X5BUFPTR); _X25 BUFFER POINTER        ?
                END; _X0BUFPTR? 
  
  
VAR 
      X2FRPTR  : X0BUFPTR;                  _FRAME POINTER             ?
      XTLCB    : BZLCBP;                    _LCB POINTER               ?
      LINENUM  : INTEGER;                   _LINE NUMBER               ?
  
BEGIN 
  
IF BWWLENTRY[MUX2].B0EWLQ.MMWKCOD = MMOBUX
THEN
  BEGIN 
  LINENUM := BWWLENTRY[MUX2].B0EWLQ.MMLINO; _GET LINE NUMBER           ?
  PBLCBP (LINENUM, XTLCB);                  _ACQUIRE ADDRESS OF LCB    ?
  WITH XTLCB'.BZSLCBPTR'.BZXSLCB DO         _SUB LCB POINTER           ?
    BEGIN 
    BZOON           := FALSE;               _RESET OUTPUT ON           ?
    X2FRPTR.X1BFPTR := BZLFRM;              _LAST TRANSMITTED          ?
    IF X2FRPTR.X2BFPTR'.XFSUI               _NON I FRAME               ?
    THEN
      PBRELZRO(BZLFRM,BEDBSIZE);            _RELEASE IT                ?
    BZLFRM := NIL;                          _RESET POINTER             ?
    IF BZLOCK = FALSE 
    THEN
      PX25XMIT (XTLCB, 0);                  _CALL TRANSMITTER          ?
    END; _ WITH XTLCB.BZSLCBPTR.BZXSLCB                                ?
  END; _ IF MMWKCOD = MMOBUX                                           ?
END; _PROCEDURE PX25MUX                                                ?
