From 5ffacabaca37bfae01c07624d1e74efb7bd0680c Mon Sep 17 00:00:00 2001 From: "B. Watson" Date: Thu, 26 Mar 2026 05:33:19 -0400 Subject: Experimenting with extra scrollback; this is not in its final form yet. --- src/screen.c | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) (limited to 'src/screen.c') diff --git a/src/screen.c b/src/screen.c index 42a7e65..2d4436f 100644 --- a/src/screen.c +++ b/src/screen.c @@ -8,6 +8,10 @@ #define SDLST ((u16 *)0x0230) +/* if DOS isn't being used, the config will carve up the $0700-$1fff + area for extra scrollback. */ +unsigned int *bonus_addrs = (unsigned int *)0xf0; + char scr_status[MAX_SCREENS]; /* the screen that's currently displaying */ @@ -26,12 +30,20 @@ void scr_waitvcount(u8 c) { } static void scr_clear(char s) { + if(bonus_addrs[s]) { + memset(bonus_addrs[s], 0, 1000); + strcpy(bonus_addrs[s], "This is bonus scrollback!"); + } memset(screen_top_addrs[s], 0, 1000); memset(screen_bot_addrs[s], 0, 1000); memset(scr_names[s], 0, 32); } static void scr_scroll(char s) { + if(bonus_addrs[s]) { + memmove(bonus_addrs[s], bonus_addrs[s] + 40, 960); + memmove(bonus_addrs[s] + 960, screen_top_addrs[s], 40); + } memmove(screen_top_addrs[s], screen_top_addrs[s] + 40, 960); memmove(screen_top_addrs[s] + 960, screen_bot_addrs[s], 40); memmove(screen_bot_addrs[s], screen_bot_addrs[s] + 40, 920); @@ -115,6 +127,13 @@ void scr_display(char s) { scr_show_status(s); } +void scr_scrollback_bonus(void) { + if(bonus_addrs[scr_current]) { + scr_waitvcount(112); + *dlist_top_lms = (u16)bonus_addrs[scr_current]; + } +} + void scr_scrollback(void) { // OS.color2 = 0; scr_waitvcount(112); -- cgit v1.2.3