summaryrefslogtreecommitdiff
path: root/sys/arch/i386/isa
diff options
context:
space:
mode:
authorAaron Campbell <aaron@cvs.openbsd.org>1999-10-16 18:56:38 +0000
committerAaron Campbell <aaron@cvs.openbsd.org>1999-10-16 18:56:38 +0000
commitc58f75931455fa39eee6866e375b5791c6478fea (patch)
tree4941afb4376222061c2a617df76e0949198bf70a /sys/arch/i386/isa
parentdadb7bf9c6f6f6c27e774fd5edd5c5fd9c0b98b9 (diff)
- Add support for a traditional PC display (16 colors and use the standard IBM
font) and make it the default mode. This is more or less a hack, since pcvt was developed only to be a vt220 terminal emulator. - Document new default mode in pcvt(4). - Add -o option to scon(1) for toggling between the new and legacy modes.
Diffstat (limited to 'sys/arch/i386/isa')
-rw-r--r--sys/arch/i386/isa/pcvt/Util/pcvtdoc/pcvt.417
-rw-r--r--sys/arch/i386/isa/pcvt/Util/scon/scon.112
-rw-r--r--sys/arch/i386/isa/pcvt/Util/scon/scon.c21
-rw-r--r--sys/arch/i386/isa/pcvt/pcvt_hdr.h3
-rw-r--r--sys/arch/i386/isa/pcvt/pcvt_ioctl.h3
-rw-r--r--sys/arch/i386/isa/pcvt/pcvt_out.c8
-rw-r--r--sys/arch/i386/isa/pcvt/pcvt_sup.c22
-rw-r--r--sys/arch/i386/isa/pcvt/pcvt_vtf.c38
8 files changed, 111 insertions, 13 deletions
diff --git a/sys/arch/i386/isa/pcvt/Util/pcvtdoc/pcvt.4 b/sys/arch/i386/isa/pcvt/Util/pcvtdoc/pcvt.4
index fb755c54279..165095c832e 100644
--- a/sys/arch/i386/isa/pcvt/Util/pcvtdoc/pcvt.4
+++ b/sys/arch/i386/isa/pcvt/Util/pcvtdoc/pcvt.4
@@ -1,4 +1,4 @@
-.\" $OpenBSD: pcvt.4,v 1.17 1999/10/07 18:37:54 wvdputte Exp $
+.\" $OpenBSD: pcvt.4,v 1.18 1999/10/16 18:56:37 aaron Exp $
.\"
.\" Copyright (c) 1992, 1995 Hellmuth Michaelis, Brian Dunford-Shore,
.\" Joerg Wunsch and Holger Veit.
@@ -83,8 +83,21 @@ functionality. See
.Sx Features
for a detailed description.
+.Sy Note:
+As of
+.Ox 2.6 ,
+.Nm
+does not do character mapping by default in favor of a traditional PC display
+where 16 colors are available and the standard IBM font is used.
+See the
+.Fl o
+flag in
+.Xr scon 1
+to toggle between this mode and the old mode.
+
.Ss VT Keys
-Despite the complexity of options, if installed in a normal OpenBSD
+Despite the complexity of options, if installed in a normal
+.Ox
configuration with the default options, on a standard i386 architecture
system, you can use multiple virtual terminals.
The key sequence used to move among virtual terminals are,
diff --git a/sys/arch/i386/isa/pcvt/Util/scon/scon.1 b/sys/arch/i386/isa/pcvt/Util/scon/scon.1
index 615b2fa98ca..37f9387ed11 100644
--- a/sys/arch/i386/isa/pcvt/Util/scon/scon.1
+++ b/sys/arch/i386/isa/pcvt/Util/scon/scon.1
@@ -1,4 +1,4 @@
-.\" $OpenBSD: scon.1,v 1.9 1999/09/29 22:29:10 aaron Exp $
+.\" $OpenBSD: scon.1,v 1.10 1999/10/16 18:56:37 aaron Exp $
.\"
.\" Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch
.\"
@@ -49,6 +49,7 @@
.Op Fl H
.Op Fl l
.Op Fl m
+.Op Fl o
.Op Fl v
.Op Fl V
.Op Fl s Ar lines
@@ -122,6 +123,15 @@ any HP escape sequences and without displaying function key labels.
Switch the specified/current screen into a mixed HP/VT220 mode. That is, that
in addition to the full VT220 emulation, the HP function key labels and the
escape sequences for handling the labels are available to the user.
+.It Fl o
+Toggle
+.Dq legacy
+pcvt mode with traditional PC display mode.
+As of
+.Ox 2.6 ,
+character mapping is turned off by default in favour of a traditional PC
+display with 16 colors and the standard IBM font.
+This option has no effect in line modes other than 25.
.It Fl s
Specify the number of character lines on the screen. Possible parameters are
25, 28, 35, 40, 43 or 50. To use all this screen sizes, the fonts required
diff --git a/sys/arch/i386/isa/pcvt/Util/scon/scon.c b/sys/arch/i386/isa/pcvt/Util/scon/scon.c
index 2a0945df9d2..250439b2525 100644
--- a/sys/arch/i386/isa/pcvt/Util/scon/scon.c
+++ b/sys/arch/i386/isa/pcvt/Util/scon/scon.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: scon.c,v 1.15 1999/10/07 18:26:21 wvdputte Exp $ */
+/* $OpenBSD: scon.c,v 1.16 1999/10/16 18:56:37 aaron Exp $ */
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch
@@ -72,6 +72,7 @@ int bflag = -1;
unsigned int scrollback_pages = 8;
int lflag = -1;
int mflag = -1;
+int oflag = -1;
int current = -1;
int pflag = -1;
int hflag = -1;
@@ -208,7 +209,7 @@ char *argv[];
int c;
int fd;
- while( (c = getopt(argc, argv, "ab:c:d:f:HVlms:t:vp:18")) != -1)
+ while( (c = getopt(argc, argv, "ab:c:d:f:HVlmos:t:vp:18")) != -1)
{
switch(c)
{
@@ -270,6 +271,10 @@ char *argv[];
vflag++;
break;
+ case 'o':
+ oflag = 1;
+ break;
+
case 'p':
if(!strcmp(optarg, "list"))
{
@@ -343,7 +348,7 @@ char *argv[];
if(dflag == -1 && lflag == -1 && current == -1 && pflag == -1 &&
hflag == -1 && res == -1 && Pflag == 0 && tflag == 0 && fflag == -1
- && colms == 0 && mflag == -1 && bflag == -1)
+ && colms == 0 && mflag == -1 && bflag == -1 && oflag == -1)
{
lflag = 1;
}
@@ -389,6 +394,16 @@ char *argv[];
exit(0);
}
+ if (oflag == 1)
+ {
+ if (ioctl(fd, TOGGLEPCDISP, &oflag) < 0)
+ {
+ perror("ioctl(TOGGLEPCDISP)");
+ exit(2);
+ }
+ exit(0);
+ }
+
if(mflag == 1) /* return monitor type */
{
printmonitor(fd);
diff --git a/sys/arch/i386/isa/pcvt/pcvt_hdr.h b/sys/arch/i386/isa/pcvt/pcvt_hdr.h
index 8cf173166ab..8973098a469 100644
--- a/sys/arch/i386/isa/pcvt/pcvt_hdr.h
+++ b/sys/arch/i386/isa/pcvt/pcvt_hdr.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pcvt_hdr.h,v 1.25 1999/09/29 22:29:10 aaron Exp $ */
+/* $OpenBSD: pcvt_hdr.h,v 1.26 1999/10/16 18:56:35 aaron Exp $ */
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
@@ -617,6 +617,7 @@
EXTERN u_char *more_chars; /* response buffer via kbd */
EXTERN int char_count; /* response char count */
EXTERN u_char color; /* color or mono display */
+EXTERN u_char pcdisp; /* vt220 or traditional pc features */
EXTERN u_short kern_attr; /* kernel messages char attributes */
EXTERN u_short user_attr; /* character attributes */
diff --git a/sys/arch/i386/isa/pcvt/pcvt_ioctl.h b/sys/arch/i386/isa/pcvt/pcvt_ioctl.h
index a702caf4320..68285ba0c3e 100644
--- a/sys/arch/i386/isa/pcvt/pcvt_ioctl.h
+++ b/sys/arch/i386/isa/pcvt/pcvt_ioctl.h
@@ -1,4 +1,4 @@
-/* $OpenBSD: pcvt_ioctl.h,v 1.11 1999/09/29 22:29:09 aaron Exp $ */
+/* $OpenBSD: pcvt_ioctl.h,v 1.12 1999/10/16 18:56:36 aaron Exp $ */
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
@@ -479,6 +479,7 @@ struct pcvtinfo { /* compile time option values */
#define VGASETCOLMS _IOW('V', 115, int) /* set number of columns (80/132)*/
#define SETSCROLLSIZE _IOW('V', 116, u_short) /* scrollbuffer size */
+#define TOGGLEPCDISP _IOW('V', 117, int) /* toggle traditional pc mode */
/*
* only useful if compiled with ``XSERVER'' defined, but always here:
diff --git a/sys/arch/i386/isa/pcvt/pcvt_out.c b/sys/arch/i386/isa/pcvt/pcvt_out.c
index acb7f3a3e68..3811612ca01 100644
--- a/sys/arch/i386/isa/pcvt/pcvt_out.c
+++ b/sys/arch/i386/isa/pcvt/pcvt_out.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pcvt_out.c,v 1.12 1999/09/29 22:29:10 aaron Exp $ */
+/* $OpenBSD: pcvt_out.c,v 1.13 1999/10/16 18:56:36 aaron Exp $ */
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
@@ -92,6 +92,11 @@ static __inline void write_char (svsp, attrib, ch)
struct video_state *svsp;
u_short attrib, ch;
{
+ if (pcdisp) {
+ *video = attrib | ch;
+ return;
+ }
+
if ((ch >= 0x20) && (ch <= 0x7f)) /* use GL if ch >= 0x20 */
{
if(!svsp->ss) /* single shift G2/G3 -> GL ? */
@@ -1017,6 +1022,7 @@ vt_coldinit(void)
struct video_state *svsp;
do_initialization = 0; /* reset init necessary flag */
+ pcdisp = 1; /* turn on traditional pc colors/font */
/* get the equipment byte from the RTC chip */
diff --git a/sys/arch/i386/isa/pcvt/pcvt_sup.c b/sys/arch/i386/isa/pcvt/pcvt_sup.c
index 001eb999ea2..7c1594d89b5 100644
--- a/sys/arch/i386/isa/pcvt/pcvt_sup.c
+++ b/sys/arch/i386/isa/pcvt/pcvt_sup.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pcvt_sup.c,v 1.10 1999/09/29 22:29:10 aaron Exp $ */
+/* $OpenBSD: pcvt_sup.c,v 1.11 1999/10/16 18:56:36 aaron Exp $ */
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
@@ -235,6 +235,13 @@ vgaioctl(Dev_t dev, int cmd, caddr_t data, int flag)
reallocate_scrollbuffer(vsp, scrollback_pages);
break;
+ case TOGGLEPCDISP:
+ if (vsp->screen_rowsize == 25) {
+ pcdisp = !pcdisp;
+ set_2ndcharset();
+ }
+ break;
+
case TIOCSWINSZ:
/* do nothing here */
break;
@@ -713,6 +720,8 @@ set_screen_size(struct video_state *svsp, int size)
if(vgacs[i].screen_size == size)
{
set_charset(svsp, i);
+ pcdisp = 0;
+ set_2ndcharset();
clr_parms(svsp); /* escape parameter init */
svsp->state = STATE_INIT; /* initial state */
svsp->scrr_beg = 0; /* start of scrolling region */
@@ -1791,9 +1800,16 @@ set_2ndcharset(void)
inb(GN_INPSTAT1M);
/* select color plane enable reg, caution: set ATC access bit ! */
-
outb(ATC_INDEX, (ATC_COLPLEN | ATC_ACCESS));
- outb(ATC_DATAW, 0x07); /* disable plane 3 */
+
+ if (!pcdisp) {
+ outb(ATC_DATAW, 0x07); /* disable plane 3 */
+ sgr_tab_color[02] = (BG_BROWN | FG_LIGHTGREY);
+ }
+ else {
+ outb(ATC_DATAW, 0x0F); /* enable plane 3 */
+ sgr_tab_color[02] = (BG_BLACK | FG_CYAN);
+ }
}
#if PCVT_SCREENSAVER
diff --git a/sys/arch/i386/isa/pcvt/pcvt_vtf.c b/sys/arch/i386/isa/pcvt/pcvt_vtf.c
index b47e9c97a20..37e24c64752 100644
--- a/sys/arch/i386/isa/pcvt/pcvt_vtf.c
+++ b/sys/arch/i386/isa/pcvt/pcvt_vtf.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: pcvt_vtf.c,v 1.6 1998/11/16 23:47:57 weingart Exp $ */
+/* $OpenBSD: pcvt_vtf.c,v 1.7 1999/10/16 18:56:36 aaron Exp $ */
/*
* Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
@@ -149,10 +149,18 @@ vt_sgr(struct video_state *svsp)
{
case 0: /* reset to normal attributes */
svsp->vtsgr = VT_NORMAL;
+ if (pcdisp)
+ setcolor = 0;
break;
case 1: /* bold */
svsp->vtsgr |= VT_BOLD;
+ if (pcdisp) {
+ if ((setcolor >> 8) == 0)
+ setcolor = (FG_LIGHTGREY << 8);
+ setcolor |= (FG_INTENSE << 8);
+ colortouched = 1;
+ }
break;
case 4: /* underline */
@@ -161,14 +169,30 @@ vt_sgr(struct video_state *svsp)
case 5: /* blinking */
svsp->vtsgr |= VT_BLINK;
+ if (pcdisp) {
+ setcolor |= (FG_BLINK << 8);
+ colortouched = 1;
+ }
break;
case 7: /* reverse */
svsp->vtsgr |= VT_INVERSE;
+ if (pcdisp) {
+ if ((setcolor >> 8) == 0)
+ setcolor = (FG_LIGHTGREY << 8);
+ setcolor = (((setcolor>>8) & 0x88) |
+ ((((setcolor>>8) >> 4) |
+ ((setcolor>>8) << 4)) & 0x77)) << 8;
+ colortouched = 1;
+ }
break;
case 22: /* not bold */
svsp->vtsgr &= ~VT_BOLD;
+ if (pcdisp) {
+ setcolor &= ~(FG_INTENSE << 8);
+ colortouched = 1;
+ }
break;
case 24: /* not underlined */
@@ -177,10 +201,20 @@ vt_sgr(struct video_state *svsp)
case 25: /* not blinking */
svsp->vtsgr &= ~VT_BLINK;
+ if (pcdisp) {
+ setcolor &= ~(FG_BLINK << 8);
+ colortouched = 1;
+ }
break;
case 27: /* not reverse */
svsp->vtsgr &= ~VT_INVERSE;
+ if (pcdisp) {
+ setcolor = (((setcolor>>8) & 0x88) |
+ ((((setcolor>>8) >> 4) |
+ ((setcolor>>8) << 4)) & 0x77)) << 8;
+ colortouched = 1;
+ }
break;
case 30: /* foreground colors */
@@ -196,6 +230,8 @@ vt_sgr(struct video_state *svsp)
colortouched = 1;
setcolor &= ~(FG_MASK<<8);
setcolor |= ((fgansitopc[(svsp->parms[i-1]-30) & 7]) << 8);
+ if (pcdisp && svsp->vtsgr & VT_BOLD)
+ setcolor |= (FG_INTENSE << 8);
}
break;