3.5 KiB
Here’s more highly relevant additions (scavenged fresh, strictly aligned to your zero-overhead sourceless x86-64 ColorForth-derivative: 32-bit token arrays, hex/sourceless editor, tape-drive scatter, 2-reg stack, instant compile/live reload). Strong focus on WebAssembly (binary format, linear memory tape parallels, dynamic emission, structured binary editors) plus other immediately useful tooling. No direct new Lottes/Onat Wasm material, but Wasm/SPIR-V binary parallels are explicit.
WebAssembly Core Parallels & Tooling
Wasm’s binary section format + single growable linear memory (fixed-offset load/store, no runtime stack) is an almost 1:1 match for your 32-bit aligned tokens + preemptive scatter “tape drive” args. Decode/JIT is designed for <5 ms instantiation.
-
WAForth (dynamic Forth-to-Wasm compiler written entirely in raw .wat)
https://github.com/remko/waforth
https://mko.re/waforth/ (live demo console)
~14 KB (7 KB gz) complete minimal Forth interpreter + dynamic compiler that emits new Wasm bytecode on-the-fly (LEB128 append, function table + indirect calls for words). Uses linear memory for 4-byte aligned stack/tape. CODE word for raw Wasm opcodes. Jonesforth-inspired. FOSDEM 2023 talk slides (hand-written minimal Wasm Forth system): https://archive.fosdem.org/2023/schedule/event/webassemblyforth/attachments/slides/5876/export/events/attachments/webassemblyforth/slides/5876/Exploring_WebAssembly_With_Forth.pdf
Direct blueprint for your token → machine-code emission loop and live reload. -
ImHex (star for your sourceless hex-editor frontend)
https://github.com/WerWolv/ImHex
https://web.imhex.werwolv.net/ (browser version runs via Wasm)
Professional hex editor with Pattern Language (.hexpat – C-like DSL). Define custom 32-bit token structs (value + tag + annotation overlay) → automatic parse, highlight, tree view, colors, names, disassembly. Live patching, huge files, zero string parsing. Patterns repo: https://github.com/WerWolv/ImHex-Patterns (hundreds of examples).
Fork this for exact Lottes-style annotation overlay on your token array. Native + web versions both zero-dep.Tiny example pattern snippet you can drop in (for a 32-bit token + 4-bit tag + 64-bit annotation block):
struct Token { u32 value; u8 tag : 4; u8 padding : 4; char name[7]; // 7×7-bit compressed like Lottes u64 annotation; // editor overlay (color/format) }; Token tokens[$ / sizeof(Token)]; -
WABT / wasm-tools (low-level binary manipulation)
https://github.com/WebAssembly/wabt
Official toolkit: wat2wasm / wasm2wat / disassembly / validation. Use for fast token-dictionary ↔ binary round-tripping or hex-patching prototypes. Pairs perfectly with ImHex. -
Visual Wasm Structure Editor (sourceless module building)
https://www.youtube.com/watch?v=liJg6rzXnPg
Visual (non-text) editor for adding instructions/sections directly to Wasm binary. Exact parallel to hex-editor + annotation for token arrays.
Other Immediately Helpful
- Wasm linear memory as tape-drive reference
Wasm’s flat byte array with fixed-offset access is the cleanest public example of “preemptive scatter” without a runtime data stack. See practical buffer/tape examples: https://blog.jeremylikness.com/blog/2019-04-22_play-the-chaos-game-to-understand-webassembly-memory-management/ (passing pre-placed arrays between host and Wasm with zero copying).