Hmm? How does command line processing work under TOPS-20?
If you type:
@ FINGER MIM::
would the finger program be started, and it would do a read from the terminal to read a line, and it would actually get the command line "FINGER MIM::", or actually, would it get "MIM::" in that case? Because that is how it would need to be in order to work the same if it came via DECnet.
Not quite, the answer is that it fools itself into not reading
from the terminal in certain cases.
If you are a 'new' style program, then the program that calls you
(in this case the EXEC, the Tops-20 command scanner) scans the
line and puts the stuff into something that PRARG% can handle.
Think of it as something like argc, argv in Unix except not quite.
If you are an 'old' style program, the EXEC may or may not do a
certain amount of pre-processing and stuff the result into the
rescan buffer. A program will use RSCAN% to see if there is
anything in the rescan buffer and, if so change primary input to
the rescan buffer.
The EXEC does not do host name or node name recognition in
Finger's case, it just scans a field with a particular break mask
and stuffs the whole thing into the rescan buffer. Again, the
point here is that doing a RSCAN% causes regular terminal I/O to
read from the rescan buffer and not from the terminal. The
program can not tell a rescan is happening once it is in progress.
Regarding network transport, Finger is the personal name portion
of the Tops-20 mail system, so it has the HSTNAM module for very
powerful network parsing.
Finger reads everything up to an @ or end of line. If it hits end of line with no @, then this is a local command and it reads from system tables. If it does hit an @, then network parsing happens, which (I seem to remember) can include specification of transport protocol. Tops-20 will do IP, DECnet, Chaos, Pup and something else that I don't remember. HSTNAM will default to a particular order for transport unless it is specifically overridden.
The connection is made on the selected or defaulted transport and
everything after "finger " but before the @ is stuffed over the
link and the output read until the link is disconnected.
On a default PANDA system, it tries the Internet first, the DNS (CHIVES) taking precedence over the HOSTS.TXT file, and then DECnet. On my systems ('PANDA II'), it tries DECnet first, then Internet, with HOSTS.TXT taking precedence over DNS (MRC and I never agreed about this). To make all of this concrete, let's suppose you have a host named MIM:: which has a HECnet address of [1.13] and a Internet name of MIM.Stupi.NET.
DECNET:
FINGER>@mim
[Fork FINGER opening DCN:MIM-117 for reading, writing]
RSX-11M-PLUS system MIM. Sun Jul 21 01:03:07 2024. Up: 3
days, 1:44.
Luser Real name Term Idle Logged
in From
BILLQUIST Johnny Billquist TT10: 1 19 Jul
14:56 c-5eeaac7c-74736162
INTERNET
FINGER>@mim.stupi.net
[Fork FINGER opening
TCP:.30033145112-79;PERSIST:30;CONNECTION:ACTIVE for reading,
writing]
RSX-11M-PLUS system MIM. Sun Jul 21 01:02:50 2024. Up: 3 days,
1:43.
Luser Real name Term Idle Logged in
From
BILLQUIST Johnny Billquist TT10: 1 19 Jul 14:56
c-5eeaac7c-74736162
I can't remember how (or if) you could force a transport
override. There was some magic character, which I thought was #,
but that's how you specify a numeric IP network address. Tops-20
DECnet will not accept numeric addresses in place of host names.