AR(I)			     3/15/72			    AR(I)

     ar - archive and library maintainer

     ar__ key afile name ...

     Ar__  maintains groups of files combined into a single archive
     file.  Its main use is to create and update library files as
     used by the loader.  It can be used, though, for any similar

     Key___  is  one character from the set drtux_____, optionally conca-
     tenated with v_.  Afile_____ is the archive file.  The  names_____  are
     constituent  files in the archive file.  The meanings of the
     key___ characters are:

     d_ means delete the named files from the archive file.

     r_ means replace the named files in the archive file.  If the
     archive file does not exist, r_ will create it.  If the named
     files are not in the archive file, they are appended.

     t_	prints	a  table  of contents of the archive file.  If no
     names are given, all files in the archive	are  tabled.   If
     names are given, only those files are tabled.

     u_ is similar to r_ except that only  those	files  that  have
     been  modified  are  replaced.   If  no names are given, all
     files in the archive that have been  modified  will  be  re-
     placed by the modified version.

     x_ will extract the named files.  If no names are given,  all
     files  in the archive are extracted.  In neither case does x_
     alter the archive file.

     v_	means  verbose.   Under  the  verbose  option, ar__ gives a
     file-by-file description of the making of a new archive file
     from the old archive and the constituent files.  The follow-
     ing abbreviations are used:

	c_ copy
	a_ append
	d_ delete
	r_ replace
	x_ extract

     /tmp/vtm?	     temporary

     ld(I), archive(V)

			      - 1 -

AR(I)			     3/15/72			    AR(I)

     Option  tv__ should be implemented as a table with more infor-

     There should be a way to specify the placement of a new file
     in an archive.  Currently, it is placed at the end.

     Since  ar__	has  not been rewritten to deal properly with the
     new file system modes, extracted files have mode 666.

			      - 2 -

