[comp.lang.ada] Announcing

mfeldman@seas.gwu.edu (Michael Feldman) (09/11/90)

F R E E  S O F T W A R E  A N N O U N C E M E N T
SmallAda 1990 for Apple Macintosh and IBM-PC family computers
=============================================================
copyright 1990, The George Washington University

project supervised by
Prof. Michael B. Feldman
Department of Electrical Engineering and Computer Science
The George Washington University
Washington, DC 20052 USA                                     
202-994-5253
mfeldman@seas.gwu.edu

authors:
1986 Charles Schoening             CoPascal for DOS systems
1987 Frederick C. Hathorn          conversion of CoPascal
1988 Stuart Cramer and Jay Kurtz   refinement of tasking model
1990 Manuel A. Perez               Macintosh version
1990 Arthur V. Lopes               window-oriented monitoring and       
                                   integrated environment for IBM-PC 


GENERAL DESCRIPTION
===================

SmallAda is a compiler/interpreter for a part of the Ada language, namely
the "Pascal subset" plus the Ada tasking support. It is not intended
ever to be a full Ada compiler, rather a vehicle for teaching, learning,
and experimenting with concurrent programming. The compiler is quite
fast, producing P-code which is then interpreted by the interpreter.

Both the Mac and DOS versions are integrated systems, complete with editor
and window-oriented runtime monitor. The Mac editor is like any Mac ASCII
editor, supporting cut/copy/paste and the like. The Mac version is Mac-like.

The DOS version editor is Turbo-Pascal or WordStar-like, including pull-
down menus for editor and compiler commands. No mouse support is provided
at this time.


AVAILABILITY
============

We are handling these systems as "freeware," meaning that we distribute them
without charge and without obligation, but we retain the copyright and wish
to keep the distribution and our mailing list under reasonable control.

Executables may be obtained by sending a 3.5" formatted diskette (720k IBM
or 800k Macintosh or both) to the address given above, together with a
self-addressed and stamped diskette mailer for returning the package to you.
And complete the license agreement at the bottom of this file.

SmallAda may be copied and used for educational purposes but not for
profit. You may, for example, give copies to your students to use.

Please let us know how you like the idea of SmallAda and what
you are doing with it. Please do NOT post SmallAda on a bulletin board
or newsgroup. We'd like to have reasonable knowledge of who is using it
and WILL object if it turns up on a public server somewhere! Have fun.   


SYSTEM REQUIREMENTS
===================

The Mac system will run on a Macintosh Plus or above; there's not enough
memory for it on a 512k machine. Small Ada is MultiFinder compatible.
It will run on a 2-floppy machine but it'll be a lot faster if you
have a hard disk.

We think the DOS version will run on any reasonable configuration. It helps to
have a hard disk. We've only tested it on a few clone models; it works fine
and should work on other DOS machines because we're not doing anything
exotic with graphics or timing.


LIMITATIONS
===========

The current version is not particularly robust, rather it is a preliminary
step toward effective window-oriented monitoring of task execution. 

You can create and compile your own Ada programs, but we make no promises
about which parts of the language will be handled correctly. We assure you
that there is NO support for packages, generics, exceptions, access types
and dynamic data structures. Some of this may change in future versions,
but we make no commitment to support full Ada. And don't be surprised if
the compiler hangs here and there: error repair is in a rather primitive state.
If the compiler actually finds your errors, it will display the messages in
a window; you can use the options in the editor to follow these errors
into your source code.


THE SMALL Ada TASKING MODEL
===========================

We have tried to be reasonably faithful to Ada tasking. The scheduler is
designed to show some of the important issues of concurrent programming,
therefore time-slicing is implemented, and the length of the slice is
randomly determined. Also, at each rescheduling point the next task to
be scheduled is selected randomly. This is to give a reasonable model of
nondeterministic (unpredictable) behavior, and serves to highlight the
need for mutual exclusion. The two dining philosophers examples on the
disk, taken together, show this point rather well.

Current incompletenesses in the tasking model: only named tasks (i.e. no
task types), no dynamically created tasks. The "select" statement is
functional including the "terminate" alternative.

If you have tasks in finite (counting) loops,
if they complete but there are other tasks with infinite loops that can
never terminate, the system may detect no activity and report a deadlock
state.


THE SmallAda SUPPORT PACKAGE (SMALL_SP.PKG)
===========================================

A large number of "intrinsic" library subroutines are included in a
pseudo-package called SMALL_SP.PKG. It is not necessary (or proper) to
compile this package; it is included in the environment. It is necessary
to begin each program with a context clause

WITH SMALL_SP; USE SMALL_SP;

to give the effect of writing genuine Ada. A specification for this
package is included in the distribution; it includes I/O routines,
math functions, and the like. This is not really good Ada-like decomposition,
and we will change it in subsequent versions of the system. Meanwhile, use
the package spec as a guide to all the intrinsic routines. Note especially
that the formatting parameters supplied to the I/O procedures are more
Pascal-like than Ada-like. This will change later to look more like
standard TEXT_IO.


MORE ABOUT THE MACINTOSH VERSION RUNTIME ENVIRONMENT
====================================================

The Macintosh environment provides a number of capabilities for runtime
monitoring of a SmallAda program. You can open a window for MAIN and
for each task in your program, and watch the source code scroll through
the window as the program runs. There is also a control window that gives
lots of information on task states, etc., and a P-code window that scrolls
the P-code as it is executed by the interpreter. Run in slow-motion mode,
this provides lots of insight into the workings of an interpreter and
the source-code scrolling can also be used just to show beginning students
how the logic of a program is executed. 

The Mac windows are entirely under the user's control, that is they can
be opened, closed, moved, or re-sized at will, just like any Mac windows.

The Macintosh version of SmallAda is written in MPW Pascal with MacApp.


MORE ABOUT THE PC VERSION RUNTIME ENVIRONMENT
=============================================

PC window management is in general not as easy as it is in the Macintosh,
so the windowing system here is not quite as sophisticated. We do support
the source-code windows for all tasks; they can be opened or closed
individually but their size is "hard-wired" and they cannot be moved.
Speed control is supported, which allows the user to speed up or slow
down the execution of the interpreter. All this is done with the usual
PC-oriented function key commands.

Perhaps at a later date we will try a Windows 3.0 version.

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

LICENSE AGREEMENT FOR SmallAda 1990
===================================

I acknowledge that this system is copyright 1990 by The George Washington
University and agree to the licensing terms stated below.

SmallAda 1990 is made available for educational purposes, not for profit,
on a no-cost, no-obligation basis. Neither the authors of SmallAda nor
The George Washington University make any representations regarding
fitness for use, future support, bug correction, or subsequent versions.

We wish to make SmallAda available to a wide audience but desire to keep
its distribution under reasonable control. Therefore I agree that
SmallAda may be copied for distribution to students or colleagues within
my institution. It may not be distributed outside my institution without
express written permission, or posted on a bulletin board, network, or
public server, except that a laboratory-based or PC-support-group-based
server may be used for distribution within the organization. If SmallAda
is distributed within my organization, recipients must receive a copy of
these terms and agree to them.


Name _______________________________________________________

Title ______________________________________________________

Organization _______________________________________________

Address ____________________________________________________

        ____________________________________________________

        ____________________________________________________

Phone Number _______________________________________________

e-mail address _____________________________________________