/ 
/ 
/                   FIRST PRINTING, FEBRUARY 1974
/ 
/ THE INFORMATION IN THIS DOCUMENT IS SUBJECT TO 
/ CHANGE WITHOUT NOTICE AND SHOULD NOT BE CONSTRUED
/ AS A COMMITMENT BY DIGITAL EQUIPMENT CORPORATION.
/ DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPON-
/ SIBILITY FOR ANY ERRORS THAT MAY APPEAR IN THIS
/ DOCUMENT.
/ 
/ THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FUR-
/ NISHED TO THE PURCHASER UNDER A LICENSE FOR USE ON
/ A SINGLE COMPUTER SYSTEM AND CAN BE COPIED (WITH
/ INCLUSION OF DIGITAL'S COPYRIGHT NOTICE) ONLY FOR 
/ USE IN SUCH SYSTEM, EXCEPT AS MAY OTHERWISE BE PRO-
/ VIDED IN WRITING BY DIGITAL.
/ 
/ DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY
/ FOR THE USE OR RELIABILITY OF ITS SOFTWARE ON EQUIP-
/ MENT THAT IS NOT SUPPLIED BY DIGITAL.
/ 
/ COPYRIGHT (C) 1974, BY DIGITAL EQUIPMENT CORPORATION
/ 
/ 
        .EJECT
/COPYRIGHT 1971, DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
/EDIT 4	5/21/71
/
/ 005	25-MAR-76	G. A. REID	FIX A PROBLEM WHICH RETURNED
/				A ZERO RESULT WHEN THE BASE IS -1.
/				(SPR 15-1095)
/
	.TITLE .BB	/RAISE INTEG. BASE (A) TO INTEG. POWER (B)
	/A**B
       .GLOBL .BB,.AD,.ER
/             CALLING SEQUENCE
/      JMS*   (.BB)           SUBR CALL (A IN A-REG)
/       ADDR            ADDR OF B (XCT ADDR IF INDIRECT)
/      NEXT   INSTRUCTION     SUBR RETURN (RESULT IN A REG)
/
.BB    CAL    0              /ENTRY-EXIT
	DAC	BB01
	LAC*	.BB
	ISZ	.BB
	DAC	BB02
	SPA
	LAC*	BB02
	DAC	BB02
	LAC	BB01
	SZA
	JMP BB11
	LAC*	BB02		/GET EXPONENT
	SPA!SNA!CLA
	JMS* .ER
	AND 15			/(500015) DUMMY INSTR
	JMP* .BB
BB11	DZM	BB05
	ISZ	BB05	/INITIALIZE RESULT TO 1.
	SAD	BB05	/CHECK BASE FOR 1
	JMP*	.BB	/YES - RETURN 1
	LAC*	BB02		/GET EXP
       DAC    BB02           /STORE EXP(B)
       SPA!CLA               /IF NEG EXP, EXIT  A=ZERO
	JMP	BB12		/ FIRST CHECK IF BASE = -1.	/(GAR-005)
BB06   LAC    BB02           /SET EXP = EXP/2
       RCR
       DAC    BB02
       SNL                   /WAS B17 SET
       JMP    BB07           / NO
       LAC    BB01           /YES-  BASE
       JMS*   .AD            /       *   (INTEGER MULTIPLY (.AD))
       LAC    BB05           /     RESULT
       DAC    BB05           /     TO RESULT
BB07   LAC    BB02           /IS EXP NOW ZERO
       SNA                   / NO
       JMP    BB10           / YES-EXIT
       LAC    BB01           /   BASE
       JMS*   .AD            /    *   (INTEGER MULTIPLY (.AD))
       LAC    BB01           /   BASE
       DAC    BB01           /   TO BASE
       JMP    BB06           /CYCLE
BB10   LAC    BB05           /LOAD RESULT
       JMP*   .BB            /EXIT
BB12	LAW	-1		/ IS THE BASE -1?		/(GAR-005)
	SAD	BB01		/				/(GAR-005)
	JMP	BB06		/ IT IS -1, PROCESS IT.		/(GAR-005)
	CLA			/ NOT -1, EXIT WITH ZERO RESULT	/(GAR-005)
	JMP*	.BB		/ EXIT.				/(GAR-005)
BB01   CAL    0              /BASE (A)
BB02   CAL    0              /EXP  (B)
BB05   CAL    0              /RESULT
       .END
