anchor.diff:  ;;; Addressing
   
   (defgeneric reader (mode)
  -  (:documentation "Return a Perl-compatible Regex suitable for parsing MODE.")
  +  (:documentation "Return a Perl-compatible regex suitable for parsing MODE.")
     (:method (mode) (error 'invalid-mode :mode mode)))
   
   (defgeneric printer (mode)
  
positive.code: CPU returning an address according to BODY and a setf function to store to that
  address. If CPU-REG is non-nil, BODY will be wrapped in a get-byte for setf.
  READER should be a Perl-compatible regex that can read assembly in the mode.
  PRINTER should be the format string desired for disassembly of the mode.
  DOCS is used as the documentation for the method and setf function when provided."
    `(progn
       (defgeneric ,name (cpu)
         (:documentation ,docs)
  
negative.code:      (eval-when (:compile-toplevel :load-toplevel)
         ,@(loop for (op cycles bytes mode) in modes
              collect `(setf (aref *opcodes* ,op) '(,name ,cycles ,bytes ,mode))))
       (defgeneric ,name (,(intern "OPCODE") &key cpu
                           ,(intern "MODE") ,(intern "SETF-FORM"))
         (:documentation ,docs))
       ,@(loop for mode in modes for mname = (fourth mode) with x = (intern "X")
            do (setf (fourth mode) (if raw
                                       `',mname
                                       `(lambda (cpu) (get-byte (,mname cpu)))))
            collect `(defins (,name ,@mode)
                         (:setf-form (lambda (,x) (setf (,mname cpu) ,x))
                          :track-pc ,track-pc)
                       ,@body))))
  