My personal family of "goblin" programming languages and systems.
Caution
This projects is not stable yet!
Right now I'm following a different path and overhauling the whole project. If you want to take a look at the old Rust code, check-out Rust Branch.
:: start a word definition;: end a word definition+: add two integers-: subtract two integers*: multiply two integers/: divide two integers@: read the value of a cell (8 bytes) from memory!: write a value to a cell (8 bytes) in memory<0: put true (1) on the stack if current top of the stack is equal to zero, otherwise put false (0).ps@: get the current value of the parameter stack pointerps!: write a new address to the parameter stack pointerrs@: get the current value of the return stack pointerrs!: write a new address to the parameter stack pointerlsr: logical right shift an integerand: bitwise AND two integersmem: give the pointer to the start of user memory?exit: exit current word if the top of stack is true (non zero)syscall0-syscall6: perform a Linux system call with 0 to 6 arguments.
All primitives have been implemented in Assembly, right now I'm working on bootstrapping the project in Forth.
rbpandrsp: hold the data stack and the address stackr15: holds the pointer to the memory block