💾 Archived View for zaibatsu.circumlunar.space › ~krixano › phlog › 032420_TOPS20.txt captured on 2020-09-24 at 01:44:30.
-=-=-=-=-=-=-
---------------------------------------------------------------------- RE to Tfurrows on TOPS-20 ---------------------------------------------------------------------- I recently joined tfurrows' TOPS-20 system on the red consensus (at twenex@consensus.circumlunar.space). You can contact him at tfurrows@sdf.org if you want an account there - we could use more active users. Tfurrows talked about how OpenVMS, and TOPS-20, felt a bit wrong. I have had a completely different experience. I really like TOPS-20. It has built-in support for paging by sending Ctrl+S to your terminal at page points, and you press Ctrl+Q to continue to the next page. It has a really really good contextual help system and "recognition" (aka. autocomplete). You can press ESC to autocomplete anything. If a command takes an argument, ESC will print an optional "guideword" that basically describes in plain english what argument comes next. You can press "?" anytime to get contextual help on the command, an argument, or a switch (including all the available options for each). There's also abbreviations for commands and switches as long as the abbreviation is unambiguous with other options, and some commands have special abbreviations that always point to a specific command regardless of if it's similar to another option. MM is the mailing tool, and it is much better than all the linux terminal mailing tools, imo. TOPS-20 has automatic versioning built-in as well as automatically handling how versions are selected/created. Using a file? It selects the latest version. Editing a file and saving it? It automatically creates a new "generation" (aka. version) of the file that has a "generation number" (aka. version number) one higher than the highest current generation. Want to specify a specific version to read? No problem, just specify the generation number on the file: 'filename.ext.gen' If you worry about your system getting cluttered by versions, you can also put a limit on how many generations to keep at one time. The system automatically deletes the lowest numbered generation anytime it goes over. Want to delete all versions of a file? 'Delete filename.ext.*' Whoops! Did you accidentally delete the wrong thing? 'Undelete filename.ext' Yep! You can undelete things. Whenever you delete something, it's only marked as deleted until you either log off, or the 'expunge' command is called, which is when files marked deleted are actually deleted. Here's something unix/linux (Sh, Bash, and practically every popular unix shell) can't do: 'copy Test.* Newtest.*' - Basically renames each Test.* file into Newtest.* where ext remain the same 'rename *.md *.gmi' - Renames each file's ext from md to gmi, while retaining filename. Want to provide multiple files to *one* argument of a command without it being abiguous with another argument? TOPS-20 can do that! 'append blah.txt,blah2.txt blah3.txt' Wow, what a novel idea separating multiple values of one argument with commas so there's no ambiguity! Must have been too ahead of it's time for bash in 1989. I wonder when CP/M, DOS, and TOPS-20 came out? There's a thing called Indirect Files... let's say you have a whole bunch of arguments to a command that you need to use very often, but not all of the time (perhaps... args for a specific project that you only need when working on the project). Just store the arguments in a file and reference it in the command like so: 'cc @indirectfile.cmd' And guess what? It can also be used for different commands if they take the same arguments 'compile @indirectfile.cmd' You know how git and many other programs now have all of these subcommands? Well, subcommands are an integrated part of the TOPS-20 cli. Want to specify a subcommand, append a comma to the end of the command and you are dropped into a subcommand prompt: 'directory,' Need a list of available subcommands? Type '?'. Multiple subcommands can be given, each on a separate line, to batch all of them together. Just press enter on an empty line to start running the command. Built-in paging, very advanced recognition, contextual help in the cli & subcommands & most program prompts, built-in handling of versioning, undelete & expunge, Wildcards work correctly in all cases, unambiguous multi-valued arguments and switches, indirect files, built-in batched subcommands. Oh, and Consistency! (No "-t" vs. "--text" vs. "-text" vs. "--t") I rest my case! ---------------------------------------------------------------------- Of course, TOPS-20 is gonna have some problems, considering how old it is and its hardware limitations at the time, etc. But, personally, it doesn't have very many faults that I can see atm. The biggest thing is just the weirdness with "connecting" and "accessing" of directories, and not being able to easilly traverse the filesystem with something like "cd" (change directory). With that said, TOPS-20's file system seems to be bigger horizontally than vertically (meaning, there's less aweful nesting - unlike linux which throws everything anywhere it can find a place). Additionally, TOPS-20's connecting to directories seems to focus more on doing the majority of your work (a "job") within a directory and then moving onto another project in another directory, and then you're done. What I mean is, the way that TOPS-20's workflow is seems to support less traversing of the file system. Idk how true that is though... I've only been using TOPS-20 for about 2 days now. ------------------------------------------------------------------------ I also suppose this might be a good time to announce that I will be porting EdimCoder, my line editor, to TOPS-20 & KCC (the C compiler that's on there). I'm also planning on writing other applications for TOPS-20 at tfurrows' TOPS-20 system, like perhaps a gopher server and client.