(defvar *map* (make-array 128 :element-type '(unsigned-byte 8)))

(defun init-map (slot-no remote-slot-no)
  ;; Clear entire map.
  (loop for i from 0 below 128
	do (setf (aref *map* i) 0))
  ;; Map our superslot space to his superslot space, except for
  ;; top entry.
  (loop for i from 0 below 7
	do (setf (aref *map* (dpb slot-no (byte 4 3) i))
		 (dpb remote-slot-no (byte 4 4)
		      (dpb i (byte 3 1)
			   1))))		;valid bit
  ;; Map his slot-space at top of our local superslot space.
  (setf (aref *map* (dpb slot-no (byte 4 3) 7))
	(dpb #xF (byte 4 4)
	     (dpb (ldb (byte 3 1) remote-slot-no)
		  (byte 3 1)
		  1))))

(defun init-bus-coupler (slot-no)
  (configuration-register)			;Make sure we can read local register
  ;; Reset the MBC, leaving it disabled as bus master and the fault light on.
  (setf (configuration-register) (logior config-reset config-fault))
  (init-map slot-no #xF)			;Map in slot space for search
  ;; Frob with the remote registers.
  (remote-configuration-register)
  (setf (remote-control-register) (logior enable-as-bus-master))
  (setf (remote-configuration-register) (logior enable-serial-parity enable-timeout))

  ;; Turn on the bus coupler
  (setf (control-register) (logior reset-remote-mbc enable-remote-bus-address-space
				   enable-try-again-later enable-serial-parity enable-timeout))
  ;; Turn off the Fault LED, and optionally allow the K to read the MAC (but we'd have to set up
  ;; its MAP, too.
  (setf (configuration-register) (logior #+K-can-read-MAC enable-as-bus-master))
  (let ((remote-slot-no (find-falcon)))		;Search the other slots
    ;; Now map in the other Falcon
    (init-map slot-no remote-slot-no)))

