maclab@reed.UUCP (Mac DLab) (02/10/86)
I posted an article several days ago offering to send information
about the latest Rascal release to interested parties -- I'm afraid
I can't keep up with all of the mail I have been getting, so I have
decided to post a summary of Rascal Version 1 (below).
Please note that this is *not* a review -- I am involved in the
development of Rascal, and am therefore hopelessly biased. As I
mentioned in my last article, I trust that some un-biased party
will eventually post a review to the net.
Scott Gillespie
(Usenet address listed at end of message)..
-------------------------------------------------------------------
What is Rascal?
---------------
Rascal is a complete development system for the Macintosh (and, of
course, the Macintosh Plus). Rascal is also a new language,
designed specifically for Macintosh operating systems. It is
similar to Pascal, with many elements of C added in. Editor,
Native Code Compiler, Linker and Execution environment are included
in a single application -- Rascal programs may be executed within
the development environment, and/or turned into stand-alone applications
or desk accessories. Rascal's program structure, and its run-time
environment, take the burden of standard Macintosh housekeeping off
of the programmer. You don't have to worry about trivialities such
as pulling menus down, resizing window, opening and handling desk
accessories, etc -- that is done for you (or, you can bypass the
'Supervisor' and handle anything you want without the Supervisor's
interference). So, for instance, you can write a simple terminal
emulator with about 20 lines of code:
program Miniterm;
Uses (*$U+*) uRas ;
Link __IO.ras :;
procedure _INIT(); (* This procedure isn't even needed if you want
1200 baud *)
begin
setconfig(Stop20 + Data8 + Baud9600 + NoParity);
end;
procedure _Key(c, mods : Integer);
{
keyconv(@c,@mods);
putchar(c);
};
procedure _MAIN();
var c : Integer;
begin
nodwellchar(@c);
if (c <> -1) then writechar(x mod 128);
end;
Here are the contents of the Rascal Version 1 (Feb 3 1986) release:
Rascal Version 1
----------------
4 Disks:
1) System Disk, with Rascal itself, and some demos, and the
standard Rascal libraries. About 50K is left free so that
moderate sized programs can be compiled, linked, etc.
2) Library/Utility disk, contains all the rest of the libraries
plus utilities like terminal emulator, delete file
program, application maker, icon maker , etc.
3) Example disk, completely full of example program sources, as
well as sources for the utilities. There is a wide variety
of source here: graphics, desk accessories, floating point
examples, games, sound programs, etc., ranging from very
simple to fairly sophisticated.
4) Library source disk, contains source files for every library.
Documentation:
-- Primer. 60 pages of step-by-step introduction to Rascal.
-- User Manual. Complete overview of the development system, and
the process of making applications. Chapters on Rascal
Menus, the Editor, the Compiler, Linker and Execution
environment. Also a chapter on job and batch programming
(Rascal's answer to exec files), and documentation for
all of the Rascal utilities. Appendices on using Rascal
with the Hierarchical file system, and disk configuration
strategies.
-- Language Manual. Complete description of the Rascal language.
In the style of traditional Pascal documentation, beginning with
the most basic things (such as identifiers and constants), and
working up to programs and I/O. Lots of 'railroad-track'
syntax diagrams, and some BNF for good measure. Also,
9 appendixes on a variety of topics: disk io, serial io,
screen/keyboard io, language oddities, floating point, etc.
The above three manuals each have their own index, plus there is
a complete index for the three. These are contained in a single
binder (flashy 'Rascal' binders will not ship until the end of
February, but for those in a hurry, the distributor will ship in
plain binders). Altogether, about 300 pages.
As a separately bound tome, you get:
-- Library Manual. Descriptions of the Rascal libraries and
their routines. (there are many of them in addition to the standard
tooltraps, ostraps, etc.), plus source listings for all
libraries. Also included is an index of routines by library,
and a complete index (i.e. given the name of a routine, you
can find out what library it is in).
Misc. Features:
Hierarchical File System Support
--------------------------------
The development system understands HFS now,
so libraries and utilities can be placed in default search
folders (any number of search folders can be specified by
the user). The new HFS and ROM calls have *not* been
implemented yet in a Rascal library, but we'll get to
it soon. In the meantime, given the new HFS documentation, any Rascal
programmer could create such a library without much effort.
Inside Macintosh Support
---------------------------------
All routines, types and contants described in Inside Macintosh are
available in the Rascal libraries. AppleTalk calls are supported,
but the AppleTalk drivers are not included. Macintalk (the speech
synthesizer) is also supported via libraries, but again, the driver
is not included.
Exec Capability
---------------
A new feature of Rascal allows you to write exec files (for multiple
compilations, linking, executing, etc.). These execs are actually
written *in Rascal* and are interfaced to the development system
via a modified execution environment.
Complete Library Support
-----------------------
Older versions of Rascal did not support 'Uses' Libraries (which
contain type and constant definitions) -- full support in this
is now provided, as are all of the necessary Inside Macintosh
definitions.
Smart Linking
-------------
The Linker is now smart -- only necessary library routines will be
added to your code at link time.
Rascal Libraries
----------------------
In addition to the standard Inside-Mac-style libraries, many specially
written Rascal libraries are included with the release. They are
too numerous to describe. The titles of all of the libraries
are listed below -- you can intuit the purpose of most of them from
their titles.
Rascal Libraries:
__Job.src __ToolBox.src
__LPR.src __ToolLink.src
__3Dsane.src __Memory.src __ToolTraps.src
__ABRasCalls.src __Menus.src __ToolUtil.src
__ComplexLib.src __NoSysCall.src __Uniform.src
__Controls.src __OSTraps.src __Windows.src
__DeskLib.src __PackTraps.src
__Dialog.src __Params.src uJob.src
__EasyEd.src __QuickDraw.src uMacPrint.src
__EasyMenus.src __Resource.src uMemtypes.src
__EasyPrint.src __SANE.src uOSIntf.src
__Easywind.src __SANEPrint.src uPackIntf.src
__ExtendIO.src __SFnames.src uQuickDraw.src
__Extras.src __SaneIO.src uRas.src
__FixedLib.src __Sound.src uSpeech.src
__GraphUtils.src __Speech.src uToolIntf.src
__Help.src __StringLib.src
__IO.src __Text.src
There have been numerous other changes to Rascal and its utilities.
I will be glad to answer any specific questions about changes,
features, etc.
Rascal is owned by (and was developed at) Reed College.
Our distributor (they will send data sheets, on request):
Metaresearch, Inc.
1100 SE Woodward
Portland, OR 97202
(503) 232-1712
Price: $129.00 (educational discounts available)
Update Price: $25.00 (includes the four disks plus a new manual:
for owners of the previous Rascal version)
Site License: Reed has been known to negotiate very reasonable
site licenses for User groups and institutions -- contact
the distributor for information.
Note to Net Alpha Testers -- I am working on getting a final release
to you. Please be patient... Thanks.
--------------------------------------------
Scott Gillespie
Software Development Laboratory
Reed College
Portland, OR 97202
Claimer: I am involved in the Rascal project and therefore anything
said in this article should be taken with a grain of salt.
{decvax, ucbvax, pur-ee, uw-beaver, masscomp, cbosg, aat,
mit-ems, psu-cs, uoregon, orstcs, ihnp4, uf-cgrl, ssc-vax}!tektronix
\
+--!reed!maclab
{teneron, ogcvax, cadic, oresoft, grpwre, /
harvard, psu-cs, omen, isonvax, nsc-pdc}-------------+