aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDimitri Sokolyuk <demon@dim13.org>2019-10-30 20:04:56 +0100
committerDimitri Sokolyuk <demon@dim13.org>2019-10-30 20:04:56 +0100
commita76977af62010a392c16010c367185e61e856ffe (patch)
tree56cf4177d5bc0e3ead781d1c60818c13b1df0f3c
parentc0165d167d7cb40d80028bcf7a4a6b160b5a7e83 (diff)
mv to docs
-rw-r--r--docs/README.md (renamed from doc/README.md)0
-rw-r--r--docs/buzzard/README (renamed from buzzard/README)0
-rw-r--r--docs/buzzard/buzzard.2.README (renamed from buzzard/buzzard.2.README)0
-rw-r--r--docs/buzzard/buzzard.2.c (renamed from buzzard/buzzard.2.c)0
-rw-r--r--docs/buzzard/buzzard.2.design (renamed from buzzard/buzzard.2.design)0
-rw-r--r--docs/buzzard/buzzard.2.hint (renamed from buzzard/buzzard.2.hint)0
-rw-r--r--docs/buzzard/buzzard.2.orig.c (renamed from buzzard/buzzard.2.orig.c)0
-rw-r--r--docs/buzzard/demo1.1st (renamed from buzzard/demo1.1st)0
-rw-r--r--docs/buzzard/demo1.th (renamed from buzzard/demo1.th)0
-rw-r--r--docs/buzzard/demo2.th (renamed from buzzard/demo2.th)0
-rw-r--r--docs/buzzard/demo3.th (renamed from buzzard/demo3.th)0
-rw-r--r--docs/buzzard/demo4.th (renamed from buzzard/demo4.th)0
-rw-r--r--docs/buzzard/demo5.th (renamed from buzzard/demo5.th)0
-rw-r--r--docs/buzzard/demo6.th (renamed from buzzard/demo6.th)0
-rw-r--r--docs/buzzard/first.c113
-rw-r--r--docs/buzzard/help.th (renamed from buzzard/help.th)0
-rw-r--r--docs/buzzard/third (renamed from buzzard/third)0
-rw-r--r--docs/eForthOverviewv5.pdf (renamed from doc/eForthOverviewv5.pdf)bin455143 -> 455143 bytes
-rw-r--r--docs/j1.txt57
-rw-r--r--docs/j1/.gitignore (renamed from j1/.gitignore)0
-rw-r--r--docs/j1/Makefile (renamed from j1/Makefile)0
-rw-r--r--docs/j1/README.md (renamed from j1/README.md)0
-rw-r--r--docs/j1/build/.empty (renamed from j1/build/.empty)0
-rw-r--r--docs/j1/build/.gitignore (renamed from j1/build/.gitignore)0
-rw-r--r--docs/j1/go (renamed from j1/go)0
-rw-r--r--docs/j1/sim_main.cpp (renamed from j1/sim_main.cpp)0
-rw-r--r--docs/j1/toolchain/basewords.fs (renamed from j1/toolchain/basewords.fs)0
-rw-r--r--docs/j1/toolchain/cross.fs (renamed from j1/toolchain/cross.fs)0
-rw-r--r--docs/j1/toolchain/demo1.fs (renamed from j1/toolchain/demo1.fs)0
-rw-r--r--docs/j1/toolchain/dump.py (renamed from j1/toolchain/dump.py)0
-rw-r--r--docs/j1/toolchain/go (renamed from j1/toolchain/go)0
-rw-r--r--docs/j1/toolchain/nuc.fs (renamed from j1/toolchain/nuc.fs)0
-rw-r--r--docs/j1/toolchain/strings.fs (renamed from j1/toolchain/strings.fs)0
-rw-r--r--docs/j1/verilog/common.h (renamed from j1/verilog/common.h)0
-rw-r--r--docs/j1/verilog/j1.v (renamed from j1/verilog/j1.v)0
-rw-r--r--docs/j1/verilog/stack.v (renamed from j1/verilog/stack.v)0
-rw-r--r--docs/j1/verilog/testbench.v (renamed from j1/verilog/testbench.v)0
-rw-r--r--docs/j1/verilog/top.v (renamed from j1/verilog/top.v)0
-rw-r--r--docs/j1/verilog/uart.v (renamed from j1/verilog/uart.v)0
-rw-r--r--docs/j1/verilog/xilinx-top.v (renamed from j1/verilog/xilinx-top.v)0
-rw-r--r--docs/j1/xilinx/.gitignore (renamed from j1/xilinx/.gitignore)0
-rw-r--r--docs/j1/xilinx/Makefile (renamed from j1/xilinx/Makefile)0
-rw-r--r--docs/j1/xilinx/go (renamed from j1/xilinx/go)0
-rw-r--r--docs/j1/xilinx/j1-papilioduo.bmm (renamed from j1/xilinx/j1-papilioduo.bmm)0
-rw-r--r--docs/j1/xilinx/j1-papilioduo.ucf (renamed from j1/xilinx/j1-papilioduo.ucf)0
-rw-r--r--docs/j1/xilinx/shell.py (renamed from j1/xilinx/shell.py)0
-rw-r--r--docs/j1/xilinx/xilinx.mk (renamed from j1/xilinx/xilinx.mk)0
-rw-r--r--docs/j1/xilinx/xilinx.opt (renamed from j1/xilinx/xilinx.opt)0
-rw-r--r--docs/j1demo/firmware/Makefile (renamed from j1demo/firmware/Makefile)0
-rw-r--r--docs/j1demo/firmware/ans.fs (renamed from j1demo/firmware/ans.fs)0
-rw-r--r--docs/j1demo/firmware/arp.fs (renamed from j1demo/firmware/arp.fs)0
-rw-r--r--docs/j1demo/firmware/basewords.fs (renamed from j1demo/firmware/basewords.fs)0
-rw-r--r--docs/j1demo/firmware/clock.fs (renamed from j1demo/firmware/clock.fs)0
-rw-r--r--docs/j1demo/firmware/crossj1.fs (renamed from j1demo/firmware/crossj1.fs)0
-rw-r--r--docs/j1demo/firmware/defines_tcpip.fs (renamed from j1demo/firmware/defines_tcpip.fs)0
-rw-r--r--docs/j1demo/firmware/defines_tcpip.py (renamed from j1demo/firmware/defines_tcpip.py)0
-rw-r--r--docs/j1demo/firmware/defines_tcpip2.fs (renamed from j1demo/firmware/defines_tcpip2.fs)0
-rw-r--r--docs/j1demo/firmware/defines_tcpip2.py (renamed from j1demo/firmware/defines_tcpip2.py)0
-rw-r--r--docs/j1demo/firmware/dhcp.fs (renamed from j1demo/firmware/dhcp.fs)0
-rw-r--r--docs/j1demo/firmware/dns.fs (renamed from j1demo/firmware/dns.fs)0
-rw-r--r--docs/j1demo/firmware/doc.fs (renamed from j1demo/firmware/doc.fs)0
-rw-r--r--docs/j1demo/firmware/document.fs (renamed from j1demo/firmware/document.fs)0
-rw-r--r--docs/j1demo/firmware/encode.py (renamed from j1demo/firmware/encode.py)0
-rw-r--r--docs/j1demo/firmware/eth-ax88796.fs (renamed from j1demo/firmware/eth-ax88796.fs)0
-rw-r--r--docs/j1demo/firmware/font8x8 (renamed from j1demo/firmware/font8x8)bin768 -> 768 bytes
-rw-r--r--docs/j1demo/firmware/fsm-32.png (renamed from j1demo/firmware/fsm-32.png)bin1489 -> 1489 bytes
-rw-r--r--docs/j1demo/firmware/genoffsets.py (renamed from j1demo/firmware/genoffsets.py)0
-rw-r--r--docs/j1demo/firmware/go (renamed from j1demo/firmware/go)0
-rw-r--r--docs/j1demo/firmware/hwdefs.fs (renamed from j1demo/firmware/hwdefs.fs)0
-rw-r--r--docs/j1demo/firmware/intelhex.py (renamed from j1demo/firmware/intelhex.py)0
-rw-r--r--docs/j1demo/firmware/invaders.fs (renamed from j1demo/firmware/invaders.fs)0
-rw-r--r--docs/j1demo/firmware/ip.fs (renamed from j1demo/firmware/ip.fs)0
-rw-r--r--docs/j1demo/firmware/ip0.fs (renamed from j1demo/firmware/ip0.fs)0
-rw-r--r--docs/j1demo/firmware/j1.png (renamed from j1demo/firmware/j1.png)bin3262 -> 3262 bytes
-rw-r--r--docs/j1demo/firmware/keycodes.fs (renamed from j1demo/firmware/keycodes.fs)0
-rw-r--r--docs/j1demo/firmware/loader.fs (renamed from j1demo/firmware/loader.fs)0
-rw-r--r--docs/j1demo/firmware/main.fs (renamed from j1demo/firmware/main.fs)0
-rw-r--r--docs/j1demo/firmware/mkblob.py (renamed from j1demo/firmware/mkblob.py)0
-rw-r--r--docs/j1demo/firmware/ntp.fs (renamed from j1demo/firmware/ntp.fs)0
-rw-r--r--docs/j1demo/firmware/nuc.fs (renamed from j1demo/firmware/nuc.fs)0
-rw-r--r--docs/j1demo/firmware/packet.fs (renamed from j1demo/firmware/packet.fs)0
-rw-r--r--docs/j1demo/firmware/ps2kb.fs (renamed from j1demo/firmware/ps2kb.fs)0
-rw-r--r--docs/j1demo/firmware/sincos.fs (renamed from j1demo/firmware/sincos.fs)0
-rw-r--r--docs/j1demo/firmware/sprite.fs (renamed from j1demo/firmware/sprite.fs)0
-rw-r--r--docs/j1demo/firmware/tftp.fs (renamed from j1demo/firmware/tftp.fs)0
-rw-r--r--docs/j1demo/firmware/time.fs (renamed from j1demo/firmware/time.fs)0
-rw-r--r--docs/j1demo/firmware/twist.py (renamed from j1demo/firmware/twist.py)0
-rw-r--r--docs/j1demo/firmware/udp.fs (renamed from j1demo/firmware/udp.fs)0
-rw-r--r--docs/j1demo/firmware/version.fs (renamed from j1demo/firmware/version.fs)0
-rw-r--r--docs/j1demo/j1.pdf (renamed from j1demo/j1.pdf)bin124188 -> 124188 bytes
-rw-r--r--docs/j1demo/synth/Makefile (renamed from j1demo/synth/Makefile)0
-rw-r--r--docs/j1demo/synth/j1.bmm (renamed from j1demo/synth/j1.bmm)0
-rw-r--r--docs/j1demo/synth/j1.ucf (renamed from j1demo/synth/j1.ucf)0
-rw-r--r--docs/j1demo/synth/xilinx.mk (renamed from j1demo/synth/xilinx.mk)0
-rw-r--r--docs/j1demo/synth/xilinx.opt (renamed from j1demo/synth/xilinx.opt)0
-rw-r--r--docs/j1demo/verilog/ck_div.v (renamed from j1demo/verilog/ck_div.v)0
-rw-r--r--docs/j1demo/verilog/j1.v (renamed from j1demo/verilog/j1.v)0
-rw-r--r--docs/j1demo/verilog/rams.v (renamed from j1demo/verilog/rams.v)0
-rw-r--r--docs/j1demo/verilog/top.v (renamed from j1demo/verilog/top.v)0
-rw-r--r--docs/j1eforth/Makefile (renamed from j1eforth/Makefile)0
-rw-r--r--docs/j1eforth/README.md (renamed from j1eforth/README.md)0
-rw-r--r--docs/j1eforth/fpga/papilio-pro-j1.xise (renamed from j1eforth/fpga/papilio-pro-j1.xise)0
-rw-r--r--docs/j1eforth/fpga/papilio_pro_j1.bit (renamed from j1eforth/fpga/papilio_pro_j1.bit)bin340703 -> 340703 bytes
-rw-r--r--docs/j1eforth/fpga/src/Rxunit.vhd (renamed from j1eforth/fpga/src/Rxunit.vhd)0
-rw-r--r--docs/j1eforth/fpga/src/Txunit.vhd (renamed from j1eforth/fpga/src/Txunit.vhd)0
-rw-r--r--docs/j1eforth/fpga/src/clock.vhd (renamed from j1eforth/fpga/src/clock.vhd)0
-rw-r--r--docs/j1eforth/fpga/src/j1.v (renamed from j1eforth/fpga/src/j1.v)0
-rw-r--r--docs/j1eforth/fpga/src/miniuart.vhd (renamed from j1eforth/fpga/src/miniuart.vhd)0
-rw-r--r--docs/j1eforth/fpga/src/papilio-pro-j1.vhd (renamed from j1eforth/fpga/src/papilio-pro-j1.vhd)0
-rw-r--r--docs/j1eforth/fpga/src/papilio-pro.ucf (renamed from j1eforth/fpga/src/papilio-pro.ucf)0
-rw-r--r--docs/j1eforth/fpga/src/utils.vhd (renamed from j1eforth/fpga/src/utils.vhd)0
-rw-r--r--docs/j1eforth/fpga/test/miniuart2_tb.vhd (renamed from j1eforth/fpga/test/miniuart2_tb.vhd)0
-rw-r--r--docs/j1eforth/fpga/test/papilio_pro_j1_tb.vhd (renamed from j1eforth/fpga/test/papilio_pro_j1_tb.vhd)0
-rw-r--r--docs/j1eforth/ipv4.4th (renamed from j1eforth/ipv4.4th)0
-rw-r--r--docs/j1eforth/j1.4th (renamed from j1eforth/j1.4th)0
-rw-r--r--docs/j1eforth/j1.c (renamed from j1eforth/j1.c)0
-rw-r--r--docs/jonesforth/Dockerfile (renamed from jonesforth/Dockerfile)0
-rw-r--r--docs/jonesforth/docker-compose.yml (renamed from jonesforth/docker-compose.yml)0
-rw-r--r--docs/jonesforth/jonesforth.S (renamed from jonesforth/jonesforth.S)0
-rw-r--r--docs/jonesforth/jonesforth.fs (renamed from jonesforth/jonesforth.fs)0
-rwxr-xr-xdocs/jonesforth/run.sh (renamed from jonesforth/run.sh)0
-rw-r--r--docs/learnforth.fs (renamed from doc/learnforth.fs)0
-rw-r--r--docs/samples.fs2
-rw-r--r--docs/tcjassem.txt (renamed from doc/tcjassem.txt)0
-rw-r--r--go.mod2
125 files changed, 174 insertions, 0 deletions
diff --git a/doc/README.md b/docs/README.md
index a98f5fe..a98f5fe 100644
--- a/doc/README.md
+++ b/docs/README.md
diff --git a/buzzard/README b/docs/buzzard/README
index e95ba91..e95ba91 100644
--- a/buzzard/README
+++ b/docs/buzzard/README
diff --git a/buzzard/buzzard.2.README b/docs/buzzard/buzzard.2.README
index ee59a3b..ee59a3b 100644
--- a/buzzard/buzzard.2.README
+++ b/docs/buzzard/buzzard.2.README
diff --git a/buzzard/buzzard.2.c b/docs/buzzard/buzzard.2.c
index 4765458..4765458 100644
--- a/buzzard/buzzard.2.c
+++ b/docs/buzzard/buzzard.2.c
diff --git a/buzzard/buzzard.2.design b/docs/buzzard/buzzard.2.design
index 49b2e2d..49b2e2d 100644
--- a/buzzard/buzzard.2.design
+++ b/docs/buzzard/buzzard.2.design
diff --git a/buzzard/buzzard.2.hint b/docs/buzzard/buzzard.2.hint
index b0fe22b..b0fe22b 100644
--- a/buzzard/buzzard.2.hint
+++ b/docs/buzzard/buzzard.2.hint
diff --git a/buzzard/buzzard.2.orig.c b/docs/buzzard/buzzard.2.orig.c
index 7f77ab1..7f77ab1 100644
--- a/buzzard/buzzard.2.orig.c
+++ b/docs/buzzard/buzzard.2.orig.c
diff --git a/buzzard/demo1.1st b/docs/buzzard/demo1.1st
index b836967..b836967 100644
--- a/buzzard/demo1.1st
+++ b/docs/buzzard/demo1.1st
diff --git a/buzzard/demo1.th b/docs/buzzard/demo1.th
index 99d22bd..99d22bd 100644
--- a/buzzard/demo1.th
+++ b/docs/buzzard/demo1.th
diff --git a/buzzard/demo2.th b/docs/buzzard/demo2.th
index 8bf8eee..8bf8eee 100644
--- a/buzzard/demo2.th
+++ b/docs/buzzard/demo2.th
diff --git a/buzzard/demo3.th b/docs/buzzard/demo3.th
index c061b74..c061b74 100644
--- a/buzzard/demo3.th
+++ b/docs/buzzard/demo3.th
diff --git a/buzzard/demo4.th b/docs/buzzard/demo4.th
index 3f9a76d..3f9a76d 100644
--- a/buzzard/demo4.th
+++ b/docs/buzzard/demo4.th
diff --git a/buzzard/demo5.th b/docs/buzzard/demo5.th
index d16ca1e..d16ca1e 100644
--- a/buzzard/demo5.th
+++ b/docs/buzzard/demo5.th
diff --git a/buzzard/demo6.th b/docs/buzzard/demo6.th
index 75ec667..75ec667 100644
--- a/buzzard/demo6.th
+++ b/docs/buzzard/demo6.th
diff --git a/docs/buzzard/first.c b/docs/buzzard/first.c
new file mode 100644
index 0000000..9820b1b
--- /dev/null
+++ b/docs/buzzard/first.c
@@ -0,0 +1,113 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+
+char s[5000];
+int m[20000] = {32};
+int length = 1;
+int pc;
+int dstack[500];
+int *dsp = dstack;
+int top = 64;
+int w;
+int st0;
+
+void
+at(int x)
+{
+ m[m[0]++] = length;
+ length = *m - 1;
+ m[m[0]++] = top;
+ m[m[0]++] = x;
+ scanf("%s", s + top);
+ top += strlen(s + top) + 1;
+}
+
+void
+run(int x)
+{
+ switch (m[x++]) {
+ case 0: // pushint
+ *++dsp = st0;
+ st0 = m[pc++];
+ break;
+ case 1: // compile me
+ m[m[0]++] = x;
+ break;
+ case 2: // run me
+ m[++m[1]] = pc;
+ pc = x;
+ break;
+ case 3: // :
+ at(1);
+ m[m[0]++] = 2;
+ break;
+ case 4: // immediate
+ *m -= 2;
+ m[m[0]++] = 2;
+ break;
+ case 5: // _read
+ for (w = scanf("%s", s) < 1 ? exit(0), 0 : length; strcmp(s, &s[m[w + 1]]); w = m[w]);
+ if (w - 1) {
+ run(w + 2);
+ } else {
+ m[m[0]++] = 2;
+ m[m[0]++] = atoi(s);
+ }
+ break;
+ case 6: // @
+ st0 = m[st0];
+ break;
+ case 7: // !
+ m[st0] = *dsp--;
+ st0 = *dsp--;
+ break;
+ case 8: // -
+ st0 = *dsp-- - st0;
+ break;
+ case 9: // *
+ st0 *= *dsp--;
+ break;
+ case 10: // /
+ st0 = *dsp-- / st0;
+ break;
+ case 11: // <0
+ st0 = 0 > st0;
+ break;
+ case 12: // exit
+ pc = m[m[1]--];
+ break;
+ case 13: // echo
+ putchar(st0);
+ st0 = *dsp--;
+ break;
+ case 14: // key
+ *++dsp = st0;
+ st0 = getchar();
+ case 15: // _pick
+ st0 = dsp[-st0];
+ break;
+ }
+}
+
+int
+main()
+{
+ at(3);
+ at(4);
+ at(1);
+ w = *m;
+ m[m[0]++] = 5;
+ m[m[0]++] = 2;
+ pc = *m;
+ m[m[0]++] = w;
+ m[m[0]++] = pc - 1;
+ for (w = 6; w < 16;) {
+ at(1);
+ m[m[0]++] = w++;
+ }
+ m[1] = *m;
+ for (*m += 512;; run(m[pc++]));
+
+ return 0;
+}
diff --git a/buzzard/help.th b/docs/buzzard/help.th
index 7afab27..7afab27 100644
--- a/buzzard/help.th
+++ b/docs/buzzard/help.th
diff --git a/buzzard/third b/docs/buzzard/third
index b5d3802..b5d3802 100644
--- a/buzzard/third
+++ b/docs/buzzard/third
diff --git a/doc/eForthOverviewv5.pdf b/docs/eForthOverviewv5.pdf
index bf5f5b0..bf5f5b0 100644
--- a/doc/eForthOverviewv5.pdf
+++ b/docs/eForthOverviewv5.pdf
Binary files differ
diff --git a/docs/j1.txt b/docs/j1.txt
new file mode 100644
index 0000000..6720b72
--- /dev/null
+++ b/docs/j1.txt
@@ -0,0 +1,57 @@
+f e d c b a 9 8 7 6 5 4 3 2 1 0
+1 . . . . . . . . . . . . . . . literal
+0 0 0 . . . . . . . . . . . . . jump
+0 1 0 . . . . . . . . . . . . . call
+0 0 1 . . . . . . . . . . . . . cond jump
+0 1 1 ? 0 0 0 0 nop
+. . .
+. . . . . . . . . 0 0 1 . . . . func_T_N
+. . . . . . . . . 0 1 0 . . . . func_T_R
+. . . . . . . . . 0 1 1 . . . . func_write
+. . . . . . . . . 1 0 0 . . . . func_iow
+0 1 1 . . . . . . . . . . . . . is_alu
+0 1 1 . . . . . . 0 1 1 . . . . mem_wr
+0 1 1 . . . . . . 1 0 0 . . . . io_wr
+
+
+
+1 . . . . . . . . . . . . . . . imm
+
+0 0 0 . . . . . . . . . . . . . ubranch
+0 0 1 . . . . . . . . . . . . . 0branch
+0 1 0 . . . . . . . . . . . . . scall
+0 1 1 . . . . . . . . . . . . . alu
+
+. . . ? . . . . . . . . . . . . unused
+
+. . . . 0 0 0 0 . . . . . . . . T
+. . . . 0 0 0 1 . . . . . . . . N
+. . . . 0 0 1 0 . . . . . . . . T+N
+. . . . 0 0 1 1 . . . . . . . . T&N
+. . . . 0 1 0 0 . . . . . . . . T|N
+. . . . 0 1 0 1 . . . . . . . . T^N
+. . . . 0 1 1 0 . . . . . . . . ~T
+. . . . 0 1 1 1 . . . . . . . . N==T
+. . . . 1 0 0 0 . . . . . . . . N<T
+. . . . 1 0 0 1 . . . . . . . . N>>T
+. . . . 1 0 1 0 . . . . . . . . N<<T
+. . . . 1 0 1 1 . . . . . . . . rT
+. . . . 1 1 0 0 . . . . . . . . [T]
+. . . . 1 1 0 1 . . . . . . . . io[T]
+. . . . 1 1 1 0 . . . . . . . . status
+. . . . 1 1 1 1 . . . . . . . . Nu<T
+
+. . . . . . . . 1 . . . . . . . RET
+
+. . . . . . . . . 0 0 1 . . . . T->N
+. . . . . . . . . 0 1 0 . . . . T->R
+. . . . . . . . . 0 1 1 . . . . N->[T]
+. . . . . . . . . 1 0 0 . . . . N->io[T]
+
+. . . . . . . . . . . . 1 1 . . r-1
+. . . . . . . . . . . . 1 0 . . r-2
+. . . . . . . . . . . . 0 1 . . r+1
+
+. . . . . . . . . . . . . . 1 1 d-1
+. . . . . . . . . . . . . . 0 1 d+1
+
diff --git a/j1/.gitignore b/docs/j1/.gitignore
index f169042..f169042 100644
--- a/j1/.gitignore
+++ b/docs/j1/.gitignore
diff --git a/j1/Makefile b/docs/j1/Makefile
index 34f0dae..34f0dae 100644
--- a/j1/Makefile
+++ b/docs/j1/Makefile
diff --git a/j1/README.md b/docs/j1/README.md
index 9a419f5..9a419f5 100644
--- a/j1/README.md
+++ b/docs/j1/README.md
diff --git a/j1/build/.empty b/docs/j1/build/.empty
index e69de29..e69de29 100644
--- a/j1/build/.empty
+++ b/docs/j1/build/.empty
diff --git a/j1/build/.gitignore b/docs/j1/build/.gitignore
index ebc3c15..ebc3c15 100644
--- a/j1/build/.gitignore
+++ b/docs/j1/build/.gitignore
diff --git a/j1/go b/docs/j1/go
index c0740cb..c0740cb 100644
--- a/j1/go
+++ b/docs/j1/go
diff --git a/j1/sim_main.cpp b/docs/j1/sim_main.cpp
index ee075ac..ee075ac 100644
--- a/j1/sim_main.cpp
+++ b/docs/j1/sim_main.cpp
diff --git a/j1/toolchain/basewords.fs b/docs/j1/toolchain/basewords.fs
index 6534d2b..6534d2b 100644
--- a/j1/toolchain/basewords.fs
+++ b/docs/j1/toolchain/basewords.fs
diff --git a/j1/toolchain/cross.fs b/docs/j1/toolchain/cross.fs
index 56c0025..56c0025 100644
--- a/j1/toolchain/cross.fs
+++ b/docs/j1/toolchain/cross.fs
diff --git a/j1/toolchain/demo1.fs b/docs/j1/toolchain/demo1.fs
index 7c49af4..7c49af4 100644
--- a/j1/toolchain/demo1.fs
+++ b/docs/j1/toolchain/demo1.fs
diff --git a/j1/toolchain/dump.py b/docs/j1/toolchain/dump.py
index 283916b..283916b 100644
--- a/j1/toolchain/dump.py
+++ b/docs/j1/toolchain/dump.py
diff --git a/j1/toolchain/go b/docs/j1/toolchain/go
index 6570942..6570942 100644
--- a/j1/toolchain/go
+++ b/docs/j1/toolchain/go
diff --git a/j1/toolchain/nuc.fs b/docs/j1/toolchain/nuc.fs
index 846db05..846db05 100644
--- a/j1/toolchain/nuc.fs
+++ b/docs/j1/toolchain/nuc.fs
diff --git a/j1/toolchain/strings.fs b/docs/j1/toolchain/strings.fs
index cbd9b0e..cbd9b0e 100644
--- a/j1/toolchain/strings.fs
+++ b/docs/j1/toolchain/strings.fs
diff --git a/j1/verilog/common.h b/docs/j1/verilog/common.h
index 03da65d..03da65d 100644
--- a/j1/verilog/common.h
+++ b/docs/j1/verilog/common.h
diff --git a/j1/verilog/j1.v b/docs/j1/verilog/j1.v
index d69ca20..d69ca20 100644
--- a/j1/verilog/j1.v
+++ b/docs/j1/verilog/j1.v
diff --git a/j1/verilog/stack.v b/docs/j1/verilog/stack.v
index e5cee8a..e5cee8a 100644
--- a/j1/verilog/stack.v
+++ b/docs/j1/verilog/stack.v
diff --git a/j1/verilog/testbench.v b/docs/j1/verilog/testbench.v
index 2ec2b5e..2ec2b5e 100644
--- a/j1/verilog/testbench.v
+++ b/docs/j1/verilog/testbench.v
diff --git a/j1/verilog/top.v b/docs/j1/verilog/top.v
index efcf297..efcf297 100644
--- a/j1/verilog/top.v
+++ b/docs/j1/verilog/top.v
diff --git a/j1/verilog/uart.v b/docs/j1/verilog/uart.v
index 4daac0f..4daac0f 100644
--- a/j1/verilog/uart.v
+++ b/docs/j1/verilog/uart.v
diff --git a/j1/verilog/xilinx-top.v b/docs/j1/verilog/xilinx-top.v
index 6695d77..6695d77 100644
--- a/j1/verilog/xilinx-top.v
+++ b/docs/j1/verilog/xilinx-top.v
diff --git a/j1/xilinx/.gitignore b/docs/j1/xilinx/.gitignore
index e138931..e138931 100644
--- a/j1/xilinx/.gitignore
+++ b/docs/j1/xilinx/.gitignore
diff --git a/j1/xilinx/Makefile b/docs/j1/xilinx/Makefile
index 481513b..481513b 100644
--- a/j1/xilinx/Makefile
+++ b/docs/j1/xilinx/Makefile
diff --git a/j1/xilinx/go b/docs/j1/xilinx/go
index c527f4c..c527f4c 100644
--- a/j1/xilinx/go
+++ b/docs/j1/xilinx/go
diff --git a/j1/xilinx/j1-papilioduo.bmm b/docs/j1/xilinx/j1-papilioduo.bmm
index 3dea0be..3dea0be 100644
--- a/j1/xilinx/j1-papilioduo.bmm
+++ b/docs/j1/xilinx/j1-papilioduo.bmm
diff --git a/j1/xilinx/j1-papilioduo.ucf b/docs/j1/xilinx/j1-papilioduo.ucf
index e06e002..e06e002 100644
--- a/j1/xilinx/j1-papilioduo.ucf
+++ b/docs/j1/xilinx/j1-papilioduo.ucf
diff --git a/j1/xilinx/shell.py b/docs/j1/xilinx/shell.py
index 814e6a2..814e6a2 100644
--- a/j1/xilinx/shell.py
+++ b/docs/j1/xilinx/shell.py
diff --git a/j1/xilinx/xilinx.mk b/docs/j1/xilinx/xilinx.mk
index f71dede..f71dede 100644
--- a/j1/xilinx/xilinx.mk
+++ b/docs/j1/xilinx/xilinx.mk
diff --git a/j1/xilinx/xilinx.opt b/docs/j1/xilinx/xilinx.opt
index c9e5ab7..c9e5ab7 100644
--- a/j1/xilinx/xilinx.opt
+++ b/docs/j1/xilinx/xilinx.opt
diff --git a/j1demo/firmware/Makefile b/docs/j1demo/firmware/Makefile
index b28bfe6..b28bfe6 100644
--- a/j1demo/firmware/Makefile
+++ b/docs/j1demo/firmware/Makefile
diff --git a/j1demo/firmware/ans.fs b/docs/j1demo/firmware/ans.fs
index dcd29ed..dcd29ed 100644
--- a/j1demo/firmware/ans.fs
+++ b/docs/j1demo/firmware/ans.fs
diff --git a/j1demo/firmware/arp.fs b/docs/j1demo/firmware/arp.fs
index c6b69c7..c6b69c7 100644
--- a/j1demo/firmware/arp.fs
+++ b/docs/j1demo/firmware/arp.fs
diff --git a/j1demo/firmware/basewords.fs b/docs/j1demo/firmware/basewords.fs
index e529f66..e529f66 100644
--- a/j1demo/firmware/basewords.fs
+++ b/docs/j1demo/firmware/basewords.fs
diff --git a/j1demo/firmware/clock.fs b/docs/j1demo/firmware/clock.fs
index 4bb35bb..4bb35bb 100644
--- a/j1demo/firmware/clock.fs
+++ b/docs/j1demo/firmware/clock.fs
diff --git a/j1demo/firmware/crossj1.fs b/docs/j1demo/firmware/crossj1.fs
index d034611..d034611 100644
--- a/j1demo/firmware/crossj1.fs
+++ b/docs/j1demo/firmware/crossj1.fs
diff --git a/j1demo/firmware/defines_tcpip.fs b/docs/j1demo/firmware/defines_tcpip.fs
index 90d3990..90d3990 100644
--- a/j1demo/firmware/defines_tcpip.fs
+++ b/docs/j1demo/firmware/defines_tcpip.fs
diff --git a/j1demo/firmware/defines_tcpip.py b/docs/j1demo/firmware/defines_tcpip.py
index bbeb16b..bbeb16b 100644
--- a/j1demo/firmware/defines_tcpip.py
+++ b/docs/j1demo/firmware/defines_tcpip.py
diff --git a/j1demo/firmware/defines_tcpip2.fs b/docs/j1demo/firmware/defines_tcpip2.fs
index 4d38a13..4d38a13 100644
--- a/j1demo/firmware/defines_tcpip2.fs
+++ b/docs/j1demo/firmware/defines_tcpip2.fs
diff --git a/j1demo/firmware/defines_tcpip2.py b/docs/j1demo/firmware/defines_tcpip2.py
index 1d9e556..1d9e556 100644
--- a/j1demo/firmware/defines_tcpip2.py
+++ b/docs/j1demo/firmware/defines_tcpip2.py
diff --git a/j1demo/firmware/dhcp.fs b/docs/j1demo/firmware/dhcp.fs
index 971e567..971e567 100644
--- a/j1demo/firmware/dhcp.fs
+++ b/docs/j1demo/firmware/dhcp.fs
diff --git a/j1demo/firmware/dns.fs b/docs/j1demo/firmware/dns.fs
index 96ec36c..96ec36c 100644
--- a/j1demo/firmware/dns.fs
+++ b/docs/j1demo/firmware/dns.fs
diff --git a/j1demo/firmware/doc.fs b/docs/j1demo/firmware/doc.fs
index 8b3c07d..8b3c07d 100644
--- a/j1demo/firmware/doc.fs
+++ b/docs/j1demo/firmware/doc.fs
diff --git a/j1demo/firmware/document.fs b/docs/j1demo/firmware/document.fs
index 53c741c..53c741c 100644
--- a/j1demo/firmware/document.fs
+++ b/docs/j1demo/firmware/document.fs
diff --git a/j1demo/firmware/encode.py b/docs/j1demo/firmware/encode.py
index 54022d2..54022d2 100644
--- a/j1demo/firmware/encode.py
+++ b/docs/j1demo/firmware/encode.py
diff --git a/j1demo/firmware/eth-ax88796.fs b/docs/j1demo/firmware/eth-ax88796.fs
index 0a630d6..0a630d6 100644
--- a/j1demo/firmware/eth-ax88796.fs
+++ b/docs/j1demo/firmware/eth-ax88796.fs
diff --git a/j1demo/firmware/font8x8 b/docs/j1demo/firmware/font8x8
index fbdaf14..fbdaf14 100644
--- a/j1demo/firmware/font8x8
+++ b/docs/j1demo/firmware/font8x8
Binary files differ
diff --git a/j1demo/firmware/fsm-32.png b/docs/j1demo/firmware/fsm-32.png
index 974f70c..974f70c 100644
--- a/j1demo/firmware/fsm-32.png
+++ b/docs/j1demo/firmware/fsm-32.png
Binary files differ
diff --git a/j1demo/firmware/genoffsets.py b/docs/j1demo/firmware/genoffsets.py
index 2ed279e..2ed279e 100644
--- a/j1demo/firmware/genoffsets.py
+++ b/docs/j1demo/firmware/genoffsets.py
diff --git a/j1demo/firmware/go b/docs/j1demo/firmware/go
index 0adb2d0..0adb2d0 100644
--- a/j1demo/firmware/go
+++ b/docs/j1demo/firmware/go
diff --git a/j1demo/firmware/hwdefs.fs b/docs/j1demo/firmware/hwdefs.fs
index 4539d1a..4539d1a 100644
--- a/j1demo/firmware/hwdefs.fs
+++ b/docs/j1demo/firmware/hwdefs.fs
diff --git a/j1demo/firmware/intelhex.py b/docs/j1demo/firmware/intelhex.py
index ecf8b28..ecf8b28 100644
--- a/j1demo/firmware/intelhex.py
+++ b/docs/j1demo/firmware/intelhex.py
diff --git a/j1demo/firmware/invaders.fs b/docs/j1demo/firmware/invaders.fs
index f501a3e..f501a3e 100644
--- a/j1demo/firmware/invaders.fs
+++ b/docs/j1demo/firmware/invaders.fs
diff --git a/j1demo/firmware/ip.fs b/docs/j1demo/firmware/ip.fs
index 7c66137..7c66137 100644
--- a/j1demo/firmware/ip.fs
+++ b/docs/j1demo/firmware/ip.fs
diff --git a/j1demo/firmware/ip0.fs b/docs/j1demo/firmware/ip0.fs
index 1631d5f..1631d5f 100644
--- a/j1demo/firmware/ip0.fs
+++ b/docs/j1demo/firmware/ip0.fs
diff --git a/j1demo/firmware/j1.png b/docs/j1demo/firmware/j1.png
index 552f8d3..552f8d3 100644
--- a/j1demo/firmware/j1.png
+++ b/docs/j1demo/firmware/j1.png
Binary files differ
diff --git a/j1demo/firmware/keycodes.fs b/docs/j1demo/firmware/keycodes.fs
index bd9b814..bd9b814 100644
--- a/j1demo/firmware/keycodes.fs
+++ b/docs/j1demo/firmware/keycodes.fs
diff --git a/j1demo/firmware/loader.fs b/docs/j1demo/firmware/loader.fs
index d4ae725..d4ae725 100644
--- a/j1demo/firmware/loader.fs
+++ b/docs/j1demo/firmware/loader.fs
diff --git a/j1demo/firmware/main.fs b/docs/j1demo/firmware/main.fs
index 16e4cf5..16e4cf5 100644
--- a/j1demo/firmware/main.fs
+++ b/docs/j1demo/firmware/main.fs
diff --git a/j1demo/firmware/mkblob.py b/docs/j1demo/firmware/mkblob.py
index 6623f91..6623f91 100644
--- a/j1demo/firmware/mkblob.py
+++ b/docs/j1demo/firmware/mkblob.py
diff --git a/j1demo/firmware/ntp.fs b/docs/j1demo/firmware/ntp.fs
index 881296a..881296a 100644
--- a/j1demo/firmware/ntp.fs
+++ b/docs/j1demo/firmware/ntp.fs
diff --git a/j1demo/firmware/nuc.fs b/docs/j1demo/firmware/nuc.fs
index deadcc7..deadcc7 100644
--- a/j1demo/firmware/nuc.fs
+++ b/docs/j1demo/firmware/nuc.fs
diff --git a/j1demo/firmware/packet.fs b/docs/j1demo/firmware/packet.fs
index b188cc5..b188cc5 100644
--- a/j1demo/firmware/packet.fs
+++ b/docs/j1demo/firmware/packet.fs
diff --git a/j1demo/firmware/ps2kb.fs b/docs/j1demo/firmware/ps2kb.fs
index f151971..f151971 100644
--- a/j1demo/firmware/ps2kb.fs
+++ b/docs/j1demo/firmware/ps2kb.fs
diff --git a/j1demo/firmware/sincos.fs b/docs/j1demo/firmware/sincos.fs
index 6ad1ea4..6ad1ea4 100644
--- a/j1demo/firmware/sincos.fs
+++ b/docs/j1demo/firmware/sincos.fs
diff --git a/j1demo/firmware/sprite.fs b/docs/j1demo/firmware/sprite.fs
index 877917a..877917a 100644
--- a/j1demo/firmware/sprite.fs
+++ b/docs/j1demo/firmware/sprite.fs
diff --git a/j1demo/firmware/tftp.fs b/docs/j1demo/firmware/tftp.fs
index da40aa2..da40aa2 100644
--- a/j1demo/firmware/tftp.fs
+++ b/docs/j1demo/firmware/tftp.fs
diff --git a/j1demo/firmware/time.fs b/docs/j1demo/firmware/time.fs
index 4d53113..4d53113 100644
--- a/j1demo/firmware/time.fs
+++ b/docs/j1demo/firmware/time.fs
diff --git a/j1demo/firmware/twist.py b/docs/j1demo/firmware/twist.py
index 19743f6..19743f6 100644
--- a/j1demo/firmware/twist.py
+++ b/docs/j1demo/firmware/twist.py
diff --git a/j1demo/firmware/udp.fs b/docs/j1demo/firmware/udp.fs
index 835983a..835983a 100644
--- a/j1demo/firmware/udp.fs
+++ b/docs/j1demo/firmware/udp.fs
diff --git a/j1demo/firmware/version.fs b/docs/j1demo/firmware/version.fs
index 75e63a9..75e63a9 100644
--- a/j1demo/firmware/version.fs
+++ b/docs/j1demo/firmware/version.fs
diff --git a/j1demo/j1.pdf b/docs/j1demo/j1.pdf
index 188ac02..188ac02 100644
--- a/j1demo/j1.pdf
+++ b/docs/j1demo/j1.pdf
Binary files differ
diff --git a/j1demo/synth/Makefile b/docs/j1demo/synth/Makefile
index 4cec0ac..4cec0ac 100644
--- a/j1demo/synth/Makefile
+++ b/docs/j1demo/synth/Makefile
diff --git a/j1demo/synth/j1.bmm b/docs/j1demo/synth/j1.bmm
index 61a7d83..61a7d83 100644
--- a/j1demo/synth/j1.bmm
+++ b/docs/j1demo/synth/j1.bmm
diff --git a/j1demo/synth/j1.ucf b/docs/j1demo/synth/j1.ucf
index f6bbd70..f6bbd70 100644
--- a/j1demo/synth/j1.ucf
+++ b/docs/j1demo/synth/j1.ucf
diff --git a/j1demo/synth/xilinx.mk b/docs/j1demo/synth/xilinx.mk
index c692fe7..c692fe7 100644
--- a/j1demo/synth/xilinx.mk
+++ b/docs/j1demo/synth/xilinx.mk
diff --git a/j1demo/synth/xilinx.opt b/docs/j1demo/synth/xilinx.opt
index 7fe9d8b..7fe9d8b 100644
--- a/j1demo/synth/xilinx.opt
+++ b/docs/j1demo/synth/xilinx.opt
diff --git a/j1demo/verilog/ck_div.v b/docs/j1demo/verilog/ck_div.v
index a753804..a753804 100644
--- a/j1demo/verilog/ck_div.v
+++ b/docs/j1demo/verilog/ck_div.v
diff --git a/j1demo/verilog/j1.v b/docs/j1demo/verilog/j1.v
index 861cb3c..861cb3c 100644
--- a/j1demo/verilog/j1.v
+++ b/docs/j1demo/verilog/j1.v
diff --git a/j1demo/verilog/rams.v b/docs/j1demo/verilog/rams.v
index 620a831..620a831 100644
--- a/j1demo/verilog/rams.v
+++ b/docs/j1demo/verilog/rams.v
diff --git a/j1demo/verilog/top.v b/docs/j1demo/verilog/top.v
index 9c21431..9c21431 100644
--- a/j1demo/verilog/top.v
+++ b/docs/j1demo/verilog/top.v
diff --git a/j1eforth/Makefile b/docs/j1eforth/Makefile
index 0be1611..0be1611 100644
--- a/j1eforth/Makefile
+++ b/docs/j1eforth/Makefile
diff --git a/j1eforth/README.md b/docs/j1eforth/README.md
index cca83c6..cca83c6 100644
--- a/j1eforth/README.md
+++ b/docs/j1eforth/README.md
diff --git a/j1eforth/fpga/papilio-pro-j1.xise b/docs/j1eforth/fpga/papilio-pro-j1.xise
index d41153c..d41153c 100644
--- a/j1eforth/fpga/papilio-pro-j1.xise
+++ b/docs/j1eforth/fpga/papilio-pro-j1.xise
diff --git a/j1eforth/fpga/papilio_pro_j1.bit b/docs/j1eforth/fpga/papilio_pro_j1.bit
index 1c1372f..1c1372f 100644
--- a/j1eforth/fpga/papilio_pro_j1.bit
+++ b/docs/j1eforth/fpga/papilio_pro_j1.bit
Binary files differ
diff --git a/j1eforth/fpga/src/Rxunit.vhd b/docs/j1eforth/fpga/src/Rxunit.vhd
index c30a30e..c30a30e 100644
--- a/j1eforth/fpga/src/Rxunit.vhd
+++ b/docs/j1eforth/fpga/src/Rxunit.vhd
diff --git a/j1eforth/fpga/src/Txunit.vhd b/docs/j1eforth/fpga/src/Txunit.vhd
index bdf5b5d..bdf5b5d 100644
--- a/j1eforth/fpga/src/Txunit.vhd
+++ b/docs/j1eforth/fpga/src/Txunit.vhd
diff --git a/j1eforth/fpga/src/clock.vhd b/docs/j1eforth/fpga/src/clock.vhd
index 31536e7..31536e7 100644
--- a/j1eforth/fpga/src/clock.vhd
+++ b/docs/j1eforth/fpga/src/clock.vhd
diff --git a/j1eforth/fpga/src/j1.v b/docs/j1eforth/fpga/src/j1.v
index db8901a..db8901a 100644
--- a/j1eforth/fpga/src/j1.v
+++ b/docs/j1eforth/fpga/src/j1.v
diff --git a/j1eforth/fpga/src/miniuart.vhd b/docs/j1eforth/fpga/src/miniuart.vhd
index 2ee4f3c..2ee4f3c 100644
--- a/j1eforth/fpga/src/miniuart.vhd
+++ b/docs/j1eforth/fpga/src/miniuart.vhd
diff --git a/j1eforth/fpga/src/papilio-pro-j1.vhd b/docs/j1eforth/fpga/src/papilio-pro-j1.vhd
index 4680c07..4680c07 100644
--- a/j1eforth/fpga/src/papilio-pro-j1.vhd
+++ b/docs/j1eforth/fpga/src/papilio-pro-j1.vhd
diff --git a/j1eforth/fpga/src/papilio-pro.ucf b/docs/j1eforth/fpga/src/papilio-pro.ucf
index 338cd2d..338cd2d 100644
--- a/j1eforth/fpga/src/papilio-pro.ucf
+++ b/docs/j1eforth/fpga/src/papilio-pro.ucf
diff --git a/j1eforth/fpga/src/utils.vhd b/docs/j1eforth/fpga/src/utils.vhd
index 19eb1f7..19eb1f7 100644
--- a/j1eforth/fpga/src/utils.vhd
+++ b/docs/j1eforth/fpga/src/utils.vhd
diff --git a/j1eforth/fpga/test/miniuart2_tb.vhd b/docs/j1eforth/fpga/test/miniuart2_tb.vhd
index 6049582..6049582 100644
--- a/j1eforth/fpga/test/miniuart2_tb.vhd
+++ b/docs/j1eforth/fpga/test/miniuart2_tb.vhd
diff --git a/j1eforth/fpga/test/papilio_pro_j1_tb.vhd b/docs/j1eforth/fpga/test/papilio_pro_j1_tb.vhd
index 3aedf53..3aedf53 100644
--- a/j1eforth/fpga/test/papilio_pro_j1_tb.vhd
+++ b/docs/j1eforth/fpga/test/papilio_pro_j1_tb.vhd
diff --git a/j1eforth/ipv4.4th b/docs/j1eforth/ipv4.4th
index 080686c..080686c 100644
--- a/j1eforth/ipv4.4th
+++ b/docs/j1eforth/ipv4.4th
diff --git a/j1eforth/j1.4th b/docs/j1eforth/j1.4th
index 7a1a900..7a1a900 100644
--- a/j1eforth/j1.4th
+++ b/docs/j1eforth/j1.4th
diff --git a/j1eforth/j1.c b/docs/j1eforth/j1.c
index 926adb5..926adb5 100644
--- a/j1eforth/j1.c
+++ b/docs/j1eforth/j1.c
diff --git a/jonesforth/Dockerfile b/docs/jonesforth/Dockerfile
index 14c1c0a..14c1c0a 100644
--- a/jonesforth/Dockerfile
+++ b/docs/jonesforth/Dockerfile
diff --git a/jonesforth/docker-compose.yml b/docs/jonesforth/docker-compose.yml
index b78971c..b78971c 100644
--- a/jonesforth/docker-compose.yml
+++ b/docs/jonesforth/docker-compose.yml
diff --git a/jonesforth/jonesforth.S b/docs/jonesforth/jonesforth.S
index 8d13286..8d13286 100644
--- a/jonesforth/jonesforth.S
+++ b/docs/jonesforth/jonesforth.S
diff --git a/jonesforth/jonesforth.fs b/docs/jonesforth/jonesforth.fs
index 5a998cc..5a998cc 100644
--- a/jonesforth/jonesforth.fs
+++ b/docs/jonesforth/jonesforth.fs
diff --git a/jonesforth/run.sh b/docs/jonesforth/run.sh
index 8ba83b3..8ba83b3 100755
--- a/jonesforth/run.sh
+++ b/docs/jonesforth/run.sh
diff --git a/doc/learnforth.fs b/docs/learnforth.fs
index 2f8efe7..2f8efe7 100644
--- a/doc/learnforth.fs
+++ b/docs/learnforth.fs
diff --git a/docs/samples.fs b/docs/samples.fs
new file mode 100644
index 0000000..3371453
--- /dev/null
+++ b/docs/samples.fs
@@ -0,0 +1,2 @@
+: fibonacci dup 2 < if drop 1 else dup 2 - recurse swap 1 - recurse + then ;
+: fibnums for i fibonacci u. next ;
diff --git a/doc/tcjassem.txt b/docs/tcjassem.txt
index 97ed164..97ed164 100644
--- a/doc/tcjassem.txt
+++ b/docs/tcjassem.txt
diff --git a/go.mod b/go.mod
index c19f998..7ac3990 100644
--- a/go.mod
+++ b/go.mod
@@ -1 +1,3 @@
module dim13.org/j1
+
+go 1.13