STANFORD ARTIFICIAL INTELLIGENCE LABORATORY December 1973

OPERATING; NOTE 54.3

MONITOR COMMAND MANUAL

STANFORD ARTIFICIAL INTELLIGENCE LABORATORY December 1973

OPERATING NOTE 54.3

MONITOR COMMAND MANUAL

by Brian Harvey

ABSTRACT

This document describes the monitor commands available to users of the Stanford Artificial Intelligence Laboratory timesharing system, and the use of the terminals connected to this system. The first section is an introduction to the system for new users. Several appendices are included containing documentation of commonly used system programs. This manual supersedes SAILON 54.2 by Andy Moorer (Monitor Manual, Chapter 1).

This work was supported by the Advanced Research Projects Agency of the Office of the Secretary of Defense under contract DAHC15-73-C-0435.

ACKNOWLEDGMENTS

Several sections of this document were excerpted from program documentation written by others. Contributors include Ralph Gorin (RPG, SPOOL, DART), Dick Helliwell (COPY, DO, ZERO), Andy Moorer (TELNET), Dan Swmehart (FTP), Larry Tesler (FIND), Jim Stein (RSL), and Bo Eross (FIXIML). John McCarthy wrote the Introduction to Timesharing section. Martin Frost and Fred Wright provided invaluable technical assistance in publishing the manual, and Ralph Gorin, Brian McCune, and Fred Wright edited and corrected the draft versions. This document was produced on the Xerox Graphics Printer using the PUB program written by Larry Tesler and improved by Rich Johnsson and Tovar.

CONTENTS i TABLE OF CONTENTS

SECTION PAGE

1 INTRODUCTION FOR NEW USERS 1

1.1 Introduction to Timesharing 1

1.2 Timesharing at the AI Lab 2

1.3 Introduction to Terminals 4

1.4 Typing Commands to the Monitor 5

1.5 File Storage 6

1.6 LOGIN and KJOB Commands 8

1.7 Editing Commands 9

1.8 Commands for Compiling and Running Programs 10

1.9 Information Commands 11

1.10 Programs and Core Images 11

2 DISPLAY TERMINALS 12

2.1 Keyboards 12

2.2 The Line Editor 13

2.3 Line Editor Activation 15

2.4 ESCAPE and BREAK Commands 16

2.5 The WHO Line 17

2.6 Page Printer Control 18

2.7 Data Disc Control 19

2.8 III Control 20

2.9 Audio Switch Control 21

3 TELETYPES 22

4 BASIC MONITOR COMMANDS 23

4.1 Running Programs 23

4.2 Manipulating Core Images . . . ; . . 24

4.3 Starting Programs 24

4.4 Detached Jobs . 25

4.5 Device Control 26

4.6 System Information ..... . . . . 27

4.7 Miscellaneous Commands 29

ii CONTENTS

SYSTEM PROGRAM COMMANDS 30

5.1 LOGIN 30

5.2 LOGOUT 32

5.3 RFC 33

5.4 COPY and SPOOL 34

5.5 MAIL 35

5.6 DART 35

5.7 DO 36

5.8 ZERO 36

5.9 WHO 37

5.10 FIND 38

5.11 Other System Information Programs 40

5.12 Miscellaneous System Programs 40

PRIVILEGED COMMANDS 42

APPENDICES

1 RPG 43

2 COPY 56

3 SPOOL 65

4 MAIL 70

5 DART 78

6 SERVICE LEVEL SYSTEM (RSL) 80

7 FIXIMLAC 85

8 ARPA NETWORK 86

9 CARE AND FEEDING OF DEVICES 95

10 RELOADING THE SYSTEM 101

11 MONITOR ERROR MESSAGES 102

12 BIBLIOGRAPHY 115

CONTENTS iii

13 STANFORD CHARACTER SET 116

14 MONITOR COMMAND SUMMARY 117

Introduction 1

SECTION 1 INTRODUCTION FOR NEW USERS

This manual describes the monitor commands used in the PDF- 10 computer system at the Stanford Artificial Intelligence Laboratory. The first section is an introduction for new users, including brief explanations of terminals, file storage, and some of the essential monitor commands. The computer is operated exclusively as a timesharing system, and the section begins with an introduction to timesharing.

1.1 Introduction to Timesharing

A timesharing computer system includes the computer itself (in our case a PDP-10 computer made by the Digital Equipment Corporation), user terminals for input to and output from the computer (in our case about 60 keyboard and display terminals), and a file system that keeps programs, data tor the programs, reports, and other data for the users.

The basic idea of timesharing is to allow each user to behave as though he had a computer to himself controlled from his terminal. This is accomplished by having the computer cycle its attention among the users wanting service in rotation. It does this fast enough so that small requests are serviced in a time that ranges from a small fraction of a second to a few seconds, depending on the number of people demanding service at that instant. If the desired computation is long, the computer will do a bit of it, then service other people, then return to it, and so on until the computation is done. The time taken will depend on the size of the computation and how busy the machine is.

At any time the user's terminal is interacting with some program. These programs include the timesharing monitor; editors used to prepare programs, documents, reports and other data; various utility programs; and the user's own programs.

When you first sit down at a terminal, you will be interacting with the monitor, and you can always get back to the monitor by pressing the CALL key on the terminal. The first thing you have to do is to hg in, which tells the monitor who you are so it can connect you to the file directory that contains your files and can do its accounting. The last thing you do is log out so that the terminal and other resources you have been occupying can be used by someone else.

