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-18055
*   RELOC: PART OF 24998-12001
*   PGMR: BG & JTS
* 
      HED ".ITOI" INTEGER TO INTEGER POWER
      NAM .ITOI,7 24998-1X055 REV.2013 791017 
      ENT .ITOI 
* 
* 
*      CALLING SEQUENCE.. 
* 
*      JSB .ITOI     (RESULT INTEGER) 
*      DEF BASE      (INTEGER)
*      DEF POWER     (INTEGER)
*      (ERROR RETURN) 
*      (NORMAL RETURN)
* 
*      CALCULATES  BASE**POWER. 
* 
.ITOI NOP 
      STA REG       SAVE A
      LDA .ITOI,I 
      STA ARG 
      LDA REG       ARG MIGHT BE IN A REG 
      LDA ARG,I    PICK UP BASE 
      STA BASE
      ISZ .ITOI 
      STB REG       SAVE B ARG MIGHT BE THERE 
      LDB .ITOI,I 
      STB ARG 
      LDB REG 
      LDB ARG,I    PICK UP POWER
      STB PWR 
      ISZ .ITOI 
      SZA,RSS      BASE=0 ? 
      JMP BZER     YES
      SZB,RSS      POWER=0 ?
      CLA,INA,RSS   ANS = 1 
      CPA E1       BASE=1 ? 
      JMP EXIT     YES, ANS=1 
      CPA EM1      BASE=-1 ?
      RSS          YES
      JMP L2
      SLB,RSS       ANS = 1 IF EVEN POWER ELSE -1 
      CLA,INA 
      JMP EXIT     ANS=1-2*(LOW BIT OF POWER) 
      SPC 1 
L2    SSB          BASE<0 ? 
      JMP ZER      YES
      CLA,INA 
      STA F        F=1
LOOP  LDB PWR 
      SLB,BRS      POWER=POWER/2
      JMP MUL      LOW ORDER BIT WAS ONE
      STB PWR 
TEST  SZB          POWER=0 ?
      JMP SQR      NO 
      LDA F 
      JMP EXIT     ANS=F
BZER  CMB,INB 
      SSB           WHEN BASE=0, IF POWER=0, ERROR
      JMP ZER       ELSE ANS = 0
FAIL  LDB ASCII+1 
      LDA ASCII 
LIBX  JMP .ITOI,I 
      SPC 1 
ZER   CLA 
EXIT  ISZ .ITOI 
      JMP LIBX
MUL   STB PWR 
      LDA BASE
      MPY F 
      STA F        F=F*BASE 
      JSB OFLO     TEST FOR OVERFLOW. 
      LDB PWR 
      JMP TEST
SQR   LDA BASE
      MPY BASE
      STA BASE     BASE=BASE**2 
      JSB OFLO     TEST FOR OVERFLOW
      JMP LOOP
OFLO  NOP          B SHOULD EXTEND SIGN OF A
      SSA          A<0 ?
      INB          YES, B SHOULD BE -1
      SZB,RSS      B=0 ?
      JMP OFLO,I   YES
      LDB ASCII+2 
      JMP FAIL+1
ASCII ASC 3,08UNOF
E1    DEC 1 
EM1   DEC -1
BASE  NOP 
PWR   NOP 
REG   NOP 
ARG   NOP PWR 
F     NOP 
A     EQU 0 
B     EQU 1 
      END 
* 
                                                