c fasttt - output to console terminal directly through i/o page
c
c
c	date of   first   version:  21-Jun-83
c
c	programmer:  Matt Prucka
c
c******************************************************************
      subroutine fasttt(buf)
      byte dc1,dc3,buf(1),ctrlc
      integer ttrs,ttrb,ttts,tttb,ttrcsr,tttcsr,i,cntrl
      data dc1,dc3/17,19/,ctrlc/3/
c Set up I/O register addresses for terminal.
      ttrs=ispy("304)
      ttrb=ispy("306)
      ttts=ispy("310)
      tttb=ispy("312)
c Disable interrupts.
      call ipoke(ttrs,0)
      call ipoke(ttts,0)
      i=1
      cntrl=1
c     while
23000 if(.not.(buf(i).ne.0))goto 23001
c output bytes from buffer to console
         if(.not.((ipeek(ttrs) .and. "200).ne.0))goto 23002
            char=ipeekb(ttrb) .and. "177
            if(.not.(char.eq.dc1))goto 23004
               cntrl=1
               goto 23005
c           else
23004          continue
               if(.not.(char.eq.dc3))goto 23006
                  cntrl=0
                  goto 23007
c              else
23006             continue
                  if(.not.(char.eq.ctrlc))goto 23008
                     goto 23001
23008             continue
23007          continue
23005       continue
23002    continue
         if(.not.(cntrl.eq.1))goto 23010
c           while
23012       if(.not.((ipeek(ttts).and."200).eq.0))goto 23013
               goto 23012
c           endwhile
23013       continue
            call ipokeb(tttb,buf(i))
            i=i+1
23010    continue
         goto 23000
c     endwhile
23001 continue
c Restore transmit status
      char=ipeekb(ttrb) .and. "177
      call ipoke(ttrs,"100)
      char=ipeekb(ttrb) .and. "177
      call ipoke(ttts,"200)
      return
      end
