anchor.diff:    (loop
        for ret = (parse-opcode (next-instruction))
        until (equal ret '("hlt"))
  +     do (advance-ip)
        finally (return t)))
   
   (defun disasm-instructions (instr-length)
  
positive.code:   (disasm-instr
        (if (= mod-bits #b11) (register (if is-word (bits->word-reg r/m-bits) (bits->byte-reg r/m-bits)))
  	  (let ((base-index (address-for-r/m mod-bits r/m-bits)))
  	    (setf (getf base-index :disp)
  		  (case mod-bits
  		    (#b00 0)
  		    (#b01 (next-instruction))
  		    (#b10 (next-word))))
  	    base-index))
      (let ((address-base (address-for-r/m mod-bits r/m-bits)))
        (case mod-bits
  
negative.code: (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-overflowed* nil "Whether the last wraparound changed the value")
  (defparameter *advance* 0 "Bytes to advance IP by after an operation")
  
  ;;; Constants
  
  