/* ------------------------------------------------------------------------ */
/*                                sstvid.h                                  */
/*                                                                          */
/*                           video header file                              */
/*                                                                          */
/*      CopyRight (C) 1991,1992  Steven Lutrov.   All rights reserved.      */
/* ------------------------------------------------------------------------ */
#include <conio.h>

/*  SCREENWIDTH      (peekb(0x40,0x4a) & 255)
   SCREENHEIGHT     (visvga() || visega() ? peekb(0x40,0x84)+1 : 25)
*/

#define   SCREENWIDTH      80
#define   SCREENHEIGHT     25

#define   VIDEO            0x010   /* video interrupts */
#define   KEYBRD           0x016   /* keyboard interrupts */
#define   DOS              0x021   /* dos interrupts */
#define   CRIT             0x024   /* critical error handler */
#define   KBUSYLOOP        0x028   /* keyboard busy loop, intr handler */

/* ------------------------------------------------------------------------ */
/*                             video functions                              */
/* ------------------------------------------------------------------------ */
void   vblinkbit         (int f);
void   vclearrline       (unsigned char,unsigned char);
void   vcls              (unsigned char);
void   vfill             (int x, int y, int yy, int xx, int c, int a);
int    vget              (int x, int y);
int    vgeta             (int x, int y);
int    vgetac            (void);
int    vgetch            (int x, int y);
int    vgetchc           (void);
void   vgetcur           (int *x, int *y);
void   vhidecur          (void);
int    visega            (void);
int    visvga            (void);
void   vnormalcur        (void);
void   vpopcur           (void);
void   vpopscreen        (void);
void   vpushcur          (void);
int    vpushscreen       (void);
void   vputch            (int x, int y, unsigned char a,
			  register unsigned char c);
void   vputf             (int x, int y, unsigned char a, char *fmt, ...);
void   vputfc            (int y, unsigned char attrib, char *fmt, ...);
void   vputs             (int x, int y, unsigned char a, register char *s);
void   vputsc            (int y, unsigned char a, char *s);
void   vset25            (void);
void   vset43            (void);
void   vset50            (void);
void   vsetcur           (int x, int y);
void   vsetcurtype       (unsigned t);
void   vshowcur          (void);
void   vbeep             (int m);
void   vputdate          (int x, int y, int attr, int fmt );
void   vputtime          (int x, int y, int attr, int fmt);


/* ------------------------------------------------------------------------ */
/*                          common access macros                            */
/* ------------------------------------------------------------------------ */
#define CLR(bg,fg,in)    ((fg)|(bg<<4)|(in))
#define VCH(ch,at)       ((ch&255)|(at<<8))
#define VAD(x,y)         ((y)*(SCREENWIDTH*2)+(x)*2)
#define VCHAR(x)         (x&255)         /* extract char from video word */
#define VATTR(x)         ((x>>8)&255)    /* extract attrib from video word */

#define VIDMODE          *(unsigned char far *) 0x00449lu
#define MONOSEG          0xb0000000L
#define COLORSEG         0xb8000000L
#define VIDSEG           (unsigned char far *) \
			 ((7 == VIDMODE) ? MONOSEG : COLORSEG )
#define ISMONO()         (VIDMODE == 7)
#define ISTEXT()         (VIDMODE < 4)
