*DECK OVLYSCN 
USETEXT COMCBEG 
USETEXT COMRMEM 
USETEXT COMRQUE 
PROC OVLYSCN; 
# TITLE OVLYSCN - SCAN OVERLAY WORK QUEUES FOR WORK TO BE DONE. # 
  
      BEGIN  # OVLYSCN #
  
# 
**    OVLYSCN - SCAN OVERLAY WORK QUEUES FOR WORK TO BE DONE. 
* 
*     SCAN OVERLAY WORK QUEUES AND EXECUTE ANY OVERLAYS FOR WHICH 
*     WORK IS QUEUED. 
* 
*     PROC OVLYSCN. 
* 
*     ENTRY   -  NONE 
* 
*     EXIT    -  ALL OVERLAY WORK QUEUES ARE EMPTY. 
* 
*     PROCESS -  SET WORK FOUND TRUE
*                SET GOIDLE FALSE 
*                WHILE WORK FOUND IS TRUE:  
*                  SET WORK FOUND FALSE 
*                  IF THERE IS ANY WORK ON THE UNKNOWN REQUEST QUEUE
*                  THEN:  
*                    SET WORKFOUND TRUE 
*                    INITIATE PROCESSING OF UNKNOWN REQUEST QUEUE.
*                  IF THERE IS ANY WORK ON THE NETON QUEUE
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF NETON QUEUE.
*                  IF THERE IS ANY WORK ON THE NETOFF QUEUE 
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF THE NETOFF QUEUE. 
*                  IF THERE IS ANY WORK ON THE NETWAIT QUEUE
*                  THEN:  
*                    SET WORK FOUND = TRUE
*                    INITIATE PROCESSING OF THE NETWAIT QUEUE.
*                  IF THERE IS ANY WORK ON THE ERROR LOGICAL QUEUE
*                  THEN:  
*                    SET WORK FOUND = TRUE
*                    INITIATE PROCESSING OF ERROR LOGICAL QUEUE.
*                  IF THERE IS ANY WORK ON THE STATUS EVENT QUEUE 
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF STATUS EVENT QUEUE. 
*                  IF THERE IS ANY WORK ON THE INCOMING CONTROL MSG Q 
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF THE INCOMING CONTROL MSG Q. 
*                  IF THERE IS ANY WORK ON THE ACCOUNTING OVERFLOW Q
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF THE ACCOUNTING OVERFLOW Q.
*                  IF THERE IS ANY WORK ON THE NADOFF QUEUE 
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF THE NAD OFF QUEUE.
*                  IF THERE IS ANY WORK ON THE INCOMING SUPERVISORY 
*                    MSG QUEUE
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF THE INCOMING SUPERVISORY
*                      MESSAGE QUEUE. 
*                  IF THERE IS ANY WORK ON THE CONNECTION AVAILABLE Q 
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF THE CONNECTION AVAILABLE Q. 
*                  IF THERE IS ANY WORK ON THE CONNECTION REQUEST 
*                    AWAITING ASSIGMENT QUEUE 
*                  THEN:  
*                    SET WORK FOUND TRUE
*                    INITIATE PROCESSING OF THE AWAITING ASSIGNMENT Q.
*                  IF WORK FOUND IS TURE
*                  OR 2 RECALLS HAVE BEEN PERFORMED 
*                  THEN:  
*                    SET GOIDLE FALSE 
*                    READ SYSTEM CLOCK
*                    RESET TIMER
*                    IF ONE SECOND OR MORE HAS EXPIRED SINCE LAST.
*                      CALL TO THE TIMED EVENT OVERLAY
*                    THEN:  
*                      SET WORK FOUND TRUE
*                      INITIATE PROCESSING OF TIMED EVENTS
*                      INITIATE CHECK FOR DSD COMMAND 
*                RETURN 
* 
* 
****  PROC OVLYSCN - XREF LIST BEGIN. 
# 
  
      XREF
        BEGIN 
        PROC CHCMD;                  # CHECK FOR DSD COMMAND #
        PROC OVLLDR;                 # LOAD AND EXECUTE OVERLAY # 
        PROC CALLSYS;                # INITIATE RA+1 CALL # 
        END 
  
# 
****  PROC OVLYSCM - XREF LIST END. 
# 
  
      DEF MASKLOWR36 #X"FFFFFFFFF"#; # MASK LOW ORDER 36 BITS # 
  
  
      ITEM WORKFOUND B;              # WORK FOUND FLAG #
  
  
      ARRAY [0:0] S(1); 
        BEGIN 
        ITEM TIMECALL   U(00,00,60) = [0];
        ITEM TIM        C(00,00,03) = ["TIM"];
      CONTROL IFEQ OS$NOSBE;
        ITEM CODE       U(00,24,12) = [4];
      CONTROL ENDIF;
      CONTROL IFEQ OS$NOS;
        ITEM CODE       U(00,24,12) = [5];
      CONTROL ENDIF;
        ITEM TIMADDR    U(00,42,18);
        END 
  
