anchor.diff:  \ lru ( b -- b r ) selects the least frequently referenced
   \ block cache row and returns it.
   t: lru ( b -- b r )
  -  -1 0 BEGIN DUP 64 < WHILE
  +  -1 0 BEGIN DUP #buffers < WHILE
       DUP >clk @ 0 = IF NIP EXIT THEN
       SWAP OVER >clk @ UMIN SWAP
       1+
     REPEAT DROP
  -  0 BEGIN DUP 64 < WHILE
  +  0 BEGIN DUP #buffers < WHILE
       2DUP >clk @ = IF NIP EXIT THEN
       1+
     REPEAT
  
positive.code: \ 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
    EMPTY-BUFFERS
    ;
  
negative.code: \ FLUSH ( -- ) empties all local buffers.  Before doing so,
  \ any buffers marked for update will be written back.
  t: FLUSH ( -- )
    0 BEGIN DUP #buffers < WHILE
      DUP dirty? IF DUP wrb THEN
      1+
    REPEAT DROP ;
  