💾 Archived View for zaibatsu.circumlunar.space › ~krixano › phlog › 032420_TOPS20.txt captured on 2020-09-24 at 01:44:30.

View Raw

More Information

-=-=-=-=-=-=-

----------------------------------------------------------------------
 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.