anchor.diff:  
   (defun next-word ()
     (reverse-little-endian (next-instruction) (next-instruction)))
  +
  +(defun advance-ip ()
  +  (incf *ip* *advance*)
  +  (setf *advance* 0))
  +
  +(defun advance-ip-ahead-of-indirect-address (mod-bits r/m-bits)
  +  (incf *ip* (cond
  +	       ((or (and (= mod-bits #b00) (= r/m-bits #b110)) (= mod-bits #b10)) 2)
  +	       ((= mod-bits #b01) 1)
  +	       (t 0))))
  +
  +(defun next-instruction-ahead-of-indirect-address (mod-bits r/m-bits)
  +  (let ((*ip* *ip*))
  +    (advance-ip-ahead-of-indirect-address mod-bits r/m-bits)
  +    (setf *advance* 1)
  +    (next-instruction)))
  +
  +(defun next-word-ahead-of-indirect-address (mod-bits r/m-bits)
  +  (let ((*ip* *ip*))
  +    (advance-ip-ahead-of-indirect-address mod-bits r/m-bits)
  +    (setf *advance* 2)
  +    (next-word)))
   
   ;;; Memory access
   
  
positive.code:      for ret = (parse-opcode (next-instruction))
       collecting ret into disasm
       until (= *ip* instr-length)
       finally (return disasm)))
  
  (defun loop-instructions (instr-length)
  
negative.code: 
  (defmacro parse-group1-byte (opcode operation mod-bits r/m-bits)
    `(case (mod ,opcode 4)
      (0 (,operation (next-instruction-ahead-of-indirect-address ,mod-bits ,r/m-bits) (indirect-address ,mod-bits ,r/m-bits nil) nil))
      (1 (,operation (next-word-ahead-of-indirect-address ,mod-bits ,r/m-bits) (indirect-address ,mod-bits ,r/m-bits t) t))
      (3 (,operation (sign-extend (next-instruction-ahead-of-indirect-address ,mod-bits ,r/m-bits)) (indirect-address ,mod-bits ,r/m-bits t) t))))
  
  (defmacro parse-group1-opcode (opcode)
    `(parse-group-opcode
  