From a76977af62010a392c16010c367185e61e856ffe Mon Sep 17 00:00:00 2001 From: Dimitri Sokolyuk Date: Wed, 30 Oct 2019 20:04:56 +0100 Subject: mv to docs --- docs/j1demo/firmware/basewords.fs | 60 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 60 insertions(+) create mode 100644 docs/j1demo/firmware/basewords.fs (limited to 'docs/j1demo/firmware/basewords.fs') diff --git a/docs/j1demo/firmware/basewords.fs b/docs/j1demo/firmware/basewords.fs new file mode 100644 index 0000000..e529f66 --- /dev/null +++ b/docs/j1demo/firmware/basewords.fs @@ -0,0 +1,60 @@ +( Base words implemented in assembler JCB 13:10 08/24/10) + +meta +: noop T alu ; +: + T+N d-1 alu ; +: xor T^N d-1 alu ; +: and T&N d-1 alu ; +: or T|N d-1 alu ; +: invert ~T alu ; +: = N==T d-1 alu ; +: < NN alu ; +: dup T T->N d+1 alu ; +: drop N d-1 alu ; +: over N T->N d+1 alu ; +: nip T d-1 alu ; +: >r N T->R r+1 d-1 alu ; +: r> rT T->N r-1 d+1 alu ; +: r@ rT T->N d+1 alu ; +: @ [T] alu ; +: ! T N->[T] d-1 alu + N d-1 alu ; +: dsp dsp T->N d+1 alu ; +: lshift N<>T d-1 alu ; +: 1- T-1 alu ; +: 2r> rT T->N r-1 d+1 alu + rT T->N r-1 d+1 alu + N T->N alu ; +: 2>r N T->N alu + N T->R r+1 d-1 alu + N T->R r+1 d-1 alu ; +: 2r@ rT T->N r-1 d+1 alu + rT T->N r-1 d+1 alu + N T->N d+1 alu + N T->N d+1 alu + N T->R r+1 d-1 alu + N T->R r+1 d-1 alu + N T->N alu ; +: unloop + T r-1 alu + T r-1 alu ; +: exit return ; + +\ Elided words +: dup@ [T] T->N d+1 alu ; +: dup>r T T->R r+1 alu ; +: 2dupxor T^N T->N d+1 alu ; +: 2dup= N==T T->N d+1 alu ; +: !nip T N->[T] d-1 alu ; +: 2dup! T N->[T] alu ; + +\ Words used to implement pick +: up1 T d+1 alu ; +: down1 T d-1 alu ; +: copy N alu ; + +: module[ there [char] " parse preserve ; +: ]module s" Compiled " type count type space there swap - . cr ; -- cgit v1.2.3