        `(do
           (defn ~pname ~args ~@body)
 
-          (swap! opcode-table conj ~opcode)))))
+          (swap! *opcode-list* conj ~opcode)))))
 
 ;; http://stackoverflow.com/questions/24897818/how-to-add-docstring-support-to-defn-like-clojure-macro
 

;;        `(~n)
;;        )))

(def opcode-table (atom #{}))

#?(:clj
   (defmacro defop

  the value of register VY."
  [])

(defop :ANNN
  "Store memory address NNN in register I"
  [])

(defop :BNNN
  "Jump to address NNN + V0"
  [])

(defop :CXNN
  "Set VX to a random number with a mask of NN"
  [])

(defop :DXYN
  "Draw a sprite at position VX, VY with N bytes of sprite data starting at the
  address stored in I. Set VF to 01 if any set pixels are changed to unset, and
  00 otherwise"
  [])

(defop :EX9E
  "Skip the following instruction if the key corresponding to the hex value
  currently stored in register VX is pressed."
  [])

(defop :EXA1
  "Skip the following instruction if the key corresponding to the hex value
  currently stored in register VX is not pressed."
  [])

(defop :FX07
  "Store the current value of the delay timer in register VX."
  [])

(defop :FX0A
  "Wait for a keypress and store the result in register VX."
  [])

(defop :FX15
  "Set the delay timer to the value of register VX."
  [])

(defop :FX18
  "Set the sound timer to the value of register VX."
  [])

(defop :FX1E
  "Add the value stored in register VX to register I."
  [])

(defop :FX29
  "Set I to the memory address of the sprite data corresponding to the
  hexadecimal digit stored in register VX."
  [])

(defn :FX33
  "Store the binary-coded decimal equivalent of the value stored in register VX
  at addresses I, I + 1, and I + 2."
  [])

(defop :FX55
  "Store the values of registers V0 to VX inclusive in memory starting at
  address I, I is set to I + X + 1 after operation."
  [])

(defop :FX65
  "Fill registers V0 to VX inclusive with the values stored in memory starting
  at address I, I is set to I + X + 1 after operation."
  [])

;;;;;;

;;(deref *opcode-list*)
;;(reset! *opcode-list* #{})

;; (swap! *opcode-list* conj (keyword (name :aaa)))

;; (swap! *opcode-list* conj :as)

(comment

