TOPS-10: Fortran

Today we'll take a quick look at programming using Fortran on TOPS-10.

Compiler versions

As noted in the programming introduction , there were two Fortran compilers for TOPS-10: the original compiler, later called F40, that supported Fortran 66, and Fortran-10 which was introduced in around 1972 that supported Fortran 66 and, in later versions, Fortran 77. The 6.03 disk images we have contains both, under SYS:F40.EXE and SYS:FORTRA.EXE respectively. We will look at Fortran-10 in this article.

By default, files with an extension of either .F40 or .FOR will be compiled by Fortran-10: to force the use of F40 you need to provide the /F40 compile-time switch eg COMPILE/F40 HWORLD.F4.

Implementation features

The standard Fortran-66 fixed format is used (labels in columns 1-5, comment/continuation in col 6, program text cols 7-72) but is relaxed slightly: a line starting with a tab is assumed to skip over the initial label.

There are a number of extensions to standard Fortran 66 including:

  • Multiple statements can be combined on a single line using ;.
  • Comments can be added anywhere in the line by starting them with !.
  • Octal constants allowed, starting with a ".
  • Literal strings, eg "YES" are allowed along with Hollerith literals (eg 3HYES).
  • Two-way IF statements for logical comparisons, eg IF B THEN 100,200 will go to statement label 100 if B is true, else 200.
  • PAUSE allows you turn on trace mode, which prints subroutine calls.

There is also extensive I/O capabilities via a package called FOROTS. Random access, and append to files is supported, as well as utilisation of TOPS-10 devices.

The 1974 manual describes a source level called FORDDT, but this does not seem to be available on the version of TOPS-10 we have.

Running TPK

Let's use the compiler to run the TPK algorithm. The source code can be found here. This can be loaded onto the disk using the techniques described in this article.

Type EXEC TPK to compile and run the program. To get a listing of the program you can add /LIST to the EXEC or COMPILE command. It will create a temporary listing file and send it to the printer when you log out.

While developing this, I found I had to change both the WRITE and READ unit numbers to be 5.

The compiler also uncovered a mistake I had made in the original version of the program. Before I had the function definition followed the DIMENSION for the array:

      FTPK(X) = SQRT(ABS(X)) + 5.0*X**3
      DIMENSION A(11)

but I got a warning

00004	      DIMENSION A(11)
%FTNSOD LINE:00004  DIMENSION STATEMENT OUT OF ORDER

The fix for this is to switch the order of the two lines. After that, it ran as expected.

Here's the compile and execution looks:

.type tpk.for
C     TPK ALGORITH IN FORTRAN 66
      DIMENSION A(11)
      FTPK(X) = SQRT(ABS(X)) + 5.0*X**3
C     MAIN PROGRAM
      N=11
      WRITE(5, 100)
 100  FORMAT(24H PLEASE ENTER 11 NUMBERS)
      READ(5, 101) A
 101  FORMAT(F9.4)
      WRITE(5, 102)
 102  FORMAT(12H RESULTS ARE)
      DO 3 J = 1, N
      K = N - J + 1
      RESULT = FTPK(A(K))
      IF (RESULT .LE. 400) GOTO 2
 1    WRITE(5, 103)
 103  FORMAT(10H TOO LARGE)
      GOTO 3
 2    WRITE(5, 101) RESULT
 3    CONTINUE
      STOP
      END

.exec tpk.for
FORTRAN: TPK
MAIN.
LINK:	Loading
[LNKXCT TPK Execution]

PLEASE ENTER 11 NUMBERS
10.
-1.
1.
2.
3.
4.
4.3
4.305
4.303
4.302
4.301

RESULTS ARE
399.8863
TOO LARGE
TOO LARGE
TOO LARGE
399.6086
322.0000
136.7320
 41.4142
  6.0000
 -4.0000
TOO LARGE
STOP

END OF EXECUTION
CPU TIME: 0.00	ELAPSED TIME: 1:19.92
EXIT

.

Further information

On Bitsavers, the FORTRAN-10 Language Manual from 1974 is the closest reference to the version of Fortran-10 that we have on TOPS-10 6.03. There's also a guide to F40 in the FORTRAN IV Programming Manual from 1969.

Questions, corrections, comments

I welcome any questions or comments, and also especially any corrections if I have got something wrong. Please email me at rupert@timereshared.com and I will add it here and update the main text.


TOPS-10: BASIC

