category: Wirth family languages


Description:
These are the languages that were either designed by Niklaus Wirth or are descended from them.


Language:
Pascal
Package:
? iso_pascal ?
Version:
?
Parts:
scanner(lex), parser(yacc)
Author:
?
Location:
comp.sources.unix archive volume 13
Description:
?
Updated:
?

Language:
Modula-2
Package:
ACK
Version:
6.0pre3-0.50
Parts:
Modula-2 front end for the ACK compiler suite
Author:
Certiel Jacobs
Location:
http://tack.sourceforge.net
Description:
Third edition Modula-2 compiler as part of the Amsterdam Compiler Kit compiler suite. 386, 8086 and 8080 code generation; historic code generators available for many more architectures
Features:
  • use of the ACK C preprocessor
  • foreign language interface
Restriction:
BSD license
Status:
Functional - no longer maintained
Updated:
2007

Language:
Oberon
Package:
Ceres workstation Oberon System
Version:
?
Parts:
compiler
Author:
?
Location:
ftp://neptune.ethz.ch/Oberon/?
Description:
file format is Oberon, binary header
Status:
The sources to the various _full_ implementations are indeed not available but the source to most of the complete Ceres workstation Oberon System, including NS32032 code generator but less low level system specific is available. This includes the complete Oberon compiler written in Oberon.
Updated:
?

