/*
**  Macros for managing direct video writes by Jerry Houston
**
**  prototypes for SCROLL.C and VIDPORT.C functions added by Bob Stout
*/

#if defined(__TURBOC__)

 #define FAR far

#else

 #define FAR _far

#endif

 
#ifndef MK_FP

 #define MK_FP(seg,off) ((void far *)(((long)(seg) << 16)|(unsigned)(off)))

#endif


/*
**  Text screen scrolling function from SCROLL.C in SNIPPETS
*/
 
#define SCROLL_UP 0

#define SCROLL_DN 1


void scroll(int direction,
            int num_lines,
            int vattrib,
            int ulrow,
            int ulcomumn,
            int lrrow,
            int lrcolumn);

/*
**  Functions in VIDPORT.C in SNIPPETS
*/
 
void GotoXY(int col, int row);
void ClrScrn(int vattrib);
void GetCurPos(int *col, int *row);
int  GetCurAtr(void);
void ClrEol(void);
void ClrEop(void);
void Repaint(int vattrib);

#if !defined(COLORMODE)

 #define COLORMODE  ((*(char FAR *)0x0449) != 7)

 #define EXT_KBD    (*(char FAR *)0x0496 & 16)

 #define VIDPAGE    (*((unsigned char far *)0x0462))

 #define ROWSIZE    (*(int FAR *)0x044A)

 #define SCANLINES  ((int)*(char FAR*)0x0461)

 #define SCRBUFF    ((unsigned FAR *)((COLORMODE)?0xB8000000:0xB0000000))

 #define SCREENSEG  ((unsigned)((COLORMODE)?0xB800:0xB000))

 #define SCREENSIZE ((*(int FAR *)0x044C) >> 1)

 #define SCREENCOLS (*(int FAR *)0x044A)

 #define SCREENROWS ((*(char FAR *)0x0484)?1+(*(char FAR *)0x0484):25)

#endif


/*
     COLORMODE  = true/false, are we using color?
     EXT_KBD    = true/false, extended keyboard in use?
     VIDPAGE    = current video page in use
     SCANLINES  = number of scan lines in a character.
     SCRBUFF    = returns B800:0000 if using color, B000:0000 if mono.
     SCREENSEG  = when you just need the segment portion.
     SCREENSIZE = number of (2-byte) cells required to save screen.
     SCREENCOLS = number of columns, often 80.
     SCREENROWS = number of rows, usually defaults to 25.
*/

/*
** colors -- Use as is for foreground colors
**           For background, shift left by 4 and OR with
**           foreground and possible video attributes
*/

#define BLACK 0

#define BLUE 1

#define GREEN 2

#define CYAN 3

#define RED 4

#define MAGENTA 5

#define BROWN 6

#define WHITE 7

#define GRAY 8

#define LTBLUE 9

#define LTGREEN 10

#define LTCYAN 11

#define LTRED 12

#define LTMAGENTA 13

#define YELLOW 14

#define HIWHITE 15    /* hi-intensity white */


#define BG_(a) (((a) & 0x7f) << 4)



syntax highlighted by Code2HTML, v. 0.9.1