Message-ID: <bnews.cornell.3348>
Newsgroups: net.general
Path: utzoo!decvax!harpo!floyd!vax135!cornell!pavel
X-Path: utzoo!decvax!harpo!floyd!vax135!cornell!pavel
From: cornell!pavel
Date: Sun Jul 11 03:55:13 1982
Subject: New Curses/Terminfo Package
Posted: Sat Jul 10 15:10:14 1982
Received: Sun Jul 11 03:55:13 1982
At this past week's USENIX meeting, Mark Horton announced the completion
of a replacement database/interface for the Berkeley 'termcap' setup. The
new version is called 'terminfo' and has several advantages over termcap:
- The database is compiled and therefore start-up time for
programs using the package is considerably reduced, even
faster than reading a single-entry termcap database.
- The database is more human-readable and flexible.
- Many more terminals can be supported due to the addition
of several new capabilities, generalised parameter
mechanisms (enabling the full use of, for example, the ANSI
cursor-forward capability by allowing you to say 'move forward
35 spaces' as opposed to 'move forward' 35 times), a fully
general yet efficient arithmetic mechanism which should allow
the use of \any/ bizarre cursor-addressing scheme which can
be computed, etc.
- A \far/ better set of routines for accessing the database,
requiring, for example, only a single call to read in an
entire entry, making all of the terminal's capabilities fully
available to the calling program. No more need for 'tgetent',
'tgetstr', etc.
Conversion of existing programs from termcap to terminfo is very easy and
usually consists mostly of throwing out all of the garbage needed to read
and store a termcap entry.
As a companion to the change to terminfo, Mark has also completed work on
a re-vamped version of the Curses screen-handling library package. The new
version has many, many advantages over the previous version, some of which
are listed below:
- New curses can use insert/delete line/character capabilities
in terminals which have them, considerably speeding up many
applications
- It is possible to use the new curses on more than one type of
terminal at once
- All of the video attributes of a terminal (e.g. reverse video,
boldface, blinking, etc.) can be used, in tandem if possible
- New curses handles terminals like the Televideos with the
so-called 'magic cookie' glitch which leaves markers on the
screen for each change of video attributes
- The arrow and function keys of terminals can be input just as
though they were single characters, even on terminals which use
multi-character sequences for these functions. The new curses
does all necessary interpretation, passing back to the program
only a defined constant telling which key was pressed.
- There is a user-accessable scrolling region
- The use of shell escapes and the csh ^Z job control feature is
supported more fully
- On systems which can support the notion, updates of the screen
will abort if a character is typed at the keyboard, thus allowing
the application to possibly avoid useless output
- It should now be possible for most programs to be written very
portably to run on most versions of UNIX, including System III,
Berkeley UNIX, V7, Bell Labs internal UNIX, etc. This portability
extends to the use of most terminal modes, such as raw mode,
echoing, etc.
Now for the bad news. Mark, being an employee of Bell Labs, cannot release
any of his code. Estimates currently run as high as 18 months for a Bell
release. Even then, nothing could be guaranteed as to its price. As a result,
I have decided to do a public-domain implementation of both terminfo and the
new curses. They will be compatible with Mark's versions. I have arranged
for the library/database to be distributed with the next Berkeley Software
Distribution, 4.2BSD, in December of this year. It will also be made available
for free to any requestor. I agree with Mark when he says that terminfo is
clearly superior to termcap and deserves to be made a new and lasting standard.
I expect to be able to begin recruiting test sites for both curses and terminfo
by the end of September.
If you have any questions, comments or suggestions, please send them to me, not
the network.
Pavel Curtis
{decvax,allegra,vax135,harpo,...}!cornell!pavel
Pavel.Cornell@Udel-Relay
Message-ID: <bnews.cornell.3635>
Newsgroups: net.unix-wizards
Path: utzoo!decvax!harpo!floyd!vax135!cornell!pavel
X-Path: utzoo!decvax!harpo!floyd!vax135!cornell!pavel
From: cornell!pavel
Date: Mon Oct 25 01:49:55 1982
Subject: Curses/Terminfo Public Domain Test Release
Posted: Sun Oct 24 13:57:33 1982
Received: Mon Oct 25 01:49:55 1982
From floyd!trb Sun Oct 24 09:25:35 1982
To: cbosgd!mark cornell!pavel harpo!ihps3!ihuxx!ignatz
Subject: curses
At the last usenix, cornell!pavel (or someone at cornell)
claimed that they were going to write a public domain curses
that was compatible with Mark's. What's up?
Andy
What an interesting coincidence. It was only yesterday that I finished the
documentation for the first test release of my package. I am now seeking
test sites and would be glad to send you a copy, Andy. The following
caveats are in order, however, wrt to this preliminary release:
1) The package has not yet been tuned or profiled. As a result,
it runs about 50-75% slower than the old package. It also does
not yet have any register variables, a marvelous source of
speed.
2) The backbone of the redisplay algorithm is in fine shape, but the
lowest-level routines still do some dumb things. Also, I have not
yet hacked it to make use of all of the really obscure features
available (such as scrolling a dumb terminal to achieve a limited
delete-line capability). The update module is due to be redone
(to take advantage of hard-won wisdom) before the final release.
3) Three of the features documented in the paper Mark gave at
USENIX are not yet supported, pending the rewrite of the update
module. They are:
a. The 'Typeahead Check' which aborts a refresh() if a
character is typed at the keyboard. This is to
allow programs the option of not producing a lot
of useless output (have you ever hit ^F^F^F^F in vi
and then waited for a while for it to catch up?
b. The MINICURSES subset feature, allowing the user
to only bring in a very small portion of the package
if they have no need of the multi-windowing and fancy
keyboard input facilities.
c. Support for terminals with the so-called 'magic-cookie'
glitch, wherein changes of video attributes leave one
or more blank-like special characters on the screen.
All of these features are fairly easy to provide and will appear
in the final release.
Compatibility with Mark's package is, obviously, fairly difficult to
guarantee, considering that he and I have an ocean of lawyers betwixt us.
However, the paper given out at the conference really contained a great
amount of information, yielding a pretty coherent picture of what kinds
of extensions had been made. At the very least, my package jibes with the
info in that paper and with the old package.
The final release of the public-domain package will be timed to coincide
with the final 'freeze' on code to appear in the 4.2BSD release, at which
time I will make a grand and wonderful announcement on USENET and
Unix-Wizards. Before that, though, I would be happy to send tapes to
anyone who is willing to run it.
I really can't afford to just send out tapes, being a lowly grad-student,
but if folks are willing to send me tapes of their own, I will tar it off
and send it back. Please send tapes to
Pavel Curtis
Computer Science Dept.
405 Upson Hall
Cornell University
Ithaca, NY 14853
Ph- (607) 256-4934
If you do send me a tape, please also send me net-mail to warn me about it.
I do so hate surprises.
Pavel