NAME
     bbs - read and write the board on a data crystal

SYNOPSIS
     bbs [dialstring]

DESCRIPTION
     Bbs is a full-screen client for the board a data crystal serves: rooms of
     messages, a file area, and a chat channel, all of it ordinary files
     reached over 9P.  Nothing is fetched twice that has not changed, and
     nothing blocks the keyboard -- the board loads behind you, room list
     first, while you are already moving around.

     If the board is already mounted at /n/bbs -- which attune(1) does -- bbs
     uses it and no argument is needed.  Otherwise give a dialstring:

          bbs tcp!bbs.frstcomputer.net!9777
          bbs l2cap!?!0

     A tcp!  crystal serves the board at the root of what it exports; the
     others serve it at srv/bbs.  Either way it is posted to /srv/bbs and
     mounted on /n/bbs.  The last dialstring used is remembered, so a later
     bbs with no argument reconnects to the same board.

     On a wide screen the window is split: rooms and files down the left,
     messages and the message body in the middle, chat at the bottom.  On a
     narrow one there is room for a single pane, and Tab moves between them in
     turn.  A room's name carries a count of what you have not read; that
     count is kept across sessions.

     You post by typing /post and a subject, then the message, ending with
     ctrl-D.  /reply does the same for the selected message, quoting its
     subject and threading the reply to it.  Chat is a pane like any other:
     Tab to it, type, press Enter.

KEYS
     up down
          Move the selection, or scroll the message body when it has the
          focus.

     enter
          Open the selected room, message, or file.

     esc  Go back a level; at the top, leave.  While composing or typing a
          command, cancel it.

     tab  Move to the next pane.  On a wide screen the order is rooms, files,
          messages, chat; on a narrow one it steps through the same views one
          at a time.

     PgUp PgDn
          Scroll the message body by a screenful.

     ?    Show the key and command summary in the body pane.

     /    Start a command; the rest of the line is read at the bottom of the
          screen.

     ctrl-D
          Send the message you are composing.

COMMANDS
     Typed after /:

     r    Reload whatever is in front of you.  refresh does the same.

     rooms
          Reload the room list and go to it.

     files
          Reload the file area and go to it.

     post subject
          Compose a message in the current room.  Type it, then ctrl-D to send
          or Esc to abandon it.

     reply
          Compose a reply to the selected message.

     upload path [name]
          Upload a local file to the board's file area, under its own name
          unless name is given.

     motd The message of the day.

     stats
          Board statistics.

     info Board information.

     users
          Who is on chat.

     search term
          Show only messages matching term.  /search with nothing after it
          clears the filter.

     id   Your name, address and whether a key is loaded.

     reconnect
          Dial the board again -- after a link has dropped.

     help The same summary ?  shows.

     quit Leave.

     A sysop -- anyone the board lets read /admin -- also has /mkroom name,
     /delmsg on the selected message, /ban cga [reason] and /unban cga.

EXAMPLES
     The usual way in:

          attune
          bbs

     A board somewhere else:

          bbs tcp!bbs.example.org!9777

     The board is a filesystem, so the shell reaches it too, and the bbs/
     scripts are thin wrappers over exactly that:

          bbs/rooms
          bbs/read lobby
          echo 'Hello!' | bbs/post lobby Greetings
          bbs/say Anyone about?
          cat notes.txt | bbs/upload notes.txt

FILES
     /n/bbs
          The board.  Below it: rooms/ one directory per room, chat/ the
          channel and its user list, dropbox/ the file area, etc/ the board
          name, sysop, motd and statistics, and admin/ for those who may read
          it.

     /srv/bbs
          The connection to the crystal, posted so the mount can be made and
          remade.

     /n/local/rc/bbs
          The shell scripts, invoked as bbs/name (the directory is on $path,
          so the plain name works too where no builtin has claimed it):
          connect, disconnect, rooms, read, post, reply, say, chat, users,
          files, upload, info, motd, stats, synctime, and the sysop's mkroom,
          delmsg, ban, unban.

SEE ALSO
     attune(1), gopher(1), con(1), aether(3)

NOTES
     Posting under your own name needs an identity; /id says whether you have
     one.  Without a key you are still welcome to read.

     The board is files all the way down, which is the point.  Anything the
     client does you can do with ls, cat, and a redirection, and anything you
     can do that way the client will show you.

FRST Computer                                                           BBS(1)
