Path: utzoo!attcan!uunet!seismo!sundc!pitstop!sun!amdcad!ames!pasteur!ucbvax!BU-CS.BU.EDU!bzs From: bzs@BU-CS.BU.EDU (Barry Shein) Newsgroups: comp.protocols.tcp-ip Subject: TCP/IP terminalservers and BREAK(/^C) Message-ID: <8810301517.AA06693@bu-cs.BU.EDU> Date: 30 Oct 88 15:17:27 GMT References: <8810281350.AA26394@ETN-WLV.EATON.COM> Sender: daemon@ucbvax.BERKELEY.EDU Organization: The Internet Lines: 52 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||