anchor.diff:  -export([start_link/0, call/2, getch/0]).
   
   %% Records
  --record(state, { port, getpid }).
  +-record(state, { port, getch }).
   
   %% =============================================================================
   %% Module API
  
positive.code:     gen_server:call(?MODULE, {call, Cmd, Args}, infinity).
  
  getch() ->
      ?MODULE ! {getch, self()},
      receive 
  	{ch, Chr} ->
  	    Chr
      end.
  
  %% =============================================================================
  %% Behaviour Callbacks
  
negative.code:     erlang:port_close(State#state.port),
      erl_ddll:unload("cecho").
  
  handle_info({_Port, {data, _Binary}}, #state{ getch = undefined } = State) ->
      {noreply, State};
  handle_info({_Port, {data, Binary}}, State) ->
      gen_server:reply(State#state.getch, binary_to_term(Binary)),
      {noreply, State#state{ getch = undefined }}.
  
  %% @hidden
  handle_cast(_, State) ->
  