You will have a certain quota of disk space and will be able to keep files such as programs between uses of the computer. Therefore, you will not ordinarily need any external form of storage such as punched cards or magnetic tape. (Our computer doesn't even have punched card equipment.)

A user gets service from programs by typing commands to the monitor. Some monitor commands perform the service and leave you again talking to the monitor. Others cause a program to be started; thereafter, you have to interact with that program in the way prescribed by it. When you are done with it, you go back to the monitor.

2 Introduction 1.1

Your program also gets service from the monitor by means of special instructions, called UUOs, used in the program. The monitor provides many different services as a sort of subroutine of your program; most importantly, it is responsible for allocating resources, like core storage and input/output devices, among different jobs. Therefore, input and output must be done through the monitor to avoid conflicts. These UUOs are documented in their own manual; this one is about the commands you type at your terminal.

A typical task is to write a program in some computer language such as SAIL (our dialect of ALGOL) or LISP and then debug the program by running it, checking the results, and changing it until it gives the right answers. This is accomplished in the following steps:

1. First you run an editor. (We have several, but the current favorite is called E.) The editor reads whatever you type and displays it; what you type becomes the text of the program you are writing. However, the editor gives you convenient facilities for going back in your text and making changes that you think of as you go along. Most people don't write their programs on paper, but make them up as they use the editor. When the program is ready to try, you exit from the editor back to the monitor, and your program is a file on the disk with a name you have given it. At any time, you can re-edit this file to make changes in it. You can also print it on the line printer to take a copy home, and when you don't need it any more you can delete it.

2. Normally, the next step is to call a compiler to translate the program from a source language into machine language, call the loader to load it into your core image, and finally ask the computer to run it. You can do these things as separate operations, but facilities are provided for initiating all of this with a single command.

?. When the computer runs your program, it may just produce answers and stop. If you like the answers, perhaps you are done. Otherwise, you go back to the editor to make changes in the source fife and try again. On the other hand, you may have written an interactive program which expects you to type input on the terminal. It interprets your input and gives output, then asks for more input, etc. Your program may read files and write them. It may display pictures on your terminal. Also, it may interact with the physical world by reading pictures from one of the TV cameras attached to the computer and by waving the mechanical arm.

4. In order to debug a program, you may have to do more than just look at the output. Therefore, the timesharing system has facilities for examining and changing the contents of registers and for putting break-points in programs.

1.2 Timesharing at the AI Lab

Our timesharing system runs on a Digital Equipment Corporation (DEC) PDF- 10 computer. This is a 36-bit machine designed for timesharing applications, with 262,000 words of core storage. Our timesharing system, derived from old DEC software, has been extensively modified for our special requirements.

Programming languages available here include SAIL, a version of ALGOL with added features for backtracking, list processing, associative processing, and coroutining; several versions of LISP; FAIL, our POP- 10 assembly language; and the MICRO-PLANNER problem solving language.

1.2 Timesharing at the AI Lab 3

To use the computer, you must type a LOGIN command at your terminal. (See Section 1.6 for a description of this command.) The monitor assigns you a job number, which it uses internally to keep track of you. Associated with your job are various resources, of which the most important is the core image, i.e., the simulated core storage maintained for you by the monitor so that your program can use addresses starting from zero although it may really be located anywhere in core while running'. Your job only has one core image; if you type a monitor command which causes a program to be run, that program replaces your old core image. There is no way for one job to run two programs at once.

As a user of the Stanford AI Lab system, you will be given a programmer name to identify you to the computer. The main reason for this is so that the monitor knows which files on the disk storage belong to you. This name will probably be your initials. When you log in, you must type in this name, along with a project name which may identify what project you are working on. For example, if you are doing homework for a Computer Science course, the course number might be your project name. The combination is called a project-programmer name or PPN and is typed PRJ.PRG or sometimes [PRJ.PRG] when used in a file specification. Project "I" is a popular name with no special meaning.

Ours is just about the most heavily used computer we know of. It's hard to get good service, especially weekday afternoons. Therefore, please be careful about leaving jobs logged in when you leave, and don't play Spacewar during the day! Even a job which is not running uses up scarce resources.

Sometimes the system stops working while you are using it. You will notice that characters you type no longer appear on your terminal. In many cases, the system fixes itself after a few seconds, so all that happens is that a few characters you typed are lost. Otherwise, someone has to go fix it manually. Sometimes they can get it working again so that you can just continue with what you were doing. Other times, they have to load a new copy of the system, and you have to start over again. This is called reloading. If this happens, you will see a message to that effect on your terminal. (It is a good idea, when editing a long file, to save it on the disk every so often in case of a system crash.) If the system crashes and nobody is around to fix it, you may have to reload it yourself. See Appendix 10 to find out how.

Sometimes the system is stopped intentionally for software or hardware maintenance This downtime is scheduled in advance, and part of the system messages you see when you log in is a maintenance schedule. Some time before the system is taken down for scheduled maintenance, you will see a warning on your terminal which counts down to the end. This warns you to ?ave any files you are writing and stop what you are doing. Such maintenance is often scheduled between 5 and 7 weekday evenings.

This document, the Monitor Command Manual, describes the use of monitor commands typed in at terminals. Another manual describes the UUOs, instructions used by programs to communicate with the monitor. Other system information, including documentation of specific system programs, can be found in some printed manuals and on the disk; look at the [S.DOC] and [UP, DOC] file directories for program documentation. Some system programs, which are invoked by special monitor commands, are written up in appendices to this manual. Most of these appendices are derived from [UP, DOC] files; the latter are updated more frequently than this manual and should be considered the primary reference for those programs.

Introduction 1.3

1.3 Introduction to Terminals

Most terminals on this system are display terminals; the characters you type appear on a display screen. There are also a few Teletypes, which use paper, and do not have the full character set of our displays. Teletypes are rarely used here, although there are a few on campus connected to our

system.

There are two kinds of display terminals in use at the lab, Data Discs and Ills ("triple-I"). They use the same keyboards, but have different display screens. The Data Discs, which are more numerous (about 60 of them), use TV monitors. (The name Data Disc actually refers not to the terminals themselves, but to the machine in the computer room which controls them.) The six Ills are vector plotting displays, used mainly for graphics display programs like Spacewar. Unless you are writing a display program, the difference is not too important except that the character set on the Ills is less legible than that on the Data Discs.

A vacant terminal should say TAKE ME, I'M YOURS on. an otherwise blank screen. If it's completely blank, make sure it's turned on, and that the brightness and contrast (intensity on Ills) are turned up. If it says NO DATA DISK CHANNELS LEFT, it means that the Data Disc, which can run only 31 terminals at once, is full. A free terminal is called available because the message used to say THIS CONSOLE AVAILABLE until Dick got to it.

Each of the printing character keys on our terminals has two characters printed on it (except the 0 key). The bottom one is usually a letter or digit, and the top one is some special character. There are two SHIFT keys and a SHIFT LOCK key, which make letters upper case. The keys which produce the special characters are labelled TOP. For example, hitting the "<D" key alone produces lower case "d"; also holding down SHIFT produces capital "D"; and holding down the TOP key makes it produce "<" (SHIFT and TOP together is interpreted as TOP).

When you type something on an available terminal, the available message is replaced by whatever you typed. The characters you type are kept in a special buffer called your line editor until you activate them by typing RETURN or a few other special characters. The line editor allows you to change the contents of the line by using special editing command characters. The characters in the line editor are displayed on the screen with two cursors: underlines on Data Discs and triangles on Ills. The left cursor is underneath the first character in the. line editor; the right cursor is under the place where the next character you type will go (generally the end of the line). When your line editor is empty, the cursors coincide. The line editor commands are explained in Section 2.2. Note: when you type RETURN, the monitor generally supplies a LINE character automatically. RETURN signifies a return to the left margin, and LINE an advance to the next line.

To get you started using display terminals before you read about all the line editor commands, all you need to remember is that the BS key will delete the last character, and the CLEAR key will delete the entire line. The CONTROL and META keys are used for other line editor functions.

When you are done with a terminal, be sure to log it out. Also, don't leave anything in the line editor-type RETURN before you leave if you're not sure. Your Data Disc channel will be made available soon after you log out, but not if there is anything in the line editor.

A note on terminology: In the body of this manual, characters are referred to by the name printed

1.3 Introduction to Terminals

on the keyboard, e.g., RETURN and FORM. In other documentation, including some of the

appendices to this manual, different notations are used. Some of these are shown here:

function key other notation

break BREAK <BRK> [BRK]

escape ESC <ESC> [ESC] <ESCAPE>

call CALL <CALL> [CALL] TC

clear CLEAR [CLEAR] TU

tab TAB <TAB> [TAB] <HT>

form feed FORM <FORM> [FORM] <FF> ±

vertical tab VT <VT> /

backspace BS <BS> [BS]

carnage return RETURN [RETURN] <CR> CR

line feed LINE <LF> LF <L1NEFEED>

shift SHIFT <SHIFT>

top TOP <TOP>

alt mode ALT <ALT> <ALTMODE> 8

meta META <META> (3 ±

control CONTROL <CONTROL> <CTRL> a /

The combination of RETURN and LINE (remember that LINE is supplied by the monitor) is sometimes referred to as CRLF.

1.4 Typing Commands to the Monitor

What you type may be read by different programs at different times, so you should be aware of what program you're talking to. When you first type on a vacant terminal, you are talking to the monitor's command decoder. You continue to talk to the monitor until you start running a program; then you're generally talking to that program. To distinguish these, the state of the terminal is described as monitor mode or user mode. When the monitor is ready to read a command from your terminal, it types a period. System programs which you run, like compilers and editors, generally type an asterisk when they are ready for a command.

It is possible to type ahead when the system is not waiting for typein. Characters you type which are not immediately read by either the monitor or a program are stored in your terminal's input buffer until they are needed. Programs can cause this buffer to be cleared. For example, some programs ask for confirmation of certain commands, e.g., when you specify for output a filename which already exists. Some such programs clear your input buffer first and others don't, so you can get confused by typing ahead to a program whose behavior you don't expect. Your input buffer is also cleared when you type CALL. _ .

Monitor commands consist of the command name, possibly followed by arguments separated by spaces or punctuation, and then a RETURN. The command may be typed using upper and lower case letters interchangeably. Monitor command names may be typed in completely, or they may be abbreviated to only as many letters as are necessary to make the name unique; for example, the

Introduction 1.4

LOAD command may be abbreviated LOA, but not LO because there is also a LOGIN command. A few common commands have single-letter abbreviations (L is accepted to mean LOGIN). Only the first six letters of a command name are relevant.

Some monitor commands are completely processed by the monitor, without running a program in your cote image. For example, the DAYTIME command types the current date and time, without disturbing your core image. Most commands, however, require a program to be run. The monitor usually requires you to log in before you may run programs; there are a few exceptions, to permit system information programs like WHO, and of course the LOGIN program itself. If, when not logged in, you try to run a program which requires you to be logged in, the monitor automatically tuns LOGIN, which will ask you for your project-programmer name. In this situation, when LOGIN finishes running, it will re-enter the command which you typed in the first place, so the command will be performed without making you retype it. Commands which require login but which refer to a pre-existing core image rather than starting a new program (e.g., START) do not cause this automatic login, but give an error message.

When you first enter a command which runs a program, the system assigns you a job number and types a line like

JOB 19 Stanford 6.13/F 8-15-73

which tells you what version of the monitor is running and when it was created, as well as your job number. (If it types

JOB CAPACITY EXCEEDED

too many jobs are already logged in.) When a program like WHO is run without logging in, the job is killed when the program exits. The LOGIN program, however, leaves you logged in when it exits.

Some of the monitor commands are briefly described starting in Section 1.6. The full descriptions of all the commands are in Sections 4 and 5, and in the appendices. Appendix 14 is a summary of the commands for quick reference.

1.5 File Storage

A file is a stored collection of information, perhaps a program or data. Most files are stored on a permanently available disk unit. Files on the disk must be identified by name and by owner so that you can get at the one you want. Files on other devices may also be used; we have magnetic tape, DECtape (a small mag tape unit unique to Digital Equipment Corp. machines), and paper tape, as well as a line printer and stuff like that. Whenever a program does input or output, it has to specify the particular file it wants. A file identifier is typed in the form

DEV:FILNAN.EXTiPRJ,PRG]

(some parts of that can be left out). DEV specifies the device you want. Generally, if you want the

1.7 Editing Commands 9

1.7 Editing Commands

To enter your program, or to correct it, you will use one of our text editors. There are four editors in common use here:

1. E. This is the one you'll generally use. It is a display editor, much like TV (below) but much faster and with slightly different features.

2. TV. This is an earlier version of our display editor. It has been pretty much replaced by E, but there are still a few things TV can do which E can't, like switching between files in the middle of an edit.

3. SOS. This editor is designed for use at Teletypes or other non-display terminals. Files created with SOS include a line number at the beginning of every line. Editing commands use the line numbers to specify what lines to change, delete, or whatever. Hopefully you will have no need to use this editor, since you'll be using display terminals.

4. TECO. This editor is supplied by DEC. It is extremely powerful, in that it allows you to write editing programs which can process a file systematically, and it is very flexible about strange characters in the file. However, for routine editing it is somewhat inconvenient to use because it has an obscure command notation and does not use the display facility of the terminals.

Each of these editors is described in its own manual. A bibliography is included as an appendix to this manual. The point to be explained here is how to use monitor commands to invoke an editor; we'll assume here that you're using TV.

Suppose you want to write a program called PROG in the SAIL programming language. The monitor command to create a new file with TV is CTV. So you would type

CTV PROG.SAI

(SAI is the standard extension for SAIL programs.) This command tells the monitor to run the RPG (Rapid Program Generator) program, a command interpreter which abbreviates the sequence of commands needed to edit, compile, load, and debug programs. RPG reads the CTV command, which tells it to run TV, telling TV to create a new file named PROG.SAI. RPG remembers the last editing command you typed, so later you'll be able to edit the file simply by entering a TV command without having to type the file name again. (Note-LOGOUT makes RPG "forget" your commands, so you have to type the file name again when you next log in.)

The command for editing an already existing file with TV is TV. You can enter this command with no argument and it will remember the file from the last edit command, or you can specify a filename as with the CTV command above.

The E editor, which is the most commonly used here, includes provisions within it for carrying out the RPG functions itself. Therefore, the CETV and ETV commands analogous to CTV and TV do not run RPG; they start E directly. However, these commands are included with the RPG commands in this manual because they act the same to the user.

10 Introduction 1.7

There is a file you can edit to learn how to use E. To do this, log in and enter the following command:

ET TEACH*-TEACH[UP,DOC](2P)

Then just read what appears on your screen and follow instructions.

1.8 Commands for Compiling and Running Programs

Once you have typed in your program, you have to compile it, load it, and run it. Compilers like SAIL put out relocatable binary programs. This means that the program is in a form which contains enough information so that it can be loaded into any address in core. Addresses within the program are all considered relative to the program's first word, so the LOADER has to add the actual address of that word to all the relative addresses in the program. Your program can be loaded along with others, for example a debugging program; the actual location of any program in your core image will depend on what other programs are loaded with it. (Note that this relocatable binary program format has nothing to do with the hardware relocation discussed on page 3.) The core image produced by the LOADER can be saved in a DMP (dump) file, which can then be run directly by a monitor command without going through the LOADER again.

Suppose you have typed in your program, PROG.SAI. You want to compile, load, and run it. You could say

EXECUTE PROG

and all those things would happen automatically. RPG would generate a command file for SAIL telling it to compile PROG.SAI and start up the loader, which also gets a command file. (RPG knows that it should use the SAIL compiler because of the SAI extension in your filename.) Again, RPG remembers the command, so next time you just have to say EXECUTE and it'll all happen. In fact, the editors all have commands which automatically re-do the last compile-type RPG command.

Suppose, to make this clearer, you find a bug in the program. To fix it, you can say

ETV

and RPG will start E editing PROG.SAI.

Then you use E commands to edit the file. When you're done, you use the exit-to-RPG command, which in E is CONTROL-X GO. This will automatically repeat the EXECUTE command you typed before.

There are many different versions of this compilation command: COMPILE will just compile the program, LOAD will compile and load, etc. The RPG commands are listed in Section 5.3 and fully described in Appendix 1.

1.9 Information Commands 11

1.9 Information Commands

You can sometimes find out how to use a system command by typing HELP followed by the command name. Typing HELP with no argument will list the kinds of help available this way. For instance, if you forget how to log in, you can type HELP LOGIN.

You can see the status of all the jobs on the system with the UHO command, abbreviated W. You can find out about jobs belonging to a particular user by typing WHERE prg (prg is the programmer name) or FINGER prg. These type out information about the given user's jobs; try them to find out more. All of these (HELP, WHO, WHERE, and FINGER) run programs in your core image, so you shouldn't run them if you need the program you have there. These information commands can be run without logging in first.

To get a list of the files in your directory, type the DIRECTORY command. You can get the list for another disk area by including a PPN in square brackets as an argument. You must be logged in to give this command.

1.10 Programs and Core Images

This section discusses the allocation and use of core storage for a job. The PDP-10 storage is divided into blocks of 1024 words,. called IK. Each job's core image is a multiple of IK long. The core image may be located in any contiguous set of actual core blocks while the program is running.

Actually, a job may use two distinct contiguous sets of core blocks, called the lower and upper segments. The job must have a lower segment in order to run. This segment belongs to that job alone. If the job has an upper segment, it may be shared with other jobs. One use of this is to allow several users to run the same system program with only one copy of the program in core; the data for the individual users is stored in each job's lower segment, and the common code is in the upper segment.

An upper segment may be write protected, so the program in it cannot be accidentally changed. This is usually done with shared upper segments. Programs can control the write protection of their upper segment by UUO. Upper segments are more fully explained in the UUQ Manual.

Each upper segment has an entry in the system job table, including a job number, a segment name, and much of the status information associated with jobs. Some of the monitor commands described in later sections of this manual refer to upper segments.

The lowest locations in each job's core image, called the Job Data Area, are used by the monitor to store information about the job. Some of this information is of interest only to the monitor, while other parts can be used and modified by the job itself. In particular, some monitor commands use information from Job Data Area words, e.g., starting addresses for the program. The description of such commands will refer to the relevant word by its symbolic name, of the form JOBxxx, e.g., JOBS A is the word containing the program's normal start address. The complete description of the Job Data Area is contained in the UUO Manual.

12 Display Terminals

SECTION 2 DISPLAY TERMINALS

2.1 Keyboards

Our display terminals use a character set called Stanford ASCII. ASCII is a standard computer character set; our version is similar to the standard but somewhat extended. In particular, the "control" codes in ASCII, which mean things like "end of text," are used here for printing characters like a and 3 and n. There are seven bits in a character code; since the PDP-10 has 36-bit words, five characters fit in a word with one bit left over. The complete Stanford ASCII character set is listed in Appendix 13.

Each of the printing character keys on our terminals has two characters printed on it (except the 0 key). The bottom one is usually a letter or digit, and the top one is some special character. There are two SHIFT keys and a SHIFT LOCK key, which make letters upper case. The keys which produce the special characters are labelled TOP. For example, hitting the "<D" key alone produces lower case "d"; also holding down SHIFT produces capital "D"; and holding down the TOP key with it produces "<" (SHIFT and TOP together is interpreted as TOP).

There are several special character codes, generally not printing characters, which are not affected by SHIFT and TOP. One is the space bar, which spaces as on any typewriter. The TAB key sends a tab code, which prints by spacing out to the next tab stop; these are set eight spaces apart and cannot be changed. The RETURN key sends a carriage return code, and the monitor generally provides a line feed code after it automatically. The LINE key sends a line feed alone; this is not too often useful. The FORM key sends a form feed code, and the VT key a vertical tab. These two are used by some programs as control codes, but not often for their printing effect. The BS key is backspace (in real ASCII this code is called delete). This code is usually not sent to your program, but is taken by the line editor as a command to back up the cursor. The ALT key sends an alt mode; this code has no printing significance, but is used as a control code by programs.

Although ASCII is a seven-bit code, display terminals actually send nine-bit codes to programs. The two extra bits represent the CONTROL and META keys. These keys are like SHIFT and TOP in that they are held down along with some other key. They have two different functions; when the character they are used with is sent to a program, it can be used as a control command. Editing and debugging programs use such single-character commands heavily. For example, in the E editor, CONTROL-META-D means to delete a line. However, the CONTROL and META keys are also used as commands to the system line editor for inserting characters inside a line, etc. The use of the line editor is explained in Section 2.2.

There are four more keys to be described. They are unusual in that none of them send characters to your program or to the monitor's command decoder; they are processed by the monitor's keyboard scanner and the line editor. CLEAR is simply a line editor command to delete the entire

2.1 Keyboards 13

line in the line editor. CALL is used to interrupt a program running in your core image and return your terminal to monitor mode. ESC (escape) and BREAK are used to signal that the characters which follow are a special command to the display service routines in the monitor; the many different functions of these commands will be explained in Section 2.4 and following sections. There should be a list of the ESC and BREAK commands attached to your keyboard; if not, see page 16 to find out how to print one.

2.2 The Line Editor

At a display, the characters you type are accumulated by a part of the monitor called the line editor. When you end a line by typing an activation character, the entire line is sent to your program (or to the monitor command decoder). Generally you will activate a line with the RETURN key, although others also work. The exact workings of activation are discussed in Section 2.3, but first, there are several editing command characters which can be used to change the text in the line editor.

There are two line editor cursors displayed on your screen. The left cursor is underneath the first character m the line editor; the right cursor is under the character position you are about to write into. The cursors are underlines on Data Discs, and triangles on Ills. Also, on Ills, the characters in the line editor are displayed somewhat below any other characters on the same line. If there is no text in the line editor, the two cursors coincide.

When you type a printing character into the line editor, it is displayed at the right cursor position, replacing any other character which was there before. The CONTROL and MET A keys are used to change the function of characters typed in. Also, several characters have different functions depending on whether or not they are typed with the right cursor at the end of the line. For example, BS at the end of the line deletes the last character; inside the line, it moves the cursor left one position without deleting anything.

MET A along with a printing character (including space and tab) inserts that character at the cursor position, in front of the character already there, rather than replacing the old character. At the end of the line, a MET A character will activate.

BS at the end of the line deletes the last character. If it's not at the end, BS just backs up the cursor without deleting. People talk about deleting backspace and non-deleting backspace to distinguish these. CONTROL-BS is always non-deleting, and META-BS is always deleting. (CONTROL-MET A-BS, like CONTROL-MET A-anything, is not a line editor command but an activation character.)

CONTROL-SPACE is the opposite of CONTROL-BS: it moves the cursor forward without changing the text. SPACE alone and M ETA-SPACE act like any printing character. At the end of the line, CONTROL-SPACE does nothing (it neither moves the cursor nor activates).

The remaining editing commands consist of CONTROL-something. Some of them are only considered as line editor commands inside a line; at the end of the line, they activate. Whether or not this is true for a particular command will be mentioned in each description.

14 Display Terminals 2.2

CONTROL-TAB moves the cursor to the end of the line, as if you typed CONTROL-SPACE many times. (Inside the line only.)

CONTROL-FORM is the opposite: it moves the cursor to the beginning of the line, so the two cursors coincide. (Inside or end of the line is ok for this one.)

CONTROL-D deletes the character above the right cursor. (Inside only.) Note that this is different from META-BS, which deletes the character to the left of the cursor.

CONTROL-S skips ahead from the current position of the right cursor to the next occurrence of the character you type next. If the next character you type does not occur to the right of the cursor, nothing happens. If the search character is a letter, the case must match. (Inside only.)

CONTROL-K is like CONTROL-S but instead of moving the cursor it kills characters up to (not including) the one you select. Again, nothing happens if the character does not occur. (Inside only.)

CONTROL-I enters insert mode. In this mode, all characters are treated as if you were holding down the MET A key, until you leave insert mode by typing another CONTROL command or activation character. That is, characters which you type are inserted instead of overwriting old ones, and BS is a deleting backspace. (Inside only.)

CONTROL-number (that is, any decimal number typed while holding down the CONTROL key) will cause a CONTROL command immediately following to be repeated that many times. For example, CONTROL-5 CONTROL-BS will move the cursor left five positions. This can be used to repeat the BS command as well as CONTROL-BS, META-BS, CONTROL-SPACE, CONTROL-D, CONTROL-S (finds the nth occurrence), and CONTROL-K.

CLEAR will delete everything in the line editor.

CONTROL-RETURN will retrieve the last line which was edited, as long as you haven't typed anything since then. That is, after you activate a line, if the very next character you type is CONTROL-RETURN, the line is returned to the line editor. You can send the same line again by just typing RETURN, or you can edit it. This is very handy when a monitor command, for example, fails because of a spelling error; you can simply say CONTROL-RETURN, correct the error, and say RETURN to activate the corrected command.

The TAB character is treated in a special way by the line editor. Commands like CONTROL-SPACE treat a TAB as a single character, so a CONTROL-SPACE when the cursor points to a TAB will move several spaces to the right. Typing a character without control bits, however, only replaces the first space of the TAB. There will still be a TAB in the buffer, unless the TAB was positioned so that it was only equivalent to one space, in which case it goes away completely when another character is typed over it.

2.3 Line Editor Activation 15

2.3 Line Editor Activation

This section is about the workings of line editor activation: how the line editor decides to release characters to your terminal input buffer. There is quite a bit of arcane detail here, covering special cases, which is not generally important to the user. This section can be skipped by most readers.

The activation mechanism can be controlled to some extent by UUOs given by your program. Specifically, your terminal can be in normal activation mode or special activation mode. In the latter case, your program determines exactly which characters activate. The program can also disable the CONTROL-RETURN function, as well as the automatic insertion of line feed after return. However, the rest of this discussion assumes you are in normal activation mode.

Any character with CONTROL or META on will activate unless it is taken as a meaningful line editor command. In particular, META will activate at the end of the line. CONTROL always activates on characters which are not meaningful line editor commands, e.g., CONTROL-A always activates, and CONTROL-D activates at the end of the line only. CONTROL-META together always activates. RETURN, LINE, and ALT always activate, regardless of the CONTROL and META bits used. (Actually, in the case of RETURN, it is the line feed, supplied by the monitor, which is really the activation character.)

When you type an activation character, all the characters in the line editor are transferred to your terminal's input buffer and are no longer editable. If your program is doing line-at-a-time input, the character which activated the line editor may or may not be an activator for your program. (Normally, line editor activation characters also activate the program, but this may be changed with special activation. For example, the line editor cannot store characters with control bits, so such characters always activate the line editor if they are not line editor commands. Your program may, however, choose not to be activated by such characters, in which case they remain in your input buffer until a character which does activate the program is read.) When you type a program activation character inside a line, all characters in the line editor are moved to your input buffer, but your program can only read (in line mode) characters up to the activation character. The program may ask to get a nine-bit representation for the characters, so the CONTROL and META bits of the activation character are sent. There is a special kludge in the line editor so that whenever you type RETURN (without CONTROL or META), the RETURN is put at the end of the line, as if you had typed CONTROL-TAB first. This is not true for other activation characters, so characters after the activation character won't be editable, but won't be available to the program either until you activate again. Most programs are written so that something fairly intuitive happens when you activate in the middle of the line, but it is possible to confuse yourself. In particular, when you re-edit (by typing CONTROL-RETURN) a line which was activated with something other than RETURN, the activation character appears in the line (without control bits); if you type RETURN, you get the same old activation character, not a RETURN at all! There are some peculiar things which happen if you delete the old activation character first, though--it is possible to have the RETURN activate the line editor, but not put in any activation character and not actually activate your program until you type a second RETURN.

16 Display Terminals 2.4

2.4 ESCAPE and BREAK Commands

Certain special characters are used to control the status of your display terminal. These are processed directly by the monitor's keyboard scanner, whether or not you are in monitor mode. One example, mentioned above, is CALL. This key stops your program, if one is running, and returns you to monitor mode. You can also type CONTROL-CALL or META-CALL for a deferred call— the program is stopped when it tries to read the CALL character from your input buffer. Thus you can type some commands into a program, followed by a deferred call; when the program is finished with your commands and asks for more, it will be stopped.

There are several commands using the ESC and BREAK keys. Generally, the format is ESC or BREAK, then possibly a numeric argument, then a letter which specifies the command. There should be a concise summary of these commands attached to your keyboard; if not, log in and type this:

XGPL I ST DDKEY. BH [UP, DOC] /FONT-FI X20

(or 1 1 1 KEY instead of DDKEY if you are using a III terminal) to print the list on the XGP.

ESC O will stop typeout from your program. Any characters already in your output buffer are deleted, and any attempted typeout from your program is ignored. The program continues running, however. Typeout is resumed if you type BREAK O, or if your program reads any characters from your terminal.

Display terminals are normally in full character set mode, which means you can type in upper and lower case letters. You can leave this mode by typing BREAK F, which has essentially the same effect as pushing the SHIFT LOCK key. You type ESC F to return to full character set mode. The only use for this that I know of is that you can convert a line of text in a file to upper case in E by typing BREAK F, then something like CONTROL-SPACE to load the line into the line editor, then^RETURN. Try it.

Some programs which read data from your terminal expect an "end of file" indication after the data. The thing to type to supply this signal is CONTROL-MET A-LINE.

It is possible to suspend typeout from your program temporarily without losing output, as with ESC O. Typing CONTROL-BREAK starts this automatic holding. The word HOLDING appears at the top of your screen, and the program is stopped if it tries to type more characters than fit in your output buffer. Automatic holding is released by typing any line editor activation character, or CONTROL-CLEAR.

Sometimes you may want to write a program which you can interrupt with a signal from your keyboard, without having to keep checking for terminal input in the program. For example, if you run a program which searches a large data base by command, you may want to be able to abort a search without stopping the program. Typing ESC I will generate an interrupt condition which your program may enable; the use of program interrupts is described in the UUO Manual.

2.5 The WHO Line 17

2.5 The WHO Line

The next set of commands have to do with the WHO line, a display of system status and the status of a particular job on the top two lines of your screen. Once you start a WHO line display, it is automatically updated until you turn it off explicitly. To start a WHO line for the job at your terminal, type ESC W. You can see the WHO line for another job, job number n, by typing ESC n W. To turn off your WHO line display, type BREAK W. (Note: this does not actually make the WHO line disappear on Data Discs, where anything you display stays on the screen until it is explicitly erased.)

One use of the WHO line is to keep track of the progress of a job of yours other than the one at the terminal you're using. To facilitate this, typing ESC Qwill display the WHO line of the next job in the monitor's job table with your programmer name (or with the same name as the job whose WHO line you are already displaying, if any). Typing ESC Q, repeatedly will cycle through all such jobs. BREAK Qdoes the same thing, except that it searches the job table backwards.

This is the format of the WHO line:

DO JBS.TCOR R.RCOR UCOR NL% DSKQ DATE DAY TIME JOB PPN TTY QUEUE JOBNAM SIZE RUNTIHE-RP XTItlE-XP DSKOPS SEGNAM (ALIAS)

The first line is the system WHO line:

DO number of Data Disc channels in use (max imumcSl)

JBS number of jobs logged in

TCOR total core of all jobs (including swapped out)

in blocks of 1824 uords

R number of jobs actually run in the last feu seconds

RCOR total core of the jobs counted in R

UCOR amount of core available for running user jobs

NL system null-time percentage over the last feu seconds

DSI Q number of jobs waiting to use tht disk

DOTE uh, let's see.. .

DRY day of the Meek

TIME tin* of day (24-hr clock)

The second line refers to a particular job:

JOB the job number of the job being displayed

PPN its logged-in project-programmer name

TTY its terminal number (in octal) or DET for detached jobs

QUEUE the system queue that the job is in (see belou)

JORNRI1 the program being run

SIZE size of the job's core image

RUNTIME total run time since login, in minutes and seconds

RP RUNTIME expressed as a percentage of the job's total wait time

(time the job was runnable but not running)

XTIME incremental runtime, normally reset on terminal input but see belou

XP XTIME as a percentage of incremental wait time

DSrOPS number of incremental disk operations (reset along with XTIHE)

SEGNRM name of upper segment if any

flLIRS disk PPN (see below) if any

18 Display Terminals 2.5

Some of these need more explanation. The QUEUE is an indication of the immediate status of the job-is it runnable, waiting for input, stopped, etc. These are the possible queue names:

RUNQ The job is runnable and not waiting lor I/O, etc.

TQ This is a high-priority run queue uhich jobs are in (or a short

time after leaving certain kinds of I/O wait. STOP The job is stopped because it exited, the user typed CflLL, or

there was an error in running the job. NULQ The job has no core image. IOUQ The job is waiting (or some input/output operation, or (or the

completion o( a SLEEP or JOBRD UUO. This most often means that

the job is waiting for the user to type something. DIOU The job is waiting for some I/O operation and may not be swapped

out until it is completed.

INTU The job has suspended itself waiting for an interrupt. OIIQ The job is waiting for a device (e.g., line printer) to be free. MTQ The job is waiting for the magnetic tape controller. DTQ The job is waiting for the OECtape controller.

DCQ The job is waiting for the data controller (used for mag and DEC tapes). CMQ The job is not in core and needs to be brought in quickly; if a job

stays in this queue for long, something is wrong.

Some special characters may be displayed after the queue name:

The job The job

\ The job / The job X The job

s currently running.

s swapped out. P second •; means the upper segment is swapped out.

The job has been locked in core by the LOCK UUO.

s running a spacewar module on the PDP-lfl.

s running a sp.acewar module on the PDP-6.

s running spacewar modules on both processors.

Some of the above may not be clear until you read the UUO Manual. The alias is a PPN used as the default directory for disk files instead of your logged-in PPN. There is an ALIAS monitor command to set the alias for your job.

XTIME is an incremental run time, measured in minutes, seconds, and 60ths of a second (a 60th of a second is called a tick). It is normally reset whenever the program is started by a monitor command other than CONTINUE, and also whenever the job is awakened by input from the terminal after having been in lOWQ, waiting for such input. Note that if you type ahead, so that the job never enters IOWQ, terminal input will not reset XTIME. It is possible to inhibit resetting of XTIME with the BREAK X command (see below). If resetting is inhibited, the character separating spaces from ticks in the display will be ' instead of ' as it usually is.

BREAK X inhibits resetting your job's XTIME. ESC X resumes the automatic resetting as described above. Neither of these changes the current value of your XTIME. Typing ESC 1 X will set your XTIME to zero; BREAK 1 X will set it equal to your RTIME (total run time). Both ESC 1 X and BREAK 1 X inhibit automatic resetting, so you have to type ESC X if you want to restore this.

2.6 Page Printer Control

There are two ways of printing on display terminals. To exploit the full capabilities of the display for graphics, display programs can explicitly control the positioning of points, vectors, or characters.

2.6 Page Printer Control 19

On III terminals, 16 such display programs can be written independently, and any combination of them activated or displayed at any time under program control. These display programs are called pieces of glass. On Data Disc terminals, only one display program can be run on each Data Disc channel, although the effect of multiple pieces of glass can be gotten in a different way by displaying more than one channel on the screen (see Section 2.7, which describes the video switch).

The other way of printing on a display terminal is simply to output text to be printed in order as if on a piece of paper. The monitor automatically "scrolls" such output; when the area of the screen being used fills up, the text is moved up a few lines, with the top part disappearing. Sixteen of these pieces of paper can be displayed at once, on different parts of the screen. At any time, one of these pieces of paper must be selected by the program as the one to receive page printer output. The dimensions of each piece of paper are controlled by the program, but the currently selected one can also be controlled from the terminal with ESC commands.

The dimensions of the page printer include several factors. First, the vertical position of the top line of the page. This can be set by the command ESC n Y for line n. (Lines 1 and 2 are where the WHO line goes; the normal position is line 4.) ESC Y resets the vertical position to normal.

The scrolling function is controlled by two parameters: the number of lines typed before a glitch (the upward repositioning of the text), and the number of glitches on the page. These are set by ESC n L for lines/glitch and ESC n G for glitches/screen. The defaults are 4 glitches of 9 lines for Data Disc terminals, and 12 glitches of 2 lines for III terminals. ESC L and ESC G restore the respective counts to normal.

It is possible to cause automatic holding, as with CONTROL-BREAK, every n lines or every n glitches. The commands for this are ESC n E for every n lines, and ESC n J for every n glitches. At each pause, the word HOLDING will appear on the third line of the display. CONTROL-CLEAR will resume output as usual. ESC E and ESC J disable the respective automatic pauses.

Typing ESC N will normalize your page printer. BREAK N will clear your screen, normalize the page printer, and display the text in the page at the normal position. To refresh the page printer display without changing the page printer geometry, type ESC P. BREAK P will clear the screen and then do ESC P. These are useful for getting rid of any noise which may appear on your screen. There is a rarely-used ESC R to refresh just the display of your line editor.

Note: Any RESET of your job, either by the RESET UUO or automatically by the system, eliminates all but piece of paper 0, selects that piece of paper for further output, and normalizes the page printer display. The UUO Manual explains the RESET function.

2.7 Data Disc Control

Certain ESC and BREAK commands have special functions for Data Disc terminals only, and some for III terminals only. This section is about the Data Disc ones.

20 Display Terminals 2.7

The usual display on a Data Disc screen is green letters (hereafter called "white") on a black background. It is also possible to display black on white, by typing BREAK C. To restore the normal white on black, type ESC C. Both of these clear the screen, so you have to type ESC P to refresh your page printer display. Black on white display requires increasing the contrast and brightness controls to be visible. This is not the worlds most useful feature; it is also possible, under program control, to display only part of the screen in black on white.

The remaining Data Disc commands are used to control the video switch. This device allows you to select from the 32 Data Disc channels, plus various TV cameras and video synthesizers, what you want to see on your screen. You can see more than one Data Disc channel at a time, but only one of the analog channels (the cameras). You can select an analog channel along with a Data Disc channel only if the two are synchronized; e.g., the lounge TV signal can't be combined with a Data Disc channel because the synchronization of the former is not under our control.

Data Disc channels in use by a job may be public or private. Only public channels may be selected by other users. The channel used by a terminal is normally private. The command ESC H hides (makes private) your terminal's channel; BREAK H makes it public.

Video switch commands are generally of the form ESC n x, where n is a channel number (Data Disc or analog channel) and x is the command letter. The form BREAK n x interprets n as a terminal line number. Thus, ESC 30 S selects Data Disc channel 30, but BREAK 30 S selects whatever channel is assigned to TTY30.

ESC or BREAK n S makes a permanent selection, which remains in effect until you give another video switch command to change it. ESC or BREAK n T makes a temporary selection, which reverts to the permanent selection whenever your job is RESET by UUO or automatically. To display more than one Data Disc channel at once, type ESC or BREAK n A to add a channel; ESC or BREAK n D deletes a channel.

Using ESC with no numeric argument on a video switch command means your terminal's channel. Thus, ESC S restores your own display. BREAK with no numeric argument is the same as ESC 45, which selects the lounge TV. Thus, BREAK S at 6pm on a weekday selects Star Trek. The ESC N and BREAK N commands, which normalize the page printer on all displays, also imply ESC S on Data Discs.

Note that your program can also modify the video switch settings by UUO.

2.8 III Control

At a III terminal, several different display programs, called pieces of glass ("pog"), may be running at once. You can choose which of these (zero or more at once) are actually displayed.

ESC n S selects piece of glass number n only. ESC n A adds piece of glass n, and ESC n D deletes pog n. If no numeric argument is used, these commands apply to all pogs, e.g., ESC D clears all pogs from the screen.

2.8 III Control 21

ESC C eliminates all pogs (your page printer is still displayed). It is different from ESC D in that the display programs are completely forgotten, so they cannot be reselected.

Note that the selection of display programs can also be controlled by a UUO in your program.

2.9 Audio Switch Control

Associated with each display terminal is a loudspeaker which can be connected to various sound sources under computer control, by an audio switch analogous to the video switch for Data Disc channels. There are 20 (octal) audio switch input channels, numbered 0 to 17. Only one channel can be connected to your speaker at a time.

One of the input channels is normally silent, but is connected to the telephone paging system when a page is in progress (i.e., someone has dialed 9 on the com line). When you are listening to another channel, you may choose to be switched to the paging channel automatically when a page is in progress and then returned to your original channel.

The command ESC n U will select audio channel n and allow paging interruption. BREAK n U selects channel n and does not allow paging. ESC U or BREAK U selects the silence/paging channel.

At a Data Disc, the BREAK S, BREAK T, and BREAK A commands, which select the lounge TV picture for your screen, also select the lounge TV audio for your speaker.

As we go to press, the following audio switch inputs are connected:

8 S i lence/pag ing

1 lounge TV

2 tuner in HeMiwell's office

3 tuner in machine room

4 digital-to-analog converter channel 1

5 beep generator

22 Teletypes

SECTION 3 TELETYPES

Teletypes do not have display screens, nor do they have the full Stanford ASCII character set. This means that certain things are typed differently.

The CONTROL (CTRL) key on a Teletype does not produce the same codes as CONTROL on a display. Instead, it produces codes which, on display terminals, represent some of the TOP characters. Most programs which deal with Teletypes, however, either cleverly use only characters which are the same on all terminals, or have special notations for use at Teletypes. In particular, there is an 505 representation (named after a Teletype editor) for printing characters not found on Teletypes, namely a question mark followed by some other character. See Appendix 13.

To get the effect of CALL, type CONTROL-C twice. (Control characters on Teletypes generally echo as T<character>, so now you know why CALL on displays prints TC.) Deferred CALL is a single CONTROL-C.

Although there are several models of Teletypes and similar terminals, most of ours do not have lower case letters. The SHIFT key on these terminals, like the TOP key on our displays, produces non-alphanumeric printing characters. Most of these are labelled on the Teletype keys, but you may not find t (SHIFT-K), \ (SHIFT-L), or ] (SHIFT-M) labelled on some models.

There is no line editor on Teletypes. You can delete the last character on a line by typing RUBOUT, which prints a backslash and then the deleted character. Successive RUBOUTs will print the characters deleted, until a non-RUBOUT, which prints another backslash and then whatever you typed. CONTROL-U will delete the entire line, like CLEAR on a display.

Most of the ESC and BREAK commands have no Teletype equivalent. CONTROL-O flushes typeout like ESC O. A second CONTROL-O resumes typeout like BREAK O. CONTROL-B starts and stops typeout holding, like CONTROL-BREAK and CONTROL-CLEAR on display terminals. There are monitor commands to provide some of the ESC facilities; e.g.,

TTY WHO

will type out your who line once.

The end-of-file character for Teletypes is CONTROL-Z. If your program does input by TTYUUO, CONTROL-Z is converted to 612 (the code for CONTROL-MET A-LINE). TAB is typed as CONTROL-1. FORM is CONTROL-L, and VT is CONTROL-K. RETURN, LINE, and ALT have corresponding Teletype keys. (The key for ALT may be labelled ALT MODE, ESCAPE, or PREFIX depending on when the Teletype was built.)

It is possible to use our computer from another computer, over the ARPA network, or by telephone connection. The Teletype conventions also apply to these connections.

4. Basic Monitor Commands 23

t

SECTION 4 BASIC MONITOR COMMANDS

Commands like LOGIN tell the monitor to run particular system programs in your core image. In this section, monitor commands which do not refer to a specific program are described. Some of them do not refer to programs in your core image at all, but are handled entirely within the monitor itself; others run programs, but allow you to specify the program as a command argument rather than implying a particular one like LOGIN.

4.1 Running Programs

The RUN command takes as arguments an optional device name, a file name, and an optional core size argument. If the first argument is not a device name, DSK is used. The only allowable devices are DSK, SYS, MTAn, and DTAn. Running programs from magnetic tape or DECtape is not recommended. If the file name does not include an extension, DMP is implied.

The core size argument, if any, should be a decimal number indicating the number of IK (1024 word) blocks desired for your core image. This must be at least as much as the saved core image, but you can ask for more. Certain programs with variable buffer space will use as much as you initially allocate. (Programs can increase their core size dynamically by UUO.)

If you are running from magnetic tape, the core size argument must be used; otherwise, the size of your core image before giving the command will be used. This is because the monitor cannot determine the size of a file on magnetic tape before reading it.

The program is loaded into your core image, your job name is set to the name of the dump file, and the program is started at the starting address specified in the dump file.

The R command is used for running system programs. The command R FOO 10 is identical to

RUN SYS: FOO 18

(The SYS device is actually the disk, but with the special system directory [1,3] implied. This directory is used to store system dump files.)

By using the GET command (abbreviated G), it is possible to load a dump file into your core image without starting it. This command takes the same arguments as RUN, but instead of starting the program, it types out a message indicating the size of your core image and leaves your terminal in monitor mode.

24 Basic Monitor Commands 4.1

All of the commands in this section cause a RESET of your job.

4.2 Manipulating Core Images

The following commands refer to words in the Job Data Area (see page 11) of your core image. These words are generally set up by the monitor or the LOADER. The UUO Manual has a complete explanation of the Job Data Area.

The CORE command is used to find out or change the size of your core image. CORE may be abbreviated C. If you include an argument, the size of your core image will be set to that many blocks. If you do not give an argument, your core size is typed out, along with the size of your upper segment, if any; a final line gives the total amount of core available for user jobs. If you give the CORE command when you are not logged in, you get only the last line.

The command CORE 0 destroys your core image. It also causes a system RESET of your job, releasing any I/O devices you were using, etc.

The way to create core image dump files which can be loaded later is with the SAVE command. This takes device, file, and size arguments just like GET. This command also does a RESET, and it does not save your accumulators. Therefore, the program cannot be continued after a SAVE command, although it can be restarted.

Unless your core image includes DDT or RAID (JOBDDT nonzero), only the locations up to the address in JOBFF are saved. (This does not apply if you use a core size argument.) JOBFF is set by the LOADER to the highest address it loads into, so any core which was allocated dynamically by your program will not be saved unless the program updates JOBFF. I/O buffers allocated for you by the system are allocated above JOBFF, which the monitor then sets to the new highest address.

If your program includes an upper segment which you wish to save, you should use the command SSAVE. This is just like SAVE in other respects. SAVE never saves upper segments.

It is possible to examine and alter words in your core image individually by monitor commands. The command E (examine) with an octal argument will type the contents of the specified address in octal. The DE (deposit) command takes three arguments in octal: the left and right halves of the word you want to deposit, and the address. DE without the address argument uses the address of the last E or DE command. E with no argument examines the location following the last one used by E or DE. (Note that the DDT and RAID debugging programs provide a much more versatile way to do this.)

4.3 Starting Programs The following commands refer to words in the Job Data Area (see page 1 1) of your core image.

4.3 Starting Programs 25

These words are generally set up by the monitor or the LOADER (except for JOBREN). The UUO Manual has a complete explanation of the Job Data Area.

The START command (abbreviated S) is generally used to start a program at its normal starting address in JOBSA. This command can also be used with an octal argument specifying some other

address.

The REENTER command starts the program at the reenter address specified in JOBREN, if there is one. JOBREN must be set by the program if it wants to use this capability. Program documentation will explain the use of the REENTER command for a particular program.

The DDT command starts the program at the address in JOBDDT, if any. This address is set by the LOADER if either DDT or RAID (the debugging programs for Teletypes or displays) is loaded with your program.

When a program is stopped by typing CALL, by a UUO in the program, or by various other conditions, the address of the next instruction to be executed is stored in JOBPC. If the job is contmuable (not stopped because of an irrecoverable error), the CONTINUE command will start it at that address. (The START, REENTER, and DDT commands will work even if the job is not contmuable, except for certain errors which destroy the core image irretrievably.)

All of the above commands place your terminal in user mode, that is, anything you type will be processed under control of your program. It is also possible to start a program, but leave the terminal in monitor mode. In this case you can still enter monitor commands which do not affect your core image. Monitor commands which are illegal while your program is running will give the message PLEASE TYPE tC FIRST.

The CSTART command is like START but leaves your terminal in monitor mode. Like START, it will take the desired start address as an argument or use the contents of JOBSA. The CCONTINUE command is the monitor mode equivalent of CONTINUE. There is no such equivalent for REENTER or DDT. With the terminal in monitor mode, the program can still type output on it, but an attempt at reading from the terminal will make the job wait (in IOWO^) until the terminal is placed in user mode.

The HALT command stops your program. The monitor converts the CALL key into this command, so you should never need to type it explicitly. (The only time you can type it explicitly, of course, is if you started the program with CSTART or CCONTINUE.)

4.4 Detached Jobs

Normally, any user job is associated with a particular terminal. However, it is possible to detach the job so it can continue running while you do something else (another job) at your terminal. Also, the monitor sometimes starts up detached jobs itself to perform various system functions.

Detached jobs can run, and do all the things attached jobs can do, except that if they try to output to device TTY, the output is lost; attempted input from TTY makes the job wait indefinitely (until it is attached). If a detached program executes an EXIT UUO, the job is killed.

26 Basic Monitor Commands 4.4

The DETACH command detaches your job, leaving your terminal in monitor mode and not logged in. You can then log in again without affecting the old job. DETACH takes no arguments. Several commands described below combine the DETACH function with other useful things. Please remember not to leave jobs detached forever, but to log them out eventually!

The ATTACH command is used to attach your terminal to a detached job. If you are already logged in, your old job is detached. The ATTACH command takes two arguments, a job number and the PPN under which that job is logged in. (If you are already logged in with the same PPN, you need not give the second argument.) The job must be detached before you give the command. Note that if you were displaying a WHO line for your old job, it will still be displayed, indicating the job as detached. This is handy for re-attaching it when you want to, in that it shows the job number. (Typing ESC W again will, of course, display the WHO line for your new job.)

The FORK command will detach your old job and log in a new one. It is faster than DETACH followed by LOGIN, because it does not run the LOGIN program. Instead, it merely copies the system information from your old job into the new job. In particular, if you have an alias in your old job, it is copied to the new job as well.

Often you want your program to continue running in the old job while it is detached. You could say CCONTINUE and then DETACH, but the command CDETACH combines these functions. There is also a CFORK command which combines CCONTINUE and FORK.

4.5 Device Control

Certain I/O devices can only be used by one user at a time, such as a magnetic tape unit. In some cases, like the line printer, the system provides a facility for queueing print requests so that individual users need not actually control the device themselves. However, when a user does need to use such a device, the ASSIGN command is used to ensure that only one user at a time tries to use the device. The ASSIGN command (abbreviated A) can also be used to cause a logical device name to be associated with a particular device. Thereafter, any reference by your program to the logical name will be translated into the corresponding physical device.

The command takes two arguments, a physical device name, and an optional logical name. The physical name can be generic: the command

ASSIGN MTA

will select an available mag tape unit (MTAO or MTA1) if there is one available. You can also select a particular unit explicitly.

The logical name feature is sometimes used by programs to allow you to control their I/O without having to type instructions to the program itself. For example, a program which produces a listing output might direct it to a particular filename on device name LST. Before running the program, you could type

ASSIGN DSK LST

•1.5 Device Control 27

to write the listing file on the disk, or

ASSIGN TTY LSI

to type it out at your terminal. You can also change the meaning of what is normally a physical device name this way-the command

ASSIGN DSK LPT

will make a program which was written to write its output on the line printer use a disk file instead. You might do this if the line printer is not available when you want to run the program.

Once you have assigned a device with the ASSIGN command, no other job can use it until you release it with the DEASSIGN command. This command, abbreviated D, takes either a logical or a physical device name as argument. (Note-Assigning DSK or SYS does not prevent other users from using the disk.) It is possible for a program to use a device which is not assigned, but the device is released in that case as soon as the program stops using it. The DEASSIGN command with no argument will deassign all devices assigned by your job.

The job which has a device assigned may give it to another job with the REASSIGN command. This command takes two arguments, the device name and a job number. This can occasionally be useful if, for example, one job writes a tape which another should then read. The REASSIGN command prevents the possibility of another job grabbing the tape unit before the intended recipient does.

The FINISH command (abbreviated F) is like DEASSIGN except that it releases the device from your program as well as from the ASSIGN command assignment. If the device is a directory device which your program had open for output, the file is closed so that as much data as the program wrote will be saved. (This applies in the case in which the program was stopped before its normal exit, either by CALL or by an error.) F with no argument releases all devices.

The FLUSH command is designed to allow a terminal which is not in use but somehow has something in its input or output buffer to be emptied. It takes a device name as argument; the device must be a terminal which is not in use, or your own terminal. This command may be used without logging in.

4.6 System Information

Several commands exist to find out various things about your job or others. Some of these duplicate information available on the WHO line at display terminals. None of the commands in this section affect your core image.

The PJOB command types the job number of your job, if you give the command with no argument. If you use a device name as the argument, it types the number of the job using the device. (If the device is not in use, it says so.)

28 Basic Monitor Commands 4.G

The PPPN command prints out the logged in PPN and the alias, if any, for your own job (no argument) or the job number you give as argument.

The PTTY command prints out the terminal line number of your own or another job. If the terminal is a DataDisc, it also prints the channel number. The TIME command, which also takes an optional job number argument, types out five quantities for the specified job; the first four are times, in hours:mmutes:seconds'ticks (a tick is one sixtieth of a second):

TOTRL is the total run time for the job.

INCREMENT is the run time since the last time a TIDE command for this

job was given by the job itself. That is, the INCREMENT time is reset

when you give a TIME command for your own job, but not when you give one

for another job. XT HIE is the same as the XTIHE displayed on the UHO line it is reset

whenever the job is started by a command other than CONTINUE, and

whenever the program is returned to the RUN queue after waiting for

terminal input. This meaning of XTIflE can be changed; see

page 18 for a complete discussion of XTIME. UR1T is the time the job has had to wait for the system, including

time spent in RUNQ and disk I/O wait, but not My I/O nail, STOP, etc.

It is somewhat of a measure of the quality of service the job is getting. I CS (kilo-core-seconds) is a measure of the demands the job has made on

the system. It is incremented by the job's core size (in K) every second

of runt i me.

The command TIME 0 types the time since the last system reload, the percentage of that time spent in core shuffling, and the percentage spent running the null job (what the system does when there are no real jobs it can run).

The DAYTIME command with no argument types the current day of the week, date, and time. With a job number argument, it types the time that job logged in, the time it was last run, and the current time. DAYTIME 8 specifies your own job.

The RESOURCES command lists the available system resources. It types the number of free disk blocks, the number of Data Disc channels free, the number of job slots available, and the names of free devices (mag tape, etc.) other than the disk and terminals.

The FILES command lists disk files in use by a job, with some status information. It can take a job number argument (0 means your own job), in which case all files in use by that job are listed, or a filename argument, in which case the status of the specified file is displayed (if it is being used by any job). Each line typed by this command contains the job number of the job using the file, the filename, extension, and directory ppn of the file; the number of records in the file; the number of the record currently being read or written; and the way the file is being used: R for read, W for write, or RA for read-alter, possibly followed by E for end-of-file seen. The FILES command with no argument is normally equivalent to FILES 0; however, if a FILES command results in more information to type than fits in the output buffer, the command lists as much as will fit followed by a line with an ellipsis (...), and a FILES command with no argument will continue the list from that point.

The HELLO command types the name of the current version of the monitor.

All of the above commands are legal when you are not logged in. The following one is not.

4.6 System Information 29

The SLEVEL command types out your current service level reservation. The service level system attempts to guarantee the reserved percentage of the computer's time to programmers who make such reservations. See the RSL command, in Appendix 6.

4.7 Miscellaneous Commands

The TTY command can be used to change several characteristics of your terminal. It takes as argument a keyword specifying the thing to change. As in typing monitor commands, only enough letters of the keyword as necessary to make it unique need be typed. The keyword may be preceded by NO or - to reset the corresponding switch. The keywords are

TflBS declares that the terminal has hardware tabs, so the monitor

Hill not convert tabs to spaces on output. ECHO tells the monitor to send back to the terminal the characters

you type in. FILL tells the monitor to insert extra carriage returns when a

return is typed out at the terminal, to give the carriage time

to return to the left margin. This Is used principally for 30

character per second terminals. FULL declares that the terminal has lower case letters, and lower

case should not be converted to upper case by the monitor.

Equivalent to ESC F on « display; NO FULL is like BREAK F. UPDATE enables automatic resetting of XTIHE, like ESC X from a display.

NO UPDATE is like BREAK X. TIME resets XTIME and inhibits automatic resetting, like ESC 1 X.

NO TIME, like BREAK 1 X, sets XTIHE to the total run time. UNO types out your job's UNO line. "TTY UHO n" will type out

the UHO line for Job nj "TTY UHO 0" or "TTY -UHO" will type

out the system UHO I ine.

The TABS, ECHO, and FILL keywords have no effect at display terminals. You need not be logged in to give the TTY command, except for the UPDATE and TIME functions.

The ALIAS command is used to set your job's disk PPN or alias. If you have an alias, all disk references by your job which do not include an explicit PPN will use the alias directory rather than your logged-in PPN directory. The argument can be PRJ.PRG to set the alias to that PPN, or just PRJ to use your own programmer name in the alias. No argument resets your alias to zero, so your logged-in PPN will be used for disk files. If you have an alias, your logged-in PPN is still checked for file protection purposes.

The TALK command can be used to talk to a user at another terminal. It takes a device name as argument. The device must be a terminal, which must be in monitor mode and must not have any characters in its input buffer. (Device CTY, the POP- 10 console Teletype, is never busy; TALK CTY always succeeds. Note to remote users: There is no operator on this system; TALK CTY is not a good way to get assistance!) If the command succeeds, all characters you type are typed out on the other terminal, and vice versa. If the terminal you specify was already in a talk ring, you are added to the ring; all characters typed at any terminal in the ring appear on all the others. You leave the talk ring by typing CALL. You need not be logged in to enter a talk ring.

The KILL command can be used to kill another job with your programmer name. It takes the job number as its argument.

30 System Program Commands

SECTION 5 SYSTEM PROGRAM COMMANDS

The remaining monitor commands all run particular system programs in your core image. There are a few main groups of these commands and a few miscellaneous ones. These commands are documented along with the programs they run. The next two sections are about the LOGIN and LOGOUT programs and the commands which run them; these were briefly introduced earlier. The major command groups are then presented, and finally the miscellaneous system programs. Many system programs are not run by special monitor commands, but by the R command. Those programs are not documented here, but in separate manuals.

5.1 LOGIN

The LOGIN command is used to begin a session of using the computer. It runs the LOGIN program, which provides several optional services as well as setting up the necessary system tables for your job.

The LOGIN command may be abbreviated L. It takes one argument, a project-programmer name. Different characters used between the two parts of the name are used for different options:

PRJ.PRG types all system messages and proctstei OPTION.TXT (see below)

PRJ/PRG types system messages new since last login, processes OPTION.TXT

PRJ.PRG types no messages, ignores OPTION.TXT) for last login

PRJXPRG sets new password, as explained below, thin acts I IK* PRJ,PRC

System messages are notices for all users, sent by the MAIL * command and stored in the file NOTICE.TXT[2,2]. There may also be messages addressed to a particular project, to a particular programmer, or to a PPN. Mail to your project is treated like system messages. The handling of programmer or PPN mail is explained below.

It is possible to set a password to restrict logins on a particular PPN. If there is a password, LOGIN types PASSUORD- and you must type the correct password to log in. Echoing of input characters is turned off so the password does not print. Passwords may be one to six letters or digits followed by RETURN. You can set a new password by using fl in the LOGIN command. If there is already a password, you must type it in. LOGIN types out NEU PASSWORD- and you can enter a new one; if you type RETURN with no new password, you will no longer have a password. Passwords are checked by the COPY program for access to other users' files, but there are lots of programs that don't check. If you have any information that you consider secret, you are advised to take it elsewhere. The A.I. Laboratory is a research establishment. There are facilities in the monitor which provide valuable research tools; these facilities may be misapplied to circumvent passwords and file protection. The protection that does exist is for accident prevention, not for secrecy. Users are assumed to be responsible persons.

5.1 LOGIN 31

If you log in from a remote terminal (by a dial-up telephone line), you will be asked for a remote users password which is used to discourage logins by unauthorized outsiders. If you need to log in remotely, ask someone. Sometimes you may find that the system is in maintenance mode, which means that the monitor is being debugged and the system is not available for normal use. If you try to log in at such a time you will be asked for the maintenance password.

The further details of LOGIN'S operation are controlled by a file named OPTION.TXT which you may have in your directory. If there is one, it is searched for a line of the form

LOGIN: op 1 1, op 1 2, op t3; comment 3

where optl...opt3 are the desired options. Spaces may be used in the obvious places. Only the first six letters of an option name are read. Upper or lower case is ok. Several other programs use this OPTION.TXT file, looking for their own option lines. The LOGIN options are as follows:

HE Tells you your fortune.

MESSRG Types your mail without asking; see below.

LOGRUN Runs the LOGRUN program, which executes monitor commands from a

IOGRUN entry in OPTION.TXT; see below for data! It. WHO Starts a IIHO line automatically if you are at a display terminal,

as if you had typed ESC U.

UNHIDE Hakes your Data Disc channel public, like BRERK H. FULL If you are at a Teletype, sets the full character set mode switch.

Equivalent to TTY FULL. TRBS If you are at a Teletype, clears the tab expand bit; tabs will

not be converted to spaces on output. Like TTY TRBS. FILL If you are at a Teletype, sets the fill switch to insert extra

carriage returns on output to give the carriage time to get all

th« way back. Like TTY FILL. DIGEST Tells you if there is a new Rssociated Press news digest that came In after

the last time you logged in and asks you if it should type it out. PORNO Try it and see. Doesn't work if you also have LOGRUN. NOMRIL Rvoids being asked questions about message files. This is for

people who like to type ahead while LOGIN is running. The

exact effect depends on what other options are used; see below. RUDIO=n Selects audio switch input channel n to your speaker if you

are at a display terminal, "n" is an octal number.

"RUDIOs-n" inhibits telephone paging interrupts, like BRERK n U.

If there is a message addressed to your programmer name or to your PPN, LOGIN normally types

THERE'S A NOTE FOR prg (or prjprg)

READ IT NOU?

If you type Y, the message file is printed, and you are asked if you want to delete it. (You can also type R, which will treat the mail like a system message file, i.e., LOGIN doesn't type header lines, and if you used a slash in the command it only types messages which came since you last logged in. In this case it does not ask if you want to delete the file.) Note: Mail is normally sent to programmer names, not PPNs. Some people send PPN mail to themselves as reminders.

If you have the MESSAG option but not the NOMAIL option, then mail is always typed out without asking first. If you have both MESSAG and NOMAIL, the mail is typed but you are not given the chance to delete it. If you have NOMAIL alone, you get the THERE'S A NOTE. . . line but not the mail itself. (See the RCV command for another way to process your mail.)

If you have DIGEST and NOMAIL, you are notified of a new A.P. digest but it is not typed out.

32 System Program Commands 5.1

(RCV will also do this for you.) It is also possible to get automatic notification of incoming A.P. stories on particular topics from the APE program; these messages are treated like programmer mail with respect to MESS AC and NOMAIL.

The LOGRUN program looks for a line in your OPTION.TXT file starting with LOGRUN:. It then takes that line, and all following lines until a semicolon is seen, and makes them be executed as if you typed them in. (The semicolon is required.)

5.2 LOGOUT

The command for terminating a session on the computer is KJOB (kill job), which runs the LOGOUT program. The command may be abbreviated K. It takes an optional switch argument to select various optional features. The OPTION.TXT file is also used to control logout options.

The LOGOUT program normally types out several lines of accounting information, e.g., computer time used. It deletes any files in your directory with extension RPG (these are the files the RPG system uses to remember the commands you gave), and if there are no files in your directory, it deletes the directory itself.

If you have the RPGSAV option (see below), LOGOUT will look for TMPCOR files (simulated files in core storage) used by some processors for remembering RPG commands instead of disk files, and copy them to the disk so they will be remembered the next time you log in. Note that this will not be done if you use the /F switch (below) for fast logout. Note also that LOGOUT does not save TMPCOR files created under an alias, even if you are still aliased when you give the KJOB command. (The monitor resets your disk PPN to your logged-in PPN before running LOGOUT.)

You are told if you have another job logged in with the same PPN, and if you have assigned any private devices (mag tape, etc.) you are reminded to unload them.

This normal processing can be affected by switches in the command itself or by options in the OPTION.TXT file. LOGOUT looks for a line in OPTION.TXT of the form

LOGOUT: RPGSAV, ME, FAST;

(Of course, you need not use all the options.) These options, if found, have the following effect:

RPGSRV Don't delete RPG files.

ME Type a friendly message (try it).

FflST Just log out, don't delete anything, don't print statistics.

Switches are single letters preceded by a slash (e.g., KJOB/F). The switches are:

XK Kill RPG files (only necessary if you have the RPGSRV option.) /S Save RPG files. /fl Type a message, like the flE option. /F Fast logout.

/Z Zero the disk. Deletes all your files, after asking if you real ly mean It.

5.2 LOGOUT 33

There are two other monitor commands which run the LOGOUT program, for logging in with another PPN, and for attaching to an existing job (see the ATTACH command, Section 4.4.) They ate

KLOG logout-switches ppn

KATTACH jobnum ppn logout-switches

The logout switches are as described above. The other arguments are in the required form for the LOGIN and ATTACH commands.

Finally, there is a LOGOUT command, which is exactly the same as KJOB but no arguments are allowed.

5.3 RFC

The RPG commands have already been mentioned. They run the RPG program, which then runs various other system programs. The commands are divided into two basic groups. The first, for text file editing, take a file specifier as argument:

CTV create a f i It with TV

TV edi t a f i le ui th TV

CREATE create a file uith SOS

EDIT edi t a file uith SOS

IIP! E create a file with TECO

TECO edit a fi le with TECO

The other major editor, E, includes the necessary code to carry out the RPG functions itself, e.g., default extensions and remembering the commands. The following commands are, therefore, not strictly RPG commands but function equivalently:

CETV create a file with E ETV edit a file uith E

The second group, for program compilation, take one or more program names, along with various option switches:

COMPILE compile programs

AD"- compile and load programs

EXECUTE compile, load, and run programs

PREPARE compile and load uith a debugger

DEBUG compile, load uith a debugger, and start the debugger

TRY compile, load uith a debugger, and start the program

PUB produce a document uith the PUB Document Compiler

Finally, one more command, used .in conjunction with the compile-type commands, which takes no arguments:

CREF produce cross-re ferenct listings from compilations

The complete description of these commands, with the command syntax and the processing options provided, is included as Appendix 1.

34 System Program Commands 5.4

5.4 COPY and SPOOL

The next major group of commands runs the COPY program. Their arguments are generally in the form "new-file «- old-file":

COPY copy a f i le

TRRNSFER copy and deists the original

RENRHE rename file or change protection

The following COPY commands imply a destination, and take just one or more input file specifications (separated by commas if more than one):

DELETE delete file

TYPE copy to the terminal

LIST copy to the line printer (SPOOL, below, it the preferred technique)

PRINT copy to the line printer with different formatting (see Appendix 2)

XGPL1ST copy to the Xerox Graphics Printer (XSPOOL is preferred)

DIRECTORY type file directory

HELP explain system programs

The COPY manual explains these commands fully, along with various options specified in the argument list; see Appendix 2.

Since only one job can use the line printer or XGP at a time, if several people want to make listings at once there is a scheduling problem. To solve this, the system allows listing requests to be stored on disk, and processed one at a time by spoolers which actually control the LPT and XGP. The system commands for this function are:

SPOOL request line printer listing of specified flle(s)

XSPOOL request XGP listing of specified file(s)

UNSPOOL delete a spooler request

QSPOOL type out spooler status and queues

The SPOOL commands also allow editing options to be specified in the argument list; see Appendix 3 for details.

The HELP and QSPOOL commands may be given without logging in; the others in this section require login first.

5.5 MAIL 35

5.5 MAIL

Several commands are provided for sending messages to other users. Messages can be filed on disk, so that the addressee will be notified about them by LOGIN, or they can be sent directly to the terminal of a logged-in user. There is also an automatic reminder system which allows delayed messages. The commands for processing messages are:

MOIL send a message to a user's message fill

SEND send a message to a user's terminal

REMIND request a delayed message

GRIPE send a message complaining about a system problem

RCV edi t message f i les

LflTER request delayed execution of a program

CflNCEL dtlete REMIND or LflTER requests

The usual format of the MAIL and SEND commands is

MAIL user message SEND user message

where user is a programmer name and message is the text you want sent. If you do not include a message in the command, the MAIL program will ask you to type a message, which may then have more than one line. The complete description of these commands is in Appendix 4.

The RCV command may be given without logging in; the others require login first.

5.6 DART

DART is a program to save disk files on magnetic tape and restore them as needed. It also handles mag tape positioning commands. The file dumping commands take disk file names as arguments:

DUMP dump disk files onto tape

RESTORE restore files from tape to disk

LOCATE find which tape has dumped copy of files

TLIST I ist al I fi les on a tape

The tape positioning commands are:

REMIND

RDVRNCE BRCt SPRCE EOT

The complete documentation of these commands is in Appendix 5 of this manual.

36 System Program Commands 5.7

5.7 DO

The DO program allows automatic execution of an arbitrary sequence of commands. By writing DO command files, you can make your own sequences of program execution analogous to the RPG compiler-loader-execution sequence. The DO command takes a file specifier as argument. The text in the file is simply transferred into your terminal's input buffer, as if you had typed it. Then the DO program exits, and the monitor processes the commands from the file. The DO program cannot be run by detached jobs. The amount of text allowed in the DO file is limited by the capacity of your input buffer.

DO does some conversion of certain characters in the file, to allow things like CONTROL and MET A characters. The characters which are processed specially are:

RETURN ignored

LINE ignored

« translated to RETURN (tht monitor Hill supply a LINE at Mill)

i translated to LINE

* translated to fill

(5 translated to deferred CRLL

VT adds CONTROL bit to the following character

rOPH adds METR bit to the (ol lowing character

» translated to ESC

a- translated to BREAK

I separates different DO functions (see below)

s quote the next character (do not process it specially)

? taKes the next character (other than RETURN or LINE) as a

variable name. Suppose the character is R (i.e., ?R). If

this Is the first occurrence of 'R in the file, DO types out

"?R " and waits for you to type in a text string ending

with RETURN. This string is substituted for every occurrence

of ?R in the f i le.

To allow more than one DO function to be stored in the same file (because small files are inefficient in using disk space), the vertical bar (|) character can be used as a separator. The command

DO DOFILE13)

will DO the commands between the second and third | characters in the file.

The DO command remembers its argument in an RPG file, so you can type DO without an argument to repeat the same command file. Also, the DO command is remembered as if it were a COMPILE-type RPG command, so the RPG exit mode commands in the text editors will also repeat the DO command. Thus, users of languages like LISP which are not recognized by RPG can write DO files to run LISP and read in their program.

5.8 ZERO

The ZERO command is used to initialize file directories on disk or DECtape. The command takes a device name as argument; the device must be DSK, DTAn, or UDP (user disk pack).

5.8 ZERO 37

For DECtape, ZERO simply executes the UTPCLR UUO, which tells the monitor to initialize the file directory for the DECtape unit you specified. Make sure you don't get the wrong unit number and zero someone else's DECtape!

If you specify device DSK, you must confirm (by typing Y) that you want to delete all the files in your disk area. ZERO then attempts to delete each file in your area. For each file, it types # if successful, otherwise a message indicating the reason for the failure (write protected, etc.).

For the UDP, you must give the write password when asked. Then you are given the opportunity to initialize a directory on the pack. (Note: the monitor does not maintain a file structure on the UDP. The directory format on UDPs is maintained by the COPY program to simulate a disk directory.) Generally this is only done once. The other thing you may do with this command is change the write password for the UDP. If you answer Y when asked if you want to do this, you are asked for the new password, which is written on the UDP.

5.9 WHO

The WHO command (abbreviated W) runs the WHO program, which displays system status information at your terminal. If you are at a display terminal, the information is automatically updated as long as the program continues to run. If you are at a Teletype, the information is only typed once. The WHO command does not require that you be logged in.

The first part of the WHO display is a list of the jobs on the system, with various information about each job. This list is divided into two sections, for jobs belonging to users and for system phantom jobs. (More precisely, the second section contains jobs which are detached and have the JLOG bit off in the job status word, i.e., are not logged in.) Jobs attached to pseudo-teletypes are listed under the controlling job, with the line for the controlled job indented. The listing for each job has several parts:

JOB job number

QUEUE queue name, as in the UHO line, with possibly an extra character

indicating one of several states (if more than one applies, the

one which comes first in this list is displayed): the job is now actually running

ft the job is locked in core

-> the job is an upper segment, and is next in line to swap in

I the job is next in line to be swapped out

I the job is next in line to be swapped in

: the job is swapped out

» the job is next in line to be moved in core PPN the job's logged-m PPN

(This will be 109100 for not-logged-in UHOs, etc.)

LIME the job's terminal line number, or DET for detached jobs JOBNflM the job name

SIZE the job's core image size in K (1024-word blocks) TIME the job's total run time since login PL percentage of CPU time spent on this job recently SL service level reservation for this programmer SEG job number of this job's upper segment

SII10 number of ticks between startups of job's PDP-18 spacewar module SU6 number of ticks between startups of job's PDP-6 spacewar module

38 System Program Commands 5.9

After the job display comes a similar display for upper segments, containing the job number, job name, core size, and number of jobs using the segment.

The next part of the WHO display is a summary of overall system statistics. This includes the time since the system was last restarted (UPTIME); short and long term time spent running the null job (NULTIHES); short and long term time spent running the null job when another job wanted to be run but wasn't in core (WASTED); total user core image sizes in core and swapped out (CORE); the largest contiguous free block of core, the total available user core not used by locked-in jobs, and the total available user core (USABLE); the number of jobs in RUNQand TQ, and their combined core image size (RUNNING JOBS); and the total service level reservation for logged-in users (TOTAL SLEVEL).

The final section of the WHO display is a list of all I/O devices in use by programs or assigned by jobs. For each such use of a device (at most one per device except for DSK), a line is displayed containing the logical name, if any; the physical name; the character "•" if the device was assigned by the ASSIGN command; the job number using the device; if a particular file is open, the file name, extension, and directory ppn (for disk files), the number of records in the file, the record currently being read or written, and the read/write status. This last will be W if the file is open for output, R for input, or RA for read/alter mode, followed by E if the end of file has been read. Note: if the file has been closed, there may be no mode flag, and a large number like 1101 in the current-record position. Record numbers are displayed in octal.

On display terminals, only a part of this display can fit on the screen at any time. Single-character commands can be typed to WHO which provide "scrolling" of the display as well as other functions. The following commands are understood:

4- scroll down 1/2 screen size

t scroll up 1/2 screen size

N run forever (otherwise UHO exits after nothing has been typed In

for two minutes) R only display jobs which have recently been Running

(not in NULQ, STOP, IOUQ, or INTU) n only display fly jobs (login or alias programmer name must agree

with user's login or alias programmer name) N restore Normal display (all jobs) E Exit, leaving information displayed on the screen and with the

page printer set up to avoid erasing it 1-9 rtptat argument for I or t

Any other character will make WHO restore the page printer to normal and exit.

5.10 FIND

The FIND command is used to locate information in a file by searching for a keyword and typing out the "paragraph" in the file containing the key. The main use of this program is to look people up in the AI Lab telephone directory. FIND may be run without logging in first.

/ The syntax of the FIND command has the following form (brackets denote optional things):

FIND [EXACTLY] key t [IN) [file]]

5.10 FIND 39

If file=PHONE or is omitted entirely, the AI Lab telephone directory is read. Otherwise, the specified file is read.

If a key contains any spaces or tabs, it must be separated from the file name (if present) with the word IN, or delimited by " characters or the quote pair ' ... '. A ' or ' character may appear in the former, and a " may appear in the latter. If the number of spaces and tabs in the key is significant (in EXACTLY mode), the quoted form must be used. See the examples.

The file is logically divided into paragraphs. A paragraph consists of twenty or fewer consecutive non-blank lines on one page. FIND searches the file for paragraphs that contain the key. Each paragraph containing the key is a hit and is typed out. Also, the hits are counted and the count is printed at the end.

The EXACTLY qualification causes FIND to search for an exact match. Otherwise it performs a template match. A template match recognizes two special symbols in the key: space (one or more consecutive spaces) and ellipsis (three or more consecutive dots). A space in the key matches zero or more spaces, tabs, and carriage returns in the paragraph. An ellipsis in the key matches zero or more arbitrary characters in the paragraph. Furthermore, in a template match, upper and lower case letters are equated. The EXACTLY search is somewhat quicker.

Examples:

FIND John. . . lathrop<cr>

*McCarthy, John (Prof. John) 288 PmTC*,Jt1C] 2 888

* 846 Lathrop Dr., Stanford, (9) 321-7580

1 HIT ON KEY - John... lathrop

FIND BRIAN HARVEY

will look up "BRIAN HARVEY" in the phone directory unless you have a file named HARVEY, in which case it looks up "BRIAN" in HARVEY.

FIND BRIAN K. HARVEY

looks up "BRIAN K. HARVEY" in the phone directory in either case.

FIND 'BRIAN K. ' HARVEY

or FIND BRIAN K. IN HARVEY

looks up "BRIAN K." in HARVEY.

FIND BRIAN IN

looks up "BRIAN IN" in the phone directory unless you have a file named IN, in which case it looks up "BRIAN" in IN.

40 System Program Commands 5.11

5.11 Other System Information Programs

This section describes other commands which run information programs. All of them are allowed to be run without logging in.

The WHERE command types out information similar to WHO for jobs belonging to a particular user. It takes a PPN or programmer name as argument, and for each job whose login or alias PPN matches the argument types out the job number, PPN, job name, core size, queue, total run time, actual time when the job was last run, terminal, and alias if any. (The terminal is listed by type and unit number, e.g., TTY5, III23, DD56, PTY121. Note that these are not actual physical device names recognized by the system, except for TTYn.)

If you are logged in and run WHERE, you can give the REENTER command and type in a job name. WHERE will then list all jobs with that job name.

The FINGER command also lists jobs belonging to a particular programmer, but provides different information: the job number and job name, the programmer name, the real name of that programmer if known to the system, the number of minutes since the job was last run, the terminal number (and type, as in WHERE), and the actual location of the terminal (room number, if in the lab, and whose office it is). FINGER with no arguments displays all jobs which are logged in.

The HELP command provides information about system programs. It takes a program name as argument, and runs the COPY program, which types out the file NAME[3,2] where NAME is the argument. HELP with no argument lists the available HELP files. HELP files are generally very short descriptions which refer you elsewhere for complete documentation.

The SYSTAT command types out a system status description similar to that of WHO. The WHO version is better, and SYSTAT is rarely used.

5.12 Miscellaneous System Programs

The commands in this section run miscellaneous system programs. Except for FIXIMLAC, they require that you be logged in.

RSL runs the RSL program, which is used to reserve service level (i.e., better service). The command takes no arguments. The meaning of service level and the use of RSL are described in Appendix 6.

The LISP command runs the LISP interpreter. It takes no arguments. Note: when the system wizards need a command table slot to patch in a new command, LISP is the first to go. Therefore, it may not always exist. R LISP has the same effect and always works.

The FIXIMLAC command is used to initialize IMLAC terminals. (These are terminals which are treated as Teletypes by the monitor, but are actually small computers with display screens.) With any luck, you will never see an IMLAC. Just in case, the command is explained in Appendix 7.

5.12 Miscellaneous System Programs 41

The XEROX command runs the XEROX program, which does file formatting to produce pretty documents. It has nothing to do with the Xerox Graphics Printer. XEROX has been largely replaced by PUB, a more versatile formatter. The XEROX manual is the file XEROX.LESCUP.DOC].

The TELNET and TN commands (TN is used to abbreviate TELNET) run the T program, for talking to another computer on the ARPA network. The site name of the computer you want to use is the argument. If you end the command line with ALT instead of RETURN, the program will attempt to connect to the remote computer even if the monitor thinks it's down.

The FTP command takes an ARPA site name like TELNET, but runs the FTP program to carry out the File Transfer Protocol for copying files between computers.

Further details on T, FTP, and the ARPA net in general is contained in Appendix 8 of this manual.

42 Privileged Commands

SECTION 6 PRIVILEGED COMMANDS

Certain command functions can only be used by privileged users. (There are several privileges which may be associated with a PPN.) Most privileged functions are carried out by programs and are documented with those programs, but a few monitor commands themselves take on special meanings when used in a privileged way. Most users do not require any privileges; if you think you need to be assigned any, see a system programmer, who will disagree.

The DETACH command, if given with a device name argument by a user with the DEV privilege, makes the specified device unavailable to users. This is intended to be used for hardware maintenance. The ATTACH command with device name argument, also privileged, assigns a detached device to the job giving the command; it becomes generally available when the job deassigns it. These commands also accept pseudo-device names of the form DDn, to make Data Disc channel n unavailable.

The KILL command can be used to kill any job by a user with the KIL privilege.

The TALK command is always successful, even to a terminal in user mode, if given by a user with the TLK privilege.

The EDDT command can be given only from the PDP-10 console Teletype. It stops timesharing and starts Executive DDT to allow debugging of the monitor.

Appendix 1 43

APPENDIX 1 RPG

RPG, the Rapid Program Generator, is a program which interprets certain monitor commands for editing, compiling, and loading programs. It simplifies these tasks by expanding concise user commands into the different forms used by editors, language processors, and the LOADER. Without user intervention, RPG will run the correct language processors to translate the user's files. It will run the LOADER to create an executable core image containing the user's program. The monitor provides several commands that run RPG.

This appendix is excerpted from the RPG manual, SAILON 51.1, on the disk as RPG.REGtS.DOC]. It does not include the section on the internal workings of RPG.

RPG knows about certain standard processors. These are the editors: TV, SOS, and TECO; the compilers: SAIL, FAIL, F4 (FORTRAN), MACRO, OSAIL (Old SAIL), NSAIL (New SAIL), and PUB (Document Compiler); the debuggers: RAID and DDT; and the LOADER.

The E editor includes within it the RPG functions, so its "RPG" commands run E directly rather than via the RPG program. Nevertheless, the E commands are included here because they are operationally similar.

The RPG commands are divided into three classes, EDIT, COMPILE, and CREF.

EDIT-Class Commands

There are eight EDIT-class commands, two for each of the four commonly used editors:

Command Name Program Create File Edit File

SOS CREATE EDIT

E CETV ETV

TV CTV TV

TECO MAKE TECO

CREATE, CTV and MAKE

These commands take a file name as the argument. RPG will call the editor and tell it to initialize the file of that name. For CREATE, SOS is started in line insertion mode. The TV editor will initialize the file and allow the insertion of text on page 2. TECO (the MAKE command) will be initialized to write on the specified file.

44 RFC

EDIT, TV and TECO

These commands take a file name (with optional project-programmer name) as the argument. RFC remembers the name of the last file that was edited (except that LOGOUT makes RPG forget). If an EDIT-class command is given without an argument, RPG will use the argument that it remembered.

If no extension i$ specified in the argument and no file with the given name and blank extension can be found, then the user's directory is searched for any file with the given name and one of several standard extensions. The standard extensions are searched in the order: NSA, OSA, SAI, FAI, MAC, F4, LST, WRU, PUB, and CMD.

If a user specifies a disk area other than his own current (logged in or aliased) area, then the edited file will put on hJs disk area and the source (from the other area) will not be changed.

The editors have a read-only mode in which files may be examined by using editor commands, but not changed. To get read-only mode type /R after the file name in the edit command (e.g., TV M.SAI/R). Read-only mode in SOS prohibits any commands that would change the file. In the display editors, the mode may be changed from read-only to read-write at any time. In TV, there is a no-directory mode, specified by the switch /N.

CETV and ETV

These are the create and edit commands for the E editor. They do not run the RPG program; instead, E itself simulates the RPG functions. There are several differences between these and the other editor commands:

1. E saves its edit commands not on the disk, but in a TMPCOR file, i.e., a simulated file kept in core by the monitor until the job is logged out. The LOGOUT program copies these files to the disk of you use the RPGSAV option.

2. The command can include /nP and /nl_ switches for page and line numbers as well as /R and /N. E saves its position in the file when it exits, so a later ETV command with no argument will continue the edit from the same point in the file.

3. E allows you to edit a file in another dsk area by including the PPN in the command, rather thin copying the file to your own area as RPG does for the other editors. Also, since TMPCOR files belong to a job rather than a PPN, changing your alias does not change the saved edit command which E finds.

Appendix 1 45

COMPILE-CUiJ Commands

The COMPILE-class commands arc an abbreviation for a series of commands to compilers (and other language processors) and the LOADER. Here is a brief summary of the commands:

REL file Core Image Debugger Execution

COMPILE yes

LOAD yes yes

PREPARE yes yes

EXECUTE yes yes

TRY yes yes

DEBUG yes yes

PUB

yes

yes yes

starts the user program starts the user program starts the debugger

document compilation

The COMPILE-class commands, like the EDIT-class commands, remember their argument list. If the user does not supply explicit arguments, RPG uses the same arguments that were used in the previous COMPILE-class command. Arguments are remembered in the disk files QQSVCM.RPG (COMPILE-class) and QQSVED.RPG (EDIT-class), which are usually deleted by the LOGOUT program. RPG actually remembers the last COMPILE-class command that had explicit arguments; both the command and the arguments are remembered. This is useful because all the editors allow an exit-and-go command (in SOS, the G command; in TV and E, the CONTROL-X G command; in TECO, the EG command). The exit-and-go feature runs RPG in a special way which makes RPG re-execute the command that it remembered.

PUB, the Document Compiler, is a special case: it does not translate computer programs into REL files, but documents into DOC files. The PUB command is used to compile a PUB document; the other COMPILE-class commands do not recognize PUB. The PUB command is remembered in a QOSVCM.RPG file, like the other COMPILE-class commands.

COMPILE

The argument should be one or more file descriptors, separated by commas. RPG will cause the appropriate translator to be used for each of the files. The translator that is used is determined by the the extension of each file. The standard extensions and translators are:

Extension

Translator

SAI

F4

FAI

blank

MAC

OSA

NSA

SAIL

FORTRAN

FAIL

FAIL

MACRO

OSAIL (Old SAIL)

NSAIL (New SAIL)

The decision about whether to compile is made for each file by comparing the source file date (and

-16 RFC

time) with the corresponding REL file date. If there is no REL file, or if the text file has been edited since the creation of the REL file, then the source file will be translated again. If the REL file is up to date, no compilation is done. For example, if the files FOO.FAI, GARP.FAI, and BAZ.F4 are to be compiled, the command: COMPILE FOO.GARP.BAZ would be suitable. Only those files that have changed since the creation of their corresponding REL files will be compiled.

Note that the COMPILE command does not produce a core image. To get an executable core image one of the other COMPILE-class commands must be used.

LOAD

LOAD does a COMPILE if necessary and then starts the LOADER. The LOADER takes the REL files that were generated by the compilers and combines them into an executable core image. When the LOADER is done, it exits to the monitor. This command makes a core image but does not start it. If any SAIL program is loaded, the LOADER will be instructed to request the current SAIL segment.

PREPARE

PREPARE is like LOAD, but a debugger (RAID or DDT) is loaded with the user's program.

EXECUTE

This is like LOAD, but instead of exiting, the LOADER starts the program it loaded at its specified starting address.

TRY

TRY is like EXECUTE, but it loads a debugger (RAID at displays, otherwise DDT) with the user program(s). Execution starts at the program's starting address.

DEBUG

DEBUG is like TRY except that rather than starting the user's program it starts the debugger (RAID or DDT). The user may give commands to the debugger to start his program, to plant breakpoints, etc.

Switches and Project-Programmer Names

Switches are allowed in COMPILE-class commands by including a slash (/) and the switch name, e.g., /LIST. Switches allow the user to select options. In general, a switch placed before a file name is sticky, i.e., it applies to all the terms that follow. Switches placed after a file name are not sticky; they apply only to the preceding term.

Many switches have inverse switches that undo the effect of the switch. For example, /NOLIST is the inverse of /LIST. The inverse setting is the default for all switches.

Appendix 1 47

A project-programmer name (PPN) may be included with each file name in the command. The PPN specifies the disk area from which the file is to be read. The PPN, enclosed in square brackets ( [ and ] ), usually follows a file name; in this case the PPN applies only to the preceding- term. If a PPN appears before a file name, then that PPN is sticky for the rest of the command until another sticky PPN is seen.

A name followed by a colon (:) is a device name (which is sticky).

Switch Function Summary

/COMPILE

/CREF

/DUMP

/FAIL

/FORTRAN

/FORWARD

/LIBRARY

/LIST

/MACRO

/MAP

/NODUMP

/NOLOAD

/NOSAISEG

/NONSTANDARD

/NSAIL

/OSAIL

/REL

/SAIL

Force re-compilation without checking the dates of REL files

Request a cross-reference listing

Force the LOADER to make a DMP file of the core image

Use FAIL for this term

Use F4 (FORTRAN) for this term

Prevent RPG from looking for this file to decide if the REL file is up to

date

Force the LOADER to search this term as a library

Request a listing file

Use MACRO to translate this term

Request a LOADER map of global symbols

Force re-loading without checking the dates of DMP files

Prevent a loading request for this term

Load SAIL programs with the SAIL library instead of the SAIL segment

Specify a nonstandard processor

Use NSAIL (New SAIL) to translate this term

Use OSAIL (Old SAIL - 1971 version) to translate this term

Force loading from the REL file without considering the source files

Use SAIL to translate this term

Switch Names and Abbreviations

Switch name

Abbreviation

Inverse name

Abbreviation

/COMPILE

/CREF

/DUMP

/FAIL

/FORTRAN

/FORUARD

/LIBRARY

/LIST

/MACRO

/MAP

/NODUMP

/NOLOAD

/NONSTANDARD

/NOSAISEG

/NSAIL

/OSAIL

/REL

/SAIL

/COM

/C

/D

/F

/FORT

/FORU

/LIB

/L

m

/NOD

/NOLO

/NON

/NOSA

/NSA

/OSA

/R

/S

/NOCOMPILE /NOLIST

/NOTFORWARD

/NOSEARCH

/NOLIST

/LOAD

/NOC /N

/NOT

/NOSE

/N

/LO

48 RFC

Generation of REL Files

The simplest way to translate several programs is to create them with file extensions which define the processor to be used; then give a single COMPILE command with all these names separated by commas. (It is usually a bad idea to have two programs in different languages with the same file name, e.g., FOO.SAI and FOO.FAI.)

RPG does not require file extensions to be typed explicitly. For the command COMPILE FOO, RPG will look for any file named FOO and check its extension. If a file FOO is found that does have one of the standard extensions, RPG will select the corresponding translator.

If a file does not have a standard extension, RPG can be told which translator to use by giving that information in the command string. For example, to translate the file SINE with the SAIL compiler use the command: COMPILE SINE/SAIL. If there is a list of several file names, the processor name may be used after each file name, or before the entire list. For example,

COMPILE FOO/SAIL.BAZ/SAIL

is the same as

COMPILE /SAIL FOO.BAZ

The command:

COMPILE /SAIL SINE.IOPACK/FAIL.TJ

would use SAIL on SINE and TJ, and would use FAIL on IOPACK. The default processor is initially FAIL. Caution: if a file does have a standard (non-null) extension, RPG cannot be convinced to use some other processor.

Every time a switch like /FORTRAN appears in front of a file name, it changes the normal mode. For example,

COMPILE /SAIL SINE, COSINE, /FORTRAN TANGNT.COSEC

would cause SINE and COSINE to be translated by SAIL, and TANGNT and COSEC to be translated by FORTRAN.

The compilations that are requested will not take place if there already exists a REL file whose creation date is more recent than all of the files used in producing that REL file. If any source file is edited, it will have its creation time and date updated so that it will force re-compilation. A user may force re-compilation, if he wishes, by including /COMPILE in the command line. That is,

S

COMPILE /COMPILE FOO

will compile the file FOO regardless of its creation date. Date checking can be forced again by including /NOCOMPILE in the command line. Including /REL will cause RPG to forget about looking for source files at all and just proceed to generating a core image from the existing REL files.

Appendix 1 49 Concatenation of Source Files

It is often desirable to break up a program into two (or more) separate files which have only one END statement at the end of the last file. One reason for breaking up a program is because it is very long, and it would be inconvenient to keep and edit such a large file. Another reason for separating a program is to allow a portion of the program text to be shared. Several files can be processed together as one big translation by separating their names with plus signs (+) rather than with commas. For example,

COMPILE DATA+PROGRM

treats the files DATA and PROGRM as if they were one large file and produces one relocatable binary file, PROGRM. REL. A maximum of 40 files may be combined in this way. RPG will not allow concatenation of source files that specify inconsistent processors.

Normally, the REL file will have the name of the last file in the command string; it can be given some other name by putting the desired name and an equals sign (•) at the front of the argument list, e.g.,

COMPILE FOO-SYMS+PROGRM+IOPACK

would do one translation as if SYMS, PROGRM, and IOPACK were one large file and produce relocatable binary output on the file FOO.REL.

Occasionally, a header file must be assembled with several other files, e.g.,

COMP I LE ACUMS+S I NE , ACUMS+COS I NE , ACUMS+TANGNT

The brokets (< and >) feature allows this to be done more simply:

COMPILE ACUMS+<SINE,COSINE,TANGNT>

Producing Symbolic Listings

Assembly listings have the original code as it appears in the file plus the octal values that the code represents with the relative locations that the octal values go in. Assembly listings can be generated by means of a /LIST or /CREF (cross-reference listing) switch in the command. The /LIST switch will produce a file with the same name as the REL file and extension LST. Such a file may be spooled or typed. Note that COMPILE FOO/LIST will not compile anything if a current FOO.REL exists. This is another instance where the /CGtlPILE switch is useful. The /LIST may be used as a sticky switch or it may be applied to particular terms. The inverse switch is /NOLI ST. (Processors other than the assemblers may also produce listings.)

If the /CREF switch appears, instead of /LIST, it generates an expanded listing that includes a list of all the symbols (identifiers) used in the program and the line numbers on which each symbol

50 RFC

appears. This is called a cross-reference listing. These listing files cannot be printed directly. Instead, they must be processed by the cross-reference lister program, CREF. This is done by the CREF command (see page 54). Note: not all the processors can produce a cross-reference listing. Consult the appropriate manual to find out if a given processor is capable of generating one.

Command Files

COMPlLE-class commands are sometimes too long to fit on one line, or are too complex to be typed correctly every time. To solve this problem, arguments can be read from a file. The text contained in such a file is read by RPG as if it had been typed as the arguments to a command.

The command file may contain any features available in a COMPILE-class command. Also, if the command is too long to fit on one line of the file, a semi-colon (;) placed at the end of a line signifies that the argument list will continue on the next line of the file.

To use a term as a command file write an at sign (®) before the command file name, e.g., LOAD eSYS. The command file SYS might look like the following file which is used to assemble the entire operating system:

%S%B SYSTEM-OUTER (XLR)+JOBDAT+ALLDAT+IMPDDB;

+LOUCOR+PARSER+S YS I N I +COMCSS+CLKSER+UUOCON+SCHEDU+CORE ;

+DSKSER+DSK I NT+DTCSER-t-flTCSER+XGPSER+FBPACK ;

+ 1 MPCLK+ 1 MPREG+ 1 MPUUO+ 1 IIP I NT ;

+LPTSER+PTPSER+PTRSER;

+DPYSER+TTYSER+L I NED+SPWSER+TVSER+ADSER+MA I L j

+PATCH+SYSMAK+DDT+ONCE

There are two things in this command file which have not yet been explained, LOADER switches (see page 54) and translator switches (see page 52).

Generating Core Images and DMP Files

The commands EXECUTE, DEBUG, LOAD, PREPARE, and TRY each generate an executable core image. Core images are made by translating source files (as in the COMPILE command) and then running the LOADER, which takes the REL files and produces a core image from them.

With DEBUG, PREPARE, and TRY, the LOADER is instructed to load a copy of RAID (or DDT if the user is at a Teletype) and the program symbol table with the core image.

If /HAP is included in the command string, the absolute values of all the global symbols are listed in a legible way on the file MAP. MAP.

A disk dump of the core image can be made by including /DUMP in the command string. The dump file will have the same name as the first REL file and extension DMP. The DMP file can be

Appendix 1 51

given some other name by putting the desired name and a left arrow («-),in the command string. For example, the command

TRY DUhP-S I NE, COSINE /DUMP

translate? the programs SINE and COSINE, producing SINE.REL and COSINE.REL. The LOADER is run. Because the TRY command requests a debugger, RAID.REL (or DDT.REL) ir loaded from the system area. SINE.REL and COSINE.REL are loaded next. Then the LOADER makes a dump copy of the core image in the file DUMP.DMP and starts the program.

If there already exists a DMP file of the right name and if it has a creation date more recent than those of the source files, no loading will be done. Instead, the dump copy itself will be called in. Reloading may be forced by the /NODUMP switch in the command line. Both an equals sign and a left arrow may be included in a command string. For example:

COMMAND REL DMP

TRY SINE+COS/DUMP COS. REL COS. DMP

TRY DUHP^SINE-i-COS/DUnP COS. REL DUMP.DnP

TRY DUW-SINE+COS/DUMP DUMP. REL DUMP.DNP

TRY FOO«-DUMP=SINE+COS/DUMP DUMP. REL FOO.DMP

Library Searches

Several REL files may be combined into a library. A library is a special REL file from which routines may be independently selected. Library files are made by combining REL files together using the FUDGE2 program (which is described in DEC documentation). For example, sine, cosine, and tangent routines might be combined into a trig library, TRIG. REL. Then, if a particular program used just the sine routine, instead of loading the entire trig package it would be able to select only the sine routine. The LOADER will search library files and load only the programs that are needed. The /LIBRARY switch after the name of a library file tells RPG to request this LOADER feature. The /LIBRARY switch may also be used as a sticky switch; its inverse is /NOSEARCH. Suppose there is a program called NLT which uses the sine routine that was included in TRIG. REL. Then the command LOAD NLT, TRIG/LIBRARY will cause NLT to be loaded and TRIG to be searched. The LOADER notices that NLT requires SINE.REL and searches TRIG. REL for it. Suppose another program, XLT, requires routines from two library files, TRIG. REL and IOPACK.REL, and must be loaded with another program LT. Then any one of the following commands could do this:

LOAD XLT, LT, /LIBRARY TRIG.IOPACK

LOAD /LIBRARY XLT/NOSEARCH.LT/NOSEARCH, TRIG, IOPACK

LOAD XLT, LT. TRIG/LIBRARY, IOPACK/LIBRARY

Programs which use library files must be placed before the library file names in the command. This is because the LOADER cannot know what routines to extract from each library until it has loaded the programs that require library routines.

52 RPG

Nniutandard Processor Features

Processors other than SAIL, FAIL, FORTRAN, PUB, or MACRO may be specified by using the non-standard processor feature. The switch /NONSTANDARD DEV:NAHE specifies a nonstandard processor. In this switch, DEV (assumed to be DSK, if absent) is the device name on which to find NAME.DMP, the core image file of the nonstandard processor. Once the /NONSTANDARD switch is used, RPG will recognize the extension NAM (i.e., the first three letters of the processor name) and the switch /NAME (the processor name) in the command line. A project-programmer name may be used in specifying the non-standard processor.

For example, for a user to translate the program SINE using a processor named PROG on his disk area, he. could use the command: COMPILE SINE/NONSTANDARD PROC.

When a standard processor is used, it is known that it will take a text source file and produce a binary REL file, and possibly a text LST file. With nonstandard processors there is no such guarantee. A nonstandard processor may process a text file into a new text file which becomes input to a standard processor. It is possible to specify all these functions in a single COMPILE-class command.

If a nonstandard processor generates a text file instead of a REL file, loading must be inhibited. The /NOLOAD switch accomplishes this. The /NOLOAD switch must be used for each term that does not produce a REL file (except in the COMPILE command, which does no loading anyway). The inverse switch is /LOAD.

Suppose the preprocessor, NSP, translates the file BAZ into a file FOO which is a FAIL program. FOG must be translated when NSP is done. Also, MAIN and SINE must be translated and loaded with FOO. The command:

LOAD FOO-BAZ/NONSTANDARD NSP/NOLOAD,nAIN,SINE,FOO/FORUARD

will do all of this. The /FORUARD switch is necessary because the file FOO does not exist at the time the command is given. Including the /FORWARD switch prevents RPG from looking for FOO; RPG will assume that FOO magically appears before FAIL is called. The inverse switch is

/NOTFORUARD.

The processor DO (see Section 5.7) is another example of a nonstandard processor. The DO program writes QOJ5VCM.RPG to force the exit-and-go command from the editors to run DO again.

Translator Switches

Switch names enclosed in parentheses "("and")" are passed directly to the translator. The documentation for each of the translators explains what switches are available. The switches passed in this way appear on the source file specification. Sometimes it is necessary to put switches on the binary or listing term. For this purpose, there are two other switch constructions.

Appendix 1 53

The construction (#1,#2), where *1 and *2 are any switch strings, passes «1 to the binary term and *2 to the source term. The construction (#1,#2,#3) passes «1 to the binary term, *2 to the listing term, and *? to the source term. For example,

COMPILE/LIST FOOCAX.BY.CZ)

will pass the switch string "AX" to the binary term, "BY" to the listing term, and "CZ" to the source term.

The PUB command will take PUB switches enclosed in parentheses and pass them on to PUB.

54 RFC

LOADER Switches

Switches to the LOADER may be specified in a COMPILE-class command. A percent sign (%) followed by a letter (or a number and a letter) in the command string of one of the LOAD, TRY, EXECUTE, PREPARE, or DEBUG commands directly specifies that switch to the LOADER. The following are the legal LOADER switches:

%A Causes a listing of all global symbols to be printed

%B BLT symbols down when clone loading

%C Cham beginning with Common

XD . Load DDT

%E Start up program when done loading

%F Enter library search mode; search all default libraries

%G Finish loading, make final links, and exit

%H Load and start RAID

%I Ignore starting address of this program

%J Use starting address of this program

%nK Adjust to n K of core when done loading

%L Search this file as a library

%M Print storage map

%N Leave library search mode

%nO Set program origin to n, absolute

%P Inhibit automatic library search for undefined globals

%Q Allow automatic library search

%R Chain beginning with resident module

%S Load symbol table also

%T Load and start DDT

°/U Print current list of undefined globals

%V Load RAID

%U Load without symbols

%X Do not list all globals

%Y Load SAILOW for 2 segment SAIL programs

%Z Restart LOADER

%< Load high segment

For a full description of what these switches mean, consult the DEC LOADER documentation.

The LOADER has been modified for Stanford, so the DEC documentation does not accurately reflect the state of the software. Consult a wizard if necessary.

CREF Command

This command causes a cross-reference listing to be made on the line printer. All the files made from COMPILE-class commands which used the /CREF switch are listed. (LOGOUT makes RPG forget which listing files to process.) The CREF command activates RPG which in turn activates the CREF program in a special way. The CREF program when activated in this way reads a file that RPG wrote which contains the names of the files to process.

Appendix 1 55

Error Messages Obvious errors

COMMAND ERROR

TOO MANY SU ITCHES

UNRECOGNIZABLE SWITCH

DEVICE NOT AVAILABLE

TOO MANY NON-STANDARD PROCESSORS

Subtle errors

UFD HASHING ERROR INCITED BY DCS

Probably you have too many files on one disk area.

TOO MANY NAMES

Your command included too many file names or non-standard processor names.

PROCESSOR CONFLICT

A + construction specified files with different extensions, e.g., COMPILE FOO.SAI+BAZ.FAI.

NESTING TOO DEEP

Too many levels of command files.

NO SUCH FILE

Some LOOKUP failed. A file named in the command does not exist.

Horrible errors (A wizard should be consulted)

DISK NOT AVAILABLE INPUT ERROR READING UFD INPUT ERROR NOT ENOUGH CORE

OUTPUT ERROR

Some file could not be written correctly. Possibly a file is write protected. Otherwise you may need help.

UFD LOOKUP FAILURE

You are aliased to a non-existent disk area. Otherwise, you need a wizard.

56 COPY

APPENDIX 2 COPY

This appendix is taken from COPY.RPH[S,DOC], SAILON 61.1, the COPY manual. The manual first describes the basic COPY command with all possible options, and then lists the other monitor commands which run COPY and describes their special functions.

Syntax

In this section the following rules are observed. Anything in curly brackets is optional. Anything

enclosed in brokets (e.g., < >) has a syntactic definition of its own and is described elsewhere.

Upper and lower case letters are legal anywhere. A break character is something which is not a letter, a number, or a "•:•". This will become important when you try to figure out some of the error messages. In this manual the term sticky means that the sticky item is applicable until changed or until the end of the current command.

The basic syntax for all COPY commands is:

COPY (l<dest 'mat ion term>) {, < M st term>( *-l <source term>

"=" may be substituted for "«-".

<d8Stination term>::» <suitch term>

<source term>::= <switch term> l,<sourcc term>)

<suitch term>::= Uswitch I ist>spacel <term> l<swi tch list>l

*list term>::= <t«rm>

< term>: : = Idev: I If i I nan I. ex t) I I Ip,pn) I

