FABRIC.md item 4.4t: confine REPL text rendering to the CANVAS box
vt100's TTF-mode text grid now operates within the per-arch 640x480 box (computed in 4.4o, pixel-verified in 4.4p) instead of the full framebuffer: box-origin offset in px_of()/py_of(), box-derived cols/rows (53x20) set before the 4.4q scrollback allocation depends on them, mode-aware erase_display()/reverse-index fill, and a new box-scoped fb_scroll_rect() alongside the existing whole-framebuffer fb_scroll_rows() (bitmap/boot mode unaffected either way). Also clears the full framebuffer once at the bitmap-to-TTF switch so leftover boot debris doesn't sit frozen outside the box now that erase_display(2) is box-scoped afterward. Three-arch QEMU boot + pixel-scanned screendumps confirm zero non-background pixels land outside the box on amd64, aarch64, and riscv64. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
1f3ec3554e
commit
c92be2768f
@@ -105,4 +105,16 @@ void fb_draw_orientation_test(void);
|
||||
*/
|
||||
void fb_scroll_rows(uint32_t char_rows, uint32_t bg);
|
||||
|
||||
/**
|
||||
* Scroll a sub-rectangle of the framebuffer up by `pixel_rows` pixel rows
|
||||
* (FABRIC.md item 4.4t: box-confined REPL scrolling). Unlike fb_scroll_rows()
|
||||
* (whole-framebuffer, fixed 16px-row assumption), this is bounded to
|
||||
* [x, x+w) x [y, y+h) and takes an explicit pixel-row count so callers with
|
||||
* a non-8x16 cell height (e.g. TTF mode) pass their own cell height directly.
|
||||
* Pixels outside the rect are untouched. The vacated rows at the bottom of
|
||||
* the rect are filled with bg.
|
||||
*/
|
||||
void fb_scroll_rect(uint32_t x, uint32_t y, uint32_t w, uint32_t h,
|
||||
uint32_t pixel_rows, uint32_t bg);
|
||||
|
||||
#endif /* STARKERNEL_FRAMEBUFFER_H */
|
||||
|
||||
Reference in New Issue
Block a user