mirror of
https://github.com/hsoft/collapseos.git
synced 2024-11-23 08:38:05 +11:00
doc: improve "hook word" description
This commit is contained in:
parent
3f38c025e7
commit
4720714bd4
@ -68,9 +68,33 @@ as tricky immediates which, if they're defined sooner, mess
|
||||
cross compilation up. Once this layer is loaded, we become
|
||||
severly limited in the words we can use without messing up.
|
||||
|
||||
After having loaded that last layer, we end that with a hook
|
||||
word which is also where CURRENT will be on boot, which is then
|
||||
followed by the initialization string (see below).
|
||||
# Hook word
|
||||
|
||||
After having loaded that last core words layer, we end that
|
||||
with a hook word, the "(entry) _" line. A hook word is an empty
|
||||
word at the end of the dictionary which serves 3 purposes:
|
||||
|
||||
1. After having created that word, PC conveniently holds the
|
||||
value that should go in the LATEST field in stable ABI. Had
|
||||
the word been non-empty, getting that value would be less
|
||||
straightforward.
|
||||
2. Because LATEST points to an empty word, it means that it also
|
||||
points to the initialization string, which directly follows.
|
||||
If it was non-empty, we would need to know the word's length
|
||||
to get to that string.
|
||||
3. If, for some reason, you want to "graft" another dictionary
|
||||
on top of this one, having it end with an empty word makes
|
||||
grafting convenient: you already know what your "prev field"
|
||||
offset should be for the grafting to be correct.
|
||||
|
||||
# Initialization string
|
||||
|
||||
After the last word of the dictionary comes the "source init"
|
||||
part. The boot sequence is designed to interpret whatever comes
|
||||
after LATEST as Forth source, and this, until it reads ASCII
|
||||
EOT character (4). This is generally used for driver init.
|
||||
|
||||
# Building it
|
||||
|
||||
So that's the anatomy of a Collapse OS binary. How do you build
|
||||
one? If your machine is already covered by a recipe, you're in
|
||||
@ -99,15 +123,7 @@ same way. Drivers are a bit tricker and machine specific. I
|
||||
can't help you there, you'll have to use your wits.
|
||||
|
||||
After we've loaded the high part of the core words, we're at
|
||||
the "wrapping up" part. We add what we call a "hook word", an
|
||||
empty word with a single letter name. This allows us to boot
|
||||
with CURRENT pointing to "source init" content rather than being
|
||||
an actual wordref.
|
||||
|
||||
After the last word of the dictionary comes the "source init"
|
||||
part. The boot sequence is designed to interpret whatever comes
|
||||
after LATEST as Forth source, and this, until it reads ASCII
|
||||
EOT character (4). This is generally used for driver init.
|
||||
the "wrapping up" part. We add the hook word and init string.
|
||||
|
||||
To produce a Collapse OS binary, you run that xcomp unit and
|
||||
then observe the values of "ORG @" and "H@". That will give you
|
||||
|
Loading…
Reference in New Issue
Block a user