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