anchor.diff:  
   ;;; Flag effects
   
  +(defun set-af-on-op (result operand)
  +  (setf (flag-p :af) (not (= (logand result #xfff0) (logand (- result operand) #xfff0))))
  +  result)
  +
   (defun set-cf-on-add (value)
     (setf (flag-p :cf) *has-carried*)
     value)
  
positive.code:   `(disasm-instr (list "xchg" :op1 ,op1 :op2 ,op2)
       (rotatef ,op1 ,op2)))
  
  (defmacro inc (op1 is-word)
    `(disasm-instr (list "inc" :op1 ,op1)
       (set-of-on-op (set-pf-on-op (set-sf-on-op (set-zf-on-op (incf ,op1)) ,is-word)) 1 ,is-word)))
  
  (defmacro dec (op1 is-word)
    `(disasm-instr (list "dec" :op1 ,op1)
       (set-of-on-op (set-pf-on-op (set-sf-on-op (set-zf-on-op (decf ,op1)) ,is-word)) -1 ,is-word)))
  
  ;; One-byte opcodes on registers
  
  
negative.code: (defun load-flags-from-ah ()
    (disasm-instr '("lahf")
      (setf (flags-register nil) (byte-register :ah))))
  
  ;; Binary-coded decimal
  
  (defun ascii-adjust-after-addition ()
    (disasm-instr '("aaa")
      (let ((adjusted (or (> (logand (byte-register :al) #x0f) 9) (flag-p :af))))
        (if adjusted
  	  (incf (register :ax) #x106))
        (setf (flag-p :af) adjusted)
        (setf (flag-p :cf) adjusted))))
  
  (defun decimal-adjust-after-addition ()
    (disasm-instr '("daa")
      (if (or (> (logand (byte-register :al) #x0f) 9) (flag-p :af))
  	(progn
  	  (setf (byte-register :al) (wrap-carry (+ (byte-register :al) 6) nil))
  	  (setf (flag-p :cf) (or (flag-p :cf) *has-carried*))
  	  (set-flag :af))
  	(clear-flag :af))
      (when (or (> (byte-register :al) #x9f) (flag-p :cf))
        (setf (byte-register :al) (wrap-carry (+ (byte-register :al) #x60) nil))
        (set-flag :cf))
      (set-zf-on-op (set-sf-on-op (set-pf-on-op (byte-register :al)) nil))))
  
  ;;; Opcode parsing
  
  