aboutsummaryrefslogtreecommitdiff
path: root/src/screen.c
diff options
context:
space:
mode:
authorB. Watson <urchlay@slackware.uk>2026-03-26 05:33:19 -0400
committerB. Watson <urchlay@slackware.uk>2026-03-26 05:33:19 -0400
commit5ffacabaca37bfae01c07624d1e74efb7bd0680c (patch)
tree3d213bf97e63fe1f7ab0d1279fc3d4867b6003f5 /src/screen.c
parentd4077f32b9bf3a924dca1764fa57a4263a65a964 (diff)
downloadfujinet-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.c19
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);