*COMDECK  CCOMRPV                  COMPILE TIME REPRIEVE PROCESSOR.     000140
          CTEXT  CCOMRPV - COMPILE TIME REPRIEVE PROCESSOR.             000150
 RPV=     SPACE  4,10                                                   000160
          IF     -DEF,QUAL$,1                                           000170
          QUAL   CCOMRPV                                                000180
 RPV=     SPACE  4,10                                                   000190
**        RPV= - REPRIEVE PROCESSOR.                                    000200
*                                                                       000210
*         IF THE PROGRAM IS INTERRUPTED BY THE SYSTEM, *RPV=* GAINS     000220
*         CONTROL TO ISSUE DAYFILE MESSAGES THAT IDENTIFY THE PROGRAM   000230
*         UNIT BEING COMPILED AND WHERE THE ERROR OCCURED.  A USER      000240
*         ROUTINE IS CALLED FOR POST PROCESSING AND ALL FILES IN AN     000250
*         OUTPUT MODE ARE FLUSHED.  FINALLY, THE ORIGINAL ERROR         000260
*         CONDITION IS RESTORED TO PERMIT NORMAL *EXIT*                 000270
*         CONDITION PROCESSING.                                         000280
*                                                                       000290
*         ENTRY  (RPV=CLN) = CURRENT LINE NUMBER IN BINARY              000300
*                            IF DEF, LINE NUMBER MESSAGE ISSUED         000310
*                (RPV=FVT) = FIRST ENTRY OF A FILE VECTOR --            000320
*                            42/0LLFN, 18/FET ADDRESS                   000330
*                            TERMINATED BY A -1 WORD                    000340
*                            IF DEF, OUTPUT FILES ARE FLUSHED           000350
*                (RPV=LOL) = LAST OVERLAY LOADED                        000360
*                            6/PRIMARY,6/SECONDARY,48/UNUSED            000370
*                            IF DEF, OVERLAY LOADED MESSAGE ISSUED      000380
*                (RPV=MSG) = IF DEF AND .NE. 0, FIRST WORD OF DAYFILE   000390
*                             MESSAGE (=C FORMAT) TO BE ISSUED BY RPV=. 000400
*                (RPV=RNA) = FIRST WORD OF A ROUTINE NAME/ADDRESS TABLE 000410
*                            BLOCKS OF THE FORM --                      000420
*                            42/0LNAME, 18/FWA                          000430
*                            ENDED BY -                                 000440
*                            1/1,41/UNUSED,18/NEXT BLOCK FWA OR ZERO IF 000450
*                              LAST BLOCK.                              000460
*                            IF -DEF, ABS ADDRESS IS USED.              000470
*                (RPV=URP) = ADDRESS OF USER REPRIEVE PROCESSING,       000480
*                            42/0,18/ADDRESS TO RJ TO                   000490
*                                                                       000500
*                CP#RM = 0 FOR DIRECT CIO, 7 FOR SCOPE 2 RECORD MANGLER 000510
*                .OS = 1 FOR NOS, 2 FOR SCOPE 2, 3 FOR NOS/BE           000520
*                                                                       000530
*         EXIT   MESSAGES POSTED AND BUFFERS FLUSHED.  REINSTATES THE   000540
*                ERROR CONDITION AND RETURNS CONTROL TO THE OPERATING   000550
*                SYSTEM.                                                000560
*                                                                       000570
*         CALLS  CDD, CIO=, COD, FRA=, MSG=, SYS=, WNB=                 000580
                                                                        000590
                                                                        000600
 RPV=     BSS    0           SYSTEM ENTRY AT THIS ADDRESS + 21B         000610
 #OS      IFNE   .OS,2       IF NOT SCOPE 2                             000620
 XJP      VFD    12/0,18/LWARPV,30/0                                    000630
 #OS      ELSE                                                          000640
 XJP      VFD    12/0,18/LWARPV,6/0,24/77770014B                        000650
 #OS      ENDIF                                                         000660
                                                                        000670
          BSSZ   16          EXCHANGE PACKAGE AND RA+1                  000680
 RPV=     SPACE  4,10                                                   000690
