1. 13
  1. 2

    This is really cool; I’ve wanted to code for Multics & Stratus VOS more. This part was really interesting to me:

    Thankfully, Multics provides Pascal extensions for runtime access of files, so all was well in the end. I also learned that Multics, while a very clear ancestor of VOS, is less documented, less functional, and less friendly than VOS could dream of being. That being said, by the standards of a late 60s OS - the compare here would be very early TSO or CMS and almost nothing else - it absolutely smells like roses. Its error messages are generally good, it has a real hierarchical FS with stream and record files, and it overall does not suck to use - warts and all. I can see why early UNIX felt like a downgrade. I was vaguely annoyed to find that the Pascal compiler breaks in unintuitive ways with over 1000 locals - something I learned when I tried specifying the valid-words list as a Pascal include file to avoid having to read the documentation on Multics Pascal’s file I/O functionality.

    If you could speak about those Multics Pascal extensions, that would be really interesting (or I may have missed them; I did load up your gem site in Lagrange to see, but I definitely could have just missed them). I’d also be curious to hear about the Multics->Stratus progression; it’s hard to find recent content on Stratus online, so I’d really curious about your thoughts. I have a bunch of their books, and it’s pretty clear from a documentation side to see why, but I’ve not actually been able to get my hands on a system running VOS, so it’s harder to test what I see (versus Multics in which there are now several ways to get a local system up and running).

    1. 4

      The big thing with Multics Pascal is that a procedure is provided - fconnect - that allows a filename to be bound to a file handle dynamically at runtime. Normally in old-style Pascal, you have to declare any accessed files as part of the program declaration; this is basically an artifact of 1960s computing where you’d specify the files to use as part of your job submission. (Modern JCL still looks a lot like that. COBOL may too, but that’s less my area.) There’s also nonstandard date/time functions which I use to pick a word. You might find http://www.bitsavers.org/pdf/honeywell/multics/swenson/gb62-00.840300.mr10-2.pascal-users-guide.72.pdf interesting.

      VOS’s mouthfeel, to borrow Calvin’s term, is almost entirely that of a heavily updated Multics. The standard API is far broader and it has built-in support for stuff like clustering, as well as considerably more capable record files. The POSIX system is fairly comprehensive and I found myself mostly using bash as the shell, even when running VOS commands; Stratus’s bash port passes through command_processor intrinsics. Commands are close but not the same between VOS and Multics (VOS uses change_current_directory, Multics uses change_working_directory; Multics uses delete, VOS uses delete_file.) File extensions are different - .cm for scripts and .pm for programs, vs Multics which uses .ec for scripts and no extension for programs AFAIK. That being said, there is no OS that is more Multics-like in the modern era. Ordinarily, this would be the part where I wax poetic about how much I love VOS, but I’ll spare you - I’ll just say I miss working with it every day. https://github.com/FrostFlower/VOSUtils/blob/master/build.cm is a shell script written by me that you can compare to Multics scripts if you’re so inclined.

      The other still-in-use Multics-like is GCOS 6, later referred to as HVS and HVX. The guts have almost no resemblance to Multics, but the shell was essentially a backport from Multics onto the fairly primitive GCOS 6 OS (which previously had almost no interactive functionality.) G6 isn’t maintained anymore but New Jersey still runs it in branch offices of the state government, basically as remote nodes for their centralized GCOS 8 mainframe. (GCOS 6 and GCOS 8 aren’t related to each other.) http://www.columbia.edu/kermit/ftp/honeywellgcosa/hd6comp.ec is a GCOS 6 script; you can see the Multics resemblance.

      Let me know if there’s anything specific you’d like to know about VOS! I haven’t used it in a hot minute, but I co-developed a pkgsrc port to it and remember it pretty well.