			The ToolBus interpreter
                        =======================

		     Version 0.13 (April 2000)
                     -------------------------------


What is the ToolBus?
--------------------

The ToolBus is a novel software architecture intended for the
flexible development of cooperating, distributed applications
and is described in detail in:

	J.A. Bergstra & P. Klint
	The ToolBus: a component interconnection architecture,
	Technical Report P9408,
	Programming Research Group, University of Amsterdam, 1994
and
	J.A. Bergstra & P. Klint
	The Discrete Time ToolBus,
	Technical Report, P9502,
	Programming Research Group, University of Amsterdam, 1995

This version implements the ToolBus as described in the second report above.
It is not fully compatible with earlier versions (see ``Guide to ToolBus
Programming'' for a detailed list of differences).

Table of contents of distribution
---------------------------------

        AUTHORS		A list of toolbus developers
	COPYING		GNU GENERAL PUBLIC LICENSE
	README		This file
	INSTALL		Information file describing the installation procedure.
        NEWS            Information about new features
	ChangeLog	A log of changes
	configure	Configuration program (shell script)
	configure.in	Template for configure file
	Makefile.in	Template for the toplevel makefile
	Makefile.am	Template for Makefile.in
	adapters	Adapters for connecting Unix programs to the ToolBus
	demos		Demonstration programs
	doc		Documentation (including Guide to ToolBus Programming)
	libtb		Sources of ToolBus library (libtb.a)
        missing         Installation utility
	mkinstalldirs	Installation utility
	tbviz		Sources of ToolBus Visualization tool
	test		Test programs
	toolbus		Sources of ToolBus program

Installation steps
------------------

(1) Configure the distribution by typing

	./configure

    This is a shell script that checks various features of your system and
    generates Makefiles in this directory tree. For more information about
    the configuration procedure see the file INSTALL.

    By default, all software will be installed in /usr/local. You can
    change this to some other directory, say ``/opt/toolbus'', by
    calling configure as follows:

	./configure --prefix=/opt/toolbus

    If you want to build additional adapters, specify them during
    configuration. For example, to build the 0 adapter use to following
    command:
    
       ./configure --with-java
    
    Also, if you don't want some adapters to be build, specify them
    during configuration. For example:
    
       ./configure --without-emacs
    
    The command 
       ./configure --help
    
    gives a list of the available adapters and whether they are compiled by
    default (you can deselect them using the --without-... option), or not
    (you should select them using --with-...)
  
    If you use gcc, this library is built with "gcc -Wall -g -O2". If you prefer
    different options use --with-cflags="<options>" when you run configure.


(2a) Compile the sources by typing:

	gmake

    This will compile the sources in `libtb', `toolbus', `demos', and
    `adapters'.
    
(2b) Run
        gmake check
    
     To run some test programs in the test directory.

(3) If the previous went well type

	gmake install

    to install the software

(4) Add `prefix/bin' to your PATH.

(5) Report strange behavior to me (Paul.Klint@cwi.nl or paulk@wins.uva.nl)

(6) Also report ideas, suggestions, etc.

Enjoy!

Paul Klint

-----------------------------------------------------------------

CAVEATS
=======
(1) WARNING: this software is still under development and is not
    yet completely stable. Changes will be made to its functionality
    without notice.
(2) This software has been tested on SUN4 (SOLARIS & SunOs), SGI (IRIX), 
    PC (Linux), RS6000 (AIX).


ABOUT THE DEMOS
===============

The demo's make use of a user-interface construction system called
Tcl/Tk, in particular a program called "wish" (for windowing shell).
Tcl is an extensible, interpreted language. Tk is an extension to Tcl
which provides the programmer with an interface to the X11 windowing
system.
Tcl-7.3 and Tk-3.6 are available at harbor.ecn.purdue.edu:/pub/tcl/distrib
They are available at our site, too, just in case...

For all clarity: the ToolBus implementation itself is completely
self-contained and does not depend on Tcl/Tk. The demo's, however,
make use of it.

Calculator
----------

Run this demo by typing:

	toolbus calc.tb

A menu will appear with three buttons:
(a) Pushing the Calc putton requires you to type prefix
    expressions like: plus(10,20). Only, plus, mul and numbers are
    allowed.
(b) Pushing the Time button gives the current time
(c) Pushing the Log button gives a log of calculations.

Note: try adding the batch tool to the toolbus in calc.tb

Editor
------

Run this demo by typing:

	toolbus top.tb

A Menu will appear with three buttons:
(a) Pushing Edit leads to a dialogue asking about a filename.
    Note: *any* file name is good, since we always display the
    *same* file.
(b) Pushing Close leads to a dialogue asking about a filename.
    The editor in question will be closed.
(c) Pushing Quit terminates the session.

Note: try clicking in an edit window using the middle mouse button.
Note: try the Tree menu.

Auction
-------

Run this demo by typing:

	toolbus auction.tb

It will display the auction master's window. To execute individual
bidders execute
	bidder -name your-name
or
	bidder -name your-name -TB_HOST other-machine

if bidder and ToolBus are running on different machines.

Constraints
-----------
Run this demo by typing:

	toolbus cons.tb

A canvas will appear with three colored balls. Try to move
any ball and observe how some balls are moved back to
satisfy the imposed constraints.
Suggestion: First remove the lines labelled "constraint" in cons.tb.
This will allow unconstrained movement of the balls. 
(This can be done by adding the start-of-comment symbol %% at
the beginning of the corresponding line).
Next add constraints one-by-one and observe the effect.

Game
----
Run this demo by typing:

	toolbus game.tb

Two game boards will appear. You can push a square on either
board and the result will appear on both boards.
This demo does not yet contain rules-of-the-game and
is incomplete.

Wave
----

Run this demo by typing:

	toolbus wave.tb

It will simulate a one-dimensional wave equation.

Perl
----

Run this demo by typing:

	toolbus test.tb

It is a simple illustration of the use of Perl for writing
ToolBus tools.

Hello
-----

Contains all versions of the ``hello'' example as described
in ``A Guide to ToolBus Programming''.

Other demo's
------------

The other demo's are still under development.
