| : get-buffer ( u -- a-addr ) \ gforth |
: get-buffer ( u -- a-addr ) \ gforth |
| 0 buffers um/mod drop 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 ) \ gforthman- 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 |
| \G start address, @i{a-addr}. Otherwise, assign a block buffer |
\G start address, @i{a-addr}. Otherwise, assign a block buffer |
| \G for block @i{u} (if the assigned block buffer has been |
\G for block @i{u} (if the assigned block buffer has been |
| \ reading in the block is unnecessary, but simpler |
\ reading in the block is unnecessary, but simpler |
| block ; |
block ; |
| |
|
| User scr ( -- a-addr ) \ block-ext |
User scr ( -- a-addr ) \ block-ext s-c-r |
| \G @code{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}. |
| \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 ; |
| |
|
| : --> ( -- ) \ gforth- gforth chain |
: --> ( -- ) \ gforthman- 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 |
\G for chaining multiple blocks together as a single loadable |