/*	$OpenBSD: pcvt_conf.h,v 1.13 1998/06/30 20:51:07 millert Exp $	*/

/*
 * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
 *
 * Copyright (c) 1992, 1994 Brian Dunford-Shore.
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions
 * are met:
 * 1. Redistributions of source code must retain the above copyright
 *    notice, this list of conditions and the following disclaimer.
 * 2. Redistributions in binary form must reproduce the above copyright
 *    notice, this list of conditions and the following disclaimer in the
 *    documentation and/or other materials provided with the distribution.
 * 3. All advertising materials mentioning features or use of this software
 *    must display the following acknowledgement:
 *	This product includes software developed by
 *	Hellmuth Michaelis, Brian Dunford-Shore and Joerg Wunsch.
 * 4. The name authors may not be used to endorse or promote products
 *    derived from this software without specific prior written permission.
 *
 * THIS SOFTWARE IS PROVIDED BY THE AUTHORS ``AS IS'' AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
 * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
 * IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
 * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
 * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
 * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 *
 *
 * @(#)pcvt_conf.h, 3.32, Last Edit-Date: [Tue Oct  3 11:19:47 1995]
 *
 */

/*---------------------------------------------------------------------------
 *
 *	pcvt_conf.h	VT220 driver global configuration file
 *	------------------------------------------------------
 *	-hm	introduced pcvt_conf.h
 *	-hm	re-integrated selfconfiguration for NetBSD from Onno
 *	-hm	patch from Onno for NetBSD-current
 *	-hm	removed PCVT_FAKE_SYSCONS10
 *	-hm	---------------- Release 3.30 -----------------------
 *	-hm	patch from Ulf Kieber to support changeable kernel msg colors
 *	-hm	---------------- Release 3.32 -----------------------
 *
 *---------------------------------------------------------------------------*/

/*---------------------------------------------------------------------------
 * Note that each of the options below should rather be overriden by the
 * kernel config file instead of this .h file - this allows for different
 * definitions in different kernels compiled at the same machine
 *
 * The convention is as follows:
 *
 *	options "PCVT_FOO=1"  - enables the option
 * 	options "PCVT_FOO"    - is a synonym for the above
 *	options "PCVT_FOO=0"  - disables the option
 *
 * omitting an option defaults to what is shown below
 *
 * exceptions from this rule are i.e.:
 *
 *	options "PCVT_NSCREENS=x"
 *	options "PCVT_SCANSET=x"
 *	options "PCVT_SYSBEEPF=x"
 *
 * which are always numeric!
 *---------------------------------------------------------------------------*/

/* -------------------------------------------------------------------- */
/* ---------------- USER PREFERENCE DRIVER OPTIONS -------------------- */
/* -------------------------------------------------------------------- */

/*----------------------------------------------------------------------*/
/* NOTE: if FAT_CURSOR is defined, a block cursor is used instead of	*/
/*       the cursor shape we got from the BIOS, see pcvt_out.c		*/
/*----------------------------------------------------------------------*/

#if !defined PCVT_NSCREENS	/* ---------- DEFAULT: 8 -------------- */
# define PCVT_NSCREENS 8	/* this option defines how many virtual	*/
#endif				/* screens you want to have in your	*/
				/* system. each screen allocates memory,*/
				/* so you can't have an unlimited num-	*/
				/* ber...; the value is intented to be	*/
				/* compile-time overridable by a config	*/
				/* options "PCVT_NSCREENS=x" line	*/

#if !defined PCVT_VT220KEYB	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_VT220KEYB 0	/* this compiles a more vt220-like	*/
#elif PCVT_VT220KEYB != 0	/* keyboardlayout as described in the	*/
# undef PCVT_VT220KEYB		/* file Keyboard.VT220.			*/
# define PCVT_VT220KEYB 1	/* if undefined, a more HP-like         */
#endif				/* keyboardlayout is compiled		*/
				/* try to find out what YOU like !	*/

#if !defined PCVT_SCREENSAVER	/* ---------- DEFAULT: ON ------------- */
# define PCVT_SCREENSAVER 1	/* enable screen saver feature - this	*/
#elif PCVT_SCREENSAVER != 0	/* just blanks the display screen.	*/
# undef PCVT_SCREENSAVER	/* see PCVT_PRETTYSCRNS below ...	*/
# define PCVT_SCREENSAVER 1
#endif

