      Subroutine Tmtype(Iterm)
c
      Integer*2 Ichr,Len
      Character*5 Getpos
      Byte Ichar
      Equivalence (Ichr,Ichar)
      Dimension Idata(10,3),Inum(3),Ivalue(20)
      Data Idata/62,1,2,3,4,6,7,8,0,0,        ! VT 240 Regis Terminal
     $           62,1,2,6,7,8,9,0,0,0,        ! HDS 2200GX Terminal
     $            1,2,0,0,0,0,0,0,0,0/        ! Tektronix 4111
      Data Inum/8,7,2/
c
      Common/Tmdata/TmDvTy,TmGrSt,TmGrOf,TmGrCl,TmGrOn,
     $              CrHrOn,CrHrOf
      Character*20  TmDvTy,TmGrSt,TmGrOf,TmGrCl,TmGrOn,CrHrOn,CrHrOf
c
      Call Ipoke("44,"10040 .OR. Ipeek("44))
c
c           Set the echo to off, and single character activation
c
      Write(5,150) 29,'F',29,'S'
150   Format('+',1A1,$)
c
      Write(5,175) 27
175   Format('+',1A1,'[c',$)
      Nvals = 0
c
 10   Continue
      Ichr = Ittinr()
      If (Ichar .NE. '?') Go To 10
c
c              Get the value of the number
c
 20   Continue
      Ival = 0
      Nvals = Nvals + 1
 30   Continue
      Ichr = Ittinr()
      If (Ichar .NE. ';' .AND. Ichar .NE. 'c') Then
         Ival = Ival * 10 + Ichr - 48
         Go To 30
      End If
      Ivalue(Nvals) = Ival
      If (Ichar .EQ. ';') Go To 20
c
c              Compare the Number
c
      Do 50 I=1,3
         If (Inum(I) .NE. Nvals) Go To 50
         Do 40 J=1,Inum(I)
            If (Ivalue(J) .NE. Idata(J,I)) Go To 50
 40      Continue
         Iterm = I
         Return
 50   Continue
c
c                  Set unknown terminal types - VT240 for REGIS,
c                  or Tektronix 4014 type if no Regis
c
      Iterm = 2
      Do 60 I=1,Nvals
         If (Ivalue(I) .EQ. 3) Iterm = 1
 60   Continue
      Return
      End
      Subroutine Tmdvin(Iterm)
c
      Common/Tmdata/TmDvTy,TmGrSt,TmGrOf,TmGrCl,TmGrOn,
     $              CrHrOn,CrHrOf
      Character*20  TmDvTy,TmGrSt,TmGrOf,TmGrCl,TmGrOn,CrHrOn,CrHrOf
c
      Character Esc,Ff,Ctrly,CtrlZ,Ret
      Data Esc,FF,Ret,Ctrly,CtrlZ/27,12,13,25,26/
c
      Do 7 I=1,20
         TmGrCl(I:I) = ' '
         TmGrOf(I:I) = ' '
         TmGrSt(I:I) = ' '
         TmGrOn(I:I) = ' '
         CrHrOn(I:I) = ' '
         CrHrOf(I:I) = ' '
 7    Continue
c
      TmGrCl(2:2) = Esc
      TmGrOf(2:2) = Esc
      TmGrSt(2:2) = Esc
      TmGrOn(2:2) = Esc
      CrHrOn(2:2) = Esc
      CrHrOf(2:2) = Esc
c
      If (Iterm .EQ. 1) Then
         TmDvTy       = 'VT12'
         TmGrCl(3:4)  = '[H'
         TmGrCl(5:5)  = Esc
         TmGrCl(6:7)  = '[J'
         TmGrOf(3:4)  = '/ '
         TmGrOf(5:5)  = Esc
         TmGrOf(6:10) = '[0;0H'
         TmGrSt(3:9)  = 'PpW(V);'
         TmGrOn(3:9)  = 'PpW(V);'
         CrHrOn(3:16) = 'PpW(V)R(P(I));'
         CrHrOf(3:3)  = '/'
         CrHrOf(4:4)  = Esc
         CrHrOf(5:9)  = '[0;0H'
c
      Else If (Iterm .EQ. 2) Then
         TmDvTy        = '4014'
         TmGrOf(3:7)   = '[?38l'
         TmGrCl(3:7)   = '[?38h'
         TmGrCl(8:8)   =  Ctrly
         TmGrCl(9:9)   =  Esc
         TmGrCl(10:13) = '[3/v'
         TmGrCl(14:14) = Esc
         TmGrCl(15:19) = '[?38l'
         TmGrSt(3:7)   = '[?38h'
         TmGrOn(3:6)   = '[0/w'
         CrHrOn(3:6)   = '[0/w'
         CrHrOn(7:7)   = Esc
         CrHrOn(8:8)   = CtrlZ
         CrHrOf(2:2)   = Ret
         CrHrOf(3:3)   = Esc
         CrHrOf(4:8)   ='[?38l'
c
      Else If (Iterm .EQ. 3) Then
         TmDvTy        = '4105'
         TmGrSt(3:5)   = '%!0'
         TmGrOn(3:5)   = '%!0'
         TmGrCl(3:5)   = '%!0'
         TmGrCl(6:6)   = Esc
         TmGrCl(7:7)   = Ff
         TmGrCl(8:8)   = Esc
         TmGrCl(9:11)  = '%!1'
         TmGrOf(1:1)   = Esc
         TmGrOf(2:4)   = '%!1'
         CrHrOn(1:1)   = Esc
         CrHrOn(2:4)   = '%!0'
         CrHrOn(5:5)   = Esc
         CrHrOn(6:6)   = CtrlZ
         CrHrOf(1:1)   = Ret
         CrHrOf(2:2)   = Esc
         CrHrOf(3:5)   = '%!1'
c
         Write(5,300) 27,27,27,27,27
300      Format(1X,1A1,'%!0 ',1A1,'LCH4 ',1A1,'LLC0 ',
     $             1A1,'LV1 ',1A1,'%!1',$)
c
      End If
c
      Return
      End
      Subroutine Vertlg(Ypos,N,Ylen,Ratio)
c
      If (N .EQ. 1) Then
         Ypos = Ypos + Ylen - Ylen * Ratio
      Else If (N .EQ. 3) Then
         Ypos = Ypos + Ylen - Ylen * Ratio
      Else If (N .EQ. 5) Then
         Ypos = Ypos + Ylen/2.0 - Ylen/2.0 * Ratio
      Else If (N .EQ. 6) Then
         Ypos = Ypos + Ylen/2.0 - Ylen/2.0 * Ratio
      Else If (N .EQ. 7) Then
         Ypos = Ypos + Ylen/2.0 - Ylen/2.0 * Ratio
      Else If (N .EQ. 8) Then
         Ypos = Ypos + Ylen - Ylen * Ratio
      End If
c
      Ylen = Ylen * Ratio
c
      Return
      End
