41 lines
3.5 KiB
Markdown
41 lines
3.5 KiB
Markdown
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):
|
||
```c
|
||
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).
|