| 1 | / |
| 2 | / |
| 3 | / |
| 4 | / D A T A N 2 |
| 5 | / - - - - - - |
| 6 | / |
| 7 | /SUBROUTINE DATAN2(Y,X) |
| 8 | / |
| 9 | / VERSION 5A 4-27-77 PT |
| 10 | / |
| 11 | SECT DATAN2 |
| 12 | JA #DATN2 |
| 13 | DPCHK |
| 14 | TEXT +DATAN2+ |
| 15 | ATN2XR, SETX XRATN2 |
| 16 | SETB BPATN2 |
| 17 | BPATN2, FNOP |
| 18 | 0 |
| 19 | 0 |
| 20 | XRATN2, F 0.0 |
| 21 | YCOR, F 0.0 |
| 22 | 0;0;0 |
| 23 | XCOR, F 0.0 |
| 24 | 0;0;0 |
| 25 | ORG 10*3+BPATN2 |
| 26 | FNOP |
| 27 | JA ATN2XR |
| 28 | 0 |
| 29 | AT2RTN, JA . |
| 30 | FPIAT2, 2 |
| 31 | 3110 /PI |
| 32 | 3755 |
| 33 | 2421 |
| 34 | 0264 |
| 35 | 3016 |
| 36 | ATPI, 0001 |
| 37 | 3110 /PI/2 |
| 38 | 3755 |
| 39 | 2421 |
| 40 | 0264 |
| 41 | 3016 |
| 42 | BASE 0 |
| 43 | #DATN2, STARTD |
| 44 | FLDA 10*3 |
| 45 | FSTA AT2RTN |
| 46 | FLDA 0 |
| 47 | SETX XRATN2 |
| 48 | SETB BPATN2 |
| 49 | BASE BPATN2 |
| 50 | LDX 1,1 |
| 51 | FSTA BPATN2 |
| 52 | FLDA% BPATN2,1 /ADDR OF Y |
| 53 | FSTA YCOR |
| 54 | FLDA% BPATN2,1+ /ADDR OF X |
| 55 | FSTA XCOR |
| 56 | STARTE |
| 57 | FLDA% YCOR |
| 58 | FSTA YCOR /SAVE FOR A SECOND |
| 59 | LDX 1,2 /POSITIVE Y |
| 60 | JEQ ATN0 |
| 61 | JGT ATN1 |
| 62 | LDX 0,2 |
| 63 | ATN1, FLDA% XCOR /GET X - THE QUADRAND |
| 64 | FSTA XCOR /+MOVE IT TO A SAFE PLACE |
| 65 | JEQ ATASP |
| 66 | FLDA YCOR /Y/X |
| 67 | FDIV XCOR |
| 68 | FSTA YCOR |
| 69 | EXTERN DATAN |
| 70 | JSR DATAN /CALL ATAN |
| 71 | JA .+4 /TAKE ARCTAN OF Y/X |
| 72 | JA YCOR |
| 73 | FSTA YCOR /SAVE IT AWAY |
| 74 | JGE A2 /SKIP IF 1ST OR 3RD QUADS |
| 75 | FADD FPIAT2 /ADD PI FOR 4TH QUAD |
| 76 | FSTA YCOR |
| 77 | A2, JXN AT2RTN,2 /DONE IF 1 OR 4 Q |
| 78 | FLDA YCOR |
| 79 | FSUB FPIAT2 /2ND OR 3RD Q |
| 80 | JA AT2RTN |
| 81 | ATASP, FLDA ATPI /PI/2 |
| 82 | JXN ATNG,2 |
| 83 | FNEG |
| 84 | ATNG, JA AT2RTN |
| 85 | ATN0, FLDA% XCOR |
| 86 | JLT POSX |
| 87 | FCLA /X POS, ANS =0 |
| 88 | JA AT2RTN |
| 89 | POSX, FLDA FPIAT2 /X LT 0, ANS = PI |
| 90 | JA AT2RTN |
| 91 | \f |