#define DEFAULT_HEIGHT 25
#define DEFAULT_COLOUR (VT_COL_BLACK|(VT_COL_WHITE<<16))
+#define VT_FLAG_HIDECSR 0x01
+
enum eVT_Modes {
VT_MODE_TEXT8, // UTF-8 Text Mode (VT100 Emulation)
VT_MODE_TEXT32, // UTF-32 Text Mode (Acess Native)
// === TYPES ===
typedef struct {
int Mode;
+ int Flags;
int Width, Height;
int ViewPos, WritePos;
Uint32 CurColour;
for( i = 0; i < NUM_VTS; i++ )
{
gVT_Terminals[i].Mode = VT_MODE_TEXT8;
+ gVT_Terminals[i].Flags = 0;
gVT_Terminals[i].Width = DEFAULT_WIDTH;
gVT_Terminals[i].Height = DEFAULT_HEIGHT;
gVT_Terminals[i].CurColour = DEFAULT_COLOUR;
LOG("WriteUTF8(%p, 0x%x)", Buffer+pos, term->InputBuffer[term->InputRead]);
pos += WriteUTF8(Buffer+pos, term->InputBuffer[term->InputRead]);
term->InputRead ++;
+ term->InputRead %= MAX_INPUT_CHARS;
}
}
break;
((Uint32*)Buffer)[pos] = term->InputBuffer[term->InputRead];
pos ++;
term->InputRead ++;
+ term->InputRead %= MAX_INPUT_CHARS;
}
}
break;
//VT_int_PutString32(term, Buffer, Length);
break;
}
+
//LEAVE('i', 0);
return 0;
}
VT_int_PutChar(Term, val);
}
}
+
+ // Update cursor
+ if( !(Term->Flags & VT_FLAG_HIDECSR) )
+ {
+ tVideo_IOCtl_Pos pos;
+ pos.x = Term->WritePos % Term->Width;
+ pos.y = Term->WritePos / Term->Width;
+ VFS_IOCtl(giVT_OutputDevHandle, VIDEO_IOCTL_SETCURSOR, &pos);
+ }
}
/**
switch(Ch)
{
+ case 0: return; // Ignore NULL byte
case '\n':
Term->WritePos += Term->Width;
case '\r':