ASMB,R,L,C
* 
*  **************************************************************** 
*  * (C) COPYRIGHT HEWLETT-PACKARD COMPANY 1979.  ALL RIGHTS      * 
*  * RESERVED.  NO PART OF THIS PROGRAM MAY BE PHOTOCOPIED,       * 
*  * REPRODUCED OR TRANSLATED TO ANOTHER PROGRAM LANGUAGE WITHOUT * 
*  * THE PRIOR WRITTEN CONSENT OF HEWLETT-PACKARD COMPANY.        * 
*  **************************************************************** 
* 
*   NAME: PART OF MATH LIBRARY
*   SOURCE:  24998-18XXX  SEE NAM FOR LAST THREE DIGITS 
*   RELOC: PART OF 24998-12001
*   PGMR: BG & JTS
* 
      HED ".RCNG" FTN2 TO FTN4 LIBRARY 2DN LEVEL INTERFACE
      NAM .RCNG,7 24998-1X127 REV.2001 780921 
* 
      ENT .RCNG 
B     EQU 1 
* 
*   THIS ROUTINE WILL PATCH CALLS TO VARIOUS FTN4 LIBRARY ROUTINES USING
*   THE ".ENTR" CONVENTION TO THE ".ENTC" CONVENTION.  ENTRY POINTS 
*   CURRENTLY IMPLEMENTED ARE XADD,XSUB,XMPY,XDIV,CADD,CSUB,CMPY,CDIV.
*   THESE ARE THE NON-INTRINSIC ENTRY POINTS TO THE SAME  ROUTINE WITH
*   THE SAME NAME WITH A "." IN FRONT.
*                CAUTION!!!!
*   THIS ROUTINE WILL CHANGE THE IN-LINE CODE OF CALLS TO THESE 
*   ROUTINES, THEREFORE THE "JSB'S" TO THESE ROUTINES  SHOULD NOT BE
*   USED AS DATA.  THIS IS ONLY POSSIBLE IN  ASSEMBLY LANGUAGE, 
*   THEREFORE THE ACTUAL INTRINSIC ROUTINES SHOULD BE USED
* 
*      BEFORE CALL:        AFTER CALL:      HOW THIS ROUTINE IS USED
* 
*      JSB XADD             NOP            XADD  NOP
*      DEF *+4              JSB .XADD            JSB .RCNG
*      DEF Z                DEF Z                DEF @XADD+0
*      DEF X                DEF X                ORB
*      DEF Y                DEF Y          @XADD DEF .XADD+0
*     <RETURN>             <RETURN>              ORR
      SPC 2 
.RCNG NOP           ENTRY SAVE ALL REGISTERSERS 
      STB SAVB
      LDB .RCNG     GET P+1 OF CALLER 
      CMB,INB       SUBTRACT 2 TO GET HIS 
      INB           CALLERS ADDRESS 
      CMB           P+1 
      LDB B,I       ADDRESS OF IE. XADD 
      CMB,INB       SUBTRACT ONE TO GET P+0 
      CMB           OF HIS CALLER 
      STB RETRN     SAVE JSB XADD ADDRESS 
      CLB           NOW STORE BACK A "NOP"
      STB RETRN,I   IN PLACE OF JSB XADD
      ISZ RETRN     NOW STORE A JSB .XADD 
      LDB .RCNG,I   IN PLACE OF THE   "DEF *+N+1" 
      LDB B,I       PTR TO ROUTINE OR ITS OPCODE. 
      SSB,RSS       PTR ? 
      LDB .RCNG,I   YES, CONSTRUCT JSB THRU BASE PAGE.
      SSB,RSS 
      ADB JSBI0 
      STB RETRN,I 
      LDB SAVB      RESTORE ALL REGISTERS 
      JMP RETRN,I   NOW GO EXECUTE
      SPC 1 
RETRN NOP 
SAVB  NOP 
JSBI0 JSB 0,I 
      END 
                                                                                                                            