Price: $1.00 Mathlab Memo #3 Massachusetts Institute of Technology Mathlab Group Laboratory for Computer Science Cambridge, Massachusetts, 02139 An Introduction to ITS for the MACSYMA User by V. Ellen Golden revised April 14, 1981 An Introduction to ITS for the MACSYMA User Contents I. Introduction . . . . . . . . . . . . . . . . . . . . . . . . 1 II. Getting onto the System . . . . . . . . . . . . . . . . . . .3 A. Getting an Account . . . . . . . . . . . . . . . . . . . . . 3 B. Establishing a Connection . . . . . . . . . . . . . . . . . .3 C. Logging In . . . . . . . . . . . . . . . . . . . . . . . . . 6 D. Loading a MACSYMA . . . . . . . . . . . . . . . . . . . . . .6 E. Logging Out . . . . . . . . . . . . . . . . . . . . . . . . .7 F. INQUIR . . . . . . . . . . . . . . . . . . . . . . . . . . . 8 G. INIT files . . . . . . . . . . . . . . . . . . . . . . . . . 8 H. Experienced User Login Protocol . . . . . . . . . . . . . . .9 III. DDT . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10 A. Program Loading and Execution . . . . . . . . . . . . . . . 10 B. "Jobs" . . . . . . . . . . . . . . . . . . . . . . . . . . .11 C. Moving From One Job to the Next . . . . . . . . . . . . . . 12 D. Getting Rid of Jobs . . . . . . . . . . . . . . . . . . . . 12 E. Disowned and Detached Jobs . . . . . . . . . . . . . . . . .12 F. Quit Commands . . . . . . . . . . . . . . . . . . . . . . .13 G. Communication . . . . . . . . . . . . . . . . . . . . . . . 14 H. Messages and Mail . . . . . . . . . . . . . . . . . . . . . 17 I. MACSYM Mail . . . . . . . . . . . . . . . . . . . . . . . . 18 J. Other DDT Commands . . . . . . . . . . . . . . . . . . . . .18 IV. Introduction to and Description of Files . . . . . . . . . .20 A. File Names . . . . . . . . . . . . . . . . . . . . . . . . .20 B. Directories . . . . . . . . . . . . . . . . . . . . . . . . 21 C. File Manipulation: Printing, Copying, Renaming, Deleting . .23 D. FIND. . . . . . . . . . . . . . . . . . . . . . . . . . . . 24 E. Altmode, or Defaults made easy . . . . . . . . . . . . . . .25 V. TECO. . . . . . . . . . . . . . . . . . . . . . . . . . . . 27 A. File Preparation . . . . . . . . . . . . . . . . . . . . . .27 B. Editing Commands . . . . . . . . . . . . . . . . . . . . . .29 C. Filing in Teco . . . . . . . . . . . . . . . . . . . . . . .30 D. TECO Example . . . . . . . . . . . . . . . . . . . . . . . .32 E. Other TECO Facilities . . . . . . . . . . . . . . . . . . . 33 VI. Miscellaneous . . . . . . . . . . . . . . . . . . . . . . . 36 A. NAME. . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 B. WHOIS . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 C. PEEK. . . . . . . . . . . . . . . . . . . . . . . . . . . . 36 D. TIME. . . . . . . . . . . . . . . . . . . . . . . . . . . . 37 VII. Additional Sources of Information . . . . . . . . . . . . . 38 A. Running MACSYMA Demo files. . . . . . . . . . . . . . . . . 38 B. SHARE Directory . . . . . . . . . . . . . . . . . . . . . . 38 C. The INFO Program and further information about the system . 39 VIII. Terminals . . . . . . . . . . . . . . . . . . . . . . . . . 40 A. The TCTYP Program . . . . . . . . . . . . . . . . . . . . . 40 i B. CRTSTY . . . . . . . . . . . . . . . . . . . . . . . . . . .41 C. A Word About Keyboards . . . . . . . . . . . . . . . . . . .41 D. OCTPUS . . . . . . . . . . . . . . . . . . . . . . . . . . .42 E. TIP commands . . . . . . . . . . . . . . . . . . . . . . . .47 IX. Possible Problems . . . . . . . . . . . . . . . . . . . . . 48 A. Problems with your terminal . . . . . . . . . . . . . . . . 48 B. Problems with the system . . . . . . . . . . . . . . . . . .48 C. If Your Typing Appears . . . . . . . . . . . . . . . . . . .49 D. If Your Typing Does Not Appear . . . . . . . . . . . . . . .50 Index of DDT Commands. . . . . . . . . . . . . . . . . . . . . . . . .53 General Index. . . . . . . . . . . . . . . . . . . . . . . . . . . . .55 ii Acknowledgements The original outline for this memo was prepared by Richard Bogen. Corrections and editorial comments were provided by the Mathlab Group. Work reported herein was supported in part by the Advanced Research Projects Agency of the Department of Defense and was monitored by the Office of Naval Research under Contract #N00014-75-C-0661, in part by the United States Department of Energy under Contract #E(11-1)-3070, and in part by the National Aeronautics and Space Administration under Grant NSG 1323. iii Introduction to ITS 1 I. Introduction The MACSYMA algebraic manipulation system is a collection of programs embedded in a LISP interpreter. The purpose of this document is to describe how to gain access to MACSYMA as it exists on the MC PDP- 10 at the Laboratory for Computer Science at M.I.T. and how to interact with the environment in which it exists, i.e. operating system, monitor, editor, and other programs, so that successful use can be made of it. To use MACSYMA effectively you will also need a "Primer" and a MACSYMA Manual. These may be obtained from: Laboratory for Computer Science Publications Department Room 112 545 Technology Square Cambridge, MA 02139 There is a $5.00 charge for the manual, plus $1.00 for postage and handling. The primer is free, and comes with the manual. Additional copies of the Primer may be obtained from: Secretary, Mathlab Group Laboratory for Computer Science Room 828 545 Technology Square Cambridge, MA 02139 Additional copies of this document may be obtained from Publications for $1.00/each. Before continuing we should establish some conventions for notation in this document. the character $ will be used to denote the "altmode" (ascii 27 (decimal) or 33 (octal)), often labelled "escape" or "esc" on terminal keyboards. control characters will be denoted by being prefixed by an uparrow, thus ^Z, ^A. They are typed by holding down the key marked "control", "ctrl" or "cntl" on the keyboard as one would the shift key, and typing the indicated character. will be used to denote variables in examples of command lines. Thus :login The entire is to be replaced with whatever login name you select, e.g. 1 I. Introduction Introduction to ITS :login ellen and the (often shortened to ) indicates the key labelled "return". 2 Introduction to ITS II. Getting onto the System II. Getting onto the System II.A. Getting an Account To log in to the system you will need a login name and a password. A login name is any identifier of up to six characters in length. Most people choose their initials, but any combination of letters or digits is acceptable, provided (a) the last character is not a digit, and (b) the particular name is not already being used by someone else. The INQUIR program will check whether or not your proposed login name is "taken", and ask you to select another if it is. The login name you select should be used each time you log in. A password is any combination of letters and digits up to 12 characters in length. If you do not have a password, then you should apply for one. The procedure will be started automatically for you when you first connect to the machine and attempt to log in. Answer the questions which the Password program asks, and your account application will be automatically be sent to the USER-ACCOUNTS group. If someone from USER-ACCOUNTS is logged in at the time, your account may be initialized within a few minutes. It will certainly be processed within 24 hours. If you have any questions or problems, you may call (617)253- 5891 for assistance. The first time you log in after your account has been initialized, you will be asked to run the INQUIR program (see II.F. below) and answer its questions, giving your full name, address, position, field of interest, and login name. The INQUIR program will be started up for you automatically. It will appear to duplicate some of the questions from the account application, but it is a separate database, so please bear with us and answer its questions. II.B. Establishing a Connection There are 4 different ways in which one can establish a connection to the MC computer: (1) Using a terminal which is directly connected to the machine. These are on the 8th floor of the Laboratory for Computer Science at M.I.T. (2) Using a dialup line, directly connect to the machine. (3) Dialing the number of a Terminal Interface Processor (or TIP) on the ARPA Network, and connecting to the machine from there. (4) Connecting to another computer on the ARPA Network either by a direct line or a direct dialup line, and running a program on that computer which makes network connections. 3 II. Getting onto the System Introduction to ITS For local terminals (option 1), turn to section II.C below. The protocol for (4) will vary widely with the particular computer you have access to. However, no matter what the protocol you will have to specify either the name of the MC computer, which is MIT- MC, or its host number, which is 236 decimal, or 354 octal. The protocols for (2) and (3) are given here: 4 Introduction to ITS II. Getting onto the System Dialup protocol TIP protocol 1. Make sure your console is set 1. Make sure your console is set for 30 cps (300 baud), or 120 for 30 cps (300 baud), full cps (1200 baud) full duplex, duplex, the parity switch, if the parity switch, if there is there is one, does not matter. one, does not matter. 2. Dial the number of the Tip. 2. Dial the number of the machine. 3. When you hear the tone place 3. When you hear the tone place the receiver in the acoustic the receiver in the acoustic coupler headset or press the coupler headset or press the data button on the dataset and data button on the dataset and hang up the receiver. hang up the receiver. 4. Type the appropriate letter for 4. Type an . The response your console type. For most should be ascii consoles that operate at 300 baud, this is E. Some Connected to MC response will then be printed. 5. Type @OPEN 236. (The 236 is Now you may proceed with the the number of the MC computer.) standard login procedure Most commands to the TIP begin (Section II.C) starting with with @ and are never seen by (2) below. 1 the MC system. The response to the @OPEN command may be any one of the following: CANT - this means the line is already open and the TIP cannot make the connection. (Probable reason is the last user did not close the connection when he logged out). Type @CLOSE and then repeat the @OPEN command again. TRYING... - this means the TIP is attempting to complete the connection. Wait, and usually it will be successful. OPEN - this means the connection has been completed. REFUSED - this means all available ports are in use. Try again later. Now you may proceed with (2) below. _______________ 1. If you want to type an @ that is not the beginning of a TIP command, then type @@. 5 II. Getting onto the System Introduction to ITS II.C. Logging In (1) Type Control-Z. (Control characters are typed by holding down the key labelled "control" (or "Ctrl") while typing the desired character. From here on they will be represented in print by being prefixed with "^".) After ^Z is typed the MC system will respond 2 with "MC ITS nnnn DDT mmm" and tell how many users are on. (2) Type :LOGIN, a space, your login name, and a carriage return. For example, :LOGIN JRN The system will then ask for your password. Type your password followed by a carriage return. The system will then print the date and time, and the message Welcome to ITS If you have any mail (see III.H), it will be offered to you for reading and if there are any systems messages you have not seen yet, they will also be offered. II.D. Loading a MACSYMA To load a MACSYMA simply type :MACSYM followed by a carriage return or :A followed by a carriage return (A is a pseudonym for MACSYMA). Several seconds later MACSYMA will acknowledge that it is ready by printing This is MACSYMA 296 (or whatever the current version is), loading a "fix" file, if any, and labeling the first input line (C1) Now commands (terminated by a semicolon or dollar sign) may be typed to MACSYMA. (See the MACSYMA manual.) If you have never used MACSYMA before, you may wish to run the on-line PRIMER. To do this, give MACSYMA the command PRIMER(); _______________ 2. The nnnn and mmm are version numbers for the system and DDT program respectively, and are useful for connecting bugs with a particular version. 6 Introduction to ITS II. Getting onto the System The on-line PRIMER is also available from DDT level with the command :TEACHM. The "QUIT" command for MACSYMA is ^G (control-G). If you need help, you can use the SEND(); command in MACSYMA. Type SEND("message"); and message will be sent to the Mathlab group people who are logged in. One of them will then contact you and help you. Notice the quotation marks, they are part of the command. Other on-line HELP commands for MACSYMA are DESCRIBE(command);, OPTIONS(); and APROPOS(string);. The DESCRIBE command takes the name of a command and prints out the portion of the manual which describes that command. The OPTIONS command enters a network of topics, which allows you to find the commands which exist in MACSYMA for dealing with certain 3 types of expressions or to perform particular functions. The APROPOS command takes a character string as an argument and prints out the list of commands which contain that string. E.g. APROPOS(tr_); would print out all the switches which are associated with the MACSYMA translator, since they all have "TR_" in their names. To see how some commands work, there is an EXAMPLE(command); command, which runs a demo file of sample calculations. II.E. Logging Out In order to logout you should be at system command level. That is, you should be talking to DDT (see III. below) and not to MACSYMA or any other programs. Usually it is only necessary to type a ^Z to get back to DDT level. If you are already there then the system prints ??. To logout from MC, type the command :LOGOUT and a carriage return. Next, if you are using a TIP, close the connection by typing @C. Then it is only necessary to hang up the phone and turn off the terminal. Occasionally, attempting to logout will produce the message --KILL RUNNING INFERIORS?--. This means that a program you have loaded is still running. If you do not want the program (i.e. want to kill it 4 and logout), respond by hitting the space bar once . If you do not want to kill the program, you can type :LISTJ (see III.B) to see what is going on and proceed accordingly. _______________ 3. This network is not quite complete, but is being worked on currently. The command is usable, however, and the areas covered will expand rapidly. 4. If you don't know about the program or what this all means, then probably it is quite safe to type a space. 7 II. Getting onto the System Introduction to ITS II.F. INQUIR The INQUIR program assists us in identifying our users. It will be started for you automatically the first time you log in. It will explain itself fairly well; however, please note the following: You do not need to give your Social Security Number if you would prefer not to, nor your birthday. To avoid any question you feel is too prying or does not apply, simply type a carriage return. We do need your full name and an address, however. You may give your place of work as "home address" if you wish. Your "Group" is U (MACSYMA User) or Nî _ (Non-Consortium MACSYMA User), depending on whether or not you areî _ funded by one of the MACSYMA Consortium organizations. If you are not sure about this, speak to ELLEN or another member of USER-ACCOUNTS. When you have answered all the questions and it says "What now boss?" You signify that you are finished by typing DONE If you need to update the information in your INQUIR entry you can start up INQUIR by typing :INQUIR (followed by a carriage return, of course). And the system will look up your entry and allow you to edit it. II.G. INIT files It is possible to have a special file which does certain things when you log in, like give :TCTYP commands for you (see below), or set the defaults to a particular directory (see Section IV.B on files and directories), or print out the date and time. Such a file is called an INIT (INITialization) file. If you have a directory, it is located on your directory and is called ; LOGIN If you do not have a directory, it is located on your "home directory" (see IV.A below) and has the name ; LOGIN Such a file can eliminate many of the frustrations of logging in, assuming you always use the same type of console and want the same things to happen each time. To have one of these files created for you, contact ELLEN or another member of the Mathlab group. (See III.G and III.H below). 8 Introduction to ITS II. Getting onto the System II.H. Experienced User Login Protocol When you have become quite familiar with the login protocol given above, and know fairly well the material in the DDT section which follows, you may wish to change slightly the way you log in to the system. Using :LOGIN sets certain variables within the DDT program which are intended to protect novice users from accidently destroying their programs or otherwise doing things they might regret. Once you are sufficiently familiar with the various commands, and appreciate the ^K command and the : command for loading programs, you may find it irritating to be asked each time you use one --CLOBBER EXISTING JOB?-- or --CREATE ADDITIONAL JOB?-- with the attendent delays to answer with a space. Well, when you reach this point, you are ready to graduate to the "experienced user" login protocol which is $U $ represents the character altmode (or escape, ascii 27 (decimal), 33 (octal)). This method of logging in replaces :LOGIN and does not set the variables which protect you from loading excess jobs, etc. DDT will continue to tell you what the default file names are for ^O, however. 9 III. DDT Introduction to ITS III. DDT After typing ^Z you are communicating with a program called DDT (also called HACTRN) which is the monitor level under ITS that accepts system commands for performing various functions like program loading, program control, and copying and printing files. There are two formats for commands at DDT level; the first is called "Monitor" format, and this format is what will be meant by the general expression "DDT command". These commands begin with a colon and are immediately followed by the mnemonic name of the command with no intervening spaces. Some commands take arguments, which are separated from the command by a space. A command ends with a carriage return which causes DDT to begin execution. The second format for commands is a short form, consisting of a single character, possibly prefixed by 1 or 2 altmodes. These short commands perform the same functions as the corresponding mnemonics. When short form commands take arguments, these precede the command with no space between the argument and the command. Altmode, (or escape) which is ascii 27 (decimal), 33 (octal), will be represented in print by $. It differs from "control" in that it is not held down, but just typed. The succeeding command character is not separated from it, e.g. $P. On some terminals altmode may not be standard. Right brace, }, (ascii octal 175, or 176) is what you get when you push the key labelled "altmode" on some of these terminals. The :TCTYP command, :TCTYP STANDARDIZE tells the system to interpret ascii 175 and 176 as an altmode. A few short form DDT commands are control-characters. The short forms are easier to type, of course, but the novice user is urged to become familiar with the mnemonic DDT commands first. This permits the simple rule of thumb: All commands to DDT begin with : and end with carriage return. III.A. Program Loading and Execution One way to load and execute programs has already been mentioned, e.g. :MACSYM. That is, colon followed by the program name and a carriage return. This is consistent with the rule of thumb for DDT commands. There is, however, another way to load programs which is frequently preferable: type the program name followed by ^K, e.g. MACSYM^K. The reason this is preferable is that ^K causes the replacement of any existing program you may have loaded called MACSYM 1 with a new MACSYMA. :MACSYM will load a second MACSYMA, if you have _______________ 1. However, DDT may first ask you if you are sure this is what you want to do by typing --CLOBBER EXISTING JOB?--. You answer yes by typing a space. Typing anything else will "flush" the command, so if you did not mean to replace your MACSYMA, you get a second chance. 10 Introduction to ITS III. DDT 2 one already. In those rare circumstances where two copies of a program are necessary, use the colon-type command, or better yet, load one with MACSYM^K and the other with A^K (and expect to be questioned about it by a systems programmer at M.I.T.). To exit from a program, type ^Z. This will bring you back up to DDT level. For the remainder of this section it will be assumed that you are at DDT level, so if you wish to issue one of these commands and are not at DDT level, first type ^Z to get up to DDT, and then type the command. If you are not sure what level you are at, type ^Z. If you were already at DDT level, the system will respond ?? and if you were not, you will be brought up to DDT and an interrupt message of some kind will appear, usually [DDT] (but if you were in a TECO under your MACSYMA it might say "(Console connected to MACSYMA)", in which case you would need still another ^Z to get to DDT). To re-enter a program, type :CONTIN. $P is a short, easier form for this. When you exit from a program, it stops running. If you want to have a program resume running while you remain at DDT level, type :PROCEED after ^Z. ^P is the short form for this. III.B. "Jobs" The programs running "under" your DDT are referred to as "jobs". It is possible to have more than one job and to move from one job to another, leaving the first (a long computation in MACSYMA, for instance) to run while you do something else. DDT will permit you to have up to eight jobs at one time, but since the system can only accomodate about 120 jobs for all users (including the systems jobs), it is not recommended to have more than two or three. (Your DDT is one job, so as soon as you load a MACSYMA you have two jobs, your "top level" DDT and one "inferior"). When you have more than one job under your DDT, it is necessary to be able to tell which job is the "current" one, so that if you type :CONTIN or $P you will be "in" it. To see a list of the jobs you own at any given time, type :LISTJ (the short form is $$V). This will give a list of all your jobs, with the current one marked by an *. Each job will be followed by its status, R for running, P for stopped but "proceedable", or W for waiting to print out something on the console. The status will be followed by the index number for that job, which is a unique number assigned to the job by the system. For example: *TECO P 14 MACSYM R 23 _______________ 2. But since you rarely want to do this, DDT will ask --CREATE ADDITIONAL JOB?--, and you reply space for yes, anything else for no. 11 III. DDT Introduction to ITS III.C. Moving From One Job to the Next To move from one job to the next, i.e. to make another job the current job, type :JOB. The system will then tell you which job is then current by responding, for example, MACSYM$J. Typing a sequence of :JOB's will cause each job to become the current job, in turn. An alternative to this shuffling through all your jobs to get to the desired one is to type :JOB followed by a space and the name of the desired job, e.g. :JOB MACSYM This will cause the job with this name to become the current one. The short form of this command is $J, preceded by the job name to specify a particular job, e.g. MACSYM$J. Notice that :JOB only selects the current job; you still must type :CONTINUE to enter it. Warning: if you misspell the name of the job, :JOB will create a new job which you 3 will have to kill. There is a shorthand for :JOB followed by :CONTINUE. That is to 4 type the name of the job you wish to re-enter followed by ^H , e.g. MACSYM^H. If you have left a job running with :PROCEED, it will inform you when it is ready to print out by sending you a message, e.g. JOB MACSYM WANTS THE TTY. It will then wait for you to exit whatever job you are in, and enter it using ^H or :JOB and :CONTINUE. III.D. Getting Rid of Jobs To dispose of a job that you no longer want, the command :KILL is used. This kills the current job, so obviously care should be taken to assure that the job you want to KILL is the current job. (:LISTJî __ will help you). After a :KILL command, DDT will inform you which job is then current. For example if you just :KILLed your TECO, DDT will select your MACSYMA (or whatever the next job is) and print MACSYM$J III.E. Disowned and Detached Jobs Occasionally it may be necessary to logout in order to switch terminals, or to permit someone else to use your terminal, but you may have a job you do not want to lose, or which hasn't finished running. The thing to do is to detach yourself, or to disown the job. There is a _______________ 3. DDT will type "!" when a new job is created, as a warning. 4. ^H is "backspace" 12 Introduction to ITS III. DDT difference between these two. Disowning a job is to merely "cut" it loose from your DDT while you are logged in. It can be thought of then as floating loose in the system. To do it, exit from the job with ^Z, then type :DISOWN (If you want to leave it running, type :PROCEED before :DISOWN). If you log out while a job is disowned, it will wait for you to log back in and reclaim it. To reclaim it use the :JOB command followed by the job name. The system will respond by typing :$ REOWNED $ and it will then be reconnected to your DDT, and you can reenter it with :CONTINUE. Disowning running jobs is inconsiderate, however. If a disowned job wants to print out, it will not be able to and will just stop. This defeats the purpose of its existence and takes up a job slot in the system. What this means is you should only disown running jobs when it is absolutely necessary. Detaching affects the entire DDT and all the jobs connected to it. Typing :DETACH will log you out of the system but leave your DDT and all your jobs sitting there. This takes up several job slots in the 5 system, so it should only be used when absolutely necessary. When you log back in, (assuming the system has not crashed in the interim) you will receive the message --ATTACH YOUR DETACHED JOB-- and should answer this by typing a space as explained in section IX.D, below. When you log back in after disowning a job, you will not receive a message, but the continued existence of your job can be confirmed by using :PEEK (see Section VI.C), and you can then reclaim it with :JOB. III.F. Quit Commands There are three Quit commands for DDT, ^D , ^S, and ^G. These three have different functions. ^D will abort a command that you have not completed typing. This is useful if the wrong command was selected, or a typing error has been made. DDT will print "XXX?" and you may then retype the command. ^G will stop the execution of a command. DDT responds with "QUIT?" and execution stops. This is a "panic button" type of command, and will stop infinite loops. ^S will stop the printout which results from the execution of a command, e.g. the listing of a directory. ^G is also the "quit" command for MACSYMA and TECO. However, when using any "quit" command, at DDT level or inside a program, it should be noted that due to network delay typing a "quit" command from a TIP will not cause instant cessation of execution; rather it may take several seconds (or even minutes) before the quit command takes effect. It should also be noted that a TIP has a limited number of bits to hold its "interrupt" character, so although it may seem psychologically satisfying to type a long string of ^G's, they overflow _______________ 5. During the afternoon system people usually kill detached trees that have been idle for over half an hour, since the system is too loaded to make it possible to retain them. 13 III. DDT Introduction to ITS 6 (and clear) the interrupt bit, actually cancelling each other out. III.G. Communication A very useful aid to a MACSYMA user is the ability to communicate on-line and receive assistance in this fashion. This is the best way to get help with specific MACSYMA problems, because a MACSYMA Programmer at MIT can have access to your current MACSYMA and examine your expressions. He (or she) can also use your console remotely to demonstrate various solutions for you. There are two ways to communicate: one-way communication, using the command :SEND, and two-way communication in which the user links his terminal to that of another user and the typing of either one appears on both. A list of people who can answer questions for you is available. Type :PRINT ALJABR;MACSYM HELP Of course, to communicate with someone, he must be logged in. To determine who is logged in at any given time, type :USERS and a list of the current users will be printed out. Alternatively, :NAME can be used, which is described in section VI.A, below. To send a one-way message to another user, type :SEND followed by a space and the login name of the person to whom the message is being sent. Then type the message. It may be more than one line long. End it with ^C. For example: :SEND JPG HOW DO I GET MACSYMA TO INVERT A MATRIX?^C This will result in a message on JPG's terminal that says [MESSAGE FROM at