Kernel/VTerm - Implemented \ec, reset settings
[tpg/acess2.git] / KernelLand / Kernel / drv / vterm_vt100.c
index 1f34479..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;
@@ -228,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;
@@ -345,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