        SUBROUTINE MAPSML(XLOW,XHIGH,YLOW,YHIGH,XLAB,YLAB,TITLE,IAXES)
C
C       Cut down version of MAPIT for those users who only need MAPIT to do
C       simple things.
C
C       The following options have been commented out:
C
C       OPTION          COMMENT CHARS           ADDED LINE CMNT CHARS
C       ------          -------------           ---------------------
C       GRID LINES              CC                      !!
C       LOG AXES                CCC                     !!!
C       BOXED PLOT              CCCC                    !!!!
C
CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC
C
	IMPLICIT NONE
	REAL*4 XLOW,XHIGH,YLOW,YHIGH
	INTEGER IAXES
        INCLUDE DIGLIB$KOM:PLTCOM.PRM
        INCLUDE DIGLIB$KOM:PLTSIZ.PRM
        INCLUDE DIGLIB$KOM:PLTCLP.PRM
        INCLUDE DIGLIB$KOM:PLTPRM.PRM
C
        EXTERNAL LEN
	INTEGER LEN
	INTEGER NUMTK,MXLAB,N,IYPWR,ILABSZ,IXPWR
	REAL*4 XTMIN,YTMIN,TENEXP,X,TICKSP,TCKSGN,VX,VY,Y
	REAL*4 YTICK,XTICK,XTMAX,YTMAX,LN
        CHARACTER*1 XLAB(2), YLAB(2), TITLE(2)
        CHARACTER*1 NUMBR(14)
        LOGICAL*1 LOGXX, LOGYY, LRMTEX, LSHORT, LRAGGD
	INTEGER*1 IAND
CCC     LOGICAL*1 LOGT
CCC     DIMENSION ZLOG(8)
C
CCC     DATA ZLOG /0.3010, 0.4771, 0.6021, 0.6990, 0.7782, 0.8451,
CCC     1   0.9031, 0.9542 /
CCC     DATA TMINLD /0.1/       !MINIMUM DISTANCE BETWEEN SHORT TICKS (1 MM)
CCC     DATA SHORTF /2.0/       !SHORT TICKS = TICKLN/SHORTF
C
C
C       SET LOGX AND LOGY TO FALSE FOR OUR USAGE OF SCALE
C
        LOGX = .FALSE.
        LOGY = .FALSE.
C
C       SEE WHAT TYPE OF AXES ARE DESIRED
C
CCC     LOGXX = IAND(IAXES,1) .NE. 0
CCC     LOGYY = IAND(IAXES,2) .NE. 0
        LRAGGD = IAND(IAXES,256) .NE. 0
C
C       DO THE AXES SCALING
C
        NUMTK = MIN0(10,INT(XVLEN/((ILABSZ()+1.0)*CXSIZE)))
CCC     IF (LOGXX) GO TO 20
        LSHORT = IAND(IAXES,16) .NE. 0
        CALL AXIS(XLOW,XHIGH,NUMTK,LSHORT,LRAGGD,XMIN,XMAX,XTMIN,XTMAX,
     1   XTICK,IXPWR)
CCC     GO TO 40
CCC20   CALL LAXIS(XLOW,XHIGH,NUMTK,XMIN,XMAX,XTICK)
CCC     XTMIN = XMIN
CCC     XTMAX = XMAX
CCC     IXPWR = 0
CCC40   CONTINUE
        NUMTK = MIN0(10,INT(YVLEN/(3.0*CYSIZE)))
CCC     IF (LOGYY) GO TO 60
        LSHORT = IAND(IAXES,32) .NE. 0
        CALL AXIS(YLOW,YHIGH,NUMTK,LSHORT,LRAGGD,YMIN,YMAX,YTMIN,YTMAX,
     1   YTICK,IYPWR)
CCC     GO TO 80
CCC60   CALL LAXIS(YLOW,YHIGH,NUMTK,YMIN,YMAX,YTICK)
CCC     YTMIN = YMIN
CCC     YTMAX = YMAX
CCC     IYPWR = 0
CCC80   CONTINUE
C
C       SET UP TEMPORARY SCALING FACTORS
C
        UX0 = XMIN
        UDX = XMAX - XMIN
        UY0 = YMIN
        UDY = YMAX - YMIN
C
C       ********** DRAW Y AXES **********
C
        CALL GSSETC(CYSIZE,0.0)
CCC     LOGT = .FALSE.
CCC     IF (.NOT. LOGYY .OR. YTICK .NE. 1.0) GO TO 90
CCC     CALL SCALE(XMIN,YMIN,VX,TEMP)
CCC     CALL SCALE(XMIN,YMIN+1.0-ZLOG(8),VX,VY)
CCC     IF ((VY-TEMP) .GE. TMINLD) LOGT = .TRUE.
CCC90   CONTINUE
C
C       DRAW Y AXIS LINE
C
        MXLAB = 3
        TENEXP = 10.0**IYPWR
        X = XMIN
