DARC     V02L00 73  8  1130 DPS (1130-CX-14X) V02M00 2-28-69            DARC   *
// JOB                                                                  DARC0010
// FOR                                                                  DARC0040
*LIST ALL                                                               DARC0050
** DARC - PLOT ARCS AND SPIRALS                                         DARC0060
      SUBROUTINEDARC(T,R,X,Y,K,I,D)                                     DARC0070
C     IT DRAWS CIRCULAR AND SPIRAL SEGMENTS                             DARC0080
C     T(1) = THE ANGLE AT THE BEGINNING OF THE ARC IN RADIANS           DARC0090
C     T(2) = THE ANGLE AT THE END OF THE ARC IN RADIANS                 DARC0100
C     R(1) = THE RADIUS IN INCHES AT THE BEGINNING OF THE ARC           DARC0110
C     R(2) = THE RADIUS IN INCHES AT THE END OF THE ARC                 DARC0120
C     X(1) = THE CENTER X COORDINATE IN HUNDREDTHS OF AN INCH           DARC0130
C     X(2) = THE MINIMUM ALLOWABLE X COORDINATE IN HUNDREDTHS OF INCHES DARC0140
C     X(3) = THE MAXIMUM ALLOWABLE X COORDINATE                         DARC0150
C     Y(1) = THE CENTER Y COORDINATE IN HUNDREDTHS OF AN INCH           DARC0160
C     Y(2) = THE MINIMUM Y COORDINATE                                   DARC0170
C     Y(3) = THE MAXIMUM Y COORDINATE                                   DARC0180
C     K(1) = XTARGET                                                    DARC0190
C     K(2) = XPRESENT                                                   DARC0200
C     K(3) = YTARGET                                                    DARC0210
C     K(4) = YPRESENT                                                   DARC0220
C     K(5) = PEN CONTROL 0= PEN DOWN  1= PEN UP                         DARC0230
      DIMENSIONT(2) ,R(2) ,X(3) ,Y(3) ,K(5) ,I(2) ,D(6)                 DARC0240
      DIMENSION KN(5)                                                   DARC0245
      EQUIVALENCE (K1,KN(1)),(K2,KN(2)),(K3,KN(3)),(K4,KN(4)),(K5,KN(5))DARC0248
C     I(1) = NUMBER OF CYCLES IN LINE DRAWING ROUTINE (ZERO FOR SOLID)  DARC0250
C     I(2) = PRESENT POSITION WITHIN CYCLE (LAST DASH PLOTTED)          DARC0260
C     D(1) TO D(6) DASH LENGTHS OF DASH CYCLE                           DARC0270
      T1=T(1)                                                           DARC0271
      T2=T(2)                                                           DARC0272
      R1=R(1)                                                           DARC0273
      R2=R(2)                                                           DARC0274
      K2=K(2)                                                           DARC0276
      K4=K(4)                                                           DARC0278
      K5=K(5)                                                           DARC0279
      I2=I(2)                                                           DARC0280
C     IS THETA UNCHANGING                                               DARC0281
      TINC=T2-T1                                                        DARC0285
      RINC=R1-R2                                                        DARC0288
      IF(TINC)10,5,10                                                   DARC0290
    5 AC = 0.                                                           DARC0300
      TINC = 0.                                                         DARC0310
      GOTO 15                                                           DARC0330
C     FIND AVERAGE CIRCUMFERENCE IN .01 HUNDREDTHS                      DARC0340
   10 AC=(R1+R2)*ABS(TINC)*.5                                           DARC0350
C     CALCULATE THETA CHANGE PER .01 CIRCUMFERENCE CHANGE               DARC0360
      TINC=TINC/AC                                                      DARC0370
C     CALCULATE RADIUS CHANGE PER .01 CIRCUMFERENCE CHANGE              DARC0380
      RINC=-RINC/AC                                                     DARC0390
