+void vt100GetCursor(int * v, int * h) {
+ *v = *h = 0;
+ printf("\033[6n");
+ getch(); getch();
+ int c;
+ while ((c = getch()) != ';')
+ *v = (10*(*v)+(c-'0'));
+ while ((c = getch()) != 'R')
+ *h = (10*(*h)+(c-'0'));
+}
+void vt100GetScreenSize(int * v, int * h) {
+#ifdef _WIN32
+ CONSOLE_SCREEN_BUFFER_INFO csbi;
+ GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &csbi);
+ *h = csbi.srWindow.Right - csbi.srWindow.Left + 1;
+ *v = csbi.srWindow.Bottom - csbi.srWindow.Top + 1;
+#else
+ struct winsize w;
+ ioctl(STDOUT_FILENO, TIOCGWINSZ, &w);
+ *h = w.ws_row;
+ *v = w.ws_col;
+#endif
+}