		     SCADALisp, Shareware Release
		    Cogent Real-Time Systems Inc.
			  September 20, 1995


Table of Contents			  
=================

1.  What is SCADALisp?
2.  Where is SCADALisp Used?
3.  Why a Shareware Release?
4.  Does Shareware mean Unreliable, or just Cheap?
5.  What can SCADALisp do?
6.  What is SLANG?
7.  What Do I Get With Shareware SCADALisp?
8.  What Do I Get When I Register?
9.  What Do I Get with the Commercial Version of SCADALisp?
10. What Do I Get with the Control Version of SCADALisp?
11. What Does the LICENSE Really Mean?
12. The LICENSE says Sakura Software.  Why?
13. How do I Register?
14. How do I Get Commercial Versions of SCADALisp?
15. How Much Do The Commercial and Control Versions Cost?
16. How do I Contact Cogent?
17. What Else Can Cogent do for Me?

			  
1. What is SCADALisp?
=====================

SCADALisp is a dialect of the LISP programming language which has been
optimized for performance and memory usage, and enhanced with a number
of internal functions making it an excellent language for the
implementation of control programs for industrial, commercial and
custom control applications.  SCADALisp is built to cooperate with
Cogent's Cascade program, a distributed real-time database running in
QNX which provides a data concentration and distribution layer for a
distributed control system.  Through Cascade, SCADALisp can be used as
a control language for existing applications running in MS-Windows
using Wonderware's Intouch man-machine interface.

SCADALisp is available in 4 versions:

	Shareware: limited functionality, unsupported
	Registered shareware: more functionality, unsupported
	Commercial: full functionality, supported
	Control: commercial + Cascade support, supported

Special versions can be provided for resource-limited applications, or
to include ProcessVision support.


2. Where is SCADALisp Used?
===========================

SCADALisp and Cascade have been used in industrial process control
applications from 500 to 8000 points spanning as many as 17 remote
terminal units and 8 operator interfaces.  This is by no means the
upper bound on system size.  That Neilson's chocolate bar you had for
lunch was made in a process controlled by SCADALisp and Cascade.


3. Why a Shareware Release?
===========================

SCADALisp functions on several levels, primarily as a custom control
language and a graphical user interface language.  Support for most of
the QNX Windows API and virtually all of the QNX Photon Widget
functions are supported by SCADALisp.  SCADALisp can be run without
Cascade as a stand-alone script language similar to, but more powerful
than, interface languages such as TCL/TK or Hypercard.

Cogent felt that the QNX user community could benefit from having such
a language available for programming interactive applications, but
realized that most people do not have the necessary budget to buy a
control package to get it.  Consequently, Cogent is pleased to release
the SCADALisp portion of its control package as shareware.  It is our
hope that you, the QNX user community, will find this valuable and
share interesting SCADALisp code with other users.

If you do find SCADALisp useful, we would appreciate receiving your
registration fee.  Even though the shareware release is unsupported,
we expect that it will generate a support burden which we hope to
offset with your registration.  You will also get a more full-featured
version of SCADALisp with your registration, including SLANG, a
procedural language using the SCADALisp engine.  SLANG looks a lot
like "C" with some object-oriented extensions, making C programmers
productive almost immediately.


4. Does Shareware mean Unreliable, or just Cheap?
=================================================

SCADALisp is an unbundled portion of a commercial product which has
been in development for almost two years.  Earlier versions of
SCADALisp and Cascade have been running continuously at Neilson
Cadbury Ltd. for more than a year.  Cascade has been running
continuously in a municipal waste treatment facility for almost a
year.  These products are neither unreliable nor cheap.  Cogent is
intending to be around for a long time, and SCADLisp will just keep
getting better.  Unfortunately, the economics of shareware make
technical support for a shareware product impossible.  If you require
support, you will have to purchase the commercial product (see below).


5. What can SCADALisp do?
=========================

SCADALisp provides a large range of features in over 500 built-in
functions.  In addition, user-defined functions provide unlimited
functionality.  Broadly, SCADALisp provides:

User-definable functions: A user or developer may define functions
with any number of arguments, including the use of the Common LISP
&optional and &rest keywords.  SCADALisp adds the keyword &noeval.

