cpu_6800_ill(self);
break;
case 0x06:
- cpu_6800_sta(self, self->regs.byte.a | 0xc0, CPU_6800_EA_P);
+ cpu_6800_tap(self);
break;
case 0x07:
- cpu_6800_sta(self, self->regs.byte.p, CPU_6800_EA_A);
+ cpu_6800_tpa(self);
break;
case 0x08:
cpu_6800_in(self, CPU_6800_EA_X);
cpu_6800_ill(self);
break;
case 0x20:
- cpu_6800_bra(self, true, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, true, cpu_6800_ea_relative(self));
break;
case 0x21:
cpu_6800_ill(self);
break;
case 0x22:
- cpu_6800_bra(self, !self->regs.bit.cf && !self->regs.bit.zf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, !self->regs.bit.cf && !self->regs.bit.zf, cpu_6800_ea_relative(self));
break;
case 0x23:
- cpu_6800_bra(self, self->regs.bit.cf || self->regs.bit.zf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, self->regs.bit.cf || self->regs.bit.zf, cpu_6800_ea_relative(self));
break;
case 0x24:
- cpu_6800_bra(self, !self->regs.bit.cf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, !self->regs.bit.cf, cpu_6800_ea_relative(self));
break;
case 0x25:
- cpu_6800_bra(self, self->regs.bit.cf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, self->regs.bit.cf, cpu_6800_ea_relative(self));
break;
case 0x26:
- cpu_6800_bra(self, !self->regs.bit.zf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, !self->regs.bit.zf, cpu_6800_ea_relative(self));
break;
case 0x27:
- cpu_6800_bra(self, self->regs.bit.zf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, self->regs.bit.zf, cpu_6800_ea_relative(self));
break;
case 0x28:
- cpu_6800_bra(self, !self->regs.bit.vf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, !self->regs.bit.vf, cpu_6800_ea_relative(self));
break;
case 0x29:
- cpu_6800_bra(self, self->regs.bit.vf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, self->regs.bit.vf, cpu_6800_ea_relative(self));
break;
case 0x2a:
- cpu_6800_bra(self, !self->regs.bit.nf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, !self->regs.bit.nf, cpu_6800_ea_relative(self));
break;
case 0x2b:
- cpu_6800_bra(self, self->regs.bit.nf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, self->regs.bit.nf, cpu_6800_ea_relative(self));
break;
case 0x2c:
- cpu_6800_bra(self, !self->regs.bit.nf && !self->regs.bit.vf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, !self->regs.bit.nf && !self->regs.bit.vf, cpu_6800_ea_relative(self));
break;
case 0x2d:
- cpu_6800_bra(self, self->regs.bit.nf || self->regs.bit.vf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, self->regs.bit.nf || self->regs.bit.vf, cpu_6800_ea_relative(self));
break;
case 0x2e:
- cpu_6800_bra(self, !self->regs.bit.nf && !self->regs.bit.vf && !self->regs.bit.zf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, !self->regs.bit.nf && !self->regs.bit.vf && !self->regs.bit.zf, cpu_6800_ea_relative(self));
break;
case 0x2f:
- cpu_6800_bra(self, self->regs.bit.nf || self->regs.bit.vf || self->regs.bit.zf, cpu_6800_ea_direct(self));
+ cpu_6800_bra(self, self->regs.bit.nf || self->regs.bit.vf || self->regs.bit.zf, cpu_6800_ea_relative(self));
break;
case 0x30:
cpu_6800_st(self, self->regs.word.s, CPU_6800_EA_X);
cpu_6800_cp(self, self->regs.word.x, cpu_6800_fetch_word(self));
break;
case 0x8d:
- cpu_6800_bsr(self, cpu_6800_ea_direct(self));
+ cpu_6800_bsr(self, cpu_6800_ea_relative(self));
break;
case 0x8e:
cpu_6800_ld(self, CPU_6800_EA_S, cpu_6800_fetch_word(self));
cpu_6800_lda(self, CPU_6800_EA_A, cpu_6800_read_byte(self, cpu_6800_ea_direct(self)));
break;
case 0x97:
- cpu_6800_sta(self, CPU_6800_EA_A, cpu_6800_ea_direct(self));
+ cpu_6800_sta(self, self->regs.byte.a, cpu_6800_ea_direct(self));
break;
case 0x98:
cpu_6800_eor(self, CPU_6800_EA_A, cpu_6800_read_byte(self, cpu_6800_ea_direct(self)));
cpu_6800_lda(self, CPU_6800_EA_A, cpu_6800_read_byte(self, cpu_6800_ea_direct_indexed(self, self->regs.word.x)));
break;
case 0xa7:
- cpu_6800_sta(self, CPU_6800_EA_A, cpu_6800_ea_direct_indexed(self, self->regs.word.x));
+ cpu_6800_sta(self, self->regs.byte.a, cpu_6800_ea_direct_indexed(self, self->regs.word.x));
break;
case 0xa8:
cpu_6800_eor(self, CPU_6800_EA_A, cpu_6800_read_byte(self, cpu_6800_ea_direct_indexed(self, self->regs.word.x)));
cpu_6800_lda(self, CPU_6800_EA_A, cpu_6800_read_byte(self, cpu_6800_ea_extended(self)));
break;
case 0xb7:
- cpu_6800_sta(self, CPU_6800_EA_A, cpu_6800_ea_extended(self));
+ cpu_6800_sta(self, self->regs.byte.a, cpu_6800_ea_extended(self));
break;
case 0xb8:
cpu_6800_eor(self, CPU_6800_EA_A, cpu_6800_read_byte(self, cpu_6800_ea_extended(self)));
cpu_6800_lda(self, CPU_6800_EA_B, cpu_6800_read_byte(self, cpu_6800_ea_direct(self)));
break;
case 0xd7:
- cpu_6800_sta(self, CPU_6800_EA_B, cpu_6800_ea_direct(self));
+ cpu_6800_sta(self, self->regs.byte.b, cpu_6800_ea_direct(self));
break;
case 0xd8:
cpu_6800_eor(self, CPU_6800_EA_B, cpu_6800_read_byte(self, cpu_6800_ea_direct(self)));
cpu_6800_lda(self, CPU_6800_EA_B, cpu_6800_read_byte(self, cpu_6800_ea_direct_indexed(self, self->regs.word.x)));
break;
case 0xe7:
- cpu_6800_sta(self, CPU_6800_EA_B, cpu_6800_ea_direct_indexed(self, self->regs.word.x));
+ cpu_6800_sta(self, self->regs.byte.b, cpu_6800_ea_direct_indexed(self, self->regs.word.x));
break;
case 0xe8:
cpu_6800_eor(self, CPU_6800_EA_B, cpu_6800_read_byte(self, cpu_6800_ea_direct_indexed(self, self->regs.word.x)));
cpu_6800_lda(self, CPU_6800_EA_B, cpu_6800_read_byte(self, cpu_6800_ea_extended(self)));
break;
case 0xf7:
- cpu_6800_sta(self, CPU_6800_EA_B, cpu_6800_ea_extended(self));
+ cpu_6800_sta(self, self->regs.byte.b, cpu_6800_ea_extended(self));
break;
case 0xf8:
cpu_6800_eor(self, CPU_6800_EA_B, cpu_6800_read_byte(self, cpu_6800_ea_extended(self)));
+#include <stdio.h>
#ifndef _CPU_6800_H
#define _CPU_6800_H
int result = cpu_6800_read_byte(self, lvalue) & rvalue;
cpu_6800_write_byte(self, lvalue, result);
- self->regs.byte.a = result;
self->regs.bit.zf = result == 0;
self->regs.bit.nf = result >> 7;
}
++self->cycles;
cpu_6800_write_byte(self, lvalue, result >> 1);
- self->regs.bit.cf = result & 1;
- self->regs.bit.zf = (result & 0xfe) == 0;
self->regs.bit.nf = false;
+ self->regs.bit.zf = (result & 0xfe) == 0;
+ self->regs.bit.vf = (result ^ (result >> 8)) & 1;
+ self->regs.bit.cf = result & 1;
}
-
static ALWAYS_INLINE void cpu_6800_bit(struct cpu_6800 *self, int rvalue0, int rvalue1) {
int result = rvalue0 & rvalue1;
}
static ALWAYS_INLINE void cpu_6800_bsr(struct cpu_6800 *self, int lvalue) {
- cpu_6800_push_word(self, (self->regs.word.pc - 1) & 0xffff);
+ cpu_6800_push_word(self, self->regs.word.pc);
self->cycles += ((self->regs.word.pc & 0xff) + (lvalue & 0xff)) >> 8;
self->regs.word.pc += lvalue;
}
}
static ALWAYS_INLINE void cpu_6800_cmp(struct cpu_6800 *self, int rvalue0, int rvalue1) {
- rvalue1 ^= 0xff;
- int result = 1 + rvalue0 + rvalue1;
- self->regs.bit.cf = result >> 8;
- self->regs.bit.zf = (result & 0xff) == 0;
- self->regs.bit.nf = (result >> 7) & 1;
+ int result0 = (rvalue0 & 0x7f) - (rvalue1 & 0x7f);
+ int result1 = result0 + (rvalue0 & 0x80) - (rvalue1 & 0x80);
+
+ self->regs.bit.nf = (result1 >> 7) & 1;
+ self->regs.bit.zf = (result1 & 0xff) == 0;
+ self->regs.bit.vf = ((result0 >> 7) ^ (result1 >> 8)) & 1;
+ self->regs.bit.cf = (result1 >> 8) & 1;
}
static ALWAYS_INLINE void cpu_6800_com(struct cpu_6800 *self, int lvalue) {
}
static ALWAYS_INLINE void cpu_6800_cp(struct cpu_6800 *self, int rvalue0, int rvalue1) {
- rvalue1 ^= 0xffff;
- int result = 1 + rvalue0 + rvalue1;
- self->regs.bit.cf = result >> 16;
- self->regs.bit.zf = (result & 0xff) == 0;
- self->regs.bit.nf = (result >> 15) & 1;
+ int result0 = (rvalue0 & 0x7fff) - (rvalue1 & 0x7fff);
+ int result1 = result0 + (rvalue0 & 0x8000) - (rvalue1 & 0x8000);
+
+ self->regs.bit.nf = (result1 >> 15) & 1;
+ self->regs.bit.zf = (result1 & 0xffff) == 0;
+ self->regs.bit.vf = ((result0 >> 15) ^ (result1 >> 16)) & 1;
}
static ALWAYS_INLINE void cpu_6800_daa(struct cpu_6800 *self) {
int result = cpu_6800_read_byte(self, lvalue) ^ rvalue;
cpu_6800_write_byte(self, lvalue, result);
- self->regs.byte.a = result;
self->regs.bit.zf = result == 0;
self->regs.bit.nf = result >> 7;
}
}
static ALWAYS_INLINE void cpu_6800_jsr(struct cpu_6800 *self, int lvalue) {
- cpu_6800_push_word(self, (self->regs.word.pc - 1) & 0xffff);
+ cpu_6800_push_word(self, self->regs.word.pc);
self->regs.word.pc = lvalue;
}
static ALWAYS_INLINE void cpu_6800_ld(struct cpu_6800 *self, int lvalue, int rvalue) {
cpu_6800_write_word(self, lvalue, rvalue);
- self->regs.bit.zf = rvalue == 0;
+
self->regs.bit.nf = (rvalue >> 15) & 1;
+ self->regs.bit.zf = rvalue == 0;
+ self->regs.bit.vf = false;
}
static ALWAYS_INLINE void cpu_6800_lda(struct cpu_6800 *self, int lvalue, int rvalue) {
cpu_6800_write_byte(self, lvalue, rvalue);
- self->regs.bit.zf = rvalue == 0;
+
self->regs.bit.nf = (rvalue >> 7) & 1;
+ self->regs.bit.zf = rvalue == 0;
+ self->regs.bit.vf = false;
}
static ALWAYS_INLINE void cpu_6800_lsl(struct cpu_6800 *self, int lvalue) {
int result = cpu_6800_read_byte(self, lvalue) | rvalue;
cpu_6800_write_byte(self, lvalue, result);
- self->regs.byte.a = result;
self->regs.bit.zf = result == 0;
self->regs.bit.nf = result >> 7;
}
-static ALWAYS_INLINE void cpu_6800_plp(struct cpu_6800 *self) {
- self->regs.byte.p = cpu_6800_pop_byte(self) | 0xc0;
-}
+//static ALWAYS_INLINE void cpu_6800_plp(struct cpu_6800 *self) {
+// self->regs.byte.p = cpu_6800_pop_byte(self) | 0xc0;
+//}
static ALWAYS_INLINE void cpu_6800_psh(struct cpu_6800 *self, int rvalue) {
cpu_6800_push_byte(self, rvalue);
}
static ALWAYS_INLINE void cpu_6800_pul(struct cpu_6800 *self, int lvalue) {
- int result = cpu_6800_pop_byte(self);
- cpu_6800_write_byte(self, lvalue, result);
- self->regs.bit.zf = result == 0;
- self->regs.bit.nf = result >> 7;
+ cpu_6800_write_byte(self, lvalue, cpu_6800_pop_byte(self));
}
-static ALWAYS_INLINE void cpu_6800_rmb(struct cpu_6800 *self, int n, int lvalue) {
- int result = cpu_6800_read_byte(self, lvalue) & ~(1 << n);
- ++self->cycles;
- cpu_6800_write_byte(self, lvalue, result);
-}
+//static ALWAYS_INLINE void cpu_6800_rmb(struct cpu_6800 *self, int n, int lvalue) {
+// int result = cpu_6800_read_byte(self, lvalue) & ~(1 << n);
+// ++self->cycles;
+// cpu_6800_write_byte(self, lvalue, result);
+//}
static ALWAYS_INLINE void cpu_6800_rol(struct cpu_6800 *self, int lvalue) {
int result = self->regs.bit.cf | (cpu_6800_read_byte(self, lvalue) << 1);
}
static ALWAYS_INLINE void cpu_6800_rts(struct cpu_6800 *self) {
- self->regs.word.pc = (cpu_6800_pop_word(self) + 1) & 0xffff;
+ self->regs.word.pc = cpu_6800_pop_word(self);
}
static ALWAYS_INLINE void cpu_6800_sbc(struct cpu_6800 *self, int lvalue, int rvalue) {
self->regs.byte.p |= 1 << n;
}
-static ALWAYS_INLINE void cpu_6800_smb(struct cpu_6800 *self, int n, int lvalue) {
- int result = cpu_6800_read_byte(self, lvalue) | (1 << n);
- ++self->cycles;
- cpu_6800_write_byte(self, lvalue, result);
-}
+//static ALWAYS_INLINE void cpu_6800_smb(struct cpu_6800 *self, int n, int lvalue) {
+// int result = cpu_6800_read_byte(self, lvalue) | (1 << n);
+// ++self->cycles;
+// cpu_6800_write_byte(self, lvalue, result);
+//}
static ALWAYS_INLINE void cpu_6800_st(struct cpu_6800 *self, int rvalue, int lvalue) {
cpu_6800_write_word(self, lvalue, rvalue);
+
+ self->regs.bit.nf = (rvalue >> 15) & 1;
+ self->regs.bit.zf = rvalue == 0;
+ self->regs.bit.vf = false;
}
static ALWAYS_INLINE void cpu_6800_sta(struct cpu_6800 *self, int rvalue, int lvalue) {
cpu_6800_write_byte(self, lvalue, rvalue);
+
+ self->regs.bit.nf = (rvalue >> 7) & 1;
+ self->regs.bit.zf = rvalue == 0;
+ self->regs.bit.vf = false;
}
static ALWAYS_INLINE void cpu_6800_sub(struct cpu_6800 *self, int lvalue, int rvalue) {
int data = cpu_6800_read_byte(self, lvalue);
- rvalue ^= 0xff;
- int result0 = (data & 0x7f) + (rvalue & 0x7f);
- int result1 = result0 + (data & 0x80) + (rvalue & 0x80);
+ int result0 = (data & 0x7f) - (rvalue & 0x7f);
+ int result1 = result0 + (data & 0x80) - (rvalue & 0x80);
cpu_6800_write_byte(self, lvalue, result1 & 0xff);
- self->regs.bit.cf = result1 >> 8;
+ self->regs.bit.nf = (result1 >> 7) & 1;
self->regs.bit.zf = (result1 & 0xff) == 0;
self->regs.bit.vf = ((result0 >> 7) ^ (result1 >> 8)) & 1;
- self->regs.bit.nf = (result1 >> 7) & 1;
+ self->regs.bit.cf = (result1 >> 8) & 1;
}
-static ALWAYS_INLINE void cpu_6800_trb(struct cpu_6800 *self, int lvalue) {
- int result = cpu_6800_read_byte(self, lvalue);
- ++self->cycles;
- cpu_6800_write_byte(self, lvalue, result & ~self->regs.byte.a);
- result &= self->regs.byte.a;
- self->regs.bit.zf = result == 0;
+static ALWAYS_INLINE void cpu_6800_tap(struct cpu_6800 *self) {
+ self->regs.byte.p = self->regs.byte.a | 0xc0;
}
-static ALWAYS_INLINE void cpu_6800_tsb(struct cpu_6800 *self, int lvalue) {
- int result = cpu_6800_read_byte(self, lvalue);
- ++self->cycles;
- cpu_6800_write_byte(self, lvalue, result | self->regs.byte.a);
- result &= self->regs.byte.a;
- self->regs.bit.zf = result == 0;
+static ALWAYS_INLINE void cpu_6800_tpa(struct cpu_6800 *self) {
+ self->regs.byte.a = self->regs.byte.p;
}
+//static ALWAYS_INLINE void cpu_6800_trb(struct cpu_6800 *self, int lvalue) {
+// int result = cpu_6800_read_byte(self, lvalue);
+// ++self->cycles;
+// cpu_6800_write_byte(self, lvalue, result & ~self->regs.byte.a);
+// result &= self->regs.byte.a;
+// self->regs.bit.zf = result == 0;
+//}
+//
+//static ALWAYS_INLINE void cpu_6800_tsb(struct cpu_6800 *self, int lvalue) {
+// int result = cpu_6800_read_byte(self, lvalue);
+// ++self->cycles;
+// cpu_6800_write_byte(self, lvalue, result | self->regs.byte.a);
+// result &= self->regs.byte.a;
+// self->regs.bit.zf = result == 0;
+//}
+
static ALWAYS_INLINE void cpu_6800_tst(struct cpu_6800 *self, int rvalue) {
self->regs.bit.zf = rvalue == 0;
self->regs.bit.nf = rvalue >> 7;
acc_rvalue_opcodes = {
'cmp',
'psh',
+ 'sta',
'tst',
}
s/cpu_6800_bmi(self/cpu_6800_bns(self/
s/cpu_6800_bne(self/cpu_6800_bzc(self/
s/cpu_6800_beq(self/cpu_6800_bzs(self/
-s/cpu_6800_bra(self/cpu_6800_bra(self, true/
-s/cpu_6800_b\([czvn]\)c(self/cpu_6800_bra(self, !self->regs.bit.\1f/
-s/cpu_6800_b\([czvn]\)s(self/cpu_6800_bra(self, self->regs.bit.\1f/
-s/cpu_6800_bge(self/cpu_6800_bra(self, !self->regs.bit.nf \&\& !self->regs.bit.vf/
-s/cpu_6800_bgt(self/cpu_6800_bra(self, !self->regs.bit.nf \&\& !self->regs.bit.vf \&\& !self->regs.bit.zf/
-s/cpu_6800_bhi(self/cpu_6800_bra(self, !self->regs.bit.cf \&\& !self->regs.bit.zf/
-s/cpu_6800_ble(self/cpu_6800_bra(self, self->regs.bit.nf || self->regs.bit.vf || self->regs.bit.zf/
-s/cpu_6800_bls(self/cpu_6800_bra(self, self->regs.bit.cf || self->regs.bit.zf/
-s/cpu_6800_blt(self/cpu_6800_bra(self, self->regs.bit.nf || self->regs.bit.vf/
+s/cpu_6800_bra(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, true, cpu_6800_ea_relative(self)/
+s/cpu_6800_bsr(self, cpu_6800_ea_direct(self)/cpu_6800_bsr(self, cpu_6800_ea_relative(self)/
+s/cpu_6800_b\([czvn]\)c(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, !self->regs.bit.\1f, cpu_6800_ea_relative(self)/
+s/cpu_6800_b\([czvn]\)s(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, self->regs.bit.\1f, cpu_6800_ea_relative(self)/
+s/cpu_6800_bge(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, !self->regs.bit.nf \&\& !self->regs.bit.vf, cpu_6800_ea_relative(self)/
+s/cpu_6800_bgt(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, !self->regs.bit.nf \&\& !self->regs.bit.vf \&\& !self->regs.bit.zf, cpu_6800_ea_relative(self)/
+s/cpu_6800_bhi(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, !self->regs.bit.cf \&\& !self->regs.bit.zf, cpu_6800_ea_relative(self)/
+s/cpu_6800_ble(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, self->regs.bit.nf || self->regs.bit.vf || self->regs.bit.zf, cpu_6800_ea_relative(self)/
+s/cpu_6800_bls(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, self->regs.bit.cf || self->regs.bit.zf, cpu_6800_ea_relative(self)/
+s/cpu_6800_blt(self, cpu_6800_ea_direct(self)/cpu_6800_bra(self, self->regs.bit.nf || self->regs.bit.vf, cpu_6800_ea_relative(self)/
s/cpu_6800_st\([xs]\)(self/cpu_6800_st(self, self->regs.word.\1/
s/cpu_6800_ld\([xs]\)(self\(.*\)byte/cpu_6800_ld(self, CPU_6800_EA_\1\2word/
s/cpu_6800_ld\([xs]\)(self/cpu_6800_ld(self, CPU_6800_EA_\1/
s/cpu_6800_c\([ab]\)\([ab]\)(self/cpu_6800_cmp(self, CPU_6800_EA_\2, self->regs.byte.\1/
s/cpu_6800_s\([ab]\)\([ab]\)(self/cpu_6800_sub(self, CPU_6800_EA_\2, self->regs.byte.\1/
s/cpu_6800_t\([ab]\)\([ab]\)(self/cpu_6800_lda(self, CPU_6800_EA_\2, self->regs.byte.\1/
-s/cpu_6800_tap(self/cpu_6800_sta(self, self->regs.byte.a | 0xc0, CPU_6800_EA_P/
-s/cpu_6800_tpa(self/cpu_6800_sta(self, self->regs.byte.p, CPU_6800_EA_A/
s/cpu_6800_cl\([cidv]\)(self/cpu_6800_cl(self, CPU_6800_REG_P_BIT_\1/
s/cpu_6800_se\([cidv]\)(self/cpu_6800_se(self, CPU_6800_REG_P_BIT_\1/
s/cpu_6800_in\([xs]\)(self/cpu_6800_in(self, CPU_6800_EA_\1/
+#include <assert.h> // temp
#include <stdbool.h>
#include <stdint.h>
#include <stdio.h>
#include "cpu_6800.h"
#endif
-#define REG_TRACE 0
-#define MEM_TRACE 0
+#define REG_TRACE 1
+#define MEM_TRACE 1
#define MEM_SIZE 0x10000
uint8_t mem[MEM_SIZE];
}
void write_byte(void *context, int addr, int data) {
+ assert((data & ~0xff) == 0);
#if MEM_TRACE
fprintf(stderr, "addr=%04x wr=%02x\n", addr, data);
#endif
#if REG_TRACE
fprintf(
stderr,
- "pc=%04x a=%02x b=%02x x=%04x s=%04x ccr=%02x hf=%d if=%d nf=%d zf=%d vf=%d cf=%d\n",
+ "pc=%04x a=%02x b=%02x x=%04x s=%04x p=%02x hf=%d if=%d nf=%d zf=%d vf=%d cf=%d\n",
regs.pc,
regs.accd.a,
regs.accd.b,
#if REG_TRACE
fprintf(
stderr,
- "pc=%04x a=%02x b=%02x x=%04x s=%04x ccr=%02x hf=%d if=%d nf=%d zf=%d vf=%d cf=%d\n",
+ "pc=%04x a=%02x b=%02x x=%04x s=%04x p=%02x hf=%d if=%d nf=%d zf=%d vf=%d cf=%d\n",
cpu.regs.word.pc,
cpu.regs.byte.a,
cpu.regs.byte.b,
cpu.regs.word.x,
cpu.regs.word.s,
- cpu.regs.byte.ccr,
+ cpu.regs.byte.p,
cpu.regs.bit.hf,
cpu.regs.bit._if,
cpu.regs.bit.nf,
-Subproject commit 64cb8ed44c43dbefa00555677290340728057f40
+Subproject commit d05bafbe581ab92e42e2b0d68e5500c45f4159fc