b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XFree86: xc/programs/Xserver/hw/xfree86/xf4bpp/vgaVideo.h,v 1.1.2.1 1998/06/27 14:48:54 dawes Exp $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Copyright IBM Corporation 1987,1988,1989
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * All Rights Reserved
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * Permission to use, copy, modify, and distribute this software and its
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * documentation for any purpose and without fee is hereby granted,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * provided that the above copyright notice appear in all copies and that
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * both that copyright notice and this permission notice appear in
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * supporting documentation, and that the name of IBM not be
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * used in advertising or publicity pertaining to distribution of the
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * software without specific, written prior permission.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * IBM DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * IBM BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * SOFTWARE.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync *
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync*/
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* $XConsortium: vgaVideo.h /main/4 1996/02/21 17:59:14 kaleb $ */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef HAVE_XORG_CONFIG_H
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include <xorg-config.h>
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#include "misc.h" /* GJA -- for pointer data type */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#ifdef lint
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if defined(volatile)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#undef volatile
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define volatile /**/
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if defined(const)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#undef const
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define const /**/
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if defined(signed)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#undef signed
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define signed /**/
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * References to all pc ( i.e. '286 ) memory in the
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * regions used by the [ev]ga server ( the 128K windows )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * MUST be long-word ( i.e. 32-bit ) reads or writes.
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * This definition will change for other memory architectures
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * ( e.g. AIX-Rt )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef unsigned char VideoAdapterObject ;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef volatile VideoAdapterObject *VideoMemoryPtr ;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsynctypedef volatile VideoAdapterObject *VgaMemoryPtr ;
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if !defined(BITMAP_BIT_ORDER)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define BITMAP_BIT_ORDER MSBFirst
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if !defined(IMAGE_BYTE_ORDER)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define IMAGE_BYTE_ORDER LSBFirst
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* Bit Ordering Macros */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if !defined(SCRLEFT8)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SCRLEFT8(lw, n) ( (unsigned char) (((unsigned char) lw) << (n)) )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#if !defined(SCRRIGHT8)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SCRRIGHT8(lw, n) ( (unsigned char) (((unsigned char)lw) >> (n)) )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#endif
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/* These work ONLY on 8-bit wide Quantities !! */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define LeftmostBit ( SCRLEFT8( 0xFF, 7 ) & 0xFF )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define RightmostBit ( SCRRIGHT8( 0xFF, 7 ) & 0xFF )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync/*
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync * [ev]ga video screen defines & macros
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync */
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define VGA_BLACK_PIXEL 0
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define VGA_WHITE_PIXEL 1
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define VGA_MAXPLANES 4
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define VGA_ALLPLANES 0xFL
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define VIDBASE(pDraw) ((volatile unsigned char *) \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync (((PixmapPtr)(((DrawablePtr)(pDraw))->pScreen->devPrivate))-> \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync devPrivate.ptr))
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define BYTES_PER_LINE(pDraw) \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ((int)((PixmapPtr)(((DrawablePtr)(pDraw))->pScreen->devPrivate))->devKind)
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define ROW_OFFSET( x ) ( ( x ) >> 3 )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define BIT_OFFSET( x ) ( ( x ) & 0x7 )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync#define SCREENADDRESS( pWin, x, y ) \
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync ( VIDBASE(pWin) + (y) * BYTES_PER_LINE(pWin) + ROW_OFFSET(x) )
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync
b8e299dddd091ae24e0c08c45d91b8f937bd14d2vboxsync