It is a true statement that the format of FIX.T20 file is compatible the NCP sub-mode of Tops-20 OPR, viz:

NCP>set noDE 2.251 namE SCONOS::
NCP>
14:03:47     NCP

Request # 344; Set Node Completed
NCP>shoW noDE 2.251
NCP>
14:03:55     NCP

Request # 345; Show Node Summary Completed

Remote Node = 2.251 (SCONOS)

  State = Unreachable
NCP
>

This is by design because the file is actually handled by something else, SETNOD.  SETNOD parses the file, and produces a binary format file which can be directly swallowed by the NODE% JSYS' .NDINT function.  So that's a few JSYi and you're done.  This is really important at boot time when a lot of stuff is cranking up.

Otherwise, using OPR will be very slow.  In addition to parsing the indicated text, an IPCF message has to get built which is then sent to Orion who then hands off to NMLT20 to do the work.  So that's a bunch more JSYi and five context switches for every node.  You really don't want to do this at boot time as there are timing and resource issues you can bump into and it slows down the boot.

Unfortunately, there is undocumented behavior in Tops-20 that, if you redefine a node in another area, everything is fine.  If, instead, you try to do this to a node in the same area, you'll get a cryptic error.  You've got to delete the node first.  However, to find that out, you need to make a lot of changes to the monitor to get the secondary error code back and have SETNOD to display it.

I did all that plus entirely rewrote SETNOD to be aware of the node deletion requirement before putting in the new definitions.

This is all done by a something-weekly batch job that pulls the FIX.T20 file down and then has SETND2 parse it.  If there are no changes, then nothing happens.  If there are changes, then SETND2 does things the right way and only puts in the updates; maybe a handful of nodes.  I would imagine that I could have 'fixed' the monitor to do this itself, but I was unsure as to why the behavior was as it was in the first place and thus I fixed it in user mode.  Such incremental updates are also more efficient for the monitor.

This has all worked uneventfully for well over a year on TOMMYT:: and VENTI::, although I do tinker with the code from time to time when the mood strikes me.  One thing I did was to do a multi-forking JSYS trapping based simulation mode (using TFORK%) to allow me to do testing without choking the monitor.  That enable me to do things with the local executor that Tops-20 only permits once per boot.

This will all get posted as PANDA II when I get out of all the rabbit holes I'm in.

Meanwhile, I'm not aware of any 20 site regularly updating their node database.  I couldn't say about Tops-10.

DATATRIEVE sounds awfully familiar.  Was there a 36 bit version of it?


On 9/30/23 8:32 AM, Johnny Billquist wrote:
    .
    .
    .

FIX.T20 - This is a script for TOPS-20.

    .
    .
    .

TOPS-20:

Grab MIM::HECNET:FIX.T20 and run in in the NCP submode of OPR (if I remember the setup correctly).