;;; -*- Mode:LISP; Package:LAMBDA; Base:8 -*-



;izero-good-parity

(defvar current-processor-type nil)

(defun setup-common-symbols (for-processor)
  (selectq for-processor
    (:lambda
     (setup-common-symbols-1 lambda-symbols "LAM")
      )
    (:explorer
     (setup-common-symbols-1 raven-symbols "RAV")
     )
    (t (ferror nil "foo")))

  (setq ramd (fd-regadr com-func-dest-md))
  (setq ravma (fd-regadr com-func-dest-vma))
  (setq rapp (fd-regadr com-func-dest-pdl-buffer-pointer))
  (setq rapi (fd-regadr com-func-dest-pdl-buffer-index))
  (setq current-processor-type for-processor)
  )

(defun setup-common-symbols-1 (symbols-list prefix)
  (do ((tail symbols-list (cddr tail))
       (prefix-length (string-length prefix)))
      ((null tail))
    (if (not (string-equal (string (car tail)) prefix :end1 prefix-length))
	(ferror nil "symbol ~S doesn't start with ~S" (car tail) prefix))
    (let ((common-sym (intern (string-append "COM"
					     (substring (string (car tail)) prefix-length)))))
      (putprop common-sym t 'special)
      (set common-sym (symeval (car tail)))
      )))


(defun lambda-mode ()
  (setup-common-symbols :lambda)
  (setq LAM-UINST-DESC LAM-UINST-DESC-lambda)
  )

(defun explorer-mode ()
  (setup-common-symbols :explorer)
  (setq LAM-UINST-DESC LAM-UINST-DESC-explorer)
  )

;(explorer-mode)
