Berkeley terminal driver user interface

Guy Harris guy at rlgvax.UUCP
Mon Apr 16 13:33:52 AEST 1984


We've been over this before, but...

>>   I think more praise is due the user interface.  It is a
>>   good thing for a computer program to be simple outside
>>   (specification) and simple inside (implementation); but
>>   a computer is used best when a program is simple outside
>>   but complex inside--the user sees the simplicity, and
>>   the computer takes care of the complexity.

>How can you say that the Berkeley terminal driver (i.e. job control) 
>provides a simple outside world?  Do you not have to fix things
>like vi, more and (of all things!!) the shell to understand
>about what the terminal driver is likely to do?  However only C-shell
>was fixed (C-shell too slow).

The USG driver's interface to character erase is considerably more complicated
than Berkeley's.  On a CRT terminal, with Berkeley's, what you see is what
you get 99% of the time, and the other 1% of the time you just hit ^R.
With USG's, what you see is what you get *unless*:

1) what you erased was a TAB
2) what you erased was a control character

and there's *no* ^R facility.

Furthermore, if you hit a control character, you'd better know it's there
because it's echoed as itself - with Berkeley's, it's echoed as ^<whatever>
so at least you know you typed it.  This is even more strongly the case for
control characters like ^D which have a special effect on the TTY driver.
Anybody else out there typed a ^D without it being echoed, not been sure whether
it really got there, and typed another one only to find that the first one
*did* get there and the second one logged you out?

>What do you do when your program dies on a SIGTINT or somebody
>you fork hits you with a SIGTTIN or SIGTTOU?

By and large, you don't do anything; the default action for those signals is
to ignore them.  If you want or need to use them, you can; otherwise, you
can totally ignore them.  If you were thinking about SIGSTOP or SIGTSTP,
again, the default action is what you want in 90% of the cases - when you
get the SIGTSTP, you are immediately put into the stopped state and
automatically restarted when you get a SIGCONT.  In the other 10% of the
cases, such as screen editors which have to clear the screen when suspended
and repaint it when restarted, the alternative is something like AT&T's
"job control" which, admittedly, doesn't have stop/start signals so you can
claim you don't have to change your code; you just have to remember to type
^L every time you reactivate "vi"...

	Guy Harris
	{seismo,ihnp4,allegra}!rlgvax!guy



More information about the Net.bugs mailing list