So I lowered my standards even lower and now I have version 1.0 out.
I have docs, I have build system working and I have Windows support... Kinda... Well, after some thoughtful consideration, I decided that I am, in fact, OK with using
I had problems with getting ex:forth working with visual C++, and I feel like when I require some other non-native dependencies, might as wall use Cygwin. I might do full port at some point, but it's not my priority right now.
I also have the tetris ported now.
Some challenges I faced when porting:
Default value for uninitialised memory is 0 in
but 'Z' in ex:forth.
It made some fun errors. Loops outside words are very nice for initialisation, but they do not work with the ',' word.
Also, in Gforth I could do this:
6 constant THEME-LENGTH create THEME-TEXTS s\" < THEME: Light >\0" drop , s\" < THEME: Dark >\0" drop , s\" < THEME: Darker >\0" drop , s\" < THEME: APERTURE >\0" drop , s\" < THEME: H4x0r >\0" drop , s\" < THEME: Kanagawa >\0" drop ,
This is because strings seem to be, at least when called in interpretation mode, stored outside the default data space.
I added the 'SL"' word to store words at interpretation time, but they do share data space with words, so it wouldn't work. I used the following instead:
6 constant THEME-LENGTH :noname s" create THEME-TEXTS" evaluate s\" < THEME: Light >\0" drop , s\" < THEME: Dark >\0" drop , s\" < THEME: Darker >\0" drop , s\" < THEME: APERTURE >\0" drop , s\" < THEME: H4x0r >\0" drop , s\" < THEME: Kanagawa >\0" drop , ; execute
This creates an anonymous word that is called immediately after it's creation and calls 'CREATE' in interpretation mode.
I like FORTH.
Also, ex:forth now only recompiles bindings if the binding file changed, so that's nice.
Anyways, feel free to try it out, or forget about it forever. Whatever you feel more inclined to.
I will now enjoy taking on some other projects.
----------------------------