I Uswitch I ist>l ldevi>|[p,pn]| Uiuitch iist>l C'spec term>

I \<f i lehack s«lector>

I 31 <pn> I * I <spec torm>::= Uspec switch I ist>spaceltd«v: I If i Inam I ,«xtl I

I [p,pn] I l<spec switch list>l

^snitch list>::= l/<swi tch>l I (<paq» I ist>) ! Usui tch list>l

<sp«c switch list>::= l/<su i tch>l !<sp«c switch list>l

<pacie list>::» <paqe

term>::* NltHI

General Operation

COPY reads data from the logical file(s) indicated by the source term, performs any operations requested by the switch term(s), and writes the data on the logical file indicated by the destination term. Any listing information goes to the list term.

Appendix 2 57

Dev and p,pn are sticky in the source; that is, if they are absent, the last one specified is used. The default device is DSK and the default p,pn is blank (those of the current job).

A single * may be substituted for any of the following:

f i Inam ext

P pn

A * in the source term means "all." A * in the destination term means "same as in source file being transferred."

If filnam.ext is absent in the destination term, *.* is assumed. If the destination filnam.ext are specified (no ^'s), all source files will be concatenated into one big file with that name.

For example:

COPY DING-FOO.BAZ

would cause a file named DING to be created on your disk area comprised of the files FOO and BAZ from your area. If f i Inam.* or *.ext is used in the destination term, the source files will be copied onto the destination one by one with the new filename or extension. <desti nation term>«- may be left out and DSK :*.*«- will be assumed. For source terms with directory devices you must specify the filnam.ext.

If you try to write on top of a file which already exists, you will be given the option of deleting it or not. If any of the source files you have specified do not exist, you will be informed and given the proper option.

If a string of source descriptors is specified, the string is executed from left to right.

You cannot write a file in two different modes (e.g. FIL1*-TTY: ,DSK:FIL2). However FIL1-TTY: , DSK: FIL2/ASCI I is quite acceptable (/ASCII causes the data mode to be 0). Data modes are explained in the UUO Manual.

The <spec term> construct causes the scanner to continue scanning in the file specified by the term. The term must indicate a unique file. When end of file occurs the scanner again reads from the terminal. No spec terms may appear in the file. Switches preceding the "@" are treated as sticky switches. Switches following the "s" are treated as sticky switches only while reading from the indirect file. In a sense the indirect file is a "program block." Upon leaving the "block" all defaults are reset to those in force just before the "@". A device name and p,pn may precede the "@", in which case the defaults are changed to those, but no operation is done. The device and p.pn used in the spec term do not affect the current defaults.

58 COPY

The \<f i lehack selectors construct for a term is a special shorthand feature to allow commonly referenced files which would normally require a large amount of typing to be entered quickly. The following is a list of legal filehack selectors and what they are short for (<pn> stands for the current programmer name right adjusted):

F i lehack

Selector File selected What for?

I1RIL <pn>.nSGl2,2J User .pn>' s ma i I file

NSG <pn>.HSGt2,2]

