TCP/IP terminalservers and BREAK(/^C)


Barry Shein (bzs@bu-cs.BU.EDU)
Sun, 30 Oct 88 10:17:27 EST


From: mcc@ETN-WLV.EATON.COM (Merton Campbell Crockett)
>Just a curiosity? Why does EMACS use a ^O to create a new line? It would
>seem that the existing ENTER and RETURN keys should work fine; however, it
>does point out a need for the host and terminal servers to have some mechanism
>for establishing what are significant keys and their implications.

Well, I won't go into defending the choice of key (I believe the
mnemonic was "Open line", perhaps that's satisfying? Its actions are
usually not identical to ENTER/RETURN, typically moving the cursor to
the beginning of the line and opening above or below, ENTER would just
break the line wherever the cursor was at the moment into two lines,
not open a "fresh" line.) Hmm, guess that was a defense :-)

As far as "significant keys", one could adapt something like
'termination masks' from other OS's (TOPS-20 and VMS both have
facilities sort of like this I believe but less ambitious.)

Say you list all significant functions as values:

define TEXT 00 # Echo locally (or might be an or'd in bit)
define TERMINATE 01 # Send everything buffered or just this char
define INTERRUPT 02 # like ^C
define STOPFLOW 03 # like ^S
define STARTFLOW 04 # like ^Q
define TOGGLEOUTPUT 05 # like ^O toggle
        ..etc..

and so on and decide there are about 16 or less of them (whatever) so
they can be encoded in a 4-bit nibble. Then you create a table of 256
of these (128 bytes) with an entry from the above in each position.

Then the client side can use this table to drive how to handle each
character and the server side can pass updated tables whenever
something changes.

Although passing 128 bytes is more or less like passing any packet
(that is, due to packet overhead making the table much smaller doesn't
save much bandwidth, I could argue that with a few of the following
efficiencies you may as well make it 256 bytes and make the management
and lookup easy on byte oriented machines) one can imagine a few
commands like "just change position 27 to a TERMINATE" or
"TERMINATE+NOECHO ON ALL" to exploit, only a few of those would be
needed to drastically cut down on having to exchange the masks very
often I would guess since most O/S's have similar global commands (go
into RAW mode.)

Now the main challenge left would be to define a set of mask values
everyone can live with (it should be do-able since at worst you send a
TERMINATE+NOECHO ON ALL and have what you have today.)

        -Barry Shein, ||Encore||



This archive was generated by hypermail 2.0b3 on Thu Mar 09 2000 - 14:43:57 GMT