1
0
mirror of https://github.com/PDP-10/its.git synced 2026-01-13 07:19:57 +00:00
PDP-10.its/doc/_info_/its.primer
2016-11-02 14:27:09 +01:00

3518 lines
122 KiB
Plaintext
Executable File
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.
<something> will be used to denote variables in examples of command
lines. Thus
:login <name><carrige return>
The entire <name> is to be replaced with whatever login name you
select, e.g.
1
I. Introduction Introduction to ITS
:login ellen
and the <carriage return> (often shortened to <cr>) 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 <cr>. 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<72> _
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 name>;<login name> LOGIN
If you do not have a directory, it is located on your "home directory"
(see IV.A below) and has the name
<directory>;<login 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
<login name>$U
$ represents the character altmode (or escape, ascii 27 (decimal), 33
(octal)). This method of logging in replaces :LOGIN <login name> 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<54> __
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 <login name> at <machine name><time>]
HOW DO I GET MACSYMA TO
INVERT A MATRIX?
:SEND can also be used to send messages to people who are not logged in.
In this case, DDT will add (MAIL) either after the login name or at the
end of the message and the message will be saved as MAIL until the user
logs in (see H. below). To explicitly send someone mail (whether or not
they are logged in), :MAIL is used. It has the same format as :SEND
except that the message is saved as MAIL for the addressee.
Often, it is more convenient to interrupt another user and enter
_______________
6. Thus re-affirming that 'Patience is a virtue.'
14
Introduction to ITS III. DDT
7
direct two way communication with him. This resembles a typed phone
call. Once the "link" is established, you simply type, no special
prefix or terminator is required. It is customary to indicate that you
have finished what you are saying by typing a > sign as the first
character on a new line so that the other person knows it is his turn to
type. Some people use 2 carriage returns in succession for this
purpose.
To enter two-way communication, type ^_C and the login name of
the user you wish to communicate with. That is control-backarrow, or
control-underscore, followed immediately with a C and then the login
name of the user to be communicated with and a carriage return. On many
terminals ^_ will be control-shift-of-the-letter-O. However, on some
terminals the backarrow or underscore may not have the proper effect
when used as control characters. On some Texas Instrument Silent 700's,
for example, the effect of ^_ is achieved with ^?. On a CDI Teleterm it
is control-shift of zero. (The octal ascii value for ^_ is 37, decimal
8
31.) The normal response by the system to the command is OK, which
means your console is linked to the other user's and the typing on
either one appears on both. To terminate the link type ^_N. Other
responses to ^_C<login name> may be QUERYING, meaning the other person
is in "Query mode" and may accept or reject your link (while you wait
for him to decide you may simply wait, type ^G (bell) to attract his
attention, or type ^_N and try again later), or IN COMMUNICATE WITH
____, BREAK IN? (to answer that affirmatively, type Y; negatively, N).
The response "?" means that the person is not logged in, or you spelled
his login name wrong.
Two way communication (or communicate mode) may be recognized
when a message appears on your console saying
9
LINK FROM <login name>
A one way (:SEND) message always says
[MESSAGE FROM <login name> at <machine>]
or
_______________
7. When asking for help on complex MACSYMA questions, :SEND is
preferred, since all messages sent by :SEND are saved during the
recipient's console session in a file on the .TEMP.; directory. Thus he
or she will have a record of any pertinent information relative to your
problem. The MACSYMA Programmer will very likely communicate directly
with you, however.
8. See VIII.D below for help in locating this or other characters you
cannot find on your keyboard.
9. Note, although two way communications announce themselves with LINK
FROM, they are in no way related to the :LINK command, which links files
together.
15
III. DDT Introduction to ITS
TTY MESSAGE FROM <login name>
On printing terminals a one way message will appear only once, but on a
display (CRT) terminal the message may continue to repeat itself if a
job has control of the console (i.e. the user is in a job) since the
output of the job could write over and obliterate the message. This
repetition can be stopped by simply typing ^Z :CONTIN, i.e. by going up
to DDT level (at which point DDT will print the message one last time)
and then re-entering the job. If DDT has control of the console, the
message will appear only once. Note, if you "lose" a message (because
output from a job obliterates it, or your paper jams), it is not really
lost. All messages sent to you are saved in the file .TEMP.;<login
name> SENDS, and you can read them by printing this file, or simply be
typing (at DDT level)
:PRSENDS
or
^A
Communications of any sort do not disrupt the job which may be
running, in control of your console. It will resume any print out as
soon as you are finished. Remember, to respond to a one way
communication, you must first be at DDT level (i.e. type ^Z)
Occasionally you may find you want to print out a long function
or a file and you do not want the printout interrupted by any messages
which might be sent to you. This can be accomplished using the command
:GAG 0
which will inhibit all communications to you. Then print out your
material. After your print out is completed, type
:GAG 17
to reset things. Any messages sent to you during the time you were
"gagged" will be saved as MAIL for you.
If for some reason you do not wish to be bothered by two way
communications from other users, there are commands to control them.
The first is the default, ^_A, (which stands for "Accept"). It is the
standard state and means that you can be communicated with. The second
is ^_Q (which stands for "Query"). Typing ^_Q will set your DDT and
your jobs in a state such that if someone tries to communicate with you,
you will just be told about it. You type ^_Y to accept communication,
^_Z to refuse, and ^_Q to ask who is querying. To reset things to the
standard state, type ^_A. The third is ^_R (which stands for "Refuse").
Typing ^_R at DDT level will cause all communications to be refused.
^_A resets things. Novice users are advised not to inhibit
communications, since they may accidently cut themselves off from help
thereby.
16
Introduction to ITS III. DDT
One other method of communication should also be mentioned. It
is called :SHOUT. As the name implies, it is a message sent to all
currently logged in users. Its syntax is similar to that of :SEND or
:MAIL, except that no login name is specified. A SHOUT can be
recognized because it will contain the word EVERYBODY,
[MESSAGE FROM <login name> EVERYBODY:]
These messages often appear when the system is being used heavily and 1)
10
all the job slots are in use, or 2) disk space is very low. Obviously,
if you have an extra job you are not using, or three copies of a file
you don't need, heed such a message.
III.H. Messages and Mail
Messages of general interest are sometimes put on the system.
When you log in for the first time the message
TO SEE SYSTEM MESSAGES DO ":MSGS<CR>"
will be printed on the terminal. Once you have typed :MSGS followed by
a carriage return, the system will set up a message date for your login
name. The next time you log in, if there are any new messages, the
system will print --MSGS-- and you have only to type a space to have the
messages displayed (each time it says --MORE--, type space to continue
the display). Typing carriage return will cause the messages to be
"postponed" until the next time. Typing rub-out will cause that message
to be skipped over (i.e. you will never see it). A message is something
sent to the user community at large.
If when you log in the system prints --MAIL-- this means that
there is a private communication just for you, and once again typing
space will cause the mail to be displayed, while typing anything else
will postpone it. To check someone else's mail, for instance to see if
he has seen a message you sent him, type :PRMAIL followed by a space and
the login name of the user whose mail you want to check. Typing :PRMAIL
with your own login name will display your own mail. Typing :PRMAIL
with no login name will also display your own mail. The system will
then offer to delete your mail for you. Typing a space will answer
"yes"; a carriage return will answer "no" (i.e. your mail will be
deleted if you type a space, and saved if you type a carriage return).
11
Note, typing :PRMAIL SKL will not delete SKL's MAIL file.
_______________
10. :SHOUT should not be used except in such emergency situations, as in
other situations it can be extremely bothersome to other users.
11. The file on the .TEMP.; directory in which all the messages sent to
you with :SEND are saved during your console session is deleted when you
log out. If you wish to re-read these messages before you log out, type
:PRINT .TEMP.;<login name> SENDS, :PRSENDS, or ^A.
17
III. DDT Introduction to ITS
There is a program specially designed for reading mail, :RMAIL
(Read MAIL). It will show you one message at a time, permitting you to
delete or save messages selectively, as well as peruse previous mail for
replying or other action. When you exit from it (or should you get
disconnected, log out accidently, or otherwise "screwup") it writes the
file <directory>;<login name> RMAIL, so it is very hard to "lose" mail.
For more information about it use the :INFO program (section VII.C
below).
III.I. MACSYM Mail
There is a special MAIL file for MACSYMA, in which you may
report bugs, questions, problems, or suggestions for features. To do
this, you type :MAIL MACSYM followed by the message and end it with a
12
^C, just as for any other :MAIL or :SEND . This file is checked daily
by system programmers. They will answer your questions or attempt to
locate and fix any bugs you report. When bugs are fixed, your report
will be deleted from MACSYMA mail, and mail will be sent to you by the
person who fixes the bug. To read the MACSYMA mail file, type :PRMAIL
MACSYM.
When new features are added to MACSYMA, this will be reported in
the update file. To read this file, type :PRINT MACSYM;UPDATE >.
III.J. Other DDT Commands
A complete list of the DDT commands can be obtained by typing
:?
To respond to questions or messages from DDT of the form
--Message--
you should type a space for yes, and carriage return or rubout (delete)
for no.
A note about question marks: a ? at DDT level is not a request
for an answer from the user (things requiring an answer are of the form
--Question?-- as mentioned in the preceding paragraph). The question
mark is a prompt indicating that the machine is waiting for your next
command. A particularly confusing sequence occurs when the system asks
--CLOBBER EXISTING JOB?--
and the user, realizing he wants to type :CONTINUE instead of loading
the job again, hits a carriage return. The system responds
_______________
12. You can also use the MAIL("message"); command in MACSYMA.
18
Introduction to ITS III. DDT
FLUSHED?
which appears to be a question (or perhaps for those of us more
anthropomorphically inclined, an incredulous comment by the system, "You
want that flushed?"). In fact, it is two outputs: the report "FLUSHED"
refering to the user's request to load a job, and the prompt "?" meaning
"OK, now what?" At this point the appropriate thing to do is to type
:CONTINUE. Another case similar to this is the
--ATTACH YOUR DETACHED TREE--
problem. The "FLUSHED?" in this case is likewise two outputs, and how
to proceed is explained in section IX.D.
19
IV. Introduction to and Description of Files Introduction to ITS
IV. Introduction to and Description of Files
A file is simply an area on a particular storage device which
contains data or text. The only storage devices which are used on the
MC machine are disks and tapes.
Files on the disks are figuratively grouped into "directories".
A directory is just a list of all the files stored under a given name.
IV.A. File Names
Files in the ITS system possess two names, each of at most 6
characters. They are referenced by giving the two names as well as the
device (default is DSK:) and the directory name where the file resides.
A device is usually a machine name, meaning the disk of that machine.
The device name DSK: refers the disk of the machine you are using. Thus
on MC, either DSK: or MC: means MC's disks. A device name is always
followed by a colon.
A directory name is always followed by a semi-colon. Your
directory is determined when you login: if you have a directory of your
own, its name will be the same as your login name; otherwise it is the
default specified in your INQUIR entry, if one was specified; if none
was specified, you will be assigned by the system to a "home directory"
called USERSn; where n is a digit from 0 to 9. You may determine which
directory you have been assigned to by typing
:HSNAME
File names are up to six characters long and separated by
spaces. A > sign may be used for the second file name and stands for
the name which is the largest numerically if there exists a file with
the given first name and a numeric second name; otherwise the > sign
represents the "greatest" name in an alphanumeric sense. A < sign may
be similarly used for the "least" name.
The device (followed by a colon), the directory name (followed
by a semi-colon), and the file names (separated by a space) may appear
anywhere in the file descriptor string. Thus for example both
INTRO 4 DSK:RAB;
RAB;DSK:INTRO 4
are equivalent descriptions. However, the most usual description is
DSK:RAB;INTRO 4.
Any of the four descriptors (1st name, 2nd name, device, directory) may
be omitted and either the default, or the value given in a previous
command (if there was one given) will be used. Notice that at DDT level
the "usual" way to reference this file is:
20
Introduction to ITS IV. Introduction to and Description of Files
DSK:RAB;INTRO 4
while in MACSYMA the two file names are given first and then the device
and directory,
(INTRO, 4, DSK, RAB).
i.e. (filename1,filename2,device,directory), which corresponds to the
1
DDT ordering: INTRO 4 DSK:RAB;.
IV.B. Directories
A list of all the files on any directory can be seen by typing,
:LISTF followed by a space and the directory name. The short form of
this is the directory name followed by ^F. A typical directory looks
like this:
MC USERS0;
FREE BLOCKS #0=923 - #1=879 - #13=1585 - #14=2314 - #15=2098
0 * LOGIN 1 3/6/80 01:29:54
13 AK DATA 2 5/22/80 09:35:24
1 AK LOGIN 1 !9/14/80 08:34:29
L AK1 3 BACKUP TAPE GFR18
0 BH MAIL 1 9/1/80 14:21:09
14 BQS MATRIX 16 12/3/79 16:48:25
1 CEH F2 10 !9/14/80 11:48:30
15 DUFF A3 6 11/21/79 10:35:15
The top line shows the device (MC is a synonym for DSK, referring to the
MC machine) and the directory name. The next line shows the number of
free blocks (for all users) on each of the five disk drives. If the
2
numbers are low , it indicates that disk space is short, and you should
be careful about creating files you really do not need. Following this
there will be a line for each file on the directory, with the following
information: The number of the disk on which that file resides
(0,1,13,14,15), the two file names of the file (e.g. DUFF A3, or AK
LOGIN), the length of the file in blocks (a "block" is up to 5120
characters, or 1024 words, corresponding to approximately two single
spaced typed pages), and the date and time of creation of the file.
Some files will have BACKUP TAPE, with a number, instead of a creation
date. This means that the file has been transferred to tape (notice
_______________
1. A new feature in MACSYMA allows you to type DDT style file names in
MACSYMA commands which accept file names, by enclosing them in quotation
marks, and by preceding the ";" with a "\", e.g. LOADFILE("USERS0\;CEH
F2"); or SAVE(["USERS9\;ZHT OUTPUT"],FUNCTIONS);
2. In the case of the MC machine, less than 500 blocks per disk.
21
IV. Introduction to and Description of Files Introduction to ITS
that the file above that is listed as on BACKUP TAPE does not have a
disk number, but rather the letter L), and deleted from the disk. A file
on tape can be reloaded into the system.
All files on the disk are copied onto tape (but not deleted from
the disk) every weekday. Files that have not been "accessed", i.e.
used, as indicated by the date of last reference (not visible when the
directory is listed, but available to the "Grim File Reaper") in a week
are moved to disk #13, which is a "secondary" pack. They are still
accessible in exactly the same manner as files on the regular or
"primary" disks, however if a disk drive is not working, the secondary
pack may be demounted until the drive is repaired, in which case those
files on it would not be accessible temporarily. Files that have not
been accessed in a longer period of time are moved to disks #14 and #15.
Once again, they are still accessible in the same manner as files on the
primary disks, but access may be a little slower as these "tertiary"
disks are connected to the machine in a slightly different manner.
Files which have migrated to disk pack #15 and have not been used for
even longer are deleted in "grim file reaps", but only after being
3
dumped on tape. Such a file can be reloaded, if need be (see below).
If a file is accidently deleted, or somehow lost in a system crash, it
can often be recovered from tape. Notice the file above called CEH F2.
Just before the date there is an !. That indicates that the file has
not yet been copied onto tape. Any file that does not have an ! in
front of its date will appear somewhere on tape and if deleted can be
reloaded.
To have any file reloaded, send mail to FILE-RETRIEVE (which may
be abbreviated FILE-R). (See III.G above for how to send mail.) You
must specify the directory and both file names. Files are usually
reloaded within 24 hours.
The USERSn directory is the default for people who have no
directory of their own or do not have another group directory to use.
When using a USERSn or any other group directory, the first file name of
any file you put there should be your login name. This permits quickly
figuring out what belongs to whom. If you allow MACSYMA to select a
file name for you, it will choose the first 3 characters of your login
name, and append a digit to it (the lowest digit which insures a unique
file name), using > as the second name, e.g. the file AK1 3 above. You
are probably better off specifying names yourself, but you can always
rename the files MACSYMA names for you.
Directories tend to be fairly long. The average group directory
may have something more than 100 files on it. If your login name begins
_______________
3. Precise time periods vary depending on how heavy the disk usage is.
In general 2 or 3 months is the average lifetime of a file which is not
being used. In any case, these files can still be retrieved. Also,
note that it is not necessary to retain the link in the directory to
find the file on BACKUP TAPE, it is only necessary to remember the file
name.
22
Introduction to ITS IV. Introduction to and Description of Files
with a W, you are going to have to watch a lot of paper roll past before
you get to your files if you just use :LISTF. There is another way to
look at just those files with a certain first file name (your login name
in this case): type
<login name>$$^F
and only those files on your default directory with your login name as
first file name will be displayed. That is <login
name><altmode><altmode><control-F>.
IV.C. File Manipulation: Printing, Copying, Renaming, Deleting
Files may be moved from directory to directory, renamed, and
printed out. To move a file from one directory to another, type :COPY
followed by the directory name and the two file names and a carriage
return. The system will prompt with TO: after which the new directory
name should be typed, followed by a carriage return. If no new file
names are designated, the system will assume the default names, i.e. the
same names; however, a new name may be given the file if so desired.
For example: If RAB has files ITS 57, ITS 58, and ITS 59,
:COPY RAB;ITS >
TO:ELLEN;
will copy the file ITS 59 from RAB's directory to ELLEN's directory,
still calling it ITS >. If ELLEN doesn't have a file called ITS, it
will be ITS 1.
:COPY RAB;ITS >
TO:ELLEN;FOO >
will copy the file ITS 59 from RAB's directory to ELLEN's directory,
(without deleting it from RAB's directory) but name it FOO > on ELLEN's
directory.
To remove a file from one directory and place it in another, the
:MOVE command is used. This deletes the file from the original
directory, leaving only the copy in the new directory. Since this is a
command which does a deletion, great care should be exercised in using
it.
To just rename a file without moving it, type :RENAME followed
by the directory and file names and a carriage return. Once again, the
4
system will prompt with TO: and the new name should be typed.
_______________
4. Note, this command works only to change the name of a file, and a new
directory may not be specified. If you want to change the directory
(i.e. move the file) and give it a new name, use :COPY or :MOVE.
23
IV. Introduction to and Description of Files Introduction to ITS
To print out a listing of a file on your terminal, type :PRINT
followed by the directory and the file names and a carriage return. The
short form for this is ^R, which is followed by the directory and file
names as usual, e.g.
:PRINT ELLEN;FOO 29
or
^R ELLEN;FOO 29
Files that are outdated or no longer needed can be deleted, of
course. To do this type :DELETE followed by the directory and the file
5
names, and a carriage return. A shorter form is ^O followed by the
directory and file names. Great caution should be used with the ^O or
:DELETE command, lest you delete a file you didn't intend to. However,
if this should happen, it can sometimes be retrieved from tape as
described above. If you type ^O by accident, type ^D to abort it.
IV.D. FIND
Most directories are quite long. On a slow terminal they can
take a long time to list (and a lot of paper). To locate particular
files, without listing an entire directory, there is a program called
FIND. :FIND takes 4 arguments, which are the device, the directory, and
the two file names (the default device is DSK: and the default directory
is "all directories"). Any of the four arguments may be replaced by *
and FIND will proceed to locate all occurrences of the given
specifications, taking the * as a "wild card" which will match anything.
For example:
:FIND USERS4;SKL *
will find and print on your console all the files on the USERS4
directory that have SKL as their first file name. Similarly:
:FIND SKL *
will find all the files on any directory with SKL as their first file
name, and print out the list on your console. This is another way for
people using a USERSn directory (or any other group directory) to list
just their own files with
:FIND USERSn;<login name> *
_______________
5. This is a dangerous command, and the default login init is currently
set up so that ^O will not work. For people using the default init, the
result of typing ^O will be "OP?"
24
Introduction to ITS IV. Introduction to and Description of Files
Of course, as with any : type command, a carriage return terminates
that.
Type
:FIND ?
to find out about additional features and options of FIND.
IV.E. Altmode, or Defaults made easy
The character altmode can be typed after any of the file
manipulating commands (COPY, PRINT, DELETE, RENAME) and the result will
be that the DDT will print out the default file specification. If, for
instance, you type
:COPY $
DDT might respond, for example:
USERS3;JRN FOO
meaning that USERS3;JRN FOO are the current defaults. If you want to
COPY the file JRN FOO, you just type a carriage return. However, if you
would like to COPY the file USERS3;FOO BAR, you simply type the new file
names, FOO BAR, and then the carriage return. Suppose you wanted to
COPY the file JRN OMAIL, but it was on FOO; not USERS3;. Then you
simply type FOO; and a carriage return. (If you don't want to COPY a
file after all, type ^D).
Since the device is always followed by a colon, and the
directory name by a semi-colon, there can be no confusion about those
two. The file names are always separated by spaces, and all that
remains is to be able to designate to DDT whether it is the first or
second file name we wish to change (assuming we are not changing both).
Let us assume that we do not want to COPY USERS3;JRN FOO, but rather
USERS3;JRN 23. The device and the directory are correct, as is the
first file name. We wish to change only the second file name. So we
type
^X23
Typing ^X is the same as typing the default first file name; ^Y,
represents the default second file name. Thus in this case ^X23 is the
same as JRN 23. If we had typed ^Y^X, it would have been the same as
FOO JRN, etc. If you are skeptical (and it is wise to be), you may type
altmode again after you have altered the default file specification, to
check that it is correct, changing it still further if so desired:
:COPY $
25
IV. Introduction to and Description of Files Introduction to ITS
DSK:USERS;JRN MAIL
to which you type
^X23$
to which the DDT responds
DSK:USERS;JRN 23
which is what you want, so you type carriage return.
For certain "dangerous" commands, such as ^O (the short form for
:DELETE, the file deletion command), DDT supplies an altmode
automatically to be sure you realize what you are doing.
26
Introduction to ITS V. TECO
V. TECO
Teco is the text editor. It is useful for preparing batch files
and/or papers. After loading it with TECO^K or :TECO, you are in a
program that handles text strings and operates on them. You have what
is called a "buffer" into which you insert text. By issuing commands
you can add to or otherwise change the contents of the buffer. By
issuing other commands, you can file the contents of the buffer on the
disk. For papers and reports there are a variety of formatting commands
which can be used to justify the text for output on whatever printing
1
device you have available. The commands typed do not enter the buffer;
only those characters following the "insert" command go into the buffer.
You can then correct typing, or other errors. For instance, a series of
commands for MACSYMA could be prepared thus, filed on the disk, and
finally loaded into MACSYMA using the BATCH command.
The TECO language itself was originally designed partly as an
editing language and partly as a programming language, so that
repetitive editing programs could be written. When display consoles
became available, special display editing packages were implemented
using the TECO programming language. They are much better than the
original TECO editing language on display consoles, but they work only
marginally on printing consoles. So this documentation will deal
primarily with the original TECO editing language and only in passing
with the display modes (commonly called "Control-R" modes). If you are
going to be using TECO from a display console you should definitely
learn how to use one of these display editing packages and take
advantage of all the capabilities of your console. You can learn about
the most commonly used package on MC by looking at its documentation.
Type
:PRINT EMACS;EMACS CHART
You can try out EMACS or simply by typing
:EMACS
which will start up a TECO for you (which will be have its "job name"
EMACS) using that package. (:E is the short form for this). For a
primer on EMACS, you can type :TEACHE. And more complete information
can be gotten in the :INFO program (see section VII.C).
V.A. File Preparation
TECO may be loaded by typing :TECO followed by a carriage
return, or by typing TECO^K. (:T and T^K are short forms for these
_______________
1. For more elaborate writeup of results, there are also text justifying
programs available. Speak to ELLEN for details.
27
V. TECO Introduction to ITS
2
two). In standard TECO the full set of keys on the keyboard is
available for editing commands. Insertion of text is done by use of the
3
command "I" which takes the following text string as its argument.
Commands in TECO are terminated by two altmodes. The preprocessor
processes the string, handling rubouts, until it encounters an altmode.
It does not begin execution, however until it encounters two altmodes.
Thus, single altmodes may be used within a command string to delimit
Search or Insert strings.<2E>_ _
Your location in the buffer is marked by a pointer, referred to
as "the cursor". Initially its position is at the very top of the
4
buffer. Editing commands can change its position. The Insert command
inserts the following text string and leaves the cursor at the end of
the inserted string. The Search command locates the following string,
and leaves the cursor at the end of it. The -S (reverse search) command
leaves the cursor at the beginning of the sought for string.
_______________
2. In MACSYMA it is possible to load a TECO under your MACSYMA by giving
the MACSYMA command TECO();. Similarly EMACS(); starts up an EMACS under
your MACSYMA. In this case, ^Z will bring you back up to your MACSYMA,
and TECO(); again will return you to TECO.
3. In the special display packages, all the characters are self-
inserting and editing commands are available as "control" characters.
4. On a display console it will appear as /\
28
Introduction to ITS V. TECO
V.B. Editing Commands
A list of the most commonly used editing commands, in regular
mode, follows:
effect of command command
advance cursor one line L
go back one line -L
move one character to the right C
move one character to the left -C or R
delete one character D
(the next character after the
cursor)
kill from cursor position to end of K
line (including carriage return
and line feed)
kill from cursor position to end of :K
line (retaining carriage return
and line feed)
kill from cursor position to beginning 0K
of line
move to the beginning of the line 0L
move to the end of the line :L
redisplay screen (on a display terminal) ^L
move to the top of the buffer J
move to the end of the buffer ZJ
move right one word FWR
move left one word -FWR
kill to the end of the buffer ZK
Commands that take string arguments:
to insert text I
to search forward S
(i.e. over text beyond cursor position)
to search backward -S
(i.e. over text that is before cursor position)
Commands pertaining to printing terminals
to type out the whole buffer HT
to type out the current line 0TT
(without moving the cursor)
to type out the current line 0LT
(moving cursor to beginning of line)
to type out n lines nTT
to automatically type out three lines :3^N
each time two altmodes are typed
Quit, or cancel command string typed ^G
(but not executed yet)
29
V. TECO Introduction to ITS
Commands may be prefixed by a numerical argument indicating the
number of repetitions, e.g. 4L would advance the cursor four lines, -4L
would move it up four lines.
The Insert and Search commands take the following string of<6F> _ _
characters, including spaces, carriage returns, and tabs, and insert or
locate them respectively, e.g. Iany string$$ would insert "any string"
into the buffer.
The command :3^N is a switch (giving it a second time will
reverse the condition). It is given once and has effect for the
duration of the TECO you have loaded (unless you turn it off). Notice
that in spite of beginning with a :, it is a TECO command, not a DDT
command. It is particularly useful because it prints out the line the
cursor is on and the next two lines, each time two altmodes are typed,
if the cursor is in the middle of the text. The position of the cursor
will be shown by -!-. If the cursor is at the end of the buffer (as in
a file that you are in the process of typing in) the last three buffer
lines will be typed out, and the cursor position will be shown by the
location of the ampersand that is the TECO "ready" symbol.
^G is a quit command. It will stop an infinite loop (e.g. an
iterative search without proper terminating conditions) or it will flush
an entire command string which you have not yet executed.
There are approximately 400 other Teco commands; the most up-to-
date listing of them can be had by printing out DSK:.INFO.;TECORD >.
(This file is very long however, so perhaps you want to ask someone at
5
MIT to list it for you on our high speed printer and mail it to you.)
V.C. Filing in Teco
"Filing" is the process of storing the edited text which is in
your buffer in a disk file where it will stay permanently (until the
file is deleted). If you do not have your own directory, you will use
the group or USERSi directory assigned to you (see IV.A). directories.
All the TECO commands that deal with files and filing begin with E. The
ones you will need to deal with are EW, ER, EE, EF, EY, ET and ED. The
specifications for file names have been given already. By using the >
convention you can avoid writing over and thereby obliterating a
previous copy of a file. This is especially useful if it becomes
necessary to return to a previous version to undo an "improvement" that
didn't work out. However, it is "good manners" to delete extra copies
of files before logging out. There is a rule of thumb that two copies
_______________
5. Those familiar with the MACSYMA editor will note that it was largely
based on TECO. Note, however, that the commands which cause display and
printout in the MACSYMA editor are quite different from those in TECO,
there are some commands in the MACSYMA editor for insertion of text
which do not exist in TECO, and TECO's commands for manipulation of
parenthesized expressions are entirely different.
30
Introduction to ITS V. TECO
of the same source file are enough...and the GFR (Grim File Reaper) will
delete all but the two most recent if you don't do it yourself.
There are two common protocols for filing things from a Teco
buffer. The first is: EW<directory>;$EE<filename1> <filename2>$$. This
files the whole buffer in the specified directory. The second is:
EW<directory>;$HPEF<filename1> <filename2>$$. This files a copy of the
whole buffer in the specified directory but leaves the contents of the
buffer intact. You are at the same location in the buffer you were at
previous to filing and can continue working. On a display terminal,
typing $$ will show you the buffer again.
To "yank" a file from a directory into the buffer, the following
protocol is used: ER<directory>;<filename1> <filename2>$^Y$$. Note, in
this case ^ is uparrow (ascii decimal value 94, octal 136), and not
control. Once you have specified a directory name and some file names,
they become the defaults. Unless you want to change them, they can be
omitted from subsequent ER,EW,EE,EF, etc. commands.
To list a directory while you are in TECO, type EY followed by
the directory name and a semi-colon, thus:
EYELLEN;$$
This does not disrupt or modify your buffer; you are still in the same
place ($$ will redisplay the buffer on a display console).
When you are inputting a lot of data, it is advisable to "file"
it away every fifteen minutes or so to minimize the amount of work you
will lose if the system crashes while it is all in your buffer. Using >
as the second file name, you can set up a default file name with the ET
command, thus:
ETUSERS4;JRN >$$
Then after you have inserted your data for a few minutes, you can type
EW$HPEF$$, and a copy of what you have just done will be filed on disk
in the appropriate USERSi directory as JRN 1 (it is recommended that you
make the first file name of a file you place on any USERSi directory
your login name; you can then rename it when it is complete to JRN DATA,
or whatever name you find descriptive). Then type $$ and continue
inserting data. This process is repeated until you have completed the
file. Then you can delete all but the largest file, renaming that one
if you wish. Note that it is possible to designate files to be deleted
using < as the second file name, but it is very easy to miscount <'s,
and using the specific file names, (e.g. USERS4;JRN 15) is safer.
The :DELETE command is used at DDT level, but it is possible to
delete files while you are in TECO. The ED command followed by the
directory and file names and terminated by two altmodes will do it,
thus:
EDUSERS4;JRN 15$$
31
V. TECO Introduction to ITS
(Be sure to do ETJRN >$$ so that your default name doesn't stay "JRN
15").
V.D. TECO Example
Here is an example showing how to create a batch file for
loading into MACSYMA. Everything you would type on your console will be
shown in lower case, at the left margin, thus:
foo
Everything the system responds or types out will be shown indented, in
capital letters, thus:
BAR
Explanatory comments will be shown following a semi-colon, on the line
they explain, thus:
;explanatory comment.
:teco ;load TECO
TECO 928.
&
iexp(2*x)*sin(x)^2; ;insert a command line
dif(%,x); ;and another one
$$ ;end the Insert command
&
-LTT$$ ;go back one line and type it out
DIF(%,X);
&
3c$$ ;move 3 characters to the right
6
if$$ ;insert another f
0tt$$ ;type out the line
DIFF(%,X);
&
ht$$ ;type out the entire buffer
_______________
6. Note that the last two commands could have been written together,
thus:
3cif$$
32
Introduction to ITS V. TECO
EXP(2*X)*SIN(X)^2;
DIFF(%,X);
&
ewusers4;$eejrn de$$ ;file it away as JRN DE on USERS4
V.E. Other TECO Facilities
There are numerous facilities available in the TECO programming
language, but two of the more useful for editing are Q-registers and
Iteration.
Q-registers can be thought of as pigeon holes in which to stick
useful things, much like the numbered holes behind the desk at an old
fashioned hotel. The pigeon holes available to you in TECO are the keys
on your keyboard, that is to say that there are Q-registers 0 through 9
and A thru Z (there are also registers .A through .Z, and ..A through
..Z, but these contain special features of the TECO program itself, or
of special macro packages). You can copy something into a Q-register so
as to be able to insert it repetitively. You can remove a piece of text
from its location, store it in a Q-register, and then insert it
someplace else. You can use Q-registers for various bookkeeping
operations you might want to do (counting the number of lines in a file,
for example). You can use a Q-register to store a macro, such as an
iterative search, which you want to have operate over your entire
buffer, or a portion of your buffer.
There are four basic commands which refer to Q-registers:
X Copy text into Q-register
U Place numeric value into Q-register
G Get the contents of Q-register and insert in buffer
M Execute (Macro) the contents of Q-register
The two commands X and U take arguments of the form
<what>X<where> or <number>U<where>
<where> is the name of a Q-register. <what> may be either of the
following
1. a number of lines (e.g. 3X1 -> copy the next three lines into
Q-register 1)
2. A range of the buffer (e.g. Q2,.X4 -> copy from the point (location)
in Q-register 2 to the current location into Q-register 4)
and the <number> may be either of the following:
1. an integer (e.g. 0U1 -> put zero into Q-register 1)
2. a location (e.g. .U2 -> put the current location into Q-register 2)
33
V. TECO Introduction to ITS
The location of the cursor in the buffer is calculated in characters
from the beginning of the buffer.
The two commands G and M take one argument following them, which is the
name of a Q-register, e.g.
G8
inserts the contents of Q-register 8 in the buffer at the location of
the cursor (leaving the cursor after the inserted text).
M8
executes the command string contained in Q-register 8.
The command Q followed by the name of a Q-register designates a
particular register for other commands, e.g.
Q1= will show you the value in Q-register 1 (a number)
(this does not insert the value in the buffer,
just displays it for you to inspect)
Q1J jump to the location contained in Q-register 1
Q1,. designates a portion of the buffer from the
location in Q-register 1 to the current location
of the cursor (.)
Q1,.X2 copies the specified portion of the buffer
into Q-register 2
The command X may be preceded by an F, e.g. Q1,.FX2, and the text
designated will be copied into the Q-register and deleted from the
buffer. It may also be preceded by ^, in which case text is appended to
what is already in the Q-register.
Iteration is made possible because TECO is a programming
language. Iterative procedures are enclosed in angle brackets,
<procedure> (notice these are "real" angle brackets, you type them),
which may be preceded by a number to indicate the number of repetitions
(no number specified indicates the procedure is to iterate indefinitely,
beginning at the cursor location, until terminated by the ";" command).
The most commonly used iterative procedure is the iterative
search. The format for an iterative search to change all occurrences of
X+3 to X+2 is
<SX+3$;-DI2$>$$
Notice the altmodes. The first one terminates the search string, X+3.
The second one terminates the insert string, 2. -D, which deletes the
3, does not need a terminator since it does not take a string argument.
(Notice it is -D since the cursor is at the end of the string X+3, so<73> __
34
Introduction to ITS V. TECO
the 3 is the character just before the cursor). Finally, notice that
the ";" is not there for punctuation, but is the special TECO character
that says, "if you find no occurrences of the string, exit the
iteration." It provides the terminating condition for the search.
More examples:
0U1 J<S
$; %1> Q1=$$ zero Q-register 1, then go to the top
of the buffer and search for all
occurrences of <carriage return> and
increment the value in Q-register 1
each time you find one; finally
display the contents of Q-register 1.
This will count the number of lines
in a file.
J .,.XA <SDIFF$; 0L ^XA L>$$ go to the top of the buffer, and set
up Q-register A, then search for all
occurrences of DIFF; when you find
one go to the beginning of the line
it is on, and append that line to Q-
register A, then go to the next line
to insure you don't keep finding the
7
same line with DIFF in it. This will
create a list in Q-register A of all
the lines containing DIFF.
Either of these two little procedures could be inserted in a TECO
buffer, then the command HFXB$$ given, which would put the contents of
the buffer (i.e. the procedure) in Q-register B. Then a file could be
read into the buffer, and the command MB$$ given, which would run the
procedure over that file.
_______________
7. Failure to do something like this is a very common "bug" in iterative
procedures, and is one of the easiest ways to produce infinite loops.
35
VI. Miscellaneous Introduction to ITS
VI. Miscellaneous
There are several other programs which may be of help to the
MACSYMA user. Two of them, NAME and WHOIS, identify other users. PEEK
permits you to check on your own or someone else's status. And TIME
gives you the current date and time.
VI.A. NAME
NAME is loaded by typing :NAME followed by a carriage return, or
by NAME^K. It prints out a list of the users currently logged in with
their full names and locations. It also gives the idle time, i.e. the
length of time since the user last did something at his console.
When NAME has completed its printout, it kills itself and
returns you to DDT level.
VI.B. WHOIS
Loading WHOIS has different effects depending upon the way it is
done. Loading it with :WHOIS <carriage return> or WHOIS^K will produce
the same print out as :NAME, but with additional information about the
users. Loading it with :WHOIS JRN <carriage return> will print out the
identity of the user who uses JRN as his login name. Alternatively,
:WHOIS may be given a full name, and the result will be to provide the
login name of that person. The difference from NAME here is that not
only the full name of the user is given but some other identification,
e.g. MACSYMA user, secretary, graduate student, etc. :WHOIS and
WHOIS^K give only those users logged in, but by giving a login name to
:WHOIS any user's identity can be determined, whether or not he is
logged in. This is a good way to check if someone already uses the
login name you want to use. A user who is not known to the system will,
of course, not be identified, and the system will print "???" or "No
Users".
WHOIS also kills itself and leaves you at DDT level.
VI.C. PEEK
PEEK permits you to check on your status, or that of other
users. It is loaded by either :PEEK <carriage return> or PEEK^K (:P and
P^K are short forms of these two). The printout is a listing of all the
current users with all the jobs that they currently possess and the
status of each job. This printout will update itself every 20 seconds
on a display console, and you may cause it to update itself more
frequently by typing space. On a printing console, the printout is
updated only by explicitly typing a space. You kill PEEK by typing Q.
This will return you to DDT level (but remember that from a TIP, this
may still take a few seconds). There are several modes to PEEK, which
are selected by a series of single letter commands. A listing of these
may be obtained by typing ? at PEEK.
36
Introduction to ITS VI. Miscellaneous
The first two lines give statistics about the system itself.
The third line gives the headings for the information to follow. The
remaining give status information, one line for each job. The number in
the first column is the user index, followed by the login name of the
person, and the name which is currently the default for his DDT. The
next column gives the status of the job; HANG, RUN, WALK, CRAWL, FLY,
PAGE, 10!0 and TTYI and TTYO are the most common. HANG and RUN are
sufficiently descriptive; WALK, CRAWL, and FLY are variants of RUN
1
intended to indicate roughly how your job is doing ; PAGE means the job
is currently waiting its turn in time sharing, and 10!0 means that the
job has been interrupted (usually because you typed ^Z). TTYI and TTYO
will be next to a job that has control of the console, and mean
"inputting" (or waiting for input) and "outputting" respectively. To
the right of this status indication there will be one of three symbols:
<, >, or Tn. < means that the job has relinquished control of the
console to a "superior" procedure. > means that control is with an
"inferior" procedure. In the majority of cases you will find the >
next to your DDT, and the < next to your MACSYMA. The Tn indicates that
that job has control of the console (a bit of reflection will assure you
that if you are looking at a PEEK, your Tn will be opposite the PEEK
job). The n is the number of the line you are logged in on. The next
two columns give the core units the job is using. The first number is
the total amount of core the job takes, and the second number is the
amount of that that is on the disk. The next column gives the % of time
the job is receiving from the machine. The remaining column gives the
total machine time (CPU time) the job has received. For each user, the
line with his login name represents his DDT. Then under that, indented
slightly, will be a line for each job, with the job name in the first
column, and the directory name that is the current default for that job
in the second column. The status column and the % time are generally
the most useful in determining your status.
On a printing console, running a PEEK when the system is being
used heavily can take a long time. To just see the status of your own
jobs, load PEEK by typing
:PEEK J
This will cause it to display only your jobs. If you have a disowned
job, it will be shown, also, but next to <, >, or Tn, it will say DSN.
VI.D. TIME
:TIME or TIME^K will give you a print out of the current time
and date, as well as the length of time the system has been running.
_______________
1. There are a few other varients of RUN: MULTIX, TENEX, and perhaps one
or two others. These are actually names of operating systems, and in
PEEK mean "slow"; this is a bit of inter system sniping.
37
VII. Additional Sources of Information Introduction to ITS
VII. Additional Sources of Information
VII.A. Running MACSYMA Demo files.
It is sometimes useful, as an adjunct to the information in the
MACSYMA Manual, to see how some commands work on sample problems. There
is a directory called DEMO which contains batch files used for giving
demonstrations. These files illustrate the various capabilities of
MACSYMA. You can list the DEMO directory (see IV.B) and then run one of
these files yourself to see how a particular command works, or just to
get an idea of how MACSYMA operates in general.
After you have chosen a file (say it is BEGIN DEMO) you load a
MACSYMA (see II.C) and, after it gives you a command line number, type:
BATCH(BEGIN, DEMO, DSK, DEMO);
or
DEMO(BEGIN, DEMO, DSK, DEMO);
BATCH will cause the file to be run right through without pauses between
command lines. DEMO will cause the system to pause after each command-
display line pair for you to type a space, which will cause it to type
and execute the next command. (On noisy phone connections, sometimes
the phone line will send a <cr> for you, which the DEMO command
interprets as "no", and the DEMO will terminate prematurely. If this
happens, try it with the BATCH command.)
VII.B. SHARE Directory
Another directory available to MACSYMA users is the SHARE
1
directory. As the name implies, it is a directory of routines written
by users which may be useful to other users. There are at least two
files for each routine, one providing documentation on the use of the
routine, and the other containing the actual routine ready for loading
into MACSYMA.
Users are invited to use the files on this directory and to add
to it should they develop some useful routine. The naming conventions
and required file formats are explained in a file on the directory
called -READ- -THIS-. Please heed them.
Note, when using programs on the SHAREi directories, some files
have changed location since the last version of the MACSYMA manual. If
you attempt to load something advertised to be on SHARE, and get a FILE
NOT FOUND message, try the same file name but SHARE1 or SHARE2 as the
_______________
1. As our users "SHARE" more and more, the original directory has gotten
full, and now there are also SHARE1 and SHARE2 directories.
38
Introduction to ITS VII. Additional Sources of Information
directory. (Of course, you could also use :FIND to locate the new
location.)
VII.C. The INFO Program and further information about the system
The :INFO Program contains a variety of information about
programs that run on the system. You can start it up with :INFO or
INFO^K. It has a self-teaching feature which explains how to use it:
type H the first time you run it and it will enter this self-teaching
routine.
A file which is interesting to look at is AI:GLS;JARGON >, which
you can print with the :PRINT command. It is a glossary of some of the
seemingly incomprehensible language some programmers use.
39
VIII. Terminals Introduction to ITS
VIII. Terminals
VIII.A. The TCTYP Program
ITS tries to identify the type of terminal which the user has in
order to send characters to it in an optimal fashion. However, it is
not always successful in doing this, so sometimes you may have to help
it. If you feel this is the case type the command :TCTYP DESCRIBE
followed by a carriage return. This printout will show the type of
terminal ITS thinks you are using and the characteristics which it
possesses. The possible terminal types are: DATAPOINT, HP2640, OMRON,
TEKTRONIX, VT52, GT40, IMLAC, MEM (memorex), EXECUPORT, TERMINET,
TELETYPE (for 33 and 35 terminals), TISILENT, PRINTING, and a few
others. (See .INFO.;TCTYP ORDER for the complete list.) The
designation PRINTING is used if none of the other types apply.
For example typing :TCTYP TISILENT (followed by a carriage
return) will inform ITS that you have a Texas Instruments Silent 700
terminal. Giving the name of the terminal causes the relevant
parameters to be set to "reasonable values." If these are inadequate,
they can be reset. The command :TCTYP HELP (carriage return) gives a
brief explanation of how to reset them. The principal parameters are
LINEL (line length), PAGESIZE (the number of lines per page or screen),
PADCR, PADLF, and PADTAB (which specify padding for carriage returns,
linefeeds, or tabs respectively). A value of 0 for PADCR and PADLF and
1 for PADTAB means no padding after carriage returns, linefeeds, and
tabs respectively. A value of 0 for PADTAB means the terminal is not to
tab at all. The maximum padding value is 7. (Try small values first).
A numerical value of a parameter should be followed by a period to
indicate decimal base (otherwise it is taken as octal).
ITS does not pad carriage returns or linefeeds unless you
specify it explicitly. TIPs, however, provide what is usually adequate
padding (2 pads for carriage return). If the padding for carriage
returns and line feeds on a terminal being used from a TIP seems
inadequate, it may be improved by resetting the padding value, or by
adding PADDED to its :TCTYP command. For example, a T.I. Silent 700
that is sometimes missing linefeeds may be improved by typing
:TCTYP TISILENT PADDED
This will slow down its input response a bit but will greatly improve
legibility.
A complete description of the :TCTYP program may be found by
typing
:PRINT .INFO.;TCTYP ORDER.
The normal response by the system to any :TCTYP command (except
DESCRIBE and HELP) is
:KILL
40
Introduction to ITS VIII. Terminals
In spite of the bloodthirsty look of this response, it does not destroy
any programs you may have running, but only indicates execution of the
command.
VIII.B. CRTSTY
For display terminals which are not handled directly by the
system there exists a program called CRTSTY. This provides the software
support to permit these terminals to take advantage of their display
characteristics. Among the terminals supported by CRTSTY are: ADM3's,
Concept 100's, Hazeltine 1500's, Perkins Elmer FOX's, Datamedias,
Control Data Corporation 713's, and a host of others. You should try
:INFO CRTSTY and :INFO TERMS to see if your terminal is included. If it
isn't, the maintainers of CRTSTY are usually willing to help you add it.
In the CRTSTY section of INFO the information you must provide to have a
new terminal supported is listed. You can communicate with the
maintainers of CRTSTY by sending mail to BUG-CRTSTY.
VIII.C. A Word About Keyboards
Unfortunately there is no standard ascii keyboard. There are
many various keyboard layouts, and in some cases certain ascii codes may
not be assigned to the same key on any two keyboards. Included here is
a chart which give the ascii codes in octal and decimal, and the various
printing characters most usually associated with them. These may be
helpful in trying to locate stray control characters on your console.
The keys usually most affected by the whim of the keyboard
designer are the control functions which in this document are called
"control-backarrow" (^_) and "control-uparrow" (^^). The first of these
is particularly useful on ITS for communicating (^_).
^_ On teletypes, the backarrow is the shift of the letter O, and on all
upper case terminals, this is the first thing to try. The backarrow
on more modern terminals is "underscore", so the key on your
keyboard which would be used to underline may turn out to be the
elusive "backarrow". A few consoles (notably the CDI Teleterm) have
the function of control-underscore on control-shift-zero.
DEC Consoles: Decwriters (LA36), Decscopes (VT50, VT52). The
backarrow on these consoles is the underline, which is the shift of
the dash, i.e. the fifth key from the right in the top row. On
VT100's it is control-?.
TIsilents. There are two main TI keyboard types. On one of them
there actually is a key with a backarrow on it in the top row of
keys, and it is the backarrow for "control-backarrow". On the other
control-backarrow is control-question-mark. If the obvious key on
your TI console does not work for control-backarrow, try control-
question-mark. On some TI's the key "US" ("underscore") is the key
to use for control-backarrow.
41
VIII. Terminals Introduction to ITS
^^ On teletypes the uparrow is the shift of the letter N. On all upper
case terminals that is the first thing to try. In other cases,
there seems to be no particular scheme for what the uparrow is. A
key with an arrow pointing up would be an obvious one to try. Some
keyboards indicate uparrow with a large circumflex or caret.
DEC Consoles. On LA36's, VT50's and VT52's, uparrow is the shift of
the number 6. On VT100's it is control-tilde.
TIsilents. On one of the TI keyboards, the uparrow is the uparrow,
and is located in the top row of keys. On the other, the control-
uparrow function is achieved with control-greater-than.
The table of translation of strange control-characters for the
TI silent variant keyboard is given here, in case any other console
types use it:
To get ^_ Type ^?
^^ ^>
^] ^=
^\ ^<
VIII.D. OCTPUS
There is a program called :OCTPUS (for OCToPUS) which will give
you the octal value of any character you type from your keyboard. This
will aid you in locating special characters which are eluding you. You
start it with :OCTPUS and type characters at it. ^Z will offer to
return you to DDT level, at which point it kills itself and leaves you
there.
42
Introduction to ITS VIII. Terminals
ASCII CHAR LPT VALUE TRANS SAIL MEANING
null ^@ 000
control A  001 vl down arrow
control B  002 a_ alpha
control C (eof) ^C 003 b_ beta
control D  004 ^ logical and (caret)
control E  005 ~ logical not
control F  006 e_ epsilon
control G  007 n- pi
backspace ^H 010 ^\ lambda
tab ^I 011
line feed ^J 012
vertical tab ^K 013
form feed ^L 014
carriage return ^M 015
control N  016 %_ infinity
control O  017 @o del (partial deriv.)
control P  020 (_ subset of
control Q  021 )_ contains
control R  022 n^ intersection
control S  023 U_ union
control T  024 V- for all
control U  025 E| for some
control V  026 O+ exclusive or
control W  027 <> two-way arrow
control X  030 _ underbar
control Y  031 -> right arrow
control Z  032 Z- control Z (eof)
altmode $ 033 =/ not equal
control shift l  034 <_ less or equal
control shift m  035 >_ greater or equal
control shift n  036 =_ equivalent
control shift o  037 V_ logical or
space 040
exclamation point ! 041
double quote " 042
number sign # 043
dollar sign $ 044
percent sign % 045
ampersand & 046
43
VIII. Terminals Introduction to ITS
single quote ' 047
left parenthesis ( 050
right parenthesis ) 051
asterisk * 052
plus sign + 053
comma , 054
minus sign (dash) - 055
period . 056
slash / 057
zero 0 060
one 1 061
two 2 062
three 3 063
four 4 064
five 5 065
six 6 066
seven 7 067
eight 8 070
nine 9 071
colon : 072
semicolon ; 073
less than sign < 074
equal sign = 075
greater than sign > 076
question mark ? 077
at sign @ 100
capital A A 101
capital B B 102
capital C C 103
capital D D 104
capital E E 105
capital F F 106
capital G G 107
capital H H 110
capital I I 111
capital J J 112
capital K K 113
44
Introduction to ITS VIII. Terminals
capital L L 114
capital M M 115
capital N N 116
capital O O 117
capital P P 120
capital Q Q 121
capital R R 122
capital S S 123
capital T T 124
capital U U 125
capital V V 126
capital W W 127
capital X X 130
capital Y Y 131
capital Z Z 132
left bracket [ 133
backslash \ 134
right bracket ] 135
up arrow (caret) ^ 136 ^l up arrow
back " (underbar) _ 137 <- back arrow
accent grave ` 140
small a a 141
small b b 142
small c c 143
small d d 144
small e e 145
small f f 146
small g g 147
small h h 150
small i i 151
small j j 152
small k k 153
small l l 154
small m m 155
small n n 156
small o o 157
small p p 160
45
VIII. Terminals Introduction to ITS
small q q 161
small r r 162
small s s 163
small t t 164
small u u 165
small v v 166
small w w 167
small x x 170
small y y 171
small z z 172
left brace { 173
vertical bar | 174
right brace } 175 _ altmode
logical not ~ 176 } right brace
rubout 177
46
Introduction to ITS VIII. Terminals
VIII.E. TIP commands
Under certain circumstances it may be necessary to give
additional commands to the TIP. Frequently used ones are as follows:
@OPEN <number> Open connection to host whose number is give
@C Close TIP connection.
@D C E Device code extra padding, for terminals with a slow c
@D C A Device code ascii padding, to undo @D C E.
@E R Echo remote, prevents TIP from echoing.
@E A Echo all, allows TIP to echo.
@I L Insert linefeed after carriage returns.
@C I L Clear insert linefeed, nullify @I L
@T E 0 Enters one-character-at-a-time mode
@R Reset
@S A Y T Send Are You There, for those frustrating moments
when the system seems hung. If MC is "there" it
will answer "YES" (other systems may acknowledge
differently).
47
IX. Possible Problems Introduction to ITS
IX. Possible Problems
IX.A. Problems with your terminal
If the terminal is printing double or triple then it probably is
in half-duplex mode. If the terminal is capable of working in full
duplex then you should switch it to full duplex. If the terminal must
operate in half-duplex mode then the following procedure must be
performed. Type :TCTYP HALF followed by a carriage return. This will
prevent ITS from echoing (see VIII.A above). A note to people with
separate modems: your modem must also be set to full duplex. So if the
console is set to full duplex and things are still not right, check the
1
modem. If the terminal and modem are in full duplex mode and you are
getting still double printing, a good plan of action is to first type @E
R to cause the TIP to cease echoing, and then type :TCTYP followed by a
carriage return. If the type of terminal ITS thinks it is talking to
does not correspond to the type you have, then the appropriate :TCTYP
command should be selected from section VIII.A. If this fails to
improve the problem, see section VIII above for further suggestions.
If the terminal is apparently skipping characters, the TIP
command @T E 0 may help. This causes the TIP to transmit each character
separately (also slowly).
If your terminal does not line feed when the carriage return key
is struck, you may have to type a line feed after each carriage return.
VT100's should be set in "ascii" mode (local setup B) for use on
ITS. If you use a VT100 and its behavior is odd, check first that it is
not in "ansi" mode.
IX.B. Problems with the system
The problems you may encounter fall into two major categories:
1) your typing appears on the console, but the system either doesn't
respond or it gives you an error message, or 2) your typing does not
appear on the console, or you get a message such as ITS IS DOWN (if you
are on a dialup line) or HOST NOT RESPONDING or HOST DEAD (if you are
using a TIP)
_______________
1. A further anecdote: my own modem has its duplex switch next to the
on/off switch and both are on the back of the modem. I reach around to
the back of the modem to turn it off, and every so often I get the wrong
switch, which may not always be apparent until I log in again and suffer
from double echo. Now of course I KNOW that I have my console set to
full duplex... how the mighty are fallen.
48
Introduction to ITS IX. Possible Problems
IX.C. If Your Typing Appears
The fact that your typing appears indicates that the system is
still operating, so you should first make sure you know what program you
are in. A simple way to do this is to type ^Z and then :LISTJ (see
Section III.B). PEEK may also be used (see Section VI.C). If ^Z brings
no response, it may be that you are already at DDT level, but your DDT
is hung. Try ^G to unhang it. Sometimes the system will be heavily
loaded and the response will therefore be slow. Waiting a couple of
minutes and trying ^G again often works.
A common problem is characterized by the error message JOB?
This means that there is no current job, so the system can not execute
your commands such as :KILL or :CONTIN, which refer to the current job.
You will have no current job, of course, if you have not yet loaded one,
or under certain circumstances following error messages or ^G's to quit
out of certain commands. If you type :LISTJ you will see something like
this:
MACSYM P 15
*
Notice that the * which should be opposite the current job, is not. (If
you have no jobs, the only print out from :LISTJ will be *, of course).
The solution is once again fairly simple: type :JOB and then retype your
original command.
Another common problem, especially in the afternoons when the
system is loaded, is characterized by the message SYSTEM FULL?. When
this happens, it means that your attempt to start up a job was
unsuccessful because the system couldn't hold any more jobs. This is
usually a temporary phenomenon, so just waiting and trying again in a
minute or so will usually work. If you already have one job, and you
fail in loading a second, when you decide to go back to your original
job you may find yourself in the situation described in the previous
paragraph. Type :JOB, and all will be well.
Sometimes if a job which is running gets interrupted, for
instance your login init trying to run when the system is full, or a
MACSYMA SAVE command trying to write out to a directory which is full,
you will see the message :INPUSH. You can tell the job to continue from
this halt (if the cause was a full directory, you had best clean up your
files a bit, or if it is a USERSn directory, ask someone at MIT to clean
up the directory for you, first) by typing :INPOP<cr>.
Misspelling or other typographical errors will, of course, cause
problems. The response ?? at DDT level is not an error message, but
only a response to extra rubouts or extra ^Z's. It means that DDT is
waiting for you to type the next command. The error message ?U? means
that the system did not understand what you typed and ignored it. The
message OP? means that you typed a stray altmode (or one too few) in a
short form command. Sequences of apparently random numbers, e.g.
-137,,2640, are not error messages, but the contents of certain memory
locations which you have accidently opened for inspection. This happens
49
IX. Possible Problems Introduction to ITS
because DDT is also a debugging language, as well as a monitor for
program control. Certain keys, notably linefeed, uparrow, backarrow,
semi-colon and slash (there are others) are specially interpreted by
DDT. If you type one of these, under certain circumstances it will
print out what appears to be gibberish. This does no harm, but for
everyone's peace of mind do not type sequences of linefeeds to advance
your paper, for example. If you see some of these numbers (and
occasionally assembly language instructions such as MOVEI), just type a
carriage return, which will close the location, making it impossible for
you to accidently "write" anything into a random memory location. After
you have typed the carriage return, you are ready to retype whatever
command you had started before the numbers were printed out.
A syntactically correct but otherwise inoperable "command" (e.g.
one that is misspelled) will produce the message:
DSK:<login name>;TS <command> NON-EXISTENT...
which only means that the system was trying to locate a program called
whatever you typed. Retyping the command is all that need be done in
any of these cases (with due attention to spelling). If, in spite of
care with spelling and syntax, you are still not receiving the response
you expect, refer to section III.G for how to communicate with someone
in the Mathlab group who can help you.
If you feel you are hopelessly "lost" there is a program called
LUSER which will send a message requesting help for you. All you have
to do is type :LUSER (followed by a carriage return, of course).
If at any time you happen to receive the error message
DDT BUG, PLEASE DO :BUG DDT ....
it means that DDT has detected a bug in itself. You should tell the
systems programmers exactly what commands you gave, and what DDT's
response was. To do this type
:BUG DDT <your info> ^C
IX.D. If Your Typing Does Not Appear
If your typing does not appear on your console then either you
got disconnected or the computer has crashed. If the terminal or
dataset is equipped with a light indicating whether the connection is
still in force, check it. You can try typing ^_ (control-backarrow, as
for initiating links) followed by rubout (or delete), and if the system
does not respond ^_? then it is indeed down.
A TIP or Telnet Server will usually give some message indicating
that the host computer has crashed, e.g., HOST NOT RESPONDING or HOST
DEAD. Wait ten minutes and try to log in again. If you are not sure
50
Introduction to ITS IX. Possible Problems
who is dead, try @S A Y T (@Send Are You There). MC will say "YES" if
it is still up. If it doesn't answer "YES", then you should try to
connect again.
If you are on a dialup line, the system may type out ITS IS
DOWN. You need only wait and in ten or fifteen minutes the system will
either print the message MC ITS REVIVED! or the message MC ITS nnnn IN
OPERATION. In the former case, you can continue from where you left
off, and in the latter you must type ^Z and log in again. Note to 1200
baud users: When you are using a 1200 baud line, the "ITS IS DOWN"
message will print if the system crashes, but when it comes back up it
will not print "MC ITS .... IN OPERATION" but will print some random
garbage characters, usually a row of X's. This is because our 1200 baud
lines are actually variable speed lines, and when initialized after a
system crash do not seek the carrier at 1200 baud. You must then hang
up and dial again. It is worth while to remain connected until you see
the line of X's, however, so you know that the system is back up.
If, when you log back in after such a crash, you receive the
message --ATTACH YOUR DETACHED JOB--, it means that you were not logged
out by the system and can return to your job and continue from where you
were interrupted. The way to do this is very simple; just depress the
space bar once. This will set off a sequence of events which will
result in restoring the "detached job". The following sequence of
statements will be printed:
HACTRO$J! : $ REOWNED $
* :ATTACH
Notice that you do not type any of this; the system does it for you. At
this point you are right back where you were before the interruption.
If you are not sure where you were, type ^Z and then :LISTJ, as
described in Section III.B, above. Warning: do not type :ATTACH
yourself, without being VERY SURE you know what you are doing or you
will regret it!
Since network connections can on occasion be somewhat
unreliable, you may sometimes find your connection breaks. When you log
back in under these circumstances, the computer will not have crashed,
and your old jobs will still be there. There are two possibilities:
1. Your jobs were detached and you get the --ATTACH YOUR DETACHED
JOB?--message. In this case proceed as above.
2. When you type :LOGIN <login name>, the system types back <login
name>$0U <login name>$$^S. This means that while your connection
was broken, you were not detached. At this point you are logged in
twice. To get back to your previous jobs you say
:REATTACH <login name>/K
and your previous jobs will be attached to your current console.
Occasionally when you attempt to answer the --ATTACH YOUR DETACHED JOB?-
51
IX. Possible Problems Introduction to ITS
-message, you may be unable to type a space, or you might not want to
type a space. You may be unable to type a space if your phone
connection is very noisy and a spurious character is transmitted before
you hit the space bar. You might not want to attach your detached job
immediately if you have an INIT which initializes your line to some
particular terminal type (in that case you want to run your LOGIN INIT
file before recovering your jobs). In any case, having typed (or had
typed for you by the phone line) a <carriage return> or other character,
you will see the message
LEFT DETACHED?
You may still reclaim your old job, however. When you are ready to do
so, proceed as in case 2 above, i.e. type
:REATTACH <login name>/K
If after trying all these things, you are still having trouble do not
hesitiate to contact someone in the Mathlab group.
52
DDT Command Index
Index of DDT Commands
Entries in bold face type refer to most complete explanation.
Command Short form Function
:? lists DDT commands 18
:A A^K loads MACSYMA, 6
:CONTIN $P re-enter a job, 11
:CONTINUE re-enter a job, 12, 13
:COPY copies specified file 23
:DELETE ^O deletes a file 24
:DETACH disconnects but keeps jobs 13
:DISOWN disowns current job 13
:FIND locates files 24
:HSNAME finds your home directory 20
:INQUIR registers Users 8
:JOB $J selects job, 12, 13
:KILL $^X. kills current job, 12
:LISTF ^F lists a directory 21
:LISTJ $$V lists your jobs, 11, 49
:LOGIN $U logs you into system, 6
:LOGOUT $$U logs you out of system, 7
:MACSYM MACSYM^K loads MACSYMA, 6, 10
:MAIL sends mail 14
:MAIL MACSYM sends MACSYMA Mail 18
:MOVE moves a file 23
:NAME NAME^K loads NAME 36
:P P^K loads PEEK 36
:PEEK PEEK^K loads PEEK 36
:PEEK J P^KJ loads PEEK 37
:PRINT ^R prints out a file 24
:PRMAIL prints out Mail 17
:PRMAIL MACSYM prints out MACSYMA Mail 18
:PROCEED ^P leaves a job running, 11
:PRSENDS Prints out messages sent to you 16
:RENAME renames a file 23
:SEND sends one-way message 14
:SHOUT sends message to all logged in users 17
:T T^K loads TECO 27
:TCTYP adjusts line to your console, 40, 48
:TCTYP HELP explains :TCTYP, 40
:TCTYP HALF for half-duplex consoles, 48
:TCTYP STANDARDIZE standardizes altmode, 10
:TEACHE Starts EMACS tutorial 27
:TEACHM Starts MACSYMA Primer 7
:TECO TECO^K loads TECO 27
:TIME TIME^K gives current time 37
:USERS lists current users 14
:WHOIS WHOIS^K loads WHOIS 36
^C terminates messages 14
^D aborts type-in of a command, 13
^G stops execution of a command, 13
^H selects and re-enters job 12
53
DDT Command Index
^S stops printout, 13, 13
^X defaults the first file name 25
^Y defaults second file name 25
^Z gets you to system command level 10, 11, 49
^_C initiate two-way communication 15
^_N terminates two way communication 15
54
General Index
Index
<login name>$$^F 23 Filing 30
FIND 24
:INPOP 49
:INPUSH 49 Grim File Reaper 22, 31
GT40 40
@S A Y T 51
HACTRN 10
account 3 half-duplex mode 48
account application 3 Hazeltine 41
ADM3 41 home directory 20
altmode 9 HOST DEAD 48, 50
Altmode 10 HOST NOT RESPONDING 48, 50
altmode 25 host number 4
APROPOS(string); 7 HP2640 40
assistance 14
IMLAC 40
BACKUP TAPE 21 INFO 39
BUG-CRTSTY 41 INIT 8
INQUIR 3, 8
check on your status 36 INQUIR entry 8
Concept 100 41 interrupt message 11
Control characters 6 ITS IS DOWN 48, 51
Control Data Corporation 713 41
control-backarrow 15, 41 JOB? 49
control-underscore 15 jobs 11
control-uparrow 41
CRTSTY 41 keyboard 41
Datamedia 41 line length 40
DATAPOINT 40 list a directory 31
DDT commands 10 listing of a file 24
defaults 25 login name 3
DEMO directory 38 LUSER 50
DESCRIBE(command); 7
dialup line 3, 48, 51 MACSYMA mail 18
Dialup protocol 5 MAIL 14, 17
directories 20, 24, 30 Manual 1
, 30 Messages 17
disowned job 13, 37 MIT-MC 4
monitor 10
echoing 48
editing commands 29 NAME 36
EMACS 27, 27
error messages 49 octal value of any character 42
escape 10 OCTPUS 42
EXAMPLE(command); 7 OMRON 40
EXECUPORT 40 on-line PRIMER 6
OPTIONS(); 7
FILE NOT FOUND message 38
FILE-RETRIEVE 22 PADCR 40
Files 20 padding 40
55
General Index
PADLF 40
PADTAB 40
PAGESIZE 40
password 3
PEEK 36
Perkins Elmer FOX 41
Primer 1
PRIMER(); 6
printing double 48
PRMAIL 17
problems 48
PRSENDS 16
Query mode 15
question marks 18
Quit commands 13
REATTACH 51
rename a file 23
RMAIL 18
SEND(); 7
SENDS 16
SHARE directory 38
SHOUT 17
skipping characters 48
SYSTEM FULL? 49
TECO 27
TEKTRONIX 40
TELETYPE 40
Terminal Interface Processor 3
terminal types 40
TERMINET 40
TI keyboard 41
TIME 37
TIP 3, 7, 36, 40, 48, 50
TIP protocol 5
TISILENT 40
update file 18
USER-ACCOUNTS 3
USERSn directory 22, 24
USERSi directory 30, 31
VT100 48
VT52 40
WHOIS 36
56