C     SET STARTING COORDINATES                                          DARC0400
   15 RX=R1                                                             DARC0410
      TX=T1                                                             DARC0420
C     NUMBER OF PLOT CYCLES = AVERAGE CIRCUMFERENCE                     DARC0430
      JK=2                                                              DARC0435
      N = AC                                                            DARC0440
      J = 1                                                             DARC0450
      GOTO 50                                                           DARC0460
C     ARE WE AT ARC START                                               DARC0470
   20 IF(K1-K2)55,25,55                                                 DARC0480
   25 IF(K3-K4)55,81,55                                                 DARC0490
   45 K(1)=K1                                                           DARC0605
      K(2)=K2                                                           DARC0606
      K(3)=K3                                                           DARC0607
      K(4)=K4                                                           DARC0608
      K(5)=K5                                                           DARC0609
      I(2)=I2                                                           DARC0610
      RETURN                                                            DARC0611
   35 DO 40 L=1,N                                                       DARC0612
      J = 2                                                             DARC0613
      GO TO 50                                                          DARC0615
   40 S = S - 1.                                                        DARC0617
C     DRAW FINAL SEGMENT                                                DARC0618
      J = 3                                                             DARC0619
      TX=T2                                                             DARC0620
      RX=R2                                                             DARC0621
C     COMPUTE NEW COORDINATES                                           DARC0625
   50 K1=RX*COS(TX)+X(1)+.5                                             DARC0630
      K3=RX*SIN(TX)+Y(1)+.5                                             DARC0640
      GOTO(20,90,90),J                                                  DARC0650
C     EXECUTE MOVE                                                      DARC0660
   55 CALL UP(K5)                                                       DARC0680
C     CHECK FOR POINT OFF GRID                                          DARC0690
   60 XT=K1                                                             DARC0700
      YT=K3                                                             DARC0710
      IF (XT - X(2))145,65,65                                           DARC0720
   65 IF (YT - Y(2))145,70,70                                           DARC0730
   70 IF (XT - X(3)) 75,75,145                                          DARC0740
   75 IF (YT - Y(3)) 80,80,145                                          DARC0750
   80 CALL DRAW(KN)                                                     DARC0760
      GO TO(85,81),JK                                                   DARC0762
   81 CALL DOWN(K5)                                                     DARC0765
      JK=1                                                              DARC0767
C     INCREMENT RADIUS AND THETA                                        DARC0770
   85 RX = RX + RINC                                                    DARC0780
      TX = TX + TINC                                                    DARC0790
      GOTO(105,40,45),J                                                 DARC0800
  105 S = 0.                                                            DARC0805
C     PEN STATUS CONTROL                                                DARC0810
C     IS DASHED LINE REQUIRED                                           DARC0820
   90 IF(I(1))135,135,100                                               DARC0830
  100 IF (S) 110,110,135                                                DARC0850
  110 IF(I2-I(1))115,140,140                                            DARC0870
  115 I2=I2+1                                                           DARC0880
C     FIND DASH POSITION                                                DARC0890
  120 M=I2                                                              DARC0900
C     FIND DASH LENGTH                                                  DARC0910
      S = D(M)                                                          DARC0920
      GOTO(125,130,125,130,125,130),M                                   DARC0930
  125 CALL DOWN(K5)                                                     DARC0940
      GOTO 135                                                          DARC0950
  130 CALL UP(K5)                                                       DARC0960
  135 GOTO(35,60,60),J                                                  DARC0970
  140 I2=1                                                              DARC0980
      GOTO 120                                                          DARC0990
  145 CALL UP(K5)                                                       DARC0995
      JK=2                                                              DARC0996
      GO TO 85                                                          DARC0998
      END                                                               DARC1000
// DUP                                                                  DARC1010
*DELETE             DARC                                                DARC1012
*DUMP       WS  CD  DARC                                                DARC1015
*STORE      WS  UA  DARC                                                DARC1020