#if !defined PCVT_PRETTYSCRNS	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_PRETTYSCRNS 0	/* for the cost of some microseconds of	*/
#elif PCVT_PRETTYSCRNS != 0	/* cpu time this adds a more "pretty"	*/
# undef PCVT_PRETTYSCRNS	/* version to the screensaver, an "*"	*/
# define PCVT_PRETTYSCRNS 1	/* in random locations of the display.	*/
#endif				/* NOTE: this should not be defined if	*/
				/* you have an energy-saving monitor 	*/
				/* which turns off the display if its	*/
				/* black !!!!!!				*/

#if !defined PCVT_CTRL_ALT_DEL	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_CTRL_ALT_DEL 0	/* this enables the execution of a cpu	*/
#elif PCVT_CTRL_ALT_DEL != 0	/* reset by pressing the CTRL, ALT and	*/
# undef PCVT_CTRL_ALT_DEL	/* DEL keys simultanously. Because this	*/
# define PCVT_CTRL_ALT_DEL 1	/* is a feature of an ancient simple	*/
#endif				/* bootstrap loader, it does not belong */
				/* into modern operating systems and 	*/
				/* was commented out by default ...	*/

#if !defined PCVT_KBD_FIFO	/* ---------- DEFAULT: ON ------------- */
# define PCVT_KBD_FIFO 1	/* this enables Keyboad fifo so that we */
#elif PCVT_KBD_FIFO != 0	/* are not any longer forced to switch  */
# undef PCVT_KBD_FIFO		/* off tty interrupts while switching   */
# define PCVT_KBD_FIFO 1	/* virtual screens - AND loosing chars  */
#endif				/* on the serial lines is gone :-)      */

#if PCVT_KBD_FIFO

# if !defined PCVT_KBD_FIFO_SZ	/* ---------- DEFAULT: 256 ------------ */
#  define PCVT_KBD_FIFO_SZ 256	/* this specifies the size of the above */
# elif PCVT_KBD_FIFO_SZ < 16	/* mentioned keyboard buffer. buffer    */
#  undef PCVT_KBD_FIFO_SZ	/* overflows are logged via syslog, so  */
#  define PCVT_KBD_FIFO_SZ 256	/* have a look at /var/log/messages     */
# endif

#endif /* PCVT_KBD_FIFO */

#if !defined PCVT_USEKBDSEC	/* ---------- DEFAULT: ON ------------- */
# define PCVT_USEKBDSEC 1	/* do not set the COMMAND_INHOVR bit	*/
#elif PCVT_USEKBDSEC != 0	/* (1 = override security lock inhibit) */
# undef PCVT_USEKBDSEC		/* when initializing the keyboard, so   */
# define PCVT_USEKBDSEC 1	/* that security locking should work    */
#endif				/* now. I guess this has to be done also*/
				/* in the boot code to prevent single   */
				/* user startup ....                    */

#if !defined PCVT_24LINESDEF	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_24LINESDEF 0	/* use 24 lines in VT 25 lines mode and	*/
#elif PCVT_24LINESDEF != 0	/* HP 28 lines mode by default to have	*/
# undef PCVT_24LINESDEF		/* the the better compatibility to the	*/
# define PCVT_24LINESDEF 1	/* real VT220 - you can switch between	*/
#endif				/* the maximum possible screensizes in	*/
				/* those two modes (25 lines) and true	*/
				/* compatibility (24 lines) by using	*/
				/* the scon utility at runtime		*/

#if !defined PCVT_EMU_MOUSE	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_EMU_MOUSE 0	/* emulate a mouse systems mouse via	*/
#elif PCVT_EMU_MOUSE != 0	/* the keypad; this is experimental	*/
# undef PCVT_EMU_MOUSE		/* code intented to be used on note-	*/
# define PCVT_EMU_MOUSE 1	/* books in conjunction with XFree86;	*/
#endif				/* look at the comments in pcvt_kbd.c	*/
				/* if you are interested in testing it.	*/

