[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