amidisplaycc.c:

Add screen types suitable for PAL displays, and fix typos
	in older screen type names; reported by Gunther Nikl.
amidisplay.4:
	Document the new screen types and add some misc information.
This commit is contained in:
jandberg 2003-11-12 17:42:40 +00:00
parent 3f581624a0
commit 79eacc067d
2 changed files with 62 additions and 20 deletions

View File

@ -1,4 +1,4 @@
.\" $NetBSD: amidisplaycc.4,v 1.7 2002/03/13 21:44:48 wiz Exp $
.\" $NetBSD: amidisplaycc.4,v 1.8 2003/11/12 17:42:40 jandberg Exp $
.Dd February 4, 2002
.Dt AMIDISPLAYCC 4 amiga
.Sh NAME
@ -15,10 +15,11 @@ It exports the internal
.Xr wsdisplay 4
interface and contains the necessary rendering functions to
operate a text terminal with virtual screens. It uses the
Amiga abstract graphic driver functions for the low-level
Amiga abstract graphic driver (grfabs) functions for the low-level
display management.
.Pp
Currently it does not support running X. You can still run
Currently it does not support running X.
It can however coexist well enough with grf0 to make possible running
X the old way, but be warned, you cannot switch screens while
in X and when quitting it, it seems to hang. Switching a screen
then will bring up the text console. As always, we apologise for
@ -26,27 +27,45 @@ the inconvenience.
.Pp
What it does support is hilite (bold), underline, reverse and
foreground/background colors.
.Ss Virtual terminals and screen types
.Pp
The number of virtual screens is limited only by
the available chip memory.
Each virtual screen can have a different display mode.
A display mode defines the following things: height and width
in pixels, number of colors, and the size of the font.
The predefined modes are listed below.
.Pp
Each virtual screen can have a different screen type.
A screen type defines the following things: height and width
in pixels, number of colors, and font size.
The supported screen types are listed below.
.Bl -bullet -offset indent -compact
.It
80x64 - display size 640x512 with 8 colors, font size 8x8
.It
80x51 - display size 640x510 with 8 colors, font size 8x10
.It
80x50 - display size 640x400 with 8 colors, font size 8x8
.It
80x40 - display size 640x400 with 8 colors, font size 8x10
.It
80x32 - display size 640x512 with 8 colors, font size 8x16
.It
80x31 - display size 640x248 with 8 colors, font size 8x8
.It
80x25 - display size 640x400 with 8 colors, font size 8x16
.It
80x24 - display size 640x384 with 8 colors, font size 8x16
80x24 - display size 640x192 with 8 colors, font size 8x8
.It
default - same as either 80x64 or 80x50, depending on the presence
of GRF_NTSC and GRF_PAL in the kernel configuration.
.El
.Pp
Fonts of width 8 are supported. Fonts can be compiled into the kernel
by specifying "options FONT_[fontname]" in the configuration file,
or loaded with the
The grfabs code determines the actual screen mode that is used.
The config options GRF_NTSC, GRF_PAL, GRF_AGA, etc. determine
what kind of chipsets/modes are available.
.Ss Fonts
.Pp
Fonts of width 8 and any height are supported.
Fonts can be compiled into the kernel by specifying "options FONT_[fontname]"
in the configuration file, or loaded with the
.Xr wsfontload 8
utility runtime.
.Sh SEE ALSO

View File

