<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>