anchor.diff:    `(parse-group-opcode
        (0 (parse-group-byte-pair ,opcode inc-indirect mod-bits r/m-bits))
        (1 (parse-group-byte-pair ,opcode dec-indirect mod-bits r/m-bits))))
  +
  +;; FLAGS processing
  +
  +(defun push-flags ()
  +  (disasm-instr '("pushf")
  +    (push-to-stack (flags-register))))
  +
  +(defun pop-flags ()
  +  (disasm-instr '("popf")
  +    (setf (flags-register) (pop-from-stack))))
  +
  +(defun store-flags-to-ah ()
  +  (disasm-instr '("sahf")
  +    (setf (byte-register :ah) (flags-register nil))))
  +
  +(defun load-flags-from-ah ()
  +  (disasm-instr '("lahf")
  +    (setf (flags-register nil) (byte-register :ah))))
   
   ;;; Opcode parsing
   
  
positive.code:     ((in-4-byte-block-p opcode #x88) (parse-mov-opcode opcode))
      ((in-paired-byte-block-p opcode #x86) (xchg-memory-register opcode))
      ((in-paired-byte-block-p opcode #xc6) (parse-group11-opcode opcode))
      ((in-paired-byte-block-p opcode #xfe) (parse-group4/5-opcode opcode))))
  
  ;;; Main functions
  
  
negative.code: 
  (defparameter *ram* (make-array (* 64 1024) :initial-element 0 :element-type '(unsigned-byte 8)) "Primary segment")
  (defparameter *stack* (make-array (* 64 1024) :initial-element 0 :element-type '(unsigned-byte 8)) "Stack segment")
  (defparameter *flags* '(:af 0 :cf 0 :of 0 :pf 0 :sf 0 :zf 0) "Flags")
  (defparameter *registers* '(:ax 0 :bx 0 :cx 0 :dx 0 :bp 0 :sp #x100 :si 0 :di 0) "Registers")
  (defparameter *ip* 0 "Instruction pointer")
  (defparameter *has-carried* nil "Whether the last wraparound changed the value")
  