Deleted Added
full compact
vidcontrol.c (43186) vidcontrol.c (48105)
1/*-
2 * Copyright (c) 1994-1996 S�ren Schmidt
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 14 unchanged lines hidden (view full) ---

23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef lint
30static const char rcsid[] =
1/*-
2 * Copyright (c) 1994-1996 S�ren Schmidt
3 * All rights reserved.
4 *
5 * Redistribution and use in source and binary forms, with or without
6 * modification, are permitted provided that the following conditions
7 * are met:
8 * 1. Redistributions of source code must retain the above copyright

--- 14 unchanged lines hidden (view full) ---

23 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
24 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
25 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
26 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27 */
28
29#ifndef lint
30static const char rcsid[] =
31 "$Id: vidcontrol.c,v 1.26 1999/01/12 23:05:45 mjacob Exp $";
31 "$Id: vidcontrol.c,v 1.27 1999/01/25 08:48:49 dfr Exp $";
32#endif /* not lint */
33
34#include <ctype.h>
35#include <err.h>
36#include <stdio.h>
37#include <stdlib.h>
38#include <string.h>
39#include <unistd.h>

--- 217 unchanged lines hidden (view full) ---

257
258void
259video_mode(int argc, char **argv, int *index)
260{
261 static struct {
262 char *name;
263 unsigned long mode;
264 } modes[] = {
32#endif /* not lint */
33
34#include <ctype.h>
35#include <err.h>
36#include <stdio.h>
37#include <stdlib.h>
38#include <string.h>
39#include <unistd.h>

--- 217 unchanged lines hidden (view full) ---

257
258void
259video_mode(int argc, char **argv, int *index)
260{
261 static struct {
262 char *name;
263 unsigned long mode;
264 } modes[] = {
265#ifdef SW_TEXT_80x25
266 { "80x25", SW_TEXT_80x25 },
267 { "80x30", SW_TEXT_80x30 },
268 { "80x43", SW_TEXT_80x43 },
269 { "80x50", SW_TEXT_80x50 },
270 { "80x60", SW_TEXT_80x60 },
271 { "132x25", SW_TEXT_132x25 },
272 { "132x30", SW_TEXT_132x30 },
273 { "132x43", SW_TEXT_132x43 },
274 { "132x50", SW_TEXT_132x50 },
275 { "132x60", SW_TEXT_132x60 },
265 { "80x25", SW_TEXT_80x25 },
266 { "80x30", SW_TEXT_80x30 },
267 { "80x43", SW_TEXT_80x43 },
268 { "80x50", SW_TEXT_80x50 },
269 { "80x60", SW_TEXT_80x60 },
270 { "132x25", SW_TEXT_132x25 },
271 { "132x30", SW_TEXT_132x30 },
272 { "132x43", SW_TEXT_132x43 },
273 { "132x50", SW_TEXT_132x50 },
274 { "132x60", SW_TEXT_132x60 },
276#endif
277 { "VGA_40x25", SW_VGA_C40x25 },
278 { "VGA_80x25", SW_VGA_C80x25 },
279 { "VGA_80x30", SW_VGA_C80x30 },
280 { "VGA_80x50", SW_VGA_C80x50 },
281 { "VGA_80x60", SW_VGA_C80x60 },
275 { "VGA_40x25", SW_VGA_C40x25 },
276 { "VGA_80x25", SW_VGA_C80x25 },
277 { "VGA_80x30", SW_VGA_C80x30 },
278 { "VGA_80x50", SW_VGA_C80x50 },
279 { "VGA_80x60", SW_VGA_C80x60 },
280#ifdef SW_VGA_C90x25
281 { "VGA_90x25", SW_VGA_C90x25 },
282 { "VGA_90x30", SW_VGA_C90x30 },
283 { "VGA_90x43", SW_VGA_C90x43 },
284 { "VGA_90x50", SW_VGA_C90x50 },
285 { "VGA_90x60", SW_VGA_C90x60 },
286#endif
282 { "VGA_320x200", SW_VGA_CG320 },
283 { "EGA_80x25", SW_ENH_C80x25 },
284 { "EGA_80x43", SW_ENH_C80x43 },
285 { "VESA_132x25", SW_VESA_C132x25 },
286 { "VESA_132x43", SW_VESA_C132x43 },
287 { "VESA_132x50", SW_VESA_C132x50 },
288 { "VESA_132x60", SW_VESA_C132x60 },
289 { "VESA_800x600", SW_VESA_800x600 },
290 { NULL },
291 };
292 unsigned long mode = 0;
287 { "VGA_320x200", SW_VGA_CG320 },
288 { "EGA_80x25", SW_ENH_C80x25 },
289 { "EGA_80x43", SW_ENH_C80x43 },
290 { "VESA_132x25", SW_VESA_C132x25 },
291 { "VESA_132x43", SW_VESA_C132x43 },
292 { "VESA_132x50", SW_VESA_C132x50 },
293 { "VESA_132x60", SW_VESA_C132x60 },
294 { "VESA_800x600", SW_VESA_800x600 },
295 { NULL },
296 };
297 unsigned long mode = 0;
298 int cur_mode;
299 int ioerr;
293 int size[3];
294 int i;
295
300 int size[3];
301 int i;
302
303 if (ioctl(0, CONS_GET, &cur_mode) < 0)
304 err(1, "cannot get the current video mode");
296 if (*index < argc) {
297 for (i = 0; modes[i].name != NULL; ++i) {
298 if (!strcmp(argv[*index], modes[i].name)) {
299 mode = modes[i].mode;
300 break;
301 }
302 }
303 if (modes[i].name == NULL)
304 return;
305 if (ioctl(0, mode, NULL) < 0)
306 warn("cannot set videomode");
307 if (mode == SW_VESA_800x600) {
308 size[0] = 80; /* columns */
309 size[1] = 25; /* rows */
310 size[2] = 16; /* font size */
305 if (*index < argc) {
306 for (i = 0; modes[i].name != NULL; ++i) {
307 if (!strcmp(argv[*index], modes[i].name)) {
308 mode = modes[i].mode;
309 break;
310 }
311 }
312 if (modes[i].name == NULL)
313 return;
314 if (ioctl(0, mode, NULL) < 0)
315 warn("cannot set videomode");
316 if (mode == SW_VESA_800x600) {
317 size[0] = 80; /* columns */
318 size[1] = 25; /* rows */
319 size[2] = 16; /* font size */
311 if (ioctl(0, KDRASTER, size))
312 warn("cannot activate raster display");
320 if (ioctl(0, KDRASTER, size)) {
321 ioerr = errno;
322 if (cur_mode >= M_VESA_BASE)
323 ioctl(0, _IO('V', cur_mode), NULL);
324 else
325 ioctl(0, _IO('S', cur_mode), NULL);
326 warnc(ioerr, "cannot activate raster display");
327 }
313 }
314 (*index)++;
315 }
316 return;
317}
318
319int
320get_color_number(char *color)

--- 92 unchanged lines hidden (view full) ---

413 char *name;
414 } names[] = {
415 { KD_MONO, "MDA" },
416 { KD_HERCULES, "Hercules" },
417 { KD_CGA, "CGA" },
418 { KD_EGA, "EGA" },
419 { KD_VGA, "VGA" },
420 { KD_PC98, "PC-98xx" },
328 }
329 (*index)++;
330 }
331 return;
332}
333
334int
335get_color_number(char *color)

