anchor.diff:     dup primxt? if ." primitive " then
      drop ;
   
  -\g returns true if the val could be a PC address
  -: pc? ( val -- flag )
  -   dup aligned over = swap dict? and ;
  +: safext>name ( xt -- name|0 )
  +   dup xt? if 
  +      xt>name dup 0= if drop s" noname" pad place pad then
  +   else 
  +      s" [ " pad place 
  +      0 (d.) pad append
  +      s"  , ] " pad append
  +      pad 
  +   then ;
   
  -\g returs true if val could be an xt
  -: xt? ( val -- flag )
  -   dup pc? if ?dodefine nip 0<> else primxt? then ;
  -
  -: safext>name ( xt -- name|0 )
  -   dup xt? if xt>name else 0 (d.) pad place pad then ;
  -
  -: cellsee ( a-addr1 -- a-addr2 )
  -   dup @ safext>name .name 
  -   cell+ ;
  +: cellsee ( /xt a-addr1 -- /xt' a-addr2 )
  +   2dup cell+ = over @ ['] exit = and if 
  +      ." ;" 
  +   else
  +      dup @ safext>name .name 
  +   then cell+ ;
   
   defer codesee  
   :noname ( xt /xt -- )  over - dump ; is codesee
  
positive.code: : dump  ( addr u -- )
     16 based (dump) ;
  
  : nextxt ( xt1 -- xt2 true | here false )
     begin dup here = if false exit then cell+ dup ?dodefine nip until true ;
  
  : /xt ( xt -- a-addr )
     dup primxt? if  
  
negative.code:    ?dodefine nip @r+ = ;
  
  : doersee ( xt -- )
     dup type? dolist if 
        ." :" dup xt>name if space then
     then
     dup type? dovar if ." variable " then
     dup type? doconst if ." constant " then
     dup type? douser if ." user " then
  