anchor.diff:                  return! read newPos
           }
       Async.StartImmediate (read 0)
  -    newLine.Publish
   
   let fsiStartInfo channelName =
       let procInfo = new ProcessStartInfo()
  
positive.code:     let errW,errE = let e = new Event<_>() in e.Trigger, e.Publish
      let exitE = (cmdProcess.Exited |> Observable.map (fun x -> x)) // this gives the event the F# "standard" event type IEvent<'a> rather than IEvent<_,_>
  
      let _ = cmdProcess.Start()
      // wire up output (to both stdout and stderr)
      readLinesAsync cmdProcess.StandardOutput |> catchAll |> Observable.add(fun data -> 
          //System.Windows.Forms.MessageBox.Show (sprintf "OutputDataRecieved '%s'\n" data.Data) |> ignore
          outW(data));
      readLinesAsync cmdProcess.StandardError  |> catchAll |> Observable.add (fun data -> errW(data));
  
      // wire up input 
      // Fix 982: Force input to be written in UTF8 regardless of the apparent encoding.
  
negative.code:         let c = buffer.[pos]
          if c = '\r' || c = '\n' then
              let line = buffer.ToString(0, pos)
              trigger line
  
              let deletePos = 
                  if c = '\r' && (pos + 1) < buffer.Length && buffer.[pos + 1] = '\n' then pos + 2 else pos + 1
  