;;; -*- Mode:Lisp; Readtable:ZL; Package:USER; Base:8; Patch-File:T -*-
;;; Patch file for MICRO-COMPILATION-TOOLS version 3.2
;;; Reason:
;;;  enable-micro-%misc for turning on new handed-code (regular microcode) misc instructions.
;;; Written 25-Mar-86 08:33:29 by GJC at site LMI Cambridge
;;; while running on Moe from band 3
;;; with Experimental System 110.154, Experimental Lambda-Diag 7.3, Experimental Local-File 68.4, Experimental FILE-Server 18.2, Experimental Unix-Interface 9.1, Experimental ZMail 65.10, Experimental Object Lisp 3.0, Experimental Tape 6.13, Experimental Site Data Editor 3.1, Experimental Tiger 24.0, Experimental KERMIT 31.2, Experimental Window-Maker 1.0, Experimental Gateway 4.0, Experimental TCP-Kernel 39.5, Experimental TCP-User 62.5, Experimental TCP-Server 45.5, Experimental MEDIUM-RESOLUTION-COLOR 3.0, Experimental MICRO-COMPILATION-TOOLS 3.1, microcode 1429, SDU ROM 103, Alpha III Andover.



; From file DJ: L.MICRO-COMPILER; MLAP.LISP#64 at 25-Mar-86 08:33:30
#8R COMPILER#:
(COMPILER-LET ((*PACKAGE* (PKG-FIND-PACKAGE "COMPILER")))
  (PATCH-SOURCE-FILE "SYS: MICRO-COMPILER; MLAP  "

(defun enable-micro-%misc (instruction-name &optional
			   (cname (intern (format nil "%~A" instruction-name) "COMPILER"))
			   (sname (intern (format nil "X~A" instruction-name) "LAM")))
  "This is for enabling a hand-coded %MISC instruction that was installed after the cold load"
  (lambda:assure-lam-symbols-loaded)
  (let ((opcode (or (get cname 'qlval) (ferror nil "No opcode for ~S" cname)))
	(pc (- (or (lam:lam-lookup-name sname) (ferror nil "No ucode pc for ~S in loaded LAM symbols" sname))
	       lam:racmo)))
    (let ((pc-array #'micro-code-symbol-area)
	  (name-array #'micro-code-symbol-name-area)
	  (index (misc-opcode->array-index opcode)))
      (aset pc pc-array index)
      (enable-mid-ram opcode pc)
      (let ((sys:%inhibit-read-only t))
	(aset cname name-array index))
      instruction-name)))

))
