summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Makefile.inc16
-rw-r--r--ObsoleteFiles.inc53
-rw-r--r--etc/defaults/rc.conf19
-rw-r--r--etc/mtree/BSD.usr.dist8
-rwxr-xr-xetc/rc.d/Makefile2
-rw-r--r--etc/rc.d/isdnd10
-rw-r--r--etc/rc.d/pcvt233
-rw-r--r--etc/rc.d/syscons4
-rwxr-xr-xrelease/picobsd/build/picobsd2
-rw-r--r--share/man/man4/Makefile2
-rw-r--r--share/man/man4/atkbd.45
-rw-r--r--share/man/man4/kbdmux.41
-rw-r--r--share/man/man4/pcvt.4747
-rw-r--r--share/man/man4/splash.42
-rw-r--r--share/man/man4/vkbd.41
-rw-r--r--share/man/man5/rc.conf.5138
-rw-r--r--share/man/man5/src.conf.55
-rw-r--r--share/man/man7/hier.78
-rw-r--r--share/mk/bsd.own.mk2
-rw-r--r--sys/conf/files.i3866
-rw-r--r--sys/conf/options.i38624
-rw-r--r--sys/dev/atkbdc/atkbd.c3
-rw-r--r--sys/dev/syscons/scvesactl.c1
-rw-r--r--sys/i386/conf/GENERIC5
-rw-r--r--sys/i386/conf/NOTES18
-rw-r--r--sys/i386/include/pcvt_ioctl.h536
-rw-r--r--sys/i386/isa/pcvt/pcvt_conf.h247
-rw-r--r--sys/i386/isa/pcvt/pcvt_drv.c827
-rw-r--r--sys/i386/isa/pcvt/pcvt_ext.c2750
-rw-r--r--sys/i386/isa/pcvt/pcvt_hdr.h1102
-rw-r--r--sys/i386/isa/pcvt/pcvt_kbd.c2523
-rw-r--r--sys/i386/isa/pcvt/pcvt_kbd.h396
-rw-r--r--sys/i386/isa/pcvt/pcvt_out.c2227
-rw-r--r--sys/i386/isa/pcvt/pcvt_sup.c2061
-rw-r--r--sys/i386/isa/pcvt/pcvt_tbl.h470
-rw-r--r--sys/i386/isa/pcvt/pcvt_vtf.c2154
-rw-r--r--sys/pc98/include/pcvt_ioctl.h6
-rw-r--r--tools/build/options/WITHOUT_PCVT4
-rw-r--r--tools/make_libdeps.sh1
-rw-r--r--usr.sbin/Makefile4
-rw-r--r--usr.sbin/moused/moused.86
-rw-r--r--usr.sbin/pcvt/Makefile9
-rw-r--r--usr.sbin/pcvt/Makefile.inc5
-rw-r--r--usr.sbin/pcvt/Misc/Doc/Acknowledgements111
-rw-r--r--usr.sbin/pcvt/Misc/Doc/Bibliography189
-rw-r--r--usr.sbin/pcvt/Misc/Doc/CharGen149
-rw-r--r--usr.sbin/pcvt/Misc/Doc/Charsets99
-rw-r--r--usr.sbin/pcvt/Misc/Doc/EscapeSequences268
-rw-r--r--usr.sbin/pcvt/Misc/Doc/Keyboard.HP286
-rw-r--r--usr.sbin/pcvt/Misc/Doc/Keyboard.VT231
-rw-r--r--usr.sbin/pcvt/Misc/Doc/Makefile9
-rw-r--r--usr.sbin/pcvt/Misc/Doc/NotesAndHints323
-rw-r--r--usr.sbin/pcvt/Misc/Etc/Makefile7
-rw-r--r--usr.sbin/pcvt/Misc/Etc/Termcap284
-rw-r--r--usr.sbin/pcvt/Misc/Etc/Terminfo41
-rw-r--r--usr.sbin/pcvt/Misc/Etc/pcvt.el19
-rw-r--r--usr.sbin/pcvt/Misc/Etc/pcvt.sh163
-rw-r--r--usr.sbin/pcvt/Misc/Etc/xmodmap-german117
-rw-r--r--usr.sbin/pcvt/Misc/Makefile8
-rw-r--r--usr.sbin/pcvt/Misc/Makefile.inc4
-rw-r--r--usr.sbin/pcvt/Misc/README.FIRST184
-rw-r--r--usr.sbin/pcvt/cursor/Makefile5
-rw-r--r--usr.sbin/pcvt/cursor/cursor.175
-rw-r--r--usr.sbin/pcvt/cursor/cursor.c137
-rw-r--r--usr.sbin/pcvt/demo/Makefile55
-rw-r--r--usr.sbin/pcvt/demo/README20
-rw-r--r--usr.sbin/pcvt/demo/chardemo.vt.gz.uu54
-rw-r--r--usr.sbin/pcvt/demo/colors.vt.gz.uu16
-rw-r--r--usr.sbin/pcvt/demo/cowscene.vt.gz.uu90
-rw-r--r--usr.sbin/pcvt/demo/outerlimit.vt.gz.uu193
-rw-r--r--usr.sbin/pcvt/demo/playvt.c113
-rw-r--r--usr.sbin/pcvt/demo/sgr.vt.gz.uu12
-rw-r--r--usr.sbin/pcvt/demo/twzone.vt.gz.uu350
-rw-r--r--usr.sbin/pcvt/demo/xmas.vt.gz.uu110
-rw-r--r--usr.sbin/pcvt/fed/Makefile9
-rw-r--r--usr.sbin/pcvt/fed/edit.c331
-rw-r--r--usr.sbin/pcvt/fed/fed.159
-rw-r--r--usr.sbin/pcvt/fed/fed.c159
-rw-r--r--usr.sbin/pcvt/fed/fed.h123
-rw-r--r--usr.sbin/pcvt/fed/misc.c344
-rw-r--r--usr.sbin/pcvt/fed/select.c325
-rw-r--r--usr.sbin/pcvt/fontedit/Makefile5
-rw-r--r--usr.sbin/pcvt/fontedit/README36
-rw-r--r--usr.sbin/pcvt/fontedit/fontedit.192
-rw-r--r--usr.sbin/pcvt/fontedit/fontedit.c926
-rw-r--r--usr.sbin/pcvt/fonts/COPYRIGHT38
-rw-r--r--usr.sbin/pcvt/fonts/Makefile14
-rw-r--r--usr.sbin/pcvt/fonts/vt100pc.814.uu83
-rw-r--r--usr.sbin/pcvt/fonts/vt100sg.814.uu83
-rw-r--r--usr.sbin/pcvt/fonts/vt220h.808.uu49
-rw-r--r--usr.sbin/pcvt/fonts/vt220h.810.uu60
-rw-r--r--usr.sbin/pcvt/fonts/vt220h.814.uu83
-rw-r--r--usr.sbin/pcvt/fonts/vt220h.816.uu95
-rw-r--r--usr.sbin/pcvt/fonts/vt220l.808.uu49
-rw-r--r--usr.sbin/pcvt/fonts/vt220l.810.uu60
-rw-r--r--usr.sbin/pcvt/fonts/vt220l.814.uu83
-rw-r--r--usr.sbin/pcvt/fonts/vt220l.816.uu95
-rw-r--r--usr.sbin/pcvt/ispcvt/Makefile6
-rw-r--r--usr.sbin/pcvt/ispcvt/ispcvt.899
-rw-r--r--usr.sbin/pcvt/ispcvt/ispcvt.c250
-rw-r--r--usr.sbin/pcvt/kbdio/Makefile23
-rw-r--r--usr.sbin/pcvt/kbdio/kbdio.y331
-rw-r--r--usr.sbin/pcvt/kbdio/lex.l99
-rw-r--r--usr.sbin/pcvt/kcon/Makefile11
-rw-r--r--usr.sbin/pcvt/kcon/kcon.1130
-rw-r--r--usr.sbin/pcvt/kcon/kcon.c743
-rw-r--r--usr.sbin/pcvt/keycap/Makefile20
-rw-r--r--usr.sbin/pcvt/keycap/keycap.3125
-rw-r--r--usr.sbin/pcvt/keycap/keycap.c383
-rw-r--r--usr.sbin/pcvt/keycap/keycap.h49
-rw-r--r--usr.sbin/pcvt/keycap/keycap.src627
-rw-r--r--usr.sbin/pcvt/keycap/man5/keycap.5129
-rw-r--r--usr.sbin/pcvt/loadfont/Makefile5
-rw-r--r--usr.sbin/pcvt/loadfont/loadfont.187
-rw-r--r--usr.sbin/pcvt/loadfont/loadfont.c306
-rw-r--r--usr.sbin/pcvt/scon/Makefile5
-rw-r--r--usr.sbin/pcvt/scon/scon.1221
-rw-r--r--usr.sbin/pcvt/scon/scon.c782
-rw-r--r--usr.sbin/pcvt/userkeys/Makefile5
-rw-r--r--usr.sbin/pcvt/userkeys/vt220keys.1175
-rw-r--r--usr.sbin/pcvt/userkeys/vt220keys.c287
-rw-r--r--usr.sbin/pcvt/vgaio/CAUTION28
-rw-r--r--usr.sbin/pcvt/vgaio/Makefile24
-rw-r--r--usr.sbin/pcvt/vgaio/lex.l83
-rw-r--r--usr.sbin/pcvt/vgaio/vgaio.8141
-rw-r--r--usr.sbin/pcvt/vgaio/vgaio.h60
-rw-r--r--usr.sbin/pcvt/vgaio/vgaio.y253
127 files changed, 57 insertions, 28986 deletions
diff --git a/Makefile.inc1 b/Makefile.inc1
index ea6d0ae..0a4d4f4 100644
--- a/Makefile.inc1
+++ b/Makefile.inc1
@@ -421,7 +421,7 @@ build32:
${LIB32MAKE} DESTDIR=${LIB32TMP} ${_t}
.endif
.endfor
-.for _dir in usr.sbin/pcvt/keycap usr.bin/lex/lib
+.for _dir in usr.bin/lex/lib
cd ${.CURDIR}/${_dir}; \
${LIB32MAKE} DESTDIR=${LIB32TMP} obj
.endfor
@@ -1010,10 +1010,6 @@ _prebuild_libs+= lib/libypclnt
_generic_libs+= usr.bin/lex/lib
-.if ${MACHINE} == "i386"
-_generic_libs+= usr.sbin/pcvt/keycap
-.endif
-
.for _lib in ${_startup_libs} ${_prebuild_libs:Nlib/libpam} ${_generic_libs}
${_lib}__L: .PHONY
.if exists(${.CURDIR}/${_lib})
diff --git a/ObsoleteFiles.inc b/ObsoleteFiles.inc
index c407274..1c82d0c 100644
--- a/ObsoleteFiles.inc
+++ b/ObsoleteFiles.inc
@@ -14,6 +14,59 @@
# The file is partitioned: OLD_FILES first, then OLD_LIBS and OLD_DIRS last.
#
+# 20060517: pcvt removed
+OLD_FILES+=usr/share/pcvt/README.FIRST
+OLD_FILES+=usr/share/pcvt/Etc/xmodmap-german
+OLD_FILES+=usr/share/pcvt/Etc/pcvt.sh
+OLD_FILES+=usr/share/pcvt/Etc/pcvt.el
+OLD_FILES+=usr/share/pcvt/Etc/Terminfo
+OLD_FILES+=usr/share/pcvt/Etc/Termcap
+OLD_DIRS+=usr/share/pcvt/Etc
+OLD_FILES+=usr/share/pcvt/Doc/NotesAndHints
+OLD_FILES+=usr/share/pcvt/Doc/Keyboard.VT
+OLD_FILES+=usr/share/pcvt/Doc/Keyboard.HP
+OLD_FILES+=usr/share/pcvt/Doc/EscapeSequences
+OLD_FILES+=usr/share/pcvt/Doc/Charsets
+OLD_FILES+=usr/share/pcvt/Doc/CharGen
+OLD_FILES+=usr/share/pcvt/Doc/Bibliography
+OLD_FILES+=usr/share/pcvt/Doc/Acknowledgements
+OLD_DIRS+=usr/share/pcvt/Doc
+OLD_DIRS+=usr/share/pcvt
+OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.816
+OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.814
+OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.810
+OLD_FILES+=usr/share/misc/pcvtfonts/vt220l.808
+OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.816
+OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.814
+OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.810
+OLD_FILES+=usr/share/misc/pcvtfonts/vt220h.808
+OLD_DIRS+=usr/share/misc/pcvtfonts
+OLD_FILES+=usr/share/misc/keycap.pcvt
+OLD_FILES+=usr/share/man/man8/ispcvt.8.gz
+OLD_FILES+=usr/share/man/man5/keycap.5.gz
+OLD_FILES+=usr/share/man/man4/vt.4.gz
+OLD_FILES+=usr/share/man/man4/pcvt.4.gz
+OLD_FILES+=usr/share/man/man3/kgetstr.3.gz
+OLD_FILES+=usr/share/man/man3/kgetnum.3.gz
+OLD_FILES+=usr/share/man/man3/kgetflag.3.gz
+OLD_FILES+=usr/share/man/man3/kgetent.3.gz
+OLD_FILES+=usr/share/man/man3/keycap.3.gz
+OLD_FILES+=usr/share/man/man1/vt220keys.1.gz
+OLD_FILES+=usr/share/man/man1/scon.1.gz
+OLD_FILES+=usr/share/man/man1/loadfont.1.gz
+OLD_FILES+=usr/share/man/man1/kcon.1.gz
+OLD_FILES+=usr/share/man/man1/fontedit.1.gz
+OLD_FILES+=usr/share/man/man1/cursor.1.gz
+OLD_FILES+=usr/sbin/vt220keys
+OLD_FILES+=usr/sbin/scon
+OLD_FILES+=usr/sbin/loadfont
+OLD_FILES+=usr/sbin/kcon
+OLD_FILES+=usr/sbin/ispcvt
+OLD_FILES+=usr/sbin/fontedit
+OLD_FILES+=usr/sbin/cursor
+OLD_FILES+=usr/lib/libkeycap_p.a
+OLD_FILES+=usr/lib/libkeycap.a
+OLD_FILES+=usr/include/machine/pcvt_ioctl.h
# 20060514: lnc(4) replaced by le(4)
OLD_FILES+=usr/share/man/man4/i386/lnc.4.gz
# 20060512: remove ip6fw
diff --git a/etc/defaults/rc.conf b/etc/defaults/rc.conf
index 970ac9a..5930bb2 100644
--- a/etc/defaults/rc.conf
+++ b/etc/defaults/rc.conf
@@ -426,25 +426,6 @@ mousechar_start="NO" # if 0xd0-0xd3 default range is occupied in your
allscreens_flags="" # Set this vidcontrol mode for all virtual screens
allscreens_kbdflags="" # Set this kbdcontrol mode for all virtual screens
-
-##############################################################
-### pcvt console driver options ############################
-##############################################################
-
-pcvt_verbose="NO" # set to YES to enable verbose configuration messages
-pcvt_keymap="NO" # keyboard map in /usr/share/misc/keycap.pcvt (or NO).
-pcvt_keydel="NO" # key repeat delay, 0-3 (250,500,750,1000 msec) (or NO).
-pcvt_keyrate="NO" # keyboard repetition rate 31-0 (2-30 char/sec) (or NO).
-pcvt_keyrepeat="NO" # keyboard repeat ON or OFF (or NO).
-pcvt_force24="NO" # force a 24 line display (when 25 possible) (or NO).
-pcvt_hpext="NO" # use HP extensions (function keys labels) (or NO).
-pcvt_lines="NO" # lines (25, 28, 40, 50 or NO).
-pcvt_blanktime="NO" # blank time (in seconds) (or NO).
-pcvt_cursorh="NO" # cursor top scanline (topmost line is 0) (or NO).
-pcvt_cursorl="NO" # cursor low scanline (bottom line is 16) (or NO).
-pcvt_monohigh="NO" # set intensity to high on monochrome monitors (or NO).
-
-
##############################################################
### Mail Transfer Agent (MTA) options ######################
##############################################################
diff --git a/etc/mtree/BSD.usr.dist b/etc/mtree/BSD.usr.dist
index 59e2a72..0bec750 100644
--- a/etc/mtree/BSD.usr.dist
+++ b/etc/mtree/BSD.usr.dist
@@ -799,8 +799,6 @@
misc
fonts
..
- pcvtfonts
- ..
..
mk
..
@@ -1126,12 +1124,6 @@
..
..
..
- pcvt
- Doc
- ..
- Etc
- ..
- ..
security
..
sendmail
diff --git a/etc/rc.d/Makefile b/etc/rc.d/Makefile
index 45ffa4a..e471893 100755
--- a/etc/rc.d/Makefile
+++ b/etc/rc.d/Makefile
@@ -27,7 +27,7 @@ FILES= DAEMON LOGIN NETWORKING SERVERS \
network_ipv6 newsyslog nfsclient nfsd \
nfslocking nfsserver nisdomain nsswitch ntpd ntpdate \
othermta \
- pcvt pf pflog pfsync \
+ pf pflog pfsync \
powerd power_profile ppp pppoed pwcheck \
quota \
ramdisk ramdisk-own random rarpd resolv root \
diff --git a/etc/rc.d/isdnd b/etc/rc.d/isdnd
index 7ed1628..71aae18 100644
--- a/etc/rc.d/isdnd
+++ b/etc/rc.d/isdnd
@@ -21,16 +21,6 @@ isdnd_start()
{
echo -n 'ISDN subsystem setup:'
- # Check for pcvt driver (VT100/VT220 emulator)
- #
- if [ -x /usr/sbin/ispcvt ]; then
- if /usr/sbin/ispcvt; then
- # No vidcontrol if we are using pcvt
- #
- isdn_screenflags=NO
- fi
- fi
-
# Start isdnd
#
echo -n ' isdnd'
diff --git a/etc/rc.d/pcvt b/etc/rc.d/pcvt
deleted file mode 100644
index dd84b0f..0000000
--- a/etc/rc.d/pcvt
+++ /dev/null
@@ -1,233 +0,0 @@
-#!/bin/sh -
-#
-# Copyright (c) 2002 The FreeBSD Project
-# 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.
-#
-# THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``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 AUTHOR OR CONTRIBUTORS 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.
-#
-# $FreeBSD$
-#
-
-# PROVIDE: pcvt
-# REQUIRE: LOGIN
-# KEYWORD: nojail
-
-. /etc/rc.subr
-
-name="pcvt"
-start_precmd="pcvt_precmd"
-start_cmd="pcvt_start"
-
-pcvt_precmd()
-{
- if [ -x /usr/sbin/ispcvt ]; then
- /usr/sbin/ispcvt -d /dev/ttyv0 && return 0
- fi
- return 1
-}
-
-pcvt_echo()
-{
- if checkyesno pcvt_verbose; then
- echo $1 "$2"
- fi
-}
-
-pcvt_start()
-{
- # path for pcvt's EGA/VGA download fonts
- FONTP=/usr/share/misc/pcvtfonts
-
- if checkyesno pcvt_verbose; then
- echo "Configuring pcvt console driver:"
- else
- echo "-n" "Configuring pcvt"
- fi
-
- # video adapter type
-
- adapter=`/usr/sbin/scon -d /dev/ttyv0 -a`
-
- pcvt_echo "-n" " video adapter type is $adapter, "
-
- # monitor type (mono/color)
-
- monitor=`/usr/sbin/scon -d /dev/ttyv0 -m`
-
- pcvt_echo "" "monitor type is $monitor"
-
- # load fonts into VGA
-
- if [ $adapter = VGA ]; then
- pcvt_echo "-n" " loading fonts: 8x16:0,"
- loadfont -d /dev/ttyv0 -c0 -f $FONTP/vt220l.816
-
- pcvt_echo "-n" "1 "
- loadfont -d /dev/ttyv0 -c1 -f $FONTP/vt220h.816
-
- pcvt_echo "-n" " 8x14:0,"
- loadfont -d /dev/ttyv0 -c2 -f $FONTP/vt220l.814
-
- pcvt_echo "-n" "1 "
- loadfont -d /dev/ttyv0 -c3 -f $FONTP/vt220h.814
-
- pcvt_echo "-n" " 8x10:0,"
- loadfont -d /dev/ttyv0 -c4 -f $FONTP/vt220l.810
-
- pcvt_echo "-n" "1 "
- loadfont -d /dev/ttyv0 -c5 -f $FONTP/vt220h.810
-
- pcvt_echo "-n" " 8x8:0,"
- loadfont -d /dev/ttyv0 -c6 -f $FONTP/vt220l.808
-
- pcvt_echo "" "1 "
- loadfont -d /dev/ttyv0 -c7 -f $FONTP/vt220h.808
-
- # setting screen sizes
-
- case ${pcvt_lines} in
- 28)
- size=-s28
- pcvt_echo "" " switching to 28 lines"
- ;;
- 40)
- size=-s40
- pcvt_echo "" " switching to 40 lines"
- ;;
- 50)
- size=-s50
- pcvt_echo "" " switching to 50 lines"
- ;;
- *)
- size=-s25
- pcvt_echo "" " switching to 25 lines"
- ;;
- esac
- fi
-
- # use HP extensions to VT220 or plain VT220 ?
-
- if checkyesno pcvt_hpext; then
- emulation=-H
- pcvt_echo "" " setting emulation to VT220 with HP extensions"
- else
- emulation=-V
- pcvt_echo "" " setting emulation to VT220"
- fi
-
- # for all screens do
-
- for device in /dev/ttyv*
- do
- # set emulation
-
- /usr/sbin/scon -d$device $size $emulation >/dev/null 2>&1
- if [ $? != 0 ]; then
- break 1
- fi
-
- # set cursor shape
-
- case ${pcvt_cursorh} in
- [Nn][Oo] | '')
- ;;
- *)
- case ${pcvt_cursorl} in
- [Nn][Oo] | '')
- ;;
- *)
- /usr/sbin/cursor -d$device -s$pcvt_cursorh -e$pcvt_cursorl
- ;;
- esac
- ;;
- esac
-
- # on monochrome monitor, set color palette to use a higher intensity
-
- if checkyesno pcvt_monohigh && \
- [ $monitor = MONO -a $adapter = VGA ]
- then
- /usr/sbin/scon -d$device -p8,60,60,60
- fi
- done
-
- # switch to screen 0
-
- pcvt_echo "" " switching to screen 0"
-
- /usr/sbin/scon -d /dev/ttyv0
-
- # screensaver timeout
-
- case ${pcvt_blanktime} in
- [Nn][Oo] | '')
- ;;
- *)
- pcvt_echo "" " setting screensaver timeout to $pcvt_blanktime seconds"
- /usr/sbin/scon -d /dev/ttyv0 -t$pcvt_blanktime
- ;;
- esac
-
- # national keyboard layout
-
- case ${pcvt_keymap} in
- [Nn][Oo] | '')
- ;;
- *)
- pcvt_echo "" " switching national keyboard layout to $pcvt_keymap"
- /usr/sbin/kcon -m $pcvt_keymap
- ;;
- esac
-
- # keyboard repeat delay value
-
- case ${pcvt_keydel} in
- [Nn][Oo] | '')
- ;;
- *)
- pcvt_echo "" " setting keyboard delay to $pcvt_keydel"
- /usr/sbin/kcon -d$pcvt_keydel
- ;;
- esac
-
- # keyboard repeat rate value
-
- case ${pcvt_keyrate} in
- [Nn][Oo] | '')
- ;;
- *)
- pcvt_echo "" " setting keyboard repeat rate to $pcvt_keyrate"
- /usr/sbin/kcon -r$pcvt_keyrate
- ;;
- esac
-
- # done
-
- if checkyesno pcvt_verbose; then
- echo "Finished configuring pcvt console driver."
- else
- echo "."
- fi
-}
-
-load_rc_config $name
-run_rc_command "$1"
diff --git a/etc/rc.d/syscons b/etc/rc.d/syscons
index f4eccf7c..e573dec 100644
--- a/etc/rc.d/syscons
+++ b/etc/rc.d/syscons
@@ -127,10 +127,6 @@ syscons_precmd()
then
return 1
fi
- if [ -x /usr/sbin/ispcvt ] && /usr/sbin/ispcvt
- then
- return 1
- fi
return 0
}
diff --git a/release/picobsd/build/picobsd b/release/picobsd/build/picobsd
index 62acc9f..974316d 100755
--- a/release/picobsd/build/picobsd
+++ b/release/picobsd/build/picobsd
@@ -192,7 +192,7 @@ create_includes_and_libraries() {
-DNOHTML -DNOINFO -DNOMAN -DNOSHARE -DNOFSCHG "
log "do a 'make obj' in a few places."
# This is very version-specific... The following works for 5.0
- for i in lib secure/lib gnu/lib usr.sbin/pcvt/keycap \
+ for i in lib secure/lib gnu/lib \
gnu/usr.bin/perl usr.bin/lex usr.sbin/config ; do
(cd ${i}; eval $e obj)
done
diff --git a/share/man/man4/Makefile b/share/man/man4/Makefile
index 9bbf4ba..e74109c 100644
--- a/share/man/man4/Makefile
+++ b/share/man/man4/Makefile
@@ -241,7 +241,6 @@ MAN= aac.4 \
pcic.4 \
pcm.4 \
pcn.4 \
- pcvt.4 \
pim.4 \
polling.4 \
ppbus.4 \
@@ -458,7 +457,6 @@ MLINKS+=pccbb.4 cbb.4
MLINKS+=pcm.4 snd.4 \
pcm.4 sound.4
MLINKS+=pcn.4 if_pcn.4
-MLINKS+=pcvt.4 vt.4
MLINKS+=ppp.4 if_ppp.4
MLINKS+=ral.4 if_ral.4
MLINKS+=re.4 if_re.4
diff --git a/share/man/man4/atkbd.4 b/share/man/man4/atkbd.4
index 2076393..0795d6c 100644
--- a/share/man/man4/atkbd.4
+++ b/share/man/man4/atkbd.4
@@ -50,10 +50,8 @@ driver, together with the
driver, provides access to the AT 84 keyboard or the AT enhanced keyboard
which is connected to the AT keyboard controller.
.Pp
-This driver is required for the console drivers
+This driver is required for the console driver
.Xr syscons 4
-and
-.Xr pcvt 4 .
.Pp
There can be only one
.Nm
@@ -205,7 +203,6 @@ In both cases, you also need to have following lines in
.Sh SEE ALSO
.Xr kbdcontrol 1 ,
.Xr atkbdc 4 ,
-.Xr pcvt 4 ,
.Xr psm 4 ,
.Xr syscons 4 ,
.Xr loader 8
diff --git a/share/man/man4/kbdmux.4 b/share/man/man4/kbdmux.4
index 9b63f42..e29f8cd 100644
--- a/share/man/man4/kbdmux.4
+++ b/share/man/man4/kbdmux.4
@@ -33,7 +33,6 @@ utility.
.Sh SEE ALSO
.Xr kbdcontrol 1 ,
.Xr atkbd 4 ,
-.Xr pcvt 4 ,
.Xr syscons 4 ,
.Xr ukbd 4
.Sh CAVEATS
diff --git a/share/man/man4/pcvt.4 b/share/man/man4/pcvt.4
deleted file mode 100644
index 8b44c62..0000000
--- a/share/man/man4/pcvt.4
+++ /dev/null
@@ -1,747 +0,0 @@
-.\"
-.\" Copyright (c) 1992, 2000 Hellmuth Michaelis, Brian Dunford-Shore,
-.\" Joerg Wunsch and Holger Veit.
-.\"
-.\" 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, Joerg Wunsch and Holger Veit.
-.\" 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.
-.\"
-.\" Last Edit-Date: [Sun Mar 26 14:39:08 2000]
-.\"
-.\" $FreeBSD$
-.\"
-.\" Man page pcvt(4) created after pcvt_ioctl.h on 13-Jan-93
-.\" by Joerg Wunsch
-.\"
-.Dd March 26, 2000
-.Dt PCVT 4
-.Os
-.Sh NAME
-.Nm pcvt ,
-.Nm vt
-.Nd VT220 virtual screen system console
-.Sh SYNOPSIS
-.Cd "device vt0"
-.Pp
-In
-.Pa /boot/device.hints :
-.Cd hint.vt.0.at="isa"
-.Sh DESCRIPTION
-.Ss Overview
-The
-.Nm
-driver provides a virtual screen handling system.
-Probably most important is an emulation of a wide range
-of DEC
-.Tn VT-220
-functionality.
-See
-.Sx Features
-for a detailed description.
-.Pp
-The
-.Nm
-driver requires the keyboard driver
-.Nm atkbd
-to be also configured in the kernel.
-.Ss Features
-.Bl -bullet -compact
-.It
-Almost full DEC
-.Tn VT220
-functionality
-(moving towards
-.Tn VT320 )
-.It
-Completely independent virtual terminals for MDA/HGC/CGA/EGA and VGA
-.It
-25, 28, 35, 40, 43 or 50x80 screen resolution for each virtual screen
-.It
-Fully remappable keyboard to support national keyboards
-.It
-All VT220 character sets plus ISO Latin-1 and DEC technical supported
-.It
-VT220 downloadable character set supported when run on EGA/VGA
-.It
-VT220 user defined keys for each virtual terminal
-.It
-Optional function key label support
-\('a la Hewlett-Packard terminals
-.It
-Display function codes functionality
-.It
-Support for MDA, CGA, EGA and VGA display adaptors
-.It
-Support for 132 column operation on some VGA chipsets
-.It
-X Window Support for XFree86
-(requires
-.Em XSERVER
-to be defined)
-.El
-.Pp
-What it cannot:
-.Pp
-.Bl -bullet -compact
-.It
-No double wide/high characters
-.It
-No softscroll
-.It
-No inverse background
-.It
-No VT220 printer output support
-.It
-No VT52 support at all
-.It
-No 8-bit controls
-.It
-Only limited AT-keyboard
-(84 keys)
-support
-.El
-.Ss Scrollback
-Each virtual
-.Nm
-virtual terminal has 8 pages of memory attached which are used as a
-scrollback buffer.
-By using
-.Em SHIFT-PageUp
-and
-.Em SHIFT-PageDown
-it is possible to scroll the screen back and forward.
-.Ss Configuration
-The
-.Nm
-console driver is available for the Intel-based
-.Fx
-operating system.
-It has been designed to be highly configurable in order to satisfy
-everyone's needs.
-The preferred configuration method is to
-provide appropriate
-.Em option
-lines within the kernel configuration file,
-possibly overriding the built-in defaults.
-.Pp
-The following list gives a short overview of the available configuration
-options.
-Refer to the file
-.Pa i386/isa/pcvt/pcvt_conf.h
-in the kernel source tree for detailed documentation.
-.Pp
-Note: The following conventions apply to all Boolean options.
-If an option value is given as 0, the option is deactivated.
-With any other value, or no value, the option is activated.
-If an option
-is omitted, a built-in default is assumed.
-.Bl -tag -width indent
-.It Em PCVT_NSCREENS
-Defines the number of virtual screens.
-.Pp
-Default: 8
-.It Em PCVT_VT220KEYB
-If activated, a keyboard layout resembling a DEC VT200 (TM) is generated.
-If deactivated, a mixture between VT220 and HP is used.
-See the files
-.Pa Keyboard.VT
-and
-.Pa Keyboard.HP
-in the
-.Nm
-documentation directory for a full description.
-.Pp
-Default: off
-.It Em PCVT_SCREENSAVER
-Enables the builtin screensaver feature.
-.Pp
-Default: on
-.It Em PCVT_PRETTYSCRNS
-If enabled, a blinking-star screensaver is used.
-If disabled, the screen
-is simply blanked
-(which might be useful for energy-saving monitors).
-.Pp
-Default: on
-.It Em PCVT_CTRL_ALT_DEL
-If enabled, the key combination
-.Aq Em Ctrl
-.Aq Em Alt
-.Aq Em Del
-invokes a CPU reset.
-.Pp
-Default: off
-.It Em PCVT_USEKBDSEC
-Do NOT override a security lock for the keyboard.
-.Pp
-Default: on
-.It Em PCVT_24LINESDEF
-If enabled, the 25-line modi
-(VT emulation with 25 lines, and HP emulation with 28 lines)
-default to 24 lines only to provide a better compatibility to the
-original DEV VT220 (TM).
-Thus it should be possible to use the
-terminal information for those terminals without further changes.
-Note that this is a startup option; it is possible to toggle between
-the 24- and 25-lines' display by the
-.Xr scon 1
-utility.
-.Pp
-Default: off
-.It Em PCVT_META_ESC
-If enabled, a sequence composed of
-.Aq Em esc ,
-followed by the normal key code is emitted if a key is pressed with the
-.Aq Em Alt
-key modifier.
-If disabled, then normal key code with the value
-.Em 0x80
-added is sent.
-.Pp
-Default: off
-.El
-.Pp
-Note that there are further options available which are mainly used for
-debugging purposes or as a workaround for hardware problems.
-They are found in
-.Pa i386/isa/pcvt/pcvt_conf.h
-along with their documentation.
-.Ss Internal Functions
-The functionality described below may be accessed via
-.Xr ioctl 2
-system calls with a file descriptor opened on a device node
-related to the
-.Nm
-driver.
-To make use of them, a program should contain the following line:
-.Pp
-.Dl #include <machine/pcvt_ioctl.h>
-.Pp
-Any parameter definitions cited below can be found in that file.
-.Pp
-.Em Keyboard related functions
-.Pp
-Three functions are related to basic keyboard hardware:
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It KBDRESET
-reset keyboard, set defaults;
-.It KBDGTPMAT
-get current typematic value, parameter is a pointer to int where
-the values is stored to;
-.It KBDSTPMAT
-set current typematic value, similar to above command.
-.El
-.Pp
-Symbolic values are available for the appropriate constants.
-To specify the initial typematic delay time, they are
-KBD_TPD250 for 250 ms through
-KBD_TPD1000 for 1000 ms, in steps of 250 ms.
-The typematic repeat
-rates are
-KBD_TPM300, specifying 30.0 characters per second through
-KBD_TPM20 for 2.0 characters per second.
-The intermediate values
-are: 30.0, 26.7, 24.0, 21.8, 20.0, 18.5, 17.1, 16.0, 15.0, 13.3,
-12.0, 10.9, 10.0, 9.2, 8.6, 8.0, 7.5, 6.7, 6.0, 5.5, 5.0, 4.6, 4.3,
-4.0, 3.7, 3.3, 3.0, 2.7, 2.5, 2.3, 2.1, 2.0 characters per second.
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It KBDGREPSW
-get key repetition switch, and
-.It KBDSREPSW
-set key repetition switch
-.El
-.Pp
-again take a pointer to int as argument.
-They manipulate the
-drivers internal keyboard repetition flag, possible values are:
-KBD_REPEATOFF or KBD_REPEATON.
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It KBDGLEDS
-get LED state, and
-.It KBDSLEDS
-set LED state manipulate the keyboard indicators, but do not influence
-the drivers idea of lock key state.
-.El
-.Pp
-The int where the argument points to
-may have the values
-KBD_SCROLLLOCK, KBD_NUMLOCK, KBD_CAPSLOCK, which may be used in any
-conjunction.
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It KBDGLOCK
-gets state of SCROLL,NUM,CAPS, and
-.It KBDSLOCK
-sets state of SCROLL,NUM,CAPS + LEDs
-.El
-.Pp
-should be used in a same manner to get/set the drivers internal
-LED flags.
-.Pp
-.Em Keyboard remapping
-.Pp
-One important feature of the
-.Nm
-driver is its ability to overload the built in key definition.
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It KBDGCKEY
-get current key values,
-.It KBDSCKEY
-set new key assignment values, and
-.It KBDGOKEY
-get original key assignment values
-.El
-.Pp
-arrange those functions.
-The take a pointer to a
-.Em struct kbd_ovlkey
-as argument as described below.
-In addition,
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It KBDRMKEY
-removes a key assignment, taking a pointer to an int as argument which
-contains the affected key number;
-.It KBDDEFAULT
-removes all key assignments.
-.El
-.Bd -literal
-struct kbd_ovlkey /* complete definition of a key */
-{
- u_short keynum; /* the key itself */
- u_short type; /* type of key, see below */
- u_char subu; /* subtype, ignored on write */
- char unshift[KBDMAXOVLKEYSIZE+1]; /* emitted string, unshifted */
- u_char subs; /* subtype, ignored on write */
- char shift[KBDMAXOVLKEYSIZE+1]; /* emitted string, shifted */
- u_char subc; /* subtype, ignored on write */
- char ctrl[KBDMAXOVLKEYSIZE+1]; /* emitted string, control */
- u_char suba; /* subtype, ignored on write */
- char altgr[KBDMAXOVLKEYSIZE+1]; /* emitted string, altgr */
-};
-.Ed
-.Pp
-The appropriate values for the
-.Em type
-field are:
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It KBD_NONE
-no function, key is disabled,
-.It KBD_SHIFT
-keyboard shift,
-.It KBD_META
-alternate shift, sets bit8 to ASCII code,
-.It KBD_NUM
-numeric shift, keypad numeric / application mode,
-.It KBD_CTL
-control code generation,
-.It KBD_CAPS
-caps shift - swaps case of letter,
-.It KBD_ASCII
-ASCII code generating key,
-.It KBD_SCROLL
-stop output,
-.It KBD_FUNC
-function key,
-.It KBD_KP
-keypad keys,
-.It KBD_BREAK
-ignored,
-.It KBD_ALTGR
-AltGr translation feature,
-.It KBD_SHFTLOCK
-shift lock,
-.It KBD_CURSOR
-cursor keys, and
-.It KBD_RETURN
-.Dq Return
-or
-.Dq Enter
-keys.
-.El
-.Pp
-The
-.Em subtype
-field contains one of the values
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It KBD_SUBT_STR
-key is bound to a string, or
-.It KBD_SUBT_FNC
-key is bound to a function.
-.El
-.Pp
-.Em Downloadable character set interface
-.Pp
-EGA and VGA video adaptors provide the capability of downloadable
-software fonts.
-Since the
-.Sq native character set
-of any IBM-compatible PC video board does not allow the full interpretation
-of DEC multinational character set or ISO Latin-1
-(ISO 8859-1),
-this might be very useful for a U**X environment.
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGASETFONTATTR
-set font attr, and
-.It VGAGETFONTATTR
-get font attr
-.El
-.Pp
-are used to manipulate the drivers information about a downloaded
-font.
-The take a pointer to a
-.Em struct vgafontattr
-as argument:
-.Bd -literal
-struct vgafontattr {
- int character_set; /* VGA character set */
- int font_loaded; /* Mark font loaded or unloaded */
- int screen_size; /* Character rows per screen */
- int character_scanlines; /* Scanlines per character - 1 */
- int screen_scanlines; /* Scanlines per screen - 1 byte */
-};
-.Ed
-.Pp
-Each character of each font is to be downloaded with
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGALOADCHAR
-load vga char,
-.El
-.Pp
-taking a pointer to
-.Em struct vgaloadchar
-as its argument:
-.Bd -literal
-struct vgaloadchar {
- int character_set; /* VGA character set to load into */
- int character; /* Character to load */
- int character_scanlines; /* Scanlines per character */
- u_char char_table[32]; /* VGA character shape table */
-};
-.Ed
-.Pp
-The field
-.Em character_set
-takes the values
-CH_SET0, CH_SET1, CH_SET2, CH_SET3 on EGA's or VGA's.
-Since VGA's
-might have up to eight simultaneously loaded fonts, they can take
-CH_SET4, CH_SET5, CH_SET6, or CH_SET7, too.
-.Pp
-Note that there is a dependence between the font size
-and a possible screen height
-(in character rows),
-depending on the video adaptor used:
-.Bd -literal
-Screen size (rows) on: EGA VGA
-Font size
-
-8 x 8 43 50
-8 x 10 35 40
-8 x 14 25 28
-8 x 16 not 25
- applicable
-.Ed
-.Pp
-.Em General screen manipulation commands
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGACURSOR
-sets cursor shape,
-.El
-.Pp
-taking a pointer to the following structure as argument:
-.Bd -literal
-struct cursorshape {
- int screen_no; /* screen number for which to set, */
- /* or -1 to set on current active screen */
- int start; /* top scanline, range 0... Character Height - 1 */
- int end; /* end scanline, range 0... Character Height - 1 */
-};
-.Ed
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGASETSCREEN
-set screen info, and
-.It VGAGETSCREEN
-get screen info,
-.El
-.Pp
-provide an interface to some general driver internal variables
-which might modify the behaviour of the screens,
-or which might simply be used to force the driver to switch
-to one certain screen.
-Their argument is a pointer to the structure:
-.Bd -literal
-struct screeninfo {
- int adaptor_type; /* type of video adaptor installed */
- /* read only, ignored on write (yet!) */
- int totalfonts; /* no of downloadable fonts */
- /* read only, ignored on write */
- int totalscreens; /* no of virtual screens */
- /* read only, ignored on write */
- int screen_no; /* screen number, this was got from */
- /* on write, if -1, apply pure_vt_mode */
- /* and/or screen_size to current screen*/
- /* else to screen_no supplied */
- int current_screen; /* screen number, which is displayed. */
- /* on write, if -1, make this screen */
- /* the current screen, else set current*/
- /* displayed screen to parameter */
- int pure_vt_mode; /* flag, pure VT mode or HP/VT mode */
- /* on write, if -1, no change */
- int screen_size; /* screen size */
- /* on write, if -1, no change */
- int force_24lines; /* force 24 lines if 25 lines VT mode */
- /* or 28 lines HP mode to get pure */
- /* VT220 screen size */
- /* on write, if -1, no change */
- int vga_family; /* if adaptor_type = VGA, this reflects*/
- /* the chipset family after a read */
- /* nothing happens on write ... */
- int vga_type; /* if adaptor_type = VGA, this reflects*/
- /* the chipset after a read */
- /* nothing happens on write ... */
- int vga_132; /* set to 1 if driver has support for */
- /* 132 column operation for chipset */
- /* currently ignored on write */
-};
-.Ed
-.Pp
-Its field
-.Em pure_vt_mode
-may take the values M_HPVT for a mixed VTxxx and HP Mode, with function
-key labels and a status line, or M_PUREVT for only VTxxx sequences
-recognized, with no labels.
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGASETCOLMS
-sets the number of columns for the current screen,
-.El
-.Pp
-its parameter is a pointer to an integer containing either a value of 80,
-or a value of 132.
-Note that setting the number of columns to 132 is only supported on
-some VGA adaptors.
-Any unsupported numbers cause the ioctl to fail with
-.Va errno
-(see
-.Xr intro 2 )
-being set to
-.Er EINVAL .
-.Pp
-.Em VGA color palette interface
-.Pp
-Only on VGA adaptors, there is a color palette register at the output.
-It is responsible for the red, green and blue output voltage provided
-for each of the 256 internal color codes, each lying in the range of
-0 through 63 (with 63 representing the brightest value for a base color).
-Thus, these adaptors map each color code to a color of a
-.Dq palette
-out of 262144 colors.
-The commands
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGAREADPEL
-read VGA palette entry, and
-.It VGAWRITEPEL
-write VGA palette entry
-.El
-.Pp
-establish an interface to these palette registers.
-Their argument is
-a pointer to:
-.Bd -literal
-struct vgapel {
- unsigned idx; /* index into palette, 0 .. 255 valid */
- unsigned r, g, b; /* RGB values, masked by VGA_PMASK (63) */
-};
-.Ed
-.Pp
-.Em Driver identification
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGAPCVTID
-returns information if the current compiled in driver is pcvt and its
-major and minor revision numbers.
-the call is taking a pointer to the
-following structure as argument:
-.El
-.Bd -literal
-struct pcvtid {
-#define PCVTIDNAMELN 16 /* driver id - string length */
- char name[PCVTIDNAMELN]; /* driver name, == PCVTIDSTR */
-#define PCVTIDNAME "pcvt" /* driver id - string */
- int rmajor; /* revision number, major */
-#define PCVTIDMAJOR 3
- int rminor; /* revision number, minor */
-#define PCVTIDMINOR 00
-};
-.Ed
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGAPCVTINFO
-returns information if the current compiled in driver is pcvt and its
-compile time options.
-the call is taking a pointer to the following
-structure as argument:
-.El
-.Bd -literal
-struct pcvtinfo {
- u_int opsys; /* PCVT_xxx(x)BSD */
-#define CONF_UNKNOWNOPSYS 0
-#define CONF_386BSD 1 /* unsupported !!! */
-#define CONF_NETBSD 2
-#define CONF_FREEBSD 3
- u_int opsysrel; /* Release for NetBSD/FreeBSD */
- u_int nscreens; /* PCVT_NSCREENS */
- u_int scanset; /* PCVT_SCANSET */
- u_int updatefast; /* PCVT_UPDATEFAST */
- u_int updateslow; /* PCVT_UPDATESLOW */
- u_int sysbeepf; /* PCVT_SYSBEEPF */
- u_int pcburst; /* PCVT_PCBURST */
- u_int kbd_fifo_sz; /* PCVT_KBD_FIFO_SZ */
-
-/* config booleans */
-
- u_long compile_opts; /* PCVT_xxxxxxxxxxxxxxx */
-};
-.Ed
-.Pp
-.Em Screen saver
-.Pp
-Depending on the configuration of a
-.Nm
-driver, there might be a simple screen saver available.
-It is controlled
-by the command
-.Pp
-.Bl -tag -width 20n -offset indent -compact
-.It VGASCREENSAVER
-set timeout for screen saver in seconds; 0 turns it off,
-.El
-.Pp
-taking a pointer to an integer as argument.
-Despite its command name,
-this is available on
-.Em any
-kind of adaptor if configured in by the
-.Xr config 8
-option
-.Dq PCVT_SCREENSAVER
-.Pp
-.Em Compatibility commands for USL-style VT's
-.Pp
-.Nm
-supports a subset of the USL-style commands used to control
-the virtual terminal interface.
-This feature is mainly intended to allow
-.Em XFree86
-to switch between virtual screens even when
-running an X server.
-They are ugly with respect to the implied semantics
-(i.e., they break Berkeley semantics).
-See the file
-.Pa i386/include/pcvt_ioctl.h
-for their documentation.
-.Sh FILES
-.Bl -tag -width /usr/include/machine/pcvt_ioctl.h
-.It Pa /usr/include/machine/pcvt_ioctl.h
-Definitions for
-.Xr ioctl 2
-function calls
-.It Pa /dev/ttyv?
-.It Pa /dev/console
-Device nodes to access the
-.Nm
-driver
-.It Pa i386/isa/pcvt/pcvt_conf.h
-(relative to the kernel source tree)
-Documents the various compile-time options to tailor
-.Nm .
-.El
-.Sh SEE ALSO
-.Xr cursor 1 ,
-.Xr loadfont 1 ,
-.Xr scon 1 ,
-.Xr intro 2 ,
-.Xr ioctl 2 ,
-.Xr atkbd 4 ,
-.Xr keyboard 4 ,
-.Xr config 8 ,
-.Xr ispcvt 8
-.Sh HISTORY
-The
-.Nm
-driver has been developed for and contributed to
-.Bx 386 0.1 .
-Since then
-.Nm
-has become a standard part of
-.Fx ,
-.Nx
-and
-.Ox .
-Since
-.Fx 5.0 ,
-.Nm
-is
-.Fx
-specific with support for
-.Nx
-and
-.Ox
-removed to
-ease further maintenance.
-.Sh AUTHORS
-.An -nosplit
-Written by
-.An Hellmuth Michaelis Aq hm@FreeBSD.org
-with much help from
-.An Brian Dunford-Shore Aq brian@morpheus.wustl.edu
-and
-.An J\(:org Wunsch Aq joerg@FreeBSD.org .
-.Pp
-This driver is based on several people's previous work, notably
-the historic
-.Xr pccons 4
-implementation by
-.An William Jolitz Aq ljolitz@cardio.ucsf.edu
-and
-.An Don Ahn ,
-and the keyboard mapping code from
-.An Holger Veit Aq veit@first.gmd.de .
-.Sh BUGS
-At least one left.
diff --git a/share/man/man4/splash.4 b/share/man/man4/splash.4
index e3f5260..36ba883 100644
--- a/share/man/man4/splash.4
+++ b/share/man/man4/splash.4
@@ -219,8 +219,6 @@ first example above.
Both the splash screen and the screen saver work with
.Xr syscons 4
only.
-They are not available for the alternative console driver
-.Xr pcvt 4 .
.Sh SEE ALSO
.Xr vidcontrol 1 ,
.Xr syscons 4 ,
diff --git a/share/man/man4/vkbd.4 b/share/man/man4/vkbd.4
index da8ac68..bdaa941 100644
--- a/share/man/man4/vkbd.4
+++ b/share/man/man4/vkbd.4
@@ -128,7 +128,6 @@ All queued scan codes are thrown away.
.Sh SEE ALSO
.Xr kbdcontrol 1 ,
.Xr atkbdc 4 ,
-.Xr pcvt 4 ,
.Xr psm 4 ,
.Xr syscons 4
.Sh CAVEATS
diff --git a/share/man/man5/rc.conf.5 b/share/man/man5/rc.conf.5
index 39918f2..a74e2ba 100644
--- a/share/man/man5/rc.conf.5
+++ b/share/man/man5/rc.conf.5
@@ -3275,144 +3275,6 @@ by default.
Flags for
.Xr isdntrace 8 .
.\" -----------------------------------------------------
-.It Va pcvt_verbose
-.Pq Vt bool
-Set to
-.Dq Li NO
-by default.
-When set to
-.Dq Li YES ,
-verbose messages about the actions done by the start script are displayed.
-.Em Note :
-the
-.Xr pcvt 4
-driver must be compiled into the kernel before the
-.Xr pcvt 4
-related
-options described here take any effect.
-.It Va pcvt_keymap
-.Pq Vt str
-Set to
-.Dq Li NO
-by default.
-Use this to configure a national keyboard mapping found in the
-.Pa /usr/share/misc/keycap.pcvt
-file of keyboard mappings.
-(See also the manual pages
-.Xr keycap 5
-and
-.Xr keycap 3
-for usage of
-.Xr pcvt 4 Ns 's
-keycap database and the manual page
-.Xr kcon 1
-option
-.Fl m
-for national keyboard mapping configuration.)
-.It Va pcvt_keydel
-.Pq Vt int
-Set to
-.Dq Li NO
-by default.
-Used to set the keyboard key repeat delay value.
-Valid values are
-in the range 0..3 for delay values of 250, 500, 750 and 1000 msec.
-(See also the
-.Xr kcon 1
-manual page.)
-.It Va pcvt_keyrate
-.Pq Vt int
-Set to
-.Dq Li NO
-by default.
-Used to set the keyboard key repetition rate value.
-Valid values are
-in the range 0..31 for repetition values of 2..30 characters per second.
-.It Va pcvt_keyrepeat
-.Pq Vt bool
-Set to
-.Dq Li NO
-by default.
-Set to
-.Dq Li YES
-to enable automatic keyboard key repeating.
-.It Va pcvt_force24
-.Pq Vt bool
-Set to
-.Dq Li NO
-by default.
-Set to
-.Dq Li YES
-to force
-.Xr pcvt 4
-to use 24 lines only (in 25 lines mode) for compatibility
-with the original
-.Tn VT220
-terminal.
-.It Va pcvt_hpext
-.Pq Vt bool
-Set to
-.Dq Li NO
-by default.
-Set to
-.Dq Li YES
-to enable the display and functionality of function key labels (as found
-on
-.Tn Hewlett-Packard
-terminals such as the
-.Tn HP2392A
-and the
-.Tn HP700/92
-in
-.Tn ANSI
-mode).
-.It Va pcvt_lines
-.Pq Vt int
-Set to
-.Dq Li NO
-by default resulting in a value of 25.
-Used to set the number of lines on the screen.
-For VGA displays, valid
-values are 25, 28, 40 and 50 lines.
-(See also the
-.Xr scon 1
-manual page.)
-.It Va pcvt_blanktime
-.Pq Vt int
-Set to
-.Dq Li NO
-by default.
-Used to set the screen saver timeout in seconds for values greater than
-zero.
-.It Va pcvt_cursorh
-.Pq Vt int
-Set to
-.Dq Li NO
-by default.
-Used to set the cursor top scanline.
-(See also the
-.Xr cursor 1
-manual page.)
-.It Va pcvt_cursorl
-.Pq Vt int
-Set to
-.Dq Li NO
-by default.
-Used to set the cursor bottom scanline.
-.It Va pcvt_monohigh
-.Pq Vt bool
-Set to
-.Dq Li NO
-by default.
-Set to
-.Dq Li YES
-to set intensity to high on monochrome monitors.
-(See also the
-.Xr scon 1
-manual page, option
-.Fl p ,
-for more information on changing VGA palette
-values.)
.It Va harvest_interrupt
.Pq Vt bool
Set to
diff --git a/share/man/man5/src.conf.5 b/share/man/man5/src.conf.5
index a2a282a..3385830 100644
--- a/share/man/man5/src.conf.5
+++ b/share/man/man5/src.conf.5
@@ -419,11 +419,6 @@ Set to build some programs without PAM support, particularly
.Xr ftpd 8
and
.Xr ppp 8 .
-.It Va WITHOUT_PCVT
-.\" from FreeBSD: src/tools/build/options/WITHOUT_PCVT,v 1.1 2006/03/21 07:50:50 ru Exp
-Set to not build
-.Xr pcvt 4
-system console utilities.
.It Va WITHOUT_PF
.\" from FreeBSD: src/tools/build/options/WITHOUT_PF,v 1.1 2006/03/21 07:50:50 ru Exp
Set to not build PF firewall package.
diff --git a/share/man/man7/hier.7 b/share/man/man7/hier.7
index a0dc82d..5c617f2 100644
--- a/share/man/man7/hier.7
+++ b/share/man/man7/hier.7
@@ -572,10 +572,6 @@ miscellaneous system-wide ASCII text files
.Bl -tag -width Fl -compact
.It Pa fonts/
???
-.It Pa pcvtfonts/
-pcvt fonts;
-see
-.Xr pcvt 4
.It Pa termcap
terminal characteristics database;
see
@@ -589,10 +585,6 @@ see
national language support files;
see
.Xr mklocale 1
-.It Pa pcvt/
-pcvt documentation and etc examples;
-see
-.Xr pcvt 4
.It Pa security/
data files for security policies such as
.Xr mac_lomac 4
diff --git a/share/mk/bsd.own.mk b/share/mk/bsd.own.mk
index 49c8501..fda3d61 100644
--- a/share/mk/bsd.own.mk
+++ b/share/mk/bsd.own.mk
@@ -248,7 +248,6 @@ WITHOUT_${var}=
OPENSSH \
OPENSSL \
PAM \
- PCVT \
PF \
RCMDS \
RCS \
@@ -337,7 +336,6 @@ WITH_IDEA=
OPENSSH \
OPENSSL \
PAM \
- PCVT \
PF \
PROFILE \
RCMDS \
diff --git a/sys/conf/files.i386 b/sys/conf/files.i386
index 7f50b8b..89763ae 100644
--- a/sys/conf/files.i386
+++ b/sys/conf/files.i386
@@ -326,12 +326,6 @@ i386/isa/isa.c optional isa
i386/isa/isa_dma.c optional isa
i386/isa/nmi.c standard
i386/isa/npx.c optional npx
-i386/isa/pcvt/pcvt_drv.c optional vt
-i386/isa/pcvt/pcvt_ext.c optional vt
-i386/isa/pcvt/pcvt_kbd.c optional vt
-i386/isa/pcvt/pcvt_out.c optional vt
-i386/isa/pcvt/pcvt_sup.c optional vt
-i386/isa/pcvt/pcvt_vtf.c optional vt
i386/isa/pmtimer.c optional pmtimer
i386/isa/prof_machdep.c optional profiling-routine
i386/isa/spic.c optional spic
diff --git a/sys/conf/options.i386 b/sys/conf/options.i386
index e089e39..598c6cc 100644
--- a/sys/conf/options.i386
+++ b/sys/conf/options.i386
@@ -91,30 +91,6 @@ PSM_RESETAFTERSUSPEND opt_psm.h
ATKBD_DFLT_KEYMAP opt_atkbd.h
-# pcvt(4) has a bunch of options
-FAT_CURSOR opt_pcvt.h
-PCVT_123GENERIC opt_pcvt.h
-PCVT_24LINESDEF opt_pcvt.h
-PCVT_CTRL_ALT_DEL opt_pcvt.h
-PCVT_GREENSAVER opt_pcvt.h
-PCVT_INHIBIT_NUMLOCK opt_pcvt.h
-PCVT_META_ESC opt_pcvt.h
-PCVT_NO_LED_UPDATE opt_pcvt.h
-PCVT_NSCREENS opt_pcvt.h
-PCVT_NULLCHARS opt_pcvt.h
-PCVT_PRETTYSCRNS opt_pcvt.h
-PCVT_SCANSET opt_pcvt.h
-PCVT_SCREENSAVER opt_pcvt.h
-PCVT_SETCOLOR opt_pcvt.h
-PCVT_SHOWKEYS opt_pcvt.h
-PCVT_SLOW_INTERRUPT opt_pcvt.h
-PCVT_SYSBEEPF opt_pcvt.h
-PCVT_UPDATEFAST opt_pcvt.h
-PCVT_UPDATESLOW opt_pcvt.h
-PCVT_USEKBDSEC opt_pcvt.h
-PCVT_VT220KEYB opt_pcvt.h
-XSERVER opt_pcvt.h
-
# Video spigot
SPIGOT_UNSECURE opt_spigot.h
diff --git a/sys/dev/atkbdc/atkbd.c b/sys/dev/atkbdc/atkbd.c
index 19bd7a3..9ec650e 100644
--- a/sys/dev/atkbdc/atkbd.c
+++ b/sys/dev/atkbdc/atkbd.c
@@ -181,9 +181,6 @@ atkbd_timeout(void *arg)
typedef struct atkbd_state {
KBDC kbdc; /* keyboard controller */
- /* XXX: don't move this field; pcvt
- * expects `kbdc' to be the first
- * field in this structure. */
int ks_mode; /* input mode (K_XLATE,K_RAW,K_CODE) */
int ks_flags; /* flags */
#define COMPOSE (1 << 0)
diff --git a/sys/dev/syscons/scvesactl.c b/sys/dev/syscons/scvesactl.c
index a556dc0..53285a6 100644
--- a/sys/dev/syscons/scvesactl.c
+++ b/sys/dev/syscons/scvesactl.c
@@ -115,7 +115,6 @@ vesa_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *
mode = (cmd & 0xff) + M_VESA_BASE;
- /* Only set graphics mode in non-pcvt case */
if (((cmd & IOC_DIRMASK) == IOC_VOID) &&
(mode > M_VESA_FULL_1280) &&
(mode < M_VESA_MODE_MAX))
diff --git a/sys/i386/conf/GENERIC b/sys/i386/conf/GENERIC
index 92898d0..66f8458 100644
--- a/sys/i386/conf/GENERIC
+++ b/sys/i386/conf/GENERIC
@@ -160,11 +160,6 @@ device splash # Splash screen and screen saver support
# syscons is the default console driver, resembling an SCO console
device sc
-# Enable this for the pcvt (VT220 compatible) console driver
-#device vt
-#options XSERVER # support for X server on a vt console
-#options FAT_CURSOR # start with block cursor
-
device agp # support several AGP chipsets
# Power management support (see NOTES for more options)
diff --git a/sys/i386/conf/NOTES b/sys/i386/conf/NOTES
index 396861c..80a41f0 100644
--- a/sys/i386/conf/NOTES
+++ b/sys/i386/conf/NOTES
@@ -363,24 +363,6 @@ options VESA
# Turn on extra debugging checks and output for VESA support.
options VESA_DEBUG
-# The pcvt console driver (vt220 compatible).
-device vt
-hint.vt.0.at="isa"
-options XSERVER # support for running an X server on vt
-options FAT_CURSOR # start with block cursor
-# This PCVT option is for keyboards such as those used on really old ThinkPads
-options PCVT_SCANSET=2
-# Other PCVT options are documented in pcvt(4).
-options PCVT_24LINESDEF
-options PCVT_CTRL_ALT_DEL
-options PCVT_META_ESC
-options PCVT_NSCREENS=9
-options PCVT_PRETTYSCRNS
-options PCVT_SCREENSAVER
-options PCVT_USEKBDSEC
-options PCVT_VT220KEYB
-options PCVT_GREENSAVER
-
#
# The Numeric Processing eXtension driver. This is non-optional.
device npx
diff --git a/sys/i386/include/pcvt_ioctl.h b/sys/i386/include/pcvt_ioctl.h
deleted file mode 100644
index 721539c..0000000
--- a/sys/i386/include/pcvt_ioctl.h
+++ /dev/null
@@ -1,536 +0,0 @@
-/*-
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- * Copyright (c) 1992, 1995 Joerg Wunsch.
- * Copyright (c) 1992, 1993 Brian Dunford-Shore and Holger Veit.
- * Copyright (C) 1992, 1993 Soeren Schmidt.
- * All rights reserved.
- *
- * For the sake of compatibility, portions of this code regarding the
- * X server interface are taken from Soeren Schmidt's syscons driver.
- *
- * This code is derived from software contributed to 386BSD by
- * Holger Veit.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz and Don Ahn.
- *
- * 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, Joerg Wunsch, Holger Veit
- * and Soeren Schmidt.
- * 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_ioctl.h ioctl's for the VT220 video driver 'pcvt'
- * ---------------------------------------------------------
- *
- * Last Edit-Date: [Fri Mar 31 10:22:29 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#ifndef _MACHINE_PCVT_IOCTL_H_
-#define _MACHINE_PCVT_IOCTL_H_
-
-/* pcvt version information for VGAPCVTID ioctl */
-
-#define PCVTIDNAME "pcvt" /* driver id - string */
-#define PCVTIDMAJOR 3 /* driver id - major release */
-#define PCVTIDMINOR 60 /* driver id - minor release */
-
-#if !defined(_KERNEL)
-#include <sys/types.h>
-#endif
-#include <sys/ioccom.h>
-
-/*---------------------------------------------------------------------------*
- * IOCTLs for MF II and AT Keyboards
- *---------------------------------------------------------------------------*/
-
-#define KBDRESET _IO('K', 1) /* reset keyboard / set defaults */
-#define KBDGTPMAT _IOR('K', 2, int) /* get current typematic value */
-#define KBDSTPMAT _IOW('K', 3, int) /* set current typematic value */
-
-/* Typematic Delay Values */
-
-#define KBD_TPD250 0x00 /* 250 ms */
-#define KBD_TPD500 0x20 /* 500 ms */
-#define KBD_TPD750 0x40 /* 750 ms */
-#define KBD_TPD1000 0x60 /* 1000 ms */
-
-/* Typematic Repeat Rate */
-
-#define KBD_TPM300 0x00 /* 30.0 char/second */
-#define KBD_TPM267 0x01 /* 26.7 char/second */
-#define KBD_TPM240 0x02 /* 24.0 char/second */
-#define KBD_TPM218 0x03 /* 21.8 char/second */
-#define KBD_TPM200 0x04 /* 20.0 char/second */
-#define KBD_TPM185 0x05 /* 18.5 char/second */
-#define KBD_TPM171 0x06 /* 17.1 char/second */
-#define KBD_TPM160 0x07 /* 16.0 char/second */
-#define KBD_TPM150 0x08 /* 15.0 char/second */
-#define KBD_TPM133 0x09 /* 13.3 char/second */
-#define KBD_TPM120 0x0A /* 12.0 char/second */
-#define KBD_TPM109 0x0B /* 10.9 char/second */
-#define KBD_TPM100 0x0C /* 10.0 char/second */
-#define KBD_TPM92 0x0D /* 9.2 char/second */
-#define KBD_TPM86 0x0E /* 8.6 char/second */
-#define KBD_TPM80 0x0F /* 8.0 char/second */
-#define KBD_TPM75 0x10 /* 7.5 char/second */
-#define KBD_TPM67 0x11 /* 6.7 char/second */
-#define KBD_TPM60 0x12 /* 6.0 char/second */
-#define KBD_TPM55 0x13 /* 5.5 char/second */
-#define KBD_TPM50 0x14 /* 5.0 char/second */
-#define KBD_TPM46 0x15 /* 4.6 char/second */
-#define KBD_TPM43 0x16 /* 4.3 char/second */
-#define KBD_TPM40 0x17 /* 4.0 char/second */
-#define KBD_TPM37 0x18 /* 3.7 char/second */
-#define KBD_TPM33 0x19 /* 3.3 char/second */
-#define KBD_TPM30 0x1A /* 3.0 char/second */
-#define KBD_TPM27 0x1B /* 2.7 char/second */
-#define KBD_TPM25 0x1C /* 2.5 char/second */
-#define KBD_TPM23 0x1D /* 2.3 char/second */
-#define KBD_TPM21 0x1E /* 2.1 char/second */
-#define KBD_TPM20 0x1F /* 2.0 char/second */
-
-#define KBDGREPSW _IOR('K', 4, int) /* get key repetition switch */
-#define KBDSREPSW _IOW('K', 5, int) /* set key repetition switch */
-#define KBD_REPEATOFF 0
-#define KBD_REPEATON 1
-
-#define KBDGLEDS _IOR('K', 6, int) /* get LED state */
-#define KBDSLEDS _IOW('K', 7, int) /* set LED state, does not influence */
-#define KBD_SCROLLLOCK 0x0001 /* the driver's idea of lock key state */
-#define KBD_NUMLOCK 0x0002
-#define KBD_CAPSLOCK 0x0004
-#define KBDGLOCK _IOR('K', 8, int) /* gets state of SCROLL,NUM,CAPS */
-#define KBDSLOCK _IOW('K', 9, int) /* sets state of SCROLL,NUM,CAPS + LEDs */
-
-#define KBDMAXOVLKEYSIZE 15 /* + zero byte */
-
-struct kbd_ovlkey /* complete definition of a key */
-{
- u_short keynum; /* the key itself */
- u_short type; /* type of key, see below */
- u_char subu; /* subtype, ignored on write */
- char unshift[KBDMAXOVLKEYSIZE+1]; /* emitted string, unshifted */
- u_char subs; /* subtype, ignored on write */
- char shift[KBDMAXOVLKEYSIZE+1]; /* emitted string, shifted */
- u_char subc; /* subtype, ignored on write */
- char ctrl[KBDMAXOVLKEYSIZE+1]; /* emitted string, control */
- u_char suba; /* subtype, ignored on write */
- char altgr[KBDMAXOVLKEYSIZE+1]; /* emitted string, altgr */
-};
-
-/* Max value for keynum field */
-
-#define KBDMAXKEYS 128 /* Max No. of Keys */
-
-/* Values for type field */
-
-#define KBD_NONE 0 /* no function, key is disabled */
-#define KBD_SHIFT 1 /* keyboard shift */
-#define KBD_META 2 /* alternate shift, sets bit8 to ASCII code */
-#define KBD_NUM 3 /* numeric shift, keypad num / appl */
-#define KBD_CTL 4 /* control code generation */
-#define KBD_CAPS 5 /* caps shift - swaps case of letter */
-#define KBD_ASCII 6 /* ascii code generating key */
-#define KBD_SCROLL 7 /* stop output */
-#define KBD_FUNC 8 /* function key */
-#define KBD_KP 9 /* keypad keys */
-#define KBD_BREAK 10 /* ignored */
-#define KBD_ALTGR 11 /* AltGr Translation feature */
-#define KBD_SHFTLOCK 12 /* shiftlock */
-#define KBD_CURSOR 13 /* cursor keys */
-#define KBD_RETURN 14 /* RETURN/ENTER keys */
-
-/* Values for subtype field */
-
-#define KBD_SUBT_STR 0 /* key is bound to a string */
-#define KBD_SUBT_FNC 1 /* key is bound to a function */
-
-
-#define KBD_OVERLOAD 0x8000 /* Key is overloaded, ignored in ioctl */
-#define KBD_MASK (~KBD_OVERLOAD) /* mask for type */
-
-#define KBDGCKEY _IOWR('K',16, struct kbd_ovlkey) /* get current key values */
-#define KBDSCKEY _IOW('K',17, struct kbd_ovlkey) /* set new key assignment values*/
-#define KBDGOKEY _IOWR('K',18, struct kbd_ovlkey) /* get original key assignment values*/
-
-#define KBDRMKEY _IOW('K',19, int) /* remove a key assignment */
-#define KBDDEFAULT _IO('K',20) /* remove all key assignments */
-
-/*---------------------------------------------------------------------------*
- * IOCTLs for Video Adapter
- *---------------------------------------------------------------------------*/
-
-/* Definition of PC Video Adaptor Types */
-
-#define UNKNOWN_ADAPTOR 0 /* Unidentified adaptor ... */
-#define MDA_ADAPTOR 1 /* Monochrome Display Adaptor/Hercules Graphics Card */
-#define CGA_ADAPTOR 2 /* Color Graphics Adaptor */
-#define EGA_ADAPTOR 3 /* Enhanced Graphics Adaptor */
-#define VGA_ADAPTOR 4 /* Video Graphics Adaptor/Array */
-
-/* Definitions of Monitor types */
-
-#define MONITOR_MONO 0 /* Monochrome Monitor */
-#define MONITOR_COLOR 1 /* Color Monitor */
-
-/* Types of VGA chips detectable by current driver version */
-
-#define VGA_F_NONE 0 /* FAMILY NOT KNOWN */
-#define VGA_UNKNOWN 0 /* default, no 132 columns */
-
-#define VGA_F_TSENG 1 /* FAMILY TSENG */
-#define VGA_ET4000 1 /* Tseng Labs ET4000 */
-#define VGA_ET3000 2 /* Tseng Labs ET3000 */
-
-#define VGA_F_WD 2 /* FAMILY WD */
-#define VGA_PVGA 3 /* Western Digital Paradise VGA */
-#define VGA_WD90C00 4 /* Western Digital WD90C00 */
-#define VGA_WD90C10 5 /* Western Digital WD90C10 */
-#define VGA_WD90C11 6 /* Western Digital WD90C11 */
-
-#define VGA_F_V7 3 /* FAMILY VIDEO 7 */
-#define VGA_V7VEGA 7 /* Video 7 VEGA VGA */
-#define VGA_V7FWVR 8 /* Video 7 FASTWRITE/VRAM */
-#define VGA_V7V5 9 /* Video 7 Version 5 */
-#define VGA_V71024I 10 /* Video 7 1024i */
-#define VGA_V7UNKNOWN 11 /* Video 7 unknown board .. */
-
-#define VGA_F_TRI 4 /* FAMILY TRIDENT */
-#define VGA_TR8800BR 12 /* Trident TVGA 8800BR */
-#define VGA_TR8800CS 13 /* Trident TVGA 8800CS */
-#define VGA_TR8900B 14 /* Trident TVGA 8900B */
-#define VGA_TR8900C 15 /* Trident TVGA 8900C */
-#define VGA_TR8900CL 16 /* Trident TVGA 8900CL */
-#define VGA_TR9000 17 /* Trident TVGA 9000 */
-#define VGA_TR9100 18 /* Trident TVGA 9100 */
-#define VGA_TR9200 19 /* Trident TVGA 9200 */
-#define VGA_TRUNKNOWN 20 /* Trident unknown */
-
-#define VGA_F_S3 5 /* FAMILY S3 */
-#define VGA_S3_911 21 /* S3 911 */
-#define VGA_S3_924 22 /* S3 924 */
-#define VGA_S3_80x 23 /* S3 801/805 */
-#define VGA_S3_928 24 /* S3 928 */
-#define VGA_S3_UNKNOWN 25 /* unknown S3 chipset */
-
-#define VGA_F_CIR 6 /* FAMILY CIRRUS */
-#define VGA_CL_GD5402 26 /* Cirrus CL-GD5402 */
-#define VGA_CL_GD5402r1 27 /* Cirrus CL-GD5402r1 */
-#define VGA_CL_GD5420 28 /* Cirrus CL-GD5420 */
-#define VGA_CL_GD5420r1 29 /* Cirrus CL-GD5420r1 */
-#define VGA_CL_GD5422 30 /* Cirrus CL-GD5422 */
-#define VGA_CL_GD5424 31 /* Cirrus CL-GD5424 */
-#define VGA_CL_GD5426 32 /* Cirrus CL-GD5426 */
-#define VGA_CL_GD5428 33 /* Cirrus CL-GD5428 */
-
-/*****************************************************************************/
-/* NOTE: update the 'scon' utility when adding support for more chipsets !!! */
-/*****************************************************************************/
-
-/* Definitions of Vertical Screen Sizes for EGA/VGA Adaptors */
-
-#define SIZ_25ROWS 0 /* VGA: 25 lines, 8x16 font */
- /* EGA: 25 lines, 8x14 font */
-#define SIZ_28ROWS 1 /* VGA: 28 lines, 8x14 font */
-#define SIZ_35ROWS 2 /* EGA: 35 lines, 8x10 font */
-#define SIZ_40ROWS 3 /* VGA: 40 lines, 8x10 font */
-#define SIZ_43ROWS 4 /* EGA: 43 lines, 8x8 font */
-#define SIZ_50ROWS 5 /* VGA: 50 lines, 8x8 font */
-
-/* Definitions of Font Sizes for EGA/VGA Adaptors */
-
-#define FNT_8x16 0 /* 8x16 Pixel Font, only VGA */
-#define FNT_8x14 1 /* 8x14 Pixel Font, EGA/VGA */
-#define FNT_8x10 2 /* 8x10 Pixel Font, EGA/VGA */
-#define FNT_8x8 3 /* 8x8 Pixel Font, EGA/VGA */
-
-/* Definitions of Character Set (Font) Numbers */
-
-#define CH_SET0 0 /* Character Set (Font) 0, EGA/VGA */
-#define CH_SET1 1 /* Character Set (Font) 1, EGA/VGA */
-#define CH_SET2 2 /* Character Set (Font) 2, EGA/VGA */
-#define CH_SET3 3 /* Character Set (Font) 3, EGA/VGA */
-#define CH_SETMAX_EGA 3 /* EGA has 4 Character Sets / Fonts */
-#define CH_SET4 4 /* Character Set (Font) 4, VGA */
-#define CH_SET5 5 /* Character Set (Font) 5, VGA */
-#define CH_SET6 6 /* Character Set (Font) 6, VGA */
-#define CH_SET7 7 /* Character Set (Font) 7, VGA */
-#define CH_SETMAX_VGA 7 /* VGA has 8 Character Sets / Fonts */
-
-/* Definitions of Terminal Emulation Modes */
-
-#define M_HPVT 0 /* VTxxx and HP Mode, Labels & Status Line on */
-#define M_PUREVT 1 /* only VTxxx Sequences recognized, no Labels */
-
-/*---*/
-
-#define VGACURSOR _IOW('V',100, struct cursorshape) /* set cursor shape */
-
-struct cursorshape {
- int screen_no; /* screen number for which to set, */
- /* or -1 to set on current active screen */
- int start; /* top scanline, range 0... Character Height - 1 */
- int end; /* end scanline, range 0... Character Height - 1 */
-};
-
-#define VGALOADCHAR _IOW('V',101, struct vgaloadchar) /* load vga char */
-
-struct vgaloadchar {
- int character_set; /* VGA character set to load into */
- int character; /* Character to load */
- int character_scanlines; /* Scanlines per character */
- u_char char_table[32]; /* VGA character shape table */
-};
-
-#define VGASETFONTATTR _IOW('V',102, struct vgafontattr) /* set font attr */
-#define VGAGETFONTATTR _IOWR('V',103, struct vgafontattr) /* get font attr */
-
-struct vgafontattr {
- int character_set; /* VGA character set */
- int font_loaded; /* Mark font loaded or unloaded */
- int screen_size; /* Character rows per screen */
- int character_scanlines; /* Scanlines per character - 1 */
- int screen_scanlines; /* Scanlines per screen - 1 byte */
-};
-
-#define VGASETSCREEN _IOW('V',104, struct screeninfo) /* set screen info */
-#define VGAGETSCREEN _IOWR('V',105, struct screeninfo) /* get screen info */
-
-struct screeninfo {
- int adaptor_type; /* type of video adaptor installed */
- /* read only, ignored on write */
- int monitor_type; /* type of monitor (mono/color)installed*/
- /* read only, ignored on write */
- int totalfonts; /* no of downloadable fonts */
- /* read only, ignored on write */
- int totalscreens; /* no of virtual screens */
- /* read only, ignored on write */
- int screen_no; /* screen number, this was got from */
- /* on write, if -1, apply pure_vt_mode */
- /* and/or screen_size to current screen */
- /* else to screen_no supplied */
- int current_screen; /* screen number, which is displayed. */
- /* on write, if -1, make this screen */
- /* the current screen, else set current */
- /* displayed screen to parameter */
- int pure_vt_mode; /* flag, pure VT mode or HP/VT mode */
- /* on write, if -1, no change */
- int screen_size; /* screen size */
- /* on write, if -1, no change */
- int force_24lines; /* force 24 lines if 25 lines VT mode */
- /* or 28 lines HP mode to get pure */
- /* VT220 screen size */
- /* on write, if -1, no change */
- int vga_family; /* if adaptor_type = VGA, this reflects */
- /* the chipset family after a read */
- /* nothing happens on write ... */
- int vga_type; /* if adaptor_type = VGA, this reflects */
- /* the chipset after a read */
- /* nothing happens on write ... */
- int vga_132; /* set to 1 if driver has support for */
- /* 132 column operation for chipset */
- /* currently ignored on write */
-};
-
-#define VGAREADPEL _IOWR('V', 110, struct vgapel) /*r VGA palette entry */
-#define VGAWRITEPEL _IOW('V', 111, struct vgapel) /*w VGA palette entry */
-
-struct vgapel {
- unsigned idx; /* index into palette, 0 .. 255 valid */
- unsigned r, g, b; /* RGB values, masked by VGA_PMASK (63) */
-};
-
-/* NOTE: The next ioctl is only valid if option PCVT_SCREENSAVER is configured*/
-/* this is *not* restricted to VGA's, but won't introduce new garbage... */
-
-#define VGASCREENSAVER _IOW('V', 112, int) /* set timeout for screen */
- /* saver in seconds; 0 turns */
- /* it off */
-
-#define VGAPCVTID _IOWR('V',113, struct pcvtid) /* get driver id */
-
-struct pcvtid { /* THIS STRUCTURE IS NOW FROZEN !!! */
-#define PCVTIDNAMELN 16 /* driver id - string length */
- char name[PCVTIDNAMELN]; /* driver name, == PCVTIDSTR */
- int rmajor; /* revision number, major */
- int rminor; /* revision number, minor */
-}; /* END OF COLD PART ... */
-
-#define VGAPCVTINFO _IOWR('V',114, struct pcvtinfo) /* get driver info */
-
-struct pcvtinfo { /* compile time option values */
- u_int nscreens; /* PCVT_NSCREENS */
- u_int scanset; /* PCVT_SCANSET */
- u_int updatefast; /* PCVT_UPDATEFAST */
- u_int updateslow; /* PCVT_UPDATESLOW */
- u_int sysbeepf; /* PCVT_SYSBEEPF */
- u_int pcburst; /* PCVT_PCBURST */
- u_int kbd_fifo_sz; /* PCVT_KBD_FIFO_SZ */
-
-/* config booleans */
-
- u_long compile_opts; /* PCVT_xxxxxxxxxxxxxxx */
-
-#define CONF_VT220KEYB 0x00000001
-#define CONF_SCREENSAVER 0x00000002
-#define CONF_PRETTYSCRNS 0x00000004
-#define CONF_CTRL_ALT_DEL 0x00000008
-#define CONF_USEKBDSEC 0x00000010
-#define CONF_24LINESDEF 0x00000020
-#define CONF_SHOWKEYS 0x00000040
-#define CONF_NULLCHARS 0x00000080
-#define CONF_SETCOLOR 0x00000100
-#define CONF_132GENERIC 0x00000200
-#define CONF_XSERVER 0x00000400
-#define CONF_INHIBIT_NUMLOCK 0x00000800
-#define CONF_META_ESC 0x00001000
-#define CONF_SLOW_INTERRUPT 0x00002000
-#define CONF_NO_LED_UPDATE 0x00004000
-#define CONF_GREENSAVER 0x00008000
-};
-
-#define VGASETCOLMS _IOW('V', 115, int) /* set number of columns (80/132)*/
-
-/*
- * start of USL VT compatibility stuff (in case XSERVER defined)
- * these definitions must match those ones used by syscons
- *
- * Note that some of the ioctl command definitions below break the Berkeley
- * style. They accept a parameter of type "int" (instead of Berkeley style
- * "int *") in order to pass a single integer to the ioctl. These macros
- * below are marked with a dummy "int" comment. Dont blame anyone else
- * than USL for that braindeadness. It is done here to be a bit source-
- * level compatible to SysV. (N.B., within the ioctl, the argument is
- * dereferenced by "int *" anyway. The translation is done by the upper-
- * level ioctl stuff.)
- */
-
-/*
- * NB: Some of the definitions below apparently override the definitions
- * in the KBD section above. But, due to BSDs encoding of the IO direction
- * and transfer size, the resulting ioctl cmds differ, so we can take them
- * here. The only real conflict would appear if we implemented KDGKBMODE,
- * which would be identical to KBDGLEDS above. Since this command is not
- * necessary for XFree86 2.0, we omit it.
- */
-
-/* #define KDGKBMODE _IOR('K', 6, int) */ /* not yet implemented */
-
-#define KDSKBMODE _IO('K', 7 /*, int */)
-#define K_RAW 0 /* keyboard returns scancodes */
-#define K_XLATE 1 /* keyboard returns ascii */
-
-#define KDMKTONE _IO('K', 8 /*, int */)
-
-/* #define KDGETMODE _IOR('K', 9, int) */ /* not yet implemented */
-
-#define KDSETMODE _IO('K', 10 /*, int */)
-#define KD_TEXT 0 /* set text mode restore fonts */
-#define KD_GRAPHICS 1 /* set graphics mode */
-
-/* we cannot see any sense to support KD_TEXT0 or KD_TEXT1 */
-
-#define KDENABIO _IO('K', 60) /* only allowed if euid == 0 */
-#define KDDISABIO _IO('K', 61)
-
-#define KDGETLED _IOR('K', 65, int)
-#define KDSETLED _IO('K', 66 /*, int */)
-#define LED_CAP 1
-#define LED_NUM 2
-#define LED_SCR 4
-
-#define KDSETRAD _IO('K', 67 /*, int */)
-
-/*
- * Note that since our idea of key mapping is much different from the
- * SysV style, we _only_ support mapping layers base (0), shifted (1),
- * alt (4), and alt-shift (5), and only for the basic keys (without
- * any function keys). This is what XFree86 2.0+ needs to establish
- * the default X keysym mapping.
- */
-#define GIO_KEYMAP _IOR('k', 6, keymap_t)
-
-#define VT_OPENQRY _IOR('v', 1, int)
-#define VT_SETMODE _IOW('v', 2, vtmode_t)
-#define VT_GETMODE _IOR('v', 3, vtmode_t)
-
-#define VT_RELDISP _IO('v', 4 /*, int */)
-
-/* acceptable values for the VT_RELDISP command */
-
-#define VT_FALSE 0 /* release of VT refused */
-#define VT_TRUE 1 /* VT released */
-#define VT_ACKACQ 2 /* acknowledging VT acquisition */
-
-
-#define VT_ACTIVATE _IO('v', 5 /*, int */)
-#define VT_WAITACTIVE _IO('v', 6 /*, int */)
-#define VT_GETACTIVE _IOR('v', 7, int)
-
-#ifndef _VT_MODE_DECLARED
-#define _VT_MODE_DECLARED
-struct vt_mode {
- char mode;
-
-#define VT_AUTO 0 /* switching controlled by drvr */
-#define VT_PROCESS 1 /* switching controlled by prog */
-
- char waitv; /* not implemented yet SOS */
- short relsig;
- short acqsig;
- short frsig; /* not implemented yet SOS */
-};
-
-typedef struct vt_mode vtmode_t;
-#endif /* !_VT_MODE_DECLARED */
-
-#define NUM_KEYS 256
-#define NUM_STATES 8
-
-#ifndef _KEYMAP_DECLARED
-#define _KEYMAP_DECLARED
-struct keyent_t {
- u_char map[NUM_STATES];
- u_char spcl;
- u_char flgs;
-};
-
-struct keymap {
- u_short n_keys;
- struct keyent_t key[NUM_KEYS];
-};
-
-typedef struct keymap keymap_t;
-#endif /* !_KEYMAP_DECLARED */
-
-/* end of USL VT compatibility stuff */
-
-#endif /* !_MACHINE_PCVT_IOCTL_H_ */
diff --git a/sys/i386/isa/pcvt/pcvt_conf.h b/sys/i386/isa/pcvt/pcvt_conf.h
deleted file mode 100644
index 02c229e..0000000
--- a/sys/i386/isa/pcvt/pcvt_conf.h
+++ /dev/null
@@ -1,247 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 Hellmuth Michaelis
- *
- * 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 VT220 driver global configuration file
- * ------------------------------------------------------
- *
- * Last Edit-Date: [Fri Mar 31 10:20:27 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-/* -------------------------------------------------------------------- */
-/* ---------------- USER PREFERENCE DRIVER OPTIONS -------------------- */
-/* -------------------------------------------------------------------- */
-
-#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. */
-
-#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_GREENSAVER /* ---------- DEFAULT: OFF ------------ */
-# define PCVT_GREENSAVER 0 /* screensaver mode that enables */
-#elif PCVT_GREENSAVER != 0 /* power-save mode */
-# undef PCVT_GREENSAVER
-# define PCVT_GREENSAVER 1
-#endif
-
-#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_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_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
-
-/* -------------------------------------------------------------------- */
-/* -------------------- 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 (Notebook?) keyboards 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_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_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. */
-
-#ifndef PCVT_UPDATEFAST /* this is the rate at which the cursor */
-# define PCVT_UPDATEFAST (hz/10) /* gets updated with its new position */
-#endif /* see: async_update() in pcvt_sup.c */
-
-#ifndef PCVT_UPDATESLOW /* this is the rate at which the cursor */
-# define PCVT_UPDATESLOW 3 /* position display and the system load */
-#endif /* (or the keyboard scancode display) */
- /* is updated. the relation is: */
- /* PCVT_UPDATEFAST/PCVT_UPDATESLOW */
-
-#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_INHIBIT_NUMLOCK /* --------- DEFAULT: OFF ----------- */
-# define PCVT_INHIBIT_NUMLOCK 0 /* 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_SLOW_INTERRUPT/* ---------- DEFAULT: OFF ------------ */
-# define PCVT_SLOW_INTERRUPT 0 /* If off, protecting critical regions */
-#elif PCVT_SLOW_INTERRUPT != 0 /* in the keyboard fifo code is done by */
-# undef PCVT_SLOW_INTERRUPT /* disabling the processor irq's, if on */
-# define PCVT_SLOW_INTERRUPT 1 /* this is done by spl()/splx() calls. */
-#endif
-
-/*---------------------------------------------------------------------------*
- * 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_RED /* 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 ----------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_drv.c b/sys/i386/isa/pcvt/pcvt_drv.c
deleted file mode 100644
index 00bb30f..0000000
--- a/sys/i386/isa/pcvt/pcvt_drv.c
+++ /dev/null
@@ -1,827 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
- *
- * Copyright (c) 1992, 1993 Brian Dunford-Shore and Scott Turner.
- *
- * Copyright (c) 1993 Charles Hannum.
- *
- * All rights reserved.
- *
- * Parts of this code regarding the NetBSD interface were written
- * by Charles Hannum.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz and Don Ahn.
- *
- * 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, Joerg Wunsch, Scott Turner
- * and Charles Hannum.
- * 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_drv.c VT220 Driver Main Module / OS - Interface
- * ---------------------------------------------------------
- *
- * Last Edit-Date: [Sat Jul 15 15:06:06 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#define MAIN
-#include <i386/isa/pcvt/pcvt_hdr.h>
-#undef MAIN
-
-
-#include <sys/resource.h>
-#include <sys/bus.h>
-#include <sys/rman.h>
-
-#include <machine/resource.h>
-#include <machine/bus.h>
-
-#include <isa/isareg.h>
-#include <isa/isavar.h>
-
-static kbd_callback_func_t pcvt_event;
-static int pcvt_kbd_wptr = 0;
-static u_char pcvt_timeout_scheduled = 0;
-
-static void vgapelinit(void);
-static void detect_kbd(void *arg);
-static void pcvt_start(register struct tty *tp);
-static int pcvt_param(struct tty *tp, struct termios *t);
-
-static cn_probe_t pcvt_cn_probe;
-static cn_init_t pcvt_cn_init;
-static cn_term_t pcvt_cn_term;
-static cn_getc_t pcvt_cn_getc;
-static cn_checkc_t pcvt_cn_checkc;
-static cn_putc_t pcvt_cn_putc;
-
-CONS_DRIVER(vt, pcvt_cn_probe, pcvt_cn_init, pcvt_cn_term, pcvt_cn_getc,
- pcvt_cn_checkc, pcvt_cn_putc, NULL);
-
-static d_open_t pcvt_open;
-static d_close_t pcvt_close;
-static d_ioctl_t pcvt_ioctl;
-static d_mmap_t pcvt_mmap;
-
-static struct cdevsw vt_cdevsw = {
- .d_version = D_VERSION,
- .d_open = pcvt_open,
- .d_close = pcvt_close,
- .d_ioctl = pcvt_ioctl,
- .d_mmap = pcvt_mmap,
- .d_name = "vt",
- .d_flags = D_TTY | D_NEEDGIANT,
-};
-
-static int pcvt_probe(device_t dev);
-static int pcvt_attach(device_t dev);
-static void pcvt_identify (driver_t *driver, device_t parent);
-
-static device_method_t pcvt_methods[] = {
- DEVMETHOD(device_identify, pcvt_identify),
- DEVMETHOD(device_probe, pcvt_probe),
- DEVMETHOD(device_attach, pcvt_attach),
- DEVMETHOD(bus_print_child, bus_generic_print_child),
- { 0, 0 }
-};
-
-static driver_t pcvt_driver = {
- "vt",
- pcvt_methods,
- 0
-};
-
-static devclass_t pcvt_devclass;
-
-DRIVER_MODULE(pcvt, isa, pcvt_driver, pcvt_devclass, 0, 0);
-
-/*---------------------------------------------------------------------------*
- * driver identify
- *---------------------------------------------------------------------------*/
-static void
-pcvt_identify (driver_t *driver, device_t parent)
-{
- BUS_ADD_CHILD(parent, ISA_ORDER_SPECULATIVE, "vt", 0);
-}
-
-/*---------------------------------------------------------------------------*
- * driver probe
- *---------------------------------------------------------------------------*/
-static int
-pcvt_probe(device_t dev)
-{
- int i;
- device_t bus;
-
- int unit = device_get_unit(dev);
-
- /* No pnp support */
- if(isa_get_vendorid(dev))
- return ENXIO;
-
- if(unit != 0)
- return ENXIO;
-
- device_set_desc(dev, "pcvt VT220 console driver");
-
- bus = device_get_parent(dev);
- bus_set_resource(dev, SYS_RES_IOPORT, 0, 0x3b0, 0x30);
- bus_set_resource(dev, SYS_RES_MEMORY, 0, (u_long) Crtat, 0x8000);
-
- if (kbd == NULL)
- {
- reset_keyboard = 0;
- kbd_configure(KB_CONF_PROBE_ONLY);
- i = kbd_allocate("*", -1, (void *)&kbd, pcvt_event, (void *)&vs[unit]);
- if ((i < 0) || ((kbd = kbd_get_keyboard(i)) == NULL))
- return 0;
- }
- reset_keyboard = 1; /* it's now safe to do kbd reset */
-
- kbd_code_init();
-
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * driver attach
- *---------------------------------------------------------------------------*/
-static int
-pcvt_attach(device_t dev)
-{
- int i;
- struct resource *port;
- struct resource *mem;
-
- int unit = device_get_unit(dev);
-
- if(unit != 0)
- return ENXIO;
-
- i = 0;
- port = bus_alloc_resource(dev, SYS_RES_IOPORT, &i, 0, ~0, 0,
- RF_ACTIVE | RF_SHAREABLE);
-
- i = 0;
- mem = bus_alloc_resource(dev, SYS_RES_MEMORY, &i, 0, ~0, 0,
- RF_ACTIVE | RF_SHAREABLE);
-
- vt_coldmalloc(); /* allocate memory for screens */
-
- if (kbd == NULL)
- timeout(detect_kbd, (void *)&vs[unit], hz*2);
-
- printf("vt%d: ", unit);
-
- switch(adaptor_type)
- {
- case MDA_ADAPTOR:
- printf("MDA");
- break;
-
- case CGA_ADAPTOR:
- printf("CGA");
- break;
-
- case EGA_ADAPTOR:
- printf("EGA");
- break;
-
- case VGA_ADAPTOR:
- printf("%s VGA, ", (char *)vga_string(vga_type));
- if(can_do_132col)
- printf("80/132 columns");
- else
- printf("80 columns");
- vgapelinit();
- break;
-
- default:
- printf("unknown");
- break;
- }
-
- if(color == 0)
- printf(", mono");
- else
- printf(", color");
-
- printf(", %d screens, ", totalscreens);
-
- switch(keyboard_type)
- {
- case KB_AT:
- printf("AT-");
- break;
-
- case KB_MFII:
- printf("MF2-");
- break;
-
- default:
- printf("unknown ");
- break;
- }
-
- printf("keyboard\n");
-
- for(i = 0; i < totalscreens; i++)
- {
- pcvt_tty[i] = ttyalloc();
- vs[i].vs_tty = pcvt_tty[i];
- make_dev(&vt_cdevsw, i, UID_ROOT, GID_WHEEL, 0600, "ttyv%r", i);
- }
-
- async_update(UPDATE_START); /* start asynchronous updates */
-
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * driver open
- *---------------------------------------------------------------------------*/
-static int
-pcvt_open(struct cdev *dev, int flag, int mode, struct thread *td)
-{
- register struct tty *tp;
- register struct video_state *vsx;
- int s, retval;
- int winsz = 0;
- int i = minor(dev);
-
- vsx = &vs[i];
-
- if(i >= PCVT_NSCREENS)
- return ENXIO;
-
- tp = pcvt_tty[i];
-
- dev->si_tty = tp;
-
- vsx->openf++;
-
- tp->t_oproc = pcvt_start;
- tp->t_param = pcvt_param;
- tp->t_stop = nottystop;
- tp->t_dev = dev;
-
- if ((tp->t_state & TS_ISOPEN) == 0)
- {
- ttyinitmode(tp, 1, 0);
- pcvt_param(tp, &tp->t_termios);
- ttyld_modem(tp, 1); /* fake connection */
- winsz = 1; /* set winsize later */
- }
- else if (tp->t_state & TS_XCLUDE && suser(td))
- {
- return (EBUSY);
- }
-
- retval = (ttyld_open(tp, dev));
-
- if(winsz == 1)
- {
- /*
- * The line discipline has clobbered t_winsize if TS_ISOPEN
- * was clear. (NetBSD PR #400 from Bill Sommerfeld)
- * We have to do this after calling the open routine, because
- * it does some other things in other/older *BSD releases -hm
- */
-
- s = spltty();
-
- tp->t_winsize.ws_col = vsx->maxcol;
- tp->t_winsize.ws_row = vsx->screen_rows;
- tp->t_winsize.ws_xpixel = (vsx->maxcol == 80)? 720: 1056;
- tp->t_winsize.ws_ypixel = 400;
-
- splx(s);
- }
- return(retval);
-}
-
-/*---------------------------------------------------------------------------*
- * driver close
- *---------------------------------------------------------------------------*/
-static int
-pcvt_close(struct cdev *dev, int flag, int mode, struct thread *td)
-{
- register struct tty *tp;
- register struct video_state *vsx;
- int i = minor(dev);
-
- vsx = &vs[i];
-
- if(i >= PCVT_NSCREENS)
- return ENXIO;
-
- tp = pcvt_tty[i];
-
- ttyld_close(tp, flag);
-
- tty_close(tp);
-
- vsx->openf = 0;
-
-#ifdef XSERVER
- reset_usl_modes(vsx);
-#endif /* XSERVER */
-
- return(0);
-}
-
-/*---------------------------------------------------------------------------*
- * driver ioctl
- *---------------------------------------------------------------------------*/
-static int
-pcvt_ioctl(struct cdev *dev, u_long cmd, caddr_t data, int flag, struct thread *td)
-{
- register int error;
- register struct tty *tp;
- int i = minor(dev);
-
- if(i >= PCVT_NSCREENS)
- return ENXIO;
-
- tp = pcvt_tty[i];
-
- /* note that some ioctl's are global, e.g. KBSTPMAT: There is
- * only one keyboard and different repeat rates for instance between
- * sessions are a suspicious wish. If you really need this make the
- * appropriate variables arrays
- */
-
-#ifdef XSERVER
- if((error = usl_vt_ioctl(dev, cmd, data, flag, td)) >= 0)
- return error;
-#endif /* XSERVER */
-
- if((error = kbdioctl(dev,cmd,data,flag)) >= 0)
- return error;
-
- if((error = vgaioctl(dev,cmd,data,flag)) >= 0)
- return error;
-
- return (ttyioctl(dev, cmd, data, flag, td));
-}
-
-/*---------------------------------------------------------------------------*
- * driver mmap
- *---------------------------------------------------------------------------*/
-static int
-pcvt_mmap(struct cdev *dev, vm_offset_t offset, vm_paddr_t *paddr, int nprot)
-{
- if (offset > 0x20000 - PAGE_SIZE)
- return -1;
- *paddr = 0xa0000 + offset;
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * timeout handler
- *---------------------------------------------------------------------------*/
-static void
-pcvt_timeout(void *arg)
-{
- u_char *cp;
- struct tty *tp;
-
-#if PCVT_SLOW_INTERRUPT
- int s;
-#endif
-
- pcvt_timeout_scheduled = 0;
-
-#if PCVT_SCREENSAVER
- pcvt_scrnsv_reset();
-#endif /* PCVT_SCREENSAVER */
-
- tp = pcvt_tty[current_video_screen];
- while (pcvt_kbd_count)
- {
- if (((cp = sgetc(1)) != 0) &&
- (vs[current_video_screen].openf))
- {
-
-#if PCVT_NULLCHARS
- if(*cp == '\0')
- {
- /* pass a NULL character */
- ttyld_rint(tp, '\0');
- }
-/* XXX */ else
-#endif /* PCVT_NULLCHARS */
-
- while (*cp)
- ttyld_rint(tp, *cp++ & 0xff);
- }
-
- PCVT_DISABLE_INTR ();
-
- if (!pcvt_kbd_count)
- pcvt_timeout_scheduled = 0;
-
- PCVT_ENABLE_INTR ();
- }
-
- return;
-}
-
-/*---------------------------------------------------------------------------*
- * check for keyboard
- *---------------------------------------------------------------------------*/
-static void
-detect_kbd(void *arg)
-{
- int unit = (int)arg;
- int i;
-
- if (kbd != NULL)
- return;
- i = kbd_allocate("*", -1, (void *)&kbd, pcvt_event, (void *)unit);
- if (i >= 0)
- kbd = kbd_get_keyboard(i);
- if (kbd != NULL)
- {
- reset_keyboard = 1; /* ok to reset the keyboard */
- kbd_code_init();
- return;
- }
- reset_keyboard = 0;
- timeout(detect_kbd, (void *)unit, hz*2);
-}
-
-/*---------------------------------------------------------------------------*
- * keyboard event handler
- *---------------------------------------------------------------------------*/
-static int
-pcvt_event(keyboard_t *thiskbd, int event, void *arg)
-{
- int unit = (int)arg;
-
- if (thiskbd != kbd)
- return EINVAL; /* shouldn't happen */
-
- switch (event) {
- case KBDIO_KEYINPUT:
- pcvt_rint(unit);
- return 0;
- case KBDIO_UNLOADING:
- reset_keyboard = 0;
- kbd = NULL;
- kbd_release(thiskbd, (void *)&kbd);
- timeout(detect_kbd, (void *)unit, hz*4);
- return 0;
- default:
- return EINVAL;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * (keyboard) interrupt handler
- *---------------------------------------------------------------------------*/
-void
-pcvt_rint(int unit)
-{
- u_char dt;
- u_char ret = -1;
- int c;
-
-# if PCVT_SLOW_INTERRUPT
- int s;
-# endif
-
-#if PCVT_SCREENSAVER
- pcvt_scrnsv_reset();
-#endif /* PCVT_SCREENSAVER */
-
- if (kbd_polling)
- {
- sgetc(1);
- return;
- }
-
- while ((c = (*kbdsw[kbd->kb_index]->read)(kbd, FALSE)) != -1)
- {
- ret = 1; /* got something */
- dt = c;
-
- if (pcvt_kbd_count >= PCVT_KBD_FIFO_SZ) /* fifo overflow ? */
- {
- log (LOG_WARNING, "pcvt: keyboard buffer overflow\n");
- }
- else
- {
- pcvt_kbd_fifo[pcvt_kbd_wptr++] = dt; /* data -> fifo */
-
- PCVT_DISABLE_INTR (); /* XXX necessary ? */
- pcvt_kbd_count++; /* update fifo count */
- PCVT_ENABLE_INTR ();
-
- if (pcvt_kbd_wptr >= PCVT_KBD_FIFO_SZ)
- pcvt_kbd_wptr = 0; /* wraparound pointer */
- }
- }
-
- if (ret == 1) /* got data from keyboard ? */
- {
- if (!pcvt_timeout_scheduled) /* if not already active .. */
- {
- PCVT_DISABLE_INTR ();
- pcvt_timeout_scheduled = 1; /* flag active */
- timeout(pcvt_timeout, NULL, hz / 100); /* fire off */
- PCVT_ENABLE_INTR ();
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * start output
- *---------------------------------------------------------------------------*/
-static void
-pcvt_start(register struct tty *tp)
-{
- register struct clist *rbp;
- int s, len;
- u_char buf[PCVT_PCBURST];
-
- s = spltty();
-
- if (tp->t_state & (TS_TIMEOUT|TS_BUSY|TS_TTSTOP))
- goto out;
-
- tp->t_state |= TS_BUSY;
-
- splx(s);
-
- async_update(UPDATE_KERN);
-
- rbp = &tp->t_outq;
-
- /*
- * Call q_to_b() at spltty() to ensure that the queue is empty when
- * the loop terminates.
- */
-
- s = spltty();
-
- while((len = q_to_b(rbp, buf, PCVT_PCBURST)) > 0)
- {
- if(vs[minor(tp->t_dev)].scrolling)
- sgetc(SCROLLBACK_COOKIE);
-
- /*
- * We need to do this outside spl since it could be fairly
- * expensive and we don't want our serial ports to overflow.
- */
- splx(s);
- sput(&buf[0], 0, len, minor(tp->t_dev));
- s = spltty();
- }
-
- tp->t_state &= ~TS_BUSY;
-
- ttwwakeup(tp);
-
-out:
- splx(s);
-}
-
-/*---------------------------------------------------------------------------*
- * console probe
- *---------------------------------------------------------------------------*/
-static void
-pcvt_cn_probe(struct consdev *cp)
-{
- int unit = 0;
-
- /* See if this driver is disabled in probe hint. */
- if (resource_disabled("vt", unit))
- {
- cp->cn_pri = CN_DEAD;
- return;
- }
-
- kbd_configure(KB_CONF_PROBE_ONLY);
-
- if (kbd_find_keyboard("*", unit) < 0)
- {
- cp->cn_pri = CN_DEAD;
- return;
- }
-
- /* initialize required fields */
-
- sprintf(cp->cn_name, "ttyv%r", 0);
- cp->cn_pri = CN_INTERNAL;
- pcvt_tty[0] = ttyalloc();
- cp->cn_tp = pcvt_tty[0];
-}
-
-/*---------------------------------------------------------------------------*
- * console init
- *---------------------------------------------------------------------------*/
-static void
-pcvt_cn_init(struct consdev *cp)
-{
- int unit = 0;
- int i;
-
- pcvt_is_console = 1;
- pcvt_consptr = cp;
-
- /*
- * Don't reset the keyboard via `kbdio' just yet.
- * The system clock has not been calibrated...
- */
- reset_keyboard = 0;
-
- if (kbd)
- {
- kbd_release(kbd, (void *)&kbd);
- kbd = NULL;
- }
-
- i = kbd_allocate("*", -1, (void *)&kbd, pcvt_event, (void *)unit);
-
- if (i >= 0)
- kbd = kbd_get_keyboard(i);
-
-#if PCVT_SCANSET == 2
- /*
- * Turn off scancode translation early so that
- * DDB can read the keyboard.
- */
- if (kbd)
- {
- empty_both_buffers(*(KBDC *)kbd->kb_data, 10);
- set_controller_command_byte(*(KBDC *)kbd->kb_data,
- KBD_TRANSLATION, 0);
- }
-#endif /* PCVT_SCANSET == 2 */
-}
-
-/*---------------------------------------------------------------------------*
- * console finish
- *---------------------------------------------------------------------------*/
-static void
-pcvt_cn_term(struct consdev *cp)
-{
- if (kbd)
- {
- kbd_release(kbd, (void *)&kbd);
- kbd = NULL;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * console put char
- *---------------------------------------------------------------------------*/
-static void
-pcvt_cn_putc(struct consdev *cd, int c)
-{
- if (c == '\n')
- sput("\r", 1, 1, 0);
-
- sput((char *) &c, 1, 1, 0);
-
- async_update(UPDATE_KERN);
-}
-
-/*---------------------------------------------------------------------------*
- * console get char
- *---------------------------------------------------------------------------*/
-static int
-pcvt_cn_getc(struct consdev *cd)
-{
- register int s;
- static u_char *cp, cbuf[4]; /* Temp buf for multi-char key sequence. */
- register u_char c;
-
-#ifdef XSERVER
- if (pcvt_kbd_raw)
- return 0;
-#endif /* XSERVER */
-
- if (cp && *cp)
- {
- /*
- * We still have a pending key sequence, e.g.
- * from an arrow key. Deliver this one first.
- */
- return (*cp++);
- }
-
- if (kbd == NULL)
- return 0;
-
- s = spltty(); /* block pcvt_rint while we poll */
- kbd_polling = 1;
- (*kbdsw[kbd->kb_index]->enable)(kbd);
- cp = sgetc(0);
- (*kbdsw[kbd->kb_index]->disable)(kbd);
- kbd_polling = 0;
- splx(s);
-
- c = *cp++;
-
- if (c && *cp)
- {
- /* Preserve the multi-char sequence for the next call. */
- bcopy(cp, cbuf, 3); /* take care for a trailing '\0' */
- cp = cbuf;
- }
- else
- {
- cp = 0;
- }
- return c;
-}
-
-/*---------------------------------------------------------------------------*
- * console check for char
- *---------------------------------------------------------------------------*/
-static int
-pcvt_cn_checkc(struct consdev *cd)
-{
- char *cp;
- int x;
-
- if (kbd == NULL)
- return 0;
-
- x = spltty();
- kbd_polling = 1;
- (*kbdsw[kbd->kb_index]->enable)(kbd);
- cp = sgetc(1);
- (*kbdsw[kbd->kb_index]->disable)(kbd);
- kbd_polling = 0;
- splx(x);
-
- return (cp == NULL ? -1 : *cp);
-}
-
-/*---------------------------------------------------------------------------*
- * Set line parameters
- *---------------------------------------------------------------------------*/
-static int
-pcvt_param(struct tty *tp, struct termios *t)
-{
- tp->t_ispeed = t->c_ispeed;
- tp->t_ospeed = t->c_ospeed;
- tp->t_cflag = t->c_cflag;
-
- return(0);
-}
-
-/*----------------------------------------------------------------------*
- * read initial VGA palette (as stored by VGA ROM BIOS) into
- * palette save area
- *----------------------------------------------------------------------*/
-static void
-vgapelinit(void)
-{
- register unsigned idx;
- register struct rgb *val;
-
- /* first, read all and store to first screen's save buffer */
- for(idx = 0, val = vs[0].palette; idx < NVGAPEL; idx++, val++)
- vgapaletteio(idx, val, 0 /* read it */);
-
- /* now, duplicate for remaining screens */
- for(idx = 1; idx < PCVT_NSCREENS; idx++)
- bcopy(vs[0].palette, vs[idx].palette,
- NVGAPEL * sizeof(struct rgb));
-}
-
-/*-------------------------- E O F -------------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_ext.c b/sys/i386/isa/pcvt/pcvt_ext.c
deleted file mode 100644
index 7e2f5cf..0000000
--- a/sys/i386/isa/pcvt/pcvt_ext.c
+++ /dev/null
@@ -1,2750 +0,0 @@
-/*-
- * Copyright (c) 1999, 2002 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
- *
- * Copyright (C) 1992, 1993 Soeren Schmidt.
- *
- * All rights reserved.
- *
- * For the sake of compatibility, portions of this code regarding the
- * X server interface are taken from Soeren Schmidt's syscons driver.
- *
- * 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, Joerg Wunsch and Soeren Schmidt.
- * 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_ext.c VT220 Driver Extended Support Routines
- * ------------------------------------------------------
- *
- * Last Edit-Date: [Fri Mar 8 19:57:55 2002]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include <i386/isa/pcvt/pcvt_hdr.h> /* global include */
-
-#define ISSIGVALID(sig) ((sig) > 0 && (sig) < NSIG)
-
-static int s3testwritable( void );
-static int et4000_col( int );
-static int wd90c11_col( int );
-static int tri9000_col( int );
-static int v7_1024i_col( int );
-static int s3_928_col( int );
-static int cl_gd542x_col( int );
-
-#ifdef XSERVER
-static void fallback_to_auto(struct video_state *vsx);
-#endif
-
-/* storage to save video timing values of 80 columns text mode */
-static union {
- u_char generic[11];
- u_char et4000[11];
- u_char wd90c11[12];
- u_char tri9000[13];
- u_char v7_1024i[17];
- u_char s3_928[32];
- u_char cirrus[13];
-}
-savearea;
-
-static int regsaved = 0; /* registers are saved to savearea */
-
-/*---------------------------------------------------------------------------*
- *
- * Find out which video board we are running on, taken from:
- * Richard Ferraro: Programmers Guide to the EGA and VGA Cards
- * and from David E. Wexelblat's SuperProbe Version 1.0.
- * When a board is found, for which 132 column switching is
- * provided, the global variable "can_do_132col" is set to 1,
- * also the global variable vga_family is set to what we found.
- *
- * ###############################################################
- * ## THIS IS GETTING MORE AND MORE A LARGE SPAGHETTI HACK !!!! ##
- * ###############################################################
- *
- *---------------------------------------------------------------------------*/
-u_char
-vga_chipset(void)
-{
- u_char *ptr;
- u_char byte, oldbyte, old1byte, newbyte;
-
-#if PCVT_132GENERIC
- can_do_132col = 1; /* assumes everyone can do 132 col */
-#else
- can_do_132col = 0; /* assumes noone can do 132 col */
-#endif /* PCVT_132GENERIC */
-
- vga_family = VGA_F_NONE;
-
-/*---------------------------------------------------------------------------*
- * check for Western Digital / Paradise chipsets
- *---------------------------------------------------------------------------*/
-
- ptr = (u_char *)Crtat;
-
- if(color)
- ptr += (0xc007d - 0xb8000);
- else
- ptr += (0xc007d - 0xb0000);
-
- if((*ptr++ == 'V') && (*ptr++ == 'G') &&
- (*ptr++ == 'A') && (*ptr++ == '='))
- {
- int wd90c10;
-
- vga_family = VGA_F_WD;
-
- outb(addr_6845, 0x2b);
- oldbyte = inb(addr_6845+1);
- outb(addr_6845+1, 0xaa);
- newbyte = inb(addr_6845+1);
- outb(addr_6845+1, oldbyte);
- if(newbyte != 0xaa)
- return(VGA_PVGA); /* PVGA1A chip */
-
- outb(TS_INDEX, 0x12);
- oldbyte = inb(TS_DATA);
- outb(TS_DATA, oldbyte & 0xbf);
- newbyte = inb(TS_DATA) & 0x40;
- if(newbyte != 0)
- return(VGA_WD90C00); /* WD90C00 chip */
-
- outb(TS_DATA, oldbyte | 0x40);
- newbyte = inb(TS_DATA) & 0x40;
- if(newbyte == 0)
- return(VGA_WD90C00); /* WD90C00 chip */
-
- outb(TS_DATA, oldbyte);
-
- wd90c10 = 0;
- outb(TS_INDEX, 0x10);
- oldbyte = inb(TS_DATA);
-
- outb(TS_DATA, oldbyte & 0xfb);
- newbyte = inb(TS_DATA) & 0x04;
- if(newbyte != 0)
- wd90c10 = 1;
-
- outb(TS_DATA, oldbyte | 0x04);
- newbyte = inb(TS_DATA) & 0x04;
- if(newbyte == 0)
- wd90c10 = 1;
-
- outb(TS_DATA, oldbyte);
-
- if(wd90c10)
- return(VGA_WD90C10);
- else
- {
- can_do_132col = 1;
- return(VGA_WD90C11);
- }
- }
-
-/*---------------------------------------------------------------------------*
- * check for Trident chipsets
- *---------------------------------------------------------------------------*/
-
- outb(TS_INDEX, 0x0b);
- oldbyte = inb(TS_DATA);
-
-
- outb(TS_INDEX, 0x0b);
- outb(TS_DATA, 0x00);
-
- byte = inb(TS_DATA); /* chipset type */
-
-
- outb(TS_INDEX, 0x0e);
- old1byte = inb(TS_DATA);
-
- outb(TS_DATA, 0);
- newbyte = inb(TS_DATA);
-
- outb(TS_DATA, (old1byte ^ 0x02));
-
- outb(TS_INDEX, 0x0b);
- outb(TS_DATA, oldbyte);
-
- if((newbyte & 0x0f) == 0x02)
- {
- /* is a trident chip */
-
- vga_family = VGA_F_TRI;
-
- switch(byte)
- {
- case 0x01:
- return(VGA_TR8800BR);
-
- case 0x02:
- return(VGA_TR8800CS);
-
- case 0x03:
- can_do_132col = 1;
- return(VGA_TR8900B);
-
- case 0x04:
- case 0x13:
- /* Haven't tried, but should work */
- can_do_132col = 1;
- return(VGA_TR8900C);
-
- case 0x23:
- can_do_132col = 1;
- return(VGA_TR9000);
-
- case 0x33:
- can_do_132col = 1;
- return(VGA_TR8900CL);
-
- case 0x83:
- return(VGA_TR9200);
-
- case 0x93:
- return(VGA_TR9100);
-
- default:
- return(VGA_TRUNKNOWN);
- }
- }
-
-/*---------------------------------------------------------------------------*
- * check for Tseng Labs ET3000/4000 chipsets
- *---------------------------------------------------------------------------*/
-
- outb(GN_HERCOMPAT, 0x06);
- if(color)
- outb(GN_DMCNTLC, 0xa0);
- else
- outb(GN_DMCNTLM, 0xa0);
-
- /* read old value */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MISC);
- oldbyte = inb(ATC_DATAR);
-
- /* write new value */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MISC);
- newbyte = oldbyte ^ 0x10;
- outb(ATC_DATAW, newbyte);
-
- /* read back new value */
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MISC);
- byte = inb(ATC_DATAR);
-
- /* write back old value */
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MISC);
- outb(ATC_DATAW, oldbyte);
-
- if(byte == newbyte) /* ET3000 or ET4000 */
- {
- vga_family = VGA_F_TSENG;
-
- outb(addr_6845, CRTC_EXTSTART);
- oldbyte = inb(addr_6845+1);
- newbyte = oldbyte ^ 0x0f;
- outb(addr_6845+1, newbyte);
- byte = inb(addr_6845+1);
- outb(addr_6845+1, oldbyte);
-
- if(byte == newbyte)
- {
- can_do_132col = 1;
- return(VGA_ET4000);
- }
- else
- {
- return(VGA_ET3000);
- }
- }
-
-/*---------------------------------------------------------------------------*
- * check for Video7 VGA chipsets
- *---------------------------------------------------------------------------*/
-
- outb(TS_INDEX, TS_EXTCNTL); /* enable extensions */
- outb(TS_DATA, 0xea);
-
- outb(addr_6845, CRTC_STARTADRH);
- oldbyte = inb(addr_6845+1);
-
- outb(addr_6845+1, 0x55);
- newbyte = inb(addr_6845+1);
-
- outb(addr_6845, CRTC_V7ID); /* id register */
- byte = inb(addr_6845+1); /* read id */
-
- outb(addr_6845, CRTC_STARTADRH);
- outb(addr_6845+1, oldbyte);
-
- outb(TS_INDEX, TS_EXTCNTL); /* disable extensions */
- outb(TS_DATA, 0xae);
-
- if(byte == (0x55 ^ 0xea))
- { /* is Video 7 */
-
- vga_family = VGA_F_V7;
-
- outb(TS_INDEX, TS_EXTCNTL); /* enable extensions */
- outb(TS_DATA, 0xea);
-
- outb(TS_INDEX, TS_V7CHIPREV);
- byte = inb(TS_DATA);
-
- outb(TS_INDEX, TS_EXTCNTL); /* disable extensions */
- outb(TS_DATA, 0xae);
-
- if(byte < 0xff && byte >= 0x80)
- return(VGA_V7VEGA);
- if(byte < 0x7f && byte >= 0x70)
- return(VGA_V7FWVR);
- if(byte < 0x5a && byte >= 0x50)
- return(VGA_V7V5);
- if(byte < 0x4a && byte > 0x40)
- {
- can_do_132col = 1;
- return(VGA_V71024I);
- }
- return(VGA_V7UNKNOWN);
- }
-
-/*---------------------------------------------------------------------------*
- * check for S3 chipsets
- *---------------------------------------------------------------------------*/
-
- outb(addr_6845, 0x38); /* reg 1 lock register */
- old1byte = inb(addr_6845+1); /* get old value */
-
- outb(addr_6845, 0x38);
- outb(addr_6845+1, 0x00); /* lock registers */
-
- if(s3testwritable() == 0) /* check if locked */
- {
- outb(addr_6845, 0x38);
- outb(addr_6845+1, 0x48); /* unlock registers */
-
- if(s3testwritable() == 1 ) /* check if unlocked */
- {
- vga_family = VGA_F_S3; /* FAMILY S3 */
-
- outb(addr_6845, 0x30); /* chip id/rev reg */
- byte = inb(addr_6845+1);
-
- switch(byte & 0xf0)
- {
- case 0x80:
- switch(byte & 0x0f)
- {
- case 0x01:
- outb(addr_6845, 0x38);
- outb(addr_6845+1, old1byte);
- return VGA_S3_911;
-
- case 0x02:
- outb(addr_6845, 0x38);
- outb(addr_6845+1, old1byte);
- return VGA_S3_924;
-
- default:
- outb(addr_6845, 0x38);
- outb(addr_6845+1, old1byte);
- return VGA_S3_UNKNOWN;
- }
- break;
-
- case 0xA0:
- outb(addr_6845, 0x38);
- outb(addr_6845+1, old1byte);
- return VGA_S3_80x;
-
- case 0x90:
- case 0xb0:
- outb(addr_6845, 0x38);
- outb(addr_6845+1, old1byte);
- can_do_132col = 1;
- return VGA_S3_928;
-
- default:
- outb(addr_6845, 0x38);
- outb(addr_6845+1, old1byte);
- return VGA_S3_UNKNOWN;
- }
- }
- }
-
-/*---------------------------------------------------------------------------*
- * check for Cirrus chipsets
- *---------------------------------------------------------------------------*/
-
- outb(TS_INDEX, 6);
- oldbyte = inb(TS_DATA);
- outb(TS_INDEX, 6);
- outb(TS_DATA, 0x12);
- outb(TS_INDEX, 6);
- newbyte = inb(TS_DATA);
- outb(addr_6845, 0x27);
- byte = inb(addr_6845 + 1);
- outb(TS_INDEX, 6);
- outb(TS_DATA, oldbyte);
- if (newbyte == 0x12) {
- vga_family = VGA_F_CIR;
- can_do_132col = 1;
- switch ((byte & 0xfc) >> 2) {
- case 0x22:
- switch (byte & 3) {
- case 0:
- return VGA_CL_GD5402;
- case 1:
- return VGA_CL_GD5402r1;
- case 2:
- return VGA_CL_GD5420;
- case 3:
- return VGA_CL_GD5420r1;
- }
- break;
- case 0x23:
- return VGA_CL_GD5422;
- case 0x25:
- return VGA_CL_GD5424;
- case 0x24:
- return VGA_CL_GD5426;
- case 0x26:
- return VGA_CL_GD5428;
- }
- }
-
- return(VGA_UNKNOWN);
-}
-
-/*---------------------------------------------------------------------------
- * test if index 35 lower nibble is writable (taken from SuperProbe 1.0)
- *---------------------------------------------------------------------------*/
-static int
-s3testwritable(void)
-{
- u_char old, new1, new2;
-
- outb(addr_6845, 0x35);
- old = inb(addr_6845+1); /* save */
-
- outb(addr_6845, 0x35);
- outb(addr_6845+1, (old & 0xf0)); /* write 0 */
-
- outb(addr_6845, 0x35);
- new1 = (inb(addr_6845+1)) & 0x0f; /* must read 0 */
-
- outb(addr_6845, 0x35);
- outb(addr_6845+1, (old | 0x0f)); /* write 1 */
-
- outb(addr_6845, 0x35);
- new2 = (inb(addr_6845+1)) & 0x0f; /* must read 1 */
-
- outb(addr_6845, 0x35);
- outb(addr_6845+1, old); /* restore */
-
- return((new1==0) && (new2==0x0f));
-}
-
-/*---------------------------------------------------------------------------*
- * return ptr to string describing vga type
- *---------------------------------------------------------------------------*/
-char *
-vga_string(int number)
-{
- static char *vga_tab[] = {
- "generic",
- "et4000",
- "et3000",
- "pvga1a",
- "wd90c00",
- "wd90c10",
- "wd90c11",
- "v7 vega",
- "v7 fast",
- "v7 ver5",
- "v7 1024i",
- "unknown v7",
- "tvga 8800br",
- "tvga 8800cs",
- "tvga 8900b",
- "tvga 8900c",
- "tvga 8900cl",
- "tvga 9000",
- "tvga 9100",
- "tvga 9200",
- "unknown trident",
- "s3 911",
- "s3 924",
- "s3 801/805",
- "s3 928",
- "unkown s3",
- "cl-gd5402",
- "cl-gd5402r1",
- "cl-gd5420",
- "cl-gd5420r1",
- "cl-gd5422",
- "cl-gd5424",
- "cl-gd5426",
- "cl-gd5428"
- };
- return(vga_tab[number]);
-}
-
-/*---------------------------------------------------------------------------*
- * toggle vga 80/132 column operation
- *---------------------------------------------------------------------------*/
-int
-vga_col(struct video_state *svsp, int cols)
-{
- int ret = 0;
-
- if(adaptor_type != VGA_ADAPTOR)
- return(0);
-
- switch(vga_type)
- {
- case VGA_ET4000:
- ret = et4000_col(cols);
- break;
-
- case VGA_WD90C11:
- ret = wd90c11_col(cols);
- break;
-
- case VGA_TR8900B:
- case VGA_TR8900C:
- case VGA_TR8900CL:
- case VGA_TR9000:
- ret = tri9000_col(cols);
- break;
-
- case VGA_V71024I:
- ret = v7_1024i_col(cols);
- break;
-
- case VGA_S3_928:
- ret = s3_928_col(cols);
- break;
-
- case VGA_CL_GD5402:
- case VGA_CL_GD5402r1:
- case VGA_CL_GD5420:
- case VGA_CL_GD5420r1:
- case VGA_CL_GD5422:
- case VGA_CL_GD5424:
- case VGA_CL_GD5426:
- case VGA_CL_GD5428:
- ret = cl_gd542x_col(cols);
- break;
-
- default:
-
-#if PCVT_132GENERIC
- ret = generic_col(cols);
-#endif /* PCVT_132GENERIC */
-
- break;
- }
-
- if(ret == 0)
- return(0); /* failed */
-
- svsp->maxcol = cols;
-
- return(1);
-}
-
-#if PCVT_132GENERIC
-/*---------------------------------------------------------------------------*
- * toggle 80/132 column operation for "generic" SVGAs
- * NB: this is supposed to work on any (S)VGA as long as the monitor
- * is able to sync down to 21.5 kHz horizontally. The resulting
- * vertical frequency is only 50 Hz, so if there is some better board
- * specific algorithm, we avoid using this generic one.
- * REPORT ANY FAILURES SO WE CAN IMPROVE THIS
- *---------------------------------------------------------------------------*/
-
-#if PCVT_EXP_132COL
-/*
- * Some improved (i.e. higher scan rates) figures for the horizontal
- * timing. USE AT YOUR OWN RISK, THIS MIGHT DAMAGE YOUR MONITOR DUE
- * TO A LOSS OF HORIZONTAL SYNC!
- * The figures have been tested with an ET3000 board along with a
- * NEC MultiSync 3D monitor. If you are playing here, consider
- * testing with several screen pictures (dark background vs. light
- * background, even enlightening the border color may impact the
- * result - you can do this e.g. by "scon -p black,42,42,42")
- * Remember that all horizontal timing values must be dividable
- * by 8! (The scheme below is taken so that nifty kernel hackers
- * are able to patch the figures at run-time.)
- *
- * The actual numbers result in 23 kHz line scan and 54 Hz vertical
- * scan.
- */
-#endif /* PCVT_EXP_132COL */
-
-int
-generic_col(int cols)
-{
- u_char *sp;
- u_char byte;
-
-#if !PCVT_EXP_132COL
-
- /* stable figures for any multisync monitor that syncs down to 22 kHz*/
- static volatile u_short htotal = 1312;
- static volatile u_short displayend = 1056;
- static volatile u_short blankstart = 1072;
- static volatile u_short syncstart = 1112;
- static volatile u_short syncend = 1280;
-
-#else /* PCVT_EXP_132COL */
-
- /* reduced sync-pulse width and sync delays */
- static volatile u_short htotal = 1232;
- static volatile u_short displayend = 1056;
- static volatile u_short blankstart = 1056;
- static volatile u_short syncstart = 1104;
- static volatile u_short syncend = 1168;
-
-#endif /* PCVT_EXP_132COL */
-
- vga_screen_off();
-
- /* enable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- byte = inb(addr_6845+1);
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte & 0x7f);
-
- if(cols == SCR_COL132) /* switch 80 -> 132 */
- {
- /* save state of board for 80 columns */
-
- if(!regsaved)
- {
- regsaved = 1;
-
- sp = savearea.generic;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- *sp++ = inb(addr_6845+1);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- *sp++ = inb(TS_DATA);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- *sp++ = inb(GN_MISCOUTR); /* Misc output register */
- }
-
- /* setup chipset for 132 column operation */
-
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, (htotal / 8) - 5);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, (displayend / 8) - 1);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, blankstart / 8);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, ((syncend / 8) & 0x1f) | 0x80);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, syncstart / 8);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1,
- (((syncend / 8) & 0x20) * 4)
- | ((syncend / 8) & 0x1f));
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, 0x42);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, 0x01); /* 8 dot char clock */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS); /* ATC Mode control */
- outb(ATC_DATAW, 0x08); /* Line graphics disable */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS); /* ATC Horizontal Pixel Panning */
- outb(ATC_DATAW, 0x00);
-
- /* Misc output register */
- /* use the 28.322 MHz clock */
- outb(GN_MISCOUTW, (inb(GN_MISCOUTR) & ~0x0c) | 4);
- }
- else /* switch 132 -> 80 */
- {
- if(!regsaved) /* failsafe */
- {
- /* disable access to first 7 CRTC registers */
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
- vga_screen_on();
- return(0);
- }
-
- sp = savearea.generic;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, *sp++);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- outb(GN_MISCOUTW, *sp++); /* Misc output register */
- }
-
- /* disable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- vga_screen_on();
-
- return(1);
-}
-#endif /* PCVT_132GENERIC */
-
-/*---------------------------------------------------------------------------*
- * toggle 80/132 column operation for ET4000 based boards
- *---------------------------------------------------------------------------*/
-int
-et4000_col(int cols)
-{
- u_char *sp;
- u_char byte;
-
- vga_screen_off();
-
- /* enable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- byte = inb(addr_6845+1);
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte & 0x7f);
-
- if(cols == SCR_COL132) /* switch 80 -> 132 */
- {
- /* save state of board for 80 columns */
-
- if(!regsaved)
- {
- regsaved = 1;
-
- sp = savearea.et4000;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x34); /* 6845 Compatibility */
- *sp++ = inb(addr_6845+1);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- *sp++ = inb(TS_DATA);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- *sp++ = inb(GN_MISCOUTR); /* Misc output register */
- }
-
- /* setup chipset for 132 column operation */
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, 0x9f);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, 0x83);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, 0x84);
-
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, 0x8b);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, 0x80);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, 0x42);
-
- outb(addr_6845, 0x34); /* 6845 Compatibility */
- outb(addr_6845+1, 0x0a);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, 0x01); /* 8 dot char clock */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS); /* ATC Mode control */
- outb(ATC_DATAW, 0x08); /* Line graphics disable */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS); /* ATC Horizontal Pixel Panning */
- outb(ATC_DATAW, 0x00);
-
- /* Misc output register */
-
- outb(GN_MISCOUTW, (inb(GN_MISCOUTR) & ~0x0c));
- }
- else /* switch 132 -> 80 */
- {
- if(!regsaved) /* failsafe */
- {
- /* disable access to first 7 CRTC registers */
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
- vga_screen_on();
- return(0);
- }
-
- sp = savearea.et4000;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, *sp++);
-
-
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x34); /* 6845 Compatibility */
- outb(addr_6845+1, *sp++);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- outb(GN_MISCOUTW, *sp++); /* Misc output register */
- }
-
- /* disable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- vga_screen_on();
-
- return(1);
-}
-
-/*---------------------------------------------------------------------------*
- * toggle 80/132 column operation for WD/Paradise based boards
- *
- * when this card does 132 cols, the char map select register (TS_INDEX,
- * TS_FONTSEL) function bits get REDEFINED. whoever did design this,
- * please don't cross my way ever .......
- *
- *---------------------------------------------------------------------------*/
-int
-wd90c11_col(int cols)
-{
- u_char *sp;
- u_char byte;
- int i;
-
- vga_screen_off();
-
- /* enable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- byte = inb(addr_6845+1);
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte & 0x7f);
-
- /* enable access to WD/Paradise "control extensions" */
-
- outb(GDC_INDEX, GDC_PR5GPLOCK);
- outb(GDC_INDEX, 0x05);
- outb(addr_6845, CRTC_PR10);
- outb(addr_6845, 0x85);
- outb(TS_INDEX, TS_UNLOCKSEQ);
- outb(TS_DATA, 0x48);
-
- if(cols == SCR_COL132) /* switch 80 -> 132 */
- {
- /* save state of board for 80 columns */
-
- if(!regsaved)
- {
- regsaved = 1;
-
- /* save current fonts */
-
- sp = savearea.wd90c11;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x2e); /* misc 1 */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x2f); /* misc 2 */
- *sp++ = inb(addr_6845+1);
-
- outb(TS_INDEX, 0x10);/* Timing Sequencer */
- *sp++ = inb(TS_DATA);
- outb(TS_INDEX, 0x12);/* Timing Sequencer */
- *sp++ = inb(TS_DATA);
-
- *sp++ = inb(GN_MISCOUTR); /* Misc output register */
- }
-
- /* setup chipset for 132 column operation */
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, 0x9c);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, 0x83);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, 0x84);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, 0x9f);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, 0x8a);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, 0x1c);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, 0x42);
-
- outb(addr_6845, 0x2e); /* misc 1 */
- outb(addr_6845+1, 0x04);
- outb(addr_6845, 0x2f); /* misc 2 */
- outb(addr_6845+1, 0x00);
-
- outb(TS_INDEX, 0x10);/* Timing Sequencer */
- outb(TS_DATA, 0x21);
- outb(TS_INDEX, 0x12);/* Timing Sequencer */
- outb(TS_DATA, 0x14);
-
- outb(GN_MISCOUTW, (inb(GN_MISCOUTR) | 0x08)); /* Misc output register */
-
- vsp->wd132col = 1;
- }
- else /* switch 132 -> 80 */
- {
- if(!regsaved) /* failsafe */
- {
- /* disable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- /* disable access to WD/Paradise "control extensions" */
-
- outb(GDC_INDEX, GDC_PR5GPLOCK);
- outb(GDC_INDEX, 0x00);
- outb(addr_6845, CRTC_PR10);
- outb(addr_6845, 0x00);
- outb(TS_INDEX, TS_UNLOCKSEQ);
- outb(TS_DATA, 0x00);
-
- vga_screen_on();
-
- return(0);
- }
-
- sp = savearea.wd90c11;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x2e); /* misc 1 */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x2f); /* misc 2 */
- outb(addr_6845+1, *sp++);
-
- outb(TS_INDEX, 0x10);/* Timing Sequencer */
- outb(addr_6845+1, *sp++);
- outb(TS_INDEX, 0x12);/* Timing Sequencer */
- outb(addr_6845+1, *sp++);
-
- outb(GN_MISCOUTW, *sp++); /* Misc output register */
-
- vsp->wd132col = 0;
- }
-
- /* restore fonts */
-
- for(i = 0; i < totalfonts; i++)
- if(saved_charsets[i])
- vga_move_charset(i, 0, 0);
-
- select_vga_charset(vsp->vga_charset);
-
- /* disable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- /* disable access to WD/Paradise "control extensions" */
-
- outb(GDC_INDEX, GDC_PR5GPLOCK);
- outb(GDC_INDEX, 0x00);
- outb(addr_6845, CRTC_PR10);
- outb(addr_6845, 0x00);
- outb(TS_INDEX, TS_UNLOCKSEQ);
- outb(TS_DATA, 0x00);
-
- vga_screen_on();
-
- return(1);
-}
-
-/*---------------------------------------------------------------------------*
- * toggle 80/132 column operation for TRIDENT 9000 based boards
- *---------------------------------------------------------------------------*/
-int
-tri9000_col(int cols)
-{
- u_char *sp;
- u_char byte;
-
- vga_screen_off();
-
- /* sync reset is necessary to preserve memory contents ... */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01); /* synchronous reset */
-
- /* disable protection of misc out and other regs */
-
- outb(addr_6845, CRTC_MTEST);
- byte = inb(addr_6845+1);
- outb(addr_6845, CRTC_MTEST);
- outb(addr_6845+1, byte & ~0x50);
-
- /* enable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- byte = inb(addr_6845+1);
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte & 0x7f);
-
- if(cols == SCR_COL132) /* switch 80 -> 132 */
- {
- /* save state of board for 80 columns */
-
- if(!regsaved)
- {
- regsaved = 1;
-
- sp = savearea.tri9000;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x13);
- *sp++ = inb(addr_6845+1);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- *sp++ = inb(TS_DATA);
-
- outb(TS_INDEX, TS_HWVERS);/* Hardware Version register */
- outb(TS_DATA, 0x00); /* write ANYTHING switches to OLD */
- outb(TS_INDEX, TS_MODEC2);
- *sp++ = inb(TS_DATA);
-
- outb(TS_INDEX, TS_HWVERS);/* Hardware Version register */
- inb(TS_DATA); /* read switches to NEW */
- outb(TS_INDEX, TS_MODEC2);
- *sp++ = inb(TS_DATA);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- *sp++ = inb(GN_MISCOUTR); /* Misc output register */
- }
-
- /* setup chipset for 132 column operation */
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, 0x9b);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, 0x83);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, 0x84);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, 0x1e);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, 0x87);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, 0x1a);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, 0x42);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, 0x01); /* 8 dot char clock */
-
- outb(TS_INDEX, TS_HWVERS);/* Hardware Version register */
- outb(TS_DATA, 0x00); /* write ANYTHING switches to OLD */
- outb(TS_INDEX, TS_MODEC2);
- outb(TS_DATA, 0x00);
-
- outb(TS_INDEX, TS_HWVERS);/* Hardware Version register */
- inb(TS_DATA); /* read switches to NEW */
- outb(TS_INDEX, TS_MODEC2);
- outb(TS_DATA, 0x01);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS); /* ATC Mode control */
- outb(ATC_DATAW, 0x08); /* Line graphics disable */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS); /* ATC Horizontal Pixel Panning */
- outb(ATC_DATAW, 0x00);
-
- outb(GN_MISCOUTW, (inb(GN_MISCOUTR) | 0x0c)); /* Misc output register */
- }
- else /* switch 132 -> 80 */
- {
- if(!regsaved) /* failsafe */
- {
- /* disable access to first 7 CRTC registers */
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
-
- vga_screen_on();
-
- return(0);
- }
-
- sp = savearea.tri9000;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, *sp++);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, *sp++);
-
- outb(TS_INDEX, TS_HWVERS);/* Hardware Version register */
- outb(TS_DATA, 0x00); /* write ANYTHING switches to OLD */
- outb(TS_INDEX, TS_MODEC2);/* Timing Sequencer */
- outb(TS_DATA, *sp++);
-
- outb(TS_INDEX, TS_HWVERS);/* Hardware Version register */
- inb(TS_DATA); /* read switches to NEW */
- outb(TS_INDEX, TS_MODEC2);/* Timing Sequencer */
- outb(TS_DATA, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- outb(GN_MISCOUTW, *sp++); /* Misc output register */
- }
-
- /* disable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
-
- vga_screen_on();
-
- return(1);
-}
-
-/*---------------------------------------------------------------------------*
- * toggle 80/132 column operation for Video7 VGA 1024i
- *---------------------------------------------------------------------------*/
-int
-v7_1024i_col(int cols)
-{
- u_char *sp;
- u_char byte;
- u_char save__byte;
-
- vga_screen_off();
-
- /* enable access to first 7 CRTC registers */
-
- /* first, enable read access to vertical retrace start/end */
- outb(addr_6845, CRTC_HBLANKE);
- byte = inb(addr_6845+1);
- outb(addr_6845, CRTC_HBLANKE);
- outb(addr_6845+1, (byte | 0x80));
-
- /* second, enable access to protected registers */
- outb(addr_6845, CRTC_VSYNCE);
- save__byte = byte = inb(addr_6845+1);
- byte |= 0x20; /* no irq 2 */
- byte &= 0x6f; /* wr enable, clr irq flag */
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- outb(TS_INDEX, TS_EXTCNTL); /* enable extensions */
- outb(TS_DATA, 0xea);
-
-
- if(cols == SCR_COL132) /* switch 80 -> 132 */
- {
- /* save state of board for 80 columns */
-
- if(!regsaved)
- {
- regsaved = 1;
-
- sp = savearea.v7_1024i;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- *sp++ = inb(addr_6845+1);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- *sp++ = inb(TS_DATA);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- outb(TS_INDEX, 0x83);
- *sp++ = inb(TS_DATA);
-
- outb(TS_INDEX, 0xa4);
- *sp++ = inb(TS_DATA);
-
- outb(TS_INDEX, 0xe0);
- *sp++ = inb(TS_DATA);
-
- outb(TS_INDEX, 0xe4);
- *sp++ = inb(TS_DATA);
-
- outb(TS_INDEX, 0xf8);
- *sp++ = inb(TS_DATA);
-
- outb(TS_INDEX, 0xfd);
- *sp++ = inb(TS_DATA);
-
- *sp++ = inb(GN_MISCOUTR); /* Misc output register */
- }
-
- /* setup chipset for 132 column operation */
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, 0x9c);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, 0x83);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, 0x86);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, 0x9e);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, 0x89);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, 0x1c);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, 0x42);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, 0x01); /* 8 dot char clock */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS); /* ATC Mode control */
- outb(ATC_DATAW, 0x08); /* Line graphics disable */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS); /* ATC Horizontal Pixel Panning */
- outb(ATC_DATAW, 0x00);
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01); /* synchronous reset */
-
- outb(TS_INDEX, 0x83);
- outb(TS_DATA, 0xa0);
-
- outb(TS_INDEX, 0xa4);
- outb(TS_DATA, 0x1c);
-
- outb(TS_INDEX, 0xe0);
- outb(TS_DATA, 0x00);
-
- outb(TS_INDEX, 0xe4);
- outb(TS_DATA, 0xfe);
-
- outb(TS_INDEX, 0xf8);
- outb(TS_DATA, 0x1b);
-
- outb(TS_INDEX, 0xfd);
- outb(TS_DATA, 0x33);
-
- byte = inb(GN_MISCOUTR);
- byte |= 0x0c;
- outb(GN_MISCOUTW, byte); /* Misc output register */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
- }
- else /* switch 132 -> 80 */
- {
- if(!regsaved) /* failsafe */
- {
- outb(TS_INDEX, TS_EXTCNTL); /* disable extensions */
- outb(TS_DATA, 0xae);
-
- /* disable access to first 7 CRTC registers */
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
- vga_screen_on();
- return(0);
- }
-
- sp = savearea.v7_1024i;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, *sp++);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01); /* synchronous reset */
-
- outb(TS_INDEX, 0x83);
- outb(TS_DATA, *sp++);
-
- outb(TS_INDEX, 0xa4);
- outb(TS_DATA, *sp++);
-
- outb(TS_INDEX, 0xe0);
- outb(TS_DATA, *sp++);
-
- outb(TS_INDEX, 0xe4);
- outb(TS_DATA, *sp++);
-
- outb(TS_INDEX, 0xf8);
- outb(TS_DATA, *sp++);
-
- outb(TS_INDEX, 0xfd);
- outb(TS_DATA, *sp++);
-
- outb(GN_MISCOUTW, *sp++); /* Misc output register */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
- }
-
- outb(TS_INDEX, TS_EXTCNTL); /* disable extensions */
- outb(TS_DATA, 0xae);
-
- /* disable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, save__byte);
-
- vga_screen_on();
-
- return(1);
-}
-
-/*---------------------------------------------------------------------------*
- * toggle 80/132 column operation for S3 86C928 based boards
- *---------------------------------------------------------------------------*/
-int
-s3_928_col(int cols)
-{
- u_char *sp;
- u_char byte;
-
- vga_screen_off();
-
- outb(addr_6845, 0x38);
- outb(addr_6845+1, 0x48); /* unlock registers */
- outb(addr_6845, 0x39);
- outb(addr_6845+1, 0xa0); /* unlock registers */
-
- /* enable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- byte = inb(addr_6845+1);
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte & 0x7f);
-
- if(cols == SCR_COL132) /* switch 80 -> 132 */
- {
- /* save state of board for 80 columns */
-
- if(!regsaved)
- {
- regsaved = 1;
-
- sp = savearea.s3_928;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x34); /* Backward Compat 3 Reg */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x3b); /* Data Xfer Exec Position */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x42); /* (Clock) Mode Control */
- *sp++ = inb(addr_6845+1);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- *sp++ = inb(TS_DATA);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- *sp++ = inb(GN_MISCOUTR); /* Misc output register */
- }
-
- /* setup chipset for 132 column operation */
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, 0x9a);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, 0x83);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, 0x86);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, 0x9d);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, 0x87);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, 0x1b);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, 0x42);
-
- outb(addr_6845, 0x34);
- outb(addr_6845+1, 0x10);/* enable data xfer pos control */
- outb(addr_6845, 0x3b);
- outb(addr_6845+1, 0x90);/* set data xfer pos value */
-
- outb(addr_6845, 0x42); /* (Clock) Mode Control */
- outb(addr_6845+1, 0x02);/* Select 40MHz Clock */
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, 0x01); /* 8 dot char clock */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS); /* ATC Mode control */
- outb(ATC_DATAW, 0x08); /* Line graphics disable */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS); /* ATC Horizontal Pixel Panning */
- outb(ATC_DATAW, 0x00);
-
- /* Misc output register */
-
- outb(GN_MISCOUTW, (inb(GN_MISCOUTR) | 0x0c));
- }
- else /* switch 132 -> 80 */
- {
- if(!regsaved) /* failsafe */
- {
- /* disable access to first 7 CRTC registers */
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- outb(addr_6845, 0x38);
- outb(addr_6845+1, 0x00); /* lock registers */
- outb(addr_6845, 0x39);
- outb(addr_6845+1, 0x00); /* lock registers */
-
- vga_screen_on();
- return(0);
- }
-
- sp = savearea.s3_928;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x34);
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x3b);
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x42); /* Mode control */
- outb(addr_6845+1, *sp++);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- outb(GN_MISCOUTW, *sp++); /* Misc output register */
- }
-
- /* disable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- outb(addr_6845, 0x38);
- outb(addr_6845+1, 0x00); /* lock registers */
- outb(addr_6845, 0x39);
- outb(addr_6845+1, 0x00); /* lock registers */
-
- vga_screen_on();
-
- return(1);
-}
-
-/*---------------------------------------------------------------------------*
- * toggle 80/132 column operation for Cirrus Logic 542x based boards
- *---------------------------------------------------------------------------*/
-int
-cl_gd542x_col(int cols)
-{
- u_char *sp;
- u_char byte;
-
- vga_screen_off();
-
- /* enable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- byte = inb(addr_6845+1);
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte & 0x7f);
-
- /* enable access to cirrus extension registers */
- outb(TS_INDEX, 6);
- outb(TS_DATA, 0x12);
-
- if(cols == SCR_COL132) /* switch 80 -> 132 */
- {
- /* save state of board for 80 columns */
-
- if(!regsaved)
- {
- regsaved = 1;
-
- sp = savearea.cirrus;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- *sp++ = inb(addr_6845+1);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- *sp++ = inb(addr_6845+1);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- *sp++ = inb(addr_6845+1);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- *sp++ = inb(TS_DATA);
-
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- *sp++ = inb(ATC_DATAR);
-
- /* VCLK2 Numerator Register */
- outb(TS_INDEX, 0xd);
- *sp++ = inb(TS_DATA);
-
- /* VCLK2 Denominator and Post-Scalar Value Register */
- outb(TS_INDEX, 0x1d);
- *sp++ = inb(TS_DATA);
-
- /* Misc output register */
- *sp++ = inb(GN_MISCOUTR);
- }
-
- /* setup chipset for 132 column operation */
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, 0x9f);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, 0x83);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, 0x84);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, 0x82);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, 0x8a);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, 0x9e);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, 0x42);
-
- /* set VCLK2 to 41.164 MHz ..... */
- outb(TS_INDEX, 0xd); /* VCLK2 Numerator Register */
- outb(TS_DATA, 0x45);
-
- outb(TS_INDEX, 0x1d); /* VCLK2 Denominator and */
- outb(TS_DATA, 0x30); /* Post-Scalar Value Register */
-
- /* and use it. */
- outb(GN_MISCOUTW, (inb(GN_MISCOUTR) & ~0x0c) | (2 << 2));
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, 0x01); /* 8 dot char clock */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS); /* ATC Mode control */
- outb(ATC_DATAW, 0x08); /* Line graphics disable */
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS); /* ATC Horizontal Pixel Panning */
- outb(ATC_DATAW, 0x00);
- }
- else /* switch 132 -> 80 */
- {
- if(!regsaved) /* failsafe */
- {
- /* disable access to first 7 CRTC registers */
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- /* disable access to cirrus extension registers */
- outb(TS_INDEX, 6);
- outb(TS_DATA, 0);
-
- vga_screen_on();
- return(0);
- }
-
- sp = savearea.cirrus;
-
- outb(addr_6845, 0x00); /* Horizontal Total */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x01); /* Horizontal Display End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x02); /* Horizontal Blank Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x03); /* Horizontal Blank End */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x04); /* Horizontal Retrace Start */
- outb(addr_6845+1, *sp++);
- outb(addr_6845, 0x05); /* Horizontal Retrace End */
- outb(addr_6845+1, *sp++);
-
- outb(addr_6845, 0x13); /* Row Offset Register */
- outb(addr_6845+1, *sp++);
-
- outb(TS_INDEX, TS_MODE);/* Timing Sequencer */
- outb(TS_DATA, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Mode control */
- outb(ATC_INDEX, ATC_MODE | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- if(color)
- inb(GN_INPSTAT1C);
- else
- inb(GN_INPSTAT1M);
- /* ATC Horizontal Pixel Panning */
- outb(ATC_INDEX, ATC_HORPIXPAN | ATC_ACCESS);
- outb(ATC_DATAW, *sp++);
-
- /* VCLK2 Numerator Register */
- outb(TS_INDEX, 0xd);
- outb(TS_DATA, *sp++);
-
- /* VCLK2 Denominator and Post-Scalar Value Register */
- outb(TS_INDEX, 0x1d);
- outb(TS_DATA, *sp++);
-
- outb(GN_MISCOUTW, *sp++); /* Misc output register */
- }
-
- /* disable access to cirrus extension registers */
- outb(TS_INDEX, 6);
- outb(TS_DATA, 0);
-
- /* disable access to first 7 CRTC registers */
-
- outb(addr_6845, CRTC_VSYNCE);
- outb(addr_6845+1, byte);
-
- vga_screen_on();
-
- return(1);
-}
-
-#ifdef XSERVER
-/*---------------------------------------------------------------------------*
- * switch screen from text mode to X-mode and vice versa
- *---------------------------------------------------------------------------*/
-void
-switch_screen(int n, int oldgrafx, int newgrafx)
-{
-#if PCVT_SCREENSAVER
- static unsigned saved_scrnsv_tmo = 0;
-#endif /* PCVT_SCREENSAVER */
-
- int cols = vsp->maxcol; /* get current col val */
-
- if(n < 0 || n >= totalscreens)
- return;
-
- if(!oldgrafx && newgrafx)
- {
- /* switch from text to graphics */
-
-#if PCVT_SCREENSAVER
- if((saved_scrnsv_tmo = scrnsv_timeout))
- pcvt_set_scrnsv_tmo(0); /* screensaver off */
-#endif /* PCVT_SCREENSAVER */
-
- async_update(UPDATE_STOP); /* status display off */
- }
-
- if(!oldgrafx)
- {
- /* switch from text mode */
-
- /* video board memory -> kernel memory */
- bcopy(vsp->Crtat, vsp->Memory,
- vsp->screen_rows * vsp->maxcol * CHR);
-
- vsp->Crtat = vsp->Memory; /* operate in memory now */
- }
-
- /* update global screen pointers/variables */
- current_video_screen = n; /* current screen no */
-
- vsp = &vs[n]; /* current video state ptr */
-
- if(oldgrafx && !newgrafx)
- {
- /* switch from graphics to text mode */
- unsigned i;
-
- /* restore fonts */
- for(i = 0; i < totalfonts; i++)
- if(saved_charsets[i])
- vga_move_charset(i, 0, 0);
-
-#if PCVT_SCREENSAVER
- /* activate screen saver */
- if(saved_scrnsv_tmo)
- pcvt_set_scrnsv_tmo(saved_scrnsv_tmo);
-#endif /* PCVT_SCREENSAVER */
-
- /* 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.
- */
- 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 */
- async_update(UPDATE_START);
- }
-
- if(!newgrafx)
- {
- /* to text mode */
-
- /* kernel memory -> video board memory */
- bcopy(vsp->Crtat, Crtat,
- vsp->screen_rows * vsp->maxcol * CHR);
-
- vsp->Crtat = Crtat; /* operate on screen now */
-
- outb(addr_6845, CRTC_STARTADRH);
- outb(addr_6845+1, 0);
- outb(addr_6845, CRTC_STARTADRL);
- outb(addr_6845+1, 0);
- }
-
- select_vga_charset(vsp->vga_charset);
-
- if(vsp->maxcol != cols)
- vga_col(vsp, vsp->maxcol); /* select 80/132 columns */
-
- outb(addr_6845, CRTC_CURSORH); /* select high register */
- outb(addr_6845+1, vsp->cur_offset >> 8);
- outb(addr_6845, CRTC_CURSORL); /* select low register */
- outb(addr_6845+1, vsp->cur_offset);
-
- if(vsp->cursor_on)
- {
- 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);
- }
- else
- {
- sw_cursor(0);
- }
-
- if(adaptor_type == VGA_ADAPTOR)
- {
- unsigned i;
-
- /* switch VGA DAC palette entries */
- for(i = 0; i < NVGAPEL; i++)
- vgapaletteio(i, &vsp->palette[i], 1);
- }
-
- if(!newgrafx)
- {
- update_led(); /* update led's */
- update_hp(vsp); /* update fkey labels, if present */
-
- /* if we switch to a vt with force 24 lines mode and */
- /* pure VT emulation and 25 rows charset, then we have */
- /* to clear the last line on display ... */
-
- if(vsp->force24 && (vsp->vt_pure_mode == M_PUREVT) &&
- (vgacs[vsp->vga_charset].screen_size == SIZ_25ROWS))
- {
- fillw(' ', vsp->Crtat + vsp->screen_rows * vsp->maxcol,
- vsp->maxcol);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Change specified vt to VT_AUTO mode
- * xxx Maybe this should also reset VT_GRAFX mode; since switching and
- * graphics modes are not going to work without VT_PROCESS mode.
- *---------------------------------------------------------------------------*/
-static void
-set_auto_mode (struct video_state *vsx)
-{
- unsigned ostatus = vsx->vt_status;
- vsx->smode.mode = VT_AUTO;
- vsx->proc = NULL;
- vsx->pid = 0;
- vsx->vt_status &= ~(VT_WAIT_REL|VT_WAIT_ACK);
-
- if (ostatus & VT_WAIT_ACK)
- {
- if(vsp == vsx && vt_switch_pending == current_video_screen + 1)
- vt_switch_pending = 0;
- }
- if (ostatus & VT_WAIT_REL)
- {
- int new_screen = vt_switch_pending - 1;
- if (vsp == vsx && vt_switch_pending)
- {
- vt_switch_pending = 0;
- vgapage (new_screen);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Exported function; to be called when a vt is closed down.
- *
- * Ideally, we would like to be able to recover from an X server crash;
- * but in reality, if the server crashes hard while in control of the
- * vga board, then you're not likely to be able to use pcvt ttys
- * without rebooting.
- *---------------------------------------------------------------------------*/
-void
-reset_usl_modes (struct video_state *vsx)
-{
- /* Clear graphics mode */
- if (vsx->vt_status & VT_GRAFX) {
- vsx->vt_status &= ~VT_GRAFX;
- if (vsp == vsx)
- switch_screen(current_video_screen, 1, 0);
- }
-
- /* Take kbd out of raw mode */
- if (pcvt_kbd_raw && vsp == vsx) {
-#if PCVT_SCANSET > 1
- kbd_emulate_pc(0);
-#endif /* PCVT_SCANSET > 1 */
- pcvt_kbd_raw = 0;
- }
-
- /* Clear process controlled mode */
- set_auto_mode (vsx);
-}
-
-/*
- * Fallback to VT_AUTO if controlling process died.
- */
-static void
-fallback_to_auto(struct video_state *vsx)
-{
- struct proc *p;
-
- if(vsx->proc) {
- p = pfind(vsx->pid);
- if (p != NULL) {
- PROC_UNLOCK(p);
- if (vsx->proc != p)
- set_auto_mode(vsx);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * switch to virtual screen n (0 ... PCVT_NSCREENS-1), VT_USL version
- * (the name vgapage() stands for historical reasons)
- *---------------------------------------------------------------------------*/
-int
-vgapage(int new_screen)
-{
- int x;
-
- if(new_screen < 0 || new_screen >= totalscreens)
- return EINVAL;
-
- /* fallback to VT_AUTO if controlling processes died */
- fallback_to_auto(vsp);
- fallback_to_auto(&vs[new_screen]);
-
- if (!vt_switch_pending && new_screen == current_video_screen)
- return 0;
-
- if(vt_switch_pending && vt_switch_pending != new_screen + 1) {
- /* Try resignaling uncooperative X-window servers */
- if (vsp->smode.mode == VT_PROCESS) {
- if (vsp->vt_status & VT_WAIT_REL) {
- if(vsp->smode.relsig) {
- PROC_LOCK(vsp->proc);
- psignal(vsp->proc, vsp->smode.relsig);
- PROC_UNLOCK(vsp->proc);
- }
- } else if (vsp->vt_status & VT_WAIT_ACK) {
- if(vsp->smode.acqsig) {
- PROC_LOCK(vsp->proc);
- psignal(vsp->proc, vsp->smode.acqsig);
- PROC_UNLOCK(vsp->proc);
- }
- }
- }
- return EAGAIN;
- }
-
- vt_switch_pending = new_screen + 1;
-
- if(vsp->smode.mode == VT_PROCESS)
- {
- /* we cannot switch immediately here */
- vsp->vt_status |= VT_WAIT_REL;
- if(vsp->smode.relsig) {
- PROC_LOCK(vsp->proc);
- psignal(vsp->proc, vsp->smode.relsig);
- PROC_UNLOCK(vsp->proc);
- }
- }
- else
- {
- struct video_state *old_vsp = vsp;
-
- switch_screen(new_screen,
- vsp->vt_status & VT_GRAFX,
- vs[new_screen].vt_status & VT_GRAFX);
-
- x = spltty();
-
- if(old_vsp->vt_status & VT_WAIT_ACT)
- {
- old_vsp->vt_status &= ~VT_WAIT_ACT;
- wakeup(&old_vsp->smode);
- }
-
- if(vsp->vt_status & VT_WAIT_ACT)
- {
- vsp->vt_status &= ~VT_WAIT_ACT;
- wakeup(&vsp->smode);
- }
-
- splx(x);
-
- if(vsp->smode.mode == VT_PROCESS)
- {
- /* if _new_ vt is under process control... */
- vsp->vt_status |= VT_WAIT_ACK;
- if(vsp->smode.acqsig) {
- PROC_LOCK(vsp->proc);
- psignal(vsp->proc, vsp->smode.acqsig);
- PROC_UNLOCK(vsp->proc);
- }
- }
- else
- {
- /* we are committed */
- vt_switch_pending = 0;
-
- /*
- * XXX: If pcvt is acting as the systems console,
- * avoid panics going to the debugger while we are in
- * process mode.
- */
- if(pcvt_is_console)
- cnavailable(pcvt_consptr, TRUE);
- }
- }
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * ioctl handling for VT_USL mode
- *---------------------------------------------------------------------------*/
-int
-usl_vt_ioctl(struct cdev *dev, int cmd, caddr_t data, int flag, struct thread *td)
-{
- struct proc *p;
- int i, j, error, opri;
- struct vt_mode newmode;
-
- switch(cmd)
- {
-
- case VT_SETMODE:
- newmode = *(struct vt_mode *)data;
- p = td->td_proc;
-
- opri = spltty();
-
- if (newmode.mode != VT_PROCESS) {
- struct video_state *vsx = &vs[minor(dev)];
- if (vsx->smode.mode == VT_PROCESS) {
- if (vsx->proc != p) {
- splx(opri);
- return EPERM;
- }
- set_auto_mode(vsx);
- }
- splx(opri);
- return 0;
- }
-
- /*
- * NB: XFree86-3.1.1 does the following:
- * VT_ACTIVATE (vtnum)
- * VT_WAITACTIVE (vtnum)
- * VT_SETMODE (VT_PROCESS)
- * So it is possible that the screen was switched
- * between the WAITACTIVE and the SETMODE (here). This
- * can actually happen quite frequently, and it was
- * leading to dire consequences. Now it is detected by
- * requiring that minor(dev) match current_video_screen.
- * An alternative would be to operate on vs[minor(dev)]
- * instead of *vsp, but that would leave the server
- * confused, because it would believe that its vt was
- * currently activated.
- */
- if (minor(dev) != current_video_screen) {
- splx(opri);
- return EPERM;
- }
-
- /* Check for server died */
- fallback_to_auto(vsp);
-
- /* Check for server already running */
- if (vsp->smode.mode == VT_PROCESS && vsp->proc != p)
- {
- splx(opri);
- return EBUSY; /* already in use on this VT */
- }
-
- if (!ISSIGVALID(newmode.relsig) || !ISSIGVALID(newmode.acqsig)
- || !ISSIGVALID(newmode.frsig))
- {
- splx(opri);
- return EINVAL;
- }
-
- vsp->smode = newmode;
- vsp->proc = p;
- vsp->pid = p->p_pid;
-
- /*
- * XXX: If pcvt is acting as the systems console,
- * avoid panics going to the debugger while we are in
- * process mode.
- */
- if(pcvt_is_console)
- cnavailable(pcvt_consptr, (newmode.mode != VT_PROCESS));
-
- splx(opri);
- return 0;
-
- case VT_GETMODE:
- *(struct vt_mode *)data = vsp->smode;
- return 0;
-
- case VT_RELDISP:
- p = td->td_proc;
-
- if (minor(dev) != current_video_screen)
- return EPERM;
- if (vsp->smode.mode != VT_PROCESS)
- return EINVAL;
- if (vsp->proc != p)
- return EPERM;
- switch(*(int *)data) {
- case VT_FALSE:
- /* process refuses to release screen; abort */
- if(vt_switch_pending
- && (vsp->vt_status & VT_WAIT_REL)) {
- vsp->vt_status &= ~VT_WAIT_REL;
- vt_switch_pending = 0;
- return 0;
- }
- break;
-
- case VT_TRUE:
- /* process releases its VT */
- if(vt_switch_pending
- && (vsp->vt_status & VT_WAIT_REL)) {
- int new_screen = vt_switch_pending - 1;
- struct video_state *old_vsp = vsp;
-
- vsp->vt_status &= ~VT_WAIT_REL;
-
- switch_screen(new_screen,
- vsp->vt_status & VT_GRAFX,
- vs[new_screen].vt_status
- & VT_GRAFX);
-
- opri = spltty();
- if(old_vsp->vt_status & VT_WAIT_ACT)
- {
- old_vsp->vt_status &= ~VT_WAIT_ACT;
- wakeup(&old_vsp->smode);
- }
- if(vsp->vt_status & VT_WAIT_ACT)
- {
- vsp->vt_status &= ~VT_WAIT_ACT;
- wakeup(&vsp->smode);
- }
- splx(opri);
-
- if(vsp->smode.mode == VT_PROCESS) {
- /*
- * if the new vt is also in process
- * mode, we have to wait until its
- * controlling process acknowledged
- * the switch
- */
- vsp->vt_status
- |= VT_WAIT_ACK;
- if(vsp->smode.acqsig) {
- PROC_LOCK(vsp->proc);
- psignal(vsp->proc,
- vsp->smode.acqsig);
- PROC_UNLOCK(vsp->proc);
- }
- }
- else
- {
- /* we are committed */
- vt_switch_pending = 0;
-
- /* XXX */
- if(pcvt_is_console)
- cnavailable(pcvt_consptr, TRUE);
- }
- return 0;
- }
- break;
-
- case VT_ACKACQ:
- /* new vts controlling process acknowledged */
- if(vsp->vt_status & VT_WAIT_ACK) {
- vt_switch_pending = 0;
- vsp->vt_status &= ~VT_WAIT_ACK;
-
- /* XXX */
- if(pcvt_is_console)
- cnavailable(pcvt_consptr, FALSE);
-
- return 0;
- }
- break;
- }
- return EINVAL; /* end case VT_RELDISP */
-
-
- case VT_OPENQRY:
- /* return free vt */
- for(i = 0; i < PCVT_NSCREENS; i++)
- if(!vs[i].openf) {
- *(int *)data = i + 1;
- return 0;
- }
- return EAGAIN;
-
- case VT_GETACTIVE:
- *(int *)data = current_video_screen + 1;
- return 0;
-
- case VT_ACTIVATE:
- return vgapage(*(int *)data - 1);
-
- case VT_WAITACTIVE:
- /* sleep until vt switch happened */
- i = *(int *)data - 1;
-
- if(i != -1
- && (i < 0 || i >= PCVT_NSCREENS))
- return EINVAL;
-
- if(i != -1 && current_video_screen == i)
- return 0;
-
- if(i == -1)
- i = minor(dev);
-
- {
- int x = spltty();
- error = 0;
- while (current_video_screen != i &&
- (error == 0 || error == ERESTART))
- {
- vs[i].vt_status |= VT_WAIT_ACT;
- error = tsleep(&vs[i].smode,
- PZERO | PCATCH, "waitvt", 0);
- }
- splx(x);
- }
- return error;
-
- case KDENABIO:
- /* grant the process IO access; only allowed if euid == 0 */
- /* and insecure */
- {
- struct trapframe *fp = td->td_frame;
-
- error = suser(td);
- if (error != 0)
- return (error);
- error = securelevel_gt(td->td_ucred, 0);
- if (error != 0)
- return (error);
-
- fp->tf_eflags |= PSL_IOPL;
-
- return 0;
- }
-
- case KDDISABIO:
- /* abandon IO access permission */
- {
- struct trapframe *fp = td->td_frame;
- fp->tf_eflags &= ~PSL_IOPL;
- return 0;
- }
-
- case KDSETMODE:
- {
- struct video_state *vsx = &vs[minor(dev)];
- int haschanged = 0;
-
- if(adaptor_type != VGA_ADAPTOR
- && adaptor_type != MDA_ADAPTOR)
- /* X will only run on those adaptors */
- return (EINVAL);
-
- /* set text/graphics mode of current vt */
- switch(*(int *)data)
- {
- case KD_TEXT:
- haschanged = (vsx->vt_status & VT_GRAFX) != 0;
- vsx->vt_status &= ~VT_GRAFX;
- if(haschanged && vsx == vsp)
- switch_screen(current_video_screen, 1, 0);
- return 0;
-
- case KD_GRAPHICS:
- /* xxx It might be a good idea to require that
- the vt be in process controlled mode here,
- and that the calling process is the owner */
- haschanged = (vsx->vt_status & VT_GRAFX) == 0;
- vsx->vt_status |= VT_GRAFX;
- if(haschanged && vsx == vsp)
- switch_screen(current_video_screen, 0, 1);
- return 0;
-
- }
- return EINVAL; /* end case KDSETMODE */
- }
-
- case KDSETRAD:
- /* set keyboard repeat and delay */
- return kbdioctl(dev, KBDSTPMAT, data, flag);
-
- case KDSKBMODE:
- switch(*(int *)data)
- {
- case K_RAW:
-
-#if PCVT_SCANSET > 1
- /* put keyboard to return ancient PC scan codes */
- kbd_emulate_pc(1);
-#endif /* PCVT_SCANSET > 1 */
-
- pcvt_kbd_raw = 1;
- shift_down = meta_down = altgr_down = ctrl_down = 0;
- return 0;
-
- case K_XLATE:
-
-#if PCVT_SCANSET > 1
- kbd_emulate_pc(0);
-#endif /* PCVT_SCANSET > 1 */
-
- pcvt_kbd_raw = 0;
- return 0;
- }
- return EINVAL; /* end KDSKBMODE */
-
- case KDMKTONE:
- /* ring the speaker */
- if(data)
- {
- int duration = *(int *)data >> 16;
- int pitch = *(int *)data & 0xffff;
-
- sysbeep(pitch, duration * hz / 3000);
- }
- else
- {
- sysbeep(PCVT_SYSBEEPF / 1493, hz / 4);
- }
- return 0;
-
- case KDSETLED:
- /* set kbd LED status */
- /* unfortunately, the LED definitions between pcvt and */
- /* USL differ some way :-( */
- i = *(int *)data;
- j = (i & LED_CAP? KBD_CAPSLOCK: 0)
- + (i & LED_NUM? KBD_NUMLOCK: 0)
- + (i & LED_SCR? KBD_SCROLLLOCK: 0);
- return kbdioctl(dev, KBDSLOCK, (caddr_t)&j, flag);
-
- case KDGETLED:
- /* get kbd LED status */
- if((error = kbdioctl(dev, KBDGLOCK, (caddr_t)&j, flag)))
- return error;
- i = (j & KBD_CAPSLOCK? LED_CAP: 0)
- + (j & KBD_NUMLOCK? LED_NUM: 0)
- + (j & KBD_SCROLLLOCK? LED_SCR: 0);
- *(int *)data = i;
- return 0;
-
- case GIO_KEYMAP:
- get_usl_keymap((keymap_t *)data);
- return 0;
- } /* end case cmd */
-
- return -1; /* inappropriate usl_vt_compat ioctl */
-}
-#endif /* XSERVER */
-
-/* ------------------------- E O F ------------------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_hdr.h b/sys/i386/isa/pcvt/pcvt_hdr.h
deleted file mode 100644
index 74f8ec8..0000000
--- a/sys/i386/isa/pcvt/pcvt_hdr.h
+++ /dev/null
@@ -1,1102 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
- *
- * Copyright (c) 1992, 1993 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_hdr.h VT220 Driver Global Include File
- * ------------------------------------------------
- *
- * Last Edit-Date: [Wed Apr 5 18:21:32 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#define PCVT_REL "3.60" /* driver attach announcement */
- /* see also: pcvt_ioctl.h */
-
-#include "opt_pcvt.h"
-
-#include <sys/param.h>
-#include <sys/systm.h>
-#include <sys/callout.h>
-#include <sys/conf.h>
-#include <sys/cons.h>
-#include <sys/kdb.h>
-#include <sys/kernel.h>
-#include <sys/module.h>
-#include <sys/lock.h>
-#include <sys/malloc.h>
-#include <sys/mutex.h>
-#include <sys/proc.h>
-#include <sys/random.h>
-#include <sys/signalvar.h>
-#include <sys/syslog.h>
-#include <sys/time.h>
-#include <sys/tty.h>
-#include <sys/uio.h>
-
-#include <machine/bus.h>
-#include <machine/psl.h>
-#include <machine/frame.h>
-#include <machine/pcvt_ioctl.h>
-#include <machine/pc/display.h>
-#include <machine/clock.h>
-#include <machine/md_var.h>
-#include <machine/stdarg.h>
-
-#include <dev/kbd/kbdreg.h>
-#include <dev/atkbdc/atkbdcreg.h>
-
-#include <i386/isa/pcvt/pcvt_conf.h>
-
-/*===========================================================================*
- * definitions
- *===========================================================================*/
-
-#define PCVT_KBD_FIFO_SZ 256 /* keyboard fifo size */
-#define PCVT_PCBURST 256 /* # of burst out chars */
-#define SCROLLBACK_PAGES 8 /* scrollback buffer pages */
-#define SCROLLBACK_COOKIE 31337 /* scrollback buffer pages */
-#define PCVT_NONRESP_KEYB_TRY 25 /* no of times to try to detect */
- /* a nonresponding keyboard */
-
-/*
- * The following values are defined in sys/kbio.h, but the header
- * file is not included here due to conflicts with pcvt_ioctl.h.
- * XXX: Still relevant ?
- */
-#define KDGKBTYPE _IOR('K', 64, int)
-#define KB_84 1
-#define KB_101 2
-#define KB_OTHER 3
-
-/* setup irq disable function to use */
-
-#if !(PCVT_SLOW_INTERRUPT)
-# define PCVT_DISABLE_INTR() disable_intr()
-# define PCVT_ENABLE_INTR() enable_intr()
-#else
-# define PCVT_DISABLE_INTR() s = spltty()
-# define PCVT_ENABLE_INTR() splx(s)
-#endif
-
-#ifdef XSERVER
-
-/* PCVT_NULLCHARS is mandatory for X server */
-
-#undef PCVT_NULLCHARS
-#define PCVT_NULLCHARS 1
-
-#endif /* XSERVER */
-
-/* PCVT_SCREENSAVER is mandatory for PCVT_PRETTYSCRNS */
-
-#if PCVT_PRETTYSCRNS && !PCVT_SCREENSAVER
-#undef PCVT_SCREENSAVER
-#define PCVT_SCREENSAVER 1
-#endif
-
-#if PCVT_SCANSET !=1 && PCVT_SCANSET !=2
-#error "Supported keyboard scancode sets are 1 and 2 only (for now)!!!"
-#endif
-
-/*---------------------------------------------------------------------------*
- * keyboard
- *---------------------------------------------------------------------------*/
-
-/* responses from the KEYBOARD (via the 8042 controller on mainboard..) */
-
-#define KEYB_R_OVERRUN0 0x00 /* keyboard buffer overflow */
-#define KEYB_R_SELFOK 0xaa /* keyboard selftest ok after KEYB_C_RESET */
-#define KEYB_R_EXT0 0xe0 /* keyboard extended scancode prefix 1 */
-#define KEYB_R_EXT1 0xe1 /* keyboard extended scancode prefix 2 */
-#define KEYB_R_ECHO 0xee /* keyboard response to KEYB_C_ECHO */
-#define KEYB_R_BREAKPFX 0xf0 /* break code prefix for set 2 and 3 */
-#define KEYB_R_ACK 0xfa /* acknowledge after a command has rx'd */
-#define KEYB_R_SELFBAD 0xfc /*keyboard selftest FAILED after KEYB_C_RESET*/
-#define KEYB_R_DIAGBAD 0xfd /* keyboard self diagnostic failure */
-#define KEYB_R_RESEND 0xfe /* keyboard wants command resent or illegal
- * command rx'd */
-#define KEYB_R_OVERRUN1 0xff /* keyboard buffer overflow */
-
-#define KEYB_R_MF2ID1 0xab /* MF II Keyboard id-byte #1 */
-#define KEYB_R_MF2ID2 0x41 /* MF II Keyboard id-byte #2 */
-#define KEYB_R_MF2ID2HP 0x83 /* MF II Keyboard id-byte #2 from HP keybd's */
-
-/* internal Keyboard Type */
-
-#define KB_UNKNOWN 0 /* unknown keyboard type */
-#define KB_AT 1 /* AT (84 keys) Keyboard */
-#define KB_MFII 2 /* MF II (101/102 keys) Keyboard */
-
-/*---------------------------------------------------------------------------*
- * CMOS ram access to get the "Equipment Byte"
- *---------------------------------------------------------------------------*/
-
-#define RTC_EQUIPMENT 0x14 /* equipment byte in cmos ram */
-#define EQ_EGAVGA 0 /* reserved (= ega/vga) */
-#define EQ_40COLOR 1 /* display = 40 col color */
-#define EQ_80COLOR 2 /* display = 80 col color */
-#define EQ_80MONO 3 /* display = 80 col mono */
-
-/*---------------------------------------------------------------------------*
- * VT220 -> internal color conversion table fields
- *---------------------------------------------------------------------------*/
-
-#define VT_NORMAL 0x00 /* no attributes at all */
-#define VT_BOLD 0x01 /* bold attribute */
-#define VT_UNDER 0x02 /* underline attribute */
-#define VT_BLINK 0x04 /* blink attribute */
-#define VT_INVERSE 0x08 /* inverse attribute */
-
-/*---------------------------------------------------------------------------*
- * VGA GENERAL/EXTERNAL Registers (3BA or 3DA and 3CA, 3C2, 3CC)
- *---------------------------------------------------------------------------*/
-
-#define GN_MISCOUTR 0x3CC /* misc output register read */
-#define GN_MISCOUTW 0x3C2 /* misc output register write */
-#define GN_INPSTAT0 0x3C2 /* input status 0, r/o */
-#define GN_INPSTAT1M 0x3BA /* input status 1, r/o, mono */
-#define GN_INPSTAT1C 0x3DA /* input status 1, r/o, color */
-#define GN_FEATR 0x3CA /* feature control, read */
-#define GN_FEATWM 0x3BA /* feature control, write, mono */
-#define GN_FEATWC 0x3DA /* feature control, write, color */
-#define GN_VSUBSYS 0x3C3 /* video subsystem register r/w */
-#define GN_DMCNTLM 0x3B8 /* display mode control, r/w, mono */
-#define GN_DMCNTLC 0x3D8 /* display mode control, r/w, color */
-#define GN_COLORSEL 0x3D9 /* color select register, w/o */
-#define GN_HERCOMPAT 0x3BF /* Hercules compatibility reg, w/o */
-
-/*---------------------------------------------------------------------------*
- * VGA CRTC Registers (3B4 and 3B5 or 3D4 and 3D5)
- *---------------------------------------------------------------------------*/
-
-#define MONO_BASE 0x3B4 /* crtc index register address mono */
-#define CGA_BASE 0x3D4 /* crtc index register address color */
-
-#define CRTC_ADDR 0x00 /* index register */
-
-#define CRTC_HTOTAL 0x00 /* horizontal total */
-#define CRTC_HDISPLE 0x01 /* horizontal display end */
-#define CRTC_HBLANKS 0x02 /* horizontal blank start */
-#define CRTC_HBLANKE 0x03 /* horizontal blank end */
-#define CRTC_HSYNCS 0x04 /* horizontal sync start */
-#define CRTC_HSYNCE 0x05 /* horizontal sync end */
-#define CRTC_VTOTAL 0x06 /* vertical total */
-#define CRTC_OVERFLL 0x07 /* overflow low */
-#define CRTC_IROWADDR 0x08 /* inital row address */
-#define CRTC_MAXROW 0x09 /* maximum row address */
-#define CRTC_CURSTART 0x0A /* cursor start row address */
-#define CURSOR_ON_BIT 0x20 /* cursor on/off on mda/cga/vga */
-#define CRTC_CUREND 0x0B /* cursor end row address */
-#define CRTC_STARTADRH 0x0C /* linear start address mid */
-#define CRTC_STARTADRL 0x0D /* linear start address low */
-#define CRTC_CURSORH 0x0E /* cursor address mid */
-#define CRTC_CURSORL 0x0F /* cursor address low */
-#define CRTC_VSYNCS 0x10 /* vertical sync start */
-#define CRTC_VSYNCE 0x11 /* vertical sync end */
-#define CRTC_VDE 0x12 /* vertical display end */
-#define CRTC_OFFSET 0x13 /* row offset */
-#define CRTC_ULOC 0x14 /* underline row address */
-#define CRTC_VBSTART 0x15 /* vertical blank start */
-#define CRTC_VBEND 0x16 /* vertical blank end */
-#define CRTC_MODE 0x17 /* CRTC mode register */
-#define CRTC_SPLITL 0x18 /* split screen start low */
-
-/* start of ET4000 extensions */
-
-#define CRTC_RASCAS 0x32 /* ras/cas configuration */
-#define CRTC_EXTSTART 0x33 /* extended start address */
-#define CRTC_COMPAT6845 0x34 /* 6845 comatibility control */
-#define CRTC_OVFLHIGH 0x35 /* overflow high */
-#define CRTC_SYSCONF1 0x36 /* video system configuration 1 */
-#define CRTC_SYSCONF2 0x36 /* video system configuration 2 */
-
-/* start of WD/Paradise extensions */
-
-#define CRTC_PR10 0x29 /* r/w unlocking */
-#define CRTC_PR11 0x2A /* ega switches */
-#define CRTC_PR12 0x2B /* scratch pad */
-#define CRTC_PR13 0x2C /* interlace h/2 start */
-#define CRTC_PR14 0x2D /* interlace h/2 end */
-#define CRTC_PR15 0x2E /* misc control #1 */
-#define CRTC_PR16 0x2F /* misc control #2 */
-#define CRTC_PR17 0x30 /* misc control #3 */
- /* 0x31 .. 0x3f reserved */
-/* Video 7 */
-
-#define CRTC_V7ID 0x1f /* identification register */
-
-/* Trident */
-
-#define CRTC_MTEST 0x1e /* module test register */
-#define CRTC_SOFTPROG 0x1f /* software programming */
-#define CRTC_LATCHRDB 0x22 /* latch read back register */
-#define CRTC_ATTRSRDB 0x24 /* attribute state read back register*/
-#define CRTC_ATTRIRDB 0x26 /* attribute index read back register*/
-#define CRTC_HOSTAR 0x27 /* high order start address register */
-
-/*---------------------------------------------------------------------------*
- * VGA TIMING & SEQUENCER Registers (3C4 and 3C5)
- *---------------------------------------------------------------------------*/
-
-#define TS_INDEX 0x3C4 /* index register */
-#define TS_DATA 0x3C5 /* data register */
-
-#define TS_SYNCRESET 0x00 /* synchronous reset */
-#define TS_MODE 0x01 /* ts mode register */
-#define TS_WRPLMASK 0x02 /* write plane mask */
-#define TS_FONTSEL 0x03 /* font select register */
-#define TS_MEMMODE 0x04 /* memory mode register */
-
-/* ET4000 only */
-
-#define TS_RESERVED 0x05 /* undef, reserved */
-#define TS_STATECNTL 0x06 /* state control register */
-#define TS_AUXMODE 0x07 /* auxiliary mode control */
-
-/* WD/Paradise only */
-
-#define TS_UNLOCKSEQ 0x06 /* PR20 - unlock sequencer register */
-#define TS_DISCFSTAT 0x07 /* PR21 - display config status */
-#define TS_MEMFIFOCTL 0x10 /* PR30 - memory i/f & fifo control */
-#define TS_SYSIFCNTL 0x11 /* PR31 - system interface control */
-#define TS_MISC4 0x12 /* PR32 - misc control #4 */
-
-/* Video 7 */
-
-#define TS_EXTCNTL 0x06 /* extensions control */
-#define TS_CLRVDISP 0x30 /* clear vertical display 0x30-0x3f */
-#define TS_V7CHIPREV 0x8e /* chipset revision 0x8e-0x8f */
-#define TS_SWBANK 0xe8 /* single/write bank register, rev 5+*/
-#define TS_RDBANK 0xe8 /* read bank register, rev 4+ */
-#define TS_MISCCNTL 0xe8 /* misc control register, rev 4+ */
-#define TS_SWSTROBE 0xea /* switch strobe */
-#define TS_MWRCNTL 0xf3 /* masked write control */
-#define TS_MWRMVRAM 0xf4 /* masked write mask VRAM only */
-#define TS_BANKSEL 0xf6 /* bank select */
-#define TS_SWREADB 0xf7 /* switch readback */
-#define TS_PAGESEL 0xf9 /* page select */
-#define TS_COMPAT 0xfc /* compatibility control */
-#define TS_16BITCTL 0xff /* 16 bit interface control */
-
-/* Trident */
-
-#define TS_HWVERS 0x0b /* hardware version, switch old/new! */
-#define TS_CONFPORT1 0x0c /* config port 1 and 2 - caution! */
-#define TS_MODEC2 0x0d /* old/new mode control 2 - caution! */
-#define TS_MODEC1 0x0e /* old/new mode control 1 - caution! */
-#define TS_PUPM2 0x0f /* power up mode 2 */
-
-/*---------------------------------------------------------------------------*
- * VGA GRAPHICS DATA CONTROLLER Registers (3CE, 3CF and 3CD)
- *---------------------------------------------------------------------------*/
-
-#define GDC_SEGSEL 0x3CD /* segment select register */
-#define GDC_INDEX 0x3CE /* index register */
-#define GDC_DATA 0x3CF /* data register */
-
-#define GDC_SETRES 0x00 /* set / reset bits */
-#define GDC_ENSETRES 0x01 /* enable set / reset */
-#define GDC_COLORCOMP 0x02 /* color compare register */
-#define GDC_ROTFUNC 0x03 /* data rotate / function select */
-#define GDC_RDPLANESEL 0x04 /* read plane select */
-#define GDC_MODE 0x05 /* gdc mode register */
-#define GDC_MISC 0x06 /* gdc misc register */
-#define GDC_COLORCARE 0x07 /* color care register */
-#define GDC_BITMASK 0x08 /* bit mask register */
-
-/* WD/Paradise only */
-
-#define GDC_BANKSWA 0x09 /* PR0A - bank switch a */
-#define GDC_BANKSWB 0x0a /* PR0B - bank switch b */
-#define GDC_MEMSIZE 0x0b /* PR1 memory size */
-#define GDC_VIDEOSEL 0x0c /* PR2 video configuration */
-#define GDC_CRTCNTL 0x0d /* PR3 crt address control */
-#define GDC_VIDEOCNTL 0x0e /* PR4 video control */
-#define GDC_PR5GPLOCK 0x0f /* PR5 gp status and lock */
-
-/* Video 7 */
-
-#define GDC_DATALATCH 0x22 /* gdc data latch */
-
-/*---------------------------------------------------------------------------*
- * VGA ATTRIBUTE CONTROLLER Registers (3C0 and 3C1)
- *---------------------------------------------------------------------------*/
-
-#define ATC_INDEX 0x3C0 /* index register AND */
-#define ATC_DATAW 0x3C0 /* data write !!! */
-#define ATC_DATAR 0x3C1 /* data read */
-
-#define ATC_ACCESS 0x20 /* access bit in ATC index register */
-
-#define ATC_PALETTE0 0x00 /* color palette register 0 */
-#define ATC_PALETTE1 0x01 /* color palette register 1 */
-#define ATC_PALETTE2 0x02 /* color palette register 2 */
-#define ATC_PALETTE3 0x03 /* color palette register 3 */
-#define ATC_PALETTE4 0x04 /* color palette register 4 */
-#define ATC_PALETTE5 0x05 /* color palette register 5 */
-#define ATC_PALETTE6 0x06 /* color palette register 6 */
-#define ATC_PALETTE7 0x07 /* color palette register 7 */
-#define ATC_PALETTE8 0x08 /* color palette register 8 */
-#define ATC_PALETTE9 0x09 /* color palette register 9 */
-#define ATC_PALETTEA 0x0A /* color palette register 10 */
-#define ATC_PALETTEB 0x0B /* color palette register 11 */
-#define ATC_PALETTEC 0x0C /* color palette register 12 */
-#define ATC_PALETTED 0x0D /* color palette register 13 */
-#define ATC_PALETTEE 0x0E /* color palette register 14 */
-#define ATC_PALETTEF 0x0F /* color palette register 15 */
-#define ATC_MODE 0x10 /* atc mode register */
-#define ATC_OVERSCAN 0x11 /* overscan register */
-#define ATC_COLPLEN 0x12 /* color plane enable register */
-#define ATC_HORPIXPAN 0x13 /* horizontal pixel panning */
-#define ATC_COLRESET 0x14 /* color reset */
-#define ATC_MISC 0x16 /* misc register (ET3000/ET4000) */
-
-/*---------------------------------------------------------------------------*
- * VGA palette handling (output DAC palette)
- *---------------------------------------------------------------------------*/
-
-#define VGA_DAC 0x3C6 /* vga dac address */
-#define VGA_PMSK 0x3F /* palette mask, 64 distinct values */
-#define NVGAPEL 256 /* number of palette entries */
-
-/*---------------------------------------------------------------------------*
- * function key labels
- *---------------------------------------------------------------------------*/
-
-#define LABEL_LEN 9 /* length of one label */
-#define LABEL_MID 8 /* mid-part (row/col) */
-
-#define LABEL_ROWH ((4*LABEL_LEN)+1)
-#define LABEL_ROWL ((4*LABEL_LEN)+2)
-#define LABEL_COLU ((4*LABEL_LEN)+4)
-#define LABEL_COLH ((4*LABEL_LEN)+5)
-#define LABEL_COLL ((4*LABEL_LEN)+6)
-
-/* tab setting */
-
-#define MAXTAB 132 /* no of possible tab stops */
-
-/* escape detection state machine */
-
-#define STATE_INIT 0 /* normal */
-#define STATE_ESC 1 /* got ESC */
-#define STATE_BLANK 2 /* got ESC space*/
-#define STATE_HASH 3 /* got ESC # */
-#define STATE_BROPN 4 /* got ESC ( */
-#define STATE_BRCLO 5 /* got ESC ) */
-#define STATE_CSI 6 /* got ESC [ */
-#define STATE_CSIQM 7 /* got ESC [ ? */
-#define STATE_AMPSND 8 /* got ESC & */
-#define STATE_STAR 9 /* got ESC * */
-#define STATE_PLUS 10 /* got ESC + */
-#define STATE_DCS 11 /* got ESC P */
-#define STATE_SCA 12 /* got ESC <Ps> " */
-#define STATE_STR 13 /* got ESC ! */
-#define STATE_MINUS 14 /* got ESC - */
-#define STATE_DOT 15 /* got ESC . */
-#define STATE_SLASH 16 /* got ESC / */
-
-/* for storing escape sequence parameters */
-
-#define MAXPARMS 10 /* maximum no of parms */
-
-/* terminal responses */
-
-#define DA_VT220 "\033[?62;1;2;6;7;8;9c"
-
-/* sub-states for Device Control String processing */
-
-#define DCS_INIT 0 /* got ESC P ... */
-#define DCS_AND_UDK 1 /* got ESC P ... | */
-#define DCS_UDK_DEF 2 /* got ESC P ... | fnckey / */
-#define DCS_UDK_ESC 3 /* got ESC P ... | fnckey / ... ESC */
-#define DCS_DLD_DSCS 4 /* got ESC P ... { */
-#define DCS_DLD_DEF 5 /* got ESC P ... { dscs */
-#define DCS_DLD_ESC 6 /* got ESC P ... { dscs ... / ... ESC */
-
-/* vt220 user defined keys and vt220 downloadable charset */
-
-#define MAXUDKDEF 300 /* max 256 char + 1 '\0' + space.. */
-#define MAXUDKEYS 18 /* plus holes .. */
-#define DSCS_LENGTH 3 /* descriptor length */
-#define MAXSIXEL 8 /* sixels forever ! */
-
-/* sub-states for HP-terminal emulator */
-
-#define SHP_INIT 0
-
-/* esc & f family */
-
-#define SHP_AND_F 1
-#define SHP_AND_Fa 2
-#define SHP_AND_Fak 3
-#define SHP_AND_Fak1 4
-#define SHP_AND_Fakd 5
-#define SHP_AND_FakdL 6
-#define SHP_AND_FakdLl 7
-#define SHP_AND_FakdLls 8
-
-/* esc & j family */
-
-#define SHP_AND_J 9
-#define SHP_AND_JL 10
-
-/* esc & every-thing-else */
-
-#define SHP_AND_ETE 11
-
-/* additionals for function key labels */
-
-#define MAX_LABEL 16
-#define MAX_STRING 80
-#define MAX_STATUS 160
-
-/* MAX values for screen sizes for possible video adaptors */
-
-#define MAXROW_MDACGA 25 /* MDA/CGA can do 25 x 80 max */
-#define MAXCOL_MDACGA 80
-
-#define MAXROW_EGA 43 /* EGA can do 43 x 80 max */
-#define MAXCOL_EGA 80
-
-#define MAXROW_VGA 50 /* VGA can do 50 x 80 max */
-#define MAXCOL_VGA 80
-#define MAXCOL_SVGA 132 /* Super VGA can do 50 x 132 max */
-
-/* switch 80/132 columns */
-
-#define SCR_COL80 80 /* in 80 col mode */
-#define SCR_COL132 132 /* in 132 col mode */
-
-#define MAXDECSCA (((MAXCOL_SVGA * MAXROW_VGA) \
- / (8 * sizeof(unsigned int)) ) + 1 )
-
-/* screen memory start, monochrome */
-
-#ifndef MONO_BUF
-#define MONO_BUF (KERNBASE+0xB0000)
-#endif
-
-/* screen memory start, color */
-
-#ifndef CGA_BUF
-#define CGA_BUF (KERNBASE+0xB8000)
-#endif
-
-#define CHR 2 /* bytes per word in screen mem */
-
-#define NVGAFONTS 8 /* number of vga fonts loadable */
-
-#define MAXKEYNUM 127 /* max no of keys in table */
-
-/* charset tables */
-
-#define CSL 0x0000 /* ega/vga charset, lower half of 512 */
-#define CSH 0x0800 /* ega/vga charset, upper half of 512 */
-#define CSSIZE 96 /* (physical) size of a character set */
-
-/* charset designations */
-
-#define D_G0 0 /* designated as G0 */
-#define D_G1 1 /* designated as G1 */
-#define D_G2 2 /* designated as G2 */
-#define D_G3 3 /* designated as G3 */
-#define D_G1_96 4 /* designated as G1 for 96-char charsets */
-#define D_G2_96 5 /* designated as G2 for 96-char charsets */
-#define D_G3_96 6 /* designated as G3 for 96-char charsets */
-
-/* which fkey-labels */
-
-#define SYS_FKL 0 /* in hp mode, sys-fkls are active */
-#define USR_FKL 1 /* in hp mode, user-fkls are active */
-
-/* arguments to async_update() */
-
-#define UPDATE_START ((void *)0) /* do cursor update and requeue */
-#define UPDATE_STOP ((void *)1) /* suspend cursor updates */
-#define UPDATE_KERN ((void *)2) /* do cursor updates for kernel output */
-
-
-/*===========================================================================*
- * variables
- *===========================================================================*/
-
-#ifdef MAIN
-# define EXTERN /* actually define variables when included from pcvt_drv.c */
-#else
-# define EXTERN extern /* declare them only */
-#endif
-
-EXTERN u_char *more_chars; /* response buffer via kbd */
-EXTERN u_char color; /* color or mono display */
-
-EXTERN u_short kern_attr; /* kernel messages char attributes */
-EXTERN u_short user_attr; /* character attributes */
-
-EXTERN struct tty *pcvt_tty[PCVT_NSCREENS];
-
-struct sixels {
- u_char lower[MAXSIXEL]; /* lower half of char */
- u_char upper[MAXSIXEL]; /* upper half of char */
-};
-
-struct udkentry {
- u_short first[MAXUDKEYS]; /* index to first char */
- u_char length[MAXUDKEYS]; /* length of this entry */
-};
-
-/* VGA palette handling */
-struct rgb {
- u_char r, g, b; /* red/green/blue, valid 0..VGA_PMSK */
-};
-
-typedef struct video_state {
- u_short *Crtat; /* video page start addr */
- u_short *Memory; /* malloc'ed memory start address */
- struct tty *vs_tty; /* pointer to this screen's tty */
- u_char maxcol; /* 80 or 132 cols on screen */
- u_char row, col; /* current cursor position */
- u_short c_attr; /* current character attributes */
- u_char vtsgr; /* current sgr configuration */
- u_short cur_offset; /* current cursor position offset */
- u_char bell_on; /* flag, bell enabled */
- u_char sevenbit; /* flag, data path 7 bits wide */
- u_char dis_fnc; /* flag, display functions enable */
- u_char transparent; /* flag, mk path tmp trnsprnt for ctls*/
- u_char scrr_beg; /* scrolling region, begin */
- u_char scrr_len; /* scrolling region, length */
- u_char scrr_end; /* scrolling region, end */
- u_char screen_rows; /* screen size, length - status lines */
- u_char screen_rowsize; /* screen size, length */
- u_char vga_charset; /* VGA character set value */
- u_char lastchar; /* flag, vt100 behaviour of last char */
- u_char lastrow; /* save row, --------- " ----------- */
- u_char *report_chars; /* ptr, status reports from terminal */
- u_char report_count; /* count, ----------- " ------------ */
- u_char state; /* escape sequence state machine */
- u_char m_awm; /* flag, vt100 mode, auto wrap */
- u_char m_om; /* flag, vt100 mode, origin mode */
- u_char sc_flag; /* flag, vt100 mode,saved parms valid */
- u_char sc_row; /* saved row */
- u_char sc_col; /* saved col */
- u_short sc_cur_offset; /* saved cursor addr offset */
- u_short sc_attr; /* saved attributes */
- u_char sc_vtsgr; /* saved sgr configuration */
- u_char sc_awm; /* saved auto wrap mode */
- u_char sc_om; /* saved origin mode */
- u_short *sc_G0; /* save G0 ptr */
- u_short *sc_G1; /* save G1 ptr */
- u_short *sc_G2; /* save G2 ptr */
- u_short *sc_G3; /* save G3 ptr */
- u_short **sc_GL; /* save GL ptr */
- u_short **sc_GR; /* save GR ptr */
- u_char sc_sel; /* selective erase state */
- u_char ufkl[8][17]; /* user fkey-labels */
- u_char sfkl[8][17]; /* system fkey-labels */
- u_char labels_on; /* display fkey labels etc. on/off */
- u_char which_fkl; /* which fkey labels are active */
- char tab_stops[MAXTAB]; /* table of active tab stops */
- u_char parmi; /* parameter index */
- u_char parms[MAXPARMS]; /* parameter array */
- u_char hp_state; /* hp escape sequence state machine */
- u_char attribute; /* attribute normal, tx only, local */
- u_char key; /* fkey label no */
- u_char l_len; /* buffer length's */
- u_char s_len;
- u_char m_len;
- u_char i; /* help (got short of names ...) */
- u_char l_buf[MAX_LABEL+1]; /* buffers */
- u_char s_buf[MAX_STRING+1];
- u_char m_buf[MAX_STATUS+1];
- u_char openf; /* we are opened ! */
- u_char vt_pure_mode; /* no fkey labels, row/col, status */
- u_char cursor_start; /* Start of cursor */
- u_char cursor_end; /* End of cursor */
- u_char cursor_on; /* cursor switched on */
- u_char ckm; /* true = cursor key normal mode */
- u_char irm; /* true = insert mode */
- u_char lnm; /* Line Feed/New Line Mode */
- u_char dcs_state; /* dcs escape sequence state machine */
- u_char udk_def[MAXUDKDEF]; /* new definitions for vt220 FKeys */
- u_short udk_defi; /* index for FKey definitions */
- u_char udk_deflow; /* low or high nibble in sequence */
- u_char udk_fnckey; /* function key to assign to */
- u_char dld_dscs[DSCS_LENGTH]; /* designate soft character set id */
- u_char dld_dscsi; /* index for dscs */
- u_char dld_sixel_lower; /* upper/lower sixels of character */
- u_char dld_sixelli; /* index for lower sixels */
- u_char dld_sixelui; /* index for upper sixels */
- struct sixels sixel; /* structure for storing char sixels */
- u_char selchar; /* true = selective attribute on */
- u_int decsca[MAXDECSCA]; /* Select Character Attrib bit array */
- u_short **GL; /* ptr to current GL conversion table*/
- u_short **GR; /* ptr to current GR conversion table*/
- u_short *G0; /* ptr to current G0 conversion table*/
- u_short *G1; /* ptr to current G1 conversion table*/
- u_char force24; /* force 24 lines in DEC 25 and HP 28*/
- u_short *G2; /* ptr to current G2 conversion table*/
- u_short *G3; /* ptr to current G3 conversion table*/
- u_char dld_id[DSCS_LENGTH+1]; /* soft character set id */
- u_char which[DSCS_LENGTH+1]; /* which set to designate */
- u_char whichi; /* index into which .. */
- u_char ss; /* flag, single shift G2 / G3 -> GL */
- u_short **Gs; /* ptr to cur. G2/G3 conversion table*/
- u_char udkbuf[MAXUDKDEF]; /* buffer for user defined keys */
- struct udkentry ukt; /* index & length for each udk */
- u_short udkff; /* index into buffer first free entry*/
- struct rgb palette[NVGAPEL]; /* saved VGA DAC palette */
- u_char wd132col; /* we are on a wd vga and in 132 col */
- u_char scroll_lock; /* scroll lock active */
- u_char caps_lock; /* caps lock active */
- u_char shift_lock; /* shiftlock flag (virtual ..) */
- u_char num_lock; /* num lock, true = keypad num mode */
- u_char abs_write; /* write outside of scroll region */
-
- u_short *Scrollback; /* scrollback buffer */
- u_short scrollback_pages; /* size of scrollback buffer */
- u_short scr_offset; /* current scrollback offset (lines) */
- short scrolling; /* current scrollback page */
- u_short max_off; /* maximum scrollback offset */
-#ifdef XSERVER
- struct vt_mode smode;
- struct proc *proc;
- pid_t pid;
- unsigned vt_status;
-#define VT_WAIT_REL 1 /* wait till process released vt */
-#define VT_WAIT_ACK 2 /* wait till process ack vt acquire */
-#define VT_GRAFX 4 /* vt runs graphics mode */
-#define VT_WAIT_ACT 8 /* a process is sleeping on this vt */
- /* becoming active */
-#endif /* XSERVER */
-} video_state;
-
-EXTERN video_state vs[PCVT_NSCREENS]; /* parameters for screens */
-
-struct vga_char_state {
- int loaded; /* Whether a font is loaded here */
- int secondloaded; /* an extension characterset was loaded, */
- /* the number is found here */
- u_char char_scanlines; /* Scanlines per character */
- u_char scr_scanlines; /* Low byte of scanlines per screen */
- int screen_size; /* Screen size in SIZ_YYROWS */
-};
-
-EXTERN struct vga_char_state vgacs[NVGAFONTS]; /* Character set states */
-
-EXTERN u_short *Crtat; /* screen start address */
-
-#ifdef MAIN
-
-u_char fgansitopc[] = { /* foreground ANSI color -> pc */
- FG_BLACK, FG_RED, FG_GREEN, FG_BROWN, FG_BLUE,
- FG_MAGENTA, FG_CYAN, FG_LIGHTGREY
-};
-
-u_char bgansitopc[] = { /* background ANSI color -> pc */
- BG_BLACK, BG_RED, BG_GREEN, BG_BROWN, BG_BLUE,
- BG_MAGENTA, BG_CYAN, BG_LIGHTGREY
-};
-
-video_state *vsp = &vs[0]; /* ptr to current screen parms */
-
-#ifdef XSERVER
-int vt_switch_pending = 0; /* if > 0, a vt switch is */
-#endif /* XSERVER */ /* pending; contains the # */
- /* of the old vt + 1 */
-
-u_int addr_6845 = MONO_BASE; /* crtc base addr */
-u_char do_initialization = 1; /* we have to init ourselves */
-u_char pcvt_is_console = 0; /* until we know it */
-u_char shift_down = 0; /* shift key down flag */
-u_char ctrl_down = 0; /* ctrl key down flag */
-u_char meta_down = 0; /* alt key down flag */
-u_char altgr_down = 0; /* altgr key down flag */
-u_char kbrepflag = 1; /* key repeat flag */
-u_char totalscreens = 1; /* screens available */
-u_char current_video_screen = 0; /* displayed screen no */
-u_char adaptor_type = UNKNOWN_ADAPTOR;/* adaptor type */
-u_char vga_type = VGA_UNKNOWN; /* vga chipset */
-u_char can_do_132col = 0; /* vga chipset can 132 cols */
-u_char vga_family = 0; /* vga manufacturer */
-u_char totalfonts = 0; /* fonts available */
-u_char chargen_access = 0; /* synchronize access */
-u_char keyboard_type = KB_UNKNOWN; /* type of keyboard */
-u_char keyboard_is_initialized = 0; /* for ddb sanity */
-u_char kbd_polling = 0; /* keyboard is being polled */
-u_char reset_keyboard = 0; /* OK to reset keyboard */
-keyboard_t *kbd = NULL;
-struct consdev *pcvt_consptr = NULL;
-
-#if PCVT_SHOWKEYS
-u_char keyboard_show = 0; /* normal display */
-#endif /* PCVT_SHOWKEYS */
-
-u_char cursor_pos_valid = 0; /* sput left a valid position*/
-
-u_char critical_scroll = 0; /* inside scrolling up */
-int switch_page = -1; /* which page to switch to */
-
-#if PCVT_SCREENSAVER
-u_char reset_screen_saver = 1; /* reset the saver next time */
-u_char scrnsv_active = 0; /* active flag */
-#endif /* PCVT_SCREENSAVER */
-
-#ifdef XSERVER
-unsigned scrnsv_timeout = 0; /* initially off */
-u_char pcvt_kbd_raw = 0; /* keyboard sends scans */
-#endif /* XSERVER */
-
-u_char *saved_charsets[NVGAFONTS] = {0}; /* backup copy of fonts */
-
-/*---------------------------------------------------------------------------
-
- VT220 attributes -> internal emulator attributes conversion tables
-
- be careful when designing color combinations, because on
- EGA and VGA displays, bit 3 of the attribute byte is used
- for characterset switching, and is no longer available for
- foreground intensity (bold)!
-
----------------------------------------------------------------------------*/
-
-/* color displays */
-
-u_char sgr_tab_color[16] = {
-/*00*/ (BG_BLACK | FG_LIGHTGREY), /* normal */
-/*01*/ (BG_BLUE | FG_LIGHTGREY), /* bold */
-/*02*/ (BG_BROWN | FG_LIGHTGREY), /* underline */
-/*03*/ (BG_MAGENTA | FG_LIGHTGREY), /* bold+underline */
-/*04*/ (BG_BLACK | FG_LIGHTGREY | FG_BLINK), /* blink */
-/*05*/ (BG_BLUE | FG_LIGHTGREY | FG_BLINK), /* bold+blink */
-/*06*/ (BG_BROWN | FG_LIGHTGREY | FG_BLINK), /* underline+blink */
-/*07*/ (BG_MAGENTA | FG_LIGHTGREY | FG_BLINK), /* bold+underline+blink */
-/*08*/ (BG_LIGHTGREY | FG_BLACK), /* invers */
-/*09*/ (BG_LIGHTGREY | FG_BLUE), /* bold+invers */
-/*10*/ (BG_LIGHTGREY | FG_BROWN), /* underline+invers */
-/*11*/ (BG_LIGHTGREY | FG_MAGENTA), /* bold+underline+invers*/
-/*12*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK), /* blink+invers */
-/*13*/ (BG_LIGHTGREY | FG_BLUE | FG_BLINK), /* bold+blink+invers */
-/*14*/ (BG_LIGHTGREY | FG_BROWN | FG_BLINK), /* underline+blink+invers*/
-/*15*/ (BG_LIGHTGREY | FG_MAGENTA | FG_BLINK) /*bold+underl+blink+invers*/
-};
-
-/* monochrome displays (VGA version, no intensity) */
-
-u_char sgr_tab_mono[16] = {
-/*00*/ (BG_BLACK | FG_LIGHTGREY), /* normal */
-/*01*/ (BG_BLACK | FG_UNDERLINE), /* bold */
-/*02*/ (BG_BLACK | FG_UNDERLINE), /* underline */
-/*03*/ (BG_BLACK | FG_UNDERLINE), /* bold+underline */
-/*04*/ (BG_BLACK | FG_LIGHTGREY | FG_BLINK), /* blink */
-/*05*/ (BG_BLACK | FG_UNDERLINE | FG_BLINK), /* bold+blink */
-/*06*/ (BG_BLACK | FG_UNDERLINE | FG_BLINK), /* underline+blink */
-/*07*/ (BG_BLACK | FG_UNDERLINE | FG_BLINK), /* bold+underline+blink */
-/*08*/ (BG_LIGHTGREY | FG_BLACK), /* invers */
-/*09*/ (BG_LIGHTGREY | FG_BLACK), /* bold+invers */
-/*10*/ (BG_LIGHTGREY | FG_BLACK), /* underline+invers */
-/*11*/ (BG_LIGHTGREY | FG_BLACK), /* bold+underline+invers*/
-/*12*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK), /* blink+invers */
-/*13*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK), /* bold+blink+invers */
-/*14*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK), /* underline+blink+invers*/
-/*15*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK) /*bold+underl+blink+invers*/
-};
-
-/* monochrome displays (MDA version, with intensity) */
-
-u_char sgr_tab_imono[16] = {
-/*00*/ (BG_BLACK | FG_LIGHTGREY), /* normal */
-/*01*/ (BG_BLACK | FG_LIGHTGREY | FG_INTENSE), /* bold */
-/*02*/ (BG_BLACK | FG_UNDERLINE), /* underline */
-/*03*/ (BG_BLACK | FG_UNDERLINE | FG_INTENSE), /* bold+underline */
-/*04*/ (BG_BLACK | FG_LIGHTGREY | FG_BLINK), /* blink */
-/*05*/ (BG_BLACK | FG_LIGHTGREY | FG_INTENSE | FG_BLINK), /* bold+blink */
-/*06*/ (BG_BLACK | FG_UNDERLINE | FG_BLINK), /* underline+blink */
-/*07*/ (BG_BLACK | FG_UNDERLINE | FG_BLINK | FG_INTENSE), /* bold+underline+blink */
-/*08*/ (BG_LIGHTGREY | FG_BLACK), /* invers */
-/*09*/ (BG_LIGHTGREY | FG_BLACK | FG_INTENSE), /* bold+invers */
-/*10*/ (BG_LIGHTGREY | FG_BLACK), /* underline+invers */
-/*11*/ (BG_LIGHTGREY | FG_BLACK | FG_INTENSE), /* bold+underline+invers*/
-/*12*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK), /* blink+invers */
-/*13*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK | FG_INTENSE),/* bold+blink+invers*/
-/*14*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK), /* underline+blink+invers*/
-/*15*/ (BG_LIGHTGREY | FG_BLACK | FG_BLINK | FG_INTENSE) /* bold+underl+blink+invers */
-};
-
-u_char pcvt_kbd_fifo[PCVT_KBD_FIFO_SZ];
-int pcvt_kbd_rptr = 0;
-int pcvt_kbd_count= 0;
-
-#else /* ! MAIN */
-
-extern u_char pcvt_kbd_fifo[];
-extern int pcvt_kbd_rptr;
-extern int pcvt_kbd_count;
-
-extern u_char vga_type;
-extern video_state *vsp;
-
-#ifdef XSERVER
-extern int vt_switch_pending;
-#endif /* XSERVER */
-
-extern u_int addr_6845;
-extern u_char do_initialization;
-extern u_char pcvt_is_console;
-extern u_char bgansitopc[];
-extern u_char fgansitopc[];
-extern u_char shift_down;
-extern u_char ctrl_down;
-extern u_char meta_down;
-extern u_char altgr_down;
-extern u_char kbrepflag;
-extern u_char adaptor_type;
-extern u_char current_video_screen;
-extern u_char totalfonts;
-extern u_char totalscreens;
-extern u_char chargen_access;
-extern u_char keyboard_type;
-extern u_char can_do_132col;
-extern u_char vga_family;
-extern u_char keyboard_is_initialized;
-extern u_char kbd_polling;
-extern u_char reset_keyboard;
-extern keyboard_t *kbd;
-extern struct consdev *pcvt_consptr;
-
-#if PCVT_SHOWKEYS
-extern u_char keyboard_show;
-#endif /* PCVT_SHOWKEYS */
-
-extern u_char cursor_pos_valid;
-
-extern u_char critical_scroll;
-extern int switch_page;
-
-#if PCVT_SCREENSAVER
-extern u_char reset_screen_saver;
-extern u_char scrnsv_active;
-#endif /* PCVT_SCREENSAVER */
-
-extern u_char sgr_tab_color[];
-extern u_char sgr_tab_mono[];
-extern u_char sgr_tab_imono[];
-
-#ifdef XSERVER
-extern unsigned scrnsv_timeout;
-extern u_char pcvt_xmode;
-extern u_char pcvt_kbd_raw;
-#endif /* XSERVER */
-
-extern u_char *saved_charsets[NVGAFONTS];
-
-#endif /* MAIN */
-
-/*===========================================================================*
- * forward declarations
- *===========================================================================*/
-
-void async_update ( void *arg );
-void clr_parms ( struct video_state *svsp );
-void cons_highlight ( void );
-void cons_normal ( void );
-void dprintf ( unsigned flgs, const char *fmt, ... );
-int egavga_test ( void );
-void fkl_off ( struct video_state *svsp );
-void fkl_on ( struct video_state *svsp );
-
-#ifdef XSERVER
-void get_usl_keymap( keymap_t *map );
-#endif
-
-void init_sfkl ( struct video_state *svsp );
-void init_ufkl ( struct video_state *svsp );
-int kbdioctl ( struct cdev *dev, int cmd, caddr_t data, int flag );
-void kbd_code_init ( void );
-void kbd_code_init1 ( void );
-
-#if PCVT_SCANSET > 1
-void kbd_emulate_pc(int do_emulation);
-#endif
-
-void loadchar ( int fontset, int character, int char_scanlines, u_char *char_table );
-void mda2egaorvga ( void );
-void pcvt_rint(int unit);
-
-#if PCVT_SCREENSAVER
-void pcvt_scrnsv_reset ( void );
-#ifdef XSERVER
-void pcvt_set_scrnsv_tmo ( int );
-#endif
-#endif
-
-void reallocate_scrollbuffer ( struct video_state *svsp, int pages );
-
-#ifdef XSERVER
-void reset_usl_modes (struct video_state *vsx);
-#endif
-
-void roll_up ( struct video_state *svsp, int n );
-void select_vga_charset ( int vga_charset );
-void set_2ndcharset ( void );
-void set_charset ( struct video_state *svsp, int curvgacs );
-void set_emulation_mode ( struct video_state *svsp, int mode );
-void set_screen_size ( struct video_state *svsp, int size );
-u_char *sgetc ( int noblock );
-void sixel_vga ( struct sixels *charsixel, u_char *charvga );
-void sput ( u_char *s, int attrib, int len, int page );
-
-#ifdef XSERVER
-void switch_screen ( int n, int oldgrafx, int newgrafx );
-#endif
-
-void swritefkl ( int num, u_char *string, struct video_state *svsp );
-void sw_cursor ( int onoff );
-void sw_sfkl ( struct video_state *svsp );
-void sw_ufkl ( struct video_state *svsp );
-void toggl_24l ( struct video_state *svsp );
-void toggl_awm ( struct video_state *svsp );
-void toggl_bell ( struct video_state *svsp );
-void toggl_columns ( struct video_state *svsp );
-void toggl_dspf ( struct video_state *svsp );
-void toggl_sevenbit ( struct video_state *svsp );
-void update_hp ( struct video_state *svsp );
-void update_led ( void );
-
-#ifdef XSERVER
-int usl_vt_ioctl (struct cdev *dev, int cmd, caddr_t data, int flag, struct thread *);
-#endif
-
-void vga10_vga10 ( u_char *invga, u_char *outvga );
-void vga10_vga14 ( u_char *invga, u_char *outvga );
-void vga10_vga16 ( u_char *invga, u_char *outvga );
-void vga10_vga8 ( u_char *invga, u_char *outvga );
-int vgaioctl ( struct cdev *dev, int cmd, caddr_t data, int flag );
-
-#ifdef XSERVER
-int vgapage ( int n );
-#else
-void vgapage ( int n );
-#endif
-
-void vgapaletteio ( unsigned idx, struct rgb *val, int writeit );
-char *vga_string ( int number );
-u_char vga_chipset ( void );
-int vga_col ( struct video_state *svsp, int cols );
-void vga_move_charset ( unsigned n, unsigned char *b, int save_it);
-void vga_screen_off ( void );
-void vga_screen_on ( void );
-int vga_test ( void );
-
-#ifdef XSERVER
-int vt_activate ( int newscreen );
-#endif
-
-void vt_aln ( struct video_state *svsp );
-void vt_clearudk ( struct video_state *svsp );
-void vt_clreol ( struct video_state *svsp );
-void vt_clreos ( struct video_state *svsp );
-void vt_clrtab ( struct video_state *svsp );
-int vt_col ( struct video_state *svsp, int cols );
-void vt_coldmalloc ( void );
-void vt_cub ( struct video_state *svsp );
-void vt_cud ( struct video_state *svsp );
-void vt_cuf ( struct video_state *svsp );
-void vt_curadr ( struct video_state *svsp );
-void vt_cuu ( struct video_state *svsp );
-void vt_da ( struct video_state *svsp );
-void vt_dch ( struct video_state *svsp );
-void vt_dcsentry ( int ch, struct video_state *svsp );
-void vt_designate ( struct video_state *svsp);
-void vt_dl ( struct video_state *svsp );
-void vt_dld ( struct video_state *svsp );
-void vt_dsr ( struct video_state *svsp );
-void vt_ech ( struct video_state *svsp );
-void vt_ic ( struct video_state *svsp );
-void vt_il ( struct video_state *svsp );
-void vt_ind ( struct video_state *svsp );
-void vt_initsel ( struct video_state *svsp );
-void vt_keyappl ( struct video_state *svsp );
-void vt_keynum ( struct video_state *svsp );
-void vt_mc ( struct video_state *svsp );
-void vt_nel ( struct video_state *svsp );
-void vt_rc ( struct video_state *svsp );
-void vt_reqtparm ( struct video_state *svsp );
-void vt_reset_ansi ( struct video_state *svsp );
-void vt_reset_dec_priv_qm ( struct video_state *svsp );
-void vt_ri ( struct video_state *svsp );
-void vt_ris ( struct video_state *svsp );
-void vt_sc ( struct video_state *svsp );
-void vt_sca ( struct video_state *svsp );
-void vt_sd ( struct video_state *svsp );
-void vt_sed ( struct video_state *svsp );
-void vt_sel ( struct video_state *svsp );
-void vt_set_ansi ( struct video_state *svsp );
-void vt_set_dec_priv_qm ( struct video_state *svsp );
-void vt_sgr ( struct video_state *svsp );
-void vt_stbm ( struct video_state *svsp );
-void vt_str ( struct video_state *svsp );
-void vt_su ( struct video_state *svsp );
-void vt_tst ( struct video_state *svsp );
-void vt_udk ( struct video_state *svsp );
-
-
-#ifdef PCVT_INCLUDE_VT_SELATTR
-/*---------------------------------------------------------------------------*
- * set selective attribute if appropriate
- *---------------------------------------------------------------------------*/
-#define INT_BITS (sizeof(unsigned int) * 8)
-#define INT_INDEX(n) ((n) / INT_BITS)
-#define BIT_INDEX(n) ((n) % INT_BITS)
-
-static __inline void
-vt_selattr(struct video_state *svsp)
-{
- int i;
-
- i = (svsp->Crtat + svsp->cur_offset) - svsp->Crtat;
-
- if(svsp->selchar)
- svsp->decsca[INT_INDEX(i)] |= (1 << BIT_INDEX(i));
- else
- svsp->decsca[INT_INDEX(i)] &= ~(1 << BIT_INDEX(i));
-}
-
-#endif /* PCVT_INCLUDE_VT_SELATTR */
-
-/*---------------------------------- E O F ----------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_kbd.c b/sys/i386/isa/pcvt/pcvt_kbd.c
deleted file mode 100644
index 9c4d8dc..0000000
--- a/sys/i386/isa/pcvt/pcvt_kbd.c
+++ /dev/null
@@ -1,2523 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
- *
- * Copyright (c) 1992, 1993 Brian Dunford-Shore and Holger Veit.
- *
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz and Don Ahn.
- *
- * This code is derived from software contributed to 386BSD by
- * Holger Veit.
- *
- * 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_kbd.c VT220 Driver Keyboard Interface Code
- * ----------------------------------------------------
- *
- * Last Edit-Date: [Wed Apr 5 18:16:52 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include "opt_ddb.h"
-
-#include <i386/isa/pcvt/pcvt_hdr.h> /* global include */
-
-#define LEDSTATE_UPDATE_PENDING (1 << 3)
-
-static void fkey1(void), fkey2(void), fkey3(void), fkey4(void);
-static void fkey5(void), fkey6(void), fkey7(void), fkey8(void);
-static void fkey9(void), fkey10(void), fkey11(void), fkey12(void);
-
-static void sfkey1(void), sfkey2(void), sfkey3(void), sfkey4(void);
-static void sfkey5(void), sfkey6(void), sfkey7(void), sfkey8(void);
-static void sfkey9(void), sfkey10(void), sfkey11(void), sfkey12(void);
-
-static void cfkey1(void), cfkey2(void), cfkey3(void), cfkey4(void);
-static void cfkey5(void), cfkey6(void), cfkey7(void), cfkey8(void);
-static void cfkey9(void), cfkey10(void), cfkey11(void), cfkey12(void);
-
-#include <i386/isa/pcvt/pcvt_kbd.h> /* tables etc */
-
-static void doreset ( void );
-static void ovlinit ( int force );
-static void settpmrate ( int rate );
-static void setlockkeys ( int snc );
-static int getokeydef ( unsigned key, struct kbd_ovlkey *thisdef );
-static int getckeydef ( unsigned key, struct kbd_ovlkey *thisdef );
-static int rmkeydef ( int key );
-static void scrollback_save_screen ( void );
-static void scrollback_restore_screen ( void );
-static int setkeydef ( struct kbd_ovlkey *data );
-static u_char *xlatkey2ascii( int key );
-
-static int ledstate = LEDSTATE_UPDATE_PENDING; /* keyboard led's */
-static int tpmrate = KBD_TPD500|KBD_TPM100;
-static u_char altkpflag = 0;
-static u_short altkpval = 0;
-static u_short *scrollback_savedscreen = (u_short *)0;
-static size_t scrnsv_size = (size_t)-1;
-static int lost_intr_timeout_queued = 0;
-static struct callout_handle lost_intr_ch =
- CALLOUT_HANDLE_INITIALIZER(&lost_intr_ch);
-
-#if PCVT_SHOWKEYS
-u_char rawkeybuf[80];
-#endif
-
-#if PCVT_USEKBDSEC /* security enabled */
-
-# if PCVT_SCANSET == 2
-# define KBDINITCMD 0
-# else /* PCVT_SCANSET != 2 */
-# define KBDINITCMD KBD_TRANSLATION
-# endif /* PCVT_SCANSET == 2 */
-
-#else /* ! PCVT_USEKBDSEC */ /* security disabled */
-
-# if PCVT_SCANSET == 2
-# define KBDINITCMD KBD_OVERRIDE_KBD_LOCK
-# else /* PCVT_SCANSET != 2 */
-# define KBDINITCMD KBD_TRANSLATION | KBD_OVERRIDE_KBD_LOCK
-# endif /* PCVT_SCANSET == 2 */
-
-#endif /* PCVT_USEKBDSEC */
-
-#if PCVT_SHOWKEYS
-/*---------------------------------------------------------------------------*
- * keyboard debugging: put kbd communication char into some buffer
- *---------------------------------------------------------------------------*/
-static void showkey (char delim, u_char val)
-{
- int rki;
-
- for(rki = 3; rki < 80; rki++) /* shift left buffer */
- rawkeybuf[rki-3] = rawkeybuf[rki];
-
- rawkeybuf[77] = delim; /* delimiter */
-
- rki = (val & 0xf0) >> 4; /* ms nibble */
-
- if(rki <= 9)
- rki = rki + '0';
- else
- rki = rki - 10 + 'A';
-
- rawkeybuf[78] = rki;
-
- rki = val & 0x0f; /* ls nibble */
-
- if(rki <= 9)
- rki = rki + '0';
- else
- rki = rki - 10 + 'A';
-
- rawkeybuf[79] = rki;
-}
-#endif /* PCVT_SHOWKEYS */
-
-/*---------------------------------------------------------------------------*
- * function to switch to another virtual screen
- *---------------------------------------------------------------------------*/
-static void
-do_vgapage(int page)
-{
- if(critical_scroll) /* executing critical region ? */
- switch_page = page; /* yes, auto switch later */
- else
- vgapage(page); /* no, switch now */
-}
-
-/*---------------------------------------------------------------------------*
- * check for lost keyboard interrupts
- *---------------------------------------------------------------------------*/
-static void
-check_for_lost_intr(void *arg)
-{
- int opri;
-
- lost_intr_timeout_queued = 0;
-
- if (kbd && (*kbdsw[kbd->kb_index]->lock)(kbd, TRUE))
- {
- opri = spltty ();
- (*kbdsw[kbd->kb_index]->lock)(kbd, FALSE);
- if ((*kbdsw[kbd->kb_index]->check)(kbd))
- pcvt_rint(0);
- splx (opri);
- }
-
- lost_intr_ch = timeout(check_for_lost_intr, (void *)NULL, hz);
- lost_intr_timeout_queued = 1;
-}
-
-/*---------------------------------------------------------------------------*
- * update keyboard led's
- *---------------------------------------------------------------------------*/
-void
-update_led(void)
-{
-#if !PCVT_NO_LED_UPDATE
-
- /* Don't update LED's unless necessary. */
-
- int opri, new_ledstate;
-
- opri = spltty();
-
- new_ledstate = ((vsp->scroll_lock) ? LED_SCR : 0) |
- ((vsp->num_lock) ? LED_NUM : 0) |
- ((vsp->caps_lock) ? LED_CAP : 0);
-
- if (new_ledstate != ledstate)
- {
- if (kbd == NULL)
- {
- ledstate = new_ledstate;
- splx(opri);
- }
- else
- {
- ledstate = LEDSTATE_UPDATE_PENDING;
- splx(opri);
- if ((*kbdsw[kbd->kb_index]->ioctl)(kbd, KDSETLED,
- (caddr_t)&new_ledstate) == 0)
- ledstate = new_ledstate;
- }
- }
-#endif /* !PCVT_NO_LED_UPDATE */
-}
-
-/*---------------------------------------------------------------------------*
- * set typematic rate
- *---------------------------------------------------------------------------*/
-static void
-settpmrate(int rate)
-{
- if (kbd == NULL)
- return;
- tpmrate = rate & 0x7f;
- if ((*kbdsw[kbd->kb_index]->ioctl)(kbd, KDSETRAD, (caddr_t)&tpmrate))
- printf("pcvt: failed to set keyboard TYPEMATIC.\n");
-}
-
-#if PCVT_SCANSET > 1
-/*---------------------------------------------------------------------------*
- * switch PC scan code emulation mode
- *---------------------------------------------------------------------------*/
-void
-kbd_emulate_pc(int do_emulation)
-{
- set_controller_command_byte(*(KBDC *)kbd->kb_data, KBD_TRANSLATION,
- (do_emulation) ? KBD_TRANSLATION : 0);
-}
-#endif /* PCVT_SCANSET > 1 */
-
-/*---------------------------------------------------------------------------*
- * try to force keyboard into a known state ..
- *---------------------------------------------------------------------------*/
-static
-void doreset(void)
-{
- int type;
-
- if (!reset_keyboard) /* no, we are not ready to reset */
- return;
-
- if (lost_intr_timeout_queued)
- {
- untimeout(check_for_lost_intr, (void *)NULL, lost_intr_ch);
- lost_intr_timeout_queued = 0;
- }
-
- if (kbd == NULL)
- return; /* shouldn't happen */
-
- kbd_configure(0);
-
- ledstate = LEDSTATE_UPDATE_PENDING;
-
- set_controller_command_byte(*(KBDC *)kbd->kb_data,
- KBD_OVERRIDE_KBD_LOCK | KBD_TRANSLATION, KBDINITCMD);
-
- type = KB_101;
-
- (*kbdsw[kbd->kb_index]->ioctl)(kbd, KDGKBTYPE, (caddr_t)&type);
-
- switch (type)
- {
- case KB_84:
- keyboard_type = KB_AT;
- break;
- case KB_101:
- keyboard_type = KB_MFII;
- break;
- default:
- keyboard_type = KB_UNKNOWN;
- break;
- }
-
- update_led();
-
- lost_intr_ch = timeout(check_for_lost_intr, (void *)NULL, hz);
- lost_intr_timeout_queued = 1;
-}
-
-/*---------------------------------------------------------------------------*
- * init keyboard code
- *---------------------------------------------------------------------------*/
-void
-kbd_code_init(void)
-{
- doreset();
- ovlinit(0);
- keyboard_is_initialized = 1;
-}
-
-/*---------------------------------------------------------------------------*
- * init keyboard code, this initializes the keyboard subsystem
- * just "a bit" so the very very first ddb session is able to
- * get proper keystrokes - in other words, it's a hack ....
- *---------------------------------------------------------------------------*/
-void
-kbd_code_init1(void)
-{
- doreset();
- keyboard_is_initialized = 1;
-}
-
-/*---------------------------------------------------------------------------*
- * init keyboard overlay table
- *---------------------------------------------------------------------------*/
-static
-void ovlinit(int force)
-{
- register int i;
-
- if(force || ovlinitflag==0)
- {
- if(ovlinitflag == 0 &&
- (ovltbl = (Ovl_tbl *)malloc(sizeof(Ovl_tbl) * OVLTBL_SIZE,
- M_DEVBUF, M_WAITOK)) == NULL)
- panic("pcvt_kbd: malloc of Ovl_tbl failed");
-
- for(i=0; i<OVLTBL_SIZE; i++)
- {
- ovltbl[i].keynum =
- ovltbl[i].type = 0;
- ovltbl[i].unshift[0] =
- ovltbl[i].shift[0] =
- ovltbl[i].ctrl[0] =
- ovltbl[i].altgr[0] = 0;
- ovltbl[i].subu =
- ovltbl[i].subs =
- ovltbl[i].subc =
- ovltbl[i].suba = KBD_SUBT_STR; /* just strings .. */
- }
- for(i=0; i<=MAXKEYNUM; i++)
- key2ascii[i].type &= KBD_MASK;
- ovlinitflag = 1;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * get original key definition
- *---------------------------------------------------------------------------*/
-static int
-getokeydef(unsigned key, Ovl_tbl *thisdef)
-{
- if(key == 0 || key > MAXKEYNUM)
- return EINVAL;
-
- thisdef->keynum = key;
- thisdef->type = key2ascii[key].type;
-
- if(key2ascii[key].unshift.subtype == STR)
- {
- bcopy((u_char *)(key2ascii[key].unshift.what.string),
- thisdef->unshift, CODE_SIZE);
- thisdef->subu = KBD_SUBT_STR;
- }
- else
- {
- bcopy("", thisdef->unshift, CODE_SIZE);
- thisdef->subu = KBD_SUBT_FNC;
- }
-
- if(key2ascii[key].shift.subtype == STR)
- {
- bcopy((u_char *)(key2ascii[key].shift.what.string),
- thisdef->shift, CODE_SIZE);
- thisdef->subs = KBD_SUBT_STR;
- }
- else
- {
- bcopy("",thisdef->shift,CODE_SIZE);
- thisdef->subs = KBD_SUBT_FNC;
- }
-
- if(key2ascii[key].ctrl.subtype == STR)
- {
- bcopy((u_char *)(key2ascii[key].ctrl.what.string),
- thisdef->ctrl, CODE_SIZE);
- thisdef->subc = KBD_SUBT_STR;
- }
- else
- {
- bcopy("",thisdef->ctrl,CODE_SIZE);
- thisdef->subc = KBD_SUBT_FNC;
- }
-
- /* deliver at least anything for ALTGR settings ... */
-
- if(key2ascii[key].unshift.subtype == STR)
- {
- bcopy((u_char *)(key2ascii[key].unshift.what.string),
- thisdef->altgr, CODE_SIZE);
- thisdef->suba = KBD_SUBT_STR;
- }
- else
- {
- bcopy("",thisdef->altgr, CODE_SIZE);
- thisdef->suba = KBD_SUBT_FNC;
- }
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * get current key definition
- *---------------------------------------------------------------------------*/
-static int
-getckeydef(unsigned key, Ovl_tbl *thisdef)
-{
- u_short type = key2ascii[key].type;
-
- if(key>MAXKEYNUM)
- return EINVAL;
-
- if(type & KBD_OVERLOAD)
- *thisdef = ovltbl[key2ascii[key].ovlindex];
- else
- getokeydef(key,thisdef);
-
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * translate keynumber and returns ptr to associated ascii string
- * if key is bound to a function, executes it, and ret empty ptr
- *---------------------------------------------------------------------------*/
-static u_char *
-xlatkey2ascii(int key)
-{
- static u_char capchar[2] = {0, 0};
-#if PCVT_META_ESC
- static u_char metachar[3] = {0x1b, 0, 0};
-#else
- static u_char metachar[2] = {0, 0};
-#endif
- static Ovl_tbl thisdef;
- int n;
- void (*fnc)(void);
-
- if(key==0) /* ignore the NON-KEY */
- return 0;
-
- getckeydef(key&0x7F, &thisdef); /* get the current ASCII value */
-
- thisdef.type &= KBD_MASK;
-
- if(key&0x80) /* special handling of ALT-KEYPAD */
- {
- /* is the ALT Key released? */
- if(thisdef.type==KBD_META || thisdef.type==KBD_ALTGR)
- {
- if(altkpflag) /* have we been in altkp mode? */
- {
- capchar[0] = altkpval;
- altkpflag = 0;
- altkpval = 0;
- return capchar;
- }
- }
- return 0;
- }
-
- switch(thisdef.type) /* convert the keys */
- {
- case KBD_BREAK:
- case KBD_ASCII:
- case KBD_FUNC:
- fnc = NULL;
- more_chars = NULL;
-
- if(altgr_down)
- {
- more_chars = (u_char *)thisdef.altgr;
- }
- else if(!ctrl_down && (shift_down || vsp->shift_lock))
- {
- if(key2ascii[key].shift.subtype == STR)
- more_chars = (u_char *)thisdef.shift;
- else
- fnc = key2ascii[key].shift.what.func;
- }
-
- else if(ctrl_down)
- {
- if(key2ascii[key].ctrl.subtype == STR)
- more_chars = (u_char *)thisdef.ctrl;
- else
- fnc = key2ascii[key].ctrl.what.func;
- }
-
- else
- {
- if(key2ascii[key].unshift.subtype == STR)
- more_chars = (u_char *)thisdef.unshift;
- else
- fnc = key2ascii[key].unshift.what.func;
- }
-
- if(fnc)
- (*fnc)(); /* execute function */
-
- if((more_chars != NULL) && (more_chars[1] == 0))
- {
- if(vsp->caps_lock && more_chars[0] >= 'a'
- && more_chars[0] <= 'z')
- {
- capchar[0] = *more_chars - ('a'-'A');
- more_chars = capchar;
- }
- if(meta_down)
- {
-#if PCVT_META_ESC
- metachar[1] = *more_chars;
-#else
- metachar[0] = *more_chars | 0x80;
-#endif
- more_chars = metachar;
- }
- }
- return(more_chars);
-
- case KBD_KP:
- fnc = NULL;
- more_chars = NULL;
-
- if(meta_down)
- {
- switch(key)
- {
- case 95: /* / */
- altkpflag = 0;
- more_chars =
- (u_char *)"\033OQ";
- return(more_chars);
-
- case 100: /* * */
- altkpflag = 0;
- more_chars =
- (u_char *)"\033OR";
- return(more_chars);
-
- case 105: /* - */
- altkpflag = 0;
- more_chars =
- (u_char *)"\033OS";
- return(more_chars);
- }
- }
-
- if(meta_down || altgr_down)
- {
- if((n = keypad2num[key-91]) >= 0)
- {
- if(!altkpflag)
- {
- /* start ALT-KP mode */
- altkpflag = 1;
- altkpval = 0;
- }
- altkpval *= 10;
- altkpval += n;
- }
- else
- altkpflag = 0;
- return 0;
- }
-
- if(!(vsp->num_lock))
- {
- if(key2ascii[key].shift.subtype == STR)
- more_chars = (u_char *)thisdef.shift;
- else
- fnc = key2ascii[key].shift.what.func;
- }
- else
- {
- if(key2ascii[key].unshift.subtype == STR)
- more_chars = (u_char *)thisdef.unshift;
- else
- fnc = key2ascii[key].unshift.what.func;
- }
-
- if(fnc)
- (*fnc)(); /* execute function */
- return(more_chars);
-
- case KBD_CURSOR:
- fnc = NULL;
- more_chars = NULL;
-
- if(vsp->ckm)
- {
- if(key2ascii[key].shift.subtype == STR)
- more_chars = (u_char *)thisdef.shift;
- else
- fnc = key2ascii[key].shift.what.func;
- }
- else
- {
- if(key2ascii[key].unshift.subtype == STR)
- more_chars = (u_char *)thisdef.unshift;
- else
- fnc = key2ascii[key].unshift.what.func;
- }
-
- if(fnc)
- (*fnc)(); /* execute function */
- return(more_chars);
-
- case KBD_NUM: /* special kp-num handling */
- more_chars = NULL;
-
- if(meta_down)
- {
- more_chars = (u_char *)"\033OP"; /* PF1 */
- }
- else
- {
- vsp->num_lock ^= 1;
- update_led();
- }
- return(more_chars);
-
- case KBD_RETURN:
- more_chars = NULL;
-
- if(!(vsp->num_lock))
- {
- more_chars = (u_char *)thisdef.shift;
- }
- else
- {
- more_chars = (u_char *)thisdef.unshift;
- }
- if(vsp->lnm && (*more_chars == '\r'))
- {
- more_chars = (u_char *)"\r\n"; /* CR LF */
- }
- if(meta_down)
- {
-#if PCVT_META_ESC
- metachar[1] = *more_chars;
-#else
- metachar[0] = *more_chars | 0x80;
-#endif
- more_chars = metachar;
- }
- return(more_chars);
-
- case KBD_META: /* these keys are */
- case KBD_ALTGR: /* handled directly */
- case KBD_SCROLL: /* by the keyboard */
- case KBD_CAPS: /* handler - they are */
- case KBD_SHFTLOCK: /* ignored here */
- case KBD_CTL:
- case KBD_NONE:
- default:
- return 0;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * get keystrokes from the keyboard.
- * if noblock = 0, wait until a key is pressed.
- * else return NULL if no characters present.
- *---------------------------------------------------------------------------*/
-u_char *
-sgetc(int noblock)
-{
- u_char *cp;
- u_char dt = 0;
- u_char key = 0;
- u_short type;
- int c;
-
-#if PCVT_SLOW_INTERRUPT
- int s;
-#endif
-
-#ifdef XSERVER
- static char keybuf[2] = {0}; /* the second 0 is a delimiter! */
-#endif /* XSERVER */
-
- static u_char kbd_lastkey = 0; /* last keystroke */
-
- static struct
- {
- u_char extended: 1; /* extended prefix seen */
- u_char ext1: 1; /* extended prefix 1 seen */
- u_char breakseen: 1; /* break code seen */
- u_char vshift: 1; /* virtual shift pending */
- u_char vcontrol: 1; /* virtual control pending */
- u_char sysrq: 1; /* sysrq pressed */
- } kbd_status = {0};
-
-loop:
-
- if(noblock == SCROLLBACK_COOKIE)
- {
- vsp->scrolling = 1;
- goto scroll_reset;
- }
-
-#ifdef XSERVER
-
- if (pcvt_kbd_count)
- {
- dt = pcvt_kbd_fifo[pcvt_kbd_rptr++];
- PCVT_DISABLE_INTR();
- pcvt_kbd_count--;
- PCVT_ENABLE_INTR();
- if (pcvt_kbd_rptr >= PCVT_KBD_FIFO_SZ)
- pcvt_kbd_rptr = 0;
- }
- else if (!noblock)
- {
- while ((c = (*kbdsw[kbd->kb_index]->read)(kbd, TRUE)) == -1)
- ;
- dt = c;
- }
- else
- {
- if ((c = (*kbdsw[kbd->kb_index]->read)(kbd, FALSE)) == -1)
- return NULL;
- dt = c;
- }
-
- /*
- * If x mode is active, only care for locking keys, then
- * return the scan code instead of any key translation.
- * Additionally, this prevents us from any attempts to
- * execute pcvt internal functions caused by keys (such
- * as screen flipping).
- */
- if (pcvt_kbd_raw)
- {
- keybuf[0] = dt;
-
- random_harvest(keybuf, sizeof(keybuf), 1, 0, RANDOM_KEYBOARD);
-
- return ((u_char *)keybuf);
- }
-
-#else /* !XSERVER */
-
- if (pcvt_kbd_count)
- {
- dt = pcvt_kbd_fifo[pcvt_kbd_rptr++];
- PCVT_DISABLE_INTR();
- pcvt_kbd_count--;
- PCVT_ENABLE_INTR();
- if (pcvt_kbd_rptr >= PCVT_KBD_FIFO_SZ)
- pcvt_kbd_rptr = 0;
- }
- else if (!noblock)
- {
- while ((c = (*kbdsw[kbd->kb_index]->read)(kbd, TRUE)) == -1)
- ;
- dt = c;
- }
- else
- {
- if ((c = (*kbdsw[kbd->kb_index]->read)(kbd, FALSE)) == -1)
- return NULL;
- dt = c;
- }
-#endif /* !XSERVER */
-
-#if PCVT_SHOWKEYS
- showkey (' ', dt);
-#endif /* PCVT_SHOWKEYS */
-
- /* lets look what we got */
- switch(dt)
- {
- case KEYB_R_OVERRUN0: /* keyboard buffer overflow */
-
-#if PCVT_SCANSET == 2
- case KEYB_R_SELFOK: /* keyboard selftest ok */
-#endif /* PCVT_SCANSET == 2 */
-
- case KEYB_R_ECHO: /* keyboard response to KEYB_C_ECHO */
- case KEYB_R_ACK: /* acknowledge after command has rx'd*/
- case KEYB_R_SELFBAD: /* keyboard selftest FAILED */
- case KEYB_R_DIAGBAD: /* keyboard self diagnostic failure */
- case KEYB_R_RESEND: /* keyboard wants us to resend cmnd */
- case KEYB_R_OVERRUN1: /* keyboard buffer overflow */
- break;
-
- case KEYB_R_EXT1: /* keyboard extended scancode pfx 2 */
- kbd_status.ext1 = 1;
- /* FALLTHROUGH */
- case KEYB_R_EXT0: /* keyboard extended scancode pfx 1 */
- kbd_status.extended = 1;
- break;
-
-#if PCVT_SCANSET == 2
- case KEYB_R_BREAKPFX: /* break code prefix for set 2 and 3 */
- kbd_status.breakseen = 1;
- break;
-#endif /* PCVT_SCANSET == 2 */
-
- default:
- goto regular; /* regular key */
- }
-
- if(noblock)
- return NULL;
- else
- goto loop;
-
- /* got a normal scan key */
-regular:
-
- random_harvest(&dt, sizeof(dt), 1, 0, RANDOM_KEYBOARD);
-
-#if PCVT_SCANSET == 1
- kbd_status.breakseen = dt & 0x80 ? 1 : 0;
- dt &= 0x7f;
-#endif /* PCVT_SCANSET == 1 */
-
- /* make a keycode from scan code */
- if(dt >= sizeof scantokey / sizeof(u_char))
- key = 0;
- else
- key = kbd_status.extended ? extscantokey[dt] : scantokey[dt];
-
- if(kbd_status.ext1 && key == 64)
- /* virtual control key */
- key = 129;
-
- kbd_status.extended = kbd_status.ext1 = 0;
-
- if ((key == 85) && shift_down && kbd_lastkey != 85)
- {
- if (vsp->scr_offset > (vsp->screen_rows - 1))
- {
- if (!vsp->scrolling)
- {
- vsp->scrolling += vsp->screen_rows - 2;
- if (vsp->Scrollback)
- {
- scrollback_save_screen();
- if (vsp->scr_offset == vsp->max_off)
- {
- bcopy(vsp->Scrollback +
- vsp->maxcol,
- vsp->Scrollback,
- vsp->maxcol *
- vsp->max_off * CHR);
- vsp->scr_offset--;
- }
- bcopy(vsp->Crtat + vsp->cur_offset -
- vsp->col, vsp->Scrollback +
- ((vsp->scr_offset + 1) *
- vsp->maxcol), vsp->maxcol * CHR);
- }
-
- if (vsp->cursor_on)
- sw_cursor(0);
- }
-
- vsp->scrolling += vsp->screen_rows - 1;
-
- if (vsp->scrolling > vsp->scr_offset)
- vsp->scrolling = vsp->scr_offset;
-
- bcopy(vsp->Scrollback + ((vsp->scr_offset -
- vsp->scrolling) * vsp->maxcol), vsp->Crtat,
- vsp->screen_rows * vsp->maxcol * CHR);
- }
-
- kbd_lastkey = 85;
- goto loop;
- }
- else if ((key == 86) && shift_down && kbd_lastkey != 86)
- {
-
-scroll_reset:
- if (vsp->scrolling > 0)
- {
- vsp->scrolling -= vsp->screen_rows - 1;
- if (vsp->scrolling < 0)
- vsp->scrolling = 0;
-
- if (vsp->scrolling <= vsp->screen_rows)
- {
- vsp->scrolling = 0;
- scrollback_restore_screen();
- }
- else
- {
- bcopy(vsp->Scrollback + ((vsp->scr_offset -
- vsp->scrolling) * vsp->maxcol),
- vsp->Crtat, vsp->screen_rows *
- vsp->maxcol * CHR);
- }
- }
-
- if (vsp->scrolling == 0)
- {
- if (vsp->cursor_on)
- {
- sw_cursor(1);
- }
- }
-
- if (noblock == SCROLLBACK_COOKIE)
- return NULL;
-
- if (key != 86)
- {
- goto regular;
- }
- else
- {
- kbd_lastkey = 86;
- goto loop;
- }
- }
- else if (vsp->scrolling && key != 128 && key != 44 && key != 85 &&
- key != 86)
- {
- vsp->scrolling = 1;
- goto scroll_reset;
- }
-
-#if PCVT_CTRL_ALT_DEL /* Check for cntl-alt-del */
- if((key == 76) && ctrl_down && (meta_down||altgr_down))
- shutdown_nice(0);
-#endif /* PCVT_CTRL_ALT_DEL */
-
-#if defined(KDB) /* Check for cntl-alt-esc */
-
- if((key == 110) && ctrl_down && (meta_down || altgr_down))
- {
- if (!kdb_active)
- {
- kdb_enter("kbd");
- if(noblock)
- return NULL;
- else
- goto loop;
- }
- }
-#endif /* defined(KDB) */
-
- /* look for keys with special handling */
- if(key == 128)
- {
- /*
- * virtual shift; sent around PrtScr, and around the arrow
- * keys if the NumLck LED is on
- */
- kbd_status.vshift = !kbd_status.breakseen;
- key = 0; /* no key */
- }
- else if(key == 129)
- {
- /*
- * virtual control - the most ugly thingie at all
- * the Pause key sends:
- * <virtual control make> <numlock make> <virtual control
- * break> <numlock break>
- */
- if(!kbd_status.breakseen)
- kbd_status.vcontrol = 1;
- /* else: let the numlock hook clear this */
- key = 0; /* no key */
- }
- else if(key == 90)
- {
- /* NumLock, look whether this is rather a Pause */
- if(kbd_status.vcontrol)
- key = 126;
- /*
- * if this is the final break code of a Pause key,
- * clear the virtual control status, too
- */
- if(kbd_status.vcontrol && kbd_status.breakseen)
- kbd_status.vcontrol = 0;
- }
- else if(key == 127)
- {
- /*
- * a SysRq; some keyboards are brain-dead enough to
- * repeat the SysRq key make code by sending PrtScr
- * make codes; other keyboards do not repeat SysRq
- * at all. We keep track of the SysRq state here.
- */
- kbd_status.sysrq = !kbd_status.breakseen;
- }
- else if(key == 124)
- {
- /*
- * PrtScr; look whether this is really PrtScr or rather
- * a silly repeat of a SysRq key
- */
- if(kbd_status.sysrq)
- /* ignore the garbage */
- key = 0;
- }
-
- /* in NOREPEAT MODE ignore the key if it was the same as before */
-
- if(!kbrepflag && key == kbd_lastkey && !kbd_status.breakseen)
- {
- if(noblock)
- return NULL;
- else
- goto loop;
- }
-
- type = key2ascii[key].type;
-
- if(type & KBD_OVERLOAD)
- type = ovltbl[key2ascii[key].ovlindex].type;
-
- type &= KBD_MASK;
-
- switch(type)
- {
- case KBD_SHFTLOCK:
- if(!kbd_status.breakseen && key != kbd_lastkey)
- {
- vsp->shift_lock ^= 1;
- }
- break;
-
- case KBD_CAPS:
- if(!kbd_status.breakseen && key != kbd_lastkey)
- {
- vsp->caps_lock ^= 1;
- update_led();
- }
- break;
-
- case KBD_SCROLL:
- if(!kbd_status.breakseen && key != kbd_lastkey)
- {
- vsp->scroll_lock ^= 1;
- update_led();
-
- if(!(vsp->scroll_lock))
- {
- /* someone may be sleeping */
- wakeup(&(vsp->scroll_lock));
- }
- }
- break;
-
- case KBD_SHIFT:
- shift_down = kbd_status.breakseen ? 0 : 1;
- break;
-
- case KBD_META:
- meta_down = kbd_status.breakseen ? 0 : 0x80;
- break;
-
- case KBD_ALTGR:
- altgr_down = kbd_status.breakseen ? 0 : 1;
- break;
-
- case KBD_CTL:
- ctrl_down = kbd_status.breakseen ? 0 : 1;
- break;
-
- case KBD_NONE:
- default:
- break; /* deliver a key */
- }
-
- if(kbd_status.breakseen)
- {
- key |= 0x80;
- kbd_status.breakseen = 0;
- kbd_lastkey = 0; /* -hv- I know this is a bug with */
- } /* N-Key-Rollover, but I ignore that */
- else /* because avoidance is too complicated */
- kbd_lastkey = key;
-
- cp = xlatkey2ascii(key); /* have a key */
-
- if(cp == NULL && !noblock)
- goto loop;
-
- return cp;
-}
-
-/*---------------------------------------------------------------------------*
- * reflect status of locking keys & set led's
- *---------------------------------------------------------------------------*/
-static void
-setlockkeys(int snc)
-{
- vsp->scroll_lock = snc & 1;
- vsp->num_lock = (snc & 2) ? 1 : 0;
- vsp->caps_lock = (snc & 4) ? 1 : 0;
- update_led();
-}
-
-/*---------------------------------------------------------------------------*
- * remove a key definition
- *---------------------------------------------------------------------------*/
-static int
-rmkeydef(int key)
-{
- register Ovl_tbl *ref;
-
- if(key==0 || key > MAXKEYNUM)
- return EINVAL;
-
- if(key2ascii[key].type & KBD_OVERLOAD)
- {
- ref = &ovltbl[key2ascii[key].ovlindex];
- ref->keynum = 0;
- ref->type = 0;
- ref->unshift[0] =
- ref->shift[0] =
- ref->ctrl[0] =
- ref->altgr[0] = 0;
- key2ascii[key].type &= KBD_MASK;
- }
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * overlay a key
- *---------------------------------------------------------------------------*/
-static int
-setkeydef(Ovl_tbl *data)
-{
- register int i;
-
- if( data->keynum > MAXKEYNUM ||
- (data->type & KBD_MASK) == KBD_BREAK ||
- (data->type & KBD_MASK) > KBD_SHFTLOCK)
- return EINVAL;
-
- data->unshift[KBDMAXOVLKEYSIZE] =
- data->shift[KBDMAXOVLKEYSIZE] =
- data->ctrl[KBDMAXOVLKEYSIZE] =
- data->altgr[KBDMAXOVLKEYSIZE] = 0;
-
- data->subu =
- data->subs =
- data->subc =
- data->suba = KBD_SUBT_STR; /* just strings .. */
-
- data->type |= KBD_OVERLOAD; /* mark overloaded */
-
- /* if key already overloaded, use that slot else find free slot */
-
- if(key2ascii[data->keynum].type & KBD_OVERLOAD)
- {
- i = key2ascii[data->keynum].ovlindex;
- }
- else
- {
- for(i=0; i<OVLTBL_SIZE; i++)
- if(ovltbl[i].keynum==0)
- break;
-
- if(i==OVLTBL_SIZE)
- return ENOSPC; /* no space, abuse of ENOSPC(!) */
- }
-
- ovltbl[i] = *data; /* copy new data string */
-
- key2ascii[data->keynum].type |= KBD_OVERLOAD; /* mark key */
- key2ascii[data->keynum].ovlindex = i;
-
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * keyboard ioctl's entry
- *---------------------------------------------------------------------------*/
-int
-kbdioctl(struct cdev *dev, int cmd, caddr_t data, int flag)
-{
- int key;
-
- switch(cmd)
- {
- case KBDRESET:
- doreset();
- ovlinit(1);
- settpmrate(KBD_TPD500|KBD_TPM100);
- setlockkeys(0);
- break;
-
- case KBDGTPMAT:
- *(int *)data = tpmrate;
- break;
-
- case KBDSTPMAT:
- settpmrate(*(int *)data);
- break;
-
- case KBDGREPSW:
- *(int *)data = kbrepflag;
- break;
-
- case KBDSREPSW:
- kbrepflag = (*(int *)data) & 1;
- break;
-
- case KBDGLEDS:
- *(int *)data = ledstate;
- break;
-
- case KBDSLEDS:
- update_led(); /* ? */
- break;
-
- case KBDGLOCK:
- *(int *)data = ( (vsp->scroll_lock) |
- (vsp->num_lock * 2) |
- (vsp->caps_lock * 4));
- break;
-
- case KBDSLOCK:
- setlockkeys(*(int *)data);
- break;
-
- case KBDGCKEY:
- key = ((Ovl_tbl *)data)->keynum;
- return getckeydef(key,(Ovl_tbl *)data);
-
- case KBDSCKEY:
- key = ((Ovl_tbl *)data)->keynum;
- return setkeydef((Ovl_tbl *)data);
-
- case KBDGOKEY:
- key = ((Ovl_tbl *)data)->keynum;
- return getokeydef(key,(Ovl_tbl *)data);
-
- case KBDRMKEY:
- key = *(int *)data;
- return rmkeydef(key);
-
- case KBDDEFAULT:
- ovlinit(1);
- break;
-
- default:
- /* proceed with vga ioctls */
- return -1;
- }
- return 0;
-}
-
-#ifdef XSERVER
-/*---------------------------------------------------------------------------*
- * convert ISO-8859 style keycode into IBM 437
- *---------------------------------------------------------------------------*/
-static __inline u_char
-iso2ibm(u_char c)
-{
- if(c < 0x80)
- return c;
- return iso2ibm437[c - 0x80];
-}
-
-/*---------------------------------------------------------------------------*
- * build up a USL style keyboard map
- *---------------------------------------------------------------------------*/
-void
-get_usl_keymap(keymap_t *map)
-{
- int i;
-
- bzero((caddr_t)map, sizeof(keymap_t));
-
- map->n_keys = 0x59; /* that many keys we know about */
-
- for(i = 1; i < N_KEYNUMS; i++)
- {
- Ovl_tbl kdef;
- u_char c;
- int j;
- int idx = key2scan1[i];
-
- if(idx == 0 || idx >= map->n_keys)
- continue;
-
- getckeydef(i, &kdef);
- kdef.type &= KBD_MASK;
- switch(kdef.type)
- {
- case KBD_ASCII:
- case KBD_RETURN:
- map->key[idx].map[0] = iso2ibm(kdef.unshift[0]);
- map->key[idx].map[1] = iso2ibm(kdef.shift[0]);
- map->key[idx].map[2] = map->key[idx].map[3] =
- iso2ibm(kdef.ctrl[0]);
- map->key[idx].map[4] = map->key[idx].map[5] =
- iso2ibm(c = kdef.altgr[0]);
- /*
- * XXX this is a hack
- * since we currently do not map strings to AltGr +
- * shift, we attempt to use the unshifted AltGr
- * definition here and try to toggle the case
- * this should at least work for ISO8859 letters,
- * but also for (e.g.) russian KOI-8 style
- */
- if((c & 0x7f) >= 0x40)
- map->key[idx].map[5] = iso2ibm(c ^ 0x20);
- break;
-
- case KBD_FUNC:
- /* we are only interested in F1 thru F12 here */
- if(i >= 112 && i <= 123) {
- map->key[idx].map[0] = i - 112 + 27;
- map->key[idx].spcl = 0x80;
- }
- break;
-
- case KBD_SHIFT:
- c = i == 44? 2 /* lSh */: 3 /* rSh */; goto special;
-
- case KBD_CAPS:
- c = 4; goto special;
-
- case KBD_NUM:
- c = 5; goto special;
-
- case KBD_SCROLL:
- c = 6; goto special;
-
- case KBD_META:
- c = 7; goto special;
-
- case KBD_CTL:
- c = 9; goto special;
- special:
- for(j = 0; j < NUM_STATES; j++)
- map->key[idx].map[j] = c;
- map->key[idx].spcl = 0xff;
- break;
-
- default:
- break;
- }
- }
-}
-#endif /* XSERVER */
-
-/*---------------------------------------------------------------------------*
- * switch keypad to numeric mode
- *---------------------------------------------------------------------------*/
-void
-vt_keynum(struct video_state *svsp)
-{
- svsp->num_lock = 1;
- update_led();
-}
-
-/*---------------------------------------------------------------------------*
- * switch keypad to application mode
- *---------------------------------------------------------------------------*/
-void
-vt_keyappl(struct video_state *svsp)
-{
- svsp->num_lock = 0;
- update_led();
-}
-
-#if !PCVT_VT220KEYB /* !PCVT_VT220KEYB, HP-like Keyboard layout */
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 1
- *---------------------------------------------------------------------------*/
-static void
-fkey1(void)
-{
- if(!meta_down)
- {
- if((vsp->vt_pure_mode == M_HPVT)
- && (vsp->which_fkl == SYS_FKL))
- toggl_columns(vsp);
- else
- more_chars = (u_char *)"\033[17~"; /* F6 */
- }
- else
- {
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[26~"; /* F14 */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 2
- *---------------------------------------------------------------------------*/
-static void
-fkey2(void)
-{
- if(!meta_down)
- {
- if((vsp->vt_pure_mode == M_HPVT)
- && (vsp->which_fkl == SYS_FKL))
- vt_ris(vsp);
- else
- more_chars = (u_char *)"\033[18~"; /* F7 */
- }
- else
- {
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[28~"; /* HELP */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 3
- *---------------------------------------------------------------------------*/
-static void
-fkey3(void)
-{
- if(!meta_down)
- {
- if((vsp->vt_pure_mode == M_HPVT)
- && (vsp->which_fkl == SYS_FKL))
- toggl_24l(vsp);
- else
- more_chars = (u_char *)"\033[19~"; /* F8 */
- }
- else
- {
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[29~"; /* DO */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 4
- *---------------------------------------------------------------------------*/
-static void
-fkey4(void)
-{
- if(!meta_down)
- {
-
-#if PCVT_SHOWKEYS
- if((vsp->vt_pure_mode == M_HPVT)
- && (vsp->which_fkl == SYS_FKL))
- toggl_kbddbg(vsp);
- else
- more_chars = (u_char *)"\033[20~"; /* F9 */
-#else
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[20~"; /* F9 */
-#endif /* PCVT_SHOWKEYS */
-
- }
- else
- {
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[31~"; /* F17 */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 5
- *---------------------------------------------------------------------------*/
-static void
-fkey5(void)
-{
- if(!meta_down)
- {
- if((vsp->vt_pure_mode == M_HPVT)
- && (vsp->which_fkl == SYS_FKL))
- toggl_bell(vsp);
- else
- more_chars = (u_char *)"\033[21~"; /* F10 */
- }
- else
- {
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[32~"; /* F18 */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 6
- *---------------------------------------------------------------------------*/
-static void
-fkey6(void)
-{
- if(!meta_down)
- {
- if((vsp->vt_pure_mode == M_HPVT)
- && (vsp->which_fkl == SYS_FKL))
- toggl_sevenbit(vsp);
- else
- more_chars = (u_char *)"\033[23~"; /* F11 */
- }
- else
- {
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[33~"; /* F19 */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 7
- *---------------------------------------------------------------------------*/
-static void
-fkey7(void)
-{
- if(!meta_down)
- {
- if((vsp->vt_pure_mode == M_HPVT)
- && (vsp->which_fkl == SYS_FKL))
- toggl_dspf(vsp);
- else
- more_chars = (u_char *)"\033[24~"; /* F12 */
- }
- else
- {
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[34~"; /* F20 */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 8
- *---------------------------------------------------------------------------*/
-static void
-fkey8(void)
-{
- if(!meta_down)
- {
- if((vsp->vt_pure_mode == M_HPVT)
- && (vsp->which_fkl == SYS_FKL))
- toggl_awm(vsp);
- else
- more_chars = (u_char *)"\033[25~"; /* F13 */
- }
- else
- {
- if(vsp->vt_pure_mode == M_PUREVT
- || (vsp->which_fkl == USR_FKL))
- more_chars = (u_char *)"\033[35~"; /* F21 ? !! */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 9
- *---------------------------------------------------------------------------*/
-static void
-fkey9(void)
-{
- if(meta_down)
- {
- if(vsp->vt_pure_mode == M_PUREVT)
- return;
-
- if(vsp->labels_on) /* toggle label display on/off */
- fkl_off(vsp);
- else
- fkl_on(vsp);
- }
- else
- {
- do_vgapage(0);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 10
- *---------------------------------------------------------------------------*/
-static void
-fkey10(void)
-{
- if(meta_down)
- {
- if(vsp->vt_pure_mode != M_PUREVT && vsp->labels_on)
- {
- if(vsp->which_fkl == USR_FKL)
- sw_sfkl(vsp);
- else if(vsp->which_fkl == SYS_FKL)
- sw_ufkl(vsp);
- }
- }
- else
- {
- do_vgapage(1);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 11
- *---------------------------------------------------------------------------*/
-static void
-fkey11(void)
-{
- if(meta_down)
- {
- if(vsp->vt_pure_mode == M_PUREVT)
- set_emulation_mode(vsp, M_HPVT);
- else if(vsp->vt_pure_mode == M_HPVT)
- set_emulation_mode(vsp, M_PUREVT);
- }
- else
- {
- do_vgapage(2);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 12
- *---------------------------------------------------------------------------*/
-static void
-fkey12(void)
-{
- if(meta_down)
- {
- if(current_video_screen + 1 > totalscreens-1)
- do_vgapage(0);
- else
- do_vgapage(current_video_screen + 1);
- }
- else
- {
- do_vgapage(3);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 1
- *---------------------------------------------------------------------------*/
-static void
-sfkey1(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[0]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[0]]);
- }
- else
- {
- if(vsp->ukt.length[9]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[9]]);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 2
- *---------------------------------------------------------------------------*/
-static void
-sfkey2(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[1]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[1]]);
- }
- else
- {
- if(vsp->ukt.length[11]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[11]]);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 3
- *---------------------------------------------------------------------------*/
-static void
-sfkey3(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[2]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[2]]);
- }
- else
- {
- if(vsp->ukt.length[12]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[12]]);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 4
- *---------------------------------------------------------------------------*/
-static void
-sfkey4(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[3]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[3]]);
- }
- else
- {
- if(vsp->ukt.length[13]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[13]]);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 5
- *---------------------------------------------------------------------------*/
-static void
-sfkey5(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[4]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[4]]);
- }
- else
- {
- if(vsp->ukt.length[14]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[14]]);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 6
- *---------------------------------------------------------------------------*/
-static void
-sfkey6(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[6]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[6]]);
- }
- else
- {
- if(vsp->ukt.length[15]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[15]]);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 7
- *---------------------------------------------------------------------------*/
-static void
-sfkey7(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[7]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[7]]);
- }
- else
- {
- if(vsp->ukt.length[16]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[16]]);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 8
- *---------------------------------------------------------------------------*/
-static void
-sfkey8(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[8]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[8]]);
- }
- else
- {
- if(vsp->ukt.length[17]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[17]]);
- }
-}
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 9
- *---------------------------------------------------------------------------*/
-static void
-sfkey9(void)
-{
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 10
- *---------------------------------------------------------------------------*/
-static void
-sfkey10(void)
-{
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 11
- *---------------------------------------------------------------------------*/
-static void
-sfkey11(void)
-{
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 12
- *---------------------------------------------------------------------------*/
-static void
-sfkey12(void)
-{
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 1
- *---------------------------------------------------------------------------*/
-static void
-cfkey1(void)
-{
- if(meta_down)
- do_vgapage(0);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 2
- *---------------------------------------------------------------------------*/
-static void
-cfkey2(void)
-{
- if(meta_down)
- do_vgapage(1);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 3
- *---------------------------------------------------------------------------*/
-static void
-cfkey3(void)
-{
- if(meta_down)
- do_vgapage(2);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 4
- *---------------------------------------------------------------------------*/
-static void
-cfkey4(void)
-{
- if(meta_down)
- do_vgapage(3);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 5
- *---------------------------------------------------------------------------*/
-static void
-cfkey5(void)
-{
- if(meta_down)
- do_vgapage(4);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 6
- *---------------------------------------------------------------------------*/
-static void
-cfkey6(void)
-{
- if(meta_down)
- do_vgapage(5);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 7
- *---------------------------------------------------------------------------*/
-static void
-cfkey7(void)
-{
- if(meta_down)
- do_vgapage(6);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 8
- *---------------------------------------------------------------------------*/
-static void
-cfkey8(void)
-{
- if(meta_down)
- do_vgapage(7);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 9
- *---------------------------------------------------------------------------*/
-static void
-cfkey9(void)
-{
- if(meta_down)
- do_vgapage(8);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 10
- *---------------------------------------------------------------------------*/
-static void
-cfkey10(void)
-{
- if(meta_down)
- do_vgapage(9);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 11
- *---------------------------------------------------------------------------*/
-static void
-cfkey11(void)
-{
- if(meta_down)
- do_vgapage(10);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 12
- *---------------------------------------------------------------------------*/
-static void
-cfkey12(void)
-{
- if(meta_down)
- do_vgapage(11);
-}
-
-#else /* PCVT_VT220 - VT220-like Keyboard layout */
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 1
- *---------------------------------------------------------------------------*/
-static void
-fkey1(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[23~"; /* F11 */
- else
- do_vgapage(0);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 2
- *---------------------------------------------------------------------------*/
-static void
-fkey2(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[24~"; /* F12 */
- else
- do_vgapage(1);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 3
- *---------------------------------------------------------------------------*/
-static void
-fkey3(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[25~"; /* F13 */
- else
- do_vgapage(2);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 4
- *---------------------------------------------------------------------------*/
-static void
-fkey4(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[26~"; /* F14 */
- else
- do_vgapage(3);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 5
- *---------------------------------------------------------------------------*/
-static void
-fkey5(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[28~"; /* Help */
- else
- {
- if((current_video_screen + 1) > totalscreens-1)
- do_vgapage(0);
- else
- do_vgapage(current_video_screen + 1);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 6
- *---------------------------------------------------------------------------*/
-static void
-fkey6(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[29~"; /* DO */
- else
- more_chars = (u_char *)"\033[17~"; /* F6 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 7
- *---------------------------------------------------------------------------*/
-static void
-fkey7(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[31~"; /* F17 */
- else
- more_chars = (u_char *)"\033[18~"; /* F7 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 8
- *---------------------------------------------------------------------------*/
-static void
-fkey8(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[32~"; /* F18 */
- else
- more_chars = (u_char *)"\033[19~"; /* F8 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 9
- *---------------------------------------------------------------------------*/
-static void
-fkey9(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[33~"; /* F19 */
- else
- more_chars = (u_char *)"\033[20~"; /* F9 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 10
- *---------------------------------------------------------------------------*/
-static void
-fkey10(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\033[34~"; /* F20 */
- else
- more_chars = (u_char *)"\033[21~"; /* F10 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 11
- *---------------------------------------------------------------------------*/
-static void
-fkey11(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\0x8FP"; /* PF1 */
- else
- more_chars = (u_char *)"\033[23~"; /* F11 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to function key 12
- *---------------------------------------------------------------------------*/
-static void
-fkey12(void)
-{
- if(meta_down)
- more_chars = (u_char *)"\0x8FQ"; /* PF2 */
- else
- more_chars = (u_char *)"\033[24~"; /* F12 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 1
- *---------------------------------------------------------------------------*/
-static void
-sfkey1(void)
-{
- if(meta_down)
- {
- if(vsp->ukt.length[6]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[6]]);
- else
- more_chars = (u_char *)"\033[23~"; /* F11 */
- }
- else
- {
- do_vgapage(4);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 2
- *---------------------------------------------------------------------------*/
-static void
-sfkey2(void)
-{
- if(meta_down)
- {
- if(vsp->ukt.length[7]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[7]]);
- else
- more_chars = (u_char *)"\033[24~"; /* F12 */
- }
- else
- {
- do_vgapage(5);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 3
- *---------------------------------------------------------------------------*/
-static void
-sfkey3(void)
-{
- if(meta_down)
- {
- if(vsp->ukt.length[8]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[8]]);
- else
- more_chars = (u_char *)"\033[25~"; /* F13 */
- }
- else
- {
- do_vgapage(6);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 4
- *---------------------------------------------------------------------------*/
-static void
-sfkey4(void)
-{
- if(meta_down)
- {
- if(vsp->ukt.length[9]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[9]]);
- else
- more_chars = (u_char *)"\033[26~"; /* F14 */
- }
- else
- {
- do_vgapage(7);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 5
- *---------------------------------------------------------------------------*/
-static void
-sfkey5(void)
-{
- if(meta_down)
- {
- if(vsp->ukt.length[11]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[11]]);
- else
- more_chars = (u_char *)"\033[28~"; /* Help */
- }
- else
- {
- if(current_video_screen <= 0)
- do_vgapage(totalscreens-1);
- else
- do_vgapage(current_video_screen - 1);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 6
- *---------------------------------------------------------------------------*/
-static void
-sfkey6(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[0]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[0]]);
- else
- more_chars = (u_char *)"\033[17~"; /* F6 */
- }
- else if(vsp->ukt.length[12]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[12]]);
- else
- more_chars = (u_char *)"\033[29~"; /* DO */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 7
- *---------------------------------------------------------------------------*/
-static void
-sfkey7(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[1]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[1]]);
- else
- more_chars = (u_char *)"\033[18~"; /* F7 */
- }
- else if(vsp->ukt.length[14]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[14]]);
- else
- more_chars = (u_char *)"\033[31~"; /* F17 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 8
- *---------------------------------------------------------------------------*/
-static void
-sfkey8(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[2]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[2]]);
- else
- more_chars = (u_char *)"\033[19~"; /* F8 */
- }
- else if(vsp->ukt.length[14]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[15]]);
- else
- more_chars = (u_char *)"\033[32~"; /* F18 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 9
- *---------------------------------------------------------------------------*/
-static void
-sfkey9(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[3]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[3]]);
- else
- more_chars = (u_char *)"\033[20~"; /* F9 */
- }
- else if(vsp->ukt.length[16]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[16]]);
- else
- more_chars = (u_char *)"\033[33~"; /* F19 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 10
- *---------------------------------------------------------------------------*/
-static void
-sfkey10(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[4]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[4]]);
- else
- more_chars = (u_char *)"\033[21~"; /* F10 */
- }
- else if(vsp->ukt.length[17]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[17]]);
- else
- more_chars = (u_char *)"\033[34~"; /* F20 */
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 11
- *---------------------------------------------------------------------------*/
-static void
-sfkey11(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[6]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[6]]);
- else
- more_chars = (u_char *)"\033[23~"; /* F11 */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to SHIFTED function key 12
- *---------------------------------------------------------------------------*/
-static void
-sfkey12(void)
-{
- if(!meta_down)
- {
- if(vsp->ukt.length[7]) /* entry available ? */
- more_chars = (u_char *)
- &(vsp->udkbuf[vsp->ukt.first[7]]);
- else
- more_chars = (u_char *)"\033[24~"; /* F12 */
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 1
- *---------------------------------------------------------------------------*/
-static void
-cfkey1(void)
-{
- if(vsp->which_fkl == SYS_FKL)
- toggl_columns(vsp);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 2
- *---------------------------------------------------------------------------*/
-static void
-cfkey2(void)
-{
- if(vsp->which_fkl == SYS_FKL)
- vt_ris(vsp);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 3
- *---------------------------------------------------------------------------*/
-static void
-cfkey3(void)
-{
- if(vsp->which_fkl == SYS_FKL)
- toggl_24l(vsp);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 4
- *---------------------------------------------------------------------------*/
-static void
-cfkey4(void)
-{
-
-#if PCVT_SHOWKEYS
- if(vsp->which_fkl == SYS_FKL)
- toggl_kbddbg(vsp);
-#endif /* PCVT_SHOWKEYS */
-
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 5
- *---------------------------------------------------------------------------*/
-static void
-cfkey5(void)
-{
- if(vsp->which_fkl == SYS_FKL)
- toggl_bell(vsp);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 6
- *---------------------------------------------------------------------------*/
-static void
-cfkey6(void)
-{
- if(vsp->which_fkl == SYS_FKL)
- toggl_sevenbit(vsp);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 7
- *---------------------------------------------------------------------------*/
-static void
-cfkey7(void)
-{
- if(vsp->which_fkl == SYS_FKL)
- toggl_dspf(vsp);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 8
- *---------------------------------------------------------------------------*/
-static void
-cfkey8(void)
-{
- if(vsp->which_fkl == SYS_FKL)
- toggl_awm(vsp);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 9
- *---------------------------------------------------------------------------*/
-static void
-cfkey9(void)
-{
- if(vsp->labels_on) /* toggle label display on/off */
- fkl_off(vsp);
- else
- fkl_on(vsp);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 10
- *---------------------------------------------------------------------------*/
-static void
-cfkey10(void)
-{
- if(vsp->labels_on) /* toggle user/system fkey labels */
- {
- if(vsp->which_fkl == USR_FKL)
- sw_sfkl(vsp);
- else if(vsp->which_fkl == SYS_FKL)
- sw_ufkl(vsp);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 11
- *---------------------------------------------------------------------------*/
-static void
-cfkey11(void)
-{
- if(vsp->vt_pure_mode == M_PUREVT)
- set_emulation_mode(vsp, M_HPVT);
- else if(vsp->vt_pure_mode == M_HPVT)
- set_emulation_mode(vsp, M_PUREVT);
-}
-
-/*---------------------------------------------------------------------------*
- * function bound to control function key 12
- *---------------------------------------------------------------------------*/
-static void
-cfkey12(void)
-{
-}
-
-#endif /* PCVT_VT220KEYB */
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-static void
-scrollback_save_screen(void)
-{
- int x = spltty();
- register size_t s;
-
- s = sizeof(u_short) * vsp->screen_rowsize * vsp->maxcol;
-
- if (scrollback_savedscreen)
- free(scrollback_savedscreen, M_TEMP);
-
- scrnsv_size = s;
-
- if (!(scrollback_savedscreen = (u_short *)malloc(s, M_TEMP, M_NOWAIT)))
- {
- splx(x);
- return;
- }
- bcopy(vsp->Crtat, scrollback_savedscreen, scrnsv_size);
- splx(x);
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-static void
-scrollback_restore_screen(void)
-{
- if (scrollback_savedscreen)
- bcopy(scrollback_savedscreen, vsp->Crtat, scrnsv_size);
-}
-
-/* ------------------------------- EOF -------------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_kbd.h b/sys/i386/isa/pcvt/pcvt_kbd.h
deleted file mode 100644
index 109dca5..0000000
--- a/sys/i386/isa/pcvt/pcvt_kbd.h
+++ /dev/null
@@ -1,396 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
- *
- * Copyright (c) 1992, 1993 Brian Dunford-Shore and Holger Veit.
- *
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz and Don Ahn.
- *
- * This code is derived from software contributed to 386BSD by
- * Holger Veit.
- *
- * 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_kbd.h VT220 Driver Keyboard Interface Header
- * ------------------------------------------------------
- *
- * Last Edit-Date: [Sun Mar 26 10:38:38 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-/*---------------------------------------------------------------------------*
- * this is one sub-entry for the table. the type can be either
- * "pointer to a string" or "pointer to a function"
- *---------------------------------------------------------------------------*/
-typedef struct
-{
- u_char subtype; /* subtype, string or function */
- union what
- {
- u_char *string; /* ptr to string, null terminated */
- void (*func)(void); /* ptr to function */
- } what;
-} entry;
-
-/*---------------------------------------------------------------------------*
- * this is the "outer" table
- *---------------------------------------------------------------------------*/
-typedef struct
-{
- u_short type; /* type of key */
- u_short ovlindex; /* -hv- index into overload table */
- entry unshift; /* normal default codes/funcs */
- entry shift; /* shifted default codes/funcs */
- entry ctrl; /* control default codes/funcs */
-} Keycap_def;
-
-#define IDX0 0 /* default indexvalue into ovl table */
-
-#define STR KBD_SUBT_STR /* subtype = ptr to string */
-#define FNC KBD_SUBT_FNC /* subtype = ptr to function */
-
-#define CODE_SIZE 5
-
-/*---------------------------------------------------------------------------*
- * the overlaytable table is a static fixed size scratchpad where all the
- * overloaded definitions are stored.
- * an entry consists of a short (holding the new type attribute) and
- * four entries for a new keydefinition.
- *---------------------------------------------------------------------------*/
-
-#define OVLTBL_SIZE 64 /* 64 keys can be overloaded */
-
-#define Ovl_tbl struct kbd_ovlkey
-
-static Ovl_tbl *ovltbl; /* the table itself */
-
-static int ovlinitflag = 0; /* the init flag for the table */
-
-/*
- * key codes >= 128 denote "virtual" shift/control
- * They are resolved before any keymapping is handled
- */
-
-#if PCVT_SCANSET == 2
-static u_char scantokey[] = {
-/* -0- -1- -2- -3- -4- -5- -6- -7- This layout is valid for US only */
-/*00*/ 0,120, 0,116,114,112,113,123, /* ?? F9 ?? F5 F3 F1 F2 F12 */
-/*08*/ 0,121,119,117,115, 16, 1, 0, /* ?? F10 F8 F6 F4 TAB ` ?? */
-/*10*/ 0, 60, 44, 0, 58, 17, 2, 0, /* ?? ALl SHl ?? CTl Q 1 ?? */
-/*18*/ 0, 0, 46, 32, 31, 18, 3, 0, /* ?? Z S A W 2 ?? ?? */
-/*20*/ 0, 48, 47, 33, 19, 5, 4, 0, /* ?? C X D E 4 3 ?? */
-/*28*/ 0, 61, 49, 34, 21, 20, 6, 0, /* ?? SP V F T R 5 ?? */
-/*30*/ 0, 51, 50, 36, 35, 22, 7, 0, /* ?? N B H G Y 6 ?? */
-/*38*/ 0, 0, 52, 37, 23, 8, 9, 0, /* ?? ?? M J U 7 8 ?? */
-/*40*/ 0, 53, 38, 24, 25, 11, 10, 0, /* ?? , K I O 0 9 ?? */
-/*48*/ 0, 54, 55, 39, 40, 26, 12, 0, /* ?? . / L ; P - ?? */
-/*50*/ 0, 0, 41, 0, 27, 13, 0, 0, /* ?? ?? " ?? [ = ?? ?? */
-/*58*/ 30, 57, 43, 28, 0, 29, 0, 0, /* CAP SHr ENT ] ?? \ ?? ?? */
-/*60*/ 0, 45, 0, 0, 0, 0, 15, 0, /* ?? NL1 ?? ?? ?? ?? BS ?? */
-/*68*/ 0, 93, 0, 92, 91, 0, 0, 0, /* ?? KP1 ?? KP4 KP7 ?? ?? ?? */
-/*70*/ 99,104, 98, 97,102, 96,110, 90, /* KP0 KP. KP2 KP5 KP6 KP8 ESC NUM */
-/*78*/ 122,106,103,105,100,101,125, 0, /* F11 KP+ KP3 KP- KP* KP9 LOC ?? */
-/*80*/ 0, 0, 0,118,127 /* ?? ?? ?? F7 SyRQ */
-};
-
-static u_char extscantokey[] = {
-/* -0- -1- -2- -3- -4- -5- -6- -7- This layout is valid for US only */
-/*00*/ 0,120, 0,116,114,112,113,123, /* ?? F9 ?? F5 F3 F1 F2 F12 */
-/*08*/ 0,121,119,117,115, 16, 1, 0, /* ?? F10 F8 F6 F4 TAB ` ?? */
-/*10*/ 0, 62,128, 0, 64, 17, 2, 0, /* ?? ALr vSh ?? CTr Q 1 ?? */
-/*18*/ 0, 0, 46, 32, 31, 18, 3, 0, /* ?? Z S A W 2 ?? ?? */
-/*20*/ 0, 48, 47, 33, 19, 5, 4, 0, /* ?? C X D E 4 3 ?? */
-/*28*/ 0, 61, 49, 34, 21, 20, 6, 0, /* ?? SP V F T R 5 ?? */
-/*30*/ 0, 51, 50, 36, 35, 22, 7, 0, /* ?? N B H G Y 6 ?? */
-/*38*/ 0, 0, 52, 37, 23, 8, 9, 0, /* ?? ?? M J U 7 8 ?? */
-/*40*/ 0, 53, 38, 24, 25, 11, 10, 0, /* ?? , K I O 0 9 ?? */
-/*48*/ 0, 54, 95, 39, 40, 26, 12, 0, /* ?? . KP/ L ; P - ?? */
-/*50*/ 0, 0, 41, 0, 27, 13, 0, 0, /* ?? ?? " ?? [ = ?? ?? */
-/*58*/ 30, 57,108, 28, 0, 29, 0, 0, /* CAP SHr KPE ] ?? \ ?? ?? */
-/*60*/ 0, 45, 0, 0, 0, 0, 15, 0, /* ?? NL1 ?? ?? ?? ?? BS ?? */
-/*68*/ 0, 81, 0, 79, 80, 0, 0, 0, /* ?? END ?? LA HOM ?? ?? ?? */
-/*70*/ 75, 76, 84, 97, 89, 83,110, 90, /* INS DEL DA KP5 RA UA ESC NUM */
-/*78*/ 122,106, 86,105,124, 85,126, 0, /* F11 KP+ PD KP- PSc PU Brk ?? */
-/*80*/ 0, 0, 0,118,127 /* ?? ?? ?? F7 SysRq */
-};
-
-#else /* PCVT_SCANSET != 2 */
-
-static u_char scantokey[] = {
-/* -0- -1- -2- -3- -4- -5- -6- -7- This layout is valid for US only */
-/*00*/ 0,110, 2, 3, 4, 5, 6, 7, /* ?? ESC 1 2 3 4 5 6 */
-/*08*/ 8, 9, 10, 11, 12, 13, 15, 16, /* 7 8 9 0 - = BS TAB */
-/*10*/ 17, 18, 19, 20, 21, 22, 23, 24, /* Q W E R T Y U I */
-/*18*/ 25, 26, 27, 28, 43, 58, 31, 32, /* O P [ ] ENT CTl A S */
-/*20*/ 33, 34, 35, 36, 37, 38, 39, 40, /* D F G H J K L ; */
-/*28*/ 41, 1, 44, 29, 46, 47, 48, 49, /* ' ` SHl \ Z X C V */
-/*30*/ 50, 51, 52, 53, 54, 55, 57,100, /* B N M , . / SHr KP* */
-/*38*/ 60, 61, 30,112,113,114,115,116, /* ALl SP CAP F1 F2 F3 F4 F5 */
-/*40*/ 117,118,119,120,121, 90,125, 91, /* F6 F7 F8 F9 F10 NUM LOC KP7 */
-/*48*/ 96,101,105, 92, 97,102,106, 93, /* KP8 KP9 KP- KP4 KP5 KP6 KP+ KP1 */
-/*50*/ 98,103, 99,104,127, 0, 45,122, /* KP2 KP3 KP0 KP. SyRq?? NL1 F11 */
-/*58*/ 123 /* F12 */
-};
-
-static u_char extscantokey[] = {
-/* -0- -1- -2- -3- -4- -5- -6- -7- This layout is valid for US only */
-/*00*/ 0,110, 2, 3, 4, 5, 6, 7, /* ?? ESC 1 2 3 4 5 6 */
-/*08*/ 8, 9, 10, 11, 12, 13, 15, 16, /* 7 8 9 0 - = BS TAB */
-/*10*/ 17, 18, 19, 20, 21, 22, 23, 24, /* Q W E R T Y U I */
-/*18*/ 25, 26, 27, 28,108, 64, 31, 32, /* O P [ ] KPE CTr A S */
-/*20*/ 33, 34, 35, 36, 37, 38, 39, 40, /* D F G H J K L ; */
-/*28*/ 41, 1,128, 29, 46, 47, 48, 49, /* ' ` vSh \ Z X C V */
-/*30*/ 50, 51, 52, 53, 54, 95, 57,124, /* B N M , . KP/ SHr KP* */
-/*38*/ 62, 61, 30,112,113,114,115,116, /* ALr SP CAP F1 F2 F3 F4 F5 */
-/*40*/ 117,118,119,120,121, 90,126, 80, /* F6 F7 F8 F9 F10 NUM Brk HOM */
-/*48*/ 83, 85,105, 79, 97, 89,106, 81, /* UA PU KP- LA KP5 RA KP+ END */
-/*50*/ 84, 86, 75, 76, 0, 0, 45,122, /* DA PD INS DEL ?? ?? NL1 F11 */
-/*58*/ 123, /* F12 */
-};
-#endif /* PCVT_SCANSET == 2 */
-
-static Keycap_def key2ascii[] =
-{
-/* define some shorthands to make the table (almost) fit into 80 columns */
-#define C (u_char *)
-#define V (void *)
-#define S STR
-#define F FNC
-#define I IDX0
-
-/* DONT EVER OVERLOAD KEY 0, THIS IS A KEY THAT MUSTN'T EXIST */
-
-/* type index unshift shift ctrl */
-/* ---------------------------------------------------------- */
-/* 0*/ {KBD_NONE, I, {S,{C "df"}}, {S,{C ""}}, {S,{C ""}}},
-/* 1*/ {KBD_ASCII, I, {S,{C "`"}}, {S,{C "~"}}, {S,{C "`"}}},
-/* 2*/ {KBD_ASCII, I, {S,{C "1"}}, {S,{C "!"}}, {S,{C "1"}}},
-/* 3*/ {KBD_ASCII, I, {S,{C "2"}}, {S,{C "@"}}, {S,{C "\000"}}},
-/* 4*/ {KBD_ASCII, I, {S,{C "3"}}, {S,{C "#"}}, {S,{C "3"}}},
-/* 5*/ {KBD_ASCII, I, {S,{C "4"}}, {S,{C "$"}}, {S,{C "4"}}},
-/* 6*/ {KBD_ASCII, I, {S,{C "5"}}, {S,{C "%"}}, {S,{C "5"}}},
-/* 7*/ {KBD_ASCII, I, {S,{C "6"}}, {S,{C "^"}}, {S,{C "\036"}}},
-/* 8*/ {KBD_ASCII, I, {S,{C "7"}}, {S,{C "&"}}, {S,{C "7"}}},
-/* 9*/ {KBD_ASCII, I, {S,{C "8"}}, {S,{C "*"}}, {S,{C "8"}}},
-/* 10*/ {KBD_ASCII, I, {S,{C "9"}}, {S,{C "("}}, {S,{C "9"}}},
-/* 11*/ {KBD_ASCII, I, {S,{C "0"}}, {S,{C ")"}}, {S,{C "0"}}},
-/* 12*/ {KBD_ASCII, I, {S,{C "-"}}, {S,{C "_"}}, {S,{C "\037"}}},
-/* 13*/ {KBD_ASCII, I, {S,{C "="}}, {S,{C "+"}}, {S,{C "="}}},
-/* 14*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 15*/ {KBD_ASCII, I, {S,{C "\177"}}, {S,{C "\010"}}, {S,{C "\177"}}}, /* BS */
-/* 16*/ {KBD_ASCII, I, {S,{C "\t"}}, {S,{C "\t"}}, {S,{C "\t"}}}, /* TAB */
-/* 17*/ {KBD_ASCII, I, {S,{C "q"}}, {S,{C "Q"}}, {S,{C "\021"}}},
-/* 18*/ {KBD_ASCII, I, {S,{C "w"}}, {S,{C "W"}}, {S,{C "\027"}}},
-/* 19*/ {KBD_ASCII, I, {S,{C "e"}}, {S,{C "E"}}, {S,{C "\005"}}},
-/* 20*/ {KBD_ASCII, I, {S,{C "r"}}, {S,{C "R"}}, {S,{C "\022"}}},
-/* 21*/ {KBD_ASCII, I, {S,{C "t"}}, {S,{C "T"}}, {S,{C "\024"}}},
-/* 22*/ {KBD_ASCII, I, {S,{C "y"}}, {S,{C "Y"}}, {S,{C "\031"}}},
-/* 23*/ {KBD_ASCII, I, {S,{C "u"}}, {S,{C "U"}}, {S,{C "\025"}}},
-/* 24*/ {KBD_ASCII, I, {S,{C "i"}}, {S,{C "I"}}, {S,{C "\011"}}},
-/* 25*/ {KBD_ASCII, I, {S,{C "o"}}, {S,{C "O"}}, {S,{C "\017"}}},
-/* 26*/ {KBD_ASCII, I, {S,{C "p"}}, {S,{C "P"}}, {S,{C "\020"}}},
-/* 27*/ {KBD_ASCII, I, {S,{C "["}}, {S,{C "{"}}, {S,{C "\033"}}},
-/* 28*/ {KBD_ASCII, I, {S,{C "]"}}, {S,{C "}"}}, {S,{C "\035"}}},
-/* 29*/ {KBD_ASCII, I, {S,{C "\\"}}, {S,{C "|"}}, {S,{C "\034"}}},
-/* 30*/ {KBD_CAPS, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 31*/ {KBD_ASCII, I, {S,{C "a"}}, {S,{C "A"}}, {S,{C "\001"}}},
-/* 32*/ {KBD_ASCII, I, {S,{C "s"}}, {S,{C "S"}}, {S,{C "\023"}}},
-/* 33*/ {KBD_ASCII, I, {S,{C "d"}}, {S,{C "D"}}, {S,{C "\004"}}},
-/* 34*/ {KBD_ASCII, I, {S,{C "f"}}, {S,{C "F"}}, {S,{C "\006"}}},
-/* 35*/ {KBD_ASCII, I, {S,{C "g"}}, {S,{C "G"}}, {S,{C "\007"}}},
-/* 36*/ {KBD_ASCII, I, {S,{C "h"}}, {S,{C "H"}}, {S,{C "\010"}}},
-/* 37*/ {KBD_ASCII, I, {S,{C "j"}}, {S,{C "J"}}, {S,{C "\n"}}},
-/* 38*/ {KBD_ASCII, I, {S,{C "k"}}, {S,{C "K"}}, {S,{C "\013"}}},
-/* 39*/ {KBD_ASCII, I, {S,{C "l"}}, {S,{C "L"}}, {S,{C "\014"}}},
-/* 40*/ {KBD_ASCII, I, {S,{C ";"}}, {S,{C ":"}}, {S,{C ";"}}},
-/* 41*/ {KBD_ASCII, I, {S,{C "'"}}, {S,{C "\""}}, {S,{C "'"}}},
-/* 42*/ {KBD_ASCII, I, {S,{C "\\"}}, {S,{C "|"}}, {S,{C "\034"}}}, /* special */
-/* 43*/ {KBD_RETURN,I, {S,{C "\r"}}, {S,{C "\r"}}, {S,{C "\r"}}}, /* RETURN */
-/* 44*/ {KBD_SHIFT, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}}, /* SHIFT left */
-/* 45*/ {KBD_ASCII, I, {S,{C "<"}}, {S,{C ">"}}, {S,{C ""}}},
-/* 46*/ {KBD_ASCII, I, {S,{C "z"}}, {S,{C "Z"}}, {S,{C "\032"}}},
-/* 47*/ {KBD_ASCII, I, {S,{C "x"}}, {S,{C "X"}}, {S,{C "\030"}}},
-/* 48*/ {KBD_ASCII, I, {S,{C "c"}}, {S,{C "C"}}, {S,{C "\003"}}},
-/* 49*/ {KBD_ASCII, I, {S,{C "v"}}, {S,{C "V"}}, {S,{C "\026"}}},
-/* 50*/ {KBD_ASCII, I, {S,{C "b"}}, {S,{C "B"}}, {S,{C "\002"}}},
-/* 51*/ {KBD_ASCII, I, {S,{C "n"}}, {S,{C "N"}}, {S,{C "\016"}}},
-/* 52*/ {KBD_ASCII, I, {S,{C "m"}}, {S,{C "M"}}, {S,{C "\r"}}},
-/* 53*/ {KBD_ASCII, I, {S,{C ","}}, {S,{C "<"}}, {S,{C ","}}},
-/* 54*/ {KBD_ASCII, I, {S,{C "."}}, {S,{C ">"}}, {S,{C "."}}},
-/* 55*/ {KBD_ASCII, I, {S,{C "/"}}, {S,{C "?"}}, {S,{C "/"}}},
-/* 56*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 57*/ {KBD_SHIFT, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}}, /* SHIFT right */
-/* 58*/ {KBD_CTL, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}}, /* CTL left */
-/* 59*/ {KBD_ASCII, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 60*/ {KBD_META, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}}, /* ALT left */
-#if !PCVT_NULLCHARS
-/* 61*/ {KBD_ASCII, I, {S,{C " "}}, {S,{C " "}}, {S,{C " "}}}, /* SPACE */
-#else
-/* 61*/ {KBD_ASCII, I, {S,{C " "}}, {S,{C " "}}, {S,{C "\000"}}}, /* SPACE */
-#endif /* PCVT_NULLCHARS */
-/* 62*/ {KBD_META, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}}, /* ALT right */
-/* 63*/ {KBD_ASCII, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 64*/ {KBD_CTL, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}}, /* CTL right */
-/* 65*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 66*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 67*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 68*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 69*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 70*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 71*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 72*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 73*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 74*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 75*/ {KBD_FUNC, I, {S,{C "\033[2~"}},{S,{C "\033[2~"}},{S,{C "\033[2~"}}},/* INS */
-/* 76*/ {KBD_FUNC, I, {S,{C "\033[3~"}},{S,{C "\033[3~"}},{S,{C "\033[3~"}}},/* DEL */
-/* 77*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 78*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 79*/ {KBD_CURSOR,I, {S,{C "\033[D"}},{S,{C "\033OD"}},{S,{C "\033[D"}}}, /* CU <- */
-/* 80*/ {KBD_FUNC, I, {S,{C "\033[1~"}},{S,{C "\033[1~"}},{S,{C "\033[1~"}}},/* HOME = FIND*/
-/* 81*/ {KBD_FUNC, I, {S,{C "\033[4~"}},{S,{C "\033[4~"}},{S,{C "\033[4~"}}},/* END = SELECT */
-/* 82*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 83*/ {KBD_CURSOR,I, {S,{C "\033[A"}},{S,{C "\033OA"}},{S,{C "\033[A"}}}, /* CU ^ */
-/* 84*/ {KBD_CURSOR,I, {S,{C "\033[B"}},{S,{C "\033OB"}},{S,{C "\033[B"}}}, /* CU v */
-/* 85*/ {KBD_FUNC, I, {S,{C "\033[5~"}},{S,{C "\033[5~"}},{S,{C "\033[5~"}}},/*PG UP*/
-/* 86*/ {KBD_FUNC, I, {S,{C "\033[6~"}},{S,{C "\033[6~"}},{S,{C "\033[6~"}}},/*PG DN*/
-/* 87*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 88*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 89*/ {KBD_CURSOR,I, {S,{C "\033[C"}},{S,{C "\033OC"}},{S,{C "\033[C"}}}, /* CU -> */
-/* 90*/ {KBD_NUM, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 91*/ {KBD_KP, I, {S,{C "7"}}, {S,{C "\033Ow"}},{S,{C "7"}}},
-/* 92*/ {KBD_KP, I, {S,{C "4"}}, {S,{C "\033Ot"}},{S,{C "4"}}},
-/* 93*/ {KBD_KP, I, {S,{C "1"}}, {S,{C "\033Oq"}},{S,{C "1"}}},
-/* 94*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/* 95*/ {KBD_KP, I, {S,{C "/"}}, {S,{C "/"}}, {S,{C "/"}}},
-/* 96*/ {KBD_KP, I, {S,{C "8"}}, {S,{C "\033Ox"}},{S,{C "8"}}},
-/* 97*/ {KBD_KP, I, {S,{C "5"}}, {S,{C "\033Ou"}},{S,{C "5"}}},
-/* 98*/ {KBD_KP, I, {S,{C "2"}}, {S,{C "\033Or"}},{S,{C "2"}}},
-/* 99*/ {KBD_KP, I, {S,{C "0"}}, {S,{C "\033Op"}},{S,{C "0"}}},
-/*100*/ {KBD_KP, I, {S,{C "*"}}, {S,{C "*"}}, {S,{C "*"}}},
-/*101*/ {KBD_KP, I, {S,{C "9"}}, {S,{C "\033Oy"}},{S,{C "9"}}},
-/*102*/ {KBD_KP, I, {S,{C "6"}}, {S,{C "\033Ov"}},{S,{C "6"}}},
-/*103*/ {KBD_KP, I, {S,{C "3"}}, {S,{C "\033Os"}},{S,{C "3"}}},
-/*104*/ {KBD_KP, I, {S,{C "."}}, {S,{C "\033On"}},{S,{C "."}}},
-/*105*/ {KBD_KP, I, {S,{C "-"}}, {S,{C "\033Om"}},{S,{C "-"}}},
-/*106*/ {KBD_KP, I, {S,{C "+"}}, {S,{C "+"}}, {S,{C "+"}}},
-/*107*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/*108*/ {KBD_RETURN,I, {S,{C "\r"}}, {S,{C "\033OM"}},{S,{C "\r"}}}, /* KP ENTER */
-/*109*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/*110*/ {KBD_ASCII, I, {S,{C "\033"}}, {S,{C "\033"}}, {S,{C "\033"}}},
-/*111*/ {KBD_NONE, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/*112*/ {KBD_FUNC, I, {F,{V fkey1}}, {F,{V sfkey1}}, {F,{V cfkey1}}}, /* F1 */
-/*113*/ {KBD_FUNC, I, {F,{V fkey2}}, {F,{V sfkey2}}, {F,{V cfkey2}}}, /* F2 */
-/*114*/ {KBD_FUNC, I, {F,{V fkey3}}, {F,{V sfkey3}}, {F,{V cfkey3}}}, /* F3 */
-/*115*/ {KBD_FUNC, I, {F,{V fkey4}}, {F,{V sfkey4}}, {F,{V cfkey4}}}, /* F4 */
-/*116*/ {KBD_FUNC, I, {F,{V fkey5}}, {F,{V sfkey5}}, {F,{V cfkey5}}}, /* F5 */
-/*117*/ {KBD_FUNC, I, {F,{V fkey6}}, {F,{V sfkey6}}, {F,{V cfkey6}}}, /* F6 */
-/*118*/ {KBD_FUNC, I, {F,{V fkey7}}, {F,{V sfkey7}}, {F,{V cfkey7}}}, /* F7 */
-/*119*/ {KBD_FUNC, I, {F,{V fkey8}}, {F,{V sfkey8}}, {F,{V cfkey8}}}, /* F8 */
-/*120*/ {KBD_FUNC, I, {F,{V fkey9}}, {F,{V sfkey9}}, {F,{V cfkey9}}}, /* F9 */
-/*121*/ {KBD_FUNC, I, {F,{V fkey10}}, {F,{V sfkey10}}, {F,{V cfkey10}}}, /* F10 */
-/*122*/ {KBD_FUNC, I, {F,{V fkey11}}, {F,{V sfkey11}}, {F,{V cfkey11}}}, /* F11 */
-/*123*/ {KBD_FUNC, I, {F,{V fkey12}}, {F,{V sfkey12}}, {F,{V cfkey12}}}, /* F12 */
-/*124*/ {KBD_KP, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/*125*/ {KBD_SCROLL,I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/*126*/ {KBD_BREAK, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}},
-/*127*/ {KBD_FUNC, I, {S,{C ""}}, {S,{C ""}}, {S,{C ""}}}, /* SysRq */
-
-#undef C
-#undef V
-#undef S
-#undef F
-#undef I
-};
-
-static short keypad2num[] = {
- 7, 4, 1, -1, -1, 8, 5, 2, 0, -1, 9, 6, 3, -1, -1, -1, -1
-};
-
-#ifdef XSERVER
-
-#define N_KEYNUMS 128
-
-/*
- * this is the reverse mapping from keynumbers to scanset 1 codes
- * it is used to emulate the SysV-style GIO_KEYMAP ioctl cmd
- */
-
-static u_char key2scan1[N_KEYNUMS] = {
- 0,0x29,0x02,0x03,0x04,0x05,0x06,0x07,0x08,0x09, /* 0 */
- 0x0a,0x0b,0x0c,0x0d, 0,0x0e,0x0f,0x10,0x11,0x12, /* 10 */
- 0x13,0x14,0x15,0x16,0x17,0x18,0x19,0x1a,0x1b,0x2b, /* 20 */
- 0x3a,0x1e,0x1f,0x20,0x21,0x22,0x23,0x24,0x25,0x26, /* 30 */
- 0x27,0x28, 0,0x1c,0x2a,0x56,0x2c,0x2d,0x2e,0x2f, /* 40 */
- 0x30,0x31,0x32,0x33,0x34,0x35,0x56,0x36,0x1d, 0, /* 50 */
- 0x38,0x39, 0, 0, 0, 0, 0, 0, 0, 0, /* 60 */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 70 */
- 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, /* 80 */
- 0x45,0x47,0x4b,0x4f, 0, 0,0x48,0x4c,0x50,0x52, /* 90 */
- 0x37,0x49,0x4d,0x51,0x53,0x4a,0x4e, 0, 0, 0, /* 100 */
- 0x01, 0,0x3b,0x3c,0x3d,0x3e,0x3f,0x40,0x41,0x42, /* 110 */
- 0x43,0x44,0x57,0x58, 0,0x46, 0,0x54 /* 120 */
-};
-
-/*
- * SysV is brain-dead enough to stick on the IBM code page 437. So we
- * have to translate our keymapping into IBM 437 (possibly losing keys),
- * in order to have the X server convert it back into ISO8859.1
- */
-
-/* NB: this table only contains the mapping for codes >= 128 */
-
-static u_char iso2ibm437[] =
-{
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0, 0, 0, 0, 0, 0, 0, 0,
- 0xff, 0xad, 0x9b, 0x9c, 0, 0x9d, 0, 0x40,
- 0x6f, 0x63, 0x61, 0xae, 0, 0, 0, 0,
- 0xf8, 0xf1, 0xfd, 0x33, 0, 0xe6, 0, 0xfa,
- 0, 0x31, 0x6f, 0xaf, 0xac, 0xab, 0, 0xa8,
- 0x41, 0x41, 0x41, 0x41, 0x8e, 0x8f, 0x92, 0x80,
- 0x45, 0x90, 0x45, 0x45, 0x49, 0x49, 0x49, 0x49,
- 0x81, 0xa5, 0x4f, 0x4f, 0x4f, 0x4f, 0x99, 0x4f,
- 0x4f, 0x55, 0x55, 0x55, 0x9a, 0x59, 0, 0xe1,
- 0x85, 0xa0, 0x83, 0x61, 0x84, 0x86, 0x91, 0x87,
- 0x8a, 0x82, 0x88, 0x89, 0x8d, 0xa1, 0x8c, 0x8b,
- 0, 0xa4, 0x95, 0xa2, 0x93, 0x6f, 0x94, 0x6f,
- 0x6f, 0x97, 0xa3, 0x96, 0x81, 0x98, 0, 0
-};
-
-#endif /* XSERVER */
-
diff --git a/sys/i386/isa/pcvt/pcvt_out.c b/sys/i386/isa/pcvt/pcvt_out.c
deleted file mode 100644
index da32ec5..0000000
--- a/sys/i386/isa/pcvt/pcvt_out.c
+++ /dev/null
@@ -1,2227 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
- *
- * Copyright (c) 1992, 1993 Brian Dunford-Shore.
- *
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz and Don Ahn.
- *
- * 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_out.c VT220 Terminal Emulator
- * ---------------------------------------
- *
- * Last Edit-Date: [Tue Jun 5 17:27:48 2001]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#define PCVT_INCLUDE_VT_SELATTR /* get inline function from pcvt_hdr.h */
-
-#include <i386/isa/pcvt/pcvt_hdr.h> /* global include */
-#include <vm/vm.h>
-#include <vm/vm_param.h>
-#include <vm/pmap.h>
-
-extern u_short csd_ascii[]; /* pcvt_tbl.h */
-extern u_short csd_supplemental[];
-
-static void write_char (struct video_state *svsp, int attrib, int ch);
-static void check_scroll ( struct video_state *svsp );
-static void hp_entry ( int ch, struct video_state *svsp );
-static void vt_coldinit ( void );
-static void wrfkl ( int num, u_char *string, struct video_state *svsp );
-static void writefkl ( int num, u_char *string, struct video_state *svsp );
-static int check_scrollback ( struct video_state *svsp );
-
-/*---------------------------------------------------------------------------*
- * do character set transformation and write to display memory (inline)
- *---------------------------------------------------------------------------*/
-
-#define video (svsp->Crtat + svsp->cur_offset)
-
-static __inline void write_char (svsp, attrib, ch)
-struct video_state *svsp;
-u_short attrib, ch; /* XXX inefficient interface */
-{
- if ((ch >= 0x20) && (ch <= 0x7f)) /* use GL if ch >= 0x20 */
- {
- if(!svsp->ss) /* single shift G2/G3 -> GL ? */
- {
- *video = attrib | (*svsp->GL)[ch-0x20];
- }
- else
- {
- *video = attrib | (*svsp->Gs)[ch-0x20];
- svsp->ss = 0;
- }
- }
- else
- {
- svsp->ss = 0;
-
- if(ch >= 0x80) /* display controls C1 */
- {
- if(ch >= 0xA0) /* use GR if ch >= 0xA0 */
- {
- *video = attrib | (*svsp->GR)[ch-0xA0];
- }
- else
- {
- if(vgacs[svsp->vga_charset].secondloaded)
- {
- *video = attrib | ((ch-0x60) | CSH);
- }
- else /* use normal ibm charset for
- control display */
- {
- *video = attrib | ch;
- }
- }
- }
- else /* display controls C0 */
- {
- if(vgacs[svsp->vga_charset].secondloaded)
- {
- *video = attrib | (ch | CSH);
- }
- else /* use normal ibm charset for control display*/
- {
- *video = attrib | ch;
- }
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * emulator main entry
- *---------------------------------------------------------------------------*/
-void
-sput (u_char *s, int kernel, int len, int page)
-{
- register struct video_state *svsp;
- u_short attrib;
- u_short ch;
- u_short extra;
-
- if(page >= PCVT_NSCREENS) /* failsafe */
- page = 0;
-
- svsp = &vs[page]; /* pointer to current screen state */
-
- if(do_initialization) /* first time called ? */
- vt_coldinit(); /* yes, we have to init ourselves */
-
- if(svsp == vsp) /* on current displayed page ? */
- {
- cursor_pos_valid = 0; /* do not update cursor */
-
-#if PCVT_SCREENSAVER
- if(scrnsv_active) /* screen blanked ? */
- pcvt_scrnsv_reset(); /* unblank NOW ! */
- else
- reset_screen_saver = 1; /* do it asynchronously */
-#endif /* PCVT_SCREENSAVER */
-
- }
-
- attrib = kernel ? kern_attr : svsp->c_attr;
-
- while (len-- > 0)
- if((ch = *(s++)) > 0)
- {
- if(svsp->sevenbit)
- ch &= 0x7f;
-
- if(((ch <= 0x1f) || (ch == 0x7f)) && (svsp->transparent == 0))
- {
-
- /* always process control-chars in the range 0x00..0x1f, 0x7f !!! */
-
- if(svsp->dis_fnc)
- {
- if(svsp->lastchar && svsp->m_awm
- && (svsp->lastrow == svsp->row))
- {
- svsp->cur_offset++;
- svsp->col = 0;
- svsp->lastchar = 0;
- check_scroll(svsp);
- }
-
- if(svsp->irm)
- bcopy((svsp->Crtat + svsp->cur_offset),
- (svsp->Crtat + svsp->cur_offset) + 1,
- (((svsp->maxcol)-1) - svsp->col)*CHR);
-
- write_char(svsp, attrib, ch);
-
- vt_selattr(svsp);
-
- if(svsp->col >= ((svsp->maxcol)-1)
- && ch != 0x0a && ch != 0x0b && ch != 0x0c)
- {
- svsp->lastchar = 1;
- svsp->lastrow = svsp->row;
- }
- else if(ch == 0x0a || ch == 0x0b || ch == 0x0c)
- {
- svsp->cur_offset -= svsp->col;
- svsp->cur_offset += svsp->maxcol;
- svsp->col = 0;
- svsp->lastchar = 0;
- check_scroll(svsp); /* check scroll up */
- }
- else
- {
- svsp->cur_offset++;
- svsp->col++;
- svsp->lastchar = 0;
- }
- }
- else
- {
- switch(ch)
- {
- case 0x00: /* NUL */
- case 0x01: /* SOH */
- case 0x02: /* STX */
- case 0x03: /* ETX */
- case 0x04: /* EOT */
- case 0x05: /* ENQ */
- case 0x06: /* ACK */
- break;
-
- case 0x07: /* BEL */
- if(svsp->bell_on)
- sysbeep(PCVT_SYSBEEPF/1500, hz/4);
- break;
-
- case 0x08: /* BS */
- if(svsp->col > 0)
- {
- svsp->cur_offset--;
- svsp->col--;
- }
- break;
-
- case 0x09: /* TAB */
- while(svsp->col < ((svsp->maxcol)-1))
- {
- svsp->cur_offset++;
- if(svsp->
- tab_stops[++svsp->col])
- break;
- }
- break;
-
- case 0x0a: /* LF */
- case 0x0b: /* VT */
- case 0x0c: /* FF */
- if (check_scrollback(svsp))
- {
- extra = (svsp->cur_offset %
- svsp->maxcol) ?
- svsp->col : 0;
- bcopy(svsp->Crtat +
- svsp->cur_offset - extra,
- svsp->Scrollback +
- (svsp->scr_offset *
- svsp->maxcol),
- svsp->maxcol * CHR);
- }
- if(svsp->lnm)
- {
- svsp->cur_offset -= svsp->col;
- svsp->cur_offset +=
- svsp->maxcol;
- svsp->col = 0;
- }
- else
- {
- svsp->cur_offset +=
- svsp->maxcol;
- }
- check_scroll(svsp);
- break;
-
- case 0x0d: /* CR */
- svsp->cur_offset -= svsp->col;
- svsp->col = 0;
- break;
-
- case 0x0e: /* SO */
- svsp->GL = &svsp->G1;
- break;
-
- case 0x0f: /* SI */
- svsp->GL = &svsp->G0;
- break;
-
- case 0x10: /* DLE */
- case 0x11: /* DC1/XON */
- case 0x12: /* DC2 */
- case 0x13: /* DC3/XOFF */
- case 0x14: /* DC4 */
- case 0x15: /* NAK */
- case 0x16: /* SYN */
- case 0x17: /* ETB */
- break;
-
- case 0x18: /* CAN */
- svsp->state = STATE_INIT;
- clr_parms(svsp);
- break;
-
- case 0x19: /* EM */
- break;
-
- case 0x1a: /* SUB */
- svsp->state = STATE_INIT;
- clr_parms(svsp);
- break;
-
- case 0x1b: /* ESC */
- svsp->state = STATE_ESC;
- clr_parms(svsp);
- break;
-
- case 0x1c: /* FS */
- case 0x1d: /* GS */
- case 0x1e: /* RS */
- case 0x1f: /* US */
- case 0x7f: /* DEL */
- break;
- }
- }
- }
- else
- {
-
- /* char range 0x20...0x73, 0x80...0xff processing */
- /* depends on current state */
-
- switch(svsp->state)
- {
- case STATE_INIT:
- if(svsp->lastchar && svsp->m_awm &&
- (svsp->lastrow == svsp->row))
- {
- svsp->cur_offset++;
- svsp->col = 0;
- svsp->lastchar = 0;
-
- if (check_scrollback(svsp))
- {
- bcopy(svsp->Crtat +
- svsp->cur_offset -
- svsp->maxcol,
- svsp->Scrollback +
- (svsp->scr_offset *
- svsp->maxcol),
- svsp->maxcol * CHR);
- }
- check_scroll(svsp);
- }
-
- if(svsp->irm)
- bcopy ((svsp->Crtat
- + svsp->cur_offset),
- (svsp->Crtat
- + svsp->cur_offset) + 1,
- (((svsp->maxcol)-1)
- - svsp->col) * CHR);
-
- write_char(svsp, attrib, ch);
-
- vt_selattr(svsp);
-
- if(svsp->col >= ((svsp->maxcol)-1))
- {
- svsp->lastchar = 1;
- svsp->lastrow = svsp->row;
- }
- else
- {
- svsp->lastchar = 0;
- svsp->cur_offset++;
- svsp->col++;
- }
- break;
-
- case STATE_ESC:
- switch(ch)
- {
- case ' ': /* ESC sp family */
- svsp->state = STATE_BLANK;
- break;
-
- case '#': /* ESC # family */
- svsp->state = STATE_HASH;
- break;
-
- case '&': /* ESC & family (HP) */
- if(svsp->vt_pure_mode ==
- M_HPVT)
- {
- svsp->state =
- STATE_AMPSND;
- svsp->hp_state =
- SHP_INIT;
- }
- else
- svsp->state =
- STATE_INIT;
- break;
-
- case '(': /* ESC ( family */
- svsp->state = STATE_BROPN;
- break;
-
- case ')': /* ESC ) family */
- svsp->state = STATE_BRCLO;
- break;
-
- case '*': /* ESC * family */
- svsp->state = STATE_STAR;
- break;
-
- case '+': /* ESC + family */
- svsp->state = STATE_PLUS;
- break;
-
- case '-': /* ESC - family */
- svsp->state = STATE_MINUS;
- break;
-
- case '.': /* ESC . family */
- svsp->state = STATE_DOT;
- break;
-
- case '/': /* ESC / family */
- svsp->state = STATE_SLASH;
- break;
-
- case '7': /* SAVE CURSOR */
- vt_sc(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case '8': /* RESTORE CURSOR */
- vt_rc(svsp);
- if (!kernel)
- attrib = svsp->c_attr;
- svsp->state = STATE_INIT;
- break;
-
- case '=': /* keypad application mode */
-#if !PCVT_INHIBIT_NUMLOCK
- vt_keyappl(svsp);
-#endif
- svsp->state = STATE_INIT;
- break;
-
- case '>': /* keypad numeric mode */
-#if !PCVT_INHIBIT_NUMLOCK
- vt_keynum(svsp);
-#endif
- svsp->state = STATE_INIT;
- break;
-
- case 'D': /* INDEX */
- vt_ind(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'E': /* NEXT LINE */
- vt_nel(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'H': /* set TAB at current col */
- svsp->tab_stops[svsp->col] = 1;
- svsp->state = STATE_INIT;
- break;
-
- case 'M': /* REVERSE INDEX */
- vt_ri(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'N': /* SINGLE SHIFT G2 */
- svsp->Gs = &svsp->G2;
- svsp->ss = 1;
- svsp->state = STATE_INIT;
- break;
-
- case 'O': /* SINGLE SHIFT G3 */
- svsp->Gs = &svsp->G3;
- svsp->ss = 1;
- svsp->state = STATE_INIT;
- break;
-
- case 'P': /* DCS detected */
- svsp->dcs_state = DCS_INIT;
- svsp->state = STATE_DCS;
- break;
-
- case 'Z': /* What are you = ESC [ c */
- vt_da(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case '[': /* CSI detected */
- clr_parms(svsp);
- svsp->state = STATE_CSI;
- break;
-
- case '\\': /* String Terminator */
- svsp->state = STATE_INIT;
- break;
-
- case 'c': /* hard reset */
- vt_ris(svsp);
- if (!kernel)
- attrib = svsp->c_attr;
- svsp->state = STATE_INIT;
- break;
-
-#if PCVT_SETCOLOR
- case 'd': /* set color sgr */
- if(color)
- {
- /* set shiftwidth=4 */
- sgr_tab_color
- [svsp->
- vtsgr] =
- svsp->c_attr
- >> 8;
- user_attr =
- sgr_tab_color
- [0] << 8;
- }
- svsp->state = STATE_INIT;
- break;
-#endif /* PCVT_SETCOLOR */
- case 'n': /* Lock Shift G2 -> GL */
- svsp->GL = &svsp->G2;
- svsp->state = STATE_INIT;
- break;
-
- case 'o': /* Lock Shift G3 -> GL */
- svsp->GL = &svsp->G3;
- svsp->state = STATE_INIT;
- break;
-
- case '}': /* Lock Shift G2 -> GR */
- svsp->GR = &svsp->G2;
- svsp->state = STATE_INIT;
- break;
-
- case '|': /* Lock Shift G3 -> GR */
- svsp->GR = &svsp->G3;
- svsp->state = STATE_INIT;
- break;
-
- case '~': /* Lock Shift G1 -> GR */
- svsp->GR = &svsp->G1;
- svsp->state = STATE_INIT;
- break;
-
- default:
- svsp->state = STATE_INIT;
- break;
- }
- break;
-
- case STATE_BLANK: /* ESC space [FG], which are */
- svsp->state = STATE_INIT; /* currently ignored*/
- break;
-
- case STATE_HASH:
- switch(ch)
- {
- case '3': /* double height top half */
- case '4': /*double height bottom half*/
- case '5': /*single width sngle height*/
- case '6': /*double width sngle height*/
- svsp->state = STATE_INIT;
- break;
-
- case '8': /* fill sceen with 'E's */
- vt_aln(svsp);
- svsp->state = STATE_INIT;
- break;
-
- default: /* anything else */
- svsp->state = STATE_INIT;
- break;
- }
- break;
-
- case STATE_BROPN: /* designate G0 */
- case STATE_BRCLO: /* designate G1 */
- case STATE_STAR: /* designate G2 */
- case STATE_PLUS: /* designate G3 */
- case STATE_MINUS: /* designate G1 (96) */
- case STATE_DOT: /* designate G2 (96) */
- case STATE_SLASH: /* designate G3 (96) */
- svsp->which[svsp->whichi++] = ch;
- if(ch >= 0x20 && ch <= 0x2f
- && svsp->whichi <= 2)
- break;
- else if(ch >=0x30 && ch <= 0x7e)
- {
- svsp->which[svsp->whichi] = '\0';
- vt_designate(svsp);
- }
- svsp->whichi = 0;
- svsp->state = STATE_INIT;
- break;
-
- case STATE_CSIQM: /* DEC private modes */
- switch(ch)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': /* parameters */
- svsp->parms[svsp->parmi] *= 10;
- svsp->parms[svsp->parmi] +=
- (ch -'0');
- break;
-
- case ';': /* next parameter */
- svsp->parmi =
- (svsp->parmi+1 < MAXPARMS) ?
- svsp->parmi+1 : svsp->parmi;
- break;
-
- case 'h': /* set mode */
- vt_set_dec_priv_qm(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'l': /* reset mode */
- vt_reset_dec_priv_qm(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'n': /* Reports */
- vt_dsr(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'K': /* selective erase in line */
- vt_sel(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'J':/*selective erase in display*/
- vt_sed(svsp);
- svsp->state = STATE_INIT;
- break;
-
- default:
- svsp->state = STATE_INIT;
- break;
-
- }
- break;
-
- case STATE_CSI:
- switch(ch)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': /* parameters */
- svsp->parms[svsp->parmi] *= 10;
- svsp->parms[svsp->parmi] +=
- (ch -'0');
- break;
-
- case ';': /* next parameter */
- svsp->parmi =
- (svsp->parmi+1 < MAXPARMS) ?
- svsp->parmi+1 : svsp->parmi;
- break;
-
- case '?': /* ESC [ ? family */
- svsp->state = STATE_CSIQM;
- break;
-
- case '@': /* insert char */
- vt_ic(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case '"': /* select char attribute */
- svsp->state = STATE_SCA;
- break;
-
- case '\'': /* for DECELR/DECSLE */
-/* XXX */ /* another state needed -hm */
- break;
-
- case '!': /* soft terminal reset */
- svsp->state = STATE_STR;
- break;
-
- case 'A': /* cursor up */
- vt_cuu(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'B': /* cursor down */
- vt_cud(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'C': /* cursor forward */
- vt_cuf(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'D': /* cursor backward */
- vt_cub(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'H': /* direct cursor addressing*/
- vt_curadr(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'J': /* erase screen */
- vt_clreos(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'K': /* erase line */
- vt_clreol(svsp);
- svsp->state = STATE_INIT;
- if (svsp->scr_offset > 0 &&
- svsp == vsp)
- svsp->scr_offset--;
- break;
-
- case 'L': /* insert line */
- vt_il(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'M': /* delete line */
- vt_dl(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'P': /* delete character */
- vt_dch(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'S': /* scroll up */
- vt_su(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'T': /* scroll down */
- vt_sd(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'X': /* erase character */
- vt_ech(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'c': /* device attributes */
- vt_da(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'f': /* direct cursor addressing*/
- vt_curadr(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'g': /* clear tabs */
- vt_clrtab(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'h': /* set mode(s) */
- vt_set_ansi(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'i': /* media copy */
- vt_mc(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'l': /* reset mode(s) */
- vt_reset_ansi(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'm': /* select graphic rendition*/
- vt_sgr(svsp);
- if (!kernel)
- attrib = svsp->c_attr;
- svsp->state = STATE_INIT;
- break;
-
- case 'n': /* reports */
- vt_dsr(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'r': /* set scrolling region */
- vt_stbm(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'x': /*request/report parameters*/
- vt_reqtparm(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'y': /* invoke selftest(s) */
- vt_tst(svsp);
- svsp->state = STATE_INIT;
- break;
-
- case 'z': /* DECELR, ignored */
- case '{': /* DECSLE, ignored */
- svsp->state = STATE_INIT;
- break;
-
- default:
- svsp->state = STATE_INIT;
- break;
- }
- break;
-
- case STATE_AMPSND:
- hp_entry(ch,svsp);
- break;
-
- case STATE_DCS:
- vt_dcsentry(ch,svsp);
- break;
-
- case STATE_SCA:
- switch(ch)
- {
- case 'q':
- vt_sca(svsp);
- svsp->state = STATE_INIT;
- break;
-
- default:
- svsp->state = STATE_INIT;
- break;
- }
- break;
-
- case STATE_STR:
- switch(ch)
- {
- case 'p': /* soft terminal reset */
- vt_str(svsp);
- if (!kernel)
- attrib = svsp->c_attr;
- svsp->state = STATE_INIT;
- break;
-
- default:
- svsp->state = STATE_INIT;
- break;
- }
- break;
-
- default: /* failsafe */
- svsp->state = STATE_INIT;
- break;
-
- }
- }
-
- svsp->row = svsp->cur_offset / svsp->maxcol; /* current row update */
-
- /* take care of last character on line behaviour */
-
- if(svsp->lastchar && (svsp->col < ((svsp->maxcol)-1)))
- svsp->lastchar = 0;
- }
-
- if(svsp == vsp) /* on current displayed page ? */
- cursor_pos_valid = 1; /* position is valid now */
-}
-
-/*---------------------------------------------------------------------------*
- * this is the absolute cold initialization of the emulator
- *---------------------------------------------------------------------------*/
-static void
-vt_coldinit(void)
-{
- u_short volatile *cp;
- u_short was;
- int nscr, charset;
- int equipment;
- u_short *SaveCrtat;
- struct video_state *svsp;
-
- Crtat = (u_short *)MONO_BUF; /* XXX assume static relocation works */
- SaveCrtat = Crtat;
- cp = Crtat + (CGA_BUF-MONO_BUF)/CHR;
-
- do_initialization = 0; /* reset init necessary flag */
-
- /* get the equipment byte from the RTC chip */
-
- equipment = ((rtcin(RTC_EQUIPMENT)) >> 4) & 0x03;
-
- switch(equipment)
- {
- case EQ_EGAVGA:
-
- /* set memory start to CGA == B8000 */
-
- Crtat = Crtat + (CGA_BUF-MONO_BUF)/CHR;
-
- /* find out, what monitor is connected */
-
- was = *cp;
- *cp = (u_short) 0xA55A;
- if (*cp != 0xA55A)
- {
- addr_6845 = MONO_BASE;
- color = 0;
- }
- else
- {
- *cp = was;
- addr_6845 = CGA_BASE;
- color = 1;
- }
-
- if(vga_test()) /* EGA or VGA ? */
- {
- adaptor_type = VGA_ADAPTOR;
- totalfonts = 8;
-
- if(color == 0)
- {
- mda2egaorvga();
- Crtat = SaveCrtat; /* mono start */
- }
-
- /* find out which chipset we are running on */
- vga_type = vga_chipset();
- }
- else
- {
- adaptor_type = EGA_ADAPTOR;
- totalfonts = 4;
-
- if(color == 0)
- {
- mda2egaorvga();
- Crtat = SaveCrtat; /* mono start */
- }
- }
-
- /* decouple ega/vga charsets and intensity */
- set_2ndcharset();
-
- break;
-
- case EQ_40COLOR: /* XXX should panic in 40 col mode ! */
- case EQ_80COLOR:
- Crtat = Crtat + (CGA_BUF-MONO_BUF)/CHR;
- addr_6845 = CGA_BASE;
- adaptor_type = CGA_ADAPTOR;
- color = 1;
- totalfonts = 0;
- break;
-
- case EQ_80MONO:
- addr_6845 = MONO_BASE;
- adaptor_type = MDA_ADAPTOR;
- color = 0;
- totalfonts = 0;
- break;
- }
-
- /* establish default colors */
-
- if(color)
- {
- kern_attr = (COLOR_KERNEL_FG | COLOR_KERNEL_BG) << 8;
- user_attr = sgr_tab_color[0] << 8;
- }
- else
- {
- kern_attr = (MONO_KERNEL_FG | MONO_KERNEL_BG) << 8;
- if(adaptor_type == MDA_ADAPTOR)
- user_attr = sgr_tab_imono[0] << 8;
- else
- user_attr = sgr_tab_mono[0] << 8;
- }
-
- totalscreens = 1; /* for now until malloced */
-
- for(nscr = 0, svsp = vs; nscr < PCVT_NSCREENS; nscr++, svsp++)
- {
- svsp->Crtat = Crtat; /* all same until malloc'ed */
- svsp->Memory = Crtat; /* until malloc'ed */
- svsp->Scrollback = 0; /* until malloc'ed */
- svsp->scr_offset = 0; /* scrollback offset (lines) */
- svsp->scrolling = 0; /* current scrollback page */
- svsp->cur_offset = 0; /* cursor offset */
- svsp->c_attr = user_attr; /* non-kernel attributes */
- svsp->bell_on = 1; /* enable bell */
- svsp->sevenbit = 0; /* set to 8-bit path */
- svsp->dis_fnc = 0; /* disable display functions */
- svsp->transparent = 0; /* disable internal tranparency */
- svsp->lastchar = 0; /* VTxxx behaviour of last */
- /* char on line */
- svsp->report_chars = NULL; /* VTxxx reports init */
- svsp->report_count = 0; /* VTxxx reports init */
- svsp->state = STATE_INIT; /* main state machine init */
- svsp->m_awm = 1; /* enable auto wrap mode */
- svsp->m_om = 0; /* origin mode = absolute */
- svsp->sc_flag = 0; /* init saved cursor flag */
- svsp->which_fkl = SYS_FKL; /* display system fkey-labels */
- svsp->labels_on = 1; /* if in HP-mode, display */
- /* fkey-labels */
- svsp->attribute = 0; /* HP mode init */
- svsp->key = 0; /* HP mode init */
- svsp->l_len = 0; /* HP mode init */
- svsp->s_len = 0; /* HP mode init */
- svsp->m_len = 0; /* HP mode init */
- svsp->i = 0; /* HP mode init */
- svsp->vt_pure_mode = M_PUREVT; /* initial mode: pure VT220*/
- svsp->vga_charset = CH_SET0; /* use bios default charset */
-
-#if PCVT_24LINESDEF /* true compatibility */
- svsp->screen_rows = 24; /* default 24 rows on screen */
-#else /* full screen */
- svsp->screen_rows = 25; /* default 25 rows on screen */
-#endif /* PCVT_24LINESDEF */
-
- svsp->screen_rowsize = 25; /* default 25 rows on screen */
- svsp->max_off = svsp->screen_rowsize * SCROLLBACK_PAGES - 1;
- svsp->scrr_beg = 0; /* scrolling region begin row*/
- svsp->scrr_len = svsp->screen_rows; /* scrolling region length*/
- svsp->scrr_end = svsp->scrr_len - 1;/* scrolling region end */
-
- if(nscr == 0)
- {
- if(adaptor_type == VGA_ADAPTOR)
- {
- /* only VGA can read cursor shape registers ! */
- /* Preserve initial cursor shape */
- outb(addr_6845,CRTC_CURSTART);
- svsp->cursor_start = inb(addr_6845+1);
- outb(addr_6845,CRTC_CUREND);
- svsp->cursor_end = inb(addr_6845+1);
- }
- else
- {
- /* MDA,HGC,CGA,EGA registers are write-only */
- svsp->cursor_start = 0;
- svsp->cursor_end = 15;
- }
- }
- else
- {
- svsp->cursor_start = vs[0].cursor_start;
- svsp->cursor_end = vs[0].cursor_end;
- }
-
-#ifdef FAT_CURSOR
- svsp->cursor_start = 0;
- svsp->cursor_end = 15; /* cursor lower scanline */
-#endif
-
- svsp->cursor_on = 1; /* cursor is on */
- svsp->ckm = 1; /* normal cursor key mode */
- svsp->irm = 0; /* replace mode */
- svsp->lnm = 0; /* CR only */
- svsp->selchar = 0; /* selective attribute off */
- svsp->G0 = csd_ascii; /* G0 = ascii */
- svsp->G1 = csd_ascii; /* G1 = ascii */
- svsp->G2 = csd_supplemental; /* G2 = supplemental */
- svsp->G3 = csd_supplemental; /* G3 = supplemental */
- svsp->GL = &svsp->G0; /* GL = G0 */
- svsp->GR = &svsp->G2; /* GR = G2 */
- svsp->whichi = 0; /* char set designate init */
- svsp->which[0] = '\0'; /* char set designate init */
- svsp->hp_state = SHP_INIT; /* init HP mode state machine*/
- svsp->dcs_state = DCS_INIT; /* init DCS mode state machine*/
- svsp->ss = 0; /* init single shift 2/3 */
- svsp->Gs = NULL; /* Gs single shift 2/3 */
- svsp->maxcol = SCR_COL80; /* 80 columns now (MUST!!!) */
- svsp->wd132col = 0; /* help good old WD .. */
- svsp->scroll_lock = 0; /* scrollock off */
-
-#if PCVT_INHIBIT_NUMLOCK
- svsp->num_lock = 0; /* numlock off */
-#else
- svsp->num_lock = 1; /* numlock on */
-#endif
-
- svsp->caps_lock = 0; /* capslock off */
- svsp->shift_lock = 0; /* shiftlock off */
-
-#if PCVT_24LINESDEF /* true compatibility */
- svsp->force24 = 1; /* force 24 lines */
-#else /* maximum screen size */
- svsp->force24 = 0; /* no 24 lines force yet */
-#endif /* PCVT_24LINESDEF */
-
- vt_clearudk(svsp); /* clear vt220 udk's */
-
- vt_str(svsp); /* init emulator */
-
- if(nscr == 0)
- {
- /*
- * Preserve data on the startup screen that
- * precedes the cursor position. Leave the
- * cursor where it was found.
- */
- unsigned cursorat;
- int filllen;
-
- /* CRTC regs 0x0e and 0x0f are r/w everywhere */
-
- outb(addr_6845, CRTC_CURSORH);
- cursorat = inb(addr_6845+1) << 8;
- outb(addr_6845, CRTC_CURSORL);
- cursorat |= inb(addr_6845+1);
-
- /*
- * Reject cursors that are more than one row off a
- * 25-row screen. syscons sets the cursor offset
- * to 0xffff. The scroll up fixup fails for this
- * because the assignment to svsp->row overflows
- * and perhaps for other reasons.
- */
- if (cursorat > 25 * svsp->maxcol)
- cursorat = 25 * svsp->maxcol;
-
- svsp->cur_offset = cursorat;
- svsp->row = cursorat / svsp->maxcol;
- svsp->col = cursorat % svsp->maxcol;
-
- if (svsp->row >= svsp->screen_rows)
- {
-
- /*
- * Scroll up; this should only happen when
- * PCVT_24LINESDEF is set
- */
- int nscroll =
- svsp->row + 1
- - svsp->screen_rows;
- bcopy (svsp->Crtat
- + nscroll*svsp->maxcol,
- svsp->Crtat,
- svsp->screen_rows
- * svsp->maxcol * CHR);
- svsp->row -= nscroll;
- svsp->cur_offset -=
- nscroll * svsp->maxcol;
- }
-
- filllen = (svsp->maxcol * svsp->screen_rowsize)
- - svsp->cur_offset;
-
- if (filllen > 0)
- fillw(user_attr | ' ',
- svsp->Crtat+svsp->cur_offset,
- filllen);
- }
-
-#ifdef XSERVER
- svsp->smode.mode = VT_AUTO;
- svsp->smode.relsig = svsp->smode.acqsig =
- svsp->smode.frsig = 0;
- svsp->proc = 0;
- svsp->pid = svsp->vt_status = 0;
-#endif /* XSERVER */
-
- }
-
- for(charset = 0;charset < NVGAFONTS;charset++)
- {
- vgacs[charset].loaded = 0; /* not populated yet */
- vgacs[charset].secondloaded = 0; /* not populated yet */
-
- switch(adaptor_type)
- {
- case VGA_ADAPTOR:
-
- /*
- * for a VGA, do not assume any
- * constant - instead, read the actual
- * values. This avoid problems with
- * LCD displays that apparently happen
- * to use font matrices up to 19
- * scan lines and 475 scan lines
- * total in order to make use of the
- * whole screen area
- */
-
- outb(addr_6845, CRTC_VDE);
- vgacs[charset].scr_scanlines =
- inb(addr_6845 + 1);
- outb(addr_6845, CRTC_MAXROW);
- vgacs[charset].char_scanlines =
- inb(addr_6845 + 1);
- break;
-
- case EGA_ADAPTOR:
- /* 0x5D for 25 lines */
- vgacs[charset].scr_scanlines = 0x5D;
- /* 0x4D for 25 lines */
- vgacs[charset].char_scanlines = 0x4D;
- break;
-
- case CGA_ADAPTOR:
- case MDA_ADAPTOR:
- default:
- /* These shouldn't be used for CGA/MDA */
- vgacs[charset].scr_scanlines = 0;
- vgacs[charset].char_scanlines = 0;
- break;
- }
- vgacs[charset].screen_size = SIZ_25ROWS; /* set screen size */
- }
-
- vgacs[0].loaded = 1; /* The BIOS loaded this at boot */
-
- /* set cursor for first screen */
-
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- outb(addr_6845+1,vs[0].cursor_start);
- outb(addr_6845,CRTC_CUREND); /* cursor end reg */
- outb(addr_6845+1,vs[0].cursor_end);
-
- /* this is to satisfy ddb */
-
- if(!keyboard_is_initialized)
- kbd_code_init1();
-}
-
-/*---------------------------------------------------------------------------*
- * get kernel memory for virtual screens
- *
- * CAUTION: depends on "can_do_132col" being set properly, or
- * depends on vga_type() being run before calling this !!!
- *
- *---------------------------------------------------------------------------*/
-void
-vt_coldmalloc(void)
-{
- int nscr;
- int screen_max_size;
-
- /* we need to initialize in case we are not the console */
-
- if(do_initialization)
- vt_coldinit();
-
- switch(adaptor_type)
- {
- default:
- case MDA_ADAPTOR:
- case CGA_ADAPTOR:
- screen_max_size = MAXROW_MDACGA * MAXCOL_MDACGA * CHR;
- break;
-
- case EGA_ADAPTOR:
- screen_max_size = MAXROW_EGA * MAXCOL_EGA * CHR;
- break;
-
- case VGA_ADAPTOR:
- if(can_do_132col)
- screen_max_size =
- MAXROW_VGA * MAXCOL_SVGA * CHR;
- else
- screen_max_size =
- MAXROW_VGA * MAXCOL_VGA * CHR;
- }
-
- for(nscr = 0; nscr < PCVT_NSCREENS; nscr++)
- {
- if((vs[nscr].Memory = (u_short *)malloc(screen_max_size * 2,
- M_DEVBUF, M_WAITOK)) == NULL)
- {
- printf("pcvt: screen memory malloc failed, "
- "NSCREEN=%d, nscr=%d\n",
- PCVT_NSCREENS, nscr);
- break;
- }
-
- if(nscr != 0)
- {
- vs[nscr].Crtat = vs[nscr].Memory;
- fillw(user_attr | ' ',
- vs[nscr].Crtat,
- vs[nscr].maxcol * vs[nscr].screen_rowsize);
- totalscreens++;
- }
-
- vs[nscr].scrollback_pages = SCROLLBACK_PAGES;
-
- reallocate_scrollbuffer(&(vs[nscr]), vs[nscr].scrollback_pages);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * check if we must scroll up screen
- *---------------------------------------------------------------------------*/
-static void
-check_scroll(struct video_state *svsp)
-{
- if(!svsp->abs_write)
- {
- /* we write within scroll region */
-
- if(svsp->cur_offset >= ((svsp->scrr_end + 1) * svsp->maxcol))
- {
- /* the following piece of code has to be protected */
- /* from trying to switch to another virtual screen */
- /* while being in there ... */
-
- critical_scroll = 1; /* flag protect ON */
-
- roll_up(svsp, 1); /* rolling up .. */
-
- svsp->cur_offset -= svsp->maxcol;/* update position */
-
- if(switch_page != -1) /* someone wanted to switch ? */
- {
- vgapage(switch_page); /* yes, then switch ! */
- switch_page = -1; /* reset switch flag */
- }
-
- critical_scroll = 0; /* flag protect OFF */
- }
- }
- else
- {
- /* clip, if outside of screen */
-
- if (svsp->cur_offset >= svsp->screen_rows * svsp->maxcol)
- svsp->cur_offset -= svsp->maxcol;
- }
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-static int
-check_scrollback(struct video_state *svsp)
-{
- /* still waiting for scrollback memory or not on current page */
- if (!svsp->Scrollback || svsp != vsp)
- return 0;
-
- /* remove first line of scrollback buffer to make room for new line */
- if (svsp->scr_offset == svsp->max_off)
- {
- bcopy(svsp->Scrollback + svsp->maxcol, svsp->Scrollback,
- svsp->maxcol * svsp->max_off * CHR);
- }
- else
- {
- /* still room left, increase scroll offset (lines) */
- svsp->scr_offset++;
- }
- return 1;
-}
-
-/*---------------------------------------------------------------------------*
- * write to one user function key label
- *---------------------------------------------------------------------------*/
-static void
-writefkl(int num, u_char *string, struct video_state *svsp)
-{
- if((num < 0) || (num > 7)) /* range ok ? */
- return;
-
- strncpy(svsp->ufkl[num], string, 16); /* save string in static array */
-
- if(svsp->which_fkl == USR_FKL)
- wrfkl(num,string,svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * write to one system function key label
- *---------------------------------------------------------------------------*/
-void
-swritefkl(int num, u_char *string, struct video_state *svsp)
-{
- if((num < 0) || (num > 7)) /* range ok ? */
- return;
-
- strncpy(svsp->sfkl[num], string, 16); /* save string in static array */
-
- if(svsp->which_fkl == SYS_FKL)
- wrfkl(num,string,svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * write function key label onto screen
- *---------------------------------------------------------------------------*/
-static void
-wrfkl(int num, u_char *string, struct video_state *svsp)
-{
- register u_short *p;
- register u_short *p1;
- register int cnt = 0;
-
- if(!svsp->labels_on || (svsp->vt_pure_mode == M_PUREVT))
- return;
-
- p = (svsp->Crtat
- + (svsp->screen_rows * svsp->maxcol)); /* screen_rows+1 line */
-
- if(svsp->maxcol == SCR_COL80)
- {
- if(num < 4) /* labels 1 .. 4 */
- p += (num * LABEL_LEN);
- else /* labels 5 .. 8 */
- p += ((num * LABEL_LEN) + LABEL_MID + 1);
- }
- else
- {
- if(num < 4) /* labels 1 .. 4 */
- p += (num * (LABEL_LEN + 6));
- else /* labels 5 .. 8 */
- p += ((num * (LABEL_LEN + 6)) + LABEL_MID + 11);
-
- }
- p1 = p + svsp->maxcol; /* second label line */
-
- while((*string != '\0') && (cnt < 8))
- {
- *p = ((0x70 << 8) + (*string & 0xff));
- p++;
- string++;
- cnt++;
- }
- while(cnt < 8)
- {
- *p = ((0x70 << 8) + ' ');
- p++;
- cnt++;
- }
-
- while((*string != '\0') && (cnt < 16))
- {
- *p1 = ((0x70 << 8) + (*string & 0xff));
- p1++;
- string++;
- cnt++;
- }
- while(cnt < 16)
- {
- *p1 = ((0x70 << 8) + ' ');
- p1++;
- cnt++;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * remove (=blank) function key labels, row/col and status line
- *---------------------------------------------------------------------------*/
-void
-fkl_off(struct video_state *svsp)
-{
- register u_short *p;
- register int num;
- register int size;
-
- svsp->labels_on = 0;
-
- if((vgacs[svsp->vga_charset].screen_size==SIZ_28ROWS) && svsp->force24)
- size = 4;
- else
- size = 3;
-
- p = (svsp->Crtat + (svsp->screen_rows * svsp->maxcol));
-
- for(num = 0; num < (size * svsp->maxcol); num++)
- *p++ = ' ';
-}
-
-/*---------------------------------------------------------------------------*
- * (re-) display function key labels, row/col and status line
- *---------------------------------------------------------------------------*/
-void
-fkl_on(struct video_state *svsp)
-{
- svsp->labels_on = 1;
-
- if(svsp->which_fkl == SYS_FKL)
- sw_sfkl(svsp);
- else if(svsp->which_fkl == USR_FKL)
- sw_ufkl(svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * set emulation mode, switch between pure VTxxx mode and HP/VTxxx mode
- *---------------------------------------------------------------------------*/
-void
-set_emulation_mode(struct video_state *svsp, int mode)
-{
- if(svsp->vt_pure_mode == mode)
- return;
-
- clr_parms(svsp); /* escape parameter init */
- svsp->state = STATE_INIT; /* initial state */
- svsp->scrr_beg = 0; /* start of scrolling region */
- svsp->sc_flag = 0; /* invalidate saved cursor position */
- svsp->transparent = 0; /* disable control code processing */
-
- if(mode == M_HPVT) /* vt-pure -> hp/vt-mode */
- {
- svsp->screen_rows = svsp->screen_rowsize - 3;
- if (svsp->force24 && svsp->screen_rows == 25)
- svsp->screen_rows = 24;
-
- if (svsp->row >= svsp->screen_rows) {
- /* Scroll up */
- int nscroll = svsp->row + 1 - svsp->screen_rows;
- bcopy (svsp->Crtat + nscroll * svsp->maxcol,
- svsp->Crtat,
- svsp->screen_rows * svsp->maxcol * CHR);
- svsp->row -= nscroll;
- svsp->cur_offset -= nscroll * svsp->maxcol;
- }
-
- svsp->vt_pure_mode = M_HPVT;
-
- if (svsp->vs_tty)
- svsp->vs_tty->t_winsize.ws_row = svsp->screen_rows;
-
- svsp->scrr_len = svsp->screen_rows;
- svsp->scrr_end = svsp->scrr_len - 1;
-
- update_hp(svsp);
- }
- else if(mode == M_PUREVT) /* hp/vt-mode -> vt-pure */
- {
- fillw(user_attr | ' ',
- svsp->Crtat + svsp->screen_rows * svsp->maxcol,
- (svsp->screen_rowsize - svsp->screen_rows)
- * svsp->maxcol);
-
- svsp->vt_pure_mode = M_PUREVT;
-
- svsp->screen_rows = svsp->screen_rowsize;
- if (svsp->force24 && svsp->screen_rows == 25)
- svsp->screen_rows = 24;
-
- if (svsp->vs_tty)
- svsp->vs_tty->t_winsize.ws_row = svsp->screen_rows;
-
- svsp->scrr_len = svsp->screen_rows;
- svsp->scrr_end = svsp->scrr_len - 1;
- }
-
- if (svsp->vs_tty && svsp->vs_tty->t_pgrp) {
- PGRP_LOCK(svsp->vs_tty->t_pgrp);
- pgsignal(svsp->vs_tty->t_pgrp, SIGWINCH, 1);
- PGRP_UNLOCK(svsp->vs_tty->t_pgrp);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * initialize user function key labels
- *---------------------------------------------------------------------------*/
-void
-init_ufkl(struct video_state *svsp)
-{
- writefkl(0,(u_char *)" f1",svsp); /* init fkey labels */
- writefkl(1,(u_char *)" f2",svsp);
- writefkl(2,(u_char *)" f3",svsp);
- writefkl(3,(u_char *)" f4",svsp);
- writefkl(4,(u_char *)" f5",svsp);
- writefkl(5,(u_char *)" f6",svsp);
- writefkl(6,(u_char *)" f7",svsp);
- writefkl(7,(u_char *)" f8",svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * initialize system user function key labels
- *---------------------------------------------------------------------------*/
-void
-init_sfkl(struct video_state *svsp)
-{
- /* 1234567812345678 */
- if(can_do_132col)
- /* 1234567812345678 */
- swritefkl(0,(u_char *)"132 COLUMNS ",svsp);
- else
- swritefkl(0,(u_char *)" ",svsp);
-
- /* 1234567812345678 */
- swritefkl(1,(u_char *)"SOFT-RSTTERMINAL",svsp);
-
- if(svsp->force24)
- swritefkl(2,(u_char *)"FORCE24 ENABLE *",svsp);
- else
- swritefkl(2,(u_char *)"FORCE24 ENABLE ",svsp);
-
-#if PCVT_SHOWKEYS /* 1234567812345678 */
- if(svsp == &vs[0])
- swritefkl(3,(u_char *)"KEYBSCANDISPLAY ",svsp);
- else
- swritefkl(3,(u_char *)" ",svsp);
-#else
- swritefkl(3,(u_char *)" ",svsp);
-#endif /* PCVT_SHOWKEYS */
-
- /* 1234567812345678 */
- if(svsp->bell_on)
- swritefkl(4,(u_char *)"BELL ENABLE *",svsp);
- else
- swritefkl(4,(u_char *)"BELL ENABLE ",svsp);
-
- if(svsp->sevenbit)
- swritefkl(5,(u_char *)"8-BIT ENABLE ",svsp);
- else
- swritefkl(5,(u_char *)"8-BIT ENABLE *",svsp);
-
- swritefkl(6,(u_char *)"DISPLAY FUNCTNS ",svsp);
-
- swritefkl(7,(u_char *)"AUTOWRAPENABLE *",svsp);
- /* 1234567812345678 */
-}
-
-/*---------------------------------------------------------------------------*
- * switch display to user function key labels
- *---------------------------------------------------------------------------*/
-void
-sw_ufkl(struct video_state *svsp)
-{
- int i;
- svsp->which_fkl = USR_FKL;
- for(i = 0; i < 8; i++)
- wrfkl(i,svsp->ufkl[i],svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * switch display to system function key labels
- *---------------------------------------------------------------------------*/
-void
-sw_sfkl(struct video_state *svsp)
-{
- int i;
- svsp->which_fkl = SYS_FKL;
- for(i = 0; i < 8; i++)
- wrfkl(i,svsp->sfkl[i],svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * toggle force 24 lines
- *---------------------------------------------------------------------------*/
-void
-toggl_24l(struct video_state *svsp)
-{
- if(svsp->which_fkl == SYS_FKL)
- {
- if(svsp->force24)
- {
- svsp->force24 = 0;
- swritefkl(2,(u_char *)"FORCE24 ENABLE ",svsp);
- }
- else
- {
- svsp->force24 = 1;
- swritefkl(2,(u_char *)"FORCE24 ENABLE *",svsp);
- }
- set_screen_size(svsp, vgacs[(svsp->vga_charset)].screen_size);
- }
-}
-
-#if PCVT_SHOWKEYS
-/*---------------------------------------------------------------------------*
- * toggle keyboard scancode display
- *---------------------------------------------------------------------------*/
-void
-toggl_kbddbg(struct video_state *svsp)
-{
- if((svsp->which_fkl == SYS_FKL) && (svsp == &vs[0]))
- {
- if(keyboard_show)
- {
- keyboard_show = 0;
- swritefkl(3,(u_char *)"KEYBSCANDISPLAY ",svsp);
- }
- else
- {
- keyboard_show = 1;
- swritefkl(3,(u_char *)"KEYBSCANDISPLAY*",svsp);
- }
- }
-}
-#endif /* PCVT_SHOWKEYS */
-
-/*---------------------------------------------------------------------------*
- * toggle display functions
- *---------------------------------------------------------------------------*/
-void
-toggl_dspf(struct video_state *svsp)
-{
- if(svsp->which_fkl == SYS_FKL)
- {
- if(svsp->dis_fnc)
- {
- svsp->dis_fnc = 0;
- swritefkl(6,(u_char *)"DISPLAY FUNCTNS ",svsp);
- }
- else
- {
- svsp->dis_fnc = 1;
- swritefkl(6,(u_char *)"DISPLAY FUNCTNS*",svsp);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * auto wrap on/off
- *---------------------------------------------------------------------------*/
-void
-toggl_awm(struct video_state *svsp)
-{
- if(svsp->which_fkl == SYS_FKL)
- {
- if(svsp->m_awm)
- {
- svsp->m_awm = 0;
- swritefkl(7,(u_char *)"AUTOWRAPENABLE ",svsp);
- }
- else
- {
- svsp->m_awm = 1;
- swritefkl(7,(u_char *)"AUTOWRAPENABLE *",svsp);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * bell on/off
- *---------------------------------------------------------------------------*/
-void
-toggl_bell(struct video_state *svsp)
-{
- if(svsp->which_fkl == SYS_FKL)
- {
- if(svsp->bell_on)
- {
- svsp->bell_on = 0;
- swritefkl(4,(u_char *)"BELL ENABLE ",svsp);
- }
- else
- {
- svsp->bell_on = 1;
- swritefkl(4,(u_char *)"BELL ENABLE *",svsp);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * 7/8 bit usage
- *---------------------------------------------------------------------------*/
-void
-toggl_sevenbit(struct video_state *svsp)
-{
- if(svsp->which_fkl == SYS_FKL)
- {
- if(svsp->sevenbit)
- {
- svsp->sevenbit = 0;
- swritefkl(5,(u_char *)"8-BIT ENABLE *",svsp);
- }
- else
- {
- svsp->sevenbit = 1;
- swritefkl(5,(u_char *)"8-BIT ENABLE ",svsp);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * 80 / 132 columns
- *---------------------------------------------------------------------------*/
-void
-toggl_columns(struct video_state *svsp)
-{
- if(svsp->which_fkl == SYS_FKL)
- {
- if(svsp->maxcol == SCR_COL132)
- {
- if(vt_col(svsp, SCR_COL80))
- svsp->maxcol = 80;
- }
- else
- {
- if(vt_col(svsp, SCR_COL132))
- svsp->maxcol = 132;
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * toggle vga 80/132 column operation
- *---------------------------------------------------------------------------*/
-int
-vt_col(struct video_state *svsp, int cols)
-{
- if(vga_col(svsp, cols) == 0)
- return(0);
-
- if(cols == SCR_COL80)
- swritefkl(0,(u_char *)"132 COLUMNS ",svsp);
- else
- swritefkl(0,(u_char *)"132 COLUMNS*",svsp);
-
- fillw(user_attr | ' ',
- svsp->Crtat,
- svsp->maxcol * svsp->screen_rowsize);
-
- clr_parms(svsp); /* escape parameter init */
- svsp->state = STATE_INIT; /* initial state */
- svsp->col = 0; /* init row */
- svsp->row = 0; /* init col */
- svsp->cur_offset = 0; /* cursor offset init */
- svsp->sc_flag = 0; /* invalidate saved cursor position */
- svsp->scrr_beg = 0; /* reset scrolling region */
- svsp->scrr_len = svsp->screen_rows; /*reset scrolling region legnth */
- svsp->scrr_end = svsp->scrr_len - 1;
- svsp->transparent = 0; /* disable control code processing */
- svsp->selchar = 0; /* selective attr off */
- vt_initsel(svsp); /* re-init sel attr */
-
- update_hp(svsp); /* update labels, row/col, page ind */
-
- /* Update winsize struct to reflect screen size */
-
- if(svsp->vs_tty)
- {
- svsp->vs_tty->t_winsize.ws_row = svsp->screen_rows;
- svsp->vs_tty->t_winsize.ws_col = svsp->maxcol;
-
- svsp->vs_tty->t_winsize.ws_xpixel =
- (cols == SCR_COL80)? 720: 1056;
- svsp->vs_tty->t_winsize.ws_ypixel = 400;
-
- if(svsp->vs_tty->t_pgrp) {
- PGRP_LOCK(svsp->vs_tty->t_pgrp);
- pgsignal(svsp->vs_tty->t_pgrp, SIGWINCH, 1);
- PGRP_UNLOCK(svsp->vs_tty->t_pgrp);
- }
- }
-
- reallocate_scrollbuffer(svsp, svsp->scrollback_pages);
- return(1);
-}
-
-/*---------------------------------------------------------------------------*
- * update HP stuff on screen
- *---------------------------------------------------------------------------*/
-void
-update_hp(struct video_state *svsp)
-{
- if(svsp->vt_pure_mode != M_HPVT)
- return;
-
- fillw (user_attr | ' ',
- svsp->Crtat + svsp->screen_rows * svsp->maxcol,
- (svsp->screen_rowsize - svsp->screen_rows) * svsp->maxcol);
-
- if (!svsp->labels_on)
- return;
-
- /* update fkey labels */
-
- fkl_off(svsp);
- fkl_on(svsp);
-
- if(vsp == svsp)
- {
- /* update current displayed screen indicator */
-
- *((svsp->Crtat + ((svsp->screen_rows + 2) * svsp->maxcol))
- + svsp->maxcol - 3) = user_attr | '[';
- *((svsp->Crtat + ((svsp->screen_rows + 2) * svsp->maxcol))
- + svsp->maxcol - 2) = user_attr | (current_video_screen +
- (current_video_screen < 10 ? '0' : ('a' - 10)));
- *((svsp->Crtat + ((svsp->screen_rows + 2) * svsp->maxcol))
- + svsp->maxcol - 1) = user_attr | ']';
- }
-}
-
-/*---------------------------------------------------------------------------*
- * initialize ANSI escape sequence parameter buffers
- *---------------------------------------------------------------------------*/
-void
-clr_parms(struct video_state *svsp)
-{
- register int i;
- for(i=0; i < MAXPARMS; i++)
- svsp->parms[i] = 0;
- svsp->parmi = 0;
-}
-
-
-/*---------------------------------------------------------------------------*
- *
- * partial HP 2392 ANSI mode Emulator
- * ==================================
- *
- * this part takes over the emulation of some escape sequences
- * needed to handle the function key labels
- *
- * They are modeled after the corresponding escape sequences
- * introduced with the HP2392 terminals from Hewlett-Packard.
- *
- * see:
- * "HP2392A, Display Terminal Reference Manual",
- * HP Manual Part Number 02390-90001
- * and:
- * Reference Manual Supplement
- * "2392A Display Terminal Option 049, ANSI Operation"
- * HP Manual Part Number 02390-90023EN
- *
- *---------------------------------------------------------------------------*/
-
-static void
-hp_entry(int ch, struct video_state *svsp)
-{
- switch(svsp->hp_state)
- {
- case SHP_INIT:
- switch(ch)
- {
- case 'f':
- svsp->hp_state = SHP_AND_F;
- svsp->attribute = 0;
- svsp->key = 0;
- svsp->l_len = 0;
- svsp->s_len = 0;
- svsp->i = 0;
- break;
-
- case 'j':
- svsp->m_len = 0;
- svsp->hp_state = SHP_AND_J;
- break;
-
- case 's':
- svsp->hp_state = SHP_AND_ETE;
- break;
-
- default:
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- break;
- }
- break;
-
- case SHP_AND_F:
- if((ch >= '0') && (ch <= '8'))
- {
- svsp->attribute = ch;
- svsp->hp_state = SHP_AND_Fa;
- }
- else
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- }
- break;
-
- case SHP_AND_Fa:
- if(ch == 'a')
- svsp->hp_state = SHP_AND_Fak;
- else if(ch == 'k')
- {
- svsp->key = svsp->attribute;
- svsp->hp_state = SHP_AND_Fakd;
- }
- else
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- }
- break;
-
- case SHP_AND_Fak:
- if((ch >= '1') && (ch <= '8'))
- {
- svsp->key = ch;
- svsp->hp_state = SHP_AND_Fak1;
- }
- else
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- }
- break;
-
- case SHP_AND_Fak1:
- if(ch == 'k')
- svsp->hp_state = SHP_AND_Fakd;
- else
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- }
- break;
-
- case SHP_AND_Fakd:
- if(svsp->l_len > 16)
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- }
- else if(ch >= '0' && ch <= '9')
- {
- svsp->l_len *= 10;
- svsp->l_len += (ch -'0');
- }
- else if(ch == 'd')
- svsp->hp_state = SHP_AND_FakdL;
- else
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- }
- break;
-
- case SHP_AND_FakdL:
- if(svsp->s_len > 80)
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- }
- else if(ch >= '0' && ch <= '9')
- {
- svsp->s_len *= 10;
- svsp->s_len += (ch -'0');
- }
- else if(ch == 'L')
- {
- svsp->hp_state = SHP_AND_FakdLl;
- svsp->transparent = 1;
- }
- else
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- }
- break;
-
- case SHP_AND_FakdLl:
- svsp->l_buf[svsp->i] = ch;
- if(svsp->i >= svsp->l_len-1)
- {
- svsp->hp_state = SHP_AND_FakdLls;
- svsp->i = 0;
- if(svsp->s_len == 0)
- {
- svsp->state = STATE_INIT;
- svsp->hp_state = SHP_INIT;
- svsp->transparent = 0;
- svsp->i = 0;
- svsp->l_buf[svsp->l_len] = '\0';
- svsp->s_buf[svsp->s_len] = '\0';
- writefkl((svsp->key - '0' -1),
- svsp->l_buf, svsp);
- }
- }
- else
- svsp->i++;
- break;
-
- case SHP_AND_FakdLls:
- svsp->s_buf[svsp->i] = ch;
- if(svsp->i >= svsp->s_len-1)
- {
- svsp->state = STATE_INIT;
- svsp->hp_state = SHP_INIT;
- svsp->transparent = 0;
- svsp->i = 0;
- svsp->l_buf[svsp->l_len] = '\0';
- svsp->s_buf[svsp->s_len] = '\0';
- writefkl((svsp->key - '0' -1), svsp->l_buf,
- svsp);
- }
- else
- svsp->i++;
- break;
-
- case SHP_AND_J:
- switch(ch)
- {
- case '@': /* enable user keys, remove */
- /* all labels & status from */
- /* screen */
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- fkl_off(svsp);
- break;
-
- case 'A': /* enable & display "modes" */
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- fkl_on(svsp);
- sw_sfkl(svsp);
- break;
-
- case 'B': /* enable & display "user" */
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- fkl_on(svsp);
- sw_ufkl(svsp);
- break;
-
- case 'C': /* remove (clear) status line*/
- /* and restore current labels*/
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- fkl_on(svsp);
- break;
-
- case 'R': /* enable usr/menu keys */
- /* and fkey label modes */
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- break;
-
- case 'S': /* disable usr/menu keys */
- /* and fkey label modes */
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- break;
-
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': /* parameters for esc & j xx L mm */
- svsp->m_len *= 10;
- svsp->m_len += (ch -'0');
- break;
-
- case 'L':
- svsp->hp_state = SHP_AND_JL;
- svsp->i = 0;
- svsp->transparent = 1;
- break;
-
- default:
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- break;
-
- }
- break;
-
-
- case SHP_AND_JL:
- svsp->m_buf[svsp->i] = ch;
- if(svsp->i >= svsp->m_len-1)
- {
- svsp->state = STATE_INIT;
- svsp->hp_state = SHP_INIT;
- svsp->transparent = 0;
- svsp->i = 0;
- svsp->m_buf[svsp->m_len] = '\0';
- /* display status line */
- /* needs to be implemented */
- /* see 2392 man, 3-14 */
-
- }
- else
- svsp->i++;
- break;
-
- case SHP_AND_ETE: /* eat chars until uppercase */
- if(ch >= '@' && ch <= 'Z')
- {
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- svsp->transparent = 0;
- }
- break;
-
- default:
- svsp->hp_state = SHP_INIT;
- svsp->state = STATE_INIT;
- svsp->transparent = 0;
- break;
- }
-}
-
-/* ------------------------- E O F ------------------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_sup.c b/sys/i386/isa/pcvt/pcvt_sup.c
deleted file mode 100644
index a62f54d..0000000
--- a/sys/i386/isa/pcvt/pcvt_sup.c
+++ /dev/null
@@ -1,2061 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
- *
- * Copyright (c) 1992, 1993 Brian Dunford-Shore and Scott Turner.
- *
- * Copyright (C) 1992, 1993 Soeren Schmidt.
- *
- * All rights reserved.
- *
- * For the sake of compatibility, portions of this code regarding the
- * X server interface are taken from Soeren Schmidt's syscons driver.
- *
- * 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, Joerg Wunsch, Scott Turner and Soeren Schmidt.
- * 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_sup.c VT220 Driver Support Routines
- * ---------------------------------------------
- *
- * Last Edit-Date: [Wed Apr 5 17:24:20 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include <i386/isa/pcvt/pcvt_hdr.h> /* global include */
-
-#include <sys/resource.h>
-
-static void vid_cursor ( struct cursorshape *data );
-static void vgasetfontattr ( struct vgafontattr *data );
-static void vgagetfontattr ( struct vgafontattr *data );
-static void vgaloadchar ( struct vgaloadchar *data );
-static void vid_getscreen ( struct screeninfo *data, struct cdev *dev );
-static void vid_setscreen ( struct screeninfo *data, struct cdev *dev );
-static void setchargen ( void );
-static void setchargen3 ( void );
-static void resetchargen ( void );
-static void vgareadpel ( struct vgapel *data, struct cdev *dev );
-static void vgawritepel ( struct vgapel *data, struct cdev *dev );
-static void vgapcvtid ( struct pcvtid *data );
-static void vgapcvtinfo ( struct pcvtinfo *data );
-
-#ifdef XSERVER
-static unsigned char * compute_charset_base ( unsigned fontset );
-#endif /* XSERVER */
-
-static struct callout_handle async_update_ch =
- CALLOUT_HANDLE_INITIALIZER(&async_update_ch);
-
-#if PCVT_SCREENSAVER
-static void scrnsv_timedout ( void *arg );
-static struct callout_handle scrnsv_timeout_ch =
- CALLOUT_HANDLE_INITIALIZER(&scrnsv_timeout_ch);
-static u_short *savedscreen = (u_short *)0; /* ptr to screen contents */
-static size_t scrnsv_size = (size_t)-1; /* size of saved image */
-
-#ifndef XSERVER
-static unsigned scrnsv_timeout = 0; /* initially off */
-static void pcvt_set_scrnsv_tmo ( int timeout );/* else declared global */
-#endif /* XSERVER */
-
-#if PCVT_PRETTYSCRNS
-static u_short *scrnsv_current = (u_short *)0; /* attention char ptr */
-static struct callout_handle scrnsv_blink_ch =
- CALLOUT_HANDLE_INITIALIZER(&scrnsv_blink_ch);
-static void scrnsv_blink ( void * );
-static u_short getrand ( void );
-#endif /* PCVT_PRETTYSCRNS */
-
-#endif /* PCVT_SCREENSAVER */
-
-
-/*---------------------------------------------------------------------------*
- * execute vga ioctls
- *---------------------------------------------------------------------------*/
-int
-vgaioctl(struct cdev *dev, int cmd, caddr_t data, int flag)
-{
- if(minor(dev) >= PCVT_NSCREENS)
- return -1;
-
-/*
- * Some of the commands are not applicable if the vt in question, or the
- * current vt is in graphics mode (i.e., the X server acts on it); they
- * will cause an EAGAIN (resource temporarily unavailable) to be returned.
- */
-
-#ifdef XSERVER
-#define is_dev_grafx vs[minor(dev)].vt_status & VT_GRAFX
-#define is_current_grafx vsp->vt_status & VT_GRAFX
-#else /* !XSERVER */
-#define is_dev_grafx 0
-#define is_current_grafx 0
-#endif /* XSERVER */
-
- switch(cmd)
- {
- case VGACURSOR:
- if(is_current_grafx)
- return EAGAIN;
- vid_cursor((struct cursorshape *)data);
- break;
-
- case VGALOADCHAR:
- if((adaptor_type != VGA_ADAPTOR) &&
- (adaptor_type != EGA_ADAPTOR))
- return -1;
- if(is_current_grafx)
- return EAGAIN;
- vgaloadchar((struct vgaloadchar *)data);
- break;
-
- case VGASETFONTATTR:
- if((adaptor_type != VGA_ADAPTOR) &&
- (adaptor_type != EGA_ADAPTOR))
- return -1;
-
-#if PCVT_SCREENSAVER
- pcvt_scrnsv_reset();
-#endif /* PCVT_SCREENSAVER */
-
- vgasetfontattr((struct vgafontattr *)data);
- break;
-
- case VGAGETFONTATTR:
- if((adaptor_type != VGA_ADAPTOR) &&
- (adaptor_type != EGA_ADAPTOR))
- return -1;
- vgagetfontattr((struct vgafontattr *)data);
- break;
-
- case VGASETSCREEN:
-#if PCVT_SCREENSAVER
- pcvt_scrnsv_reset();
-#endif /* PCVT_SCREENSAVER */
-
- vid_setscreen((struct screeninfo *)data, dev);
- break;
-
- case VGAGETSCREEN:
- vid_getscreen((struct screeninfo *)data, dev);
- break;
-
- case VGAREADPEL:
- if(adaptor_type != VGA_ADAPTOR)
- return -1;
- if(is_dev_grafx)
- return EAGAIN;
- vgareadpel((struct vgapel *)data, dev);
- break;
-
- case VGAWRITEPEL:
- if(adaptor_type != VGA_ADAPTOR)
- return -1;
- if(is_dev_grafx)
- return EAGAIN;
- vgawritepel((struct vgapel *)data, dev);
- break;
-
-#if PCVT_SCREENSAVER
- case VGASCREENSAVER:
- if(is_current_grafx)
- return EAGAIN;
- pcvt_set_scrnsv_tmo(*(int *)data);
- pcvt_scrnsv_reset();
- break;
-#endif /* PCVT_SCREENSAVER */
-
- case VGAPCVTID:
- vgapcvtid((struct pcvtid *)data);
- break;
-
- case VGAPCVTINFO:
- vgapcvtinfo((struct pcvtinfo *)data);
- break;
-
- case VGASETCOLMS:
- if(is_dev_grafx)
- return EAGAIN;
- if(*(int *)data == 80)
- (void)vt_col(&vs[minor(dev)], SCR_COL80);
- else if(*(int *)data == 132)
- {
- if(vt_col(&vs[minor(dev)], SCR_COL132) == 0)
- return EINVAL; /* not a VGA */
- }
- else
- return EINVAL;
- break;
-
-#if 0
- case SETSCROLLSIZE:
- reallocate_scrollbuffer(vsp, *(u_short *)data);
- break;
-#endif
-
- case TIOCSWINSZ:
- /* do nothing here */
- break;
-
- default:
- return -1;
- }
- return 0;
-
-#undef is_dev_grafx
-#undef is_current_grafx
-}
-
-/*---------------------------------------------------------------------------*
- * video ioctl - return driver id
- *---------------------------------------------------------------------------*/
-static void
-vgapcvtid(struct pcvtid *data)
-{
- snprintf(data->name, sizeof(data->name), "%s", PCVTIDNAME);
- data->rmajor = PCVTIDMAJOR;
- data->rminor = PCVTIDMINOR;
-}
-
-/*---------------------------------------------------------------------------*
- * video ioctl - return driver compile time options data
- *---------------------------------------------------------------------------*/
-static void
-vgapcvtinfo(struct pcvtinfo *data)
-{
- data->nscreens = PCVT_NSCREENS;
- data->scanset = PCVT_SCANSET;
- data->updatefast= PCVT_UPDATEFAST;
- data->updateslow= PCVT_UPDATESLOW;
- data->sysbeepf = PCVT_SYSBEEPF;
- data->pcburst = PCVT_PCBURST;
- data->kbd_fifo_sz = PCVT_KBD_FIFO_SZ;
-
- data->compile_opts = (0
-
-#if PCVT_VT220KEYB
- | CONF_VT220KEYB
-#endif
-#if PCVT_SCREENSAVER
- | CONF_SCREENSAVER
-#endif
-#if PCVT_PRETTYSCRNS
- | CONF_PRETTYSCRNS
-#endif
-#if PCVT_CTRL_ALT_DEL
- | CONF_CTRL_ALT_DEL
-#endif
-#if PCVT_USEKBDSEC
- | CONF_USEKBDSEC
-#endif
-#if PCVT_24LINESDEF
- | CONF_24LINESDEF
-#endif
-#if PCVT_SHOWKEYS
- | CONF_SHOWKEYS
-#endif
-#if PCVT_NULLCHARS
- | CONF_NULLCHARS
-#endif
-#if PCVT_SETCOLOR
- | CONF_SETCOLOR
-#endif
-#if PCVT_132GENERIC
- | CONF_132GENERIC
-#endif
-#ifdef XSERVER
- | CONF_XSERVER
-#endif
-#if PCVT_INHIBIT_NUMLOCK
- | CONF_INHIBIT_NUMLOCK
-#endif
-#if PCVT_META_ESC
- | CONF_META_ESC
-#endif
-#if PCVT_SLOW_INTERRUPT
- | CONF_SLOW_INTERRUPT
-#endif
-#if PCVT_NO_LED_UPDATE
- | CONF_NO_LED_UPDATE
-#endif
-#if PCVT_GREENSAVER
- | CONF_GREENSAVER
-#endif
-
- );
-}
-
-/*---------------------------------------------------------------------------*
- * video ioctl - set cursor appearence
- *---------------------------------------------------------------------------*/
-static void
-vid_cursor(struct cursorshape *data)
-{
- int screen;
- int start;
- int end;
- int line_height;
- int character_set;
-
- /* for which virtual screen, -1 for current */
- screen = data->screen_no;
-
- if(screen == -1) /* current ? */
- screen = current_video_screen;
- else if(screen > totalscreens - 1)
- screen = totalscreens - 1;
- else if(screen < 0)
- screen = 0;
-
- if(adaptor_type == VGA_ADAPTOR || adaptor_type == EGA_ADAPTOR)
- {
- character_set = vs[screen].vga_charset;
- character_set = (character_set < 0) ? 0 :
- ((character_set < totalfonts) ?
- character_set :
- totalfonts-1);
-
- line_height = vgacs[character_set].char_scanlines & 0x1F;
- }
- else if(adaptor_type == MDA_ADAPTOR)
- {
- line_height = 14;
- }
- else
- {
- line_height = 8; /* CGA */
- }
-
- start = (data->start < 0) ? 0 :
- ((data->start > line_height) ? line_height : data->start);
-
- if((vga_family == VGA_F_TRI) && (start == 0))
- start = 1;
-
- end = (data->end < 0) ? 0 :
- ((data->end > line_height) ? line_height : data->end);
-
- vs[screen].cursor_start = start;
- vs[screen].cursor_end = end;
-
- if(screen == current_video_screen)
- {
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- outb(addr_6845+1, start);
- outb(addr_6845,CRTC_CUREND); /* cursor end reg */
- outb(addr_6845+1, end);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * ega/vga ioctl - set font attributes
- *---------------------------------------------------------------------------*/
-static void
-vgasetfontattr(struct vgafontattr *data)
-{
- register int i;
- int vga_character_set;
- int lines_per_character;
- int totscanlines;
- int size;
-
- vga_character_set = data->character_set;
- vga_character_set = (vga_character_set < 0) ? 0 :
- ((vga_character_set < totalfonts) ?
- vga_character_set : totalfonts-1);
-
- vgacs[vga_character_set].loaded = data->font_loaded;
-
- /* Limit Characters to 32 scanlines doubled */
- vgacs[vga_character_set].char_scanlines =
- (data->character_scanlines & 0x1F)
- | 0x40; /* always set bit 9 of line cmp reg */
-
- if(adaptor_type == EGA_ADAPTOR)
- /* ...and screen height to scan 350 lines */
- vgacs[vga_character_set].scr_scanlines =
- (data->screen_scanlines > 0x5d) ?
- 0x5d : data->screen_scanlines;
- else
- /* ...and screen height to scan 480 lines */
- vgacs[vga_character_set].scr_scanlines =
- (data->screen_scanlines > 0xdF) ?
- 0xdF : data->screen_scanlines;
-
- lines_per_character =
- (int)(0x1F & vgacs[vga_character_set].char_scanlines)+1;
-
- totscanlines = 0x101 + (int)vgacs[vga_character_set].scr_scanlines;
-
- size = data->screen_size;
-
- if(adaptor_type == EGA_ADAPTOR)
- {
- switch(size)
- {
- case SIZ_25ROWS: /* This case is always OK */
- break;
-
- case SIZ_35ROWS:
- if(totscanlines/lines_per_character >= 35)
- size = SIZ_35ROWS;
- else
- size = SIZ_25ROWS;
- break;
-
- case SIZ_43ROWS:
- default:
- if(totscanlines/lines_per_character >= 43)
- size = SIZ_43ROWS;
- else if(totscanlines/lines_per_character >= 35)
- size = SIZ_35ROWS;
- else
- size = SIZ_25ROWS;
- break;
- }
- }
- else
- {
- switch(size)
- {
- case SIZ_25ROWS: /* This case is always OK */
- break;
-
- case SIZ_28ROWS:
- if(totscanlines/lines_per_character >= 28)
- size = SIZ_28ROWS;
- else
- size = SIZ_25ROWS;
- break;
-
- case SIZ_40ROWS:
- if(totscanlines/lines_per_character >= 40)
- size = SIZ_40ROWS;
- else if(totscanlines/lines_per_character >= 28)
- size = SIZ_28ROWS;
- else
- size = SIZ_25ROWS;
- break;
-
- case SIZ_50ROWS:
- default:
- if(totscanlines/lines_per_character >= 50)
- size = SIZ_50ROWS;
- else if(totscanlines/lines_per_character >= 40)
- size = SIZ_40ROWS;
- else if(totscanlines/lines_per_character >= 28)
- size = SIZ_28ROWS;
- else
- size = SIZ_25ROWS;
- break;
- }
- }
-
- vgacs[vga_character_set].screen_size = size;
-
- for (i = 0;i < PCVT_NSCREENS;i++)
- {
- if(vga_character_set == vs[i].vga_charset)
- set_charset(&(vs[i]),vga_character_set);
- }
-
-#ifdef XSERVER
- switch_screen(current_video_screen, 0, 0);
-#else
- vgapage(current_video_screen);
-#endif /* XSERVER */
-
-}
-
-/*---------------------------------------------------------------------------*
- * ega/vga ioctl - get font attributes
- *---------------------------------------------------------------------------*/
-static void
-vgagetfontattr(struct vgafontattr *data)
-{
- int vga_character_set;
-
- vga_character_set = data->character_set;
- vga_character_set = (vga_character_set < 0) ? 0 :
- ((vga_character_set < (int)totalfonts) ?
- vga_character_set :
- (int)(totalfonts-1));
-
- data->character_set = (int)vga_character_set;
-
- data->font_loaded = (int)vgacs[vga_character_set].loaded;
-
- data->character_scanlines =
- (int)vgacs[vga_character_set].char_scanlines
- & 0x1f; /* do not display the overflow bits */
-
- data->screen_scanlines = (int)vgacs[vga_character_set].scr_scanlines;
-
- data->screen_size = (int)vgacs[vga_character_set].screen_size;
-}
-
-/*---------------------------------------------------------------------------*
- * ega/vga ioctl - load a character shape into character set
- *---------------------------------------------------------------------------*/
-static void
-vgaloadchar(struct vgaloadchar *data)
-{
- int vga_character_set;
- int character;
- int lines_per_character;
-
- vga_character_set = data->character_set;
- vga_character_set = (vga_character_set < 0) ? 0 :
- ((vga_character_set < (int)totalfonts) ?
- vga_character_set : (int)(totalfonts-1));
-
- character = (data->character < 0) ? 0 :
- ((data->character > 255) ? 255 : data->character);
-
- lines_per_character = (int)data->character_scanlines;
- lines_per_character = (lines_per_character < 0) ? 0 :
- ((lines_per_character > 32) ? 32 : lines_per_character);
-
- loadchar(vga_character_set,character,lines_per_character,
- data->char_table);
-}
-
-/*---------------------------------------------------------------------------*
- * video ioctl - get screen information
- *---------------------------------------------------------------------------*/
-static void
-vid_getscreen(struct screeninfo *data, struct cdev *dev)
-{
- int device = minor(dev);
- data->adaptor_type = adaptor_type; /* video adapter installed */
- data->monitor_type = color; /* monitor type installed */
- data->totalfonts = totalfonts; /* no of downloadble fonts */
- data->totalscreens = totalscreens; /* no of virtual screens */
- data->screen_no = device; /* this screen number */
- data->current_screen = current_video_screen; /* displayed screen no */
- /* screen size */
- data->screen_size = vgacs[(vs[device].vga_charset)].screen_size;
- /* pure VT mode or HP/VT mode */
- data->pure_vt_mode = vs[device].vt_pure_mode;
- data->vga_family = vga_family; /* manufacturer, family */
- data->vga_type = vga_type; /* detected chipset type */
- data->vga_132 = can_do_132col; /* 132 column support */
- data->force_24lines = vs[device].force24; /* force 24 lines */
-}
-
-/*---------------------------------------------------------------------------*
- * video ioctl - set screen information
- *---------------------------------------------------------------------------*/
-static void
-vid_setscreen(struct screeninfo *data, struct cdev *dev)
-{
- int screen;
-
- if(data->current_screen == -1)
- {
- screen = minor(dev);
- }
- else
- {
- if(data->current_screen >= PCVT_NSCREENS)
- return; /* XXXXXX */
- screen = data->current_screen;
- }
-
- vgapage(screen);
-
-#ifdef XSERVER
- {
- int x = spltty(), waitfor = screen + 1;
- /* if the vt is yet to be released by a process, wait here */
- if(vs[screen].vt_status & VT_WAIT_REL)
- (void)usl_vt_ioctl(dev, VT_WAITACTIVE,
- (caddr_t)&waitfor, 0, 0);
- splx(x);
- }
- /* make sure the switch really happened */
- if(screen != current_video_screen)
- return; /* XXX should say "EAGAIN" here */
-#endif /* XSERVER */
-
- if((data->screen_size != -1) || (data->force_24lines != -1))
- {
- if(data->screen_size == -1)
- data->screen_size =
- 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) ||
- (data->screen_size == SIZ_35ROWS) ||
- (data->screen_size == SIZ_40ROWS) ||
- (data->screen_size == SIZ_43ROWS) ||
- (data->screen_size == SIZ_50ROWS))
- {
- if(data->screen_no == -1)
- set_screen_size(vsp, data->screen_size);
- else
- set_screen_size(&vs[minor(dev)],
- data->screen_size);
- }
- }
-
- if(data->pure_vt_mode != -1)
- {
- if((data->pure_vt_mode == M_HPVT) ||
- (data->pure_vt_mode == M_PUREVT))
- {
- if(data->screen_no == -1)
- set_emulation_mode(vsp, data->pure_vt_mode);
- else
- set_emulation_mode(&vs[minor(dev)],
- data->pure_vt_mode);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * set screen size/resolution for a virtual screen
- *---------------------------------------------------------------------------*/
-void
-set_screen_size(struct video_state *svsp, int size)
-{
- int i;
-
- for(i = 0; i < totalfonts; i++)
- {
- if(vgacs[i].screen_size == size)
- {
- set_charset(svsp, i);
- clr_parms(svsp); /* escape parameter init */
- svsp->state = STATE_INIT; /* initial state */
- svsp->scrr_beg = 0; /* start of scrolling region */
- svsp->sc_flag = 0; /* invalidate saved cursor
- * position */
- svsp->transparent = 0; /* disable control code
- * processing */
-
- /* Update tty to reflect screen size */
-
- if (svsp->vs_tty)
- {
- svsp->vs_tty->t_winsize.ws_col = svsp->maxcol;
- svsp->vs_tty->t_winsize.ws_xpixel =
- (svsp->maxcol == 80)? 720: 1056;
- svsp->vs_tty->t_winsize.ws_ypixel = 400;
- svsp->vs_tty->t_winsize.ws_row =
- svsp->screen_rows;
- }
- /* screen_rows already calculated in set_charset() */
- if(svsp->vt_pure_mode == M_HPVT && svsp->labels_on)
- {
- if(svsp->which_fkl == SYS_FKL)
- sw_sfkl(svsp);
- else if(svsp->which_fkl == USR_FKL)
- sw_ufkl(svsp);
- }
-
-
- svsp->scrr_len = svsp->screen_rows;
- svsp->scrr_end = svsp->scrr_len - 1;
-
- if (svsp->vs_tty && svsp->vs_tty->t_pgrp) {
- PGRP_LOCK(svsp->vs_tty->t_pgrp);
- pgsignal(svsp->vs_tty->t_pgrp, SIGWINCH, 1);
- PGRP_UNLOCK(svsp->vs_tty->t_pgrp);
- }
-
- reallocate_scrollbuffer(svsp, svsp->scrollback_pages);
- break;
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * resize the scrollback buffer to the specified number of "pages"
- *---------------------------------------------------------------------------*/
-void
-reallocate_scrollbuffer(struct video_state *svsp, int pages)
-{
- int s;
- u_short *stmp;
-
- if(pages < 2)
- pages = 2;
- if(pages > 50)
- pages = 50;
-
- s = splhigh();
-
- if((stmp = (u_short *)malloc(svsp->maxcol * svsp->screen_rows *
- pages * CHR, M_DEVBUF, M_NOWAIT)) == NULL)
- {
- splx(s);
- printf("pcvt: reallocate_scrollbuffer, malloc failed\n");
- return;
- }
-
- svsp->max_off = svsp->screen_rows * pages - 1;
-
- if(svsp->Scrollback)
- {
- bcopy(svsp->Scrollback, stmp,
- (min(pages, svsp->scrollback_pages)) *
- svsp->screen_rows * svsp->maxcol * CHR);
- free(svsp->Scrollback, M_DEVBUF);
- svsp->Scrollback = stmp;
- }
- else
- {
- svsp->scr_offset = 0;
- svsp->scrolling = 0;
- svsp->Scrollback = stmp;
-
- bcopy(svsp->Crtat, svsp->Scrollback,
- svsp->screen_rows * svsp->maxcol * CHR);
-
- svsp->scr_offset = svsp->row;
- }
-
- svsp->scrollback_pages = pages;
-
- splx(s);
-}
-
-/*---------------------------------------------------------------------------*
- * VGA ioctl - read DAC palette entry
- *---------------------------------------------------------------------------*/
-static void
-vgareadpel(struct vgapel *data, struct cdev *dev)
-{
- register unsigned vpage = minor(dev);
- register unsigned idx = data->idx;
-
- if(idx >= NVGAPEL)
- return; /* no such entry */
-
- /* do not read VGA palette directly, use saved values */
- data->r = vs[vpage].palette[idx].r;
- data->g = vs[vpage].palette[idx].g;
- data->b = vs[vpage].palette[idx].b;
-}
-
-/*---------------------------------------------------------------------------*
- * VGA ioctl - write DAC palette entry
- *---------------------------------------------------------------------------*/
-static void
-vgawritepel(struct vgapel *data, struct cdev *dev)
-{
- register unsigned vpage = minor(dev);
- register unsigned idx = data->idx;
-
- if(idx >= NVGAPEL)
- return; /* no such entry */
-
- /* first, update saved values for this video screen */
- vs[vpage].palette[idx].r = data->r;
- vs[vpage].palette[idx].g = data->g;
- vs[vpage].palette[idx].b = data->b;
-
- /* if this happens on active screen, update VGA DAC, too */
- if(vpage == current_video_screen)
- vgapaletteio(idx, &vs[vpage].palette[idx], 1);
-}
-
-/*---------------------------------------------------------------------------*
- * VGA physical IO - read/write one palette entry
- *---------------------------------------------------------------------------*/
-void
-vgapaletteio(unsigned idx, struct rgb *val, int writeit)
-{
- if(writeit)
- {
- outb(VGA_DAC + 2, idx);
- outb(VGA_DAC + 3, val->r & VGA_PMSK);
- outb(VGA_DAC + 3, val->g & VGA_PMSK);
- outb(VGA_DAC + 3, val->b & VGA_PMSK);
- }
- else /* read it */
- {
- outb(VGA_DAC + 1, idx);
- val->r = inb(VGA_DAC + 3) & VGA_PMSK;
- val->g = inb(VGA_DAC + 3) & VGA_PMSK;
- val->b = inb(VGA_DAC + 3) & VGA_PMSK;
- }
-}
-
-/*---------------------------------------------------------------------------*
- *
- * update asynchronous: cursor, cursor pos displ, sys load, keyb scan
- *
- * arg is:
- * UPDATE_START = do update; requeue
- * UPDATE_STOP = suspend updates
- * UPDATE_KERN = do update for kernel printfs
- *
- *---------------------------------------------------------------------------*/
-void
-async_update(void *arg)
-{
- static int lastpos = 0;
- static int counter = PCVT_UPDATESLOW;
-
-#ifdef XSERVER
- /* need a method to suspend the updates */
-
- if(arg == UPDATE_STOP)
- {
- untimeout(async_update, UPDATE_START, async_update_ch);
- return;
- }
-#endif /* XSERVER */
-
- /* first check if update is possible */
-
- if(chargen_access) /* does no-one load characters? */
- {
- goto async_update_exit; /* do not update anything */
- }
-
-#if PCVT_SCREENSAVER
- if(reset_screen_saver && (counter == PCVT_UPDATESLOW))
- {
- pcvt_scrnsv_reset(); /* yes, do it */
- reset_screen_saver = 0; /* re-init */
- }
- else if(scrnsv_active) /* is the screen not blanked? */
- {
- goto async_update_exit; /* do not update anything */
- }
-#endif /* PCVT_SCREENSAVER */
-
- /*-------------------------------------------------------------------*/
- /* this takes place on EVERY virtual screen (if not in X mode etc...)*/
- /*-------------------------------------------------------------------*/
-
- if ( cursor_pos_valid &&
- (lastpos != (vsp->Crtat + vsp->cur_offset - Crtat)))
- {
- lastpos = vsp->Crtat + vsp->cur_offset - Crtat;
- outb(addr_6845, CRTC_CURSORH); /* high register */
- outb(addr_6845+1, ((lastpos) >> 8));
- outb(addr_6845, CRTC_CURSORL); /* low register */
- outb(addr_6845+1, (lastpos));
- }
-
- if (arg == UPDATE_KERN) /* Magic arg: for kernel printfs */
- return;
-
- if(--counter) /* below is possible update */
- goto async_update_exit; /* just now and then ..... */
- counter = PCVT_UPDATESLOW; /* caution, see screensaver above !! */
-
- /*-------------------------------------------------------------------*/
- /* this takes place ONLY on screen 0 if in HP mode, labels on, !X */
- /*-------------------------------------------------------------------*/
-
- /* additional processing for HP necessary ? */
-
- if((vs[0].vt_pure_mode == M_HPVT) && (vs[0].labels_on))
- {
- static volatile u_char buffer[] =
- "System Load: 1min: 0.00 5min: 0.00 15min: 0.00";
- register int tmp, i;
-#if PCVT_SHOWKEYS
- extern u_char rawkeybuf[80];
-
- if(keyboard_show)
- {
- for(i = 0; i < 80; i++)
- {
- *((vs[0].Crtat+((vs[0].screen_rows+2)
- * vs[0].maxcol))+i) =
- user_attr | rawkeybuf[i];
- }
- }
- else
- {
-#endif /* PCVT_SHOWKEYS */
-
- /* display load averages in last line (taken from tty.c) */
- i = 18;
- tmp = (averunnable.ldavg[0] * 100 + FSCALE / 2)
- >> FSHIFT;
- buffer[i++] =
- ((((tmp/100)/10) == 0) ?
- ' ' :
- ((tmp/100)/10) + '0');
- buffer[i++] = ((tmp/100)%10) + '0';
- buffer[i++] = '.';
- buffer[i++] = ((tmp%100)/10) + '0';
- buffer[i++] = ((tmp%100)%10) + '0';
- i += 6;
- tmp = (averunnable.ldavg[1] * 100 + FSCALE / 2)
- >> FSHIFT;
- buffer[i++] = ((((tmp/100)/10) == 0) ?
- ' ' :
- ((tmp/100)/10) + '0');
- buffer[i++] = ((tmp/100)%10) + '0';
- buffer[i++] = '.';
- buffer[i++] = ((tmp%100)/10) + '0';
- buffer[i++] = ((tmp%100)%10) + '0';
- i += 7;
- tmp = (averunnable.ldavg[2] * 100 + FSCALE / 2)
- >> FSHIFT;
- buffer[i++] = ((((tmp/100)/10) == 0) ?
- ' ' :
- ((tmp/100)/10) + '0');
- buffer[i++] = ((tmp/100)%10) + '0';
- buffer[i++] = '.';
- buffer[i++] = ((tmp%100)/10) + '0';
- buffer[i++] = ((tmp%100)%10) + '0';
- buffer[i] = '\0';
-
- for(i = 0; buffer[i]; i++)
- {
- *((vs[0].Crtat +
- ((vs[0].screen_rows + 2) * vs[0].maxcol)
- ) + i
- ) = user_attr | buffer[i];
- }
-
-#if PCVT_SHOWKEYS
- for(; i < 77; i++)
- {
- *((vs[0].Crtat +
- ((vs[0].screen_rows + 2) * vs[0].maxcol)
- ) + i
- ) = user_attr | ' ';
- }
-
- }
-#endif /* PCVT_SHOWKEYS */
- }
-
- /*-------------------------------------------------------------------*/
- /* this takes place on EVERY screen which is in HP mode, labels on,!X*/
- /*-------------------------------------------------------------------*/
-
- if((vsp->vt_pure_mode == M_HPVT) && (vsp->labels_on))
- {
- register int col = vsp->col+1;
- register u_short *p = vsp->Crtat +
- (vsp->screen_rows * vsp->maxcol);
-
- /* update column display between labels */
-
- if(vsp->maxcol == SCR_COL132)
- {
- p += (SCR_COL132 - SCR_COL80)/2;
-
- if(col >= 100)
- {
- *(p + LABEL_COLU) = user_attr | '1';
- col -= 100;
- }
- else
- {
- *(p + LABEL_COLU) = user_attr | '0';
- }
- }
- *(p + LABEL_COLH) = user_attr | ((col/10) + '0');
- *(p + LABEL_COLL) = user_attr | ((col%10) + '0');
-
- /* update row display between labels */
-
- *(p + LABEL_ROWH) = (user_attr | (((vsp->row+1)/10) + '0'));
- *(p + LABEL_ROWL) = (user_attr | (((vsp->row+1)%10) + '0'));
- }
-
-async_update_exit:
-
- if(arg == UPDATE_START)
- {
- async_update_ch = timeout(async_update, UPDATE_START,
- PCVT_UPDATEFAST);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * set character set for virtual screen
- *---------------------------------------------------------------------------*/
-void
-set_charset(struct video_state *svsp, int curvgacs)
-{
- static int sizetab[] = { 25, 28, 35, 40, 43, 50 };
- int oldsize, oldrows, newsize, newrows;
-
- if((curvgacs < 0) || (curvgacs > (NVGAFONTS-1)))
- return;
-
- svsp->vga_charset = curvgacs;
-
- select_vga_charset(curvgacs);
-
- oldsize = svsp->screen_rowsize;
- oldrows = svsp->screen_rows;
- newsize = sizetab[(vgacs[curvgacs].screen_size)];
- newrows = newsize;
- if (svsp->vt_pure_mode == M_HPVT)
- newrows -= 3;
- if (newrows == 25 && svsp->force24)
- newrows = 24;
- if (newrows < oldrows) {
- int nscroll = svsp->row + 1 - newrows;
-
- if (svsp->row >= oldrows) /* Sanity check */
- nscroll = oldrows - newrows;
- if (nscroll > 0) {
- /* Scroll up */
- bcopy (svsp->Crtat + nscroll * svsp->maxcol,
- svsp->Crtat,
- newrows * svsp->maxcol * CHR);
- svsp->row -= nscroll;
- svsp->cur_offset -= nscroll * svsp->maxcol;
- }
- if (newrows < newsize)
- fillw(user_attr | ' ',
- svsp->Crtat + newrows * svsp->maxcol,
- (newsize - newrows) * svsp->maxcol);
- } else if (oldrows < newsize)
- fillw(user_attr | ' ',
- svsp->Crtat + oldrows * svsp->maxcol,
- (newsize - oldrows) * svsp->maxcol);
-
- svsp->screen_rowsize = newsize;
- svsp->screen_rows = newrows;
-
- /* Clip scrolling region */
- if(svsp->scrr_end > svsp->screen_rows - 1)
- svsp->scrr_end = svsp->screen_rows - 1;
- svsp->scrr_len = svsp->scrr_end - svsp->scrr_beg + 1;
-
- /* Clip cursor pos */
-
- if(svsp->cur_offset > (svsp->scrr_len * svsp->maxcol))
- svsp->cur_offset = (svsp->scrr_len * svsp->maxcol) + svsp->col;
-}
-
-/*---------------------------------------------------------------------------*
- * select a vga character set
- *---------------------------------------------------------------------------*/
-void
-select_vga_charset(int vga_charset)
-{
- int first, second;
- int fflag = 0;
- int sflag = 0;
- u_char cmap = 0;
-
- static u_char cmaptaba[] =
- {0x00, 0x01, 0x02, 0x03, 0x10, 0x11, 0x12, 0x13};
-
- static u_char cmaptabb[] =
- {0x00, 0x04, 0x08, 0x0c, 0x20, 0x24, 0x28, 0x2c};
-
- if((adaptor_type != EGA_ADAPTOR) && (adaptor_type != VGA_ADAPTOR))
- return;
-
- if((vga_charset < 0) || (vga_charset >= totalfonts))
- return;
-
- if(!vgacs[vga_charset].loaded)
- return;
-
- /*--------------------------------------------------------------
- find the the first and second charset of a given resolution.
- the first is used for lower 256 and the second (if any) is
- used for the upper 256 entries of a complete 512 entry ega/
- vga charset.
- --------------------------------------------------------------*/
-
- for(first = 0; first < totalfonts; first++)
- {
- if(!vgacs[first].loaded)
- continue;
- if(vgacs[first].screen_size != vgacs[vga_charset].screen_size)
- continue;
- if(vgacs[first].char_scanlines !=
- vgacs[vga_charset].char_scanlines)
- continue;
- if(vgacs[first].scr_scanlines !=
- vgacs[vga_charset].scr_scanlines)
- continue;
- fflag = 1;
- break;
- }
-
- if(fflag != 1)
- return;
-
- for(second = first+1; second < totalfonts; second++)
- {
- if(!vgacs[second].loaded)
- continue;
- if(vgacs[second].screen_size != vgacs[vga_charset].screen_size)
- continue;
- if(vgacs[second].char_scanlines !=
- vgacs[vga_charset].char_scanlines)
- continue;
- if(vgacs[second].scr_scanlines !=
- vgacs[vga_charset].scr_scanlines)
- continue;
- sflag = 1;
- break;
- }
-
- cmap = cmaptaba[first];
- if(sflag)
- {
- cmap |= cmaptabb[second];
- vgacs[first].secondloaded = second;
- }
- else
- {
- vgacs[first].secondloaded = 0; /*cs 0 can never become a 2nd!*/
- }
-
- if(vsp->wd132col)
- {
- cmap = (vga_charset & 0x07);
- cmap |= 0x10;
- }
-
- outb(TS_INDEX, TS_FONTSEL); /* character map select register */
- outb(TS_DATA, cmap); /* new char map */
-
- outb(addr_6845, CRTC_MAXROW); /* max scan line reg */
- outb(addr_6845+1,
- vgacs[first].char_scanlines); /* scanlines/char */
-
- outb(addr_6845, CRTC_VDE); /* vert display enable end */
- outb(addr_6845+1,
- vgacs[first].scr_scanlines); /* low byte of scr scanlines */
-
- if((color == 0) && (adaptor_type == VGA_ADAPTOR))
- {
- outb(addr_6845, CRTC_ULOC); /* underline location reg */
- outb(addr_6845+1, (vgacs[first].char_scanlines & 0x1F));
- }
-}
-
-/*---------------------------------------------------------------------------*
- * switch vga-card to load a character set
- *---------------------------------------------------------------------------*/
-static void
-setchargen(void)
-{
- chargen_access = 1; /* flag we are accessing the chargen ram */
-
- /* program sequencer to access character generator */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01); /* synchronous reset */
-
- outb(TS_INDEX, TS_WRPLMASK);
- outb(TS_DATA, 0x04); /* write to map 2 */
-
- outb(TS_INDEX, TS_MEMMODE);
- outb(TS_DATA, 0x07); /* sequential addressing */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
-
- /* program graphics controller to access character generator */
-
- outb(GDC_INDEX, GDC_RDPLANESEL);
- outb(GDC_DATA, 0x02); /* select map 2 for cpu reads */
-
- outb(GDC_INDEX, GDC_MODE);
- outb(GDC_DATA, 0x00); /* disable odd-even addressing */
-
- outb(GDC_INDEX, GDC_MISC);
- outb(GDC_DATA, 0x00); /* map starts at 0xA000 */
-}
-
-/*---------------------------------------------------------------------------*
- * switch vga-card to load a character set to plane 3
- *---------------------------------------------------------------------------*/
-static void
-setchargen3(void)
-{
- chargen_access = 1; /* flag we are accessing the chargen ram */
-
- /* program sequencer to access character generator */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01); /* synchronous reset */
-
- outb(TS_INDEX, TS_WRPLMASK);
- outb(TS_DATA, 0x08); /* write to map 3 */
-
- outb(TS_INDEX, TS_MEMMODE);
- outb(TS_DATA, 0x07); /* sequential addressing */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
-
- /* program graphics controller to access character generator */
-
- outb(GDC_INDEX, GDC_RDPLANESEL);
- outb(GDC_DATA, 0x03); /* select map 3 for cpu reads */
-
- outb(GDC_INDEX, GDC_MODE);
- outb(GDC_DATA, 0x00); /* disable odd-even addressing */
-
- outb(GDC_INDEX, GDC_MISC);
- outb(GDC_DATA, 0x00); /* map starts at 0xA000 */
-}
-
-/*---------------------------------------------------------------------------*
- * switch back vga-card to normal operation
- *---------------------------------------------------------------------------*/
-static void
-resetchargen(void)
-{
- /* program sequencer to access video ram */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01); /* synchronous reset */
-
- outb(TS_INDEX, TS_WRPLMASK);
- outb(TS_DATA, 0x03); /* write to map 0 & 1 */
-
- outb(TS_INDEX, TS_MEMMODE);
- outb(TS_DATA, 0x03); /* odd-even addressing */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
-
- /* program graphics controller to access character generator */
-
- outb(GDC_INDEX, GDC_RDPLANESEL);
- outb(GDC_DATA, 0x00); /* select map 0 for cpu reads */
-
- outb(GDC_INDEX, GDC_MODE);
- outb(GDC_DATA, 0x10); /* enable odd-even addressing */
-
- outb(GDC_INDEX, GDC_MISC);
- if(color)
- outb(GDC_DATA, 0x0e); /* map starts at 0xb800 */
- else
- outb(GDC_DATA, 0x0a); /* map starts at 0xb000 */
-
- chargen_access = 0; /* flag we are NOT accessing the chargen ram */
-}
-
-
-/*---------------------------------------------------------------------------*
- * switch screen off (VGA only)
- *---------------------------------------------------------------------------*/
-void
-vga_screen_off(void)
-{
- unsigned char old;
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01); /* synchronous reset */
-
- outb(TS_INDEX, TS_MODE); /* clocking mode reg */
- old = inb(TS_DATA); /* get current value */
-
- outb(TS_INDEX, TS_MODE); /* clocking mode reg */
- outb(TS_DATA, (old | 0x20)); /* screen off bit on */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
-}
-
-/*---------------------------------------------------------------------------*
- * switch screen back on (VGA only)
- *---------------------------------------------------------------------------*/
-void
-vga_screen_on(void)
-{
- unsigned char old;
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01); /* synchronous reset */
-
- outb(TS_INDEX, TS_MODE); /* clocking mode reg */
- old = inb(TS_DATA); /* get current value */
-
- outb(TS_INDEX, TS_MODE); /* clocking mode reg */
- outb(TS_DATA, (old & ~0x20)); /* screen off bit off */
-
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03); /* clear synchronous reset */
-}
-
-/*---------------------------------------------------------------------------*
- * compute character set base address (in kernel map)
- *---------------------------------------------------------------------------*/
-static unsigned char *
-compute_charset_base(unsigned fontset)
-{
- unsigned char *d = (unsigned char *)Crtat;
-
- static int charset_offset[8] = { 0x0000, 0x4000, 0x8000, 0xC000,
- 0x2000, 0x6000, 0xA000, 0xE000 };
-
- static int charsetw_offset[8] = { 0x0000, 0x2000, 0x4000, 0x6000,
- 0x8000, 0xA000, 0xC000, 0xE000 };
-
- switch(adaptor_type)
- {
- case EGA_ADAPTOR:
- fontset = (fontset > 3) ? 3 : fontset;
- break;
-
- case VGA_ADAPTOR:
- fontset = (fontset > 7) ? 7 : fontset;
- break;
-
- default:
- return 0;
- }
-
- if(color)
- d -= (0xB8000 - 0xA0000); /* Point to 0xA0000 */
- else
- d -= (0xB0000 - 0xA0000); /* Point to 0xA0000 */
-
- if(vsp->wd132col)
- d += charsetw_offset[fontset]; /* Load into Character set n */
- else
- d += charset_offset[fontset]; /* Load into Character set n */
-
- return d;
-}
-
-/*---------------------------------------------------------------------------*
- * load a char into ega/vga character generator ram
- *---------------------------------------------------------------------------*/
-void
-loadchar(int fontset, int character, int char_scanlines, u_char *char_table)
-{
- unsigned char *d;
- unsigned char *bak;
- int j, k;
-
- if((d = compute_charset_base(fontset)) == 0)
- return;
-
- d += (character * 32); /* 32 bytes per character */
-
- if(vsp->wd132col &&
- (fontset == 1||fontset == 3||fontset == 5||fontset == 7))
- setchargen3(); /* access chargen ram */
- else
- setchargen(); /* access chargen ram */
-
- for(j = k = 0; j < char_scanlines; j++) /* x bit high characters */
- {
- *d = char_table[k];
- d++;
- k++;
- }
- for(; j < 32; j++) /* Up to 32 bytes per character image*/
- {
- *d = 0x00;
- d++;
- }
-
- resetchargen(); /* access video ram */
-
- if(saved_charsets[fontset] == 0)
- saved_charsets[fontset] =
- (u_char *)malloc(32 * 256, M_DEVBUF, M_WAITOK);
-
- if((bak = saved_charsets[fontset]))
- {
- /* make a backup copy of this char */
- bak += (character * 32);
- bzero(bak, 32);
- bcopy(char_table, bak, char_scanlines);
- }
-#ifdef DIAGNOSTIC
- else
- panic("pcvt loadchar: no backup buffer");
-#endif /* DIAGNOSTIC */
-}
-
-/*---------------------------------------------------------------------------*
- * save/restore character set n to addr b
- * since there are always backed up copies, we do not save anything here
- * parameter "b" is totally ignored
- *---------------------------------------------------------------------------*/
-void
-vga_move_charset(unsigned n, unsigned char *b, int save_it)
-{
- unsigned char *d = compute_charset_base(n);
-
- if(save_it)
- return;
-
- if(saved_charsets[n] == 0)
-#ifdef DIAGNOSTIC
- panic("pcvt: restoring unbuffered charset");
-#else
- return;
-#endif
-
-#ifdef DIAGNOSTIC
- if(d == 0)
- panic("vga_move_charset: wrong adaptor");
-#endif
-
- if(vsp->wd132col && (n == 1||n == 3||n == 5||n == 7))
- {
- setchargen3();
- d -= 0x2000;
- }
- else
- {
- setchargen();
- }
-
- /* PLEASE, leave the following alone using bcopyb, as several */
- /* chipsets have problems if their memory is accessed with 32 */
- /* or 16 bits wide, don't change this to using bcopy for speed! */
-
- bcopyb(saved_charsets[n], d,
- 256 /* chars */ * 32 /* bytes per char */);
-
- resetchargen();
-}
-
-#ifndef XSERVER
-/*---------------------------------------------------------------------------*
- * switch to virtual screen n (0 ... PCVT_NSCREENS-1)
- *---------------------------------------------------------------------------*/
-void
-vgapage(int n)
-{
- int cols = vsp->maxcol; /* get current col val */
-
- if(n < 0 || n >= totalscreens)
- return;
-
- /* video board memory -> kernel memory */
-
- bcopy(vsp->Crtat, vsp->Memory, vsp->screen_rows * vsp->maxcol * CHR);
-
- vsp->Crtat = vsp->Memory; /* operate in memory now */
-
- /* update global screen pointers/variables */
-
- current_video_screen = n; /* current screen no */
-
- vsp = &vs[n]; /* current video state ptr */
-
- /* kernel memory -> video board memory */
-
- bcopy(vsp->Crtat, Crtat, vsp->screen_rows * vsp->maxcol * CHR);
-
- vsp->Crtat = Crtat; /* operate on screen now */
-
- outb(addr_6845, CRTC_STARTADRH);
- outb(addr_6845+1, 0);
- outb(addr_6845, CRTC_STARTADRL);
- outb(addr_6845+1, 0);
-
- select_vga_charset(vsp->vga_charset);
-
- if(vsp->maxcol != cols)
- vga_col(vsp, vsp->maxcol); /* select 80/132 columns */
-
- outb(addr_6845, CRTC_CURSORH); /* select high register */
- outb(addr_6845+1, vsp->cur_offset >> 8);
- outb(addr_6845, CRTC_CURSORL); /* select low register */
- outb(addr_6845+1, vsp->cur_offset);
-
- if(vsp->cursor_on)
- {
- 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);
- }
- else
- {
- sw_cursor(0);
- }
-
- if(adaptor_type == VGA_ADAPTOR)
- {
- unsigned i;
-
- /* switch VGA DAC palette entries */
-
- for(i = 0; i < NVGAPEL; i++)
- vgapaletteio(i, &vsp->palette[i], 1);
- }
-
- update_led(); /* update led's */
-
- update_hp(vsp); /* update fkey labels, if present */
-}
-#endif /* XSERVER */
-
-/*---------------------------------------------------------------------------*
- * test if it is a vga
- *---------------------------------------------------------------------------*/
-int
-vga_test(void)
-{
- u_char old, new, check;
-
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- old = inb(addr_6845+1); /* get current value */
-
- new = old | CURSOR_ON_BIT; /* set cursor on by setting bit 5 on */
-
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- outb(addr_6845+1,new); /* cursor should be on now */
-
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- check = inb(addr_6845+1); /* get current value */
-
- if(check != new)
- {
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- outb(addr_6845+1,old); /* failsafe */
- return(0); /* must be ega */
- }
-
- new = old & ~CURSOR_ON_BIT; /* turn cursor off by clearing bit 5 */
-
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- outb(addr_6845+1,new); /* cursor should be off now */
-
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- check = inb(addr_6845+1); /* get current value */
-
- if(check != new)
- {
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- outb(addr_6845+1,old); /* failsafe */
- return(0); /* must be ega */
- }
-
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- outb(addr_6845+1,old); /* failsafe */
-
- return(1); /* vga */
-}
-
-/*---------------------------------------------------------------------------*
- * convert upper/lower sixel font array to vga font array
- *---------------------------------------------------------------------------*/
-void
-sixel_vga(struct sixels *sixelp, u_char *vgachar)
-{
- register int i, j;
- register int shift;
- register u_char mask;
-
- for(j = 0; j < 16; j++)
- vgachar[j] = 0;
-
- mask = 0x01;
- for(j = 0; j < 6; j++)
- {
- for(i = 0, shift = 7; i < 8; i++, shift--)
- vgachar[j] |= ((((sixelp->upper[i]) & mask) >> j)
- << shift);
- mask <<= 1;
- }
-
- mask = 0x01;
- for(j = 0; j < 4; j++)
- {
- for(i = 0, shift = 7; i < 8; i++, shift--)
- vgachar[j+6] |= ((((sixelp->lower[i]) & mask) >>j)
- << shift);
- mask <<= 1;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Expand 8x10 EGA/VGA characters to 8x16 EGA/VGA characters
- *---------------------------------------------------------------------------*/
-void
-vga10_vga16(u_char *invga, u_char *outvga)
-{
- register int i,j;
-
- /*
- * Keep the top and bottom scanlines the same and double every scan
- * line in between.
- */
-
- outvga[0] = invga[0];
- outvga[1] = invga[1];
- outvga[14] = invga[8];
- outvga[15] = invga[9];
-
- for(i = j = 2;i < 8 && j < 14;i++,j += 2)
- {
- outvga[j] = invga[i];
- outvga[j+1] = invga[i];
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Expand 8x10 EGA/VGA characters to 8x14 EGA/VGA characters
- *---------------------------------------------------------------------------*/
-void
-vga10_vga14(u_char *invga, u_char *outvga)
-{
- register int i;
-
- /*
- * Double the top two and bottom two scanlines and copy everything
- * in between.
- */
-
- outvga[0] = invga[0];
- outvga[1] = invga[0];
- outvga[2] = invga[1];
- outvga[3] = invga[1];
- outvga[10] = invga[8];
- outvga[11] = invga[8];
- outvga[12] = invga[9];
- outvga[13] = invga[9];
-
- for(i = 2;i < 8;i++)
- outvga[i+2] = invga[i];
-}
-
-/*---------------------------------------------------------------------------*
- * Expand 8x10 EGA/VGA characters to 8x10 EGA/VGA characters
- *---------------------------------------------------------------------------*/
-void
-vga10_vga10(u_char *invga, u_char *outvga)
-{
- register int i;
-
- for(i = 0;i < 10;i++)
- outvga[i] = invga[i];
-}
-
-/*---------------------------------------------------------------------------*
- * Contract 8x10 EGA/VGA characters to 8x8 EGA/VGA characters
- *---------------------------------------------------------------------------*/
-void
-vga10_vga8(u_char *invga, u_char *outvga)
-{
- /* Skip scanlines 3 and 7 */
-
- outvga[0] = invga[0];
- outvga[1] = invga[1];
- outvga[2] = invga[2];
- outvga[3] = invga[4];
- outvga[4] = invga[5];
- outvga[5] = invga[6];
- outvga[6] = invga[8];
- outvga[7] = invga[9];
-}
-
-/*---------------------------------------------------------------------------*
- * disconnect attribute bit 3 from generating intensity
- * (and use it for a second character set !)
- *---------------------------------------------------------------------------*/
-void
-set_2ndcharset(void)
-{
- if(color) /* prepare to access index register! */
- inb(GN_INPSTAT1C);
- else
- 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 PCVT_SCREENSAVER
-#if PCVT_PRETTYSCRNS
-
-/*---------------------------------------------------------------------------*
- * produce some kinda random number, had a look into the system library...
- *---------------------------------------------------------------------------*/
-static u_short
-getrand(void)
-{
- static unsigned long seed = 1;
- register u_short res = (u_short)seed;
- seed = seed * 1103515245L + time_second;
- return res;
-}
-
-/*---------------------------------------------------------------------------*
- * produce "nice" screensaving ....
- *---------------------------------------------------------------------------*/
-static void
-scrnsv_blink(void * arg)
-{
- static struct rgb blink_rgb[8] =
- {
- {63, 63, 63}, /* white */
- {0, 63, 42}, /* pale green */
- {63, 63, 0}, /* yellow */
- {63, 21, 63}, /* violet */
- {42, 63, 0}, /* yellow-green */
- {63, 42, 0}, /* amber */
- {63, 42, 42}, /* rose */
- {21, 42, 42} /* cyan */
- };
- register u_short r = getrand();
- unsigned pos = (r % (scrnsv_size / 2));
-
- *scrnsv_current = /* (0 << 8) + */ ' ';
- scrnsv_current = vsp->Crtat + pos;
- *scrnsv_current = (7 /* LIGHTGRAY */ << 8) + '*';
- if(adaptor_type == VGA_ADAPTOR)
- vgapaletteio(7 /* LIGHTGRAY */, &blink_rgb[(r >> 4) & 7], 1);
- scrnsv_blink_ch = timeout(scrnsv_blink, NULL, hz);
-}
-
-#endif /* PCVT_PRETTYSCRNS */
-
-/*---------------------------------------------------------------------------*
- * set timeout time
- *---------------------------------------------------------------------------*/
-#ifndef XSERVER
-static void
-pcvt_set_scrnsv_tmo(int timeout)
-#else
-void
-pcvt_set_scrnsv_tmo(int timeout)
-#endif /* XSERVER */
-{
- int x = splhigh();
-
- if(scrnsv_timeout)
- untimeout(scrnsv_timedout, NULL, scrnsv_timeout_ch);
-
- scrnsv_timeout = timeout;
- pcvt_scrnsv_reset(); /* sanity */
- splx(x);
- if(timeout == 0 && savedscreen)
- {
- /* release buffer when screen saver turned off */
- free(savedscreen, M_TEMP);
- savedscreen = (u_short *)0;
- }
-}
-
-#if PCVT_GREENSAVER
-/*---------------------------------------------------------------------------*
- * switch monitor on/off
- *---------------------------------------------------------------------------*/
-static void
-green_saver(int blank)
-{
- u_char val;
-
- if (blank)
- {
- outb(TS_INDEX, 0x01);
- val = inb(TS_DATA);
- outb(TS_INDEX, 0x01);
- outb(TS_DATA, val | 0x20);
- outb(addr_6845, 0x17);
- val = inb(addr_6845 + 1);
- outb(addr_6845 + 1, val & ~0x80);
- }
- else
- {
- outb(TS_INDEX, 0x01);
- val = inb(TS_DATA);
- outb(TS_INDEX, 0x01);
- outb(TS_DATA, val & 0xDF);
- outb(addr_6845, 0x17);
- val = inb(addr_6845 + 1);
- outb(addr_6845 + 1, val | 0x80);
- }
-}
-#endif
-
-/*---------------------------------------------------------------------------*
- * we were timed out
- *---------------------------------------------------------------------------*/
-static void
-scrnsv_timedout(void *arg)
-{
- /* this function is called by timeout() */
- /* raise priority to avoid conflicts with kbd intr */
- int x = spltty();
-
- /*
- * due to some undefined problems with video adaptor RAM
- * access timing, the following has been splitted into
- * two pieces called subsequently with a time difference
- * of 100 millisec
- */
-
- if(++scrnsv_active == 1)
- {
- register size_t s;
- /*
- * first, allocate a buffer
- * do only if none allocated yet or another size required
- * this reduces malloc() overhead by avoiding successive
- * calls to malloc() and free() if they would have requested
- * the same buffer
- *
- * XXX This is inherited from old days where no buffering
- * happened at all. Meanwhile we should use the standard
- * screen buffer instead. Any volunteers? :-) [At least,
- * this code proved to work...]
- */
-
- s = sizeof(u_short) * vsp->screen_rowsize * vsp->maxcol;
-
- if(savedscreen == (u_short *)0 || s != scrnsv_size)
- {
- /* really need to allocate */
- if(savedscreen)
- free(savedscreen, M_TEMP);
- scrnsv_size = s;
- if((savedscreen =
- (u_short *)malloc(s, M_TEMP, M_NOWAIT))
- == (u_short *)0)
- {
- /*
- * didn't get the buffer memory,
- * turn off screen saver
- */
- scrnsv_timeout = scrnsv_active = 0;
- splx(x);
- return;
- }
- }
- /* save current screen */
- bcopy(vsp->Crtat, savedscreen, scrnsv_size);
-
- /* on VGA's, make sure palette is set to blank screen */
- if(adaptor_type == VGA_ADAPTOR)
- {
- struct rgb black = {0, 0, 0};
- vgapaletteio(0 /* BLACK */, &black, 1);
- }
- /* prepare for next time... */
- scrnsv_timeout_ch = timeout(scrnsv_timedout, NULL, hz / 10);
- }
- else
- {
- /* second call, now blank the screen */
- /* fill screen with blanks */
- fillw(/* (BLACK<<8) + */ ' ', vsp->Crtat, scrnsv_size / 2);
-
-#if PCVT_PRETTYSCRNS
- scrnsv_current = vsp->Crtat;
- scrnsv_blink_ch = timeout(scrnsv_blink, NULL, hz);
-#endif /* PCVT_PRETTYSCRNS */
-
- sw_cursor(0); /* cursor off on mda/cga */
-
-#if PCVT_GREENSAVER
- green_saver(1);
-#endif
- }
- splx(x);
-}
-
-/*---------------------------------------------------------------------------*
- * interface to screensaver "subsystem"
- *---------------------------------------------------------------------------*/
-void
-pcvt_scrnsv_reset(void)
-{
- /*
- * to save lotta time with superfluous timeout()/untimeout() calls
- * when having massive output operations, we remember the last
- * second of kernel timer we've rescheduled scrnsv_timedout()
- */
- static long last_schedule = 0L;
- register int x = splhigh();
- int reschedule = 0;
-
- if((scrnsv_active == 1 || scrnsv_timeout) &&
- last_schedule != time_second)
- {
- last_schedule = time_second;
- reschedule = 1;
- untimeout(scrnsv_timedout, NULL, scrnsv_timeout_ch);
- }
- if(scrnsv_active)
- {
-
-#if PCVT_PRETTYSCRNS
- if(scrnsv_active > 1)
- untimeout(scrnsv_blink, NULL, scrnsv_blink_ch);
-#endif /* PCVT_PRETTYSCRNS */
-
- bcopy(savedscreen, vsp->Crtat, scrnsv_size);
- if(adaptor_type == VGA_ADAPTOR)
- {
- /* back up VGA palette info */
- vgapaletteio(0 /* BLACK */, &vsp->palette[0], 1);
-
-#if PCVT_PRETTYSCRNS
- vgapaletteio(7 /* LIGHTGRAY */, &vsp->palette[7], 1);
-#endif /* PCVT_PRETTYSCRNS */
-
-#if PCVT_GREENSAVER
- green_saver(0);
-#endif
- }
- scrnsv_active = 0;
-
- if(vsp->cursor_on)
- sw_cursor(1); /* cursor on */
- }
-
- if(reschedule)
- {
- /* mark next timeout */
- scrnsv_timeout_ch = timeout(scrnsv_timedout, NULL,
- scrnsv_timeout * hz);
- }
- splx(x);
-}
-
-#endif /* PCVT_SCREENSAVER */
-
-/*---------------------------------------------------------------------------*
- * switch cursor on/off
- *---------------------------------------------------------------------------*/
-void
-sw_cursor(int onoff)
-{
- if(adaptor_type == EGA_ADAPTOR)
- {
- int start, end;
- if(onoff)
- {
- start = vsp->cursor_start;
- end = vsp->cursor_end;
- }
- else
- {
- int cs = vs[current_video_screen].vga_charset;
-
- cs = (cs < 0) ? 0 : ((cs < totalfonts) ?
- cs : totalfonts-1);
-
- start = (vgacs[cs].char_scanlines & 0x1F) + 1;
- end = 0;
- }
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- outb(addr_6845+1, start);
- outb(addr_6845,CRTC_CUREND); /* cursor end reg */
- outb(addr_6845+1, end);
- }
- else /* mda, cga, vga */
- {
- outb(addr_6845,CRTC_CURSTART); /* cursor start reg */
- if(onoff)
- outb(addr_6845+1, vsp->cursor_start);
- else
- outb(addr_6845+1, CURSOR_ON_BIT);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * cold init support, if a mono monitor is attached to a
- * vga or ega, it comes up with a mda emulation. switch
- * board to generic ega/vga mode in this case.
- *---------------------------------------------------------------------------*/
-void
-mda2egaorvga(void)
-{
- /*
- * program sequencer to access
- * video ram
- */
-
- /* synchronous reset */
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x01);
-
- /* write to map 0 & 1 */
- outb(TS_INDEX, TS_WRPLMASK);
- outb(TS_DATA, 0x03);
-
- /* odd-even addressing */
- outb(TS_INDEX, TS_MEMMODE);
- outb(TS_DATA, 0x03);
-
- /* clear synchronous reset */
- outb(TS_INDEX, TS_SYNCRESET);
- outb(TS_DATA, 0x03);
-
- /*
- * program graphics controller
- * to access character
- * generator
- */
-
- /* select map 0 for cpu reads */
- outb(GDC_INDEX, GDC_RDPLANESEL);
- outb(GDC_DATA, 0x00);
-
- /* enable odd-even addressing */
- outb(GDC_INDEX, GDC_MODE);
- outb(GDC_DATA, 0x10);
-
- /* map starts at 0xb000 */
- outb(GDC_INDEX, GDC_MISC);
- outb(GDC_DATA, 0x0a);
-}
-
-/* ------------------------- E O F ------------------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_tbl.h b/sys/i386/isa/pcvt/pcvt_tbl.h
deleted file mode 100644
index 8b68168..0000000
--- a/sys/i386/isa/pcvt/pcvt_tbl.h
+++ /dev/null
@@ -1,470 +0,0 @@
-/*-
- * Copyright (c) 1992, 2000 Hellmuth Michaelis.
- *
- * 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.
- *
- * 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_tbl.h VT220 Driver Character Set Conversion Tables
- * ------------------------------------------------------------
- *
- * Last Edit-Date: [Sun Mar 26 10:38:49 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*
- *
- * in pcvt_out.c, hooks are provided for the following charactersets:
- *
- * HAVECS_BRITISH
- * HAVECS_ASCII
- * HAVECS_FINNISH
- * HAVECS_NORWEGIANDANISH
- * HAVECS_SWEDISH
- * HAVECS_GERMAN
- * HAVECS_FRENCHCANADA
- * HAVECS_FRENCH
- * HAVECS_ITALIAN
- * HAVECS_SPANISH
- * HAVECS_SPECIAL
- * HAVECS_ALTERNATEROM1
- * HAVECS_ALTERNATEROM2
- * HAVECS_ROMAN8
- * HAVECS_DUTCH
- * HAVECS_SUPPLEMENTAL
- * HAVECS_SWISS
- * HAVECS_TECHNICAL
- * HAVECS_ISOLATIN
- *
- * to add support for a new charcterset, you have to provide the
- * table named "cs_<charset>",define the according "HAVECS_<CHARSET>"
- * and recompile everything. ref: pcvt_out.c, vt_designate()
- *
- *---------------------------------------------------------------------------*/
-
-/*===========================================================================*
- * DEFAULT TABLES FOR MDA/HCG/CGA
- *===========================================================================*/
-
-/*---------------------------------------------------------------------------*
- * ASCII Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSD_ASCII
-u_short csd_ascii[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0x21 | CSL, 0x22 | CSL, 0x23 | CSL,
-/* 24 */ 0x24 | CSL, 0x25 | CSL, 0x26 | CSL, 0x27 | CSL,
-/* 28 */ 0x28 | CSL, 0x29 | CSL, 0x2A | CSL, 0x2B | CSL,
-/* 2C */ 0x2C | CSL, 0x2D | CSL, 0x2E | CSL, 0x2F | CSL,
-
-/* 30 */ 0x30 | CSL, 0x31 | CSL, 0x32 | CSL, 0x33 | CSL,
-/* 34 */ 0x34 | CSL, 0x35 | CSL, 0x36 | CSL, 0x37 | CSL,
-/* 38 */ 0x38 | CSL, 0x39 | CSL, 0x3A | CSL, 0x3B | CSL,
-/* 3C */ 0x3C | CSL, 0x3D | CSL, 0x3E | CSL, 0x3F | CSL,
-
-/* 40 */ 0x40 | CSL, 0x41 | CSL, 0x42 | CSL, 0x43 | CSL,
-/* 44 */ 0x44 | CSL, 0x45 | CSL, 0x46 | CSL, 0x47 | CSL,
-/* 48 */ 0x48 | CSL, 0x49 | CSL, 0x4A | CSL, 0x4B | CSL,
-/* 4C */ 0x4C | CSL, 0x4D | CSL, 0x4E | CSL, 0x4F | CSL,
-
-/* 50 */ 0x50 | CSL, 0x51 | CSL, 0x52 | CSL, 0x53 | CSL,
-/* 54 */ 0x54 | CSL, 0x55 | CSL, 0x56 | CSL, 0x57 | CSL,
-/* 58 */ 0x58 | CSL, 0x59 | CSL, 0x5A | CSL, 0x5B | CSL,
-/* 5C */ 0x5C | CSL, 0x5D | CSL, 0x5E | CSL, 0x5F | CSL,
-
-/* 60 */ 0x60 | CSL, 0x61 | CSL, 0x62 | CSL, 0x63 | CSL,
-/* 64 */ 0x64 | CSL, 0x65 | CSL, 0x66 | CSL, 0x67 | CSL,
-/* 68 */ 0x68 | CSL, 0x69 | CSL, 0x6A | CSL, 0x6B | CSL,
-/* 6C */ 0x6C | CSL, 0x6D | CSL, 0x6E | CSL, 0x6F | CSL,
-
-/* 70 */ 0x70 | CSL, 0x71 | CSL, 0x72 | CSL, 0x73 | CSL,
-/* 74 */ 0x74 | CSL, 0x75 | CSL, 0x76 | CSL, 0x77 | CSL,
-/* 78 */ 0x78 | CSL, 0x79 | CSL, 0x7A | CSL, 0x7B | CSL,
-/* 7C */ 0x7C | CSL, 0x7D | CSL, 0x7E | CSL, 0x7F | CSL,
-};
-
-/*---------------------------------------------------------------------------*
- * DEC Supplemental Graphic Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSD_SUPPLEMENTAL
-u_short csd_supplemental[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0xAD | CSL, 0x9B | CSL, 0x9C | CSL,
-/* 24 */ 0x20 | CSL, 0x9D | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 28 */ 0x20 | CSL, 0x20 | CSL, 0xA6 | CSL, 0xAE | CSL,
-/* 2C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-
-/* 30 */ 0xF8 | CSL, 0xF1 | CSL, 0xFD | CSL, 0x20 | CSL,
-/* 34 */ 0x20 | CSL, 0xE6 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 38 */ 0x20 | CSL, 0x20 | CSL, 0xA7 | CSL, 0xAF | CSL,
-/* 3C */ 0xAC | CSL, 0xAB | CSL, 0x20 | CSL, 0xA8 | CSL,
-
-/* 40 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 44 */ 0x8E | CSL, 0x8F | CSL, 0x92 | CSL, 0x80 | CSL,
-/* 48 */ 0x20 | CSL, 0x90 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 4C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
-
-/* 50 */ 0x20 | CSL, 0xA5 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 54 */ 0x20 | CSL, 0x20 | CSL, 0x99 | CSL, 0x20 | CSL,
-/* 58 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 5C */ 0x9A | CSL, 0x20 | CSL, 0x20 | CSL, 0xE1 | CSL,
-
-/* 60 */ 0x85 | CSL, 0xA0 | CSL, 0x83 | CSL, 0x20 | CSL,
-/* 64 */ 0x84 | CSL, 0x86 | CSL, 0x91 | CSL, 0x87 | CSL,
-/* 68 */ 0x8A | CSL, 0x82 | CSL, 0x88 | CSL, 0x89 | CSL,
-/* 6C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
-
-/* 70 */ 0x20 | CSL, 0xA4 | CSL, 0x95 | CSL, 0xA2 | CSL,
-/* 74 */ 0x93 | CSL, 0x20 | CSL, 0x94 | CSL, 0x20 | CSL,
-/* 78 */ 0x20 | CSL, 0x97 | CSL, 0xA3 | CSL, 0x96 | CSL,
-/* 7C */ 0x81 | CSL, 0x98 | CSL, 0x20 | CSL, 0x20 | CSL
-};
-
-/*---------------------------------------------------------------------------*
- * DEC Special Graphic Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSD_SPECIAL
-u_short csd_special[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0x21 | CSL, 0x22 | CSL, 0x23 | CSL,
-/* 24 */ 0x24 | CSL, 0x25 | CSL, 0x26 | CSL, 0x27 | CSL,
-/* 28 */ 0x28 | CSL, 0x29 | CSL, 0x2A | CSL, 0x2B | CSL,
-/* 2C */ 0x2C | CSL, 0x2D | CSL, 0x2E | CSL, 0x2F | CSL,
-
-/* 30 */ 0x30 | CSL, 0x31 | CSL, 0x32 | CSL, 0x33 | CSL,
-/* 34 */ 0x34 | CSL, 0x35 | CSL, 0x36 | CSL, 0x37 | CSL,
-/* 38 */ 0x38 | CSL, 0x39 | CSL, 0x3A | CSL, 0x3B | CSL,
-/* 3C */ 0x3C | CSL, 0x3D | CSL, 0x3E | CSL, 0x3F | CSL,
-
-/* 40 */ 0x40 | CSL, 0x41 | CSL, 0x42 | CSL, 0x43 | CSL,
-/* 44 */ 0x44 | CSL, 0x45 | CSL, 0x46 | CSL, 0x47 | CSL,
-/* 48 */ 0x48 | CSL, 0x49 | CSL, 0x4A | CSL, 0x4B | CSL,
-/* 4C */ 0x4C | CSL, 0x4D | CSL, 0x4E | CSL, 0x4F | CSL,
-
-/* 50 */ 0x50 | CSL, 0x51 | CSL, 0x52 | CSL, 0x53 | CSL,
-/* 54 */ 0x54 | CSL, 0x55 | CSL, 0x56 | CSL, 0x57 | CSL,
-/* 58 */ 0x58 | CSL, 0x59 | CSL, 0x5A | CSL, 0x5B | CSL,
-/* 5C */ 0x5C | CSL, 0x5D | CSL, 0x5E | CSL, 0x20 | CSL,
-
-/* 60 */ 0x20 | CSL, 0xB0 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 64 */ 0x20 | CSL, 0x20 | CSL, 0xF8 | CSL, 0xF1 | CSL,
-/* 68 */ 0x20 | CSL, 0x20 | CSL, 0xD9 | CSL, 0xBF | CSL,
-/* 6C */ 0xDA | CSL, 0xC0 | CSL, 0xC5 | CSL, 0x20 | CSL,
-
-/* 70 */ 0x20 | CSL, 0xC4 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 74 */ 0xC3 | CSL, 0xB4 | CSL, 0xC1 | CSL, 0xC2 | CSL,
-/* 78 */ 0xB3 | CSL, 0xF3 | CSL, 0xF2 | CSL, 0xE3 | CSL,
-/* 7C */ 0x20 | CSL, 0x9C | CSL, 0x20 | CSL, 0x20 | CSL
-};
-
-/*---------------------------------------------------------------------------*
- * DEC Technical Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSD_TECHNICAL
-u_short csd_technical[CSSIZE] = {
-/* 20 */ 0xFE | CSH, 0xFB | CSL, 0xDA | CSL, 0xC4 | CSL,
-/* 24 */ 0xF4 | CSL, 0xF5 | CSL, 0xB3 | CSL, 0xDA | CSL,
-/* 28 */ 0xC0 | CSL, 0xBF | CSL, 0xD9 | CSL, 0x20 | CSL,
-/* 2C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-
-/* 30 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 34 */ 0x20 | CSL, 0xAA | CSL, 0xA9 | CSL, 0x3E | CSL,
-/* 38 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 3C */ 0xF3 | CSL, 0x20 | CSL, 0xF2 | CSL, 0x20 | CSL,
-
-/* 40 */ 0x20 | CSL, 0x20 | CSL, 0xEC | CSL, 0xF6 | CSL,
-/* 44 */ 0x20 | CSL, 0x20 | CSL, 0xE8 | CSL, 0xE2 | CSL,
-/* 48 */ 0x20 | CSL, 0xF7 | CSL, 0xE9 | CSL, 0x78 | CSL,
-/* 4C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0xF0 | CSL,
-
-/* 50 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0xE4 | CSL,
-/* 54 */ 0x20 | CSL, 0x20 | CSL, 0xFB | CSL, 0xEA | CSL,
-/* 58 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 5C */ 0xEF | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-
-/* 60 */ 0xAA | CSL, 0xE0 | CSL, 0xE1 | CSL, 0x20 | CSL,
-/* 64 */ 0xEB | CSL, 0x20 | CSL, 0xED | CSL, 0x59 | CSL,
-/* 68 */ 0x20 | CSL, 0x20 | CSL, 0xE9 | CSL, 0x20 | CSL,
-/* 6C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-
-/* 70 */ 0xE3 | CSL, 0x20 | CSL, 0x20 | CSL, 0xE5 | CSL,
-/* 74 */ 0xE7 | CSL, 0x20 | CSL, 0x9F | CSL, 0x20 | CSL,
-/* 78 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 7C */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL
-};
-
-/*---------------------------------------------------------------------------*
- * ISO Latin-1 Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSD_ISOLATIN
-u_short csd_isolatin[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0xAD | CSL, 0x9B | CSL, 0x9C | CSL,
-/* 24 */ 0x20 | CSL, 0x9D | CSL, 0x7C | CSL, 0x20 | CSL,
-/* 28 */ 0x22 | CSL, 0x20 | CSL, 0xA6 | CSL, 0xAE | CSL,
-/* 2C */ 0xAA | CSL, 0x2D | CSL, 0x20 | CSL, 0x2D | CSL,
-
-/* 30 */ 0xF8 | CSL, 0xF1 | CSL, 0xFD | CSL, 0x20 | CSL,
-/* 34 */ 0x27 | CSL, 0xE6 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 38 */ 0x20 | CSL, 0x20 | CSL, 0xA7 | CSL, 0xAF | CSL,
-/* 3C */ 0xAC | CSL, 0xAB | CSL, 0x20 | CSL, 0xA8 | CSL,
-
-/* 40 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 44 */ 0x8E | CSL, 0x8F | CSL, 0x92 | CSL, 0x80 | CSL,
-/* 48 */ 0x20 | CSL, 0x90 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 4C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
-
-/* 50 */ 0x20 | CSL, 0xA5 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 54 */ 0x20 | CSL, 0x20 | CSL, 0x99 | CSL, 0x78 | CSL,
-/* 58 */ 0x20 | CSL, 0x20 | CSL, 0x20 | CSL, 0x20 | CSL,
-/* 5C */ 0x9A | CSL, 0x20 | CSL, 0x20 | CSL, 0xE1 | CSL,
-
-/* 60 */ 0x85 | CSL, 0xA0 | CSL, 0x83 | CSL, 0x20 | CSL,
-/* 64 */ 0x84 | CSL, 0x86 | CSL, 0x91 | CSL, 0x87 | CSL,
-/* 68 */ 0x8A | CSL, 0x82 | CSL, 0x88 | CSL, 0x89 | CSL,
-/* 6C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
-
-/* 70 */ 0x20 | CSL, 0xA4 | CSL, 0x95 | CSL, 0xA2 | CSL,
-/* 74 */ 0x93 | CSL, 0x20 | CSL, 0x94 | CSL, 0xF6 | CSL,
-/* 78 */ 0x20 | CSL, 0x97 | CSL, 0xA3 | CSL, 0x96 | CSL,
-/* 7C */ 0x81 | CSL, 0x20 | CSL, 0x20 | CSL, 0x98 | CSL
-};
-
-/*===========================================================================*
- * EXTENDED TABLES FOR EGA/VGA
- *===========================================================================*/
-
-/*---------------------------------------------------------------------------*
- * ASCII Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSE_ASCII
-u_short cse_ascii[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0x21 | CSL, 0x22 | CSL, 0x23 | CSL,
-/* 24 */ 0x24 | CSL, 0x25 | CSL, 0x26 | CSL, 0x27 | CSL,
-/* 28 */ 0x28 | CSL, 0x29 | CSL, 0x2A | CSL, 0x2B | CSL,
-/* 2C */ 0x2C | CSL, 0x2D | CSL, 0x2E | CSL, 0x2F | CSL,
-
-/* 30 */ 0x30 | CSL, 0x31 | CSL, 0x32 | CSL, 0x33 | CSL,
-/* 34 */ 0x34 | CSL, 0x35 | CSL, 0x36 | CSL, 0x37 | CSL,
-/* 38 */ 0x38 | CSL, 0x39 | CSL, 0x3A | CSL, 0x3B | CSL,
-/* 3C */ 0x3C | CSL, 0x3D | CSL, 0x3E | CSL, 0x3F | CSL,
-
-/* 40 */ 0x40 | CSL, 0x41 | CSL, 0x42 | CSL, 0x43 | CSL,
-/* 44 */ 0x44 | CSL, 0x45 | CSL, 0x46 | CSL, 0x47 | CSL,
-/* 48 */ 0x48 | CSL, 0x49 | CSL, 0x4A | CSL, 0x4B | CSL,
-/* 4C */ 0x4C | CSL, 0x4D | CSL, 0x4E | CSL, 0x4F | CSL,
-
-/* 50 */ 0x50 | CSL, 0x51 | CSL, 0x52 | CSL, 0x53 | CSL,
-/* 54 */ 0x54 | CSL, 0x55 | CSL, 0x56 | CSL, 0x57 | CSL,
-/* 58 */ 0x58 | CSL, 0x59 | CSL, 0x5A | CSL, 0x5B | CSL,
-/* 5C */ 0x5C | CSL, 0x5D | CSL, 0x5E | CSL, 0x5F | CSL,
-
-/* 60 */ 0x60 | CSL, 0x61 | CSL, 0x62 | CSL, 0x63 | CSL,
-/* 64 */ 0x64 | CSL, 0x65 | CSL, 0x66 | CSL, 0x67 | CSL,
-/* 68 */ 0x68 | CSL, 0x69 | CSL, 0x6A | CSL, 0x6B | CSL,
-/* 6C */ 0x6C | CSL, 0x6D | CSL, 0x6E | CSL, 0x6F | CSL,
-
-/* 70 */ 0x70 | CSL, 0x71 | CSL, 0x72 | CSL, 0x73 | CSL,
-/* 74 */ 0x74 | CSL, 0x75 | CSL, 0x76 | CSL, 0x77 | CSL,
-/* 78 */ 0x78 | CSL, 0x79 | CSL, 0x7A | CSL, 0x7B | CSL,
-/* 7C */ 0x7C | CSL, 0x7D | CSL, 0x7E | CSL, 0xB0 | CSL,
-};
-
-/*---------------------------------------------------------------------------*
- * DEC Supplemental Graphic Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSE_SUPPLEMENTAL
-u_short cse_supplemental[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0xAD | CSL, 0x9B | CSL, 0x9C | CSL,
-/* 24 */ 0x9F | CSH, 0x67 | CSH, 0x9F | CSH, 0x15 | CSL,
-/* 28 */ 0x9D | CSH, 0x9C | CSH, 0xA6 | CSL, 0xAE | CSL,
-/* 2C */ 0x9F | CSH, 0x9F | CSH, 0x9F | CSH, 0x9F | CSH,
-
-/* 30 */ 0xF8 | CSL, 0xF1 | CSL, 0xFD | CSL, 0x9B | CSH,
-/* 34 */ 0x9F | CSH, 0xE6 | CSL, 0x14 | CSL, 0x99 | CSH,
-/* 38 */ 0x9F | CSH, 0x98 | CSH, 0xA7 | CSL, 0xAF | CSL,
-/* 3C */ 0xAC | CSL, 0xAB | CSL, 0x9F | CSH, 0xA8 | CSL,
-
-/* 40 */ 0x97 | CSH, 0x96 | CSH, 0x95 | CSH, 0x94 | CSH,
-/* 44 */ 0x8E | CSL, 0x8F | CSL, 0x92 | CSL, 0x80 | CSL,
-/* 48 */ 0x93 | CSH, 0x90 | CSL, 0x92 | CSH, 0x91 | CSH,
-/* 4C */ 0x90 | CSH, 0x8F | CSH, 0x8E | CSH, 0x8D | CSH,
-
-/* 50 */ 0x9F | CSH, 0xA5 | CSL, 0x8C | CSH, 0x8B | CSH,
-/* 54 */ 0x8A | CSH, 0x89 | CSH, 0x99 | CSL, 0x88 | CSH,
-/* 58 */ 0x87 | CSH, 0x86 | CSH, 0x85 | CSH, 0x84 | CSH,
-/* 5C */ 0x9A | CSL, 0x83 | CSH, 0x9F | CSH, 0xE1 | CSL,
-
-/* 60 */ 0x85 | CSL, 0xA0 | CSL, 0x83 | CSL, 0x82 | CSH,
-/* 64 */ 0x84 | CSL, 0x86 | CSL, 0x91 | CSL, 0x87 | CSL,
-/* 68 */ 0x8A | CSL, 0x82 | CSL, 0x88 | CSL, 0x89 | CSL,
-/* 6C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
-
-/* 70 */ 0x9F | CSH, 0xA4 | CSL, 0x95 | CSL, 0xA2 | CSL,
-/* 74 */ 0x93 | CSL, 0x81 | CSH, 0x94 | CSL, 0x80 | CSH,
-/* 78 */ 0x7F | CSH, 0x97 | CSL, 0xA3 | CSL, 0x96 | CSL,
-/* 7C */ 0x81 | CSL, 0x98 | CSL, 0x9F | CSH, 0x20 | CSL
-};
-
-/*---------------------------------------------------------------------------*
- * DEC Special Graphic Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSE_SPECIAL
-u_short cse_special[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0x21 | CSL, 0x22 | CSL, 0x23 | CSL,
-/* 24 */ 0x24 | CSL, 0x25 | CSL, 0x26 | CSL, 0x27 | CSL,
-/* 28 */ 0x28 | CSL, 0x29 | CSL, 0x2A | CSL, 0x2B | CSL,
-/* 2C */ 0x2C | CSL, 0x2D | CSL, 0x2E | CSL, 0x2F | CSL,
-
-/* 30 */ 0x30 | CSL, 0x31 | CSL, 0x32 | CSL, 0x33 | CSL,
-/* 34 */ 0x34 | CSL, 0x35 | CSL, 0x36 | CSL, 0x37 | CSL,
-/* 38 */ 0x38 | CSL, 0x39 | CSL, 0x3A | CSL, 0x3B | CSL,
-/* 3C */ 0x3C | CSL, 0x3D | CSL, 0x3E | CSL, 0x3F | CSL,
-
-/* 40 */ 0x40 | CSL, 0x41 | CSL, 0x42 | CSL, 0x43 | CSL,
-/* 44 */ 0x44 | CSL, 0x45 | CSL, 0x46 | CSL, 0x47 | CSL,
-/* 48 */ 0x48 | CSL, 0x49 | CSL, 0x4A | CSL, 0x4B | CSL,
-/* 4C */ 0x4C | CSL, 0x4D | CSL, 0x4E | CSL, 0x4F | CSL,
-
-/* 50 */ 0x50 | CSL, 0x51 | CSL, 0x52 | CSL, 0x53 | CSL,
-/* 54 */ 0x54 | CSL, 0x55 | CSL, 0x56 | CSL, 0x57 | CSL,
-/* 58 */ 0x58 | CSL, 0x59 | CSL, 0x5A | CSL, 0x5B | CSL,
-/* 5C */ 0x5C | CSL, 0x5D | CSL, 0x5E | CSL, 0x20 | CSL,
-
-/* 60 */ 0x04 | CSL, 0xB0 | CSL, 0x09 | CSH, 0x0C | CSH,
-/* 64 */ 0x0D | CSH, 0x0A | CSH, 0xF8 | CSL, 0xF1 | CSL,
-/* 68 */ 0x00 | CSH, 0x0B | CSH, 0xD9 | CSL, 0xBF | CSL,
-/* 6C */ 0xDA | CSL, 0xC0 | CSL, 0xC5 | CSL, 0x7D | CSH,
-
-/* 70 */ 0x7C | CSH, 0x7B | CSH, 0x7A | CSH, 0x79 | CSH,
-/* 74 */ 0xC3 | CSL, 0xB4 | CSL, 0xC1 | CSL, 0xC2 | CSL,
-/* 78 */ 0xB3 | CSL, 0xF3 | CSL, 0xF2 | CSL, 0xE3 | CSL,
-/* 7C */ 0x78 | CSH, 0x9C | CSL, 0x99 | CSH, 0x20 | CSL
-};
-
-/*---------------------------------------------------------------------------*
- * DEC Technical Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSE_TECHNICAL
-u_short cse_technical[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0x65 | CSH, 0xDA | CSL, 0xC4 | CSL,
-/* 24 */ 0xF4 | CSL, 0xF5 | CSL, 0xB3 | CSL, 0xDA | CSL,
-/* 28 */ 0xC0 | CSL, 0xBF | CSL, 0xD9 | CSL, 0x61 | CSH,
-/* 2C */ 0x62 | CSH, 0x63 | CSH, 0x64 | CSH, 0x5F | CSH,
-
-/* 30 */ 0x60 | CSH, 0x5E | CSH, 0x5D | CSH, 0x5C | CSH,
-/* 34 */ 0x5B | CSH, 0xAA | CSL, 0xA9 | CSL, 0x3E | CSL,
-/* 38 */ 0x9F | CSH, 0x9F | CSH, 0x9F | CSH, 0x9F | CSH,
-/* 3C */ 0xF3 | CSL, 0x78 | CSH, 0xF2 | CSL, 0x5A | CSH,
-
-/* 40 */ 0x59 | CSH, 0x58 | CSH, 0xEC | CSL, 0xF6 | CSL,
-/* 44 */ 0x57 | CSH, 0x56 | CSH, 0xE8 | CSL, 0xE2 | CSL,
-/* 48 */ 0x77 | CSH, 0x55 | CSH, 0x54 | CSH, 0x6E | CSH,
-/* 4C */ 0x53 | CSH, 0x52 | CSH, 0x51 | CSH, 0xF0 | CSL,
-
-/* 50 */ 0x50 | CSH, 0x4F | CSH, 0x9F | CSH, 0xE4 | CSL,
-/* 54 */ 0x9F | CSH, 0x9F | CSH, 0xFB | CSL, 0xEA | CSL,
-/* 58 */ 0x4E | CSH, 0x4D | CSH, 0x4C | CSH, 0x4B | CSH,
-/* 5C */ 0xEF | CSL, 0x4A | CSH, 0x49 | CSH, 0x48 | CSH,
-
-/* 60 */ 0xAA | CSL, 0xE0 | CSL, 0xE1 | CSL, 0x47 | CSH,
-/* 64 */ 0xEB | CSL, 0x46 | CSH, 0xED | CSL, 0x59 | CSL,
-/* 68 */ 0x45 | CSH, 0x44 | CSH, 0xE9 | CSL, 0x9E | CSH,
-/* 6C */ 0x43 | CSH, 0x9F | CSH, 0x76 | CSL, 0x42 | CSH,
-
-/* 70 */ 0xE3 | CSL, 0x41 | CSH, 0x40 | CSH, 0xE5 | CSL,
-/* 74 */ 0xE7 | CSL, 0x9F | CSH, 0x9F | CSL, 0x66 | CSH,
-/* 78 */ 0x68 | CSH, 0x7E | CSH, 0x9A | CSH, 0x1B | CSL,
-/* 7C */ 0x18 | CSL, 0x1A | CSL, 0x19 | CSL, 0x20 | CSL
-};
-
-/*---------------------------------------------------------------------------*
- * ISO Latin-1 Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSE_ISOLATIN
-u_short cse_isolatin[CSSIZE] = {
-/* 20 */ 0x20 | CSL, 0xAD | CSL, 0x9B | CSL, 0x9C | CSL,
-/* 24 */ 0x9D | CSH, 0x9D | CSL, 0x7C | CSL, 0x15 | CSL,
-/* 28 */ 0x77 | CSH, 0x9C | CSH, 0xA6 | CSL, 0xAE | CSL,
-/* 2C */ 0x76 | CSH, 0x75 | CSH, 0x74 | CSH, 0x73 | CSH,
-
-/* 30 */ 0xF8 | CSL, 0xF1 | CSL, 0xFD | CSL, 0x9B | CSH,
-/* 34 */ 0x72 | CSH, 0xE6 | CSL, 0x14 | CSL, 0x99 | CSH,
-/* 38 */ 0x71 | CSH, 0x98 | CSH, 0xA7 | CSL, 0xAF | CSL,
-/* 3C */ 0xAC | CSL, 0xAB | CSL, 0x70 | CSH, 0xA8 | CSL,
-
-/* 40 */ 0x97 | CSH, 0x96 | CSH, 0x95 | CSH, 0x94 | CSH,
-/* 44 */ 0x8E | CSL, 0x8F | CSL, 0x92 | CSL, 0x80 | CSL,
-/* 48 */ 0x93 | CSH, 0x90 | CSL, 0x92 | CSH, 0x91 | CSH,
-/* 4C */ 0x90 | CSH, 0x8F | CSH, 0x8E | CSH, 0x8D | CSH,
-
-/* 50 */ 0x6F | CSH, 0xA5 | CSL, 0x8C | CSH, 0x8B | CSH,
-/* 54 */ 0x8A | CSH, 0x89 | CSH, 0x99 | CSL, 0x6E | CSH,
-/* 58 */ 0x87 | CSH, 0x86 | CSH, 0x85 | CSH, 0x84 | CSH,
-/* 5C */ 0x9A | CSL, 0x6D | CSH, 0x6C | CSH, 0xE1 | CSL,
-
-/* 60 */ 0x85 | CSL, 0xA0 | CSL, 0x83 | CSL, 0x82 | CSH,
-/* 64 */ 0x84 | CSL, 0x86 | CSL, 0x91 | CSL, 0x87 | CSL,
-/* 68 */ 0x8A | CSL, 0x82 | CSL, 0x88 | CSL, 0x89 | CSL,
-/* 6C */ 0x8D | CSL, 0xA1 | CSL, 0x8C | CSL, 0x8B | CSL,
-
-/* 70 */ 0x6B | CSH, 0xA4 | CSL, 0x95 | CSL, 0xA2 | CSL,
-/* 74 */ 0x93 | CSL, 0x81 | CSH, 0x94 | CSL, 0xF6 | CSL,
-/* 78 */ 0x7F | CSH, 0x97 | CSL, 0xA3 | CSL, 0x96 | CSL,
-/* 7C */ 0x81 | CSL, 0x69 | CSH, 0x6A | CSH, 0x98 | CSL
-};
-
-/*---------------------------------------------------------------------------*
- * Downloadable Characterset
- *---------------------------------------------------------------------------*/
-#define HAVECSE_DOWNLOADABLE
-u_short cse_downloadable[CSSIZE] = {
-/* 20 */ 0xA0 | CSH, 0xA1 | CSH, 0xA2 | CSH, 0xA3 | CSH,
-/* 24 */ 0xA4 | CSH, 0xA5 | CSH, 0xA6 | CSH, 0xA7 | CSH,
-/* 28 */ 0xA8 | CSH, 0xA9 | CSH, 0xAA | CSH, 0xAB | CSH,
-/* 2C */ 0xAC | CSH, 0xAD | CSH, 0xAE | CSH, 0xAF | CSH,
-
-/* 30 */ 0xB0 | CSH, 0xB1 | CSH, 0xB2 | CSH, 0xB3 | CSH,
-/* 34 */ 0xB4 | CSH, 0xB5 | CSH, 0xB6 | CSH, 0xB7 | CSH,
-/* 38 */ 0xB8 | CSH, 0xB9 | CSH, 0xBA | CSH, 0xBB | CSH,
-/* 3C */ 0xBC | CSH, 0xBD | CSH, 0xBE | CSH, 0xBF | CSH,
-
-/* 40 */ 0xC0 | CSH, 0xC1 | CSH, 0xC2 | CSH, 0xC3 | CSH,
-/* 44 */ 0xC4 | CSH, 0xC5 | CSH, 0xC6 | CSH, 0xC7 | CSH,
-/* 48 */ 0xC8 | CSH, 0xC9 | CSH, 0xCA | CSH, 0xCB | CSH,
-/* 4C */ 0xCC | CSH, 0xCD | CSH, 0xCE | CSH, 0xCF | CSH,
-
-/* 50 */ 0xD0 | CSH, 0xD1 | CSH, 0xD2 | CSH, 0xD3 | CSH,
-/* 54 */ 0xD4 | CSH, 0xD5 | CSH, 0xD6 | CSH, 0xD7 | CSH,
-/* 58 */ 0xD8 | CSH, 0xD9 | CSH, 0xDA | CSH, 0xDB | CSH,
-/* 5C */ 0xDC | CSH, 0xDD | CSH, 0xDE | CSH, 0xDF | CSH,
-
-/* 60 */ 0xE0 | CSH, 0xE1 | CSH, 0xE2 | CSH, 0xE3 | CSH,
-/* 64 */ 0xE4 | CSH, 0xE5 | CSH, 0xE6 | CSH, 0xE7 | CSH,
-/* 68 */ 0xE8 | CSH, 0xE9 | CSH, 0xEA | CSH, 0xEB | CSH,
-/* 6C */ 0xEC | CSH, 0xED | CSH, 0xEE | CSH, 0xEF | CSH,
-
-/* 70 */ 0xF0 | CSH, 0xF1 | CSH, 0xF2 | CSH, 0xF3 | CSH,
-/* 74 */ 0xF4 | CSH, 0xF5 | CSH, 0xF6 | CSH, 0xF7 | CSH,
-/* 78 */ 0xF8 | CSH, 0xF9 | CSH, 0xFA | CSH, 0xFB | CSH,
-/* 7C */ 0xFC | CSH, 0xFD | CSH, 0xFE | CSH, 0xFF | CSH,
-};
-
-/* ------------------------- E O F ------------------------------------------*/
diff --git a/sys/i386/isa/pcvt/pcvt_vtf.c b/sys/i386/isa/pcvt/pcvt_vtf.c
deleted file mode 100644
index ce23f39..0000000
--- a/sys/i386/isa/pcvt/pcvt_vtf.c
+++ /dev/null
@@ -1,2154 +0,0 @@
-/*-
- * Copyright (c) 1999, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1995 Hellmuth Michaelis and Joerg Wunsch.
- *
- * Copyright (c) 1992, 1993 Brian Dunford-Shore.
- *
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * William Jolitz and Don Ahn.
- *
- * 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_vtf.c VT220 Terminal Emulator Functions
- * -------------------------------------------------
- *
- * Last Edit-Date: [Sun Mar 26 10:38:52 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#define PCVT_INCLUDE_VT_SELATTR /* get inline function from pcvt_hdr.h */
-
-#include <i386/isa/pcvt/pcvt_hdr.h> /* global include */
-#include <i386/isa/pcvt/pcvt_tbl.h> /* character set conversion tables */
-
-static void clear_dld ( struct video_state *svsp );
-static void init_dld ( struct video_state *svsp );
-static void init_udk ( struct video_state *svsp );
-static void respond ( struct video_state *svsp );
-static void roll_down ( struct video_state *svsp, int n );
-static void selective_erase ( struct video_state *svsp, u_short *pcrtat,
- int length );
-static void swcsp ( struct video_state *svsp, u_short *ctp );
-
-/*---------------------------------------------------------------------------*
- * DECSTBM - set top and bottom margins
- *---------------------------------------------------------------------------*/
-void
-vt_stbm(struct video_state *svsp)
-{
- /* both 0 => scrolling region = entire screen */
-
- if((svsp->parms[0] == 0) && (svsp->parms[1] == 0))
- {
- svsp->cur_offset = 0;
- svsp->scrr_beg = 0;
- svsp->scrr_len = svsp->screen_rows;
- svsp->scrr_end = svsp->scrr_len - 1;
- svsp->col = 0;
- return;
- }
-
- if(svsp->parms[1] <= svsp->parms[0])
- return;
-
- /* range parm 1 */
-
- if(svsp->parms[0] < 1)
- svsp->parms[0] = 1;
- else if(svsp->parms[0] > svsp->screen_rows-1)
- svsp->parms[0] = svsp->screen_rows-1;
-
- /* range parm 2 */
-
- if(svsp->parms[1] < 2)
- svsp->parms[1] = 2;
- else if(svsp->parms[1] > svsp->screen_rows)
- svsp->parms[1] = svsp->screen_rows;
-
- svsp->scrr_beg = svsp->parms[0]-1; /* begin of scrolling region */
- svsp->scrr_len = svsp->parms[1] - svsp->parms[0] + 1; /* no of lines */
- svsp->scrr_end = svsp->parms[1]-1;
-
- /* cursor to first pos */
- if(svsp->m_om)
- svsp->cur_offset = svsp->scrr_beg * svsp->maxcol;
- else
- svsp->cur_offset = 0;
-
- svsp->col = 0;
-}
-
-/*---------------------------------------------------------------------------*
- * SGR - set graphic rendition
- *---------------------------------------------------------------------------*/
-void
-vt_sgr(struct video_state *svsp)
-{
- register int i = 0;
- u_short setcolor = 0;
- char colortouched = 0;
-
- do
- {
- switch(svsp->parms[i++])
- {
- case 0: /* reset to normal attributes */
- svsp->vtsgr = VT_NORMAL;
- break;
-
- case 1: /* bold */
- svsp->vtsgr |= VT_BOLD;
- break;
-
- case 4: /* underline */
- svsp->vtsgr |= VT_UNDER;
- break;
-
- case 5: /* blinking */
- svsp->vtsgr |= VT_BLINK;
- break;
-
- case 7: /* reverse */
- svsp->vtsgr |= VT_INVERSE;
- break;
-
- case 22: /* not bold */
- svsp->vtsgr &= ~VT_BOLD;
- break;
-
- case 24: /* not underlined */
- svsp->vtsgr &= ~VT_UNDER;
- break;
-
- case 25: /* not blinking */
- svsp->vtsgr &= ~VT_BLINK;
- break;
-
- case 27: /* not reverse */
- svsp->vtsgr &= ~VT_INVERSE;
- break;
-
- case 30: /* foreground colors */
- case 31:
- case 32:
- case 33:
- case 34:
- case 35:
- case 36:
- case 37:
- if(color)
- {
- colortouched = 1;
- setcolor |= ((fgansitopc[(svsp->parms[i-1]-30) & 7]) << 8);
- }
- break;
-
- case 40: /* background colors */
- case 41:
- case 42:
- case 43:
- case 44:
- case 45:
- case 46:
- case 47:
- if(color)
- {
- colortouched = 1;
- setcolor |= ((bgansitopc[(svsp->parms[i-1]-40) & 7]) << 8);
- }
- break;
- }
- }
- while(i <= svsp->parmi);
- if(color)
- {
- if(colortouched)
- svsp->c_attr = setcolor;
- else
- svsp->c_attr = ((sgr_tab_color[svsp->vtsgr]) << 8);
- }
- else
- {
- if(adaptor_type == MDA_ADAPTOR)
- svsp->c_attr = ((sgr_tab_imono[svsp->vtsgr]) << 8);
- else
- svsp->c_attr = ((sgr_tab_mono[svsp->vtsgr]) << 8);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * CUU - cursor up
- *---------------------------------------------------------------------------*/
-void
-vt_cuu(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if (p <= 0) /* parameter min */
- p = 1;
-
- p = min(p, svsp->row - svsp->scrr_beg);
-
- if (p <= 0)
- return;
-
- svsp->cur_offset -= (svsp->maxcol * p);
-}
-
-/*---------------------------------------------------------------------------*
- * CUD - cursor down
- *---------------------------------------------------------------------------*/
-void
-vt_cud(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if (p <= 0)
- p = 1;
-
- p = min(p, svsp->scrr_end - svsp->row);
-
- if (p <= 0)
- return;
-
- svsp->cur_offset += (svsp->maxcol * p);
-}
-
-/*---------------------------------------------------------------------------*
- * CUF - cursor forward
- *---------------------------------------------------------------------------*/
-void
-vt_cuf(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if(svsp->col == ((svsp->maxcol)-1)) /* already at right margin */
- return;
-
- if(p <= 0) /* parameter min = 1 */
- p = 1;
- else if(p > ((svsp->maxcol)-1)) /* parameter max = 79 */
- p = ((svsp->maxcol)-1);
-
- if((svsp->col + p) > ((svsp->maxcol)-1))/* not more than right margin */
- p = ((svsp->maxcol)-1) - svsp->col;
-
- svsp->cur_offset += p;
- svsp->col += p;
-}
-
-/*---------------------------------------------------------------------------*
- * CUB - cursor backward
- *---------------------------------------------------------------------------*/
-void
-vt_cub(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if(svsp->col == 0) /* already at left margin ? */
- return;
-
- if(p <= 0) /* parameter min = 1 */
- p = 1;
- else if(p > ((svsp->maxcol)-1)) /* parameter max = 79 */
- p = ((svsp->maxcol)-1);
-
- if((svsp->col - p) <= 0) /* not more than left margin */
- p = svsp->col;
-
- svsp->cur_offset -= p;
- svsp->col -= p;
-}
-
-/*---------------------------------------------------------------------------*
- * ED - erase in display
- *---------------------------------------------------------------------------*/
-void
-vt_clreos(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 0:
- fillw(user_attr | ' ', svsp->Crtat + svsp->cur_offset,
- svsp->Crtat +
- (svsp->maxcol * svsp->screen_rows) -
- (svsp->Crtat + svsp->cur_offset));
- break;
-
- case 1:
- fillw(user_attr | ' ', svsp->Crtat,
- svsp->Crtat + svsp->cur_offset -
- svsp->Crtat + 1 );
- break;
-
- case 2:
- fillw(user_attr | ' ', svsp->Crtat,
- svsp->maxcol * svsp->screen_rows);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * EL - erase in line
- *---------------------------------------------------------------------------*/
-void
-vt_clreol(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 0:
- fillw(user_attr | ' ',
- svsp->Crtat + svsp->cur_offset,
- svsp->maxcol-svsp->col);
- break;
-
- case 1:
- fillw(user_attr | ' ',
- svsp->Crtat + svsp->cur_offset - svsp->col,
- svsp->col + 1);
- break;
-
- case 2:
- fillw(user_attr | ' ',
- svsp->Crtat + svsp->cur_offset - svsp->col,
- svsp->maxcol);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * CUP - cursor position / HVP - horizontal & vertical position
- *---------------------------------------------------------------------------*/
-void
-vt_curadr(struct video_state *svsp)
-{
- if(svsp->m_om) /* relative to scrolling region */
- {
- if((svsp->parms[0] == 0) && (svsp->parms[1] == 0))
- {
- svsp->cur_offset = svsp->scrr_beg * svsp->maxcol;
- svsp->col = 0;
- svsp->abs_write = 0;
- return;
- }
-
- if(svsp->parms[0] <= 0)
- svsp->parms[0] = 1;
- else if(svsp->parms[0] > svsp->scrr_len)
- svsp->parms[0] = svsp->scrr_len;
-
- if(svsp->parms[1] <= 0 )
- svsp->parms[1] = 1;
- if(svsp->parms[1] > svsp->maxcol)
- svsp->parms[1] = svsp->maxcol;
-
- svsp->cur_offset = (svsp->scrr_beg * svsp->maxcol) +
- ((svsp->parms[0] - 1) * svsp->maxcol) +
- svsp->parms[1] - 1;
- svsp->col = svsp->parms[1] - 1;
- svsp->abs_write = 0;
- }
- else /* relative to screen start */
- {
- if((svsp->parms[0] == 0) && (svsp->parms[1] == 0))
- {
- svsp->cur_offset = 0;
- svsp->col = 0;
- svsp->abs_write = 0;
- return;
- }
-
- if(svsp->parms[0] <= 0)
- svsp->parms[0] = 1;
- else if(svsp->parms[0] > svsp->screen_rows)
- svsp->parms[0] = svsp->screen_rows;
-
- if(svsp->parms[1] <= 0 )
- svsp->parms[1] = 1;
- if(svsp->parms[1] > svsp->maxcol) /* col */
- svsp->parms[1] = svsp->maxcol;
-
- svsp->cur_offset = (((svsp->parms[0]-1)*svsp->maxcol) +
- (svsp->parms[1]-1));
- svsp->col = svsp->parms[1]-1;
-
- if (svsp->cur_offset >=
- ((svsp->scrr_beg + svsp->scrr_len + 1) * svsp->maxcol))
-
- svsp->abs_write = 1;
- else
- svsp->abs_write = 0;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * RIS - reset to initial state (hard emulator runtime reset)
- *---------------------------------------------------------------------------*/
-void
-vt_ris(struct video_state *svsp)
-{
- fillw(user_attr | ' ', svsp->Crtat, svsp->maxcol * svsp->screen_rows);
- svsp->cur_offset = 0; /* cursor upper left corner */
- svsp->col = 0;
- svsp->row = 0;
- svsp->lnm = 0; /* CR only */
- clear_dld(svsp); /* clear download charset */
- vt_clearudk(svsp); /* clear user defined keys */
- svsp->selchar = 0; /* selective attribute off */
- vt_str(svsp); /* and soft terminal reset */
-}
-
-/*---------------------------------------------------------------------------*
- * DECSTR - soft terminal reset (SOFT emulator runtime reset)
- *---------------------------------------------------------------------------*/
-void
-vt_str(struct video_state *svsp)
-{
- int i;
-
- clr_parms(svsp); /* escape parameter init */
- svsp->state = STATE_INIT; /* initial state */
-
- svsp->dis_fnc = 0; /* display functions reset */
-
- svsp->sc_flag = 0; /* save cursor position */
- svsp->transparent = 0; /* enable control code processing */
-
- for(i = 0; i < MAXTAB; i++) /* setup tabstops */
- {
- if(!(i % 8))
- svsp->tab_stops[i] = 1;
- else
- svsp->tab_stops[i] = 0;
- }
-
- svsp->irm = 0; /* replace mode */
- svsp->m_om = 0; /* origin mode */
- svsp->m_awm = 1; /* auto wrap mode */
-
-#if PCVT_INHIBIT_NUMLOCK
- svsp->num_lock = 0; /* keypad application mode */
-#else
- svsp->num_lock = 1; /* keypad numeric mode */
-#endif
-
- svsp->scroll_lock = 0; /* reset keyboard modes */
- svsp->caps_lock = 0;
-
- svsp->ckm = 1; /* cursor key mode = "normal" ... */
- svsp->scrr_beg = 0; /* start of scrolling region */
- svsp->scrr_len = svsp->screen_rows; /* no. of lines in scrolling region */
- svsp->abs_write = 0; /* scrr is complete screen */
- svsp->scrr_end = svsp->scrr_len - 1;
-
- if(adaptor_type == EGA_ADAPTOR || adaptor_type == VGA_ADAPTOR)
- {
- svsp->G0 = cse_ascii; /* G0 = ascii */
- svsp->G1 = cse_ascii; /* G1 = ascii */
- svsp->G2 = cse_supplemental; /* G2 = supplemental */
- svsp->G3 = cse_supplemental; /* G3 = supplemental */
- svsp->GL = &svsp->G0; /* GL = G0 */
- svsp->GR = &svsp->G2; /* GR = G2 */
- }
- else
- {
- svsp->G0 = csd_ascii; /* G0 = ascii */
- svsp->G1 = csd_ascii; /* G1 = ascii */
- svsp->G2 = csd_supplemental; /* G2 = supplemental */
- svsp->G3 = csd_supplemental; /* G3 = supplemental */
- svsp->GL = &svsp->G0; /* GL = G0 */
- svsp->GR = &svsp->G2; /* GR = G2 */
- }
-
- svsp->vtsgr = VT_NORMAL; /* no attributes */
- svsp->c_attr = user_attr; /* reset sgr to normal */
-
- svsp->selchar = 0; /* selective attribute off */
- vt_initsel(svsp);
-
- init_ufkl(svsp); /* init user fkey labels */
- init_sfkl(svsp); /* init system fkey labels */
-
- update_led(); /* update keyboard LED's */
-}
-
-/*---------------------------------------------------------------------------*
- * RI - reverse index, move cursor up
- *---------------------------------------------------------------------------*/
-void
-vt_ri(struct video_state *svsp)
-{
- if(svsp->cur_offset >= ((svsp->scrr_beg * svsp->maxcol) + svsp->maxcol))
- svsp->cur_offset -= svsp->maxcol;
- else
- roll_down(svsp, 1);
-}
-
-/*---------------------------------------------------------------------------*
- * IND - index, move cursor down
- *---------------------------------------------------------------------------*/
-void
-vt_ind(struct video_state *svsp)
-{
- if(svsp->cur_offset < (svsp->scrr_end * svsp->maxcol))
- svsp->cur_offset += svsp->maxcol;
- else
- roll_up(svsp, 1);
-}
-
-/*---------------------------------------------------------------------------*
- * NEL - next line, first pos of next line
- *---------------------------------------------------------------------------*/
-void
-vt_nel(struct video_state *svsp)
-{
- if(svsp->cur_offset < (svsp->scrr_end * svsp->maxcol))
- {
- svsp->cur_offset += (svsp->maxcol-svsp->col);
- svsp->col = 0;
- }
- else
- {
- roll_up(svsp, 1);
- svsp->cur_offset -= svsp->col;
- svsp->col = 0;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * set dec private modes, esc [ ? x h
- *---------------------------------------------------------------------------*/
-void
-vt_set_dec_priv_qm(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 0: /* error, ignored */
- case 1: /* CKM - cursor key mode */
- svsp->ckm = 1;
- break;
-
- case 2: /* ANM - ansi/vt52 mode */
- break;
-
- case 3: /* COLM - column mode */
- vt_col(svsp, SCR_COL132);
- break;
-
- case 4: /* SCLM - scrolling mode */
- case 5: /* SCNM - screen mode */
- break;
-
- case 6: /* OM - origin mode */
- svsp->m_om = 1;
- break;
-
- case 7: /* AWM - auto wrap mode */
- svsp->m_awm = 1;
- swritefkl(7,(u_char *)"AUTOWRAPENABLE *",svsp);
- break;
-
- case 8: /* ARM - auto repeat mode */
- kbrepflag = 1;
- break;
-
- case 9: /* INLM - interlace mode */
- case 10: /* EDM - edit mode */
- case 11: /* LTM - line transmit mode */
- case 12: /* */
- case 13: /* SCFDM - space compression / field delimiting */
- case 14: /* TEM - transmit execution mode */
- case 15: /* */
- case 16: /* EKEM - edit key execution mode */
- break;
-
- case 25: /* TCEM - text cursor enable mode */
- if(vsp == svsp)
- sw_cursor(1); /* cursor on */
- svsp->cursor_on = 1;
- break;
-
- case 42: /* NRCM - 7bit NRC characters */
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * reset dec private modes, esc [ ? x l
- *---------------------------------------------------------------------------*/
-void
-vt_reset_dec_priv_qm(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 0: /* error, ignored */
- case 1: /* CKM - cursor key mode */
- svsp->ckm = 0;
- break;
-
- case 2: /* ANM - ansi/vt52 mode */
- break;
-
- case 3: /* COLM - column mode */
- vt_col(svsp, SCR_COL80);
- break;
-
- case 4: /* SCLM - scrolling mode */
- case 5: /* SCNM - screen mode */
- break;
-
- case 6: /* OM - origin mode */
- svsp->m_om = 0;
- break;
-
- case 7: /* AWM - auto wrap mode */
- svsp->m_awm = 0;
- swritefkl(7,(u_char *)"AUTOWRAPENABLE ",svsp);
- break;
-
- case 8: /* ARM - auto repeat mode */
- kbrepflag = 0;
- break;
-
- case 9: /* INLM - interlace mode */
- case 10: /* EDM - edit mode */
- case 11: /* LTM - line transmit mode */
- case 12: /* */
- case 13: /* SCFDM - space compression / field delimiting */
- case 14: /* TEM - transmit execution mode */
- case 15: /* */
- case 16: /* EKEM - edit key execution mode */
- break;
-
- case 25: /* TCEM - text cursor enable mode */
- if(vsp == svsp)
- sw_cursor(0); /* cursor off */
- svsp->cursor_on = 0;
- break;
-
- case 42: /* NRCM - 7bit NRC characters */
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * set ansi modes, esc [ x
- *---------------------------------------------------------------------------*/
-void
-vt_set_ansi(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 0: /* error, ignored */
- case 1: /* GATM - guarded area transfer mode */
- case 2: /* KAM - keyboard action mode */
- case 3: /* CRM - Control Representation mode */
- break;
-
- case 4: /* IRM - insert replacement mode */
- svsp->irm = 1; /* Insert mode */
- break;
-
- case 5: /* SRTM - status report transfer mode */
- case 6: /* ERM - erasue mode */
- case 7: /* VEM - vertical editing mode */
- case 10: /* HEM - horizontal editing mode */
- case 11: /* PUM - position unit mode */
- case 12: /* SRM - send-receive mode */
- case 13: /* FEAM - format effector action mode */
- case 14: /* FETM - format effector transfer mode */
- case 15: /* MATM - multiple area transfer mode */
- case 16: /* TTM - transfer termination */
- case 17: /* SATM - selected area transfer mode */
- case 18: /* TSM - tabulation stop mode */
- case 19: /* EBM - editing boundary mode */
- break;
-
- case 20: /* LNM - line feed / newline mode */
- svsp->lnm = 1;
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * reset ansi modes, esc [ x
- *---------------------------------------------------------------------------*/
-void
-vt_reset_ansi(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 0: /* error, ignored */
- case 1: /* GATM - guarded area transfer mode */
- case 2: /* KAM - keyboard action mode */
- case 3: /* CRM - Control Representation mode */
- break;
-
- case 4: /* IRM - insert replacement mode */
- svsp->irm = 0; /* Replace mode */
- break;
-
- case 5: /* SRTM - status report transfer mode */
- case 6: /* ERM - erasue mode */
- case 7: /* VEM - vertical editing mode */
- case 10: /* HEM - horizontal editing mode */
- case 11: /* PUM - position unit mode */
- case 12: /* SRM - send-receive mode */
- case 13: /* FEAM - format effector action mode */
- case 14: /* FETM - format effector transfer mode */
- case 15: /* MATM - multiple area transfer mode */
- case 16: /* TTM - transfer termination */
- case 17: /* SATM - selected area transfer mode */
- case 18: /* TSM - tabulation stop mode */
- case 19: /* EBM - editing boundary mode */
- break;
-
- case 20: /* LNM - line feed / newline mode */
- svsp->lnm = 0;
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * clear tab stop(s)
- *---------------------------------------------------------------------------*/
-void
-vt_clrtab(struct video_state *svsp)
-{
- int i;
-
- if(svsp->parms[0] == 0)
- svsp->tab_stops[svsp->col] = 0;
- else if(svsp->parms[0] == 3)
- {
- for(i=0; i<MAXTAB; i++)
- svsp->tab_stops[i] = 0;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * DECSC - save cursor & attributes
- *---------------------------------------------------------------------------*/
-void
-vt_sc(struct video_state *svsp)
-{
- svsp->sc_flag = 1;
- svsp->sc_row = svsp->row;
- svsp->sc_col = svsp->col;
- svsp->sc_cur_offset = svsp->cur_offset;
- svsp->sc_attr = svsp->c_attr;
- svsp->sc_awm = svsp->m_awm;
- svsp->sc_om = svsp->m_om;
- svsp->sc_G0 = svsp->G0;
- svsp->sc_G1 = svsp->G1;
- svsp->sc_G2 = svsp->G2;
- svsp->sc_G3 = svsp->G3;
- svsp->sc_GL = svsp->GL;
- svsp->sc_GR = svsp->GR;
- svsp->sc_sel = svsp->selchar;
- svsp->sc_vtsgr = svsp->vtsgr;
-}
-
-/*---------------------------------------------------------------------------*
- * DECRC - restore cursor & attributes
- *---------------------------------------------------------------------------*/
-void
-vt_rc(struct video_state *svsp)
-{
- if(svsp->sc_flag == 1)
- {
- svsp->sc_flag = 0;
- svsp->row = svsp->sc_row;
- svsp->col = svsp->sc_col;
- svsp->cur_offset = svsp->sc_cur_offset;
- svsp->c_attr = svsp->sc_attr;
- svsp->m_awm = svsp->sc_awm;
- svsp->m_om = svsp->sc_om;
- svsp->G0 = svsp->sc_G0;
- svsp->G1 = svsp->sc_G1;
- svsp->G2 = svsp->sc_G2;
- svsp->G3 = svsp->sc_G3;
- svsp->GL = svsp->sc_GL;
- svsp->GR = svsp->sc_GR;
- svsp->selchar = svsp->sc_sel;
- svsp->vtsgr = svsp->sc_vtsgr;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * designate a character set as G0, G1, G2 or G3 for 94/96 char sets
- *---------------------------------------------------------------------------*/
-void
-vt_designate(struct video_state *svsp)
-{
- u_short *ctp = NULL;
- u_char ch;
-
- if(svsp->whichi == 1)
- ch = svsp->which[0];
- else
- {
- int i;
-
- if(svsp->dld_id[0] == '\0')
- return;
-
- if(!(((adaptor_type == EGA_ADAPTOR) ||
- (adaptor_type == VGA_ADAPTOR)) &&
- (vgacs[svsp->vga_charset].secondloaded)))
- {
- return;
- }
-
- for(i = (svsp->whichi)-1; i >= 0; i--)
- {
- if(svsp->which[i] != svsp->dld_id[i])
- return;
- }
-#ifdef HAVECSE_DOWNLOADABLE
- ctp = cse_downloadable;
- swcsp(svsp, ctp);
-#endif
- return;
- }
-
- if(((adaptor_type == EGA_ADAPTOR) || (adaptor_type == VGA_ADAPTOR)) &&
- (vgacs[svsp->vga_charset].secondloaded))
- {
- if((ch == svsp->dld_id[0]) && (svsp->dld_id[1] == '\0'))
- {
-#ifdef HAVECSE_DOWNLOADABLE
- ctp = cse_downloadable;
- swcsp(svsp, ctp);
-#endif
- return;
- }
-
- switch(ch)
- {
- case 'A': /* British or ISO-Latin-1 */
- switch(svsp->state)
- {
- case STATE_BROPN: /* designate G0 */
- case STATE_BRCLO: /* designate G1 */
- case STATE_STAR: /* designate G2 */
- case STATE_PLUS: /* designate G3 */
-#ifdef HAVECSE_BRITISH
- ctp = cse_british;
-#endif
- break;
-
- case STATE_MINUS: /* designate G1 (96)*/
- case STATE_DOT: /* designate G2 (96)*/
- case STATE_SLASH: /* designate G3 (96)*/
-#ifdef HAVECSE_ISOLATIN
- ctp = cse_isolatin;
-#endif
- break;
- }
- break;
-
- case 'B': /* USASCII */
-#ifdef HAVECSE_ASCII
- ctp = cse_ascii;
-#endif
- break;
-
- case 'C': /* Finnish */
- case '5': /* Finnish */
-#ifdef HAVECSE_FINNISH
- ctp = cse_finnish;
-#endif
- break;
-
- case 'E': /* Norwegian/Danish */
- case '6': /* Norwegian/Danish */
-#ifdef HAVECSE_NORWEGIANDANISH
- ctp = cse_norwegiandanish;
-#endif
- break;
-
- case 'H': /* Swedish */
- case '7': /* Swedish */
-#ifdef HAVECSE_SWEDISH
- ctp = cse_swedish;
-#endif
- break;
-
- case 'K': /* German */
-#ifdef HAVECSE_GERMAN
- ctp = cse_german;
-#endif
- break;
-
- case 'Q': /* French Canadien */
-#ifdef HAVECSE_FRENCHCANADA
- ctp = cse_frenchcanada;
-#endif
- break;
-
- case 'R': /* French */
-#ifdef HAVECSE_FRENCH
- ctp = cse_french;
-#endif
- break;
-
- case 'Y': /* Italian */
-#ifdef HAVECSE_ITALIAN
- ctp = cse_italian;
-#endif
- break;
-
- case 'Z': /* Spanish */
-#ifdef HAVECSE_SPANISH
- ctp = cse_spanish;
-#endif
- break;
-
- case '0': /* special graphics */
-#ifdef HAVECSE_SPECIAL
- ctp = cse_special;
-#endif
- break;
-
- case '1': /* alternate ROM */
-#ifdef HAVECSE_ALTERNATEROM1
- ctp = cse_alternaterom1;
-#endif
- break;
-
- case '2': /* alt ROM, spec graphics */
-#ifdef HAVECSE_ALTERNATEROM2
- ctp = cse_alternaterom2;
-#endif
- break;
-
- case '3': /* HP Roman 8, upper 128 chars*/
-#ifdef HAVECSE_ROMAN8
- ctp = cse_roman8;
-#endif
- break;
-
- case '4': /* Dutch */
-#ifdef HAVECSE_DUTCH
- ctp = cse_dutch;
-#endif
- break;
-
- case '<': /* DEC Supplemental */
-#ifdef HAVECSE_SUPPLEMENTAL
- ctp = cse_supplemental;
-#endif
- break;
-
- case '=': /* Swiss */
-#ifdef HAVECSE_SWISS
- ctp = cse_swiss;
-#endif
- break;
-
- case '>': /* DEC Technical */
-#ifdef HAVECSE_TECHNICAL
- ctp = cse_technical;
-#endif
- break;
-
- default:
- break;
- }
- }
- else
- {
- switch(ch)
- {
- case 'A': /* British or ISO-Latin-1 */
- switch(svsp->state)
- {
- case STATE_BROPN: /* designate G0 */
- case STATE_BRCLO: /* designate G1 */
- case STATE_STAR: /* designate G2 */
- case STATE_PLUS: /* designate G3 */
-#ifdef HAVECSD_BRITISH
- ctp = csd_british;
-#endif
- break;
-
- case STATE_MINUS: /* designate G1 (96)*/
- case STATE_DOT: /* designate G2 (96)*/
- case STATE_SLASH: /* designate G3 (96)*/
-#ifdef HAVECSD_ISOLATIN
- ctp = csd_isolatin;
-#endif
- break;
- }
- break;
-
- case 'B': /* USASCII */
-#ifdef HAVECSD_ASCII
- ctp = csd_ascii;
-#endif
- break;
-
- case 'C': /* Finnish */
- case '5': /* Finnish */
-#ifdef HAVECSD_FINNISH
- ctp = csd_finnish;
-#endif
- break;
-
- case 'E': /* Norwegian/Danish */
- case '6': /* Norwegian/Danish */
-#ifdef HAVECSD_NORWEGIANDANISH
- ctp = csd_norwegiandanish;
-#endif
- break;
-
- case 'H': /* Swedish */
- case '7': /* Swedish */
-#ifdef HAVECSD_SWEDISH
- ctp = csd_swedish;
-#endif
- break;
-
- case 'K': /* German */
-#ifdef HAVECSD_GERMAN
- ctp = csd_german;
-#endif
- break;
-
- case 'Q': /* French Canadien */
-#ifdef HAVECSD_FRENCHCANADA
- ctp = csd_frenchcanada;
-#endif
- break;
-
- case 'R': /* French */
-#ifdef HAVECSD_FRENCH
- ctp = csd_french;
-#endif
- break;
-
- case 'Y': /* Italian */
-#ifdef HAVECSD_ITALIAN
- ctp = csd_italian;
-#endif
- break;
-
- case 'Z': /* Spanish */
-#ifdef HAVECSD_SPANISH
- ctp = csd_spanish;
-#endif
- break;
-
- case '0': /* special graphics */
-#ifdef HAVECSD_SPECIAL
- ctp = csd_special;
-#endif
- break;
-
- case '1': /* alternate ROM */
-#ifdef HAVECSD_ALTERNATEROM1
- ctp = csd_alternaterom1;
-#endif
- break;
-
- case '2': /* alt ROM, spec graphics */
-#ifdef HAVECSD_ALTERNATEROM2
- ctp = csd_alternaterom2;
-#endif
- break;
-
- case '3': /* HP Roman 8, upper 128 chars*/
-#ifdef HAVECSD_ROMAN8
- ctp = csd_roman8;
-#endif
- break;
-
- case '4': /* Dutch */
-#ifdef HAVECSD_DUTCH
- ctp = csd_dutch;
-#endif
- break;
-
- case '<': /* DEC Supplemental */
-#ifdef HAVECSD_SUPPLEMENTAL
- ctp = csd_supplemental;
-#endif
- break;
-
- case '=': /* Swiss */
-#ifdef HAVECSD_SWISS
- ctp = csd_swiss;
-#endif
- break;
-
- case '>': /* DEC Technical */
-#ifdef HAVECSD_TECHNICAL
- ctp = csd_technical;
-#endif
- break;
-
- default:
- break;
- }
- }
- swcsp(svsp, ctp);
-}
-
-/*---------------------------------------------------------------------------*
- * device attributes
- *---------------------------------------------------------------------------*/
-void
-vt_da(struct video_state *svsp)
-{
- static u_char *response = (u_char *)DA_VT220;
-
- svsp->report_chars = response;
- svsp->report_count = 18;
- respond(svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * screen alignment display
- *---------------------------------------------------------------------------*/
-void
-vt_aln(struct video_state *svsp)
-{
- register int i;
-
- svsp->cur_offset = 0;
- svsp->col = 0;
-
- for(i=0; i < (svsp->screen_rows*svsp->maxcol); i++)
- {
- *(svsp->Crtat + svsp->cur_offset) = user_attr | 'E';
- vt_selattr(svsp);
- svsp->cur_offset++;
- svsp->col++;
- }
-
- svsp->cur_offset = 0; /* reset everything ! */
- svsp->col = 0;
- svsp->row = 0;
-}
-
-/*---------------------------------------------------------------------------*
- * request terminal parameters
- *---------------------------------------------------------------------------*/
-void
-vt_reqtparm(struct video_state *svsp)
-{
- static u_char *answr = (u_char *)"\033[3;1;1;120;120;1;0x";
-
- svsp->report_chars = answr;
- svsp->report_count = 20;
- respond(svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * invoke selftest
- *---------------------------------------------------------------------------*/
-void
-vt_tst(struct video_state *svsp)
-{
- clear_dld(svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * device status reports
- *---------------------------------------------------------------------------*/
-void
-vt_dsr(struct video_state *svsp)
-{
- static u_char *answr = (u_char *)"\033[0n";
- static u_char *panswr = (u_char *)"\033[?13n"; /* Printer Unattached */
- static u_char *udkanswr = (u_char *)"\033[?21n"; /* UDK Locked */
- static u_char *langanswr = (u_char *)"\033[?27;1n"; /* North American*/
- static u_char buffer[16];
- int i = 0;
-
- switch(svsp->parms[0])
- {
- case 5: /* return status */
- svsp->report_chars = answr;
- svsp->report_count = 4;
- respond(svsp);
- break;
-
- case 6: /* return cursor position */
- buffer[i++] = 0x1b;
- buffer[i++] = '[';
- if((svsp->row+1) > 10)
- buffer[i++] = ((svsp->row+1) / 10) + '0';
- buffer[i++] = ((svsp->row+1) % 10) + '0';
- buffer[i++] = ';';
- if((svsp->col+1) > 10)
- buffer[i++] = ((svsp->col+1) / 10) + '0';
- buffer[i++] = ((svsp->col+1) % 10) + '0';
- buffer[i++] = 'R';
- buffer[i++] = '\0';
-
- svsp->report_chars = buffer;
- svsp->report_count = i;
- respond(svsp);
- break;
-
- case 15: /* return printer status */
- svsp->report_chars = panswr;
- svsp->report_count = 6;
- respond(svsp);
- break;
-
- case 25: /* return udk status */
- svsp->report_chars = udkanswr;
- svsp->report_count = 6;
- respond(svsp);
- break;
-
- case 26: /* return language status */
- svsp->report_chars = langanswr;
- svsp->report_count = 8;
- respond(svsp);
- break;
-
- default: /* nothing else valid */
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * IL - insert line
- *---------------------------------------------------------------------------*/
-void
-vt_il(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if((svsp->row >= svsp->scrr_beg) && (svsp->row <= svsp->scrr_end))
- {
- if(p <= 0)
- p = 1;
- else if(p > svsp->scrr_end - svsp->row)
- p = svsp->scrr_end - svsp->row;
-
- svsp->cur_offset -= svsp->col;
- svsp->col = 0;
- if(svsp->row == svsp->scrr_beg)
- roll_down(svsp, p);
- else
- {
- bcopy(svsp->Crtat + svsp->cur_offset,
- svsp->Crtat + svsp->cur_offset + (p * svsp->maxcol),
- svsp->maxcol * (svsp->scrr_end-svsp->row+1-p) * CHR );
-
- fillw(user_attr | ' ',
- svsp->Crtat + svsp->cur_offset,
- p * svsp->maxcol);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * ICH - insert character
- *---------------------------------------------------------------------------*/
-void
-vt_ic(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if(p <= 0)
- p = 1;
- else if(p > svsp->maxcol-svsp->col)
- p = svsp->maxcol-svsp->col;
-
- while(p--)
- {
- bcopy((svsp->Crtat + svsp->cur_offset),
- (svsp->Crtat + svsp->cur_offset) + 1,
- (((svsp->maxcol)-1)-svsp->col) * CHR);
-
- *(svsp->Crtat + svsp->cur_offset) = user_attr | ' ';
- vt_selattr(svsp);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * DL - delete line
- *---------------------------------------------------------------------------*/
-void
-vt_dl(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if((svsp->row >= svsp->scrr_beg) && (svsp->row <= svsp->scrr_end))
- {
- if(p <= 0)
- p = 1;
- else if(p > svsp->scrr_end - svsp->row)
- p = svsp->scrr_end - svsp->row;
-
- svsp->cur_offset -= svsp->col;
- svsp->col = 0;
-
- if(svsp->row == svsp->scrr_beg)
- roll_up(svsp, p);
- else
- {
- bcopy(svsp->Crtat + svsp->cur_offset + (p * svsp->maxcol),
- svsp->Crtat + svsp->cur_offset,
- svsp->maxcol * (svsp->scrr_end-svsp->row+1-p) * CHR );
-
- fillw(user_attr | ' ',
- svsp->Crtat + ((svsp->scrr_end-p+1) * svsp->maxcol),
- p * svsp->maxcol);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * DCH - delete character
- *---------------------------------------------------------------------------*/
-void
-vt_dch(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if(p <= 0)
- p = 1;
- else if(p > svsp->maxcol-svsp->col)
- p = svsp->maxcol-svsp->col;
-
- while(p--)
- {
- bcopy((svsp->Crtat + svsp->cur_offset)+1,
- (svsp->Crtat + svsp->cur_offset),
- (((svsp->maxcol)-1) - svsp->col)* CHR );
-
- *((svsp->Crtat + svsp->cur_offset) +
- ((svsp->maxcol)-1)-svsp->col) = user_attr | ' ';
- }
-}
-
-/*---------------------------------------------------------------------------*
- * scroll up
- *---------------------------------------------------------------------------*/
-void
-vt_su(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if(p <= 0)
- p = 1;
- else if(p > svsp->screen_rows-1)
- p = svsp->screen_rows-1;
-
- roll_up(svsp, p);
-}
-
-/*---------------------------------------------------------------------------*
- * scroll down
- *---------------------------------------------------------------------------*/
-void
-vt_sd(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if(p <= 0)
- p = 1;
- else if(p > svsp->screen_rows-1)
- p = svsp->screen_rows-1;
-
- roll_down(svsp, p);
-}
-
-/*---------------------------------------------------------------------------*
- * ECH - erase character
- *---------------------------------------------------------------------------*/
-void
-vt_ech(struct video_state *svsp)
-{
- register int p = svsp->parms[0];
-
- if(p <= 0)
- p = 1;
- else if(p > svsp->maxcol-svsp->col)
- p = svsp->maxcol-svsp->col;
-
- fillw(user_attr | ' ', (svsp->Crtat + svsp->cur_offset), p);
-}
-
-/*---------------------------------------------------------------------------*
- * media copy (NO PRINTER AVAILABLE IN KERNEL ...)
- *---------------------------------------------------------------------------*/
-void
-vt_mc(struct video_state *svsp)
-{
-}
-
-/*---------------------------------------------------------------------------*
- * Device Control String State Machine Entry for:
- *
- * DECUDK - user-defined keys and
- * DECDLD - downloadable charset
- *
- *---------------------------------------------------------------------------*/
-void
-vt_dcsentry(int ch, struct video_state *svsp)
-{
- switch(svsp->dcs_state)
- {
- case DCS_INIT:
- switch(ch)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': /* parameters */
- svsp->parms[svsp->parmi] *= 10;
- svsp->parms[svsp->parmi] += (ch -'0');
- break;
-
- case ';': /* next parameter */
- svsp->parmi =
- (svsp->parmi+1 < MAXPARMS) ?
- svsp->parmi+1 : svsp->parmi;
- break;
-
- case '|': /* DECUDK */
- svsp->transparent = 1;
- init_udk(svsp);
- svsp->dcs_state = DCS_AND_UDK;
- break;
-
- case '{': /* DECDLD */
- svsp->transparent = 1;
- init_dld(svsp);
- svsp->dcs_state = DCS_DLD_DSCS;
- break;
-
- default: /* failsafe */
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- break;
- }
- break;
-
- case DCS_AND_UDK: /* DCS ... | */
- switch(ch)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9': /* fkey number */
- svsp->udk_fnckey *= 10;
- svsp->udk_fnckey += (ch -'0');
- break;
-
- case '/': /* Key */
- svsp->dcs_state = DCS_UDK_DEF;
- break;
-
- case 0x1b: /* ESC */
- svsp->dcs_state = DCS_UDK_ESC;
- break;
-
- default:
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- break;
- }
- break;
-
- case DCS_UDK_DEF: /* DCS ... | fnckey / */
- switch(ch)
- {
- case '0':
- case '1':
- case '2':
- case '3':
- case '4':
- case '5':
- case '6':
- case '7':
- case '8':
- case '9':
- if(svsp->udk_deflow) /* low nibble */
- {
- svsp->udk_def[svsp->udk_defi] |= (ch -'0');
- svsp->udk_deflow = 0;
- svsp->udk_defi = (svsp->udk_defi+1 >= MAXUDKDEF) ?
- svsp->udk_defi : svsp->udk_defi+1;
- }
- else /* high nibble */
- {
- svsp->udk_def[svsp->udk_defi] = ((ch -'0') << 4);
- svsp->udk_deflow = 1;
- }
- break;
-
- case 'a':
- case 'b':
- case 'c':
- case 'd':
- case 'e':
- case 'f':
- if(svsp->udk_deflow) /* low nibble */
- {
- svsp->udk_def[svsp->udk_defi] |= (ch - 'a' + 10);
- svsp->udk_deflow = 0;
- svsp->udk_defi = (svsp->udk_defi+1 >= MAXUDKDEF) ?
- svsp->udk_defi : svsp->udk_defi+1;
- }
- else /* high nibble */
- {
- svsp->udk_def[svsp->udk_defi] = ((ch - 'a' + 10) << 4);
- svsp->udk_deflow = 1;
- }
- break;
-
-
-
- case 'A':
- case 'B':
- case 'C':
- case 'D':
- case 'E':
- case 'F':
- if(svsp->udk_deflow) /* low nibble */
- {
- svsp->udk_def[svsp->udk_defi] |= (ch - 'A' + 10);
- svsp->udk_deflow = 0;
- svsp->udk_defi = (svsp->udk_defi+1 >= MAXUDKDEF) ?
- svsp->udk_defi : svsp->udk_defi+1;
- }
- else /* high nibble */
- {
- svsp->udk_def[svsp->udk_defi] = ((ch - 'A' + 10) << 4);
- svsp->udk_deflow = 1;
- }
- break;
-
- case ';': /* next function key */
- vt_udk(svsp);
- svsp->dcs_state = DCS_AND_UDK;
- break;
-
- case 0x1b: /* ESC */
- svsp->dcs_state = DCS_UDK_ESC;
- break;
-
- default:
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- break;
- }
- break;
-
- case DCS_UDK_ESC: /* DCS ... | fkey/def ... ESC */
- switch(ch)
- {
- case '\\': /* ST */
- vt_udk(svsp);
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- break;
-
- default:
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- break;
- }
- break;
-
-
- case DCS_DLD_DSCS: /* got DCS ... { */
- if(ch >= ' ' && ch <= '/') /* intermediates ... */
- {
- svsp->dld_dscs[svsp->dld_dscsi] = ch;
- svsp->dld_id[svsp->dld_dscsi] = ch;
- if(svsp->dld_dscsi >= DSCS_LENGTH)
- {
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- svsp->dld_id[0] = '\0';
- }
- else
- {
- svsp->dld_dscsi++;
- }
- }
- else if(ch >= '0' && ch <= '~') /* final .... */
- {
- svsp->dld_dscs[svsp->dld_dscsi] = ch;
- svsp->dld_id[svsp->dld_dscsi++] = ch;
- svsp->dld_id[svsp->dld_dscsi] = '\0';
- svsp->dcs_state = DCS_DLD_DEF;
- }
- else
- {
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- svsp->dld_id[0] = '\0';
- }
- break;
-
- case DCS_DLD_DEF: /* DCS ... { dscs */
- switch(ch)
- {
- case 0x1b: /* ESC */
- svsp->dcs_state = DCS_DLD_ESC;
- break;
-
- case '/': /* sixel upper / lower divider */
- svsp->dld_sixel_lower = 1;
- break;
-
- case ';': /* character divider */
- vt_dld(svsp);
- svsp->parms[1]++; /* next char */
- break;
-
- default:
- if (svsp->dld_sixel_lower)
- {
- if(ch >= '?' && ch <= '~')
- svsp->sixel.lower[svsp->dld_sixelli] = ch - '?';
- svsp->dld_sixelli =
- (svsp->dld_sixelli+1 < MAXSIXEL) ?
- svsp->dld_sixelli+1 : svsp->dld_sixelli;
- }
- else
- {
- if(ch >= '?' && ch <= '~')
- svsp->sixel.upper[svsp->dld_sixelui] = ch - '?';
- svsp->dld_sixelui =
- (svsp->dld_sixelui+1 < MAXSIXEL) ?
- svsp->dld_sixelui+1 : svsp->dld_sixelui;
- }
- break;
- }
- break;
-
- case DCS_DLD_ESC: /* DCS ... { dscs ... / ... ESC */
- switch(ch)
- {
- case '\\': /* String Terminator ST */
- vt_dld(svsp);
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- break;
-
- default:
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- svsp->dld_id[0] = '\0';
- break;
- }
- break;
-
- default:
- svsp->transparent = 0;
- svsp->state = STATE_INIT;
- svsp->dcs_state = DCS_INIT;
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * User Defineable Keys
- *---------------------------------------------------------------------------*/
-void
-vt_udk(struct video_state *svsp)
-{
- int key, start, max, i;
- int usedff = 0;
-
- if(svsp->parms[0] != 1) /* clear all ? */
- {
- vt_clearudk(svsp);
- svsp->parms[0] = 1;
- }
-
- if(svsp->udk_fnckey < 17 || svsp->udk_fnckey > 34)
- {
- init_udk(svsp);
- return;
- }
-
- key = svsp->udk_fnckey - 17; /* index into table */
-
- if(svsp->ukt.length[key] == 0) /* never used ? */
- {
- if(svsp->udkff < MAXUDKDEF-2) /* space available ? */
- {
- start = svsp->udkff; /* next sequential */
- max = MAXUDKDEF - svsp->udkff; /* space available */
- svsp->ukt.first[key] = start; /* start entry */
- usedff = 1; /* flag to update later */
- }
- else /* no space */
- {
- init_udk(svsp);
- return;
- }
- }
- else /* in use, redefine */
- {
- start = svsp->ukt.first[key]; /* start entry */
- max = svsp->ukt.length[key]; /* space available */
- }
-
- if(max < 2) /* hmmm .. */
- {
- init_udk(svsp);
- return;
- }
-
- max--; /* adjust for tailing '\0' */
-
- for(i = 0; i < max && i < svsp->udk_defi; i++)
- svsp->udkbuf[start++] = svsp->udk_def[i];
-
- svsp->udkbuf[start] = '\0'; /* make it a string, see pcvt_kbd.c */
- svsp->ukt.length[key] = i+1; /* count for tailing '\0' */
- if(usedff)
- svsp->udkff += (i+2); /* new start location */
-
- init_udk(svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * clear all User Defineable Keys
- *---------------------------------------------------------------------------*/
-void
-vt_clearudk(struct video_state *svsp)
-{
- register int i;
-
- for(i = 0; i < MAXUDKEYS; i++)
- {
- svsp->ukt.first[i] = 0;
- svsp->ukt.length[i] = 0;
- }
- svsp->udkff = 0;
-}
-
-/*---------------------------------------------------------------------------*
- * Down line LoaDable Fonts
- *---------------------------------------------------------------------------*/
-void
-vt_dld(struct video_state *svsp)
-{
- unsigned char vgacharset;
- unsigned char vgachar[16];
- unsigned char vgacharb[16];
-
- if(vgacs[svsp->vga_charset].secondloaded)
- vgacharset = vgacs[svsp->vga_charset].secondloaded;
- else
- return;
-
- svsp->parms[1] = (svsp->parms[1] < 1) ? 1 :
- ((svsp->parms[1] > 0x7E) ? 0x7E : svsp->parms[1]);
-
- if(svsp->parms[2] != 1) /* Erase all characters ? */
- {
- clear_dld(svsp);
- svsp->parms[2] = 1; /* Only erase all characters once per sequence */
- }
-
- sixel_vga(&(svsp->sixel),vgachar);
-
- switch(vgacs[vgacharset].char_scanlines & 0x1F)
- {
- case 7:
- vga10_vga8(vgachar,vgacharb);
- break;
-
- case 9:
- default:
- vga10_vga10(vgachar,vgacharb);
- break;
-
- case 13:
- vga10_vga14(vgachar,vgacharb);
- break;
-
- case 15:
- vga10_vga16(vgachar,vgacharb);
- break;
- }
-
- loadchar(vgacharset, svsp->parms[1] + 0xA0, 16, vgacharb);
-
- init_dld(svsp);
-}
-
-/*---------------------------------------------------------------------------*
- * select character attributes
- *---------------------------------------------------------------------------*/
-void
-vt_sca(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 1:
- svsp->selchar = 1;
- break;
- case 0:
- case 2:
- default:
- svsp->selchar = 0;
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * initalize selective attribute bit array
- *---------------------------------------------------------------------------*/
-void
-vt_initsel(struct video_state *svsp)
-{
- register int i;
-
- for(i = 0;i < MAXDECSCA;i++)
- svsp->decsca[i] = 0;
-}
-
-/*---------------------------------------------------------------------------*
- * DECSEL - selective erase in line
- *---------------------------------------------------------------------------*/
-void
-vt_sel(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 0:
- selective_erase(svsp, (svsp->Crtat + svsp->cur_offset),
- svsp->maxcol-svsp->col);
- break;
-
- case 1:
- selective_erase(svsp, (svsp->Crtat + svsp->cur_offset)-
- svsp->col, svsp->col + 1);
- break;
-
- case 2:
- selective_erase(svsp, (svsp->Crtat + svsp->cur_offset)-
- svsp->col, svsp->maxcol);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * DECSED - selective erase in display
- *---------------------------------------------------------------------------*/
-void
-vt_sed(struct video_state *svsp)
-{
- switch(svsp->parms[0])
- {
- case 0:
- selective_erase(svsp, (svsp->Crtat + svsp->cur_offset),
- svsp->Crtat + (svsp->maxcol * svsp->screen_rows) -
- (svsp->Crtat + svsp->cur_offset));
- break;
-
- case 1:
- selective_erase(svsp, svsp->Crtat,
- (svsp->Crtat + svsp->cur_offset) - svsp->Crtat + 1 );
- break;
-
- case 2:
- selective_erase(svsp, svsp->Crtat,
- svsp->maxcol * svsp->screen_rows);
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * scroll screen n lines up
- *---------------------------------------------------------------------------*/
-void
-roll_up(struct video_state *svsp, int n)
-{
- if(svsp->scrr_beg == 0 && /* if scroll region is whole screen */
- svsp->scrr_len == svsp->screen_rows &&
- (svsp != vsp || /* and either running in memory */
- (svsp->screen_rows == svsp->screen_rowsize && /* or no fkeys */
- adaptor_type != MDA_ADAPTOR))) /* and not on MDA/Hercules */
- {
- u_short *Memory =
-#ifdef XSERVER
- (vsp != svsp || (vsp->vt_status & VT_GRAFX)) ?
-#else
- (vsp != svsp) ?
-#endif
- svsp->Memory : Crtat;
-
- if(svsp->Crtat > (Memory + (svsp->screen_rows - n) *
- svsp->maxcol))
- {
- bcopy(svsp->Crtat + svsp->maxcol * n, Memory,
- svsp->maxcol * (svsp->screen_rows - n) * CHR);
-
- svsp->Crtat = Memory;
- }
- else
- {
- svsp->Crtat += n * svsp->maxcol;
- }
-#ifdef XSERVER
- if(vsp == svsp && !(vsp->vt_status & VT_GRAFX))
-#else
- if(vsp == svsp)
-#endif
- {
- outb(addr_6845, CRTC_STARTADRH);
- outb(addr_6845+1, (svsp->Crtat - Crtat) >> 8);
- outb(addr_6845, CRTC_STARTADRL);
- outb(addr_6845+1, (svsp->Crtat - Crtat));
- }
- }
- else
- {
- bcopy( svsp->Crtat + ((svsp->scrr_beg + n) * svsp->maxcol),
- svsp->Crtat + (svsp->scrr_beg * svsp->maxcol),
- svsp->maxcol * (svsp->scrr_len - n) * CHR );
- }
- fillw( user_attr | ' ',
- svsp->Crtat + ((svsp->scrr_end - n + 1) * svsp->maxcol),
- n * svsp->maxcol);
-
-/*XXX*/ if(svsp->scroll_lock && svsp->openf && curproc)
- tsleep((caddr_t)&(svsp->scroll_lock), PPAUSE, "scrlck", 0);
-}
-
-/*---------------------------------------------------------------------------*
- * scroll screen n lines down
- *---------------------------------------------------------------------------*/
-static void
-roll_down(struct video_state *svsp, int n)
-{
- if(svsp->scrr_beg == 0 && /* if scroll region is whole screen */
- svsp->scrr_len == svsp->screen_rows &&
- (svsp != vsp || /* and either running in memory */
- (svsp->screen_rows == svsp->screen_rowsize && /* or no fkeys */
- adaptor_type != MDA_ADAPTOR))) /* and not on MDA/Hercules */
- {
- u_short *Memory =
-#ifdef XSERVER
- (vsp != svsp || (vsp->vt_status & VT_GRAFX)) ?
-#else
- (vsp != svsp) ?
-#endif
- svsp->Memory : Crtat;
-
- if (svsp->Crtat < (Memory + n * svsp->maxcol))
- {
- bcopy(svsp->Crtat,
- Memory + svsp->maxcol * (svsp->screen_rows + n),
- svsp->maxcol * (svsp->screen_rows - n) * CHR);
-
- svsp->Crtat = Memory + svsp->maxcol * svsp->screen_rows;
- }
- else
- {
- svsp->Crtat -= n * svsp->maxcol;
- }
-#ifdef XSERVER
- if(vsp == svsp && !(vsp->vt_status & VT_GRAFX))
-#else
- if(vsp == svsp)
-#endif
- {
- outb(addr_6845, CRTC_STARTADRH);
- outb(addr_6845+1, (svsp->Crtat - Crtat) >> 8);
- outb(addr_6845, CRTC_STARTADRL);
- outb(addr_6845+1, (svsp->Crtat - Crtat));
- }
- }
- else
- {
- bcopy( svsp->Crtat + (svsp->scrr_beg * svsp->maxcol),
- svsp->Crtat + ((svsp->scrr_beg + n) * svsp->maxcol),
- svsp->maxcol * (svsp->scrr_len - n) * CHR );
- }
- fillw( user_attr | ' ',
- svsp->Crtat + (svsp->scrr_beg * svsp->maxcol),
- n * svsp->maxcol);
-
-/*XXX*/ if(svsp->scroll_lock && svsp->openf && curproc)
- tsleep((caddr_t)&(svsp->scroll_lock), PPAUSE, "scrlck", 0);
-}
-
-/*---------------------------------------------------------------------------*
- * switch charset pointers
- *---------------------------------------------------------------------------*/
-static void
-swcsp(struct video_state *svsp, u_short *ctp)
-{
- if(ctp == NULL)
- return;
-
- switch(svsp->state)
- {
- case STATE_BROPN: /* designate G0 */
- svsp->G0 = ctp;
- break;
-
- case STATE_BRCLO: /* designate G1 */
- case STATE_MINUS: /* designate G1 (96) */
- svsp->G1 = ctp;
- break;
-
- case STATE_STAR: /* designate G2 */
- case STATE_DOT: /* designate G2 (96) */
- svsp->G2 = ctp;
- break;
-
- case STATE_PLUS: /* designate G3 */
- case STATE_SLASH: /* designate G3 (96) */
- svsp->G3 = ctp;
- break;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * process terminal responses
- *---------------------------------------------------------------------------*/
-static void
-respond(struct video_state *svsp)
-{
- if(!(svsp->openf)) /* are we opened ? */
- return;
-
- while (*svsp->report_chars && svsp->report_count > 0)
- {
- ttyld_rint(svsp->vs_tty, *svsp->report_chars++ & 0xff);
- svsp->report_count--;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Initialization for User Defineable Keys
- *---------------------------------------------------------------------------*/
-static void
-init_udk(struct video_state *svsp)
-{
- svsp->udk_defi = 0;
- svsp->udk_deflow = 0;
- svsp->udk_fnckey = 0;
-}
-
-/*---------------------------------------------------------------------------*
- * Clear loaded downloadable (DLD) character set
- *---------------------------------------------------------------------------*/
-static void
-clear_dld(struct video_state *svsp)
-{
- register int i;
- unsigned char vgacharset;
- unsigned char vgachar[16];
-
- if(vgacs[svsp->vga_charset].secondloaded)
- vgacharset = vgacs[svsp->vga_charset].secondloaded;
- else
- return;
-
- for(i=0;i < 16;i++) /* A zeroed character, vt220 has inverted '?' */
- vgachar[i] = 0x00;
-
- for(i=1;i <= 94;i++) /* Load (erase) all characters */
- loadchar(vgacharset, i + 0xA0, 16, vgachar);
-}
-
-/*---------------------------------------------------------------------------*
- * Initialization for Down line LoaDable Fonts
- *---------------------------------------------------------------------------*/
-static void
-init_dld(struct video_state *svsp)
-{
- register int i;
-
- svsp->dld_dscsi = 0;
- svsp->dld_sixel_lower = 0;
- svsp->dld_sixelli = 0;
- svsp->dld_sixelui = 0;
-
- for(i = 0;i < MAXSIXEL;i++)
- svsp->sixel.lower[i] = svsp->sixel.upper[i] = 0;
-}
-
-/*---------------------------------------------------------------------------*
- * selective erase a region
- *---------------------------------------------------------------------------*/
-static void
-selective_erase(struct video_state *svsp, u_short *pcrtat, int length)
-{
- register int i, j;
-
- for(j = pcrtat - svsp->Crtat, i = 0;i < length;i++,pcrtat++)
- {
- if(!(svsp->decsca[INT_INDEX(j+i)] & (1 << BIT_INDEX(j+i))))
- {
- *pcrtat &= 0xFF00; /* Keep the video character attributes */
- *pcrtat += ' '; /* Erase the character */
- }
- }
-}
-
-/* ------------------------- E O F ------------------------------------------*/
diff --git a/sys/pc98/include/pcvt_ioctl.h b/sys/pc98/include/pcvt_ioctl.h
deleted file mode 100644
index 1a6ade7..0000000
--- a/sys/pc98/include/pcvt_ioctl.h
+++ /dev/null
@@ -1,6 +0,0 @@
-/*-
- * This file is in the public domain.
- */
-/* $FreeBSD$ */
-
-#include <i386/pcvt_ioctl.h>
diff --git a/tools/build/options/WITHOUT_PCVT b/tools/build/options/WITHOUT_PCVT
deleted file mode 100644
index 1ac1267..0000000
--- a/tools/build/options/WITHOUT_PCVT
+++ /dev/null
@@ -1,4 +0,0 @@
-.\" $FreeBSD$
-Set to not build
-.Xr pcvt 4
-system console utilities.
diff --git a/tools/make_libdeps.sh b/tools/make_libdeps.sh
index b5af4bc..1a37649 100644
--- a/tools/make_libdeps.sh
+++ b/tools/make_libdeps.sh
@@ -37,7 +37,6 @@ LIBS="
kerberos5/lib
secure/lib
usr.bin/lex/lib
- usr.sbin/pcvt/keycap
" # where to scan for libraries
# This sed(1) filter is used to convert -lfoo to path/to/libfoo.
diff --git a/usr.sbin/Makefile b/usr.sbin/Makefile
index 524f9c2..9c74422 100644
--- a/usr.sbin/Makefile
+++ b/usr.sbin/Makefile
@@ -113,7 +113,6 @@ SUBDIR= ac \
${_ofwdump} \
${_pccard} \
pciconf \
- ${_pcvt} \
periodic \
pkg_install \
pmccontrol \
@@ -312,9 +311,6 @@ _acpi= acpi
.endif
_arlcontrol= arlcontrol
_boot0cfg= boot0cfg
-.if ${MK_PCVT} != "no"
-_pcvt= pcvt
-.endif
_wlconfig= wlconfig
.elif ${MACHINE} == "pc98"
_boot98cfg= boot98cfg
diff --git a/usr.sbin/moused/moused.8 b/usr.sbin/moused/moused.8
index 38146da..f635a15 100644
--- a/usr.sbin/moused/moused.8
+++ b/usr.sbin/moused/moused.8
@@ -723,11 +723,6 @@ file, and bind
to a key in your window manager, you can suspend mouse events on your laptop if
you keep brushing over the mouse pad while typing.
.Sh CAVEATS
-The
-.Nm
-utility does not currently work with the alternative console driver
-.Xr pcvt 4 .
-.Pp
Many pad devices behave as if the first (left) button were pressed if
the user
.Dq taps
@@ -760,7 +755,6 @@ option to assign the physical right button to the logical middle button:
.Xr vidcontrol 1 ,
.Xr keyboard 4 ,
.Xr mse 4 ,
-.Xr pcvt 4 ,
.Xr psm 4 ,
.Xr screen 4 ,
.Xr sysmouse 4 ,
diff --git a/usr.sbin/pcvt/Makefile b/usr.sbin/pcvt/Makefile
deleted file mode 100644
index ab72a2d..0000000
--- a/usr.sbin/pcvt/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-
-SUBDIR= keycap cursor fontedit fonts kcon loadfont scon \
- userkeys ispcvt
-SUBDIR+= vgaio kbdio
-SUBDIR+= demo
-SUBDIR+= Misc
-
-.include <bsd.subdir.mk>
diff --git a/usr.sbin/pcvt/Makefile.inc b/usr.sbin/pcvt/Makefile.inc
deleted file mode 100644
index 7899d9c..0000000
--- a/usr.sbin/pcvt/Makefile.inc
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-FONTDIR = /usr/share/misc/pcvtfonts
-
-.include "../Makefile.inc"
diff --git a/usr.sbin/pcvt/Misc/Doc/Acknowledgements b/usr.sbin/pcvt/Misc/Doc/Acknowledgements
deleted file mode 100644
index 327f23d..0000000
--- a/usr.sbin/pcvt/Misc/Doc/Acknowledgements
+++ /dev/null
@@ -1,111 +0,0 @@
-Thank You, (in the order of appearance)
-
-
- Lynne and Bill Jolitz
-
- for your work on 386BSD and making all this possible !
-
-
- Holger Veit (veit@du9ds3.uni-duisburg.de)
-
- for the permission to use a modified version of his keyboard
- driver and utilities for keyboard remapping / multinational
- keyboard support.
-
-
- Per Lindberg
-
- for the extremely helpful vt100 terminal testprogram found
- in the directory vttest.
-
-
- John Birchfield
-
- for the ncsa telnet package, which contains a vt100 emulation
- and which was very helpful in studying some concepts.
-
-
- Ralf Friedl (friedl@informatik.uni-kl.de)
-
- for making his implementation of multi-sceens for the net-2
- distribution available. i looked at this and took some ideas
- and lines from his code.
-
-
- Bruce Evans (bde@runx.oz.au)
-
- for contributing some bugfixes and a complete termcap entry
-
-
- Brian H. Dunford-Shore (brian@morpheus.wustl.edu)
-
- for contributing most of the EGA/VGA screen switching code
- and being a fast, reliable and responsive co-author. This
- driver would not be what it is without Brian, Thank You !
-
-
- Frank da Cruz (fdc@columbia.edu)
-
- for my famous datacomm program and for giving the permission
- to redistribute files from the msdos kermit distribution
- located in the directory support/demo.
-
-
- Joerg Wunsch (joerg_wunsch@uriah.sax.de)
-
- for contributing precise bugreports and -fixes, the 8x10
- EGA/VGA fonts and the color palette ioctls and for being
- a very responsive contributor of various ideas.
- Joerg wrote pcvt's interface to XFree86 1.2 and 1.3 and
- the SYSV/syscons - like interface to XFree86 2.0.
- There would be no support for X without Joerg's work!
- Thank you very much Joerg, i enjoy it !!! :-)
-
-
- Scott Turner (scotty@gagetalker.com)
-
- for contributing code to change the winsize structure, many
- discussions on the keyboard code and fine-tuning the driver
-
-
- Gordon L. Burditt (gordon@sneaky.lonestar.org)
-
- for the nicest and most complete bugreports i ever got
-
-
- Theo Deraadt (deraadt@fsa.ca)
-
- for pushing me forward. There would be no 3.00 release
- if Theo didn't asked for features ... ;-)
-
-
- Onno van der Linden (c/o frank@fwi.uva.nl)
-
- for writing the 132 column support for the Cirrus
- chipsets although he had no time to do it ... :-)
-
-
- Wolfram Solfrank, Ingo Koenig
-
- for putting some data onto tape (and handling and shipping
- in the case of Wolfgang) to provide me with some latest
- sources because i still have no ip-connectivity ....
-
-
- Michael Havemester (tik@abqhh.hanse.de)
-
- for giving me a chance to stay up to date with NetBSD-
- current, for programming the initial version of the fast
- scrolling code and for the keyboard fifo code!
-
-
- Charles Hannum (mycroft@gnu.ai.mit.edu)
-
- for getting bored by a slow-scrolling video driver and
- for leaving me some bugs to fix ;-)
-
-
- The NetBSD and FreeBSD teams
-
- for giving me something to play, work and learn with !
- There would be nothing to write a driver for without you !!!
diff --git a/usr.sbin/pcvt/Misc/Doc/Bibliography b/usr.sbin/pcvt/Misc/Doc/Bibliography
deleted file mode 100644
index 2cce039..0000000
--- a/usr.sbin/pcvt/Misc/Doc/Bibliography
+++ /dev/null
@@ -1,189 +0,0 @@
-
-VGA BOOKS
----------
-
- Richard Wilton, "Programmers Guide to PC & PS/2 Video Systems",
- Microsoft Press 1987
-
-
- Richard F. Ferraro, "Programmers Guide to the EGA and VGA Cards",
- Second Edition, Addison-Wesley 1990
-
-
- Richard F. Ferraro, "Programmers Guide to the EGA and VGA Cards",
- Third Edition, Addison-Wesley 1994
-
-
- Matthias Uphoff, "Die Programmierung der EGA/VGA Grafikkarte",
- Addison Wesley 1992
-
-
- Bradley Dyck Kliewer, "EGA/VGA A Programmers Reference Guide",
- McGraw Hill, 2nd Edition 1990
-
-
-UNIX AND UNIX DEVICE DRIVERS
-----------------------------
-
- Bell Telephone Laboratories, Inc. "UNIX Programmer's Manual, Seventh
- Edition, Volume 2". Revised and Expanded Version.
- Holt, Rinehart and Winston 1983
-
-
- George Pajari, "Writing Unix Device Drivers"
- Addison Wesley 1992
-
-
- Janet I. Egan and Thomas J. Teixeira, "Writing a UNIX Device Driver"
- John Wiley & Sons 1988
-
-
- Janet I. Egan and Thomas J. Teixeira, "Writing a UNIX Device Driver"
- Second Edition. John Wiley & Sons 1992
-
-
- Leffler, McKusick, Karels, Quarterman, "The Design and Implementation
- of the 4.3BSD UNIX Operating System"
- Addison Wesley 1988, corrected Reprint 1989
-
-
- Leffler, McKusick, "The Design and Implementation of the 4.3BSD UNIX
- Operating System, Answer Book"
- Addison Wesley 1991
-
-
- Maurice J. Bach, "The Design of the UNIX Operating System"
- Prentice-Hall 1986
-
-
- Sun Microsystems Inc., "Writing Device Drivers"
- Part No. 800-3851-10, Revision A of 27 March 1990
-
-
- Hewlett-Packard Company, "HP-UX Driver Development Guide",
- Part No. 98577-90013, First Edition 07/91
-
-
- W. Richard Stevens, "Advanced Programming in the UNIX Environment",
- Addison Wesley 1992
-
-
- Phillip M. Adams, Clovis L. Tondo, "Writing Unix Device Drivers in C",
- Prentice Hall 1993
-
-
- Berny Goodheart, James Cox, "The Magic Garden Explained",
- Prentice Hall 1994
-
-
- Peter Kettle, Steve Statler, "Writing Device Drivers for SCO Unix"
- Addison Wesley 1993
-
-
-TERMINAL MANUALS
-----------------
-
- Digital Equipment, VT100 Users Manual, 2nd ed. 1979
- Digital Equipment, VT132 Users Manual
- Digital Equipment, VT220 Programmers Reference Manual, 2nd ed. 1984
- Digital Equipment Corporation
-
-
- Hewlett Packard, 700/92 Technical Reference Manual (ANSI Operation)
- Hewlett Packard, 2392a Users Manual (ANSI Operation)
- Hewlett-Packard Company
-
-
- Walker Richer & Quinn, Inc., "Reflection 2 and Reflection 4 Technical
- Reference Manual", Version 4.2
- Walker, Richer & Quinn, Seattle, August 1992
-
-
-IBM PC HARDWARE/FIRMWARE
-------------------------
-
- Frank van Gilluwe, "The Undocumented PC",
- Addison Wesley, First Edition May 1994
-
-
- IBM Corporation, "Technical Reference Personal Computer AT",
- Part No. 6280070, Form No. S229-9611-00, First Edition 1985
-
-
- Phoenix Technologies Ltd., "System BIOS for IBM PC/XT/AT Computers
- and Compatibles", Addison Wesley, Fourth Printing June 1990
-
-
- Phoenix Technologies Ltd., "System BIOS for IBM PCs, Compatibles,
- and EISA Computers", Second Edition
- Addison Wesley, First Printing May 1991
-
-
- American Megatrends, Inc., "Hi-Flex ISA and EISA AMIBIOS Technical
- Reference", American Megatrends, Inc. 1992 (9/25/92)
-
-
- Thom Hogan, "The Programmers PC Sourcebook", 2nd Edition
- Microsoft Press, 1991
-
-
-TERMCAP/TERMINFO
-----------------
-
- John Strang, Linda Mui and Tim O'Reilly, "Termcap and Terminfo",
- O'Reilly & Associates, Inc. , April 1991
-
-
- Richard M. Stallman, "Termcap - The Termcap Library and Data Base",
- Free Software Foundation, Second Edition November 1988
-
-
-
-DATABOOKS/DATASHEETS
---------------------
-
- Intel Corporation, "Microsystem Components Handbook Volume II",
- Intel Corporation, 1984
-
-
- Intel Corporation, "Peripheral Design Handbook",
- Intel Corporation, 1980
-
-
- Tseng Labs, Inc. "ET4000 Graphics Controller Data Book", 1990
-
-
- Western Digital Corporation, "WD90C11, WD90C11A (PVGA1C) Enhanced
- VGA Controller", Western Digital 9/18/91
-
-
- Western Digital Corporation, "WD90C00 Enhanced VGA Controller",
- Western Digital 1/14/91
-
-
- Western Digital Corporation, "WD90C00 Interface Guide",
- Western Digital 1/10/91
-
-
- Western Digital Corporation, "VGA Register Based Programmers Manual",
- Western Digital 1/30/91
-
-
- Western Digital Corporation, "VGA BIOS Programmers Manual",
- Western Digital 1/10/91
-
-
- Cirrus Logic, "True Color VGA Family - CL-GD542X", Technical Ref.
- Manual, Cirrus Logic, Inc. April 1993
-
-
- S3 Inc, "86C801/86C805 GUI Accelerators"
- S3 Incorporated, September 1992
-
-
- S3 Inc, "86C928 GUI Accelerator"
- S3 Incorporated, July 1993
-
-
- Trident Microsystems Inc., "TVGA9000i Technical Reference Manual",
- Trident Microsystems, Inc. (c) 1992, March 1993, Rev 1
diff --git a/usr.sbin/pcvt/Misc/Doc/CharGen b/usr.sbin/pcvt/Misc/Doc/CharGen
deleted file mode 100644
index c047bfa..0000000
--- a/usr.sbin/pcvt/Misc/Doc/CharGen
+++ /dev/null
@@ -1,149 +0,0 @@
-Character Generator description (before it gets lost ..)
---------------------------------------------------------------------------------
-
-The lower character generator is the default IBM character set II.
-
-The description of the higher character generator follows below. The
-character names are taken from the "Postscript Language Reference
-Manual", 2nd Edition, Fourth printing July 1991, pp 596.
-
-NOTE: The hex values here are NOT the values the character is identified
- by in the emulator. The "physical" (vt220 character) to "logical"
- (this table, character generator) conversion is done in the character
- output routine by using the tables from file pcvt_tbl.h.
-
-The order of the characters is not regular and was largely influenced by
-the status of my brain while pixel-placing characters ....
-
-HEX What
---- -------------------------------------------------
-00 Control code display for
-. control characters in the
-1f range 0x00 - 0x1f
-
-20 Control code display for
-. control characters in the
-3f range 0x80 - 0x9f
-
-HEX What
---- -------------------------------------------------
-40 rho
-41 psi
-42 partialdiff
-43 lambda
-44 iota
-45 eta
-46 epsilon
-47 chi
-48 logicaland
-49 logicalor
-4a union
-4b propersuperset
-4c propersubset
-4d gamma
-4e Xi
-4f Psi
-
-HEX What
---- -------------------------------------------------
-50 Pi
-51 arrowdblright
-52 arrowdblboth
-53 Lambda
-54 Theta
-55 congruent
-56 gradient
-57 Delta
-58 proportional
-59 therefore
-5a integral
-5b fraction
-5c (inverted fraction ????)
-5d angle
-5e (inverted angle ????)
-5f braceleftmid
-
-HEX What
---- -------------------------------------------------
-60 bracerightmid
-61 bracelefttp
-62 braceleftbt
-63 bracerighttp
-64 bracerightbt
-65 radical
-66 omega
-67 (Yen ??)
-68 xi
-69 yacute
-6a thorn
-6b eth
-6c Thorn
-6d Yacute
-6e multiply
-6f Eth
-
-HEX What
---- -------------------------------------------------
-70 threequarters
-71 Cedillasmall
-72 Acutesmall
-73 emdash
-74 registered
-75 endash
-76 logicalnot
-77 dieresis
-78 notequal
-79 scan 9
-7a scan 7
-7b scan 5
-7c scan 3
-7d scan 1
-7e upsilon
-7f emptyset
-
-HEX What
---- -------------------------------------------------
-80 oe
-81 Otilde
-82 atilde
-83 Ydieresis
-84 Ucircumflex
-85 Uacute
-86 Ugrave
-87 Oslash
-88 OE
-89 Otilde
-8a Ocircumflex
-8b Oacute
-8c Ograve
-8d Idieresis
-8e Icircumflex
-8f Iacute
-
-HEX What
---- -------------------------------------------------
-90 Igrave
-91 Edieresis
-92 Ecircumflex
-93 Egrave
-94 Atilde
-95 Acircumflex
-96 Aacute
-97 Agrave
-98 onesuperior
-99 (small black rectangle)
-9a zeta
-9b threesuperior
-9c copyright
-9d currency
-9e kappa
-9f (inverted question mark)
-
-HEX What
---- -------------------------------------------------
-a0 the remaining positions
-. are used for the vt220
-ff downloadable characterset
-
--------------------------------------------------------------------------------
- (phoooo ..)
diff --git a/usr.sbin/pcvt/Misc/Doc/Charsets b/usr.sbin/pcvt/Misc/Doc/Charsets
deleted file mode 100644
index b30dd8a..0000000
--- a/usr.sbin/pcvt/Misc/Doc/Charsets
+++ /dev/null
@@ -1,99 +0,0 @@
-
-I. Character Set Selection on VT220 Terminals
-==================================================
-
-
-name C0 GL C1 GR
- +---+ +-------------------+ +---+ +-------------------+
- |00h| | | |80h| | |
-range | | | | 20h .. 7fh | | | | | a0h .. ffh |
- |1fh| | | |9fh| | |
- +---+ +-------------------+ +---+ +-------------------+
-length 32 96 32 96
-
- /\
-SECOND /||\ "lock"- or "single"-shift one set of G0, G1, G2 or
-STEP || G3 into one of the "displayable" charactersets GL
- || or GR. (escape) sequences are: SI, SO, ESC ~, ESC n,
- || ESC }, ESC o, ESC |, ESC N and ESC O.
-
- +----+ +----+ +----+ +----+
-name | G0 | | G1 | | G2 | | G3 |
-length |(96)| |(96)| |(96)| |(96)|
- +----+ +----+ +----+ +----+
-
- /\
- /||\ designate a hard or a soft character set as
- || one of G0, G1, G2 or G3, used escape sequences
-FIRST || are, ESC ( X, ESC ) X, ESC * X and ESC + X - where X is
-STEP || B for ascii, < for supplemental, 0 for special, A for
- || british, 4 for dutch, C and 5 for finnish etc. etc. ...
- ||
-
- +-----+ +------------+ +--------+ +-----------+ +------------+
-name |ascii| |supplemental| |special | | national | |downloadable|
- | | | graphics | |graphics| |replacement| |characterset|
-length | (96)| | (96)| | (96)| | (96)| | (96)|
- +-----+ +------------+ +--------+ +-----------+ +------------+
-
- \-------\ /----------/ norway/danish
- | dutch
- together, this is also finnish
- referred to as the french
- multinational character french canada
- set (power on default german
- on a dec vt220) italian
- spanish
- swedish
- swiss
-
-
-II. Emulating Character Set Selection
-=========================================
-
-MDA/HCG/CGA:
-
- just a partial emulation is done, because these boards don't allow
- downloadable charactersets. some characters simply don't display
- because they are not in the characterset roms on the video board.
-
- if you want to change the mapping, have a look at the default tables
- in pcvt_tbl.h.
-
-EGA/VGA:
-
- these cards have provisions for downloadable charactersets and so
- many vt220/vt320 charactersets are fully supported:
-
- - US Ascii
- - DEC Supplemental
- - DEC Special Graphic
- - DEC Technical
- - ISO Latin-1
- - Downloadable
-
- when the emulator is started, it behaves initially similar to
- the MDA/CGA/HCG method described above.
-
- when a second (special) characterset for a given screen resolution
- is loaded via the "loadfont" utility, the emulator detects this fact
- and uses from then on extended tables to access the second charset
- as an upper half 512 characterset in terms of ega/vga speak.
-
- from this time on, vt220 downloadable fonts are usable.
-
- the organization of this extended characterset is as follows:
-
- 0x00 ... 0x1f C0 display function fonts
- 0x20 ... 0x3f C1 display function fonts
- 0x40 ... 0x9f fonts for DEC Supplemental, DEC Special
- Graphic, DEC Technical and ISO Latin-1
- 0xa0 ... 0xff VT220 Downloadable Font
-
- the mapping between vt220 charactersets and the charactersets inside
- the ega/vga is done by tables found in the file pcvt_tbl.h.
-
- there is a MSDOS fonteditor called "EVAFONT" available on the
- SIMTEL-20 archive, which i used to edit the character sets in the
- distribution.
-
diff --git a/usr.sbin/pcvt/Misc/Doc/EscapeSequences b/usr.sbin/pcvt/Misc/Doc/EscapeSequences
deleted file mode 100644
index 8e0e2c7..0000000
--- a/usr.sbin/pcvt/Misc/Doc/EscapeSequences
+++ /dev/null
@@ -1,268 +0,0 @@
- Control Codes and Escape Sequences supported by pcvt
-===============================================================================
-
-CONTROL CODES
--------------------------------------------------------------------------------
-
- NUL (0x00) ignored
- SOH (0x01) ignored
- STX (0x02) ignored
- ETX (0x03) ignored
- EOT (0x04) ignored
- ENQ (0x05) ignored
- ACK (0x06) ignored
-
- BEL (0x07) beep
-
- BS (0x08) move one character position to the left
- until at left margin
-
- HT (0x09) move to next tab stop
-
- LF (0x0a) move to next line, same column
- VT (0x0b) move to next line, same column
- FF (0x0c) move to next line, same column
-
- CR (0x0d) move to left margin on current column
-
- SO (0x0e) invoke character set G1 into GL
- SI (0x0f) invoke character set G0 into GL
-
- DLE (0x10) ignored
- DC1 (0x11) ignored
- DC2 (0x12) ignored
- DC3 (0x13) ignored
- DC4 (0x14) ignored
- NAK (0x15) ignored
- SYN (0x16) ignored
- ETB (0x17) ignored
-
- CAN (0x18) abort current escape sequence
-
- EM (0x19) ignored
-
- SUB (0x1a) abort current escape sequence
-
- ESC (0x1b) start of escape sequence
-
- FS (0x1c) ignored
- GS (0x1d) ignored
- RS (0x1e) ignored
- US (0x1f) ignored
-
- VT220 control codes in the range 0x80 .. 0x9f are completely ignored,
- but displayed as C1 display controls.
-
-
-ESCAPE SEQUENCES DIGITAL EQUIPMENT
--------------------------------------------------------------------------------
-
-(ni) = not implemented yet, all hooks available inside emulator!
-<p> = numeric parameter
-
- ESC space F select 7-bit c1 control transmission (ni)
- ESC space G select 8-bit c1 control transmission (ni)
-
- ESC # 3 double height top half (ni)
- ESC # 4 double height bottom half (ni)
- ESC # 5 single width single height (ni)
- ESC # 6 double width single height (ni)
-
- ESC # 8 fill screen with 'E's
-
- ESC 7 save cursor
-
- ESC 8 restore cursor
-
- ESC = keypad application mode
-
- ESC > keypad numeric mode
-
- ESC D index
-
- ESC E next line
-
- ESC H set tab at cur col
-
- ESC M reverse index
-
- ESC N single shift G2
-
- ESC O single shift G3
-
- ESC Z who are you
-
- ESC d Only available if PCVT_SETCOLOR was defined when
- compiling the kernel, allows to set custom color table
- for more info, see pcvt_out.c ...
-
- ESC c power up reset
-
- ESC n Lock Shift G2 -> GL
-
- ESC o Lock Shift G3 -> GL
-
- ESC } Lock Shift G2 -> GR
-
- ESC | Lock Shift G3 -> GR
-
- ESC ~ Lock Shift G1 -> GR
-
- ESC [ ? <p> h set dec private modes
- ESC [ ? <p> l reset dec private modes
- 1 CKM - cursor key mode
- 6 OM - origin mode
- 7 AWM - auto wrap mode
-
- ESC [ <p> ' z DECELR - Enable Locator Report (ni)
-
- ESC [ <p> ' { DECSLE - Select type of locator events (ni)
-
- ESC [ ? n Terminal Reports
-
- ESC [ ? K selective erase in line
-
- ESC [ ? J selective erase in display
-
- ESC [ <p> @ insert char(s)
-
- ESC [ <p> A cursor up
-
- ESC [ <p> B cursor down
-
- ESC [ <p> C cursor forward
-
- ESC [ <p> D cursor backward
-
- ESC [ <p> H cursor direct cursor addressing
-
- ESC [ <p> J erase screen
-
- ESC [ <p> K erase line
-
- ESC [ <p> L insert line
-
- ESC [ <p> M delete line
-
- ESC [ <p> P delete char
-
- ESC [ <p> S scroll up
-
- ESC [ <p> T scroll down
-
- ESC [ <p> X erase character
-
- ESC [ <p> c device attributes
-
- ESC [ <p> f direct cursor addressing
-
- ESC [ <p> g clear tabs
-
- ESC [ <p> h set mode
- ESC [ <p> l reset mode
- 4 IRM - insert replacement mode
- 20 LNM - line feed / newline mode
-
- ESC [ <p> i media copy (ni)
-
- ESC [ <p> m select graphic rendition
- 0 reset to normal attributes
- 1 bold
- 4 underline
- 5 blinking
- 7 reverse
- 22 bold off
- 24 underline off
- 25 blinking off
- 27 reverse off
- 30-37 foreground colors (on color display)
- 40-47 background colors (on color display)
-
- ESC [ <p> n device status report
-
- ESC [ <p> r set scrolling region
-
- ESC [ <p> x request / report terminal parameters
-
- ESC [ <p> y invoke selftests (ni)
-
-
- ESC [ x request/report parameters
- ESC [ y invoke seftest(s)
-
- ESC [ " q SCA
- ESC [ ! p SCA
-
- ESC ( <p> designate G0
- ESC ) <p> designate G1
- ESC * <p> designate G2
- ESC + <p> designate G3
- ESC - <p> designate G1 (96)
- ESC . <p> designate G2 (96)
- ESC / <p> designate G3 (96)
- A British or ISO-Latin-1
- B USASCII
- C Finnish
- 5 Finnish
- E Norwegian/Danish
- 6 Norwegian/Danish
- H Swedish
- 7 Swedish
- K German
- Q French Canadien
- R French
- Y Italian
- Z Spanish
- 0 special graphics
- 1 alternate ROM
- 2 alt ROM, spec graphics
- 3 HP Roman 8, upper 128 chars*/
- 4 Dutch
- < DEC Supplemental
- = Swiss
- > DEC Technical
-
-
-ESCAPE SEQUENCES HEWLETT-PACKARD
--------------------------------------------------------------------------------
-
-ESC&f<attr>a<key>k<llen>d<slen>L<label><string> set function key label
-
- attr = attribute, 0 - normal (not implemented)
- 1 - local only (not implemented)
- 2 - transmit only (not implemented)
-
- key = function key number, range 1 .. 8
-
- llen = label string length
-
- slen = string string length
-
- label = label data (up to 16 chars per label)
-
- string = string to send data (up to 80 chars per label)
- (not implemented)
-
-EXAMPLE:
-========
-
- ESC&f0a1k16d1LFUNCTION KEY 0
-
- sets function key label 1 to "FUNCTION KEY ".
- should program fkey 1 to emit "0" on keypress
-
-
-ESC&j<parm> function key operations
-
- parm = '@' remove the function key labels from screen
-
- parm = 'A' display the modes set of function key labels
-
- parm = 'B' enable & display user function key labels
-
- parm = 'C' clear message & restore the current key labels
-
- parm = 'R' enable usr/sys and menu and label modes
-
- parm = 'S' disable usr/sys and menu and label modes
-
diff --git a/usr.sbin/pcvt/Misc/Doc/Keyboard.HP b/usr.sbin/pcvt/Misc/Doc/Keyboard.HP
deleted file mode 100644
index 06ad5b7..0000000
--- a/usr.sbin/pcvt/Misc/Doc/Keyboard.HP
+++ /dev/null
@@ -1,286 +0,0 @@
-================================================================================
-# #
-# Function key mapping for the "more HP" - like layout #
-# #
-================================================================================
-
-
-I. Function Key Map
-========================
-
-
-PC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
-Key
- _________________________________________________________________________
-UNSHF| 132 | Soft| | | | 7/8 | Dspl| Auto| SCRN| SCRN| SCRN| SCRN|
-SYS | Cols|Reset| | | Beep| Bit | Func| Wrap| 0 | 1 | 2 | 3 |
-LABEL|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
-UNSHF| | | | | | | | | SCRN| SCRN| SCRN| SCRN|
-USER | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | 0 | 1 | 2 | 3 |
-LABEL|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
- | | | | | | | | | Fkey| U/S |VT/HP| Next|
-ALT | F14 | HELP| DO | F17 | F18 | F19 | F20 | F21 |Label|Label| Mode| SCRN|
- |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
- | User| User| User| User| User| User| User| User| | | | |
-SHIFT| F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | | | | |
- |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
-ALT- | User| User| User| User| User| User| User| User| | | | |
-SHIFT| F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | | | | |
- |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
-CTRL-| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN|
-ALT | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
- |_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
-
-PC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
-Key
-
-
-
-II. Special Keys Used To Change The General Runtime Functionality
-=====================================================================
-
-
- To be consistent with XFfree86 2.0 Virtual Screen switching, it is
- now also possible to switch screens by using:
-
- CTRL - ALT - Fx , where x can be 1 ... No of screens compiled,
- see the definition of PCVT_NSCREENS !
-
-
- Virtual Screen/Terminal switching
- ---------------------------------
-
- F9 or CTRL-ALT-F1 switches to screen 0
- F10 or CTRL-ALT-F2 switches to screen 1
- F11 or CTRL-ALT-F3 switches to screen 2
- F12 or CTRL-ALT-F4 switches to screen 3
- CTRL-ALT-F5 switches to screen 4
- CTRL-ALT-F6 switches to screen 5
- CTRL-ALT-F7 switches to screen 6
- CTRL-ALT-F8 switches to screen 7
- CTRL-ALT-F9 switches to screen 8
- CTRL-ALT-F10 switches to screen 9
- CTRL-ALT-F11 switches to screen 10
- CTRL-ALT-F12 switches to screen 11
-
- (see also ALT-F12 below)
-
-
- ALT-F9 Function key labels ON / OFF
- ------------------------------------
-
- this key is only operational, when in HP/VT mode, see F11
-
- ALT-F9 toggles between function key labels displayed or not.
-
- ON: screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
- 2 lines fkey labels displayed
- row/col display enabled
- 1 line status/load avg line
-
- OFF: screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
- no function key labels displayed
- no row/col display
- no status/load avg line
-
- applicable escape sequences:
-
- switch OFF:
- ESC & j @ remove labels from screen
-
- switch ON:
- ESC & j A display system fkey labels
- ESC & j B display user fkey labels
- ESC & j C display current fkey labels
-
-
- ALT-F10 User / System Function key labels
- -----------------------------------------
-
- this key is only operational, when in HP/VT mode, see ALT-F11
-
- ALT-F10 toggles between the display of user or system
- function key labels
-
- this key is only active if labels are toggled on via
- the ALT-F9 function key
-
- screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
- 2 lines fkey labels displayed
- row/col display enabled
- 1 line status/load avg line
-
-
- applicable escape sequences: (see above)
-
- ESC & j A display system fkey labels
- ESC & j B display user fkey labels
- ESC & j C display current fkey labels
-
-
- ALT-F11 Toggle between pure VT and HP-VT Emulation
- --------------------------------------------------
-
- This key switches between pure vt100/vt220 mode and
- vt100/vt220 with hp-fkey-labels mode of operation.
- this is not dependent of any screen resolution the
- virtual consoles are in.
-
- initially, after power on, all virtual screens are in
- the pure vt-mode:
-
- - the emulator does not execute any hp escape sequences
- - the function key label lines are switched off
- - no load average or status line is displayed
- - no row / column counter is displayed
- - no window number is displayed
- - the full screen 25x80, 28x80 or 50x80 is usable
- - ALT-F9 and ALT-F10 have no function
-
- when toggled to the vt/hp mix of operation, the following
- changes take place:
-
- - the emulator executes the supported hp-esc sequences
- - the function key labels are displayable depending
- on the state of ALT-F9/F10
- - the load average is displayed
- - the row / column counters are displayed
- - the window number is displayed in the lower right corner
- - in any screen resolution, the last 3 lines are lost,
- so one has a 22x80, 25x80 and 47x80 resolution
- - F9 and F10 are operational.
-
- when switching modes by means of ALT-F11, the following
- changes to the current environment, the emulator may
- be in, apply:
-
- - the screen is cleared
- - the cursor moves to the home position
- - the scrolling region is reset to default
-
- (this functionality is available via an ioctl)
-
- ALT-F12 Cycle current screen
- ----------------------------
-
- This key cycles through the display of the video
- screens. on startup, screen 0 is displayed; with every
- keypress of F12, the next screen is displayed, wrapping
- from the maximum screen number back to screen 0.
-
- (this functionality is available via an ioctl)
-
-
-III. Special Keys used to change the Runtime Functionality of a Page
-=======================================================================
-
- when in mixed HP/VT mode, one has two types of function key labels
- on screen, user function keys and system function keys.
-
- this functionality is NOT available in pure VT220 mode !
-
- the user function keys emit the below mentioned VT220 function-
- key sequences. the labels can be reprogrammed by use of escape
- sequences.
-
- in system function key mode, several pre-programmed functions inside
- the emulator can be toggled, currently implemented are:
-
- - F1, if a chipset is detected for which 132 operation is supported,
- F1 toggles between 80 columns and 132 columns.
- - F2, does a soft reset of the emulator code
- - F3, -/-
- - F4, -/-
- - F5, toggle the audible beep generation
- - F6, toggle 7/8 bit char width
- - F7, toggle display functions. this means that control codes
- in the range 0x00 to 0x1f are not EXECUTED by the emulator
- any longer, but displayed on the screen
- - F8, toggle automatic cursor wraparound at end of line
-
- these functions operate just for the selected screen
-
-
-IV. Keyboard VT220 compatibility
-====================================
-
- The following keys behave different as probably expected.
-
- They were mapped to provide more VT220 compatibility.
-
- To have F1-F8 emit something in HP-mode, you have to switch
- to user function key labels by using ALT-F10 (see ALT-F10 above) !
-
- PC Keyboard VT220 Keyboard
- ------------- --------------------------------------------------
- F1 F6 (ESC [ 17 ~)
- F2 F7 (ESC [ 18 ~)
- F3 F8 (ESC [ 19 ~)
- F4 F9 (ESC [ 20 ~)
- F5 F10 (ESC [ 21 ~)
- F6 F11 (ESC [ 23 ~)
- F7 F12 (ESC [ 24 ~)
- F8 F13 (ESC [ 25 ~)
- ALT-F1 F14 (ESC [ 26 ~)
- ALT-F2 HELP (ESC [ 28 ~)
- ALT-F3 DO (ESC [ 29 ~)
- ALT-F4 F17 (ESC [ 31 ~)
- ALT-F5 F18 (ESC [ 32 ~)
- ALT-F6 F19 (ESC [ 33 ~)
- ALT-F7 F20 (ESC [ 34 ~)
- ALT-F8 F21 (ESC [ 35 ~) (i know !!!!)
-
- SHIFT-F1 ... SHIFT-F8
- User Defined Keys for F6 - F13
-
- ALT-SHIFT-F1 ... ALT-SHIFT-F8
- User Defined Keys for F14 - F20
-
- Insert Insert Here (ESC [ 2 ~)
-
- Delete Remove (ESC [ 3 ~)
-
- Home Find (ESC [ 1 ~)
-
- End Select (ESC [ 4 ~)
-
- PgUp Prev Screen (ESC [ 5 ~)
-
- PgDn Next Screen (ESC [ 6 ~)
-
- PrtSc (ignored)
-
- Pause (ignored)
-
- Break (ignored)
-
- Cursor Keys dependent upon state of cursor key mode either
- ESC [ A ... ESC [ D or ESC O A ... ESC O D
-
- NumLock toggles Numeric Keypad for Keypad Numeric Mode
- and Keypad Application Mode
-
- ALT-Keypad-0 can be used to generate any keycode in the
- ALT-Keypad-1 rage 0-255.
- ALT-Keypad-2 this was modeled with the behaviour of a
- ALT-Keypad-3 popular boot loader in mind
- ALT-Keypad-4
- ALT-Keypad-5
- ALT-Keypad-6
- ALT-Keypad-7
- ALT-Keypad-8
- ALT-Keypad-9
-
- Numeric Keypad dependent upon state of keypad numeric/application
- mode either 0 ... 9 or ESC O p ... ESC O y
-
- ALT-NumLock emits PF1 sequence (ESC O P)
-
- ALT-Keypad-/ emits PF2 sequence (ESC O Q)
-
- ALT-Keypad-* emits PF3 sequence (ESC O R)
-
- ALT-Keypad-- emits PF4 sequence (ESC O S)
-
-
-/* EOF */
diff --git a/usr.sbin/pcvt/Misc/Doc/Keyboard.VT b/usr.sbin/pcvt/Misc/Doc/Keyboard.VT
deleted file mode 100644
index 4353ec7..0000000
--- a/usr.sbin/pcvt/Misc/Doc/Keyboard.VT
+++ /dev/null
@@ -1,231 +0,0 @@
-================================================================================
-# #
-# Function key mapping for the "more VT220" - like layout #
-# #
-================================================================================
-
-
-I. Special Keys Used To Change The General Runtime Functionality
-=====================================================================
-
-
- CTRL-F9 Function key labels ON / OFF
- ------------------------------------
-
- this key is only operational, when in HP/VT mode, see CTRL-F11
-
- CTRL-F9 toggles between function key labels displayed or not.
-
- ON: screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
- 2 lines fkey labels displayed
- row/col display enabled
- 1 line status/load avg line
-
- OFF: screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
- no function key labels displayed
- no row/col display
- no status/load avg line
-
- applicable escape sequences:
-
- switch OFF:
- ESC & j @ remove labels from screen
-
- switch ON:
- ESC & j A display system fkey labels
- ESC & j B display user fkey labels
- ESC & j C display current fkey labels
-
-
- CTRL-F10 User / System Function key labels
- -------------------------------------------------
-
- this key is only operational, when in HP/VT mode, see CTRL-F11
-
- CTRL-F10 toggles between the display of user or system
- function key labels
-
- this key is only active if labels are toggled on via
- the CTRL-F9 function key
-
- screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
- 2 lines fkey labels displayed
- row/col display enabled
- 1 line status/load avg line
-
-
- applicable escape sequences: (see above)
-
- ESC & j A display system fkey labels
- ESC & j B display user fkey labels
- ESC & j C display current fkey labels
-
-
- CTRL-F11 Toggle between pure VT and HP-VT Emulation
- ----------------------------------------------------------
-
- This key switches between pure vt100/vt220 mode and
- vt100/vt220 with hp-fkey-labels mode of operation.
- this is not dependent of any screen resolution the
- virtual consoles are in.
-
- initially, after power on, all virtual screens are in
- the pure vt-mode:
-
- - the emulator does not execute any hp escape sequences
- - the function key label lines are switched off
- - no load average or status line is displayed
- - no row / column counter is displayed
- - the full screen 25x80, 28x80 or 50x80 is usable
- - CTRL-F9 and CTRL-F10 have no function
-
- when toggled to the vt/hp mix of operation, the following
- changes take place:
-
- - the emulator executes the supported hp-esc sequences
- - the function key labels are displayable depending
- on the state of CTRL-F9/CTRL-F10
- - the load average is displayed
- - the row / column counters are displayed
- - in any screen resolution, the last 3 lines are lost,
- so one has a 22x80, 25x80 and 47x80 resolution
- - CTRL-F9 and CTRL-F10 are operational.
-
- when switching modes by means of CTRL-F11, the following
- changes to the current environment, the emulator may
- be in, apply:
-
- - the screen is cleared
- - the cursor moves to the home position
- - the scrolling region is reset to default
-
- (this functionality is available via an ioctl)
-
- F5 Cycle current page
- --------------------------
-
- This key cycles through the display of the video
- pages. on startup, page 0 is displayed; with every
- keypress of F5, the next page is displayed, wrapping
- from the maximum page number back to page 0.
-
- F1 switches to page 0
- F2 switches to page 1
- F3 switches to page 2
- F4 switches to page 3
-
- Shift-F1 -- select screen 4
- Shift-F2 -- select screen 5
- Shift-F3 -- select screen 6
- Shift-F4 -- select screen 7
- Shift-F5 -- select (current screen - 1)
-
- (this functionality is available via an ioctl)
-
-
-II. Special Keys used to change the Runtime Functionality of a Page
-=======================================================================
-
- when in mixed HP/VT mode, one has two types of function key labels
- on screen, user function keys and system function keys. they are
- accessed by using the CTRL key while pressing a function key.
-
- the function key labels are NOT available in pure VT220 mode--although
- the function keys are still active
-
- the user function keys and their labels can be reprogrammed by use of
- escape sequences.
-
- in system function key mode, several pre-programmed functions inside
- the emulator can be toggled, currently implemented are:
-
- - CTRL-F1, toggle 80/132 columns
- - CTRL-F2, soft reset emulator
- - CTRL-F3, toggle force 24 lines mode
- - CTRL-F4, toggle keyboard debugging (if compiled in)
- - CTRL-F5, toggle the audible beep generation
- - CTRL-F6, toggle 7/8 bit char width
- - CTRL-F7, toggle display functions. this means that control codes
- in the range 0x00 to 0x1f are not EXECUTED by the emulator
- any longer, but displayed on the screen
- - CTRL-F8, toggle automatic cursor wraparound at end of line
-
- these functions operate just for the selected page
-
-
-III. Keyboard VT220 compatibility
-====================================
-
- The following keys behave different as probably expected.
-
- They were mapped to provide more VT220 compatibility.
-
-
- PC Keyboard VT220 Keyboard
- ------------- --------------------------------------------------
- F6 - F12 emit the sequences for VT220 F6 - F12 keys
- (ESC [ 17 ~ .... ESC [ 24 ~)
-
- ALT F1 - F10 emit the sequences for VT220 F11 - F14, HELP, DO,
- F17 - F20 keys
- (ESC [ 23 ~ .... ESC [ 34 ~)
-
- SHIFT F6 - F12 emit the User Definable Key sequences for VT220
- F6 - F12 keys or
- (ESC [ 17 ~ .... ESC [ 24 ~) for cleared sequences
-
- ALTSHIFT F1-F10 emit the User Definable Key sequences for VT220
- F11 - F14, HELP, DO, F17 - F20 keys or
- (ESC [ 23 ~ .... ESC [ 34 ~) for cleared sequences
-
- Insert Insert Here (ESC [ 2 ~)
-
- Delete Remove (ESC [ 3 ~)
-
- Home Find (ESC [ 1 ~)
-
- End Select (ESC [ 4 ~)
-
- PgUp Prev Screen (ESC [ 5 ~)
-
- PgDn Next Screen (ESC [ 6 ~)
-
- PrtSc (ignored)
-
- Pause (ignored)
-
- Break (ignored)
-
- Cursor Keys dependent upon state of cursor key mode either
- ESC [ A ... ESC [ D or ESC O A ... ESC O D
-
- NumLock toggles Numeric Keypad for Keypad Numeric Mode
- and Keypad Application Mode
-
- ALT-Keypad-0 can be used to generate any keycode in the
- ALT-Keypad-1 rage 0-255.
- ALT-Keypad-2 this was modeled with the behaviour of a
- ALT-Keypad-3 popular boot loader in mind
- ALT-Keypad-4
- ALT-Keypad-5
- ALT-Keypad-6
- ALT-Keypad-7
- ALT-Keypad-8
- ALT-Keypad-9
-
- Numeric Keypad dependent upon state of keypad numeric/application
- mode either 0 ... 9 or ESC O p ... ESC O y
-
- ALT-NumLock emits PF1 sequence (ESC O P)
-
- ALT-Keypad-/ emits PF2 sequence (ESC O Q)
-
- ALT-Keypad-* emits PF3 sequence (ESC O R)
-
- ALT-Keypad-- emits PF4 sequence (ESC O S)
-
- ALT-F11 emits PF1 sequence (ESC O P)
-
- ALT-F12 emits PF2 sequence (ESC O Q)
-
-/* EOF */
diff --git a/usr.sbin/pcvt/Misc/Doc/Makefile b/usr.sbin/pcvt/Misc/Doc/Makefile
deleted file mode 100644
index 11f540d..0000000
--- a/usr.sbin/pcvt/Misc/Doc/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-
-NO_OBJ=
-FILES= Acknowledgements Bibliography CharGen \
- Charsets EscapeSequences Keyboard.HP Keyboard.VT \
- NotesAndHints
-FILESDIR= ${BINDIR}/Doc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/Misc/Doc/NotesAndHints b/usr.sbin/pcvt/Misc/Doc/NotesAndHints
deleted file mode 100644
index 8accc2f..0000000
--- a/usr.sbin/pcvt/Misc/Doc/NotesAndHints
+++ /dev/null
@@ -1,323 +0,0 @@
-# $FreeBSD$
-
-Random Notes and Hints Last Edit-Date: [Sun Apr 2 18:28:09 1995]
---------------------------------------------------------------------------------
-
-
-First of all, please read the file BugList in this directory !
-
-
-Can't get pcvt working on a ThinkPad
-===============================================================================
-
-Anyway, back to the keyboard. The problem is that by default the
-ThinkPad uses PS/2 scan code mode.
-
-You can fix this by using an option and building a kernel, as shown
-below.
-
-] Just for the record, in case someone else is asking for this: Al's
-] confirmation that pcvt w/ PCVT_SCANSET=2 works for the ThinkPad:
-]
-] As Al Elia wrote:
-] | Date: Mon, 28 Nov 1994 18:24:42 GMT
-] | From: Al Elia <aelia%aelia.student.harvard.edu@sax.sax.de>
-] | Message-Id: <199411281824.SAA01554@aelia.student.harvard.edu>
-] | To: joerg_wunsch@bonnie.tcd-dresden.de
-] | Subject: Re: Anyone got FreeBSD 1.1.5.1 running on a ThinkPad?
-] |
-] | PCVT_SCANSET=2 worked...I had put in PCVT_SCAN_SET=2 (Doh!)
-] |
-] | --Al Elia
-] | <aelia@aelia.student.harvard,edu>
-
- (Terry Lambert quoting Joerg Wunsch quoting Al Elia)
-
-
-If one of the "lock" keys is pressed, LEDs do not get updated, keyboard hangs
-===============================================================================
-
-This entry used to be a long time in the BugList file, and i could never
-reproduce the problem. Today i got an explanation in german from someone
-owning such a keyboard, i'll try to translate:
-
-"This are old keyboards manufactured (~1985/1986) which manage their LED
- setting only internally.
- It is not possible to set the LEDs from the (main-) processor, if you
- try, the keyboard processor hangs and the PC has to be reset by switching
- power on and off, hard- and/or softreset does not work in this case.
- Workaround: recompile pcvt with the LED update removed"
-
-In other words, define PCVT_NO_LED_UPDATE if you have such a beast!
-
-
-Cursor not visible anymore in 40 and 50 lines mode
-===============================================================================
-
-You have programmed an underline cursor in i.e. 28 line mode by doing
-"cursor -s 10 -e 12". Then you switch to 40 line mode using "scon -s 40".
-At this point the cursor is no longer visible because the 40 line font
-is only 10 pixels high and the cursor size is programmed with a value
-expressing its size from the top down and NOT from the bottom up!
-If anyone has a good idea how to solve this problem, please tell me!
-The only solution i see so far is having some sort of "generic" cursor
-sizes/descriptions (i.e. underline, rectangle, block) which are
-recalculated in case of a switch to another line size.
-
-
-386BSD port
-===============================================================================
-
-I don't have access to a 386BSD 0.1 machine anymore so the 386BSD pcvt is
-considered unsupported and will disappear in the future.
-
-386BSD support was dropped with release 3.20.
-
-
-Keyboard hangs after first update of keyboard LED's
-===============================================================================
-
-Define PCVT_NO_LED_UPDATE and recompile pcvt. (Or, get yourself a better
-keyboard. Some keyboards just don't work the documented way, this fact is
-"normally" masked by the manufacturers BIOS but unhides when one accesses
-the hardware directly.)
-
-
-Garbled screen when running vi
-===============================================================================
-
-When the terminal speed in the tty structure is set to low speeds (i.e. 1200
-Baud), pcvt shows a strange behaviour in some environments due to the changed
-screen update sequences from vi.
-
-Please check your shell startup files, /etc/ttys and /etc/gettytab and change
-the baudrate (i.e. by using stty(1)) to a higher value, i.e. 19200 Baud.
-
-Since i'm not a vi specialist, i never managed to find out wheter to blame
-vi or pcvt.
-
-
-Stty influences on the driver
-===============================================================================
-
-There used to be an entry in the BugList:
-
- (printf with 9 x tab) printf "\n\t\t\t\t\t\t\t\t\tGotcha" works ok,
- while one tab more: printf "\n\t\t\t\t\t\t\t\t\t\tGotcha" doesn't
- work (it doesn't print Gotcha at column 80, but at column 131).
-
-This was solved some time ago:
-
- On another note: if I use stty xtabs, the 'printf "\t\t\t\t\t\t\t"
- bug goes away. With stty xtabs the tab handling is done in the kernel.
-
-(See also below: "Vttest shows strange results")
-
-
-After running some graphics application, the cursor is stuck on the
-bottom line, though everything else appears well
-===============================================================================
-
-Though this might initially appear to be a driver problem, it's rather
-an application program's bogosity. The cursor update is done asynchron-
-ously (to gain output speed), but this cursor update is inhibited while
-an application has put a virtual terminal into ``graphics mode'' (i.e.,
-the application program tells the driver that it's now responsible for
-anything and all on this vty). This is notably the case while X11 is
-running.
-
-If the application fails to properly shut down itself, the terminal
-might be left in an undefined state. The driver stand no chance there,
-even if it could detect this bad status, since it doesn't know enough
-about each piece of hardware to deal with. One possibility is that
-the X server has been shot up and didn't get it to do its cleanups.
-Another case (which i've often noticed on my slow notebook) is, killing
-the Xserver is too slow for the (unfortunately hard-coded) 10-second
-timeout from xinit, so it's being aborted ridiculously. (``X server
-slow to shut down, sending KILL signal.'') This way, the state of
-damage might range from ``almost okay, but cursor is stuck'' up to
-a totally unusable machine (moon bitmap from xphoon still displayed,
-no keyboard responses, only network is working and can be used to
-shut down cleanly).
-If the state of damage is only minimal, you might try to run the pure
-X server on that vty again, and exit it with Ctrl-Alt-BkSpc. This might
-be a workaround.
-
-
-Vttest shows strange results
-===============================================================================
-
-Verify your stty "oxtabs" settings, it has to be "oxtabs", NOT "-oxtabs".
-Get yourself an original DEC terminal to verify vttest's output, i have
-until now not seen any (!) VTxxx clone, which does it right !!!
-
-
-VT220-like Keyboard Layout
-===============================================================================
-
-I have to say, i don't use it and i don't like it, so it's mostly unsupported
-and untested. Patches welcome!
-
-
-132-column mode
-===============================================================================
-
-There are known difficulties running pcvt in 132 column mode in conjunction
-with X. Switching to 132 column mode does not only depend on a given chipset,
-but on the board/manufacturers method of clock generation also. Even if your
-chipset is detected, there may be still a problem with your board and it's
-method of generating clocks. You may run in severe difficulties if your
-board has a programmable clock generator and you run X and you switch from
-132 col mode into X and back.
-
-I have currently no idea how to solve this, other than having a similar
-scheme as XFree86 applied to pcvt: Letting the user probe his board by using
-SuperProbe and recompiling pcvt according to the result.
-
-I stumbled a bit deeper into this with my ELSA Winner 1000, which is equipped
-with an ICD2061 clock synthesizer chip. For 132 column mode to work properly,
-clock generator 2 must deliver 40 MHz to the S3 VGA chip, but this value has
-to be programmed or initialized. If this VGA board has ever been switched
-into 132 colums, i.e. in my case from a DOS program, it will continue to do
-so until X runs or the machine is power cycled. If that occurs, the clock
-generator 2 does contain nothing or garbage (in case of power cycling) or it
-does contain the value for the current resolution in X in case of having been
-in the X Server screen recently.
-
-The X Server reprograms the clock generator each time the server is entered,
-so the only thing to do is to reprogram the clock generator too when pcvt is
-entered. Until now i found no way of identifying the clock oscillator chip
-used, so an automatic clock switching seems to be a problem.
-
-
-NetBSD 0.9 and Xfree86 2.0
-===============================================================================
-
-To get the X server up and running on 0.9, you have to compile pcvt with
-PCVT_USL_VT_COMPAT disabled, otherwise X (and SuperProbe) will hang the
-video driver (not the whole machine !). This bug is reproducible but not
-found yet ...
-This does not apply to NetBSD-current, 386BSD and FreeBSD.
-
-
-X server ioctl compatibility:
-===============================================================================
-
-The compatibility X-Mode ioctl commands CONSOLE_X_MODE_ON and
-CONSOLE_X_MODE_OFF should not be used intermixed with the USL VT style
-commands on another virtual terminal. NB, that this situation could happen
-if you run an XFree86 2.0 server on one virtual terminal and attempt to
-run SuperProbe version 1.0 (as delivered with the XFree86 2.0 release)
-on another vty. SuperProbe is still using the old commands in order to
-gain IO privileges.
-Since the old commands cannot care for things like terminal switching,
-serious corruption could result from this, which need not to be detected
-immediately (i.e., apparently SuperProbe ran well). Known problems are
-font corruptions after the X server has been shut down later, or palette
-flickers in 1-second intervals due to an erroneously re-enabled screen
-saver.
-
-Once that SuperProbe has been fixed in its release to use the USL VT style
-commands, any support for the old CONSOLE_X_MODE_XXX commands will be
-eliminated.
-
-(Recent comment: SuperProbe 1.3 has been fixed. It will be delivered with
-XFree86 2.1.)
-
-
-How to set the foreground intensity to high on VGA mono screens:
-===============================================================================
-
-try to issue the command: "scon -p8,60,60,60", EXPERIMENT !!!
-
-
-How to change the color palette on VGA cards:
-===============================================================================
-
-try out the following commands:
-
- /usr/local/bin/scon -d/dev/ttyv0 -pblack:0,0,0 -pblue:20,20,40
- /usr/local/bin/scon -d/dev/ttyv0 -pbrown:55,55,15 -plightgray:0,42,0
- /usr/local/bin/scon -d/dev/ttyv1 -pblack:42,42,42 -pblue:60,60,60
- /usr/local/bin/scon -d/dev/ttyv1 -pbrown:60,60,30 -plightgray:30,10,0
- /usr/local/bin/scon -d/dev/ttyv2 -pblack:42,42,42 -pblue:63,63,63
- /usr/local/bin/scon -d/dev/ttyv2 -pbrown:60,60,20 -plightgray:0,22,0
- /usr/local/bin/scon -d/dev/ttyv3 -pblack:38,38,38 -pblue:63,63,63
- /usr/local/bin/scon -d/dev/ttyv3 -pbrown:60,40,0 -plightgray:0,0,20
-
- ("scon -p default" resets the colors ...)
-
-
-I have the screensaver compiled in, but can't see any effect
-===============================================================================
-
-Don't forget to turn it on with the scon utility. E.g.,
-
- scon -t 120
-
-sets the timeout to 2 minutes.
-
-
-Your Notebook uses the NumLock state to switch half of the keyboard into a
-numeric keypad
-===============================================================================
-
-Sigh, each time you leave "vi", your NumLock LED is on again and you
-get a "6" instead of "o"? Try
-
- options "PCVT_INHIBIT_NUMLOCK"
-
-this prevents applications from turning NumLock on/off (except the
-Xserver - but you want this).
-
-
-Your notebook significantly loses contrast when using pcvt
-===============================================================================
-
-Pcvt turns off the "high intensity" attribute bit internally (to enable
-the use of a 512-characters charset). Some notebooks hard-code the out-
-put intensity versus the character attribute though (i know it for a
-Cirrus Logic CL-GD610/620 chipset).
-
-As a quick & dirty workaround, you can reverse what pcvt did to the
-Attribute Controller. Do not hack pcvt_sup.c, instead patch your
-VGA registers during rc.local with the help of the vgaio utility:
-
- echo "ar12=0f" | vgaio > /dev/null
-
-For the CL-GD610/620, i'm remapping some attribute registers and
-get a simple gray scale emulation with this (i.e., i DO NOT use
-the hack above):
-
- eagle_id=`echo 'cr1f?' | vgaio | cut -dx -f2`
- echo "sr 6 = $eagle_id" | vgaio > /dev/null # enable extended regs
- echo "sr d5 = 40" | vgaio > /dev/null # not inverse, enable
- # color emulation
- echo "ar0=0;ar1=9;ar2=12;ar3=1b;ar4=24;ar5=2d;ar6=36;ar7=3f"|vgaio>/dev/null
- echo "ar8=0;ar9=9;ara=12;arb=1b;arc=24;ard=2d;are=36;arf=3f"|vgaio>/dev/null
-
-NOTE THAT THIS IS ONLY FROM EXPERIMENTS! There's no warranty that something
-like this wouldn't damage your screen/VGA!
-
-(If you have chipset documentation, you're lucky...)
-
-
-How to set the "LINES"-Environment variable for sh/csh:
-===============================================================================
-
-(Note: this is mostly obsoleted now since the driver properly generates
-SIGWINCH'es to notify applications about a changed screen size.)
-
- first for the csh:
-
- alias linesw scon -s \!^ \; setenv LINES \!^
-
- now for the bash/ash/sh/bash users:
-
- linesw()
- {
- scon -s $1
- LINES=$1; export LINES
- }
-
-/* EOF */
diff --git a/usr.sbin/pcvt/Misc/Etc/Makefile b/usr.sbin/pcvt/Misc/Etc/Makefile
deleted file mode 100644
index 0225202..0000000
--- a/usr.sbin/pcvt/Misc/Etc/Makefile
+++ /dev/null
@@ -1,7 +0,0 @@
-# $FreeBSD$
-
-NO_OBJ=
-FILES= Termcap Terminfo pcvt.el xmodmap-german pcvt.sh
-FILESDIR= ${BINDIR}/Etc
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/Misc/Etc/Termcap b/usr.sbin/pcvt/Misc/Etc/Termcap
deleted file mode 100644
index a4eb030..0000000
--- a/usr.sbin/pcvt/Misc/Etc/Termcap
+++ /dev/null
@@ -1,284 +0,0 @@
-#---------------------------------------------------------------------------
-#
-# pcvt termcap database entry (release 3.20)
-#
-# last edit-date: [Sun Apr 2 18:31:04 1995]
-#
-# -hm new entries for SR and SF
-# -hm removing duplicate entries
-#
-#---------------------------------------------------------------------------
-
-#---------------------------------------------------------------------------
-# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
-# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
-# 50 lines entries
-# 80 columns
-#---------------------------------------------------------------------------
-pcvt25|dec vt220 with 25 lines:\
- :li#25:\
- :co#80:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
- :tc=pcvtXX:
-
-pcvt28|dec vt220 with 28 lines:\
- :li#28:\
- :co#80:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;28r\E[28;1H:\
- :tc=pcvtXX:
-
-pcvt35|dec vt220 with 35 lines:\
- :li#35:\
- :co#80:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;35r\E[35;1H:\
- :tc=pcvtXX:
-
-pcvt40|dec vt220 with 40 lines:\
- :li#40:\
- :co#80:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
- :tc=pcvtXX:
-
-pcvt43|dec vt220 with 43 lines:\
- :li#43:\
- :co#80:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;43r\E[43;1H:\
- :tc=pcvtXX:
-
-pcvt50|dec vt220 with 50 lines:\
- :li#50:\
- :co#80:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;50r\E[50;1H:\
- :tc=pcvtXX:
-
-#---------------------------------------------------------------------------
-# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
-# termcap entries for pure VT220-Emulation and 25, 28, 35, 40, 43 and
-# 50 lines entries
-# 132 columns
-#---------------------------------------------------------------------------
-pcvt25w|dec vt220 with 25 lines and 132 cols:\
- :li#25:\
- :co#132:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
- :tc=pcvtXX:
-
-pcvt28w|dec vt220 with 28 lines and 132 cols:\
- :li#28:\
- :co#132:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;28r\E[28;1H:\
- :tc=pcvtXX:
-
-pcvt35w|dec vt220 with 35 lines and 132 cols:\
- :li#35:\
- :co#132:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;35r\E[35;1H:\
- :tc=pcvtXX:
-
-pcvt40w|dec vt220 with 40 lines and 132 cols:\
- :li#40:\
- :co#132:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
- :tc=pcvtXX:
-
-pcvt43w|dec vt220 with 43 lines and 132 cols:\
- :li#43:\
- :co#132:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;43r\E[43;1H:\
- :tc=pcvtXX:
-
-pcvt50w|dec vt220 with 50 lines and 132 cols:\
- :li#50:\
- :co#132:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;50r\E[50;1H:\
- :tc=pcvtXX:
-
-#---------------------------------------------------------------------------
-# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
-# termcap entries for HP-Emulation and 25, 28, 35, 40, 43 and 50
-# lines entries. note that the HP-Emulation uses the bottom 3 lines
-# for status and function key labels, so we get always 3 lines less.
-# "Xs" is a nonstandard, private flag indicating HP-like fkey labels
-# 80 column entries
-#---------------------------------------------------------------------------
-pcvt22h|dec vt220 with HP-fkey labels and 22 lines:\
- :li#22:\
- :co#80:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;22r\E[22;1H:\
- :tc=pcvtXX:
-
-pcvt25h|dec vt220 with HP-fkey labels and 25 lines:\
- :li#25:\
- :co#80:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
- :tc=pcvtXX:
-
-pcvt32h|dec vt220 with HP-fkey labels and 32 lines:\
- :li#32:\
- :co#80:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;32r\E[32;1H:\
- :tc=pcvtXX:
-
-pcvt37h|dec vt220 with HP-fkey labels and 37 lines:\
- :li#37:\
- :co#80:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;37r\E[37;1H:\
- :tc=pcvtXX:
-
-pcvt40h|dec vt220 with HP-fkey labels and 40 lines:\
- :li#40:\
- :co#80:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
- :tc=pcvtXX:
-
-pcvt47h|dec vt220 with HP-fkey labels and 47 lines:\
- :li#47:\
- :co#80:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;47r\E[47;1H:\
- :tc=pcvtXX:
-
-#---------------------------------------------------------------------------
-# NetBSD/FreeBSD vt220 terminal emulator console (pc keyboard & monitor)
-# termcap entries for HP-Emulation and 25, 28, 35, 40, 43 and 50
-# lines entries. note that the HP-Emulation uses the bottom 3 lines
-# for status and function key labels, so we get always 3 lines less.
-# "Xs" is a nonstandard, private flag indicating HP-like fkey labels
-# 132 column entries
-#---------------------------------------------------------------------------
-pcvt22hw|dec vt220 with HP-fkey labels, 22 lines and 132 cols:\
- :li#22:\
- :co#132:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;22r\E[22;1H:\
- :tc=pcvtXX:
-
-pcvt25hw|dec vt220 with HP-fkey labels, 25 lines and 132 cols:\
- :li#25:\
- :co#132:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
- :tc=pcvtXX:
-
-pcvt32hw|dec vt220 with HP-fkey labels, 32 lines and 132 cols:\
- :li#32:\
- :co#132:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;32r\E[32;1H:\
- :tc=pcvtXX:
-
-pcvt37hw|dec vt220 with HP-fkey labels, 37 lines and 132 cols:\
- :li#37:\
- :co#132:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;37r\E[37;1H:\
- :tc=pcvtXX:
-
-pcvt40hw|dec vt220 with HP-fkey labels, 40 lines and 132 cols:\
- :li#40:\
- :co#132:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
- :tc=pcvtXX:
-
-pcvt47hw|dec vt220 with HP-fkey labels, 47 lines and 132 cols:\
- :li#47:\
- :co#132:\
- :Xs:\
- :is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;47r\E[47;1H:\
- :tc=pcvtXX:
-
-#---------------------------------------------------------------------------
-# main entry, without "is" and "li" capabilities
-#
-# NOTE: because the 386BSD "vi"/"elvis" seems to have a bug if
-# both "ic" and "im" are specified (an original VT220
-# shows the same buggy behaviour!), "ic" has been taken
-# out of this entry. for reference, it should be "ic=\E[@".
-#
-#---------------------------------------------------------------------------
-pcvtXX|pcvt vt200 emulator (DEC VT220):\
- :AL=\E[%dL:\
- :DC=\E[%dP:\
- :DL=\E[%dM:\
- :DO=\E[%dB:\
- :IC=\E[%d@:\
- :LE=\E[%dD:\
- :RI=\E[%dC:\
- :SF=\E[%dS:\
- :SR=\E[%dT:\
- :UP=\E[%dA:\
- :ae=^O:\
- :al=\E[L:\
- :am:\
- :as=^N:\
- :bl=^G:\
- :bs:\
- :cb=\E[1K:\
- :cd=\E[J:\
- :ce=\E[K:\
- :cl=\E[H\E[J:\
- :cm=\E[%i%d;%dH:\
- :cr=^M:\
- :cs=\E[%i%d;%dr:\
- :ct=\E[3g:\
- :dc=\E[P:\
- :dl=\E[M:\
- :do=^J:\
- :ei=\E[4l:\
- :ho=\E[H:\
- :im=\E[4h:\
- :it#8:\
- :k1=\E[17~:\
- :k2=\E[18~:\
- :k3=\E[19~:\
- :k4=\E[20~:\
- :k5=\E[21~:\
- :k6=\E[23~:\
- :k7=\E[24~:\
- :k8=\E[25~:\
- :kD=\E[3~:\
- :kH=\E[4~:\
- :kI=\E[2~:\
- :kN=\E[6~:\
- :kP=\E[5~:\
- :kb=\177:\
- :kd=\EOB:\
- :ke=\E[?1l\E>:\
- :kh=\E[1~:\
- :kl=\EOD:\
- :km:\
- :kr=\EOC:\
- :ks=\E[?1h\E=:\
- :ku=\EOA:\
- :le=^H:\
- :mb=\E[5m:\
- :md=\E[1m:\
- :me=\E[m:\
- :mi:\
- :mr=\E[7m:\
- :ms:\
- :nd=\E[C:\
- :pb#16000000:\
- :pt:\
- :rc=\E8:\
- :rf=/usr/share/tabset/vt100:\
- :rs=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
- :sc=\E7:\
- :se=\E[27m:\
- :sf=\ED:\
- :so=\E[7m:\
- :sr=\EM:\
- :st=\EH:\
- :ue=\E[24m:\
- :up=\E[A:\
- :us=\E[4m:\
- :vt#3:\
- :xn:
-
-#---------------------------- E O F -------------------------------------------
diff --git a/usr.sbin/pcvt/Misc/Etc/Terminfo b/usr.sbin/pcvt/Misc/Etc/Terminfo
deleted file mode 100644
index 072f885..0000000
--- a/usr.sbin/pcvt/Misc/Etc/Terminfo
+++ /dev/null
@@ -1,41 +0,0 @@
-pcvt25h|pcvt vt220 emulator video driver 80 cols,
- lines#25, cols#80,
- am, bel=^G, blink=^[[5m, bold=^[[1m, clear=^[[H^[[J,
- cr=^M, csr=^[[%i%p1%d;%p2%dr, cub1=^H, cub=^[[%p1%dD, cud1=^J,
- cud=^[[%p1%dB, cuf1=^[[C, cuf=^[[%p1%dC, cup=^[[%i%p1%d;%p2%dH,
- cuu1=^[[A, cuu=^[[%p1%dA, dch1=^[[P, dch=^[[%p1%dP, dl1=^[[M,
- dl=^[[%p1%dM, ed=^[[J, el=^[[K, home=^[[H, ht=^I, hts=^[H,
- ich1=^[[@, ich=^[[%p1%d@, il1=^[[L, il=^[[%p1%dL, ind=^[D,
- indn=^[%p1%dD, is1=^[>^[[?3l^[[?4l^[[?5l^[[?7h^[[?8h^[[1;25r^[[25;1H,
- it#8, kbs=^?, kcub1=^[OD, kcud1=^[OB, kcuf1=^[OC, kcuu1=^[OA,
- kdch1=^[[3~, kf1=^[[17~, kf2=^[[18~, kf3=^[[19~, kf4=^[[20~,
- kf5=^[[21~, kf6=^[[23~, kf7=^[[24~, kf8=^[[25~, khome=^[[1~,
- kich1=^[[2~, kll=^[[4~, km, knp=^[[6~, kpp=^[[5~,
- mir, msgr, nel=^M^J, pb#16000000, rc=^[8, rev=^[[7m,
- rf=/usr/share/tabset/vt100, ri=^[M, rin=^[%p1%dM, rmacs=^O,
- rmir=^[[4l, rmkx=^[[?1l^[>, rmso=^[[27m, rmul=^[[24m,
- rs1=^[c^[>^[[?3l^[[?4l^[[?5l^[[?7h^[[?8h, sc=^[7, sgr0=^[[m,
- smacs=^N, smir=^[[4h, smkx=^[[?1h^[=, smso=^[[7m, smul=^[[4m,
- tbc=^[[3g, vt#3, xenl, colors#8, pairs#64, setf=\E[%p1%{30}%+%dm,
- setb=\E[%p1%{40}%+%dm,
-
-pcvt25hw|pcvt vt220 emulator video driver 132 cols,
- lines#25, cols#132,
- am, bel=^G, blink=^[[5m, bold=^[[1m, clear=^[[H^[[J,
- cr=^M, csr=^[[%i%p1%d;%p2%dr, cub1=^H, cub=^[[%p1%dD, cud1=^J,
- cud=^[[%p1%dB, cuf1=^[[C, cuf=^[[%p1%dC, cup=^[[%i%p1%d;%p2%dH,
- cuu1=^[[A, cuu=^[[%p1%dA, dch1=^[[P, dch=^[[%p1%dP, dl1=^[[M,
- dl=^[[%p1%dM, ed=^[[J, el=^[[K, home=^[[H, ht=^I, hts=^[H,
- ich1=^[[@, ich=^[[%p1%d@, il1=^[[L, il=^[[%p1%dL, ind=^[D,
- indn=^[%p1%dD, is1=^[>^[[?3l^[[?4l^[[?5l^[[?7h^[[?8h^[[1;25r^[[25;1H,
- it#8, kbs=^?, kcub1=^[OD, kcud1=^[OB, kcuf1=^[OC, kcuu1=^[OA,
- kdch1=^[[3~, kf1=^[[17~, kf2=^[[18~, kf3=^[[19~, kf4=^[[20~,
- kf5=^[[21~, kf6=^[[23~, kf7=^[[24~, kf8=^[[25~, khome=^[[1~,
- kich1=^[[2~, kll=^[[4~, km, knp=^[[6~, kpp=^[[5~,
- mir, msgr, nel=^M^J, pb#16000000, rc=^[8, rev=^[[7m,
- rf=/usr/share/tabset/vt100, ri=^[M, rin=^[%p1%dM, rmacs=^O,
- rmir=^[[4l, rmkx=^[[?1l^[>, rmso=^[[27m, rmul=^[[24m,
- rs1=^[c^[>^[[?3l^[[?4l^[[?5l^[[?7h^[[?8h, sc=^[7, sgr0=^[[m,
- smacs=^N, smir=^[[4h, smkx=^[[?1h^[=, smso=^[[7m, smul=^[[4m,
- tbc=^[[3g, vt#3, xenl, colors#8, pairs#64, setf=\E[%p1%{30}%+%dm,
- setb=\E[%p1%{40}%+%dm,
diff --git a/usr.sbin/pcvt/Misc/Etc/pcvt.el b/usr.sbin/pcvt/Misc/Etc/pcvt.el
deleted file mode 100644
index bd6484f..0000000
--- a/usr.sbin/pcvt/Misc/Etc/pcvt.el
+++ /dev/null
@@ -1,19 +0,0 @@
-;; pcvt25.el, by J"org Wunsch <joerg_wunsch@uriah.sax.de>
-;;
-;; pcvt is a good VT emulator
-
-(load "term/vt220")
-
-;; ...but i don't like `find' and `select' on `home' and `end' keys
-(global-set-key [find] 'beginning-of-line)
-(global-set-key [select] 'end-of-line)
-
-;; and the f1 thru f8 keys are designated as f6 thru f13
-(define-key function-key-map "\e[17~" [f1])
-(define-key function-key-map "\e[18~" [f2])
-(define-key function-key-map "\e[19~" [f3])
-(define-key function-key-map "\e[20~" [f4])
-(define-key function-key-map "\e[21~" [f5])
-(define-key function-key-map "\e[23~" [f6])
-(define-key function-key-map "\e[24~" [f7])
-(define-key function-key-map "\e[25~" [f8])
diff --git a/usr.sbin/pcvt/Misc/Etc/pcvt.sh b/usr.sbin/pcvt/Misc/Etc/pcvt.sh
deleted file mode 100644
index cc3b34b..0000000
--- a/usr.sbin/pcvt/Misc/Etc/pcvt.sh
+++ /dev/null
@@ -1,163 +0,0 @@
-#---------------------------------------------------------------------------
-#
-# configure pcvt on system startup example
-# ----------------------------------------
-#
-# This script can be moved to /usr/local/etc/rc.d to
-# configure the pcvt driver at system startup time.
-#
-# Please adjust the values in the configuration
-# section below to suit your needs!
-#
-#---------------------------------------------------------------------------
-#
-# last edit-date: [Fri Mar 31 10:40:18 2000]
-#
-# $FreeBSD$
-#
-#---------------------------------------------------------------------------
-
-############################################################################
-# configuration section
-############################################################################
-
-# path for pcvt's EGA/VGA download fonts
-FONTP=/usr/share/misc/pcvtfonts
-
-pcvt_keymap="de" # keyboard map in /usr/share/misc/keycap.pcvt (or NO).
-pcvt_keydel="0" # key repeat delay, 0-3 (250,500,750,1000 msec) (or NO).
-pcvt_keyrate="5" # keyboard repetition rate 31-0 (2-30 char/sec) (or NO).
-pcvt_keyrepeat="ON" # keyboard repeat ON or OFF (or NO).
-pcvt_force24="NO" # force a 24 line display (when 25 possible) (or NO).
-pcvt_hpext="YES" # use HP extensions (function keys labels) (or NO).
-pcvt_lines="28" # lines (25, 28, 40, 50 or NO).
-pcvt_blanktime="60" # blank time (in seconds) (or NO).
-pcvt_cursorh="0" # cursor top scanline (topmost line is 0) (or NO).
-pcvt_cursorl="16" # cursor low scanline (bottom line is 16) (or NO).
-pcvt_monohigh="YES" # set intensity to high on monochrome monitors (or NO).
-
-############################################################################
-# nothing to configure from here
-############################################################################
-
-# check for correct driver and driver version matching
-
-if ispcvt -d /dev/ttyv0 ; then
- echo ""
- echo "configuring pcvt console driver"
-
-# get video adaptor type
-
- adaptor=`scon -d /dev/ttyv0 -a`
- echo -n " video adaptor type is $adaptor, "
-
-# get monitor type (mono/color)
-
- monitor=`scon -d /dev/ttyv0 -m`
- echo "monitor type is $monitor"
-
-# load fonts into vga
-
- if [ $adaptor = VGA ] ; then
- echo -n ' loading fonts: 8x16:0,'
- loadfont -d /dev/ttyv0 -c0 -f $FONTP/vt220l.816
- echo -n '1 '
- loadfont -d /dev/ttyv0 -c1 -f $FONTP/vt220h.816
- echo -n ' 8x14:0,'
- loadfont -d /dev/ttyv0 -c2 -f $FONTP/vt220l.814
- echo -n '1 '
- loadfont -d /dev/ttyv0 -c3 -f $FONTP/vt220h.814
- echo -n ' 8x10:0,'
- loadfont -d /dev/ttyv0 -c4 -f $FONTP/vt220l.810
- echo -n '1 '
- loadfont -d /dev/ttyv0 -c5 -f $FONTP/vt220h.810
- echo -n ' 8x8:0,'
- loadfont -d /dev/ttyv0 -c6 -f $FONTP/vt220l.808
- echo '1 '
- loadfont -d /dev/ttyv0 -c7 -f $FONTP/vt220h.808
-
-# setting screen sizes
-
- if [ "X${pcvt_lines}" = X"28" ]; then
- size=-s28
- echo ' switching to 28 lines'
- elif [ "X${pcvt_lines}" = X"40" ]; then
- size=-s40
- echo ' switching to 40 lines'
- elif [ "X${pcvt_lines}" = X"50" ]; then
- size=-s50
- echo ' switching to 50 lines'
- else
- size=-s25
- echo ' switching to 25 lines'
- fi
- fi
-
-# use HP extensions to VT220 emulation ?
-
- if [ "X${pcvt_hpext}" != X"NO" ] ; then
- emulation=-H
- echo " setting emulation to VT220 with HP extensions"
- else
- emulation=-V
- echo " setting emulation to VT220"
- fi
-
-# for all screens do
-
- for device in /dev/ttyv*
- do
- scon -d$device $size $emulation >/dev/null 2>&1
- if [ $? != 0 ]
- then
- break 1
- fi
-
- if [ X${pcvt_cursorh} != X"NO" -a X${pcvt_cursorl} != X"NO" ] ; then
- cursor -d$device -s$pcvt_cursorh -e$pcvt_cursorl
- fi
-
-# if monochrome monitor, set color palette to use a higher intensity
-
- if [ X${pcvt_monohigh} != X"NO" -a $monitor = MONO -a $adaptor = VGA ] ; then
- scon -d$device -p8,60,60,60
- fi
- done
-
-# switch to screen 0
-
- echo " switching to screen 0"
- scon -d /dev/ttyv0
-
-# set screensaver timeout
-
- if [ "X${pcvt_blanktime}" != X"NO" ]; then
- echo " setting screensaver timeout to $pcvt_blanktime seconds"
- scon -d /dev/ttyv0 -t$pcvt_blanktime
- fi
-
-# setup keyboard for national keyboard layout
-
- if [ "X${pcvt_keymap}" != X"NO" ]; then
- echo " switching national keyboard layout to $pcvt_keymap"
- kcon -m $pcvt_keymap
- fi
-
-# setup keyboard repeat delay value
-
- if [ "X${pcvt_keydel}" != X"NO" ]; then
- echo " setting keyboard delay to $pcvt_keydel"
- kcon -d$pcvt_keydel
- fi
-
-# setup keyboard repeat rate value
-
- if [ "X${pcvt_keyrate}" != X"NO" ]; then
- echo " setting keyboard repeat rate to $pcvt_keyrate"
- kcon -r$pcvt_keyrate
- fi
-
- echo "finished configuring pcvt console driver"
-fi
-
-# EOF
diff --git a/usr.sbin/pcvt/Misc/Etc/xmodmap-german b/usr.sbin/pcvt/Misc/Etc/xmodmap-german
deleted file mode 100644
index 61bd100..0000000
--- a/usr.sbin/pcvt/Misc/Etc/xmodmap-german
+++ /dev/null
@@ -1,117 +0,0 @@
-! German keyboard with a programmer-like mapping,
-! J"org Wunsch <joerg_wunsch@uriah.sax.de>
-!
-! (``programmer-like'' stands for having brackets and braces on diaeresis
-! keys, whereas the ModeShifted keys result in umlauts)
-!
-! Note: the modifier keys are commented out, since they are remapped
-! within Xconfig to match internationalization requirements
-!
-keycode 8 =
-keycode 9 = Escape
-keycode 10 = 1 exclam
-keycode 11 = 2 quotedbl twosuperior
-keycode 12 = 3 paragraph threesuperior
-keycode 13 = 4 dollar
-keycode 14 = 5 percent
-keycode 15 = 6 ampersand
-keycode 16 = 7 slash braceleft
-keycode 17 = 8 parenleft bracketleft
-keycode 18 = 9 parenright bracketright
-keycode 19 = 0 equal braceright
-keycode 20 = ssharp question backslash
-keycode 21 = apostrophe grave
-keycode 22 = Delete
-keycode 23 = Tab
-keycode 24 = q Q at
-keycode 25 = W
-keycode 26 = E
-keycode 27 = R
-keycode 28 = T
-keycode 29 = Z
-keycode 30 = U
-keycode 31 = I
-keycode 32 = O
-keycode 33 = P
-keycode 34 = bracketright braceright udiaeresis Udiaeresis
-keycode 35 = plus asterisk asciitilde
-keycode 36 = Return
-! keycode 37 = Control_L
-keycode 38 = A
-keycode 39 = S
-keycode 40 = D
-keycode 41 = F
-keycode 42 = G
-keycode 43 = H
-keycode 44 = J
-keycode 45 = K
-keycode 46 = L
-keycode 47 = backslash bar odiaeresis Odiaeresis
-keycode 48 = bracketleft braceleft adiaeresis Adiaeresis
-keycode 49 = asciicircum degree
-! keycode 50 = Shift_L
-keycode 51 = numbersign apostrophe
-keycode 52 = Y
-keycode 53 = X
-keycode 54 = C
-keycode 55 = V
-keycode 56 = B
-keycode 57 = N
-keycode 58 = m M mu
-keycode 59 = comma semicolon
-keycode 60 = period colon
-keycode 61 = minus underscore
-! keycode 62 = Shift_R
-keycode 63 = KP_Multiply
-! keycode 64 = Alt_L Meta_L
-keycode 65 = space
-! keycode 66 = Caps_Lock
-keycode 67 = F1
-keycode 68 = F2
-keycode 69 = F3
-keycode 70 = F4
-keycode 71 = F5
-keycode 72 = F6
-keycode 73 = F7
-keycode 74 = F8
-keycode 75 = F9
-keycode 76 = F10
-! keycode 77 = Num_Lock
-keycode 78 = Multi_key
-keycode 79 = KP_7
-keycode 80 = KP_8
-keycode 81 = KP_9
-keycode 82 = KP_Subtract
-keycode 83 = KP_4
-keycode 84 = KP_5
-keycode 85 = KP_6
-keycode 86 = KP_Add
-keycode 87 = KP_1
-keycode 88 = KP_2
-keycode 89 = KP_3
-keycode 90 = KP_0
-keycode 91 = KP_Decimal
-keycode 92 = X386Sys_Req
-keycode 93 =
-keycode 94 = less greater bar
-keycode 95 = F11
-keycode 96 = F12
-keycode 97 = Home
-keycode 98 = Up
-keycode 99 = Prior
-keycode 100 = Left
-keycode 101 = Begin
-keycode 102 = Right
-keycode 103 = End
-keycode 104 = Down
-keycode 105 = Next
-keycode 106 = Insert
-keycode 107 = Delete
-keycode 108 = KP_Enter
-! keycode 109 = Control_R
-keycode 110 = Pause
-keycode 111 = Print
-keycode 112 = KP_Divide
-! keycode 113 = Alt_R Meta_R
-keycode 114 = Break
-
diff --git a/usr.sbin/pcvt/Misc/Makefile b/usr.sbin/pcvt/Misc/Makefile
deleted file mode 100644
index 442c704..0000000
--- a/usr.sbin/pcvt/Misc/Makefile
+++ /dev/null
@@ -1,8 +0,0 @@
-# $FreeBSD$
-
-NO_OBJ=
-FILES= README.FIRST
-SUBDIR= Doc Etc
-
-.include "Makefile.inc"
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/Misc/Makefile.inc b/usr.sbin/pcvt/Misc/Makefile.inc
deleted file mode 100644
index c7a2ebc..0000000
--- a/usr.sbin/pcvt/Misc/Makefile.inc
+++ /dev/null
@@ -1,4 +0,0 @@
-# $FreeBSD$
-
-DISTRIBUTION= doc
-BINDIR= ${SHAREDIR}/pcvt
diff --git a/usr.sbin/pcvt/Misc/README.FIRST b/usr.sbin/pcvt/Misc/README.FIRST
deleted file mode 100644
index a2701c7..0000000
--- a/usr.sbin/pcvt/Misc/README.FIRST
+++ /dev/null
@@ -1,184 +0,0 @@
-================================================================================
-| |
-| P C V T - VT220 Terminal Emulation Driver |
-| ------------------------------------------- |
-| |
-| (c) Copyright 1992, 2000 by |
-| |
-| Hellmuth Michaelis |
-| Hallstr.20 |
-| Rellingen |
-| Europe |
-| |
-| For the contributors copyrights which apply to parts of the source |
-| see the header sections of the respective source files. |
-| |
-================================================================================
-
-Written by: Hellmuth Michaelis (hm@freebsd.org)
-
-The major contributors to pcvt are Brian and Joerg, pcvt would not be what it
-is without the help, the support and the code from Joerg:
-
- Brian Dunford-Shore (brian@athe.wustl.edu)
-
- wrote parts of the EGA/VGA hardware handling and
- some of the more ugly aspects of the VT220.
-
- Joerg Wunsch (joerg_wunsch@uriah.heep.sax.de)
-
- added ALL support for XFree86, the screensaver sub-
- system and support for FreeBSD (and much more ...).
-
-
-I have to thank the following people for their help, for beta-testing, bugfixes,
-code, keymaps, suggestions, hints, patience and too much more to mention:
-
- Scott Turner (scotty@gagetalker.com)
- Peter Galbavy (peter@wonderland.org)
- Michael Havemester (tik@abqhh.hanse.de)
- Gordon L. Burditt (gordon@sneaky.lonestar.org)
- Bruce Evans (bde@runx.oz.au)
- Heiko W. Rupp (hwr@pilhuhn.ka.sub.org)
- Carsten Lutz (clu@malihh.hanse.de)
- Christian Rohrmueller (internal@doitcr.doit.sub.org)
- Andy Duplain (duplain@rtf.bt.co.uk)
- Marko Karppinen (dreamer@purkki.apu.fi)
- Onno van der Linden (c/o frank@fwi.uva.nl)
- Dave Nelson (dcn@ignatz.acs.depaul.edu)
- Mark Weaver (Mark_Weaver@brown.edu)
- John Brezak (brezak@apollo.hp.com)
- Jan-Oliver Neumann (jan@encap.hanse.de)
- Kim Andersen (kim@dde.dk)
- Michael Graff (explorer@iastate.edu)
- Randy Terbush (randyt@cse.unl.edu)
- Benjamin Lewis (blewis@vet.vet.purdue.edu)
- Daniel Harris (daniel@reubio.apana.org.au)
- Alistair G. Crooks (agc@uts.amdahl.com)
- Szabolcs Szigeti (pink@bagira.fsz.bme.hu)
- Charles Hannum (mycroft@gnu.ai.mit.edu)
- Thomas Gellekum (thomas@ghpc8.ihf.rwth-aachen.de)
- Matthieu Herrb (matthieu@laas.fr)
- John A. Perry (perry@jpunix.com)
- John Kohl (jtk@kolvir.blrc.ma.us)
- Brian Moore (ziff@eecs.umich.edu)
- Martin Husemann (martin@euterpe.owl.de)
- Lon Willett (willett@math.utah.edu)
- Mark Willey (mwilley@mipos2.intel.com)
- Bill Sommerfeld (sommerfeld@orchard.medford.ma.us)
- Rafal Boni (r-boni@uiuc.edu)
- Thomas Eberhardt (thomas@mathematik.uni-bremen.de)
-
-
-History (see also Doc/ChangeLog)
---------------------------------------------------------------------------------
-
-Release Changes/Features
-------------- ----------------------------------------------------------------
-1.00 (08/92) Released as "pccons_vga" to alt.sources, VT100 emulation
-
-2.00 (01/93) VT220 emulation, many bugfixes and enhancements
-
-2.10 (03/93) Fixed bugs, monochrome environments, configuration changes
-
-2.20 (10/93) never released (experimental internal release)
-
-3.00 (03/94) Support for XFree86 >= 1.2, support for XFree86 2.0's
- syscons/USL model for multiple X servers and/or terminal
- sessions from Joerg Wunsch (Thank You, Joerg !!!), fixed
- bugs, (n)curses-based EGA/VGA font editor, memory mapped
- screens, full MDA/CGA virtual screen support, 132 columns
- on some super VGA chipsets, support for NetBSD >= 0.9,
- support for FreeBSD >= 1.0 and much more ....
- (posted to comp.sources.misc, Volume 41, Issue 140-152)
-
-3.10 (08/94) never released (experimental internal release)
-
-3.20 Fast forward/backward scrolling from Michael Havemester,
- further optimization by Charles Hannum. Keyboard queueing
- for silo overflow minimization also from Michael.
- Many bugfixes, cleanups and enhancements.
- Support for NetBSD 1.0 and FreeBSD 2.0.
-
-
-Features
---------------------------------------------------------------------------------
-
-The 'pcvt' VT220 emulator driver has:
-
- - Almost full DEC VT220 (VT100/VT102) Terminal functionality
- - support for XFree86 >= 1.2 using the pccons model
- - full multiple virtual screen / multiple X-server support
- for XFree86 >= 2.0 using the USL-VT/syscons model
- - Full Support for MDA, CGA, EGA and VGA display adaptors
- - configurable number of virtual screens on any video board
- - completely independent virtual terminals for any video board
- - (24), 25, 28, 40, or 50 lines for each virtual screen on VGA's
- - (24), 25, 35, or 43 lines for each virtual screen on EGA's
- - Fully remappable keyboard to support national keyboards
- - All VT220 character sets plus ISO Latin-1 and DEC Technical supported
- - VT220 downloadable character set supported when run on EGA/VGA
- - VT220 user defined keys for each virtual terminal
- - Optional function key label support a 'la Hewlett-Packard
- - Display function codes (0x00-0x1f/0x90-0xaf) functionality
- - Optional screen-saving feature
- - 132 column operation on several VGA chipsets:
- o Tseng Labs ET3000 and ET4000
- o Western Digital WD90C11
- o Trident TVGA9000, TVGA8900B, TVGA8900C, TVGA8900CL
- o Video 7 1024i
- o S3 80C928 (board dependent)
- o Cirrus Logic GD542x (board dependent)
-
-What it cannot:
-
- - No double wide/high characters
- - No softscroll
- - No inverse background
- - No VT220 printer output support
- - No VT52 support at all
- - No 8-bit controls
- - Only limited AT-keyboard (84 keys) support
-
-
-The entire pcvt package consists of:
-
- - the VT220 emulating driver itself
- - complete documentation for installation and operation
- - termcap/terminfo, pcvt.el, rc.local, /etc/ttys, xmodmap examples
- - cursor: utility to set the cursor size and shape
- - fed: curses-based EGA/VGA character set editor
- - fontedit: utility to edit the vt220 downloadable character set
- - ispcvt: utility to display the drivers compile time configuration
- - kcon: utility to setup national keyboard layouts and remap keys
- - keycap: keyboard mapping database library similar to termcap
- - loadfont: utility to load up to 4/8 fonts into an EGA/VGA board
- - mcon: utility to control/configure a keyboard based mouse emulator
- - scon: utility to runtime configure the video part of pcvt
- - userkeys: utility to set the VT220 user programmable function keys
- - vttest: VT100 compatibility torture test program
- - some color- characterset- and attribute demos
- - vga and keyboard register-level debugging utilities
-
-
-WYSIWYG - What You Share Is What You Get
---------------------------------------------------------------------------------
-
-PLEASE, if you fix bugs, add features, hack this driver to work on your
-hardware or simply don't get it up and running, get in contact with me!
-
- Help us to avoid reinventing the wheel over and over again!
- -----------------------------------------------------------
-
-The code is far from being perfect, YOU are very welcome to enhance it !
-Please mail bug reports/fixes, suggestions, enhancements & diffs to
-
- hm@freebsd.org
-
-I will support this driver as my time permits it, feel free to contact me!
-
-Have fun!
-
-Hellmuth
-
-$FreeBSD$
diff --git a/usr.sbin/pcvt/cursor/Makefile b/usr.sbin/pcvt/cursor/Makefile
deleted file mode 100644
index fb06878..0000000
--- a/usr.sbin/pcvt/cursor/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-PROG= cursor
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/cursor/cursor.1 b/usr.sbin/pcvt/cursor/cursor.1
deleted file mode 100644
index b80a427..0000000
--- a/usr.sbin/pcvt/cursor/cursor.1
+++ /dev/null
@@ -1,75 +0,0 @@
-.\" Copyright (c) 1992, 2000 Hellmuth Michaelis
-.\"
-.\" 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.
-.\"
-.\" 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.
-.\"
-.\" Last Edit-Date: [Mon Mar 27 16:33:23 2000]
-.\"
-.\" $FreeBSD$
-.\"
-.Dd March 27, 2000
-.Dt CURSOR 1
-.Os
-.Sh NAME
-.Nm cursor
-.Nd set cursor shape for the pcvt VT220 video driver
-.Sh SYNOPSIS
-.Nm
-.Op Fl d Ar device
-.Op Fl n Ar screenno
-.Op Fl s Ar lineno
-.Op Fl e Ar lineno
-.Sh DESCRIPTION
-The
-.Nm
-utility allows the user to set the cursor shape in a given virtual screen
-of the above mentioned driver.
-.Pp
-The options are as follows:
-.Bl -tag -width Ds
-.It Fl d
-Specifies a device for which the cursor shape is set.
-.It Fl n
-Sets the virtual screen number to apply the following parameters to.
-Not
-specifying this parameter implies the current virtual screen or the screen
-referenced by the -d parameter.
-.It Fl s
-Specifies the starting (top) scanline the cursor should have.
-.It Fl e
-Specifies the last (bottom) scanline the cursor should have.
-.El
-.Pp
-Be aware of the fact that the parameters need to be adjusted for the current
-size of the characterfont in use, on EGA and VGA boards sizes of 8, 14 and
-16 scanlines are currently supported.
-.Sh EXAMPLES
-The command
-.Dq Li cursor -s3 -e10
-sets the cursor on the current virtual screen to a rectangular shape on a
-14 line VGA screen.
-.Sh SEE ALSO
-.Xr loadfont 1 ,
-.Xr scon 1 ,
-.Xr pcvt 4
-.Sh BUGS
-No known bugs
diff --git a/usr.sbin/pcvt/cursor/cursor.c b/usr.sbin/pcvt/cursor/cursor.c
deleted file mode 100644
index 01bdd10..0000000
--- a/usr.sbin/pcvt/cursor/cursor.c
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * Copyright (c) 1992, 1995 Hellmuth Michaelis
- *
- * 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 and Brian Dunford-Shore
- * 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.
- *
- */
-
-static char *id =
- "@(#)cursor.c, 3.20, Last Edit-Date: [Tue Apr 4 12:27:54 1995]\n$FreeBSD$";
-
-/*---------------------------------------------------------------------------*
- *
- * history:
- *
- * -hm adding option -d <device>
- *
- *---------------------------------------------------------------------------*/
-
-#include <stdio.h>
-#include <err.h>
-#include <fcntl.h>
-#include <sys/stat.h>
-#include <machine/pcvt_ioctl.h>
-#include <unistd.h>
-#include <paths.h>
-
-#define DEFAULTFD 0
-
-main(argc,argv)
-int argc;
-char *argv[];
-{
- struct cursorshape cursorshape;
- int fd;
- int c;
- int screen = -1;
- int start = -1;
- int end = -1;
- int dflag = -1;
- char *device;
-
- while( (c = getopt(argc, argv, "d:n:s:e:")) != -1)
- {
- switch(c)
- {
- case 'd':
- device = optarg;
- dflag = 1;
- break;
-
- case 'n':
- screen = atoi(optarg);
- break;
-
- case 's':
- start = atoi(optarg);
- break;
-
- case 'e':
- end = atoi(optarg);
- break;
-
- case '?':
- default:
- usage();
- break;
- }
- }
-
- if(start == -1 || end == -1)
- usage();
-
- if(dflag == -1)
- {
- fd = DEFAULTFD;
- }
- else if((fd = open(device, O_RDWR)) == -1)
- err(1, "ERROR opening %s", device);
-
- if(screen == -1)
- {
- struct stat stat;
-
- if((fstat(fd, &stat)) == -1)
- err(1, "ERROR opening %s", device);
- screen = minor(stat.st_rdev);
- }
-
- cursorshape.start = start;
- cursorshape.end = end;
- cursorshape.screen_no = screen;
-
- if(ioctl(fd, VGACURSOR, &cursorshape) == -1)
- err(1, "cursor - ioctl VGACURSOR failed, error");
- else
- exit(0);
-}
-
-usage()
-{
- fprintf(stderr,"\ncursor - set cursor shape for pcvt video driver\n");
- fprintf(stderr,"usage: cursor -d [device] -n [no] -s [line] -e [line]\n");
- fprintf(stderr," -d <device> device to use (%svX), default current\n", _PATH_TTY);
- fprintf(stderr," -n <no> screen no if specified, else current screen\n");
- fprintf(stderr," -s <line> start scan line (topmost scan line)\n");
- fprintf(stderr," -e <line> ending scan line (bottom scan line)\n\n");
- exit(1);
-}
-
diff --git a/usr.sbin/pcvt/demo/Makefile b/usr.sbin/pcvt/demo/Makefile
deleted file mode 100644
index 067c99b..0000000
--- a/usr.sbin/pcvt/demo/Makefile
+++ /dev/null
@@ -1,55 +0,0 @@
-# $FreeBSD$
-
-PROG= playvt
-NO_MAN=
-
-DEMOS= chardemo.vt colors.vt sgr.vt
-DEMOS+= outerlimit.vt twzone.vt cowscene.vt xmas.vt
-CLEANFILES+= ${DEMOS}
-
-all: $(DEMOS) $(PROG)
-
-install:
- @${ECHO} "to look at the demos, execute:"
- @${ECHO} " \"cat <filename>.vt\""
- @${ECHO} "if it is an animation and it runs too fast, try out:"
- @${ECHO} " \"playvt -f <filename>.vt -d<some-delay-val>\""
-
-.include <bsd.prog.mk>
-
-# this seems to be the lowest common denominator
-
-chardemo.vt: ${.CURDIR}/${.TARGET}.gz.uu
- uudecode ${.CURDIR}/${.TARGET}.gz.uu
- gunzip -f ${.TARGET}.gz
- rm -f ${.TARGET}.gz
-
-colors.vt: ${.CURDIR}/${.TARGET}.gz.uu
- uudecode ${.CURDIR}/${.TARGET}.gz.uu
- gunzip -f ${.TARGET}.gz
- rm -f ${.TARGET}.gz
-
-sgr.vt: ${.CURDIR}/${.TARGET}.gz.uu
- uudecode ${.CURDIR}/${.TARGET}.gz.uu
- gunzip -f ${.TARGET}.gz
- rm -f ${.TARGET}.gz
-
-cowscene.vt: ${.CURDIR}/${.TARGET}.gz.uu
- uudecode ${.CURDIR}/${.TARGET}.gz.uu
- gunzip -f ${.TARGET}.gz
- rm -f ${.TARGET}.gz
-
-xmas.vt: ${.CURDIR}/${.TARGET}.gz.uu
- uudecode ${.CURDIR}/${.TARGET}.gz.uu
- gunzip -f ${.TARGET}.gz
- rm -f ${.TARGET}.gz
-
-outerlimit.vt: ${.CURDIR}/${.TARGET}.gz.uu
- uudecode ${.CURDIR}/${.TARGET}.gz.uu
- gunzip -f ${.TARGET}.gz
- rm -f ${.TARGET}.gz
-
-twzone.vt: ${.CURDIR}/${.TARGET}.gz.uu
- uudecode ${.CURDIR}/${.TARGET}.gz.uu
- gunzip -f ${.TARGET}.gz
- rm -f ${.TARGET}.gz
diff --git a/usr.sbin/pcvt/demo/README b/usr.sbin/pcvt/demo/README
deleted file mode 100644
index 5e33f54..0000000
--- a/usr.sbin/pcvt/demo/README
+++ /dev/null
@@ -1,20 +0,0 @@
-- The files "chardemo.vt" and "colors.vt" are taken from the MSDOS Kermit
- distribution and are redistributed with permission from Frank da Cruz.
-
-- cat chardemo.vt - displays all available character sets
-
-- cat colors.vt - displays all available back/foreground color combinations
-
-- cat sgr.vt - displays all possible graphic renditions
-
-- all other files are some VT100 animations collected over the time from
- unkown sources, play them with playvt.
-
-- Playvt is a program to play an animation file on pcvt: because pcvt is
- _much_ faster than an original VT100/VT220, it adds a programmable delay
- for each character so one can enjoy smooth-running animations! :-)
- There is no manpage available for playvt, just try to run playvt -? which
- should give sufficient information. You have to empirically find out which
- delay value fit's your needs!
-
-have fun!
diff --git a/usr.sbin/pcvt/demo/chardemo.vt.gz.uu b/usr.sbin/pcvt/demo/chardemo.vt.gz.uu
deleted file mode 100644
index f26c6fc..0000000
--- a/usr.sbin/pcvt/demo/chardemo.vt.gz.uu
+++ /dev/null
@@ -1,54 +0,0 @@
-# $FreeBSD$
-begin 644 chardemo.vt.gz
-M'XL("):V^BX"`V-H87)D96UO+G9T`*7829,=5Q5%X3D1X!]0DZ(1($`F[VLR
-M\UI"IF3`1V",<=DT%IT0!MF6)6%D^N:OLW*OO!',J<E>\09U[N2;Y,6CBP>'
-MVZT^^YE+_MY\^.*#9T\?/KF\O+I^[?[][:<W^.GIK79Y>?WI\\O7/^&7Z^>/
-MC,MWW[J^WO;RG?<?/=[VZLF+6V\_^]A_]K]_]T9<C;AQWF,:O]P9<7=$V__1
-MX7@ZS\O_'Q</YMN'NIQ>H9:MVE;K5H>M^E;'K=JTY2G9MCPG#UO.R>.62_*T
-MY9H\;]F3VZF64VV[U7*K;<=:CK7M6LNUPW:MY=IAN]9R[=73X?'%\KGMT7/E
-MQ7-]?GON7%_8WCK7%_/0N;Z45\YU(T^<Z\MYWUQ?R>/F^FI>-M?-/&NNK^5-
-M<WT]#YKK&WG-7+?RE+E>SCOF^N9V>ZEIN[U4VVXO==AN+W7,[:5.N;W4.;>7
-MFG-[J26WEUIS>ZF>VTN]DMM+W<[MI>[D]E+?RNVE[N;V4J]NM]?Z]G9[K:OM
-M]EKWMMMKO9;;:WTGM]?Z;FZO];W<7NOUW%ZK<GNM^[F]UO=S>ZT?Y/9:;^3V
-M6C_,[;7>S.VU?K3=[O76=KO7C[?;O=[>;O>ZSNU>[^1VKW=SN]=/<KO73W.[
-MU\]RN]?/<[O7>[G=ZT%N]_I%;O?Z96[W^E5N]_KU=KM-]9OM./MPN\[^=CO/
-M/LI]XG=Y`/%^7D#\/D\@_I`W$(_S".*#O(+X,,\@/LH[B"=Y"/%Q7D(\S5.(
-M9WE+J^=Y2ZL_YBVM/LE;6OW)M[1ZX5M:?>I;6OW9M[3ZBV]I]5??TNIOOJ75
-MWWU+JW_XEE;_]"VM_N5;6OW;M[3ZSTL7:TP\N;AY;V?1SKI@`X.-#%8:A#8(
-M<1#J(.1!Z(,0"*$00B*$1@B1$"HAPJ3-.F$#A8T45BJ$5@BQ$&HAY$+HA1`,
-MH1A",H1F"-$0JB'"IBVZ80.'C1Q6.H1V"/$0ZB'D0^B'$!"A($)"A(8($1$J
-M(L*HK3IB`XF-)%9*A)8(,1%J(N1$Z(D0%*$H0E*$I@A1$:HB9-5W5GUGU7=6
-M?;#J@U4?K/I@U0>K/ECUP:H/5GVPZH-5'ZSZ8-5E=9ADQ885&U:LK`A9$;(B
-M9$7(BI`5(2M"5H2L"%D1LB)D1835K:L=U.$D*#:@V(!B!44(BA`4(2A"4(2@
-M"$$1@B($10B*$!0A*"*@#F=!L0'%!A0K*$)0A*`(01&"(@1%"(H0%"$H0E"$
-MH`A!$0%UF`7%!A0;4*R@"$$1@B($10B*$!0A*$)0A*`(01&"(@1%!-1A$10;
-M4&Q`L8(B!$4(BA`4(2A"4(2@"$$1@B($10B*$!014(=54&Q`L0'%"HH0%"$H
-M0E"$H`A!$8(B!$4(BA`4(2A"4(2@^@ZJ[Z#Z#JH/4'V`Z@-4'Z#Z`-4'J#Y`
-M]0&J#U!]@.H#5!^@NJ!NWCCOHHY'1;$1Q484JRA"482B"$41BB(412B*4!2A
-M*$)1A*((11$1=3PIBHTH-J)811&*(A1%*(I0%*$H0E&$H@A%$8HB%$4HBHBH
-MXUE1;$2Q$<4JBE`4H2A"482B"$41BB(412B*4!2A*$)11$0=9T6Q$<5&%*LH
-M0E&$H@A%$8HB%$4HBE`4H2A"482B"$41$75<%,5&%!M1K*((11&*(A1%*(I0
-M%*$H0E&$H@A%$8HB%$5$U'%5%!M1;$2QBB(412B*4!2A*$)1A*((11&*(A1%
-M*(I0%*&H:0=U.@B*#2@VH%A!$8(B!$4(BA`4(2A"4(2@"$$1@B($10B*"*C3
-M45!L0+$!Q0J*$!0A*$)0A*`(01&"(@1%"(H0%"$H0E!$0)U.@F(#B@TH5E"$
-MH`A!$8(B!$4(BA`4(2A"4(2@"$$1@B("ZG06%!M0;$"Q@B($10B*$!0A*$)0
-MA*`(01&"(@1%"(H0%!%0IUE0;$"Q`<4*BA`4(2A"4(2@"$$1@B($10B*$!0A
-M*$)01$"=%D&Q`<4&%"LH0E"$H`A!$8(B!$4(BA`4(2A"4(2@"$$1@KJS@SHW
-M0;$!Q084*RA"4(2@"$$1@B($10B*$!0A*$)0A*`(01$!=3X(B@TH-J!801&"
-M(@1%"(H0%"$H0E"$H`A!$8(B!$4(B@BH\U%0;$"Q`<4*BA`4(2A"4(2@"$$1
-M@B($10B*$!0A*$)01$"=3X)B`XH-*%90A*`(01&"(@1%"(H0%"$H0E"$H`A!
-M$8(B`NI\%A0;4&Q`L8(B!$4(BA`4(2A"4(2@"$$1@B($10B*$!014.=94&Q`
-ML0'%"HH0%"$H0E"$H`A!$8(B!$4(BA`4(2A"4(2@[HZ/==/^M6[:/]=-^_>Z
-M:7RPF\87NVE\LIO&-[MI?+2;QE>[:7RVF\9WNVE\N)O&E[MI?+J;QK>[25!S
-M$Q0;4&Q`L8(B!$4(BA`4(2A"4(2@"$$1@B($10B*$!014/-!4&Q`L0'%"HH0
-M%"$H0E"$H`A!$8(B!$4(BA`4(2A"4$1`S4=!L0'%!A0K*$)0A*`(01&"(@1%
-M"(H0%"$H0E"$H`A!$0$UGP3%!A0;4*R@"$$1@B($10B*$!0A*$)0A*`(01&"
-M(@1%!-1\%A0;4&Q`L8(B!$4(BA`4(2A"4(2@"$$1@B($10B*$!0AJ#9`]1U4
-MWT'U'50?H/H`U0>H/D#U`:H/4'V`Z@-4'Z#Z`-4'J#Y`]?UK^+1_#I_V[^'3
-M_D%\&E_$I_%)?!K?Q*?Q47P:7\6G\5E\&M_%I_%A?!I?QJ?Q:7P:W\:G\7%\
-M$M32!,4&%!M0K*`(01&"(@1%"(H0%"$H0E"$H`A!$8(B!$4$U'(0%!M0;$"Q
-M@B($10B*$!0A*$)0A*`(01&"(@1%"(H0%!%0RU%0;$"Q`<4*BA`4(2A"4(2@
-M"$$1@B($10B*$!0A*$)01$`M)T&Q`<4&%"LH0E"$H`A!$8(B!$4(BA`4(2A"
-64(2@"$$1?CT_'&^W^B\8)0@*\AL``,4&
-`
-end
diff --git a/usr.sbin/pcvt/demo/colors.vt.gz.uu b/usr.sbin/pcvt/demo/colors.vt.gz.uu
deleted file mode 100644
index 456e6dc..0000000
--- a/usr.sbin/pcvt/demo/colors.vt.gz.uu
+++ /dev/null
@@ -1,16 +0,0 @@
-# $FreeBSD$
-begin 644 colors.vt.gz
-M'XL("):V^BX"`V-O;&]R<RYV=`#MU+UNG$`4!>!^I7T"FGD`Q^+^S)TB2N-8
-M;B(GA=UMM;*1C;(8":\E/W[,G(.SX0E2+,WE(#%\@N$T._.O7H;MYO;NR_6O
-MN_2CFX;^F.RR3??=^S'=CH]=^CX>QNGU(ME[^I9NQJE[FL:WE\>+Y/.%J_W#
-M;US8;K:;A*/963LO_'&+MVF^TP5#,0S#,3)&8)24MIMEA63MLEP[I#EYBRB,
-M@JB,BFB,ANB,CI@9,V(PQN=3:RRG#*D,(4/`$#($#"%#P!`R!`PA0\`0,@0,
-M(4/`$#*DOH_T<YR&_>'4H]6C]"@\2H_"H_0H/$J/PJ/T*#Q*C\*C]"@\2H_"
-M\W<;G)JLFHPF@\EH,IB,)H/):#*8C":#R6@RF(PF@\EHLM6G\LIP,AP,)\/!
-M<#(<#"?#P7`R'`PGP\%P,AP,)\-7C%P9F8P,1B8C@Y')R&!D,C(8F8P,1B8C
-M@Y')R&!D,O**$9419`0804:`$60$&$%&@!%D!!A!1H`19`0804:L&*4R"AD%
-MC$)&`:.04<`H9!0P"AD%C$)&`:.04<`H9)1_&/?/_6M:_BZ<UHV]3\MV&MX.
-MQW[YJ`]S\Z7EW1[ZEVY9Z++YK,YF)\.YKU9]=37U3\_'<U^=^^K<5_]57S6[
--]J.M_@#AP6KE^0D``&Y9
-`
-end
diff --git a/usr.sbin/pcvt/demo/cowscene.vt.gz.uu b/usr.sbin/pcvt/demo/cowscene.vt.gz.uu
deleted file mode 100644
index 7a5a4dbb..0000000
--- a/usr.sbin/pcvt/demo/cowscene.vt.gz.uu
+++ /dev/null
@@ -1,90 +0,0 @@
-begin 644 cowscene.vt.gz
-M'XL(".BA?2H"`V-O=W-C96YE+G9T`.U=P8[CQA$]&MA?F`N!R6%6B"QU=9.4
-ML`?;"1((1GP*XLL(&!C916QDXPT<(-Z#H&\/V5U-=C<?BV4@<)RD%XA":JA^
-M[W635:\DLOSP3%\^/']&[?N'Y_X-N1]>/3R;XQMS>3UNF+A!PT8S;MAQPV^Y
-M::N-?^R&C=WVOX>GXU]_?/_P])OM0R.;EXG.AXG/`1&*?*8/)I^</WJ=/WN;
-M/WR;Y=R;.,!3,L)3,L0^'2,9Y'!-1IF':=)QFFR@=*0F'6I_2Q@UZ6#Y:,5P
-MV7CY@/N479,/68Q9#IJ/6@R;,RT'+D=>#%V,G0U^W>>L[\OA%^,O`?;YBN<0
-MMUNAX(Y`EB@9S&&!TRR`FD.IIL%0`"L#:Y9H!P#7+)0U:X`(,8<$F`T`W35`
-M90[;)Q#*?R5;2+?@BP@CQLT.3M3,F=$)H1-")X1.")T\>C%AA-`M0K<(W2)T
-MB]`MTFX1ND/H#J$[A.X0ND/:'4)O$7J+T%N$WB+T%FEO$7J'T#N$WB'T#J%W
-M2'N'T'N$WB/T'J'W"+U'VGN$?D+H)X1^0N@GA'Y"VD\(_8S0SPC]C-#/"/V,
-MM)\1NCG"<'.$\>8(`\X11IPCF@`>M^2`0QZ.>3CHX:B'PQZ,>P8&/@,CGX&A
-MS\#89V#P,S#Z&1C^#(Q_!@9``R.@@2'0P!AH8!`T,`H:&`8-C(,&!D(#(Z&!
-MH=#`6&A@,#0P&AH8#@V,AP8&1`,CHH$AT<"8:&!0-#`J&A@6#8R+!@9&`R.C
-M@:'1P-AH8'`T,#H:&!X-C(\&!D@#(Z2!(=+`&&E@D#0P2AH8)@V,DP3C),$X
-M23!.$HR3=$0<:!DG3T/=>OFB^>V''Q^>SV^HN]P"K^[R]?B9P<V-K^1?K7]U
-M_K7UKYU_[?WKR;^>_>L0D/W_A4\/82F,%08P8003AC!A#!,&,6$4$X:A,`PQ
-MB<""[*4RJ\Q^)F;^^O`7(E\?3;P^FCJCE5F]/FK^J,PJLYH_*K/*K.:/RJPR
-MJ_FC,JO,*K/*K#+[.9@-=-SE$'[H;L>-\QMK+U]]^/#IIW5**[/*S%\@3;Q`
-M&KY`IGMCZI169O4"J1FD,JO,:@:IS"JSFD$JL\JL9I#*K#*KS"JSRNS_FYE[
-M8_O+U^%9J-[_0D]C]OJB>?_-]V__]MWW[ZK)J\PJLW"=-/$Z:>)U4CR+66>V
-M,JO72<TGE5EE5O-)95:9U7Q2F55FOY1\<AP_C)Y*AIT3"'9.(-@Y@0QLV8([
-MQN"6,;AG#&X:@[O&$'PR&G9.(-@Y@6#G!(*=$PAV3B`+YP%V3B#8.8%@YP2"
-MG1,(=DX@!^<!=DX@V#F!8.<$@IT3"'9.H!;.`^R<0+!S`L'."00[)Q#LG$`=
-MG`?8.8%@YP2"G1,(=DX@V#F!>C@/R\X)OKW&PZ/]W<>_O__P]KOO_S(^.#.\
-MWX7W7?G^R!EV6B#8:8%@IP6"G1;H!.<M[[3PZI/0%JF[7&^'\6F&(1K]X>'Y
-MJX?GS]IO.2*UE^LP]H%;+;G+-<WC]HTSEP,W5QJ.W.UVAU<Q;EW#1LSXCL*1
-MSH^R&]B%8X<@3/Y8$X\=`K*]E'S>O_(_RIWF=G-'?WSS]/GGL674J([GA<:]
-M89:8]\!F%[:ZR^X6-MWQ,K$]7@XA\-(Y;/D9W(4>#,6LG%(63.GCQT@IYT`!
-MEV9<&J=L4F["W\W\=S-.5/R[&SM"Q+6_-4U<\%M"D6?_Z%N[#8R'_]WO/-'#
-MXAR:G3]?=E<PH7TJY91*.6=*CBF3?F;23TQZ9F)#QHISW?#F\/$KFLN!P#DE
-M<$X)G-.I')\]B[#=!-L%V%+7R?.=ELCO3$ODI:1+=-C')1KF*2[1_N#IN="3
-M(\;.B4([46B7%+X-J"8]5_T><S!^CSF<PD[$<#.&FS#<O,Y39ID6V7(?P/T5
-M+?$(36F/1K_'1/Q5&8F<PTXD,IR:_&!32-97WO'Y,=#Q)[!_T\R+'1!B:S=_
-M6K^*%_5$@\(>T[!^+SG9;,9CHM#$YBG#Z3P##.%I6LJ\M5XX"X=K^Y!,4,1F
-M)C9CXC(F)C*9@'G;]XM)2/27^3)\?`Q@CX_\L8Q`$Z^2XR4CRJN6,&)^+N/7
-M9OQHXA=:E(ZS[1N+YHGHW=L&)J+Y_6K7*[-:?-4O\RJSRNS?<9UP_FG+=-S!
-M][WW2/M:S]UOK].5QXUOKR\O+[]NLI;*8]T3&]Z^A'^WJ=?M4_,ZCO^K"'";
-M$9X!Q`K&`B1!26'N,TX"U$"D-:@E5@J6HC4SW$N&MP*XB@@@,\P4].7>)).9
-MPMX`[@T"WP#R;04ZPWY))#<Y>H/@&XS?(`(OJPQR"HG^_Q2%;!H*$F\QBS4:
-MF(=`I&"234?)Y<,:F54V*W0D/B6A?'(6E%8XO9-(K;$2:2UX%5-5,OO]&K4_
-MR]Q6R<GLEO3*B2L)-JL,O]NBN,YQ@R1@N9C&DN<_UHG^<YNI0!5R?2V374[J
-M@J[`]P<-88DQGMZ"<TD9S'!)^AN)]3L=;9$W)/ZTR1Q-=\G]*Y'\'[7L9?KX
-M7%D(X.\1"A%P`4H9>UE'HQ>RH63E'%IJV0$E>$%*+7_:$O-3U&S)63NU%H*@
-MGI6U603+;4D_2=.F*+Q*I:P]"E&+A;H)PFZ;RFX*:;=-;;=M<:6Z?:JN>5E?
-M-DE?LRVPT2ALMB4V&HV%R"%@3")I(7):0Y)$TK9(THBD;9&T+9(6(L>@.(FT
-MZRMI)9%V6Z35B+3;(NVV2%N*'#7.(MWZ2CI)I-L6Z30BW;9(MRW2%2*]QEED
-MN[Z2K22RW1;9:D2VVR+;;9%M+C)HG+Q(M[Z0G:2QV];8:31VVQJ[;8U=II$E
-M3AK[=8V]I+'?UMAK-/;;&OMMC7VJ,4H<WTA_P[F//[>LB)Y.WO]2T9-F+WJ/
-M1)_65_HDB3YMBSYI1)^V19^V19]FT;/F8+Z!YO/Z0I\ES>=MS6>-YO.VYO.V
-MYG.B>=<L-.>2Q_]&SZH9/(IVZ:CP2T>583HJ'--189F.L_)9^&-47@@W@G#9
-M)VJ,HLXI:JRBQBL"L]@\1N&%;A+LL6@=C<([&I5Y-`KW:!3VT2S]XR!['W07
-MLJVPW**9-`HW:51VTBC\I%$82K-PE*/J(+M0[83%%MVE4=A+H_*71F$PC<)A
-MFM)B>M%>=2&Z%99:=)M&83>-RF\:A>$T"L?I_W-5^T1T<"C>JF2:.V&A1?=I
-M%/;3J/RG41A0HW"@XS'[1#.;LE%S)EGPHD;T949AS(S*F1F%-3,*;S8<$XK[
-M(#G:4+^7*#X)BRR:,J-P949ERXS"EQF%,1N."96^UQ@%>\6)X+.PQ*(C,PI+
-M9E2>S"A,F5&XLN&8W12^)KUCCK[/-^+1<7V%271CI'!CI')CI'!CI'!CE+BQ
-M6>^C7^^HUW:7>_-+ONW!4VSNOWB*=1;K+-99_)^8Q4]\(A"J4Q*K4U)4IZ2J
-M3DE1G9*B.B54G8;OAJ>\)Q2E)/^>H?E!0_>+AN8G#<UO&K0F=U(KU*(DUJ*D
-MJ$5)58N2HA8E12U*%JF]#WO!PI%0@9)8@9*B`B55!4J*"I04%2@YH/4^?3=.
-M0MU)8MU)BKJ35'4G*>I.4M2=U"ZEWN>?`4@H-TDL-TE1;I*JW"1%N4F*<I.Z
-MA=31D4]2A3*3Q#*3%&4FJ<I,4I29I"@SJ2^E^MICDBK4ER36EZ2H+TE57Y*B
-MOB1%?4FG0FJHLB:I0F5)8F5)BLJ25)4E*2I+4E26=,ZE!J635"O4E%:L*:VB
-MIK2JFM(J:DJKJ"GM,9/*2F>I@FNRHFNR"M=D5:[)*ER35;@FF[FFJ'26*C@F
-M*SHFJW!,5N68K,(Q685CLJECFI3.4@6[9.7[0#0W@NCN!-'<"J*Y%R2Q2[/2
-M6:K@EJSHEJS"+5F56[(*MV05;LEF;BDJG:4*;LF*;LDJW))5N26K<$M6X99L
-MZI8FI;-4P2U9T2U9A5NR*K=D%6[)*MR23=S2K'26*K@E*[HEJW!+5N66K,(M
-M685;LHE;.BQO/;:"6[*B6[(*MV15;LDJW))5N"5[6JM9IR?R5U=5=$M6X9:L
-MRBU9A5NR"K=DSZ)4)[@E)[HEIW!+3N66G,(M.85;\CT,[NM2!;?D1+?D%&[)
-MJ=R24[@EIW!+XS%W854%M^1$M^04;LFIW))3N"6G<$O#,7?I!!;<DA/=DE.X
-M):=R2T[AEIS"+86>!^M2!;?DY'MG-3?/ZNZ>=9>G3:GC,5M2!S1?B:](%=R2
-M$]V24[@EIW)+PU$OFU+;R\=-J>TE5.(K4@6WY$2WY!1NR:G<TG#4MM1.(;6[
-M'*1K57!+3G1+3N&6G,HM#4>]WI0Z'K,EM9?SJN"6G.B6G,(M.<DM-9-4R2VQ
-M4LDLL5#9*SG!*SG1*SF%5W*"5V*1@D]BC8)+8HFR1VH%C]2*'JE5>*1VW2--
-M1UF$4ZYENVZ1^';^HRQ3\$>MZ(]:A3]J5_T1"S1;Z]BN^B*69V1Y@B=J14_4
-M*CQ1N^:)$@D6X2Q6<<T2L<BU7]N"1L$,M:(9:E?,4)-J7#-#+,YNKN"*!V)I
-M%DL+R@3OTV+OP\*<0IA3+9[;7CS\/5%L2]@ZJ#`(%!Q/"QT/ZX-^AW5!G\-J
-MX'=!+`-^!\0:6J@AJA#,3`O,S$M4@:P,B^A4B]-M+P[ZNH=%=<+"(-/"BH!G
-M83W]NIY>OHKZS:L(?)?#,GI!!C(D+&/I$UC%THJPAJ7_8/9X*!?^D)-FSB>!
-M\]);,.-%TF?""TL1)WWA(^)T+T:*L[QP#?$B7IB%\#3<PB3PHW!EXN:'X$IG
-MP`^^E6:`'W5#@[CP=@G9^K?7IK0KDCR?`EV1?9EDGM?CPWE%)F>*8`07WEU,
-M85=DZL"LR,],C/#T92F9>64IF%D1GK@LR3(I$F8MRZO,+$UWS"I-HDPJS9G,
-MJ?R@"V\5=/)L&&BD29!9.#P_2=9C(DF.8QX.STV2PYB*D+:Z)&TQHSFQ,)<Y
-M0S&5.2TQD_PC+KR149BS3H"=\PRCQOC/F%,^8<@IB3!B>K@+NRG<E`\"VI0"
-M&*S/P6*P9ZP8X!FJSZ%B]&:D&+(#4`S2C'/*<3@<,PS_D5'"'F-PL&4(CK`!
-M@4,J`YQS@!`^>?SS-*+-#W1A=QH_!,3PZ&B(@ORPZ'$:P?`.CQUV^&G/:=N%
-M;1ZV]U$LC.J#%H>J<8?SD]^,3Y;&M^V\Z>;-UF_.P\5NI\=I;QJQF7JRIGLV
->.?"2C#BW34UWQQ.;K+_C\C-JOWWU+THZ&OFDJ0``
-`
-end
diff --git a/usr.sbin/pcvt/demo/outerlimit.vt.gz.uu b/usr.sbin/pcvt/demo/outerlimit.vt.gz.uu
deleted file mode 100644
index a2b6d1a..0000000
--- a/usr.sbin/pcvt/demo/outerlimit.vt.gz.uu
+++ /dev/null
@@ -1,193 +0,0 @@
-begin 644 outerlimit.vt.gz
-M'XL(",2<V"H"`V]U=&5R;&EM:70N=G0`[9U=C]S(=88O#0R"Y`?H9@#?V#<!
-MZYM<76FU8_>LM1IG-+*\WJL-D@M[K37LK&(;0?Y[2-;[G"*[1^.6+4ZV%RT(
-MF&)WL5AUZCWO^:ABUS]=//G)IT]^VET\^:I[^^0K__F3K\KXU_FGL=M=UH*;
-M"V%1F+_JCJPW%MSN8I-V_4;MAHW:C1NUFS9J-V_4;MFHW7ZC=H>-VG7=5@UO
-MI7%N*Y5S6^F<VTKIW%9:Y[92.[>5WKFM%,]MI7E^UCP_:>#=[NKVZFSVMC9[
-M<=+$ZU=G06\MZ#SI^<N;N]WURY^?I7WVYM;>7/_4Y]V;VYLS-L[8V,>&BV/[
-M;Z[O=F=H;`T-EY\&O_ORYO7M6=:;R[J??/6[JQ=7O[I^=7WS\BSQ,_&MB<]W
-MTP>OKN[.T-@:&G/(-=[V"T4$M3C[K+4X.RBU.-LC%6>^5+F?;OR?IM#_RPQ.
-MWU^<Y_`Q")69\T_]."\_#I_=//DJU'*<RN<YV#J<#K/<QT#OR5>I7L3YXBSY
-M;27?SPSVX_!LE/50R_'9"<K=O9W',J/H[NJ+7];AS#C2Y=3B&4T;<^ELX\89
-MN+F9KM)\%>O5R2&*L;Q9C>7-28_E1DY%FYH3]3*<$==8-N*:7:=*`I^-92<&
-M^*R9^1^'S^L-4SE^/OMB+D^?OQ[+I9;CZRHSUT]?O)K%-9?CJ_D&/S_Y;KYA
-M+L>[LZ/V",[V+.J+4?2SR["\RJNK?G7ENO7E^DZWOM6M[_7K>[V7'NVNQHL@
-M'=J=Z(++.!H_#^>7U\_O7M_6(<V?1/OD;#7/"8:#!,-Y7\T9$_O9]NYIZ'9O
-MSDO/9V3L(\-//M*S4]R5,+L*/]??EQ3FE>C:S/3HN5TJO[BV:B\6Y1LNYF<>
-MW'5[LZQ\M[Y\N;@.]]Y^\W+OEN?MDPN&M7?7U(S[Q?.]6_T]GU9YU;O"O7?%
-M^^]RW)7NO2O?\VE8W%7NO:N__R[KX7#O77.6=O7QV5\_$]4^41$AWMT^>_GJ
-MB^M7=7G-@L7EQV?X;)]+&J=EM!LG:#7\T^QV_M0Z_J-SA[>'QHAIO_OB-#L>
-M=L]/L^-Q=X)+>.<@^^RAW!-*.7\.LA_#^9A3HV^N7[PXR_JLA0=:&'IB[.5C
-M7G+[W<./>;C>(3P^6KM^HW;#1NVBBLGO]A993D/44R3@=[N;V^O?C&AY]H,%
-MBY1BF/RLJ9+?W=;O/``9K%(_>9%3I3#7#E-!E7JK5%#%N'M1*T4J%:N4J93H
-M"H7I*U5*5,I4HC!]I4J12H5*%*:O5"E0J:<2A>DK5?)4&JA$8?I*E9PJ):,K
-M4R1GE6"CA*"M$$SB?J"2U[0D).Y-XKZ?93A6"KM=K83$O4G<%RK%2=&F2DC<
-MF\1]WEW72@C:"MXD/IG-6@E!6\&;Q#T23PC:"MXD[I%X0M!6\"9QC\03@K:"
-M-XE[))Z-R`WE)G&/Q#."MH(WB3LD/NDU\9R]W4>EGDI@/(?V;B&5P/@8GMP2
-MI]B;C50"XSG-H@]3P=ZKI!(8SWGWFUHIM[<ZJ83$<Z%/I;U32J4P3_Y8J9_U
-M/4P%>Z/ULGF@M=(@T.6AO4]+)21>YA3.]);TXFU>*B'QXJ3FQ;5WB54)@1?D
-M;`63-^(N2-D*)FV$79!Q*U`%41<D;`63-((NR-<*)F?$7)"N%1J34`796J&A
-MFBI(U@I-PJK2V^OBS2!<7AC3_ZUJQSWLB"X?,?`CQ'?$)!PQE4<`X@A8+>%Y
-M^3YX+H%^^5Z@(V+3E/M4!B&;SMVG?`LUOGRO&B\(X?*]A+"@ELOW4LN"I"[?
-M2U(+NKM\+]TMB//R?<1Y%`4?1^9'F86C#,Q1I@J)/VCTD/B#YA.)F_V]SQ`C
-M<;/D]YGTA7-P^3[GX"@WXSB'Y2C7YR@GZBAW["C'[B@7<>%L7K[7V43BYJW>
-MY[8B<?-[[W&`_T:8>5Y8.N<;]O(-<;H^)_T>XUV(44W/.;^S#IYS?O_?.;\\
-MJ>))YOQ\-[D-O[JZ/<FNCQ_<79]FS_WN^0\[P^JXT_%=7!14J:-2QW=I4:B5
-M!M49^"9/A:M:Z';5%(Z%Z_EOS<T4ZA9S4]6*?=,O"K5*5I7,-\.B4*LD5:&7
-M?N[WM8'1_)_Y[]Q+S_B]HQ6$BM2\7Q1J%<C>O@F+0F<I$VWK=+]85)W?#`Y[
-M%ZK%PW7+JI;?NVBWQ,4M<5G+[5VT6]+BEK2LU>U=M%ORXI:\J&73P$6[I2QN
-M*<M:_=Y%NZ5?W+*J5?8NVBW#XI957_+>1;O%=8M[W'+,+NU=+&YRRYN6LG5Q
-M[V)QTQ(";CF'+NQ=+.1V]A?/_N(J9NM/,F3+4X;P^;,3_%69?DKL/=\]>_GS
-M<Z1\5L=[WDYRNY-\4;-&GC^[>?YZ]6N3S[GY]<,/>;C>8><_6KM^HW;#1NW&
-MC=I-&[7+;]S%?G=W<WK(&+V[E->[^T^DX_VTO/7JYF=W9W7<6AW'<*:XW:<O
-M7M]>G(5]YK[W_9+_1VNW;-1NOU&[PT;M[O^2_\=K>"N-FW[)_Y_GQ(S;??V1
-M_XT/J$SA_0:M;\ALT^_?G%1_N]/J[_1FZ$GUMS^Q_I83ZV\^L?ZF$^MO/+'^
-MAL?O[]?TX^N'^[NL9_W=W+Y]33^^?KB_#]>S_KH3ZV]W6OT=3JN[_6EUMYQ6
-M=_-I=3>=5G?C:74WG%9W3\VNG1B1G4Z[?J-VPT;MQHW:31NUFTF3C'[P^*^F
-M(,;RS6W=VJ//SZ#9'#13;J*?A7U99V(*_L</7NV>W?[RZF7=R;6L<9Z3[><D
-MSR_5U.E(<_GZKF[?"V?%.+/IO6PZ!HT)T`QS\>YFWFF73A<R\WMVC9KR?/W\
-M]LM7=\]>S-L;TYF8'I68WDX12%Y-2GW]]/F+9[?7=U_.FV'S>5+.1/5^HMJ@
-MW;)1N_U&[0Y;A4/=5@UO%L#9H3SS#P'\\8]__-U$(7VW^\L4WXY_OYD#73]]
-M]1'_U>#Y]S7D_XNMW(;555Q=I=557EV5U56_NAI65W-N=W'IUI?K[KAU?]RZ
-M0V[=([?NDEOWR:T[Y=:]\NM>^76O_+I7\^+YVWH(Q$>>EM_5A\R/G#!0^T*I
-MHS3VGE)OI6*E;*5DI6BE8"5[AK-G.'N&/<*>8`^P]JUY:WV2U'<?5R:7JW_O
-MA-+-'Q(?XR'I,1Z2'^,AY3$>TC_&0X;'>,A,@UL^Y1WDNOE#_&,\)#S&0^)C
-M/"0]QD/R8SRD/,9#^L=XR/`(#_&/H?'^,33>/X;&5R?KOS_JO]^M/;KOOOVH
-M_]ZMW<?M6N^V;+WJPF:M]YNV7C9M/6_:>MJT];AIZV'3UC?55;>IKKI-=753
-M5=U44S=5U$WU=%,UW51+-U72;75T2E7]^:/^^V8A\Y!VWS8GX=OY8/6T>W?9
-MN4_&_]Y??C=A:JK5[O^V_M)$V/E.!3=0Z"D4"IE"HA`I!!IRGH*C0-,=37<T
-MW=%T1]-=HJ&.MKM`@:8[FNXZ_5!&UWV2!NY,-)]*!6,GP<PR&:_>7?[LYK:*
-M8_IN+8E$5Q*C3/0DT9-$3Q(]20PR6C<BW8B,,M)TI.E(TY&F(TU'5SN?=ZWK
-M>7JG61W/NU6W(QT(2#GP_,#S`\\//#_P_&`3&.A`8&R!ICU->YKV-.UIVJ>Y
-MV[[;-9&/%R^O?GU7.SY>[$&//GADX.F"=\?`\^(8?!X#SXMC\'D,/*L(TE($
-M:;>[>2W0C1=K$50<AU)Q?#^4CX'GQ3'X/`:>%\?@\QCD71P#O6.0=W$,](Y!
-MU(74_MT<H_U^-N+3U:OK&:#]/93PO2+'6?4),6OW\^[?7E]?W;WX4@.HU+!&
-MV(>P:>K?RZ;?/XKL5Y,YU*MG+S^;9.&Z>V;S>\64M8?OU'OGZM6;F>3K;U)_
-M^_TERZGS:7?Y5BPW]7Z\G'Y1D^Z+Z!8X_`C4N@?6\@_QY3@&[W8+KVD<Q?B!
-M?OI1XQ@_.-"H,\<^R+$5O*:7=55[5$QA(W[?:?;O8,W\7M;4[Z\O9#%Y<L_N
-M$$7>?8]]4/T&N_5]O/CRYK6Z+LWXGI)K7&-0SO^KJTJO]WG_/TQG=`^HZ1]C
-MS(7[]%W-5BY-[GT.U)DK'^;*A0_S]MN:O)ZN=U?/QHCA1VRE__:'%;.G>$)>
-MYO>/W#X:7<V)Z?HCE^7MR.S:^/7V`#AA'R4-'.6`D<(>_XSS'9;S70XF-^Q/
-M9:.&LB2"^?"9^7C[9[=7>YUML^<.IJH<3$S8GX59K>-T:D25QY[\TX&P35^&
-MNFY3CZ,_4,*'1%CWQ97E$Q\4)]+TDS3M`)PJCT]O7M_M2:1I43C0$!-KO."T
-MF$7WFPC[`\GYI<!\G`XM64HL'PBJ.Y!)U(]GYY7(W`'=I#63C"-WBY$[06'Z
-M3;2_;]QI;[J/'_9\G,JB\T</NW^:ET\\:M#=<M"E#OKJU[^\NKV^>OE\7PV:
-M4KF#,1OHA[ILE%<3T,;J#N`?EF"?CVI:#B(=C*:LP=N-"FV#2-/!,XOG'M_C
-M^3B<.N>[_7$?W?O1PGKWP=WOZ7Z9SB#ZNWK?34=!+9Y[?(_G(W>JFK_9'[?9
-M],;(D4ZOPN-8$TC]2L^'?1O8.#.N`.^F7Q]<ZGD\L"SW=*0ZXCFT9XZ]6L5*
-M\8&>V,D^=>@O/]N?\GA@.._IU;RTXU<D=8^HTOV=JAY:*BNA/20KZTC=`%+\
-M"FG#$9,6%]H^_^ST./8OOGQU=W7[Y;ZJAP/$N7ULS;,W3)NTEVP5#KC)K>EG
-M[$>P?N3IQ*;%,(Y^;B6[#WOLTK9%:?N;W?7SW=\[>/BF^Z!N-$,CNG`?/'KY
-M!!_VW"77)QFXVZMGSW=7K_8%X/<=V6:UW!*&HNM[?)-NG^;"R-+Y8H5^J6^S
-MD?Y@L/V!2Q07L'&'K@UA0!A9U1QC<\Q1_"S.^]GMS1?[FN\.9)K63QD;+R9*
-M:7`#L#M@Z+1/P6[)V?<X*2:RD<Y:C%J68\!+:(Q_3+>3==M-)Z/4A\\_0__V
-MT.HUQ\8=."IA.1MIS]LRQ(6XG/*R#Z4E?S0D=P?BP%D)83FE2Q8\]#/,:3)$
-MR@L:FUG20.A74KA^^7(Z<F7M_`_[G&Q4;*0[^]NR@!W6*+@%\3_8RL(*NCU#
-M,C;3_8UF%E[VH3FP9OQP?S,7'#^WE,,7UP<6T1\D`12ICTWW2YS&A>_>)N8@
-MD'0'D;LOG\0Z,3CP#=T'4:O+^VCSH[;$.J\U\&E6]2#UXO<R$N/=2]V(W5(:
-M\XF2=OWC<'?#69+MPSA]N(?S@[C.$67YN.?R-0H\YFXSGXHIW0?=[1<#S?F#
-M'V[62Y[/ASW<;-#1M[@5;N^YX6)_*MT(QW*0VC."=/T^<MQ(Y_YBJ1'KP+SU
-M)2];#@>*G/;#:9<^B:6-U_#7=`AR<W&J>42]L&[1K9\]5O!+>84#O;&NN872
-M+@;M#Z33?1+[P^?A5';#4B;=P;18.UV_&&&3&?WIRH+=;7H=MJO+:^1T^YIL
-M$NI&F8>#3%;KQBAH,TK>.F1&L@O+;I:#K_W#7[O5]/@#ENI&:<:+?;1/G?>?
-M+PWS@W]/JN*=3@.O)N;!OQ>G5/'F]=W5[<)X/OCWXESQJ(HOKK^XOGO%^;E_
-MZ^_%:534F]&Y'3!>7S[526B#CCNK)X5/BS*<2U9/_/:<ZNT]QW-[CN?V','M
-M.69[NJVG(9K6D=B%8Z]3.]J:,ZH[G5'=ZQCJK).FHPZ3MO.B.1*:4Y\YV)D#
-MFCF?.>H(YJQ3EH=VD')`!`$9U$.//>?.Z02S.M*(%.IAR=-WD>/?$J?)Y=4A
-MSX-.A,XZ/KJ>-3V[ACJ96L=8<_AUT@'9P^)8[2SA)>1:S_7V]3CPZK-G!)O=
-MZF3RS.GE''6N<]$3AZC;V>O#_(L8=:0ZSWW@]/=.9\5SP/SR+/JHONAH^_2T
-MU(:G%^4UH87^%LU8WZDN`%-?U54[HURWU<.MI^,3=&!@7V6IUIQ.Y7-N<0I]
-MQ1T3I3/DLQT&WPFED?/>P:@@&H30`D"S8#FVZNF7SCGWG',^#:27Y`3.U,XD
-MK_#L=;1X$CKM@'`[Z!MX"IV<UIV$S7)P).)\,/==/6(N<&1A1&:1WD;TLT+3
-M<VRYYY#S"5FH?N+LP\3PD_33CG!W@N@@A!8!-`F?'%)O1]N#S1F:\TBS1%"Q
-M&`3%-"-QQNY015:08>$$<N$OS?BKB2@!L`>`PXS`>5@"H!,`ZVO[(BOF4G^#
-M:3LB03MH7?+H=50EIZ0[9L5IGIW7J9%.-.1JDX!1A.F$1*-+(1!J[(T9@Y#G
-MH,2)4`N@9"X]0PP,,:!E.M1^L-/I,^`+G$#?"7U9Z`M0(\?!@SZ!KQX*7X]:
-M#!SG&3F&$]D)>IV`-J$):56@)7!F,!/*(CSHA+*)]9C-BJ_I%UNZ6C=+].*\
-M828]$6325Q*Z6*\(:U-!`RSH0.$X4:%N!MT\HY7T)C"@7,)<%.:B(`?B(I0G
-MP$T$0<^BD"QEDBH($VI%C3@==.HX)U48FXRV41TTY4"J&,Z+XH8&,)&Z*,Z`
-M)JISPEL0W)+0UL-R9H(C+%<PPH-980?1P713`;%5L'GCN@ZX]>`M+\YU<;MK
-MY46\C&N0<156HOHKO(GIG(C.`3^,L!?J@HQO%.BR0-=C>SM1F\/V.LAMG+?<
-M,0<9NY.9C,R(,^#-D&\VHXBG43@RMMBLBN8*B$NP7`!Q3H@;A+@BQ"4A;GJ?
-M2%D2Z;%$(#60.:]596AD9YQ!5OU)0MFT)PK/1^Z?6[A_#,QA5>3U#7A]>4:<
-M*"T(DY*\*$Y0PZ`&`2P+7P-<%HW+>N#E%O#"M1&JL*$<&6PG#@M1;D94C8HQ
-M<A&S$L%JI+$*)\@LPF%)</+S\H:(-@F:2:HD0'7"41:'3<#0"#.><0-1,J3)
-MXHK%!*8`AT%BDPW$P,ES<\)4Y:ZZ=`((-/WRTCHX*S\%F%ZB,+*K/>U%BW)Q
-MA1M82NZ8$WB"L),%G0$[6`,'X0P6</CC'O%XL]B8;(^T/;0L\YAG%-45GHJC
-M03B*PD\0.3DAQ`L@<>\<YX*9FV@(1S?R%-%,#S(&'"HO\^9A&N\7V$BX&@ED
-M)5@PT9!8IN!#99RHN,!'T'S)VO4R=EDPB8))@'.:J=,,F5<?97R2M*`(9Y5C
-MG'GP9L^*8<.&!=[T>0]FX<M&*P*ZX2/)/Q(.G;P_SPW>X=2V*8=^/(%7G>@>
-MT^1P<7I<G*RYKB;FHAV,[3I"O$Z6Q0([YAJ3$C$E0<H?Y@F>999P/I+%,5(P
-MZ;QFUR:W1_<=<YKF.:U3J2G)$+;:JE.:<5]L3@OVQ&*TP7QDI_D,YIW(A\.<
-M`C'U!B('S*ZSH!\K[_##Y=22!ACD?A3-9D"!L0&8@(PST>%#H)MU<57\G4`9
-M5B;0N3#LG8SN%^>I!Z8S<K`\XHJ07))/E:3H%H\3CLD':+,GY=&D22&#YBY)
-M'8MF;C#69NX<^NAL]GK-WF3[;?:P9@4O6A:_6&1M7B9N9B^U)+!^*OV7VT9E
-MHGMG^N1PLIU@12SB9)T\U"^.+3+0`X''K&]S'"`/L&@:/7D88HQ`@-MCGWOL
-M,W99YYG+V4/7(X^.2F%(*:63F<G-"_I%L9(S0ZRH2CR,EC:7KZ#8(*SE5DAZ
-MB&ACBR9D^HJ\E")J*R"YX"\5"*N`9,VFQP![,[S]4_.7[,A$\93Z*L35D?2R
-MYTX&WD&)#H?%P1&>!W@S[;@'C5I[''@/.`->1<`(!3C.<FM2^R"UERZ:_606
-MR4MHTI*FJD@/!YPI#*;#.7?5*Z^X30`H&W?A'V=<]ZP>93THR\+7F2CS1%2O
-MHZ"-!<^U!S^65[&S(*MZJ-..=(GR2\&,F`?07N/R6!+S;%&M0-0@H7:DA`**
-M4E/3M0Y3&=5NE$,3I6Q1>(Z03BR6$C+O@BRLA-U)V%FR#M(*8NXD\NLMZ('^
-M)LF37<BP;@9W+7_CI!^*MT1R.!RN)0\EG%[NFNZ3[EJF`6L),>ZTG0E%8AZ=
-MI7LL-4B2R)$(<+"'P\?QG:6D92&]N+VR8)+[$36IP:*6H&1N9;K*;SJXFWS1
-MR'3*V3'_+:V,M4LP3R+:D3)89)%EGB*^(]-`QL,92?4MTUMP,PJ2E(M`%BTT
-M1\\2@32+I0#83F-UBC_=(-=%-@-IQ1;;H9J>#GF+^LD+!5G54#N&"^"0Z<1&
-MYG9W@KJ7;R9JCQ)-E/V+/9K>[`*TE["R"3")6R+..)8_"?*1A+DS1SH@V4$0
-MS4]M$M"`"B2UY-228\G"(2HY$Q8>(_[FY[)VX4E@>>QZZ-#T@((O#VB_FA59
-MJ;($7!*>7*-9@Z'EN2U`R79XK62N(%6H&W!'>RP??DR$;P<@UC=SYV4[\(91
-M2%LN@*:<](]T?D:-![27K`/$2Z;!68K!MX4CUH=L<2"0.8Y8O`CS1\`;95>4
-M11>FTB)GU$-'&91EC&O&N\M05?/?F;,BTBF*YG`4D-=3B5[1C".(<5A.A^5T
-M6$=;K!.U><OU&<0*$"/=-^FI6%\I98DGRLAG`JD)9[9&9BMB$$F2;Y2TV)-P
-M@A,SEC6K\IA[#`@+`=-2$@`L2N08=F11!$/SLHC:43B28I*M`Q0.FZN,@^"2
-MD$^PU1Y;:`P"3C2G)^(-1408L2[FFR86#K1XY\S![%K^FE"">%Q]*;+IA58M
-M7$5!L>P.[FT!&N-P9/J=C).MA+$"YN1U>'E(#0<D/SW)V6#B-X\0MIRV7%0=
-M,G0D'(*LK'_+F-HRBZ4UE9@I8+<(;(6H7<*R8)&F4)\Z*I*96+J6N<R6@Q0B
-MM<)GZ6Z-"7/N6$%V0TM<1RQSS*R#R+],6`GYB"U?@R7+MCYEJ(;+^\XZAT&4
-M#9/RJ&VYH6(")^_-*3YP%GHZO$!G"T:6+*,['M%[P;E.=\3_QZ[8JI%;R`-K
-M%.6I15NUEG%&',V#Z;%29D-8#B1:;ZB0V<SDN$%;4;;!$Q$;Y;$H3'*)Q3<"
-M7-N2@+6QQ;7`BE8`!W*MHJ0>];GY%?ATB6XEU"^99C:H`\#,`S.>1B854B0T
-M\Y<EH<(*C<)(T6"Q`-$6?S#K3GUV1!`M@(=E&YWA$P<8>31_NVKLR,1$S4#B
-M20FJE9?@\!)"H[I,%K1%T**6K-7&MNA&I+78/J`Q]E(DV,ARQ+8:18@E/\*S
-MPNX4K@<I43#C!'U%XN!H,T=7;95;6B'<LF!HFR0BSE]IF;?>HC\41CZ"N$U,
-MAK@=7.9HP.$GV/PY9MP65>3E-NVD&P%E4/I,$UP$:!QG-K1,)"9ZB19)69J$
-M-7Z8WW++(H="K%*P005_-+%$CQ-,<HEH"I[U&"O;8A'PG&S/SCA!MS-LK:\L
-M^H$Z>1%)$$NXD9G)SN0'L[D'!6Q9P@9QPT6VBFKHPK7W>K#',`6VLV"2;)5]
-M%/2K*FB3C44B<F`RLY<MRY'I3,%T%S&0V41];D$;0;FSM`[I:4FT+7"0_+4-
-M#[8@S:J!=#3S%.(>UIL\5IHM%TZYY/)4%L39?@49QQ;$#2`M$I1:^(8A[0A1
-MB)2342A?95D^DJV^^4B%[!5Y2<<6J>;S"2J.'6;R'90"2^IVD;MC^2_?ME1$
-M7(26:B9DB_*SI%1AL79`'Q-10%,ON99%3VR;$30;\A!*HWQB(@L,"0B\K;(3
-MM042*=)`9J%;,"+(T7:AME!)LQEMS9B`3-ZU6&:YH"4%(]G;1AD!4+,LL&D0
-MBGD6^[5PH#T9"0]@`IY54+0<A+Z`P99"1MOW$C%UT=*]NC<!BBS)9Z17>$PA
-M#6OKXMA41UW'/'KY(1X;[XGS`B8OL,(<+!,96&^;]O?.(Y+P;3-$,@Y#'!G'
-M*D,.G<Q>401<+-;'"N-M2ABF*9"2;:E;I,((IW&6;>.0):G)0-H2.D-.+&(F
-MV[65\6\M7=4,B4!:B+(TW3*[CM1@@HT<VU.TC<RS<<[V(5F^DW$ED7FRI[/P
-M)H';4S1LGM%2Z3!`<R0);#V9L`!S1GR6MOQD_@8>D2WT$K%8PMJKN:+5!G:_
-M8&_QAPAG:*!9*EA7/7-Y@;1A]WIF*1QXQ:"P,0DC=@O(^EHR!PVPU5TM<EH\
-MC8X$G-S(3E?A)3LPEH$2?K_E*?G"X2;:_A./[VWI'07L62H7Q-I1RD12C!2Z
-M6ZXP(<M$0$:T'J1PC:$SKKCXS-BAX-\76L-<]YI(BT4]:NT):E'-%FH1G;4U
-M8@U#N`@\QRTV;K#$+D)T6C'RA(-MNQ;A8#0+&FVBE/ZQ#`[1.Y$M:I61GX4V
-M!"RL9V*_7,(GR(B?C%`O2T/4YWQ;)A6E#=@.F$:Z:1;>=HW0,TO("Y7D)-CR
-MZN)BRRMN&UNQ;4&CL*9M&3;(S].QB`/4<AVLN;.%VHP^$&;:`L3!QH1NL91M
-M"62Y5*SXLKO4MB<'`A=VQ9&'9%ERDB.D56QH%FB@`F@<^9=`YCE89!8L><FD
-MLA8@:F+75E+@9<;5^#85]H?8AKJ"@U'DT13QN4)/BY9LT<W4R&-6/!&-)R7G
-M!7U3J!:L$X-B%@4NCV?J+=UFN2U+IV.4(N)O`"#(3$Q=PAX8A8AC+<?5-L9;
-M,I=-4[9LB&_#BHUMKDU,*DM!;/12X[;L3V*<ARD^=I:U[5J*P_8?6:[*(G5[
-MCP0D@H^A[M,D)>Y8S/6L+[K>=JRUC8UTT[;9VYJG;04(BE78.F\>AGJG/D53
-MU$+"LCF='9DB-H_"-J8!MFAHJ5/EC#RZD0A82>^((D)CP$+$X[2OQ#9!8'S8
-MBT62))KU4W1,:LNB8TOR=+LOJF,U+^:$MG<%TX-_Y4%A:NM:&:%9=I.=W#A>
-MT1A$HN&E%5O6B0LE50A1A$MP"G",*PFJ-)UX8^C?9%E)<UNL@ZPLE"(D!=K-
-MO+"9D%#.V`I;&*"+EE,0E49U/>$P:RF][8IA_8-5<=*1%GZ:$\XV3W+4MK_"
-M]!<)1M2/I0Q+?M@"',99GE%N(2ST:3E\<:,7ER%;L^&-\<WYL->\;`,6H2N)
-MSY9X,`\)@&FFQ$%M<0&4V>YS3U@2L!$M*<9NXL#>FX0.)$C-MA<49%U$FI:9
-ML<0!6W@*`U**TZ6VI-[V#6M.6^!NV4H;#%O#>.$@6X!F6HO<21`(.K8^"A-%
-M/**D&<,JL]8;;$,(KXP5,D[!7&=10M1?>]E+?I%+S4&V5P3(_;%!1SUN&V5L
-MW+9DZ^B:Y9NDXZ2EB9J88UO3(M)R]D*=[>EM\K7E+MPTND+(8*Z3GF.AK=:.
-MM0.Y;QE?>0@!D`1;;K,7#7E["J>RA;21%PUY]<LPPKA--?%GQ!QMZ;*'B"PW
-MP,J]O5%HKP9JP99=N;9BG4@[V99VSP*K;C$B;/ABUP54Q?.#+7@9T!Q!9Y;X
-M;,81N&TWMGTA;%7%-$3;>FCK<K8U`>_(-L@'WN0D@K=F9,BSV2F+HG6+A3OD
-M38HHQS$Y60(V2QL-:H$0T';D>U;&;)N`O?_UY">?/OGII_\R_<Q(_2F7\:8W
-M?_KM=]_]Y[>7__[7R]MW__'7R[M_O?ST#W_ZY@]__J]O?JO;+B[_#PQUTQ:@
-#^0``
-`
-end
diff --git a/usr.sbin/pcvt/demo/playvt.c b/usr.sbin/pcvt/demo/playvt.c
deleted file mode 100644
index 17eeca9..0000000
--- a/usr.sbin/pcvt/demo/playvt.c
+++ /dev/null
@@ -1,113 +0,0 @@
-/*
- * Copyright (c) 1995 Hellmuth Michaelis
- *
- * 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
- * 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 AUTHOR ``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 AUTHOR 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.
- *
- */
-
-#ifndef lint
-#if 0
-static char *id =
- "@(#)playvt.c, 1.00, Last Edit-Date: [Sun Jan 1 18:32:22 1995]";
-#endif
-static const char rcsid[] =
- "$FreeBSD$";
-#endif /* not lint */
-
-/*---------------------------------------------------------------------------*
- *
- * history:
- *
- * -hm want to see my xmas greeting ... :-)
- *
- *---------------------------------------------------------------------------*/
-
-#include <stdio.h>
-#include <unistd.h>
-
-main(argc,argv)
-int argc;
-char *argv[];
-{
- int c;
- FILE *fp = stdin;
- volatile int i;
- int delay = 0;
- int fflag = -1;
- char *filename;
-
- while( (c = getopt(argc, argv, "d:f:")) != -1)
- {
- switch(c)
- {
- case 'd':
- delay = atoi(optarg);
- break;
-
- case 'f':
- filename = optarg;
- fflag = 1;
- break;
-
- case '?':
- default:
- usage();
- break;
- }
- }
-
- if(fflag == 1)
- {
- if((fp = fopen(filename, "r")) == NULL)
- {
- char buffer[80];
- strcpy(buffer,"ERROR opening file ");
- strcat(buffer,filename);
- perror(buffer);
- exit(1);
- }
- }
-
- while((c = getc(fp)) != EOF)
- {
- putchar(c);
- for(i = delay; i > 0; i--)
- ;
- }
-}
-
-
-usage()
-{
- fprintf(stderr,"\nplayvt - play a VT animation with programmable delay\n");
- fprintf(stderr,"usage: playvt -f [filename] -d [delay]\n");
- fprintf(stderr," -f <filename> file containing the animation\n");
- fprintf(stderr," -d <delay> delay between characters\n");
- exit(1);
-}
-
diff --git a/usr.sbin/pcvt/demo/sgr.vt.gz.uu b/usr.sbin/pcvt/demo/sgr.vt.gz.uu
deleted file mode 100644
index b2f0eef..0000000
--- a/usr.sbin/pcvt/demo/sgr.vt.gz.uu
+++ /dev/null
@@ -1,12 +0,0 @@
-# $FreeBSD$
-begin 644 sgr.vt.gz
-M'XL("):V^BX"`W-G<BYV=`"%44U/@T`0/2]_H9<Y:AH;MMT5#?&`L*D8^Q&H
-MIYYJNU0BA0:HO]]AV18L&"=D=LE[,^\]&*Q-VXP&ZU=CL#8/)!1OPEW!-'"6
-M+[X+@9A[_LI?S,$3L\4\7`6.>KOQA!M.`W@"$;JP+&Q\1B/L<+@U#"**[>8H
-M"0ED<4K*.-W#/M\</^,MY#+=Q66<I0:Y4T7TV5NU)Y3`0UV)DR3@E&4>?YQ*
-M64`610V'(H<BAP(\9\FN`1@"#($QP'NZDWD2I[)!.:(<T0F.(?*%=AO00M!"
-MD`$$\EOF16N0VM7BJA->2PY[UE.;*Q9*W&M65X;:EB*AE*5)'3FF%E6=/+2"
-M]&QC:EO5R6.;V5G)%;'JA)J7],.^I#J%DJ?T*FUO(J8S*1]T?#W2(\+U1&UH
-F\OMC=0<L[<K2KMCY%_UKC%^LU5+\KSQGT6K:P/H!L`MLDRX#``#2
-`
-end
diff --git a/usr.sbin/pcvt/demo/twzone.vt.gz.uu b/usr.sbin/pcvt/demo/twzone.vt.gz.uu
deleted file mode 100644
index df05d50..0000000
--- a/usr.sbin/pcvt/demo/twzone.vt.gz.uu
+++ /dev/null
@@ -1,350 +0,0 @@
-begin 644 twzone.vt.gz
-M'XL("`PIFB8"`W1W>F]N92YV=`#M?5MS'<>1YN-&G-@`?H!>VK$7CV-WI*Y[
-MMV%Z!Y8@'U@2Y1$XJ_!X7R2*MD00D"%1XO'^^NW.S"_KTET@'V;?K`@%#[JK
-MJ[*R\EY96?_Y\-X__>Z]7XV']_YLS(5/Q^&]/UMS8?WZ(UP8M_YKPH4-]&.Z
-MX`?V(DS<@AJZBS`>AZ6/Z<+2^Z4':FCMA9_IB;\(^-30-V:^,./Z8[YPHW0>
-M(_6R_+)1&GL>>)2.XT6DQOXB"62.81[I8^[64B_+0(#52I,`Z!B69:*&H$L"
-M0I)I+="B$WLQR:N8Y)6=I3N>FKN(CO^=91K>\[PL?3G>K?W\84'RV?+_?QK^
-M8_\[_$?W]P\`_P'@/P#\!X#_GP%<1?A\7,3EW=4J(DE.Q_GX0#\6D?M`+29J
-M\86V"%%:+`*<6P1J\4Q;I"`M'/J(U.*8^\`H(4F+U,!AC;2PZ&/1!FN3&VWB
-M+9J@$V.HR77N9<(X$YIX:G*I39P#L&B1FDX6;2?CS&C"./E8FQ@T"=)B@;J>
-ML0?6G'82FTX<@%T4KS296\RB24*31<?7T"ZZF)MH"Y[Q9QDI7EHL.E*:\#B?
-MY_7!"EJ=4&JPGS!E9]%D:D`Q6&5GT"0TRYP`K=%>>)D_RK``W(A>'"/W:4:N
-M$BTZB4T+"UHQC)9U:(-?7G\EI\]&_`KY[:S/K+;3E_@1)_PR07]ILZ#]6ATK
-MZ5NOWT9]ZW(O>0R=A<_M\K/<+O_2,4R&+V-`Q]`I)IVB_HCZR^11M=_(?:P(
-M7QE^78`5BR=A[RNV;O%@7A_,^>]P?+;^HW]/QR_(.-0'"X$LQ&=2\<0<%UJS
-MKGCBCY=DJ.8GT_%CM@?Q9.',(QO%VB:M_9@"F(5(/F;K4I_,*WRF`'"AJ(]`
-M*?>@_Q6>HLE\_'RU2?7!0K@+2<:B15P?%'-:&&1%5/'-PJV?D9&=G[AUG/)!
-M6E&C<S0RP#DOQ+>$HP66#P31KPDF_)V.+]BI\/)@I@=FY8H/9"E^H.&2_+VL
-MQ(_K/!=2_@`+\1U-*^*!/W[%ZV#Q)*U-R"S_``OS%UH&I[W$]<D"O--NYA76
-M!>F+9/P`B_<M$<'"%!\`I?>T5`Y#+2A\02ATF.*"GQ\)R_AHP>!W1&W:KS_>
-M$3DZ/(AKMPM-.'UBC]^L)!V`EF6YOX/W\P'6^WLB6H<VL11WQ.CO$[*G]5^W
-M,M3[3&?\@B!ZGY"P"'AN:B=YM7Y<:KE!A)M;L?P^+3)_M/Q8]-'[!#Y_;4D!
-MOD^PQ4G&M%&&6K#[?F$+0&C&=1G7I@+FBG4&,\BW*Q.M_R9,+/'?;I5/[Q?&
-M`Q3+:CMPCX`/'7I`)6-%0#ZNB.>VBT4B"!@K%>%H!M26$>"HZ3J>C&,RYGGZ
-MAEQ5QI4#7EDW_4YZ32M!O@\?64#A[A9N`E8C'HR"WH257+CD_<*R^9/0@%MI
-MC7`@*^+0";G&[Q/58*V<E1\&O4;%0:R((`BT"Y#XF!'HI=?5^<<BR;J"<%*!
-MV=J4`RCK#RP8?H!0A29`<RNPDR`]`VNK;I-,;`9('@0["4'(,!X+""2MI`V\
-MUI;<2MG49`(/34!L7(4$@Z9<X"(H&908M%]7FFY!\+>.3!^'5972O[+41@:,
-MJ\H4GE6&1*=BU6"YIE5X,@#<VR3_6@L,3\")EU<K3XP\<@#'BIGY(7<;\XQY
-M95>R`.\JR^GJ6^T?C;V":RKS=5P-3UHP:2H@1="'DQ5=&4QH2E?!`U@QK+^$
-M,$B"1_XBK!:E\($NEX=4P')EAH:$$5O\J&3@519YACD!!>!:D#UWMF`"7*QX
-M%</[6KDK"L%&95HAAJ3<-?(Z!L@B@P6UNEJ^M*'76)A0.__K!<M61DE@W2@T
-MD;*HT.G7]G]`BP1=,%Z`%@4O8S'M")V`M4.GH:36E8Z%PH-RRRB"7G#L%<=X
-M(-(G0KK:6A5XD%^"%K0RRJITA2<F0&JQ8A"(#J*E\054\GL0)JNJ&4SDA5(C
-M6D:9_:JKI,M*OUH+]6+DQX*H!,),8.,LR70<89&@&&"1_8E2JJI3[0W:.N)-
-M%+X+&!FKJ4I;'+.G*EF4T:U@406*8EQLBB0#3D+%+O.J>(3@U5F$WZK@+,A(
-M=+VL&D1!U,5*@%75B_,59D>H"B\P6BL(!62K72<\DK0%-!"HU=7:9<*B./EV
-MU87@"LA'-3,"NE4BQ'(Y5Q%LPA*K%@'1*Q\[\/P(VR$*I<1L$;EZO4*6QTY5
-M'*3=)%RF3*UH\I`8BMI8:4,+V6DOP.1J1X%5$\P:KV]&,1D4V%#%#@)W%K`&
-M7E"APD7E(6Q1`WLG0KBR?QB.OV/@H#:<=)0@I=0\<BIS8C:`!S*G,;4$ZR&I
-M)H-N`7\ZJ+9(#I9JFQG*.G<BO!9T<J$P/#]BF:J$I30!RQ=<$"#,5*E,JS=H
-M0I;,(D7`H!Z]`2LF*^1Y]1-#EMAL&\R0D!8T,T+PI3QN.OZ)[0FP5`#2)[4`
-M0&#:QL=L9EW2\@&U`4,ZR!7U53PZSE\[\K9=]C:BF.B*;B5ES"T;#'9UNJ,T
-MQ:).JGR41!+X+]IL'M-VD*(VP:8`>B90?\`395%#P8C53(4245$6P>!J^4,,
-M9F,W';_D-Q!N3F1:4.,%+)C='I\M#PHB)&BZ*.A1?C;Z1EEMS.;@ASQ)C*3V
-M61+<J1@5T4N"%B8J[^Y9]4?$H(:!IK:_*KM06&%']AE!_T;L(2%93!7&C;49
-MWXNUR1]#WGE11VH?`9/JR[C"_KEF)QB.':\T)"^LVTDT"JM46#FR/:H\JT:L
-MR*RDLP'/JONQ\.H-P2:<*&P!=P$^[DK/8K3[;+(\)32JO:.R**G]+IU@^=0[
-M<08;G["50)K*EU8-3[5P?%;K7[*X55,@\DP]L*2^(=2\S>;+)\Q*F.&$3HR@
-M7`,%22A&)>=BI3S%QK"(7=AE(%6U+=5SR(M,HE/%U`0CRZF-+^QH@%-_8;/-
-M07O5F<T5Z[`!G,Q=G:9L73J2V7,.T!C1@)/:&&J.H#N5!$[DEX?_%J`V`H2/
-M4UM<M%`H[(2GO`#B#'C(:+62H=NLNDF%-7#)8@IM#)2:A2<G'K:'U9'I,U#$
-M,5O=RNX60D]M9XE8J-$T4]@,S+8J4UCN7K71WYGP5,>IW+>J*+]G`:I8PNJJ
-MR(AKC,^!85UV<[63A2:_886H/A-B0,K#X?@UJW.1A=F*81DQ9P\L@=9=H1B_
-M8AH$_$J#8]9^WS(EJQ,&8[G0-:^)=<"T"7C)NLQ2&#0@(*`AB1&JTL1,S`$Z
-M/;N(X_$Y<Y@&/<#L8Q;?WY)F!0*<<&<JM-H;0AD(5LT,'@8ZT@"XPN\Q@@4#
-M9:P&9UZM>0VFIAP#4#M2NC$N,X"&X91/%P[XD<#58*G&4:>L*+[CP2';H0E=
-M(>%N264)BZA9D<78O&)A-6>$*354E[&=B`5"X7:I<66S//N>T0Q=:!"T*!U;
-M[B>II(>&$W]J74C8V-I/(7M>LUC2P*_&YVR6;@Q&1'@!-@'W8JUX4$":8=\$
-M(N8K'@"KH1'5[)0P+K)=&,$BV24,1_97+*)`2EACX2]0WD\A6CEMR>;EG427
-MYS">.`DZ4D3>4>9^RBGR678-+(H+]J4<HE2P/"="Z3<F(/-IJBS/U34HHI]L
-M6!6!,'Y@BGC;P&9:8XVYBX*+>:0<K)6\J<Q$D\S`^,P7`U'TF+E`)EE;068N
-MC(0D;5QC=!2XX]RP.1OZ=I(YJ?4N&66^B'\!P[YPW0F^K/4\4LH*-WP@FK29
-MJ#@7K*!$SODJ-1@GQO$WJ]G!C=7H5#C7A8(,M1Z_!#L.2V\X^LOM%5A9B96E
-M(@82]6!I%W_]E;2/"0.L9B1_.@&C)H*F[(BI&B<48[$V9LZSED96;4-KP3(F
-M02&;I`,8=!)TZ@Y3#YC3JFLG/(,.%,",SZ0GB+7J/ABB6/DEJ#)&/U7]OW(*
-MFNF<!%B+YHA1$\-]1FLM?\YL!RY4?+.V=V+]B825KB%Q$4C!_I"!`H+8U;]E
-M]P9\4[A`#BW$B'?0SA;V,38[)-XY'6\(QT;\+2@*B1\;D;16#"=+OH#':T%^
-M]IZ<>$+XVXJWX<2L<F*.PL447DN*`NPVJ0GEQ*DS,B.!>^G@DCJ.F>]NF&RX
-M'<(XB"KB7P=$.-&:0N2ZE0,4&MDK-!)_-9@"5+X\=R!ZB_`:(JE&HI56D`+4
-M6VRG"DX7X_=`(Z)G(^%K^#KH%XOI,)+@1$2W,;`K1XFBR=\D]Z]H7<3[%WIU
-MR'.`0!C587"(%,DT$7:R<+)%T?+>OHU95]P0"0-HH`_8PAZMS-U2!@3H(`KV
-MX>.0@/TC+9NPA)`G-N2L.,G"S`B!K`KXFG8*9?I$+5;6#AD(I/R>$N8A/P5_
-M%UA!D+]$=+`PX!;=.C20548`$S@E/@434)UK,8!TFN'XC-$/AA%)881T8&TX
-M`0`36=#U(7]7Z+X;`D36"98QUD^(3#D8`ZD,=`#58O)@22%G`R2&X_\6-7Y-
-M'AKWD#TE!/V,]BBSD<@Q8`!E81$P,,2A@2&)D1%\=;(LZ+:P5Y]1!\+"L`H-
-MY\!D@8K`.`">P`4J-<!ZD&."/6S*6,@]B2A,6:-S9@]<-0>!+/0-&8`.,%=!
-M0D!F`E`$B:^H``6*:P0Z\U@$R$\KDM;(O^!+Z""5$!R8,K!DC&)7!`*9`*Q-
-MD6>_;CR-GV1K=365:#/J$WUN):Y9-(4UV38-;%L5+9V8K_(H&\ZQZG`6ZZEX
-MQ/;VI,]*PS9M1F;;VTS5B]+0M2548NJ6C\22';<]2URW_'R4<Q+%YVSEUC.8
-MQ?XOGWFQ:S?#B(U9=<"F?H4\*Z<,RG9L4/OZ&<YP;!$R\4AEXQE>1OE0/*#R
-M$=N]53,GQSE*(!U.7%0-#8*?S=3%WG8MJ,8W3<V\]^W-'R\_O$(+LNA^A3S%
-M_XET.0=J?PVP?LL_'#4FL_%#I`O^^P$[(;]`UN^O]=$K]/1_\-V?T>@%AOT.
-M@WR$03Y`WQG(OP&VVP->6O3T=[Q[C6%_C;[O\/TK#/('`/(;S2W]5XP;-;7T
-M&=[]6K,BT?=/&/82/?T[!GF.0?YR0)>_`"2_48-[1`=O\.X%AOT"P_Y"(3GB
-M,X//;M'HO^'[;S35]"]H]#<T^A=\;]'COVKKO^*=:T`:*:I*W_]WA=OCT7]%
-MH]_CL[^BQV^U=4"CJW*=ZPGDOB,:O<2[7Z'U2=?IG_'H%3Y+^.SV@'?_%^\F
-M?/8_T.B5]C2@T=P0BCU^I]BYWRR8(O67VM,3M/Z^1"$OV*%$3[D&[O@W??=-
-MLP8YP=D>?\:C'W0-%+H?&T3;X]?Z[C4>_:3X/6S83M\E_>[G#<"3?O=R@[(W
-M6XJ^P[N3]OGW%ATN+Y'31U]M6WV];?6\:L48/53-FF=-NVE-#K6LBQ/U1C+\
-MN1B:5A*>GW.+>7U`Z=U6;#A+ALHB1*]8W(:U*05)K7@03Q#!Y-UXSTUIR^0)
-M8J3V@)V1Y^(@7(EL?B(&_7-DC4IWB8`FK_Z*80O')^P]A+4->1&4P.J<S"92
-M)_/Z[179:XDZHZB=%4/\3D7I$S:$9H'$RA:\C\`%NB=V#CDH&+@7LO]X-H0U
-MSBJ[$QOU"5*^N0]B&G)T.'-E0?3=05P>SCSRA`J.EUR)37^%_(HG2(BW\&JO
-M:.!E00^0OW?86[G#+NYSR>*VW"_!X%9TW5'_LZ!KF8^E`,?R1++59@R=CG>(
-M`UTAQ^HYSY4^YVVC)SRT86C""N@=#D(*"3C!#!&`I7,ZSY$4\80&IT6SE,M\
-M=T#^K14'UF)GX0IFP!713>",?<>DMG;/+9?N[4%L0\M3X23V:9W3$^BUYP03
-M.J/)4OCB"0*+S]E3<#,>>5F"94(66057*C">77]V]>G5S8V:SI<W*G:OGWY\
-M_?3ZV9_`V)=HM;BM3S\:#B#']0^L.[7AM:.?1(7%((P3^8(8G'LEA!?MB+XQ
-MRHJE#`RO('U&_%Z`2>M?3HE6BYJ2S."QB%-*F&B+$7]K#)"!)/(K&I,@R4,2
-MN>8_B<?KKD/QFL223)Y6!*^4"DO@22YP:Y(90*C,B)BS:$]"BIN3H"R!=*F>
-M(!$Z8X,$5EZ0P(^)J'@QB;L4:*>K1Q*TPHQ+6#+F%ZR1E:&(Q]%IJ`B,!$(Y
-M^3$3(Y$L#TI"!F1!+,+/O>*'>4VP1KQ9+P?6E06GHB"5P)"T*_'%BD!INV8;
-MDJ+U.@2=NGQ%HEWHT$V9R8@D$2&ZQ,3'E@RF3+F^@-\5\Q0<D^3663GIGM4@
-M8`)Z6"9>"LPICS$7R""Q>RFL&US)AR2[2S218JD;9#$0L_PH68+EFR!I6;GB
-M#<G3_#>)U8)A2/S7"Q%,#7FU+JS7*VD1QKI_P1%K#?UI*S8=%2$LD<$N($6V
-M"03OE*S`Q_%ASX91_$TO'F*`ESR)QZN!C)FBX"N<CN,&R\@WLO4P@$Y5J`KQ
-M!(E$8`-MK0,`BVB0\TW,,;.X]Q:;?D%"("%*BX0M(<?5#(),9]V),-@"0RI-
-ME,U$=I2C],]"_D:K%Y`\9R#731>G$0*!`:4)!$U6P)VP/S6B%V(992/BK(#(
-MC'P\"BZ=S)$3*08DC3_EL%%"+P[3EWTO&1&(LK*&O+<YX%3C@'VP0:)3`_(E
-M!N1VLMJ097:Z,"CWL*#[V4$X$P*S+,O`A,UKEX"5>/R4%V26]4Y'/HHLTP"2
-MC>"6M,6E''@;D/\`A<)KNDZ<`)%/';RP!+Q93%W)-.C$O$9GA%IL\3EH@2<]
-MR]K-F0B#QIK`3M`C*(;!RV*5@Q*P,0D-&BR5+K-1DHOX*@*INF8!A(]B&GP6
-M9<!IGP%;>])11!!/&=C+VLN_'@5#@NQ\>P`LY#*AB7#8)/0Y`6$C(/$";<Q2
-M`;RHJX0E#[)ABU"5P[A@E!&L/M)Z"$,GP.9!:]BXEE<.2S`*PB>,S$+L('IU
-M$!&*HYB#G$0=1!1?2I[4`"'*\PK"02)L1LB"<1W_3\0.4IQ$"`S,["%3$VJV
-M<-K^(-GZ`CL60^045LD5-()(H2S/++!X&8GV,SY"YJ3J!XT&2G=&)B2P)*`M
-MRJL$R@N%<#82)$Y"_BJ#K(`2-&D`BF0$"%K`1G,R%',2#G4S9/^,MLA_"!Q8
-MCP6O(]RKA(!B-EZH92Q*X(0CC&$U(AEEVAW4V00$!:4Y!$>#%*2!TG*HS9.9
-M7J.X3E.1Q2>P`BY6(JA2">!951`)V1DF)[B(J$,RBG(Z`VP1PK69OR'@=-4B
-MECKC!0(ZRQ19-X^]B`"QXU$]"+(%:EQ+`:$XD0<+8[:0!U'(>5W0Q:HZR![U
-M()X(]B0&G)`44E))/6N&AV;UB%\G#)2*'Y")7M$Z@_\@B+'HS@EZG===D`%'
-M5`9D]LOLE?%'S<09X'->ZXG^&S8RH"(C$*2EBG2-Q1I0^2S+Q#DG:M.IJ0;S
-M7'V=`0;_(/N+/(,9O40H8VSZP(A)N3C3QSS'62@'8MU-8KMDX$2XN4GW.X0%
-M\$((WREYS^``9%X+4Q>4JFN&M"2U0B:99QQ%P'CL)7G*$IFQ0E:C4@&2$WL_
-MJJUF2'\(0:_:1"U4H`^@I5P.BZ)4L!:TK!9D'OOIES1W_8AR@5V!ZI%W>0.F
-M$V#I94*#%H:)@:0KV`HC$.MAS,$PFK`62OI)9H.$M074I_"O!N01#0=X[X,<
-M]QOD6/P`/U_ZU>51LWK,65@@6H';04A.NGDYB&\_X!C!@+,E3)BR/F/I2`UB
-M6J;-D[AY$HHG!QRQ+QN)1WJCK]WFM2M?V\UK6[XVF]>F?#UN7I.7IGZ".GOR
-M0>&-R@?LN@TH(;/Y8-I\,!4?3-L/TN:#5'Q01%T&I&"W[6/1/E;M)[R4L<+F
-MVU!\&]IO0_GM9MDX,C&@^DCS;;FF;K.F'&L94/BG^;9<<+=9<`X&#:AYTWR+
-MEQK^0S\;RN`PQX#".$T_)O=CJGXV).0*$G)CV\^8^QG+?NR&LFQ!679N^M&7
-MM"U=]K,A.%L0G)W:?J;<SU3ULZ%#6]"A36T_*?>3JGXV]&D+^K0M?>I+3A<K
-M^MG0JBUHU;:TJB]IW[_L9T.WMJ!;V]*MOJ2<@K*?#0W;@H9M2\/ZDG(.RGXV
-M]&P+>K8M/=M,S[:B9[NA9UO0LVWIV69ZMA4]VPT]VX*>;4O/-M.SK>C9;.C9
-M%/1L6GHVF9Y-1<]F0\^FH&?3TK/)]&PJ>C8;>C8%/9N6GDVF9U/1L]G0LRGH
-MV;3T;#(]FXJ>S8:>34'/IJ5GD^G95/1L-O1L"GHV+3V;3,^FHF>SH6=3T+-I
-MZ=ED>C85/9L-/9N"GDU+SR;3LZGHV6SHV13T;%IZ-IF>347/9D//IJ!GT]*S
-MR?1L*GK>D'-!S2TQ9UJN2'E#R04AMW2<R;BBX@T1%S3<DG"FX(J`-_1;D&]+
-MO9EX*]K=D&Y!N2WA9KJMR'9K]!5V5]-%)MF*8K=&1*%W6[6;M6XE[#:RKA!U
-MK:3+@JZBKPUY%=35$E>FK;J+MH?<0?.]?EY^W7RLW]:?XLL*\NH[^:S^BC\J
-M0-W[9.\+'61OB'[SG=;]QCMM>TTW+3<-SY`[>8]<R0=)=#Y)QO0IQ^,]2NU9
-M>4'R]$'RYT\B/Q[P`1(5'U@H/$A":M$AY=^?#B(33Z(P'LH1)RW)^2`ITS5`
-M28MZ/B`CO6X@!0:QI6#R2#-#EBL:R@L[\@O?3$6J@&ZQPD@AI2C%]^HY2+U'
-MC]E2\O.)ODAERRC8HOSNTZ'J@@N#A@P]QJ0BG%/NT3/PAFO&%=#S=&(%_4$.
-MIO"G<P.,$YP+,&DS<2G(R0<+3I(R7?1A<]],82:7]E9L1YF)H#=_PG_C@0)L
-MYOQMJI9(>R_&'9D^;5$7]`$ZN^PU7E2S-QDM*(V).64*DA*L47"[ZK8'G,L^
-M5<AW-5HL*(%+I=$P20`-#=4Y4WWJ]-.8(8S\;:P^)3OUOJ(BJ8ZJD\R$&&1T
-M9J=):&&21:$4]9.<E6AFYG:7(%X(2J3H[00JFI1BA2M&Z9-HIR995W,@GYP[
-ME8,X&60&V$GZ=B72`L"FA/F:L:2@J2U(N.8"*1L\"4=-LMB^`A=^0M,W2-LP
-MF+R4=DO1KL*KG!PXB4OW(*;P0]UWJJDRD[PL\B2B@(M;%9U/0B\*L$>QW\P+
-MSK5$5PND282#0=\A0YQ:2.?J04255A(!]^*/EZP7,V!^[%`7ZM"F/*Y0K#$-
-M`WG3ZR,*',*=TP919H1\6];A'H<-&U1U9-"LD/&R3ZAF:];.3CB(\H#S&@4&
-M9FJ!;>@.\!.`K^AUNH!\`S6.(B6)ENX1.)#Q]WOW*,9,D;ZRA34Z*^FTX?^$
-MSETQBC+ZU"Y-Z`D/1CR7#:F6A&7")`6ES2@2*F)V.76`"<+X`IFQ6;N&-*:+
-M4./2T=]<G5"0*;029'KXMQRWE;H^-0S@:S$\7<B<4#0Y]\6DXS&YF)%JYH;-
-MI%IS;$EFJBB4_0)!'9..:Z>0BE&F=A2H/.]WEVX263*A4//8R!(SBI!6,ISR
-M`H6Q7:#0&458"K)E+D".#1U`B\@H>2ZHI9W7!0*A%3NC&&8<DJN7.U?$7B;*
-M,B+8'EFG=N$9!%O(!!=;=/FRO#67FG`5$`8/BOKGH:N7(3C\/I2VD`]".:.6
-MV,[*3LP27PP=I+'@H4"T;Q$]MWC(-#EE0_Z>>2_4RC(40XYLG33XT/+C'K7C
-M,T6%L4-1(O(XIT)`:,6#<\*&&8**MW)9_F+R,`*"Z8V<K>BQ67L4?D\R8MJ9
-MJA;J;WDUM'(GP#)H!"%GB_"<:WEOICQ5VTZ5\10+NI\Z-">7,]#N\JZR'$&-
-MHSA\!HM:K+;%K04=J\#330[UP#`U_+29L9,!]T'B'9N3F+CW6IH?"K2F\#BV
-M`P<,/&\&AM*//>>%S0(+MG89!1[L'7M&38`,ZQ`ZYS8R``%*MB8J6XR'^RC@
-M!)$YU<S=@L!3JTW-9NZM<,N7#>!B!0NQ5,/$2#@@G:[D`37*U%ZD1(E:V$?7
-MKM#4R*"0-9;@QW?=2Z]74I3W-MS70#E(R%D\;P&*ZM!V5@^.3$=\4V&"!^2X
-M8.38RB"Q0`PPE;8H<_!5O6_$1@P-IB(\H.![0$%Z>+VQ0:_;:)'H,_T)RB9`
-MYUMCFHJLU?([]J1H"*WQ%,96:7G(RC8J!-MP!BAS`5-L$92$X*-M"7XC5UL6
-ML)5`*"_2X(W[AJX32$C<0&$^*H7>X,7U\))`UAVS1.X!0=CD_H""P0\XC5Q%
-M[!0O'J&Y.'>H.4+Z=A0#)V@6]Y/H%2<-P<Q-]"2O#8GFN!5*:<0:A7:-YBXL
-MOKPAI490;;&'`@(K+H(^";@C*)EVC6)GC:+ZF2%T(UJNONF($S>K.*/PD\<5
-M-YRN>X\*/0TPK;2.&VG=DK,5HRS?@Y.#B!DAH]!L2VZQ)7U*PCPAU>:$',^:
-MV1*"JW'J(4_E=J.`\M5!!18-D*?N(8M:6Q'Z`=FC#TCAU+6]KR(5OC6Z$CSG
-MABNF#8>.&[:PK0%HH<X+F1`TJB-?"]P1.F,&N#F4J>CU;7`FM<(^C8U:C&H7
-MMYQC@7#;6HUJ=V]#M%$D+2>=G7"XXP%RJ(X`IM@1+7)?TM3R-U>4;\`L[]VJ
-MP123TF](':XGY\F?JC67N?&;&INMQ9U:3S]JW")N-`.0&;;8K$UOKP;H")3%
-M:@;(*'M`7J/<>]2SSY-KP4RM,LW7+;76!H27;C$4M-JH600GYF+MD\C/+3(1
-M:DB]4$.<-E"J.@G%/5U[`E6W5'QA=`&7WC:XU!O;II*XSE%>Y/KU<,:@]N(5
-M<=Z`ZEOK).):,`^$1LA2:YLH6^9HTTBDC0^48K.X2;5-[&J;6%]$9W3WJ^MZ
-M\)&.!_&Q[Y%8^'#`:8C[&BKL-"33T\?Y7K'8ZF.K4(VB\N)&VT13[P$HRA`T
-MHH3K$S)3'ZK8;7X#][UAGJG5J"7@>M&9:7DE`'`#]=.HA1T=(U/3F"]GO#8$
-MFL249N'!QSY.#/C<H<F&Z[FZ;W&G6RV#(O2.F7KKS]9[H6Z$'?F45BE$0X%@
-M+THVPF1K>8RV18?O?B0>FWKB8`5_WK!44GS#E&YI/F)FL0F]J>`TZH[YC.>:
-MNOC('>]OI8U&2AN-U#%FC.[;>J5^-6$C(FR51CK@\..IVET-,$L5SQ'!GXY.
-M7>%49[9CTAL/L]'KCE1MUB(IMEF'C#8'DPH*/'5#0HWRE&L>#[@*Z@$WG#3+
-MJ4&ZQL(UIB"Z$?#XEJLW@:+D>D(RJ3%I0!\MXB+V9[8&[)BQ(H;QM/564M=;
-MR?<TMH+(5P2'Q(/[`Q)^!9RZYWE+0QY;M['5('0=Z[GL$P^OOWU!K%D"%S9+
-MIXK$0)&DKB(1'T*MT0FH*H!+`$[=YVAA%*6-X](3&IJQXI7<(@"+\!&*:"@;
-MKX7F:%>52J^?JC@BT[R%R<>7)<AV4MJX+!T3PB"%1ETBKK/]@'3G)LRMI%5K
-M"K5$^)J'6H0)Y"0K[G$864R%M/%5TD9%)*B(KH807M)$`[YQ@U)>-N27-/;-
-M<%G8*[9V15"Q_M20X$89--:YD:0BL_&"#%(J^,H<`52H8JHVV"3.?E]'C@,V
-M82.ZB4W^RZ@\Q-O`P]UWWWSSJN$COF*W`1D>BZJ'!/50[H`><`,-*^0-:PNM
-MAXQ;IA@[;L2FW0@A7Y$MZ\4-`J%4&_/39M;1\)\0M!T;)X8K63_`OKL_Z%W0
-MI7G`NU[#7W_X_J?[;QB!5>X62K`W`,H4<GY/O>V'F[58X2:$GC?,'4"2K?'A
-M@3;DAYG:AD3:NXSMH`(Z_&_'?,FQLF=03\$V\Y4+LTUM_B%%'F-.[7PC4A24
-M+)CJ^:1K0P2F60<^IOSUB]=O7KRXYX6HC3GD=MP+=4*$-U%?+CK]`+?S'H<!
-M&\5J-L(Y06&YV.BV/!W7$%@3<.)4>^"GE9V-3+%POPN)"7E1Y_8=<*OM`ZXZ
-MZJRQA_G.9)!4L,4VH\_H=F01T[.EEN0#:P^XB[2=9M!IUJ@-6R+GE>+C;IA=
-M1Z%."#Y:[/;X+5A;;C3*A&YLB:%68784DG8E;FR-FPR-[,?:3`(2%QDWJQ#;
-M#=^R&T"<NW$])6?4Z[4;PNYLNE-J/3Z*FX_,_NSBA9)J(_OYF%]/"=?(YXPV
-M/>K7.D==C*C0;K+'3+P(+>5;V]UD39L0D<[)M(APL6LQ;N8TMDK9;754^Y%1
-MV\CY[NJ*VM8*&'>?7O_^2/?]U=I[:G>9["8UPDQZC7K19@L6[\K8L4H&9229
-MKKIP2H8=7N4#>.U8NJR-36FF'I?QP;FV'Y4"MDM"9FSGCKCF=#%W05;ZF%KR
-M:-/9IO[>?E:\L=M$]607Q5F7=3%L-AAV[:3;S4CD3MEQ1X>T2I>+/'P%RZ?H
-M-;8,T.206DTMXI-0O0E8$)_9\*/9R.KNLFU8(;MMO4\T,]=OY,!FY3>0U6C2
-MD@?I[N9X^='G7PJ[GNOYO[,WYP@(##`&!UBG`QR[`?:*:H4!V6=P$.%FN:I4
-M$N<NJTI2\W*`#Z1%8[XZ@`]59``V=)EP\%TALEGW#LC4AY&`(@:V$(V#,)`6
-MQJY*E5`,Y>SG<U@'@RHF30]4Q3$(MPY0WAJS1`=5>:$#/!6\-0!"KK,AUY5?
-MI@Q8U#Z*:A<'"!KU:33O5LW9`4*R*HBB90UR498)55,2"I10W&.`H37`H1J@
-MF]0D'&#393-4U8F*-5[#.5>#26.NE`YDA)"5J_+[`%-B@*.@!RA4A2BK*AF'
-MHJ:(6I]Z=I,&9*>/OF!YP1^3-06(DHX?LM`&J4]%D058]+F2$+(H<NTSG-U0
-M1V`9Y8"H]3?PK0?X)FIA`W=Y8<:JH!<;&"A=-.=J[<"&5HK02FRH$V%S:8I[
-MZ%HI1J/\&B=-1%A@>3A'N:Y[Y$.=W9\CE69Y?<#MY2^0FZ3?T$5Q7-KKM>;"
-MZ%M#98`IL4*?A>.+`_)3]*&GNLN4'L+/*-E(AHX`+6*\B*YI3_#-`1MQKP'H
-MV:!SXI^T`_;B@-'TO<L_EUF?%,;EJ6Z:OL!4Y6$"/*D``SB)@@!IR#!%F0WN
-M37^#6>49FBPB>(X)0\=B%6+&6M(930`C%4*`OR59=7\H2[Y,&&`"="R5#F7E
-MM)0%N(";M!Y+RD7S"@CX/C12,E\#IA>UM%R+3J/+%X#D_M!(KX`PGT,C*Y\M
-M<D*[UL%D_$4G?0C^>0KVO`)3?PA`;J`4KB`JKP]@^-_BQ]G#;W5+ZK?GBR%R
-M@*0]J_Y.S=]3\_=<_QW'YF_3_&V;OUWSMV_^#LW?#7RQ@2\V\,4&OM3`EQKX
-M4@-?:N!+#7RI@2_%S=^_7?[XC;8^IS_/'FX.6BU0#NMIE8E!A]+&_W8HBI^-
-MHH38D%$X<^,_ZDU;@YQ6U`S^'&$LFE]IA&[(-2$I0CDHELKF7QQD-P'E!W(A
-M/L5RU?Y&0R$/R$=".9`L_NLOGAUR%4V/$H<6]3QYI9LOKC6=H:S@Q^I-J:7]
-MAFM/:KW-(N5_4(K;?'-]D)SN(5?U"V4=OK#SS>=%'5+<3L+[%X/2_LY73P\(
-MI*IB?9"L\$%Y:.\[Y`65)>NBUJ$C5MS][""!L2'7Q\K*E#BZ]QDEPPPXO*3E
-M-U4R]+Y#M3:M#QL+2RK,_?&\5D2S`8=D!A54CWVF[":'JJ.R74B/SB_E*'%5
-M-I%EYR-#>B'E9/1L(PRR161_>'WU],.KAT=&CE7UQ*EP%98G;_O>*\MYEZMD
-M'J",WOXY^T5:MXZ">8/N!+W]>RVJ&W)MR0-4X-L^YZVWHL!B*CTW^R[8$P\K
-MP'1D!E3#XFT]!`AH+Q3`MQ#I_L-;(1AQIZ<3/X?VG`?=1'A;!U$Y*R#/*KN*
-MT]O'!X?,N1"RPN_2.RR@\_F,CB;39U_U[?!'HX<]<*`I>W!O^UP=-BL_4"^!
-M':1W0']$$4(SYHI_.2#_=@"T)NTD6B4#\`X4*)=N<16"LGP@>_]OQW\2!A)_
-MVQ<<X,9WH%\M0:DU1:W.W\[OQ$)R:Y;5TV'X?'H']!E9]C1IR81!H^UOIQZU
-M9>3SY(OPQCN,;JJRTY0\-&@(_JWRQ^F%7*A$&G-XY=W(KRX<[4OLOYWZ4&/4
-M*O5D_6C?2?X9+=$*^1?S`IAWF8&5PN8V)T+B^_$=%C#G=AD]*H]8R?P."(@8
-MU]BZTC#%HMY!@=E\TF^0<Z7X/KT+_R:G9]-R85PE@?-AN+S_9L#VZ2+<5O?U
-M;J!-AF$-6Y[AK#!J&YGCP_DFM*FE<0\:UA#8D)B<A<[06'NSV@1K()6"LHMQ
-M<J5"XOR[,ZTIKR&'/3#YB/F@Z3F[<-HRF!=*,#D'+,O6%DZJT'I=PLEUJ54:
-MGK\^PT7W5QH0V`5TG<'3@Z;K[.+3%X[,*CT+0$.IQ/P&T$F)7`"U!=\O"W!.
-M_8^*"`J+[*][T!#WFKZS!V<H*=*58'+IDB+<N0'35%#&PA-9T'_^ZDPJS`QZ
-M2?0N,@T*%TO*SAZ4OK`;5J`*9%JM",UDOO%%_(8ZRR`G4V>VBRF<U*'.E+DH
-M[L,92_EB*CA+VW?=$FC@S)H5<-(62D;_^8LS.14$..T^G!Y4+=DY>W!.A4.V
-M6B893E=::-.6B6)9QN=XT)1C78#S'\_DR-F@X;<.G-)&$G=VN:@4V'/#[<87
-MENP.$]7DR6E?>0'`106@8X?;%[K^]*!I._OTF0/Z4\5$Y.1_H1;[%DPW5V!2
-MSFS&__G79UIN_H!\]#TH>=]`ML#6W)]=X4DEKS_';F<!)U\RJH[)9ME'O0)!
-MX2S]"").2^7LGQZ0?=[AHJ"KGDP/F]G.B@TVUQO8U`/;`;-A=EMTM:ZOB/BU
-MZ.P!6>A[<'HPGZ07[3-1%IVA1J9-A9^Y@9)2DVMDIK'`_OF;,YSLQJ+'+@\E
-M!=-UP2RV&RO)F?6E]WO(K)=\@J!FY.N:F^-G!V2<[T+)5VXH,K=`/B`A%!15
-MPCD5/IO?JB&3K6)51"86Z!?!B0KNE'#>0:9)!6GN@AD+G6@;>13F(C2RM3X:
-M*ZFT#U;5>'^F5_!H9OH>F)24/2B?[R/3%G:V:3G(%1&@K1J*H0$SFX6KF<%:
-MSILB87W?]/#9])B[2Q[+G4O\QQM_%=1EV&JKE-+&`O7EQF-DMJ>TL4'SVCN4
-M6EA,TS[87KV@N2:!4`;'=C52*YNR!EM-XF_/Y"6`'+MT&@L%W\.MUQQSURI.
-M)=0P[K+]U`+J"^P3/_&I#VS0SQU*%5IB@ZE'J4;AW(BG'%8U.Y1:0\F%TC+Z
-MB5)YIUJ2$&W/.XIC87_N@SFJR3Y?M%Z'(B?8/7[RC?FY%JA7[)__3132?/SX
-M@%SW?8649>@:L=\73DZ!K/1FB9K@]HR0C00M,`\'SJ@-8F,'1MD=8+]H%\8)
-M\UA@3"TB,Y!^Q\T,XT:W3P7JB<F-ORCS1CKK'0HOL[O>2I93`Z;+6G]''7FX
-M"84A[U*!_7-6R@4V?0=.:PJOO2.+,IASXVX4R(F[EM*&R[-]O.#__/LSLGWM
-M\:,#,M\[7)[-^+&[Z),691P;)S-[C2'MH=.UV"S$PK+"?SF3XI7`INV`&=3+
-M#'-WU46WKG"V[EL.'89=ORB7SB!`RS2O=8MF.$-=)`#:]8N<(C1T=!!7ULOU
-M36MSR1>;6#L+'UNYF2V"=1?J[@S'>P#HV(LNJ)\9>FHH*)W/37@A%CL1<=P1
-MG,FU_MNB)#_.VVQ?G96W`7**_RY"U?'C(R-=\S,OO:\]XHR?:/;"(&%C?-AR
-M&_'^#`>4`>C4M>95$X6.)K)T#=,S`;1513DX&'>\HU5[?]Y(T&JC])?$\HLZ
-M/^JAA(YSE.'LZ")#%VEH'=9JX3.!QJTRLFI<%H*I7``),`#K9.UW/&*CJ;'!
-M]2WE3*"I8:1BBWP#)EVS]<=ZW;/;%ZV:R@IFZ"#39NJT/<7N,Y!3#60.%\2P
-M$_URKC4_/+MKO('_ES-4%1KTI$:'-KUJH]#51D9UNYD;7+HBLV$+9J.+7)G5
-MX-GD3(60-_NZR&ITF#,6NB:GFDEV;"*S66BO<%;_L5T5]W24S:6M4-NNR,GX
-MZ@QGX@<]@-*)T^<#&7-7E6;@31UU4.3O4D*(C3>?MZ)7Z_R',Q2ZR<=;]L-A
-M=BQNN.H`:;*+U&JG;*+NQAS2)@Q:B(L$[G=9ZH\]J9\)UJ<>P3KE*^L:?>\5
-M3K>WY$C5R8QEUQ2X6$9MQ^,RU"<XDIR?DJGJLVB8>]ZH5TO`]Q37RN'_)E-H
-MMQE"*HX9[\QAWD2<0[D?(@ZI"MJN_^2*PU<=@L@"S(::(%)&M-D#TC0.5"CT
-ML9,PE-P%)V<8.P9@#M][WQ4--G-7;`E"I[!CKT1-*BYD6"KW0U9U,!<R+'87
-M7468=WWW)#-8:@W563W5><>N"JF1`SD):8V,_7BFEX[B>%8'G:DXIM8#<U(K
-MU39ZR^J5?7OFM-4@2[8"\I;%&FC\Z0REMA&^[XBKQ;7^7$_&]<15!K/16\I!
-M82]89ESC-V<+8`W9WIW)<5)$=+H[2\4YO)[9MQ#M+R6>,S:&=$;E[@;8O`GG
-MS.5&R-T9+M04>[]'F#DD[CK:B4_'H"2K:?U[M;##GH*RF_B8*Y.-$(9(V?#K
-MFBHJ-EU70WE=66=K=-H,IM]U2,>-AK+E7@C%(4SIX!\?-H!R_?!\HV'/*W'*
-MS*Y64.LB?GG02XFW8(8-.N-8;H4,9RC?K-2Y!Z;1E#$^4MD3G%G7.-]N?&8F
-MVE5#QK0.5/9C5IY=(Q&NP*??!306^YZN%\<S!1&Z=M-&H32[`JFQ44V=#<BF
-M="@"^&$?GV.QW^U\5W(&U3:N<9^BBO[]\&VPC8"OLA[/92/0V.+0[CZ<(1-H
-MWWW*BLC5BBC[S?->.)QN1/Y];9#Z<D-$K(^8LE[?9Z.43_KU%-%*4%<"Y51C
-M,\.XKX8V08CY>)FW0[X[DTJN:B+MXM+":N=3N;TUSY+'S74((G/7SJ:--6WR
-M@*^+T+!2S\FC='Y\G]<+.,=NE#D#,S8B/JJXVMD#\^UF-P>7'O(6"/;D0V'=
-M[P(:"NO>SCU`8]Y:,(V,5Z/3[\9PW48DY3-CJ]=S>R:WB!2U`'9E4LA@=O>3
-M4L:GK;>]"@[:"4'D;;%"M9=;4!QZLD6.@]G71:;TZFQ'&]D*'E<+SU"_V4#J
-MVV2A(CHZ2K#99E?#N`X^D\I.^T@HK\):*3IK3&]WOAI\ZFWHO!'RYDP*8^9@
-M24<D:4C']G>4YHH$\ZJ/&DJ>]W(QO";!9RA'#8Q:3KRRY7:-Z6HBHX:2]3U#
-M*4P52U<[(7,E"#9;7XT>*G8D9%O>F$(/F:XBRHK=]K>5?"4A2_LC[]?N)`K%
-MUB%B=?>0-T*^.9,R)T,NU;(#IX<!RP4#.B+)SI6^J?Q+-4!V$J_61")SO*ED
-M?+D/=?[7,RG7EX/,'1&O$MZ:OC57J^[2[+0<'9[WLMBF-GPSE;LU$;D89B[+
-M\NSB,D?";4</I6)K(8R-<YDJXVFCU5V;V1)P-&PL$KS7X`V*/LOYI+G8%-E%
-M;]1;6FB?O2>A@JF,S<I]=Y6!NH5];B1I(0Y<L;FT+YFLLI*9^JL_5P9[H9#"
-M6%GY&U:J0,L9=SDBRE6L=D!33X0+6?0TN@)6YZI:E2/S;NZO;6-=0<,LI6=A
-M]]5.*JP-$WMJ/.,FU!Y0Q$8$G,VMWMFDK8FFFHK]+>M[')T%CPE]DDN5]UVR
-M=#Q^4KCL&\&SL/QE;;4YO8''IV*[?0^\N0C)FW[BPE2%,"J3,B_LKKN3TB90
-MI-@LMH5C1]#D6('I.3ETUJR(`E4J,%:1HXW=TR0M1-TZ,T42E4T=:\=FX+H:
-MQ=6!M&)=%_GQ61%\V[#$M(ECZ)-LX]BI`YO/[&KZX0M7Q2*K9'U313`;Z#)7
-M9O`FO7LS)QYUI%PLBLYT#(:IBN96\8I8Q8!;%;<)IT'LYC1.+DJZ3V]SKG[3
-MW9^J(N*E92C*!6'TC=^R#:%-^>K-G/S6DR-*;E/7:LW1A]CL[.3<";N[7[J>
-M^*R5[HPBUF4ZX:YR<"LQ7^.&[]YF3K5C4T9VM/*.VPOBQG8G9^1@P5@X>,YU
-M`3/'(VH3]8).Q49,F^26X^#6[C%INQL^:IS4%CN*SO<"#WG7HY=14-A1<7.B
-MQE>;C0UTH3U<$96K0V'8N]#AA1Q@ZF_(F,RGL47=6&WCUL"%UJZ7DMU[B[AF
-M.N^//Y,B+D:5G>V-%M(A4F\(VQ]B:H>8'AUBZ@UA^D/,[1#IT2'F_BSV#VK,
-M)/OJ(>)C0_BQOQ;=(4P[1'AT"-,;PC\Z1+'A/^V,Z1\=T_;&[!QMDB&*,=/.
-MF.[1,5UOS,XQI76(S6K91X?PO2%2=X@MS9E'APB](:;^$!O.&1\=HLO_<W^(
-MEO\?97_?97\S]H>(S1"/LK_OL[_I#Q&:(1YE?]]E?V/[0_AFB#[[KUKOAT(T
-M_R__K61P3\?W_HM[=KR^T0NI>H"X/B"N`:0O)*SE(3V&#%3B=T^3SASMVQLR
-M-J:0G+3I#SFOL^0!^>:KO0&Y6F?GK&YM&*YEZ-XZH.<!'=5FWALP<01N_S!K
-M8R33@>RWS?#944K\!-\+EIC4/?C7.`SAPKQ]BC*BH?I2^_L&IB=-;.L_^?)0
-M"H2S>PL8<9WX1]>?73V]D2(Z7*=\W^`V/;EC6D_3[@%CW@$87P)##NPN+(XC
-M6GNPC%N?_!T6__./]3*_?</4=J15&Y^8WX6V:;1$E?X[VQO=0WQUL.9MK!N(
-M=3^[_/WUTTLID\17&>U'KFU'3*4F@)7>(J0",7`>ELYTL+=B_0_\USK*T/]O
-MX8UEA,\^NWXV?/[QL,B[X9.GGW_YZ=5'O[_J?[3"JS=I=J;HNU.T]10?40CN
-M[?#S#/[(X']V^?27-\/'5Y=?W#SZ"2L;]X,.0=,)7%Y@+UAE0^]D=VBV$-.C
-MLV$1_PQ5C+IABLZA_#J@'1ZQ"#"8EYIBT7="F#9US];/M;L\O\/,;K@N0>@'
-MKG8'<\VVAWO,8LM3NZ%%LW.O)D2]Y6,?LS1U"I=/L5'>$WLKO2@,U-QQ\*37
-M7+HG(^;RBZM+PI&S[_:%ER\V/7UYO/[PN//"[[V@J7UYM?/4;YY2[Q]>?OKI
-M7N?T//\GDF;]=\7*'PY<0'I9DEOD:_^T\L],EP&XU5CB'];+]?"+-GK%_>,*
-M$J_W[VEERD5>OI23QJ?BY@"N7_4`1^6$5$VZ\GLA[#N2_EQLW^3KR>7B)LID
-M.;$@]<<[K?2/W*L3+J9Z*3=&C^ND+*YT7IPEFF18R?TD1QLTD?PGGE,2Z*Q<
-M_D'1B9^*BPU691U6#/!1D),4Q[@M[^H*%TEN8);JV[QV>I[S):43,D96?/(=
-M[Q/UNH9%7\I9OI-4NCEIXN2)JNH!$,&N0P5_S\NFMYCK/99)=RZL+*2ES,P3
-M=C5><9`[\#V-O.AZ%3G5M+A%PB#K$<=E!'GMDGPQ"4:XKMTMS8HF15D,KQ@C
-M"?>/Y[M8PSICN6\!9M]KGN%$ZTQ+)41AU^7@@YP_'9!N<XL#KR?^?EKKH7*B
-MFUXQ^U*2WM_01A"7"E]6Y<VAN$PI275S!^R8U1:YA4<AV`[Y,M8[*;URTLRE
-M$XJ9,$,)X$3$KYDL9]!16F%:W25/<\JWD-".QZOR5DH*;_XL%3].3%&XZE/N
-MYG/YJA&Y%GOMVO&T&/VT;W5+($_R\=+_'6S8GY$$Q^2PM/F92U5:`(,KNOAV
-MCK!B_)X7BJB6<Y-^+F]JH=2)6RWY\AJY)8Q*G@R?USX5]Z9;6O%;;.;=ZAV$
-M;`C,PG>0)1[B*GC!ML$:);G9FP>8]4X4XDB2._ROP<WULUQ\,HF86%TD%GA\
-MGP4?ZOCI@`UH)DL;92(B6SS(960(9ESD,^86"R?^K.F[MT2=5E;2$/EP>M^=
-M5`N]1:[&2>H7/.@MR@=D$3V4MRN2)W1'RAER(8":A%%GN<>#C/63;J,^2/&+
-M4WD/J0.C.=$.>ML-;AZ<44(FR>T)#I.E+(/7+&2`9:[GGP"VP^UN$9=8S/D2
-M-2$8BG>^DC(G+,46#K^CIB,4#*F>I3N]ODDN$)EED=(ZUULR$F4:*HGB*%0<
-M2+_POM_/ZH4QVT8H(;GHQ:S<P/UZXA,C!)JO0*'S."\/<H)6`"?NE[M69J&D
-M&1>.X?9WV1-`4OEM>7D/KERA^,K/I!EFJ@,]BTB08_-,44'X7/9\D][L8`FE
-M?(+NA)1GZBZ!JT#*WHOFFW&5W3+B'<OU&4(H02P%H-VP1INQAA"`"93K82[(
-MTGDH`DM"4R^BLD;T/&UQ_,3R.4*A\#TIEJH@WS$IXW)L-T-#X\8M9BC5@E[O
-MKXSX"I=61[21NVE(3]V3CBCNH[RK+I:B*E%W.%,F^,"EQU8X@(65H7UIOA%=
-M5H#*XYP.2+K6T\3,\'.^EOR$79,''/9YPQNK<@L;*>N5"[&R_(.S[DZH8RD+
-MZ(1X(2E%EQD`,\NRT*FP.R28W)<7K5H(.Q^@,;`F2R>B3&@IK!'='//5D%;M
-M`#(Q9]R*1OD,),>$BV9H>BO(2&)-6@-)84&T!F@&BUG:JWNI1UY.4@KD-5)6
-M7B*Q\*1Y+BAT^!KY][=ETFMD:X(+K8D`()*WT"T)HC/*_341RTE!-;Y"5G57
-M)DDPKW,01U[DK%"B@Q@T5GJQO"0.`Y!C_XJY*HJ&#V(4Q"AFG:$F:RF<UT(P
-M(RZ\@FWA27[@NF]KY<JN5?4YXL2$&X<H$_0-U]U$$Q@0,J.4S2OQ*SPT!04,
-M3QQF$%8*)&-B5M2>E2$1XLOR_K`$P6=%R'"NZTL]RO.*6!ZN@EZ+RIIGEG_#
-MBM9[*5=S0E#MC@@O0=$E^":PE=D&F>7R0LZ_/<EQUY>2DW;2&VD?)%'^)Y(K
-M4.YV$L*'`K=@=A&F2>N@C.*SD>2]8X8"R3IPHYJCANR_`'>)$@-AAN-^TM7_
-M*B^O!5/C4OE9J,TX`<M2BHY`(T,Y<0F66<Y8X8!;RT&1#@3.=S=-4-54:>:N
-M*/8>A$XLY<8R"[#&(8/NEK%IP*E&-%LDZ1/Y(BB5Y["3B<EO4;CGE:8%H)SL
-MF[QY@M3#DY0$Y`6.JQP@@7E+0HDM&X?^R7!F@1DAB8W8RT)0Y$2+67%\[Y]^
-0]]ZO?G=^^'_[0&'EA?,``'E+
-`
-end
diff --git a/usr.sbin/pcvt/demo/xmas.vt.gz.uu b/usr.sbin/pcvt/demo/xmas.vt.gz.uu
deleted file mode 100644
index ca2ba3a..0000000
--- a/usr.sbin/pcvt/demo/xmas.vt.gz.uu
+++ /dev/null
@@ -1,110 +0,0 @@
-begin 644 xmas.vt.gz
-M'XL(".RV^BX"`WAM87,N=G0`[5U;;R.YL7X<0`A:/T`O#/9EL]A8S6NWH#B7
-M'2!HY"#8Q_-@XV`-'"N>&6EDR7/Q`H/][>&UR>IFR3.>5LXFA[W><9MB?:PB
-M/Q:+U90T^\WB#XNK;G'UM\6W?UG\KEY<_4G<Z7_D=G&UF\T65\V:L>Y_%E?M
-MFM%NN;B2N_WBJMY=+ZY6:U9W2T*(OJ?UFJXTBM@MS:NZ8/?++^9.OVQ*KWTI
-M7=-6R^B&*@.UL<7?_C`GJ83!8VO:6'`+T+]VK36B?$U5;,M6T6AT[?'FJ<C:
-MMVWDQ)I*8T*B6[BN*Z_H]G#X\^'P1E>2:\Z[=X?#V\/AO?Y3F3^-U.YP^'`X
-MO)[;*E18)7.8UU:(\JXZN.OC86/_-__IUQK3?8^ZXJ/^H^V[3\,?7H?NTIVN
-M.JV256AE_K`OSVSGT^[/KJ-67?63[18FNMK:R9INOJ^<AK(SVFT\HEPSWGTW
-MGUD%:%=]NKP<_CC=9)=YZ7-^%E=,D^&YTMC/W'62[DU-2=W+C[;3&U-BARAT
-MMG]%L\!UDA70@V-[2C/Y%\>?UM[4IL=,Y0O7,\*6"M.U04B7MMU%P"*NF^ON
-MPHY'8\;,4"R07A>UH:BZ<86Z-W2]C6&YM<$*T;58:S.B6!/%$KFVVWR*@BT4
-MG`6;2-`^F*JM=Z@J04U@FVYSF>`V$)=46R<M4^E$7&GQR\0@-9)W=&W$"(`X
-M!*GMNMSX0;7M#.3)+(P3L5W/0H]S#%(8FS:7'E)D(!T`PP"XM2H`<!2`8@`,
-M&,40HWK.$3=\JJM^\:-58\@4V$8QU=0*`ZB!;34*T"(`&CFQ3:T0VRP)W1RA
-MEE2[*I)1-1AXFYJG6E0[A0$TJ7FJ00$D!J"`>0HQCQJOZ'BH,&KK-E)C)*H+
-M1F0E@#$HD15&9(V<&L,18ZR7<YY#CY6W"N.V;BRUBJ%*8116%%B%4EAB%-;(
-MJ54USD#K,DR@L1KY0]EV+_+PNMW$0+E"]<-(+-O40(F26&(DULB)@;(YY3Z"
-MQY`2M4<!>Q2J#L9C*8$]*(\EQF.-G-HC4!^O5U/B@K.5IZ'$J"TYL`KUT1+C
-ML63`*I3'$N.Q1DZMHHA5UJ^3L(0YJP1&;5D#JU#O+##O+%:I50(EK\#(*]K4
-M*M&>\G]NK/2"/)Q<`F.V:%+[!.J>!>:>A0+VH606&)D%B#?$B7BC\?&&CI&3
-MD$]#8S07(.X0J+L6&*<%B#L$RFF!<5J`N$,PU#,ZX\PHTD!)C.8"1!P"==<<
-MX[0`$8=`.<TQ3G,0<?#5*7?HX]\827&,Z!R$&ASUTASC,@>A!D>YS#$N<Q!J
-M<(6O8\Z!U'8+$^S"",Y!U,%1;\TQ&G,0=7"4QARC,0=1!\>C#NWE_7A9IIJM
-ME]\#<8SA'$0?'/7:'*,S!]$'1^G,,#IS$'WP^HGX-]EWSGOS&$9U!F(/-J!Z
-M]:;7#F,U`[$'&["Z.O0`&*L9B#U8DP%(]V/&SK!6LS'17SM,$($P-<8,6HU)
-M?7`((`1A`U)7V^V;D!;A&`*(01ADM:Y?V3R+QIGY328)@;$WCF'`(!!A?`3\
-MV@,[F#&QW4Z:@7"$L1',P<&X_3C#Z,U`4,(H!M,GXGS\'P-)BA&?@=B$U:>@
-M7_=4IQC5*8A4Z&H$MXMPAPB'$9^"N(6V([CE`&X6R#M(Y%!L9E`0N]#AS"`C
-M53&_3T$,0^%TT+\J$E7=13C,X5,0T5`YA"-5A%LF0]XGB^HX]MB:0$%H0\5(
-MY4?71LQB46QUH"#(H1RW/DV*46Q!H"#DH0RW'J;*W(8W67(H-J4H"(`HS8U[
-MLWOL@;#Y0T$<1.L\3C09FS@@&EKE\FV)I318*D)TM%IC4P@$1.U8/;^OQQ)+
-M(*^$2:-I%["EQR,\'O,4-J>4+*KH]A5LJ3#%T*`>!*^8-!H*@5CAJ?2+,"M;
-M/Q<Q-PR\,*90D!YR$%#P<X13V62>=6F@4W<C.2`6&ZS&34#E^HI]/1)>K#Y=
-MAK8)F3BC?S)YKJRV\<&5LMUN=+_NGZ3042+?/E+9I/*Z6Z[GB03)BGP:RD`A
-MUS%1;!Z?WFSFGVN)906$W6*XAC!!EN2%R4@Z&G,9[&%Y:89)LZZZW`2C1NE_
-MM>9Y/([A<8/7:R/RT@*3%L`6F9>6F+1,;<&R_FJM\K`*@U7`I"8OW6#2#3"I
-M3:3]RADQ6@RC30T[D?)7ZU7$7UR]U#\1?>70W4.\E;/)53"DJWO!N1.T/X%[
-M=>>6O*2T,:65=SK*+-@>(!%/6J>6O^$%(TV-"KXQD.M7)KX@*8R3D9ER`\2Z
-MR[1$N6@G(STL=@\S!V7*Q5VQK.KCS?X!]!AF(.)&:ISP5RYP!,@IM,Q`IP*]
-MCU#=`.)E@J(R*+V`?;#K#37T`1`I2I-!<0*;3\FPG<K_*^-/S(;%=N#+41-M
-MIHDVH46OZ,JB`%X9^14B_VD^'M0\A-U?#2`&98-G`,JM;`-NC<N:3)ER.TZ$
-M6.EK/0;+8/`!QB;!R'"\+ZN"EQ\^`%#.5V)Z90COROI5E,D3*F5([<IZ.IMX
-M[#":LE")#*F-3[?K9OX!@'(5+)`[`1+6/-5=QO66-9ZBIHXY0J)=KUOC[.0-
-M,DV7KK)M!$["$YZ--G3EZ+U/9?25V2<'76X@;G;M7J5V\#KH=#.0=9O2=\ZT
-M9*FN4Y-T/=?TS5`\;KD'\K0#H4,^DZ],^K`B&62&(S-@F(XI=AEYWGFSPK;[
-M[0B'`PM%WD+1]5S#]!%=NOX.T_K*Y'^ST/)I:`E,U83]D,%QAZ_>1ISW(QP%
-M3&WR^C2I/KGHK>D&$=0@TZ],"C\+W3X%W0)#-=%?9U#<D:SW.,HJ-5/4:3`6
-MP\NZ(_GPL@;C.$[X*_/D)0M),4B:FB587IIAT@R8P_/2')/FB3EXGE^9AV19
-M8($!"V"4S$M+3%H"HU1>6F'2JAO'NIGTOC+/-;/(#8;<`*O:O'2+2;?`JE5>
-M>H5)K[KQ-BMF]95Y")T#E!B599T:(_.LE1AK)4V-D7G62HRUDD5CQDE\98X)
-M9/$P'DL.;,F356)DU2^DMN3)*C&R2@GF4!+FR3QQ)49<":(*F2>GQ,@I07PA
-M\^24&#EE"R?-(-VNS/F:+"#&5PE""Y4GI\+(J4!DH?+D5!@Y%85#,LJ@*W,>
-M*@N),5:!@$+E^:DP?BH01J@\/Q7&3Y4&#^.4N#)'UK*`&&45"!E4GJ8*HZD"
-M@8+*TU1A-%4-C&4'66]E#A-F`3'F*A`6J#Q-%493!<*!)D_3!J-I4\-H!\UZ
-M*W,$-`N-<;@!84&3IVN#T;4!84&3IVN#T;6!8<$XZZW,:=TL),;A!@0$C819
-M+"_<\[4Q]\8`7UVE2:E06[GHWU2V*_X<9+F5.2,=I**0H:63,3ST\&W,/(5Z
-M;GEMS(W/3S4A./(WC;FI/I4SZ^7,>CFS7LZLES/KY<QZ.;->SJR7,^OES'HY
-MLU[.K/];G%F?<N-BHW:^UD.@`_8K=U3V;F:N/WSWQ]GL]'O6PV7?%[X]A.OC
-MQX_]_1LRN!Y.71;IT5B_^_OM\?@S>7EWU(::XW_4_+-SK^UN'LAW1->PKPU;
-MN";XM?0M..A7#^^J!-IAZI>J$2:Y/R*(Q_M$:8>IU<LH#0W*(.T/QX=A9QT/
-M>P_O<+6*J<:)&8AZ^_W]O7E#O!Z1^_N]`WO7C\[K`+7KB]Z34]<C>7001K"7
-M.?P4;S789T)$C@0MME^HQ3/&,0_SU6.7`WWFB.5T@X2'ND&]44!-I<-KHL?L
-MZ&99'+T/'SY$0N1$39:%'`_W^Y17]X>C?L'D)]:T/FI/8E,L6_/Q%?JW+K>Y
-MET?SL1;FMZO0=MN#K=%VYI&A3>(\$EO'W+A*C:[TT=9J=*T/MEJC7W58]LY5
-M-!_8\-'AF8]K^.`0E:G@,-VMJRQC91DKRUA9)I5%K"QB91$KBZ0RCY5YK,QC
-M99Y49K$RBY59K,R2RC16IK$RC95I4KF.E>M8N8Z5ZU#9[M&7ILS\M@N**[#[
-MZZ5?.EV1W_93D\0RJY"M0H(P,6UX$!TZA*V_K>Q`[&>0.!028"!*A%^ZX-BA
-M!`S:[_EW2Y+`DJ77>X`Z!/6QF[/&H#N-`JYF=E0V!0.&!U!35Z7U/#CH(M=(
-M8JWOA]";H:/)4-.T,WEH+BJ:Z$7ZL?(8RZ`8Z85[<X>*D.&HDMAUH6;C*YXV
-MMN_0H.9#:".Q:17T:U/&^"R#WJ6ER_](=W*"`<O``!([%.B_S!D@S,;NP=XH
-MT<4F29X=2]A[J[[WR'(X!DGS<1RMB<=X8819A4Y<Q4XD"!M'TS"T)+K>D8.N
-M3`9KU6'D3V?J<!+%CCOV+1P?^IF5)7WL0@+)!Z;K<,A\2U2W%,8H:>A<4]BV
-M>#S:#[<1)H.ES3N>;6X+DS&Y=]=7S_6@NM.<=ZGBYW$!KD4=3H;.TA'F<5K?
-MX)NI;5]H(NQT:SIZM9>^.X3B?Y'#J,,9IUVOA=,D%)_5B\QF#EZ3QOO),!NU
-M#GV8OW>%37=!YON*;&;G\32N%=5=;$RS03/CQ5USK`OJF4^(<K5BQ:G\46S!
-M7L%8T=H>,G[6N2A]Q?ZJN]'V:G8.%Q:FR(5IXL*U=!$T;+I4P43)(&5[;.,$
-M-U&_Z!2F=("VQ=`;&]-FU-/K>!\NY_-[[GGKQESSX=\4SC*T9?H$$$ZKYU5+
-M)N-]JAY)R'<1]7MXAI<-'GM#`-V866_[T*57RZF4[K^]6MS4OS#]Y90*L)&.
-M:3?"T9[,?P<]@BT;G*S,KO</?>22F)@:Z/>"P42NH4]2N85;A&>L$:$9S3W?
-M?H53F9F,L!NBX]&U9^(Q.&CALP^Y/<WC_U*Q.9.CMJ5SL`6N^E',3`<6[,D[
-MD2?6HJ3E?EA<^X$_&V1R,)/!]J-V`)>QVL8)W#X3"-9XP(O0"<CT8:D9SJBG
-M5C5=0,Q&U.>%_(F<P\=08/>DQ&[L5;QUZGE]Y@-S,[-0F^L-O0=7V#?W*O@M
-M=:^!WT'W"M"H@'GH8BP/XWW1<VPT7]G`.Y]:6/UHF_,_7BF?$P@Z^0Q`KQ(#
-M*OGIY!E.3DU=W2F^._;@\ED*W[Q/7_C6?:ZB;YPGC?MI;1?XZ+QR4YP%^_.+
-M$_%)%:>!3[8X!7QBI6]?)(1HK)5V=J7S/OJO[,S74;8S>Y#.LCD@XG(D_@"3
-M39W8+%#??K@U2(;*?KHD/N=YGH&Z!T$Z@CUU!?<H>L:YSA4=L$-9.WPZC-C$
-MF4U\]5:HQ`KS6:4D,<+=YQS-:3_CDW-D=_`).[(]^.2<33:I_LZU&AQ)<&&P
-M"[_,%_GT(=GYA*(Y&&;3A]Y>=^,Z[L(/3*!-11)-+K[$U?BT)O%I3N+3FL2G
-M.4EH<4-27]V3P;!R\R6>91[>C^3>1_4-)R_O;F^/#[\UG>_>=_6-Z,O\!P@'
-MMEP`KEZ$?MWX->YS/4D8O4T8N,J^N.E[:O,EOB%R(6EX$[G\C%D^[=2<>HJ<
-M@_K3TWI:VA82%A(6$A82%A(6$A82%A(6$A82%A(6$OY'DM!]+-E_+;Z1=D^>
-M_/'KIV>][@N7,$.XOYZ>OK&UI3L!&DZ"FM.:T_,[-O=(R+<FT_;PX\/B:O<[
-M,OSS\5S3`:C@KI_ZHWWGF2_)D%[KG_[)U-*<>IUZ/L'V!D=NEV=Q^6E[B7G:
-MP.EG'&C+GZ&U#XW./QVS[9UE+F*FG6$>XKUXIEF7;_!\,PYI[DS3#31VAKG6
-M+?[^E/.:;K*EC7VVLYYP\O7MXVO3=-.O;VR\[)+))Z!N[$PS+2)/.Z52W.GF
-M3HIZKA4IOP*>:TG*+W]E32IKTI/+Q*33ZBG'>9Y5Z93OG'!5.MMR4R90F4#D
-M\P@]]00J\^2I1?0_<*(LKH[_'BDZ8?#F+U[\[=7;:NH)X.#;;OZ/[6TUZ328
-MGO^3$G]29MM>U`7S%S_<;K</WU=G(//D7)V8JF=@9B'C\\FX&GB,B:EHW^&4
-M.HW"RV?R4IC/SLHYCO\/1"U.\M=%1CD.-::EHAP&&X67S^6E=!''S79;E:7\
-MJVDIC1-^=U=X.0$O5:W[\N/-S]\78I:E^_^2BLHM9S_>_;8P\6N9:+^48?[B
-MO^]NWA4?^?7$E(:8F_=O"S$G(*;=[+Z:GI?VJQ7FKQZJ<MIPDM2^_78''6;M
-MJW+\]:O3]O;;)>8OCJ_^]_;[0M")SA,53GX5)QN?/_CQ[?2,M%\Z-;^I"CFG
-M(F?C0KH7^[>WOZ\F)ZO]+JKYW?[X<%N5MQ,4BOX*_&?C4A,O]O=G8J3];JWY
-M[=NJL+.P\U>PNC<NX'[8WK[ZQ]U%865A97D;8.%@X6#A8.%@X6"&@P1\9&*9
-M<V7.E3E7.%@X6#A8.%@X6#A8.%@X6#A8./BOW8.!\7V2A&1(PLP0)R0D@(1)
-M7ZZ@+"$G*(-0,*)YRIQ$F\\&G^T-5`_OA#.?)W5E)?OO'W3?]!?.K^L*X>R?
-LK:O,4Y_?D[\>]SORP^WQS>WV]N?PK-K59<Q^3M6?Q'9Q/?LG-?=D49*R``"?
-`
-end
diff --git a/usr.sbin/pcvt/fed/Makefile b/usr.sbin/pcvt/fed/Makefile
deleted file mode 100644
index ac1baa4..0000000
--- a/usr.sbin/pcvt/fed/Makefile
+++ /dev/null
@@ -1,9 +0,0 @@
-# $FreeBSD$
-
-PROG= fed
-SRCS= fed.c select.c edit.c misc.c
-
-DPADD= ${LIBCURSES}
-LDADD= -lncurses
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/fed/edit.c b/usr.sbin/pcvt/fed/edit.c
deleted file mode 100644
index 1d7e4e6..0000000
--- a/usr.sbin/pcvt/fed/edit.c
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``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 DEVELOPERS 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.
- */
-
-/*---------------------------------------------------------------------------
- *
- * edit.c font editor edit character
- * ------------------------------------------
- *
- * edit.c, 3.00, last edit-date: [Mon Mar 27 16:35:47 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include "fed.h"
-
-#define UP 0
-#define DOWN 1
-
-static int pen;
-
-/*---------------------------------------------------------------------------*
- * fill edit mode command window
- *---------------------------------------------------------------------------*/
-void edit_mode(void)
-{
- mvwprintw(cmd_win,1,1,"(W)hite ");
- mvwprintw(cmd_win,2,1,"(Black ");
- mvwprintw(cmd_win,3,1,"(I)nvert ");
- mvwprintw(cmd_win,4,1,"(R)ow BLACK ");
- mvwprintw(cmd_win,5,1,"(r)ow WHITE ");
- mvwprintw(cmd_win,6,1,"(C)ol BLACK ");
- mvwprintw(cmd_win,7,1,"(c)ol WHITE ");
- mvwprintw(cmd_win,8,1,"(Q)uit/Save ");
-
- mvwprintw(cmd_win,9 ,1,"e(X)it/undo ");
- mvwprintw(cmd_win,10,1,"Pen (U)p ");
- mvwprintw(cmd_win,11,1,"Pen (D)own ");
- mvwprintw(cmd_win,12,1," ");
- mvwprintw(cmd_win,13,1,"(^P)rev Line");
- mvwprintw(cmd_win,14,1,"(^N)ext Line");
- mvwprintw(cmd_win,15,1,"(^F)orwd Col");
- mvwprintw(cmd_win,16,1,"(^B)ack Col");
- wrefresh(cmd_win);
-}
-
-/*---------------------------------------------------------------------------*
- * edit mode command loop
- *---------------------------------------------------------------------------*/
-int edit(void)
-{
- int c, r;
- char l;
- unsigned int k_ch;
-
- c = r = 0;
-
- pen = UP;
-
- for(;;)
- {
- if(pen == DOWN)
- dis_cmd(" Edit Mode, the Pen is DOWN");
- else
- dis_cmd(" Edit Mode, the Pen is UP");
-
- l = ((mvwinch(ch_win,(r+1),(c+1))) & A_CHARTEXT);
- wattron(ch_win,A_REVERSE);
- mvwprintw(ch_win,(r+1),(c+1),"%c",l);
- wattroff(ch_win,A_REVERSE);
- wmove(ch_win,(r+1),(c+1));
- wrefresh(ch_win);
-
- k_ch = wgetch(ch_win);
-
- switch(k_ch)
- {
- case K_LEFT:
- case KEY_LEFT:
- if(c > 0)
- {
- normal_ch(r,c);
- c--;
- }
- break;
-
- case K_DOWN:
- case KEY_DOWN:
- if(r < (ch_height-1))
- {
- normal_ch(r,c);
- r++;
- }
- break;
-
- case K_UP:
- case KEY_UP:
- if(r > 0)
- {
- normal_ch(r,c);
- r--;
- }
- break;
-
- case K_RIGHT:
- case KEY_RIGHT:
- if(c < (ch_width-1))
- {
- normal_ch(r,c);
- c++;
- }
- break;
-
- case KEY_HOME:
- normal_ch(r,c);
- c = r = 0;
- break;
-
- case KEY_LL:
- normal_ch(r,c);
- c = ch_width-1;
- r = ch_height-1;
- break;
-
- case 0x0c:
- wrefresh(curscr);
- break;
-
- case '\n':
- case '\r':
- case ' ' :
- chg_pt(r,c);
- break;
-
- case 'q':
- pen = UP;
- normal_ch(r,c);
- wrefresh(ch_win);
- return(1);
- break;
-
- case 'x':
- pen = UP;
- normal_ch(r,c);
- wrefresh(ch_win);
- return(0);
- break;
-
- case 'w':
- case 'W':
- setchr(WHITE);
- break;
-
- case 'b':
- case 'B':
- setchr(BLACK);
- break;
-
- case 'i':
- case 'I':
- invert();
- break;
-
- case 'r':
- setrow(WHITE);
- break;
-
- case 'R':
- setrow(BLACK);
- break;
-
- case 'c':
- setcol(WHITE);
- break;
-
- case 'C':
- setcol(BLACK);
- break;
-
- case 'u':
- case 'U':
- pen = UP;
- break;
-
- case 'd':
- case 'D':
- pen = DOWN;
- break;
-
- default:
- beep();
- break;
-
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-void normal_ch(int r, int c)
-{
- char l = ((mvwinch(ch_win,(r+1),(c+1))) & A_CHARTEXT);
- wattroff(ch_win,A_REVERSE);
- if(pen == DOWN)
- mvwprintw(ch_win,(r+1),(c+1),"*");
- else
- mvwprintw(ch_win,(r+1),(c+1),"%c",l);
- wmove(ch_win,(r+1),(c+1));
-}
-
-/*---------------------------------------------------------------------------*
- *
- *---------------------------------------------------------------------------*/
-void chg_pt(int r, int c)
-{
- char l;
- l = ((mvwinch(ch_win,(r+1),(c+1))) & A_CHARTEXT);
- if(l == WHITE)
- l = BLACK;
- else
- l = WHITE;
- mvwprintw(ch_win,(r+1),(c+1),"%c",l);
- wmove(ch_win,(r+1),(c+1));
-}
-
-/*---------------------------------------------------------------------------*
- * invert current character
- *---------------------------------------------------------------------------*/
-void invert(void)
-{
- int r,c;
-
- r = 1;
-
- while(r <= ch_height)
- {
- c = 1;
- while(c <= ch_width)
- {
- if(WHITE == mvwinch(ch_win, r, c))
- mvwaddch(ch_win, r, c, BLACK);
- else
- mvwaddch(ch_win, r, c, WHITE);
- c++;
- }
- r++;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * fill current character black/white
- *---------------------------------------------------------------------------*/
-void setchr(char type)
-{
- int r,c;
-
- r = 1;
-
- while(r <= ch_height)
- {
- c = 1;
- while(c <= ch_width)
- {
- mvwaddch(ch_win, r, c, type);
- c++;
- }
- r++;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * set current row to black/white
- *---------------------------------------------------------------------------*/
-void setrow(char type)
-{
- int r,c;
-
- getyx(ch_win,r,c);
-
- c = 1;
-
- while(c <= ch_width)
- {
- mvwaddch(ch_win, r, c, type);
- c++;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * set current column to black/white
- *---------------------------------------------------------------------------*/
-void setcol(char type)
-{
- int r,c;
-
- getyx(ch_win,r,c);
-
- r = 1;
-
- while(r <= ch_height)
- {
- mvwaddch(ch_win, r, c, type);
- r++;
- }
-}
-
-/*---------------------------------- E O F ----------------------------------*/
diff --git a/usr.sbin/pcvt/fed/fed.1 b/usr.sbin/pcvt/fed/fed.1
deleted file mode 100644
index f68ea8c..0000000
--- a/usr.sbin/pcvt/fed/fed.1
+++ /dev/null
@@ -1,59 +0,0 @@
-.\" Copyright (c) 2000 Hellmuth Michaelis
-.\"
-.\" 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.
-.\"
-.\" 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.
-.\"
-.\" Last Edit-Date: [Mon Mar 27 16:57:41 2000]
-.\"
-.\" $FreeBSD$
-.\"
-.Dd March 27, 2000
-.Dt FED 8
-.Os
-.Sh NAME
-.Nm fed
-.Nd fonteditor for pcvt EGA/VGA font files
-.Sh SYNOPSIS
-.Nm
-filename
-.Sh DESCRIPTION
-The
-.Nm
-utility is a curses based fullscreen application which allows to edit
-.Xr pcvt 4
-fontfiles interactively.
-.Pp
-The
-.Nm
-utility displays a command window, a character display window and a
-character select window.
-.Pp
-In character select mode, it allows to move a character font to
-another position, exchange two character fonts or switch to edit
-character mode.
-.Pp
-In character edit mode, the user is able to edit the selected
-character font or apply several operations to it.
-.Sh SEE ALSO
-.Xr pcvt 4
-.Sh BUGS
-No known bugs
diff --git a/usr.sbin/pcvt/fed/fed.c b/usr.sbin/pcvt/fed/fed.c
deleted file mode 100644
index 8c226b5..0000000
--- a/usr.sbin/pcvt/fed/fed.c
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``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 DEVELOPERS 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.
- */
-
-/*---------------------------------------------------------------------------
- *
- * fed.c font editor main file
- * -------------------------------------
- *
- * last edit-date: [Mon Mar 27 16:36:45 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#define FED
-
-#include "fed.h"
-
-void main(int argc, char *argv[])
-{
- int i;
- int row, col;
- int ret;
-
- if(argc != 2)
- {
- fprintf(stderr,"EGA/VGA Fonteditor, Rel 1.00\n");
- fprintf(stderr,"usage: %s <fontfilename>\n",argv[0]);
- exit(1);
- }
-
- readfont(argv[1]); /* read fontfile into memory */
-
- initscr();
- cbreak();
- noecho();
- nonl();
- keypad(stdscr,TRUE);
- idlok(stdscr, TRUE);
-
- move(0,0);
- standout();
- addstr(" Interactive EGA/VGA Fonteditor - (c) 1993, 2000 Hellmuth Michaelis ");
- standend();
-
-/* character horizontal ruler */
-
- move(WINROW-1, CHCOL + ((WIDTH16 - ch_width)/2) + 1);
- if(ch_width == WIDTH16)
- addstr("1234567890123456");
- else
- addstr("12345678");
-
-/* charcater vertical ruler */
-
- for(i=1; i < ch_height+1; i++)
- mvprintw((WINROW+i), (CHCOL + ((WIDTH16 - ch_width)/2) - 2), "%2d", i);
-
-
-/* select horizontal ruler */
-
- move(WINROW-1,SETCOL+2);
- addstr("0 1 2 3 4 5 6 7 8 9 A B C D E F ");
-
-/* select vertical ruler */
-
- for(i=0; i<10; i++)
- mvaddch((WINROW+i+1),(SETCOL-1),(i+'0'));
- for(i=0; i<6; i++)
- mvaddch((WINROW+10+i+1),(SETCOL-1),(i+'A'));
-
-/* label available commands window */
-
- move(WINROW-1,CMDCOL+1);
- addstr("Commands");
-
- refresh();
-
-/* command window */
-
- cmd_win = newwin(((WSIZE)+(2*WBORDER)),(CMDSIZE+(2*WBORDER)),
- WINROW,CMDCOL);
- keypad(cmd_win,TRUE);
- idlok(cmd_win, TRUE);
- box(cmd_win,'|','-');
-
- sel_mode();
-
-/* character font window */
-
- ch_win = newwin((ch_height+(2*WBORDER)),(ch_width+(2*WBORDER)),
- WINROW, CHCOL+((WIDTH16 - ch_width)/2));
- keypad(ch_win,TRUE);
- idlok(ch_win, TRUE);
-
- box(ch_win,'|','-');
- wrefresh(ch_win);
-
-/* character select window */
-
- set_win = newwin((WSIZE+(2*WBORDER)),((WSIZE*2)+(2*WBORDER)),
- WINROW,SETCOL); /* whole character set */
- keypad(set_win,TRUE);
- idlok(set_win, TRUE);
-
- box(set_win,'|','-');
-
- row = 0;
- col = 0;
-
- for(i=0; i<256; i++)
- {
- mvwprintw(set_win,row+1,col+1,"%02.2X",i);
- if(++row > 15)
- {
- row = 0;
- col += 2;
- }
- }
- wmove(set_win,1,1);
- wrefresh(set_win);
-
-/* start */
-
- clr_cmd();
-
- curchar = 0;
-
- if((ret = selectc()) == 1)
- {
- writefont();
- }
- endwin();
-}
-
-/*---------------------------------- E O F ----------------------------------*/
diff --git a/usr.sbin/pcvt/fed/fed.h b/usr.sbin/pcvt/fed/fed.h
deleted file mode 100644
index bf488ab..0000000
--- a/usr.sbin/pcvt/fed/fed.h
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``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 DEVELOPERS 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.
- *
- * last edit-date: [Mon Mar 27 16:37:27 2000]
- *
- * $FreeBSD$
- */
-
-#include <ncurses.h>
-#include <stdlib.h>
-#include <string.h>
-#include <unistd.h>
-
-#ifdef FED
-
-int ch_height;
-int ch_width;
-
-int curchar;
-
-WINDOW *ch_win;
-WINDOW *set_win;
-WINDOW *cmd_win;
-
-#else
-
-extern int ch_height; /* current fontfile character dimensions */
-extern int ch_width;
-
-extern int curchar; /* character being edited */
-
-extern WINDOW *ch_win; /* windows */
-extern WINDOW *set_win;
-extern WINDOW *cmd_win;
-
-#endif
-
-#define FONTCHARS 256 /* no of chars in a fontfile */
-
-#define WHITE ('.')
-#define BLACK ('*')
-
-#define K_UP 0x10 /* ^P */
-#define K_DOWN 0x0e /* ^N */
-#define K_RIGHT 0x06 /* ^F */
-#define K_LEFT 0x02 /* ^B */
-
-#define WINROW 3
-#define CMDCOL 3
-#define CHCOL 20
-#define SETCOL 41
-#define WSIZE 16
-#define CMDSIZE 12
-#define WBORDER 1
-
-/* fonts */
-
-#define WIDTH8 8 /* 8 bits wide font */
-#define WIDTH16 16 /* 16 bits wide font */
-
-#define FONT8X8 2048 /* filesize for 8x8 font */
-#define HEIGHT8X8 8 /* 8 scan lines char cell height */
-
-#define FONT8X10 2560 /* filesize for 8x10 font */
-#define HEIGHT8X10 10 /* 10 scan lines char cell height */
-
-#define FONT8X14 3584 /* filesize for 8x14 font */
-#define HEIGHT8X14 14 /* 14 scan lines char cell height */
-#define WIDTH8X14 8 /* 8 bits wide font */
-
-#define FONT8X16 4096 /* filesize for 8x16 font */
-#define HEIGHT8X16 16 /* 16 scan lines char cell height */
-
-#define FONT16X16 8192 /* filesize for 16x16 font */
-#define HEIGHT16X16 16 /* 16 scan lines char cell height */
-
-
-void edit_mode ( void );
-int edit ( void );
-void normal_ch ( int r, int c );
-void chg_pt ( int r, int c );
-void invert ( void );
-void setchr ( char type );
-void setrow ( char type );
-void setcol ( char type );
-void main ( int argc, char *argv[] );
-void readfont ( char *filename );
-void dis_cmd ( char *strg );
-void clr_cmd ( void );
-void save_ch ( void );
-void move_ch ( int src, int dest );
-void xchg_ch ( int src, int dest );
-void display ( int no );
-void sel_mode ( void );
-int selectc ( void );
-void normal_set ( int r, int c );
-int sel_dest ( void );
-void normal_uset ( int r, int c );
-void writefont( void );
-
-/* ------------------------------ EOF ----------------------------------- */
diff --git a/usr.sbin/pcvt/fed/misc.c b/usr.sbin/pcvt/fed/misc.c
deleted file mode 100644
index 5a0cbc9..0000000
--- a/usr.sbin/pcvt/fed/misc.c
+++ /dev/null
@@ -1,344 +0,0 @@
-/*
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``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 DEVELOPERS 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.
- */
-
-/*---------------------------------------------------------------------------
- *
- * misc.c font editor misc routines
- * -----------------------------------------
- *
- * last edit-date: [Mon Mar 27 16:38:12 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include "fed.h"
-
-#include <stdlib.h>
-#include <string.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-
-static unsigned char *fonttab; /* ptr to font in core memory */
-
-static char *bitmask[] = {
- "....", /* 0 */
- "...*", /* 1 */
- "..*.", /* 2 */
- "..**", /* 3 */
- ".*..", /* 4 */
- ".*.*", /* 5 */
- ".**.", /* 6 */
- ".***", /* 7 */
- "*...", /* 8 */
- "*..*", /* 9 */
- "*.*.", /* A */
- "*.**", /* B */
- "**..", /* C */
- "**.*", /* D */
- "***.", /* E */
- "****", /* F */
- NULL };
-
-static char lfilename[1024]; /* current filename */
-static unsigned int lfilesize; /* current filename's size */
-
-/*---------------------------------------------------------------------------*
- * read fontfile into memory
- *---------------------------------------------------------------------------*/
-void readfont(char *filename)
-{
- FILE *in;
- struct stat sbuf, *sbp;
- int ret;
- char buffer[1024];
-
- sbp = &sbuf;
-
- if((in = fopen(filename, "r")) == NULL)
- {
- sprintf(buffer, "cannot open file %s for reading", filename);
- perror(buffer);
- exit(1);
- }
-
- if((fstat(fileno(in), sbp)) != 0)
- {
- sprintf(buffer, "cannot fstat file %s", filename);
- perror(buffer);
- exit(1);
- }
-
- switch(sbp->st_size)
- {
- case FONT8X8:
- ch_height = HEIGHT8X8;
- ch_width = WIDTH8;
- break;
-
- case FONT8X10:
- ch_height = HEIGHT8X10;
- ch_width = WIDTH8;
- break;
-
- case FONT8X14:
- ch_height = HEIGHT8X14;
- ch_width = WIDTH8;
- break;
-
- case FONT8X16:
- ch_height = HEIGHT8X16;
- ch_width = WIDTH8;
- break;
-
- case FONT16X16:
- ch_height = HEIGHT16X16;
- ch_width = WIDTH16;
- break;
-
- default:
- fprintf(stderr,"error, file %s is no valid font file, size=%d\n",filename,sbp->st_size);
- exit(1);
- }
-
- if((fonttab = (unsigned char *)malloc((size_t)sbp->st_size)) == NULL)
- {
- fprintf(stderr,"error, malloc failed\n");
- exit(1);
- }
-
- strcpy(lfilename, filename); /* save for write */
- lfilesize = sbp->st_size; /* save for write */
-
- if((ret = fread(fonttab, sizeof(*fonttab), sbp->st_size, in)) != sbp->st_size)
- {
- sprintf(buffer,"error reading file %s, size = %d, ret = %d\n",filename,sbp->st_size, ret);
- perror(buffer);
- exit(1);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * write fontfile to disk
- *---------------------------------------------------------------------------*/
-void writefont()
-{
- FILE *in, *out;
- int ret;
- char buffer[1024];
-
- if((in = fopen(lfilename, "r")) != NULL)
- {
- int c;
- char wfn[1024];
-
- strcpy(wfn, lfilename);
- strcat(wfn, ".BAK");
- if((out = fopen(wfn, "w")) == NULL)
- {
- sprintf(buffer, "cannot open file %s for writing", wfn);
- perror(buffer);
- exit(1);
- }
-
- while(( c = fgetc(in) ) != EOF )
- fputc(c, out);
-
- fclose(out);
- fclose(in);
- }
-
- if((out = fopen(lfilename, "w")) == NULL)
- {
- sprintf(buffer, "cannot open file %s for writing", lfilename);
- perror(buffer);
- exit(1);
- }
-
- if((ret = fwrite(fonttab, sizeof(*fonttab), lfilesize, out)) != lfilesize)
- {
- sprintf(buffer,"error writing file %s, size=%d, ret=%d\n",lfilename,lfilesize, ret);
- perror(buffer);
- exit(1);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * display a string
- *---------------------------------------------------------------------------*/
-void dis_cmd(char *strg)
-{
- move(22,0);
- clrtoeol();
- mvaddstr(22,0,strg);
- refresh();
-}
-
-/*---------------------------------------------------------------------------*
- * clear a command string
- *---------------------------------------------------------------------------*/
-void clr_cmd(void)
-{
- move(22,0);
- clrtoeol();
- refresh();
-}
-
-/*---------------------------------------------------------------------------*
- * move char from src to dest
- *---------------------------------------------------------------------------*/
-void move_ch(int src, int dst)
-{
- unsigned char *s, *d;
- int offset = 0;
-
- if(ch_width == WIDTH16)
- offset = 2;
- else
- offset = 1;
-
- s = &(fonttab[ch_height * offset * src]);
- d = &(fonttab[ch_height * offset * dst]);
-
- bcopy(s, d, (ch_height*offset)); /* src -> dst */
-}
-
-/*---------------------------------------------------------------------------*
- * exchange char's src and dest
- *---------------------------------------------------------------------------*/
-void xchg_ch(int src, int dst)
-{
- unsigned char *s, *d;
- unsigned char buf[32];
- int offset = 0;
-
- if(ch_width == WIDTH16)
- offset = 2;
- else
- offset = 1;
-
- s = &(fonttab[ch_height * offset * src]);
- d = &(fonttab[ch_height * offset * dst]);
-
- bcopy(s, buf, (ch_height*offset)); /* src -> tmp */
- bcopy(d, s, (ch_height*offset)); /* dst -> src */
- bcopy(buf, d, (ch_height*offset)); /* tmp -> dst */
-}
-
-/*---------------------------------------------------------------------------*
- * display the current selected character
- *---------------------------------------------------------------------------*/
-void display(int no)
-{
- unsigned char *fontchar;
- char line[32];
- int ln_no;
- unsigned char hibyte;
- unsigned char lobyte;
- int offset;
- int r;
-
- offset = 0;
- r = 1;
- lobyte = 0;
-
- if(ch_width == WIDTH16)
- fontchar = &(fonttab[ch_height * 2 * no]);
- else
- fontchar = &(fonttab[ch_height * no]);
-
- for (ln_no = 0; ln_no < ch_height; ln_no++)
- {
- hibyte = *(fontchar + (offset++));
-
- if(ch_width == WIDTH16)
- {
- lobyte = *(fontchar + offset++);
- }
-
- strcpy(line,bitmask[(int)((hibyte >> 4) & 0x0f)]);
- strcat(line,bitmask[(int)(hibyte & 0x0f)]);
-
- if(ch_width == WIDTH16)
- {
- strcat(line,bitmask[(int)((lobyte >> 4) & 0x0f)]);
- strcat(line,bitmask[(int)(lobyte & 0x0f)]);
- mvwprintw(ch_win, r, 1, "%16.16s", line);
- }
- else
- {
- mvwprintw(ch_win, r, 1, "%8.8s", line);
- }
- r++;
- }
- wmove(ch_win, 1, 1);
- wrefresh(ch_win);
-}
-
-/*---------------------------------------------------------------------------*
- * save character
- *---------------------------------------------------------------------------*/
-void save_ch(void)
-{
- unsigned char *s;
- int offset = 0;
- int r, c;
- unsigned short byte;
- unsigned short shift;
-
- if(ch_width == WIDTH16)
- offset = 2;
- else
- offset = 1;
-
- s = &(fonttab[ch_height * offset * curchar]);
-
- r = 1;
-
- while(r <= ch_height)
- {
- c = 1;
- byte = 0;
- if(offset == 2)
- shift = 0x8000;
- else
- shift = 0x80;
-
- while(c <= ch_width)
- {
- if(mvwinch(ch_win, r, c) == BLACK)
- byte |= shift;
- shift = (shift >> 1);
- c++;
- }
- *s++ = byte;
- r++;
- }
-}
-
-/*---------------------------------- E O F ----------------------------------*/
-
-
diff --git a/usr.sbin/pcvt/fed/select.c b/usr.sbin/pcvt/fed/select.c
deleted file mode 100644
index e4e44ca..0000000
--- a/usr.sbin/pcvt/fed/select.c
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPER ``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 DEVELOPERS 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.
- */
-
-/*---------------------------------------------------------------------------
- *
- * select.c font editor select character
- * ----------------------------------------------------
- *
- * last edit-date: [Mon Mar 27 16:38:50 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include "fed.h"
-
-int sc, sr, scurchar;
-
-int edit();
-
-void sel_mode(void)
-{
- mvwprintw(cmd_win,1,1,"(E)dit ");
- mvwprintw(cmd_win,2,1,"(M)ove ");
- mvwprintw(cmd_win,3,1,"exchan(G)e ");
- mvwprintw(cmd_win,4,1,"(Q)uit/Save ");
- mvwprintw(cmd_win,5,1,"e(X)it/Undo ");
- mvwprintw(cmd_win,6,1," ");
- mvwprintw(cmd_win,7,1," ");
- mvwprintw(cmd_win,8,1," ");
-
- mvwprintw(cmd_win,9 ,1," ");
- mvwprintw(cmd_win,10,1," ");
- mvwprintw(cmd_win,11,1," ");
- mvwprintw(cmd_win,12,1," ");
- mvwprintw(cmd_win,13,1,"(^P)rev Line");
- mvwprintw(cmd_win,14,1,"(^N)ext Line");
- mvwprintw(cmd_win,15,1,"(^F)orwd Col");
- mvwprintw(cmd_win,16,1,"(^B)ack Col");
- wrefresh(cmd_win);
-}
-
-int selectc()
-{
- int c, r;
- int ret;
- char h, l;
- unsigned int k_ch;
-
- c = (curchar / 16);
- r = (curchar % 16);
-
- for(;;)
- {
- dis_cmd(" Select Character");
-
- sel_mode();
-
- curchar = r + (c*16);
-
- display(curchar);
-
- h = ((mvwinch(set_win,(r+1),((c*2)+1))) & A_CHARTEXT);
- l = ((mvwinch(set_win,(r+1),((c*2)+2))) & A_CHARTEXT);
- wattron(set_win,A_REVERSE);
- mvwprintw(set_win,(r+1),((c*2)+1),"%c%c",h,l);
- wattroff(set_win,A_REVERSE);
- wmove(set_win,(r+1),((c*2)+1));
- wrefresh(set_win);
-
- k_ch = wgetch(set_win);
-
- switch(k_ch)
- {
- case K_LEFT:
- case KEY_LEFT:
- if(c > 0)
- {
- normal_set(r,c);
- c--;
- }
- break;
-
- case K_DOWN:
- case KEY_DOWN:
- if(r < 15)
- {
- normal_set(r,c);
- r++;
- }
- break;
-
- case K_UP:
- case KEY_UP:
- if(r > 0)
- {
- normal_set(r,c);
- r--;
- }
- break;
-
- case K_RIGHT:
- case KEY_RIGHT:
- if(c < 15)
- {
- normal_set(r,c);
- c++;
- }
- break;
-
- case 'e':
- case 'E':
- edit_mode();
- dis_cmd(" Edit Character");
- display(curchar);
- ret = edit();
- if(ret == 1)
- save_ch();
- break;
-
- case 'g':
- case 'G':
- dis_cmd(" Exchange: select Destination, then press RETURN or any other Key to ABORT");
- sr = r;
- sc = c;
- scurchar = curchar;
- if((curchar = sel_dest()) == -1)
- { /* failsafe */
- r = sr;
- c = sc;
- curchar = scurchar;
- }
- else
- { /* valid return */
- normal_set(r,c);
- c = (curchar / 16);
- r = (curchar % 16);
- xchg_ch(scurchar,curchar);
- }
- break;
-
- case 'm':
- case 'M':
- dis_cmd(" Move: select Destination, then press RETURN or any other Key to ABORT");
- sr = r;
- sc = c;
- scurchar = curchar;
- if((curchar = sel_dest()) == -1)
- { /* failsafe */
- r = sr;
- c = sc;
- curchar = scurchar;
- }
- else
- { /* valid return */
- normal_set(r,c);
- c = (curchar / 16);
- r = (curchar % 16);
- move_ch(scurchar,curchar);
- }
- break;
-
- case 'q':
- case 'Q':
- normal_set(r,c);
- wrefresh(set_win);
- return(1);
- break;
-
- case 'x':
- case 'X':
- normal_set(r,c);
- wrefresh(set_win);
- return(0);
- break;
-
- case 0x0c:
- wrefresh(curscr);
- break;
-
- default:
- beep();
- break;
-
- }
- }
-}
-
-void normal_set(int r, int c)
-{
- char h, l;
-
- h = ((mvwinch(set_win,(r+1),((c*2)+1))) & A_CHARTEXT);
- l = ((mvwinch(set_win,(r+1),((c*2)+2))) & A_CHARTEXT);
- wattroff(set_win,A_REVERSE);
- mvwprintw(set_win,(r+1),((c*2)+1),"%c%c",h,l);
- wmove(set_win,(r+1),((c*2)+1));
-}
-
-int sel_dest(void)
-{
- int c, r;
- char h, l;
- unsigned int k_ch;
-
- c = (curchar / 16);
- r = (curchar % 16);
-
- for(;;)
- {
-
- curchar = r + (c*16);
-
- display(curchar);
-
- h = ((mvwinch(set_win,(r+1),((c*2)+1))) & A_CHARTEXT);
- l = ((mvwinch(set_win,(r+1),((c*2)+2))) & A_CHARTEXT);
- wattron(set_win,A_UNDERLINE);
- mvwprintw(set_win,(r+1),((c*2)+1),"%c%c",h,l);
- wattroff(set_win,A_UNDERLINE);
- wmove(set_win,(r+1),((c*2)+1));
- wrefresh(set_win);
-
- k_ch = wgetch(set_win);
-
- switch(k_ch)
- {
- case K_LEFT:
- case KEY_LEFT:
- if(c > 0)
- {
- normal_uset(r,c);
- c--;
- }
- break;
-
- case K_DOWN:
- case KEY_DOWN:
- if(r < 15)
- {
- normal_uset(r,c);
- r++;
- }
- break;
-
- case K_UP:
- case KEY_UP:
- if(r > 0)
- {
- normal_uset(r,c);
- r--;
- }
- break;
-
- case K_RIGHT:
- case KEY_RIGHT:
- if(c < 15)
- {
- normal_uset(r,c);
- c++;
- }
- break;
-
- case '\r':
- case '\n':
- normal_uset(r,c);
- return(r + (c*16));
-
- case 0x0c:
- wrefresh(curscr);
- break;
-
- default:
- normal_uset(r,c);
- return(-1);
- }
- }
-}
-
-void normal_uset(int r, int c)
-{
- char h, l;
-
- h = ((mvwinch(set_win,(r+1),((c*2)+1))) & A_CHARTEXT);
- l = ((mvwinch(set_win,(r+1),((c*2)+2))) & A_CHARTEXT);
-
- wattroff(set_win,A_UNDERLINE);
- mvwprintw(set_win,(r+1),((c*2)+1),"%c%c",h,l);
- wmove(set_win,(r+1),((c*2)+1));
-
- if((r==sr) && (c==sc))
- {
- wattron(set_win,A_REVERSE);
- mvwprintw(set_win,(r+1),((c*2)+1),"%c%c",h,l);
- wattroff(set_win,A_REVERSE);
- wmove(set_win,(r+1),((c*2)+1));
- }
-}
-
-
-
-/*---------------------------------- E O F ----------------------------------*/
diff --git a/usr.sbin/pcvt/fontedit/Makefile b/usr.sbin/pcvt/fontedit/Makefile
deleted file mode 100644
index 4851169..0000000
--- a/usr.sbin/pcvt/fontedit/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-PROG= fontedit
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/fontedit/README b/usr.sbin/pcvt/fontedit/README
deleted file mode 100644
index 1854129..0000000
--- a/usr.sbin/pcvt/fontedit/README
+++ /dev/null
@@ -1,36 +0,0 @@
-When I first saw this posted to rn, I tried to compile this on a machine
-running BSD UNIX. Much to my dissapointment, It said "unable to find
-/usr/include/termio.h" and thus it sat for a couple months. I was able to
-compile it on a 3b5, but I didn't have a vt220 hooked up to it. I was doing
-some unrelated work with ioctl calls and finally realized that it would not be
-too hard to convert it from System V to BSD. It also looked kind of strange
-with the cursor on, so I turned this off. To implement this, compile with
-the "-DCURFIX" flag in the Makefile.
-I am working on a new version that uses curses and that would enable you to
-change the file that your are working on without leaving the program.
-I thought I'd post it as it is now, since it has a lot of uses right away.
-Imagine changing your favorite game to have objects that look like what they
-are instead of the regular characters. Also, I think people should post their
-own character sets, if they come up with some neat stuff.
- Please send any comments or suggestions to:
-
- UUCP : ..!harvard!bu-cs!bucsb!eap
- ARPANET: eap@bucsb.bu.edu
- CSNET : eap%bucsb@bu-cs
-
- Have fun,
-
- - Eric Pearce
- Boston University
-
-
-
-
-
-
-
-
-
-
-
-
diff --git a/usr.sbin/pcvt/fontedit/fontedit.1 b/usr.sbin/pcvt/fontedit/fontedit.1
deleted file mode 100644
index d0b7515..0000000
--- a/usr.sbin/pcvt/fontedit/fontedit.1
+++ /dev/null
@@ -1,92 +0,0 @@
-.\" $FreeBSD$
-.\"
-.Dd January 16, 2001
-.Dt FONTEDIT 1
-.Os
-.Sh NAME
-.Nm fontedit
-.Nd "edit fonts"
-.Sh SYNOPSIS
-.Nm
-.Ar file
-.Sh DESCRIPTION
-The
-.Nm
-utility is used to edit the down line reloadable character set (DRCS) of a
-.Tn VT220
-terminal.
-The editor has two display areas, one for displaying the
-entry currently being manipulated, and one for displaying the complete
-DRCS.
-Commands to the editor take the form of function keys.
-.Pp
-The
-.Nm
-utility
-takes one command line parameter, a
-.Ar file
-name.
-This file is used to save the character set.
-If the file exists when
-.Nm
-is invoked, it is read in to initialize the DRCS.
-The file is written to when
-.Nm
-exits.
-.Pp
-Commands to
-.Nm
-take the form of function keys.
-The current definitions are:
-.Bl -tag -width "Cursors"
-.It Ic HELP
-Display a help screen.
-.It Ic F6
-Turn the pixel under the cursor on.
-.It Ic F7
-Turn the pixel under the cursor off.
-.It Ic F13
-Clear the display area.
-.It Ic Find
-Save the current font in the font table.
-Update the DRCS display.
-.It Ic Select
-Extract the entry selected by the cursor in the DRCS display.
-.It Ic Prev
-Move the cursor to the previous entry in the DRCS display.
-.It Ic Next
-Move the cursor to the next entry in the DRCS display.
-.It Ic Insert
-Insert a blank line at the current cursor position.
-The bottom row is lost.
-.It Ic Remove
-Remove the row at the current cursor position.
-All rows below the
-current one are shifted up.
-.It Ic Cursors
-Move the cursor in the main display area.
-.El
-.Pp
-If the screen gets garbled, press
-.Aq control\-L .
-.Pp
-To exit
-.Nm ,
-press
-.Aq control\-D .
-The DRCS will be saved in
-.Ar file .
-To exit without saving the DRCS, hit interrupt (usually
-DEL).
-.Sh DIAGNOSTICS
-The
-.Nm
-utility
-will issue a warning when the entry being worked on is not saved, and
-some potentially destructive command, like
-.Ic Select
-is used.
-To
-override the warning message, immediately reissue the command.
-.Sh AUTHORS
-.An Greg Franks
diff --git a/usr.sbin/pcvt/fontedit/fontedit.c b/usr.sbin/pcvt/fontedit/fontedit.c
deleted file mode 100644
index b1444c6..0000000
--- a/usr.sbin/pcvt/fontedit/fontedit.c
+++ /dev/null
@@ -1,926 +0,0 @@
-/*
- * fontedit
- * Fonteditor for VT220
- *
- * BUGS:
- * o Cursor motion is less than optimal (but who cares at 9600),
- *
- * COMPILE:
- * cc -O fontedit.c -o fontedit
- * (use Makefile)
- *
- * Copyright (c) 1987 by Greg Franks.
- *
- * Permission is granted to do anything you want with this program
- * except claim that you wrote it.
- *
- *
- * REVISION HISTORY:
- *
- * Nov 21, 1987 - Fixed man page to say "Fontedit" instead of "Top"
- * Nov 22, 1987 - Added BSD Compatible ioctl, turned cursor on/off
- * - eap@bucsf.bu.edu
- * $FreeBSD$
- */
-
-void clear_screen();
-#include <stdio.h>
-#ifdef SYSV
-#include <sys/termio.h>
-#endif /* SYSV */
-#ifdef BSD
-#include <sys/ioctl.h>
-#endif /* BSD */
-#if defined (__NetBSD__) || defined (__FreeBSD__)
-#include <sys/termios.h>
-#include <sys/ioctl.h>
-#endif /* __NetBSD__ || __FreeBSD__ */
-#include <signal.h>
-
-#ifdef CURFIX
-#define CURSORON "\033[?25h"
-#define CURSOROFF "\033[?25l"
-#endif /* CURFIX */
-
-#define MAX_ROWS 10
-#define MAX_COLS 8
-
-typedef enum { false, true } bool;
-
-#define KEY_FIND 0x0100
-#define KEY_INSERT 0x0101
-#define KEY_REMOVE 0x0102
-#define KEY_SELECT 0x0103
-#define KEY_PREV 0x0104
-#define KEY_NEXT 0x0105
-#define KEY_F6 0X0106
-#define KEY_F7 0x0107
-#define KEY_F8 0x0108
-#define KEY_F9 0x0109
-#define KEY_F10 0x010a
-#define KEY_F11 0x010b
-#define KEY_F12 0x010c
-#define KEY_F13 0x010d
-#define KEY_F14 0x010e
-#define KEY_HELP 0x010f
-#define KEY_DO 0x0110
-#define KEY_F17 0x0111
-#define KEY_F18 0x0112
-#define KEY_F19 0x0113
-#define KEY_F20 0x0114
-#define KEY_UP 0x0115
-#define KEY_DOWN 0x0116
-#define KEY_RIGHT 0x0117
-#define KEY_LEFT 0x0118
-
-/*
- * Position of main drawing screen.
- */
-
-#define ROW_OFFSET 3
-#define COL_OFFSET 10
-
-/*
- * Position of the DRCS table.
- */
-
-#define TABLE_ROW 4
-#define TABLE_COL 50
-
-/*
- *
- */
-
-#define ERROR_ROW 20
-#define ERROR_COL 40
-
-bool display_table[MAX_ROWS][MAX_COLS];
-
-#define TOTAL_ENTRIES (128 - 32)
-#define SIXELS_PER_CHAR 16
-
-char font_table[TOTAL_ENTRIES][SIXELS_PER_CHAR];
-unsigned int current_entry;
-
-#ifdef SYSV
-struct termio old_stty, new_stty;
-#endif /* SYSV */
-#ifdef BSD
-struct sgttyb old_stty, new_stty;
-#endif /* BSD */
-#if defined (__NetBSD__) || defined (__FreeBSD__)
-struct termios old_stty, new_stty;
-#endif /* __NetBSD__ || __FreeBSD__ */
-FILE * font_file = (FILE *)0;
-
-
-/*
- * Interrupt
- * Exit gracefully.
- */
-
-interrupt()
-{
- void clear_screen();
-#ifdef CURFIX
- printf("%s\n",CURSORON);
-#endif /* CURFIX */
-#ifdef SYSV
- ioctl( 0, TCSETA, &old_stty );
-#endif /* SYSV */
-#ifdef BSD
- ioctl( 0, TIOCSETP, &old_stty );
-#endif /* BSD */
-#if defined (__NetBSD__) || defined (__FreeBSD__)
- ioctl( 0, TIOCSETA, &old_stty );
-#endif /* __NetBSD__ || __FreeBSD__ */
- clear_screen();
- exit( 0 );
-}
-
-
-/*
- * Main
- * Grab input/output file and call main command processor.
- */
-
-main( argc, argv )
-int argc;
-char *argv[];
-{
- void command(), init_restore(), clear_screen();
- void save_table(), get_table(), extract_entry();
-
- if ( argc != 2 ) {
- fprintf( stderr, "usage: fontedit filename\n" );
- exit( 1 );
- }
-
- printf( "Press HELP for help\n" );
- printf( "\033P1;1;2{ @\033\\" ); /* Clear font buffer */
- fflush( stdout );
- sleep( 1 ); /* Let terminal catch up */
- /* otherwise we get frogs */
-
- if ( ( font_file = fopen( argv[1], "r" ) ) == (FILE *)0 ) {
- if ( ( font_file = fopen( argv[1], "w" ) ) == (FILE *)0 ) {
- fprintf( stderr, "Cannot create file %s \n", argv[1] );
- exit( 1 );
- }
- }
- fclose( font_file );
-
- if ( ( font_file = fopen( argv[1], "r" ) ) != (FILE *)0 ) {
- get_table( font_file );
- fclose( font_file );
- }
-
- if ( ( font_file = fopen( argv[1], "r+" ) ) == (FILE *)0 ) {
- fprintf( stderr, "Cannot open %s for writing\n", argv[1] );
- exit( 1 );
- }
-#ifdef CURFIX
- printf("%s\n",CURSOROFF);
-#endif /* CURFIX */
-#ifdef SYSV
- ioctl( 0, TCGETA, &old_stty );
-#endif /* SYSV */
-#ifdef BSD
- ioctl( 0, TIOCGETP, &old_stty );
-#endif /* BSD */
-#if defined (__NetBSD__) || defined (__FreeBSD__)
- ioctl( 0, TIOCGETA, &old_stty );
-#endif /* __NetBSD__ || __FreeBSD__ */
- signal( SIGINT, (void *) interrupt );
- new_stty = old_stty;
-#ifdef SYSV
- new_stty.c_lflag &= ~ICANON;
- new_stty.c_cc[VMIN] = 1;
- ioctl( 0, TCSETA, &new_stty );
-#endif /* SYSV */
-#if defined (__NetBSD__) || defined (__FreeBSD__)
- new_stty.c_lflag &= ~ICANON;
- new_stty.c_lflag &= ~ECHO;
- new_stty.c_cc[VMIN] = 1;
- ioctl( 0, TIOCSETA, &new_stty );
-#endif /* __NetBSD__ || __FreeBSD__ */
-#ifdef BSD
- new_stty.sg_flags |= CBREAK;
- new_stty.sg_flags &= ~ECHO;
- ioctl( 0, TIOCSETP, &new_stty );
-#endif /* BSD */
- current_entry = 1;
- extract_entry( current_entry );
- init_restore();
- command();
-#ifdef SYSV
- ioctl( 0, TCSETA, &old_stty );
-#endif /* SYSV */
-#ifdef BSD
- ioctl( 0, TIOCSETP, &old_stty );
-#endif /* BSD */
-#if defined (__NetBSD__) || defined (__FreeBSD__)
- ioctl( 0, TIOCSETA, &old_stty );
-#endif /* __NetBSD__ || __FreeBSD__ */
- clear_screen();
-
- /* Overwrite the old file. */
-
- fseek( font_file, 0L, 0 );
- save_table( font_file );
- fclose( font_file );
-#ifdef CURFIX
- printf("%s\n",CURSORON);
-#endif /* CURFIX */
-}
-
-
-
-/*
- * Command
- * Process a function key.
- *
- * The user cannot fill in slots 0 or 95 (space and del respecitively).
- */
-
-void
-command()
-{
- register int c;
- register int row, col;
- register int i, j;
- bool change, error, override;
-
- void build_entry(), extract_entry(), send_entry(), print_entry();
- void highlight(), draw_current(), init_restore(), help();
- void warning();
-
- change = false;
- error = false;
- override = false;
- row = 0; col = 0;
- highlight( row, col, true );
-
- for ( ;; ) {
- c = get_key();
- highlight( row, col, false ); /* turn cursor off */
-
- if ( error ) {
- move ( ERROR_ROW, ERROR_COL );
- printf( "\033[K" ); /* Clear error message */
- move ( ERROR_ROW+1, ERROR_COL );
- printf( "\033[K" ); /* Clear error message */
- error = false;
- } else {
- override = false;
- }
-
- switch ( c ) {
-
- case KEY_FIND: /* update DRCS */
- if ( !change && !override ) {
- warning( "No changes to save" );
- override = true;
- error = true;
- } else {
- build_entry( current_entry );
- send_entry( current_entry );
- print_entry( current_entry, true );
- change = false;
- }
- break;
-
- case KEY_F6: /* Turn on pixel */
- change = true;
- display_table[row][col] = true;
- highlight( row, col, false );
- col = ( col + 1 ) % MAX_COLS;
- if ( col == 0 )
- row = ( row + 1 ) % MAX_ROWS;
- break;
-
- case KEY_F7: /* Turn off pixel */
- change = true;
- display_table[row][col] = false;
- highlight( row, col, false );
- col = ( col + 1 ) % MAX_COLS;
- if ( col == 0 )
- row = ( row + 1 ) % MAX_ROWS;
- break;
-
- case KEY_INSERT: /* Insert a blank row */
- change = true;
- for ( j = 0; j < MAX_COLS; ++j ) {
- for ( i = MAX_ROWS - 1; i > row; --i ) {
- display_table[i][j] = display_table[i-1][j];
- }
- display_table[row][j] = false;
- }
- draw_current();
- break;
-
- case KEY_REMOVE: /* Remove a row */
- change = true;
- for ( j = 0; j < MAX_COLS; ++j ) {
- for ( i = row; i < MAX_ROWS - 1; ++i ) {
- display_table[i][j] = display_table[i+1][j];
- }
- display_table[MAX_ROWS-1][j] = false;
- }
- draw_current();
- break;
-
- case KEY_F13: /* Clear buffer */
- if ( change && !override ) {
- warning( "Changes not saved" );
- error = true;
- override = true;
- } else {
- for ( j = 0; j < MAX_COLS; ++j ) {
- for ( i = 0; i < MAX_ROWS; ++i ) {
- display_table[i][j] = false;
- }
- }
- draw_current();
- }
- break;
-
- case KEY_SELECT: /* Select font from DRCS */
- if ( change && !override ) {
- warning( "Changes not saved" );
- error = true;
- override = true;
- } else {
- extract_entry( current_entry );
- draw_current();
- }
- break;
-
- case KEY_PREV: /* Move to prev entry in DRCS */
- if ( change && !override ) {
- warning( "Changes not saved" );
- override = true;
- error = true;
- } else {
- print_entry( current_entry, false );
- current_entry = current_entry - 1;
- if ( current_entry == 0 )
- current_entry = TOTAL_ENTRIES - 2;
- print_entry( current_entry, true );
- }
- break;
-
- case KEY_NEXT: /* Move to next entry in DRCS */
- if ( change && !override ) {
- warning( "Changes not saved" );
- override = true;
- error = true;
- } else {
- print_entry( current_entry, false );
- current_entry = current_entry + 1;
- if ( current_entry == TOTAL_ENTRIES - 1 )
- current_entry = 1;
- print_entry( current_entry, true );
- }
- break;
-
- case KEY_UP: /* UP one row. */
- if ( row == 0 )
- row = MAX_ROWS;
- row = row - 1;
- break;
-
- case KEY_DOWN: /* Guess. */
- row = ( row + 1 ) % MAX_ROWS;
- break;
-
- case KEY_RIGHT:
- col = ( col + 1 ) % MAX_COLS;
- break;
-
- case KEY_LEFT:
- if ( col == 0 )
- col = MAX_COLS;
- col = col - 1;
- break;
-
- case KEY_HELP: /* Display helpful info */
- clear_screen();
- help();
- c = getchar();
- init_restore();
- break;
-
- case '\004': /* All done! */
- return;
-
- case '\f': /* Redraw display */
- init_restore();
- break;
-
- default: /* user is a klutzy typist */
- move ( ERROR_ROW, ERROR_COL );
- printf( "Unknown key: " );
- if ( c < 0x20 ) {
- printf( "^%c", c );
- } else if ( c < 0x0100 ) {
- printf( "%c", c );
- } else {
- printf( "0x%04x", c );
- }
- fflush( stdout );
- error = true;
- }
-
- highlight( row, col, true ); /* turn cursor on */
- }
-}
-
-
-
-char *key_table[] = {
- "\033[1~", /* Find */
- "\033[2~", /* Insert */
- "\033[3~", /* Remove */
- "\033[4~", /* Select */
- "\033[5~", /* Prev */
- "\033[6~", /* Next */
- "\033[17~",
- "\033[18~",
- "\033[19~",
- "\033[20~",
- "\033[21~",
- "\033[23~",
- "\033[24~",
- "\033[25~",
- "\033[26~",
- "\033[28~",
- "\033[29~",
- "\033[31~",
- "\033[32~",
- "\033[33~",
- "\033[34~",
- "\033[A",
- "\033[B",
- "\033[C",
- "\033[D",
- (char *)0 };
-
-/*
- * get_key
- * Convert VT220 escape sequence into something more reasonable.
- */
-
-int
-get_key()
-{
- register char *p;
- char s[10];
- register int i, j;
-
- p = s;
- for ( i = 0; i < 10; ++i ) {
- *p = getchar();
- if ( i == 0 && *p != '\033' )
- return( (int)*p ); /* Not an escape sequence */
- if ( *p != '\033' && *p < 0x0020 )
- return( (int)*p ); /* Control character */
- *++p = '\0'; /* Null terminate */
- for ( j = 0; key_table[j]; ++j ) {
- if ( strcmp( s, key_table[j] ) == 0 ) {
- return( j | 0x0100 );
- }
- }
- }
- return( -1 );
-}
-
-
-
-/*
- * pad
- * Emit nulls so that the terminal can catch up.
- */
-
-pad()
-{
- int i;
-
- for ( i = 0; i < 20; ++i )
- putchar( '\000' );
- fflush( stdout );
-}
-
-
-
-/*
- * init_restore
- * refresh the main display table.
- */
-
-void
-init_restore()
-{
- register int row, col;
- register int i;
-
- void draw_current(), clear_screen(), print_entry();
-
- clear_screen();
-
- for ( col = 0; col < MAX_COLS; ++col ) {
- move( ROW_OFFSET - 2, col * 3 + COL_OFFSET + 1 );
- printf( "%d", col );
- }
- move( ROW_OFFSET - 1, COL_OFFSET );
- printf( "+--+--+--+--+--+--+--+--+" );
- move( ROW_OFFSET + MAX_ROWS * 2, COL_OFFSET );
- printf( "+--+--+--+--+--+--+--+--+" );
-
- for ( row = 0; row < MAX_ROWS; ++row ) {
- if ( row != 0 && row != 7 ) {
- move( row * 2 + ROW_OFFSET, COL_OFFSET - 2 );
- printf( "%d|", row );
- move( row * 2 + ROW_OFFSET + 1, COL_OFFSET - 1 );
- printf( "|" );
- move( row * 2 + ROW_OFFSET, COL_OFFSET + MAX_COLS * 3 );
- printf( "|" );
- move( row * 2 + ROW_OFFSET + 1, COL_OFFSET + MAX_COLS * 3 );
- printf( "|" );
- } else {
- move( row * 2 + ROW_OFFSET, COL_OFFSET - 2 );
- printf( "%d*", row );
- move( row * 2 + ROW_OFFSET + 1, COL_OFFSET - 1 );
- printf( "*" );
- move( row * 2 + ROW_OFFSET, COL_OFFSET + MAX_COLS * 3 );
- printf( "*" );
- move( row * 2 + ROW_OFFSET + 1, COL_OFFSET + MAX_COLS * 3 );
- printf( "*" );
- }
- }
- draw_current();
-
- move( TABLE_ROW - 1, TABLE_COL - 1 );
- printf( "+-+-+-+-+-+-+-+-+-+-+-+-+" );
- move( TABLE_ROW + 8 * 2 - 1, TABLE_COL - 1 );
- printf( "+-+-+-+-+-+-+-+-+-+-+-+-+" );
- for ( i = 0; i < 8; ++i ) {
- move ( TABLE_ROW + i * 2, TABLE_COL - 1 );
- printf( "|" );
- move ( TABLE_ROW + i * 2 + 1, TABLE_COL - 1 );
- printf( "+" );
- move ( TABLE_ROW + i * 2, TABLE_COL + 12 * 2 - 1);
- printf( "|" );
- move ( TABLE_ROW + i * 2 + 1, TABLE_COL +12 * 2 - 1);
- printf( "+" );
- }
- for ( i = 0; i < TOTAL_ENTRIES; ++i )
- print_entry( i, (i == current_entry) ? true : false );
-}
-
-
-
-/*
- * draw_current
- * Draw the complete current entry.
- */
-
-void
-draw_current()
-{
- register int row, col;
-
- printf( "\033)0" ); /* Special graphics in G1 */
- printf( "\016" ); /* Lock in G1 (SO) */
-
- for ( row = 0; row < MAX_ROWS; ++row ) {
- for ( col = 0; col < MAX_COLS; ++col ) {
- if ( display_table[row][col] ) {
- move( row * 2 + ROW_OFFSET, col * 3 + COL_OFFSET );
- printf( "\141\141\141" );
- move( row * 2 + ROW_OFFSET + 1, col * 3 + COL_OFFSET );
- printf( "\141\141\141" );
- } else {
- move( row * 2 + ROW_OFFSET, col * 3 + COL_OFFSET );
- printf( " " ); /* erase splat */
- move( row * 2 + ROW_OFFSET + 1, col * 3 + COL_OFFSET );
- printf( " " ); /* erase splat */
- }
- }
- pad();
- }
- printf( "\017" ); /* Lock in G0 (SI) */
- fflush( stdout );
-}
-
-
-
-/*
- * highlight
- * Draw the cursor in the main display area.
- */
-
-void
-highlight( row, col, on )
-unsigned int row, col;
-bool on;
-{
-
- printf( "\033)0" ); /* Special graphics in G1 */
- printf( "\016" ); /* Lock in G1 (SO) */
- if ( on ) {
- printf( "\033[7m" ); /* Reverse video cursor */
- }
-
- if ( display_table[row][col] ) {
- move( row * 2 + ROW_OFFSET, col * 3 + COL_OFFSET );
- printf( "\141\141\141" );
- move( row * 2 + ROW_OFFSET + 1, col * 3 + COL_OFFSET );
- printf( "\141\141\141" );
- } else {
- move( row * 2 + ROW_OFFSET, col * 3 + COL_OFFSET );
- printf( " " ); /* erase splat */
- move( row * 2 + ROW_OFFSET + 1, col * 3 + COL_OFFSET );
- printf( " " ); /* erase splat */
- }
- pad();
- printf( "\017" ); /* Lock in G0 (SI) */
- printf( "\033[0m" ); /* normal video */
- printf( "\b" ); /* Back up one spot */
- fflush( stdout );
-}
-
-
-
-/*
- * Clear_screen
- */
-
-void
-clear_screen()
-{
- printf( "\033[H\033[J" ); /* Clear screen. */
- fflush( stdout );
-}
-
-
-
-/*
- * move
- */
-
-move( y, x )
-int y, x;
-{
- printf( "\033[%d;%df", y, x );
-}
-
-
-
-/*
- * Build_entry
- * Convert the bit pattern used in the main display area into something
- * that the vt220 can digest - namely sixels...
- */
-
-void
-build_entry( entry_no )
-unsigned int entry_no;
-{
- register int row, col;
- register unsigned int mask;
-
- for ( col = 0; col < 8; ++col ) {
-
- /* Top set of sixels */
-
- mask = 0;
- for ( row = 5; row >= 0; --row ) {
- mask = mask << 1;
- if ( display_table[row][col] )
- mask |= 1;
- }
- font_table[entry_no][col] = mask + 077;
-
- /* Bottom set of sixels */
-
- mask = 0;
- for ( row = 9; row >= 6; --row ) {
- mask = mask << 1;
- if ( display_table[row][col] )
- mask |= 1;
- }
- font_table[entry_no][col+8] = mask + 077;
- }
-
-}
-
-
-
-/*
- * Extract_engry
- * convert sixel representation into an array of bits.
- */
-
-void
-extract_entry( entry_no )
-unsigned int entry_no;
-{
- register int row, col;
- register unsigned int mask;
-
- for ( col = 0; col < 8; ++col ) {
-
- /* Top set of sixels */
-
- mask = font_table[entry_no][col];
- if ( mask >= 077 )
- mask -= 077;
- else
- mask = 0; /* Bogus entry */
-
- for ( row = 0; row <= 5; ++row ) {
- display_table[row][col] = (bool)(mask & 0x0001);
- mask = mask >> 1;
- }
-
- /* Bottom set of sixels */
-
- mask = font_table[entry_no][col+8];
- if ( mask >= 077 )
- mask -= 077;
- else
- mask = 0;
-
- for ( row = 6; row <= 9; ++row ) {
- display_table[row][col] = (bool)(mask & 0x0001);
- mask = mask >> 1;
- }
- }
-
-}
-
-
-
-/*
- * Send_entry
- * Emit the stuff used by the VT220 to load a character into the
- * DRCS. We could, of course, send more than one entry at a time...
- */
-
-void
-send_entry( entry_no )
-int entry_no;
-{
- register char *fp = font_table[entry_no];
-
- printf( "\033P1;%d;1;0;0;0{ @%c%c%c%c%c%c%c%c/%c%c%c%c%c%c%c%c\033\\",
- entry_no,
- fp[ 0], fp[ 1], fp[ 2], fp[ 3], fp[ 4], fp[ 5], fp[ 6], fp[ 7],
- fp[ 8], fp[ 9], fp[10], fp[11], fp[12], fp[13], fp[14], fp[15] );
-}
-
-
-
-/*
- * Print_entry
- * The terminal normally has G0 in GL. We don't want to change
- * this, nor do we want to use GR. Sooooo send out the necessary
- * magic for shifting in G2 temporarily for the character that we
- * want to display.
- */
-
-void
-print_entry( entry_no, highlight )
-register unsigned int entry_no;
-bool highlight;
-{
-
- register int y, x;
-
- y = entry_no & 0x07;
- x = entry_no >> 3 & 0x1f;
- entry_no += 32; /* Map up to G set */
-
- move( y * 2 + TABLE_ROW, x * 2 + TABLE_COL );
-
- if ( highlight )
- printf( "\033[7m" );
-
- printf( "\033* @" ); /* select DRCS into G2 */
- printf( "\033N" ); /* select single shift */
- printf( "%c", entry_no ); /* Draw the character */
-
- if ( highlight )
- printf( "\033[0m" );
-}
-
-
-
-/*
- * Save_table
- * Save a font table
- */
-
-void
-save_table( font_file )
-FILE *font_file;
-{
- register char *fp;
- register int i;
-
- for ( i = 0; i < TOTAL_ENTRIES; ++i ) {
- fp = font_table[i];
- fprintf( font_file, "\033P1;%d;1;0;0;0{ @%c%c%c%c%c%c%c%c/%c%c%c%c%c%c%c%c\033\\\n",
- i,
- fp[ 0], fp[ 1], fp[ 2], fp[ 3], fp[ 4], fp[ 5], fp[ 6], fp[ 7],
- fp[ 8], fp[ 9], fp[10], fp[11], fp[12], fp[13], fp[14], fp[15] );
- }
-}
-
-
-
-/*
- * Get_table
- * Extract font table entries from a file
- */
-
-void
-get_table( font_file )
-FILE *font_file;
-{
- char s[256];
- register char *p;
- char *fp;
- int i;
- register int j;
-
- while( fgets( s, 255, font_file ) ) {
- if ( strncmp( s, "\033P1;", 4 ) != 0 )
- continue; /* Bogus line */
- p = &s[4];
- if ( sscanf( p, "%d", &i ) != 1 )
- continue; /* Illegal entry number */
-
- if ( i <= 0 || TOTAL_ENTRIES <= i )
- continue; /* Bogues entry */
-
- fp = font_table[i];
-
- while ( *p && *p != '@' )
- ++p; /* Skip to font definition */
- if ( ! *p++ )
- continue; /* Skip @ */
-
- for ( j = 0; *p && *p != '\033' && j < 16; ++j, ++p ) {
- if ( *p == '/' ) {
- j = 8;
- ++p;
- }
- fp[j] = *p;
- }
- send_entry( i );
- }
-}
-
-
-
-/*
- * Help
- * Print out help information.
- */
-
-void
-help()
-{
- printf( "Font editor\n\n" );
- printf( "F6 - Pixel on\n" );
- printf( "F7 - Pixel off\n" );
- printf( "F13 - Clear display area\n" );
- printf( "HELP - This screen\n" );
- printf( "FIND - Update font table\n" );
- printf( "INSERT - Insert a blank row\n" );
- printf( "REMOVE - Remove a row\n" );
- printf( "SELECT - Select current font table entry\n" );
- printf( "PREV - Move to previous font table entry\n" );
- printf( "NEXT - Move to next font table entry\n" );
- printf( "^D - Exit\n" );
- printf( "\n\n\n\nPress any key to continue\n" );
-}
-
-
-
-/*
- * Warning
- * Issue a warning to the regarding the current status.
- */
-
-void
-warning( s )
-char *s;
-{
- move( ERROR_ROW, ERROR_COL );
- printf( "Warning: %s!\n", s );
- move( ERROR_ROW+1, ERROR_COL );
- printf( " Reissue command to override\n" );
-}
diff --git a/usr.sbin/pcvt/fonts/COPYRIGHT b/usr.sbin/pcvt/fonts/COPYRIGHT
deleted file mode 100644
index 175f7b8..0000000
--- a/usr.sbin/pcvt/fonts/COPYRIGHT
+++ /dev/null
@@ -1,38 +0,0 @@
-The font files:
-
- vt100pc.814.uu, vt100sg.814.uu, vt220h.808.uu, vt220h.810.uu,
- vt220h.814.uu, vt220h.816.uu, vt220l.808.uu, vt220l.810.uu,
- vt220l.814.uu and vt220l.816.uu
-
-in this directory are
-
- Copyright (c) 1992, 1993, 1994 Hellmuth Michaelis and Joerg Wunsch
-
- 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 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.
-
diff --git a/usr.sbin/pcvt/fonts/Makefile b/usr.sbin/pcvt/fonts/Makefile
deleted file mode 100644
index 8af01cc..0000000
--- a/usr.sbin/pcvt/fonts/Makefile
+++ /dev/null
@@ -1,14 +0,0 @@
-# $FreeBSD$
-
-.SUFFIXES: .uu
-.uu:
- rm -f ${.TARGET}
- uudecode ${.IMPSRC}
-
-FILES= vt220h.808 vt220h.810 vt220h.814 vt220h.816 \
- vt220l.808 vt220l.810 vt220l.814 vt220l.816
-#FILES+= vt100pc.814 vt100sg.814
-FILESDIR= ${FONTDIR}
-CLEANFILES= ${FILES}
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/fonts/vt100pc.814.uu b/usr.sbin/pcvt/fonts/vt100pc.814.uu
deleted file mode 100644
index 470f9c9..0000000
--- a/usr.sbin/pcvt/fonts/vt100pc.814.uu
+++ /dev/null
@@ -1,83 +0,0 @@
-begin 644 vt100pc.814
-M`$1D5$Q$`"`@("`^````/$`X!'@`(B(^(B(````\0#@$>``B%`@4(@```'Q`
-M>$!\`"(4"!0B````?$!X0'P`/@@("`@```!\0'A`?``<(B(J'`(``#A$?$1$
-M`"0H,"@D````>$1X1'@`("`@(#X```!X1'A$>``>(!P"/````$1$?$1$`#X(
-M"`@(````0$!`0'P`/B`\("````!$1$0H$``^"`@("````'Q`>$!``#X@/"`@
-M````/$!`0#P`/"(\)"(````\0#@$>``<(B(B'````#Q`.`1X`!P("`@<````
-M>$1$1'@`("`@(#X```!X1$1$>``$#`0$#@```'A$1$1X`!PB#!`^````>$1$
-M1'@`'`(,`AP```!X1$1$>``$"!(^`@```$1D5$Q$`"(D."0B````/$`X!'@`
-M(A0("`@```!\0'A`?``\(CPB/````#Q`0$`\`"(R*B8B````?$!X0'P`(C8J
-M(B(````\0#@$>``B(B(B'````'Q`>$!\`!X@("`>````?$!X0$``'B`<`CP`
-M```\0$Q$/``>(!P"/````'A$>$A$`!X@'`(\````1$1$1#@`'B`<`CP`````
-M```````````````````8/#P\&!@`&!@`````8V-C(@``````````````-C9_
-M-C8V?S8V````#`P^8V%@/@-#8SX,#```````86,&#!@S8P``````'#8V'#MN
-M9F8[`````#`P,&````````````````P8,#`P,#`8#```````&`P&!@8&!@P8
-M`````````&8\_SQF```````````8&!C_&!@8````````````````&!@8,```
-M````````_P`````````````````````8&````````0,&#!@P8$`````````^
-M8V=O>W-C8SX```````P</`P,#`P,/P``````/F,#!@P8,&-_```````^8P,#
-M'@,#8SX```````8.'C9F?P8&#P``````?V!@8'X#`V,^```````<,&!@?F-C
-M8SX``````']C`P8,&!@8&```````/F-C8SYC8V,^```````^8V-C/P,#!CP`
-M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
-M`````'X``'X`````````8#`8#`8,&#!@```````^8V,&#`P`#`P``````#YC
-M8V]O;VY@/@``````"!PV8V-_8V-C``````!^,S,S/C,S,WX``````!XS86!@
-M8&$S'@``````?#8S,S,S,S9\``````!_,3$T/#0Q,7\``````'\Q,30\-#`P
-M>```````'C-A8&!O8S,=``````!C8V-C?V-C8V,``````#P8&!@8&!@8/```
-M````#P8&!@8&9F8\``````!S,S8V/#8V,W,``````'@P,#`P,#$Q?P``````
-MP^?_V\/#P\/#``````!C<WM_;V=C8V,``````!PV8V-C8V,V'```````?C,S
-M,SXP,#!X```````^8V-C8VMO/@8'`````'XS,S,^-C,S<P``````/F-C,!P&
-M8V,^``````#_F9D8&!@8&#P``````&-C8V-C8V-C/@``````P\/#P\/#9CP8
-M``````##P\/#V]O_9F8``````,/#9CP8/&;#PP``````P\/#9CP8&!@\````
-M``#_@X8,&#!AP?\``````#PP,#`P,#`P/```````0&!P.!P.!P,!```````\
-M#`P,#`P,##P````('#9C`````````````````````````````/\`&!@,````
-M`````````````````#P&/F9F.P``````<#`P/#8S,S-N```````````^8V!@
-M8SX```````X&!AXV9F9F.P``````````/F-_8&,^```````<-C(P?#`P,'@`
-M`````````#MF9F8^!F8\````<#`P-CLS,S-S```````,#``<#`P,#!X`````
-M``8&``X&!@8&9F8\````<#`P,S8\-C-S```````<#`P,#`P,#!X`````````
-M`.;_V]O;VP``````````;C,S,S,S```````````^8V-C8SX``````````&XS
-M,S,^,#!X````````.V9F9CX&!@\```````!N.S,P,'@``````````#YC.`YC
-M/@``````"!@8?A@8&!L.``````````!F9F9F9CL``````````,/#PV8\&```
-M````````P\/;V_]F``````````!C-AP<-F,``````````&-C8V,_`P8\````
-M````?V8,&#-_```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
-M&`X8&!AP```````[;@``````````````J@"J`*H`J@"J`*H`J@``/&;"P,#"
-M9CP,!GP```#,S`#,S,S,S'8`````#!@P`'S&_L#&?``````0.&P`>`Q\S,QV
-M``````#,S`!X#'S,S'8`````8#`8`'@,?,S,=@`````X;#@`>`Q\S,QV````
-M`````'C,P,QX&`QX````$#AL`'S&_L#&?```````S,P`?,;^P,9\`````&`P
-M&`!\QO[`QGP``````,S,`'`P,#`P>``````P>,P`<#`P,#!X`````,!@,`!P
-M,#`P,'@`````QL80.&S&QO[&Q@```#AL.``X;,;&_L;&````&#!@`/YB8'Q@
-M8OX`````````;+H2?I"8?@``````/FS,S/[,S,S.`````!`X;`!\QL;&QGP`
-M`````,;&`'S&QL;&?`````!@,!@`?,;&QL9\`````#!XS`#,S,S,S'8`````
-M8#`8`,S,S,S,=@``````QL8`QL;&QGX&#'@``,;&.&S&QL;&;#@`````QL8`
-MQL;&QL;&?``````("'[(R,C(?@@(`````#AL9&#P8&!@YOP``````,9L.!#^
-M$/X0$`````#XS,SXQ,S>S,SF`````!PT,#`P_#`P,#"PX```&#!@`'@,?,S,
-M=@`````,&#``.!@8&!@\`````!@P8`!\QL;&QGP`````&#!@`,S,S,S,=@``
-M````=MP`W&9F9F9F````=MP`QN;V_M[.QL8`````/&QL/@!^```````````X
-M;&PX`'P````````````P,``P,&#&QGP```````````!_8&!@````````````
-M`'\!`0$``````,#`QLS8,&#<A@P8/@``P,#&S-@P9LZ:/@8&````&!@`&!@\
-M/#P8`````````#9LV&PV````````````V&PV;-@``````"*((H@BB"*((H@B
-MB"*(JE2J5*I4JE2J5*I4JE2Z[KKNNNZZ[KKNNNZZ[A@8&!@8&!@8&!@8&!@8
-M&!@8&!@8&/@8&!@8&!@8&!@8&/@8^!@8&!@8&#8V-C8V-C;V-C8V-C8V````
-M`````/XV-C8V-C8``````/@8^!@8&!@8&#8V-C8V]@;V-C8V-C8V-C8V-C8V
-M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^````````-C8V-C8V-OX`
-M```````8&!@8&/@8^`````````````````#X&!@8&!@8&!@8&!@8&!\`````
-M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
-M````````_P```````!@8&!@8&!C_&!@8&!@8&!@8&!@?&!\8&!@8&!@V-C8V
-M-C8V-S8V-C8V-C8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
-M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
-M`````#8V-C8V]P#W-C8V-C8V&!@8&!C_`/\````````V-C8V-C8V_P``````
-M````````_P#_&!@8&!@8`````````/\V-C8V-C8V-C8V-C8V/P```````!@8
-M&!@8'Q@?```````````````?&!\8&!@8&!@`````````/S8V-C8V-C8V-C8V
-M-C;_-C8V-C8V&!@8&!C_&/\8&!@8&!@8&!@8&!@8^``````````````````?
-M&!@8&!@8__________________\`````````__________#P\/#P\/#P\/#P
-M\/#P#P\/#P\/#P\/#P\/#P__________````````````````=MS8V-QV````
-M`````'S&_,;&_,#`0````/[&QL#`P,#`P`````````#^;&QL;&QL``````#^
-MQF`P&#!@QOX``````````'[8V-C8<`````````!F9F9F?&!@P````````';<
-M&!@8&!@``````/PP>,S,S'@P_```````.&S&QO[&QFPX```````X;,;&QFQL
-M;.X``````#Q@,!A\S,S,>```````````?-;6?``````````&#'S.UN9\8,``
-M`````#A@P,#XP,!@.````````'S&QL;&QL;&````````_@``_@``_@``````
-M`#`P,/PP,#``_```````8#`8#!@P8`#\```````8,&#`8#`8`/P```````X:
-M&A@8&!@8&!@8&!@8&!@8&!@86%AP```````P,```_```,#``````````=MP`
-M=MP```````!PV-AP````````````````````&!@`````````````````&```
-M```````>&!@8&!C8V'@X`````-AL;&QL;```````````<-@P8,CX````````
-=```````^/CX^/CX`````````````````````````
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt100sg.814.uu b/usr.sbin/pcvt/fonts/vt100sg.814.uu
deleted file mode 100644
index 24ea4c7..0000000
--- a/usr.sbin/pcvt/fonts/vt100sg.814.uu
+++ /dev/null
@@ -1,83 +0,0 @@
-begin 644 vt100sg.814
-M`$1D5$Q$`"`@("`^````/$`X!'@`(B(^(B(````\0#@$>``B%`@4(@```'Q`
-M>$!\`"(4"!0B````?$!X0'P`/@@("`@```!\0'A`?``<(B(J'`(``#A$?$1$
-M`"0H,"@D````>$1X1'@`("`@(#X```!X1'A$>``>(!P"/````$1$?$1$`#X(
-M"`@(````0$!`0'P`/B`\("````!$1$0H$``^"`@("````'Q`>$!``#X@/"`@
-M````/$!`0#P`/"(\)"(````\0#@$>``<(B(B'````#Q`.`1X`!P("`@<````
-M>$1$1'@`("`@(#X```!X1$1$>``$#`0$#@```'A$1$1X`!PB#!`^````>$1$
-M1'@`'`(,`AP```!X1$1$>``$"!(^`@```$1D5$Q$`"(D."0B````/$`X!'@`
-M(A0("`@```!\0'A`?``\(CPB/````#Q`0$`\`"(R*B8B````?$!X0'P`(C8J
-M(B(````\0#@$>``B(B(B'````'Q`>$!\`!X@("`>````?$!X0$``'B`<`CP`
-M```\0$Q$/``>(!P"/````'A$>$A$`!X@'`(\````1$1$1#@`'B`<`CP`````
-M```````````````````8/#P\&!@`&!@`````8V-C(@``````````````-C9_
-M-C8V?S8V````#`P^8V%@/@-#8SX,#```````86,&#!@S8P``````'#8V'#MN
-M9F8[`````#`P,&````````````````P8,#`P,#`8#```````&`P&!@8&!@P8
-M`````````&8\_SQF```````````8&!C_&!@8````````````````&!@8,```
-M````````_P`````````````````````8&````````0,&#!@P8$`````````^
-M8V=O>W-C8SX```````P</`P,#`P,/P``````/F,#!@P8,&-_```````^8P,#
-M'@,#8SX```````8.'C9F?P8&#P``````?V!@8'X#`V,^```````<,&!@?F-C
-M8SX``````']C`P8,&!@8&```````/F-C8SYC8V,^```````^8V-C/P,#!CP`
-M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
-M`````'X``'X`````````8#`8#`8,&#!@```````^8V,&#`P`#`P``````#YC
-M8V]O;VY@/@``````"!PV8V-_8V-C``````!^,S,S/C,S,WX``````!XS86!@
-M8&$S'@``````?#8S,S,S,S9\``````!_,3$T/#0Q,7\``````'\Q,30\-#`P
-M>```````'C-A8&!O8S,=``````!C8V-C?V-C8V,``````#P8&!@8&!@8/```
-M````#P8&!@8&9F8\``````!S,S8V/#8V,W,``````'@P,#`P,#$Q?P``````
-MP^?_V\/#P\/#``````!C<WM_;V=C8V,``````!PV8V-C8V,V'```````?C,S
-M,SXP,#!X```````^8V-C8VMO/@8'`````'XS,S,^-C,S<P``````/F-C,!P&
-M8V,^``````#_F9D8&!@8&#P``````&-C8V-C8V-C/@``````P\/#P\/#9CP8
-M``````##P\/#V]O_9F8``````,/#9CP8/&;#PP``````P\/#9CP8&!@\````
-M``#_@X8,&#!AP?\``````#PP,#`P,#`P/```````0&!P.!P.!P,!```````\
-M#`P,#`P,##P````('#9C```````````````````````````````````0.'S^
-M_GPX$```````_H*"_H*"_H*"_@````!$1'Q$1``^"`@("````'Q`>$!\`#X@
-M."`@````/$!`0#P`/"(\)"(```!`0$!`?``^(#P@(````'#8V'``````````
-M`````#`P,/PP,#``_`````!$9%1,1``@("`@/@```$1$1"@0`#X("`@(```8
-M&!@8&!@8^`````````````````#X&!@8&!@8`````````!\8&!@8&!@8&!@8
-M&!@8'P```````!@8&!@8&!C_&!@8&!@8``#_````````````````````_P``
-M`````````````````/\```````````````````#_````````````````````
-M_P```!@8&!@8&!@?&!@8&!@8&!@8&!@8&/@8&!@8&!@8&!@8&!@8_P``````
-M``````````#_&!@8&!@8&!@8&!@8&!@8&!@8&!@``!@P8,!@,!@`_```````
-M8#`8#!@P8`#\`````````/YL;&QL;&P````````"!'X($'X@0``````X;&1@
-M\&!@8.;\`````````````!@`````````J@"J`*H`J@"J`*H`J@``````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````````````````````````````````````````````````````````
-M````````&!@`&!@\/#P8``````@(?LC(R,A^"`@`````.&QD8/!@8&#F_```
-M``````````````````````#&;#@0$/X0$!````````````````````````!\
-MQF`X;,;&;#@,QGP```"!F3QF9F8\F8$``````'R"FJ*BHIJ"?``````\;&P^
-M`'X``````````````#9LV&PV````````````````````````````````````
-M```````````````````````````````````````````````````\)"0\````
-M````````&!A^&!@`?@```````'S&!@0,&##&_@``````?,8&!CP&!L9\````
-M````````````````````````9F9F9GQ@8,``````?O3T]'04%!04````````
-M```8&```````````````````````````````"!@X&!@8&!A^`````#AL;#@`
-M?```````````````V&PV;-@```````#`P,;,V#!FSIH^!@8``,#`QLS8,&#<
-MA@P8/@``````-FS8;#8`````````,#``,#!@QL9\````,!@`$#ALQL;^QL8`
-M```,&``0.&S&QO[&Q@```!!LQA`X;,;&_L;&````=MP`$#ALQL;^QL8`````
-MQL80.&S&QO[&Q@```#AL.``X;,;&_L;&```````^;,S,_LS,S,X``````#QF
-MPL#`PF8\#`9\`#`8#`#^8F!\8&+^````&#!@`/YB8'Q@8OX````0;,8`_F)@
-M?&!B_@````#&Q@#^8F!\8&+^````,!@`/!@8&!@8&#P````,&``\&!@8&!@8
-M/````#QF`#P8&!@8&!@\````9F8`/!@8&!@8&#P`````````````````````
-M`';<`,;F]O[>SL;&````8#``.&S&QL;&;#@````,&``X;,;&QL9L.````!!L
-M@CALQL;&QFPX````=MP`.&S&QL;&;#@`````QL8X;,;&QL9L.```````?LS,
-MS,[,S,Q^```````".FS.UM;F;+B```!@,!@`QL;&QL;&?`````8,&`#&QL;&
-MQL9\`````';<`,;&QL;&QGP`````QL8`QL;&QL;&?````,;&`,;&;#@0$!`X
-M`````````````````````````'S&QMS&QOS`P,````!@,!@`>`Q\S,QV````
-M`!@P8`!X#'S,S'8`````$#AL`'@,?,S,=@``````=MP`>`Q\S,QV``````#,
-MS`!X#'S,S'8`````.&PX`'@,?,S,=@````````!LNA)^D)A^`````````'C,
-MP,QX&`QX````8#`8`'S&_L#&?``````,&#``?,;^P,9\`````!`X;`!\QO[`
-MQGP``````,S,`'S&_L#&?`````#`8#``<#`P,#!X``````P8,``X&!@8&#P`
-M````,'C,`'`P,#`P>```````S,P`<#`P,#!X````````````````````````
-M`';<`-QF9F9F9@````!@,!@`?,;&QL9\`````!@P8`!\QL;&QGP`````.&S&
-M`'S&QL;&?```````=MP`?,;&QL9\``````#&Q@!\QL;&QGP``````````'R2
-MDIR0?@````````)\SM;6YGR``````&`P&`#,S,S,S'8`````&#!@`,S,S,S,
-M=@`````P>,P`S,S,S,QV``````#,S`#,S,S,S'8``````,;&`,;&QL9^!@QX
-=````````````````````````````````````````
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt220h.808.uu b/usr.sbin/pcvt/fonts/vt220h.808.uu
deleted file mode 100644
index c9585dc..0000000
--- a/usr.sbin/pcvt/fonts/vt220h.808.uu
+++ /dev/null
@@ -1,49 +0,0 @@
-begin 644 vt220h.808
-M9%1,1"`@(#X\0#@$>"(^(CQ`.`1X-@@V?$!X0'PV"#9\0'A`?#X("'Q`>'P<
-M(BH<.$1\1"PP*"1X1'A$>"`@/GA$>$1^$`P\1$1\1#X("`A`0$!\/B`\($1$
-M*!`^"`@(?$!X0#X@/"`\0$`\/"(\)CQ`.`1X'"(</$`X!'@<"!QX1$1X("`@
-M/GA$1'@$#`0.>$1X'"(,$#YX1'@<`@P"''A$1'@,$CX"9%1,(B0X)"(\0#@$
-M>"(<"'Q`>'P\(CP^/$`\(C(J)B)\0'A`?"(V*CQ`.`1X(B(<?$!X0'P>(!Y\
-M0'A`'B`>/#Q`3#P>(!X\>$1X3!X@'CQ$1#@>(!P"/'"(<(AP#!(,<(APB'`,
-M!`YPB'"(?"0(/'"(<(QB#@(<<(APC'@2/@)PB'"><!P"''"(<(YP/"(<<(AP
-MCG($"`APB'"<<APB''"(<)QR#@(<<(APB'P2'A)PB'"<<AP2''"(<(AP#A`.
-M<(APB'`<$AQPB'"><!P0'G"(<)YP'!`0<(AX"'`,$@QPB'@(<`P$#G"(>`A\
-M)`@\<(AX#&(.`AQPB'@,>!(^`G"(>!YP'`(<<(AX#G`\(AQPB'@><@0("'"(
-M>!QR'"(<<(AX''(.`AQPB'@(?!(>$G"(>!QR'!(<<(AX"'`.$`YPB'@(<!P2
-M''"(>!YP'!`><(AX'G`<$!```'S&QOS`P````,945'P8`'S&!G[&?```8+`8
-M+$V&`````!@X&!H,````_+8V-@0``'SD<.1\````PJ08*L8``$1$*"@0$```
-M$!`H*$1$``#&QL;&QGP```#\!@8&_````'[`P,!^````PD(D&"08`/Z"*#BJ
-M_@``QE14?!@\`````/YL;.X````$_@'^!````"1^@7XD````$!`H1.X`.$2"
-MJKJJ1#@``-QV`/X``/Z"Q,1H:#``&"PL1$:&_@`````VS,PV```8&`!F9@``
-M`!PT,#`PL.`!`@0($"!`@(!`(!`(!`(!`0($"!`@0/\``#\0"`0"`1@8,&`P
-M&!@8&!@,!@P8&!@```X8&!@8&!@8&!@8&`X```!P&!@8&!@8&!@8&!AP```"
-M`@(B$@H&``#NQM;6?```9F8\&'X8`%@D&"0X8`QX`!@`QL9^#'@`P,#XS/C`
-MP%`@4`P\9CP`\&!X;'A@\``.`&9F/!@\````1"@0*$0`_&9F]F9F_`#P$'(6
-M_CINP@``````&`QX&#!@````````````_@```'R"NJJRJH)\`````'@`````
-M``!X"`@``,;&``````````($?AA^($````````#_````````_P```````/\`
-M``````#_````````_P````````#N9F8L&````GS.UN9\@```?-;<T'P``/X`
-M?,;&?`#^`'@,?,QV`,P`S$AX,'@`.&P`QL;&?``<`,;&QL9\`'``QL;&QGP`
-M`CILUM9LN(``?LS.S,Q^`/XX;,;&;#@`.,8X;,9L.``.`#ALQFPX`'``.&S&
-M;#@`9@`\&!@8/``8)``\&!@\``X`/!@8&#P`<``\&!@8/`#&`/YB>&+^`#A$
-M_F)X8OX`<`#^8GAB_@#^`#ALQO[&`#AL$&S&_L8`#@`X;,;^Q@!P`#ALQO[&
-M```<#!X`````````&!@````('CIB>#P$&'@,.`QX````?(*:HJ*:@GP`P]L\
-M9CS;PP``S%1@4$P``'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```
-M?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``
-M,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&
-M8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#``
-M`'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P
-M`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\
-MQF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P
-M``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@
-M,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```
-M?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``
-M,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&
-M8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#``
-M`'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P
-M`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\
-MQF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@,``P
-M``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```?,9@
-M,``P``!\QF`P`#```'S&8#``,```?,9@,``P``!\QF`P`#```'S&8#``,```
-7?,9@,``P``!\QF`P`#```'S&8#``,`!@
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt220h.810.uu b/usr.sbin/pcvt/fonts/vt220h.810.uu
deleted file mode 100644
index 04689b1..0000000
--- a/usr.sbin/pcvt/fonts/vt220h.810.uu
+++ /dev/null
@@ -1,60 +0,0 @@
-begin 644 vt220h.810
-M1&143$0@("`@/CQ`.`1X(B(^(B(\0#@$>"(4"!0B?$!X0'PB%`@4(GQ`>$!\
-M/@@("`A\0'A`?!PB(BH<.$1\1$0D*#`H)'A$>$1X("`@(#YX1'A$>!X@'`(\
-M1$1\1$0^"`@("$!`0$!\/B`\("!$1$0H$#X("`@(?$!X0$`^(#P@(#Q`0$`\
-M/"(\)"(\0#@$>!PB(B(</$`X!'@<"`@(''A$1$1X("`@(#YX1$1$>`0,!`0.
-M>$1$1'@<(@P0/GA$1$1X'`(,`AQX1$1$>`0($CX"1&143$0B)#@D(CQ`.`1X
-M(A0("`A\0'A`?#PB/"(\/$!`0#PB,BHF(GQ`>$!\(C8J(B(\0#@$>"(B(B(<
-M?$!X0'P>("`@'GQ`>$!`'B`<`CP\0$Q$/!X@'`(\>$1X2$0>(!P"/$1$1$0X
-M'B`<`CQPB'"(<`P2$A(,<(APB'`$#`0$#G"(<(AP'"(,$#YPB'"(<!P"#`(<
-M<(APB'`$"!(^`G"(<(AP'A`<`AQPB'"(<!P@/"(<<(APB'`^`@0("'"(<(AP
-M'"(<(AQPB'"(<!PB'@(<<(APB'`,$AX2$G"(<(AP'!(<$AQPB'"(<`X0$!`.
-M<(APB'`<$A(2''"(<(AP'A`<$!YPB'"(<!X0'!`0<(AX"'`,$A(2#'"(>`AP
-M!`P$!`YPB'@(<!PB#!`^<(AX"'`<`@P"''"(>`AP!`@2/@)PB'@(<!X0'`(<
-M<(AX"'`<(!PB''"(>`AP/@($"`APB'@(<!PB'"(<<(AX"'`<(AX"''"(>`AP
-M#!(>$A)PB'@(<!P2'!(<<(AX"'`.$!`0#G"(>`AP'!(2$AQPB'@(<!X0'!`>
-M<(AX"'`>$!P0$```?,;&QOS`P,````#&5%14?!@8`'S&!@9^QL9\``!@L#`8
-M&"Q-A@`````8.!@8&!H,````_+8V-C8&!`````!\Y'#D?`````#"I!@8*L8`
-M``""@D1$*"@0$```$!`H*$1$@H(``,;&QL;&QGP`````_`8&!@;\`````'[`
-MP,#`?@```,)")!@8)!@```#^@B@X*(+^``#&5%14?#@0.````/YL;&QL;.X`
-M````!/X!_@0``````"1^@7XD`````!`0*"A$1.X``#A$@JJZJH)$.````-QV
-M`/X``````/Z"Q,1H:#```!@8+"Q$1H;^```````V2$@V`````!@8``!F9@``
-M`!PT,#`P,+#@```!`@0($"!`@```@$`@$`@$`@$```$"!`@0($#_`````#\0
-M"`0"`0`8&!@P8#`8&!@8&!@8#`8,&!@8&```#A@8&!@8&!@8&!@8&!@8&`X`
-M``!P&!@8&!@8&!@8&!@8&!@8<`````("`B(2"@8``````.[&UM9\``!F9CP8
-M&'X8&`!8)!@8)#A@>`1X`!@P`,;&QGX,>`#`P/C,S/C`P```4"!0&`P\9F8\
-M`/!@>&QX8&#P``8,`&9F/!@8/`````!$*!`H1````/QF9O9F9F;\`/`0<!;N
-M&C9JSH(`````````&`QX&#!@````````````````_@``````?(*ZJKJRJH)\
-M``````!X``````````!X"`@```#&Q@````````````($?@@0?B!`````````
-M`````/\`````````_P````````#_`````````/\`````````_P``````````
-M````[FYF9BP8```"?,[6UN9\@`````!\UM;<T'P``';<`'S&QL9\`';<`'@,
-M?,S,=@#,`,S,2'@P,'@`.&P`QL;&QL9\``P8`,;&QL;&?``P&`#&QL;&QGP`
-M`CILSM;F;+B```!^S,S.S,S,?@!VS#ALQL;&;#@`.,8X;,;&QFPX``X`.&S&
-MQL9L.`!P`#ALQL;&;#@`9@`\&!@8&!@\`!@D`#P8&!@8/``,&``\&!@8&#P`
-M,!@`/!@8&!@\`,8`_F9B>&!B_@`X;`#^8GA@8OX`,!@`_F)X8&+^`';<`!`X
-M;,;^Q@`X;``0.&S&_L8`#!@`$#ALQO[&`&`P`!`X;,;^Q@``#!P,#!X`````
-M`````!@8```````('CID8'@\!!@`>`PX#'@``````'R"FJ*BHIJ"?`##VSQF
-M9CS;PP``````S%1@4$P``'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-M`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@
-M,#``,```?,;&8#`P`#```'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#``
-H`'S&QF`P,``P``!\QL9@,#``,```?,;&8#`P`#```'S&QF`P,``P`#`P
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt220h.814.uu b/usr.sbin/pcvt/fonts/vt220h.814.uu
deleted file mode 100644
index 9d49552..0000000
--- a/usr.sbin/pcvt/fonts/vt220h.814.uu
+++ /dev/null
@@ -1,83 +0,0 @@
-begin 644 vt220h.814
-M`$1D5$Q$`"`@("`^````/$`X!'@`(B(^(B(````\0#@$>``B%`@4(@```'Q`
-M>$!\`"(4"!0B````?$!X0'P`/@@("`@```!\0'A`?``<(B(J'`(``#A$?$1$
-M`"0H,"@D````>$1X1'@`("`@(#X```!X1'A$>``>(!P"/````$1$?$1$`#X(
-M"`@(````0$!`0'P`/B`\("````!$1$0H$``^"`@("````'Q`>$!``#X@/"`@
-M````/$!`0#P`/"(\)"(````\0#@$>``<(B(B'````#Q`.`1X`!P("`@<````
-M>$1$1'@`("`@(#X```!X1$1$>``$#`0$#@```'A$1$1X`!PB#!`^````>$1$
-M1'@`'`(,`AP```!X1$1$>``$"!(^`@```$1D5$Q$`"(D."0B````/$`X!'@`
-M(A0("`@```!\0'A`?``\(CPB/````#Q`0$`\`"(R*B8B````?$!X0'P`(C8J
-M(B(````\0#@$>``B(B(B'````'Q`>$!\`!X@("`>````?$!X0$``'B`<`CP`
-M```\0$Q$/``>(!P"/````'A$>$A$`!X@'`(\````1$1$1#@`'B`<`CP```!P
-MB'"(<``,$A(2#````'"(<(AP``0,!`0.````<(APB'``'"(,$#X```!PB'"(
-M<``<`@P"'````'"(<(AP``0($CX"````<(APB'``'A`<`AP```!PB'"(<``<
-M(#PB'````'"(<(AP`#X"!`@(````<(APB'``'"(<(AP```!PB'"(<``<(AX"
-M'````'"(<(AP``P2'A(2````<(APB'``'!(<$AP```!PB'"(<``.$!`0#@``
-M`'"(<(AP`!P2$A(<````<(APB'``'A`<$!X```!PB'"(<``>$!P0$````'"(
-M>`AP``P2$A(,````<(AX"'``!`P$!`X```!PB'@(<``<(@P0/@```'"(>`AP
-M`!P"#`(<````<(AX"'``!`@2/@(```!PB'@(<``>$!P"'````'"(>`AP`!P@
-M'"(<````<(AX"'``/@($"`@```!PB'@(<``<(APB'````'"(>`AP`!PB'@(<
-M````<(AX"'``#!(>$A(```!PB'@(<``<$AP2'````'"(>`AP``X0$!`.````
-M<(AX"'``'!(2$AP```!PB'@(<``>$!P0'@```'"(>`AP`!X0'!`0````````
-M`'S&QL;&_,#`P``````8V]O;V]M^&!@8````?,8&!G[&QGP``````,#`8#`8
-M'#9C00`````````P<#`P,#08``````````#<9F9F9F8&!@8``````'S&\,#&
-M?`````````#BMAP8.&S&````````@L;&;&PX.!`````````0.#AL;,;&@@``
-M`````,;&QL;&QL9\`````````/P&!@8&_```````````?L#`P,!^````````
-M``#&9CP8/&8\``````#^Q@!L?&P`QOX``````#P8V]O;VWX8/```````_FQL
-M;&QL;&SN````````"`S^`_X,"``````````D9G[#?F8D```````````0$"@H
-M1$3N```````\9L/G_^?#9CP``````````-QV`/X``````````/[&QLQL:#@P
-M````````&#@L;$3&QOX``````````&[8V&X````````````8&```9F8`````
-M```<-#`P,#`PL.`````````!`@0($"!`@````````(!`(!`(!`(!````````
-M``$"!`@0('\````````````_$`@$`@$``!@8&!@8,&`P&!@8&!@8&!@8&!@,
-M!@P8&!@8&!@```X8&!@8&!@8&!@8&!@8&!@8&!@8&!@.``````!P&!@8&!@8
-M&!@8&!@8&!@8&!@8&!@8<````````@("`B(2"@8"``````````!LQM;6UFP`
-M`````,S,>#`P_#`P,```````X'S@P'C`P&`X#'@```P8,`#&QL;&?@8,>```
-M`,#`^,S,^,#`P`````#8<.`P&`P^9F8\``````#P8'AL>&!@8/`````,&`#,
-MS,QX,#`P>`````````!$*!`H1`````````#\9F9F]F9F9OP```#P$'`6_!@P
-M9LZ:/@8&```````````````8#'@`&#!@``````````````````````#^````
-M````````?(*ZJKJRJH)\````````````>````````````````'@("```````
-M`,;&`````````````````````@9^"!!^8$```````````````````/\`````
-M`````````/\``````````````/\``````````````/\``````````````/\`
-M``````````````````#N;F9F;#@````````&?,[>]N9\P```````````?-;6
-MW-!^``````!VW`!\QL;&QGP``````';<`'@,?,S,=@```,S,`,S,2'@P,#!X
-M````.&S&`,;&QL;&QGP````&#!@`QL;&QL;&?````&`P&`#&QL;&QL9\````
-M```&/FS.UM;F;/C``````'[,S,S.S,S,?@```';<`#ALQL;&QFPX````.&S&
-M.&S&QL;&;#@````,&``X;,;&QL9L.````&`P`#ALQL;&QFPX````9F8`/!@8
-M&!@8&#P````\9@`\&!@8&!@8/`````P8`#P8&!@8&!@\````,!@`/!@8&!@8
-M&#P```#&Q@#^9F)X8&)F_@```#ALQ@#^9F!X8&;^````,!@,`/YF8'A@9OX`
-M``!VW``0.&S&QO[&Q@```#ALQA`X;,;&_L;&````#!@`$#ALQL;^QL8````P
-M&``0.&S&QO[&Q@`````,'`P,'@`````````````````8&````````````.`\
-M8,#`P,!@.`QX```\!AP&/`````````````!\@IJBHJ*:@GP```````##VSQF
-M9CS;PP``````````YFQX;&9F``````!\QL9@,#``,#```````'S&QF`P,``P
-M,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```
-M````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```````
-M?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&
-M8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P
-M`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P
-M``````!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P````
-M``!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\
-MQL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@
-M,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``
-M,#```````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#``
-M`````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#``````
-M`'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&
-MQF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P
-M,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P
-M,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```
-M````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```````
-M?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&
-M8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P
-M`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P
-M``````!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P````
-M``!\QL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\
-MQL9@,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@
-M,#``,#```````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``
-M,#```````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#``
-M`````'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#``````
-M`'S&QF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&
-MQF`P,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P
-M,``P,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P
-M,```````?,;&8#`P`#`P``````!\QL9@,#``,#```````'S&QF`P,``P,```
-=````?,;&8#`P`#`P``````!\QL9@,#``,#``````
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt220h.816.uu b/usr.sbin/pcvt/fonts/vt220h.816.uu
deleted file mode 100644
index 401db37..0000000
--- a/usr.sbin/pcvt/fonts/vt220h.816.uu
+++ /dev/null
@@ -1,95 +0,0 @@
-begin 644 vt220h.816
-M``!$9%1,1``@("`@/@``````/$`X!'@`(B(^(B(``````#Q`.`1X`"(4"!0B
-M``````!\0'A`?``B%`@4(@``````?$!X0'P`/@@("`@``````'Q`>$!\`!PB
-M(BH<`@`````X1'Q$1``D*#`H)```````>$1X1'@`("`@(#X``````'A$>$1X
-M`!X@'`(\``````!$1'Q$1``^"`@("```````0$!`0'P`/B`\("```````$1$
-M1"@0`#X("`@(``````!\0'A`0``^(#P@(```````/$!`0#P`/"(\)"(`````
-M`#Q`.`1X`!PB(B(<```````\0#@$>``<"`@('```````>$1$1'@`("`@(#X`
-M`````'A$1$1X``0,!`0.``````!X1$1$>``<(@P0/@``````>$1$1'@`'`(,
-M`AP``````'A$1$1X``0($CX"``````!$9%1,1``B)#@D(@``````/$`X!'@`
-M(A0("`@``````'Q`>$!\`#PB/"(\```````\0$!`/``B,BHF(@``````?$!X
-M0'P`(C8J(B(``````#Q`.`1X`"(B(B(<``````!\0'A`?``>("`@'@``````
-M?$!X0$``'B`<`CP``````#Q`3$0\`!X@'`(\``````!X1'A(1``>(!P"/```
-M````1$1$1#@`'B`<`CP`````<(APB'``#!(2$@P``````'"(<(AP``0,!`0.
-M``````!PB'"(<``<(@P0/@``````<(APB'``'`(,`AP``````'"(<(AP``0(
-M$CX"``````!PB'"(<``>$!P"'```````<(APB'``'"`\(AP``````'"(<(AP
-M`#X"!`@(``````!PB'"(<``<(APB'```````<(APB'``'"(>`AP``````'"(
-M<(AP``P2'A(2``````!PB'"(<``<$AP2'```````<(APB'``#A`0$`X`````
-M`'"(<(AP`!P2$A(<``````!PB'"(<``>$!P0'@``````<(APB'``'A`<$!``
-M`````'"(>`AP``P2$A(,``````!PB'@(<``$#`0$#@``````<(AX"'``'"(,
-M$#X``````'"(>`AP`!P"#`(<``````!PB'@(<``$"!(^`@``````<(AX"'``
-M'A`<`AP``````'"(>`AP`!P@/"(<``````!PB'@(<``^`@0("```````<(AX
-M"'``'"(<(AP``````'"(>`AP`!PB'@(<``````!PB'@(<``,$AX2$@``````
-M<(AX"'``'!(<$AP``````'"(>`AP``X0$!`.``````!PB'@(<``<$A(2'```
-M````<(AX"'``'A`<$!X``````'"(>`AP`!X0'!`0`````````````#YC8V-C
-M?F!@8&```````!C;V]O;VWX8&!@8`````'S&!@9^QL9\`````````,#`8#`8
-M'#9C00```````````#!P,#`P-!@`````````````W&9F9F9F!@8&!@``````
-M``!\Y'#D?````````````.:V'!@X;,8```````````""QD1L*#@0````````
-M````$#@H;$3&@@````````#&QL;&QL;&QGP``````````/P&!@8&_```````
-M``````!^P,#`P'X``````````````,9F/!@\9CP```````#^Q@!L?'QL`,;^
-M```````\&-O;V]O;?A@8/````````/YL;&QL;&QL;.X```````````@,_@/^
-M#`@````````````D9G[#?F8D````````````$!`X*&Q$1.X````````X1(*J
-MNKJJ@D0X````````````W'8`_@``````````````_H+$Q&AH,#``````````
-M`!@8+"Q$1H;^````````````=HB(=@``````````````&!@``&9F````````
-M```,'A@8&!@8&'@P```````````!`@0($"!`@```````````@$`@$`@$`@$`
-M```````````!`@0($"!_```````````````_$`@$`@$````8&!@8&!@P8#`8
-M&!@8&!@8&!@8&!@8#`8,&!@8&!@8&```#A@8&!@8&!@8&!@8&!@8&!@8&!@8
-M&!@8&`X```````!P&!@8&!@8&!@8&!@8&!@8&!@8&!@8&!@8<``````````"
-M`@("(A(*!@(``````````````&S&UM9L````````9F9F/!@8?A@8&```````
-M<#YP8#Q@8#`<!CP`````````#!@P`,;&QL9^!@QX````P,#XS,S,^,#`P```
-M`````+!@X+`8##YF9CP```````#P8'QF9GQ@8&#P``````P8`,S,S'@P,#`P
-M>```````````1"@0*$0```````````#\9F9F]F9F9F;\`````.`0<!#F#!@P
-M9LJ2/@(``````````````````!@,>```&#!@````````````````````````
-M``#^`````````````'R"NJJJLJJJ@GP``````````````'@`````````````
-M`````'@("`````````#&Q@```````````````````````@9^"!!^8$``````
-M````````````````_P````````````````#_`````````````````/\`````
-M````````````_P````````````````#_````````````````````````YF9B
-M8C08```````````&?,[>]N9\P`````````````!\UM;<T'X`````````=MP`
-M?,;&QL9\`````````';<`'@,?,S,=@````#,S`#,S,QX,#`P,'@`````.&S&
-M`,;&QL;&QL9\``````8,&`#&QL;&QL;&?`````!@,!@`QL;&QL;&QGP`````
-M```&/FS.WO;F;/C`````````?MC8V-[>V-C8?@````!VW``X;,;&QL;&;#@`
-M````.&S&.&S&QL;&QFPX``````P8`#ALQL;&QL9L.`````!@,``X;,;&QL;&
-M;#@`````9F8`/!@8&!@8&!@\`````!@\9@`\&!@8&!@8/``````&#!@`/!@8
-M&!@8&#P`````8#`8`#P8&!@8&!@\`````,;&`/YB8&!\8&!B_@`````X;,8`
-M_F)@?&!@8OX`````8#`8`/YB8'Q@8&+^`````';<`!`X;,;&_L;&Q@`````X
-M;,80.&S&QO[&QL8`````&#!@$#ALQL;^QL;&`````#`8#!`X;,;&_L;&Q@``
-M````"!@("!P`````````````````````&!@`````````````X#Q@P,#`8#@,
-M>```````.`08!#@```````````````!\@IJBHJ*BFH)\``````````##VSQF
-M9CS;PP``````````````YFYX;&8```````!\QL9@,#`P`#`P````````````
-M`````````````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````
-M?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````
-M````?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P
-M````````?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P
-M`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@
-M,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\
-MQL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``,#``````
-M``!\QL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``,#``
-M``````!\QL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``
-M,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P
-M,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&
-MQF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P,```````
-M`'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P,```
-M`````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P
-M,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P
-M,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&
-M8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````
-M?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````
-M````?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P
-M````````?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P
-M`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@
-M,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``,#````````!\
-MQL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``,#``````
-M``!\QL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``,#``
-M``````!\QL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P,#``
-M,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&QF`P
-M,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P,````````'S&
-MQF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P,```````
-M`'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P,```
-M`````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P,``P
-M,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&8#`P
-M,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````?,;&
-M8#`P,``P,````````'S&QF`P,#``,#````````!\QL9@,#`P`#`P````````
-M?,;&8#`P,``P,````````'S&QF`P,#``,#``````````````````````````
-!`,;&
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt220l.808.uu b/usr.sbin/pcvt/fonts/vt220l.808.uu
deleted file mode 100644
index 02ad944..0000000
--- a/usr.sbin/pcvt/fonts/vt220l.808.uu
+++ /dev/null
@@ -1,49 +0,0 @@
-begin 644 vt220l.808
-M``````````!^@:6!O9F!?G[_V__#Y_]^;/[^_GPX$``0.'S^?#@0`#A\./[^
-MUA`X$#A\_OY\$#@``!@\/!@``/__Y\/#Y___/&;#P\/#9CS_PYF]O9G#_Q\'
-M#7G-S,QX/&9F9CP8?A@X/#8R-'#PX']C?V-C9^;`&-L\Y^<\VQB`X/C^^."`
-M``(./OX^#@(`&#Q^&!A^/!AF9F9F9@!F`'_;VWL;&QL`?L/\9F8_PWX``'Y^
-M?@```!@\?AA^/!C_&#Q^&!@8&``8&!@8?CP8```8#/X,&````#!@_F`P````
-M`&!@8'X````D9O]F)````!`X?/[^````_OY\.!``````````````&#P\&!@`
-M&`!L;&P``````&QL_FS^;&P`,'S`?`;\,```QLP8,&;&`#AL.';<SGL`8&#`
-M```````8,&!@8#`8`#`8#`P,&#```&PX_CAL````,##\,#``````````,#!@
-M````_````````````!@8``8,&#!@P(``?,[>]N;&?``P<+`P,##\`'C,##A@
-MP/P`>,P,.`S,>``</&S,_@P>`/S`^`P,S'@`>,S`^,S,>`#\S`P8,#`P`'C,
-MS'C,S'@`>,S,?`S,>```,#```#`P```P,```,#!@&#!@P&`P&````'X``'X`
-M`#`8#`8,&#``/&8&#!@`&`!\QM[>WL!^`#!XS,S\S,P`_&9F?&9F_``\9L#`
-MP&8\`/AL9F9F;/@`_F)H>&AB_@#^8FAX:&#P`#QFP,#.9CX`S,S,_,S,S`!X
-M,#`P,#!X`!X,#`S,S'@`YFQX<'ALY@#P8&!@8F;^`,;N_M;&QL8`QN;VWL[&
-MQ@`X;,;&QFPX`/QF9GQ@8/``>,S,S-QX'`#\9F9\;&;F`'C,P'@,S'@`_+0P
-M,#`P>`#,S,S,S,QX`,S,S,S,>#``QL;&UO[^Q@#&QFPX.&S&`,S,S'@P,'@`
-M_,R8,&3,_`!X8&!@8&!X`,!@,!@,!@(`>!@8&!@8>``0.&S&````````````
-M``#_,#`8`````````'@,?,QV`.!@8'QF9OP```!XS,#,>``<#`Q\S,Q^````
-M>,S\P'@`.&Q@^&!@\````';,S'P,^.!@;'9F9N8`,`!P,#`P>``,`!P,#,S,
-M>.!@9FQX;.8`<#`P,#`P>````,S^_M;&````^,S,S,P```!XS,S,>````-QF
-M9GQ@\```=LS,?`P>``#<=F!@\````'S`?`;\`!`P?#`P-AP```#,S,S,=@``
-M`,;&QGPX````QM;^_FP```#&;#ALQ@```,S,S'P,^```_)@P9/P`'#`PX#`P
-M'``8&!@`&!@8`.`P,!PP,.``=MP````````0.&QLQL;^`'C,P,QX&`QX`,P`
-MS,S,?@`<`'C,_,!X`'[#/`8^9C\`S`!X#'S,?@#@`'@,?,Q^`#`P>`Q\S'X`
-M``!XP,!X##A^PSQF?F`\`,P`>,S\P'@`X`!XS/S`>`#,`'`P,#!X`'S&.!@8
-M&#P`X`!P,#`P>`#&.&S&_L;&`#`P`'C,_,P`'`#\8'A@_````'\,?\Q_`#YL
-MS/[,S,X`>,P`>,S,>```S`!XS,QX``#@`'C,S'@`>,P`S,S,?@``X`#,S,Q^
-M``#,`,S,?`SXPQ@\9F8\&`#,`,S,S,QX`!@8?L#`?A@8.&QD\&#F_`#,S'C\
-M,/PP,/C,S/K&S\;'#AL8/!@8V'`<`'@,?,Q^`#@`<#`P,'@``!P`>,S,>```
-M'`#,S,Q^``#X`/C,S,P`_`#,[/S<S``\;&P^`'X``#AL;#@`?```,``P8,#,
-M>`````#\P,```````/P,#```P\;,WC-FS`_#QLS;-V_/`Q@8`!@8&!@``#-F
-MS&8S````S&8S9LP``"*((H@BB"*(5:I5JE6J5:K;=]ONVW?;[A@8&!@8&!@8
-M&!@8&/@8&!@8&/@8^!@8&#8V-C;V-C8V`````/XV-C8``/@8^!@8&#8V]@;V
-M-C8V-C8V-C8V-C8``/X&]C8V-C8V]@;^````-C8V-OX````8&/@8^```````
-M``#X&!@8&!@8&!\````8&!@8_P````````#_&!@8&!@8&!\8&!@`````_P``
-M`!@8&!C_&!@8&!@?&!\8&!@V-C8V-S8V-C8V-S`_```````_,#<V-C8V-O<`
-M_P``````_P#W-C8V-C8W,#<V-C8``/\`_P```#8V]P#W-C8V&!C_`/\````V
-M-C8V_P``````_P#_&!@8`````/\V-C8V-C8V/P```!@8'Q@?```````?&!\8
-M&!@`````/S8V-C8V-C;_-C8V&!C_&/\8&!@8&!@8^``````````?&!@8____
-M______\`````______#P\/#P\/#P#P\/#P\/#P______````````=MS(W'8`
-M`'C,^,SXP,``_,S`P,#```#^;&QL;&P`_,Q@,&#,_````'[8V-AP``!F9F9F
-M?&#``';<&!@8&`#\,'C,S'@P_#ALQO[&;#@`.&S&QFQL[@`<,!A\S,QX````
-M?MO;?@``!@Q^V]M^8,`\8,#\P&`\`'C,S,S,S,P``/P`_`#\```P,/PP,`#\
-M`&`P&#!@`/P`&#!@,!@`_``.&QL8&!@8&!@8&!@8V-AP,#``_``P,```=MP`
-M=MP``#AL;#@`````````&!@`````````&`````\,#`SL;#P<>&QL;&P```!P
-7&#!@>```````/#P\/```````````````
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt220l.810.uu b/usr.sbin/pcvt/fonts/vt220l.810.uu
deleted file mode 100644
index 7cba2cb..0000000
--- a/usr.sbin/pcvt/fonts/vt220l.810.uu
+++ /dev/null
@@ -1,60 +0,0 @@
-begin 644 vt220l.810
-M`````````````'Z!I:6!@;V9@7Y^_]O;___#Y_]^;/[^?'PX.!`0````$#A\
-M_GPX$``X?'PX?/[^?#A\$!`X.'S^_GPX?````!@\/!@```#____GP\/G____
-M```\9D)"9CP``/__PYF]O9G#__\`#P</?<S,S'@``#QF9F8\&'X8`#\S/S`P
-M,'#PX`!_8W]C8V-GYL```-M^/.?G/'[;````@.#X_OC@@`````(./OX^#@(`
-M&!@\?A@8?CP8&&9F9F9F9@!F9@!_V]O;>QL;&QL`/&8P;,9L&,QX````````
-M?GY^?@`8&#Q^&!A^/!C_&!@\/'X8&!@8&!@8&!@8?CP\&!@`````&`S^#!@`
-M`````#!@_F`P``````#`P,#`_@``````)&;_9B0``!@8/#Q^?O__``#__WY^
-M/#P8&```````````````,'AX>#`P`#`P`&QL;"@```````!L;/YL;&S^;&P`
-M&'[8V'PV-OPP`,;,#!@X,&!FQ@`X;&PX,';<S'8`X.!@8,````````P8,#`P
-M,#`8#`!@,!@8&!@8,&````#&;#C^.&S&`````#`P_#`P````````<'`P,&``
-M``````#^```````````````P,```#`P8&#`P8&``?,;.WM;VYL9\`#!P,#`P
-M,#`P_`!\QL8&##A@QOX`?,;&!CP&QL9\``P,'#QLS/X,'@#^P,#\!@8&QGP`
-M'#!@P/S&QL9\`/[&!@P,&!@8&`!\QL;&?,;&QGP`?,;&QGX&#!AP`````#`P
-M```P,````#`P```P,&`````8,&#`8#`8``````#\``#\`````&`P&`P8,&``
-M?,;&!@P8&``8`'S&SMK6WL#&?``X?,;&QO[&QL8`_&9F9GQF9F;\`#QFP,#`
-MP,!F/`#X;&9F9F9F;/@`_F)@:'AH8&+^`/YB8&AX:&!@\``\9L#`P,[&9CP`
-MQL;&QO[&QL;&`#P8&!@8&!@8/``>#`P,#`S,S'@`YF9L;'AL;&;F`/!@8&!@
-M8&)F_@#&[O[^UL;&QL8`QN;F]M[.SL;&`#ALQL;&QL9L.`#\9F9F?&!@8/``
-M?,;&QL;&SGP.`/QF9F9X;&QFY@!\QL!@.`P&QGP`?EH8&!@8&!@\`,;&QL;&
-MQL;&?`!F9F9F9F9F/!@`QL;&QL;6_N[&`,;&;#@0.&S&Q@#,S,S,>#`P,'@`
-M_L:,&#!@PL;^`!X8&!@8&!@8'@``8&`P,!@8#`P`\#`P,#`P,##P`!`X;,8`
-M``````````````````#_,#`8`````````````'@,?,S,=@#@8&!\9F9F9MP`
-M````?,;`P,9\`!P,#'S,S,S,=@````!\QO[`P'P`.&Q@\&!@8&#P`````';,
-MS'P,S'C@8&!L=F9F9N8`,#``<#`P,#!X``P,``P,#`S,S'C@8&!F;'AX;.8`
-M<#`P,#`P,#!X`````,S^_M;6U@````#<YL;&QL8`````?,;&QL9\`````-QF
-M9F9\8/````!VS,S,?`P>````W'9F8&#P`````'S&<!S&?``@8&#\8&!@;#@`
-M````S,S,S,QV`````,;&QL9L.`````#&UM;^_FP`````QFPX.&S&`````,;&
-MQGX&!OP```#^C!@P8OX`#A@8&'`8&!@.`!@8&!@`&!@8&`#@,#`P'#`P,.``
-M=MP``````````````!`X;,;&_@!\QL#`P,9\#`8\`,P`S,S,S,QV```.`'S&
-M_L#`?``\9@`\!CYF9C\``,P`>`Q\S,QV``!P`'@,?,S,=@`P,`!X#'S,S'8`
-M````?L#`P'X&/#QF`#QF?F!@/`#,``!\QO[`P'P``'``?,;^P,!\``#,`'`P
-M,#`P>``X;``X&!@8&#P``.``<#`P,#!X`,8`.&S&_L;&Q@`P,`!XS/S,S,P`
-M'`#\8&!X8&#\`````'X;?MC8?P`^;,S,_LS,S,X`.&P`?,;&QL9\``#&`'S&
-MQL;&?```<`!\QL;&QGP`>,P`S,S,S,QV``!P`,S,S,S,=@``Q@#&QL9^!@;\
-MQCALQL;&QFPX`,8`QL;&QL;&?``8&'[`P,#`?A@8.&QD8/A@8.;\`,S,>##\
-M,/PP,`#XS,S,^L;/QL<`#AL8&#P8&!C8<``<`'@,?,S,=@``.`!P,#`P,'@`
-M`!P`?,;&QL9\```<`,S,S,S,=@!P_AP`W.;&QL8`_@#&YO;^WL[&`#QL;&P^
-M`'X````X;&QL.`!\````,``P,&#`QL9\``````#^P,``````````_@8&````
-MP\;,V#Y[PP8,#\/&S-DS9\T/`P,8&``8&#P\/!@`````,V;,9C,``````,QF
-M,V;,```BB"*((H@BB"*(5:I5JE6J5:I5JMMWV^[;=]ONVW<8&!@8&!@8&!@8
-M&!@8&!CX&!@8&!@8&/@8^!@8&!@V-C8V-O8V-C8V``````#^-C8V-@```/@8
-M^!@8&!@V-C;V!O8V-C8V-C8V-C8V-C8V-@```/X&]C8V-C8V-C;V!OX`````
-M-C8V-C;^`````!@8&/@8^````````````/@8&!@8&!@8&!@?`````!@8&!@8
-M_P```````````/\8&!@8&!@8&!@?&!@8&```````_P`````8&!@8&/\8&!@8
-M&!@8'Q@?&!@8&#8V-C8V-S8V-C8V-C8W,#\`````````/S`W-C8V-C8V-O<`
-M_P````````#_`/<V-C8V-C8V-S`W-C8V-@```/\`_P`````V-C;W`/<V-C8V
-M&!@8_P#_`````#8V-C8V_P````````#_`/\8&!@8``````#_-C8V-C8V-C8V
-M/P`````8&!@?&!\`````````'Q@?&!@8&```````/S8V-C8V-C8V-O\V-C8V
-M&!@8_QC_&!@8&!@8&!@8^````````````!\8&!@8_____________P``````
-M_______P\/#P\/#P\/#P#P\/#P\/#P\/#_______``````````!VW-C,W'8`
-M`'S&QMS&QMS`P/YF9&!@8&!@\`#^;&QL;&QL;.X`_L9@,!@P8,;^`````'_,
-MS,S,>`````!F9F9V;&#`````=MP8&!@8`#P8?MO;VWX8/``X;,;&_L;&;#@`
-M.&S&QL9L;&SN`!PR,!A\S,S,>`````!VV]O;;@```P9\S]O;\SY@P```'#!@
-M?&`P'````'S&QL;&QL8`````_@#^`/X`````,##\,#``_`!@,!@,&#!@`/X`
-M#!@P8#`8#`#^``X;&Q@8&!@8&!@8&!@8&!@8V-AP```P,`#\`#`P`````';<
-M`';<```X;&QL.````````````!@8````````````&``````/#`P,[&QL-#P<
-H>&QL;&QL`````'#8&'#`^``````````\/#P\`````````````````&QL
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt220l.814.uu b/usr.sbin/pcvt/fonts/vt220l.814.uu
deleted file mode 100644
index 7d918bb..0000000
--- a/usr.sbin/pcvt/fonts/vt220l.814.uu
+++ /dev/null
@@ -1,83 +0,0 @@
-begin 644 vt220l.814
-M`````````````````````'Z!I8&!O9F!?@``````?O_;___#Y_]^````````
-M;/[^_OY\.!`````````0.'S^?#@0````````&#P\Y^?G&!@\```````8/'[_
-M_WX8&#P``````````!@\/!@``````/______Y\/#Y_______`````#QF0D)F
-M/`````#_____PYF]O9G#_____P``'@X:,GC,S,QX```````\9F9F/!A^&!@`
-M`````#\S/S`P,'#PX```````?V-_8V-C9^?FP``````8&-L\YSS;&!@`````
-M`(#`X/C^^.#`@````````@8./OX^#@8"```````8/'X8&!A^/!@``````&9F
-M9F9F9@!F9@``````?]O;VWL;&QL;`````'S&8#ALQL9L.`S&?```````````
-M`/[^_@``````&#Q^&!@8?CP8?@`````8/'X8&!@8&!@``````!@8&!@8&'X\
-M&``````````8#/X,&````````````#!@_F`P`````````````,#`P/X`````
-M```````H;/YL*```````````$#@X?'S^_@````````#^_GQ\.#@0````````
-M```````````````````8/#P\&!@`&!@`````9F9F)```````````````;&S^
-M;&QL_FQL````&!A\QL+`?`:&QGP8&```````PL8,&#!FQ@``````.&QL.';<
-MS,QV`````#`P,&````````````````P8,#`P,#`8#```````,!@,#`P,#!@P
-M`````````&8\_SQF````````````&!A^&!@`````````````````&!@8,```
-M````````_@`````````````````````8&````````@8,&#!@P(````````!\
-MQL[>]N;&QGP``````!@X>!@8&!@8?@``````?,8&#!@P8,;^``````!\Q@8&
-M/`8&QGP```````P</&S,_@P,'@``````_L#`P/P&!L9\```````X8,#`_,;&
-MQGP``````/[&!@P8,#`P,```````?,;&QGS&QL9\``````!\QL;&?@8&#'@`
-M```````8&````!@8`````````!@8````&!@P```````&#!@P8#`8#`8`````
-M`````'X``'X`````````8#`8#`8,&#!@``````!\QL8,&!@`&!@``````'S&
-MQM[>WMS`?```````$#ALQL;^QL;&``````#\9F9F?&9F9OP``````#QFPL#`
-MP,)F/```````^&QF9F9F9FSX``````#^9F)H>&AB9OX``````/YF8FAX:&!@
-M\```````/&;"P,#>QF8Z``````#&QL;&_L;&QL8``````#P8&!@8&!@8/```
-M````'@P,#`P,S,QX``````#F9FQL>&QL9N8``````/!@8&!@8&)F_@``````
-MQN[^_M;&QL;&``````#&YO;^WL[&QL8``````#ALQL;&QL9L.```````_&9F
-M9GQ@8&#P``````!\QL;&QM;>?`P.`````/QF9F9\;&9FY@``````?,;&8#@,
-MQL9\``````!^?EH8&!@8&#P``````,;&QL;&QL;&?```````QL;&QL;&;#@0
-M``````#&QL;&UM;^?&P``````,;&;#@X.&S&Q@``````9F9F9CP8&!@\````
-M``#^QHP8,&#"QOX``````#PP,#`P,#`P/```````@,#@<#@<#@8"```````\
-M#`P,#`P,##P````0.&S&`````````````````````````````/\`,#`8````
-M`````````````````'@,?,S,=@``````X&!@>&QF9F9\``````````!\QL#`
-MQGP``````!P,##QLS,S,=@``````````?,;^P,9\```````X;&1@\&!@8/``
-M`````````';,S,Q\#,QX````X&!@;'9F9F;F```````8&``X&!@8&#P`````
-M``8&``X&!@8&9F8\````X&!@9FQX;&;F```````X&!@8&!@8&#P`````````
-M`.S^UM;6Q@``````````W&9F9F9F``````````!\QL;&QGP``````````-QF
-M9F9\8&#P````````=LS,S'P,#!X```````#<=F9@8/```````````'S&<!S&
-M?```````$#`P_#`P,#8<``````````#,S,S,S'8``````````,;&QFPX$```
-M````````QL;6UOYL``````````#&;#@X;,8``````````,;&QL9^!@SX````
-M````_LP8,&;^```````.&!@8<!@8&`X``````!@8&!@`&!@8&```````<!@8
-M&`X8&!AP``````!VW```````````````````$#ALQL;^````````/&;"P,#"
-M9CP,!GP```#,S`#,S,S,S'8`````#!@P`'S&_L#&?``````0.&P`>`Q\S,QV
-M``````#,S`!X#'S,S'8`````8#`8`'@,?,S,=@`````X;#@`>`Q\S,QV````
-M`````#QF8&8\#`8\````$#AL`'S&_L#&?```````S,P`?,;^P,9\`````&`P
-M&`!\QO[`QGP``````&9F`#@8&!@8/``````8/&8`.!@8&!@\`````&`P&``X
-M&!@8&#P`````QL80.&S&QO[&Q@```#AL.``X;,;&_L;&````&#!@`/YF8'Q@
-M9OX`````````S'8V?MC8;@``````/FS,S/[,S,S.`````!`X;`!\QL;&QGP`
-M`````,;&`'S&QL;&?`````!@,!@`?,;&QL9\`````#!XS`#,S,S,S'8`````
-M8#`8`,S,S,S,=@``````QL8`QL;&QGX&#'@`QL8`.&S&QL;&;#@```#&Q@#&
-MQL;&QL;&?``````8&#QF8&!F/!@8`````#AL9&#P8&!@YOP``````&9F/!A^
-M&'X8&`````#XS,SXQ,S>S,S&``````X;&!@8?A@8&!C8<```&#!@`'@,?,S,
-M=@`````,&#``.!@8&!@\`````!@P8`!\QL;&QGP`````&#!@`,S,S,S,=@``
-M````=MP`W&9F9F9F````=MP`QN;V_M[.QL8`````/&QL/@!^```````````X
-M;&PX`'P````````````P,``P,&#&QGP```````````#^P,#`````````````
-M`/X&!@8``````,#`QLS8,&#<A@P8/@``P,#&S-@P9LZ>/@8&````&!@`&!@\
-M/#P8`````````#9LV&PV````````````V&PV;-@``````!%$$4011!%$$401
-M1!%$5:I5JE6J5:I5JE6J5:K==]UWW7?==]UWW7?==Q@8&!@8&!@8&!@8&!@8
-M&!@8&!@8&/@8&!@8&!@8&!@8&/@8^!@8&!@8&#8V-C8V-C;V-C8V-C8V````
-M`````/XV-C8V-C8``````/@8^!@8&!@8&#8V-C8V]@;V-C8V-C8V-C8V-C8V
-M-C8V-C8V-C8``````/X&]C8V-C8V-C8V-C8V]@;^````````-C8V-C8V-OX`
-M```````8&!@8&/@8^`````````````````#X&!@8&!@8&!@8&!@8&!\`````
-M```8&!@8&!@8_P````````````````#_&!@8&!@8&!@8&!@8&!\8&!@8&!@`
-M````````_P```````!@8&!@8&!C_&!@8&!@8&!@8&!@?&!\8&!@8&!@V-C8V
-M-C8V-S8V-C8V-C8V-C8V-S`_```````````````_,#<V-C8V-C8V-C8V-O<`
-M_P``````````````_P#W-C8V-C8V-C8V-C8W,#<V-C8V-C8``````/\`_P``
-M`````#8V-C8V]P#W-C8V-C8V&!@8&!C_`/\````````V-C8V-C8V_P``````
-M````````_P#_&!@8&!@8`````````/\V-C8V-C8V-C8V-C8V/P```````!@8
-M&!@8'Q@?```````````````?&!\8&!@8&!@`````````/S8V-C8V-C8V-C8V
-M-C;_-C8V-C8V&!@8&!C_&/\8&!@8&!@8&!@8&!@8^``````````````````?
-M&!@8&!@8__________________\`````````__________#P\/#P\/#P\/#P
-M\/#P#P\/#P\/#P\/#P\/#P__________````````````````=MS8V-QV````
-M`````'S&_,;&_,#`0````/[&QL#`P,#`P`````````#^;&QL;&QL``````#^
-MQF`P&#!@QOX``````````'[8V-C8<`````````!F9F9F?&!@P````````';<
-M&!@8&!@``````'X8/&9F9CP8?@``````.&S&QO[&QFPX```````X;,;&QFQL
-M;.X``````!XP&`P^9F9F/```````````?MO;?@`````````#!G[;V_-^8,``
-M`````!XP8&!^8&`P'@```````'S&QL;&QL;&````````_@``_@``_@``````
-M```8&'X8&```_P``````,!@,!@P8,`!^```````,&#!@,!@,`'X```````X;
-M&Q@8&!@8&!@8&!@8&!@8&!@8V-AP````````&!@`?@`8&```````````=MP`
-M=MP````````X;&PX````````````````````&!@`````````````````&```
-M```````/#`P,#`SL;#P<`````-AL;&QL;```````````<-@P8,CX````````
-=``````!\?'Q\?'P`````````````````````````
-`
-end
diff --git a/usr.sbin/pcvt/fonts/vt220l.816.uu b/usr.sbin/pcvt/fonts/vt220l.816.uu
deleted file mode 100644
index 62393e1..0000000
--- a/usr.sbin/pcvt/fonts/vt220l.816.uu
+++ /dev/null
@@ -1,95 +0,0 @@
-begin 644 vt220l.816
-M````````````````````````?H&E@8&]F8&!?@```````'[_V___P^?__WX`
-M`````````&S^_O[^?#@0```````````0.'S^?#@0```````````8/#SGY^<8
-M&#P`````````&#Q^__]^&!@\`````````````!@\/!@```````#________G
-MP\/G________```````\9D)"9CP``````/______PYF]O9G#______\``!X.
-M&C)XS,S,S'@````````\9F9F9CP8?A@8````````/S,_,#`P,'#PX```````
-M`']C?V-C8V-GY^;`````````&!C;/.<\VQ@8``````"`P.#P^/[X\.#`@```
-M`````@8.'C[^/AX.!@(````````8/'X8&!A^/!@`````````9F9F9F9F9@!F
-M9@```````'_;V]M[&QL;&QL``````'S&8#ALQL9L.`S&?```````````````
-M_O[^_@```````!@\?A@8&'X\&'X````````8/'X8&!@8&!@8````````&!@8
-M&!@8&'X\&````````````!@,_@P8```````````````P8/Y@,```````````
-M`````,#`P/X``````````````"AL_FPH`````````````!`X.'Q\_OX`````
-M``````#^_GQ\.#@0```````````````````````````````8/#P\&!@8`!@8
-M``````!F9F8D``````````````````!L;/YL;&S^;&P``````!@8?,;"P'P&
-MAL9\&!@```````#"Q@P8,&#&A@```````#AL;#AVW,S,S'8``````#`P,&``
-M````````````````#!@P,#`P,#`8#````````#`8#`P,#`P,&#``````````
-M``!F//\\9@``````````````&!A^&!@````````````````````8&!@P````
-M`````````'X````````````````````````8&````````````@8,&#!@P(``
-M``````!\QL;.WO;FQL9\````````&#AX&!@8&!@8?@```````'S&!@P8,&#`
-MQOX```````!\Q@8&/`8&!L9\````````#!P\;,S^#`P,'@```````/[`P,#\
-M!@8&QGP````````X8,#`_,;&QL9\````````_L8&!@P8,#`P,````````'S&
-MQL9\QL;&QGP```````!\QL;&?@8&!@QX```````````8&````!@8````````
-M````&!@````8&#``````````!@P8,&`P&`P&````````````?@``?@``````
-M``````!@,!@,!@P8,&````````!\QL8,&!@8`!@8````````?,;&QM[>WMS`
-M?````````!`X;,;&_L;&QL8```````#\9F9F?&9F9F;\````````/&;"P,#`
-MP,)F/````````/AL9F9F9F9F;/@```````#^9F)H>&A@8F;^````````_F9B
-M:'AH8&!@\````````#QFPL#`WL;&9CH```````#&QL;&_L;&QL;&````````
-M/!@8&!@8&!@8/````````!X,#`P,#,S,S'@```````#F9F9L>'AL9F;F````
-M````\&!@8&!@8&)F_@```````,;N_O[6QL;&QL8```````#&YO;^WL[&QL;&
-M````````?,;&QL;&QL;&?````````/QF9F9\8&!@8/````````!\QL;&QL;&
-MUMY\#`X`````_&9F9GQL9F9FY@```````'S&QF`X#`;&QGP```````!^?EH8
-M&!@8&!@\````````QL;&QL;&QL;&?````````,;&QL;&QL9L.!````````#&
-MQL;&UM;6_NYL````````QL9L?#@X?&S&Q@```````&9F9F8\&!@8&#P`````
-M``#^QH8,&#!@PL;^````````/#`P,#`P,#`P/`````````"`P.!P.!P.!@(`
-M```````\#`P,#`P,#`P\`````!`X;,8`````````````````````````````
-M````_P``,#`8````````````````````````>`Q\S,S,=@```````.!@8'AL
-M9F9F9GP```````````!\QL#`P,9\````````'`P,/&S,S,S,=@``````````
-M`'S&_L#`QGP````````X;&1@\&!@8&#P````````````=LS,S,S,?`S,>```
-M`.!@8&QV9F9F9N8````````8&``X&!@8&!@\````````!@8`#@8&!@8&!F9F
-M/````.!@8&9L>'AL9N8````````X&!@8&!@8&!@\````````````[/[6UM;6
-MQ@```````````-QF9F9F9F8```````````!\QL;&QL9\````````````W&9F
-M9F9F?&!@\````````';,S,S,S'P,#!X```````#<=F9@8&#P````````````
-M?,9@.`S&?````````!`P,/PP,#`P-AP```````````#,S,S,S,QV````````
-M````QL;&QFPX$````````````,;&UM;6_FP```````````#&;#@X.&S&````
-M````````QL;&QL;&?@8,^````````/[,&#!@QOX````````.&!@8<!@8&!@.
-M````````&!@8&``8&!@8&````````'`8&!@.&!@8&'````````!VW```````
-M```````````````0.&S&QL;^`````````#QFPL#`P,)F/`P&?`````#,``#,
-MS,S,S,QV```````,&#``?,;^P,#&?```````$#AL`'@,?,S,S'8```````#,
-M``!X#'S,S,QV``````!@,!@`>`Q\S,S,=@``````.&PX`'@,?,S,S'8`````
-M`````#QF8&!F/`P&/``````0.&P`?,;^P,#&?````````,8``'S&_L#`QGP`
-M`````&`P&`!\QO[`P,9\````````9@``.!@8&!@8/```````&#QF`#@8&!@8
-M&#P``````&`P&``X&!@8&!@\``````#&`!`X;,;&_L;&Q@`````X;#@`.&S&
-MQO[&QL8`````&#!@`/YF8'Q@8&;^``````````!L_K(R?MC8;@```````#YL
-MS,S^S,S,S,X``````!`X;`!\QL;&QL9\````````Q@``?,;&QL;&?```````
-M8#`8`'S&QL;&QGP``````#!XS`#,S,S,S,QV``````!@,!@`S,S,S,S,=@``
-M````QL8``,;&QL;&QGX&#'@`QL8`?,;&QL;&QL9\`````,;&`,;&QL;&QL;&
-M?```````&!@\9F!@8&8\&!@``````#AL9&#P8&!@8.;\````````9F8\&'X8
-M?A@8&```````^,S,^,3,WLS,S,8```````X;&!@8?A@8&!@8V'`````8,&``
-M>`Q\S,S,=@``````#!@P`#@8&!@8&#P``````!@P8`!\QL;&QL9\```````8
-M,&``S,S,S,S,=@```````';<`-QF9F9F9F8`````=MP`QN;V_M[.QL;&````
-M```\;&P^`'X`````````````.&QL.`!\```````````````P,``P,&#`QL9\
-M`````````````/[`P,#```````````````#^!@8&!@```````,#`PL;,&#!@
-MW(8,&#X```#`P,+&S!@P9LZ>/@8&`````!@8`!@8&#P\/!@````````````V
-M;-AL-@``````````````V&PV;-@````````11!%$$4011!%$$4011!%$5:I5
-MJE6J5:I5JE6J5:I5JMUWW7?==]UWW7?==]UWW7<8&!@8&!@8&!@8&!@8&!@8
-M&!@8&!@8&/@8&!@8&!@8&!@8&!@8^!CX&!@8&!@8&!@V-C8V-C8V]C8V-C8V
-M-C8V`````````/XV-C8V-C8V-@``````^!CX&!@8&!@8&!@V-C8V-O8&]C8V
-M-C8V-C8V-C8V-C8V-C8V-C8V-C8V-@``````_@;V-C8V-C8V-C8V-C8V-O8&
-M_@``````````-C8V-C8V-OX``````````!@8&!@8^!CX````````````````
-M````^!@8&!@8&!@8&!@8&!@8&!\``````````!@8&!@8&!C_````````````
-M````````_Q@8&!@8&!@8&!@8&!@8&!\8&!@8&!@8&`````````#_````````
-M```8&!@8&!@8_Q@8&!@8&!@8&!@8&!@?&!\8&!@8&!@8&#8V-C8V-C8W-C8V
-M-C8V-C8V-C8V-C<P/P`````````````````_,#<V-C8V-C8V-C8V-C8V]P#_
-M`````````````````/\`]S8V-C8V-C8V-C8V-C8W,#<V-C8V-C8V-@``````
-M_P#_```````````V-C8V-O<`]S8V-C8V-C8V&!@8&!C_`/\``````````#8V
-M-C8V-C;_`````````````````/\`_Q@8&!@8&!@8`````````/\V-C8V-C8V
-M-C8V-C8V-C8_```````````8&!@8&!\8'P`````````````````?&!\8&!@8
-M&!@8&``````````_-C8V-C8V-C8V-C8V-C8V_S8V-C8V-C8V&!@8&!C_&/\8
-M&!@8&!@8&!@8&!@8&!CX````````````````````'Q@8&!@8&!@8________
-M_____________P````````#____________P\/#P\/#P\/#P\/#P\/#P#P\/
-M#P\/#P\/#P\/#P\/#_________\``````````````````';<V-C8W'8`````
-M``!XS,S,V,S&QL;,````````_L;&P,#`P,#`P```````````_FQL;&QL;&P`
-M````````_L9@,!@P8,;^````````````?MC8V-C8<```````````9F9F9F9\
-M8&#``````````';<&!@8&!@8`````````'X8/&9F9CP8?@`````````X;,;&
-M_L;&;#@````````X;,;&QFQL;&SN````````'C`8##YF9F9F/```````````
-M`'[;V]M^`````````````P9^V]OS?F#`````````'C!@8'Y@8&`P'@``````
-M``!\QL;&QL;&QL8``````````/X``/X``/X````````````8&'X8&```_P``
-M```````P&`P&#!@P`'X`````````#!@P8#`8#`!^````````#AL;&Q@8&!@8
-M&!@8&!@8&!@8&!@8&-C8V'```````````!@8`'X`&!@`````````````=MP`
-M=MP`````````.&QL.````````````````````````!@8````````````````
-M````&```````````#PP,#`P,[&QL/!P``````-AL;&QL;`````````````!P
-MV#!@R/@`````````````````?'Q\?'Q\?```````````````````````````
-!`#!@
-`
-end
diff --git a/usr.sbin/pcvt/ispcvt/Makefile b/usr.sbin/pcvt/ispcvt/Makefile
deleted file mode 100644
index 994b406..0000000
--- a/usr.sbin/pcvt/ispcvt/Makefile
+++ /dev/null
@@ -1,6 +0,0 @@
-# $FreeBSD$
-
-PROG= ispcvt
-MAN= ispcvt.8
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/ispcvt/ispcvt.8 b/usr.sbin/pcvt/ispcvt/ispcvt.8
deleted file mode 100644
index 8e73e09..0000000
--- a/usr.sbin/pcvt/ispcvt/ispcvt.8
+++ /dev/null
@@ -1,99 +0,0 @@
-.\" Copyright (c) 1992, 2000 Hellmuth Michaelis
-.\"
-.\" 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.
-.\"
-.\" 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.
-.\"
-.\" Last Edit-Date: [Mon Mar 27 16:31:54 2000]
-.\"
-.\" $FreeBSD$
-.\"
-.Dd March 27, 2000
-.Dt ISPCVT 8
-.Os
-.Sh NAME
-.Nm ispcvt
-.Nd verify if current video driver is pcvt driver
-.Sh SYNOPSIS
-.Nm
-.Op Fl c
-.Op Fl d Ar device
-.Op Fl n
-.Op Fl v
-.Sh DESCRIPTION
-The
-.Nm
-utility allows the user to check whether the current video driver compiled
-into the kernel is a pcvt driver.
-The major and minor release numbers of
-the driver are also checked.
-Furthermore
-.Nm
-is also able to print out the values of all the
-.Dq Ar PCVT_XXXXXX
-compile time options, the driver in the current running kernel was
-compiled with.
-.Pp
-The options are as follows:
-.Bl -tag -width Ds
-.It Fl d
-Specifies a device for which the check is done.
-.It Fl v
-Specifies being verbose.
-On success the name and revision is reported, on
-failure which comparison failed.
-.It Fl n
-print the number of compiled-in virtual terminals.
-.It Fl c
-This options prints out the values of all
-.Dq Ar PCVT_XXXXXX
-#defines which were given to the compiler at the time the currently running
-kernel was compiled.
-Specifying
-.Fl v
-with the
-.Fl c
-option gives a verbose listing of the compile-time options.
-.El
-.Sh EXIT STATUS
-The
-.Nm
-utility exits with one of the following values:
-.Pp
-.Bl -tag -width indent -compact
-.It 0
-driver is pcvt and major and minor numbers match
-.It 1
-.Xr open 2
-or
-.Xr ioctl 2
-system call failed
-.It 2
-driver name mismatch
-.It 3
-name matched, release major number mismatch
-.It 4
-name and major number matched, release minor number mismatch
-.It 5
-usage error
-.El
-.Sh SEE ALSO
-.Xr pcvt 4
diff --git a/usr.sbin/pcvt/ispcvt/ispcvt.c b/usr.sbin/pcvt/ispcvt/ispcvt.c
deleted file mode 100644
index 40979ca..0000000
--- a/usr.sbin/pcvt/ispcvt/ispcvt.c
+++ /dev/null
@@ -1,250 +0,0 @@
-/*
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- *
- * 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.
- *
- * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
- *
- */
-
-/*---------------------------------------------------------------------------*
- *
- * ispcvt - check for pcvt driver running and its options
- * ------------------------------------------------------
- *
- * Last Edit-Date: [Fri Mar 31 10:24:43 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include <stdio.h>
-#include <err.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <machine/pcvt_ioctl.h>
-
-#define DEFAULTFD 0
-
-main(argc,argv)
-int argc;
-char *argv[];
-{
- struct pcvtid pcvtid;
- struct pcvtinfo pcvtinfo;
- int c;
- char *p;
- int verbose = 0;
- int config = 0;
- int dflag = 0;
- int n_screens = 0;
- int fd;
- char *device;
-
- while( (c = getopt(argc, argv, "cd:nv")) != -1)
- {
- switch(c)
- {
- case 'c':
- config = 1;
- break;
-
- case 'd':
- device = optarg;
- dflag = 1;
- break;
-
- case 'n':
- n_screens = 1;
- break;
-
- case 'v':
- verbose = 1;
- break;
-
- case '?':
- default:
- usage();
- break;
- }
- }
-
- if(dflag)
- {
- if((fd = open(device, O_RDWR)) == -1)
- {
- if(verbose)
- warn("ERROR opening %s", device);
- exit(1);
- }
- }
- else
- {
- fd = DEFAULTFD;
- }
-
- if(ioctl(fd, VGAPCVTID, &pcvtid) == -1)
- {
- if(verbose)
- warn("ioctl VGAPCVTID failed, error");
- exit(1);
- }
-
- if(!strcmp(pcvtid.name, PCVTIDNAME))
- {
- if(pcvtid.rmajor == PCVTIDMAJOR)
- {
- if(pcvtid.rminor != PCVTIDMINOR)
- {
- if(verbose)
- warnx("minor revision: expected %d, got %d", PCVTIDMINOR, pcvtid.rminor);
- exit(4); /* minor revision mismatch */
- }
- }
- else
- {
- if(verbose)
- warnx("major revision: expected %d, got %d", PCVTIDMAJOR, pcvtid.rmajor);
- exit(3); /* major revision mismatch */
- }
- }
- else
- {
- if(verbose)
- warnx("name check: expected %s, got %s", PCVTIDNAME, pcvtid.name);
- exit(2); /* name mismatch */
- }
-
- if(verbose)
- {
- warnx("\nkernel and utils match, driver name [%s], release [%1.1d.%02.2d]\n",
- pcvtid.name, pcvtid.rmajor, pcvtid.rminor);
- }
-
- if(config == 0 && n_screens == 0)
- exit(0);
-
- if(ioctl(fd, VGAPCVTINFO, &pcvtinfo) == -1)
- {
- if(verbose)
- warn("ioctl VGAPCVTINFO failed, error");
- exit(1);
- }
-
- if(n_screens)
- {
- printf("%d", pcvtinfo.nscreens);
- exit(0);
- }
-
- if(verbose)
- {
- fprintf(stderr,"PCVT_NSCREENS = %u\t\t", pcvtinfo.nscreens);
- fprintf(stderr,"PCVT_UPDATEFAST = %u\n", pcvtinfo.updatefast);
- fprintf(stderr,"PCVT_UPDATESLOW = %u\t\t", pcvtinfo.updateslow);
- fprintf(stderr,"PCVT_SYSBEEPF = %u\n", pcvtinfo.sysbeepf);
- fprintf(stderr,"PCVT_PCBURST = %u\t\t", pcvtinfo.pcburst);
- fprintf(stderr,"PCVT_KBD_FIFO_SZ = %u\n\n", pcvtinfo.kbd_fifo_sz);
-
- /* config booleans */
-
- fprintf(stderr,"PCVT_132GENERIC = %s",
- (pcvtinfo.compile_opts & CONF_132GENERIC) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_24LINESDEF = %s",
- (pcvtinfo.compile_opts & CONF_24LINESDEF) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_CTRL_ALT_DEL = %s",
- (pcvtinfo.compile_opts & CONF_CTRL_ALT_DEL) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_INHIBIT_NUMLOCK = %s",
- (pcvtinfo.compile_opts & CONF_INHIBIT_NUMLOCK) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_META_ESC = %s",
- (pcvtinfo.compile_opts & CONF_META_ESC) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_NO_LED_UPDATE = %s",
- (pcvtinfo.compile_opts & CONF_NO_LED_UPDATE) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_NULLCHARS = %s",
- (pcvtinfo.compile_opts & CONF_NULLCHARS) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_PRETTYSCRNS = %s",
- (pcvtinfo.compile_opts & CONF_PRETTYSCRNS) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_SCREENSAVER = %s",
- (pcvtinfo.compile_opts & CONF_SCREENSAVER) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_SETCOLOR = %s",
- (pcvtinfo.compile_opts & CONF_SETCOLOR) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_SHOWKEYS = %s",
- (pcvtinfo.compile_opts & CONF_SHOWKEYS) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_SLOW_INTERRUPT = %s",
- (pcvtinfo.compile_opts & CONF_SLOW_INTERRUPT) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_USEKBDSEC = %s",
- (pcvtinfo.compile_opts & CONF_USEKBDSEC) ? "ON" : "OFF");
- next();
- fprintf(stderr,"PCVT_VT220KEYB = %s",
- ((u_int)pcvtinfo.compile_opts & (u_int)CONF_VT220KEYB) ? "ON" : "OFF");
- next();
- fprintf(stderr,"XSERVER = %s",
- (pcvtinfo.compile_opts & CONF_XSERVER) ? "ON" : "OFF");
-
- next();
- fprintf(stderr,"PCVT_GREENSAVER = %s",
- (pcvtinfo.compile_opts & CONF_GREENSAVER) ? "ON" : "OFF");
-
- fprintf(stderr,"\n\n");
- }
- else /* !verbose */
- {
- fprintf(stderr,"PCVT_NSCREENS = %u\n", pcvtinfo.nscreens);
- fprintf(stderr,"PCVT_UPDATEFAST = %u\n", pcvtinfo.updatefast);
- fprintf(stderr,"PCVT_UPDATESLOW = %u\n", pcvtinfo.updateslow);
- fprintf(stderr,"PCVT_SYSBEEPF = %u\n", pcvtinfo.sysbeepf);
- fprintf(stderr,"Compile options = 0x%08X\n", pcvtinfo.compile_opts);
- }
-}
-
-usage()
-{
- fprintf(stderr,"\nispcvt - verify current video driver is the pcvt-driver\n");
- fprintf(stderr," usage: ispcvt [-c] [-d device] [-n] [-v]\n");
- fprintf(stderr,"options: -c print compile time configuration\n");
- fprintf(stderr," -d <name> use devicefile <name>\n");
- fprintf(stderr," -n print number of virtual screens (to stdout)\n");
- fprintf(stderr," -v be verbose\n\n");
- exit(5);
-}
-
-next()
-{
- static int i = 0;
-
- fprintf(stderr, "%s", (i == 0) ? "\t\t" : "\n");
-
- i = ~i;
-}
-
-/* EOF */
diff --git a/usr.sbin/pcvt/kbdio/Makefile b/usr.sbin/pcvt/kbdio/Makefile
deleted file mode 100644
index e4359c8..0000000
--- a/usr.sbin/pcvt/kbdio/Makefile
+++ /dev/null
@@ -1,23 +0,0 @@
-# $FreeBSD$
-
-PROG= kbdio
-NO_MAN=
-SRCS= kbdio.y lex.l y.tab.h
-
-CFLAGS+= -I${.OBJDIR} -I${.CURDIR} #-g
-
-#YACC= bison
-#YFLAGS+= -yd # Bison only
-
-YFLAGS+= -v # verbose
-LFLAGS+= -I
-
-DPADD= ${LIBM} ${LIBY} ${LIBL}
-LDADD= -lm -ly -ll
-
-CLEANFILES+= y.output # comment file from bison
-
-install:
- @${ECHO} "kbdio is not installed automatically ...."
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/kbdio/kbdio.y b/usr.sbin/pcvt/kbdio/kbdio.y
deleted file mode 100644
index a3b23b0..0000000
--- a/usr.sbin/pcvt/kbdio/kbdio.y
+++ /dev/null
@@ -1,331 +0,0 @@
-/* Hello emacs, this should be edited in -*- Fundamental -*- mode */
-%{
-/*
- * Copyright (c) 1994 Joerg Wunsch
- *
- * All rights reserved.
- *
- * This program is free software.
- *
- * 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 Joerg Wunsch
- * 4. The name of the developer may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * $Log: kbdio.y,v $
- * Revision 1.2 1994/09/18 19:49:22 j
- * Refined expr handling; can now set/clear bits.
- *
- * Revision 1.1 1994/09/18 12:57:13 j
- * Initial revision
- *
- *
- */
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <math.h>
-#include <sys/fcntl.h>
-#include <machine/cpufunc.h>
-#include <machine/pcvt_ioctl.h>
-
-#ifdef __NetBSD__
-#include <machine/pio.h>
-#endif
-
-#define 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); }
-
-#define YYDEBUG 1
-
-void yyerror(const char *msg);
-
-static void help(int), status(void), data(int), kbd(int), cmdbyte(int),
- kbc(int), whatMCA(void);
-static int kbget(void);
-%}
-
-%union {
- int num;
-}
-
-%token NEWLINE
-%token ALL CMD DATA DEFAULTS ECHOC ENABLE EXPR HELP ID LED
-%token MAKE ONLY RELEASE RESEND RESET SCAN STATUS TYPEMATIC
-%token WHAT
-%token <num> NUM
-
-%type <num> expr opr
-
-%%
-
-interpret: lines ;
-
-lines: line
- | lines line
- ;
-
-line: statements NEWLINE
- | NEWLINE
- | error NEWLINE { fprintf(stderr, "bing!\n"); }
- ;
-
-statements: statement
- | statements ';' statement
- ;
-
-statement: '?' { help(0); }
- | HELP { help(0); }
- | HELP EXPR { help(1); }
- | STATUS '?' { status(); }
- | WHAT '?' { whatMCA(); }
- | DATA '?' { data(kbget()); }
- | LED '=' NUM { kbd(0xed); kbd($3); }
- | ECHOC { kbd(0xee); kbget(); }
- | SCAN '=' NUM { kbd(0xf0); kbd($3);
- if($3 == 0) data(kbget()); }
- | SCAN '?' { kbd(0xf0); kbd(0); data(kbget()); }
- | ID '?' { kbd(0xf2); data(kbget());
- data(kbget()); }
- | TYPEMATIC '=' NUM ',' NUM
- { kbd(0xf3);
- if($3 > 1000) $3 = 1000;
- if($5 > 30) $5 = 30;
- if($5 < 2) $5 = 2;
- kbd(
- (int)
- (8.0 * log(30.0 / (double)$5)
- / log(2))
- | ((($3 / 250) - 1) * 32)
- );
- }
- | ENABLE { kbd(0xf4); }
- | DEFAULTS { kbd(0xf6); }
- | ALL TYPEMATIC { kbd(0xf7); }
- | ALL MAKE RELEASE { kbd(0xf8); }
- | ALL MAKE ONLY { kbd(0xf9); }
- | ALL TYPEMATIC MAKE RELEASE
- { kbd(0xfa); }
- | NUM TYPEMATIC { kbd(0xfb); kbd($1); }
- | NUM MAKE RELEASE { kbd(0xfc); kbd($1); }
- | NUM MAKE ONLY { kbd(0xfd); kbd($1); }
- | RESEND { kbd(0xfe); }
- | RESET { kbd(0xff); }
- | CMD '?' { kbc(0x20); cmdbyte(kbget()); }
- | CMD '=' expr { kbc(0x60); kbd($3); }
- | /* lambda */
- ;
-
-expr: opr { $$ = $1; }
- | expr '+' opr { $$ = $1 | $3; }
- | expr '-' opr { $$ = $1 & ~($3); }
- ;
-
-opr: NUM { $$ = $1; }
- | CMD { kbc(0x20); $$ = kbget(); }
- ;
-
-%%
-
-static void
-help(int topic) {
- switch(topic) {
- case 0:
- printf(
- "Input consists of lines, containing one or more semicolon-separated\n"
- "statements. Numbers are implicitly hexadecimal, append a dot for\n"
- "decimal numbers. Valid statements include:\n"
- "help [expr]; give help [to expression syntax]\n"
- "status ? interpret kbd ctrl status byte\n"
- "what ? check for MCA type 1 or 2 motherboard controller\n"
- "data ? get one byte of data\n"
- "led = NUM set kbd LEDs\n"
- "echo = NUM echo byte to kbd\n"
- "scan = NUM; scan ? set scan code set; return current set\n"
- "id ? get two id bytes\n"
- "typematic=delay,rate set typematic delay(ms)&rate(1/s)\n"
- "enable; defaults enable kbd; back to defaults\n"
- "all typematic make all keys typematic\n"
- "all make release make all keys sending make/release\n"
- "all make only make all keys sending make only\n"
- "all typematic make release make all keys typematic & make/release\n"
- "NUM typematic make specific key typematic\n"
- "NUM make release make specific key sending make/release\n"
- "NUM make only make specific key sending make only\n"
- "resend; reset resend last byte from kbd; reset kbd\n"
- "cmd ? fetch kbd ctrl command byte\n"
- "cmd = expr set kbd ctrl command byte\n"
- "\n");
- break;
-
- case 1:
- printf(
- "Expressions can either consist of a number, possibly followed\n"
- "by a + or - sign and bit values in numeric or symbolic form.\n"
- "Symbolic bit values are:\n"
- "SCCONV IGNPAR CLKLOW OVRINH TEST IRQ\n"
- "\n");
- break;
- }
-}
-
-static void
-status(void) {
- int c = inb(0x64);
- if(c&0x80) printf("parity error | ");
- if(c&0x40) printf("rx timeout | ");
- if(c&0x20) printf("tx timeout | ");
- if(c&0x10) printf("kbd released ");
- else printf("kbd locked ");
- if(c&0x08) printf("| cmd last sent ");
- else printf("| data last sent ");
- if(c&0x04) printf("| power-on ");
- else printf("| test ok ");
- if(c&0x02) printf("| ctrl write busy ");
- else printf("| ctrl write ok ");
- if(c&0x01) printf("| ctrl read ok\n");
- else printf("| ctrl read empty\n");
-}
-
-/* see: Frank van Gilluwe, "The Undocumented PC", Addison Wesley 1994, pp 273 */
-
-static void
-whatMCA(void) {
- int new, sav;
- kbc(0x20); /* get command byte */
- sav = kbget(); /* sav = command byte */
- kbc(0x60); /* set command byte */
- kbd(sav | 0x40); /* set keyboard xlate bit */
- kbc(0x20); /* get keyboard command */
- new = kbget(); /* new = command byte */
- kbc(0x60); /* set command byte */
- kbd(sav); /* restore command byte */
- if(new & 0xbf)
- printf("Hmm - looks like MCA type 1 motherboard controller\n");
- else
- printf("Hmm - looks like MCA type 2 motherboard controller\n");
-}
-
-static void
-kbd(int d) {
- int i = 100000;
- while(i && (inb(0x64) & 2)) i--;
- if(i == 0) { printf("kbd write: timed out\n"); return; }
- outb(0x60, d);
-}
-
-static void
-kbc(int d) {
- int i = 100000;
- while(i && (inb(0x64) & 2)) i--;
- if(i == 0) { printf("ctrl write: timed out\n"); return; }
- outb(0x64, d);
-}
-
-static int
-kbget(void) {
- int i, c;
- for(;;) {
- i = 10000;
- while(i && (inb(0x64) & 1) == 0) i--;
- if(i == 0) { printf("data read: timed out\n"); return -1; }
- KBD_DELAY
- c = (unsigned char)inb(0x60);
- switch(c) {
- case 0: case 0xff:
- printf("got kbd overrun\n"); break;
- case 0xaa:
- printf("got self-test OK\n"); break;
- case 0xee:
- printf("got ECHO byte\n"); break;
- case 0xfa:
- printf("got ACK\n"); break;
- case 0xfc:
- printf("got self-test FAIL\n"); break;
- case 0xfd:
- printf("got internal failure\n"); break;
- case 0xfe:
- printf("got RESEND request\n"); break;
- default:
- goto done;
- }
- }
-done:
- return c;
-}
-
-static void
-cmdbyte(int d) {
- if(d&0x40) printf("scan conv ");
- else printf("pass thru ");
- if(d&0x20) printf("| ign parity ");
- else printf("| check parity ");
- if(d&0x10) printf("| kbd clk low ");
- else printf("| enable kbd ");
- if(d&0x08) printf("| override kbd inh ");
- if(d&0x04) printf("| test ok ");
- else printf("| power-on ");
- if(d&0x01) printf("| irq 1 enable\n");
- else printf("| no irq\n");
-}
-
-static void
-data(int d) {
- if(d < 0) return;
- printf("data: 0x%02x\n", d);
-}
-
-void yyerror(const char *msg) {
- fprintf(stderr, "yyerror: %s\n", msg);
-}
-
-int main(int argc, char **argv) {
- int fd;
-
- if(argc > 1) yydebug = 1;
-
- if((fd = open("/dev/console", O_RDONLY)) < 0)
- fd = 0;
-
- if(ioctl(fd, KDENABIO, 0) < 0) {
- perror("ioctl(KDENABIO)");
- return 1;
- }
- yyparse();
-
- (void)ioctl(fd, KDDISABIO, 0);
- return 0;
-}
-
diff --git a/usr.sbin/pcvt/kbdio/lex.l b/usr.sbin/pcvt/kbdio/lex.l
deleted file mode 100644
index 423e018..0000000
--- a/usr.sbin/pcvt/kbdio/lex.l
+++ /dev/null
@@ -1,99 +0,0 @@
-%{
-/*
- * Copyright (c) 1994 Joerg Wunsch
- *
- * All rights reserved.
- *
- * This program is free software.
- *
- * 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 Joerg Wunsch
- * 4. The name of the developer may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * $Log: lex.l,v $
- * Revision 1.2 1994/09/18 19:48:45 j
- * Added the symbolic values for kbd cmd byte.
- *
- * Revision 1.1 1994/09/18 12:57:13 j
- * Initial revision
- *
- *
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "y.tab.h"
-
-extern YYSTYPE yylval;
-
-%}
-
-D [0-9a-fA-F]
-
-%%
-
-all { return ALL; }
-cmd { return CMD; }
-data { return DATA; }
-defaults { return DEFAULTS; }
-echo { return ECHOC; }
-enable { return ENABLE; }
-expr { return EXPR; }
-help { return HELP; }
-id { return ID; }
-led { return LED; }
-make { return MAKE; }
-only { return ONLY; }
-release { return RELEASE; }
-resend { return RESEND; }
-reset { return RESET; }
-scan { return SCAN; }
-status { return STATUS; }
-typematic { return TYPEMATIC; }
-what { return WHAT; }
-
- /* numeric values */
-clklow { yylval.num = 0x10; return NUM; }
-ignpar { yylval.num = 0x20; return NUM; }
-irq { yylval.num = 0x01; return NUM; }
-ovrinh { yylval.num = 0x08; return NUM; }
-scconv { yylval.num = 0x40; return NUM; }
-test { yylval.num = 0x04; return NUM; }
-
-{D}({D}*)\. { sscanf(yytext, "%d", &yylval.num); return NUM; }
-
-{D}({D}*) { sscanf(yytext, "%x", &yylval.num); return NUM; }
-
-[ \t] { /* ignore */ }
-
-\n { return NEWLINE; }
-
-. { return yytext[0]; }
diff --git a/usr.sbin/pcvt/kcon/Makefile b/usr.sbin/pcvt/kcon/Makefile
deleted file mode 100644
index 564cd84..0000000
--- a/usr.sbin/pcvt/kcon/Makefile
+++ /dev/null
@@ -1,11 +0,0 @@
-# $FreeBSD$
-
-PROG= kcon
-DEVICE= /dev/ttyv0
-
-CFLAGS+= -I${.CURDIR}/../keycap -DKEYB_DEVICE=\"${DEVICE}\"
-
-DPADD= ${LIBKEYCAP}
-LDADD= -lkeycap
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/kcon/kcon.1 b/usr.sbin/pcvt/kcon/kcon.1
deleted file mode 100644
index 4b838dc..0000000
--- a/usr.sbin/pcvt/kcon/kcon.1
+++ /dev/null
@@ -1,130 +0,0 @@
-.\" Copyright (c) 1992, 2000 Hellmuth Michaelis
-.\"
-.\" 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.
-.\"
-.\" 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.
-.\"
-.\" Last Edit-Date: [Mon Mar 27 17:04:14 2000]
-.\"
-.\" $FreeBSD$
-.\"
-.Dd March 27, 2000
-.Dt KCON 1
-.Os
-.Sh NAME
-.Nm kcon
-.Nd pcvt keyboard control and remapping
-.Sh SYNOPSIS
-.Nm
-.Op Fl d Ar delay
-.Op Fl l
-.Op Fl m Ar map
-.Op Fl o
-.Op Fl p
-.Op Fl R
-.Op Fl r Ar rate
-.Op Fl s
-.Op Fl t Ns Ar +/-
-.Op Fl x
-.Sh DESCRIPTION
-The
-.Nm
-utility
-is used for controlling all aspects of keyboard configuration for the 'pcvt'
-video driver.
-.Pp
-The available options are:
-.Bl -tag -width flag
-.It Fl d Ar delay
-Specifies the delay after which the last key entered will be repeated by the
-Keyboard.
-Valid values are 0..3 corresponding to delays of 250, 500, 750 and
-1000 milliseconds.
-.It Fl l
-Displays the current keyboard map in use by the driver.
-.It Fl m Ar map
-Specifies the map entry to be searched in the keyboard capabilities database
-.Nm keycap .
-The database is searched for the entry and if found, the mapping
-is loaded and is used in the driver from then on.
-.It Fl o
-Switches display of control codes to octal in the listing of the current map.
-To be used in conjunction with the
-.Fl l
-option.
-.It Fl p
-Uses 'pure' output when listing - the Escape character is displayed in either
-octal or hexadecimal and not as 'ESC'.
-To be used in conjunction with the
-.Fl l
-option.
-.It Fl r Ar rate
-Specifies the character repetition rate.
-Valid argument values are 0...31
-corresponding to rates of 30 characters/second ...\& 2 characters/second.
-.It Fl R
-Reset the Keyboard.
-.It Fl s
-Displays the current settings of the rate and delay values.
-.It Fl t Ar +/-
-Specify this option to enable
-.Pq Ar +
-or disable
-.Pq Ar -
-the repetition of keys.
-.It Fl x
-Switches display of control codes to hexadecimal in the listing of the current map.
-To be used in conjunction with the
-.Fl l
-option.
-This is the default behaviour.
-.El
-.Sh FILES
-.Bl -tag -width /usr/share/misc/keycap.pcvt -compact
-.It Pa /usr/share/misc/keycap.pcvt
-Keyboard capabilities data base file if nothing else was chosen during installation.
-.It Pa /dev/console
-Keyboard raw device.
-.El
-.Sh EXAMPLES
-The command
-.Dq Li kcon -m gb
-loads the entry 'gb' from the keycap file into the keyboard to switch to
-a british keyboard behaviour.
-.Pp
-The command
-.Dq Li kcon -r 0 -d 0
-switches the keyboard to emit characters at a rate of 30 characters per second
-after a key has been held down for 250 milliseconds.
-.Sh SEE ALSO
-.Xr keycap 3 ,
-.Xr keycap 5
-.Sh BUGS
-The
-.Nm
-utility detects several inconsistencies in the keycap database.
-In case of errors
-.Nm
-exits with an error message.
-If this happens, the keyboard may remain in
-an undefined state.
-To recover from such situation, execute
-.Dq Li kcon -m default .
diff --git a/usr.sbin/pcvt/kcon/kcon.c b/usr.sbin/pcvt/kcon/kcon.c
deleted file mode 100644
index 4318bf2..0000000
--- a/usr.sbin/pcvt/kcon/kcon.c
+++ /dev/null
@@ -1,743 +0,0 @@
-/*
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1993 Holger Veit.
- *
- * All rights reserved.
- *
- * This code is derived from software contributed to 386BSD by
- * Holger Veit
- *
- * 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 and Holger Veit
- * 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.
- */
-
-/*---------------------------------------------------------------------------*
- *
- * kcon.c Keyboard control and remapping
- * ----------------------------------------------
- *
- * based on "keymap" which was written by
- * Holger Veit (veit@du9ds3.uni-duisburg.de)
- *
- * Last Edit-Date: [Mon Mar 27 17:03:50 2000]";
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include <stdio.h>
-#include <string.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/ioctl.h>
-#include <machine/pcvt_ioctl.h>
-
-#include "keycap.h"
-
-int Rf = 0;
-int df = 0;
-int lf = 0;
-int mf = 0;
-int of = 0;
-int pf = 0;
-int rf = 0;
-int tf = 0;
-int xf = 0;
-int sf = 0;
-
-/*---------------------------------------------------------------------------*
- * main entry
- *---------------------------------------------------------------------------*/
-main(argc, argv)
-int argc;
-char *argv[];
-{
- int c = 0;
-
- int errf = 0;
-
- int rate = -1;
- int delay = -1;
- char *map;
- int kbfd;
-
- while((c = getopt(argc, argv, "Rd:lm:opr:st:x")) != -1)
- {
- switch(c)
- {
- case 'R':
- Rf = 1;
- break;
-
- case 'd':
- df = 1;
- delay = atoi(optarg);
- break;
-
- case 'l':
- lf = 1;
- break;
-
- case 'm':
- mf = 1;
- map = optarg;
- break;
-
- case 'o':
- if(xf)
- errf = 1;
- else
- of = 1;
- break;
-
- case 'p':
- pf = 1;
- break;
-
- case 'r':
- rf = 1;
- rate = atoi(optarg);
- break;
-
- case 's':
- sf = 1;
- break;
-
- case 't':
- if(*optarg == '+')
- tf = 1;
- else if(*optarg == '-')
- tf = -1;
- else
- errf = 1;
- break;
-
- case 'x':
- if(of)
- errf = 1;
- else
- xf = 1;
- break;
-
- default:
- usage();
- }
- }
-
- if((Rf == 0 && df == 0 && lf == 0 && tf == 0 && sf == 0 &&
- rf == 0 && mf == 0 ) || errf)
- {
- usage();
- }
-
- if((kbfd = open(KEYB_DEVICE, 0)) < 0)
- {
- perror("kcon: keyboard open failiure");
- exit(1);
- }
-
- if(sf)
- {
- showtypeamatic(kbfd);
- exit(0);
- }
-
- if(lf)
- {
- listcurrent(kbfd);
- exit(0);
- }
-
- if (Rf)
- {
- if (ioctl(kbfd, KBDRESET, 0) < 0) {
- perror ("kcon: ioctl KBDRESET failed");
- exit (1);
- }
- }
-
- if(tf)
- {
- setrepeat(kbfd, tf);
- }
-
- if(df || rf)
- {
- if(delay > 3)
- {
- fprintf(stderr,"Delay value (%d) out of range, possible values are 0..3!\n",delay);
- exit(1);
- }
- if(rate > 31)
- {
- fprintf(stderr,"Rate value (%d) out of range, possible values are 0..31!\n",rate);
- exit(1);
- }
- settypeam(kbfd, delay, rate);
- }
-
- if(mf)
- {
- remapkeys(kbfd, map);
- }
-
- close(kbfd);
- exit(0);
-}
-
-/*---------------------------------------------------------------------------*
- * display usage info & exit
- *---------------------------------------------------------------------------*/
-usage()
-{
- fprintf(stderr, "\nkcon: keyboard control and remapping utility for pcvt video driver\n");
- fprintf(stderr, "usage: [-R] [-d delay] [-l] [-m map] [-o] [-p] [-r rate] [-t +/-] [-x]\n");
- fprintf(stderr, " -R full reset of keyboard\n");
- fprintf(stderr, " -d delay until a key is repeated (range: 0...3 => 250...1000ms)\n");
- fprintf(stderr, " -l produce listing of current keyboard mapping\n");
- fprintf(stderr, " -m set keyboard remapping from a keycap entry\n");
- fprintf(stderr, " -o set octal output for listing\n");
- fprintf(stderr, " -p pure, don't display escape as 'ESC' for listing\n");
- fprintf(stderr, " -r chars/second repeat value (range: 0...31 => 30...2 chars/sec)\n");
- fprintf(stderr, " -s show, display the current keyboard typematic values\n");
- fprintf(stderr, " -t switch repeat on(+) or off(-)\n");
- fprintf(stderr, " -x set hexadecimal output for listing\n\n");
- exit(1);
-}
-
-/*---------------------------------------------------------------------------*
- * convert control char in string to printable values
- *---------------------------------------------------------------------------*/
-char *showcntrl(s)
-u_char *s;
-{
- static char res_str[80];
- static char conv_buf[80];
- int i;
-
- res_str[0] = '\0';
-
- for(i = 0; s[i]; i++)
- {
- if(((s[i] > 0x20) && (s[i] <= 0x7e)) || ((s[i] >= 0xa0) && (s[i] <= 0xff)))
- {
- conv_buf[0] = s[i];
- conv_buf[1] = '\0';
- }
- else if((s[i] == 0x1b) && (pf == 0))
- {
- strcpy(conv_buf,"ESC ");
- }
- else if(of)
- {
- sprintf(conv_buf,"\\%03.3o ", s[i]);
- }
- else
- {
- sprintf(conv_buf,"0x%02.2X ", s[i]);
- }
- strcat(res_str, conv_buf);
- }
- return(res_str);
-}
-
-/*---------------------------------------------------------------------------*
- * list the current keyboard mapping
- *---------------------------------------------------------------------------*/
-listcurrent(kbfd)
-int kbfd;
-{
- static char *keytypetab[] = {
- "NONE ",
- "SHIFT ",
- "ALT/META ",
- "NUMLOCK ",
- "CONTROL ",
- "CAPSLOCK ",
- "ASCII ",
- "SCROLL ",
- "FUNCTION ",
- "KEYPAD ",
- "BREAK ",
- "ALTGR ",
- "SHIFTLOCK",
- "CURSOR ",
- "RETURN "
- };
-
- struct kbd_ovlkey keyboardmap[KBDMAXKEYS];
- struct kbd_ovlkey *kbmapp;
- int keytype;
- int altgr_defined;
- int i;
-
- altgr_defined = 0;
- kbmapp = keyboardmap;
-
- for (i = 0; i < KBDMAXKEYS; i++)
- {
- kbmapp->keynum = i;
-
- if(ioctl(kbfd, KBDGCKEY, kbmapp) < 0)
- {
- perror("kcon: ioctl KBDGCKEY failed");
- exit(1);
- }
-
- if((kbmapp->type & KBD_MASK) == KBD_ALTGR)
- altgr_defined = i;
-
- kbmapp++;
- }
-
- if(altgr_defined)
- {
- printf("S Key KeyType Normal Shift Control Altgr \n");
- printf("- --- --------- --------------- --------------- --------------- ---------------\n");
- }
- else
- {
- printf("S Key KeyType Normal Shift Control \n");
- printf("- --- --------- --------------- --------------- ---------------\n");
- }
-
- kbmapp = &keyboardmap[1];
-
- for(i = 1; i < KBDMAXKEYS; i++)
- {
- keytype = kbmapp->type;
-
- if(keytype)
- {
- if(keytype & KBD_OVERLOAD)
- printf("! %3.3d %9.9s ", i, keytypetab[keytype & KBD_MASK]);
- else
- printf("- %3.3d %9.9s ", i, keytypetab[keytype & KBD_MASK]);
-
- switch(keytype & KBD_MASK)
- {
-
- case KBD_NUM:
- case KBD_ASCII:
- case KBD_FUNC:
- case KBD_KP:
- case KBD_CURSOR:
- case KBD_RETURN: /* ??? */
-
- if(kbmapp->subu == KBD_SUBT_STR)
- printf("%-15s ",showcntrl(kbmapp->unshift));
- else
- printf("Function() ");
-
- if(kbmapp->subs == KBD_SUBT_STR)
- printf("%-15s ",showcntrl(kbmapp->shift));
- else
- printf("Function() ");
-
- if(kbmapp->subc == KBD_SUBT_STR)
- printf("%-15s ",showcntrl(kbmapp->ctrl));
- else
- printf("Function() ");
-
- if(altgr_defined)
- {
- if(kbmapp->suba == KBD_SUBT_STR)
- printf("%-15s ",showcntrl(kbmapp->altgr));
- else
- printf("Function() ");
- }
- break;
- }
- putchar('\n');
- }
- kbmapp++;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * show delay and rate values for keyboard
- *---------------------------------------------------------------------------*/
-showtypeamatic(kbfd)
-int kbfd;
-{
- static char *delaytab[] = {
- "250",
- "500",
- "750",
- "1000"
- };
-
- static char *ratetab[] = {
- "30.0",
- "26.7",
- "24.0",
- "21.8",
- "20.0",
- "18.5",
- "17.1",
- "16.0",
- "15.0",
- "13.3",
- "12.0",
- "10.9",
- "10.0",
- "9.2",
- "8.6",
- "8.0",
- "7.5",
- "6.7",
- "6.0",
- "5.5",
- "5.0",
- "4.6",
- "4.3",
- "4.0",
- "3.7",
- "3.3",
- "3.0",
- "2.7",
- "2.5",
- "2.3",
- "2.1",
- "2.0"
- };
-
- int cur_typemat_val;
- int delay, rate;
-
- if((ioctl(kbfd, KBDGTPMAT, &cur_typemat_val)) < 0)
- {
- perror("kcon: ioctl KBDGTPMAT failed");
- exit(1);
- }
-
- delay = ((cur_typemat_val & 0x60) >> 5);
- rate = cur_typemat_val & 0x1f;
-
- printf("\nDisplaying the current keyboard typematic values:\n\n");
- printf("The delay-until-repeat time is [ %s ] milliseconds\n",delaytab[delay]);
- printf("The repeat-rate is [ %s ] characters per second\n\n",ratetab[rate]);
-}
-
-/*---------------------------------------------------------------------------*
- * set repeat feature on/off
- *---------------------------------------------------------------------------*/
-setrepeat(kbfd, tf)
-int kbfd;
-int tf;
-{
- int srepsw_val;
-
- if(tf == 1)
- srepsw_val = KBD_REPEATON;
- else
- srepsw_val = KBD_REPEATOFF;
-
- if(ioctl(kbfd, KBDSREPSW, &srepsw_val) < 0)
- {
- perror("kcon: ioctl KBDREPSW failed");
- exit(1);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * set delay and rate values for keyboard
- *---------------------------------------------------------------------------*/
-settypeam(kbfd, delay, rate)
-int kbfd;
-int delay;
-int rate;
-{
- int cur_typemat_val;
- int new_typemat_val;
-
- if((ioctl(kbfd, KBDGTPMAT, &cur_typemat_val)) < 0)
- {
- perror("kcon: ioctl KBDGTPMAT failed");
- exit(1);
- }
-
- if(delay == -1)
- delay = (cur_typemat_val & 0x60);
- else
- delay = ((delay << 5) & 0x60);
-
- if(rate == -1)
- rate = (cur_typemat_val & 0x1f);
- else
- rate &= 0x1f;
-
- new_typemat_val = delay | rate;
-
- if((ioctl(kbfd, KBDSTPMAT, &new_typemat_val)) < 0)
- {
- perror("kcon: ioctl KBDSTPMAT failed");
- exit(1);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * remap keyboard from keycap entry
- *---------------------------------------------------------------------------*/
-remapkeys(kbfd, map)
-int kbfd;
-char *map;
-{
- char cap_entry[1024];
- int ret;
- char keyflag[128];
- int i;
-
- /* try to find the entry */
-
- ret = kgetent(cap_entry, map);
-
- if(ret == -1)
- {
- fprintf(stderr, "kcon: keycap database not found or not accessible!\n");
- exit(1);
- }
- else if(ret == 0)
- {
- fprintf(stderr, "kcon: keycap entry [%s] not found in database!\n", map);
- exit(1);
- }
-
- /* set default mapping */
-
- if((ioctl(kbfd, KBDDEFAULT)) < 0)
- {
- perror("kcon: ioctl KBDDEFAULT failed");
- exit(1);
- }
-
- /* DE flag present? */
-
- if(kgetflag("de"))
- return;
-
- for(i = 0; i < KBDMAXKEYS; i++)
- keyflag[i] = 0;
-
- set_lock(keyflag, kbfd);
-
- set_shift(keyflag, kbfd);
-
- set_char(keyflag, kbfd);
-}
-
-/*---------------------------------------------------------------------------*
- * care for lock keys
- *---------------------------------------------------------------------------*/
-set_lock(keyflag, kbfd)
-char keyflag[];
-int kbfd;
-{
- int i, j;
- char cap[16];
- struct kbd_ovlkey entry;
-
- struct {
- char *ch;
- u_short typ;
- } lock[] =
- {
- "ca", KBD_CAPS,
- "sh", KBD_SHFTLOCK,
- "nl", KBD_NUMLOCK,
- "sc", KBD_SCROLL
- };
-
-
- for(i = 0; i < 4; i++)
- {
- int n;
-
- sprintf(cap, "%s", lock[i].ch);
-
- n = kgetnum(cap);
-
- if(n > 0)
- {
- if (keyflag[n])
- {
- fprintf(stderr,"kcon: duplicate key definition for key [%d]!\n",n);
- exit(1);
- }
- keyflag[n] = 1;
-
- entry.keynum = n;
- entry.type = lock[i].typ;
-
- if((ioctl(kbfd, KBDSCKEY, &entry)) < 0)
- {
- perror("kcon: ioctl KBDSCKEY failed");
- exit(1);
- }
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * care for shifting keys
- *---------------------------------------------------------------------------*/
-set_shift(keyflag, kbfd)
-char keyflag[];
-int kbfd;
-{
- int i, j;
- char cap[16];
- struct kbd_ovlkey entry;
-
- struct {
- char ch;
- u_short typ;
- } shift[] =
- {
- 'm', KBD_META,
- 'l', KBD_ALTGR,
- 'h', KBD_SHIFT,
- 't', KBD_CTL
- };
-
- for(i = 0; i < 4; i++)
- {
- for(j = 1; j < 10; j++)
- {
- int n;
-
- sprintf(cap, "%c%d", shift[i].ch,j);
-
- n = kgetnum(cap);
-
- if (n >= 0)
- {
- if (keyflag[n])
- {
- fprintf(stderr,"kcon: duplicate key definition for key [%d]!\n",n);
- exit(1);
- }
- keyflag[n] = 1;
-
- entry.keynum = n;
- entry.type = shift[i].typ;
- if((ioctl(kbfd, KBDSCKEY, &entry)) < 0)
- {
- perror("kcon: ioctl KBDSCKEY failed");
- exit(1);
- }
- }
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * care for normal keys
- *---------------------------------------------------------------------------*/
-set_char(keyflag, kbfd)
-char keyflag[];
-int kbfd;
-{
- int i, j;
- char cap[16];
- int setflag;
- char *addr_str;
- char *new_str;
- struct kbd_ovlkey entry;
-
- struct {
- char *addr;
- char ch;
- } standard[] = {
- 0, 'D',
- &entry.unshift[0], 'K',
- &entry.shift[0], 'S',
- &entry.ctrl[0], 'C',
- &entry.altgr[0], 'A'
- };
-
- for(i = 1; i < KBDMAXKEYS; i++)
- {
- setflag = 0;
-
- entry.keynum = i;
-
- if((ioctl(kbfd, KBDGOKEY, &entry)) < 0)
- {
- perror("kcon: ioctl KBDGOKEY failed");
- exit(1);
- }
-
- entry.type = KBD_ASCII;
-
- for(j = 0; j < 5; j++)
- {
- sprintf(cap, "%c%d", standard[j].ch,i);
-
- if((j == 0) && (kgetflag(cap)))
- {
- /* delete a key */
-
- entry.type = KBD_NONE;
- setflag = 1;
- goto setit;
-
- }
- else
- {
- addr_str = standard[j].addr;
- if(new_str = kgetstr(cap, &addr_str))
- {
- if(strlen(new_str) > KBDMAXOVLKEYSIZE)
- {
- fprintf(stderr, "kcon: database entry string [%s] longer than max [%d]!\n",new_str,KBDMAXOVLKEYSIZE);
- exit(1);
- }
- setflag = 1;
- }
- }
- }
-
-setit: if (setflag)
- {
- if (keyflag[i])
- {
- fprintf(stderr,"kcon: duplicate key definition for key [%d]!\n",i);
- exit(1);
- }
- keyflag[i] = 1;
-
- if((ioctl(kbfd, KBDSCKEY, &entry)) < 0)
- {
- perror("kcon: ioctl KBDSCKEY failed");
- exit(1);
- }
- }
- }
-}
-
-/*------------------- EOF ------------------------------------------------*/
diff --git a/usr.sbin/pcvt/keycap/Makefile b/usr.sbin/pcvt/keycap/Makefile
deleted file mode 100644
index 21613d2..0000000
--- a/usr.sbin/pcvt/keycap/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-# $FreeBSD$
-
-LIB= keycap
-MAN= keycap.3
-MLINKS+= keycap.3 kgetent.3 \
- keycap.3 kgetnum.3 \
- keycap.3 kgetflag.3 \
- keycap.3 kgetstr.3
-MAN+= man5/keycap.5
-SRCS= keycap.c
-
-FILES= keycap.src
-FILESDIR= /usr/share/misc
-FILESNAME= keycap.pcvt
-
-CFLAGS+= -DKEYCAP_PATH=\"${FILESDIR}/${FILESNAME}\"
-
-#CLEANFILES+= keycap.0 man5/keycap.0
-
-.include <bsd.lib.mk>
diff --git a/usr.sbin/pcvt/keycap/keycap.3 b/usr.sbin/pcvt/keycap/keycap.3
deleted file mode 100644
index 19348d2..0000000
--- a/usr.sbin/pcvt/keycap/keycap.3
+++ /dev/null
@@ -1,125 +0,0 @@
-.\"
-.\" Copyright (c) 1992,1993,1994 Hellmuth Michaelis
-.\"
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\"
-.\" 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 the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
-.\"
-.\" @(#)keycap.3, 3.00, Last Edit-Date: [Sun Jan 2 13:46:43 1994]
-.\" $FreeBSD$
-.\"
-.Dd January 3, 1993
-.Dt KEYCAP 3
-.Os
-.Sh NAME
-.Nm kgetent ,
-.Nm kgetnum ,
-.Nm kgetflag ,
-.Nm kgetstr
-.Nd routines for accessing the keycap database
-.Sh SYNOPSIS
-.Ft int
-.Fn kgetent "char *bp" "char *name"
-.Ft int
-.Fn kgetnum "char *id"
-.Ft int
-.Fn kgetflag "char *id"
-.Ft char *
-.Fn kgetstr "char *id" "char **area"
-.Sh DESCRIPTION
-These functions extract and use capabilities from a keyboard capability data
-base, usually
-.Pa /usr/share/misc/keycap.pcvt ,
-the format of which is described in
-.Xr keycap 5 .
-.Pp
-The
-.Fn kgetent
-function
-extracts the entry for keyboard mapping
-.Fa name
-into the buffer at
-.Fa bp .
-The
-.Fa bp
-argument
-should be a character buffer of size
-1024 and must be retained through all subsequent calls to
-.Fn kgetnum ,
-.Fn kgetflag ,
-and
-.Fn kgetstr .
-The
-.Fn kgetent
-function
-returns \-1 if none of the
-.Nm keycap
-data base files could be opened,
-0 if the map name given does not have an entry,
-and 1 if all goes well.
-.Pp
-The
-.Fn kgetnum
-function
-gets the numeric value of capability
-.Fa id ,
-returning \-1 if is not given for the map.
-.Pp
-The
-.Fn kgetflag
-function
-returns 1 if the specified capability is present in
-the map's entry, 0 if it is not.
-.Pp
-The
-.Fn kgetstr
-function
-returns the string value of the capability
-.Fa id ,
-places it in the buffer at
-.Fa area ,
-and advances the
-.Fa area
-pointer.
-The
-.Fn kgetstr
-function
-returns
-.Dv NULL
-if the capability was not found.
-.Sh FILES
-.Bl -tag -width /usr/share/misc/keycap.pcvt -compact
-.It Pa /usr/share/misc/keycap.pcvt
-Keyboard capabilities database (if nothing else chosen during installation).
-.El
-.Sh SEE ALSO
-.Xr kcon 1 ,
-.Xr keycap 5
diff --git a/usr.sbin/pcvt/keycap/keycap.c b/usr.sbin/pcvt/keycap/keycap.c
deleted file mode 100644
index 9c276a3..0000000
--- a/usr.sbin/pcvt/keycap/keycap.c
+++ /dev/null
@@ -1,383 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Holger Veit
- *
- * 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 the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
- *
- */
-
-#ifndef lint
-static const char rcsid[] =
- "$FreeBSD$";
-#endif
-
-static char *id =
- "@(#)keycap.c, 3.20, Last Edit-Date: [Tue Dec 20 14:51:50 1994]";
-
-/*---------------------------------------------------------------------------*
- *
- * keycap.c Keyboard capabilities database handling
- * -------------------------------------------------------
- *
- * converted from printcap by Holger Veit (veit@du9ds3.uni-duisburg.de)
- *
- * BUG: Should use a "last" pointer in tbuf, so that searching
- * for capabilities alphabetically would not be a n**2/2
- * process when large numbers of capabilities are given.
- *
- * Note: If we add a last pointer now we will screw up the
- * tc capability. We really should compile termcap.
- *
- * modified by Hellmuth Michaelis (hm@hcshh.hcs.de) to fit into the
- * vt220 driver pcvt 2.0 distribution
- *
- * -hm header conversion & cosmetic changes for pcvt 2.0 distribution
- * -hm debugging remapping
- * -hm cleaning up from termcap ....
- * -hm split off header file keycap.h
- *
- *---------------------------------------------------------------------------*/
-
-#include <stdio.h>
-#include <ctype.h>
-#include <unistd.h>
-
-#include "keycap.h"
-
-#define KEYCAP_BUFSIZ 1024
-
-#define MAXHOP 32 /* max number of tc= indirections */
-
-char *getenv();
-
-static FILE *pfp = NULL; /* keycap data base file pointer */
-static char *tbuf;
-static int hopcount; /* detect infinite loops in keycap, init 0 */
-
-static int knchktc();
-static int knamatch();
-static char *kdecode();
-
-/*---------------------------------------------------------------------------*
- * match a name
- *---------------------------------------------------------------------------*/
-static char *nmatch(id,cstr)
-char *id,*cstr;
-{
- register n = strlen(id);
- register char *c = cstr+n;
-
- if (strncmp(id,cstr,n)==0 &&
- (*c==':' || *c=='|' || *c=='=' || *c=='#') || *c=='@')
- return c;
- return 0;
-}
-
-/*---------------------------------------------------------------------------*
- * Get an entry for keyboard name in buffer bp from the keycap file.
- * Parse is very rudimentary, we just notice escaped newlines.
- *---------------------------------------------------------------------------*/
-kgetent(bp, name)
-char *bp, *name;
-{
- register char *cp;
- register int c;
- register int i = 0, cnt = 0;
- char ibuf[KEYCAP_BUFSIZ];
- char *cp2;
- int tf;
-
- tbuf = bp;
- tf = 0;
-
- tf = open(KEYCAP_PATH, 0);
-
- if (tf < 0)
- return (-1);
- for (;;) {
- cp = bp;
- for (;;) {
- if (i == cnt) {
- cnt = read(tf, ibuf, KEYCAP_BUFSIZ);
- if (cnt <= 0) {
- close(tf);
- return (0);
- }
- i = 0;
- }
- c = ibuf[i++];
- if (c == '\n') {
- if (cp > bp && cp[-1] == '\\'){
- cp--;
- continue;
- }
- break;
- }
- if (cp >= bp+KEYCAP_BUFSIZ) {
- write(STDERR_FILENO, "Keycap entry too long\n", 23);
- break;
- } else
- *cp++ = c;
- }
- *cp = 0;
-
- /*
- * The real work for the match.
- */
- if (knamatch(name)) {
- close(tf);
- return(knchktc());
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * knchktc: check the last entry, see if it's tc=xxx. If so, recursively
- * find xxx and append that entry (minus the names) to take the place of
- * the tc=xxx entry. Note that this works because of the left to right scan.
- *---------------------------------------------------------------------------*/
-static int knchktc()
-{
- register char *p, *q;
- char tcname[16]; /* name of similar keyboard */
- char tcbuf[KEYCAP_BUFSIZ];
- char *holdtbuf = tbuf;
- int l;
-
- p = tbuf + strlen(tbuf) - 2; /* before the last colon */
- while (*--p != ':')
- if (p<tbuf) {
- write(STDERR_FILENO, "Bad keycap entry\n", 18);
- return (0);
- }
- p++;
- /* p now points to beginning of last field */
- if (p[0] != 't' || p[1] != 'c')
- return(1);
- strcpy(tcname,p+3);
- q = tcname;
- while (q && *q != ':')
- q++;
- *q = 0;
- if (++hopcount > MAXHOP) {
- write(STDERR_FILENO, "Infinite tc= loop\n", 18);
- return (0);
- }
- if (kgetent(tcbuf, tcname) != 1)
- return(0);
- for (q=tcbuf; *q != ':'; q++)
- ;
- l = p - holdtbuf + strlen(q);
- if (l > KEYCAP_BUFSIZ) {
- write(STDERR_FILENO, "Keycap entry too long\n", 23);
- q[KEYCAP_BUFSIZ - (p-tbuf)] = 0;
- }
- strcpy(p, q+1);
- tbuf = holdtbuf;
- return(1);
-}
-
-/*---------------------------------------------------------------------------*
- * knamatch deals with name matching. The first field of the keycap entry
- * is a sequence of names separated by |'s, so we compare against each such
- * name. The normal : terminator after the last name (before the first field)
- * stops us.
- *---------------------------------------------------------------------------*/
-static int knamatch(np)
-char *np;
-{
- register char *Np, *Bp;
-
- Bp = tbuf;
- if (*Bp == '#' || *Bp == 0)
- return(0);
- for (;;) {
- for (Np = np; *Np && *Bp == *Np; Bp++, Np++)
- continue;
- if (*Np == 0 && (*Bp == '|' || *Bp == ':' || *Bp == 0))
- return (1);
- while (*Bp && *Bp != ':' && *Bp != '|')
- Bp++;
- if (*Bp == 0 || *Bp == ':')
- return (0);
- Bp++;
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Skip to the next field. Notice that this is very dumb, not knowing about
- * \: escapes or any such. If necessary, :'s can be put into the keycap file
- * in octal.
- *---------------------------------------------------------------------------*/
-static char *kskip(bp)
-char *bp;
-{
- while (*bp && *bp != ':')
- bp++;
- if (*bp == ':')
- bp++;
- return (bp);
-}
-
-/*---------------------------------------------------------------------------*
- * Return the (numeric) option id. Numeric options look like 'li#80' i.e.
- * the option string is separated from the numeric value by a # character.
- * If the option is not found we return -1. Note that we handle octal
- * numbers beginning with 0.
- *---------------------------------------------------------------------------*/
-int kgetnum(id)
-char *id;
-{
- register int i, base;
- register char *bp = tbuf,*xp;
-
- for (;;) {
- bp = kskip(bp);
- if (*bp == 0)
- return (-1);
- if ((xp=nmatch(id,bp)) == 0)
- continue;
- bp = xp; /* we have an entry */
- if (*bp == '@')
- return(-1);
- if (*bp != '#')
- continue;
- bp++;
- base = 10;
- if (*bp == '0')
- base = 8;
- i = 0;
- while (isdigit(*bp))
- i *= base, i += *bp++ - '0';
- return (i);
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Handle a flag option. Flag options are given "naked", i.e. followed by
- * a : or the end of the buffer. Return 1 if we find the option, or 0 if
- * it is not given.
- *---------------------------------------------------------------------------*/
-int kgetflag(id)
-char *id;
-{
- register char *bp = tbuf,*xp;
-
- for (;;) {
- bp = kskip(bp);
- if (!*bp)
- return (0);
- if ((xp=nmatch(id,bp)) != 0) {
- bp = xp;
- if (!*bp || *bp == ':')
- return (1);
- else if (*bp == '@')
- return(0);
- }
- }
-}
-
-/*---------------------------------------------------------------------------*
- * Get a string valued option. These are given as 'cl=^Z'. Much decoding
- * is done on the strings, and the strings are placed in area, which is a
- * ref parameter which is updated. No checking on area overflow.
- *---------------------------------------------------------------------------*/
-char *kgetstr(id, area)
-char *id;
-char **area;
-{
- register char *bp = tbuf,*xp;
-
- for (;;) {
- bp = kskip(bp);
- if (!*bp)
- return (0);
- if ((xp = nmatch(id,bp)) == 0)
- continue;
- bp = xp;
- if (*bp == '@')
- return(0);
- if (*bp != '=')
- continue;
- bp++;
- return (kdecode(bp, area));
- }
-}
-
-/*---------------------------------------------------------------------------*
- * kdecode does the grung work to decode the string capability escapes.
- *---------------------------------------------------------------------------*/
-static char *kdecode(str, area)
-char *str;
-char **area;
-{
- register char *cp;
- register int c;
- register char *dp;
- int i;
-
- cp = *area;
- while ((c = *str++) && c != ':') {
- switch (c) {
-
- case '^':
- c = *str++ & 037;
- break;
-
- case '\\':
- dp = "E\033^^\\\\::n\nr\rt\tb\bf\f";
- c = *str++;
-nextc:
- if (*dp++ == c) {
- c = *dp++;
- break;
- }
- dp++;
- if (*dp)
- goto nextc;
- if (isdigit(c)) {
- c -= '0', i = 2;
- do
- c <<= 3, c |= *str++ - '0';
- while (--i && isdigit(*str));
- }
- break;
- }
- *cp++ = c;
- }
- *cp++ = 0;
- str = *area;
- *area = cp;
- return (str);
-}
-
-/*-------------------------------- EOF --------------------------------------*/
diff --git a/usr.sbin/pcvt/keycap/keycap.h b/usr.sbin/pcvt/keycap/keycap.h
deleted file mode 100644
index 1dc4c3e..0000000
--- a/usr.sbin/pcvt/keycap/keycap.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*-
- * Copyright (c) 1992, 1993 The Regents of the University of California.
- * All rights reserved.
- *
- * This code is derived from software contributed to Berkeley by
- * Holger Veit
- *
- * 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 the University of
- * California, Berkeley and its contributors.
- * 4. Neither the name of the University nor the names of its contributors
- * may be used to endorse or promote products derived from this software
- * without specific prior written permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
- *
- * @(#)keycap.h, 3.20, Last Edit-Date: [Tue Dec 20 14:52:11 1994]
- */
-
-#ifndef _KEYCAP_H_
-#define _KEYCAP_H_
-
-int kgetent( char*, char* );
-int kgetnum( char* );
-int kgetflag( char* );
-char *kgetstr( char*, char** );
-
-#endif /* _KEYCAP_H_ */
-
-/*-------------------------------- EOF -------------------------------------*/
diff --git a/usr.sbin/pcvt/keycap/keycap.src b/usr.sbin/pcvt/keycap/keycap.src
deleted file mode 100644
index a991264e..0000000
--- a/usr.sbin/pcvt/keycap/keycap.src
+++ /dev/null
@@ -1,627 +0,0 @@
-#
-# Copyright (c) 1992, 2002 Hellmuth Michaelis
-#
-# Copyright (c) 1992, 1994 Joerg Wunsch and Holger Veit
-#
-# 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,
-# Joerg Wunsch and Holger Veit.
-# 4. The names of the 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 AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
-#
-#---------------------------------------------------------------------------
-#
-# keyboard mappings for vt220 emulator pcvt 3.00
-# ----------------------------------------------
-#
-# Last Edit-Date: [Wed Apr 24 16:27:35 2002]
-#
-# $FreeBSD$
-#
-#---------------------------------------------------------------------------
-
-df|default|default entry:\
- :de:
-
-tt|test|Test entry which swaps y and z:\
- :K22=z:S22=Z:C22=\032:\
- :K46=y:S46=Y:C46=\031:
-
-# from codrv, untested
-be|belgium|Belgian mapping:\
- :K1=\262:S1=\263:\
- :K2=&:S2=1:A2=|:\
- :K3=\351:S3=2:A3=@:\
- :K4=":S4=3:A4=#:\
- :K5=':S5=4:\
- :K6=(:S6=5:\
- :K7=\247:S7=6:A7=\136:\
- :K8=\350:S8=7:\
- :K9=!:S9=8:\
- :K10=\347:S10=9:A10={:\
- :K11=\340:S11=0:A11=}:\
- :K12=):S12=\260:\
- :K13=-:S13=_:\
- :K17=a:S17=A:C17=^A:\
- :K18=z:S18=Z:C18=^z:\
- :K27=\136:S27=\250:A27=[:p1#27:\
- :K28=$:S28=*:A28=]:\
- :K31=q:S31=Q:C31=^q:\
- :K40=m:S40=M:C40=^m:\
- :K41=\371:S41=%:A41=':p2#41:\
- :K42=\265:S42=\243:A42=\264:p3#42:\
- :K45=<:S45=>:A45=\\:\
- :K46=w:S46=W:C46=^w:\
- :K52=,:S52=\077:\
- :K53=;:S53=.:\
- :K54=\072:S54=/:\
- :K55==:S55=+:A55=~:\
- :l1#62:a0:
-
-# from codrv, untested
-ca|canadafr|Canadian French mapping:\
- :K1=#:S1=|:A1=\\:\
- :A2=\261:S3=":A3=@:S4=/:A4=\243:A5=\242:\
- :A6=\244:S7=\077:A7=\254:S8=&:A8=\246:S9=*:A9=\262:\
- :S10=(:A10=\263:S11=):A11=\274:\
- :K12=-:S12=_:A12=\275:\
- :K13==:S13=+:A13=\276:\
- :A25=\247:A26=\266:\
- :K27=\136:S27=\136:A27=[:\
- :K28=\270:S28=\250:A28=]:p1#28:\
- :A40=~:K41=`:S41=`:A41={:\
- :K42=<:S42=>:A42=}:\
- :K45=\253:S45=\273:A45=\260:\
- :A49=\253:A50=\273:A51=\260:\
- :A52=\265:K53=,:S53=,:A53=-:\
- :K54=\351:S54=\311:A54=':\
- :l1#62:a0:
-
-# from codrv, untested
-c1|swissde|Swiss German mapping:\
- :K1=\247:S1=\260:p1#1:\
- :S2=+:A2=|:S3=":A3=@:S4=*:A4=#:S5=\347:S7=&:A7=\254:\
- :S8=/:A8=\246:S9=(:A9=\242:S10=):S11==:\
- :K12=`:S12=\077:A12=':p2#12:\
- :K13=^:S13=\\:A13=~:p3#13:\
- :K22=z:S22=Z:C22=\032:\
- :S27=\350:K27=\374:A27=[:\
- :K28=\250:S28=!:A28=]:\
- :S40=\351:K40=\366:\
- :S41=\340:K41=\344:A41={:\
- :K42=$:S42=\243:A42=}:\
- :K45=<:S45=>:A45=\\:\
- :K46=y:S46=Y:C46=\031:
- :S53=;:S54=\072:K55=-:S55=_:\
- :l1#62:a0:
-
-# from codrv, untested
-c2|swissfr|Swiss French mapping:\
- :K27=\350:S27=\374:A27=[:\
- :K40=\351:S40=\366:\
- :K41=\340:S41=\344:A41={:\
- :tc=swissde:
-
-# more programmer-like than an original German kbd, you needn't
-# have gum-fingers to get `{}' and the like:-)
-# maps: ae -> [, oe -> \, ue -> ], Ae -> {, Oe -> |, Ue -> }
-# umlaute are available as AltGr- and Control-Mappings
-# also maps Pause -> ^Z
-#
-# (from Joerg Wunsch)
-#
-# l1/m1 bindings: left Alt is AltGr
-# Emacs functions:
-# C79/C89: ctrl-{leftarrow,rightarrow} {backward,forward} word
-# A79/A89: {backward,forward} sexp
-# C83/C84: ctrl-{uparrow,downarrow} {backward,forward} window
-#
-de-prog|germany-prog|programmer's mapping for german keyboard:\
- :K27=]:S27=}:A27=\374:C27=\334:\
- :K40=\\:S40=|:A40=\366:C40=\326:\
- :K41=[:S41={:A41=\344:C41=\304:\
- :K126=\032:C126=\003:\
- :tc=de:
-# :l1#60:l2#62:\
-# :C79=^[B:K79=^[[D:S79=^[OD:A79=^[^B:\
-# :C89=^[F:K89=^[[C:S89=^[OC:A89=^[^F:\
-# :C83=^U-1^XO:K83=^[[A:S84=^[OA:\
-# :C84=^XO:K84=^[[B:S84=^[OB:\
-
-de|germany|German mapping for MF II-Keyboard:\
- :K1=\136:S1=\260:\
- :S3=\042:S4=\247:S7=&:S8=/:S9=(:S10=):S11=\075:\
- :A3=\262:A4=\263:A8={:A9=[:A10=]:A11=}:A12=\134:\
- :K12=\337:S12=?:C12=\034:\
- :K13=':S13=`:\
- :A17=\100:\
- :K22=z:S22=Z:C22=\032:\
- :K27=\374:S27=\334:\
- :K28=+:S28=*:A28=\176:\
- :K29=\043:S29=':A29=\174:\
- :K40=\366:S40=\326:\
- :K41=\344:S41=\304:\
- :A45=\174:\
- :K46=y:S46=Y:C46=\031:\
- :A52=\265:\
- :S53=;:S54=\072:\
- :K55=-:S55=_:\
- :l1#62:
-
-de-at|germany-at|German mapping for AT-Keyboard:\
- :K1=<:S1=>:\
- :S3=\042:\
- :S4=\247:\
- :S7=&:\
- :S8=/:\
- :S9=(:\
- :S10=):\
- :S11=\075:\
- :K12=\337:S12=?:C12=\034:\
- :K13=':S13=`:\
- :K14=#:S14=\136:\
- :K22=z:S22=Z:C22=\032:\
- :K27=\374:S27=\334:\
- :K28=+:S28=*:\
- :K29=\043:S29=':\
- :K40=\366:S40=\326:\
- :K41=\344:S41=\304:\
- :K46=y:S46=Y:C46=\031:\
- :S53=;:S54=\072:\
- :K55=-:S55=_:\
-
-# from codrv, untested
-# Includes improvements by Thomas Hiller (hiller@fzi.de)
-# and Andreas Israel (ai@hrz.tu-chemnitz.de)
-de-hi|germany-hiller|yet another German mapping:\
- :K1=\136:S1=\260:C1=|:\
- :S3=\042:S4=#:S7=&:S8=/:S9=(:S10=):S11=\075:\
- :A8={:A9=[:A10=]:A11=}:A17=@:A28=~:\
- :K12=\337:S12=\077:C12=\036:A12=\\:\
- :K13=':S13=`:C13=\134:p1#13:\
- :K22=z:S22=Z:C22=\032:\
- :K27=\374:S27=\334:C27=\035:\
- :K28=+:S28=*:C28=\000:\
- :K29=<:S29=>:C29=\134:\
- :K40=\366:S40=\326:C40=\034:\
- :K41=\344:S41=\304:C41=\033:\
- :K46=y:S46=Y:C46=\031:\
- :S53=;:S54=\072:\
- :K55=-:S55=_:\
- :l1#62:a0:
-
-# from codrv, untested
-# Contribution by Thomas Hiller (hiller@fzi.de)
-# "K42 may not work on 102 keys kbds, K29 seems to work"
-d1|de-102|german with mf2:\
- :K29=#:\
- :K42=#:\
- :K45=<:S45=>:A45=|:\
- :tc=germany:
-
-# from codrv, untested
-hv|holgi|Holgi's special MF1 keyboard mapping:\
- :K1=<:S1=>:C1=|:\
- :K29=#:S29=\136:A29=\\:C29=~:\
- :tc=germany:
-
-# from codrv, untested
-# Contributed by Andreas Israel (ai@hrz.tu-chemnitz.de)
-de-ai|nixmf2|ct22|nix|nix7|German Nixdorf MF2:\
- :A28=~:\
- :K29=#:S29=':\
- :K45=<:S45=>:A45=|:\
- :tc=germany:
-
-# from codrv, untested
-dk|denmark|Danish mapping:\
- :K1=\275:S1=\247:\
- :S3=":A3=@:\
- :A4=\243:\
- :S5=\244:A5=$:\
- :S7=&:S8=/:A8={:S9=(:A9=[:S10=):A10=]:S11==:A11=}:\
- :K12=+:S12=\077:\
- :K13=':S13=`:A13=|:p1#13:\
- :K27=\345:S27=\305:\
- :K28=\250:S28=\136:A28=~:p2#28:\
- :K40=\346:S40=\306:\
- :K41=\370:S41=\330:\
- :K42=:S42=*:\
- :K45=<:S45=>:A45=\\:\
- :S53=;:S54=\072:\
- :K55=-:S55=_:\
- :l1#62:a0:
-
-# from codrv, untested
-# Finnish keyboard map with 7-bit versions of the national
-# chars. The Latin1 chars are available with Alt-7, Alt-8, etc
-# (where normally you would have the 7-bit ones).
-# Makes C/C++ programming more comfortable, since the 7-bit chars
-# (|\{[}]) are needed much more often than the Latin1 chars.
-# -- Petri.Wessman@hut.fi
-fi|finland|finland7b|finland-ascii|Finnish ASCII mapping:\
- :l1#60:l2#62:\
- :A8=\344:A9=\304:A10=\305:A11=\345:A12=\326:A13=\366:\
- :K40=|:S40=\\:K41={:S41=[:K27=}:S27=]:\
- :S1=\275:K1=\247:\
- :S3=":A3=@:\
- :A4=\243:\
- :S5=$:A5=$:\
- :S7=&:S8=/:S9=(:S10=):S11==:\
- :K12=+:S12=\077:\
- :K13=':S13=`:\
- :K28=~:S28=\136:A28=~:\
- :K29=':S29=*:\
- :K45=<:S45=>:A45=|:\
- :S53=;:S54=\072:\
- :K55=-:S55=_:\
- :a0:
-
-# from codrv, untested
-# Finnish keyboard map with the Latin1 national chars in
-# their "right" place. --Petri.Wessman@hut.fi
-f1|finland8b|finland-latin1|Finnish Latin1 mapping:\
- :A8={:A9=[:A10=]:A11=}:A12=\\:\
- :K40=\366:S40=\326:K41=\344:S41=\304:K27=\345:S27=\305:\
- :tc=finland:
-
-
-# French keyboard mapping
-# From Matthieu Herrb <matthieu@laas.fr>
-# For 102 keys keyboards, produces 8 bits characters
-# with ISO Latin-1 encoding
-f8|france-iso-8859-1|French ISO 8859-1 102 keys keyboard:\
- :l1#62:\
- :K1=\262:S1=:\
- :K2=&:S2=1:\
- :K3=\351:S3=2:C3=\211:A3=~:\
- :K4=":S4=3:A4=#:\
- :K5=':S5=4:A5={:\
- :K6=(:S6=5:A6=[:\
- :K7=-:S7=6:C7=\036:A7=|:\
- :K8=\350:S8=7:C8=\210:A8=`:\
- :K9=_:S9=8:C9=\037:A9=\\:\
- :K10=\347:S10=9:C10=\207:A10=\136:\
- :K11=\340:S11=0:C11=\340:A11=@:\
- :K12=):S12=\260:A12=]:\
- :A13=}:\
- :K17=a:S17=A:C17=\001:\
- :K18=z:S18=Z:C18=\032:\
- :D27:\
- :K28=$:S28=\243:\
- :K29=*:S29=\265:\
- :K31=q:S31=Q:C31=\021:\
- :K40=m:S40=M:C40=\015;\
- :K41=\371:C41=\231:S41=%:\
- :K42=*:S42=\265:\
- :K46=w:S46=W:C46=\027:\
- :K52=,:S52=?:\
- :K53=;:S53=.:\
- :K54=\072:S54=/:C54=\037\
- :K55=!:S55=\266:
-
-# fr|france|French mapping:\
-# :de:
-#
-# from codrv, untested
-# f1|france120|French 120 mapping:\
-# :tc=belgium:
-#
-#
-# from codrv, untested
-#f2|france189|French 189 mapping:\
-# :S1=:A1=':p3#1:\
-# :A2=:A3=~:A5={:A6=[:A7=|:A8=`:\
-# :S9=_:A9=\\:A10=\136:A11=@:A12=]:A13=}:\
-# :A27=:A28=\244:A41=:A42=:\
-# :A45=:!:S45=\247:\
-# :tc=belgium:
-
-# From: Andy Duplain, duplain@rtf.bt.co.uk
-gb|greatbritain|British mapping for MF-2 keyboard:\
- :S1=|:S3=":C3=2:C12=-:S41=@:K42=#:S42=~:C42=#:K45=\\:S45=|:C45=\\:
-
-# from codrv, untested
-# This entry has been corrected by Mike Trim (mtrim@crucible.demon.co.uk)
-# (hv's comment: For the keys # and ~ you might also check the following
-# line
-# :K42=#:S42=~:\
-# Also I think I was wrong with the ALTGR key. If you need one, add this:
-# :l1#62:
-g1|greatbritain166|British 166 mapping:\
- :K1=`:S1=\254:A1=|:\
- :S3=":S4=\243:\
- :K41=':S41=@:\
- :K29=#:S29=~:\
- :K45=\\:S45=|:
-
-# from codrv, untested
-g2|greatbritain168|British 168 mapping:\
- :K1=\\:S1=|:\
- :S3=":S4=\243:S7=&:S8=:S9=(:S10=):A10=\261:\
- :S11=#:A11=\260:S12=:K13=\254:S13=-:\
- :K27=@:S27=`:\
- :K28=[:S28={:A28=~:\
- :K40=;:S40=+:\
- :K41=\072:S41=*:A41=\136:\
- :K42=]:S42=}:\
- :K45=|:S45=_:\
- :A52=\265:\
- :l1#62:a0:
-
-# from codrv, untested
-is:iceland:Island mapping:\
- :K1=\260:S1=\250:p1#1:\
- :S2=":S7=&:S8=/:A8={:S9=(:A9=[:S10=):A10=]:S11==:A11=}:\
- :K12=\\:S12=\326:\
- :K13=':S13=`:A13=|:\
- :A17=@:K27=\360:S27=\320:\
- :K28=':S28=\077:A28=~:\
- :K40=\346:S40=\306:\
- :K41=':S41=':A41=\136:p2#41:\
- :K42=+:S42=*:A42=`:p3#42:\
- :K45=<:S45=>:A45=|:\
- :S53=;:S54=\072:\
- :K54=\376:S54=\336:\
- :K104=,:104=,:\
- :l1#62:a0:
-
-# from codrv, untested
-i1|italy141|Italian 141 mapping:\
- :K1=\\:S1=|:\
- :S3=":S4=\243:S7=&:S8=/:A8={:S9=(:A9=[:S10=):A10=]:S11==:A11=}:\
- :K12=':A12=`:S12=\077:\
- :K13=\354:S13=\136:A13=~:\
- :K27=\350:S27=\351:\A27=[:\
- :K28=+:S28=*:A28=]:\
- :K40=\362:S40=\347:A40=@:\
- :K41=\340:S41=\260:A41=#:\
- :K29=\371:S29=\247:\
- :K45=<:S45=>:\
- :S53=;:S54=\072:\
- :K55=-:S55=_:\
- :l1#62:a0:
-
-# from codrv, untested
-i2|italy142|Italian 142 mapping:\
- :A8={:A9=[:A10=]:A11=}:\
- :A17=@:A27=:A28=~:A40=:A41=:\
- :tc=italy141:a0:
-
-# from codrv, untested
-nl|netherlands|Dutch mapping:\
- :K1=@:S1=\247:A1=\254:\
- :A2=\271:S3=":A3=\262:S4=#:A4=\263:A5=\274:A6=\275:S7=&:\
- :A7=\276:S8=_:A8=\243:S9=(:A9={:S10=):A10=}:S11=':\
- :K12=/:S12=\077:A12=\\:\
- :K13=\260:S13=~:A13=\270:p1#13:\
- :K20=\266:K27=\250:S27=^:p2#27:\
- :K28=*:S28=|:\
- :K40=+:S40=\261:\
- :K41=':S41=`:\
- :K42=<:S42=>:\
- :K45=[:S45=]:A45=|:\
- :S53=;:S54=\072:K55=-:S55=_:\
- :K104=,:S104=,:\
- :l1#62:a0:
-
-# Norwegian keyboard map with national characters.
-# Anders Nordby, anders@fix.no
-no|norway|Norwegian 8bit mapping ISO 8859-1:\
- :K1=\174:S1=\247:\
- :K2=\61:S2=\41:\
- :K3=\62:S3=\42:A3=\100:\
- :K4=\63:S4=\43:A4=\243:\
- :K5=\64:S5=\244:A5=\44:\
- :K6=\65:S6=\45:\
- :K7=\66:S7=\46:\
- :K8=\67:S8=\57:A8=\173:\
- :K9=\70:S9=\50:A9=\133:\
- :K10=\71:S10=\51:A10=\135:\
- :K11=\60:S11=\75:A11=\175:\
- :K12=\53:S12=\77:\
- :K13=\134:S13=\140:A13=\264:\
- :K28=\250:S28=\136:A28=\176:\
- :K29=\47:S29=\52:\
- :K54=\56:S54=\72:\
- :K53=\54:S53=\73:\
- :K55=\55:S55=\137:\
- :K41=\346:S41=\306:\
- :K40=\370:S40=\330:\
- :K27=\345:S27=\305:\
- :l1#62:a0:
-
-# from codrv, untested
-pt|portugal|Portugesian mapping:\
- :K1=\\:S1=|:\
- :S3=":A3=@:A4=\243:A5=\247:S7=&:S8=/:A8={:S9=(:A9=[:\
- :S10=):A10=]:S11=}:A11==:\
- :K12=':S12=\077:\
- :K13=\253:S13=\273:\
- :K40=\347:S40=\307:\
- :K41=\272:S41=\252:\
- :K42=~:S42=^:p1#42:\
- :K45=<:S45=>:\
- :S53=;:S54=\072:K55=-:S55=_:\
- :l1#62:a0:
-
-# from codrv, untested
-es|spain|Spainish mapping:\
- :K1=\272:S1=\252:A1=\\:\
- :A2=|:S3=":A3=@:S4=:A4=#:S7=&:A7=\254:S8=/:S9=(:S10=):S11==:\
- :K12=':S12=\077:p1#12:\
- :K13=\277:S13=\241:\
- :K27=`:S27=^:A27=[:p2#27:\
- :K28=+:S28=*:A28=]:\
- :K40=\361:S41=\321:\
- :K41=/:S41=\250:A41={:p3#41:\
- :K42=\347:S42=\307:A42=}:\
- :K45=<:S45=>:\
- :S53=;:S54=\072:\
- :K55=-:S55=_:\
- :K104=,:S104=,:\
- :l1#62:a0:
-
-# from codrv, untested
-# Contributed by Mats O Jansson, moj@stacken.kth.se
-# "Here is my map, rather large, but i want ALTGR normaly to be dead.
-# Only seven bit national characters have been placed where national characters
-# is on the keyboard."
-# We can help this man, just use the 'a0' capability -hv-
-s1|sweden1|Swedish mapping:\
- :l1#62:a0:\
- :D1:\
- :K12=+:K13=':K29=':\
- :S2=!:S3=":S4=#:S5=$:S6=%:S7=&:S8=/:\
- :S9=(:S10=):S11=\075:S12=\077:S13=`:S29=*:\
- :C2=:C3=\000:C4=\033:C5=\034:C6=\035:C7=:C8=:C9=:\
- :C10=:C11=:C12=:C13=:C29=:\
- :A3=\100:A5=$:A8={:\
- :A9=[:A10=]:A11=}:A12=\134:\
- :K27=]:K28=:\
- :S27=}:S28=\136:\
- :C27=\035:C28=:\
- :A28=\176:\
- :K40=\134:K41=[:\
- :S40=|:S41={:\
- :C40=\034:C41=\033:\
- :K45=<:K53=,:K54=.:K55=-:\
- :S45=>:S53=;:S54=\072:S55=_:\
- :C45=\034:C53=:C54=:C55=:\
- :A45=|:\
- :C61=\000:
-
-# from codrv, untested
-# Contributed by Mats O Jansson, moj@stacken.kth.se
-# "Here is my map, rather large, but i want ALTGR normaly to be dead.
-# Only seven bit national characters have been placed where national
-# characters is on the keyboard."
-# We can help this man, just use the 'a0' capability -hv-
-# Corrected by Paul Pries, 5322@msg.abc.se (Some national shifts were
-# wrong).
-sa|sweden1a|Swedish 7bit mapping ISO 646:\
- :l1#62:a0:\
- :D1:\
- :K12=+:K13=':K29=':\
- :S2=!:S3=":S4=#:S5=$:S6=%:S7=&:S8=/:\
- :S9=(:S10=):S11=\075:S12=\077:S13=`:S29=*:\
- :C2=:C3=\000:C4=\033:C5=\034:C6=\035:C7=:C8=:C9=:\
- :C10=:C11=:C12=:C13=:C29=:\
- :A3=\100:A5=$:A8={:\
- :A9=[:A10=]:A11=}:A12=\134:\
- :K27=}:K28=:\
- :S27=]:S28=\136:\
- :C27=\035:C28=:\
- :A28=\176:\
- :S40=\134:S41=[:\
- :K40=|:K41={:\
- :C40=\034:C41=\033:\
- :K45=<:K53=,:K54=.:K55=-:\
- :S45=>:S53=;:S54=\072:S55=_:\
- :C45=\034:C53=:C54=:C55=:\
- :A45=|:\
- :C61=\000:
-
-# from codrv, untested
-# Swedish keyboard map with national characters.
-# Paul Pries, 5322@msg.abc.se
-s2|sweden2|Swedish 8bit mapping ISO 8859-1:\
- :l1#62:\
- :K1=\247:S1=:\
- :K12=+:K13=':K29=':\
- :S2=!:S3=":S4=#:S5=$:S6=%:S7=&:S8=/:\
- :S9=(:S10=):S11=\075:S12=\077:S13=`:S29=*:\
- :C2=:C3=\000:C4=\033:C5=\034:C6=\035:C7=:C8=:C9=:\
- :C10=:C11=:C12=:C13=:C29=:\
- :A3=\100:A4=\234:A5=$:A8={:\
- :A9=[:A10=]:A11=}:A12=\134:\
- :K27=\206:K28=:\
- :S27=\217:S28=\136:\
- :C27=\035:C28=:\
- :A28=\176:\
- :S40=\231:S41=\216:\
- :K40=\224:K41=\204:\
- :C40=\034:C41=\033:\
- :K45=<:K53=,:K54=.:K55=-:\
- :S45=>:S53=;:S54=\072:S55=_:\
- :C45=\034:C53=:C54=:C55=:\
- :A45=|:\
- :C61=\000:
-
-# Swedish keyboard map with national characters.
-# Paul Pries, 5322@msg.abc.se
-# Corrected by Mats O Jansson, moj@stacken.kth.se (Some national was CP850
-# and not ISO 8859-1 as said).
-s8|sweden8|Swedish 8bit mapping ISO 8859-1 and not CP850 national characters:\
- :A8={:A9=[:A10=]:A11=}:A12=\\:\
- :K40=\366:S40=\326:K41=\344:S41=\304:K27=\345:S27=\305:\
- :tc=sweden2:
-
-#
-# tg: my idiosyncratic mappings (thomas@ghpc8.ihf.rwth-aachen.de)
-#
-# the six function keys above the cursor keys are arranged
-# identical to a real VT220:
-#
-# find insert remove
-# select up down
-#
-# since i don't have a use for the numbers on the keypad,
-# i map NumLock, /, *, - to PF1-PF4;
-# + is mapped to SS3 l, shifted + is mapped to SS3 m
-#
-# they convinced me finally to add some support for german umlauts.
-# so, i stole the mapping from jörg wunsch's de-prog entry.
-#
-# tg
-#
-
-tg:\
- :l1#62:\
- :A12=\337:\
- :A27=\374:C27=\334:\
- :A40=\366:C40=\326:\
- :A41=\344:C41=\304:\
- :K126=\032:C126=\003:\
- :K75=[1~:S75=[1~:C75=[1~:\
- :K76=[4~:S76=[4~:C76=[4~:\
- :K80=[2~:S80=[2~:C80=[2~:\
- :K81=[5~:S81=[5~:C81=[5~:\
- :K85=[3~:S85=[3~:C85=[3~:\
- :K86=[6~:S86=[6~:C86=[6~:\
- :K90=OP:S90=OP:C90=OP:\
- :K95=OQ:S95=OQ:C95=OQ:\
- :K100=OR:S100=OR:C100=OR:\
- :K104=On:S104=On:C104=On:\
- :K105=OS:S105=OS:C105=OS:\
- :K106=Ol:S106=Om:\
- :K108=OM:S108=OM:C108=OM:
-
-us|usa|United States mapping:\
- :de:
-
-# EOF
diff --git a/usr.sbin/pcvt/keycap/man5/keycap.5 b/usr.sbin/pcvt/keycap/man5/keycap.5
deleted file mode 100644
index 7210b75..0000000
--- a/usr.sbin/pcvt/keycap/man5/keycap.5
+++ /dev/null
@@ -1,129 +0,0 @@
-.\"
-.\" Copyright (c) 1992,1993,1994 Hellmuth Michaelis
-.\"
-.\" Copyright (c) 1990 The Regents of the University of California.
-.\"
-.\" 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 the University of
-.\" California, Berkeley and its contributors.
-.\" 4. Neither the name of the University nor the names of its contributors
-.\" may be used to endorse or promote products derived from this software
-.\" without specific prior written permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``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 REGENTS OR CONTRIBUTORS 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.
-.\"
-.\" @(#)keycap.5, 3.00, Last Edit-Date: [Sun Jan 2 13:45:59 1994]
-.\" $FreeBSD$
-.\"
-.Dd January 3, 1993
-.Dt KEYCAP 5
-.Os
-.Sh NAME
-.Nm keycap
-.Nd keyboard mapping data base
-.Sh SYNOPSIS
-.Nm
-.Sh DESCRIPTION
-The
-.Nm
-file
-is a data base describing keyboard mappings, used by
-.Xr kcon 1 .
-.Pp
-Entries in
-.Nm
-consist of a number of `:'-separated fields.
-The first entry for each mapping gives the names that are known for the
-mapping, separated by `|' characters.
-All names but the first and last
-should be in lower case and contain no blanks;
-the last name may well contain
-upper case and blanks for readability.
-.Sh CAPABILITIES
-.Bl -column indent indent
-.Sy "Name Type Description
-.It "de bool Resets Keyboard mapping to compiled-in default"
-.It "D<n> bool Disables key <n> completely"
-.It "
-.It "m<n> num specify key numbers for ALT keys
-.It "l<n> num specify key numbers for ALTGR keys
-.It "h<n> num specify key numbers for SHIFT keys
-.It "t<n> num specify key numbers for CONTROL keys
-.It "ca<n> num specify key number for the CAPS LOCK key
-.It "sh<n> num specify key number for the SHIFT LOCK key
-.It "nl<n> num specify key number for the NUM LOCK key
-.It "sc<n> num specify key number for the SCROLL LOCK key
-.It "
-.It "K<n> str bind a string to an unshifted (normal) key
-.It "S<n> str bind a string to a shifted key
-.It "C<n> str bind a string to a control key
-.It "A<n> str bind a string to an altgr key
-.It "
-.It "tc str Entry of similar map \- must be last."
-.El
-.Pp
-Parameter <n> describing the key number can have values from 1 to 128.
-.Pp
-A string parameter may have up to 15 characters.
-.Pp
-.Ss A Sample Entry
-The following entry, which describes a test entry, is among the very
-easy entries in the
-.Nm
-file as of this writing.
-.Pp
-.Bd -literal
-tt\||test\||Test entry which swaps y and z:\e
- :K22=z:S22=Z:C22=\e032:\e
- :K46=y:S46=Y:C46=\e031:
-.Ed
-.Pp
-Entries may continue onto multiple lines by giving a \e as the last
-character of a line.
-Comments may be included on lines beginning with
-.Dq # .
-.Sh FILES
-.Bl -tag -width /usr/share/misc/keycap.pcvt -compact
-.It Pa /usr/share/misc/keycap.pcvt
-File containing keyboard mapping descriptions.
-.El
-.Sh EXAMPLES
-The entry
-.Dq Li l1#60
-sets the keynumber for the ALTGR key to 60.
-.Pp
-The entry
-.Dq Li K100=hugo
-binds the string 'hugo' to the key number 100.
-.Pp
-The entry
-.Dq Li K100=^D
-binds the control character EOT (0x04) to the key number 100.
-.Pp
-The entry
-.Dq Li K100=\e000
-binds the control character NUL (0x00) to the key number 100.
-.Sh SEE ALSO
-.Xr kcon 1 ,
-.Xr keycap 3
diff --git a/usr.sbin/pcvt/loadfont/Makefile b/usr.sbin/pcvt/loadfont/Makefile
deleted file mode 100644
index 50646a7..0000000
--- a/usr.sbin/pcvt/loadfont/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-PROG= loadfont
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/loadfont/loadfont.1 b/usr.sbin/pcvt/loadfont/loadfont.1
deleted file mode 100644
index 31e1d3e..0000000
--- a/usr.sbin/pcvt/loadfont/loadfont.1
+++ /dev/null
@@ -1,87 +0,0 @@
-.\" Copyright (c) 1992, 2000 Hellmuth Michaelis
-.\"
-.\" 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.
-.\"
-.\" 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.
-.\"
-.\" Last Edit-Date: [Mon Mar 27 17:07:57 2000]
-.\"
-.\" $FreeBSD$
-.\"
-.Dd March 27, 2000
-.Dt LOADFONT 1
-.Os
-.Sh NAME
-.Nm loadfont
-.Nd pcvt utility for loading fonts into VGA/EGA boards
-.Sh SYNOPSIS
-.Nm
-.Op Fl c Ar charsetno
-.Op Fl d Ar devicefile
-.Op Fl f Ar fontfilename
-.Op Fl i
-.Sh DESCRIPTION
-The
-.Nm
-utility is used to load fonts needed for proper operation of the pcvt
-VT220 driver on EGA and VGA boards into the font ram of this boards.
-.Pp
-The options are as follows:
-.Bl -tag -width Ds
-.It Fl c
-Specifies the slot, the font is to load into.
-EGA boards have four
-slots and VGA boards have eight slots available for downloading fonts.
-.It Fl d
-Specifies the devicefile to use.
-.It Fl f
-Specifies the file which contains the font to be downloaded.
-.It Fl i
-Gives information what type(s) of font do currently reside in which slot.
-This is also the default behaviour if no options are specified on the commandline.
-.El
-.Pp
-This utility is used only on EGA and VGA boards, as MDA, HCG and CGA boards
-do not have downloadable character sets available.
-.Sh FILES
-The following fontfiles are available in the pcvt distribution:
-.Bd -literal
-/usr/share/misc/pcvtfonts/vt220l.808: 8x8 IBM II font
-/usr/share/misc/pcvtfonts/vt220h.808: 8x8 Extension font
-/usr/share/misc/pcvtfonts/vt220l.810: 8x10 IBM II font
-/usr/share/misc/pcvtfonts/vt220h.810: 8x10 Extension font
-/usr/share/misc/pcvtfonts/vt220l.814: 8x14 IBM II font
-/usr/share/misc/pcvtfonts/vt220h.814: 8x14 Extension font
-/usr/share/misc/pcvtfonts/vt220l.816: 8x16 IBM II font
-/usr/share/misc/pcvtfonts/vt220h.816: 8x16 Extension font
-.Ed
-.Sh EXAMPLES
-The command
-.Dq Li loadfont -c0 -f/usr/share/misc/pcvtfonts/vt220l.816
-loads a 8x16 font containing the standard IBM characterset II into font slot
-0 on a VGA or EGA board.
-.Sh SEE ALSO
-.Xr cursor 1 ,
-.Xr scon 1 ,
-.Xr pcvt 4 ,
-.Xr ispcvt 8
-.Sh BUGS
-No known bugs
diff --git a/usr.sbin/pcvt/loadfont/loadfont.c b/usr.sbin/pcvt/loadfont/loadfont.c
deleted file mode 100644
index acdd013..0000000
--- a/usr.sbin/pcvt/loadfont/loadfont.c
+++ /dev/null
@@ -1,306 +0,0 @@
-/*
- * Copyright (c) 1992, 1995 Hellmuth Michaelis
- *
- * 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 and Brian Dunford-Shore
- * 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.
- */
-
-/*---------------------------------------------------------------------------*
- *
- * load a font into VGA character font memory
- * ------------------------------------------
- *
- * Last Edit-Date: [Mon Mar 27 17:09:25 2000];
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include <stdio.h>
-#include <err.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <machine/pcvt_ioctl.h>
-
-#define FONT8X8 2048 /* filesize for 8x8 font */
-#define HEIGHT8X8 8 /* 8 scan lines char cell height */
-#define SSCAN8X8 143 /* 400 scan lines on screen - 256 - 1 */
-
-#define FONT8X10 2560 /* filesize for 8x10 font */
-#define HEIGHT8X10 10 /* 10 scan lines char cell height */
-#define SSCAN8X10 143 /* 400 scan lines on screen - 256 - 1 */
-
-#define FONT8X14 3584 /* filesize for 8x14 font */
-#define HEIGHT8X14 14 /* 14 scan lines char cell height */
-#define SSCAN8X14 135 /* 392 scan lines on screen - 256 - 1 */
-
-#define FONT8X16 4096 /* filesize for 8x16 font */
-#define HEIGHT8X16 16 /* 16 scan lines char cell height */
-#define SSCAN8X16 143 /* 400 scan lines on screen - 256 - 1 */
-
-struct screeninfo screeninfo;
-
-#define DEFAULTFD 0
-int fd;
-
-
-main(argc,argv)
-int argc;
-char *argv[];
-{
- FILE *in;
- struct stat sbuf, *sbp;
- unsigned char *fonttab;
- int ret;
- int chr_height;
- int scr_scan;
- int scr_rows;
- int c;
- int chr_set = -1;
- char *filename;
- int fflag = -1;
- int info = -1;
- int dflag = 0;
- char *device;
-
- while( (c = getopt(argc, argv, "c:d:f:i")) != -1)
- {
- switch(c)
- {
- case 'c':
- chr_set = atoi(optarg);
- break;
-
- case 'd':
- device = optarg;
- dflag = 1;
- break;
-
- case 'f':
- filename = optarg;
- fflag = 1;
- break;
-
- case 'i':
- info = 1;
- break;
-
- case '?':
- default:
- usage();
- break;
- }
- }
-
- if(chr_set == -1 || fflag == -1)
- info = 1;
-
- if(dflag)
- {
- if((fd = open(device, O_RDWR)) == -1)
- err(1, "ERROR opening %s", device);
- }
- else
- {
- fd = DEFAULTFD;
- }
-
- if(info == 1)
- {
- int i;
-
- if(ioctl(fd, VGAGETSCREEN, &screeninfo) == -1)
- err(1, "ioctl VGAGETSCREEN failed");
-
- switch(screeninfo.adaptor_type)
- {
- case UNKNOWN_ADAPTOR:
- case MDA_ADAPTOR:
- case CGA_ADAPTOR:
- printf("Adaptor does not support Downloadable Fonts!\n");
- break;
- case EGA_ADAPTOR:
- printheader();
- for(i = 0;i < 4;i++)
- {
- printvgafontattr(i);
- }
- break;
- case VGA_ADAPTOR:
- printheader();
- for(i = 0;i < 8;i++)
- {
- printvgafontattr(i);
- }
- }
- printf("\n");
- exit(0);
- }
-
- if(chr_set < 0 || chr_set > 7)
- usage();
-
- sbp = &sbuf;
-
- if((in = fopen(filename, "r")) == NULL)
- err(1, "cannot open file %s for reading", filename);
-
- if((fstat(fileno(in), sbp)) != 0)
- err(1, "cannot fstat file %s", filename);
-
- switch(sbp->st_size)
- {
- case FONT8X8:
- chr_height = HEIGHT8X8;
- scr_scan = SSCAN8X8;
- scr_rows = SIZ_50ROWS;
- break;
-
- case FONT8X10:
- chr_height = HEIGHT8X10;
- scr_scan = SSCAN8X10;
- scr_rows = SIZ_40ROWS;
- break;
-
- case FONT8X14:
- chr_height = HEIGHT8X14;
- scr_scan = SSCAN8X14;
- scr_rows = SIZ_28ROWS;
- break;
-
- case FONT8X16:
- chr_height = HEIGHT8X16;
- scr_scan = SSCAN8X16;
- scr_rows = SIZ_25ROWS;
- break;
-
- default:
- errx(1, "error, file %s is no valid font file, size=%d", argv[1], sbp->st_size);
- }
-
- if((fonttab = (unsigned char *)malloc((size_t)sbp->st_size)) == NULL)
- errx(1, "error, malloc failed");
-
- if((ret = fread(fonttab, sizeof(*fonttab), sbp->st_size, in)) != sbp->st_size)
- errx(1, "error reading file %s, size = %d, read = is no valid font file, size=%d",
- argv[1], sbp->st_size, ret);
-
- loadfont(chr_set, chr_height, fonttab);
- setfont(chr_set, 1, chr_height - 1, scr_scan, scr_rows);
-
- exit(0);
-}
-
-setfont(charset, fontloaded, charscan, scrscan, scrrow)
-int charset, fontloaded, charscan, scrscan, scrrow;
-{
- struct vgafontattr vfattr;
-
- vfattr.character_set = charset;
- vfattr.font_loaded = fontloaded;
- vfattr.character_scanlines = charscan;
- vfattr.screen_scanlines = scrscan;
- vfattr.screen_size = scrrow;
-
- if(ioctl(fd, VGASETFONTATTR, &vfattr) == -1)
- err(1, "ioctl VGASETFONTATTR failed, error");
-}
-
-loadfont(fontset,charscanlines,font_table)
-int fontset;
-int charscanlines;
-unsigned char *font_table;
-{
- int i, j;
- struct vgaloadchar vlc;
-
- vlc.character_set = fontset;
- vlc.character_scanlines = charscanlines;
-
- for(i = 0; i < 256; i++)
- {
- vlc.character = i;
- for (j = 0; j < charscanlines; j++)
- {
- vlc.char_table[j] = font_table[j];
- }
- font_table += charscanlines;
- if(ioctl(fd, VGALOADCHAR, &vlc) == -1)
- err(1, "ioctl VGALOADCHAR failed, error");
- }
-}
-
-printvgafontattr(charset)
-int charset;
-{
- struct vgafontattr vfattr;
- static int sizetab[] = { 25, 28, 35, 40, 43, 50 };
-
- vfattr.character_set = charset;
-
- if(ioctl(fd, VGAGETFONTATTR, &vfattr) == -1)
- err(1, "ioctl VGAGETFONTATTR failed, error");
- printf(" %d ",charset);
- if(vfattr.font_loaded)
- {
-
- printf("Loaded ");
- printf(" %2.2d ", sizetab[vfattr.screen_size]);
- printf(" %2.2d ",
- (((int)vfattr.character_scanlines) & 0x1f) + 1);
- printf(" %3.3d",
- ((int)vfattr.screen_scanlines+0x101));
- }
- else
- {
- printf("Empty");
- }
- printf("\n");
-}
-
-printheader()
-{
- printf("\nEGA/VGA Charactersets Status Info:\n\n");
- printf("Set Status Lines CharScanLines ScreenScanLines\n");
- printf("--- ------ ----- ------------- ---------------\n");
-}
-
-usage()
-{
- fprintf(stderr,"\nloadfont - load font into ega/vga font ram for pcvt video driver\n");
- fprintf(stderr,"usage: loadfont -c <cset> -d <dev> -f <name> -i\n");
- fprintf(stderr," -c <cset> characterset to load (ega 0..3, vga 0..7)\n");
- fprintf(stderr," -d <dev> specify device\n");
- fprintf(stderr," -f <name> filename containing binary font data\n");
- fprintf(stderr," -i print status and types of loaded fonts (default)\n");
- exit(1);
-}
diff --git a/usr.sbin/pcvt/scon/Makefile b/usr.sbin/pcvt/scon/Makefile
deleted file mode 100644
index dc7d02a..0000000
--- a/usr.sbin/pcvt/scon/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-PROG= scon
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/scon/scon.1 b/usr.sbin/pcvt/scon/scon.1
deleted file mode 100644
index 600f75e..0000000
--- a/usr.sbin/pcvt/scon/scon.1
+++ /dev/null
@@ -1,221 +0,0 @@
-.\" Copyright (c) 1992, 2000 Hellmuth Michaelis
-.\" Copyright (c) 1992, 1994 Joerg Wunsch
-.\"
-.\" 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.
-.\"
-.\" 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.
-.\"
-.\" Last Edit-Date: [Mon Mar 27 17:17:50 2000]
-.\"
-.\" $FreeBSD$
-.\"
-.Dd March 27, 2000
-.Dt SCON 1
-.Os
-.Sh NAME
-.Nm scon
-.Nd controls screen modes for pcvt video driver
-.Sh SYNOPSIS
-.Nm
-.Op Fl a
-.Op Fl c Ar screenno
-.Op Fl d Ar device
-.Op Fl f Ar on|off
-.Op Fl h
-.Op Fl H
-.Op Fl l
-.Op Fl m
-.Op Fl v
-.Op Fl V
-.Op Fl s Ar lines
-.Nm
-.Op Fl v
-.Op Fl d Ar device
-.Fl p Ar entry,red,green,blue
-.Nm
-.Op Fl v
-.Op Fl d Ar device
-.Fl p Ar default
-.Nm
-.Op Fl v
-.Op Fl d Ar device
-.Fl p Ar list
-.Nm
-.Op Fl v
-.Fl t Ar timeout
-.Nm
-.Op Fl v
-.Fl 1 | Fl 8
-.Sh DESCRIPTION
-The
-.Nm
-utility controls several aspects of the runtime behaviour of the pcvt vt220
-driver.
-.Pp
-The options are as follows:
-.Bl -tag -width Ds
-.It Fl a
-Returns a string describing the video adaptor found by pcvt, the string
-returned could be MDA, HGC, CGA, EGA, VGA or UNKNOWN.
-.It Fl c
-Specify the screen number the current (displayed) screen should be switched
-to.
-.It Fl d
-Specify the device filename (i.e., /dev/ttyv2) further operations specified on
-the command line should be applied to.
-.It Fl f
-Some programs which silently assume 24 lines when they run on a VT220 show
-incorrect behaviour when the terminal has really 25 lines.
-To support full
-VT220 behaviour, it is possible to force pcvt to select only 24 lines when
-it is running in 25-lines pure VT mode and/or in 28-lines HP-mode.
-The
-.Fl f
-option requires one additional parameter, the string 'on' or 'off' to switch
-this mode for a virtual screen on or off respectively.
-This mode has no effect
-if any other vertical resolutions are selected than the two above mentioned.
-.It Fl h
-Prints a usage/help text.
-.It Fl l
-Lists the current configuration of runtime changeable options and fixed
-parameters (such as the type of the adaptor, and in case of a VGA adaptor,
-the Manufacturer, Chipset and 132 column support) of the output portion
-of the pcvt driver.
-.It Fl m
-Returns a string describing the connected display monitor type found by pcvt,
-the string returned can be MONO, COLOR or UNKNOWN.
-.It Fl v
-Specify verbose operation of the program.
-.It Fl V
-Switch the specified/current screen into a pure VT220 mode without recognizing
-any HP escape sequences and without displaying function key labels.
-.It Fl H
-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 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
-for proper operation of a desired size have to be downloaded to the EGA/VGA
-font ram.
-This option is available only for EGA and VGA boards.
-.It Fl p
-Modify VGA palette
-(DAC).
-The
-.Fl p
-is mutually exclusive with
-.Fl s ,
-.Fl H ,
-and
-.Fl V .
-Naturally, option
-.Fl p
-is available only for VGA boards.
-Three flavors are available.
-.Pp
-If used with argument
-.Dq Ar default ,
-this flag will restore the default palette
-(as installed by VGA ROM BIOS after hardware reset).
-.Pp
-If used with argument
-.Dq Ar list ,
-the current VGA DAC palette entries are listed.
-Each entry contains
-the table index, values for red, green, and blue, and if there is a
-known name for this entry, the color name.
-Trailing empty table
-slots (RGB values all zero) are omitted.
-.Pp
-Otherwise, four comma-separated arguments are expected.
-The first
-denotes the number of palette entry to be modified.
-This may be either
-a number between 0 and 255, or the usual name of an associated color
-(case-insensitive).
-The following values for red, green and blue are restricted to 0 through 63
-due to VGA DAC conventions.
-Note that the first delimiter within such an argument may be a colon
-.Dq \&:
-instead of a comma
-.Dq \&,
-for better readability, but this violates common command argument
-conventions.
-Multiple
-.Fl p
-options may be specified if unambiguous.
-.It Fl t
-Specifying
-.Fl t
-will activate the screen saver.
-The behaviour depends on
-.Ar timeout :
-if
-.Ar timeout
-is given as 0, the screen saver is turned off.
-Otherwise,
-.Ar timeout
-is taken as a number of seconds to wait until activating the
-screen saver.
-NOTE: the
-.Fl t
-option is only available if screen saver support has been compiled into
-the driver!
-.It Fl 1
-Sets 132 columns mode
-(only available on VGA adaptors).
-.It Fl 8
-Sets 80 columns mode.
-.El
-.Pp
-When switching between HP and VT mode, when switching the force 24 lines
-mode on and off, or when switching between 80 and 132 columns operation,
-the screen is cleared, the scrolling
-region is reset and the cursor is placed in the home position.
-.Sh EXAMPLES
-The command
-.Dq Li scon Fl H s Ar 28
-places the current screen into HP mode and sets the screen size to 28x80.
-.Pp
-Invoking
-.Do
-.Li scon Fl p
-.Ar lightgray,0,15,0
-.Fl p
-.Ar 0:45,45,45
-.Dc
-will result in green on gray output for normal text.
-Note that normal text color is light gray, and not white as one might expect.
-.Sh SEE ALSO
-.Xr cursor 1 ,
-.Xr loadfont 1 ,
-.Xr pcvt 4
-.Sh BUGS
-the
-.Fl c
-and
-.Fl d
-options collide somehow, this will change in a future release.
diff --git a/usr.sbin/pcvt/scon/scon.c b/usr.sbin/pcvt/scon/scon.c
deleted file mode 100644
index 0d77f11..0000000
--- a/usr.sbin/pcvt/scon/scon.c
+++ /dev/null
@@ -1,782 +0,0 @@
-/*
- * Copyright (c) 1992, 2000 Hellmuth Michaelis
- *
- * Copyright (c) 1992, 1994 Joerg Wunsch
- *
- * 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.
- *
- * 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.
- */
-
-/*---------------------------------------------------------------------------*
- *
- * scon - screen control utility for pcvt
- * --------------------------------------
- *
- * Last Edit-Date: [Mon Mar 27 17:19:34 2000]
- *
- * $FreeBSD$
- *
- *---------------------------------------------------------------------------*/
-
-#include <stdio.h>
-#include <err.h>
-#include <fcntl.h>
-#include <unistd.h>
-#include <machine/pcvt_ioctl.h>
-
-#define DEFAULTFD 0
-
-int aflag = -1;
-int lflag = -1;
-int mflag = -1;
-int current = -1;
-int pflag = -1;
-int hflag = -1;
-int res = -1;
-char *device;
-int dflag = -1;
-int vflag = 0;
-int Pflag = 0;
-int tflag = 0;
-int fflag = -1;
-int colms = 0;
-char *onoff;
-
-unsigned timeout;
-struct screeninfo screeninfo;
-
-#define NVGAPEL 256
-
-struct rgb {
- unsigned r, g, b;
- int dothis;
-};
-
-static struct rgb palette[NVGAPEL] = {
- { 0x00, 0x00, 0x00, 0}, /* 0 - black */
- { 0x00, 0x00, 0x2a, 0}, /* 1 - blue */
- { 0x00, 0x2a, 0x00, 0}, /* 2 - green */
- { 0x00, 0x2a, 0x2a, 0}, /* 3 - cyan */
- { 0x2a, 0x00, 0x00, 0}, /* 4 - red */
- { 0x2a, 0x00, 0x2a, 0}, /* 5 - magenta */
- { 0x2a, 0x2a, 0x00, 0}, /* 6 */
- { 0x2a, 0x2a, 0x2a, 0}, /* 7 - lightgray */
- { 0x00, 0x00, 0x15, 0}, /* 8 */
- { 0x00, 0x00, 0x3f, 0}, /* 9 */
- { 0x00, 0x2a, 0x15, 0}, /* 10 */
- { 0x00, 0x2a, 0x3f, 0}, /* 11 */
- { 0x2a, 0x00, 0x15, 0}, /* 12 */
- { 0x2a, 0x00, 0x3f, 0}, /* 13 */
- { 0x2a, 0x2a, 0x15, 0}, /* 14 */
- { 0x2a, 0x2a, 0x3f, 0}, /* 15 */
- { 0x00, 0x15, 0x00, 0}, /* 16 */
- { 0x00, 0x15, 0x2a, 0}, /* 17 */
- { 0x00, 0x3f, 0x00, 0}, /* 18 */
- { 0x00, 0x3f, 0x2a, 0}, /* 19 */
- { 0x2a, 0x15, 0x00, 0}, /* 20 - brown */
- { 0x2a, 0x15, 0x2a, 0}, /* 21 */
- { 0x2a, 0x3f, 0x00, 0}, /* 22 */
- { 0x2a, 0x3f, 0x2a, 0}, /* 23 */
- { 0x00, 0x15, 0x15, 0}, /* 24 */
- { 0x00, 0x15, 0x3f, 0}, /* 25 */
- { 0x00, 0x3f, 0x15, 0}, /* 26 */
- { 0x00, 0x3f, 0x3f, 0}, /* 27 */
- { 0x2a, 0x15, 0x15, 0}, /* 28 */
- { 0x2a, 0x15, 0x3f, 0}, /* 29 */
- { 0x2a, 0x3f, 0x15, 0}, /* 30 */
- { 0x2a, 0x3f, 0x3f, 0}, /* 31 */
- { 0x15, 0x00, 0x00, 0}, /* 32 */
- { 0x15, 0x00, 0x2a, 0}, /* 33 */
- { 0x15, 0x2a, 0x00, 0}, /* 34 */
- { 0x15, 0x2a, 0x2a, 0}, /* 35 */
- { 0x3f, 0x00, 0x00, 0}, /* 36 */
- { 0x3f, 0x00, 0x2a, 0}, /* 37 */
- { 0x3f, 0x2a, 0x00, 0}, /* 38 */
- { 0x3f, 0x2a, 0x2a, 0}, /* 39 */
- { 0x15, 0x00, 0x15, 0}, /* 40 */
- { 0x15, 0x00, 0x3f, 0}, /* 41 */
- { 0x15, 0x2a, 0x15, 0}, /* 42 */
- { 0x15, 0x2a, 0x3f, 0}, /* 43 */
- { 0x3f, 0x00, 0x15, 0}, /* 44 */
- { 0x3f, 0x00, 0x3f, 0}, /* 45 */
- { 0x3f, 0x2a, 0x15, 0}, /* 46 */
- { 0x3f, 0x2a, 0x3f, 0}, /* 47 */
- { 0x15, 0x15, 0x00, 0}, /* 48 */
- { 0x15, 0x15, 0x2a, 0}, /* 49 */
- { 0x15, 0x3f, 0x00, 0}, /* 50 */
- { 0x15, 0x3f, 0x2a, 0}, /* 51 */
- { 0x3f, 0x15, 0x00, 0}, /* 52 */
- { 0x3f, 0x15, 0x2a, 0}, /* 53 */
- { 0x3f, 0x3f, 0x00, 0}, /* 54 */
- { 0x3f, 0x3f, 0x2a, 0}, /* 55 */
- { 0x15, 0x15, 0x15, 0}, /* 56 - darkgray */
- { 0x15, 0x15, 0x3f, 0}, /* 57 - lightblue */
- { 0x15, 0x3f, 0x15, 0}, /* 58 - lightgreen */
- { 0x15, 0x3f, 0x3f, 0}, /* 59 - lightcyan */
- { 0x3f, 0x15, 0x15, 0}, /* 60 - lightred */
- { 0x3f, 0x15, 0x3f, 0}, /* 61 - lightmagenta */
- { 0x3f, 0x3f, 0x15, 0}, /* 62 - yellow */
- { 0x3f, 0x3f, 0x3f, 0}, /* 63 - white */
- { 0x00, 0x00, 0x00, 0} /* 64 ... - empty */
-};
-
-static struct colname {
- const char *name;
- unsigned idx;
-} colnames[] = {
- {"black", 0},
- {"blue", 1},
- {"green", 2},
- {"cyan", 3},
- {"red", 4},
- {"magenta", 5},
- {"brown", 20},
- {"lightgray", 7},
- {"lightgrey", 7},
- {"darkgray", 56},
- {"darkgrey", 56},
- {"lightblue", 57},
- {"lightgreen", 58},
- {"lightcyan", 59},
- {"lightred", 60},
- {"lightmagenta", 61},
- {"yellow", 62},
- {"white", 63},
- /* must be terminator: */ {(const char *)NULL, 0}
-};
-
-
-static void parsepopt(char *arg, unsigned *idx,
- unsigned *r, unsigned *g, unsigned *b);
-static void printpalette(int fd);
-
-main(argc,argv)
-int argc;
-char *argv[];
-{
- int c;
- int fd;
-
- while( (c = getopt(argc, argv, "ac:d:f:HVlms:t:vp:18")) != -1)
- {
- switch(c)
- {
- case 'a':
- aflag = 1;
- break;
-
- case 'l':
- lflag = 1;
- break;
-
- case 'm':
- mflag = 1;
- break;
-
- case 'c':
- current = atoi(optarg);
- break;
-
- case 'd':
- device = optarg;
- dflag = 1;
- break;
-
- case 'f':
- onoff = optarg;
- fflag = 1;
- break;
-
- case 'V':
- pflag = 1;
- break;
-
- case 'H':
- hflag = 1;
- break;
-
- case 's':
- if (!strncmp(optarg, "25", 2))
- res = SIZ_25ROWS;
- else if(!strncmp(optarg, "28", 2))
- res = SIZ_28ROWS;
- else if(!strncmp(optarg, "35", 2))
- res = SIZ_35ROWS;
- else if(!strncmp(optarg, "40", 2))
- res = SIZ_40ROWS;
- else if(!strncmp(optarg, "43", 2))
- res = SIZ_43ROWS;
- else if(!strncmp(optarg, "50", 2))
- res = SIZ_50ROWS;
- break;
-
- case 'v':
- vflag++;
- break;
-
- case 'p':
- if(!strcmp(optarg, "list"))
- {
- if(Pflag)
- errx(2, "-p list is mutual exclusive with other -p options");
- Pflag = 3;
- }
- else if(!strcmp(optarg, "default"))
- {
- if(Pflag)
- errx(2, "multiple -p default not allowed");
- Pflag = 2;
- } else {
- unsigned idx, r, g, b;
-
- if(Pflag > 1)
- errx(2, "-p default and -p i,r,g,b ambiguous");
- Pflag = 1;
- parsepopt(optarg, &idx, &r, &g, &b);
- if(idx >= NVGAPEL)
- errx(2, "index %u in -p option out of range", idx);
- palette[idx].r = r;
- palette[idx].g = g;
- palette[idx].b = b;
- palette[idx].dothis = 1;
- }
- break;
-
- case 't':
- tflag++;
- timeout = atoi(optarg);
- break;
-
- case '1':
- colms = 132;
- break;
-
- case '8':
- colms = 80;
- break;
-
- case '?':
- default:
- usage();
- break;
- }
- }
-
- if((pflag == 1) && (hflag == 1))
- usage();
-
- if(dflag == -1 && lflag == -1 && current == -1 && pflag == -1 &&
- hflag == -1 && res == -1 && Pflag == 0 && tflag == 0 && fflag == -1
- && colms == 0 && mflag == -1)
- {
- lflag = 1;
- }
-
- if(dflag == -1)
- {
- if(vflag)
- printf("using current device\n");
- fd = DEFAULTFD; /* -hm, Feb 12 1993 */
- }
- else
- {
- if((fd = open(device, O_RDWR)) == -1)
- err(1, "ERROR opening %s", device);
- if(vflag)
- printf("using device %s\n",device);
- }
-
- if(aflag == 1) /* return adaptor type */
- {
- printadaptor(fd);
- exit(0);
- }
-
- if(mflag == 1) /* return monitor type */
- {
- printmonitor(fd);
- exit(0);
- }
-
- if(lflag == 1) /* list information */
- {
- if(vflag)
- printf("processing option -l, listing screen info\n");
- printinfo(fd);
- exit(0);
- }
-
- if(tflag) /* set screen saver timeout */
- {
- if(vflag)
- {
- printf(
- "processing option -t, setting screen saver timeout: "
- );
- if(timeout)
- printf("new timeout = %d s\n", timeout);
- else
- printf("turned off\n");
- }
-
- if(ioctl(fd, VGASCREENSAVER, &timeout) < 0)
- {
- warn("ioctl(VGASCREENSAVER)");
- fprintf(stderr, "Check the driver, the screensaver is probably not compiled in!\n");
- exit(2);
- }
- goto success;
- }
-
- if(colms)
- {
- if(vflag)
- printf("Setting number of columns to %d\n", colms);
- if(ioctl(fd, VGASETCOLMS, &colms) < 0)
- err(2, "ioctl(VGASETCOLMS)");
- goto success;
- }
-
- if(Pflag == 3)
- {
- /* listing VGA palette */
- if(vflag)
- printf("processing option -p list, "
- "listing VGA palette\n");
-
- printpalette(fd);
- goto success;
- }
-
- if(Pflag)
- {
- unsigned int idx;
-
- /* setting VGA palette */
- if(vflag)
- printf("processing option -p, setting VGA palette%s\n",
- Pflag == 2? " to default": "");
-
- for(idx = 0; idx < NVGAPEL; idx++)
- if(Pflag == 2 || palette[idx].dothis)
- {
- struct vgapel p;
- p.idx = idx;
- p.r = palette[idx].r;
- p.g = palette[idx].g;
- p.b = palette[idx].b;
- if(ioctl(fd, VGAWRITEPEL, (caddr_t)&p) < 0)
- err(2, "ioctl(fd, VGAWRITEPEL)");
- }
- goto success;
- }
-
- screeninfo.screen_no = -1; /* We are using fd */
- screeninfo.current_screen = current;
- screeninfo.pure_vt_mode = -1;
- screeninfo.screen_size = res;
- screeninfo.force_24lines = -1;
-
- if(current != -1) /* set current screen */
- {
- if(vflag)
- printf("processing option -c, setting current screen to %d\n",current);
-
- if(ioctl(1, VGASETSCREEN, &screeninfo) == -1)
- err(1, "ioctl VGASETSCREEN failed");
- exit(0);
- }
-
- if(pflag == 1)
- {
- if(vflag)
- printf("processing option -V, setting emulation to pure VT220\n");
- screeninfo.pure_vt_mode = M_PUREVT;
- }
- else if(hflag == 1)
- {
- if(vflag)
- printf("processing option -H, setting emulation to VT220 + HP Labels\n");
- screeninfo.pure_vt_mode = M_HPVT;
- }
- else
- {
- if(vflag)
- printf("no change in terminal emulation\n");
- }
-
- if(vflag)
- {
- if(res == -1)
- printf("no change in screen resolution\n");
- else if(res == SIZ_25ROWS)
- printf("change screen resolution to 25 lines\n");
- else if(res == SIZ_28ROWS)
- printf("change screen resolution to 28 lines\n");
- else if(res == SIZ_35ROWS)
- printf("change screen resolution to 35 lines\n");
- else if(res == SIZ_40ROWS)
- printf("change screen resolution to 40 lines\n");
- else if(res == SIZ_43ROWS)
- printf("change screen resolution to 43 lines\n");
- else if(res == SIZ_50ROWS)
- printf("change screen resolution to 50 lines\n");
- }
-
- if(fflag == 1) /* force 24 lines on/off */
- {
- if(!strcmp(onoff, "on"))
- {
- fflag = 1;
- }
- else if(!strcmp(onoff, "off"))
- {
- fflag = 0;
- }
- else
- {
- fprintf(stderr,"you must specify 'on' or 'off' with -f option!\n");
- exit(1);
- }
- }
- screeninfo.force_24lines = fflag;
-
- if(ioctl(fd, VGASETSCREEN, &screeninfo) == -1)
- err(1, "ioctl VGASETSCREEN failed");
-success:
- if(vflag)
- printf("successful execution of ioctl VGASETSCREEN!\n");
- exit(0);
-}
-
-usage()
-{
- fprintf(stderr,"\nscon - screen control utility for the pcvt video driver\n");
- fprintf(stderr,"usage: scon -a -l -m -v -c [n] -d [dev] -f [on|off] -V -H -s [n]\n");
- fprintf(stderr,"usage: scon -p [default | list | i,r,g,b] | -t [sec] | -1 | -8\n");
- fprintf(stderr," -a list video adaptor type (MDA,CGA,EGA or VGA)\n");
- fprintf(stderr," -c <screen no> switch current virtual screen to <screen no>\n");
- fprintf(stderr," -d <device> set parameters(-V|-H|-s) for virtual device\n");
- fprintf(stderr," -f <on|off> force 24 lines in VT 25 lines and HP 28 lines mode\n");
- fprintf(stderr," -H set VT220/HP emulation mode for a virtual screen\n");
- fprintf(stderr," -l list current parameters for a virtual screen\n");
- fprintf(stderr," -m report monitor type (MONO/COLOR)\n");
- fprintf(stderr," -p default set default VGA palette\n");
- fprintf(stderr," -p list list current VGA palette\n");
- fprintf(stderr," -p <i,r,g,b> set VGA palette entry i to r/g/b\n");
- fprintf(stderr," -p <name,r,g,b> set VGA palette entry for color name to r/g/b\n");
- fprintf(stderr," -s <lines> set 25, 28, 35, 40, 43 or 50 lines for a virtual screen\n");
- fprintf(stderr," -t <timeout> set screen saver timeout [seconds]\n");
- fprintf(stderr," -1 set 132 columns mode\n");
- fprintf(stderr," -8 set 80 columns mode\n");
- fprintf(stderr," -v verbose mode\n");
- fprintf(stderr," -V set pure VT220 emulation for a virtual screen\n");
- fprintf(stderr," -? display help (this message)\n\n");
- exit(1);
-}
-
-printadaptor(fd)
-int fd;
-{
- if(ioctl(fd, VGAGETSCREEN, &screeninfo) == -1)
- err(1, "ioctl VGAGETSCREEN failed");
- switch(screeninfo.adaptor_type)
- {
- default:
- case UNKNOWN_ADAPTOR:
- printf("UNKNOWN\n");
- break;
-
- case MDA_ADAPTOR:
- printf("MDA\n");
- break;
-
- case CGA_ADAPTOR:
- printf("CGA\n");
- break;
-
- case EGA_ADAPTOR:
- printf("EGA\n");
- break;
-
- case VGA_ADAPTOR:
- printf("VGA\n");
- break;
- }
-}
-
-printmonitor(fd)
-int fd;
-{
- if(ioctl(fd, VGAGETSCREEN, &screeninfo) == -1)
- err(1, "ioctl VGAGETSCREEN failed");
- switch(screeninfo.monitor_type)
- {
- default:
- printf("UNKNOWN\n");
- break;
-
- case MONITOR_MONO:
- printf("MONO\n");
- break;
-
- case MONITOR_COLOR:
- printf("COLOR\n");
- break;
- }
-}
-
-char *vga_type(int number)
-{
- static char *vga_tab[] = {
- "Generic VGA",
- "ET4000",
- "ET3000",
- "PVGA1A",
- "WD90C00",
- "WD90C10",
- "WD90C11",
- "VIDEO 7 VEGA",
- "VIDEO 7 FAST",
- "VIDEO 7 VER5",
- "VIDEO 7 1024I",
- "Unknown VIDEO 7",
- "TVGA 8800BR",
- "TVGA 8800CS",
- "TVGA 8900B",
- "TVGA 8900C",
- "TVGA 8900CL",
- "TVGA 9000",
- "TVGA 9100",
- "TVGA 9200",
- "Unknown TRIDENT",
- "S3 80C911",
- "S3 80C924",
- "S3 80C801/80C805",
- "S3 80C928",
- "Unknown S3",
- "CL-GD5402",
- "CL-GD5402r1",
- "CL-GD5420",
- "CL-GD5420r1",
- "CL-GD5422",
- "CL-GD5424",
- "CL-GD5426",
- "CL-GD5428",
-
- };
- return(vga_tab[number]);
-}
-
-char *vga_family(int number)
-{
- static char *vga_tab[] = {
- "Generic VGA",
- "Tseng Labs",
- "Western Digital",
- "Video Seven",
- "Trident",
- "S3 Incorporated",
- "Cirrus Logic",
- };
- return(vga_tab[number]);
-}
-
-printinfo(fd)
-int fd;
-{
- if(ioctl(fd, VGAGETSCREEN, &screeninfo) == -1)
- err(1, "ioctl VGAGETSCREEN failed");
-
- printf( "\nVideo Adaptor Type = ");
-
- switch(screeninfo.adaptor_type)
- {
- default:
- case UNKNOWN_ADAPTOR:
- printf("UNKNOWN Video Adaptor\n");
- break;
-
- case MDA_ADAPTOR:
- printf("MDA - Monochrome Display Adaptor\n");
- break;
-
- case CGA_ADAPTOR:
- printf("CGA - Color Graphics Adaptor\n");
- break;
-
- case EGA_ADAPTOR:
- printf("EGA - Enhanced Graphics Adaptor\n");
- break;
-
- case VGA_ADAPTOR:
- printf("VGA - Video Graphics Adaptor/Array\n");
- printf(" VGA Chipset Manufacturer = %s\n",
- vga_family(screeninfo.vga_family));
- printf(" VGA Chipset Type = %s\n",
- vga_type(screeninfo.vga_type));
- printf(" Support for 132 Column Mode = %s\n",
- screeninfo.vga_132 ? "Yes" : "No");
- break;
- }
-
- printf( "Display Monitor Type = ");
-
- switch(screeninfo.monitor_type)
- {
- default:
- printf("UNKNOWN Monitor Type\n");
- break;
-
- case MONITOR_MONO:
- printf("Monochrome Monitor\n");
- break;
-
- case MONITOR_COLOR:
- printf("Color Monitor\n");
- break;
- }
-
- printf( "Number of Downloadable Fonts = %d\n",screeninfo.totalfonts);
- printf( "Number of Virtual Screens = %d\n",screeninfo.totalscreens);
- printf( "Info Request Screen Number = %d\n",screeninfo.screen_no);
- printf( "Current Displayed Screen = %d\n",screeninfo.current_screen);
-
- if(screeninfo.pure_vt_mode == M_PUREVT)
- printf( "Terminal Emulation Mode = VT220\n");
- else
- printf( "Terminal Emulation Mode = VT220 with HP Features\n");
-
- printf( "Lines = ");
-
- switch(screeninfo.screen_size)
- {
- case SIZ_25ROWS:
- printf( "25\n");
- break;
-
- case SIZ_28ROWS:
- printf( "28\n");
- break;
-
- case SIZ_35ROWS:
- printf( "35\n");
- break;
-
- case SIZ_40ROWS:
- printf( "40\n");
- break;
-
- case SIZ_43ROWS:
- printf( "43\n");
- break;
-
- case SIZ_50ROWS:
- printf( "50\n");
- break;
-
- default:
- printf( "UNKNOWN\n");
- break;
- }
- printf( "Force 24 Lines = %s",
- screeninfo.force_24lines ? "Yes" : "No");
-
- printf("\n\n");
-}
-
-static const char *findname(unsigned idx)
-{
- /* try to find a name for palette entry idx */
- /* if multiple names exist, returns first matching */
- register struct colname *cnp;
-
- for(cnp = colnames; cnp->name; cnp++)
- if(cnp->idx == idx)
- return cnp->name;
-
- /* not found */
- return (const char *)NULL;
-}
-
-static void printpalette(int fd)
-{
- register unsigned idx, last;
-
- for(idx = 0; idx < NVGAPEL; idx++)
- {
- struct vgapel p;
- p.idx = idx;
- if(ioctl(fd, VGAREADPEL, &p) < 0)
- err(2, "ioctl(VGAREADPEL)");
- palette[idx].r = p.r;
- palette[idx].g = p.g;
- palette[idx].b = p.b;
- }
-
- /* find last non-empty entry */
- for(last = NVGAPEL - 1; last; last--)
- if(palette[last].r || palette[last].g || palette[last].b)
- break;
-
- if(last != NVGAPEL - 1)
- last++;
-
- /* now, everything's collected. print out table */
- printf("VGA palette status\n");
- printf("index red green blue name\n");
- for(idx = 0; idx < last; idx++)
- {
- const char *cp;
- printf("%5d %5d %5d %5d",
- idx, palette[idx].r, palette[idx].g, palette[idx].b);
- if(cp = findname(idx))
- printf(" %s\n", cp);
- else
- putchar('\n');
- }
- putchar('\n');
-}
-
-
-static void parsepopt(char *arg, unsigned *idx,
- unsigned *r, unsigned *g, unsigned *b)
-{
- char firstarg[21];
- register unsigned i;
-
- if(sscanf(arg, "%20[a-zA-Z0-9]%*[,:]%u,%u,%u", firstarg, r, g, b) < 4
- || strlen(firstarg) == 0)
- errx(2, "too few args in -p i,r,g,b");
-
- if(firstarg[0] >= '0' && firstarg[0] <= '9') {
- *idx = strtoul(firstarg, NULL, 10);
- return;
- }
-
- for(i = 0; colnames[i].name; i++)
- if(strcasecmp(colnames[i].name, firstarg) == 0) {
- *idx = colnames[i].idx;
- return;
- }
- errx(2, "arg ``%s'' in -p option not recognized", firstarg);
-}
diff --git a/usr.sbin/pcvt/userkeys/Makefile b/usr.sbin/pcvt/userkeys/Makefile
deleted file mode 100644
index 66fe022..0000000
--- a/usr.sbin/pcvt/userkeys/Makefile
+++ /dev/null
@@ -1,5 +0,0 @@
-# $FreeBSD$
-
-PROG= vt220keys
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/userkeys/vt220keys.1 b/usr.sbin/pcvt/userkeys/vt220keys.1
deleted file mode 100644
index 35d80ca..0000000
--- a/usr.sbin/pcvt/userkeys/vt220keys.1
+++ /dev/null
@@ -1,175 +0,0 @@
-.\" $FreeBSD$
-.\"
-.Dd January 16, 2001
-.Dt VT220KEYS 1
-.Os
-.Sh NAME
-.Nm vt220keys
-.Nd "define SHIFTED function keys on VT220 terminal"
-.Sh SYNOPSIS
-.Nm
-.Op Fl cil
-.Op Ar keyname keystring ...
-.Sh DESCRIPTION
-The
-.Nm
-utility sets up a
-.Dq "vt220 terminal"
-in vt200 mode to allow user
-definition of the SHIFTED function keys.
-Each
-.Ar keyname
-specified on the command line will be loaded with
-the corresponding
-.Ar keystring .
-A
-.Ar keyname
-is one of the following words:
-.Cm F6 F7 F8 F9 F10 F11 ESC
-.Cm F12 BS F13 LF F14 HELP
-.Cm DO F17 F18 F19 F20 .
-.Ar Keystrings
-must be quoted if spaces, tabs, or shell metacharacters are included.
-.Pp
-The
-.Nm
-utility expects to receive some combination of option flags and/or
-argument pair(s), otherwise a usage message
-is printed.
-.Pp
-The options are:
-.Bl -tag -width indent
-.It Fl c
-Clears all SHIFTED function key definitions before setting them to user
-defined strings.
-.It Fl i
-Read the initialization file
-.Pa $HOME/.vt220rc
-for SHIFTED function key definitions.
-This is done before any
-argument pair specified on the command line is processed.
-Each line in the file must consist of two fields (separated by spaces
-or tabs) where the first field is the
-.Ar keyname
-and the second field is the
-.Ar keystring .
-The second field extends to the end of the line, thus a
-.Ar keystring
-may include spaces or tabs.
-A newline (return) may be specified
-within the string by using the C Language notation for newline (\\n).
-.It Fl l
-Locks the function keys from further definition.
-Locking occurs after processing the initialization file (if the
-.Fl i
-option is specified) and any argument
-pairs.
-The only way
-to unlock is by turning the power off.
-.El
-.Sh FILES
-.Bl -tag -width $HOME/.vt220rc
-.It Pa $HOME/.vt220rc
-initialization file
-.El
-.Sh EXAMPLES
-.Bd -literal
-vt220keys -ci
-vt220keys F6 'nroff -ms '
-vt220keys -i F20 'cc -O -c '
-vt220keys -l HELP man
-.Ed
-.Sh "OTHER FEATURES"
-Pressing the function keys without using the shift key, generates
-a string of characters.
-With
-.Xr csh 1
-this string can be aliased to some command.
-For example:
-.Pp
-.Dl alias\ ^[[17~\ "ls\ -CR\ |\ more"
-.Pp
-where
-.Ql "^[[17~"
-is what is generated by pressing the F6 key.
-Therefore
-F6 can perform two commands, depending if pressed with/without the SHIFT
-key.
-.Pp
-The
-.Nm
-utility can be called from your
-.Pa .login
-or
-.Pa .profile
-file.
-Typically an user
-will create an initialization file and include a line like
-.Pp
-.Dl "vt220keys -ci"
-OR
-.Dl "vt220keys -cil"
-.Pp
-in the above mentioned files.
-This way the SHIFTED function keys
-will be set to your favorite commands when logging in.
-.Sh CAVEATS
-If the SHIFTED function keys are unlocked, redefinition of a SHIFTED
-function key will rewrite the old string.
-.Pp
-There are 256 bytes available for the SHIFTED function keys.
-Space is
-supplied on a first\-come/first\-serve basis.
-After the 256 bytes are
-used, you cannot define any more keys unless space is cleared.
-This
-can be done by redefining a key to contain a string of fewer bytes.
-.Pp
-All key definitions are stored in volatile RAM, and are lost when
-terminal power is lost.
-.Pp
-The ESC key (unshifted) no longer generates the proper escape character.
-This
-is of particular importance since many editors require use of the
-ESC key.
-Here are some available alternatives:
-.Bl -bullet
-.It
-The escape character can be generated by typing
-.Ql ^[
-(control\-[).
-.It
-Use
-.Nm
-as follows (note
-.Ql ^[
-is control\-[)
-.Pp
-.Dl "vt220keys ESC '^['"
-.Pp
-This will require you
-to press the SHIFT key and ESC to generate the escape sequence.
-.It
-Some editors, allow other character(s) to be substituted for the
-escape character.
-For example with
-.Xr emacs 1
-include this line in your
-.Pa .emacs_pro :
-.Pp
-.Dl (bind-to-key\ "ESC-prefix"\ "\\033[23~")
-.Pp
-Thus when the ESC key is pressed,
-.Nm emacs
-will allow the characters generated
-.Pq Li ^[[23~
-to perform the same function as the escape
-character.
-.El
-.Sh SEE ALSO
-.Rs
-.%B "VT220 Programmer Reference Manual"
-.Re
-.Rs
-.%B "VT220 Programmer Pocket Guide"
-.Re
diff --git a/usr.sbin/pcvt/userkeys/vt220keys.c b/usr.sbin/pcvt/userkeys/vt220keys.c
deleted file mode 100644
index e3fe90c..0000000
--- a/usr.sbin/pcvt/userkeys/vt220keys.c
+++ /dev/null
@@ -1,287 +0,0 @@
-/*
- * Trivial program to load VT220 Function keys with strings,
- * note that the values only get sent when the key is shifted
- * (shoulda been an option to flip the shift set like the Z19!)
- *
- * Typing no args gives help, basically pairs of keyname/value
- * strings.
- *
- * Author, Author: Barry Shein, Boston University
- *
- * HISTORY
- {1} 30-Oct-85 Kenneth J. Lester (ken) at ektools
-
- Added the necessary code to read an initialization file. This
- should make it easier to used this program. Also added code
- that will set-up the terminal in vt200 (this saves the user the
- trouble of checking if the set-up is in vt200).
-
- Restructed the main function to use getopt, for argument
- processing.
-
- Alterated usage function to include new "i" option (init file)
-
-
- -hm minor modifications for pcvt 2.0 release
-
-$FreeBSD$
-*/
-
-#include <stdio.h>
-#include <stdlib.h>
-#include <string.h>
-#include <ctype.h>
-#include <unistd.h>
-
-/*
- * The default toupper() macro is stupid, will toupper anything
- */
-
-#ifdef toupper
-#undef toupper
-#endif
-#define toupper(c) (islower(c) ? ((c)-' ') : c)
-
-#define VT200_7BIT 1
-#define ESC 033
-#define INITFILE ".vt220rc"
-
-struct keynames {
- char *name ;
- char *string ;
-} keys[] = {
- "F6", "17",
- "F7", "18",
- "F8", "19",
- "F9", "20",
- "F10", "21",
- "F11", "23",
- "ESC", "23",
- "F12", "24",
- "BS", "24",
- "F13", "25",
- "LF", "25",
- "F14", "26",
- "HELP", "28",
- "DO", "29",
- "F17", "31",
- "F18", "32",
- "F19", "33",
- "F20", "34",
- NULL, NULL
-};
-
-char prog[BUFSIZ];
-
-main(argc,argv)
- int argc;
- char *argv[];
-{
- int option; /* option character returned by getopt */
- int initf = 0; /* read initialization file */
- int lockf = 0; /* lock keys after loading strings */
- int clearf = 0; /* clear all keys before loading strings */
-
- strlcpy(prog, *argv, sizeof(prog)); /* store program name */
-
- if(argc == 1) usage(); /* program requires options */
-
- /* get options */
- while ((option = getopt(argc, argv, "cli")) != -1)
- switch(option)
- {
- case 'c' :
- clearf++;
- break;
- case 'l' :
- lockf++;
- break;
- case 'i' :
- initf++;
- break;
- case '?' :
- usage();
- }
-
- if (VT200_7BIT)
- printf("\033[62;1\"p"); /* vt200 7 bits */
- else
- printf("\033[62;2\"p"); /* vt200 8 bits */
-
- if(clearf) clearkeys();
-
- if (initf) getinit();
-
- /* process {key, key string} pairs. Note optind is index to argv
- for first pair. By adding 1 to optind insures that a pair exists
- i.e. the last key has a key string. */
-
- while(optind + 1 < argc)
- {
- dokey(argv[optind], argv[optind+1]);
- optind += 2;
- }
-
- if(lockf) lockkeys();
-
- exit(0);
-}
-
-/****************************************************************************/
-
-/*
- * Load the VT220 SHIFT-FNKEY value, the basic pattern is
- * "\EP1;1|"+KEYNAME+"/"+VAL_AS_HEX+"\E\\"
- * that is, literally what is in quotes (w/o quotes) then the
- * name of the key from the keytable above (a numeric string)
- * then a slash, then the string value as hex pairs then ESC-BACKSLASH
- *
- * Note: you can gang together key defns with semicolons but that
- * would complicate things, especially error handling, so do it all
- * for each pair, who cares, really.
- */
-
-dokey(nm,val) char *nm, *val;
-{
- register char *scr;
- register struct keynames *kp;
-
- for(scr = nm; *scr = toupper(*scr); scr++)
- ;
- for(kp = keys; kp->name != NULL; kp++)
- if(strcmp(nm,kp->name) == 0) {
- printf("%cP1;1|%s/",ESC,kp->string);
- while(*val) printf("%02x",*val++);
- printf("%c\\",ESC);
- fflush(stdout);
- return;
- }
- fprintf(stderr,"Bad key name: %s\n",nm);
- usage(); /* bad key name, give up */
-}
-
-/****************************************************************************/
-
-clearkeys()
-{
- printf("%cP0;1|%c\\",ESC,ESC);
- fflush(stdout);
-}
-
-/****************************************************************************/
-
-lockkeys()
-{
- printf("%cP1;0|%c\\",ESC,ESC);
- fflush(stdout);
-}
-
-/****************************************************************************/
-
-usage()
-{
- int i;
-
- fprintf(stderr,"usage: %s [-cil] [keyname string keyname string...]\n\n",prog);
- fprintf(stderr,"The following options are available\n");
- fprintf(stderr,"\t-c\tclears keys first\n");
- fprintf(stderr,"\t-l\t[sets then] locks further setting\n");
- fprintf(stderr,"\t-i\tfirst read initialization file $HOME/%s\n",INITFILE);
- fprintf(stderr,"(note that the only way to unlock is via Set-Up)\n\n");
- fprintf(stderr,"Keyname is one of:\n\t");
- for(i=0; keys[i].name != NULL; i++)
- fprintf(stderr,"%s ",keys[i].name);
- fprintf(stderr,"\nKeyname is SHIFTED function key that sends the string\n\n");
- fprintf(stderr,"Strings may need quoting to protect from shell\n");
- fprintf(stderr,"You must specify an option or key,string pairs\n\n");
- exit(1);
-}
-
-/****************************************************************************/
-
-/* This routine process the INITFILE. This file expects lines in the format
-
- <ws> keyname ws string
-
- Where ws is white space (spaces or tabs) and <ws> is optional white space.
- The string may include spaces or tabs and need not be quoted. If the
- string has the sequence of "\n" then a newline character is included in
- the string.
-
- examples:
-
- F6 ls -lg\n
- F7 uulog -s
-
-*/
-
-#include <sys/types.h>
-#include <sys/stat.h>
-
-getinit()
-{
- char *home; /* user's home directory */
- char path[BUFSIZ]; /* full path name of init file */
- char buf[BUFSIZ]; /* buffer to hold 1 line from init file */
- char key[BUFSIZ]; /* buffer, to hold specified fcn key */
- char keystr[BUFSIZ]; /* string associated with fcn key */
- char *ptr; /* pointer to transverse buf */
- int i, j; /* array indices */
- int statflag; /* whether init file is regular & readable */
- struct stat statbuf; /* stat of the init file */
- FILE *fp; /* file pointer to init file */
-
- /* construct full path name for init file */
- home = getenv("HOME");
- snprintf(path, sizeof(path), "%s/%s", home, INITFILE);
-
- /* check status if init file */
- if (stat(path, &statbuf) != -1)
- {
- statflag = statbuf.st_mode & S_IFREG && statbuf.st_mode & S_IREAD;
- if (!statflag || (fp = fopen(path, "r")) == NULL)
- {
- fprintf(stderr, "couldn't open initalization file: %s\n", path);
- exit(1);
- }
-
- /* process lines from init file */
- while (fgets(buf, BUFSIZ, fp) != NULL)
- {
- /* variable initializations */
- i = 0; j = 0;
- key[0] = '\0'; keystr[0] = '\0';
- ptr = buf;
-
- while (*ptr == ' ' || *ptr == '\t') ptr++; /*skip whitespace*/
-
- if (*ptr == '\n') break; /* we hit an emtpy line */
-
- while (!isspace(*ptr) && *ptr != '\0') /* get keyname */
- key[i++] = *ptr++;
- key[i] = '\0'; /* place EOS in buffer */
-
- while (*ptr == ' ' || *ptr == '\t') ptr++; /*skip whitespace*/
-
- while (*ptr != '\n' && *ptr != '\0') /* get string */
- {
- /* check if string is to include newline i.e. \n */
- if (*ptr == '\\' && *(ptr+1) == 'n')
- {
- keystr[j] = '\012';
- ptr++;
- }
- else
- keystr[j] = *ptr;
- j++; ptr++;
- }
- keystr[j] = '\0'; /* place EOS in buffer */
- dokey(key, keystr); /* load key with string */
- }
- }
- else
- {
- fprintf(stderr, "init file %s not found\n\n", path);
- usage();
- }
-}
diff --git a/usr.sbin/pcvt/vgaio/CAUTION b/usr.sbin/pcvt/vgaio/CAUTION
deleted file mode 100644
index e1eba06..0000000
--- a/usr.sbin/pcvt/vgaio/CAUTION
+++ /dev/null
@@ -1,28 +0,0 @@
-CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION
-CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION
-CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION
-
- THE USE OF THIS PROGRAM MAY DESTROY YOUR MONITOR !!!
- ====================================================
-
- IF YOU DON'T KNOW WHAT YOU ARE DOING, STAY AWAY FROM IT !!!
- ===========================================================
-
- THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``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 AUTHOR 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.
-
-CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION
-CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION
-CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION CAUTION
-
diff --git a/usr.sbin/pcvt/vgaio/Makefile b/usr.sbin/pcvt/vgaio/Makefile
deleted file mode 100644
index 0ac0388..0000000
--- a/usr.sbin/pcvt/vgaio/Makefile
+++ /dev/null
@@ -1,24 +0,0 @@
-# $FreeBSD$
-
-PROG= vgaio
-MAN= vgaio.8
-SRCS= vgaio.y lex.l y.tab.h
-
-CFLAGS+= -I${.OBJDIR} -I${.CURDIR}
-
-YACC= yacc
-
-#YFLAGS+= -yd # Bison
-#YFLAGS+= -v # verbose
-
-LFLAGS+= -I
-
-DPADD= ${LIBM} ${LIBY} ${LIBL}
-LDADD= -lm -ly -ll
-
-CLEANFILES+= y.output # comment file from bison
-
-install:
- @${ECHO} "vgaio is not installed automatically ...."
-
-.include <bsd.prog.mk>
diff --git a/usr.sbin/pcvt/vgaio/lex.l b/usr.sbin/pcvt/vgaio/lex.l
deleted file mode 100644
index 6cf85ec..0000000
--- a/usr.sbin/pcvt/vgaio/lex.l
+++ /dev/null
@@ -1,83 +0,0 @@
-%{
-/*
- * Copyright (c) 1994 Joerg Wunsch
- *
- * All rights reserved.
- *
- * This program is free software.
- *
- * 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 Joerg Wunsch
- * 4. The name of the developer may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * $Log: lex.l,v $
- * Revision 1.1 1994/03/29 02:47:20 mycroft
- * pcvt 3.0, with some performance enhancements by Joerg Wunsch and me.
- *
- * Revision 1.2 1994/01/08 17:42:58 j
- * cleanup
- * made multiple commands per line work
- * wrote man page
- *
- * Revision 1.3 21.12.1994 -hm
- * Added mi command for accessing the misc out register
- */
-
-#include <stdio.h>
-#include <stdlib.h>
-
-#include "vgaio.h"
-#include "y.tab.h"
-
-extern YYSTYPE yylval;
-
-%}
-
-D [0-9a-fA-F]
-
-%%
-
-cr|CR { return CR; }
-
-ar|AR { return AR; }
-
-gr|GR { return GR; }
-
-sr|SR { return SR; }
-
-mi|MI { return MI; }
-
-{D}({D}*) { sscanf(yytext, "%x", &yylval.num); return NUM; }
-
-[ \t] { /* ignore */ }
-
-\n { return NEWLINE; }
-
-. { return yytext[0]; }
diff --git a/usr.sbin/pcvt/vgaio/vgaio.8 b/usr.sbin/pcvt/vgaio/vgaio.8
deleted file mode 100644
index e7f3b24..0000000
--- a/usr.sbin/pcvt/vgaio/vgaio.8
+++ /dev/null
@@ -1,141 +0,0 @@
-.\"
-.\" Copyright (c) 1994 Joerg Wunsch
-.\"
-.\" All rights reserved.
-.\"
-.\" This program is free software.
-.\"
-.\" 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 Joerg Wunsch
-.\" 4. The name of the developer may not be used to endorse or promote
-.\" products derived from this software without specific prior written
-.\" permission.
-.\"
-.\" THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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.
-.\"
-.\" $FreeBSD$
-.\" -hm updated 31.12.94
-.\"
-.Dd December 31, 1994
-.Dt VGAIO 8
-.Os
-.Sh NAME
-.Nm vgaio
-.Nd perform input/output on a Video Graphics Array
-.Sh SYNOPSIS
-.Nm
-.Op Fl d
-.Sh DESCRIPTION
-.Ss Purpose
-The
-.Nm
-utility
-is used to perform register-level input/output on a Video Graphics Array.
-Since some of the sequences required to access those registers are very
-silly,
-.Nm
-cares of all the things necessary and allows the user to access the
-registers of several register groups with their symbolic names.
-.Ss Options
-.Bl -tag -width 10n -offset indent
-.It Fl d
-Turn on the grammar parser debugger.
-.El
-.Ss Command language
-The command language of
-.Nm
-constitutes of some very simple tokens and rules.
-Commands are executed
-line by line as they are entered.
-Each line may contain any number of
-semicolon-separated input/output commands.
-.Pp
-Symbolic register names look like:
-.Pp
-.D1 Ao Em reggroup Ac Ns Aq Em regnumber
-.Pp
-with
-.Aq Em regnumber
-being any hexadecimal number
-(without a leading
-.Em 0x ) ,
-and
-.Aq Em reggroup
-one of the strings
-.Dq Em ar ,
-.Dq Em cr ,
-.Dq Em gr ,
-.Dq Em mi ,
-or
-.Dq Em sr ,
-standing for the
-.Em Attribute controller ,
-.Em CRT controller ,
-.Em Graphics controller ,
-.Em Miscellaneous Output Register ,
-or
-.Em Timing sequencer ,
-respectively.
-.Pp
-An input instruction has the form
-.Pp
-.D1 Ao Em regname Ac \&?
-.Pp
-and will cause
-.Nm
-to output a line like
-.Bd -ragged -offset indent
-.Aq Em regname
-.No = 0x Ns Aq Em number
-.Ed
-.Pp
-An output instruction looks like
-.Bd -ragged -offset indent
-.Ao Em regname Ac =
-.Aq Em number
-.Ed
-.Pp
-Spaces or Tabs between the
-.Aq Em reggroup ,
-the
-.Aq Em regnumber ,
-or any of the other tokens are ignored.
-They are not required anyway.
-.Pp
-The
-.Dq Em mi
-needs a single unused argument to satisfy the syntax :-) (-hm).
-.Ss Access control
-The caller must have uid 0 in order to gain the required access to
-the IO registers.
-.Sh HISTORY
-This program is considered
-.Dq hackware .
-It has been developed in order to simplify the process of developing other
-software that needs to program the Video Graphics Array.
-.Pp
-Remember, to use this program, your kernel has to be compiled with XSERVER
-being defined!
-.Sh AUTHORS
-The program has been contributed by
-.An J\(:org Wunsch ,
-Dresden
-.Aq joerg_wunsch@uriah.sax.de .
diff --git a/usr.sbin/pcvt/vgaio/vgaio.h b/usr.sbin/pcvt/vgaio/vgaio.h
deleted file mode 100644
index e313f86..0000000
--- a/usr.sbin/pcvt/vgaio/vgaio.h
+++ /dev/null
@@ -1,60 +0,0 @@
-/*
- * Copyright (c) 1994 Joerg Wunsch
- *
- * All rights reserved.
- *
- * This program is free software.
- *
- * 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 Joerg Wunsch
- * 4. The name of the developer may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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.
- */
-
-/*
- * $Header
- * The author may be reached unter <joerg_wunsch@uriah.sax.de>
- *
- * $Log: vgaio.h,v $
- * Revision 1.1 1994/03/29 02:47:25 mycroft
- * pcvt 3.0, with some performance enhancements by Joerg Wunsch and me.
- *
- * Revision 1.2 1994/01/08 17:42:58 j
- * cleanup
- * made multiple commands per line work
- * wrote man page
- *
- *
- */
-
-/* common structure to hold the definition for a VGA register */
-
-#ifndef VGAIO_H
-#define VGAIO_H
-
-struct reg {
- int group, num;
-};
-
-#endif /* VGAIO_H */
diff --git a/usr.sbin/pcvt/vgaio/vgaio.y b/usr.sbin/pcvt/vgaio/vgaio.y
deleted file mode 100644
index 32c0142..0000000
--- a/usr.sbin/pcvt/vgaio/vgaio.y
+++ /dev/null
@@ -1,253 +0,0 @@
-%{
-/*
- * Copyright (c) 1994 Joerg Wunsch
- *
- * All rights reserved.
- *
- * This program is free software.
- *
- * 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 Joerg Wunsch
- * 4. The name of the developer may not be used to endorse or promote
- * products derived from this software without specific prior written
- * permission.
- *
- * THIS SOFTWARE IS PROVIDED BY THE DEVELOPERS ``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 DEVELOPERS 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.
- */
-
-#include <sys/cdefs.h>
-__FBSDID("$FreeBSD$");
-
-/*
- * $Log: vgaio.y,v $
- * Revision 1.1 1994/03/29 02:47:27 mycroft
- * pcvt 3.0, with some performance enhancements by Joerg Wunsch and me.
- *
- * Revision 1.2 1994/01/08 17:42:58 j
- * cleanup
- * made multiple commands per line work
- * wrote man page
- *
- * Revision 1.3 21.12.1994 -hm
- * Added mi command for accessing the misc out register
- * hex values shown as 2 fixed chars, added binary output
- */
-
-#include <sys/types.h>
-#include <stdio.h>
-#include <stdlib.h>
-#include <sys/fcntl.h>
-#include <machine/cpufunc.h>
-#include <machine/pcvt_ioctl.h>
-
-#ifdef __NetBSD__
-#include <machine/pio.h>
-#endif
-
-#include "vgaio.h"
-
-void setreg(struct reg r, int val);
-void getreg(struct reg r);
-void yyerror(const char *msg);
-
-#define YYDEBUG 1
-
-unsigned short vgabase;
-
-%}
-
-%union {
- int num;
- struct reg reg;
-}
-
-%token MI GR CR SR AR NEWLINE
-%token <num> NUM
-
-%type <num> reggroup
-%type <reg> register
-
-%%
-
-interpret: lines ;
-
-lines: line
- | lines line
- ;
-
-line: statements NEWLINE
- | NEWLINE
- | error NEWLINE { fprintf(stderr, "bing!\n"); }
- ;
-
-statements: statement
- | statements ';' statement
- ;
-
-statement: register '?' { getreg($1); }
- | register '=' NUM { setreg($1, $3); }
- | /* lambda */
- ;
-
-register: reggroup NUM { $$.num = $2; $$.group = $1; }
- ;
-
-reggroup: GR { $$ = GR; }
- | CR { $$ = CR; }
- | SR { $$ = SR; }
- | AR { $$ = AR; }
- | MI { $$ = MI; }
- ;
-
-%%
-
-static struct {
- int id;
- const char *name;
-} regnames[] = {
- {GR, "gr"}, {CR, "cr"}, {SR, "sr"}, {AR, "ar"}, {MI, "mi"},
- {0, 0}
-};
-
-const char *getname(struct reg r) {
- int idx;
- for(idx = 0; regnames[idx].id; idx++)
- if(regnames[idx].id == r.group)
- return regnames[idx].name;
- return "??";
-}
-
-/*---------------------------------------------------------------------------*
- * return ptr to string of 1's and 0's for value
- *---------------------------------------------------------------------------*/
-char *
-bin_str(unsigned long val, int length)
-{
- static char buffer[80];
- int i = 0;
-
- if (length > 32)
- length = 32;
-
- val = val << (32 - length);
-
- while (length--)
- {
- if (val & 0x80000000)
- buffer[i++] = '1';
- else
- buffer[i++] = '0';
- if ((length % 4) == 0 && length)
- buffer[i++] = '.';
- val = val << 1;
- }
- return (buffer);
-}
-
-void getreg(struct reg r) {
- int val; /* FreeBSD gcc ONLY accepts an int !! */
-
- switch(r.group) {
- case GR:
- outb(0x3ce, r.num);
- val = inb(0x3cf);
- break;
-
- case AR:
- r.num &= 0x1f;
- (void)inb(vgabase + 0x0a);
- outb(0x3c0, r.num + 0x20);
- val = inb(0x3c1);
- break;
-
- case CR:
- outb(vgabase + 4, r.num);
- val = inb(vgabase + 5);
- break;
-
- case SR:
- outb(0x3c4, r.num);
- val = inb(0x3c5);
- break;
-
- case MI:
- val = inb(0x3cc);
- break;
- }
-
- printf("%s%02x = 0x%02x = %s (bin)\n", getname(r), r.num, val, bin_str(val,8));
-}
-
-void setreg(struct reg r, int val) {
- switch(r.group) {
- case GR:
- outb(0x3ce, r.num);
- outb(0x3cf, val);
- break;
-
- case AR:
- r.num &= 0x1f;
- (void)inb(vgabase + 0x0a);
- outb(0x3c0, r.num);
- outb(0x3c0, val);
- outb(0x3c0, r.num + 0x20);
- break;
-
- case CR:
- outb(vgabase + 4, r.num);
- outb(vgabase + 5, val);
- break;
-
- case SR:
- outb(0x3c4, r.num);
- outb(0x3c5, val);
- break;
-
- case MI:
- outb(0x3c2, val);
- break;
- }
-
- printf("%s%02x set to 0x%02x = %s (bin) now\n", getname(r), r.num, val, bin_str(val,8));
-}
-
-void yyerror(const char *msg) {
- fprintf(stderr, "yyerror: %s\n", msg);
-}
-
-int main(int argc, char **argv) {
- int fd;
-
- if(argc > 1) yydebug = 1;
-
- if((fd = open("/dev/console", O_RDONLY)) < 0)
- fd = 0;
-
- if(ioctl(fd, KDENABIO, 0) < 0) {
- perror("ioctl(KDENABIO)");
- return 1;
- }
- vgabase = (inb(0x3cc) & 1)? 0x3d0: 0x3b0;
- yyparse();
-
- (void)ioctl(fd, KDDISABIO, 0);
- return 0;
-}
OpenPOWER on IntegriCloud