removed MGA driver from DMesa
authorDaniel Borca <dborca@users.sourceforge.net>
Sat, 7 Feb 2004 10:56:13 +0000 (10:56 +0000)
committerDaniel Borca <dborca@users.sourceforge.net>
Sat, 7 Feb 2004 10:56:13 +0000 (10:56 +0000)
src/mesa/drivers/dos/mga/m_ttemp.h [deleted file]
src/mesa/drivers/dos/mga/mga.c [deleted file]
src/mesa/drivers/dos/mga/mga.h [deleted file]
src/mesa/drivers/dos/mga/mga_hw.c [deleted file]
src/mesa/drivers/dos/mga/mga_hw.h [deleted file]
src/mesa/drivers/dos/mga/mga_mode.c [deleted file]
src/mesa/drivers/dos/mga/mga_mode.h [deleted file]
src/mesa/drivers/dos/mga/mga_reg.h [deleted file]

diff --git a/src/mesa/drivers/dos/mga/m_ttemp.h b/src/mesa/drivers/dos/mga/m_ttemp.h
deleted file mode 100644 (file)
index e4c65f8..0000000
+++ /dev/null
@@ -1,395 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * DOS/DJGPP device driver v1.4 for Mesa  --  MGA2064W triangle template
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- */
-
-
-/*
- * Triangle Rasterizer Template
- *
- * This file is #include'd to generate custom triangle rasterizers.
- *
- * The following macros may be defined to indicate what auxillary information
- * must be interplated across the triangle:
- *    INTERP_Z        - if defined, interpolate Z values
- *    INTERP_RGB      - if defined, interpolate RGB values
- *
- *    TAG             - function name
- *    CULL            - enable culling for: 0=no, 1=back, -1=front
- *
- *    SETUP_CODE      - to be executed once per triangle (usually HW init)
- *
- * For flatshaded primitives, the provoking vertex is the final one.
- * This code was designed for the origin to be in the upper-left corner.
- *
- * Inspired by triangle rasterizer code written by Brian Paul.
- */
-
-
-
-#define TRI_SWAP(a, b)        \
-do {                          \
-    const MGAvertex *tmp = a; \
-    a = b;                    \
-    b = tmp;                  \
-} while (0)
-
-void TAG (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v3)
-{
- int area;
- int x1, y1, x2, y2, x3, y3;
- int eMaj_dx, eMaj_dy, eBot_dx, eBot_dy, eTop_dx, eTop_dy;
-#ifdef INTERP_RGB
-#define FIFO_CNT_RGB 3
- int eMaj_dr, eBot_dr, eMaj_dg, eBot_dg, eMaj_db, eBot_db;
- int drdx, drdy, dgdx, dgdy, dbdx, dbdy;
-#else
-#define FIFO_CNT_RGB 0
-#endif
-#ifdef INTERP_Z
-#define FIFO_CNT_Z 1
- int dzdx, dzdy;
- int eMaj_dz, eBot_dz;
- int z1, z2, z3;
-#else
-#define FIFO_CNT_Z 0
-#endif
-
-#if defined(INTERP_Z) || defined(INTERP_RGB)
-#if !LONG_LONG
- double one_area;
-#endif
-#ifndef INTERP_RGB
- int red = v3->color[0];
- int green = v3->color[1];
- int blue = v3->color[2];
-#endif
-#else
- unsigned long color = mga_mixrgb_full(v3->color);
-#endif
-
- int sgn = 0;
-
- /* sort along the vertical axis */
- if (v2->win[1] < v1->win[1]) {
-    TRI_SWAP(v1, v2);
-#ifdef CULL
-    cull = -cull;
-#endif
- }
-
- if (v3->win[1] < v1->win[1]) {
-    TRI_SWAP(v1, v3);
-    TRI_SWAP(v2, v3);
- } else if (v3->win[1] < v2->win[1]) {
-    TRI_SWAP(v2, v3);
-#ifdef CULL
-    cull = -cull;
-#endif    
- }
-
- x1 = v1->win[0];
- y1 = v1->win[1];
- x2 = v2->win[0];
- y2 = v2->win[1];
- x3 = v3->win[0];
- y3 = v3->win[1];
-
- /* compute deltas for each edge */
- eMaj_dx = x3 - x1;
- eMaj_dy = y3 - y1;
- eBot_dx = x2 - x1;
- eBot_dy = y2 - y1;
- eTop_dx = x3 - x2;
- eTop_dy = y3 - y2;
-
- /* compute area */
- if ((area = eMaj_dx * eBot_dy - eBot_dx * eMaj_dy) == 0) {
-    return;
- }
-#ifdef CULL
- if ((area * cull) > 0) {
-    return;
- }
-#endif
-
- mga_select();
-
- /* set engine state */
-#ifdef SETUP_CODE
- SETUP_CODE
-#endif
-
- /* draw lower triangle */
-#if defined(INTERP_Z) || defined(INTERP_RGB)
-#if !LONG_LONG
- one_area = (double)(1<<15) / (double)area;
-#endif
- mga_fifo(1);
-#else
- mga_fifo(2);
- mga_outl(M_FCOL, color);
-#endif
- mga_outl(M_YDST, y1);
-
-#ifdef INTERP_Z
- z1 = v1->win[2];
- z2 = v2->win[2];
- z3 = v3->win[2];
-
- /* compute d?/dx and d?/dy derivatives */
- eMaj_dz = z3 - z1;
- eBot_dz = z2 - z1;
-#if !LONG_LONG
- dzdx = (eMaj_dz * eBot_dy - eMaj_dy * eBot_dz) * one_area;
- dzdy = (eMaj_dx * eBot_dz - eMaj_dz * eBot_dx) * one_area;
-#else
- dzdx = ((long long)(eMaj_dz * eBot_dy - eMaj_dy * eBot_dz)<<15) / area;
- dzdy = ((long long)(eMaj_dx * eBot_dz - eMaj_dz * eBot_dx)<<15) / area;
-#endif
-
-#ifndef INTERP_RGB
- mga_fifo(11);
- mga_outl(M_DR2, dzdx);
- mga_outl(M_DR3, dzdy);
- mga_outl(M_DR4, red<<15);
- mga_outl(M_DR6, 0);
- mga_outl(M_DR7, 0);
- mga_outl(M_DR8, green<<15);
- mga_outl(M_DR10, 0);
- mga_outl(M_DR11, 0);
- mga_outl(M_DR12, blue<<15);
- mga_outl(M_DR14, 0);
- mga_outl(M_DR15, 0);
-#else
- mga_fifo(2);
- mga_outl(M_DR2, dzdx);
- mga_outl(M_DR3, dzdy);
-#endif
-#endif
-
-#ifdef INTERP_RGB
- /* compute color deltas */
- eMaj_dr = v3->color[0] - v1->color[0];
- eBot_dr = v2->color[0] - v1->color[0];
- eMaj_dg = v3->color[1] - v1->color[1];
- eBot_dg = v2->color[1] - v1->color[1];
- eMaj_db = v3->color[2] - v1->color[2];
- eBot_db = v2->color[2] - v1->color[2];
-
- /* compute color increments */
-#if !LONG_LONG
- drdx = (eMaj_dr * eBot_dy - eMaj_dy * eBot_dr) * one_area;
- drdy = (eMaj_dx * eBot_dr - eMaj_dr * eBot_dx) * one_area;
- dgdx = (eMaj_dg * eBot_dy - eMaj_dy * eBot_dg) * one_area;
- dgdy = (eMaj_dx * eBot_dg - eMaj_dg * eBot_dx) * one_area;
- dbdx = (eMaj_db * eBot_dy - eMaj_dy * eBot_db) * one_area;
- dbdy = (eMaj_dx * eBot_db - eMaj_db * eBot_dx) * one_area;
-#else
- drdx = ((long long)(eMaj_dr * eBot_dy - eMaj_dy * eBot_dr)<<15) / area;
- drdy = ((long long)(eMaj_dx * eBot_dr - eMaj_dr * eBot_dx)<<15) / area;
- dgdx = ((long long)(eMaj_dg * eBot_dy - eMaj_dy * eBot_dg)<<15) / area;
- dgdy = ((long long)(eMaj_dx * eBot_dg - eMaj_dg * eBot_dx)<<15) / area;
- dbdx = ((long long)(eMaj_db * eBot_dy - eMaj_dy * eBot_db)<<15) / area;
- dbdy = ((long long)(eMaj_dx * eBot_db - eMaj_db * eBot_dx)<<15) / area;
-#endif
-
- mga_fifo(6);
- mga_outl(M_DR6, drdx);
- mga_outl(M_DR7, drdy);
- mga_outl(M_DR10, dgdx);
- mga_outl(M_DR11, dgdy);
- mga_outl(M_DR14, dbdx);
- mga_outl(M_DR15, dbdy);
-#endif
-
- if (area > 0) { /* major edge on the right */
-    if (eBot_dy) { /* have lower triangle */
-       mga_fifo(9 + FIFO_CNT_Z + FIFO_CNT_RGB);
-
-       mga_outl(M_AR0, eBot_dy);
-       if (x2 < x1) {
-          mga_outl(M_AR1, eBot_dx + eBot_dy - 1);
-          mga_outl(M_AR2, eBot_dx);
-          sgn |= M_SDXL;
-       } else {
-          mga_outl(M_AR1, -eBot_dx);
-          mga_outl(M_AR2, -eBot_dx);
-       }
-
-       mga_outl(M_AR6, eMaj_dy);
-       if (x3 < x1) {
-          mga_outl(M_AR4, eMaj_dx + eMaj_dy - 1);
-          mga_outl(M_AR5, eMaj_dx);
-          sgn |= M_SDXR;
-       } else {
-          mga_outl(M_AR4, -eMaj_dx);
-          mga_outl(M_AR5, -eMaj_dx);
-       }
-
-       mga_outl(M_FXBNDRY, (x1<<16) | x1);
-#ifdef INTERP_Z
-       mga_outl(M_DR0, z1<<15);
-#endif
-#ifdef INTERP_RGB
-       mga_outl(M_DR4, v1->color[0]<<15);
-       mga_outl(M_DR8, v1->color[1]<<15);
-       mga_outl(M_DR12, v1->color[2]<<15);
-#endif
-       mga_outl(M_SGN, sgn);
-       mga_outl(M_LEN | M_EXEC, eBot_dy);
-    } else { /* no lower triangle */
-       mga_fifo(4 + FIFO_CNT_Z + FIFO_CNT_RGB);
-
-       mga_outl(M_AR6, eMaj_dy);
-       if (x3 < x1) {
-          mga_outl(M_AR4, eMaj_dx + eMaj_dy - 1);
-          mga_outl(M_AR5, eMaj_dx);
-          sgn |= M_SDXR;
-       } else {
-          mga_outl(M_AR4, -eMaj_dx);
-          mga_outl(M_AR5, -eMaj_dx);
-       }
-
-       mga_outl(M_FXBNDRY, (x1<<16) | x2);
-#ifdef INTERP_Z
-       mga_outl(M_DR0, z2<<15);
-#endif
-#ifdef INTERP_RGB
-       mga_outl(M_DR4, v2->color[0]<<15);
-       mga_outl(M_DR8, v2->color[1]<<15);
-       mga_outl(M_DR12, v2->color[2]<<15);
-#endif
-    }
-
-    /* draw upper triangle */
-    if (eTop_dy) {
-       mga_fifo(5);
-       mga_outl(M_AR0, eTop_dy);
-       if (x3 < x2) {
-          mga_outl(M_AR1, eTop_dx + eTop_dy - 1);
-          mga_outl(M_AR2, eTop_dx);
-          sgn |= M_SDXL;
-       } else {
-          mga_outl(M_AR1, -eTop_dx);
-          mga_outl(M_AR2, -eTop_dx);
-          sgn &= ~M_SDXL;
-       }
-       mga_outl(M_SGN, sgn);
-       mga_outl(M_LEN | M_EXEC, eTop_dy);
-    }
- } else { /* major edge on the left */
-    if (eBot_dy) { /* have lower triangle */
-       mga_fifo(9 + FIFO_CNT_Z + FIFO_CNT_RGB);
-
-       mga_outl(M_AR0, eMaj_dy);
-       if (x3 < x1) {
-          mga_outl(M_AR1, eMaj_dx + eMaj_dy - 1);
-          mga_outl(M_AR2, eMaj_dx);
-          sgn |= M_SDXL;
-       } else {
-          mga_outl(M_AR1, -eMaj_dx);
-          mga_outl(M_AR2, -eMaj_dx);
-       }
-
-       mga_outl(M_AR6, eBot_dy);
-       if (x2 < x1) {
-          mga_outl(M_AR4, eBot_dx + eBot_dy - 1);
-          mga_outl(M_AR5, eBot_dx);
-          sgn |= M_SDXR;
-       } else {
-          mga_outl(M_AR4, -eBot_dx);
-          mga_outl(M_AR5, -eBot_dx);
-       }
-
-       mga_outl(M_FXBNDRY, (x1<<16) | x1);
-#ifdef INTERP_Z
-       mga_outl(M_DR0, z1<<15);
-#endif
-#ifdef INTERP_RGB
-       mga_outl(M_DR4, v1->color[0]<<15);
-       mga_outl(M_DR8, v1->color[1]<<15);
-       mga_outl(M_DR12, v1->color[2]<<15);
-#endif
-       mga_outl(M_SGN, sgn);
-       mga_outl(M_LEN | M_EXEC, eBot_dy);
-    } else { /* no lower triangle */
-       mga_fifo(4 + FIFO_CNT_Z + FIFO_CNT_RGB);
-
-       mga_outl(M_AR0, eMaj_dy);
-       if (x3 < x1) {
-          mga_outl(M_AR1, eMaj_dx + eMaj_dy - 1);
-          mga_outl(M_AR2, eMaj_dx);
-          sgn |= M_SDXL;
-       } else {
-          mga_outl(M_AR1, -eMaj_dx);
-          mga_outl(M_AR2, -eMaj_dx);
-       }
-
-       mga_outl(M_FXBNDRY, (x2<<16) | x1);
-#ifdef INTERP_Z
-       mga_outl(M_DR0, z1<<15);
-#endif
-#ifdef INTERP_RGB
-       mga_outl(M_DR4, v1->color[0]<<15);
-       mga_outl(M_DR8, v1->color[1]<<15);
-       mga_outl(M_DR12, v1->color[2]<<15);
-#endif
-    }
-
-    /* draw upper triangle */
-    if (eTop_dy) {
-       mga_fifo(5);
-       mga_outl(M_AR6, eTop_dy);
-       if (x3 < x2) {
-          mga_outl(M_AR4, eTop_dx + eTop_dy - 1);
-          mga_outl(M_AR5, eTop_dx);
-          sgn |= M_SDXR;
-       } else {
-          mga_outl(M_AR4, -eTop_dx);
-          mga_outl(M_AR5, -eTop_dx);
-          sgn &= ~M_SDXR;
-       }
-       mga_outl(M_SGN, sgn);
-       mga_outl(M_LEN | M_EXEC, eTop_dy);
-    }
- }
-}
-
-#undef FIFO_CNT_RGB
-#undef FIFO_CNT_Z
-
-#undef TRI_SWAP
-
-#undef SETUP_CODE
-#undef INTERP_RGB
-#undef INTERP_Z
-#undef CULL
-#undef TAG
diff --git a/src/mesa/drivers/dos/mga/mga.c b/src/mesa/drivers/dos/mga/mga.c
deleted file mode 100644 (file)
index 5b0ee64..0000000
+++ /dev/null
@@ -1,1536 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * DOS/DJGPP device driver v1.3 for Mesa  --  MGA2064W
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- *
- * Thanks to Shawn Hargreaves for FreeBE/AF
- */
-
-
-#include <dpmi.h>
-#include <stdlib.h>
-#include <string.h>
-
-#include "../internal.h"
-#include "mga_reg.h"
-#include "mga_hw.h"
-#include "mga_mode.h"
-#include "mga.h"
-
-
-
-/* cached drawing engine state */
-#define OP_NONE 0
-
-#define OP_DRAWRECT (\
-           M_DWG_TRAP |           /* opcod */    \
-           M_DWG_BLK |            /* atype */    \
-                                  /* linear */   \
-           M_DWG_NOZCMP |         /* zmode */    \
-           M_DWG_SOLID |          /* solid */    \
-           M_DWG_ARZERO |         /* arzero */   \
-           M_DWG_SGNZERO |        /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC          /* bop */      \
-                                  /* trans */    \
-                                  /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_DRAWRECT_TX32BGR (\
-           M_DWG_TEXTURE_TRAP |   /* opcod */    \
-           M_DWG_I |              /* atype */    \
-                                  /* linear */   \
-           M_DWG_NOZCMP |         /* zmode */    \
-                                  /* solid */    \
-           M_DWG_ARZERO |         /* arzero */   \
-           M_DWG_SGNZERO |        /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC |        /* bop */      \
-                                  /* trans */    \
-           M_DWG_BU32BGR          /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_DRAWRECT_TX24BGR (\
-           M_DWG_TEXTURE_TRAP |   /* opcod */    \
-           M_DWG_I |              /* atype */    \
-                                  /* linear */   \
-           M_DWG_NOZCMP |         /* zmode */    \
-                                  /* solid */    \
-           M_DWG_ARZERO |         /* arzero */   \
-           M_DWG_SGNZERO |        /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC |        /* bop */      \
-                                  /* trans */    \
-           M_DWG_BU24BGR          /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_DRAWLINE (\
-           M_DWG_AUTOLINE_CLOSE | /* opcod */    \
-           M_DWG_RPL |            /* atype */    \
-                                  /* linear */   \
-           M_DWG_NOZCMP |         /* zmode */    \
-           M_DWG_SOLID |          /* solid */    \
-                                  /* arzero */   \
-                                  /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC |        /* bop */      \
-                                  /* trans */    \
-           M_DWG_BFCOL            /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_DRAWLINE_I (\
-           M_DWG_AUTOLINE_CLOSE | /* opcod */    \
-           M_DWG_I |              /* atype */    \
-                                  /* linear */   \
-           M_DWG_NOZCMP |         /* zmode */    \
-                                  /* solid */    \
-                                  /* arzero */   \
-                                  /* sgnzero */  \
-                                  /* shftzero */ \
-           M_DWG_BOP_SRC |        /* bop */      \
-                                  /* trans */    \
-           M_DWG_BFCOL            /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_DRAWLINE_ZI (\
-           M_DWG_AUTOLINE_CLOSE | /* opcod */    \
-           M_DWG_ZI |             /* atype */    \
-                                  /* linear */   \
-           M_DWG_ZLT |            /* zmode */    \
-                                  /* solid */    \
-                                  /* arzero */   \
-                                  /* sgnzero */  \
-                                  /* shftzero */ \
-           M_DWG_BOP_SRC |        /* bop */      \
-                                  /* trans */    \
-           M_DWG_BFCOL            /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_DRAWTRAP (\
-           M_DWG_TRAP |           /* opcod */    \
-           M_DWG_BLK |            /* atype */    \
-                                  /* linear */   \
-           M_DWG_NOZCMP |         /* zmode */    \
-           M_DWG_SOLID |          /* solid */    \
-                                  /* arzero */   \
-                                  /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC          /* bop */      \
-                                  /* trans */    \
-                                  /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_DRAWTRAP_I (\
-           M_DWG_TRAP |           /* opcod */    \
-           M_DWG_I |              /* atype */    \
-                                  /* linear */   \
-           M_DWG_NOZCMP |         /* zmode */    \
-                                  /* solid */    \
-                                  /* arzero */   \
-                                  /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC          /* bop */      \
-                                  /* trans */    \
-                                  /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_DRAWTRAP_ZI (\
-           M_DWG_TRAP |           /* opcod */    \
-           M_DWG_ZI |             /* atype */    \
-                                  /* linear */   \
-           M_DWG_ZLT |            /* zmode */    \
-                                  /* solid */    \
-                                  /* arzero */   \
-                                  /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC          /* bop */      \
-                                  /* trans */    \
-                                  /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_ILOAD_32BGR (\
-           M_DWG_ILOAD |          /* opcod */    \
-           M_DWG_RPL |            /* atype */    \
-                                  /* linear */   \
-                                  /* zmode */    \
-                                  /* solid */    \
-                                  /* arzero */   \
-           M_DWG_SGNZERO |        /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC |        /* bop */      \
-                                  /* trans */    \
-           M_DWG_BU32BGR          /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-#define OP_ILOAD_24BGR (\
-           M_DWG_ILOAD |          /* opcod */    \
-           M_DWG_RPL |            /* atype */    \
-                                  /* linear */   \
-                                  /* zmode */    \
-                                  /* solid */    \
-                                  /* arzero */   \
-           M_DWG_SGNZERO |        /* sgnzero */  \
-           M_DWG_SHFTZERO |       /* shftzero */ \
-           M_DWG_BOP_SRC |        /* bop */      \
-                                  /* trans */    \
-           M_DWG_BU24BGR          /* bltmod */   \
-                                  /* pattern */  \
-                                  /* transc */   )
-
-
-
-/* internal hardware data structures */
-static int interleave;
-static unsigned long zorg;
-static unsigned long vram;
-static char card_name[80];
-
-
-
-/* some info about current mode */
-static int __bpp, __bypp;
-static int __pixwidth, __bytwidth, __pagewidth, __width, __height, __zheight;
-static int __operation;
-static int __scrollx, __scrolly;
-
-
-
-/* buffers */
-static int mga_readbuffer, mga_writebuffer;
-static long mga_readbuffer_ptr, mga_writebuffer_ptr;
-static long mga_backbuffer_ptr, mga_frontbuffer_ptr;
-
-
-
-/* lookup table for scaling 2 bit colors up to 8 bits */
-static int _rgb_scale_2[4] = {
-       0, 85, 170, 255
-};
-
-/* lookup table for scaling 3 bit colors up to 8 bits */
-static int _rgb_scale_3[8] = {
-       0, 36, 73, 109, 146, 182, 219, 255
-};
-
-/* lookup table for scaling 5 bit colors up to 8 bits */
-static int _rgb_scale_5[32] = {
-   0,   8,   16,  25,  33,  41,  49,  58,
-   66,  74,  82,  90,  99,  107, 115, 123,
-   132, 140, 148, 156, 165, 173, 181, 189,
-   197, 206, 214, 222, 230, 239, 247, 255
-};
-
-/* lookup table for scaling 6 bit colors up to 8 bits */
-static int _rgb_scale_6[64] = {
-   0,   4,   8,   12,  16,  20,  24,  28,
-   32,  36,  40,  45,  49,  53,  57,  61,
-   65,  69,  73,  77,  81,  85,  89,  93,
-   97,  101, 105, 109, 113, 117, 121, 125,
-   130, 134, 138, 142, 146, 150, 154, 158,
-   162, 166, 170, 174, 178, 182, 186, 190,
-   194, 198, 202, 206, 210, 215, 219, 223,
-   227, 231, 235, 239, 243, 247, 251, 255
-};
-
-
-
-/*
- * pixel/color routines
- */
-void (*mga_putpixel) (unsigned int offset, int color);
-int (*mga_getpixel) (unsigned int offset);
-void (*mga_getrgba) (unsigned int offset, unsigned char rgba[4]);
-int (*mga_mixrgb) (const unsigned char rgb[]);
-static int (*mga_mixrgb_full) (const unsigned char rgb[]);
-
-
-
-/* mga_fifo:
- *  Waits until there are at least <n> free slots in the FIFO buffer.
- */
-#define mga_fifo(n) do { } while (mga_inb(M_FIFOSTATUS) < (n))
-
-
-
-static int _mga_rread (int port, int index)
-{
- mga_select();
- mga_outb(port, index);
- return mga_inb(port+1);
-}
-
-
-
-static void _mga_rwrite (int port, int index, int v)
-{
- mga_select();
- mga_outb(port, index);
- mga_outb(port+1, v);
-}
-
-
-
-static void _mga_ralter (int port, int index, int mask, int v)
-{
- int temp;
- temp = _mga_rread(port, index);
- temp &= (~mask);
- temp |= (v & mask);
- _mga_rwrite(port, index, temp);
-}
-
-
-
-/* WaitTillIdle:
- *  Delay until the hardware controller has finished drawing.
- */
-void mga_wait_idle (void)
-{
- int tries = 2;
-
- /*hwptr_unselect(oldptr);*/
-
- mga_select();
-
- while (tries--) {
-       do {
-       } while (!(mga_inl(M_FIFOSTATUS) & 0x200));
-
-       do {
-       } while (mga_inl(M_STATUS) & 0x10000);
-
-       mga_outb(M_CRTC_INDEX, 0);
- }
-
- /*hwptr_select(oldptr);*/
-}
-
-
-
-/* Desc: Waits for the next vertical sync period.
- *
- * In  :
- * Out :
- *
- * Note:
- */
-static void _mga_wait_retrace (void)
-{
- int t1 = 0;
- int t2 = 0;
-
- do {
-     t1 = t2;
-     t2 = mga_inl(M_VCOUNT);
- } while (t2 >= t1);
-}
-
-
-
-/* Desc: fix scan lines
- *
- * In  :
- * Out :
- *
- * Note:
- */
-static unsigned long _mga_fix_scans (unsigned long l)
-{
- unsigned long m = 0;
-
- switch (__bpp) {
-        case 8:
-             m = interleave?128:64;
-             break;
-        case 15:
-        case 16:
-             m = interleave?64:32;
-             break;
-        case 24:
-             m = interleave?128:64;
-             break;
-        case 32:
-             m = 32;
-             break;
- }
-
- m -= 1;
- return (l + m) & ~m;
-}
-
-
-
-/* Desc: HW scrolling function
- *
- * In  :
- * Out :
- *
- * Note: view Z-buffer in 16bit modes: _mga_display_start(0, 0, __height, 1)
- */
-void mga_display_start (long boffset, long x, long y, long waitVRT)
-{
- long addr;
-
- mga_select();
-
- if (waitVRT >= 0) {
-
-    addr = __bytwidth * y + (boffset + x) * __bypp;
-
-    if (interleave) {
-       addr /= 8;
-    } else {
-       addr /= 4;
-    }
-
-    _mga_rwrite(M_CRTC_INDEX, 0x0D, (addr)&0xFF);
-    _mga_rwrite(M_CRTC_INDEX, 0x0C, (addr>>8)&0xFF);
-    _mga_ralter(M_CRTC_EXT_INDEX, 0, 0x0F, (addr>>16)&0x0F);
-
-    while (waitVRT--) {
-          _mga_wait_retrace();
-    }
- }
-
- __scrollx = x;
- __scrolly = y;
-}
-
-
-
-/* Desc: set READ buffer
- *
- * In  : either FRONT or BACK buffer
- * Out :
- *
- * Note:
- */
-void mga_set_readbuffer (int buffer)
-{
- mga_readbuffer = buffer;
-
- mga_readbuffer_ptr = (mga_readbuffer == MGA_FRONTBUFFER) ? mga_frontbuffer_ptr : mga_backbuffer_ptr;
-}
-
-
-
-/* Desc: set WRITE buffer
- *
- * In  : either FRONT or BACK buffer
- * Out :
- *
- * Note:
- */
-void mga_set_writebuffer (int buffer)
-{
- mga_writebuffer = buffer;
-
- mga_writebuffer_ptr = (mga_writebuffer == MGA_FRONTBUFFER) ? mga_frontbuffer_ptr : mga_backbuffer_ptr;
-
- mga_select();
- mga_fifo(1);
- mga_outl(M_YDSTORG, mga_writebuffer_ptr);
-
- __operation = OP_NONE;
-}
-
-
-
-/* Desc: swap buffers
- *
- * In  : number of vertical retraces to wait
- * Out :
- *
- * Note:
- */
-void mga_swapbuffers (int swapinterval)
-{
- /* flip the buffers */
- mga_backbuffer_ptr ^= __pagewidth;
- mga_frontbuffer_ptr ^= __pagewidth;
-
- /* update READ/WRITE pointers */
- mga_set_readbuffer(mga_readbuffer);
- mga_set_writebuffer(mga_writebuffer);
-
- /* make sure we always see the FRONT buffer */
- mga_display_start(mga_frontbuffer_ptr, __scrollx, __scrolly, swapinterval);
-}
-
-
-
-/* Desc: color composition (w/o ALPHA)
- *
- * In  : array of integers (R, G, B)
- * Out : color
- *
- * Note: -
- */
-static __inline int _mga_mixrgb8 (const unsigned char rgb[])
-{
- return (rgb[0]&0xe0)|((rgb[1]>>5)<<2)|(rgb[2]>>6);
-}
-static __inline int _mga_mixrgb15 (const unsigned char rgb[])
-{
- return ((rgb[0]>>3)<<10)|((rgb[1]>>3)<<5)|(rgb[2]>>3);
-}
-static __inline int _mga_mixrgb16 (const unsigned char rgb[])
-{
- return ((rgb[0]>>3)<<11)|((rgb[1]>>2)<<5)|(rgb[2]>>3);
-}
-static __inline int _mga_mixrgb32 (const unsigned char rgb[])
-{
- return (rgb[0]<<16)|(rgb[1]<<8)|(rgb[2]);
-}
-
-
-
-/* Desc: color composition (w/o ALPHA) + replication
- *
- * In  : array of integers (R, G, B)
- * Out : color
- *
- * Note: -
- */
-static int _mga_mixrgb8_full (const unsigned char rgb[])
-{
- int color = _mga_mixrgb8(rgb);
- color |= color<<8;
- return (color<<16) | color;
-}
-static int _mga_mixrgb15_full (const unsigned char rgb[])
-{
- int color = _mga_mixrgb15(rgb);
- return (color<<16) | color;
-}
-static int _mga_mixrgb16_full (const unsigned char rgb[])
-{
- int color = _mga_mixrgb16(rgb);
- return (color<<16) | color;
-}
-#define _mga_mixrgb32_full _mga_mixrgb32
-
-
-
-/* Desc: putpixel
- *
- * In  : pixel offset, pixel value
- * Out : -
- *
- * Note: uses current write buffer
- */
-static void _mga_putpixel8 (unsigned int offset, int color)
-{
- hwptr_pokeb(mgaptr.linear_map, mga_writebuffer_ptr + offset, color);
-}
-#define _mga_putpixel15 _mga_putpixel16
-static void _mga_putpixel16 (unsigned int offset, int color)
-{
- hwptr_pokew(mgaptr.linear_map, (mga_writebuffer_ptr + offset) * 2, color);
-}
-static void _mga_putpixel32 (unsigned int offset, int color)
-{
- hwptr_pokel(mgaptr.linear_map, (mga_writebuffer_ptr + offset) * 4, color);
-}
-
-
-
-/* Desc: pixel retrieval
- *
- * In  : pixel offset
- * Out : pixel value
- *
- * Note: uses current read buffer
- */
-static __inline int _mga_getpixel8 (unsigned int offset)
-{
- return hwptr_peekb(mgaptr.linear_map, mga_readbuffer_ptr + offset);
-}
-#define _mga_getpixel15 _mga_getpixel16
-static __inline int _mga_getpixel16 (unsigned int offset)
-{
- return hwptr_peekw(mgaptr.linear_map, (mga_readbuffer_ptr + offset) * 2);
-}
-static __inline int _mga_getpixel32 (unsigned int offset)
-{
- return hwptr_peekl(mgaptr.linear_map, (mga_readbuffer_ptr + offset) * 4);
-}
-
-
-
-/* Desc: color decomposition
- *
- * In  : pixel offset, array of integers to hold color components (R, G, B, A)
- * Out : -
- *
- * Note: uses current read buffer
- */
-static void _mga_getrgba8 (unsigned int offset, unsigned char rgba[4])
-{
- int c = _mga_getpixel8(offset);
- rgba[0] = _rgb_scale_3[(c >> 5) & 0x7];
- rgba[1] = _rgb_scale_3[(c >> 2) & 0x7];
- rgba[2] = _rgb_scale_2[c & 0x3];
- rgba[3] = 255;
-}
-static void _mga_getrgba15 (unsigned int offset, unsigned char rgba[4])
-{
- int c = _mga_getpixel15(offset);
- rgba[0] = _rgb_scale_5[(c >> 10) & 0x1F];
- rgba[1] = _rgb_scale_5[(c >> 5) & 0x1F];
- rgba[2] = _rgb_scale_5[c & 0x1F];
- rgba[3] = 255;
-}
-static void _mga_getrgba16 (unsigned int offset, unsigned char rgba[4])
-{
- int c = _mga_getpixel16(offset);
- rgba[0] = _rgb_scale_5[(c >> 11) & 0x1F];
- rgba[1] = _rgb_scale_6[(c >> 5) & 0x3F];
- rgba[2] = _rgb_scale_5[c & 0x1F];
- rgba[3] = 255;
-}
-static void _mga_getrgba32 (unsigned int offset, unsigned char rgba[4])
-{
- int c = _mga_getpixel32(offset);
- rgba[0] = c >> 16;
- rgba[1] = c >> 8;
- rgba[2] = c; 
- rgba[3] = c >> 24;
-}
-
-
-
-/* Desc: RGB flat line
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_draw_line_rgb_flat (const MGAvertex *v1, const MGAvertex *v2)
-{
- unsigned long color;
- int x1 = v1->win[0];
- int y1 = v1->win[1];
- int x2 = v2->win[0];
- int y2 = v2->win[1];
-
- if ((x1 == x2) && (y1 == y2)) {
-    return;
- }
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWLINE) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWLINE);
-    __operation = OP_DRAWLINE;
- }
-
- color = mga_mixrgb_full(v2->color);
-
- /* draw the line */
- mga_fifo(3);
- mga_outl(M_FCOL, color);
- mga_outl(M_XYSTRT, (y1<<16) | x1);
- mga_outl(M_XYEND | M_EXEC, (y2<<16) | x2);
-}
-
-
-
-/* Desc: RGB flat Z-less line
- *
- * In  :
- * Out :
- *
- * Note: I never figured out "diagonal increments"
- */
-void mga_draw_line_rgb_flat_zless (const MGAvertex *v1, const MGAvertex *v2)
-{
- int z1, dz;
- int x1 = v1->win[0];
- int y1 = v1->win[1];
- int x2 = v2->win[0];
- int y2 = v2->win[1];
- int dx = abs(x2 - x1);
- int dy = abs(y2 - y1);
-
- if ((dx == 0) && (dy == 0)) {
-    return;
- }
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWLINE_ZI) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWLINE_ZI);
-    __operation = OP_DRAWLINE_ZI;
- }
-
- if (dx < dy) {
-    dx = dy;
- }
-
- z1 = v1->win[2] << 15;
- dz = ((v2->win[2] << 15) - z1) / dx;
-
- /* draw the line */
- mga_fifo(14);
- mga_outl(M_DR0, z1);
- mga_outl(M_DR2, dz);
- mga_outl(M_DR3, dz);
- mga_outl(M_DR4, v2->color[0] << 15);
- mga_outl(M_DR6, 0);
- mga_outl(M_DR7, 0);
- mga_outl(M_DR8, v2->color[1] << 15);
- mga_outl(M_DR10, 0);
- mga_outl(M_DR11, 0);
- mga_outl(M_DR12, v2->color[2] << 15);
- mga_outl(M_DR14, 0);
- mga_outl(M_DR15, 0);
- mga_outl(M_XYSTRT, (y1<<16) | x1);
- mga_outl(M_XYEND | M_EXEC, (y2<<16) | x2);
-}
-
-
-
-/* Desc: RGB iterated line
- *
- * In  :
- * Out :
- *
- * Note: I never figured out "diagonal increments"
- */
-void mga_draw_line_rgb_iter (const MGAvertex *v1, const MGAvertex *v2)
-{
- int r1, g1, b1;
- int dr, dg, db;
- int x1 = v1->win[0];
- int y1 = v1->win[1];
- int x2 = v2->win[0];
- int y2 = v2->win[1];
- int dx = abs(x2 - x1);
- int dy = abs(y2 - y1);
-
- if ((dx == 0) && (dy == 0)) {
-    return;
- }
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWLINE_I) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWLINE_I);
-    __operation = OP_DRAWLINE_I;
- }
-
- if (dx < dy) {
-    dx = dy;
- }
-
- r1 = v1->color[0] << 15;
- g1 = v1->color[1] << 15;
- b1 = v1->color[2] << 15;
- dr = ((v2->color[0] << 15) - r1) / dx;
- dg = ((v2->color[1] << 15) - g1) / dx;
- db = ((v2->color[2] << 15) - b1) / dx;
-
- /* draw the line */
- mga_fifo(11);
- mga_outl(M_DR4, r1);
- mga_outl(M_DR6, dr);
- mga_outl(M_DR7, dr);
- mga_outl(M_DR8, g1);
- mga_outl(M_DR10, dg);
- mga_outl(M_DR11, dg);
- mga_outl(M_DR12, b1);
- mga_outl(M_DR14, db);
- mga_outl(M_DR15, db);
- mga_outl(M_XYSTRT, (y1<<16) | x1);
- mga_outl(M_XYEND | M_EXEC, (y2<<16) | x2);
-}
-
-
-
-/* Desc: RGB iterated Z-less line
- *
- * In  :
- * Out :
- *
- * Note: I never figured out "diagonal increments"
- */
-void mga_draw_line_rgb_iter_zless (const MGAvertex *v1, const MGAvertex *v2)
-{
- int z1, dz;
- int r1, g1, b1;
- int dr, dg, db;
- int x1 = v1->win[0];
- int y1 = v1->win[1];
- int x2 = v2->win[0];
- int y2 = v2->win[1];
- int dx = abs(x2 - x1);
- int dy = abs(y2 - y1);
-
- if ((dx == 0) && (dy == 0)) {
-    return;
- }
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWLINE_ZI) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWLINE_ZI);
-    __operation = OP_DRAWLINE_ZI;
- }
-
- if (dx < dy) {
-    dx = dy;
- }
-
- z1 = v1->win[2] << 15;
- dz = ((v2->win[2] << 15) - z1) / dx;
-
- r1 = v1->color[0] << 15;
- g1 = v1->color[1] << 15;
- b1 = v1->color[2] << 15;
- dr = ((v2->color[0] << 15) - r1) / dx;
- dg = ((v2->color[1] << 15) - g1) / dx;
- db = ((v2->color[2] << 15) - b1) / dx;
-
- /* draw the line */
- mga_fifo(14);
- mga_outl(M_DR0, z1);
- mga_outl(M_DR2, dz);
- mga_outl(M_DR3, dz);
- mga_outl(M_DR4, r1);
- mga_outl(M_DR6, dr);
- mga_outl(M_DR7, dr);
- mga_outl(M_DR8, g1);
- mga_outl(M_DR10, dg);
- mga_outl(M_DR11, dg);
- mga_outl(M_DR12, b1);
- mga_outl(M_DR14, db);
- mga_outl(M_DR15, db);
- mga_outl(M_XYSTRT, (y1<<16) | x1);
- mga_outl(M_XYEND | M_EXEC, (y2<<16) | x2);
-}
-
-
-
-/* Desc: RGB flat triangle
- *
- * In  :
- * Out :
- *
- * Note:
- */
-#define TAG mga_draw_tri_rgb_flat
-#define CULL
-#define SETUP_CODE                   \
- if (__operation != OP_DRAWTRAP) {   \
-    mga_fifo(1);                     \
-    mga_outl(M_DWGCTL, OP_DRAWTRAP); \
-    __operation = OP_DRAWTRAP;       \
- }
-#include "m_ttemp.h"
-
-
-
-/* Desc: RGB flat Z-less triangle
- *
- * In  :
- * Out :
- *
- * Note:
- */
-#define TAG mga_draw_tri_rgb_flat_zless
-#define CULL
-#define INTERP_Z
-#define SETUP_CODE                      \
- if (__operation != OP_DRAWTRAP_ZI) {   \
-    mga_fifo(1);                        \
-    mga_outl(M_DWGCTL, OP_DRAWTRAP_ZI); \
-    __operation = OP_DRAWTRAP_ZI;       \
- }
-#include "m_ttemp.h"
-
-
-
-/* Desc: RGB iterated triangle
- *
- * In  :
- * Out :
- *
- * Note:
- */
-#define TAG mga_draw_tri_rgb_iter
-#define CULL
-#define INTERP_RGB
-#define SETUP_CODE                     \
- if (__operation != OP_DRAWTRAP_I) {   \
-    mga_fifo(1);                       \
-    mga_outl(M_DWGCTL, OP_DRAWTRAP_I); \
-    __operation = OP_DRAWTRAP_I;       \
- }
-#include "m_ttemp.h"
-
-
-
-/* Desc: RGB iterated Z-less triangle
- *
- * In  :
- * Out :
- *
- * Note:
- */
-#define TAG mga_draw_tri_rgb_iter_zless
-#define CULL
-#define INTERP_Z
-#define INTERP_RGB
-#define SETUP_CODE                      \
- if (__operation != OP_DRAWTRAP_ZI) {   \
-    mga_fifo(1);                        \
-    mga_outl(M_DWGCTL, OP_DRAWTRAP_ZI); \
-    __operation = OP_DRAWTRAP_ZI;       \
- }
-#include "m_ttemp.h"
-
-
-
-/* Desc: RGB flat rectangle
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_draw_rect_rgb_flat (int left, int top, int width, int height, int color)
-{
- if (__bpp == 8) {
-    color |= color << 8;
- }
- if (__bpp <= 16) {
-    color |= color << 16;
- }
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWRECT) {
-
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWRECT);
-    __operation = OP_DRAWRECT;
- }
-
- /* draw the rectangle */
- mga_fifo(3);
- mga_outl(M_FCOL, color);
- mga_outl(M_FXBNDRY, ((left+width)<<16) | left);
- mga_outl(M_YDSTLEN | M_EXEC, (top<<16) | height);
-}
-
-
-
-/* Desc: 32RGB textured span
- *
- * In  :
- * Out :
- *
- * Note: 0 <= width <= 7*1024
- */
-void mga_draw_span_rgb_tx32 (int left, int top, int width, const unsigned long *bitmap)
-{
- int i;
-
- if (!width) {
-    return;
- }
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWRECT_TX32BGR) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWRECT_TX32BGR);
-    __operation = OP_DRAWRECT_TX32BGR;
- }
-
- /* draw the rectangle */
- mga_fifo(2);
- mga_outl(M_FXBNDRY, ((left+width)<<16) | left);
- mga_outl(M_YDSTLEN | M_EXEC, (top<<16) | 1);
-
- /* copy data to the pseudo-dma window */
- i = 0;
- do {
-     mga_outl(i, *bitmap);
-     bitmap++;
-     i += 4;
- } while (--width);
-}
-
-
-
-/* Desc: 24RGB textured span
- *
- * In  :
- * Out :
- *
- * Note: 0 <= width <= 7*1024
- */
-void mga_draw_span_rgb_tx24 (int left, int top, int width, const unsigned long *bitmap)
-{
- int i;
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWRECT_TX24BGR) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWRECT_TX24BGR);
-    __operation = OP_DRAWRECT_TX24BGR;
- }
-
- /* draw the rectangle */
- mga_fifo(2);
- mga_outl(M_FXBNDRY, ((left+width)<<16) | left);
- mga_outl(M_YDSTLEN | M_EXEC, (top<<16) | 1);
-
- /* copy data to the pseudo-dma window */
- i = 0;
- width = (width * 3 + 3) / 4;
- while (width) {
-       mga_outl(i & (7 * 1024 - 1), *bitmap);
-       bitmap++;
-       i += 4;
-       width--;
- }
-}
-
-
-
-/* Desc: 32RGB textured rectangle
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_draw_rect_rgb_tx32 (int left, int top, int width, int height, const unsigned long *bitmap)
-{
- int i;
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWRECT_TX32BGR) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWRECT_TX32BGR);
-    __operation = OP_DRAWRECT_TX32BGR;
- }
-
- /* draw the rectangle */
- mga_fifo(2);
- mga_outl(M_FXBNDRY, ((left+width)<<16) | left);
- mga_outl(M_YDSTLEN | M_EXEC, (top<<16) | height);
-
- /* copy data to the pseudo-dma window */
- i = 0;
- width *= height;
- while (width) {
-       mga_outl(i & (7 * 1024 - 1), *bitmap);
-       bitmap++;
-       i += 4;
-       width--;
- }
-}
-
-
-
-/* Desc: 24RGB textured rectangle
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_draw_rect_rgb_tx24 (int left, int top, int width, int height, const unsigned long *bitmap)
-{
- int i;
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_DRAWRECT_TX24BGR) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_DRAWRECT_TX24BGR);
-    __operation = OP_DRAWRECT_TX24BGR;
- }
-
- /* draw the rectangle */
- mga_fifo(2);
- mga_outl(M_FXBNDRY, ((left+width)<<16) | left);
- mga_outl(M_YDSTLEN | M_EXEC, (top<<16) | height);
-
- /* copy data to the pseudo-dma window */
- i = 0;
- width = (width * height * 3 + 3) / 4;
- while (width) {
-       mga_outl(i & (7 * 1024 - 1), *bitmap);
-       bitmap++;
-       i += 4;
-       width--;
- }
-}
-
-
-
-/* Desc: copy 32RGB image to screen
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_iload_32RGB (int left, int top, int width, int height, const unsigned long *bitmap)
-{
- int i;
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_ILOAD_32BGR) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_ILOAD_32BGR);
-    __operation = OP_ILOAD_32BGR;
- }
-
- /* draw the bitmap */
- mga_fifo(5);
- mga_outl(M_AR0, width-1);
- mga_outl(M_AR3, 0);
- mga_outl(M_AR5, 0);
- mga_outl(M_FXBNDRY, ((left+width-1)<<16) | left);
- mga_outl(M_YDSTLEN | M_EXEC, (top<<16) | height);
-
- /* copy data to the pseudo-dma window */
- i = 0;
- width *= height;
- while (width) {
-       mga_outl(i & (7 * 1024 - 1), *bitmap);
-       bitmap++;
-       i += 4;
-       width--;
- }
-}
-
-
-
-/* Desc: copy 24RGB image to screen
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_iload_24RGB (int left, int top, int width, int height, const unsigned long *bitmap)
-{
- int i;
-
- mga_select();
-
- /* set engine state */
- if (__operation != OP_ILOAD_24BGR) {
-    mga_fifo(1);
-    mga_outl(M_DWGCTL, OP_ILOAD_24BGR);
-    __operation = OP_ILOAD_24BGR;
- }
-
- /* draw the bitmap */
- mga_fifo(5);
- mga_outl(M_AR0, width-1);
- mga_outl(M_AR3, 0);
- mga_outl(M_AR5, 0);
- mga_outl(M_FXBNDRY, ((left+width-1)<<16) | left);
- mga_outl(M_YDSTLEN | M_EXEC, (top<<16) | height);
-
- /* copy data to the pseudo-dma window */
- i = 0;
- width = (width * height * 3 + 3) / 4;
- while (width) {
-       mga_outl(i & (7 * 1024 - 1), *bitmap);
-       bitmap++;
-       i += 4;
-       width--;
- }
-}
-
-
-
-/* Desc: get Z-buffer value
- *
- * In  :
- * Out :
- *
- * Note:
- */
-unsigned short mga_getz (int offset)
-{
- return hwptr_peekw(mgaptr.linear_map, zorg + (mga_readbuffer_ptr + offset) * 2);
-}
-
-
-
-/* Desc: put Z-buffer value
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_setz (int offset, unsigned short z)
-{
- hwptr_pokew(mgaptr.linear_map, zorg + (mga_writebuffer_ptr + offset) * 2, z);
-}
-
-
-
-/* Desc: clear Z-buffer
- *
- * In  :
- * Out :
- *
- * Note: uses current write buffer
- */
-static void _mga_clear_zed (int left, int top, int width, int height, unsigned short z)
-{
- if (__bpp == 16) {
-    /* GPU store (high bandwidth)
-     * Hack alert:
-     * can cause problems with concurrent FB accesses
-     */
-    mga_select();
-    mga_fifo(1);
-    mga_outl(M_YDSTORG, mga_writebuffer_ptr + zorg/2);
-    mga_draw_rect_rgb_flat(left, top, width, height, z);
-    mga_fifo(1);
-    mga_outl(M_YDSTORG, mga_writebuffer_ptr);
- } else {
-    /* CPU store */
-    unsigned long i, zz = (z<<16) | z;
-    unsigned long ofs = zorg + (top * __pixwidth + left + mga_writebuffer_ptr) * 2;
-    hwptr_select(mgaptr.linear_map);
-    while (height--) {
-          i = width/2;
-          while (i--) {
-                hwptr_nspokel(mgaptr.linear_map, ofs, zz);
-                ofs += 4;
-          }
-          if (width & 1) {
-             hwptr_nspokew(mgaptr.linear_map, ofs, z);
-             ofs += 2;
-          }
-          ofs += (__pixwidth - width) * 2;
-    }
- }
-}
-
-
-
-/* Desc: clear color- and Z-buffer
- *
- * In  : front  = clear front buffer
- *       back   = clear back buffer
- *       zed    = clear depth buffer
- *       left   = leftmost pixel to be cleared
- *       top    = starting line
- *       width  = number of pixels
- *       height = number of lines
- *       color  = color to clear to
- *       z      = z value (ignored if zed==0)
- * Out :
- *
- * Note:
- */
-void mga_clear (int front, int back, int zed, int left, int top, int width, int height, int color, unsigned short z)
-{
- if (front) {
-    if (mga_writebuffer == MGA_FRONTBUFFER) {
-       mga_draw_rect_rgb_flat(left, top, width, height, color);
-       if (zed) {
-          _mga_clear_zed(left, top, width, height, z);
-       }
-       front = 0;
-    }
- }
- if (back) {
-    if (mga_writebuffer == MGA_BACKBUFFER) {
-       mga_draw_rect_rgb_flat(left, top, width, height, color);
-       if (zed) {
-          _mga_clear_zed(left, top, width, height, z);
-       }
-       back = 0;
-    }
- }
- if (front) {
-    int old = mga_writebuffer;
-    mga_set_writebuffer(MGA_FRONTBUFFER);
-    mga_draw_rect_rgb_flat(left, top, width, height, color);
-    if (zed) {
-       _mga_clear_zed(left, top, width, height, z);
-    }
-    mga_set_writebuffer(old);
-    front = 0;
- }
- if (back) {
-    int old = mga_writebuffer;
-    mga_set_writebuffer(MGA_BACKBUFFER);
-    mga_draw_rect_rgb_flat(left, top, width, height, color);
-    if (zed) {
-       _mga_clear_zed(left, top, width, height, z);
-    }
-    mga_set_writebuffer(old);
-    back = 0;
- }
-}
-
-
-
-/* Desc: Attempts to enter specified video mode.
- *
- * In  : ptr to mode structure, number of pages, Z-buffer request, refresh rate
- * Out : 0 if success
- *
- * Note: also set up the accelerator engine
- */
-int mga_open (int width, int height, int bpp, int buffers, int zbuffer, int refresh)
-{
- static int mill_strides[] = { 640, 768, 800, 960, 1024, 1152, 1280, 1600, 1920, 2048, 0 };
- unsigned int i, used;
- MGA_MODE *p;
-
- if (mga_hw_init(&vram, &interleave, card_name) == 0) {
-    return -1;
- }
-
- if ((p = mga_mode_find(width, height, bpp)) == NULL) {
-    return -1;
- }
-
- __bpp = p->bpp;
- __width = __pagewidth = p->xres;
- __height = p->yres;
-
- if (buffers > 1) {
-    __pagewidth = _mga_fix_scans(__pagewidth);
-    __pixwidth = __pagewidth * buffers;
- } else {
-    __pixwidth = __pagewidth;
-    __pixwidth = _mga_fix_scans(__pixwidth);
- }
-
- for (i=0; mill_strides[i]; i++) {
-     if (__pixwidth <= mill_strides[i]) {
-        __pixwidth = mill_strides[i];
-        break;
-     }
- }
-
- __bypp = (__bpp+7)/8;
- __bytwidth = __pixwidth * __bypp;
-
- /* compute used memory: framebuffer + zbuffer */
- used = __bytwidth * __height;
- if (zbuffer) {
-    zorg = (used + 511) & ~511;
-    /* Hack alert:
-     * a 16-bit Z-buffer size is (stride_in_pixels * number_of_lines * 2)
-     * We cannot mess with the Z-buffer width, but we might decrease the
-     * number of lines, if the user requests less than (screen_height). For
-     * example with a 2MB card, one can have 640x480x16 display with 2 color
-     * buffers and Z-buffer if the maximum requested height is 339:
-     *    Total = (640*480 * 2 + 640*339 * 2) * 2
-     * However, this means the user must not write beyond the window's height
-     * and if we'll ever implement moveable windows, we'll have to reconsider
-     * this hack.
-     */
-#if 1
-    __zheight = height;  /* smaller */
-    used = zorg + __pixwidth * 2 * __zheight;
-#else
-    __zheight = __height;
-    used = zorg + __pixwidth * 2 * __zheight;
-#endif
- }
-
- if (mill_strides[i] && (vram>=used)) {
-    /* enter mode */
-    mga_mode_switch(p, refresh);
-    /* change the scan line length */
-    _mga_ralter(M_CRTC_INDEX, 0x14, 0x40, 0);           /* disable DWORD */
-    _mga_ralter(M_CRTC_INDEX, 0x17, 0x40, 0x40);        /* wbmode = BYTE */
-    if (interleave) {
-       _mga_rwrite(M_CRTC_INDEX, 0x13, __bytwidth/16);
-       _mga_ralter(M_CRTC_EXT_INDEX, 0, 0x30, ((__bytwidth/16)>>4)&0x30);
-    } else {
-       _mga_rwrite(M_CRTC_INDEX, 0x13, __bytwidth/8);
-       _mga_ralter(M_CRTC_EXT_INDEX, 0, 0x30, ((__bytwidth/8)>>4)&0x30);
-    }
- } else {
-    return -1;
- }
-
- /* setup buffers */
- mga_frontbuffer_ptr = 0;
- if (buffers > 1) {
-    mga_backbuffer_ptr = __pagewidth;
-    mga_set_readbuffer(MGA_BACKBUFFER);
-    mga_set_writebuffer(MGA_BACKBUFFER);
- } else {
-    mga_backbuffer_ptr = 0;
-    mga_set_readbuffer(MGA_FRONTBUFFER);
-    mga_set_writebuffer(MGA_FRONTBUFFER);
- }
- mga_display_start(mga_frontbuffer_ptr, __scrollx = 0, __scrolly = 0, 1);
-
- /* set up the accelerator engine */
- mga_select();
-
- mga_fifo(8);
- mga_outl(M_PITCH, __pixwidth);
- mga_outl(M_PLNWT, 0xFFFFFFFF);
- mga_outl(M_OPMODE, M_DMA_BLIT);
- mga_outl(M_CXBNDRY, 0xFFFF0000);
- mga_outl(M_YTOP, 0x00000000);
- mga_outl(M_YBOT, 0x007FFFFF);
- mga_outl(M_ZORG, zorg);
-
-#define INITPTR(bpp) \
-        mga_putpixel = _mga_putpixel##bpp; \
-        mga_getrgba = _mga_getrgba##bpp;   \
-        mga_getpixel = _mga_getpixel##bpp; \
-        mga_mixrgb = _mga_mixrgb##bpp;     \
-        mga_mixrgb_full = _mga_mixrgb##bpp##_full
-
- switch (__bpp) {
-       case 8:
-            mga_outl(M_MACCESS, 0);
-             INITPTR(8);
-            break;
-       case 15:
-            mga_outl(M_MACCESS, 0x80000001);
-             INITPTR(15);
-            break;
-       case 16:
-            mga_outl(M_MACCESS, 1);
-             INITPTR(16);
-            break;
-       case 32:
-            mga_outl(M_MACCESS, 2);
-             INITPTR(32);
-            break;
- }
-
-#undef INITPTR
-
- /* disable VGA aperture */
- i = mga_inb(M_MISC_R);
- mga_outb(M_MISC_W, i & ~2);
-
- /* clear Z-buffer (if any) */
- if (zbuffer) {
-    unsigned long ofs = zorg;
-    unsigned long len = zorg + __pixwidth * 2 * __zheight;
-
-    hwptr_select(mgaptr.linear_map);
-    for (; ofs<len; ofs+=4) {
-        hwptr_nspokel(mgaptr.linear_map, ofs, -1);
-    }
- }
-
- return 0;
-}
-
-
-
-/* Desc:
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_close (int restore, int unmap)
-{
- if (restore) {
-    mga_mode_restore();
- }
- if (unmap) {
-    mga_hw_fini();
- }
-}
-
-
-
-/* Desc: state retrieval
- *
- * In  : parameter name, ptr to storage
- * Out : 0 if request successfully processed
- *
- * Note: -
- */
-int mga_get (int pname, int *params)
-{
- switch (pname) {
-        case MGA_GET_CARD_NAME:
-             strcat(strcpy((char *)params, "Matrox "), card_name);
-             break;
-        case MGA_GET_VRAM:
-             params[0] = vram;
-             break;
-        case MGA_GET_CI_PREC:
-             params[0] = 0;
-             break;
-        case MGA_GET_HPIXELS:
-             params[0] = __pixwidth;
-             break;
-        case MGA_GET_SCREEN_SIZE:
-             params[0] = __width;
-             params[1] = __height;
-             break;
-        default:
-             return -1;
- }
- return 0;
-}
diff --git a/src/mesa/drivers/dos/mga/mga.h b/src/mesa/drivers/dos/mga/mga.h
deleted file mode 100644 (file)
index 0c074fa..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * DOS/DJGPP device driver v1.3 for Mesa  --  MGA2064W
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- */
-
-
-#ifndef MGA_H_included
-#define MGA_H_included
-
-#define MGA_GET_CARD_NAME   0x0100
-#define MGA_GET_VRAM        0x0101
-#define MGA_GET_CI_PREC     0x0200
-#define MGA_GET_HPIXELS     0x0201
-#define MGA_GET_SCREEN_SIZE 0x0202
-
-int mga_open (int width, int height, int bpp, int buffers, int zbuffer, int refresh);
-void mga_clear (int front, int back, int zed, int left, int top, int width, int height, int color, unsigned short z);
-int mga_get (int pname, int *params);
-void mga_close (int restore, int unmap);
-
-extern void (*mga_putpixel) (unsigned int offset, int color);
-extern int (*mga_getpixel) (unsigned int offset);
-extern void (*mga_getrgba) (unsigned int offset, unsigned char rgba[4]);
-extern int (*mga_mixrgb) (const unsigned char rgb[]);
-
-#define MGA_BACKBUFFER !0
-#define MGA_FRONTBUFFER 0
-void mga_set_readbuffer (int buffer);
-void mga_set_writebuffer (int buffer);
-void mga_swapbuffers (int swapinterval);
-
-unsigned short mga_getz (int offset);
-void mga_setz (int offset, unsigned short z);
-
-void mga_wait_idle (void);
-
-/*
- * vertex structure, used for primitive rendering
- */
-typedef struct {
-        int win[4];             /* X, Y, Z, ? */
-        unsigned char color[4]; /* R, G, B, A */
-} MGAvertex;
-
-void mga_draw_line_rgb_flat (const MGAvertex *v1, const MGAvertex *v2);
-void mga_draw_line_rgb_flat_zless (const MGAvertex *v1, const MGAvertex *v2);
-void mga_draw_line_rgb_iter (const MGAvertex *v1, const MGAvertex *v2);
-void mga_draw_line_rgb_iter_zless (const MGAvertex *v1, const MGAvertex *v2);
-
-void mga_draw_tri_rgb_flat (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v3);
-void mga_draw_tri_rgb_flat_zless (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v3);
-void mga_draw_tri_rgb_iter (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v3);
-void mga_draw_tri_rgb_iter_zless (int cull, const MGAvertex *v1, const MGAvertex *v2, const MGAvertex *v3);
-
-void mga_draw_rect_rgb_flat (int left, int top, int width, int height, int color);
-void mga_draw_rect_rgb_tx32 (int left, int top, int width, int height, const unsigned long *bitmap);
-void mga_draw_rect_rgb_tx24 (int left, int top, int width, int height, const unsigned long *bitmap);
-void mga_draw_span_rgb_tx32 (int left, int top, int width, const unsigned long *bitmap);
-void mga_draw_span_rgb_tx24 (int left, int top, int width, const unsigned long *bitmap);
-
-void mga_iload_32RGB (int left, int top, int width, int height, const unsigned long *bitmap);
-void mga_iload_24RGB (int left, int top, int width, int height, const unsigned long *bitmap);
-
-#endif
diff --git a/src/mesa/drivers/dos/mga/mga_hw.c b/src/mesa/drivers/dos/mga/mga_hw.c
deleted file mode 100644 (file)
index b2e7d5c..0000000
+++ /dev/null
@@ -1,416 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * DOS/DJGPP device driver v1.4 for Mesa  --  MGA2064W HW mapping
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- */
-
-
-#include <crt0.h>
-#include <dpmi.h>
-#include <pc.h>
-#include <string.h>
-#include <sys/nearptr.h>
-#include <sys/segments.h>
-
-#include "../internal.h"
-#include "mga_reg.h"
-#include "mga_hw.h"
-
-
-
-/* Hack alert:
- * these should really be externs
- */
-/* PCI access routines */
-static int pci_find_device (int deviceID, int vendorID, int deviceIndex, int *handle);
-static unsigned long pci_read_long (int handle, int index);
-static void pci_write_long (int handle, int index, unsigned long value);
-
-
-
-/* PCI device identifiers */
-#define MATROX_VENDOR_ID 0x102B
-
-typedef enum {
-        MATROX_MILL_ID = 0x0519
-} MATROX_ID;
-
-static MATROX_ID matrox_id_list[] = {
-       MATROX_MILL_ID,
-       0
-};
-
-
-
-/* internal hardware data structures */
-#if !MGA_FARPTR
-static int dirty;
-#endif
-static int bus_id;
-static unsigned long reg40;
-static unsigned long io_mem_base[4], linear_base;
-static unsigned long io_mem_size[4], linear_size;
-static MATROX_ID matrox_id;
-
-
-
-/* interface structures containing hardware pointer data */
-MGA_HWPTR mgaptr;
-
-
-
-/* Desc: create MMAP
- *
- * In  :
- * Out :
- *
- * Note:
- */
-static int _create_mmap (__dpmi_paddr *m, unsigned long base, unsigned long size)
-{
-#if MGA_FARPTR
- int sel;
- if (_create_selector(&sel, base, size)) {
-    return -1;
- }
- m->selector = sel;
- m->offset32 = 0;
-#else
- m->selector = _my_ds();
- if (_create_linear_mapping(&m->offset32, base, size)) {
-    return -1;
- }
- m->offset32 -= __djgpp_base_address;
-#endif
- return 0;
-}
-
-
-
-/* Desc: destroy MMAP
- *
- * In  :
- * Out :
- *
- * Note:
- */
-static void _destroy_mmap (__dpmi_paddr *m)
-{
-#if MGA_FARPTR
- int sel = m->selector;
- _remove_selector(&sel);
-#else
- m->offset32 += __djgpp_base_address;
- _remove_linear_mapping(&m->offset32);
-#endif
- m->selector = 0;
- m->offset32 = 0;
-}
-
-
-
-/* Desc: Counts amount of installed RAM
- *
- * In  :
- * Out :
- *
- * Note:
- */
-static int _mga_get_vram (MATROX_ID chip, unsigned long base)
-{
- int ProbeSize = 8;
- int SizeFound = 2;
- unsigned char tmp;
- int i;
- __dpmi_paddr fb;
-
- switch (chip) {
-       case MATROX_MILL_ID:
-            ProbeSize = 8;
-            break;
- }
-
- if (_create_mmap(&fb, base, ProbeSize*1024*1024)) {
-    return 0;
- }
-
- /* turn MGA mode on - enable linear frame buffer (CRTCEXT3) */
- mga_select();
- mga_outb(M_CRTC_EXT_INDEX, 3);
- tmp = mga_inb(M_CRTC_EXT_DATA);
- mga_outb(M_CRTC_EXT_DATA, tmp | M_MGAMODE);
-
- /* write, read and compare method */
- for (i=ProbeSize; i>2; i-= 2) {
-     hwptr_pokeb(fb, i*1024*1024 - 1, 0xAA);
-     mga_select();
-     mga_outb(M_CRTC_INDEX, 0); /* flush the cache */
-     mga_inl(M_STATUS); /* delay */
-     mga_inl(M_STATUS); /* delay */
-     mga_inl(M_STATUS); /* delay */
-     if (hwptr_peekb(fb, i*1024*1024 - 1) == 0xAA) {
-       SizeFound = i;
-       break;
-     }
- }
-
- /* restore CRTCEXT3 state */
- mga_select();
- mga_outb(M_CRTC_EXT_INDEX, 3);
- mga_outb(M_CRTC_EXT_DATA, tmp);
-
- _destroy_mmap(&fb);
-
- return SizeFound*1024*1024;
-}
-
-
-
-/* Desc: Frees all resources allocated by MGA init code.
- *
- * In  :
- * Out :
- *
- * Note:
- */
-void mga_hw_fini (void)
-{
- int i;
-
- pci_write_long(bus_id, 0x40, reg40);
-
- for (i=0; i<4; i++) {
-     _destroy_mmap(&mgaptr.io_mem_map[i]);
- }
-
- _destroy_mmap(&mgaptr.linear_map);
-
-#if !MGA_FARPTR
- if (dirty) {
-    __djgpp_nearptr_disable();
-    dirty = FALSE;
- }
-#endif
-
- matrox_id = 0;
-}
-
-
-
-/* Desc: Attempts to detect MGA.
- *
- * In  :
- * Out :
- *
- * Note: The first thing ever to be called. This is in charge of filling in
- *       the driver header with all the required information and function
- *       pointers. We do not yet have access to the video memory, so we can't
- *       talk directly to the card.
- */
-int mga_hw_init (unsigned long *vram, int *interleave, char *name)
-{
- int i;
- unsigned long pci_base[2];
-
- if (matrox_id) {
-    return matrox_id;
- }
-
-#if !MGA_FARPTR
- /* enable nearptr access */
- if (_crt0_startup_flags & _CRT0_FLAG_NEARPTR) {
-    dirty = FALSE;
- } else {
-    if (__djgpp_nearptr_enable() == 0)
-       return 0;
-
-    dirty = TRUE;
- }
-#endif
-
- /* find PCI device */
- matrox_id = 0;
-
- for (bus_id=0, i=0; matrox_id_list[i]; i++) {
-     if (pci_find_device(matrox_id_list[i], MATROX_VENDOR_ID, 0, &bus_id)) {
-       matrox_id = matrox_id_list[i];
-       break;
-     }
- }
-
- /* set up the card name */
- switch (matrox_id) {
-       case MATROX_MILL_ID:
-            if (name) strcpy(name, "Millennium");
-            break;
-        default:
-             matrox_id = 0;
-             return -1;
- }
-
- reg40 = pci_read_long(bus_id, 0x40);
-#if 0 /* overclock a little :) */
- {
-  int rfhcnt = (reg40 >> 16) & 0xF;
-  if ((reg40 & 0x200000) && (rfhcnt < 0xC)) {
-     pci_write_long(bus_id, 0x40, (reg40 & 0xFFF0FFFF) | 0x000C0000);
-  }
- }
-#endif
-
- /* read hardware configuration data */
- for (i=0; i<2; i++)
-     pci_base[i] = pci_read_long(bus_id, 16+i*4);
-
- /* work out the linear framebuffer and MMIO addresses */
- if (matrox_id == MATROX_MILL_ID) {
-    if (pci_base[0])
-       io_mem_base[0] = pci_base[0] & 0xFFFFC000;
-
-    if (pci_base[1])
-       linear_base = pci_base[1] & 0xFF800000;
- }
-
- if (!linear_base || !io_mem_base[0])
-    return 0;
-
- /* deal with the memory mapping crap */
- io_mem_size[0] = 0x4000;
-
- for (i=0; i<4; i++) {
-     if (io_mem_base[i]) {
-        if (_create_mmap(&mgaptr.io_mem_map[i], io_mem_base[i], io_mem_size[i])) {
-          mga_hw_fini();
-          return 0;
-       }
-     }
- }
-
- *vram = linear_size = _mga_get_vram(matrox_id, linear_base);
-
- if (_create_mmap(&mgaptr.linear_map, linear_base, linear_size)) {
-    mga_hw_fini();
-    return 0;
- }
-
- /* fill in user data */
- *interleave = linear_size > 2*1024*1024;
-
- return matrox_id;
-}
-
-
-
-/* PCI routines added by SET */
-#define PCIAddr   0xCF8
-#define PCIData   0xCFC
-#define PCIEnable 0x80000000
-
-
-
-/* FindPCIDevice:
- *  Replacement for the INT 1A - PCI BIOS v2.0c+ - FIND PCI DEVICE, AX = B102h
- *
- *  Note: deviceIndex is because a card can hold more than one PCI chip.
- * 
- *  Searches the board of the vendor supplied in vendorID with 
- *  identification number deviceID and index deviceIndex (normally 0). 
- *  The value returned in handle can be used to access the PCI registers 
- *  of this board.
- *
- *  Return: 1 if found 0 if not found.
- */
-static int pci_find_device (int deviceID, int vendorID, int deviceIndex, int *handle)
-{
- int model, vendor, card, device;
- unsigned value, full_id, bus, busMax;
-
- deviceIndex <<= 8;
-
- /* for each PCI bus */
- for (bus=0, busMax=0x10000; bus<busMax; bus+=0x10000) {
-
-     /* for each hardware device */
-     for (device=0, card=0; card<32; card++, device+=0x800) {
-        value = PCIEnable | bus | deviceIndex | device;
-        outportl(PCIAddr, value);
-        full_id = inportl(PCIData);
-
-        /* get the vendor and model ID */
-        vendor = full_id & 0xFFFF;
-        model = full_id >> 16;
-
-        if (vendor != 0xFFFF) {
-           /* is this the one we want? */
-           if ((deviceID == model) && (vendorID == vendor)) {
-              *handle = value;
-              return 1;
-           }
-
-           /* is it a bridge to a secondary bus? */
-           outportl(PCIAddr, value | 8);
-
-           if (((inportl(PCIData) >> 16) == 0x0600) || (full_id==0x00011011))
-              busMax += 0x10000;
-         }
-     }
- }
-
- return 0;
-}
-
-
-
-/* Desc:
- *
- * In  :
- * Out :
- *
- * Note:
- */
-static unsigned long pci_read_long (int handle, int index)
-{
- outportl(PCIAddr, PCIEnable | handle | index);
- return inportl(PCIData);
-}
-
-
-
-/* Desc:
- *
- * In  :
- * Out :
- *
- * Note:
- */
-static void pci_write_long (int handle, int index, unsigned long value)
-{
- outportl(PCIAddr, PCIEnable | handle | index);
- outportl(PCIData, value);
-}
diff --git a/src/mesa/drivers/dos/mga/mga_hw.h b/src/mesa/drivers/dos/mga/mga_hw.h
deleted file mode 100644 (file)
index 8cc266b..0000000
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * DOS/DJGPP device driver v1.3 for Mesa  --  MGA2064W HW mapping
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- */
-
-
-#ifndef MGA_HW_included
-#define MGA_HW_included
-
-
-
-/* set this to zero to use near pointers */
-#define MGA_FARPTR 1
-
-
-
-/* access macros */
-#if MGA_FARPTR
-
-#include <sys/farptr.h>
-
-#define hwptr_pokeb(ptr, off, val)     _farpokeb((ptr).selector, (ptr).offset32+(off), (val))
-#define hwptr_pokew(ptr, off, val)     _farpokew((ptr).selector, (ptr).offset32+(off), (val))
-#define hwptr_pokel(ptr, off, val)     _farpokel((ptr).selector, (ptr).offset32+(off), (val))
-
-#define hwptr_peekb(ptr, off)          _farpeekb((ptr).selector, (ptr).offset32+(off))
-#define hwptr_peekw(ptr, off)          _farpeekw((ptr).selector, (ptr).offset32+(off))
-#define hwptr_peekl(ptr, off)          _farpeekl((ptr).selector, (ptr).offset32+(off))
-
-#define hwptr_select(ptr)              _farsetsel((ptr).selector)
-#define hwptr_unselect(ptr)            (ptr).selector = _fargetsel()
-
-#define hwptr_nspokeb(ptr, off, val)   _farnspokeb((ptr).offset32+(off), (val))
-#define hwptr_nspokew(ptr, off, val)   _farnspokew((ptr).offset32+(off), (val))
-#define hwptr_nspokel(ptr, off, val)   _farnspokel((ptr).offset32+(off), (val))
-
-#define hwptr_nspeekb(ptr, off)        _farnspeekb((ptr).offset32+(off))
-#define hwptr_nspeekw(ptr, off)        _farnspeekw((ptr).offset32+(off))
-#define hwptr_nspeekl(ptr, off)        _farnspeekl((ptr).offset32+(off))
-
-#else
-
-#define hwptr_pokeb(ptr, off, val)     *((volatile unsigned char *)((ptr).offset32+(off))) = (val)
-#define hwptr_pokew(ptr, off, val)     *((volatile unsigned short *)((ptr).offset32+(off))) = (val)
-#define hwptr_pokel(ptr, off, val)     *((volatile unsigned long *)((ptr).offset32+(off))) = (val)
-
-#define hwptr_peekb(ptr, off)          (*((volatile unsigned char *)((ptr).offset32+(off))))
-#define hwptr_peekw(ptr, off)          (*((volatile unsigned short *)((ptr).offset32+(off))))
-#define hwptr_peekl(ptr, off)          (*((volatile unsigned long *)((ptr).offset32+(off))))
-
-#define hwptr_select(ptr)
-#define hwptr_unselect(ptr)
-
-#define hwptr_nspokeb(ptr, off, val)   *((volatile unsigned char *)((ptr).offset32+(off))) = (val)
-#define hwptr_nspokew(ptr, off, val)   *((volatile unsigned short *)((ptr).offset32+(off))) = (val)
-#define hwptr_nspokel(ptr, off, val)   *((volatile unsigned long *)((ptr).offset32+(off))) = (val)
-
-#define hwptr_nspeekb(ptr, off)        (*((volatile unsigned char *)((ptr).offset32+(off))))
-#define hwptr_nspeekw(ptr, off)        (*((volatile unsigned short *)((ptr).offset32+(off))))
-#define hwptr_nspeekl(ptr, off)        (*((volatile unsigned long *)((ptr).offset32+(off))))
-
-#endif
-
-
-
-/* helpers for accessing the Matrox registers */
-#define mga_select()          hwptr_select(mgaptr.io_mem_map[0])
-#define mga_inb(addr)         hwptr_nspeekb(mgaptr.io_mem_map[0], addr)
-#define mga_inw(addr)         hwptr_nspeekw(mgaptr.io_mem_map[0], addr)
-#define mga_inl(addr)         hwptr_nspeekl(mgaptr.io_mem_map[0], addr)
-#define mga_outb(addr, val)   hwptr_nspokeb(mgaptr.io_mem_map[0], addr, val)
-#define mga_outw(addr, val)   hwptr_nspokew(mgaptr.io_mem_map[0], addr, val)
-#define mga_outl(addr, val)   hwptr_nspokel(mgaptr.io_mem_map[0], addr, val)
-
-
-
-typedef struct MGA_HWPTR {
-        __dpmi_paddr io_mem_map[4], linear_map;
-} MGA_HWPTR;
-
-extern MGA_HWPTR mgaptr;
-
-void mga_hw_fini (void);
-int mga_hw_init (unsigned long *vram, int *interleave, char *name);
-
-#endif
diff --git a/src/mesa/drivers/dos/mga/mga_mode.c b/src/mesa/drivers/dos/mga/mga_mode.c
deleted file mode 100644 (file)
index efba24c..0000000
+++ /dev/null
@@ -1,231 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * DOS/DJGPP device driver v1.3 for Mesa  --  MGA2064W mode switching
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- */
-
-
-#include <dpmi.h>
-#include <string.h>
-#include <stubinfo.h>
-#include <sys/exceptn.h>
-#include <sys/farptr.h>
-#include <sys/movedata.h>
-#include <sys/segments.h>
-
-#include "../internal.h"
-#include "mga_mode.h"
-
-
-
-static MGA_MODE oldmode;
-static MGA_MODE modes[64];
-
-
-
-/*
- * VESA info
- */
-#define V_SIGN     0
-#define V_MINOR    4
-#define V_MAJOR    5
-#define V_OEM_OFS  6
-#define V_OEM_SEG  8
-#define V_MODE_OFS 14
-#define V_MODE_SEG 16
-#define V_MEMORY   18
-
-/*
- * mode info
- */
-#define M_ATTR     0
-#define M_GRAN     4
-#define M_SCANLEN  16
-#define M_XRES     18
-#define M_YRES     20
-#define M_BPP      25
-#define M_RED      31
-#define M_GREEN    33
-#define M_BLUE     35
-#define M_PHYS_PTR 40
-
-
-
-/* Desc: get available modes
- *
- * In  : -
- * Out : linear modes list ptr
- *
- * Note: shouldn't use VESA...
- */
-static MGA_MODE *_mga_mode_check (void)
-{
- __dpmi_regs r;
- word16 *p;
- MGA_MODE *q;
- char vesa_info[512], tmp[512];
-
- _farpokel(_stubinfo->ds_selector, 0, 0x32454256);
- r.x.ax = 0x4f00;
- r.x.di = 0;
- r.x.es = _stubinfo->ds_segment;
- __dpmi_int(0x10, &r);
- movedata(_stubinfo->ds_selector, 0, _my_ds(), (unsigned)vesa_info, 512);
- if ((r.x.ax!=0x004f) || ((_32_ vesa_info[V_SIGN])!=0x41534556)) {
-    return NULL;
- }
-
- p = (word16 *)(((_16_ vesa_info[V_MODE_SEG])<<4) + (_16_ vesa_info[V_MODE_OFS]));
- q = modes;
- do {
-     if ((q->mode=_farpeekw(__djgpp_dos_sel, (unsigned long)(p++)))==0xffff) {
-        break;
-     }
-
-     r.x.ax = 0x4f01;
-     r.x.cx = q->mode;
-     r.x.di = 512;
-     r.x.es = _stubinfo->ds_segment;
-     __dpmi_int(0x10, &r);
-     movedata(_stubinfo->ds_selector, 512, _my_ds(), (unsigned)tmp, 256);
-     switch (tmp[M_BPP]) {
-            case 16:
-                 q->bpp = tmp[M_RED] + tmp[M_GREEN] + tmp[M_BLUE];
-                 break;
-            case 8:
-            case 15:
-            case 24:
-            case 32:
-                 q->bpp = tmp[M_BPP];
-                 break;
-            default:
-                 q->bpp = 0;
-     }
-     if ((r.x.ax==0x004f) && ((tmp[M_ATTR]&0x11)==0x11) && q->bpp && (tmp[M_ATTR]&0x80)) {
-        q->xres = _16_ tmp[M_XRES];
-        q->yres = _16_ tmp[M_YRES];
-        q->mode |= 0x4000;
-        q++;
-     }
- } while (TRUE);
-
- return modes;
-}
-
-
-
-/* Desc: save current mode
- *
- * In  : ptr to mode structure
- * Out : 0 if success
- *
- * Note: shouldn't use VESA...
- */
-static int _mga_mode_save (MGA_MODE *p)
-{
- __asm("\n\
-               movw    $0x4f03, %%ax   \n\
-               int     $0x10           \n\
-               movl    %%ebx, %0       \n\
- ":"=g"(p->mode)::"%eax", "%ebx");
- return 0;
-}
-
-
-
-/* Desc: switch to specified mode
- *
- * In  : ptr to mode structure, refresh rate
- * Out : 0 if success
- *
- * Note: shouldn't use VESA...
- */
-int mga_mode_switch (MGA_MODE *p, int refresh)
-{
- if (oldmode.mode == 0) {
-    _mga_mode_save(&oldmode);
- }
- __asm("movw $0x4f02, %%ax; int  $0x10"::"b"(p->mode):"%eax");
- return 0;
-
- (void)refresh; /* silence compiler warning */
-}
-
-
-
-/* Desc: restore to the mode prior to first call to `mga_switch'
- *
- * In  : -
- * Out : 0 if success
- *
- * Note: shouldn't use VESA...
- */
-int mga_mode_restore (void)
-{
- if (oldmode.mode != 0) {
-    __asm("movw $0x4f02, %%ax; int  $0x10"::"b"(oldmode.mode):"%eax");
-    oldmode.mode = 0;
- }
- return 0;
-}
-
-
-
-/* Desc: return suitable mode
- *
- * In  : width, height, bpp
- * Out : ptr to mode structure
- *
- * Note: -
- */
-MGA_MODE *mga_mode_find (int width, int height, int bpp)
-{
- static MGA_MODE *q = NULL;
-
- MGA_MODE *p;
- unsigned int min;
-
- if (q == NULL) {
-    if ((q = _mga_mode_check()) == NULL) {
-       return NULL;
-    }
- }
-
- /* search for a mode that fits our request */
- for (min=-1, p=NULL; q->mode!=0xffff; q++) {
-     if ((q->xres>=width) && (q->yres>=height) && (q->bpp==bpp)) {
-        if (min>=(unsigned)(q->xres*q->yres)) {
-           min = q->xres*q->yres;
-           p = q;
-        }
-     }
- }
-
- return p;
-}
diff --git a/src/mesa/drivers/dos/mga/mga_mode.h b/src/mesa/drivers/dos/mga/mga_mode.h
deleted file mode 100644 (file)
index c9e04bc..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * DOS/DJGPP device driver v1.3 for Mesa  --  MGA2064W mode switching
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- */
-
-
-#ifndef MGA_MODE_included
-#define MGA_MODE_included
-
-typedef struct MGA_MODE {
-        int mode;
-        int xres, yres;
-        int bpp;
-} MGA_MODE;
-
-int mga_mode_switch (MGA_MODE *p, int refresh);
-int mga_mode_restore (void);
-MGA_MODE *mga_mode_find (int width, int height, int bpp);
-
-#endif
diff --git a/src/mesa/drivers/dos/mga/mga_reg.h b/src/mesa/drivers/dos/mga/mga_reg.h
deleted file mode 100644 (file)
index 11db818..0000000
+++ /dev/null
@@ -1,207 +0,0 @@
-/*
- * Mesa 3-D graphics library
- * Version:  5.0
- * 
- * Copyright (C) 1999-2002  Brian Paul   All Rights Reserved.
- * 
- * Permission is hereby granted, free of charge, to any person obtaining a
- * copy of this software and associated documentation files (the "Software"),
- * to deal in the Software without restriction, including without limitation
- * the rights to use, copy, modify, merge, publish, distribute, sublicense,
- * and/or sell copies of the Software, and to permit persons to whom the
- * Software is furnished to do so, subject to the following conditions:
- * 
- * The above copyright notice and this permission notice shall be included
- * in all copies or substantial portions of the Software.
- * 
- * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
- * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
- * BRIAN PAUL BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
- * AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
- * CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
- */
-
-/*
- * DOS/DJGPP device driver v1.3 for Mesa  --  MGA2064W register mnemonics
- *
- *  Copyright (c) 2003 - Borca Daniel
- *  Email : dborca@yahoo.com
- *  Web   : http://www.geocities.com/dborca
- */
-
-
-#ifndef MGA_REG_H_included
-#define MGA_REG_H_included
-
-/* Matrox hardware registers: */
-#define M_AR0                 0x1C60
-#define M_AR1                 0x1C64
-#define M_AR2                 0x1C68
-#define M_AR3                 0x1C6C
-#define M_AR4                 0x1C70
-#define M_AR5                 0x1C74
-#define M_AR6                 0x1C78
-#define M_BCOL                0x1C20
-#define M_CXBNDRY             0x1C80
-#define M_CXLEFT              0x1CA0
-#define M_CXRIGHT             0x1CA4
-#define M_DR0                 0x1CC0
-#define M_DR2                 0x1CC8
-#define M_DR3                 0x1CCC
-#define M_DR4                 0x1CD0
-#define M_DR6                 0x1CD8
-#define M_DR7                 0x1CDC
-#define M_DR8                 0x1CE0
-#define M_DR10                0x1CE8
-#define M_DR11                0x1CEC
-#define M_DR12                0x1CF0
-#define M_DR14                0x1CF8
-#define M_DR15                0x1CFC
-#define M_DWGCTL              0x1C00
-#define M_FCOL                0x1C24
-#define M_FIFOSTATUS          0x1E10
-#define M_FXBNDRY             0x1C84
-#define M_FXLEFT              0x1CA8
-#define M_FXRIGHT             0x1CAC
-#define M_ICLEAR              0x1E18
-#define M_IEN                 0x1E1C
-#define M_LEN                 0x1C5C
-#define M_MACCESS             0x1C04
-#define M_OPMODE              0x1E54
-#define M_PAT0                0x1C10
-#define M_PAT1                0x1C14
-#define M_PITCH               0x1C8C
-#define M_PLNWT               0x1C1C
-#define M_RESET               0x1E40
-#define M_SGN                 0x1C58
-#define M_SHIFT               0x1C50
-#define M_SRC0                0x1C30
-#define M_SRC1                0x1C34
-#define M_SRC2                0x1C38
-#define M_SRC3                0x1C3C
-#define M_STATUS              0x1E14
-#define M_VCOUNT              0x1E20
-#define M_XDST                0x1CB0
-#define M_XYEND               0x1C44
-#define M_XYSTRT              0x1C40
-#define M_YBOT                0x1C9C
-#define M_YDST                0x1C90
-#define M_YDSTLEN             0x1C88
-#define M_YDSTORG             0x1C94
-#define M_YTOP                0x1C98
-#define M_ZORG                0x1C0C
-
-#define M_EXEC                0x0100
-
-/* DWGCTL: opcod */
-#define M_DWG_LINE_OPEN       0x0
-#define M_DWG_AUTOLINE_OPEN   0x1
-#define M_DWG_LINE_CLOSE      0x2
-#define M_DWG_AUTOLINE_CLOSE  0x3
-#define M_DWG_TRAP            0x4
-#define M_DWG_TEXTURE_TRAP    0x5
-#define M_DWG_BITBLT          0x8
-#define M_DWG_FBITBLT         0xC
-#define M_DWG_ILOAD           0x9
-#define M_DWG_ILOAD_SCALE     0xD
-#define M_DWG_ILOAD_FILTER    0xF
-#define M_DWG_IDUMP           0xA
-
-/* DWGCTL: atype */
-#define M_DWG_RPL             (0x0 << 4)
-#define M_DWG_RSTR            (0x1 << 4)
-#define M_DWG_ZI              (0x3 << 4)
-#define M_DWG_BLK             (0x4 << 4)
-#define M_DWG_I               (0x7 << 4)
-
-/* DWGCTL: linear */
-#define M_DWG_LINEAR          (0x1 << 7)
-
-/* DWGCTL: zmode */
-#define M_DWG_NOZCMP          (0x0 << 8)
-#define M_DWG_ZE              (0x2 << 8)
-#define M_DWG_ZNE             (0x3 << 8)
-#define M_DWG_ZLT             (0x4 << 8)
-#define M_DWG_ZLTE            (0x5 << 8)
-#define M_DWG_ZGT             (0x6 << 8)
-#define M_DWG_ZGTE            (0x7 << 8)
-
-/* DWGCTL: solid */
-#define M_DWG_SOLID           (0x1 << 11)
-
-/* DWGCTL: arzero */
-#define M_DWG_ARZERO          (0x1 << 12)
-
-/* DWGCTL: sgnzero */
-#define M_DWG_SGNZERO         (0x1 << 13)
-
-/* DWGCTL: shiftzero */
-#define M_DWG_SHFTZERO        (0x1 << 14)
-
-/* DWGCTL: bop */
-#define M_DWG_BOP_XOR         (0x6 << 16)
-#define M_DWG_BOP_AND         (0x8 << 16)
-#define M_DWG_BOP_SRC         (0xC << 16)
-#define M_DWG_BOP_OR          (0xE << 16)
-
-/* DWGCTL: trans */
-#define M_DWG_TRANS_0         (0x0 << 20)
-#define M_DWG_TRANS_1         (0x1 << 20)
-#define M_DWG_TRANS_2         (0x2 << 20)
-#define M_DWG_TRANS_3         (0x3 << 20)
-#define M_DWG_TRANS_4         (0x4 << 20)
-#define M_DWG_TRANS_5         (0x5 << 20)
-#define M_DWG_TRANS_6         (0x6 << 20)
-#define M_DWG_TRANS_7         (0x7 << 20)
-#define M_DWG_TRANS_8         (0x8 << 20)
-#define M_DWG_TRANS_9         (0x9 << 20)
-#define M_DWG_TRANS_A         (0xA << 20)
-#define M_DWG_TRANS_B         (0xB << 20)
-#define M_DWG_TRANS_C         (0xC << 20)
-#define M_DWG_TRANS_D         (0xD << 20)
-#define M_DWG_TRANS_E         (0xE << 20)
-#define M_DWG_TRANS_F         (0xF << 20)
-
-/* DWGCTL: bltmod */
-#define M_DWG_BMONOLEF        (0x0 << 25)
-#define M_DWG_BMONOWF         (0x4 << 25)
-#define M_DWG_BPLAN           (0x1 << 25)
-#define M_DWG_BFCOL           (0x2 << 25)
-#define M_DWG_BUYUV           (0xE << 25)
-#define M_DWG_BU32BGR         (0x3 << 25)
-#define M_DWG_BU32RGB         (0x7 << 25)
-#define M_DWG_BU24BGR         (0xB << 25)
-#define M_DWG_BU24RGB         (0xF << 25)
-
-/* DWGCTL: pattern */
-#define M_DWG_PATTERN         (0x1 << 29)
-
-/* DWGCTL: transc */
-#define M_DWG_TRANSC          (0x1 << 30)
-
-/* OPMODE: */
-#define M_DMA_GENERAL         (0x0 << 2)
-#define M_DMA_BLIT            (0x1 << 2)
-#define M_DMA_VECTOR          (0x2 << 2)
-
-/* SGN: */
-#define M_SDXL                (0x1 << 1)
-#define M_SDXR                (0x1 << 5)
-
-
-
-/* VGAREG */
-#define M_CRTC_INDEX          0x1FD4
-#define M_CRTC_DATA           0x1FD5
-
-#define M_CRTC_EXT_INDEX      0x1FDE
-#define M_CRTC_EXT_DATA       0x1FDF
-
-#define M_MISC_R              0x1FCC
-#define M_MISC_W              0x1FC2
-
-/* CRTCEXT3: */
-#define M_MGAMODE             (0x1 << 7)
-
-#endif