anchor.diff:  %%  The ACK contains the return value.
   
   io_reply(undefined, _ReplyAs, _Reply) ->
  -    %% Ignore these replies as they are generated from io_requests/4.
  +    %% Ignore these replies as they are generated from io_requests/5.
       ok;
   io_reply(From, ReplyAs, Reply) ->
       From ! {io_reply,ReplyAs,Reply},
  
positive.code: %%	{done,LineChars,RestChars}
  %%	interrupted
  
  get_line(Chars, Pbs, Drv, Encoding) ->
      {more_chars,Cont,Rs} = edlin:start(Pbs),
      send_drv_reqs(Drv, Rs),
      get_line1(edlin:edit_line(Chars, Cont), Drv, new_stack(get(line_buffer)), 
  	      Encoding).
  
  get_line1({done,Line,Rest,Rs}, Drv, Ls, _Encoding) ->
      send_drv_reqs(Drv, Rs),
      save_line_buffer(Line, get_lines(Ls)),
      {done,Line,Rest};
  get_line1({undefined,{_A,Mode,Char},Cs,Cont,Rs}, Drv, Ls0, Encoding) 
    when ((Mode =:= none) and (Char =:= $\^P))
         or ((Mode =:= meta_left_sq_bracket) and (Char =:= $A)) ->
      send_drv_reqs(Drv, Rs),
      case up_stack(save_line(Ls0, edlin:current_line(Cont))) of
  	{none,_Ls} ->
  	    send_drv(Drv, beep),
  	    get_line1(edlin:edit_line(Cs, Cont), Drv, Ls0, Encoding);
  	{Lcs,Ls} ->
  	    send_drv_reqs(Drv, edlin:erase_line(Cont)),
  	    {more_chars,Ncont,Nrs} = edlin:start(edlin:prompt(Cont)),
  
negative.code: 	    get_line1(edlin:edit_line1(lists:sublist(Lcs, 1, length(Lcs)-1),
  				      Ncont),
  		      Drv,
  		      Shell,
  		      Ls, Encoding)
      end;
  %% ^R = backward search, ^S = forward search.
  