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 ".TPWR" - INTERNAL TRIPLE ** INTEGER. NAM .TPWR,7 24998-1X130 REV.2001 781106 * ENT .TPWR EXT .TMPY,FLOAT,.FLUN,.CFER * * .TPWR TAKES A 64-BIT FLOATING-POINT NUMBER TO A POSITIVE * INTEGER POWER IN THE RANGE [2,32768]. * * CALLING SEQUENCE: * * LDA POWER * JSB .TPWR * DEF * DEF * * IF THE RESULT OVERFLOWS, THE MAX POSITIVE NUMBER IS * RETURNED WITH OVERFLOW SET. IF IT UNDERFLOWS, ZERO IS * RETURNED WITH OVERFLOW SET. FOR OTHER CASES OVERFLOW * IS CLEARED. SPC 4 * GET ADDRESSES, LEFT-JUSTIFY POWER. * .TPWR NOP LDB .TPWR,I COPY RESULT ADDR. ISZ .TPWR STB RESLT LDB .TPWR,I COPY ARG ADDR. ISZ .TPWR STB ARG JSB FLOAT LEFT-JUSTIFY NUMBER. ELA,RAL REMEMBER SIGN, DISCARD HIGH BIT. STA POWER JSB .FLUN A = # BITS. CMA,SEZ,INA,RSS - # BITS. INA 1 - # BITS. (WAS O.K. FOR 32768) STA COUNT SAVE COUNT. SKP * COPY ARG, SET UP INITIAL VALUE. * JSB .CFER SAVE ARG FOR MULTIPLIER. DEF TEMP ARG DEF *-* JSB .TMPY SET UP INITIAL VALUE. DEF RESLT,I DEF TEMP DEF TEMP LDA TEMP IS ARG ZERO ? SZA,RSS JMP .TPWR,I YES, DONE. LDB POWER LEFT-JUSTIFIED POWER. CMB REVERSE SENSE OF SLB BELOW. JMP TPWR2 FIRST SQUARE ALREADY DONE. * * FOR EACH BIT, SQUARE. IF SET, MULTIPLY BY ARG. * TPWR1 JSB .TMPY SQUARE IT. RESLT DEF *-* DEF RESLT,I DEF RESLT,I TPWR2 RBL,SLB NEXT BIT POWER. MULTIPLY ? JMP TPWR3 NO. JSB .TMPY YES, DO IT. DEF RESLT,I DEF RESLT,I DEF TEMP TPWR3 ISZ COUNT OUT OF BITS ? JMP TPWR1 NO, DO AGAIN. LDA RESLT,I IS RESULT ZERO ? SZA,RSS STO YES, UNDERFLOW. JMP .TPWR,I DONE. * * LOCALS. * COUNT BSS 1 COUNTER OF BITS USED. POWER BSS 1 LEFT-JUSTIFIED POWER. TEMP BSS 4 MULTIPLIER. * END