C       TICK SPACING
        TICKSP = AMAX1(0.0,TICKLN)
CCCC    IF (IAND(IAXES,64) .NE. 0) YVLEN = YVLEN - TICKSP
C       TICKS TO LEFT FOR LEFT Y AXIS
        TCKSGN = -TICKLN
100     CONTINUE
        CALL SCALE(X,YMAX,VX,VY)
        CALL GSMOVE(VX,VY)
        CALL SCALE(X,YMIN,VX,VY)
        CALL GSDRAW(VX,VY)
C
C       DRAW AND LABEL Y AXIS TICKS
C
        Y = YTMIN
        N = (YTMAX-YTMIN)/YTICK + 1.1
110     CONTINUE
        CALL SCALE(X,Y*TENEXP,VX,VY)
        CALL GSMOVE(VX,VY)
        CALL GSDRAW(VX+TCKSGN,VY)
CCCC    IF (X .EQ. XMAX) GO TO 185
        IF (IAND(IAXES,1024) .NE. 0) GO TO 183
C
C       PLACE THE APPROPIATE LABEL
C
CCC     IF (LOGYY) GO TO 160
        CALL LINLAB(INT(Y),IYPWR,NUMBR,LRMTEX)
CCC     GO TO 180
CCC160  CALL LOGLAB(INT(Y),NUMBR)
180     LN = LEN(NUMBR)
        MXLAB = MAX0(MXLAB,LN)
        CALL GSMOVE(VX-TICKSP-CXSIZE*(LN+0.25),VY-CYSIZE/2.0)
        CALL GSPSTR(NUMBR)
C
C       ADD GRID LINE AT TICK IF DESIRED
C
183     CONTINUE
CC      IF (IAND(IAXES,8) .EQ. 0) GO TO 185
CC      CALL GSLTYP(3)
CC      CALL GSMOVE(VX,VY)
CC      CALL SCALE(XMAX,Y*TENEXP,VX,VY)
CC      CALL GSDRAW(VX,VY)
CC      CALL GSLTYP(1)
185     CONTINUE
C
C       DO EXTRA TICKING IF EXTRA TICKS WILL BE FAR ENOUGH APART
C
CCC     IF ((.NOT. LOGT) .OR. (Y .EQ. YTMAX)) GO TO 200
CCC     DO 190 J = 1, 8
CCC     CALL SCALE(X,Y+ZLOG(J),VX,VY)
CCC     CALL GSMOVE(VX,VY)
CCC190  CALL GSDRAW(VX+TCKSGN/SHORTF,VY)
200     CONTINUE
        Y = Y + YTICK
        N = N-1
        IF (N .GT. 0) GO TO 110
CCCC    IF (X .EQ. XMAX) GO TO 300
C
C       IF LINEAR AXIS, PLACE REMOTE EXPONENT IF NEEDED
C
CCC     IF (LOGYY .OR. (.NOT. LRMTEX)) GO TO 260
C       !!!INSTEAD OF PREVIOUS LINE
        IF (.NOT. LRMTEX) GO TO 260
C
        IF (IAND(IAXES,1024) .NE. 0) GO TO 260
        CALL SCALE(XMIN,(YTMIN+YTICK/2.0)*TENEXP,VX,VY)
        CALL SCOPY('E',NUMBR)
        CALL NUMSTR(IYPWR,NUMBR(2))
        CALL GSMOVE(VX-CXSIZE*(LEN(NUMBR)+0.5),VY-CYSIZE/2.0)
        CALL GSPSTR(NUMBR)
C
C       NOW PLACE Y LABLE
C
260     CALL SCALE(XMIN,(YMIN+YMAX)/2.0,VX,VY)
        CALL GSMOVE(VX-(MXLAB+0.25)*CXSIZE-TICKSP-CYSIZE,
     1   VY-CXSIZE*LEN(YLAB)/2.0)
        CALL GSSETC(CYSIZE,90.0)
        CALL GSPSTR(YLAB)
        CALL GSSETC(CYSIZE,0.0)
CCCC    IF (IAND(IAXES,128) .EQ. 0) GO TO 300
CCCC    X = XMAX
CCCC    TCKSGN = TICKLN
CCCC    GO TO 100
300     CONTINUE
C
C       ********** DRAW X AXIS **********
C
CCC     LOGT = .FALSE.
CCC     IF (.NOT. LOGXX .OR. XTICK .NE. 1.0) GO TO 310
CCC     CALL SCALE(XMIN,YMIN,TEMP,VY)
CCC     CALL SCALE(XMIN+1.0-ZLOG(8),YMIN,VX,VY)
CCC     IF ((VX-TEMP) .GE. TMINLD) LOGT = .TRUE.
CCC310  CONTINUE
C
C       DRAW X AXIS LINE
C
        Y = YMIN
        TCKSGN = -TICKLN
        TENEXP = 10.0**IXPWR