nniNT MflINT.TXT[2,21 5 day computer maintenance forecast

NOTICE NOTICE. TXTt2,2J Public mail file

RPG #.RPGU,<pn>] fill of current user's RPG files

NAP <pn>.NflP[2,21 PP news notification file

OPTION OPTION. TXT[*,<pn>] fill of current user's option files

DRY DflY.TXT(2,2J Daily birthday or holiday message

The 5 \ <pn> | * 1 construct is another form of shorthand for referencing MAIL files (see Appendix 4). If no argument follows the 3 then the current user's mail file is indicated. If <pn> is used, it means that user's mail file. And lastly, if * is used the file NOTICE.TXT[2,2] is selected (this is the public mail file).

There is a page counter in COPY which monitors ASCII output for form feeds. When a form feed is encountered, the counter is incremented. If a page list is used in a term, N is taken as the starting page of this output and M (or N if M is absent) as the ending page. Output is only active when the counter is within the range of the page list (e.g., LIST COPY (21) would list page 21 of the file COPY). When the end of the first term is exhausted, control is transferred to the next term, and so on until the right parenthesis is reached, at which point output ceases. If more than one file is indicated, the page list is re-scanned for each one. Page lists are never sticky.

Switches will be described in a section of their own. See /LIST for an explanation of "list term."

Logical device names may be used, but all switches apply to the physical device. The following are legal physical devices for the copy command:

DSK

UDP

DTfln

MTRn

TTYn

TTY

LPT

XGP

PTR

PTP

When the special character i (TA on Teletypes) appears, the scanner will read the line character-by-character without interpretation until the next i (or TA). This is useful for allowing non-alphameric characters to be included in filenames, e.g., editor or spooler temporary files.

For numeric input there is always a default radix (either decimal or octal). Sometimes, however, it is desirable to force one or the other. A number preceded by a single quote is always interpreted in octal. A number preceded by a double quote is always interpreted in decimal.

Appendix 2 59 Device Peculiarities

Non-Directory Devices:

If the source device doesn't have a directory and the filename and/or extension is specified by a *, then a generated filename and/or extension is used. The generated filename starts out as AAAAAA and the generated extension starts as COP. Either of these may be changed by specifying- a filnam.ext in the source term. If a star is used, the old name is retained; otherwise it is replaced by the new one. At the beginning of each term the filename is either changed to that which was specified or incremented by one letter (i.e. AAAAAZ.COP is followed by AAAABA.COP). The following example may clear things up:

COPY DSK:*.*«-nTA8:,,FOO.*,,*.BAZ

This would read 5 files from MTAO and give them the following names:

FOO.COP POOR. COP FOOB.BRZ

Disk:

If you attempt to write on an area which is protected by a password, you will be asked the password. If you answer <cr> to the request for a password COPY will assume that you don't know it and do the appropriate thing. You may delete files belonging to other users (please exercise extreme care). However, if you attempt to delete a file on a user file directory whose programmer name is different from the one you used when logging in, you will be asked if you are sure. All normal file protection applies to deletions.

User Disk Pack:

COPY has all the routines to make access on a user disk pack look like access on the regular disk. However, one must be sure to format his user pack before trying to use it (see Section 5.8).

DECtapes:

DECtapes are assumed to be in PDP-6 format (which is the current format our system uses). See the WO Manual for an explanation of DECtape formats. If the directory becomes full (more than 22 files), you will be told which was the first file not transferred. If the DECtape becomes full, the file currently being written may be incomplete. An attempt is made to detect this condition before the transfer is initiated, but this is not always possible. In order to write on a DECtape the OFF-WRITELOCK-WRITE switch must be in the WRITE position. If not, you will be told to set it.

Magnetic tapes:

Mag tapes may be made to look like directory devices by use of the /SAVE switch which is

60 COPY

described later. All mag tape switches are separate for input and output (see rules about switches in switch section). This means that mag tape switches in the destination term don't apply to the source terms.

Paper tape:

Paper tape I/O is done in binary non-checksummed mode unless otherwise specified (see /ASCII). You should turn off the paper tape reader when you are done. A paper tape with a jagged end may cause spurious data to be read. It is best to tear it evenly at a fold.

Teletypes:

Since some terminals cannot reproduce the full Stanford character set, COPY provides the standard SOS conversion for output of some special characters on model 33 and model 35 Teletypes which are not in full character set mode. See Appendix 13 for the SOS representation.

On display terminals, COPY displays the number of the page being read (if >2) if reading in mode 0, i.e., the number of form feeds seen +1.

Switches

The term sticky means "applies until the end of the line or until changed temporarily or permanently by some means." Most switches appearing in the destination term are carried over as sticky switches in the source. Those switches which are separate for destination and source terms are indicated by a star preceding the switch name. Switches appearing in the source term are sticky only if they precede the term with which they appear. Otherwise, they apply only to the current term and must follow it. Only the first six characters of a switch are significant. You are only required to use enough characters to uniquely specify the switch. The following switches are now available:

SH1TCH RBBREVMERNING

SSCII R This forces transfers to be in RSCII. Beware1 This switch Mill cause

SOS line numbers to become part of the text. RSK RSK This causes dev: f i Inam.ext [p,pn] to be printed for each file under

consideration followed by a question mark. If you answer "Y" the

operation will proceed, if you answer "G" the operation will proceed but

you Mill not be asked the for the rest of the term, otherwise the file

Mill be sk ipped. BINRRY B This causes the data mode to be 13 and forces word by word transfer of

data. BLOCKED BL This causes records to be ended on output whenever they are ended on

input. CONVERT C This causes copy to treat the character following a line feed and the

first character of a file as a FORTRRN control character. Be careful,

this happens on output. 4-DENSITY=n DE This sets the density in bpi to n where n equals 888, 556, or 208. This

switch is ignored for devices other than mag tapes. The system default

dens i ty is S56. *DSPOOL OS This switch, when used with destination or list terms, causes the output

file to be spooled with the /DELETE switch. Output device must be disk.

This switch Is illegal in source terms.

Appendix 2 61

DUMP

ou

SEVEN EXTRfi=n

EXTRfl=n FPST FONT#n=f i le

FOONLY

FULL GTOTRL

EV EX

EX

F

FON

FOO

FU G

HERDER

IGNI IGNO KILL

LIST

•:-MLENGTHmnnn NONUHBER3

ODD

OPTIMIZE

IGNI IGNO K

This causes each 36 bit word from the input device to be converted to

the RSC1I representation of the octal number it represents and to then

be sent to the output device. The following format is used. R "word

number" is sent to the output device which indicates which word in the

file is the first word In this row. Then 8 data words are transferred.

Then a <crxlf> is inserted. If desired, a "page list" may be used for

/DUMP; however, the values are those of word addresses In the file

instead of pages.

This sets mag tape transfers to even parity.

Whenever a line feed is seen n extra line feeds are put out; n must be

an unsigned decimal integer. If n=0 line feeds are converted to a 177

followed by a 21; this Inhibits form ejection at page boundaries on the

I i ne pr i nter .

(Note " = " not " = ".) This switch, used with the XGP only, sets the

intei line spacing to n raster units.

fill the names specified by the source term are listed (no size or other

info). This snitch is therefore much faster than /SERRCH.

This switch is used uhen copying to the XGP to select a font. Font

number n (default is 0) is taken from the specified file. The file

specification can include any of filename, extension, and PPN; the

defaults are FIX25.FNT[XGP,SYS1 .

This switch is used to produce a file directory listing meant to be read

by various programs rather than by a human being. The switch name

derives from the fact that the switch was created for the benefit of

layout and drawing programs used in the design of the late, lamented

SUPER FOONLY computer.

This forces all the directory information to be printed under /SERRCH

even if no list term was specified. This switch does not automatically

imply /SERRCH.

fit the beginning of the execution of a term the term is printed. Rt th»

end of the term, a line is typed of the form

TOTRL. x.x n BLK pp/t

where x.x is the size of the file in K and tenths (if the file is smaller than IK, the size in words is typed instead), n is the number of disk blocks allocated to the file, and pp is the percent of the allocated space which is actually used. This switch implies /SEARCH. This causes a header to be put out at what would be the top of each page on the line printer. The header looks like this:

OD OP

DRTE TIME

FILNflfl.EXT

P.PN

PHGE N-tl

The current date and time are used, N is the logical page number (number

of form feeds seen plus one), and H is the physical page of that logical

page.

This causes input errors to be ignored (no message).

This causes output errors to be ignored.

The input file is deleted after the transfer is finished, even if the

output filename is the same as the input filename. If the 260 bit in

the file's protection code is on, COPY asks before deleting the file.

This causes the names of the files transferred during that term to be

listed. If the input device is the disk the Ip,pn) are also listed.

Non-directory devices will obviously list nothing. The output Mill go

to the "list term". If the list term is absent, the output will go to

your terminal.

This allows the user to specify nonstandard length records for mag tape

I/O, where nnnn is a 1 to 4 digit number interpreted in octal uhich

specifies the number of data words per record.

This deities line numbers from files that have them, This forces An

RSCII mode transfer; in fact, /NONUMBERS can be used on any RSCII

transfer. Do not use this switch on anything but text files or you will

be sorry.

This sets mag tape transfers to odd parity. This mode is standard and

is the defaul t opt ion.

This forces COPY to treat the file as one produced by SOS, and to pack

it by allowing lines to span a record break as long as line numbers are

62 COPY

PROTECTION=nnn QUIET

RENRNE *SRVE

SERRCH

*SPOOL TITLE

not the last word of a record. SOS will read an OPTIMIZEd file, but uill not write a record ending with a partial line. R file which cannot be read by SOS because of line numbers or page marks at the ends of records uill be "fixed" by this switch.

P This causes the output file to have the protection nnn, where n is a digit from 0 to 7. If no protection switch is specified, the protection of the input file is used (for non-disk input 888 is used). Rll three n's must be present. This switch applies only to disk output. Uhen concatenating files, the protection applicable to the first file transferred is used.

Q This switch prevents you from getting the message "FILE RLREROY

EXISTS " If the output file already exists, it is deleted without a

sound. Rlso, if this switch appears with /SERRCH, then only the p,pn and the size on that p,pn are printed. This switch also prevents being asked for confirmation when trying to delete a file uith the 288 bit on in its protection code.

R R rename is done on the input file with the output file information. /QUIET applies when the output filnam.ext already exists.

SR If the output device is a mag tape, four words of directory information are written. If the input device is a mag tape, four words of directory information are read and compared with the source name specified. If they don't match, that file is skipped and the next examined until a match is found or the end of tape is reached.

SE This switch overrides all other switches. It gives you more information than /LIST and suppresses any transfers. Hdded to the /LIST information, you get the size of the file in IK records (or in words if less than IK), the date and time it was last written, the protection, and the offset (see the UUO Manual), This is preceded by a suitable heading. The whole smear is preceded by the current date and time. If the information does not exist, it is not listed. If you try to SERRCH a non-directory device, you Hill get a strange answer. The output goes to the same place as with /LIST, with the following variation: If the "list term" is omitted, the listing goes to your terminal and the information and heading for disk input will be truncated to FILNRP1.EXT, IP.PN), and SIZE. If /QUIET is used with this switch and no list term was specified, only the p,pn and the total size of each disk area is printed. If the input device uas the disk and the file has been dumped by DRRT, the date and tape 10 of the last dump are printed, followed by ">" if it uas dumped twice or more.

SP This is the same as /DSPOOL except that the /DELETE switch is not used in spool ing the file.

T This causes a "title page" to be put out in large block letters followed by a form feed. The title is of this form:

FILNRM.EXT P,PN TIME ORTE

The date and time are when the file was last written. For non-directory devices, -device name>: is printed in place of filnam.ext and p,pn.

Appendix 2 63

Monitor Commands

The following is a list of the monitor commands which use COPY and how they work. The syntax is the same as for COPY.

COfinfiND EFFECT

DELETE This deletes all the files specified by the source term, and types the space reclaimed as with the /GTOTRL switch. If the 200 .bit is on in the file protection key, you will be asked if you really want to delete the file (/QUIET overrides this feature). The destination term is interpreted as the list term. The list term is therefore illegal.

DIRECTORY This gives you all or part of the file information for the source term(s) (or «.* if no source term is used). If /L appears anywhere In the command string the default list device will be set to the line printer. The destination term is treated the same as for DELETE.

HELP Tiamt This types the file TlCimel3,2] on the terminal. If no argument is given or confusion arises, DIR •:• 13, 2) /FRST is done. This command is intended to give information about system programs. You need not be logged in to use HELP.

