perm filename SALISP.DOC[LSP,BGB]3 blob sn#017662 filedate 1972-12-27 generic text, type T, neo UTF8
00100	CART PROJECT MEMO			        HALLOWEEN 31 OCT 1972
00200	
00300	                SALISP  -  SAIL Accessible LISP.    
00400	
00500	                              Baumgart    
00600	
00700	
00800	Abstract:
00900		
01000		SALISP is the LISP 1.6 interpreter modified so that it can be
01100	loaded and used within a SAIL core image.
01200	
01300	As  a pure LISP interpreter, SALISP may be used as a teletype command
01400	scanner for calling SAIL procedures and for altering SAIL variables.
01500	
01600	As a bastard of SAIL and LISP, afew transanguineous subroutines allow
01700	SALISP  to  serve as an alternative to RAID, LEAP, MLISP and the LISP
01800	compiler.
01900	
02000	
02100	Coontents:
02200	
02300		I.   HOW TO USE SALISP.
02400	
02500		II.  MEMORY STRUCTURE.
02600	
02700		III. CONTROL STRUCTURE.
02800	
     

00100	I. HOW TO USE SALISP.
00200	
00300		In order to have SALISP loaded with a SAIL program,
00400	the file SALISP[SYs,BGB] is required as a load module.
00500	
00600	
00700	INVOCATION:
00800		Declaration of LISP in SAIL.
00900			REQUIRE "SALISP[SYS,BGB]" LOAD_MODULE;
01000			EXTERNAL SIMPLE PROCEDURE LISP (INTEGER SIZE);
01100		Call of LISP in SAIL.
01200			LISP(size);
01300		The declaration of a SAIL subroutine in LISP is automatic;
01400	before the LISP evaluator gives you the UNDEFINED FUNCTION error
01500	message it will look in the symbol table for a SAIL subroutine of
01600	that name. What happens is suggested by the following:
01700			(PUTPROP @NAME (NUMVAL(*GETSYM @NAME)) @SAIBR)
01800		Call of a Sail subroutine in LISP.
01900			(NAME arguments)
02000	
     

00100	IMPLEMENTATION:
00200	
00300		1. Entry interface at internal symbol LISP.
00400		2. Core Allocator Modified.
00500		3. Core REALLOC deleted.
00600		4. Garbage Collector modified.
00700		5. Core Expansions:
00800			ALVINE & GRINDEF Interface modified.
00900			LOADER Interface deleted.
01000			IO buffer allocations modified.
01100		6. UUO handling modified to make LISP transparent to SAIL.
01200		7. APR Interrupts modified to make LISP transparent.
01300		8. EVAL modified - property SAIBR subroutines.
01400		9. LISP modified to use I/O channels 10 to 17.
01500	
01600	SALISP has five kinds of numerals:
01700	
01800		1. INUMS
01900		2. FIXNUMS
02000		3. FLONUMS
02100		4. BIGNUMS
02200		5. SAINUMS