Send the pcvt(4) driver off to retirement.

This commit is contained in:
Poul-Henning Kamp 2006-05-17 09:33:15 +00:00
parent 86c9af6b69
commit f6ce2a64f7
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=158687
127 changed files with 57 additions and 28986 deletions

View File

@ -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})

View File

@ -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

View File

@ -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 ######################
##############################################################

View File

@ -799,8 +799,6 @@
misc
fonts
..
pcvtfonts
..
..
mk
..
@ -1126,12 +1124,6 @@
..
..
..
pcvt
Doc
..
Etc
..
..
security
..
sendmail

View File

@ -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 \

View File

@ -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'

View File

@ -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"

View File

@ -127,10 +127,6 @@ syscons_precmd()
then
return 1
fi
if [ -x /usr/sbin/ispcvt ] && /usr/sbin/ispcvt
then
return 1
fi
return 0
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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 ,

View File

@ -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

View File

@ -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

View File

@ -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.

View File

@ -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

View File

@ -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 \

View File

@ -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

View File

@ -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

View File

@ -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)

View File

@ -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))

View File

@ -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)

View File

@ -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

View File

@ -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_ */

View File

@ -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 ----------------------------------*/

View File

@ -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 -------------------------------------*/

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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 */

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -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 ------------------------------------------*/

File diff suppressed because it is too large Load Diff

View File

@ -1,6 +0,0 @@
/*-
* This file is in the public domain.
*/
/* $FreeBSD$ */
#include <i386/pcvt_ioctl.h>

View File

@ -1,4 +0,0 @@
.\" $FreeBSD$
Set to not build
.Xr pcvt 4
system console utilities.

View File

@ -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.

View File

@ -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

View File

@ -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 ,

View File

@ -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>

View File

@ -1,5 +0,0 @@
# $FreeBSD$
FONTDIR = /usr/share/misc/pcvtfonts
.include "../Makefile.inc"

View File

@ -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 !!!

View File

@ -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

View File

@ -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 ..)

View File

@ -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.

View File

@ -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

View File

@ -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 */

View File

@ -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 */

View File

@ -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>

View File

@ -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 */

View File

@ -1,7 +0,0 @@
# $FreeBSD$
NO_OBJ=
FILES= Termcap Terminfo pcvt.el xmodmap-german pcvt.sh
FILESDIR= ${BINDIR}/Etc
.include <bsd.prog.mk>

View File

@ -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 -------------------------------------------

View File

@ -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,

View File

@ -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])

View File

@ -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

View File

@ -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

View File

@ -1,8 +0,0 @@
# $FreeBSD$
NO_OBJ=
FILES= README.FIRST
SUBDIR= Doc Etc
.include "Makefile.inc"
.include <bsd.prog.mk>

View File

@ -1,4 +0,0 @@
# $FreeBSD$
DISTRIBUTION= doc
BINDIR= ${SHAREDIR}/pcvt

View File

@ -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$

View File

@ -1,5 +0,0 @@
# $FreeBSD$
PROG= cursor
.include <bsd.prog.mk>

View File

@ -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

View File

@ -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);
}

View File

@ -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

View File

@ -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!

View File

@ -1,54 +0,0 @@
# $FreeBSD$
begin 644 chardemo.vt.gz
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
64(2@"$$1?CT_'&^W^B\8)0@*\AL``,4&
`
end

View File

@ -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

View File

@ -1,90 +0,0 @@
begin 644 cowscene.vt.gz
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
>.?"2C#BW34UWQQ.;K+_C\C-JOWWU+THZ&OFDJ0``
`
end

View File

@ -1,193 +0,0 @@
begin 644 outerlimit.vt.gz
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
#^0``
`
end

View File

@ -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);
}

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,9 +0,0 @@
# $FreeBSD$
PROG= fed
SRCS= fed.c select.c edit.c misc.c
DPADD= ${LIBCURSES}
LDADD= -lncurses
.include <bsd.prog.mk>

View File

@ -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 ----------------------------------*/

View File

@ -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

View File

@ -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 ----------------------------------*/

View File

@ -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 ----------------------------------- */

View File

@ -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 ----------------------------------*/

View File

@ -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 ----------------------------------*/

View File

@ -1,5 +0,0 @@
# $FreeBSD$
PROG= fontedit
.include <bsd.prog.mk>

View File

@ -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

View File

@ -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

View File

@ -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" );
}

View File

@ -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.

View File

@ -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>

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -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

View File

@ -1,6 +0,0 @@
# $FreeBSD$
PROG= ispcvt
MAN= ispcvt.8
.include <bsd.prog.mk>

View File

@ -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

View File

@ -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 */

Some files were not shown because too many files have changed in this diff Show More