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