	SUBROUTINE DOT(N, FILE, X, Y)
C************************************************************
C
C  THIS ROUTINE INSERTS AN ENABLED DOT AT USER (X, Y)
C  A CALL TO DOT INSERTS AN INVISIBLE VECTOR TO THE
C  POINT (X, Y) FOLLOWED BY A RELATIVE POINT
C
C  POSSIBLE ERRORS:
C	NONE
C
C  ROUTINES CALLED:
C	MOVE   - AN INVISIBLE VECTOR
C	SETGM  - RETURNS AN S.G.M. INSTRUCTION
C	ADWORD - ADDS A WORD TO THE DISPLAY FILE
C
C************************************************************
	IMPLICIT INTEGER (A - W, Z)
	INTEGER FILE(N)
	REAL USERX, USERY
	LOGICAL LP, BLINK
	COMMON /MODBLK/ MODE, INT, LP, BLINK, LINE, OLDSGM
	COMMON /SCLBLK/ XMIN, YMIN, XMAX, YMAX, BEAMX, BEAMY

	BEAMX = FILE(2)
	BEAMY = FILE(3)
	OLDSGM = FILE(4)
	XX = USERX(IPHYSX(X) - 1)
	YY = USERY(IPHYSY(Y) - 1)
	CALL MOVE(N, FILE, XX, YY)
	MODE = "6
	OLDSGM = SETGM(MODE, INT, LP, BLINK, LINE)
	CALL ADWORD(N, FILE, OLDSGM)
	CALL ADWORD(N, FILE, "40201)
	BEAMX = BEAMX + 1
	BEAMY = BEAMY + 1
	FILE(2) = BEAMX
	FILE(3) = BEAMY
	FILE(4) = OLDSGM
	RETURN
	END
