Adding the various documentation files that are accompanying

the regular pcvt distribution under pcvt/Misc.
This commit is contained in:
Joerg Wunsch 1995-03-05 22:50:24 +00:00
parent e7969ab094
commit 31aafd54c3
19 changed files with 4048 additions and 0 deletions

View File

@ -0,0 +1,111 @@
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 vdlinden@fwi.uva.nl)
for writing the 132 column support for the Cirrus
chipsets although he had no time to do it ... :-)
Wolfram Solfrank, Ingo Koenig
for putting some data onto tape (and handling and shipping
in the case of Wolfgang) to provide me with some latest
sources because i still have no ip-connectivity ....
Michael Havemester (tik@abqhh.hanse.de)
for giving me a chance to stay up to date with NetBSD-
current, for programming the initial version of the fast
scrolling code and for the keyboard fifo code!
Charles Hannum (mycroft@gnu.ai.mit.edu)
for getting bored by a slow-scrolling video driver and
for leaving me some bugs to fix ;-)
The NetBSD and FreeBSD teams
for giving me something to play, work and learn with !
There would be nothing to write a driver for without you !!!

View File

@ -0,0 +1,189 @@
VGA BOOKS
---------
Richard Wilton, "Programmers Guide to PC & PS/2 Video Systems",
Microsoft Press 1987
Richard F. Ferraro, "Programmers Guide to the EGA and VGA Cards",
Second Edition, Addison-Wesley 1990
Richard F. Ferraro, "Programmers Guide to the EGA and VGA Cards",
Third Edition, Addison-Wesley 1994
Matthias Uphoff, "Die Programmierung der EGA/VGA Grafikkarte",
Addison Wesley 1992
Bradley Dyck Kliewer, "EGA/VGA A Programmers Reference Guide",
McGraw Hill, 2nd Edition 1990
UNIX AND UNIX DEVICE DRIVERS
----------------------------
Bell Telephone Laboratories, Inc. "UNIX Programmer's Manual, Seventh
Edition, Volume 2". Revised and Expanded Version.
Holt, Rinehart and Winston 1983
George Pajari, "Writing Unix Device Drivers"
Addison Wesley 1992
Janet I. Egan and Thomas J. Teixeira, "Writing a UNIX Device Driver"
John Wiley & Sons 1988
Janet I. Egan and Thomas J. Teixeira, "Writing a UNIX Device Driver"
Second Edition. John Wiley & Sons 1992
Leffler, McKusick, Karels, Quarterman, "The Design and Implementation
of the 4.3BSD UNIX Operating System"
Addison Wesley 1988, corrected Reprint 1989
Leffler, McKusick, "The Design and Implementation of the 4.3BSD UNIX
Operating System, Answer Book"
Addison Wesley 1991
Maurice J. Bach, "The Design of the UNIX Operating System"
Prentice-Hall 1986
Sun Microsystems Inc., "Writing Device Drivers"
Part No. 800-3851-10, Revision A of 27 March 1990
Hewlett-Packard Company, "HP-UX Driver Development Guide",
Part No. 98577-90013, First Edition 07/91
W. Richard Stevens, "Advanced Programming in the UNIX Environment",
Addison Wesley 1992
Phillip M. Adams, Clovis L. Tondo, "Writing Unix Device Drivers in C",
Prentice Hall 1993
Berny Goodheart, James Cox, "The Magic Garden Explained",
Prentice Hall 1994
Peter Kettle, Steve Statler, "Writing Device Drivers for SCO Unix"
Addison Wesley 1993
TERMINAL MANUALS
----------------
Digital Equipment, VT100 Users Manual, 2nd ed. 1979
Digital Equipment, VT132 Users Manual
Digital Equipment, VT220 Programmers Reference Manual, 2nd ed. 1984
Digital Equipment Corporation
Hewlett Packard, 700/92 Technical Reference Manual (ANSI Operation)
Hewlett Packard, 2392a Users Manual (ANSI Operation)
Hewlett-Packard Company
Walker Richer & Quinn, Inc., "Reflection 2 and Reflection 4 Technical
Reference Manual", Version 4.2
Walker, Richer & Quinn, Seattle, August 1992
IBM PC HARDWARE/FIRMWARE
------------------------
Frank van Gilluwe, "The Undocumented PC",
Addison Wesley, First Edition May 1994
IBM Corporation, "Technical Reference Personal Computer AT",
Part No. 6280070, Form No. S229-9611-00, First Edition 1985
Phoenix Technologies Ltd., "System BIOS for IBM PC/XT/AT Computers
and Compatibles", Addison Wesley, Fourth Printing June 1990
Phoenix Technologies Ltd., "System BIOS for IBM PCs, Compatibles,
and EISA Computers", Second Edition
Addison Wesley, First Printing May 1991
American Megatrends, Inc., "Hi-Flex ISA and EISA AMIBIOS Technical
Reference", American Megatrends, Inc. 1992 (9/25/92)
Thom Hogan, "The Programmers PC Sourcebook", 2nd Edition
Microsoft Press, 1991
TERMCAP/TERMINFO
----------------
John Strang, Linda Mui and Tim O'Reilly, "Termcap and Terminfo",
O'Reilly & Associates, Inc. , April 1991
Richard M. Stallman, "Termcap - The Termcap Library and Data Base",
Free Software Foundation, Second Edition November 1988
DATABOOKS/DATASHEETS
--------------------
Intel Corporation, "Microsystem Components Handbook Volume II",
Intel Corporation, 1984
Intel Corporation, "Peripheral Design Handbook",
Intel Corporation, 1980
Tseng Labs, Inc. "ET4000 Graphics Controller Data Book", 1990
Western Digital Corporation, "WD90C11, WD90C11A (PVGA1C) Enhanced
VGA Controller", Western Digital 9/18/91
Western Digital Corporation, "WD90C00 Enhanced VGA Controller",
Western Digital 1/14/91
Western Digital Corporation, "WD90C00 Interface Guide",
Western Digital 1/10/91
Western Digital Corporation, "VGA Register Based Programmers Manual",
Western Digital 1/30/91
Western Digital Corporation, "VGA BIOS Programmers Manual",
Western Digital 1/10/91
Cirrus Logic, "True Color VGA Family - CL-GD542X", Technical Ref.
Manual, Cirrus Logic, Inc. April 1993
S3 Inc, "86C801/86C805 GUI Accelerators"
S3 Incorporated, September 1992
S3 Inc, "86C928 GUI Accelerator"
S3 Incorporated, July 1993
Trident Microsystems Inc., "TVGA9000i Technical Reference Manual",
Trident Microsystems, Inc. (c) 1992, March 1993, Rev 1

View File

