[original is at: gopher://baud.baby/0/phlog/fs20181031.txt]
                                                ________  ________  ________
  2018-10-31                                   /        \/        \/    /   \
                                              /       __/         /_       _/
  A  little over a week ago I  was bored at  /        _/         /         /
work and dinking around on  SDF's  com and a  \_______/_\___/____/\___/____/_
new user  came in and couldn't quit, this is    /        \/        \/    /   \
not that uncommon  so  I chimed  in with the   /        _/         /_       _/
usual  "q to quit, h for help" and  off they  /-        /        _/         /
went. It got me  looking at  the help screen  \________/\________/\___/____/
though  and  while  it is  helpful (heh)  it
doesn't give you much  detail on what  does. It got me curious  about  all the
stuff  in com  that I've never really thought about so I set  out to explore a
bit  and see what  I could find out. Between the manpage,  the COM is not  IRC
tutorial and my own exploration I ended up with a pretty good set of notes and
felt  like  it'd be a  waste  not to share them  somewhere so  here,  for your
reading pleasure, is Cat's guide to commode.

  First a little background for people not familiar with it, commode or "com"
is one of those curious SDF programs that you can only access from  inside the
shell,  it's  a multi-user,  multi-room  real  time  chat  program  originally
developed in  1993 by SDF co-founder and  long-time  system administrator smj.
I'll let the manpage sum it up:

        "com is a TOPS-20ish TALK  (aka LINK) for UNIX. It basically links
     multiple TTYs together, though differently than in ITS or TOPS-20. It
     supports multiple  public/private rooms,  chat  logging and automated
     cleanup."

  Unlike IRC, com is  command driven, including  requiring a command to  talk
and  that can take a little getting  used  to.  By  default you're in "command
mode" and can issue commands with keypresses, the most common ones you'll need
are g to goto a room and space to enter talk mode and q to quit. When you type
com  at your  shell you're dropped  into the  lobby  and should see a  list of
rooms. You'd pick a room  you're interested in, hit g to send  a goto command,
type in the room name then hit enter. Once you're  in the room  press space to
send  a talk command type hello and hit  enter  to say  hello. If you want  to
quit, q to send a quit command.

  Let's go over  the process together, step by step,  after  entering com and
being put into the lobby you should see a screen similar to the following:


     COMMODE (c)1993 [email protected] - Version 25

     Type 'h' for Commands
     room-name   #    created      time  topic
     ------------------------------------------------------------------
     anonradio  13  25-Oct-18  23:05:53  DJ KUMATA
     lobby       0  26-Oct-18  15:24:43  SDF's Welcoming Room
     ------------------------------------------------------------------

     TIP: Use 's' to send a private message.
     TIP:  Press [RETURN] to Speak.

     [you are in 'lobby' among 1]


     you@sdf


     remote:


  You'll see version info at the top and then a room list. This should mostly
be pretty self-explanatory, the room-name is the room name, # is the number of
people in  the  room, created  and time  are the date and time  the  room  was
created  and topic is the  room topic. Below that you'll see a couple tips and
then a summary what room you're in, the  number of users  and a list of who is
in  the room.  Users appear in the list as user@host, in our example above you
are connected via SSH to sdf.org so appear as you@sdf.

  We're here to party with the aNONradio guys so let's join their room. Press
g to issue a  goto command,  once you press g you should see a prompt like the
below:


     :goto>


  All the commands follow this format except the talk command but we'll cover
that a little further down. Type in the room name then hit enter. If you enter
the name of a room that doesn't exist, you'll create and join a new room. When
you join  the  room you'll  see a similar screen as when we joined the  lobby,
showing  the number  of users and user names but  you might  also  see another
section for Topography. Topography is the room description.

  Now you're  here you can say hello! Press space to send a talk  command (or
"enter talk mode"), as noted above the prompt for this  command looks a little
different than the other commands, you'll see your username in square brackets
(ie.  [you]). Type your message  and  hit enter  to send  it  to the  room. By
default when you are in any command mode you won't see any updates to the room
until the  command is  sent, this can  be  changed using overstrike mode which
I'll go over a little later.

  When you send your message  it  should  appear prefixed with  your  name in
