FABRIC.md/ROADMAP.md/ttf_words.c: scope console REPL (4.4), obsolete M8, flip TTF to Cartesian y
FABRIC.md: renumber Artemis-last boundary 4.4 -> 4.5, add new 4.4 REPL item (console visual design scoped this session -- CANVAS is one shared region above the REPL strip, 640x480 scroll box centered within it, stroke font, ANSI color, VM-identity + ACL-identity prompt segments, ~1000-line scrollback), linked to repl-mockup.png. ROADMAP.md: mark M8 section OBSOLETE -- replaced by FABRIC.md 4.4, kept for history only. ttf_words.c: TTF-TEXT's y argument now Cartesian (origin bottom-left of the physical framebuffer, y increasing upward) instead of raw framebuffer coordinates, translated once via fb_height() - y. Verified via amd64 screendump (logs/20260811-070418/), text renders right-side-up with increasing y moving up the screen. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
8e2c5dae5f
commit
20801ded72
@@ -4367,8 +4367,9 @@ document and committing that amendment as its own item.*
|
||||
> note below: glyph rendering (stroke-based font capsules), not yet scoped.
|
||||
|
||||
> **Sequencing noted 2026-08-07, not yet scoped:** keyboard input (4.3.5–4.3.5f) →
|
||||
> glyph rendering (stroke-based font capsules) → REPL — in that order, before the 4.4
|
||||
> Artemis boundary. Recorded so the order is not lost between sessions; neither glyph
|
||||
> glyph rendering (stroke-based font capsules) → REPL — in that order, before the 4.5
|
||||
> Artemis boundary (renumbered from 4.4, 2026-08-11 — REPL now has its own 4.4 section).
|
||||
> Recorded so the order is not lost between sessions; neither glyph
|
||||
> rendering nor REPL has *Done when* criteria yet. Per §25.0 rule 2, each gets scoped in
|
||||
> detail at its own checkpoint, not now.
|
||||
|
||||
@@ -4973,11 +4974,23 @@ document and committing that amendment as its own item.*
|
||||
> `KEY-EVENT` (4.3.5f) isn't yet wired into the REPL's character source
|
||||
> (`console_getc()`), and `KEY`/`?TERMINAL` remain the dead stubs already noted above.
|
||||
|
||||
⋯ *(4.3.x is open-ended — more items get appended here as Console work is scoped item by*
|
||||
*item, developed on the fly per §25.0. 4.4 below is unaffected by anything added above*
|
||||
*this marker.)*
|
||||
⋯ *(4.3.x is open-ended — more items get appended here as framebuffer/keyboard Console work*
|
||||
*is scoped item by item, developed on the fly per §25.0. 4.4 below is a new, independent*
|
||||
*section for the REPL itself — separate because the REPL is independent of the screen-output*
|
||||
*and keyboard work above. 4.5 (renumbered from 4.4, 2026-08-11) is unaffected by anything*
|
||||
*added above this marker.)*
|
||||
|
||||
- [ ] **4.4 — Artemis last.** It works today; it is the thing that cannot be broken.
|
||||
- [ ] **4.4 — REPL.** *(Scoped 2026-08-11; independent of the 4.3.x framebuffer/keyboard work.*
|
||||
*This item replaces `docs/lithosananke/ROADMAP.md`'s M8 section entirely — M8 is marked*
|
||||
*OBSOLETE there as of 2026-08-11, kept for history only. Detailed spec and punch-list*
|
||||
*sub-items to be written up in the same style as 4.3.x.)*
|
||||
*Refs:* §25.5, §27.6.
|
||||
|
||||
Original visual mockup (Captain Bob, 2026-08-11): [`repl-mockup.png`](repl-mockup.png) —
|
||||
CANVAS label, scrollable output region, separate REPL input strip with cursor at the
|
||||
bottom. Source image for the CANVAS/REPL-strip geometry described below.
|
||||
|
||||
- [ ] **4.5 — Artemis last.** It works today; it is the thing that cannot be broken.
|
||||
*Refs:* §10.
|
||||
|
||||
---
|
||||
@@ -5484,7 +5497,8 @@ of slot.
|
||||
### 27.6 Glyph rendering, UTF-8 Latin, capsule-loaded (4.3.6–4.3.6g)
|
||||
|
||||
Scoped 2026-08-09, next after the 4.3.5f checkpoint, per the 2026-08-07 sequencing note
|
||||
(§25.5): keyboard input → glyph rendering → REPL, before the 4.4 Artemis boundary.
|
||||
(§25.5): keyboard input → glyph rendering → REPL, before the 4.5 Artemis boundary (renumbered
|
||||
from 4.4, 2026-08-11 — REPL now has its own 4.4 section).
|
||||
|
||||
**Purpose and boundary.** Render text onto the CANVAS region of the Stadium UI (per the
|
||||
reviewed mockup: a fixed REPL strip at the bottom of the screen, a separate large CANVAS
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
# Capsule Block Manifest — Auto-generated
|
||||
<!-- Generated by mkcapsule --manifest 2026-08-11T03:17:24Z -->
|
||||
<!-- Generated by mkcapsule --manifest 2026-08-11T11:02:46Z -->
|
||||
<!-- DO NOT EDIT — re-run mkcapsule --manifest to refresh. -->
|
||||
<!-- Hand-written justifications and immutability notes live -->
|
||||
<!-- in MANIFEST.md alongside this auto-generated index. -->
|
||||
|
||||
@@ -17,7 +17,7 @@ M5 Timer ██████████████████
|
||||
M6 Heap ████████████████████ COMPLETE
|
||||
M7 VM Parity ████████████████████ COMPLETE
|
||||
M7.1 Capsules ████████████░░░░░░░░ DESIGN COMPLETE
|
||||
M8 REPL ░░░░░░░░░░░░░░░░░░░░ PLANNED
|
||||
M8 REPL ░░░░░░░░░░░░░░░░░░░░ OBSOLETE — see FABRIC.md §25.5 item 4.4
|
||||
M9 Block I/O ░░░░░░░░░░░░░░░░░░░░ PLANNED
|
||||
M10 Networking ░░░░░░░░░░░░░░░░░░░░ FUTURE
|
||||
```
|
||||
@@ -234,6 +234,11 @@ APIC Timer: started
|
||||
|
||||
## Phase 4: Interactive Forth (M8)
|
||||
|
||||
> **⚠ OBSOLETE (2026-08-11).** This entire M8 section is superseded by
|
||||
> `FABRIC.md` §25.5 item 4.4 (REPL). The console/REPL design has moved past
|
||||
> what's scoped here — do not use this section as a source for REPL or
|
||||
> CANVAS design decisions. Kept in place for history only.
|
||||
|
||||
### M8: REPL + Interactive Forth
|
||||
|
||||
**Status:** Scoped 2026-08-11 (this section). Substrate (interrupt-driven keyboard
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
Binary file not shown.
|
After Width: | Height: | Size: 13 KiB |
@@ -94,7 +94,7 @@ static void ttf_word_text(VM *vm) {
|
||||
cell_t color, size, y, x, u, addr_cell;
|
||||
vaddr_t a;
|
||||
cell_t remaining;
|
||||
uint32_t pen_x;
|
||||
uint32_t pen_x, baseline_y;
|
||||
q48_16_t scale;
|
||||
|
||||
if (vm->dsp < 5) {
|
||||
@@ -123,6 +123,11 @@ static void ttf_word_text(VM *vm) {
|
||||
a = VM_ADDR(addr_cell);
|
||||
remaining = u;
|
||||
pen_x = (uint32_t) x;
|
||||
/* Caller-facing (x,y) is Cartesian: origin at the bottom-left of the physical
|
||||
* framebuffer, y increasing upward. fb_put_pixel() takes framebuffer coordinates
|
||||
* (origin top-left, y increasing downward), so flip once here per-call rather
|
||||
* than at every blit site. */
|
||||
baseline_y = fb_height() - (uint32_t) y;
|
||||
scale = q48_div(q48_from_u64((uint32_t) size), q48_from_u64(g_ttf_font.units_per_em));
|
||||
|
||||
while (remaining > 0) {
|
||||
@@ -138,7 +143,7 @@ static void ttf_word_text(VM *vm) {
|
||||
for (px = 0; px < bmp.width; px++) {
|
||||
if (bmp.pixels[py * bmp.width + px]) {
|
||||
fb_put_pixel(pen_x + px - TTF_CACHE_MARGIN,
|
||||
(uint32_t) y + py - (uint32_t) size - TTF_CACHE_MARGIN,
|
||||
baseline_y + py - (uint32_t) size - TTF_CACHE_MARGIN,
|
||||
(uint32_t) color);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user