File SIN.RA

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

0		/SET SIGN TO POSITIVE.
	JGT	SINMOD		/IF POSITIVE BYPASS FUDGE.
	JEQ	SINRTN		/IF ZERO EXIT.
	FNEG			/NEGATIVE. NEGATE AC. SIN(-X)=-SIN(X)
	LDX	0,0		/SET SIGN TO MINUS.
SINMOD,	JAL	SINER		/IF SIGN CAN T INT, THEN ERROR.
	FDIV	F2PISN		/REDUCE TO BELOW TWO PI.
	FSTA	SIN1		/SAVE IN A TEMP.
	ALN	0
	FNORM			/INTERGIZE IT.
	FNEG
	FADD	SIN1		/RECALL NUMBER. AC NOW <0
	FMUL	F2PISN		/NOW MULTIPLY BACK.
	FSTA	SIN2		/AND SAVE AWAY.
	FSUB	FPISIN		/SUBTRACT OFF PI.
	JLT	SINP		/LESS THEN PI.
	FSTA	SIN2		/RESTORE AS 2.
	XTA	0		/INVERT THE SIGN.
	FNEG
	FSUB	F1SIN		/SIN(X-PI)=-SIN(X)
	ATX	0		/AND PUT BACK.
/
SINP,	FLDA	SIN2		/RECALL MAGIC GOODY.
	FSUB	FPI2SN		/TEST TO SEE IF X<PI/2
	JLT	SINPP		/YEP.
/
	FLDA	FPISIN		/SIN(X)=SIN(PI-X)
	FSUB	SIN2
	FSTA	SIN2		/AND STORE IT BACK.
/
SINPP,	FLDA	SIN2		/GET THE MAGIC NUMBER.
	FSUB	SINTST		/SEE IF ITS CLOSE TO AN EDGE
	JGT	SINPPP		/IT IS NOT
	FLDA	SIN2		/RECALL NUMBER IF TOO SMALE
	JXN	SINRTN,0		/EXIT IF SAME SIGN.
	FNEG			/ELSE NEGATE IT.
	JA	SINRTN
SINPPP,	FLDA	SIN2		/RECALL NUMBER TO BE WORKED ON.
	FDIV	FPI2SN		/DIVIDE BY PI OVER TWO.
	FSTA	SIN2		/AND STORE BACK.
	FMUL	SIN2		/MULTIPLY OUT.
	FSTA	SIN1
	FMUL	SINC9		/NOW DO THE STANDARD ITERATION.
	FADD	SINC7
	FMUL	SIN1
	FADD	SINC5
	FMUL	SIN1
	FADD	SINC3
	FMUL	SIN1
	FADD	FPI2SN		/ADD IN PI OVER 2
	FMUL	SIN2		/DO THE FINAL MULTIPLY.
	JXN	SINRTN,0		/SHALL WE NEGATE
	FNEG			/YEP
	JA	SINRTN		/AND RETURN.



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