Hello Paul,
Thanks for the detailed and, as always, very informative response!
In retrospect, perhaps some of my wording is unfortunate and/or
insufficient. Let me try to clarify/elaborate:
------------------------------------------------------------------------
On Nov 20, 2022, at 11:09 PM, Thomas
DeBellis<tommytimesharing(a)gmail.com> wrote:
So MIM:: is sending an OS Type of 12, just like it's supposed to, and Tops-20
doesn't recognize this. The recovery works well enough, it seems, Tops-20 DAP merely
whining, but carrying on. So I'll fix that. [...]
On 11/21/22 9:25 AM, Paul
Koning wrote:
I may have said this before, but.... applications like FAL should NOT base decisions on
the received type codes. Those are actually a protocol design error; use them only for
informational displays.
Yes, you've said it and I think maybe more than once. This is an
important point and I don't disagree. Hardly. You may recall that,
based on your observation, I changed Kermit-20 (and SETHOST, I think) to
check the NRT protocol type instead of the OS Type. There, I only use
the OS Type to print nice informative messages.
For what it's worth, neither Tops-20 NFT nor FAL have any VMS specific
code. NFT will parse an OS Type keyword, yet it does nothing but hand
the OS Type code to DAP. Historically, DAP largely used that
information to handle how the VAX was acting incorrectly with the
apparent tacit understanding that the behavior would be remediated.
Edit 106 is instructive:
The maximum value of DPMXM was lowered to ^d1636 if the user said
/OSTYPE:VMS in SET DEFAULT. This is the largest it can be and still
allow VAX FALs to function if the VAX users accounting file allows
BYTLM to default to 4K. If BYTLM is too small for DPMXM, then the
VAX FAL hangs. If all VAX users have BYTLM raised, then DPMXM can
also be raised. Doing this provides better performance. Note that
the next release of VMS FAL should include a patch to solve this
problem. When NFT/FAL-20 is shipped with DECnet-20 Phase III this
patch should be removed.
This was, in fact, eventually removed as part of Edit 161, viz:
Remove edit 106 to DAPLIB which compensated for BYTLM being too
small on a VAX/VMS account prior to DECnet-VMS V.3.1 and VMS V3.4.
This eliminates "data overrun" errors seen when transferring files
from a -20 to VAX running VMS V3.4 or greater.
Among other things, OS Type byte is still used to pick the default file
mode, viz:
.MD1==^D1 ;/IMAGE
.MD2==^D2 ;/IMAGE/FIXED
.MD3==^D3 ;/IMAGE/VARIABLE
.MD4==^D4 ;/IMAGE/MACY
.MD5==^D5 ;/MACY
.MD6==^D6 ;/MACY/FIXED
.MD7==^D7 ;/MACY/VARIABLE
.MD8==^D8 ;/ASCII
.MD9==^D9 ;/ASCII/FIXED
.MD10==^D10 ;/ASCII/VARIABLE
.MD11==^D11 ;Print file format
.MD12==^D12 ;Fortran format
Tops-20 DAP has a lot of special cases to handle the PDP-10's variable
byte sizes. There is no more any special casing for VMS as far as I can
tell. The only other OS type specific special casing that I see is for
RSTS/E, but I have not reviewed that in depth, yet.
I'm
wondering whether I should double check the FILESYS byte. Probably.
The decisions
on how to handle all the many choices that DAP offers is from the capability flags -- 60
or so in the more recent protocol specs. If one side needs to know whether the other side
can do X, don't do "if it's RSTS it can't do X" but rather
"does the flags field say the other side can do X?". That way you won't
make the mistake VMS did, breaking when another OS adds a new feature.
Yes, but I didn't mean base decisions on the FILESYS byte. What I meant
was, "I wonder where else Tops-20's DAP has different numbers than what
is specified in DAP V5.6? I ought to at least double-check whether the
FILESYS byte definitions jive." I have and they do.
It seems the
best way to go is to simply mimic the RSX naming paradigm; that is, RSX OS$XXX would go to
.OSXXX.
I'm not sure what "naming paradigm" means. Is that about parsing name
strings? The way I remember it is that a single set of rules works for everything
interesting. Directories are in [ ] or < >; versions are delimited by dot or
semicolon. That excludes some oddball cases -- protection codes in <> for RSTS,
directories in ( ) for RSTS (that was for IBM 2741 terminal support). Those aren't
all that important and have workarounds on those systems. Unix doesn't fit at all;
those names have to be handled by using quoted strings. (Handling quoted names is
important for that reason, and also to deal with anything else strange a user might want
to hand you.)
That's an excellent point, and this is, in fact, done. However, it is
not what I meant. I simply meant what sort of naming convention should
I follow when coining new symbol names and that it seemed to me that it
might be useful to either follow or at least mimic or 'rhyme' with what
Johnny sent me for RSX. In other words,
RSX
Symbol RSX
Value RSX
OS Type Tops-20 DAP
Symbol
OS$RT 1 RT-11 .OSRT
OS$RST 2 RSTS .OSRST
OS$11S 3 RSX-11S .OSRXS
OS$11M 4 RSX-11M .OSRXM
OS$11D 5 RSX-11D .OSRXD
OS$IAS 6 IAS .OSIAS
OS$VMS 7 VAX/VMS .OSVAX
OS$T20 8 TOPS-20 .OSTP20
OS$T10 9 TOPS-10 .OSTP10
OS$RTS 10 RTS-8 .OSRTS
OS$OS8 11 OS-8 .OSOS8
OS$MPL 12 RSX-11M+ .OSRXP
OS$COP 13 COPOS/11 .OSCOP
OS$POS 14 P/OS .OSPOS
OS$ELN 15 ELAN .OSELN
OS$CPM 16 CP/M .OSCPM
OS$MSD 17 MS-DOS .OSMSD
OS$U32 18 Ultrix-32 .OSU32
OS$U16 19 Ultrix-11 .OSU16
Here, the red means the corrected Tops-20 DAP symbol definitions and the
green are the new definitions. You will note that the last three
letters for these new symbols are the same as RSX and I thought there
might be some value in that as a reminder when trouble-shooting.
Maybe naming convention is the better term than paradigm?