BASIC on TOPS-10 is very similar to the version of Dartmouth BASIC from 1968. It runs in its own environment where you can edit programs and load/save file, and is interpreted rather than compiling source to machine code first.

Language features

As in 4th edition Dartmouth BASIC, the DEC version supports

  • LET (optional) to define variables, DIMENSION to declare arrays.
  • PRINT, INPUT for I/O
  • READ, DATA to encapsulate data in a program
  • IFTHEN for conditionals
  • FOR .. NEXT for loops
  • GOTO, ONGOTO, GOSUB & RETURN for transfer of control.
  • DEF FN for single line functions

END is needed as the last statement of the program.

The default variable type is floating point. String variables are available by suffixing the name with a $. Both types can be formed into arrays using DIMENSION. There is no integer type, but there is a matrix capability via the MAT keyword.

It also has these common extensions to Dartmouth 4th edition

  • STOP will half the program
  • REM for comments
  • CHAIN to load in a new program from the existing program
  • Page and margin control
  • String concatenation via +, string/number conversion via ASC/CHR
  • Character access via LEFT$, MID$ etc.
  • Access to disk files via FILE.

Controlling the interpreter

Start BASIC with R BASIC. Lines starting with a number are taken as part of the program. You can correct a line by typing it again and delete a line by just typing its line numbers.

Lines not starting with a number are commands.

Command Meaning
BYE Logs out of TOPS-10
CATALOG List files on disk
DELETE range Delete multiple lines
HELP Prints the help file
KEY / TAPE Switch between keyboard and paper tape
LIST [range] List program with optional line number range
MONITOR Returns to TOPS-10
NEW [filename] Start a new program with optional filename
OLD filename Read in an existing program from disk
QUEUE filename Print filename to printer
RENAME filename Change name that program in core will be saved to
REPLACE [filename] Replace filename with program in core
RESEQUENCE Renumber the program
RUN Execute program
SAVE [filename] Save program in core to filename
SCRATCH Remove the program from core
SYSTEM Returns to TOPS-10, erasing core
UNSAVE filename Deletes filename
WEAVE filename Merges the file with the current one in core

Files are not saved to disk unless you type SAVE. Both MONITOR and SYSTEM will return you to TOPS-10, the difference being that MONITOR will preserve core (see how jobs work) and SYSTEM does not.

Running TPK

As a demonstration, we'll run the TPK algorithm. in BASIC. This uses the 4th edition version unchanged. I created the file on my PC and loaded it into my TOPS-10 account using the techniques described here. Then when I start BASIC I use the old command to read this from disk.

.r basic


READY, FOR HELP TYPE HELP.
old tpk

READY
list


TPK           15:36         07-MAR-79



100 REM TPK ALGORITHM IN BASIC
110 REM
120 DEF FNT(X) = SQR(ABS(X)) + 5*X**3
130 REM
140 REM MAIN PROGRAM
150 DIM A(11)
160 LET N=11
170 PRINT "PLEASE ENTER", N, "NUMBERS"
180 FOR I = 1 TO N
190 INPUT A(I)
200 NEXT I
210 PRINT "RESULTS ARE"
220 FOR J = 1 TO N
230 LET K = N - J + 1
240 LET R = FNT(A(K))
250 IF R > 400 THEN 280
260 PRINT R
270 GOTO 290
280 PRINT "TOO LARGE"
290 NEXT J
300 END

READY
run

TPK           15:36         06-MAR-79



PLEASE ENTER   11           NUMBERS
 ?10
 ?-1
 ?1
 ?2
 ?3
 ?4
 ?4.3
 ?4.305
 ?4.303
 ?4.302
 ?4.301
RESULTS ARE
 399.886
TOO LARGE
TOO LARGE
TOO LARGE
 399.609
 322
 136.732
 41.4142
 6
-4
TOO LARGE



TIME:  0.00 SECS.

READY

system

EXIT

.

Note that the line numbers in BASIC will not be recognised by TOPS-10 native commands as they expect 5 digit line numbers. However, the SOS editor has a /BASIC switch that does understand these so can be used to edit BASIC code outside of the interpreter.

BASIC programs on the DECUS tapes

There are a number of user contributed BASIC programs on the DECUS tapes (which were discussed briefly in the last article). Component 72 is a snapshot of the Dartmouth program library. Component 97 is a set of lessons for BASIC written in BASIC itself. Component 103 contains some mathematical routines in BASIC and Fortran.