CONTROL EJECT;
  
      WORKFOUND = TRUE; 
      GOIDLE = FALSE; 
  
      ASLONGAS WORKFOUND
      DO
        BEGIN  # PERFORM OVERLAY EXECUTIONS # 
        WORKFOUND = FALSE;
  
        IF UNKNOWNREQ NE 0
        THEN
          BEGIN  # ENTRIES ON UNKNOWN REQUEST QUEUE # 
          WORKFOUND = TRUE; 
          OVLLDR("RHF0301");         # UNKNUCP #
          END 
  
        IF NETONQ NE 0
        THEN
          BEGIN  # ENTRIES ON NETON QUEUE # 
          WORKFOUND = TRUE; 
          OVLLDR("RHF0302");         # NETON #
          END 
  
      IF NETOFFQ NE 0 
        THEN
          BEGIN  # ENTRIES IN NETOFF QUEUE #
          WORKFOUND = TRUE; 
          OVLLDR("RHF0303");         # NETOFF # 
          END 
  
        IF NETWAITQ NE 0
        THEN
          BEGIN  # ENTRIES ON NETWAIT QUEUE # 
          WORKFOUND = TRUE; 
          OVLLDR("RHF0304");         # NETWAIT #
          END 
  
        IF ERRLGLQ NE 0 
        THEN
          BEGIN  # ENTRIES ON ERROR LOGICAL QUEUE # 
          WORKFOUND = TRUE; 
          OVLLDR("RHF0305");         # ERRLGL # 
          END 
  
        IF STATUSQ NE 0 
        THEN
          BEGIN  # ENTRIES ON STATUS EVENT QUEUE #
          OVLLDR("RHF0306");         # STATEVT #
          WORKFOUND = TRUE; 
          END 
  
        IF CTLMSGQ NE 0 
        THEN
          BEGIN  # ENTRIES ON INCOMING CONTROL MSG QUEUE #
          WORKFOUND = TRUE; 
          OVLLDR("RHF0307");         # CTRLMSG #
          END 
  
        IF OVERFLOWQ NE 0 
        THEN
        BEGIN  # ENTRIES ON ACCOUNTING OVERFLOW QUEUE # 
          WORKFOUND = TRUE; 
          OVLLDR("RHF0310");         # OVERFLO #
          END 
  
        IF NADOFFQ NE 0 
        THEN
          BEGIN  # ENTRIES ON NAD OFF QUEUE # 
          WORKFOUND = TRUE; 
          OVLLDR("RHF0311");         # NADOFF # 
          END 
  
      IF SUPERMSGQ NE 0 
        THEN
          BEGIN  # ENTRIES ON INCOMING SUPERVISORY MSG QUEUE #
          WORKFOUND = TRUE; 
          OVLLDR("RHF0312");         # SUPRMSG #
          END 
  
        IF CONAVAILQ NE 0 
        THEN
          BEGIN  # CONNECTION REQUESTS AVAILABLE FROM REMOTE MF # 
          WORKFOUND = TRUE; 
          OVLLDR("RHF0313");         # REMCONR #
          END 
  
        IF WAITASIGNQ NE 0
        THEN
          BEGIN  # REMOTE CONNECTION REQUESTS AWAIT ASSIGNMENT #
          WORKFOUND = TRUE; 
          OVLLDR("RHF0314");         # ASSIGN # 
          END 
  
      IF WORKFOUND
          OR RECALLS GE 2 
        THEN
          BEGIN  # CHECK TIME # 
          RECALLS = 0;
          GOIDLE = FALSE; 
          TIMADDR = LOC(TIMER); 
          CALLSYS(TIMECALL);
          TIMER = TIMER LAN  MASKLOWR36;
        CONTROL IFEQ OS$NOS;
          TIMER = TIMER * 4;
        CONTROL ENDIF;
  
          IF (TIMER - FASTIME) / 2**12  GE 1
          THEN
            BEGIN  # TIME TO CALL TIMED EVENTS OVERLAY #
            WORKFOUND = TRUE; 
            CHCMD;
            OVLLDR("RHF0315");       # TIMEVNT #
            RECALLS = 0;
            END 
  
          END 
  
        END 
  
      RETURN; 
      END  # OVLYSCN #
  
      TERM
  
