anchor.diff:  : dump  ( addr u -- )
      16 based (dump) ;
   
  +\g returns true if the val could be a PC address
  +: pc? ( val -- flag )
  +   dup aligned over = swap dict? and ;
  +
  +\g returs true if val could be an xt
  +: xt? ( val -- flag )
  +   dup pc? if ?dodefine nip 0<> else primxt? then ;
  +
  +: primheader? ( val -- flag )
  +   dup pc? if 
  +      dup @ 3735928559 = if
  +         cell+ @ primxt? exit
  +      then
  +   then drop false ;
  +
   : nextxt ( xt1 -- xt2 true | here false )
  -   begin dup here = if false exit then cell+ dup ?dodefine nip until true ;
  +   begin 
  +      cell+
  +      dup here = if false exit then 
  +      dup primheader? if cell+ @ true exit then
  +      dup xt? if true exit then 
  +   again ;
   
   : /xt ( xt -- a-addr )
      dup primxt? if  
  
positive.code:    ?dodefine nip @r+ = ;
  
  : doersee ( xt -- )
     dup type? dolist if ." : " then
     dup type? dovar if ." variable " then
     dup type? doconst if ." constant " then
     dup type? douser if ." user " then
  
negative.code: \g Examine code for xt
  : (xtsee) ( xt -- )
     dup doersee 
     dup safext>name .name
     dup /xt 
     over primxt? if codesee exit then 
     swap ?dodefine drop 
     begin  2dup >  while  cellsee  repeat 2drop ;
  
  : xtsee ( xt -- )
     dup (xtsee) xt>name ?dup if 
        dup 
        fimmed 0 > if ." immediate "  then   
        /fcompo unless ." compile-only" then
     then cr ;
  
  \g @see anstools
  : see  ( "<spaces>name" -- )
     ' xtsee ;
  
  export see xtsee dump xt?
  end-module
  