
			  Vax 11 Snobol4


    Welcome to the Vax 11 Snobol system.  Snobol is a machine independent
  implementation of a string manipulation language.  The implementation of
  the language on a target machine consists of writing many macros that when
  assembled give meaning to the object code.  The macros are described in
  "Implementing SNOBOL4 in SIL; Version 3.11" by Ralph Griswold, and should
  be referred to for the documentation  on the macros themselves.  Also
  involved in the implementation are interfaces to the operating system, in
  this case VMS 2.3.  The i/o interfaces to the Fortran i/o routines are
  handled in the module output.  The syntax tables were constructed with
  the stream.sno program and edited, then put into the snobol system itself.
    To summarize:

	  File            Description
	  ------------    --------------------------------------------
	  snobol.sil      The real thing.  Changes to the source are:
			    Put ':' after labels
			    Change END to .END
			    Change column 1 '*' to ';'
			    Put ';' before comments in column 32
			    Put <> around strings and multiple arguments
			      passed to macros
			    Change label 'DV' at 001914 to 'DVQ:' since dv in
			      macro means the divide interrupt vector
			    At label OBEND at line 005437 change:
			      oblist+descr*oboff   to
			      descr*oboff+oblist
			    Change TITLEs to .page and .sbttl
			    Add .psects at various places
			    Change all keywords, function names, and messages
			      to lower case.

	  m.mar           This is the 130 macro definitions
			  required to transform the Snobol Sil source
			  code into a working monster.  These macros are
			  only used by the snobol.sil source.

	  output.mar      A fortran-like output conversion routine used
			  only by output, stread, and stprnt macros.  The
			  actual i/o is performed by calls to the fortran
			  routines.

	  syntax.tbl      The syntax tables.  These were generated by the
			  stream.sno program using syntax.sil converted
			  to lower case as input.

	  stream.mar      The parser for the syntax tables.
			  Called only by the stream macro.


    These files must be macro'ed and linked together to produce Snobol4.
  Examples of this and regular useage appear below.

    Notes on this version:

      1.  The original syntax tables I had to use were in lower case so
	  everything I wrote was in lower case.  Since then the new syntax
	  tables have been generated that recognize upper and lower case,
	  but personally I like lower case and left the keywords that
	  I converted to lower case in the Snobol.sil file.  If this causes
	  errors then find these and convert them back to upper case.
	  They are all generated by the string macro in the source, located
	  near and after lines 5588 and 6161.

     2.   Link, load, and unload are not implemented.  If you implement them
	  please send me a copy of the macros and instructions on how to
	  generate a program to use with the load command.

     3.   Post-mortem dumps are not alphabetized because I didn't get around
	  to writing the ordvst macro.

     4.   Input and output associations use standard formatting, i.e. 'F1A132'
	  for output and 'F1A80' for input, and the third parameter on the
	  input and output association statement is ignored.

     4.5  Output directed to unit numbers will create the associated files
	  'fornnn.dat'.  If the unit number is greater than 10 the file
	  will have carriage return format and not fortran list format,
	  i.e.  there will be no space at the beginning of each record.

     5.   Stack overflow is not checked for in the snobol system stack.

     6.   The distribution system has an allocated data region of 250 pages,
	  which is 16,000 descriptors.  If this is inadequate then change the
	  expreg equate in file m.mar.

     7.   There are still errors which show up in the diagnostics.
	  The pattern diagnostic program diag2.sno shows what looks like an
	  error but is correct for fullscan/quickscan operation.

     8.   Feel free to modify the macros and subroutines for whatever reason.
	  If the result runs quicker, better, or has more features, please
	  send me a copy of the changes.

     9.   It is interesting to watch the virtual pages used in the allocated
	  data region by logging on to another terminal and running 
	  "mcr info" and giving it the process name of a process running
	  a Snobol job.  When the display shows the statistics (numbers)
	  type a 'v' and watch the pages in memory (represented by '*').
	  The allocated data region is between about 3B000 and 59000.

     10.  This was written in its entirety by
		  Wendell Turner
		  TRW
		  R2/1089
		  One Space Park
		  Redondo Beach, Ca.  90278
		  (213) 536-1071

