diff options
Diffstat (limited to 'evoke.hex')
| -rw-r--r-- | evoke.hex | 1248 |
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! |