@ -0,0 +1,77 @@
List of known Bugs, ToDo's etc.
--------------------------------------------------------------------------------
Last Edit-Date: [Mon Feb 20 19:54:39 1995]
Description: Fixed/done by/date
------------------------------------------- --------------------------------
Util/keycap/man5/keycap.5 does STILL not
build correctly when doing a make obj.
Will there ever be a solution ... :-)
------------------------------------------- --------------------------------
NetBSD PR #404: Meta-Control-Space broken
with PCVT_META_ESC and PCVT_NULLCHARS set
Meta-Control-Space should (theoretically)
send ESC NUL if PCVT_NULLCHARS and
PCVT_META_ESC are defined; in reality, it
just sends ESC. Because of the grody
encoding hack used by sgets() to implement
PCVT_NULLCHARS (if the first character is
a null, send it), there isn't a trivial
one-line fix.
How-To-Repeat: in a kernel with
PCVT_NULLCHARS and PCVT_META_ESC, type a
M-C-SPC to emacs.
------------------------------------------- --------------------------------
when auto switching to vt0 is enabled by
PCVT_SW0CNOUTP and the screen is switched
from an X-vt to screen 0, the video mem
is irrecoverably destroyed - no data loss
------------------------------------------- --------------------------------
kernel messages to the console transmitted
while one of the screens is in x mode do
not scroll up and/or not wrap at lower right fixed 02/95
------------------------------------------- --------------------------------
Numlock repeats, so by keeping numlock
pressed, the LED will blink. The other lock
keys don't do this. This has shown up on
several keyboards, including a Cherry.
------------------------------------------- --------------------------------
Altgr+Shift+key is not separately They way the keyboard mapping
mappable. is done is subject to a sub-
stantial rewrite in a future
release
------------------------------------------- --------------------------------
132 column mode not working with #9 GXE
(S3-based) (sorry, i don't have one -hm)
(see discussion of 132 column mode in the
NotesAndHints file!)
------------------------------------------- --------------------------------
When entering/leaving X from/to a 132 col
screen, it results in garbage. Does the
X server save ALL vga registers ??????
(see discussion of 132 column mode in the
NotesAndHints file!)
------------------------------------------- --------------------------------
WD90Cxx chip detection fails to detect
chips other than C00,C10 and C11. C30
chips are detected as C11s ....
------------------------------------------- --------------------------------
Xfree86 2.0 locks the console when started
under NetBSD 0.9. SuperProbe and X both
show process status "DE+" in ps. Work-
around is to disable PCVT_USL_VT_COMPAT.
------------------------------------------- --------------------------------
On one keyboard, if a "Lock" key is pressed
the leds do not get updated and the key-
board hangs.
------------------------------------------- --------------------------------
HP function key labels code needs to set
the user defined fkey string somehow!
------------------------------------------- --------------------------------
Video 7 1024i not fully supported yet, has
sometimes problems with some chars to displ
------------------------------------------- --------------------------------
The HP-Escape sequences need to be FULLY 28.12.93, -hm did a bit to supp-
implemented port elm. Needs MORE work !
------------------------------------------- --------------------------------

View File

@ -0,0 +1,811 @@
ChangeLog last edit-date: [Sat Feb 25 18:18:52 1995]
================================================================================
Changes 3.10 -> 3.20 February 1995
--------------------------------------------------------------------------------
- patch from Thomas Eberhardt to fix the bell frequency and duration setting
for NetBSD
- some fixes from Onno van der Linden for NetBSD
- added patch for NetBSD-current from Rafal Boni and Lon Willett
- added another mega patch from Lon Willett fixing several bugs:
1 -- Misc porting changes to deal with NetBSD-current, including
a new Util/Makefile.inc.NetBSD-current.
2 -- The Control_R scancodes were being mapped to the Control_L
pcvt keynum.
3 -- FASTSCROLL/graphics-mode problem: there was a problem where
switching from a graphics screen to a text screen would corrupt
the text screen's content if it had been scrolling using the
FASTSCROLL code. (The problem is the bcopy() from kernel to
video memory was using the vs[i].Memory pointer as the source,
instead of the vs[i].Crtat pointer). This is fixed in the beta
21 release by just disabling the fast scroll code for screens
which aren't active.
The patch I'm sending you re-enables the fast scroll code on
inactive (i.e. in kernel memory) screens, saving a few cpu
cycles.
4 -- This is a big one: running multiple X servers was not
really working. The USL handshaking code was a mess (not very
well designed to begin with, but there's not much that can be
done about that). I did manage to get it fairly functional, but
there's a lot of changes.
- changing example rc.local to take care of good old EGA's
- fixing support for EGA boards in vt_coldinit()
- removing vt100 font files from Util/fonts, updated Manifest
- fixing an obviously longstanding bug in roll_up() / roll_down() which was
triggered by Joergs "Crtat" cleanup mega patch.
- removing PCVT_FAKE_SYSCONS10
- removing duplicate names in termcap entries
- fixing vt_coldinit: setting variable "color" for mda/hercules and cga
initializing cursor position
- fixing roll_up() and roll_down() for mda/hercules: mda's have ALWAYS
just one page of memory, original hercules boards too so they
can NEVER use the fastscroll option. SOME hercules are somehow
enhanced in that they support 2 pages. pcvt now just supports
one page hercules/mda!
- made cleanups to 8x14 high and 8x8 high fonts: adjust the 5 scanline
characters to adjust with the corner characters from the low fonts
- applying patch from Joerg which fixes some bugs:
writing to a tty containing an X server resulted in some stange
behaviour depending on the opsys and opsys version used
the init code preserving the screen contents and cursor shape
can only be done on boards allowing the reading of
several crtc registers
- removed bcopyb declaration from pcvt_hdr.h for FreeBSD 2.1
- another patch from Lon Willett (willett@math.utah.edu), he writes:
1 -- Very minor: One of my previous changes didn't get merged
into "pcvt_out.c"; the caclulation of ws_row doesn't account for
"force24" at one spot. It's easier to just set it from
screen_rows anyway, unless there's something that I didn't
understand happening here.
2 -- Debugging stuff: I don't know if you care to add it, but I
found it useful, so I left it in. I rearranged the
PCVT_SHOWKEYS code a little, and added a few lines to show
keyboard commands and responses, with special delimiters.
[file: pcvt_kbd.c]
3 -- "kcon" utility enhancement: I added a "-R" switch to kcon
to do a KBDRESET ioctl. [file: Util/kcon/kcon.c]
4 -- KBDRESET-ioctl bug: the code was trying to read kbd
responses without an spltty(), so naturally it would fail, since
pcrint() was grabbing the ACKs. [file: pcvt_kbd.c]
5 -- update_led() makes kbd hang: the problem here is that
update_led() makes the keyboard generate two KEYB_R_ACK
responses, and one of the interrupts sometimes gets lost when
there is a lot of other I/O happening. See the comment in the
code. My fix seems to work for me, but you may want to handle
it some other way. It would probably be quite reasonable to
check for lost interrupts periodically anyway, whether
update_led() has been called or not. [file: pcvt_kbd.c]
(NOTE: item 5 has been disabled because it causes older
FreeBSD's to panic because of the timer queue not being
initialized at the time called. -hm)
- partly rewrote doreset() in pcvt_kbd.c to enable boot procedure to proceed
if no (PC) keyboard is found. The current behaviour and implementation
is subject to change.
- patch from Thomas Gellekum to Util/keycap/keycap.src
- minor modification to main.c in Util/set2061
- patch from Onno and John Kohl to make pcvt beta 16 work on NetBSD current:
1. pcvt_conf.h
_real_ 1.0 ===> NetBSD1_0 == 1
current 1.0 (1.0A) ===> NetBSD1_0 == 2
2. pcvt_hdr.h
Put pcvt_conf.h before _all_ the #ifdef PCVT_*. This way
the #ifdef NetBSDx_y stuff can do its work.
- size of PCVT_BURST was still reported as 1 for FreeBSD 2.0, fixed
- made some adjustments for FreeBSD 2.0 in Util/vgaio
- Another patch from Joerg for FreeBSD 2.0
- included vgaio, kbdio and set2061 into the outer Makefile, this programs
are build and cleaned but don't install anything.
All program's in the Util dir should now cleanly make <anything> ...
- enable 132 column support for Trident TVGA8900CL, some NetBSDisms
- addend patch from Joerg for pcvt-320b7 to fix FreeBSD 2.0's ttymalloc's
encapsulation into #if's. Also new keycap.src entry.
- fixed keyboard status/LED not updated on soft reset emulator
- on 23rd of December i had some spare time, so i added some demos to the
Util/demo directory as well a a time-killer program (playvt) to view
some of the VT animations and a christmas animation i got from Joerg.
- added a new utility set2061 to program the clock generator on my S3 based
ELSA Winner VGA board. This eventually lets me use 132 columns on this
board, because i'm now able to program the clock to generate 40MHz
on clock output #2.
- debugged winsize patch on FreeBSD 1.1, line discipline open init's the
queues, winsize initialization must happen after line disc. open!
- got a bunch of NetBSD PR's from J.T. Conklin:
PR #214: PCVT treats ctrl-shift exactly like shift for most characters.
(fixed by Lon Willet's Mega Patch described below -hm)
PR #399: If you define PCVT_META_ESC when builting PCVT, Meta-Return
sends 0x8d instead of ESC RET.
(fixed by applying the patch from Bill Sommerfeld. -hm)
PR #400: pcvt sometimes gets confused about window size
(fixed by applying the patch from Bill Sommerfeld. -hm)
PR #404: Meta-Control-Space broken with PCVT_META_ESC and PCVT_NULLCHARS
(put into "BugList" file, no solution yet .. -hm)
PR #488: pcvt can loose keyboard control if you start an xserver from
an xterm
(already fixed by a patch from John Kohl, see below -hm)
PR #580: NetBSD i386/pcvt bugs/enhancements; fixes included
(already integrated the patch from Lon Willet, see below -hm)
- on coldinit, if FAT_CURSOR is defined, the old large blockcursor is used
- enhanced the vgaio output in an attempt to make 132 column mode work
for my S3 board ....
- applied patch from Thomas Gellekum: install instructions for FreeBSD 2.0,
patch to fontedit to compile under FreeBSD 2.0, an addition to
keycap.src and a fix for kbdio
- changed installation instructions to reflect recent changes, removed
instructions for FreeBSD 1.0 and added instructions for FreeBSD 2.0
- upgraded all utilities version strings to 3.20
- new example of rc.local
- changing timeout()/untimeout() function parameter type to TIMEOUT_FUNC_T
definition in pcvt_hdr.h
- changed install instructions to reference Etc dir instead of Doc dir for
several files which were moved from Doc to Etc.
- new parameter -d for the cursor utility, updated cursor manpage
- applying a patch from Lon Willett, willett@math.utah.edu which fixes
several bugs and provides some enhancements. Lon writes:
1 -- The displayed cursor is not updated during kernel I/O,
because async_update() doesn't get called. This is merely ugly
while the system startup messages are being displayed, but it is
positively annoying when using the kernel debugger.
2 -- CONTROL-SHIFT-<KEY> is taken to be the same as SHIFT-<KEY>.
It should be interpretted as CONTROL-<KEY>, or even have its own
binding. One of the lines below fixes it in the former way.
This is especially bad (i.e. clearly buggy) when I type
CONTROL-SHIFT-<6/^> to get a "Control-^", and instead get a "^".
3 -- The "special" region at the bottom of the screen, i.e. the
function-key-labels/status-line in HPVT mode, and the blank line
in FORCE24LINES mode, do not get properly cleared/updated.
4 -- When switching screen sizes/modes, the FORCE24LINES setting
is not always handled.
5 -- The PCVT_VT220KEYB functions are missing some features.
The control key settings are bug fixes; they apply only if
system function key labels are on, and match the labels. The
shift key definitions are enhancements.
The new keys (previously undefined) are:
Control-F1 -- toggle 80/132 columns
Control-F2 -- soft reset emulator
Control-F3 -- toggle force 24 lines mode
Control-F4 -- toggle keyboard debugging
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)
6 -- [Enhancement] The initial startup screen is cleared, and
the screen gets cleared when changing modes/sizes. I don't like
this. I want a chance to see bootstrap loader messages, and I
also want the command "scon -d/dev/ttyv0 -H -s28" in my
rc.local, but then I lose various messages from daemons, etc
(which aren't always logged to syslog). So I have fixed the
code so that it tries to preserve the contents of the screen
when starting up, and when changing modes/sizes.
7 -- [Enhancement?] I added code to preserve the initial cursor
shape at startup. This isn't really necessary, since the
"cursor" command can be used to set it to your preference; but
it seems like this is the preferable policy to use for the
default.
- applying patches from Onno van der Linden and Martin Husemann: adding
support for post 1.0 NetBSD-current and adding PCVT_NO_LED_UPDATE
- patch from Joerg Wunsch: support for FreeBSD 2.0 and better support
for serial console coexistence
- bugreport from Michael Havemester regarding PCVT_NOFASTSCROLL: it was
not enabled in pcvt_vtf.c, fixed.
- renamed pcvt_disable_intr and pcvt_enable_intr to PCVT_DISABLE_INTR and
PCVT_ENABLE_INTR (Joerg)
- attempt to automatically compile time configure in pcvt_conf.h, how
does FreeBSD do this ? should work for NetBSD (from Onno v.d. Linden)
- split off pcvt_kbd.h from pcvt_kbd.c, file > 100k
- split off pcvt_config.h from pcvt_hdr.h. All compile time configurations
should be put into pcvt_config.h now.
- moved version definitions to begin of file in pcvt_ioctl.h and pcvt_hdr.h
- fixing NetBSD #ifdef in pcvt_drv.c
- fixed bug in scon. when doing "scon -c <num>" the destination screen was
cleared, this is fixed now by properly setting "force_24lines"
- added kbdio utility from Joerg into Util directory
- changed font dir from /usr/share/misc/vgafonts to /usr/share/misc/pcvtfonts
- Fix for Gateway 2000 keyboard problems from Brian Moore
- Starting to implement more keymoard mapping layers in pcvt_kbd.c. This
section is a building site, enclosed in NOT_YET_DEF ifdef's
- VT_SETMODE ioctl patch from John Kohl <jtk@kolvir.blrc.ma.us>, see text
from John in the source file pcvt_ext.c
- patch from Joerg for kbd_emulate_pc(), intro of timeout
- fixed bug in soft/hard reset and real system fkey labels
- added patch from Joerg for FreeBSD 1.1.5.1R
- fixed both SR and SF entries in termcap database file
- removed SR entry in termcap database file (bugreport from John Perry)
- bugfix in cirrus 132 column switching got from Onno/Charles
- french keycap database entry from Matthieu Herrb
- cleanup patch from Joerg for Util/demo/Makefile und Util/fonts/Makefile
Changes 3.00 -> 3.10 June 1994
--------------------------------------------------------------------------------
- patch from Joerg correcting my assumed timeout/untimeout FreeBSD casts
- adjusted some #if's while validating NetBSD 0.9 and NetBSD-current
- rolled in Joerg's changes for a pre-1.1.5 (?) FreeBSD-current
- Util/fonts: install only the necessary fontfiles, vt100 not used anymore
- updated and commented Etc/rc.local and updated to more recent /etc/ttys files
- updated all installation instructions and changed their names
- documenting more PCVT_ options in pcvt_hdr.h
- adding CONF_ options to driver config ioctl and upgrading ispcvt
- commenting the source, housekeeping, step up to 3.10 beta 2
- casting timeout()/untimeout() for FreeBSD 1.1R :-(
- unprotecting vgapage() routine with #if !PCVT_KBD_FIFO
- adding Michael Havemester's keyboard fifo diffs to source tree
- pcvt_drv.c: made declaration of Crtat global for this file for NetBSD
- changing Util/fonts/Makefile and Util/demo/Makefile to run in all
supported environments
- moving inline from pcvt_vtf.h into pcvt_hdr.h, i still feel that this is
not the best solution, but i got annoyed by the 10 line pcvt_vtf.h
- bugfix, in hpmode, clear last 4 lines when 28 column mode and force
24 lines are true
- applying patch from Thomas Gellekum <thomas@ghpc8.ihf.rwth-aachen.de>:
- discard escape sequences ESC space F and ESC space G
- discard escape sequences DECELR = enable locator report
and DECSLE = select type of locator event
- disable scrolling when writing outside the scrolling region
at an absolute position.
[ pcvt now seems to be "VAX resistant" :-) ]
- optional switch to screen 0 can be done on kernel/console output
- fixed kernel output cursor positioning
- removed PCVT_FORCE8BIT
- pcvt_ext.c, changed screen switching bcopyb's to bcopy's
- new patch from Onno to support all BIOS versions of the Cirrus chipset.
- pcvt_x_hook() has to care about fkey labels now
- updated Doc/NotesAndHints and Doc/BugList
- applied patch from Onno van der Linden for updated Cirrus chipset support
- updated Doc/Bibliography
- removed paranoid delay()/DELAY() from vga_test()
- added prototype ttrstrt() into pcvt_drv.c for NetBSD 0.9
- made INSTALLATION.NetBSD and INSTALLATION.NetBSD.bundled from mycrofts base
- Charles Hannum took Michael Havemesters speedup modifications, made some
further enhancements and after adding support for pcvt, put it into
the NetBSD-current tree. THANK YOU, Charles !
The NetBSD version of May 20th '94 was taken as the base for 3.10.
Changes 2.20 -> 3.00 March 1994
--------------------------------------------------------------------------------
- Release 3.00
- last minute patch from Joerg (pcvt_hdr.h, BugList, NotesAndHints)
- included speedup patch from Michael Havemester as Etc/LAST-MINUTE
- updated Doc/pcvt.4
- removed bug in Util/ispcvt/Makefile which caused ispcvt to be installed
into /usr/sbin and /usr/local/bin
- split ioctl VGAPCVTID into two: intro of ioctl VGAPCVTINFO for compile
time options only.
VGAPCVTID is now frozen for identification purposes (XFree86 3.0)
updated Util/ispcvt for the above mentioned changes
- issued patch to upgrade beta14 to beta16
- bugfix: when scrolling up (bcopy) is interrupted by a keystroke requesting
a change of the current screen, the "new" screen is scrolled up. Fixed
in pcvt_kbd.c and pcvt_out.c (check_scroll)
- fixed bug "Jumping through vt's with ALT-F12 does jump over vt0"
- PCVT_PCBURST intro, update of ioctl and Util/ispcvt
- NetBSD speedup patch from Michael Havemester (factor 6-10)
- issued patch to upgrade beta14 to beta15 (never officially announced)
- added patch for ttioctl parameters NetBSD-current 12 Feb 94 from Michael
Havemester in pcvt_drv.c
- INSTALLATION.xxx(x)BSD upgraded to reflect changes in Util and NetBSD-current
- struct pcvtid changed to hold the value of PCVT_xxx(x)BSD, ispcvt upgraded
- applied patch from Szabolcs Szigeti for 132 column operation for Trident
TVGA 8900B and TVGA8900C based boards
- PCVT_NETBSD can/must now be 1 or 09 for Release 0.9 and > 09 for current
- applied patches from John Brezak and Szabolcs Szigeti for recent
NetBSD-current changes (syscframe -> trapframe)
- in Util, removed Makefile.inc. Make Makefile.inc.FreeBSD and
Makefile.inc.NetBSD and added a check to the toplevel and every
other Makefile in this part of the tree. sigh ...
- patch from Joerg for pcvt.4 Makefile and Debugger in FreeBSD
- issued pcvt-beta14, code freeze for 3.00 release, just bugfixes now
- INSTALLATION.FreeBSD and a small cleanup patch from Joerg
- large patch from Joerg to get pcvt FreeBSD-current compliant
- permission/owner cleanup, files:664, dirs:775, user:root, group:wheel
- got rid of the verbose error message when installing in Util/fonts
- new make-method in Util/kcon to workaround make portability problems
- NetBSD-current detection workaroundaroundaround for NEW_AVERRUNNABLE in
pcvt_header.h
- MONO_BUF and COLOR_BUF now ifndef'ed
- fixed typo in pcvt_kbd.h in cfkey11() and cfkey12()
- machine/pio.h must be included in pcvt_hdr.h for recent NetBSD-current
- protected every tsleep call with an "if(curproc)" otherwise there is
chance to panic the system (Joerg has an idea why ...)
- more fixes from Joerg: keyboard scansets fixed, X server is now aware
of redefined keys (ioctl implemented)
- patch from Heiko Rupp, configuration with XSERVER not defined didn't compile
- new version of vgaio from Joerg installed
- large keyboard cleanup patch from Joerg merged in
- bugfixes from Joerg: fix crash on not-open vt, remove pcxint, add option
PCVT_INHIBIT_NUMLOCK (for notebook owners :-), support for EGA/VGA
fonts with up to 32 scanlines.
- included vgaio, a program to read/write vga register values from Joerg.
- included mcon, the keyboard mouse emulator control program from Joerg.
- applied averrunnable patch to satisfy the most recent NetBSD-current.
- fixing cursor not updated bug if usl/vt server is running on vt0
- polished some chars in Util/fonts/vt220l.810, fixed all permissions in
the uuencoded fontfiles.
- debugged the EGA/VGA curses based font editor 'fed' in Util/fed. It seems
it's working ok now now.
- updated copyright header files
- synchronize asynchronous cursor position update with having a valid
(new) cursor (row) position from sputc(). (Otherwise a cursor
would appear temporarily in the first position of the first
function key label in the HP mode)
- updated screeninfo ioctl and scon to report the monitor type
- added file Doc/Notes for random notes and hints for pcvt-users.
- enhanced the pcvtid-ioctl and the ispcvt(8) utility to print out the
values of all "PCVT_XXXXXX" compile time options.
- included work from Joerg to convert all ifdef's to if's, to be able
to compile various configurations of pcvt without changing
options in the header file.
- included (currently untested !) patch for a keyboard mouse emulator
from Joerg. (he got problems after he bought a notebook with
just one serial port, which he wanted to use for slip ...)
- screensaver reset is now also done asynchronously to get more speed. the
function average() was renamed to async_update().
- cursor position update and cursor position display in HP mode is now done
asynchronously in function average() in pcvt_sup.c. the function
update_cursor does no longer exist. this gave about 10..30% increase
in speed depending on the data cat'ed (termcap, kernel, 1Mb nulls)
- HP function key emulation processing debugged, this has to be rewritten
to use a stack and a new parser. elm -K now works a bit more, the
display is not garbled anymore, but fkey strings do not work.
- pcvt_vtf.c split off from pcvt_out.c, file got > 100k. Checked all
forward declarations in header and source files
- 132 column support for Cirrus Logic CL-GD542X chipsets written by
Onno van der Linden, c/o vdlinden@fwi.uva.nl
- keyboard scancode display (#define PCVT_SHOWKEYS)
- printscreen keycode fix form Onno van der Linden
- Util/Makefile.inc added .depend dependency for make depend
- pcvt_ioctl.h is now installed into /usr/include/machine.
- keyboard scancode 1 is now used by default, perhaps it cures some problems
- support for keyboard scancodes sets 1 and 2 (compile time selectable via
PCVT_SCANSET), patch from Onno van der Linden, c/o vdlinden@fwi.uva.nl
- Util/fontedit.c updated to "#if defined (__386BSD__) || defined (__NetBSD__)"
(suggested by Mark Weaver, Mark_Weaver@brown.edu)
- 132 column support for S3 86c928 chipsets
- split off pcvt_ext.c from pcvt_sup.c, it was more than 100k ....
- intro of Doc/Manifest and Doc/TestedHardware, removed README.X-PATCH because
it was now really outdated
- superprobe compatibility patches from Joerg
- intro of file Doc/BugList
- another powerpatch from Joerg:
- some vgaioctl's are now available if in X mode (i.e. to scon to
another screen from within an xterm)
- removed bug in keyboardhandling, numlock'ed numkeys did send an
additional null (0x00) char, this has been fixed now.
- SysRq key made functional
- made force 24 lines (see below) the default configuration to have a well
behaving vt220 emulator at startup.
- every vt now has a separate caps-lock, num-lock and scroll-lock flag and
a separate handling of these lock-keys.
- made sleeping in case of scroll lock working from an earlier patch from Joerg.
- large patch from Joerg:
- Doc/pcvt.4 updated to reflect recent changes
- struct winsize set ok when switching between HP/VT
- struct winsize pixels reflect real values now
- ioctl for switching between 80 and 132 cols
- 132 columns for generic VGA's
- updated scon to provide access to ioctl 80/132 col switching
- removed pcconcoftc and kbdsoftc structures from header files, removed
pcconsintr variable and introduced kbd polling synchronization
variable kbd_polling.
- merging Joerg's patch to support 132 columns on Tseng Labs ET3000
- moved Util/uemacs/* --> Etc/uemacs.tar.Z.uu
- added patches from Joerg for new Makefiles in Util
- added keyboard security define's to the new X server code
- adding bugfixes from Joerg Wunsch for "old" (= non vt switching) X server
- Control-Alt-Functionkey(1...12) switches now virtual screens/terminals to
behave consistently with xfree 2.0, also the pages are now checked
against the real no. of terminals available ALL the time ...
- pcvt_hdr.h: changed "int pcstart();" to "void pcstart();" to avoid warning
message when compiling under NetBSD-current
- Doc dir split into Doc and Etc, Support renamed to Util
- adding NetBSD-current support for new X server support (syscframe changed
to trapframe in NetBSD-current as of 11/11/93)
- adding Joergs changes for XFree86 2.0 multiple X server and/or terminal
session support
- adding entries from patchkit 0.2.4 codrv keymap to Support/keycap/keycap.src
- Keyboard security introduced into the XSERVER dependent part in pcvt_drv.c
- renamed device files from /dev/ttycXX to /dev/ttyvXX
- added file Doc/pcvt.el from Joerg Wunsch to distribution
- added HP-mode function key map from Gordon L. Burditt to description
in Doc/Keyboard.HP
- fixed bug in scon which prevents it from showing the correct status of
132 column support of chipset
- 132 column mode for Trident TVGA9000 works now, after 2 1/5 months of
calling everybody i eventually got a tech ref manual from Trident ....
- it is now possible to "force" pcvt into a 24 line mode when operating
in pure VT mode with 25 lines or in HP mode with 28 lines. This
is sometimes necessary when running software which assumes it runs
on a "real" VT220 which has just 24 lines.
- updated scon to support the 24 lines force mode (scon -f [ on | off ])
- soft reset fkey now positions cursor into left upper corner, update_cursor()
made global function
- updated scon (-l) to print out additional info about the vga chipset,
family and 132 column support if VGA detected.
- added additional fields to screeninfo structure in pcvt_ioctl.h to be
able to return information about current vga chipset.
- moved VGA type/family definitions from pcvt_hdr.h to pcvt_ioctl.h
- Terminfo and Termcap updated to support 132 columns
- fixed bug in kcon which outputs garbage for remapped keys in kcon -l.
(reported by Gordon L. Burditt, gordon@sneaky.lonestar.org)
- modified Makefile for Support/ispcvt to copy it for installation instead
of moving it ..
- renamed /usr/share/misc/keycap -> /usr/share/misc/keycap.pcvt to
avoid nameclash with same file for codrv (Gordon Burditt)
- security bit no longer ignored when initializing keyboard (see #define
PCVT_USEKBDSEC in pcvt_hdr.h, suggested by Terry Lambert)
- cpufunc.h include made only for NetBSD (Gordon Burditt)
- switch statement in pcvt_drv.c removed for 386BSD (Gordon Burditt)
- Trident cursor size bug removed
- keyboard initialization for ddb
- added support for cursor on/of switching, screensaver and DECTCEM
- removed explicit Hercules support, MDA = Hercules in this context now
- patchkit from Joerg Wunsch (kbd-overlay malloc, scroll_sleep, clip fix)
- ispcvt now installed into /usr/sbin
- removed PCVT_NETBSD08 and PCVT_NETBSDCU, intro of PCVT_NETBSD
- implemented 132 column operation for wd90c11 chipsets
- PCVT_PREPATCH022 renamed to PCVT_NEEDPG
- INSTALLATION.NetBSD written
- DEVICE in kcon makefile changed from /dev/console to /dev/ttyc0
- new keyboard code in pcvt_kbd.c from NetBSD current
- new /etc/rc.local script in INSTALLATION
- implemented 132 column operation for et4000 chipsets
- detection of super vga chipsets as a prerequisite for 132 col mode
- switched to memory mapped virtual screen operation, configurable no. of
virtual screens, virtual screens now also on MDA and Hercules boards
Changes 2.10 -> 2.20 June 1993
--------------------------------------------------------------------------------
- added new option -a to scon to get the video adaptor in scripts
- support for NetBSD-current, define PCVT_NETBSDCU to enable it
- Support for NetBSD 0.8, define PCVT_NETBSD08 in pcvt_hdr.h to enable it.
- Change Support/Makefile to use <bsd.subdir.mk> instead of <bsd.prog.mk>
- Font editor for the EGA/VGA font-files added to support the design of new
fonts. One will need Zeyd M. Ben-Halim's ncurses library to compile it, see
file README.FIRST for information where to get it
- Doc/INSTALLATION upgraded
- Terminfo entry added to support Zeyd M. Ben-Halim's ncurses port
- ispcvt is now installed in /sbin to have it at boottime if /usr is not
yet mounted.
- applied a patch which prevents CAPS LOCK, SHIFT LOCK, and SCROLL LOCK
from being repeated (causing i.e a flashing CAPS LOCK led while
holding CAPS LOCK key down).
(diff from Gordon L. Burditt, gordon@sneaky.lonestar.org)
- merging patches to support the pccons-model of X11 server support
(diff from Joerg Wunsch, joerg_wunsch@uriah.sax.de)
- file pcvt_drv.c routine pg() enclosed in "#ifdef PCVT_PREPATCH022" to solve
multiple defined symbols beginning with patchkit 0.2.2
(reported by Marko Karppinen, dreamer@purkki.apu.fi)
- added british keycap entry into keycap source file
(from Andy Duplain, duplain@rtf.bt.co.uk)
Changes 2.00 -> 2.10 March 1993
--------------------------------------------------------------------------------
- detecting the presence of video boards has been changed to ask the
BIOS "equipment byte" in the RTC-CMOS ram what's installed. this caused
many discussions but solved also many problems ....
- driver name changed from "pc" to "vt" for multiple driver coexistence
(diff from Joerg Wunsch, joerg_wunsch@uriah.sax.de)
- new devicenames recommended for showup in utils like "ps"
(many people suggested that ..)
- new location for manual pcvt.0
(diff from Joerg Wunsch, joerg_wunsch@uriah.sax.de)
- new demo file "sgr.vt" to show available graphic renditions
- intro of Doc/ChangeLog (this file)
- fixed bug in Support/keycap/Makefile
(diff from Gordon L. Burditt, gordon@sneaky.lonestar.org)
- make vttest (main.c) compile after applying patchkit-beta2
- screensaver fixed by Joerg Wunsch
- screensaver now compiled in by default
- made recognition of CONTROL-ALT-DELETE an optional #ifdef'ed feature
- added sgr-conversion table for MDA adaptors
- fixed sgr-conversion table for VGA monochrome environments
- added support for using the kernel debugger
(diff from Bruce Evans, bde@runx.oz.au)
- fixed several bugs regarding monochrome environments in pcvt_sup.c
- fixed bug in scon preventing one from piping output though more
(reported by Gordon L. Burditt, gordon@sneaky.lonestar.org)
- display current screen number in HP-mode in the bottom right of screen
- changed names of all #define-able compile time options to start with
"PCVT_" for easy identification and installation into the kernel config file
- applied another pcvt_kbd.c patchkit from Bruce Evans, bde@runx.oz.au. he
writes:
These fixes are mainly related to ddb. sgetc has a weird interface that
has caused some bugs, and it was too easy for ddb to reenter itself.
1. Don't use char for keypad2num, char might be unsigned. Space is not
important since the array is small.
2. Don't use u_short for n.
3. Change some 0's to NULLs.
4. sgetc must not return NULL for the !noblock case. Only callers with
noblock set check for the null pointer. When the kernel follows a
null pointer, I think page 0 is sometimes mapped in so nothing bad
happens. The kernel panics if the page is not mapped in.
5. Reentrancy fix. The debugger really ought to check for reentrancy
itself, but the driver still needs to return early after the
debugger returns, so that it doesn't return a junk ESC from
ctrl-alt-ESC.
6. xlatkey2ascii may return NULL too.
--------------------------------------------------------------------------------

View File

@ -0,0 +1,149 @@
Character Generator description (before it gets lost ..)
--------------------------------------------------------------------------------
The lower character generator is the default IBM character set II.
The description of the higher character generator follows below. The
character names are taken from the "Postscript Language Reference
Manual", 2nd Edition, Fourth printing July 1991, pp 596.
NOTE: The hex values here are NOT the values the character is identified
by in the emulator. The "physical" (vt220 character) to "logical"
(this table, character generator) conversion is done in the character
output routine by using the tables from file pcvt_tbl.h.
The order of the characters is not regular and was largely influenced by
the status of my brain while pixel-placing characters ....
HEX What
--- -------------------------------------------------
00 Control code display for
. control characters in the
1f range 0x00 - 0x1f
20 Control code display for
. control characters in the
3f range 0x80 - 0x9f
HEX What
--- -------------------------------------------------
40 rho
41 psi
42 partialdiff
43 lambda
44 iota
45 eta
46 epsilon
47 chi
48 logicaland
49 logicalor
4a union
4b propersuperset
4c propersubset
4d gamma
4e Xi
4f Psi
HEX What
--- -------------------------------------------------
50 Pi
51 arrowdblright
52 arrowdblboth
53 Lambda
54 Theta
55 congruent
56 gradient
57 Delta
58 proportional
59 therefore
5a integral
5b fraction
5c (inverted fraction ????)
5d angle
5e (inverted angle ????)
5f braceleftmid
HEX What
--- -------------------------------------------------
60 bracerightmid
61 bracelefttp
62 braceleftbt
63 bracerighttp
64 bracerightbt
65 radical
66 omega
67 (Yen ??)
68 xi
69 yacute
6a thorn
6b eth
6c Thorn
6d Yacute
6e multiply
6f Eth
HEX What
--- -------------------------------------------------
70 threequarters
71 Cedillasmall
72 Acutesmall
73 emdash
74 registered
75 endash
76 logicalnot
77 dieresis
78 notequal
79 scan 9
7a scan 7
7b scan 5
7c scan 3
7d scan 1
7e upsilon
7f emptyset
HEX What
--- -------------------------------------------------
80 oe
81 Otilde
82 atilde
83 Ydieresis
84 Ucircumflex
85 Uacute
86 Ugrave
87 Oslash
88 OE
89 Otilde
8a Ocircumflex
8b Oacute
8c Ograve
8d Idieresis
8e Icircumflex
8f Iacute
HEX What
--- -------------------------------------------------
90 Igrave
91 Edieresis
92 Ecircumflex
93 Egrave
94 Atilde
95 Acircumflex
96 Aacute
97 Agrave
98 onesuperior
99 (small black rectangle)
9a zeta
9b threesuperior
9c copyright
9d currency
9e kappa
9f (inverted question mark)
HEX What
--- -------------------------------------------------
a0 the remaining positions
. are used for the vt220
ff downloadable characterset
-------------------------------------------------------------------------------
(phoooo ..)

View File

@ -0,0 +1,99 @@
I. Character Set Selection on VT220 Terminals
==================================================
name C0 GL C1 GR
+---+ +-------------------+ +---+ +-------------------+
|00h| | | |80h| | |
range | | | | 20h .. 7fh | | | | | a0h .. ffh |
|1fh| | | |9fh| | |
+---+ +-------------------+ +---+ +-------------------+
length 32 96 32 96
/\
SECOND /||\ "lock"- or "single"-shift one set of G0, G1, G2 or
STEP || G3 into one of the "displayable" charactersets GL
|| or GR. (escape) sequences are: SI, SO, ESC ~, ESC n,
|| ESC }, ESC o, ESC |, ESC N and ESC O.
+----+ +----+ +----+ +----+
name | G0 | | G1 | | G2 | | G3 |
length |(96)| |(96)| |(96)| |(96)|
+----+ +----+ +----+ +----+
/\
/||\ designate a hard or a soft character set as
|| one of G0, G1, G2 or G3, used escape sequences
FIRST || are, ESC ( X, ESC ) X, ESC * X and ESC + X - where X is
STEP || B for ascii, < for supplemental, 0 for special, A for
|| british, 4 for dutch, C and 5 for finnish etc. etc. ...
||
+-----+ +------------+ +--------+ +-----------+ +------------+
name |ascii| |supplemental| |special | | national | |downloadable|
| | | graphics | |graphics| |replacement| |characterset|
length | (96)| | (96)| | (96)| | (96)| | (96)|
+-----+ +------------+ +--------+ +-----------+ +------------+
\-------\ /----------/ norway/danish
| dutch
together, this is also finnish
referred to as the french
multinational character french canada
set (power on default german
on a dec vt220) italian
spanish
swedish
swiss
II. Emulating Character Set Selection
=========================================
MDA/HCG/CGA:
just a partial emulation is done, because these boards don't allow
downloadable charactersets. some characters simply don't display
because they are not in the characterset roms on the video board.
if you want to change the mapping, have a look at the default tables
in pcvt_tbl.h.
EGA/VGA:
these cards have provisions for downloadable charactersets and so
many vt220/vt320 charactersets are fully supported:
- US Ascii
- DEC Supplemental
- DEC Special Graphic
- DEC Technical
- ISO Latin-1
- Downloadable
when the emulator is started, it behaves initially similar to
the MDA/CGA/HCG method described above.
when a second (special) characterset for a given screen resolution
is loaded via the "loadfont" utility, the emulator detects this fact
and uses from then on extended tables to access the second charset
as an upper half 512 characterset in terms of ega/vga speak.
from this time on, vt220 downloadable fonts are usable.
the organization of this extended characterset is as follows:
0x00 ... 0x1f C0 display function fonts
0x20 ... 0x3f C1 display function fonts
0x40 ... 0x9f fonts for DEC Supplemental, DEC Special
Graphic, DEC Technical and ISO Latin-1
0xa0 ... 0xff VT220 Downloadable Font
the mapping between vt220 charactersets and the charactersets inside
the ega/vga is done by tables found in the file pcvt_tbl.h.
there is a MSDOS fonteditor called "EVAFONT" available on the
SIMTEL-20 archive, which i used to edit the character sets in the
distribution.

View File

@ -0,0 +1,268 @@
Control Codes and Escape Sequences supported by pcvt
===============================================================================
CONTROL CODES
-------------------------------------------------------------------------------
NUL (0x00) ignored
SOH (0x01) ignored
STX (0x02) ignored
ETX (0x03) ignored
EOT (0x04) ignored
ENQ (0x05) ignored
ACK (0x06) ignored
BEL (0x07) beep
BS (0x08) move one character position to the left
until at left margin
HT (0x09) move to next tab stop
LF (0x0a) move to next line, same column
VT (0x0b) move to next line, same column
FF (0x0c) move to next line, same column
CR (0x0d) move to left margin on current column
SO (0x0e) invoke character set G1 into GL
SI (0x0f) invoke character set G0 into GL
DLE (0x10) ignored
DC1 (0x11) ignored
DC2 (0x12) ignored
DC3 (0x13) ignored
DC4 (0x14) ignored
NAK (0x15) ignored
SYN (0x16) ignored
ETB (0x17) ignored
CAN (0x18) abort current escape sequence
EM (0x19) ignored
SUB (0x1a) abort current escape sequence
ESC (0x1b) start of escape sequence
FS (0x1c) ignored
GS (0x1d) ignored
RS (0x1e) ignored
US (0x1f) ignored
VT220 control codes in the range 0x80 .. 0x9f are completely ignored,
but displayed as C1 display controls.
ESCAPE SEQUENCES DIGITAL EQUIPMENT
-------------------------------------------------------------------------------
(ni) = not implemented yet, all hooks available inside emulator!
<p> = numeric parameter
ESC space F select 7-bit c1 control transmission (ni)
ESC space G select 8-bit c1 control transmission (ni)
ESC # 3 double height top half (ni)
ESC # 4 double height bottom half (ni)
ESC # 5 single width single height (ni)
ESC # 6 double width single height (ni)
ESC # 8 fill screen with 'E's
ESC 7 save cursor
ESC 8 restore cursor
ESC = keypad application mode
ESC > keypad numeric mode
ESC D index
ESC E next line
ESC H set tab at cur col
ESC M reverse index
ESC N single shift G2
ESC O single shift G3
ESC Z who are you
ESC d Only available if PCVT_SETCOLOR was defined when
compiling the kernel, allows to set custom color table
for more info, see pcvt_out.c ...
ESC c power up reset
ESC n Lock Shift G2 -> GL
ESC o Lock Shift G3 -> GL
ESC } Lock Shift G2 -> GR
ESC | Lock Shift G3 -> GR
ESC ~ Lock Shift G1 -> GR
ESC [ ? <p> h set dec private modes
ESC [ ? <p> l reset dec private modes
1 CKM - cursor key mode
6 OM - origin mode
7 AWM - auto wrap mode
ESC [ <p> ' z DECELR - Enable Locator Report (ni)
ESC [ <p> ' { DECSLE - Select type of locator events (ni)
ESC [ ? n Terminal Reports
ESC [ ? K selective erase in line
ESC [ ? J selective erase in display
ESC [ <p> @ insert char(s)
ESC [ <p> A cursor up
ESC [ <p> B cursor down
ESC [ <p> C cursor forward
ESC [ <p> D cursor backward
ESC [ <p> H cursor direct cursor addressing
ESC [ <p> J erase screen
ESC [ <p> K erase line
ESC [ <p> L insert line
ESC [ <p> M delete line
ESC [ <p> P delete char
ESC [ <p> S scroll up
ESC [ <p> T scroll down
ESC [ <p> X erase character
ESC [ <p> c device attributes
ESC [ <p> f direct cursor addressing
ESC [ <p> g clear tabs
ESC [ <p> h set mode
ESC [ <p> l reset mode
4 IRM - insert replacement mode
20 LNM - line feed / newline mode
ESC [ <p> i media copy (ni)
ESC [ <p> m select graphic rendition
0 reset to normal attributes
1 bold
4 underline
5 blinking
7 reverse
22 bold off
24 underline off
25 blinking off
27 reverse off
30-37 foreground colors (on color display)
40-47 background colors (on color display)
ESC [ <p> n device status report
ESC [ <p> r set scrolling region
ESC [ <p> x request / report terminal parameters
ESC [ <p> y invoke selftests (ni)
ESC [ x request/report parameters
ESC [ y invoke seftest(s)
ESC [ " q SCA
ESC [ ! p SCA
ESC ( <p> designate G0
ESC ) <p> designate G1
ESC * <p> designate G2
ESC + <p> designate G3
ESC - <p> designate G1 (96)
ESC . <p> designate G2 (96)
ESC / <p> designate G3 (96)
A British or ISO-Latin-1
B USASCII
C Finnish
5 Finnish
E Norwegian/Danish
6 Norwegian/Danish
H Swedish
7 Swedish
K German
Q French Canadien
R French
Y Italian
Z Spanish
0 special graphics
1 alternate ROM
2 alt ROM, spec graphics
3 HP Roman 8, upper 128 chars*/
4 Dutch
< DEC Supplemental
= Swiss
> DEC Technical
ESCAPE SEQUENCES HEWLETT-PACKARD
-------------------------------------------------------------------------------
ESC&f<attr>a<key>k<llen>d<slen>L<label><string> set function key label
attr = attribute, 0 - normal (not implemented)
1 - local only (not implemented)
2 - transmit only (not implemented)
key = function key number, range 1 .. 8
llen = label string length
slen = string string length
label = label data (up to 16 chars per label)
string = string to send data (up to 80 chars per label)
(not implemented)
EXAMPLE:
========
ESC&f0a1k16d1LFUNCTION KEY 0
sets function key label 1 to "FUNCTION KEY ".
should program fkey 1 to emit "0" on keypress
ESC&j<parm> function key operations
parm = '@' remove the function key labels from screen
parm = 'A' display the modes set of function key labels
parm = 'B' enable & display user function key labels
parm = 'C' clear message & restore the current key labels
parm = 'R' enable usr/sys and menu and label modes
parm = 'S' disable usr/sys and menu and label modes

View File

@ -0,0 +1,286 @@
================================================================================
# #
# Function key mapping for the "more HP" - like layout #
# #
================================================================================
I. Function Key Map
========================
PC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
Key
_________________________________________________________________________
UNSHF| 132 | Soft| | | | 7/8 | Dspl| Auto| SCRN| SCRN| SCRN| SCRN|
SYS | Cols|Reset| | | Beep| Bit | Func| Wrap| 0 | 1 | 2 | 3 |
LABEL|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
UNSHF| | | | | | | | | SCRN| SCRN| SCRN| SCRN|
USER | F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | 0 | 1 | 2 | 3 |
LABEL|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
| | | | | | | | | Fkey| U/S |VT/HP| Next|
ALT | F14 | HELP| DO | F17 | F18 | F19 | F20 | F21 |Label|Label| Mode| SCRN|
|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
| User| User| User| User| User| User| User| User| | | | |
SHIFT| F6 | F7 | F8 | F9 | F10 | F11 | F12 | F13 | | | | |
|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
ALT- | User| User| User| User| User| User| User| User| | | | |
SHIFT| F14 | F15 | F16 | F17 | F18 | F19 | F20 | F21 | | | | |
|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
CTRL-| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN| SCRN|
ALT | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 |
|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
PC | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 | F10 | F11 | F12 |
Key
II. Special Keys Used To Change The General Runtime Functionality
=====================================================================
To be consistent with XFfree86 2.0 Virtual Screen switching, it is
now also possible to switch screens by using:
CTRL - ALT - Fx , where x can be 1 ... No of screens compiled,
see the definition of PCVT_NSCREENS !
Virtual Screen/Terminal switching
---------------------------------
F9 or CTRL-ALT-F1 switches to screen 0
F10 or CTRL-ALT-F2 switches to screen 1
F11 or CTRL-ALT-F3 switches to screen 2
F12 or CTRL-ALT-F4 switches to screen 3
CTRL-ALT-F5 switches to screen 4
CTRL-ALT-F6 switches to screen 5
CTRL-ALT-F7 switches to screen 6
CTRL-ALT-F8 switches to screen 7
CTRL-ALT-F9 switches to screen 8
CTRL-ALT-F10 switches to screen 9
CTRL-ALT-F11 switches to screen 10
CTRL-ALT-F12 switches to screen 11
(see also ALT-F12 below)
ALT-F9 Function key labels ON / OFF
------------------------------------
this key is only operational, when in HP/VT mode, see F11
ALT-F9 toggles between function key labels displayed or not.
ON: screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
2 lines fkey labels displayed
row/col display enabled
1 line status/load avg line
OFF: screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
no function key labels displayed
no row/col display
no status/load avg line
applicable escape sequences:
switch OFF:
ESC & j @ remove labels from screen
switch ON:
ESC & j A display system fkey labels
ESC & j B display user fkey labels
ESC & j C display current fkey labels
ALT-F10 User / System Function key labels
-----------------------------------------
this key is only operational, when in HP/VT mode, see ALT-F11
ALT-F10 toggles between the display of user or system
function key labels
this key is only active if labels are toggled on via
the ALT-F9 function key
screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
2 lines fkey labels displayed
row/col display enabled
1 line status/load avg line
applicable escape sequences: (see above)
ESC & j A display system fkey labels
ESC & j B display user fkey labels
ESC & j C display current fkey labels
ALT-F11 Toggle between pure VT and HP-VT Emulation
--------------------------------------------------
This key switches between pure vt100/vt220 mode and
vt100/vt220 with hp-fkey-labels mode of operation.
this is not dependent of any screen resolution the
virtual consoles are in.
initially, after power on, all virtual screens are in
the pure vt-mode:
- the emulator does not execute any hp escape sequences
- the function key label lines are switched off
- no load average or status line is displayed
- no row / column counter is displayed
- no window number is displayed
- the full screen 25x80, 28x80 or 50x80 is usable
- ALT-F9 and ALT-F10 have no function
when toggled to the vt/hp mix of operation, the following
changes take place:
- the emulator executes the supported hp-esc sequences
- the function key labels are displayable depending
on the state of ALT-F9/F10
- the load average is displayed
- the row / column counters are displayed
- the window number is displayed in the lower right corner
- in any screen resolution, the last 3 lines are lost,
so one has a 22x80, 25x80 and 47x80 resolution
- F9 and F10 are operational.
when switching modes by means of ALT-F11, the following
changes to the current environment, the emulator may
be in, apply:
- the screen is cleared
- the cursor moves to the home position
- the scrolling region is reset to default
(this functionality is available via an ioctl)
ALT-F12 Cycle current screen
----------------------------
This key cycles through the display of the video
screens. on startup, screen 0 is displayed; with every
keypress of F12, the next screen is displayed, wrapping
from the maximum screen number back to screen 0.
(this functionality is available via an ioctl)
III. Special Keys used to change the Runtime Functionality of a Page
=======================================================================
when in mixed HP/VT mode, one has two types of function key labels
on screen, user function keys and system function keys.
this functionality is NOT available in pure VT220 mode !
the user function keys emit the below mentioned VT220 function-
key sequences. the labels can be reprogrammed by use of escape
sequences.
in system function key mode, several pre-programmed functions inside
the emulator can be toggled, currently implemented are:
- F1, if a chipset is detected for which 132 operation is supported,
F1 toggles between 80 columns and 132 columns.
- F2, does a soft reset of the emulator code
- F3, -/-
- F4, -/-
- F5, toggle the audible beep generation
- F6, toggle 7/8 bit char width
- F7, toggle display functions. this means that control codes
in the range 0x00 to 0x1f are not EXECUTED by the emulator
any longer, but displayed on the screen
- F8, toggle automatic cursor wraparound at end of line
these functions operate just for the selected screen
IV. Keyboard VT220 compatibility
====================================
The following keys behave different as probably expected.
They were mapped to provide more VT220 compatibility.
To have F1-F8 emit something in HP-mode, you have to switch
to user function key labels by using ALT-F10 (see ALT-F10 above) !
PC Keyboard VT220 Keyboard
------------- --------------------------------------------------
F1 F6 (ESC [ 17 ~)
F2 F7 (ESC [ 18 ~)
F3 F8 (ESC [ 19 ~)
F4 F9 (ESC [ 20 ~)
F5 F10 (ESC [ 21 ~)
F6 F11 (ESC [ 23 ~)
F7 F12 (ESC [ 24 ~)
F8 F13 (ESC [ 25 ~)
ALT-F1 F14 (ESC [ 26 ~)
ALT-F2 HELP (ESC [ 28 ~)
ALT-F3 DO (ESC [ 29 ~)
ALT-F4 F17 (ESC [ 31 ~)
ALT-F5 F18 (ESC [ 32 ~)
ALT-F6 F19 (ESC [ 33 ~)
ALT-F7 F20 (ESC [ 34 ~)
ALT-F8 F21 (ESC [ 35 ~) (i know !!!!)
SHIFT-F1 ... SHIFT-F8
User Defined Keys for F6 - F13
ALT-SHIFT-F1 ... ALT-SHIFT-F8
User Defined Keys for F14 - F20
Insert Insert Here (ESC [ 2 ~)
Delete Remove (ESC [ 3 ~)
Home Find (ESC [ 1 ~)
End Select (ESC [ 4 ~)
PgUp Prev Screen (ESC [ 5 ~)
PgDn Next Screen (ESC [ 6 ~)
PrtSc (ignored)
Pause (ignored)
Break (ignored)
Cursor Keys dependent upon state of cursor key mode either
ESC [ A ... ESC [ D or ESC O A ... ESC O D
NumLock toggles Numeric Keypad for Keypad Numeric Mode
and Keypad Application Mode
ALT-Keypad-0 can be used to generate any keycode in the
ALT-Keypad-1 rage 0-255.
ALT-Keypad-2 this was modeled with the behaviour of a
ALT-Keypad-3 popular boot loader in mind
ALT-Keypad-4
ALT-Keypad-5
ALT-Keypad-6
ALT-Keypad-7
ALT-Keypad-8
ALT-Keypad-9
Numeric Keypad dependent upon state of keypad numeric/application
mode either 0 ... 9 or ESC O p ... ESC O y
ALT-NumLock emits PF1 sequence (ESC O P)
ALT-Keypad-/ emits PF2 sequence (ESC O Q)
ALT-Keypad-* emits PF3 sequence (ESC O R)
ALT-Keypad-- emits PF4 sequence (ESC O S)
/* EOF */

View File

@ -0,0 +1,231 @@
================================================================================
# #
# Function key mapping for the "more VT220" - like layout #
# #
================================================================================
I. Special Keys Used To Change The General Runtime Functionality
=====================================================================
CTRL-F9 Function key labels ON / OFF
------------------------------------
this key is only operational, when in HP/VT mode, see CTRL-F11
CTRL-F9 toggles between function key labels displayed or not.
ON: screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
2 lines fkey labels displayed
row/col display enabled
1 line status/load avg line
OFF: screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
no function key labels displayed
no row/col display
no status/load avg line
applicable escape sequences:
switch OFF:
ESC & j @ remove labels from screen
switch ON:
ESC & j A display system fkey labels
ESC & j B display user fkey labels
ESC & j C display current fkey labels
CTRL-F10 User / System Function key labels
-------------------------------------------------
this key is only operational, when in HP/VT mode, see CTRL-F11
CTRL-F10 toggles between the display of user or system
function key labels
this key is only active if labels are toggled on via
the CTRL-F9 function key
screen has either 25-3 = 22, 28-3 = 25 or 50-3 = 47 lines
2 lines fkey labels displayed
row/col display enabled
1 line status/load avg line
applicable escape sequences: (see above)
ESC & j A display system fkey labels
ESC & j B display user fkey labels
ESC & j C display current fkey labels
CTRL-F11 Toggle between pure VT and HP-VT Emulation
----------------------------------------------------------
This key switches between pure vt100/vt220 mode and
vt100/vt220 with hp-fkey-labels mode of operation.
this is not dependent of any screen resolution the
virtual consoles are in.
initially, after power on, all virtual screens are in
the pure vt-mode:
- the emulator does not execute any hp escape sequences
- the function key label lines are switched off
- no load average or status line is displayed
- no row / column counter is displayed
- the full screen 25x80, 28x80 or 50x80 is usable
- CTRL-F9 and CTRL-F10 have no function
when toggled to the vt/hp mix of operation, the following
changes take place:
- the emulator executes the supported hp-esc sequences
- the function key labels are displayable depending
on the state of CTRL-F9/CTRL-F10
- the load average is displayed
- the row / column counters are displayed
- in any screen resolution, the last 3 lines are lost,
so one has a 22x80, 25x80 and 47x80 resolution
- CTRL-F9 and CTRL-F10 are operational.
when switching modes by means of CTRL-F11, the following
changes to the current environment, the emulator may
be in, apply:
- the screen is cleared
- the cursor moves to the home position
- the scrolling region is reset to default
(this functionality is available via an ioctl)
F5 Cycle current page
--------------------------
This key cycles through the display of the video
pages. on startup, page 0 is displayed; with every
keypress of F5, the next page is displayed, wrapping
from the maximum page number back to page 0.
F1 switches to page 0
F2 switches to page 1
F3 switches to page 2
F4 switches to page 3
Shift-F1 -- select screen 4
Shift-F2 -- select screen 5
Shift-F3 -- select screen 6
Shift-F4 -- select screen 7
Shift-F5 -- select (current screen - 1)
(this functionality is available via an ioctl)
II. Special Keys used to change the Runtime Functionality of a Page
=======================================================================
when in mixed HP/VT mode, one has two types of function key labels
on screen, user function keys and system function keys. they are
accessed by using the CTRL key while pressing a function key.
the function key labels are NOT available in pure VT220 mode--although
the function keys are still active
the user function keys and their labels can be reprogrammed by use of
escape sequences.
in system function key mode, several pre-programmed functions inside
the emulator can be toggled, currently implemented are:
- CTRL-F1, toggle 80/132 columns
- CTRL-F2, soft reset emulator
- CTRL-F3, toggle force 24 lines mode
- CTRL-F4, toggle keyboard debugging (if compiled in)
- CTRL-F5, toggle the audible beep generation
- CTRL-F6, toggle 7/8 bit char width
- CTRL-F7, toggle display functions. this means that control codes
in the range 0x00 to 0x1f are not EXECUTED by the emulator
any longer, but displayed on the screen
- CTRL-F8, toggle automatic cursor wraparound at end of line
these functions operate just for the selected page
III. Keyboard VT220 compatibility
====================================
The following keys behave different as probably expected.
They were mapped to provide more VT220 compatibility.
PC Keyboard VT220 Keyboard
------------- --------------------------------------------------
F6 - F12 emit the sequences for VT220 F6 - F12 keys
(ESC [ 17 ~ .... ESC [ 24 ~)
ALT F1 - F10 emit the sequences for VT220 F11 - F14, HELP, DO,
F17 - F20 keys
(ESC [ 23 ~ .... ESC [ 34 ~)
SHIFT F6 - F12 emit the User Definable Key sequences for VT220
F6 - F12 keys or
(ESC [ 17 ~ .... ESC [ 24 ~) for cleared sequences
ALTSHIFT F1-F10 emit the User Definable Key sequences for VT220
F11 - F14, HELP, DO, F17 - F20 keys or
(ESC [ 23 ~ .... ESC [ 34 ~) for cleared sequences
Insert Insert Here (ESC [ 2 ~)
Delete Remove (ESC [ 3 ~)
Home Find (ESC [ 1 ~)
End Select (ESC [ 4 ~)
PgUp Prev Screen (ESC [ 5 ~)
PgDn Next Screen (ESC [ 6 ~)
PrtSc (ignored)
Pause (ignored)
Break (ignored)
Cursor Keys dependent upon state of cursor key mode either
ESC [ A ... ESC [ D or ESC O A ... ESC O D
NumLock toggles Numeric Keypad for Keypad Numeric Mode
and Keypad Application Mode
ALT-Keypad-0 can be used to generate any keycode in the
ALT-Keypad-1 rage 0-255.
ALT-Keypad-2 this was modeled with the behaviour of a
ALT-Keypad-3 popular boot loader in mind
ALT-Keypad-4
ALT-Keypad-5
ALT-Keypad-6
ALT-Keypad-7
ALT-Keypad-8
ALT-Keypad-9
Numeric Keypad dependent upon state of keypad numeric/application
mode either 0 ... 9 or ESC O p ... ESC O y
ALT-NumLock emits PF1 sequence (ESC O P)
ALT-Keypad-/ emits PF2 sequence (ESC O Q)
ALT-Keypad-* emits PF3 sequence (ESC O R)
ALT-Keypad-- emits PF4 sequence (ESC O S)
ALT-F11 emits PF1 sequence (ESC O P)
ALT-F12 emits PF2 sequence (ESC O Q)
/* EOF */

View File

@ -0,0 +1,11 @@
# 386BSD and NetBSD
#MAN4= pcvt.0
#MLINKS= pcvt.0 ../pcvt.0
# FreeBSD
#MAN4= pcvt.4
#MLINKS= pcvt.4 ../pcvt.4
MANSUBDIR= /i386
.include <bsd.prog.mk>

View File

@ -0,0 +1,162 @@
FILES AND DIRECTORIES - Base Directory [pcvt Release 3.20]
--------------------------------------------------------------------------------
Doc Documentation, see below
Etc Additional things, see below
README.FIRST guess what
Util Additional utilities and support, see below
Driversource Description
------------ --------------------------------------------------------
pcvt_conf.h Driver, compile-time configuration file
pcvt_drv.c Driver, os-interface
pcvt_ext.c Driver, USL-VT Xserver ioctl's and 132 column support
pcvt_hdr.h Driver, global include file
pcvt_ioctl.h Driver, ioctl's available for the driver
pcvt_kbd.c Driver, keyboard handling
pcvt_kbd.h Driver, keyboard handling header file
pcvt_out.c Driver, VT220 emulator state machine and misc
pcvt_sup.c Driver, support code for ega's/vga's
pcvt_tbl.h Driver, character set to vga charset mapping tables
pcvt_vtf.c Driver, VT220 emulator support functions
FILES AND DIRECTORIES - Doc
--------------------------------------------------------------------------------
Acknowledgements Everyone and everything who/what helped
Bibliography Useful Books and documentation
BugList Things to do
ChangeLog Driver development history
CharGen Description of the character set files
Charsets VT220 and mda/cga/hcs/ega/vga charactersets
EscapeSequences List of supported control codes & escape sequences
INSTALL.386BSD-0.1 Install instructions for 386BSD 0.1 + pk 0.2.4
INSTALL.FreeBSD-1.1 Install instructions for FreeBSD Release 1.1 or 1.1.5.1
INSTALL.FreeBSD-2.0 Install instructions for FreeBSD Release 2.0
INSTALL.NetBSD-0.9 Install instructions for NetBSD Release 0.9
INSTALL.NetBSD-1.0 Install instructions for NetBSD Release 1.0
Keyboard.HP Special keys and emulated VT220 keys, one style
Keyboard.VT Special keys and emulated VT220 keys, other style
Makefile Makefile for the pcvt.4 manualpage
Manifest This file
NotesAndHints Random notes and hints
TestedHardware A list of tested Hardware, this is just what we got ...
pcvt.4 Manual page for the driver and ioctl's
FILES AND DIRECTORIES - Etc
--------------------------------------------------------------------------------
MAKEDEV.pcvt A shell script to mknod the device files
Terminfo A terminfo entry for the emulator, this IS in
fact a VT220 terminfo entry !
Termcap A termcap entry for the emulator, this IS in fact
a series of VT220 termcap entries which
are extended by 24/25/40/50 lines, 80/132
columns and HP-function key labels
pcvt.el GNU emacs configuration
rc.local sample script for driver initialization
ttys.pcvt.netbsd sample /etc/ttys.pcvt for NetBSD-current
ttys.pcvt.freebsd sample /etc/ttys.pcvt for FreeBSD 1.1R
ttys.pccons.netbsd sample /etc/ttys.pccons for NetBSD-current
ttys.pccons.freebsd sample /etc/ttys.pccons for FreeBSD 1.1R
uemacs.tar.Z.uu an example of how to use the function key labels.
It consists of some files from/for MicroEmacs 3.11a:
- dot-emacsrc, to be moved to /usr/local/.emacsrc,
startup file for micro emacs, contains setup of
the function key labels
- emacs.hlp, interactive uemacs help system
- unix.c-3.11a the source for the terminal handling
xmodmap-german X-server german keyboard mapping sample
FILES AND DIRECTORIES - Util
--------------------------------------------------------------------------------
directory description
--------- ---------------------------------------------------------------
loadfont Program to download charactersets into EGA/VGA character
generator memory.
cursor Very simple program to set the cursor shape.
scon Program to control various aspects of terminal emulation,
such as: emulation mode, screen switching etc.
kcon Program to control various aspects of the keyboard such as
key remapping for national keyboards etc.
keycap A library for accessing the keycap database
ispcvt A short program usable in shell scripts to verify that the
current running kernel has pcvt compiled in and that the
the utility version and the driver version are the same.
fontedit A program to edit VT220 downloadable character sets.
userkeys A program to edit the VT220 programmable function keys.
fonts Contains uuencoded binary fontfiles following the naming rule:
vt220<X>.<YYY>.uu
<X> can be 'l' or 'h', where 'l' stands for a standard
IBM II charset and is to be loaded first for the
base characterset to support a desired resolution,
and 'h' is the extended characterset needed for proper
VT220 emulation and is to be loaded as the second set
in addition to the above mentioned base characterset.
<YYY> is the identifier for the character cell size, currently
we have:
808 = 8x8 - 50 lines on VGA, 43 lines on EGA
810 = 8x10 - 40 lines on VGA
814 = 8x14 - 28 lines on VGA, 25 lines on EGA
816 = 8x16 - 25 lines on VGA
Files distributed:
vt220l.808.uu, vt220h.808.uu
vt220l.810.uu, vt220h.810.uu
vt220l.814.uu, vt220h.814.uu
vt220l.816.uu, vt220h.816.uu
vttest A VT100 compatibility tester. This is a test tool for
VT100 emulation writers and terminal buyers.
demo - chardemo.vt and colors.vt: These two files are from the
MSDOS-Kermit distribution from the Columbia University.
They can be "cat"-ed to the terminal screen and display
all supported VT220 charactersets and all possible colors
respectively.
- sgr.vt: A demonstration of the various display enhancement
combinations for the DECSGR escape sequence.
- some other VT animations i collected over the time and a
program to play them on pcvt with adjustable delay.
fed - a simple, System V curses based font-editor for the EGA/VGA
fonts in the above mentioned font - directory.
Fed was developed using Zeyd M. Ben-Halim's ncurses library,
which is available by ftp from netcom.com:pub/zmbenhal/.
mcon - a program to control the mouse emulation via the keyboard
kbdio - keyboard controller debugging utility
vgaio - a program to read and write VGA registers.
---------------------- CAUTION ------------------------------
Because you are able to change the timings without check
or warning, this program may permanently damage your monitor.
If you don't know what you are doing, DO NOT USE IT !!!!!!!!!
-------------------------------------------------------------
set2061 - a program to set the programmable clock generator on my S3-
based ELSA Winner 1000 VGA board.
---------------------- CAUTION ------------------------------
Because you are able to change the timings without check
or warning, this program may permanently damage your monitor.
If you don't know what you are doing, DO NOT USE IT !!!!!!!!!
-------------------------------------------------------------

View File

@ -0,0 +1,256 @@
Random Notes, Hints and Thoughts
--------------------------------------------------------------------------------
Last Edit-Date: [Sun Feb 26 12:27:54 1995]
First of all, please read the file BugList in this directory !
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.
Keyboard hangs after first update of keyboard LED's
===================================================
Define PCVT_NO_LED_UPDATE and recompile pcvt.
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.
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 a ICD2061 clock synthesizer chip. For 132 column mode to work properly,
clock generator 2 must deliver 40 MHz to the S3 VGA chip, but this value has
to be programmed or initialized. If this VGA board has ever been switched
into 132 colums, i.e. in my case from a DOS program, it will continue to do
so until X runs or the machine is power cycled. If that occurs, the clock
generator 2 does contain nothing or garbage (in case of power cycling) or it
does contain the value for the current resolution in X in case of having been
in the X Server screen recently.
The X Server reprograms the clock generator each time the server is entered,
so the only thing to do is to reprogram the clock generator too when pcvt is
entered. Until now i found no way of identifying the clock oscillator chip
used, so an automatic clock switching seems to be a problem.
NetBSD 0.9 and Xfree86 2.0
==========================
To get the X server up and running on 0.9, you have to compile pcvt with
PCVT_USL_VT_COMPAT disabled, otherwise X (and SuperProbe) will hang the
video driver (not the whole machine !). This bug is reproducible but not
found yet ...
This does not apply to NetBSD-current, 386BSD and FreeBSD.
X server ioctl compatibility:
=============================
The compatibility X-Mode ioctl commands CONSOLE_X_MODE_ON and
CONSOLE_X_MODE_OFF should not be used intermixed with the USL VT style
commands on another virtual terminal. NB, that this situation could happen
if you run an XFree86 2.0 server on one virtual terminal and attempt to
run SuperProbe version 1.0 (as delivered with the XFree86 2.0 release)
on another vty. SuperProbe is still using the old commands in order to
gain IO privileges.
Since the old commands cannot care for things like terminal switching,
serious corruption could result from this, which need not to be detected
immediately (i.e., apparently SuperProbe ran well). Known problems are
font corruptions after the X server has been shut down later, or palette
flickers in 1-second intervals due to an erroneously re-enabled screen
saver.
Once that SuperProbe has been fixed in its release to use the USL VT style
commands, any support for the old CONSOLE_X_MODE_XXX commands will be
eliminated.
(Recent comment: SuperProbe 1.3 has been fixed. It will be delivered with
XFree86 2.1.)
How to set the foreground intensity to high on VGA mono screens:
===============================================================
try to issue the command: "scon -p8,60,60,60", EXPERIMENT !!!
How to change the color palette on VGA cards:
=============================================
try out the following commands:
/usr/local/bin/scon -d/dev/ttyv0 -pblack:0,0,0 -pblue:20,20,40
/usr/local/bin/scon -d/dev/ttyv0 -pbrown:55,55,15 -plightgray:0,42,0
/usr/local/bin/scon -d/dev/ttyv1 -pblack:42,42,42 -pblue:60,60,60
/usr/local/bin/scon -d/dev/ttyv1 -pbrown:60,60,30 -plightgray:30,10,0
/usr/local/bin/scon -d/dev/ttyv2 -pblack:42,42,42 -pblue:63,63,63
/usr/local/bin/scon -d/dev/ttyv2 -pbrown:60,60,20 -plightgray:0,22,0
/usr/local/bin/scon -d/dev/ttyv3 -pblack:38,38,38 -pblue:63,63,63
/usr/local/bin/scon -d/dev/ttyv3 -pbrown:60,40,0 -plightgray:0,0,20
("scon -p default" resets the colors ...)
I have the screensaver compiled in, but can't see any effect
============================================================
Don't forget to turn it on with the scon utility. E.g.,
scon -t 120
sets the timeout to 2 minutes.
Your Notebook uses the NumLock state to switch half of the keyboard
into a numeric keypad
===================================================================
Sigh, each time you leave "vi", your NumLock LED is on again and you
get a "6" instead of "o"? Try
options "PCVT_INHIBIT_NUMLOCK"
this prevents applications from turning NumLock on/off (except the
Xserver - but you want this).
Your notebook significantly loses contrast when using pcvt
==========================================================
Pcvt turns off the "high intensity" attribute bit internally (to enable
the use of a 512-characters charset). Some notebooks hard-code the out-
put intensity versus the character attribute though (i know it for a
Cirrus Logic CL-GD610/620 chipset).
As a quick & dirty workaround, you can reverse what pcvt did to the
Attribute Controller. Do not hack pcvt_sup.c, instead patch your
VGA registers during rc.local with the help of the vgaio utility:
echo "ar12=0f" | vgaio > /dev/null
For the CL-GD610/620, i'm remapping some attribute registers and
get a simple gray scale emulation with this (i.e., i DO NOT use
the hack above):
eagle_id=`echo 'cr1f?' | vgaio | cut -dx -f2`
echo "sr 6 = $eagle_id" | vgaio > /dev/null # enable extended regs
echo "sr d5 = 40" | vgaio > /dev/null # not inverse, enable
# color emulation
echo "ar0=0;ar1=9;ar2=12;ar3=1b;ar4=24;ar5=2d;ar6=36;ar7=3f"|vgaio>/dev/null
echo "ar8=0;ar9=9;ara=12;arb=1b;arc=24;ard=2d;are=36;arf=3f"|vgaio>/dev/null
NOTE THAT THIS IS ONLY FROM EXPERIMENTS! There's no warranty that something
like this wouldn't damage your screen/VGA!
(If you have chipset documentation, you're lucky...)
How to set the "LINES"-Environment variable for sh/csh:
=======================================================
(Note: this is mostly obsoleted now since the driver properly generates
SIGWINCH'es to notify applications about a changed screen size.)
first for the csh:
alias linesw scon -s \!^ \; setenv LINES \!^
now for the bash/ash/sh/bash users:
linesw()
{
scon -s $1
LINES=$1; export LINES
}
/* EOF */

View File

@ -0,0 +1,79 @@
Tested Hardware List last edit-date: [Mon Feb 20 19:36:20 1995]
This is by no means a complete list of hardware pcvt runs on, it is just
compiled from reports people sent in and from hardware owned/loaned !
TESTED VIDEO BOARDS (80 column operation)
--------------------------------------------------------------------------------
Manufacturer Chipset Monitor Notes
------------------------------ -------------- ---------------------- --------
2theMax (?) ET4000 VGA Color
Video7 Inc. VEGA VGA VGA Color/Mono (2)
Diamond Stealth VRAM S3 NEC 3FGx
Trident TVGA 8800CS NEC 3D
Trident TVGA 9000B VGA Color/Mono (2)
Data General C&T P82C604 VGA Color
NoName Hercules W86855AF Mono
Tandon Monochrome (Hercules) TD3088A Tandon Mono
Kyocera ML III25 (Mainboard) WD90C00 JVC VGA Color (1)
Kyocera ML III25 (Mainboard) WD90C00 Nokia CED1 VGA Mono (1)
Kyocera ML IIII33 (Mainboard) WD90C11 Nokia CED1 VGA Mono (1)
NoName VGA TVGA9000B JVC VGA Color (1,2)
Tseng Labs ET3000AX JVC VGA Color (2)
Video7 Inc. VEGA VGA VGA Mono (2)
Video7 Inc. 1024i VGA Mono (2)
ELSA GmbH S3 928 VGA Mono/Color
IBM EGA 6845 Monochrome (2,3)
IBM EGA 6845 Tandon EGA Color (2,3)
Trident TVGA 8900CL VGA Mono (2)
Notes:
(1) - slight display distortion when switching between screens
(2) - remarkable display distortion and/or loss of sync while loading fonts
(3) - snow while scrolling with HP function key labels turned on
TESTED VIDEO BOARDS (132 column operation)
--------------------------------------------------------------------------------
Manufacturer Chipset Monitor Notes
------------------------------ -------------- ---------------------- --------
2theMax (?) ET4000 VGA Color
2theMax (?) ET4000 Tandon VGA Mono
Kyocera ML III33 (Mainboard) WD90C11 Tandon VGA Mono (1,2)
Kyocera ML IIII33 (Mainboard) WD90C11 Tandon VGA Mono (1,2)
Kyocera ML IIII33 (Mainboard) WD90C11 VGA Color (1,2)
Trident (?) TVGA9000B VGA Mono (1,3)
Tseng Labs (?) ET3000 NEC 3D
ELSA GmbH S3 928 VGA Mono/Color
Trident TVGA 8900CL VGA Mono
Notes:
(1) - slight display distortion when switching between screens
(2) - all fonts must be loaded in ascending order prior to switching to 132 cols
(3) - remarkable display distortion and/or loss of sync while loading fonts
TESTED KEYBOARDS
--------------------------------------------------------------------------------
Manufacturer Type Layout
------------------------------ ---------------------- ------------------------
Cherry MF II US
Cherry/Tandon MF II German
Hewlett-Packard MF II US
Hewlett-Packard MF II German
Tatung AT German
Kyocera MF II German
There is absolutely NO support for the ancient PC-keyboards (they had 83 keys).
There is only limited support for AT-keyboards (they have 84 keys, and a
separate numeric keypad, they don't have F9-F12 keys) because the emulator
needs F9-F12 for control functions, and due to the current design of the
keyboard driver there is no (full) support for national keyboards because
of the lack of a ALTGR key.
MF-keyboards are fully supported, 101- and 102-key versions.

View File

@ -0,0 +1,284 @@
#---------------------------------------------------------------------------
#
# pcvt termcap database entry (release 3.20)
#
# last edit-date: [Sun Feb 19 12:47:20 1995]
#
# -hm new entries for SR and SF
# -hm removing duplicate entries
#
#---------------------------------------------------------------------------
#---------------------------------------------------------------------------
# 386bsd 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:
#---------------------------------------------------------------------------
# 386bsd 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:
#---------------------------------------------------------------------------
# 386bsd 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:
#---------------------------------------------------------------------------
# 386bsd vt220 terminal emulator console (pc keyboard & monitor)
# termcap entries for HP-Emulation and 25, 28, 35, 40, 43 and 50
# lines entries. note that the HP-Emulation uses the bottom 3 lines
# for status and function key labels, so we get always 3 lines less.
# "Xs" is a nonstandard, private flag indicating HP-like fkey labels
# 132 column entries
#---------------------------------------------------------------------------
pcvt22hw|dec vt220 with HP-fkey labels, 22 lines and 132 cols:\
:li#22:\
:co#132:\
:Xs:\
:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;22r\E[22;1H:\
:tc=pcvtXX:
pcvt25hw|dec vt220 with HP-fkey labels, 25 lines and 132 cols:\
:li#25:\
:co#132:\
:Xs:\
:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;25r\E[25;1H:\
:tc=pcvtXX:
pcvt32hw|dec vt220 with HP-fkey labels, 32 lines and 132 cols:\
:li#32:\
:co#132:\
:Xs:\
:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;32r\E[32;1H:\
:tc=pcvtXX:
pcvt37hw|dec vt220 with HP-fkey labels, 37 lines and 132 cols:\
:li#37:\
:co#132:\
:Xs:\
:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;37r\E[37;1H:\
:tc=pcvtXX:
pcvt40hw|dec vt220 with HP-fkey labels, 40 lines and 132 cols:\
:li#40:\
:co#132:\
:Xs:\
:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;40r\E[40;1H:\
:tc=pcvtXX:
pcvt47hw|dec vt220 with HP-fkey labels, 47 lines and 132 cols:\
:li#47:\
:co#132:\
:Xs:\
:is=\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h\E[1;47r\E[47;1H:\
:tc=pcvtXX:
#---------------------------------------------------------------------------
# main entry, without "is" and "li" capabilities
#
# NOTE: because the 386BSD "vi"/"elvis" seems to have a bug if
# both "ic" and "im" are specified (an original VT220
# shows the same buggy behaviour!), "ic" has been taken
# out of this entry. for reference, it should be "ic=\E[@".
#
#---------------------------------------------------------------------------
pcvtXX|pcvt vt200 emulator (DEC VT220):\
:AL=\E[%dL:\
:DC=\E[%dP:\
:DL=\E[%dM:\
:DO=\E[%dB:\
:IC=\E[%d@:\
:LE=\E[%dD:\
:RI=\E[%dC:\
:SF=\E[%dS:\
:SR=\E[%dT:\
:UP=\E[%dA:\
:ae=^O:\
:al=\E[L:\
:am:\
:as=^N:\
:bl=^G:\
:bs:\
:cb=\E[1K:\
:cd=\E[J:\
:ce=\E[K:\
:cl=\E[H\E[J:\
:cm=\E[%i%d;%dH:\
:cr=^M:\
:cs=\E[%i%d;%dr:\
:ct=\E[3g:\
:dc=\E[P:\
:dl=\E[M:\
:do=^J:\
:ei=\E[4l:\
:ho=\E[H:\
:im=\E[4h:\
:it#8:\
:k1=\E[17~:\
:k2=\E[18~:\
:k3=\E[19~:\
:k4=\E[20~:\
:k5=\E[21~:\
:k6=\E[23~:\
:k7=\E[24~:\
:k8=\E[25~:\
:kD=\E[3~:\
:kH=\E[4~:\
:kI=\E[2~:\
:kN=\E[6~:\
:kP=\E[5~:\
:kb=\177:\
:kd=\EOB:\
:ke=\E[?1l\E>:\
:kh=\E[1~:\
:kl=\EOD:\
:km:\
:kr=\EOC:\
:ks=\E[?1h\E=:\
:ku=\EOA:\
:le=^H:\
:mb=\E[5m:\
:md=\E[1m:\
:me=\E[m:\
:mi:\
:mr=\E[7m:\
:ms:\
:nd=\E[C:\
:pb#16000000:\
:pt:\
:rc=\E8:\
:rf=/usr/share/tabset/vt100:\
:rs=\Ec\E>\E[?3l\E[?4l\E[?5l\E[?7h\E[?8h:\
:sc=\E7:\
:se=\E[27m:\
:sf=\ED:\
:so=\E[7m:\
:sr=\EM:\
:st=\EH:\
:ue=\E[24m:\
:up=\E[A:\
:us=\E[4m:\
:vt#3:\
:xn:
#---------------------------- E O F -------------------------------------------

View File

@ -0,0 +1,41 @@
pcvt25h|pcvt vt220 emulator video driver 80 cols,
lines#25, cols#80,
am, bel=^G, blink=^[[5m, bold=^[[1m, clear=^[[H^[[J,
cr=^M, csr=^[[%i%p1%d;%p2%dr, cub1=^H, cub=^[[%p1%dD, cud1=^J,
cud=^[[%p1%dB, cuf1=^[[C, cuf=^[[%p1%dC, cup=^[[%i%p1%d;%p2%dH,
cuu1=^[[A, cuu=^[[%p1%dA, dch1=^[[P, dch=^[[%p1%dP, dl1=^[[M,
dl=^[[%p1%dM, ed=^[[J, el=^[[K, home=^[[H, ht=^I, hts=^[H,
ich1=^[[@, ich=^[[%p1%d@, il1=^[[L, il=^[[%p1%dL, ind=^[D,
indn=^[%p1%dD, is1=^[>^[[?3l^[[?4l^[[?5l^[[?7h^[[?8h^[[1;25r^[[25;1H,
it#8, kbs=^?, kcub1=^[OD, kcud1=^[OB, kcuf1=^[OC, kcuu1=^[OA,
kdch1=^[[3~, kf1=^[[17~, kf2=^[[18~, kf3=^[[19~, kf4=^[[20~,
kf5=^[[21~, kf6=^[[23~, kf7=^[[24~, kf8=^[[25~, khome=^[[1~,
kich1=^[[2~, kll=^[[4~, km, knp=^[[6~, kpp=^[[5~,
mir, msgr, nel=^M^J, pb#16000000, rc=^[8, rev=^[[7m,
rf=/usr/share/tabset/vt100, ri=^[M, rin=^[%p1%dM, rmacs=^O,
rmir=^[[4l, rmkx=^[[?1l^[>, rmso=^[[27m, rmul=^[[24m,
rs1=^[c^[>^[[?3l^[[?4l^[[?5l^[[?7h^[[?8h, sc=^[7, sgr0=^[[m,
smacs=^N, smir=^[[4h, smkx=^[[?1h^[=, smso=^[[7m, smul=^[[4m,
tbc=^[[3g, vt#3, xenl, colors#8, pairs#64, setf=\E[%p1%{30}%+%dm,
setb=\E[%p1%{40}%+%dm,
pcvt25hw|pcvt vt220 emulator video driver 132 cols,
lines#25, cols#132,
am, bel=^G, blink=^[[5m, bold=^[[1m, clear=^[[H^[[J,
cr=^M, csr=^[[%i%p1%d;%p2%dr, cub1=^H, cub=^[[%p1%dD, cud1=^J,
cud=^[[%p1%dB, cuf1=^[[C, cuf=^[[%p1%dC, cup=^[[%i%p1%d;%p2%dH,
cuu1=^[[A, cuu=^[[%p1%dA, dch1=^[[P, dch=^[[%p1%dP, dl1=^[[M,
dl=^[[%p1%dM, ed=^[[J, el=^[[K, home=^[[H, ht=^I, hts=^[H,
ich1=^[[@, ich=^[[%p1%d@, il1=^[[L, il=^[[%p1%dL, ind=^[D,
indn=^[%p1%dD, is1=^[>^[[?3l^[[?4l^[[?5l^[[?7h^[[?8h^[[1;25r^[[25;1H,
it#8, kbs=^?, kcub1=^[OD, kcud1=^[OB, kcuf1=^[OC, kcuu1=^[OA,
kdch1=^[[3~, kf1=^[[17~, kf2=^[[18~, kf3=^[[19~, kf4=^[[20~,
kf5=^[[21~, kf6=^[[23~, kf7=^[[24~, kf8=^[[25~, khome=^[[1~,
kich1=^[[2~, kll=^[[4~, km, knp=^[[6~, kpp=^[[5~,
mir, msgr, nel=^M^J, pb#16000000, rc=^[8, rev=^[[7m,
rf=/usr/share/tabset/vt100, ri=^[M, rin=^[%p1%dM, rmacs=^O,
rmir=^[[4l, rmkx=^[[?1l^[>, rmso=^[[27m, rmul=^[[24m,
rs1=^[c^[>^[[?3l^[[?4l^[[?5l^[[?7h^[[?8h, sc=^[7, sgr0=^[[m,
smacs=^N, smir=^[[4h, smkx=^[[?1h^[=, smso=^[[7m, smul=^[[4m,
tbc=^[[3g, vt#3, xenl, colors#8, pairs#64, setf=\E[%p1%{30}%+%dm,
setb=\E[%p1%{40}%+%dm,

View File

@ -0,0 +1,19 @@
;; pcvt25.el, by J"org Wunsch <joerg_wunsch@uriah.sax.de>
;;
;; pcvt is a good VT emulator
(load "term/vt220")
;; ...but i don't like `find' and `select' on `home' and `end' keys
(global-set-key [find] 'beginning-of-line)
(global-set-key [select] 'end-of-line)
;; and the f1 thru f8 keys are designated as f6 thru f13
(define-key function-key-map "\e[17~" [f1])
(define-key function-key-map "\e[18~" [f2])
(define-key function-key-map "\e[19~" [f3])
(define-key function-key-map "\e[20~" [f4])
(define-key function-key-map "\e[21~" [f5])
(define-key function-key-map "\e[23~" [f6])
(define-key function-key-map "\e[24~" [f7])
(define-key function-key-map "\e[25~" [f8])

View File

@ -0,0 +1,264 @@
#---------------------------------------------------------------------------
#
# sample rc.local
# ---------------
#
# last edit-date: [Sun Feb 19 19:20:42 1995]
#
#---------------------------------------------------------------------------
#
# NOTE:
# assumptions: - 8 screens configured
# - /dev/ttyv0 ... /dev/ttyv7 exist
#
#---------------------------------------------------------------------------
# start xdm on screen 8
#xdm_start=YES
xdm_start=NO
# setup german keyboard layout
#set_keybd=YES
set_keybd=NO
# setup keyboard delay & rate
set_keydr=YES
# very fast settings
set_keydr_rate=0
set_keydr_delay=0
#set_keydr=NO
# constuct a new /etc/motd file
construct_motd=NO
#construct_motd=YES
# setup cursor start and end scanline
set_cursor=YES
#set_cursor=NO
# block cursor
set_cur_start=0
set_cur_end=15
#-----------------------------------------------------
# construct /etc/motd file
#-----------------------------------------------------
if [ X${construct_motd} = X"YES" ]
then
if [ -f /netbsd ]
then
if [ ! -f /etc/motd ]; then
install -c -o root -g wheel -m 664 /dev/null /etc/motd
fi
T=/tmp/_motd
rm -f $T
sysctl -n kern.version | sed 1q > $T
echo "" >> $T
sed '1,/^$/d' < /etc/motd >> $T
cmp -s $T /etc/motd || cp $T /etc/motd
rm -f $T
echo 'runtime link editor directory cache'
ldconfig
else
T=/tmp/_motd
rm -f $T
uname -a > $T
echo "" >> $T
sed '1,/^$/d' < /etc/motd >> $T
cp $T /etc/motd
chmod 644 /etc/motd
rm -f $T
fi
fi
#-----------------------------------------------------
# local daemons
#-----------------------------------------------------
echo -n 'starting local daemons:'
# Kerberos runs ONLY on the Kerberos server machine
if [ X${kerberos_server} = X"YES" ]; then
echo -n ' kerberos'; kerberos >> /var/log/kerberos.log &
fi
echo '.'
#-----------------------------------------------------
# check for correct driver and driver version matching
#-----------------------------------------------------
if [ -x /usr/sbin/ispcvt ]
then
if /usr/sbin/ispcvt
then
#--------------------------------------------------
# loading fonts into vga
#--------------------------------------------------
echo 'console driver type: pcvt'
if [ -x /usr/local/bin/loadfont -a -x /usr/local/bin/scon ]
then
adaptor=`/usr/local/bin/scon -a`
if [ $adaptor = VGA ]
then
echo 'loading 25 lines base font into character set 0'
/usr/local/bin/loadfont -c0 -f/usr/share/misc/pcvtfonts/vt220l.816
echo 'loading 25 lines extension font into character set 1'
/usr/local/bin/loadfont -c1 -f/usr/share/misc/pcvtfonts/vt220h.816
echo 'loading 28 lines base font into character set 2'
/usr/local/bin/loadfont -c2 -f/usr/share/misc/pcvtfonts/vt220l.814
echo 'loading 28 lines extension font into character set 3'
/usr/local/bin/loadfont -c3 -f/usr/share/misc/pcvtfonts/vt220h.814
echo 'loading 40 lines base font into character set 4'
/usr/local/bin/loadfont -c4 -f/usr/share/misc/pcvtfonts/vt220l.810
echo 'loading 40 lines extension font into character set 5'
/usr/local/bin/loadfont -c5 -f/usr/share/misc/pcvtfonts/vt220h.810
echo 'loading 50 lines base font into character set 6'
/usr/local/bin/loadfont -c6 -f/usr/share/misc/pcvtfonts/vt220l.808
echo 'loading 50 lines extension font into character set 7'
/usr/local/bin/loadfont -c7 -f/usr/share/misc/pcvtfonts/vt220h.808
elif [ $adaptor = EGA ]
then
echo 'loading 25 lines base font into character set 0'
/usr/local/bin/loadfont -c0 -f/usr/share/misc/pcvtfonts/vt220l.814
echo 'loading 25 lines extension font into character set 1'
/usr/local/bin/loadfont -c1 -f/usr/share/misc/pcvtfonts/vt220h.814
echo 'loading 35 lines base font into character set 2'
/usr/local/bin/loadfont -c2 -f/usr/share/misc/pcvtfonts/vt220l.810
echo 'loading 35 lines extension font into character set 3'
/usr/local/bin/loadfont -c3 -f/usr/share/misc/pcvtfonts/vt220h.810
# echo 'loading 43 lines base font into character set 2'
# /usr/local/bin/loadfont -c2 -f/usr/share/misc/pcvtfonts/vt220l.808
# echo 'loading 43 lines extension font into character set 3'
# /usr/local/bin/loadfont -c3 -f/usr/share/misc/pcvtfonts/vt220h.808
fi
fi
#--------------------------------------------------
# setting screen sizes and emulation
#--------------------------------------------------
if [ -x /usr/local/bin/scon ]
then
if [ $adaptor = VGA ]
then
size=-s28
echo 'switching to 28 lines and VT/HP-emulation'
elif [ $adaptor = EGA ]
then
size=-s25
echo 'switching to 25 lines and VT/HP-emulation'
else
size=
echo 'switching to VT/HP-emulation'
fi
# get monitor type (mono/color)
monitor=`/usr/local/bin/scon -m`
# for all screens do
for device in /dev/ttyv*
do
# setup HP mode
/usr/local/bin/scon -d$device $size -H
# setup cursor size
if [ X${set_cursor} = X"YES" -a -x /usr/local/bin/cursor ]
then
/usr/local/bin/cursor -d$device -s$set_cur_start -e$set_cur_end
fi
# if monochrome monitor, set color palette to use a higher intensity
if [ $monitor = MONO ]
then
if [ $adaptor = VGA ]
then
/usr/local/bin/scon -d$device -p8,60,60,60
fi
fi
done
# switch to screen 0
/usr/local/bin/scon -c0
# set screensaver timeout to one minute
/usr/local/bin/scon -t360
fi
#------------------------------------------------------
# if desired, setup keyboard for german keyboard layout
#------------------------------------------------------
if [ X${set_keybd} = X"YES" -a -x /usr/local/bin/kcon ]
then
echo 'switching to german keyboard layout'
/usr/local/bin/kcon -m de
fi
#------------------------------------------------------
# if desired, setup rate and delay keyboard values
#------------------------------------------------------
if [ X${set_keydr} = X"YES" -a -x /usr/local/bin/kcon ]
then
echo setting keyboard typematic rate = $set_keydr_rate and delay = $set_keydr_delay
/usr/local/bin/kcon -r $set_keydr_rate -d $set_keydr_delay
fi
#--------------------------------------------------
# if desired, start xdm on screen 8
#--------------------------------------------------
if [ X${xdm_start} = X"YES" -a -x /usr/X386/bin/xdm ]
then
/usr/local/bin/scon -c 7
/usr/X386/bin/xdm
sleep 5
/usr/local/bin/scon -c 0
fi
#--------------------------------------------------
# cp /etc/ttys corresponding to console driver
#--------------------------------------------------
if [ -f /etc/ttys.pcvt ]
then
echo 'copying /etc/ttys.pcvt -> /etc/ttys'
cp /etc/ttys.pcvt /etc/ttys
fi
else
echo 'console driver type: not pcvt or pcvt utility/driver mismatch:'
echo '--------------------------------------------------------------'
/usr/sbin/ispcvt -v
echo '--------------------------------------------------------------'
if [ -f /etc/ttys.pccons ]
then
echo 'copying /etc/ttys.pccons -> /etc/ttys'
cp /etc/ttys.pccons /etc/ttys
fi
fi
else
echo 'console driver type: not pcvt'
if [ -f /etc/ttys.pccons ]
then
echo 'copying /etc/ttys.pccons -> /etc/ttys'
cp /etc/ttys.pccons /etc/ttys
fi
fi
echo
# EOF ----------------------------------------------------------------------

View File

@ -0,0 +1,594 @@
begin 666 uemacs.tar.Z
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
C`9^`4,`HH!1P"D@%K`):`:^`6,`LH!9P"\@%[`)Z`;^`8`$D
`
end

View File

@ -0,0 +1,117 @@
! 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