diff options
| author | Brian Paul <brian.paul@tungstengraphics.com> | 2002-02-15 14:10:19 +0000 | 
|---|---|---|
| committer | Brian Paul <brian.paul@tungstengraphics.com> | 2002-02-15 14:10:19 +0000 | 
| commit | c4c4213b69b599bcdefe1c7720908fe5884f44b6 (patch) | |
| tree | 82381363f9ebd69269b69e655247f18c31e05e11 /src | |
| parent | ce57201825e661800ce39e98eeae090ac118cdcf (diff) | |
obsolete
Diffstat (limited to 'src')
| -rw-r--r-- | src/mesa/drivers/dos/DEPEND.DOS | 119 | ||||
| -rw-r--r-- | src/mesa/drivers/dos/dosmesa.c | 1542 | 
2 files changed, 0 insertions, 1661 deletions
| diff --git a/src/mesa/drivers/dos/DEPEND.DOS b/src/mesa/drivers/dos/DEPEND.DOS deleted file mode 100644 index 60a0fdcc28..0000000000 --- a/src/mesa/drivers/dos/DEPEND.DOS +++ /dev/null @@ -1,119 +0,0 @@ -# DO NOT DELETE
 -
 -accum.obj: accum.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -accum.obj: dlist.h macros.h
 -alpha.obj: alpha.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -alpha.obj: dlist.h macros.h
 -alphabuf.obj: alphabuf.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -alphabuf.obj: context.h macros.h
 -api1.obj: api.h bitmap.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -api1.obj: eval.h image.h macros.h matrix.h teximage.h
 -api2.obj: api.h bitmap.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -api2.obj: eval.h image.h macros.h matrix.h teximage.h
 -attrib.obj: attrib.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -attrib.obj: draw.h dlist.h macros.h
 -bitmap.obj: bitmap.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -bitmap.obj: feedback.h image.h macros.h pb.h
 -blend.obj: alphabuf.h types.h ..\include\GL\gl.h config.h fixed.h dd.h blend.h
 -blend.obj: context.h dlist.h macros.h pb.h span.h
 -bresenhm.obj: bresenhm.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -clip.obj: clip.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -clip.obj: dlist.h macros.h matrix.h vb.h xform.h
 -context.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h depth.h
 -context.obj: draw.h eval.h light.h lines.h dlist.h macros.h pb.h points.h
 -context.obj: pointers.h triangle.h teximage.h texobj.h texture.h vb.h vertex.h
 -copypix.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -copypix.obj: copypix.h depth.h feedback.h dlist.h macros.h pixel.h span.h
 -copypix.obj: stencil.h
 -depth.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h depth.h
 -depth.obj: dlist.h macros.h
 -dlist.obj: accum.h types.h ..\include\GL\gl.h config.h fixed.h dd.h alpha.h
 -dlist.obj: attrib.h bitmap.h blend.h clip.h context.h copypix.h depth.h draw.h
 -dlist.obj: drawpix.h enable.h eval.h feedback.h fog.h image.h light.h lines.h
 -dlist.obj: dlist.h logic.h macros.h masking.h matrix.h misc.h pixel.h points.h
 -dlist.obj: polygon.h scissor.h stencil.h texobj.h teximage.h texture.h vb.h
 -dlist.obj: vertex.h winpos.h
 -draw.obj: clip.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -draw.obj: draw.h feedback.h fog.h light.h lines.h dlist.h macros.h matrix.h
 -draw.obj: pb.h points.h texture.h vb.h xform.h
 -drawpix.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -drawpix.obj: drawpix.h feedback.h dlist.h macros.h pixel.h span.h stencil.h
 -enable.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h depth.h
 -enable.obj: draw.h enable.h light.h dlist.h macros.h stencil.h
 -eval.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h draw.h
 -eval.obj: eval.h dlist.h macros.h
 -feedback.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -feedback.obj: feedback.h dlist.h macros.h
 -fog.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h fog.h
 -fog.obj: dlist.h macros.h
 -get.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h get.h
 -get.obj: dlist.h macros.h
 -hash.obj: hash.h
 -interp.obj: interp.h types.h ..\include\GL\gl.h config.h fixed.h dd.h macros.h
 -image.obj: image.h types.h ..\include\GL\gl.h config.h fixed.h dd.h macros.h
 -image.obj: pixel.h
 -light.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h light.h
 -light.obj: dlist.h macros.h matrix.h vb.h xform.h
 -lines.obj: bresenhm.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -lines.obj: context.h feedback.h interp.h lines.h dlist.h macros.h pb.h vb.h
 -logic.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h dlist.h
 -logic.obj: logic.h macros.h pb.h
 -masking.obj: alphabuf.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -masking.obj: context.h macros.h masking.h pb.h
 -matrix.obj: accum.h types.h ..\include\GL\gl.h config.h fixed.h dd.h alphabuf.h
 -matrix.obj: context.h depth.h dlist.h macros.h matrix.h stencil.h
 -misc.obj: accum.h types.h ..\include\GL\gl.h config.h fixed.h dd.h alphabuf.h
 -misc.obj: context.h depth.h macros.h masking.h misc.h stencil.h
 -pb.obj: alpha.h types.h ..\include\GL\gl.h config.h fixed.h dd.h alphabuf.h
 -pb.obj: blend.h depth.h fog.h logic.h macros.h masking.h pb.h scissor.h
 -pb.obj: stencil.h texture.h
 -pixel.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h dlist.h
 -pixel.obj: macros.h pixel.h image.h span.h stencil.h
 -points.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -points.obj: feedback.h dlist.h macros.h pb.h span.h vb.h
 -pointers.obj: accum.h types.h ..\include\GL\gl.h config.h fixed.h dd.h alpha.h
 -pointers.obj: attrib.h bitmap.h blend.h clip.h context.h copypix.h depth.h
 -pointers.obj: draw.h drawpix.h enable.h eval.h feedback.h fog.h get.h light.h
 -pointers.obj: lines.h dlist.h logic.h macros.h masking.h matrix.h misc.h
 -pointers.obj: pixel.h points.h polygon.h readpix.h scissor.h stencil.h
 -pointers.obj: teximage.h texobj.h texture.h varray.h vb.h vertex.h winpos.h
 -polygon.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -polygon.obj: macros.h polygon.h
 -readpix.obj: alphabuf.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -readpix.obj: context.h depth.h feedback.h dlist.h macros.h image.h readpix.h
 -readpix.obj: span.h stencil.h
 -scissor.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -scissor.obj: macros.h dlist.h scissor.h
 -span.obj: alpha.h types.h ..\include\GL\gl.h config.h fixed.h dd.h alphabuf.h
 -span.obj: blend.h depth.h fog.h logic.h macros.h masking.h scissor.h span.h
 -span.obj: stencil.h texture.h
 -stencil.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h dlist.h
 -stencil.obj: macros.h pb.h stencil.h
 -teximage.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -teximage.obj: image.h macros.h pixel.h span.h teximage.h
 -texobj.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h macros.h
 -texobj.obj: teximage.h texobj.h
 -texture.obj: context.h types.h ..\include\GL\gl.h config.h fixed.h dd.h dlist.h
 -texture.obj: macros.h pb.h teximage.h texture.h
 -triangle.obj: depth.h types.h ..\include\GL\gl.h config.h fixed.h dd.h
 -triangle.obj: feedback.h macros.h span.h triangle.h vb.h tritemp.h
 -varray.obj: draw.h types.h ..\include\GL\gl.h config.h fixed.h dd.h context.h
 -varray.obj: enable.h dlist.h macros.h varray.h vb.h xform.h
 -vb.obj: types.h ..\include\GL\gl.h config.h fixed.h dd.h vb.h
 -vertex.obj: draw.h types.h ..\include\GL\gl.h config.h fixed.h dd.h light.h
 -vertex.obj: dlist.h macros.h vb.h vertex.h
 -winpos.obj: ..\include\GL\gl.h draw.h types.h config.h fixed.h dd.h dlist.h
 -winpos.obj: macros.h winpos.h
 -xform.obj: types.h ..\include\GL\gl.h config.h fixed.h dd.h xform.h
 -glx.obj: ..\include\GL\gl.h ..\include\GL\glx.h ..\include\GL\xmesa.h context.h
 -glx.obj: types.h config.h fixed.h dd.h macros.h xmesaP.h
 -osmesa.obj: ..\include\GL\osmesa.h ..\include\GL\gl.h context.h types.h
 -osmesa.obj: config.h fixed.h dd.h depth.h macros.h matrix.h vb.h tritemp.h
 -xfonts.obj: ..\include\GL\gl.h ..\include\GL\xmesa.h macros.h xmesaP.h types.h
 -xfonts.obj: config.h fixed.h dd.h context.h
 -xmesa1.obj: ..\include\GL\xmesa.h ..\include\GL\gl.h xmesaP.h types.h config.h
 -xmesa1.obj: fixed.h dd.h context.h macros.h matrix.h
 -xmesa2.obj: ..\include\GL\xmesa.h ..\include\GL\gl.h macros.h types.h config.h
 -xmesa2.obj: fixed.h dd.h xmesaP.h
 -xmesa3.obj: bresenhm.h types.h ..\include\GL\gl.h config.h fixed.h dd.h depth.h
 -xmesa3.obj: interp.h macros.h vb.h xmesaP.h ..\include\GL\xmesa.h tritemp.h
 diff --git a/src/mesa/drivers/dos/dosmesa.c b/src/mesa/drivers/dos/dosmesa.c deleted file mode 100644 index 6ee7291de1..0000000000 --- a/src/mesa/drivers/dos/dosmesa.c +++ /dev/null @@ -1,1542 +0,0 @@ -/* $Id: dosmesa.c,v 1.4 2001/03/03 20:33:29 brianp Exp $ */
 -
 -/*
 - * Mesa 3-D graphics library
 - * Version:  2.3
 - * Copyright (C) 1995-1997  Brian Paul
 - *
 - * This library is free software; you can redistribute it and/or
 - * modify it under the terms of the GNU Library General Public
 - * License as published by the Free Software Foundation; either
 - * version 2 of the License, or (at your option) any later version.
 - *
 - * This library is distributed in the hope that it will be useful,
 - * but WITHOUT ANY WARRANTY; without even the implied warranty of
 - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 - * Library General Public License for more details.
 - *
 - * You should have received a copy of the GNU Library General Public
 - * License along with this library; if not, write to the Free
 - * Software Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 - */
 -
 -
 -/*
 - * $Log: dosmesa.c,v $ - * Revision 1.4  2001/03/03 20:33:29  brianp - * lots of gl_*() to _mesa_*() namespace clean-up - * - * Revision 1.3  2000/11/22 08:55:52  joukj - * - * - *  Modified Files: - *  	Mesa/src/Allegro/amesa.c Mesa/src/DOS/dosmesa.c - *  	Mesa/src/FX/fxdd.c Mesa/src/FX/fxdrv.h - *  	Mesa/src/FX/fxfastpath.c - *  	Mesa/src/GGI/include/ggi/mesa/ggimesa.h - *  	Mesa/src/OSmesa/osmesa.c Mesa/src/SVGA/svgamesa.c - *  	Mesa/src/Trace/tr_control.c Mesa/src/Windows/wgl.c - *  	Mesa/src/X/xmesaP.h Mesa/src/X86/3dnow.c Mesa/src/X86/katmai.c - *  	Mesa/src/X86/x86.c - *  Removed Files: - *  	Mesa/src/mms_depend - * - *  Oops,... all files containing Caps in directory name or file name were - *  missing in my types->mtypes commit. - * - * ---------------------------------------------------------------------- - * - * Revision 1.2  2000/09/26 20:54:10  brianp - * First batch of OpenGL SI related changes: - * Renamed struct gl_context to struct __GLcontextRec. - * Include glcore.h, setup GL imports/exports. - * Replaced gl_ prefix with _mesa_ prefix in context.[ch] functions. - * GLcontext's Visual field is no longer a pointer. - * - * Revision 1.1.1.1  1999/08/19 00:55:41  jtg - * Imported sources - * - * Revision 1.2  1999/03/28 21:11:57  brianp - * updated SetBuffer driver function - * - * Revision 1.1  1999/02/24 03:56:31  brianp - * initial check-in - *
 - * - * Revision 1.5  1997/06/19  22:00:00  Brian Paul
 - * Removed all ColorShift stuff - *
 - * Revision 1.4  1997/06/03  19:00:00  Brian Paul
 - * Replaced VB->Unclipped[] with VB->ClipMask[]
 - *
 - * Revision 1.3  1997/05/28  07:00:00  Phil Frisbie, Jr.
 - * Now pass red/green/blue/alpha bits to gl_create_visual()
 - * Fixed DJGPP mode 13 support.
 - *
 - * Revision 1.2  1996/12/08  16:13:45  Charlie
 - * Added VESA support via Scitechs SVGA kit.
 - *
 - * Revision 1.1  1996/12/08  16:09:52  Charlie
 - * Initial revision
 - *
 - */
 -
 -
 -/*
 - * DOS VGA/VESA/MGL/Mesa interface.
 - *
 - */
 -
 -/*
 - *
 - * TODO: (cw)
 - *	 Improve the colour matcher for rgb non vesa modes, its pretty bad and incorrect
 - *	 Keyboard interrupt.
 - *  Comments and tidy up.
 - *  Add support for VESA without SVGAKIT.
 - *  DirectX Support.
 - *  Better GLIDE Support.
 - *  Clear up the #ifdef madness.
 - */
 -
 -#ifdef DOSVGA
 -
 -#if defined(DOSVGA) && !defined(GLIDE) && defined(DJGPP) && !defined(UNIVBE) && !defined(MGL)
 -
 -/* Should help cut down on the crazy #if`s */
 -#define MODE13 1
 -
 -#else
 -#undef MODE13
 -#endif
 -
 -#include <stdio.h>
 -#include <stdlib.h>
 -#include <string.h>
 -#include <string.h>
 -#include <dos.h>
 -
 -#ifdef DJGPP
 -#include <go32.h>
 -#endif
 -
 -#ifdef MGL
 -#include <mgraph.h>
 -#endif
 -
 -#include "GL/DOSmesa.h"
 -#include "context.h"
 -#include "matrix.h"
 -#include "mtypes.h" -
 -#ifdef GLIDE
 -
 -static void glideshutdown( void );
 -#include "vb.h"
 -#include "glide.h"
 -
 -/* the glide modes available, set one */
 -
 -//#define GLIDE_MODE GR_RESOLUTION_
 -#define GLIDE_MODE GR_RESOLUTION_800x600
 -//#define GLIDE_MODE GR_RESOLUTION_640x480
 -
 -static GrVertex gr_vtx,gr_vtx1,gr_vtx2;
 -
 -#endif
 -
 -#ifdef UNIVBE
 -/* You get this file from Scitechs VESA development kit */
 -#include "svga.h"
 -
 -/*
 -   Set these to the VESA mode you require, the first is for 256 colour modes,
 -   the other is High colour modes, they must both be the same XRes and YRes.
 - */
 -
 -#define VESA_256COLOUR_MODE 0x11c
 -#define VESA_HICOLOUR_MODE 0x11f
 -
 -#endif
 -
 -struct DOSmesa_context {
 -   GLcontext *gl_ctx;			/* the core Mesa context */
 -   GLvisual *gl_vis;				/* describes the color buffer */
 -   GLframebuffer *gl_buffer;	/* the ancillary buffers */
 -   GLuint index;					/* current color index */
 -   GLint red, green, blue;		/* current rgb color */
 -   GLint width, height;			/* size of color buffer */
 -   GLint depth;					/* bits per pixel (8,16,24 or 32) */
 -};
 -
 -static DOSMesaContext DOSMesa = NULL;    /* the current context */
 -
 -#ifdef UNIVBE
 -SV_devCtx *DC=NULL;
 -int useLinear = TRUE;
 -SV_modeInfo *mi=NULL;
 -unsigned long modeNumber = 0;
 -
 -int activePage = 0;
 -int visualPage = 1;
 -
 -#endif
 -
 -#if defined(MODE13)
 -
 -/* DOSVGA With no UniVBE support */
 -
 -unsigned char *video_buffer;
 -
 -#define VID_BUF(x,y) *(video_buffer+x+(y*320))
 -
 -#if defined(__WATCOMC__) && defined(__386__) && defined(__DOS__)
 -
 -void setupcopy(void);
 -void copyscr(void);
 -
 -/* Watcom C specfic, screen copy and clear */
 -
 -#pragma aux setupcopy = \
 -	".386P"\
 -	"push ebp" \
 -	"mov esi,video_buffer" \
 -	"mov edi,0xa0000" \
 -	"mov ecx,2000" \
 -	"xor ebp,ebp";
 -
 -#pragma aux copyscr = \
 -	".386P" \
 -	"lop1: mov eax,[esi]"\
 -	"mov ebx,[esi+4]"\
 -	"mov edx,[esi+8]"\
 -	"mov [edi],eax"\
 -	"mov eax,[esi+12]"\
 -	"mov dword ptr [esi],ebp"\
 -	"mov dword ptr [esi+4],ebp"\
 -	"mov dword ptr [esi+8],ebp"\
 -	"mov dword ptr [esi+12],ebp"\
 -	"mov [edi+4],ebx"\
 -	"mov [edi+8],edx"\
 -	"mov [edi+12],eax"\
 -	"mov eax,[esi+16]"\
 -	"mov ebx,[esi+4+16]"\
 -	"mov edx,[esi+8+16]"\
 -	"mov [edi+16],eax"\
 -	"mov eax,[esi+12+16]"\
 -	"mov dword ptr [esi+16],ebp"\
 -	"mov dword ptr [esi+4+16],ebp"\
 -	"mov dword ptr [esi+8+16],ebp"\
 -	"mov dword ptr [esi+12+16],ebp"\
 -	"mov [edi+4+16],ebx"\
 -	"mov [edi+8+16],edx"\
 -	"mov [edi+12+16],eax"\
 -	"add esi,32"\
 -	"add edi,32"\
 -	"dec ecx"\
 -	"jnz lop1"\
 -	"pop ebp"\
 -	modify exact [edi esi eax ebx ecx] ;
 -
 -#endif // WATCOM
 -
 -#endif // MODE13
 -
 -/*
 - * Convert Mesa window Y coordinate to VGA screen Y coordinate:
 - */
 -#define FLIP(Y)  (DOSMesa->height-(Y)-1)
 -
 -unsigned short vga_cindex = 32768 ;
 -
 -static points_func choose_points_function( void );
 -static line_func choose_line_function( void );
 -static triangle_func choose_polygon_function( void );
 -static void fast_tri(GLcontext *ctx,GLuint v0, GLuint v1, GLuint v2, GLuint pv );
 -
 -static points_func choose_points_function( void )
 -{
 -	return NULL;
 -}
 -
 -static line_func choose_line_function( void )
 -{
 -	return NULL;
 -}
 -
 -static triangle_func choose_triangle_function( void )
 -{
 -	#if defined(MODE13)
 -		return	NULL;
 -	#endif
 -
 -	#if defined(GLIDE)
 -		return fast_tri;
 -	#endif
 -
 -	return	NULL;
 -}
 -
 -
 -#if defined(MODE13)
 -
 -void setgfxmode(void);
 -void settextmode(void);
 -
 -#ifndef DJGPP
 -#pragma aux setgfxmode = \
 -	"mov	ax,13h" \
 -	"int	10h" \
 -	modify [eax];
 -
 -#pragma aux settextmode = \
 -	"mov	ax,3h" \
 -	"int	10h" \
 -	modify [eax];
 -#else
 -void setgfxmode(void)
 -{
 -	union REGS in_regs,out_regs;
 -
 -	in_regs.x.ax = 0x13;
 -	int386(0x10,&in_regs,&out_regs);
 -}
 -
 -void settextmode(void)
 -{
 -	union REGS in_regs,out_regs;
 -
 -	in_regs.x.ax = 0x3;
 -	int386(0x10,&in_regs,&out_regs);
 -}
 -
 -#endif
 -
 -int set_video_mode(unsigned short x,unsigned short y,char mode)
 -{
 -	setgfxmode();
 -	return 1;	/* likelyhood of this failing is very small */
 -}
 -
 -void restore_video_mode(void)
 -{
 -	settextmode();
 -}
 -
 -int vga_getcolors(void)
 -{
 -	return vga_cindex;
 -}
 -
 -int vga_getxdim(void)
 -{
 -	return 320;
 -}
 -
 -int vga_getydim(void)
 -{
 -	return 200;
 -}
 -
 -static unsigned short num_rgb_alloc = 1; /* start from 1, zero is black */
 -
 -/* an unlikely colour */
 -static unsigned char last_r=1,last_g=255,last_b=99;
 -
 -extern void set_onecolor(int index,int R,int G,int B);
 -
 -static unsigned char rgbtable[64][64][64];
 -
 -void vga_setrgbcolor(int r,int g,int b)
 -{
 -
 -/*
 - * make this into a translation table
 - */
 -
 -	DOSMesa->red = r;
 -	DOSMesa->green = g ;
 -	DOSMesa->blue = b ;
 -
 -	r/=4; g/=4; b/=4;
 -
 -	if( (r == last_r) && (g == last_g) && (b == last_b) ) return;
 -
 -	last_r = r ;
 -	last_g = g ;
 -	last_b = b ;
 -
 -	if(r+g+b == 0 ) {
 -		DOSMesa->index = 0 ;
 -		return ;
 -	}
 -
 -	if( rgbtable[r][g][b] == 0 ) {
 -		/* not allocated yet */
 -		if(num_rgb_alloc<256) {
 -			DOSMesa->index = num_rgb_alloc;
 -			set_onecolor(num_rgb_alloc,r,g,b);
 -			rgbtable[r][g][b] = num_rgb_alloc;
 -			num_rgb_alloc++;
 -			return;
 -
 -		} else {
 -			/* need to search for a close colour */
 -			{
 -				unsigned short pass ;
 -
 -				for(pass=0;pass<64;pass++) {
 -					if(r-pass>0) {
 -						if( rgbtable[r-pass][g][b] !=0 ) {
 -							rgbtable[r][g][b] = rgbtable[r-pass][g][b];
 -							DOSMesa->index = rgbtable[r-pass][g][b];
 -							return;
 -						}
 -					}
 -					if(r+pass<64) {
 -						if( rgbtable[r+pass][g][b] !=0 ) {
 -							rgbtable[r][g][b] = rgbtable[r+pass][g][b];
 -							DOSMesa->index = rgbtable[r+pass][g][b];
 -							return;
 -						}
 -					}
 -				}
 -			}
 -			rgbtable[r][g][b] = rand()%255;
 -		}
 -	}
 -	DOSMesa->index = rgbtable[r][g][b];
 -}
 -
 -#if defined(DJGPP)
 -static int dos_seg;
 -#endif
 -
 -void vga_clear(void)
 -{
 -
 -/* Check if we`re using watcom and DOS */
 -#if defined(__WATCOMC__) && defined(__386__) && defined(__DOS__)
 -	setupcopy();
 -	copyscr();
 -#else
 -
 -#if defined (DJGPP)
 -
 -
 -	asm ("
 -		pusha
 -		pushw	%es
 -
 -		movw	_dos_seg, %es
 -
 -		movl	_video_buffer, %esi
 -		movl	$0xa0000, %edi
 -
 -		movl	$64000, %ecx
 -
 -		rep	; movsb
 -
 -		popw	%es
 -		popa
 -	");
 -
 -#else
 -
 -	/* copy the RAM buffer to the Video memory */
 -	memcpy((unsigned char *)0xa0000,video_buffer, vga_getxdim()*vga_getydim() );
 -
 -#endif //DJGPP
 -
 -	/* clear the RAM buffer */
 -	memset(video_buffer,0, vga_getxdim()*vga_getydim() );
 -
 -#endif //WATCOMC
 -
 -}
 -
 -#ifndef DEBUG
 -#define vga_drawpixel(x,y) { VID_BUF(x,y) = DOSMesa->index; }
 -#else
 -void vga_drawpixel(x,y)
 -{
 -	VID_BUF(x,y) = DOSMesa->index;
 -}
 -#endif
 -
 -int vga_getpixel(int x,int y)
 -{
 -	return 1;
 -}
 -
 -void vga_flip(void)
 -{
 -
 -}
 -
 -void vga_setcolor(int index)
 -{
 -	/* does something, what i`ve no idea */
 -	DOSMesa->index = index;
 -
 -}
 -
 -#endif
 -
 -#if defined(UNIVBE)
 -
 -/* UniVBE VESA support */
 -
 -void set_video_mode(unsigned short x,unsigned short y,char mode)
 -{
 -	if( setup_vesa_mode(x,y,mode) == FALSE ) {
 -		fprintf(stderr,"VESA: Set mode failed\n");
 -		exit(1);
 -	}
 -}
 -
 -/*
 -   This is problematic as we don`t know what resolution the user program
 -   wants when we reach here. This is why the 256 colour and HiColour modes
 -	should be the same resolution, perhaps i`ll make this an environment
 -	variable
 - */
 -
 -
 -void check_mi(void)
 -{
 -	if(mi!=0) return;
 -
 -	if(DC==NULL) {
 -		DC = SV_init( TRUE );
 -	}
 -
 -	if(modeNumber == 0 ) {
 -		modeNumber = VESA_HICOLOUR_MODE;
 -	}
 -
 -	SV_getModeInfo(modeNumber,mi);
 -
 -	return;
 -}
 -
 -int setup_vesa_mode(short height,short width,short depth)
 -{
 -	if(DC==NULL) {
 -		DC = SV_init( TRUE );
 -		/* how many bits per pixel */
 -		if( depth == 0)
 -			modeNumber = VESA_256COLOUR_MODE;
 -		else
 -			modeNumber = VESA_HICOLOUR_MODE;
 -	}
 -
 -	/* Check if correct VESA Version is available */
 -	if( !DC || DC->VBEVersion < 0x0102) {
 -		fprintf(stderr,"Require a VESA VBE version 1.2 or higher\n");
 -		return FALSE;
 -	}
 -
 -	/* Check for LFB Supprt */
 -	if(DC->VBEVersion < 0x0200 ) {
 -		useLinear = FALSE;
 -	} else {
 -		useLinear = TRUE ;
 -	}
 -
 - 	/* Get desired mode info */
 -   if(!SV_getModeInfo( modeNumber, mi))
 -		return FALSE;
 -
 -	/* Set VESA mode */
 -	if(!SV_setMode(modeNumber | svMultiBuffer, FALSE, TRUE, mi->NumberOfPages) )
 -		return FALSE;
 -
 -	return TRUE;
 -}
 -
 -void restore_video_mode(void)
 -{
 -	SV_restoreMode();
 -}
 -
 -void vga_clear(void)
 -{
 -	SV_clear(0);
 -}
 -
 -void vga_flip(void)
 -{
 -	activePage = 1-activePage;
 -	visualPage = 1-activePage;
 -
 -	SV_setActivePage(activePage);
 -
 -	/*
 -	   Change false to true if you`re getting flickering
 -	   even in double buffer mode, ( sets wait for Vertical retrace  )
 -	*/
 -	SV_setVisualPage(visualPage,false);
 -}
 -
 -int vga_getcolors(void)
 -{
 -	check_mi();
 -	switch ( mi->BitsPerPixel ) {
 -		case 8:
 -			return 256;
 -		case 15:
 -		case 16:
 -			return 32768;
 -		default:
 -			return 64000;
 -	 }
 -}
 -
 -int vga_getxdim(void)
 -{
 -	check_mi();
 -	return mi->XResolution;
 -}
 -
 -int vga_getydim(void)
 -{
 -	check_mi();
 -	return mi->YResolution;
 -}
 -
 -unsigned long current_color = 255;
 -
 -void vga_setrgbcolor(int r,int g,int b)
 -{
 -	DOSMesa->red = r;
 -	DOSMesa->green = g ;
 -	DOSMesa->blue = b ;
 -	current_color = SV_rgbColor(r,g,b);
 -}
 -
 -void vga_setcolor(int index)
 -{
 -	DOSMesa->index = index;
 -	current_color = index;
 -}
 -
 -void vga_drawpixel(x,y)
 -{
 -	SV_putPixel(x,y,current_color);
 -}
 -
 -/* TODO: */
 -int vga_getpixel(x,y)
 -{
 -/*	return (int)SV_getPixel(x,y); */
 -	fprintf(stderr,"vga_getpixel: Not implemented yet\n");
 -	return 1;
 -}
 -
 -/* End of UNIVBE section */
 -#endif
 -
 -/* Scitechs MegaGraphicsLibrary http://www.scitechsoft.com/ */
 -
 -#if defined(MGL)
 -
 -/* MGL support */
 -struct MI {
 -	unsigned short BitsPerPixel;
 -	unsigned long XResolution;
 -	unsigned long YResolution;
 -};
 -
 -struct MI*mi;
 -
 -static MGLDC*DC;
 -static int activePage = 0;
 -static int visualPage = 1;
 -static int modeNumber = 0;
 -
 -void set_video_mode(unsigned short xres,unsigned short yres,char mode)
 -{
 -    int     i,driver = grDETECT,dmode = grDETECT;
 -    event_t evt;
 -
 -	/* Start the MGL with only the SVGA 16m driver active */
 -	MGL_registerDriver(MGL_SVGA16NAME,SVGA16_driver);
 -	if (!MGL_init(&driver,&dmode,"..\\..\\"))
 -		MGL_fatalError(MGL_errorMsg(MGL_result()));
 -	if ((DC = MGL_createDisplayDC(false)) == NULL)
 -		MGL_fatalError(MGL_errorMsg(MGL_result()));
 -	MGL_makeCurrentDC(DC);
 -}
 -
 -/*
 -   This is problematic as we don`t know what resolution the user program
 -   wants when we reach here. This is why the 256 colour and HiColour modes
 -	should be the same resolution, perhaps i`ll make this an environment
 -	variable
 - */
 -
 -#define MGL_HICOLOUR_MODE 0
 -
 -
 -void check_mi(void)
 -{
 -	if(mi!=0) return;
 -
 -	if(DC==NULL) {
 -//		DC = SV_init( TRUE );
 -	}
 -
 -	if(modeNumber == 0 ) {
 -		modeNumber = MGL_HICOLOUR_MODE;
 -	}
 -
 -//	SV_getModeInfo(modeNumber,mi);
 -
 -	return;
 -}
 -
 -void restore_video_mode(void)
 -{
 -	MGL_exit();
 -}
 -
 -void vga_clear(void)
 -{
 -	MGL_clearDevice();
 -}
 -
 -void vga_flip(void)
 -{
 -	activePage = 1-activePage;
 -	visualPage = 1-activePage;
 -
 -//	SV_setActivePage(activePage);
 -
 -	/*
 -	   Change false to true if you`re getting flickering
 -	   even in double buffer mode, ( sets wait for Vertical retrace  )
 -	*/
 -//	SV_setVisualPage(visualPage,false);
 -}
 -
 -int vga_getcolors(void)
 -{
 -	check_mi();
 -	switch ( mi->BitsPerPixel ) {
 -		case 8:
 -			return 256;
 -		case 15:
 -		case 16:
 -			return 32768;
 -		default:
 -			return 64000;
 -	 }
 -}
 -
 -int vga_getxdim(void)
 -{
 -	check_mi();
 -	return mi->XResolution;
 -}
 -
 -int vga_getydim(void)
 -{
 -	check_mi();
 -	return mi->YResolution;
 -}
 -
 -unsigned long current_color = 255;
 -
 -void vga_setrgbcolor(int r,int g,int b)
 -{
 -	DOSMesa->red = r;
 -	DOSMesa->green = g ;
 -	DOSMesa->blue = b ;
 -	current_color = MGL_rgbColor(DC,r,g,b);
 -}
 -
 -void vga_setcolor(int index)
 -{
 -	DOSMesa->index = index;
 -	current_color = index;
 -}
 -
 -void vga_drawpixel(x,y)
 -{
 -	MGL_pixelCoord(x,y);
 -}
 -
 -/* TODO: */
 -int vga_getpixel(x,y)
 -{
 -/*	return (int)SV_getPixel(x,y); */
 -	fprintf(stderr,"vga_getpixel: Not implemented yet\n");
 -	return 1;
 -}
 -
 -/* End of UNIVBE section */
 -#endif
 -
 -#ifdef GLIDE
 -
 -/* GLIDE support */
 -
 -static GrHwConfiguration hwconfig;
 -
 -void set_video_mode(unsigned short x,unsigned short y,char mode)
 -{
 -	grGlideInit();
 -	if( grSstQueryHardware( &hwconfig ) ) {
 -		grSstSelect( 0 ) ;
 -		if( !grSstOpen( GLIDE_MODE,
 -							GR_REFRESH_60Hz,
 -							GR_COLORFORMAT_ABGR,
 -							GR_ORIGIN_UPPER_LEFT,
 -							GR_SMOOTHING_ENABLE,
 -							2 ) ) {
 -			fprintf(stderr,"Detected 3DFX board, but couldn`t initialize!");
 -			exit(1);
 -		}
 -
 -		grBufferClear( 0, 0, GR_WDEPTHVALUE_FARTHEST);
 -
 -		grDisableAllEffects();
 -		atexit( glideshutdown );
 -
 -//		guColorCombineFunction( GR_COLORCOMBINE_ITRGB );
 -//		grTexCombineFunction( GR_TMU0, GR_TEXTURECOMBINE_ZERO);
 -	}
 -}
 -
 -void restore_video_mode(void)
 -{
 -}
 -
 -static void glideshutdown( void )
 -{
 -	grGlideShutdown() ;
 -}
 -
 -void vga_clear(void)
 -{
 -	grBufferSwap(0);
 -	grBufferClear( 0, 0, GR_WDEPTHVALUE_FARTHEST);
 -}
 -
 -void vga_flip(void)
 -{
 -}
 -
 -int vga_getcolors(void)
 -{
 -	return 32768;
 -}
 -
 -int vga_getxdim(void)
 -{
 -#if GLIDE_MODE == GR_RESOLUTION_800x600
 -		return 800;
 -#else
 -		return 640;
 -#endif
 -}
 -
 -int vga_getydim(void)
 -{
 -#if GLIDE_MODE == GR_RESOLUTION_800x600
 -		return 600;
 -#else
 -		return 480;
 -#endif
 -}
 -
 -unsigned long current_color = 255;
 -
 -void vga_setrgbcolor(int r,int g,int b)
 -{
 -	DOSMesa->red = r;
 -	DOSMesa->green = g ;
 -	DOSMesa->blue = b ;
 -}
 -
 -void vga_setcolor(int index)
 -{
 -	DOSMesa->index = index;
 -}
 -
 -void vga_drawpixel(x,y)
 -{
 -
 -	gr_vtx.x = x;
 -	gr_vtx.y = y;
 -	gr_vtx.z = 0;
 -	gr_vtx.r	= DOSMesa->red;
 -	gr_vtx.g	= DOSMesa->green;
 -	gr_vtx.b	= DOSMesa->blue;
 -
 -	grDrawPoint( &gr_vtx );
 -}
 -
 -static void fast_tri(GLcontext *ctx,GLuint v0, GLuint v1, GLuint v2, GLuint pv )
 -{
 -   struct vertex_buffer *VB = ctx->VB;
 -
 -	gr_vtx.z = 0;
 -	gr_vtx1.z = 0;
 -	gr_vtx2.z = 0;
 -
 -   if (VB->MonoColor) {
 -	  	gr_vtx.r = DOSMesa->red;
 -   	gr_vtx.g = DOSMesa->green;
 -   	gr_vtx.b = DOSMesa->blue;
 -   	gr_vtx1.r = DOSMesa->red;
 -   	gr_vtx1.g = DOSMesa->green;
 -   	gr_vtx1.b = DOSMesa->blue;
 -   	gr_vtx2.r = DOSMesa->red;
 -   	gr_vtx2.g = DOSMesa->green;
 -   	gr_vtx2.b = DOSMesa->blue;
 -   } else {
 -		if(ctx->Light.ShadeModel == GL_SMOOTH ) {
 -		  	gr_vtx.r  = FixedToInt( VB->Color[v0][0] );
 -		  	gr_vtx.g  = FixedToInt( VB->Color[v0][1] );
 -		  	gr_vtx.b  = FixedToInt( VB->Color[v0][2] );
 -
 -		  	gr_vtx1.r = FixedToInt( VB->Color[v1][0] );
 -		  	gr_vtx1.g = FixedToInt( VB->Color[v1][1] );
 -		  	gr_vtx1.b = FixedToInt( VB->Color[v1][2] );
 -
 -		  	gr_vtx2.r = FixedToInt( VB->Color[v2][0] );
 -		  	gr_vtx2.g = FixedToInt( VB->Color[v2][1] );
 -		  	gr_vtx2.b = FixedToInt( VB->Color[v2][2] );
 -		} else {
 -		  	gr_vtx.r  = VB->Color[pv][0];
 -		  	gr_vtx.g  = VB->Color[pv][1];
 -		  	gr_vtx.b  = VB->Color[pv][2];
 -
 -		  	gr_vtx1.r = VB->Color[pv][0];
 -		  	gr_vtx1.g = VB->Color[pv][1];
 -		  	gr_vtx1.b = VB->Color[pv][2];
 -
 -		  	gr_vtx2.r = VB->Color[pv][0];
 -		  	gr_vtx2.g = VB->Color[pv][1];
 -		  	gr_vtx2.b = VB->Color[pv][2];
 -		}
 -	}
 -
 -   gr_vtx.x  =       (VB->Win[v0][0] );
 -   gr_vtx.y  = FLIP( (VB->Win[v0][1] ) );
 -   gr_vtx1.x =       (VB->Win[v1][0] );
 -   gr_vtx1.y = FLIP( (VB->Win[v1][1] ) );
 -   gr_vtx2.x =       (VB->Win[v2][0] );
 -   gr_vtx2.y = FLIP( (VB->Win[v2][1] ) );
 -
 -	if(gr_vtx.x <0 || gr_vtx.x > 639 )
 -		return;
 -	if(gr_vtx1.x <0 || gr_vtx1.x > 639 )
 -		return;
 -	if(gr_vtx2.x <0 || gr_vtx2.x > 639 )
 -		return;
 -
 -	if(gr_vtx.y <0 || gr_vtx.y > 479 )
 -		return;
 -	if(gr_vtx1.y <0 || gr_vtx1.y > 479 )
 -		return;
 -	if(gr_vtx2.y <0 || gr_vtx2.y > 479 )
 -		return;
 -
 -	grDrawTriangle( &gr_vtx,&gr_vtx1,&gr_vtx2);
 -}
 -
 -void fast_plot(GLcontext *ctx,GLuint first,GLuint last )
 -{
 -	struct vertex_buffer *VB = ctx->VB;
 -	register GLuint i;
 -
 -	if(VB->MonoColor) {
 -		/* all same color */
 -
 -		gr_vtx.r = DOSMesa->red;
 -		gr_vtx.g = DOSMesa->green;
 -		gr_vtx.b = DOSMesa->blue;
 -
 -		for(i=first;i<last;i++) {
 -			if(VB->ClipMask[i]==0) {
 -				gr_vtx.x = VB->Win[i][0];
 -				gr_vtx.y = FLIP(VB->Win[i][1]);
 -			}
 -		}
 -	}
 -}
 -
 -/* TODO: */
 -int vga_getpixel(x,y)
 -{
 -/*	return (int)SV_getPixel(x,y); */
 -	fprintf(stderr,"vga_getpixel: Not implemented yet\n");
 -	return 1;
 -}
 -
 -/* End of GLIDE section */
 -
 -#endif // GLIDE
 -/**********************************************************************/
 -/*****                 Miscellaneous functions                    *****/
 -/**********************************************************************/
 -
 -
 -static void get_buffer_size( GLcontext *ctx, GLuint *width, GLuint *height )
 -{
 -   *width = DOSMesa->width = vga_getxdim();
 -   *height = DOSMesa->height = vga_getydim();
 -}
 -
 -
 -/* Set current color index */
 -static void set_index( GLcontext *ctx, GLuint index )
 -{
 -   DOSMesa->index = index;
 -   /*vga_setcolor( index );*/
 -}
 -
 -
 -/* Set current drawing color */
 -static void set_color( GLcontext *ctx,
 -                       GLubyte red, GLubyte green,
 -                       GLubyte blue, GLubyte alpha )
 -{
 -   DOSMesa->red = red;
 -   DOSMesa->green = green;
 -   DOSMesa->blue = blue;
 -   vga_setrgbcolor( red, green, blue );
 -}
 -
 -
 -static void clear_index( GLcontext *ctx, GLuint index )
 -{
 -   /* TODO: Implements glClearIndex() */
 -}
 -
 -
 -static void clear_color( GLcontext *ctx,
 -                         GLubyte red, GLubyte green,
 -                         GLubyte blue, GLubyte alpha )
 -{
 -   /* TODO: Implements glClearColor() */
 -}
 -
 -
 -static void clear( GLcontext *ctx,
 -                   GLboolean all,
 -                   GLint x, GLint y, GLint width, GLint height )
 -{
 -   vga_clear();
 -}
 -
 -
 -static GLboolean set_buffer( GLcontext *ctx,
 -                             GLenum mode )
 -{
 -   /* TODO: implement double buffering and use this function to select */
 -   /* between front and back buffers. */
 -   if (buffer == GL_FRONT_LEFT)
 -      return GL_TRUE;
 -   else if (buffer == GL_BACK_LEFT)
 -      return GL_TRUE;
 -   else
 -      return GL_FALSE;
 -}
 -
 -
 -
 -
 -/**********************************************************************/
 -/*****            Write spans of pixels                           *****/
 -/**********************************************************************/
 -
 -
 -static void write_index_span( GLcontext *ctx,
 -                              GLuint n, GLint x, GLint y,
 -                              const GLuint index[],
 -                              const GLubyte mask[] )
 -{
 -   int i;
 -   y = FLIP(y);
 -#ifdef UNIVBE
 -	SV_beginPixel();
 -#endif
 -   for (i=0;i<n;i++,x++) {
 -      if (mask[i]) {
 -#ifdef UNIVBE
 -		SV_putPixelFast(x,y,current_color);
 -#else
 -         vga_setcolor( index[i] );
 -         vga_drawpixel( x, y );
 -#endif
 -      }
 -   }
 -
 -#ifdef UNIVBE
 -	SV_endPixel();
 -#endif
 -
 -}
 -
 -
 -
 -static void write_monoindex_span( GLcontext *ctx,
 -                                  GLuint n, GLint x, GLint y,
 -                                  const GLubyte mask[] )
 -{
 -   int i;
 -   y = FLIP(y);
 -   /* use current color index */
 -   vga_setcolor( DOSMesa->index );
 -#ifdef UNIVBE
 -	SV_beginPixel();
 -#endif
 -   for (i=0;i<n;i++,x++) {
 -      if (mask[i]) {
 -#ifdef UNIVBE
 -			SV_putPixelFast(x,y,current_color);
 -#else
 -         vga_drawpixel( x, y );
 -#endif
 -      }
 -   }
 -#ifdef UNIVBE
 -	SV_endPixel();
 -#endif
 -}
 -
 -
 -
 -static void write_color_span( GLcontext *ctx,
 -                              GLuint n, GLint x, GLint y,
 -                              const GLubyte red[], const GLubyte green[],
 -                              const GLubyte blue[], const GLubyte alpha[],
 -                              const GLubyte mask[] )
 -{
 -   int i;
 -   y=FLIP(y);
 -#ifdef UNIVBE
 -	SV_beginPixel();
 -#endif
 -   if (mask) {
 -      /* draw some pixels */
 -      for (i=0; i<n; i++, x++) {
 -         if (mask[i]) {
 -#ifdef UNIVBE
 -				SV_putPixelFast(x,y,SV_rgbColor(red[i], green[i], blue[i]) );
 -#else
 -            vga_setrgbcolor( red[i], green[i], blue[i] );
 -            vga_drawpixel( x, y );
 -#endif
 -         }
 -      }
 -   }
 -   else {
 -      /* draw all pixels */
 -      for (i=0; i<n; i++, x++) {
 -#ifdef UNIVBE
 -			SV_putPixelFast(x,y,SV_rgbColor(red[i], green[i], blue[i]) );
 -#else
 -         vga_setrgbcolor( red[i], green[i], blue[i] );
 -         vga_drawpixel( x, y );
 -#endif
 -      }
 -   }
 -#ifdef UNIVBE
 -	SV_endPixel();
 -#endif
 -}
 -
 -
 -
 -static void write_monocolor_span( GLcontext *ctx,
 -                                  GLuint n, GLint x, GLint y,
 -                                  const GLubyte mask[])
 -{
 -   int i;
 -   y=FLIP(y);
 -#ifdef UNIVBE
 -	SV_beginPixel();
 -#endif
 -   /* use current rgb color */
 -   vga_setrgbcolor( DOSMesa->red, DOSMesa->green, DOSMesa->blue );
 -   for (i=0; i<n; i++, x++) {
 -      if (mask[i]) {
 -#ifdef UNIVBE
 -			SV_putPixelFast(x,y,current_color);
 -#else
 -         vga_drawpixel( x, y );
 -#endif
 -      }
 -   }
 -#ifdef UNIVBE
 -	SV_endPixel();
 -#endif
 -}
 -
 -
 -
 -/**********************************************************************/
 -/*****                 Read spans of pixels                       *****/
 -/**********************************************************************/
 -
 -
 -static void read_index_span( GLcontext *ctx,
 -                             GLuint n, GLint x, GLint y, GLuint index[])
 -{
 -   int i;
 -   y = FLIP(y);
 -   for (i=0; i<n; i++,x++) {
 -      index[i] = vga_getpixel( x, y );
 -   }
 -}
 -
 -
 -
 -static void read_color_span( GLcontext *ctx,
 -                             GLuint n, GLint x, GLint y,
 -                             GLubyte red[], GLubyte green[],
 -                             GLubyte blue[], GLubyte alpha[] )
 -{
 -   int i;
 -   for (i=0; i<n; i++, x++) {
 -      /* TODO */
 -   }
 -}
 -
 -
 -
 -/**********************************************************************/
 -/*****                  Write arrays of pixels                    *****/
 -/**********************************************************************/
 -
 -
 -static void write_index_pixels( GLcontext *ctx,
 -                                GLuint n, const GLint x[], const GLint y[],
 -                                const GLuint index[], const GLubyte mask[] )
 -{
 -   int i;
 -#ifdef UNIVBE
 -	SV_beginPixel();
 -#endif
 -   for (i=0; i<n; i++) {
 -      if (mask[i]) {
 -#ifdef UNIVBE
 -			SV_putPixelFast(x[i], FLIP(y[i]), index[i] );
 -#else
 -         vga_setcolor( index[i] );
 -         vga_drawpixel( x[i], FLIP(y[i]) );
 -#endif
 -      }
 -   }
 -#ifdef UNIVBE
 -	SV_endPixel();
 -#endif
 -}
 -
 -
 -
 -static void write_monoindex_pixels( GLcontext *ctx,
 -                                    GLuint n,
 -                                    const GLint x[], const GLint y[],
 -                                    const GLubyte mask[] )
 -{
 -   int i;
 -   /* use current color index */
 -   vga_setcolor( DOSMesa->index );
 -#ifdef UNIVBE
 -	SV_beginPixel();
 -#endif
 -   for (i=0; i<n; i++) {
 -      if (mask[i]) {
 -#ifdef UNIVBE
 -			SV_putPixelFast(x[i], FLIP(y[i]), DOSMesa->index);
 -#else
 -         vga_drawpixel( x[i], FLIP(y[i]) );
 -#endif
 -      }
 -   }
 -#ifdef UNIVBE
 -	SV_endPixel();
 -#endif
 -}
 -
 -
 -
 -static void write_color_pixels( GLcontext *ctx,
 -                                GLuint n, const GLint x[], const GLint y[],
 -                                const GLubyte r[], const GLubyte g[],
 -                                const GLubyte b[], const GLubyte a[],
 -                                const GLubyte mask[] )
 -{
 -   int i;
 -#ifdef UNIVBE
 -	SV_beginPixel();
 -#endif
 -   for (i=0; i<n; i++) {
 -      if (mask[i]) {
 -#ifdef UNIVBE
 -			SV_putPixelFast(x[i], FLIP(y[i]), SV_rgbColor(r[i], g[i], b[i]) );
 -#else
 -         vga_setrgbcolor( r[i], g[i], b[i] );
 -         vga_drawpixel( x[i], FLIP(y[i]) );
 -#endif
 -      }
 -   }
 -#ifdef UNIVBE
 -	SV_endPixel();
 -#endif
 -}
 -
 -static void write_monocolor_pixels( GLcontext *ctx,
 -                                    GLuint n,
 -                                    const GLint x[], const GLint y[],
 -                                    const GLubyte mask[] )
 -{
 -   int i;
 -   /* use current rgb color */
 -   vga_setrgbcolor( DOSMesa->red, DOSMesa->green, DOSMesa->blue );
 -#ifdef UNIVBE
 -	SV_beginPixel();
 -#endif
 -   for (i=0; i<n; i++) {
 -      if (mask[i]) {
 -#ifdef UNIVBE
 -			SV_putPixelFast(x[i], FLIP(y[i]), current_color );
 -#else
 -         vga_drawpixel( x[i], FLIP(y[i]) );
 -#endif
 -      }
 -   }
 -#ifdef UNIVBE
 -	SV_endPixel();
 -#endif
 -}
 -
 -/**********************************************************************/
 -/*****                   Read arrays of pixels                    *****/
 -/**********************************************************************/
 -
 -/* Read an array of color index pixels. */
 -static void read_index_pixels( GLcontext *ctx,
 -                               GLuint n, const GLint x[], const GLint y[],
 -                               GLuint index[], const GLubyte mask[] )
 -{
 -   int i;
 -   for (i=0; i<n; i++) {
 -      index[i] = vga_getpixel( x[i], FLIP(y[i]) );
 -   }
 -}
 -
 -
 -
 -static void read_color_pixels( GLcontext *ctx,
 -                               GLuint n, const GLint x[], const GLint y[],
 -                               GLubyte red[], GLubyte green[],
 -                               GLubyte blue[], GLubyte alpha[],
 -                               const GLubyte mask[] )
 -{
 -   /* TODO */
 -}
 -
 -static void DOSmesa_setup_DD_pointers( GLcontext *ctx )
 -{
 -   /* Initialize all the pointers in the DD struct.  Do this whenever */
 -   /* a new context is made current or we change buffers via set_buffer! */
 -
 -   ctx->Driver.UpdateState = DOSmesa_setup_DD_pointers;
 -
 -   ctx->Driver.ClearIndex = clear_index;
 -   ctx->Driver.ClearColor = clear_color;
 -   ctx->Driver.Clear = clear;
 -
 -   ctx->Driver.Index = set_index;
 -   ctx->Driver.Color = set_color;
 -
 -   ctx->Driver.SetBuffer = set_buffer;
 -   ctx->Driver.GetBufferSize = get_buffer_size;
 -
 -   ctx->Driver.PointsFunc = choose_points_function();
 -   ctx->Driver.LineFunc = choose_line_function();
 -   ctx->Driver.TriangleFunc = choose_triangle_function();
 -
 -
 -   /* Pixel/span writing functions: */
 -   /* TODO: use different funcs for 8, 16, 32-bit depths */
 -   ctx->Driver.WriteColorSpan       = write_color_span;
 -   ctx->Driver.WriteMonocolorSpan   = write_monocolor_span;
 -   ctx->Driver.WriteColorPixels     = write_color_pixels;
 -   ctx->Driver.WriteMonocolorPixels = write_monocolor_pixels;
 -   ctx->Driver.WriteIndexSpan       = write_index_span;
 -   ctx->Driver.WriteMonoindexSpan   = write_monoindex_span;
 -   ctx->Driver.WriteIndexPixels     = write_index_pixels;
 -   ctx->Driver.WriteMonoindexPixels = write_monoindex_pixels;
 -
 -   /* Pixel/span reading functions: */
 -   /* TODO: use different funcs for 8, 16, 32-bit depths */
 -   ctx->Driver.ReadIndexSpan = read_index_span;
 -   ctx->Driver.ReadColorSpan = read_color_span;
 -   ctx->Driver.ReadIndexPixels = read_index_pixels;
 -   ctx->Driver.ReadColorPixels = read_color_pixels;
 -}
 -
 -/*
 - * Create a new VGA/Mesa context and return a handle to it.
 - */
 -DOSMesaContext DOSMesaCreateContext( void )
 -{
 -   DOSMesaContext ctx;
 -   GLboolean rgb_flag;
 -   GLfloat redscale, greenscale, bluescale, alphascale;
 -   GLboolean db_flag = GL_FALSE;
 -   GLboolean alpha_flag = GL_FALSE;
 -   int colors;
 -   GLint index_bits;
 -   GLint redbits, greenbits, bluebits, alphabits;
 -
 -#if !defined(UNIVBE) && !defined(GLIDE) && !defined(MGL)
 -	video_buffer = (unsigned char *) malloc( vga_getxdim() * vga_getydim() );
 -
 -	memset(video_buffer,0, vga_getxdim() * vga_getydim() );
 -
 -	memset(rgbtable,0,sizeof( rgbtable ) );
 -#endif
 -
 -#if defined( DJGPP ) && !defined(UNIVBE) && !defined(GLIDE)
 -	dos_seg = _go32_conventional_mem_selector();
 -#endif
 -
 -   /* determine if we're in RGB or color index mode */
 -   colors = vga_getcolors();
 -   if (colors==32768) {
 -      rgb_flag = GL_TRUE;
 -      redscale = greenscale = bluescale = alphascale = 255.0;
 -      redbits = greenbits = bluebits = 8;
 -      alphabits = 0;
 -      index_bits = 0;
 -   }
 -   else if (colors==256) {
 -      rgb_flag = GL_FALSE;
 -      redscale = greenscale = bluescale = alphascale = 0.0;
 -      redbits = greenbits = bluebits = alphabits = 0;
 -      index_bits = 8;
 -   }
 -   else {
 -		restore_video_mode();
 -      fprintf(stderr,"[%d] >16 bit color not implemented yet!\n",colors);
 -      return NULL;
 -   }
 -
 -   ctx = (DOSMesaContext) calloc( 1, sizeof(struct DOSmesa_context) );
 -   if (!ctx) {
 -      return NULL;
 -   }
 -
 -   ctx->gl_vis = _mesa_create_visual( rgb_flag,
 -                                      db_flag,
 -                                      GL_FALSE, /* stereo */
 -                                      redbits,
 -                                      greenbits,
 -                                      bluebits,
 -                                      alphabits,
 -                                      index_bits,
 -                                      16,   /* depth_size */
 -                                      8,    /* stencil_size */
 -                                      16, 16, 16, 16,  /* accum_size */
 -                                      1 ); -
 -   ctx->gl_ctx = _mesa_create_context( ctx->gl_vis,
 -                                    NULL,  /* share list context */
 -                                    (void *) ctx
 -                                  );
 -
 -   ctx->gl_buffer = _mesa_create_framebuffer( ctx->gl_vis );
 -
 -   ctx->index = 1;
 -   ctx->red = ctx->green = ctx->blue = 255;
 -
 -   ctx->width = ctx->height = 0;  /* temporary until first "make-current" */
 -
 -   return ctx;
 -}
 -
 -/*
 - * Destroy the given VGA/Mesa context.
 - */
 -void DOSMesaDestroyContext( DOSMesaContext ctx )
 -{
 -   if (ctx) {
 -      _mesa_destroy_visual( ctx->gl_vis );
 -      _mesa_destroy_context( ctx->gl_ctx );
 -      _mesa_destroy_framebuffer( ctx->gl_buffer );
 -      free( ctx );
 -      if (ctx==DOSMesa) {
 -         DOSMesa = NULL;
 -      }
 -   }
 -}
 -
 -
 -
 -/*
 - * Make the specified VGA/Mesa context the current one.
 - */
 -void DOSMesaMakeCurrent( DOSMesaContext ctx )
 -{
 -   DOSMesa = ctx;
 -   _mesa_make_current( ctx->gl_ctx, ctx->gl_buffer );
 -   DOSmesa_setup_DD_pointers( ctx->gl_ctx );
 -
 -   if (ctx->width==0 || ctx->height==0) {
 -      /* setup initial viewport */
 -      ctx->width = vga_getxdim();
 -      ctx->height = vga_getydim();
 -      _mesa_set_viewport( ctx->gl_ctx, 0, 0, ctx->width, ctx->height );
 -   }
 -}
 -
 -
 -
 -/*
 - * Return a handle to the current VGA/Mesa context.
 - */
 -DOSMesaContext DOSMesaGetCurrentContext( void )
 -{
 -   return DOSMesa;
 -}
 -
 -
 -/*
 - * Swap front/back buffers for current context if double buffered.
 - */
 -void DOSMesaSwapBuffers( void )
 -{
 -#if !defined(UNIVBE)
 -/* Assume double buffering is available if in UNIVBE,
 -   if it isn`t its taken care of anyway */
 -//   if (DOSMesa->gl_vis->DBflag)
 -#endif
 - 	{
 -      vga_flip();
 -   }
 -}
 -
 -
 -#else
 -
 -/*
 - * Need this to provide at least one external definition when DOS is
 - * not defined on the compiler command line.
 - */
 -
 -int gl_DOS_dummy_function(void)
 -{
 -   return 0;
 -}
 -
 -#endif  /*DOS*/
 -
 | 
