--- ray/src/rt/vga.c 1992/10/08 16:19:30 2.2 +++ ray/src/rt/vga.c 2003/02/25 02:47:23 2.9 @@ -1,15 +1,14 @@ -/* Copyright (c) 1992 Regents of the University of California */ - #ifndef lint -static char SCCSid[] = "$SunId$ LBL"; +static const char RCSid[] = "$Id: vga.c,v 2.9 2003/02/25 02:47:23 greg Exp $"; #endif - /* * vga.c - driver for VGA graphics adaptor under MS-DOS */ -#include +#include "copyright.h" +#include "standard.h" + #include #include "driver.h" @@ -38,18 +37,20 @@ struct driver * vga_init(name, id) /* open VGA */ char *name, *id; { - static short mode_pref[] = {_XRES256COLOR, _SVRES256COLOR, - _MRES256COLOR, -1}; + static short mode_pref[] = {_MRES256COLOR, -1}; + static short smode_pref[] = {_XRES256COLOR, _SVRES256COLOR, + _VRES256COLOR, _MRES256COLOR, -1}; char *ep; - register int i; + register short *mp; - for (i = 0; mode_pref[i] != -1; i++) - if (_setvideomode(mode_pref[i])) + mp = !strcmp(name, "vga") ? mode_pref : smode_pref; + for ( ; *mp != -1; mp++) + if (_setvideomode(*mp)) break; - if (mode_pref[i] == -1) { + if (*mp == -1) { _setvideomode(_DEFAULTMODE); - stderr_v(name); - stderr_v(": card not present or insufficient VGA memory\n"); + eputs(name); + eputs(": card not present or insufficient VGA memory\n"); return(NULL); } _getvideoconfig(&config); @@ -74,10 +75,13 @@ char *name, *id; _remappalette(1, _BRIGHTWHITE); _settextcolor(1); ms_gcinit(&vga_driver); - errvec = vga_errout; - cmdvec = vga_comout; - if (wrnvec != NULL) - wrnvec = vga_comout; + erract[USER].pf = + erract[SYSTEM].pf = + erract[INTERNAL].pf = + erract[CONSISTENCY].pf = vga_errout; + erract[COMMAND].pf = vga_comout; + if (erract[WARNING].pf != NULL) + erract[WARNING].pf = vga_comout; return(&vga_driver); } @@ -85,13 +89,17 @@ char *name, *id; static vga_close() /* close VGA */ { + ms_gcdone(&vga_driver); _setvideomode(_DEFAULTMODE); - errvec = stderr_v; /* reset error vectors */ - cmdvec = NULL; - if (wrnvec != NULL) - wrnvec = stderr_v; + erract[USER].pf = /* reset error vector */ + erract[SYSTEM].pf = + erract[INTERNAL].pf = + erract[CONSISTENCY].pf = eputs; + erract[COMMAND].pf = NULL; + if (erract[WARNING].pf != NULL) + erract[WARNING].pf = wputs; if (fatalerr[0]) - stderr_v(fatalerr); /* repeat error message */ + eputs(fatalerr); /* repeat error message */ }