anchor.diff:      case ch of
         ^C : self.halt;
         ^R : begin HideCursor; mnml.launch(cmd_rnd); end;
  -      ^N : arrowdown;
  -      ^P : arrowup;
  -      ^M : newline;
  -      ^D : delete;
  -      ^S : save;
  -      ^V : pagedown;
  -      ^U : pageup;
  +      ^N : NextLine;
  +      ^P : PrevLine;
  +      ^M : Newline;
  +      ^D : DeleteNextChar;
  +      ^S : Save;
  +      ^V : NextPage;
  +      ^U : PrevPage;
         #0 : case kbd.readkey(ch) of
  -             #72 : arrowup; // when you press the UP arrow!
  -             #80 : arrowdown; // when you press the DOWN arrow!
  -             #71 : home;
  -             #79 : _end;
  -             #73 : pageup;
  -             #81 : pagedown;
  -             ^M  : newline;
  +             #72 : PrevLine; // when you press the UP arrow!
  +             #80 : NextLine; // when you press the DOWN arrow!
  +             #71 : ToTop;
  +             #79 : ToEnd;
  +             #73 : PrevPage;
  +             #81 : NextPage;
  +             ^M  : Newline;
                else led.handlestripped( ch );
              end;
         else led.handle( ch );
  
positive.code:   public { basic interface }
      constructor Create;
      function Load( path : string ) : boolean;
      function Save_as( path : string ) : boolean;
      function Save : boolean;
      procedure Init;
      function Done : boolean;
  
negative.code:     message := filename + ' saved.';
    end;
  
  function TEditor.SaveAs( path : string ) : boolean;
    var oldname : string;
    begin
      oldname := self.filename;
      self.filename := path;
      result := self.Save;
      if not result then self.filename := oldname
    end;
  
  