anchor.diff:  
   procedure TMinApp.OtherWindow;
     begin
  +    // so horrible! get a real 'focus' concept!
       // focus.defocus;
       if focus = ed then
  -      begin
  -	focus := tg; keymap := km_tg; kvm.HideCursor;
  +      begin focus := tg; keymap := km_tg; kvm.HideCursor;
         end
  -    else if focus = tg then
  -      begin
  -	focus := mb; keymap := km_mb; kvm.ShowCursor;
  -      end
  -    else
  -      begin
  -	focus := ed; keymap := km_ed; kvm.ShowCursor;
  +    else //if focus = tg then
  +      begin focus := ed; keymap := km_ed; kvm.ShowCursor;
         end;
       // focus.focus;
     end;
  
positive.code:     rsOutln.Open; tg.smudge; // refresh the data and display
    end;
  
  procedure TMinApp.REPL;
    begin
  
    end;
  
  
negative.code:     cur.Attach(rsOutln, 'nid');
      cur.canHideRows := true; cur.hideFlag := 'hidden';
      cur.OnMarkChanged := self.OnCursorChange;
      tg := TDbTreeGrid.Create(dbc);
      with tg do begin
        x := 1; y := 2; h := vsplit-y; w := 18; datacursor := cur
      end;
  
      { the type menu that pops up on ^T from the outliner }
      typeMenu := TDBMenu.Create(self);
      typeMenu.rs := dbc.query('SELECT * FROM kinds ORDER BY kind');
      typeMenu.key := 'knd';
      typeMenu.OnSave := self.OnChooseType;
  { procedure TMinApp.Init  2/2 }
  
      { a menu for selecting pages (on ^G }
      pageMenu := TDBMenu.Create(self);
      pageMenu.rs := dbc.query(
         'SELECT nid, val AS page FROM node NATURAL JOIN kinds '+
         'WHERE kind=:k', ['Page']);
      pageMenu.key := 'nid';
  
      { a virtual machine  - not actually used yet! }
      b4 := TB4VM.Create(self);
  
      { impshell (the stack based ui widget) }
      imp := TImpForth.Create(self);
      imp.mount('term', TTermWords);
      imp.mount('forth', TForthWords);
      ish := TImpShell.Create(self, imp);
      ish.resize(16,8); ish.center(kvm.width div 2, kvm.height div 2);
      imp.OnChange := ish.smudge; // so it updates the stack view
  
      { impterm (for showing results/text/etc) }
      itv := utv.TTermView.Create(self);
      itv.resize(xpc.min(kvm.width, 64), xpc.min(kvm.height, 16));
      itv.x := 0; itv.y := kvm.height - itv.h;
      TTermWords(imp.modules['term']).term := itv;
  
      { set up component rendering  }
      ish.visible := false; itv.visible := false;
      _views.extend([ ed, tg, ish, itv ]);
  
      { handle command line arguments }
      if ParamCount = 1 then
        if not ed.Load( ParamStr( 1 )) then
  	fail( u2a('unable to load file: ' + paramstr( 1 )))
        else ed.status := 'welcome to minneron.'
      else ok
    end;
  