C       TICK SPACING
        TICKSP = AMAX1(0.5*CYSIZE,TICKLN)
320     CONTINUE
        CALL SCALE(XMIN,Y,VX,VY)
        CALL GSMOVE(VX,VY)
        CALL SCALE(XMAX,Y,VX,VY)
        CALL GSDRAW(VX,VY)
C
C       DRAW AND LABEL X AXIS TICKS
C
        X = XTMIN
        N = (XTMAX-XTMIN)/XTICK + 1.1
400     CONTINUE
        CALL SCALE(X*TENEXP,Y,VX,VY)
        CALL GSMOVE(VX,VY)
        CALL GSDRAW(VX,VY+TCKSGN)
CCCC    IF (Y .EQ. YMAX) GO TO 430
        IF (IAND(IAXES,512) .NE. 0) GO TO 423
CCC     IF (LOGXX) GO TO 410
        CALL LINLAB(INT(X),IXPWR,NUMBR,LRMTEX)
CCC     GO TO 420
CCC410  CALL LOGLAB(INT(X),NUMBR)
420     CALL GSMOVE(VX-CXSIZE*LEN(NUMBR)/2.0,VY-TICKSP-1.5*CYSIZE)
        CALL GSPSTR(NUMBR)
C
C       ADD GRID LINE AT TICK IF DESIRED
C
423     CONTINUE
CC      IF (IAND(IAXES,4) .EQ. 0) GO TO 430
CC      CALL GSLTYP(3)
CC      CALL GSMOVE(VX,VY)
CC      CALL SCALE(X*TENEXP,YMAX,VX,VY)
CC      CALL GSDRAW(VX,VY)
CC      CALL GSLTYP(1)
CC430   CONTINUE
C
C       DO EXTRA TICKING IF EXTRA TICKS WILL BE FAR ENOUGH APART
C
CCC     IF ((.NOT. LOGT) .OR. (X .EQ. XTMAX)) GO TO 490
CCC     DO 450 J = 1, 8
CCC     CALL SCALE(X+ZLOG(J),Y,VX,VY)
CCC     CALL GSMOVE(VX,VY)
CCC     CALL GSDRAW(VX,VY+TCKSGN/SHORTF)
CCC450  CONTINUE
CCC490  CONTINUE
        X = X + XTICK
        N = N-1
        IF (N .GT. 0) GO TO 400
CCCC    IF (Y .EQ. YMAX) GO TO 590
C
C       NOW PLACE REMOTE EXPONENT IF NEEDED ON LINEAR AXIS
C
CCC     IF (LOGXX .OR. (.NOT. LRMTEX)) GO TO 520
C       !!!INSTEAD OF PREVIOUS LINE
        IF (.NOT. LRMTEX) GO TO 520
C
        IF (IAND(IAXES,512) .NE. 0) GO TO 520
        CALL SCALE(XMIN,YMIN,VX,VY)
        CALL SCOPY('E',NUMBR)
        CALL NUMSTR(IXPWR,NUMBR(2))
        CALL GSMOVE(VX+3*CXSIZE,VY-TICKSP-2.75*CYSIZE)
        CALL GSPSTR(NUMBR)
C
C       NOW PLACE X AXIS LABLE
C
520     CALL SCALE((XMIN+XMAX)/2.0,YMIN,VX,VY)
        CALL GSMOVE(VX-CXSIZE*LEN(XLAB)/2.0,VY-TICKSP-4.0*CYSIZE)
        CALL GSPSTR(XLAB)
CCCC    IF (IAND(IAXES,64) .EQ. 0) GO TO 590
CCCC    Y = YMAX
CCCC    TCKSGN = TICKLN
CCCC    GO TO 320
CCCC590 CONTINUE
C
C       ********** PLACE TITLE **********
C
        CALL SCALE((XMIN+XMAX)/2.0,YMAX,VX,VY)
        TCKSGN = 0.0
CCCC    IF (IAND(IAXES,64) .NE. 0) TCKSGN = TICKSP
        CALL GSMOVE(VX-CXSIZE*LEN(TITLE)/2.0,VY+TCKSGN+CYSIZE)
        CALL GSPSTR(TITLE)
C
C       MAKE SURE "PLTCLP" CONTAINS LIMITS PICKED BY MAPIT.   ONLY MAINTAINED
C       FOR CALLERS INFO.
C
CCC     IF (.NOT. LOGXX) GO TO 610
CCC             XMIN = 10.0**XMIN
CCC             XMAX = 10.0**XMAX
CCC610  CONTINUE
CCC     IF (.NOT. LOGYY) GO TO 620
CCC             YMIN = 10.0**YMIN
CCC             YMAX = 10.0**YMAX
CCC620  CONTINUE
C
C       TELL SCALE ABOUT LOG AXIS SCALING NOW
C
CCC     LOGX = LOGXX
CCC     LOGY = LOGYY
        RETURN
        END
