X-Git-Url: http://gitweb.hachti.de/?a=blobdiff_plain;f=sw%2Fos8%2Fv3d%2Fsources%2Fsystem%2Fdectapes%2Fdectape3%2FTRIG.SB;fp=sw%2Fos8%2Fv3d%2Fsources%2Fsystem%2Fdectapes%2Fdectape3%2FTRIG.SB;h=0b1dc3af55225caced2b61eecd1c2f979142d465;hb=7af5ad59491ddf2066641aef1e0025a337c0f247;hp=0000000000000000000000000000000000000000;hpb=919757fd611e482003ce51f366f6783cab73dea3;p=pdp8.git diff --git a/sw/os8/v3d/sources/system/dectapes/dectape3/TRIG.SB b/sw/os8/v3d/sources/system/dectapes/dectape3/TRIG.SB new file mode 100644 index 0000000..0b1dc3a --- /dev/null +++ b/sw/os8/v3d/sources/system/dectapes/dectape3/TRIG.SB @@ -0,0 +1,247 @@ +/TRIGONOMETRY ROUTINES OS8 FORTRAN II LIBRARY +/ +/ +/ +/ +/ +/ +/ +/ +/ +/COPYRIGHT (C) 1974,1977 BY DIGITAL EQUIPMENT CORPORATION +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/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 RESPONSIBILITY +/FOR ANY ERRORS THAT MAY APPEAR IN THIS MANUAL. +/ +/THE SOFTWARE DESCRIBED IN THIS DOCUMENT IS FURNISHED 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 PROVIDED IN WRITING BY DIGITAL. +/ +/DIGITAL EQUIPMENT CORPORATION ASSUMES NO RESPONSIBILITY FOR THE USE +/OR RELIABILITY OF ITS SOFTWARE ON EQUIPMENT THAT IS NOT SUPPLIED BY +/DIGITAL. +/ VERSION 5 HAS PATCH FOR IMPROVED ACCURACY AT LARGE ARGS +/ INSERTED NOP INSTRUCTIONS AT PATCH1 AND PATCH2/C. STOLZ +/ +/ +/ +/ +/ +/ +/ +/ +/ +/ + / VERSION 6A +/ VERSION NUMBER IS AVAILABLE AT ENTRY POINTS + 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 1 + 6 + 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 +PATCH1, NOP /ALLOW FOR SKIP + 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 1 + 6 + 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 1 + 6 +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 +PATCH2, NOP /ALLOW FOR SKIP + 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 +