| block-fid @ ; |
block-fid @ ; |
| |
|
| : block-position ( u -- ) \ block |
: block-position ( u -- ) \ block |
| \G positions the block file to the start of block u |
\G Position the block file to the start of block u. |
| 1- chars/block chars um* get-block-fid reposition-file throw ; |
1- chars/block chars um* get-block-fid reposition-file throw ; |
| |
|
| : update ( -- ) \ block |
: update ( -- ) \ block |
| : get-buffer ( n -- a-addr ) \ gforth |
: get-buffer ( n -- a-addr ) \ gforth |
| buffers mod buffer-struct %size * block-buffers @ + ; |
buffers mod buffer-struct %size * block-buffers @ + ; |
| |
|
| : block ( u -- a-addr ) \ block |
: block ( u -- a-addr ) \ block- block |
| |
\G u identifies a block number. Assign a block buffer to u, |
| |
\G make it the current block buffer and return its start |
| |
\G address, a-addr. |
| dup 0= -35 and throw |
dup 0= -35 and throw |
| dup get-buffer >r |
dup get-buffer >r |
| dup r@ buffer-block @ <> |
dup r@ buffer-block @ <> |
| \ reading in the block is unnecessary, but simpler |
\ reading in the block is unnecessary, but simpler |
| block ; |
block ; |
| |
|
| User scr 0 scr ! |
User scr ( -- a-addr ) \ block-ext |
| |
\G USER VARIABLE a-addr is the address of a cell containing |
| |
\G the block number of the block most recently processed by |
| |
\G @code{LIST}. |
| |
0 scr ! |
| |
|
| : updated? ( n -- f ) \ gforth |
: updated? ( n -- f ) \ gforth |
| scr @ buffer |
scr @ buffer |
| 1+ swap ?DO I +load LOOP ; |
1+ swap ?DO I +load LOOP ; |
| |
|
| : --> ( -- ) \ block- block |
: --> ( -- ) \ block- block |
| |
\G If this symbol is encountered whilst loading block @var{n}, |
| |
\G discard the remainder of the block and load block @var{n+1}. Used |
| |
\G for chaining multiple blocks together as a single loadable unit. |
| refill drop ; immediate |
refill drop ; immediate |
| |
|
| : block-included ( addr u -- ) \ gforth |
: block-included ( addr u -- ) \ gforth |
| true constant block-ext |
true constant block-ext |
| set-current |
set-current |
| |
|
| : bye ['] flush catch drop bye ; |
: bye ( -- ) \ tools-ext |
| |
\G Return control to the host operating system (if any). |
| |
['] flush catch drop bye ; |