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@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.
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.I'm wondering whether I should double check the FILESYS byte. Probably.
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.
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.)It seems the best way to go is to simply mimic the RSX naming paradigm; that is, RSX OS$XXX would go to .OSXXX.
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
SymbolRSX
ValueRSX
OS TypeTops-20 DAP
SymbolOS$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?