AS(I)			     1/15/73			    AS(I)

     as - assembler

     as__ [ - ] name ...

     As__  assembles  the concatenation of the named files.  If the
     optional first argument - is used, all undefined symbols  in
     the assembly are treated as global.

     The output of the assembly is left on the file a_.out___.  It is
     executable if no errors occurred during the assembly, and if
     there were no unresolved external references.

     /etc/as2	     pass 2 of the assembler
     /tmp/atm[1-4]?  temporary
     a.out	     object

     ld(I), nm(I), db(I), a.out(V), `UNIX Assembler Manual'.

     When an input file cannot be read, its name  followed  by	a
     question  mark is typed and assembly ceases.  When syntactic
     or semantic errors occur, a single-character  diagnostic  is
     typed out together with the line number and the file name in
     which it occurred.  Errors in pass 1 cause  cancellation  of
     pass 2.  The possible errors are:

     ) Parentheses error
     ] Parentheses error
     < String not terminated properly
     * Indirection used illegally
     . Illegal assignment to `.'
     A Error in address
     B Branch instruction is odd or too remote
     E Error in expression
     F Error in local (`f' or `b') type symbol
     G Garbage (unknown) character
     I End of file inside an if
     M Multiply defined symbol as label
     O Word quantity assembled at odd address
     P `.' different in pass 1 and 2
     R Relocation error
     U Undefined symbol
     X Syntax error

     Symbol table overflow is not checked.  x  errors  can  cause
     incorrect line numbers in following diagnostics.

			      - 1 -

BAS(I)			     1/15/73			   BAS(I)

     bas - basic

     bas___ [ file ]

     Bas___  is a dialect of Basic.  If a file argument is provided,
     the file is used for input before the console is read.   Bas___
     accepts lines of the form:

	integer statement

     Integer numbered statements (known as  internal  statements)
     are  stored  for later execution.	They are stored in sorted
     ascending order.  Non-numbered  statements  are  immediately
     executed.	 The  result of an immediate expression statement
     (that does not have `=' as its highest operator) is printed.

     Statements have the following syntax:

	  The  expression  is  executed for its side effects (as-
	  signment or function call) or for printing as described

	  Return to system level.

     draw____ expression expression expression
	  A line is drawn on the Tektronix 611 display `/dev/vt0'
	  from	the  current  display  position  to  the  XY  co-
	  ordinates  specified by the first two expressions.  The
	  scale is zero to one in both X and  Y  directions.   If
	  the  third  expression  is zero, the line is invisible.
	  The current display position is set to the end point.

     display_______ list
	  The list of expressions and strings is concatenated and
	  displayed  (i.e.  printed)  on  the 611 starting at the
	  current display position.  The current display position
	  is not changed.

	  The 611 screen is erased.

     for___ name = expression expression statement
     for___ name = expression expression
	  The for___ statement  repetitively  executes  a	statement
	  (first  form)  or  a	group of statements (second form)
	  under control of a named variable.  The variable  takes
	  on  the  value  of the first expression, then is incre-
	  mented by one on each loop, not to exceed the value  of

			      - 1 -

BAS(I)			     1/15/73			   BAS(I)

	  the second expression.

     goto____ expression
	  The  expression  is  evaluated, truncated to an integer
	  and execution goes to the  corresponding  integer  num-
	  bered  statment.   If executed from immediate mode, the
	  internal statements are compiled first.

     if__ expression statement
	  The statement is executed if the  expression	evaluates
	  to non-zero.

     list____ [expression [expression]]
	  is  used  to	print out the stored internal statements.
	  If no arguments are given, all internal statements  are
	  printed.   If one argument is given, only that internal
	  statement is listed.	If two arguments are  given,  all
	  internal  statements	inclusively between the arguments
	  are printed.

     print_____ list
	  The list of expressions and  strings	are  concatenated
	  and printed.	(A string is delimited by " characters.)

     return______ [expression]
	  The  expression  is  evaluated and the result is passed
	  back as the value of a function call.  If no expression
	  is given, zero is returned.

	  The internal statements are compiled.  The symbol table
	  is re-initialized.   The  random  number  generator  is
	  reset.  Control is passed to the lowest numbered inter-
	  nal statement.

     Expressions have the following syntax:

	  A  name  is used to specify a variable.  Names are com-
	  posed of a letter followed by letters and digits.   The
	  first four characters of a name are significant.

	  A  number  is  used  to  represent a constant value.	A
	  number is written in Fortran style,  and  contains  di-
	  gits,  an  optional decimal point, and possibly a scale
	  factor consisting of an e followed by a possibly signed

     ( expression )
	  Parentheses  are  used to alter normal order of evalua-

     expression operator expression
	  Common functions of two arguments  are  abbreviated  by
	  the two arguments separated by an operator denoting the
	  function.  A complete list of operators is given below.

			      - 2 -

BAS(I)			     1/15/73			   BAS(I)

     expression ( [expression [ , expression] ... ] )
	  Functions of an arbitrary number of  arguments  can  be
	  called  by  an  expression followed by the arguments in
	  parentheses separated by commas.  The expression evalu-
	  ates to the line number of the entry of the function in
	  the internally  stored  statements.	This  causes  the
	  internal  statements to be compiled.	If the expression
	  evaluates negative, a builtin function is called.   The
	  list of builtin functions appears below.

     name [ expression [ , expression ] ...  ]
	  Each	expression is truncated to an integer and used as
	  a specifier for the name.  The result is  syntactically
	  identical  to  a  name.  a_[1_,2_] is the same as a_[1_][2_].
	  The truncated  expressions  are  restricted  to  values
	  between 0 and 32767.

     The following is the list of operators:

	  = is the assignment operator.  The left operand must be
	  a  name  or  an array element.  The result is the right
	  operand.  Assignment binds right  to	left,  all  other
	  operators bind left to right.

	  &  (logical and) has result zero if either of its argu-
	  ments are zero.  It has result one if  both  its  argu-
	  ments  are non-zero.	  (logical or) has result zero if
	  both of its arguments are zero.  It has result  one  if
	  either of its arguments are non-zero.

     <	<=  >  >=  ==  <>
	  The  relational operators (< less than, <= less than or
	  equal, > greater than, >= greater  than  or  equal,  ==
	  equal  to,  <>  not equal to) return one if their argu-
	  ments are in the specified relation.	They return  zero
	  otherwise.   Relational  operators  at  the  same level
	  extend as follows: a>b>c is the same as a>b&b>c.

     + -
	  Add and subtract.

     * /
	  Multiply and divide.


     The following is a list of builtin functions:

	  is  the  value  of  the  i -th  actual parameter on the
	  current level of function call.

	  is the exponential function of x.

			      - 3 -

BAS(I)			     1/15/73			   BAS(I)

	  is the natural logarithm of x.

	  is the sine of x (radians).

	  is the cosine of x (radians).

	  is the arctangent of x . its value  is  between  -(*p/2
	  and (*p/2.

     rnd___( )
	  is  a  uniformly distributed random number between zero
	  and one.

     expr____( )
	  is the only form of program input.  A line is read from
	  the  input  and evaluated as an expression.  The resul-
	  tant value is returned.

	  returns x truncated to an integer.

     /tmp/btm?	    temporary

     Syntax errors cause the incorrect line to be typed  with  an
     underscore  where	the  parse failed.  All other diagnostics
     are self explanatory.

     Has been known to give core images.  Needs a way to  list____	a
     program onto a file.

			      - 4 -

CAT(I)			     1/15/73			   CAT(I)

     cat - concatenate and print

     cat___ file ...

     Cat___  reads  each file in sequence and writes it on the stan-
     dard output.  Thus:

	cat___ file____

     is about the easiest way to print a file.	Also:

	cat___ file1_____ file2_____ >file3_____

     is about the easiest way to concatenate files.

     If  no input file is given cat___ reads from the standard input

     If  the  argument - is encountered, cat___ reads from the stan-
     dard input file.

     pr(I), cp(I)

     none; if a file cannot be found it is ignored.

     cat___ x_ y_ >x_ and cat___ x_ y_ >y_ cause strange results.

			      - 1 -

CATSIM(I)		     11/1/73			CATSIM(I)

     catsim - phototypesetter simulator


     Catsim______  will  interpret  its standard input as codes for the
     phototypesetter (cat).  The output of catsim______  is  output  to
     the display (vt).

     About the only use of catsim______ is to save time  and	paper  on
     the phototypesetter by the following command:

	     troff -t files | catsim


     troff(I), cat(IV), vt(IV)

     Point sizes are not correct.  The vt character set  is  res-
     tricted to one font of ASCII.

			      - 1 -

CC(I)			     3/15/72			    CC(I)

     cc - C compiler

     cc__ [ -c_ ] [ -p_ ] file ...

     Cc__  is  the  UNIX	C  compiler.   It  accepts three types of

     Arguments	whose  names  end  with  `.c' are assumed to be C
     source programs; they are compiled, and the  object  program
     is  left  on  the file whose name is that of the source with
     `.o' substituted for `.c'.

     Other  arguments  (except	for  -c) are assumed to be either
     loader flag arguments, or C-compatible object programs, typ-
     ically  produced  by an earlier cc__ run, or perhaps libraries
     of C-compatible routines.	These programs, together with the
     results  of  any  compilations specified, are loaded (in the
     order given) to produce  an  executable  program  with  name

     The -c_ argument suppresses the loading phase,  as	does  any
     syntax error in any of the routines being compiled.

     If the -p_ flag is used, only the macro prepass is run on all
     files whose name ends in .c.  The expanded source is left on
     the file whose name is that of the source with .i substitut-
     ed for .c.

     file.c	     input file
     file.o	     object file
     a.out	     loaded output
     /tmp/ctm?	     temporary
     /lib/c[01]      compiler
     /lib/crt0.o     runtime startoff
     /lib/libc.a     builtin functions, etc.
     /lib/liba.a     system library

     `C reference manual', cdb(I), ld(I)  for  other  flag  argu-


			      - 1 -

CDB(I)			     8/15/73			   CDB(I)

     cdb - C debugger

     cdb___ [ core [ a.out ]]

     Cdb___  is  a debugging program for use with C programs.  It is
     by no means completed, and this section is essentially  only
     a placeholder for the actual description.

     Even the present cdb___ has one useful feature: the command


     will give a stack trace of the core image of a terminated	C
     program.  The calls are listed in the order made; the actual
     arguments to each routine are given in octal.

     cc(I), db(I), C Reference Manual

     It has to be fixed to work with the new system.

			      - 1 -

CHDIR(I)		     3/15/72			 CHDIR(I)

     chdir - change working directory

     chdir_____ directory

     Directory_________	becomes  the  new working directory.  The process
     must have execute permission on the directory.  The  process
     must have execute (search) permission in directory_________.

     Because a new process is created to  execute  each  command,
     chdir_____  would  be  ineffective if it were written as a normal
     command.  It is therefore recognized  and	executed  by  the



			      - 1 -

CHMOD(I)		     8/20/73			 CHMOD(I)

     chmod - change mode

     chmod_____ octal file ...

     The  octal mode replaces the mode of each of the files.  The
     mode is constructed from the OR of the following modes:

	 4000 set user ID on execution
	 2000 set group ID on execution
	 0400 read by owner
	 0200 write by owner
	 0100 execute by owner
	 0070 read, write, execute by group
	 0007 read, write, execute by others

     Only the owner of a file (or the super-user) may change  its



			      - 1 -

CHOWN(I)		     3/15/72			 CHOWN(I)

     chown - change owner

     chown_____ owner file ...

     Owner_____  becomes the new owner of the files.  The owner may be
     either a decimal UID or a login name found in  the  password

     Only the owner of a file (or the super-user) is  allowed  to
     change  the  owner.   Unless it is done by the super-user or
     the real user ID of the new owner, the  set-user-ID  permis-
     sion bit is turned off as the owner of a file is changed.



			      - 1 -

CMP(I)			     1/15/73			   CMP(I)

     cmp - compare two files

     cmp___ file1 file2

     The   two	 files	 are  compared	for  identical	contents.
     Discrepancies are noted by giving the offset and the differ-
     ing words, all in octal.

     proof (I), comm (I)

     If  the  shorter of the two files is of odd length, cmp___ acts
     as if a null byte had been appended to it.   The  offset______  is
     only a single-precision number.

			      - 1 -

COMM(I) 		     8/21/73			  COMM(I)

     comm - print lines common to two files

     comm____ [ - [ 123___ ] ] file1 file2 [ file3 ]

     Comm____  reads  file1_____  and  file2_____, which should be in sort, and
     produces a three column output: lines only in  file1_____;  lines
     only in file2_____; and lines in both files.

     If file3_____ is given, the output will be placed  there;  other-
     wise it will be written on the standard output.

     Flags 1, 2, or 3  suppress  printing  of  the  corresponding
     column.   Thus  comm____ -12__ prints only the lines common to the
     two files; comm____ -23__ prints only lines in the first file  but
     not in the second; comm____ -123___ is a no-op.

     uniq(|I|), proof(|I|), cmp(|I|)


			      - 1 -

CP(I)			     1/24/73			    CP(I)

     cp - copy

     cp__ file1 file2

     The first file is copied onto the second.	The mode and own-
     er of the target file are preserved if it	already  existed;
     the mode of the source file is used otherwise.

     If file2_____ is a directory, then the target file is a  file  in
     that directory with the file-name of file1_____.

     cat(I), pr(I), mv(I)

     Copying a file onto itself destroy