main8.red 1.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. % MAIN8.RED Small READ-EVAL-PRINT Loop WITH IO
  2. % Needs IO, SUB2, SUB3, SUB4, SUB5, SUB6,SUB7
  3. IN "xxx-header.red"$
  4. %/ in "pt:stubs3.red" real gc installed$
  5. in "pt:stubs4.red"$
  6. in "pt:stubs5.red"$
  7. in "pt:stubs6.red"$
  8. in "pt:stubs7.red"$
  9. in "pt:stubs8.red"$
  10. in "pt:psl-timer.sl"$
  11. in "PT:GC-TEST.RED"$
  12. on syslisp;
  13. Compiletime GLOBAL '(DEBUG IN!* OUT!* !$EOF!$ !*PVAL);
  14. FLUID '(Heap!-Warn!-Level);
  15. Procedure FirstCall;
  16. Begin scalar x, Done, Hcount;
  17. INIT();
  18. InitHeap();
  19. InitObList();
  20. InitEval();
  21. InitRead();
  22. LispVar(DEBUG) := 'NIL; % For nice I/O
  23. Lispvar(Heap!-Warn!-Level) := 0; % Set for Non-trap
  24. LispVar(!*GC) :=T;
  25. LispVar(GCKnt!*) :=0;
  26. LispVar(GCTime!*) :=0;
  27. LispVar(!*RAISE) := 'T; % Upcase Input IDs
  28. LispVar(!*PVAL) := 'T; % Print VALUEs
  29. LispVar(!$EOF!$) := MKID Char EOF; % Check for EOF
  30. Hcount :=0;
  31. Prin2t "Invoke STARTUP Code";
  32. InitCode();
  33. LISPVAR(IN!*):=0;
  34. LISPVAR(OUT!*):=1;
  35. Hcount :=0;
  36. ClearIo();
  37. Prin2T "Reading Init Files";
  38. Lapin "INIT8";
  39. Prin2t '"MINI-PSL with File I/O and RECLAIM";
  40. Prin2T "Invoke (TESTMARKING) and then (GCTEST)";
  41. While Not Done do
  42. <<Hcount:=Hcount+1;
  43. Prin2 Hcount; Prin2 '" lisp> ";
  44. x:=READ();
  45. if x EQ !$EOF!$ then
  46. <<Terpri();
  47. Prin2T " *** Top Level EOF *** ">>
  48. else if x eq 'QUIT then Done := 'T
  49. else <<Terpri();
  50. x:=EVAL x;
  51. if Lispvar(!*PVAL) then Print x>>;
  52. >>;
  53. Quit;
  54. End;
  55. off syslisp;
  56. End;