Send the pcvt(4) driver off to retirement.
This commit is contained in:
parent
86c9af6b69
commit
f6ce2a64f7
Notes:
svn2git
2020-12-20 02:59:44 +00:00
svn path=/head/; revision=158687
@ -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})
|
||||
|
@ -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
|
||||
|
@ -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 ######################
|
||||
##############################################################
|
||||
|
@ -799,8 +799,6 @@
|
||||
misc
|
||||
fonts
|
||||
..
|
||||
pcvtfonts
|
||||
..
|
||||
..
|
||||
mk
|
||||
..
|
||||
@ -1126,12 +1124,6 @@
|
||||
..
|
||||
..
|
||||
..
|
||||
pcvt
|
||||
Doc
|
||||
..
|
||||
Etc
|
||||
..
|
||||
..
|
||||
security
|
||||
..
|
||||
sendmail
|
||||
|
@ -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 \
|
||||
|
@ -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'
|
||||
|
233
etc/rc.d/pcvt
233
etc/rc.d/pcvt
@ -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"
|
@ -127,10 +127,6 @@ syscons_precmd()
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
if [ -x /usr/sbin/ispcvt ] && /usr/sbin/ispcvt
|
||||
then
|
||||
return 1
|
||||
fi
|
||||
return 0
|
||||
}
|
||||
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
@ -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 ,
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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 \
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
||||
|
@ -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)
|
||||
|
@ -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))
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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_ */
|
@ -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 ----------------------------------*/
|
@ -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
@ -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
@ -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
@ -1,6 +0,0 @@
|
||||
/*-
|
||||
* This file is in the public domain.
|
||||
*/
|
||||
/* $FreeBSD$ */
|
||||
|
||||
#include <i386/pcvt_ioctl.h>
|
@ -1,4 +0,0 @@
|
||||
.\" $FreeBSD$
|
||||
Set to not build
|
||||
.Xr pcvt 4
|
||||
system console utilities.
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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 ,
|
||||
|
@ -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>
|
@ -1,5 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
FONTDIR = /usr/share/misc/pcvtfonts
|
||||
|
||||
.include "../Makefile.inc"
|
@ -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 !!!
|
@ -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
|
@ -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 ..)
|
@ -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.
|
||||
|
@ -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
|
||||
|
@ -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 */
|
@ -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 */
|
@ -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>
|
@ -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 */
|
@ -1,7 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
NO_OBJ=
|
||||
FILES= Termcap Terminfo pcvt.el xmodmap-german pcvt.sh
|
||||
FILESDIR= ${BINDIR}/Etc
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -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 -------------------------------------------
|
@ -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,
|
@ -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])
|
@ -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
|
@ -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
|
||||
|
@ -1,8 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
NO_OBJ=
|
||||
FILES= README.FIRST
|
||||
SUBDIR= Doc Etc
|
||||
|
||||
.include "Makefile.inc"
|
||||
.include <bsd.prog.mk>
|
@ -1,4 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
DISTRIBUTION= doc
|
||||
BINDIR= ${SHAREDIR}/pcvt
|
@ -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$
|
@ -1,5 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= cursor
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -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
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
@ -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!
|
@ -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
|
@ -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
|
@ -1,90 +0,0 @@
|
||||
begin 644 cowscene.vt.gz
|
||||
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
|
||||
>.?"2C#BW34UWQQ.;K+_C\C-JOWWU+THZ&OFDJ0``
|
||||
`
|
||||
end
|
@ -1,193 +0,0 @@
|
||||
begin 644 outerlimit.vt.gz
|
||||
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
|
||||
#^0``
|
||||
`
|
||||
end
|
@ -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);
|
||||
}
|
||||
|
@ -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
|
@ -1,350 +0,0 @@
|
||||
begin 644 twzone.vt.gz
|
||||
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
|
||||
M8AH$_$J#8]9^WS(EJQ,&8[G0-:^)=<"T"7C)NLQ2�@(*`AB1&JTL1,S`$Z
|
||||
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
|
||||
MF]0D'Ɖ-4U8F*-5[#.5>#26.NE`YDA)"5J_+[`%-B@*.@!RA4A2BK*AF'
|
||||
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
|
||||
0]]ZO?G=^^'_[0&'EA?,``'E+
|
||||
`
|
||||
end
|
@ -1,110 +0,0 @@
|
||||
begin 644 xmas.vt.gz
|
||||
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
|
||||
LK:O,4Y_?D[\>]SORP^WQS>WV]N?PK-K59<Q^3M6?Q'9Q/?LG-?=D49*R``"?
|
||||
`
|
||||
end
|
@ -1,9 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= fed
|
||||
SRCS= fed.c select.c edit.c misc.c
|
||||
|
||||
DPADD= ${LIBCURSES}
|
||||
LDADD= -lncurses
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -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 ----------------------------------*/
|
@ -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
|
@ -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 ----------------------------------*/
|
@ -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 ----------------------------------- */
|
@ -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 ----------------------------------*/
|
||||
|
||||
|
@ -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 ----------------------------------*/
|
@ -1,5 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= fontedit
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -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
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
@ -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
|
@ -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" );
|
||||
}
|
@ -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.
|
||||
|
@ -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>
|
@ -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&!@8V-C8V-C;V-C8V-C8V````
|
||||
M`````/XV-C8V-C8``````/@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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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
|
@ -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^!@8V-C;V-C8V`````/XV-C8``/@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
|
@ -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@?&!@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
|
@ -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&!@8V-C8V-C;V-C8V-C8V````
|
||||
M`````/XV-C8V-C8``````/@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
|
@ -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&!@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
|
@ -1,6 +0,0 @@
|
||||
# $FreeBSD$
|
||||
|
||||
PROG= ispcvt
|
||||
MAN= ispcvt.8
|
||||
|
||||
.include <bsd.prog.mk>
|
@ -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
|
@ -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
Loading…
Reference in New Issue
Block a user