This module holds keys to a Tymnet circuit {SIK, SOK and CCK} and provides keys {described below} with modified function. This module is responsible for handling certain idiosyncrasies of ASCII terminals and echoing. It handles any delays required by the terminal, simulates tab and formfeed if necessary and compensates for the finite width of the terminal paper {does linefolding}. {For the purpose of linefolding, it may want to turn off echoing by the remote if the user is inputting near the right margin.} See (p2,newtcem) for new TCEM's.
It may optimize output, for example by suppressing output of carriage return when the carriage is already at the left margin, suppressing output of non-printing characters, or converting output spaces to tabs.
Data passing through SIK2 is broken up into transmissions as described above. The data in each transmission is echoed promptly according to the echo mask.
Control codes {(cc)} that get delivered to the SIK2 user always cause activation and never are echoed. The following control codes can appear:
{nonref}Implementation note:
These implementations may remember the characters which were echoed in error. If the next characters output match the characters echoed in error (as if the SIK2 user had decided to echo the characters itself after all), those characters are deleted from the output stream, since they have already been printed.
Sending a gobbler does not affect the state of echoing or tab stops. It may cause terminal characteristics to not be set, and may gobble a hang character. It does gobble echoes.
129 orange ball
130 gobbler
131 break
134 gray ball
135 black ball
CCK2(0 ...) is not yet implemented.
CCK2(1 ...) is not yet implemented.
CCK2(2;==>;) "Send zapper"
If SIK2 is consuming, SIK is returned, otherwise DK(0) is returned in this position.
SOK is returned if it is available, otherwise DK(0) is returned in this position. There is no way to determine whether SOK will be available.
Design Note: Perhaps we should have a "wait for SOK and then destroy TCEM" command. This might not be prompt if output were blocked down stream.
CCK2(kt;==>X'40E';)
For some characteristics there is a delay after setting a value before the new value is sensed. This delay can be arbitrarily long while SIK2 is consuming.
Value 1 means the terminal is expected to send even parity as the high order bit.
Value 1 means the terminal expects even parity.
Value 1 means the terminal can print tab, but the tab stops can't be set from the computer.
Value 2 means the terminal can print tab and can set tabs on command from the computer. LOOSE END How?
TCEMK(kt;==>X'1030E';)