PROJECT ATHENA NEWSLETTER JANUARY 7, 1985 VOLUME 2, NO. 1 Copyright (C) 1985 Massachusetts Institute of Technology EDITORIAL POLICY The Project Athena Newsletter is the official publication of Project Athena, a five-year experiment in the use of computer technologies to improve the education of students at the Massachusetts Institute of Technology. The Newsletter prints articles of interest to members of the MIT community who participate, or who are interested, in the Project. These articles present the general purpose, philosophy, technical development, and direction of Project Athena, and specific news items about Project Athena facilities and projects. We encourage article submissions from the community and publish appropriate contributions whenever possible. If you have any comments or questions on the newsletter-- Contact: Will Doherty Editor Project Athena Newsletter MIT E40-426 Cambridge, MA 02139 (617)253-0110 PROJECT ATHENA NEWSLETTER JANUARY 7, 1985 VOLUME 2, NO. 1 1 January Release Update Linda Merims, Documentation Specialist The December 1984 issue of the Athena Newsletter contained a large article describing some changes that we will make to the Athena system, cluster-by-cluster, during the period from January 2 to January 10. This article updates the information in that Newsletter and recaps its major points. For more information, see the December issue of the Project Athena Newsletter. (Old issues of the Athena Newsletter are usually available in the clusters, or online in the directory /usr/doc/newsletter.) 1.1 Emacs on VT125, Pro350, and VT240 Graphics Terminals Emacs will behave slightly differently on all Athena VT125, Pro350, and VT240 graphics terminals. Over half of Athena's terminals fall into this category, so most users will see this change. The IBM PC, VT220, and VS100 (VAXstation 100) terminals will not be affected. First, when you start Emacs up on a VT125, Pro350, or VT240 terminal, it will print the following warning: You cannot type CTRL-S on this terminal while in Emacs. If you do, your terminal will seem to freeze. Type CTRL-Q to unfreeze it. For the Emacs commands that have CTRL-S and CTRL-Q in them, use the substitutes posted on the terminal. For example, to search, use CTRL-T instead of CTRL-S. To see a list of these differences online, type: CTRL-? K Press the SPACEBAR to continue. ---------------------------- Outside of CTRL-? K, not all of Emacs's online documentation will reflect the changes listed below. We have to modify the way that Emacs help works before it will be accurate. The Emacs commands that contain CTRL-S and CTRL-Q characters in their names have been changed on VT125, Pro350, and VT240 terminals to these equivalents: Old New CTRL-S CTRL-T or CTRL-C S (Incremental Search) CTRL-Q CTRL-C Q (Quoted Insert) CTRL-T ESC-O J (Transpose Characters) CTRL-X CTRL-S CTRL-C CTRL-I (Save File) CTRL-X CTRL-Q CTRL-C CTRL-P (Set File Read Only) CTRL-^ CTRL-Q ESC-XQ Register to Point (Q-Register to Point) CTRL-C CTRL-Q ESC-XQuoted Meta Insert (Quoted Meta Insert) CTRL-C S CTRL-C CTRL-B (Emacs Statistics) CTRL-ESC-S CTRL-C CTRL-E (Regular Expression Search) CTRL-ESC-Q CTRL-C CTRL-H (Indent Sexp) Emacs behavior has changed because: - Graphics terminals interpret CTRL-S and CTRL-Q as flow control characters instead of passing them through to Emacs. - Athena is turning CTRL-S CTRL-Q flow control on all over its network. (The December Newsletter explains this in greater detail.) - Athena is reconverting most of its VT100 terminals back into VT125 graphics terminals, in response to the requests for more graphics terminals from most courses using Athena. For those who care about the mechanics of this change: The factor that will actually cause Emacs to rebind its CTRL-S and CTRL-Q commands and produce the warning message is whether the NXON (need X-ON) parameter is set for that particular terminal type in the TERMCAP environment variable. (The TERMCAP variable gets its information from the /etc/termcap file. If the TERMCAP varible is not set, /etc/termcap will be referred to instead.) Emacs will always check TERMCAP for this setting when it starts up. NXON is set for terminal type VT125. (It may be set for other, unsupported terminals as well.) All hardwired Athena VT125, Pro350, and VT240 terminals have been set to have a default TERM variable of VT125 in the /etc/ttys file that defines all default terminal types. 1.2 Scribe Old Scribe 3C Athena will make the new Scribe Version 4 the default version invoked by the scribe command. The old Version 3C Scribe will still be available if you need it. However, it will not be invoked by typing /usr/athena/old/scribe/scribe as announced in the December Newsletter. Instead, you should access the old version of Scribe by saying: /usr/old/scribe/scribe Different Default Device In the December Newsletter, we stated that we would change the default Scribe output device to a new device, named ln01, that had page dimensions better-suited to the 8 1/2 x 11 page size of Athena's default printer. We also said that the output files that Scribe produced for this new device would have a filename extension type of .ln0. We still changed the default Scribe output device to a new device with these better page dimensions. However, the name of the new default device is: lptln not ln01. The name is derived from the fact that this is the Athena ``ln'' printer (as in lpr -P ln) version of the standard Scribe lpt device. We abandoned the device name ln01 because Scribe plans to install its own ln01 device at a later time. Output files from this lptln device type have filename extension types of .lpt, not .ln0. This is the same filename type that Scribe currently assigns files produced for the default output device. (Scribe always needs to know what type of output device it is formatting text for. You specify the device explicitly by inserting an @device(devicename) at the beginning of the file you are formatting. For example, @device(lptln) will explicitly specify the new default device included in the January release, while @device(lpt) specifies the old default device. Scribe uses the default device type when you don't specify a device in the file you are formatting.) 1.3 Recap of Major Changes in the January Release - If you hang up the phone while dialed-in to an Athena machine, you will automatically be logged out. - We installed RS/1, the electronic laboratory notebook. RS/1 manuals, including a sixty-cent reference card, are for sale in the IS Publications Office (11-209). Reference copies are available in the terminal room documentation racks. - There is a new version of the Emacs text editor with minor improvements. People with .emacs_keys and .emacs_vars files must remove all ^R's from their command definitions. - There is a new default Scribe, Version 4. This Scribe demands that your input files have a dot in their filename. You should rename all your Scribe input files to have a .mss suffix, e.g., myfile.mss. There is a new default output device, lptln, replacing the current lpt, with slightly different page dimensions, including a few blank lines before the page number. Old page dimensions can be retained by including an @device(lpt) command in your input file. - There is a new version of the Franz Lisp interpreter with two new functions emacs and emacsl, that make it easier to shift between the interpreter and the editor. - A new version of Penplot with a QPICTR routine that lets you draw annotated two-dimensional graphs is available. Penplot manuals are for sale at the IS Publications Office (11-209). - Mh mail will not automatically copy everyone on the Cc: list when you reply to a message, unless you type repl -ccall. - The clear command will selectively clear just text or graphics or both (default). See the new man page for clear. - There is a new interactive spelling checker program, ispell. See the man page for ispell. - The SPMS (Software Project Management System) has been removed because of the system overhead it generates although nobody uses it. 2 Password Coherence On January 25, 1985, Athena will change the way the system handles passwords. This change will affect everyone who has an Athena account on more than one Athena machine. In the past, each Athena account on each machine was independent of any other account you might have on a different Athena machine, even though they had the same username. If you changed your password on one machine, it wouldn't change your password for any other account. People tended to neglect to change their passwords ``everywhere'' because of the chore it represented, making their accounts more vulnerable to theft. The new method of handling passwords should improve the security of the system. Beginning January 25, if you change the password for a username on any Athena machine, your password for that username will change on all Athena machines on which you have accounts. After you make the initial password change on one machine, expect a lag before passwords on the rest of the machines come into line. Updates on the rest of the machines will occur about 5:15 p.m. and 1:15 a.m. daily, although this may not happen with absolute regularity. When we do this one-time conversion on January 25, we will pick the password for your account on the Athena machine whose name occurs first in alphabetical order and use it as your password for all your accounts with the same username on all Athena machines. So, if you have two accounts with username me, one on ares and one on atlas, both the me account on ares and on atlas will get the password that was on ares. If you have two different usernames (me and metoo, for example), and you change the password for one, the other will not be affected. Students with fall '84 course accounts: Your old course account will become inactive by January 18, so you don't have to worry about passwords from these inactive accounts interfering with the password for your new account on the W20 cluster in the Student Center Library. If you cannot log in to your account because of the change in the password system, call (25)3-1548. For any other account problems, contact your Account Administrator. 3 Using NAG on Athena Jennifer Pinkus, Applications Consultant The NAG library is a comprehensive collection of algorithms for solutions of numerical problems--everything from matrix manipulation to solutions of partial differential equations. The library is written in Fortran, but you can also call its routines from C and Pascal. For information on how to use NAG, please refer to the NAG manuals in the Athena terminal rooms, or ask the student consultants for help. There is one trick to using the NAG library on Athena. The documentation for NAG routines often warns: NOTE: before using this routine, please read the appropriate implementation document to check the interpretation of bold italicised terms and other implementation-dependent details. Usually the ``bold italicised term'' (English spelling) is real, shown in declaration statements in example programs, and in the description of arguments to NAG routines. The Athena implementation of the NAG library is double precision. Therefore, in your program, you must declare all arguments described as real in the manuals, as ``double precision'' in Fortran (or ``double'' if you are programming in C), for the routine to work correctly. Double precision variables use twice as much storage space (8 bytes) as real variables, and thus can store larger numbers and more decimal places. So remember, if you have problems with NAG routines, check your variable declarations. 4 Consultant's Corner: Job Control Win Treese, Student Consultant Staff If you type in a program or a document using Emacs, and you need to look up something in one of the UNIX manual pages, you could save your file, exit Emacs, check the manual, and start up Emacs again. But UNIX provides a facility called job control for suspending the execution of a program. Job control is an easy way to stop a process, or program, in the middle, do something else, and later return to your original process. With the exception of Emacs and a few infrequently used programs, the way to stop a program is to type CTRL-Z (which UNIX often indicates on the screen as ^Z). The C shell will then print ``Stopped'' and a prompt, as in (what you type is shown here in bold face): % cat hello.c This is the first part of the program. ^Z Stopped % Now you can do something else, like examining a man page. Then you can return to execution of the command cat hello.c. If you type fg, for ``foreground'', the program will continue where it left off. The ``foreground'' process is the current process, the process that has control of your terminal. For example: % fg This is the second part of the program. % Emacs does not stop when you type CTRL-Z. To stop Emacs, type CTRL-C CTRL-Z: % emacs myfile { Emacs starts up, and you stop it with CTRL-C CTRL-Z } Stopped Emacs is different because it uses the CTRL-Z key to indicate a combination of the CTRL and ESCAPE (or META) keys. UNIX also supports ``background'' processes. A background process is a program that runs, but doesn't interact directly with the terminal. For example, if you analyze some laboratory data using a program myprog that puts its output into a file, you could run it in the background so you could work on something else while it runs. To start a process in the background, type a space and an ``&'' at the end of the command line. For example, if you type: % myprog myreport & [1] 8218 % you would run the program myprog, taking input from the file mydata and directing output to the file myreport, the program running entirely as a background process. The number in brackets on the next line is the job number of the process you put in the background. The second number is the process ID, which identifies the process to the system. If you wish to put a running program into the background, stop it with CTRL-Z, then type bg (for ``background''). A typical session might look like: % myprog myreport ^Z Stopped % bg [2] myprog myreport & % The output from bg contains the job number in brackets and the command line that started the job. Now myprog will run in the background, and you can work on something else. When myprog is finished, the shell will print a message like: [2] Done myprog < mydata > myreport on your terminal. It doesn't report back until the program is finished and the system is ready to print a prompt on your screen. Note: A background job does not stop running when you log out. Either it will run until completion or it will abort when it needs input or output access to the terminal. To get rid of unwanted background jobs, see the final portion of this article describing the kill and ps commands. To see what processes you have in the background, including both stopped and running jobs, use the jobs command. With the examples above, if you had typed jobs while job number 2 was running, you would have seen: % jobs [1] - Stopped emacs myfile [2] + Running myprog < mydata > myreport The number in brackets is the job number, the ``+'' means that myprog is the current job (that is, the one that comes into the foreground if you type fg), ``-'' means that Emacs is also (one step further) in the background, and ``Stopped'' or ``Running'' indicates whether or not the process is running. To get back into myprog, you could type fg. If it is not the current job, however, you could type fg %n where n is the job number, for example: fg %1 The Emacs you put in the background will restart as it is job number 1. Another alternative is the command: fg %emacs in which you type a percent sign followed by the name of the job you want to bring into the foreground. You can shorten the command line by using abbreviated job descriptors. All you need to type is enough to specify uniquely the name of the command; in this case fg %e would be sufficient. (In fact, you could type just %n where n is the job number, or just %e, to bring the process into the foreground; the ``fg'' portion of the command line is not necessary.) You can also put a stopped process into the background by typing bg and one of the abbreviated job descriptors described above. Now, suppose that a process running in the background needs to print something on your terminal or get input from the terminal. In this case, the program will stop automatically and notify you with a message like: [2] + Stopped (tty input) myprog < mydata > myreport In order for myprog to continue, you must bring it into the foreground and provide the input it wants. These comments also apply to a program that wants to print on the terminal -- you must bring it into the foreground so it can print on the terminal, then you may return it to the background to continue its work if you wish. To get rid of a process that is stopped or running in the background, you can use the command kill. There are two forms of kill: one that takes arguments like fg, including abbreviated job descriptors, and one that takes a process ID. Thus, to kill myprog, you could type: % kill %2 or % kill 8218 You will see: [2] Terminated analyze < mydata > myfile % In the second example, ``8218'' is the process ID that was given above. In general, to find a process ID, you can use the jobs -l command for stopped and background jobs, or you can use the ps command to find the process ID's for all of your processes. See the UNIX manual page for more information about ps. 5 Newsletter Deadlines The deadline for submission of articles and article ideas for the February 4, 1985 issue is 5pm on Monday, January 14. The deadline for submission of articles and article ideas for the March 4, 1985 issue is 5pm on Monday, February 11. Table of Contents 1 January Release Update 1.1 Emacs on VT125, Pro350, and VT240 Graphics Terminals 1.2 Scribe 1.3 Recap of Major Changes in the January Release 2 Password Coherence 3 Using NAG on Athena 4 Consultant's Corner: Job Control 5 Newsletter Deadlines