/*% cat %
This tape is provided by David M. Tilbrook
of B-N Software Research of Toronto,
formerly of Human Computing Research and the University of Toronto.
This tape contains some of the software developed by Mr. Tilbrook.
It also contains some programs by Tom Duff, Rob Pike, Mike Tilson,
Kelvin Delbarre and some co-operative efforts involving the above.

Versions of all of the software runs on both the UNIX Version 6
and the PWB/UNIX PDP11-70's at B-NSR.
A lot of it also runs at H.C.R., DCIEM in Toronto, and at Cal. Tech.
To the best of my knowledge, other than compiler dependancies
and extentions to /usr/include and /lib/libc.a the software
should be fairly standard.

BITCHING TO TILBROOK

HOME:	247 Brunswick Ave.,
	Toronto, Ontario
	CANADA
	M5S 2M6

	Phone (416)925-8168

WORK:	B-N Software Research,
	14th floor,
	522 University Ave.,
	Toronto, Ontario
	CANADA
	M5G 1W7

	Phone (416)598-0196

DIRECTORIES

annotate - TIPs data base of Tilbrook Distribution Software
data     - samples or complete copies of data files used
ed       - U. of Toronto's ed -- may be useful for understanding Qed.
include  - include files required by s1 and s2 source
man      - UPM tree for most of the distribution
misc     - directory of unrecommended and unguarenteed but useful proggies
new      - programs and UPM entries for late additions to distribution
qed      - the Tilbrook/Pike Qed text editor source and manual entries
s1       - source files
s2       - source files
s4       - Non-standard Clib routines
tips     - The Tilbrook Information Processing system
tmac     - A set of macros that you might find useful
tty      - The tty.c that is nice with Qed.
usr_qed  - Common qed programs and functions

FILES

Dirlist - complete list of all directories in this tree.
Filelist - complete list of all files in this tree.
Read_me  - you are looking at it

INSTALLATION

Some things that might make life easier.

Every directory contains a Read_me file.
Each Read_me contains a brief description of the contents of
the directory, plus the pathnames used in the files.

The pathnames are listed in the following format:

	filename `:' line_number `:' contents

This format is accepted by Repl (source in s2).
The contents of the lines should be edited
and put into a file called `whatever'.

	repl -vr whatever

will make the change the referenced lines to the new contents.

The command:

	repl -vs whatever

will show you what it would do without doing it.

Every source file and most other files in this tape have a ``Com'' line.
A ``Com'' line is a line containing the literal string ``/*%''.
This string is followed by the shell command that ``converts'' the
file into whatever it should be.
For example repl.c contains the following lines

	/*% cc -s -O % -o repl
	 */

The files whats.y contains lines

	/*% yacc %; cc -s -O y.tab.c -ly -o whats; rm y.tab.c
	*/

The command:

	com -s repl.c whats.y

will read repl.c and whats.y in turn,
replace any `%'s by the file name, and use the shell to execute

	cc -s -O repl.c -o repl
	yacc whats.y; cc -s -O y.tab.c -ly -o whats; rm y.tab.c

The `-s' flag specifies com is to echo the commands to standard output
prior to calling the shell.

Thus:

	mkdir bin
	cd bin
	com -s ../s1/*.[cy] ../s2/*.[cy]

will create the required binaries.

A final note:
Both TIPs and Qed installation include usages of Kmake.
Kmake differs from the standard Make in that it knows how
to deal with archive files.
I suggest that it be compiled when Com and Repl are done.

libc.a, liby.a and libPW.a functions

The following is a list of the undefined references used in s1 and s2.

alloc	core allocator
atof	convert ASCII to floating
atoi	convert ASCII to integer
chdir	change working directory
chmod	change mode of file
close	close a file
creat	create a new file
ctime	convert date and time to ASCII
derror	diagnostic messages
dup	duplicate an open file descriptor
end	last locations in program
execl	execute a file
exit	terminate process
fcreat	open buffered output file
fflush	flush buffered output
flush	flush fout file
fprintf	formatted print
fopen	open file for buffered input
fork	spawn new process
getc	getchar from buffered input
getchar	read character
getgid	get group identifications
getpid	get process identification
getpw	get name from UID
getuid	get user identifications
gtty	get terminal status
ldiv	long division
link	link to a file
localtime	takes time long and returns pointer to array of broken time.
locv	long output conversion
lseek	seek that takes long displacements
open	open for reading or writing
perror	system messages
pexec	path search and execute a file -- in -lPW
pipe	create an interprocess channel
printf	formatted print
putc	putchar to buffered output
putchar	write character
qsort	quicker sort
read	read from file
sbrk	change core allocation
seek	move read/write pointer
signal	catch or ignore signals
sprintf	printf into a string
stat	get file status
strcpy	strcpy(a,b) copies char *b to char *a
strequal	strequal(a,b) returns 1 iff string a equals string b
strlen	strlen(a) is length of string a
stty	set mode of terminal
time	get date and time
ttyn	return name of current terminal
unlink	remove directory entry
wait	wait for process to terminate
write	write on a file
yyerror	Yacc diagnostic
