Import backup from 2005-03-21
This commit is contained in:
1 parent
bb8ff09e3f
commit
14792ef954
24 files changed
+671
-197
No files matched your search
@@ -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
@@ -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);
|
||||
|
||||
Reference in new issue
Block a user