*COMDECK  COMCXJR            RESTORE REGISTERS VIA *XJR* MONITOR CALL.   COMCXJR
 XJR      CTEXT  COMCXJR - RESTORE REGISTERS.                            COMCXJR
 XJR      SPACE  4,10                                                    COMCXJR
          IF     -DEF,QUAL$,1                                            COMCXJR
          QUAL   COMCXJR                                                 COMCXJR
          BASE   D                                                       COMCXJR
*         COMMENT COPYRIGHT CONTROL DATA CORPORATION. 1978.              COMCXJR
 XJR      SPACE  4,10                                                    COMCXJR
***       XJR - RESTORE ALL REGISTERS WITH A SYSTEM *XJR* CALL.          COMCXJR
*                                                                        COMCXJR
*         P. C. TAM.         77/07/07.                                   COMCXJR
* 
*         ******************************************************* 
*         * THIS COMMON DECK IS PART OF THE COMMON COMMON DECKS * 
*         * RESIDING ON THE COMPASS PROGRAM LIBRARY, AND BEING  * 
*         * MAINTAINED BY THE COMPASS PROJECT.  ANY CHANGES     * 
*         * REQUIRED SHOULD BE DIRECTED TO THE COMPASS PROJECT  * 
*         * THROUGH THE PROPER PROCEDURE.                       * 
*         ******************************************************* 
* 
*                                                                        COMCXJR
*         XJR RESTORES ALL REGISTERS FROM A REGISTER SAVE AREA.          COMCXJR
 XJR      SPACE  4,10                                                    COMCXJR
***       XJR RESTORES ALL REGISTERS FROM A REGISTER SAVE AREA.          COMCXJR
*         THE REGISTERS ARE SAVED IN THE FOLLOWING ORDER -               COMCXJR
*         B0, B1, ..., B7, A0, A1, ..., A7, X0, X1, ..., X7.             COMCXJR
*         EACH REGISTER OCCUPIES A FULL WORD, WITH B AND A REGISTER      COMCXJR
*         VALUES IN BITS 17-0.                                           COMCXJR
*                                                                        COMCXJR
*         ENTRY  (X1) = ADDRESS OF THE REGISTER SAVE AREA.               COMCXJR
*                                                                        COMCXJR
*         EXIT   ALL REGISTERS SET TO THE CONTENTS OF THE REGISTER       COMCXJR
*                SAVE AREA.                                              COMCXJR
*                                                                        COMCXJR
*         USES   X - 0, 1, 2, 3, 4, 5, 6, 7.                             COMCXJR
*                B - 0, 1, 2, 3, 4, 5, 6, 7.                             COMCXJR
*                A - 0, 1, 2, 3, 4, 5, 6, 7.                             COMCXJR
*                                                                        COMCXJR
*         CALLS  NONE.                                                   COMCXJR
 XJR      SPACE  4,10                                                    COMCXJR
 SAVEB    EQU    0                                                       COMCXJR
 SAVEA    EQU    8                                                       COMCXJR
 SAVEX    EQU    16                                                      COMCXJR
                                                                         COMCXJR
 XJR      SUBR               ENTRY/EXIT                                  COMCXJR
          IF     -DEF,B1=1,1                                             COMCXJR
          SB1    1                                                       COMCXJR
          MX0    -18         (X0) = 77777777777777000000B                COMCXJR
          SB2    7           (B2) = NUMBER OF HIGHEST REGISTER           COMCXJR
                                                                         COMCXJR
*         COPY REGISTERS FROM THE SAVED FORMAT TO THE EXCHANGE           COMCXJR
*         PACKAGE FORMAT.                                                COMCXJR
                                                                         COMCXJR
 XJR1     SB4    B2+X1                                                   COMCXJR
          SA2    SAVEA+B4    (X2) - A.(B2)                               COMCXJR
          SA3    B4          (X3) - B.(B2)                               COMCXJR
          BX2    -X0*X2      CLEAR UPPER BITS                            COMCXJR
          SA4    SAVEX+B4    (X4) - X.(B2)                               COMCXJR
          BX3    -X0*X3      CLEAR UPPER BITS                            COMCXJR
          LX2    18D         (X2) = POSITIONED A.(B2)                    COMCXJR
          BX6    X2+X3       (X6) = A.(B2) AND B.(B2) PACKED             COMCXJR
          LX7    X4                                                      COMCXJR
          SA6    XJRA+B2     STORE FORMATTED WORD IN EXCHANGE PACKAGE    COMCXJR
          SA7    XJRA+8+B2                                               COMCXJR
          SB2    B2-B1       BACK UP ONE REGISTER                        COMCXJR
          PL     B2,XJR1     IF ANOTHER B/A/X REGISTER TO MOVE           COMCXJR
                                                                         COMCXJR
*         INSERT P AND RESTORE ALL REGISTERS.                            COMCXJR
                                                                         COMCXJR
          SX5    XJRX        (X5) = P REGISTER FOR RETURN TO CALLER      COMCXJR
          LX5    2*18D       (X5) = POSITIONED P-REGISTER                COMCXJR
          BX6    X6+X5       (X6) = P, A0, B0                            COMCXJR
          SA6    A6          REPLACE OLD RSRA+0 WORD                     COMCXJR
          SYSTEM XJR,R,XJRA                                              COMCXJR
 XJR      SPACE  4,10                                                    COMCXJR
 XJRA     BSS    2*8         EXCHANGE PACKAGE FOR XJR REQUEST            COMCXJR
 XJR      SPACE  4,10                                                    COMCXJR
          BASE   *                                                       COMCXJR
 QUAL$    IF     -DEF,QUAL$                                              COMCXJR
          QUAL   *                                                       COMCXJR
 XJR      EQU    /COMCXJR/XJR                                            COMCXJR
 XJR=     EQU    /COMCXJR/XJR 
 QUAL$    ENDIF                                                          COMCXJR
 XJR      ENDX                                                           COMCXJR
