#ifndef _4M_TERM_H
#define _4M_TERM_H

#ifndef IN_TERM
extern int TC_li;
extern int TC_co;

extern char *TC_cl, *TC_so, *TC_se, *TC_cm, *TC_ce, *TC_cs,
   *TC_sf, *TC_nl, *TC_al, *TC_dl, *TC_SF, *TC_AL, *TC_DL,
   *TC_sr, *TC_is, *TC_te, *TC_vi, *TC_ve, *TC_rc, *TC_sc;

/* Terminal definitions - local */
extern int put(/* char */);

extern int hidden;
extern int inverse;
#endif /* IN_TERM */

int put(/* char */);

/* Terminal definitions - global */
extern int tgetent(/* char *, char * */);
extern int tgetnum(/* char * */);
extern char *tgetstr(/* char *, char ** */);
extern char *tgoto(/* char *, int, int */);
extern int tputs(/* register char *, int, int (*)(char) */);

#define page()           if (TC_cl) tputs(TC_cl, TC_li, put)
#define clear_eol()      if (TC_ce) tputs(TC_ce, 0, put)
#define setinverse()     if (TC_so) { tputs(TC_so, 10, put); inverse++; }
#define setnormal()      if (TC_se) { tputs(TC_se, 10, put); inverse--; }
#define showcursor()     if (TC_ve) { tputs(TC_ve, 1, put); hidden--; }
#define hidecursor()     if (TC_vi) { tputs(TC_vi, 1, put); hidden++; }
#define savecursor()     if (TC_sc) tputs(TC_ce, 1, put)
#define restorecursor()  if (TC_sc) tputs(TC_ce, 1, put)
#define gotoxy(_x, _y)   if (TC_cm) tputs(tgoto(TC_cm, (_x), (_y)), 0, put)

#endif /* _4M_TERM_H */
