WIP minor improvements to conio/screen for scrolling, still doesn't work reliably once we print more than 25 lines

This commit is contained in:
2024-05-07 16:17:36 -04:00
parent 559ff15dc0
commit 5b4e0e7a0f
3 changed files with 33 additions and 6 deletions

View File

@@ -35,7 +35,7 @@ void _cputs(char *ptr)
while ((char)*ptr != 0x0) { while ((char)*ptr != 0x0) {
_putch((char)*ptr); _putch((char)*ptr);
if (*ptr == '\n') { if (*ptr == '\n') {
_cursor_y += 1; if ( _cursor_y < 24 ) _cursor_y += 1;
_cursor_x = 0; _cursor_x = 0;
setCursorPosition(_cursor_x, _cursor_y); setCursorPosition(_cursor_x, _cursor_y);
} else { } else {

View File

@@ -17,6 +17,32 @@ 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) void setCursorPosition(char x, char y)
{ {
#ifndef __GNUC__ #ifndef __GNUC__

View File

@@ -8,5 +8,6 @@ void setCursorPosition(char x, char y);
void backupCursor(); void backupCursor();
void advanceCursor(); void advanceCursor();
void blankScreen(); void blankScreen();
void scrollScreenUp(char start, char lines);
#endif /* _SCREEN_H_ */ #endif /* _SCREEN_H_ */