% dbuild.sl -- build a PSL REDUCE "in core" without use of fasl files.

% Author: Anthony C. Hearn.

(load addr2id)   % In case an error occurs.

(setq !*fastcar t)

(setq !*usermode nil)

(setq !*verboseload t)

(remprop 'cursym!* 'vartype)          % PSL declares this fluid.

% Compiler modifications.

(load compiler)
(remprop 'wplus2 'one)                % PSL compiler bug.
(remprop 'log 'no!-side!-effects!?)   % So that math can be fasled.
(remprop 'atan 'no!-side!-effects!?)  % So that math can be fasled.
(remprop '!*msg 'vartype)             % Compiler declares this global.
(load fast!-vector)                   % To use IGETV, etc.

(cond ((filep "$reduce/lisp/psl/$MACHINE/psl/symget.b")
       (dskin "$reduce/packages/support/symget.dat")))

(load zbig)                           % PSL bignums.

(errorset '(load compat) nil nil)     % Load PSL accelerators if there.

(flag '(eqcar) 'lose)                 % Already in PSL.

(setq !*init!-time!* (time))

(setq prolog_file 'pslprolo)

(setq rend_file 'pslrend)

(copyd 'rdf 'dskin)                   % CSL has a nicer name for this.

(global '(oldchan!* datchan!*))       % datchan!* needed for MS-DOS.

(setq oldchan2!*
    (rds (setq oldchan!*
	     (open "$reduce/packages/support/dbuild2.sl" 'input))))
				      % PSL independent code.
(close oldchan!*)

(setq !*verboseload nil)

(prog nil
   (reclaim)
   (prin2 "Time for build: ")
   (prin2 (quotient (difference (time) !*init!-time!*) 1000.0))
   (prin2t " secs")
   (prin2 "Heap left:      ")
   (prin2t (gtheap nil))
   (prin2 "BPS left:       ")
   (prin2t (free-bps)))

(initreduce)

(setq date!* (date))

(setq version!* "Bootstrapping REDUCE")

(cond (datchan!* (rds datchan!*)))    % Needed for MS-DOS systems.