square brackets, like  the command was. Other  common formats you'll see in  a
room are:


     <user a message here>     This is an emote,  basically just a message
                               in the third person,  the equivalent of /me
                               on IRC.

     *user@domain* a message   This  is  a private message, a message sent
                               just to you that only you can see.


  You'll also see user joins/parts/quits listed as:


     [00:00:00] user@host has joined/left (room details)


  Pretty self-explanatory, it indicates a user has joined the room, left  the
room  for another room or quit com. These  are  time  stamped  with  the hour,
minutes, seconds in UTC.

  And every 15 minutes or so you'll see a UTC time stamp in the format:


     [dd-MMM-yy HH:mm:ss]


  In the anonradio room exclusively you'll also  see regular timestamped now-
playing messages from the aNONradio stream, timestamped and prefixed with the
current number of listeners and peak listeners for the current show.

  When  you've  had enough of  the chat,  press q to send a quit  command and
you'll drop back to your shell prompt.

  That's the basics! Dead simple, right?

  There's one other essential command you'll need; h for help. This brings up
a list  of most of the  commode  key commands  but the  descriptions are a bit
brief  and not all keys are listed so I've  dutifully gone through and pressed
every key to see what it does. I've broken it up into lowercase, uppercase and
punctuation but this is still going to be a pretty long  list so bear with me.
Unless I've genuinely missed it by accident you can assume any key not in  the
list is a talk command but if I have made any mistakes please let me know!


  Lowercase Commands

  Key   Action               Description
  ------------------------------------------------------------------------
  a     Answer a send        Replies to the most  recent private  message,
                             if there's no message  to reply to you'll see
                             "% no one to answer".

  b     Boss mode            Changes  the  screen  to  what  looks like  a
                             prompt  so  it looks like  you're  not up  to
                             anything nefarious. You can type anything you
                             like but it does  nothing AFAICT, enter  puts
                             you  back  in  command mode  with  a  cleared
                             screen.

  c     Clear                Clears the screen.

  d     Dump out of com      Sends you  an email  with the full  buffer of
                             the room, excluding any direct messages.

  e     Emote                Sends a message  to  the room  in  the  third
                             person.

  f     Finger               Returns Finger data for a user.

  g     Goto a room          Go to/join a commode room.

  h     Help                 Displays most of the commands for commode.

  i     Ignore a user        Ignores a user  by name, their messages won't
                             appear when they send them but you will still
                             seem them if you r/R a room  history. Returns
                             a list of ignored users if  you have any then
                             prompts for a user to ignore,  enter a user's
                             name  to ignore them or enter the name of  an
                             ignored user to unignore them.

  k     Kick a user          Kick  a  user  from  a  room.  This  requires
                             approval from  another ARPA or  higher  level
                             user.  From  the  prompt enter "user@host" to
                             kick a user or "approve"  to  approve a  kick
                             request,  you  can't approve a  kick yourself
                             even if you are on different hosts.

  l     List rooms           Returns a list of rooms, the number of users,
                             the date and time created and the room topic.

  m     Mute user toggle     Mutes  a  user  in a  room. Requires approval
                             from a second  party, in the same  way  kicks
                             are approved and in-line with kicks you can't
                             approve  your  own  mute  requests,  even  if
                             you're on multiple hosts.

  n     Play Netris          Starts a game of Netris, enter "user@host" to
                             play against  another  player, "practice"  to
                             play single player. This isn't  made for com,
                             it's  just running  Netris from  inside  com.
                             More  info on Netris  itself can be found  by
                             entering  man netris or netris -h  from  your
                             shell.  After a game it'll drop you back into
                             com  in command mode.  It'll announce  in the
                             current room  when you leave  to play  Netris
                             and return from playing.

  o     Toggle overstrike    Allows messages to be  received  while you're
                             in talk or emote mode,  the screen  can get a
                             bit  messy  when  you're  typing a message in
                             this mode.

  p     Peek into room       Prints the buffer of another room, like the r
                             command it  shows the 18 most recent lines by
                             default but you can enter the number of lines
                             if you want to see more or less.

  q     Quit commode         Does  what it  says  on the  tin;  quits.  If
                             EXITMODE is  true  in  your .comrc you'll  be
                             prompted for a  quit message. I'll cover  the
                             .comrc stuff later in this document.

  r     Room history         Prints  the  most recent 18  lines  from  the
                             buffer of the room you're in.

  s     Send private         Sends a private message to  a user. Asks  for
                             to which is "user@domain", if you press enter
                             eithout entering a user it'll give you a list
                             of  users  in  the  room  and  exit.  Enter a
                             message  and enter  and it  sends  a  private
                             message to  the  user.  If  the  user  you're
                             trying  to  message is  in  a  different room
                             you'll need to provide a room name and if the
                             user isn't  in that room it'll  just return a
                             list of the users that are and then exit back
                             to command  mode. If PRIVHIST is true in your
                             .comrc  you can see a log of private messages
                             by entering "history"  as the recipient after
                             pressing s.

  t     Set topic            Sets the room  topic, topic can be cleared by
                             entering an empty topic.

  u     Lookup user URL      Displays  user URL,  I'm pretty sure this  is
                             grabbing the  URL  from  a  users profile  in
                             profiles but could be wrong.

  w     Who is in the room   Prints a list  of users  in the room and  the
                             room's topography.

  x     Play Dopewars        Starts dopewars, when  you quit it drops  you
                             back  to command mode. I won't go into detail
                             on how to play dopewars because I don't know!
                             You can find more by entering man dopewars in
                             your  SDF   shell.  Like  Netris,  this  will
                             announce in the room when  you leave  to play
                             the game and when you return.

  z     Toggle color mode    Turns colors on or off! Simple.


  Uppercase Commands

  Key   Action               Description
  ------------------------------------------------------------------------
  A     Toggle AFK           Marks  you  as AFK or returns  from  AFK, AFK
                             users  show as "afk" when checking  user idle
                             query.  Sending a  message  to  a  room  also
                             returns you from AFK.

  B     Hunt the Barnacle    Lets  you hunt another user or a bot,  I need
                             to   spend   more  time   with  this.   "hunt
                             <user@host>"  at the  prompt  to hunt another
                             user in the Caves of Dankness, "play" to play
                             a  single  user game, "scores" to  view  high
                             score  list (scores apparently does  nothing,
                             at  least  when  launched  from  com?).  Like
                             Netris this  is  just  launching a game  from
                             com, it's  not in com  itself, although  this
                             one was made  by smj! Like the other games it
                             anounces in the room  when you leave  to play
                             and when  you return. Prints scores  when you
                             win, lose or  quit then dumps you back to com
                             in command mode.

  C     Play comchess        Literally  play  chess  against  another user
                             using  standard algebraic notation,  I didn't
                             have  time  to  explore it much  but it looks
                             like it's  still  a  work  in progress with a
                             number  of  commands  not  yet   implemented.
                             There's quite  a  few commands so  I won't go
                             into them here  but comchess  from your shell
                             will give you a rundown.

  D     Dump into com        Lets you dump  multi-line text into a commode
                             room. Enter your text and press CTRL-D to end
                             input and dump into the room. Users  will see
                             that you've dumped  into the room  but  won't
                             see what you've  dumped unless  they view the
                             buffer with r/R or p.

  E     Toggle echo          When echo mode is enabled and you enter  talk
                             mode you see your name and the message echoed
                             locally  as you type it,  with echo  disabled
                             you  won't see anything when you  enter  talk
                             mode  until  you  hit  enter  to   send  your
                             message.  Looks  like  it only  effects  talk
                             mode, emote mode still appears even with echo
                             disabled.

  F     Flush commode        Flushes  the  buffer   of  a   commode  room,
                             requires approval from another ARPA or higher
                             level user to do so. From the prompt  "flush"
                             to request a flush or "approve" to  approve a
                             requested flush. You can't  approve your  own
                             flush, even if you're logged  in on  multiple
                             domains.

  G     Character Stats      Prints or generates RPG  stats. For what I do
                             not know, hahaha.

  H     Play Hunt            Starts a game of Hunt, a  multi-player multi-
                             terminal game.  Once you quit  it  dumps  you
                             back  into  com  in command  mode. "man hunt"
                             from your terminal should give you  more info
                             on the game itself.

  I     User idle query      Returns a list  of all commode  users, sorted
                             by  idle time, showing the  room  they're in,
                             what  host  they're  on,  their idle time and
                             their AFK status.

  L     Post a link          Post a link  to  the  room and to  SDF's  URL
                             Russian  Roulette. "Link" is the URL to link,
                             including  http:// or whatever,  "title" is a
                             name/description for  the  link. Will need to
                             dive deeper into the URL Roulette  sometime I
                             think, I don't know too much about it.

  M     Play Mazewar         Presumably plays a  maze game, when I try and
                             use it from  com  I get a maze on  screen and
                             then the error:  "MAZE_DAEMON_PIPE  cannot be
                             opened". That could be my issue though  and I
                             haven't tried  it from the shell. Even though
                             it crashes it still announces  when you leave
                             to play and when you return.

  N     Netris statistics    Retrieve statistics on Netris games. "record"
                             returns  the current  record match,  "scores"
                             returns  the  top  20  user  scores  for  the
                             quarter, "scores all" returns  all scores for
                             the  quarter, "scores  qtr-year" returns  the
                             scores for a specific  quarter  and  entering
                             "stats <user@host>"  will  return  a specific
                             user's statistics.

  O     ???                  Appears to do nothing but doesn't enter  talk
                             mode like the other unused keys do?

  P     Set room password    Locks the room  with a  password. Entering  a
                             blank password will clear it.

  Q     Call a quorum        This   has  been   disabled   or  was   never
                             implemented, it's a mystery what it  used  to
                             do. I guess it  was  part of  some  community
                             voting processes.

  R     Extended history     Prints  the  x  most  recent  lines from  the
                             buffer of the room you're in.

  S     Summon a user        Summons a  user to a  room, if the user isn't
                             on  com  to  be  summoned it sends  an  email
                             informing them their presence is requested.

  T     Set room topography  Add  a  multi-line  description  of  a  room,
                             CTRL-D  to  end,  topography  can be up to 10
                             lines,  I'm  not sure how to remove a  room's
                             topography.

  U     Lookup user info     Shows a user's  created,  validated, ARPA and
                             MetaARPA dates.

  W     Who is in a room     Shows you a list of who's in another room

  X     Show your status     Shows  your  current  status/settings:   your
                             name, host and the room you're in, as well as
                             AFK  mode,  biff   mode,  backspace  setting,
                             classic setting, echo mode, joined time, lame
                             mode,  overstrike mode, quiet mode, ROTM mode
                             and timezone. I'm not sure what ROTM mode is,
                             likewise lame mode  and biff mode but they'll
                             come up again later.

  Y     Yank into room       "Nah, you don't really feel like it."

  Z     Zap out of room      "Nah, you don't really feel like it."


  Punctuation Commands

  Key   Action               Description
  ------------------------------------------------------------------------
  -     Toggle backspace     Toggles backspace  between ^H  and ^?,  ^? is
                             the default I think.

  <     Surf rooms backward  Goto the next room in the list

  >     Surf rooms forward   Goto the previous room in the list

  !     Lame mode            Toggles biffster on and off. Interestingly in
                             the docs for .comrc  biffster  mode and  lame
                             mode  are  different  things,  lame  mode  is
                             described as "figlet mode", also showing your
                             status has a seperate  line for  lame mode. I
                             don't know what a biffster is.

  =     Show playlist        No  idea  what this  is  suppoesd to  do  and
                             doesn't give  you  any  feedback on  what  it
                             should be doing.

  spc   Begin talk mode      Lets you type a message to the room.

  :     (nothing)            Returns "Type '?' for commands"

  /     (nothing)            Returns same help output as h

  ?     (nothing)            Returns same help output as h


  Phew! Ok, one  last thing to cover is  your .comrc config file. This can be
