ASMB,L,R,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 ".MOD" - TRIPLE PRECISION REMAINDERING. 
      NAM .MOD,7 24998-1X058 REV.2001 781016
* 
      ENT .MOD
      EXT .CFER,.TSUB,.TMPY,.TDIV,.YINT,.ENTR,.4ZRO 
* 
*     .MOD TAKES THE TRIPLE-PRECISION REMAINDER FROM THE DIVISION 
*     OF TWO TRIPLE-PRECISION ARGUMENTS, I.E. 
*                   .MOD(X,Y) = X - [X/Y]*Y 
*     WHERE [Z] DENOTES TRUNCATION, AS IN .YINT . 
* 
*     CALLING SEQUENCE: 
* 
*                   JSB .MOD
*                   DEF *+4 
*                   DEF <RESULT>
*                   DEF <DIVIDEND>
*                   DEF <DIVISOR> 
*                   <RETURN>
* 
*     METHOD:  AS ABOVE, UNLESS X/Y OVERFLOWS OR Y=0, IN WHICH CASE 
*     X IS RETURNED.
      SKP 
RESLT BSS 1 
X     BSS 1 
Y     BSS 1 
.MOD  NOP 
      JSB .ENTR     COPY ADDRESSES
      DEF RESLT 
      JSB .TDIV     X/Y 
      DEF TEMP
      DEF X,I 
      DEF Y,I 
      SOC           OFL ? 
      JMP OFL       YES, RESULT = X 
      JSB .YINT     [X/Y] 
      DEF *+3 
      DEF TEMP
      DEF TEMP
      JSB .TMPY     [X/Y]*Y 
      DEF TEMP
      DEF TEMP
      DEF Y,I 
      JSB .TSUB     X-[X/Y]*Y 
      DEF RESLT,I 
      DEF X,I 
      DEF TEMP
      JMP .MOD,I    EXIT
* 
*                   X/Y OVERFLOWS OR Y=0, RESULT=X
* 
OFL   JSB .CFER     SET RESULT = X
      DEF RESLT,I 
      DEF X,I 
      JMP .MOD,I    EXIT
* 
*                   LOCALS. 
* 
TEMP  BSS 4         TEMP
* 
      END 
                                                                                                                                                                                                                                                