Local variables: Variables may be defined as local to a block of code.
Function arguments are automatically declared local.

Dynamic scoping: Variable scopes are dynamic, so that a function may
temporarily override the value of a global variable, and that override
will carry into sub-functions.

Garbage collection: Unused memory is collected and re-used whenever
appropriate, removing the responsibility for memory management from
the developer.  The garbage collector typically runs in less than 0.05
seconds on an Intel 486/33 computer.

Data abstraction: LISP data items can be of any of the following
types: integer, real, string, symbol, list, array, buffer.

Recursion: LISP functions may call themselves with different
arguments.

Object-oriented programming: SCADALisp contains support for a
single-inheritance object-oriented paradigm, including instance
variables and virtual methods.  Constructors and destructors are
triggered for all ancestors of a class.  Methods are overloaded.  "C"
structures can be mapped to SCADALisp classes, though this requires
compilation.

Error handling: Fatal errors may be trapped, causing the LISP
interpreter to enter a debugging mode, or may be trapped
non-interactively allowing execution to continue from a user-defined
safe recovery point.  Blocks of code may be protected such that they
will be executed even if an error occurs in preceding code.

Real-time timers: LISP functions may be run on a timed basis,
independently of other running functions.  The timers will preempt any
function except the garbage collector, and will run within 0.5 msec of
the desired time except where limited by the operating system or the
garbage collector.  The practical timer resolution is 20 msec, though
times may be specified in microseconds.  Three types of timers are
provided: interval timers, one-shot relative timers, and date-related
interval timers.  Interval timers will not drift, even if momentarily
delayed by garbage collection or operating system delays (such as task
switching).  If a timer is delayed, subsequent firings of the timer
will "catch up" the time of the previous delay.  Over a long time
period, an interval timer is guaranteed to fire (time period) /
(interval) times.  Date-related timers allow the user to specify an
interval or one-shot timer which will fire on a particular day of the
month, month of the year, year, hour of the day, minute of the hour,
and second of the minute.  Any of these may be a list of options,
allowing, for example, a timer to be set which will fire at 3:00 am
every 1st and 15th day of every January, April and October.  Any
SCADALisp function may be triggered by a timer, including user-defined
functions.

Signal handlers: SCADALisp can execute any LISP command whenever a
signal occurs.  This makes it possible to recover from floating point
errors, segmentation faults and out-of-memory errors.  This also
allows a program to react to or ignore interrupt signals.

Inter-process communication: SCADALisp implements most of the QNX
inter-process communication functions, along with a system-independent
synchronous/asynchronous communication mechanism based on QNX's
send/receive/reply mechanism.  This mechanism enforces some
limitations on multi-task systems which are generally consistent with
the goals of control systems.  These are: A task may only have a
single asynchronous input queue.  A task must initialize the
interprocess communication system early in its run cycle, and may not
initialize this more than once.  Using TCP/IP, a task may not
communicate with more tasks than the system socket count limit,
typically 28 or 60.  SCADALisp processes may send and receive LISP
commands amongst themselves, making it possible to create a LISP
server program which accepts and evaluates commands and returns the
results as LISP data items.

Run-time debugging: SCADALisp programs can be altered on-line as they
run without shutting them down.  A bumpless transfer mechanism allows
updates to the SCADALisp program at any time.  The current state of
the program and individual variables can be queried and altered as the
program runs, allowing a developer to diagnose problems on the running
system by modem or over a network.

Attachment to a real-time database: SCADALisp has built-in facilities
to deal with the Cascade distributed real-time database, including the
ability to accept unsolicited value changes (exceptions) from the
database.

Confidence factors: All data items have an associated confidence
factor.  Confidence factors are modified through assignment and
mathematical operations.  This allows SCADALisp programs to take
confidence factor into account when implementing control.  System
startup transients can be avoided if control strategies ignore
variables whose confidence is too low to generate reliable control
operations.

Support for the Photon Widget Set: SCADALisp supports all of the
Photon widget set, including most of the "Pt" function calls for
widget manipulation.  SCADALisp will track changes to the Photon API
as new Photon versions appear.  SCADALisp can read and display windows
and dialog boxes created in the Photon Application Builder.

