; Pulsed modem driver (RTS)                        Version 0.02, 14-Mar-1991
; (c) 1990/1991 Hugo Fiennes

modem_initialise ()
  {
  port_rts(0)
  port_dtr(0)
  return(1)
  }

modem_shutdown ()
  {
  return(1)
  }

modem_connect ()
  {
  port_dtr(1)
  port_rts(1)
  return(_waitconnect())
  }

modem_disconnect ()
  {
  port_rts(0)
  port_dtr(0)
  }

modem_dial (string number[40],integer how)
  {
  integer a,b,oldtx=port_txspeed(19200)

  port_dtr(1)
  port_rts(1)
  pause(80)

  for a=1 to len(number)
    {
    if (isdigit($mid(number,a,1)))
      {
      extra_rtsdial(val($mid(number,a,1)))
      pause(80)
      }
    }

  port_txspeed(oldtx)
  pause(10)
  return(_waitconnect())
  }

modem_answer ()
  {
  return(1)
  }

modem_errorcontrol (string option[10])
  {
  set(linklevel,none)

  if (comparei(option,"vasscom"))
    {
    set(linklevel,vasscom)
    return
    }

  if (comparei($left(option,3),"mnp"))
    {
    set(linklevel,mnp)
    return
    }
  }

_waitconnect ()
  {
  integer start=time()

  while((time()-start)<modem_carrierwait)
    {
    if (port_dcd()!=0)
      {
      integer gc=time()

      ; Wait for 2 seconds constant carrier
      while((time()-gc)<200 && port_dcd()!=0)
        {
        pause(5)
        }

      if (port_dcd())
        {
        return(0)
        }
      }
    else
      {
      pause(5)
      }
    }
  return(1)
  }
