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