#if !defined PCVT_META_ESC      /* ---------- DEFAULT: OFF ------------ */
# define PCVT_META_ESC 0        /* if ON, send the sequence "ESC key"	*/
#elif PCVT_META_ESC != 0        /* for a meta-shifted key; if OFF,	*/
# undef PCVT_META_ESC           /* send the normal key code with 0x80	*/
# define PCVT_META_ESC 1        /* added.				*/
#endif

#if !defined PCVT_SW0CNOUTP     /* ---------- DEFAULT: OFF ------------ */
# define PCVT_SW0CNOUTP 0       /* if ON, on console/kernel output the  */
#elif PCVT_SW0CNOUTP != 0       /* current screen is switched to screen */
# undef PCVT_SW0CNOUTP          /* 0 if not already at screen 0.        */
# define PCVT_SW0CNOUTP 1	/* CAUTION: CURRENTLY THIS CAUSES AN X- */
#endif				/* SESSION TO CLUTTER VIDEO MEMORY !!!! */

/* -------------------------------------------------------------------- */
/* -------------------- DRIVER DEBUGGING ------------------------------ */
/* -------------------------------------------------------------------- */

#if !defined PCVT_SHOWKEYS	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_SHOWKEYS 0	/* this replaces the system load line	*/
#elif PCVT_SHOWKEYS != 0	/* on the vt 0 in hp mode with a display*/
# undef PCVT_SHOWKEYS		/* of the most recent keyboard scan-	*/
# define PCVT_SHOWKEYS 1	/* and status codes received from the	*/
#endif				/* keyboard controller chip.		*/
				/* this is just for some hardcore	*/
				/* keyboarders ....			*/

/* -------------------------------------------------------------------- */
/* -------------------- DRIVER OPTIONS -------------------------------- */
/* -------------------------------------------------------------------- */
/*     it is unlikely that anybody wants to change anything below       */

#if !defined PCVT_NO_LED_UPDATE	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_NO_LED_UPDATE 0	/* On some keyboard controllers it is	*/
#elif PCVT_NO_LED_UPDATE != 0	/* not possible to update the LED's	*/
# undef PCVT_NO_LED_UPDATE	/* without hanging the keyboard after-	*/
# define PCVT_NO_LED_UPDATE 1	/* wards. If you experience problems	*/
#endif				/* like this, try to enable this option	*/

#if !defined PCVT_PORTIO_DELAY  /* ---------- DEFAULT: ON ------------- */
# define PCVT_PORTIO_DELAY 1	/* Defining PCVT_PORTIO_DELAY lets pcvt */
#elif PCVT_PORTIO_DELAY != 0	/* use multiple accesses to port 0x84   */
# undef PCVT_PORTIO_DELAY	/* to produce a delay of 7 us needed for*/
# define PCVT_PORTIO_DELAY 1	/* accessing the keyboard controller,   */
#endif				/* otherwise the system delay functions */
				/* are used.                            */

#if !defined PCVT_PCBURST	/* ---------- DEFAULT: 256 ------------ */
# define PCVT_PCBURST 256	/* NETBSD and FreeBSD >= 2.0 only: this */
#endif				/* is the number of output characters	*/
				/* handled together as a burst in 	*/
				/* routine pcstart(), file pcvt_drv.c	*/

#if !defined PCVT_SCANSET	/* ---------- DEFAULT: 1 -------------- */
# define PCVT_SCANSET 1		/* define the keyboard scancode set you	*/
#endif				/* want to use:				*/
				/* 1 - code set 1	(supported)	*/
				/* 2 - code set 2	(supported)	*/
				/* 3 - code set 3	(UNsupported)	*/

#if !defined PCVT_KEYBDID	/* ---------- DEFAULT: ON ------------- */
# define PCVT_KEYBDID 1		/* check type of keyboard connected. at	*/
#elif PCVT_KEYBDID != 0		/* least HP-keyboards send an id other	*/
# undef PCVT_KEYBDID		/* than the industry standard, so it	*/
# define PCVT_KEYBDID 1		/* CAN lead to problems. if you have	*/
#endif				/* problems with this, TELL ME PLEASE !	*/

