anchor.diff:    (loop (%hlt)))
   
   (defun mumble (message)
  -  (dotimes (i (%simple-array-length message))
  -    (let ((code (logand (char-code (schar message i)) #xFF)))
  -      (setf (io-port/8 #xE9) code)
  -      (setf (sys.int::memref-unsigned-byte-16 #x80000B8000 i)
  -            (logior code #x7000))))
  +  (mumble-string message)
     (setf (io-port/8 #xE9) #x0A))
   
   ;;; Used while the GC is copying, so no lookup tables.
  
positive.code:   (cond ((<= 0 nibble 9)
           (+ nibble (char-code #\0)))
          (t (+ (- nibble 10) (char-code #\A)))))
  
  (defun gc-trace (object direction prefix)
    (setf (io-port/8 #xE9) (char-code direction))
  
negative.code:         (isa-pic-irq-mask 2) nil))
  
  (add-hook '*early-initialize-hook* 'init-isa-pic)
  
  (defun ldb-exception (stack-frame)
    (mumble-string "In LDB.")
    (dotimes (i 32)
      (mumble-string " ")
      (mumble-hex (memref-unsigned-byte-64 stack-frame i)))
    (mumble-string ". Halted.")
    (loop (%hlt)))
  
  (defvar *exception-base-handlers* (make-array 32 :initial-element nil))
  (define-lap-function %%exception ()
    (sys.lap-x86:push :rax)
    (sys.lap-x86:push :rbx)
    (sys.lap-x86:push :rcx)
    (sys.lap-x86:push :rdx)
    (sys.lap-x86:push :rbp)
    (sys.lap-x86:push :rsi)
    (sys.lap-x86:push :rdi)
    (sys.lap-x86:push :r8)
    (sys.lap-x86:push :r9)
    (sys.lap-x86:push :r10)
    (sys.lap-x86:push :r11)
    (sys.lap-x86:push :r12)
    (sys.lap-x86:push :r13)
    (sys.lap-x86:push :r14)
    (sys.lap-x86:push :r15)
    (sys.lap-x86:mov64 :r8 :rsp)
    (sys.lap-x86:shl64 :r8 3)
    (sys.lap-x86:test64 :rsp #b1000)
    (sys.lap-x86:jz already-aligned)
    (sys.lap-x86:push 0)
    already-aligned
    (sys.lap-x86:mov32 :ecx 8)
    ;; FIXME: Should switch to a secondary data stack.
    (sys.lap-x86:mov64 :r13 (:constant ldb-exception))
    (sys.lap-x86:call (:symbol-function :r13))
    (sys.lap-x86:mov64 :rsp :r8)
    (sys.lap-x86:pop :r15)
    (sys.lap-x86:pop :r14)
    (sys.lap-x86:pop :r13)
    (sys.lap-x86:pop :r12)
    (sys.lap-x86:pop :r11)
    (sys.lap-x86:pop :r10)
    (sys.lap-x86:pop :r9)
    (sys.lap-x86:pop :r8)
    (sys.lap-x86:pop :rdi)
    (sys.lap-x86:pop :rsi)
    (sys.lap-x86:pop :rbp)
    (sys.lap-x86:pop :rdx)
    (sys.lap-x86:pop :rcx)
    (sys.lap-x86:pop :rbx)
    (sys.lap-x86:pop :rax)
    (sys.lap-x86:add64 :rsp 16)
    (sys.lap-x86:iret))
  
  (dotimes (i 32)
    (multiple-value-bind (mc pool)
        (sys.lap-x86:assemble `(,@(unless (member i '(8 10 11 12 13 14 17))
                                    `((sys.lap-x86:push 0)))
                                (sys.lap-x86:push ,i)
                                (sys.lap-x86:jmp (:constant ,#'%%exception)))
          :base-address 12
          :initial-symbols (list (cons nil (lisp-object-address nil)))
          :info (list (list 'exception-handler i)))
      (let ((fn (make-function mc pool)))
        (setf (aref *exception-base-handlers* i) fn)
        (set-idt-entry i :offset (lisp-object-address fn)))))
  
  (defun sys.int::simplify-string (string)
    (if (simple-string-p string)
  