/*->h.vtdef */

#define TTYCOLS 132


#define TTBDX    16     /* os unit width of character           */
#define TTBDY    36     /* os unit hegith of character          */


#define TTDX vtoscharx
#define TTDY vtoschary


#define TTEDX (vtzoom.var?TTBDX:vtoscharx)
#define TTEDY (vtzoom.var?TTBDY:vtoschary)


#define VTSTNONE  0
#define VTSTLOCAL 1
#define VTSTHOST  2
#define VTSTTABS  3


typedef struct vtsaveblock
{
 int ttyx;
 int ttyy;
 int gn[4];
 int gl;
 int gr;
 int foreground;
 int background;
 int rendition;
 int pend;
} vtsaveblock;


#define VTABACKLEN 64

extern char vtanswerback[VTABACKLEN];

extern int  ttymode;          /* emulating teletype */
extern int  ansisys;          /* ansi.sys mode ?    */
extern int  vt220;            /* vt220 mode ?       */
extern int  gcomms;

extern int  scltop;           /* coord 0-23 of top of scroll zone */
extern int  sclbot;           /* coord 0-23 of bot of scroll zone */
extern int  tabs[TTYCOLS];    /* array of tabs */
extern int  width;            /* dynamic width 80/132 */

extern int  altkey;           /* alternate keypad state */
extern int  ansimode;         /* VT52 emulating VT100 */
extern int  vt52graf;         /* VT52 graphics in use */
extern int  vt100graf;
extern int  newlinemode;
extern int  wrapmode;
extern int  keypadmode;       /*   set = application mode */
extern int  keylockmode;      /*   set = keyboard locked */
extern int  cursorkeymode;    /* 1 determines cursor key codes */
extern int  screenmode;       /* 5 set=reverse video */
extern int  originmode;       /* 6 set=origin top of scroll zone - 
                                   can't leave scroll zone  */
extern int  automode;         /* 8 set=autorepeat */
extern int  printer;          /* does the printer exist */
extern int  printff;          /* print form feed ? */
extern int  printarea;        /* 1=full screen 0 =scroll zone*/
extern int  autoprint;        /* 1=send stuff to printer */
extern int  conoprint;        /* 1=only send stuff to printer */
extern int  echomode;         /* echo mode */
extern int  insertmode;       /* insert mode */
extern int  txcrlnf;          /* 1 = map 13's to 13,10 seq's */
extern int  rxcrlnf;          /* 1 = map 13's to 13,10 seq's */
extern int  destbkspc;        /* 1 = destructive backspace   */
extern int  ignorerb;         /* 1 = dont rub  out */
extern int  vtswopbs;         /* swop bs and del */
extern int  localmode;        /* local editing mode */

extern char vtleds[4];

extern int  vttekmode;        /* 1==VT is tek plane */


extern int  vtncs;            /* national character set    */
extern int  vtncsinuse;       /* in use?                   */

extern int  vtupss;           /* user preferred char set   */

extern int  vtssg2;           /* single shift for gl to g2 */
extern int  vtssg3;           /* single shift for gr to g3 */

extern int  vtgl;             /* has value 0-3        */
extern int  vtgr;             /* has value 0-3        */

extern int  vtgn[4];          /* has value 0-VTMAXSET */



extern int  smooth;

extern int  selerase;
extern int  rendition;
extern int  foreground;       /* foreground colour */
extern int  background;       /* background colour */


extern int  bit8c;

extern int  flock;
extern int  c1codes;
extern int  dcs;
extern int  pend;



extern vtsaveblock vtsavecursor;
extern int         vtsaved;        /* saved cursor values */

extern vtsaveblock vtstatusblock;


extern int  escflag;
extern int  bra_flag;         /* [ sequence commenced */
extern int  inner_char;       /* intermediate char received */
extern int  inner_par;        /* number of params */
extern int  inner_stack[32];  /* stack of params */
extern char inner_prefix[32];
extern int  inner_tot;        /* next byte to add to string */
extern int  inner_query;      /* received a ? after ESC [   */
extern int  curly;            /* ESC ( ) sequence           */
extern int  curlypc;          /* ESC ( % sequence           */
extern int  hash;             /* ESC # sequence */
extern int  percent;          /* ESC % sequence */


extern int saved;
extern int ttyx;
extern int ttyy;
extern int atrf;



extern int  vtcurs;                             /* is there a vt cursor */
extern int  vtcursphase;                        /* vt cursor phase 0/1  */
extern int  vtcurstime;                         /* time to change phase */
extern int  vtblock;                            /* block cursor         */
extern int  vtbeep;
extern int  vtdefbuffsize;                      /* size of scroll back  */



extern int  vtopen;                             /* vt windows are open  */
extern int  vtvhi;
extern int  vtexists;                         /* does it exist              */

extern int  vtpendredraw;
extern int  vtmovecurs;

extern int  vtpendshift;
extern int  vtpendscrolly;

extern int  vtflashphase;
extern int  vtflashtime;

extern int  vtpendsubs;
extern int  vtsuby;
extern int  vtsubn;
extern int  vtsubdelta;

extern int  vtselect;

extern int  vtinvert;                          /* B<->W */


extern int  tscrolly;      /* equal to scy for vertical scroll bar */

extern int  buffsize;      /* number of lines in capture buffer             */
extern int  tops;          /* offset of line 0 of screen in capture buffer  */

extern int  bscroll;       /* offset of line 0 of capture buffer in indexs  */

extern char * linedata;    /* buffer holding data for each line on screen   */
extern char * lineindex;   /* buffer holding info about each line and index */
                           /* into linedata buffer                          */


extern int front;
extern int back;
extern int style;

extern int sfront;
extern int sback;
extern int sstyle;


extern char * vtname;

extern void vtinitboot(void);
extern void vtsoftboot(void);
extern void vthardboot(void);
extern void vtreset(void);
extern int  vtcreate(int terminal);
extern void vtdestroy(void);
extern void vtopenwindows(int new);
extern void vtclosewindows(void);

extern void vtentertekmode(void);
extern void vtquittekmode(void);


extern zoomer vtzoom;

extern int    vtoscharx;
extern int    vtoschary;

extern int    vtheight;      /* 24/25 */
extern int    vtstatus;      /* status line mode */


extern int    vtx0;
extern int    vtx1;
extern int    vty0;
extern int    vty1;
extern int    vtscx;
extern int    vtscy;
extern int    vtby;
extern int    vtbx;

extern char * vtpastebuff;       /* VT clip board */
extern int    vtpastebufflen;    /* length of it  */

extern int    vtlock;

