anchor.diff:  
   (defmacro inc (op is-word)
     `(disasm-instr (list "inc" :op ,op)
  -     (set-af-on-op (set-of-on-op (set-pf-on-op (set-sf-on-op (set-zf-on-op (incf ,op)) ,is-word)) 1 ,is-word) 1)))
  +     (set-af-on-op (set-of-on-add (set-pf-on-op (set-sf-on-op (set-zf-on-op (incf ,op)) ,is-word)) 1 ,is-word) 1)))
   
   (defmacro dec (op is-word)
     `(disasm-instr (list "dec" :op ,op)
  -     (set-af-on-op (set-of-on-op (set-pf-on-op (set-sf-on-op (set-zf-on-op (decf ,op)) ,is-word)) -1 ,is-word) -1)))
  +     (set-af-on-op (set-of-on-sub (set-pf-on-op (set-sf-on-op (set-zf-on-op (decf ,op)) ,is-word)) 1 ,is-word) -1)))
   
   ;; One-byte opcodes on registers
   
  
positive.code:   (setf (flag-p :cf) (> value2 value1))
    (- value1 value2))
  
  (defun set-of-on-op (sum value2 is-word)
    (let* ((value1 (- sum value2)) (neg1 (negative-p value1 is-word)))
      (setf (flag-p :of) (and (eq neg1 (negative-p value2 is-word)) (not (eq neg1 (negative-p sum is-word)))))
      sum))
  
  (defun set-pf-on-op (value)
    (setf (flag-p :pf) (evenp (logcount (logand #xff value))))
  
negative.code: 
  (defun wrap-carry (value is-word)
    "Wrap around a carried value."
    (let* ((limit (if is-word #x10000 #x100)) (carry (>= value limit)) (negative (minusp value)))
      (setf *has-carried* (or carry negative))
      (cond
        (carry (mod value limit))
        (negative (+ value limit))
        (t value))))
  
  ;;; setf-able locations
  
  