*COMDECK PBTUP
_$J+  PAGE EJECT? 
_*****************************
*                            *
*          TUP               *
*   TEST UTILITY PACKAGE     *
*                            *
*****************************?
_$R+,G+,I-     RECURSIVE
               INTERRUPTABLE ?
_***********************************************************************
*                                                                      *
**OVERVIEW- PBTUP IS ENTERED EITHER EVERY 1/2 SECOND FROM PBTIMAL      *
*           OR FROM THE TUP BREAKPOINT HANDLER.  PBTUP DECODES         *
*           TUP INPUT AND STARTS TUP OUT WHEN NECESSARY.               *
*                                                                      *
**INPUT- NONE                                                          *
*                                                                      *
**OUTPUT- SEE OVERVIEW                                                 *
*                                                                      *
**EXTERNAL SUBROUTINES-                                                *
*              1) PBSTARTIO        START I/O                           *
*              2) PBDECODETUP      DECODE TUP INPUT                    *
*                                                                      *
***********************************************************************?
PROCEDURE PBTUP;
BEGIN 
  WITH JUTUPTABLE DO
  IF JUTUPFLG THEN                          _CHECK IF TUP MODE         ?
  BEGIN 
    IF JUMSGINFLG                           _CHECK IF TUP MSG IN       ?
    THEN PBDECODETUP;                       _DECODE AND EXECUTE IT     ?
    IF JUNEEDFLG THEN                       _CHECK IF TUP OUTPUT READY ?
    BEGIN 
      BIODEVICE := JULRPOUT.JCPD;           _SET DEVICE TYPE           ?
      BIOPRP    := JUPRPOUT;                _SET OUTPUT ADDRESS        ?
      PBSTARTIO;                            _ATTEMPT TO START OUTPUT   ?
      LOCK;                                 _LOCK OUT INTERRUPTS       ?
      JUNEEDFLG :=                          _RETRY IF NOT STARTED      ?
      J3REJECTED = JULRPOUT.JCRESULT;       _                          ?
      JUTPINPROGFLG := NOT JUNEEDFLG;       _SET TUP OUTPUT IN-PROGRESS?
      UNLOCK;                               _UNLOCK INTERRUPTS         ?
    END;
  END;
END; _PBTUP?
