From fe51f65be393161da81d6db6144418c97a8e0fe7 Mon Sep 17 00:00:00 2001 From: user Date: Thu, 16 Jul 2026 16:30:33 +0200 Subject: term/osk: scroll region so the OSK never hides the input line The terminal now has a variable usable height (wTermRows). term_scroll and cursor_down operate within [0 .. wTermRows-1], and term_set_rows(n) shrinks or grows that region, scrolling the cursor up into view when it would fall outside. osk_toggle shrinks the terminal to the rows above the keyboard on show (18 - OSK_ROWS = 15) and restores full height on hide, so the active line is always visible just above the docked keyboard, and hiding the OSK reclaims all 18 rows. Also add c/count.c ("count [n]", default 25): prints n numbered lines to observe/debug scrolling and the scroll-region behavior. Registered as program id 21 / bank 23. Fixed the arg to read argv[0] (getargs returns the string after the command name). Verified: filling the screen then opening the OSK scrolls the latest line to row 14 (visible) with the keyboard at 15-17; closing it restores rows 15-17; count N prints exactly N lines. --- src/programs.asm | 7 +++++++ 1 file changed, 7 insertions(+) (limited to 'src/programs.asm') diff --git a/src/programs.asm b/src/programs.asm index 64efc4d..40d9034 100644 --- a/src/programs.asm +++ b/src/programs.asm @@ -103,6 +103,9 @@ ProgBlk: SECTION "prog_mkdir", ROMX[$4000], BANK[22] ProgMkdir: INCBIN "c/mkdir.bin" +SECTION "prog_count", ROMX[$4000], BANK[23] +ProgCount: + INCBIN "c/count.bin" ; ----------------------------------------------------------------------------- ; PROG_SH (bank 3) - the shell, now written in C (c/sh.c): parses >/ program id, searched by sys_lookup. @@ -235,4 +240,6 @@ NameTable:: db PROG_BLK db "mkdir", 0 db PROG_MKDIR + db "count", 0 + db PROG_COUNT db 0 -- cgit v1.3.1-sl0p