anchor.diff:  
   ;;; Flag effects
   
  -(defun set-cf-on-add (value is-word)
  -  (setf (flag-p :cf) (if is-word (>= value #x10000) (>= value #x100)))
  -  (wrap-overflow value is-word))
  +(defun set-cf-on-add (value)
  +  (setf (flag-p :cf) *has-overflowed*)
  +  value)
   
   (defun set-cf-on-sub (value1 value2)
     (setf (flag-p :cf) (> value2 value1))
  
positive.code: 
  (defmacro add-without-carry (src dest is-word)
    `(disasm-instr (list "add" :src ,src :dest ,dest)
       (set-zf-on-op (set-sf-on-op (set-cf-on-add (incf ,src ,dest) ,is-word) ,is-word))))
  
  (defmacro add-with-carry (src dest is-word)
    `(disasm-instr (list "adc" :src ,src :dest ,dest)
       (set-zf-on-op (set-sf-on-op (set-cf-on-add (incf ,src (+ ,dest (flag :cf))) ,is-word) ,is-word))))
  
  (defmacro sub-without-borrow (src dest is-word)
    `(disasm-instr (list "sub" :src ,src :dest ,dest)
  
negative.code: 
  (defun wrap-overflow (value is-word)
    "Wrap around an overflowed value."
    (let ((wrapped (if is-word (mod value #x10000) (mod value #x100))))
      (setf *has-overflowed* (not (= wrapped value)))
      wrapped))
  
  (defun negative-p (value is-word)
    (if is-word (>= value #x8000) (>= value #x80)))
  