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 *