;;;-*- Mode:LISP; Package:SYSTEM-INTERNALS; Base:8 -*-


(comment
(package-declare lambda global 10000.
   ()
   (MYREFNAME GLOBAL LAM)) )

;CURRENTLY, PACKAGE LAM CREATED DURING SYSTEM LOAD WHILE LOADING METER.
; SOURCE HAS BEEN CHANGED SO IN NEXT SYSTEM PACKAGE LAMBDA WILL BE CREATED INSTEAD.
(package-declare lam global 10000.
   ()
   (MYREFNAME GLOBAL LAMBDA))

(special lam:a-memory-virtual-address)
(setq lam:a-memory-virtual-address si:a-memory-virtual-address)


(defsystem micro-compiler
  (:component-systems  micro-compiler-lambda-stuff micro-compiler-internal
		       ;micro-printer
		       ))


(defsystem micro-compilation-tools
  (:component-systems  micro-compiler-lambda-stuff micro-compiler-internal
		       micro-printer-ON-SYS META-EVAL
		       )
  (:do-components nil)
  (:patchable "sys:micro-compiler;" PATCH))

(defsystem micro-compiler-lambda-stuff
  (:package LAMBDA)
  (:module defs  ("sys:ulambda;required-functions-and-macros"))
  (:module MAIN  ("sys:ulambda;lambda-symbols"))
  (:compile-load defs)
  (:compile-load main (:fasload defs)))

(DEFSYSTEM micro-compiler-internal
  (:PACKAGE COMPILER)
  (:MODULE DEFS ("SYS: micro-compiler; MADEFS"))
  (:MODULE MAIN (
		 "SYS: micro-compiler; MA"
		 "SYS: micro-compiler; MAOPT"
		 "SYS: micro-compiler; MC"
		 "SYS: micro-compiler; MLAP"
        ;	 "SYS: LAMBDA-UCODE; QLF"
	;	 "SYS: LAMBDA-UCODE; USYMLD"
		 ))
  (:COMPILE-LOAD DEFS)
  (:COMPILE-LOAD MAIN (:FASLOAD DEFS))
  (:READFILE ("SYS: COLD; DEFMIC"
	      "SYS: COLD; DOCMIC")))

;;; MICRO-PRINTER is enough of the diagnostics to disassemble and print out
;;; a micro-compiled function.

(defsystem micro-printer-on-sys
  ;; move these files to SYS:MICRO-COMPILER; maybe?
  ;; No. Eventually we want to be using the full lambda-diag on
  ;; a 2x2 or bus-coupler settup if we are doing serious microcode work
  ;; using the lambda alone.
  (:package lambda)
  (:module main ("sys:lambda-diag;lammac"
		 "sys:lambda-diag;lam-regadr"
		 "sys:lambda-diag;print-uinst"
		 "sys:lambda-diag;lamqf"
		 "sys:lambda-diag;lamld"
		 "sys:lambda-diag;lam"))
  (:compile-load main))

(comment
 (defsystem micro-printer
  (:package lambda)
  (:default-binary-file-type "qfasl-lexical-99")
  (:module main ("lm1:lambda-diag;lammac"
		 "lm1:lambda-diag;lam-regadr"
		 "lm1:lambda-diag;print-uinst"
		 "lm1:lambda-diag;lamqf"
		 "lm1:lambda-diag;lamld"
		 "lm1:lambda-diag;lam"))
  (:compile-load main)) )




(pkg-find-package "META-EVAL" T)

(defsystem meta-eval
  (:pathname-default "SYS:MICRO-COMPILER;")
  (:module main ("meta"))
  (:module main2 ("meta-d" "meta-r"))
  (:compile-load main)
  (:compile-load main2 (:fasload main)))