Let's restore and run the teaching program in component 97 as an example. Looking at the trailing-edge page, component 97 will be on tape DECUS 10-LIB-1:

             DECUS 10-LIB-1                  5.64 Mbyte      902
      Contains 10-3 through 10-138           compressed   extracted
             except 10-101                   tape image     files

If you click on the extracted files link next to this you will see all files on the tape. Search on the page for 97.inf and you will see below that a set of BASIC files.

   1       25(7)  <007> 43,50014 31-Mar-75 dcus:[43,50141]97.inf
   12     1467(36) <007> 43,50014  9-Oct-70 dcus:[43,50141]tutr01.bas
    9     1099(36) <007> 43,50014  9-Oct-70 dcus:[43,50141]tutr02.bas
   11     1311(36) <007> 43,50014  9-Oct-70 dcus:[43,50141]tutr03.bas
   10     1202(36) <007> 43,50014  9-Oct-70 dcus:[43,50141]tutr04.bas
   11     1379(36) <007> 43,50014  9-Oct-70 dcus:[43,50141]tutr05.bas

Take a note of the user ID for this component - [43,50141].

On the previous page, download a copy of the compressed tape image and decompress it with bzip2 -d decuslib10-01.tap.bz2. Copy this under your simh directory, press Control-E on the console and attach the tape:

sim> at mta0 decuslib10-01.tap
%SIM-INFO: MTA0: Tape Image 'decuslib10-01.tap' scanned as SIMH format
sim> c

Login as the operator (user 1,2 password failsa) and restore the files using BACKUP. Here I'm going to put all the files in my home directory for user [200,200] but they can be placed anywhere you want.

.login 1,2
JOB 11 KA603 TTY1
Password: 
[LGNJSP Other jobs same PPN]
1100	22-Mar-79	Thur

.r backup
/tape mta0:
/restore dskb:[200,200]=dcus:[43,50141]*.*
!43,50141	DCUS

"Done

/^C

Note it will take about a minute to restore the files as the tape needs to be read sequentially.

Now switch over to your user account and run the newly restored program:

.r basic


READY, FOR HELP TYPE HELP.
old tutr01

READY
run

TUTR01        11:02         22-MAR-79



WELCOME TO TIMESHARING PDP-10.WE WILL
TRY TO TEACH YOU ENOUGH ABOUT THE SYSTEM IN THIS SITTING SO THAT
YOU WILL BE ABLE TO WRITE YOUR OWN COMPUTER PROGRAMS.

Further information

On Bitsavers, the 1974 BASIC Conversational Language Manual is probably the best guide for this version of BASIC. There's also 1968's Advanced BASIC for the PDP-10 from which the 1974 version looks to have been derived.

Both manuals draw material from Dartmouth's documentation (see their manual for a comparison). Interestingly, the 1968 DEC manual notes Dartmouth as the registered trademark holder of BASIC, and thanks them for using the material in their manual. The 1974 manual has no mention of BASIC being registered nor any acknowledgements to Dartmouth.

Questions, corrections, comments

I welcome any questions or comments, and also especially any corrections if I have got something wrong. Please email me at rupert@timereshared.com and I will add it here and update the main text.


TOPS-10: Programming

A large number of programming languages were available for TOPS-10, both provided by DEC and created by third parties. In this article we'll take a quick tour of what is available today, along with a brief look at the TOPS-10 programming environment.

Programming languages available

From DEC

DEC provided the MACRO-10 assembler, and compilers for the big three languages of the time: Fortran, Algol and COBOL. DEC also had its own system programming language called BLISS.

There were two main versions of Fortran: F40, used until around 1972 and supporting Fortran IV/66, and Fortran-10, which took over after then and supported Fortran 66 and 77. The COBOL version is COBOL-68 and Algol is Algol-60.

On the interpreter side, DEC produced a BASIC and several languages inspired by JOSS - the initial one was AID, which was similar to RAND's JOSS II, and this was supplanted by Focal, DEC's own dialect that was implemented on its other machines.

DEC also produced an APL interpreter called APL-SF, but note this did not run on the KA CPU.

Versions of all the above exist on the disk images we are using.

From third parties

