perm filename TRIGS.DIF[10X,AIL] blob sn#152621 filedate 1975-03-31 generic text, type T, neo UTF8

	1) TRIGS.OLD[S,AIL] vs. 2) TRIGS[S,AIL]	SRCCOM	03-31-75	03:31	PAGES 1,1

******** TRIGS.OLD[S,AIL] **** PAGE 1  LINE 1
1)	COMMENT ⊗   VALID 00014 PAGES VERSION 17-1(3)
1)	RECORD PAGE   DESCRIPTION
*** TRIGS[S,AIL] *** PAGE 1  LINE 1
2)	COMMENT ⊗   VALID 00015 PAGES VERSION 17-1(6)
2)	RECORD PAGE   DESCRIPTION


******** TRIGS.OLD[S,AIL] **** PAGE 1  LINE 7
1)	 00011 00005	FLOATING POINT SINGLE PRECISION SINE AND COSINE FUNCTION
1)	 00017 00006	FLOATING POINT SINGLE PRECISION SQUARE ROOT FUNCTION
1)	 00021 00007	PSEUDO RANDOM NUMBER GENERATOR AND INITIALIZING ROUTINE
1)	 00024 00008	FLOATING POINT SINGLE PRECISION ARCTANGENT FUNCTION
1)	 00029 00009	FLOATING POINT SINGLE PRECISION ARCSINE FUNCTION
1)	 00032 00010	FLOATING POINT SINGLE PRECISION ARCCOSINE FUNCTION
1)	 00035 00011	FLOATING POINT SINGLE PRECISION ARCTANGENT OF TWO ARGUMENTS
1)	 00039 00012	FLOATING POINT SINGLE PRECISION HYPERBOLIC TANGENT ROUTINE
1)	 00043 00013	FLOATING POINT SINGLE PRECISION HYPERBOLIC COSINE FUNCTION.
1)	 00046 00014	FLOATING POINT SINGLE PRECISION HYPERBOLIC SINE FUNCTION.
1)	 00050 ENDMK
1)	⊗;
*** TRIGS[S,AIL] *** PAGE 1  LINE 7
2)	 00011 00005	TENX<TENEX VERSION OF UNDER/OVER FLOW
2)	 00016 00006	FLOATING POINT SINGLE PRECISION SINE AND COSINE FUNCTION
2)	 00022 00007	FLOATING POINT SINGLE PRECISION SQUARE ROOT FUNCTION
2)	 00026 00008	PSEUDO RANDOM NUMBER GENERATOR AND INITIALIZING ROUTINE
2)	 00029 00009	FLOATING POINT SINGLE PRECISION ARCTANGENT FUNCTION
2)	 00034 00010	FLOATING POINT SINGLE PRECISION ARCSINE FUNCTION
2)	 00037 00011	FLOATING POINT SINGLE PRECISION ARCCOSINE FUNCTION
2)	 00040 00012	FLOATING POINT SINGLE PRECISION ARCTANGENT OF TWO ARGUMENTS
2)	 00044 00013	FLOATING POINT SINGLE PRECISION HYPERBOLIC TANGENT ROUTINE
2)	 00048 00014	FLOATING POINT SINGLE PRECISION HYPERBOLIC COSINE FUNCTION.
2)	 00051 00015	FLOATING POINT SINGLE PRECISION HYPERBOLIC SINE FUNCTION.
2)	 00055 ENDMK
2)	⊗;


******** TRIGS.OLD[S,AIL] **** PAGE 2  LINE 3
1)	021  102100000003  ⊗;
1)	COMMENT ⊗
1)	VERSION 17-1(3) 12-12-73 BY RHT & RFS BUG #PW# NEED SEVERAL APR BIT ENABLINGS 
*** TRIGS[S,AIL] *** PAGE 2  LINE 3
2)	021  102100000006  ⊗;
2)	COMMENT ⊗
2)	VERSION 17-1(6) 3-31-75 BY RLS TENEX UNDER/OVER HANDLER
2)	VERSION 17-1(5) 3-31-75 
2)	VERSION 17-1(4) 3-31-75 
2)	VERSION 17-1(3) 12-12-73 BY RHT & RFS BUG #PW# NEED SEVERAL APR BIT ENABLINGS 

	1) TRIGS.OLD[S,AIL] vs. 2) TRIGS[S,AIL]	SRCCOM	03-31-75	03:31	PAGES 2,2



******** TRIGS.OLD[S,AIL] **** PAGE 4  LINE 8
1)	OV←←400000
*** TRIGS[S,AIL] *** PAGE 4  LINE 9
2)	NOTENX <;DEC VERSION OF UNDER/OVER FLOW CODE
2)	OV←←400000


