Trailing-Edge - PDP-10 Archives - mit_emacs_170_teco_1220 - info/mm.doc
There are no other files named mm.doc in the archive.
[Note: this documentation is only about 90% complete. Some features
and commands in MM are not explained herein.]

                               MM USER'S MANUAL

1. Introduction

1.1 Starting MM
  MM  can  be  started  by  simply  typing MM to the operating system top level
command handler, called the EXEC. The EXEC is identified by the @ prompt. So to
start MM you would type:

  followed by a carriage return. MM then proceeds to check to see if  you  have
new  mail.  If you do, it displays a condensed line indicating what the message
number is, the receive date, who the message  is  from,  the  subject  and  the
length of the message in characters:
        N      20  6 Feb McLure at SRI-KL (Stuart  (426 chars)

         Last read:  6-Feb-79 16:16:49, 20 msgs (19 old), 10 pages

  In this example, the user types MM. It responds with a single line indicating
that  the  user has new mail. The line beginning with "N 20 ...and so on..." is
that line. The next line, beginning "Last read:...and so on..." is a summary of
the contents of the file.  The MM> prompt is what MM types to show that  it  is
waiting  to  receive  a command from you. Let us examine each of these lines in

  The first line is called a header.  It is a  condensation  of  what  the  new
message is about. The N means that the message is NEW (i.e. you haven't seen it
before  and it is recent). The 20 indicates that it is message number 20 in the
file. As we said earlier, the file is simply a group of messages one after  the
other. If you have 19 messages in your file and a new one arrives then it would
be  the  20th  and have a 20 next to it. The "6 Feb" is the date, February 6th.
The "McLure at SRI-KL (Stuart" is part of the "From:" line we saw earlier.   It
means  that  the  message  is  from  McLure at the computer called SRI-KL.  the
"(Stuart" is simply part of the user name. The rest is too long to  easily  fit
on  the  line  so  it is just chopped off in the header; however in the message
body itself it is completely visible. The "(426 chars)" means that the  message
has 426 characters in it. This is merely a gauge for you since you might prefer
to look at it later if it is very long and you are on a slow terminal.

  You  notice the single letter N at the beginning of the header line.  Not all
messages have a letter next to their header  like  this.    There  are  several
different  flavors  of  letter.  A,  D,  F,  N,  R and U.  These mean ANSWERED,
DELETED, FLAGGED, NEW, RECENT, and UNSEEN respectively. A means you've answered
the message. D means it is a deleted message which will  be  erased  from  your
message  file  next  time you give the EXIT or EXPUNGE commands. F means it has

been  marked  to draw attention to it via the FLAGGED message sequence. We will
discuss this later. N means that it is recent and unseen. R means  that  it  is
just  arrived as of this MM session.  And, of course, U means that it has never
been TYPEd or READ.

  The next line begins with "Last read: 6-Feb-79 16:16:49...". This means  that
your  mail  file  was last read on February 6th, 1979 at 16:16:49. There are 20
messages in the file, 19 of which are old, and  the  file  is  10  pages  long.
Obviously  since 19 of them are old and you have 20 messages, then 1 of them is

1.2 Giving commands to MM
  When you see the MM> prompt, this means that MM is awaiting  a  command.    A
command  simply consists of an english word, or several typed to the MM> prompt
followed by a carriage return. MM then attempts to interpret that  command  and
sees if it understands it. If so, then it executes it. If not, it will complain
to  you  about  the  command  error.  MM  has  its own list of commands that it
understands. Each one does a different thing. Not all of them are necessary for
using MM effectively, but they make an effective whole for MM to operate with.

  One way of approaching MM is in the following manner.
        1. You notice you have new mail. Either the system has told you
           that you have new mail when you logged in or perhaps it
           has told you with a message like 'You have new mail from ...'

        2. You invoke MM by giving the MM command to the EXEC.

        3. MM outputs the headers of the new messages.

        4. At the MM> prompt you type READ  followed by carriage
           and proceed to read the new messages in a special mode called
           read mode which is invoked via the READ command. As you process
           each message, you might delete it, or save it or reply to it
           or any of a number of different things.

        5. After processing the last of the new messages, MM takes you
           out of READ  mode and back to the MM> prompt
           (also known as the top level.)

        6. Perhaps you now want to send some mail. You type MM>SEND
           and type in the people you want to send it to, the subject
           and the text, and then when satisfied, you send it off

        7. You then end your message session via the EXIT command.

        8. Having returned to the EXEC, you are now free to do your
           usual work.

  The  above  is what a typical sample session with MM might look like. We have
necessarily generalized some of the finer points such as what exactly  is  done
while  you  are  READing or SENDing messages.  These details will be considered
later.  Remember  that  MM  has  an  extensive  internal  help  facility.  More
generally,  at  any point in MM you can type a ? and get an informative message
about what is available to you at that point.  Also, at any level you can  type
HELP  <command>  where <command> is one of the things that MM can give you help
on. You can find out what things it can give you help on by typing  HELP  ?  at
top level, read level or send level.

1.3 Message sequences
  One very important notion is that of the message sequence. A message sequence
is  some  group  of messages that have a particular trait in common (or perhaps
have no trait in common but are just considered a sequence because you talk  to
MM  about  them  using their numbers (e.g. 5:100 would be a message sequence of
the 5th through 100th message)). There are many message sequences. They are:

ALL             This represents every message in your file, whether deleted  or

CURRENT         The  current  message  is  the  message  that you are currently
                pointing at. MM keeps a pointer to the current message so  that
                you don't always have to know the message number of the message
                you are interested in. You may substitute a period wherever you
                would ordinarily use CURRENT. This is merely an abbreviation.

DELETED         This  represents messages that have been deleted via the DELETE
                command. On a subsequent EXIT  command,  the  deleted  messages
                will  be  physically  removed  from  your  mail  file  and gone
                forever. Generally, when you process new messages and reply  to
                them,  you  are finished with them and want to get rid of them.
                You would DELETE them so that your  mail  file  doesn't  become
                unnecessarily cluttered by old messages.

FLAGGED         Sometimes you will want to keep old messages for awhile because
                they  might  have  some relevance for immediate tasks which you
                are doing. MM can make a particular set of messages 'stand out'
                like a sore thumb. When you FLAG  a  message  it  tells  MM  to
                remember  that  particular  message  as  a flagged message. All
                flagged messages are then accessible via the 'flagged'  message

FROM            You  may  want to have some way of looking at or processing all
                messages from a particular person.  This  message  sequence  is
                for  that purpose. Suppose you wanted to delete all messages in
                your message message file from a person  named  Silverman.  The
                way  to  do  that would be MM>DELETE FROM SILVERMAN.  Note that
                after FROM  you  type  the  name  of  the  user  that  you  are
                interested  in.  So  'FROM  SILVERMAN'  or more generally 'FROM
                <person>' accesses all messages from <person>.

INVERSE         Suppose you have many many messages in your file and you  would
                like  to  do  something  with  them in reverse order (e.g. most
                recent first). This message sequence accesses all  messages  in
                an inverse order.

LAST            If,  for  some  reason,  you  are interested in the most recent
                message you may use the LAST message  sequence.  You  may  also
                substitute a percentage mark, % , instead of the word LAST when
                specifying the last message. This is merely an abbreviation.

NEW             This  refers  to messages which are both RECENT and and UNSEEN.
                Generally this is simply a message which has arrived while  you
                were  away  from  the  computer,  or  perhaps one that has just
                arrived while you were working.

ON              Suppose  you would like to access the messages on 4-Jul-76. The
                sequence 'ON 4-JUL-76' will do that

RECENT          any message which is new as of this session with MM is  recent.
                If  you have 5 new messages when you login, then they would all
                be marked RECENT until you've  finished  them  and  ended  your
                session with MM

SEEN            Most  messages  are  marked SEEN since you've usually seen most
                messages in your file. Any message which you have looked at  at
                some earlier date is marked as SEEN

SINCE           If  you  want to access all the messages since a given date you
                can use 'SINCE <date>'. For example, to see  all  the  messages
                since 4-JUL-76 you could say TYPE SINCE 4-JUL-76.

SUBJECT         Suppose  you are interested in all messages that have a subject
                including the word 'computer'. Then you  can  access  them  via
                SUBJECT  COMPUTER.  More  generally  'SUBJECT  <topic>' means a
                message sequence with all messages including the phrase <topic>
                in their subject line.

TEXT            If you are interested in messages which deal with COMPUTER  but
                may  not  have that as part of their subject line, then you can
                use the TEXT COMPUTER message sequence.  More  generally,  TEXT
                <phrase>  will  mean  a  message  sequence  with  all  messages
                including the phrase <topic> in the body of the message.

UNANSWERED      Any message which has not been ANSWER'd or REPLY'd

UNDELETED       messages not DELETEd

UNFLAGGED       messages not FLAGged

UNSEEN          messages which have never been TYPEd or READ.

  or a SEQUENCE OF MESSAGE NUMBERS denoting specific messages
     in the file: example 1:5, 7, 10:17, etc.

  For  example,  one  could  say MM>READ FLAGGED.  This would put you into read
mode on all the flagged messages. Or MM>TYPE FROM HENDERSON to type out all the
messages from HENDERSON.  Or MM>ANSWER 3:8 to answer each of the messages  from
3 through 8 individually.


2.1 Available commands
  When  you  start  MM  you are at the top level. This is identified by the MM>
prompt being displayed. At this level, all the power of MM is available to  you
via  a  large  number  of possible commands.  At this point you can manage your
messages, read them, send new ones, reply to old ones and so forth.

  Commands available at this level are:
  Answer,  Blank, Bug, Check, Copy, Create-init, Daytime, Delete, Edit
  Enable, Exit, Expunge, Flag, Forward, Get, Headers, Help, Jump, List
  Logout, Mark, Move, Net-mail, Next, Previous, Profile, Push, Quit, Read
  Send, Set, Status, System-msgs, Type, Undelete, Unflag, Unmark, Version

  We will now describe each of these in detail, their functions and use.    You
will  probably  want to refer to these as you use MM the first few times. These
are essentially the descriptions you would get by typing HELP  <command>  while
in  MM.   Some of these mention that they take arguments. What is meant by this
is that you would type first the command and then  the  argument,  for  example
MM>ANSWER  3. In this example, ANSWER is the command and 3 is the argument. The
argument that ANSWER takes is a  message  sequence.  As  you  recall  from  the
earlier  description  of  a message sequence, the person could have substituted
4:10 or 2,5,7 or FROM SILVERMAN for 3 above.

2.2 Description of commands

ANSWER          takes 1 argument, a message sequence you would like to  answer.
                So,  to reply to message 3 you would say MM>ANSWER 3 where 3 is
                the message number. Or  you  could  answer  any  other  message
                sequence.  After typing MM>ANSWER 3 and then carriage return it
                asks you "Reply  msg  #3  to:"  and  awaits  one  of  "ALL"  or
                "SENDER".  If you respond with ALL, then your answer will go to
                everyone in the header of the message: the person who  sent  it
                to  you  and  everyone  else.  If you respond with SENDER, then
                your answer will only go to the sender of the message.

BLANK           blanks your screen, if you are on a display terminal.  If  not,
                then it does nothing.

BUG             can  be  used to report problems or suggestions you have for MM
                to the maintainers of MM. Basically, BUG  puts  you  into  SEND
                MODE  with  a  predefined list of addresses to send the bug to.
                You send it the normal  way  you  would  send  a  message.  The
                response may take a short while, e.g.  several days.

CHECK           used  to check for new messages that may have arrived while you
                are using MM.

COPY            takes two arguments. The first is a filename and the second  is
                a  message  sequence.  It copies the specified message sequence
                into the given file leaving it intact in the current file.

CREATE-INIT     makes a file, MM.INIT in your directory which  MM  subsequently
                reads  when  you  start up a new MM. In it, you can set various
                switches to make your MM environment more comfortable and  easy
                to  use  for  your  own  personal  tastes.  You  can change the
                settings by editing the file with your editor, or you  can  use
                the  SET  command.  The  following  are  the  current  settings

        BLANK-SCREEN-STARTUP ..number..
        (if 0, don't blank screen on startup otherwise do blank)
        CONTROL-N-ABORT      ..number..
        (if negative, never abort on ^N, if zero, ask if should abort,
         if positive, always abort)
        DEFAULT-CC-LIST ...names here...
        (A list of addresses to always  cc your outgoing messages to)
        EDITOR  ...editor name here...
        (The editor you want to use)
        ESCAPE-AUTOMATIC-SEND ..number..
        (If 0, then when typing the text of a message, an escape will
         send it immediately and return you to top level... anything else
         and it will act as ^Z returning you to send level)
        GET-CONNECTED-DIRECTORY ..number..
         (If 0, ask where to read in the mail file from if connected
         to another directory, if positive then connected directory always,
         if negative, then login directory always)
        PERSONAL-NAME ...your name here..
         (used for outgoing netmail messages)
        READ-PROMPT ...the prompt meaning  you're in read mode...
        REPLY-CC-OTHERS ..number..
         (if 0, reply cc's everyone other than from)
        REPLY-INCLUDE-ME ..number..
         (if negative, then include me in replies)
        REPLY-INITIAL-DISPLAY ..number..
         (if negative then display text of reply initially)
        REPLY-SENDER-ONLY-DEFAULT ..number..
         (if negative then default to replying only to sender)
        RFC733-STYLE-HEADERS ...number..

         (if negative, use the RFC733 style 'John Doe <Doe at Site>'
         style headers for outgoing netmail messages
        SAVED-MESSAGES-FILE ..filename..
         (file to receive copies of your outgoing messages
        SEND-PROMPT ...the prompt meaning you're in send mode..
        SEND-VERBOSE-FLAG ..number..
         (if negative, then superterse, say nothing about sending mail,
         if 0 then tell of local delivery, if positive then super verbose)
        TOP LEVEL-PROMPT ...the prompt meaning you're at top level...
        USER-NAME ...your user name...

DAYTIME         tells you the current date and time.

DELETE          takes  one  argument,  a  message  sequence  and  marks  it for
                deletion. The messages are not erased until the EXIT or EXPUNGE
                command is given.

EDIT            takes one argument, a message sequence.  It  proceeds  to  edit
                each   message  in  that  message  sequence  using  the  editor
                specified in your MM.INIT file.

ENABLE          enables your capabilities (if you have any.)

EXIT            used to erase any deleted messages in the current message  file
                and end a session with MM.

EXPUNGE         used  to  erase  deleted messages from the current message file
                and write out a new copy of the file.

FLAG            takes one argument, a message sequence. It marks  the  messages
                in that sequence with the FLAG bit. So with other commands that
                take  message sequences as arguments, the FLAGGED sequence will
                access those messages.

FORWARD         takes  one  argument,  a  message  sequence,  It  forwards  the
                messages  in the sequence to an address which you specify after
                typing carriage return.

GET             takes one argument, a filename. It will read  in  that  message
                file,  parse  the  messages and act as if that were the default
                message file.  All commands now apply to that file.

HEADERS         takes one argument, a message sequence.  It  will  then  output
                all  the  headers  of  that sequence in order of lowest message

                number to highest.

HELP            lets  you get help on various topics including all the commands
                at the level at which HELP is being invoked. So to find out the
                things you can get help on do HELP ?

JUMP            allows you to specify a message in the current message file  to
                jump  to.  It resets the current message to be the one that you
                specify to jump to. For instance, MM>JUMP 10 will make  message
                number 10 be the current message. It does nothing but reset the
                current message pointer.

LIST            prints   the  message  currently  being  read  on  device  LPT:
                (usually the lineprinter).

LOGOUT logs you out from the system after expunging and updating  your  message

MARK            takes  one  argument, a message sequence. It will then mark the
                messages in that sequence as seen.

MOVE            takes two arguments. The first is a filename and the second  is
                a  message  sequence.  It  moves the specified message sequence
                into the given file and deletes the sequence from  the  current

NET-MAIL        attempts  to  send  any  messages  that  may  be queued in your
                directory. All  messages  across  the  network  are  queued  by
                default.    Any  messages  that  can't be immediately delivered
                locally are queued so that the MAILER (a job  running  all  the
                time) can then come along later and send them off.

NEXT            goes to the next message in the file and types it if undeleted.
                The next message is considered to be the one directly after the
                current one.

PREVIOUS        goes  to  the  previous  message  in  the  file and types it if
                undeleted. The previous message is considered  to  be  the  one
                directly before the current one.

PROFILE         helps  you  setup  an environment for using MM corresponding to
                your desires in message handling.  It  asks  you  a  series  of
                questions  and  then  makes  MM  remember them (via the MM.INIT

PUSH            gives  you  a new EXEC. This means that you'll get a fresh copy
                of the TOPS-20 command interpreter which prompts you with @. At
                this point you can then do anything, and you may get back to MM
                by typing POP.

QUIT            returns you to the level immediately above this one.  If  given
                while  in  READ or SEND modes, it will return you to TOP LEVEL.
                If at top level then simply exits MM without modifying the mail

READ            takes one argument, a message sequence and starts  reading  the
                messages  in  that  sequence  in  special  read  mode. For more
                information see the chapter on READ MODE.

SEND            starts  sending  a  message.  It  prompts  for  the  addresses,
                subjects and text of the message.  To send the message, type ^Z
                after  finishing  typing the text in. For more information, see
                the chapter on SEND MODE.

SET             allows you to change certain defaults that MM uses in  handling
                your  messages.  The various arguments that you can give to SET
                are listed under the CREATE-INIT command above.   This  command
                can  be  used in conjunction with the CREATE-INIT command.  You
                could first  type  CREATE-INIT  and  then  edit  the  resultant
                MM.INIT  in  your  directory  or you can SET variables and then
                type CREATE-INIT which will put out those defaults in MM.INIT.

STATUS          tells  you  relevant  information  and  statistics  about  your
                current  message  file,  i.e.  how  many  messages are deleted,
                unseen, how large the file is, etc.

SYSTEM-MSGS     reads in the system message file <SYSTEM>MAIL.TXT

TYPE            takes a single argument, a message sequence. It then types  out
                each message in the sequence if it is undeleted.

UNDELETE        takes  a single argument, a message sequence and then undeletes
                all the messages in that sequence, i.e. makes them so that they
                won't be physically removed from the file  when  you  give  the
                EXIT or EXPUNGE commands.

UNFLAG          takes a single argument, a message sequence and unflags all the
                messages  in that sequence, i.e. makes them so that they are no
                longer accessible through the FLAGGED message sequence.

UNMARK          takes a single argument, a message sequnce and then unmarks all
                the messages in that sequence, i.e. makes them appear unseen.

VERSION         tells  you  the  version number of the current MM which you are

2.3 Commands which default
  Commands such as HEADERS and TYPE,  etc.  which  take  arguments  such  as  a
message  sequence  also  default  to the CURRENT message. If, at any point, you
want to know whether a command that takes an argument defaults to  one  of  its
arguments,  you  can  just  type  an  <ESC>  where  you would normally type the
argument. If it has a default, it will type it out and you can confirm that you
want that argument by typing a carriage return (otherwise you can abort with  a
^U or <DELETE>'s.  If it doesn't have a default, it will beep you.

2.4 Command parser and getting help
  When you are prompted by the MM> (or for that matter in READ MODE by R> or in
SEND  MODE  by S>) you will be using a command parser that is just like the one
you are used to with TOPS-20 itself. Partially typed commands can be  completed
by  typing  <ESC>.  Also, at any point you can usually type a question-mark and
get some useful help  message.  This  is  completely  separate  from  the  HELP
facility  MM  has  built into it already. So the important thing to remember is
that you should type ? and <ESC> whenever you are not sure of what to do  next.
Also, typing HELP should be of some assistence.

2.5 TOP LEVEL summary
  Of  the above commands, by far the ones you will use most frequently are READ
and SEND. Each of these invokes its own special mode that is  identified  by  a
different prompt from the top level MM> prompt.  You should carefully study the
following chapters on READ MODE and SEND MODE.


3.1 What is READ MODE?
  READ  MODE  is  a  special way of reading and processing the messages in your
message file. It has a number of commands, many of them  very  similar  to  the
ones  in  TOP  LEVEL but different in that they refer only to the message being
read. So for instance if you were to type READ 3, then  the  commands  in  READ
MODE  would,  for  the  most  part, apply to message 3.  If you typed READ 3:10
(meaning to read messages 3 through 10, individually and one  right  after  the
other),  then the commands in READ MODE would apply, for the most part, to each
message between 3 and 10 inclusive as you read it. This turns out  to  be  very
useful  for  managing  your  message file since usually we will be dealing with
individual messages.

3.2 Invoking READ MODE
  READ MODE is invoked by simply typing READ at the TOP LEVEL  followed  by  an
argument.  (If  the argument is left out, READ is taken to mean READ NEW and it
will read any new messages you may have. If none exist, then it simply  returns
you  to  the  top  level).  When  you start-up MM and it tells you you have new
messages, you should type READ in order to process the new messages  one  at  a

3.3 Commands in READ MODE
  Following  is  a  list  of  the commands available to you while in READ MODE.
READ MODE is identified by the R> prompt. At that prompt, any of the  following
commands can be used:
Copy, Delete, Edit, Flag, Forward, Help, List, Move, Net-Mail, Next,
Push, Quit, Reply, Send, Type, Undelete, Unflag

  The  following  descriptions  are  basically  what you would see if you typed
R>HELP <command>. Notice that these commands are very similar to the TOP  LEVEL
commands,except that they do not take message sequence arguments. Instead, they
apply to the current message being read:

COPY            takes one argument, a filename and copies the message currently
                being read into that file.

EDIT            edits  the  message  currently  being  read,  with  the  editor
                specified in the EDITOR variable in your MM.INIT

FLAG            makes the message currently being read be FLAGged so  that  the
                FLAGGED message sequence will contain this message

FORWARD         forwards  this  message  to  other  addresses.  Suppose you are

                READing  a  message  that  you think SILVERMAN should also see.
                Then you should FORWARD him the message.

HELP            Allows you to get help on a specific topic of interest in  READ
                MODE.  HELP  <command>  gets  help  on that particular command.
                HELP<carriage return> gives you a general HELP for READ MODE.

LIST            this  prints  the  message  currently  being  read   onto   the

MOVE            takes  1 argument, a filename. So R>MOVE FOO.BAR would move the
                message  currently  being  read  into  that   file   and   then
                subsequently  delete  the message. Note that this is similar to
                the COPY command in READ MODE which moves it into  a  file  but
                doesn't delete it.

NET-MAIL        attempts  to  send  off  any  queued  netmail  messages in your

NEXT            proceed to read the next  message  in  the  sequence  currently
                being  read.  So  if  you  are  currently READing 3 and you had
                specified MM>READ 3:6, then typing R>NEXT would go on  to  read
                message 4. Since we don't want to have to type this every time,
                you can also just type a carriage return at the R> prompt. This
                is the same as doing a NEXT

PUSH            gives  you  a  fresh  copy  of  the  TOPS-20  command  language
                interpreter heralded by the @ prompt.

QUIT            gets you out of READ MODE back to TOP LEVEL

REPLY           Suppose you are READing message 3 and think it warrants a reply
                on your part. Then you should type REPLY. It will automatically
                setup to reply back to the sender of message 3.  You  end  your
                reply with a ^Z just like in SEND MODE

SEND            puts  you  into SEND MODE so you can send a message. If you are
                READing a message and it reminds  you  to  send  a  message  to
                someone, you would type SEND at that point. You get out of SEND
                MODE via ^Z which gets you back to READ MODE.

TYPE            exactly  like TYPE at TOP LEVEL. It will default to the current
                message being read, however you can  also  supply  it  with  an
                argument of a message sequence to type out.

UNDELETE        undeletes  the  message  currently  being read, assuming it has
                been DELETED earlier at some point.

UNFLAG          unflags the message currently being read, assuming it has  been
                FLAGged earlier at some point


4.1 What is SEND MODE?
  SEND  MODE is invoked by the SEND command at TOP LEVEL and in READ LEVEL.  In
the following examples, things in uppercase are those  which  you  would  type.
Whenever  you  send a message, reply or answer a message, or send a bug report,
SEND MODE is invoked in some form. Suppose you type SEND:

  At this point, MM is awaiting a list of addresses to  send  the  message  to.
Legal addresses are of the form USERNAME@HOSTSITE or just USERNAME. They can be
separated  by  commas.  Suppose you want to send a message to SILVERMAN@SRI-KL,
MCLURE@SRI-KL, and JOHN@MIT-AI.  You would say

  The list of addresses is terminated with a  carriage  return.    Notice  that
space    will    be    ignored.    You   could   have   just   as   well   said
'SILVERMAN@SRI-KL,MCLURE@SRI-KL,JOHN@SRI-KL'. They are separated by space  here
only  for readability.  If, however, you wish to send a message to a person who
also works at your computer, you can just leave off the hostsite name.   So  to
send  a  message  to SOLOMON who happens to work on your computer also, you can
just say
        To: SOLOMON

  This is known as specifying the TO-LIST in sending a message.  The next thing
it will ask you for is to specify a CC-LIST:
        To: SOLOMON

  At this point you can specify a set of legal addresses  as  described  above.
These  people  will be sent a 'carbon copy' of the message.  Usually you carbon
copy people in a message who, although you  aren't  sending  them  the  message
specifically,  you would still like them to see the message anyway. Suppose you
would like to  send  a  message  to  SOLOMON,  MCLURE@SRI-KL,  and  would  like
DOE@SRI-KA  to  also  receive  a  copy  but you don't want him to feel as if he
should respond. Then you would do:
        Cc: DOE@SRI-KA

  After  specifying  the  CC-LIST you will then be asked for the subject of the
message. Usually this is just a few words or a phrase which describes the topic
of your message. For example, if you are sending a message to the above  people
about  the  recent  difficulties  involved  with  your  project,  you might say
something like

  After specifying all of the above information, you will be asked to  actually
type  in  the body of the message itself. Suppose you want to send a message to
the above people,  saying  'I  AM  ENCOUNTERING  PROBLEMS  WITH  ACCESSING  THE
should type:
        solomon -- ok
        mclure at sri-kl -- queued
        doe at sri-ka -- queued

  In the above example, the message is typed in and ended with a CONTROL Z.  MM
responds  by  confirming  the local delivery to SOLOMON and the queueing of the
two messages to MCLURE and DOE. Thereafter, it returns back to  the  TOP  LEVEL
MM> prompt.

  While  typing  the  text  of  your  message  in, there are a number of useful
commands that can be used.  The commands are:

CONTROL-B       insert a file into the place where you  are  currently  typing.
                You  will  be  prompted  with  INSERT  FILE: at which point you
                should type the name of the file you want inserted and  then  a
                carriage  return.  You  can  then  continue  typing more of the
                message or send it.

CONTROL-C       clobber   MM   and  return  to  the  TOPS-20  command  language
                interpreter heralded by the @ prompt. If you run a  program  at
                this point, you will lose your MM core image. To get back to it
                type @CONTINUE

CONTROL-E       invoke  the  editor  specified  in the EDITOR variable entry in
                your MM.INIT file on the current text of the message  as  typed
                so far

CONTROL-I       inserts  a  tab  into  the  text  at  the  point  where you are
                currently typing text in

CONTROL-K       types out the text of the message as it appears thus far  since
                you've started typing it

CONTROL-R       retypes  the  current  line that you have just finished typing,
                from leftmost character to rightmost

CONTROL-U       erases the currently line that you have just  finished  typing,
                from leftmost character to rightmost

CONTROL-W       erases the last word you typed

CONTROL-Z       end the message and have MM send it off

<DELETE>        delete the last character

<ESCAPE>        escape  to  SEND  MODE heralded by the S> prompt at which point
                any of the following SEND MODE commands apply

4.2 Commands in SEND MODE
  As you see above, simply typing MM>SEND will not explicitly put you into SEND
MODE at the S> prompt. What will do this is finishing the text of your  message
with  an  <ESCAPE>.  A  CONTROL-Z  sends off the message and returns you to the
level above your SEND MODE which could be  either  TOP  LEVEL  or  READ  LEVEL.
However,  if you want to change some attribute (e.g. add or subtract an address
from the header, change the subject, etc.) you will  need  to  get  to  the  S>
prompt  with an <ESCAPE>. If you do this, then you can use any of the SEND MODE
commands. They are:
  Bcc, Cc, Display, Edit, Erase, Headers, Help, Insert,
  Push, Quit, Remove, Send, Subject, Text, To, Type

  Following is a description of each of the above commands available at the  S>
prompt at SEND LEVEL:

BCC             A  blind-carbon  copy  is like a carbon-copy except that anyone
                who is not blind-carbon copied does not see the people who are.
                This is useful if you want to send  a  note  to  SILVERMAN  and
                would  like  DOE to see the message but don't want SILVERMAN to
                know that DOE is also receiving a copy of the  message.  To  do
                this  you  would  put SILVERMAN as the To: recipient and get to
                SEND LEVEL and say S>BCC DOE followed by a carriage return.

CC              This is used to add more carbon-copy addresses to the  CC-LIST.
                To add SARA and MUBWINKLE, you would say S>CC SARA, MUBWINKLE.

DISPLAY         If  you  want  to  show  the message you've typed thus far, its
                addresses and the subject line you can say  S>DISPLAY  followed
                by  a carriage return. If the message is very long and you just
                want to display one of the fields you can say S>DISPLAY  TO  or
                S>DISPLAY CC or S>DISPLAY SUBJECT or S>DISPLAY TEXT to show the
                corresponding field.

EDIT            A  very useful feature that you will have ocassion to use is to
                edit the text of your message. To do this, simply  type  S>EDIT
                followed  by  a carriage return. MM will then invoke the editor
                specified after the EDITOR variable in your MM.INIT file.    To
                get back to MM you will have to use the standard exit from your
                editor.  However, there are some editors in which you must save
                the contents of your editing before you get back  to  MM.    MM
                will  warn  you  if you have to write it back. Editors based on
                TECO, such as EMACS, don't need to have it  written  out  first
                because  MM can easily understand what EMACS is doing. Whereas,
                with editors of unknown origin you may have to  write  it  out.
                Also, not all editors are known to work. It would be impossible
                for us to try to make them all work with MM. Rather, if you are
                curious whether your editor works with MM, just try it out.

ERASE           Suppose  you  want  to  completely  erase  some  field  of your
                message, either TO, CC, SUBJECT, or TEXT. You can use the ERASE
                command to do that. So to  erase  the  text  of  your  message,
                S>ERASE  TEXT. Or if you want to erase the whole thing, S>ERASE
                ALL.  MM will not let you send a message that doesn't  have  at
                least  some  TO:  entry  so if you S>ERASE TO, you will have to
                specify some addresses with the S>TO command in order  to  send

HEADERS         This  command is identical to the one at TOP.  It lets you type
                out the headers of any messages in your message file. It  takes

                a  message sequence as an argument. However, it defaults to the
                current message.

HELP            This is the SEND MODE HELP command.  You  can  use  it  to  get
                general  help  about SENDing (by just saying S>HELP) or you can
                get more specific help by doing S>HELP <topic>.  You can get  a
                list of topics by saying S>HELP ?.

INSERT          If  you  would  like  to  insert  the  contents of a file as an
                addendum to your message, you should use this command.   So  to
                insert  the  file  FOO.BAR,  you  would  say  S>INSERT  FOO.BAR
                followed by a carriage return.

PUSH            This is identical to the PUSH commands at TOP  LEVEL  and  READ
                LEVEL.  It  gives  you  a  fresh  copy  of  the TOPS-20 command
                language interpreter heralded by the @ prompt.

QUIT            Similar to the QUIT commands at TOP  and  SEND  levels.    This
                takes  you  to  the  level  immediately above your current SEND
                LEVEL.  So it could take you back to TOP LEVEL if you had  just
                previously  been there. Or if you had given the SEND command at
                READ LEVEL it would take you back there. Note  that  this  will
                abort  the  current  message  so  you  will  lose any partially
                completed message you have been typing.

REMOVE          Suppose you have a long list of addresses in your  TO-LIST  and
                you  want  to  remove  one of them. You certainly don't want to
                ERASE TO since then you'll have to  type  them  all  in  again.
                Rather  you'd  like  to REMOVE the appropriate address. This is
                the command to do that. So suppose your TO-LIST looks like  To:
                John, McLure, Jeff, Jack, Sondra. You can remove Jack by simply
                typing S>REMOVE JEFF.

SEND            If you have decided that you want to send off the current state
                of  your  message, you can do so by typing S>SEND followed by a
                carriage return. Since we don't want to  always  have  to  type
                that  whole  thing  out, you can just type a carriage return at
                the S> level to send off the message.

SUBJECT         This is used to change the subject of the current  message  you
                are  sending.  To  change  the current subject to be FOOBAR you
                should say S>SUBJECT FOOBAR. FOOBAR, of course, can consist  of
                more than one word if you so desire.

TEXT            If  you  want  to  add  text  on  to  the end of the text as it
                currently exists, you can use this command. So  add  'THE  GREY
                DOG  JUMPED  OVER  THE  LAZY  SWAN' you would simply say S>TEXT
                <carriage return> THE GREY  DOG  JUMPED  OVER  THE  LAZY  SWAN'
                followed  by  a  ^Z  to send the message off or <ESCAPE> to get
                back to the S> SEND LEVEL prompt.

TO              To add more addresses to the TO-LIST, use this  command.    For
                example,  to  add  DOE,  MCLURE, JACK to the TO-LIST, you would
                simply type S>TO DOE,  MCLURE,  JACK  followed  by  a  carriage

TYPE            This  displays  the  message  which  would  be typed out by the
                MM>TYPE CURRENT command at TOP LEVEL. For example, suppose  you
                are  at  TOP LEVEL, give the TYPE command followed by a message
                number. It types out that message, and perhaps  you  desire  to
                send  off  a  message to someone since you have just remembered
                something that  the  message  reminded  you  of.  So  you  type
                MM>SEND.  Then, while typing in your message, you want to refer
                back to that message again. To do that, simply get  to  the  S>
                prompt  and  say TYPE followed by a carriage return. This types
                out that message. Note, also, that you can give an argument  (a
                message sequence) to this particular TYPE.

4.3 ^Z vs. <ESC> while inputting text
  The  usual way to send a message once you have finished typing the text in is
via ^Z. However, if you have used <ESC> in the meantime, to get  back  to  SEND
MODE  subsequent  ^Z's  will act like <ESC>'s.  The idea behind this is that if
you wanted to edit your message once, you may want to do so again.  Getting  to
SEND LEVEL you will probably want to change fields with commands other than the
S>TEXT  command, so naturally you will want to send off the message by typing a
carriage return at S> level.

4.4 Distribution Lists
  Thus far, we have dealt with short TO-LIST's and CC-LIST's. But what  happens
if  you  have  50  people  you  want to send a message to, and perhaps you send
messages to this group of people fairly often.  Clearly, you don't want to have
to type the names in all the time.  Besides, if you had to do this, the  header
of  the  message  would  be extraordinarily long. There is a facility in MM for
using distribution lists.

  A distribution list is simply a file  containing  user  names  in  it.    For
example,  suppose  you  send  a  message  to  a  group  of users who head their
projects. You might call these people project leaders.  So  perhaps  you  would

create a file called PROJECT.LEADERS consisting of:
        PROJECT-LEADERS: Murphy, Sondra, Silverman, Doe@SRI-KA, Mclure,

  If  a  file  called PROJECT.LEADERS contains the above text, you can then use
the file as a distribution list. So when you are prompted with 'To:'  or  'CC:'
you  can say '@PROJECT.LEADERS' and have the above file inserted at that point.
If you subsequently do a S>DISPLAY to see what has  been  put  in  the  header,
you'll  note  that  only  the  text up to the colon is put in. So for the above
example if you did:
        Subject: SUMMARY OF WORK

  and now if you do a S>DISPLAY TO, you would see
        S>DISPLAY TO

  This is done so that you don't have to have the entire group of people in the
header of the message. Rather, they are referred to collectivelly as  the  text
before the first colon in the PROJECT.LEADERS file. Of course, if you just have
usernames  separated  by  commas, then they will all be included in the header.
Note that this distribution list capability works for the TO-LIST, CC-LIST, and

4.5 Sending messages to a file
  You can also send messages to a file.  This  is  done  by  simply  specifying
*<FILENAME>  when you are prompted with the To: or Cc:. So for instance, if you
wanted to send a copy of the above note to those project leader people and also
cc a copy  of  the  message  to  a  file  called  MESSAGE.PROCEEDINGS  in  your
directory, you could say:

5. Concluding thoughts
  The  best  way to learn how to use MM is to look at this manual while you use
MM. As you desire to read or send a message, look up the corresponding chapters
on READ MODE and SEND MODE and use the information contained in them  to  learn
more  during  your  first  MM  sessions.  Trying  to remember all the different
possibilities is just a waste of your time, since you certainly won't  need  to
memorize them all.

  If, after you have used MM extensively, you feel that something has been left
out  of the program, feel free to use the BUG command. We are willing to listen
to reasonable suggestions, however we certainly don't guarantee that it will be


          All message sequence   3
          Answer   6, 7

          Bcc   18
          Blank   7
          Bug   7

          Carbon copy   16
          Cc   18, 19
          Cc-list   16, 20, 21
          Check   7
          Copy   7, 8, 13, 14
          Create-init   7, 8, 11
          Current   21
          Current message sequence   3

          Date   1
          Daytime   7, 9
          Delete   7, 9, 13
          Deleted message sequence   3
          Display   18, 19
          Distribution   21

          Edit   7, 9, 13, 18, 19
          Editor   13, 18, 19
          Enable   7, 9
          Erase   18, 19
          Exec   1, 3
          Exit   3, 7, 9, 11
          Expunge   7, 9, 11

          Flag   7, 9, 13
          Flagged message sequence   4, 9, 11, 13
          Forward   7, 9, 13
          From   7
          From message sequence   4

          Get   7, 9

          Header   1
          Headers   7, 9, 19
          Help   3, 7, 10, 12, 13, 14, 18, 20

          Init file   9, 10, 11, 13, 18, 19
          Init variables   8
          Insert   18, 20
          Inverse message sequence   4

          Jump   7, 10

          Last message sequence   4
          List   7, 10, 13, 14
          Logout   7, 10

          Mark   7, 10
          Move   7, 10, 13, 14

          Net-mail   7, 10
          Net-Mail   13
          Net-mail   14
          New message sequence   4
          Next   7, 10, 13, 14

          On message sequence   4

          Previous   7, 10
          Profile   7, 10
          Push   7, 10, 13, 14, 18, 20

          Queued messages   14
          Quit   7, 11, 13, 14, 18, 20

          Read   2, 6, 7, 11, 13, 14
          Read level   16, 18, 20
          Read mode   12, 13, 14, 23
          Recent message sequence   5
          Remove   18, 20
          Reply   13, 14

          Sample header   1
          Sample mm session   2
          Seen message sequence   5
          Send   7, 11, 13, 14, 16, 18, 20
          Send level   18, 20
          Send mode   12, 14, 16, 18, 20, 23
          Set   7, 11

          Since message sequence   5
          Status   7, 11
          Subject   18, 20
          Subject message sequence   5
          System-msgs   7, 11

          Text   18, 20
          Text message sequence   5
          To   18, 21
          To-list   16, 20, 21
          Top level   13, 14, 16, 17, 18, 19, 20, 21
          TOPS-20   12, 14, 17, 20
          Type   6, 7, 11, 13, 14, 18, 21

          Unanswered message sequence   5
          Undelete   7, 11, 13, 14
          Undeleted message sequence   5
          Unflag   7, 11, 13, 15
          Unflagged message sequence   6
          Unmark   7, 11
          Unseen message sequence   6

          Version   7, 12