Support for 90% of QNX Windows function calls: Most QNX Windows
function calls are supported, either by directly mappings function
arguments or by modifying the argument lists while retaining the
intent of the function.  Functions dealing with local memory buffers
are typically not implemented.  Event functions are limited to common
event types, and are generally only accessible through the generalized
event handling mechanism, rather than through QNX Windows calls.

Small running size: Typical LISP implementations require 2 to 6 Mbytes
of RAM to run.  SCADALisp runs in about 250 Kbytes without windowing
support, or about 600 Kbytes with windowing support.  Embedding
SCADALisp into another process adds about 100 Kbytes on disk, and
about 170 Kbytes when running.

Embeddable: SCADALisp can be supplied as an object library which can
be linked with any user program to provide an embedded macro language
including all functions of the LISP interpreter.

C-language extensible: C-language functions may be added to the
language to produce specialized functionality for an application where
LISP is too slow or insufficient for the task.  This requires
modification to the LISP mainline (source can be made available under
license), and the addition of a new function "package".  C functions
must be compiled into the LISP executable.

Loadable grammars: Alternate grammars may be created to implement
languages other than LISP over the LISP engine.  It is also possible
to replace the LISP writer, to allow expressions to be written in
other languages, but this is not necessary in order to implement an
alternate grammar.  Replacement of the LISP grammar requires
modification of the LISP mainline.  The registered and commercial
versions of SCADALisp include an optional C-like grammar.  SCADALisp
can always read LISP code, even if an alternate grammar is being used.

Portability: SCADALisp has been ported to QNX 4.2 in 16 and 32-bit
models, SCO Unix and Linux (an Intel-based System V Unix variant).
Other UNIX ports should be possible.

The Cascade real-time database supplies these additional features,
seamlessly integrated into the control version of SCADALisp:

Domain independence: More than one application domain may be present
on the QNX network (or a single machine), without interaction among
their databases.

Inter-domain data sharing: A task running in one application domain
may read and write data in the database of another domain.

Network awareness: Any task in the QNX network may read and write data
points on any domain.

Confidence factor: All data points have an associated confidence
factor which is delivered with every point value.  Confidence factors
may be set by any writing program.

Exception reporting: A database will deliver a message to interested
tasks whenever a point changes.  This is delivered asynchronously, and
is guaranteed to arrive so long as the receiving task continues to run
and is available on the network.  A task may receive exception reports
from points on more than one domain.  An exception report to the task
which generated the change is tagged as an "echo" and may be handled
differently if necessary.

Scalability: The number of points in the database is limited only by
available system memory.  Point lookups in the database occur in
order(log2N) time.

No configuration: The database discovers its points at run-time as
other processes create them.  Points created by reading are assigned
an "unknown" confidence, indicating that the data returned is invalid.
By default, any interaction with the database will create a point if
it does not exist.  Functions are also provided for tasks to only
interact with a point if it already exists.

Portability: The Cascade database has been ported to SCO Unix and
Linux (a System V Unix variant) using TCP/IP as the networking
protocol.  It will also operate in QNX using TCP/IP.


6. What is SLANG?
=================

SLANG (Script Language for Automation 'N Graphics) is a full
implementation of a loadable grammar for SCADALisp.  It provides a
C-like programming interface to all of the SCADALisp functionality.
There is no run-time cost penalty associated with using SLANG instead
of SCADALisp.  A SLANG program can take advantage of all of your LISP
code, as it maintains the LISP parser and writer.  Functions which are
difficult or impossible to perform in SLANG can be written in LISP and
included into the SLANG program.  Many people find SLANG far easier to
understand than LISP.  For example:

LISP code:
	;;;
	;;; A particularly nasty LISP function which loops to print
	;;; some numbers, while creating a list of the squares of the
	;;; numbers.
	;;;

	(defun print-nums (start end)
	  (let (square-list square)
	    (do ((i start (+ i 1)))
	        ((>= i end) (reverse squares))
	        (setq square (* i i))
	        (princ "Number: " i ", Square: " square "\n")
	        (setq square-list (cons square square-list))
	        )
	    )
	  )

SLANG code:
	/*
	 * A not-so-nasty SLANG loop to print some numbers while creating
	 * a list of the squares.
	 */

	function print-nums (start, end)
	{
	    local	square-list, squares, i;

	    for (i=start; i<end; i++)
	    {
	        square = i * i;
	        princ ("Number: ", i, ", Square: ", square, "\n");
	        square-list = cons (square, square-list);
	    }
	    reverse (square-list);
	}

Note that SLANG inherits data abstraction and symbols with embedded
'-', '+' and '*' from LISP.  Also, all of SCADALisp's data types,
including lists and arrays are supported in SLANG.


7. What Do I Get With Shareware SCADALisp?
==========================================

The shareware SCADALisp version comes as two executables:
	1) SCADALisp for QNX Photon
	2) SCADALisp for QNX Windows
