perm filename THIS.NOT[OLD,LSP] blob sn#383562 filedate 1978-12-10 generic text, type C, neo UTF8
COMMENT ⊗   VALID 00007 PAGES
C REC  PAGE   DESCRIPTION
C00001 00001
C00002 00002	SKIP 1
C00003 00003
C00007 00004
C00011 00005
C00017 00006
C00023 00007	@@TBSIZE 36.
C00025 ENDMK
C⊗;
;SKIP 1
;LFTMAR 300
;KSET FONTS;31VR KST

					LABORATORY FOR COMPUTER SCIENCE - AI LAB
					Massachusetts Institute of Technology
					545 Technology Square, Room 834
					Cambridge MA 02139
					June 6, 1977




To all you winners[?] out there in TOPS-10 land!


     Here's the latest news according to MACLISP.  

		***BIBOP*** is finally here!!!

As usual, the next few paragraphs rehash the same old introductions,
but later on there are some changes because of the introduction of a
BIBOP storage strategy for all you TOPS-10 winners.  Following, at the
end of this letter is listing of the files on this tape, and all files
on our DECSYS; directory should go onto your SYS: device for the
proper operation of the AUTOLOAD  feature. 
	Just a short note about notational conventions I commonly use,
and about those used here at the AI Lab:
  1) All numbers are in octal [base 8.] unless postfixed by a period,
     in which case they are in decimal.  The word "block" means one 
     TOPS-10 page, i.e., 0.5K of memory.  numbers typed at the 
     initial ALLOC of LISP will ordinarily be in octal, and the 
     meaning for the various allocations will be words of core.
  2) Angle brackets are a meta-linguistic device, used to enclose a 
     description for some unprintable character, and to serve as 
     metalinguistic variables.  For example, <control-Q> stands for 
     the single ASCII character whose ASCII ordinal value is 21 [17. 
     for those who prefer numbers in decimal], and which is usually 
     typed on a teletype by holding down the control key at the same 
     time as striking the "Q" key.  Also, <error-msg>  would be a 
     variable meaning some unspecified string of characters.  As in 
     many other meta-languages, brackets enclose optional parts of 
     a piece of syntax.
  3) File name strings on the ITS system generally appear as:
	[<device-name>:][<directory-name>;]<file-name> <file-extension>
     So remember, <space> separates the file-name from the extension,
     and the extension may be up to 6 characters long [for transferral
     to TOPS-10 systems, merely truncate the extension to 3 
     characters].  See the cruft at the end of this note for examples.

  4) We don't usually adhere strictly to conventions about the 
     file-name extension, but a few guidelines may be helpful.
      LSP	A source file of LISP code, usually containing EXPR 
		definitions and possibly intermixed with some LAP 
		code.
      LAP	Output of the LISP compiler.  An ordinary ASCII text
 		file that can be loaded in by the top-level loop [after 
		selecting the input file with UREAD]
      FASL	Output of the FASLAP assembler - The relocatable 
		format used by the MACLISP system.  The system 
		subroutine FASLOAD applies a linking-loader to the 
		requested file, and it will signal an error if the file 
		is not in FASL format.
      MID	A source file of MIDAS code
      REL	Obvious
      <numerical-digits>
		Source code for whatever language.  The digit string 
		is considered a version number.


     The file "LISP NEWS" is the collection of system updates
sent out here at MAC since the publication of the MACLISP 
reference manual in April 1974.  Even though it is sadly out of date,
this manual is indispensible for understanding the system.  Recently,
we published in loose-leaf form the first two parts of the MACLISP 
manual. These should be of some help to novice users of the system.

     There are a few major changes in the strategy  of the TOPS-10
implementation, foremost of which is the way interrupt characters are 
now done.  Control-C trapping is no longer used  -  it turned out to 
be a verrry bad idea  -  and instead <control-C> takes you back to 
the monitor, from which the REENTER command puts you in the  interrupt
loop.  Of course, if the program is sitting in the TTY  input wait
loop, then control characters will be executed immediately;  but if
the program is running and not inputting from the TTY, you  have to
type <control-C>, followed by REENTER.  This  is similar to the way
interrupt characters are handled on MULTICS.
The RESCAN feature of the monitor is used to get an initializer
program running, and is invoked as follows:
	.RUN LISP;MYFILE.INI
or
	.RUN LISP(MYFILE.INI)
