[net.micro.mac] Rascal Summary

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}-------------+