**        RPV - REPRIEVE PROCESSOR SYSTEM ENTRY POINT.                  000700
*                                                                       000710
*         ENTRY  (XJP TO XJP+15) = EXCHANGE PACKAGE AT TIME OF ERROR    000720
*                (XJP+16) = CONTENTS OF RA+1 AT THE TIME OF THE ERROR   000730
                                                                        000740
 RPV      SB1    1           SYSTEM RPV ENTRY                           000750
                                                                        000760
*         SAVE CONTENTS OF ENTRY POINTS THAT *RPV=* WILL USE.           000770
                                                                        000780
          SA1    =XCDD                                                  000790
          SA2    =XCOD                                                  000800
          BX6    X1                                                     000810
          LX7    X2                                                     000820
          SA6    RPVE                                                   000830
          SA7    A6+1                                                   000840
                                                                        000850
 #OS      IFNE   .OS,2       IF NOT SCOPE 2                             000860
          SA1    =XSYS=                                                 000870
          SA2    =XWNB=                                                 000880
          SA3    =XMSG=                                                 000890
          BX6    X1                                                     000900
          LX7    X2                                                     000910
          SA6    A7+B1                                                  000920
          SA7    A6+B1                                                  000930
          BX6    X3                                                     000940
          SA6    A7+B1                                                  000950
                                                                        000960
 #RM      IFEQ   CP#RM,0     IF DIRECT CIO I/O                          000970
          SA1    =XCIO=                                                 000980
          BX6    X1                                                     000990
          SA6    A6+B1                                                  001000
 #RM      ENDIF                                                         001010
 #OS      ENDIF                                                         001020
                                                                        001030
                                                                        001040
*         EXTRACT ERROR ADDRESS.                                        001050
                                                                        001060
          SA5    XJP                                                    001070
          MX0    -17                                                    001080
          LX5    24                                                     001090
          BX1    -X0*X5      EXTRACT P REGISTER                         001100
          SB2    X1                                                     001110
          GT     B2,B1,RPV2  IF P-REGISTER NOT CLEARED                  001120
          SA5    0+                                                     001130
          LX5    59-47+18                                               001140
          BX1    -X0*X5      EXTRACT P FROM RA+0                        001150
 RPV2     BSS    0                                                      001160
                                                                        001170
                                                                        001180
*         DETERMINE ROUTINE RELATIVE ADDRESS, IF *RNA* TABLE EXISTS.    001190
                                                                        001200
 #RPV=    IF DEF,RPV=RNA                                                001210
          SB7    RPV3        (B7) = RETURN ADDRESS                      001220
          EQ     FRA=        FIND RELATIVE ADDRESS                      001230
                                                                        001240
 RPV3     NZ     X7,RPV3A    IF RELATIVE                                001250
          MX0    42                                                     001260
          BX6    X0*X4                                                  001270
 RPV3A    SA6    RPVC+1                                                 001280
          SA7    A6+1                                                   001290
                                                                        001300
*         CONVERT ABS ADDRESS IF NO *RNA* TABLE.                        001310
                                                                        001320
 #RPV=    ELSE                                                          001330
          RJ     =XCOD       CONVERT OCTAL DIGITS                       001340
          MX0    42                                                     001350
          BX6    X0*X4       ADD ZERO BYTE TERMINATOR                   001360
          SA6    RPVC+1                                                 001370
 #RPV=    ENDIF                                                         001380
                                                                        001390
*         DETERMINE LAST OVERLAY LOADED.                                001400
                                                                        001410
 #RPV=    IF     DEF,RPV=LOL                                            001420
          SA1    RPV=LOL     (X1) = LAST OVERLAY 6/PRI,6/SEC,48/UNUSED  001430
          MX0    -6                                                     001440
          LX1    6                                                      001450
          BX6    -X0*X1      PRIMARY LEVEL                              001460
          LX1    6                                                      001470
          BX7    -X0*X1      SECONDARY LEVEL                            001480
          LX6    12                                                     001490
          SB2    X7          (B2) = SECONDARY OVERLAY LEVEL NUMBER      001500
          BX7    X6+X7                                                  001510
          SA2    RPVD+2      * - (0,0)  *                               001520
          LX7    18                                                     001530
          IX6    X2+X7                                                  001540
          SA6    A2+                                                    001550
 #RPV=    ENDIF                                                         001560
                                                                        001570
