software: Added more and more
[pdp8.git] / sw / f4 / FRTSRC / datan2.ra
diff --git a/sw/f4/FRTSRC/datan2.ra b/sw/f4/FRTSRC/datan2.ra
new file mode 100644 (file)
index 0000000..7ebae2c
--- /dev/null
@@ -0,0 +1,91 @@
+/
+/
+/
+/      D  A  T  A  N  2
+/      -  -  -  -  -  -
+/
+/SUBROUTINE    DATAN2(Y,X)
+/
+/ VERSION 5A 4-27-77  PT
+/
+       SECT    DATAN2
+       JA      #DATN2
+       DPCHK
+       TEXT    +DATAN2+
+ATN2XR,        SETX    XRATN2
+       SETB    BPATN2
+BPATN2,        FNOP
+       0
+       0
+XRATN2,        F 0.0
+YCOR,  F 0.0
+       0;0;0
+XCOR,  F 0.0
+       0;0;0
+       ORG     10*3+BPATN2
+       FNOP
+       JA      ATN2XR
+       0
+AT2RTN,        JA      .
+FPIAT2,        2
+       3110            /PI
+       3755
+       2421
+       0264
+       3016
+ATPI,  0001
+       3110            /PI/2
+       3755
+       2421
+       0264
+       3016
+       BASE    0
+#DATN2,        STARTD
+       FLDA    10*3
+       FSTA    AT2RTN
+       FLDA    0
+       SETX    XRATN2
+       SETB    BPATN2
+       BASE    BPATN2
+       LDX     1,1
+       FSTA    BPATN2
+       FLDA%   BPATN2,1        /ADDR OF Y
+       FSTA    YCOR
+       FLDA%   BPATN2,1+       /ADDR OF X
+       FSTA    XCOR
+       STARTE
+       FLDA%   YCOR
+       FSTA    YCOR            /SAVE FOR A SECOND
+       LDX     1,2             /POSITIVE Y
+       JEQ     ATN0
+       JGT     ATN1
+       LDX     0,2
+ATN1,  FLDA%   XCOR            /GET X - THE QUADRAND
+       FSTA    XCOR            /+MOVE IT TO A SAFE PLACE
+       JEQ     ATASP
+       FLDA    YCOR            /Y/X
+       FDIV    XCOR
+       FSTA    YCOR
+       EXTERN  DATAN
+       JSR     DATAN           /CALL ATAN
+       JA      .+4             /TAKE ARCTAN OF Y/X
+       JA      YCOR
+       FSTA    YCOR            /SAVE IT AWAY
+       JGE     A2              /SKIP IF 1ST OR 3RD QUADS
+       FADD    FPIAT2          /ADD PI FOR 4TH QUAD
+       FSTA    YCOR
+A2,    JXN     AT2RTN,2        /DONE IF 1 OR 4 Q
+       FLDA    YCOR
+       FSUB    FPIAT2          /2ND OR 3RD Q
+       JA      AT2RTN
+ATASP, FLDA    ATPI            /PI/2
+       JXN     ATNG,2
+       FNEG
+ATNG,  JA      AT2RTN
+ATN0,  FLDA%   XCOR
+       JLT     POSX
+       FCLA                    /X POS, ANS =0
+       JA      AT2RTN
+POSX,  FLDA    FPIAT2          /X LT 0, ANS = PI
+       JA      AT2RTN
+\f