mirror of https://github.com/lianthony/NT4.0
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
112 lines
3.3 KiB
112 lines
3.3 KiB
|
|
/*
|
|
* VPC-XT Revision 1.0
|
|
*
|
|
* Title : Colour Graphics Adaptor declarations
|
|
*
|
|
* Description : Definitions for users of the CGA
|
|
*
|
|
* Author : Henry Nash
|
|
*
|
|
* Notes : None
|
|
*/
|
|
|
|
/* SccsID[]="@(#)cga.h 1.5 05/15/93 Copyright Insignia Solutions Ltd."; */
|
|
|
|
/*
|
|
* ============================================================================
|
|
* Structure/Data definitions
|
|
* ============================================================================
|
|
*/
|
|
|
|
#ifdef HUNTER
|
|
# define MC6845_REGS 18 /* No. of registers in a MC6845 chip */
|
|
#endif
|
|
|
|
|
|
#ifdef BIT_ORDER1
|
|
typedef union /* Template for character attributes */
|
|
{
|
|
half_word all;
|
|
struct
|
|
{
|
|
HALF_WORD_BIT_FIELD blinking :1; /* Blinking attribute */
|
|
HALF_WORD_BIT_FIELD background:3; /* Background colour R,G,B */
|
|
HALF_WORD_BIT_FIELD bold :1; /* Intensity bit */
|
|
HALF_WORD_BIT_FIELD foreground:3; /* Foreground colour R,G,B */
|
|
} bits;
|
|
struct
|
|
{
|
|
HALF_WORD_BIT_FIELD background_and_blink:4;
|
|
HALF_WORD_BIT_FIELD foreground_and_bold :4;
|
|
} plane;
|
|
} ATTRIBUTE;
|
|
#endif
|
|
|
|
#ifdef BIT_ORDER2
|
|
typedef union /* Template for character attributes */
|
|
{
|
|
half_word all;
|
|
struct
|
|
{
|
|
HALF_WORD_BIT_FIELD foreground:3; /* Foreground colour R,G,B */
|
|
HALF_WORD_BIT_FIELD bold :1; /* Intensity bit */
|
|
HALF_WORD_BIT_FIELD background:3; /* Background colour R,G,B */
|
|
HALF_WORD_BIT_FIELD blinking :1; /* Blinking attribute */
|
|
} bits;
|
|
struct
|
|
{
|
|
HALF_WORD_BIT_FIELD foreground_and_bold :4;
|
|
HALF_WORD_BIT_FIELD background_and_blink:4;
|
|
} plane;
|
|
} ATTRIBUTE;
|
|
#endif
|
|
|
|
/*
|
|
* ============================================================================
|
|
* External declarations and macros
|
|
* ============================================================================
|
|
*/
|
|
|
|
#ifdef HUNTER
|
|
extern half_word MC6845[]; /* The MC6845 data register values */
|
|
extern half_word mode_reg; /* MC6845 mode control register value */
|
|
#endif
|
|
|
|
extern void cga_init IPT0();
|
|
extern void cga_term IPT0();
|
|
extern void cga_inb IPT2(io_addr, address, half_word *, value);
|
|
extern void cga_outb IPT2(io_addr, address, half_word, value);
|
|
|
|
typedef struct {
|
|
int mode;
|
|
int resolution;
|
|
int color_select;
|
|
int colormask;
|
|
} CGA_GLOBS;
|
|
|
|
extern CGA_GLOBS CGA_GLOBALS;
|
|
|
|
#define set_cga_mode(val) CGA_GLOBALS.mode = (val)
|
|
#define set_cga_resolution(val) CGA_GLOBALS.resolution = (val)
|
|
#define set_cga_color_select(val) CGA_GLOBALS.color_select = (val)
|
|
#define set_cga_colormask(val) CGA_GLOBALS.colormask = (val)
|
|
|
|
#define get_cga_mode() (CGA_GLOBALS.mode)
|
|
#define get_cga_resolution() (CGA_GLOBALS.resolution)
|
|
#define get_cga_color_select() (CGA_GLOBALS.color_select)
|
|
#define get_cga_colormask() (CGA_GLOBALS.colormask)
|
|
|
|
#if !defined(EGG) && !defined(A_VID) && !defined(C_VID)
|
|
/* This structure is defined solely so that we don't have to ifdef every
|
|
** reference to VGLOBS->dirty_flag and VGLOBS->screen_ptr in the base/host
|
|
** for a CGA-only build.
|
|
*/
|
|
typedef struct
|
|
{
|
|
ULONG dirty_flag;
|
|
UTINY *screen_ptr;
|
|
} CGA_ONLY_GLOBS;
|
|
|
|
IMPORT CGA_ONLY_GLOBS *VGLOBS;
|
|
#endif /* !EGG */
|