Kernel/VTerm - Implemented \ec, reset settings
[tpg/acess2.git] / KernelLand / Kernel / drv / vterm_vt100.c
index 5166633..c054e75 100644 (file)
@@ -139,7 +139,6 @@ void VT_int_ParseEscape_StandardLarge(tVTerm *Term, char CmdChar, int argc, int
                        Term->WritePos = args[0] + args[1]*Term->TextWidth;
                //Log_Debug("VTerm", "args = {%i, %i}", args[0], args[1]);
                break;
-       
        // Scroll up `n` lines
        case 'S':
                tmp = -1;
@@ -158,7 +157,23 @@ void VT_int_ParseEscape_StandardLarge(tVTerm *Term, char CmdChar, int argc, int
                        Term->ViewPos += Term->TextWidth*tmp;
                }
                break;
-       
+       // Set Mode (?)
+       case 'h':
+               if( argc >= 1 )
+               {
+                       switch(args[0])
+                       {
+                       case 2: // Keyboard action mode
+                       case 4: // Insert mode
+                       case 12:        // Send/receive
+                       case 20:        // Automatic newline
+                               break;
+                       default:        // ?
+                               break;
+                       }
+               }
+               break;
+               
        // Set Font flags
        case 'm':
                for( ; argc--; )
@@ -212,7 +227,19 @@ void VT_int_ParseEscape_StandardLarge(tVTerm *Term, char CmdChar, int argc, int
                Term->ScrollTop = args[0];
                Term->ScrollHeight = args[1] - args[0];
                break;
-       
+
+       // Save cursor position
+       case 's':
+               if( argc != 0 ) break;
+               Term->SavedWritePos = (Term->Flags & VT_FLAG_ALTBUF) ? Term->AltWritePos : Term->WritePos;
+               break;
+
+       // Restore saved cursor position
+       case 'u':
+               if( argc != 0 ) break;
+               *((Term->Flags & VT_FLAG_ALTBUF) ? &Term->AltWritePos : &Term->WritePos) = Term->SavedWritePos;
+               break;
+
        default:
                Log_Warning("VTerm", "Unknown control sequence '\\x1B[%c'", CmdChar);
                break;
@@ -329,6 +356,12 @@ int VT_int_ParseEscape(tVTerm *Term, const char *Buffer, size_t Bytes)
        case '\0':
                // Ignore \0
                break;
+       // Reset all attributes
+       case 'c':
+               Term->CurColour = DEFAULT_COLOUR;
+               Term->Flags = 0;
+               Term->ScrollHeight = 0;
+               break;
        default:
                //Log_Notice("VTerm", "TODO: Handle short escape codes");
                {

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