*20 / / / / / / / / / / / / F P P - D E F . / - - - - - - - - / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / BASE 77000 / / / MCRTPB=77000 MCRTP1=MCRTPB+30 MCRTP2=MCRTP1+3 MCRTP3=MCRTP2+3 MCRTP4=MCRTP3+3 MCRTP5=MCRTP4+3 MCRTP6=MCRTP5+3 MCRTP7=MCRTP6+3 MCRTP8=MCRTP7+3 / / / / / / FPPONE, 1. /THESE ARE THE COMMONLY USED CONSTANTS. FPPTWO, 2. / / NOTE: DO NOT MOVE THE ORDER OF THESE AROUND. / FPPPI2, 1 /PI DIVIDED BY 2. 3110 3755 / FPPPI, 2 3110 3755 /PI / FPP2PI, 3 3110 3755 /TWO PI. / / / / / / / / / / IFREF RAND / / / / / / R A N D / - - - - / / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / RAND, JA . /RANDOM NUMBER GENERATOR. FLDA FRNDC1 /RANDOM CONSTANT. FMULM FRNDX /MULITPLY BY OLD RANDOM NUMBER. STARTD /NOW DO SOME FIDDLING. FLDA FRNDCY /GET THE CYCLIC. ATX 0 /PUT CYCLIC IN AN INDEX FLDA FPPPI2-1 /"00000001" FSTA FRNDX-1 /SET EXPONENT IN 1-2 RANGE. JXN .+4,0+ /IF CYCLIC=0, THEN DO EXTRA BOP. FADD FPPPI2-1 /"00000001" FADDM FRNDTM /ADD IN MAGIC TEMP. XTA 0 /RECALL AND SAVE CYCLIC FSTA FRNDCY /FOR NEXT TIME. FCLA /ZERO THE FAC FSTA FRNDTM-1 /CLEAR OUT EXTRANEOUS BITS FROM COUNTER. FSTA FRZERO /CLEAR OUT ZERO WORD. FLDA FRNDX+2 /GET THE LOW ORDER BITS NOW. JGE FRNDPO /PRESERVE HIGH ORDER BIT IN INDEX 0. LDX -1,0 JA FRNDPO+2 FRNDPO, LDX 0,0 FSTA FRZERO+1 /SAVE THEM AWAY. FLDA FRNDTM /RECALL ADD-IN FACTOR FADDM FRZERO /ADD IT IN NOW. FLDA FRNDX /RECALL RANDOM HIGH ORDER WORD FSTA FRZERO-1 /OVERLAY EXTRANEOUS CARRY. STARTF /GET BACK INTO FLATING MODE. FLDA FRZERO-1 /RECALL RANDOM NUMBER JXN FRNDOK,0 /DO NOT FLIP AROUND .5 FNEG /DO FLIP AROUND .5 FADD FPPTWO / 2.-RND(1 TO 2) JA .+4 FRNDOK, FSUB FPPONE / RND(1 TO 2)-1. FMUL FPPTWO / BRING INTO THE 0-2 RANGE AGAIN. FSUB FPPONE / COMPENSATE FOR CENTER LINE ERRORS. JGE .+4 /IT S STILL POSITIVE. EXIT. FADD FPPONE / WE VE OVER CORRECTED. ADD IN. FSTA FRNDX /AND SAVE FOR THE NEXT TIME AROUND. JA RAND /RETURN NOW. / / / / 0 / FRNDTM, 0 /DUMMY COUNTER WORD. 0 /RANDOMIZING LOOP COUNTER. / 0 /EXPONENT OVERLAY WORD. FRNDX, -36 /LAST RANDOM NUMBER. 3562 7227 / / / FRNDC1, 22 /RANDOMIZING CONSTANT (I HOPE). 3224 2342 / / 0 FRZERO, 0 0 0 / / / FRNDCY, 0 0 / / / / / / / / $ IFREF EXP3 / / / / / E X P 3 / - - - - / / / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / / EXP3 RAISES A BASE TO A POWER. / X=A**B IN FORTRAN NOTATION. / / / EXP3OK, JSA ALOG /TAKE LOG OF THE NUMBER. FMUL MCRTP8 /MULITIPLY BY HIS POWER. JSA EXP /NOW RAISE IT. / EXP3, JA . /RETURN AND ENTRY. / JEQ EXP3 /0^X=0 FSTA MCRTP2 /SAVE BASE FLDA MCRTP1 /GET POWER AND SAVE JEQ EXP3ON /X^0=1 FSTA MCRTP8 FLDA MCRTP2 JGE EXP3OK /ALL IS WELL. TRAP7 0 /GIVE TRAP. JA EXP3 /AND RETURN. / EXP3ON, FLDA FPPONE JA EXP3 /AND RETURN / / / / / $ IFREF ABS / / / / / / / / A B S / - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / / ABS, JA . JGE ABS /RETURN IF X>=0 FNEG /X=-X JA ABS /AND RETURN / / / / / / / / / / $ IFREF TANH / / / / T A N H / - - - - / / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / TANH, JA . /HYPERBOLIC TANGENT ROUTINE. FSTA MCRTP6 /SAVE ARGUMENT JSA COSH /PERFORM COSH FSTA MCRTP5 /SAVE IT AWAY. FLDA MCRTP6 /RECALL ARG. JSA SINH /PREFORM SINH. FDIV MCRTP5 /SINH/COSH=TANH. JA TANH /AND RETURN NOW. / / / / / / / / / / $ IFREF SINH / / / / / S I N H / - - - - / / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / / FLDA MCRTP7 /RESTORE AND EXIT. / / SINH, JA . /SINH ROUTINE. FSTA MCRTP8 /SAVE THE ARGUMENT. JGE .+3 /MAKE IT POSITIVE. FNEG FSTA MCRTP7 /AND SAVE ABS VALUE IN CASE WE NEED IT. FSUB SINH1 /IS IT LESS THEN .1? JLE SINHSR /YES. USE SERIES APPROXIMATION. FSUB SINH2 /IS IT GREATER THEN 88.029? JGE SINHAP /YES. USE LOG(2) APPROXIMATION. FLDA MCRTP8 /RECALL THE NUMBER JSA EXP /EXP(X) FSTA MCRTP7 FLDA FPPONE FDIV MCRTP7 /1/EXP(X) FNEG /-1/EXP(X) FADD MCRTP7 /EXP(X)-1/EXP(X) FDIV FPPTWO / 1/2(EXP(X)-1/EXP(X)) JA SINH /AND RETURN NOW. / / SINHAP, FLDA MCRTP7 /RECALL ABSOULTE VALUE. FSUB SINHLG /ABS(X)-LN(2) JSA EXP /EXP(ABS(X)-LN(2)) FSTA MCRTP7 FLDA MCRTP8 /GET SIGN OF ARGUMENT. JGE SINH /LOAD POSITIVE IF ARG WAS POSITIVE. FNEG /ELSE NEGATE IT. JA SINH /AND RETURN. / / SINHSR, FLDA MCRTP8 /X SERIES IF X<.1 FMUL MCRTP8 /X^2 FSTA MCRTP7 /X^2 FMUL MCRTP8 /X^3 FSTA MCRTP6 /X^3 FMULM MCRTP7 /X^5 FDIV SINH3 /X^3/6 FADDM MCRTP8 /X+X^3/6 FLDA MCRTP7 /X^5 FDIV SINH4 /X^5/120 FADD MCRTP8 /X+X^3/6+X^5/120 JA SINH /VOILA. WE ARE DONE. / / / SINHLG, 0 2613 4412 / SINH1, .1 / SINH2, 87.929 / SINH3, 6. / SINH4, 120. / / / / / / / $ IFREF COSH / / / / / / / C O S H / - - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / / / COSH, JA . /HYPERBOLIC COSINE. FSTA MCRTP8 /SAVE ARGUMENT JGE .+3 /ABS(X) FNEG FSTA MCRTP7 FSUB COSH1 /TEST FOR LIMITS. JGE COSHBG FLDA MCRTP8 /X JSA EXP /EXP(X) FSTA MCRTP7 FLDA FPPONE /1. FDIV MCRTP7 / 1./EXP(X) FADD MCRTP7 / EXP(X)+1./EXP(X) FDIV FPPTWO / (EXP(X)+1./EXP(X))2. JA COSH /AND THAT IS THE DEFINITION OF COSH. / / COSHBG, FSUB COSHLG /SEE IF TOO BIG JGT COSHE /YEP. ERROR FADD COSH1 /READD IN SUBTRACTION FACTOR. JSA EXP / EXP(ABS(X)-LN(2)) JA COSH / A VERY GOOD APPROXIMATION. / / COSHE, FLDA COSHB /GIVE INFINITY IN CASE OF NO RECOVERY. TRAP7 12 /ERROR TRAP JA COSH /AND EXIT. / / COSHLG, 0 2613 4412 / COSHB, 3777 3777 7777 / / COSH1, 88.029 /LIMIT FACTOR. / / / / / / / / $ IFREF ACOS / / / / A C O S / - - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / ACOSOK, FLDA MCRTP8 /X FMUL MCRTP8 /X^2 FNEG /-X^2 FADD FPPONE /1-X^2 JSA SQRT /SQRT(1-X^2) FDIV MCRTP8 /SQRT(1.X^2)/X JSA ATAN /ATAN(SQRT(1.-X^2)/X) JXN ACOS,0 /NO SIGN CHANGE NECESSARY. FADD FPPPI /ADD PI IF MINUS. / ACOS, JA . /ENTRY AND EXIT. / FSTA MCRTP8 /STORE AWAY. JEQ ACOSEQ /IF ZERO RETURN PI OVER 2. LDX -1,0 /JUMP TIME. JGE .+5 LDX 0,0 FNEG FSUB FPPONE /1-!X! JLE ACOSOK /IS IT LESS THEN 1. TRAP7 1 /NO. ERROR JA ACOS /AND RETURN. / / / ACOSEQ, FLDA FPPPI2 /RETURN PI OVER 2 IF ZERO. JA ACOS /AND RETURN NOW. / / / / / $ IFREF ASIN / / / / / A S I N / - - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / ASINOK, FLDA MCRTP8 /X USES STRAIGHT TRIG RELATION. FNEG FMUL MCRTP8 /-X^2 FADD FPPONE /1.-X^2 JEQ ASINEQ /IF 0,FAC=PI OVER 2 JSA SQRT FSTA MCRTP7 /SQRT(1.-X^2) FLDA MCRTP8 FDIV MCRTP7 /X/SQRT(1.X^2) JSA ATAN /TAKE THE ARCTANGENT. / ASIN, JA . /AND RETURN, BUBBY. / FSTA MCRTP8 /STORE ARG AWAY. JGE .+3 /TAKE ABSOLUTE VALUE. FNEG FSUB FPPONE /SEE IF >1 JLE ASINOK /CONTINUE PROCESS. TRAP7 2 /TRAP OUT. JA ASIN /RETURN. / / ASINEQ, FLDA FPPPI2 /RETURN PI OVER TWO. FMUL MCRTP8 /TIMES ARG. JA ASIN /AND RETURN. / / / / $ IFREF COSD / / / / C O S D / - - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / COSD, JA . /COSINE IN DEGREES. FADD COSD90 /ADD IN 90. FDIV COSD91 /AND FUDGE UP A BIT (PI/180) JSA SIN /TAKE THE SINE NOW. JA COSD /AND RETURN. / / / COSD90, 90. COSD91, 6 3451 3561 / / / / / / $ IFREF SIND / / / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / 6 3451 3561 SIND, JA . /SINE OF ARGUMENT IN DEGREES. FDIV SIND-3 /CONVERT TO RADIANS. JSA SIN /TAKE THE SIN. JA SIND /AND RETURN NOW. / / / $ IFREF TAND / / / / / / T A N D / - - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / / 6 3451 3561 TAND, JA . FDIV TAND-3 /CONVERT TO RADIANS. JSA TAN /CALL THE TANGENT NOW. JA TAND /AND RETURN. / / / $ IFREF TAN / / / / T A N / - - - / / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / THIS IS A PRETTY FEEBLE TANGENT ROUTINE FOR THE PRESENT. / / / TAN, JA . /ENTRY FOR THE TANGENT. JEQ TAN /IF ZERO RETURN NOW. FSTA MCRTP8 /SAVE FOR A SECOND. JSA COS /TAKE THE COSINE NOW. JEQ TANER /COS=0. A NO-NO FSTA MCRTP7 /AND SAVE IT. FLDA MCRTP8 /NOW TAKE THE SINE OF IT. JSA SIN /TAKE THE SINE NOW. FDIV MCRTP7 /DO THE DIVISION. JA TAN /AND RETURN. / / TANER, TRAP7 10 /GIVE THE TRAP INSTRUCTION. JA TAN /AND RETURN. / / / / / / / / / / / $ IFREF COS / / / / C O S / - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / COS, JA . FADD FPPPI2 /ADD IN PI OVER 2. JSA SIN /AND TAKE THE SIN. JA COS /RETURN NOW. / / / / / / $ IFREF ATAN2 / / / / A T A N 2 / - - - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / / ATAN2 TAKES TWO ARGUMENTS. SECOND ARGUMENT DETERMINES THE SIGN. / / / / FLDA MCRTP7 /COMES HERE IF SIGN IS OK. ATAN2, JA . /ENTRY. FSTA MCRTP7 /SAVE FOR A SECOND. FLDA MCRTP1 /RECALL THE QUADRANT. FSTA MCRTP8 /AND MOVE IT TO A SAVE PLACE. FLDA MCRTP7 /RECALL THE TAN. JSA ATAN /TAKE THE ARC-TANGENT OF IT. FSTA MCRTP7 /SAVE IT AWAY. FLDA MCRTP8 /RECALL THE QUADRANT. JGE ATAN2-1 /IF POSITIVE SIGN IS OK. FLDA MCRTP7 /RECALL ARGUMENT. JGE ATAN2A /IF POSITIVE DO FURTHER FUDGE FADD FPPPI /OTHERWISE ADD PI. JA ATAN2 /AND RETURN / ATAN2A, FSUB FPPPI /THIRD QUADRANT. SUBTRACT PI. JA ATAN2 /AND RETURN. / / / / / / $ IFREF AMOD / / / / A M O D / - - - - / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / / / AMOD(X,Y)=X-INT(X/Y)*Y / / AMOD, JA . /ENTRY FSTA MCRTP8 /SAVE IN A TEMPORARY. FDIV MCRTP1 /DIVIDE BY Y JAL AMODER /TOO BIG. ALN 0 /FIX IT UP NOW. FNORM FMUL MCRTP1 /MULITPLY IT. FNEG /NEGATE IT. FADD MCRTP8 /AND ADD IN X. JA AMOD /AND RETURN. / / AMODER, TRAP7 11 /GIVE THERROR. JA AMOD /AND RETURN. / / / $ IFREF SIGN / / / / / S I G N / - - - - / / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / SIGN RETURNS -1,0,+1 DEPENDING ON WHETHER / INPUT ARGUMENT IS <0, =0, >0 / / / FLDA FPPONE /GREATER THEN ZERO. SIGN, JA . /ENTRY AND RETURN. JEQ SIGN /IF ZERO RETURN. JGE SIGN-2 /IF POSTIVE GIVE A +1. FLDA .+4 /GIE THE MINUS 1. JA SIGN 1 6000 0 / / / / $ IFREF CRLF / / / / / / / C R L F / - - - - / / / / / / / COPYRIGHT 1971 / DIGITAL EQUIPMENT CORPORATION / 146 MAIN STREET, / MAYNARD, MASSACHUSSETTS. / 01754 / / / / WRITTEN BY JACK BURNESS. / / / / / / / / / / / / / / / CRLF, JA . FLDA CRLFPT FSTA MCRTPB JSA PUTSTR JA CRLF / / 2 215 CRLFPT, 212 JA CRLFPT-2 / / / / $ CHAIN "FPPLB2S"1