*DECK FREE
USETEXT COMCBEG 
USETEXT COMRQUE 
PROC FREE;
# TITLE FREE - FREE QUEUE ENTRY.  # 
  
      BEGIN  # FREE # 
  
# 
**    FREE    - FREE QUEUE ENTRY. 
* 
*     FREE QUEUE ENTRY
* 
*     PROC FREE.
* 
*     ENTRY   - QU$ADDRESS IS BASED ARRAY CONTAINING QUEUE ENTRY. 
* 
*     EXIT    - QU$ADDRESS IS INVALID.
* 
*     PROCESS - SAVE PRIOR QUEUE TYPE.
*               IF RELEASE ENTRY OR TRACE 
*               THEN: 
*                 QUEUE TO END OF FREE QUEUE. 
*               ELSE: 
*                 QUEUE TO FRONT OF FREE QUEUE. 
*                 INVALIDATE QUEUE POINTER ADDRESS. 
*                RETURN.
# 
  
# 
****  PROC FREE - XREF LIST BEGIN.
# 
      XREF
        BEGIN 
        PROC QUEUE;                  # QUEUE #
        ITEM TRACE B;                # TRACE QUEUES # 
        END 
  
# 
****  PROC FREE - XREF LIST END.
# 
  
  
      ITEM USEDEMPTYQ I = 0;
  
CONTROL EJECT;
  
      QU$PREVTYP = QU$TYPE; 
      QU$TYPE = QT$EMPTY; 
      IF QU$RELEASE OR TRACE
      THEN
        BEGIN  # QUEUE ENTRY ON END OF FREE QUEUE # 
            QUEUE(LOC(FREEQ));
        END 
  
      ELSE
        BEGIN  # SAVE TIME AND LINK TO FRONT OF FREE QUEUE #
        QU$NXTADR = FREEQ;
        FREEQ = P<QU$ADDRESS>;
        P<QU$ADDRESS> = O"400000";
        END 
      RETURN; 
      END  # FREE # 
  
      TERM
