+ if(Term->ViewTopRow + CountDown < 0)
+ return ;
+ if(Term->ViewTopRow + CountDown > Term->TextHeight * (giVT_Scrollback + 1))
+ return ;
+
+ Term->ViewTopRow += CountDown;
+ }
+}
+void Display_SetCursor(tTerminal *Term, int Row, int Col)
+{
+ LOG("(R%i,C%i)", Row, Col);
+ VT_int_UpdateScreen(Term, 0);
+ int maxrows = VT_int_GetBufferRows(Term);
+ ASSERTCR( Row, >=, 0, );
+ ASSERTCR( Row, <, maxrows, );
+ ASSERTCR( Col, >=, 0, );
+ ASSERTCR( Col, <, Term->TextWidth, );
+ VT_int_GetWritePosPtr(Term)->Row = Row;
+ VT_int_GetWritePosPtr(Term)->Col = Col;
+}
+void Display_MoveCursor(tTerminal *Term, int RelRow, int RelCol)
+{
+ LOG("(R+%i,C+%i)", RelRow, RelCol);
+ tVT_Pos *wrpos = VT_int_GetWritePosPtr(Term);
+
+ // TODO: Support scrolling if cursor goes offscreen
+ // if( bScrollIfNeeded )
+ // Display_ScrollDown(extra);
+ // else
+ // clip
+
+ if( RelCol != 0 )
+ {
+ //
+ if( RelCol < 0 )