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

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


/TRIG.V04
/8K FORTRAN LIBRARY
/COPYRIGHT 1969
/DIGITAL EQUIPMENT CORP., MAYNARD, MASS.
/
/	8K FORTRAN TRIGNOMETRY ROUTINES
	ENTRY	SIN
	ENTRY	COS
	ENTRY	TAN

QUAD,	0	/CONTAINS ONE LESS THAN THE QUADRANT OF THE ARGUMENT
Y,	BLOCK	3	/TEMPORARY STORAGE FOR ARG
	CPAGE	22
COEF,	5476		/-2.39E-8	CONSTANTS FOR SIN
	3246
	2500		/2.7526E-6
	1565
	6134
	5170		/-1.98409E-4
	5646
	4006
	0026		/8.3333315E-3
	1724
	2104
	2065		/-1.6666667E-1
	5765
	2525
	2525		/1.0
	2014
	0000
	0000
	CPAGE	3
HALFPI,	2016		/1.5707963
	2207
	7324
	CPAGE	3
QTRPI,	2006		/7.8539815E-1
	2207
	7324
	CPAGE	25
TOEF,	1724		/9.5168091E-3
	6766
	1440		/2.9005250E-3
	1705
	7413
	2741		/2.4565090E-2
	1736
	2236
	2720		/5.3374060E-2
	1746
	6517
	3023		/1.3339240E-1
	1764
	2114
	0042		/3.3333140E-1
	1775
	2525
	1517		/1.0
	2014
	0000
	0000
TAN,	BLOCK	2
	DCA	QUAD	/SET QUADRANT OFFSET SWITCH
	TAD I	TAN	/PICK-UP CDF
	DCA	TARG
	INC	TAN#	/POINT TO NEXT WORD
	TAD I	TAN	/PICK-UP ADDRESS
	DCA	TARG#
	INC	TAN#	/POINT TO RETURN
	CALL	1,FAD	/GET ARG IN FP-ACC
TARG,	ARG	0
BAC,	TAD	ACH	/LOOK AT HIGH ORDER WORD
	SPA CLA		/IF NEGATIVE
	JMP	OVT	/GO OM
	CALL	1,FSB	/OTHERWISE SUBTRACT
	ARG	QTRPI	/PI/2
	ISZ	QUAD	/AND INCREMENT QUADRANT COUNTER
	JMP	BAC	/UNTIL ARG IS NEGATIVE
OVT,	CALL	1,FAD	/ADD PI/2 TO ARG UNTIL IT IS IN 
	ARG	QTRPI	/THE FIRST QUADRANT
	CLA CMA
	TAD	QUAD	/BUT KEEP TRACK OF WHICH QUADRANT IT WAS IN
	DCA	QUAD
	TAD	ACH	/GET HI ORDER WORD
	SPA CLA
	JMP	OVT	/IF NEGATIVE REPEAT
	TAD	QUAD	/FIND OUT WHAT QUAD IT WAS IN
	RTR	
	SMA CLA
	JMP	OM
	CALL	0,CHS	/SUBTRACT FROM PI/2 IF QUAD 2 OR 4
	CALL	1,FAD
	ARG	QTRPI
OM,	TAD	(7	/USE A 7 TERM SERIES
	CPAGE	3
	JMS	POL
	TOEF		/ADRESS OF COEFICIENTS FOR THE SERIES
	CLA CMA
	TAD	QUAD
	RTR
	SZL CLA
	JMP	OM3
	CALL	1,STO
	ARG	Y
	TAD	(2014
	DCA	ACH
	CALL	1,FDV
	ARG	Y
OM3,	RETRN	TAN
/	INTERNAL SUBROUTINE POL
/
/	COMPUTES N TERMS OF POLYNOMIAL 
/	N IN AC ... X IN FLOATING AC
/	COEFFICIENTS START IN LOCATION WHOSE ADDRESS FOLLOWS JMS TO POL
/
POL2,	BLOCK	1
POL,	BLOCK	1
	CIA
	DCA	POL2
	CALL	1,STO	/STORE ADJUSTED ARGUMENT
	ARG	Y	/IN A TEMPORARY
	CALL	1,FAD
	ARG	Y	/RESTORE FP AC
	CALL	1,FMP
	ARG	Y	/SQUARE IT
	CALL	1,STO
	ARG	X
	TAD I	POL
	INC	POL
ARG2,	DCA	ARG1#
	CALL	1,FAD
ARG1,	ARG	COEF	/     ADDRESS STORED HERE
	ISZ	POL2
	JMP	POL1
	CALL	1,FMP	/MULTIPLY AGAIN TO COMPLETE SERIES
	ARG	Y
	TAD	QUAD
	RTR
	SNL CLA		/FIND OUT WHICH QUADRANT
	JMP	POLEX
	CALL	0,CHS	/IF IN QUADRANT 3 OR 4 SET NEGATIVE
POLEX,	JMP I	POL
POL1,	CALL	1,FMP
	ARG	X
	TAD	ARG1#
	TAD	(3
	JMP	ARG2
/
X,	BLOCK	3	/TEMPORARY FOR POL
/
/
/ 8K FORTRAN TRIGNOMETRY ROUTINES
/
/
COS,	BLOCK	2
	TAD	COS
	DCA	SIN
	TAD	COS#
	DCA	SIN#	/IT NOW APPEARS THAT SIN WAS CALLED
	CLA IAC		/WITH QUADRANT OFFSET BY ONE
	JMP	COSE
SIN,	BLOCK	2
COSE,	DCA	QUAD	/SET QUADRANT OFFSET SWITCH
	TAD I	SIN	/PICK-UP CDF
	DCA	SARG
	INC	SIN#	/POINT TO NEXT WORD
	TAD I	SIN	/PICK-UP ADDRESS
	DCA	SARG#
	INC	SIN#	/POINT TO RETURN
	CALL	1,FAD	/GET ARG IN FP-ACC
SARG,	ARG	0
BACK,	TAD	ACH	/LOOK AT HIGH ORDER WORD
	SPA CLA		/IF NEGATIVE
	JMP	OVR	/GO ON
	CALL	1,FSB	/OTHERWISE SUBTRACT
	ARG	HALFPI	/PI/2
	ISZ	QUAD	/AND INCREMENT QUADRANT COUNTER
	JMP	BACK	/UNTIL ARG IS NEGATIVE
OVR,	CALL	1,FAD	/ADD PI/2 TO ARG UNTIL IT IS IN 
	ARG	HALFPI	/THE FIRST QUADRANT
	CLA CMA
	TAD	QUAD	/BUT KEEP TRACK OF WHICH QUADRANT IT WAS IN
	DCA	QUAD
	TAD	ACH	/GET HI ORDER WORD
	SPA CLA
	JMP	OVR	/IF NEGATIVE REPEAT
	TAD	QUAD	/FIND OUT WHAT QUAD IT WAS IN
	RTR	
	SMA CLA
	JMP	ON
	CALL	0,CHS	/SUBTRACT FROM PI/2 IF QUAD 2 OR 4
	CALL	1,FAD
	ARG	HALFPI
ON,	TAD	(6	/USE A 6 TERM SERIES
	CPAGE	3
	JMS	POL
	COEF		/ADRESS OF COEFICIENTS FOR THE SERIES
	RETRN	SIN
	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