Yes, the goal of Cterm was to be very clever, which is why it looks like an abstraction of
the VMS terminal QIO facilities. Or, I think, the union of those and the TOPS-20
terminal I/O facilities. And in spite of that extreme complexity it is really only good
for those; it is such a bad fit for, say, RSTS, that the attempt was never made.
(It's also a very big protocol, but the bad fit was at least 50% of the reason.)
Rterm for RSTS is pretty simplistic. It works essentially like telnet local echo line
mode normally, but it detects a couple of state changes on the controlled terminal: if
echo is disabled, the local echo is likewise disabled. And if the terminal driver goes
into any kind of mode where line mode no longer works right -- ODT, binary mode, TECO
mode, etc. -- it switches to no echo character at a time mode. So, for example, TECO
works, but you can tell that it all of a sudden got slower.
paul
-----Original Message-----
From: owner-hecnet at Update.UU.SE [mailto:owner-hecnet at Update.UU.SE] On Behalf Of
Johnny Billquist
Sent: Thursday, September 01, 2011 7:51 PM
To: hecnet at Update.UU.SE
Subject: Re: [HECnet] DECnet performance problems (on TOPS-10)
On 2011-09-01 17:25, Bob Armstrong wrote:
TOPS-10 and RSTS (and RT-11) echo the keystrokes as they occur, while
RSX and VMS echo when the read occurs.
Ah, I never thought about it before, but that's very profound and
clearly true. And easily demonstrated too - do some command on VMS
that takes a minute to execute, and then type ahead. You won't see
anything echoed. On
TOPS10 in the same circumstance, you will. I don't remember offhand
how
TOPS20 behaved (it's been too many years ago).
A short experiment on TOPS-20 suggest that it only echoes once the character is actually
read, which also would make sense since things would become rather weird and fouled up
with completion, character recognition and so on in TOPS-20 if echo didn't take place
at the right place and time. What a character actually will do depends on the context in
TOPS-20.
But it was a simple test, and I might just have failed to cause enough of a delay...
And the same is somewhat true in RSX and VMS as well (well, it's actually true in any
OS, but most don't take it into consideration).
As Paul also mentioned, the echoing of a newline is different in RSX than RSTS/E.
Technically, this is not related to input at all, but only output. Whenever a CR+LF is
output in RSX, the LF is surpressed until the next character is written, and only output
when something else needs to be printed. The same is actually also true in VMS. However,
this behavior is depending on you using the terminal drivers own newline processing
function. If you just output the CF and LF characters in your text stream, the LF will not
be surpressed.
Another point is the character-at-a-time mode. I don't know exactly how rterm (or
whatever) does this, but it's not really comparably to telnet.
There is no "raw" mode in telnet (I only finished implementing my telnet client
for RSX last week, so right now all the details are very fresh in my head :-) ).
However, it is probably fair to say that TOPS-20 in general reads each single character,
and not a line at a time. So any terminal protocol needs to do the same for things to work
right. In telnet, the most relevant part here is the echoing function, where you, for
interactive sessions, normally have remote echo turned on. With local echo, you normally
do a line at a time in telnet, but there is really no difference between doing line at a
time and character at a time from the telnet protocol point of view. However, interactive
users would not be impressed if you have remote echo, and only send the characters when
you have entered a whole line (obviously).
If you want to do the same as TOPS-20 in Unix, however, you will turn on "raw"
mode in Unix. :-)
Speaking of rterm by the way, I don't know much about it (obviously), but either it
got to be a very clever protocol, or else it works the same as telnet with remote echo. If
it's clever, then it needs not only be able to handle if you want to input without
echoing, but also if you want binary reads (no terminators), special terminators, special
keys meaning special functions, and god knows what else.
I think CTERM atleast tries to be clever here, which is why it is such a mess. Notice how
VMS line editing partially works when doing SET HOST to a non-VMS system. Ugh!
Johnny
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic
trip
email: bqt at softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" -
B. Idol