*         DETERMINE LAST SOURCE STATEMENT PROCESSED.                    001580
                                                                        001590
 #RPV=    IF     DEF,RPV=CLN                                            001600
          SA1    RPV=CLN     CURRENT LINE NUMBER                        001610
          BX2    X1                                                     001620
          AX2    59                                                     001630
          BX1    -X2*X1      INSURE POSITIVE NUMBER                     001640
          RJ     =XCDD       CONVERT DECIMAL DIGITS                     001650
          MX0    48                                                     001660
          BX6    X0*X4       CREATE 12-BIT ZERO BYTE MSG TERMINATOR     001670
          SA6    RPVB+3      LINE NUMBER TO MESSAGE TEXT                001680
 #RPV=    ENDIF                                                         001690
                                                                        001700
*         ISSUE THE DAYFILE MESSAGES.                                   001710
                                                                        001720
          IF     DEF,RPV=MSG,1                                          001730
          MESSAGE  RPV=MSG,,RCL    *COMPILING NAME*                     001740
                                                                        001750
          IF     DEF,RPV=CLN,1                                          001760
          MESSAGE   RPVB,,RCL      * LAST STATEMENT BEGAN AT LINE NNNN* 001770
                                                                        001780
          MESSAGE   RPVC,,RCL      * ERROR AT XXXXXX IN YYYYYYY*        001790
                                                                        001800
          IF     DEF,RPV=LOL,1                                          001810
          MESSAGE   RPVD,,RCL      * LAST OVERLAY LOADED - (P,S)*       001820
                                                                        001830
*         CALL USER REPRIEVE PROCESSOR.                                 001840
                                                                        001850
 #RPV=    IF     DEF,RPV=URP                                            001860
          SA1    RPV=URP     USER REPRIEVE PROCESSOR                    001870
          ZR     X1,RPV4     IF NO USER ROUTINE SPECIFIED               001880
                                                                        001890
          MX0    43                                                     001900
          BX3    X0*X1                                                  001910
          NZ     X3,RPV4     IF BAD ADDRESS                             001920
                                                                        001930
          SX2    RPV4                                                   001940
          SB7    X1                                                     001950
          LX2    32                                                     001960
          MI     B7,RPV4     IF BAD ADDRESS                             001970
                                                                        001980
          PX6    X2                                                     001990
          LX6    -2          (X6) = *EQ RPV4*                           002000
          SA6    B7          STORE FOR USER PROCESSOR RETURN            002010
          JP     B7+1        CALL USER PROCESSOR...                     002020
 RPV4     BSS    0           ...RETURN FROM USER PROCESSOR              002030
 #RPV=    ENDIF                                                         002040
                                                                        002050
*         FLUSH FILE I/O BUFFERS (DIRECT CIO I/O ONLY).                 002060
                                                                        002070
 #RPV=    IF     DEF,RPV=FVT IF FILE VECTOR TABLE EXISTS                002080
 #RM      IFEQ   CP#RM,0     IF DIRECT CIO I/O                          002090
          SA0    RPV=FVT                                                002100
          SB7    +                                                      002110
 RPV5     SA2    A0+B7       (X2) = NEXT FILE FET ADDRESS               002120
          SB6    X2+B1                                                  002130
          ZR     B6,RPV7     IF END OF TABLE                            002140
          ZR     X2,RPV6     IF FILE DESELECTED BY CONTROL CARD OPTION  002150
          SA1    X2          (X1) = FET WORD 1                          002160
          MX0    -6                                                     002170
          SX6    B1                                                     002180
          BX7    X1+X6                                                  002190
          SA3    RPVA        (X3) = SHIFT TEST MASK FOR CIO CODE        002200
          AX1    2                                                      002210
          BX0    -X0*X1      EXTRACT CIO CODE                           002220
          SB2    X0                                                     002230
          LX3    B2                                                     002240
          PL     X3,RPV6     IF LAST CIO OP NOT OPEN OR WRITE           002250
          SA7    A1          INSURE CIO COMPLETE BIT IS ON              002260
          WRITER A1,,RCL     FLUSH BUFFER                               002270
 RPV6     SB7    B7+1                                                   002280
          EQ     RPV5        CHECK NEXT ENTRY                           002290
 RPV7     BSS    0                                                      002300
 #RM      ENDIF                                                         002310
 #RPV=    ENDIF                                                         002320
                                                                        002330
