bsnes/higan/processor/wdc65816/wdc65816.cpp

97 lines
1.4 KiB
C++

#include <processor/processor.hpp>
#include "wdc65816.hpp"
namespace Processor {
#define PC r.pc
#define A r.a
#define X r.x
#define Y r.y
#define Z r.z
#define S r.s
#define D r.d
#define B r.b
#define P r.p
#define CF r.p.c
#define ZF r.p.z
#define IF r.p.i
#define DF r.p.d
#define XF r.p.x
#define MF r.p.m
#define VF r.p.v
#define NF r.p.n
#define EF r.e
#define E if(r.e)
#define N if(!r.e)
#define L lastCycle();
#define lo(n) n.byte(0)
#define hi(n) n.byte(1)
#define db(n) n.byte(2)
#define aa(n) n.bits(0,15)
#define alu(...) (this->*op)(__VA_ARGS__)
#include "memory.cpp"
#include "algorithms.cpp"
#include "instructions-read.cpp"
#include "instructions-write.cpp"
#include "instructions-modify.cpp"
#include "instructions-pc.cpp"
#include "instructions-misc.cpp"
#include "instruction.cpp"
auto WDC65816::power() -> void {
PC = 0x000000;
A = 0x0000;
X = 0x0000;
Y = 0x0000;
S = 0x01ff;
D = 0x0000;
B = 0x00;
P = 0x34;
EF = 1;
r.mdr = 0x00;
r.wai = false;
r.stp = false;
r.vector = 0xfffc; //reset vector address
}
#undef PC
#undef A
#undef X
#undef Y
#undef Z
#undef S
#undef D
#undef B
#undef P
#undef CF
#undef ZF
#undef IF
#undef DF
#undef XF
#undef MF
#undef VF
#undef NF
#undef EF
#undef E
#undef N
#undef L
#undef lo
#undef hi
#undef db
#undef aa
#undef alu
#include "serialization.cpp"
#include "disassembler.cpp"
}