LIST This sets the default output device to the line printer and turns on the /HERDER su i tch.

PRINT This sets the default output device to the line printer and turns on the /NONUHBERS and /TITLE switches.

RENPI1E This allows you to change the filename, extension, p,pn, and protection of a file. The format is newname«-o Irlname. Use /PROTECTION* to change protection.

TRRN3FER This copies files from one place to another and deletes the source files.

TYPE This sets the default output device to your terminal.

XGPLIST This sets the default output device to the XGP.

Examples

COPY DTA4:«-*.*

This would cause all the files on your disk area to be written on DTA4.

COPY -DTA4:*.*

This would cause all the files on DTA4 to be written on your disk area.

COPY <f i lnam.ext>/NONUnBERS

This would delete sequence numbers (if any) from the file indicated.

COPY [2,RPH]«-*.*[1,RPW

This would cause all the files on l.RPH to be copied onto 2.RPH no matter who you are logged in under (subject to file protection failure).

TYPE <f i lnam.ext>

This would cause the specified file to be listed on the terminal you are logged in on.

64 COPY

LIST <f i lnam.ext>(2)/NONlinBERS

This would cause page 2. of the specified file to be listed on the line printer with headers and without line numbers.

DIP LPT:^*.RPG[*,*]

This would cause the filnam.ext, [p,pn], size, etc. for all files in the world with the extension RPG to be listed on the line printer.

COPY FOO-TTY:,FOO/ASCII

This would allow you to add text at the beginning of the file FOO (/ASCII is mandatory).

RENAME FOO/PROTECTION=077

This would change the protection of the file FOO to 077 without doing a transfer.

PRINT FOO

This would cause the file called FOO to be listed on the line printer without line numbers and with a title page.

DIR[*.RPH] /QUIET

This will tell RPH the size of each of his areas without printing the filenames and other information.

COPY TEr1P^18ED809^.TMP

This copies the file JED$09.TMP into TEMP so that you can edit it. (These names are created by SOS.)

DELETE ®DEL

This would use the file DEL as a list of files to be deleted. This method is very good for "cleaning" your area.

Appendix 3 65

APPENDIX 3 SPOOL

This description of the SPOOL commands is taken from the SPOOL manual, SPOOL.REGtUP.DOC].

Spooling provides a method of producing line printer listings of files without the usual disadvantage of tying up a user's job while the listing is actually being done.

To use the spooler, a user must create commands for it. A command is the name of a file to list, and control switches. Spooler commands are created by the monitor commands SPOOL and XSPOOL.

As an example of spooling, the monitor command

SPOOL SPOOL.REGfUP.DOC]

will cause the LPT spooler to list the file SPOOL.REGfUP.DOC].

Spooled listings are preceded by a title page (except see /NOTITLE below), used to make it easy to separate different listings. This title includes the file identifier, the name of the requestor and his project-programmer name, the current date and time, and the date and time when the file was last written. Programmer names are read from the file FACT.TXT[SPL,SYS]. Project names (of which there are few) are read from the file XFACT.TXT[SPL,SYS].

In the discussion below, "SPOOL" is used to mean either the command SPOOL or the command XSPOOL, except as noted. SPOOL makes requests for the LPT spooler; XSPOOL makes requests for the XGP spooler.

To have the spooler make a listing the user must tell the spooler what file(s) to print. This easiest way to tell the spooler what to do is by the monitor command SPOOL. This command consists of the word SPOOL followed by the name(s) of the file(s) to be listed. File names are separated by commas. Each file name may be followed by switches, explained below. The program SPOOL will send commands to the spooler.

Files to be spooled are specified in the conventional way, by file name, extension, and optionally project-programmer name.

Asterisk, •:-, may be used to allow matching of any file name, extension, project name, or programmer name. (RPG, DMP, and REL files will not be matched by * in the extension).

Switches are allowed either preceding or following the file name. Switches that precede the name are sticky and will be applied to subsequent names. A switch consists of a slash, the switch name, and sometimes, a parameter. For example, /REPEAT=5.

66 SPOOL

The following switches are available. Note that most switches occur in two senses (e.g., delete and noile/ete). This allows an explicit switch in some term to override a sticky switch.

Switch fiction

DELETE DELETE this file after printing. The file protection NODELETE of this file must be low enough so that the spooler can delete it. The file must belong to the requestor (A I ias not a\ lowed) . NONUIIBER Omit SOS line numbers from the listing. "N" is an

NUMBER accepted abbreviation for NONUHBER. FORTRRN The first character of each line is interpreted as a

NOFORTRRN FORTRRN carriage control character, LPT180 The spooler will open the LPT in mode 108, instead of

LPT0- the usual mode 8. (This changes certain character codes.) HERDING Print a page heading at the top of each page. "H" is NOHERDING accepted as HERDING. HERDING is the default for all f i les, except:

1ST or DOC extensions,

any file from any area with programmer = DOC. The heading includes date, time, filename, and page numbers. TITLE Precede the listing with a title page. TITLE is

NOTITLE the default for all files. NRRROII Center the title page to fit an 8.5 inch wide page.

NONRRROU

RECOPV Copy the file to tSPL.SYSl and list the copy. This

NOCOPY allows the file to be edited while the listing is in.

progress.

REPERT=n Rate n copies of the listing. (REPERT is NOT stickg). EXTRfl=n Insert n extra line feeds in the listing after every

line feed in the file. (EXTRR is NOT sticky). DUMP Octal listing. Data will be printed as octal full

NODUI1P words. (OCTRL is an equivalent switch.) NOFF Each line feed in the file is translated to '177«'21

FF which causes single spacing with no form-feed between

pages. NOIIRRN Suppress "spooling done" message when listing is done.

IIRRN

RSK Before making the spool command, SPOOL will type th«

file name and wait for the user to respond with "Y" to spool the file. (This is useful with *.* terms).

HOLD=hhmm The listing will be held in the queue until the time specified by hh hours, mm minutes. (24 - hour time is assumed.) If hhmm is prior to the current time, hhmm tomorrow is assumed. HODE=n Open the file in mode n (n is octal).

Delayed Listing

Usually requests for spooled listings will be p-rocessed as rapidly as possible. Under some circumstances this may not be desired. For example, a long listing impacts the normal operation of the system by making the line printer unavailable during its duration. The spooler allows users to delay such listings until a time of minimum loading (e.g., 0500) when the unavailability of the line printer is less likely to interfere with other users.

If the construction /HOLD=hhmm appears in a command line then hhrnm is interpreted as the (24 hour) time of day when the listing should actually be sent to the line printer. In the example below, 1730 will be interpreted as 5:30 PM.

i

Appendix 3 67

Example:

SPDOL SYSTEM. LSI IS, SYS] /HOLD-1730

If the time specified is smaller than the current time, it is interpreted to mean, "list the file tomorrow at the time specified." That is, if at 10PM you give the command:

SPOOL BAZ.FAI/HOLD=400

then the listing will occur in six hours.

Page Selection

You may follow a file name by a list of ranges of pages that you want listed. The list must be parenthesized. For example:

SPOOL FOO.SAI (1,7,5:8)

will cause page 1, page 7, and pages 5 through 8 inclusive to be listed. Page ranges are never sticky.

In octal dump mode, this page range list is used to specify a word range to list.

Multiple Copies of a File

The REPEAT switch (/REPEAT=n) is accepted by SPOOL. The effect is to interpret n as a decimal number and to list that many copies of the file. Multiple copies are spooled as usual, except that the two pages of heading that normally precede a file (except if the /NOTITLE switch is used) are suppressed on the second and subsequent copies of the file.

68 SPOOL

XSPOOL Special Features

The XSPOOL command is quite similar to the SPOOL command. The XGP has greater flexibility than the line printer, so more parameters can be specified in the XSPOOL command.

The following switches are legal only in the XSPOOL command:

FONT*n=f n is a number from 8 to IS decimal. I is » file name. Ths XGP spooler uill us* the font named f as font n when spooling. If In is omitted, n = 8 Is assumed. Up to 16 font select switches are permitted. The defaults for filename, extension, and PPN are FIX25.FNTtXGP.SYS].

LMRR*n Set left margin to column n. Columns in the XGP are numbered from 8 to 1699 (approximately). The left margin is the column which the carriage return character selects.

RHRRm Set right margin to column n. If the XGP Is going to write a character that exceeds this margin, a new line will be started.

TMflRtn Set the number of blank scan lines between the top edge of the page and the first line of text.

RMHR = n Set the number of blank scan lines between the bottom of the text and the bottom edge of the paper. (The monitor interprets Bf1flR = 0 to mean no paper cutting.)

Pt1BR = n Set the number of scan lines in the page body. Text is written inside this area. (The monitor interprets PtlfiRrO to mean that the end of a page body is signalled only by a form feed in the file, for variable-length pages. This is true only if BMRR«8.)

XGP The first page of the file is taken as font and margin commands, preceded by slashes as in the command line. Only the special XGP spooler switches (the ones In this table) are allowed. Carriage returns are ignored. If the first page of the file is a TV/E directory, the second page Is used for the commands. The command page Is not printed. P file extension of .XGP also invokes this feature.

XLINEan Set the minimum Interline spacing to n scan lines.

More peculiarities.

If any FONT select switch specifies some font number other than 0, no /HEADING switch will be assumed unless it is explicit.

Page headings will occur in font«0. Whatever font was in effect before the heading line will be remvoked before any further processing. The title page, if present, will be made in font*0.

Appendix 3 69 QSPOOL Command

The QSPOOL command starts the SPOOL program in a special way. QSPOOL reads the directoty of [SPL.SYS] and interprets the contents of the SPX and XSP (spooler command) files. Essentially, it displays the queue of files to be printed.

The queue is based on a priority scheme. The priority of a spool request is determined by (time in minutes since spool request, +1) / (file size in records)

Requests are processed in the order of decreasing priority. The QSPOOL command may be given without logging in.

UNSPOOL Command

UNSPOOL is a monitor level command that invokes the program SPOOL. If you run UNSPOOL, it will display all the spooler requests that you (your PPN) have requested, and it will allow you to delete any of them. If you delete a request which hasn't been seen by the spooler, then nothing special happens since the spooler is not yet aware of the command, so it won't be missed. If it happens that the spooler is already processing your commands, then the listing in progress will be purged.

If you log in as SPL.SYS and run UNSPOOL, then not only are you allowed to purge any command file that is either in progress or pending but you also can change the spooler behavior in the following ways:

1. You can cause the present listing to be purged.

2. You can cause the present listing to be started over.

?. You can cause the spooler to hold the queue and release the LPT immediately before starting

the next file. 4. You can release the queue from the state induced by holding it.

70 MAIL

APPENDIX 4 MAIL

This appendix describes the use of the MAIL and SEND monitor commands, which are used to send messages to users. The SEND command sends the message to the user's terminal, if he is logged in, and optionally may also (or instead, if he isn't logged in) send it to him as MAIL, so it will be seen on login. The next section describes the REMIND command, for automatic delayed messages, and the LATER command, for automatic delayed program execution. Finally, the RCV command for editing mail files is described.

The information in this appendix is taken from the files MAIL.BHtUP.DOC] and RCV.BHtUP.DOC], the manuals for the MAIL and RCV programs.

MAIL, SEND, and GRIPE Commands

T

The basic format of the MAIL command is

HAIL <switches> destination Mst> <message>

and that of the SEND command is

SEND <switches> <desti nation list> <message>

Another command, for complaining about system bugs, has the format

GRIPE <message>

This is a version of MAIL which is directed to a special system area.

The only switches allowed with the MAIL command are /D and /U. The /D switch causes a list of the destinations specified by the command to be added to the message as its last line, preceded by "CC: ". If a distribution list file is used (see below), both the file specifier and the contents are included. Note: all specified destinations are listed, even if invalid.

The /I) switch is used if for some reason you need to send a message to a user who is unknown to the system (has no UFD). The switch allows this but gives a warning message and asks you for each unknown addressee whether you really mean it. These switches may also be used with SEND and REMIND, in addition to the ones listed below.

There are three mutually exclusive switches which may optionally be used with the SEND command. All have to do with the option of mailing messages. Normally, SEND will just send messages to terminals of logged-in users (at all terminals where logged in), but if a destination of

Appendix 4 71

the form PRG (see the next paragraph) is not logged in anywhere, the user will be given the option of mailing the message to that prg instead. The switches /Y for yes or /N for no will assume that response whenever the situation arises. The switch /M for mail will always mail to all destinations on the list as well as sending to their terminals, even if they are logged in.

Another switch used only with SEND is /U, for where, which lists on the user's terminal the ppn, job number, job name, queue, and terminal number of all (logged in) recipients of the message.

The destination list for MAIL can be just * , which will send the message to the file NOTICE.TXT[2,2] so all users will see it on login. Otherwise, it is one or more project and/or programmer names separated by commas. The elements of the list should be in the form PRG or [PRJ,*] or [PR J, PRG] . Any PRJ or PRG can be a dot (.) to mean the same as the user's project or programmer name (real ppn, not alias). List elements may also take the form ®<fi1e specification> (default device DSK, default extension DIS as in Distribution list); the specified file will be read and will replace the @ field in the command. (Note: if the file specification does not give an explicit extension, the given file name with no extension will be tried before the default extension given above.) If such a file contains an ® field, the newly specified file will be read and the remainder of the old file, if any, will be ignored. The DIS file may have a TV/E directory and/or SOS line numbers, which will be ignored. The DIS file may have any number of lines; destinations are separated by any combination of returns, linefeeds, spaces, and zero or one comma. Lines in the DIS file may contain comments started by semicolons, which will be ignored up to a return; note that this is not true of the command line typed at the terminal! In the ® file specification, the notation [PRJ] may be used to mean [PRJ,.]. The notation Icharsi may be used to include non-alphamerics in a file name. To make it easier to refer to mail files as messages (see below), the filename scantier will also accept "filenames" of the form 8 or 8PRG or 3PRJ.PRG or 3PRJ, or ctPRJ,*. The first case uses your own logged in programmer name, as does the 9PRJ, form. These imply device DSK, and default extension MSG and ppn [2,2], although extension or ppn can be specified explicitly.

For the SEND command, there are two special forms of destinations: a job number, and a device name followed by a colon. These special forms can only be used alone, i.e., with no other destinations. The form SEND * will send the message to all logged-in users.

The message part of the command may be a one-line message, which will be sent as is; an @<file spccification> (default extension TXT); or null, in which case the program will request a multi-line message from the user. Any TV/E directory, SOS line numbers, and form feeds in a message file will be ignored. If you start typing a short message on the command line, and decide you need more than one line after all, you can end the command line with <lf> instead of <cr> and you will be allowed to continue the message.

Messages can only be sent to real terminals, or to pseudo-teletypes which are connected to the IMP (ARPA users). This excludes detached jobs and non-ARPA PTYs. SEND * sends only to those terminals at which someone is logged in.

When a message is sent to a display terminal (III or Data Disc), the MAIL program tries to determine whether the recipient is running some program, such as E, which changes the normal page printer positioning, thereby making it possible that the message will be lost. If it finds anything unusual about the page printer, it warns the sender of this in a message including the ppn, job name, etc. of the recipient as in the /W output. The sender may choose at this point to

72 MAIL

REENTER and change the SEND to MAIL. (The REENTER facility is explained below.) SEND * does not type out these warnings.

Mail can only be sent to defined users, i.e., there must be a UFD matching the destination prj and/or prg names (unless the /U switch is used, as explained above, to permit it). The mail is put in the front of the file <ppn>.MSC[2,2]. If the mail is sent to all users via MAIL *, the program also scans the old NOTICE.TXT[2,2] file as it copies it, and deletes any messages more than two weeks old. Also, TV directories and SOS line numbers are deleted from the old messages in this case.

Another special feature of MAIL * is that an expiration date may be specified for the message. The format. is

HAIL *-» <date> <message>

where <date> can be in any of the date formats allowed for the REMIND command (see next section), except that wildcard dates are not allowed and only the date (no time) may be specified. The date given is the one on which the message will be deleted, i.e., it will be seen last on the previous date. This expiration feature is implemented by including the expiration date in the message header, and entering (as with the LATER command described in the next section) a request to run the program EXPIRE. DMP[RMD,SYS] on the specified date. This latter program deletes any expired messages. This implementation is described because the CANCEL command (see next section) will list the request for the EXPIRE program, so you should expect that if you use this feature. If no expiration date is specified, the message is still eligible for deletion after two weeks as described above.

The check for a file directory for the specified user(s) is made before the program asks for the message if the multi-line option is used. If there are no valid destinations, the program exits without doing anything else. If any destinations are valid, however, the program continues as if only the valid destinations were specified. (Exception: the list provided by /D includes all specified destinations, valid or invalid.) Note: in the case of SEND, the only check made before the message is typed in is the file directory check. The check for the user(s) being logged in is not made until later.

There is actually a way not-logged-m users can get messages sent by SEND: it is possible to declare a particular terminal to be your "home" terminal for SEND purposes. If you have a file called OPTION. TXTU.prg] which includes a line of the form SEND: number then if someone sends you a message with SEND and you are not logged in, a message will be typed on the tty specified by the above number indicating that the message is coming, and it will be mailed as if the sender had said SEND/Y. You can read the message by saying RCV prg. You need not be logged in to do this, but if you are it destroys your core image. If the message is sent to [prj.prg] rather than prg, it looks for OPTION.TXT in [prj.prg] rather than [l,prg].

When a message is MAlLed by the MAIL command (not SEND/M, etc.) to a user who is logged in, a one-line notice is sent to his terminal indicating that mail has arrived. This also applies to mail-only reminders (see REMIND/M, next section).

A sample command is

MAIL BH.@FOONLY.tS,*] TEXT OF MESSAGE

Appendix 4 73

which will send the message TEXT OF MESSAGE to I BHi.MSG[2,2], i S 4,MSG[2,2], and whatever users are listed in FOONLY.DIS in the user's disk area.

Spaces may be used in all reasonable places in the command. For the benefit of any weird people who want to start messages with a comma, there is another syntax in which the destination list is enclosed in parentheses. In this case spaces may separate destinations instead of commas if you want. This syntax is also handy for SENDing to a numeric programmer name (otherwise it would be considered a job number) and similarly useless things.

There is an error recovery feature for people who type in long messages, only to discover that because of a typing error they are trying to send it to a non-existent destination or something; to wit: If, at the end of a multi-line message, you type <ctrl><metaxaltmode> instead of <ctrl><metaxlinefeed>, the message will not be transmitted. Instead, the original command will be loaded into your line editor, and you can correct and re-enter it, but if it does not include a message, the old message will be used instead of asking for a new one. Also, the same effect can be gotten by giving a monitor REENTER command after the program exits or you <call> out of it. From a non-display terminal, of course, the line editor feature is not available, but you can still REENTER and retype the command line. Note: this reenter facility only works after the message has been completely entered; do not <call> in the middle of typing the message and reenter, finish the message and use <ctrl><meta><altmode> instead.

REMIND, LATER, and CANCEL Commands

The REMIND command is used to tell the MAIL program to send and mail your message at a specified later date and time, possibly repeatedly. The basic syntax is

REMIND <switches> destination list> <datime> <count> <message>

The allowable switches are /S for send only or /M for mail only. If neither is used, the message is both sent and mailed. /D and /U may also be used, as in MAIL or SEND.

The destination list and message fields function like those of the MAIL command, as described in the previous section. Reminder recipients must be users known to the system, i.e., they must have a UFD (unless you use the /U switch as explained in the previous section). The destination field may be omitted, in which case your own programmer name will be used as if the destination field were the character "."; NOTE, however, that some forms of datime (those which start with a letter) could be confused with destinations, and if you want to use such a form there must be an explicit destination.

The datime field may specify a date, a time, or both. The formats allowed for dates are illustrated here:

4/28/75 28-RPR-75 RPR 28, 75

4/28/1975 28-RPR-1975 flPR 28, 1975

4/28 28-RPR PPR 28

4/28/s 28-RPR-* flPR 28, *

•»/28 28-* +3

UED WED* U U*

71 MAIL

The forms without a year imply this year unless the date is today or earlier, in which case next year is used. Letters may be upper or lower case; all after the first three are ignored. The days of the week have, for convenience, the single-letter names familiar to Farmers' Almanac readers and former MIT students: M,T,W,R,F,S,D. Asterisk as a month or year is wildcard; note that forms like */28 expire at the end of the current year. UED* and U* mean every Wednesday. The +3 form is the number of days later than today, i.e., three days from now. Spaces may generally be used or omitted as desired except within a word or number, except for the APR 28 forms. Certain mixed notations such as 4/28, 1973 may work, or they may not. If only a time field is used without a date, today is assumed unless the time is already past, in which case tomorrow is used. The weekday forms always imply a day between one and seven days from now as their first or only instance, never today. Here are the formats for times:

1423 223pm 223p

14:23 2:23pm 2i23p

0223 223am 223a 223

02:23 2:23am 2:23a 2:23

2 2am 2pm 2a

+2:23 +2: + :23 2p

A date without a time means midnight. The relative forms may only be used without a date. Letters may be upper or lower case. There may be spaces on either side of a colon, but NOT between the time and the am or pm! To use both a date and a time, they must be enclosed in parentheses and separated by spaces: (UED 3am).

The optional count field is used to specify the number of instances of a repeated request. The format is *<number>. If none is used, *50 is assumed (the number is decimal). The form *ffi may be used for requests which are to live forever, but please don't leave these around after you go away....

When a reminder which is sent more than once is sent for the last time because its count expires, a warning to that effect is appended to the text of the message. This does not apply to a message which is not rescheduled because of the specified datime, such as a date of */10 which expires at the end of the year.

Here are sample commands:

REMIND . (UED* 2:45P) #30 Go to 3:00 class!! Remind me, sir, to monitor your computer usage. .REMIND * APR 15,* LAST DAY TO FILE INCOME TAX RETURNS

The messages will be both sent and mailed at the target time, unless /S or /M is used to specify send-only or mail-only. The message header will say "(reminder)" to distinguish it from an ordinary message. All the features of MAIL work here, like @ fields for destinations or messages, R RENTER, etc. There are the usual syntactic ambiguities which are not expected to affect anyone in practice: if the first nonblank after the command name is a digit, it is taken as part of the datime field in REMIND, as opposed to a programmer name in MAIL or a job number in SEND.

The LATER command is used to cause delayed execution of an arbitrary program. The format is: LATER <filespec> <core> <datime> <count>

Appendix 4 75

in which datime and count are as in the REMIND command. The filespec determines the program to be run; the default device is DSK (the only other device allowed is SYS), and the default extension is DMP. Note: if no ppn is specified, the ppn used is your disk ppn (alias) at the time the command is entered! The delayed job is given your logged-in ppn as its logged-in ppn regardless of the ppn of the dump file. It is run with JLOG off, i.e., it is killed if any error condition arises. The optional core argument, if used, is enclosed in angle brackets. It may include an initial core allocation and/or a starting address offset, in the form <3K,+1>. The subarguments may be in either order, and must be separated by a comma if both are used. The core allocation argument is in decimal units of 1024 words, and the starting address offset is in octal words. If no job slots ate available at the time the job is to be run, it is not done; therefore, if you are depending on the result you should schedule the job for non-prime time. (If there is no job slot for the REMIND phantom itself, it will try to schedule your job as soon after the given time as it is itself run, but it will only try once.)

The monitor command CANCEL will run a program which will list and selectively delete reminder requests from or to you, or all requests if you are logged in as [RMD.SYS]. This program can also be used to list requests without asking whether you want to delete them: after the first request is listed, type the letter L in answer to the deletion question and any remaining requests will be listed without interruption. LATER requests are also listed and deleted by CANCEL.

RCV Command

The RCV program allows MAIL messages to be selectively deleted, listed, or saved as desired. The program is called by simply entering the monitor command RCV. All mail files which can be construed as being for you are offered for your perusal; if you are logged in as [PRJ, PRG], mail files for PRG or [PRJ, PRG] are automatically listed; mail files for [PRJ,*] or [otherproj.PRG] are announced if they exist and you are asked whether or not you wish to edit them. It is also possible to edit other users' mail files with RCV by giving an argument, e.g., RCV BH; this argument can be PRG or PRJ. PRG or PRJ, or any of those inside brackets. In this case, mail for PRG, [PRJ.PRG], or [PRJ,<:0 respectively will be listed automatically, and you will be asked about [anyproj.PRG], [otherproj.PRG] (or just PRG), or [PRJ.anyprog] respectively. If there is a message file exactly matching the argument (or your prg if no argument), it will be edited before any other files. RCV * will edit NOTICE.TXT[2,2].

RCV also allows editing of the files created by the A.P. news service automatic notification feature; you are asked whether or not you want to edit such a file addressed to the user whose mail you are examining if it exists. The command RCV \ (or RCV \arg) will examine the A.P. notices first.

It is also possible to use RCV on files not in [2,2] (such as saved message files previously created with RCV) with a command like:

RCV #f i lespec

with default of DSK:SAVED.MSG in your (alias) disk area. The conventions given below for output file specs also apply here.

76 MAIL

*** NOTE: ONCE RCV HAS OPENED A MESSAGE FILE, YOU SHOULD EXIT ONLY *** *** BY TYPING "E" TO AN OPTION REQUEST, AS EXPLAINED BELOU. TYPING *** *** <CALL> TO EXIT MAY RESULT IN LOSING SOME OF YOUR MESSAGE TEXT! ***

When a mail file is opened, messages are typed out one at a time and you are asked for a processing option. The available options are

S Saves the message in the mail file

D Deletes the message

C Copies it to another file, Keeping it in the mail file too

T Transfers it from the mail file to another file

L spools it for the Lpt and deletes it from the mail file

X spools it for the Xgp and deletes it from the mail file

2 .1 1 lows I ine-at-a-t ime editing from display terminal*

E saves it like S and Exits, saving all remaining messages

F sets the File name for C and T (see below)

I saves the rest of this file and goes on to the next I ists these opt ions

The option letter must be followed by a <cr> except for ? which activates itself. <cr> without an option letter means S. (Yes or no questions must also be answered by a Y followed by a <cr>.)

If you use an argument in the RCV command to edit another user's mail, the first time you specify any option which would remove a message from the mail file or alter its contents you are asked to confirm it. Once you have confirmed such an option, however, you are not asked again.

The Z option, for line-by-line editing, is allowed only from display terminals (III or Data Disc). The message lines are loaded into your terminal line editor one at a time, not including the header line or the space at the beginning of each text line. You can edit the line with the usual line editor commands, and type <cr> when done. If you want to cancel the changes to a line while it is still in the Ime editor, you can type <altmode>, which will load the original line into the line editor again. If you want to stop editing, leaving the remaining lines as they were, type <control><cr> instead of <cr> after the last line's edits (like E's line insert mode). Lines which are blank (like between messages) are not edited. To delete a line, type <control><meta>D when it is loaded in the line editor. To insert new lines before the line in the line editor, type <controlxmeta>I or <control><meta><cr>; then type the new lines, ending each with <cr> except the last, which should be ended with <controlxcr>. You can also get out of line insert mode by typing an altmode, in which case (unlike <controlxcr>) the line with the altmode is not inserted. (Also like E line insert.) Typing <control>D at the end of a line will concatenate it with the next line and allow you to edit the new line. Typing <metaxcr> in the middle of a line will break the line in two pieces, storing the first piece as one line and leaving you editing the second line. The only way to add new lines after the end of the message is to add some spaces or something to the end of the last nonblank line, then <controlxbs> over them and <metaxcr>. This crock illustrates my advice that if you have major changes to a message you will be better off using the T option to move it to a separate file, editing with TV, and re-mailing it.

The first time you specify C or T, you are asked to specify a file name. You can reply with a standard file spec, "?", or <cr>. <cr> uses the default file name, initially DSK:SAVED.MSG in your area. "?" will print a helpful message and let you try again. Thereafter, whatever file you specified will be used for all C and T messages (the file is not closed until you exit or select another one) until you specify option F, which asks for a new file name and then for the processing option again. The file which was open for C and T messages provides default extension, etc. for the new request,

Appendix 4 77

e.g., if the first time around you selected MAIL.FOO[S,SYS], if you then type F and specify filename NfOBY you will get MOBY.FOO[S,SYS] rather than MOBY.MSG in your area. Note: if the specified file already exists, the new messages are appended to it.

The notation Jcharsl may be used to get non-alphameric characters in a filename. In addition, a shorthand notation is provided for entering names of mail files: if the character d is the first character of the file spec, then the device becomes DSK, the default extension MSG, and the default ppn [2,21 (The extension and ppn can be changed later in the filespec.) If the next non-blank character is not alphameric, the filename used is 4 prgi, i.e., your programmer name right adjusted. (Note that this is your own login name, not the name whose mail you are editing.) You can specify a different name with the formats 3prg , 3pr j.prg , <9pr j,* , or <9prj, (the latter uses your own programmer name along with the specified project name). Any of these may be followed by .ext and/or [ppn] to change the default values as described above.

Spooling may only be done to one device (XGP or LPT); once you give an L or X command, the other one becomes illegal. Messages so processed are transferred to a file called QQSPL.TMP in your area, and when you exit from RCV a SPOOL or XSPOOL command is executed for that file. This is one of the reasons that you should exit from RCV by typing E, not <call>! If you <call> out, files may not get closed.

It is possible, although hopefully unlikely, that a message may be so long as to overflow RCV's message buffer. In that case, you will see as much as fits, followed by an overflow notice and an option request. After you enter the desired option, the remainder of the message will be typed as it is being processed, so you may safely use the Delete option and you will still see the rest of the message. If you want to avoid this continued typeout, type the letter Q (for Quiet) before your option choice, e.g., QD for Quiet Delete. Q is only recognized when a message overflows.

RCV may be run when not logged in, with an argument specifying the mail files to be edited; however, the messages may only be examined, not modifted-the message files are simply listed without asking for processing options. In this case it is safe to use <call> to stop reading messages, but please remember that you must kill the job if you <call> out of it lest it stay around forever!

There are two special options available in RCV, for reading the A.P. news digest and for editing messages sent with the GRIPE command. These options are provided when the RCV command is given without an argument, if you have an OPTION.TXT file with a line of the form

RCVtDIGEST, GRIPE; (either order, or either one alone, is ok).

The GRIPE option is intended for system wizards, while the DIGEST option is good for people with both DIGEST and NOMAIL in their LOGIN options. You are asked READ DIGEST? or EDIT GRIPES? if the appropriate files exist.

78 DART

APPENDIX 5 DART

The DART (Dump and Restore Technique) program is used to save disk files on magnetic tape. It also includes tape positioning commands. This appendix is excerpted from the file DART.REGtUP.DOC], which includes information on DART tape formats, complete disk dumps, etc., as well as the following facilities provided for individual users.

