diff options
| author | B. Watson <urchlay@slackware.uk> | 2026-03-26 05:33:19 -0400 |
|---|---|---|
| committer | B. Watson <urchlay@slackware.uk> | 2026-03-26 05:33:19 -0400 |
| commit | 5ffacabaca37bfae01c07624d1e74efb7bd0680c (patch) | |
| tree | 3d213bf97e63fe1f7ab0d1279fc3d4867b6003f5 /src/screen.c | |
| parent | d4077f32b9bf3a924dca1764fa57a4263a65a964 (diff) | |
| download | fujinet-chat-5ffacabaca37bfae01c07624d1e74efb7bd0680c.tar.gz | |
Experimenting with extra scrollback; this is not in its final form yet.
Diffstat (limited to 'src/screen.c')
| -rw-r--r-- | src/screen.c | 19 |
1 files changed, 19 insertions, 0 deletions
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); |
