summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorjoerg <joerg@FreeBSD.org>1995-04-08 15:49:25 +0000
committerjoerg <joerg@FreeBSD.org>1995-04-08 15:49:25 +0000
commit2aef2c31657f9aa9c4ef5502f2721762b7cd9ecb (patch)
treee8eef9c4dab74536f69bf206e70702e04b8f0bc2
parent68dc07c4de862e5d733182f10c1d43d56855c77a (diff)
downloadFreeBSD-src-2aef2c31657f9aa9c4ef5502f2721762b7cd9ecb.zip
FreeBSD-src-2aef2c31657f9aa9c4ef5502f2721762b7cd9ecb.tar.gz
Update pcvt to 3.20 b24
-rw-r--r--sys/conf/NOTES3
-rw-r--r--sys/i386/conf/LINT3
-rw-r--r--sys/i386/conf/NOTES3
-rw-r--r--sys/i386/include/pcvt_ioctl.h17
-rw-r--r--sys/i386/isa/pcvt/pcvt_conf.h25
-rw-r--r--sys/i386/isa/pcvt/pcvt_drv.c51
-rw-r--r--sys/i386/isa/pcvt/pcvt_ext.c44
-rw-r--r--sys/i386/isa/pcvt/pcvt_hdr.h71
-rw-r--r--sys/i386/isa/pcvt/pcvt_kbd.c45
-rw-r--r--sys/i386/isa/pcvt/pcvt_kbd.h2
-rw-r--r--sys/i386/isa/pcvt/pcvt_out.c2
-rw-r--r--sys/i386/isa/pcvt/pcvt_sup.c27
-rw-r--r--sys/i386/isa/pcvt/pcvt_tbl.h2
-rw-r--r--sys/i386/isa/pcvt/pcvt_vtf.c11
14 files changed, 148 insertions, 158 deletions
diff --git a/sys/conf/NOTES b/sys/conf/NOTES
index d234b5d..72304de 100644
--- a/sys/conf/NOTES
+++ b/sys/conf/NOTES
@@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
-# $Id: LINT,v 1.163 1995/04/06 14:01:20 ache Exp $
+# $Id: LINT,v 1.164 1995/04/08 09:36:02 phk Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@@ -385,6 +385,7 @@ options BOUNCE_BUFFERS
#device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint
#options "PCVT_FREEBSD=210" # pcvt running on FreeBSD 2.1
#options XSERVER # include code for XFree86
+#options FAT_CURSOR # start with block cursor
# The syscons console driver (sco color console compatible) - default.
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
diff --git a/sys/i386/conf/LINT b/sys/i386/conf/LINT
index d234b5d..72304de 100644
--- a/sys/i386/conf/LINT
+++ b/sys/i386/conf/LINT
@@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
-# $Id: LINT,v 1.163 1995/04/06 14:01:20 ache Exp $
+# $Id: LINT,v 1.164 1995/04/08 09:36:02 phk Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@@ -385,6 +385,7 @@ options BOUNCE_BUFFERS
#device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint
#options "PCVT_FREEBSD=210" # pcvt running on FreeBSD 2.1
#options XSERVER # include code for XFree86
+#options FAT_CURSOR # start with block cursor
# The syscons console driver (sco color console compatible) - default.
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
diff --git a/sys/i386/conf/NOTES b/sys/i386/conf/NOTES
index d234b5d..72304de 100644
--- a/sys/i386/conf/NOTES
+++ b/sys/i386/conf/NOTES
@@ -2,7 +2,7 @@
# LINT -- config file for checking all the sources, tries to pull in
# as much of the source tree as it can.
#
-# $Id: LINT,v 1.163 1995/04/06 14:01:20 ache Exp $
+# $Id: LINT,v 1.164 1995/04/08 09:36:02 phk Exp $
#
# NB: You probably don't want to try running a kernel built from this
# file. Instead, you should start from GENERIC, and add options from
@@ -385,6 +385,7 @@ options BOUNCE_BUFFERS
#device vt0 at isa? port "IO_KBD" tty irq 1 vector pcrint
#options "PCVT_FREEBSD=210" # pcvt running on FreeBSD 2.1
#options XSERVER # include code for XFree86
+#options FAT_CURSOR # start with block cursor
# The syscons console driver (sco color console compatible) - default.
device sc0 at isa? port "IO_KBD" tty irq 1 vector scintr
diff --git a/sys/i386/include/pcvt_ioctl.h b/sys/i386/include/pcvt_ioctl.h
index b6e4ca6..c4dbe44 100644
--- a/sys/i386/include/pcvt_ioctl.h
+++ b/sys/i386/include/pcvt_ioctl.h
@@ -44,7 +44,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)ioctl_pcvt.h, 3.20, Last Edit-Date: [Thu Mar 30 10:38:23 1995]
+ * @(#)ioctl_pcvt.h, 3.20, Last Edit-Date: [Fri Apr 7 10:17:13 1995]
*
*/
@@ -57,15 +57,16 @@
* -hm version definitions moved to begin of file
* -hm removed PCVT_FAKE_SYSCONS10
* -hm accept KERNEL or _KERNEL
+ * -hm changed _IOCTL_PCVT_H_ to _MACHINE_PCVT_IOCTL_H_ (bde)
*
*---------------------------------------------------------------------------*/
-#ifndef _IOCTL_PCVT_H_
-#define _IOCTL_PCVT_H_
+#ifndef _MACHINE_PCVT_IOCTL_H_
+#define _MACHINE_PCVT_IOCTL_H_
/* pcvt version information for VGAPCVTID ioctl */
-#define PCVTIDNAME "pcvt-b23" /* driver id - string */
+#define PCVTIDNAME "pcvt-b24" /* driver id - string */
#define PCVTIDMAJOR 3 /* driver id - major release */
#define PCVTIDMINOR 20 /* driver id - minor release */
@@ -413,7 +414,7 @@ struct pcvtid { /* THIS STRUCTURE IS NOW FROZEN !!! */
struct pcvtinfo { /* compile time option values */
u_int opsys; /* PCVT_xxx(x)BSD */
#define CONF_UNKNOWNOPSYS 0
-#define CONF_386BSD 1
+#define CONF_386BSD 1 /* unsupported */
#define CONF_NETBSD 2
#define CONF_FREEBSD 3
u_int opsysrel; /* Release */
@@ -442,14 +443,14 @@ struct pcvtinfo { /* compile time option values */
#define CONF_NULLCHARS 0x00000400
#define CONF_BACKUP_FONTS 0x00000800
#define CONF_SW0CNOUTP 0x00001000 /* was FORCE8BIT */
-#define CONF_NEEDPG 0x00002000
+ /* 0x00002000 was NEEDPG */
#define CONF_SETCOLOR 0x00004000
#define CONF_132GENERIC 0x00008000
#define CONF_PALFLICKER 0x00010000
#define CONF_WAITRETRACE 0x00020000
#define CONF_XSERVER 0x00040000
#define CONF_USL_VT_COMPAT 0x00080000
- /* 0x00100000 was FAKE_SYSCONS10 */
+#define CONF_PORTIO_DELAY 0x00100000 /* was FAKE_SYSCONS10 */
#define CONF_INHIBIT_NUMLOCK 0x00200000
#define CONF_META_ESC 0x00400000
#define CONF_NOFASTSCROLL 0x00800000
@@ -579,4 +580,4 @@ typedef struct keymap keymap_t;
/* end of USL VT compatibility stuff */
-#endif /* _IOCTL_PC_H_ */
+#endif /* ! _MACHINE_PCVT_IOCTL_H_ */
diff --git a/sys/i386/isa/pcvt/pcvt_conf.h b/sys/i386/isa/pcvt/pcvt_conf.h
index da3440a..3ddc3a2 100644
--- a/sys/i386/isa/pcvt/pcvt_conf.h
+++ b/sys/i386/isa/pcvt/pcvt_conf.h
@@ -32,7 +32,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_conf.h, 3.20, Last Edit-Date: [Sun Feb 26 12:48:45 1995]
+ * @(#)pcvt_conf.h, 3.20, Last Edit-Date: [Sun Apr 2 18:57:45 1995]
*
*/
@@ -138,14 +138,6 @@
* PCVT_FREEBSD = 200 for FreeBSD 2.0-Release
* PCVT_FREEBSD = 210 for FreeBSD 2.1-Release
*
- *======================================================================*
- * 3 8 6 B S D *
- *======================================================================*
- *
- * options "PCVT_386BSD" enables support for 386BSD + pk 0.2.4
- * NOTE: the 386BSD pcvt is unsupported and
- * will be removed in a future release
- *
*/
/* -------------------------------------------------------------------- */
@@ -284,6 +276,14 @@
# 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 */
@@ -346,13 +346,6 @@
/* each driver, sometimes even with */
/* different values (:-) */
-#if !defined PCVT_NEEDPG /* ---------- DEFAULT: OFF ------------ */
-# define PCVT_NEEDPG 0 /* pg moved out to cons.c with pk 0.2.2 */
-#elif PCVT_NEEDPG != 0 /* if you run a system with patchkit */
-# undef PCVT_NEEDPG /* 0.2.1 or earlier you must define this*/
-# define PCVT_NEEDPG 1 /* OBSOLETE, just for 386BSD 0.1 !! */
-#endif /* will be removed in a future release */
-
#if !defined PCVT_SETCOLOR /* ---------- DEFAULT: OFF ------------ */
# define PCVT_SETCOLOR 0 /* enable making colors settable. this */
#elif PCVT_SETCOLOR != 0 /* introduces a new escape sequence */
diff --git a/sys/i386/isa/pcvt/pcvt_drv.c b/sys/i386/isa/pcvt/pcvt_drv.c
index 569f1ad..057c4ac 100644
--- a/sys/i386/isa/pcvt/pcvt_drv.c
+++ b/sys/i386/isa/pcvt/pcvt_drv.c
@@ -41,7 +41,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_drv.c, 3.20, Last Edit-Date: [Thu Mar 23 20:37:05 1995]
+ * @(#)pcvt_drv.c, 3.20, Last Edit-Date: [Sun Apr 2 19:09:19 1995]
*
*/
@@ -72,6 +72,7 @@
* -hm multiple X server bugfixes from Lon Willett
* -hm patch from joerg - pcdevtotty for FreeBSD pre-2.1
* -hm delay patch from Martin Husemann after port-i386 ml-discussion
+ * -jw add some code to provide more FreeBSD pre-2.1 support
*
*---------------------------------------------------------------------------*/
@@ -104,13 +105,15 @@ static char vt_description[];
#define VT_DESCR_LEN 40
#endif /* PCVT_FREEBSD > 205 */
-int
#if PCVT_NETBSD > 100 /* NetBSD-current Feb 20 1995 */
+int
pcprobe(struct device *parent, void *match, void *aux)
#else
#if PCVT_NETBSD > 9
+int
pcprobe(struct device *parent, struct device *self, void *aux)
#else
+int
pcprobe(struct isa_device *dev)
#endif /* PCVT_NETBSD > 9 */
#endif /* PCVT_NETBSD > 100 */
@@ -468,8 +471,10 @@ pcopen(Dev_t dev, int flag, int mode, struct proc *p)
#if PCVT_FREEBSD > 205
if(retval == 0)
+ {
/* XXX currently, only one vt device is supported */
kdc_vt[0].kdc_state = DC_BUSY;
+ }
#endif
return(retval);
@@ -518,10 +523,12 @@ pcclose(Dev_t dev, int flag, int mode, struct proc *p)
#if PCVT_FREEBSD > 205
if(!pcvt_is_console)
+ {
/* XXX currently, only one vt device is supported */
kdc_vt[0].kdc_state = DC_IDLE;
+ }
#endif
-
+
return(0);
}
@@ -751,12 +758,15 @@ vt_registerdev(struct isa_device *id, const char *name)
{
if(id->id_unit)
kdc_vt[id->id_unit] = kdc_vt[0];
+
kdc_vt[id->id_unit].kdc_unit = id->id_unit;
kdc_vt[id->id_unit].kdc_isa = id;
+
/* XXX only vt0 currently allowed */
strncpy(vt_descr + sizeof("Graphics console: ") - 1,
name,
VT_DESCR_LEN - sizeof("Graphics console: "));
+
dev_attach(&kdc_vt[id->id_unit]);
}
@@ -859,11 +869,7 @@ pcrint(void)
{
ret = 1; /* got something */
-#if PCVT_NETBSD > 9
- delay(6); /* Gateway 2000 fix */
-#elif PCVT_FREEBSD || (PCVT_NETBSD <= 9)
- DELAY(6); /* Gateway 2000 fix */
-#endif
+ PCVT_KBD_DELAY(); /* 7 us delay */
dt = inb(CONTROLLER_DATA); /* get it 8042 data */
@@ -1087,9 +1093,12 @@ pccnprobe(struct consdev *cp)
if ((u_int)cdevsw[maj].d_open == (u_int)pcopen)
break;
}
+
if (maj == nchrdev)
+ {
/* we are not in cdevsw[], give up */
panic("pcvt is not in cdevsw[]");
+ }
/* initialize required fields */
@@ -1221,27 +1230,6 @@ pcparam(struct tty *tp, struct termios *t)
return(0);
}
-#if PCVT_NEEDPG /* this is moved to cons.c in patchkit 0.2.2 and higher */
-
-int
-pg (char *p,
- int q, int r, int s, int t, int u,
- int v, int w, int x, int y, int z)
-{
-
-#if !PCVT_USL_VT_COMPAT
- vgapage(0);
-#else
- switch_screen(0, 0);
-#endif /* !PCVT_USL_VT_COMPAT */
-
- printf(p,q,r,s,t,u,v,w,x,y,z);
- printf("\n");
- return(getchar());
-}
-
-#endif /* PCVT_NEEDPG */
-
/* special characters */
#define bs 8
#define lf 10
@@ -1536,11 +1524,6 @@ pcvt_xmode_set(int on, struct proc *p)
}
#endif /* XSERVER && !PCVT_USL_VT_COMPAT */
-#if PCVT_386BSD /* dummies required to work with patchkit 0.2.4 */
-void cons_highlight (void) {}
-void cons_normal (void) {}
-#endif /* PCVT_386BSD */
-
#endif /* NVT > 0 */
/*-------------------------- E O F -------------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_ext.c b/sys/i386/isa/pcvt/pcvt_ext.c
index d055584..32a89a0 100644
--- a/sys/i386/isa/pcvt/pcvt_ext.c
+++ b/sys/i386/isa/pcvt/pcvt_ext.c
@@ -35,7 +35,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_ext.c, 3.20, Last Edit-Date: [Fri Mar 24 20:58:28 1995]
+ * @(#)pcvt_ext.c, 3.20, Last Edit-Date: [Thu Apr 6 10:07:45 1995]
*
*/
@@ -61,6 +61,9 @@
* -hm multiple X server bugfixes from Lon Willett
* -hm patch from John Kohl fixing tsleep bug in usl_vt_ioctl()
* -hm bugfix: clear 25th line when switching to a force 24 lines vt
+ * -jw add some forward declarations
+ * -hm fixing MDA re-init when leaving X
+ * -hm patch from John Kohl fixing potential divide by 0 problem
*
*---------------------------------------------------------------------------*/
@@ -70,7 +73,6 @@
#include "pcvt_hdr.h" /* global include */
static int s3testwritable( void );
-
static int et4000_col( int );
static int wd90c11_col( int );
static int tri9000_col( int );
@@ -2187,19 +2189,25 @@ switch_screen(int n, int oldgrafx, int newgrafx)
/* re-initialize lost MDA information */
if(adaptor_type == MDA_ADAPTOR)
{
- /*
- * Due to the fact that HGC registers are
- * write-only, the Xserver can only make
- * guesses about the state the HGC adaptor
- * has been before turning on X mode. Thus,
- * the display must be re-enabled now, and
- * the cursor shape and location restored.
- */
- /* enable display, text mode */
- outb(GN_DMCNTLM, 0x28);
-
-/* XXX - something missing here ? Joerg ??? */
-
+ /*
+ * Due to the fact that HGC registers are write-only,
+ * the Xserver can only make guesses about the state
+ * the HGC adaptor has been before turning on X mode.
+ * Thus, the display must be re-enabled now, and the
+ * cursor shape and location restored.
+ */
+ outb(GN_DMCNTLM, 0x28); /* enable display, text mode */
+ outb(addr_6845, CRTC_CURSORH); /* select high register */
+ outb(addr_6845+1,
+ ((vsp->Crtat + vsp->cur_offset) - Crtat) >> 8);
+ outb(addr_6845, CRTC_CURSORL); /* select low register */
+ outb(addr_6845+1,
+ ((vsp->Crtat + vsp->cur_offset) - Crtat));
+
+ outb(addr_6845, CRTC_CURSTART); /* select high register */
+ outb(addr_6845+1, vsp->cursor_start);
+ outb(addr_6845, CRTC_CUREND); /* select low register */
+ outb(addr_6845+1, vsp->cursor_end);
}
/* make status display happy */
@@ -2743,7 +2751,11 @@ usl_vt_ioctl(Dev_t dev, int cmd, caddr_t data, int flag, struct proc *p)
int pitch = *(int *)data & 0xffff;
#if PCVT_NETBSD
- sysbeep(PCVT_SYSBEEPF / pitch, duration * hz / 1000);
+ if(pitch != 0)
+ {
+ sysbeep(PCVT_SYSBEEPF / pitch,
+ duration * hz / 1000);
+ }
#else /* PCVT_NETBSD */
sysbeep(pitch, duration * hz / 3000);
#endif /* PCVT_NETBSD */
diff --git a/sys/i386/isa/pcvt/pcvt_hdr.h b/sys/i386/isa/pcvt/pcvt_hdr.h
index 5e05036..517969a 100644
--- a/sys/i386/isa/pcvt/pcvt_hdr.h
+++ b/sys/i386/isa/pcvt/pcvt_hdr.h
@@ -32,7 +32,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_hdr.h, 3.20, Last Edit-Date: [Wed Mar 8 21:00:00 1995]
+ * @(#)pcvt_hdr.h, 3.20, Last Edit-Date: [Fri Apr 7 10:16:58 1995]
*
*/
@@ -59,13 +59,15 @@
* -hm added pcstop (patch from Onno)
* -hm multiple X server bugfixes from Lon Willett
* -hm patch from Joerg for FreeBSD pre-2.1
+ * -jw adding more support for FreeBSD pre-2.1
*
*---------------------------------------------------------------------------*/
-#define PCVT_REL "3.20-b23" /* driver attach announcement */
+#define PCVT_REL "3.20-b24" /* driver attach announcement */
/* see also: pcvt_ioctl.h */
#if PCVT_FREEBSD >= 200
+
#include <sys/param.h>
#include <sys/conf.h>
#include <sys/ioctl.h>
@@ -79,7 +81,9 @@
#include <sys/syslog.h>
#include <sys/malloc.h>
#include <sys/time.h>
+
#else /* ! PCVT_FREEBSD >= 200 */
+
#include "param.h"
#include "conf.h"
#include "ioctl.h"
@@ -93,6 +97,7 @@
#include "syslog.h"
#include "malloc.h"
#include "time.h"
+
#endif /* PCVT_FREEBSD >= 200 */
#include "pcvt_conf.h"
@@ -158,15 +163,15 @@
#if PCVT_FREEBSD >= 200
#include <machine/pc/display.h>
+#if PCVT_FREEBSD > 200
#include <machine/clock.h>
#include <machine/md_var.h>
-
+#endif
#include <vm/vm_kern.h>
-#else
+#else /* PCVT_FREEBSD >= 200 */
#include "machine/pc/display.h"
-
#include "vm/vm_kern.h"
-#endif
+#endif /* PCVT_FREEBSD >= 200 */
#if PCVT_FREEBSD > 205
#include <sys/devconf.h>
@@ -187,11 +192,6 @@
/* perform option consistency checks */
-#if defined PCVT_386BSD && PCVT_386BSD != 0
-#undef PCVT_386BSD
-#define PCVT_386BSD 1
-#endif
-
#if defined PCVT_FREEBSD && PCVT_FREEBSD == 1
# undef PCVT_FREEBSD
# define PCVT_FREEBSD 102 /* assume 1.0 release */
@@ -202,13 +202,11 @@
#define PCVT_NETBSD 9 /* assume 0.9 release for now */
#endif
-#if PCVT_386BSD + PCVT_FREEBSD + PCVT_NETBSD == 0
-# error "pcvt_hdr.h: You MUST define one of PCVT_{386,NET,FREE}BSD \
+#if PCVT_FREEBSD + PCVT_NETBSD == 0
+# error "pcvt_hdr.h: You MUST define one of PCVT_{NET,FREE}BSD \
in the config file"
-#elif (PCVT_386BSD && (PCVT_FREEBSD || PCVT_NETBSD)) || \
- (PCVT_NETBSD && (PCVT_FREEBSD || PCVT_386BSD)) || \
- (PCVT_FREEBSD && (PCVT_386BSD || PCVT_NETBSD))
-# error "pcvt_hdr.h: You should only define *one* of PCVT_{386,NET,FREE}BSD \
+#elif (PCVT_FREEBSD && PCVT_NETBSD)
+# error "pcvt_hdr.h: You CAN only define *one* of PCVT_{NET,FREE}BSD \
in the config file"
#endif
@@ -236,12 +234,6 @@ in the config file"
#endif /* XSERVER */
-/* #undef PCVT_NEEDPG is mandatory for PCVT_NETBSD and PCVT_FREEBSD */
-#if (PCVT_NETBSD || PCVT_FREEBSD) && PCVT_NEEDPG
-#undef PCVT_NEEDPG
-#define PCVT_NEEDPG 0
-#endif
-
/* PCVT_SCREENSAVER is mandatory for PCVT_PRETTYSCRNS */
#if PCVT_PRETTYSCRNS && !PCVT_SCREENSAVER
#undef PCVT_SCREENSAVER
@@ -1281,11 +1273,6 @@ int kbdioctl ( Dev_t dev, int cmd, caddr_t data, int flag );
void loadchar ( int fontset, int character, int char_scanlines,
u_char *char_table );
void mda2egaorvga ( void );
-
-#if PCVT_NEEDPG
-int pg ( char *p, int q, int r, int s, int t, int u, int v,
- int w, int x, int y, int z );
-#endif
void roll_up ( struct video_state *svsp, int n );
void select_vga_charset ( int vga_charset );
void set_2ndcharset ( void );
@@ -1390,4 +1377,32 @@ static __inline void vt_selattr(struct video_state *svsp)
#endif /* PCVT_INCLUDE_VT_SELATTR */
+
+/*---------------------------------------------------------------------------*
+ * produce 7 us delay accessing the keyboard controller
+ *---------------------------------------------------------------------------*/
+
+#if PCVT_PORTIO_DELAY
+ /* use multiple dummy accesses to port */
+ /* 0x84 to produce keyboard controller */
+ /* access delays */
+#define PCVT_KBD_DELAY() \
+ { u_char x = inb(0x84); } \
+ { u_char x = inb(0x84); } \
+ { u_char x = inb(0x84); } \
+ { u_char x = inb(0x84); } \
+ { u_char x = inb(0x84); } \
+ { u_char x = inb(0x84); }
+
+#else /* PCVT_PORTIO_DELAY */
+ /* use system supplied delay function for */
+ /* producing delays for accesssing the */
+ /* keyboard controller */
+#if PCVT_NETBSD > 9
+#define PCVT_KBD_DELAY() delay(7)
+#elif PCVT_FREEBSD || (PCVT_NETBSD <= 9)
+#define PCVT_KBD_DELAY() DELAY(7)
+#endif
+#endif /* PCVT_PORTIO_DELAY */
+
/*---------------------------------- E O F ----------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_kbd.c b/sys/i386/isa/pcvt/pcvt_kbd.c
index bd6984a..6fc53c4 100644
--- a/sys/i386/isa/pcvt/pcvt_kbd.c
+++ b/sys/i386/isa/pcvt/pcvt_kbd.c
@@ -38,7 +38,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_kbd.c, 3.20, Last Edit-Date: [Fri Mar 24 18:38:16 1995]
+ * @(#)pcvt_kbd.c, 3.20, Last Edit-Date: [Sun Apr 2 18:59:04 1995]
*
*/
@@ -308,12 +308,7 @@ kbd_response(void)
if (--timeo == 0)
return (-1);
-#if PCVT_NETBSD > 9
- delay(6); /* Gateway 2000 fix - ziff */
-#elif PCVT_FREEBSD || (PCVT_NETBSD <= 9)
- DELAY(6); /* Gateway 2000 fix - ziff */
-#endif
-
+ PCVT_KBD_DELAY(); /* 7 us delay */
ch = inb(CONTROLLER_DATA);
#if PCVT_SHOWKEYS
@@ -941,13 +936,7 @@ loop:
{
if (!noblock) /* source = 8042 */
{
-
-#if PCVT_NETBSD > 9
- delay(6); /* Gateway 2000 fix - ziff */
-#elif PCVT_FREEBSD || (PCVT_NETBSD <= 9)
- DELAY(6); /* Gateway 2000 fix - ziff */
-#endif
-
+ PCVT_KBD_DELAY(); /* 7 us delay */
dt = inb(CONTROLLER_DATA); /* get from obuf */
}
else /* source = keyboard fifo */
@@ -966,14 +955,8 @@ loop:
if (inb(CONTROLLER_CTRL) & STATUS_OUTPBF)
{
-
-#if PCVT_NETBSD > 9
- delay(6); /* Gateway 2000 fix - ziff */
-#elif PCVT_FREEBSD || (PCVT_NETBSD <= 9)
- DELAY(6); /* Gateway 2000 fix - ziff */
-#endif
-
- dt = inb(CONTROLLER_DATA); /* yes, get it ! */
+ PCVT_KBD_DELAY(); /* 7 us delay */
+ dt = inb(CONTROLLER_DATA); /* yes, get data */
#endif /* !PCVT_KBD_FIFO */
@@ -1261,13 +1244,7 @@ no_mouse_event:
{
if (!noblock) /* source = 8042 */
{
-
-#if PCVT_NETBSD > 9
- delay(6); /* Gateway 2000 fix - ziff */
-#elif PCVT_FREEBSD || (PCVT_NETBSD <= 9)
- DELAY(6); /* Gateway 2000 fix - ziff */
-#endif
-
+ PCVT_KBD_DELAY(); /* 7 us delay */
dt = inb(CONTROLLER_DATA);
}
else /* source = keyboard fifo */
@@ -1287,14 +1264,8 @@ no_mouse_event:
if(inb(CONTROLLER_CTRL) & STATUS_OUTPBF)
{
-
-#if PCVT_NETBSD > 9
- delay(6); /* Gateway 2000 fix - ziff */
-#elif PCVT_FREEBSD || (PCVT_NETBSD <= 9)
- DELAY(6); /* Gateway 2000 fix - ziff */
-#endif
-
- dt = inb(CONTROLLER_DATA); /* yes, get it ! */
+ PCVT_KBD_DELAY(); /* 7 us delay */
+ dt = inb(CONTROLLER_DATA); /* yes, get data ! */
}
#endif /* !PCVT_KBD_FIFO */
diff --git a/sys/i386/isa/pcvt/pcvt_kbd.h b/sys/i386/isa/pcvt/pcvt_kbd.h
index 33f84d4..f488d53 100644
--- a/sys/i386/isa/pcvt/pcvt_kbd.h
+++ b/sys/i386/isa/pcvt/pcvt_kbd.h
@@ -38,7 +38,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_kbd.h, 3.20, Last Edit-Date: [Wed Feb 22 12:53:51 1995]
+ * @(#)pcvt_kbd.h, 3.20, Last Edit-Date: [Sun Apr 2 18:59:08 1995]
*
*/
diff --git a/sys/i386/isa/pcvt/pcvt_out.c b/sys/i386/isa/pcvt/pcvt_out.c
index d564838..df6aeaa 100644
--- a/sys/i386/isa/pcvt/pcvt_out.c
+++ b/sys/i386/isa/pcvt/pcvt_out.c
@@ -35,7 +35,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_out.c, 3.20, Last Edit-Date: [Sun Feb 26 16:43:58 1995]
+ * @(#)pcvt_out.c, 3.20, Last Edit-Date: [Sun Apr 2 18:59:11 1995]
*
*/
diff --git a/sys/i386/isa/pcvt/pcvt_sup.c b/sys/i386/isa/pcvt/pcvt_sup.c
index a8044c7..728a9ab 100644
--- a/sys/i386/isa/pcvt/pcvt_sup.c
+++ b/sys/i386/isa/pcvt/pcvt_sup.c
@@ -37,7 +37,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_sup.c, 3.20, Last Edit-Date: [Sun Feb 19 19:59:38 1995]
+ * @(#)pcvt_sup.c, 3.20, Last Edit-Date: [Thu Apr 6 10:49:44 1995]
*
*/
@@ -57,6 +57,7 @@
* -hm getting PCVT_BURST reported correctly for FreeBSD 2.0
* -hm applying patch from Joerg fixing Crtat bug
* -hm moving ega/vga coldinit support code to mda2egaorvga()
+ * -hm patch from Thomas Eberhardt fixing force 24 lines fkey update
*
*---------------------------------------------------------------------------*/
@@ -262,10 +263,7 @@ vgapcvtid(struct pcvtid *data)
static void
vgapcvtinfo(struct pcvtinfo *data)
{
-#if PCVT_386BSD
- data->opsys = CONF_386BSD;
- data->opsysrel = PCVT_386BSD;
-#elif PCVT_NETBSD
+#if PCVT_NETBSD
data->opsys = CONF_NETBSD;
data->opsysrel = PCVT_NETBSD;
#elif PCVT_FREEBSD
@@ -335,9 +333,6 @@ vgapcvtinfo(struct pcvtinfo *data)
#if PCVT_SW0CNOUTP /* was FORCE8BIT */
| CONF_SW0CNOUTP
#endif
-#if PCVT_NEEDPG
- | CONF_NEEDPG
-#endif
#if PCVT_SETCOLOR
| CONF_SETCOLOR
#endif
@@ -356,6 +351,9 @@ vgapcvtinfo(struct pcvtinfo *data)
#if PCVT_USL_VT_COMPAT
| CONF_USL_VT_COMPAT
#endif
+#if PCVT_PORTIO_DELAY
+ | CONF_PORTIO_DELAY
+#endif
#if PCVT_INHIBIT_NUMLOCK
| CONF_INHIBIT_NUMLOCK
#endif
@@ -677,7 +675,20 @@ vid_setscreen(struct screeninfo *data, Dev_t dev)
vgacs[(vs[screen].vga_charset)].screen_size;
if(data->force_24lines != -1)
+ {
vs[screen].force24 = data->force_24lines;
+
+ if(vs[screen].force24)
+ {
+ swritefkl(2,(u_char *)"FORCE24 ENABLE *",
+ &vs[screen]);
+ }
+ else
+ {
+ swritefkl(2,(u_char *)"FORCE24 ENABLE ",
+ &vs[screen]);
+ }
+ }
if((data->screen_size == SIZ_25ROWS) ||
(data->screen_size == SIZ_28ROWS) ||
diff --git a/sys/i386/isa/pcvt/pcvt_tbl.h b/sys/i386/isa/pcvt/pcvt_tbl.h
index c1b3ce2..193d379 100644
--- a/sys/i386/isa/pcvt/pcvt_tbl.h
+++ b/sys/i386/isa/pcvt/pcvt_tbl.h
@@ -29,7 +29,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_tbl.h, 3.20, Last Edit-Date: [Thu Jan 5 15:56:17 1995]
+ * @(#)pcvt_tbl.h, 3.20, Last Edit-Date: [Sun Apr 2 18:59:19 1995]
*
*/
diff --git a/sys/i386/isa/pcvt/pcvt_vtf.c b/sys/i386/isa/pcvt/pcvt_vtf.c
index 6269700..4f7317f 100644
--- a/sys/i386/isa/pcvt/pcvt_vtf.c
+++ b/sys/i386/isa/pcvt/pcvt_vtf.c
@@ -35,7 +35,7 @@
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*
*
- * @(#)pcvt_vtf.c, 3.20, Last Edit-Date: [Wed Mar 29 20:45:48 1995]
+ * @(#)pcvt_vtf.c, 3.20, Last Edit-Date: [Wed Apr 5 18:08:50 1995]
*/
/*---------------------------------------------------------------------------*
@@ -53,6 +53,7 @@
* -jw/hm fixing bug in roll_up() and roll_down()
* -hm fastscroll/Crtat bugfix from Lon Willett
* -hm patch for non-XSERVER/UCONSOLE compiles from Rafal Boni
+ * -hm bugfix: PCVT_USL_COMPAT renamed to PCVT_USL_VT_COMPAT ...
*
*---------------------------------------------------------------------------*/
@@ -1947,7 +1948,7 @@ roll_up(struct video_state *svsp, int n)
{
u_short *Memory =
-#if defined(PCVT_USL_COMPAT)
+#if PCVT_USL_VT_COMPAT
(vsp != svsp || (vsp->vt_status & VT_GRAFX)) ?
#else
(vsp != svsp) ?
@@ -1968,7 +1969,7 @@ roll_up(struct video_state *svsp, int n)
svsp->Crtat += n * svsp->maxcol;
}
-#if defined(PCVT_USL_COMPAT)
+#if PCVT_USL_VT_COMPAT
if(vsp == svsp && !(vsp->vt_status & VT_GRAFX))
#else
if(vsp == svsp)
@@ -2014,7 +2015,7 @@ roll_down(struct video_state *svsp, int n)
{
u_short *Memory =
-#if defined(PCVT_USL_COMPAT)
+#if PCVT_USL_VT_COMPAT
(vsp != svsp || (vsp->vt_status & VT_GRAFX)) ?
#else
(vsp != svsp) ?
@@ -2034,7 +2035,7 @@ roll_down(struct video_state *svsp, int n)
svsp->Crtat -= n * svsp->maxcol;
}
-#if defined(PCVT_USL_COMPAT)
+#if PCVT_USL_VT_COMPAT
if(vsp == svsp && !(vsp->vt_status & VT_GRAFX))
#else
if(vsp == svsp)
OpenPOWER on IntegriCloud