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 ".NGL" - CONVERT TRIPLE TO SINGLE WITH ROUNDING. NAM .NGL,7 24998-1X126 REV.2001 780424 * ENT .NGL EXT SNGL,.CFER * A EQU 0 B EQU 1 * * .NGL CONVERTS A TRIPLE-PRECISION NUMBER TO A SINGLE-PRECISION * NUMBER WITH ROUNDING. * * CALLING SEQUENCE: * * JSB .NGL * DEF *+2 * DEF * RESULT IN (A,B), OVERFLOW AS PER SNGL. * * METHOD: AFTER THE FIRST 25 BITS, THE ONLY EFFECT MANTISSA BITS * HAVE ON THE RESULT IS FOR ROUNDING NEGATIVE NUMBERS. FOR THESE, * IT ONLY MATTERS WHETHER THE REMAINING BITS ARE ALL ZERO OR NOT. * THE TRIPLE NUMBER IS CONVERTED TO DOUBLE BY DELETING THE THIRD * WORD AND EXPLICITLY SETTING THE NEXT BIT IF ANY DELETED BIT WAS * SET. THE RESULT IS ROUNDED USING ".NGL" . SPC 4 TEMP BSS 4 .NGL NOP STA TEMP SAVE A-REG. ISZ .NGL SKIP RETURN ADDR. LDA .NGL,I COPY ARG ADDR. ISZ .NGL STA ARG LDA TEMP RESTORE A-REG. JSB .CFER COPY ARG. DEF TEMP ARG DEF *-* LDA TEMP+2 THIRD WORD. LDB TEMP+3 FOURTH WORD. CCE,SZA THIRD WORD NONZERO ? RBL,ERB YES, SET TOP BIT IN FOURTH WORD STB TEMP+2 DELETE THIRD WORD JSB SNGL USE "SNGL" TO ROUND DEF *+2 DEF TEMP JMP .NGL,I * END