En/Je/On 2015-08-30, Mark Wills <
markwi...@gmail.com>
escribió/skribis/wrote:
Mark, that is great.
In a Forth for ZX Spectrum 128, I store the name fields in a separate 16
KiB memory bank, with an additional field that links every nfa to its
cfa in main memory. That saves a lot of dictionary space (c. 3 KiB on
the bare unexpanded system) and makes name lengths unimportant. By
design, no field links the main headers to their name fields, what saves
2 bytes per word in the main memory. Therefore `cfa>nfa` and others do
a brute force search, checking the pointers that link every name field
with its code field, but that's not a problem.
The way TurboForth words can be compiled in different memory banks
transparently is a great idea. I'll think about it. It could be useful
to compile the Z80 assembler permanently without wasting memory, instead
of using the usual tricks to compile it at a different location and then
disconnect it from the dictionary.