Thanks, I will definitely keep that in my back pocket.
For the moment, I'm going to assume that I've broken something. As I've 
said in the past, a fair amount Tops-20 code did not get the time to 
become fully productized and as a result can be silently susceptible to 
what one would think are innocuous changes.  It can sometimes be quite 
hard to find these.  For example, GLXLIB PID blocks for IPCF 
communications come in two sizes, the shorter one (PB.MNS) when you 
don't want to name the PID.  It saves about three words.
However, GLXIPC doesn't check the length at all.  It always checks the 
name (among other things), so if you happen to have something that isn't 
really an ASCIIZ pointer after the short block, you will get boom.  Who 
knew?  My current working hack is to always specify the longer block 
length (PB.MXS), which then leaves these words zero and GLXIPC handles 
that properly.  I guess I can live with wasting three dinky words, but 
it does irk my sense of propriety.
GLXLIB, FAL, NFT and DAP are all quite intertwined and debugging is can 
get extremely difficult when you also have multiple forks and mapped 
libraries, one primary problem being that you can't get to the correct 
symbol table.  Then you have to deal with a small amount of 
self-modifying code and a non-standard entry vector.  So, I would say at 
least half the code I've written is to enable the debugger to work 
properly and to get to the correct symbols.
Very late in the game, DEC came up with an extremely nice idea called 
program data vectors (PDV) in part to support dynamic link libraries, 
which became more feasible with the vastly increased address space of 
the KL10B and the KC10 (unreleased).  For example,
      VENTI2, PANDA TOPS-20 Monitor 7.1(21746)-5
      PANDA TOPS-20 Command processor 7.1(4454)-5
    PDVs:   Program name FAL, version 2.1(35)-5
             Program name FALSRV, version 2.1(35)-5
             Program name DAP%, version 2(207)-5
             Program name GLX%, version 6(1546)-5
             Program name DDT%, version 45.1(720)-5
So what you can see is that this is a subfork of the main FAL controller 
and that it is using the DAP library, GLXLIB and has the debugger.  The 
last three follow naming conventions for Digital supplied libraries and 
code, meaning the name is suffixed with a percent (%).  However, when 
you first start, none of them are in the virtual address space, so you 
can forget about their symbols.
Unfortunately, PDV's are not widely used, so many of my local changes 
involve putting them in as well as write-protecting code spaces.  
Naturally DDT had a bug with PDV's so I had to fix /that/ before I could 
debug the rest of Galaxy and FAL/NFT/DAP.
No wonder I keep failing into all these rabbit holes...
------------------------------------------------------------------------
On 11/22/22 4:54 AM, Johnny Billquist wrote:
  On 2022-11-22 06:18, Thomas DeBellis wrote:
 
 Meanwhile, now that I am finally able to assemble and LINK a working 
 NFT and FAL and have fixed the incorrect OS type number issue, I 
 bumped into another problem.  Naturally, it's doing directories.  
 When doing an ANONYMOUS directory of MIM:: (I.E., DIR MIM::*.*), I got:
     MIM::DU1:[DECNET]
     ....
     [Parsing Name message]
     [Parsing Attributes message]
     [Parsing Date/time Attributes message]
     [Parsing File Protection Attributes message]
     [Parsing Name message]
     DTRCOM.LST;115;P775656          10 18944(8)   24-Oct-2021 15:06:46
     [Parsing Name message]
     [Allocated Receive buffer (Words=225 Len=1056)]
     ?Logical link reception error - Record is longer than user requested
     Logical link abort reason(0) - No error
 So it died on whatever the file is that follows 
 MIM::DU1:[DECNET]DTRCOM.LST;115
 Sigh... 
 The next file in the directory is DTRCOM.MAP, which is a file that is 
 a bit more odd. But I'm surprised that TOPS-20 would barf on this.
 .dsp [decnet]dtrcom.map
 DU1:[DECNET]DTRCOM.MAP;84
                         Size:    47./47.         Created: 24-OCT-2021 
 15:06
                         Owner:   [007,014]       Revised: 24-OCT-2021 
 15:06
                         File ID: (17262,10,0)    Expires: 
 <none_specified>
   File protection:      System:RWED, Owner:RWED, Group:R, World:R
   File organization:    Sequential
   File attributes:      Allocation=47, Extend=0
   Record format:        Variable length, no maximum defined
   Record attributes:    None
 Compared to the .LST file:
 .dsp [decnet]dtrcom.lst
 DU1:[DECNET]DTRCOM.LST;115
                         Size:    37./37.         Created: 24-OCT-2021 
 15:06
                         Owner:   [007,014]       Revised: 24-OCT-2021 
 15:06
                         File ID: (17260,106,0)   Expires: 
 <none_specified>
   File protection:      System:RWED, Owner:RWED, Group:R, World:R
   File organization:    Sequential
   File attributes:      Allocation=37, Extend=0
   Record format:        Variable length, no maximum defined
   Record attributes:    Carriage return
   Johnny