*DECK WAITSWP 
USETEXT COMCBEG 
USETEXT COMRQUE 
PROC WAITSWP; 
# TITLE WAITSWP - PROCESS WAIT SWAP QUEUE ENTRIES. #
  
      BEGIN  # WAITSWP #
  
# 
**    WAITSWP - PROCESS ENTRIES ON WAIT SWAP QUEUE. 
* 
*     CHECK FOR AND PROCESS COMPLETED SWAPINS ON THE WAITSWP QUEUE. 
* 
*     PROC WAITSWP. 
* 
*     ENTRY   -  NONE 
* 
*     EXIT    -  COMPLETED SWAPIN REQUESTS ON WAIT SWAP QUEUE ARE 
*                  PROCESSED. 
* 
*     PROCESS -  FOR EACH ENTRY ON WAIT SWAP QUEUE: 
*                  DEQUEUE ENTRY
*                  IF SWAPIN REQUEST IS COMPLETE
*                  THEN:  
*                    DEPENDING ON WHICH CASE: 
*                      ASSOCIATED ENTRY IS SSF CALL:  
*                        INITIATE SSF CALL. 
*                      ASSOCIATED ENTRY IS INCOMING SUPERVISORY MSG:  
*                        QUEUE ENTRY ON SUPERVISORY MESSAGE QUEUE.
*                      ASSOCIATED ENTRY IS NETON REQUEST: 
*                        QUEUE ENTRY ON NETON QUEUE.
*                  ELSE:  
*                    SAVE ENTRY ON TEMPORARY QUEUE. 
*                MOVE TEMPORARY QUEUE TO WAIT SWAP QUEUE. 
*                RETURN.
* 
* 
****  PROC WAITSWP - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC DEQUEUE;                # REMOVE ENTRY FROM QUEUE #
        PROC FREE;                   # RELEASE QUE ENTRY #
        PROC QUEUE;                  # ADD ENTRY TO QUEUE # 
        PROC SSFCALL;                # INITIATE SSF CALL #
        END 
  
# 
****  PROC WAITSWP - XREF LIST END. 
# 
  
  
      ITEM AUXPTR I;                 # AUXILIARY QUEUE ENTRY POINTER #
      ITEM TEMPQ  I;                 # TEMPORARY QUEUE POINTER #
  
      SWITCH QUETYPE
             UCPMSGI,                # INCOMING SUPERVISORY MSG # 
             UCPSSFC,                # SSF CALL QUEUE ENTRY TYPE #
             ,
             ,
             ,
             ,
             ,
             ,
             ,
             ,
             ,
             UCPREQ,                 # UCP REQUEST #
             ;
  
CONTROL EJECT;
  
      TEMPQ = WAITSWAPQ;
      WAITSWAPQ = 0;
  
      ASLONGAS TEMPQ NE 0 
      DO
        BEGIN  # PROCESS EACH WAIT SWAP ENTRY # 
        DEQUEUE(LOC(TEMPQ));
  
        IF QU$SFCB1 
        THEN
          BEGIN  # SWAPIN REQUEST COMPLETE #
          AUXPTR = QU$AUXPTR; 
          FREE;                      # FREE SWAPIN QUEUE ENTRY #
          P<QU$ADDRESS> = AUXPTR; 
  
          IF AUXPTR NE 0
          THEN
            BEGIN  # THERE WAS AN ASSOCIATED QUEUE ENTRY #
  
# 
*     USE SIMULATED CASE STATEMENT TO PROCESS QUEUE TYPE. 
# 
  
            GOTO QUETYPE[QU$TYPE - QT$UCPMSGI]; 
  
UCPMSGI:                             # INCOMING SUPERVISORY MSG # 
            QUEUE(LOC(SUPERMSGQ));
            GOTO ENDCASE; 
  
UCPSSFC:                             # SSF CALL QUEUE TYPE #
            SSFCALL;
            GOTO ENDCASE; 
  
UCPREQ:                              # UCP REQUEST #
            QUEUE(LOC(NETONQ)); 
            GOTO ENDCASE; 
  
ENDCASE:  
  
# 
*     END OF SIMULATED CASE STATEMENT.
# 
  
            END 
  
          END 
  
        ELSE
          BEGIN  # SWAPIN REQUEST NOT COMPLETE #
          QUEUE(LOC(WAITSWAPQ));
          END 
  
        END 
  
      RETURN; 
      END  # WAITSWP #
  
      TERM
  