An X-Windows Motif version is in the works.

The pre-loading nature of QNX shared libraries makes it necessary to
have different versions for different window systems.  If QNX adds
demand-loading shared libraries, we may amalgamate the multiple
versions.  Also, because shared libraries are used, SCADALisp cannot
be run outside of the windows environment you choose.

The shareware version of SCADALisp includes the following:
	1) SCADALisp executables for Photon and QNX Windows containing:
		- basic LISP function set
		- timers and signal handlers
		- object-oriented extensions
		- error handling
	2) LISP library files for common activities
	3) Sample programs
	4) Terse documentation
	5) A non-commercial license (personal use only)
	6) No support

These executables contain all the windowing support that we have
currently implemented.  We are religiously tracking changes to the
Photon API, and will consider QNX Windows additions if circumstances
warrant them.  The shareware executables do not contain real-time
database support, advanced mathematics (trig, logarithms, etc.), file
system support, QNX interprocess communication, ProcessVision support,
or a detailed function reference guide.


8. What Do I Get When I Register?
=================================

When you register, you get a 3.5" floppy disk in QNX4.2 format containing:
	1) SLANG/SCADALisp executables, for Photon, QNX Windows, and
	   no windows, containing:
		- all of the shareware functions
		- advanced mathematics
		- QNX IPC functions
	2) Better documentation,
	3) A non-commercial license (personal use only) on a per-node
	   basis,
	4) E-mail notification of upgrades,
	5) Bug fixes via FTP.


9. What Do I Get with the Commercial Version of SCADALisp?
==========================================================

When you buy the commercial version of SCADALisp, you get:
	1) Everything from the registered version,
	2) A commercial license (use in commercial applications) on a
	   per-node basis,
	3) 10 hours of free technical support,
	4) Optional technical support package,
	5) Bug fixes via FTP or postal service,
	6) Free upgrades for 3 months.
	7) Full documentation.


10. What Do I Get with the Control Version of SCADALisp?
========================================================

When you buy the control version of SCADALisp, you get:
	1) Everything from the commercial version,
	2) Cascade support, including interoperability with:
		- Cascade's real-time database,
		- Pavilion Techonolgies' Process Insights neural
		  network process modelling software,
		- Olin Chemicals' OMNX direct digital control package
		  for QNX,
		- A variety of PLC and DCS systems.
	3) On-line debugging and enhancement support,
	4) Optional field I/O (PLC, DCS, etc.) drivers,
	5) Optional Cascade database on a per-node basis,
	6) Optional application engineering services.

Please contact Cogent Real-Time Systems Inc. for more information
regarding the commercial and control versions of SCADALisp.


11. What Does the LICENSE Really Mean?
======================================

The LICENSE file which you should have received with this software
essentially says that you can use this software for evaluation
purposes.  It does not place a restriction on how long you take to
evaluate it, so technically you could continue to evaluate forever.
It also says you cannot make money from it, nor use it to try to make
money, even if unsuccessful.  This is a standard commercial evaluation
license, relaxed to make the evaluation period indefinite, and to
allow you to distribute the software intact as long as you do not
charge for that distribution, nor for a product or service
accompanying that distribution.

If you did not receive a LICENSE file with your copy of SCADALisp,
then whoever supplied it to you is in breach of their LICENSE, and you
are illegally in possession of this software.  We strongly urge you to
pick up a complete SCADALisp package.  The documentation might be
helpful anyway.


12. My LICENSE says Sakura Software.  Why?
==========================================

Sakura Software Inc. is the software branch of Cogent Real-Time
Systems Inc.  This has the effect in our case of neatly
differentiating software development from engineering services.  For
all practical purposes, the companies are one and the same.  In
legalese, we have to differentiate.


