summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--readme.md41
1 files changed, 7 insertions, 34 deletions
diff --git a/readme.md b/readme.md
index 9938f7d..252e909 100644
--- a/readme.md
+++ b/readme.md
@@ -1,14 +1,11 @@
# jewelforth
-its a forth for linux x86\_64. mostly made for personal stuff.
+its a subroutine threaded forth for linux x86\_64.
+mostly made for personal stuff.
if you use it and it breaks, too bad
public domain
-the plan right now is that this will be an STC forth.
-if this proves Too Complicated To Deal With the plan may be changed
-to a DTC forth instead.
-
## dictionary
the dictionary follows a fairly standard format.
@@ -20,13 +17,12 @@ the dictionary follows a fairly standard format.
| string | variable length | still NFA |
| code | variable length | CFA (code field address) |
-probably, some bitmask antics could be done to store the string length
-and flags together. but alternatively: no.
-
-## forth registers
+## the one reserved register
-- the working stack pointer, is `r14`.
-- `r11`, `r12`, `r13`, and occcasionally `r10` and `r9` are general purpose working registers.
+the working stack pointer is `r14`.
+the other registers are used as general purpose registers
+`r11` in particular is the standard register used in
+compiling calls.
## miscellaneous notes and stuff
@@ -40,32 +36,9 @@ so a wonky but hopefully not too slow solution is to compile
- `mov r11, [cfa]` = `94 BB [CFA]`
- `call r11` = `41 FF D3`
-### words to bootstrap from
-i want to make the kernel reasonably small,
-especially if i add an assembler.
-but obviously we need *something* to bootstrap from.
-(this list is Inspired by [miniforth](https://github.com/meithecatte/miniforth)'s builtins)
-
-- `!` (`val addr -- `): store a 64 bit word
-- `@` (`addr -- val`): fetch a 64 bit word
-- `c!` (`byte addr -- `): store a byte
-- `c@` (`addr -- byte`): fetch a byte
-- `:` (` -- `): compile a word from the current input source
-- `;` (` -- `): stop compiling the current word
-- `parse` (` -- c-addr u`): parse a word from the *forth init* (see footnote)
-- `find` (`c-addr u -- ?lfa flag`)
-- `interpret`: the stage 1 interpreter
-- `latest`: a variable, the latest defined word
-- `state`: a variable, determines current mode (interp./compiling)
-- `>in`: a variable, offset from start of forth init
-
-on `parse`: i don't want to deal with file access and stuff from the kernel.
-so this word will be Upgraded in the forth init to read from a file.
-
### Some Links
- starting forth part 1: http://www.bradrodriguez.com/papers/moving1.htm
-- a forum thread about determining empty stack with TOS register: http://forum.6502.org/viewtopic.php?t=8424
## silly little plans