git.ucc.asn.au
/
tpg
/
acess2.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Added BochsGA to build
[tpg/acess2.git]
/
Kernel
/
drv
/
vterm.c
diff --git
a/Kernel/drv/vterm.c
b/Kernel/drv/vterm.c
index
fc89b3a
..
ec5c1f5
100644
(file)
--- a/
Kernel/drv/vterm.c
+++ b/
Kernel/drv/vterm.c
@@
-11,7
+11,7
@@
#include <errno.h>
#include <semaphore.h>
#include <errno.h>
#include <semaphore.h>
-#define USE_CTRL_ALT
0
+#define USE_CTRL_ALT
1
// === CONSTANTS ===
#define VERSION ((0<<8)|(50))
// === CONSTANTS ===
#define VERSION ((0<<8)|(50))
@@
-57,7
+57,7
@@
typedef struct {
int InputRead; //!< Input buffer read position
int InputWrite; //!< Input buffer write position
char InputBuffer[MAX_INPUT_CHARS8];
int InputRead; //!< Input buffer read position
int InputWrite; //!< Input buffer write position
char InputBuffer[MAX_INPUT_CHARS8];
-
tSemaphore InputSemaphore;
+
//
tSemaphore InputSemaphore;
tVT_Char *Text;
Uint32 *Buffer;
tVT_Char *Text;
Uint32 *Buffer;
@@
-160,10
+160,12
@@
int VT_Install(char **Arguments)
Log_Debug("VTerm", "Argument '%s'", arg);
if( strcmp(opt, "Video") == 0 ) {
Log_Debug("VTerm", "Argument '%s'", arg);
if( strcmp(opt, "Video") == 0 ) {
- gsVT_OutputDevice = strdup(val);
+ if( !gsVT_OutputDevice && Modules_InitialiseBuiltin( val ) == 0 )
+ gsVT_OutputDevice = strdup(val);
}
else if( strcmp(opt, "Input") == 0 ) {
}
else if( strcmp(opt, "Input") == 0 ) {
- gsVT_InputDevice = strdup(val);
+ if( !gsVT_InputDevice && Modules_InitialiseBuiltin( val ) == 0 )
+ gsVT_InputDevice = strdup(val);
}
else if( strcmp(opt, "Width") == 0 ) {
giVT_RealWidth = atoi( val );
}
else if( strcmp(opt, "Width") == 0 ) {
giVT_RealWidth = atoi( val );
@@
-177,9
+179,6
@@
int VT_Install(char **Arguments)
}
}
}
}
- if(gsVT_OutputDevice) Modules_InitialiseBuiltin( gsVT_OutputDevice );
- if(gsVT_InputDevice) Modules_InitialiseBuiltin( gsVT_InputDevice );
-
// Apply Defaults
if(!gsVT_OutputDevice) gsVT_OutputDevice = strdup(DEFAULT_OUTPUT);
if(!gsVT_InputDevice) gsVT_InputDevice = strdup(DEFAULT_INPUT);
// Apply Defaults
if(!gsVT_OutputDevice) gsVT_OutputDevice = strdup(DEFAULT_OUTPUT);
if(!gsVT_InputDevice) gsVT_InputDevice = strdup(DEFAULT_INPUT);
@@
-223,7
+222,7
@@
int VT_Install(char **Arguments)
gVT_Terminals[i].Node.Read = VT_Read;
gVT_Terminals[i].Node.Write = VT_Write;
gVT_Terminals[i].Node.IOCtl = VT_Terminal_IOCtl;
gVT_Terminals[i].Node.Read = VT_Read;
gVT_Terminals[i].Node.Write = VT_Write;
gVT_Terminals[i].Node.IOCtl = VT_Terminal_IOCtl;
-
Semaphore_Init(&gVT_Terminals[i].InputSemaphore, 0, MAX_INPUT_CHARS8, "VTerm", gVT_Terminals[i].Name);
+
//
Semaphore_Init(&gVT_Terminals[i].InputSemaphore, 0, MAX_INPUT_CHARS8, "VTerm", gVT_Terminals[i].Name);
}
// Add to DevFS
}
// Add to DevFS
@@
-313,6
+312,9
@@
void VT_SetResolution(int Width, int Height)
{
if( gVT_Terminals[i].Mode != TERM_MODE_TEXT ) continue;
{
if( gVT_Terminals[i].Mode != TERM_MODE_TEXT ) continue;
+ gVT_Terminals[i].TextWidth = giVT_RealWidth/giVT_CharWidth;
+ gVT_Terminals[i].TextHeight = giVT_RealHeight/giVT_CharHeight;
+
gVT_Terminals[i].Text = realloc(
gVT_Terminals[i].Text,
newBufSize*sizeof(tVT_Char)
gVT_Terminals[i].Text = realloc(
gVT_Terminals[i].Text,
newBufSize*sizeof(tVT_Char)
@@
-429,7
+431,7
@@
Uint64 VT_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer)
{
// Text Mode (UTF-8)
case TERM_MODE_TEXT:
{
// Text Mode (UTF-8)
case TERM_MODE_TEXT:
- VFS_SelectNode(Node, VFS_SELECT_READ, NULL);
+ VFS_SelectNode(Node, VFS_SELECT_READ, NULL
, "VT_Read (UTF-8)"
);
avail = term->InputWrite - term->InputRead;
if(avail < 0)
avail = term->InputWrite - term->InputRead;
if(avail < 0)
@@
-449,7
+451,7
@@
Uint64 VT_Read(tVFS_Node *Node, Uint64 Offset, Uint64 Length, void *Buffer)
//case TERM_MODE_FB:
// Other - UCS-4
default:
//case TERM_MODE_FB:
// Other - UCS-4
default:
- VFS_SelectNode(Node, VFS_SELECT_READ, NULL);
+ VFS_SelectNode(Node, VFS_SELECT_READ, NULL
, "VT_Read (UCS-4)"
);
avail = term->InputWrite - term->InputRead;
if(avail < 0)
avail = term->InputWrite - term->InputRead;
if(avail < 0)
@@
-735,7
+737,7
@@
void VT_KBCallBack(Uint32 Codepoint)
#else
case KEY_LALT: gbVT_AltDown &= ~1; break;
case KEY_RALT: gbVT_AltDown &= ~2; break;
#else
case KEY_LALT: gbVT_AltDown &= ~1; break;
case KEY_RALT: gbVT_AltDown &= ~2; break;
- case KEY_LCTRL: gbVT_CtrlDown &= ~1
break;
+ case KEY_LCTRL: gbVT_CtrlDown &= ~1
;
break;
case KEY_RCTRL: gbVT_CtrlDown &= ~2; break;
#endif
}
case KEY_RCTRL: gbVT_CtrlDown &= ~2; break;
#endif
}
@@
-1101,6
+1103,9
@@
void VT_int_PutChar(tVTerm *Term, Uint32 Ch)
default:
Term->Text[ Term->WritePos ].Ch = Ch;
Term->Text[ Term->WritePos ].Colour = Term->CurColour;
default:
Term->Text[ Term->WritePos ].Ch = Ch;
Term->Text[ Term->WritePos ].Colour = Term->CurColour;
+ // Update the line before wrapping
+ if( (Term->WritePos + 1) % Term->TextWidth == 0 )
+ VT_int_UpdateScreen( Term, 0 );
Term->WritePos ++;
break;
}
Term->WritePos ++;
break;
}
@@
-1146,7
+1151,7
@@
void VT_int_PutChar(tVTerm *Term, Uint32 Ch)
{
//Debug("Term->WritePos (%i) >= %i",
// Term->WritePos,
{
//Debug("Term->WritePos (%i) >= %i",
// Term->WritePos,
- // Term->ViewPos + Term->
Width*Term->
Height
+ // Term->ViewPos + Term->
TextWidth*Term->Text
Height
// );
//Debug("Scrolling screen only");
// );
//Debug("Scrolling screen only");
@@
-1161,6
+1166,8
@@
void VT_int_PutChar(tVTerm *Term, Uint32 Ch)
//Debug("Term->ViewPos = %i", Term->ViewPos);
VT_int_ScrollFramebuffer( Term );
VT_int_UpdateScreen( Term, 0 );
//Debug("Term->ViewPos = %i", Term->ViewPos);
VT_int_ScrollFramebuffer( Term );
VT_int_UpdateScreen( Term, 0 );
+
+ //VT_int_UpdateScreen( Term, 1 ); // HACK!
}
//LEAVE('-');
}
//LEAVE('-');
UCC
git Repository :: git.ucc.asn.au