A probably incomplete list of preserved languages that can run on TOPS-10 is:

  • Algol-W - Niklaus Wirth's follow-up to Algol 60
  • BCPL - a compiled language that was one of the forerunners of C.
  • ECL - an interactive programming language from Harvard
  • Forth - a stack based language
  • IMP72 - a system language
  • Edinburgh IMP - a completely unrelated Algol like language
  • Lisp - several varieties of the list processing language
  • Logo - a language for teaching programming
  • Pascal - Wirth's follow-up to Algol-W
  • PILOT - a computer aided instruction language
  • SAIL - Stanform's extended Algol 60
  • SAM-76, a functional text processing language like TRAC
  • Simula - an early object orientated language
  • SNOBOL, a text processing language

Sources

Many of these were preserved via the DECUS tapes - a collection of software donated by PDP-10 users that DEC would distribute to users via tape on request. The program catalogue from 1978 can be found on Bitsavers and the tapes on trailing-edge.com. Software can be loaded via the TOPS-10 BACKUP utility as described in a previous post.

Others have been collected at the Github PDP-10 repo, often together with documentation.

Coverage on this blog

For this section of the blog, I will in later posts cover languages available on the TOPS-10 version we are using (6.03) and processor (KA). Discussion of Lisp will be deferred to future ITS/WAITS articles, and most post 1975 languages will be covered when I eventually look at TOPS-20.

The TOPS-10 compilation system

TOPS-10 has an common program development system for compiled languages where you can type EXECUTE src where src is a source file like HWORLD.FOR and it will work out what to do to execute the program. The steps it takes behind the scenes are

  • If the object file is newer than the source file, skip to the next step. Otherwise it will run COMPILE on the source file which works out what compiler to use based on the file extension and invokes it, This produces an object file with a REL extension.
  • Runs LOAD src.REL which loads the object file into memory and resolves external references - similar to linking on modern systems, but the result is now in core memory, not saved to an executable file.
  • Starts the program now in core memory using START.

If you want to create an executable file, you can use LOAD on the .REL file and then type SAVE name. This will create name.SAV which you can then invoke by typing RUN name.

As an extra convenience, the monitor will remember the parameters for the last 'compile-class' command. So if you type COMPILE hworld you can then just type LOAD and SAVE and it will use hworld as the parameter automatically.

There are several operators that can be used for more complex compile scenarios. COMPILE a+b+c will concatenate the three files a, b and c to produce a single output. COMPILE bin=src will create bin.REL after compiling the file identified by src. Compile options can also be saved into config files and then referenced in the command line by preceding them with @. See section 1.5 of the Operating System Command Manual linked below for more details.

Programmer's tools

As well as compilers, there are a number of tools helpful for programmers included in TOPS-10.

  • CREF produces a cross reference listing of symbols
  • MAKLIB to create object libraries
  • DDT for debugging

Further information

See the Operating Systems Command Manual on Bitsavers for full documentation of the compile-class command.

Questions, corrections, comments

I welcome any questions or comments, and also especially any corrections if I have got something wrong. Please email me at rupert@timereshared.com and I will add it here and update the main text.


TOPS-10 utilities: PIP, RUNOFF, FILCOM and SEND

This week we'll look at four utilities included in TOPS-10: PIP, for file copy and translation; RUNOFF to produce text documents; FILCOM to compare files; and finally the chat facility provided by SEND.

PIP

PIP or the Peripheral Interchange Program, is a tool to copy and transform files that was implemented on most of DEC's operating systems, and later copied by CP/M. Many of the file handling utilities on TOPS-10 such as COPY or RENAME are actually implemented by calling PIP.

Start the program with R PIP and then give commands at the * prompt. Note you can't supply arguments on the command line directly. Once at PIP's * prompt, the command format is

dest = src /flags

You can enter multiple commands, and can then press Control-C to exit when done.

Wildcards are allowed, eg to make a backup of all your Fortran files under the extension .BAK you could do *.bak=*.for. Device names, like TTY: for the terminal, or a tape drive logical device, can be used as well.

PIP is a bit of a Swiss Army knife of a tool: there are 25 flags that can be used in this version, consuming all letters from A-Z except K. Many of these are only useful when dealing with specific hardware such as tapes. Here are some of the other ones of interest when running TOPS-10 under emulation.

Flag Meaning
/C Delete trailing spaces and convert multiple spaces to tab
/J Convert non printing character to printable, eg ^A
/N Delete sequence numbers
/O Adds sequence numbers
/Q Prints out help options
/W Converts tab to spaces

RUNOFF

