lang/lisp/1.8.7/src/lisp.4

Raw file
Back to index

PACKET lisp               (* Autor: J.Durchholz , P. Heyderhoff *)
                          (* Datum: 09.05.1984  *)
    DEFINES               (* Version 1.7.2      *)
                          (* Ă„nderung: notebook                       *)
                          (*    13.3.86  I. Ley                       *)
                          (* Ă„nderung: start lisp system              *)
                          (*    25.3.86  I. Ley                       *)
                          (* Anpassung an ELAN-Compiler Version 1.7.5 *)
                          (*     8.4.86  I. Ley                       *)
  start lisp system,
  lisp heap,
  insert lisp,
  run lisp,
  run lisp again,
  lisp,
  break lisp:
 
SYM VAR run again pointer :: nil;
DATASPACE VAR insert heap :: nil space;
 
PROC start lisp system (DATASPACE CONST heap):
  enable stop;
  initialize lisp system (heap);
  forget (insert heap);
  insert heap := heap
END PROC start lisp system;
 
 
PROC start lisp system (DATASPACE CONST heap, FILE VAR f):
  enable stop;
  create lisp system (f, heap);
  forget (insert heap);
  insert heap := heap
END PROC start lisp system;
 
 
PROC start lisp system (FILE VAR f):
  create lisp system (f, insert heap)
END PROC start lisp system;
 
 
DATASPACE PROC lisp heap:
  insert heap
END PROC lisp heap;
 
 
DATASPACE VAR run heap :: nil space;
 
 
PROC insert lisp:
  insert lisp (last param)
END PROC insert lisp;
 
 
PROC insert lisp (TEXT CONST file name):
  interpret (insert heap, file name)
END PROC insert lisp;
 
 
PROC run lisp:
  run lisp (last param)
END PROC run lisp;
 
 
PROC run lisp (TEXT CONST file name):
  forget (run heap);
  run heap := insert heap;
  interpret (run heap, file name)
END PROC run lisp;
 
 
PROC interpret (DATASPACE CONST heap, TEXT CONST file name):
  enable stop;
  FILE VAR f :: sequential file (input, file name);
  interpret (heap, f)
END PROC interpret;
 
 
PROC interpret (DATASPACE CONST heap, FILE VAR f):
  initialize lisp system (heap);
  get (f, run again pointer);
  add property (new atom ("program"), new atom ("APVAL"), run again pointer);
  put (evalquote (run again pointer))
END PROC interpret;
 
PROC run lisp again:
  put (evalquote (run again pointer))
END PROC run lisp again;
 
 
PROC get ausdruck:
  enable stop; get (ausdruck)
END PROC get ausdruck;
 
SYM VAR ausdruck; 
 
PROC lisp:
 
(* HAUPT TESTPROGRAMM FUER LISP      Heyderhoff    25.1.83   *)
IF NOT exists ("LISP HEAP") THEN 
  FILE VAR bootstrap :: sequential file (input, "lisp.bootstrap"); 
  create lisp system (bootstrap, new ("LISP HEAP")); 
  verbose lisp output (TRUE);
FI; 
SYM VAR work;
command dialogue(FALSE); forget ("LISP INPUT"); command dialogue(TRUE);
(* bildlaenge(23); *) (* EUMEL 1.65 *)
disable stop; 
REP 
  get (ausdruck); 
  IF is error THEN 
    handle error 
  ELSE 
    work := evalquote (ausdruck);
    IF is error THEN  handle error 
    ELSE note (work)
    FI 
  FI 
PER .
 
handle error: 
  IF text (error message, 18) = "halt from terminal" THEN 
    enable stop 
  ELSE 
    note (error message);
    put (     error message); pause(20);
    clear error; 
  FI .
END PROC lisp;
 
PROC break lisp:
  break; 
  page; 
  quit;
  FILE VAR in  :: sequential file (modify, "LISP INPUT"), 
           out :: notefile; modify (out);
  headline (out,"LISP OUTPUT");
  headline (in, "LISP INPUT");
  noteedit (in);
END PROC break lisp
 
END PACKET lisp;