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: 
  (defun stack-push (value)
    "Push the given VALUE on the stack and decrement the SP."
    (setf (get-byte (+ (cpu-sp *cpu*) 256)) (wrap-byte value))
    (decf (cpu-sp *cpu*))
    (wrap-stack *cpu*))
  
  
negative.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 &optional start)
    "If ADDRESS crosses a page boundary, add an extra cycle to CPU's count. If
  START is provided, test that against ADDRESS. Otherwise, use (absolute cpu)."
    (when (not (= (logand (or start (absolute cpu)) #xff00)
                  (logand address #xff00)))
      (incf (cpu-cc cpu))))
  
  