Whole-known-network
<p>i've seen people complain that BSOD no longer contains basically any useful info, but like... if you're actually interested in figuring out what went wrong, why not just look at the minidump? it has everything that was on the old NT BSOD screen, but you also don't have to fuckin take a photo of it</p>
<p>friendship ended with `bcdedit -set TESTSIGNING ON`, now `ed CI!g_CiOptions 0` is my best friend</p>
<p>đŸ’ KMDF CEF</p>
<p><span class="h-card" translate="no"><a href="https://mastodon.social/@whitequark" class="u-url mention">@<span>whitequark</span></a></span> <span class="h-card" translate="no"><a href="https://is.badat.dev/users/meithecatte" class="u-url mention">@<span>meithecatte</span></a></span> I'm still confused how you go about effectively compiling or typechecking Forth. I am hoping to try out some modern Forths later in this "Babel" project</p>
<p><span class="h-card" translate="no"><a href="https://mastodon.social/@mcc" class="u-url mention">@<span>mcc</span></a></span> or Forth</p><p>(cc <span class="h-card" translate="no"><a href="https://is.badat.dev/users/meithecatte" class="u-url mention">@<span>meithecatte</span></a></span> who wrote a very cool boot sector forth)</p>
<p>I've realized something:</p><p>mov rax, r10<br />add r8, 1<br />jmp _main_loop_reset</p><p>Assembly looks a lot like LISP once you remove the parentheses! So I wanted to design an ASM syntax that exists as a data structure within a LISP, and write code as a LISP program that generates that data structure. In other words make a DSL similar to "Amaranth" or my old "No Compiler" blog posts <a href="https://msm.runhello.com/p/category/plt/no-compiler" target="_blank" rel="nofollow noopener" translate="no"><span class="invisible">https://</span><span class="ellipsis">msm.runhello.com/p/category/pl</span><span class="invisible">t/no-compiler</span></a> . I may be just confusing you at this point— I'm not sure I can describe this idea clearly in 500 chars.</p>
<p>Making this little LISP was *in part* a "can I do this?" for the Babel project. But there's another thing, which is I want a general purpose assembler. I've recently started wanting to target some unusual/retro systems (NES, N64, Saturn) and I forsee frustration with having no common toolchain among these projects for any language I like, nor a common macroassembler syntax I can take with me across different ISAs.</p><p>So I was hoping my tiny LISP could be reworked into a macroassembler.</p>
<p>In particular, what worries me is the "hard part" of this code turned out to be the higher order functions (if, while, for, foreach, proc). This LISP is contrived compared to other LISPs, with no special "forms", and no sugar other than the {} and [] which are supposed to be swiss army knives you can construct anything else you need from. I did it this way to make self-modifying / generated-at-runtime code easy & fluid. *But that's exactly what turned out to be hardest*. And *that's* a bad sign!</p>
<p>Got part 1 of the puzzle working this morning!</p><p><a href="https://github.com/mcclure/aoc2024/blob/2656c75da28669ad11568fae6f5f3a9c24a311a6/06-01-guard/src/puzzle.l0" target="_blank" rel="nofollow noopener" translate="no"><span class="invisible">https://</span><span class="ellipsis">github.com/mcclure/aoc2024/blo</span><span class="invisible">b/2656c75da28669ad11568fae6f5f3a9c24a311a6/06-01-guard/src/puzzle.l0</span></a></p><p>App code "proper" starts around line 124 (43-123 are "library code" I didn't post above; I implemented "for" and "switch", and a very small vector math library.)</p><p>Writing this program was not at all hard (other than the library code… `for` was painful), but nor was it particularly *pleasant*; it didn't feel fluid. That might speak poorly for my minimal LISP, and the question of whether I use it again after this project.</p>