*
* $Id$
*
* $Log$
* Revision 1.1  1996/03/08 12:01:15  mclareni
* Initial revision
*
*
#if defined(CERNLIB_CDC)
          IDENT     ZJUMP
          TITLE     ZJUMP - CALL TO ZBOOK RECOVERY ROUTINE
          COMMENT           CALL TO ZBOOK RECOVERY ROUTINE
*****
*
*     CALLING SEQUENCE - CALL ZJUMP(ADR,P1,P2,.....,PN)
*
*     ROUTINE WILL PERFORM RETURN JUMP TO THE RECOVERY ROUTINE
*     WITH THE ENTRY POINT ADDRESS GIVEN IN THE 1-ST PARAMETER (ADR).
*     THE PARAMETERS  (P1,...,PN)  WILL BE TRANSMITED AS THE
*     PARAMETERS TO THE RECOVERY ROUTINE.
*
*     THE PARAMETER ADR MUST BE CALCULATED USING THE CALL
*     TO THE FUNCTION LOCF IN THE CALLING ROUTINE
*     (RECOVER MUST BE DECLARED EXTERNAL).
*
*        ADR = LOCF(RECOVER)
*
*     IN THE CALLING ROUTINE AND RECOVER MUST BE DECLARED EXTERNAL.
*
*     FTN4 CALLING CONVENTIONS
*
*     W.W.  20/05/81
*
*****
          ENTRY  ZJUMP
 TRACE    VFD    42/0HZJUMP,18/ZJUMP
 ZJUMP    EQ     *+1S17       .ENTRY/EXIT
*                             .ASSUMING FTN4 CONVENTIONS,
*                             .ADDRESS OF THE 1-ST PARAM. IN X1
          SA2    X1           .GET ADDRESS OF THE 1-ST PARAM.
          SA5    CALL         .LOAD RJ INSTRUCTION INTO THE X5
          SX0    X2           .GET BITS 0-17 OF THE 1-ST PARAM. INTO X0
          MX7    -18          .FORM MASK IN X7
          LX0    30           .SHIFT ADDRESS IN X0
          LX7    30           .SHIFT MASK IN X7
          BX4    X7*X5        .FORCE ZERO INTO ADDRESS PART OF RJ
          SB1    1            .B1=1
          BX6    X4+X0        .PUT THE ADDRESS FROM X0 INTO RJ
          SA1    A1+B1        .PREPARE ADDRESS OF PARAM. LIST
          SA6    CALL         .SAVE RJ INTO HIS PLACE
 +        RJ     TRICK        .THIS IS THE TRICKY CALL,
*                             .FOR CLEARING THE STACK.
 TRICK    BSSZ   1
 CALL     RJ     CALL         .THIS WILL DO THE JOB......
 -        VFD    12/0,18/TRACE
          EQ     ZJUMP        .THE JOB IS DONE, RETURN......
          END
#endif
