xaizek / vifm-pdcurses (License: mostly public domain) (since 2019-03-20)
PDCurses 3.4 with vifm-specific patches applied (a couple were upstreamed)
<root> / dos / pdcgetsc.c (290db5a3c71ee4347e87cf7d3bc125ef8175bdd9) (1,933B) (mode 100644) [raw]
/* 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;
}
Hints

Before first commit, do not forget to setup your git environment:
git config --global user.name "your_name_here"
git config --global user.email "your@email_here"

Clone this repository using HTTP(S):
git clone https://code.reversed.top/user/xaizek/vifm-pdcurses

Clone this repository using ssh (do not forget to upload a key first):
git clone ssh://rocketgit@code.reversed.top/user/xaizek/vifm-pdcurses

You are allowed to anonymously push to this repository.
This means that your pushed commits will automatically be transformed into a pull request:
... clone the repository ...
... make some changes and some commits ...
git push origin master