- if(Term->Flags & VT_FLAG_ALTBUF)
- {
- Term->AltWritePos = write_pos;
-
- if(Term->AltWritePos >= Term->TextWidth*Term->TextHeight)
- {
- Term->AltWritePos -= Term->TextWidth;
- VT_int_ScrollText(Term, 1);
- }
-
- }
- else
- {
- Term->WritePos = write_pos;
- // Move Screen
- // - Check if we need to scroll the entire scrollback buffer
- if(Term->WritePos >= Term->TextWidth*Term->TextHeight*(giVT_Scrollback+1))
- {
- int base;
-
- // Update view position
- base = Term->TextWidth*Term->TextHeight*(giVT_Scrollback);
- if(Term->ViewPos < base)
- Term->ViewPos += Term->Width;
- if(Term->ViewPos > base)
- Term->ViewPos = base;
-
- VT_int_ScrollText(Term, 1);
- Term->WritePos -= Term->TextWidth;
- }
- // Ok, so we only need to scroll the screen
- else if(Term->WritePos >= Term->ViewPos + Term->TextWidth*Term->TextHeight)
- {
- VT_int_ScrollFramebuffer( Term, 1 );
-
- Term->ViewPos += Term->TextWidth;
- }
- }
+ ASSERTC(write_pos, <=, limit);
+
+ HEAP_VALIDATE();
+
+ // TODO: Schedule a delayed screen update