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 --- |