________ ________ ________ 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 smj@sdf.lonestar.org - 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