Import backup from 2005-03-21

This commit is contained in:
josh committed 2017-07-25 22:23:50 -04:00
1 parent bb8ff09e3f
commit 14792ef954
24 files changed
+671 -197

No files matched your search

+2 -2
View File
@@ -9,8 +9,8 @@
#include "functions.h"
#include "lang/conv.h" // asciiSwitchCase()
#include "kout.h"
#include "display.h" // display_activate()
#include "display/kout.h"
#include "display/display.h" // display_activate()
#define KBD_BUFFER_LENGTH 64
+15 -17
View File
@@ -8,7 +8,7 @@
#include "fs/devices.h"
#include "mm/vmm.h"
#include "lang/lang.h"
#include "display.h"
#include "display/display.h"
#include "functions.h"
vconsole_t *vconsoles[VCONSOLE_MAX]; // pointer to virtual console structs
@@ -39,7 +39,7 @@ minor_t vconsole_new(int width, int height)
int i;
for (i = 1; i < VCONSOLE_MAX; i++)
{
if ( (!vconsoles[i]) && ( vconsoles[i] = kcalloc(1, sizeof(vconsole_t)))) //New(vconsole_t) ) )
if ( (!vconsoles[i]) && ( vconsoles[i] = New(vconsole_t) ) )
{
if (( vconsoles[i]->buffer = kmalloc(width * height * 2) ))
{
@@ -47,7 +47,7 @@ minor_t vconsole_new(int width, int height)
vconsoles[i]->height = height;
vconsoles[i]->attribute = vconsoles[i]->foreground = 0x07;
memsetw(vconsoles[i]->buffer, 0x0720, width * height);
// register the device as /dev/console%d
// TODO: register the device as /dev/console%d
return i;
}
else
@@ -65,7 +65,8 @@ minor_t vconsole_new(int width, int height)
int vconsole_draw(minor_t id)
{
if (vconsoles[id])
return display_console_draw(id, vconsoles[id]->cursorPosition, vconsoles[id]->buffer);
return display_console_draw(id, vconsoles[id]->cursorPosition,
vconsoles[id]->buffer, vconsoles[id]->width * vconsoles[id]->height);
return -1;
}
@@ -144,14 +145,11 @@ int vconsole_char_write(minor_t id, int c)
break;
case 's': // push cursor position on an internal stack
if (vconsoles[id]->cursorStackPosition < 16)
vconsoles[id]->cursorStack[vconsoles[id]->cursorStackPosition++] = vconsoles[id]->cursorPosition;
vconsoles[id]->cursorStack[vconsoles[id]->cursorStackPosition++] = vconsoles[id]->cursorPosition;
break;
case 'u': // pop cursor position from stack
if (vconsoles[id]->cursorStackPosition > 0)
{
vconsole_update_cursor(id, vconsoles[id]->cursorStack[--vconsoles[id]->cursorStackPosition]);
}
if (vconsoles[id]->cursorStackPosition > 0)
vconsole_update_cursor(id, vconsoles[id]->cursorStack[--vconsoles[id]->cursorStackPosition]);
break;
case 'm': // set text attributes
for (evalEscapePosition = 0; evalEscapePosition <= vconsoles[id]->escapePosition; evalEscapePosition++)
@@ -261,13 +259,13 @@ void vconsole_update_cursor(minor_t id, u16_t position)
vconsoles[id]->cursorPosition = position;
if (position >= (vconsoles[id]->width * vconsoles[id]->height)) // time to scroll console
{
int i;
for (i = 0; i < vconsoles[id]->cursorStackPosition; i++)
{
vconsoles[id]->cursorStack[i] -= vconsoles[id]->width;
if (vconsoles[id]->cursorStack[i] < 0)
vconsoles[id]->cursorStack[i] = 0;
}
int i;
for (i = 0; i < vconsoles[id]->cursorStackPosition; i++)
{
vconsoles[id]->cursorStack[i] -= vconsoles[id]->width;
if (vconsoles[id]->cursorStack[i] < 0)
vconsoles[id]->cursorStack[i] = 0;
}
vconsoles[id]->cursorPosition -= vconsoles[id]->width;
memcpyw(vconsoles[id]->buffer, vconsoles[id]->buffer + vconsoles[id]->width, vconsoles[id]->width * (vconsoles[id]->height - 1));
memsetw(vconsoles[id]->buffer + (vconsoles[id]->width * (vconsoles[id]->height - 1)), 0x0720, vconsoles[id]->width);