[net.micro.att] 3B2 and 'tset'

jones@darth.UUCP (Davey Jones) (09/08/85)

Back in the good(?) old days of System III and Version 7 there was a terminal
initialization program called 'tset'.  Even though this is still referenced in
the 3B2 documentation in TERMINFO(4) I can find neither hide nor hair of it.
If anyone has implemented the equivalent function or knows of one I would very
much appreciate hearing about it.

mjs@sfmag.UUCP (M.J.Shannon) (09/10/85)

> Back in the good(?) old days of System III and Version 7 there was a terminal
> initialization program called 'tset'.  Even though this is still referenced in
> the 3B2 documentation in TERMINFO(4) I can find neither hide nor hair of it.
> If anyone has implemented the equivalent function or knows of one I would very
> much appreciate hearing about it.

tset(1) came from Berkeley.  Many systems had it in `local bins' (like
/usr/lbin).  It was never shipped with either V7 or System III.  The Berkeley
source can be made to work on a System V machine by changing the ioctl()
calls appropriately.
-- 
	Marty Shannon
UUCP:	ihnp4!attunix!mjs
Phone:	+1 (201) 522 6063
Disclaimer: I speak for no one.

arnold@gatech.CSNET (Arnold Robbins) (09/10/85)

In article <167@darth.UUCP>, jones@darth.UUCP (Davey Jones) writes:
> Back in the good(?) old days of System III and Version 7 there was a terminal
> initialization program called 'tset'.  Even though this is still referenced in
> the 3B2 documentation in TERMINFO(4) I can find neither hide nor hair of it.

I suspect that the reason it is quoted in terminfo(4) is that that page is
an almost literal transcription of the Berkeley termcap(5) man page. Berkeley,
being a descendant of V7, still has tset.  I too noticed that they mentioned
it, and just sorta smiled.

> If anyone has implemented the equivalent function or knows of one I would very
> much appreciate hearing about it.

This shouldn't be a hard program to write, altho it is often very little
fun to re-invent the wheel. (Of course, if you want to enter into a friendly
little consulting agreement, let me know.... :-)
-- 
Arnold Robbins
CSNET:	arnold@gatech	ARPA:	arnold%gatech.csnet@csnet-relay.arpa
UUCP:	{ akgua, allegra, hplabs, ihnp4, seismo, ut-sally }!gatech!arnold

Hello. You have reached the Coalition to Eliminate Answering Machines.
Unfortunately, no one can come to the phone right now....

guy@sun.uucp (Guy Harris) (09/11/85)

> Back in the good(?) old days of System III and Version 7 there was a
> terminal initialization program called 'tset'.  Even though this is
> still referenced in the 3B2 documentation in TERMINFO(4) I can find neither
> hide nor hair of it.

Well, "tset" was a program written at Berkeley (I presume) by Eric Allman.
It didn't come with V7 or S3.  However, it has a number of #ifdef flags
which should make it possible to compile one that runs under V7 or S3,
assuming you have "termcap".  (You may have to do a little work to get it to
work.)  It uses the "tget..." calls in the "termcap" library which are
simulated by calls in the "terminfo" library, so it shouldn't be too much
work to get it running under S5R2 with "terminfo".  I don't know what the
distribution restrictions on the source to "tset" are, but if you're allowed
to have the source you might try bringing it up.  I suspect the reason it's
documented in TERMINFO(4) is that the curses/terminfo library was intended
to run under a lot of UNIX variants (the version that comes with S5R2 has
code for 4.1BSD, including catching SIGTSTP; this code assumes that signal
handlers are reset to SIG_DFL when the handler is entered, so it has to be
changed to work under 4.2BSD), one such variant being 4.xBSD.

	Guy Harris

rrt@duke.UUCP (Russell R. Tuck) (09/11/85)

> Back in the good(?) old days of System III and Version 7 there was a terminal
> initialization program called 'tset'.  Even though this is still referenced in
> the 3B2 documentation in TERMINFO(4) I can find neither hide nor hair of it.
> If anyone has implemented the equivalent function or knows of one I would very
> much appreciate hearing about it.

This won't immediately help you, but SVR2 on the Unixpc (7300) has a tset.
Does that mean it will show up on the 3Bs in a future release?  I don't know.

mark@cbosgd.UUCP (Mark Horton) (09/16/85)

In article <6274@duke.UUCP> rrt@duke.UUCP (Russell R. Tuck) writes:
>This won't immediately help you, but SVR2 on the Unixpc (7300) has a tset.
>Does that mean it will show up on the 3Bs in a future release?  I don't know.

Probably not.  I've been pushing for some time for tset or an equivalent
program to be put into System V, since I find the system nearly unusable
without it.  However, tset is an Eric Allman creation, hence it has an
incredibly high comment/code ratio, and handles several different variants
of UNIX, so it's long and nontrivial, and there are no high level people
pushing for it, so the support folks didn't want to support anything that
big and said no.  It's in the 7300 because Convergent, not being AT&T,
put it in.

Nonetheless, there are several terminfo capabilities that are intended to
be used by tset, such as the init strings.  The current direction appears
to be that the tabs(1) command is being enhanced to do much of what tset
does in this respect.

By the way, don't blame Eric for the current version of tset (which may
vary depending on where you got your version), as David Wasley and I have
done significant work on it at various times.  My copy uses terminfo
without using any of the emulation features - in particular, the -s option
no longer needs to set the TERMCAP variable.

	Mark

hansen@pegasus.UUCP (Tony L. Hansen) (09/20/85)

< Back in the good(?) old days of System III and Version 7 there was a
< terminal initialization program called 'tset'.  Even though this is still
< referenced in the 3B2 documentation in TERMINFO(4) I can find neither hide
< nor hair of it.  If anyone has implemented the equivalent function or knows
< of one I would very much appreciate hearing about it.

[I've cross-posted this to net.unix and net.unix-wizards because a similar
question was posted in those newsgroups a couple of months ago and I never
got around to replying to the question back then.]

The tset program, created by Eric Allman at Berkeley, has several major
functions:

    1) determine the terminal type for setting $TERM,
    2) initialize the terminal for screen-oriented programs,
    3) initialize the carriage-return and newline delays in the tty driver,
    4) set the erase/kill/interrupt characters,
    5) initialize $TERMCAP, and,
    6) reinitializing (resetting) the terminal.

Number 5, setting $TERMCAP, is obviously not needed anymore with terminfo.
Using the compiled terminfo entry is still faster than interpreting from the
$TERMCAP variable.

Number 4, setting ^H, etc., is handled just fine by stty.

Personally I believe that number 1, setting $TERM, belongs in a separate
program from the program that does numbers 2 and 3. A simple invocation of
such a program, call it "getterm", would be:

	TERM=`getterm`; export TERM
or
	setenv TERM `getterm`

Of course, this program should do everything that tset used to do: looking
in a database of hardwired lines and looking at your tty speed, then
assuming or asking questions based on what it found.

Number 2 is the most crucial step, terminal initialization. It is fairly
easy to handle because of a tool provided with Unix System Vr2 called
tput(1). My version of how to do terminal initialization follows. I call
this shell "initterm".

	# initterm - initialize the terminal like tset used to do.
	eval `tput iprog`
	tput is1
	tput is2
	if [ -n "`tput ht`" ]
	then stty tabs; tabs -8
	else stty -tabs
	fi
	cat -s "`tput if`"
	tput is3

Number 3, setting the carriage-return/newline delays, is non-trivial. If a
program were written to do such a thing, it should be done after the above.

Number 6, reset, could be done with very slight modifications to the above
script, such as:

	RS1=`tput rs1`
	if [ -n "$RS1" ]
	then echo "$RS1"
	else tput is1
	fi

for each of the rs1/is1, rs2/is2, rs3/is3 and rf/if pairs.

I hope that all of this helps.

					Tony Hansen
					ihnp4!pegasus!hansen

greg@ncr-sd.UUCP (Greg Noel) (09/24/85)

>< Back in the good(?) old days of System III and Version 7 there was a
>< terminal initialization program called 'tset'.  Even though this is still
>< referenced in the 3B2 documentation in TERMINFO(4) I can find neither hide
>< nor hair of it.  If anyone has implemented the equivalent function or knows
>< of one I would very much appreciate hearing about it.

I've had this same complaint.  The answer I've received has been that the
"tabs" program is supposed to do terminal-specific initialization.  Now, while
there is a certain kind of sideways logic to using "tabs" that way, the problem
is that "tabs" doesn't do it -- in fact, the version we have doesn't even know
about curses/terminfo; it has wired-in knowledge about a few specific terminals
and makes no attempt whatever to send out generic initialization strings, nor
is it smart about baud rates or terminal padding.

I don't care if the logic is in "tabs", "tset", or a totally new program; this
information is readily available via terminfo and it should be usable somehow.
Like the directory-reading routines, this is an area where AT&T has dropped the
ball and probably needs some encouragement to get its act together.  Maybe if
we knew where we could send some nastygrams, we could inundate them with memos
until they saw the light........
-- 
-- Greg Noel, NCR Rancho Bernardo    Greg@ncr-sd.UUCP or Greg@nosc.ARPA