#if !defined PCVT_SIGWINCH	/* ---------- DEFAULT: ON ------------- */
# define PCVT_SIGWINCH 1	/* this sends a SIGWINCH signal in case	*/
#elif PCVT_SIGWINCH != 0	/* the window size is changed. to try,	*/
# undef PCVT_SIGWINCH		/* issue "scons -s<size>" while in elvis*/
# define PCVT_SIGWINCH 1	/* and you'll see the effect.		*/
#endif				/* i'm not sure, whether this feature	*/
				/* has to be in the driver or has to    */
				/* move as an ioctl call to scon ....	*/

#if !defined PCVT_NULLCHARS	/* ---------- DEFAULT: ON ------------- */
# define PCVT_NULLCHARS 1	/* allow the keyboard to send null	*/
#elif PCVT_NULLCHARS != 0	/* (0x00) characters to the calling	*/
# undef PCVT_NULLCHARS		/* program. this has the side effect	*/
# define PCVT_NULLCHARS 1	/* that every undefined key also sends	*/
#endif				/* out nulls. take it as experimental	*/
				/* code, this behaviour will change in	*/
				/* a future release			*/

#if !defined PCVT_BACKUP_FONTS	/* ---------- DEFAULT: ON ------------- */
# define PCVT_BACKUP_FONTS 1	/* fonts are always kept memory-backed;	*/
#elif  PCVT_BACKUP_FONTS != 0	/* otherwise copies are only made if	*/
# undef PCVT_BACKUP_FONTS	/* they are needed.			*/
# define PCVT_BACKUP_FONTS 1
#endif

#ifndef PCVT_SYSBEEPF		/* timer chip value to be used for the	*/
# define PCVT_SYSBEEPF 1193182	/* sysbeep frequency value.		*/
#endif				/* this should really go somewhere else,*/
				/* e.g. in isa.h; but it used to be in 	*/
				/* each driver, sometimes even with	*/
				/* different values (:-)		*/

#if !defined PCVT_SETCOLOR	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_SETCOLOR 0	/* enable making colors settable. this	*/
#elif PCVT_SETCOLOR != 0	/* introduces a new escape sequence	*/
# undef PCVT_SETCOLOR		/* <ESC d> which is (i think) not 	*/
# define PCVT_SETCOLOR 1	/* standardized, so this is an option	*/
#endif				/* (Birthday present for Bruce ! :-)    */

#if !defined PCVT_132GENERIC	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_132GENERIC 0	/* if you #define this, you enable	*/
#elif PCVT_132GENERIC != 0	/*	EXPERIMENTAL (!!!!!!!!!!!!)	*/
# undef PCVT_132GENERIC		/* 	USE-AT-YOUR-OWN-RISK, 		*/
# define PCVT_132GENERIC 1	/*	MAY-DAMAGE-YOUR-MONITOR		*/
#endif				/* code to switch generic VGA boards/	*/
				/* chipsets to 132 column mode. Since	*/
				/* i could not verify this option, i	*/
				/* prefer to NOT generally enable this,	*/
				/* if you want to play, look at the 	*/
				/* hints and the code in pcvt_sup.c and	*/
				/* get in contact with Joerg Wunsch, who*/
				/* submitted this code. Be careful !!!	*/

#if !defined PCVT_PALFLICKER	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_PALFLICKER 0	/* this option turns off the screen 	*/
#elif PCVT_PALFLICKER != 0	/* during accesses to the VGA DAC	*/
# undef PCVT_PALFLICKER		/* registers. why: on one fo the tested	*/
# define PCVT_PALFLICKER 1	/* pc's (WD-chipset), accesses to the	*/
#endif				/* vga dac registers caused distortions	*/
				/* on the screen. Ferraro says, one has	*/
				/* to blank the screen. the method used	*/
				/* to accomplish this stopped the noise	*/
				/* but introduced another flicker, so	*/
				/* this is for you to experiment .....	*/
				/* - see also PCVT_WAITRETRACE below --	*/

