VESA BIOS support update in syscons.

- Accept generic video mode names: 80x25, 80x30, etc. Specific video
  mode names, VGA_80x25, VESA_132x25, are still accpeted too.
- Update the man page accordingly.
This commit is contained in:
Kazutaka YOKOTA 1998-09-23 10:00:15 +00:00
parent 95bafc8f5a
commit cb1d2924c4
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=39592
2 changed files with 65 additions and 36 deletions

View File

@ -11,7 +11,7 @@
.\" documentation and/or other materials provided with the distribution. .\" documentation and/or other materials provided with the distribution.
.\" .\"
.\" @(#)vidcontrol.1 .\" @(#)vidcontrol.1
.\" $Id: vidcontrol.1,v 1.12 1997/10/27 07:52:08 charnier Exp $ .\" $Id: vidcontrol.1,v 1.13 1998/09/15 18:16:39 sos Exp $
.\" .\"
.Dd May 22, 1994 .Dd May 22, 1994
.Dt VIDCONTROL 1 .Dt VIDCONTROL 1
@ -45,20 +45,39 @@ such as video mode, colors, cursors, scrnmaps, font and screensaver timeout.
The following command line options are supported: The following command line options are supported:
.Bl -tag -width indent .Bl -tag -width indent
.It mode .It mode
Select a new video mode. The modes currently supported are: Select a new video mode. The modes currently recognized are:
.Ar 40x25 ,
.Ar 80x25 ,
.Ar 80x30 ,
.Ar 80x43 ,
.Ar 80x50 ,
.Ar 80x60 ,
.Ar 132x25 ,
.Ar 132x30 ,
.Ar 132x43 ,
.Ar 132x50 ,
.Ar 132x60 ,
.Ar VGA_40x25 , .Ar VGA_40x25 ,
.Ar VGA_80x25 , .Ar VGA_80x25 ,
.Ar VGA_80x30 ,
.Ar VGA_80x50 , .Ar VGA_80x50 ,
.Ar VGA_80x60 ,
.Ar EGA_80x25 , .Ar EGA_80x25 ,
.Ar EGA_80x43 . .Ar EGA_80x43 ,
On some laptops the modes .Ar VESA_132x25 ,
.Ar VGA_80x30 .Ar VESA_132x30 ,
and .Ar VESA_132x43 ,
.Ar VGA_80x60 .Ar VESA_132x50 ,
can be used. .Ar VESA_132x60 .
The graphic mode The graphic mode
.Ar VGA_320x200 .Ar VGA_320x200
and
.Ar VESA_800x600
can also be chosen. can also be chosen.
Note that not all modes listed above may be supported by the video
hardware, and that the VESA BIOS support must be linked to the kernel
or loaded as a LKM if you wish to use VESA video modes or
132 column modes.
.It fgcol Op bgcol .It fgcol Op bgcol
Change colors when displaying text. Specify the foreground color Change colors when displaying text. Specify the foreground color
(e.g. "vidcontrol white"), or both a foreground & background color (e.g. "vidcontrol white"), or both a foreground & background color

View File

@ -28,7 +28,7 @@
#ifndef lint #ifndef lint
static const char rcsid[] = static const char rcsid[] =
"$Id: vidcontrol.c,v 1.20 1998/09/15 18:16:39 sos Exp $"; "$Id: vidcontrol.c,v 1.21 1998/09/16 13:55:26 abial Exp $";
#endif /* not lint */ #endif /* not lint */
#include <ctype.h> #include <ctype.h>
@ -258,37 +258,47 @@ set_cursor_type(char *appearence)
void void
video_mode(int argc, char **argv, int *index) video_mode(int argc, char **argv, int *index)
{ {
static struct {
char *name;
unsigned long mode;
} modes[] = {
{ "80x25", SW_TEXT_80x25 },
{ "80x30", SW_TEXT_80x30 },
{ "80x43", SW_TEXT_80x43 },
{ "80x50", SW_TEXT_80x50 },
{ "80x60", SW_TEXT_80x60 },
{ "132x25", SW_TEXT_132x25 },
{ "132x30", SW_TEXT_132x30 },
{ "132x43", SW_TEXT_132x43 },
{ "132x50", SW_TEXT_132x50 },
{ "132x60", SW_TEXT_132x60 },
{ "VGA_40x25", SW_VGA_C40x25 },
{ "VGA_80x25", SW_VGA_C80x25 },
{ "VGA_80x30", SW_VGA_C80x30 },
{ "VGA_80x50", SW_VGA_C80x50 },
{ "VGA_80x60", SW_VGA_C80x60 },
{ "VGA_320x200", SW_VGA_CG320 },
{ "EGA_80x25", SW_ENH_C80x25 },
{ "EGA_80x43", SW_ENH_C80x43 },
{ "VESA_132x25", SW_VESA_C132x25 },
{ "VESA_132x43", SW_VESA_C132x43 },
{ "VESA_132x50", SW_VESA_C132x50 },
{ "VESA_132x60", SW_VESA_C132x60 },
{ "VESA_800x600", SW_VESA_800x600 },
{ NULL },
};
unsigned long mode; unsigned long mode;
int size[3]; int size[3];
int i;
if (*index < argc) { if (*index < argc) {
if (!strcmp(argv[*index], "VGA_40x25")) for (i = 0; modes[i].name != NULL; ++i) {
mode = SW_VGA_C40x25; if (!strcmp(argv[*index], modes[i].name)) {
else if (!strcmp(argv[*index], "VGA_80x25")) mode = modes[i].mode;
mode = SW_VGA_C80x25; break;
else if (!strcmp(argv[*index], "VGA_80x30")) }
mode = SW_VGA_C80x30; }
else if (!strcmp(argv[*index], "VGA_80x50")) if (modes[i].name == NULL)
mode = SW_VGA_C80x50;
else if (!strcmp(argv[*index], "VGA_80x60"))
mode = SW_VGA_C80x60;
else if (!strcmp(argv[*index], "VGA_320x200"))
mode = SW_VGA_CG320;
else if (!strcmp(argv[*index], "EGA_80x25"))
mode = SW_ENH_C80x25;
else if (!strcmp(argv[*index], "EGA_80x43"))
mode = SW_ENH_C80x43;
else if (!strcmp(argv[*index], "VESA_132x25"))
mode = SW_VESA_C132x25;
else if (!strcmp(argv[*index], "VESA_132x43"))
mode = SW_VESA_C132x43;
else if (!strcmp(argv[*index], "VESA_132x50"))
mode = SW_VESA_C132x50;
else if (!strcmp(argv[*index], "VESA_132x60"))
mode = SW_VESA_C132x60;
else if (!strcmp(argv[*index], "VESA_800x600"))
mode = SW_VESA_800x600;
else
return; return;
if (ioctl(0, mode, NULL) < 0) if (ioctl(0, mode, NULL) < 0)
warn("cannot set videomode"); warn("cannot set videomode");