summary refs log tree commit diff
AgeCommit message (Collapse)Author
2026-05-21Add high-level flow control to the log-load transformIrene Knapp
that was a lot Change-Id: I6ae9c371fe1fe6fd2757d20df73a748339fa89d1 Force-Push: yes
2026-05-21some comment stuff, and implement "keyword"Irene Knapp
Force-Push: yes Change-Id: Iecf4079b9629f9c041b7fe994b1a69b6ef7b6dd0
2026-05-21okay, s" and ." work all-the-way in the log-load transform nowIrene Knapp
wow those were hard ones. it's very squirelly what happens when. hopefully these new and reorganized docs will make it easier to understand next time... Force-Push: yes Change-Id: I8f3b86900ca1794afc3e607c2180dd05ea168cc7
2026-05-21thanks Verità! great catch :)Irene Knapp
Force-Push: yes Change-Id: I3308856db0fd1fc1b066f4e6d9925b4fc8830a4e
2026-05-20okay, keywords work under the log-load transform nowIrene Knapp
Force-Push: yes Change-Id: I1fc56015d3f2510157982a4387874f99a77cdc5f
2026-05-20tidied away core-plus.eIrene Knapp
it's merged into core now. that just made the most sense... a couple of its combinators are too useful to not use once you know about them Force-Push: yes Change-Id: I3857f353a8603960bebbf34f24572e3d5815f0de
2026-05-20the entirety of core.e now log-loadsIrene Knapp
wow!!!!!! wow making this work required implementing comma and keyword in the log-load transform Force-Push: yes Change-Id: If888d89c23389720840b49b72478e4826a15a269
2026-05-20so yeah, docol, exit, and lit all work in log-load nowIrene Knapp
also s" and ." work in the label transform, and are used to produce an important error message during the log-load routine, since we can't know whether log-loaded words exist until runtime sweet, right? Change-Id: I6a67139538c2cbcef40a1093202b2b4e0ad6febb Force-Push: yes
2026-05-20colon, semicolon, and compiled integers all work with log-load nowIrene Knapp
yay next up is to figure out why calling newly-defined docol-based words with it does not work Force-Push: yes Change-Id: I9c5f50d20f43ad8a15b6db58e046f1e0bb158266
2026-05-20create works now, and docol outputs successfullyIrene Knapp
having some trouble with colon Force-Push: yes Change-Id: I5fc0f4519bdd8de1033e24730f63296d8076782e
2026-05-20add a really powerful stack depth tracking feature for transforms to useIrene Knapp
also said feature seems to work, which is flatly astonishing just a little more now... Force-Push: yes Change-Id: I1bda7e99e524ac73a761859e86e01251e7d17525
2026-05-19rename all the label alternates to their longform versionsIrene Knapp
it's more readable Force-Push: yes Change-Id: I4be37c18da174eb1e9016bb1199a2ff2cf93f334
2026-05-19log-load-variable and label-keyword-alternate work nowIrene Knapp
yay :) Force-Push: yes Change-Id: Iae2e308ed8d786a9586bdc2583a6a9300282abae
2026-05-19yessssssssIrene Knapp
so okay, now all the machine code stuff is implemented and it builds without crashing the generated executable still crashes though, but this was enough work that it's getting a celebratory check-in Force-Push: yes Change-Id: I201e6912253647da58ef3537c735b478b0dca9fb
2026-05-18okay there's a strat for making the here/latest variables nowIrene Knapp
it doesn't work yet, but it's gonna the reason it doesn't work is that the new helper log-load-variable relies on the assembly-definition words being statically available, and they aren't yet that's fine though, this is still a huge change, worth checking in. why? well, it represents like 16 hours of debugging which culminated in some very minor changes to the semantics of the label transform, in order to make missing words easier to notice and debug. see comments for details. woooooo :D Force-Push: yes Change-Id: Id8334819d165ba9e3156ef2bf32008af748eac29
2026-05-17more progress on the log-load transformIrene Knapp
it generates most of the calls to create and comma, now Force-Push: yes Change-Id: Ib7620dca7a5bc5dd787e940ad18cf48c2a1bd529
2026-05-17implement log-load-create; add all the pack/unpack stuff to core.eIrene Knapp
Force-Push: yes Change-Id: I04dd65a9eec71f9b50c8875bdcbe5d4be59888d5
2026-05-16the skeleton of the log-load transform is in place nowIrene Knapp
it doesn't actually output anything, but it all runs without crashing Force-Push: yes Change-Id: I48f2e647044df0ae3db961c747cee31a8826ecf3
2026-05-16implement more internal wordsIrene Knapp
Force-Push: yes Change-Id: I273879e9d05260db0603bc5a36970e240f3e366a
2026-05-16add a stub for the log-load transform, and a ton of documentationIrene Knapp
Force-Push: yes Change-Id: Ia1fe0e6aefaf6776bd69bca4a26ee0df0b555832
2026-05-16ah, oops, there was a bug in the label transform for compiled wordsIrene Knapp
fixed now also a bunch of small things towards adding a log-load transform Force-Push: yes Change-Id: I6eeb94d896a7e79092886d7b60e9404c31b2ba6f
2026-05-16word labels are now stored as offsetsIrene Knapp
also, the various address spaces in use are described better, and there's helper functions to convert between them. Force-Push: yes Change-Id: Idb56d2b6299d6e7071c9d42b2eb1138b17b85c69
2026-05-16it WORKS. WOW. nice.Irene Knapp
more specifically, a generated hello-world that uses cold- and warm-start, and both assembly and Forth words, correctly calls the kernel's exit() with a parameter provided by a literal. Force-Push: yes Change-Id: I9a08f9cdad6bd0037a41655eecff6debea5f9ac3
2026-05-16it's much closer, most of the labels work correctly nowIrene Knapp
Force-Push: yes Change-Id: I45662e60c0035758a2cd57d971031eb0562eccb7
2026-05-15the next-entry pointers in the generated dictionary work nowIrene Knapp
it was using the wrong value for the buffer start, messing up transform-offset Force-Push: yes Change-Id: I1d519b4de2df87930413ca440779337dbbe34d62
2026-05-15make the label transformation work all the way, no crashingIrene Knapp
the code doesn't quite run yet, that'll be a future CL Force-Push: yes Change-Id: I71e6a45127c1fc37906d902e36142c17afef2a21
2026-05-15document the assumptions between labels and transformsIrene Knapp
also some minor cleanup that ie. fixes alignment padding Force-Push: yes Change-Id: Ia8fcb9a44e05e37751cc1b8334aa72add7e62353
2026-05-15transform runs inside the label loop now, and is able to do compilationIrene Knapp
wow! yes. good. now it needs to actually generate label calls :) Force-Push: yes Change-Id: Ide4336e00aa6860fe55c956063303edc873c6d9b
2026-05-15fix things up so it gets through cold-startIrene Knapp
then it crashes on warm-start because warm-start doesn't exist yet Force-Push: yes Change-Id: I9eba481b31d48f9d32c3790f296204c5c8d90938
2026-05-15now there's a concept of pushing and popping input sourcesIrene Knapp
Force-Push: yes Change-Id: Ib8e8f342b7fa3773071eca36accf060f6c20f3be
2026-05-14add a next-source field, as-yet unused, to the input buffer metadataIrene Knapp
this will support transformations Force-Push: yes Change-Id: I741e8f18eef456c836d8eb1b01ec4463a6c8898c
2026-05-13copy input to a memory bufferIrene Knapp
this will help us process it repeatedly so that label resolution works Force-Push: yes Change-Id: Ibef3b473259feb2e8d89acd5d1a40a21d5ecafe9
2026-05-12rough draft of some code that transforms other code for bootstrappingIrene Knapp
Force-Push: yes Change-Id: I887688e3e71143792fbdf336c9f5299c160a5ff7
2026-05-11oops, right, syntax highlighting for ;asmIrene Knapp
forgot to check this in Force-Push: yes Change-Id: Ief7c6da623cffb538f5802480d4c3432614d9846
2026-05-11backport the evoked "create" to flatassemblerIrene Knapp
this lets us have immediate-mode string literals as parameters without having to worry about how fully bootstrapped we are Force-Push: yes Change-Id: I18510de6f916898e411b406959ba0eab7fccb319
2026-05-11implement all the core Forth stuff in Evocation-assemblyIrene Knapp
also, add support for ;asm and stuff Force-Push: yes Change-Id: I904bc0c31e7e4c8b0abc7790f3af5d20c275f2a5
2026-05-10defined interpreter-stateIrene Knapp
that was quite some debugging. the write-up is still in progress (see the TODO) Force-Push: yes Change-Id: Ia1494bcde2b66e82efe8598899e93bdff60841d4
2026-05-09implement more stuff in interpret.eIrene Knapp
it depended on the execution-model stuff, for the "next" macro. in general, any word implemented in assembly will depend on that. so, the execution stuff is moved into its own file, leaving evoke.e with only the job of bringing everything together. that's a little disappointing because talking about the execution model seems like a good introduction to the whole topic, but perhaps the problem can be solved down the line with literate programming... Force-Push: yes Change-Id: Ic2fe22dcc39980ef75763ae293e41024abc8ba38
2026-05-09a minor documentation error in the word header formatIrene Knapp
oops - the last CL was supposed to fix this, but it was inadvertently left out Force-Push: yes Change-Id: I4edf5abed315bea51abcd98ad67cd28782a62efe
2026-05-09implement "create" in interpret.eIrene Knapp
memmove never had a heap-based implementation, probably due to excessive hurrying when it was first written. it has now been added. it's identical to the original static implementation. a minor documentation error in evoke.e was discovered while coding this, and is now fixed. Force-Push: yes Change-Id: I55ff09712a992410167a53cd83e96a452ed49744
2026-05-09implement more of the interpeter, and add some documentationIrene Knapp
Force-Push: yes Change-Id: I33ad8783283643ca4977ab19c378156436707687
2026-05-08add a rough draft of a self-hosted "interpret"Irene Knapp
Force-Push: yes Change-Id: I063232ca7d840237f53dc805bc896c7b452cedc8
2026-05-08handle more cases in the vim syntaxIrene Knapp
Force-Push: yes Change-Id: I82794426013d33715decd2c86e00fe2367aab7c8
2026-05-08add a rough draft of a self-hosted evokeIrene Knapp
Force-Push: yes Change-Id: Icf69cdfe7cf31fda07031bbc848c3ce2acb8cca1
2026-05-08oops, also needed mov-reg64-disp32-reg64Irene Knapp
Force-Push: yes Change-Id: I352537e52cb12d1c96f84cdaa794bd854d8ab1aa
2026-05-08formatting changesIrene Knapp
Force-Push: yes Change-Id: Iba125ccfd005151822d31af050ea3b4e2907d853
2026-05-07oops. didn't have a fully bootstrapped lea-reg64-disp32-reg64.Irene Knapp
the cold-start routine needs it... Force-Push: yes Change-Id: I6c0d80fc2bbb634f4b25aa96bd4ed5351361b8c9
2026-05-07add a vim syntaxIrene Knapp
it was time. it was really impressively broken without one. Force-Push: yes Change-Id: Id26c551dcf43b37577ac96796627b6658a040cf4
2026-05-07document labels.e; also clean up elf.eIrene Knapp
the documentation in labels.e is entirely new, synthesized from informal private discussions. this is also intended as a final pass to make sure all the comments and nuances in the ELF code from quine.asm are incorporated in elf.e. also this uses the new `L@'` and `L!'` facilities for terseness Force-Push: yes Change-Id: Ieabb2bb26f4b83260f0072dcdcd0950f9aa9fab2
2026-05-07add new words L@' and L!'Irene Knapp
wow it feels strange having a clear meaning associated with line noise like that Force-Push: yes Change-Id: If3d101234a9b8798c88f6b90090479b2866f5406