anchor.diff:  
       // internal options  
       let mutable probeToSeeIfConsoleWorks         = true 
  +#if MONO
  +    let mutable peekAheadOnConsoleToPermitTyping = false
  +#else
       let mutable peekAheadOnConsoleToPermitTyping = true   
  +#endif
   
       let isInteractiveServer() = fsiServerName <> ""  
       let recordExplicitArg arg = explicitArgs <- explicitArgs @ [arg]
  
positive.code:                 LexbufFromLineReader fsiStdinSyphon (fun () -> 
                      match fsiConsoleInput.TryGetFirstLine() with 
                      | Some firstLine -> firstLine
                      | None -> console.ReadLine())
              | _ -> 
                  LexbufFromLineReader fsiStdinSyphon (fun () -> fsiConsoleInput.In.ReadLine() |> removeZeroCharsFromString)
  #endif                
  
          fsiStdinSyphon.Reset();
  
negative.code: 
        DriveFsiEventLoop fsiConsoleOutput 
  #else        
          progress := condition "FSHARP_INTERACTIVE_PROGRESS"
          // Update the console completion function now we've got an initial type checking state.
          // This means completion doesn't work until the initial type checking state has finished loading - fair enough!
          if !progress then fprintfn fsiConsoleOutput.Out "Run: Calling TryGetConsole"
          match fsiConsoleInput.TryGetConsole() with 
          | Some console when fsiOptions.EnableConsoleKeyProcessing -> 
              console.SetCompletionFunction(fun (s1,s2) -> fsiIntellisenseProvider.CompletionsForPartialLID !istateRef (match s1 with | Some s -> s + "." + s2 | None -> s2)  |> Seq.ofList)
  