@ -1,4 +1,4 @@
/* $NetBSD: amidisplaycc.c,v 1.13 2003/11/12 17:26:36 jandberg Exp $ */
/* $NetBSD: amidisplaycc.c,v 1.14 2003/11/12 17:42:40 jandberg Exp $ */
/*-
* Copyright (c) 2000 Jukka Andberg.
@ -28,7 +28,7 @@
*/
#include <sys/cdefs.h>
__KERNEL_RCSID(0, "$NetBSD: amidisplaycc.c,v 1.13 2003/11/12 17:26:36 jandberg Exp $");
__KERNEL_RCSID(0, "$NetBSD: amidisplaycc.c,v 1.14 2003/11/12 17:42:40 jandberg Exp $");
/*
* wscons interface to amiga custom chips. Contains the necessary functions
@ -71,7 +71,6 @@ __KERNEL_RCSID(0, "$NetBSD: amidisplaycc.c,v 1.13 2003/11/12 17:26:36 jandberg E
/* These can be lowered if you are sure you dont need that much colors. */
#define MAXDEPTH 8
#define MAXROWS 128
#define MAXCOLUMNS 80
#define ADJUSTCOLORS
@ -190,7 +189,6 @@ const struct wsdisplay_emulops amidisplaycc_emulops = {
struct amidisplaycc_screen_descr {
struct wsscreen_descr wsdescr;
int depth;
char name[16];
};
/*
@ -208,20 +206,38 @@ struct amidisplaycc_screen_descr {
WSSCREEN_HILIT | WSSCREEN_UNDERLINE }, \
depth }
/*
* Screen types.
*
* The first in list is used for the console screen.
* A suitable screen mode is guessed for it by looking
* at the GRF_* options.
*/
struct amidisplaycc_screen_descr amidisplaycc_screentab[] = {
/* name, width, height, depth, fontwidth==8, fontheight */
#if defined(GRF_PAL) && !defined(GRF_NTSC)
ADCC_SCREEN("default", 640, 512, 3, 8, 8),
#else
ADCC_SCREEN("default", 640, 400, 3, 8, 8),
#endif
ADCC_SCREEN("80x50", 640, 400, 3, 8, 8),
ADCC_SCREEN("80x40", 640, 400, 3, 8, 10),
ADCC_SCREEN("80x25", 640, 400, 3, 8, 16),
ADCC_SCREEN("80x24", 640, 384, 3, 8, 16),
ADCC_SCREEN("80x24", 640, 192, 3, 8, 8),
ADCC_SCREEN("80x64", 640, 512, 3, 8, 8),
ADCC_SCREEN("80x51", 640, 510, 3, 8, 10),
ADCC_SCREEN("80x32", 640, 512, 3, 8, 16),
ADCC_SCREEN("80x31", 640, 248, 3, 8, 8),
ADCC_SCREEN("640x400x1", 640, 400, 1, 8, 8),
ADCC_SCREEN("640x400x2", 640, 400, 2, 8, 8),
ADCC_SCREEN("640x400x3", 640, 400, 3, 8, 8),
ADCC_SCREEN("640x200x1", 640, 200, 1, 8, 8),
ADCC_SCREEN("640x200x1", 640, 200, 2, 8, 8),
ADCC_SCREEN("640x200x1", 640, 200, 3, 8, 8),
ADCC_SCREEN("640x200x2", 640, 200, 2, 8, 8),
ADCC_SCREEN("640x200x3", 640, 200, 3, 8, 8),
};
#define ADCC_SCREENPTR(index) &amidisplaycc_screentab[index].wsdescr
@ -236,6 +252,11 @@ const struct wsscreen_descr *amidisplaycc_screens[] = {
ADCC_SCREENPTR(7),
ADCC_SCREENPTR(8),
ADCC_SCREENPTR(9),
ADCC_SCREENPTR(10),
ADCC_SCREENPTR(11),
ADCC_SCREENPTR(12),
ADCC_SCREENPTR(13),
ADCC_SCREENPTR(14),
};
#define NELEMS(arr) (sizeof(arr)/sizeof((arr)[0]))
@ -460,8 +481,10 @@ amidisplaycc_attach(struct device *pdp, struct device *dp, void *auxp)
*/
adp->gfxview = NULL;
adp->gfxon = 0;
adp->gfxwidth = 640;
adp->gfxheight = 480;
adp->gfxwidth = amidisplaycc_screentab[0].wsdescr.ncols *
amidisplaycc_screentab[0].wsdescr.fontwidth;
adp->gfxheight = amidisplaycc_screentab[0].wsdescr.nrows *
amidisplaycc_screentab[0].wsdescr.fontheight;
if (aga_enable)
adp->gfxdepth = 8;