X-Git-Url: http://git.squeep.com/?a=blobdiff_plain;f=dcpu16.c;h=23ef53a41747da7aadb9a51baec085033d5e1bab;hb=05eb5ecfb1611ebd0930c3195a5e55f929571cbd;hp=165b58984e298d76a2cdce30334a2dc141826344;hpb=bca632cc1c329a45dde32f476b0ef9f6ef5db05a;p=dcpu16 diff --git a/dcpu16.c b/dcpu16.c index 165b589..23ef53a 100644 --- a/dcpu16.c +++ b/dcpu16.c @@ -26,6 +26,8 @@ * TODO * change api to print into buffers rather than stdio * refactor opcode functiontables into switch statements + * let callbacks determine whether to override events, or just observe + * sort init callbacks by base addr, to call in-order */ static const char * const src_id_ = "$Id$"; @@ -691,6 +693,8 @@ void dcpu16_step(struct dcpu16 *d) { if (!d) return; + acct_event_(d, DCPU16_ACCT_EV_CYCLE, d->pc); + /* PC is advanced while decoding the operands by the opcode functions. Things like this could be organized a little better.. @@ -763,7 +767,7 @@ void dcpu16_dump_ram(struct dcpu16 *d, DCPU16_WORD start, DCPU16_WORD end) { * Register callback fn to be triggered whenever event matching any events * in bitwise mask occur. */ -int dcpu16_acct_add(struct dcpu16 *vm, dcpu16_acct_event mask, void (*fn)(struct dcpu16 *, dcpu16_acct_event, DCPU16_WORD, void *), void *data) { +int dcpu16_acct_add(struct dcpu16 *vm, dcpu16_acct_event mask, dcpu16_ev_cb_t *fn, void *data) { struct dcpu16_acct_cb cb; cb.mask = mask;