      SUBROUTINE PLOT( X, Y, IND)
      INCLUDE 'SIZES'
      EXTERNAL xwin
      REAL BSCALE
      INTEGER*2 ATBOND
      COMMON/ DEVICE / ITYPE, ISCRN, KOROFF
      LOGICAL DEBUG, DEBUGL, DEBUGN, DEBUGO, DEBUGP, DEBUGI
      COMMON /DEBCOM/ DEBUG, DEBUGL, DEBUGN, DEBUGO, DEBUGP, DEBUGI
      COMMON /HCPY/ JHDEV
      COMMON /DISPLY/ IREM(200), BSCALE, ATBOND( NUMATM, NUMATM), 
     .                ISTYPE, LATYPE, IMASK( NUMATM), ISCOLO
      INTEGER PIXROW, PIXCOL, PIXEL
      COMMON /TERM/ IMAXR, IMAXC, PIXROW, PIXCOL, PIXEL, LCOUNT, INGRAF,
     .              IXL, IXR, IYT, IYB, NCOLOR, MCOLOR( 64 ), ITTRM,
     .              MARGX, MARGY
* VARIABLES IN COMMON TERM:
*  IMAXR = MAX NUMBER OF ROWS
*  IMAXC = MAX NUMBER OF COLUMNS
*  PIXROW = NUMBER OF PIXELS PER ROW
*  PIXCOL = NUMBER OF PIXELS PER COLUMN
*  PIXEL  = LESSER OF PIXROW OR PIXCOL
*  LCOUNT = NUMBER OF LINES CURRENTLY WRITTEN TO DIALOG AREA
*  INGRAF = 0=> HOST TEXT GOES TO MONITOR SPACE\\ 1=> TEXT TO GRAPHICS
*  IXL    = LEFT MOST VALUE OF X
*  IXR    = RIGHT MOST VALUE OF X
*  IYT    = VALUE OF Y AT TOP OF SCREEN
*  IYB    = VALUE OF Y AT BOTTOM OF SCREEN
*  NCOLOR = NUMBER OF COLORS IN MCOLOR MAP
*  MCOLOR = MAP OF COLORS
*  ITTRM  = UNIQUE MODEL NUMBER OF GENERAL TERMINAL TYPE
*  MARGX  = NUMBER OF PIXELS PADDED TO X-COORDINATE
*  MARGY  = NUMBER OF PIXELS PADDED TO Y-COORDINATE
*
*
C   CODES FOR IND:
C
C     IND = 0   =>  REMOVE ALL GRAPHICS TO QUIT
C     IND = 1   =>  ANY ONE TIME ONLY INITIALIZATION
C     IND = 2   =>  MOVE GRAPHICS TO POINT (X,Y) -- DO NOT DRAW LINE
C     IND = 3   =>  DRAW LINE FROM LAST POINT TO NEW (X,Y)
C     IND = 4   =>  DRAW DARK LINE (ERASES A LINE)
C     IND = 5   =>  DRAW BRIGHT LINE (REGULAR SOLID LINE)
C     IND = 6   =>  INITIALIZE & SET-UP FOR NEXT PICTURE
C     IND = 8   =>  TEMPORARY RELEASE FROM GRAPHICS
C     IND = 9   =>  RETURN TO GRAPHICS FROM TEMP RELEASE
C
*     IND = 99  =>  SET NEW COLOR TO DRAW ( COLOR IS IN X )
*
      IF (DEBUGP) THEN
         WRITE (*,1000) X,Y,IND
1000     FORMAT (1X,'PLOT: X=',F8.3,', Y=',F8.3,'; IND=',I4,'.' )
      ENDIF
*
* SET INDICATOR FOR IN/OUT GRAPHICS
*
      IF ( IND .LT. 0 .OR. (IND.GT.10.AND.IND.NE.99) ) THEN
         WRITE (*,*) 'CODE ERROR IN PLOT'
         RETURN
      ENDIF