manually created and configured by  a user to set  modes and a default room to
join  on  launch,  but it  isn't  required. The syntax  is  a  straightforward
VARIABLE=VALUE. Now in the interest of full  disclosure I haven't tested these
extensively so there might be some holes but here's the settings:


  .comrc Settings

  Setting                Description
  ---------------------------------------------------------------------
  CLASSIC=TRUE/FALSE     Original  "blind" commode, disables  echo  and
                         enables overstrike modes by default.

  AFK=TRUE/FALSE         AFK enabled by default.

  AFKBEEP=TRUE/FALSE     Sets AFK mode for COMBEEP mode below.

  BKSP=TRUE/FALSE        Sets default backspace char.

  COMBEEP=TRUE/FALSE     Enables/disables   "beep"   feature   for  all
                         output.

  ROOMNAME=string        Join  a  room when  starting  com (default  is
                         lobby).

  EMPTYROOM=TRUE/FALSE   Includes empty  rooms  when you use l  to list
                         rooms.

  QUIETMODE=TRUE/FALSE   No version or room list when starting commode.

  BIFFMODE=TRUE/FALSE    Enable/disable biffster mode  by default. What
                         is biffster mode? I do not know.

  EXITMODE=TRUE/FALSE    When this is enabled you'll be prompted for  a
                         message when leaving a room or quitting com.

  LAMEMODE=TRUE/FALSE    Enables or disables lame mode by default but I
                         don't  know  what  lame mode  is,  the manpage
                         describes  it  as  "Figlet  mode".  I've tried
                         joining com with this enabled and it seemed to
                         do nothing.

  PRIVHIST=TRUE/FALSE    Enable logging  of private  messages,  you can
                         view  them  by  viewed  by  sending  a private
                         message  to  history   (ie.  "s  history")  as
                         mentioned in the commands above.

  TYPING=TRUE/FALSE      IM  style  "is  now  typing" messages  display
                         whenever  you  enter a message  command,  they
                         appear in  the chat just like any other  emote
                         message.

  NETRISTAUNT=string     A taunt to display after a Netris match, up to
                         60 characters.


  And there  we go, now you know as much as I do, which is to say not a whole
lot.  If you've  made it all  the way through  this  document; thank  you  for
reading and please reach out if you can school me on anything I missed or just
got wrong, the more gaps filled the better!

  Finally, let me present  this piece of SDF lore  dumped  into  com by smj a
little while back.  The  SDF COMMODE  song,  written  in September  1991 using
iczer's speech synthesizer, AKA GORDON NODROG:

     I'M A DAMGUD CYBER CHATTER
     AND I LIKE TO GO ONLINE
     I'M A DAMGUD CYBER CHATTER
     I'M ONLINE ALL THE TIME

     WHEN I GO INTO THE ROOM
     EVERYBODY LEAVES
     COS I'M A DAMGUD CYBER CHATTER
     AND I NEVER AIM TO PLEASE

     WHEN I ASK FOR THE WAREZ
     I SAY IT LIKE JUAREZ
     COS I'M A DAMGUD CYBER CHATTER
     AND I'LL KEEP ASK FOR YOUR WAREZ

     I'M A DAMGUD CYBER CHATTER
     AND I LIKE TO GO ONLINE
     I'M A DAMGUD CYBER CHATTER
     AND I HOPE YOU LIKE MY RHYME


  I'll see y'all on com!



EOF