*DECK ACTIVE
USETEXT COMCBEG 
USETEXT COMRMEM 
USETEXT COMRNET 
USETEXT COMRAPL 
USETEXT COMRNDR 
USETEXT COMRLRA 
USETEXT COMRDSD 
USETEXT COMRQUE 
PROC ACTIVE;
# TITLE ACTIVE - RHF ACTIVE PROCESSOR. #
  
      BEGIN  # ACTIVE # 
  
# 
**    ACTIVE - RHF ACTIVE PROCESSOR.
* 
*     MAIN PROCESSING MANAGER FOR RHF DURING ITS ACTIVE STATE.
* 
*     PROC ACRIVE.
* 
*     ENTRY   -  P<QUEUE> = QUEUE ENTRY (FROM IDLE) TO BE FREED.
* 
*     EXIT    -  NO MORE ACTIVITY.
* 
*     PROCESS -  SET ACTIVITY TRUE
*                WHILE ACTIVITY IS TRUE:  
*                  INITIATE EVENT SCANNER 
*                  INITIATE OVERLAY SCANNER 
*                  PERFORM LONG RECALL
*                  IF NO QUEUE ENTRIES EXIST
*                  AND ((NOT IDLEDOWN) OR (NO ACTIVE APPLICATIONS)) 
*                  AND NO ACTIVE NDRS 
*                  AND NO UCP REQUEST 
*                  AND NO OPERATOR REQUEST
*                  THEN:  
*                    SET ACTIVITY FALSE.
*                RETURN 
* 
* 
****  PROC ACTIVE - XREF LIST BEGIN.
# 
  
      XREF
        BEGIN 
        PROC EVNTSCN;                # INITIATE EVENT SCANNER # 
        PROC FREE;                   # FREE QUEUE ENTRY # 
        ITEM NADTBL     I;           # ADDRESS OF LOCAL NAD TABLE # 
        ITEM NUMNADS    I;           # NUMBER OF LOCAL NADS # 
        PROC OVLYSCN;                # INITIATE OVERLAY SCANNER # 
        ITEM OVL2FLG    I;           # SECONDARY OVERLAY FLAG # 
        ITEM OVLSFWA    I;           # FWA OF SECONDARY OVERLAY # 
        ITEM OVLPFWA    I;           # FWA OF PRIMARY OVERLAY # 
        PROC WAIT;                   # WAIT FOR COMPLETION #
        ITEM WAITADR    I;           # ADDRESS OF PROC WAIT # 
        PROC CALLSYS;                # MAKE RA+1 CALLS #
        END 
  
# 
****  PROC ACTIVE - XREF LIST END.
# 
  
  
      ITEM ACTIVITY B;               # RHF ACTIVE FLAG #
      ITEM I     I;                  # LOOP VARIABLE #
  
      BASED ARRAY LDRTBL S(4);
        BEGIN 
        ITEM LDR$MINFL  I(01,42,18); # LWA + 1 OF OVERLAY # 
        END 
  
  
      ARRAY [0:0] S(1); 
        BEGIN 
        ITEM RCLCALL    U(00,00,60) = [0];
        ITEM RCLNAME    C(00,00,03) = ["RCL"];
        ITEM RCLTIME    U(00,48,12) = [0];
        END 
  
CONTROL EJECT;
  
      OVL2FLG = 1;                   # SET SECONDARY OVERLAY FLAG # 
      P<LDRTBL> = OVLPFWA;
      OVLSFWA = LDR$MINFL;
      WAITADR = LOC(WAIT);
      IF P<QU$ADDRESS> NE O"400000" 
      THEN
        BEGIN 
        FREE; 
        END 
  
      ACTIVITY = TRUE;
  
      ASLONGAS ACTIVITY 
      DO
        BEGIN 
        EVNTSCN;
        OVLYSCN;
        CALLSYS(RCLCALL); 
        RECALLS = RECALLS + 1;
  
        IF GOIDLE 
          AND ACTIVENDRS EQ 0 
          AND NOT RA$SSC$LK 
          AND DSD$CMDW[0] EQ 0
          AND ( (NOT IDLEDWN) OR (ACTIVAPPLS EQ 0) )
        THEN
          BEGIN 
          ACTIVITY = FALSE; 
          END 
  
      P<NAD$ENTRY> = NADTBL;
      FOR I = 1 STEP 1 WHILE I LE NUMNADS 
                         AND NOT ACTIVITY 
      DO
        BEGIN 
        IF NAD$Q EQ 0 
        THEN
          BEGIN 
          P<NAD$ENTRY> = P<NAD$ENTRY> + NAD$LENGTH; 
          END 
  
        ELSE
          BEGIN 
          ACTIVITY = TRUE;
          END 
  
        END 
  
        END 
  
      OVL2FLG = 0;                   # CLEAR SECONDARY OVERLAY FLAG # 
      RETURN; 
      END  # ACTIVE # 
  
      TERM
  
