;;;   THIS IS A PACKAGE FOR LOADING SHRDLU'S INTO CORE FROM THE DISK FILES.
;;;    THE PROCEDURE IS TO FIRST LOAD A BLISP (IGNORE ALLOCATIONS, THE 
;;;    PROGRAMS DO THEIR OWN). AND UREAD THIS FILE. EXECUTING "LOADSHRDLU"
;;;    WILL GENERATE (AFTER SOME TIME) A FULLY INTERPRETED VERSION. 
;;;    PARTIALLY COMPILED MIXES ARE AVAILLABLE, AS SEEN BELOW.
;;;    THE VARIABLE "VERSION-FILES" KEEPS A RUNNING TAB OF THE FILES
;;;    LOADER VIA "LOADER". IF ANY ERRORS OCCUR DURING READIN THEY
;;;    ARE PROTECTED BY AN "ERRSET" AND LOADING CONTINUES. (NOTE !! IF AN
;;;    UNBOUND PAREN CAUSES THE FILE TO BE TERMINATED TOO SOON, YOU'LL
;;;    NEVER NOTICE)
;;;


(SETQ *RSET T) 

(DEFUN LOADER (*!?KEY) 
       (OR (ERRSET (EVAL (LIST 'UREAD
			       *!?KEY
			       '>
			       'DSK
			       'SHRDLU))
		   NIL)
	   (AND (PRINT *!?KEY)
		(PRINC 'NOT-FOUND)
		(RETURN NIL)))
       (LOADX)) 

(DEFUN LOADX NIL 
       (PROG (*!?H *!?F *!?EOF) 
	     (SETQ *!?EOF (GENSYM))
	     (PRINT 'READING)
	     (PRINC *!?KEY)
	     (SETQ VERSION-FILES (CONS (STATUS UREAD) VERSION-FILES))
	LOOP ((LAMBDA (^Q) (SETQ *!?H (READ *!?EOF))) T)
	     (AND (EQ *!?H *!?EOF) (RETURN T))
	     (OR (ERRSET ((LAMBDA (^W ^Q) (EVAL *!?H)) T T))
		 (PROG2 (PRINT 'ERROR-IN-FILE) (PRINT *!?H)))
	     (GO LOOP)))

(DEFUN FLOAD FEXPR (SPECS)
   (TERPRI)
   (PRINC (CAR SPECS))
   (princ '/ )
   (PRINC (CADR SPECS))
   (OR (ERRSET (APPLY 'FASLOAD SPECS))
       (ERT lossage in loading - try again ?))
   )
 

(SETQ VERSION-FILES NIL) 

(DEFUN LOADSHRDLU NIL 
       (ALLOC '(LIST 320000
		     FIXNUM
		     15000
		     SYMBOL
		      15000
                     array 500 ))
       (SETQ PURE NIL)
       (MAPC 'LOADER '(PLNR THTRAC))
       (THINIT)
       (SETQ THINF NIL THTREE NIL THLEVEL NIL)
       (setq errlist nil)   ;removes micro-planner's fangs
       (MAPC 'LOADER '(SYSCOM MORPHO SHOW))
       (MAPC 'LOADER '(PROGMR GINTER GRAMAR DICTIO))
       (MAPC 'LOADER '(SMSPEC SMASS SMUTIL))
       (LOADER 'NEWANS)
       (MAPC 'LOADER '(BLOCKS DATA))
       (FASLOAD TRACE FASL COM COM)
       (FASLOAD GRAPHF FASL DSK SHRDL1)
       (LOADER 'SETUP)
       (fasload grindef fasl com com)
       'CONSTRUCTION/ COMPLETED) 

(defun loadparser nil
	(mapc 'loader '(syscom morpho show))
	(mapc 'loader '(progmr ginter gramar dictio))
	(loader 'setup)
	(load parser > dsk shrdl1)		;load is defined on ddm;*load >
	'complete-call-setup-num-date)

(DEFUN PARSER-compiled NIL 
	(SETQ PURE NIL)
	(FLOAD FASL SYSCOM DSK SHRDL1)
	(FLOAD FASL MORPHO DSK SHRDL1)
	(FLOAD FASL SHOW DSK SHRDL1)
	;;;
	(FLOAD FASL PROGMR DSK SHRDL1)
	(FLOAD FASL GRAMAR DSK SHRDL1)
	(LOADER 'DICTIO)
	;;;
	(FLOAD TRACE FASL COM COM)
	(FLOAD FASL SETUP DSK SHRDL1)
	;;;
	(load parser > dsk shrdl1)
	'PARSER-LOADED)



(DEFUN SHRDLU-COMPILED ()
(SETQ PURE NIL)
(FLOAD FASL SYSCOM  DSK SHRDL1)
(FLOAD FASL MORPHO DSK SHRDL1)
(FLOAD FASL SHOW DSK SHRDL1)
;;
(FLOAD FASL PROGMR DSK SHRDL1)
(FLOAD FASL gRAMar  DSK SHRDL1)
(LOADER 'DICTIO)
;;
(FLOAD FASL SMSPEC DSK SHRDL1)
(FLOAD FASL SMASS DSK SHRDL1)
(FLOAD FASL SMUTIL DSK SHRDL1)
;;
(FLOAD FASL NEWANS DSK SHRDL1)
;;
(FLOAD FASL PLNR DSK SHRDL1)
(LOADER 'THTRAC)
(THINIT)
(SETQ THINF NIL THTREE NIL THLEVEL NIL)
(setq errlist nil)
(FLOAD FASL BLOCKL DSK SHRDL1)
(LOADER 'BLOCKP)
(LOADER 'DATA)
;;
(FLOAD GRAPHF FASL DSK SHRDL1)
(FLOAD TRACE FASL COM COM)
(FLOAD FASL SETUP DSK SHRDL1)
'COMPLETED)
