From c23136800a7f8931531c600628e59accf431a6a3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Rados=C5=82aw=20Kujawa?= Date: Mon, 13 Feb 2017 18:39:51 +0100 Subject: [PATCH] Unbreak BBR and BBS - they access zero page, don't act like immediate. --- src/emulation.c | 12 ++++++++++-- 1 file changed, 10 insertions(+), 2 deletions(-) diff --git a/src/emulation.c b/src/emulation.c index 0bf37b1..9dd0005 100644 --- a/src/emulation.c +++ b/src/emulation.c @@ -124,8 +124,12 @@ emul_asl(rk65c02emu_t *e, void *id, instruction_t *i) static void emul_bbr(rk65c02emu_t *e, void *id, instruction_t *i, uint8_t bit) { + uint8_t val; + + val = instruction_data_read_1(e, (instrdef_t *) id, i); + /* is bit is clear then branch */ - if (!(BIT(i->op1, bit))) + if (!(BIT(val, bit))) program_counter_branch(e, (int8_t) i->op2); else program_counter_increment(e, id); @@ -176,8 +180,12 @@ emul_bbr7(rk65c02emu_t *e, void *id, instruction_t *i) static void emul_bbs(rk65c02emu_t *e, void *id, instruction_t *i, uint8_t bit) { + uint8_t val; + + val = instruction_data_read_1(e, (instrdef_t *) id, i); + /* is bit is set then branch */ - if (BIT(i->op1, bit)) + if (BIT(val, bit)) program_counter_branch(e, (int8_t) i->op2); else program_counter_increment(e, id);