*         RESTORE SAVED ENTRY POINT CONTENTS.                           002340
                                                                        002350
          SA1    RPVE                                                   002360
          SA2    A1+1                                                   002370
          BX6    X1                                                     002380
          LX7    X2                                                     002390
          SA6    =XCDD                                                  002400
          SA7    =XCOD                                                  002410
                                                                        002420
 #OS      IFNE   .OS,2       IF NOT SCOPE 2                             002430
          SA1    A2+B1       SYS=                                       002440
          SA2    A1+B1       WNB=                                       002450
          BX6    X1                                                     002460
          LX7    X2                                                     002470
          SA1    A2+1        MSG=                                       002480
          SA6    =XSYS=                                                 002490
          SA7    =XWNB=                                                 002500
          BX7    X1                                                     002510
          SA7    =XMSG=                                                 002520
                                                                        002530
 #RM      IFEQ   CP#RM,0     IF DIRECT CIO I/O                          002540
          SA1    A1+B1                                                  002620
          BX6    X1                                                     002560
          SA6    =XCIO=                                                 002570
 #RM      ENDIF                                                         002580
 #OS      ENDIF                                                         002590
                                                                        002600
*         REINSTATE THE ERROR CONDITON.                                 002610
                                                                        002620
 #OS      IFNE   .OS,2       IF NOT SCOPE 2                             002630
          SA1    RPVF        RPV RESET WORD                             002640
          BX6    X1                                                     002650
 +        SA1    RA.MTR                                                 002660
          NZ     X1,*        WAIT FOR ALL CLEAR                         002670
          SA6    A1          REQUEST RPV RESET                          002680
 +        EQ     *           WAIT FOR OP SYS TO PICK UP ERROR           002690
                                                                        002700
 #OS      ELSE                                                          002710
          SA1    XJP         EXCHANGE JUMP PACKAGE                      002720
          RJ     =XDXP=      DUMP EXCHANGE PACKAGE                      002730
          ABORT              *** TEMPORARY UNTIL SCOPE 2.0 REPRIEVE     002740
*                            *** RESET METHOD IS AVAILABLE.             002750
 #OS      ENDIF                                                         002760
                                                                        002770
 #OS      IFNE   .OS,2       IF NOT SCOPE 2                             002780
 RPVA     BSS    0                                                      002790
          ECHO   2,CIOCODE=(4B,14B,104B,120B,144B,160B)                 002800
          POS    60-CIOCODE_S-2                                         002810
          VFD    1/1                                                    002820
          POS    0                                                      002830
          BSS    0                                                      002840
 #OS      ENDIF                                                         002850
                                                                        002860
          IF     DEF,RPV=CLN,1                                          002870
 RPVB     DIS    ,* LAST STATEMENT BEGAN AT LINE ........*              002880
                                                                        002890
 RPVC     DIS    ,* ERROR AT 000000 IN XXXXXXX*                         002900
                                                                        002910
          IF     DEF,RPV=LOL,1                                          002920
 RPVD     DIS    ,* LAST OVERLAY LOADED - (0,0)*                        002930
                                                                        002940
 RPVE     BSSZ   2           TO SAVE (CDD) AND (COD)                    002950
                                                                        002960
 #OS      IFNE   .OS,2       IF NOT SCOPE 2                             002970
          BSSZ   3           TO SAVE (SYS=), (WNB=) AND (MSG=)          002980
                                                                        002990
 #RM      IFEQ   CP#RM,0     IF DIRECT CIO I/O                          003000
          BSSZ   1           TO SAVE (CIO=)                             003010
 #RM      ENDIF                                                         003020
 RPVF     VFD    18/3RRPV,6/0,1/1,35/0    RPV RESET REQUEST WORD        003030
 #OS      ENDIF                                                         003040
 FRA      SPACE  4,8                                                    003050
