X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;f=KernelLand%2FKernel%2Fdrv%2Fvterm.c;h=2c6a0d2f8a79ce34cda825b1f8fc3a21250ed2be;hb=7efc14b23fca7b88126f27d34e99d7e8046e817a;hp=dc39cb30b815dcd1f8e349279d0466f9e8464ac2;hpb=5c29fcc13d3db145e00c01f88d0a584966c6bc38;p=tpg%2Facess2.git diff --git a/KernelLand/Kernel/drv/vterm.c b/KernelLand/Kernel/drv/vterm.c index dc39cb30..2c6a0d2f 100644 --- a/KernelLand/Kernel/drv/vterm.c +++ b/KernelLand/Kernel/drv/vterm.c @@ -20,7 +20,6 @@ #define NUM_VTS 8 //#define DEFAULT_OUTPUT "BochsGA" #define DEFAULT_OUTPUT "Vesa" -#define FALLBACK_OUTPUT "x86_VGAText" #define DEFAULT_INPUT "Keyboard" #define DEFAULT_WIDTH 640 #define DEFAULT_HEIGHT 480 @@ -98,7 +97,7 @@ int VT_Install(char **Arguments) data[ val - arg ] = '\0'; val ++; } - Log_Debug("VTerm", "Argument '%s'", arg); + Log_Debug("VTerm", "Argument '%s'='%s'", opt, val); if( strcmp(opt, "Video") == 0 ) { if( !gsVT_OutputDevice ) @@ -126,9 +125,9 @@ int VT_Install(char **Arguments) // Apply Defaults if(!gsVT_OutputDevice) gsVT_OutputDevice = (char*)DEFAULT_OUTPUT; else if( Module_EnsureLoaded( gsVT_OutputDevice ) ) gsVT_OutputDevice = (char*)DEFAULT_OUTPUT; - if( Module_EnsureLoaded( gsVT_OutputDevice ) ) gsVT_OutputDevice = (char*)FALLBACK_OUTPUT; + //if( Module_EnsureLoaded( gsVT_OutputDevice ) ) gsVT_OutputDevice = (char*)FALLBACK_OUTPUT; if( Module_EnsureLoaded( gsVT_OutputDevice ) ) { - Log_Error("VTerm", "Fallback video '%s' is not avaliable, giving up", FALLBACK_OUTPUT); + Log_Error("VTerm", "Video device '%s' is not avaliable, giving up", gsVT_OutputDevice); return MODULE_ERR_MISC; } @@ -163,32 +162,26 @@ int VT_Install(char **Arguments) Log_Debug("VTerm", "Initialising nodes (and creating buffers)"); for( i = 0; i < NUM_VTS; i++ ) { - gVT_Terminals[i].Mode = TERM_MODE_TEXT; - gVT_Terminals[i].Flags = 0; // gVT_Terminals[i].Flags = VT_FLAG_HIDECSR; //HACK - Stop all those memcpy calls gVT_Terminals[i].CurColour = DEFAULT_COLOUR; - gVT_Terminals[i].WritePos = 0; - gVT_Terminals[i].AltWritePos = 0; - gVT_Terminals[i].ViewPos = 0; - gVT_Terminals[i].ScrollHeight = 0; + gVT_Terminals[i].Mode = PTYBUFFMT_TEXT; // Initialise VT_int_Resize( &gVT_Terminals[i], giVT_RealWidth, giVT_RealHeight ); - gVT_Terminals[i].Mode = PTYBUFFMT_TEXT; char name[] = {'v','t','0'+i,'\0'}; - gVT_Terminals[i].PTY = PTY_Create(name, &gVT_Terminals[i], - VT_PTYOutput, VT_PTYResize, VT_PTYModeset); - struct ptymode mode = { - .OutputMode = PTYBUFFMT_TEXT, - .InputMode = PTYIMODE_CANON|PTYIMODE_ECHO - }; struct ptydims dims = { .W = giVT_RealWidth / giVT_CharWidth, .H = giVT_RealHeight / giVT_CharHeight, .PW = giVT_RealWidth, .PH = giVT_RealHeight }; - PTY_SetAttrib(gVT_Terminals[i].PTY, &dims, &mode, 0); + struct ptymode mode = { + .OutputMode = PTYBUFFMT_TEXT, + .InputMode = PTYIMODE_CANON|PTYIMODE_ECHO + }; + gVT_Terminals[i].PTY = PTY_Create(name, &gVT_Terminals[i], + VT_PTYOutput, VT_PTYResize, VT_PTYModeset, + &dims, &mode); } // Add to DevFS @@ -196,7 +189,7 @@ int VT_Install(char **Arguments) // Set kernel output to VT0 Log_Debug("VTerm", "Setting kernel output to VT#0"); - Debug_SetKTerminal("/Devices/pts/vt0c"); + Debug_SetKTerminal("/Devices/pts/vt0"); return MODULE_ERR_OK; } @@ -381,6 +374,7 @@ void VT_PTYOutput(void *Handle, size_t Length, const void *Data) break; case PTYBUFFMT_2DCMD: // TODO: Impliment 2D commands + VT_int_Handle2DCmd(term, Length, Data); break; case PTYBUFFMT_3DCMD: // TODO: Impliment 3D commands @@ -404,6 +398,8 @@ int VT_PTYModeset(void *Handle, const struct ptymode *Mode) tVTerm *term = Handle; term->Mode = (Mode->OutputMode & PTYOMODE_BUFFMT); + memset(&term->Cmd2D, 0, sizeof(term->Cmd2D)); + if( term == gpVT_CurTerm ) { switch(term->Mode) {