*COMDECK RHCRPV 
          IDENT  RHCRPV 
          TITLE  RHCRPV - RHF COMMON REPRIEVE PROCESSOR.
          ENTRY  RHCRPV 
          COMMENT RHF COMMON REPRIEVE PROCESSOR.
          SYSCOM B1 
          SST 
          LIST   F
*CALL COMCMAC 
          SPACE  4,10 
***       RHCRPV - RHF COMMON REPRIEVE PROCESSOR. 
* 
*         RHCRPV IS A COMMON REPRIEVE PROCESSOR FOR VARIOUS COMPONENTS. 
*         IT IS DESIGNED TO BE CALLED FROM THE SYSTEM INTERFACE ROUTINE,
*         RECOVR.  COMPONENTS DESIRING REPRIEVE PROCESSING CALL 
*         RECOVR AS FOLLOWS:  
* 
*         RECOVR(RHCRPV, MASK, 0);          (*SYMPL* CALL)
* 
*         WHERE  RHCRPV IS DECLARED AS AN XREF PROC,
*                MASK IS A READ-ONLY INTEGER EXPRESSION CONTAINING
*                            THE REPRIEVE CLASS MASK TO BE SET, 
*                            USUALLY O"277" (ALL EXCEPT NORMAL).
* 
*         ENTRY  A1 = ADDR OF THREE-WORD PARAMETER LIST FROM RECOVR:  
*                            1. EXCHANGE PACKAGE AND RPV BLOCK, 
*                            2. DO-NOT-RESET-ERROR FLAG,
*                            3. POINTER TO RA+1.
* 
*         EXIT   DEPENDING ON ERROR CODE VALUE, MEMORY DUMPED 
*                            OR DO-NOT-RESET-ERROR FLAG SET.
* 
*         SAVE RECOVR EXCHANGE PACKAGE ADDRESS
*         SAVE *SYS=* ENTRY POINT 
*         SAVE *CPM=* ENTRY POINT (NOS) 
*         SAVE RA+2 
*         IF ERROR CODE INDICATES NON-FATAL ERROR:  
*           SET DO-NOT-RESET-ERROR FLAG FOR RECOVR
*         ELSE: 
*           SAVE POINTER TO RHCRPV IN RA+2
*           DUMP FIELD LENGTH 
*           RESTORE SYS=, RA+2, AND CPM=. 
*         RETURN. 
* 
*         THE FOLLOWING ERROR CODES CAUSE RHCRPV TO NOT DUMP MEMORY 
*         AND TO SET THE DO-NOT-RESET-ERROR FLAG SO THAT THE PROGRAM
*         DOES NOT ABORT: 
* 
*          7B (=  7D) OPERATOR KILL  (INCLUDES NOS SCP ABORT) 
*         10B (=  8D) OPERATOR RERUN (INCLUDES NBE SCP ABORT) 
*         17B (= 15D) MASS STORAGE/SERVICE LIMIT
*         21B (= 17D) I/O LIMIT 
* 
*               (THE DECIMAL VALUES ARE USED TO DEFINE A SET OF 
*                NON-FATAL ERROR CODES - SEE *RPVC* BELOW.) 
* 
*         ALL OTHERS ARE ASSUMED TO BE FATAL. 
  
  
 RPVA     VFD    42/7L**RPV**,18/RPVB  POINTER TO SAVE BLOCK
  
 RPVB     BSS    0                 DATA SAVE BLOCK
          CON    **                ADDRESS OF RECOVR EXCHANGE PACKAGE 
          CON    **                CURRENT CONTENTS OF *SYS=* ENTRY 
          CON    **                CURRENT CONTENTS OF RA+2 
          CON    **                (NOS) CURRENT CONTENTS OF *CPM=* 
*                                  (NBE) DMD STATUS WORD
  
 RPVC     CON    1S7+1S8+1S15+1S17 SET OF NON-FATAL ERROR CODES 
  
 RHCRPV   SUBR
          SB1    1
          SA5    A1+B1             (X5) = ADDRESS OF DO-NOT-RESET FLAG
          BX6    X1                (X6) = ADDRESS OF EXCHANGE PACKAGE 
          SA6    RPVB 
          SA2    =XSYS=            (X2) = *SYS=* ENTRY POINT
          BX6    X2 
          SA6    A6+B1
          SA2    B1+B1             (X2) = (RA+2)
          BX6    X2 
          SA6    A6+B1
  
 NOS      IFEQ   OS$NOS 
          SA2    =XCPM=            (X2) = *CPM=* ENTRY POINT
          BX6    X2 
          SA6    A6+B1
 NOS      ENDIF 
  
          SA3    X1                (X3) = EXCHANGE PACKAGE
          SB6    59 
          SB7    X3                (B7) = ERROR CODE
          SB6    B6-B7             (B6) = 59 - ERROR CODE 
          MI     B6,RPV1           IF ERROR CODE LARGER THAN 59 
          SA4    RPVC              (X4) = SET OF NON-FATAL ERROR CODES
          LX4    B6,X4             SHIFT ERROR CODE BIT TO BIT 59 
          PL     X4,RPV1           IF NOT NON-FATAL ERROR CODE
          MX6    -1 
          SA6    X5                SET DO-NOT-RESET-ERROR FLAG
          EQ     RHCRPV            RETURN 
  
 RPV1     SA4    RPVA              POINTER TO SAVE BLOCK
          BX6    X4 
          SA6    B1+B1             PLACE IN RA+2 TO SIMPLIFY ANALYSIS 
  
 NOS      IFEQ   OS$NOS 
          SETSSM 0                 DISABLE SECURE MEMORY
          SYSTEM DMB,R
          SYSTEM DMD,R,200000B,0
 NOS      ELSE
          SX6    200000B           LWA OF DUMP
          LX6    12 
          SA6    RPVB+3            SAVE DMD STATUS WORD 
          SYSTEM DMD,R,A6 
 NOS      ENDIF 
  
          SA4    RPVB+1 
          BX6    X4 
          SA4    A4+B1
          SA6    =XSYS=            RESTORE *SYS=* ENTRY POINT 
          BX6    X4 
          SA6    B1+B1             RESTORE RA+2 
  
 NOS      IFEQ   OS$NOS 
          SA4    A4+B1
          BX6    X4 
          SA6    =XCPM=            RESTORE *CPM=* ENTRY POINT 
 NOS      ENDIF 
  
          EQ     RHCRPV            RETURN 
  
          END 
