Deleted Added
sdiff udiff text old ( 39287 ) new ( 39591 )
full compact
1/*-
2 * Copyright (c) 1998 Kazutaka YOKOTA (yokota@zodiac.mech.utsunomiya-u.ac.jp)
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

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

21 * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
22 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
23 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
24 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
25 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
26 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
27 * SUCH DAMAGE.
28 *
29 * $Id$
30 */
31
32#include "sc.h"
33#include "opt_syscons.h"
34
35#if NSC > 0
36
37#include <sys/param.h>

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

44#include <machine/console.h>
45
46#include <i386/isa/videoio.h>
47#include <i386/isa/syscons.h>
48
49/* video ioctl */
50
51extern scr_stat *cur_console;
52extern u_short *Crtat;
53extern int fonts_loaded;
54extern int sc_history_size;
55extern u_char palette[];
56
57int
58sc_set_text_mode(scr_stat *scp, struct tty *tp, int mode, int xsize, int ysize,
59 int fontsize)
60{

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

228 xsize = info.vi_width/8;
229 if (ysize <= 0)
230 ysize = info.vi_height/fontsize;
231
232#ifdef SC_VIDEO_DEBUG
233 if (scp->scr_buf != NULL) {
234 printf("set_pixel_mode(): mode:%x, col:%d, row:%d, font:%d\n",
235 scp->mode, xsize, ysize, fontsize);
236 printf("set_pixel_mode(): Crtat:%x, %dx%d, xoff:%d, yoff:%d\n",
237 Crtat, info.vi_width, info.vi_height,
238 (info.vi_width/8 - xsize)/2,
239 (info.vi_height/fontsize - ysize)/2);
240 }
241#endif
242
243 /* stop screen saver, etc */
244 s = spltty();
245 if ((error = sc_clean_up(scp))) {
246 splx(s);
247 return error;
248 }
249
250 /* set up scp */

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

263
264 /* allocate buffers */
265 sc_alloc_scr_buffer(scp, TRUE, TRUE);
266 if (ISMOUSEAVAIL(adp->va_flags))
267 sc_alloc_cut_buffer(scp, FALSE);
268 sc_alloc_history_buffer(scp, sc_history_size, i, FALSE);
269 splx(s);
270
271 /* FIXME */
272 if (scp == cur_console)
273 bzero(Crtat, scp->xpixel*scp->ypixel/8);
274
275 scp->status &= ~UNKNOWN_MODE;
276
277#ifdef SC_VIDEO_DEBUG
278 printf("set_pixel_mode(): status:%x\n", scp->status);
279#endif
280
281 if (tp == NULL)

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

330 case CONS_FINDMODE: /* find a matching video mode */
331 return ((*biosvidsw.query_mode)(scp->adp, (video_info_t *)data)
332 ? ENODEV : 0);
333
334 case CONS_SETWINORG:
335 return ((*biosvidsw.set_win_org)(scp->adp, *(u_int *)data)
336 ? ENODEV : 0);
337
338 /* VGA TEXT MODES */
339 case SW_VGA_C40x25:
340 case SW_VGA_C80x25: case SW_VGA_M80x25:
341 case SW_VGA_C80x30: case SW_VGA_M80x30:
342 case SW_VGA_C80x50: case SW_VGA_M80x50:
343 case SW_VGA_C80x60: case SW_VGA_M80x60:
344 case SW_B40x25: case SW_C40x25:
345 case SW_B80x25: case SW_C80x25:

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

406 s = spltty();
407 if ((error = sc_clean_up(scp))) {
408 splx(s);
409 return error;
410 }
411 scp->status |= UNKNOWN_MODE;
412 splx(s);
413 /* no restore fonts & palette */
414 if (scp == cur_console) {
415 set_mode(scp);
416 /* FIXME */
417 if (scp->status & PIXEL_MODE)
418 bzero(Crtat, scp->xpixel*scp->ypixel/8);
419 }
420 sc_clear_screen(scp);
421 scp->status &= ~UNKNOWN_MODE;
422 return 0;
423
424 case KD_PIXEL: /* pixel (raster) display */
425 if (!(scp->status & (GRAPHICS_MODE | PIXEL_MODE)))
426 return EINVAL;
427 if (!(scp->status & PIXEL_MODE))
428 return sc_set_pixel_mode(scp, tp, scp->xsize, scp->ysize,
429 scp->font_size);
430 s = spltty();
431 if ((error = sc_clean_up(scp))) {
432 splx(s);
433 return error;
434 }
435 scp->status |= (UNKNOWN_MODE | PIXEL_MODE);
436 splx(s);
437 if (scp == cur_console) {
438 set_mode(scp);
439 load_palette(scp, palette);
440 /* FIXME */
441 bzero(Crtat, scp->xpixel*scp->ypixel/8);
442 }
443 sc_clear_screen(scp);
444 scp->status &= ~UNKNOWN_MODE;
445 return 0;
446
447 case KD_GRAPHICS: /* switch to GRAPHICS (unknown) mode */
448 s = spltty();
449 if ((error = sc_clean_up(scp))) {

--- 37 unchanged lines hidden ---