<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
</head>
<body>
<p>You've put your finger on something that's puzzled me for quite
some time about Tops-20's lexical implementation.</p>
<p>There is no standardized syntax in the generalized parsing
interface (<font size="+1"><tt>COMND%</tt></font> and <font
size="+1"><tt>GTJFN%</tt></font>) for using numeric node names.
If you ask <font size="+1"><tt>COMND%</tt></font> to parse a node
name and do not shut off standard syntax, then you must specify a
maximum six character word which conforms to the <font size="+1"><tt>SIXBIT
</tt></font>character set followed a double colon, which looks
like what you would think it would, viz: <font size="+1"><tt>VENTI2::</tt></font></p>
<p>However, the integration into the monitor isn't as seamless as it
appears to be under <font size="+1"><tt>VMS.</tt></font> In
order to make a connection, you must build a special string for <font
size="+1"><tt>GTJFN%</tt></font> to swallow. Let's suppose I
wanted to grab the latest node list from <font size="+1"><tt>MIM::</tt></font>
(which I do on a weekly basis); you would type <font size="+1"><tt>MIM::FIX.T20;0</tt></font>
as the source to <font size="+1"><tt>NFT</tt></font>. That's not
what <font size="+1"><tt>GTJFN%</tt></font> wants and you must
transmogrify the string into <font size="+1"><tt><font size="+1"><tt>DCN:MIM-FAL</tt></font></tt></font>.
Once that connection is open, you negotiate DAP and then ask <font
size="+1"><tt>MIM::</tt></font> to send the file.</p>
<p>There is no standardized "<font size="+1"><tt>[a.b.c.d]</tt></font>"
syntax such as what you might use to get to an IP4 host which is
neither in the DNS nor host tables. You can use <font size="+1"><tt>COMND%</tt></font>
to parse for a number optionally followed by a dot and another
number and the operator NICE interface (NCP) does in fact do
this. Indeed, it is the only interface besides <font size="+1"><tt>SETNOD</tt></font>
which does this (in order to define nodes). So I can give an
area.address to NCP as an argument to a TELL verb in order to get
remote information.</p>
<p>Neither programs will work right for the general user. The user
could use <font size="+1"><tt>COMND%</tt></font> to parse for the
numbers and then use the <font size="+1"><tt>.NDRNM</tt></font>
function of the <font size="+1"><tt>NODE%</tt></font> JSYS to
convert them into a name which is palatable to <font size="+1"><tt>GTJFN%</tt></font>.
However—and this is the point—if that name isn't in Tops-20's node
data base, then the <font size="+1"><tt>NODE%</tt></font> JSYS
will fail and you have nothing to give to <font size="+1"><tt>GTJFN%</tt></font>.
Therefore there is no way for a general user to make a connection.</p>
<p>I can't make up my mind as to whether this is a bug, a misfeature
or unfinished business. Tops-20 installations had millions of
(1980's) dollars hardware and software, trained staffs and often
large populations. Management of them was very different from a
lab machine (PDP-8, PDP-11) or departmental machine (VAX 11/780).
At least in the university setting, students are an inquisitive
lot and a lot of had to be done to prevent certain kinds of
activities, probing and downright meddling. It seems to me that
not defining the node in the first place on an academic machine is
a great misfeature as it eliminates probing.</p>
<p>However, as I've said before (viz., the <font size="+1"><tt>NFT:</tt></font>
device and <font size="+1"><tt>FTS</tt></font>), there are parts
of Tops-20 DECnet that strike me as not fully productized. One
example is that there is no way for <i>anybody</i> to extract the
area and number of a node once it is the monitor. You can (and
should) verify that the node is 'legitimate' by using <font
size="+1"><tt>.NDVFY</tt></font> function of the <font
size="+1"><tt>NODE%</tt></font> JSYS, which will also tell you
some interesting things about it. However, it will not divulge
the aforementioned numbers. It annoyed me enough so that I
modified the monitor to do just that with an additional function,
<font size="+1"><tt>.NDVFX</tt></font> and I use this in DAP (but
don't depend on it) and in the mailer (where I do).</p>
<p>I haven't posted the changes anywhere because I can't make up my
mind whether this was fixing an oversight or breaking a design
decision or indeed, whether that should even matter.</p>
<p>Another example is that, once a node is inserted into the monitor
data base, there is <b>no</b> documented way to remove it. As I
was implementing <font size="+1"><tt>.NDVFX</tt></font>, I was
looking at the in-area hashing code and noticed that it appears
that the monitor will remove a node marked as -1 (36 bits). I
have yet to test this. Certainly <font size="+1"><tt>SETNOD</tt></font>
gives no hint (another reason I'm toying with a rewrite).<br>
</p>
<div class="moz-cite-prefix">Curiouser and curiouser. Do the above
two functionalities exist in other operating systems?<br>
</div>
<blockquote type="cite"
cite="mid:4F5CB3C3-21CD-4473-94A2-68A4440A4A76@comcast.net">
<hr width="100%" size="2">
<pre class="moz-quote-pre" wrap="">On 3/3/20 2:16 PM, Paul Koning wrote:
Interesting. It depends on the application API. For example, in RSTS the "node name" argument can contain a number in string form, which lets you connect by address. But in some places in NCP things don't work if there isn't a name for the node. I would call that a bug.
</pre>
<blockquote type="cite">
<hr width="100%" size="2">
<pre class="moz-quote-pre" wrap="">On Mar 3, 2020, at 1:13 PM, Thomas DeBellis <a class="moz-txt-link-rfc2396E" href="mailto:tommytimesharing@gmail.com"><tommytimesharing@gmail.com></a> wrote:
You may be talking about a number of things here. DECnet node numbers are something (very) vaguely like IP tuples, except with half the bits and fixed fields. The upper 6 bits constitute the area, the lower 10 bits constitute the number within area. This is what I recall:
• If the node number's name is not defined to other systems, then many user level programs will not be able to see if. Tops-20 won't able to build a connection.
</pre>
</blockquote>
</blockquote>
</body>
</html>