On Jul 5, 2019, at 6:57 PM, Johnny Billquist <bqt
at softjar.se> wrote:
On 2019-07-06 00:22, John Forecast wrote:
On Jul 5,
2019, at 5:51 PM, Johnny Billquist <bqt at softjar.se> wrote:
On 2019-07-05 23:31, John Forecast wrote:
> On Jul 5, 2019, at 3:29 PM, Johnny Billquist
<bqt at softjar.se> wrote:
>
> So there are no other type of interprocess communication going on with regards to
DECnet in RSX. But in general, there are a mechanism for sending messages between tasks in
RSX.
>
> But DECnet is handled, as mentioned, by NETACP. NETACP in turn will start other tasks
as needed when connection requests arrive.
>
The split between the DECnet device driver and NETACP is mostly around performance - the
driver handles data transmit and receive while NETACP handles the slower
connect/disconnect logic. Doing it this way allowed us to overlay NETACP on unmapped 11M
systems and save some physical memory (shudder!!).
Well, the device driver is split between the code running in interrupt context, which
obviously isn't properly within NETACP, and the code running in a non-interrupt
context, which is running under NETACP.
The whole set of CEX services are available, and NETACP is also responsible for the
synchronization between the different driver and other levels.
The whole installation of drivers, and linkage into the interrupt system is established
by NETACP, unless I remember wrong.
NETACP isn?t even running when DECnet starts loading. CEXBF.MAC is compiled with
the M+ kernel but in earlier versions it was distributed with the DECnet kit and loaded
into memory by ?NCP SET SYS?. NTINIT reads CETAB.TSK I think and then kicks off NTL to
load each CEX module into memory. If you look at the .DAT file for a particular module
you?ll see it?s in a limited assembler syntax. NTL has a mini assembler/linker included to
hook modules and drivers into CEX and the interrupt system.
Right. NETACP isn't running when DECnet starts. But no lines are running when DECnet
have started either. That comes as a separate step which can be done at any time later in
life, and you can turn lines both on and off.
But I should admit that I right now can't remember off the top of my head if I
actually remember details here, or if I'm just guessing.
I had to write a driver for DECnet, which forced me to seriously dig into the internals,
but it's been a couple of years since now.
I had to go back and look myself - it?s been almost 40 years!
CEXBF.MAC is a module in the kernel to get access to
various CEX services without having to bother where they really are, which is related to
the whole think of vectored tasks in M+. But the routines in CEXBF.MAC, as far as I can
remember, essentially only queues packets into the appropriate queues for a module, and
then kicks off NETACP, to actually schedule execution in the module to process things. Or
else directly steps into that
What you see in CEXBF.MAC is all there ever was for CEX. When I joined the development
team in Jan ?77, an implementation of Phase II NSP was running standalone under a
?Communications Executive?. The decision was made to ?port? this ?Communications
Executive? into each of the RSX-11 Decnet implementation (11M/11S/11D and IAS) and they
would all use this NSP implementation. As a side benefit we would get all the device
drivers that had been implemented as well.
module to perform the service, but then it should be
done by another module in CEX, so it all happens in the context of NETACP in the end.
Essentially, when we talk about line drivers, they are either called by LLC or DLC modules
running in NETACP context, or else in interrupt, in which case it queues packets to a DLC
or LLC, which is asynchronous, and that module will then again be scheduled in NETACP.
No, that would be too expensive if every packet had to flow through NETACP. When a
packet is queued to a process (asynchronous rather than direct call) it is queued to the
NS: fork block. When NS: driver runs as a result it peeks at the request and may queue it
to NETACP or process it immediately.
I guess (I haven't actually written any modules
running under anything else than M+) that for other systems, you instead just have to link
including NETACP.STB, to directly have the address of the routines instead. And any
change/update means you'd have to relink your modules for CEX.
Yes, CETAB.MAC is used as a source of all configuration information, and a compiled
version is used for some parts in there.
Now I think about it some more, I think NTINIT gets its information from CETAB.MAC rather
than CETAB.TSK so it get up to date information.
But you should probably know all this in way more
detail than I do. Your name is, after all, in the sources. :-)
True, but it?s been a long time!
John.
> You cannot
change the DECnet address under RSX either. In fact, you can not even change it once on
the running system. The only way to change it is to change the permanent database and
reboot in order for it to take effect.
>
> And in RSX, modifying the permanent database is not done with NCP but with a
different task called CFE. However, in VMS, NCP are used for both databases.
>
Don?t forget VNP which allows NCP setup commands to be applied to the saved image so that
they will take effect the next time the system is booted.
Didn't want to make it sound even more complex. :-)
Right. Unfortunately it had to be there to make DECnet-11S viable.
It also is sometimes useful if you want to work on optimizing the startup time. So
I'm not complaining about it existing. But for people less familiar with RSX, this can
start to become a bit complicated.
Johnny
John.
> Johnny
>
>> John.
>>> Johnny
>>>
>>> On 2019-07-05 20:57, Thomas DeBellis wrote:
>>>> Yes and No. Some of the design concepts are quite similar which is
unsurprising.
>>>> The NICE task on Tops-20 has a named object called NCU. The (fork)
listener is NMLT20 which will also accept local (and cluster) IPCF% communications. In
OPR, you enter NCP submode, which parses nearly the exact same command set as NCPACP. It
then (via Orion) sends this to NMLT20 which performs the action (or crashes) or sends it
to another NCU (or crashes).
>>>> So that sounds analogous to NCPACP to NICE.TSK architecture. Remind me
how RSX does the inter-task communication? I haven't programmed it since 1977... I
remember it being different from IPCF%, but still thought it was neat.
>>>> There is no permanent store in Tops-20 for this DECnet information. It
is scattered through various configuration files that are swallowed depending on
criticality during boot up an operation. Tops-20 does *not* like having either the MAC
address nor the local DECnet node number numbers changed, ever and configuration for
router and local area must be done 'early' and once only; so all that stuff is in
SYSTEM:7-1-CONFIG.CMD. You have to reboot to get changes updated.
>>>> Other stuff (like setting the executor identification) and enabling
services goes into SYSTEM:SYSTEM.CMD where OPR hands it to NMLT20.
>>>> There is much to be learned by comparing the architectures.
>>>>>
------------------------------------------------------------------------
>>>>> On 7/4/2019 2:37 PM, Johnny Billquist wrote:
>>>>>
>>>>> NETACP in RSX (and I suspect VMS) is just the process/program that
implements a lot of the DECnet protocols. It is actually pretty much not related to
anything here.
>>>>>
>>>>> At least in RSX, the NICE protocol is handled by a separate task
called NICE.TSK.
>>>>>
>>>>> And when you run NCP under RSX, it pretty much talks to NICE for any
operations requested, also for the local node.
>>>>>
>>>>> I know that this is very different from how things work under
TOPS-20. There are no handling of objects from NCP using NICE in TOPS-20, and there is no
permanent database (as far as I know), compared to RSX or VMS.
>>>>>
>>>>> Johnny
>>>>>>
------------------------------------------------------------------------
>>>>>> On 2019-07-04 03:06, Thomas DeBellis wrote:
>>>>>>
>>>>>> Tops-20 has a subtly different architecture, in part perhaps
reflective of the previously described 'bolt on'.
>>>>>>
>>>>>> The closest thing to NETACP is NMLT20, which implments NCU. Parts
of that are in written BLISS and at one point, it had a shared a partly common code base
with some RSX/VAX stuff. Interfacing to Galaxy (the Tops-10/Tops-20 Operator Interface and
Queuing system), NMLT20 was /notorious/ for crashing in early (Phase III) releases. I
wrote many SPR's...
>>>>>>
>>>>>> I can't define objects. FAL itself puts up the FAL object and
speaks DAP over it. Communication with it is either over a DECnet FAL object (via DAP) or
with Tops-20 IPCF. The only messages that gets are (the largely useless) logging messages
from inferior FAL processes and checkpoint messages from Quasar, the queue manager. It
doesn't process any other messages from Galaxy, so it doesn't seem that it would
know how to swallow anything that NMLT20 might hand off.
>>>>>>
>>>>>> I can define the following:
>>>>>>
>>>>>> CIRCUIT
>>>>>> EXECUTOR
>>>>>> KNOWN
>>>>>> LINE
>>>>>> LOGGING
>>>>>> MODULE
>>>>>> NODE
>>>>>>
>>>>>> I'll see what I turn up when I finish polishing off that
pesky DAP bug (after I finish the VIKING OCR).
>>>>>>
>>>>>> Lots for you to look forward when you get back into it, eh? :-D
>>>>>>>
------------------------------------------------------------------------
>>>>>>> On 7/3/2019 5:34 PM, Robert Armstrong wrote:
>>>>>>>
>>>>>>>> I'll have a look at FAL; at first glance it has no
hooks for a default account
>>>>>>>
>>>>>>> It?s probably handled by NETACP, or whatever passes for that
on TOPS20. Does your NCP understand the command
>>>>>>>
>>>>>>> DEFINE OBJECT FAL USER <whatever> PASSWORD
<whatever>
>>>>>>>
>>>>>>> Bob
>>>>>>>
>>>>>
>>>>>
>>>
>>>
>>> --
>>> Johnny Billquist || "I'm on a bus
>>> || on a psychedelic trip
>>> email: bqt at softjar.se || Reading murder books
>>> pdp is alive! || tryin' to stay hip" - B. Idol
>
>
> --
> Johnny Billquist || "I'm on a bus
> || on a psychedelic trip
> email: bqt at softjar.se || Reading murder books
> pdp is alive! || tryin' to stay hip" - B. Idol
--
Johnny Billquist || "I'm on a bus
|| on a psychedelic trip
email: bqt at softjar.se || Reading murder books
pdp is alive! || tryin' to stay hip" - B. Idol