typedef unsigned int dcpu16_acct_event_;
#define DCPU16_ACCT_EV_READ (1<<1)
#define DCPU16_ACCT_EV_WRITE (1<<2)
-#define DCPU16_ACCT_RAM (1<<3)
+#define DCPU16_ACCT_EV_NOP (1<<3)
struct dcpu16_acct_cb {
void (*fn)(dcpu16_acct_event_ e, DCPU16_WORD addr);
- dcpu16_acct_event_ match_all;
- dcpu16_acct_event_ match_any;
+ dcpu16_acct_event_ mask;
};
/* a self-contained dcpu16 core */
/* print the contents of ram from second to third argument */
void dcpu16_dump_ram(struct dcpu16 *, DCPU16_WORD, DCPU16_WORD);
-/* print the instruction at the specified address */
-void dcpu16_disassemble_print(struct dcpu16 *, DCPU16_WORD);
+/* print the instruction at the specified address, returns number of words consumed in decoding */
+DCPU16_WORD dcpu16_disassemble_print(struct dcpu16 *, DCPU16_WORD);
/* register a callback for an accounting event */
-int dcpu16_acct_add(struct dcpu16 *, dcpu16_acct_event_ match_all, dcpu16_acct_event_ match_any, void (*fn)(dcpu16_acct_event_, DCPU16_WORD));
+int dcpu16_acct_add(struct dcpu16 *, dcpu16_acct_event_ mask, void (*fn)(dcpu16_acct_event_, DCPU16_WORD));
/* execute the next instruction */
void dcpu16_step(struct dcpu16 *);