Kernel/arch - Fix common division macro to handle numerators around datatype max
[tpg/acess2.git] / KernelLand / Kernel / drv / vterm.c
index dc39cb3..2c6a0d2 100644 (file)
@@ -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)
                {

UCC git Repository :: git.ucc.asn.au