notes
This commit is contained in:
34
GEMINI.md
34
GEMINI.md
@@ -44,28 +44,24 @@ Based on the curation in `./references/`, the resulting system MUST adhere to th
|
||||
|
||||
## Current Development Roadmap (attempt_1)
|
||||
|
||||
Here's a breakdown of the next steps to advance the `attempt_1` implementation towards a ColorForth derivative:
|
||||
The prototype currently implements a functional WinAPI modal editor, a 2-register (`RAX`/`RDX`) JIT compiler with an `O(1)` visual linker, x68 32-bit instruction padding, implicit definition boundaries (Magenta Pipe), and an initial FFI Bridge (`emit_ffi_dance`).
|
||||
|
||||
1. **Enhance Lexer/Parser/Compiler (JIT) in `main.c`:**
|
||||
* **Token Interpretation:** Refine the interpretation of the 28-bit payload based on the 4-bit color tag (e.g., differentiate between immediate values, dictionary IDs, and data addresses).
|
||||
* **Dictionary Lookup:** Improve the efficiency and scalability of dictionary lookups for custom words beyond the current linear search.
|
||||
* **New Word Definition:** Implement mechanisms for defining new Forth words directly within the editor, compiling them into the `code_arena`.
|
||||
Here is a breakdown of the next steps to advance the `attempt_1` implementation towards a complete ColorForth derivative:
|
||||
|
||||
2. **Refine Visual Editor (`win_proc` in `main.c`):**
|
||||
* **Dynamic Colorization:** Ensure all rendered tokens accurately reflect their 4-bit color tags, updating dynamically with changes.
|
||||
* **Annotation Handling:** Implement more sophisticated display for token annotations, supporting up to 8 characters clearly without truncation or visual artifacts.
|
||||
* **Input Handling:** Improve text input for `STag_Data` (e.g., supporting full hexadecimal input, backspace functionality).
|
||||
* **Cursor Behavior:** Ensure the cursor accurately reflects the current editing position within the token stream.
|
||||
1. **Refine the FFI / Tape Drive Argument Scatter:**
|
||||
* Currently, the FFI bridge only maps `RAX` and `RDX` to the C-ABI `RCX` and `RDX`.
|
||||
* Implement "Preemptive Scatter" logic so the FFI bridge correctly reads subsequent arguments (e.g., `R8`, `R9`) directly from pre-defined offsets in the `vm_globals` tape drive instead of just zeroing them out.
|
||||
|
||||
3. **Expand Register-Only Stack Operations:**
|
||||
* Implement core Forth stack manipulation words (e.g., `DUP`, `DROP`, `OVER`, `ROT`) by generating appropriate x86-64 assembly instructions that operate solely on `RAX` and `RDX`.
|
||||
2. **Expanded Annotation Layer (Variable-Length Comments):**
|
||||
* The current `anno_arena` strictly allocates 8 bytes (a `U8`) per token.
|
||||
* Refactor the visual editor and annotation memory management to allow for arbitrarily long text blocks (comments) to be attached to specific tokens without disrupting the `O(1)` compilation mapping.
|
||||
|
||||
4. **Develop `Tape Drive` Memory Management:**
|
||||
* Ensure all memory access (read/write) for Forth variables and data structures correctly utilize the `vm_globals` array and the "preemptive scatter" approach.
|
||||
3. **Implement the Self-Modifying Cartridge (Persistence):**
|
||||
* The tape and annotations are currently lost when the program closes.
|
||||
* Move away from purely transient `VirtualAlloc` buffers to a memory-mapped file approach (or a manual Save/Load equivalent in WinAPI) to allow the "executable as source" to persist between sessions.
|
||||
|
||||
5. **Implement Control Flow without Branches:**
|
||||
* Leverage conditional returns and factored calls to create more complex control flow structures (e.g., `IF`/`ELSE`/`THEN` equivalents) without introducing explicit `jmp` instructions where not architecturally intended.
|
||||
4. **Refine Visual Editor Interactions:**
|
||||
* Implement a proper internal text-editing cursor within the `STag_Data` and `STag_Format` (annotation) tokens, rather than relying on backspace-truncation and appendage.
|
||||
|
||||
6. **Continuous Validation & Debugging:**
|
||||
* Enhance debugging output within the UI to provide clearer insight into VM state (RAX, RDX, global memory, log buffer) during execution.
|
||||
* Consider adding simple "tests" as Forth sequences within `tape_arena` to verify new features.
|
||||
5. **Continuous Validation & Complex Control Flow:**
|
||||
* Expand the primitive set to allow for more complex, AST-less control flow (e.g., handling Lambdas or specific Basic Block jumps).
|
||||
|
||||
Reference in New Issue
Block a user