RUNOFF is a document production system that takes a text file that has been marked up with special codes and produces an output text file that is suitable for printing. The concept is clearly inspired by CTSS's RUNOFF, with typesetting codes indicated by a period as the first character of the line, and many similar commands. For example, both CTSS and TOPS-10 use .center to indicated that the next line should be centred on the page. The TOPS-10 program does have more commands, including support for footnotes, indices and callouts. Special flag characters can precede text for additional effects: & will underline it while > will add the next word to the index.

To use, prepare your input file using a standard text editor like SOS and give it a .RNO extension. Start RUNOFF with R RUNOFF and give the input file at the * prompt. It will report any errors and write an output file with the extension MEM.

Here's an example of RUNOFF processing this section's text:

.type blog.rno
.chapter RUNOFF
&R&U&N&O&F&F is a document production system that takes a
text file that has been marked up with special codes
and produces an output text file that is suitable for printing.
.note
Be sure to read the manual first
.end note

.r runoff

*blog
BLOG	1 page
*^C

.type blog.mem

			 CHAPTER 1

			   RUNOFF



RUNOFF is a document production system	that  takes  a	text
______
file that has been marked up with special codes and produces
an output text file that is suitable for printing.


			    NOTE

	       Be sure	to  read  the  manual
	       first

FILCOM

FILCOM is a utility to determine differences between files, similar to diff on Unix. Start it with R FILCOM and at its * prompt give commands of the format

output = input1,input2

where input1 and input2 are the files to compare and output is the output file - which can be omitted, in which case the differences are displayed on the terminal.

For an example we'll use our Hello World program from before and just change one line so it prints Hello Earth instead, and save that to a file hearth.for. Here's what FILCOM prints when comparing the two files:

 .r filcom

 *=hworld.for,hearth.for
 File 1)	DSKB:HWORLD.FOR[100,100]	created: 1441 16-JAN-1979
 File 2)	DSKB:HEARTH.FOR[100,100]	created: 1100 21-FEB-1979

 1)1	00400	2	FORMAT(' HELLO, WORLD')
 1)	00500		END
 ****
 2)1	00400	2	FORMAT(' HELLO, EARTH')
 2)	00500		END
 **************

 %files are different

The lines that differ are marked with n)m where n is the file number and m the page in the file. This is followed by a line where both files are the same (the END statement here) for identification purposes.

By adding the /U switch it will print differing lines with a bar in column 1 like the below. But there is no equivalent of Unix's < and > to show both lines side by side.

|	00400	2	FORMAT(' HELLO, EARTH')
|	00500		END

FILCOM will also compare binary files, for example looking at two object code files:

*=hworld.rel,hearth.rel
File 1)	DSKB:HWORLD.REL[100,100]	created: 1443 16-JAN-1979
File 2)	DSKB:HEARTH.REL[100,100]	created: 1101 21-FEB-1979

000024	536372 246210	426032 252220	110340 014030

%files are different

Here the output is broken into three fields: the octal address, file 1's word, file 2's word and the XOR of the two words.

By default FILCOM will decide whether to do a text or binary comparison by looking at the file extensions. You can override this by giving a flag after the input file specifications: /A to force ASCII text mode, /B to force binary mode.

Some other useful flags are /S to ignore spaces and tabs, and /C to ignore comments (text after ;).

SEND

SEND allows one-way communication from one terminal to another. The parameters can either be a terminal device

.send dev:message

or a job number

.send job message

An example of the former would be if you are logged in on TTY0: and want to send a message to TTY1:

.send tty1:hello

On tty1 the bell will ring and it will type

;;TTY0: - hello

You can also specify cty: as the device to send the message to the operator's console.

More information

The User Utilities manual on Bitsavers describes the PIP, RUNOFF and FILCOM commands in more detail, but note this manual is for a later version of TOPS-10. The Operating Systems Command Manual documents the SEND command.

Questions, corrections, comments

I welcome any questions or comments, and also especially any corrections if I have got something wrong. Please email me at rupert@timereshared.com and I will add it here and update the main text.


TOPS-10: Users

Today let's investigate how users and logins are handled on TOPS-10. We will see how to look at user information and add new ones, and there's also a brief discussion of the security of this version.

Viewing user information

The REACT program is used to manage users on TOPS-10. Although you can start this program as a regular user, it will not have much effect as it cannot read the accounting files in SYS:. So first, login as the operator, which has a user ID of 1,2 and password failsa, and then start REACT.

.login 1,2
JOB 11 KA603 TTY1
Password: 
[LGNJSP Other jobs same PPN]
1018	22-Feb-79	Thu

.r react

