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