anchor.diff:  
   variable iptr
   variable slot
  +variable relocptr
  +0 relocptr !
   
   : enforce	pibptr @ iptr !  0 pib,  $F000 slot ! ;
   : bblk		slot @ $F000 XOR IF align, enforce THEN ;
  
positive.code: \ The byte-size of the PIB.
  #WORDS TWORDS CONSTANT /pib
  
  \ Number of initialization lines to produce per defparam block.
  64 CONSTANT #INITS
  
  CREATE pib	/pib CHARS ALLOT
  pib /pib $CD FILL
  
  VARIABLE pibptr
  
  
negative.code: 
  VARIABLE rpa ( Return Pointer Address )
  
  : call,		bblk pibptr @ 2 TWORDS + &, &, GO, ;
  : DEFER,	bblk CREATE iptr @ , 0 &, GO, DOES> @ call, ;
  : IS,		' >body @ 1 TWORDS + pib! ;
  : preamble	iptr @ -1 TWORDS + &, !, bblk ;
  : rtnword	bblk iptr @ rpa ! 1 TWORDS iptr +! 0 pib, ;
  : :,		CREATE rtnword iptr @ , preamble DOES> @ call, ;
  : EXIT,		rpa @ &, @, GO, ;
  : ;,		EXIT, ;
  
  \ \ \ Structured Programming Primitives
  
  : if,		lit, pibptr @ reloc, 0 pib, zgo, ;
  		\ pibptr @ 0 #, zgo, doesn't work because the assembler is lazy about
  		\ starting new instruction packets.
  : then,		bblk iptr @ swap pib! ;
  : again,	rpa @ 3 TWORDS + &, go, ;
  : int,		align, CREATE pibptr @ ,  eject  0 pib, DOES> @ &, ;
  : char,		CREATE pibptr @ ,  eject  0 pibc, DOES> @ &, ;
  : create,	CREATE pibptr @ ,  eject  DOES> @ &, ;
  : const,	CREATE , DOES> @ #, ;
  
  \ \ \ Support for recursive subroutine calls.
  
  $FFFE const, %fp
  
  : callr,	bblk pibptr @ 3 TWORDS + &, %fp @, !, &, GO, ;
  : icallr,	bblk pibptr @ 3 TWORDS + &, %fp @, !, GO, ;
  
  : +fp@,		TWORDS #, %fp @, +, @, ;
  : +fp!,		TWORDS #, %fp @, +, !, ;
  