      SUBROUTINE PLOT (X,Y,NEW)                                         PLOT001 

      COMMON /PLT/ XMIN0,XMAX0,YMIN0,YMAX0,RESET                        PLOT002 

      COMMON /DD/ INT,IOR,IT,IS,IC,ICC,IX,IY                            PLOT003 

      DATA (INITAL=1),(MINX=0),(MINY=0),(MAXX=1023),(MAXY=1023),        PLOT004 

     1 (MINX0=23),(MINY0=23),(MAXX0=1023),(MAXY0=1023)                  PLOT005 

C                                                                       PLOT006 

C          INITIALIZE LIBRARY PLOTTING ROUTINES                         PLOT007 

      IF (INITAL.EQ.0) GO TO 1                                          PLOT008 

      INITAL=0                                                          PLOT009 

      CALL DDINIT (1,1H )                                               PLOT010 

C                                                                       PLOT011 

C          COMPUTE SCALE FACTORS                                        PLOT012 

    1 IF (RESET.EQ.0.) GO TO 5                                          PLOT013 

      RESET=0.                                                          PLOT014 

      XSCALE=(MAXX0-MINX0)/(XMAX0-XMIN0)                                PLOT015 

      YSCALE=(MAXY0-MINY0)/(YMAX0-YMIN0)                                PLOT016 

      XMIN=XMIN0-(MINX0-MINX)/XSCALE                                    PLOT017 

      YMIN=YMIN0-(MINY0-MINY)/YSCALE                                    PLOT018 

      XMAX=XMAX0+(MAXX-MAXX0)/XSCALE                                    PLOT019 

      YMAX=YMAX0+(MAXY-MAXY0)/YSCALE                                    PLOT020 

C                                                                       PLOT021 

C          START A NEW LINE                                             PLOT022 

    5 IF (NEW.EQ.0) GO TO 10                                            PLOT023 

      IX=MINX0+(X-XMIN0)*XSCALE                                         PLOT024 

      IY=MINY0+(Y-YMIN0)*YSCALE                                         PLOT025 

      IF (IX.GE.MINX.AND.IX.LE.MAXX.AND.IY.GE.MINY.AND.IY.LE.MAXY)      PLOT026 

     1 CALL DDBP                                                        PLOT027 

      GO TO 50                                                          PLOT028 

C                                                                       PLOT029 

C          HORIZONTAL DISPLACEMENT                                      PLOT030 

   10 XS=X-XOLD                                                         PLOT031 

      YS=Y-YOLD                                                         PLOT032 

      IF (XS) 11,12,16                                                  PLOT033 

C          NEGATIVE                                                     PLOT034 

   11 X1=XMAX                                                           PLOT035 

      X2=XMIN                                                           PLOT036 

      GO TO 20                                                          PLOT037 

C          ZERO                                                         PLOT038 

   12 IF (YS) 13,50,14                                                  PLOT039 

   13 S1=(YMAX-YOLD)/YS                                                 PLOT040 

      S2=(YMIN-YOLD)/YS                                                 PLOT041 

      GO TO 40                                                          PLOT042 

   14 S1=(YMIN-YOLD)/YS                                                 PLOT043 

      S2=(YMAX-YOLD)/YS                                                 PLOT044 

      GO TO 40                                                          PLOT045 

C          POSITIVE                                                     PLOT046 

   16 X1=XMIN                                                           PLOT047 

      X2=XMAX                                                           PLOT048 

C                                                                       PLOT049 

C          VERTICAL DISPLACEMENT                                        PLOT050 

   20 IF (YS) 21,22,26                                                  PLOT051 

C          NEGATIVE                                                     PLOT052 

   21 Y1=YMAX                                                           PLOT053 

      Y2=YMIN                                                           PLOT054 

      GO TO 30                                                          PLOT055 

C          ZERO                                                         PLOT056 

   22 S1=(X1-XOLD)/XS                                                   PLOT057 

      S2=(X2-XOLD)/XS                                                   PLOT058 

      GO TO 40                                                          PLOT059 

C          POSITIVE                                                     PLOT060 

   26 Y1=YMIN                                                           PLOT061 

      Y2=YMAX                                                           PLOT062 

C                                                                       PLOT063 

   30 S1=AMAX1((X1-XOLD)/XS,(Y1-YOLD)/YS)                               PLOT064 

      S2=AMIN1((X2-XOLD)/XS,(Y2-YOLD)/YS)                               PLOT065 

C                                                                       PLOT066 

C          PLOT LINE -- CHECKING FOR BORDER CROSSINGS                   PLOT067 

   40 S=SQRT(XS**2+YS**2)                                               PLOT068 

      IF (S2.LT.0..OR.S*S1-S.GT.0.) GO TO 50                            PLOT069 

      IF (S1.LT.0.) GO TO 42                                            PLOT070 

C          PREVIOUS POINT OFF GRAPH                                     PLOT071 

      IX=MINX0+(XOLD+XS*S1-XMIN0)*XSCALE+0.5                            PLOT072 

      IY=MINY0+(YOLD+YS*S1-YMIN0)*YSCALE+0.5                            PLOT073 

      CALL DDBP                                                         PLOT074 

   42 IF (S*S2-S.GT.0.) GO TO 44                                        PLOT075 

C          CURRENT POINT OFF GRAPH                                      PLOT076 

      IX=MINX0+(XOLD+XS*S2-XMIN0)*XSCALE+0.5                            PLOT077 

      IY=MINY0+(YOLD+YS*S2-YMIN0)*YSCALE+0.5                            PLOT078 

      CALL DDVC                                                         PLOT079 

      GO TO 50                                                          PLOT080 

C          CURRENT POINT ON GRAPH                                       PLOT081 

   44 IX=MINX0+(X-XMIN0)*XSCALE+0.5                                     PLOT082 

      IY=MINY0+(Y-YMIN0)*YSCALE+0.5                                     PLOT083 

      CALL DDVC                                                         PLOT084 

C                                                                       PLOT085 

C          EXIT ROUTINE                                                 PLOT086 

   50 XOLD=X                                                            PLOT087 

      YOLD=Y                                                            PLOT088 

      RETURN                                                            PLOT089 

C                                                                       PLOT090 

C          TERMINATE THE CURRENT PLOT                                   PLOT091 

      ENTRY PLTEND                                                      PLOT092 

      CALL DDFR                                                         PLOT093 

      RETURN                                                            PLOT094 

         END                                                            PLOT 95-

