anchor.diff:  \ side effect of allowing the competent user to reallocate
   \ the buffers to suit the needs of her application.
   t: 0blocks ( -- )
  -  HERE clocks ! 64 CELLS ALLOT
  -  HERE blocks ! 64 CELLS ALLOT
  -  HERE laundry ! 64 ALLOT
  -  HERE buffers ! 64 1024 * ALLOT
  +  HERE clocks ! #buffers CELLS ALLOT
  +  HERE blocks ! #buffers CELLS ALLOT
  +  HERE laundry ! #buffers ALLOT
  +  HERE buffers ! #buffers 1024 * ALLOT
     EMPTY-BUFFERS
     ;
  
positive.code: \ internal cache.  If it's missing from the cache, return TRUE.
  \ Otherwise, return the cache row and FALSE.
  t: missing ( b -- b -1 / b r 0 )
    0 BEGIN DUP 64 < WHILE
      2DUP CELLS blocks @ + @ = IF 0 EXIT THEN
      1+
    REPEAT DROP -1 ;
  
negative.code: \ lru ( b -- b r ) selects the least frequently referenced
  \ block cache row and returns it.
  t: lru ( b -- b r )
    -1 0 BEGIN DUP #buffers < WHILE
      DUP >clk @ 0 = IF NIP EXIT THEN
      SWAP OVER >clk @ UMIN SWAP
      1+
    REPEAT DROP
    0 BEGIN DUP #buffers < WHILE
      2DUP >clk @ = IF NIP EXIT THEN
      1+
    REPEAT
  