******** TRIGS.OLD[S,AIL] **** PAGE 4  LINE 153
1)	BEND UNDER
*** TRIGS[S,AIL] *** PAGE 4  LINE 154
2)	>;NOTENX
2)	TENX<;TENEX VERSION OF UNDER/OVER FLOW
2)	OV←←400000
2)	FOV←←40000
2)	ZDV←←40
2)	FXU←←100
2)	IFE ALWAYS,<		;MORE EXTERNALS, CONDITIONALLY ASSEMBLED.
2)		EXTERNAL INTMAP,ENABLE
2)		EXTERNAL GOGTAB,PS3ACS
2)	>
2)	;The underflow processing is turned
2)	;on with the call TRIGINIT( <rout-name> ).  This uses the
2)	;INTMAP and ENABLE SAIL functions to set up interrupt
2)	;traps (export); at Stanford, it turns on the APRENB system
2)	;itself.
2)	;If an interrupts happens, and it is
2)	;not followed by a JFCL (indicating that overflow from this
2)	;spot is ok), then the <rout-name> is called.
2)	;It may peer around at things, change JOBTPC, etc., just
2)	;as documented for any interrupt routine.  When it returns,
2)	;the interrupt is dismissed.
2)	;IF THIS CODE IS LOADED, INITIALIZE IT!
2)	TRGIN:	0
2)		XWD 000000,TRGIQ	;SPECIAL INIT IN FIRST SYS PHASE
2)		0			;ONLY 1 ROUTINE TO CALL.
2)		LINK %INLNK,TRGIN
2)	TRGIQ:	PUSH	P,[0]		;NO ROUTINE.
2)		PUSHJ	P,TRIGINI	;INITIALIZATION
2)		POPJ	P,		;RETURN.
2)	HERE(TRIGINIT)
2)		JFCL	17,.+1		;CLEAR NUMERIC FLAGS.
2)		PUSH	P,[=7]		;ARM FOR FLOATING OVERFLOWS
2)		PUSH	P,[FLTOV]	;ROUTINE.
2)		PUSH	P,[0]		;NOT DEFERRED
2)		PUSHJ	P,INTMAP	;SET IT ALL UP.
2)		PUSH	P,[=7]

	1) TRIGS.OLD[S,AIL] vs. 2) TRIGS[S,AIL]	SRCCOM	03-31-75	03:31	PAGES 4,4

2)		PUSHJ	P,ENABLE	;AND ENABLE IT.
2)		PUSH	P,[=6]		;ARM FOR regular, too.
2)		PUSH	P,[NOFLT]	;ROUTINE.
2)		PUSH	P,[0]		;NOT DEFERRED
2)		PUSHJ	P,INTMAP	;SET IT ALL UP.
2)		PUSH	P,[=6]
2)		PUSHJ	P,ENABLE	;AND ENABLE IT.
2)		POP	P,1		;RETURN ADDRESS
2)		POP	P,OVROUT	;USER'S ROUTINE.
2)		JRST	(1)		;RETURN.
2)	GETADR:				
2)	;GET PC WORD IN 1, STORE IN OVPCWD
2)		MOVEI	1,400000	;THIS FORK
2)		JSYS	RIR		;READ TABLES
2)		HLRZ	2,2		;LEVTAB ADDRESS
2)		MOVE	1,@2(2)		;LEVEL 3 PC WORD
2)		MOVEM	1,OVPCWD	;SAVE FOR LOOKING.
2)		POPJ	P,
2)	NOFLT:
2)		PUSHJ	P,GETADR	;GET PC WORD
2)		JRST	NOFX		;NOT FLOATING
2)	FLTOV:
2)		PUSHJ	P,GETADR	;GET ADDRESS OF INTERRUPTED CODE IN 1
2)		MOVE	1,-1(1)		;GET OPCODE.
2)		TLNN	1,40000		;CHECK FOR FSC
2)		TLZ	1,2000
2)		DPB	1,[POINT 29,SEW,35] ;CHANGE INSTRUCTION
2)		PUSH	P,16		;GET BACK INTERRUPT ACS
2)		MOVEM	P,SAVP
2)		MOVE	17,[XWD PS3ACS,0]
2)		BLT	17,17		;RESTORE AC'S
2)	SEW:	SETZ	0,0		;MODIFIED!!!!
2)		MOVEM	17,PS3ACS+17
2)		MOVEI	17,PS3ACS
2)		BLT	17,PS3ACS+16
2)		MOVE	P,SAVP
2)		POP	P,16
2)	NOFX:	HLRZ	1,OVPCWD	;CHECK IF NEXT INSTR IS JFCL
2)		ANDCMI	1,777
2)		CAIE	1,(<JFCL>)	;CHECK.
2)		 JRST	 USRRT		;GO TO USER ROUTINE.
2)		HRRZ	1,@OVPCWD	;GET EFFECTIVE ADDRESS
2)		HRRM	1,OVPCWD
2)	RET:	MOVSI	1,OV+FOV+FXU+ZDV	;PROBABLY A NO-OP ON TENEX
2)		ANDCAM	1,OVPCWD	;BUT PROBABLY DOESNT HURT 
2)	     	MOVEI	1,400000	;THIS FORK
2)		JSYS	RIR		;READ LEVTAB,CHNTAB
2)		HLRZ	2,2

	1) TRIGS.OLD[S,AIL] vs. 2) TRIGS[S,AIL]	SRCCOM	03-31-75	03:31	PAGES 4,4

2)		MOVE	1,OVPCWD
2)		MOVEM	1,@2(2)		;SAVE THE NEW PC WORD FOR LEVEL 3
2)		POPJ	P,		;RETURN TO INTERRUPT HANDLER.
2)	USRRT:	SKIPN	OVROUT
2)		  JRST	 RET		;NO USER ROUTINE.
2)		PUSHJ	P,@OVROUT	;CALL USER'S ROUTINE.
2)		POPJ	P,		;JUST RETURN
2)	SAVP:	0
2)	OVROUT:	0
2)	>;TENX  -- END OF TENEX VERSION OF UNDER/OVER FLOW HANDLER
2)	BEND UNDER