retroforth/package/list.forth
crc e802eca967 fix stack comments for retro.muri, retro.forth words (no longer append float & address effects)
FossilOrigin-Name: 06732488e7e60f5f1023851f88ae38dfa487cc66ab008019f1d107e081238ee1
2024-09-12 13:16:11 +00:00

67 lines
1.5 KiB
Forth

# Custom Extensions
This is a system for allowing you to easily add your own
extensions to RETRO on Unix systems.
The first extension uses the scripting interface to get source
data for words, and record this as part of the header.
~~~
{{
'Sources d:create #128 allot
:known? (s-sf) dup &Sources a:contains/string? ;
:index (s-s) &Sources swap a:index/string
&Sources swap a:fetch ;
:record (s-s) s:keep dup &Sources v:inc
@Sources &Sources + store ;
[ script:current-file known? &index &record choose
[ &d:add-header #2 + call ] dip
d:last d:source store
d:last d:name @d:Hash-Function call d:last d:hash store
] &d:add-header set-hook
}}
~~~
There are two options:
## Manual Additions
Add files to include to the code block below. Use a form
like:
'filename include
You can either put the files (or links to them) into this
directory or use full path names to the files. You can
also use any Retro code directly.
~~~
'dict-words-listing.forth include
~~~
## Automatic Extensions
This does not require manual editing of this file. To use
this:
- copy (or symlink) the extensions into the `extensions` subdirectory
- run `make update-extensions`
- run `make`
This will build RETRO, generate a new `load-extensions.retro` and
then rebuild, including the extensions.
~~~
'load-extensions.retro include
~~~
## Final Bits
Save the image with anything loaded here added in. The
`retro` binary will be rebuilt using the extended image.
~~~
'../rre.image image:save
~~~