--- 92 unchanged lines hidden (view full) ---

428 char *name;
429 } names[] = {
430 { KD_MONO, "MDA" },
431 { KD_HERCULES, "Hercules" },
432 { KD_CGA, "CGA" },
433 { KD_EGA, "EGA" },
434 { KD_VGA, "VGA" },
435 { KD_PC98, "PC-98xx" },
436 { KD_TGA, "TGA" },
421 { -1, "Unknown" },
422 };
423 int i;
424
425 for (i = 0; names[i].type != -1; ++i)
426 if (names[i].type == type)
427 break;
428 return names[i].name;

--- 12 unchanged lines hidden (view full) ---

441
442 printf("fb%d:\n", ad.va_index);
443 printf(" %.*s%d, type:%s%s (%d), flags:0x%x\n",
444 (int)sizeof(ad.va_name), ad.va_name, ad.va_unit,
445 (ad.va_flags & V_ADP_VESA) ? "VESA " : "",
446 adapter_name(ad.va_type), ad.va_type, ad.va_flags);
447 printf(" initial mode:%d, current mode:%d, BIOS mode:%d\n",
448 ad.va_initial_mode, ad.va_mode, ad.va_initial_bios_mode);
437 { -1, "Unknown" },
438 };
439 int i;
440
441 for (i = 0; names[i].type != -1; ++i)
442 if (names[i].type == type)
443 break;
444 return names[i].name;

