diff options
Diffstat (limited to 'payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c')
-rw-r--r-- | payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c | 100 |
1 files changed, 100 insertions, 0 deletions
diff --git a/payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c b/payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c new file mode 100644 index 0000000000..290db5a3c7 --- /dev/null +++ b/payloads/libpayload/curses/PDCurses/dos/pdcgetsc.c @@ -0,0 +1,100 @@ +/* Public Domain Curses */ + +#include "pdcdos.h" + +RCSID("$Id: pdcgetsc.c,v 1.42 2008/07/13 16:08:17 wmcbrine Exp $") + +#include <stdlib.h> + +/* return width of screen/viewport */ + +int PDC_get_columns(void) +{ + PDCREGS regs; + int cols; + const char *env_cols; + + PDC_LOG(("PDC_get_columns() - called\n")); + + /* use the value from COLS environment variable, if set. MH 10-Jun-92 */ + /* and use the minimum of COLS and return from int10h MH 18-Jun-92 */ + + regs.h.ah = 0x0f; + PDCINT(0x10, regs); + cols = (int)regs.h.ah; + + env_cols = getenv("COLS"); + + if (env_cols) + cols = min(atoi(env_cols), cols); + + PDC_LOG(("PDC_get_columns() - returned: cols %d\n", cols)); + + return cols; +} + +/* get the cursor size/shape */ + +int PDC_get_cursor_mode(void) +{ + PDC_LOG(("PDC_get_cursor_mode() - called\n")); + + return getdosmemword(0x460); +} + +/* return number of screen rows */ + +int PDC_get_rows(void) +{ + const char *env_rows; + int rows; + + PDC_LOG(("PDC_get_rows() - called\n")); + + /* use the value from LINES environment variable, if set. MH 10-Jun-92 */ + /* and use the minimum of LINES and *ROWS. MH 18-Jun-92 */ + + rows = getdosmembyte(0x484) + 1; + env_rows = getenv("LINES"); + + if (env_rows) + rows = min(atoi(env_rows), rows); + + if (rows == 1 && pdc_adapter == _MDS_GENIUS) + rows = 66; + if (rows == 1 && pdc_adapter == _MDA) + rows = 25; + + if (rows == 1) + { + rows = 25; + pdc_direct_video = FALSE; + } + + switch (pdc_adapter) + { + case _EGACOLOR: + case _EGAMONO: + switch (rows) + { + case 25: + case 43: + break; + default: + rows = 25; + } + break; + + case _VGACOLOR: + case _VGAMONO: + break; + + default: + rows = 25; + break; + } + + PDC_LOG(("PDC_get_rows() - returned: rows %d\n", rows)); + + return rows; +} |