File ATAN.SB (8k SABR macro assembler source file)

Directory of image this file is from
This file as a plain text file

/COPYRIGHT 1970, DIGITAL EQUIPMENT CORP., MAYNARD MASS.
/ATAN.V09
/8K FORTRAN LIBRARY

	ENTRY	ATAN

ATAN,	BLOCK 2
	TAD	ATAN
	DCA	L4
	TAD	ATAN#
	DCA	L4#
	INC	ATAN#
	INC	ATAN#
	CALL	1,IFAD
L4,	ARG	0
	CLL
	TAD	ACH
	SNA
	JMP	EXIT
	SPA
	TAD	(4000
	DCA	ACH		/TAKE ABSVAL OF ARGUMENT
	RAR
	DCA	SIGN		/AND REMEMBER SIGN
	TAD	ACH
	TAD	(-2014
	SPA CLA
	JMP	LSTN45		/IF ARG>1,
	JMS	INVRS		/INVERT ARG - SUBTRACT RESULT FROM PI/2
	CLA CMA
LSTN45,	DCA	L4#		/L4# IS THE "PI/2-RESULT" SWITCH
	TAD	ACH
	TAD	(-1774		/THIS IS AN APPROXIMATE TEST TO SEE
	SPA CLA			/IF THE NEW ARG IS <2-SQRT(3)
	JMP	LSTN15		/IF IT IS,
	CALL	1,FAD		/PERFORM A "DIFFERENCE OF TANGENTS"
	ARG	SQRT3		/TRANSFORMATION TO SUBTRACT PI/6
	TAD	(20
	JMS	INVRS		/FROM THE RESULT. THE ARG IS TRANSFORMED
	CALL	0,CHS		/INTO SQRT(3)-4/(ARG+SQRT(3))
	CALL	1,FAD
SQT3,	ARG	SQRT3
	CLA CMA
LSTN15,	DCA	INVRS		/USE INVRS AS A SWITCH TO INDICATE THIS
	CALL	1,STO		/TRANSFORMATION OCCURRED
	ARG	T
	TAD	(-4
	DCA	L4
	TAD	SQT3#
	DCA	L3#
ATLOOP,	INC	L3#		/NOW PERFORM A STANDARD TAYLOR SERIES
	INC	L3#		/EXPANSION (WITH TRUNCATED COEFFICIENTS)
	INC	L3#
	CALL	1,FAD		/CONVERGENCE WILL BE GOOD SINCE WE
L3,	ARG	SQRT3		/HAVE MADE THE ARGUMENT BE <.3
	JMS	FMPT
	JMS	FMPT
	ISZ	L4
	JMP	ATLOOP
	JMS	FMPT
	CALL	1,FAD
	ARG	T		/FINISH UP THE SERIES
	ISZ	INVRS
	JMP	NOPI6
	CALL	1,FAD		/ADD PI/6 IF NECESSARY
	ARG	PIOVR6
NOPI6,	ISZ	L4#
	JMP	NOPI2
	CALL	0,CHS		/SUBTRACT FROM PI/2 IF NECESSARY
	CALL	1,FAD
	ARG	PIOVR2
NOPI2,	TAD	SIGN
	TAD	ACH		/SET SIGN OF RESULT = SIGN OF ARGUMENT
	DCA	ACH
EXIT,	RETRN	ATAN

INVRS,	0		/INVERSION SUBROUTINE
	TAD	(2014	/ENTERED WITH AC=0 OR 20
	DCA	L4	/AC=0 MEANS 1/FAC, AC=20 MEANS 4/FAC
	CALL	1,STO
	ARG	T
	TAD	L4
	DCA	ACH	/ACM AND ACL WERE CLEARED BY STORE
	CALL	1,FDV
	ARG	T
	JMP I	INVRS

FMPT,	0		/SUBROUTINE TO MULTIPLY BY T
	CALL	1,FMP	/SAVES A FEW MEASLY LOCATIONS
	ARG	T
	JMP I	FMPT

SIGN,	0		/CELL FOR HOLDING SIGN OF ARG
T,	BLOCK	3	/FLOATING TEMPORARY

	PAGE

PIOVR6,	2004;1405;2216	/PI/6
PIOVR2,	2016;2207;7325
SQRT3,	2016;7331;7272	/SQRT(3)
/THE NEXT 4 NUMBERS MUST IMMEDIATELY FOLLOW SQRT3
	1756;0462;4562	/APPROXIMATELY 1/9
	5764;4221;3403	/APPROXIMATELY -1/7
	1766;3141;6672	/APPROXIMATELY 1/5
	5775;2525;2337	/APPROXIMATELY -1/3

	END



Feel free to contact me, David Gesswein djg@pdp8online.com with any questions, comments on the web site, or if you have related equipment, documentation, software etc. you are willing to part with.  I am interested in anything PDP-8 related, computers, peripherals used with them, DEC or third party, or documentation. 

PDP-8 Home Page   PDP-8 Site Map   PDP-8 Site Search