-/* these are used for accounting/watchpointing/&c */
-typedef unsigned int dcpu16_acct_event_;
-#define DCPU16_ACCT_EV_READ (1<<1)
-#define DCPU16_ACCT_EV_WRITE (1<<2)
-#define DCPU16_ACCT_EV_NOP (1<<3)
+/* these are used for accounting/watchpointing/modules/&c */
+typedef unsigned int dcpu16_acct_event;
+typedef void (dcpu16_ev_cb_t)(struct dcpu16 *, dcpu16_acct_event, DCPU16_WORD, void *);
+#define DCPU16_ACCT_EV_CYCLE (1<<1)
+#define DCPU16_ACCT_EV_READ (1<<2)
+#define DCPU16_ACCT_EV_WRITE (1<<3)
+#define DCPU16_ACCT_EV_NOP (1<<4)
+#define DCPU16_ACCT_EV_RESET (1<<5)