In the description below, braces, { and }, are used to denote optional items. Vertical bar, | , denotes an exclusive-or choice. Pointed brackets, < and >, are used to enclose syntactic items that are defined below.

DART accepts the following monitor commands:

DUMP l<dest>«-l l<source>)

RESTORE l<dest>--l l<source>l

REMIND l<dev>l:ll

EOT l<dev>):ll

BDVPNCE IFILEIRECORDI l<dev>l:ll l<count>l

BRPSPRCE IFILEIRECORDI l<dev>l:ll l<count>l

LOCRTE l<source>l

TLIST l<dest>UI<source>l

<dest> ::= l<dev>: ) <) i le> l.<ext>l I [<prj>,<prg>] I

<source> i:= I l<dev>: I I [<pr j>,<prg>] lei

|[<pr j>,<prg>) I l,<source>t

<div> is "any" legal device name.

<file> is any file name or * .f

<ext> is any file extension or *

<prj> is any project code or *

<prg> is any programmer name or *

<count> is any string of decimal digits.

Caution: The only devices that are appropriate here are disk, mag tape, and UDP. See the semantics section, below, for further explanations.

REWIND

This command will cause the device named to rewind to load point. MTAO is the default if no device argument is used. The device named should be a magnetic tape unit.

EOT

This command will cause ADVANCE FILE to be repeated until either two adjacent file marks are seen (logical end of tape) or until physical end of tape is reached.

ADVANCE and ADVANCE FILE

This command will cause the tape to advance past the next file mark on the tape. If a repeat factor is given, then the command will be repeated that number of times.

Appendix 5 79

Caution: DART often records more than one disk file on a mag tape file! Therefore, advance file will (sometimes) skip more than one disk file.

ADVANCE RECORD

Same as ADVANCE FILE except that instead of file marks, record marks are used. This command leaves you at the front of a record.

BACKSPACE and BACKSPACE FILE

This command will cause the tape to move backwards until a file mark is seen. DART then does one ADVANCE FILE operation to position the tape at the front of a file (immediately after the file mark just read). If a repeat argument is given, then that argument is used to repeat the backspace operation. Only one ADVANCE is used, after all backspace operations.

Caution: BACKSPACE or BACKSPACE 1 will position the tape at the front of the current mag tape file. BACKSPACE 2 will position one previous, etc.

BACKSPACE RECORD

Same as BACKSPACE FILE except that record marks are used to stop the operation instead of file marks. After all backspaces are completed, DART does an ADVANCE RECORD command.

LOCATE

For each file named in the argument list, this command prints the tape numbers where this file was dumped and the corresponding creation dates of the file.

TL1ST

This command will list on the destination device the names of the files that are read from the source device.

DUMP

This command will write on the destination device those files that are specified by the source term. If theie is no source argument, *.*[current area] is used.

RESTORE

This command will restore to the destination the files that are described by the source term. A null source or destination means *.*[current area]. The command RESTORE [*,REG]*-[*,REG] will restore all of REG's files to the areas that they were dumped from.

80 Service Level System

APPENDIX 6 SERVICE LEVEL SYSTEM (RSL)

The RSL monitor command runs the RSL program to reserve service level. The monitor command takes no arguments; the RSL program itself accepts commands which control its operation. The first section of this appendix explains the concept of service level.

The timesharing scheduler gives different priorities to each of three user classes: interactive users, reserved users, and all others (scavengers). The first goal of the scheduler is to provide good service to anyone doing interactive work such as editing. The system decides whether a given job is currently interactive on the basis of keyboard input activity.

When you log in at a time for which you have made a service level reservation, you are assigned that service level. Whenever you are running, the scheduler will then attempt to give you a processing level (% of CPU time) given by