depending on which syntax your monitor permits.  MYFILE.INI is a file
of LISP code, whose first form should be a (COMMENT ...) used by
the allocator.  If ".INI" is omitted, the extension INI is assumed.


########## look out for these paragraphs - something new is here ##########

	Now, some reminders as to how to make up various systems. 
First, note that most storage spaces can be dynamically re-allocated
larger (i.e., LIST, FIXNUM, FLONUM, BIGNUM, SYMBOL, ARRAY, and HUNKn); 
But Binary Program Space, as well as all the Push-down-stack (usually
called PDLs) cannot be so expanded in the TOPS-10 version.  This is 
the fault of the limited facility in a two-segment architecture, as 
compared with a virtual-memory paging box.  Thus you will have to pay
more than the usual attention to allocating these areas. 

1) To make up a LISP.SHR and LISP.LOW:  First use the standard
   DEC LOADER, to load up the LISP.REL file.  Then start it up
   once to cause the initialization to happen.  You will probably 
   get a message from LISP saying that the low segment begins at a bad
   boundary point;  if that happens, use the appropriate LOADER switch
   to set the initial low segment firstloc to the value printed out by
   LISP.  This usually happens if you load a DDT or some other 
   program before loading the LISP.REL;  for example, with a DDT, you
   are asked by LISP to give the LOADER command:
	/005140O	[or /SET:.LOW.:5140 for LINK-10]
   After that, you can then sharable-save it, preferably on SYS. 
   [A LISP job that has been run, and subsequently SUSPENDed, will 
   have no HISEG; but upon start up will try to GETSEG a hiseg from 
   the same LISP.SHR that was used originally.  Thus sharable-save 
   dumps require no additional copies of the high segment on DSK].
   If your system runs the newer 6.02 monitor, it is a good idea to
   use the NSSAVE command to create a single LISP.EXE file; this will
   make LISP load faster and help the TOPS-10 VM features to work
   better.
2) To make up a NCOMPLR compiler:  First allocate about 36000.
   words for BPS.  The standard values for the other spaces are 
   acceptable, but you may want to lessen them somewhat;  if so, some
   values to use are:
	REGPDL=1400
	SPECPDL=1000
	If you are really low on core, you might consider reducing 
   these by a factor of 2.
   Then do (FASLOAD NCOMPLR FAS) followed by (INITIALIZE) followed
   by (CDUMP);  as the NCOMPLR file is being loaded, it makes a call 
   to the ALLOC function to set the other space sizes.  At this point,
   you are back in the monitor, at a place where you can save the 
   compiler away;  when you start it up again, it will be in the 
   command line parser, from which you can escape [to LISP toplevel,
   of course] by typing a <control-G>.  To re-enter the parser from 
   toplevel, do (MAKLAP), or merely type <control-caret> [or 
   <control-up-arrow>, however you call it; it is ascii 036 octal].
   The syntax of the parser is very similar to that of almost all 
   file-transducing programs:
	<target-file>←<source-file>[(<switch-letters>)]<carriage-return>
   where the brackets are here meant to be meta-syntactic, as always.
   Multiple source-file specifications may be used to produce a single
   target file, in which case they are separated by commas.  If only 
   one file specification is given with no "←", then reasonable 
   defaults are taken.
	If enough core is available [say, 65.K or so] you might 
   consider also loading in the FASLAP.FAS and GETMID.FAS files just
   after FASLOADing in NCOMPLR.FAS, and taking advantage of the 
   concurrent compilation-and-assemble now available, by specifying 
   the "F" and "K" switches.  In this case, however, you should 
   increase the BPS allocation to 39000., leaving the others  
   the same.  But otherwise, if you can't get enough core, follow the
   instructions under 3) below to get a "stand-alone" FASLAP 
   assembler.


3) To make up a FASLAP assembler: as for the compiler, get a 
   LISP, allocating about 7000. words for BPS, and using the 
   same PDL allocations as recommended under 2) above.  Then do
		(FASLOAD FDRV FAS)
		(FASLOAD GETMID FAS)
		(FASLOAD FASLAP FAS)
		(INITIALIZE)
		(CDUMP)
   Again, at this point, you will be back in the monitor,
   from which you can save the job;  and again, when restarting
   it, you will be in the command line parser.  A reminder:  If the 
   GETMID file is not on the directory which is your currently 
   connected directory, say maybe it is on SYS, you will have to fill 
   in all the specifications for the MACLISP file specification. E.G.,
		(FASLOAD GETMID FAS SYS) 
		(FASLOAD FASLAP FAS DSK (<PROJ. NO.>  <PROG. NO.>))
		<ETC.>
   Omitting the list (<proj. no.> <prog. no.>) will allow defaulting
   to the previous directory used, or to the currently connected 
   directory.  It should be possible to specify the SYS device by 
	(FASLOAD GETMID FAS DSK (1 4))


