From bd9399e06033bde5445ab0a3dd59ec596d72e10a Mon Sep 17 00:00:00 2001 From: Andrew Kesterson Date: Tue, 7 May 2024 17:01:19 -0400 Subject: [PATCH] WIP scrolling seems to work correctly now if all you ever do is call advanceCursor() --- src/conio.c | 17 +++++++---------- src/screen.c | 30 ++---------------------------- src/screen.h | 1 - 3 files changed, 9 insertions(+), 39 deletions(-) diff --git a/src/conio.c b/src/conio.c index 7ebf07a..0108c83 100644 --- a/src/conio.c +++ b/src/conio.c @@ -27,7 +27,7 @@ void _putch(char c) #endif } -void _cputs(char *ptr) +void _cputs(char *ptr) { if ( ptr == NULL ) { return; @@ -35,12 +35,9 @@ void _cputs(char *ptr) while ((char)*ptr != 0x0) { _putch((char)*ptr); if (*ptr == '\n') { - if ( _cursor_y < 24 ) _cursor_y += 1; - _cursor_x = 0; - setCursorPosition(_cursor_x, _cursor_y); - } else { - advanceCursor(); + _cursor_x = 80; } + advanceCursor(); ptr += 1; } return; @@ -81,10 +78,10 @@ char *_cgets(char *d) while ( scancode != 0 ) { if ( scancode == 0x0e ) { if ( d > orig ) { - backupCursor(); - setCursorPosition(_cursor_x, _cursor_y); - d -= 1; - _putch(0x0); + backupCursor(); + setCursorPosition(_cursor_x, _cursor_y); + d -= 1; + _putch(0x0); } } else if ( scancode == 0x1c ) { break; diff --git a/src/screen.c b/src/screen.c index 159f11e..ba88fc1 100644 --- a/src/screen.c +++ b/src/screen.c @@ -17,32 +17,6 @@ void blankScreen(void) } } -void scrollScreenUp(char start, char lines) -{ -#ifndef __GNUC__ -#asm - push bx; - mov bx, sp; - push ax; - push cx; - push dx; - mov ch, [bx+4]; - mov cl, #0x00; - mov dh, #0x18; - mov dl, #0x4F; - mov al, [bx+6]; - mov ah, #0x06; - mov bx, #0x0; - int 0x10; - pop dx; - pop cx; - pop ax; - pop bx; -#endasm - return; -#endif -} - void setCursorPosition(char x, char y) { #ifndef __GNUC__ @@ -79,9 +53,9 @@ void backupCursor() void advanceCursor() { _cursor_x += 1; - if ( _cursor_x > 79 ) { + if ( _cursor_x > 72 ) { _cursor_x = 0; - _cursor_y += 1; + if ( _cursor_y <= 23 ) _cursor_y += 1; } setCursorPosition(_cursor_x, _cursor_y); } diff --git a/src/screen.h b/src/screen.h index 4c95415..7b169d6 100644 --- a/src/screen.h +++ b/src/screen.h @@ -8,6 +8,5 @@ void setCursorPosition(char x, char y); void backupCursor(); void advanceCursor(); void blankScreen(); -void scrollScreenUp(char start, char lines); #endif /* _SCREEN_H_ */