PL = SL - C * (B - D/18

where SL is the service level, C is your current core size (in K), and B is the price of service level. The system will not let more than a certain total service level to be allocated in this way (currently 80*).

If you are neither interactive nor reserved, you get some of what is left, which may be pitifully little. The system is supposedly rigged so that reserved users always get service at least as good as scavengers. Note that if you are editing and execute a long-running string search, the system may decide you are a scavenger and take forever to finish.

Each authorized user has an allowance of two kinds of money, called whams and bams. Whams may be used only to purchase reservations for peripheral devices, including III terminals, while bams are good only for CPU service. The allocations are as follows.

Uhams Bams

Half t imt> user 4 100

Ful I 1 1 me user 8 280

Panic us«r 16 480

You are half time or full time in accordance with the portion of your time devoted to A.I. activities. In an emergency situation, you may be given a short term appointment as a Panic user.

Your "money" allocations are actually revolving funds in that if you reserve machine time and use it, you may then re-use the reservation money. In effect, then, there is a limitation on how much you can reserve at a given time. There is no conversion between whams and bams, nor can funds be transferred between persons.

The display costs W (whams/hour) vary with time of day as given in the table below. The price P (bams/hour) of buying any given service level SL (in percent) is

Appendix 6 81

P = SL*B

where B is the rate (bams/hour) given in the same table.

Time 0000-8900 6900-1300 1300-1800 1800-2400

USB USB USB USB

Monday-Friday 1232

Sat. , Sun. , hoi idays 1121

You may reserve a display without a service level or vice versa, but reservations may be made only for integral hours beginning on the hour. Other peripheral devices may be reserved only if you have reserved a service level. The minimum service level purchase is 57..

The time from SAM to 9AM and from 5PM to 7PM on weekdays is reserved for maintenance. No service level or device reservations may be made in those time periods until 18 hours before the period. Maintenance reservations for the entire machine may be made, however.

Using the RSL Program

The monitor command RSL with no arguments runs the RSL program. You must be logged in

first.

RSL will prompt you with an asterisk (V) when it's ready to accept commands. Command format is discussed in detail below. Commands are RESERVE, CALENDAR, AVAILABLE, DISPLAY, MAINTENANCE, HELP, and EXIT.

For example, to reserve 157. SL at 1400 on the 31st of December, any of the following command strings will serve:

RESERVE 15 SL AT 1400 HOURS ON 31-DEC r 15 on 31 clecemb at 2 p.m. RE 2 Pfl ON 31 DECEMBER 15 R 15 14 31 12

If you wish to change a service level reservation, just do another reservation for the new desired amount. Releasing a service level reservation may be done by "reserving" 07. SL.

IMPORTANT!

When you are through making reservations, you should exit from RSL by typing E. If you exit instead by typing CALL, then there is a possibility that your reservations may get lost. The E command causes reservations to be written out onto the disk.

82 Service Level System

How to Reserve Devices

The six III displays, the user disk pack, plotter, and MTAO may also be reserved. RSL merely makes and retains device reservations; unlike service level, enforcement is left up to the users. To reserve III24, 57. service level, and the user disk pack, type RESERVE 5 SL III 24 UDP or R III4UDP5. A device may be unreserved by preceding it with a minus sign: R -III PLTR -UDP MTA will simultaneously reserve MTAO and the plotter, and unreserve the UDP and any and all Ills. If you don't care which III you get, you may say 1 1 1 instead of 1 1 14 or 1 1 123 etc. Note that the plotter is considered by the computer to be the same device as the paper tape punch, so reserving PLTR also makes the PTP unavailable.

Other Commands Available

To get a list of your current reservations, type DISPLAY or D for short. The command string D XYZ will get a list of programmer XYZ's current reservations.

The CALENDAR command will show you which programmers have what reservations on a given time and date. For example, C FOR 3 will show you the reservations for the current hour and the following 2 hours also.

AVAILABLE is a short form of CALENDAR. A 8888 HOURS FOR 24 ON l-JAN-88 will yield 24 lines of output telling how much service level is still available at each time slot on the first day of 1988, should the system last so long.

HELP or H will type for you a summary of command string structure in condensed form, not necessarily comprehensible.

The MAINTENANCE or M command reserves the entire (bare) machine for hardware or software purposes, e.g., M 4 pm for 2 willtrequest the machine for maintenance from 4 to 6 pm. This command can also be used to cancel a bare machine reservation. Just type a minus sign immediately in front of the date specification, e.g. M -25 nov 73 for 2. Do not use this command without prior administrative approval.

Proper use of the EXIT command can be very important, and requires an understanding of its function. The data base for all current and future reservations is kept internally in the *-SL-* program at all times. Many of the commands you give to RSL cause a change in this data base. However, these changes are not necessarily made in the permanent data base, which lives on the disk. The EXIT (or E) command causes the internal data base to be written out on the disk, and it is only this copy which can survive system crashes or system maintenance. It is possible to lose reservations by leaving RSL with CALL instead of E.

Appendix 6 83 RSL Command Syntax

Anything in curly brackets is optional.

A slash ("/") between two terms represents one or more delimiters (space, slash, apostrophe, minus

sign, comma).

A double arrow ("«") between two terms indicates that the order of the terms is not always important. If the syntax of a term distinguishes it, then it may appear anywhere in the command line, provided no nondistinguishable term which might be confused with it precedes it. (It's simpler than it sounds.)

<RSl command = <Rcom> l<flcom>l<Ccom>l<Dcom>l<Hcom>l<Mcom>l<Ecom>

<Rcom> = RESERVE l<-s l-arg>l«l<hr-arg>l » ldate-arg>l «!<<or-arq>l« l<devic«>l

'flcom> * RVfllLRBlE l<hr-arg>l idate-arg>l »l<for-arg>l

<Ccom> = CRLENOfiR l<hr-arg>l ldate-arg>l« l<for-»rg>l

<0com> s DISPLRY ^programmer initials>)

<Hcom> s HELP

«f1com> = HRINTENRNCE l-l Uhr-arg>l « l<date-arg>|.|<for-arg>l

«Ecom> = EXIT

<sl-arci> = <in1eger> I <integer> SL

<hr-arq> £ IRTI -cmilitary hour> I (RTI <civilian hour>

<civilian hour> = t 1 I 2 I ... I 12 1 I Rfl I fl.M. I PR I P.M. I

^military hour> s t8 I 1 I ... I 23)1081 fHRSIHOURSI

<clate-<»rg> = ION! 'people day> I IONI <day-arg>/<month-arg> l/<year-arg>!

.people day> = SUNDRY I HONDRY I ... I SRTURORY

<day-arg> = 0 I 1 I 2 I ... I 31

<month-art|> E -.people month> I <computer month>

< people month> = JRNURRY I FEBRUHRY I ... I DECEMBER

(•computer month> = 1 I 2 I ... I 12

'year arg> = 119171 I 119172 I ... I U9I88

<for-arg> = <integer> I FOR <integer>

^device> = MTfl I PLTR I UDP I <iii>

<iii> £ III I III8 I IIIl I ... I IMS I III28 I III21 I ... I III25

Semantics

Names of commands, weekdays and months may be abbreviated by truncation, and may be capitalized or not. Device names may not be abbreviated.

The FOR term (e.g., FOR 3) specifies a consecutive number of hours, starting with the hour and date specified.

When the syntax of a command does not allow a left-to-right scanner to distinguish terms, then the ambiguous terms will be assumed to be in the order listed in the syntax.

If a term is missing from an argument, RSL will supply one it deems appropriate. RSL always has a time and date "in mind," called the default date. The default time and date are usually the last time and date you typed. If a command does not specify a time (date), then the default time (date) will be used.

84 Service Level System

Commands terminated with a line feed (altmode) will advance (backup) the default time and date before executing the command. The amount of advance (backup) is 1 hour, 1 day, 1 week, 1 month depending as plain, control, meta, or control-meta were used with the line feed (altmode).

A date specified by giving the name of a day, is the earliest future or present date falling on the given weekday. (Notice that at 0830 on Wednesday, "WEDNESDAY" specifies either the current date, or the date one week hence, depending on the hour specification.)

Appendix 7 85

APPENDIX 7 FIXIMLAC

Thr FIXIMLAC command is used from IMLAC terminals to reload the program which controls the terminal into its minicomputer. The command runs a program on the PDF- 10, and may be used without logging in first. The use of the command is shown below as part of the startup procedure.

IMLAC RELOADING PROCEDURE IF THE IMLAC IS DEAD:

1. SHIFT LOCK off (up).

2. Start at 40 (Push STOP, then hold the AT 40 key while pushing START). ?. Type C (upper case) several times to send TC's.

4. Type f i x i m I M (upper case M goes out as a <CR>).

5. Wait about 10 seconds to give the system time to log you in.

6. Hit <CONTROL><TOP><SHIFT>S. IF THE IMLAC IS ALIVE:

1. At monitor level, type F I XI ML.

2. When the program puts out a *, type

<CONTROL><TOP>B (Sends the IMLAC to its loader)

<CONTROL><TOP><SHIFT>S (Starts the loader)

86 ARPA Network

APPENDIX 8 ARPA NETWORK

The ARPA network is a facility organized by the Advanced Research Projects Agency of the Department of Defense to connect computers at various research centers funded by ARPA, allowing people at one site to use the resources of another site. The device which provides the interface between our computer and the network, called an IMP (Interface Message Processor), can be used by user programs like any other I/O device. Two main system programs are provided for connecting to other computers by console commands: the user TELNET program, called T, and the File Transfer Protocol, FTP. The former allows you to use your terminal as if it were a terminal of the remote host computer; the latter provides high-speed transmission of data between hosts. This appendix explains the use of these programs. It contains excerpts from the file NET.JAM[UP,DOC], which also describes the UUOs for user programming of the IMP. The FTP command description here is taken from FTP.DCS[UP,DOC].

The TELNET or TN commands, which are identical in effect, are used to run T. The FTP command runs FTP. Both require that you be logged in. They take a remote host name as argument. (The host names are listed in a later section of this appendix.) Both programs try to establish a connection to the remote site. Once this connection is established, the T program simply allows you to type at the remote computer as if you were using one of its own terminals. (T also handles special command characters which control local echoing of typein, etc.) FTP, however, accepts commands which allow sending and receiving files. The special commands for these programs will be described below, after a glossary of ARPA network jargon.

Glossary

NCP This is the software in the monitor that services the IMP.

TELNET The thing you type into that sends your characters off to a foreign

site is a user TELNET program. The thing that receives them at the other end and passes them on to the timesharing monitor there is the server TELNET. These are generally user-level programs.

SOCKET When you log in on another system, there are four socket numbers

involved. There is a local send socket number, a local receive socket number, a foreign send socket number, and a foreign receive socket number. These numbers are internal connection indexes and are used to keep different connections separate. Each connection has a unique set of 4 socket numbers. (Actually, there are two connections involved, one in each direction. Thus, in ARPA net terminology, each connection has two socket numbers, but you have four sockets altogether.)

Appendix 8 87

LOGGER

RFC

LINK

CONTROL MESSAGES

ALLOCATION

Each site is supposed to provide a program that does nothing but sit around and listen to socket 1. When someone connects to socket 1, the LOGGER is supposed to send it back a socket number that the foreign host can use to connect to the LOGGER'S host on. Only the serving host knows what socket numbers it can service, and it is the job of the LOGGER to pass out these numbers. (The LOGGER also listens to socket 3 for FTP requests.)

Request for connection. This is how a pair of hosts establish a connection. The originating host sends an RFC to the destination host with a local socket number and a foreign socket number as arguments. The destination host can complete the connection by returning an RFC with the same socket numbers, or can refuse the connection by returning a close code.

Once a connection is established, an 8-bit link number is assigtied such that the 8-bit host number concatenated with the 8-bit link number is unique at both ends of the connection. During the lifetime of the connection, the link number is used to separate the connections, being as how the socket numbers are 32 bits long. The IMP itself is programmed in such a way that only one message may be in transit on a particular link at a time. The IMP signals the sending host that the message has arrived by returning a RFNM (request for new message) with that link number as an argument. All of this is invisible to the user.

Data is sent between hosts on a non-zero link number. Link zero is defined as the control link, on which hosts communicate regarding the connections. All host to host protocol messages are exchanged on link zero.

The host to host protocol defines a kind of flow control on a higher level than the RFNM control. This is the allocation system. When a connection is first established, the receiving host sends a control message telling the sending host how many bits and messages can conveniently be buffered. The sending host must then not send more than that many bits or messages without waiting for more allocation from the receiving host. Although much of this is unseen to the user, the user has control over how much allocation the system will give the remote host. For data and file transfer purposes, it is convenient to increase the allocation over the system default amount.

The User TELNET

Our user TELNET program is called T. It is run by the TELNET or TN commands, which take a site name as argument. When it is run, it attempts to connect to the specified host. It will type

88 ARPA Network

either Connection established if successful, or an error message otherwise. The various possible connection errors are described later.

Foreign sites do not use the Stanford character set. Instead, they accept standard ASCII codes. Letters, digits, and most of the punctuation characters available in ASCII are the same in the two codes, however. The mam difference is that codes 1 to 37 (octal), used for special printing characters at Stanford, are control characters in ASCII. The precise use of these control characters is defined by the remote host. TENEX sites, for example, use ASCII control-A to mean "delete one character," like our BS. Our T program handles this difference by interpreting the CONTROL key on a Stanford keyboard to mean ASCII control; i.e., CONTROL on a letter makes T convert the letter to upper case and subtract 100 from the character code. T uses META and CONTROL-META characters as commands to itself, as listed below. In some cases, META and CONTROL-MET A are equivalent. In others, a processing switch is set by META and cleared by CONTROL-META. In the list below, 0X represents META-X, a(3X is CONTROL-MET A-X, and <=>X means either one.

There are certain differences between the two character sets in non-control characters. These are handled by automatic translation in our TELNET and FTP user and server programs. Specifically, the following translations are done:

char Stanford « external

32 » 176

1 176 « 175

ALT 175 « 33

,. 33 -. 33

The Stanford not-equal has no external representation and cannot be entered from a remote site. All other codes are transmitted unchanged. Note that our BS (octal 177) is the ASCII delete; there is an ASCII backspace (10), which is our X. Typing X or CONTROL-H to T will produce that code. The other possible ambiguities are our characters t ( 136) and *- (137). These codes have two different meanings: the DEC PDP-10 version of ASCII agrees with our use, but the official version uses those codes for " and _. Our network programs support the arrow version, and our A and _ characters are transmitted unmodified as 4 and 30.

It is possible to simulate the CONTROL and META functions when using T from a Teletype. To allow this, T recognizes the character control-E (TE) as an escape character if it is run at a Teletype. One TE before a character means CONTROL, two TEs means META, and three means CONTROL-META. For example, TETEQ/rom a Teletype is like META-O^at a display.

Control Commands to T

e><number>An octal argument is assembled from digits typed this way.

<?>H Sends the previously typed octal argument as a single ASCII character. For instance,

<?>l«>0<s>l<?>H is the hard way to send an "A".

Appendix 8 89

a(3<BS> Sends 177 (ASCII delete). The line editor will not send <BS> to programs without CONTROL-META.

j3L Enter line mode. Characters you type are sent to your line editor as usual, and not sent

to the remote site until activated by RETURN, LINE, ALT, or some CONTROL or META character not taken as a line editor command.

c<(3L Enter single character mode. In this mode, each character is an activation character,

and is sent individually to the foreign host when it is typed. This is useful for using DDT at a remote host.

(»S Send. If T is in line mode, this command causes all the characters typed so far to be

sent to the foreign host. Normally, the characters are sent only when CR, LF, or ALT ate typed when in line mode. This command is not useful for Teletypes, because typing TEtES does not cause an activation in line mode.

(3Y Enter Datapoint simulation mode. This is often used when talking to the three ITS

systems at MIT. If you also convince MIT that you are a Datapoint, their display programs will work properly from our display terminals.

a(3Y Leave Datapoint simulation mode.

(3E Begin local echoing. Different sites have different echoing conventions. Some sites

expect to send back echoing, some do not. If you find that what you type is not being echoed in a reasonable time, you may use this command to let. you see what you are typing.

a(3E Terminate local echoing. One does this when each key one types appears twice on the

console. Turning off local echoing will often eliminate one copy of the key.

(3R Inhibit sending of LF after CR. Normally, when CR is typed, a LF is invented by the

system and CRLF is sent to the foreign host. This command inhibits sending the LF after the CR.

a(3R Enable sending LF after CR. The inverse of the above command.

(3K Inhibit duplexing LF after CR. The system normally types a LF out when you type

CR. This command inhibits that. This command is different in effect from (3R, because it alters only what appears on your screen, not what goes out over the line.

«(3K Enable duplexing LF after CR. The inverse of the above command.

®X Set escape character. The escape character is normally set to TE, but may be changed by

this command. The next character typed is taken to be the new escape character. This is useful for Teletypes only.

(31 Open input file. This command asks for a file name, then proceeds to send said file to

the foreign host.

a0I Close input file.

90 ARPA Network

(3D Open output file. This command asks for a file name, then proceeds to write everything

that comes from the foreign host on this file. Note that characters you type, or characters from any input file that is opened, do not go into the output file unless the foreign host is duplexing them.

a/3D Close output file.

®Q, Quit. Terminates connection and closes any input or output files that may be open.

<?>C Send interrupt. The host to host protocol defines an interrupt that may be sent. This

command sends said interrupt.

T normally sets the echoing and activation conventions to those used by the particular site in question, but anomalies do occur. For instance, the foreign host's program may instruct the foreign system to inhibit duplexing, but that will not inhibit local duplexing. For example, if local echoing is in effect, an attempt by the remote computer to prevent echoing of a password will not work.

The File Transfer Protocol

The FTP command is used to set up a connection to a remote File Transfer Protocol Server. It takes a site argument like TELNET, and the connection process is identical. Once the connection is set up, you can enter the following commands to the ®FTP»- program. Each command is a four-letter name followed by arguments as described below. Note that file specifications for remote sites must follow the format conventions of that site; they are passed on verbatim by the FTP. In particular, the case of letters may be significant at some sites.

Note: FTP command strings sent over the control link to the remote host are subject to character conversion to conform with standard ASCII, as described in the discussion of the TELNET program. However, the files transferred over the data link are not modified by FTP.

BYTE n n is a (decimal) number indicating the byte size of the network data connection. Data will be sent from one site to another in bytes of this size.

TYPE x x is A, I, L, P, or E, and specifies the representation type for the data. A means the data is in (8-bit) ASCII. I is image type. The other three are more obscure: local byte, print file (ASCII), and EBCDIC print file. At the moment, SAIL supports ASCII and image types only. The default is image. If you must know about unusual types and modes, read the official FTP document, NIC 10596.

MODE x x is S, B, T, or H, meaning stream, block, text, or hasp transmission modes respectively. At the moment, SAIL supports stream and text modes only. The default is stream.

USER x x is a string which the foreign site will recognize as a valid user description, user name, or ppn. Not all sites require a user name.

PASS foo foo is a password. Some sites may restrict access to those who can supply the magic foo.

Appendix 8 91

ACCT x x is an account number. Some sites may require this for their billing/accounting purposes.

RETR x«-y This command retrieves a file from the foreign site, x is a local file specifier, and y is a foreign file specifier. The foreign file y is copied to the local file x. Current settings (or default values) are used for byte size, representation type, and transmission mode. The x*- string is eaten locally, and the RETR y part is transmitted to the foreign site. If you haven't typed any MODE, TYPE, or BYTE commands, the defaults will be sent before the first RETR or STOR.

STOR x-*y STOR means store, and this command is the inverse of the RETR command. A local file is copied to a foreign site.

APPE x->y This command will append the local file to the end of the foreign file.

MAIL x x is a user ID (like our PPN). Following this command you may type in a message which will be mailed to the specified user at the foreign site. The message must be terminated with a line containing only a period.

HLFL x-»y In this case x is a local file specifier, and y is a foreign user ID. The text of the specified file will be mailed to the specified user.

HELP This command asks the foreign FTP server to send back a message indicating what

commands it takes, etc.

STAT x If x is omitted, this command asks the FTP server to send back information regarding the FTP connection, e.g., socket numbers. If x is a directory name at their site (like our PPN), it lists that file directory.

DELE x x is a foreign file specifier. The specified file is deleted at the foreign site.

RNFR x x is a foreign file specifier. This command is short for rename from; it must be immediately followed by a RNTO.

RNTO x x is a foreign file specifier. This command completes the file rename operation started by RNFR. (Some sites accept * for wildcard specification in these commands.)

RSTR RSTR means mforf-included to help remedy a hack in the current FTP, wherein

sometimes an attempted transfer fails, but our end is unaware of it and leaves the connection open. The RSTR command causes our end to forget everything it knows about data connections to the other end. Any command should be legal after that.

QUOT x x is any character string, which should be an FTP protocol command with arguments. The string is sent as is over the FTP control link (see FTP protocol, NIC 10596 for terms). QUOT was included to allow you to execute commands which are as yet unimplemented here, or which are nonstandard, specific to some serving site. It will be of little use for those commands which require some special action by the FTP program at this end.

QUI T Terminate connections with the foreign site and quit.

92 ARPA Network

Table of Host Mnemonics

Note: A decimal site number may be used with TELNET and FTP instead of a site name. Also, <site>*<socket number> will select a particular socket. (Some hosts provide special services at particular sockets.)

LONG NRI1E SHORT

SITE

LONG NRME SHORT

SITE

flBEROEEN

RBER

29

RrtES-67

RME67

16

RUES-TIP

RI1ET

144

RRPR-TIP

RRPT

156

RRPR

RRPR

28

BBN-NCC

NCC

5

BBN-PDP1

BBN1

197

BBN-TENEXB

BBNB

133

BBN-TENEX

BBN

69

BBN-TIP

BBNT

158

BELVOIR

BELV

27

BOSTON-TIP

BOST

168

CRSE-18

CRSE

13

CCfl-TENEX

CCR

31

CCfl-TIP

CCRT

159

CHI

CHI

131

CMU-10R

CNUR

78

CMU-18B

cnu

14

DOCB-TIP

DOCB

153

ETflC-TIP

ETRT

148

FNWC-TIP

FNNT

161

FNUC

FNIIC

33

GWC-TIP

GIJCT

152

HRRV-18

HRRV

9

HRRV-H

HRV2

137

HflRV-1

HRV1

73

HflURIl

RLOT

164

I4-TENEX

HtlES

15

ILL-11

ILL11

12

LBL

LBL

34

LL-67

LL67

18

LL-TSP

TSP

138

LL-TX2

TX2

74

LONDON-TIP

UKT

178

niT-6180

HIT

44

M1T-RI

RI

134

nn-ofis

ons

78

nn-fiL

ML

198

tllT-nULTICS

MLTX

6

MITRE-TIP

MTRT

145

MOFFETT

nOFF

45

NBS-TIP

NBST

147

NBS

NBS

19

NORSflR-TIP

NORT

169

PRRC-HRXC

MRXC

32

RROC-TIP

RRDT

146

RROC

RRDC

18

RRND-RCC

RRND

7

RML-TIP

RMLT

165

RUTGERS-TIP

RTGT

174

SCRL

SCRL

67

SDRC-TIP

SORT

154

SDRC

SORC

26

SOC-RDEPT

SDC

8

SRI-fll

SRRI

66

SRI-RRC

NIC

2

SU-RI

SRIL

11

SU-HP

SUHP

75

TINKER

OCRF

21

TYMSHRRE

TYMS

43

UCLfl-CCBS

UCL18

129

UCLfl-CCN

CCN

65

UCLfl-NMC

NflC

1

UCSB-nOD7S

UCSB

3

UCSD-CC

UCSD

35

UKICS-368

UK

42

UNIVRC

ILL

76

USC-44

use

23

USC-ISI

ISI

86

USC-TIP

user

151

UTRH-16 .

UTRH

4

UTflH-TIP

UTRT

132

XEROX-11

XER11

168

XEROX-VTS

VTS

96

Appendix 8 93 Connection Error Messages

CONNECTION HAS BEEN CLOSED

This means just what it says. The host has voluntarily broken the connection for reasons known only to himself.

RESET RECEIVED FROM HOST

The host has sent us a reset command which directs our NCP to break all connections to this host and clear our tables of everything it knows (regarding previous connections) about this host. Some sites will send a reset the first time you connect to them as standard procedure. In this case, trying again will succeed. In the more normal case, this means the host has crashed and just been brought up again.

HOST DEAD

This means that the RFC got to the host's IMP, but was not read from the IMP within 90 seconds, and the IMP timed out. This generally means the host is really down. When this happens, the NCP remembers that the host in question was down so that it does not have to wait for the 90 second timeout. In this case a connection is not even attempted. If you want the system to attempt the connection even though it thinks the host is dead, end the host name with altmode instead of carriage return.

DATA QUOTA OVERFLOU

The host is not conforming to protocol and has sent us more data than we allocated him. We are breaking the connection.

END OF FILE

Doesn't occur in normal circumstances.

SOCKET IN USE

Generally happens after an aborted attempt to connect to someone else. This means the foreign host suddenly sprang to life after T timed out and sent us an RFC from a different socket than he told us he has now. This cures itself in a few minutes.

CAN'T CHANGE SOCKETS SYSTEM ERROR NO LINKS AVAILABLE ILLEGAL BYTE SIZE

These all indicate horrible system errors of one form or another and should not happen.

IMP DEAD

The interface has begun to malfunction, the network control center ha$ brought the IMP down, or someone here has given the magic UUO that brings the IMP software down.

94 ARPA Network

HOST NOT RESPONDING

One of the various timeouts inside T or the system went off. T times out generally when a message is sent to the foreign host which demands a response and no response was received within a "reasonable" time.

The following messages appear only in conjunction with one of the above messages and indicates only the point in T where the error occurred.

CAN'T CONNECT TO LOGGER

The error occurred on the initial RFC to get the foreign host's LOGGER.

DIDN'T GET SOCKET NUMBER FROM LOGGER

We exchanged RFC's with the foreign host's LOGGER, but somehow he did not send us a socket number.

CAN'T CONNECT TO RECEIVE SIDE

We got a socket number from the LOGGER and tried to open a connection on that socket when the error occurred.

CAN'T CONNECT TO SEND SIDE

We got the socket number and successfully sent an RFC to the receive socket, but we hit an error when trying to send an RFC to the send socket.

ERROR WHILE WAITING FOR RECEIVE SIDE

This means that we successfully sent RFC's to the send and receive sockets, but we got an error while waiting for the return RFC on the receive side.

ERROR ON OUTPUT ERROR ON INPUT

These are given after the connection is established and refer to errors that occurred while doing output or input.

Appendix 9 95

APPENDIX 9 CARE AND FEEDING OF DEVICES

The Line Printer

On the front of the line printer (LPT) there are several buttons (STOP, START, TOP OF FORM, MANUAL PRINT, TEST PRINT, OFF, and ON) and several indicators. The normal state of the line printer is with the START button lit and all red indicators off. (TOP OF FORM is always lit.)

If the system or the spooler reports that the line printer is hung, check the following things. If the START button is not lit and there are no red indicators, push the START button. If there are red indicators, NO PAPER or PAPER LOW ALERT lit, then you have to put in more paper (or fix the paper that has gone astray).

To reload the paper, find someone who knows how to do it and watch him, or do it yourself. Reloading the paper is fairly obvious. The front cover (which includes a transparent section) is hinged at the top; lift it. The yoke is the assembly which carries the ribbon, the printing drum (which you can't see) and a rotating disk at the left side. Open the yoke by finding two toggle switches (one with each hand) and pushing them both down. These switches are located to the left and right of the yoke and below it. They are each labeled CLOSE - OPEN. The yoke will stop when it is fully open. Find four paper tractors, two above the printing hammers and two below. Each tractor has a sprocket wheel (which pokes through the holes in the edge of the paper) and a retainer which holds the paper against the sprocket. Open all the tractors. If the paper is perforated for 8.5 inch wide pages, be sure that the perforation is closer to the right side. Push the TOP OF FORM button before loading the new paper. Use the black arrows to align the "concave" fold. The concave fold is the one where the two adjacent sheets are front to front when folded. Close the four paper tractors so the sprockets fit into the holes in the paper. Close the yoke by finding those two switches and pressing up on both of them. Push START.

Always restart the fan-fold at the back of the LPT so the paper will stack properly.

The line printer logic can become hung. This condition is identified by the MANUAL PRINT light being on continuously. Push MANUAL PRINT and then START to clear this condition. If that fails, open the door on the right side and push the black button labeled RESET. If that fails, find a wizard.

If the ALARM STATUS light comes on or if the printer starts making a loud buzzing noise, shut off the printer (push OFF) and find a wizard. (This light may come on briefly when the printer is being turned on.)

The YOKE OPEN light comes on when the yoke is open while the paper is being changed. When the yoke is closed it should go off.

96 Care and Feeding of Devices

The printer has a ribbon that can be changed too. It is best to watch someone do it before trying it yourself.

DECtapes

To mount a DECtape, first assign an available drive. Drives are identified to the system by a rotary switch labeled 1,2,..,8 corresponding to DTAI, DTA2, etc. Although there are eight numbers on the switches, there are only four drives, and the system will not recognize DTA5 and up. Generally you should have no reason to change the normal setting of these switches. Place your tape on the left reel of the drive and thread the tape over the top of the tape guide and head assembly. Wind several turns of the tape onto the takeup reel (turn the reel clockwise). Finally flip the OFF-WRITELOCK-WRITE switch to WRITE LOCK, or if you want to write, to the WRITE position.

To unload the tape, wind the tape off the takeup reel by the direction switch (push it to the left and hold it). Turn the drive off when all the tape is on the left reel. Grasp the reel firmly and pry it off the hub.

Magnetic Tapes

First, decide whether you want to write on the tape or not. If you intend to write, place one of the plastic write-enable rings in your tape. Place your tape on the top hub and twist the handle in the hub clockwise to tighten the reel to the hub. (You can really lose if you don't tighten it all the

way!)

Between the two reels there is a three-position switch labeled START-BRAKES. Move the switch to the right and hold it there to release the brakes on the hubs. Unwind the tape until the end of the tape is about a foot from the floor. Carefully thread the tape into the slot between the reels to the left of the brake release switch. Wind the tape onto the bottom reel (wind the reel clockwise). You must be holding the brake release switch to the right to wind the tape. Wind several feet of tape onto the takeup reel until you see the metal foil load point marker go by. Then push the brake release switch to the left (the START position). The tape will hiss and spin. Hold the switch in START until all motion stops.

There are some control buttons on the top panel. One is labeled (and lighted) REMOTE-LOCAL; this button toggles. In LOCAL mode, push the REWIND button. If you're not sure that you have the load point marker on the takeup reel, push the FORWARD button for several seconds to wind the tape forward onto the takeup reel until it passes the load point marker, then REWIND. REWIND positions the tape at load point. Set the drive in REMOTE and it is all set to use.

Unloading the tape is simple. In LOCAL mode, push the REWIND button. When the tape finished rewinding, push the brake release switch and manually wind the tape onto the top reel. Unscrew the hub and remove the reel.

Appendix 9 97

The magnetic tapes are quite finicky and th« system software is somewhat flaky. There are several things that you can do with mag tapes that will upset the timesharing system and require the intervention of a wizard who will be angry at you for disturbing his slumber. Never stop your job when it is operating the tape by typing CALL. Instead, the job can be stopped by causing the magnetic tape to appear hung. This is done by switching back and forth between REMOTE and LOCAL until the system stops the job.

There is a reset button for each tape drive located behind the small front panel below the drive mechanism. This button clears all tape motion functions in a reasonable way.

Xerox Graphics Printer

The normal condition of the XGP is indicated by the green ON light and the orange READY lip.ht being on. If all indicators are off, the XGP main power has been shut off inside the cabinet, possibly for some reason.

If the red OFF light is on, push the ON light. This will turn the XGP on, unless some abnormal condition obtains, such as a paper jam near the cutter.

If the orange STANDBY light is on, look inside the panel above these indicators. The following is the normal state of the indicators and switches within:

Knobs: VERTICAL POSITION: C

TEST PATTERN: OFF

Lights that should be on:

All POWER SUPPLIES lights

(except 10kv and 2.5kv lights will be off any time there is some other prob I em)

A I I PROCESS INTERLOCK lights

All CONTROL LOGIC (except IN SYNC)

Lights that should be off:

A I I SUPERVISORY SIGNALS

FAULT

IN SYNC

98 Care and Feeding of Devices

Certain conditions of the XGP are indicated by lights being OFF. (If any of the conditions listed below obtains, the lOkv and 2.5kv power supplies will shut off.)

PUT Fixed wait timer has not run long enough after

being turned on. Wait 2 minutes.

FUSER The fuser is not hot enough.

If the XGP has just been turned on, wait B minutes; otherwise, reset the over-temperature sensor. The over-temperature sensor is reset by a small black button located somewhere in the middle of the fuser wick assembly.

UEB CLEAN

The drum cleaning web must be replaced.

PAPER OUT

Load more paper.

DRUM The drum assembly has been disengaged.

SUEEP PRESENT

The interface is not providing a sweep signal. This may mean the connector is unplugged or the interface turned off.

To load a new roll of paper, open the left door of the XGP. Unscrew the roll retainer and remove the old roll. Unwind a foot of paper from the old roll and then cut the paper at the roll. Mount the new roll and tape the front end of the new roll to paper separated from the old roll. Make the leading edge of the joint as smooth as possible. Using the MOTOR MANUAL DRIVE button, advance the splice through the machine until it has passed the cutter.

If any problems develop in this sequence, find a wizard. Beware: certain parts of the XGP are hot; you can be painfully burned if you touch the wrong things.

There is a drum cleaning web that runs out at inconvenient times. There is a small diagram inside the XGP explaining how to change the web.

Toner is icky black stuff that makes the marks on the paper. It gets used up and runs out too. Someone is supposed to check the toner every day and add more if it gets too low. If the XGP runs out of toner, the pages will start getting lighter, there will be occasional black splotches on the paper, and frequent sand-like particles will be found embedded in the paper. Toner is checked through the access panel in the back of the XGP. There is a lever there that adjusts the rate at which toner is used on the paper. This lever must be placed either at the lightest (inner) setting or one setting darker. Never, never set it anywhere else.

j If you don't like the copy quality, complain to a wizard. Don't adjust things yourself.

Appendix 9 99

User Disk Pack

There is one drive on the IBM 3330 disk system which is reserved for private disk packs. This drive is labeled USER PACK. Use the command ASSIGN UDP to assign the drive before you mount your pack.

Assuming there is no pack mounted already, you can mount your pack by moving the CLOSE-OPEN switch to OPEN. The drive will open up. Remove the bottom cover from the pack by squeezing the two handles on the bottom together. Place the pack bottom on the top of the cabinet. Place the pack (still in the top cover) in the drive unit. Turn the handle clockwise. It will be somewhat hard to turn. Turn until it stops. Carefully remove the top cover and place it on the bottom cover. Make sure the two covers are aligned to keep dust out of the enclosed space. Turn the top cover so the label on it is visible. Flip the CLOSE-OPEN switch to CLOSE and the START-STOP switch to START. The drive will close and start spinning the pack. When the green ready light comes on, the pack can be used. There is a R/W-READ switch for the pack. If you do not intend to write on the pack, it is a good idea to put the drive in READ mode.

Unloading the pack reverses the steps above. Turn the START-STOP switch to STOP, and the CLOSE-OPEN switch to OPEN. The drive will open as soon as the pack slows down. Take the top cover whose label corresponds to the label on the pack and place it carefully over the pack. Turn the handle counter-clockwise until it moves freely. Lift the pack out of the drive. Place the bottom cover under the pack and press it on until it latches. The covers help keep dust off the packs. Return the pack to the storage rack. Leave the label facing outwards so you can find it again.

Occasionally, the UDP may not be available to anyone. If this happens, a wizard will explain why. Never touch a disk drive unit unless you have it assigned! Never touch anything but the drive which is marked USER PACK! If you are confused by something you see, ask about it before you touch!

Core Storage

We have the most outlandish collection of junk that anyone ever called a memory system. Occasionally it works. At the other times, it produces parity errors and sometimes it decides not to work at all.

Memory errors have never, never been fixed by software means. In particular, reloading the system never solves the underlying problem. If the system becomes unusable because of these errors, a wizard should be found.

Memories stop working entirely due to hardware logic bugs. There is a MEMORY STOP light on the PDP-IO console, which usually indicates this problem. Usually the memory can be reset and the system continued. If possible, find a wizard to fix it. Otherwise, read on. A hung memory can be identified by:

100 Care and Feeding of Devices

DEC core: RIJ RQ I ight off

neu Rmpex: UP light off old Rmpex: Ufi I ight off

Push stop on the PDP-6 and the PDP-10. Reset the memory by:

DEC core: Push RESTfiRT (top panel) and RESET

(inside the front panel) simultaneously, neu Rmpex: Push RESET (the big gresn-blue button)

on Core 8 and Core 1 simultaneously, or

Core 2 and Core 3 simultaneously. old Rmpex: Push the black CLERR button inside the

cabinet and the white RESET button on

the RHPEX INTERFRCE box.

Once the memory is reset, the computers have to be convinced that nothing bad happened. Set 700200 010003 in the data switches and push the console EXECUTE key. Then push CONTINUE.

Appendix 10 101

APPENDIX 10 RELOADING THE SYSTEM

If the system crashes or refuses to run jobs normally, it must be reloaded. If possible, find a system programmer, who will try to find out what the trouble is. If that fails, check the MEMORY STOP light on the PDF- 10 console. If this light is on, look up the memory stop procedure in Appendix 9. Otherwise, read on.

First, write in the log your name and the reason that the system is being reloaded.

Find the paper tape labeled SYSTEM LOADERS and mount it in the paper tape reader. (It may be mounted already, or it may be an unlabeled blue mylar tape loop.) Push the console keys RESET and READ IN.

If you're lucky, the system will load itself without further hassle. If the PDP-6 is stopped, it must be started by setting 204 in its address switches and pushing the keys INSTRUCTION STOP, IO RESET, and START.

If the system is being loaded without the PDP-6, then the current date and time must be typed in at the CTY during the reloading sequence. Be sure you supply the correct date and time!

Sometimes the system loader tape doesn't work. In this case, find the DECtape with the current system. The DECtape will be labeled with the system name and date. Mount it on some DECtape drive. Find the paper tape labeled 71. 5K RIM10B DECDMP and load it into the paper tape reader (on the PDP- 10). Stop the PDP-6. Press RESET and READ IN on the POP- 10. The tape will be read, and the CTY will type carriage return and line feed. Type nL, where n is the number of the DECtape drive which has the system tape. The tape will spin for a while. Eventually, the CTY will type crlf again. Type ,,206G to start the system. (If the Librascope disk is down, type ,,200G instead.)

102 Monitor Error Messages

APPENDIX 11 MONITOR ERROR MESSAGES

This appendix lists the error messages typed by the monitor itself (not by other system programs) with explanations for some of them. Many have to do with errors induced by UUOs in your program, and these are explained in the WO Manual, in the writeup of the UUO involved. The list is alphabetical; messages which start with a variable part are sorted under the first fixed word.

Note: Several of these messages are of the form XXX AT USER <address>. It is possible in some of these cases to get XXX AT EXEC <address> instead, which means that the offending instruction was not in your program, but in the monitor, which was trying to do something on your behalf when it happened. If this happens repeatably, or if the message is shortly followed by a system crash, tell a system programmer.

ADDRESS CHECK FOR DEVICE <dev>

Your program was trying to use the indicated device, and supplied a buffer address, dump mode command address, etc., outside the bounds of your core image.

ADDRESS OUT OF BOUNDS, UUO AT USER <address>

Your program executed a UUO which takes as an argument an address in your core image, and the address was out of bounds. The address given is that of the offending UUO.

ALREADY ASSIGNED TO JOB <jota nutnber>

You typed an ASSIGN command, and the device you wanted is in use.

< terminal ALREADY ATTACHED

You typed an ATTACH command, and the job you are trying to attach is already attached to a terminal.

?Ar1BIGUOUS JOB NAME

Your program gave a MAIL UUO which refers to another job by name, and there are two or more jobs with that name.

ATTEHPT TO ENABLE INTERRUPT ON PDP-6

Your program tried to enable a user interrupt routine to run on the PDP-6. This feature is not implemented.

Appendix 11 103

ATTEMPT TO GENERATE NON-ENABLED INTERRUPT

Your program tried to send itself or another job an interrupt for which the job was not enabled.

ATTEMPT TO INITIATE SPU JOB WITH ONE ALREADY RUNNING

Your program has a spacewar module active and is trying to start another one on the same processor.

ATTEMPT TO SCHEDULE I -LEVEL PROCESS, UUO AT .USER <address>

Your program's interrupt routine executed a UUO which would put it in a wait state. User interrupt routines aren't allowed to do that. See the UUO Manual.

BAD DIRECTORY FOR DEVICE <dev>

The device is a DECtape. This might mean that the tape is in a format not recognized by the monitor. (Our system uses a different directory format from the POP- 10 standard.) It can also happen if you try to write on a write-locked DECtape.

BAD RETRIEVAL

The pointers to your file on the disk are invalid. See a system programmer to try to fix it.

BUFFER TOO LARGE, UUO AT USER <address>

Your program is trying to use an I/O device for which there is a limit on the allowable user buffer size, which you exceeded. The UUO Manual explains the rules for each device.

BUSY

You gave a TALK command addressed to a terminal which is in user mode or has characters in its input buffer.

CAN'T ATT DEV

You gave the privileged ATTACH <device> command and don't have the DEV privilege.

<dev> CAN'T BE REASSIGNED

You gave a REASSIGN command in which the device to be reassigned was your own terminal. This is illegal.

J04 Monitor Error Messages

CAN'T CONTINUE

You typed CONTINUE after one of the other error messages came out, and you are not allowed to continue the job after that error. You also cannot continue a job after a SAVEorSSAVE.

CAN'T DET DEV

You gave the privileged DETACH <device> command and don't have the DEV privilege.

CAN'T ENTER-RENAME MFD

If you get this message, see a system programmer, who will eat you. CAN'T LOCK WITH SEGMENT

Your program, which has an upper segment, gave a LOCK UUO. This is illegal. CAN'T TERMINATE SOMEONE ELSE'S SOCKET!

Your program is using the ARPA network and tried to terminate a connection which does not belong to it.

CONFLICT BETWEEN INTERRUPT ENABLINGS

Your program tried to enable both old-style and new-style interrupts in a conflicting manner.

CONS TRAP AT USER <address>

You can only get this one from a program running on the PDP-6, which means it must be a spacewar module. The CONS instruction is a nonstandard addition to our PDP-6 installed for the benefit of LISP people. It sometimes gives this message. The address is that of the CONS which failed.

CORE DEADLOCK.

The monitor's free storage area has expanded enough so that user core is no longer big enough for your core image. This might fix itself if you wait a while, but if you must run immense programs your best bet is to come back at Sam.

Appendix 11 105

COULDN'T GET YOU A SEGMENT. WILL TRY TO LET YOU UIN UITH SETPR2.

You tried running a program with an upper segment. The program was loaded into core, but there is no room in the monitor's job tables to make an entry for the upper segment. The monitor will try to simulate an upper segment for you by leaving the upper segment code in your lower segment, but simulating upper-segment relocation by the SETPR2 DUG mechanism. This ought to work ok for most two-segment programs, but just in case it doesn't the monitor types this warning. If you are writing a two-segment program, consult the UUO Manual or a system programmer for advice.

COULDN'T UNPURIFY UPPER. CONTINUE TO TRY ANYWAY.

You typed a DDT command. JOBDDT in your core image points to an address in your upper segment as the DDT starting address, and your upper segment is write protected. DDT and RAID both contain instructions which modify themselves. The monitor tries to solve this by unprotecting your upper segment. If you are sharing the segment with other users, it has to load a new copy for you so the other users still have a protected one. This might fail, for example, because there are no job slots available. All highly unlikely.

<dev> DEASSIGNED, BUT STILL INITED!

You gave a DEASSIGN command for a device which is in use by your program. This is all OK; the monitor is merely reminding you that you still control the device. The FINISH command will release it, if that is what you want.

DEVICE <dev> NOT AVAILABLE

The device specified in a RUN, R, GET, SAVE, or SSAVE command was unavailable to your job.

DEVICE <clev> OK?

The device is somehow disabled. If it's a mag tape, it may be in LOCAL mode. The line printer could be out of paper. You can fix the problem and type CONTINUE.

DISK IS FULL!

Your program is trying to write a file on the disk, and there is no room. If you delete some files (using another job!), you can type CONTINUE and the file will be written.

DISK TRANSMISSION ERROR

This is a disk failure. See a system programmer. ENTER FAILED

The filename you typed to ENTER NEEDED (see below) didn't work. Most likely this is a protection failure.

106 Monitor Error Messages

ENTER FAILED!

The file specified in a SAVE or SSAVE command cannot be written. This probably means that the file already exists and is write protected.

ENTER NEEDED. PLEASE TYPE FILE NAME.

Your program tried to write on the disk or a DECtape without doing an ENTER UUO to specify the filename. You are given the opportunity to specify the file to be used.

ERROR IN DSKSER

Horrible error in the monitor disk service routine. See a system programmer.

ERROR IN JOB <job number >

This message will appear along with one of the others. The only reason you might need it is if you are running more than one job at once (through a PTY, for example).

ERROR IN MONITOR

This message is usually followed closely by a system crash. Call a systems programmer.

FILE ALREADY EXISTS. DELETE?

The filename you typed in response to ENTER NEEDED (see above) already exists. If you type Y (and RETURN), it will be replaced with the new output; otherwise, you are asked for another name.

FINISH UHAT?

You typed a FINISH command with an argument and weren't using that device (or there is no such device).

GOTCHA !

This is not an error. You get it when you are in a device wait queue and your turn for the device comes.

HALT AT USER <address>

Your program executed a JRST 4, instruction. You are allowed to CONTINUE the job after this message. The address typed is the address containing the HALT instruction, not its effective address.

HUNG DEVICE <dev>

The device did not respond properly to your attempt to use it in some predetermined time. This probably means that the device is unusable for some hardware reason.

Appendix 11 107

HUNG DEVICE: PDP-6

Your program is trying to run a spacewar module on the PDP-6, which is not responding. Get a system programmer to fix it.

I -LEVEL TIME-OUT

Your program's user interrupt routine has run longer than the maximum time allowed. (No other user can run while an interrupt routine is in progress, which is why they are limited in time. See the UVO Manual about interrupts.)

I -LEVEL UUO GIVEN WHEN NOT AT I -LEVEL

Your program tried to execute a UUO which is only allowed in a user interrupt routine, when it was not servicing an interrupt.

ILL INST. AT USER <address>

Your program executed an undefined instruction or one which is not allowed in user mode.

ILL MEtl REF AT USER <address>

Your program tried to read or write an address greater than the size of its core image. The offending instruction is at the address typed.

ILLEGAL ATTACH LOOP

Your program is typing into a pseudo-teletype and gave an ATTACH command trying to attach its controlling job. In particular, people using the system via the ARPA network get this if they try to attach to their TELNET server job. (You also get it if you try to attach the job controlling the PTY controlling the job controlling you, etc.) Typed on the PTY.

ILLEGAL DATA MODE FOR DEVICE <dev>

Your program has tried to use an I/O device in an undefined way, e.g., binary I/O to a terminal. The UUO Manual discusses data modes for each device.

ILLEGAL DD CHANNEL.

Your program is trying to use a Data Disc channel to which it is not allowed access. ILLEGAL FORMAT DUMP MODE COMMAND LIST

Your program is trying to do dump mode I/O incorrectly. See the UUO Manual. ILLEGAL INSTR. ADDRESS.

This message refers to instructions in a display program your job is running.

108 Monitor Error Messages

ILLEGAL PAGE SIZE SPEC.

Your program is trying to adjust the page printer geometry incorrectly on a display terminal

ILLEGAL PIECE OF PAPER

Your program gave a PPIOT UUO which specified a piece of paper number greater than 17 (octal). See the UUO Manual.

ILLEGAL UUO AT USER <address>

Your program executed a UUO which the monitor does not recognize. (Probably you are trying to execute data.)

I HP IS DOUN

You are trying to use the ARPA network, and the IMP has been declared dead by the monitor. This may be a real IMP failure or only a temporary problem which can be fixed. Ask a system programmer.

INPUT DEVICE <dev> CANNOT DO OUTPUT

Your program has done something silly like trying to write on the paper tape reader. INPUT DEVICE <clev> HAS NO INPUT BUFFER HEADER, UUO AT USER <address>

Your program executed an input UUO in buffered mode, and had not provided an input buffer header when it opened the device.

IN USE.

You gave the FLUSH command and the specified terminal is in use.

INTERRUPT ADDRESS OUT OF BOUNDS

Your program has enabled user interrupts and specified an interrupt address which is not in your core image.

ID TO UNASIGNED CHANNEL AT USER <address>

Your program executed an I/O UUO specifying an I/O channel which was not opened. See the UUO Manual about channels and I/O.

Appendix 11 109

<dev> IS BUSY, UILL YOU UA1T?

Your program tried to open a device which another job is using. If you say Y (then RETURN), your job is placed in a queue of jobs waiting for the device, and will be continued automatically when it's your turn. If you say N, you are then asked DIRECT 10 TO DISK? and can again say Y or N. If you say Y, you may be asked for a filename (if your program does input or output on that channel without specifying a name). If you say N again, your program gets a failure return on the INIT or OPEN UUO.

JMS NOT LEGAL; USE JSR.

Your program set up a III display program with the forbidden JMS instruction in it. See the UUO Manual.

JOB CAPACITY EXCEEDED

The maximum allowable number of users are already logged in. Try again later.

<n>K OF CORE NEEDED

The maximum amount of core storage available to user jobs is not enough for the core image you are trying to run. The number in the message is the decimal number of 1024-word blocks needed for the program. (Note: if you give a RUN or GET with a core size argument which is too big, the message will tell you the minimum amount of core necessary to fit the dump file, not the amount you asked for. The amount in the message might well fit even though what you asked for didn't.)

LOGICAL NAME ALREADY IN USE, DEVICE <dev> ASSIGNED

You typed an ASSIGN command with a logical device name argument which you were already using for another device. The device you requested is assigned to your job, but the logical name still refers to the old device.

LOGIN PLEASE

You typed a command which requires that you log in first.

LOOKUP FAILED

The filename you typed in response to LOOKUP NEEDED (see below) could not be read. (It doesn't exist or is read protected against you.) You get to type in another name.

LOOKUP NEEDED. PLEASE TYPE FILE NAME.

Your program tried to read from the disk or a DECtape without specifying a file by executing a LOOKUP UUO. You are given the chance to specify the file to read.

110 Monitor Error Messages

NEED ENTER BEFORE OUTPUT NEED LOOKUP BEFORE INPUT

You get these messages if your program opens a directory device, closes a file, and then tries to do input or output on that channel without another LOOKUP or ENTER.

NO CORE ASSIGNED

NO DDT

You typed a command which refers to your core image (e.g., DE or START), and you don't have a core image.

You typed a DDT command, and your core image does not contain DDT or RAID (JOBDDT zero).

NO REENTER ADDRESS

You gave a REENTER command and your program has no REENTER address (JOBREN is zero).

NO STARTUP ADDRESS!

You gave a START command and your program has no start address (JOBSA zero).

NO SUCH DEVICE

You typed something the monitor did not recognize when a device name was required.

NO SUCH JOB

You gave an ATTACH command with a nonexistent job number.

NON-EX JOB NAME OR NUMBER

Your program gave a MAIL UUO addressed to a nonexistent job.

NON EX MEM AT USER <address>

This can't happen, it says here. It means that your program tried to address a word of core storage which does not exist. However, we have the maximum possible amount of core, so there shouldn't be any nonexistent addresses. Possibly a hardware failure could cause this. (If you are running a spacewar module which resets its relocation and protection registers when for some reason we are running with less than the full amount of core, you can get this legitimately.)

NOT A DUMP FILE

The file specified in a RUN, R, or GET command is not in dump file format.

Appendix 11 111

NOT A TTY.

You gave the FLUSH command with an argument which is not the name of a terminal.

NOT ENOUGH CORE!

You typed a CORE command with an argument greater than the maximum core available to a user job.

<f i lename> NOT FOUND

The file specified in a RUN, R, or GET command was not found. If the problem is not a spelling error, make sure you are not aliased.

OUT OF BOUNDS

Some numeric argument to a monitor command wasn't right. This could be an address not in your core image in a DE or E command, or an invalid job number in a KILL command.

OUTPUT DEVICE <dev> CANNOT DO INPUT

Your program has tried to do something silly like read the line printer.

OUTPUT DEVICE <dev> HAS NO OUTPUT BUFFER HEADER, UUO AT USER <address>

Your program executed an output UUO in buffered mode and did not provide a buffer header when it opened the device.

PARITY ERROR IN YOUR CORE IMAGE. LOG - <address> PARITY ERROR IN YOUR UPPER SEGMENT. LOG - <address>

A hardware failure has invalidated the contents of the indicated address in your core image. The safest thing to do in this case is to restart with a fresh copy of your program. If you were running for a long time and are willing to risk continuing, you can type CONTINUE. You can also try to' fix the bad location with DDT or RAID, if present, or with the DE and E commands.

PC EXCEEDS MEM BOUND AT USER <address>

Your program tried to jump to an address outside the range of your core image. The message, unfortunately, tells you the illegal address rather than the address of the jump instruction.

POL 0V AT USER <address>

Your program had a pushdown list overflow. The address typed is the effective address of a PUSHJ, the return address for POPJ, or the address following a PUSH or POP.

112 Monitor Error Messages

PIECE OF GLASS TOO BIG

Your program is trying to run a display program which is too big for the monitor to handle. Sorry.

PLEASE KJOB OR DETACH

You gave a LOGIN command when you were already logged in.

PLEASE TYPE tC FIRST

You started your program with CSTART or CCONTINUE, leaving your terminal in monitor mode, and then typed a command which affects your core image. Such commands cannot be processed while the program is running. Type CALL and try again.

PROJECT-PROGRAMMER NUMBER MISMATCH

You typed an ATTACH command, and the job number and PPN arguments did not

agree.

RESET CALLED FROM I -LEVEL, OR SPACEBAR LEVEL

Your job's user interrupt routine or spacewar module executed a RESET UUO.

SAVE/GET 10 ERROR

Try again. If it still fails, ask a wizard for help.

SORRY, NO <dev>'S AVAILABLE

You typed an ASSIGN command with a generic device name (e.g., MTA), and all of them are in use.

SPACEUAR LOSSAGE - <error>

The error indicated can be ILL HEM REF, PC EXCEEDS MEM BOUNDS, NON EX MEN, PDL 0V, or CONS TRAP. It means that your job started a spacewar module (see the UUO Manual), which caused the error. See the particular error message in this list for an explanation.

SUAP CALLED FROM I -LEVEL

Your job's user interrupt routine executed a SWAP UUO.

Appendix 11 113

SUAP READ ERROR

Your job was swapped out of core, and when the monitor tried to read it back in, there was a hardware error on the swapping disk. Your core image is probably gone forever. If you really need it badly, you might be able to persuade a system programmer to try to recover it for you, but even then there's not much chance. Start over.

THIS FORK OF HTAPE IS NO LONGER SUPPORTED!

You are trying to run an old program which uses old-style disk MTAPE UUOs. See the UUO Manual for the new disk MTAPEs.

TOO FEW ARGUMENTS

This error message can be typed by several different monitor commands and should be self-explanatory.

TOTAL DPY BUFFER SPACE EXCEEDED.

Your program is trying to run a III display program, and there is no more room in your allocation of display buffer space.

USER DPY ERROR AT <address>

This message comes along with another which explains the error in your display program. The address is that of the offending instruction.

USER I -LEVEL <error>

The error can be ILL. MEM. REF., NON-EX. MEM., or PDL 0V. See the associated message in this list for an explanation. The error happened in your program's interrupt routine. If it says CH3 ERROR instead of one of the above, see a system programmer.

UUO AT USER <address>

This line appears with certain other messages. It tells you the location in your core image of the instruction which caused the error.

<dev> WASN'T ASSIGNED

You gave a DEASSIGN or REASSIGN command and hadn't assigned the device. WASN'T DET

You gave the privileged ATTACH <device> command and have the privilege, but the device wasn't detached.

114 Monitor Error Messages

YOU ARE LOCKED OUT OF CORE!

The amount of user core available has been reduced by other jobs starting spacewar modules (thereby being locked in core). There is not enough room to fit your core image. This condition may fix itself quickly; the message does not return you to monitor mode, but will keep appearing every so often until you fit again. If you have a really huge program, run it late at night.

Appendix 12 115

APPENDIX 12 BIBLIOGRAPHY

This appendix lists various other sources of information about system programs. Some of these are available on the disk, some are printed. Some programs, which were not written here but came from DEC, are documented in DEC manuals. Other programs, documented on the disk, are not included here; only the major processors are listed. The files AIMS[BIB,DOC], AIMS.OLD[BIB,DOC], SAILONtBIB.DOC], and PRUNE.DATtUP.DOC] list other program documentation which may be of interest. A convention used in naming [S.DOC] and [UP.DOC] files is that the filename is the name of the program being documented, and the extension is the programmer rrame of the author.

SAILONs (Stanford Artificial Intelligence Laboratory Operating Notes) and AIMs (Artificial Intelligence Memos) are generally available in printed form from the project secretaries. Try this before making your own listing.

EDITORS:

TV: TVED.DCS[UP,DOC] is the reference manual for the TV editor.

E. TV2E.FW[UP,DOC] describes the differences between E and TV.

Read TVED.DCS also.

SOS: SOS.LEStS.DOC], SAILON 50.3, is the reference manual for SOS.

TECO: This is a DEC program. See the DECsystem 10 Users Handbook.

LANGUAGE PROCESSORS:

FAIL: FAIL.PMP[S,DOC], SAILON 26.2, is the reference manual.

(A new manual is in preparation.) SAIL: SAIL.KVL[AIM,DOC], AIM 204. This is a long manual; try to get the printed

version instead of spooling a copy.

MACRO: This is a DEC program. See the DECsystem 10 Assembly Language Handbook. Ft This is the DEC FORTRAN. See the DECsystem 10 Mathematical Languages

Handbook.

LISP: Our version of LISP, LISP 1.6, is described in LISP.WD[S,DOC], SAILON 28.7.

PU B: PUBNET.TEStS.DOC], SAILON 70, describes the PUB Document Compiler.

DEBUGGERS:

RAID: The display terminal debugger is described in RAID.PMPtS.DOC], SAILON 58.1.

DDT: The Teletype debugger is a DEC program; see the DECsystem 10 Assembly

Language Handbook.

116 Stanford Character Set

APPENDIX 13 STANFORD CHARACTER SET

The Stanford ASCII character set is displayed in the following table. The three digit octal code for a character is composed of the number at the left of its row plus the digit at the top of its column. For example, the code for "A" is 100+1 or 101.

0123456

000 NUL 4- a (3 A - t

010 A TAB LF VT FF CR »

020 c 3 n U V 3 030

7T

a

040

SP

I

H

ft

8

%

&

t

050

{

)

*

+

i

_

j

/

060

0

1

2

3

4

5

6

7

070

8

9

;

1

<

a

>

?

100

A

B

C

D

E

F

G

110

H

I

J

K

L

n

N

0

120

P

Q

R

S

T

u

V

U

130

X

Y

Z

t

\

j

t

«.

140

I

a

b

c

d

e

f

g

150

h

i

J

k

1

m

n

0

160

P

q

r

s

t

u

V

w

170

X

y

z

{

1

ALT

}

BS

The tables below display the standard ASCII codes, and the SOS representation used at Stanford for entering the full Stanford ASCII character set from Teletypes or similar terminals with restricted character sets. The obscure names for the ASCII codes below 40 are listed just for confusion. Notes: "DEL" (177) is the ASCII delete. "ESC" (33) is their alt mode. Codes 136 and 137 have two different interpretations, as shown below. The SOS representation is so called because it is provided by SOS, the Teletype editor. Certain other programs also know about this representation, but it is not built into the monitor in any way.

Standard flSCII

3

088 NUL SON SIX ETX EOT ENQ RCK BEL

818 BS TflB LF VT FF CR SO SI

028 OLE DC1 DC2 OC3 DC4 NRK SYN ETB

038 CRN En SUB ESC FS GS RS US

SOS Representation 81234567

088 ?! ?" ?* ?$ ?X ?S ?> 818 ?< TflB LF VT FF CR ?> ?*

040

SP

I

1

$

I

1

i

050

(

)

*

+

I

-

,

/

060

8

1

2

3

4

5

6

7

070

8

9

«

<

S

>

?

100

e

fl

B

C

0

E

F

G

110

H

1

J

1C

L

n

N

0

120

P

Q

R

S

T

u

V

U

130

X

Y

Z

I

\

j

*t

_*

140

'

a

b

c

d

«

9

150

h

i

J

k

1

m

n

0

160

P

q

r

t

t

u

V

u

170

X

y

z

1

1

1

DEL

828 038 040

?9 SP

' »

?6

73

;•

$

?8

?7

72 78

050

(

)

*

+

I

-

f

/

060

8

1

2

3

4

5

6

7

070

8

9

I

<

S

>

??

188

e

R

B

C

D

E

F

G

118

H

I

J

K

L

n

N

0

128

P

Q

R

S

T

u

V

u

138

X

Y

Z

t

\

]

T

,

148 ?fl ?B ?C ?0 ?E ?F ?C

158 ?H

?J

?L ?H ?N ?0

168 ?P ?Q ?R ?S ?T ?U ?V

170 ?X ?Y ?Z

RLT ?)

?U BS

Appendix 14 117

APPENDIX 14 MONITOR COMMAND SUMMARY

On the following pages, the monitor commands are listed first alphabetically and then by function. In the alphabetical lists, the command name is printed with the minimum necessary unique abbreviation capitalized and the rest of the name in lower case. One list provides a brief description of the purpose of each command, and another displays the arguments for some commands and gives a page reference to the complete discussion in this manual. If the command loads a program into your core image, its name is listed. The following abbreviations are used:

phydy physical device name

dv logical or physical device name

pr j a project name

prg a programmer name

sa octal starting address

(if omitted use program starting address)

cor decimal number of 1024 word blocks

to assign to this program

Ih octal left half word

rh octal right half word

adr octal address

jn decimal job number

fn a file name (may include project-programmer name)

site an ARPA network site name

C...D enclose privileged version of command

first program listed automatically loads the next

«s program to be loaded is specified as argument

(...) enclose optional argument

| separates alternative arguments no arguments for this command

118 Monitor Command Summary

NOME

DESCRIPTION

NRME

DESCRIPTION

R see ASSIGN KJob

RDvance mat) tape positioning KLog

PL las set disk PPN I

RSsign assign device to job LRter

RTtach attach job to TTY LISP

c attach device to system ? LIST

Backspace mag tape positioning LORd

C see CORE LOCate

C fine el delete reminders LOGIn

CContinue continue job, TTY in monitor mode LOGOut

COetach continue job, detach TTY Mflll

CEtv create f i le with E MRKe

CFork continue job, detach TTY, make new job PJob

COMpile compile programs PPpn

COMtinue continue job, TTY in user mode PREpare

COPy copy f i lei PRInt

CORe set or type core size PTty

CREflte create file with SOS PUb

CREF make cross-reference listings Qspool

CStart start job, TTY in monitor mode R

CTv create file with TV RCv

D see DERSSIGN RERssign

anytime type time of day or job times REEnter

DDt enter DDT or RRID REflind

DE deposit into core Image REName

DEflssign deassign device from job RESOurces

DEBug compile and load programs, start debugger RESTore

DELete delete f i les REWInd

DETach detach job from TTY RSI

c detach device from system 3 RUn

Directory type file statistics S

DO execute commands from a file SRve

DUmp dump disk files to mag tape SEnd

E examine core image SLevel

ED see EDIT SPool

EODt c stop system, enter Exec DOT y SSave

EDI t edit f i le with SOS ST«rt

EOt mag tape positioning SYstat

ETv edit f i le with E TRIk

EXecute compile, load, and run programs 'TECo

F see FINISH TELnet

FILes type status of files in use Time

FIND find character string in a file TList

FINGer type name and location of users TN

FINIsh close and release device TRRnsfer

FIXimlac initialize ItllRC terminal TRY

Flush clear TTY buffers TTy

FOrk detach, make new job TV

FTp RRPR net file transfer protocol TYpe

G see GET Unspool

GEt load core image from file U

GRipe document system bugs UHEre

Hfilt stop job (tC) WHO

HELLo type name of current monitor version XErox

HELP explain system program XGplist

r. see KJOB XSpool

Iflttach kill this job, attach another Zero

Kill kill another job

kill this job

kill this job, make another

set LOGIN

run a program later

run LISP

list f i le on I ine printer

compile and load programs

tell which dump tapes have file

make a new job

kill this job

send mai I to a user

create f i le with TECO

type job using device or this TTY

print PPN of job

compile, load programs with debugger

list file on line printer

type TTY attached to job

compile document with PUB

type spooler status and queues

run program from [1,31 disk are*

receive mail for user

assign device to another job

start program at reenter address

create a reminder message

rename files or change protection

type available system resources

restore files from dump tape

mag tape posi t ion Ing

reserve service level or devices

run a program from core image file

see STRRT

save core image in a file

send message to user's TTY

type service level assignment

request line printer listing

save two-segment core image

start job, TTY in user mode

type system status

talk to another TTY

edit file with TECO

talk to RRPR net computer

type runtime for job or system

list files on a dump tape

see TELNET

copy files, delete source

compile, load with debugger, run

set TTY parameters

edit file with TV

type a f i le

delete spooler request

see UHO

type job information for PPN or job

display system status

compile XEROX document (not XGP!)

I 1st f i le on XGP

request XGP I is t ing

clear DTR, UDP, or DSK directory

Appendix 14 119

NOME

PROGRRM

RRGUMENTS

PRCE

NRHE

PROGRRfl

RRGUMENTS

PfiCE

R see RSSIGN

ROvance DflRT

78

RLias

prj l.prgl

29

RSs iqn

phydv Idvl

26

RTtach

jnltpr j.prg) 1

26

c dv 3

42

Backspace DRRT

79

C see CORE

Cfincel FORGET

_

75

CCont inue

_

25

COetach

_

26

CEtv E

fn

43

CFork

-

26

COMpi le RPG--«

45

CONt inue

_

25

COPg COPY

56

CORe

Icorl

24

CREflte RPG-.SOS

fn

43

CREF RPG-CREF

_

54

CStart

(sal

25

CTv RPG-»TV

fn

43

0 see DERSSIGN

DRyt ime

Ijnl

28

DDt

-

25

DE (deposit)

Ih rh ladrl

24

DEflssign

Idvl

27

DEBuq RPG-.R

46

DELete COPY

63

DETach

.

26

c dv 3

42

Directory COPY

63

DO DO

Ifnl

36

DUmp DflRT

79

E (examine)

ladrl

24

ED see EDIT

EDDt c CTY only 3

-

42

ED It RPG-SOS

Ifnl

44

EOt DflRT

78

ETv E

Ifnl

44

EXecute RPG-«»

46

F see FINISH

FILes

Ijnlfnl

28

FIND FIND

38

FINGer FINGER

Iprgl

48

FINIsh

Idvl

27

FIXimlac FIXIHL

-

85

Flush

dv

27

FOrk

_

26

FTp FTP

site

96

G see GET

GEt »

Idvl fn Icorl

23

GRipe HfllL

78

Hfll t (or TO

-

25

HELLo

-

28

HELP COPY

Ifnl

40

(C see KJOB

KRttach LOGOUT

jnllprj,prg)l

33

KI 1 1

jn

29

KJob

LOGOUT

32

KLog

LOGOUT-LOGIN

prj.prg

33

L

see LOGIN

LRter

MRIL

74

LISP

LISP

-

48

LIST

COPY

63

LOfid

RPG-.*

46

LOCate

DRRT

79

LCGIn

LOGIN

prj.ppg

30

tOGOut

LOGOUT

-

33

IMI1

IWIL

78

HR»

RPG-TECO

fn

43

PJob

Idv)

27

PPpn

Ijnl

28

PREpare

RPG<«

46

PRInt

COPY

63

PTty

Ijnl

28

PUb

RPG-.PUB

Ifnl

45

Qspool

SPOOL

-

69

R

8

fn (corl

23

RCv

RCV

75

RERssign

dv jn

27

REEnter

-

25

REHind

MfllL

73

REName

COPY

63

RESOurces

- .

28

RESTore

DRRT

79

REHind

DRRT

78

RSI

RSL

_

86

RUn

Idvl fn Icorl

23

S

tee STRRT

SBve

(dv) fn Icorl

24

SEnd

Mil

78

Sieve I

-

29

SPool

SPOOL

65

SSave

Idvl fn Icorl

24

STart

(sal

25

SYstat

SYSTflT

-

40

Tfllk

dv

29

TECo

RPG-.TECO

Hnl

44

TElnet

T

site

87

Time

(jnl

28

TList

DRRT

79

TN

see TELNET

TRflnsfer

COPY

63

TRY

RPG-.8

46

TTy

29

TV

RPG-.TV

Ifnl

44

TYpe

COPY

63

Unspool

SPOOL

-

69

U

see UNO

WHEre

WHERE

Iprj.l Iprgl

48

1MB

UNO

-

37

XErox

XEROX

41

XGpl 1st

COPY

63

XSpool

SPOOL

68

Zero

ZERO

dv

36

120 Monitor Command Summary

Commands that run programs: LOGIN Class COPY Class

KATTACH

KJOB

KLOG

LOGIN

LOGOUT

RPG Class

CETV

COMPILE

CREATE

CREF

CTV

DEBUG

EDIT

ETV

EXECUTE

LOAD

MAKE

PREPARE

PUB

TECO

TRY

TV

COPY

DELETE

DIRECTORY

HELP

LIST

PRINT

RENAME

TRANSFER

TYPE

XGPLIST

SPOOL Class

QSPOOL SPOOL UNSPOOL XSPOOL

DART Class

ADVANCE

BACKSPACE

DUMP

EOT

LOCATE

POSITION

RESTORE

REWIND

TLIST

Informat ion

FIND

FINGER

HELP

SYSTAT

WHERE

WHO

MAIL Class

CANCEL

GRIPE

LATER

MAIL

RCV

REMIND

SEND

Others

DO

FIXIMLAC

FTP

LISP

RSL

TELNET

TEST

TN

XEROX

ZERO

Other system commands: SAVEGET Class Device Control

CORE

GET

R

RUN

SAVE

SSAVE

START Class

CCONTINUE

CONTINUE

CSTART

DDT

HALT

REENTER

START

ASSIGN

DEASSIGN

FINISH

FLUSH

REASSIGN

Other

ALIAS

DE

E

EDDT

KILL

TALK

TTY

ATTACH Class Information

ATTACH

CDETACH

CFORK

DETACH

FORK

DAYTIME

FILES

HELLO

PJOB

PPPN

PTTY

RESOURCES

SLEVEL

TIME

INDEX 121

abbreviations for monitor commands 5

activation 15

activation character 13, 16

AD device 7

add channel 20

add piece of glass 20

addresses, core 3, 10

ADVANCE command 78

ALGOL 2

alias 17, 18,26,28,29, 32, 38,40,44

ALIAS (in WHO line) 17

ALIAS command 29

ALT 15,22,41

ALT key 12

alt mode 12, 116

ALT MODE, Teletype 22

analo^-to-digital 7

APE" 32

arguments 5

ARPA network 8,22,41,86

ASCII 12, 88, 116

ASCII switch in COPY 60

ASK switch in COPY 60

ASK switch in SPOOL 66

assembly language 2

ASSIGN command 7, 26

assistance 29

Associated Press 31, 75

ATTACH command 26, 33, 42

AUDIO (LOGIN option) 31

audio switch 21, 31

authorized users 8

backspace 12

BACKSPACE command 78, 79

backspace, deleting 13,14

backspace, non-deleting 13

bams 80

bibliography 115

BINARY switch in COPY 60

binary, relocatable see relocatable binary

BLOCKED switch in COPY 60

blocks 11. 17,23,24, 37

BMAR switch in XSPOOL 68

BREAK 16

BREAK 1 X 18,29

BREAK A 20

BREAKC 20

BREAK D 20

BREAK F 16,29

BREAK H 20

BREAK key 12

BREAK N 19,20

BREAK O 16

BREAK P 19

BREAK Q, 17

BREAK S 20

BREAK T 20

BREAK U 21

BREAK W 17

BREAK X 18, 29

BS 13

BS key 12

CALCOMP 7

CALL 16, 18, 22, 25, 29

CALL key 12

call, deferred 16

cameras, TV 20

CANCEL command 75

carriage return 12, 15, 22, 29, 31

CCONTINUE command 25

CDETACH command 26

CETV command 9

CETV files 44

CFORK command 26

channel number 20

channels, Data Disc 4, 17, 20, 28, 42

channels, private 20

channels, public 20, 31

character set 4, 12, 116

character set, full 16

CLEAR 14

CLEAR key 12

clear line editor 14

CMD files 44

CMQjjob queue) 18

code, character 12, 1 16

command decoder 5, 12, 13

command files 36

commands, monitor 5,117

COMPILE command 10, 45

COMPILE files 45

COMPILE switch in RPG 47

compiling programs 10

continuable 25

CONTINUE command 18, 25

CONTROL 15, 36

CONTROL key 12, 88

CONTROL key, Teletype 22

CONTROL-B, Teletype 22

CONTROL-BREAK 16, 19

122 INDEX

CONTROL-BS 13

CONTROL-C, Teletype 22

CONTROL-CALL 16

CONTROL-CLEAR 16, 19

CONTROL-D H

CONTROL-FORM 14

CONTROL-I 14

CONTROL-1, Teletype 22

CONTROL-K 14

CONTROL-K, Teletype 22

CONTROL-L, Teletype 22

CONTROL-META-LINE 16

CONTROL-number 14

CONTROL-0, Teletype 22

CONTROL-RETURN 14, 15

CONTROL-S 14

CONTROL-SPACE 13

CONTROL-TAB 14

CONTROL-U, Teletype 22

CONTROL-Z, Teletype 22

CONVERT switch in COPY 60

COPY 30, 34, 37, 40, 56

COPY command 34

core see storage, core

CORE command 24

core image 3, 6, 10, 1 1, 17, 18, 23, 24, 30, 37

CREATE command 43

CREF command 54

CREF switch in R PC 47,49

CSTART command 25

CTRL key, Teletype 22

CTV command 9, 43

CTY device 7, 29

cursors 4, 13

DART 35, 62, 78

data 6

Data Discs 4, 13, 17, 19

DATE (in WHO line) 17

DAY (in WHO line) 17

DAYTXT (COPY filehack) 58

DAYTIME command 6, 28

DCQ^(job queue) 18

DD (in WHO line) 17

DDT 24,25,43,46,50,115

DDT command 25

DDT, Executive 42

DE (deposit) command 24

DEASSIGN command 27

DEBUG command 46

debugging program see DDT or RAID

DECtape 6, 7, 18, 36, 96

Defense, Department of 86

deferred call 16

delete 12, 116

delete channel 20

DELETE command 34, 63

delete piece of glass 20

DELETE switch in SPOOL 66

delete to left 13

delete to right 14

DENSITY switch in COPY 60

deposit in core see DE

DET (in WHO display) 37

DET (in WHO line) 17

DETACH command 26, 42

detached jobs 17,25,36,37

DEV privilege 42

device 26, 27, 95

device name 7, 42

device name, logical 7, 26

device name, physical 7, 26, 27

device names, list of 7

DIGEST (LOGIN option) 31

digital-to-analog 7

DIOW (job queue) 18

directories 7

DIRECTORY command 34, 63

directory device 7, 27

directory, telephone 38

disk 6, 7, 17, 23, 27, 28, 29, 34, 35, 36

disk PPN see alias

display see terminals, display

DMP 23

DMP files 7, 10, 47

DO 52

DO command 36

DOC files 45

documentation, program 3, 115

DSK device see disk

DSKOPS (in WHO line) 17

DSKQJin WHO line) 17

DSPOOL switch in COPY 60

DTA device see DECtape

DTQJjob queue) 18

DUMP command 78, 79

dump file see DMP files

DUMP switch in COPY 61

DUMP switch in RPG 47, 50

DUMP switch in SPOOL 66

DWQJjob queue) 18

INDEX 123

E 9, 12, 16, 43, l!5

E (examine) command 24

ECHO (in TTY command) 29

EDDT command 42

EDIT command 44

editing 9

editor, display 9, 44

editor, line see line editor

end of file 16, 22

EOT command 78

error messages 102

ESC 16

ESC IX 18, 29

ESC A 20

ESC C 20

ESC D 20

ESC E 19

ESC F 16, 29

ESC G 19

ESC H 20

ESC I 16

ESC J 19

ESC key 12

ESC L 19

ESC N 19,20

ESC O 16

ESC P 19

ESC O, 1 7

ESC R 19

ESC S 20

ESC T 20

ESC U 21

ESC W 17,26

ESC X 18, 29

ESC Y 19

ESCAPE, Teletype 22

ETV command 9

ETV files 44

EVEN switch in COPY 61

examine core see E

EXECUTE command 10,46

extension 7, 23

extensions, standard 7

EXTRA switch in COPY 61

EXTRA switch in SPOOL 66

F4 43, 115

F4 files 44, 45

FACT.TXT file 65

FAI files 44, 45

FAIL 2,43,45, 115

FAIL switch in RPG 47

FAST (LOGOUT option) 32

FAST switch in COPY 61

FF switch in SPOOL 66

file directory see DIRECTORY

file storage 6

File Transfer Protocol 41,86,90

filenames 7

FILES command 28

files, disk 7, 18

FILL (in TTY command) 29

FILL (LOGIN option) 31

FIND command 38

FINGER command 11,40

FINISH command 27

FIX IM LAC command 40,85

FLUSH command 27

FONT switch in COPY 61

FONT switch in XSPOOL 68

FOONLY switch in COPY 61

FORK command 26

form feed 12, 22, 58

FORM key 12

FORTRAN 43,45,115

FORTRAN switch in RPG 47

FORTRAN switch in SPOOL 66

fortune cookie 31

FORWARD switch in RPG 47

FTP command 41,86,90

FUDGE2 51

FULL (in TTY command) 29

FULL (LOGIN option) 31

full character set mode 16, 31

FULL switch in COPY 61

GET command 23

glass, pieces of 19, 20

glitch 19

graphics 4, 18

GRIPE command 70

GTOTAL switch in COPY 61

HALT command 25

HEADER switch in COPY 61

HEADING switch in SPOOL 66

HELLO command 28

HELP command 1 1, 34, 40, 63

HOLD switch in SPOOL 66

holding, automatic 16, 19

I/O see device

IGNI switch in COPY 61

IGNO switch in COPY 61

124 INDEX

Ills 4. 13, 19,20

IMLAC 40

IMP 86

INCREMENT (in TIME command) 28

information, system 3, 1 1, 27, 37

input buffer 5, 15, 16,29, 36

insert characters 14

insert mode 14

Interface Message Processor 86

interrupt 13

Introduction for New Users I

Introduction to Terminals 4

INTW (job queue) 18

lOWQ^ 18, 25

lOWOjjob queue) 18

JBS (in WHO line) 17

JLOG 37

JOB (in WHO display) 37

JOB (in WHO line) 17

Job Data Area 11, 24

job name 23, 37, 38, 40

job number 3, 6, 8, 26, 27, 28, 29, 37, 38, 40

JOBDDT 24, 25

JOBFF 24

JOBNAM (in WHO display) 37

JOBNAM (in WHO line) 17

JOBPC 25

JOBRD 18

JOBREN 25

jobs 17

JOBSA 11,25

K ATTACH command 33

KCS (in TIME command) 28

keyboard scanner 12, 16

keyboards 12

KIL privilege 42

KILL command 29,42

KILL switch in COPY 61

kill to character 14

kilo-core-seconds 28

KJOB command 8, 32

KLOG command 33

languages, programming 2, 115

LATER command 74

left cursor 13

letters, lower case 5, 7, 16, 22, 29

LIBRARY switch in RPG 47. 51

LINE see line feed

LINE (in WHO display) 37

line editor 4, 12, 13, 15, 16, 19

linefeed 12,15,22

LINE key 12

line number, terminal 20, 28, 37

line numbers, SOS 9,60,61,66

lirie printer see printer, line

LINK 87

LISP 2,36,115

LISP command 40

LIST command 34, 63

LIST switch in COPY 61

LIST switch in RPG 47, 49

LMAR switch in XSPOOL 68

LOAD command 1.0, 46

LOADER 24,25,43,47

loading programs 10

LOCATE command 78, 79

LOCK 18

LOGGER 87

logical device name set device name, logical

LOGIN command 3, 6, 8, 30

login, automatic 6

LOGOUT 8, 9, 32, 44

LOGOUT command 33

LOGRUN 32

LOGRUN (LOGIN option) 31

lower segment 1 1

LPT device see printer, line

LPTO switch in SPOOL 66

LPT 100 switch in SPOOL 66

LST files 44

MAC files 44, 45

MACRO 43,45,115

MACRO switch in RPG 47

magnetic tape 6, 7, 18, 23, 26, 35, 96

MAIL 31, 35, 70

MAIL (COPY filehack) 58

MAIL command 30

MAINT.TXT (COPY filehack) 58

maintenance forecast 58

maintenance mode 31

MAKE command 43

MAP switch in RPG 47, 50

ME (LOGIN option) 31

ME (LOGOUT option) 32

MESSAG (LOGIN option) 31

messages, system 8, 30

META 13,14,15,36

META key 12

META-BS 13

META-CALL 16

INDEX 125

MICRO-PLANNER 2

M LENGTH switch in COPY 61

MODE switch in SPOOL 66

monitor mode 5, 8, 13, 16, 23, 25, 26, 29

move left 1?

move right 13

move to beginning 14

move to end 14

MSG (COPY filehack) 58

MSG files 72

MTA device see magnetic tape

MT<I)_(job queue) 18

NAP (COPY filehack) 58

NARROW switch in SPOOL 66

NCP 86

NL (in WHO line) 17

NOCOPY switch in SPOOL 66

NODELETE switch in SPOOL 66

NODUMP switch in RPG 47, 51

NODUMP switch in SPOOL 66

NOFF switch in SPOOL 66

NOFORTRAN switch in SPOOL 66

NOHEAD1NG switch in SPOOL 66

NOLOAD switch in RPG 47

NOMAIL (LOGIN option) 31

NONARROW switch m SPOOL 66

NONSTANDARD switch in RPG 47

NONUMBER switch in SPOOL 66

NONUMBERS switch in COPY 61

normal activation mode 15

NOSAISEG switch in RPG 47

NO-SEARCH switch in RPG 51

NOTICE.TXT (COPY filehack) 58

NOTICE.TXT file 30, 71, 75

NOTITLE switch in SPOOL 66

NOWARN switch in SPOOL 66

NSA files 44, 45

NSAIL 43,45

NSAIL switch in RPG 47

null job 28, 38

null-time 17

NULQXjob queue) 18

NUMBER switch in SPOOL 66

number, line see line number

OCTAL switch in SPOOL 66

ODD switch in COPY 61

operator 29

OPTIMIZE switch in COPY 61

OPTION.TXT 77

OPTION.TXT (COPY filehack) 58

OPTION.TXT file 30, 31, 32, 72

OSA files 44, 45

OSAIL 43, 45

OSAIL switch in RPG 47

output buffer 16

page printer 18, 19, 21, 38

paging, telephone 21

paper tape 7

paper, pieces of 19

password 30, 37

password, remote users 31

PDP-10 1,2, 12, 18, 37

PDP- 10 console 7,29,42

PDP-6 18, 37

phantom 37

physical device name see device name,

physical

pieces of glass 19 pieces of paper 19 PJOB command 27 PL (in WHO display) 37 plotter 7

PMAR switch in XSPOOL 68 PORNO (LOGIN option) 31 PPN 3, 7, 8, 18, 26, 28, 29, 30, 31, 32, 40, 42 PPN (in WHO display) 37 PPN (in WHO line) 17 PPN, disk see alias PPPN command 28 PREFIX, Teletype 22 PREPARE command 46 PRINT command 34,63 printer, line 6, 7, 26, 34, 63, 65, 95 privileged commands 42 programmer name 3, 17, 29, 31, 35, 38, 40 programs, display 18, 20 programs, system 3, 23, 30 programs, system information 6, 1 1 project name 3

project-programmer name see PPN PROTECTION switch in COPY 62 pseudo-teletype 7 pseudo-teletypes 37 PTP device 7 PTR device 7 PTTY command 28 PTY 7

PUB 41, 43, 115 PUB command 45 PUB files 44

126 INDEX

O.QSVCM RPG file 45

OQSVED.RPG file 45

OSPOOL 69

OSPOOL command 34

queue 40

QUEUE (in WHO display) 37

QUEUE (in WHO line) 17

queue names 18

OJUIET switch in COPY 62

R~(in WHO line) 17

R command 23, 30

RAID 24,25, 43, 46, 50, 115

Rapid Program Generator see RPG

RCOR (in WHO line) 17

RCV 75

RCV command 31

REASSIGN command 27

RECOPY switch in SPOOL 66

records 7

REENTER command 25

refresh 19

R EL files 7,46

REL switch in RPG 47

reloading 101

relocatable binary 7, 10

REMIND command 73

remote terminal 22, 31

RENAME command 34, 63

RENAME switch in COPY 62

REPEAT switch in SPOOL 66

request for connection 87

request for new message 87

RESET 19,20,24

RESOURCES command 28

RESTORE command 78, 79

retrieve last line 14

RETURN see carriage return, 15

RETURN key 12, 13

REWIND command 78

RFC 87

RFNM 87

right cursor 13

RMAR switch in XSPOOL 68

RP (in WHO line) 17

RPG 9,32.33,36,43

RPG (COPY filehack) 58

R PGS A V (LOGOUT option) 32

RSL command 40, 80

RTIME 18

RU BOUT, Teletype 22

RUN command 23

run time 28, 37, 40

running programs 10, 23

RUNQJjob queue) 18

RUNTIME (in WHO line) 17

runtime, incremental 17

SAI files 7, 44, 45

SAIL 2,43,45,115

SAIL switch in RPG 47

SAVE command 24

SAVE switch in COPY 62

scanner, keyboard see keyboard scanner

scrolling 19

SEARCH switch in COPY 62

SEG (in WHO display) 37

segment, lower see lower segment

segment, upper see upper segment

segments 1 1

SEGNAM (in WHO line) 17

select audio channel 21

select channel 20

select piece of glass 20

SEND command 70

service level 29, 37, 38, 40

SETPR2 105

SHIFT key, Teletype 22

SHIFT keys 4, 12

SHIFT LOCK key 4, 12, 16

shuffling 28

SIZE (in WHO display) 37

SIZE (in WHO line) 17

skip to character 14

SL (in WHO display) 37

SLEEP 18

SLEVEL command 29

SOCKET 86

SOS 9,43, 115

SOS representation 22

Spacewar 3

spacewar module 18, 37

special activation mode 15

SPOOL command 34, 65

SPOOL switch in COPY 62

spoolers 34

SSAVE command 24

Stanford ASCII 12

Star Trek 20

START command 25

starting programs 24

status, system 17

INDEX 127

STOP (job queue) 18

stop typeout 16, 22

storage, core 2, II, 17, 99

suspend typeout 16, 22

SW10 (in WHO display) 37

SVVG (in WHO display) 37

switch, audio see audio switch

switch, video see video switch

SYS device 7, 23, 27

SYSTAT command 40

T 41,86,87

TAB 14,22

TAB key 12

TABS (in TTY command) 29

TABS (LOGIN option) 31

tabs, hardware 29

TALK command 29, 42

talk ting 29

tape, magnetic see magnetic tape

tape, paper 6

TCOR (in WHO line) 17

TECO 9, 43, 115

TECO command 44

Teletypes 4,9,22,31,37,40,60

TELNET 86,87

TELNET command 41, 86, 87

terminal 5, 7, 29

terminals, display 4, 12, 18, 29, 37

tick 18, 37

TIME (in TTY command) 29

TIME (in WHO display) 37

TIME (in WHO line) 17

TIME command 28

timesharing 1

TITLE switch in COPY 62

TITLE switch in SPOOL 66

TL1ST command 78, 79

TLK privilege 42

TMAR switch in XSPOOL 68

TMPCOR 32,44

TN command 41, 86, 87

TOP key 4, 12

TQ, (job queue) 18

TRANSFER command 34, 63

TRY command 46

TTY (in WHO line) 17

TTY command 29

TTY device see terminal; Teletypes

TTYUUO 22

TV 9, 43, 115

TV command 9, 44

TV device 7

TV, lounge 20.21

TYPE command 34, 63

typeahead 5

UCOR (in WHO line) 17

UDP 36, 99

UDP device 7

UFD 7

UNHIDE (LOGIN option) 31

UNSPOOL 69

UNSPOOL command 34

UPDATE (in TTY command) 29

upper segment 11, 17, 18, 24, 37, 38

user disk pack see UDP

User File Directory 7

user mode 5, 25, 42

user, authorized 8

UTPCLR 37

UUOs 2, 3, 15

vector 4

vertical position 19

vertical tab 12

video switch 20

VT 22

VT key 12

WAIT (in TIM E command) 28

wait time 17

WARN switch in SPOOL 66

whams 80

WHERE command 11,40

WHO (in TTY command) 29

WHO (LOGIN option) 31

WHO command 6, 11,37

WHO line 17,26,27,29,31,37

wizards 40

WRU files 44

XEROX command 41

Xerox Graphics Printer see XGP

XFACT.TXT file 65

XGP 7, 34, 65, 68, 97

XGP switch in XSPOOL 68

XGPLIST command 34, 63

XLINE switch in XSPOOL 68

XP (in WHO line) 17

XSPOOL command 34, 65, 68

XTIME 18,29

XTIME (in TIME command) 28

XTIME (in WHO line) 17

ZERO command 36

The end of the Monitor off Cape Hatteras.