about summary refs log tree commit diff
path: root/evoke.hex
diff options
context:
space:
mode:
Diffstat (limited to 'evoke.hex')
-rw-r--r--evoke.hex1248
1 files changed, 1244 insertions, 4 deletions
diff --git a/evoke.hex b/evoke.hex
index d819d68..665ae9b 100644
--- a/evoke.hex
+++ b/evoke.hex
@@ -49,8 +49,8 @@
   00 00 00 08 00 00 00 00           ~ *virtual address
   00 00 00 00 00 00 00 00           ~ physical address (ignored)
 
-  40 9e 0a 00 00 00 00 00           ~ *size in file
-  40 9e 0a 00 00 00 00 00           ~ *size in memory
+  78 c2 0a 00 00 00 00 00           ~ *size in file
+  78 c2 0a 00 00 00 00 00           ~ *size in memory
 
   00 00 00 00 00 00 00 00           ~ segment alignment
 
@@ -111497,6 +111497,1246 @@
   ~ ""
   0a
 
+  ~ "~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+  7e 20 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e
+  7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e
+  7e 7e 7e 7e 7e 0a
+
+  ~ "~ ~~ Top-level executable builders ~~"
+  7e 20 7e 7e 20 54 6f 70 2d 6c 65 76 65 6c 20 65
+  78 65 63 75 74 61 62 6c 65 20 62 75 69 6c 64 65
+  72 73 20 7e 7e 0a
+
+  ~ "~ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
+  7e 20 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e
+  7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e 7e
+  7e 7e 7e 7e 7e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~   Although it's perfectly possible to manually invoke the"
+  ~ " pieces of the"
+  7e 20 20 20 41 6c 74 68 6f 75 67 68 20 69 74 27
+  73 20 70 65 72 66 65 63 74 6c 79 20 70 6f 73 73
+  69 62 6c 65 20 74 6f 20 6d 61 6e 75 61 6c 6c 79
+  20 69 6e 76 6f 6b 65 20 74 68 65 20 70 69 65 63
+  65 73 20 6f 66 20 74 68 65 0a
+
+  ~ "~ compiler, it's inconvenient to do so. This file has"
+  ~ " helper words which kick"
+  7e 20 63 6f 6d 70 69 6c 65 72 2c 20 69 74 27 73
+  20 69 6e 63 6f 6e 76 65 6e 69 65 6e 74 20 74 6f
+  20 64 6f 20 73 6f 2e 20 54 68 69 73 20 66 69 6c
+  65 20 68 61 73 20 68 65 6c 70 65 72 20 77 6f 72
+  64 73 20 77 68 69 63 68 20 6b 69 63 6b 0a
+
+  ~ "~ off the process of compilation from the top level."
+  7e 20 6f 66 66 20 74 68 65 20 70 72 6f 63 65 73
+  73 20 6f 66 20 63 6f 6d 70 69 6c 61 74 69 6f 6e
+  20 66 72 6f 6d 20 74 68 65 20 74 6f 70 20 6c 65
+  76 65 6c 2e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~   The two most important words in the top-level facility"
+  ~ " are "enchant","
+  7e 20 20 20 54 68 65 20 74 77 6f 20 6d 6f 73 74
+  20 69 6d 70 6f 72 74 61 6e 74 20 77 6f 72 64 73
+  20 69 6e 20 74 68 65 20 74 6f 70 2d 6c 65 76 65
+  6c 20 66 61 63 69 6c 69 74 79 20 61 72 65 20 22
+  65 6e 63 68 61 6e 74 22 2c 0a
+
+  ~ "~ which produces an executable binary, and "inscribe","
+  ~ " which produces a"
+  7e 20 77 68 69 63 68 20 70 72 6f 64 75 63 65 73
+  20 61 6e 20 65 78 65 63 75 74 61 62 6c 65 20 62
+  69 6e 61 72 79 2c 20 61 6e 64 20 22 69 6e 73 63
+  72 69 62 65 22 2c 20 77 68 69 63 68 20 70 72 6f
+  64 75 63 65 73 20 61 0a
+
+  ~ "~ commented hex dump corresponding to that same binary."
+  7e 20 63 6f 6d 6d 65 6e 74 65 64 20 68 65 78 20
+  64 75 6d 70 20 63 6f 72 72 65 73 70 6f 6e 64 69
+  6e 67 20 74 6f 20 74 68 61 74 20 73 61 6d 65 20
+  62 69 6e 61 72 79 2e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~   Significant effort has been expended to make sure that"
+  ~ " the interfaces to"
+  7e 20 20 20 53 69 67 6e 69 66 69 63 61 6e 74 20
+  65 66 66 6f 72 74 20 68 61 73 20 62 65 65 6e 20
+  65 78 70 65 6e 64 65 64 20 74 6f 20 6d 61 6b 65
+  20 73 75 72 65 20 74 68 61 74 20 74 68 65 20 69
+  6e 74 65 72 66 61 63 65 73 20 74 6f 0a
+
+  ~ "~ "enchant" and "inscribe" are the same, despite them"
+  ~ " notionally existing at"
+  7e 20 22 65 6e 63 68 61 6e 74 22 20 61 6e 64 20
+  22 69 6e 73 63 72 69 62 65 22 20 61 72 65 20 74
+  68 65 20 73 61 6d 65 2c 20 64 65 73 70 69 74 65
+  20 74 68 65 6d 20 6e 6f 74 69 6f 6e 61 6c 6c 79
+  20 65 78 69 73 74 69 6e 67 20 61 74 0a
+
+  ~ "~ different levels of abstraction."
+  7e 20 64 69 66 66 65 72 65 6e 74 20 6c 65 76 65
+  6c 73 20 6f 66 20 61 62 73 74 72 61 63 74 69 6f
+  6e 2e 0a
+
+  ~ ""
+  0a
+
+  ~ ""
+  0a
+
+  ~ "~   This accepts a pointer to an existing buffer for file"
+  ~ " contents to be"
+  7e 20 20 20 54 68 69 73 20 61 63 63 65 70 74 73
+  20 61 20 70 6f 69 6e 74 65 72 20 74 6f 20 61 6e
+  20 65 78 69 73 74 69 6e 67 20 62 75 66 66 65 72
+  20 66 6f 72 20 66 69 6c 65 20 63 6f 6e 74 65 6e
+  74 73 20 74 6f 20 62 65 0a
+
+  ~ "~ appended to, and another pointer to the start of a packed"
+  ~ " list of filenames."
+  7e 20 61 70 70 65 6e 64 65 64 20 74 6f 2c 20 61
+  6e 64 20 61 6e 6f 74 68 65 72 20 70 6f 69 6e 74
+  65 72 20 74 6f 20 74 68 65 20 73 74 61 72 74 20
+  6f 66 20 61 20 70 61 63 6b 65 64 20 6c 69 73 74
+  20 6f 66 20 66 69 6c 65 6e 61 6d 65 73 2e 0a
+
+  ~ "~ The filename list consists of null-terminated strings,"
+  ~ " all directly abutting"
+  7e 20 54 68 65 20 66 69 6c 65 6e 61 6d 65 20 6c
+  69 73 74 20 63 6f 6e 73 69 73 74 73 20 6f 66 20
+  6e 75 6c 6c 2d 74 65 72 6d 69 6e 61 74 65 64 20
+  73 74 72 69 6e 67 73 2c 20 61 6c 6c 20 64 69 72
+  65 63 74 6c 79 20 61 62 75 74 74 69 6e 67 0a
+
+  ~ "~ each other in memory, terminated by a zero-length string"
+  ~ " (which can also"
+  7e 20 65 61 63 68 20 6f 74 68 65 72 20 69 6e 20
+  6d 65 6d 6f 72 79 2c 20 74 65 72 6d 69 6e 61 74
+  65 64 20 62 79 20 61 20 7a 65 72 6f 2d 6c 65 6e
+  67 74 68 20 73 74 72 69 6e 67 20 28 77 68 69 63
+  68 20 63 61 6e 20 61 6c 73 6f 0a
+
+  ~ "~ be thought of as a freestanding null byte)."
+  7e 20 62 65 20 74 68 6f 75 67 68 74 20 6f 66 20
+  61 73 20 61 20 66 72 65 65 73 74 61 6e 64 69 6e
+  67 20 6e 75 6c 6c 20 62 79 74 65 29 2e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~   It reads the contents of the named files into the"
+  ~ " buffer, with no"
+  7e 20 20 20 49 74 20 72 65 61 64 73 20 74 68 65
+  20 63 6f 6e 74 65 6e 74 73 20 6f 66 20 74 68 65
+  20 6e 61 6d 65 64 20 66 69 6c 65 73 20 69 6e 74
+  6f 20 74 68 65 20 62 75 66 66 65 72 2c 20 77 69
+  74 68 20 6e 6f 0a
+
+  ~ "~ separation between them, and returns a pointer to the end"
+  ~ " of the contents."
+  7e 20 73 65 70 61 72 61 74 69 6f 6e 20 62 65 74
+  77 65 65 6e 20 74 68 65 6d 2c 20 61 6e 64 20 72
+  65 74 75 72 6e 73 20 61 20 70 6f 69 6e 74 65 72
+  20 74 6f 20 74 68 65 20 65 6e 64 20 6f 66 20 74
+  68 65 20 63 6f 6e 74 65 6e 74 73 2e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~ (buffer point, filename list point -- buffer point)"
+  7e 20 28 62 75 66 66 65 72 20 70 6f 69 6e 74 2c
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 20 70
+  6f 69 6e 74 20 2d 2d 20 62 75 66 66 65 72 20 70
+  6f 69 6e 74 29 0a
+
+  ~ ": read-inputs-from-filename-list"
+  3a 20 72 65 61 64 2d 69 6e 70 75 74 73 2d 66 72
+  6f 6d 2d 66 69 6c 65 6e 61 6d 65 2d 6c 69 73 74
+  0a
+
+  ~ "  ~ (buffer point, filename list point)"
+  20 20 7e 20 28 62 75 66 66 65 72 20 70 6f 69 6e
+  74 2c 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74
+  20 70 6f 69 6e 74 29 0a
+
+  ~ "  { dup 8@ } {"
+  20 20 7b 20 64 75 70 20 38 40 20 7d 20 7b 0a
+
+  ~ "    dup 3roll swap pack-file-contents swap"
+  20 20 20 20 64 75 70 20 33 72 6f 6c 6c 20 73 77
+  61 70 20 70 61 63 6b 2d 66 69 6c 65 2d 63 6f 6e
+  74 65 6e 74 73 20 73 77 61 70 0a
+
+  ~ "    dup stringlen 1+ +"
+  20 20 20 20 64 75 70 20 73 74 72 69 6e 67 6c 65
+  6e 20 31 2b 20 2b 0a
+
+  ~ "  } while drop ;"
+  20 20 7d 20 77 68 69 6c 65 20 64 72 6f 70 20 3b
+  0a
+
+  ~ ""
+  0a
+
+  ~ ""
+  0a
+
+  ~ "~ (static source filename list, dynamic source filename"
+  ~ " list, boot source"
+  7e 20 28 73 74 61 74 69 63 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20
+  64 79 6e 61 6d 69 63 20 73 6f 75 72 63 65 20 66
+  69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20 62 6f
+  6f 74 20 73 6f 75 72 63 65 0a
+
+  ~ "~  filename list -- source to precompile, source to copy to"
+  ~ " log,"
+  7e 20 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74
+  20 2d 2d 20 73 6f 75 72 63 65 20 74 6f 20 70 72
+  65 63 6f 6d 70 69 6c 65 2c 20 73 6f 75 72 63 65
+  20 74 6f 20 63 6f 70 79 20 74 6f 20 6c 6f 67 2c
+  0a
+
+  ~ "~  source to copy textually)"
+  7e 20 20 73 6f 75 72 63 65 20 74 6f 20 63 6f 70
+  79 20 74 65 78 74 75 61 6c 6c 79 29 0a
+
+  ~ ": read-inputs"
+  3a 20 72 65 61 64 2d 69 6e 70 75 74 73 0a
+
+  ~ "  here @ dup"
+  20 20 68 65 72 65 20 40 20 64 75 70 0a
+
+  ~ "  ~ (static source filename list, dynamic source filename"
+  ~ " list,"
+  20 20 7e 20 28 73 74 61 74 69 63 20 73 6f 75 72
+  63 65 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74
+  2c 20 64 79 6e 61 6d 69 63 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  boot source filename list, source to precompile,"
+  ~ " buffer point)"
+  20 20 7e 20 20 62 6f 6f 74 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20
+  73 6f 75 72 63 65 20 74 6f 20 70 72 65 63 6f 6d
+  70 69 6c 65 2c 20 62 75 66 66 65 72 20 70 6f 69
+  6e 74 29 0a
+
+  ~ "  4 pick read-inputs-from-filename-list"
+  20 20 34 20 70 69 63 6b 20 72 65 61 64 2d 69 6e
+  70 75 74 73 2d 66 72 6f 6d 2d 66 69 6c 65 6e 61
+  6d 65 2d 6c 69 73 74 0a
+
+  ~ "  0 pack8 8 packalign here !"
+  20 20 30 20 70 61 63 6b 38 20 38 20 70 61 63 6b
+  61 6c 69 67 6e 20 68 65 72 65 20 21 0a
+
+  ~ "  ~ (static source filename list, dynamic source filename"
+  ~ " list,"
+  20 20 7e 20 28 73 74 61 74 69 63 20 73 6f 75 72
+  63 65 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74
+  2c 20 64 79 6e 61 6d 69 63 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  boot source filename list, source to precompile)"
+  20 20 7e 20 20 62 6f 6f 74 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20
+  73 6f 75 72 63 65 20 74 6f 20 70 72 65 63 6f 6d
+  70 69 6c 65 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  here @ dup"
+  20 20 68 65 72 65 20 40 20 64 75 70 0a
+
+  ~ "  ~ (static source filename list, dynamic source filename"
+  ~ " list,"
+  20 20 7e 20 28 73 74 61 74 69 63 20 73 6f 75 72
+  63 65 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74
+  2c 20 64 79 6e 61 6d 69 63 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  boot source filename list, source to precompile,"
+  ~ " source to copy to log,"
+  20 20 7e 20 20 62 6f 6f 74 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20
+  73 6f 75 72 63 65 20 74 6f 20 70 72 65 63 6f 6d
+  70 69 6c 65 2c 20 73 6f 75 72 63 65 20 74 6f 20
+  63 6f 70 79 20 74 6f 20 6c 6f 67 2c 0a
+
+  ~ "  ~  buffer point)"
+  20 20 7e 20 20 62 75 66 66 65 72 20 70 6f 69 6e
+  74 29 0a
+
+  ~ "  5 pick read-inputs-from-filename-list"
+  20 20 35 20 70 69 63 6b 20 72 65 61 64 2d 69 6e
+  70 75 74 73 2d 66 72 6f 6d 2d 66 69 6c 65 6e 61
+  6d 65 2d 6c 69 73 74 0a
+
+  ~ "  4 pick read-inputs-from-filename-list"
+  20 20 34 20 70 69 63 6b 20 72 65 61 64 2d 69 6e
+  70 75 74 73 2d 66 72 6f 6d 2d 66 69 6c 65 6e 61
+  6d 65 2d 6c 69 73 74 0a
+
+  ~ "  0 pack8 8 packalign here !"
+  20 20 30 20 70 61 63 6b 38 20 38 20 70 61 63 6b
+  61 6c 69 67 6e 20 68 65 72 65 20 21 0a
+
+  ~ "  ~ (static source filename list, dynamic source filename"
+  ~ " list,"
+  20 20 7e 20 28 73 74 61 74 69 63 20 73 6f 75 72
+  63 65 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74
+  2c 20 64 79 6e 61 6d 69 63 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  boot source filename list, source to precompile,"
+  ~ " source to copy to log)"
+  20 20 7e 20 20 62 6f 6f 74 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20
+  73 6f 75 72 63 65 20 74 6f 20 70 72 65 63 6f 6d
+  70 69 6c 65 2c 20 73 6f 75 72 63 65 20 74 6f 20
+  63 6f 70 79 20 74 6f 20 6c 6f 67 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  here @ dup"
+  20 20 68 65 72 65 20 40 20 64 75 70 0a
+
+  ~ "  ~ (static source filename list, dynamic source filename"
+  ~ " list,"
+  20 20 7e 20 28 73 74 61 74 69 63 20 73 6f 75 72
+  63 65 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74
+  2c 20 64 79 6e 61 6d 69 63 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  boot source filename list, source to precompile,"
+  ~ " source to copy to log,"
+  20 20 7e 20 20 62 6f 6f 74 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20
+  73 6f 75 72 63 65 20 74 6f 20 70 72 65 63 6f 6d
+  70 69 6c 65 2c 20 73 6f 75 72 63 65 20 74 6f 20
+  63 6f 70 79 20 74 6f 20 6c 6f 67 2c 0a
+
+  ~ "  ~  source to copy textually, buffer point)"
+  20 20 7e 20 20 73 6f 75 72 63 65 20 74 6f 20 63
+  6f 70 79 20 74 65 78 74 75 61 6c 6c 79 2c 20 62
+  75 66 66 65 72 20 70 6f 69 6e 74 29 0a
+
+  ~ "  4 pick read-inputs-from-filename-list"
+  20 20 34 20 70 69 63 6b 20 72 65 61 64 2d 69 6e
+  70 75 74 73 2d 66 72 6f 6d 2d 66 69 6c 65 6e 61
+  6d 65 2d 6c 69 73 74 0a
+
+  ~ "  0 pack8 8 packalign here !"
+  20 20 30 20 70 61 63 6b 38 20 38 20 70 61 63 6b
+  61 6c 69 67 6e 20 68 65 72 65 20 21 0a
+
+  ~ "  ~ (static source filename list, dynamic source filename"
+  ~ " list,"
+  20 20 7e 20 28 73 74 61 74 69 63 20 73 6f 75 72
+  63 65 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74
+  2c 20 64 79 6e 61 6d 69 63 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  boot source filename list, source to precompile,"
+  ~ " source to copy to log,"
+  20 20 7e 20 20 62 6f 6f 74 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20
+  73 6f 75 72 63 65 20 74 6f 20 70 72 65 63 6f 6d
+  70 69 6c 65 2c 20 73 6f 75 72 63 65 20 74 6f 20
+  63 6f 70 79 20 74 6f 20 6c 6f 67 2c 0a
+
+  ~ "  ~  source to copy textually)"
+  20 20 7e 20 20 73 6f 75 72 63 65 20 74 6f 20 63
+  6f 70 79 20 74 65 78 74 75 61 6c 6c 79 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  4 roll drop 4 roll drop 4 roll drop ;"
+  20 20 34 20 72 6f 6c 6c 20 64 72 6f 70 20 34 20
+  72 6f 6c 6c 20 64 72 6f 70 20 34 20 72 6f 6c 6c
+  20 64 72 6f 70 20 3b 0a
+
+  ~ ""
+  0a
+
+  ~ ""
+  0a
+
+  ~ "~ (output memory start, current output point,"
+  7e 20 28 6f 75 74 70 75 74 20 6d 65 6d 6f 72 79
+  20 73 74 61 72 74 2c 20 63 75 72 72 65 6e 74 20
+  6f 75 74 70 75 74 20 70 6f 69 6e 74 2c 0a
+
+  ~ "~  compile-header execution token, compile-footer execution"
+  ~ " token,"
+  7e 20 20 63 6f 6d 70 69 6c 65 2d 68 65 61 64 65
+  72 20 65 78 65 63 75 74 69 6f 6e 20 74 6f 6b 65
+  6e 2c 20 63 6f 6d 70 69 6c 65 2d 66 6f 6f 74 65
+  72 20 65 78 65 63 75 74 69 6f 6e 20 74 6f 6b 65
+  6e 2c 0a
+
+  ~ "~  source to precompile, source to copy to log, source to"
+  ~ " include textually"
+  7e 20 20 73 6f 75 72 63 65 20 74 6f 20 70 72 65
+  63 6f 6d 70 69 6c 65 2c 20 73 6f 75 72 63 65 20
+  74 6f 20 63 6f 70 79 20 74 6f 20 6c 6f 67 2c 20
+  73 6f 75 72 63 65 20 74 6f 20 69 6e 63 6c 75 64
+  65 20 74 65 78 74 75 61 6c 6c 79 0a
+
+  ~ "~  -- output memory start, current output point)"
+  7e 20 20 2d 2d 20 6f 75 74 70 75 74 20 6d 65 6d
+  6f 72 79 20 73 74 61 72 74 2c 20 63 75 72 72 65
+  6e 74 20 6f 75 74 70 75 74 20 70 6f 69 6e 74 29
+  0a
+
+  ~ ": output-contents"
+  3a 20 6f 75 74 70 75 74 2d 63 6f 6e 74 65 6e 74
+  73 0a
+
+  ~ "  7 roll 7 roll"
+  20 20 37 20 72 6f 6c 6c 20 37 20 72 6f 6c 6c 0a
+
+  ~ "  ~ (compile-header execution token, compile-footer"
+  ~ " execution token,"
+  20 20 7e 20 28 63 6f 6d 70 69 6c 65 2d 68 65 61
+  64 65 72 20 65 78 65 63 75 74 69 6f 6e 20 74 6f
+  6b 65 6e 2c 20 63 6f 6d 70 69 6c 65 2d 66 6f 6f
+  74 65 72 20 65 78 65 63 75 74 69 6f 6e 20 74 6f
+  6b 65 6e 2c 0a
+
+  ~ "  ~  source to precompile, source to copy to log, source to"
+  ~ " include textually,"
+  20 20 7e 20 20 73 6f 75 72 63 65 20 74 6f 20 70
+  72 65 63 6f 6d 70 69 6c 65 2c 20 73 6f 75 72 63
+  65 20 74 6f 20 63 6f 70 79 20 74 6f 20 6c 6f 67
+  2c 20 73 6f 75 72 63 65 20 74 6f 20 69 6e 63 6c
+  75 64 65 20 74 65 78 74 75 61 6c 6c 79 2c 0a
+
+  ~ "  ~  output memory start, current output point)"
+  20 20 7e 20 20 6f 75 74 70 75 74 20 6d 65 6d 6f
+  72 79 20 73 74 61 72 74 2c 20 63 75 72 72 65 6e
+  74 20 6f 75 74 70 75 74 20 70 6f 69 6e 74 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~ Invoke the provided header callback."
+  20 20 7e 20 49 6e 76 6f 6b 65 20 74 68 65 20 70
+  72 6f 76 69 64 65 64 20 68 65 61 64 65 72 20 63
+  61 6c 6c 62 61 63 6b 2e 0a
+
+  ~ "  7 roll execute"
+  20 20 37 20 72 6f 6c 6c 20 65 78 65 63 75 74 65
+  0a
+
+  ~ "  ~ (compile-footer execution token, source to precompile,"
+  20 20 7e 20 28 63 6f 6d 70 69 6c 65 2d 66 6f 6f
+  74 65 72 20 65 78 65 63 75 74 69 6f 6e 20 74 6f
+  6b 65 6e 2c 20 73 6f 75 72 63 65 20 74 6f 20 70
+  72 65 63 6f 6d 70 69 6c 65 2c 0a
+
+  ~ "  ~  source to copy to log, source to include textually,"
+  ~ " output memory start,"
+  20 20 7e 20 20 73 6f 75 72 63 65 20 74 6f 20 63
+  6f 70 79 20 74 6f 20 6c 6f 67 2c 20 73 6f 75 72
+  63 65 20 74 6f 20 69 6e 63 6c 75 64 65 20 74 65
+  78 74 75 61 6c 6c 79 2c 20 6f 75 74 70 75 74 20
+  6d 65 6d 6f 72 79 20 73 74 61 72 74 2c 0a
+
+  ~ "  ~  current output point)"
+  20 20 7e 20 20 63 75 72 72 65 6e 74 20 6f 75 74
+  70 75 74 20 70 6f 69 6e 74 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  elf-file-header"
+  20 20 65 6c 66 2d 66 69 6c 65 2d 68 65 61 64 65
+  72 0a
+
+  ~ "  elf-program-header"
+  20 20 65 6c 66 2d 70 72 6f 67 72 61 6d 2d 68 65
+  61 64 65 72 0a
+
+  ~ ""
+  0a
+
+  ~ "  output-cold-start"
+  20 20 6f 75 74 70 75 74 2d 63 6f 6c 64 2d 73 74
+  61 72 74 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~ Warm start and the log-loaded source."
+  20 20 7e 20 57 61 72 6d 20 73 74 61 72 74 20 61
+  6e 64 20 74 68 65 20 6c 6f 67 2d 6c 6f 61 64 65
+  64 20 73 6f 75 72 63 65 2e 0a
+
+  ~ "  output-warm-start-header"
+  20 20 6f 75 74 70 75 74 2d 77 61 72 6d 2d 73 74
+  61 72 74 2d 68 65 61 64 65 72 0a
+
+  ~ "  4 roll log-load-transform"
+  20 20 34 20 72 6f 6c 6c 20 6c 6f 67 2d 6c 6f 61
+  64 2d 74 72 61 6e 73 66 6f 72 6d 0a
+
+  ~ "  ~ (compile-footer execution token, source to precompile,"
+  20 20 7e 20 28 63 6f 6d 70 69 6c 65 2d 66 6f 6f
+  74 65 72 20 65 78 65 63 75 74 69 6f 6e 20 74 6f
+  6b 65 6e 2c 20 73 6f 75 72 63 65 20 74 6f 20 70
+  72 65 63 6f 6d 70 69 6c 65 2c 0a
+
+  ~ "  ~  source to include textually, output memory start,"
+  ~ " current output point)"
+  20 20 7e 20 20 73 6f 75 72 63 65 20 74 6f 20 69
+  6e 63 6c 75 64 65 20 74 65 78 74 75 61 6c 6c 79
+  2c 20 6f 75 74 70 75 74 20 6d 65 6d 6f 72 79 20
+  73 74 61 72 74 2c 20 63 75 72 72 65 6e 74 20 6f
+  75 74 70 75 74 20 70 6f 69 6e 74 29 0a
+
+  ~ "  output-warm-start-post-log-load-transform"
+  20 20 6f 75 74 70 75 74 2d 77 61 72 6d 2d 73 74
+  61 72 74 2d 70 6f 73 74 2d 6c 6f 67 2d 6c 6f 61
+  64 2d 74 72 61 6e 73 66 6f 72 6d 0a
+
+  ~ "  output-warm-start-attach-boot-source"
+  20 20 6f 75 74 70 75 74 2d 77 61 72 6d 2d 73 74
+  61 72 74 2d 61 74 74 61 63 68 2d 62 6f 6f 74 2d
+  73 6f 75 72 63 65 0a
+
+  ~ "  output-warm-start-footer"
+  20 20 6f 75 74 70 75 74 2d 77 61 72 6d 2d 73 74
+  61 72 74 2d 66 6f 6f 74 65 72 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~ The label-transformed source."
+  20 20 7e 20 54 68 65 20 6c 61 62 65 6c 2d 74 72
+  61 6e 73 66 6f 72 6d 65 64 20 73 6f 75 72 63 65
+  2e 0a
+
+  ~ "  4 roll label-transform"
+  20 20 34 20 72 6f 6c 6c 20 6c 61 62 65 6c 2d 74
+  72 61 6e 73 66 6f 72 6d 0a
+
+  ~ "  ~ (compile-footer execution token, source to include"
+  ~ " textually,"
+  20 20 7e 20 28 63 6f 6d 70 69 6c 65 2d 66 6f 6f
+  74 65 72 20 65 78 65 63 75 74 69 6f 6e 20 74 6f
+  6b 65 6e 2c 20 73 6f 75 72 63 65 20 74 6f 20 69
+  6e 63 6c 75 64 65 20 74 65 78 74 75 61 6c 6c 79
+  2c 0a
+
+  ~ "  ~  output memory start, current output point, final entry"
+  ~ " pointer)"
+  20 20 7e 20 20 6f 75 74 70 75 74 20 6d 65 6d 6f
+  72 79 20 73 74 61 72 74 2c 20 63 75 72 72 65 6e
+  74 20 6f 75 74 70 75 74 20 70 6f 69 6e 74 2c 20
+  66 69 6e 61 6c 20 65 6e 74 72 79 20 70 6f 69 6e
+  74 65 72 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~ The boot source."
+  20 20 7e 20 54 68 65 20 62 6f 6f 74 20 73 6f 75
+  72 63 65 2e 0a
+
+  ~ "  4 roll output-boot-source"
+  20 20 34 20 72 6f 6c 6c 20 6f 75 74 70 75 74 2d
+  62 6f 6f 74 2d 73 6f 75 72 63 65 0a
+
+  ~ "  ~ (compile-footer execution token, output memory start,"
+  20 20 7e 20 28 63 6f 6d 70 69 6c 65 2d 66 6f 6f
+  74 65 72 20 65 78 65 63 75 74 69 6f 6e 20 74 6f
+  6b 65 6e 2c 20 6f 75 74 70 75 74 20 6d 65 6d 6f
+  72 79 20 73 74 61 72 74 2c 0a
+
+  ~ "  ~  current output point)"
+  20 20 7e 20 20 63 75 72 72 65 6e 74 20 6f 75 74
+  70 75 74 20 70 6f 69 6e 74 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~ Invoke the provided footer callback."
+  20 20 7e 20 49 6e 76 6f 6b 65 20 74 68 65 20 70
+  72 6f 76 69 64 65 64 20 66 6f 6f 74 65 72 20 63
+  61 6c 6c 62 61 63 6b 2e 0a
+
+  ~ "  3roll execute"
+  20 20 33 72 6f 6c 6c 20 65 78 65 63 75 74 65 0a
+
+  ~ "  ~ (output memory start, current output point)"
+  20 20 7e 20 28 6f 75 74 70 75 74 20 6d 65 6d 6f
+  72 79 20 73 74 61 72 74 2c 20 63 75 72 72 65 6e
+  74 20 6f 75 74 70 75 74 20 70 6f 69 6e 74 29 0a
+
+  ~ "  ;"
+  20 20 3b 0a
+
+  ~ ""
+  0a
+
+  ~ ""
+  0a
+
+  ~ "~   Given a description of an executable, compile and"
+  ~ " output that executable"
+  7e 20 20 20 47 69 76 65 6e 20 61 20 64 65 73 63
+  72 69 70 74 69 6f 6e 20 6f 66 20 61 6e 20 65 78
+  65 63 75 74 61 62 6c 65 2c 20 63 6f 6d 70 69 6c
+  65 20 61 6e 64 20 6f 75 74 70 75 74 20 74 68 61
+  74 20 65 78 65 63 75 74 61 62 6c 65 0a
+
+  ~ "~ as runnable binary, to standard output."
+  7e 20 61 73 20 72 75 6e 6e 61 62 6c 65 20 62 69
+  6e 61 72 79 2c 20 74 6f 20 73 74 61 6e 64 61 72
+  64 20 6f 75 74 70 75 74 2e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~ (static source filename list, dynamic source filename"
+  ~ " list,"
+  7e 20 28 73 74 61 74 69 63 20 73 6f 75 72 63 65
+  20 66 69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20
+  64 79 6e 61 6d 69 63 20 73 6f 75 72 63 65 20 66
+  69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "~  boot source filename list, compile-header word name,"
+  7e 20 20 62 6f 6f 74 20 73 6f 75 72 63 65 20 66
+  69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 20 63 6f
+  6d 70 69 6c 65 2d 68 65 61 64 65 72 20 77 6f 72
+  64 20 6e 61 6d 65 2c 0a
+
+  ~ "~  compile-footer word name --)"
+  7e 20 20 63 6f 6d 70 69 6c 65 2d 66 6f 6f 74 65
+  72 20 77 6f 72 64 20 6e 61 6d 65 20 2d 2d 29 0a
+
+  ~ ": enchant-from-description"
+  3a 20 65 6e 63 68 61 6e 74 2d 66 72 6f 6d 2d 64
+  65 73 63 72 69 70 74 69 6f 6e 0a
+
+  ~ "  5 roll 5 roll 5 roll read-inputs"
+  20 20 35 20 72 6f 6c 6c 20 35 20 72 6f 6c 6c 20
+  35 20 72 6f 6c 6c 20 72 65 61 64 2d 69 6e 70 75
+  74 73 0a
+
+  ~ "  ~ (compile-header word name, compile-footer word name,"
+  ~ " source to precompile,"
+  20 20 7e 20 28 63 6f 6d 70 69 6c 65 2d 68 65 61
+  64 65 72 20 77 6f 72 64 20 6e 61 6d 65 2c 20 63
+  6f 6d 70 69 6c 65 2d 66 6f 6f 74 65 72 20 77 6f
+  72 64 20 6e 61 6d 65 2c 20 73 6f 75 72 63 65 20
+  74 6f 20 70 72 65 63 6f 6d 70 69 6c 65 2c 0a
+
+  ~ "  ~  source to copy to log, source to copy textually)"
+  20 20 7e 20 20 73 6f 75 72 63 65 20 74 6f 20 63
+  6f 70 79 20 74 6f 20 6c 6f 67 2c 20 73 6f 75 72
+  63 65 20 74 6f 20 63 6f 70 79 20 74 65 78 74 75
+  61 6c 6c 79 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~   We need an execution token to pass to label-loop."
+  ~ " There's no reason to"
+  20 20 7e 20 20 20 57 65 20 6e 65 65 64 20 61 6e
+  20 65 78 65 63 75 74 69 6f 6e 20 74 6f 6b 65 6e
+  20 74 6f 20 70 61 73 73 20 74 6f 20 6c 61 62 65
+  6c 2d 6c 6f 6f 70 2e 20 54 68 65 72 65 27 73 20
+  6e 6f 20 72 65 61 73 6f 6e 20 74 6f 0a
+
+  ~ "  ~ create a dictionary entry for it; we just allocate"
+  ~ " space for the"
+  20 20 7e 20 63 72 65 61 74 65 20 61 20 64 69 63
+  74 69 6f 6e 61 72 79 20 65 6e 74 72 79 20 66 6f
+  72 20 69 74 3b 20 77 65 20 6a 75 73 74 20 61 6c
+  6c 6f 63 61 74 65 20 73 70 61 63 65 20 66 6f 72
+  20 74 68 65 0a
+
+  ~ "  ~ executable word body directly."
+  20 20 7e 20 65 78 65 63 75 74 61 62 6c 65 20 77
+  6f 72 64 20 62 6f 64 79 20 64 69 72 65 63 74 6c
+  79 2e 0a
+
+  ~ "  here @"
+  20 20 68 65 72 65 20 40 0a
+
+  ~ "  docol ,"
+  20 20 64 6f 63 6f 6c 20 2c 0a
+
+  ~ "  6 roll find entry-to-execution-token literal"
+  20 20 36 20 72 6f 6c 6c 20 66 69 6e 64 20 65 6e
+  74 72 79 2d 74 6f 2d 65 78 65 63 75 74 69 6f 6e
+  2d 74 6f 6b 65 6e 20 6c 69 74 65 72 61 6c 0a
+
+  ~ "  5 roll find entry-to-execution-token literal"
+  20 20 35 20 72 6f 6c 6c 20 66 69 6e 64 20 65 6e
+  74 72 79 2d 74 6f 2d 65 78 65 63 75 74 69 6f 6e
+  2d 74 6f 6b 65 6e 20 6c 69 74 65 72 61 6c 0a
+
+  ~ "  4 roll literal"
+  20 20 34 20 72 6f 6c 6c 20 6c 69 74 65 72 61 6c
+  0a
+
+  ~ "  3 roll literal"
+  20 20 33 20 72 6f 6c 6c 20 6c 69 74 65 72 61 6c
+  0a
+
+  ~ "  swap literal"
+  20 20 73 77 61 70 20 6c 69 74 65 72 61 6c 0a
+
+  ~ "  ' output-contents entry-to-execution-token ,"
+  20 20 27 20 6f 75 74 70 75 74 2d 63 6f 6e 74 65
+  6e 74 73 20 65 6e 74 72 79 2d 74 6f 2d 65 78 65
+  63 75 74 69 6f 6e 2d 74 6f 6b 65 6e 20 2c 0a
+
+  ~ "  ' exit entry-to-execution-token ,"
+  20 20 27 20 65 78 69 74 20 65 6e 74 72 79 2d 74
+  6f 2d 65 78 65 63 75 74 69 6f 6e 2d 74 6f 6b 65
+  6e 20 2c 0a
+
+  ~ ""
+  0a
+
+  ~ "  label-loop"
+  20 20 6c 61 62 65 6c 2d 6c 6f 6f 70 0a
+
+  ~ "  1 3unroll sys-write"
+  20 20 31 20 33 75 6e 72 6f 6c 6c 20 73 79 73 2d
+  77 72 69 74 65 0a
+
+  ~ "  bye ;"
+  20 20 62 79 65 20 3b 0a
+
+  ~ ""
+  0a
+
+  ~ ""
+  0a
+
+  ~ "~   Given a filename containing the top-level source of an"
+  ~ " executable, compile"
+  7e 20 20 20 47 69 76 65 6e 20 61 20 66 69 6c 65
+  6e 61 6d 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20
+  74 68 65 20 74 6f 70 2d 6c 65 76 65 6c 20 73 6f
+  75 72 63 65 20 6f 66 20 61 6e 20 65 78 65 63 75
+  74 61 62 6c 65 2c 20 63 6f 6d 70 69 6c 65 0a
+
+  ~ "~ and output that executable as runnable binary, to"
+  ~ " standard output."
+  7e 20 61 6e 64 20 6f 75 74 70 75 74 20 74 68 61
+  74 20 65 78 65 63 75 74 61 62 6c 65 20 61 73 20
+  72 75 6e 6e 61 62 6c 65 20 62 69 6e 61 72 79 2c
+  20 74 6f 20 73 74 61 6e 64 61 72 64 20 6f 75 74
+  70 75 74 2e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~ (top-level source filename --)"
+  7e 20 28 74 6f 70 2d 6c 65 76 65 6c 20 73 6f 75
+  72 63 65 20 66 69 6c 65 6e 61 6d 65 20 2d 2d 29
+  0a
+
+  ~ ": enchant"
+  3a 20 65 6e 63 68 61 6e 74 0a
+
+  ~ "  include drop"
+  20 20 69 6e 63 6c 75 64 65 20 64 72 6f 70 0a
+
+  ~ "  s" latest-executable-data" find entry-to-execution-token"
+  ~ " execute"
+  20 20 73 22 20 6c 61 74 65 73 74 2d 65 78 65 63
+  75 74 61 62 6c 65 2d 64 61 74 61 22 20 66 69 6e
+  64 20 65 6e 74 72 79 2d 74 6f 2d 65 78 65 63 75
+  74 69 6f 6e 2d 74 6f 6b 65 6e 20 65 78 65 63 75
+  74 65 0a
+
+  ~ "  enchant-from-description ;"
+  20 20 65 6e 63 68 61 6e 74 2d 66 72 6f 6d 2d 64
+  65 73 63 72 69 70 74 69 6f 6e 20 3b 0a
+
+  ~ ""
+  0a
+
+  ~ ""
+  0a
+
+  ~ "~   Given a filename containing the top-level source of an"
+  ~ " executable, compile"
+  7e 20 20 20 47 69 76 65 6e 20 61 20 66 69 6c 65
+  6e 61 6d 65 20 63 6f 6e 74 61 69 6e 69 6e 67 20
+  74 68 65 20 74 6f 70 2d 6c 65 76 65 6c 20 73 6f
+  75 72 63 65 20 6f 66 20 61 6e 20 65 78 65 63 75
+  74 61 62 6c 65 2c 20 63 6f 6d 70 69 6c 65 0a
+
+  ~ "~ and output that executable as a commented hex dump, to"
+  ~ " standard output."
+  7e 20 61 6e 64 20 6f 75 74 70 75 74 20 74 68 61
+  74 20 65 78 65 63 75 74 61 62 6c 65 20 61 73 20
+  61 20 63 6f 6d 6d 65 6e 74 65 64 20 68 65 78 20
+  64 75 6d 70 2c 20 74 6f 20 73 74 61 6e 64 61 72
+  64 20 6f 75 74 70 75 74 2e 0a
+
+  ~ "~ Processing the hex dump through "hex" will give an"
+  ~ " identical binary to what"
+  7e 20 50 72 6f 63 65 73 73 69 6e 67 20 74 68 65
+  20 68 65 78 20 64 75 6d 70 20 74 68 72 6f 75 67
+  68 20 22 68 65 78 22 20 77 69 6c 6c 20 67 69 76
+  65 20 61 6e 20 69 64 65 6e 74 69 63 61 6c 20 62
+  69 6e 61 72 79 20 74 6f 20 77 68 61 74 0a
+
+  ~ "~ "enchant" would have produced, with the same inputs."
+  7e 20 22 65 6e 63 68 61 6e 74 22 20 77 6f 75 6c
+  64 20 68 61 76 65 20 70 72 6f 64 75 63 65 64 2c
+  20 77 69 74 68 20 74 68 65 20 73 61 6d 65 20 69
+  6e 70 75 74 73 2e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~   Please notice that if the thing we're compiling is"
+  ~ " "evoke" and its list"
+  7e 20 20 20 50 6c 65 61 73 65 20 6e 6f 74 69 63
+  65 20 74 68 61 74 20 69 66 20 74 68 65 20 74 68
+  69 6e 67 20 77 65 27 72 65 20 63 6f 6d 70 69 6c
+  69 6e 67 20 69 73 20 22 65 76 6f 6b 65 22 20 61
+  6e 64 20 69 74 73 20 6c 69 73 74 0a
+
+  ~ "~ of source files has changed, we'll be working with the"
+  ~ " new list, not"
+  7e 20 6f 66 20 73 6f 75 72 63 65 20 66 69 6c 65
+  73 20 68 61 73 20 63 68 61 6e 67 65 64 2c 20 77
+  65 27 6c 6c 20 62 65 20 77 6f 72 6b 69 6e 67 20
+  77 69 74 68 20 74 68 65 20 6e 65 77 20 6c 69 73
+  74 2c 20 6e 6f 74 0a
+
+  ~ "~ the old list. This is the same as what "enchant" does,"
+  ~ " and it's strictly"
+  7e 20 74 68 65 20 6f 6c 64 20 6c 69 73 74 2e 20
+  54 68 69 73 20 69 73 20 74 68 65 20 73 61 6d 65
+  20 61 73 20 77 68 61 74 20 22 65 6e 63 68 61 6e
+  74 22 20 64 6f 65 73 2c 20 61 6e 64 20 69 74 27
+  73 20 73 74 72 69 63 74 6c 79 0a
+
+  ~ "~ preferable behavior. We match the behavior of enchant as"
+  ~ " closely as"
+  7e 20 70 72 65 66 65 72 61 62 6c 65 20 62 65 68
+  61 76 69 6f 72 2e 20 57 65 20 6d 61 74 63 68 20
+  74 68 65 20 62 65 68 61 76 69 6f 72 20 6f 66 20
+  65 6e 63 68 61 6e 74 20 61 73 20 63 6c 6f 73 65
+  6c 79 20 61 73 0a
+
+  ~ "~ possible in terms of what's taken from the host compiler"
+  ~ " vs. the compiler"
+  7e 20 70 6f 73 73 69 62 6c 65 20 69 6e 20 74 65
+  72 6d 73 20 6f 66 20 77 68 61 74 27 73 20 74 61
+  6b 65 6e 20 66 72 6f 6d 20 74 68 65 20 68 6f 73
+  74 20 63 6f 6d 70 69 6c 65 72 20 76 73 2e 20 74
+  68 65 20 63 6f 6d 70 69 6c 65 72 0a
+
+  ~ "~ being compiled; see the description of "enchant", above,"
+  ~ " for more details"
+  7e 20 62 65 69 6e 67 20 63 6f 6d 70 69 6c 65 64
+  3b 20 73 65 65 20 74 68 65 20 64 65 73 63 72 69
+  70 74 69 6f 6e 20 6f 66 20 22 65 6e 63 68 61 6e
+  74 22 2c 20 61 62 6f 76 65 2c 20 66 6f 72 20 6d
+  6f 72 65 20 64 65 74 61 69 6c 73 0a
+
+  ~ "~ and discussion of the implications."
+  7e 20 61 6e 64 20 64 69 73 63 75 73 73 69 6f 6e
+  20 6f 66 20 74 68 65 20 69 6d 70 6c 69 63 61 74
+  69 6f 6e 73 2e 0a
+
+  ~ "~"
+  7e 0a
+
+  ~ "~ (top-level source filename --)"
+  7e 20 28 74 6f 70 2d 6c 65 76 65 6c 20 73 6f 75
+  72 63 65 20 66 69 6c 65 6e 61 6d 65 20 2d 2d 29
+  0a
+
+  ~ ": inscribe"
+  3a 20 69 6e 73 63 72 69 62 65 0a
+
+  ~ "  dup here @ = { allocate-string } if"
+  20 20 64 75 70 20 68 65 72 65 20 40 20 3d 20 7b
+  20 61 6c 6c 6f 63 61 74 65 2d 73 74 72 69 6e 67
+  20 7d 20 69 66 0a
+
+  ~ "  dup include drop"
+  20 20 64 75 70 20 69 6e 63 6c 75 64 65 20 64 72
+  6f 70 0a
+
+  ~ "  s" latest-executable-data" find entry-to-execution-token"
+  ~ " execute"
+  20 20 73 22 20 6c 61 74 65 73 74 2d 65 78 65 63
+  75 74 61 62 6c 65 2d 64 61 74 61 22 20 66 69 6e
+  64 20 65 6e 74 72 79 2d 74 6f 2d 65 78 65 63 75
+  74 69 6f 6e 2d 74 6f 6b 65 6e 20 65 78 65 63 75
+  74 65 0a
+
+  ~ "  ~ (top-level source filename, static source filename"
+  ~ " list,"
+  20 20 7e 20 28 74 6f 70 2d 6c 65 76 65 6c 20 73
+  6f 75 72 63 65 20 66 69 6c 65 6e 61 6d 65 2c 20
+  73 74 61 74 69 63 20 73 6f 75 72 63 65 20 66 69
+  6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  dynamic source filename list, boot source filename"
+  ~ " list,"
+  20 20 7e 20 20 64 79 6e 61 6d 69 63 20 73 6f 75
+  72 63 65 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73
+  74 2c 20 62 6f 6f 74 20 73 6f 75 72 63 65 20 66
+  69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  compile-header word name, compile-footer word name"
+  ~ " --)"
+  20 20 7e 20 20 63 6f 6d 70 69 6c 65 2d 68 65 61
+  64 65 72 20 77 6f 72 64 20 6e 61 6d 65 2c 20 63
+  6f 6d 70 69 6c 65 2d 66 6f 6f 74 65 72 20 77 6f
+  72 64 20 6e 61 6d 65 20 2d 2d 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~   We begin by constructing the full text of all the"
+  ~ " source that will be"
+  20 20 7e 20 20 20 57 65 20 62 65 67 69 6e 20 62
+  79 20 63 6f 6e 73 74 72 75 63 74 69 6e 67 20 74
+  68 65 20 66 75 6c 6c 20 74 65 78 74 20 6f 66 20
+  61 6c 6c 20 74 68 65 20 73 6f 75 72 63 65 20 74
+  68 61 74 20 77 69 6c 6c 20 62 65 0a
+
+  ~ "  ~ run inside the scope of the hex transform. That"
+  ~ " necessarily includes not"
+  20 20 7e 20 72 75 6e 20 69 6e 73 69 64 65 20 74
+  68 65 20 73 63 6f 70 65 20 6f 66 20 74 68 65 20
+  68 65 78 20 74 72 61 6e 73 66 6f 72 6d 2e 20 54
+  68 61 74 20 6e 65 63 65 73 73 61 72 69 6c 79 20
+  69 6e 63 6c 75 64 65 73 20 6e 6f 74 0a
+
+  ~ "  ~ only the compilation machinery, but the transformation"
+  ~ " system. Notably"
+  20 20 7e 20 6f 6e 6c 79 20 74 68 65 20 63 6f 6d
+  70 69 6c 61 74 69 6f 6e 20 6d 61 63 68 69 6e 65
+  72 79 2c 20 62 75 74 20 74 68 65 20 74 72 61 6e
+  73 66 6f 72 6d 61 74 69 6f 6e 20 73 79 73 74 65
+  6d 2e 20 4e 6f 74 61 62 6c 79 0a
+
+  ~ "  ~ it does not need to include "inscribe", but does need"
+  ~ " to include"
+  20 20 7e 20 69 74 20 64 6f 65 73 20 6e 6f 74 20
+  6e 65 65 64 20 74 6f 20 69 6e 63 6c 75 64 65 20
+  22 69 6e 73 63 72 69 62 65 22 2c 20 62 75 74 20
+  64 6f 65 73 20 6e 65 65 64 20 74 6f 20 69 6e 63
+  6c 75 64 65 0a
+
+  ~ "  ~ "enchant", and having a stray unused copy of inscribe"
+  ~ " is harmless, so we"
+  20 20 7e 20 22 65 6e 63 68 61 6e 74 22 2c 20 61
+  6e 64 20 68 61 76 69 6e 67 20 61 20 73 74 72 61
+  79 20 75 6e 75 73 65 64 20 63 6f 70 79 20 6f 66
+  20 69 6e 73 63 72 69 62 65 20 69 73 20 68 61 72
+  6d 6c 65 73 73 2c 20 73 6f 20 77 65 0a
+
+  ~ "  ~ don't try to exclude it."
+  20 20 7e 20 64 6f 6e 27 74 20 74 72 79 20 74 6f
+  20 65 78 63 6c 75 64 65 20 69 74 2e 0a
+
+  ~ "  here @ dup"
+  20 20 68 65 72 65 20 40 20 64 75 70 0a
+
+  ~ "  ~ (top-level source filename, static source filename"
+  ~ " list,"
+  20 20 7e 20 28 74 6f 70 2d 6c 65 76 65 6c 20 73
+  6f 75 72 63 65 20 66 69 6c 65 6e 61 6d 65 2c 20
+  73 74 61 74 69 63 20 73 6f 75 72 63 65 20 66 69
+  6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  dynamic source filename list, boot source filename"
+  ~ " list,"
+  20 20 7e 20 20 64 79 6e 61 6d 69 63 20 73 6f 75
+  72 63 65 20 66 69 6c 65 6e 61 6d 65 20 6c 69 73
+  74 2c 20 62 6f 6f 74 20 73 6f 75 72 63 65 20 66
+  69 6c 65 6e 61 6d 65 20 6c 69 73 74 2c 0a
+
+  ~ "  ~  compile-header word name, compile-footer word name,"
+  20 20 7e 20 20 63 6f 6d 70 69 6c 65 2d 68 65 61
+  64 65 72 20 77 6f 72 64 20 6e 61 6d 65 2c 20 63
+  6f 6d 70 69 6c 65 2d 66 6f 6f 74 65 72 20 77 6f
+  72 64 20 6e 61 6d 65 2c 0a
+
+  ~ "  ~  hex-transformed source pointer, output point)"
+  20 20 7e 20 20 68 65 78 2d 74 72 61 6e 73 66 6f
+  72 6d 65 64 20 73 6f 75 72 63 65 20 70 6f 69 6e
+  74 65 72 2c 20 6f 75 74 70 75 74 20 70 6f 69 6e
+  74 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  6 pick read-inputs-from-filename-list"
+  20 20 36 20 70 69 63 6b 20 72 65 61 64 2d 69 6e
+  70 75 74 73 2d 66 72 6f 6d 2d 66 69 6c 65 6e 61
+  6d 65 2d 6c 69 73 74 0a
+
+  ~ "  5 pick read-inputs-from-filename-list"
+  20 20 35 20 70 69 63 6b 20 72 65 61 64 2d 69 6e
+  70 75 74 73 2d 66 72 6f 6d 2d 66 69 6c 65 6e 61
+  6d 65 2d 6c 69 73 74 0a
+
+  ~ "  4 pick read-inputs-from-filename-list"
+  20 20 34 20 70 69 63 6b 20 72 65 61 64 2d 69 6e
+  70 75 74 73 2d 66 72 6f 6d 2d 66 69 6c 65 6e 61
+  6d 65 2d 6c 69 73 74 0a
+
+  ~ "  8 roll pack-file-contents"
+  20 20 38 20 72 6f 6c 6c 20 70 61 63 6b 2d 66 69
+  6c 65 2d 63 6f 6e 74 65 6e 74 73 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~   We need to create a call to "enchant" in the code"
+  ~ " under transformation."
+  20 20 7e 20 20 20 57 65 20 6e 65 65 64 20 74 6f
+  20 63 72 65 61 74 65 20 61 20 63 61 6c 6c 20 74
+  6f 20 22 65 6e 63 68 61 6e 74 22 20 69 6e 20 74
+  68 65 20 63 6f 64 65 20 75 6e 64 65 72 20 74 72
+  61 6e 73 66 6f 72 6d 61 74 69 6f 6e 2e 0a
+
+  ~ "  ~ That call doesn't need to be arrived at in exactly the"
+  ~ " same way as an"
+  20 20 7e 20 54 68 61 74 20 63 61 6c 6c 20 64 6f
+  65 73 6e 27 74 20 6e 65 65 64 20 74 6f 20 62 65
+  20 61 72 72 69 76 65 64 20 61 74 20 69 6e 20 65
+  78 61 63 74 6c 79 20 74 68 65 20 73 61 6d 65 20
+  77 61 79 20 61 73 20 61 6e 0a
+
+  ~ "  ~ independent call would be, since it doesn't become part"
+  ~ " of the output, it"
+  20 20 7e 20 69 6e 64 65 70 65 6e 64 65 6e 74 20
+  63 61 6c 6c 20 77 6f 75 6c 64 20 62 65 2c 20 73
+  69 6e 63 65 20 69 74 20 64 6f 65 73 6e 27 74 20
+  62 65 63 6f 6d 65 20 70 61 72 74 20 6f 66 20 74
+  68 65 20 6f 75 74 70 75 74 2c 20 69 74 0a
+
+  ~ "  ~ only needs to have the same effect."
+  20 20 7e 20 6f 6e 6c 79 20 6e 65 65 64 73 20 74
+  6f 20 68 61 76 65 20 74 68 65 20 73 61 6d 65 20
+  65 66 66 65 63 74 2e 0a
+
+  ~ "  ~"
+  20 20 7e 0a
+
+  ~ "  ~   So, we can take the filename list pointers that will"
+  ~ " become parameters"
+  20 20 7e 20 20 20 53 6f 2c 20 77 65 20 63 61 6e
+  20 74 61 6b 65 20 74 68 65 20 66 69 6c 65 6e 61
+  6d 65 20 6c 69 73 74 20 70 6f 69 6e 74 65 72 73
+  20 74 68 61 74 20 77 69 6c 6c 20 62 65 63 6f 6d
+  65 20 70 61 72 61 6d 65 74 65 72 73 0a
+
+  ~ "  ~ to "enchant" and pass them in directly, heedless of the"
+  ~ " fact they"
+  20 20 7e 20 74 6f 20 22 65 6e 63 68 61 6e 74 22
+  20 61 6e 64 20 70 61 73 73 20 74 68 65 6d 20 69
+  6e 20 64 69 72 65 63 74 6c 79 2c 20 68 65 65 64
+  6c 65 73 73 20 6f 66 20 74 68 65 20 66 61 63 74
+  20 74 68 65 79 0a
+
+  ~ "  ~ reference locations in the outer log."
+  20 20 7e 20 72 65 66 65 72 65 6e 63 65 20 6c 6f
+  63 61 74 69 6f 6e 73 20 69 6e 20 74 68 65 20 6f
+  75 74 65 72 20 6c 6f 67 2e 0a
+
+  ~ "  s"  0x" pack-raw-string 7 roll pack-hex64"
+  20 20 73 22 20 20 30 78 22 20 70 61 63 6b 2d 72
+  61 77 2d 73 74 72 69 6e 67 20 37 20 72 6f 6c 6c
+  20 70 61 63 6b 2d 68 65 78 36 34 0a
+
+  ~ "  s"  0x" pack-raw-string 6 roll pack-hex64"
+  20 20 73 22 20 20 30 78 22 20 70 61 63 6b 2d 72
+  61 77 2d 73 74 72 69 6e 67 20 36 20 72 6f 6c 6c
+  20 70 61 63 6b 2d 68 65 78 36 34 0a
+
+  ~ "  s"  0x" pack-raw-string 5 roll pack-hex64"
+  20 20 73 22 20 20 30 78 22 20 70 61 63 6b 2d 72
+  61 77 2d 73 74 72 69 6e 67 20 35 20 72 6f 6c 6c
+  20 70 61 63 6b 2d 68 65 78 36 34 0a
+
+  ~ "  ~ (compile-header word name, compile-footer word name,"
+  20 20 7e 20 28 63 6f 6d 70 69 6c 65 2d 68 65 61
+  64 65 72 20 77 6f 72 64 20 6e 61 6d 65 2c 20 63
+  6f 6d 70 69 6c 65 2d 66 6f 6f 74 65 72 20 77 6f
+  72 64 20 6e 61 6d 65 2c 0a
+
+  ~ "  ~  hex-transformed source pointer, output point)"
+  20 20 7e 20 20 68 65 78 2d 74 72 61 6e 73 66 6f
+  72 6d 65 64 20 73 6f 75 72 63 65 20 70 6f 69 6e
+  74 65 72 2c 20 6f 75 74 70 75 74 20 70 6f 69 6e
+  74 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~   We do not have that luxury with the two compile"
+  ~ " hooks; we need copies of"
+  20 20 7e 20 20 20 57 65 20 64 6f 20 6e 6f 74 20
+  68 61 76 65 20 74 68 61 74 20 6c 75 78 75 72 79
+  20 77 69 74 68 20 74 68 65 20 74 77 6f 20 63 6f
+  6d 70 69 6c 65 20 68 6f 6f 6b 73 3b 20 77 65 20
+  6e 65 65 64 20 63 6f 70 69 65 73 20 6f 66 0a
+
+  ~ "  ~ them that are under the hex transform. We produce code"
+  ~ " that looks them up"
+  20 20 7e 20 74 68 65 6d 20 74 68 61 74 20 61 72
+  65 20 75 6e 64 65 72 20 74 68 65 20 68 65 78 20
+  74 72 61 6e 73 66 6f 72 6d 2e 20 57 65 20 70 72
+  6f 64 75 63 65 20 63 6f 64 65 20 74 68 61 74 20
+  6c 6f 6f 6b 73 20 74 68 65 6d 20 75 70 0a
+
+  ~ "  ~ by name. Notice that this is possible because we"
+  ~ " included the top-level"
+  20 20 7e 20 62 79 20 6e 61 6d 65 2e 20 4e 6f 74
+  69 63 65 20 74 68 61 74 20 74 68 69 73 20 69 73
+  20 70 6f 73 73 69 62 6c 65 20 62 65 63 61 75 73
+  65 20 77 65 20 69 6e 63 6c 75 64 65 64 20 74 68
+  65 20 74 6f 70 2d 6c 65 76 65 6c 0a
+
+  ~ "  ~ source in our full source text."
+  20 20 7e 20 73 6f 75 72 63 65 20 69 6e 20 6f 75
+  72 20 66 75 6c 6c 20 73 6f 75 72 63 65 20 74 65
+  78 74 2e 0a
+
+  ~ "  ~"
+  20 20 7e 0a
+
+  ~ "  ~   Outputting quotation marks is, as always, a pain."
+  20 20 7e 20 20 20 4f 75 74 70 75 74 74 69 6e 67
+  20 71 75 6f 74 61 74 69 6f 6e 20 6d 61 72 6b 73
+  20 69 73 2c 20 61 73 20 61 6c 77 61 79 73 2c 20
+  61 20 70 61 69 6e 2e 0a
+
+  ~ "  s"  s" pack-raw-string 0x22 pack8 s"  " pack-raw-string"
+  20 20 73 22 20 20 73 22 20 70 61 63 6b 2d 72 61
+  77 2d 73 74 72 69 6e 67 20 30 78 32 32 20 70 61
+  63 6b 38 20 73 22 20 20 22 20 70 61 63 6b 2d 72
+  61 77 2d 73 74 72 69 6e 67 0a
+
+  ~ "  4 roll pack-raw-string"
+  20 20 34 20 72 6f 6c 6c 20 70 61 63 6b 2d 72 61
+  77 2d 73 74 72 69 6e 67 0a
+
+  ~ "  0x22 pack8"
+  20 20 30 78 32 32 20 70 61 63 6b 38 0a
+
+  ~ "  s"  allocate-string" pack-raw-string"
+  20 20 73 22 20 20 61 6c 6c 6f 63 61 74 65 2d 73
+  74 72 69 6e 67 22 20 70 61 63 6b 2d 72 61 77 2d
+  73 74 72 69 6e 67 0a
+
+  ~ ""
+  0a
+
+  ~ "  s"  s" pack-raw-string 0x22 pack8 s"  " pack-raw-string"
+  20 20 73 22 20 20 73 22 20 70 61 63 6b 2d 72 61
+  77 2d 73 74 72 69 6e 67 20 30 78 32 32 20 70 61
+  63 6b 38 20 73 22 20 20 22 20 70 61 63 6b 2d 72
+  61 77 2d 73 74 72 69 6e 67 0a
+
+  ~ "  3roll pack-raw-string"
+  20 20 33 72 6f 6c 6c 20 70 61 63 6b 2d 72 61 77
+  2d 73 74 72 69 6e 67 0a
+
+  ~ "  0x22 pack8"
+  20 20 30 78 32 32 20 70 61 63 6b 38 0a
+
+  ~ "  s"  allocate-string" pack-raw-string"
+  20 20 73 22 20 20 61 6c 6c 6f 63 61 74 65 2d 73
+  74 72 69 6e 67 22 20 70 61 63 6b 2d 72 61 77 2d
+  73 74 72 69 6e 67 0a
+
+  ~ "  ~ (hex-transformed source pointer, output point)"
+  20 20 7e 20 28 68 65 78 2d 74 72 61 6e 73 66 6f
+  72 6d 65 64 20 73 6f 75 72 63 65 20 70 6f 69 6e
+  74 65 72 2c 20 6f 75 74 70 75 74 20 70 6f 69 6e
+  74 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  s"  enchant-from-description" pack-raw-string"
+  20 20 73 22 20 20 65 6e 63 68 61 6e 74 2d 66 72
+  6f 6d 2d 64 65 73 63 72 69 70 74 69 6f 6e 22 20
+  70 61 63 6b 2d 72 61 77 2d 73 74 72 69 6e 67 0a
+
+  ~ "  ~ (hex-transformed source pointer, output point)"
+  20 20 7e 20 28 68 65 78 2d 74 72 61 6e 73 66 6f
+  72 6d 65 64 20 73 6f 75 72 63 65 20 70 6f 69 6e
+  74 65 72 2c 20 6f 75 74 70 75 74 20 70 6f 69 6e
+  74 29 0a
+
+  ~ "  0 pack8 8 packalign here !"
+  20 20 30 20 70 61 63 6b 38 20 38 20 70 61 63 6b
+  61 6c 69 67 6e 20 68 65 72 65 20 21 0a
+
+  ~ ""
+  0a
+
+  ~ "  ~ (hex-transformed source pointer)"
+  20 20 7e 20 28 68 65 78 2d 74 72 61 6e 73 66 6f
+  72 6d 65 64 20 73 6f 75 72 63 65 20 70 6f 69 6e
+  74 65 72 29 0a
+
+  ~ "  1024 1024 4 * * allocate"
+  20 20 31 30 32 34 20 31 30 32 34 20 34 20 2a 20
+  2a 20 61 6c 6c 6f 63 61 74 65 0a
+
+  ~ "  1024 1024 8 * * allocate"
+  20 20 31 30 32 34 20 31 30 32 34 20 38 20 2a 20
+  2a 20 61 6c 6c 6f 63 61 74 65 0a
+
+  ~ "  ~ (hex-transformed source pointer, binary buffer"
+  ~ " pointer,"
+  20 20 7e 20 28 68 65 78 2d 74 72 61 6e 73 66 6f
+  72 6d 65 64 20 73 6f 75 72 63 65 20 70 6f 69 6e
+  74 65 72 2c 20 62 69 6e 61 72 79 20 62 75 66 66
+  65 72 20 70 6f 69 6e 74 65 72 2c 0a
+
+  ~ "  ~  metadata buffer pointer)"
+  20 20 7e 20 20 6d 65 74 61 64 61 74 61 20 62 75
+  66 66 65 72 20 70 6f 69 6e 74 65 72 29 0a
+
+  ~ ""
+  0a
+
+  ~ "  swap dup 4 roll hex-transform bye ;"
+  20 20 73 77 61 70 20 64 75 70 20 34 20 72 6f 6c
+  6c 20 68 65 78 2d 74 72 61 6e 73 66 6f 72 6d 20
+  62 79 65 20 3b 0a
+
+  ~ ""
+  0a
+
   ~ "~   This file should be included in executables that use"
   ~ " boot-source, as the"
   7e 20 20 20 54 68 69 73 20 66 69 6c 65 20 73 68
@@ -111537,7 +112777,7 @@
   ~   This is the end of the long string literal. We now return you to the
   ~ normal hex-dump stuff.
 
-  00 00 00 00 00 00 00              ~                     (alignment padding)
-~ label total-size at offset 0x00000000000a9e40 is here.
+                                    ~                     (alignment padding)
+~ label total-size at offset 0x00000000000ac278 is here.
 
 ~ This is the end of the hex dump. Thanks for reading!