anchor.diff:  (defparameter *disasm* nil "Whether to disassemble")
   
   (defmacro disasm-instr (on-disasm &body body)
  +  "Switch between disassembly and actual operation."
     `(if *disasm*
          ,on-disasm
          (progn ,@body)))
  
positive.code: 	  (logand (register word) #x00ff)))))
  
  (defsetf byte-register (reg) (value)
    `(let* ((register-to-word (getf +byte-register-to-word+ ,reg)) (word (first register-to-word)) (wrapped-value (wrap-carry ,value nil)))
       (if (second register-to-word)
  	 (setf (register word) (+ (ash wrapped-value 8) (logand (register word) #x00ff)))
  
negative.code:       (t value))))
  
  (defun sign-extend (value)
    "Return a signed byte sign-extended to a word."
    (wrap-carry (twos-complement value nil) t))
  
  (defun segment-calc (seg offset)
    "Calculate an absolute address using a segment:offset pair."
    (logand (+ (ash seg 4) offset) #xfffff))
  
  (defun current-ip ()
    "Calculate the current instruction pointer value with the CS segment."
    (disasm-instr (segment-calc 0 *ip*)
      (segment-calc (segment :cs) *ip*)))
  
  