X-Git-Url: https://git.ucc.asn.au/?a=blobdiff_plain;ds=sidebyside;f=Usermode%2FApplications%2Fgui_terminal_src%2Fvt100.c;h=6a2321ea7e91f88168ef81e50e333434229f7297;hb=98bd9c0c8985c50c42231c116a4e18fedd47761e;hp=cdf537194ca056c4ccc395dd16eb36ecde0fbd85;hpb=4e407e69bd660e9a32644281733192193ee6e8c8;p=tpg%2Facess2.git diff --git a/Usermode/Applications/gui_terminal_src/vt100.c b/Usermode/Applications/gui_terminal_src/vt100.c index cdf53719..6a2321ea 100644 --- a/Usermode/Applications/gui_terminal_src/vt100.c +++ b/Usermode/Applications/gui_terminal_src/vt100.c @@ -17,6 +17,8 @@ # include # include // malloc/free +# define ASSERTC(a, r, b) assert(a r b) + static inline int MIN(int a, int b) { return a < b ? a : b; @@ -170,7 +172,7 @@ int Term_HandleVT100(tTerminal *Term, int Len, const char *Buf) if( ret <= old_inc_len ) { _SysDebug("Term_HandleVT100: ret(%i) <= old_inc_len(%i), inc_len=%i, '%*C'", ret, old_inc_len, st->cache_len, st->cache_len, st->cache); - assert(ret > old_inc_len); + ASSERTC(ret, >, old_inc_len); } st->cache_len = 0; //_SysDebug("%i bytes of escape code '%.*s' (return %i)", @@ -446,9 +448,13 @@ int Term_HandleVT100_Long(tTerminal *Term, int Len, const char *Buffer) Display_MoveCursor(Term, 0, -(args[0] != 0 ? args[0] : 1)); break; case 'H': - if( argc != 2 ) { + if( argc == 0 ) { + Display_SetCursor(Term, 0, 0); } - else { + else if( argc == 1 ) { + Display_SetCursor(Term, args[0]-1, 0); + } + else if( argc == 2 ) { // Adjust 1-based cursor position to 0-based Display_SetCursor(Term, args[0]-1, args[1]-1); } @@ -487,12 +493,12 @@ int Term_HandleVT100_Long(tTerminal *Term, int Len, const char *Buffer) break; } break; - case 'S': // Scroll text up n=1 - Display_ScrollDown(Term, (argc >= 1 ? args[0] : 1)); - break; - case 'T': // Scroll text down n=1 + case 'S': // Scroll text up n=1 (expose bottom) Display_ScrollDown(Term, -(argc >= 1 ? args[0] : 1)); break; + case 'T': // Scroll text down n=1 (expose top) + Display_ScrollDown(Term, (argc >= 1 ? args[0] : 1)); + break; case 'c': // Send Device Attributes switch(args[0]) { @@ -631,7 +637,7 @@ int Term_HandleVT100_Long(tTerminal *Term, int Len, const char *Buffer) break; // Set scrolling region case 'r': - Display_SetScrollArea(Term, args[0], (args[1] - args[0])); + Display_SetScrollArea(Term, args[0]-1, (args[1] - args[0])+1); break; case 's':