13. How do I Register?
======================

You can register SCADALisp by sending a cheque or money order to:

    Cogent Real-Time Systems Inc.
    168 Queen St. South, Suite 205
    Mississauga, Ontario
    Canada  L5M 1K8

The registration fee is:

    Canadian residents:		$100 CDN
    U.S.A residents:		 $90 US
    International residents:	$120 US
    
With the exception of Canadian residents, all payments should be in
U.S. dollars.


14. How do I Get Commercial Versions of SCADALisp?
==================================================

To purchase a commercial or control version of SCADALisp, please
contact Cogent and speak to a salesperson.


15. How Much Do The Commercial and Control Versions Cost?
=========================================================

The current pricing for SCADALisp is:

    Commercial Version:			$3,995
    Control Version:			$4,995
    Upgrade from Comm. to Control:	$1,195

    Cascade, QNX Node:			$1,995
    Cascade, Intouch Node:		  $495

    We offer the following volume discounts:

    2 to 10 nodes:		  	25% off
    11 nodes or more:			50% off

In recognition of the reduced budgets in educational institutions, we
are pleased to offer our best volume price for all purchases by
universities, colleges and schools.

These prices are, of course, subject to change without notice.


16. How do I Contact Cogent?
============================

Cogent Real-Time Systems can be contacted at:

    Cogent Real-Time Systems Inc.
    168 Queen St. South, Suite 205
    Mississauga, Ontario
    Canada  L5M 1K8

    Phone: (905) 812-9628		Country code 01
    Fax:   (800) 498-6635		In Canada and the U.S.A.
	   (510) 472-6958		International

Cogent can be reached on the Internet at:

       info@cogent.ca
 or    http://www.io.org/~cogent

The author of SCADALisp can be reached either through Cogent, or on the
Internet as:

       andrew@cogent.ca			(preferred)
 or    asthomas@quics.qnx.com


17. What Else Can Cogent do for Me?
===================================

Cogent Real-Time Systems Inc. provides Advanced Technology Process
Control services to industrial and commercial clients whose aim is to
improve profitability, reliability, safety, efficiency and compliance
in their processes with a short payback period.  Cogent provides
conception to completion application engineering and integration
services for upgrades and replacement of existing control systems, as
well as for new installations.  Cogent has formed relationships with
the following companies, allowing us to provide turnkey solutions for
most process control needs:

SNC Fenco McLaren Ltd.:  Fenco McLaren is a subsidiary of SNC, one of
Canada's largest engineering companies.  Fenco McLaren can provide
complete engineering services, including physical plant design,
construction and operation.  Cogent and Fenco cooperate to ensure that
any new plant, expansion or upgrade benefits from a high degree of
expertise in all aspects of a project.

Pavilion Technologies Inc.:  Pavilion Technologies is the maker of
Process Insights, a neural network control package which can
accurately model virually any well-instrumented process.  Process
Insights has been used in a number of heretofore "uncontrollable"
processes with great success.  Pavilion's Software CEM package has
been certified in 4 states in the U.S.A. as a compliant replacement
for continuous emissions monitoring hardware.  Software CEM (known in
Canada as a PEMS - Predictive Emissions Monitoring System) can save up
to half of the initial installation cost of a CEM, and does not
require costly maintenance and calibration.  Cogent is the Canadian
distributor for Process Insights and Software CEM.  A Cascade
connection to Software CEM and a QNX runtime for Sofware CEM will be
available shortly.

Olin Corporation: Olin is the maker of the OMNX direct digital control
package for QNX.  This package performs digital control including PID,
Neural and Fuzzy loop control at speeds far in excess of typical PLCs
and DCSs.  Reliable control can be achieved at lower cost than typical
hardware solutions.  OMNX provides a friendly user interface for
configuration and monitoring, even allowing a plant engineer to dial
into the plant control system by modem and watch the process on a text
graphics interface.  Installed systems can be expanded at a fraction
of the cost of most hardware solutions.  Cogent supplies a Cascade
interface to OMNX, providing the ability to use SCADALisp, Intouch, or
any other Cascade facility with an OMNX controller.

For more information on any of these companies, products and services,
please contact Cogent Real-Time Systems Inc.