FOR HELP TYPE "H<CAR RET>"

*

Type r to read in the main accounting file SYS:ACCT.SYS and t to display it on the terminal. For the second command, it will ask you if you want to list codes (ie passwords) as well.

*r
[8 OUT OF 500 ENTRIES ARE USED]

*t
LIST CODES?y
...
100	100	DEMONSTRATIO	000000000000	DEMO1 	777777777777
	511,,511 2,,5      	017500001763		      
	8 SEP 768	0	511

There's no ready source of documentation for these fields, but you can work out what some of them are by context, such as the account name and password.

To view the other accounting file SYS:AUXACC.SYS type a. REACT will read this file into its buffer and you can again display it with t.

*a
[5 OUT OF 500 ENTRIES ARE USED]

*t

...

100	100	DSKB  	0	100000	100000	0

This indicates what disk structures the user is allowed to access.

Type e to exit REACT.

Creating a new user

Often you will want to set up a new user ID beyond the 100,100 account so you can arrange your work or just to have a personalised account. To prepare for this, first choose an octal project and programmer ID pair. For regular users these numbers should be larger than 10. For this example let's choose 200,200. Also select a login name (here rupert) and a password (here secret). Passwords can be 1-6 characters long and are case-insensitive.

The easiest way to do this is copy an existing user and edit it.

Logged in as user 1,2 again, start REACT and load the main accounting file with r. Type i 200,200=100,100 to copy the user from 100,100 and then c 200,200 to change the name and code fields. Finally, write the file with w.

*i 200,200=100,100

*c 200,200
CHANGE: name
ARGS: rupert
CHANGE: code
ARGS: secret
DEMO1  WAS THE OLD CODE FOR THAT NUMBER
CHANGE: 

*w

Next, change the auxiliary accounting file to give access to disk structures. Load it in with a, insert a copy with i, save the file and exit.

*a
[5 OUT OF 500 ENTRIES ARE USED]

*i 200,200=100,100

*w

*e

EXIT

One last task needs to be done - create a user file directory for the new login. Still as 1,2, use the credir command.

.r credir

Create directory: [200,200]
  Created DSKB0:[200,200].UFD/PROTECTION:775
Create directory: ^C

The login is now ready for use.

Changing passwords

Using REACT you can change the password for any user with the C command, choosing the code option as shown above.

It should also be possible for a user to change their own password. The help file for LOGIN indicates this is done by giving the /PASSWORD switch at login time, ie

.login 200,200/password

However, the version we have does not seem to support this.

Who am I?

With multiple logins it can be easy to lose track as to what you are currently logged in as. The PJOB command will help here.

.pjob
Job 11   User RUPERT   [200,200]   TTY1

Predefined users

Certain user IDs have a predefined function. There is often also a logical device name associated with these, so for a directory of system help files you can do either dir [2,5] or dir HLP:.

User Meaning Logical
1,1 Master File Directory MFD:
1,2 System operator
1,3 Old versions of programs OLD:
1,4 System programs SYS:
2,5 Help files HLP:
3,3 Batch queues
5,11 Relocatable object library REL:
5,17 MACRO universal files UNV:
10,6 Software distributions
10,7 Software distributions DEC:

The full set of defined users - including those empty or not present on the disk files we are using - can be found in the Operating Systems Command Manual Appendix A.

Security

As you can see from the above, security is fairly rudimentary on this version of TOPS-10. Passwords can be as short as one character, are stored in plain text and being case-insensitive their strength is not great.

At login time, if you enter an invalid user id or an invalid password for an existing user id you do get the same message.

?LGNIET INVALID ENTRY - Try again

so it is not possible to guess user IDs this way. However, some minitor commands such as SYSTAT are available before you login, so you can get a list of currently logged in users that way. It is possible to keep trying different passwords - there is no lock out after a number of attempts - but the system introduces a small delay after each attempt which at least slows this down.

More information

For TOPS-10 6.03 there is no printed documentation for REACT available that I can find. There is a short help file available via H while running REACT, or via HELP REACT from the command line.

Bitsavers has the Monitor Installation Guide with a description of REACT for TOPS-10 version 7, but this is quite different from the version we have in 6.03.

The Operating Systems Command Manual documents the LOGIN command, but note this differs slightly from what the online help file for LOGIN.

Questions, corrections, comments

I welcome any questions or comments, and also especially any corrections if I have got something wrong. Please email me at rupert@timereshared.com and I will add it here and update the main text.


Next →