[HECnet] More NRT

Paul Koning paulkoning at comcast.net
Wed May 6 11:54:05 PDT 2020



> On May 5, 2020, at 10:45 PM, Thomas DeBellis <tommytimesharing at gmail.com> wrote:
> 
> Paul,
> 
> Thanks for the doc; I'll be giving it a careful look through.  Where might I pick up a copy of DNTERM?

It is a DECnet/Linux application; you should be able to find it in those sources.

> It is a true statement that the Tops-20 NRT server is little more than a character stream.  Like I said, it's very close to Telnet without the IAC's and option negotiations.  For my future purposes (handling a security concern with the Tops-20 FAL architecture), it is perfect.
> I remembered some more about CTERM; it appears to implement a concept called break masks.  Under Tops-20, if you are doing something that needs to handle characters specially, one alternative is to turn off echo, swallow a character and then determine what to do.  This was used in some Tops-10 video based 'SYSTAT'ing programs that I am aware of.
> 
> However, this means you're doing a context switch on every blessed character.  And so are 90 other people, which is Bad.  It's way too much overhead.  A break mask means that you can have the monitor swallow and echo characters and determine when to return control to the user program.  This was worked on enough so that TEXTI% actually had something called an 'EMACS' mode, specifically to support this.
> 
> I don't recall whether this was pushed out to the front end; hard to say.  The VT100 really handed it to the front end.
> 
> There were some early attempts towards break masks in some Telnet options; host controlled local echoing and some such.  I don't remember the RFC, but it is quite old.
> 
> I don't remember whether LAT will handle a break mask; if it could, then that's great--the LAT host worries about gobbling characters and when to send a packet to the host.  That's far more efficient.

LAT knows nothing about terminal driver semantics; it merely implements a raw data stream in both directions.  But it combines data for several terminals into a single Ethernet packet if it can, and it has some holdoff to try to collect multiple characters arriving back to back.  So it knows that the terminals are used by humans who won't notice delays well below 100 ms.

On the subject of context switching for every character, that's certainly tricky but if you plan for it from the beginning you can make it work unusually well.  A case in point is the PLATO system, which in 1976 had up to 600 logged-in terminals connected to a pair of CDC 6500 small mainframe computers.  Those were graphics terminals, highly interactive; typically about 50% of keystrokes required application action (rather than simply echoing while collecting a line's worth of input).  It worked very well, with delays almost always low enough that you wouldn't notice.  One reason it worked is that the swapping was doing to/from high speed bulk core memory, at 600 Mbit/s.  So while the application context was perhaps 200-300 words, moving that takes only 40-50 microseconds.

> I modified SETHOST to have an additional entry point to force 4.2 behavior; meaning using two separate forks for input and output instead of handing the whole thing off to the monitor with MTOPR%.  This was so I could use SYSDPY to see the actual scheduler tests that the forks were waiting for; that's not as easy when the whole thing is in the monitor.
> 
> So RSX and VMS accept the connection and both the client (me) and the remote wind up waiting.  As soon as I type a character, I get thrown off, so I would imagine that there is some additional negotiations to be done.  I'm hesitant to try this on RSTS as somebody is going to need to restart the NRT server.
> 
> NRT is pretty simple; on connection, it reads a configuration message, but only looks at the first byte to see what the remote system is.  That's enough for it to blat about it not being to either Tops-10 or Tops-20.  The other stuff is completely ignored; I don't see evidence of any configuration being sent.  I guess those other bytes are what I should be looking at.  Maybe they'll be in your doc?

Yes, and they are critical.  The OS type is just information, but at offset 6 you'll find the protocol ID, which tells you which of the four protocols to speak.  If you ignore that you will certainly get wrong results.  See the doc I sent.

	paul




More information about the Hecnet-list mailing list