diff options
| author | kitty <nepeta@canaglie.net> | 2026-02-14 18:33:27 +1100 |
|---|---|---|
| committer | kitty <nepeta@canaglie.net> | 2026-02-14 18:33:27 +1100 |
| commit | 6d671bbc2c014357c23e5ff7a61311abf2663d7b (patch) | |
| tree | fa2ce5cf88bddcae97f6b2a8e3b6a75ea23aee5c | |
| parent | cbc149e32ca7e14ba025c61d28357f9640933dc0 (diff) | |
rm outdated stuff from readme
will need to write some docs here later
| -rw-r--r-- | readme.md | 41 |
1 files changed, 7 insertions, 34 deletions
@@ -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 |