#if !defined PCVT_WAITRETRACE	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_WAITRETRACE 0	/* this option waits for being in a 	*/
#elif PCVT_WAITRETRACE != 0	/* retrace window prior to accessing	*/
# undef PCVT_WAITRETRACE	/* the VGA DAC registers.		*/
# define PCVT_WAITRETRACE 1	/* this is the other method Ferraro	*/
#endif				/* mentioned in his book. this option 	*/
				/* did eleminate the flicker noticably	*/
				/* but not completely. besides that, it	*/
				/* is implemented as a busy-wait loop	*/
				/* which is a no-no-no in environments	*/
				/* like this - VERY BAD PRACTICE !!!!!	*/
				/* the other method implementing it is	*/
				/* using the vertical retrace irq, but	*/
				/* we get short of irq-lines on pc's.	*/
				/* this is for you to experiment .....	*/
				/* -- see also PCVT_PALFLICKER above -- */

#if !defined PCVT_INHIBIT_NUMLOCK /* --------- DEFAULT: OFF ----------- */
# define PCVT_INHIBIT_NUMLOCK 1 /* A notebook hack: since i am getting	*/
#elif PCVT_INHIBIT_NUMLOCK != 0	/* tired of the numlock LED always	*/
# undef PCVT_INHIBIT_NUMLOCK    /* being turned on - which causes the	*/
# define PCVT_INHIBIT_NUMLOCK 1 /* right half of my keyboard being	*/
#endif                         	/* interpreted as a numeric keypad and	*/
				/* thus going unusable - i want to	*/
				/* have a better control over it. If	*/
				/* this option is enabled, only the	*/
				/* numlock key itself and the related	*/
				/* ioctls will modify the numlock	*/
				/* LED. (The ioctl is needed for the	*/
				/* ServerNumLock feature of XFree86.)	*/
				/* The default state is changed to	*/
				/* numlock off, and the escape		*/
				/* sequences to switch between numeric	*/
				/* and application mode keypad are	*/
				/* silently ignored.			*/

#if !defined PCVT_NOFASTSCROLL	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_NOFASTSCROLL 0	/* If off, enables code for fast scroll.*/
#elif PCVT_NOFASTSCROLL != 0	/* This is done by changing the CRTC	*/
# undef PCVT_NOFASTSCROLL	/* screen start address for scrolling	*/
# define PCVT_NOFASTSCROLL 1	/* and using 2 times the screen size as	*/
#endif				/* buffer. The fastscroll code works	*/
				/* ONLY for VGA/EGA/CGA because it uses */
				/* the crtc for hardware scrolling and	*/
				/* therefore needs more than the one	*/
				/* page video memory MDA and most 	*/
				/* Hercules boards support.		*/
				/* If you run pcvt ONLY on MDA/Hercules */
				/* you should disable fastscroll to save*/
				/* the time to decide which board you	*/
				/* are running pcvt on at runtime.	*/
				/*     [see roll_up() and roll_down().]	*/

#if !defined PCVT_MDAFASTSCROLL	/* ---------- DEFAULT: OFF ------------ */
# define PCVT_MDAFASTSCROLL 0	/* If on, enables code for fast scroll  */
#elif PCVT_MDAFASTSCROLL != 0	/* on MDA/Hercules (see notes for	*/
# undef PCVT_MDAFASTSCROLL	/* PCVT_NOFASTSCROLL). Works only on	*/
# define PCVT_MDAFASTSCROLL 1	/* MDA/Hercules which do support more 	*/
#endif				/* than one page of video memory.	*/

/*---------------------------------------------------------------------------*
 *	Kernel messages attribute definitions
 *	These define the foreground and background attributes used to
 *	emphasize messages from the kernel on color and mono displays.
 *---------------------------------------------------------------------------*/

#if !defined COLOR_KERNEL_FG		/* color displays		*/
#define COLOR_KERNEL_FG	FG_LIGHTGREY	/* kernel messages, foreground	*/
#endif
#if !defined COLOR_KERNEL_BG
#define COLOR_KERNEL_BG	BG_BLUE		/* kernel messages, background	*/
#endif

#if !defined MONO_KERNEL_FG		/* monochrome displays		*/
#define MONO_KERNEL_FG	FG_UNDERLINE	/* kernel messages, foreground	*/
#endif
#if !defined MONO_KERNEL_BG
#define MONO_KERNEL_BG	BG_BLACK	/* kernel messages, background	*/
#endif

/*---------------------------------- E O F ----------------------------------*/