summary refs log tree commit diff
path: root/README.txt
diff options
context:
space:
mode:
authorIrene Knapp <ireneista@irenes.space>2026-09-09 22:54:07 -0700
committerIrene Knapp <ireneista@irenes.space>2026-09-09 22:54:07 -0700
commitc4489fe965c1b955229f671d893ca1db46394def (patch)
treef603061ed68df2d99111d6220a10eb06a05e7e1c /README.txt
parent2718d51422f83c53104b0daa849419784a1c91b5 (diff)
deal better with return values when underflowing the substring entry stack
it's now able to run all the way to the end of the label transform, inside the hex transform. the output leaves much to be desired, but it runs.

Force-Push: yes
Change-Id: I7cac39df599e8081fac6b050dfeb34e598bb54eb
Diffstat (limited to 'README.txt')
-rw-r--r--README.txt20
1 files changed, 16 insertions, 4 deletions
diff --git a/README.txt b/README.txt
index e3e12c1..384c8f9 100644
--- a/README.txt
+++ b/README.txt
@@ -213,8 +213,20 @@ you're metacircular.)
 
   Although the hex transform doesn't yet work on Forth programs (only programs
 written in Evocation-assembly), if you intend to play around with this you may
-wish to know how to attempt to run it on things. There is not yet a
-recommended way to run the hex transform on evoke.e, but when there is it will
-look like appending most of the Evocation-in-Evocation build steps to the
-hex.hex build steps, swapping them in where hex.e is now.
+wish to know how to attempt to run it on things. The latest draft way to do
+that is:
+
+  $ (cat labels.e elf.e transform.e; echo 's" xyzzy" allocate-string dup 1048576 read-to-buffer'; cat core.e linux.e output.e amd64.e execution-support.e log-load.e dynamic.e input.e interpret.e flow-control.e linux-dynamic.e labels.e elf.e transform.e execution.e; echo 's" pyrzqxgl" allocate-string dup 262144 read-to-buffer '; cat core.e linux.e output.e amd64.e execution-support.e log-load.e; echo pyrzqxgl swap 262144 read-to-buffer; cat core.e linux.e output.e amd64.e execution-support.e log-load.e dynamic.e input.e interpret.e flow-control.e linux-dynamic.e; echo pyrzqxgl; cat evoke.e; echo 'xyzzy s" evoke-source" variable 1024 1024 * allocate s" evoke-binary" variable 1024 1024 * allocate s" evoke-metadata" variable evoke-metadata evoke-binary dup evoke-source 5 roll hex-transform bye ' ) | ./evoke > evoke.hex
+
+  It will likely crash somewhere inside label-loop. You may find it helpful
+to modify transform.e's definition of hex-sys-write-replacement by adding
+the words "sys-write" and "exit" at the start of it, thereby turning it off
+and allowing crash dumps to print.
+
+  It's worth understanding that, although the log-load transform's output
+comes first in the executable, it conceptually depends on the label transform,
+and is unlikely to get anywhere until that's complete. For development
+purposes, it may make sense to comment out the call to output-warm-start in
+evoke.e and set a placeholder value for the warm-start label. Now running it
+will cause failure somewhere inside the log-load transform; get debugging! :)