   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-table)
-;;(reset! opcode-table #{})
-
-;; (swap! opcode-table conj (keyword (name :aaa)))
-
-;; (swap! opcode-table conj :as)
+;;(deref *opcode-list*)
+;;(reset! *opcode-list* #{})
+
+;; (swap! *opcode-list* conj (keyword (name :aaa)))
+
+;; (swap! *opcode-list* conj :as)
 
 (comment
 

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

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

#?(:clj
   (defmacro defop


  (def handler-list
    {;; Execute machine language subroutine at address NNN
     })

  (defn find-match-handler