**        FRA - FIND RELATIVE ADDRESS.                                  003060
*                                                                       003070
*                GIVEN AN ABSOLUTE ADDRESS, *FRA=* FINDS THE ROUTINE    003080
*         NAME AND ABSOLUTE ADDRESS BY SEARCHING THE TABLES INSTALLED   003090
*         ORIGINALLY FOR *RPV=* PROCESSING.                             003100
*                                                                       003110
*                *FRA* DOES NOT USE A RETURN JUMP CALLING SEQUENCE      003120
*         BECAUSE IT IS LOCATED IN CODE SPACE CHECKSUMMED BY *RPV=*.    003130
*                                                                       003140
*                                                                       003150
*         ENTRY  (X1) = ADDRESS RELATIVE TO RA+0                        003160
*                (B7) = EXIT ADDRESS                                    003170
*                                                                       003180
*         EXIT   TO (B7), WITH ...                                      003190
*                (A1,X1) = ADDRESS,CONTENTS OF RPV=RNA ENTRY            003200
*                (X4) = ABSOLUTE ADDRESS, H FORMAT                      003210
*                (X6) = ABSOLUTE ADDRESS, DPC, *NNNNNN IN *             003220
*                (X7) = ROUTINE NAME, DPC, L FORMAT                     003230
*                                                                       003240
*         USES   X - 1, 2, 3, 4, 6, 7                                   003250
*                A - 2, 4                                               003260
*                B - 2, 3, 4, 5                                         003270
*                                                                       003280
*         CANNOT DESTROY  B1  X0,5  A0,5,6,7                            003290
*                                                                       003300
*         CALLS  COD                                                    003310
                                                                        003320
                                                                        003330
 #RPV=    IF     DEF,RPV=RNA IF ROUTINE NAME ADDRESS TABLE EXISTS       003340
 FRA=     BSS    0           ...ENTRY                                   003350
          SA2    RPV=RNA     (X2) = FWA OF 1ST RNA TABLE                003360
          SB2    X1          (B2) = ADDRESS RELATIVE TO RA+0            003370
          SA2    X2          (A2,X2) = A+C OF 1ST ENTRY IN RNA TABLE    003380
          SB3    X2                                                     003390
          SB4    B0                                                     003400
          SB5    A2+                                                    003410
                                                                        003420
*         SEARCH ROUTINE NAME ADDRESS TABLE.                            003430
                                                                        003440
 FRA2     BSS                                                           003450
          ZR     X2,FRA3     IF END OF BLOCK                            003460
          SB3    X2                                                     003470
          SA2    A2+B1       (X2) = NEXT TABLE ENTRY                    003480
          GT     B3,B2,FRA2  IF CURRENT ENTRY BEYOND ABS ADDR           003490
          GE     B4,B3,FRA2  IF CURRENT NOT CLOSER                      003500
          SB5    A2-B1       CLOSEST SO FAR                             003510
          SB4    B3                                                     003520
          EQ     FRA2        KEEP LOOKING                               003530
                                                                        003540
*         CHECK FOR TABLE CONTINUATION LINK.                            003550
                                                                        003560
 FRA3     BSS                                                           003570
          SA2    A2+B1       END OF TABLE/TABLE LINK WORD               003580
          ZR     X2,FRA4     IF END OF TABLE                            003590
          SA2    X2          (A2,X2) = A+C OF 1ST WORD IN NEXT BLOCK    003600
          EQ     FRA2        CONTINUE TABLE SEARCH...                   003610
                                                                        003620
*         EXTRACT ROUTINE NAME AND FORMAT ABSOLUTE ADDRESS.             003630
                                                                        003640
 FRA4     BSS                                                           003650
          SX1    B2-B4       (X1) = BIN ADDR, RELATIVE TO CLOSEST FIND  003660
          RJ     =XCOD       CONVERT TO OCTAL DISPLAY CODE              003670
          SA1    B5          (X1) = 42/0LNAME,18/ADDRESS                003680
          MX7    42                                                     003690
          SX3    2R  &2RIN                                              003700
          BX7    X7*X1       (X7) = ROUTINE NAME, 0L FORMAT             003710
          LX3    6                                                      003720
          BX6    X4-X3       (X6) = RELATIVE ADDRESS, *NNNNNN IN *      003730
          JP     B7          EXIT ...                                   003740
 #RPV=    ENDIF                                                         003750
 RPV      SPACE  4,8                                                    003760
 RPV=     SPACE  4,10                                                   003770
          BSS    0                                                      003780
 LWARPV   =      *-1         *** END OF CHECKSUMMED REPRIEVE CODE ***   003790
 RPV=     SPACE  4,10                                                   003800
 QUAL$    IF     -DEF,QUAL$                                             003810
          QUAL   *                                                      003820
 RPV=     EQU    /CCOMRPV/RPV=                                          003830
 FRA=     EQU    /CCOMRPV/FRA=                                          003840
 QUAL$    ENDIF                                                         003850
 CCOMRPV  ENDX                                                          003860