Language:
Pascal
Package:
Free Pascal Compiler
Version:
0.99.14 (stable), 0.99.15 (development)
Parts:
compiler, run time library, tools, documentation
Author:
Florian Klaempfl (Florian.Klaempfl@gmx.de) and the FPC development team (fpc-devel@lists.freepascal.org)
Location:
http://www.freepascal.org
Description:
Free Pascal (aka FPK Pascal) is a 32 bit Pascal command line compiler. It is completely written in Pascal and compiles itself. Documentation is available in TeX, HTML, PDF, RTF and plain text. A text mode IDE is under development, a Delphi-like RAD environment too (see <http://www.lazarus.freepascal.org> and <http://www.kcl.freepascal.org>).
Conformance:
99% Turbo Pascal compatible and supports most Delphi extensions as well. Extra functionality: * procedure/function/operator overloading * functions can return complex types * macro's * smart linking support
Restriction:
may be freely distributed unter the terms of the GNU General Public License or in case of the library under the terms of the GNU Library General Public cense.
Portability:
run time library: very high compiler: high, code generator is being rewritten to be more portable
Ports:
80x86: Dos (go32v2), Linux, OS/2 (emx), Win32 (BSD in progress) 680x0: Amiga, Atari ST
Announcements:
New releases will be announced in comp.lang.pascal.misc, on the news page of the website and in the mailing lists
Updated:
Latest official release: 2000/01/27

Language:
Modula-2
Package:
gm2
Version:
0.7x (development)
Parts:
GCC front-end integrated into gcc compiler, test-suite
Author:
Gaius Mulley
Location:
http://www.nongnu.org/gm2
Description:
Cross-platform Modula-2 compiler supporting PIM and ISO with
  • GNU extensions for systems programming and interfacing to C
  • University of Ulm library and Logitech compatibility library
Reference:
The GNU Modula-2 front end to GCC (PDF)
Features:
  • use of the gcc preprocessor
  • use of gcc extensions and pragmas
  • direct import and use of glibc
  • foreign function interface to C
  • calling variadic C functions, non-typesafe
  • g++ compatible exception handling
  • SWIG interface, callable from C++ and Python
  • GDB debugger support using the DWARF2 format
Restriction:
GPL license
Status:
active development
Contributions:
donations welcome
Updated:
2010

Language:
IFP (Illinois Functional Programming)
Package:
ifp
Version:
0.5
Parts:
interpreter
Author:
Arch D. Robison <robison@shell.com>
Location:
comp.sources.unix archive volume 10
Description:
A variant of Backus' "Functional Programming" language with a syntax reminiscent of Modula-2. The interpreter is written in portable C.
Reference:
Arch D. Robison, "Illinois Functional Programming: A Tutorial," BYTE, (February 1987), pp. 115--125.

Arch D. Robison, "The Illinois Functional Programming Interpreter," Proceedings of 1987 SIGPLAN Conference on Interpreters and Interpretive Techniques, (June 1987), pp. 64-73

Ports:
Unix, MS-DOS, CTSS (Cray)
Updated:
?

Language:
Modula-2* (parallel extension)
Package:
IPD Modula-2* Programming Environment
Version:
9401
Parts:
translator (->C), debugger (SUN4 only), X Windows user panel, automatic cross-architecture make, sequential and parallel libraries, examples, documentation
Author:
IPD Modula-2* team <msc@ira.uka.de> consisting of the following kernel contributors: Thomas Gauweiler, Stefan U. Haenssgen, Ernst A. Heinz, Paul Lukowicz, Hendrik Mager, Michael Philippsen.
Location:
ftp://ftp.ira.uka.de/pub/programming/modula2star/
Description:
Modula-2* is an extension of Modula-2 for highly parallel, portable programs. IPD Modula-2* is provided freely for research, educational and classroom use. A complete sequential Modula-2 environment in provided complemented with a set of parallel libraries, which even include routines for implementing low-level parallel operations. The employment of of C translator allows increased accessibility to actual parallel machines (many have nothing lower-level than C), at the expense of Modula-2 features of arrays bounds checking and symbolic debugging at the Modula-2* level.

[An interpreter could be written with functionality subsuming that of a symbolic debugger. -- Mark]

Conformance:
PIM but not ISO compliant
Reference:
J.R. Smith. "The design and analysis of parallel algorithms. Chapter 3: Modula-2*." Oxford University Press, December 1992.

M. Philippsen, E.A. Heinz, and P. Lukowicz. "Compiling machine-independent parallel programs." ACM SIGPLAN Notices, v. 28, no. 8, pp. 99-108, August 1993.

M. Philippsen, T.M. Warschko, W.F. Tichy, C.G. Herter, E.A. Heinz, and P. Lukowicz. "Project Triton: Towards improved programmability of parallel computers." In D.J. Lija and P.L. Bird (eds), The Interaction of Compilation Technology and Computer Architecture, Kluwer Academic Publishers, 1994.

Others available from ftp://i41s10.ira.uka.de/pub/m2s/*.ps

Ports:
386 and above with BSDI/386 or Linux (sequential), KSR-1/KSR-2 with KSR-OS (sequential and parallel), DECStation (R3000/R4000) with Ultrix (sequential), MP-1/MP-2 (DECStation frontend) with MP-Ultrix (parallel)

SUN (Sun-3, Sun-4 SPARCStation) with SunOS (sequential),

Portability:
sources are for GMD Mocka Modula-2 compiler
Status:
supported
Updated:
???

Language:
Oberon-2
Package:
Jacob
Version:
0
Parts:
compiler, library, documentation, examples
Author:
Max Spring <sepp@cs.tu-berlin.de>, Ralf Bauer <nathan@cs.tu-berlin.de>
Location:
ftp://sunsite.unc.edu/pub/Linux/devel/lang/oberon/jacob-v0* ftp://ftp.cs.tu-berlin.de/pub/linux/Local/compilers/oberon/jacob-v0*
Description:
Jacob compiles Oberon-2 to 386 GNU Assembler code.
Conformance:
Oberon-2 as defined in "The Programming Language Oberon-2" from H.Moessenboeck, N. Wirth, March 1995
Reference:
"Read Me" http://www.cs.tu-berlin.de/~sepp/jacob/jacob.html "The Programming Language Oberon-2" ftp://ftp.inf.ethz.ch/pub/Oberon/Docu/Oberon2.Report.ps.gz
Features:
  • automatic storage reclamation (garbage collection)
  • FOREIGN modules for accessing third party libraries
  • verbose run-time error messages
Bugs:
report bugs to sepp@cs.tu-berlin.de
Restriction:
none
Requires:
GNU assembler
Ports:
Linux (386)
Status:
First public release
Discussion:
comp.lang.oberon
Help:
contact the authors
Contact:
Max Spring <sepp@cs.tu-berlin.de>
Updated:
September 12th, 1995

Language:
Cantata - Extensible Visual Programming Language
Package:
Khoros
Version:
2.2
Parts:
Composer, Ghostwriter, Source Configuration & Management, Animate, Editimage, Xprism, Viewimage. See features for more details.
Description:
Khoros is an integrated software development environment for information processing and visualization, based on the X Windows System.
Author:
Khoral Research Inc
Location:
usa:
ftp://ftp.khoral.com/pub/khoros2.0
germany:
ftp://ftp.e20.physik.tu-muenchen.de
brazil:
ftp://ftp.unicamp.br/pub/khoros2.0
Reference:
Rasure and Kubica, "The Khoros Application Development Environment", Experimental Environments for Computer Vision and Image Processing, editor H.I Christensen and J.L Crowley, World Scientific 1994.

Konstantinides and Rasure, "The Khoros Software Development Environment For Image And Signal Processing", IEEE Transactions on Image Processing, VOL. 3, No. 3 May 1994, pp. 243-252.

Rasure, Williams, Argiro, and Sauer, "A Visual Language and Software Development Environment for Image Processing", International Journal of Imaging Systems and Technology, Vol. 2, pp 183-199 (1990) Man pages included with software distribution.

Features:
  • Composer - Interactive Graphical User Interface Editor
  • Ghostwriter - Code Generation Tool for a Command Line User Interface
  • Source Configuration & Management - Tools to install and maintain a distributed source tree
  • Animate - Interactive Image Sequence Display Tool
  • Editimage - Interactive Image Display & Manipulation Program
  • Xprism - 2D and 3D Plotting Packages
  • Viewimage - A basic interactive program for surface rendering documentation
Bugs:
k2-xvapp-bugs-FAQ, k2-xvlib-bugs-FAQ
Restriction:
Free access to Khoros, but not in the public domain. The software is owned by Khoral Research, Inc., and does carry a License and Copyright. While Khoros may be used by any organization free of charge, it can not be distributed without a license. All users of the system should register with Khoral Research and agree to abide by the Free Access License terms and conditions.
Requires:
gzip, C Compiler, X (R11), lex/yacc
Discussion:
comp.soft-sys.khoros
Ports:
Many Un*x ports
Help:
Khoros Consortium, ftp://ftp.khoral.com/pub/khoros/FAQ ftp://ftp.khoral.com/pub/khoros2.0/manual
Support:
http://ftp.khoros.unm.edu/
Updated:
?

Language:
Modula-2
Package:
mtc
Version:
9209
Parts:
translator(->C)
Author:
Matthias Martin, Josef Grosch <grosch@cocolab.sub.com>
Location:
ftp://ftp.psg.com/pub/modula-2/grosch/README
Requires:
ftp://ftp.psg.com/pub/modula-2/grosch/reuse.tar.Z
Description:
A Modula-2 to C translator
Ports:
Unix, Linux, MS-DOS, MS-Windows, OS/2
Contact:
Josef Grosch <grosch@cocolab.sub.com>
Updated:
October 1st, 1992

Language:
Oberon-2
Package:
o2c
Version:
1.4
Author:
Michael van Acken <oberon1@informatik.uni-kl.de> Juergen Zimmermann <jnzimmer@informatik.uni-kl.de>
Location:
ftp://ftp.uni-kl.de/pub/informatik/software/o2c-1.4.tar.gz ftp://cognac.informatik.uni-kl.de/pub/ooc
Description:
o2c is an Oberon-2 compiler that translates into the C dialect accepted by the GNU C compiler (version 2.5.8 or above). The compiler provides it's own make facility. The package includes a symbol file browser and a GNU Emacs mode that allows to use Emacs as a comfortable programming environment for the compiler.

o2c is known to run on several 32bit UNIX-plattforms. It comes with full source-code.

Conformance:
The programming language Oberon-2, Oct. 93, ETH Zuerich
Restriction:
GNU General Public License
Ports:
UNIX, tested on [GNU-cannonical name/GCC version] hppa1.1-hp-hpux/2.5.8 sparc-sun-sunos4.1.3/2.5.8 sparc-sun-sunos4.1.3_U1/2.6.2 iX86-unknown-linux/2.5.8 iX86-unknown-linux/2.6.3
Contact:
oberon1@informatik.uni-kl.de
Updated:
April 1st, 1996

Language:
Oberon2
Package:
Oberon-2 LEX/YACC definition
Version:
1.4
Parts:
parser(yacc), scanner(lex)
Author:
Stephen J Bevan <bevan@cs.man.ac.uk>
Location:
ftp://ftp.psg.com/pub/oberon/tools/o2lexyac.tar.Z http://panther.cs.man.ac.uk/~bevan/oberon
Description:
A LEX and YACC grammar for Oberon 2 based on the one given in the listed reference.
Reference:
The Programming Language Oberon-2 H. M\"{o}ssenb\"{o}ck, N. Wirth Institut f\"{u}r Computersysteme, ETH Z\"{u}rich January 1992 ftp://neptune.inf.ethz.ch/Oberon/Docu/Oberon2.Report.ps.Z
Restriction:
Portions of the source under copyright by U. Manchester.
Status:
un-officially supported
Updated:
July 6th, 1992

Language:
Modula-2
Package:
objm2c
Version:
2010 (development)
Parts:
grammar, lexer, parser, ast, compiler(->C, ->LLVM), template utility
Author:
Benjamin Kowarsch
Location:
http://objective.modula2.net
Description:
Cross-platform Modula-2 compiler based on a subset of PIM4 with
  • various extensions for systems programming and interfacing to C
  • an object oriented layer for native Cocoa/GNUstep support
Reference:
An Overview of Objective Modula-2 (PDF)
Features:
- no local modules, like Oberon
- no subrange types, like Oberon
- no EXPORT and no WITH DO statements, like Oberon
- zero based array subscripts only, like Oberon
+ extensible records replace variant records, like Oberon
+ type conversion operator instead of conversion functions
+ conditional compilation
+ structured literals
+ UNICHAR type for unicode
+ CONST parameters, like Oberon
+ atomic operation intrinsics
+ typesafe foreign function interface to C
+ typesafe variadic procedures and functions
+ Smalltalk derived OO syntax and semantics, like Objective-C
+ uses the Objective-C runtime library for object oriented features
Restriction:
BSD-style license, no reproduction of sources on advertising websites
Status:
active development
Contributions:
donations welcome
Updated:
2010

Language:
Pascal
Package:
p2c
Version:
1.20
Parts:
translator(Pascal->C)
Author:
Dave Gillespie <daveg@synaptics.com>
Location:
ftp://csvax.cs.caltech.edu
Description:
?
Conformance:
supports ANSI/ISO standard Pascal as well as substantial subsets of HP, Turbo, VAX, and many other Pascal dialects.
Ports:
?
Updated:
April 13th, 1990

Language:
Parallaxis
Package:
parallaxis
Version:
Parallaxis-III
Parts:
?,debugger, viz tools, simulator, x-based profiler
Author:
Thomas Braunl <braunl@informatik.uni-stuttgart.de>
Location:
ftp://ftp.informatik.uni-stuttgart.de/pub/p3 http://www.informatik.uni-stuttgart.de/ipvr/bv/p3
Description:
Parallaxis is a procedural programming language based on Modula-2, but extended for data parallel (SIMD) programming. The main approach for machine independent parallel programming is to include a description of the virtual parallel machine with each parallel algorithm.
Ports:
MP-1, CM-2, Sun-3, Sun-4, DECstation, HP 700, RS/6000
Contact:
? Thomas Braunl <braunl@informatik.uni-stuttgart.de> ?
Updated:
October 23rd, 1992

Language:
Pascal
Package:
Pascal P4 compiler and interpreter
Version:
? 1
Parts:
compiler, assembler/interpreter, documentation
Author:
Urs Ammann, Kesav Nori, Christian Jacobi
Location:
ftp://ftp.cwi.nl/pub/pascal/* or http://www.cwi.nl/~steven/pascal.html
Description:
A compiler for Pascal written in Pascal, producing an intermediate code, with an assembler and interpreter for the code.
Reference:
Pascal Implementation, by Steven Pemberton and Martin Daniels, published by Ellis Horwood, Chichester, UK (an imprint of Prentice Hall), ISBN: 0-13-653-0311. Also available in Japanese.
Contact:
<Steven.Pemberton@cwi.nl>
Updated:
July 5th, 1993

Language:
Pascal
Package:
pasos2
Version:
Alpha
Parts:
Compiler, run-time library
Author:
Willem Jan Withagen <wjw@eb.ele.tue.nl>
Location:
ftp://ftp.eb.ele.tue.nl/pub/src/pascal/pasos2*
Description:
a PASCAL/i386 compiler which generates code for OS/2 and DOS. It uses EMX as DOS extender and GNU/GAS, MASM or TASM as assembler.
Updated:
December 17th, 1993

Language:
pm2
Package:
PRAM emulator and parallel modula-2 compiler ??
Version:
?
Parts:
compiler, emulator
Author:
?
Location:
ftp://cs.joensuu.fi/pub/pram/*
Description:
A software emulator for parallel random access machine (PRAM) and a parallel modula-2 compiler for the emulator. A PRAM consists of P processors, an unbounded shared memory, and a common clock. Each processor is a random access machine (RAM) consisting of R registers, a program counter, and a read-only signature register. Each RAM has an identical program, but the RAMs can branch to different parts of the program. The RAMs execute the program synchronously one instruction in one clock cycle.

pm2 programming language is Modula-2/Pascal mixture having extensions for parallel execution in a PRAM. Parallelism is expressed by pardo-loop- structure. Additional features include privat/shared variables, two synchronization strategies, load balancing and parallel dynamic memory allocation.

Contact:
Simo Juvaste <sjuva@cs.joensuu.fi>
Updated:
Febuary 17th, 1993

Language:
Pascal
Package:
ptc
Version:
?
Parts:
translator(Pascal->C)
Author:
?
Location:
ftp://uxc.sco.uiuc.edu/languages/ptc ? (use archie?)
Description:
?
Contact:
?
Updated:
?

Language:
Pascal
Package:
QCK
Version:
2.0
Parts:
compiler(written in ANSI-C), library, assembler, linker etc.
Author:
Henrik Quintel <quintel@nibelung.Worms.Fh-Rpl.DE>
Location:
top.cs.vu.nl/pub/minix/pascal/
Description:
Supports standard pascal with a few exceptions (set of.. , packed arrays, packed records, procedures/functions as parameters)
Features:
Read the README file
Bugs:
Cos, tan, sin.... does not work right !
Requires:
PC-Minix 1.6.25 1.6.30 1.7.0
Help:
<quintel@nibelung.Worms.Fh-Rpl.DE>
Support:
<quintel@nibelung.Worms.Fh-Rpl.DE>
Announcements:
comp.os.minix, comp.compilers
Contact:
<quintel@nibelung.Worms.Fh-Rpl.DE>
Updated:
January 9th, 1995

Language:
Pascal-Debugger
Package:
QCK
Version:
1.0
Parts:
Debugger/Interpreter(written in ANSI-C)
Author:
Henrik Quintel <quintel@nibelung.Worms.Fh-Rpl.DE>
Location:
Server : top.cs.vu.nl Directory :/pub/minix/pascal/
Description:
Supports standard pascal with a few exceptions (set of.. , packed arrays, packed records, procedures/functions as parameters)
Features:
Read the README file
Bugs:
Cos, tan, sin.... does not work right !
Requires:
PC-Minix 1.6.25 1.6.30 1.7.0
Help:
<quintel@nibelung.Worms.Fh-Rpl.DE>
Support:
<quintel@nibelung.Worms.Fh-Rpl.DE>
Announcements:
comp.os.minix, comp.compilers
Contact:
<quintel@nibelung.Worms.Fh-Rpl.DE>
Updated:
January 9th, 1995

Language:
Modula-3
Package:
SRC Modula-3
Version:
3.5
Parts:
compiler(->C), runtime library, documentation
Author:
DEC Systems Research Center <m3-request@src.dec.com> LINUX version compiled by Michel Dagenais
Location:
ftp://gatekeeper.dec.com/pub/DEC/Modula-3/release-3.5/*.tar.gz
msdos:
ftp://gatekeeper.dec.com/pub/DEC/Modula-3/contrib/m3pc*
os2:
ftp.vlsi.polymtl.ca in pub/m3/os2 (binaries only)
Description:
The goal of Modula-3 is to be as simple and safe as it can be while meeting the needs of modern systems programmers. Instead of exploring new features, we studied the features of the Modula family of languages that have proven themselves in practice and tried to simplify them into a harmonious language. We found that most of the successful features were aimed at one of two main goals: greater robustness, and a simpler, more systematic type system. Modula-3 retains one of Modula-2's most successful features, the provision for explicit interfaces between modules. It adds objects and classes, exception handling, garbage collection, lightweight processes (or threads), and the isolation of unsafe features.
Conformance:
implements the language defined in SPwM3.
Requires:
gcc, preferrably X11
Ports:
i386/AIX 68020/DomainOS Acorn/RISCiX MIPS/Ultrix 68020/HP-UX RS6000/AIX IBMRT/4.3 68000/NextStep i860/SVR4 SPARC/SunOS 68020/SunOS sun386/SunOS Multimax/4.3 VAX/Ultrix FreeBSD Linux
Discussion:
comp.lang.modula3
Contact:
Bill Kalsow <kalsow@src.dec.com>
Updated:
July 9th, 1995

Language:
Pascal, Lisp, APL, Scheme, SASL, CLU, Smalltalk, Prolog
Package:
Tim Budd's C++ implementation of Kamin's interpreters
Version:
?
Parts:
interpretors, documentation
Author:
Tim Budd <budd@cs.orst.edu>
Location:
? ftp://cs.orst.edu/pub/budd/kamin/*.shar
Description:
a set of interpretors written as subclasses based on "Programming Languages, An Interpreter-Based Approach", by Samuel Kamin.
Requires:
C++
Status:
?
Contact:
Tim Budd <budd@fog.cs.orst.edu>
Updated:
September 12th, 1991

Language:
Turbo Pascal, Turbo C
Package:
tptc
Version:
?
Parts:
translator(Turbo Pascal->Turbo C)
Author:
?
Location:
ftp://wuarchive.wustl.edu/mirrors/msdos/turbopas/tptc17*.zip
Description:
(It does come with full source and a student recently used it as a start for a language that included stacks and queues as a built-in data type.
Contact:
?
Updated:
?

Language:
Modula-2
Package:
Ulm's Modula-2 System
Version:
3.0
Parts:
compiler, library, tools, documentation
Author:
Andreas Borchert <borchert@mathematik.uni-ulm.de>
Location:
http://www.mathematik.uni-ulm.de/modula
Description:
This system may be used like other traditional systems (e.g. cc) from the command line. Documentation is available in the form of manual pages and a HTML tree. The compiler has been derived from the ETHZ compiler for the Lilith system (4 passes, written in Modula-2).

More informations may be found under http://www.mathematik.uni-ulm.de/modula/

Conformance:
PIM3
Restriction:
may be freely distributed unter the terms of the GNU General Public License or in case of the library under the terms of the GNU Library General Public License.
Requires:
SPARCv8 / Solaris 2.x (Note that SunOS 4.x is not supported!)
Ports:
SPARCv8, Sun3, Nixdorf Targon/31, Concurrent 3200 Series
Contact:
Andreas Borchert <borchert@mathematik.uni-ulm.de>
Announcements:
New releases will be announced in comp.lang.modula2.
Updated:
2003/12/10

Language:
Oberon
Package:
Ulm's Oberon System
Version:
0.4
Parts:
compiler, tools, library, documentation
Author:
Andreas Borchert <borchert@mathematik.uni-ulm.de>
Location:
ftp://ftp.mathematik.uni-ulm.de/pub/soft/oberon/ulm/sun3/
Description:
In comparison to the Oberon Systems of ETH Zurich this system may be used like other traditional language systems (e.g. cc). It consists of a compiler, a makefile generator, a debugger, and a large library which has a system-independent kernel that supports exception handling, concurrency, synchronization, persistence, and distributed systems. The package contains a copying garbage collector. The compiler is written in Modula-2, the debugger in C, all other parts are written in Oberon. More informations may be found at http://www.mathematik.uni-ulm.de/oberon/
Conformance:
N. Wirth, ``The Programming Language Oberon'', SP&E July 1988 with some selective adaptions of later revisions. The compiler still requires the separation of definitions & modules like Modula-2.
Restriction:
The compiler and associated tools fall under the GNU CopyLeft, and the library under the GNU library general public license.
Ports:
Sun3/SunOS 4.1.1, Nixdorf Targon/31
Status:
Active -- will be ported to SPARC/Solaris 2.x
Announcements:
New releases will be announced in comp.lang.oberon.
Updated:
March 6th, 1997

This site is supported by David Sharnoff and Bryan Miller with some help from Google Adwords.

Please send updates to free-compilers@sharnoff.org

The HTML is maintained by David Muir Sharnoff and the entries themselves are currently maintained by Bryan Miller.

Copyright (c) 1992-1998 David Muir Sharnoff, All Rights Reserved
Copyright (c) 1994-1996, Steven Allen Robenalt, All Rights Reserved
Copyright (c) 1999-2010 David Muir Sharnoff, Bryan Miller, All Rights Reserved