anchor.diff:      result))
   
   (defmethod branch-relative ((cpu cpu))
  -  (let ((addr (zero-page cpu)))
  -    (if (zerop (status-bit 1))
  -        (wrap-word (if (zerop (logand addr 128))
  -                       (- (cpu-pc cpu) (logxor addr 255))
  -                       (+ (cpu-pc cpu) addr)))
  -        (wrap-word (1+ (cpu-pc cpu))))))
  +  (let ((addr (zero-page cpu))
  +        (result nil))
  +    (incf (cpu-cc cpu))
  +    (incf (cpu-pc cpu))
  +    (if (not (zerop (logand addr #x80)))
  +        (setf result (wrap-word (- (cpu-pc cpu) (logxor addr #xff) 1)))
  +        (setf result (wrap-word (+ (cpu-pc cpu) addr))))
  +    (maybe-update-cycle-count cpu result (cpu-pc cpu))
  +    result))
  
positive.code:   (setf (status-bit 1) (if (zerop value) 1 0)
          (status-bit 7) (if (negative-p value) 1 0)))
  
  (defun maybe-update-cycle-count (cpu address)
    "If ADDRESS crosses a page boundary, add an extra cycle to CPU's count."
    (when (not (= (logand (absolute cpu) #xff00)
                  (logand address #xff00)))
      (incf (cpu-cc cpu))))
  
  
negative.code:   "Pop the value pointed to by the SP and increment the SP."
    (incf (cpu-sp *cpu*))
    (wrap-stack *cpu*)
    (get-byte (+ (cpu-sp *cpu*) #xff)))
  
  (defun stack-pop-word ()
    "Pop a 16-bit word off the stack."
  