--- 12 unchanged lines hidden (view full) ---

457
458 printf("fb%d:\n", ad.va_index);
459 printf(" %.*s%d, type:%s%s (%d), flags:0x%x\n",
460 (int)sizeof(ad.va_name), ad.va_name, ad.va_unit,
461 (ad.va_flags & V_ADP_VESA) ? "VESA " : "",
462 adapter_name(ad.va_type), ad.va_type, ad.va_flags);
463 printf(" initial mode:%d, current mode:%d, BIOS mode:%d\n",
464 ad.va_initial_mode, ad.va_mode, ad.va_initial_bios_mode);
465 printf(" frame buffer window:0x%x, buffer size:0x%x\n",
466 ad.va_window, ad.va_buffer_size);
467 printf(" window size:0x%x, origin:0x%x\n",
468 ad.va_window_size, ad.va_window_orig);
469 printf(" display start address (%d, %d), scan line width:%d\n",
470 ad.va_disp_start.x, ad.va_disp_start.y, ad.va_line_width);
471 printf(" reserved:0x%x\n", ad.va_unused0);
449}
450
451void
452show_mode_info(void)
453{
454 struct video_info info;
455 char buf[80];
456 int mode;
457 int c;
458
459 printf(" mode# flags type size "
460 "font window linear buffer\n");
461 printf("---------------------------------------"
462 "---------------------------------------\n");
463 for (mode = 0; mode < M_VESA_MODE_MAX; ++mode) {
464 info.vi_mode = mode;
465 if (ioctl(0, CONS_MODEINFO, &info))
466 continue;
472}
473
474void
475show_mode_info(void)
476{
477 struct video_info info;
478 char buf[80];
479 int mode;
480 int c;
481
482 printf(" mode# flags type size "
483 "font window linear buffer\n");
484 printf("---------------------------------------"
485 "---------------------------------------\n");
486 for (mode = 0; mode < M_VESA_MODE_MAX; ++mode) {
487 info.vi_mode = mode;
488 if (ioctl(0, CONS_MODEINFO, &info))
489 continue;
490 if (info.vi_mode != mode)
491 continue;
467
468 printf("%3d (0x%03x)", mode, mode);
469 printf(" 0x%08x", info.vi_flags);
470 if (info.vi_flags & V_INFO_GRAPHICS) {
471 c = 'G';
472 snprintf(buf, sizeof(buf), "%dx%dx%d %d",
473 info.vi_width, info.vi_height,
474 info.vi_depth, info.vi_planes);

--- 4 unchanged lines hidden (view full) ---

479 }
480 printf(" %c %-15s", c, buf);
481 snprintf(buf, sizeof(buf), "%dx%d",
482 info.vi_cwidth, info.vi_cheight);
483 printf(" %-5s", buf);
484 printf(" 0x%05x %2dk %2dk",
485 info.vi_window, (int)info.vi_window_size/1024,
486 (int)info.vi_window_gran/1024);
492
493 printf("%3d (0x%03x)", mode, mode);
494 printf(" 0x%08x", info.vi_flags);
495 if (info.vi_flags & V_INFO_GRAPHICS) {
496 c = 'G';
497 snprintf(buf, sizeof(buf), "%dx%dx%d %d",
498 info.vi_width, info.vi_height,
499 info.vi_depth, info.vi_planes);

--- 4 unchanged lines hidden (view full) ---

504 }
505 printf(" %c %-15s", c, buf);
506 snprintf(buf, sizeof(buf), "%dx%d",
507 info.vi_cwidth, info.vi_cheight);
508 printf(" %-5s", buf);
509 printf(" 0x%05x %2dk %2dk",
510 info.vi_window, (int)info.vi_window_size/1024,
511 (int)info.vi_window_gran/1024);
487 printf(" 0x%08x %2dk\n",
512 printf(" 0x%08x %dk\n",
488 info.vi_buffer, (int)info.vi_buffer_size/1024);
489 }
490}
491
492void
493show_info(char *arg)
494{
495 if (!strcmp(arg, "adapter"))

--- 89 unchanged lines hidden ---
513 info.vi_buffer, (int)info.vi_buffer_size/1024);
514 }
515}
516
517void
518show_info(char *arg)
519{
520 if (!strcmp(arg, "adapter"))

--- 89 unchanged lines hidden ---