From ee64f10b64c6efc20fe9f2e457f2e872ca56ca52 Mon Sep 17 00:00:00 2001 From: kitty Date: Sat, 7 Mar 2026 17:35:02 +1100 Subject: readme changes --- readme.md | 49 +++++++++---------------------------------------- 1 file changed, 9 insertions(+), 40 deletions(-) (limited to 'readme.md') diff --git a/readme.md b/readme.md index 0b1b518..737def3 100644 --- a/readme.md +++ b/readme.md @@ -32,6 +32,14 @@ the dictionary follows a fairly standard format. | string | variable length | still NFA | | code | variable length | CFA (code field address) | +## non-standard forth + +this does not follow any standards. here are some things to keep in mind + +- the string output word is called `say` instead of `type` (i may change this) +- `create` can't be used for arrays and stuff. use `make` instead +- `:noname` is called `:>` (based on duskos). it also just creates a word called `_` and pushes its xt to the stack + ## the one reserved register the working stack pointer is `r14`. @@ -39,19 +47,7 @@ the other registers are used as general purpose registers; `r11` in particular is the standard register used in compiling calls. -## miscellaneous notes and stuff - -### COMPILE, -this is an STC forth so when we compile a call we have to -write the bytes of a `call` in manually. -x86\_64 does not allow absolute jumps from an immediate address, -so a wonky but hopefully not too slow solution is to compile -`literal address → W` and then `call W`. It'll Be Fine? - -- `mov r11, [cfa]` = `94 BB [CFA]` -- `call r11` = `41 FF D3` - -### Some Links +## Some Links - jonesforth, public domain forth tutorial implementation which was significantly cribbed from and studied: http://git.annexia.org/?p=jonesforth.git;a=tree - jonesforth nasm port: http://ratfactor.com/repos/nasmjf/ @@ -60,33 +56,6 @@ so a wonky but hopefully not too slow solution is to compile - page describing ` -ah yes, the infamous `DOES>`. i don't have a DOCOL segment so i'm not -sure how exactly to implement this? - -https://news.ycombinator.com/item?id=44231594 top comment here discusses -the forth `` and i wanna use it - -maybe this sucks shit but my idea is that i compile in a relative jmp with -`` - -### PNO -'pictured numeric output'. its forth's numeric output functionality. -note that this forth doesn't have double numbers -(i don't think it's necessary, since cells are 64 bit) -so PNO works on single cell values. - ## error codes in order to have Good Error Handling anywhere, the error handler's xt is stored in the `handler` variable and is then called by loading its value -- cgit v1.2.3