*
      XLX = X
      YLY = Y
      LIND = IND
      IF (JHDEV .GT. 0) THEN
         IF ( JHDEV .EQ. 1) THEN
            CALL PTIGER(XLX,YLY,LIND)
         ELSEIF( JHDEV .EQ. 2) THEN
            CALL EPSON(XLX, YLY, LIND)
         ELSEIF( JHDEV .EQ. 3) THEN
            CALL LA50(XLX, YLY, LIND)
         ELSEIF( JHDEV .EQ. 4) THEN
            CALL MPI99(XLX, YLY, LIND)
         ELSEIF( JHDEV .EQ. 5) THEN
            CALL HPPLOT( XLX, YLY, LIND)
         ELSEIF( JHDEV .EQ. 6) THEN
            CALL CAPLOT( XLX, YLY, LIND)
         ELSEIF( JHDEV .EQ. 7) THEN
            CALL X2700( XLX, YLY, LIND)
         ENDIF
         RETURN
      ENDIF


      IF (ITYPE .EQ. 0) THEN
         RETURN
      ELSEIF (ITYPE .EQ. 1) THEN
         CALL TK4025(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 2) THEN
         CALL PRO350(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 3) THEN
C??         CALL TERAK(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 5) THEN
         CALL TK4105(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 6) THEN
         CALL GIGI(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 7) THEN
         CALL RETROG(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 8) THEN
         CALL DEC240(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 9) THEN
         CALL TK4010(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 10) THEN
         CALL HPGL(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 11) THEN
         CALL APCOL(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 12) THEN
         CALL APMON(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 13) THEN
	 CALL BIGCOL(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 14) THEN
	 CALL BIGMON(XLX,YLY,LIND)
      ELSEIF (ITYPE .EQ. 15) THEN
	 CALL xwin(XLX,YLY,LIND)
      ELSE
         WRITE (*,*) 'ERROR in PLOT, ITYPE=',ITYPE,','
      ENDIF
      IF ( IND.EQ.1) ISCOLO = NCOLOR 
      RETURN
      END

      SUBROUTINE DEBUGR( STRING )
      INTEGER PIXROW, PIXCOL, PIXEL
      COMMON /TERM/ IMAXR, IMAXC, PIXROW, PIXCOL, PIXEL, LCOUNT, INGRAF,
     .              IXL, IXR, IYT, IYB, NCOLOR, MCOLOR( 64 ), ITTRM,
     .              MARGX, MARGY
* VARIABLES IN COMMON TERM:
*  IMAXR = MAX NUMBER OF ROWS
*  IMAXC = MAX NUMBER OF COLUMNS
*  PIXROW = NUMBER OF PIXELS PER ROW
*  PIXCOL = NUMBER OF PIXELS PER COLUMN
*  PIXEL  = LESSER OF PIXROW OR PIXCOL
*  LCOUNT = NUMBER OF LINES CURRENTLY WRITTEN TO DIALOG AREA
*  INGRAF = 0=> HOST TEXT GOES TO MONITOR SPACE\\ 1=> TEXT TO GRAPHICS
*  IXL    = LEFT MOST VALUE OF X
*  IXR    = RIGHT MOST VALUE OF X
*  IYT    = VALUE OF Y AT TOP OF SCREEN
*  IYB    = VALUE OF Y AT BOTTOM OF SCREEN
*  NCOLOR = NUMBER OF COLORS IN MCOLOR MAP
*  MCOLOR = MAP OF COLORS
*  ITTRM  = UNIQUE MODEL NUMBER OF GENERAL TERMINAL TYPE
*  MARGX  = NUMBER OF PIXELS PADDED TO X-COORDINATE
*  MARGY  = NUMBER OF PIXELS PADDED TO Y-COORDINATE
*
*
      CHARACTER*(*) STRING
*
      ITEMP = MAX( LLENG( STRING ), 1)
      KGRAF = INGRAF
      IF ( KGRAF .NE. 0 ) CALL PLOT( 0, 0, 8)
      WRITE ( *, '( 1X, A )' ) STRING( 1: ITEMP)
      IF ( KGRAF .NE. 0 ) CALL PLOT( 0, 0, 9)
*
      RETURN
      END
