<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Hmm, if I'm understanding you correctly, then I'm not sure I
      would agree with you, 100%.  Recall the binary file I build?  This
      is dumped <i>directly</i> into the monitor on reboot, there is no
      re-parse of the <font size="4"><tt>.T20</tt></font> file; that
      only ever gets looked at precisely once.</p>
    <p><font size="4"><tt>21:05:28 USER   SETNODE>*Save /NO-ACCESS
          /RESTRICTED</tt><tt><br>
        </tt><tt>21:05:28 USER</tt><tt><br>
        </tt><tt>21:05:28 USER   [Fork SETND2 opening ? for writing
          restricted]</tt><tt><br>
        </tt><tt>21:05:28 USER   [Saving to binary file: </tt><tt><font
            color="red"><b>TOMMYT:<SYSTEM>NODE-DATA.BIN.1 </b></font></tt><tt>;PROCESS-ONLY-JFN:2 
          ;RD ;WR ;BSZ:36 ]</tt></font></p>
    <p>This resulting <font size="4"><tt>.BIN</tt></font> file is ⅓ the
      size of the <font size="4"><tt>.T20</tt></font> file and goes
      into the monitor with a single <font size="4"><tt>NODE%</tt></font>
      <font size="4"><tt>JSYS</tt></font>, so there is only a single
      context switch.  The monitor does some validation of the entries
      before putting them into the hash table.  Naturally, I can also
      read the binary file and reconstruct the text file:<br>
    </p>
    <p><font size="4"><tt>SETNODE>GET (binary node definition file) </tt><tt><font
            color="red"><b>SYSTEM:NODE-DATA.BIN</b></font></tt><tt>
          /no-ACCESS /pagE-MAP /unrESTRICTED-READ /prelOAD</tt><tt><br>
        </tt><tt>Mapped 4 pages, 1830 Words, 915 Nodes.</tt><tt><br>
        </tt><tt>SETNODE>RECONSTRUCT (node keyword tables from binary
          table) /silENT</tt><tt><br>
        </tt><tt>[Closed log file: NUL:]</tt></font><br>
    </p>
    <div class="moz-cite-prefix">I think the only faster way to do this
      would be to save the Monitor's volatile hash table directly to
      disk and read it back in on reboot.  If you check it as you read,
      then you might be back down to the <font size="4"><tt>.BIN</tt></font>
      file input speeds, which are clearly faster than doing the parse
      of the <font size="4"><tt>.T20</tt></font> file; a lot faster. 
      If you don't check then you might not be able to boot if it gets
      funny data in it.  Or maybe you could do minimal checking.</div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">However, I do think that the idea of a
      seperate volatile and permanent database is a very good idea.  You
      could do that with my SETNODE rewrite, but <i>only</i> if <i>nothing</i>
      else was touching either node store (like a remote NCP).  I think
      the other implementations are probably far cleaner in this regard.<br>
    </div>
    <div class="moz-cite-prefix"><br>
    </div>
    <div class="moz-cite-prefix">
      <hr width="100%" size="2">On 11/11/21 4:59 PM, Johnny Billquist
      wrote:<br>
    </div>
    <blockquote type="cite"
      cite="mid:aade36ad-a252-826c-815a-fb63733f24fb@softjar.se">This is
      actually one thing I've found annoying with TOPS-20.
      <br>
      <br>
      With VMS, as well as PDP-11 OSes, you have both a volatile and a
      permanent database.
      <br>
      <br>
      For the volatile db, the commands are:
      <br>
      SET
      <br>
      CLEAR
      <br>
      SHOW
      <br>
      <br>
      For the permanent db, the commands are:
      <br>
      DEFINE
      <br>
      PURGE
      <br>
      LIST
      <br>
      <br>
      Exactly the same syntax and everything, but one affects what you
      have right now, and the other only affects what is stored
      permanently, and is used when the system starts to populate the
      volatile db.
      <br>
      <br>
      With TOPS-20 seems you always have to run through the definitions
      when you boot.
      <br>
      <br>
        Johnny
      <br>
      <br>
      On 2021-11-11 21:56, Thomas DeBellis wrote:
      <br>
      <blockquote type="cite">So /that's/ the difference between SET and
        DEFINE?  Gee, that's deluxe! What a great idea!
        <br>
        <br>
        If you will look at my previous batch log, you will see that I
        only update the running system node database with the set
        difference from the previous week's node file.
        <br>
        <br>
        There is no way to 'restart' DECnet on Tops-20 without a
        reboot.  Once you set certain items and the Executor starts,
        that's it for the run of the operating system. Further, there
        are no NODE% functions to either purge the entire running
        database nor retrieve it into user memory, which keeps striking
        me as perhaps an arbitrary limitation.
        <br>
        <br>
        On the other hand, unless I am doing monitor development, I
        never have any reason to reboot and rarely crash, so the
        difference would be largely moot to me, absent renaming or
        renaming the local Executor.  Right now, TOMMY ('Production') is
        up over 7,171 hours while VENTI2 (active development) is up over
        3,428 hours.
        <br>
------------------------------------------------------------------------
        <br>
        On 11/11/21 9:09 AM, Paul Koning wrote:
        <br>
        <blockquote type="cite">
          <br>
          <br>
          <blockquote type="cite">On Nov 11, 2021, at 8:36 AM, Supratim
            Sanyal <a class="moz-txt-link-rfc2396E" href="mailto:supratim@riseup.net"><supratim@riseup.net></a> wrote:
            <br>
            <br>
            On 11/11/21 3:53 AM, Johnny Billquist wrote:
            <br>
            <br>
            <blockquote type="cite">If a specific format is needed for
              RSTS/E nodes, I can create that format file whenever the
              nodename database is updated. Just let me know what the
              format should be.
              <br>
              <br>
            </blockquote>
            $ type defnod.cmd
            <br>
            *SET VER**
            <br>
            **SET NOON**
            <br>
            **NCP DEFINE NODE 1.1 NAME MAGICA**
            <br>
            **NCP DEFINE NODE 1.2 NAME ERNIE**
            <br>
            **NCP DEFINE NODE 1.3 NAME FNATTE**
            <br>
            **...**
            <br>
            **...**
            <br>
            **NCP DEFINE NODE 62.637 NAME CTAKAH**
            <br>
            **NCP SET NODE 1.1 NAME MAGICA**
            <br>
            **NCP SET NODE 1.2 NAME ERNIE**
            <br>
            **NCP SET NODE 1.3 NAME FNATTE**
            <br>
            **...**
            <br>
            **...**
            <br>
            **NCP SET NODE 62.637 NAME CTAKAH*
            <br>
            <br>
          </blockquote>
          The "set" commands are a nice additional item but the define
          commands are the important part.  If you include the set
          commands the running system is updated at that time; if you
          leave them out, it will be up to date at the next DECnet
          restart.
          <br>
          <br>
          paul
          <br>
          <br>
        </blockquote>
      </blockquote>
      <br>
    </blockquote>
  </body>
</html>