-
Move
tail-call?
and similar private words to a new word list, e.g.compiler-tools-wordlist
, accesible in acompiler-definitions
context but not in atarget-definitions
context. Or move the public words fromcompiler-wordlist
tocompiler-wordlist
. For example, alsomemory
,t-,
,initial-target
etc., should not be accesible during the compilation of the target, just in case. -
Make the data stack growing direction configurable.
-
Add
2literal
,cliteral
,xliteral
. -
Make verbosity configurable.
-
Make the configuration directives homogenous and analog, in order to prevent name clashes, also with words like
on
andoff
, when they are used inside the target program.
-
Use the dea notation, borrowed from the lina Forth system.
-
Mark the stack comments of compiler words, to make it clear it’s the Gforth’s stack, not the target stack.
-
Rename
'
?
-
Add macros to preserve the alternate
hl'
register, which must be preserved in order to return to BASIC. -
Add flag to compile fast or slow versions of some words.
-
Rename
after
to its original nameaft
; renamestep
to its usual namenext
. -
Factor
push-a
fromcount
? -
Document the standard words used by the compiler.
-
Uniform the notation of the compilation data stack, e.g. "C:".
Remove consecutive push
and pop
, like in this case:
ld hl,00001h call _push_hl call _pop_hl ld a,l or h jp z,l9d39h
The source of that example is the following:
1 literal if
-
Fix execution of <src/test/test_dot.fs>.
-
Create the target word names in a specific word list?
-
Add alternative to
literal
to pass values in registers instead of the stack, e.g.'A' >a emit-a
, or just add the additional entry points and use assembly:'A' a ld#, emit-a
. -
Move
compiler-wordlist
beforeassembler-wordlist
incompiler-order
andtarget-order
? -
Add pronounciation to word definitions.
-
Move
<mark
and similar words from the assembler to their own library files. -
Write
do
. -
Remove unnecesary
compiler{
andassembler{
in library modules. -
Find a solution to compile numbers and strings without
literal
,sliteral
, etc. For example, a custom outer interpreter.
-
Document the target effect of
;
in library modules:ret
. -
Add words to parse and compile numbers, e.g.
h#
,d#
,b#
,o#
.
-
Factor
does> (dfa) @ h ldp#, push-hl
from words created bycreator
. -
Homogenize the documentation of compiler library words: "create a definition" → "create a compiler definition"; "when name is subsequently executed, [it compiles]". See
create
,buffer:
,variable
, etc. -
Make the
/pad
compiler constant configurable with a command line option. -
Make the
/hold-buffer
compiler constant configurable with a command line option. -
Make
boot-here
optional again: add the data stack init code and a jump to the latest definition.