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 _____________________________________________