--- ray/src/rt/vga.c 1992/10/08 16:19:30 2.2 +++ ray/src/rt/vga.c 1997/11/11 20:03:01 2.7 @@ -8,7 +8,7 @@ static char SCCSid[] = "$SunId$ LBL"; * vga.c - driver for VGA graphics adaptor under MS-DOS */ -#include +#include "standard.h" #include @@ -38,18 +38,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 +76,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 +90,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 */ }