4) The CGOL files, located on the PRATT directory, make an
   interesting front-end for LISP.  It has been said that if
   you liked CLISP, you'll love CGOL.  The manual, which is
   more or less the file CGOL DOC, is self-explanatory.  The
   fasl files for both CGOL and CGPRIN were constructed by
   first writing the programs in CGOL, then compiling them
   directly using NCOMPL.

5) The SCHEME files, located on the SCHEME directory, are an
   implementation of the SCHEME language (a lexically scoped
   dialect of LISP) which runs under MacLISP.  It is documented
   in MIT AI Lab Memos 349, 353, 379, and others.

6) If you need to assemble something from MIDAS, remember that
   when running on the DEC system, MIDAS normally produces a 
   REL file as output.
   When LISP source is being assembled, it uses a feature to
   take additional "source code" from the TTY, but what you are 
   supposed to do here is redefine some of the standard assembly 
   flags, such as "D10" or "BIGNUM".  Just after it says,
		REDEFINITIONS?
   then you can type, for example,
		D10==1
		ITS==0
		BIGNUM==0
		EDFLAG==1
		USELESS==0
   and when you've typed in enough, terminate the redefinitions by
   typing a <control-Z>.  Ordinarily, you will probably need only to 
   give the redefinitions
		D10==1
		ITS==0
   which signal a relocatable assembly for the TOPS-10 system;
   but if you are strapped for core, you can eliminate some 
   of the winning features of MACLISP by turning off the flags
   controlling their assembly.
	The LISP.REL on this tape is a standard full assembly,
   but the LSPMIN.REL  has many such features omitted,
   and is consequently about 5K smaller than if all were assembled in
   [e.g., the "BIGNUM", or infinite-precision integer arithmetic 
   package; the "EDIT" package; and a bunch of useless features such
   as the Roman numeral reader!]

6) @ is our source creffing program; all of our program listings are
   generated using it.  It is used primarily for the Xerox Graphics
   printer over here, but it also makes line printer listings.  Its
   neatest feature is that it can make "comparison listings", ie,
   listings of only the pages that have changed since the previous
   version.

	JONL is finally back from his leave of absence at IBM.  Work
is picking up on the new manual; chapter three should be out fairly
soon.  Ellen Lewis is editing the latest revisions, but she also has
other duties.  We will bring the manual out chapter by chapter, as
time permits. 

				    Jon L. White
				and Guy L. Steele
@@TBSIZE 36.
@@FBSIZE 36.
#MC:

JONL;	THIS NOTE

MIDAS;	MIDAS DOC
	MIDAS 356
	MIDAS RELSML
	ATSIGN DOC
	ATSIGN 410
	ATSIGN REL
	ITSDFS MID
	DECDFS MID
	ITSBTS MID
	DECBTS MID
	FASDFS MID
	TNXDFS MID
	TWXBTS MID

LISP;	LISP NEWS
	LSPMIN REL
	LISP REL
	LISP 384

COMLAP;	ELAP 100
	FASLAP 288
	FDRV 32
	GFILE 412
	GFN 412
	GRILAP 15
	NCOMPL 703
	TRACE 59
	NCOMPLR FAS
	FASLAP FAS
	FDRV FAS

LIBDOC;	FORMAT LSP
	CHOMP LSP
	DOW LSP
	BS LSP
	FOR LSP
LIBLSP;	FORMAT FASL
	CHOMP FASL
	DOW FASL
	BS FAS
	FOR FASL

DECSYS;	GETMID FAS
	SORT FAS
	LAP FAS
	GRINDE FAS
	GRIND FAS
	GRILAP FAS
	TRACE FAS

PRATT;	CGOL DOC
	CGOL CGL
	CGPRIN CGL
	CGOL FASL
	CGPRIN FASL

SCHEME;	SCHSYS 17
	SCHSYS FASL
	SCHEME INI

LSPMAN;	MANUAL ASCII
ββββ