version 1.24, 1999/04/16 22:19:50
|
version 1.27, 1999/11/08 22:01:07
|
Line 45 Variable last-block
|
Line 45 Variable last-block
|
$20 Value buffers |
$20 Value buffers |
|
|
User block-fid |
User block-fid |
|
User offset 0 offset ! \ store 1 here fore 0.4.0 compatibility |
|
|
: block-cold ( -- ) |
: block-cold ( -- ) |
block-fid off last-block off |
block-fid off last-block off |
Line 87 Defer flush-blocks ( -- ) \ gforth
|
Line 88 Defer flush-blocks ( -- ) \ gforth
|
|
|
: block-position ( u -- ) \ block |
: block-position ( u -- ) \ block |
\G Position the block file to the start of block @i{u}. |
\G Position the block file to the start of block @i{u}. |
1- chars/block chars um* get-block-fid reposition-file throw ; |
offset @ - chars/block chars um* get-block-fid reposition-file throw ; |
|
|
: update ( -- ) \ block |
: update ( -- ) \ block |
\G Mark the current block buffer as dirty. |
\G Mark the current block buffer as dirty. |
Line 127 Defer flush-blocks ( -- ) \ gforth
|
Line 128 Defer flush-blocks ( -- ) \ gforth
|
|
|
' flush IS flush-blocks |
' flush IS flush-blocks |
|
|
: get-buffer ( n -- a-addr ) \ gforth |
: get-buffer ( u -- a-addr ) \ gforth |
buffers mod buffer-struct %size * block-buffers @ + ; |
0 buffers um/mod drop buffer-struct %size * block-buffers @ + ; |
|
|
: block ( u -- a-addr ) \ block- block |
: block ( u -- a-addr ) \ block- block |
\G If a block buffer is assigned for block @i{u}, return its |
\G If a block buffer is assigned for block @i{u}, return its |
Line 137 Defer flush-blocks ( -- ) \ gforth
|
Line 138 Defer flush-blocks ( -- ) \ gforth
|
\G @code{update}d, transfer the contents to mass storage), read |
\G @code{update}d, transfer the contents to mass storage), read |
\G the block into the block buffer and return its start address, |
\G the block into the block buffer and return its start address, |
\G @i{a-addr}. |
\G @i{a-addr}. |
dup 0= -35 and throw |
dup offset @ u< -35 and throw |
dup get-buffer >r |
dup get-buffer >r |
dup r@ buffer-block @ <> |
dup r@ buffer-block @ <> |
r@ buffer-fid @ block-fid @ <> or |
r@ buffer-fid @ block-fid @ <> or |
Line 168 Defer flush-blocks ( -- ) \ gforth
|
Line 169 Defer flush-blocks ( -- ) \ gforth
|
block ; |
block ; |
|
|
User scr ( -- a-addr ) \ block-ext |
User scr ( -- a-addr ) \ block-ext |
\G USER VARIABLE: @i{a-addr} is the address of a cell containing |
\G @code{User} variable -- @i{a-addr} is the address of a cell containing |
\G the block number of the block most recently processed by |
\G the block number of the block most recently processed by |
\G @code{list}. |
\G @code{list}. |
0 scr ! |
0 scr ! |
Line 224 User scr ( -- a-addr ) \ block-ext
|
Line 225 User scr ( -- a-addr ) \ block-ext
|
\G current block + @i{n1} thru the current block + @i{n2}. |
\G current block + @i{n1} thru the current block + @i{n2}. |
1+ swap ?DO I +load LOOP ; |
1+ swap ?DO I +load LOOP ; |
|
|
: --> ( -- ) \ block- block chain |
: --> ( -- ) \ gforth- gforth chain |
\G If this symbol is encountered whilst loading block @i{n}, |
\G If this symbol is encountered whilst loading block @i{n}, |
\G discard the remainder of the block and load block @i{n+1}. Used |
\G discard the remainder of the block and load block @i{n+1}. Used |
\G for chaining multiple blocks together as a single loadable unit. |
\G for chaining multiple blocks together as a single loadable |
|
\G unit. Not recommended, because it destroys the independence of |
|
\G loading. Use @code{thru} (which is standard) or @code{+thru} |
|
\G instead. |
refill drop ; immediate |
refill drop ; immediate |
|
|
: block-included ( a-addr u -- ) \ gforth |
: block-included ( a-addr u -- ) \ gforth |